From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2 1/5] drm/i915/guc: add enable_guc_loading parameter Date: Fri, 6 May 2016 17:39:21 +0100 Message-ID: <572CC8B9.7050000@intel.com> References: <1461780195-17434-1-git-send-email-david.s.gordon@intel.com> <572377B5.5000901@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 8312C6E18C for ; Fri, 6 May 2016 16:39:23 +0000 (UTC) In-Reply-To: <572377B5.5000901@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjkvMDQvMTYgMTY6MDMsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gSGksCj4KPiBPbiAy Ny8wNC8xNiAxOTowMywgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IFNwbGl0IHRoZSBmdW5jdGlvbiBv ZiAiZW5hYmxlX2d1Y19zdWJtaXNzaW9uIiBpbnRvIHR3byBzZXBhcmF0ZQo+PiBvcHRpb25zLiAg VGhlIG5ldyBvbmUgKCJlbmFibGVfZ3VjX2xvYWRpbmciKSBjb250cm9scyBvbmx5IHRoZQo+PiAq ZmV0Y2hpbmcgYW5kIGxvYWRpbmcqIG9mIHRoZSBHdUMgZmlybXdhcmUgaW1hZ2UuIFRoZSBleGlz dGluZwo+PiBvbmUgaXMgcmVkZWZpbmVkIHRvIGNvbnRyb2wgb25seSB0aGUgKnVzZSogb2YgdGhl IEd1QyBmb3IgYmF0Y2gKPj4gc3VibWlzc2lvbiBvbmNlIHRoZSBmaXJtd2FyZSBpcyBsb2FkZWQu Cj4+Cj4+IEluIGFkZGl0aW9uLCB0aGUgZGVncmVlIG9mIGNvbnRyb2wgaGFzIGJlZW4gcmVmaW5l ZCBmcm9tIGEgc2ltcGxlCj4+IGJvb2wgdG8gYW4gaW50ZWdlciBrZXksIGFsbG93aW5nIHNldmVy YWwgb3B0aW9uczoKPj4gICAtMSAoZGVmYXVsdCkgICAgIHdoYXRldmVyIHRoZSBwbGF0Zm9ybSBk ZWZhdWx0IGlzCj4+ICAgIDAgIERJU0FCTEUgICAgICBkb24ndCBsb2FkL3VzZSB0aGUgR3VDCj4+ ICAgIDEgIEJFU1QgRUZGT1JUICB0cnkgdG8gbG9hZC91c2UgdGhlIEd1QywgZmFsbGJhY2sgaWYg bm90IGF2YWlsYWJsZQo+PiAgICAyICBSRVFVSVJFICAgICAgbXVzdCBsb2FkL3VzZSB0aGUgR3VD LCBlbHNlIGxlYXZlIHRoZSBHUFUgd2VkZ2VkCj4+Cj4+IFRoZSBuZXcgcGxhdGZvcm0gZGVmYXVs dCAoYXMgY29kZWQgaGVyZSkgd2lsbCBiZSB0byBhdHRlbXB0IHRvCj4+IGxvYWQgdGhlIEd1QyBp ZmYgdGhlIGRldmljZSBoYXMgYSBHdUMgdGhhdCByZXF1aXJlcyBmaXJtd2FyZSwKPj4gYnV0IG5v dCB5ZXQgdG8gdXNlIGl0IGZvciBzdWJtaXNzaW9uLiBBIGxhdGVyIHBhdGNoIHdpbGwgY2hhbmdl Cj4+IHRvIGVuYWJsZSBpdCBpZiBhcHByb3ByaWF0ZS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogRGF2 ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgIDEgLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICA0ICstCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgICAgICAgIHwgMTQgKysrKy0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5oICAgICAgICAgfCAgMyArLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8IDk4Cj4+ICsrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAg ICAgICB8ICAyICstCj4+ICAgNiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA1MiBk ZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGluZGV4IGQ0OTNl NzkuLmIwNGVmZmMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtNDkxMCw3 ICs0OTEwLDYgQEAgaW50IGk5MTVfZ2VtX2luaXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+PiAgICAgICAgICAgcmV0ID0gaW50ZWxfZ3VjX3Vjb2RlX2xvYWQoZGV2KTsKPj4gICAg ICAgICAgIGlmIChyZXQpIHsKPj4gICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBp bml0aWFsaXplIEd1QywgZXJyb3IgJWRcbiIsIHJldCk7Cj4+IC0gICAgICAgICAgICByZXQgPSAt RUlPOwo+PiAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+PiAgICAgICAgICAgfQo+PiAgICAgICB9 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gaW5k ZXggNzJkNjY2NS4uNDJkMmVmYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYwo+PiBAQCAtOTcwLDcgKzk3MCw3IEBAIGludCBpbnRlbF9ndWNfc3Vz cGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4Owo+PiAgICAgICB1MzIgZGF0YVszXTsKPj4KPj4gLSAgICBpZiAoIWk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uKQo+PiArICAgIGlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0 dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4+ICAgICAgICAgICByZXR1cm4gMDsKPj4KPj4g ICAgICAgY3R4ID0gZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0Owo+PiBAQCAtOTk2LDcgKzk5Niw3 IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgICAg IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHg7Cj4+ICAgICAgIHUzMiBkYXRhWzNdOwo+Pgo+PiAt ICAgIGlmICghaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCj4+ICsgICAgaWYgKGd1Yy0+Z3Vj X2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKPj4gICAgICAg ICAgIHJldHVybiAwOwo+Cj4gTm90IHRlcnJpYmx5IGltcG9ydGFudCBhbmQgcHJvYmFibHkgcHJl ZGF0ZXMgeW91ciB3b3JrLCBidXQganVzdCBzcG90dGVkCj4gaG93IHRoaXMgcmVhZHMgdmVyeSBy ZWR1bmRhbnQgLSBndWMtPmd1Y19mdy5ndWNfZndfc29tZXRoaW5nLCB3aGlsZSBpdAo+IGNvdWxk IGJlIG11Y2ggbW9yZSByZWFkYWJsZSBhcyBndWMtPmZ3LmxvYWRfc3RhdHVzLiBPYnNlcnZhdGlv biBvbmx5LgoKVGhhdCdzIGFsbW9zdCB0aGUgbmFtaW5nIHdlIGhhZCBpbiB0aGUgZGF5cyB3aGVu IHdlIGhhZCBhIGdlbmVyaWMgCihub24tR3VDLXNwZWNpZmljKSBmaXJtd2FyZSBsb2FkZXIuIEJ1 dCB3aGVuIHRoYXQgd2FzIHJlamVjdGVkLCBlYWNoIApjdXN0b20gdmVyc2lvbiBoYWQgYWxsIHRo ZSB2YXJpYWJsZXMgcXVhbGlmaWVkIHdpdGggdGhlIHNwZWNpZmljIHRhcmdldCwgCmhlbmNlIHRo ZSByZWR1bmRhbnQgbmFtaW5nIDooCgpbc25pcF0KCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPj4gQEAgLTM4Nyw0OSArMzg3LDM3IEBAIGludCBpbnRlbF9ndWNfdWNv ZGVfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgIHsKPj4gICAgICAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gICAgICAgc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+PiArICAg IGNvbnN0IGNoYXIgKmZ3X3BhdGggPSBndWNfZnctPmd1Y19md19wYXRoOwo+PiAgICAgICBpbnQg cmV0cmllcywgZXJyID0gMDsKPj4KPj4gLSAgICBpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNz aW9uKQo+PiAtICAgICAgICByZXR1cm4gMDsKPj4gLQo+PiAtICAgIERSTV9ERUJVR19EUklWRVIo Ikd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAo+PiArICAgIERSTV9ERUJVR19E UklWRVIoIkd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVzLCBsb2FkICVzXG4iLAo+PiAr ICAgICAgICBmd19wYXRoLAo+PiAgICAgICAgICAgaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1 Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4+ICAgICAgICAgICBpbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPgo+IFNob3VsZCBsb2FkIHN0 YXR1cyBiZSBhbnl0aGluZyBvdGhlciB0aGFuIEdVQ19GSVJNV0FSRV9OT05FIGhlcmU/CgpEdXJp bmcgcmVzdW1lLCBpdCAqY291bGQqIGJlIEZBSUwsIG1lYW5pbmcgd2UndmUgdHJpZWQgdG8gbG9h ZCBpdCBiZWZvcmUgCmFuZCBpdCBkaWRuJ3Qgd29yayB0aGVuLiBJbiB0aGF0IGNhc2Ugd2Ugd29u J3QgdHJ5IGFnYWluLCBhcyBwcmVzdW1hYmx5IAppdCBzdGlsbCB3b24ndCB3b3JrLgoKPj4gLSAg ICBkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KGRldl9wcml2KTsKPj4gKyAgICAvKiBMb2FkaW5n IGZvcmJpZGRlbiwgb3Igbm8gZmlybXdhcmUgdG8gbG9hZD8gKi8KPj4gKyAgICBpZiAoIWk5MTUu ZW5hYmxlX2d1Y19sb2FkaW5nKQo+Cj4gTml0cGljaywgPT0gMCB3b3VsZCBwZXJoYXBzIG1ha2Ug aXQgbW9yZSBvYnZpb3VzIHRoaXMgaXMgbm90IGEgYm9vbGVhbi4KCkJ1dCBoZXJlIHdlIGFyZSBz cGVjaWZpY2FsbHkgY2hvb3NpbmcgdG8gdHJlYXQgaXQgYXMgYSBib29sZWFuLiBUaGlzIApyZWFk czogaWYgR3VDIGxvYWRpbmcgaXMgTk9UIGVuYWJsZWQgKGkuZS4gSVMgZGlzYWJsZWQpIC4uLgoK VGhlIHZhbHVlIDAgZm9yIGRpc2FibGVkIHdhcyBub3QgYWNjaWRlbnRhbC4gQW5kIG5vdGUgd2Ug ZG9uJ3QgY3JlYXRlIAojZGVmaW5lcyBmb3IgdGhpcyBzb3J0IG9mIGtlcm5lbCBwYXJhbWV0ZXIs IGJlY2F1c2UgeW91IGhhdmUgdG8gZ2l2ZSBhIApsaXRlcmFsIGNvbnN0YW50IG9uIHRoZSBrZXJu ZWwgY29tbWFuZCBsaW5lLgoKPj4gKyAgICAgICAgZ290byBmYWlsOwo+PiArICAgIGlmIChmd19w YXRoID09IE5VTEwpCj4+ICsgICAgICAgIGdvdG8gZmFpbDsKPj4gKyAgICBpZiAoKmZ3X3BhdGgg PT0gJ1wwJykgewo+PiArICAgICAgICBEUk1fRVJST1IoIk5vIEd1QyBmaXJtd2FyZSBrbm93biBm b3IgdGhpcyBwbGF0Zm9ybVxuIik7Cj4KPiBJdCBpcyBub3QgYW4gZXJyb3IgdW5sZXNzIGk5MTUu ZW5hYmxlX2d1Y19sb2FkaW5nID09IDIsIG5vPyBBbmQgaWYgYmVzdAo+IGVmZm9ydCB0aGVuIGl0 IGlzIHByb2JhYmx5IGRlYnVnIG9yIGluZm9ybWF0aW9uYWwuCgpObywgaXQncyBzdGlsbCBhbiBF UlJPUi4gWW91J3JlIHJ1bm5pbmcgdGhlIGRyaXZlciBvbiBhIHBsYXRmb3JtIGZvciAKd2hpY2gg d2UgZG9uJ3Qga25vdyB3aGF0IGZpcm13YXJlIGlzIHJlcXVpcmVkLiBUaGF0IHByb2JhYmx5IG1l YW5zIGFuIApvbGQgZHJpdmVyIG9uIG5ldyBoYXJkd2FyZSwgc28gaXQgbWlnaHQgbm90IHdvcmsg YXQgYWxsLiBZb3UgY2FuIApzdXBwcmVzcyB0aGUgZXJyb3IgYnkgc2V0dGluZyBpOTE1LmVuYWJs ZV9ndWNfbG9hZGluZz0wIGlmIHlvdSB3YW50IHRvIAp0cnkgdGhpcyB2ZXJzaW9uIG9mIHRoZSBk cml2ZXIgYW55d2F5LiBBbHNvIG5vdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAKcGF0aCA9PSBO VUxMIChubyBHdUMsIG9yIG5vIGZpcm13YXJlIHJlcXVpcmVkID0+IG5vdCBhbiBlcnJvcikgdnMu IHBhdGggCj09ICIiIChoYXMgR3VDLCBwcmVzdW1hYmx5IG5lZWRzIGZpcm13YXJlLCBidXQgd2Ug ZG9uJ3Qga25vdyB3aGVyZSB0byAKbG9vayA9PiBFUlJPUikuCgo+IEFsc28sIGRvbid0IHRoZSBj aGVja3MgYWdhaW5zdCBmd19wYXRoICh0b2dldGhlciB3aXRoIHRoZSBlcnJvciBvciBkZWJ1Zwo+ IG1lc3NhZ2UpIGJlbG9uZyBpbiB0aGUgZncgZmV0Y2ggZnVuY3Rpb24/IElmIHRoZXkgYXJlIGlu dmFsaWQgZncgZmV0Y2gKPiB3b3VsZCBoYXZlIGZhaWxlZCBhbmQgdGhpcyBmdW5jdGlvbiB3b3Vs ZCBiZSBhYmxlIHRvIGluc3BlY3QgdGhlIGhpZ2gKPiBsZXZlbCBzdGF0dXMgb2YgdGhhdCBzdGVw IGhlcmUsIG5vPwoKVGhlIGNoZWNrcyBhcmUgZG9uZSBpbiBpbnRlbF9ndWNfdWNvZGVfaW5pdCgp LCBiZWZvcmUgZndfZmV0Y2goKSBpcyBldmVuIApjYWxsZWQ7IGJ1dCB0aGF0IGZ1bmN0aW9uIGlz IHZvaWQsIHNvIGNhbid0IHJldHVybiBmYWlsdXJlLiAoQWxzbywgd2UgCm9yaWdpbmFsbHkgc3Vw cG9ydGVkIGFzeW5jaHJvbm91cyBsb2FkaW5nLCB3aGljaCBhbHNvIGNhbid0IHJldHVybiAKZmFp bHVyZSkuIFNvIHRoaXMgZnVuY3Rpb24gd2lsbCBnZXQgY2FsbGVkIGV2ZW4gd2hlbiB3ZSBhbHJl YWR5IGtub3cgCnRoYXQgd2UgaGF2ZW4ndCBnb3QgYW55IGZpcm13YXJlIHRvIGxvYWQsIGFuZCB0 aGVzZSB0ZXN0cyBhcmUgaW5kZWVkIApjaGVja2luZyB0aGUgaGlnaC1sZXZlbCBzdGF0dXMgZnJv bSBfaW5pdCgpLgoKPj4gKyAgICAgICAgZ290byBmYWlsOwo+PiArICAgIH0KPj4KPj4gLSAgICBp ZiAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9OT05FKQo+PiAt ICAgICAgICByZXR1cm4gMDsKPj4gKyAgICAvKiBGZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0 Y2hlZCBidXQgZmFpbGVkIHRvIGxvYWQ/ICovCj4+ICsgICAgaWYgKGd1Y19mdy0+Z3VjX2Z3X2Zl dGNoX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKPj4gKyAgICAgICAgZ290byBmYWls Owo+PiArICAgIGlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVf RkFJTCkKPj4gKyAgICAgICAgZ290byBmYWlsOwo+Cj4gTGVhZHMgYmFjayB0byB0aGUgcXVlc3Rp b24gb2YgbG9hZCBzdGF0dXMgaW4gdGhpcyBmdW5jdGlvbi4gU28gaXQgaXMKPiBleHBlY3RlZCB3 ZSBhbHdheXMgZW50ZXIgaGVyZSB3aXRoIGxvYWQgc3RhdHVzIG9mIG5vbmU/IElzIGl0IHBvc3Np YmxlCj4gdG8gZ2V0IGhlcmUgd2l0aCB0aGUgZmlybXdhcmUgYWxyZWFkeSBsb2FkZWQgYWxyZWFk eT8KCk5vdCAqYWN0dWFsbHkqIGxvYWRlZCwgYmVjYXVzZSBpdCdzIGJlZW4gZXJhc2VkIGJ5IHBv d2Vyb2ZmLiBCdXQgdGhlIApzdGF0dXMgdHJhY2tpbmcgdmFyaWFibGVzIGFyZSBwZXJzaXN0ZW50 LCBzbyB0aGV5IHJlZmxlY3QgdGhlIGxhc3QgCmF0dGVtcHQuIFNvIG9uIHJlc3VtZSwgd2UgYWN0 dWFsbHkgZXhwZWN0ICJTVUNDRVNTIiBhdCB0aGlzIHBvaW50LCBhbmQgCnRoZXJlZm9yZSBjaGFu Z2UgaXQgYmFjayB0byBQRU5ESU5HIGJlbG93LgoKPj4gLSAgICBpZiAoZ3VjX2Z3LT5ndWNfZndf ZmV0Y2hfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9TVUNDRVNTICYmCj4+IC0gICAgICAgIGd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9GQUlMKQo+PiAtICAgICAgICBy ZXR1cm4gLUVOT0VYRUM7Cj4+ICsgICAgZGlyZWN0X2ludGVycnVwdHNfdG9faG9zdChkZXZfcHJp dik7Cj4+Cj4+ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJF X1BFTkRJTkc7Cj4+Cj4+IC0gICAgRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1 cyAlc1xuIiwKPj4gLSAgICAgICAgaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cykpOwo+PiAtCj4+IC0gICAgc3dpdGNoIChndWNfZnctPmd1Y19md19m ZXRjaF9zdGF0dXMpIHsKPj4gLSAgICBjYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgo+PiAtICAgICAg ICAvKiBzb21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLwo+PiAtICAgICAgICBlcnIgPSAtRUlPOwo+ PiAtICAgICAgICBnb3RvIGZhaWw7Cj4+IC0KPj4gLSAgICBjYXNlIEdVQ19GSVJNV0FSRV9OT05F Ogo+PiAtICAgIGNhc2UgR1VDX0ZJUk1XQVJFX1BFTkRJTkc6Cj4+IC0gICAgZGVmYXVsdDoKPj4g LSAgICAgICAgLyogImNhbid0IGhhcHBlbiIgKi8KPj4gLSAgICAgICAgV0FSTl9PTkNFKDEsICJH dUMgZncgJXMgaW52YWxpZCBndWNfZndfZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCj4+IC0gICAg ICAgICAgICBndWNfZnctPmd1Y19md19wYXRoLAo+PiAtICAgICAgICAgICAgaW50ZWxfZ3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4+IC0gICAgICAgICAg ICBndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpOwo+PiAtICAgICAgICBlcnIgPSAtRU5YSU87 Cj4+IC0gICAgICAgIGdvdG8gZmFpbDsKPj4gLQo+PiAtICAgIGNhc2UgR1VDX0ZJUk1XQVJFX1NV Q0NFU1M6Cj4+IC0gICAgICAgIGJyZWFrOwo+PiAtICAgIH0KPj4gKyAgICBEUk1fREVCVUdfRFJJ VkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPj4gKyAgICAgICAgaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4+ICsg ICAgICAgIGludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1 cykpOwo+Pgo+PiAgICAgICBlcnIgPSBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoZGV2KTsKPj4g ICAgICAgaWYgKGVycikKPj4gQEAgLTQ4Myw2ICs0NzEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Vjb2Rl X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4KPj4gICBmYWlsOgo+PiAgICAgICBEUk1f RVJST1IoIkd1QyBmaXJtd2FyZSBsb2FkIGZhaWxlZCwgZXJyICVkXG4iLCBlcnIpOwo+Cj4gU2Ft ZSBhcyBhYm92ZSBJIHRoaW5rIGVycm9yIG11c3QgYmUgZGVwZW5kZW50IG9uIHRoZSByZXF1ZXN0 ZWQgbW9kZS4KPiBTb21lIGN1c3RvbWVycyBhcmUgdmVyeSBzZW5zaXRpdmUgdG8gZXJyb3JzIHdo aWNoIGFyZSBub3QgcmVhbGx5IGVycm9ycwo+IHNvIGl0IGlzIGJhZCB0byBsb2cgdGhlbSB3aGVu IHRoZXkgYXJlIG5vdC4KCk5vLCBpdCdzIHN0aWxsIGFuIEVSUk9SLiBlbmFibGVfZ3VjX2xvYWRp bmcgbXVzdCBiZSBub256ZXJvLCBzbyB3ZSd2ZSAKYmVlbiBhc2tlZCB0byAqdHJ5KiB0byBsb2Fk IHRoZSBHdUMuIElmIHRoZSBsb2FkIGZhaWxzLCB0aGF0IG1lYW5zIApicm9rZW4gaGFyZHdhcmUg b3IgYSBjb3JydXB0IGZpcm13YXJlIGJsb2IsIG9yIHNvbWUgb3RoZXIgZm9ybSBvZiBzeXN0ZW0g Cm1pc2NvbmZpZ3VyYXRpb24uIEV2ZW4gaWYgd2UncmUgZ29pbmcgdG8gZmFsbCBiYWNrIHRvIGV4 ZWNsaXN0IG1vZGUsIAp0aGF0IG5lZWRzIHRvIGJlIHJlcG9ydGVkOyBmb3IgZXhhbXBsZSwgaXQg bWF5IG1lYW4gdGhhdCBTTFBDIGlzIApkaXNhYmxlZC4gVGhlIHVzZXIgY2FuIGF2b2lkIHRoZSBl cnJvciBieSBib290aW5nIHdpdGggR3VDIGxvYWRpbmcgCmRpc2FibGVkLCBidXQgdGhleSBzaG91 bGQgcHJvYmFibHkgZml4IHRoZSBwcm9ibGVtIGluc3RlYWQuCgo+PiArCj4+ICAgICAgIGlmIChn dWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVORElORykKPj4gICAg ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7Cj4+ Cj4+IEBAIC00OTAsNiArNDc5LDI5IEBAIGludCBpbnRlbF9ndWNfdWNvZGVfbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+PiAgICAgICBpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2 KTsKPj4gICAgICAgaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldik7Cj4+Cj4+ICsgICAgLyoK Pj4gKyAgICAgKiBXZSd2ZSBmYWlsZWQgdG8gbG9hZCB0aGUgZmlybXdhcmUgOigKPj4gKyAgICAg Kgo+PiArICAgICAqIERlY2lkZSB3aGV0aGVyIHRvIGRpc2FibGUgR3VDIHN1Ym1pc3Npb24gYW5k IGZhbGwgYmFjayB0bwo+PiArICAgICAqIGV4ZWNsaXN0IG1vZGUsIGFuZCB3aGV0aGVyIHRvIGhp ZGUgdGhlIGVycm9yIGJ5IHJldHVybmluZwo+PiArICAgICAqIHplcm8gb3IgdG8gcmV0dXJuIC1F SU8sIHdoaWNoIHRoZSBjYWxsZXIgd2lsbCB0cmVhdCBhcyBhCj4+ICsgICAgICogbm9uZmF0YWwg ZXJyb3IgKGkuZS4gaXQgZG9lc24ndCBwcmV2ZW50IGRyaXZlciBsb2FkLCBidXQKPj4gKyAgICAg KiBtYXJrcyB0aGUgR1BVIGFzIHdlZGdlZCB1bnRpbCByZXNldCkuCj4+ICsgICAgICovCj4+ICsg ICAgaWYgKGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nID4gMSkgewo+PiArICAgICAgICBlcnIgPSAt RUlPOwo+PiArICAgIH0gZWxzZSBpZiAoSEFTX0dVQ19TQ0hFRChkZXYpICYmICFIQVNfR1VDX1VD T0RFKGRldikpIHsKPj4gKyAgICAgICAgcmV0dXJuIDA7Cj4KPiBpOTE1X2dlbV9pbml0X2h3IGFs cmVhZHkgZ3VhcmRzIHRoZSBjYWxsIHRvIGludGVsX2d1Y191Y29kZV9sb2FkIHdpdGgKPiBIQVNf R1VDX1VDT0RFIHNvIGF0IHRoZSBtb21lbnQgYXQgbGVhc3QgdGhpcyBpcyBhIGRlYWQgYnJhbmNo Lgo+Cj4gSSBkb24ndCBldmVuIHVuZGVyc3RhbmQgd2hhdCBpcyB0aGlzIGJyYW5jaCBzdXBwb3Nl ZCB0byBkbz8gSG93IGNhbgo+IHRoZXJlIGJlIGEgcGxhdGZvcm0gd2l0aCBubyBndWMgZncgYnV0 IGd1YyBzY2hlZHVsaW5nPwoKSW1hZ2luZSBhIEd1QyB3aXRoIGZpcm13YXJlIGluIFJPTSA6KSBP ciBhdCBsZWFzdCBmbGFzaCAuLi4KCihpdCBhbHJlYWR5IGhhcyBhIEJvb3RST00pCgo+PiArICAg IH0gZWxzZSBpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPiAxKSB7Cj4+ICsgICAgICAg IGVyciA9IC1FSU87Cj4+ICsgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgZXJyID0gMDsKPj4gKyAg ICB9Cj4+ICsKPj4gKyAgICBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IDA7Cj4+ICsKPj4g KyAgICBEUk1fREVCVUdfRFJJVkVSKCJmYWxsaW5nIGJhY2sgdG8gZXhlY2xpc3QgbW9kZSwgZXJy ICVkXG4iLCBlcnIpOwo+PiArCj4KPiBUaGlzIHdvdWxkIGxvZyB3aGVuIGk5MTUuZW5hYmxlX2d1 Y19sb2FkaW5nIGlzIHNldCB0byAwIHdoaWNoIHdvdWxkIGJlCj4gY29uZnVzaW5nLiBJIHRoaW5r IGluIHRoaXMgY2FzZSB0aGUgZnVuY3Rpb24gc2hvdWxkIGJhaWwgb3V0IG11Y2ggZWFybGllci4K ClRoYXQgd2FzIHRlc3RlZCByaWdodCBiYWNrIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uISBJ dCBiYWlsZWQgb3V0IAp2ZXJ5IGVhcmx5LCBzbyB5b3UgY2FuJ3QgZ2V0IGhlcmUgd2l0aCBHdUMg bG9hZGluZyBkaXNhYmxlZC4KCkFsc28sIHRoYXQncyBhIERFQlVHIG1lc3NhZ2UsIHNvIHVzZXJz IHdvbid0IHNlZSBpdCBieSBkZWZhdWx0LgoKPj4gICAgICAgcmV0dXJuIGVycjsKPj4gICB9Cj4+ Cj4+IEBAIC02MzEsOCArNjQzLDExIEBAIHZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gICAgICAgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0g JmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+PiAgICAgICBjb25zdCBjaGFyICpmd19wYXRoOwo+Pgo+ PiAtICAgIGlmICghSEFTX0dVQ19TQ0hFRChkZXYpKQo+PiAtICAgICAgICBpOTE1LmVuYWJsZV9n dWNfc3VibWlzc2lvbiA9IGZhbHNlOwo+PiArICAgIC8qIEEgbmVnYXRpdmUgdmFsdWUgbWVhbnMg InVzZSBwbGF0Zm9ybSBkZWZhdWx0IiAqLwo+PiArICAgIGlmIChpOTE1LmVuYWJsZV9ndWNfbG9h ZGluZyA8IDApCj4+ICsgICAgICAgIGk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nID0gSEFTX0dVQ19V Q09ERShkZXYpOwo+PiArICAgIGlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA8IDApCj4+ ICsgICAgICAgIGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gSEFTX0dVQ19TQ0hFRChkZXYp Owo+Cj4gV2l0aCB0aGlzIHNldHVwIGN1cnJlbnRseSB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJl dHdlZW4gLTEgYW5kIDEuIEJ1dCBJCj4gY2FuIGFzc3VtZSBtYXliZSBpbiB0aGUgZnV0dXJlIHdl IGNvdWxkIGhhdmUgLTEgbWVhbiAyIG9uIHNvbWUgcGxhdGZvcm0KPiB3aGljaCB3b3VsZCB0aGVu IGp1c3RpZnkgaGF2aW5nIGZvdXIgcG9zc2libGUgdmFsdWVzIGZvciBlYWNoPwoKWWVzLiAwLCAx LCBhbmQgMiBhcmUgInVzZXIgcHJlZmVyZW5jZSIuIC0xIGlzICJzeXN0ZW0ncyBjaG9pY2UiLiBT byAKdGhlcmUgKmlzKiBhIGRpZmZlcmVuY2UgYmV0d2VlbiAtMSBhbmQgMSwgYmVjYXVzZSAtMSBt ZWFucyB0aGUgc2FtZSBhcyAwIApvbiBub24tR3VDIHBsYXRmb3JtcywgYnV0IHRoZSBzYW1lIGFz IDEgb24gdGhvc2UgdGhhdCBoYXZlIGEgR3VDLCBvciAKY291bGQgbWVhbiB0aGUgc2FtZSBhcyAy IG9uIEd1Qy1vbmx5IHBsYXRmb3Jtcy4KCj4+ICAgICAgIGlmICghSEFTX0dVQ19VQ09ERShkZXYp KSB7Cj4+ICAgICAgICAgICBmd19wYXRoID0gTlVMTDsKPj4gQEAgLTY0MSwyNiArNjU2LDIxIEBA IHZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAg ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IDY7Cj4+ICAgICAgICAgICBndWNf ZnctPmd1Y19md19taW5vcl93YW50ZWQgPSAxOwo+PiAgICAgICB9IGVsc2Ugewo+PiAtICAgICAg ICBpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9IGZhbHNlOwo+PiAgICAgICAgICAgZndfcGF0 aCA9ICIiOyAgICAvKiB1bmtub3duIGRldmljZSAqLwo+PiAgICAgICB9Cj4KPiBDb25mdXNpbmcg YmxvY2ssIEhBU19HVUNfVUNPREUgaXMgZGVmaW5lZCBhcyAoSVNfR0VOOShkZXYpICYmCj4gIUlT X0tBQllMQUtFKGRldikpIGJ1dCB0aGVuIGhlcmUgd2Ugb25seSBzdXBwb3J0IFNLTCBoZXJlLiBX aHkgdGhlCj4gZm9ybWVyIGlzIHRoZW4gbm90IGp1c3QgSVNfU0tZTEFLRT8KPgo+IFdoZW4gQlhU IHN1cHBvcnQgaXMgYWRkZWQgdGhpcyBzdGlsbCBuZWVkcyB0byBiZSBtb2RpZmllZCBhbmQgd291 bGQgb25seQo+IHNhdmUgdG91Y2hpbmcgSEFTX0dVQ19VQ09ERSBpbiB0aGUgaGVhZGVyLiBCdXQg aXQgbXVzdCBiZSBhIGJldHRlciByZWFzb24/CgpJIGRvbid0IHNlZSBhbnl0aGluZyBjb25mdXNp bmcuIFRoZSBsb2dpYyBkb2VzIG5vdCBkZXBlbmQgb24gaG93IApzb21lYm9keSBoYXMgZGVmaW5l ZCBIQVNfR1VDX1VDT0RFKCksIGFuZCB3ZSBzaG91bGRuJ3QgYXNzdW1lIGFueSAKcmVsYXRpb24g YmV0d2VlbiBpdCBhbmQgdGhlIHBsYXRmb3JtIG1hY3Jvcy4gV2hhdCBpdCBzYXlzIGhlcmUgaXM6 CgoxLiAgaWYgdGhpcyBwbGF0Zm9ybSAqZG9lc24ndCogaGF2ZSBHdUMgZmlybXdhcmUsIGZ3X3Bh dGggaXMgTlVMTAoyYS4gZWxzZSBpZiB0aGlzIGlzIFNLWUxBS0UsIGxvb2sgZm9yIGYvdyB2ZXJz aW9uIDYuMQoyYi4gKHJlcGVhdCAyYSBmb3IgZWFjaCBzdXBwb3J0ZWQgcGxhdGZvcm0pCjMuICAo ZWxzZSkgdW5rbm93biBkZXZpY2UsIHBhdGggaXMgIiIgd2hpY2ggdHJpZ2dlcnMgRVJST1IgbGF0 ZXIuCgpJbWFnaW5lIGEgU0tMIHZlcnNpb24gd2l0aCBHdUMgdUNvZGUgaW4gUk9NIC0gdGhlIEhB U19HVUNfVUNPREUoKSB0ZXN0IAptdXN0IHRha2UgcHJlY2VkZW5jZS4KCj4+IC0gICAgaWYgKCFp OTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPj4gLSAgICAgICAgcmV0dXJuOwo+PiAtCj4+ICAg ICAgIGd1Y19mdy0+Z3VjX2RldiA9IGRldjsKPj4gICAgICAgZ3VjX2Z3LT5ndWNfZndfcGF0aCA9 IGZ3X3BhdGg7Cj4+ICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJN V0FSRV9OT05FOwo+PiAgICAgICBndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJN V0FSRV9OT05FOwo+Pgo+PiArICAgIC8qIEVhcmx5IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VD IGxvYWRpbmcgaXMgZGlzYWJsZWQgKi8KPj4gKyAgICBpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2Fk aW5nKQo+PiArICAgICAgICByZXR1cm47Cj4+ICAgICAgIGlmIChmd19wYXRoID09IE5VTEwpCj4+ ICAgICAgICAgICByZXR1cm47Cj4+IC0KPj4gLSAgICBpZiAoKmZ3X3BhdGggPT0gJ1wwJykgewo+ PiAtICAgICAgICBEUk1fRVJST1IoIk5vIEd1QyBmaXJtd2FyZSBrbm93biBmb3IgdGhpcyBwbGF0 Zm9ybVxuIik7Cj4+IC0gICAgICAgIGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19G SVJNV0FSRV9GQUlMOwo+PiArICAgIGlmICgqZndfcGF0aCA9PSAnXDAnKQo+PiAgICAgICAgICAg cmV0dXJuOwo+PiAtICAgIH0KPgo+IEkgYWxzbyBkbyBub3QgdW5kZXJzdGFuZCB0aGUgY29tcGxp Y2F0aW9ucyB3aXRoIGZ3X3BhdGggKGVpdGhlciBOVUxMIG9yCj4gIiIpLiBJbiB0aGUgdHdvIGNh c2VzIGZldGNoIHN0YXR1cyB3aWxsIGJlIGVpdGhlciBub25lIG9yIGZhaWwsCj4gcmVzcGVjdGl2 ZWx5LCB3aGljaCB3aWxsIGVxdWFsbHkgY2F1c2UgaW50ZWxfZ3VjX3Vjb2RlX2xvYWQgdG8gaGl0 IHRoZQo+IGZhaWx1cmUgcGF0aCAoZndfZmV0Y2hfc3RhdHVzICE9IHN1Y2Nlc3MpLgo+Cj4gU28g SXMgaXQgcmVhbGx5IHJlcXVpcmVkIGZvciB0aGUgZndfcGF0aCB0byBjYW4gZWl0aGVyIGJlIE5V TEwgb3IgIiI/CgpBcyBtZW50aW9uZWQgYmVmb3JlLCBpdCdzIHNvIHRoYXQgdGhlIHN0YXR1cyBn ZXRzIHByb3BhZ2F0ZWQgZnJvbSAKX2luaXQoKSB0byBfbG9hZCgpLiBBIFByZXZpb3VzIFJldmll d2VyIGRpZG4ndCBsaWtlIGlzc3VpbmcgZXJyb3JzIGhlcmUsIApzbyB0aGUgZXJyb3IgcmVwb3J0 IGdvdCBkZWZlcnJlZCB1bnRpbCB3ZSBhY3R1YWxseSB0cnkgdG8gbG9hZCB0aGUgCmZpcm13YXJl LiAoQWxzbywgc29tZWRheSwgd2UgbWlnaHQgcmVlbmFibGUgYXN5bmNocm9ub3VzIChkZWZlcnJl ZCkgCmZpcm13YXJlIGxvYWRpbmcuIGVzcGVjaWFsbHkgb24gQW5kcm9pZCkuCgo+PiAgICAgICBn dWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKPj4gICAg ICAgRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZpcm13YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIsIGZ3 X3BhdGgpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBpbmRleCA0ZjFk ZmU2Li5kZjY5OGQ3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBA QCAtMTc1OCw3ICsxNzU4LDcgQEAgaW50IGludGVsX2d1Y19yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZQo+PiAqZGV2X3ByaXYpCj4+ICAgICAgIGludCByZXQ7Cj4+ICAgICAgIHVuc2lnbmVk IGxvbmcgaXJxZmxhZ3M7Cj4+Cj4+IC0gICAgaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lv bikKPj4gKyAgICBpZiAoIUhBU19HVUNfVUNPREUoZGV2X3ByaXYpKQo+PiAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4KPiBXaGF0IGlmIEhBU19HVUNfVUNPREUgaXMgdHJ1ZSBidXQgdGhlIGk5 MTUubG9hZF9ndWNfZmlybXdhcmUgaGFzIGJlZW4KPiBzZXQgdG8gemVybz8gU2hvdWxkIGl0IHNr aXAgdGhlIHJlc2V0IGluIHRoYXQgY2FzZSBhcyB3ZWxsPwoKUHJvYmFibHkgbm90LiBUaGlzIHRl c3Qgc2hvdWxkIHByb2JhYmx5IGJlIEhBU19HVUMoKSwgcmVnYXJkbGVzcyBvZiAKd2hldGhlciBp dCBoYXMgZi93IG9yIHdoZXRoZXIgeW91IHdhbnQgdGhlIGYvdyBsb2FkZWQuIEJ1dCB0aGVyZSBp c24ndCAKYW55IHN1Y2ggbWFjcm8sIHNvIHRoaXMgd2FzIHRoZSBjbG9zZXN0LgoKLkRhdmUuCgo+ PiAgICAgICBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7Cj4+Cj4KPiBSZWdhcmRzLAo+Cj4gVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK