From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Wunner Subject: Re: [PATCH v3 1/6] vga_switcheroo: Add support for switching only the DDC Date: Tue, 6 Oct 2015 12:10:48 +0200 Message-ID: <20151006101048.GA15385@wunner.de> References: <20151006072724.GO3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mailout3.hostsharing.net (mailout3.hostsharing.net [176.9.242.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id C020A6EAA1 for ; Tue, 6 Oct 2015 03:11:04 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20151006072724.GO3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: William Brown , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgRGFuaWVsLAoKdGhhbmsgeW91IGZvciB0YWtpbmcgYSBsb29rIGF0IHRoZSBwYXRjaCBzZXQg YW5kIHNoZXBoZXJkaW5nIHRoaXMKdGhyb3VnaCB0aGUgcmV2aWV3IHByb2Nlc3MuCgpPbiBUdWUs IE9jdCAwNiwgMjAxNSBhdCAwOToyNzoyNEFNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIEZyaSwgQXVnIDE0LCAyMDE1IGF0IDA2OjUwOjE1UE0gKzAyMDAsIEx1a2FzIFd1bm5lciB3 cm90ZToKPiA+ICAgICBEb24ndCBsb2NrIHZnYXNyX211dGV4IGluIF9sb2NrX2RkYygpIC8gX3Vu bG9ja19kZGMoKSwgaXQgY2FuIGNhdXNlCj4gPiAgICAgZGVhZGxvY2tzIGJlY2F1c2UgKGEpIGR1 cmluZyBzd2l0Y2ggKHdpdGggdmdhc3JfbXV0ZXggYWxyZWFkeSBoZWxkKSwKPiA+ICAgICBHUFUg aXMgd29rZW4gYW5kIHByb2JlcyBpdHMgb3V0cHV0cywgdHJpZXMgdG8gcmUtYWNxdWlyZSB2Z2Fz cl9tdXRleAo+ID4gICAgIHRvIGxvY2sgRERDIGxpbmVzOyAoYikgTGlrZXdpc2UgZHVyaW5nIHN3 aXRjaCwgR1BVIGlzIHN1c3BlbmRlZCBhbmQKPiA+ICAgICBjYWxscyBjYW5jZWxfZGVsYXllZF93 b3JrX3N5bmMoKSB0byBzdG9wIG91dHB1dCBwb2xsaW5nLCBpZiBwb2xsCj4gPiAgICAgdGFzayBp cyBydW5uaW5nIGF0IHRoaXMgbW9tZW50IHdlIG1heSB3YWl0IGZvcmV2ZXIgZm9yIGl0IHRvIGZp bmlzaC4KPiA+IAo+ID4gICAgIEluc3RlYWQsIGxvY2sgZGRjX2xvY2sgd2hlbiB1bnJlZ2lzdGVy aW5nIHRoZSBoYW5kbGVyIGJlY2F1c2UgdGhlCj4gPiAgICAgb25seSByZWFzb24gd2h5IHdlJ2Qg d2FudCB0byBsb2NrIHZnYXNyX211dGV4IGluIF9sb2NrX2RkYygpIC8KPiA+ICAgICBfdW5sb2Nr X2RkYygpIGlzIHRvIGJsb2NrIHRoZSBoYW5kbGVyIGZyb20gZGlzYXBwZWFyaW5nIHdoaWxlIERE Qwo+ID4gICAgIGxpbmVzIGFyZSBzd2l0Y2hlZC4KPiAKPiBTaG91bGRuJ3Qgd2UgYWxzbyB0YWtl IHRoZSBuZXcgbG9vayBpbiByZWdpc3Rlcl9oYW5kbGVyLCBmb3IgY29uc2lzdGVuY3k/Cj4gSSBr bm93IHRoYXQgaWYgeW91IGxvb2sgdGhlIG11eCBwcm92aWRlciB0b28gbGF0ZSBpdCdzIGZhaXJs eSBob3BlbGVzcyAuLi4KCldpdGggdGhlIGNob3NlbiBhcHByb2FjaCB0aGF0J3Mgbm90IG5lY2Vz c2FyeTogdmdhX3N3aXRjaGVyb29fbG9ja19kZGMoKQpyZWNvcmRzIGluIHZnYXNyX3ByaXYub2xk X2RkY19vd25lciBpZiB0aGVyZSdzIG5vIG11eDoKCglpZiAoIXZnYXNyX3ByaXYuaGFuZGxlciB8 fCAhdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKSB7CgkJdmdhc3JfcHJpdi5vbGRfZGRj X293bmVyID0gLUVOT0RFVjsKCQlyZXR1cm4gLUVOT0RFVjsKCX0KCkFuZCB2Z2Ffc3dpdGNoZXJv b191bmxvY2tfZGRjKCkgZG9lcyBub3RoaW5nIGlmIHZnYXNyX3ByaXYub2xkX2RkY19vd25lcgpp cyBuZWdhdGl2ZSwgaXQganVzdCByZWxlYXNlcyB0aGUgbG9jayBhbmQgcmV0dXJuczoKCglpZiAo dmdhc3JfcHJpdi5vbGRfZGRjX293bmVyID49IDApIHsKCQlpZCA9IHZnYXNyX3ByaXYuaGFuZGxl ci0+Z2V0X2NsaWVudF9pZChwZGV2KTsKCQlpZiAodmdhc3JfcHJpdi5vbGRfZGRjX293bmVyICE9 IGlkKQoJCQlyZXQgPSB2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMoCgkJCQkJCSAgICAg dmdhc3JfcHJpdi5vbGRfZGRjX293bmVyKTsKCX0KCW11dGV4X3VubG9jaygmdmdhc3JfcHJpdi5k ZGNfbG9jayk7CgpTbyBpdCBoYXMgbm8gY29uc2VxdWVuY2VzIGlmIHRoZSBtdXggcmVnaXN0ZXJz IGJldHdlZW4gdGhlIGNhbGxzIHRvCl9sb2NrX2RkYygpIGFuZCBfdW5sb2NrX2RkYygpLgoKCj4g QWxzbyB3aGlsZSByZWFkaW5nIHRoZSBwYXRjaCBJIHJlYWxpemVkIHRoYXQgdGhlIG5ldyBsb2Nr IHJlYWxseSBwcm90ZWN0cwo+IGh3IHN0YXRlIChpbnN0ZWFkIG9mIG91ciBzb2Z0d2FyZS1zaWRl IHRyYWNraW5nIGFuZCBkcml2ZXIgcmVzdW1lL3N1c3BlbmQKPiBjb2RlKS4gQW5kIGF0IGxlYXN0 IG15c2VsZiBJIGhhdmUgbm8gaWRlYSB3aGF0IHZnYXNyIG1lYW5zLCBzbyB3aGF0IGFib3V0Cj4g cmVuYW1pbmcgaXQgdG8gaHdfbXV0ZXg/IFdlIGhhdmUgdGhpcyBwYXR0ZXJuIG9mIGxvdy1sZXZl bCBsb2NrcyB0byBhdm9pZAo+IGNvbmN1cnJlbnQgaHcgYWNjZXNzIGluIGEgbG90IG9mIHBsYWNl cyBsaWtlIGkyYywgZHBfYXV4LCBhbmQgaXQncyB2ZXJ5Cj4gb2Z0ZW4gY2FsbGVkIGh3X2xvY2sg b3Igc2ltaWxhci4KCkhtLCBod19sb2NrIHNvdW5kcyBhIGJpdCBhbWJpZ3VvdXMuCgp2Z2Fzcl9t dXRleCBpcyByZWFsbHkgYSBjYXRjaC1hbGwgdGhhdCBwcm90ZWN0cyBhY2Nlc3MgdG8gdGhlIHZn YXNyX3ByaXYKc3RydWN0dXJlIGFuZCBhbHNvIHByb3RlY3RzIHZhcmlvdXMgaGFyZHdhcmUgc3Rh dGUuIChQb3dlciBzdGF0ZSBvZiBlYWNoCkdQVSwgbXV4IHN0YXRlLikgVXAgdW50aWwgbm93IHRo aXMgYXBwcm9hY2ggd29ya2VkIGZpbmUsIGl0IGxvb2tzIGxpa2UKdGhlcmUgd2FzIG5vIG5lZWQg Zm9yIGFkZGl0aW9uYWwgbG9ja3MuIFdlIG1heSBuZWVkIHRvIG1vdmUgdG8gbW9yZQpmaW5lLWdy YWluZWQgbG9ja2luZyBhcyBuZXcgZmVhdHVyZXMgZ2V0IGFkZGVkIHRvIHZnYV9zd2l0Y2hlcm9v LgpUaGUgbmV3bHkgaW50cm9kdWNlZCBkZGNfbG9jayBpcyBhIGZpcnN0IHN0ZXAgYW5kIEkgdGhp bmsgaXMgYXB0bHkKbmFtZWQgc2luY2UgaXQgb25seSBwcm90ZWN0cyB0aGUgbXV4IHN0YXRlIGZv ciB0aGUgRERDIGxpbmVzLgoKCj4gV3J0IHRoZSBvdmVyYWxsIHBhdGNoIHNlcmllcywgY2FuIHlv dSBwbHMgaGFnZ2xlIGRyaXZlci1tYWludGFpbmVycyAoZ211eCwKPiByYWRlb24sIG5vdXZlYXUp IGZvciBhY2tzL3Jldmlld3M/IHNjcmlwdHMvZ2V0X21haW50YWluZXJzLnBsIHNob3VsZCBoZWxw LgoKV2lsbCBkby4KCgo+IEFsc28sIHRoZSByZXZpc2VkIGRvY2Jvb2sgcGF0Y2ggc2VlbXMgdG8g YmUgbWlzc2luZyBmcm9tIHRoaXMgaXRlcmF0aW9uLAo+IHBsZWFzZSBmb2xsb3cgdXAgd2l0aCB0 aGF0IG9uZS4KClRoZSBkb2Nib29rIHBhdGNoIHBvc3RlZCBTZXB0ZW1iZXIgMTcgYXV0b21hdGlj YWxseSBwaWNrcyB1cCB0aGUKa2VybmVsLWRvYyBmb3IgdGhlIG5ldyBmdW5jdGlvbnMgdGhyb3Vn aCB0aGUgIUUgZGlyZWN0aXZlLgoKSG93ZXZlciBJIHVzZWQgbWFya2Rvd24gc3ludGF4IGZvciB0 aGUgdW5zb3J0ZWQgbGlzdHMgaW4gdGhlIERPQwpzZWN0aW9ucywgc28gaXQgd2lsbCBsb29rIGEg Yml0IGZ1bm55IHVubGVzcyBtYXJrZG93biBnZXRzIG1lcmdlZCwKd2hpY2ggYXMgd2UgYWxsIGtu b3cgaXMgY29udGVudGlvdXMuIChXaGljaCBpcyBzYWQsIHRob3VnaCBJIGNhbgp1bmRlcnN0YW5k IEpvbmF0aGFuIENvcmJldCdzIGNvbmNlcm5zLikKCgpCeSB0aGUgd2F5LCBKYW5pIGhhcyBraW5k bHkgcHJvdmlkZWQgYSBSZXZpZXdlZC1CeTogZm9yIHBhdGNoIDYgb2YKdGhlIHZnYV9zd2l0Y2hl cm9vIGRvY3Mgc2VyaWVzLiBUaGUgcGF0Y2ggaXMgbm90IGRlcGVuZGVudCBvbiB0aGUKcHJlY2Vk aW5nIHBhdGNoIDUgd2hpY2ggaXMgYXdhaXRpbmcgYW4gYWNrIGZyb20gVGFrYXNoaSwgc28gY291 bGQKYmUgbWVyZ2VkIG5vdzoKW1BBVENIIDA2LzE1XSB2Z2Ffc3dpdGNoZXJvbzogVXNlIGVudW0g dmdhX3N3aXRjaGVyb29fc3RhdGUgaW5zdGVhZAoKUGF0Y2hlcyA3IGFuZCA4IGFyZSBzaW1pbGFy bHkgdHJpdmlhbCBjbGVhbnVwczoKW1BBVENIIDA3LzE1XSB2Z2Ffc3dpdGNoZXJvbzogVXNlIFZH QV9TV0lUQ0hFUk9PX1VOS05PV05fSUQgaW5zdGVhZApbUEFUQ0ggMDgvMTVdIHZnYV9zd2l0Y2hl cm9vOiBVc2UgZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQKCkFuZCBwYXRjaCAxMCBoYXMg Z290dGVuIGEgUmV2aWV3ZWQtQnk6IGZyb20gVGFrYXNoaToKW1BBVENIIDEwLzE1XSBBTFNBOiBo ZGEgLSBTcGVsbCB2Z2Ffc3dpdGNoZXJvbyBjb25zaXN0ZW50bHkKCgpLaW5kIHJlZ2FyZHMsCgpM dWthcwoKCj4gPiAgICAgQWxzbyBsb2NrIGRkY19sb2NrIGluIHN0YWdlMiB0byBhdm9pZCByYWNl IGNvbmRpdGlvbiB3aGVyZSByZWFkaW5nCj4gPiAgICAgdGhlIEVESUQgYW5kIHN3aXRjaGluZyBo YXBwZW5zIHNpbXVsdGFuZW91c2x5LiBMaWtld2lzZSBvbiBNSUdEIC8KPiA+ICAgICBNRElTIGNv bW1hbmRzIGFuZCBvbiBydW50aW1lIHN1c3BlbmQuCj4gPiAKPiA+ICAgICBSZXRhaW4gc2VtYW50 aWNzIG9mIC0+c3dpdGNodG8gaGFuZGxlciBjYWxsYmFjayB0byBzd2l0Y2ggYWxsIHBpbnMsCj4g PiAgICAgaW5jbHVkaW5nIEREQy4gQ2hhbmdlIHNlbWFudGljcyBvZiAtPnN3aXRjaF9kZGMgaGFu ZGxlciBjYWxsYmFjayB0bwo+ID4gICAgIHJldHVybiBwcmV2aW91cyBEREMgb3duZXIuIE9yaWdp bmFsIHZlcnNpb24gdHJpZWQgdG8gZGV0ZXJtaW5lCj4gPiAgICAgcHJldmlvdXMgRERDIG93bmVy IHdpdGggZmluZF9hY3RpdmVfY2xpZW50KCkgYnV0IHRoaXMgZmFpbHMgaWYgdGhlCj4gPiAgICAg aW5hY3RpdmUgY2xpZW50IHJlZ2lzdGVycyBiZWZvcmUgdGhlIGFjdGl2ZSBjbGllbnQuCj4gPiAK PiA+IHYyLjE6IE92ZXJoYXVsIGxvY2tpbmcsIHNxdWFzaCBjb21taXRzCj4gPiAgICAgKHJlcXVl c3RlZCBieSBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPikKPiA+IAo+ID4g djIuMjogUmVhZGFiaWxpdHkgaW1wcm92ZW1lbnRzCj4gPiAgICAgKHJlcXVlc3RlZCBieSBUaGll cnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPikKPiA+IAo+ID4gdjIuMzogT3Zl cmhhdWwgbG9ja2luZyBvbmNlIG1vcmUKPiA+IAo+ID4gdjIuNDogUmV0YWluIHNlbWFudGljcyBv ZiAtPnN3aXRjaHRvIGhhbmRsZXIgY2FsbGJhY2sgdG8gc3dpdGNoIGFsbCBwaW5zCj4gPiAgICAg KHJlcXVlc3RlZCBieSBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPikKPiA+ IAo+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9ODg4NjEKPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3df YnVnLmNnaT9pZD02MTExNQo+ID4gVGVzdGVkLWJ5OiBQaWVycmUgTW9yZWF1IDxwaWVycmUubW9y cm93QGZyZWUuZnI+Cj4gPiAgICAgW01CUCAgNSwzIDIwMDkgIG52aWRpYSBNQ1A3OSArIEc5NiAg ICAgICAgcHJlLXJldGluYSAgMTUiXQo+ID4gVGVzdGVkLWJ5OiBXaWxsaWFtIEJyb3duIDx3aWxs aWFtQGJsYWNraGF0cy5uZXQuYXU+Cj4gPiAgICAgW01CUCAgOCwyIDIwMTEgIGludGVsIFNOQiAr IGFtZCB0dXJrcyAgICAgcHJlLXJldGluYSAgMTUiXQo+ID4gVGVzdGVkLWJ5OiBMdWthcyBXdW5u ZXIgPGx1a2FzQHd1bm5lci5kZT4KPiA+ICAgICBbTUJQICA5LDEgMjAxMiAgaW50ZWwgSVZCICsg bnZpZGlhIEdLMTA3ICBwcmUtcmV0aW5hICAxNSJdCj4gPiAKPiA+IENjOiBTZXRoIEZvcnNoZWUg PHNldGguZm9yc2hlZUBjYW5vbmljYWwuY29tPgo+ID4gQ2M6IERhdmUgQWlybGllIDxhaXJsaWVk QGdtYWlsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IEx1a2FzIFd1bm5lciA8bHVrYXNAd3VubmVy LmRlPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hlcm9vLmMgfCA5OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgaW5jbHVkZS9saW51 eC92Z2Ffc3dpdGNoZXJvby5oICAgfCAgOSArKysrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDUg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jIGIvZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hl cm9vLmMKPiA+IGluZGV4IGFhMDc3YWEuLjliNjk0NmUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvdmdhL3ZnYV9z d2l0Y2hlcm9vLmMKPiA+IEBAIC03Myw5ICs3MywxOSBAQAo+ID4gICAqIHRoZXJlIGNhbiB0aHVz IGJlIHVwIHRvIHRocmVlIGNsaWVudHM6IFR3byB2Z2EgY2xpZW50cyAoR1BVcykgYW5kIG9uZSBh dWRpbwo+ID4gICAqIGNsaWVudCAob24gdGhlIGRpc2NyZXRlIEdQVSkuIFRoZSBjb2RlIGlzIG1v c3RseSBwcmVwYXJlZCB0byBzdXBwb3J0Cj4gPiAgICogbWFjaGluZXMgd2l0aCBtb3JlIHRoYW4g dHdvIEdQVXMgc2hvdWxkIHRoZXkgYmVjb21lIGF2YWlsYWJsZS4KPiA+ICsgKgo+ID4gICAqIFRo ZSBHUFUgdG8gd2hpY2ggdGhlIG91dHB1dHMgYXJlIGN1cnJlbnRseSBzd2l0Y2hlZCBpcyBjYWxs ZWQgdGhlCj4gPiAgICogYWN0aXZlIGNsaWVudCBpbiB2Z2Ffc3dpdGNoZXJvbyBwYXJsYW5jZS4g VGhlIEdQVSBub3QgaW4gdXNlIGlzIHRoZQo+ID4gLSAqIGluYWN0aXZlIGNsaWVudC4KPiA+ICsg KiBpbmFjdGl2ZSBjbGllbnQuIFdoZW4gdGhlIGluYWN0aXZlIGNsaWVudCdzIERSTSBkcml2ZXIg aXMgbG9hZGVkLAo+ID4gKyAqIGl0IHdpbGwgYmUgdW5hYmxlIHRvIHByb2JlIHRoZSBwYW5lbCdz IEVESUQgYW5kIGhlbmNlIGRlcGVuZHMgb24KPiA+ICsgKiBWQklPUyB0byBwcm92aWRlIGl0cyBk aXNwbGF5IG1vZGVzLiBJZiB0aGUgVkJJT1MgbW9kZXMgYXJlIGJvZ3VzIG9yCj4gPiArICogaWYg dGhlcmUgaXMgbm8gVkJJT1MgYXQgYWxsICh3aGljaCBpcyBjb21tb24gb24gdGhlIE1hY0Jvb2sg UHJvKSwKPiA+ICsgKiBhIGNsaWVudCBtYXkgYWx0ZXJuYXRpdmVseSByZXF1ZXN0IHRoYXQgdGhl IEREQyBsaW5lcyBhcmUgdGVtcG9yYXJpbHkKPiA+ICsgKiBzd2l0Y2hlZCB0byBpdCwgcHJvdmlk ZWQgdGhhdCB0aGUgaGFuZGxlciBzdXBwb3J0cyB0aGlzLiBTd2l0Y2hpbmcKPiA+ICsgKiBvbmx5 IHRoZSBEREMgbGluZXMgYW5kIG5vdCB0aGUgZW50aXJlIG91dHB1dCBhdm9pZHMgdW5uZWNlc3Nh cnkKPiA+ICsgKiBmbGlja2VyaW5nLiBPbiBtYWNoaW5lcyB3aGljaCBhcmUgYWJsZSB0byBtdXgg ZXh0ZXJuYWwgY29ubmVjdG9ycywKPiA+ICsgKiBWQklPUyBjYW5ub3Qga25vdyBvZiBhdHRhY2hl ZCBkaXNwbGF5cyBzbyBzd2l0Y2hpbmcgdGhlIEREQyBsaW5lcwo+ID4gKyAqIGlzIHRoZSBvbmx5 IG9wdGlvbiB0byByZXRyaWV2ZSB0aGUgZGlzcGxheXMnIEVESUQuCj4gPiAgICovCj4gPiAgCj4g PiAgLyoqCj4gPiBAQCAtMTI1LDYgKzEzNSw4IEBAIHN0YXRpYyBERUZJTkVfTVVURVgodmdhc3Jf bXV0ZXgpOwo+ID4gICAqIAkoY291bnRpbmcgb25seSB2Z2EgY2xpZW50cywgbm90IGF1ZGlvIGNs aWVudHMpCj4gPiAgICogQGNsaWVudHM6IGxpc3Qgb2YgcmVnaXN0ZXJlZCBjbGllbnRzCj4gPiAg ICogQGhhbmRsZXI6IHJlZ2lzdGVyZWQgaGFuZGxlcgo+ID4gKyAqIEBkZGNfbG9jazogcHJvdGVj dHMgYWNjZXNzIHRvIEREQyBsaW5lcyB3aGlsZSB0aGV5IGFyZSB0ZW1wb3JhcmlseSBzd2l0Y2hl ZAo+ID4gKyAqIEBvbGRfZGRjX293bmVyOiBjbGllbnQgdG8gd2hpY2ggRERDIGxpbmVzIHdpbGwg YmUgc3dpdGNoZWQgYmFjayBvbiB1bmxvY2sKPiA+ICAgKgo+ID4gICAqIHZnYV9zd2l0Y2hlcm9v IHByaXZhdGUgZGF0YS4gQ3VycmVudGx5IG9ubHkgb25lIHZnYV9zd2l0Y2hlcm9vIGluc3RhbmNl Cj4gPiAgICogcGVyIHN5c3RlbSBpcyBzdXBwb3J0ZWQuCj4gPiBAQCAtMTQxLDYgKzE1Myw4IEBA IHN0cnVjdCB2Z2Fzcl9wcml2IHsKPiA+ICAJc3RydWN0IGxpc3RfaGVhZCBjbGllbnRzOwo+ID4g IAo+ID4gIAlzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciAqaGFuZGxlcjsKPiA+ICsJc3Ry dWN0IG11dGV4IGRkY19sb2NrOwo+ID4gKwlpbnQgb2xkX2RkY19vd25lcjsKPiA+ICB9Owo+ID4g IAo+ID4gICNkZWZpbmUgSURfQklUX0FVRElPCQkweDEwMAo+ID4gQEAgLTE1NSw2ICsxNjksNyBA QCBzdGF0aWMgdm9pZCB2Z2Ffc3dpdGNoZXJvb19kZWJ1Z2ZzX2Zpbmkoc3RydWN0IHZnYXNyX3By aXYgKnByaXYpOwo+ID4gIC8qIG9ubHkgb25lIHN3aXRjaGVyb28gcGVyIHN5c3RlbSAqLwo+ID4g IHN0YXRpYyBzdHJ1Y3Qgdmdhc3JfcHJpdiB2Z2Fzcl9wcml2ID0gewo+ID4gIAkuY2xpZW50cyA9 IExJU1RfSEVBRF9JTklUKHZnYXNyX3ByaXYuY2xpZW50cyksCj4gPiArCS5kZGNfbG9jayA9IF9f TVVURVhfSU5JVElBTElaRVIodmdhc3JfcHJpdi5kZGNfbG9jayksCj4gPiAgfTsKPiA+ICAKPiA+ ICBzdGF0aWMgYm9vbCB2Z2Ffc3dpdGNoZXJvb19yZWFkeSh2b2lkKQo+ID4gQEAgLTIyMSwxMiAr MjM2LDE0IEBAIEVYUE9SVF9TWU1CT0wodmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfaGFuZGxlcik7 Cj4gPiAgdm9pZCB2Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVyX2hhbmRsZXIodm9pZCkKPiA+ICB7 Cj4gPiAgCW11dGV4X2xvY2soJnZnYXNyX211dGV4KTsKPiA+ICsJbXV0ZXhfbG9jaygmdmdhc3Jf cHJpdi5kZGNfbG9jayk7Cj4gPiAgCXZnYXNyX3ByaXYuaGFuZGxlciA9IE5VTEw7Cj4gPiAgCWlm ICh2Z2Fzcl9wcml2LmFjdGl2ZSkgewo+ID4gIAkJcHJfaW5mbygiZGlzYWJsZWRcbiIpOwo+ID4g IAkJdmdhX3N3aXRjaGVyb29fZGVidWdmc19maW5pKCZ2Z2Fzcl9wcml2KTsKPiA+ICAJCXZnYXNy X3ByaXYuYWN0aXZlID0gZmFsc2U7Cj4gPiAgCX0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9w cml2LmRkY19sb2NrKTsKPiA+ICAJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9tdXRleCk7Cj4gPiAgfQo+ ID4gIEVYUE9SVF9TWU1CT0wodmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9oYW5kbGVyKTsKPiA+ IEBAIC00MTIsNiArNDI5LDc2IEBAIHZvaWQgdmdhX3N3aXRjaGVyb29fY2xpZW50X2ZiX3NldChz dHJ1Y3QgcGNpX2RldiAqcGRldiwKPiA+ICBFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX2Ns aWVudF9mYl9zZXQpOwo+ID4gIAo+ID4gIC8qKgo+ID4gKyAqIHZnYV9zd2l0Y2hlcm9vX2xvY2tf ZGRjKCkgLSB0ZW1wb3JhcmlseSBzd2l0Y2ggRERDIGxpbmVzIHRvIGEgZ2l2ZW4gY2xpZW50Cj4g PiArICogQHBkZXY6IGNsaWVudCBwY2kgZGV2aWNlCj4gPiArICoKPiA+ICsgKiBUZW1wb3Jhcmls eSBzd2l0Y2ggRERDIGxpbmVzIHRvIHRoZSBjbGllbnQgaWRlbnRpZmllZCBieSBAcGRldgo+ID4g KyAqIChidXQgbGVhdmUgdGhlIG91dHB1dHMgb3RoZXJ3aXNlIHN3aXRjaGVkIHRvIHdoZXJlIHRo ZXkgYXJlKS4KPiA+ICsgKiBUaGlzIGFsbG93cyB0aGUgaW5hY3RpdmUgY2xpZW50IHRvIHByb2Jl IEVESUQuIFRoZSBEREMgbGluZXMgbXVzdAo+ID4gKyAqIGFmdGVyd2FyZHMgYmUgc3dpdGNoZWQg YmFjayBieSBjYWxsaW5nIHZnYV9zd2l0Y2hlcm9vX3VubG9ja19kZGMoKSwKPiA+ICsgKiBldmVu IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci4KPiA+ICsgKgo+ID4gKyAqIFJldHVy bjogUHJldmlvdXMgRERDIG93bmVyIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBpbnQgb24gZXJy b3IuCj4gPiArICogU3BlY2lmaWNhbGx5LCAtRU5PREVWIGlmIG5vIGhhbmRsZXIgaGFzIHJlZ2lz dGVyZWQgb3IgaWYgdGhlIGhhbmRsZXIKPiA+ICsgKiBkb2VzIG5vdCBzdXBwb3J0IHN3aXRjaGlu ZyB0aGUgRERDIGxpbmVzLiBBbHNvLCBhIG5lZ2F0aXZlIHZhbHVlCj4gPiArICogcmV0dXJuZWQg YnkgdGhlIGhhbmRsZXIgaXMgcHJvcGFnYXRlZCBiYWNrIHRvIHRoZSBjYWxsZXIuCj4gPiArICog VGhlIHJldHVybiB2YWx1ZSBoYXMgbWVyZWx5IGFuIGluZm9ybWF0aW9uYWwgcHVycG9zZSBmb3Ig YW55IGNhbGxlcgo+ID4gKyAqIHdoaWNoIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gaXQuIEl0IGlz IGFjY2VwdGFibGUgdG8gaWdub3JlIHRoZSByZXR1cm4KPiA+ICsgKiB2YWx1ZSBhbmQgc2ltcGx5 IHJlbHkgb24gdGhlIHJlc3VsdCBvZiB0aGUgc3Vic2VxdWVudCBFRElEIHByb2JlLAo+ID4gKyAq IHdoaWNoIHdpbGwgYmUgTlVMTCBpZiBEREMgc3dpdGNoaW5nIGZhaWxlZC4KPiA+ICsgKi8KPiA+ ICtpbnQgdmdhX3N3aXRjaGVyb29fbG9ja19kZGMoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gPiAr ewo+ID4gKwllbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBpZDsKPiA+ICsKPiA+ICsJbXV0 ZXhfbG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gPiArCWlmICghdmdhc3JfcHJpdi5oYW5k bGVyIHx8ICF2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMpIHsKPiA+ICsJCXZnYXNyX3By aXYub2xkX2RkY19vd25lciA9IC1FTk9ERVY7Cj4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICsJ fQo+ID4gKwo+ID4gKwlpZCA9IHZnYXNyX3ByaXYuaGFuZGxlci0+Z2V0X2NsaWVudF9pZChwZGV2 KTsKPiA+ICsJdmdhc3JfcHJpdi5vbGRfZGRjX293bmVyID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5z d2l0Y2hfZGRjKGlkKTsKPiA+ICsJcmV0dXJuIHZnYXNyX3ByaXYub2xkX2RkY19vd25lcjsKPiA+ ICt9Cj4gPiArRVhQT1JUX1NZTUJPTCh2Z2Ffc3dpdGNoZXJvb19sb2NrX2RkYyk7Cj4gPiArCj4g PiArLyoqCj4gPiArICogdmdhX3N3aXRjaGVyb29fdW5sb2NrX2RkYygpIC0gc3dpdGNoIEREQyBs aW5lcyBiYWNrIHRvIHByZXZpb3VzIG93bmVyCj4gPiArICogQHBkZXY6IGNsaWVudCBwY2kgZGV2 aWNlCj4gPiArICoKPiA+ICsgKiBTd2l0Y2ggRERDIGxpbmVzIGJhY2sgdG8gdGhlIHByZXZpb3Vz IG93bmVyIGFmdGVyIGNhbGxpbmcKPiA+ICsgKiB2Z2Ffc3dpdGNoZXJvb19sb2NrX2RkYygpLiBU aGlzIG11c3QgYmUgY2FsbGVkIGV2ZW4gaWYKPiA+ICsgKiB2Z2Ffc3dpdGNoZXJvb19sb2NrX2Rk YygpIHJldHVybmVkIGFuIGVycm9yLgo+ID4gKyAqCj4gPiArICogUmV0dXJuOiBQcmV2aW91cyBE REMgb3duZXIgb24gc3VjY2VzcyAoaS5lLiB0aGUgY2xpZW50IGlkZW50aWZpZXIgb2YgQHBkZXYp Cj4gPiArICogb3IgYSBuZWdhdGl2ZSBpbnQgb24gZXJyb3IuCj4gPiArICogU3BlY2lmaWNhbGx5 LCAtRU5PREVWIGlmIG5vIGhhbmRsZXIgaGFzIHJlZ2lzdGVyZWQgb3IgaWYgdGhlIGhhbmRsZXIK PiA+ICsgKiBkb2VzIG5vdCBzdXBwb3J0IHN3aXRjaGluZyB0aGUgRERDIGxpbmVzLiBBbHNvLCBh IG5lZ2F0aXZlIHZhbHVlCj4gPiArICogcmV0dXJuZWQgYnkgdGhlIGhhbmRsZXIgaXMgcHJvcGFn YXRlZCBiYWNrIHRvIHRoZSBjYWxsZXIuCj4gPiArICogRmluYWxseSwgaW52b2tpbmcgdGhpcyBm dW5jdGlvbiB3aXRob3V0IGNhbGxpbmcgdmdhX3N3aXRjaGVyb29fbG9ja19kZGMoKQo+ID4gKyAq IGZpcnN0IGlzIG5vdCBhbGxvd2VkIGFuZCB3aWxsIHJlc3VsdCBpbiAtRUlOVkFMLgo+ID4gKyAq Lwo+ID4gK2ludCB2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQo+ID4gK3sKPiA+ICsJZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgaWQ7Cj4gPiArCWlu dCByZXQgPSB2Z2Fzcl9wcml2Lm9sZF9kZGNfb3duZXI7Cj4gPiArCj4gPiArCWlmIChXQVJOX09O X09OQ0UoIW11dGV4X2lzX2xvY2tlZCgmdmdhc3JfcHJpdi5kZGNfbG9jaykpKQo+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArCWlmICh2Z2Fzcl9wcml2Lm9sZF9kZGNfb3duZXIgPj0g MCkgewo+ID4gKwkJaWQgPSB2Z2Fzcl9wcml2LmhhbmRsZXItPmdldF9jbGllbnRfaWQocGRldik7 Cj4gPiArCQlpZiAodmdhc3JfcHJpdi5vbGRfZGRjX293bmVyICE9IGlkKQo+ID4gKwkJCXJldCA9 IHZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNoX2RkYygKPiA+ICsJCQkJCQkgICAgIHZnYXNyX3By aXYub2xkX2RkY19vd25lcik7Cj4gPiArCX0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9wcml2 LmRkY19sb2NrKTsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTCh2 Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKTsKPiA+ICsKPiA+ICsvKioKPiA+ICAgKiBET0M6IE1h bnVhbCBzd2l0Y2hpbmcgYW5kIG1hbnVhbCBwb3dlciBjb250cm9sCj4gPiAgICoKPiA+ICAgKiBJ biB0aGlzIG1vZGUgb2YgdXNlLCB0aGUgZmlsZSAvc3lzL2tlcm5lbC9kZWJ1Zy92Z2Fzd2l0Y2hl cm9vL3N3aXRjaAo+ID4gQEAgLTU0OCw3ICs2MzUsOSBAQCBzdGF0aWMgaW50IHZnYV9zd2l0Y2h0 b19zdGFnZTIoc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudCAqbmV3X2NsaWVudCkKPiA+ICAJ CWNvbnNvbGVfdW5sb2NrKCk7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJbXV0ZXhfbG9jaygmdmdhc3Jf cHJpdi5kZGNfbG9jayk7Cj4gPiAgCXJldCA9IHZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNodG8o bmV3X2NsaWVudC0+aWQpOwo+ID4gKwltdXRleF91bmxvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2sp Owo+ID4gIAlpZiAocmV0KQo+ID4gIAkJcmV0dXJuIHJldDsKPiA+ICAKPiA+IEBAIC02NjMsNyAr NzUyLDkgQEAgdmdhX3N3aXRjaGVyb29fZGVidWdmc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwg Y29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gPiAgCXZnYXNyX3ByaXYuZGVsYXllZF9zd2l0Y2hf YWN0aXZlID0gZmFsc2U7Cj4gPiAgCj4gPiAgCWlmIChqdXN0X211eCkgewo+ID4gKwkJbXV0ZXhf bG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gPiAgCQlyZXQgPSB2Z2Fzcl9wcml2LmhhbmRs ZXItPnN3aXRjaHRvKGNsaWVudF9pZCk7Cj4gPiArCQltdXRleF91bmxvY2soJnZnYXNyX3ByaXYu ZGRjX2xvY2spOwo+ID4gIAkJZ290byBvdXQ7Cj4gPiAgCX0KPiA+ICAKPiA+IEBAIC04NzUsOCAr OTY2LDExIEBAIHN0YXRpYyBpbnQgdmdhX3N3aXRjaGVyb29fcnVudGltZV9zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldikKPiA+ICAJaWYgKHJldCkKPiA+ICAJCXJldHVybiByZXQ7Cj4gPiAgCW11 dGV4X2xvY2soJnZnYXNyX211dGV4KTsKPiA+IC0JaWYgKHZnYXNyX3ByaXYuaGFuZGxlci0+c3dp dGNodG8pCj4gPiArCWlmICh2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaHRvKSB7Cj4gPiArCQlt dXRleF9sb2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2NrKTsKPiA+ICAJCXZnYXNyX3ByaXYuaGFuZGxl ci0+c3dpdGNodG8oVkdBX1NXSVRDSEVST09fSUdEKTsKPiA+ICsJCW11dGV4X3VubG9jaygmdmdh c3JfcHJpdi5kZGNfbG9jayk7Cj4gPiArCX0KPiA+ICAJdmdhX3N3aXRjaGVyb29fcG93ZXJfc3dp dGNoKHBkZXYsIFZHQV9TV0lUQ0hFUk9PX09GRik7Cj4gPiAgCW11dGV4X3VubG9jaygmdmdhc3Jf bXV0ZXgpOwo+ID4gIAlyZXR1cm4gMDsKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Zn YV9zd2l0Y2hlcm9vLmggYi9pbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmgKPiA+IGluZGV4 IGIyYTNkZGEuLjZlZGFhY2MgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3ZnYV9zd2l0 Y2hlcm9vLmgKPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaAo+ID4gQEAg LTgyLDYgKzgyLDkgQEAgZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgewo+ID4gICAqIAlN YW5kYXRvcnkuIEZvciBtdXhsZXNzIG1hY2hpbmVzIHRoaXMgc2hvdWxkIGJlIGEgbm8tb3AuIFJl dHVybmluZyAwCj4gPiAgICogCWRlbm90ZXMgc3VjY2VzcywgYW55dGhpbmcgZWxzZSBmYWlsdXJl IChpbiB3aGljaCBjYXNlIHRoZSBzd2l0Y2ggaXMKPiA+ICAgKiAJYWJvcnRlZCkKPiA+ICsgKiBA c3dpdGNoX2RkYzogc3dpdGNoIEREQyBsaW5lcyB0byBnaXZlbiBjbGllbnQuCj4gPiArICogCU9w dGlvbmFsLiBTaG91bGQgcmV0dXJuIHRoZSBwcmV2aW91cyBEREMgb3duZXIgb24gc3VjY2VzcyBv ciBhCj4gPiArICogCW5lZ2F0aXZlIGludCBvbiBmYWlsdXJlCj4gPiAgICogQHBvd2VyX3N0YXRl OiBjdXQgb3IgcmVpbnN0YXRlIHBvd2VyIG9mIGdpdmVuIGNsaWVudC4KPiA+ICAgKiAJT3B0aW9u YWwuIFRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZAo+ID4gICAqIEBnZXRfY2xpZW50X2lkOiBk ZXRlcm1pbmUgaWYgZ2l2ZW4gcGNpIGRldmljZSBpcyBpbnRlZ3JhdGVkIG9yIGRpc2NyZXRlIEdQ VS4KPiA+IEBAIC05Myw2ICs5Niw3IEBAIGVudW0gdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkIHsK PiA+ICBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciB7Cj4gPiAgCWludCAoKmluaXQpKHZv aWQpOwo+ID4gIAlpbnQgKCpzd2l0Y2h0bykoZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQg aWQpOwo+ID4gKwlpbnQgKCpzd2l0Y2hfZGRjKShlbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9p ZCBpZCk7Cj4gPiAgCWludCAoKnBvd2VyX3N0YXRlKShlbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVu dF9pZCBpZCwKPiA+ICAJCQkgICBlbnVtIHZnYV9zd2l0Y2hlcm9vX3N0YXRlIHN0YXRlKTsKPiA+ ICAJZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgKCpnZXRfY2xpZW50X2lkKShzdHJ1Y3Qg cGNpX2RldiAqcGRldik7Cj4gPiBAQCAtMTMyLDYgKzEzNiw5IEBAIGludCB2Z2Ffc3dpdGNoZXJv b19yZWdpc3Rlcl9hdWRpb19jbGllbnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gPiAgdm9pZCB2 Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KHN0cnVjdCBwY2lfZGV2ICpkZXYsCj4gPiAgCQkJ CSAgc3RydWN0IGZiX2luZm8gKmluZm8pOwo+ID4gIAo+ID4gK2ludCB2Z2Ffc3dpdGNoZXJvb19s b2NrX2RkYyhzdHJ1Y3QgcGNpX2RldiAqcGRldik7Cj4gPiAraW50IHZnYV9zd2l0Y2hlcm9vX3Vu bG9ja19kZGMoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwo+ID4gKwo+ID4gIGludCB2Z2Ffc3dpdGNo ZXJvb19yZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19oYW5kbGVyICpoYW5k bGVyKTsKPiA+ICB2b2lkIHZnYV9zd2l0Y2hlcm9vX3VucmVnaXN0ZXJfaGFuZGxlcih2b2lkKTsK PiA+ICAKPiA+IEBAIC0xNTAsNiArMTU3LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHZnYV9zd2l0 Y2hlcm9vX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBwY2lfZGV2ICpkZXYpIHt9Cj4gPiAgc3Rh dGljIGlubGluZSBpbnQgdmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBwY2lf ZGV2ICpkZXYsCj4gPiAgCQljb25zdCBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyAq b3BzLCBib29sIGRyaXZlcl9wb3dlcl9jb250cm9sKSB7IHJldHVybiAwOyB9Cj4gPiAgc3RhdGlj IGlubGluZSB2b2lkIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9mYl9zZXQoc3RydWN0IHBjaV9kZXYg KmRldiwgc3RydWN0IGZiX2luZm8gKmluZm8pIHt9Cj4gPiArc3RhdGljIGlubGluZSBpbnQgdmdh X3N3aXRjaGVyb29fbG9ja19kZGMoc3RydWN0IHBjaV9kZXYgKnBkZXYpIHsgcmV0dXJuIC1FTk9E RVY7IH0KPiA+ICtzdGF0aWMgaW5saW5lIGludCB2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKHN0 cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJldHVybiAtRU5PREVWOyB9Cj4gPiAgc3RhdGljIGlubGlu ZSBpbnQgdmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfaGFuZGxlcihzdHJ1Y3QgdmdhX3N3aXRjaGVy b29faGFuZGxlciAqaGFuZGxlcikgeyByZXR1cm4gMDsgfQo+ID4gIHN0YXRpYyBpbmxpbmUgaW50 IHZnYV9zd2l0Y2hlcm9vX3JlZ2lzdGVyX2F1ZGlvX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqcGRl diwKPiA+ICAJY29uc3Qgc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9vcHMgKm9wcywKPiA+ IC0tIAo+ID4gMS44LjUuMiAoQXBwbGUgR2l0LTQ4KQo+ID4gCj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlz dAo+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+IAo+IC0tIAo+IERhbmll bCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=