From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 00/21] drm/dp: Various helper improvements and cleanups Date: Tue, 8 Oct 2019 11:42:08 +0200 Message-ID: <20191008094208.GH16989@phenom.ffwll.local> References: <20190902113121.31323-1-thierry.reding@gmail.com> <20190920160004.GE10973@ulmo> <87sgont8zx.fsf@intel.com> <20190923145202.GA21884@ulmo> <20191002161419.GA225899@ulmo> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 60CB56E2D5 for ; Tue, 8 Oct 2019 09:42:13 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id c4so15069131edl.0 for ; Tue, 08 Oct 2019 02:42:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20191002161419.GA225899@ulmo> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Thierry Reding Cc: David Airlie , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Harry Wentland List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMDIsIDIwMTkgYXQgMDY6MTQ6MTlQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gT24gTW9uLCBTZXAgMjMsIDIwMTkgYXQgMDQ6NTI6MDJQTSArMDIwMCwgVGhpZXJy eSBSZWRpbmcgd3JvdGU6Cj4gPiBPbiBNb24sIFNlcCAyMywgMjAxOSBhdCAwNDo1Mjo1MFBNICsw MzAwLCBKYW5pIE5pa3VsYSB3cm90ZToKPiA+ID4gT24gRnJpLCAyMCBTZXAgMjAxOSwgVGhpZXJy eSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gT24gTW9u LCBTZXAgMDIsIDIwMTkgYXQgMDE6MzE6MDBQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6 Cj4gPiA+ID4+IEZyb206IFRoaWVycnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gPiA+ ID4+IAo+ID4gPiA+PiBIaSwKPiA+ID4gPj4gCj4gPiA+ID4+IHRoaXMgc2VyaWVzIG9mIHBhdGNo ZXMgaW1wcm92ZXMgdGhlIERQIGhlbHBlcnMgYSBiaXQgYW5kIGNsZWFucyB1cCBzb21lCj4gPiA+ ID4+IGluY29uc2lzdGVuY2llcyBhbG9uZyB0aGUgd2F5Lgo+ID4gPiA+PiAKPiA+ID4gPj4gdjIg aW5jb3Jwb3JhdGVzIGFsbCByZXZpZXcgY29tbWVudHMgYWRkIGNvbGxlY3RzIFJldmlld2VkLWJ5 cyBmcm9tIHYxLgo+ID4gPiA+PiAKPiA+ID4gPj4gVGhpZXJyeQo+ID4gPiA+PiAKPiA+ID4gPj4g VGhpZXJyeSBSZWRpbmcgKDIxKToKPiA+ID4gPj4gICBkcm0vZHA6IFNvcnQgaW5jbHVkZXMgYWxw aGFiZXRpY2FsbHkKPiA+ID4gPj4gICBkcm0vZHA6IEFkZCBtaXNzaW5nIGtlcm5lbGRvYyBmb3Ig c3RydWN0IGRybV9kcF9saW5rCj4gPiA+ID4+ICAgZHJtL2RwOiBBZGQgZHJtX2RwX2xpbmtfcmVz ZXQoKSBpbXBsZW1lbnRhdGlvbgo+ID4gPiA+PiAgIGRybS9kcDogVHJhY2sgbGluayBjYXBhYmls aXRpZXMgYWxvbmdzaWRlIHNldHRpbmdzCj4gPiA+ID4+ICAgZHJtL2RwOiBUdXJuIGxpbmsgY2Fw YWJpbGl0aWVzIGludG8gYm9vbGVhbnMKPiA+ID4gPj4gICBkcm0vZHA6IFByb2JlIGxpbmsgdXNp bmcgZXhpc3RpbmcgcGFyc2luZyBoZWxwZXJzCj4gPiA+ID4+ICAgZHJtL2RwOiBSZWFkIGZhc3Qg dHJhaW5pbmcgY2FwYWJpbGl0eSBmcm9tIGxpbmsKPiA+ID4gPj4gICBkcm0vZHA6IFJlYWQgVFBT MyBjYXBhYmlsaXR5IGZyb20gc2luawo+ID4gPiA+PiAgIGRybS9kcDogUmVhZCBjaGFubmVsIGNv ZGluZyBjYXBhYmlsaXR5IGZyb20gc2luawo+ID4gPiA+PiAgIGRybS9kcDogUmVhZCBhbHRlcm5h dGUgc2NyYW1ibGVyIHJlc2V0IGNhcGFiaWxpdHkgZnJvbSBzaW5rCj4gPiA+ID4+ICAgZHJtL2Rw OiBSZWFkIGVEUCB2ZXJzaW9uIGZyb20gRFBDRAo+ID4gPiA+PiAgIGRybS9kcDogUmVhZCBBVVgg cmVhZCBpbnRlcnZhbCBmcm9tIERQQ0QKPiA+ID4gPj4gICBkcm0vZHA6IERvIG5vdCBidXN5LWxv b3AgZHVyaW5nIGxpbmsgdHJhaW5pbmcKPiA+ID4gPj4gICBkcm0vZHA6IFVzZSBkcm1fZHBfYXV4 X3JkX2ludGVydmFsKCkKPiA+ID4gPj4gICBkcm0vZHA6IEFkZCBoZWxwZXIgdG8gZ2V0IHBvc3Qt Y3Vyc29yIGFkanVzdG1lbnRzCj4gPiA+ID4+ICAgZHJtL2RwOiBTZXQgY2hhbm5lbCBjb2Rpbmcg b24gbGluayBjb25maWd1cmF0aW9uCj4gPiA+ID4+ICAgZHJtL2RwOiBFbmFibGUgYWx0ZXJuYXRl IHNjcmFtYmxlciByZXNldCB3aGVuIHN1cHBvcnRlZAo+ID4gPiA+PiAgIGRybS9kcDogQWRkIGRy bV9kcF9saW5rX2Nob29zZSgpIGhlbHBlcgo+ID4gPiA+PiAgIGRybS9kcDogQWRkIHN1cHBvcnQg Zm9yIGVEUCBsaW5rIHJhdGVzCj4gPiA+ID4+ICAgZHJtL2RwOiBSZW1vdmUgYSBncmF0dWl0dW91 cyBibGFuayBsaW5lCj4gPiA+ID4+ICAgZHJtL2JyaWRnZTogdGMzNTg3Njc6IFVzZSBEUCBub21l bmNsYXR1cmUKPiA+ID4gPgo+ID4gPiA+IEFueW9uZSBpbnRlcmVzdGVkIGluIHJldmlld2luZyB0 aGVzZT8KPiA+ID4gCj4gPiA+IFRoaWVycnksIEkgZG9uJ3QgcXVpdGUga25vdyBob3cgdG8gcHV0 IHRoaXMgbmljZWx5LCBidXQgSSBhbHNvIGRvbid0Cj4gPiA+IHRoaW5rIGl0J3MgbmljZSB0byBu b3QgcmVwbHkgYXQgYWxsLiBTbyBJJ2xsIHRyeSB0byBiZSBmYWlyIGJ1dCBpdCdsbCBiZQo+ID4g PiBibHVudC4gRmFpciBlbm91Z2g/Cj4gPiAKPiA+IEZhaXIgZW5vdWdoLgo+ID4gCj4gPiA+IEkn dmUgZ2xhbmNlZCBvdmVyIHRoZSBzZXJpZXMsIGFscmVhZHkgYmVmb3JlIHlvdSBwaW5nZWQgZm9y IHJldmlld3MuIEl0Cj4gPiA+IGxvb2tzIGxpa2UgeW91J3ZlIHB1dCBlZmZvcnQgaW50byBpdCwg YW5kIGl0IGFsbCBsb29rcyBuaWNlLiBIb3dldmVyLCBpdAo+ID4gPiBkb2VzIG5vdCBsb29rIGxp a2Ugd2UgY291bGQgdXNlIHRoaXMgaW4gaTkxNSwgd2l0aG91dCBzaWduaWZpY2FudCBlZmZvcnQK PiA+ID4gYm90aCBvbiB0b3Agb2YgdGhpcyB3b3JrIGFuZCBpbiBpOTE1LiBJdCBkb2VzIG5vdCBm ZWVsIGxpa2UgdGhlcmUncyBhbnkKPiA+ID4gaW5jZW50aXZlIGZvciB1cyB0byByZXZpZXcgdGhp cyBpbiBkZXRhaWwuCj4gPiA+IAo+ID4gPiBJdCBhbHNvIGZlZWxzIGxpa2UgdGhlcmUncyBhbiBp bmNyZWFzaW5nIGRpc2Nvbm5lY3QgYmV0d2VlbiAic21hbGwiIGFuZAo+ID4gPiAiYmlnIiBkcml2 ZXJzICgqKSB3aGVuIGl0IGNvbWVzIHRvIGhhbmRsaW5nIERQIGxpbmsgYW5kIHRyYWluaW5nLiBJ dAo+ID4gPiBzY2FyZXMgbWUgYSBiaXQgdGhhdCB0aGlzIHdvcmsgaXMgYmVpbmcgZG9uZSBvbiB0 aGUgdGVybXMgb2YgdGhlICJzbWFsbCIKPiA+ID4gZHJpdmVycywgYW5kIHRoYXQgbGF0ZXIgaW4g dGltZSB0aGlzIG1pZ2h0IGJlIGNvbnNpZGVyZWQgdGhlIE9uZSBUcnVlCj4gPiA+IFdheSBvZiBo YW5kbGluZyBEUC4KPiA+IAo+ID4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB5b3VyIGNvbmNl cm4gaGVyZS4gVGhlIGdvYWwgb2YgdGhlIHNlcmllcyBpcwo+ID4gcHJpbWFyaWx5IHRvIGV4dGVu ZCB0aGUgZXhpc3Rpbmcgc3VwcG9ydCBmb3IgRFAuIEl0IGZvbGxvd3MgdGhlIHBhdHRlcm4KPiA+ IGVzdGFibGlzaGVkIGJ5IGV4aXN0aW5nIGhlbHBlcnMgYW5kIHRoZW4gZ29lcyBvbmUgc3RlcCBm dXJ0aGVyIGFuZAo+ID4gcHJvdmlkZXMgc29tZSBjb21tb24gd2F5IG9mIGFjdHVhbGx5IHN0b3Jp bmcgdGhlIHZhbHVlcyB0aGF0IGFyZSBiZWluZwo+ID4gcmVhZCBmcm9tIHRoZSBzaW5rIHNvIHRo YXQgdGhleSBjYW4gYmUgdXNlZC4KPiA+IAo+ID4gVGhlc2UgYXJlIG1lYW50IHRvIGJlIGhlbHBl cnMgYW5kIGluIG5vIHdheSBzaG91bGQgYW55b25lIGZlZWwgb2JsaWdlZAo+ID4gdG8gdXNlIHRo ZW0uIElmIHlvdSd2ZSBnb3QgdGhpcyBhbGwgZmlndXJlZCBvdXQgYWxyZWFkeSwgZ3JlYXQhIElm IHlvdQo+ID4gZG8gdGhpcyBhbHJlYWR5IG11Y2ggYmV0dGVyIGluIGk5MTUsIGJ5IGFsbCBtZWFu cyBzdGF5IGF3YXkgZnJvbSB0aGlzLgo+ID4gCj4gPiBBdCB0aGUgc2FtZSB0aW1lIGl0IHNlZW1z IGNvdW50ZXItcHJvZHVjdGl2ZSB0byB3cml0ZSBhbGwgb2YgdGhpcyBjb2RlCj4gPiBhcyBwYXJ0 IG9mIHRoZSBUZWdyYSBEUk0gZHJpdmVyLiBJbiBteSBvcGluaW9uIHN1YnN5c3RlbXMgc2hvdWxk IHByb3ZpZGUKPiA+IGdlbmVyaWMgaGVscGVycyB0aGF0IGNhbiBoZWxwIG11bHRpcGxlIGRyaXZl cnMgc2hhcmUgY29kZS4gVGhpcyBpcwo+ID4gZXNwZWNpYWxseSB0cnVlIGZvciB0aGluZ3MgdGhh dCBhcmUgZGVmaW5lZCBpbiBhIHNwZWNpZmljYXRpb24gYmVjYXVzZQo+ID4gdGhlcmUncyBub3Qg YSBsb3Qgb2Ygcm9vbSBmb3IgaW50ZXJwcmV0YXRpb24uIFRoZSBoZWxwZXJzIGluIHRoZXNlCj4g PiBwYXRjaGVzIGFyZSBtZWFudCB0byBiZSB0aGF0IGtpbmQgb2YgaGVscGVycy4KPiA+IAo+ID4g PiBPbmUgb2YgdGhlIHRlY2huaWNhbCBvYnNlcnZhdGlvbnMgaXMgdGhhdCB5b3UgZmlsbCB0aGUg c3RydWN0Cj4gPiA+IGRybV9kcF9saW5rIGFuZCBzdHJ1Y3QgZHJtX2RwX2xpbmtfY2FwcyBmcm9t IHRoZSBzaW5rLiBJdCdzIG5vdCBjbGVhcgo+ID4gPiB0aGF0IHRoZSBsaW5rIGNhcHMgcmVhbGx5 IGFyZSBhbiBpbnRlcnNlY3Rpb24gb2YgdGhlIHNvdXJjZSBhbmQgc2luawo+ID4gPiBjYXBzLiBU aGUgZURQIDEuNCBsaW5rIHJhdGVzIGFyZSB0aGUgcHJpbWUgZXhhbXBsZS4gSSB0aGluayB5b3Ug c2hvdWxkCj4gPiA+IGhhdmUgc2V0cyBvZiBzb3VyY2UgYW5kIHNpbmsgcmF0ZXMsIGFuZCB5b3Ug c2hvdWxkIGludGVyc2VjdCB0aG9zZSB0bwo+ID4gPiBmaW5kIG91dCB0aGUgYXZhaWxhYmxlIGxp bmsgcmF0ZXMuIFRoZSBtYXggcmF0ZSBpcyB0aGUgaGlnaGVzdCBudW1iZXIgaW4KPiA+ID4gdGhh dCBzZXQuIFNpbWlsYXJseSBmb3IgbWFueSB0aGluZ3MsIGxpa2UgdHJhaW5pbmcgcGF0dGVybiBz dXBwb3J0LiBJCj4gPiA+IHRoaW5rIGl0J3Mgb25seSBnb2luZyB0byBnZXQgbW9yZSBjb21wbGlj YXRlZCB3aXRoIERQIDIuMC4KPiA+IAo+ID4gVGhlIGlkZWEgaGVyZSB3YXMgdG8gcHJvdmlkZSBv bmx5IGhlbHBlcnMgdG8gY29sbGVjdCB0aGUgRFBDRCBkYXRhCj4gPiBkZWZpbmVkIGJ5IHRoZSBz cGVjaWZpY2F0aW9uLiBBbnl0aGluZyBzcGVjaWZpYyB0byB0aGUgc291cmNlIGlzIG1lYW50Cj4g PiB0byBiZSBoYW5kbGVkIGJ5IGRpc3BsYXkgZHJpdmVyLiBJbiBjYXNlIG9mIGVEUCAxLjQgbGlu ayByYXRlcyB0aGUgY29kZQo+ID4gd2lsbCBvbmx5IGFkZCB0aGUgcmF0ZXMgcmVhZCBmcm9tIERQ Q0QuIEl0J3MgdXAgdG8gdGhlIGRyaXZlciB0byBmaWx0ZXIKPiA+IG91dCByYXRlcyB0aGF0IGl0 IGRvZXNuJ3Qgc3VwcG9ydCBmcm9tIHRoYXQgbGlzdC4KPiA+IAo+ID4gSSB0aGluayB0aGUgZmFj dCB0aGF0IHRoaW5ncyB3aWxsIGtlZXAgZ2V0dGluZyBtb3JlIGNvbXBsaWNhdGVkIGlzIGFuCj4g PiBhcmd1bWVudCBpbiBmYXZvdXIgb2Ygc2hhcmluZyBjb2RlIHJhdGhlciB0aGFuIGtlZXAgZG9p bmcgdGhlIHNhbWUKPiA+IChjb21wbGljYXRlZCkgdGhpbmcgb3ZlciBhbmQgb3ZlciBhZ2FpbiBp biBldmVyeSBkcml2ZXIuCj4gPiAKPiA+ID4gQW5vdGhlciBwYWluIHBvaW50IGlzIHRoZSBjYWNo aW5nIG9mIHRoZSBjYXBzIGFzIGJpdHMgaW4KPiA+ID4gZHJtX2RwX2xpbmtfY2Fwcy4gSG93IGZh ciBhcmUgeW91IGdvaW5nIHRvIHRha2UgaXQ/IFRoZXJlJ3MgYW4gaW5zYW5lCj4gPiA+IGFuZCBn cm93aW5nIGFtb3VudCBvZiB0aGluZ3MgaW4gdGhlIERQQ0QgdGhhdCBkZXNjcmliZSB0aGUgbGlu ayBpbiBvbmUKPiA+ID4gd2F5IG9yIGFub3RoZXIuIFNob3VsZCB0aGV5IGFsbCBiZSBhZGRlZCB0 byBjYXBzPyBXaGVyZSBkbyB5b3UgZHJhdyB0aGUKPiA+ID4gbGluZT8gRG8gd2UgYWRkIGJvdGgg dGhlIGJpdCBhbmQgdGhlIGhlbHBlciBmb3IgZ2V0dGluZyB0aGF0IGJpdCBmcm9tCj4gPiA+IHRo ZSBEUENEPyBBbmQgYXJlIHlvdSB0aGVuIGdvaW5nIHRvIGFkZCBzdXBwb3J0IGZvciBpbnRlcnNl Y3RpbmcgYWxsCj4gPiA+IHRob3NlIGNhcCBiaXRzIGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgdGhl IHNpbms/Cj4gPiAKPiA+IExpa2UgSSBzYWlkIHRoZSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byBo YXZlIGNvbW1vbiBjb2RlIHRvIHJlYWQgdGhlCj4gPiBjb21tb24gdmFsdWVzIGZyb20gRFBDRC4g T25jZSB0aGUgbGluayBoYXMgYmVlbiAicHJvYmVkIiBpdCBpcyB1cCB0byB0aGUKPiA+IGRyaXZl ciB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoYXQgZGF0YS4KPiA+IAo+ID4gT3JpZ2lu YWxseSBJIGhhZCBpbnRlbmRlZCB0aGlzIHNoYXJlZCBjb2RlIHRvIGRvIG11Y2ggbW9yZSwgYnV0 IHRoaXMgd2FzCj4gPiBzaG90IGRvd24gZHVyaW5nIHJldmlldyAoSSB0aGluayBieSBEYW5pZWwg YW5kIHlvdXJzZWxmKSBmb3IgbWFueSBvZiB0aGUKPiA+IHNhbWUgcmVhc29ucyB0aGF0IHlvdSdy ZSBwb2ludGluZyBvdXQuIEluaXRpYWxseSB0aGVyZSB3YXMgY29kZSBpbiB0aGlzCj4gPiBzZXJp ZXMgdG8gc3RhbmRhcmRpemUgdGhlIGxpbmsgdHJhaW5pbmcgc2VxdWVuY2UsIGZvciBleGFtcGxl LiBUaGlzIHdhcwo+ID4gYWxsIHN0cmljdGx5IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlv biwgc28gSSB0aG91Z2h0IHRoYXQgd291bGQKPiA+IGdpdmUgdXMgZW5vdWdoIGNvbW1vbiBncm91 bmQgZm9yIHNoYXJlZCBjb2RlLiBCdXQgeW91IGd1eXMgZGlkbid0IGFncmVlLAo+ID4gc28gSSd2 ZSBtb3ZlZCB0aGF0IG91dCBpbnRvIFRlZ3JhIHNwZWNpZmljIHBhdGNoZXMgc2luY2UgdGhlbi4K PiA+IAo+ID4gQXMgZm9yIGhvdyBmYXIgdG8gdGFrZSB0aGlzLCBJIHRoaW5rIHRoZSBtb3N0IHNl bnNpYmxlIGlzIHRvIGRvIHdoYXQgd2UKPiA+IGRvIGV2ZXJ5d2hlcmUgZWxzZS4gV2UgYWRkIHRv IHRoaXMgd2hhdGV2ZXIgaXMgbmVlZGVkIG9uIGFuIG9uLWRlbWFuZAo+ID4gYmFzaXMuIFRoZSBj dXJyZW50IHNlcmllcyBoZXJlIGFkZHMgd2hhdCBJIGZvdW5kIHRvIGJlIG5lY2Vzc2FyeSB0bwo+ ID4gc3VwcG9ydCBEUCBvbiBUZWdyYS4gVGhlcmUncyBub3QgYSBsb3Qgb2YgZmFuY3kgc3R1ZmYg aGVyZSwgSSBrbm93LCBidXQKPiA+IHRoYXQgZG9lc24ndCBtZWFuIHRoaXMgY29kZSBpcyB1c2Vs ZXNzIGZvciBldmVyeW9uZSBlbHNlLgo+ID4gCj4gPiBTbywgY2FuIGk5MTUgdXNlIHRoaXM/IFBy b2JhYmx5IHllcy4gV291bGQgdGhhdCBiZSBhIGdvb2QgaWRlYT8gUHJvYmFibHkKPiA+IG5vdC4g QW5kIHRoYXQncyBwZXJmZWN0bHkgZmluZS4gQnV0IEkgY291bGQgaW1hZ2luZSB0aGF0IG90aGVy cyBtYXkgdmVyeQo+ID4gd2VsbCB3YW50IHRvIHVzZSBzb21lIHNoYXJlZCBjb2RlIHRvIGF2b2lk IGhhdmluZyB0byBjb3B5L3Bhc3RlIGNvZGUgYW5kCj4gPiB0aGVuIGxhdGVyIGZpeCB1cCBjYXJn by1jdWx0ZWQgYnVncyBpbiBldmVyeSBkcml2ZXIuCj4gPiAKPiA+IEknbSBhbHNvIGZ1bGx5IGF3 YXJlIHRoYXQgdGhpcyBpcyBub3QgYSBsb3QgYW5kIGl0IG1heSBub3QgYmUgcGVyZmVjdC4KPiA+ IEJ1dCBtb3N0IGhlbHBlcnMgYXJlbid0IGluaXRpYWxseS4gVGhlIHBvaW50IGhlcmUgaXMgdG8g c3RhcnQgY29sbGVjdGluZwo+ID4gdGhlIGNvbW1vbiBiaXRzIGluIG9uZSBsb2NhdGlvbiBhbmQg ZXZvbHZlIHRoZW0sIGp1c3QgbGlrZSB3ZSBkbyBmb3Igc28KPiA+IG1hbnkgb3RoZXIgaGVscGVy cy4KPiA+IAo+ID4gTm90ZSBhbHNvIHRoYXQgSSBoYXZlbid0IG1hZGUgYW55IGF0dGVtcHQgaGVy ZSB0byBjb252ZXJ0IGFueSBkcml2ZXJzIHRvCj4gPiB0aGVzZSBoZWxwZXJzLiBUaGF0J3MgYmVj YXVzZSB0aGVzZSBhcmUgbWVhbnQgdG8gYmUgb3B0LWluIHRvIHNpbXBsaWZ5Cj4gPiBkcml2ZXJz LiBJZiB5b3Ugd2FudCB0byBkbyBldmVyeXRoaW5nIHlvdXJzZWxmLCBmZWVsIGZyZWUgdG8gZG8g dGhhdC4gSXQKPiA+IGlzIHBlcmZlY3RseSBsZWdpdCB0byBkbyBldmVyeXRoaW5nIHlvdXJzZWxm IGlmIHRoZXNlIGhlbHBlcnMgYXJlbid0Cj4gPiBmbGV4aWJsZSBlbm91Z2ggdG8gZG8gd2hhdCB5 b3Ugd2FudC4gVGhlIGJldHRlciBvcHRpb24gd291bGQgYmUgdG8gaGVscAo+ID4gaW1wcm92ZSB0 aGUgaGVscGVycyB0byBtYWtlIHRoZW0gd29yayBmb3IgYSB3aWRlciByYW5nZSBvZiBkcml2ZXJz LCBidXQKPiA+IGlmIHlvdSBkb24ndCB3YW50IHRvLCB0aGVuIGRvbid0Lgo+ID4gCj4gPiA+IE92 ZXJhbGwgSSB0aGluayB0aGVyZSBpcyB2YWx1ZSBpbiB1bmlmeWluZyBob3cgd2UgaGFuZGxlIERQ IGluIGRybS4gRXZlbgo+ID4gPiBpZiBqdXN0IGJ5IHByb3ZpZGluZyBoZWxwZXJzIHRvIHNpbXBs aWZ5IHRoaW5ncyBpbiBkcml2ZXJzLiBJdCdzIGp1c3QKPiA+ID4gdGhhdCBJIGZlZWwgdGhpcyBz ZXJpZXMgaXNuJ3QgdGFraW5nIHVzIGNsb3NlciB0byB0aGF0IGdvYWwsIGV4Y2VwdCBmb3IKPiA+ ID4gYSBzdWJzZXQgb2YgZHJpdmVycy4gSW4gdGhlIGJpZyBwaWN0dXJlLCBpdCBtYXkgYmUgaW5j cmVhc2luZyB0aGUKPiA+ID4gZGl2aWRlLgo+ID4gCj4gPiBTbyB0aGUgYnVsayBvZiB0aGlzIHNl cmllcyBpcyBzdHVmZiB0aGF0J3MgcHVyZWx5IHBhcnNpbmcgdmFsdWVzIGZyb20KPiA+IERQQ0Qs IHdoaWNoIGlzIHZlcnkgbXVjaCBpbiBsaW5lIHdpdGggZXhpc3RpbmcgaGVscGVycy4gSSBkb24n dCB0aGluawo+ID4gdGhvc2UgYXJlIGluIGFueSB3YXkgY29udGVudGlvdXMuIFRoZXJlJ3MgYWxz byBhIGJpdCBvZiBjbGVhbnVwIGhlcmUKPiA+IHdoZXJlIG5ldyBoZWxwZXJzIGFyZSB1c2VkIHRv IHNpbXBsaWZ5IGV4aXN0aW5nIG9uZXMuIE1heWJlIGEgaGFuZGZ1bAo+ID4gb2YgdGhlc2UgcGF0 Y2hlcyBhcmUgd2hhdCB5b3UgY2xhaW0gbWlnaHQgYmUgImluY3JlYXNpbmcgdGhlIGRpdmlkZSIu Cj4gPiAKPiA+IEJ1dCBJIHJlYWxseSBkb24ndCB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaXMgY29t aW5nIGZyb20uIGk5MTUgZG9lc24ndAo+ID4gdXNlIGEgbXlyaWFkIG9mIHRoZSBvdGhlciBoZWxw ZXJzIChUVE0sIENNQSwgc2ltcGxlIEtNUywgLi4uKSBhbmQgeWV0Cj4gPiB0aGVzZSBhcmUgbm90 IGluY3JlYXNpbmcgYW55IGRpdmlkZSwgYXJlIHRoZXk/IFdoeSBkbyB5b3UgdGhpbmsgdGhlc2UK PiA+IGhlbHBlcnMgaGVyZSBhcmUgZGlmZmVyZW50Pwo+ID4gCj4gPiBBZ2FpbiwgaWYgeW91J3Zl IGdvdCBhbGwgb2YgdGhpcyBpbXBsZW1lbnRlZCBpbiBpOTE1IChvciBhbnkgb2YgdGhlCj4gPiBv dGhlciAiYmlnIiBkcml2ZXJzKSwgeW91IHByb2JhYmx5IHdhbnQgdG8gc3RheSBhd2F5IGZyb20g dGhlc2UuIEJ1dAo+ID4gZG9lcyB0aGF0IG1lYW4gZXZlcnlvbmUgZWxzZSBoYXMgdG8gZ28gYW5k IGZpZ3VyZSBhbGwgb2YgdGhpcyBvdXQgZnJvbQo+ID4gc2NyYXRjaD8gU2hvdWxkbid0IHdlIGF0 IGxlYXN0IGF0dGVtcHQgdG8gd3JpdGUgY29tbW9uIGNvZGU/IE9yIHNob3VsZAo+ID4gd2UgYWxs IGdvIGFuZCB3cml0ZSBvdXIgb3duIERQIHN0YWNrcyBsaWtlIHRoZSBiaWcgZHJpdmVycz8gSSBk b24ndCBzZWUKPiA+IGFueSBhZHZhbnRhZ2UgaW4gdGhhdC4KPiA+IAo+ID4gPiBJZiB3ZSBnZXQg YSBjb25maXJtYXRpb24gZnJvbSBvdXIgZHJtIG92ZXJsb3JkcyB0aGF0IGRyaXZlcnMgZG9pbmcK PiA+ID4gdGhpbmdzIHRoZSB3YXkgdGhleSBzZWUgZml0IGluIHRoaXMgcmVnYXJkIGlzIGZpbmUs IHRoZW4gSSdtIG9rYXkgd2l0aAo+ID4gPiB0aGlzLiBCdXQgSSdtIGRlZmluaXRlbHkgbm90IGNv bW1pdHRpbmcgdG8gc3dpdGNoaW5nIHRvIHVzaW5nIHRoZQo+ID4gPiBkcm1fZHBfbGluayBzdHJ1 Y3R1cmVzIGFuZCBoZWxwZXJzIGluIGk5MTUsIHF1aXRlIHRoZSBvcHBvc2l0ZSBhY3R1YWxseS4K PiA+IAo+ID4gSSBkb24ndCB0aGluayBhbnlvbmUncyBnb2luZyB0byBmb3JjZSB5b3UgdG8gY29u dmVydCB0byB0aGUgZHJtX2RwX2xpbmsKPiA+IGhlbHBlcnMgaWYgeW91IGRvbid0IHdhbnQgdG8u IEl0J3MgZGVmaW5pdGVseSBub3QgbXkgaW50ZW50aW9uIHRvIG1ha2UKPiA+IHRoaXMgIlRoZSBP bmUgQW5kIE9ubHkgV2F5IFRvIERvIERQIGluIERSTSIuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY3Jl YXRlCj4gPiBoZWxwZXJzIHRoYXQgY2FuIHNpbXBsaWZ5IGFkZGluZyBEUCBzdXBwb3J0Lgo+ID4g Cj4gPiBOb3csIGlmIGV2ZXJ5b25lIGVsc2UgdGhpbmtzIHRoZSBkcm1fZHBfbGluayBoZWxwZXJz IGFyZSBhIGJhZCBpZGVhLCBJCj4gPiB3aWxsIGdldCBvdmVyIGl0IGFuZCBtb3ZlIHRoaXMgaW50 byBUZWdyYSBjb2RlLiBCdXQgc2luY2Ugd2UncmUgYmVpbmcKPiA+IGJsdW50LCBJJ2QgbGlrZSB0 byBnZXQgYSB0aGlyZCAoYW5kIGlkZWFsbHkgZm91cnRoKSBvcGluaW9uIG9uIHdoZXRoZXIKPiA+ IHdlIHJlYWxseSB3YW50IHRoaXMgc3R1ZmYgdG8gYmUgcmVpbnZlbnRlZCBpbiBldmVyeSBkcml2 ZXIgb3Igd2hldGhlcgo+ID4gd2Ugd2FudCB0byB0cnkgYW5kIGNvbWUgdXAgd2l0aCBzb21ldGhp bmcgdGhhdCB3b3JrcyBmb3IgbW9yZSB0aGFuIG9uZQo+ID4gZHJpdmVyLgo+ID4gCj4gPiBUaGll cnJ5Cj4gPiAKPiA+ID4gQlIsCj4gPiA+IEphbmkuCj4gPiA+IAo+ID4gPiAKPiA+ID4gKCopIFBs ZWFzZSBkb24ndCByZWFkIHRvbyBtdWNoIGludG8gInNtYWxsIiBhbmQgImJpZyIsIGp1c3QgdHdv IGdyb3Vwcwo+ID4gPiBvZiBkcml2ZXJzIGhhbmRsaW5nIHRoaW5ncyBkaWZmZXJlbnRseS4KPiAK PiBEYXZlLCBEYW5pZWwsCj4gCj4gaG93IGNhbiB3ZSBtYWtlIHByb2dyZXNzIG9uIHRoaXM/IElz IGl0IG9rYXkgdG8gZ28gZm9yd2FyZCB3aXRoIHRoaXMKPiBzZXJpZXMgaWYgd2UgYWdyZWUgdGhh dCBpdCdzIG5vdCBnb2luZyB0byBiZSByZXF1aXJlZCBmb3IgZHJpdmVycyB0bwo+IGFkb3B0IGl0 IGlmIHRoZXkgYWxyZWFkeSBoYXZlIGEgd29ya2luZyBEUCBpbXBsZW1lbnRhdGlvbj8KPiAKPiBJ ZiB3ZSBjYW4ndCBhZ3JlZSBvbiB0aGUgc3RydWN0IGRybV9kcF9saW5rIGhlbHBlcnMsIHBlcmhh cHMgSSBzaG91bGQgZ28KPiBhbmQgYXQgbGVhc3QgbWVyZ2UgdGhlIGFkZGl0aW9uYWwgRFBDRCBw YXJzaW5nIGhlbHBlcnMuIFRob3NlIGFyZSB2ZXJ5Cj4gbXVjaCBpbiBsaW5lIHdpdGggZXhpc3Rp bmcgaGVscGVycy4gSSBjb3VsZCB0aGVuIG1vdmUgdGhlIGRybV9kcF9saW5rCj4gaGVscGVycyBp bnRvIHRoZSBUZWdyYSBkcml2ZXIgYW5kIGFkZCByZXBsYWNlbWVudCBjb2RlIHRvIHRoZSBvdGhl cgo+IGRyaXZlcnMgdGhhdCBhbHJlYWR5IHVzZSBzdHJ1Y3QgZHJtX2RwX2xpbmsuIEl0J2QgYmUg YSBzaGFtZSB0bwo+IGR1cGxpY2F0ZSB0aGUgY29kZSwgYnV0IEknbSB3aWxsaW5nIHRvIGludmVz dCB0aGF0IGFkZGl0aW9uYWwgd29yayBzbwo+IHRoYXQgSSBjYW4gZmluYWxseSBtYWtlIHByb2dy ZXNzIG9uIHRoaXMgc2VyaWVzIGFuZCB0aGUgVGVncmEgRFAgc3VwcG9ydAo+IHRoYXQgZGVwZW5k cyBvbiB0aGlzLgoKSSAuLi4gZG9uJ3Qga25vdy4KCkluIGdlbmVyYWwgSSB0aGluayBoZWxwZXJz IGFyZSB0b3RhbGx5IG9rIHdpdGggYmVpbmcgb3B0aW9uYWwgKHRoYXQncyB0aGUKcG9pbnQgYWZ0 ZXIgYWxsKSwgYnV0IG5vdCBmb3IgY29sb3IgY2hvaWNlIHJlYXNvbnMuIEFuZCBmcm9tIHZlcnkg bXVjaAphZmFyIHRoaXMgZmVlbHMgYSBiaXQgbGlrZSB0aGF0LgoKSSBhbHNvIHRoaW5rIHRoYXQg aWYgd2Ugd2FudCBzbWFsbGVyIGhlbHBlcnMgZm9yIHNpbXBsZXIgZHJpdmVycywgaXQncwpiZXR0 ZXIgdG8gYnVpbGQgdGhhdCBvbiB0b3Agb2YgdGhlIGZ1bGwtZmVhdHVyZWQgaGVscGVycyBhbmQg ZHVtYiB0aGVtCmRvd24uIFRoaXMgd29ya2VkIHZlcnkgd2VsbCBmb3Igc2ltcGxlIGRpc3BsYXkg cGlwZSAoYnVpbHQgb24gdG9wIG9mCmF0b21pYyBoZWxwZXJzKSBhbmQgc2ltcGxlIHZyYW0gc3Vw cG9ydCAoYnVpbHQgb24gdG9wIG9mIHR0bSkuIEhhdmluZyB0d28KZGlzdGluY3Qgc2V0IG9mIGhl bHBlcnMgZm9yIHNtYWxsIGFuZCBiaWcgZHJpdmVycyBzZWVtcyB3cm9uZy4KCkkgYWxzbyB0aGlu ayB0aGF0IHRoZSBmdW5jdGlvbnMvY29udHJvbC1mbG93L2NhbGxiYWNrcyBhcmUgdGhlIGltcG9y dGFudApwYXJ0IG9mIGhlbHBlcnMsIG5vdCByZWFsbHkgdGhlIGRhdGEgc3RydWN0dXJlcy4gSnVz dCBoYXZpbmcgY29tbW9uCmRhdGEgc3RydWN0dXJlcyBnaXZlcyB5b3UgYXMgbXVjaCBhIG1lc3Mg YXMgaGF2aW5nIGEgcGlsZSBvZgpkaXN0aW5jdCBpbXBsZW1lbnRhdGlvbnMuCgpBc2lkZSBmcm9t IGFsbCB0aGVzZSBnZW5lcmljIHRob3VnaHRzIG9uIGhlbHBlcnMsIGZvciBkcCBzcGVjaWZpY2Fs bHkgSQp0aGluayB0aGUgcHJvb2Ygb2YgdGhlIHB1ZGRpbmcgaXMgaW4gaG93IGl0IGludGVncmF0 ZXMgd2l0aCBtc3QuIElmIHdlCmhhdmUgZHAgaGVscGVycyB0aGF0IHdvcmsgZm9yIG1zdCAodGhl IG1zdCB2cyBzc3QgY2FzZSBkZWNpc2lvbiBhbmQKdHJhbnNpdGlvbnMgYXJlIGVzcGVjaWFsbHkg bmFzdHkgaW4gYWxsIGRyaXZlcnMpLCB0aGVuIHdlIGNhbiBkdW1iIGl0IGRvd24KZm9yIHNpbXBs ZSBkcml2ZXJzIGFuZCBtb2R1bGFyaXplIGl0IGZvciBzcGVjaWFsIGNhc2VzIGxpa2Ugd2UgZG8g d2l0aApvdGhlciBoZWxwZXJzLiBXaXRob3V0IHRoYXQgSSBmZWFyIHdlJ3JlIGp1c3QgZW5kaW5n IHVwIGluIGEgZGVhZC1lbmQgKGJ1dAp3b24ndCByZWFsaXplIGl0IHVudGlsIGl0J3MgdG9vIGxh dGUpLgoKRmluYWxseSBJJ20gb2sgd2l0aCBubyBoZWxwZXJzIGluIGFyZWFzIHdoZXJlIHdlIGhh dmVuJ3QgZmlndXJlZCBvdXQgYQpnb29kIHNvbHV0aW9uIHlldC4gQnVuY2ggb2YgY29weXBhc3Rh IGlzIGltbyBiZXR0ZXIgdGhhbiBnb2luZyB0aGUgd3JvbmcKd2F5IGNvbGxlY3RpdmVseSAoc2lu Y2UgaXQgcHJldmVudHMgdGhlIGV4cGVyaW1lbnRzIHRoYXQgbWlnaHQgc2hpbmUgYQpsaWdodCBv biBiZXR0ZXIgc29sdXRpb25zKS4KCnRsZHI7IFN0aWxsIGRvbid0IGtub3cuCgpDaGVlcnMsIERh bmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4