From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [RfC PATCH] Add udmabuf misc device Date: Wed, 11 Apr 2018 08:59:32 +0300 Message-ID: References: <20180314080301.366zycak3whqvvqx@sirius.home.kraxel.org> <20180406001117.GD31612@mdroper-desk.amr.corp.intel.com> <2411d2c1-33c0-2ba5-67ea-3bb9af5d5ec9@epam.com> <20180406090747.gwiegu22z4noj23i@sirius.home.kraxel.org> <9a085854-3758-1500-9971-806c611cb54f@gmail.com> <20180406115730.jtwcbz5okrphlxli@sirius.home.kraxel.org> <7ef89a29-6584-d23c-efd1-f30d9b767a24@gmail.com> <20180406185746.GA4983@downor-Z87X-UD5H> <20180410172605.GA26472@downor-Z87X-UD5H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 05B1B6E05D for ; Wed, 11 Apr 2018 05:59:36 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id x125-v6so881798lff.1 for ; Tue, 10 Apr 2018 22:59:36 -0700 (PDT) In-Reply-To: <20180410172605.GA26472@downor-Z87X-UD5H> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dongwon Kim Cc: Tomeu Vizoso , Oleksandr Andrushchenko , David Airlie , open list , dri-devel , qemu-devel@nongnu.org, "moderated list:DMA BUFFER SHARING FRAMEWORK" , Gerd Hoffmann , "open list:DMA BUFFER SHARING FRAMEWORK" List-Id: dri-devel@lists.freedesktop.org T24gMDQvMTAvMjAxOCAwODoyNiBQTSwgRG9uZ3dvbiBLaW0gd3JvdGU6Cj4gT24gVHVlLCBBcHIg MTAsIDIwMTggYXQgMDk6Mzc6NTNBTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3Jv dGU6Cj4+IE9uIDA0LzA2LzIwMTggMDk6NTcgUE0sIERvbmd3b24gS2ltIHdyb3RlOgo+Pj4gT24g RnJpLCBBcHIgMDYsIDIwMTggYXQgMDM6MzY6MDNQTSArMDMwMCwgT2xla3NhbmRyIEFuZHJ1c2hj aGVua28gd3JvdGU6Cj4+Pj4gT24gMDQvMDYvMjAxOCAwMjo1NyBQTSwgR2VyZCBIb2ZmbWFubiB3 cm90ZToKPj4+Pj4gICAgSGksCj4+Pj4+Cj4+Pj4+Pj4gSSBmYWlsIHRvIHNlZSBhbnkgY29tbW9u IGdyb3VuZCBmb3IgeGVuLXpjb3B5IGFuZCB1ZG1hYnVmIC4uLgo+Pj4+Pj4gRG9lcyB0aGUgYWJv dmUgbWVhbiB5b3UgY2FuIGFzc3VtZSB0aGF0IHhlbi16Y29weSBhbmQgdWRtYWJ1Zgo+Pj4+Pj4g Y2FuIGNvLWV4aXN0IGFzIHR3byBkaWZmZXJlbnQgc29sdXRpb25zPwo+Pj4+PiBXZWxsLCB1ZG1h YnVmIHJvdXRlIGlzbid0IGZ1bGx5IGNsZWFyIHlldCwgYnV0IHllcy4KPj4+Pj4KPj4+Pj4gU2Vl IGFsc28gZ3Z0IChpbnRlbCB2Z3B1KSwgd2hlcmUgdGhlIGh5cGVydmlzb3IgaW50ZXJmYWNlIGlz IGFic3RyYWN0ZWQKPj4+Pj4gYXdheSBpbnRvIGEgc2VwYXJhdGUga2VybmVsIG1vZHVsZXMgZXZl biB0aG91Z2ggbW9zdCBvZiB0aGUgYWN0dWFsIHZncHUKPj4+Pj4gZW11bGF0aW9uIGNvZGUgaXMg Y29tbW9uLgo+Pj4+IFRoYW5rIHlvdSBmb3IgeW91ciBpbnB1dCwgSSdtIGp1c3QgdHJ5aW5nIHRv IGZpZ3VyZSBvdXQKPj4+PiB3aGljaCBvZiB0aGUgdGhyZWUgei1jb3B5IHNvbHV0aW9ucyBpbnRl cnNlY3QgYW5kIGhvdyBtdWNoCj4+Pj4+PiBBbmQgd2hhdCBhYm91dCBoeXBlci1kbWFidWY/Cj4+ PiB4ZW4gei1jb3B5IHNvbHV0aW9uIGlzIHByZXR0eSBzaW1pbGFyIGZ1bmRhbWVudGFsbHkgdG8g aHlwZXJfZG1hYnVmCj4+PiBpbiB0ZXJtcyBvZiB0aGVzZSBjb3JlIHNoYXJpbmcgZmVhdHVyZToK Pj4+Cj4+PiAxLiB0aGUgc2hhcmluZyBwcm9jZXNzIC0gaW1wb3J0IHByaW1lL2RtYWJ1ZiBmcm9t IHRoZSBwcm9kdWNlciAtPiBleHRyYWN0Cj4+PiB1bmRlcmx5aW5nIHBhZ2VzIGFuZCBnZXQgdGhv c2Ugc2hhcmVkIC0+IHJldHVybiByZWZlcmVuY2VzIGZvciBzaGFyZWQgcGFnZXMKPiBBbm90aGVy IHRoaW5nIGlzIGRhbnZldCB3YXMga2luZCBvZiBhZ2FpbnN0IHRvIHRoZSBpZGVhIG9mIGltcG9y dGluZyBleGlzdGluZwo+IGRtYWJ1Zi9wcmltZSBidWZmZXIgYW5kIGZvcndhcmQgaXQgdG8gdGhl IG90aGVyIGRvbWFpbiBkdWUgdG8gc3luY2hyb25pemF0aW9uCj4gaXNzdWVzLiBIZSBwcm9wb3Nl ZCB0byBtYWtlIGh5cGVyX2RtYWJ1ZiBvbmx5IHdvcmsgYXMgYW4gZXhwb3J0ZXIgc28gdGhhdCBp dAo+IGNhbiBoYXZlIGEgZnVsbCBjb250cm9sIG92ZXIgdGhlIGJ1ZmZlci4gSSB0aGluayB3ZSBu ZWVkIHRvIHRhbGsgYWJvdXQgdGhpcwo+IGZ1cnRoZXIgYXMgd2VsbC4KWWVzLCBJIHNhdyB0aGlz LiBCdXQgdGhpcyBsaW1pdHMgdGhlIHVzZS1jYXNlcyBzbyBtdWNoLgpGb3IgaW5zdGFuY2UsIHJ1 bm5pbmcgQW5kcm9pZCBhcyBhIEd1ZXN0ICh3aGljaCB1c2VzIElPTiB0byBhbGxvY2F0ZQpidWZm ZXJzKSBtZWFucyB0aGF0IGZpbmFsbHkgSFcgY29tcG9zZXIgd2lsbCBpbXBvcnQgZG1hLWJ1ZiBp bnRvCnRoZSBEUk0gZHJpdmVyLiBUaGVuLCBpbiBjYXNlIG9mIHhlbi1mcm9udCBmb3IgZXhhbXBs ZSwgaXQgbmVlZHMgdG8gYmUKc2hhcmVkIHdpdGggdGhlIGJhY2tlbmQgKEhvc3Qgc2lkZSkuIE9m IGNvdXJzZSwgd2UgY2FuIGNoYW5nZSB1c2VyLXNwYWNlCnRvIG1ha2UgeGVuLWZyb250IGFsbG9j YXRlIHRoZSBidWZmZXJzIChtYWtlIGl0IGV4cG9ydGVyKSwgYnV0IHdoYXQgd2UgdHJ5CnRvIGF2 b2lkIGlzIHRvIGNoYW5nZSB1c2VyLXNwYWNlIHdoaWNoIGluIG5vcm1hbCB3b3JsZCB3b3VsZCBo YXZlIHJlbWFpbgp1bmNoYW5nZWQgb3RoZXJ3aXNlLgpTbywgSSBkbyB0aGluayB3ZSBoYXZlIHRv IHN1cHBvcnQgdGhpcyB1c2UtY2FzZSBhbmQganVzdCBoYXZlIHRvIHVuZGVyc3RhbmQKdGhlIGNv bXBsZXhpdHkuCgo+Cj4gZGFudmV0LCBjYW4geW91IGNvbW1lbnQgb24gdGhpcyB0b3BpYz8KPgo+ Pj4gMi4gdGhlIHBhZ2Ugc2hhcmluZyBtZWNoYW5pc20gLSBpdCB1c2VzIFhlbi1ncmFudC10YWJs ZS4KPj4+Cj4+PiBBbmQgdG8gZ2l2ZSB5b3UgYSBxdWljayBzdW1tYXJ5IG9mIGRpZmZlcmVuY2Vz IGFzIGZhciBhcyBJIHVuZGVyc3RhbmQKPj4+IGJldHdlZW4gdHdvIGltcGxlbWVudGF0aW9ucyAo cGxlYXNlIGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZywgT2xla3NhbmRyLikKPj4+Cj4+PiAxLiB4 ZW4temNvcHkgaXMgRFJNIHNwZWNpZmljIC0gY2FuIGltcG9ydCBvbmx5IERSTSBwcmltZSBidWZm ZXIKPj4+IHdoaWxlIGh5cGVyX2RtYWJ1ZiBjYW4gZXhwb3J0IGFueSBkbWFidWYgcmVnYXJkbGVz cyBvZiBvcmlnaW5hdG9yCj4+IFdlbGwsIHRoaXMgaXMgdHJ1ZS4gQW5kIGF0IHRoZSBzYW1lIHRp bWUgdGhpcyBpcyBqdXN0IGEgbWF0dGVyCj4+IG9mIGV4dGVuZGluZyB0aGUgQVBJOiB4ZW4temNv cHkgaXMgYSBoZWxwZXIgZHJpdmVyIGRlc2lnbmVkIGZvcgo+PiB4ZW4tZnJvbnQvYmFjayB1c2Ut Y2FzZSwgc28gdGhpcyBpcyB3aHkgaXQgb25seSBoYXMgRFJNIFBSSU1FIEFQSQo+Pj4gMi4geGVu LXpjb3B5IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGRtYS1idWYgc3luY2hyb25pemF0aW9uIGJldHdl ZW4gdHdvIFZNcwo+Pj4gd2hpbGUgKGFzIGRhbnZldCBjYWxsZWQgaXQgYXMgcmVtb3RlIGRtYWJ1 ZiBhcGkgc2hhcmluZykgaHlwZXJfZG1hYnVmIHNlbmRzCj4+PiBvdXQgc3luY2hyb25pemF0aW9u IG1lc3NhZ2UgdG8gdGhlIGV4cG9ydGluZyBWTSBmb3Igc3luY2hyb25pemF0aW9uLgo+PiBUaGlz IGlzIHRydWUuIEFnYWluLCB0aGlzIGlzIGJlY2F1c2Ugb2YgdGhlIHVzZS1jYXNlcyBpdCBjb3Zl cnMuCj4+IEJ1dCBoYXZpbmcgc3luY2hyb25pemF0aW9uIGZvciBhIGdlbmVyaWMgc29sdXRpb24g c2VlbXMgdG8gYmUgYSBnb29kIGlkZWEuCj4gWWVhaCwgdW5kZXJzdG9vZCB4ZW4temNvcHkgd29y a3Mgb2sgd2l0aCB5b3VyIHVzZSBjYXNlLiBCdXQgSSBhbSBqdXN0IGN1cmlvdXMKPiBpZiBpdCBp cyBvayBub3QgdG8gaGF2ZSBhbnkgaW50ZXItZG9tYWluIHN5bmNocm9uaXphdGlvbiBpbiB0aGlz IHNoYXJpbmcgbW9kZWwuClRoZSBzeW5jaHJvbml6YXRpb24gaXMgZG9uZSB3aXRoIGRpc3BsaWYg cHJvdG9jb2wgWzFdCj4gVGhlIGJ1ZmZlciBiZWluZyBzaGFyZWQgaXMgdGVjaG5pY2FsbHkgZG1h LWJ1ZiBhbmQgb3JpZ2luYXRvciBuZWVkcyB0byBiZSBhYmxlCj4gdG8ga2VlcCB0cmFjayBvZiBp dC4KQXMgSSBhbSB3b3JraW5nIGluIERSTSB0ZXJtcyB0aGUgdHJhY2tpbmcgaXMgZG9uZSBieSB0 aGUgRFJNIGNvcmUKZm9yIG1lIGZvciBmcmVlLiAoVGhpcyBtaWdodCBiZSBvbmUgb2YgdGhlIHJl YXNvbnMgRGFuaWVsIHNlZXMgRFJNCmJhc2VkIGltcGxlbWVudGF0aW9uIGZpdCB2ZXJ5IGdvb2Qg ZnJvbSBjb2RlLXJldXNlIFBPVikuCj4KPj4+IDMuIDEtbGV2ZWwgcmVmZXJlbmNlcyAtIHdoZW4g dXNpbmcgZ3JhbnQtdGFibGUgZm9yIHNoYXJpbmcgcGFnZXMsIHRoZXJlIHdpbGwKPj4+IGJlIHNh bWUgIyBvZiByZWZzIChlYWNoIDggYnl0ZSkKPj4gVG8gYmUgcHJlY2lzZSwgZ3JhbnQgcmVmIGlz IDQgYnl0ZXMKPiBZb3UgYXJlIHJpZ2h0LiBUaGFua3MgZm9yIGNvcnJlY3Rpb24uOykKPgo+Pj4g YXMgIyBvZiBzaGFyZWQgcGFnZXMsIHdoaWNoIGlzIHBhc3NlZCB0bwo+Pj4gdGhlIHVzZXJzcGFj ZSB0byBiZSBzaGFyZWQgd2l0aCBpbXBvcnRpbmcgVk0gaW4gY2FzZSBvZiB4ZW4temNvcHkuCj4+ IFRoZSByZWFzb24gZm9yIHRoYXQgaXMgdGhhdCB4ZW4temNvcHkgaXMgYSBoZWxwZXIgZHJpdmVy LCBlLmcuCj4+IHRoZSBncmFudCByZWZlcmVuY2VzIGNvbWUgZnJvbSB0aGUgZGlzcGxheSBiYWNr ZW5kIFsxXSwgd2hpY2ggaW1wbGVtZW50cwo+PiBYZW4gZGlzcGxheSBwcm90b2NvbCBbMl0uIFNv LCBlZmZlY3RpdmVseSB0aGUgYmFja2VuZCBleHRyYWN0cyByZWZlcmVuY2VzCj4+IGZyb20gZnJv bnRlbmQncyByZXF1ZXN0cyBhbmQgcGFzc2VzIHRob3NlIHRvIHhlbi16Y29weSBhcyBhbiBhcnJh eQo+PiBvZiByZWZzLgo+Pj4gICBDb21wYXJlZAo+Pj4gdG8gdGhpcywgaHlwZXJfZG1hYnVmIGRv ZXMgbXVsdGlwbGUgbGV2ZWwgYWRkcmVzc2luZyB0byBnZW5lcmF0ZSBvbmx5IG9uZQo+Pj4gcmVm ZXJlbmNlIGlkIHRoYXQgcmVwcmVzZW50cyBhbGwgc2hhcmVkIHBhZ2VzLgo+PiBJbiB0aGUgcHJv dG9jb2wgWzJdIG9ubHkgb25lIHJlZmVyZW5jZSB0byB0aGUgZ3JlZiBkaXJlY3RvcnkgaXMgcGFz c2VkCj4+IGJldHdlZW4gVk1zCj4+IChhbmQgdGhlIGdyZWYgZGlyZWN0b3J5IGlzIGEgc2luZ2xl LWxpbmtlZCBsaXN0IG9mIHNoYXJlZCBwYWdlcyBjb250YWluaW5nCj4+IGFsbAo+PiBvZiB0aGUg Z3JlZnMgb2YgdGhlIGJ1ZmZlcikuCj4gb2ssIGdvb2QgdG8ga25vdy4gSSB3aWxsIGxvb2sgaW50 byBpdHMgaW1wbGVtZW50YXRpb24gaW4gbW9yZSBkZXRhaWxzIGJ1dCBpcwo+IHRoaXMgZ3JlZiBk aXJlY3RvcnkgKGNoYWluZWQgZ3JlZnMpIHNvbWV0aGluZyB0aGF0IGNhbiBiZSB1c2VkIGZvciBh bnkgZ2VuZXJhbAo+IG1lbW9yeSBzaGFyaW5nIHVzZSBjYXNlIG9yIGlzIGl0IGpzdXQgZm9yIHhl bi1kaXNwbGF5IChpbiBjdXJyZW50IGNvZGUgYmFzZSk/Ck5vdCB0byBtaXNsZWFkIHlvdTogb25l IGdyYW50IHJlZiBpcyBwYXNzZWQgdmlhIGRpc3BsaWYgcHJvdG9jb2wsCmJ1dCB0aGUgcGFnZSBp dCdzIHJlZmVyZW5jaW5nIGNvbnRhaW5zIHRoZSByZXN0IG9mIHRoZSBncmFudCByZWZzLgoKQXMg dG8gaWYgdGhpcyBjYW4gYmUgdXNlZCBmb3IgYW55IG1lbW9yeTogeWVzLiBJdCBpcyB0aGUgc2Ft ZSBmb3IKc25kaWYgYW5kIGRpc3BsaWYgWGVuIHByb3RvY29scywgYnV0IGRlZmluZWQgdHdpY2Ug YXMgc3RyaWN0bHkgc3BlYWtpbmcKc25kaWYgYW5kIGRpc3BsaWYgYXJlIHR3byBzZXBhcmF0ZSBw cm90b2NvbHMuCgpXaGlsZSByZXZpZXdpbmcgeW91ciBSRkMgdjIgb25lIG9mIHRoZSBjb21tZW50 cyBJIGhhZCBbMl0gd2FzIHRoYXQgaWYgd2UKY2FuIHN0YXJ0IGZyb20gZGVmaW5pbmcgc3VjaCBh IGdlbmVyaWMgcHJvdG9jb2wgZm9yIGh5cGVyLWRtYWJ1Zi4KSXQgY2FuIGJlIGEgaGVhZGVyIGZp bGUsIHdoaWNoIG5vdCBvbmx5IGhhcyB0aGUgZGVzY3JpcHRpb24gcGFydAood2hpY2ggdGhlbiBi ZWNvbWUgYSBwYXJ0IG9mIERvY3VtZW50YXRpb24vLi4ucnN0IGZpbGUpLCBidXQgYWxzbyBkZWZp bmVzCmFsbCB0aGUgcmVxdWlyZWQgY29uc3RhbnRzIGZvciByZXF1ZXN0cywgcmVzcG9uc2VzLCBk ZWZpbmVzIG1lc3NhZ2UgZm9ybWF0cywKc3RhdGUgZGlhZ3JhbXMgZXRjLiBhbGwgYXQgb25lIHBs YWNlLiBPZiBjb3Vyc2UgdGhpcyBwcm90b2NvbCBtdXN0IG5vdCBiZQpYZW4gc3BlY2lmaWMsIGJ1 dCBiZSBPUy9oeXBlcnZpc29yIGFnbm9zdGljLgpIYXZpbmcgdGhhdCB3aWxsIHRyaWdnZXIgYSBu ZXcgcm91bmQgb2YgZGlzY3Vzc2lvbiwgc28gd2UgaGF2ZSBpdCBhbGwgCmRlc2lnbmVkCmFuZCBk aXNjdXNzZWQgYmVmb3JlIHdlIHN0YXJ0IGltcGxlbWVudGluZy4KCkJlc2lkZXMgdGhlIHByb3Rv Y29sIHdlIGhhdmUgdG8gZGVzaWduIFVBUEkgcGFydCBhcyB3ZWxsIGFuZCBtYWtlIHN1cmUKdGhl IGh5cGVyLWRtYWJ1ZiBpcyBub3Qgb25seSBhY2Nlc3NpYmxlIGZyb20gdXNlci1zcGFjZSwgYnV0 IHRoZXJlIHdpbGwgCmJlIG51bWJlcgpvZiBrZXJuZWwtc3BhY2UgdXNlcnMgYXMgd2VsbC4KPgo+ Pj4gNC4gaW50ZXIgVk0gbWVzc2FnaW5nIChoeXBlX2RtYWJ1ZiBvbmx5KSAtIGh5cGVyX2RtYWJ1 ZiBoYXMgaW50ZXItdm0gbXNnCj4+PiBjb21tdW5pY2F0aW9uIGRlZmluZWQgZm9yIGRtYWJ1ZiBz eW5jaHJvbml6YXRpb24gYW5kIHByaXZhdGUgZGF0YSAobWV0YQo+Pj4gaW5mbyB0aGF0IE1hdHQg Um9wZXIgbWVudGlvbmVkKSBleGNoYW5nZS4KPj4gVGhpcyBpcyB0cnVlLCB4ZW4temNvcHkgaGFz IG5vIG1lYW5zIGZvciBpbnRlciBWTSBzeW5jIGFuZCBtZXRhLWRhdGEsCj4+IHNpbXBseSBiZWNh dXNlIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgY29kZSBmb3IgaW50ZXIgVk0gZXhjaGFuZ2UgaW4gaXQs Cj4+IGUuZy4gdGhlIGludGVyIFZNIHByb3RvY29sIGlzIGhhbmRsZWQgYnkgdGhlIGJhY2tlbmQg WzFdLgo+Pj4gNS4gZHJpdmVyLXRvLWRyaXZlciBub3RpZmljYXRpb24gKGh5cGVyX2RtYWJ1ZiBv bmx5KSAtIGltcG9ydGluZyBWTSBnZXRzCj4+PiBub3RpZmllZCB3aGVuIG5ld2RtYWJ1ZiBpcyBl eHBvcnRlZCBmcm9tIG90aGVyIFZNIC0gdWV2ZW50IGNhbiBiZSBvcHRpb25hbGx5Cj4+PiBnZW5l cmF0ZWQgd2hlbiB0aGlzIGhhcHBlbnMuCj4+Pgo+Pj4gNi4gc3RydWN0dXJlIC0gaHlwZXJfZG1h YnVmIGlzIHRhcmdldHRpbmcgdG8gcHJvdmlkZSBhIGdlbmVyaWMgc29sdXRpb24gZm9yCj4+PiBp bnRlci1kb21haW4gZG1hYnVmIHNoYXJpbmcgZm9yIG1vc3QgaHlwZXJ2aXNvcnMsIHdoaWNoIGlz IHdoeSBpdCBoYXMgdHdvCj4+PiBsYXllcnMgYXMgbWF0dHJvcGUgbWVudGlvbmVkLCBmcm9udC1l bmQgdGhhdCBjb250YWlucyBzdGFuZGFyZCBBUEkgYW5kIGJhY2tlbmQKPj4+IHRoYXQgaXMgc3Bl Y2lmaWMgdG8gaHlwZXJ2aXNvci4KPj4gQWdhaW4sIHhlbi16Y29weSBpcyBkZWNvdXBsZWQgZnJv bSBpbnRlciBWTSBjb21tdW5pY2F0aW9uCj4+Pj4+IE5vIGlkZWEsIGRpZG4ndCBsb29rIGF0IGl0 IGluIGRldGFpbC4KPj4+Pj4KPj4+Pj4gTG9va3MgcHJldHR5IGNvbXBsZXggZnJvbSBhIGRpc3Rh bnQgdmlldy4gIE1heWJlIGJlY2F1c2UgaXQgdHJpZXMgdG8KPj4+Pj4gYnVpbGQgYSBjb21tdW5p Y2F0aW9uIGZyYW1ld29yayB1c2luZyBkbWEtYnVmcyBpbnN0ZWFkIG9mIGEgc2ltcGxlCj4+Pj4+ IGRtYS1idWYgcGFzc2luZyBtZWNoYW5pc20uCj4+PiB3ZSBzdGFydGVkIHdpdGggc2ltcGxlIGRt YS1idWYgc2hhcmluZyBidXQgcmVhbGl6ZWQgdGhlcmUgYXJlIG1hbnkKPj4+IHRoaW5ncyB3ZSBu ZWVkIHRvIGNvbnNpZGVyIGluIHJlYWwgdXNlLWNhc2UsIHNvIHdlIGFkZGVkIGNvbW11bmljYXRp b24KPj4+ICwgbm90aWZpY2F0aW9uIGFuZCBkbWEtYnVmIHN5bmNocm9uaXphdGlvbiB0aGVuIHJl LXN0cnVjdHVyZWQgaXQgdG8KPj4+IGZyb250LWVuZCBhbmQgYmFjay1lbmQgKHRoaXMgbWFkZSB0 aGluZ3MgbW9yZSBjb21waWNhdGVkLi4pIHNpbmNlIFhlbgo+Pj4gd2FzIG5vdCBvdXIgb25seSB0 YXJnZXQuIEFsc28sIHdlIHRob3VnaHQgcGFzc2luZyB0aGUgcmVmZXJlbmNlIGZvciB0aGUKPj4+ IGJ1ZmZlciAoaHlwZXJfZG1hYnVmX2lkKSBpcyBub3Qgc2VjdXJlIHNvIGFkZGVkIHV2ZW50IG1l Y2hhbmlzbSBsYXRlci4KPj4+Cj4+Pj4gWWVzLCBJIGFtIGxvb2tpbmcgYXQgaXQgbm93LCB0cnlp bmcgdG8gZmlndXJlIG91dCB0aGUgZnVsbCBzdG9yeQo+Pj4+IGFuZCBpdHMgaW1wbGVtZW50YXRp b24uIEJUVywgSW50ZWwgZ3V5cyB3ZXJlIGFib3V0IHRvIHNoYXJlIHNvbWUKPj4+PiB0ZXN0IGFw cGxpY2F0aW9uIGZvciBoeXBlci1kbWFidWYsIG1heWJlIEkgaGF2ZSBtaXNzZWQgb25lLgo+Pj4+ IEl0IGNvdWxkIHByb2JhYmx5IGJldHRlciBleHBsYWluIHRoZSB1c2UtY2FzZXMgYW5kIHRoZSBj b21wbGV4aXR5Cj4+Pj4gdGhleSBoYXZlIGluIGh5cGVyLWRtYWJ1Zi4KPj4+IE9uZSBleGFtcGxl IGlzIGFjdHVhbGx5IGluIGdpdGh1Yi4gSWYgeW91IHdhbnQgdGFrZSBhIGxvb2sgYXQgaXQsIHBs ZWFzZQo+Pj4gdmlzaXQ6Cj4+Pgo+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2Rvd25vci9saW51eF9o eXBlcl9kbWFidWZfdGVzdC90cmVlL3hlbi9zaW1wbGVfZXhwb3J0Cj4+IFRoYW5rIHlvdSwgSSds bCBoYXZlIGEgbG9vawo+Pj4+PiBMaWtlIHhlbi16Y29weSBpdCBzZWVtcyB0byBkZXBlbmQgb24g dGhlIGlkZWEgdGhhdCB0aGUgaHlwZXJ2aXNvcgo+Pj4+PiBtYW5hZ2VzIGFsbCBtZW1vcnkgaXQg aXMgZWFzeSBmb3IgZ3Vlc3RzIHRvIHNoYXJlIHBhZ2VzIHdpdGggdGhlIGhlbHAgb2YKPj4+Pj4g dGhlIGh5cGVydmlzb3IuCj4+Pj4gU28sIGZvciB4ZW4temNvcHkgd2Ugd2VyZSBub3QgdHJ5aW5n IHRvIG1ha2UgaXQgZ2VuZXJpYywKPj4+PiBpdCBqdXN0IHNvbHZlcyBkaXNwbGF5IChkdW1iKSB6 ZXJvLWNvcHlpbmcgdXNlLWNhc2VzIGZvciBYZW4uCj4+Pj4gV2UgaW1wbGVtZW50ZWQgaXQgYXMg YSBEUk0gaGVscGVyIGRyaXZlciBiZWNhdXNlIHdlIGNhbid0IHNlZSBhbnkKPj4+PiBvdGhlciB1 c2UtY2FzZXMgYXMgb2Ygbm93Lgo+Pj4+IEZvciBleGFtcGxlLCB3ZSBhbHNvIGhhdmUgWGVuIHBh cmEtdmlydHVhbGl6ZWQgc291bmQgZHJpdmVyLCBidXQKPj4+PiBpdHMgYnVmZmVyIG1lbW9yeSB1 c2FnZSBpcyBub3QgY29tcGFyYWJsZSB0byB3aGF0IGRpc3BsYXkgd2FudHMKPj4+PiBhbmQgaXQg d29ya3Mgc29tZXdoYXQgZGlmZmVyZW50bHkgKGUuZy4gdGhlcmUgaXMgbm8gImZyYW1lIGRvbmUi Cj4+Pj4gZXZlbnQsIHNvIG9uZSBjYW4ndCB0ZWxsIHdoZW4gdGhlIHNvdW5kIGJ1ZmZlciBjYW4g YmUgImZsaXBwZWQiKS4KPj4+PiBBdCB0aGUgc2FtZSB0aW1lLCB3ZSBkbyBub3QgdXNlIHZpcnRp by1ncHUsIHNvIHRoaXMgY291bGQgcHJvYmFibHkKPj4+PiBiZSBvbmUgbW9yZSBjYW5kaWRhdGUg Zm9yIHNoYXJlZCBkbWEtYnVmcyBzb21lIGRheS4KPj4+Pj4gICAgV2hpY2ggc2ltcGx5IGlzbid0 IHRoZSBjYXNlIG9uIGt2bS4KPj4+Pj4KPj4+Pj4gaHlwZXItZG1hYnVmIGFuZCB4ZW4temNvcHkg Y291bGQgbWF5YmUgc2hhcmUgY29kZSwgb3IgaHlwZXItZG1hYnVmIGJ1aWxkCj4+Pj4+IG9uIHRv cCBvZiB4ZW4temNvcHkuCj4+Pj4gSG0sIEkgY2FuIGltYWdpbmUgdGhhdDogeGVuLXpjb3B5IGNv dWxkIGJlIGEgbGlicmFyeSBjb2RlIGZvciBoeXBlci1kbWFidWYKPj4+PiBpbiB0ZXJtcyBvZiBp bXBsZW1lbnRpbmcgYWxsIHRoYXQgcGFnZSBzaGFyaW5nIGZ1biBpbiBtdWx0aXBsZSBkaXJlY3Rp b25zLAo+Pj4+IGUuZy4gSG9zdC0+R3Vlc3QsIEd1ZXN0LT5Ib3N0LCBHdWVzdDwtPkd1ZXN0Lgo+ Pj4+IEJ1dCBJJ2xsIGxldCBNYXR0IGFuZCBEb25nd29uIHRvIGNvbW1lbnQgb24gdGhhdC4KPj4+ IEkgdGhpbmsgd2UgY2FuIGRlZmluaXRlbHkgY29sbGFib3JhdGUuIEVzcGVjaWFsbHksIG1heWJl IHdlIGFyZSB1c2luZyBzb21lCj4+PiBvdXRkYXRlZCBzaGFyaW5nIG1lY2hhbmlzbS9ncmFudC10 YWJsZSBtZWNoYW5pc20gaW4gb3VyIFhlbiBiYWNrZW5kICh0aGFua3MKPj4+IGZvciBicmluZ2lu ZyB0aGF0IHVwIE9sZWtzYW5kcikuIEhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcyBvbmNlIHdlIGNv bGxhYm9yYXRlCj4+PiBzb21laG93LCBjYW4geGVuLXpjb3B5J3MgdXNlY2FzZSB1c2UgdGhlIHN0 YW5kYXJkIEFQSSB0aGF0IGh5cGVyX2RtYWJ1Zgo+Pj4gcHJvdmlkZXM/IEkgZG9uJ3QgdGhpbmsg d2UgbmVlZCBkaWZmZXJlbnQgSU9DVExzIHRoYXQgZG8gdGhlIHNhbWUgaW4gdGhlIGZpbmFsCj4+ PiBzb2x1dGlvbi4KPj4+Cj4+IElmIHlvdSB0aGluayBvZiB4ZW4temNvcHkgYXMgYSBsaWJyYXJ5 ICh3aGljaCBpbXBsZW1lbnRzIFhlbgo+PiBncmFudCByZWZlcmVuY2VzIG1hbmdsaW5nKSBhbmQg RFJNIFBSSU1FIHdyYXBwZXIgb24gdG9wIG9mIHRoYXQKPj4gbGlicmFyeSwgd2UgY2FuIHByb2Jh Ymx5IGRlZmluZSBwcm9wZXIgQVBJIGZvciB0aGF0IGxpYnJhcnksCj4+IHNvIGJvdGggeGVuLXpj b3B5IGFuZCBoeXBlci1kbWFidWYgY2FuIHVzZSBpdC4gV2hhdCBpcyBtb3JlLCBJIGFtCj4+IGFi b3V0IHRvIHN0YXJ0IHVwc3RyZWFtaW5nIFhlbiBwYXJhLXZpcnR1YWxpemVkIHNvdW5kIGRldmlj ZSBkcml2ZXIgc29vbiwKPj4gd2hpY2ggYWxzbyB1c2VzIHNpbWlsYXIgY29kZSBhbmQgZ3JlZiBw YXNzaW5nIG1lY2hhbmlzbSBbM10uCj4+IChBY3R1YWxseSwgSSB3YXMgYWJvdXQgdG8gdXBzdHJl YW0gZHJtL3hlbi1mcm9udCwgZHJtL3hlbi16Y29weSBhbmQKPj4gc25kL3hlbi1mcm9udCBhbmQg dGhlbiBwcm9wb3NlIGEgWGVuIGhlbHBlciBsaWJyYXJ5IGZvciBzaGFyaW5nIGJpZyBidWZmZXJz LAo+PiBzbyBjb21tb24gY29kZSBvZiB0aGUgYWJvdmUgZHJpdmVycyBjYW4gdXNlIHRoZSBzYW1l IGNvZGUgdy9vIGNvZGUKPj4gZHVwbGljYXRpb24pCj4gSSB0aGluayBpdCBpcyBwb3NzaWJsZSB0 byB1c2UgeW91ciBmdW5jdGlvbnMgZm9yIG1lbW9yeSBzaGFyaW5nIHBhcnQgaW4KPiBoeXBlcl9k bWFidWYncyBiYWNrZW5kICh0aGlzICdiYWNrZW5kJyBtZWFucyB0aGUgbGF5ZXIgdGhhdCBkb2Vz IHBhZ2Ugc2hhcmluZwo+IGFuZCBpbnRlci12bSBjb21tdW5pY2F0aW9uIHdpdGggeGVuLXNwZWNp ZmljIHdheS4pLCBzbyB3aHkgZG9uJ3Qgd2Ugd29yayBvbgo+ICJYZW4gaGVscGVyIGxpYnJhcnkg Zm9yIHNoYXJpbmcgYmlnIGJ1ZmZlcnMiIGZpcnN0IHdoaWxlIHdlIGNvbnRpbnVlIG91cgo+IGRp c2N1c3Npb24gb24gdGhlIGNvbW1vbiBBUEkgbGF5ZXIgdGhhdCBjYW4gY292ZXIgYW55IGRtYWJ1 ZiBzaGFyaW5nIGNhc2VzLgo+CldlbGwsIEkgd291bGQgbG92ZSB3ZSByZXVzZSB0aGUgY29kZSB0 aGF0IEkgaGF2ZSwgYnV0IEkgYWxzbwp1bmRlcnN0YW5kIHRoYXQgaXQgd2FzIGxpbWl0ZWQgYnkg bXkgdXNlLWNhc2VzLiBTbywgSSBkbyBub3QKaW5zaXN0IHdlIGhhdmUgdG8gOykKSWYgd2Ugc3Rh cnQgZGVzaWduaW5nIGFuZCBkaXNjdXNzaW5nIGh5cGVyLWRtYWJ1ZiBwcm90b2NvbCB3ZSBvZiBj b3Vyc2UKY2FuIHdvcmsgb24gdGhpcyBoZWxwZXIgbGlicmFyeSBpbiBwYXJhbGxlbC4KPj4gVGhh bmsgeW91LAo+PiBPbGVrc2FuZHIKPj4KPj4gUC5TLiBBbGwsIGlzIGl0IGEgZ29vZCBpZGVhIHRv IG1vdmUgdGhpcyBvdXQgb2YgdWRtYWJ1ZiB0aHJlYWQgaW50byBhCj4+IGRlZGljYXRlZCBvbmU/ Cj4gRWl0aGVyIHdheSBpcyBmaW5lIHdpdGggbWUuClNvLCBpZiB5b3UgY2FuIHN0YXJ0IGRlc2ln bmluZyB0aGUgcHJvdG9jb2wgd2UgbWF5IGhhdmUgYSBkZWRpY2F0ZWQgbWFpbAp0aHJlYWQgZm9y IHRoYXQuIEkgd2lsbCB0cnkgdG8gaGVscCB3aXRoIHRoZSBwcm90b2NvbCBhcyBtdWNoIGFzIEkg Y2FuCgo+Pj4+PiBjaGVlcnMsCj4+Pj4+ICAgIEdlcmQKPj4+Pj4KPj4+PiBUaGFuayB5b3UsCj4+ Pj4gT2xla3NhbmRyCj4+Pj4KPj4+PiBQLlMuIFNvcnJ5IGZvciBtYWtpbmcgeW91ciBvcmlnaW5h bCBtYWlsIHRocmVhZCB0byBkaXNjdXNzIHRoaW5ncyBtdWNoCj4+Pj4gYnJvYWRlciB0aGFuIHlv dXIgUkZDLi4uCj4+Pj4KPj4gWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS94ZW4tdHJvb3BzL2Rpc3Bs X2JlCj4+IFsyXSBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NC4xNi1yYzcvc291 cmNlL2luY2x1ZGUveGVuL2ludGVyZmFjZS9pby9kaXNwbGlmLmgjTDQ4NAo+PiBbM10gaHR0cHM6 Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjQuMTYtcmM3L3NvdXJjZS9pbmNsdWRlL3hlbi9p bnRlcmZhY2UvaW8vc25kaWYuaAo+PgpbMV0gCmh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xp bnV4L3Y0LjE2LXJjNy9zb3VyY2UvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2lvL2Rpc3BsaWYuaApb Ml0gCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwv MjAxOC0wNC9tc2cwMDY4NS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=