From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: Questions on page flips and atomic modeset Date: Fri, 9 Feb 2018 17:53:50 +0200 Message-ID: <20180209155350.GL5453@intel.com> References: <8c3a7024-598b-49b5-0f52-30fb35a27868@gmail.com> <20180205164736.GK5453@intel.com> <66bbd5cc-e93c-78dd-6c57-87bc879bbfe1@gmail.com> <20180206160420.GM5453@intel.com> <37306d83-2ee1-faca-086e-a86c6ea44b99@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC3CD6E206 for ; Fri, 9 Feb 2018 15:53:53 +0000 (UTC) Content-Disposition: inline In-Reply-To: <37306d83-2ee1-faca-086e-a86c6ea44b99@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Oleksandr Andrushchenko Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBGZWIgMDgsIDIwMTggYXQgMTE6NTM6MzBBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gSGVsbG8sIFZpbGxlIQo+IAo+IE9uIDAyLzA2LzIwMTggMDY6MDQg UE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgRmViIDA2LCAyMDE4IGF0IDEx OjU5OjM3QU0gKzAyMDAsIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+ID4+IEhlbGxv LCBWaWxsZSEKPiA+Pgo+ID4+IFRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHN1Y2ggYSBjb21wcmVo ZW5zaXZlIGFuc3dlci4KPiA+Pgo+ID4+IFBsZWFzZSBzZWUgaW5saW5lCj4gPj4KPiA+Pgo+ID4+ IE9uIDAyLzA1LzIwMTggMDY6NDcgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4gT24g TW9uLCBGZWIgMDUsIDIwMTggYXQgMDY6MDM6MjVQTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1c2hj aGVua28gd3JvdGU6Cj4gPj4+PiBIZWxsbywKPiA+Pj4+Cj4gPj4+Pgo+ID4+Pj4gSSBoYXZlIGEg RFJNIGRyaXZlciB3aGljaCBpbXBsZW1lbnRzIGRpc3BsYXkgcHJvdG9jb2wgZm9yIFhlbiBbMV0K PiA+Pj4+IGFuZCB0aGlzIHByb3RvY29sIGhhcyBhIGRlZGljYXRlZCBYRU5ESVNQTF9PUF9QR19G TElQIHJlcXVlc3Qgd2hpY2gKPiA+Pj4+IHRlbGxzIHRoZSBvdGhlciBlbmQgdGhhdCBzb21lIGRp c3BsYXkgYnVmZmVyIG5lZWRzIHRvIGJlIGRpc3BsYXllZCwKPiA+Pj4+IGUuZy4gaXQgaXMgaXNz dWVkIGJ5IHRoZSBmcm9udGVuZCBEUk0gZHJpdmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nCj4gPj4+ PiBiYWNrZW5kIHdoZW4gdGhlIGZvcm1lciB3YW50cyB0byBkaXNwbGF5IGEgYnVmZmVyLgo+ID4+ Pj4gVHdvIG5vdGVzOgo+ID4+Pj4gMS4gQ29tbXVuaWNhdGlvbiBiZXR3ZWVuIHR3byByZW1vdGUg cGFydGllcyBjYW4gb2J2aW91c2x5IGZhaWwuCj4gPj4+PiAyLiBBdCB0aGUgbW9tZW50IG9ubHkg cHJpbWFyeSBwbGFuZSBpcyBzdXBwb3J0ZWQsIHNvIHdlIGNhbiB0aGluayBvZgo+ID4+Pj4gdGhl IGRpc3BsYXkgYnVmZmVyIGFzIG9mIENSVEMncyBwcmltYXJ5IGZiLgo+ID4+Pj4KPiA+Pj4+IFRo ZXJlIGFyZSB0d28gQVBJcyBhdmFpbGFibGUgZm9yIHVzZXItc3BhY2UgdG8gaW5pdGlhdGUgYSBw YWdlLWZsaXAKPiA+Pj4+IChwbGVhc2UgY29ycmVjdCBtZSBpZiBJIGFtIHdyb25nIGhlcmUpOiBs ZWdhY3kgdmlhIERSTV9JT0NUTF9NT0RFX1BBR0VfRkxJUAo+ID4+Pj4gYW5kIG1vcmUgcmVjZW50 IHZpYSBEUk1fSU9DVExfTU9ERV9BVE9NSUMuIE15IGN1cnJlbnQgaW1wbGVtZW50YXRpb24KPiA+ Pj4+ICh3aGljaCBpcyA0LjkgYmFzZWQpIHVzZXMgZHJtX2NydGNfZnVuY3MucGFnZV9mbGlwIGNh bGxiYWNrIHRvIHNlbmQKPiA+Pj4+IFhFTkRJU1BMX09QX1BHX0ZMSVAgcmVxdWVzdCB0byB0aGUg YmFja2VuZCwgc28gaWYgY29tbXVuaWNhdGlvbiBmYWlscwo+ID4+Pj4gSSBjYW4gcmV0dXJuIGFu IGVycm9yIGNvZGUsIHNvIHRoZSBEUk0gY29yZSBrbm93cyB0aGF0IHBhZ2UgZmxpcAo+ID4+Pj4g Y2Fubm90IGJlIGRvbmUuCj4gPj4+Pgo+ID4+Pj4gQnV0IG5vdyBJIGFtIGFib3V0IHRvIGVuYWJs ZSBwYWdlIGZsaXBwaW5nIHZpYSBEUk1fSU9DVExfTU9ERV9BVE9NSUMgZm9yCj4gPj4+PiB3aGlj aCB0aGlzIGhhcHBlbnMgd2l0aG91dCBEUk1fSU9DVExfTU9ERV9QQUdFX0ZMSVAsIGJ1dCB2aWEg LmF0b21pY19jaGVjayArCj4gPj4+PiAuYXRvbWljX2ZsdXNoIGNhbGxiYWNrcy4KPiA+Pj4+Cj4g Pj4+PiBUaGUgc29sdXRpb24gSSBoYXZlIGluIG1pbmQgaXMgdGhhdCBJIG1vdmUgdGhlIFhFTkRJ U1BMX09QX1BHX0ZMSVAgcmVxdWVzdAo+ID4+Pj4gdG8gdGhlIC5hdG9taWNfZmx1c2ggY2FsbGJh Y2sgd2hpY2ggc2VlbXMgdG8gYmUgdGhlIHJpZ2h0IHBsYWNlIHRvIHNlcnZlCj4gPj4+PiBib3Ro IERSTV9JT0NUTF9NT0RFX1BBR0VfRkxJUCBhbmQgRFJNX0lPQ1RMX01PREVfQVRPTUlDIChpcyB0 aGlzPykuCj4gPj4+Pgo+ID4+Pj4gVGhlIHF1ZXN0aW9ucyBJIGhhdmUgd2l0aCB0aGlzIGFyZToK PiA+Pj4+Cj4gPj4+PiAxLiBXaGF0IGlzIHRoZSBmcmFtZWJ1ZmZlciBJIGNhbiBzZW5kIHRvIHRo ZSBiYWNrZW5kPwo+ID4+Pj4gSSBhc3N1bWUgSSBjYW4gdXNlIGNydGMtPnByaW1hcnktPmZiIGZy b20KPiA+Pj4+IGRybV9jcnRjX2hlbHBlcl9mdW5jcy5hdG9taWNfZmx1c2gsCj4gPj4+PiBpcyB0 aGlzIGFzc3VtcHRpb24gY29ycmVjdD8KPiA+Pj4gUGxhbmVzIGFyZSBleHBsaWNpdCBpbiB0aGUg YXRvbWljIHdvcmxkLCBzbyB5b3Ugc2hvdWxkIGp1c3QgZGVhbCB3aXRoCj4gPj4+IHRoZSBwbGFu ZSBpZiBhbmQgd2hlbiBpdCdzIHBhcnQgb2YgdGhlIGRybV9hdG9taWNfc3RhdGUuIExvb2sgYXQg ZWcuCj4gPj4+IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoKSBob3cgdG8gZmlndXJl IG91dCB3aGF0J3MgaW4gdGhlCj4gPj4+IHN0YXRlLgo+ID4+IFllcywgdGhpcyBpcyBjbGVhci4g VGhlIHF1ZXN0aW9uIHdhcyBhYm91dCB0aGUgZnJhbWUgYnVmZmVyCj4gPj4gSSBnZXQgaW4gZHJt X2NydGNfaGVscGVyX2Z1bmNzLmF0b21pY19mbHVzaCB3aGljaCBvbmx5IGhhcwo+ID4+IG9sZF9j cnRjX3N0YXRlLCBzbyBJIGFzc3VtZWQgSSBjYW4gdXNlIGNydGMtPnByaW1hcnktPmZiIHRoZXJl Lgo+ID4+IE9yIHlvdSBtZWFuIEkgaGF2ZSB0byBkaWcgaW50byBvbGRfY3J0Y19zdGF0ZS0+c3Rh dGUgdG8gZmluZAo+ID4+IG91dCBpZiB0aGVyZSBpcyBhIHBsYW5lIGFuZCBpZiBpdCBoYXMgYSBm cmFtYnVmZmVyIGFuZCBpZiBzbwo+ID4+IHVzZSBpdCBpbnN0ZWFkIG9mIGNydGMtPnByaW1hcnkt PmZiPwo+ID4gWW91IHdpbGwgZ2V0IHRoZSBwbGFuZSBleHBsaWNpdGx5IGFzIHBhcnQgb2YgdGhl IGRybV9hdG9taWNfc3RhdGUuCj4gPiBOb3JtYWxseSB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gZ28g ZmluZCBpdCB2aWEgb3RoZXIgbWVhbnMuCj4gPgo+ID4gT2gsIGFuZCBuZXZlciB1c2UgdGhlIHBs YW5lLT5mYiBldGMuIHBvaW50ZXJzIGluIGFuIGF0b21pYyBkcml2ZXIuCj4gPiBUaG9zZSBhcmUg Zm9yIGxlZ2FjeSBwdXJwb3NlcyBvbmx5LiBBdG9taWMgZHJpdmVycyBzaG91bGQgb25seSBldmVy Cj4gPiBkZWFsIHdpdGggcHJvcGVyIHN0YXRlIG9iamVjdHMuCj4gSSBhbSB1c2luZyBmYiBmcm9t IGNvcnJlc3BvbmRpbmcgc3RhdGUgbm93LCB0aGFuayB5b3UKPiA+Cj4gPj4+ICAgIEFuZCBJIGd1 ZXNzIHlvdSdyZSBhbHJlYWR5IHBsYW5uaW5nIG9uIHVzaW5nIHRoYXQgaGVscGVyIHNpbmNlCj4g Pj4+IHlvdSBtZW50aW9uIC5hdG9taWNfZmx1c2goKS4KPiA+PiBOb3QgZGlyZWN0bHksIGJ1dCB2 aWEgZHJtX21vZGVfY29uZmlnX2Z1bmNzLmF0b21pY19jb21taXQKPiA+IC5hdG9taWNfY29tbWl0 KCkgaXMgYSBob29rIHRoZSBkcml2ZXIgaGFzIHRvIHByb3ZpZGUuIE1vc3QgZHJpdmVycyB1c2UK PiA+IHRoZSBoZWxwZXIgZm9yIGl0LCB3aGljaCBpbiB0dXJuIHJlcXVpcmVzIHRoZSBkcml2ZXIg dG8gcHJvdmlkZSBvdGhlcgo+ID4gaG9va3Mgc3VjaCBhcyAuYXRvbWljX2ZsdXNoKCkuIFRoYXQg aXMgd2hhdCB5b3UgYXBwZWFyIHRvIGJlIGRvaW5nLgo+IHlvdSBhcmUgY29ycmVjdAo+ID4+PiBP bmUgc2hvdWxkIHJlYWxseSB0aGluayBvZiB0aGUgZHJtX2F0b21pY19zdGF0ZSBhcyBtb3JlIG9m IGEgdHJhbnNhY3Rpb24KPiA+Pj4gcmF0aGVyIHRoYW4gYXMgYSBzdGF0ZSAoc2luY2Ugbm90IGFs bCBvYmplY3RzIG5lZWQgYmUgcGFydCBvZiBpdCkuCj4gPj4gVGhhbmsgeW91Cj4gPj4+PiAyLiBJ cyB0aGUgY2hlY2sgKGVpdGhlciB0byBzZW5kIG9yIG5vdCkgZm9yIGNydGMtPnByaW1hcnktPmZi ICE9IE5VTEwKPiA+Pj4+IGVub3VnaD8KPiA+Pj4+IEkgYXNzdW1lIHRoZXJlIGFyZSBvdGhlciBj YXNlcyB3aGVuIC5hdG9taWNfZmx1c2ggZ2V0cyBjYWxsZWQsCj4gPj4+PiBzbyBpcyB0aGVyZSBh IHdheSBJIGNhbiBmaWx0ZXIgb3V0IHVubmVlZGVkIGNhc2VzPyBFLmcuIHRob3NlIHdoaWNoCj4g Pj4+PiBhcmUgbm90IGZvciBwYWdlIGZsaXBwaW5nPwo+ID4+PiBFYWNoIG9iamVjdCB0YWtpbmcg cGFydCBpbiB0aGUgdHJhbnNhY3Rpb24gd2lsbCBoYXZlIGFuIGFzc29jaWF0ZWQKPiA+Pj4gbmV3 IHN0YXRlIGFuZCBvbGQgc3RhdGUuCj4gPj4gQXMgSSByZXBsaWVkIGFib3ZlIEkgb25seSBoYXZl IG9sZCBzdGF0ZSBpbiAuYXRvbWljX2ZsdXNoCj4gPiBPaCByaWdodC4gVGhhdCB3YXkgb2YgcGFz c2luZyB0aGUgb2xkIHN0YXRlIG9ubHkgZGF0ZXMgYmFjayB0byBlYXJsaWVyCj4gPiBkYXlzIG9m IGF0b21pYy4gVG8gZmluZCB0aGUgbmV3IHN0YXRlIHdoYXQgeW91IHNob3VsZCBkbyB0aGVzZSBk YXlzCj4gPiBpcyBzb21ldGhpbmcgbGlrZToKPiA+Cj4gPiBmb28oc3RydWN0IGRybV9jcnRjICpj cnRjLCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+IHsKPiA+IAlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBvbGRfc3RhdGUtPnN0YXRlOwo+ID4gCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlID0KPiA+IAkJZHJtX2F0b21pY19nZXRfbmV3X2NydGNf c3RhdGUoc3RhdGUsIGNydGMpOwo+ID4gCS4uLgo+ID4KPiA+IFRoZSBvbGQgd2F5IHdhcyB0byB1 c2UgdGhlIGNydGMtPnN0YXRlIHBvaW50ZXIgYXMgZWl0aGVyIHRoZSBvbGQKPiA+IG9yIG5ldyBz dGF0ZSBkZXBlbmRpbmcgb24gd2hlcmUgeW91IGFyZSBpbiB0aGUgY29tbWl0IHNlcXVlbmNlLgo+ ID4gQnV0IHRoYXQgd2Fzbid0IHZlcnkgZ29vZCBzbyBNYWFydGVuIGNoYW5nZWQgdGhpbmdzIHNv IHRoYXQgd2UKPiA+IG5vdyBoYXZlIGV4cGxpY2l0IG9sZCBhbmQgbmV3IHN0YXRlcyBmb3IgZWFj aCBvYmplY3QgdHJhY2tlZCBpbgo+ID4gdGhlIGRybV9hdG9taWNfc3RhdGUuCj4gPgo+ID4gSSB0 aGluayB3aGF0IHdlIHNob3VsZCByZWFsbHkgZG8gaXMgY2hhbmdlIG1vc3Qgb2YgdGhlIGhvb2tz IHRvCj4gPiBwYXNzIGNydGMrZHJtX2F0b21pY19zdGF0ZSBpbnN0ZWFkLCBhbmQgbGV0IGVhY2gg ZnVuY3Rpb24gZ3JhYgo+ID4gdGhlIG9sZCBhbmQvb3IgbmV3IGNydGMgc3RhdGUgZnJvbSB0aGUg ZHJtX2F0b21pY19zdGF0ZSBhcyBuZWVkZWQuCj4gPiBJIGJlbGlldmUgdGhhdCB3b3VsZCBhdm9p ZCBjb25mdXNpbmcgcGVvcGxlIHdpdGgganVzdCB0aGUgb2xkIG9yCj4gPiBuZXcgc3RhdGUuCj4g VGhhdCB3b3VsZCBiZSBncmVhdAo+ID4+PiAgICBZb3UgY2FuIGNvbXBhcmUgdGhlIHR3byB0byBm aWd1cmUgb3V0IHdoYXQKPiA+Pj4gY2hhbmdlZCwgYW5kIGluIGFkZGl0aW9uIHRoZXJlIG1heSBh bHJlYWR5IHNvbWUgZmxhZ3MgaW4gdGhlIGJhc2UKPiA+Pj4gY2xhc3MgZm9yIHRoZSBzdGF0ZSB0 aGF0IGluZGljYXRlIHdoYXQgbWF5IGhhdmUgY2hhbmdlZCAoZWcuCj4gPj4+IGRybV9jcnRjX3N0 YXRlOjptb2RlX2NoYW5nZWQgZXRjLikuIFN1Y2ggZmxhZ3MgbWF5IGJlIHNldCBieSB0aGUKPiA+ Pj4gY29yZSB0byBoZWxwIGZpZ3VyZSBvdXQgd2hhdCBuZWVkcyBkb2luZy4KPiA+PiBZZXMsIHRo YW5rIHlvdQo+ID4+Pj4gMy4gSWYgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBiYWNrZW5kIGZhaWxz IHRoZXJlIGlzIG5vIHdheSBmb3IgbWUKPiA+Pj4+IHRvIHRlbGwgdGhlIERSTSBjb3JlIGFib3V0 IHRoaXMgYXMgLmF0b21pY19mbHVzaCBpcyBjYWxsZWQgYWZ0ZXIKPiA+Pj4+ICJ0aGUgcG9pbnQg b2Ygbm8gcmV0dXJuIi4gRG8geW91IHRoaW5rIEkgY2FuIHJlbWVtYmVyIHRoZSBlcnJvcgo+ID4+ Pj4gY29kZSBhbmQgcmVwb3J0IGl0IG5leHQgdGltZSAuYXRvbWljX2NoZWNrIGlzIGNhbGxlZD8g U28sIG90aGVyIHBhZ2UKPiA+Pj4+IGZsaXBzIHdpbGwgbm90IHJ1biBvbiBicm9rZW4gY29ubmVj dGlvbiwgZm9yIGV4YW1wbGUuCj4gPj4+IERvIHlvdSBrbm93IHdoZW4gaXQgbWlnaHQgZmFpbD8K PiA+PiBOb3QgcmVhbGx5LCB0aGlzIGlzIGEgc29mdHdhcmUgcHJvdG9jb2wgdG8gdGFsayBmcm9t Cj4gPj4gdGhlIGZyb250ZW5kIHBhcmEtdmlydHVhbCBEUk0gZHJpdmVyIHRvIGl0cyBiYWNrZW5k Cj4gPj4gaW4gb3RoZXIgWGVuIGRvbWFpbgo+ID4gSSBzZWUuIFdlbGwsIHdpdGhvdXQgZXZpZGVu Y2UgdG8gdGhlIGNvbnRyYXJ5IEknZCBwcm9iYWJseSBqdXN0IGFzc3VtZQo+ID4gaXQnbGwgbmV2 ZXIgZmFpbC4KPiBJIGFtIG5vdCBzdXJlIEkgY2FuIGd1YXJhbnRlZSB0aGlzCj4gPiAgIFRoYXQg YXZvaWRzIGNvbXBsaWNhdGluZyB0aGUgY29kZSB3aXRoIHBvdGVudGlhbGx5Cj4gPiB1c2VsZXNz IGxvZ2ljLgo+IFVuZm9ydHVuYXRlbHksIEknbGwgaGF2ZSB0byBwdXQgc29tZXRoaW5nIGluCj4g PiAgIEhhbW1lcmluZyBpdCB3aXRoIHNvbWV0aGluZyBsaWtlIGlndCBmb3IgYSB3aGlsZSBtaWdo dAo+ID4gc2VydmUgYXMgYSBnb29kIHdheSB0byB0ZXN0IHRoYXQgYXNzdW1wdGlvbi4gTm90IHN1 cmUgaG93IG1hbnkgdGVzdHMgaW4KPiA+IGlndCBjdXJyZW50bHkgcnVuIG9uIG5vbi1pOTE1IHRo b3VnaC4KPiBUaGUgZmlyc3QgdGVzdCBzdWl0ZSBJIHRyaWVkIHdhcyBJR1QgaW5kZWVkLCBidXQg dW5mb3J0dW5hdGVseQo+IGl0IGlzIGNvdXBsZWQgd2l0aCBpOTE1IHRvbyBtdWNoLCBzbyBvbmx5 IHZlcnkgYmFzaWMgdGVzdHMKPiBjb3VsZCBiZSBydW4uIFRoZW4gSSBmb3VuZCBbMV0gd2hpY2gg Y2FuIGJlIGVhc2lseSBleHRlbmRlZAo+IHdpdGhvdXQgbXVjaCBlZmZvcnRzLCBzbyBJIHN0aWNr IHRvIGZvcmsgb2YgaXQgKGhvcGUgdG8gY29udHJpYnV0ZQo+IHRoZXJlIGxhdGVyLCBmb3IgZXhh bXBsZSwgYnkgYWRkaW5nIElPTiB0ZXN0cykKPiA+Cj4gPj4+ICAgIElmIHNvIHlvdSBzaG91bGQg aW1wbGVtZW50IHRoZSBhcHByb3ByaWF0ZQo+ID4+PiBjaGVja3MgaW4gLmF0b21pY19jaGVjaygp IGV0Yy4gdG8gdHJ5IGFuZCBtYWtlIHN1cmUgaXQgbmV2ZXIgaGFwcGVucwo+ID4+PiAoYmFycmlu ZyBhIHRvdGFsIGhhcmR3YXJlIGZhaWx1cmUgZm9yIGV4YW1wbGUpLgo+ID4+Pgo+ID4+PiBHZW5l cmFsbHkgd2hhdCB3ZSAoaTkxNSkgZG8gaXMgdHJ5IHRvIGNoZWNrIGV2ZXJ5dGhpbmcgdXAgZnJv bnQsIGJ1dCBpZgo+ID4+PiBhbiB1bmV4cGVjdGVkIGVycm9yIGRvZXMgaGFwcGVuIGxhdGVyIHdl IGp1c3QgbXVkZGxlIHRocm91Z2ggYW5kIGxvZyBhbgo+ID4+PiBlcnJvci4KPiA+Pj4KPiA+Pj4g Rm9yIHVzIEkgdGhpbmsgdGhlIG1vc3QgY29tbW9uIGxhdGUgZmFpbHVyZSBpcyBEUCBsaW5rIHRy YWluaW5nIGZhaWx1cmUuCj4gPj4+IFRoYXQgd2UgY2FuJ3QgZnVsbHkgY2hlY2sgdXAgZnJvbnQg c2luY2UgaXQgZGVwZW5kcyBvbiBleHRlcm5hbCBmYWN0b3JzOgo+ID4+PiBzaW5rLCBkb25nbGVz LCBjYWJsaW5nLCBldGMuIEZvciB0aG9zZSB3ZSBhZGRlZCBhIG5ldyBjb25uZWN0b3IgcHJvcGVy dHkKPiA+Pj4gdG8gc2lnbmFsIHRvIHVzZXJzcGFjZSB0aGF0IHRoZSBsaW5rIGlzIGhhdmluZyBp c3N1ZXMsIGFsbG93aW5nCj4gPj4+IHVzZXJzcGFjZSB0byByZWNvbmZpZ3VyZSB0aGluZ3Mgc3Vj aCB0aGF0IHdlIGxvd2VyIHRoZSBsaW5rIGJhbmR3aWR0aAo+ID4+PiByZXF1aXJlbWVudHMuCj4g Pj4gSSBjYW5ub3QgZG8gdGhhdCB0aGlzIHdheSwgYmVjYXVzZSB0aGUgZHJpdmVyIGhhcyB0byBy dW4KPiA+PiBzZWFtbGVzc2x5IGZvciB1c2VyLXNwYWNlLCBubyBzcGVjaWZpYyB1dGlsaXRpZXPC oCBhcmUKPiA+PiBleHBlY3RlZCB0byBydW4uCj4gPiBUaGVyZSBtdXN0IGJlIHNvbWV0aGluZyBy dW5uaW5nIG9yIHlvdSBuZXZlciBnZXQgYW55dGhpbmcgb24gdGhlIHNjcmVlbi4KPiA+Cj4gWWVz LCBzb3JyeSBmb3Igbm90IGJlaW5nIHByZWNpc2U6IEkgbWVhbnQgdGhhdCBub3RoaW5nCj4gZHJp dmVyIHNwZWNpZmljLCBlLmcuIHdoaWNoIGtub3dzIGludGVybmFscyBvZiB0aGUgZHJpdmVyLgo+ ID4+PiBUaGUgbGlua19zdGF0dXMgbWVjaGFuaXNtIGNvdWxkIHBlcmhhcHMgYmUgdXNlZCB0byB0 byB3b3JrIGFyb3VuZCBvdGhlcgo+ID4+PiAibGF0ZSBlcnJvcnMiLiBCdXQgaW4gZ2VuZXJhbCBp ZiB5b3Ugd2FudCB0byBzb21laG93IGZpeCB0aGF0IGVycm9yIHlvdQo+ID4+PiBoYXZlIHRvIGtu b3cgd2hhdCBjYXVzZWQgaXQsIG5vPwo+ID4+IFRoYXQgaXMgY29ycmVjdCwgc28gSSB3aWxsIHBy aW50IGFuIGVycm9yIG1lc3NhZ2Ugb24KPiA+PiBwYWdlIGZsaXAgZXJyb3Igc28gdXNlciBoYXMg YXQgbGlzdCBhIGNsdWUgb24gd2hhdCdzCj4gPj4gd3JvbmcKPiA+Pj4gICAgU28gaWYgeW91IGp1 c3QgZ2V0IGEgcmFuZG9tIGVycm9yIGZvcgo+ID4+PiBzZWVtaW5nbHkgbm8gcmVhc29uIHRoZXJl J3MgdmVyeSBsaXR0bGUgeW91IGNhbiBkbyBhcGFydCBmcm9tIGJsaW5kbHkKPiA+Pj4gcmV0cnlp bmcgYW5kIGxvZ2dpbmcgYW4gZXJyb3IuIEZvciB0aGUgRFAgY2FzZSB0aGUgZmFsbGJhY2sgbWVj aGFuaXNtIGlzCj4gPj4+IHByZXR0eSBjbGVhcjogcmVkdWNlIGxpbmsgcmF0ZSBhbmQvb3IgbnVt YmVyIG9mIGxhbmVzLgo+ID4+Pgo+ID4+PiBBcyBmb3Igc2lnbmFsbGluZyB0aGUgZXJyb3IgaW4g dGhlIG5leHQgaW9jdGwgY2FsbCwgdGhhdCBjb3VsZCBiZSBkb25lCj4gPj4+IEkgc3VwcG9zZS4K PiA+PiBJIHRyaWVkIHRoYXQgYXBwcm9hY2ggYW5kIGl0IHNlZW1zIHRvIHdvcmsuCj4gPj4+ICAg IEJ1dCBhZ2FpbiB0aGUgcXVlc3Rpb24gaXMgaG93IHdvdWxkIHVzZXJzcGFjZSBrbm93IHdoYXQK PiA+Pj4gKGlmIGFueXRoaW5nKSBpdCBjYW4gZG8gdG8gZml4IHRoZSBwcm9ibGVtPwo+ID4+IFdl bGwsIHRoaXMgd291bGQgYmUgc2VlbiBhcyBqdXN0IGFuIGVycm9yIHRvIHVzZXItc3BhY2UKPiA+ PiBhbmQgdW5mb3J0dW5hdGVseSBpZiBpdCBpcyBub3QgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIHRo ZW4gaXQgd2lsbAo+ID4+IGNsb3NlLiBOb3Qgc3VyZSBJIGNhbiBkbyBhbnl0aGluZyBzbWFydCBh Ym91dCBpdAo+ID4+Pj4gNC4gQXMgcGVyIG15IHVuZGVyc3RhbmRpbmcgSSBjYW5ub3QgcHV0IFhF TkRJU1BMX09QX1BHX0ZMSVAgcmVxdWVzdAo+ID4+Pj4gaW50byAuYXRvbWljX2NoZWNrIGFzIHRo ZSBjaGVjayBkb2Vzbid0IGd1YXJhbnRlZSB0aGF0IC5hdG9taWNfZmx1c2gKPiA+Pj4+IHdpbGwg Zm9sbG93LiBJcyB0aGlzIGNvcnJlY3Qgb3IgdGhlcmUgaXMgYSBtb3JlIG5lYXQgc29sdXRpb24g ZXhpc3RzPwo+ID4+PiBUaG91IHNoYWx0IG5vdCB0b3VjaCB0aGUgaGFyZHdhcmUgdW50aWwgLmF0 b21pY19jb21taXQoKS4gTm90ZSB0aGF0Cj4gPj4+IC5hdG9taWNfY29tbWl0KCkgaXRzZWxmIGlz IHN0aWxsIGFsbG93ZWQgdG8gZmFpbCwgYnV0IG9ubHkgaWYgeW91Cj4gPj4+IGNhbiBmYWlsIGF0 b21pY2FsbHkuCj4gPj4+Cj4gPj4+IFRoZSAuYXRvbWljX2ZsdXNoKCkgJiBjby4gaGVscGVyIHN0 dWZmIGlzIGRlc2lnbmVkIGluIGEgd2F5IHRoYXQKPiA+Pj4gZXhwZWN0cyBubyBmYWlsdXJlcyBh dCB0aGF0IGxhdGUgc3RhZ2Ugb2YgdGhlIGNvbW1pdC4gSWYgdGhhdAo+ID4+PiBkb2Vzbid0IHN1 aXQgeW91ciBoYXJkd2FyZSBkZXNpZ24gdGhlbiB5b3UgbWF5IG9wdCB0byBub3QgdXNlIHRoZQo+ ID4+PiBoZWxwZXIuCj4gPj4+Cj4gPj4+IEFsc28gbm90ZSB0aGF0IG5vbi1ibG9ja2luZyBvcGVy YXRpb25zIGNhbiBtYWtlIHRoaXMgZXZlbiBtb3JlIGRpZmZpY3VsdAo+ID4+PiBiZWNhdXNlIGlu IHRoYXQgY2FzZSBldmVuIC5hdG9taWNfY29tbWl0KCkgZG9lc24ndCBnZW5lcmFsbHkgdG91Y2gK PiA+Pj4gdGhlIGhhcmR3YXJlIGFuZCBpbnN0ZWFkIHRoYXQgdGFzayBpcyBkZWxlZ2F0ZWQgdG8g ZWcuIGEgd29yayBxdWV1ZS4KPiA+Pj4gU28gYnkgdGhlIHRpbWUgdGhlIGhhcmR3YXJlIGluZGlj YXRlcyBhbiBlcnJvciB0aGUgaW9jdGwgaGFzIGxvbmcgc2luY2UKPiA+Pj4gcmV0dXJuZWQgdG8g dXNlcnNwYWNlLgo+ID4+Pgo+ID4+IFRoaXMgaXMgbXkgY2FzZSBhcyBJIHNlbmQgYSBwYWdlIGZs aXAgcmVxdWVzdCB0byB0aGUgYmFja2VuZAo+ID4+IGFuZCBsYXRlciBpbiB0aW1lIHJlY2VpdmUg dGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UuCj4gPj4KPiA+PiBEbyB5b3UgbWluZCBsb29raW5n IGF0IG15IGN1cnJlbnQgV0lQIGltcGxlbWVudGF0aW9uIG9mCj4gPj4gYXRvbWljIGNvbW1pdCBb MV0sIFsyXT8gVGhpcyB3b3JrIGlzIGRvbmUgYXMgYSBwcmVwYXJhdGlvbiBmb3IKPiA+PiB1cHN0 cmVhbWluZyB0aGUgZHJpdmVyIGFuZCBpcyBzdGlsbCBpbiBwcm9ncmVzcyB0aG91Z2guCj4gPiBV c3VhbGx5IG9uZSB3b3VsZCBoYW5kbGUgcGFnZSBmbGlwcyBmcm9tIHRoZSBwbGFuZSdzIC5hdG9t aWNfdXBkYXRlKCkKPiA+IGhvb2sgaW5zdGVhZCBvZiB0aGUgY3J0YydzIC5hdG9taWNfZmx1c2go KS4gQnV0IGlmIHlvdSBvbmx5IGhhdmUgdGhlIG9uZQo+ID4gcGxhbmUgdGhlbiB0aGlzIGNvdWxk IHdvcmsuIEJ1dCB5b3Ugc2hvdWxkIGdldCBhdCB0aGUgcGxhbmUgZmIgdmlhCj4gPiBkcm1fYXRv bWljX2dldF9uZXdfcGxhbmVfc3RhdGUoKSBldGMuCj4gPgo+ID4gR2VuZXJhbGx5IGxvb2tzIGxp a2UgeW91IG5lZWQgc29tZSBtb3JlIHdvcmsgb24gdGhlIHBsYW5lIC5hdG9taWNfY2hlY2soKQo+ ID4gZnVuY3Rpb24uIFVzaW5nIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCkg c2hvdWxkIGdldCB5b3UKPiA+IG1vc3Qgb2YgdGhlIHdheSB0aGVyZSBJJ2QgaW1hZ2luZS4gTm90 IHN1cmUgaWYgZGlzYWJsaW5nIHRoZSBwbGFuZQo+ID4gaW5kZXBlbmRlbnRseSBvZiB0aGUgY3J0 YyBtYWtlcyBhbnkgc2Vuc2UsIGJ1dCBpZiBub3QgeW91IHNob3VsZAo+ID4gbG9vayBhdCBkcm1f c2ltcGxlX2ttc19oZWxwZXIuYyBmb3IgYW4gZXhhbXBsZS4gSG1tLiBOb3Qgc3VyZSBpZiB5b3UK PiA+IGNvdWxkbid0IGp1c3QgdXNlIGRybV9zaW1wbGVfa21zX2hlbHBlci5jIHlvdXJzZWxmIGFj dHVhbGx5Lgo+IEdyZWF0ISBBcyBJIGFtIG1vdmluZyBhd2F5IGZyb20gbGVnYWN5IHN0dWZmIHRo aXMgaXMgYQo+IHBlcmZlY3QgZml0IG5vdy4gU28sIEkgd2lsbCBiYXNlIG9uIGRybV9zaW1wbGVf a21zX2hlbHBlci4KPiAKPiBCVFcsIGl0IGhhcyBhIHNtYWxsIGlzc3VlIHdoaWNoIGNhbiBiZSBl YXNpbHkgc29sdmVkIGluIHRoZQo+IERSTSBjb3JlIEkgYmVsaWV2ZTogaWYgeW91ciBkcml2ZXIg bmVlZHMgdG8gd29yayB3aXRoIHZibGFua3MsCj4gdGhlbiB5b3UgaGF2ZSB0byBwcm92aWRlIGRy bV9kcml2ZXIuZW5hYmxlX3ZibGFuay9kaXNhYmxlX3ZibGFuawo+IGJlY2F1c2UgZHJtX3NpbXBs ZV9rbXNfaGVscGVyLmRybV9jcnRjX2Z1bmNzIGRvIG5vdCBwcm92aWRlIGFueS4KPiBUaGUgcHJv YmxlbSBoZXJlIGlzIHRoYXQgZHJtX2RyaXZlci5lbmFibGVfdmJsYW5rL2Rpc2FibGVfdmJsYW5r Cj4gYXJlIG1vc3QgcHJvYmFibHkgZHVtbXkgZnVuY3Rpb25zIGFuZCB3aGF0IGlzIG1vcmUgdGhl eSBhcmUgbWFya2VkCj4gYXMgZGVwcmVjYXRlZC4KCkhtbS4gT2gsIEkgdGhpbmsgc29tZW9uZSBq dXN0IHdhbnRlZCBwZW9wbGUgdG8gbW92ZSB0byB1c2luZyB0aGUKY29ycmVzcG9uZGluZyBob29r cyBpbiB0aGUgY3J0YyBmdW5jcy4gSSdtIG5vdCBzdXJlIGhvdyBwZW9wbGUgZG8gdGhpbmdzCndo ZW4gdGhleSBkb24ndCBoYXZlIHZibGFuayBpbnRlcnJ1cHRzLCBidXQgSSB0aGluayBpbiBnZW5l cmFsIGlmIHlvdQpkb24ndCBpbml0aWFsaXplIHZibGFuayBzdXBwb3J0IHRob3NlIGhvb2tzIHNo b3VsZG4ndCBnZXQgY2FsbGVkLgoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==