From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Mon, 1 Apr 2019 09:49:30 -0400 Message-ID: <20190401134930.GS114153@art_vandelay> References: <20190326204509.96515-1-sean@poorly.run> <20190327181500.GP2665@phenom.ffwll.local> <20190328210303.GM114153@art_vandelay> <20190329082110.GA2665@phenom.ffwll.local> <20190329131659.GO114153@art_vandelay> <20190329153632.GP2665@phenom.ffwll.local> <20190329181011.GP114153@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0CDE6E0F1 for ; Mon, 1 Apr 2019 13:49:32 +0000 (UTC) Received: by mail-qt1-x843.google.com with SMTP id w5so10552838qtb.11 for ; Mon, 01 Apr 2019 06:49:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: 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: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMjksIDIwMTkgYXQgMDg6MjE6MzFQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCA3OjEwIFBNIFNlYW4gUGF1bCA8c2VhbkBw b29ybHkucnVuPiB3cm90ZToKPiA+Cj4gPiBPbiBGcmksIE1hciAyOSwgMjAxOSBhdCAwNDozNjoz MlBNICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBGcmksIE1hciAyOSwgMjAx OSBhdCAwOToxNjo1OUFNIC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ID4gT24gRnJpLCBN YXIgMjksIDIwMTkgYXQgMDk6MjE6MTBBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ ID4gPiA+IE9uIFRodSwgTWFyIDI4LCAyMDE5IGF0IDA1OjAzOjAzUE0gLTA0MDAsIFNlYW4gUGF1 bCB3cm90ZToKPiA+ID4gPiA+ID4gT24gV2VkLCBNYXIgMjcsIDIwMTkgYXQgMDc6MTU6MDBQTSAr MDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ID4gPiBPbiBUdWUsIE1hciAyNiwg MjAxOSBhdCAwNDo0NDo1NFBNIC0wNDAwLCBTZWFuIFBhdWwgd3JvdGU6Cj4gPiA+ID4gPiA+ID4g PiBGcm9tOiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgZHJtIGhlbHBlciBsaWJyYXJ5 IHRvIGhlbHAgZHJpdmVycyBpbXBsZW1lbnQKPiA+ID4gPiA+ID4gPiA+IHNlbGYgcmVmcmVzaC4g RHJpdmVycyBjaG9vc2luZyB0byB1c2UgaXQgd2lsbCByZWdpc3RlciBjcnRjcyBhbmQKPiA+ID4g PiA+ID4gPiA+IHdpbGwgcmVjZWl2ZSBjYWxsYmFja3Mgd2hlbiBpdCdzIHRpbWUgdG8gZW50ZXIg b3IgZXhpdCBzZWxmIHJlZnJlc2gKPiA+ID4gPiA+ID4gPiA+IG1vZGUuCj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gSW4gaXRzIGN1cnJlbnQgZm9ybSwgaXQgaGFzIGEgdGltZXIgd2hp Y2ggd2lsbCB0cmlnZ2VyIGFmdGVyIGEKPiA+ID4gPiA+ID4gPiA+IGRyaXZlci1zcGVjaWZpZWQg YW1vdW50IG9mIGluYWN0aXZpdHkuIFdoZW4gdGhlIHRpbWVyIHRyaWdnZXJzLCB0aGUKPiA+ID4g PiA+ID4gPiA+IGhlbHBlcnMgd2lsbCBzdWJtaXQgYSBuZXcgYXRvbWljIGNvbW1pdCB0byBzaHV0 IHRoZSByZWZyZXNoaW5nIHBpcGUKPiA+ID4gPiA+ID4gPiA+IG9mZi4gT24gdGhlIG5leHQgYXRv bWljIGNvbW1pdCwgdGhlIGRybSBjb3JlIHdpbGwgcmV2ZXJ0IHRoZSBzZWxmCj4gPiA+ID4gPiA+ ID4gPiByZWZyZXNoIHN0YXRlIGFuZCBicmluZyBldmVyeXRoaW5nIGJhY2sgdXAgdG8gYmUgYWN0 aXZlbHkgZHJpdmVuLgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IEZyb20gdGhlIGRy aXZlcidzIHBlcnNwZWN0aXZlLCB0aGlzIHdvcmtzIGxpa2UgYSByZWd1bGFyIGRpc2FibGUvZW5h YmxlCj4gPiA+ID4gPiA+ID4gPiBjeWNsZS4gVGhlIGRyaXZlciBuZWVkIG9ubHkgY2hlY2sgdGhl ICdzZWxmX3JlZnJlc2hfYWN0aXZlJyBhbmQvb3IKPiA+ID4gPiA+ID4gPiA+ICdzZWxmX3JlZnJl c2hfY2hhbmdlZCcgc3RhdGUgaW4gY3J0Y19zdGF0ZSBhbmQgY29ubmVjdG9yX3N0YXRlLiBJdAo+ ID4gPiA+ID4gPiA+ID4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2RlIG9uIHRoZSBw YW5lbCBhbmQgZW50ZXIgYW4gb2ZmIG9yCj4gPiA+ID4gPiA+ID4gPiBsb3ctcG93ZXIgc3RhdGUu Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gQ2hhbmdlcyBpbiB2MjoKPiA+ID4gPiA+ ID4gPiA+IC0gcy9wc3Ivc2VsZl9yZWZyZXNoLyAoRGFuaWVsKQo+ID4gPiA+ID4gPiA+ID4gLSBp bnRlZ3JhdGVkIHRoZSBwc3IgZXhpdCBpbnRvIHRoZSBjb21taXQgdGhhdCB3YWtlcyBpdCB1cCAo Sm9zZS9EYW5pZWwpCj4gPiA+ID4gPiA+ID4gPiAtIG1hZGUgdGhlIHBzciBzdGF0ZSBwZXItY3J0 YyAoSm9zZS9EYW5pZWwpCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gTGluayB0byB2 MTogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lkLzIwMTkwMjI4 MjEwOTM5LjgzMzg2LTItc2VhbkBwb29ybHkucnVuCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiA+ID4gPiA+ID4gPiA+ IENjOiBKb3NlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiA+ID4gPiA+ID4gPiA+IENj OiBaYWluIFdhbmcgPHd6ekByb2NrLWNoaXBzLmNvbT4KPiA+ID4gPiA+ID4gPiA+IENjOiBUb21h c3ogRmlnYSA8dGZpZ2FAY2hyb21pdW0ub3JnPgo+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1i eTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiA+ID4gPiA+ID4gPiAtLS0K PiA+ID4gPiA+ID4gPiA+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0ICAg ICB8ICAgOSArCj4gPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgfCAgIDMgKy0KPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pYy5jICAgICAgICAgICAgICB8ICAgNCArCj4gPiA+ID4gPiA+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgfCAgMzYgKysrLQo+ID4gPiA+ID4gPiA+ ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jIHwgICA4ICsKPiA+ ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgICAgICAgICB8 ICAgNSArLQo+ID4gPiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNo X2hlbHBlci5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiA+ID4gPiA+ICBp bmNsdWRlL2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgICB8ICAxNSArKwo+ID4gPiA+ ID4gPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgICAgICAgIHwgIDMx ICsrKysKPiA+ID4gPiA+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAg ICAgICAgICB8ICAxOSArKwo+ID4gPiA+ID4gPiA+ID4gIGluY2x1ZGUvZHJtL2RybV9zZWxmX3Jl ZnJlc2hfaGVscGVyLmggICAgIHwgIDIzICsrKwo+ID4gPiA+ID4gPiA+ID4gIDExIGZpbGVzIGNo YW5nZWQsIDM2MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiA+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxw ZXIuYwo+ID4gPiA+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1f c2VsZl9yZWZyZXNoX2hlbHBlci5oCj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gL3Nu aXAKPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gaW5kZXggNDk4NTM4NGU1MWY2Li5lYzkwYzUyN2Rl ZWQgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Y19zdGF0ZV9oZWxwZXIuYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiA+ID4gPiA+ID4gPiA+IEBAIC0xMDUsNiArMTA1LDEw IEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPmNvbW1pdCA9IE5VTEw7 Cj4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPmV2ZW50ID0gTlVMTDsKPiA+ID4gPiA+ID4gPiA+ ICAgICBzdGF0ZS0+cGFnZWZsaXBfZmxhZ3MgPSAwOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ID4gKyAgIC8qIFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5l dyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gPiA+ID4gPiA+ID4gPiArICAgc3RhdGUtPmFjdGl2 ZSA9IGRybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3RpdmUoc3RhdGUpOwo+ID4gPiA+ID4g PiA+ID4gKyAgIHN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gZmFsc2U7Cj4gPiA+ID4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBl cl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4g QEAgLTM3MCw2ICszNzQsMTAgQEAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gICAgIC8qIERvbid0IGNvcHkgb3ZlciBhIHdyaXRlYmFjayBqb2Is IHRoZXkgYXJlIHVzZWQgb25seSBvbmNlICovCj4gPiA+ID4gPiA+ID4gPiAgICAgc3RhdGUtPndy aXRlYmFja19qb2IgPSBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKyAg IC8qIFNlbGYgcmVmcmVzaCBzaG91bGQgYmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMg YXZhaWxhYmxlICovCj4gPiA+ID4gPiA+ID4gPiArICAgc3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFu Z2VkID0gc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmU7Cj4gPiA+ID4gPiA+ID4gPiArICAgc3Rh dGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSBmYWxzZTsKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IFdoeSB0aGUgZHVwbGljYXRpb24gaW4gc2VsZi1yZWZyZXNoIHRyYWNraW5nPyBDb25uZWN0 b3JzIG5ldmVyIGhhdmUgYQo+ID4gPiA+ID4gPiA+IGRpZmZlcmVudCBzZWxmLXJlZnJlc2ggc3Rh dGUsIGFuZCB5b3UgY2FuIGFsd2F5cyBsb29rIGF0IHRoZSByaWdodAo+ID4gPiA+ID4gPiA+IGNy dGNfc3RhdGUuIER1cGxpY2F0aW9uIGp1c3QgZ2l2ZXMgdXMgdGhlIGNoYW5jZSB0byBzY3JldyB1 cCBhbmQgZ2V0IG91dAo+ID4gPiA+ID4gPiA+IG9mIHN5bmMgKGUuZy4gaWYgdGhlIGNydGMgZm9y IGEgY29ubmVjdG9yIGNoYW5nZXMpLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+IE9uIGRpc2FibGUgdGhlIGNydGMgaXMgY2xlYXJlZCBmcm9tIGNvbm5lY3Rvcl9zdGF0ZSwg c28gd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8KPiA+ID4gPiA+ID4gaXQuIElmIEkgYWRkIHRoZSBh cHByb3ByaWF0ZSBhdG9taWNfZW5hYmxlL2Rpc2FibGUgaG9va3MgYXMgc3VnZ2VzdGVkIGJlbG93 LCB3ZQo+ID4gPiA+ID4gPiBzaG91bGQgYmUgYWJsZSB0byBudWtlIHRoZXNlLgo+ID4gPiA+ID4K PiA+ID4gPiA+IFllYWggd2UnZCBuZWVkIHRoZSBvbGQgc3RhdGUgdG8gbG9vayBhdCB0aGUgY3J0 YyBhbmQgYWxsIHRoYXQuIFdoaWNoIGlzIGEKPiA+ID4gPiA+IGxvdCBtb3JlIHRyaWNraWVyLgo+ ID4gPiA+ID4KPiA+ID4gPiA+IFNpbmNlIGl0J3Mgc3VjaCBhIHNwZWNpYWwgY2FzZSwgc2hvdWxk IHdlIGhhdmUgYSBkZWRpY2F0ZWQgY2FsbGJhY2sgZm9yCj4gPiA+ID4gPiB0aGUgZGlyZWN0IHNl bGYtcmVmcmVzaCAtPiBjb21wbGV0ZWx5IG9mZiB0cmFuc2l0aW9uPyBJdCdsbCBiZSBhc3ltZXRy aWMsCj4gPiA+ID4gPiBidXQgdGhhdCdzIHRoZSBuYXR1cmUgb2YgdGhpcyBJIHRoaW5rLgo+ID4g PiA+Cj4gPiA+ID4gUmlnaHQsIHRoZSBhc3ltbWV0cnkgaXMgcmVhbGx5IGFubm95aW5nIGhlcmUu IElmIHRoZSBkcml2ZXIgaXMgU1ItYXdhcmUsIGl0IG1ha2VzCj4gPiA+ID4gc2Vuc2Ugc2luY2Ug U1ItYWN0aXZlIHRvIGRpc2FibGUgaXMgYSByZWFsIHRyYW5zaXRpb24uIEhvd2V2ZXIgaWYgdGhl IGRyaXZlciBpcwo+ID4gPiA+IG5vdCBTUi1hd2FyZSAoaWU6IGl0IGp1c3QgZ2V0cyB0dXJuZWQg b2ZmIHdoZW4gU1IgYmVjb21lcyBhY3RpdmUpLCB0aGUgZGlzYWJsZQo+ID4gPiA+IGZ1bmN0aW9u IGdldHMgY2FsbGVkIHR3aWNlIHdpdGhvdXQgYW4gZW5hYmxlLiBTbyB0aGF0IGNoYW5nZXMgdGhl ICJmb3IgZXZlcnkKPiA+ID4gPiBlbmFibGUgdGhlcmUgaXMgYSBkaXNhYmxlIGFuZCB2aWNlIHZl cnNhIiBhc3N1bXB0aW9uLgo+ID4gPiA+Cj4gPiA+ID4gVGhpcyBpcyBvbmUgb2YgdGhlIGJlbmVm aXRzIG9mIHRoZSB2MSBkZXNpZ24sIFNSIHdhcyBib2x0ZWQgb24gYW5kIG5vIGV4aXN0aW5nCj4g PiA+ID4gcnVsZXMgKGFzeW5jL25vX21vZGVzZXQvZW5hYmxlLWRpc2FibGUgcGFpcnMpIHdlcmUg W2V4cGxpY2l0bHldIGJyb2tlbi4gVGhhdCdzCj4gPiA+ID4gbm90IHRvIHNheSBpdCB3YXMgYmV0 dGVyLCBpdCB3YXNuJ3QsIGJ1dCBpdCB3YXMgYSBiaWcgY29uc2lkZXJhdGlvbi4KPiA+ID4gPgo+ ID4gPiA+IFNvLCB3aGF0IHRvIGRvLgo+ID4gPiA+Cj4gPiA+ID4gSSByZWFsbHkgbGlrZSB0aGUg aWRlYSB0aGF0IGRyaXZlcnMgc2hvdWxkbid0IGhhdmUgdG8gYmUgU1ItYXdhcmUgdG8gYmUgaW52 b2x2ZWQKPiA+ID4gPiBpbiB0aGUgcGlwZWxpbmUuIFNvIGlmIHdlIGFkZCBhIGhvb2sgZm9yIHRo aXMgbGlrZSB5b3Ugc3VnZ2VzdCwgd2UgY291bGQgYXZvaWQKPiA+ID4gPiBjYWxsaW5nIGRpc2Fi bGUgdHdpY2Ugb24gYW55dGhpbmcgbm90IFNSLWF3YXJlLiBXZSB3b3VsZCBuZWVkIHRvIGFkZCB0 aGUgaG9vayBvbgo+ID4gPiA+IGNydGMvZW5jb2Rlci9icmlkZ2UgdG8gbWFrZSBzdXJlIHlvdSBj b3VsZCBtaXggbicgbWF0Y2ggU1ItYXdhcmUgYW5kCj4gPiA+ID4gbm9uLVNSLWF3YXJlIGRldmlj ZXMuCj4gPiA+ID4KPiA+ID4gPiBJdCBwcm9iYWJseSBtYWtlcyBzZW5zZSB0byBqdXN0IGFkZCBt YXRjaGluZyBTUiBob29rcyBhdCB0aGlzIHBvaW50LiBTaW5jZSBpZgo+ID4gPiA+IHRoZSBkcml2 ZXIgaXMgZG9pbmcgc29tZXRoaW5nIHNwZWNpYWwgaW4gZGlzYWJsZSwgaXQnbGwgbmVlZCB0byBk byBzb21ldGhpbmcKPiA+ID4gPiBzcGVjaWFsIGluIGVuYWJsZS4gSXQgYWxzbyByZXNlcnZlcyBl bmFibGUgYW5kIGRpc2FibGUgZm9yIHdoYXQgdGhleSd2ZQo+ID4gPiA+IHRyYWRpdGlvbmFsbHkg ZG9uZS4gSWYgYSBkZXZpY2UgaXMgbm90IFNSLWF3YXJlLCBpdCdsbCBqdXN0IGZhbGwgYmFjayB0 byB0aGUKPiA+ID4gPiBmdWxsIGVuYWJsZS9kaXNhYmxlIGFuZCB3ZSdsbCBtYWtlIHN1cmUgdG8g bm90IGRvdWJsZSB1cCBvbiB0aGUgZGlzYWJsZSBpbiB0aGUKPiA+ID4gPiBoZWxwZXJzLgo+ID4g PiA+Cj4gPiA+ID4gU28gd2UnbGwga2VlcCBzeW1tZXRyeSwgYW5kIGF2b2lkIGhhdmluZyBhbiBh d2Z1bCBob29rIG5hbWUgbGlrZQo+ID4gPiA+IGRpc2FibGVfZnJvbV9zZWxmX3JlZnJlc2guLiB5 dWNrIQo+ID4gPiA+Cj4gPiA+ID4gVGhvdWdodHM/Cj4gPiA+Cj4gPiA+IEkgbGlrZSB0aGUgYXN5 bWV0cnkgYWN0dWFsbHksIGl0IGhhcyBncm93biBvbiBhIGJpdCB3aGlsZSB3b3JraW5nIG91dCBh bmQKPiA+ID4gcG9uZGVyaW5nIHRoaXMgOi0pCj4gPiA+Cj4gPgo+ID4gSSdtIG5vdCBxdWl0ZSB0 aGVyZSB3aXRoIHlvdSwgSSBzdGlsbCB0aGluayBpdCdzIGJldHRlciB0byBzcGxpdCBpdCBhbGwg b3V0Lgo+ID4KPiA+ID4gQmVuZWZpdHM6Cj4gPiA+IC0gd2Uga2VlcCB0aGUgMTAwJSBzeW1tZXRy eSBvZiBlbmFibGUvZGlzYWJsZSBob29rcwo+ID4gPiAtIHNlbGYtcmVmcmVzaCBhd2FyZSBjb25u ZWN0b3IgY29kZSBhbHNvIGdldHMgYSBiaXQgc2ltcGxlciBJIHRoaW5rOiBpbgo+ID4gPiAgIHRo ZSBub3JtYWwgZW5hYmxlL2Rpc2FibGUgaG9va3MgaXQgY2FuIGp1c3QgY2hlY2sgZm9yCj4gPiA+ ICAgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+c3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgZm9y IHNyIHN0YXRlIGNoYW5nZXMKPiA+ID4gICB3aGlsZSB0aGUgcGlwZSBpcyBsb2dpY2FsbHkgc3Rh eWluZyBvbgo+ID4gPiAtIHRoZSBvbmUgYXN5bW1ldHJpYyBjYXNlIGR1ZSB0byB0aGlzIGRlc2ln biB3aGVyZSB3ZSBkaXNhYmxlIHRoZSBwaXBlCj4gPiA+ICAgaGFyZGVyIGhhcyBhbiBhd2t3YXJk IHNwZWNpYWwgaG9vaywgd2hpY2ggZ2l2ZXMgdXMgYSBncmVhdCBvcHBvcnR1bml0eQo+ID4gPiAg IHRvIGV4cGxhaW4gd2h5IGl0J3MgbmVlZGVkCj4gPiA+IC0gbm90aGluZyBjaGFuZ2VzIGZvciBu b24tc3IgYXdhcmUgZHJpdmVycwo+ID4gPiAtIGFsc28gbm8gbmVlZCB0byBkdXBsaWNhdGUgc3Ig c3RhdGUgaW50byBjb25uZWN0b3JzLCBzaW5jZSBpdCdzIGFsbAo+ID4gPiAgIGZhaXJseSBleHBs aXQgYWxyZWFkeSBpbiBhbGwgdGhyZWUgc3RhdGUgdHJhbnNpdGlvbnMuCj4gPgo+ID4gVG8gYmUg ZmFpciwgb25seSBvbmUgb2YgdGhlc2UgaXMgZXhjbHVzaXZlIHRvIGFzeW1tZXRyeSwgYW5kIGl0 J3MgdGhlIG9uZSB0aGF0Cj4gPiBwcm92aWRlcyB0aGUgb3Bwb3J0dW5pdHkgdG8gYWRkIGEgY29t bWVudC4gSWYgdGhlIHNyIGZ1bmN0aW9ucyBhcmUgc3ltbWV0cmljLAo+ID4gdGhlIGNvZGUgYmVj b21lcyBtdWNoIG1vcmUgIm5vcm1hbCIgYW5kIGxlc3MgZGVzZXJ2aW5nIG9mIHRoZSBleHBsYW5h dGlvbi4KPiA+Cj4gPiBUaGUgcmVhc29uIEkgd291bGQgbGlrZSB0byBzcGxpdCBvdXQgZW50cnkg YW5kIGV4aXQgaXMgdGhhdCBpdCBtYWtlcyB0aGUgZHJpdmVyCj4gPiBjb2RlIGEgYml0IGVhc2ll ciB0byByYXRpb25hbGl6ZS4gQ3VycmVudGx5IHdlIG5lZWQgdG8gY2hlY2sgdGhlIHN0YXRlIGF0 IHRoZQo+ID4gYmVnaW5uaW5nIG9mIGVuYWJsZS9kaXNhYmxlIHRvIGRldGVybWluZSB3aGV0aGVy IHdlIHdhbnQgdGhlIGZ1bGwgZW5hYmxlL2Rpc2FibGUKPiA+IG9yIHRoZSBwc3IgZXhpdC9lbnRl ci4gU28gdGhlIHNyX2Rpc2FibGUgZnVuY3Rpb24gd291bGQgcmVhbGx5IGp1c3QgYmUgcGxhaW4K PiA+IG9sZCBkaXNhYmxlIHdpdGhvdXQgdGhlIHNwZWNpYWwgY2FzaW5nIGF0IHRoZSB0b3AuIElu IHRoYXQgY2FzZSwgd2UgZG9uJ3QgZXZlbgo+ID4gbmVlZCB0aGUgc2VwYXJhdGUgZnVuY3Rpb24s IHdlIGNvdWxkIGp1c3QgbGltaXQgZGlzYWJsZSBjYWxscyBvbmx5IG9uIHRob3NlCj4gPiBvYmpl Y3RzIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBvbiAoYWN0aXZlIHx8IHNyKS4gVGhhdCBzdGFydHMg c291bmRpbmcgYSBsb3QgbGlrZQo+ID4gd2hhdCB3ZSBhbHJlYWR5IGhhdmUgaGVyZS4KPiA+Cj4g PiBGdXJ0aGVyLCBkb2luZyBTUiBpbiBlbmFibGUvZGlzYWJsZSBpcyByZWFsbHkganVzdCBsZWdh Y3kgZnJvbSB2MSB3aGljaCB0cmllZCB0bwo+ID4ga2VlcCBhcyBtdWNoIHRoZSBzYW1lIGFzIHBv c3NpYmxlLiBOb3cgdGhhdCB3ZSdyZSAiaW4gaXQiLCBJIHRoaW5rIGl0IG1ha2VzCj4gPiBzZW5z ZSB0byBnbyBhbGwgaW4gYW5kIG1ha2UgU1IgYSBmaXJzdCBjbGFzcyBjaXRpemVuLgo+IAo+IEht LCBxdWVzdGlvbiBpczogSG93IG1hbnkgaG9va3MgZG8geW91IG5lZWQ/IEp1c3Qgc29tZXRoaW5n IG9uIHRoZQo+IGNvbm5lY3Rvciwgb3Igb24gdGhlIGVuY29kZXIsIG9yIGV2ZXJ5d2hlcmU/Cgpi cmlkZ2UvZW5jb2Rlci9jcnRjIGFsbCBkbyBzcGVjaWFsIHRoaW5ncyBkdXJpbmcgU1IgdHJhbnNp dGlvbnMsIEkgZG9uJ3QgdGhpbmsKY29ubmVjdG9yIGlzIG5lY2Vzc2FyeS4gVGhpcyBpcyB0aGUg c2FtZSBmb3IgYW55IC5zcl9kaXNhYmxlIGZ1bmN0aW9uLCBldmVyeW9uZQp3b3VsZCBuZWVkIHRv IGltcGxlbWVudCBpdC4KCj4gQW5kIGhvdyBkbyB5b3UgaGFuZGxlIHRoZQo+IHZhcmlvdXMgc3Rh dGUgdHJhbnNpdGlvbnMuIE9uIHRoZSBkaXNhYmxlIHNpZGUgd2UgaGF2ZToKPiAtIGFjdGl2ZSBv biAtPiBhY3RpdmUgb2ZmLCBubyBzciAodXNlcnNwYWNlIGRpc2FibGVzIGNydGMpCj4gLSBhY3Rp dmUgb24sIHNyIG9mZiAtPiBhY3RpdmUgb29mZiwgc3Igb24gKHNyIHRpbWVyIGZpcmVzIGFuZCBz dXNwZW5kcyBjcnRjKQo+IC0gYWN0aXZlIG9mZiwgc3Igb24gLT4gYWN0aXZlIG9mZiwgc3Igb2Zm ICh1c2Vyc3BhY2UgZGlzYWJsZSBjcnRjCj4gd2hpbGUgY3J0YyBpcyBpbiBzcikKPiBUaGVzZSBh cmUgYWxsICJsb2dpY2FsIGFjdGl2ZSBvbiIgLT4gInNvbWV0aGluZyIgdHJhbnNpdGlvbnMgd2hl cmUgd2UKPiBkaXNhYmxlIHNvbWV0aGluZyAoY3J0Yywgb3IgZGlzcGxheSBvciBib3RoKQo+IAo+ IFNvIGluIGEgd2F5IHlvdSdkIG5lZWQgMyBob29rcyBoZXJlIGZvciB0aGUgZnVsbCBtYXRyaXgu Cj4gQW5kIHRoZXkgYWxsCj4ga2luZGEgZGlzYWJsZSBzb21ldGhpbmcuIE9uIHRoZSBlbmFibGUg c2lkZSB3ZSBoYXZlOgo+IC0gYWN0aXZlIG9mZiwgc3Igb2ZmIC0+IGFjdGl2ZSBvbiwgc3Igb2Zm ICh1c2Vyc3BhY2UgZW5hYmxlcyBjcnRjKQo+IC0gYWN0aXZlIG9mZiwgc3Igb24gLT4gYWN0aXZl IG9uLCBzciBvZmYgKHVzZXJzcGFjZSBkb2VzIGEgcGFnZWZsaXAsIHN0b3BzIHNyKQo+IEhlcmUg d2UgZWl0aGVyIGVuYWJsZSB0aGUgY3J0YyAoZGlzcGxheSBhbHJlYWR5IG9uKSBvciBib3RoLiBT aW5jZSB3ZQo+IG9ubHkgZ28gaW50byBzciB3aXRoIHRoZSB0aW1lciB0aGVyZSdzIG5vIDNyZCBj YXNlIG9mIG9ubHkgZW5hYmxpbmcKPiB0aGUgZGlzcGxheS4gU28gc3RpbGwgYXN5bWV0cmljLCBl dmVuIHdpdGggbG90cyBtb3JlIGhvb2tzLgoKV2UgZG9uJ3QgbmVlZCB0aGUgKGFjdGl2ZSBvZmYs IHNyIG9uKSAtPiAoYWN0aXZlIG9mZiwgc3Igb2ZmKSAodGhpcmQpIGNhc2UKYWJvdmUsIGl0J3Mg dGhlIHNhbWUgYXMgdGhlIGZpcnN0LiBKdXN0IGRvaW5nIGEgZnVsbCBkaXNhYmxlIGlzIHN1ZmZp Y2llbnQsCnNvIHlvdSB3b3VsZCBoYXZlIHN5bW1ldHJ5IGluIHRoZSBlbmFibGUvZGlzYWJsZSBj YWxscyBhbmQgYXN5bW1ldHJ5IGluIHRoZQpzciBjYWxscy4gVGhpcyBpcyBzaW1pbGFyIHRvIGVu YWJsaW5nIGEgcGxhbmUsIG9yIHR1cm5pbmcgb3RoZXIgSFcgZmVhdHVyZXMgb24Kd2hpbGUgZW5h YmxlZC4gU1IgaXMgYWZ0ZXIgYWxsIGp1c3QgYSBmZWF0dXJlIG9mIHRoZSBoYXJkd2FyZS4KCj4g Cj4gSWYgeW91IHdhbnQgdGhlIGZ1bGwgbWF0cml4LCB0aGVyZSdzIGdvaW5nIHRvIGJlIGEgX2xv dF8gb2YgaG9va3MuIEkKPiB0aGluayBzbGlnaHRseSBtb3JlIGF3a3dhcmQgZHJpdmVyLCBidXQg bGVzcyBob29rcyBpcyBiZXR0ZXIuIEhlbmNlCj4gdGhlIHNsaWdodGx5IGF3a3dhcmQgbWlkZGxl IGdyb3VuZCBvZiBhIHNwZWNpYWwgZGlzYWJsZV9mcm9tX3NyIGhvb2suCj4gQnV0IG1heWJlIHRo ZXJlJ3MgYSBiZXR0ZXIgb3B0aW9uIHNvbWV3aGVyZSBlbHNlIC4uLgoKVGhlcmUncyByZWFsbHkg bm8gcmVhc29uIHRvIGV2ZW4gaGF2ZSB0aGUgc3JfZGlzYWJsZSBmdW5jdGlvbi4gVGhlIC5kaXNh YmxlCmZ1bmN0aW9uIGluIHRoZSBkcml2ZXIgd2lsbCBhbHJlYWR5IG5lZWQgc3BlY2lhbCBjYXNp bmcgdG8gZGV0ZWN0IHBzcl9lbnRyeQp2cyBmdWxsIGRpc2FibGUsIHNvIGl0J2QgYmUgYmV0dGVy IHRvIGp1c3QgY2FsbCBkaXNhYmxlIHR3aWNlLiBUaGUgLnNyX2Rpc2FibGUKZnVuY3Rpb24gd291 bGQgYWx3YXlzIGp1c3QgZG8gYSBmdWxsIGRpc2FibGUgKGllOiB0aGUgLmRpc2FibGUgaW1wbGVt ZW50YXRpb24Kd2l0aG91dCB0aGUgc3IgY2hlY2tzIGF0IHRoZSB0b3ApLgoKU28gdGhlIGRlYmF0 ZSBzaG91bGQgYmU6IGFkZCBzcl9lbmFibGUvZGlzYWJsZSBwYWlyIG9mIGhvb2tzLCBvciBvdmVy bG9hZApkaXNhYmxlIHdpdGggYXN5bW1ldHJ5IChjdXJyZW50IGltcGxlbWVudGF0aW9uKS4KClNl YW4KCj4gLURhbmllbAo+IAo+ID4KPiA+IFNlYW4KPiA+Cj4gPiA+Cj4gPiA+IC0gU1Igb24gY2Fu IG9ubHkgaGFwcGVuIGlmIHRoZSBsb2dpY2FsIGNydGNfc3RhdGUtPmFjdGl2ZSBpcyBvbiBhbmQg c3RheXMgb24KPiA+ID4gLSBTUiBjYW4gZ2V0IGRpc2FibGVkIGluIDIgc3ViY2FzZXMKPiA+ID4g ICAtIGxvZ2ljYWwgYWN0aXZlIHN0YXRlIHN0YXlzIG9uIC0+IGhhbmRsZWQgd2l0aCBleGlzdGlu ZyBob29rcwo+ID4gPiAgIC0gbG9naWNhbCBhY3RpdmUgc3RhdGUgYWxzbyBnb2VzIG9mZiAtPiBl eGlzdGluZyBob29rcyBhbGwgc2tpcCAoYmVjYXVzZQo+ID4gPiAgICAgYWN0aXZlPWZhbHNlIC0+ IGFjdGl2ZT1mYWxzZSBpcyBhIG5vLW9wKSwgdGhlIHNwZWNpYWwgLT5zcl9kaXNhYmxlCj4gPiA+ ICAgICB0YWtlcyBjYXJlCj4gPiA+Cj4gPiA+IEl0IGZlZWxzIGxpa2UgdGhpcyBpcyBjbGVhbiwg aW50ZWdyYXRlcyB3ZWxsIHdpdGggYXRvbWljIGhlbHBlcnMgb3ZlcmFsbAo+ID4gPiBhbmQgaXQg ZXZlbiBtYWtlcyBzZW5zZS4gQXQgbGVhc3QgdG8gbXkgc2xpZ2h0bHkgb3h5Z2VuIGRlcHJpdmVk IG1pbmQKPiA+ID4gcmlnaHQgbm93IC4uLgo+ID4gPgo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4g PiA+ID4gPiA+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1 cGxpY2F0ZV9zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gL3NuaXAKPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCBiL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gPiA+ID4gPiA+ID4gaW5kZXgg YzgwNjE5OTJkNmNiLi4wYWU3ZTgxMmVjNjIgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9p bmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiA+ID4gPiA+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9jb25uZWN0b3IuaAo+ID4gPiA+ID4gPiA+ID4gQEAgLTUwMSw2ICs1MDEsMzcgQEAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgewo+ID4gPiA+ID4gPiA+ID4gICAgIC8qKiBAdHY6 IFRWIGNvbm5lY3RvciBzdGF0ZSAqLwo+ID4gPiA+ID4gPiA+ID4gICAgIHN0cnVjdCBkcm1fdHZf Y29ubmVjdG9yX3N0YXRlIHR2Owo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ICsgICAv KioKPiA+ID4gPiA+ID4gPiA+ICsgICAgKiBAc2VsZl9yZWZyZXNoX2NoYW5nZWQ6Cj4gPiA+ID4g PiA+ID4gPiArICAgICoKPiA+ID4gPiA+ID4gPiA+ICsgICAgKiBTZXQgdHJ1ZSB3aGVuIHNlbGYg cmVmcmVzaCBzdGF0dXMgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVsIGZvcgo+ID4gPiA+ID4g PiA+ID4gKyAgICAqIHVzZSBpbiBlbmNvZGVyL2JyaWRnZSBlbmFibGUgd2hlcmUgdGhlIG9sZCBz dGF0ZSBpcyB1bmF2YWlsYWJsZSB0bwo+ID4gPiA+ID4gPiA+ID4gKyAgICAqIHRoZSBkcml2ZXIg YW5kIGl0IG5lZWRzIHRvIGtub3cgd2hldGhlciB0aGUgZW5hYmxlIHRyYW5zaXRpb24gaXMgYQo+ ID4gPiA+ID4gPiA+ID4gKyAgICAqIGZ1bGwgdHJhbnNpdGlvbiwgb3IgaWYgaXQganVzdCBuZWVk cyB0byBleGl0IHNlbGYgcmVmcmVzaCBtb2RlLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g VWgsIHdlIGp1c3QgbmVlZCBwcm9wZXIgYXRvbWljIGNhbGxiYWNrcyB3aXRoIGFsbCB0aGUgc3Rh dGVzIGF2YWlsYWJsZS4KPiA+ID4gPiA+ID4gPiBPbmNlIHlvdSBoYXZlIG9uZSwgeW91IGNhbiBn ZXQgYXQgdGhlIG90aGVycy4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBX ZWxsLCBzdXJlLCB3ZSBjb3VsZCBkbyB0aGF0IHRvbyA6KQo+ID4gPiA+ID4KPiA+ID4gPiA+IHRi aCBJJ20gbm90IHN1cmUgd2hldGhlciB0aGF0J3MgcmVhbGx5IGJldHRlciwgdGhlIGR1cGxpY2F0 aW9uIGp1c3QgaXJrcwo+ID4gPiA+ID4gbWUuIFdpdGggYSBuZXcgY2FsbGJhY2sgZm9yIHRoZSBz cGVjaWFsIHNlbGYtcmVmcmVzaCBkaXNhYmxlIChJIGd1ZXNzIHdlCj4gPiA+ID4gPiBvbmx5IG5l ZWQgdGhhdCBvbiB0aGUgY29ubmVjdG9yKSwgcGx1cyBsb29raW5nIGF0Cj4gPiA+ID4gPiBjb25u ZWN0b3ItPnN0YXRlLT5jcnRjLT5zdGF0ZS0+c2VsZl9yZWZyZXNoLCBJIHRoaW5rIHdlJ2QgYmUg Y292ZXJlZAo+ID4gPiA+ID4gYXMtaXM/IE9yIGlzIHRoZXJlIGEgY29ybmVyIGNhc2UgSSdtIHN0 aWxsIG1pc3Npbmc/Cj4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gSSB0aGluayB3ZSBjYW4gcmVt b3ZlIHNlbGZfcmVmcmVzaF9jaGFuZ2VkL3NlbGZfcmVmcmVzaF9hY3RpdmUgaWYgd2UgaW1wbGVt ZW50Cj4gPiA+ID4gZGVkaWNhdGVkIGhvb2tzIGZvciBzZWxmX3JlZnJlc2hfZW50ZXIvZXhpdC4g V2UnbGwgd2FudCB0byBrZWVwCj4gPiA+ID4gc2VsZl9yZWZyZXNoX2F3YXJlIGFyb3VuZCBzaW5j ZSB0aGUgcHJlc2VuY2Ugb2YgdGhlIGNhbGxiYWNrIGltcGxlbWVudGF0aW9ucwo+ID4gPiA+IGRv ZXMgbm90IGltcGx5IHRoZSBwYW5lbCBjb25uZWN0ZWQgc3VwcG9ydHMgU1IuCj4gPiA+Cj4gPiA+ IFl1cCwgc2VsZl9yZWZyZXNoX2F3YXJlIGlzIG5lZWRlZC4KPiA+ID4KPiA+ID4gPiBBcyBtZW50 aW9uZWQgYWJvdmUsIHdlJ2xsIG5lZWQgdGhlc2UgaG9va3Mgb24gZXZlcnl0aGluZyBpbiB0aGUg cGlwZWxpbmUgdG8gYmUKPiA+ID4gPiBmdWxseSBjb3ZlcmVkLgo+ID4gPgo+ID4gPiBMZXQncyBq dXN0IGRvIHRoZSAtPnNyX2Rpc2FibGUgaG9vayBmb3Igbm93LiBJIGRvbid0IHRoaW5rIHdlIG5l ZWQgYWxsIHRoZQo+ID4gPiBvdGhlcnMgcmVhbGx5Lgo+ID4gPgo+ID4gPiBDaGVlcnMsIERhbmll bAo+ID4gPiAtLQo+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAo+ID4KPiA+IC0tCj4g PiBTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwo+IAo+ IAo+IAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgot LSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs