From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 7/7] drm/syncobj: use the timeline point in drm_syncobj_find_fence Date: Tue, 27 Nov 2018 08:53:46 +0100 Message-ID: <20181127075346.GU4266@phenom.ffwll.local> References: <20181115111245.30161-8-christian.koenig@amd.com> <7857f8af-7046-66a4-e679-3e788b5750c1@amd.com> <3a57870c-75ee-e706-1967-870f4757d6ff@gmail.com> <1c8fb095-2a82-12f3-d8e2-6b437a795d0f@amd.com> <7b04004c-4a6a-8c25-cb2a-5995027f16ee@gmail.com> <20181123122637.GJ4266@phenom.ffwll.local> <2ea59bf7-371b-7777-4d68-cf464aab2f93@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3962689DC0 for ; Tue, 27 Nov 2018 07:53:51 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id b14so18142123edt.6 for ; Mon, 26 Nov 2018 23:53:51 -0800 (PST) Content-Disposition: inline In-Reply-To: <2ea59bf7-371b-7777-4d68-cf464aab2f93@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: christian.koenig@amd.com Cc: "daniel.vetter@ffwll.ch" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMjMsIDIwMTggYXQgMDE6NDA6MTZQTSArMDEwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAyMy4xMS4xOCB1bSAxMzoyNiBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4g PiBPbiBGcmksIE5vdiAyMywgMjAxOCBhdCAxMjowMjo0MVBNICswMDAwLCBLb2VuaWcsIENocmlz dGlhbiB3cm90ZToKPiA+ID4gQW0gMjMuMTEuMTggdW0gMTI6MDMgc2NocmllYiBDaHJpc3RpYW4g S8O2bmlnOgo+ID4gPiA+IEFtIDIzLjExLjE4IHVtIDExOjU2IHNjaHJpZWIgemhvdWNtMToKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gT24gMjAxOOW5tDEx5pyIMjPml6UgMTg6MTAsIEtvZW5pZywgQ2hy aXN0aWFuIHdyb3RlOgo+ID4gPiA+ID4gPiBBbSAyMy4xMS4xOCB1bSAwMzozNiBzY2hyaWViIHpo b3VjbTE6Cj4gPiA+ID4gPiA+ID4gT24gMjAxOOW5tDEx5pyIMjLml6UgMTk6MzAsIENocmlzdGlh biBLw7ZuaWcgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiBBbSAyMi4xMS4xOCB1bSAwNzo1MiBzY2hy aWViIHpob3VjbTE6Cj4gPiA+ID4gPiA+ID4gPiA+IE9uIDIwMTjlubQxMeaciDE15pelIDE5OjEy LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+IEltcGxlbWVudCBm aW5kaW5nIHRoZSByaWdodCB0aW1lbGluZSBwb2ludCBpbgo+ID4gPiA+ID4gPiA+ID4gPiA+IGRy bV9zeW5jb2JqX2ZpbmRfZmVuY2UuCj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0Bh bWQuY29tPgo+ID4gPiA+ID4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiA+ID4gPiA+ICDCoMKg IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIHwgMTAgKysrKysrKysrLQo+ID4gPiA+ID4g PiA+ID4gPiA+ICDCoMKgIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPiA+ID4gPiA+ID4gPiA+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCj4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXggNTg5 ZDg4NGNjZDU4Li5kNDJjNTE1MjBkYTQgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKPiA+ID4gPiA+ID4gPiA+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwo+ID4gPiA+ID4gPiA+ID4gPiA+IEBAIC0zMDcs OSArMzA3LDE3IEBAIGludCBkcm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZQo+ ID4gPiA+ID4gPiA+ID4gPiA+ICpmaWxlX3ByaXZhdGUsCj4gPiA+ID4gPiA+ID4gPiA+ID4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PRU5UOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICDC oMKgIMKgwqDCoMKgwqAgKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOwo+ ID4gPiA+ID4gPiA+ID4gPiA+IC3CoMKgwqAgaWYgKCEqZmVuY2UpIHsKPiA+ID4gPiA+ID4gPiA+ ID4gPiArwqDCoMKgIGlmICghKmZlbmNlKQo+ID4gPiA+ID4gPiA+ID4gPiA+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOwo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiA+ID4gPiArwqDCoMKgIGlmICghcmV0ICYmIHBvaW50KSB7Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9jaGFpbl9mb3JfZWFjaCgqZmVuY2UpIHsKPiA+ ID4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXRvX2RtYV9mZW5j ZV9jaGFpbigqZmVuY2UpIHx8Cj4gPiA+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoKmZlbmNlKS0+c2Vxbm8gPD0gcG9pbnQpCj4gPiA+ID4gPiA+ID4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ID4gPiA+ID4gPiA+ ID4gVGhpcyBjb25kaXRpb24gaXNuJ3QgZW5vdWdoIHRvIGZpbmQgcHJvcGVyIHBvaW50Lgo+ID4g PiA+ID4gPiA+ID4gPiBGb3IgdHdvIGV4YW1wbGVzOgo+ID4gPiA+ID4gPiA+ID4gPiBhLiBObyBn YXJiYWdlIGNvbGxlY3Rpb24gaGFwcGVucywgdGhlIHBvaW50cyBpbiBjaGFpbiBhcmUKPiA+ID4g PiA+ID4gPiA+ID4gMS0tLS0zLS0tLTYtLS0tOS0tLS0xMi0tLTE4LS0tMjAsIGlmIHVzZXIgd2Fu dHMgdG8gZ2V0IHBvaW50MTcsIHRoZW4KPiA+ID4gPiA+ID4gPiA+ID4gd2Ugc2hvdWxkIHJldHVy biBub2RlIDE4Lgo+ID4gPiA+ID4gPiA+ID4gQW5kIHRoYXQgaXMgZXhhY3RseSB3aGF0J3Mgd3Jv bmcgaW4gdGhlIG9yaWdpbmFsIGxvZ2ljLiBJbiB0aGlzIGNhc2UKPiA+ID4gPiA+ID4gPiA+IHdl IG5lZWQgdG8gcmV0dXJuIDEyLCBub3QgMTggYmVjYXVzZSBwb2ludCAxNyBjb3VsZCBoYXZlIGFs cmVhZHkgYmVlbgo+ID4gPiA+ID4gPiA+ID4gZ2FyYmFnZSBjb2xsZWN0ZWQuCj4gPiA+ID4gPiA+ ID4gSSBkb24ndCB0aGluayBzbywgdGhlICdhJyBjYXNlIEkgYWxyZWFkeSBhc3N1bWUgdGhlcmUg aXNuJ3QgZ2FyYmFnZQo+ID4gPiA+ID4gPiA+IGNvbGxlY3Rpb24uIElmIHVzZXIgd2FudHMgdG8g Z2V0IHBvaW50MTcsIHRoZW4gd2Ugc2hvdWxkIHJldHVybgo+ID4gPiA+ID4gPiA+IG5vZGUgMTgu Cj4gPiA+ID4gPiA+ID4gdGltZWxpbmUgbWVhbnMgcG9pbnRbTl3CoCBtdXN0IGJlIHNpZ25hbGVk IGxhdGVyIHRoYW4gcG9pbnRbTi0xXS4KPiA+ID4gPiA+ID4gPiBQb2ludFsxMl0ganVzdCBjYW4g bWFrZSBzdXJlIHBvaW50WzFdIH5wb2ludFsxMl0gYXJlIHNpZ25hbGVkLgo+ID4gPiA+ID4gPiA+ IFBvaW50WzE4XSBzaWduYWwgY2FuIG1ha2Ugc3VyZSBwb2ludFsxN10gaXMgc2lnbmFsZWQuCj4g PiA+ID4gPiA+ID4gU28gdGhpcyBjYXNlIHdlIG5lZWQgdG8gcmV0dXJuIDE4LCBub3QgMTIsIHdo aWNoIGlzIGtleSB0aW1lbGluZQo+ID4gPiA+ID4gPiA+IGNvbmNlcHQuCj4gPiA+ID4gPiA+IE5v LCBleGFjdGx5IHRoYXQncyBpbmNvcnJlY3QuIFdoZW4gd2UgYXNrIGZvciAxNyBhbmQgY2FuJ3Qg ZmluZCBpdCB0aGVuCj4gPiA+ID4gPiA+IHRoaXMgbWVhbnMgaXQgZWl0aGVyIG5ldmVyIGV4aXN0 ZWQgb3IgdGhhdCBpdCBpcyBzaWduYWxlZCBhbHJlYWR5Lgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gUmV0dXJuaW5nIGEgbG93ZXIgbnVtYmVyIGluIHRoaXMgY2FzZSBvciBldmVuIGEgc3R1YiBm ZW5jZSBpcyBwZXJmZWN0bHkKPiA+ID4gPiA+ID4gZmluZSBzaW5jZSB3ZSBvbmx5IG5lZWQgdG8g d2FpdCBmb3IgdGhhdCBvbmUgaW4gdGhpcyBjYXNlLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g SWYgd2UgcmV0dXJuIDE4IGluIHRoaXMgY2FzZSB0aGVuIHdlIGFkZCBpbmNvcnJlY3Qgc3luY2hy b25pemF0aW9uIHdoZW4KPiA+ID4gPiA+ID4gdGhlcmUgc2hvdWxkbid0IGJlIGFueS4KPiA+ID4g PiA+IE5vLCBUaGF0IHdpbGwgbWFrZSB0aW1lbGluZSBub3Qgd29yayBhdCBhbGwgYW5kIGJyZWFr IHRpbWVsaW5lCj4gPiA+ID4gPiBzZW1hbnRpY3MgdG90YWxseS4KPiA+ID4gPiA+IAo+ID4gPiA+ ID4gSWYgdGhlcmUgYXJlbid0IHBvaW50MTggYW5kIHBvaW50MjAsIHRoZSBjaGFpbiBpcwo+ID4g PiA+ID4gMS0tLS0zLS0tLTYtLS0tOS0tLS0xMiwgaWYgdXNlciB3YW50cyB0byBnZXQgcG9pbnQg MTcsIHlvdSBhbHNvCj4gPiA+ID4gPiByZXR1cm4gMTI/IGlmIHllcywgd2hpY2ggYWJzb2x1dGVs eSBpcyBpbmNvcnJlY3QuIFRoZSBhbnN3ZXIgc2hvdWxkCj4gPiA+ID4gPiBiZSBOTywgcmlnaHQ/ IHBvaW50MTcgc2hvdWxkIGJlIHdhaXRlZCBvbiB0aGVyZSB1bnRpbCBhIGJpZ2dlciBwb2ludAo+ ID4gPiA+ID4gaXMgY29taW5nLgo+ID4gPiA+IENvcnJlY3QsIGJ1dCB0aGlzIGlzIGEgZGlmZmVy ZW50IGNhc2UuIEluIHRoaXMgc2l0dWF0aW9uIHdlIGVpdGhlcgo+ID4gPiA+IHJldHVybiBhbiBl cnJvciBvciB3YWl0IGZvciBwb2ludCAxNyAob3Igc29tZXRoaW5nID49MTcpIHRvIHNob3cgdXAu Cj4gPiA+ID4gCj4gPiA+ID4gVGhlIGtleSBkaWZmZXJlbmNlIGlzIGlmIHBvaW50IDE3IHNob3dz IHVwIHRoZW4gd2UgcmV0dXJuIHBvaW50IDE3LAo+ID4gPiA+IGJ1dCBpZiBwb2ludCAxOCBzaG93 cyB1cCB0aGVuIHdlIG5lZWQgdG8gcmV0dXJuIHBvaW50IDEyLgo+ID4gPiA+IAo+ID4gPiA+ID4g Rm9yIGNoYWluIGlzIDEtLS0tMy0tLS02LS0tLTktLS0tMTItLS0xOC0tLTIwLCBpZiB1c2VyIHdh bnRzIHRvIHdhaXQKPiA+ID4gPiA+IG9uIGFueSBvbmUgb2YgcG9pbnRzIDEzLDE0LDE1LDE2LDE3 LDE4LCB3ZSBtdXN0IHdhaXQgZm9yIHBvaW50IDE4LAo+ID4gPiA+ID4gdGhpcyBpcyB0aW1lbGlu ZSBzZW1hbnRpYy4KPiA+ID4gPiBBaCwgbm93IEkgdW5kZXJzdGFuZC4gWW91IGFyZSBzdGlsbCBz dGlja2luZyB3aXRoIHRoZSBhc3N1bXB0aW9uIG9mIGEKPiA+ID4gPiBmZW5jZSBudW1iZXIsIHJp Z2h0Pwo+ID4gPiA+IAo+ID4gPiA+IEluIG90aGVyIHdvcmRzIHdoYXQgeW91IGltcGx5IGhlcmUg aXMgdGhhdCB3ZSBoYXZlIHRoZSBzYW1lIHNlbWFudGljCj4gPiA+ID4gYXMgd2hlbiBzb21lYm9k eSB3YWl0cyBmb3IgYSBtZW1vcnkgbG9jYXRpb24gdG8gYmUgd3JpdHRlbiBieSBudW1iZXIKPiA+ ID4gPiAxNywgcmlnaHQ/IEluIHRoaXMgY2FzZSB0aGUgc2VtYW50aWNzIHlvdSBkZXNjcmliZSBo ZXJlIGluZGVlZCBhcHBsaWVzLgo+ID4gPiA+IAo+ID4gPiA+IEJ1dCB0aGF0IGlzIGNlcnRhaW5s eSBub3Qgd2hhdCB3ZSB3YW50IHRvIGltcGxlbWVudCBvciBvdGhlcndpc2Ugd2UKPiA+ID4gPiB3 aWxsIG5ldmVyIGJlIGFibGUgdG8gZ2FyYmFnZSBjb2xsZWN0IHRoZSBudW1iZXJzIGluIGJldHdl ZW4uCj4gPiA+ID4gCj4gPiA+ID4gU28gaWYgVnVsa2FuIGhhcyB0aGlzIHJlcXVpcmVtZW50IHRo ZW4gd2UgbmVlZCB0byByZWplY3QgdGhhdC4KPiA+ID4gQmFja2luZyBvZiBhbmQgcmVjb25zaWRl cmluZyB0aGlzIEkgY2FtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IHdoYXQgeW91Cj4gPiA+IHN1 Z2dlc3QgaGVyZSBpcyBhY3R1YWxseSB0aGUgbW9zdCBkZWZlbnNpdmUgc29sdXRpb24uCj4gPiA+ IAo+ID4gPiBJbiBvdGhlciB3b3JkcyBpdCBpcyB0aGUgc29sdXRpb24gd2hlcmUgaXQncyBtb3N0 IGxpa2VseSB0aGF0IG5vdGhpbmcKPiA+ID4gZ29lcyB3cm9uZyBiZWNhdXNlIHRoZSB3b3JzdCB0 aGluZyB0aGF0IGNhbiBoYXBwZW4gaXMgdGhhdCB3ZQo+ID4gPiBzeW5jaHJvbml6ZSB0byBtdWNo LCBidXQgbmV2ZXIgdG8gbGVzcy4KPiA+ID4gCj4gPiA+IEdvaW5nIHRvIHRoaW5rIGFib3V0IGl0 IGhvdyB3ZSBjYW4gYnJpbmcgdGhhdCBpbnRvIGFsaWdubWVudCB3aXRoIHRoZQo+ID4gPiBwcm9w b3NlZCBnYXJiYWdlIGNvbGxlY3Rpb24uCj4gPiBTaG91bGQgd2UgaW1wbGVtZW50IHRoZSB0ZXN0 cyBmaXJzdCAoZWl0aGVyIGFzIGluLWtlcm5lbCB1bml0IHRlc3RzLCBsaWtlCj4gPiB3ZSBoYXZl IHNvbWUsIG9yIGluIGlndCBvbiB0b3Agb2YgdmdlbSksIGFncmVlIG9uIHRoZSBzZW1hbnRpY3Mg d2Ugd2FudCwKPiA+IHRoZW4gd29yayBvbiB0aGUgaW1wbGVtZW50YXRpb24/Cj4gPiAKPiA+IEFs bCB0aGVzZSBkaXNjdXNzaW9ucyBhbmQgZ290Y2hhcyBhbmQgIm9vcHMgYW5vdGhlciBjb3JuZXIg Y2FzZSB3ZSBtaXNzZWQiCj4gPiB3aGVuIG9ubHkgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRp b24gZmVlbHMgbGlrZSBpdCBjb3VsZCB3b3JrIG91dAo+ID4gYmV0dGVyIGlmIHdlIGF0dGFjayB0 aGlzIGZyb20gdGhlIG90aGVyIHNpZGUgb2YgdGhlIHVhcGkgYmFycmllciAuLi4KPiAKPiBXZWxs IEkgYWdyZWUgdGhhdCB0aGlzICJvb3BzIGFub3RoZXIgY29ybmVyIGNhc2Ugd2UgbWlzc2VkIiBp cyBleGFjdGx5IHRoZQo+IGtleSBwcm9ibGVtIGhlcmUuCj4gCj4gQnV0IHdoZW4gdGhlIGtlcm5l bCBkZXZlbG9wZXJzIGltcGxlbWVudCB0aGUgdGVzdCBjYXNlcyB3ZSBqdXN0IG1vdmUgdGhlCj4g aXNzdWUgdG8gYW5vdGhlciBwbGFjZSBhbmQgbm90IGZ1bmRhbWVudGFsbHkgc29sdmUgaXQuCj4g Cj4gV2hhdCB3ZSBzaG91bGQgZG8gaXMgdG8gcHVzaCB0aGUgYW52L3JhZHYvYW1kdmxrIGRldnMg dG8gZ28gYWhlYWQgYW5kCj4gaW1wbGVtZW50IHRlc3QgY2FzZXMgZm9yIGFsbCB0aGUgdWdseSBj b3JuZXIgY2FzZXMgdGhleSBoYXZlIGluIG1pbmQuCj4gCj4gQWRkaXRpb25hbCB0byB0aGF0IEkg cmVhbGx5IHRoaW5rIHRoYXQgdGhlIFVBUEkgRGF2aWQoQ2h1bk1pbmcpIGNhbWUgdXAgd2l0aAo+ IGlzIGFjdHVhbGx5IHByZXR0eSBzb2xpZCwgc28gZXZlcnl0aGluZyBzaG91bGQgYWN0dWFsbHkg YmUgZ29vZCB0byBnbyB0byBkbwo+IHRoaXMuCgpZZWFoIEkgZ3Vlc3Mga2hyIHRlc3Qgc3VpdGUg d291bGQgYmUgYmVzdCwgd2l0aCBtZXNhIGltcGxlbWVudGF0aW9uCnJ1bm5pbmcuIEUuZy4gbG9v a2luZyBhdCB3aGF0IHRoZXNlIHRpbWVsaW5lIGZlbmNlcyB3aWxsIGJlIG9uIHRoZSB3aW5kb3dz CnNpZGUgYXMgbW9uaXRvcmVkIGZlbmNlcywgSSdtIG5vdCBzdXJlIGFsbCB0aGUgdGhpbmdzIHdl IGhhdmUgYXJvdW5kCmd1YXJhbnRlZWluZyBvcmRlcmluZyBhbmQgYWxsb3dpbmcgb3V0LW9mLW9y ZGVyIHNpZ25hbGxpbmcgaXMgYSBnb29kIGlkZWEuCkluIHdpbmRvd3MgYSBtb25pdG9yZWQgZmVu Y2UgaXMganVzdCBhIG1lbW9yeSBsb2NhdGlvbiB5b3Ugd3JpdGUuIEhlbmNlCndob21ldmVyIGlz c3VlcyB0aGUgd3JpdGVzIG11c3QgZ3VhcmFudGVlIHRoYXQgdGhleSdyZSBvcmRlcmVkLiBPbmNl IHdlCmhhdmUga2hyIChvciBhdCBsZWFzdCBwaWdsaXQpIHRlc3RzIHdlIGNvdWxkIGZpZ3VyZSBv dXQgd2hhdCB0aGlzIG1lYW5zCmZvciB1cy4KCkFueXdheSwgSSB0aGluayB3ZSBuZWVkIG1vcmUg dXNlcnNwYWNlIGNvZGUgaGVyZSA6LSkKLURhbmllbAoKPiAKPiBSZWdhcmRzLAo+IENocmlzdGlh bi4KPiAKPiA+IAo+ID4gSnVzdCBhIHRob3VnaHQuCj4gPiAtRGFuaWVsCj4gPiAKPiA+ID4gVGhh bmtzLAo+ID4gPiBDaHJpc3RpYW4uCj4gPiA+IAo+ID4gPiA+IFJlZ2FyZHMsCj4gPiA+ID4gQ2hy aXN0aWFuLgo+ID4gPiA+IAo+ID4gPiA+ID4gWW91IGNhbiBhbHNvIGNoZWNrIHN3X3N5bmMuYyBm b3IgdGltZWxpbmUgbWVhbmluZy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gLURhdmlkCj4gPiA+ID4g PiA+IENocmlzdGlhbi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gLURhdmlkCj4gPiA+ID4g PiA+ID4gPiA+IGIuIGdhcmJhZ2UgY29sbGVjdGlvbiBoYXBwZW5zIG9uIHBvaW50NiwgY2hhaW4g d291bGQgYmUgdXBkYXRlZCB0bwo+ID4gPiA+ID4gPiA+ID4gPiAxLS0tMy0tLTktLS0xMi0tLTE4 LS0tMjAsIGlmIHVzZXIgd2FudHMgdG8gZ2V0IHBvaW50NSwgdGhlbiB3ZQo+ID4gPiA+ID4gPiA+ ID4gPiBzaG91bGQgcmV0dXJuIG5vZGUgMywgYnV0IGlmIHVzZXIgd2FudHMgdG8gZ2V0IHBvaW50 IDcsIHRoZW4gd2UKPiA+ID4gPiA+ID4gPiA+ID4gc2hvdWxkIHJldHVybiBub2RlIDkuCj4gPiA+ ID4gPiA+ID4gPiBXaHk/IFRoYXQgZG9lc24ndCBzZWVtIHRvIG1ha2UgYW55IHNlbnNlIHRvIG1l Lgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IEkgc3RpbGwgaGF2ZSBubyBpZGVh IGhvdyB0byBzYXRpc2Z5IGFsbCB0aGVzZSByZXF1aXJlbWVudHMgd2l0aCB5b3VyCj4gPiA+ID4g PiA+ID4gPiA+IGN1cnJlbnQgY2hhaW4tZmVuY2UuIEFsbCB0aGVzZSBsb2dpYyBqdXN0IGFyZSBz YW1lIHdlIGVuY291bnRlcmVkCj4gPiA+ID4gPiA+ID4gPiA+IGJlZm9yZSwgd2UncmUgd2Fsa2lu ZyB0aGVtIGFnYWluLiBBZnRlciBzb2x2aW5nIHRoZXNlIHByb2JsZW1zLCBJCj4gPiA+ID4gPiA+ ID4gPiA+IGd1ZXNzIGFsbCBkZXNpZ24gaXMgc2ltaWxhciBhcyBiZWZvcmUuCj4gPiA+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBJbiBmYWN0LCBJIGRvbid0IGtub3cgd2hhdCBwcm9i bGVtIHByZXZpb3VzIGRlc2lnbiBoYXMsIG1heWJlIHRoZXJlCj4gPiA+ID4gPiA+ID4gPiA+IGFy ZSBzb21lIGJ1Z3MsIGNhbid0IHdlIGZpeCB0aGVzZSBidWdzIGJ5IHRpbWUgZ29pbmc/IFdobyBj YW4gbWFrZQo+ID4gPiA+ID4gPiA+ID4gPiBzdXJlIGhpcyBpbXBsZW1lbnRhdGlvbiBuZXZlciBo YXZlIGJ1Z3M/Cj4gPiA+ID4gPiA+ID4gPiBXZWxsIHRoZXJlIHdoZXJlIG51bWVyb3VzIHByb2Js ZW1zIHdpdGggdGhlIG9yaWdpbmFsIGRlc2lnbi4gRm9yCj4gPiA+ID4gPiA+ID4gPiBleGFtcGxl IHdlIG5lZWQgdG8gcmVqZWN0IHRoZSByZXF1aXJlbWVudCB0aGF0IHRpbWVsaW5lIGZlbmNlcyBh cmUgaW4KPiA+ID4gPiA+ID4gPiA+IG9yZGVyIGJlY2F1c2UgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vu c2UgaW4gdGhlIGtlcm5lbC4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gV2hlbiB1 c2Vyc3BhY2UgZG9lcyBzb21ldGhpbmcgbGlrZSBzdWJtaXR0aW5nIGZlbmNlcyBpbiB0aGUgb3Jk ZXIgMSwKPiA+ID4gPiA+ID4gPiA+IDUsIDMgdGhlbiBpdCBpcyBicm9rZW4gYW5kIGNhbiBrZWVw IHRoZSBwaWVjZXMuIEluIG90aGVyIHdvcmRzIHRoZQo+ID4gPiA+ID4gPiA+ID4ga2VybmVsIHNo b3VsZCBub3QgY2FyZSBhYm91dCB0aGF0LCBidXQgcmF0aGVyIG1ha2Ugc3VyZSB0aGF0IGl0IG5l dmVyCj4gPiA+ID4gPiA+ID4gPiBsb29zZXMgYW55IHN5bmNocm9uaXphdGlvbiBubyBtYXR0ZXIg d2hhdC4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gUmVnYXJkcywKPiA+ID4gPiA+ ID4gPiA+IENocmlzdGlhbi4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAtRGF2 aWQKPiA+ID4gPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+ID4gPiA+ID4g PiA+ICDCoMKgwqDCoMKgwqAgfQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ ID4gPiAgwqDCoMKgwqDCoMKgIGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKPiA+ID4gPiA+ID4g PiA+ID4gPiAgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gPiA+ID4gIMKg wqAgfQo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+ID4gPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4gPiA+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gCgotLSAKRGFuaWVsIFZldHRlcgpT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==