From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= Subject: Re: Question on UAPI for fences Date: Sun, 14 Sep 2014 12:36:43 +0200 Message-ID: <54156FBB.5010005@amd.com> References: <5412F3CA.9060306@amd.com> <20140912145048.GA4139@gmail.com> <20140912153346.GB4139@gmail.com> <54131481.4040905@amd.com> <20140912154831.GC4139@gmail.com> <54131811.4050509@amd.com> <20140912160349.GD4139@gmail.com> <54131A77.3030003@amd.com> <54132180.5050905@Intel.com> <541437B8.4010607@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0139.outbound.protection.outlook.com [157.56.111.139]) by gabe.freedesktop.org (Postfix) with ESMTP id 2119C6E170 for ; Sun, 14 Sep 2014 03:36:51 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Cc: Maarten Lankhorst , Zach Pfeffer , "dri-devel@lists.freedesktop.org" , "linaro-mm-sig@lists.linaro.org" , gpudriverdevsupport , John Harrison List-Id: dri-devel@lists.freedesktop.org WWVhaCwgcmlnaHQuIFByb3ZpZGluZyB0aGUgZmQgdG8gcmVhc3NpZ24gdG8gYSBmZW5jZSB3b3Vs ZCBpbmRlZWQgcmVkdWNlIAp0aGUgY3JlYXRlL2Nsb3NlIG92ZXJoZWFkLgoKQnV0IGl0IHdvdWxk IHN0aWxsIGJlIG1vcmUgb3ZlcmhlYWQgdGhhbiBmb3IgZXhhbXBsZSBhIHNpbXBsZSBvbiBkZW1h bmQgCmdyb3dpbmcgcmluZyBidWZmZXIgd2hpY2ggdGhlbiB1c2VzIDY0Yml0IHNlcXVlbmNlIG51 bWJlcnMgaW4gdXNlcnNwYWNlIAp0byByZWZlciB0byBhIGZlbmNlIGluIHRoZSBrZXJuZWwuCgpB cGFydCBmcm9tIHRoYXQgSSdtIHByZXR0eSBzdXJlIHRoYXQgd2hlbiB3ZSBkbyB0aGUgc3luY2lu ZyBjb21wbGV0ZWx5IAppbiB1c2Vyc3BhY2Ugd2UgbmVlZCBtb3JlIGZlbmNlcyBvcGVuIGF0IHRo ZSBzYW1lIHRpbWUgdGhhbiBmZHMgYXJlIAphdmFpbGFibGUgYnkgZGVmYXVsdC4KCkFzIGxvbmcg YXMgb3VyIGludGVybmFsIGhhbmRsZSBvciBzZXF1ZW5jZSBiYXNlZCBmZW5jZSBhcmUgZWFzaWx5 IApjb252ZXJ0aWJsZSB0byBhIGZlbmNlIGZkIEkgYWN0dWFsbHkgZG9uJ3QgcmVhbGx5IHNlZSBh IHByb2JsZW0gd2l0aCAKdGhhdC4gR29pbmcgdG8gaGFjayB0aGF0IGFwcHJvYWNoIGludG8gbXkg cHJvdG90eXBlIGFuZCB0aGVuIHdlIGNhbiBzZWUgCmhvdyBiYWQgdGhlIGNvZGUgbG9va3MgYWZ0 ZXIgYWxsLgoKQ2hyaXN0aWFuLgoKQW0gMTQuMDkuMjAxNCB1bSAwMjozMiBzY2hyaWViIE1hcmVr IE9sxaHDoWs6Cj4gQlRXLCB3ZSBjYW4gcmVjeWNsZSBmZW5jZXMgaW4gdXNlcnNwYWNlIGp1c3Qg bGlrZSB3ZSByZWN5Y2xlIGJ1ZmZlcnMuCj4gVGhhdCBzaG91bGQgbWFrZSB0aGUgY3JlYXRlL2Ns b3NlIG92ZXJoZWFkIG5vbi1leGlzdGVudC4KPgo+IE1hcmVrCj4KPiBPbiBTYXQsIFNlcCAxMywg MjAxNCBhdCAyOjI1IFBNLCBDaHJpc3RpYW4gS8O2bmlnCj4gPGNocmlzdGlhbi5rb2VuaWdAYW1k LmNvbT4gd3JvdGU6Cj4+PiBEb2luZyBzdWNoIGNvbWJpbmluZyBhbmQgY2xlYW5pbmcgdXAgZmRz IGFzIHNvb24gYXMgdGhleSBoYXZlIGJlZW4gcGFzc2VkCj4+PiBvbiBzaG91bGQga2VlcCBlYWNo IGFwcGxpY2F0aW9uJ3MgZmQgdXNhZ2UgZmFpcmx5IHNtYWxsLgo+PiBZZWFoLCBidXQgdGhpcyBp cyBleGFjdGx5IHdoYXQgd2Ugd2FudGVkIHRvIGF2b2lkIGludGVybmFsbHkgYmVjYXVzZSBvZiB0 aGUKPj4gSU9DVEwgb3ZlcmhlYWQuCj4+Cj4+IEFuZCB0aGlua2luZyBtb3JlIGFib3V0IGl0IGZv ciBvdXIgZHJpdmVyIGludGVybmFsIHVzZSB3ZSB3aWxsIGRlZmluaXRlbHkKPj4gaGl0IHNvbWUg bGltaXRhdGlvbnMgd2l0aCB0aGUgbnVtYmVyIG9mIEZEcyBpbiB1c2UgYW5kIHRoZSBvdmVyaGVh ZCBmb3IKPj4gY3JlYXRpbmcgYW5kIGNsb3NpbmcgdGhlbS4gV2l0aCB0aGUgZXhlY3V0aW9uIG1v ZGVsIHdlIHRhcmdldCBmb3IgdGhlIGxvbmcKPj4gdGVybSB3ZSB3aWxsIG5lZWQgc29tZXRoaW5n IGxpa2UgMTBrIGZlbmNlcyBwZXIgc2Vjb25kIG9yIG1vcmUuCj4+Cj4+IEhvdyBhYm91dCB0aGlz OiBXZSB1c2UgYW4gaWRlbnRpZmllciBwZXIgY2xpZW50IGZvciB0aGUgZmVuY2UgaW50ZXJuYWxs eSBhbmQKPj4gd2hlbiB3ZSBuZWVkIHRvIHNvbWVob3cgZXhwb3NlIGl0IHRvIHNvbWVib2R5IGVs c2UgZXhwb3J0IGl0IGFzIHN5bmMgcG9pbnQKPj4gZmQuIFZlcnkgc2ltaWxhciB0byBob3cgd2Ug Y3VycmVudGx5IGhhdmUgR0VNIGhhbmRsZXMgaW50ZXJuYWxseSBhbmQgd2hlbiB3ZQo+PiBuZWVk IHRvIGV4cG9zZSB0aGVtIGV4cG9ydCBhIERNQV9idWYgZmQuCj4+Cj4+IFJlZ2FyZHMsCj4+IENo cmlzdGlhbi4KPj4KPj4gQW0gMTIuMDkuMjAxNCB1bSAxODozOCBzY2hyaWViIEpvaG4gSGFycmlz b246Cj4+Cj4+PiBPbiBGcmksIFNlcCAxMiwgMjAxNCBhdCAwNTo1ODowOVBNICswMjAwLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+IHBhc3MgaW4gYSBsaXN0IG9mIGZlbmNlcyB0byB3YWl0 IGZvciBiZWZvcmUgYmVnaW5uaW5nIGEgY29tbWFuZAo+Pj4+IHN1Ym1pc3Npb24uCj4+PiBUaGUg QW5kcm9pZCBpbXBsZW1lbnRhdGlvbiBoYXMgYSBtZWNoYW5pc20gZm9yIGNvbWJpbmluZyBtdWx0 aXBsZSBzeW5jCj4+PiBwb2ludHMgaW50byBhIGJyYW5kIG5ldyBzaW5nbGUgc3luYyBwdC4gVGh1 cyBBUElzIG9ubHkgZXZlciBuZWVkIHRvIHRha2UgaW4KPj4+IGEgc2luZ2xlIGZkIG5vdCBhIGxp c3Qgb2YgdGhlbS4gSWYgdGhlIHVzZXIgd2FudHMgYW4gb3BlcmF0aW9uIHRvIHdhaXQgZm9yCj4+ PiBtdWx0aXBsZSBldmVudHMgdG8gb2NjdXIgdGhlbiBpdCBpcyB1cCB0byB0aGVtIHRvIHJlcXVl c3QgdGhlIGNvbWJpbmVkCj4+PiB2ZXJzaW9uIGZpcnN0LiBUaGV5IGNhbiB0aGVuIGhhcHBpbHkg Y2xvc2UgdGhlIGluZGl2aWR1YWwgZmRzIHRoYXQgaGF2ZSBiZWVuCj4+PiBjb21iaW5lZCBhbmQg b25seSBrZWVwIHRoZSBvbmUgYmlnIG9uZSBhcm91bmQuIEluZGVlZCwgZXZlbiB0aGF0IGZkIGNh biBiZQo+Pj4gY2xvc2VkIG9uY2UgaXQgaGFzIGJlZW4gcGFzc2VkIG9uIHRvIHNvbWUgb3RoZXIg QVBJLgo+Pj4KPj4+IERvaW5nIHN1Y2ggY29tYmluaW5nIGFuZCBjbGVhbmluZyB1cCBmZHMgYXMg c29vbiBhcyB0aGV5IGhhdmUgYmVlbiBwYXNzZWQKPj4+IG9uIHNob3VsZCBrZWVwIGVhY2ggYXBw bGljYXRpb24ncyBmZCB1c2FnZSBmYWlybHkgc21hbGwuCj4+Pgo+Pj4KPj4+IE9uIDEyLzA5LzIw MTQgMTc6MDgsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4+IEFzIERhbmllbCBzYWlkIHVz aW5nIGZkIGlzIG1vc3QgbGlrZWx5IHRoZSB3YXkgd2Ugd2FudCB0byBkbyBpdCBidXQgdGhpcwo+ Pj4+PiByZW1haW5zIHZhZ3VlLgo+Pj4+IFNlcGFyYXRpbmcgdGhlIGRpc2N1c3Npb24gaWYgaXQg c2hvdWxkIGJlIGFuIGZkIG9yIG5vdC4gVXNpbmcgYW4gZmQKPj4+PiBzb3VuZHMgZmluZSB0byBt ZSBpbiBnZW5lcmFsLCBidXQgSSBoYXZlIHNvbWUgY29uY2VybnMgYXMgd2VsbC4KPj4+Pgo+Pj4+ IEZvciBleGFtcGxlIHdoYXQgd2FzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuZWQgRkRzIHBl ciBwcm9jZXNzIGFnYWluPwo+Pj4+IENvdWxkIHRoYXQgYmVjb21lIGEgcHJvYmxlbT8gZXRjLi4u Cj4+Pj4KPj4+PiBQbGVhc2UgY29tbWVudCwKPj4+PiBDaHJpc3RpYW4uCj4+Pj4KPj4+PiBBbSAx Mi4wOS4yMDE0IHVtIDE4OjAzIHNjaHJpZWIgSmVyb21lIEdsaXNzZToKPj4+Pj4gT24gRnJpLCBT ZXAgMTIsIDIwMTQgYXQgMDU6NTg6MDlQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToK Pj4+Pj4+IEFtIDEyLjA5LjIwMTQgdW0gMTc6NDggc2NocmllYiBKZXJvbWUgR2xpc3NlOgo+Pj4+ Pj4+IE9uIEZyaSwgU2VwIDEyLCAyMDE0IGF0IDA1OjQyOjU3UE0gKzAyMDAsIENocmlzdGlhbiBL w7ZuaWcgd3JvdGU6Cj4+Pj4+Pj4+IEFtIDEyLjA5LjIwMTQgdW0gMTc6MzMgc2NocmllYiBKZXJv bWUgR2xpc3NlOgo+Pj4+Pj4+Pj4gT24gRnJpLCBTZXAgMTIsIDIwMTQgYXQgMTE6MjU6MTJBTSAt MDQwMCwgQWxleCBEZXVjaGVyIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIEZyaSwgU2VwIDEyLCAyMDE0 IGF0IDEwOjUwIEFNLCBKZXJvbWUgR2xpc3NlCj4+Pj4+Pj4+Pj4gPGouZ2xpc3NlQGdtYWlsLmNv bT4gd3JvdGU6Cj4+Pj4+Pj4+Pj4+IE9uIEZyaSwgU2VwIDEyLCAyMDE0IGF0IDA0OjQzOjQ0UE0g KzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+PiBPbiBGcmksIFNlcCAxMiwg MjAxNCBhdCA0OjA5IFBNLCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4+Pj4+Pj4+ Pj4+PiB3cm90ZToKPj4+Pj4+Pj4+Pj4+PiBPbiBGcmksIFNlcCAxMiwgMjAxNCBhdCAwMzoyMzoy MlBNICswMjAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+PiBIZWxsbyBl dmVyeW9uZSwKPj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4gdG8gYWxsb3cgY29uY3VycmVu dCBidWZmZXIgYWNjZXNzIGJ5IGRpZmZlcmVudCBlbmdpbmVzIGJleW9uZAo+Pj4+Pj4+Pj4+Pj4+ PiB0aGUgbXVsdGlwbGUKPj4+Pj4+Pj4+Pj4+Pj4gcmVhZGVycy9zaW5nbGUgd3JpdGVyIG1vZGVs IHRoYXQgd2UgY3VycmVudGx5IHVzZSBpbiByYWRlb24gYW5kCj4+Pj4+Pj4+Pj4+Pj4+IG90aGVy Cj4+Pj4+Pj4+Pj4+Pj4+IGRyaXZlcnMgd2UgbmVlZCBzb21lIGtpbmQgb2Ygc3luY2hvbml6YXRp b24gb2JqZWN0IGV4cG9zZWQgdG8KPj4+Pj4+Pj4+Pj4+Pj4gdXNlcnNwYWNlLgo+Pj4+Pj4+Pj4+ Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+PiBNeSBpbml0aWFsIHBhdGNoIHNldCBmb3IgdGhpcyB1c2VkIChv ciByYXRoZXIgYWJ1c2VkKSB6ZXJvCj4+Pj4+Pj4+Pj4+Pj4+IHNpemVkIEdFTSBidWZmZXJzCj4+ Pj4+Pj4+Pj4+Pj4+IGFzIGZlbmNlIGhhbmRsZXMuIFRoaXMgaXMgb2J2aW91c2x5IGlzbid0IHRo ZSBiZXN0IHdheSBvZiBkb2luZwo+Pj4+Pj4+Pj4+Pj4+PiB0aGlzICh0bwo+Pj4+Pj4+Pj4+Pj4+ PiBtdWNoIG92ZXJoZWFkLCByYXRoZXIgdWdseSBldGMuLi4pLCBKZXJvbWUgY29tbWVudGVkIG9u IHRoaXMKPj4+Pj4+Pj4+Pj4+Pj4gYWNjb3JkaW5nbHkuCj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pj4+Pj4+IFNvIHdoYXQgc2hvdWxkIGEgZHJpdmVyIGV4cG9zZSBpbnN0ZWFkPyBBbmRyb2lkIHN5 bmMgcG9pbnRzPwo+Pj4+Pj4+Pj4+Pj4+PiBTb21ldGhpbmcgZWxzZT8KPj4+Pj4+Pj4+Pj4+PiBJ IHRoaW5rIGFjdHVhbGx5IGV4cG9zaW5nIHRoZSBzdHJ1Y3QgZmVuY2Ugb2JqZWN0cyBhcyBhIGZk LAo+Pj4+Pj4+Pj4+Pj4+IHVzaW5nIGFuZHJvaWQKPj4+Pj4+Pj4+Pj4+PiBzeW5jcHRzIChvciBh dCBsZWFzdCBzb21ldGhpbmcgY29tcGF0aWJsZSB0byBpdCkgaXMgdGhlIHdheSB0bwo+Pj4+Pj4+ Pj4+Pj4+IGdvLiBQcm9ibGVtCj4+Pj4+Pj4+Pj4+Pj4gaXMgdGhhdCBpdCdzIHN1cGVyLWhhcmQg dG8gZ2V0IHRoZSBhbmRyb2lkIGd1eXMgb3V0IG9mIGhpZGluZwo+Pj4+Pj4+Pj4+Pj4+IGZvciB0 aGlzIDooCj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+PiBBZGRpbmcgYSBidW5jaCBvZiBwZW9w bGUgaW4gdGhlIGhvcGVzIHRoYXQgc29tZXRoaW5nIHN0aWNrcy4KPj4+Pj4+Pj4+Pj4+IE1vcmUg cGVvcGxlLgo+Pj4+Pj4+Pj4+PiBKdXN0IHRvIHJlLWl0ZXJhdGUsIGV4cG9zaW5nIHN1Y2ggdGhp bmcgd2hpbGUgc3RpbGwgdXNpbmcgY29tbWFuZAo+Pj4+Pj4+Pj4+PiBzdHJlYW0KPj4+Pj4+Pj4+ Pj4gaW9jdGwgdGhhdCB1c2UgaW1wbGljaXQgc3luY2hyb25pemF0aW9uIGlzIGEgd2FzdGUgYW5k IHlvdSBjYW4KPj4+Pj4+Pj4+Pj4gb25seSBnZXQKPj4+Pj4+Pj4+Pj4gdGhlIGxvd2VzdCBjb21t b24gZGVub21pbmF0b3Igd2hpY2ggaXMgaW1wbGljaXQgc3luY2hyb25pemF0aW9uLgo+Pj4+Pj4+ Pj4+PiBTbyBpIGRvCj4+Pj4+Pj4+Pj4+IG5vdCBzZWUgdGhlIHBvaW50IG9mIHN1Y2ggYXBpIGlm IHlvdSBhcmUgbm90IGFsc28gYWRkaW5nIGEgbmV3IGNzCj4+Pj4+Pj4+Pj4+IGlvY3RsCj4+Pj4+ Pj4+Pj4+IHdpdGggZXhwbGljaXQgY29udHJhY3QgdGhhdCBpdCBkb2VzIG5vdCBkbyBhbnkga2lu ZCBvZgo+Pj4+Pj4+Pj4+PiBzeW5jaHJvbml6YXRpb24KPj4+Pj4+Pj4+Pj4gKGl0IGNvdWxkIGJl IGFsbW9zdCB0aGUgZXhhY3Qgc2FtZSBjb2RlIG1vZHVsbyB0aGUgZG8gbm90IHdhaXQgZm9yCj4+ Pj4+Pj4+Pj4+IHByZXZpb3VzIGNtZCB0byBjb21wbGV0ZSkuCj4+Pj4+Pj4+Pj4gT3VyIHRoaW5r aW5nIHdhcyB0byBhbGxvdyBleHBsaWNpdCBzeW5jIGZyb20gYSBzaW5nbGUgcHJvY2VzcywgYnV0 Cj4+Pj4+Pj4+Pj4gaW1wbGljaXRseSBzeW5jIGJldHdlZW4gcHJvY2Vzc2VzLgo+Pj4+Pj4+Pj4g VGhpcyBpcyBhIEJJRyBOQUsgaWYgeW91IGFyZSB1c2luZyB0aGUgc2FtZSBpb2N0bCBhcyBpdCB3 b3VsZCBtZWFuCj4+Pj4+Pj4+PiB5b3UgYXJlCj4+Pj4+Pj4+PiBjaGFuZ2luZyB1c2Vyc3BhY2Ug QVBJLCB3ZWxsIGF0IGxlYXN0IHVzZXJzcGFjZSBleHBlY3RhdGlvbi4gQWRkaW5nCj4+Pj4+Pj4+ PiBhIG5ldwo+Pj4+Pj4+Pj4gY3MgZmxhZyBtaWdodCBkbyB0aGUgdHJpY2sgYnV0IGl0IHNob3Vs ZCBub3QgYmUgYWJvdXQgaW50ZXItcHJvY2VzcywKPj4+Pj4+Pj4+IG9yIGFueQo+Pj4+Pj4+Pj4g dGhpbmcgc3BlY2lhbCwgaXQncyBqdXN0IGltcGxpY2l0IHN5bmMgb3Igbm8gc3luY2hyb25pemF0 aW9uLgo+Pj4+Pj4+Pj4gQ29udmVydGluZwo+Pj4+Pj4+Pj4gdXNlcnNwYWNlIGlzIG5vdCB0aGF0 IG11Y2ggb2YgYSBiaWcgZGVhbCBlaXRoZXIsIGl0IGNhbiBiZSBicm9rZW4KPj4+Pj4+Pj4+IGlu dG8KPj4+Pj4+Pj4+IHNldmVyYWwgc3RlcC4gTGlrZSBtZXNhIHVzZSBleHBsaWNpdCBzeW5jaHJv bml6YXRpb24gYWxsIHRpbWUgYnV0Cj4+Pj4+Pj4+PiBkZHggdXNlCj4+Pj4+Pj4+PiBpbXBsaWNp dC4KPj4+Pj4+Pj4gVGhlIHRoaW5raW5nIGhlcmUgaXMgdGhhdCB3ZSBuZWVkIHRvIGJlIGJhY2t3 YXJkIGNvbXBhdGlibGUgZm9yCj4+Pj4+Pj4+IERSSTIvMyBhbmQKPj4+Pj4+Pj4gc3VwcG9ydCBh bGwga2luZCBvZiBkaWZmZXJlbnQgdXNlIGNhc2VzIGxpa2Ugb2xkIEREWCBhbmQgbmV3IE1lc2Es IG9yCj4+Pj4+Pj4+IG9sZAo+Pj4+Pj4+PiBNZXNhIGFuZCBuZXcgRERYIGV0Yy4uLgo+Pj4+Pj4+ Pgo+Pj4+Pj4+PiBTbyBmb3IgbXkgcHJvdG90eXBlIGlmIHRoZSBrZXJuZWwgc2VlcyBhbnkgYWNj ZXNzIG9mIGEgQk8gZnJvbSB0d28KPj4+Pj4+Pj4gZGlmZmVyZW50Cj4+Pj4+Pj4+IGNsaWVudHMg aXQgZmFsbHMgYmFjayB0byB0aGUgb2xkIGJlaGF2aW9yIG9mIGltcGxpY2l0IHN5bmNocm9uaXph dGlvbgo+Pj4+Pj4+PiBvZgo+Pj4+Pj4+PiBhY2Nlc3MgdG8gdGhlIHNhbWUgYnVmZmVyIG9iamVj dC4gVGhhdCBtaWdodCBub3QgYmUgdGhlIGZhc3Rlc3QKPj4+Pj4+Pj4gYXBwcm9hY2gsCj4+Pj4+ Pj4+IGJ1dCBpcyBhcyBmYXIgYXMgSSBjYW4gc2VlIGNvbnNlcnZhdGl2ZSBhbmQgc28gc2hvdWxk IHdvcmsgdW5kZXIgYWxsCj4+Pj4+Pj4+IGNvbmRpdGlvbnMuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IEFw YXJ0IGZyb20gdGhhdCB0aGUgcGxhbm5pbmcgc28gZmFyIHdhcyB0aGF0IHdlIGp1c3QgaGlkZSB0 aGlzCj4+Pj4+Pj4+IGZlYXR1cmUKPj4+Pj4+Pj4gYmVoaW5kIGEgY291cGxlIG9mIGNvbW1hbmQg c3VibWlzc2lvbiBmbGFncyBhbmQgbmV3IGNodW5rcy4KPj4+Pj4+PiBKdXN0IHRvIHJlcHJvZHVj ZSBJUkMgZGlzY3Vzc2lvbiwgaSB0aGluayBpdCdzIGEgbG90IHNpbXBsZXIgYW5kIG5vdAo+Pj4+ Pj4+IHRoYXQKPj4+Pj4+PiBjb21wbGV4LiBGb3IgZXhwbGljaXQgY3MgaW9jdGwgeW91IGRvIG5v dCB3YWl0IGZvciBhbnkgcHJldmlvdXMgZmVuY2UKPj4+Pj4+PiBvZgo+Pj4+Pj4+IGFueSBvZiB0 aGUgYnVmZmVyIHJlZmVyZW5jZWQgaW4gdGhlIGNzIGlvY3RsLCBidXQgeW91IHN0aWxsIGFzc29j aWF0ZQo+Pj4+Pj4+IGEKPj4+Pj4+PiBuZXcgZmVuY2Ugd2l0aCBhbGwgdGhlIGJ1ZmZlciBvYmpl Y3QgcmVmZXJlbmNlZCBpbiB0aGUgY3MgaW9jdGwuIFNvIGlmCj4+Pj4+Pj4gdGhlCj4+Pj4+Pj4g bmV4dCBpb2N0bCBpcyBhbiBpbXBsaWNpdCBzeW5jIGlvY3RsIGl0IHdpbGwgd2FpdCBwcm9wZXJs eSBhbmQKPj4+Pj4+PiBzeW5jaHJvbml6ZQo+Pj4+Pj4+IHByb3Blcmx5IHdpdGggcHJldmlvdXMg ZXhwbGljaXQgY3MgaW9jdGwuIEhlbmNlIHlvdSBjYW4gZWFzaWx5IGhhdmUgYQo+Pj4+Pj4+IG1p eAo+Pj4+Pj4+IGluIHVzZXJzcGFjZSB0aGluZyBpcyB5b3Ugb25seSBnZXQgYmVuZWZpdCBvbmNl IGVub3VnaCBvZiB5b3VyCj4+Pj4+Pj4gdXNlcnNwYWNlCj4+Pj4+Pj4gaXMgdXNpbmcgZXhwbGlj aXQuCj4+Pj4+PiBZZXMsIHRoYXQncyBleGFjdGx5IHdoYXQgbXkgcGF0Y2hlcyBjdXJyZW50bHkg aW1wbGVtZW50Lgo+Pj4+Pj4KPj4+Pj4+IFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBieSBj dXJyZW50IHBsYW5uaW5nIEkgaW1wbGVtZW50ZWQgaXQgYXMgYQo+Pj4+Pj4gcGVyIEJPCj4+Pj4+ PiBmbGFnIGZvciB0aGUgY29tbWFuZCBzdWJtaXNzaW9uLCBidXQgdGhhdCB3YXMganVzdCBmb3Ig dGVzdGluZy4gSGF2aW5nCj4+Pj4+PiBhCj4+Pj4+PiBzaW5nbGUgZmxhZyB0byBzd2l0Y2ggYmV0 d2VlbiBpbXBsaWNpdCBhbmQgZXhwbGljaXQgc3luY2hyb25pemF0aW9uIGZvcgo+Pj4+Pj4gd2hv bGUgQ1MgSU9DVEwgd291bGQgZG8gZXF1YWxseSB3ZWxsLgo+Pj4+PiBEb2luZyBpdCBwZXIgQk8g c291bmRzIGJvZ3VzIHRvIG1lLiBCdXQgb3RoZXJ3aXNlIHllcyB3ZSBhcmUgaW4KPj4+Pj4gYWdy ZWVtZW50Lgo+Pj4+PiBBcyBEYW5pZWwgc2FpZCB1c2luZyBmZCBpcyBtb3N0IGxpa2VseSB0aGUg d2F5IHdlIHdhbnQgdG8gZG8gaXQgYnV0IHRoaXMKPj4+Pj4gcmVtYWlucyB2YWd1ZS4KPj4+Pj4K Pj4+Pj4+PiBOb3RlIHRoYXQgeW91IHN0aWxsIG5lZWQgYSB3YXkgdG8gaGF2ZSBleHBsaWNpdCBj cyBpb2N0bCB0byB3YWl0IG9uIGEKPj4+Pj4+PiBwcmV2aW9zICJleHBsaWNpdCIgZmVuY2Ugc28g eW91IG5lZWQgc29tZSBhcGkgdG8gZXhwb3NlIGZlbmNlIHBlciBjcwo+Pj4+Pj4+IHN1Ym1pc3Np b24uCj4+Pj4+PiBFeGFjdGx5LCB0aGF0J3Mgd2hhdCB0aGlzIG1haWwgdGhyZWFkIGlzIGFsbCBh Ym91dC4KPj4+Pj4+Cj4+Pj4+PiBBcyBEYW5pZWwgY29ycmVjdGx5IG5vdGVkIHlvdSBuZWVkIHNv bWV0aGluZyBsaWtlIGEgZnVuY3Rpb25hbGl0eSB0bwo+Pj4+Pj4gZ2V0IGEKPj4+Pj4+IGZlbmNl IGFzIHRoZSByZXN1bHQgb2YgYSBjb21tYW5kIHN1Ym1pc3Npb24gYXMgd2VsbCBhcyBwYXNzIGlu IGEgbGlzdAo+Pj4+Pj4gb2YKPj4+Pj4+IGZlbmNlcyB0byB3YWl0IGZvciBiZWZvcmUgYmVnaW5u aW5nIGEgY29tbWFuZCBzdWJtaXNzaW9uLgo+Pj4+Pj4KPj4+Pj4+IEF0IGxlYXN0IGl0IGxvb2tz IGxpa2Ugd2UgYXJlIGFsbCBvbiB0aGUgc2FtZSBnZW5lcmFsIGxpbmUgaGVyZSwgaXRzCj4+Pj4+ PiBqdXN0Cj4+Pj4+PiBub2JvZHkgaGFzIGEgZ29vZCBpZGVhIGhvdyB0aGUgZGV0YWlscyBzaG91 bGQgbG9vayBsaWtlLgo+Pj4+Pj4KPj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+PiBDaHJpc3RpYW4uCj4+ Pj4+Pgo+Pj4+Pj4+IENoZWVycywKPj4+Pj4+PiBKw6lyw7RtZQo+Pj4+Pj4+Cj4+Pj4+Pj4+IFJl Z2FyZHMsCj4+Pj4+Pj4+IENocmlzdGlhbi4KPj4+Pj4+Pj4KPj4+Pj4+Pj4+IENoZWVycywKPj4+ Pj4+Pj4+IErDqXLDtG1lCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IEFsZXgKPj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+PiBBbHNvIG9uZSB0aGluZyB0aGF0IHRoZSBBbmRyb2lkIHN5bmMgcG9pbnQgZG9lcyBu b3QgaGF2ZSwgQUZBSUNULAo+Pj4+Pj4+Pj4+PiBpcyBhCj4+Pj4+Pj4+Pj4+IHdheSB0byBzY2hl ZHVsZSBzeW5jaHJvbml6YXRpb24gYXMgcGFydCBvZiBhIGNzIGlvY3RsIHNvIGNwdSBuZXZlcgo+ Pj4+Pj4+Pj4+PiBoYXZlCj4+Pj4+Pj4+Pj4+IHRvIGJlIGludm9sdmUgZm9yIGNtZCBzdHJlYW0g dGhhdCBkZWFsIG9ubHkgb25lIGdwdSAoYXNzdW1pbmcgdGhlCj4+Pj4+Pj4+Pj4+IGRyaXZlcgo+ Pj4+Pj4+Pj4+PiBhbmQgaHcgY2FuIGRvIHN1Y2ggdHJpY2spLgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4+PiBDaGVlcnMsCj4+Pj4+Pj4+Pj4+IErDqXLDtG1lCj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+ PiAtRGFuaWVsCj4+Pj4+Pj4+Pj4+PiAtLQo+Pj4+Pj4+Pj4+Pj4gRGFuaWVsIFZldHRlcgo+Pj4+ Pj4+Pj4+Pj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+Pj4+Pj4+Pj4+ PiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4+Pj4+Pj4+Pj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+Pj4+ Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+Pj4+Pj4+Pj4gZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+Pj4+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4+Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+PiBkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==