From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: Asynchronous eviction [WAS Re: [PATCH] drm/ttm: add minimum residency constraint for bo eviction] Date: Fri, 30 Nov 2012 22:36:01 +0100 Message-ID: <50B926C1.1000606@shipmail.org> References: <50B87EED.5020400@shipmail.org> <50B8E7FF.8050006@shipmail.org> <50B8F048.3060707@shipmail.org> <20121130180738.GA2111@gmail.com> <50B8FB68.4060605@shipmail.org> <20121130192542.GB2111@gmail.com> <50B918A5.9080802@shipmail.org> <20121130210753.GC2111@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from GOTHNET-SMTP2.gothnet.se (relay.gothnet.se [82.193.160.251]) by gabe.freedesktop.org (Postfix) with ESMTP id ADA96E6030 for ; Fri, 30 Nov 2012 13:36:16 -0800 (PST) In-Reply-To: <20121130210753.GC2111@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Jerome Glisse Cc: Jerome Glisse , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMTEvMzAvMjAxMiAxMDowNyBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPiBPbiBGcmksIE5v diAzMCwgMjAxMiBhdCAwOTozNTo0OVBNICswMTAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ PiBPbiAxMS8zMC8yMDEyIDA4OjI1IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4gT24gRnJp LCBOb3YgMzAsIDIwMTIgYXQgMDc6MzE6MDRQTSArMDEwMCwgVGhvbWFzIEhlbGxzdHJvbSB3cm90 ZToKPj4+PiBPbiAxMS8zMC8yMDEyIDA3OjA3IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4+ PiBPbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAwNjo0MzozNlBNICswMTAwLCBUaG9tYXMgSGVsbHN0 cm9tIHdyb3RlOgo+Pj4+Pj4gT24gMTEvMzAvMjAxMiAwNjoxOCBQTSwgSmVyb21lIEdsaXNzZSB3 cm90ZToKPj4+Pj4+PiBPbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAxMjowOCBQTSwgVGhvbWFzIEhl bGxzdHJvbSA8dGhvbWFzQHNoaXBtYWlsLm9yZz4gd3JvdGU6Cj4+Pj4+Pj4+IE9uIDExLzMwLzIw MTIgMDU6MzAgUE0sIEplcm9tZSBHbGlzc2Ugd3JvdGU6Cj4+Pj4+Pj4+PiBPbiBGcmksIE5vdiAz MCwgMjAxMiBhdCA0OjM5IEFNLCBUaG9tYXMgSGVsbHN0cm9tIDx0aG9tYXNAc2hpcG1haWwub3Jn Pgo+Pj4+Pj4+Pj4gd3JvdGU6Cj4+Pj4+Pj4+Pj4gT24gMTEvMjkvMjAxMiAxMDo1OCBQTSwgTWFy ZWsgT2zFocOhayB3cm90ZToKPj4+Pj4+Pj4+Pj4gV2hhdCBJIHRyaWVkIHRvIHBvaW50IG91dCB3 YXMgdGhhdCB0aGUgc3luY2hyb25pemF0aW9uIHNob3VsZG4ndCBiZQo+Pj4+Pj4+Pj4+PiBuZWVk ZWQsIGJlY2F1c2UgdGhlIENQVSBzaG91bGRuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgY29udGVu dHMgb2YKPj4+Pj4+Pj4+Pj4gZXZpY3RlZCBidWZmZXJzLiBUaGUgR1BVIG1vdmVzIHRoZSBidWZm ZXJzLCBub3QgdGhlIENQVS4gV2hhdCBkb2VzIHRoZQo+Pj4+Pj4+Pj4+PiBDUFUgZG8gYmVzaWRl cyB1cGRhdGluZyBzb21lIGtlcm5lbCBzdHJ1Y3R1cmVzPwo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ PiBBbHNvLCBidWZmZXIgZGVsZXRpb24gaXMgc29tZXRoaW5nIHdoZXJlIHlvdSBkb24ndCBuZWVk IHRvIHdhaXQgZm9yCj4+Pj4+Pj4+Pj4+IHRoZSBidWZmZXIgdG8gYmVjb21lIGlkbGUgaWYgeW91 IGtub3cgdGhlIG1lbW9yeSBhcmVhIHdvbid0IGJlCj4+Pj4+Pj4+Pj4+IG1hcHBlZCBieSB0aGUg Q1BVLCBldmVyLiBUaGUgbWVtb3J5IGNhbiBiZSByZWNsYWltZWQgcmlnaHQgYXdheS4gSXQKPj4+ Pj4+Pj4+Pj4gd291bGQgYmUgdGhlIEdQVSB0byBtb3ZlIG5ldyBkYXRhIGluIGFuZCBvbmNlIHRo YXQgaGFwcGVucywgdGhlIG9sZAo+Pj4+Pj4+Pj4+PiBidWZmZXIgd2lsbCBiZSB0cml2aWFsbHkg aWRsZSwgYmVjYXVzZSBzaW5nbGUtcmluZyBHUFVzIGV4ZWN1dGUKPj4+Pj4+Pj4+Pj4gY29tbWFu ZHMgaW4gb3JkZXIuCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IE1hcmVrCj4+Pj4+Pj4+Pj4gQWN0 dWFsbHkgYXN5bmNocm9ub3VzIGV2aWN0aW9uIC8gZGVsZXRpb24gaXMgc29tZXRoaW5nIEkgaGF2 ZSBiZWVuCj4+Pj4+Pj4+Pj4gcHJvdG90eXBpbmcgZm9yIGEgd2hpbGUgYnV0IG5ldmVyIGdvdHRl biBhcm91bmQgdG8gaW1wbGVtZW50IGluIFRUTToKPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IFRoZXJl IGFyZSBhIGZldyBtaW5vciBjYXZlYXRzOgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gV2l0aCBidWZm ZXIgZGVsZXRpb24sIHdoYXQgeW91IHNheSBpcyB0cnVlIGZvciBmaXhlZCBtZW1vcnksIGJ1dCBu b3QgZm9yCj4+Pj4+Pj4+Pj4gVFQKPj4+Pj4+Pj4+PiBtZW1vcnkgd2hlcmUgcGFnZXMgYXJlIHJl Y2xhaW1lZCBieSB0aGUgc3lzdGVtIGFmdGVyIGJ1ZmZlciBkZXN0cnVjdGlvbi4KPj4+Pj4+Pj4+ PiBUaGF0IG1lYW5zIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byB3YWl0IGZvciBpZGxlIHRvIGZyZWUg R1BVIHNwYWNlLCBidXQgd2UKPj4+Pj4+Pj4+PiBuZWVkIHRvIHdhaXQgYmVmb3JlIHBhZ2VzIGFy ZSBoYW5kZWQgYmFjayB0byB0aGUgc3lzdGVtLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gU3dhcG91 dCBuZWVkcyB0byBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGV2aWN0ZWQgYnVmZmVycywgYnV0Cj4+ Pj4+Pj4+Pj4gc3luY2hyb25pemluZwo+Pj4+Pj4+Pj4+IGRvZXNuJ3QgbmVlZCB0byBoYXBwZW4g dW50aWwganVzdCBiZWZvcmUgc3dhcG91dC4KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IE11bHRpLXJp bmcgLSBDUFUgc3VwcG9ydDogSWYgYW5vdGhlciByaW5nIC8gZW5naW5lIG9yIHRoZSBDUFUgaXMg YWJvdXQgdG8KPj4+Pj4+Pj4+PiBtb3ZlIGluIGJ1ZmZlciBjb250ZW50cyB0byBWUkFNIG9yIGEg R1BVIGFwZXJ0dXJlIHRoYXQgd2FzIHByZXZpb3VzbHkKPj4+Pj4+Pj4+PiBldmljdGVkIGJ5IGFu b3RoZXIgcmluZywgaXQgbmVlZHMgdG8gc3luYyB3aXRoIHRoYXQgZXZpY3Rpb24sIGJ1dCBkb2Vz bid0Cj4+Pj4+Pj4+Pj4ga25vdyB3aGF0IGJ1ZmZlciBvciBldmVuIHdoaWNoIGJ1ZmZlcnMgb2Nj dXBpZWQgdGhlIHNwYWNlIHByZXZpb3VzbHkuCj4+Pj4+Pj4+Pj4gVHJpdmlhbGx5IG9uZSBjYW4g YXR0YWNoIGEgc3luYyBvYmplY3QgdG8gdGhlIG1lbW9yeSB0eXBlIG1hbmFnZXIgdGhhdAo+Pj4+ Pj4+Pj4+IHJlcHJlc2VudHMgdGhlIGxhc3QgZXZpY3Rpb24gZnJvbSB0aGF0IG1lbW9yeSB0eXBl LCBhbmQgKmFueSogZW5naW5lIChDUFUKPj4+Pj4+Pj4+PiBvcgo+Pj4+Pj4+Pj4+IEdQVSkgdGhh dCBtb3ZlcyBidWZmZXIgY29udGVudHMgaW4gbmVlZHMgdG8gb3JkZXIgdGhhdCBtb3ZlbWVudCB3 aXRoCj4+Pj4+Pj4+Pj4gcmVzcGVjdAo+Pj4+Pj4+Pj4+IHRvIHRoYXQgZmVuY2UuIEFzIHlvdSBz YXksIHdpdGggYSBzaW5nbGUgcmluZyBhbmQgbm8gQ1BVIGZhbGxiYWNrcywgdGhhdAo+Pj4+Pj4+ Pj4+IG9yZGVyaW5nIGlzIGEgbm8tb3AsIGJ1dCBhbnkgY29tbW9uIChub24tZHJpdmVyIGJhc2Vk KSBpbXBsZW1lbnRhdGlvbgo+Pj4+Pj4+Pj4+IG5lZWRzCj4+Pj4+Pj4+Pj4gdG8gc3VwcG9ydCB0 aGlzLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gQSBzaW5nbGUgZmVuY2UgYXR0YWNoZWQgdG8gdGhl IG1lbW9yeSB0eXBlIG1hbmFnZXIgaXMgdGhlIHNpbXBsZXN0Cj4+Pj4+Pj4+Pj4gc29sdXRpb24s Cj4+Pj4+Pj4+Pj4gYnV0IGEgc29sdXRpb24gd2l0aCBhIGZlbmNlIGZvciBlYWNoIGZyZWUgcmVn aW9uIGluIHRoZSBmcmVlIGxpc3QgaXMgYWxzbwo+Pj4+Pj4+Pj4+IHBvc3NpYmxlLiBUaGVuIFRU TSBuZWVkcyBhIGRyaXZlciBjYWxsYmFjayB0byBiZSBhYmxlIG9yZGVyIGZlbmNlcyB3IHIgdAo+ Pj4+Pj4+Pj4+IGVjaG90aGVyLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gL1Rob21hcwo+Pj4+Pj4+ Pj4+Cj4+Pj4+Pj4+PiBSYWRlb24gYWxyZWFkeSBoYW5kbGUgbXVsdGktcmluZyBhbmQgdHRtIGlu dGVyYWN0aW9uIHdpdGggd2hhdCB3ZSBjYWxsCj4+Pj4+Pj4+PiBzZW1hcGhvcmUuIFNlbWFwaG9y ZSBhcmUgY3JlYXRlZCB0byBzeW5jaHJvbml6ZSB3aXRoIGZlbmNlIGFjY3Jvc3MKPj4+Pj4+Pj4+ IGRpZmZlcmVudCByaW5nLiBJIHRoaW5rIHRoZSBlYXNpZXN0IHNvbHV0aW9uIGlzIHRvIGp1c3Qg cmVtb3ZlIHRoZSBibwo+Pj4+Pj4+Pj4gd2FpdCBpbiB0dG0gYW5kIGxldCBkcml2ZXIgaGFuZGxl IHRoaXMuCj4+Pj4+Pj4+IFRoZSB3YWl0IGNhbiBiZSByZW1vdmVkLCBidXQgb25seSBjb25kaXRp b25lZCBvbiBhIGRyaXZlciBmbGFnIHRoYXQgc2F5cyBpdAo+Pj4+Pj4+PiBzdXBwb3J0cyB1bnN5 bmNocm9ub3VzIGJ1ZmZlciBtb3Zlcy4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVGhlIG11bHRpLXJpbmcg Y2FzZSBJJ20gdGFsa2luZyBhYm91dCBpczoKPj4+Pj4+Pj4KPj4+Pj4+Pj4gUmluZyAxIGV2aWN0 cyBidWZmZXIgQSwgZW1pdHMgZmVuY2UgMAo+Pj4+Pj4+PiBSaW5nIDIgZXZpY3RzIGJ1ZmZlciBC LCBlbWl0cyBmZW5jZSAxCj4+Pj4+Pj4+IC4uT3RoZXIgZXZpY3Rpb24gdGFrZXMgcGxhY2UgYnkg dmFyaW91cyByaW5ncywgcGVyaGFwcyBpbmNsdWRpbmcgcmluZyAxIGFuZAo+Pj4+Pj4+PiByaW5n IDIuCj4+Pj4+Pj4+IFJpbmcgMyBtb3ZlcyBidWZmZXIgQyBpbnRvIHRoZSBzcGFjZSB3aGljaCBo YXBwZW5zIGJvIGJlIHRoZSB1bmlvbiBvZiB0aGUKPj4+Pj4+Pj4gc3BhY2UgcHJldm91c2x5IG9j Y3VwaWVkIGJ1ZmZlciBBIGFuZCBidWZmZXIgQi4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gUXVlc3Rpb24g aXM6IHdoaWNoIGZlbmNlIGRvIHlvdSB3YW50IHRvIG9yZGVyIHRoaXMgbW92ZSB3aXRoPwo+Pj4+ Pj4+PiBUaGUgYW5zd2VyIGlzIHdoaWNoZXZlciBvZiBmZW5jZSAwIGFuZCAxIHNpZ25hbHMgbGFz dC4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gSSB0aGluayBpdCdzIGEgcmVhc29uYWJsZSB0aGluZyBmb3Ig VFRNIHRvIGtlZXAgdHJhY2sgb2YgdGhpcywgYnV0IGluIG9yZGVyCj4+Pj4+Pj4+IHRvIGRvIHNv IGl0IG5lZWRzIGEgZHJpdmVyIGNhbGxiYWNrIHRoYXQKPj4+Pj4+Pj4gY2FuIG9yZGVyIHR3byBm ZW5jZXMsIGFuZCBjYW4gb3JkZXIgYSBqb2IgaW4gdGhlIGN1cnJlbnQgcmluZyB3IHIgdCBhIGZl bmNlLgo+Pj4+Pj4+PiBJbiByYWRlb24ncyBjYXNlIHRoYXQgZHJpdmVyIGNhbGxiYWNrCj4+Pj4+ Pj4+IHdvdWxkIHByb2JhYmx5IGluc2VydCBhIGJhcnJpZXIgLyBzZW1hcGhvcmUuIEluIHRoZSBj YXNlIG9mIHNpbXBsZXIgaGFyZHdhcmUKPj4+Pj4+Pj4gaXQgd291bGQgd2FpdCBvbiBvbmUgb2Yg dGhlIGZlbmNlcy4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gL1Rob21hcwo+Pj4+Pj4+Pgo+Pj4+Pj4+IEkg ZG9uJ3QgdGhpbmsgd2UgY2FuIG9yZGVyIGZlbmNlIGVhc2lseSB3aXRoIGEgY2xlYW4gYXBpLCBp IHdvdWxkCj4+Pj4+Pj4gcmF0aGVyIHNlZSB0dG0gcHJvdmlkZSBhIGxpc3Qgb2YgZmVuY2UgdG8g ZHJpdmVyIGFuZCB0ZWxsIHRvIHRoZQo+Pj4+Pj4+IGRyaXZlciBiZWZvcmUgbW92aW5nIHRoaXMg b2JqZWN0IGFsbCB0aGUgZmVuY2Ugb24gdGhpcyBsaXN0IG5lZWQgdG8gYmUKPj4+Pj4+PiBjb21w bGV0ZWQuIEkgdGhpbmsgaXQncyBhcyBlYXN5IGFzIGFzc29jaWF0aW5nIGZlbmNlIHdpdGggZHJt X21tICh3ZWxsCj4+Pj4+Pj4gbm91dmVhdSBhcyBpdHMgb3duIG1tIHN0dWZmKSBidXQgaWRlYSB3 b3VsZCBiYXNpY2x5IGJlIHRoYXQgZmVuY2UgYXJlCj4+Pj4+Pj4gYm90aCBhc3NvY2lhdGVkIHdp dGggYm8gYW5kIHdpdGggbW0gb2JqZWN0IHNvIHlvdSBrbm93IHdoZW4gYSBzZWdtZW50Cj4+Pj4+ Pj4gb2YgbWVtb3J5IGlzIGlkbGUvYXZhaWxhYmxlIGZvciB1c2UuCj4+Pj4+Pj4KPj4+Pj4+PiBD aGVlcnMsCj4+Pj4+Pj4gSmVyb21lCj4+Pj4+PiBIbW0uIEFncmVlZCB0aGF0IHdvdWxkIHNhdmUg YSBsb3Qgb2YgYmFycmllcnMuCj4+Pj4+Pgo+Pj4+Pj4gRXZlbiBpZiBUVE0gdHJhY2tzIGZlbmNl cyBieSBmcmVlIG1tIHJlZ2lvbnMgb3IgYSBzaW5nbGUgZmVuY2UgZm9yCj4+Pj4+PiB0aGUgd2hv bGUgbWVtb3J5IHR5cGUsIGl0J3MgYSBzaW1wbGUgZmFjdCB0aGF0IGZlbmNlcyBmcm9tIHRoZSBz YW1lCj4+Pj4+PiByaW5nIGFyZSB0cml2aWFsbHkgb3JkZXJlZCwgd2hpY2ggbWVhbnMgc3VjaCBh IGxpc3Qgc2hvdWxkIGNvbnRhaW4gYXQKPj4+Pj4+IG1vc3QgYXMgbWFueSBmZW5jZXMgYXMgdGhl cmUgYXJlIHJpbmdzLgo+Pj4+PiBZZXMsIG9uZSBmdW5jdGlvbiBjYWxsYmFjayBpcyBuZWVkZWQg dG8ga25vdyB3aGljaCBmZW5jZSBpcyBuZWNlc3NhcnksCj4+Pj4+IGFsc28gdHRtIG5lZWRzIHRv IGtub3cgdGhlIG51bWJlciBvZiByaW5ncyAobm90ZSB0aGF0IGkgdGhpbmsgbmV3ZXIKPj4+Pj4g aHcgd2lsbCBoYXZlIHNvbWV0aGluZ3MgbGlrZSAxMDI0IHJpbmdzIG9yIGV2ZW4gbW9yZSwgZXZl biB0b2RheSBodwo+Pj4+PiBtaWdodCBoYXZlIGFzIG1hbnkgYXMgaSB0aGluayBudmlkaWEgY2hh bm5lbCBpcyBwcmV0dHkgbXVjaCB3aGF0IGkKPj4+Pj4gZGVmaW5lIHRvIGJlIGEgcmluZykuCj4+ Pj4+Cj4+Pj4+IEJ1dCBpIHRoaW5rIG1vc3QgY2FzZSB3aWxsIGJlIGZldyBmZW5jZSBhY2Nyb3Nz IGZldyByaW5ncy4gTGlrZSAxCj4+Pj4+IHJpbmcgaXMgdGhlIGRtYSByaW5nIGFuZCB0aGVuIHlv dSBoYXZlIGEgcmluZyBmb3Igb25lIG9mIHRoZSBHTAo+Pj4+PiBjb250ZXh0IHRoYXQgdXNpbmcg dGhlIG1lbW9yeSBhbmQgYW5vdGhlciByaW5nIGZvciB0aGUgbmV3IGNvbnRleHQKPj4+Pj4gdGhh dCB3YW50IHRvIHVzZSB0aGUgbWVtb3J5Lgo+Pj4+Pgo+Pj4+Pj4gU28sIHdoYXRldmVyIGFwcHJv YWNoIGlzIGNob3NlbiwgVFRNIG5lZWRzIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lCj4+Pj4+PiB0 aGF0IHRyaXZpYWwgb3JkZXJpbmcsIGFuZCBJIHRoaW5rIHRoZSB1cGNvbWluZyBjcm9zcy1kZXZp Y2UgZmVuY2luZwo+Pj4+Pj4gd29yayB3aWxsIGZhY2UgdGhlIGV4YWN0IHNhbWUgcHJvYmxlbS4K Pj4+Pj4+Cj4+Pj4+PiBNeSBwcm9wb3NlZCBvcmRlcmluZyBBUEkgd291bGQgbG9vayBzb21ldGhp bmcgbGlrZQo+Pj4+Pj4KPj4+Pj4+IHN0cnVjdCBmZW5jZSAqb3JkZXJfZmVuY2VzKHN0cnVjdCBm ZW5jZSAqZmVuY2VfYSwgc3RydWN0IGZlbmNlCj4+Pj4+PiAqZmVuY2VfYiwgYm9vbCB0cml2aWFs X29yZGVyLCBib29sIGludGVycnVwdGlibGUsIGJvb2wgbm9fd2FpdF9ncHUpCj4+Pj4+Pgo+Pj4+ Pj4gUmV0dXJucyB3aGljaCBvZiB0aGUgZmVuY2VzIEBmZW5jZV9hIGFuZCBAZmVuY2VfYiB0aGF0 IHdoZW4KPj4+Pj4+IHNpZ25hbGVkLCBndWFyYW50ZWVzIHRoYXQgYWxzbyB0aGUgb3RoZXIKPj4+ Pj4+IGZlbmNlIGhhcyBzaWduYWxlZC4gSWYgQHF1aWNrX29yZGVyIGlzIHRydWUsIGFuZCB0aGUg ZHJpdmVyIGNhbm5vdAo+Pj4+Pj4gdHJpdmlhbGx5IG9yZGVyIHRoZSBmZW5jZXMsIGl0IG1heSBy ZXR1cm4gRVJSX1BUUigtRUFHQUlOKSwKPj4+Pj4+IGlmIEBpbnRlcnJ1cHRpYmxlIGlzIHRydWUs IGFueSB3YWl0IHNob3VsZCBiZSBwZXJmb3JtZWQKPj4+Pj4+IGludGVycnVwdGlibHkgYW5kIGlm IG5vX3dhaXRfZ3B1IGlzIHRydWUsIHRoZSBmdW5jdGlvbiBpcyBub3QKPj4+Pj4+IGFsbG93ZWQg dG8gd2FpdCBvbiBncHUgYnV0IHNob3VsZCBpc3N1ZSBFUlJfUFRSKC1FQlVTWSkgaWYgaXQgbmVl ZHMKPj4+Pj4+IHRvIGRvIHNvIHRvIG9yZGVyIGZlbmNlcy4KPj4+Pj4+Cj4+Pj4+PiAoSGFyZHdh cmUgd2l0aG91dCBzZW1hcGhvcmVzIGNhbid0IG9yZGVyIGZlbmNlcyB3aXRob3V0IHdhaXRpbmcg b24gdGhlbSkuCj4+Pj4+Pgo+Pj4+Pj4gVGhlIGxpc3QgYXBwcm9hY2ggeW91IHN1Z2dlc3Qgd291 bGQgdXNlIEB0cml2aWFsX29yZGVyID0gdHJ1ZSwKPj4+Pj4+IFNpbmdsZSBmZW5jZSBhcHByb2Fj aCB3b3VsZCB1c2UgQHRyaXZpYWxfb3JkZXIgPSBmYWxzZS4KPj4+Pj4+Cj4+Pj4+PiBBbmQgYSBm aXJzdCBzaW1wbGUgaW1wbGVtZW50YXRpb24gaW4gVFRNIHdvdWxkIHBlcmhhcHMgdXNlIHlvdXIg bGlzdAo+Pj4+Pj4gYXBwcm9hY2ggd2l0aCBhIHNpbmdsZSBsaXN0IGZvciB0aGUgd2hvbGUgbWVt b3J5IHR5cGUuCj4+Pj4+Pgo+Pj4+Pj4gL1Rob21hcwo+Pj4+PiBJIHdvdWxkIHJhdGhlciBhZGQg YSBjYWxsYmFjayBsaWtlIDoKPj4+Pj4KPj4+Pj4gdHRtX3JlZHVjZV9mZW5jZXModW5zaWduZWQg Km5mZW5jZXMsIGZlbmNlICoqZmVuY2VhcnJheSkKPj4+PiBJIGRvbid0IGFncmVlIGhlcmUuIEkg dGhpbmsgdGhlIGZlbmNlIG9yZGVyIGZ1bmN0aW9uIGlzIG1vcmUKPj4+PiB2ZXJzYXRpbGUgYW5k IGEgZ29vZCBhYnN0cmFjdGlvbiB0aGF0IGNhbiBiZQo+Pj4+IGFwcGxpZWQgaW4gYSBudW1iZXIg b2YgY2FzZXMgdG8gdGhpcyBwcm9ibGVtLiBBbnl3YXkgd2Ugc2hvdWxkIHN5bmMKPj4+PiB0aGlz IHdpdGggTWFhcnRlbiBhbmQgaGlzCj4+Pj4gZmVuY2Ugd29yay4gVGhlIHNhbWUgcHJvYmxlbSBh cHBsaWVzIHRvIGF0dGFjaGluZyBzaGFyZWQgZmVuY2VzIHRvIGEgYm8uCj4+PiBSYWRlb24gYWxy ZWFkeSBoYW5kbGUgdGhlIGJvIGNhc2Ugb24gbXVsdGktcmluZyBhbmQgaSB0aGluayBpdCBzaG91 bGQKPj4+IGJlIGxlZnQgdG8gdGhlIGRyaXZlciB0byBkbyB3aGF0IGl0cyBuZWNlc3NhcnkgdGhl cmUuCj4+Pgo+Pj4gSSBkb24ndCB0aGluayBoZXJlIG1vcmUgdmVyc2F0aWxpdHkgaXMgYmFkLCBp biBmYWN0IGkgYW0gcHJldHR5IHN1cmUKPj4+IHRoYXQgbm8gaHcgY2FuIGdpdmUgZmVuY2Ugb3Jk ZXJpbmcgYW5kIGkgYWxzbyB0aGluayB0aGF0IGlmIGRyaXZlciBoYXZlCj4+PiB0byB0cmFjayBt dWx0aS1yaW5nIGZlbmNlIG9yZGVyaW5nIGl0IHdpbGwganVzdCB3YXN0ZSByZXNvdXJjZSBmb3Ig bm8KPj4+IGdvb2QgcmVhc29ucy4gRm9yIHRyYWNraW5nIHRoYXQgaW4gcmFkZW9uIGkgd2lsbCBu ZWVkIHRvIGtlZXAgYSBsaXN0Cj4+PiBvZiBzZW1hcGhvcmUgYW5kIGtub3dzIHdoaWNoIHNlbWFw aG9yZXMgaW5zdXJlIHN5bmNocm9uaXphdGlvbiBidHcKPj4+IHdoaWNoIHJpbmcgYW5kIGZvciBl YWNoIHdoaWNoIGZlbmNlIGFyZSBjb25jZXJuZWQganVzdCB0aGlua2luZyB0byBpdAo+Pj4gaXQg d291bGQgYmUgYSBtZXNzeSBncmFwaCB3aXRoIHRvbnMgb2Ygbm9kZXMuCj4+Pgo+Pj4gT2YgY291 cnNlIGhlcmUgaSBhbSB0aGlua2luZyBpbiB0ZXJtIG9mIG5ld2VyIEdQVSB3aXRoIHRvbnMgb2Yg cmluZ3MsCj4+PiBHUFUgd2l0aCBvbmUgcmluZywgd2hpY2ggYXJlIGEgdmFuaXNoaW5nIGNhdGVn b3J5IGFzIG5ld2VyIG9wZW5jbAo+Pj4gcmVxdWlyZSBtb3JlIHJpbmcsIGFyZSBlYXN5IHRvIGhh bmRsZSBidXQgaSByZWFsbHkgZG9uJ3QgdGhpbmsgd2UKPj4+IHNob3VsZCBkZXNpZ24gZm9yIHRo b3NlLgo+PiBUaGUgYmlnZ2VzdCBwcm9ibGVtIEkgc2VlIHdpdGggdHRtX3JlZHVjZV9mZW5jZXMo KSBpcyB0aGF0IGl0IHNlZW1zCj4+IHRvIGhhdmUgaGlnaCBjb21wbGV4aXR5LCBzaW5jZSBpdAo+ PiBkb2Vzbid0IGtub3cgd2hpY2ggZmVuY2UgaXMgdGhlIG5ldyBvbmUuIEFuZCBpZiBpdCBkaWQs IGl0IHdvdWxkCj4+IG9ubHkgYmUgYSBtdWx0aS1mZW5jZSB2ZXJzaW9uIG9mCj4+IG9yZGVyX2Zl bmNlcyh0cml2aWFsPXRydWUpLgo+IEkgYW0gc3VyZSBhbGwgZHJpdmVyIHdpdGggbXVsdGktcmlu ZyB3aWxsIHN0b3JlIHJpbmcgaWQgaW4gdGhlcmUgZmVuY2UKPiBzdHJ1Y3R1cmUsIHRoYXQncyBm cm9tIG15IHBvdiBhIHJlcXVpcmVtZW50LiBTbyB3aGVuIHlvdSBnZXQgYSBsaXN0IG9mCj4gZmVu Y2UgeW91IGZpcnN0IGdvIG92ZXIgZmVuY2Ugb24gdGhlIHNhbWUgcmluZyBhbmQgc28gZmFyIGFs bCBmZW5jZQo+IGltcGxlbWVudGF0aW9uIHVzZSBpbmNyZWFzaW5nIHNlcXVlbmNlIG51bWJlciBm b3IgZmVuY2UuIFNvIHJlZHVjaW5nCj4gYmVjb21lcyBhcyBlYXN5IGFzIG9ubHkgbGVhdmluZyB0 aGUgbW9zdCByZWNlbnQgZmVuY2UgZm9yIGVhY2ggb2YgdGhlCj4gcmluZyB3aXRoIGFuIGFjdGl2 ZSBmZW5jZS4gQXQgdGhlIHNhbWUgdGltZSBpdCBjb3VsZCBjaGVjayAoYXNzdW1pbmcKPiBpdCdz IGEgcXVpY2sgb3BlcmF0aW9uKSBpZiBmZW5jZSBpcyBhbHJlYWR5IHNpZ25hbGVkIG9yIG5vdC4K Pgo+IEZvciByYWRlb24gdGhpcyBmdW5jdGlvbiB3b3VsZCBiZSB2ZXJ5IHNtYWxsLCBhIHNpbXBs ZSBpbWJyaWNhdGVkIGxvb3AKPiB3aXRoIGNvdXBsZSB0ZXN0IGluIHRoZSBsb29wLgoKV2hhdCB5 b3UgZGVzY3JpYmUgc291bmRzIGxpa2UgYW4gTyhuwrIpIGNvbXBsZXhpdHkgYWxnb3JpdGhtLCB3 aGVyZWFzCmFuIGFsZ29yaXRobSBiYXNlZCBvbiBvcmRlcl9mZW5jZXMgaXMgTyhuKSBjb21wbGV4 aXR5LgoKVGhhbmtzLCBUaG9tYXMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK