From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH 1/2] drm/ttm: add a way to bo_wait for either the last read or last write Date: Fri, 07 Oct 2011 16:09:08 +0200 Message-ID: <4E8F0804.5050800@shipmail.org> References: <1312749544-22052-1-git-send-email-maraeo@gmail.com> <4E8AF276.2060500@shipmail.org> <4E8BF131.1070404@shipmail.org> <4E8EB19B.2060605@shipmail.org> 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 (ns2.gothnet.se [82.193.160.251]) by gabe.freedesktop.org (Postfix) with ESMTP id D34BD9E7B6 for ; Fri, 7 Oct 2011 07:11:08 -0700 (PDT) In-Reply-To: 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: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMTAvMDcvMjAxMSAwMzozOCBQTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPiBPbiBGcmksIE9j dCA3LCAyMDExIGF0IDQ6MDAgQU0sIFRob21hcyBIZWxsc3Ryb208dGhvbWFzQHNoaXBtYWlsLm9y Zz4gIHdyb3RlOgo+ICAgIAo+PiBPbiAxMC8wNy8yMDExIDEyOjQyIEFNLCBNYXJlayBPbMWhw6Fr IHdyb3RlOgo+PiAgICAgIAo+Pj4gT24gV2VkLCBPY3QgNSwgMjAxMSBhdCA3OjU0IEFNLCBUaG9t YXMgSGVsbHN0cm9tPHRob21hc0BzaGlwbWFpbC5vcmc+Cj4+PiAgIHdyb3RlOgo+Pj4KPj4+ICAg ICAgICAKPj4+PiBJbiBhbnkgY2FzZSwgSSdtIG5vdCBzYXlpbmcgZmVuY2VzIGlzIHRoZSBiZXN0 IHdheSB0byBmbHVzaCBidXQgc2luY2UgdGhlCj4+Pj4gYm8KPj4+PiBjb2RlIGFzc3VtZXMgdGhh dCBzaWduYWxpbmcgYSBzeW5jIG9iamVjdCBtZWFucyAibWFrZSB0aGUgYnVmZmVyIGNvbnRlbnRz Cj4+Pj4gYXZhaWxhYmxlIGZvciBDUFUgcmVhZCAvIHdyaXRlIiwgaXQncyB1c3VhbGx5IGEgZ29v ZCB3YXkgdG8gZG8gaXQ7Cj4+Pj4gdGhlcmUncwo+Pj4+IGV2ZW4gYSBzeW5jX29ial9mbHVzaCgp IG1ldGhvZCB0aGF0IGdldHMgY2FsbGVkIHdoZW4gYSBwb3RlbnRpYWwgZmx1c2gKPj4+PiBuZWVk cwo+Pj4+IHRvIGhhcHBlbi4KPj4+Pgo+Pj4+ICAgICAgICAgIAo+Pj4gSSBkb24ndCB0aGluayB3 ZSB1c2UgaXQgbGlrZSB0aGF0LiBUbyBteSBrbm93bGVkZ2UsIHRoZSBwdXJwb3NlIG9mIHRoZQo+ Pj4gc3luYyBvYmogKHRvIFJhZGVvbiBHYWxsaXVtIGRyaXZlcnMgYXQgbGVhc3QpIGlzIHRvIGJl IGFibGUgdG8gd2FpdAo+Pj4gZm9yIHRoZSBsYXN0IHVzZSBvZiBhIGJ1ZmZlci4gV2hldGhlciB0 aGUgY29udGVudHMgY2FuIG9yIGNhbm5vdCBiZQo+Pj4gYXZhaWxhYmxlIHRvIHRoZSBDUFUgaXMg dG90YWxseSBpcnJlbGV2YW50Lgo+Pj4KPj4+IEN1cnJlbnRseSAoYW5kIGl0J3MgYSB2ZXJ5IGlt cG9ydGFudCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24pLAo+Pj4gYnVmZmVycyBzdGF5IG1hcHBl ZCBhbmQgYXZhaWxhYmxlIGZvciBDUFUgcmVhZC93cml0ZSBkdXJpbmcgdGhlaXIKPj4+IGZpcnN0 IG1hcF9idWZmZXIgY2FsbC4gVW5tYXBfYnVmZmVyIGlzIGEgbm8tb3AuIFRoZSB1bm1hcHBpbmcg aGFwcGVucwo+Pj4gb24gYnVmZmVyIGRlc3RydWN0aW9uLiBXZSBvbmx5IGNhbGwgYm9fd2FpdCB3 aGVuIHdlIHdhbnQgdG8gd2FpdCBmb3IKPj4+IHRoZSBHUFUgdW50aWwgaXQncyBkb25lIHdpdGgg dGhlIGJ1ZmZlciAod2UgZG9uJ3QgYWx3YXlzIHdhbnQgdGhhdCwKPj4+IHNvbWV0aW1lcyB3ZSB3 YW50IHRvIHVzZSB0aGUgdW5zeWNocm9uaXplZCBmbGFnKS4gT3RoZXJ3aXNlIHRoZQo+Pj4gY29u dGVudHMgb2YgYnVmZmVycyBhcmUgYXZhaWxhYmxlIGF0ICphbnkgdGltZSouCj4+Pgo+Pj4gV2Ug Y291bGQgcHJvYmFibHkgaW1wbGVtZW50IGJvX3dhaXQgcHJpdmF0ZWx5IGluIHRoZSBrZXJuZWwg ZHJpdmVyIGFuZAo+Pj4gbm90IHVzZSB0dG1fYm9fd2FpdC4gSSBwcmVmZXJyZWQgY29kZSBzaGFy aW5nIHRob3VnaC4KPj4+Cj4+PiBUZXh0dXJlcyAoZXNwZWNpYWxseSB0aGUgdGlsZWQgb25lcykg YXJlIG5ldmVyIG1hcHBlZCBkaXJlY3RseSBhbmQgYQo+Pj4gdGVtcG9yYXJ5IHN0YWdpbmcgcmVz b3VyY2UgaXMgdXNlZCBpbnN0ZWFkLCBzbyB3ZSBkb24ndCBhY3R1YWxseQo+Pj4gcG9sbHV0ZSBh ZGRyZXNzIHNwYWNlIHRoYXQgbXVjaC4gKGluIGNhc2UgeW91IHdvdWxkIGhhdmUgc3VjaCBhCj4+ PiByZW1hcmspIFdlIHdpbGwgdXNlIHN0YWdpbmcgcmVzb3VyY2VzIGZvciBidWZmZXJzIHRvbywg YnV0IGl0J3MgcmVhbGx5Cj4+PiB0aGUgbGFzdCByZXNvcnQgdG8gYXZvaWQgd2FpdGluZyB3aGVu IGRpcmVjdCBhY2Nlc3MgY2FuJ3QgYmUgdXNlZC4KPj4+Cj4+Pgo+Pj4KPj4+ICAgICAgICAKPj4+ Pj4+IDIpIENhbid0IHdlIHNheSB0aGF0IGEgd3JpdGVfc3luY19vYmogaXMgc2ltcGx5IGEgc3lu Y19vYmo/IFdoYXQncyB0aGUKPj4+Pj4+IGRpZmZlcmVuY2UgYmV0d2VlbiB0aG9zZSB0d28/IEkg dGhpbmsgd2Ugc2hvdWxkIHJlbW92ZSB0aGUKPj4+Pj4+IHdyaXRlX3N5bmNfb2JqCj4+Pj4+PiBi bwo+Pj4+Pj4gbWVtYmVyLgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiAgICAgICAgICAgICAgCj4+Pj4+ IE9rYXksIGJ1dCBJIHRoaW5rIHdlIHNob3VsZCByZW1vdmUgc3luY19vYmogaW5zdGVhZCwgYW5k IGtlZXAgd3JpdGUKPj4+Pj4gYW5kIHJlYWQgc3luYyBvYmpzLiBJbiB0aGUgY2FzZSBvZiBSRUFE V1JJVEUgdXNhZ2UsIHJlYWRfc3luY19vYmoKPj4+Pj4gd291bGQgYmUgZXF1YWwgdG8gd3JpdGVf c3luY19vYmouCj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgCj4+Pj4gU3VyZSwg SSdtIGZpbmUgd2l0aCB0aGF0Lgo+Pj4+Cj4+Pj4gT25lIG90aGVyIHRoaW5nLCB0aG91Z2gsIHRo YXQgbWFrZXMgbWUgYSBsaXR0bGUgcHV6emxlZDoKPj4+Pgo+Pj4+IExldCdzIGFzc3VtZSB5b3Ug ZG9uJ3QgYWxsb3cgcmVhZGVycyBhbmQgd3JpdGVycyBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaAo+ Pj4+IGlzCj4+Pj4gbXkgcGVyY2VwdGlvbiBvZiBob3cgcmVhZC0gYW5kIHdyaXRlIGZlbmNlcyBz aG91bGQgd29yazsgeW91IGVpdGhlciBoYXZlCj4+Pj4gYQo+Pj4+IGxpc3Qgb2YgcmVhZCBmZW5j ZXMgb3IgYSBzaW5nbGUgd3JpdGUgZmVuY2UgKGluIHRoZSBzYW1lIHdheSBhIHJlYWQtd3JpdGUK Pj4+PiBsb2NrIHdvcmtzKS4KPj4+Pgo+Pj4+IE5vdywgaWYgeW91IG9ubHkgYWxsb3cgYSBzaW5n bGUgcmVhZCBmZW5jZSwgbGlrZSBpbiB0aGlzIHBhdGNoLiBUaGF0Cj4+Pj4gaW1wbGllcwo+Pj4+ IHRoYXQgeW91IGNhbiBvbmx5IGhhdmUgZWl0aGVyIGEgc2luZ2xlIHJlYWQgZmVuY2Ugb3IgYSBz aW5nbGUgd3JpdGUgZmVuY2UKPj4+PiBhdAo+Pj4+IGFueSBvbmUgdGltZS4gV2UnZCBvbmx5IG5l ZWQgYSBzaW5nbGUgZmVuY2UgcG9pbnRlciBvbiB0aGUgYm8sIGFuZAo+Pj4+IHN5bmNfb2JqX2Fy ZyB3b3VsZCB0ZWxsIHVzIHdoZXRoZXIgdG8gc2lnbmFsIHRoZSBmZW5jZSBmb3IgcmVhZCBvciBm b3IKPj4+PiB3cml0ZQo+Pj4+IChhc3N1bWluZyB0aGF0IHN5bmNfb2JqX2FyZyB3YXMgc2V0IHVw IHRvIGluZGljYXRlIHJlYWQgLyB3cml0ZSBhdAo+Pj4+IHZhbGlkYXRpb24gdGltZSksIHRoZW4g dGhlIHBhdGNoIHJlYWxseSBpc24ndCBuZWNlc3NhcnkgYXQgYWxsLCBhcyBpdAo+Pj4+IG9ubHkK Pj4+PiBhbGxvd3MgYSBzaW5nbGUgcmVhZCBmZW5jZT8KPj4+Pgo+Pj4+IE9yIGlzIGl0IHRoYXQg eW91IHdhbnQgdG8gYWxsb3cgcmVhZC0gYW5kIHdyaXRlIGZlbmNlcyBjby1leGlzdGluZz8gSW4K Pj4+PiB0aGF0Cj4+Pj4gY2FzZSwgd2hhdCdzIHRoZSB1c2UgY2FzZT8KPj4+Pgo+Pj4+ICAgICAg ICAgIAo+Pj4gVGhlcmUgYXJlIGxvdHMgb2YgcmVhZC13cml0ZSB1c2UgY2FzZXMgd2hpY2ggZG9u J3QgbmVlZCBhbnkgYmFycmllcnMKPj4+IG9yIGZsdXNoaW5nLiBUaGUgb2J2aW91cyBvbmVzIGFy ZSBjb2xvciBibGVuZGluZyBhbmQgZGVwdGgtc3RlbmNpbAo+Pj4gYnVmZmVyaW5nLiBUaGUgT3Bl bkdMIGFwcGxpY2F0aW9uIGlzIGFsc28gYWxsb3dlZCB0byB1c2UgYSBzdWJyYW5nZSBvZgo+Pj4g YSBidWZmZXIgYXMgYSB2ZXJ0ZXggYnVmZmVyIChyZWFkLW9ubHkpIGFuZCBhbm90aGVyIGRpc2pv aW50IHN1YnJhbmdlCj4+PiBvZiB0aGUgc2FtZSBidWZmZXIgZm9yIHRyYW5zZm9ybSBmZWVkYmFj ayAod3JpdGUtb25seSksIHdoaWNoIGtpbmRhCj4+PiBtYWtlcyBtZSB0aGluayBhYm91dCB3aGV0 aGVyIHdlIHNob3VsZCB0cmFjayBzdWJyYW5nZXMgaW5zdGVhZCBvZgo+Pj4gdHJlYXRpbmcgYSB3 aG9sZSBidWZmZXIgYXMgImJ1c3kiLiBJdCBnZXRzIGV2ZW4gbW9yZSBmdW5reSB3aXRoCj4+PiBB UkJfc2hhZGVyX2ltYWdlX2xvYWRfc3RvcmUsIHdoaWNoIHN1cHBvcnRzIGF0b21pYyByZWFkLW1v ZGlmeS13cml0ZQo+Pj4gb3BlcmF0aW9ucyBvbiB0ZXh0dXJlcywgbm90IHRvIG1lbnRpb24gYXRv bWljIG1lbW9yeSBvcGVyYXRpb25zIGluCj4+PiBjb21wdXRlIHNoYWRlcnMgKHdhaXQsIGlzbid0 IHRoYXQgYWxzbyBleHBvc2VkIGluIEdMIGFzCj4+PiBHTF9BUkJfc2hhZGVyX2F0b21pY19jb3Vu dGVycz8pLgo+Pj4KPj4+IEkgd2FzIHRoaW5raW5nIHdoZXRoZXIgdGhlIHR3byBzeW5jIG9ianMg c2hvdWxkIGJlICJyZWFkIiBhbmQKPj4+ICJyZWFkd3JpdGUiLCBvciAicmVhZCIgYW5kICJ3cml0 ZSIuIEkgY2hvc2UgdGhlIGxhdHRlciwgYmVjYXVzZSBpdCdzCj4+PiBtb3JlIGZpbmUtZ3JhaW5l ZCBhbmQgd2UgaGF2ZSB0byBrZWVwIGF0IGxlYXN0IHR3byBvZiB0aGVtIGFyb3VuZAo+Pj4gYW55 d2F5Lgo+Pj4KPj4+IFNvIG5vdyB0aGF0IHlvdSBrbm93IHdoYXQgd2UgdXNlIHN5bmMgb2JqcyBm b3IsIHdoYXQgYXJlIHlvdXIgaWRlYXMgb24KPj4+IHJlLWltcGxlbWVudGluZyB0aGF0IHBhdGNo IGluIGEgd2F5IHRoYXQgaXMgb2theSB3aXRoIHlvdT8gQmVzaWRlcwo+Pj4gcmVtb3ZpbmcgdGhl IHRoaXJkIHN5bmMgb2JqcyBvZiBjb3Vyc2UuCj4+Pgo+Pj4gTWFyZWsKPj4+Cj4+PiAgICAgICAg Cj4+IE9LLiBGaXJzdCBJIHRoaW5rIHdlIG5lZWQgdG8gbWFrZSBhIGRpc3RpbmN0aW9uOiBibyBz eW5jIG9iamVjdHMgdnMgZHJpdmVyCj4+IGZlbmNlcy4gVGhlIGJvIHN5bmMgb2JqIGFwaSBpcyB0 aGVyZSB0byBzdHJpY3RseSBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgdGhhdAo+PiB0aGUgdHRtIGJv IHN1YnN5c3RlbSBpcyB1c2luZywgYW5kIHRoYXQgZm9sbG93cyBhIHNpbXBsZSBzZXQgb2YgcnVs ZXM6Cj4+Cj4+IDEpIHRoZSBibyBzdWJzeXN0ZW0gZG9lcyBuZXZlciBhc3N1bWUgc3luYyBvYmpl Y3RzIGFyZSBvcmRlcmVkLiBUaGF0IG1lYW5zCj4+IHRoZSBibyBzdWJzeXN0ZW0gbmVlZHMgdG8g d2FpdCBvbiBhIHN5bmMgb2JqZWN0IGJlZm9yZSByZW1vdmluZyBpdCBmcm9tIGEKPj4gYnVmZmVy LiBBbnkgb3RoZXIgYXNzdW1wdGlvbiBpcyBidWdneSBhbmQgbXVzdCBiZSBmaXhlZC4gQlVULCBp ZiB0aGF0Cj4+IGFzc3VtcHRpb24gdGFrZXMgcGxhY2UgaW4gdGhlIGRyaXZlciB1bmtub3dpbmds eSBmcm9tIHRoZSB0dG0gYm8gc3Vic3lzdGVtCj4+ICh3aGljaCBpcyB1c3VhbGx5IHRoZSBjYXNl KSwgaXQncyBPSy4KPj4KPj4gMikgV2hlbiB0aGUgc3luYyBvYmplY3QocykgYXR0YWNoZWQgdG8g dGhlIGJvIGFyZSBzaWduYWxlZCB0aGUgdHRtIGJvCj4+IHN1YnN5c3RlbSBpcyBmcmVlIHRvIGNv cHkgdGhlIGJvIGNvbnRlbnRzIGFuZCB0byB1bmJpbmQgdGhlIGJvLgo+Pgo+PiAzKSBUaGUgdHRt IGJvIHN5c3RlbSBhbGxvd3Mgc3luYyBvYmplY3RzIHRvIGJlIHNpZ25hbGVkIGluIGRpZmZlcmVu dCB3YXlzCj4+IG9wYXF1ZSB0byB0aGUgc3Vic3lzdGVtIHVzaW5nIHN5bmNfb2JqX2FyZy4gVGhl IGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IKPj4gc2V0dGluZyB1cCB0aGF0IGFyZ3VtZW50Lgo+ Pgo+PiA0KSBEcml2ZXIgZmVuY2VzIG1heSBiZSB1c2VkIGZvciBvciBleHBvc2Ugb3RoZXIgZnVu Y3Rpb25hbGl0eSBvciBhZGFwdGlvbnMKPj4gdG8gQVBJcyBhcyBsb25nIGFzIHRoZSBzeW5jIG9i aiBhcGkgZXhwb3J0ZWQgdG8gdGhlIGJvIHN5YnN5c3RlbSBmb2xsb3dzIHRoZQo+PiBhYm92ZSBy dWxlcy4KPj4KPj4gVGhpcyBtZWFucyB0aGUgZm9sbG93aW5nIHcgciB0IHRoZSBwYXRjaC4KPj4K Pj4gQSkgaXQgdmlvbGF0ZXMgMSkuIFRoaXMgaXMgYSBidWcgdGhhdCBtdXN0IGJlIGZpeGVkLiBB c3N1bXB0aW9ucyB0aGF0IGlmIG9uZQo+PiBzeW5jIG9iamVjdCBpcyBzaW5nbmFsZWQsIGFub3Ro ZXIgc3luYyBvYmplY3QgaXMgYWxzbyBzaWduYWxlZCBtdXN0IGJlIGRvbmUKPj4gaW4gdGhlIGRy aXZlciBhbmQgbm90IGluIHRoZSBibyBzdWJzeXN0ZW0uIEhlbmNlIHdlIG5lZWQgdG8gZXhwbGlj aXRseSB3YWl0Cj4+IGZvciBhIGZlbmNlIHRvIHJlbW92ZSBpdCBmcm9tIHRoZSBiby4KPj4KPj4g QikgdGhlIHN5bmNfb2JqX2FyZyBjYXJyaWVzICpwZXItc3luYy1vYmoqIGluZm9ybWF0aW9uIG9u IGhvdyBpdCBzaG91bGQgYmUKPj4gc2lnbmFsZWQuIElmIHdlIG5lZWQgdG8gYXR0YWNoIG11bHRp cGxlIHN5bmMgb2JqZWN0cyB0byBhIGJ1ZmZlciBvYmplY3QsIHdlCj4+IGFsc28gbmVlZCBtdWx0 aXBsZSBzeW5jX29ial9hcmdzLiBUaGlzIGlzIGEgYnVnIGFuZCBuZWVkcyB0byBiZSBmaXhlZC4K Pj4KPj4gQykgVGhlcmUgaXMgcmVhbGx5IG9ubHkgb25lIHJlYXNvbiB0aGF0IHRoZSB0dG0gYm8g c3Vic3lzdGVtIHNob3VsZCBjYXJlCj4+IGFib3V0IG11bHRpcGxlIHN5bmMgb2JqZWN0cywgYW5k IHRoYXQgaXMgYmVjYXVzZSB0aGUgZHJpdmVyIGNhbid0IG9yZGVyIHRoZW0KPj4gZWZmaWNpZW50 bHkuIEEgc3VjaCBleGFtcGxlIHdvdWxkIGJlIGhhcmR3YXJlIHdpdGggbXVsdGlwbGUgcGlwZXMg cmVhZGluZwo+PiBzaW11bHRhbmVvdXNseSBmcm9tIHRoZSBzYW1lIHRleHR1cmUgYnVmZmVyLiBD dXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCB0aGlzCj4+IHNvIG9ubHkgdGhlICpsYXN0KiBzeW5j IG9iamVjdCBuZWVkcyB0byBiZSBrbm93IGJ5IHRoZSBibyBzdWJzeXN0ZW0uIEtlZXBpbmcKPj4g dHJhY2sgb2YgbXVsdGlwbGUgZmVuY2VzIGdlbmVyYXRlcyBhIGxvdCBvZiBjb21wbGV0ZWx5IHVu bmVjZXNzYXJ5IGNvZGUgaW4KPj4gdGhlIHR0bV9ib191dGlsIGZpbGUsIHRoZSB0dG1fYm9fdm0g ZmlsZSwgYW5kIHdpbGwgYmUgYSBuaWdodG1hcmUgaWYgLyB3aGVuCj4+IHdlIHRydWx5IHN1cHBv cnQgcGlwZWxpbmVkIG1vdmVzLgo+Pgo+PiBBcyBJIHVuZGVyc3RhbmQgaXQgZnJvbSB5b3VyIHBh dGNoZXMsIHlvdSB3YW50IHRvIGtlZXAgbXVsdGlwbGUgZmVuY2VzCj4+IGFyb3VuZCBvbmx5IHRv IHRyYWNrIHJlbmRlcmluZyBoaXN0b3J5LiBJZiB3ZSB3YW50IHRvIGRvIHRoYXQgZ2VuZXJpY2Fs bHksIGkKPj4gc3VnZ2VzdCBkb2luZyBpdCBpbiB0aGUgZXhlY2J1ZiB1dGlsIGNvZGUgaW4gdGhl IGZvbGxvd2luZyB3YXk6Cj4+Cj4+IHN0cnVjdCB0dG1fZXVfcmVuZGVyaW5nX2hpc3Rvcnkgewo+ PiAgICAgdm9pZCAqbGFzdF9yZWFkX3N5bmNfb2JqOwo+PiAgICAgdm9pZCAqbGFzdF9yZWFkX3N5 bmNfb2JqX2FyZzsKPj4gICAgIHZvaWQgKmxhc3Rfd3JpdGVfc3luY19vYmo7Cj4+ICAgICB2b2lk ICpsYXN0X3dyaXRlX3N5bmNfb2JqX2FyZzsKPj4gfQo+Pgo+PiBFbWJlZCB0aGlzIHN0cnVjdHVy ZSBpbiB0aGUgcmFkZW9uX2JvLCBhbmQgYnVpbGQgYSBzbWFsbCBhcGkgYXJvdW5kIGl0LAo+PiBp bmNsdWRpbmcgKm9wdGlvbmFsbHkqIHBhc3NpbmcgaXQgdG8gdGhlIGV4aXN0aW5nIGV4ZWNidWYg dXRpbGl0aWVzLCBhbmQgeW91Cj4+IHNob3VsZCBiZSBkb25lLiBUaGUgYm9fdXRpbCBjb2RlIGFu ZCBib192bSBjb2RlIGRvZXNuJ3QgY2FyZSBhYm91dCB0aGUKPj4gcmVuZGVyaW5nIGhpc3Rvcnku IE9ubHkgdGhhdCB0aGUgYm8gaXMgY29tcGxldGVseSBpZGxlLgo+Pgo+PiBOb3RlIGFsc28gdGhh dCB3aGVuIGFuIGFjY2VsZXJhdGVkIGJvIG1vdmUgaXMgc2NoZWR1bGVkLCB0aGUgZHJpdmVyIG5l ZWRzIHRvCj4+IHVwZGF0ZSB0aGlzIHN0cnVjdAo+Pgo+PiAvVGhvbWFzCj4+ICAgICAgCj4gSSBz aG91bGQgaGF2ZSBsb29rIGF0IHRoZSBwYXRjaCBsb25nIGFnbyAuLi4gYW55d2F5IGkgdGhpbmsg YSBiZXR0ZXIKPiBhcHByb2FjaCB3b3VsZCBiZSB0byBleHBvc2UgZmVuY2UgaWQgYXMgNjRiaXRz IHVuc2lnbmVkIHRvIGVhY2gKPiB1c2Vyc3BhY2UgY2xpZW50LiBJIHdhcyB0aGlua2luZyBvZiBt YXBwaW5nIGEgcGFnZSByZWFkb25seSAoc2FtZSBwYWdlCj4gYXMgdGhlIG9uZSBncHUgd3JpdGUg YmFjaykgYXQgc29tZXNwZWNpZmljIG9mZnNldCBpbiBkcm0gZmlsZSAoYml0Cj4gbGlrZSBzYXJl YSBidXQgcmVhZG9ubHkgc28gbm8gbG9jaykuIEVhY2ggdGltZSB1c2Vyc3BhY2Ugc3VibWl0IGEK PiBjb21tYW5kIHN0cmVhbSBpdCB3b3VsZCBnZXQgdGhlIGZlbmNlIGlkIGFzc29jaWF0ZWQgd2l0 aCB0aGUgY29tbWFuZAo+IHN0cmVhbS4gSXQgd291bGQgdGhlbiBiZSB1cCB0byB1c2Vyc3BhY2Ug dG8gdHJhY2sgYnR3IHJlYWQgb3Igd3JpdGUKPiBhbmQgZG8gYXBwcm9wcmlhdGUgdGhpbmdzLiBU aGUga2VybmVsIGNvZGUgd291bGQgYmUgc2ltcGxlIChiaWdnZXN0Cj4gaXNzdWUgaXMgZmluZGlu ZyBhbiBvZmZzZXQgd2UgY2FuIHVzZSBmb3IgdGhhdCksIGl0IHdvdWxkIGJlIGZhc3QgYXMKPiBu byByb3VuZCB0cmlwIHRvIGtlcm5lbCB0byBrbm93IHRoZSBsYXN0IGZlbmNlLgo+Cj4gRWFjaCBm ZW5jZSBzZXEgd291bGQgYmUgdmFsaWQgb25seSBmb3IgYSBzcGVjaWZpYyByaW5nIChvbmx5IGZ1 dHVyZQo+IGdwdSBpbXBhY3RlZCBoZXJlLCBtYXliZSBjYXltYW4pLgo+Cj4gU28gbm8gY2hhbmdl IHRvIHR0bSwganVzdCBjaGFuZ2UgdG8gcmFkZW9uIHRvIHJldHVybiBmZW5jZSBzZXEgYW5kIHRv Cj4gbW92ZSB0byBhbiB1bnNpZ25lZCA2NC4gSXNzdWUgd291bGQgYmUgd2hlbiBncHUgd3JpdGUg YmFjayBpcwo+IGRpc2FibGVkLCB0aGVuIHdlIHdvdWxkIGVpdGhlciBuZWVkIHVzZXJzcGFjZSB0 byBjYWxsIHNvbWV0aGluZ3MgbGlrZQo+IGJvIHdhaXQgb3IgdG8gb3RoZXIgaW9jdGwgdG8gZ2V0 IHRoZSBrZXJuZWwgdG8gdXBkYXRlIHRoZSBjb3B5LCBjb3B5Cj4gd291bGQgYmUgdXBkYXRlZCBp biB0aGUgaXJxIGhhbmRsZXIgdG9vIHNvIGF0IGxlYXN0IGl0IGdldCB1cGRhdGVkCj4gYW55dGlt ZSBzb21ldGhpbmcgZW5hYmxlIGlycS4KPgo+IENoZWVycywKPiBKZXJvbWUKPiAgICAKClRoYXQg YWxzbyBzb3VuZHMgbGlrZSBhIGZlYXNpYmxlIC8gZ29vZCB3YXkuCk5vdGUgdGhhdCB0aGUgZHJp dmVyIGRldGVybWluZXMgdGhlIG1hcHBpbmcgb2Zmc2V0IG9mIFRUTSBhZGRyZXNzIHNwYWNlLiAK WW91IGNhbgpqdXN0IGFkanVzdCB0aGF0IHNvbWV3aGF0IHVwd2FyZHMgYW5kIHlvdSdsbCBoYXZl IGZyZWUgc3BhY2UgZm9yIGFuIHJvIHBhZ2UuCgovVGhvbWFzCgoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==