From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH 1/1] drm: Add dirty_rects atomic blob property for drm_plane Date: Tue, 6 Mar 2018 08:25:09 +0100 Message-ID: <12ce400d-481c-a998-5864-8bbd2d2aa53e@vmware.com> References: <20171221111008.38764-1-lukasz.spintzyk@displaylink.com> <20171221111008.38764-2-lukasz.spintzyk@displaylink.com> <20171221124655.GJ10981@intel.com> <20171221131040.GX26573@phenom.ffwll.local> <20180305083736.GA22212@phenom.ffwll.local> <87873ee4-32b9-c26a-6f73-5e4fa87c5aa1@vmware.com> <20180305093949.GL22212@phenom.ffwll.local> <6d7190e3-8a87-0e50-5820-9b2ef5c9d346@vmware.com> <20180306070837.GM22212@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0048.outbound.protection.outlook.com [104.47.36.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3D5846E57A for ; Tue, 6 Mar 2018 07:25:25 +0000 (UTC) In-Reply-To: <20180306070837.GM22212@phenom.ffwll.local> Content-Language: en-US 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: "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@intel.com" , Deepak Singh Rawat , Lukasz Spintzyk List-Id: dri-devel@lists.freedesktop.org T24gMDMvMDYvMjAxOCAwODowOCBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE1h ciAwNSwgMjAxOCBhdCAxMTowMTo0MkFNICswMTAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ PiBPbiAwMy8wNS8yMDE4IDEwOjM5IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4gT24gTW9u LCBNYXIgMDUsIDIwMTggYXQgMTA6MjI6MDlBTSArMDEwMCwgVGhvbWFzIEhlbGxzdHJvbSB3cm90 ZToKPj4+PiBPbiAwMy8wNS8yMDE4IDA5OjM3IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+ PiBPbiBXZWQsIEZlYiAyOCwgMjAxOCBhdCAwOToxMDo0NlBNICswMDAwLCBEZWVwYWsgU2luZ2gg UmF3YXQgd3JvdGU6Cj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+Pj4+PiBG cm9tOiBkcmktZGV2ZWwgW21haWx0bzpkcmktZGV2ZWwtYm91bmNlc0BsaXN0cy5mcmVlZGVza3Rv cC5vcmddIE9uIEJlaGFsZgo+Pj4+Pj4+IE9mIERhbmllbCBWZXR0ZXIKPj4+Pj4+PiBTZW50OiBU aHVyc2RheSwgRGVjZW1iZXIgMjEsIDIwMTcgNToxMSBBTQo+Pj4+Pj4+IFRvOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pj4+Pj4+IENjOiBhaXJsaWVk QGxpbnV4LmllOyBkYW5pZWwudmV0dGVyQGludGVsLmNvbTsgZHJpLQo+Pj4+Pj4+IGRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgTHVrYXN6IFNwaW50enlrCj4+Pj4+Pj4gPGx1a2Fzei5zcGlu dHp5a0BkaXNwbGF5bGluay5jb20+Cj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzFdIGRy bTogQWRkIGRpcnR5X3JlY3RzIGF0b21pYyBibG9iIHByb3BlcnR5IGZvcgo+Pj4+Pj4+IGRybV9w bGFuZQo+Pj4+Pj4+Cj4+Pj4+Pj4gT24gVGh1LCBEZWMgMjEsIDIwMTcgYXQgMDI6NDY6NTVQTSAr MDIwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+Pj4+Pj4+PiBPbiBUaHUsIERlYyAyMSwgMjAx NyBhdCAxMjoxMDowOFBNICswMTAwLCBMdWthc3ogU3BpbnR6eWsgd3JvdGU6Cj4+Pj4+Pj4+PiBD aGFuZ2UtSWQ6IEk2M2RjZTAwNGY4ZDNjNWRjNmE3YzcxMDcwZjFmYWIwNzA3Mjg2ZWE1Cj4+Pj4+ Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogU3BpbnR6eWsgPGx1a2Fzei5zcGludHp5a0BkaXNw bGF5bGluay5jb20+Cj4+Pj4+Pj4+PiAtLS0KPj4+Pj4+Pj4+ICAgICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pYy5jICAgICAgfCAxMCArKysrKysrKysrCj4+Pj4+Pj4+PiAgICAgZHJpdmVycy9n cHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jIHwgIDYgKysrKysrCj4+Pj4+Pj4+PiAgICAgZHJpdmVy cy9ncHUvZHJtL2RybV9wbGFuZS5jICAgICAgIHwgIDEgKwo+Pj4+Pj4+Pj4gICAgIGluY2x1ZGUv ZHJtL2RybV9tb2RlX2NvbmZpZy5oICAgICB8ICA1ICsrKysrCj4+Pj4+Pj4+PiAgICAgaW5jbHVk ZS9kcm0vZHJtX3BsYW5lLmggICAgICAgICAgIHwgIDMgKysrCj4+Pj4+Pj4+PiAgICAgNSBmaWxl cyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljLmMKPj4+Pj4+Pj4+IGluZGV4IGI3NmQ0OTIxOGNmMS4uY2QzYjRlZDdiMDRj IDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+Pj4+ Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+Pj4+Pj4+Pj4gQEAgLTc1 OSw2ICs3NTksMTQgQEAgc3RhdGljIGludCBkcm1fYXRvbWljX3BsYW5lX3NldF9wcm9wZXJ0eShz dHJ1Y3QKPj4+Pj4+PiBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4+Pj4+Pj4gICAgIAkJc3RhdGUtPnJv dGF0aW9uID0gdmFsOwo+Pj4+Pj4+Pj4gICAgIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IHBsYW5l LT56cG9zX3Byb3BlcnR5KSB7Cj4+Pj4+Pj4+PiAgICAgCQlzdGF0ZS0+enBvcyA9IHZhbDsKPj4+ Pj4+Pj4+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPmRpcnR5X3JlY3RzX3Byb3Bl cnR5KSB7Cj4+Pj4+Pj4+PiArCQlib29sIHJlcGxhY2VkID0gZmFsc2U7Cj4+Pj4+Pj4+PiArCQlp bnQgcmV0ID0gZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5X2Jsb2JfZnJvbV9pZChkZXYsCj4+ Pj4+Pj4+PiArCQkJCQkmc3RhdGUtPmRpcnR5X2Jsb2IsCj4+Pj4+Pj4+PiArCQkJCQl2YWwsCj4+ Pj4+Pj4+PiArCQkJCQktMSwKPj4+Pj4+Pj4+ICsJCQkJCSZyZXBsYWNlZCk7Cj4+Pj4+Pj4+PiAr CQlyZXR1cm4gcmV0Owo+Pj4+Pj4+Pj4gICAgIAl9IGVsc2UgaWYgKHBsYW5lLT5mdW5jcy0+YXRv bWljX3NldF9wcm9wZXJ0eSkgewo+Pj4+Pj4+Pj4gICAgIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+ YXRvbWljX3NldF9wcm9wZXJ0eShwbGFuZSwgc3RhdGUsCj4+Pj4+Pj4+PiAgICAgCQkJCXByb3Bl cnR5LCB2YWwpOwo+Pj4+Pj4+Pj4gQEAgLTgxOCw2ICs4MjYsOCBAQCBkcm1fYXRvbWljX3BsYW5l X2dldF9wcm9wZXJ0eShzdHJ1Y3QKPj4+Pj4+PiBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4+Pj4+Pj4g ICAgIAkJKnZhbCA9IHN0YXRlLT5yb3RhdGlvbjsKPj4+Pj4+Pj4+ICAgICAJfSBlbHNlIGlmIChw cm9wZXJ0eSA9PSBwbGFuZS0+enBvc19wcm9wZXJ0eSkgewo+Pj4+Pj4+Pj4gICAgIAkJKnZhbCA9 IHN0YXRlLT56cG9zOwo+Pj4+Pj4+Pj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ ZGlydHlfcmVjdHNfcHJvcGVydHkpIHsKPj4+Pj4+Pj4+ICsJCSp2YWwgPSAoc3RhdGUtPmRpcnR5 X2Jsb2IpID8gc3RhdGUtPmRpcnR5X2Jsb2ItPmJhc2UuaWQgOiAwOwo+Pj4+Pj4+Pj4gICAgIAl9 IGVsc2UgaWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewo+Pj4+Pj4+Pj4g ICAgIAkJcmV0dXJuIHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShwbGFuZSwgc3Rh dGUsCj4+Pj4+Pj4gcHJvcGVydHksIHZhbCk7Cj4+Pj4+Pj4+PiAgICAgCX0gZWxzZSB7Cj4+Pj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4+Pj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMKPj4+Pj4+Pj4+IGluZGV4IGJj NWM0NjMwNmIzZC4uZDVmMTAyMWM2ZWNlIDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX21vZGVfY29uZmlnLmMKPj4+Pj4+Pj4+IEBAIC0yOTMsNiArMjkzLDEyIEBAIHN0YXRpYyBp bnQKPj4+Pj4+PiBkcm1fbW9kZV9jcmVhdGVfc3RhbmRhcmRfcHJvcGVydGllcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+Pj4+Pj4+Pj4gICAgIAkJcmV0dXJuIC1FTk9NRU07Cj4+Pj4+Pj4+PiAg ICAgCWRldi0+bW9kZV9jb25maWcucHJvcF9jcnRjX2lkID0gcHJvcDsKPj4+Pj4+Pj4+Cj4+Pj4+ Pj4+PiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRldiwgRFJNX01PREVfUFJPUF9CTE9C LAo+Pj4+Pj4+Pj4gKwkJCSJESVJUWV9SRUNUUyIsIDApOwo+Pj4+Pj4+Pj4gKwlpZiAoIXByb3Ap Cj4+Pj4+Pj4+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4+Pj4+Pj4+ICsJZGV2LT5tb2RlX2NvbmZp Zy5kaXJ0eV9yZWN0c19wcm9wZXJ0eSA9IHByb3A7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiAgICAg CXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jvb2woZGV2LAo+Pj4+Pj4+IERSTV9NT0RFX1BS T1BfQVRPTUlDLAo+Pj4+Pj4+Pj4gICAgIAkJCSJBQ1RJVkUiKTsKPj4+Pj4+Pj4+ICAgICAJaWYg KCFwcm9wKQo+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUu Ywo+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4+Pj4+Pj4+PiBpbmRleCAz N2E5M2NkZmZiNGEuLmFkZDExMGYwMjVlNSAxMDA2NDQKPj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fcGxhbmUuYwo+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9w bGFuZS5jCj4+Pj4+Pj4+PiBAQCAtMjU4LDYgKzI1OCw3IEBAIGludCBkcm1fdW5pdmVyc2FsX3Bs YW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UKPj4+Pj4+PiAqZGV2LCBzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPj4+Pj4+Pj4+ICAgICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFu ZS0+YmFzZSwgY29uZmlnLQo+Pj4+Pj4+PiBwcm9wX3NyY195LCAwKTsKPj4+Pj4+Pj4+ICAgICAJ CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLQo+Pj4+Pj4+ PiBwcm9wX3NyY193LCAwKTsKPj4+Pj4+Pj4+ICAgICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLQo+Pj4+Pj4+PiBwcm9wX3NyY19oLCAwKTsKPj4+Pj4+ Pj4+ICsJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLQo+ Pj4+Pj4+PiBkaXJ0eV9yZWN0c19wcm9wZXJ0eSwgMCk7Cj4+Pj4+Pj4+PiAgICAgCX0KPj4+Pj4+ Pj4+Cj4+Pj4+Pj4+PiAgICAgCWlmIChjb25maWctPmFsbG93X2ZiX21vZGlmaWVycykKPj4+Pj4+ Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+Pj4+Pj4+IGIv aW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPj4+Pj4+Pj4+IGluZGV4IGU1ZjNiNDMwMTRl MS4uNjVmNjRlYjA0YzBjIDEwMDY0NAo+Pj4+Pj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21v ZGVfY29uZmlnLmgKPj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5o Cj4+Pj4+Pj4+PiBAQCAtNTk5LDYgKzU5OSwxMSBAQCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnIHsK Pj4+Pj4+Pj4+ICAgICAJICogJmRybV9jcnRjLgo+Pj4+Pj4+Pj4gICAgIAkgKi8KPj4+Pj4+Pj4+ ICAgICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9jcnRjX2lkOwo+Pj4+Pj4+Pj4gKwkvKioK Pj4+Pj4+Pj4+ICsJICogQGRpcnR5X3JlY3RzX3Byb3BlcnR5OiBPcHRpb25hbCBwbGFuZSBwcm9w ZXJ0eSB0byBtYXJrIGRhbWFnZWQKPj4+Pj4+Pj4+ICsJICogcmVnaW9ucyBvbiB0aGUgcGxhbmUg ZnJhbWVidWZmZXIuCj4+Pj4+Pj4+IFdoYXQgZXhhY3RseSB3b3VsZCB0aGUgYmxvYiBjb250YWlu Pwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGUgY29tbWVudCBzZWVtcyB0byBiZSBpbXBseWluZyB0aGVz ZSBhcmUgaW4gZmIgY29vcmRpYW50ZXMgYXMKPj4+Pj4+Pj4gb3Bwb3NlZCB0byBwbGFuZSBjcnRj IGNvb3JkaW5hdGVzPyBOb3Qgc3VyZSB3aGljaCB3b3VsZCBiZSBtb3JlCj4+Pj4+Pj4+IGNvbnZl bmllbnQuIEF0IGxlYXN0IGlmIHRoZXkncmUgZmIgY29vcmRpbmF0ZXMgdGhlbiB5b3UgcHJvYmFi bHkKPj4+Pj4+Pj4gd2FudCBzb21lIGhlbHBlcnMgdG8gdHJhbnNsYXRlL3JvdGF0ZS9zY2FsZSB0 aG9zZSByZWN0cyB0byB0aGUKPj4+Pj4+Pj4gY3J0YyBjb29yZGluYXRlcy4gQWN0dWFsIHVzZSBk ZXBlbmRzIG9uIHRoZSBkcml2ZXIvaHcgSSBzdXBwb3NlLgo+Pj4+Pj4+IFllYWggSSB0aGluayB3 ZSBhbHNvIHNob3VsZCBhZGQgYSBkZWNvZGVkIHN0YXRlIHRvIHRoZSBkcm1fcGxhbmVfc3RhdGUs Cj4+Pj4+Pj4gd2hpY2ggaGFzIHRoZSBmdWxsIHN0cnVjdHVyZSBhbmQgYWxsIHRoZSBkZXRhaWxz Lgo+Pj4+Pj4gSGkgRGFuaWVsLAo+Pj4+Pj4KPj4+Pj4+IEkgYW0gd29ya2luZyBvbiB0aGlzIGZ1 bmN0aW9uYWxpdHkgdG8gaW1wbGVtZW50IHRoZSBoZWxwZXIgZnVuY3Rpb25zIHRvCj4+Pj4+PiBj b252ZXJ0IGRpcnR5IGNsaXBzIGZyb20gZnJhbWVidWZmZXIgY29vcmRpbmF0ZXMgdG8gcGxhbmVz IGNvb3JkaW5hdGVzCj4+Pj4+PiBhbmQgZmluYWxseSB0byBjcnRjIGNvb3JkaW5hdGVzLgo+Pj4+ Pj4KPj4+Pj4+IElzIHRoZXJlIGEgcmVhc29uIHdlIHNob3VsZCBoYXZlIGRlY29kZWQgZGlydHkg Y2xpcHMgaW4gcGxhbmVfc3RhdGUgPwo+Pj4+Pj4gSSB3YXMgdGhpbmtpbmcgdG8gaGF2ZSB0aGUg Y2xpcHMgcmVtYWluIGluIGJsb2IgcHJvcGVydHkgYW5kIGRlY29kZQo+Pj4+Pj4gdGhlbSB3aGVu IG5lZWRlZCB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHBsYW5lIHN0YXRl IGFuZAo+Pj4+Pj4gc2ltaWxhcmx5IGFub3RoZXIgaGVscGVyIGZvciBjcnRjIGNvb3JkaW5hdGVz LiBTbyBkcml2ZXIgY2FsbCB0aGVzZSBoZWxwZXIKPj4+Pj4+IG9ubHkgaWYgdGhlcmUgaXMgYSBu ZWVkIGZvciBkaXJ0eSBjbGlwcyBhbmQgb3RoZXJ3aXNlIGNhbiBpZ25vcmUuCj4+Pj4+IEltbWVk aWF0ZWx5IGRlY29kaW5nIHRoZSBzdGF0ZSBibG9icyBpcyBzaW1wbHkgYmVzdCBwcmFjdGljZXMs IHRvIGF2b2lkCj4+Pj4+IGR1cGxpY2F0ZWQgY29kZSBhbmQgc3VidGxlIGRpZmZlcmVuY2VzIGlu IGRyaXZlciBiZWhhdmlvdXIuIElmIHRoZXJlJ3MgYQo+Pj4+PiBnb29kIHJlYXNvbiBmb3IgY29t cGxldGVseSBkaWZmZXJlbnQgYmVoYXZpb3VyIChsaWtlIGNydGMgdnMgcGxhbmUKPj4+Pj4gY29v cmRpbmF0ZSBiYXNlZCBkYW1hZ2UgdHJhY2tpbmcpLCB0aGVuIGRlY29kaW5nIHVzaW5nIGEgaGVs cGVyLAo+Pj4+PiBvbi1kZW1hbmQsIHNlZW1zIHNlbnNpYmxlLgo+Pj4+Pgo+Pj4+PiBJJ2Qgc3Rp bGwgdGhpbmsgd2Ugc2hvdWxkIHN0b3JlIHRoZSByZXN1bHRpbmcgZGVyaXZlZCBzdGF0ZSBpbgo+ Pj4+PiBkcm1fY3J0Yy9wbGFuZV9zdGF0ZSwgbGlrZSB3ZSBkbyBmb3IgdGhlIHBsYW5lIGNsaXBw aW5nIGhlbHBlcnMgKGF0IGxlYXN0Cj4+Pj4+IGFmdGVyIFZpbGxlJ3MgbGF0ZXN0IHBhdGNoIHNl cmllcyBoYXMgbGFuZGVkKS4KPj4+Pj4gLURhbmllbAo+Pj4+IFRoZSBpZGVhIGhlcmUgd291bGQg YmUgdG8gdXNlIGEgaGVscGVyIGl0ZXJhdG9yIHRvIGNvbnN0cnVjdCB0aGUgbmV3Cj4+Pj4gY29v cmRpbmF0ZXMgbmVlZGVkOyB0aGUgaXRlcmF0b3IgYmVpbmcgaW5pdGlhbGl6ZWQgd2l0aCB0aGUg YmxvYi4KPj4+Pgo+Pj4+IFRoZSByZWFzb24gbm90IHRvIHN0b3JlIHRoZSBkZWNvZGVkIHN0YXRl IGlzIHVubmVjZXNzYXJ5IGR1cGxpY2F0aW9uLiBXaGlsZQo+Pj4+IEkgZ3Vlc3MgbW9zdCBkcml2 ZXJzIHdvdWxkIHVzZSBjcnRjIGRhbWFnZSB0cmFja2luZywgcG90ZW50aWFsbHkgdGhlcmUgbWln aHQKPj4+PiBiZSB0aHJlZSBjb29yZGluYXRlIHN5c3RlbXMgdXNlZCBieSBkcml2ZXJzOiBQbGFu ZSBmYiBjb29yZGluYXRlcywgUGxhbmUKPj4+PiBjcnRjIGNvb3JkaW5hdGVzIGFuZCBjcnRjIGNv b3JkaW5hdGVzLiBBbmQgdHlwaWNhbGx5IHRoZXknZCBiZSB1c2VkIG9ubHkKPj4+PiBvbmNlLi4u Cj4+PiBXZWxsIEkgd2FzIHRoaW5raW5nIG9mIGEgaGVscGVyIHRvIGNvbXB1dGUgYSBzaW5nbGUs IG92ZXJhbGwgY2xpcCByZWN0IGZvcgo+Pj4gdGhlIGVudGlyZSBjcnRjLiBXaGljaCB3b3VsZCB0 aGVuIGFsc28gbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCB2YXJpb3VzCj4+PiBwbGFuZSBzdGF0 ZSBjaGFuZ2VzLCBhbmQgc3R1ZmYgbGlrZSBiYWNrZ3JvdW5kIGNvbG9yLiBGb3IgYSBzaW1wbGUK Pj4+IGNvb3JkaW5hdGUgc3lzdGVtIHRyYW5zZm9ybSBpdGVyYXRvcnMgc291bmQgbGlrZSBhIGdv b2QgaWRlYSwgYnV0IGhvbmVzdGx5Cj4+PiBJIGRvbid0IGV4cGVjdCB0aGF0IHRvIGJlIGEgY29t bW9uIHVzZS1jYXNlIGluIGRyaXZlcnMuCj4+IFNvIGZhciwgdGhlIGRyaXZlcnMgdGhhdCBoYXZl IHNob3duIGludGVyZXN0IGluIHRoaXMgKFZNd2FyZSBhbmQKPj4gRGlzcGxheUxpbmspIGFwcGVh ciB0byBiZSBtb3N0bHkgaW50ZXJlc3RlZCBpbiBnZXR0aW5nIHRoZWlyIGhhbmRzIG9uCj4+IGEg c2V0IG9mIGNsaXByZWN0cyAocmF0aGVyIHRoYW4gYSBib3VuZGluZyBib3gpIGluIGNydGMgY29v cmRpbmF0ZXMuIFdoaWxlCj4+IHdlIHJlY29nbml6ZSB0aGUgdXNlci1zcGFjZSBhcHBzIHdpbGwg d2FudCB0byBoYW5kIG92ZXIgdGhlIHNldCBvZiBjbGlwcmVjdHMKPj4gaW4gZmIgY29vcmRpbmF0 ZXMuIFdlJ3JlIGFsc28gd29ya2luZyBvbiBhIHNvbHV0aW9uIHdoZXJlIHdlLCBhcyBnZW5lcmlj YWxseQo+PiBhcyBwb3NzaWJsZSB3YW50IHRvIGJlIGFibGUgdG8gYXR0YWNoIGEgcmVtb3Rpbmcg c2VydmVyIChsaWtlIGEgVk5DIHNlcnZlcikKPj4gdG8gS01TIGFuZCB0aGF0IHNvbHV0aW9uIHdv dWxkIHByb2JhYmx5IHdhbnQgdGhlIHNhbWUgdGhpbmcuIEZvciB0aGVzZQo+PiB0aGluZ3MgSSB0 aGluayBhbiBpdGVyYXRvciB3b3VsZCBiZSBhIGdvb2Qgc29sdXRpb24uCj4+Cj4+IEhvd2V2ZXIg dGhhdCBkb2Vzbid0IHJlYWxseSBzdG9wIHVzIGZyb20sIGJhc2VkIG9uIG90aGVyIGRyaXZlcidz IHVzZSBjYXNlcywKPj4gYWRkIGFkZGl0aW9uYWwgcGxhbmUgLyBjcnRjIHN0YXRlIGFuZCB1c2Ug dGhlIGl0ZXJhdG9ycyB0byBwb3B1bGF0ZSB0aGF0Lgo+PiBHaXZlbiB0aGF0LCBkbyB5b3UgdGhp bmsgdGhhdCBpdGVyYXRvcnMgY29tcHV0aW5nIHRyYW5zZm9ybWVkIGNvb3JkaW5hdGVzCj4+IHdv dWxkIGJlIGEgcmVhc29uYWJsZSBmaXJzdCBzdGVwPyBUaGF0IHdvdWxkIGhlbHAgdXMgZW5hYmxl IHRoaXMgcGF0aCBpbgo+PiB2bXdnZnggYW5kIHN0YXJ0IGZsdXNoaW5nIGFuZCB0ZXN0IHBhZ2Ut ZmxpcCB3aXRoIGRhbWFnZSBvbiByZWFsCj4+IGFwcGxpY2F0aW9ucyBhbmQgYWxzbyB0byBmaWd1 cmUgb3V0IGEgcmVhc29uYWJsZSBhdG9taWMgY291bnRlcnBhcnQgdG8gdGhlCj4+IGRpcnR5IGlv Y3RsLgo+IE9oLCBJJ2QgaGF2ZSBleHBlY3RlZCB0aGF0IHlvdSBmb2xrcyB3YW50IGZiLWNvb3Jk aW5hdGUgY2xpcHJlY3RzLCBzaW5jZQo+IHlvdSB1cGxvYWQgdGhlIGJ1ZmZlcnMuIE90b2ggdGhl IGRpZmZlcmVuY2UgaXMgZmFpcmx5IGlycmVsZXZhbnQgaWYgeW91Cj4gb25seSBoYXZlIG9uZSBm cmFtZWJ1ZmZlciB0aGF0IGhhcyB0byBiZSBmdWxsLXNjcmVlbiBhbmQgdW5zY2FsZWQsIHNvIG5v dAo+IGV4YWN0bHkgc3VyZSB3aHkgeW91IHdhbnQgdG8gdHJhbnNmb3JtIHRvIGNydGMgY29vcmRp bmF0ZXMgKHNpbmNlIGZvciB5b3UKPiB0aGV5J3JlIHRoZSBzYW1lIEknZCBhc3N1bWUpLgoKPiBB bnl3YXksIGlmIHlvdSBzZWUgSSByZWFsIHVzZSBmb3IgdGhlIGl0ZXJhdG9yIHN0eWxlIEknbGwg b2YgY291cnNlIG5vdAo+IGJsb2NrIGl0IDotKSBJIHNpbXBseSBkaWRuJ3Qgc2VlIHRoZSB1c2Ut Y2FzZSwgd2hpY2ggaXMgd2h5IEkgaWdub3JlZCBpdC4KPiBBbmQgb25jZSBhbm90aGVyIGRyaXZl ciB0aGF0IHdhbnRzIGEgc2luZ2xlIGNydGMgYm91bmRpbmcgYm94IGltcGxlbWVudHMKPiBzdXBw b3J0LCB0aGF0IHRlYW0gY2FuIHR5cGUgdGhlIGhlbHBlciBpbmZyYXN0cnVjdHVyZSAodGhhdCdz IG5vdCBvbiB5b3UKPiBmb3Igc3VyZSkuCj4KPiBJIGd1ZXNzIHdlJ3ZlIHJlYWNoZWQgdGhlIHBv aW50IHdoZXJlIHRhbGtpbmcgaW4gdGhlIGFic3RyYWN0IG9ubHkgbGVhZHMKPiB0byBtaXN1bmRl cnN0YW5kaW5nLCBhbmQgYSBiaXQgb2YgKGRyaXZlcikgY29kZSB3aWxsIGJlIHRoZSBuZXh0IHN0 ZXAuCgpBZ3JlZWQhCgovVGhvbWFzCgo+IC1EYW5pZWwKPj4gVGhhbmtzLAo+PiBUaG9tYXMKPj4K Pj4+IEVpdGhlciBpdCdzIGFib3V0Cj4+PiB1cGxvYWRpbmcgdGhlIHJpZ2h0IGRpcnR5IGRhdGEg aW4gZWFjaCBwbGFuZSwgb3IgYWJvdXQgdXBsb2FkaW5nIHRoZSByaWdodAo+Pj4gZmluYWwvYmxl bmRlZCBwaXhlbHMgdG8gdGhlIHNjcmVlbiAoaW4gd2hpY2ggY2FzZSBhbGwgb3RoZXIgc3RhdGUg Y2hhbmdlcwo+Pj4gdGhhdCBjYW4gYWZmZWN0IGNvbG9ycyBtdXN0IGJlIHRha2VuIGludG8gYWNj b3VudCB0b28pLgo+Pj4gLURhbmllbAo+Pj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=