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: Tue, 7 Jul 2015 20:23:46 +0000 Message-ID: <1436300948.28692.401.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> <1436225074.28692.391.camel@intel.com> <20150707112425.GK7568@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 3B99B6E148 for ; Tue, 7 Jul 2015 13:23:48 -0700 (PDT) In-Reply-To: <20150707112425.GK7568@phenom.ffwll.local> Content-Language: en-US Content-ID: <81FF681735972C488AE0D1A9538EDE03@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 T24gVHVlLCAyMDE1LTA3LTA3IGF0IDEzOjI0ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBNb24sIEp1bCAwNiwgMjAxNSBhdCAxMToxOTowM1BNICswMDAwLCBWaXZpLCBSb2RyaWdv IHdyb3RlOg0KPiA+IE9uIE1vbiwgMjAxNS0wNy0wNiBhdCAxOTo1NiArMDIwMCwgRGFuaWVsIFZl dHRlciB3cm90ZToNCj4gPiA+IE9uIE1vbiwgSnVsIDA2LCAyMDE1IGF0IDAyOjExOjU1UE0gLTAz MDAsIFBhdWxvIFphbm9uaSB3cm90ZToNCj4gPiA+ID4gMjAxNS0wNy0wNiAxMzo0MyBHTVQtMDM6 MDAgVml2aSwgUm9kcmlnbyA8cm9kcmlnby52aXZpQGludGVsLmNvbT46DQo+ID4gPiA+ID4gT24g RnJpLCAyMDE1LTA3LTAzIGF0IDA5OjEwICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KPiA+ ID4gPiA+PiBPbiBUaHUsIEp1bCAwMiwgMjAxNSBhdCAwNDo0MTozMlBNICswMDAwLCBWaXZpLCBS b2RyaWdvIHdyb3RlOg0KPiA+ID4gPiA+PiA+IE9uIFRodSwgMjAxNS0wNy0wMiBhdCAxMzowMyAt MDMwMCwgUGF1bG8gWmFub25pIHdyb3RlOg0KPiA+ID4gPiA+PiA+ID4gMjAxNS0wNi0zMCAyMDo0 MiBHTVQtMDM6MDAgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPjoNCj4gPiA+ ID4gPj4gPiA+ID4gTGV0J3MgZG8gYSBmcm9udGJ1ZmZlciBpbnZhbGlkYXRpb24gb24gZGlydHkg ZmIuDQo+ID4gPiA+ID4+ID4gPiA+IFRvIGJlIHVzZWQgZm9yIERJUlRZRkIgZHJtIGlvY3RsLg0K PiA+ID4gPiA+PiA+ID4gPg0KPiA+ID4gPiA+PiA+ID4gPiBUaGlzIHBhdGNoIHNvbHZlcyB0aGUg YmlnZ2VzdCBQU1Iga25vd24gaXNzdWUsIHRoYXQgaXMNCj4gPiA+ID4gPj4gPiA+ID4gbWlzc2Vk IHNjcmVlbiB1cGRhdGVzIGR1cmluZyBib290LCBtYWlubHkgd2hlbiB0aGVyZSBpcyBhIHNwbGFz aA0KPiA+ID4gPiA+PiA+ID4gPiBzY3JlZW4gaW52b2x2ZWQgbGlrZSBwbHltb3V0aC4NCj4gPiA+ ID4gPj4gPiA+ID4NCj4gPiA+ID4gPj4gPiA+ID4gUGx5bW90aCB3aWxsIGRvIGEgbW9kZXNldCBv dmVyIGlvY3RsIHRoYXQgZmx1c2hlcyBmcm9udGJ1ZmZlcg0KPiA+ID4gPiA+PiA+ID4gPiB0cmFj a2luZyBhbmQgUFNSIGdldHMgYmFjayB0byB3b3JrIHdoaWxlIGl0IGNhbm5vdCB0cmFjayB0aGUN Cj4gPiA+ID4gPj4gPiA+ID4gc2NyZWVuIHVwZGF0ZXMgYW5kIGV4aXQgcHJvcGVybHkuIEhvd2V2 ZXIgcGx5bW91dGggYWxzbyB1c2VzDQo+ID4gPiA+ID4+ID4gPiA+IGEgZGlydHlmYiBpb2N0bCB3 aGVuZXZlciB1cGRhdGluZyB0aGUgc2NyZWVuLiBTbyBsZXQncyB1c2UgaXQNCj4gPiA+ID4gPj4g PiA+ID4gdG8gaW52YWxpZGF0ZSBQU1IgYmFjayBhZ2Fpbi4NCj4gPiA+ID4gPj4gPiA+ID4NCj4g PiA+ID4gPj4gPiA+ID4gdjI6IFJlbW92ZSBPUklHSU5fRkJfRElSVFkgYW5kIHVzZSBPUklHSU5f R1RUIGluc3RlYWQgc2luY2UgZGlydHkNCj4gPiA+ID4gPj4gPiA+ID4gICAgIGNhbGxiYWNrIGlz IGp1c3QgY2FsbGVkIGFmdGVyIGZldyBzY3JlZW4gdXBkYXRlcyBhbmQgbm90IG9uDQo+ID4gPiA+ ID4+ID4gPiA+ICAgICBldmVyeW9uZSBhcyBwb2ludGVkIGJ5IERhbmllbC4NCj4gPiA+ID4gPj4g PiA+ID4NCj4gPiA+ID4gPj4gPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+DQo+ID4gPiA+ID4+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8 cm9kcmlnby52aXZpQGludGVsLmNvbT4NCj4gPiA+ID4gPj4gPiA+ID4gLS0tDQo+ID4gPiA+ID4+ ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxOCArKysrKysr KysrKysrKysrKysNCj4gPiA+ID4gPj4gPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRp b25zKCspDQo+ID4gPiA+ID4+ID4gPiA+DQo+ID4gPiA+ID4+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMNCj4gPiA+ID4gPj4gPiA+ID4gaW5kZXggNzI0YjBlMy4uYjU1YjFi NiAxMDA2NDQNCj4gPiA+ID4gPj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jDQo+ID4gPiA+ID4+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYw0KPiA+ID4gPiA+PiA+ID4gPiBAQCAtMTQzOTMsOSArMTQzOTMsMjcg QEAgc3RhdGljIGludCBpbnRlbF91c2VyX2ZyYW1lYnVmZmVyX2NyZWF0ZV9oYW5kbGUoc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+ID4gPiA+ID4+ID4gPiA+ICAgICAgICAgcmV0dXJuIGRy bV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCBoYW5kbGUpOw0KPiA+ID4gPiA+ PiA+ID4gPiAgfQ0KPiA+ID4gPiA+PiA+ID4gPg0KPiA+ID4gPiA+PiA+ID4gPiArc3RhdGljIGlu dCBpbnRlbF91c2VyX2ZyYW1lYnVmZmVyX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LA0KPiA+ID4gPiA+PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwNCj4gPiA+ID4gPj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmbGFncywg dW5zaWduZWQgY29sb3IsDQo+ID4gPiA+ID4+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLA0KPiA+ ID4gPiA+PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIG51bV9jbGlwcykNCj4gPiA+ID4gPj4gPiA+DQo+ID4gPiA+ID4+ID4gPiBZ b3UgZG9uJ3QgbmVlZCB0aGUgd2hpdGUgc3BhY2Ugb24gdGhlIGxpbmVzIGFib3ZlLCBqdXN0IHRo ZSB0YWJzLg0KPiA+ID4gPiA+PiA+ID4NCj4gPiA+ID4gPj4gPiA+ID4gK3sNCj4gPiA+ID4gPj4g PiA+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmItPmRldjsNCj4gPiA+ID4g Pj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9f aW50ZWxfZnJhbWVidWZmZXIoZmIpOw0KPiA+ID4gPiA+PiA+ID4gPiArICAgICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2JqOw0KPiA+ID4gPiA+PiA+ID4g PiArDQo+ID4gPiA+ID4+ID4gPiA+ICsgICAgICAgbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOw0KPiA+ID4gPiA+PiA+ID4gPiArICAgICAgIGludGVsX2ZiX29ial9pbnZhbGlkYXRlKG9i aiwgT1JJR0lOX0dUVCk7DQo+ID4gPiA+ID4+ID4gPg0KPiA+ID4gPiA+PiA+ID4gQXMgZmFyIGFz IEkgdW5kZXJzdG9vZCBmcm9tIG15IGJyaWVmIGludmVzdGlnYXRpb24sIHRoZSBkaXJ0eSBJT0NU TA0KPiA+ID4gPiA+PiA+ID4ganVzdCBzYXlzICJoZXksIEknbSBkb25lIHdyaXRpbmcgb24gdGhl IG1lbW9yeSwgeW91IGNhbiBmbHVzaCB0aGluZ3MNCj4gPiA+ID4gPj4gPiA+IG5vdyIsIGFuZCBp ZiB0aGUgdXNlciB3cml0ZXMgb24gdGhlIGJ1ZmZlciBhZ2FpbiBsYXRlciwgaXQgd2lsbCBuZWVk DQo+ID4gPiA+ID4+ID4gPiB0byBjYWxsIHRoZSBkaXJ0eSBJT0NUTCBhZ2Fpbi4gU28gc2hvdWxk bid0IHdlIGNhbGwNCj4gPiA+ID4gPj4gPiA+IGludGVsX2ZiX29ial9mbHVzaChvYmosIGZhbHNl KSBoZXJlPyBJdCBzZWVtcyB0aGlzIHdhcyBhbHNvIHBvaW50ZWQgYnkNCj4gPiA+ID4gPj4gPiA+ IERhbmllbCBvbiB0aGUgZmlyc3QgcmV2aWV3LiBJdCB3b3VsZCBiZSBiZXR0ZXIgYmVjYXVzZSBp dCB3b3VsZCBhbGxvdw0KPiA+ID4gPiA+PiA+ID4gdXMgdG8gYWN0dWFsbHkga2VlcCBQU1IvRkJD IGVuYWJsZWQuDQo+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPj4gPiBUaGUgZmx1c2ggY2F1c2VkIGJ5 IHRoZSBkdW1iIG1vZGVzZXQgaW9jdGwgaXMgZXhhY3RseSB3aGF0IEkgd2FudCB0bw0KPiA+ID4g PiA+PiA+IHJldmVydCBoZXJlLg0KPiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4+ID4gV2VsbCwgSSBq dXN0IHRlc3RlZCB0byBkb3VibGUgY2hlY2sgaGVyZSBhbmQgZmx1c2ggbWFrZXMgbWUgdG8gbWlz cw0KPiA+ID4gPiA+PiA+IHNjcmVlbiB1cGRhdGVzLiAodHJpcGxlIGNoZWNrZWQgd2l0aCByZXRp cmVkID0gdHJ1ZSBhcyB3ZWxsIGp1c3QgaW4NCj4gPiA+ID4gPj4gPiBjYXNlKQ0KPiA+ID4gPiA+ PiA+DQo+ID4gPiA+ID4+ID4gZmJkZXYgY29tZXMgdG8gcGxhY2UgYW5kIGludmFsaWRhdGVkIGZy b250YnVmZmVyLCB0aGVuIHBseW1vdXRoIGRvZXMgYQ0KPiA+ID4gPiA+PiA+IGZsdXNoIHRoYXQg bWFrZXMgcHNyIHN0YXJ0IHdvcmtpbmcgd2hlbiBpdCBzaG91bGQgY29udGludWUgZGlzYWJsZWQu DQo+ID4gPiA+ID4+ID4gQ29udGludWUgZmx1c2hpbmcgaXQgZG9lc24ndCBzb2x2ZSB0aGUgcHJv YmxlbSwganVzdCByYXRpZnkgaXQuDQo+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPj4gPiBCdXQgYmVz aWRlIHRoZSBpc3N1ZSB0aGF0IGl0IGlzIHNvbHZpbmcgSSBkb24ndCBiZWxpZXZlIHdlIHdhbnQg aXMgYQ0KPiA+ID4gPiA+PiA+IGZsdXNoIGFueXdheS4gVGhlcmUgaXMgc29tZXRoaW5nIHdyaXRp bmcgZGlyZWN0bHkgdG8gZnJvbnRidWZmZXIgd2l0aCBubw0KPiA+ID4gPiA+PiA+IGludmFsaWRh dGlvbi4gVGhlIGRpcnR5IGNhbGwgaXMgc3VwcG9zZWQgdG8gYmUgYSBkYW1hZ2UgY2FsbCB0aGF0 DQo+ID4gPiA+ID4+ID4gYWN0dWFsbHkgdGVsbHMgc29tZXRoaW5nIG9uIHRoZSBzY3JlZW4gZ290 IHdyaXR0ZW4gYW5kIG5lZWRzIHRvIGJlDQo+ID4gPiA+ID4+ID4gdXBkYXRlZCBpZiBpdCBoYXNu J3Qgc3RpbGwuIEluIG91ciBjYXVzZSB0aGlzIGlzIGV4YWN0bHkgdGhlIGZyb250YnVmZmVyDQo+ ID4gPiA+ID4+ID4gaW52YWxpZGF0ZSwgbm90IHRoZSBmbHVzaC4NCj4gPiA+ID4gPj4gPg0KPiA+ ID4gPiA+PiA+IFRoZSBmbHVzaCBwbGFjZSB3b3VsZCBiZSBhZnRlciBpdCByZWFsbHkgc3RvcHBl ZCBkb2luZyBzb21ldGhpbmcsIGJ1dA0KPiA+ID4gPiA+PiA+IHNpbmNlIEkgZG9uJ3QgdHJ1c3Qg aXQgSSBwcmVmZXIgdG8gbGV0IGl0IGludmFsaWRhdGVkIHVudGlsIG5leHQgZmxpcC4NCj4gPiA+ ID4gPj4NCj4gPiA+ID4gPj4gU2VlIG15IHJldmlldyBvbiB0aGUgZmlyc3Qgcm91bmQgb2YgdGhp cyBwYXRjaDogZGlydHlmYiBfaXNfIGEgZmx1c2guIElmDQo+ID4gPiA+ID4+IGl0J3Mgbm90IGVu b3VnaCB0aGVuIHRoZXJlJ3Mgc29tZSBvdGhlciBwcm9ibGVtcyBzdGlsbCBhcm91bmQuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBXZWxsLCB0aGUgZmx1c2ggaXRzZWxmIGluIHRoZSB3YXkgaXQgaXMg ZGVmaW5lZCBpcyB0byBmbHVzaCBmcm9udGJ1ZmZlcg0KPiA+ID4gPiA+IGJpdHMgYW5kIHB1dCBw b3dlciBzYXZpbmcgZmVhdHVyZXMgYmFjayB0byB3b3JrLiBQU1IgZmx1c2ggZm9yIGluc3RhbmNl DQo+ID4gPiA+ID4gZG9lc24ndCBleGl0IG9uIGV2ZXJ5IGZsdXNoLiBPbmx5IGluIHRoZSBjYXNl cyB0aGF0IHdlIGtub3cgSFcgdHJhY2tpbmcNCj4gPiA+ID4gPiBkb2Vzbid0IHdvcmsuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBPbmUgcG9zc2liaWxpdHkgd291bGQgYmUgY2hhbmdlIFBTUiB0byBy ZXNwZWN0IHRoYXQgYWxsIGZsdXNoIGFsd2F5cyBpcw0KPiA+ID4gPiA+IGludmFsaWRhdGUgKGV4 aXQpICsgZmx1c2ggZmJfYml0cy4gQnV0IEknbSBhZ2FpbnN0IHRoaXMgc2luY2UgUFNSIG9uDQo+ ID4gPiA+ID4gY29yZSBwbGF0Zm9ybXMgZG9lc24ndCBoYXZlIFNXIHRyYWNra2luZyBleHQgYW5k IGl0IHdhc24ndCBpbXBsZW1lbnRlZA0KPiA+ID4gPiA+IHRvIGJlIGZ1bGx5IGVuYWJsZWQvZGlz YWJsZWQgZXZlcnkgdGltZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFub3RoZXIgaWRlYSBvbiB0 aGlzIGxpbmUgaXMgdG8gbWFrZSBmbHVzaHMga25vdyBvcmlnaW5zIG9yIGF0IGxlYXN0IGENCj4g PiA+ID4gPiBib29sZWFuIHRvIHNlcGFyYXRlIGNhc2VzIHdoZXJlIGZsdXNoIG11c3QgYmUgaGFu ZGxlZCBhcyBmbHVzaCBiaXRzICsNCj4gPiA+ID4gPiBjb250aW51ZSB3b3JraW5nIG9yIGludmFs aWRhdGUgKyBmbHVzaCBiaXRzICsgc3RhcnQgd29ya2luZyBhZ2Fpbg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gUGxlYXNlIGxldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gQnV0IHB1dHRpbmcgZmx1c2hzIG9uIHRoaXMgZGlydHkgY2FsbGJhY2sgaXMgY3VycmVu dGx5IHVzZWxlc3MgYmVjYXVzZQ0KPiA+ID4gPiA+IGZsdXNoIGp1c3QgdGVsbHMgcHNyIHRvIGNv bnRpbnVlIHdvcmtpbmcgd2l0aG91dCBnZXR0aW5nIHNjcmVlbiB1cGRhdGVzLg0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gV2VsbCwgdGhpcyBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgZGlzY3Vzc2lvbiBm b3Igbm93LCBidXQgYWxzbyBldmVuIHdlDQo+ID4gPiA+ID4gY2hhbmdlIGZsdXNoIGludGVyZmFj ZSBvciBvbmx5IGluIFBTUiBJJ20gbm90IHN1cmUgdGhpcyB3aWxsIHdvcmsuDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBUaGlzIGRpcnR5IGNhc2UgaGFwcGVucyBpbiB0aGUgbWlkZGxlIG9mIGZiZGV2 IGFuZCB3aGVuIGl0IGdpdmVzIGNvbnRyb2wNCj4gPiA+ID4gPiBiYWNrIHRvIGZiY29uIHBzciB3 b3VsZCBiZSB3b3JraW5nIHdpdGhvdXQgbm8gb25lIGVsc2UgaW52YWxpZGF0ZSBvcg0KPiA+ID4g PiA+IGZsdXNoaW5nIGl0IGFuZCB3ZSB3b3VsZCBtaXNzIHNjcmVlbiB1cGRhdGVzIGFueXdheS4N Cj4gPiA+ID4gPiBCdXQgaW4gdGhpcyBjYXNlIEkgdW5kZXJzdGFuZCB0aGlzIGlzIGEgaGFjayBh bmQgaWYgd2UgcHV0IHRoZQ0KPiA+ID4gPiA+IGludmFsaWRhdGUgdGhlcmUgSSBzaG91bGQgYWxz byBwdXQgYSBGSVhNRSBYWFggZXhwbGFpbmluZyB0aGF0Li4uDQo+ID4gPiA+IA0KPiA+ID4gPiBM YXN0IHdlZWsgSSBkaXNjdXNzZWQgc29tZSBvZiB0aGlzIHdpdGggUm9kcmlnbyBvbiBJUkMgYW5k IHdlIGhhdmUNCj4gPiA+ID4gZGlmZmVyZW50IGludGVycHJldGF0aW9ucyBvbiB3aGF0IHRoZSBm cm9udGJ1ZmZlciB0cmFja2luZyBjYWxscyBtZWFuLg0KPiA+ID4gPiBEYW5pZWwsIGNhbiB5b3Ug cGxlYXNlIGNsYXJpZnkgYSBmZXcgdGhpbmdzPw0KPiA+ID4gPiANCj4gPiA+ID4gT25lIG9mIHRo ZSB0aGluZ3MgSSd2ZSBkaXNjdXNzZWQgd2l0aCBSb2RyaWdvIGlzIHRoYXQgSSBjb25zaWRlcg0K PiA+ID4gPiBpbnZhbGlkYXRlK2ZsdXNoIHRvIGJlIGVxdWl2YWxlbnQgdG8ganVzdCBhIGZsdXNo IGNhbGwsIHdoaWxlIFJvZHJpZ28NCj4gPiA+ID4gc2VlcyBib3RoIGNhc2VzIGFzIGRpZmZlcmVu dC4gRGFuaWVsLCBjYW4geW91IHBsZWFzZSBjbGFyaWZ5IHRoZQ0KPiA+ID4gPiBpbnRlbnRpb25z IG9mIHRoZSBmcm9udGJ1ZmZlciB0cmFja2luZyBpbmZyYXN0cnVjdHVyZSBoZXJlPw0KPiA+ID4g DQo+ID4gPiBZZWFoIGVzc2VudGlhbGx5IGZsdXNoIHdpdGhvdXQgYW4gaW52YWxpZGF0ZSBpcyBq dXN0IGEgaW5zdGFudGFuZW91cw0KPiA+ID4gaW52YWxpZGF0ZStmbHVzaC4gaW52YWxpZGF0ZSBq dXN0IG1lYW5zICJzb21lb25lIHN0YXJ0ZWQgdG8gZnJvbnRidWZmZXINCj4gPiA+IHJlbmRlciBh bmQgSSBoYXZlIG5vIGlkZWEgYXQgYWxsIHdoZW4gdGhhdCB3aWxsIHN0b3AiLiBGbHVzaCBtZWFu cw0KPiA+ID4gInNvbWVvbmUgaGFzIGRvbmUgc29tZSBmcm9udGJ1ZmZlciByZW5kZXJpbmcsIG1h a2Ugc3VyZSB0aG9zZSB1cGRhdGVzIGxhbmQNCj4gPiA+IG9uIHRoZSBzY3JlZW4iLiBTbyB5ZWFo IFBhdWxvJ3MgaWRlYSBpcyBjb3JyZWN0Lg0KPiA+IA0KPiA+IFRoYW5rcyBmb3IgdGhlIGNsYXJp ZmljYXRpb24uLi4NCj4gPiANCj4gPiA+IA0KPiA+ID4gUHJvYmxlbSBpcyBub3cgdGhhdCB3aGVu IHdlIGdldCBhIGZsaXAgd2UgYWxzbyBjYWxsIGZsdXNoLCBhbmQgZm9yIHBzciBvbg0KPiA+ID4g YmlnIGNvcmUgdGhhdCdzIHByb2JhYmx5IG5vdCB3aGF0IHdlIHdhbnQgc2luY2UgaXQgY2FuIGhh bmRsZSBmbGlwcw0KPiA+ID4gY29ycmVjdGx5LCBidXQgbm90IHJlYWwgZnJvbnRidWZmZXIgZmx1 c2hlcy4NCj4gPiA+IA0KPiA+ID4gPiBPbmUgY29udHJhZGljdGlvbiBJIHNlZSB3aXRoIHRoZSBj dXJyZW50IGNvZGUgaXMgdGhhdCBQU1IgZG9lcyBub3RoaW5nDQo+ID4gPiA+IG9uIGZsdXNoKCkg Zm9yIEJEVyBiZWNhdXNlIGl0IGJlbGlldmVzIHRoZSBIVyB0cmFja2luZywgYnV0IGl0IGRvZXMN Cj4gPiA+ID4gcHNyX2V4aXQoKSBvbiBpbnZhbGlkYXRlIGZvciBldmVyeSBzaW5nbGUgY2FzZS4g SWYgaXQgcmVsaWVzIG9uIHRoZSBIVw0KPiA+ID4gPiB0cmFja2luZywgc2hvdWxkbid0IGl0IGFs c28gZG8gbm90aGluZyBvbiBpbnZhbGlkYXRlKCk/IElmIGl0IGRvZXNuJ3QNCj4gPiA+ID4gcmVs eSBvbiBIVyB0cmFja2luZywgc2hvdWxkbid0IGl0IGRvIHNvbWV0aGluZyBvbiBmbHVzaCgpPyBJ ZiBpdA0KPiA+ID4gPiByZWxpZXMgb24ganVzdCBhIGZldyBzcGVjaWZpYyBwaWVjZXMgb2YgdGhl IEhXIHRyYWNraW5nLCBzaG91bGRuJ3QgaXQNCj4gPiA+ID4gY2hlY2sgZW51bSBmYl9vcF9vcmln aW4/IFRoZSBjb25jbHVzaW9uIGhlcmUgaXMgdGhhdCB0aGUgUFNSIGNvZGUgaXMNCj4gPiA+ID4g Y29tcGxldGVseSByZWx5aW5nIG9uIGhhdmluZyBpbnZhbGlkYXRlKCkgY2FsbHMgYmVmb3JlIHRo ZSBmbHVzaCgpIGZvcg0KPiA+ID4gPiBjYXNlcyB3aGVyZSBpdCBuZWVkcyBoZWxwIGZyb20gc29m dHdhcmUuDQo+ID4gPiANCj4gPiA+IENhbGxpbmcgaW52YWxpZGF0ZSBiZWZvcmUgZmx1c2ggaXNu J3QgaW1vIHRoZSByaWdodCBmaXggc2luY2UgdXN1YWxseQ0KPiA+ID4gKGV4Y2VwdCB3aGVuIHlv dSBoYXZlIHdvcmtpbmcgaHcgdHJhY2tpbmcgbGlrZSBmYmMgZm9yIGd0dCBtbWFwcykgeW91IG5l ZWQNCj4gPiA+IHRvIHN0b3AgcHNyL2ZiYy93aGF0ZXZlciBvbiBpbnZhbGlkYXRlLiBXaGVyZWFz IG9uIGZsdXNoIHlvdSBqdXN0IG5lZWQgdG8NCj4gPiA+IG1ha2Ugc3VyZSBzY3JlZW4gY29udGVu dHMgZ2V0IHRvIHRoZSBzY3JlZW4uDQo+ID4gPiANCj4gPiA+IEkgdGhpbmsgdGhlIGJlc3Qgb3B0 aW9uIHdvdWxkIGJlIHRvIHdpcmUgdXAgdGhlIGZiX29wX29yaWdpbiBmb3IgZmx1c2hlcw0KPiA+ ID4gdG9vLCBhbmQgdGhlbiBmaWx0ZXIgb3V0IE9SSUdJTl9GTElQIGZvciBwc3IgKGV4Y2VwdCBm b3Igc3ByaXRlcyBvbiBoc3cpDQo+ID4gPiBvbiBiaWcgY29yZS4NCj4gPiANCj4gPiBPaywgdGhp cyBhcHByb2FjaCBoZXJlIHdvcmtzIGhlcmUgd2hlbiBJIGhhdmUgc3BsYXNoIHNjcmVlbiB0YWtp bmcgcGxhY2UNCj4gPiBhbmQgWCBjb21pbmcgcmlnaHQgYWZ0ZXIgaXQuIEhvd2V2ZXIgd2Ugc3Rp bGwgaGF2ZSBvbmUgaXNzdWUgdGhhdCBpcw0KPiA+IHdoZW4gaXQgZ29lcyBiYWNrIHRvIGNvbnNv bGUuDQo+ID4gDQo+ID4gZmJkZXYgb24gc2V0X3BhciBpbnZhbGlkYXRlZCBmcm9udCBidWZmZXIs IGJ1dCB0aGVuIHNwbGFzaCBzY3JlZW4gY2FtZQ0KPiA+IGFuZCBmbHVzaGVkIGl0LCBwc3Igc3Rh cnRlZCB3b3JraW5nLCB0aGVuIGNvbnRyb2wgZ2V0cyBiYWNrIHRvIGZiZGV2IGFuZA0KPiA+IG5v dGhpbmcgaW52YWxpZGF0ZXMgbW9yZSBzbyBmcm9tIHRoaXMgcG9pbnQgb24gd2UgbWlzcyBtYW55 IChpZiBub3QgYWxsKQ0KPiA+IHNjcmVlbiB1cGRhdGVzLg0KPiA+IA0KPiA+IFNvIHdlIGFyZSBn b2luZyB0byBhIGVuZGxlc3MgcGF0aCB3aGVyZSB3ZSBjb3VsZCBoYXZlIG1hbnkgY2FzZXMgd2hl cmUNCj4gPiBmYmRldiB3aWxsIGJlIGZsdXNoZWQgd2l0aCBubyByZWxpYWJsZSB3YXkgdG8gZ2V0 IGludmFsaWRhdGVkIGFnYWluLg0KPiA+IA0KPiA+IFNvLCByaWdodCBub3cgSSBqdXN0IHNlZSAz IHBhdGhzOg0KPiA+IDEuIGludmFsaWRhdGUgaW5zdGVhZCBvZiBmbHVzaCBvbiBmYiBkaXJ0eSBj YWxsYmFjayBqdXN0IHRvIG1ha2Ugc3VyZQ0KPiA+IGV2ZXJ5dGhpbmcgZ2V0cyBpbnZhbGlkYXRl ZCB3aGVuIHVzaW5nIGR1bWIgaW9jdGxzDQo+ID4gMi4gY2hhbmdlIGZiZGV2IGFuZCBhbGwgaXRz IGNsaWVudHMgdG8gbWFrZSBhIHByb3BlciB1c2Ugb2YgYSBkaXJ0eS4NCj4gPiAzLiBjaGFuZ2Ug ZmJkZXYsIGZiY29uIHRvIHByb3BhZ2F0ZSBjb25zb2xlIHN3aXRjaCAoS0RfVEVYVCBpbmZvKSB3 aGVyZQ0KPiA+IHdlIHdvdWxkIGhhdmUgYSB3YXkgdG8ga25vdyBleGFjdGx5IHdobyBpcyBpbiBj b250cm9sDQo+ID4gNC4gSW50cm9kb2NlIElPQ1RMcyBmb3IgUFNSIGFuZCBlbmFibGUvZGlzYWJs ZSBpdCBvbiBERFggd2hlbiB3ZSBrbm93DQo+ID4gRERYIGhhcyBjb250cm9sLg0KPiA+IA0KPiA+ IEkgcmVhbGx5IGRvbid0IGxpa2UgdGhlIGlkZWEgdG8gY2hhbmdlIGZiZGV2IHNjcnVjdHVyZXMg YW5kIGl0cw0KPiA+IGNsaWVudHMuLi4NCj4gPiANCj4gPiBQbGVhc2UgbGV0IG1lIGtub3cgaWYg eW91IGhhdmUgb3RoZXIvYmV0dGVyIGlkZWFzIGFuZCBhbHNvIHdoYXQgcGF0aCB5b3UNCj4gPiBw cmVmZXIuLi4NCj4gDQo+IEFzIEkgbWVudGlvbmVkIHdlJ3JlIG5vdCB0aGUgb25seSBvbmVzIHdp dGggZXhhY3RseSB0aGlzIHByb2JsZW0sIHVkbCAmDQo+IHF4bCBoYXZlIHRoZSBzYW1lIG5lZWQg Zm9yIGNhbGxpbmcgZGlydHlmYiBhbGwgb3ZlciB0aGUgcGxhY2UgZnJvbSBmYmRldg0KPiBob29r cy4gcXhsIHNlZW1zIHRvIGhhdmUgdGhlIG1vcmUgY29tcGxldGUgc29sdXRpb24gdXNpbmcgYSB3 b3JrcXVldWUuDQoNClllcywgSSBhZ3JlZS4gSSBqdXN0IHdhbnQgdG8gYmxvY2sgUFNSIG9uIHRo aXMgZmJkZXYgcmV3b3JrIHRoYXQgaXMgbm90DQpzaW1wbGUsIGludm9sdmUgbWFueSBtYWludGFp bmVycyBhbmQgaXQgaXMgbm90IHRoZSBtYWluIFBTUiB1c2UgY2FzZS4NCg0KPiANCj4gV2hhdCBJ J20gc3RpbGwgd29uZGVyaW5nIGFib3V0IHRob3VnaCBpcyB3aHkgd2UgZG9uJ3QgZ2V0IGFuIGZi ZGV2DQo+IGludmFsaWRhdGUgd2hlbiBzd2l0Y2hpbmcgYmFjayB0byB0aGUgY29uc29sZS4gYm9v dCBzcGxhc2ggc2hvdWxkIGJlIGRvaW5nDQo+IGl0J3MgZHJhd2luZyBvbiBpdHMgb3duIGJ1ZmZl ciwgZmJjb24gd291bGQgc3dpdGNoIGJhY2sgKHdoaWNoIG1lYW5zIGENCj4gc2V0X3BhciBjYWxs KSBhbmQgdGhhdCBzaG91bGQgaW52YWxpZGF0ZS4gSSBoYXZlIG5vIGlkZWEgd2h5IHdlIGRvbid0 IGdldA0KPiB0aGlzIGNhbGwgaW4geW91ciBzZXR1cCAuLi4NCg0KWW91IHdlcmUgcmlnaHQuLi4u IEkgd2Fzbid0IHJlbHlpbmcgb24gc2V0X3BhciBidXQgaXQgaXMgYWN0dWFsbHkgY2FsbGVkDQpv biBmYmNvbiBzd2l0Y2ggYmFjaywgYnV0IHRoZSBpbnZhbGlkYXRlIHdhcyBoYXBwZW5pbmcgb25s eSBvbiB0aGUgZmlyc3QNCnRpbWUgYmVjYXVzZSB3cml0ZV9kb21haW4gd2FzIGFscmVhZHkgR1RU LiBTbyB3aXRoIHRoZSBmb2xsb3dpbmcgcGF0Y2gNCndlIGNhbiBzb2x2ZSB0aGUgY2FzZSB3aGVy ZSBJIHByZXNzICJFc2MiIGtleSBvbiB0aGUgbWlkZGxlIG9mIHNwbGFzaA0Kc2NyZWVuOg0KaHR0 cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL352aXZpamltL2RybS1pbnRlbC9jb21taXQvP2g9cHNy JmlkPWNlNzIyNjA1NDA4NTA4MGMxMGU1M2I4Mjc0M2E3NmUwNTkzYjc4NWENCg0KDQpCdXQgSSB3 YXMgZmFjaW5nIGFsc28gYW5vdGhlciBpc3N1ZSB3aXRoIGNyeXB0byBwYXNzIGFuZCB3aXRob3V0 IGFueQ0Kc3BsYXNoIGFuZCB0cmFjZSBsZWFkIG1lIHRvIGZiZGV2X3Jlc3RvcmVfbW9kZSBzbyBh bm90aGVyIGhhY2s6DQpodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvfnZpdmlqaW0vZHJtLWlu dGVsL2NvbW1pdC8/aD1wc3ImaWQ9OWE3YzNmNzg1M2EzMjdhODI1NTFlMzM1YjYwNTZiNWU1MzYy MDA0YQ0KDQoNCkFsbCAoYW4gbW9yZSkgaW4NCmh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9+ dml2aWppbS9kcm0taW50ZWwvbG9nLz9oPXBzcg0KZm9yIG5vdy4uLiB3aGlsZSBJJ20gbm90IHN1 cmUgYSBmbGlja2VyIG9uIGZlZG9yYSByZXBvcnRlZCBieSBjb21tdW5pdHkNCmlzIG5vdCByZWxp YWJseSBzb2x2ZWQ6DQoNCmh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9MTIzNjMwMw0KDQpUaGFua3MsDQpSb2RyaWdvLg0KDQoNCg0KDQoNCj4gLURhbmllbA0KDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=