From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: about mmap dma-buf and sync Date: Mon, 24 Aug 2015 11:59:57 +0200 Message-ID: <55DAEB1D.3050307@vmware.com> References: <55D50442.5080102@intel.com> <55D57837.4080301@vmware.com> <20150820145340.GA2309@gmail.com> <55D62CE0.5060904@shipmail.org> <20150820203437.GA3973@gmail.com> <55D6B633.2070103@vmware.com> <20150821133221.GA3244@gmail.com> <55D73299.3000704@vmware.com> <20150821160024.GC3244@gmail.com> <55D79F75.5040007@vmware.com> <20150824014148.GA5394@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from smtp-outbound-1.vmware.com (smtp-outbound-1.vmware.com [208.91.2.12]) by gabe.freedesktop.org (Postfix) with ESMTPS id E77636E939 for ; Mon, 24 Aug 2015 03:00:02 -0700 (PDT) In-Reply-To: <20150824014148.GA5394@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jerome Glisse Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gMDgvMjQvMjAxNSAwMzo0MSBBTSwgSmVyb21lIEdsaXNzZSB3cm90ZToKPiBPbiBTYXQsIEF1 ZyAyMiwgMjAxNSBhdCAxMjowMDoyMUFNICswMjAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ PiBPbiAwOC8yMS8yMDE1IDA2OjAwIFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4gT24gRnJp LCBBdWcgMjEsIDIwMTUgYXQgMDQ6MTU6NTNQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJvbSB3cm90 ZToKPj4+PiBPbiAwOC8yMS8yMDE1IDAzOjMyIFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4+ PiBPbiBGcmksIEF1ZyAyMSwgMjAxNSBhdCAwNzoyNTowN0FNICswMjAwLCBUaG9tYXMgSGVsbHN0 cm9tIHdyb3RlOgo+Pj4+Pj4gT24gMDgvMjAvMjAxNSAxMDozNCBQTSwgSmVyb21lIEdsaXNzZSB3 cm90ZToKPj4+Pj4+PiBPbiBUaHUsIEF1ZyAyMCwgMjAxNSBhdCAwOTozOToxMlBNICswMjAwLCBU aG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+Pj4+Pj4+PiBPbiAwOC8yMC8yMDE1IDA0OjUzIFBNLCBK ZXJvbWUgR2xpc3NlIHdyb3RlOgo+Pj4+Pj4+Pj4gT24gVGh1LCBBdWcgMjAsIDIwMTUgYXQgMDg6 NDg6MjNBTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJvbSB3cm90ZToKPj4+Pj4+Pj4+PiBIaSwgVGlh Z28hCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBPbiAwOC8yMC8yMDE1IDEyOjMzIEFNLCBUaWFnbyBW aWduYXR0aSB3cm90ZToKPj4+Pj4+Pj4+Pj4gSGV5IFRob21hcywgeW91IGhhdmVuJ3QgYW5zd2Vy ZWQgbXkgZW1haWwgYWJvdXQgbWFraW5nIFNZTkNfKiBtYW5kYXRvcnk6Cj4+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4+IGh0dHBzOi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRw LTNBX19saXN0cy5mcmVlZGVza3RvcC5vcmdfYXJjaGl2ZXNfZHJpLTJEZGV2ZWxfMjAxNS0yREF1 Z3VzdF8wODgzNzYuaHRtbCZkPUJRSURBdyZjPVNxY2wwRXo2TTBYOGFlTTY3TEtJaURKQVhWZUF3 LVlpaFZNTnRYdC11RXMmcj12cHVrUGtCdHBvTlFwMklVS3VGdmlPbVBOWVdWS21lbjNKZWV1NTV6 bUVBJm09RVgzdzhQTTc5TjVxTGVYeW9nZVNQTjlKNXBJdkJWNklLcmhCanp3SkRFTSZzPVMzTnFG MGtQTnRCS1EzLVdpZmZMMlQ5TkZLOTZYQnA1NnZrYjN1amYtaW8mZT0gCj4+Pj4+Pj4+Pj4gSG1t LCBmb3Igc29tZSByZWFzb24gaXQgZG9lc24ndCBzaG93IHVwIGluIG15IG1haWwgYXBwLCBidXQg SSBmb3VuZCBpdAo+Pj4+Pj4+Pj4+IGluIHRoZSBhcmNoaXZlcy4gQW4gYXR0ZW1wdCB0byBleHBs YWluIHRoZSBzaXR1YXRpb24gZnJvbSB0aGUgdm13Z2Z4Cj4+Pj4+Pj4+Pj4gcGVyc3BlY3RpdmUu Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBUaGUgZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgZ2Vu ZXJpYyBtZWFucyB0aGF0IHBlb3BsZSB3aWxsIHN0YXJ0Cj4+Pj4+Pj4+Pj4gdXNpbmcgaXQgZm9y IHRoZSB6ZXJvLWNvcHkgY2FzZS4gVGhlcmUgaGFzIGJlZW4gYSBjb3VwbGUgb2YgbW9yZSBvciBs ZXNzCj4+Pj4+Pj4+Pj4gaGFja2lzaCBhdHRlbXB0cyB0byBkbyB0aGlzIGJlZm9yZSwgYW5kIGlm IGl0J3MgYSBfZHJpdmVyXyBpbnRlcmZhY2Ugd2UKPj4+Pj4+Pj4+PiBkb24ndCBuZWVkIHRvIGJl IHRoYXQgY2FyZWZ1bCBidXQgaWYgaXQgaXMgYSBfZ2VuZXJpY18gaW50ZXJmYWNlIHdlIG5lZWQK Pj4+Pj4+Pj4+PiB0byBiZSB2ZXJ5IGNhcmVmdWwgdG8gbWFrZSBpdCBmaXQgKmFsbCogdGhlIGhh cmR3YXJlIG91dCB0aGVyZSBhbmQgdGhhdAo+Pj4+Pj4+Pj4+IHdlIG1ha2UgYWxsIHBvdGVudGlh bCB1c2VycyB1c2UgdGhlIGludGVyZmFjZSBpbiBhIHdheSB0aGF0IGNvbmZvcm1zCj4+Pj4+Pj4+ Pj4gd2l0aCB0aGUgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24uCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ PiBXaGF0IHdpbGwgaGFwcGVuIG90aGVyd2lzZSBpcyB0aGF0IGFwcHMgd3JpdHRlbiBmb3IgY29o ZXJlbnQgZmFzdAo+Pj4+Pj4+Pj4+IGhhcmR3YXJlIG1pZ2h0LCBmb3IgZXhhbXBsZSwgaWdub3Jl IGNhbGxpbmcgdGhlIFNZTkMgYXBpLCBqdXN0IGJlY2F1c2UKPj4+Pj4+Pj4+PiB0aGUgYXBwIHdy aXRlciBvbmx5IGNhcmVkIGFib3V0IGhpcyBvd24gaGFyZHdhcmUgb24gd2hpY2ggdGhlIGFwcCB3 b3Jrcwo+Pj4+Pj4+Pj4+IGZpbmUuIFRoYXQgd291bGQgZmFpbCBtaXNlcmFibHkgaWYgdGhlIHNh bWUgYXBwIHdhcyBydW4gb24gaW5jb2hlcmVudAo+Pj4+Pj4+Pj4+IGhhcmR3YXJlLCBvciB0aGUg aW5jb2hlcmVudCBoYXJkd2FyZSBkcml2ZXIgbWFpbnRhaW5lcnMgd291bGQgYmUgZm9yY2VkCj4+ Pj4+Pj4+Pj4gdG8gYmFzZSBhbiBpbXBsZW1lbnRhdGlvbiBvbiBwYWdlLWZhdWx0cyB3aGljaCB3 b3VsZCBiZSB2ZXJ5IHNsb3cuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBTbyBhc3N1bWUgdGhlIGZv bGxvd2luZyB1c2UgY2FzZTogQW4gYXBwIHVwZGF0ZXMgYSAxMHgxMCBhcmVhIHVzaW5nIHRoZQo+ Pj4+Pj4+Pj4+IENQVSBvbiBhIDE2MDB4MTIwMCBkbWEtYnVmLCBhbmQgaXQgd2lsbCB0aGVuIHVz ZSB0aGUgZG1hLWJ1ZiBmb3IKPj4+Pj4+Pj4+PiB0ZXh0dXJpbmcuIE9uIHNvbWUgaGFyZHdhcmUg dGhlIGRtYS1idWYgbWlnaHQgYmUgdGlsZWQgaW4gYSB2ZXJ5Cj4+Pj4+Pj4+Pj4gc3BlY2lmaWMg d2F5LCBvbiB2bXdnZnggdGhlIGRtYS1idWYgaXMgYSBHUFUgYnVmZmVyIG9uIHRoZSBob3N0LCBv bmx5Cj4+Pj4+Pj4+Pj4gYWNjZXNzaWJsZSB1c2luZyBETUEuIE9uIHZtd2dmeCB0aGUgU1lOQyBv cGVyYXRpb24gbXVzdCBjYXJyeSBvdXQgYQo+Pj4+Pj4+Pj4+IDEweDEwIERNQSBmcm9tIHRoZSBo b3N0IEdQVSBidWZmZXIgdG8gYSBndWVzdCBDUFUgYnVmZmVyIGJlZm9yZSB0aGUgQ1BVCj4+Pj4+ Pj4+Pj4gd3JpdGUgYW5kIGEgRE1BIGJhY2sgYWdhaW4gYWZ0ZXIgdGhlIHdyaXRlLCBiZWZvcmUg R1BVIHVzYWdlLiBPbiB0aGUKPj4+Pj4+Pj4+PiB0aWxlZCBhcmNoaXRlY3R1cmUgdGhlIFNZTkMg b3BlcmF0aW9uIG11c3QgdW50aWxlIGJlZm9yZSBDUFUgYWNjZXNzIGFuZAo+Pj4+Pj4+Pj4+IHBy b2JhYmx5IHRpbGUgYWdhaW4gYmVmb3JlIEdQVSBhY2Nlc3MuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ PiBJZiB3ZSBub3cgaGF2ZSBhIG9uZS1kaW1lbnNpb25hbCBTWU5DIGFwaSwgaW4gdGhpcyBwYXJ0 aWN1bGFyIGNhc2Ugd2UnZAo+Pj4+Pj4+Pj4+IGVpdGhlciBuZWVkIHRvIHN5bmMgYSBmYXIgdG9v IGxhcmdlIGFyZWEgKDE2MDB4MTApIG9yIGNhbGwgU1lOQyAxMCB0aW1lcwo+Pj4+Pj4+Pj4+IGJl Zm9yZSB3cml0aW5nLCBhbmQgdGhlbiBhZ2FpbiBhZnRlciB3cml0aW5nLiBJZiB0aGUgYXBwIGZv cmdvdCB0byBjYWxsCj4+Pj4+Pj4+Pj4gU1lOQyB3ZSBtdXN0IGVycm9yLgo+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4gU28gdG8gc3VtbWFyaXplLCB0aGUgZmFjdCB0aGF0IHRoZSBpbnRlcmZhY2UgaXMg Z2VuZXJpYyBJTU8gbWVhbnM6Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiAxKSBBbnkgdXNlciBtdXN0 IGJlIGFibGUgdG8gbWFrZSB2YWxpZCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgaW50ZXJuYWwKPj4+ Pj4+Pj4+PiBmb3JtYXQgb2YgdGhlIGRtYS1idWYuICh1bnRpbGVkLCBjb2xvciBmb3JtYXQsIHN0 cmlkZSBldGMuKQo+Pj4+Pj4+Pj4+IDIpIEFueSB1c2VyICptdXN0KiBjYWxsIFNZTkMgYmVmb3Jl IGFuZCBhZnRlciBDUFUgYWNjZXNzLiBPbiBjb2hlcmVudAo+Pj4+Pj4+Pj4+IGFyY2hpdGVjdHVy ZXMsIHRoZSBTWU5DIGlzIGEgTlVMTCBvcGVyYXRpb24gYW55d2F5LCBhbmQgdGhhdCBzaG91bGQg YmUKPj4+Pj4+Pj4+PiBkb2N1bWVudGVkIHNvbWV3aGVyZSBzbyB0aGF0IG1haW50YWluZXJzIG9m IGRyaXZlcnMgb2YgdW5jb2hlcmVudAo+Pj4+Pj4+Pj4+IGFyY2hpdGVjdHVyZXMgaGF2ZSBzb21l d2hlcmUgdG8gcG9pbnQgdGhlaXIgZmluZ2Vycy4KPj4+Pj4+Pj4+PiAzKSBEcml2ZXItc3BlY2lm aWMgaW1wbGVtZW50YXRpb25zIG11c3QgYmUgYWxsb3dlZCB0byBlcnJvciAoc2VnZmF1bHQpCj4+ Pj4+Pj4+Pj4gaWYgU1lOQyBoYXMgbm90IGJlZW4gdXNlZC4KPj4+Pj4+Pj4+IEkgdGhpbmsgaGVy ZSB5b3UgYXJlIHRvbyBsYXgsIHRoZSBjb21tb24gY29kZSBtdXN0IHNlZ2ZhdWx0IG9yCj4+Pj4+ Pj4+PiBlcnJvciBiYWRseSBpZiBTWU5DIGhhcyBub3QgYmVlbiB1c2UgaW4gYWxsIGNhc2VzIGV2 ZW4gb24gY2FjaGUKPj4+Pj4+Pj4+IGNvaGVyZW50IGFyY2guIFRoZSBkZXZpY2UgZHJpdmVyIHN5 bmMgY2FsbGJhY2sgY2FuIHN0aWxsIGJlIGEKPj4+Pj4+Pj4+IG5vIG9wZXJhdGlvbi4gQnV0IGkg dGhpbmsgdGhhdCB3ZSBuZWVkIHRvIGluc2lzdCBzdHJvbmdseSBvbiBhCj4+Pj4+Pj4+PiBwcm9w ZXIgc3luYyBjYWxsIGJlaW5nIG1hZGUgKGFuZCB3ZSBzaG91bGQgZm9yYmlkIGVtcHR5IGFyZWEK Pj4+Pj4+Pj4+IHN5bmMgY2FsbCkuIFRoaXMgd291bGQgYmUgdGhlIG9ubHkgd2F5IHRvIG1ha2Ug c3VyZSB1c2Vyc3BhY2UKPj4+Pj4+Pj4+IGJlaGF2ZSBwcm9wZXJseSBhcyBvdGhlcndpc2Ugd2Ug ZW5kdXAgaW4gdGhlIHNpdHVhdGlvbiB5b3Ugd2VyZQo+Pj4+Pj4+Pj4gZGVzY3JpYmluZyBhYm92 ZSwgd2hlcmUgdGhlIGFwcCBpcyBkZXNpZ24gb24gYSBjYWNoZSBjb2hlcmVudAo+Pj4+Pj4+Pj4g YXJjaCBhbmQgd29ya3MgZmluZSB0aGVyZSBidXQgYnJva2UgaW4gc3VidGxlIHdheSBvbiBub24g Y2FjaGUKPj4+Pj4+Pj4+IGNvaGVyZW50IGFyY2ggYW5kIGFwcCBkZXZlbG9wZXIgaXMgY2x1ZWxl c3Mgb2Ygd2h5Lgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEkganVzdCBkbyBub3QgdHJ1c3QgdXNlcnNw YWNlLgo+Pj4+Pj4+PiBJIGFncmVlIGFuZCBpZGVhbGx5IGknZCB3YW50IGl0IHRoaXMgd2F5IGFz IHdlbGwuIFRoZSBxdWVzdGlvbiBpcywgaXMgaXQKPj4+Pj4+Pj4gcG9zc2libGU/IENhbiB0aGlz IGJlIGRvbmUgd2l0aG91dCBhIGZhdWx0KCkgaGFuZGxlciBpbiB0aGUgZ2VuZXJpYwo+Pj4+Pj4+ PiBrZXJuZWwgY29kZT8KPj4+Pj4+Pj4KPj4+Pj4+Pj4+PiA0KSBUaGUgdXNlLWNhc2Ugc3RhdGVk IGFib3ZlIGNsZWFybHkgc2hvd3MgdGhlIGJlbmVmaXQgb2YgYQo+Pj4+Pj4+Pj4+IDItZGltZW5z aW9uYWwgc3luYyBpbnRlcmZhY2UgKHdlIHdhbnQgdG8gc3luYyB0aGUgMTB4MTAgcmVnaW9uKSwg YnV0Cj4+Pj4+Pj4+Pj4gd2hhdCBpZiBzb21lb25lIGluIHRoZSBmdXR1cmUgd2FudHMgdG8gdXNl IHRoaXMgaW50ZXJmYWNlIGZvciBhIDNECj4+Pj4+Pj4+Pj4gdGV4dHVyZT8gV2lsbCBhIDJEIHN5 bmMgc3VmZmljZT8gQ2FuIHdlIG1ha2UgdGhlIFNZTkMgaW50ZXJmYWNlCj4+Pj4+Pj4+Pj4gZXh0 ZW5kYWJsZSBpbiBhIHdheSB0aGF0IGFuIGVudW0gc3luY190eXBlIG1lbWJlciBkZWZpbmVzIHRo ZSBsYXlvdXQgb2YKPj4+Pj4+Pj4+PiB0aGUgYXJndW1lbnQsIGFuZCBpbml0aWFsbHkgd2UgaW1w bGVtZW50IG9ubHkgMWQsIDJkIHN5bmMsIGxlYXZpbmcgM2QKPj4+Pj4+Pj4+PiBmb3IgdGhlIGZ1 dHVyZT8KPj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IEFsc28sIEkgYWdyZWUgdGhlcmUgaXMgcHJvYmFi bHkgbm8gZ29vZCB3YXkgdG8gZ2VuZXJpY2FsbHkgaW1wbGVtZW50IGFuCj4+Pj4+Pj4+Pj4gZXJy b3IgaWYgU1lOQyBoYXMgbm90IGJlZW4gY2FsbGVkLiBUaGF0IG5lZWRzIHRvIGJlIGxlZnQgYXMg YW4gb3B0aW9uIHRvCj4+Pj4+Pj4+Pj4gZHJpdmVycy4KPj4+Pj4+Pj4+IEkgdGhpbmsgdGhlcmUg aXMsIGp1c3QgZm9yYmlkIGFueSBmdXJ0aGVyIHVzZSBvZiB0aGUgZG1hIGJ1ZmZlciwgbWFyawo+ Pj4+Pj4+Pj4gaXQgYXMgaW52YWxpZCBhbmQgcHJpbnRrIGEgYmlnIGVycm9yLiBVc2Vyc3BhY2Ug YXBwIGRldmVsb3BlciB3aWxsCj4+Pj4+Pj4+PiBxdWlja2x5IHNlZSB0aGF0IHNvbWV0aGluZyBp cyB3cm9uZyBhbmQgbG9va2luZyBhdCBrZXJuZWwgbG9nIHNob3VsZAo+Pj4+Pj4+Pj4gZXhwbGFp biB3aHkuCj4+Pj4+Pj4+IFRoZSBwcm9ibGVtIGlzIGlmIHNvbWVvbmUgY2FsbHMgbW1hcCgpIGFu ZCB0aGVuIGRlY2lkZXMgdG8gbm90IGFjY2Vzcwo+Pj4+Pj4+PiB0aGUgYnVmZmVyIGJlZm9yZSBt dW5tYXAoKSBvciBHUFUgdXNhZ2UuIEhvdyBkbyB3ZSByZWNvZ25pemUgdGhhdCBjYXNlCj4+Pj4+ Pj4+IGFuZCBzZXBhcmF0ZSBpdCBmcm9tIGEgQ1BVIGFjY2VzcyBvY2N1cmVkIG91dHNpZGUgYSBz eW5jPyBXZSBjb3VsZCwgYXMKPj4+Pj4+Pj4gbWVudGlvbmVkIGFib3ZlIGhhdmUgYSBmYXVsdCgp IGhhbmRsZXIgaW4gdGhlIGdlbmVyaWMga2VybmVsIGNvZGUgYW5kCj4+Pj4+Pj4+IG1ha2Ugc3Vy ZSBkcml2ZXJzIGRvbid0IHBvcHVsYXRlIFBURXMgdW50aWwgdGhlIGZpcnN0IGZhdWx0KCkuIEFu b3RoZXIKPj4+Pj4+Pj4gb3B0aW9uIHdvdWxkIGJlIHRvIHNjYW4gYWxsIFBURXMgZm9yIGFuICJh Y2Nlc3NlZCIgZmxhZywgYnV0IEknbSBub3QKPj4+Pj4+Pj4gZXZlbiBzdXJlIGFsbCBDUFUgYXJj aGl0ZWN0dXJlcyBoYXZlIHN1Y2ggYSBmbGFnPwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBCdXQgdGhlcmUg bWlnaHQgYmUgYSBzaW1wbGVyIHNvbHV0aW9uIHRoYXQgSSBoYXZlIG92ZXJsb29rZWQ/Cj4+Pj4+ Pj4gQWxsIGFyY2ggaGF2ZSBhIGRpcnR5IGZsYWcsIHNvIHlvdSBjb3VsZCBjaGVjayB0aGF0LCBh cyBhbGwgd2UKPj4+Pj4+PiByZWFsbHkgY2FyZSBhYm91dCBpcyBDUFUgd3JpdGUgYWNjZXNzLiBT byBhbGwgeW91IG5lZWQgaXMgY2xlYXJpbmcKPj4+Pj4+PiB0aGUgZGlydHkgYml0IGFmdGVyIGVh Y2ggc3VjY2Vzc2Z1bGwgR1BVIGNvbW1hbmQgc3RyZWFtIGlvY3RsCj4+Pj4+Pj4gYW5kIGNoZWNr aW5nIHRoYXQgbm8gZGlydHkgYml0IGlzIHNldCBpbiBhIHJlZ2lvbiBub3QgY292ZXIgYnkKPj4+ Pj4+PiBhIGZsdXNoKCkuIE5vdGUgdGhhdCB0aGUgY2xlYXIgYW5kIGNoZWNrIGNhbiBoYXBwZW4g aW4gdGhlIHNhbWUKPj4+Pj4+PiBmdW5jdGlvbiBhcyBwYXJ0IG9mIGJ1ZmZlciB2YWxpZGF0aW9u IGZvciB0aGUgR1BVIGNvbW1hbmQgc3RyZWFtLgo+Pj4+Pj4gQWN0dWFsbHksIEkgZG8gdGhpbmsg d2UgY2FyZSBhYm91dCByZWFkaW5nIGFzIHdlbGwsIHNpbmNlIHJlYWRpbmcKPj4+Pj4+IHdpdGhv dXQgZmx1c2hpbmcgYW55dGhpbmcgd3JpdHRlbiBieSB0aGUgR1BVIHdpbGwKPj4+Pj4+IHlpZWxk IGdhcmJhZ2Ugb24gYSBub24tY29oZXJlbnQgYXJjaGl0ZWN0dXJlLiBJbnN0ZWFkIHdlIG1pZ2h0 IGNoZWNrIGZvcgo+Pj4+Pj4gdGhlIFBBR0VfQUNDRVNTRUQgYml0Lgo+Pj4+PiBJIGRvIG5vdCB0 aGluayB0aGUgcmVhZCBhY2Nlc3MgYWZ0ZXIgR1BVIG1hdHRlci4gSWYgcGVvcGxlIHRoaW5rIGl0 IGRvZXMKPj4+Pj4gdGhlbiBpdCBpcyBzaW1wbGUsIGF0IGJ1ZmZlciB2YWxpZGF0aW9uIGluIGJ1 ZmZlciBtYXBwaW5nIHdlIGludmFsaWRhdGUKPj4+Pj4gQ1BVIHBhZ2UgdGFibGUgbWFwcGluZyBh bmQgdGhlIHByZXBhcmUgYWNjZXNzIGlvY3RsIHBvcHVsYXRlIHRoZW0gYWZ0ZXIKPj4+Pj4gY2hl Y2tpbmcgdGhhdCBHUFUgaXMgZmx1c2guCj4+Pj4+Cj4+Pj4+PiBTbyB0aGUgZnVsbCB2ZXJzaW9u IG9mIHRoaXMgd291bGQga2VlcCB0cmFjayBvZiBhbGwgc3luY2VkIHJlZ2lvbnMgYW5kCj4+Pj4+ PiBhdCBidWZmZXIgdmFsaWRhdGlvbiB0aW1lLCBvciB1bm1hcCB0aW1lIGVycm9yIGlmIHRoZXJl Cj4+Pj4+PiBpcyBhIHBhZ2UgY29tcGxldGVseSBvdXRzaWRlIHRoZSB1bmlvbiBvZiBhbGwgc3lu Y2VkIHJlZ2lvbnMgaW4gYW55IFZNQQo+Pj4+Pj4gYmVsb25naW5nIHRvIHRoZSBkbWEtYnVmIGFk ZHJlc3Mgc3BhY2UsIHRoZW4gdW5tYXJrIGFsbCBhY2Nlc3NlZCBQVEVzCj4+Pj4+PiBhbmQgaW52 YWxpZGF0ZSBUTEJzIGFjY29yZGluZ2x5LCB0eXBpY2FsbHkgY2F1c2luZyBhIGdsb2JhbCBUTEIg Zmx1c2guCj4+Pj4+PiBZZWFoLCB3ZSBjb3VsZCBwcm9iYWJseSBwdXQgdG9nZXRoZXIgYSBoZWxw ZXIgZnVuY3Rpb24gdGhhdCBkb2VzIHRoaXMsCj4+Pj4+PiBidXQgaXQgd2lsbCBiZSBleHBlbnNp dmUgdG8gcnVuIGFuZCB0aGUgd2hvbGUgcG9pbnQgb2YgdGhpcyBBUEkgaXMgdG8gYmUKPj4+Pj4+ IGFibGUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KPj4+Pj4gTm8gbmVlZCBmb3Igc3VjaCBjb21w bGV4aXR5LCB0aGUgc3luYyBpb2N0bCB3b3VsZCBnbyBvdmVyIHRoZSBwYWdlIHRhYmxlCj4+Pj4+ IGFuZCBjbGVhciBkaXJ0eSBiaXQgZm9yIGFsbCBwYWdlIGluIHJhbmdlIHRoYXQgaXMgc3luY2hy b25pemVkLiBTbyBvbmNlCj4+Pj4+IHlvdSBnZXQgdG8gdGhlIGNvbW1hbmQgaW9jdGwgeW91IGtu b3cgdGhhdCBhbGwgZGlydHkgYml0IG11c3QgYmUgY2xlYXIuCj4+Pj4+IE5vdGUgdGhpcyBpcyBv bmx5IGEgcGFnZSB0YWJsZSB3YWxrIGluIGFsbCBjYXNlLiBJIGRvIG5vdCBjb25zaWRlciB0aGlz Cj4+Pj4+IHRvIGJlIHRoYXQgZXhwZW5zaXZlLgo+Pj4+Pgo+Pj4+Pgo+Pj4+IFRoZSBleHBlbnNp dmUgcGFydCBpcyB0aGUgVExCIGZsdXNoaW5nIGFmdGVyIHRoZSBQVEUgdXBkYXRlLCB3aGljaAo+ Pj4+IHR5cGljYWxseSBuZWVkcyB0byBiZSBwZXJmb3JtZWQgb24gYWxsIGNvcmVzLiBBbHRob3Vn aCB3aXRob3V0IGEKPj4+PiBiZW5jaG1hcmsgSSdtIG5vdCBzdXJlIGhvdyBleHBlbnNpdmUuIEl0 IG1pZ2h0IGJlIHRoYXQgaXQgZG9lc24ndAo+Pj4+IG1hdHRlci4gQWZ0ZXIgYWxsLCB0aGUgdm13 Z2Z4LSBhbmQgSSBiZWxpZXZlIHRoZSBxeGwgZHJpdmVyIGJvdGggdXNlIGEKPj4+PiBzaW1pbGFy IGFwcHJvYWNoIGZvciBmYmRldiB1c2VyLXNwYWNlIGFjY2VzcywgYnV0IHRoYXQgaGFzIG5ldmVy IGJlZW4KPj4+PiBjb3NpZGVyZWQgcGVyZm9ybWFuY2UtY3JpdGljYWwuLi4KPj4+IFRoZXJlIGlz IG5vIG5lZWQgdG8gZmx1c2ggdGhlIFRMQiAhIEF0IGxlYXN0IG5vdCBmb3IgdGhlIHdyaXRlIGNh c2UuCj4+PiBDbGVhcmluZyB0aGUgZGlydHkgYml0IGlzIGNhY2hlIGNvaGVyZW50LiBUTEIgYXJl IGFib3V0IGNhY2hpbmcgcGFnZQo+Pj4gdGFibGUgZGlyZWN0b3J5IHRyZWUuIFRvIGNvbnZpbmNl IHlvdXJzZWxmIGxvb2sgYXQgcGFnZV9ta2NsZWFuX29uZSgpCj4+PiBpbiBtbS9ybWFwLmMgd2hp Y2gsIGJ5IHRoZSB3YXksIGlzIGFsbW9zdCB3aGF0IHdlIHdhbnQgKHJlbW92ZSB0aGUgbW11Cj4+ PiBub3RpZmllciBwYXJ0IGFuZCB0aGUgd3JpdGUgcHJvdGVjdGlvbiBwYXJ0IGFuZCBmb3JjZSBy ZWFsIENQVSBjYWNoZQo+Pj4gZmx1c2ggaWYgbmVlZGVkIGJhc2Ugb24gZGV2aWNlIGZsYWcpLgo+ PiBIbW0/IExhc3QgdGltZSBJIHZpc2l0ZWQgdGhpcyBjb2RlLCBwYWdlX21rY2xlYW5fb25lKCkg d2FzIGV2ZW50dWFsbHkKPj4gY2FsbGluZyBmbHVzaF90bGJfcGFnZSgpIHRocm91Z2ggcHRlcF9j bGVhcl9mbHVzaF9ub3RpZnkoKS4gSSB3YXMgdW5kZXIKPj4gdGhlIGltcHJlc3Npb24gdGhhdCB5 b3UgYWx3YXlzIGhhdmUgdG8gZmx1c2ggdGhlIFRMQiB3aGVuIHlvdSBjbGVhciBhCj4+IFBURSBz dGF0dXMgYml0LCBidXQgdHlwaWNhbGx5IG5vdCB3aGVuIHlvdSBzZXQgaXQuIEFyZSB5b3Ugc2F5 aW5nIHRoYXQKPj4gdGhhdCdzIG5vdCB0aGUgY2FzZT8KPiBXZWxsIHRoaXMgaXMgdmVyeSBkb3du IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIGh3LCBjb25zaWRlcmF0aW9uCj4gYW5k IG15IG1lbW9yeSBpcyB0aGF0IHRoZSBBTUQvSW50ZWwgZG9jIHNheXMgdGhhdCB3cml0ZSBpcyBh IGxvY2tlZCByZWFkCj4gbW9kaWZ5IHdyaXRlIG9wZXJhdGlvbiBpZSBpdCBpcyBhdG9taWMuIE5v dyB0aGVyZSBpcyBhIGJpdCBvZiB1bmtub3duIG9uCj4gaG93IGV4YWN0bHkgdGhpcyBoYXBwZW5z IChkb2VzIHRoZSBoYXJkd2FyZSByZXRyYXZlcnNlIHRoZSBmdWxsIGRpcmVjdG9yeQo+IGhpZXJh cmNoeSA/IGRvZXMgaXQga2VlcHMgYSBwb2ludGVyIHRvIHRoZSBwYWdlIHRhYmxlIGVudHJ5ID8g Li4uKS4KPgo+IFNvIGJhc2ljbHkgdGhpcyBtZWFucyB0aGF0IGF0IHRpbWUgb2YgdmFsaWRhdGlv biBpZiBhbnkgQ1BVIGRpZCB3cml0ZSB0bwo+IGFueSBwYWdlIGluc2lkZSB0aGUgcmFuZ2Ugd2Ug d291bGQgc2VlIHRoZSBkaXJ0eSBzZXQsIHdlIGRvIG5vdCBuZWVkIHRvCj4gZmx1c2ggYW55dGhp bmcgdG8gc2VlIHRoYXQgaGFwcGVuaW5nICh1bmxlc3MgdGhpbmdzIGFyZSBtYXBwZWQgd3JpdGUK PiBjb21iaW5lKS4KPgo+IFdlbGwgdGhlcmUgaXMgYSByYWNlIHdpbmRvdyBpZiBDUFUgaXMgd3Jp dGluZyB0byB0aGUgYnVmZmVyIHdoaWxlIHdlIGFyZQo+IGRvaW5nIHRoZSB2YWxpZGF0aW9uIG9u IGFub3RoZXIgQ1BVLiBCdXQgdGhlcmUgaXMgbm8gd2F5IGFyb3VuZCB0aGF0IHJhY2UKPiBleGNl cHQgdG8gdW5tYXAgYW5kIGZsdXNoIFRMQi4gV2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudC4KPgo+ IE5vdywgdGhlcmUgaXMgc29tZXRoaW5nIGkgYW0gbm90IHN1cmUsIGRvZXMgQ1BVIGtlZXAgVExC IGVudHJ5IGFyb3VuZAo+IHdpdGggZGlydHkgYml0IHNldCBhbmQgZG8gbm90IHJlZG8gdGhlIFJN VyBsb2NrZWQgc2VxdWVuY2UsIG9yIGRvZXMgaXQKPiBkbyB0aGUgUk1XIGxvY2tlZCBzZXF1ZW5j ZSBldmVyeXRpbWUgaXQgd3JpdGUgdG8gYSBjYWNoZWxpbmUuIEkgd291bGQKPiBndWVzcyB0aGUg Zm9ybWVyIGlmIG9ubHkgZm9yIHBlcmYgcmVhc29ucy4gSW4gdGhpcyBjYXNlIHdlIHdvdWxkIG5l ZWQKPiBUTEIgZmx1c2ggYnV0IGxpbnV4IGtlcm5lbCBhbHJlYWR5IG9mZmVyIGhlbHBlcnMgdG8g b3B0aW1pemUgdGhpcyBhd2F5Lgo+Cj4KPiBBbGwgdGhpcyBraW5kIG9mIG1ha2UgbWUgdGhpbmsg dGhhdCB0aGVyZSBpcyBubyBzYW5lIHdheSBhcm91bmQgdGhpcy4KPiBJIG1lYW4gd2UgYXJlIHRy eWluZyB0byB3b3JrIGFyb3VuZCBwb3RlbnRpYWx5IGJyb2tlbiB1c2Vyc3BhY2UgbW9zdGx5Cj4g YmVjYXVzZSBtb3N0IG9mIHRoZSBHUFUgZHJpdmVyIGlzIGluIHVzZXJzcGFjZSBhbmQgd2UgY2Fu J3QgdHJ1c3QgaXQuCj4gSSB0aGluayB0aGlzIGlzIGp1c3QgYSBsb3N0IGJhdHRsZSBhbmQgaXQg d291bGQgYmUgYmV0dGVyIHRvIGp1c3QKPiBwcm92aWRlIHRoZSBBUEkgYW5kIHNheXMgdGhhdCB5 b3UgbXVzdCBzeW5jIGFuZCB1c2Vyc3BhY2UgdGhhdCBkbyBub3QKPiB3aWxsIGdldCB0byBiZWFy IHRoZSBjb25zZXF1ZW5jZSBzb29uZXIgb3IgbGF0dGVyLgo+Cj4gQ2hlZXJzLAo+IErDqXLDtG1l CgpJdCB3b3VsZCBzdGlsbCBiZSBwb3NzaWJsZSB0byB0cmFjayBkb3duIHRob3NlIGNhc2VzIHdo ZXJlIFNZTkMgaXMKY29tcGxldGVseSBpZ25vcmVkLCBieSB0cmF2ZXJzaW5nIHRoZSBwYWdlIHRh YmxlcyBsb29raW5nIGZvcgpQQUdFX0FDQ0VTU0VEIHdpdGhvdXQgYW55IFNZTkMgd2hhdHNvZXZl ci4gU3VyZSwgdXNlcnNwYWNlIGNvdWxkIGZpbmQKd2F5cyBhcm91bmQgdGhhdCBidXQgaXQgd291 bGQgc3RpbGwgZm9yY2UgcGVvcGxlIHRvIHJlYWQgdXAgb24gdGhlIFNZTkMKZnVuY3Rpb25hbGl0 eS4KCi9UaG9tYXMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=