From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Vivi, Rodrigo" Subject: Re: [PATCH 1/3] drm/i915: Make fb user dirty operation to invalidate frontbuffer Date: Mon, 6 Jul 2015 23:19:03 +0000 Message-ID: <1436225074.28692.391.camel@intel.com> References: <1435707722-2152-1-git-send-email-rodrigo.vivi@intel.com> <1435855610.28692.242.camel@intel.com> <20150703071053.GH23343@phenom.ffwll.local> <1436201317.28692.335.camel@intel.com> <20150706175659.GC7568@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 A6A9B6E950 for ; Mon, 6 Jul 2015 16:19:05 -0700 (PDT) In-Reply-To: <20150706175659.GC7568@phenom.ffwll.local> Content-Language: en-US Content-ID: <56B8369944680249B042A12177317FC6@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "daniel@ffwll.ch" Cc: "daniel.vetter@ffwll.ch" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE1LTA3LTA2IGF0IDE5OjU2ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBNb24sIEp1bCAwNiwgMjAxNSBhdCAwMjoxMTo1NVBNIC0wMzAwLCBQYXVsbyBaYW5vbmkg d3JvdGU6DQo+ID4gMjAxNS0wNy0wNiAxMzo0MyBHTVQtMDM6MDAgVml2aSwgUm9kcmlnbyA8cm9k cmlnby52aXZpQGludGVsLmNvbT46DQo+ID4gPiBPbiBGcmksIDIwMTUtMDctMDMgYXQgMDk6MTAg KzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6DQo+ID4gPj4gT24gVGh1LCBKdWwgMDIsIDIwMTUg YXQgMDQ6NDE6MzJQTSArMDAwMCwgVml2aSwgUm9kcmlnbyB3cm90ZToNCj4gPiA+PiA+IE9uIFRo dSwgMjAxNS0wNy0wMiBhdCAxMzowMyAtMDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOg0KPiA+ID4+ ID4gPiAyMDE1LTA2LTMwIDIwOjQyIEdNVC0wMzowMCBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2 aUBpbnRlbC5jb20+Og0KPiA+ID4+ID4gPiA+IExldCdzIGRvIGEgZnJvbnRidWZmZXIgaW52YWxp ZGF0aW9uIG9uIGRpcnR5IGZiLg0KPiA+ID4+ID4gPiA+IFRvIGJlIHVzZWQgZm9yIERJUlRZRkIg ZHJtIGlvY3RsLg0KPiA+ID4+ID4gPiA+DQo+ID4gPj4gPiA+ID4gVGhpcyBwYXRjaCBzb2x2ZXMg dGhlIGJpZ2dlc3QgUFNSIGtub3duIGlzc3VlLCB0aGF0IGlzDQo+ID4gPj4gPiA+ID4gbWlzc2Vk IHNjcmVlbiB1cGRhdGVzIGR1cmluZyBib290LCBtYWlubHkgd2hlbiB0aGVyZSBpcyBhIHNwbGFz aA0KPiA+ID4+ID4gPiA+IHNjcmVlbiBpbnZvbHZlZCBsaWtlIHBseW1vdXRoLg0KPiA+ID4+ID4g PiA+DQo+ID4gPj4gPiA+ID4gUGx5bW90aCB3aWxsIGRvIGEgbW9kZXNldCBvdmVyIGlvY3RsIHRo YXQgZmx1c2hlcyBmcm9udGJ1ZmZlcg0KPiA+ID4+ID4gPiA+IHRyYWNraW5nIGFuZCBQU1IgZ2V0 cyBiYWNrIHRvIHdvcmsgd2hpbGUgaXQgY2Fubm90IHRyYWNrIHRoZQ0KPiA+ID4+ID4gPiA+IHNj cmVlbiB1cGRhdGVzIGFuZCBleGl0IHByb3Blcmx5LiBIb3dldmVyIHBseW1vdXRoIGFsc28gdXNl cw0KPiA+ID4+ID4gPiA+IGEgZGlydHlmYiBpb2N0bCB3aGVuZXZlciB1cGRhdGluZyB0aGUgc2Ny ZWVuLiBTbyBsZXQncyB1c2UgaXQNCj4gPiA+PiA+ID4gPiB0byBpbnZhbGlkYXRlIFBTUiBiYWNr IGFnYWluLg0KPiA+ID4+ID4gPiA+DQo+ID4gPj4gPiA+ID4gdjI6IFJlbW92ZSBPUklHSU5fRkJf RElSVFkgYW5kIHVzZSBPUklHSU5fR1RUIGluc3RlYWQgc2luY2UgZGlydHkNCj4gPiA+PiA+ID4g PiAgICAgY2FsbGJhY2sgaXMganVzdCBjYWxsZWQgYWZ0ZXIgZmV3IHNjcmVlbiB1cGRhdGVzIGFu ZCBub3Qgb24NCj4gPiA+PiA+ID4gPiAgICAgZXZlcnlvbmUgYXMgcG9pbnRlZCBieSBEYW5pZWwu DQo+ID4gPj4gPiA+ID4NCj4gPiA+PiA+ID4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZl dHRlckBmZndsbC5jaD4NCj4gPiA+PiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkg PHJvZHJpZ28udml2aUBpbnRlbC5jb20+DQo+ID4gPj4gPiA+ID4gLS0tDQo+ID4gPj4gPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE4ICsrKysrKysrKysrKysr KysrKw0KPiA+ID4+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQ0KPiA+ ID4+ID4gPiA+DQo+ID4gPj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0K PiA+ID4+ID4gPiA+IGluZGV4IDcyNGIwZTMuLmI1NWIxYjYgMTAwNjQ0DQo+ID4gPj4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+ID4gPj4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+ID4gPj4gPiA+ID4g QEAgLTE0MzkzLDkgKzE0MzkzLDI3IEBAIHN0YXRpYyBpbnQgaW50ZWxfdXNlcl9mcmFtZWJ1ZmZl cl9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPiA+ID4+ID4gPiA+ ICAgICAgICAgcmV0dXJuIGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCBo YW5kbGUpOw0KPiA+ID4+ID4gPiA+ICB9DQo+ID4gPj4gPiA+ID4NCj4gPiA+PiA+ID4gPiArc3Rh dGljIGludCBpbnRlbF91c2VyX2ZyYW1lYnVmZmVyX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiLA0KPiA+ID4+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlLA0KPiA+ID4+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZmxhZ3MsIHVu c2lnbmVkIGNvbG9yLA0KPiA+ID4+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLA0KPiA+ID4+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbnVtX2NsaXBzKQ0KPiA+ID4+ID4gPg0KPiA+ID4+ID4gPiBZb3UgZG9uJ3QgbmVlZCB0aGUg d2hpdGUgc3BhY2Ugb24gdGhlIGxpbmVzIGFib3ZlLCBqdXN0IHRoZSB0YWJzLg0KPiA+ID4+ID4g Pg0KPiA+ID4+ID4gPiA+ICt7DQo+ID4gPj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZmItPmRldjsNCj4gPiA+PiA+ID4gPiArICAgICAgIHN0cnVjdCBpbnRlbF9mcmFt ZWJ1ZmZlciAqaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7DQo+ID4gPj4gPiA+ ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmItPm9i ajsNCj4gPiA+PiA+ID4gPiArDQo+ID4gPj4gPiA+ID4gKyAgICAgICBtdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7DQo+ID4gPj4gPiA+ID4gKyAgICAgICBpbnRlbF9mYl9vYmpfaW52YWxp ZGF0ZShvYmosIE9SSUdJTl9HVFQpOw0KPiA+ID4+ID4gPg0KPiA+ID4+ID4gPiBBcyBmYXIgYXMg SSB1bmRlcnN0b29kIGZyb20gbXkgYnJpZWYgaW52ZXN0aWdhdGlvbiwgdGhlIGRpcnR5IElPQ1RM DQo+ID4gPj4gPiA+IGp1c3Qgc2F5cyAiaGV5LCBJJ20gZG9uZSB3cml0aW5nIG9uIHRoZSBtZW1v cnksIHlvdSBjYW4gZmx1c2ggdGhpbmdzDQo+ID4gPj4gPiA+IG5vdyIsIGFuZCBpZiB0aGUgdXNl ciB3cml0ZXMgb24gdGhlIGJ1ZmZlciBhZ2FpbiBsYXRlciwgaXQgd2lsbCBuZWVkDQo+ID4gPj4g PiA+IHRvIGNhbGwgdGhlIGRpcnR5IElPQ1RMIGFnYWluLiBTbyBzaG91bGRuJ3Qgd2UgY2FsbA0K PiA+ID4+ID4gPiBpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCBmYWxzZSkgaGVyZT8gSXQgc2VlbXMg dGhpcyB3YXMgYWxzbyBwb2ludGVkIGJ5DQo+ID4gPj4gPiA+IERhbmllbCBvbiB0aGUgZmlyc3Qg cmV2aWV3LiBJdCB3b3VsZCBiZSBiZXR0ZXIgYmVjYXVzZSBpdCB3b3VsZCBhbGxvdw0KPiA+ID4+ ID4gPiB1cyB0byBhY3R1YWxseSBrZWVwIFBTUi9GQkMgZW5hYmxlZC4NCj4gPiA+PiA+DQo+ID4g Pj4gPiBUaGUgZmx1c2ggY2F1c2VkIGJ5IHRoZSBkdW1iIG1vZGVzZXQgaW9jdGwgaXMgZXhhY3Rs eSB3aGF0IEkgd2FudCB0bw0KPiA+ID4+ID4gcmV2ZXJ0IGhlcmUuDQo+ID4gPj4gPg0KPiA+ID4+ ID4gV2VsbCwgSSBqdXN0IHRlc3RlZCB0byBkb3VibGUgY2hlY2sgaGVyZSBhbmQgZmx1c2ggbWFr ZXMgbWUgdG8gbWlzcw0KPiA+ID4+ID4gc2NyZWVuIHVwZGF0ZXMuICh0cmlwbGUgY2hlY2tlZCB3 aXRoIHJldGlyZWQgPSB0cnVlIGFzIHdlbGwganVzdCBpbg0KPiA+ID4+ID4gY2FzZSkNCj4gPiA+ PiA+DQo+ID4gPj4gPiBmYmRldiBjb21lcyB0byBwbGFjZSBhbmQgaW52YWxpZGF0ZWQgZnJvbnRi dWZmZXIsIHRoZW4gcGx5bW91dGggZG9lcyBhDQo+ID4gPj4gPiBmbHVzaCB0aGF0IG1ha2VzIHBz ciBzdGFydCB3b3JraW5nIHdoZW4gaXQgc2hvdWxkIGNvbnRpbnVlIGRpc2FibGVkLg0KPiA+ID4+ ID4gQ29udGludWUgZmx1c2hpbmcgaXQgZG9lc24ndCBzb2x2ZSB0aGUgcHJvYmxlbSwganVzdCBy YXRpZnkgaXQuDQo+ID4gPj4gPg0KPiA+ID4+ID4gQnV0IGJlc2lkZSB0aGUgaXNzdWUgdGhhdCBp dCBpcyBzb2x2aW5nIEkgZG9uJ3QgYmVsaWV2ZSB3ZSB3YW50IGlzIGENCj4gPiA+PiA+IGZsdXNo IGFueXdheS4gVGhlcmUgaXMgc29tZXRoaW5nIHdyaXRpbmcgZGlyZWN0bHkgdG8gZnJvbnRidWZm ZXIgd2l0aCBubw0KPiA+ID4+ID4gaW52YWxpZGF0aW9uLiBUaGUgZGlydHkgY2FsbCBpcyBzdXBw b3NlZCB0byBiZSBhIGRhbWFnZSBjYWxsIHRoYXQNCj4gPiA+PiA+IGFjdHVhbGx5IHRlbGxzIHNv bWV0aGluZyBvbiB0aGUgc2NyZWVuIGdvdCB3cml0dGVuIGFuZCBuZWVkcyB0byBiZQ0KPiA+ID4+ ID4gdXBkYXRlZCBpZiBpdCBoYXNuJ3Qgc3RpbGwuIEluIG91ciBjYXVzZSB0aGlzIGlzIGV4YWN0 bHkgdGhlIGZyb250YnVmZmVyDQo+ID4gPj4gPiBpbnZhbGlkYXRlLCBub3QgdGhlIGZsdXNoLg0K PiA+ID4+ID4NCj4gPiA+PiA+IFRoZSBmbHVzaCBwbGFjZSB3b3VsZCBiZSBhZnRlciBpdCByZWFs bHkgc3RvcHBlZCBkb2luZyBzb21ldGhpbmcsIGJ1dA0KPiA+ID4+ID4gc2luY2UgSSBkb24ndCB0 cnVzdCBpdCBJIHByZWZlciB0byBsZXQgaXQgaW52YWxpZGF0ZWQgdW50aWwgbmV4dCBmbGlwLg0K PiA+ID4+DQo+ID4gPj4gU2VlIG15IHJldmlldyBvbiB0aGUgZmlyc3Qgcm91bmQgb2YgdGhpcyBw YXRjaDogZGlydHlmYiBfaXNfIGEgZmx1c2guIElmDQo+ID4gPj4gaXQncyBub3QgZW5vdWdoIHRo ZW4gdGhlcmUncyBzb21lIG90aGVyIHByb2JsZW1zIHN0aWxsIGFyb3VuZC4NCj4gPiA+DQo+ID4g PiBXZWxsLCB0aGUgZmx1c2ggaXRzZWxmIGluIHRoZSB3YXkgaXQgaXMgZGVmaW5lZCBpcyB0byBm bHVzaCBmcm9udGJ1ZmZlcg0KPiA+ID4gYml0cyBhbmQgcHV0IHBvd2VyIHNhdmluZyBmZWF0dXJl cyBiYWNrIHRvIHdvcmsuIFBTUiBmbHVzaCBmb3IgaW5zdGFuY2UNCj4gPiA+IGRvZXNuJ3QgZXhp dCBvbiBldmVyeSBmbHVzaC4gT25seSBpbiB0aGUgY2FzZXMgdGhhdCB3ZSBrbm93IEhXIHRyYWNr aW5nDQo+ID4gPiBkb2Vzbid0IHdvcmsuDQo+ID4gPg0KPiA+ID4gT25lIHBvc3NpYmlsaXR5IHdv dWxkIGJlIGNoYW5nZSBQU1IgdG8gcmVzcGVjdCB0aGF0IGFsbCBmbHVzaCBhbHdheXMgaXMNCj4g PiA+IGludmFsaWRhdGUgKGV4aXQpICsgZmx1c2ggZmJfYml0cy4gQnV0IEknbSBhZ2FpbnN0IHRo aXMgc2luY2UgUFNSIG9uDQo+ID4gPiBjb3JlIHBsYXRmb3JtcyBkb2Vzbid0IGhhdmUgU1cgdHJh Y2traW5nIGV4dCBhbmQgaXQgd2Fzbid0IGltcGxlbWVudGVkDQo+ID4gPiB0byBiZSBmdWxseSBl bmFibGVkL2Rpc2FibGVkIGV2ZXJ5IHRpbWUuDQo+ID4gPg0KPiA+ID4gQW5vdGhlciBpZGVhIG9u IHRoaXMgbGluZSBpcyB0byBtYWtlIGZsdXNocyBrbm93IG9yaWdpbnMgb3IgYXQgbGVhc3QgYQ0K PiA+ID4gYm9vbGVhbiB0byBzZXBhcmF0ZSBjYXNlcyB3aGVyZSBmbHVzaCBtdXN0IGJlIGhhbmRs ZWQgYXMgZmx1c2ggYml0cyArDQo+ID4gPiBjb250aW51ZSB3b3JraW5nIG9yIGludmFsaWRhdGUg KyBmbHVzaCBiaXRzICsgc3RhcnQgd29ya2luZyBhZ2Fpbg0KPiA+ID4NCj4gPiA+IFBsZWFzZSBs ZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4NCj4gPiA+DQo+ID4gPiBCdXQgcHV0dGluZyBmbHVz aHMgb24gdGhpcyBkaXJ0eSBjYWxsYmFjayBpcyBjdXJyZW50bHkgdXNlbGVzcyBiZWNhdXNlDQo+ ID4gPiBmbHVzaCBqdXN0IHRlbGxzIHBzciB0byBjb250aW51ZSB3b3JraW5nIHdpdGhvdXQgZ2V0 dGluZyBzY3JlZW4gdXBkYXRlcy4NCj4gPiA+DQo+ID4gPiBXZWxsLCB0aGlzIGlzIHRoZSBtb3N0 IGltcG9ydGFudCBkaXNjdXNzaW9uIGZvciBub3csIGJ1dCBhbHNvIGV2ZW4gd2UNCj4gPiA+IGNo YW5nZSBmbHVzaCBpbnRlcmZhY2Ugb3Igb25seSBpbiBQU1IgSSdtIG5vdCBzdXJlIHRoaXMgd2ls bCB3b3JrLg0KPiA+ID4NCj4gPiA+IFRoaXMgZGlydHkgY2FzZSBoYXBwZW5zIGluIHRoZSBtaWRk bGUgb2YgZmJkZXYgYW5kIHdoZW4gaXQgZ2l2ZXMgY29udHJvbA0KPiA+ID4gYmFjayB0byBmYmNv biBwc3Igd291bGQgYmUgd29ya2luZyB3aXRob3V0IG5vIG9uZSBlbHNlIGludmFsaWRhdGUgb3IN Cj4gPiA+IGZsdXNoaW5nIGl0IGFuZCB3ZSB3b3VsZCBtaXNzIHNjcmVlbiB1cGRhdGVzIGFueXdh eS4NCj4gPiA+IEJ1dCBpbiB0aGlzIGNhc2UgSSB1bmRlcnN0YW5kIHRoaXMgaXMgYSBoYWNrIGFu ZCBpZiB3ZSBwdXQgdGhlDQo+ID4gPiBpbnZhbGlkYXRlIHRoZXJlIEkgc2hvdWxkIGFsc28gcHV0 IGEgRklYTUUgWFhYIGV4cGxhaW5pbmcgdGhhdC4uLg0KPiA+IA0KPiA+IExhc3Qgd2VlayBJIGRp c2N1c3NlZCBzb21lIG9mIHRoaXMgd2l0aCBSb2RyaWdvIG9uIElSQyBhbmQgd2UgaGF2ZQ0KPiA+ IGRpZmZlcmVudCBpbnRlcnByZXRhdGlvbnMgb24gd2hhdCB0aGUgZnJvbnRidWZmZXIgdHJhY2tp bmcgY2FsbHMgbWVhbi4NCj4gPiBEYW5pZWwsIGNhbiB5b3UgcGxlYXNlIGNsYXJpZnkgYSBmZXcg dGhpbmdzPw0KPiA+IA0KPiA+IE9uZSBvZiB0aGUgdGhpbmdzIEkndmUgZGlzY3Vzc2VkIHdpdGgg Um9kcmlnbyBpcyB0aGF0IEkgY29uc2lkZXINCj4gPiBpbnZhbGlkYXRlK2ZsdXNoIHRvIGJlIGVx dWl2YWxlbnQgdG8ganVzdCBhIGZsdXNoIGNhbGwsIHdoaWxlIFJvZHJpZ28NCj4gPiBzZWVzIGJv dGggY2FzZXMgYXMgZGlmZmVyZW50LiBEYW5pZWwsIGNhbiB5b3UgcGxlYXNlIGNsYXJpZnkgdGhl DQo+ID4gaW50ZW50aW9ucyBvZiB0aGUgZnJvbnRidWZmZXIgdHJhY2tpbmcgaW5mcmFzdHJ1Y3R1 cmUgaGVyZT8NCj4gDQo+IFllYWggZXNzZW50aWFsbHkgZmx1c2ggd2l0aG91dCBhbiBpbnZhbGlk YXRlIGlzIGp1c3QgYSBpbnN0YW50YW5lb3VzDQo+IGludmFsaWRhdGUrZmx1c2guIGludmFsaWRh dGUganVzdCBtZWFucyAic29tZW9uZSBzdGFydGVkIHRvIGZyb250YnVmZmVyDQo+IHJlbmRlciBh bmQgSSBoYXZlIG5vIGlkZWEgYXQgYWxsIHdoZW4gdGhhdCB3aWxsIHN0b3AiLiBGbHVzaCBtZWFu cw0KPiAic29tZW9uZSBoYXMgZG9uZSBzb21lIGZyb250YnVmZmVyIHJlbmRlcmluZywgbWFrZSBz dXJlIHRob3NlIHVwZGF0ZXMgbGFuZA0KPiBvbiB0aGUgc2NyZWVuIi4gU28geWVhaCBQYXVsbydz IGlkZWEgaXMgY29ycmVjdC4NCg0KVGhhbmtzIGZvciB0aGUgY2xhcmlmaWNhdGlvbi4uLg0KDQo+ IA0KPiBQcm9ibGVtIGlzIG5vdyB0aGF0IHdoZW4gd2UgZ2V0IGEgZmxpcCB3ZSBhbHNvIGNhbGwg Zmx1c2gsIGFuZCBmb3IgcHNyIG9uDQo+IGJpZyBjb3JlIHRoYXQncyBwcm9iYWJseSBub3Qgd2hh dCB3ZSB3YW50IHNpbmNlIGl0IGNhbiBoYW5kbGUgZmxpcHMNCj4gY29ycmVjdGx5LCBidXQgbm90 IHJlYWwgZnJvbnRidWZmZXIgZmx1c2hlcy4NCj4gDQo+ID4gT25lIGNvbnRyYWRpY3Rpb24gSSBz ZWUgd2l0aCB0aGUgY3VycmVudCBjb2RlIGlzIHRoYXQgUFNSIGRvZXMgbm90aGluZw0KPiA+IG9u IGZsdXNoKCkgZm9yIEJEVyBiZWNhdXNlIGl0IGJlbGlldmVzIHRoZSBIVyB0cmFja2luZywgYnV0 IGl0IGRvZXMNCj4gPiBwc3JfZXhpdCgpIG9uIGludmFsaWRhdGUgZm9yIGV2ZXJ5IHNpbmdsZSBj YXNlLiBJZiBpdCByZWxpZXMgb24gdGhlIEhXDQo+ID4gdHJhY2tpbmcsIHNob3VsZG4ndCBpdCBh bHNvIGRvIG5vdGhpbmcgb24gaW52YWxpZGF0ZSgpPyBJZiBpdCBkb2Vzbid0DQo+ID4gcmVseSBv biBIVyB0cmFja2luZywgc2hvdWxkbid0IGl0IGRvIHNvbWV0aGluZyBvbiBmbHVzaCgpPyBJZiBp dA0KPiA+IHJlbGllcyBvbiBqdXN0IGEgZmV3IHNwZWNpZmljIHBpZWNlcyBvZiB0aGUgSFcgdHJh Y2tpbmcsIHNob3VsZG4ndCBpdA0KPiA+IGNoZWNrIGVudW0gZmJfb3Bfb3JpZ2luPyBUaGUgY29u Y2x1c2lvbiBoZXJlIGlzIHRoYXQgdGhlIFBTUiBjb2RlIGlzDQo+ID4gY29tcGxldGVseSByZWx5 aW5nIG9uIGhhdmluZyBpbnZhbGlkYXRlKCkgY2FsbHMgYmVmb3JlIHRoZSBmbHVzaCgpIGZvcg0K PiA+IGNhc2VzIHdoZXJlIGl0IG5lZWRzIGhlbHAgZnJvbSBzb2Z0d2FyZS4NCj4gDQo+IENhbGxp bmcgaW52YWxpZGF0ZSBiZWZvcmUgZmx1c2ggaXNuJ3QgaW1vIHRoZSByaWdodCBmaXggc2luY2Ug dXN1YWxseQ0KPiAoZXhjZXB0IHdoZW4geW91IGhhdmUgd29ya2luZyBodyB0cmFja2luZyBsaWtl IGZiYyBmb3IgZ3R0IG1tYXBzKSB5b3UgbmVlZA0KPiB0byBzdG9wIHBzci9mYmMvd2hhdGV2ZXIg b24gaW52YWxpZGF0ZS4gV2hlcmVhcyBvbiBmbHVzaCB5b3UganVzdCBuZWVkIHRvDQo+IG1ha2Ug c3VyZSBzY3JlZW4gY29udGVudHMgZ2V0IHRvIHRoZSBzY3JlZW4uDQo+IA0KPiBJIHRoaW5rIHRo ZSBiZXN0IG9wdGlvbiB3b3VsZCBiZSB0byB3aXJlIHVwIHRoZSBmYl9vcF9vcmlnaW4gZm9yIGZs dXNoZXMNCj4gdG9vLCBhbmQgdGhlbiBmaWx0ZXIgb3V0IE9SSUdJTl9GTElQIGZvciBwc3IgKGV4 Y2VwdCBmb3Igc3ByaXRlcyBvbiBoc3cpDQo+IG9uIGJpZyBjb3JlLg0KDQpPaywgdGhpcyBhcHBy b2FjaCBoZXJlIHdvcmtzIGhlcmUgd2hlbiBJIGhhdmUgc3BsYXNoIHNjcmVlbiB0YWtpbmcgcGxh Y2UNCmFuZCBYIGNvbWluZyByaWdodCBhZnRlciBpdC4gSG93ZXZlciB3ZSBzdGlsbCBoYXZlIG9u ZSBpc3N1ZSB0aGF0IGlzDQp3aGVuIGl0IGdvZXMgYmFjayB0byBjb25zb2xlLg0KDQpmYmRldiBv biBzZXRfcGFyIGludmFsaWRhdGVkIGZyb250IGJ1ZmZlciwgYnV0IHRoZW4gc3BsYXNoIHNjcmVl biBjYW1lDQphbmQgZmx1c2hlZCBpdCwgcHNyIHN0YXJ0ZWQgd29ya2luZywgdGhlbiBjb250cm9s IGdldHMgYmFjayB0byBmYmRldiBhbmQNCm5vdGhpbmcgaW52YWxpZGF0ZXMgbW9yZSBzbyBmcm9t IHRoaXMgcG9pbnQgb24gd2UgbWlzcyBtYW55IChpZiBub3QgYWxsKQ0Kc2NyZWVuIHVwZGF0ZXMu DQoNClNvIHdlIGFyZSBnb2luZyB0byBhIGVuZGxlc3MgcGF0aCB3aGVyZSB3ZSBjb3VsZCBoYXZl IG1hbnkgY2FzZXMgd2hlcmUNCmZiZGV2IHdpbGwgYmUgZmx1c2hlZCB3aXRoIG5vIHJlbGlhYmxl IHdheSB0byBnZXQgaW52YWxpZGF0ZWQgYWdhaW4uDQoNClNvLCByaWdodCBub3cgSSBqdXN0IHNl ZSAzIHBhdGhzOg0KMS4gaW52YWxpZGF0ZSBpbnN0ZWFkIG9mIGZsdXNoIG9uIGZiIGRpcnR5IGNh bGxiYWNrIGp1c3QgdG8gbWFrZSBzdXJlDQpldmVyeXRoaW5nIGdldHMgaW52YWxpZGF0ZWQgd2hl biB1c2luZyBkdW1iIGlvY3Rscw0KMi4gY2hhbmdlIGZiZGV2IGFuZCBhbGwgaXRzIGNsaWVudHMg dG8gbWFrZSBhIHByb3BlciB1c2Ugb2YgYSBkaXJ0eS4NCjMuIGNoYW5nZSBmYmRldiwgZmJjb24g dG8gcHJvcGFnYXRlIGNvbnNvbGUgc3dpdGNoIChLRF9URVhUIGluZm8pIHdoZXJlDQp3ZSB3b3Vs ZCBoYXZlIGEgd2F5IHRvIGtub3cgZXhhY3RseSB3aG8gaXMgaW4gY29udHJvbA0KNC4gSW50cm9k b2NlIElPQ1RMcyBmb3IgUFNSIGFuZCBlbmFibGUvZGlzYWJsZSBpdCBvbiBERFggd2hlbiB3ZSBr bm93DQpERFggaGFzIGNvbnRyb2wuDQoNCkkgcmVhbGx5IGRvbid0IGxpa2UgdGhlIGlkZWEgdG8g Y2hhbmdlIGZiZGV2IHNjcnVjdHVyZXMgYW5kIGl0cw0KY2xpZW50cy4uLg0KDQpQbGVhc2UgbGV0 IG1lIGtub3cgaWYgeW91IGhhdmUgb3RoZXIvYmV0dGVyIGlkZWFzIGFuZCBhbHNvIHdoYXQgcGF0 aCB5b3UNCnByZWZlci4uLg0KDQoNClRoYW5rcywNClJvZHJpZ28uDQo+ICANCj4gPiBBbHNvLCB3 ZSd2ZSBiZWVuIGRpc2N1c3NpbmcgYSBib290IHNwbGFzaCBzY3JlZW4sIGFuZCwgYWNjb3JkaW5n IHRvDQo+ID4gd2hhdCB5b3Ugc2FpZCwgaXQncyBzdXBwb3NlZCB0byBiZSB1c2luZyB0aGUgZHVt YiBpbnRlcmZhY2VzLCByaWdodD8NCj4gPiBTbyBJIHNlZSB0aGF0IHRoZSBkdW1iIG1tYXAgaXMg anVzdCBhIGdlbV9tbWFwKCkgdG8gb3VyIGRyaXZlci4gQnV0DQo+ID4gUFNSIGlzIHN1cHBvc2Vk IHRvIGdldCBkaXNhYmxlZCBhZnRlciBHVFQgbW1hcHMuIFdoeSBpcyBpdCBub3QNCj4gPiBkaXNh YmxlZCBpbiB0aGlzIGNhc2U/IFRoYXQgaXMgYmVjYXVzZSB3ZSBkb24ndCBnZXQgdGhlIGludmFs aWRhdGUNCj4gPiBjYWxsIGFmdGVyIHRoZSBtbWFwLCByaWdodD8gSWYgd2UgcmVxdWlyZSBhbiBp bnZhbGlkYXRlIG9uIHRoZSBkaXJ0eQ0KPiA+IGlvY3RsLCBpdCBtZWFucyB0aGF0IFBTUiBpcyBl bmFibGVkIGV2ZW4gdGhvdWdoIGl0IGlzIEdUVCBtbWFwcGVkLi4uDQo+ID4gVGhhdCdzIHN1cHBv c2VkIHRvIGJlIHdyb25nLCByaWdodD8gU2hvdWxkbid0IHRoZSBtbWFwIElPQ1RMIGZvcmNlIGFu DQo+ID4gaW52YWxpZGF0ZT8NCj4gDQo+IFllYWggZHVtYiBtbWFwIHVzZXJzIGFyZSBzdXBwb3Nl ZCB0byBjYWxsIGRpcnR5ZmIgYWZ0ZXIgZWFjaCBkcmF3IGNhbGwuDQo+IA0KPiBpOTE1IHVzZXJz cGFjZSBjb3VsZCBzdGFydCBkb2luZyB0aGUgc2FtZSB0byBtYXJrIHRoZSBndHQgbW1hcCBpbnZh bGlkYXRlDQo+IGFzIGRvbmUgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgcG9pbnQgd2hlcmUgd2Ug c3RvcCBpdCByaWdodCBub3cgd2l0aCBhbg0KPiBpOTE1IGlvY3RsLiBBbmQgdG8gYmUgYWJsZSB0 byB3b3JrIHRvZ2V0aGVyIHdpdGggc2V0X2RvbWFpbihHVFQpIGl0IHJlYWxseQ0KPiBuZWVkcyB0 byBiZSBhIGZsdXNoIGluIC0+ZGlydHkoKQ0KPiAtRGFuaWVsDQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==