From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Konduru, Chandra" Subject: Re: [PATCH 10/21 v2] drm/i915: Helper function to detach a scaler from a plane or crtc Date: Mon, 30 Mar 2015 19:06:54 +0000 Message-ID: <76A9B330A4D78C4D99CB292C4CC06C0E36F90D91@fmsmsx101.amr.corp.intel.com> References: <1426896282-23215-1-git-send-email-chandra.konduru@intel.com> <1426896282-23215-11-git-send-email-chandra.konduru@intel.com> <20150325051539.GJ28667@intel.com> <76A9B330A4D78C4D99CB292C4CC06C0E36F8364A@fmsmsx101.amr.corp.intel.com> <20150325211358.GB7501@intel.com> <76A9B330A4D78C4D99CB292C4CC06C0E36F837FC@fmsmsx101.amr.corp.intel.com> <20150328002156.GF23435@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 9F8856E616 for ; Mon, 30 Mar 2015 12:06:55 -0700 (PDT) In-Reply-To: <20150328002156.GF23435@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Roper, Matthew D" Cc: "Vetter, Daniel" , "intel-gfx@lists.freedesktop.org" , "Conselvan De Oliveira, Ander" List-Id: intel-gfx@lists.freedesktop.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogUm9wZXIsIE1hdHRoZXcgRAo+ IFNlbnQ6IEZyaWRheSwgTWFyY2ggMjcsIDIwMTUgNToyMiBQTQo+IFRvOiBLb25kdXJ1LCBDaGFu ZHJhCj4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFZldHRlciwgRGFuaWVs OyBDb25zZWx2YW4gRGUgT2xpdmVpcmEsIEFuZGVyCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxMC8y MSB2Ml0gZHJtL2k5MTU6IEhlbHBlciBmdW5jdGlvbiB0byBkZXRhY2ggYSBzY2FsZXIgZnJvbQo+ IGEgcGxhbmUgb3IgY3J0Ywo+IAo+IE9uIFdlZCwgTWFyIDI1LCAyMDE1IGF0IDAyOjI4OjE2UE0g LTA3MDAsIEtvbmR1cnUsIENoYW5kcmEgd3JvdGU6Cj4gPgo+ID4KPiA+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0KPiA+ID4gRnJvbTogUm9wZXIsIE1hdHRoZXcgRAo+ID4gPiBTZW50OiBX ZWRuZXNkYXksIE1hcmNoIDI1LCAyMDE1IDI6MTQgUE0KPiA+ID4gVG86IEtvbmR1cnUsIENoYW5k cmEKPiA+ID4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFZldHRlciwgRGFu aWVsOyBDb25zZWx2YW4gRGUKPiA+ID4gT2xpdmVpcmEsIEFuZGVyCj4gPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMTAvMjEgdjJdIGRybS9pOTE1OiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0YWNoIGEK PiA+ID4gc2NhbGVyIGZyb20gYSBwbGFuZSBvciBjcnRjCj4gPiA+Cj4gPiA+IE9uIFdlZCwgTWFy IDI1LCAyMDE1IGF0IDAxOjE0OjQwUE0gLTA3MDAsIEtvbmR1cnUsIENoYW5kcmEgd3JvdGU6Cj4g PiA+ID4KPiA+ID4gPgo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4g PiA+IEZyb206IFJvcGVyLCBNYXR0aGV3IEQKPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIE1hcmNo IDI0LCAyMDE1IDEwOjE2IFBNCj4gPiA+ID4gPiBUbzogS29uZHVydSwgQ2hhbmRyYQo+ID4gPiA+ ID4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFZldHRlciwgRGFuaWVsOyBD b25zZWx2YW4KPiA+ID4gPiA+IERlIE9saXZlaXJhLCBBbmRlcgo+ID4gPiA+ID4gU3ViamVjdDog UmU6IFtQQVRDSCAxMC8yMSB2Ml0gZHJtL2k5MTU6IEhlbHBlciBmdW5jdGlvbiB0bwo+ID4gPiA+ ID4gZGV0YWNoIGEgc2NhbGVyIGZyb20gYSBwbGFuZSBvciBjcnRjCj4gPiA+ID4gPgo+ID4gPiA+ ID4gT24gRnJpLCBNYXIgMjAsIDIwMTUgYXQgMDU6MDQ6MzFQTSAtMDcwMCwgQ2hhbmRyYSBLb25k dXJ1IHdyb3RlOgo+ID4gPiA+ID4gPiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGNvbW1p dCBwYXRoIG9mIGEgcGxhbmUgb3IgY3J0Yy4KPiA+ID4gPiA+ID4gSXQgcHJvZ3JhbXMgc2NhbGVy IHJlZ2lzdGVycyB0byBkZXRhY2ggKGFrYS4gdW5iaW5kcykgc2NhbGVyCj4gPiA+ID4gPiA+IGZy b20gcmVxdWVzdGVkIHBsYW5lIG9yIGNydGMgaWYgaXQgaXNuJ3QgaW4gdXNlLiBJdCBhbHNvCj4g PiA+ID4gPiA+IHJlc2V0cyBzY2FsZXJfaWQgaW4gY3J0Yy9wbGFuZSBzdGF0ZS4KPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gdjI6Cj4gPiA+ID4gPiA+IC1pbXByb3ZlZCBhIGxvZyBtZXNzYWdlICht ZSkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hhbmRyYSBLb25kdXJ1 IDxjaGFuZHJhLmtvbmR1cnVAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAgMzkKPiA+ID4gPiA+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgIDEgKwo+ID4gPiA+ID4gPiAgMiBmaWxlcyBj aGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gaW5kZXggOTc2 YmZiMS4uNzE1MGMzMyAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiBAQCAtMjgzNiw2ICsyODM2LDQ1IEBAIHUzMiBp bnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KHN0cnVjdAo+ID4gPiA+ID4gPiBkcm1fZGV2aWNlCj4g PiA+ID4gPiAqZGV2LCB1aW50NjRfdCBmYl9tb2RpZmllciwKPiA+ID4gPiA+ID4gIAl9Cj4gPiA+ ID4gPiA+ICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICsvKgo+ID4gPiA+ID4gPiArICogVGhp cyBmdW5jdGlvbiBkZXRhY2hlcyAoYWthLiB1bmJpbmRzKSBhIHNjYWxlciBmcm9tIHBsYW5lCj4g PiA+ID4gPiA+ICtvciBjcnRjCj4gPiA+ID4gPgo+ID4gPiA+ID4gWW91IG1pZ2h0IHdhbnQgdG8g Y2xhcmlmeSB0aGF0IGRldGFjaC91bmJpbmQgcmVmZXJzIHRvIHRoZQo+ID4gPiA+ID4gYWN0dWFs IGhhcmR3YXJlIHByb2dyYW1taW5nLCBub3QgdGhlIHN0YXRlIGNhbGN1bGF0aW9uLiAgSSdtIGEK PiA+ID4gPiA+IGJpdCBzdXJwcmlzZWQgd2UgbmVlZCB0aGlzIGZ1bmN0aW9uOyBJIGZpZ3VyZWQg d2UnZCBqdXN0IGJlCj4gPiA+ID4gPiBsb29waW5nIG92ZXIgYWxsIHNjYWxlcnMgYXQgdGhlIGVu ZCBvZiB0aGUgY29tbWl0IHN0ZXAgYW5kCj4gPiA+ID4gPiBwcm9ncmFtbWluZyB0aGVtIHRvIGVp dGhlciBvbiBvciBvZmYgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIHNjYWxpbmcKPiBzdGF0ZSBjb250 YWluZWQuCj4gPiA+ID4KPiA+ID4gPiBUaGlzIGlzIGJpdCB0cmlja3kgYW5kIGlzbid0IHRoYXQg c3RyYWlnaHQgZm9yd2FyZC4KPiA+ID4gPiBTdGFnZWQgc2NhbGVyIHN0YXRlIGNhbiB0cmlnZ2Vy IGZyZWVpbmcgYSBzY2FsZXIgdGhhdCBjYW4gbGVhZCB0byB0d28KPiBzY2VuYXJpb3M6Cj4gPiA+ ID4gMSkgZnJlZWQgc2NhbGVyIGlzIG5vdCBhdHRhY2hlZCB0byBhbnkgb3RoZXIgdXNlci4gSW4g dGhpcyBjYXNlLAo+ID4gPiA+IHJlZyBwcm9ncmFtbWluZyBuZWVkZWQgdG8gdXBkYXRlIGh3LiBB bmQgcmVzZXQgc2NhbGVyX2lkIHRvIC0xIHRvCj4gPiA+ID4gaW5kaWNhdGUgc2NhbGVyCj4gPiA+ IGlzbid0IHVzZWQuCj4gPiA+ID4gT25jZSBkb25lLCBib3RoIHN3IGFuZCBodyBzdGF0ZXMgYXJl IGluIHN5bmMuCj4gPiA+ID4KPiA+ID4gPiAyKSBmcmVlZCBzY2FsZXIgaXMgYWxsb2NhdGVkIHRv IHNvbWVvbmUuIEluIHRoaXMgY2FzZSwgcmVnaXN0ZXJzCj4gPiA+ID4gc2hvdWxkbid0IGJlIHBy b2dyYW1tZWQgYnkgcHJldmlvdXMgb3duZXIgYmVjYXVzZSBzY2FsZXIgbWF5IGJlIGluCj4gPiA+ ID4gdXNlIGJ5IG5ldyBvd25lci4KPiA+ID4gPgo+ID4gPiA+IEkgdGhpbmsgSSBleHBsYWluZWQg dGhlc2UgZGV0YWlscyBpbiBjb21tZW50cyBhbHJlYWR5LiBCdXQgd2lsbAo+ID4gPiA+IGNoZWNr IGFuZCB1cGRhdGUgaWYgbmVlZGVkLgo+ID4gPgo+ID4gPiBJIG1pZ2h0IG5vdCBoYXZlIGJlZW4g Y2xlYXIgaW4gbXkgZWFybGllciBlbWFpbC4gIFdoYXQgSSBtZWFudCB3YXMKPiA+ID4gdGhhdCBJ IGRpZG4ndCBleHBlY3Qgc2NhbGVycyB0byBiZSBwcm9ncmFtbWVkIGFzIHBhcnQgb2YgdGhlaXIg Im93bmVyJ3MiCj4gPiA+IHByb2dyYW1taW5nIGF0IGFsbC4gIEF0IHRoZSBtb21lbnQgeW91IHNl ZW0gdG8gYmUgcHJvZ3JhbW1pbmcgdGhlbQo+ID4gPiBpbiB0aGUgbG93LWxldmVsIHBsYW5lIHBy b2dyYW1taW5nIGZ1bmN0aW9ucyAoc2tsX3VwZGF0ZV9wbGFuZSBhbmQgc3VjaCkuCj4gPiA+IElu c3RlYWQsIEkgaGFkIGV4cGVjdGVkIGEgc2luZ2xlIGxvb3Agb3ZlciBlYWNoIHNjYWxlciBhdCB0 aGUgdmVyeQo+ID4gPiBlbmQgb2YgdGhlIGVudGlyZSBjb21taXQgcHJvY2VzcywgYWZ0ZXIgeW91 J3JlIGRvbmUgd2l0aCB0aGUgcGxhbmUKPiBwcm9ncmFtbWluZyBmdW5jdGlvbnMuCj4gPiA+IFRo ZSBzY2FsZXIgc3RhdGUgd291bGQgYWxyZWFkeSBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBzY2FsZXIg aXMKPiA+ID4gc3VwcG9zZWQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgcGxhbmUvY3J0YyAod2hp Y2ggbWF5IG9yIG1heSBub3QgYmUKPiA+ID4gdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIGZyYW1l OyB3ZSBkb24ndCBjYXJlKSBvciB3aGV0aGVyIGl0IGlzIHVudXNlZCBhbmQKPiBzaG91bGQgYmUg cHJvZ3JhbW1lZCB0byBvZmYuCj4gPiA+IFNvIGJhc2ljYWxseSB5b3Ugd291bGQgd2luZCB1cCBw cm9ncmFtbWluZyBhbGwgb2YgdGhlIHNjYWxlcgo+ID4gPiByZWdpc3RlcnMgb24gZWFjaCBhdG9t aWMgY29tbWl0LCBldmVuIGlmIHRoZXkgZGlkbid0IGNoYW5nZSwgYnV0IHlvdQo+ID4gPiB3b3Vs ZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHdoZXRoZXIgdGhlIHNjYWxlcidzIG93bmVyIGlzIGNo YW5naW5nCj4gPiA+IG9yIHdobyBpcyByZXNwb25zaWJsZSBmb3IgZG9pbmcgdGhlIHByb2dyYW1t aW5nIG9mIHRoYXQgc2NhbGVyIHRoaXMKPiA+ID4gdGltZSBhcm91bmQgLS0tIGJhc2ljYWxseSBq dXN0IHRyZWF0IHNjYWxlcnMgYXMgYW4gaW5kZXBlbmRlbnQKPiA+ID4gcmVzb3VyY2UgdGhhdCBo YXZlIHRoZWlyIG93biBwcm9ncmFtbWluZyBzdGVwIGF0IHRoZSBlbmQgb2YgcHJvY2Vzc2luZyBh Cj4gQ1JUQy4KPiA+Cj4gPiBPSy4gTm93IEkgdW5kZXJzdGFuZCB3aGF0IHlvdSBtZWFudC4KPiA+ IEluIGVhcmx5IHZlcnNpb25zLCBJIHRyaWVkIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCBh cHByb2FjaAo+ID4gcmVxdWlyZWQgYmFjayBwb2ludGVycyBmcm9tIHNjYWxlciB0byBpdHMgb3du ZXIgdG8gcHJvZ3JhbSBzY2FsZXIKPiA+IG91dHB1dCB3aW5kb3cgY29vcmRpbmF0ZXMuCj4gPiBB bmQgaXQgYWxzbyByZXF1aXJlcyBtYW5hZ2luZyBiYWNrIHBvaW50ZXIgYXNzaWdubWVudCBhbmQg cmVzZXR0aW5nLgo+ID4gSXQgaXMgY2VydGFpbmx5IGRvYWJsZSBidXQgSSBkaWRuJ3Qgc2VlIGFu eSBhZHZhbnRhZ2UgdGhhbiBjdXJyZW50IGFwcHJvYWNoLgo+ID4KPiA+ID4KPiA+ID4KPiA+ID4g Pgo+ID4gPiA+ID4KPiA+ID4gPiA+IEFzIEkgbWVudGlvbmVkIG9uIGEgcHJldmlvdXMgcGF0Y2gs IHRoZXNlIG92ZXJsb2FkZWQgZnVuY3Rpb25zCj4gPiA+ID4gPiB0aGF0IG1pZ2h0IG9wZXJhdGUg b24gYSBwbGFuZSBvciBtaWdodCBvcGVyYXRlIG9uIGEgQ1JUQyBjYW4gYmUKPiA+ID4gPiA+IGEg Yml0IGNvbmZ1c2luZywgZXNwZWNpYWxseSB3aGVuIHdlIGhhdmUgbXVsdGktbmVzdGVkIHRlcm5h cnkKPiA+ID4gPiA+IG9wZXJhdG9ycyBsaWtlIHlvdQo+ID4gPiBkbyBiZWxvdy4KPiA+ID4gPgo+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gKyAqIGlmIHNjYWxlciBpcyBub3QgaW4gdXNlLgo+ID4gPiA+ ID4gPiArICogSXQgcmVzZXRzIHNjYWxlcl9pZCBpbiBwbGFuZSBvciBjcnRjCj4gPiA+ID4gPiA+ ICsgKiBUbyByZXF1ZXN0IGRldGFjaCBhIHNjYWxlciBmcm9tIGNydGMsIGNhbGwgcGxhbmUgYXMg TlVMTAo+ID4gPiA+ID4gPiArKi8gdm9pZCBza2xfZGV0YWNoX3NjYWxlcihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBkcm1fcGxhbmUKPiAqcGxhbmUpIHsKPiA+ID4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+ID4gPiA+ICsJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiA+ID4gPiA+ICsJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZTsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlOwo+ID4gPiA+ID4gPiArCWludCAqc2NhbGVyX2lkOwo+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ICsJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiA+ID4gPiA+ ICsJaW50ZWxfcGxhbmUgPSBwbGFuZSA/IHRvX2ludGVsX3BsYW5lKHBsYW5lKSA6IE5VTEw7Cj4g PiA+ID4gPiA+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2NydGMtPmNvbmZpZzsKPiA+ID4gPiA+ID4g KwlwbGFuZV9zdGF0ZSA9IHBsYW5lID8gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRl KSA6Cj4gPiA+ID4gPiA+ICtOVUxMOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJc2NhbGVy X2lkID0gcGxhbmUgPyAocGxhbmVfc3RhdGUgPyAmcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCA6Cj4g TlVMTCkgOgo+ID4gPiA+ID4gPiArCQkmY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl9p ZDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWlmICghc2NhbGVyX2lkIHx8IChzY2FsZXJf aWQgJiYgKnNjYWxlcl9pZCA8IDApKQo+ID4gPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwkvKiBpZiBzY2FsZXIgaXMgbm90IGluIHVzZSwgZnJlZSAqLwo+ID4g PiA+ID4gPiArCWlmICghY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbKnNjYWxlcl9p ZF0uaW5fdXNlKSB7Cj4gPiA+ID4gPiA+ICsJCUk5MTVfV1JJVEUoU0tMX1BTX0NUUkwoaW50ZWxf Y3J0Yy0+cGlwZSwKPiAoKnNjYWxlcl9pZCkpLCAwKTsKPiA+ID4gPiA+ID4gKwkJSTkxNV9XUklU RShTS0xfUFNfV0lOX1BPUyhpbnRlbF9jcnRjLT5waXBlLAo+ICgqc2NhbGVyX2lkKSksCj4gPiA+ ID4gPiAwKTsKPiA+ID4gPiA+ID4gKwkJSTkxNV9XUklURShTS0xfUFNfV0lOX1NaKGludGVsX2Ny dGMtPnBpcGUsCj4gKCpzY2FsZXJfaWQpKSwgMCk7Cj4gPiA+ID4gPiA+ICsJCURSTV9ERUJVR19L TVMoIkRldGFjaGVkIGFuZCBkaXNhYmxlZCBzY2FsZXIgaWQKPiAldS4ldQo+ID4gPiA+ID4gZnJv bSAlczolZFxuIiwKPiA+ID4gPiA+ID4gKwkJCWludGVsX2NydGMtPnBpcGUsICpzY2FsZXJfaWQs IHBsYW5lID8gIlBMQU5FIiA6Cj4gIkNSVEMiLAo+ID4gPiA+ID4gPiArCQkJcGxhbmUgPyBwbGFu ZS0+YmFzZS5pZCA6IGNydGMtPmJhc2UuaWQpOwo+ID4gPiA+ID4gPiArCQkqc2NhbGVyX2lkID0g LTE7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhpcyBjb25mdXNlcyBtZS4uLndoeSBhcmUgd2UgdXBk YXRpbmcgdGhlIHN0YXRlIGhlcmUgYXQgdGhlIGVuZAo+ID4gPiA+ID4gb2YgdGhlIGNvbW1pdCBz dGVwPyAgU3RhdGUgc2hvdWxkIGJlIGltbXV0YWJsZSBhdCB0aGlzIHBvaW50LCByaWdodD8KPiA+ ID4gPgo+ID4gPiA+IEFzIEkgZXhwbGFpbmVkIGFib3ZlLCB2YWxpZCBzY2FsZXJfaWQgaXMgcmVx dWlyZWQuIFRoZW4gc2NhbGVyX2lkCj4gPiA+ID4gY2FuIGJlIHNldCB0byAtCj4gPiA+IDEuCj4g PiA+Cj4gPiA+IFRoZSBwcm9ibGVtIGlzIHRoYXQgd2UncmUgdWx0aW1hdGVseSB1cGRhdGluZyBj cnRjX3N0YXRlIGZyb20gdGhlCj4gPiA+ICdjb21taXQnIHN0ZXAgaGVyZSwgd2hpY2ggdmlvbGF0 ZXMgdGhlIGF0b21pYyBkZXNpZ24uICBTdGF0ZQo+ID4gPiBzdHJ1Y3R1cmVzIGFyZSBzdXBwb3Nl ZCB0byBiZSBpbW11dGFibGUgZHVyaW5nIHRoZSBjb21taXQgcGhhc2UKPiAKPiBUaGlzIGlzIHN0 aWxsIGEgcHJvYmxlbTsgd2UgcmVhbGx5IGNhbid0IGdvIGJhY2sgYW5kIHVwZGF0ZSB0aGUgc3Rh dGUgc3RydWN0dXJlIGluIGEKPiBmdW5jdGlvbiB0aGF0IGlzIHVsdGltYXRlbHkgY2FsbGVkIGFz IHBhcnQgb2YgdGhlICdjb21taXQnIHBoYXNlLiAgQWxzbyBrZWVwIGluCj4gbWluZCB0aGF0IGxv Y2tzIG1heSBoYXZlIGFscmVhZHkgYmVlbiBkcm9wcGVkIGJlZm9yZSB3ZSBzdGFydCB0aGUgY29t bWl0Cj4gcGhhc2UgKGZvciBub24tYmxvY2tpbmcgZmxpcHMgdGhhdCBydW4gaW4gYSB3cSB0aHJl YWQpLgo+IAo+IEknbSBzdGlsbCB1bmNvbnZpbmNlZCBvbiB0aGUgbmVlZCBmb3IgdGhlIHdob2xl ICJwcm9ncmFtIHNjYWxlciByZWdpc3RlcnMgd2l0aAo+IHRoZWlyIGN1cnJlbnQgb3duZXIiIGRl c2lnbi4gIEFib3ZlIHlvdSBzYWlkOgo+IAo+ID4gT0suIE5vdyBJIHVuZGVyc3RhbmQgd2hhdCB5 b3UgbWVhbnQuCj4gPiBJbiBlYXJseSB2ZXJzaW9ucywgSSB0cmllZCBzb21ldGhpbmcgc2ltaWxh ciwgYnV0IHRoYXQgYXBwcm9hY2gKPiA+IHJlcXVpcmVkIGJhY2sgcG9pbnRlcnMgZnJvbSBzY2Fs ZXIgdG8gaXRzIG93bmVyIHRvIHByb2dyYW0gc2NhbGVyCj4gPiBvdXRwdXQgd2luZG93IGNvb3Jk aW5hdGVzLgo+ID4gQW5kIGl0IGFsc28gcmVxdWlyZXMgbWFuYWdpbmcgYmFjayBwb2ludGVyIGFz c2lnbm1lbnQgYW5kIHJlc2V0dGluZy4KPiA+IEl0IGlzIGNlcnRhaW5seSBkb2FibGUgYnV0IEkg ZGlkbid0IHNlZSBhbnkgYWR2YW50YWdlIHRoYW4gY3VycmVudCBhcHByb2FjaC4KPiAKPiBXaGVu IHdlIGFzc2lnbiBhIHNjYWxlciB0byBhIHBsYW5lIG9yIGEgQ1JUQyBpbiB0aGUgY2hlY2sgcGhh c2UsIHdoeSBjYW4ndCB3ZQo+IGp1c3QgcHJlLWNhbGN1bGF0ZSB0aGUgYWN0dWFsIHJlZ2lzdGVy IHZhbHVlcyBsaWtlCj4gCj4gICAgICAgICBjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVy c1tpXS5jdHJsCj4gICAgICAgICBjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tpXS53 aW5fcG9zCj4gICAgICAgICBjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tpXS53aW5f c3oKPiAKPiBhdCB0aGF0IHBvaW50IHJhdGhlciB0aGFuIHRyeWluZyB0byBtYWludGFpbiBiYWNr cG9pbnRlcnMgdG8gcGxhbmVzIG9yIGNydGNzPwo+IFRoZW4gYXQgdGhlIGVuZCBvZiB5b3VyIENS VEMgY29tbWl0IHlvdSBjb3VsZCBqdXN0IGRvIHRoZSBlcXVpdmFsZW50IG9mOgo+IAo+ICAgICAg ICAgZm9yIGVhY2ggc2NhbGVyIHsKPiAgICAgICAgICAgICAgICAgSTkxNV9XUklURShTS0xfUFNf Q1RSTFtpXSwgc3RhdGUtPmN0cmwpOwo+ICAgICAgICAgICAgICAgICBJOTE1X1dSSVRFKFNLTF9Q U19XSU5fUE9TW2ldLCBzdGF0ZS0+d2luX3Bvcyk7Cj4gICAgICAgICAgICAgICAgIEk5MTVfV1JJ VEUoU0tMX1BTX1dJTl9TWltpXSwgc3RhdGUtPndpbl9zeik7Cj4gICAgICAgICB9Cj4gCj4gVGhp cyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciB0aGUgd2hvbGUgJ2RldGFjaCcgY29uY2VwdCwgYXZv aWRzIHRoZSBuZWVkIGZvcgo+IGJhY2twb2ludGVycyB0byB0aGUgYWN0dWFsIHBsYW5lL2NydGMg d2hpY2ggeW91IHdlcmUgd29ycmllZCBhYm91dCwgYW5kIGJyaW5ncwo+IGFsbCB0aGUgcHJvZ3Jh bW1pbmcgaW50byBvbmUgcGxhY2UgcmF0aGVyIHRoYW4gc3ByZWFkaW5nIGl0IGFjcm9zcyBhIGJ1 bmNoIG9mCj4gZGlmZmVyZW50IHBsYW5lcy9jcnRjIGZ1bmN0aW9ucywgd2hpY2ggaXMgYSBsb3Qg bW9yZSBjb21wbGljYXRlZCBsb2dpYy13aXNlLgo+IAo+IEZlZWwgZnJlZSB0byB0ZWxsIG1lIEkn bSBzdHVwaWQgaWYgSSdtIG92ZXJsb29raW5nIHNvbWUgb2J2aW91cyBzdHVtYmxpbmcgYmxvY2sK PiB3aXRoIHRoaXMgYXBwcm9hY2guICA6LSkKCkkgaGFkIGEgY2hhdCB3aXRoIE1hdHQgYW5kIGhp cyBjb25jZXJuIGlzIHdoZW4gc3RhdGUgaXMgZHVwbGljYXRlZCBmb3IgYSAKc3Vic2VxdWVudCBm bGlwIHdoaWxlIGEgbm9uLWJsb2NraW5nIGZsaXAgaXMgc3RhZ2VkIGJ1dCBub3QgY29tbWl0dGVk LgpUaGlzIGlzbid0IGFuIGlzc3VlIGJlY2F1c2UgdGhlIHN0YXRlIGluIGNydGMgaXMgc3RpbGwg d2hhdGV2ZXIgcHJldmlvdXNseSAKY29tbWl0dGVkIHN0YXRlIGFuZCBub3QgdW5jb21taXR0ZWQg YnV0IHN0YWdlZCBzdGF0ZS4KCkFueXdheSwgb25jZSBmdWxsIGF0b21pYyBjcnRjIGNoZWNrL2Nv bW1pdCBpcyBpbiBwbGFjZSBJIGNhbiByZXZpc2l0IAphbmQgbWFrZSBhbnkgbW9kcyBpZiBhYm92 ZSB1cGRhdGUgaXMgYW4gaXNzdWUuIEZvciBub3cgSSB0aGluayBpdCBpcyBmaW5lLgoKPiAKPiAK PiBNYXR0Cj4gCj4gCj4gLS0KPiBNYXR0IFJvcGVyCj4gR3JhcGhpY3MgU29mdHdhcmUgRW5naW5l ZXIKPiBJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKPiBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICg5MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==