From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [RFC 01/29] drm/i915/gvt: Introduce the basic architecture of GVT-g Date: Thu, 04 Feb 2016 13:25:26 +0200 Message-ID: <1454585126.9041.22.camel@linux.intel.com> References: <1453976511-27322-1-git-send-email-zhi.a.wang@intel.com> <1453976511-27322-2-git-send-email-zhi.a.wang@intel.com> <1454075829.11299.48.camel@linux.intel.com> <56B197AB.5070406@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 012366E120 for ; Thu, 4 Feb 2016 03:25:33 -0800 (PST) In-Reply-To: <56B197AB.5070406@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhi Wang , intel-gfx@lists.freedesktop.org, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com List-Id: intel-gfx@lists.freedesktop.org SGksCgpPbiBrZSwgMjAxNi0wMi0wMyBhdCAxNDowMSArMDgwMCwgWmhpIFdhbmcgd3JvdGU6Cj4g SGkgSm9vbmFzOgo+IMKgwqDCoMKgwqBUaGFua3MgeW91IHZlcnkgbXVjaCEgV2UncmUgdmVyeSBl eGNpdGVkIGZvciByZWNlaXZpbmcgeW91ciBhZHZpY2XCoAo+IGFuZCBjb250aW51ZSB0byBiZSBv cGVuIHRvIGFueSBjb21tZW50cy4gOikKPiAKPiBJJ20gc3VwcG9zZWQgdGhhdCB3ZSBzaG91bGQg bWFrZSB0aGUgYWdyZWVtZW50cyBvbiBpOTE1IGhvc3QgY2hhbmdlIGF0wqAKPiB0aGUgdmVyeSBi ZWdpbm5pbmcsIGFzIEknbSBjb25jZXJuZWQgZHVyaW5nIHRoZSBkaXNjdXNzaW9uIG9mIGk5MTUg aG9zdMKgCj4gY2hhbmdlLCB5b3Uga25vdywgbWF5YmUgc29tZSBjb2RlIG9mIEdWVC1nIG5lZWRz IHRvIGJlIHJlZmluZWQgb3LCoAo+IHJlLWRlc2lnbmVkLiBTbyB3ZSBwdXQgdGhlIGk5MTUgaG9z dCBjaGFuZ2VzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlwqAKPiBwYXRjaCBzZXQgZm9yIHRoZSBj b252ZW5pZW5jZSBvZiBkaXNjdXNzaW9uLgo+IAo+IEkgc3VtbWFyaXplIHlvdXIgY29tbWVudHMg YXMgYmVsb3csIHZlcnkgYXBwbGljYXRlLiA6KQo+IAo+IC0gUmVwbGFjZSBib29sZWFuIHJldHVy biB2YWx1ZSB3aXRoIGludCBhcyBtdWNoIGFzIHBvc3NpYmxlLgo+IC0gUmVwbGFjZSBjdXN0b21p emVkIGRlYnVnIEFTU0VSVCgpIGZ1bmN0aW9uICYgbWFjcm9zIHdpdGggRFJNX0RFQlVHXyoKPiAt IERvY3VtZW50IGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucyBsaWtlIGk5MTUKPiAtIEZpeCBhbGwg d2hpdGVzcGFjZSB2aWEgc2NyaXB0cy9jbGVhbnBhdGNoLnBsCj4gLSBDb21taXQgZnVuY3Rpb24g c3RydWN0dXJlIHJlZmluZW1lbnQuCj4gLSBDaGFuZ2UgdGhlIHJlZ2lzdGVyIGFjY2VzcyBiZWhh dmlvciBqdXN0IGxpa2Ugd2hhdCBpOTE1IGRvZXMuCj4gCj4gRm9yIG90aGVyIGNvbW1lbnRzLCBz ZWUgbXkgY29tbWVudHMgYmVsb3cuIDopCj4gCj4gT24gMDEvMjkvMTYgMjE6NTcsIEpvb25hcyBM YWh0aW5lbiB3cm90ZToKPiA+IEhpLAo+ID4gCj4gPiBUTDtEUiBPdmVyYWxsLCB3ZSBoYXZlIHNh bWUgcHJvYmxlbSBhcyB3aXRoIHRoZSBzY2hlZHVsZXIgc2VyaWVzLCB0aGVyZQo+ID4gaXMgdG9v IG11Y2ggcGxhY2Vob2xkZXIgc3R1ZmYgZm9yIGVhc3kgcmV2aWV3LiBKdXN0IHNxdWFzaCBlbm91 Z2ggY29kZQo+ID4gaW50byBvbmUgY29tbWl0IHNvIGl0IGFjdHVhbGx5IGRvZXMgc29tZXRoaW5n IGxvZ2ljYWwgdGhhdCBjYW4gYmUKPiA+IHJldmlld2VkIGFuZCB0aGVuIGV4dGVuZCBpdCBsYXRl ci4gVGhlbiBpdCBjYW4gYmUgcmV2aWV3ZWQgYW5kIHB1c2hlZC4KPiA+IEp1c3Qgc3BsaXR0aW5n IHRoZSBjb2RlIGRvd24gdG8gYWNoaWV2ZSBzbWFsbGVyIHBhdGNoZXMgaXMgbm90IHRoZQo+ID4g cmlnaHQgdGhpbmcgdG8gZG8uCj4gPiAKPiA+IENvbW1lbnRzIG9uIHRoZSBvdmVyYWxsIGNvZGU6 IFlvdSBuZWVkIHRvIGRvY3VtZW50IGFsbCBoZWFkZXIgZmlsZQo+ID4gZnVuY3Rpb25zIChpbiB0 aGUgc291cmNlIGZpbGVzKSwgYW5kIGl0IGlzIGdvb2QgdG8gZG9jdW1lbnQgdGhlIHN0YXRpYwo+ ID4gZnVuY3Rpb25zIHdpdGhpbiBhIGZpbGUgdG9vLCB0byBtYWtlIGZ1dHVyZSBtYWludGVuYW5j ZSBlYXNpZXIuCj4gPiAKPiA+IEl0IGlzIG5vdCBhYm91dCBzcGxpdHRpbmcgdGhlIGNvZGUgZG93 biB0byBzbWFsbCBjaHVua3MsIGJ1dCBzcGxpdHRpbmcKPiA+IGl0IGRvd24gdG8gc21hbGwgKmxv Z2ljYWwqIGNodW5rcy4gSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbW1pdAo+ID4gZG96ZW5z IG9mIGVtcHR5IGJvZGllZCBmdW5jdGlvbnMgZm9yIHJldmlldywgYW5kIHRoZW4gbGF0ZXIgYWRk IHRoZWlyCj4gPiBjb2RlLgo+ID4gCj4gPiBJZiB5b3UgYWRkIGZ1bmN0aW9ucywgb25seSBhZGQg dGhlbSBhdCBhIHBhdGNoIHRoYXQgdGFrZXMgdGhlbSBpbnRvIHVzZQo+ID4gdG9vLCB1bmxlc3Mg d2UncmUgdGFsa2luZyBhYm91dCBnZW5lcmFsIHB1cnBvc2Ugc2hhcmVkIGNvZGUuIEFuZCBhbHNv Cj4gPiByZW1lbWJlciB0byBhZGQgdGhlIGZ1bmN0aW9uIGJvZHkgYW5kIGRvY3VtZW50YXRpb24g aGVhZGVyLiBJZiB5b3UKPiA+IHNpbXBseSBhZGQgYSAicmV0dXJuIDA7IiBvciBzaW1pbGFyIGZ1 bmN0aW9uIGJvZHksIGRvIGFkZCBhIGNvbW1lbnQgdG8KPiA+IHdoeSB0aGUgZnVuY3Rpb24gZG9l cyBub3QgZXhpc3QgYW5kIHdoZW4gaXQgd2lsbC4KPiA+IAo+ID4gVGhlbiwgdGhlcmUgaXMgYSB0 cmVuZCBvZiBoYXZpbmcgYSBib29sZWFuIHJldHVybiB2YWx1ZXMgaW4gdGhlIGNvZGUuCj4gPiBX aGVuIHBvc3NpYmxlLCBpdCBzaG91bGQgcmF0aGVyIGJlIGludCBhbmQgdGhlIGNhdXNlIGZvciBm YWlsdXJlIHNob3VsZAo+ID4gYmUgcHJvcGFnYXRlZCBmcm9tIHRoZSBsYXN0IGxldmVsIGFsbCB0 aGUgd2F5IHRvIHVwICgtRU5PTUVOIGV0Yy4pLgo+ID4gVGhpcyB3YXkgZGVidWdnaW5nIGJlY29t ZXMgZWFzaWVyIGFuZCBpZiBuZXcgZXJyb3IgY29uZGl0aW9ucyBhcHBlYXIsCj4gPiB0aGVyZSBp cyBsZXNzIG9mIGEgbWFpbnRlbmFuY2UgYnVyZGVuIHRvIGFkZCB0aGUgcHJvcGFnYXRpb24gbGF0 ZXIuCj4gPiAKPiA+IEZpbmFsbHksIG1ha2Ugc3VyZSB0byBsb29rIGF0IHRoZSBleGlzdGluZyBk cml2ZXIgcGFydHMgYW5kCj4gPiAJaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRh dGlvbi9Db2RpbmdTdHlsZQo+ID4gZm9yIHByb3BlciBjb2Rpbmcgc3R5bGUuIFRoZXJlIGFyZSBs b3RzIG9mIHdoaXRlc3BhY2UgZml4ZXMgbmVlZGVkIGluCj4gPiB0aGlzIHNlcmllcywgbGlrZSBh cnJheSBpbml0aWFsaXphdGlvbnMuCj4gPiAKPiA+IEkgaG9wZSB0byBzZWUgdGhpcyBmaXJzdCBw YXRjaCByZXJvbGxlZCBzbyB0aGF0IHlvdSBzcXVhc2ggc29tZSBvZiB0aGUKPiA+IGxhdGVyIGNv bW1pdHMgaW50byBpdCBzbyB0aGF0IGFsbCBmdW5jdGlvbnMgaGF2ZSBhIGJvZHkgYW5kIHlvdSBh ZGQKPiA+IGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgc28gSSBjYW4gYm90aCBzZWUg d2hhdCBpdCBzaG91bGQgZG8gYW5kCj4gPiB3aGF0IGl0IGFjdHVhbGx5IGRvZXMuIE9ubHkgcmVy b2xsIHRoZSBmaXJzdCBwYXRjaCwgdG8ga2VlcCB0aGUKPiA+IGl0ZXJhdGl2ZSBzdGVwIHNtYWxs ZXIuIExldHMgb25seSB0aGVuIGNvbnRpbnVlIHdpdGggdGhlIHJlc3Qgb2YgdGhlCj4gPiBzZXJp ZXMgb25jZSB3ZSd2ZSByZWFjaGVkIGEgY29uc2Vuc3VzIG9uIHRoZSBmb3JtYXR0aW5nIGFuZCBz dHlsZQo+ID4gYmFzaWNzLgo+ID4gCj4gPiBTZWUgbW9yZSBjb21tZW50cyBiZWxvdy4KPiA+IAo+ ID4gT24gdG8sIDIwMTYtMDEtMjggYXQgMTg6MjEgKzA4MDAsIFpoaSBXYW5nIHdyb3RlOgo+ID4g PiBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIHZlcnkgYmFzaWMgZnJhbWV3b3JrIG9mIEdWVC1n IGRldmljZSBtb2RlbCwKPiA+ID4gaW5jbHVkZXMgYmFzaWMgcHJvdG90eXBlcywgZGVmaW5pdGlv bnMsIGluaXRpYWxpemF0aW9uLgo+ID4gPiAtLS0KPiA+ID4gwqAgYXJjaC94ODYvaW5jbHVkZS9h c20veGVuL2ludGVyZmFjZS5owqDCoHzCoMKgwqAzICsKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxNiArKwo+ID4gPiDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAyICsKPiA+ ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlwqDCoMKgwqDCoHzCoMKgwqA1 ICsKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmjCoMKgwqDCoMKgwqB8 wqDCoDcyICsrKysrKysKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29k ZXIuYyB8wqDCoDM0ICsrKysKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2Rl Y29kZXIuaCB8IDExMCArKysrKysrKysrCj4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9ndnQuY8KgwqDCoMKgwqDCoMKgwqB8IDM2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaMKgwqDCoMKgwqDC oMKgwqB8IDEzMCArKysrKysrKysrKysKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2h5cGVyY2FsbC5owqDCoHzCoMKgMzAgKysrCj4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9tcHQuaMKgwqDCoMKgwqDCoMKgwqB8wqDCoDk3ICsrKysrKysrKwo+ID4gPiDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmPCoMKgwqDCoMKgfMKgwqAyOSArKysKPiA+ID4g wqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5owqDCoMKgwqDCoHzCoMKgMzQgKysr Kwo+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVnLmjCoMKgwqDCoMKgwqDCoMKg fMKgwqAzNCArKysrCj4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmPCoMKg wqDCoMKgwqDCoHzCoMKgMTkgKysKPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaMKgwqDCoMKgwqDCoMKgfMKgwqDCoDYgKwo+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZncHUuaMKgwqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4gwqAgaW5jbHVkZS94ZW4v aW50ZXJmYWNlL3hlbi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAxICsKPiA+ID4gwqAg MTggZmlsZXMgY2hhbmdlZCwgOTkxIGluc2VydGlvbnMoKykKPiA+ID4gwqAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9NYWtlZmlsZQo+ID4gPiDCoCBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPiA+ID4gwqAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNvZGVyLmMKPiA+ ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9mYl9kZWNv ZGVyLmgKPiA+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9ndnQuYwo+ID4gPiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2d2dC5oCj4gPiA+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvaHlwZXJjYWxsLmgKPiA+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9tcHQuaAo+ID4gPiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Z0L3BhcmFtcy5jCj4gPiA+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmgKPiA+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9yZWcuaAo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBh L2FyY2gveDg2L2luY2x1ZGUvYXNtL3hlbi9pbnRlcmZhY2UuaCBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL3hlbi9pbnRlcmZhY2UuaAo+ID4gPiBpbmRleCA2MmNhMDNlLi42ZmY0OTg2IDEwMDY0NAo+ ID4gPiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ZW4vaW50ZXJmYWNlLmgKPiA+ID4gKysr IGIvYXJjaC94ODYvaW5jbHVkZS9hc20veGVuL2ludGVyZmFjZS5oCj4gPiA+IEBAIC03Myw2ICs3 Myw5IEBACj4gPiA+IMKgICNlbmRpZgo+ID4gPiAKPiA+ID4gwqAgI2lmbmRlZiBfX0FTU0VNQkxZ X18KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUKPiA+ID4gKwo+ID4gCj4gPiBJIGRvbid0IGZvbGxv dyB3aHkgdGhpcyB3b3VsZCBuZWVkIHRvIGJlIGFkZGVkIGlmIHRoZSBmaWxlIGlzIG5vdAo+ID4g bW9kaWZpZWQgb3RoZXJ3aXNlLiBFYWNoIGhlYWRlciBzaG91bGQgb25seSBpbmNsdWRlIHdoYXQg dGhleSB1c2UuCj4gPiAKPiA+IElmIHRoaXMgaXMgYW4gZXhpc3RpbmcgYnVnICh0aGF0IHhlbi9p bnRlcmZhY2UuaCBjYW4gbm90IGJlIGluY2x1ZGVkCj4gPiB3aXRob3V0IGluY2x1ZGluZyBsaW51 eC90eXBlcy5oKSwgaXQgc2hvdWxkIGJlIHNwbGl0IHRvIGEgc2VwYXJhdGUKPiA+IHBhdGNoIGFu ZCBzZW50IHRvIFhlbiB0ZWFtLiBTYW1lIGZvciBpbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVuLmgu Cj4gPiAKPiA+ID4gwqAgLyogRXhwbGljaXRseSBzaXplIGludGVnZXJzIHRoYXQgcmVwcmVzZW50 IHBmbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UKPiA+ID4gwqDCoMKgKiB3aXRoIFhlbiBzbyB0 aGF0IG9uIEFSTSB3ZSBjYW4gaGF2ZSBvbmUgQUJJIHRoYXQgd29ya3MgZm9yIDMyIGFuZCA2NAo+ ID4gPiDCoMKgwqAqIGJpdCBndWVzdHMuICovCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+ID4gPiBp bmRleCAwNTFlYWIzLi44OWZmNzIzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9LY29uZmlnCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPiA+ ID4gQEAgLTQ3LDMgKzQ3LDE5IEBAIGNvbmZpZyBEUk1fSTkxNV9QUkVMSU1JTkFSWV9IV19TVVBQ T1JUCj4gPiA+IMKgwqAJwqDCoG9wdGlvbiBjaGFuZ2VzIHRoZSBkZWZhdWx0IGZvciB0aGF0IG1v ZHVsZSBvcHRpb24uCj4gPiA+IAo+ID4gPiDCoMKgCcKgwqBJZiBpbiBkb3VidCwgc2F5ICJOIi4K PiA+ID4gKwo+ID4gPiArY29uZmlnIEk5MTVfR1ZUCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgdHJp c3RhdGUgIkdWVC1nIGhvc3QgZHJpdmVyIgo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoGRlcGVuZHMg b24gRFJNX0k5MTUKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqBzZWxlY3QgSVJRX1dPUksKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqBkZWZhdWx0IHkKPiA+IAo+ID4gRGVmYXVsdGluZyB0byAibiIgd291 bGQgbWFrZSBzZW5zZSBpbml0aWFsbHkuCj4gPiAKPiBbWmhpXSBTdXJlLCB3aWxsIGRvLgo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoGhlbHAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgRW5hYmxp bmcgR1ZULWcgbWVkaWF0ZWQgZ3JhcGhpY3MgcGFzc3Rocm91Z2ggdGVjaG5pcXVlIGZvciBJbnRl bCBpOTE1Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoGJhc2VkIGludGVncmF0ZWQgZ3JhcGhp Y3MgY2FyZC4gV2l0aCBHVlQtZywgaXQncyBwb3NzaWJsZSB0byBoYXZlIG9uZQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqBpbnRlZ3JhdGVkIGk5MTUgZGV2aWNlIHNoYXJlZCBieSBtdWx0aXBs ZSBWTXMuIFBlcmZvcm1hbmNlIGNyaXRpY2FsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoG9w dGVyYXRpb25zIHN1Y2ggYXMgYXBwZXJ0dXJlIGFjY2Vzc2VzIGFuZCByaW5nIGJ1ZmZlciBvcGVy YXRpb25zCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoGFyZSBwYXNzLXRocm91Z2hlZCB0byBW TSwgd2l0aCBhIG1pbmltYWwgc2V0IG9mIGNvbmZsaWN0aW5nIHJlc291cmNlcwo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAoZS5nLiBkaXNwbGF5IHNldHRpbmdzKSBtZWRpYXRlZCBieSB2R1Qg ZHJpdmVyLiBUaGUgYmVuZWZpdCBvZiB2R1QKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgaXMg b24gYm90aCB0aGUgcGVyZm9ybWFuY2UsIGdpdmVuIHRoYXQgZWFjaCBWTSBjb3VsZCBkaXJlY3Rs eSBvcGVyYXRlCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoGl0cyBhcGVydHVyZSBzcGFjZSBh bmQgc3VibWl0IGNvbW1hbmRzIGxpa2UgcnVubmluZyBvbiBuYXRpdmUsIGFuZAo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqB0aGUgZmVhdHVyZSBjb21wbGV0ZW5lc3MsIGdpdmVuIHRoYXQgYSB0 cnVlIEdFTiBoYXJkd2FyZSBpcyBleHBvc2VkLgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4g PiBpbmRleCAwODUxZGUwNy4uZDRkZjQxMCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKPiA+ID4gQEAgLTkxLDYgKzkxLDggQEAgaTkxNS15ICs9IGR2b19jaDcwMTcubyBcCj4gPiA+ IMKgwqAJwqDCoGludGVsX3Nkdm8ubyBcCj4gPiA+IMKgwqAJwqDCoGludGVsX3R2Lm8KPiA+ID4g Cj4gPiA+ICtvYmotJChDT05GSUdfSTkxNV9HVlQpwqDCoCs9IGd2dC8KPiA+ID4gKwo+ID4gPiDC oCAjIHZpcnR1YWwgZ3B1IGNvZGUKPiA+ID4gwqAgaTkxNS15ICs9IGk5MTVfdmdwdS5vCj4gPiA+ IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLjY5MzViNzgKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUKPiA+ID4gQEAgLTAsMCAr MSw1IEBACj4gPiA+ICtHVlRfU09VUkNFIDo9IGd2dC5vIHBhcmFtcy5vIGZiX2RlY29kZXIubwo+ ID4gPiArCj4gPiA+ICtjY2ZsYWdzLXkJCQkrPSAtSSQoc3JjKSAtSSQoc3JjKS8uLiAtV2FsbCAt V2Vycm9yIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCj4gPiA+ICtpOTE1X2d2dC15CQkJOj0gJChHVlRf U09VUkNFKQo+ID4gPiArb2JqLSQoQ09ORklHX0k5MTVfR1ZUKQkJKz0gaTkxNV9ndnQubwo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZGVidWcuaAo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g PiBpbmRleCAwMDAwMDAwLi4xOGUxNDY3Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPiA+ID4gQEAgLTAsMCArMSw3MiBAQAo+ ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u Cj4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gPiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiA+ ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULsKg wqBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ID4gKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HIEZST00sCj4gPiA+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ID4g PiArICogU09GVFdBUkUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2lmbmRlZiBfX0dWVF9E RUJVR19IX18KPiA+ID4gKyNkZWZpbmUgX19HVlRfREVCVUdfSF9fCj4gPiA+ICsKPiA+ID4gKyNk ZWZpbmUgQVNTRVJUKHgpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBcCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZG8ge8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCEoeCkpIHvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBcCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBwcmludGsoIkFzc2VydCBhdCAlcyBsaW5lICVkXG4iLMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fRklMRV9fLCBfX0xJTkVf Xyk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoH0gd2hpbGUg KDApOwo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIEFTU0VSVF9OVU0oeCwgeSnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgZG8ge8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCEoeCkpIHvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcmludGsoIkFzc2VydCBhdCAlcyBsaW5l ICVkIHBhcmEgMHglbGx4XG4iLMKgwqDCoMKgXAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fRklMRV9fLCBfX0xJ TkVfXywgKHU2NCl5KTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoH3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqB9IHdoaWxlICgwKTsK PiA+ID4gKwo+ID4gCj4gPiBUaGVyZSBhbHJlYWR5IGlzIFdBUk5fT04gKGFuZCBpOTE1X2Rydi5o IG1vZGlmaWVzIGl0IGEgbGl0dGxlKS4gRG8gbm90Cj4gPiBpbnRyb2R1Y2UgY3VzdG9tIGZ1bmN0 aW9ucyBsaWtlIHRoaXMsIGlmIHRoZSBleGlzdGluZyBvbmVzIG5lZWQKPiA+IGltcHJvdmVtZW50 LCBpbXByb3ZlIHRoZW0uCj4gPiAKPiBbWmhpXSBPSy4gV2lsbCBkbyBhcyB3aGF0IGk5MTUgZG9l cwo+ID4gPiArI2RlZmluZSBndnRfaW5mbyhmbXQsIGFyZ3MuLi4pIFwKPiA+ID4gKwlwcmludGso S0VSTl9JTkZPIltHVlQtZ10gImZtdCJcbiIsICMjYXJncykKPiA+ID4gKwo+ID4gPiArI2RlZmlu ZSBndnRfZXJyKGZtdCwgYXJncy4uLikgXAo+ID4gPiArCXByaW50ayhLRVJOX0VSUiIlcygpIC0g JWQ6ICJmbXQiXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sICMjYXJncykKPiA+ID4gKwo+ID4gPiAr I2RlZmluZSBndnRfd2FybihmbXQsIGFyZ3MuLi4pIFwKPiA+ID4gKwlwcmludGsoS0VSTl9XQVJO SU5HIiVzKCkgLSAlZDogImZtdCJcbiIsIF9fZnVuY19fLCBfX0xJTkVfXywgIyNhcmdzKQo+ID4g PiArCj4gPiA+ICsjZGVmaW5lIGd2dF9kYmcobGV2ZWwsIGZtdCwgYXJncy4uLikgZG8geyBcCj4g PiA+ICsJCWlmIChndnQuZGVidWcgJiBsZXZlbCkgXAo+ID4gPiArCQkJcHJpbnRrKEtFUk5fREVC VUciJXMoKSAtICVkOiAiZm10IlxuIiwgX19mdW5jX18sIF9fTElORV9fLCAjI2FyZ3MpOyBcCj4g PiA+ICsJfXdoaWxlKDApCj4gPiA+ICsKPiA+ID4gK2VudW0gewo+ID4gPiArCUdWVF9EQkdfQ09S RSA9ICgxIDw8IDApLAo+ID4gPiArCUdWVF9EQkdfTU0gPSAoMSA8PCAxKSwKPiA+ID4gKwlHVlRf REJHX0lSUSA9ICgxIDw8IDIpLAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBndnRf ZGJnX2NvcmUoZm10LCBhcmdzLi4uKSBcCj4gPiA+ICsJZ3Z0X2RiZyhHVlRfREJHX0NPUkUsIGZt dCwgIyNhcmdzKQo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIGd2dF9kYmdfbW0oZm10LCBhcmdzLi4u KSBcCj4gPiA+ICsJZ3Z0X2RiZyhHVlRfREJHX01NLCBmbXQsICMjYXJncykKPiA+ID4gKwo+ID4g PiArI2RlZmluZSBndnRfZGJnX2lycShmbXQsIGFyZ3MuLi4pIFwKPiA+ID4gKwlndnRfZGJnKEdW VF9EQkdfSVJRLCBmbXQsICMjYXJncykKPiA+ID4gKwo+ID4gPiArI2VuZGlmCj4gPiAKPiA+IFRo aXMgc2hvdWxkIGJlIGludGVncmF0ZWQgYmV0dGVyIHRvIERSTSBkZWJ1Z2dpbmcgb3B0aW9ucywg Y3VzdG9tCj4gPiBkZWJ1Z2dpbmcgY29kZSBvbmx5IGZvciBpOTE1IHdhcyByZWplY3RlZCBhIHdo aWxlIGFnby4KPiA+IAo+IFtaSEldIFRoYW5rcyBmb3Igc2hhcmluZyB0aGUgaGlzdG9yeS4gOikg V2lsbCBjaGFuZ2UgdGhhdC4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9mYl9kZWNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5j Cj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLmEyMTk4MTkK PiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv ZmJfZGVjb2Rlci5jCj4gPiA+IEBAIC0wLDAgKzEsMzQgQEAKPiA+ID4gKy8qCj4gPiA+ICsgKiBD b3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgo+ID4gPiArICoKPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCj4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPiA+ ICsgKgo+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gPiArICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQo+ID4gPiArICogU29mdHdhcmUuCj4gPiA+ICsgKgo+ID4gPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC7CoMKgSU4gTk8gRVZFTlQgU0hBTEwK PiA+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N LAo+ID4gPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPiA+ID4gKyAqIFNPRlRXQVJFLgo+ID4g PiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICJndnQuaCIKPiA+ID4gKwo+ID4gPiAraW50 IGd2dF9kZWNvZGVfZmJfZm9ybWF0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2LCBpbnQgdm1pZCwg c3RydWN0IGd2dF9mYl9mb3JtYXQgKmZiKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICtpbnQgZ3Z0X2ZiX25vdGlmaWVyX2NhbGxfY2hhaW4odW5zaWdu ZWQgbG9uZyB2YWwsIHZvaWQgKmRhdGEpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ICt9Cj4gPiAKPiA+IEtlcm5lbGRvYyBtaXNzaW5nIGZvciB0aGVzZSBmdW5jdGlvbnMuIEl0IGlz IGFsbCB0aGUgc2FtZSB0byBzcXVhc2gKPiA+IGxhdGVyIHBhdGNoZXMgdG8gaW50cm9kdWNlIHRo ZSBjb2RlIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbHJlYWR5LAo+ID4gcmV2aWV3aW5nIHV0aWxpdHkg ZnVuY3Rpb25zIHdpdGggbm8ga2VybmVsZG9jIGFuZCBubyBib2R5IG1ha2VzIGl0Cj4gPiBzb21l d2hhdCBkaWZmaWN1bHQgdG8gc2VlIHRoZSBiaWcgcGljdHVyZS4KPiA+IAo+IAo+IFtaaGldIE9u ZSBxdWVzdGlvbi4gSSBzYXcgaTkxNSBwdXQgc29tZSBmdW5jdGlvbiBpbnN0cnVjdGlvbiBpbiAq LmMuIElzwqAKPiBpdCBhbHNvIE9LIGZvciBrZXJuZWwgZG9jIGdlbmVyYXRpbmcgdGhlIHByb3Bl ciBkb2MgZmlsZXM/CgpZZXMsIChhZ2FpbiByZWZlcnJpbmcgdG8gaGlzdG9yeSkgdGhlcmUgd2Fz IGEgc3VnZ2VzdGlvbiB0byBtb3ZlIGFsbAp0aGUgZG9jdW1lbnRhdGlvbiB0byBoZWFkZXIgZmls ZXMgYW5kIGl0IHdhcyBkZWNpZGVkIG9uIHRoYXQgdGhlCmRvY3VtZW50YXRpb24gc2hvdWxkIFJB VEhFUiBiZSBpbiB0aGUgaW1wbGVtZW50YXRpb24gdGhhbiBoZWFkZXIgZmlsZXMuClRoZW4gaXQn cyBjbG9zZXIgdG8gdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gb24gaXMgY2hhbmdpbmcgdGhlIGZ1 bmN0aW9uCmFuZCBvbmUgaGFzIGEgaGlnaGVyIGNoYW5jZSBvZiB1cGRhdGluZyBpdCwgcmF0aGVy IHRoYW4gc3dpdGNoaW5nCmJldHdlZW4gaGVhZGVyIGFuZCBpbXBsZW1lbnRhdGlvbi4KCj4gCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZmJfZGVjb2Rlci5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaAo+ID4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwLi4yYzI5ZWQ0Cj4gPiA+IC0tLSAvZGV2L251bGwK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2ZiX2RlY29kZXIuaAo+ID4gPiBA QCAtMCwwICsxLDExMCBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodChjKSAyMDExLTIw MTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKgo+ID4g PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiA+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ID4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQo+ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0Cj4gPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2Fy ZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULsKgwqBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gPiA+ICsgKiBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTIElOIFRIRQo+ID4gPiArICogU09GVFdBUkUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4g PiArI2lmbmRlZiBfR1ZUX0ZCX0RFQ09ERVJfSF8KPiA+ID4gKyNkZWZpbmUgX0dWVF9GQl9ERUNP REVSX0hfCj4gPiA+ICsKPiA+ID4gK3R5cGVkZWYgZW51bSB7Cj4gPiA+ICsJRkJfTU9ERV9TRVRf U1RBUlQgPSAxLAo+ID4gPiArCUZCX01PREVfU0VUX0VORCwKPiA+ID4gKwlGQl9ESVNQTEFZX0ZM SVAsCj4gPiA+ICt9Z3Z0X2ZiX2V2ZW50X3Q7Cj4gPiA+ICsKPiA+ID4gK3R5cGVkZWYgZW51bSB7 Cj4gPiA+ICsJRERJX1BPUlRfTk9ORQk9IDAsCj4gPiA+ICsJRERJX1BPUlRfQgk9IDEsCj4gPiA+ ICsJRERJX1BPUlRfQwk9IDIsCj4gPiA+ICsJRERJX1BPUlRfRAk9IDMsCj4gPiA+ICsJRERJX1BP UlRfRQk9IDQKPiA+ID4gK30gZGRpX3BvcnRfdDsKPiA+ID4gKwo+ID4gPiArc3RydWN0IHBndF9k ZXZpY2U7Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBndnRfZmJfbm90aWZ5X21zZyB7Cj4gPiA+ICsJ dW5zaWduZWQgdm1faWQ7Cj4gPiA+ICsJdW5zaWduZWQgcGlwZV9pZDsgLyogaWQgc3RhcnRpbmcg ZnJvbSAwICovCj4gPiA+ICsJdW5zaWduZWQgcGxhbmVfaWQ7IC8qIHByaW1hcnksIGN1cnNvciwg b3Igc3ByaXRlICovCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsvKiBjb2xvciBzcGFjZSBjb252 ZXJzaW9uIGFuZCBnYW1tYSBjb3JyZWN0aW9uIGFyZSBub3QgaW5jbHVkZWQgKi8KPiA+ID4gK3N0 cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQgewo+ID4gPiArCXU4CWVuYWJsZWQ7CS8qIHBs YW5lIGlzIGVuYWJsZWQgKi8KPiA+ID4gKwl1OAl0aWxlZDsJCS8qIFgtdGlsZWQgKi8KPiA+ID4g Kwl1OAlicHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLwo+ID4gPiArCXUzMglod19mb3JtYXQ7CS8q IGZvcm1hdCBmaWVsZCBpbiB0aGUgUFJJX0NUTCByZWdpc3RlciAqLwo+ID4gPiArCXUzMglkcm1f Zm9ybWF0OwkvKiBmb3JtYXQgaW4gRFJNIGRlZmluaXRpb24gKi8KPiA+ID4gKwl1MzIJYmFzZTsJ CS8qIGZyYW1lYnVmZmVyIGJhc2UgaW4gZ3JhcGhpY3MgbWVtb3J5ICovCj4gPiA+ICsJdTMyCXhf b2Zmc2V0OwkvKiBpbiBwaXhlbHMgKi8KPiA+ID4gKwl1MzIJeV9vZmZzZXQ7CS8qIGluIGxpbmVz ICovCj4gPiA+ICsJdTMyCXdpZHRoOwkJLyogaW4gcGl4ZWxzICovCj4gPiA+ICsJdTMyCWhlaWdo dDsJCS8qIGluIGxpbmVzICovCj4gPiA+ICsJdTMyCXN0cmlkZTsJCS8qIGluIGJ5dGVzICovCj4g PiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgZ3Z0X3Nwcml0ZV9wbGFuZV9mb3JtYXQgewo+ ID4gPiArCXU4CWVuYWJsZWQ7CS8qIHBsYW5lIGlzIGVuYWJsZWQgKi8KPiA+ID4gKwl1OAl0aWxl ZDsJCS8qIFgtdGlsZWQgKi8KPiA+ID4gKwl1OAlicHA7CQkvKiBiaXRzIHBlciBwaXhlbCAqLwo+ ID4gPiArCXUzMglod19mb3JtYXQ7CS8qIGZvcm1hdCBmaWVsZCBpbiB0aGUgU1BSX0NUTCByZWdp c3RlciAqLwo+ID4gPiArCXUzMglkcm1fZm9ybWF0OwkvKiBmb3JtYXQgaW4gRFJNIGRlZmluaXRp b24gKi8KPiA+ID4gKwl1MzIJYmFzZTsJCS8qIHNwcml0ZSBiYXNlIGluIGdyYXBoaWNzIG1lbW9y eSAqLwo+ID4gPiArCXUzMgl4X3BvczsJCS8qIGluIHBpeGVscyAqLwo+ID4gPiArCXUzMgl5X3Bv czsJCS8qIGluIGxpbmVzICovCj4gPiA+ICsJdTMyCXhfb2Zmc2V0OwkvKiBpbiBwaXhlbHMgKi8K PiA+ID4gKwl1MzIJeV9vZmZzZXQ7CS8qIGluIGxpbmVzICovCj4gPiA+ICsJdTMyCXdpZHRoOwkJ LyogaW4gcGl4ZWxzICovCj4gPiA+ICsJdTMyCWhlaWdodDsJCS8qIGluIGxpbmVzICovCj4gPiA+ ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgZ3Z0X2N1cnNvcl9wbGFuZV9mb3JtYXQgewo+ID4g PiArCXU4CWVuYWJsZWQ7Cj4gPiA+ICsJdTgJbW9kZTsJCS8qIGN1cnNvciBtb2RlIHNlbGVjdCAq Lwo+ID4gPiArCXU4CWJwcDsJCS8qIGJpdHMgcGVyIHBpeGVsICovCj4gPiA+ICsJdTMyCWRybV9m b3JtYXQ7CS8qIGZvcm1hdCBpbiBEUk0gZGVmaW5pdGlvbiAqLwo+ID4gPiArCXUzMgliYXNlOwkJ LyogY3Vyc29yIGJhc2UgaW4gZ3JhcGhpY3MgbWVtb3J5ICovCj4gPiA+ICsJdTMyCXhfcG9zOwkJ LyogaW4gcGl4ZWxzICovCj4gPiA+ICsJdTMyCXlfcG9zOwkJLyogaW4gbGluZXMgKi8KPiA+ID4g Kwl1OAl4X3NpZ247CQkvKiBYIFBvc2l0aW9uIFNpZ24gKi8KPiA+ID4gKwl1OAl5X3NpZ247CQkv KiBZIFBvc2l0aW9uIFNpZ24gKi8KPiA+ID4gKwl1MzIJd2lkdGg7CQkvKiBpbiBwaXhlbHMgKi8K PiA+ID4gKwl1MzIJaGVpZ2h0OwkJLyogaW4gbGluZXMgKi8KPiA+ID4gKwl1MzIJeF9ob3Q7CQkv KiBpbiBwaXhlbHMgKi8KPiA+ID4gKwl1MzIJeV9ob3Q7CQkvKiBpbiBwaXhlbHMgKi8KPiA+ID4g K307Cj4gPiA+ICsKPiA+IAo+ID4gVGhlIGFib3ZlIHN0cnVjdHMgaGF2ZSBhIGxvdCBpbiBjb21t b24sIHdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gaGF2ZSB0aGUKPiA+IGNvbW1vbiBtZW1iZXJzICsg cGxhbmUgdHlwZSBhbmQgdGhlbiB1bmlvbiBmb3IgdGhlIHBsYW5lIHR5cGUgc3BlY2lmaWMKPiA+ IGRhdGEuIEkgc3VzcGVjdCBoYXZpbmcgaXQgYWxsIHNwbGl0IHRoaXMgd2F5IHdpbGwgbGVhZCB0 byBtb3JlIHV0aWxpdHkKPiA+IGZ1bmN0aW9ucyBzb21ld2hlcmUuCj4gPiAKPiBbWmhpXSBUaGFu a3MuIFdpbGwgZG8gdGhhdC4KPiAKPiA+ID4gK3N0cnVjdCBndnRfcGlwZV9mb3JtYXQgewo+ID4g PiArCXN0cnVjdCBndnRfcHJpbWFyeV9wbGFuZV9mb3JtYXQJcHJpbWFyeTsKPiA+ID4gKwlzdHJ1 Y3QgZ3Z0X3Nwcml0ZV9wbGFuZV9mb3JtYXQJc3ByaXRlOwo+ID4gPiArCXN0cnVjdCBndnRfY3Vy c29yX3BsYW5lX2Zvcm1hdAljdXJzb3I7Cj4gPiA+ICsJZGRpX3BvcnRfdCBkZGlfcG9ydDvCoMKg LyogdGhlIERESSBwb3J0IHRoYXQgdGhlIHBpcGUgaXMgY29ubmVjdGVkIHRvICovCj4gPiA+ICt9 Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgZ3Z0X2ZiX2Zvcm1hdHsKPiA+ID4gKwlzdHJ1Y3QgZ3Z0 X3BpcGVfZm9ybWF0CXBpcGVzW0k5MTVfTUFYX1BJUEVTXTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ ID4gK2V4dGVybiBpbnQgZ3Z0X2ZiX25vdGlmaWVyX2NhbGxfY2hhaW4odW5zaWduZWQgbG9uZyB2 YWwsIHZvaWQgKmRhdGEpOwo+ID4gPiArZXh0ZXJuIGludCBndnRfZGVjb2RlX2ZiX2Zvcm1hdChz dHJ1Y3QgcGd0X2RldmljZSAqcGRldiwgaW50IHZtaWQsCj4gPiA+ICsJCQkJc3RydWN0IGd2dF9m Yl9mb3JtYXQgKmZiKTsKPiA+ID4gKwo+ID4gPiArI2VuZGlmCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Z3Z0LmMKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uMDQx ZDEwZgo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9ndnQuYwo+ID4gPiBAQCAtMCwwICsxLDM2NiBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIENv cHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ID4gKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCj4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gPiA+ICsgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4g KyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP Ugo+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULsKgwqBJTiBOTyBFVkVOVCBTSEFMTAo+ ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s Cj4gPiA+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ID4gPiArICogU09GVFdBUkUuCj4gPiA+ ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUKPiA+ID4gKyNpbmNsdWRlCj4gPiA+ICsKPiA+ ID4gKyNpbmNsdWRlICJndnQuaCIKPiA+ID4gKwo+ID4gPiArc3RydWN0IGd2dF9ob3N0IGd2dF9o b3N0Owo+ID4gPiArCj4gPiA+ICtleHRlcm4gc3RydWN0IGd2dF9rZXJuZWxfZG0geGVuZ3Rfa2Rt Owo+ID4gPiArZXh0ZXJuIHN0cnVjdCBndnRfa2VybmVsX2RtIGt2bWd0X2tkbTsKPiA+ID4gKwo+ ID4gPiArc3RhdGljIGNvbnN0IGNoYXIgKnN1cHBvcnRlZF9oeXBlcnZpc29yc1tdID0gewo+ID4g Cj4gPiBzaG91bGQgYmUgInN0YXRpYyBjb25zdCBjaGFyICogY29uc3QiLgo+ID4gCj4gPiA+ICsJ W0dWVF9IWVBFUlZJU09SX1RZUEVfWEVOXSA9ICJYZW4gSHlwZXJ2aXNvciIsCj4gPiA+ICsJW0dW VF9IWVBFUlZJU09SX1RZUEVfS1ZNXSA9ICJLVk0iLAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiAr c3RhdGljIGJvb2wgZ3Z0X2luaXRfaG9zdCh2b2lkKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBn dnRfaG9zdCAqaG9zdCA9ICZndnRfaG9zdDsKPiA+ID4gKwo+ID4gPiArCWlmICghZ3Z0LmVuYWJs ZSkgewo+ID4gPiArCQlndnRfZGJnX2NvcmUoIkdWVC1nIGhhcyBiZWVuIGRpc2FibGVkIGJ5IGtl cm5lbCBwYXJhbWV0ZXIiKTsKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCX0KPiA+ID4g Kwo+ID4gPiArCWlmIChob3N0LT5pbml0aWFsaXplZCkgewo+ID4gPiArCQlndnRfZXJyKCJHVlQt ZyBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkISIpOwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpKSB7Cj4g PiAKPiA+IFNob3VsZG4ndCBYZW4gY29kZSBiZSBDT05GSUdfWEVOX0RPTTAgYW5kIENPTkZJR19Y RU4gI2lmZGVmIHByb3RlY3RlZD8KPiA+IAo+IFtaaGldIFRoZSBmb2xsb3dpbmcgY29kZSBwaWVj ZSBzaG93cyB4ZW5faW5pdGlhbF9kb21haW4oKS94ZW5fZG9tYWluKCnCoAo+IGNvdWxkIGFsc28g YmUgdXNlZCB3aGVuIENPTkZJR19YRU5fRE9NMCBpcyBub3Qgc2V0Lgo+IAo+ICNpZmRlZiBDT05G SUdfWEVOCj4gZXh0ZXJuIGVudW0geGVuX2RvbWFpbl90eXBlIHhlbl9kb21haW5fdHlwZTsKPiAj ZWxzZQo+ICNkZWZpbmUgeGVuX2RvbWFpbl90eXBlwqDCoMKgwqDCoMKgwqDCoMKgWEVOX05BVElW RQo+ICNlbmRpZgo+IAoKT2ssIHRoZW4gaXQncyBjb29sLiBJIG1pc3NlZCB0aGlzIGNvbnN0cnVj dCA6KQoKPiAjZGVmaW5lIHhlbl9kb21haW4oKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCh4ZW5f ZG9tYWluX3R5cGUgIT0gWEVOX05BVElWRSkKPiAjZGVmaW5lIHhlbl9wdl9kb21haW4oKcKgwqDC oMKgwqDCoMKgwqDCoCh4ZW5fZG9tYWluKCkgJibCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZW5fZG9tYWluX3R5cGUgPT0gWEVO X1BWX0RPTUFJTikKPiAjZGVmaW5lIHhlbl9odm1fZG9tYWluKCnCoMKgwqDCoMKgwqDCoMKgKHhl bl9kb21haW4oKSAmJsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHhlbl9kb21haW5fdHlwZSA9PSBYRU5fSFZNX0RPTUFJTikKPiAK PiAjaWZkZWYgQ09ORklHX1hFTl9ET00wCj4gI2luY2x1ZGUgCj4gI2luY2x1ZGUgCj4gCj4gI2Rl ZmluZSB4ZW5faW5pdGlhbF9kb21haW4oKcKgwqDCoMKgKHhlbl9kb21haW4oKSAmJiBcCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZW5fc3RhcnRfaW5mbyAmJsKgCj4geGVuX3N0YXJ0X2luZm8tPmZsYWdzICYgU0lG X0lOSVRET01BSU4pCj4gI2Vsc2XCoMKgLyogIUNPTkZJR19YRU5fRE9NMCAqLwo+ICNkZWZpbmUg eGVuX2luaXRpYWxfZG9tYWluKCnCoMKgwqDCoCgwKQo+ICNlbmRpZsKgwqAvKiBDT05GSUdfWEVO X0RPTTAgKi8KPiAKPiA+ID4gKwkJLyogWGVuIERvbTAgKi8KPiA+ID4gKwkJaG9zdC0+a2RtID0g dHJ5X3RoZW5fcmVxdWVzdF9tb2R1bGUoc3ltYm9sX2dldCh4ZW5ndF9rZG0pLCAieGVuZ3QiKTsK PiA+ID4gKwkJaG9zdC0+aHlwZXJ2aXNvcl90eXBlID0gR1ZUX0hZUEVSVklTT1JfVFlQRV9YRU47 Cj4gPiA+ICsJfSBlbHNlIGlmKHhlbl9kb21haW4oKSkgewo+ID4gPiArCQkvKiBYZW4gRG9tVSAq Lwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfSBlbHNlIHsKPiA+ID4gKwkJLyogbm90 IGluIFhlbi4gVHJ5IEtWTUdUICovCj4gPiA+ICsJCWhvc3QtPmtkbSA9IHRyeV90aGVuX3JlcXVl c3RfbW9kdWxlKHN5bWJvbF9nZXQoa3ZtZ3Rfa2RtKSwgImt2bSIpOwo+ID4gPiArCQlob3N0LT5o eXBlcnZpc29yX3R5cGUgPSBHVlRfSFlQRVJWSVNPUl9UWVBFX0tWTTsKPiA+ID4gKwl9Cj4gPiA+ ICsKPiA+IAo+ID4gV2h5IGRvIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiBoeXBlcnZpc29yIHR5 cGUsIGFyZSB0aGVyZSBwbGVudHkgb2YKPiA+IGh5cGVydmlzb3Igc3BlY2lmaWMgYmVoYXZpb3Vy IGRpZmZlcmVuY2VzPwo+IAo+IFtaaGldIEFzIEdWVC1nIG5lZWRzIHNvbWUgaHlwZXJ2aXNvciBz ZXJ2aWNlcyB0byB3b3JrLCB3ZSB3cml0ZSBhwqAKPiBhYnN0cmFjdGlvbiBsYXllciB0byBjb25u ZWN0IEdWVC1nIHRvIGRpZmZlcmVudCBoeXBlcnZpc29yLiBCdXQgc3RpbGzCoAo+IHRoZXJlIGFy ZSBzb21lIGVtdWxhdGlvbiBsb2dpYyBjb3VsZG4ndCBiZSBmaXR0ZWQgaW50byB0aGF0IGFic3Ry YWN0aW9uwqAKPiBsYXllciwgbGlrZSBPcFJlZ2lvbiBlbXVsYXRpb24uIEluIFhlbiwgd2UgZW11 bGF0ZXMgaXQgaW4ga2VybmVsIHNwYWNlLMKgCj4gd2hpbGUgd2UgZW11bGF0ZXMgaXQgaW4gUWVt dSB1bmRlciBLVk0uIEkgYWxzbyBhZ3JlZWQgdGhhdCB3ZSBzaG91bGTCoAo+IGZpbmQgc29tZSBh cHByb2FjaCB0byBpbXByb3ZlIGl0IGp1c3QgbGlrZSB3aGF0IHlvdSBzYWlkLgo+IAoKWWVwLCBp ZiBjb3JyZWN0aW5nIGl0IGlzIG5vdCBjdXJyZW50bHkgcG9zc2libGUsIEkgY2FuIGxpdmUgd2l0 aCBpdC4KQnV0IGhvc3QtPmh5cGVydmlzb3JfdHlwZSBkZXBlbmRlbnQgY29kZSBzaG91bGQgYmUg a2VwdCB0byBhYnNvbHV0ZQptaW5pbXVtLgoKUmVnYXJkcywgSm9vbmFzCgo+ID4gSWYgaXQgaXMg anVzdCBmb3IgcHJpbnRpbmcKPiA+IHRoZSBiZWxvdyBkZWJ1ZywgSSB0aGluayBpdCdzIGJldHRl ciB0byBtb3ZlIHRoZSBkZWJ1ZyBpbnRvIGFib3ZlIGNvZGUKPiA+IHRoYXQgZGV0ZWN0cyB0aGUg aHlwZXJ2aXNvciwgd3JhcCB0aGVtIHdpdGggYXBwcm9wcmlhdGUgQ09ORklHICNpZmRlZnMuCj4g PiAKPiA+ID4gKwlpZiAoIWhvc3QtPmtkbSkKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiAr Cj4gPiA+ICsJaWYgKCFoeXBlcnZpc29yX2RldGVjdF9ob3N0KCkpCj4gPiA+ICsJCXJldHVybiBm YWxzZTsKPiA+ID4gKwo+ID4gPiArCWd2dF9pbmZvKCJSdW5uaW5nIHdpdGggaHlwZXJ2aXNvciAl cyBpbiBob3N0IG1vZGUiLAo+ID4gPiArCQkJc3VwcG9ydGVkX2h5cGVydmlzb3JzW2hvc3QtPmh5 cGVydmlzb3JfdHlwZV0pOwo+ID4gPiArCj4gPiA+ICsJaWRyX2luaXQoJmhvc3QtPmRldmljZV9p ZHIpOwo+ID4gPiArCW11dGV4X2luaXQoJmhvc3QtPmRldmljZV9pZHJfbG9jayk7Cj4gPiA+ICsK PiA+ID4gKwlob3N0LT5pbml0aWFsaXplZCA9IHRydWU7Cj4gPiA+ICsJcmV0dXJuIHRydWU7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBib29sIGluaXRfZGV2aWNlX2luZm8oc3RydWN0 IHBndF9kZXZpY2UgKnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGd2dF9kZXZpY2VfaW5m byAqaW5mbyA9ICZwZGV2LT5kZXZpY2VfaW5mbzsKPiA+ID4gKwo+ID4gPiArCWlmICghSVNfQlJP QURXRUxMKHBkZXYtPmRldl9wcml2KSkgewo+ID4gPiArCQlndnRfZXJyKCJVbnN1cHBvcnRlZCBH RU4gZGV2aWNlIik7Cj4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoSVNfQlJPQURXRUxMKHBkZXYtPmRldl9wcml2KSkgewo+ID4gPiArCQlpbmZvLT5t YXhfZ3R0X2dtX3N6ID0gKDFVTCA8PCAzMik7Cj4gPiA+ICsJCS8qCj4gPiA+ICsJCcKgKiBUaGUg bGF5b3V0IG9mIEJBUjAgaW4gQkRXOgo+ID4gPiArCQnCoCogfDwgLSBNTUlPIDJNQiAtPnw8LSBS ZXNlcnZlZCA2TUIgLT58PC0gTUFYIEdUVCA4TUItPnwKPiA+ID4gKwkJwqAqCj4gPiA+ICsJCcKg KiBHVFQgb2Zmc2V0IGluIEJBUjAgc3RhcnRzIGZyb20gOE1CIHRvIDE2TUIsIGFuZAo+ID4gPiAr CQnCoCogV2hhdGV2ZXIgR1RUIHNpemUgaXMgY29uZmlndXJlZCBpbiBCSU9TLAo+ID4gPiArCQnC oCogdGhlIHNpemUgb2YgQkFSMCBpcyBhbHdheXMgMTZNQi4gVGhlIGFjdHVhbCBjb25maWd1cmVk Cj4gPiA+ICsJCcKgKiBHVFQgc2l6ZSBjYW4gYmUgZm91bmQgaW4gR01DSF9DVFJMLgo+ID4gPiAr CQnCoCovCj4gPiA+ICsJCWluZm8tPmd0dF9zdGFydF9vZmZzZXQgPSAoMVVMIDw8IDIzKTsKPiA+ ID4gKwkJaW5mby0+bWF4X2d0dF9zaXplID0gKDFVTCA8PCAyMyk7Cj4gPiA+ICsJCWluZm8tPmd0 dF9lbnRyeV9zaXplID0gODsKPiA+ID4gKwkJaW5mby0+Z3R0X2VudHJ5X3NpemVfc2hpZnQgPSAz Owo+ID4gPiArCQlpbmZvLT5nbWFkcl9ieXRlc19pbl9jbWQgPSA4Owo+ID4gCj4gPiBXb3VsZCB0 aGlzIGluZm9ybWF0aW9uIGJlIHVzZWZ1bCBpbiBhIGhlYWRlciBhcyAjZGVmaW5lcyB0b28/Cj4g PiAKPiBbWmhpXSBQcm9iYWJseS4gQ29uc2lkZXIgdGhhdCBvbmUgR1ZULWcgZmVhdHVyZWQga2Vy bmVsIGNvdWxkIGJlIGFibGUgdG/CoAo+IHJ1biBvbiBkaWZmZXJlbnQgcGxhdGZvcm1zLCB0aGUg aW5mb3JtYWlvbiBkYXRhIHN0cnVjdHVyZSBjb3VsZCBiZcKgCj4gZGlmZmVyZW50LiBCdXQgSSBh Z3JlZSB0byBkZWZpbmUgdGhlIG1hZ2ljIG51bWJlcnMgaW4gYSBoZWFkZXIgZmlsZXMuIDopCj4g Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZ3Z0X2luZm8oIkRldmljZSBpbmZvOiIpOwo+ID4g PiArCXByaW50aygiwqDCoMKgwqDCoMKgwqDCoG1heF9ndHRfZ21fc3o6ICVsbHhcbiIsIGluZm8t Pm1heF9ndHRfZ21fc3opOwo+ID4gPiArCXByaW50aygiwqDCoMKgwqDCoMKgwqDCoG1heF9ndHRf c2l6ZTogJXhcbiIsIGluZm8tPm1heF9ndHRfc2l6ZSk7Cj4gPiA+ICsJcHJpbnRrKCLCoMKgwqDC oMKgwqDCoMKgZ3R0X3NpemVfZW50cnk6ICV4XG4iLCBpbmZvLT5ndHRfZW50cnlfc2l6ZSk7Cj4g PiA+ICsJcHJpbnRrKCLCoMKgwqDCoMKgwqDCoMKgZ3R0X2VudHJ5X3NpemVfc2hpZnQ6ICV4XG4i LCBpbmZvLT5ndHRfZW50cnlfc2l6ZV9zaGlmdCk7Cj4gPiA+ICsJcHJpbnRrKCLCoMKgwqDCoMKg wqDCoMKgZ3R0X3N0YXJ0X29mZnNldDogJXhcbiIsIGluZm8tPmd0dF9zdGFydF9vZmZzZXQpOwo+ ID4gPiArCXByaW50aygiwqDCoMKgwqDCoMKgwqDCoGd0dF9lbmRfb2Zmc2V0OiAleFxuIiwgaW5m by0+Z3R0X2VuZF9vZmZzZXQpOwo+ID4gPiArCj4gPiAKPiA+IEp1c3QgcHV0IHRoaXMgdG8ga2lu ZCBvZiBzdHVmZiB0byBpOTE1X2RlYnVnZnMuYy4KPiA+IAo+IFtaaGldIFRoYW5rcy4KPiAKPiA+ ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgaW5p dF9pbml0aWFsX2NmZ19zcGFjZV9zdGF0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPiA+ID4g K3sKPiA+ID4gKwlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldiA9IHBkZXYtPmRldl9wcml2LT5kZXYt PnBkZXY7Cj4gPiA+ICsJaW50IGk7Cj4gPiA+ICsKPiA+ID4gKwlndnRfZGJnX2NvcmUoImluaXQg aW5pdGlhbCBjZmcgc3BhY2UsIGlkICVkIiwgcGRldi0+aWQpOwo+ID4gPiArCj4gPiA+ICsJZm9y IChpID0gMDsgaSA8IEdWVF9DRkdfU1BBQ0VfU1o7IGkgKz0gNCkKPiA+IAo+ID4gKz0gc2l6ZW9m KC4uLikKPiA+IAo+ID4gPiArCQlwY2lfcmVhZF9jb25maWdfZHdvcmQocGNpX2RldiwgaSwKPiA+ ID4gKwkJCQkodTMyICopJnBkZXYtPmluaXRpYWxfY2ZnX3NwYWNlW2ldKTsKPiA+ID4gKwo+ID4g PiArCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKPiA+IAo+ID4gTm8gbWFnaWMgbnVtYmVycyBt YWtlIGEgI2RlZmluZSBmb3IgMyBhbmQgZ2l2ZSBpdCBhIGRlc2NyaXB0aXZlIG5hbWUuCj4gPiAK PiA+ID4gKwkJcGRldi0+YmFyX3NpemVbaV0gPSBwY2lfcmVzb3VyY2VfbGVuKHBjaV9kZXYsIGkg KiAyKTsKPiA+ID4gKwkJZ3Z0X2luZm8oImJhciAlZCBzaXplOiAlbGx4IiwgaSwgcGRldi0+YmFy X3NpemVbaV0pOwo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQg Y2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2KQo+ID4gPiAr ewo+ID4gPiArCWlmIChwZGV2LT5ndHRtbWlvX3ZhKSB7Cj4gPiA+ICsJCWlvdW5tYXAocGRldi0+ Z3R0bW1pb192YSk7Cj4gPiA+ICsJCXBkZXYtPmd0dG1taW9fdmEgPSBOVUxMOwo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiArCWlmIChwZGV2LT5nbWFkcl92YSkgewo+ID4gPiArCQlpb3VubWFwKHBk ZXYtPmdtYWRyX3ZhKTsKPiA+ID4gKwkJcGRldi0+Z21hZHJfdmEgPSBOVUxMOwo+ID4gPiArCX0K PiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGJvb2wgaW5pdF9pbml0aWFsX21taW9fc3Rh dGUoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJdTY0IGJhcjAsIGJh cjE7Cj4gPiA+ICsKPiA+ID4gKwlndnRfZGJnX2NvcmUoImluaXQgaW5pdGlhbCBtbWlvIHN0YXRl LCBpZCAlZCIsIHBkZXYtPmlkKTsKPiA+ID4gKwo+ID4gPiArCWJhcjAgPSAqKHU2NCAqKSZwZGV2 LT5pbml0aWFsX2NmZ19zcGFjZVtHVlRfUkVHX0NGR19TUEFDRV9CQVIwXTsKPiA+ID4gKwliYXIx ID0gKih1NjQgKikmcGRldi0+aW5pdGlhbF9jZmdfc3BhY2VbR1ZUX1JFR19DRkdfU1BBQ0VfQkFS MV07Cj4gPiA+ICsKPiA+ID4gKwlwZGV2LT5ndHRtbWlvX2Jhc2UgPSBiYXIwICYgfjB4ZjsKPiA+ ID4gKwlwZGV2LT5tbWlvX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7Cj4gPiA+ICsJcGRldi0+cmVn X251bSA9IHBkZXYtPm1taW9fc2l6ZSAvIDQ7Cj4gPiA+ICsJcGRldi0+Z21hZHJfYmFzZSA9IGJh cjEgJiB+MHhmOwo+ID4gPiArCj4gPiAKPiA+IE1hbnkgbWFnaWMgbnVtYmVycy4KPiA+IAo+ID4g PiArCXBkZXYtPmd0dG1taW9fdmEgPSBpb3JlbWFwKHBkZXYtPmd0dG1taW9fYmFzZSwgcGRldi0+ YmFyX3NpemVbMF0pOwo+ID4gPiArCWlmICghcGRldi0+Z3R0bW1pb192YSkgewo+ID4gPiArCQln dnRfZXJyKCJmYWlsIHRvIG1hcCBHVFRNTUlPIEJBUi4iKTsKPiA+IAo+ID4gVGhlc2Ugc2hvdWxk IGJlIGlmKFdBUk5fT04oLi4uKSkKPiA+IAo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJ fQo+ID4gPiArCj4gPiA+ICsJcGRldi0+Z21hZHJfdmEgPSBpb3JlbWFwKHBkZXYtPmdtYWRyX2Jh c2UsIHBkZXYtPmJhcl9zaXplWzJdKTsKPiA+ID4gKwlpZiAoIXBkZXYtPmdtYWRyX3ZhKSB7Cj4g PiA+ICsJCWd2dF9lcnIoImZhaWwgdG8gbWFwIEdNQURSIEJBUi4iKTsKPiA+ID4gKwkJZ290byBl cnI7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZ3Z0X2luZm8oImJhcjA6IDB4JWxseCwgYmFy MTogMHglbGx4IiwgYmFyMCwgYmFyMSk7Cj4gPiA+ICsJZ3Z0X2luZm8oIm1taW8gc2l6ZTogJXgi LCBwZGV2LT5tbWlvX3NpemUpOwo+ID4gPiArCWd2dF9pbmZvKCJndHRtbWlvOiAweCVsbHgsIGdt YWRyOiAweCVsbHgiLCBwZGV2LT5ndHRtbWlvX2Jhc2UsIHBkZXYtPmdtYWRyX2Jhc2UpOwo+ID4g PiArCWd2dF9pbmZvKCJndHRtbWlvX3ZhOiAlcCIsIHBkZXYtPmd0dG1taW9fdmEpOwo+ID4gPiAr CWd2dF9pbmZvKCJnbWFkcl92YTogJXAiLCBwZGV2LT5nbWFkcl92YSk7Cj4gPiA+ICsKPiA+ID4g KwlyZXR1cm4gdHJ1ZTsKPiA+ID4gK2VycjoKPiA+ID4gKwljbGVhbl9pbml0aWFsX21taW9fc3Rh dGUocGRldik7Cj4gPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgaW50IGd2dF9zZXJ2aWNlX3RocmVhZCh2b2lkICpkYXRhKQo+ID4gPiArewo+ID4gPiAr CXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gKHN0cnVjdCBwZ3RfZGV2aWNlICopZGF0YTsKPiA+ ID4gKwlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCWd2dF9kYmdfY29yZSgic2VydmljZSB0aHJlYWQg c3RhcnQsIHBndCAlZCIsIHBkZXYtPmlkKTsKPiA+ID4gKwo+ID4gPiArCXdoaWxlKCFrdGhyZWFk X3Nob3VsZF9zdG9wKCkpIHsKPiA+ID4gKwkJciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShw ZGV2LT5zZXJ2aWNlX3RocmVhZF93cSwKPiA+ID4gKwkJCQlrdGhyZWFkX3Nob3VsZF9zdG9wKCkg fHwgcGRldi0+c2VydmljZV9yZXF1ZXN0KTsKPiA+ID4gKwo+ID4gPiArCQlpZiAoa3RocmVhZF9z aG91bGRfc3RvcCgpKQo+ID4gPiArCQkJYnJlYWs7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKHIpIHsK PiA+ID4gKwkJCWd2dF93YXJuKCJzZXJ2aWNlIHRocmVhZCBpcyB3YWtlbiB1cCBieSB1bmV4cGVj dGVkIHNpZ25hbC4iKTsKPiA+IAo+ID4gU2hvdWxkIGJlIFdBUk5fT05DRSwgdG8gYXZvaWQgZnV0 dXJlIGRpc2FzdGVycyB3aXRoIENJLgo+ID4gCj4gW1poaV0gVGhhbmtzLgo+ID4gPiArCQkJY29u dGludWU7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGNsZWFuX3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3Rf ZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArCWlmIChwZGV2LT5zZXJ2aWNlX3RocmVhZCkg ewo+ID4gPiArCQlrdGhyZWFkX3N0b3AocGRldi0+c2VydmljZV90aHJlYWQpOwo+ID4gPiArCQlw ZGV2LT5zZXJ2aWNlX3RocmVhZCA9IE5VTEw7Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICtzdGF0aWMgYm9vbCBpbml0X3NlcnZpY2VfdGhyZWFkKHN0cnVjdCBwZ3RfZGV2aWNlICpw ZGV2KQo+ID4gPiArewo+ID4gPiArCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnBkZXYtPnNlcnZpY2Vf dGhyZWFkX3dxKTsKPiA+ID4gKwo+ID4gPiArCXBkZXYtPnNlcnZpY2VfdGhyZWFkID0ga3RocmVh ZF9ydW4oZ3Z0X3NlcnZpY2VfdGhyZWFkLAo+ID4gPiArCQkJcGRldiwgImd2dF9zZXJ2aWNlX3Ro cmVhZCVkIiwgcGRldi0+aWQpOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFwZGV2LT5zZXJ2aWNlX3Ro cmVhZCkgewo+ID4gPiArCQlndnRfZXJyKCJmYWlsIHRvIHN0YXJ0IHNlcnZpY2UgdGhyZWFkLiIp Owo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJu IHRydWU7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGNsZWFuX3BndF9kZXZp Y2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJY2xlYW5fc2Vydmlj ZV90aHJlYWQocGRldik7Cj4gPiA+ICsJY2xlYW5faW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgYm9vbCBpbml0X3BndF9kZXZpY2Uoc3RydWN0 IHBndF9kZXZpY2UgKnBkZXYsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ ID4gK3sKPiA+ID4gKwlpZiAoIWluaXRfZGV2aWNlX2luZm8ocGRldikpCj4gPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ID4gKwo+ID4gPiArCWluaXRfaW5pdGlhbF9jZmdfc3BhY2Vfc3RhdGUocGRl dik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWluaXRfaW5pdGlhbF9tbWlvX3N0YXRlKHBkZXYpKQo+ ID4gPiArCQlnb3RvIGVycjsKPiA+ID4gKwo+ID4gPiArCWlmICghaW5pdF9zZXJ2aWNlX3RocmVh ZChwZGV2KSkKPiA+ID4gKwkJZ290byBlcnI7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gdHJ1ZTsK PiA+ID4gK2VycjoKPiA+ID4gKwljbGVhbl9wZ3RfZGV2aWNlKHBkZXYpOwo+ID4gPiArCXJldHVy biBmYWxzZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGJvb2wgcG9zdF9pbml0X3Bn dF9kZXZpY2Uoc3RydWN0IHBndF9kZXZpY2UgKnBkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJu IHRydWU7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGZyZWVfcGd0X2Rldmlj ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZ3Z0X2hv c3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7Cj4gPiA+ICsKPiA+ID4gKwltdXRleF9sb2NrKCZob3N0LT5k ZXZpY2VfaWRyX2xvY2spOwo+ID4gPiArCWlkcl9yZW1vdmUoJmhvc3QtPmRldmljZV9pZHIsIHBk ZXYtPmlkKTsKPiA+ID4gKwltdXRleF91bmxvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7Cj4g PiA+ICsKPiA+ID4gKwl2ZnJlZShwZGV2KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IHN0cnVjdCBwZ3RfZGV2aWNlICphbGxvY19wZ3RfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAm Z3Z0X2hvc3Q7Cj4gPiA+ICsJc3RydWN0IHBndF9kZXZpY2UgKnBkZXYgPSBOVUxMOwo+ID4gPiAr Cj4gPiA+ICsJcGRldiA9IHZ6YWxsb2Moc2l6ZW9mKCpwZGV2KSk7Cj4gPiA+ICsJaWYgKCFwZGV2 KSB7Cj4gPiA+ICsJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwZ3QgZGV2 aWNlLiIpOwo+ID4gPiArCQlyZXR1cm4gTlVMTDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlt dXRleF9sb2NrKCZob3N0LT5kZXZpY2VfaWRyX2xvY2spOwo+ID4gPiArCXBkZXYtPmlkID0gaWRy X2FsbG9jKCZob3N0LT5kZXZpY2VfaWRyLCBwZGV2LCAwLCAwLCBHRlBfS0VSTkVMKTsKPiA+ID4g KwltdXRleF91bmxvY2soJmhvc3QtPmRldmljZV9pZHJfbG9jayk7Cj4gPiA+ICsKPiA+ID4gKwlp ZiAocGRldi0+aWQgPCAwKSB7Cj4gPiA+ICsJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2NhdGUgcGd0 IGRldmljZSBpZC4iKTsKPiA+ID4gKwkJZ290byBlcnI7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ ICsJbXV0ZXhfaW5pdCgmcGRldi0+bG9jayk7Cj4gPiA+ICsJcGRldi0+ZGV2X3ByaXYgPSBkZXZf cHJpdjsKPiA+ID4gKwlpZHJfaW5pdCgmcGRldi0+aW5zdGFuY2VfaWRyKTsKPiA+ID4gKwo+ID4g PiArCXJldHVybiBwZGV2Owo+ID4gPiArZXJyOgo+ID4gPiArCWZyZWVfcGd0X2RldmljZShwZGV2 KTsKPiA+ID4gKwlyZXR1cm4gTlVMTDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArdm9pZCBndnRf ZGVzdHJveV9wZ3RfZGV2aWNlKHZvaWQgKnByaXZhdGVfZGF0YSkKPiA+ID4gK3sKPiA+ID4gKwlz dHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGd0X2RldmljZSAqKXByaXZhdGVfZGF0 YTsKPiA+ID4gKwo+ID4gPiArCWNsZWFuX3BndF9kZXZpY2UocGRldik7Cj4gPiA+ICsJZnJlZV9w Z3RfZGV2aWNlKHBkZXYpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICt2b2lkICpndnRfY3JlYXRl X3BndF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiArewo+ ID4gPiArCXN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2ID0gTlVMTDsKPiA+ID4gKwlzdHJ1Y3QgZ3Z0 X2hvc3QgKmhvc3QgPSAmZ3Z0X2hvc3Q7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWhvc3QtPmluaXRp YWxpemVkICYmICFndnRfaW5pdF9ob3N0KCkpIHsKPiA+ID4gKwkJZ3Z0X2VycigiZ3Z0X2luaXRf aG9zdCBmYWlsIik7Cj4gPiA+ICsJCXJldHVybiBOVUxMOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4g PiArCWd2dF9kYmdfY29yZSgiY3JlYXRlIG5ldyBwZ3QgZGV2aWNlLCBpOTE1IGRldl9wcml2OiAl cCIsIGRldl9wcml2KTsKPiA+ID4gKwo+ID4gPiArCXBkZXYgPSBhbGxvY19wZ3RfZGV2aWNlKGRl dl9wcml2KTsKPiA+ID4gKwlpZiAoIXBkZXYpIHsKPiA+ID4gKwkJZ3Z0X2VycigiZmFpbCB0byBh bGxvY2F0ZSBtZW1vcnkgZm9yIHBndCBkZXZpY2UuIik7Cj4gPiA+ICsJCWdvdG8gZXJyOwo+ID4g PiArCX0KPiA+ID4gKwo+ID4gPiArCWd2dF9kYmdfY29yZSgiaW5pdCBwZ3QgZGV2aWNlLCBpZCAl ZCIsIHBkZXYtPmlkKTsKPiA+ID4gKwo+ID4gPiArCWlmICghaW5pdF9wZ3RfZGV2aWNlKHBkZXYs IGRldl9wcml2KSkgewo+ID4gPiArCQlndnRfZXJyKCJmYWlsIHRvIGluaXQgcGh5c2ljYWwgZGV2 aWNlIHN0YXRlLiIpOwo+ID4gPiArCQlnb3RvIGVycjsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4g KwlndnRfZGJnX2NvcmUoInBndCBkZXZpY2UgY3JlYXRpb24gZG9uZSwgaWQgJWQiLCBwZGV2LT5p ZCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcGRldjsKPiA+ID4gK2VycjoKPiA+ID4gKwlpZiAo cGRldikgewo+ID4gPiArCQlndnRfZGVzdHJveV9wZ3RfZGV2aWNlKHBkZXYpOwo+ID4gPiArCQlw ZGV2ID0gTlVMTDsKPiA+ID4gKwl9Cj4gPiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ ICsKPiA+ID4gK2Jvb2wgZ3Z0X3Bvc3RfaW5pdF9wZ3RfZGV2aWNlKHZvaWQgKnByaXZhdGVfZGF0 YSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiA9IChzdHJ1Y3QgcGd0 X2RldmljZSAqKXByaXZhdGVfZGF0YTsKPiA+ID4gKwlzdHJ1Y3QgZ3Z0X2hvc3QgKmhvc3QgPSAm Z3Z0X2hvc3Q7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWhvc3QtPmluaXRpYWxpemVkKSB7Cj4gPiA+ ICsJCWd2dF9lcnIoImd2dF9ob3N0IGhhdmVuJ3QgYmVlbiBpbml0aWFsaXplZC4iKTsKPiA+ID4g KwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWd2dF9kYmdfY29yZSgi cG9zdCBpbml0IHBndCBkZXZpY2UgJWQiLCBwZGV2LT5pZCk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo IXBvc3RfaW5pdF9wZ3RfZGV2aWNlKHBkZXYpKSB7Cj4gPiA+ICsJCWd2dF9lcnIoImZhaWwgdG8g cG9zdCBpbml0IHBoeXNpY2FsIGRldmljZSBzdGF0ZS4iKTsKPiA+ID4gKwkJcmV0dXJuIGZhbHNl Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4 IDAwMDAwMDAuLjZjODViYmEKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiA+ID4gQEAgLTAsMCArMSwxMzAgQEAKPiA+ID4gKy8q Cj4gPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLgo+ID4gPiArICoKPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gPiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ID4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ID4gPiArICogU29mdHdhcmUuCj4gPiA+ICsgKgo+ID4gPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC7CoMKgSU4gTk8g RVZFTlQgU0hBTEwKPiA+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiA+ICsgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORyBGUk9NLAo+ID4gPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPiA+ID4gKyAqIFNP RlRXQVJFLgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpZm5kZWYgX0dWVF9IXwo+ID4gPiAr I2RlZmluZSBfR1ZUX0hfCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ID4g PiArI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSAiZGVidWcu aCIKPiA+ID4gKyNpbmNsdWRlICJwYXJhbXMuaCIKPiA+ID4gKyNpbmNsdWRlICJyZWcuaCIKPiA+ ID4gKyNpbmNsdWRlICJoeXBlcmNhbGwuaCIKPiA+ID4gKyNpbmNsdWRlICJtcHQuaCIKPiA+ID4g KyNpbmNsdWRlICJmYl9kZWNvZGVyLmgiCj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUgR1ZUX01BWF9W R1BVIDgKPiA+ID4gKwo+ID4gPiArZW51bSB7Cj4gPiA+ICsJR1ZUX0hZUEVSVklTT1JfVFlQRV9Y RU4gPSAwLAo+ID4gPiArCUdWVF9IWVBFUlZJU09SX1RZUEVfS1ZNLAo+ID4gPiArfTsKPiA+ID4g Kwo+ID4gPiArc3RydWN0IGd2dF9ob3N0IHsKPiA+ID4gKwlib29sIGluaXRpYWxpemVkOwo+ID4g PiArCWludCBoeXBlcnZpc29yX3R5cGU7Cj4gPiA+ICsJc3RydWN0IG11dGV4IGRldmljZV9pZHJf bG9jazsKPiA+ID4gKwlzdHJ1Y3QgaWRyIGRldmljZV9pZHI7Cj4gPiA+ICsJc3RydWN0IGd2dF9r ZXJuZWxfZG0gKmtkbTsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK2V4dGVybiBzdHJ1Y3QgZ3Z0 X2hvc3QgZ3Z0X2hvc3Q7Cj4gPiA+ICsKPiA+ID4gKy8qIERlc2NyaWJlIHRoZSBsaW1pdGF0aW9u IG9mIEhXLiovCj4gPiA+ICtzdHJ1Y3QgZ3Z0X2RldmljZV9pbmZvIHsKPiA+ID4gKwl1NjQgbWF4 X2d0dF9nbV9zejsKPiA+ID4gKwl1MzIgZ3R0X3N0YXJ0X29mZnNldDsKPiA+ID4gKwl1MzIgZ3R0 X2VuZF9vZmZzZXQ7Cj4gPiA+ICsJdTMyIG1heF9ndHRfc2l6ZTsKPiA+ID4gKwl1MzIgZ3R0X2Vu dHJ5X3NpemU7Cj4gPiA+ICsJdTMyIGd0dF9lbnRyeV9zaXplX3NoaWZ0Owo+ID4gPiArCXUzMiBn bWFkcl9ieXRlc19pbl9jbWQ7Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdHJ1Y3Qgdmd0X2Rl dmljZSB7Cj4gPiA+ICsJaW50IGlkOwo+ID4gPiArCWludCB2bV9pZDsKPiA+ID4gKwlzdHJ1Y3Qg cGd0X2RldmljZSAqcGRldjsKPiA+ID4gKwlib29sIHdhcm5fdW50cmFjazsKPiA+ID4gK307Cj4g PiA+ICsKPiA+ID4gK3N0cnVjdCBwZ3RfZGV2aWNlIHsKPiA+ID4gKwlzdHJ1Y3QgbXV0ZXggbG9j azsKPiA+ID4gKwlpbnQgaWQ7Cj4gPiA+ICsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXY7Cj4gPiA+ICsJc3RydWN0IGlkciBpbnN0YW5jZV9pZHI7Cj4gPiA+ICsKPiA+ ID4gKwlzdHJ1Y3QgZ3Z0X2RldmljZV9pbmZvIGRldmljZV9pbmZvOwo+ID4gPiArCj4gPiA+ICsJ dTggaW5pdGlhbF9jZmdfc3BhY2VbR1ZUX0NGR19TUEFDRV9TWl07Cj4gPiA+ICsJdTY0IGJhcl9z aXplW0dWVF9CQVJfTlVNXTsKPiA+ID4gKwo+ID4gPiArCXU2NCBndHRtbWlvX2Jhc2U7Cj4gPiA+ ICsJdm9pZCAqZ3R0bW1pb192YTsKPiA+ID4gKwo+ID4gPiArCXU2NCBnbWFkcl9iYXNlOwo+ID4g PiArCXZvaWQgKmdtYWRyX3ZhOwo+ID4gPiArCj4gPiA+ICsJdTMyIG1taW9fc2l6ZTsKPiA+ID4g Kwl1MzIgcmVnX251bTsKPiA+ID4gKwo+ID4gPiArCXdhaXRfcXVldWVfaGVhZF90IHNlcnZpY2Vf dGhyZWFkX3dxOwo+ID4gPiArCXN0cnVjdCB0YXNrX3N0cnVjdCAqc2VydmljZV90aHJlYWQ7Cj4g PiA+ICsJdW5zaWduZWQgbG9uZyBzZXJ2aWNlX3JlcXVlc3Q7Cj4gPiA+ICt9Owo+ID4gPiArCj4g PiAKPiA+IEhlcmUtLT4KPiA+IAo+ID4gPiArc3RhdGljIGlubGluZSB1MzIgZ3Z0X21taW9fcmVh ZChzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKPiA+ID4gKwkJdTMyIHJlZykKPiA+ID4gK3sKPiA+ ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwZGV2LT5kZXZfcHJpdjsK PiA+ID4gKwlpOTE1X3JlZ190IHRtcCA9IHsucmVnID0gcmVnfTsKPiA+ID4gKwlyZXR1cm4gSTkx NV9SRUFEKHRtcCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBn dnRfbW1pb193cml0ZShzdHJ1Y3QgcGd0X2RldmljZSAqcGRldiwKPiA+ID4gKwkJdTMyIHJlZywg dTMyIHZhbCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBwZGV2LT5kZXZfcHJpdjsKPiA+ID4gKwlpOTE1X3JlZ190IHRtcCA9IHsucmVnID0gcmVn fTsKPiA+ID4gKwlJOTE1X1dSSVRFKHRtcCwgdmFsKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr c3RhdGljIGlubGluZSB1NjQgZ3Z0X21taW9fcmVhZDY0KHN0cnVjdCBwZ3RfZGV2aWNlICpwZGV2 LAo+ID4gPiArCQl1MzIgcmVnKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHBkZXYtPmRldl9wcml2Owo+ID4gPiArCWk5MTVfcmVnX3QgdG1wID0g ey5yZWcgPSByZWd9Owo+ID4gPiArCXJldHVybiBJOTE1X1JFQUQ2NCh0bXApOwo+ID4gPiArfQo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZ3Z0X21taW9fd3JpdGU2NChzdHJ1Y3Qg cGd0X2RldmljZSAqcGRldiwKPiA+ID4gKwkJdTMyIHJlZywgdTY0IHZhbCkKPiA+ID4gK3sKPiA+ ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwZGV2LT5kZXZfcHJpdjsK PiA+ID4gKwlpOTE1X3JlZ190IHRtcCA9IHsucmVnID0gcmVnfTsKPiA+ID4gKwlJOTE1X1dSSVRF NjQodG1wLCB2YWwpOwo+ID4gPiArfQo+ID4gPiArCj4gPiAKPiA+IDwtLSBXaHk/IFRoZSBpOTE1 X3JlZ190IHR5cGUgd2FzIGFkZGVkIHRvIGF2b2lkIHByb2JsZW1zLCB0aGlzIGNvZGUgaXMKPiA+ IG5vdCB1c2VkIGFueXdoZXJlLCBhbmQgaXQgaGFzIG5vIGRvY3VtZW50YXRpb24sIHNvIEkgY2Fu IG5vdCByZXZpZXcgaXQuCj4gPiAKPiA+IEkgd3JvdGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0 aGUgcG9zdC4KPiA+IAo+IFtaaGldIFRoYW5rcywgSSB3aWxsIGNoZWNrIHRoYXQuCj4gCj4gPiBS ZWdhcmRzLCBKb29uYXMKPiA+IAo+ID4gPiArI2VuZGlmCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaHlwZXJjYWxsLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvaHlwZXJjYWxsLmgKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAw MDAwMC4uMGE0MTg3NAo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9oeXBlcmNhbGwuaAo+ID4gPiBAQCAtMCwwICsxLDMwIEBACj4gPiA+ICsv Kgo+ID4gPiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4gKyAqCj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4g PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiA+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiA+ID4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAqIFNvZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCj4gPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5P IEVWRU5UIFNIQUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcgRlJPTSwKPiA+ID4gKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCj4gPiA+ICsgKiBT T0ZUV0FSRS4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaWZuZGVmIF9HVlRfSFlQRVJDQUxM X0hfCj4gPiA+ICsjZGVmaW5lIF9HVlRfSFlQRVJDQUxMX0hfCj4gPiA+ICsKPiA+ID4gK3N0cnVj dCBndnRfa2VybmVsX2RtIHsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZiAvKiBfR1ZU X0hZUEVSQ0FMTF9IXyAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L21wdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oCj4gPiA+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAuLmJiZTQ0NjUKPiA+ID4gLS0tIC9kZXYv bnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvbXB0LmgKPiA+ID4gQEAg LTAsMCArMSw5NyBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKgo+ID4gPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiA+ICsgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCj4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9v ciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3 aG9tIHRoZQo+ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0Cj4gPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZS4K PiA+ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULsKgwqBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gPiA+ICsgKiBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRQo+ID4gPiArICogU09GVFdBUkUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiAr I2lmbmRlZiBfR1ZUX01QVF9IXwo+ID4gPiArI2RlZmluZSBfR1ZUX01QVF9IXwo+ID4gPiArCj4g PiA+ICtzdHJ1Y3Qgdmd0X2RldmljZTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGlubGluZSB1bnNp Z25lZCBsb25nIGh5cGVydmlzb3JfZzJtX3BmbihzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LAo+ID4g PiArCXVuc2lnbmVkIGxvbmcgZ19wZm4pCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3JfcGF1c2VfZG9t YWluKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIDA7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3Jfc2h1dGRv d25fZG9tYWluKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJu IDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGh5cGVydmlzb3Jf c2V0X3RyYXBfYXJlYShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0LAo+ID4gPiArCXVpbnQ2NF90IHN0 YXJ0LCB1aW50NjRfdCBlbmQsIGJvb2wgbWFwKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgaHlwZXJ2aXNvcl9kZXRl Y3RfaG9zdCh2b2lkKQo+ID4gPiArewo+ID4gPiArCXJldHVybiBmYWxzZTsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArc3RhdGljIGlubGluZSBpbnQgaHlwZXJ2aXNvcl92aXJ0X3RvX21mbih2b2lk ICphZGRyKQo+ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgaW5saW5lIHZvaWQgKmh5cGVydmlzb3JfbWZuX3RvX3ZpcnQoaW50IG1mbikKPiA+ ID4gK3sKPiA+ID4gKwlyZXR1cm4gTlVMTDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGlubGluZSB2b2lkIGh5cGVydmlzb3JfaW5qZWN0X21zaShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0 KQo+ID4gPiArewo+ID4gPiArCXJldHVybjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGlubGluZSBpbnQgaHlwZXJ2aXNvcl9odm1faW5pdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQo+ ID4gPiArewo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW5saW5lIHZvaWQgaHlwZXJ2aXNvcl9odm1fZXhpdChzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0KQo+ ID4gPiArewo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgKmh5cGVy dmlzb3JfZ3BhX3RvX3ZhKHN0cnVjdCB2Z3RfZGV2aWNlICp2Z3QsIHVuc2lnbmVkIGxvbmcgZ3Bh KQo+ID4gPiArewo+ID4gPiArCXJldHVybiBOVUxMOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtz dGF0aWMgaW5saW5lIGJvb2wgaHlwZXJ2aXNvcl9yZWFkX3ZhKHN0cnVjdCB2Z3RfZGV2aWNlICp2 Z3QsIHZvaWQgKnZhLAo+ID4gPiArCQl2b2lkICp2YWwsIGludCBsZW4sIGludCBhdG9taWMpCj4g PiA+ICt7Cj4gPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgaW5saW5lIGJvb2wgaHlwZXJ2aXNvcl93cml0ZV92YShzdHJ1Y3Qgdmd0X2RldmljZSAqdmd0 LCB2b2lkICp2YSwKPiA+ID4gKwkJdm9pZCAqdmFsLCBpbnQgbGVuLCBpbnQgYXRvbWljKQo+ID4g PiArewo+ID4gPiArCXJldHVybiBmYWxzZTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArI2VuZGlm IC8qIF9HVlRfTVBUX0hfICovCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmMKPiA+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uZGZjMzNjMwo+ID4gPiAt LS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMu Ywo+ID4gPiBAQCAtMCwwICsxLDI5IEBACj4gPiA+ICsvKgo+ID4gPiArICogQ29weXJpZ2h0KGMp IDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4g KyAqCj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK PiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4g PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4g KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAq IFNvZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiA+ICsg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5PIEVWRU5UIFNIQUxMCj4gPiA+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPiA+ID4gKyAq IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MgSU4gVEhFCj4gPiA+ICsgKiBTT0ZUV0FSRS4KPiA+ID4gKyAqLwo+ID4g PiArCj4gPiA+ICsjaW5jbHVkZSAiZ3Z0LmgiCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBndnRfa2Vy bmVsX3BhcmFtcyBndnQgPSB7Cj4gPiA+ICsJLmVuYWJsZSA9IHRydWUsCj4gPiA+ICsJLmRlYnVn ID0gMCwKPiA+ID4gK307Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvcGFyYW1zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcGFyYW1zLmgKPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uZDI5NTViOQo+ID4gPiAtLS0g L2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9wYXJhbXMuaAo+ ID4gPiBAQCAtMCwwICsxLDM0IEBACj4gPiA+ICsvKgo+ID4gPiArICogQ29weXJpZ2h0KGMpIDIw MTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiA+ID4gKyAq Cj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAqIFNv ZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiA+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5PIEVWRU5UIFNIQUxMCj4gPiA+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKPiA+ID4gKyAqIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MgSU4gVEhFCj4gPiA+ICsgKiBTT0ZUV0FSRS4KPiA+ID4gKyAqLwo+ID4gPiAr Cj4gPiA+ICsjaWZuZGVmIF9HVlRfUEFSQU1TX0hfCj4gPiA+ICsjZGVmaW5lIF9HVlRfUEFSQU1T X0hfCj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBndnRfa2VybmVsX3BhcmFtcyB7Cj4gPiA+ICsJYm9v bCBlbmFibGU7Cj4gPiA+ICsJaW50IGRlYnVnOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArZXh0 ZXJuIHN0cnVjdCBndnRfa2VybmVsX3BhcmFtcyBndnQ7Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZgo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L3JlZy5oCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ IGluZGV4IDAwMDAwMDAuLmQzNjNiNzQKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvcmVnLmgKPiA+ID4gQEAgLTAsMCArMSwzNCBAQAo+ID4g PiArLyoKPiA+ID4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK PiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4g PiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gPiArICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiA+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULsKgwqBJ TiBOTyBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ID4gKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HIEZST00sCj4gPiA+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ID4gPiAr ICogU09GVFdBUkUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2lmbmRlZiBfR1ZUX1JFR19I Cj4gPiA+ICsjZGVmaW5lIF9HVlRfUkVHX0gKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBHVlRfQ0ZH X1NQQUNFX1NaCTI1Ngo+ID4gPiArI2RlZmluZSBHVlRfQkFSX05VTQkJNAo+ID4gPiArCj4gPiA+ ICsjZGVmaW5lIEdWVF9SRUdfQ0ZHX1NQQUNFX0JBUjAJMHgxMAo+ID4gPiArI2RlZmluZSBHVlRf UkVHX0NGR19TUEFDRV9CQVIxCTB4MTgKPiA+ID4gKyNkZWZpbmUgR1ZUX1JFR19DRkdfU1BBQ0Vf QkFSMgkweDIwCj4gPiA+ICsKPiA+ID4gKyNlbmRpZgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMKPiA+ID4gaW5kZXggNDcyNWU4ZC4uZWNhOGU1MCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jCj4gPiA+IEBAIC05NDMsNiArOTQzLDEwIEBAIGludCBpOTE1X2RyaXZlcl9s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gPiA+IAo+ ID4gPiDCoMKgCWludGVsX3VuY29yZV9pbml0KGRldik7Cj4gPiA+IAo+ID4gPiArCWRldl9wcml2 LT52Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRhID0gZ3Z0X2NyZWF0ZV9wZ3RfZGV2aWNlKGRldl9wcml2 KTsKPiA+ID4gKwlpZihpbnRlbF9ndnRfaG9zdF9hY3RpdmUoZGV2KSkKPiA+ID4gKwkJRFJNX0lO Rk8oIkdWVC1nIGlzIHJ1bm5pbmcgaW4gaG9zdCBtb2RlXG4iKTsKPiA+ID4gKwo+ID4gPiDCoMKg CXJldCA9IGk5MTVfZ2VtX2d0dF9pbml0KGRldik7Cj4gPiA+IMKgwqAJaWYgKHJldCkKPiA+ID4g wqDCoAkJZ290byBvdXRfZnJlZWNzcjsKPiA+ID4gQEAgLTEwNjcsNiArMTA3MSwxMyBAQCBpbnQg aTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZs YWdzKQo+ID4gPiDCoMKgCQlnb3RvIG91dF9wb3dlcl93ZWxsOwo+ID4gPiDCoMKgCX0KPiA+ID4g Cj4gPiA+ICsJaWYgKGludGVsX2d2dF9ob3N0X2FjdGl2ZShkZXYpKSB7Cj4gPiA+ICsJCWlmICgh Z3Z0X3Bvc3RfaW5pdF9wZ3RfZGV2aWNlKGRldl9wcml2LT52Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRh KSkgewo+ID4gPiArCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcG9zdCBpbml0IHBndCBkZXZpY2Vc biIpOwo+ID4gPiArCQkJZ290byBvdXRfcG93ZXJfd2VsbDsKPiA+ID4gKwkJfQo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiDCoMKgCS8qCj4gPiA+IMKgwqAJwqAqIE5vdGlmeSBhIHZhbGlkIHN1cmZh Y2UgYWZ0ZXIgbW9kZXNldHRpbmcsCj4gPiA+IMKgwqAJwqAqIHdoZW4gcnVubmluZyBpbnNpZGUg YSBWTS4KPiA+ID4gQEAgLTExMTcsNiArMTEyOCwxMCBAQCBvdXRfZ3R0Ogo+ID4gPiDCoMKgCWk5 MTVfZ2xvYmFsX2d0dF9jbGVhbnVwKGRldik7Cj4gPiA+IMKgIG91dF9mcmVlY3NyOgo+ID4gPiDC oMKgCWludGVsX2Nzcl91Y29kZV9maW5pKGRldl9wcml2KTsKPiA+ID4gKwlpZiAoaW50ZWxfZ3Z0 X2hvc3RfYWN0aXZlKGRldikpIHsKPiA+ID4gKwkJZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZShkZXZf cHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSk7Cj4gPiA+ICsJCWRldl9wcml2LT52Z3B1Lmhv c3RfcHJpdmF0ZV9kYXRhID0gTlVMTDsKPiA+ID4gKwl9Cj4gPiA+IMKgwqAJaW50ZWxfdW5jb3Jl X2ZpbmkoZGV2KTsKPiA+ID4gwqDCoAlwY2lfaW91bm1hcChkZXYtPnBkZXYsIGRldl9wcml2LT5y ZWdzKTsKPiA+ID4gwqAgcHV0X2JyaWRnZToKPiA+ID4gQEAgLTExNjUsNiArMTE4MCwxMCBAQCBp bnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+IAo+ID4g PiDCoMKgCWludGVsX21vZGVzZXRfY2xlYW51cChkZXYpOwo+ID4gPiAKPiA+ID4gKwlpZiAoaW50 ZWxfZ3Z0X2hvc3RfYWN0aXZlKGRldikpIHsKPiA+ID4gKwkJZ3Z0X2Rlc3Ryb3lfcGd0X2Rldmlj ZShkZXZfcHJpdi0+dmdwdS5ob3N0X3ByaXZhdGVfZGF0YSk7Cj4gPiA+ICsJCWRldl9wcml2LT52 Z3B1Lmhvc3RfcHJpdmF0ZV9kYXRhID0gTlVMTDsKPiA+ID4gKwl9Cj4gPiA+IMKgwqAJLyoKPiA+ ID4gwqDCoAnCoCogZnJlZSB0aGUgbWVtb3J5IHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGNoaWxk IGRldmljZQo+ID4gPiDCoMKgCcKgKiBjb25maWcgcGFyc2VkIGZyb20gVkJUCj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBpbmRleCAwMWNjOTgyLi5kYjNjNzliIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAgLTE2NzMsNiArMTY3Myw3IEBAIHN0 cnVjdCBpOTE1X3dvcmthcm91bmRzIHsKPiA+ID4gCj4gPiA+IMKgIHN0cnVjdCBpOTE1X3ZpcnR1 YWxfZ3B1IHsKPiA+ID4gwqDCoAlib29sIGFjdGl2ZTsKPiA+ID4gKwl2b2lkICpob3N0X3ByaXZh dGVfZGF0YTsKPiA+ID4gwqAgfTsKPiA+ID4gCj4gPiA+IMKgIHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXJfcGFyYW1zIHsKPiA+ID4gQEAgLTI3NDcsNiArMjc0OCwxMSBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaW50ZWxfdmdwdV9hY3RpdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4gwqDCoAly ZXR1cm4gdG9faTkxNShkZXYpLT52Z3B1LmFjdGl2ZTsKPiA+ID4gwqAgfQo+ID4gPiAKPiA+ID4g K3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9ndnRfaG9zdF9hY3RpdmUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ID4gK3sKPiA+ID4gKwlyZXR1cm4gdG9faTkxNShkZXYpLT52Z3B1Lmhvc3Rf cHJpdmF0ZV9kYXRhID8gdHJ1ZSA6IGZhbHNlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+IMKgIHZv aWQKPiA+ID4gwqAgaTkxNV9lbmFibGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKPiA+ID4gwqDCoAkJwqDCoMKgwqDCoHUzMiBzdGF0 dXNfbWFzayk7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zn cHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4gPiA+IGluZGV4IDNjODNi NDcuLjk0MjQ5MGEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dmdwdS5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4gPiA+ IEBAIC0xMTMsNSArMTEzLDggQEAgc3RydWN0IHZndF9pZiB7Cj4gPiA+IMKgIGV4dGVybiB2b2lk IGk5MTVfY2hlY2tfdmdwdShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gwqAgZXh0ZXJu IGludCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gwqAg ZXh0ZXJuIHZvaWQgaW50ZWxfdmd0X2RlYmFsbG9vbih2b2lkKTsKPiA+ID4gK2V4dGVybiB2b2lk ICpndnRfY3JlYXRlX3BndF9kZXZpY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiA+ID4gK2V4dGVybiBib29sIGd2dF9wb3N0X2luaXRfcGd0X2RldmljZSh2b2lkICpwcml2 YXRlX2RhdGEpOwo+ID4gPiArZXh0ZXJuIHZvaWQgZ3Z0X2Rlc3Ryb3lfcGd0X2RldmljZSh2b2lk ICpwcml2YXRlX2RhdGEpOwo+ID4gPiAKPiA+ID4gwqAgI2VuZGlmIC8qIF9JOTE1X1ZHUFVfSF8g Ki8KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveGVuL2ludGVyZmFjZS94ZW4uaCBiL2luY2x1 ZGUveGVuL2ludGVyZmFjZS94ZW4uaAo+ID4gPiBpbmRleCBkMTMzMTEyLi43OGEzOGYxIDEwMDY0 NAo+ID4gPiAtLS0gYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UveGVuLmgKPiA+ID4gKysrIGIvaW5j bHVkZS94ZW4vaW50ZXJmYWNlL3hlbi5oCj4gPiA+IEBAIC0yOCw2ICsyOCw3IEBACj4gPiA+IMKg ICNkZWZpbmUgX19YRU5fUFVCTElDX1hFTl9IX18KPiA+ID4gCj4gPiA+IMKgICNpbmNsdWRlCj4g PiA+ICsjaW5jbHVkZQo+ID4gPiAKPiA+ID4gwqAgLyoKPiA+ID4gwqDCoMKgKiBYRU4gIlNZU1RF TSBDQUxMUyIgKGEuay5hLiBIWVBFUkNBTExTKS4KLS0gCkpvb25hcyBMYWh0aW5lbgpPcGVuIFNv dXJjZSBUZWNobm9sb2d5IENlbnRlcgpJbnRlbCBDb3Jwb3JhdGlvbgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK