From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lis, Tomasz" Subject: Re: [PATCH v6] drm/i915/icl: Preempt-to-idle support in execlists. Date: Mon, 17 Dec 2018 16:21:37 +0100 Message-ID: References: <1522163879-10837-1-git-send-email-tomasz.lis@intel.com> <1541783933-9045-1-git-send-email-tomasz.lis@intel.com> <3f99a0a4-9efc-8b12-eade-5c9ca1a847ab@linux.intel.com> <154478585745.4793.16192973704863853981@jlahtine-desk.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 75F9C6E520 for ; Mon, 17 Dec 2018 15:21:40 +0000 (UTC) In-Reply-To: <154478585745.4793.16192973704863853981@jlahtine-desk.ger.corp.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: Joonas Lahtinen , Tvrtko Ursulin , intel-gfx@lists.freedesktop.org Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMDE4LTEyLTE0IDEyOjEwLCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gUXVvdGluZyBU dnJ0a28gVXJzdWxpbiAoMjAxOC0xMi0xMCAxNzo0MDozNCkKPj4gT24gMDkvMTEvMjAxOCAxNzox OCwgVG9tYXN6IExpcyB3cm90ZToKPj4+IFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgb2YgcHJlZW1w dC10by1pZGxlIHJlcXVlc3RpbmcgYnkgc2V0dGluZyBhIHByb3Blcgo+Pj4gYml0IHdpdGhpbiBF eGVjbGlzdCBDb250cm9sIFJlZ2lzdGVyLCBhbmQgcmVjZWl2aW5nIHByZWVtcHRpb24gcmVzdWx0 IGZyb20KPj4+IENvbnRleHQgU3RhdHVzIEJ1ZmZlci4KPj4+Cj4+PiBQcmVlbXB0aW9uIGluIHBy ZXZpb3VzIGdlbnMgcmVxdWlyZWQgYSBzcGVjaWFsIGJhdGNoIGJ1ZmZlciB0byBiZSBleGVjdXRl ZCwKPj4+IHNvIHRoZSBDb21tYW5kIFN0cmVhbWVyIG5ldmVyIHByZWVtcHRlZCB0byBpZGxlIGRp cmVjdGx5LiBJbiBJY2VsYWtlIGl0IGlzCj4+PiBwb3NzaWJsZSwgYXMgdGhlcmUgaXMgYSBoYXJk d2FyZSBtZWNoYW5pc20gdG8gaW5mb3JtIHRoZSBrZXJuZWwgYWJvdXQKPj4+IHN0YXR1cyBvZiB0 aGUgcHJlZW1wdGlvbiByZXF1ZXN0Lgo+Pj4KPj4+IFRoaXMgcGF0Y2ggZG9lcyBub3QgY292ZXIg dXNpbmcgdGhlIG5ldyBwcmVlbXB0aW9uIG1lY2hhbmlzbSB3aGVuIEd1QyBpcwo+Pj4gYWN0aXZl Lgo+Pj4KPj4+IFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyBuZXcgcHJlZW1wdGlvbiBwYXRoIGlzIHRo YXQgb25lIGxlc3MgY29udGV4dCBzd2l0Y2ggaXMKPj4+IG5lZWRlZCwgYW5kIHJldHVybmluZyBp bmZvcm1hdGlvbiBhYm91dCBwcmVlbXBpb24gYmVpbmcgY29tcGxldGUgaXMgcmVjZWl2ZWQKPj4+ IGVhcmxpZXIuIFRoaXMgbGVhZHMgdG8gc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQgaW4gb3VyIElH VCBsYXRlbmN5IHRlc3QuCj4+Pgo+Pj4gVGVzdCBwZXJmb3JtZWQ6IGBnZW1fZXhlY19sYXRlbmN5 IC0tcnVuLXN1YnRlc3QgcmVuZGVyLXByZWVtcHRpb25gLCBleGVjdXRlZAo+Pj4gMTAwIHRpbWVz LCBvbiB0aGUgc2FtZSBwbGF0Zm9ybSwgc2FtZSBrZXJuZWwsIHdpdGhvdXQgYW5kIHdpdGggdGhp cyBwYXRjaC4KPj4+IFRoZW4gdGFrZW4gYXZlcmFnZSBvZiB0aGUgZXhlY3V0aW9uIGxhdGVuY3kg dGltZXM6Cj4+Pgo+Pj4gc3ViY2FzZSAgICAgICAgICAgICAgIG9sZCBwcmVlbXB0LiAgICBpY2wg cHJlZW1wdC4KPj4+IHJlbmRlci1yZW5kZXIgODUzLjIwMzYgICAgICAgIDg0MC4xMTc2Cj4+PiBy ZW5kZXItYnNkICAgIDIzMjguODcwOCAgICAgICAyMDgzLjI1NzYKPj4+IHJlbmRlci1ibHQgICAg MjA4MC4xNTAxICAgICAgIDE4NTIuMDc5Mgo+Pj4gcmVuZGVyLXZlYm94ICAxNTUzLjUxMzQgICAg ICAgMTQyOC43NjIKPj4+Cj4+PiBJbXByb3ZlbWVudCBvYnNlcnZlZDoKPj4+Cj4+PiBzdWJjYXNl ICAgICAgICAgICAgICAgaW1wcm92ZW1lbnQKPj4+IHJlbmRlci1yZW5kZXIgIDEuNTMlCj4+PiBy ZW5kZXItYnNkICAgIDEwLjU1JQo+Pj4gcmVuZGVyLWJsdCAgICAxMC45NiUKPj4+IHJlbmRlci12 ZWJveCAgIDguMDMlCj4+IFdobyBjYW4gZXhwbGFpbiB3aGF0IGRvIHRoZSBwYXJ0cyBvdGhlciB0 aGFuIHJlbmRlci1yZW5kZXIgbWVhbj8gQXQKPj4gbGVhc3QgSSBjYW4gbWFrZSBzZW5zZSBvZiBy ZW5kZXItcmVuZGVyIC0gbWVhc3VyZSBob3cgbG9uZyBpdCB0YWtlcyBmb3IKPj4gb25lIGNvbnRl eHQgdG8gcHJlZW1wdCBhbm90aGVyLCBidXQgcmVuZGVyLSRvdGhlciBkcmF3cyBhIGJsYW5rIGZv ciBtZS4KPj4gSG93IGFyZSBlbmdpbmVzIHByZS1lbXB0aW5nIG9uZSBhbm90aGVyPwpUaGVzZSBj YXNlcyBzdWJtaXQgbG93IHByaW9yaXR5IHNwaW4gYnVmZmVyIHRvICdyZW5kZXInIHJpbmcsIGFu ZCB0aGVuIApvbiBoaWdoIHByaW9yaXR5IGNvbnRleHQgdGhleSBzdWJtaXQgdHdvIGJ1ZmZlcnMg d2hpY2ggb25seSB3cml0ZSAKY3VycmVudCB0aW1lc3RhbXAgdG8gYSBrbm93biBsb2NhdGlvbjog Zmlyc3Qgb25lIHRvICdyZW5kZXInLCBhbmQgc2Vjb25kIAp0byB0aGUgb3RoZXIgZW5naW5lLgpT dWJtaXNzaW9uIHRvIHRoZSBvdGhlciBlbmdpbmUgd2l0aCB0aGUgc2FtZSBjb250ZXh0IG1ha2Vz IHN1cmUgdGhhdCAKJ3JlbmRlcicgZ2V0cyBiYWNrIHRvIHNwaW4gYnVmZmVyIGFmdGVyIGVhY2gg aXRlcmF0aW9uLiBUaGUgdHdvIGhpZ2ggCnByaW9yaXR5IHRhc2tzIGFyZSBub3QgcGFyYWxsZWxp emVkLCBiZWNhdXNlIHRoZXkgYW5ub3VuY2UgdGhleSB3cml0ZSB0byAKdGhlIHNhbWUgb2JqZWN0 LgoKVGhlIHRpbWUgdGFrZW4gdG8gZG8gYWxsIG9wZXJhdGlvbnMgaW4gb25lIGl0ZXJhdGlvbiBp cyB0aGVuIGRpc3BsYXllZC4gClNvIHRoZSB0aW1lIGluY2x1ZGVzOgotIHByZWVtcHRpbmcgc3Bp biBidWZmZXIKLSBleGVjdXRpbmcgdGltZXN0YW1wIHdyaXRlIGZyb20gd2l0aGluICdyZW5kZXIn Ci0gZXhlY3V0aW5nIHRpbWVzdGFtcCB3cml0ZSBmcm9tIHdpdGhpbiBvdGhlciByaW5nICh3aGls ZSBhdCB0aGUgc2FtZSAKdGltZSwgc3BpbiBidWZmZXIgZ2V0cyBiYWNrIHRvIGV4ZWN1dGlvbiBv biByZW5kZXIpCgpJZiBJJ20gbm90IG1pc3Rha2VuIHdpdGggdGhlIGFib3ZlLCBpdCBsb29rcyBs aWtlIHRoZSAncmVuZGVyLXJlbmRlcicgCmNhc2UgaXMgdGhlIHdvcnN0IG9uZSB0byBtZWFzdXJl IHBlcmZvcm1hbmNlIGluY3JlYXNlIC0gaWYgYm90aCBoaWdoIApwcmlvcml0eSB0YXNrcyBhcmUg ZXhlY3V0ZWQgb24gdGhlIHNhbWUgZW5naW5lLCB0aGVyZSdzIGEgY29uc2lkZXJhYmxlIApjaGFu Y2UgdGhhdCB0aGUgaGFyZHdhcmUgd2lsbCBnZXQgc3RyYWlnaHQgdG8gYW5vdGhlciBwYWlyIG9m IHRoZW0sIAp3aXRob3V0IGdvaW5nIHRob3VnaCBzcGluIGJ1ZmZlciBhbmQgcHJlZW1wdGluZyBp dC4KCi1Ub21hc3oKCj4+Cj4+IEJ1dCBhbnl3YXksIGV2ZW4gaWYgb25seSB0aGUgMS41MyUgaW1w cm92ZW1lbnQgaXMgdGhlIHJlYWwgb25lLCBGV0lXCj4+IHRoYXQncyBJIHRoaW5rIGdvb2QgZW5v dWdoIHRvIGp1c3RpZnkgdGhlIHBhdGNoLiBJdCBpcyBzdWZmaWNpZW50bHkKPj4gc21hbGwgYW5k IGNvbnRhaW5lZCB0aGF0IEkgZG9uJ3Qgc2VlIGEgcHJvYmxlbS4gU286Cj4+Cj4+IEFja2VkLWJ5 OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IEFjY29yZGluZyB0 byBDaHJpcywgdGhlIGJhc2VsaW5lIG1lYXN1cmVtZW50cyBhcmUgb2ZmIGJ5IGEgZGVjYWRlIG9y IHNvCj4gY29tcGFyZWQgdG8gd2hlcmUgdGhleSBzaG91bGQgYmUuIFRoaXMgbWlnaHQgYmUgYXR0 cmlidXRlZCB0byBleGVjdXRpb24KPiBvbiBmcmVxdWVuY3kgbG9ja2VkIHBhcnRzPwo+Cj4gV291 bGQgaXQgYmUgd29ydGh5IHRvIHJlcGVhdCB0aGUgbnVtYmVycyB3aXRoIHNvbWUgdW5sb2NrZWQg cGFydHM/Cj4KPiBSZWdhcmRzLCBKb29uYXMKPgo+PiBSZWdhcmRzLAo+Pgo+PiBUdnJ0a28KPj4K Pj4+IHYyOiBBZGRlZCBuZWVkc19wcmVlbXB0X2NvbnRleHQoKSBjaGFuZ2Ugc28gdGhhdCBpdCBp cyBub3QgY3JlYXRlZCB3aGVuCj4+PiAgICAgICBwcmVlbXB0LXRvLWlkbGUgaXMgc3VwcG9ydGVk LiAoQ2hyaXMpCj4+PiAgICAgICBVcGRhdGVkIHNldHRpbmcgSFdBQ0sgZmxhZyBzbyB0aGF0IGl0 IGlzIGNsZWFyZWQgYWZ0ZXIKPj4+ICAgICAgIHByZWVtcHQtdG8tZGxlLiAoQ2hyaXMsIERhbmll bGUpCj4+PiAgICAgICBVcGRhdGVkIHRvIHVzZSBJOTE1X0VOR0lORV9IQVNfUFJFRU1QVElPTiBm bGFnLiAoQ2hyaXMpCj4+Pgo+Pj4gdjM6IEZpeGVkIG5lZWRzX3ByZWVtcHRfY29udGV4dCgpIGNo YW5nZS4gKENocmlzKQo+Pj4gICAgICAgTWVyZ2VkIHByZWVtcHRpb24gdHJpZ2dlciBmdW5jdGlv bnMgdG8gb25lLiAoQ2hyaXMpCj4+PiAgICAgICBGaXhlZCBjb255ZXh0IHN0YXRlIHRvbm90IGFz c3VtZSBDT01QTEVURURfTUFTSyBhZnRlciBwcmVlbXB0aW9uLAo+Pj4gICAgICAgc2luY2UgaWRs ZS10by1pZGxlIGNhc2Ugd2lsbCBub3QgaGF2ZSBpdCBzZXQuCj4+Pgo+Pj4gdjQ6IFNpbXBsaWZp ZWQgbmVlZHNfcHJlZW1wdF9jb250ZXh0KCkgY2hhbmdlLiAoRGFuaWVsZSkKPj4+ICAgICAgIFJl bW92ZWQgY2xlYXJpbmcgSFdBQ0sgZmxhZyBpbiBpZGxlLXRvLWlkbGUgcHJlZW1wdC4gKERhbmll bGUpCj4+Pgo+Pj4gdjU6IFJlbmFtZWQgaW5qZWN0X3ByZWVtcHRfY29udGV4dCgpLiAoRGFuaWVs ZSkKPj4+ICAgICAgIFJlbW92ZWQgZHVwbGljYXRlZCBHRU1fQlVHX09OKCkgb24gSFdBQ0sgKERh bmllbGUpCj4+Pgo+Pj4gdjY6IEFkZGVkIHBlcmZvcm1hbmNlIHRlc3QgcmVzdWx0cy4KPj4+Cj4+ PiBCc3BlYzogMTg5MjIKPj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+Cj4+PiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Cj4+PiBDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1 cmlvQGludGVsLmNvbT4KPj4+IENjOiBNaWNoYWwgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tp QGludGVsLmNvbT4KPj4+IENjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNv bT4KPj4+IFJldmlld2VkLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFv bG9zcHVyaW9AaW50ZWwuY29tPgo+Pj4gU2lnbmVkLW9mZi1ieTogVG9tYXN6IExpcyA8dG9tYXN6 Lmxpc0BpbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICAgfCAgIDIgKwo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jICB8ICAgMyArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w Y2kuYyAgICAgICAgICB8ICAgMyArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGV2aWNlX2luZm8uaCB8ICAgMSArCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KPj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgfCAgIDEgKwo+Pj4gICAg NiBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPj4+Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IGluZGV4IDA4ZDI1YWEuLmQyY2M5ZjEgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiBAQCAtMjU3OSw2ICsyNTc5LDggQEAgaW50 ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiAgICAg ICAgICAgICAgICAoKGRldl9wcml2KS0+aW5mby5oYXNfbG9naWNhbF9yaW5nX2Vsc3EpCj4+PiAg ICAjZGVmaW5lIEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElPTihkZXZfcHJpdikgXAo+Pj4gICAg ICAgICAgICAgICAgKChkZXZfcHJpdiktPmluZm8uaGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9u KQo+Pj4gKyNkZWZpbmUgSEFTX0hXX1BSRUVNUFRfVE9fSURMRShkZXZfcHJpdikgXAo+Pj4gKyAg ICAgICAgICAgICAoKGRldl9wcml2KS0+aW5mby5oYXNfaHdfcHJlZW1wdF90b19pZGxlKQo+Pj4g ICAgCj4+PiAgICAjZGVmaW5lIEhBU19FWEVDTElTVFMoZGV2X3ByaXYpIEhBU19MT0dJQ0FMX1JJ TkdfQ09OVEVYVFMoZGV2X3ByaXYpCj4+PiAgICAKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKPj4+IGluZGV4IGI5Nzk2M2QuLjEwYjFkNjEgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+Pj4gQEAgLTUyOSw3ICs1MjksOCBA QCBzdGF0aWMgdm9pZCBpbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+Pj4gICAgCj4+PiAgICBzdGF0aWMgYm9vbCBuZWVkc19wcmVlbXB0X2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4+PiAgICB7Cj4+PiAtICAgICByZXR1cm4gSEFTX0xP R0lDQUxfUklOR19QUkVFTVBUSU9OKGk5MTUpOwo+Pj4gKyAgICAgcmV0dXJuIEhBU19MT0dJQ0FM X1JJTkdfUFJFRU1QVElPTihpOTE1KSAmJgo+Pj4gKyAgICAgICAgICAgICFIQVNfSFdfUFJFRU1Q VF9UT19JRExFKGk5MTUpOwo+Pj4gICAgfQo+Pj4gICAgCj4+PiAgICBpbnQgaTkxNV9nZW1fY29u dGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGNpLmMKPj4+IGluZGV4IDRjY2FiODMuLjgyMTI1Y2YgMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BjaS5jCj4+PiBAQCAtNjAwLDcgKzYwMCw4IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2Fubm9ubGFrZV9pbmZvID0gewo+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICBUUkFOU0NPREVSX0RTSTBfT0ZGU0VULCBUUkFOU0NPREVS X0RTSTFfT0ZGU0VUfSwgXAo+Pj4gICAgICAgIEdFTigxMSksIFwKPj4+ICAgICAgICAuZGRiX3Np emUgPSAyMDQ4LCBcCj4+PiAtICAgICAuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMQo+Pj4gKyAg ICAgLmhhc19sb2dpY2FsX3JpbmdfZWxzcSA9IDEsIFwKPj4+ICsgICAgIC5oYXNfaHdfcHJlZW1w dF90b19pZGxlID0gMQo+Pj4gICAgCj4+PiAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2ljZWxha2VfMTFfaW5mbyA9IHsKPj4+ICAgICAgICBHRU4xMV9GRUFU VVJFUywKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2Vf aW5mby5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+Pj4gaW5k ZXggODZjZTFkYi4uYTJlZTI3OCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmgKPj4+IEBAIC0xMDQsNiArMTA0LDcgQEAgZW51bSBpbnRlbF9wcGd0dCB7 Cj4+PiAgICAgICAgZnVuYyhoYXNfbG9naWNhbF9yaW5nX2NvbnRleHRzKTsgXAo+Pj4gICAgICAg IGZ1bmMoaGFzX2xvZ2ljYWxfcmluZ19lbHNxKTsgXAo+Pj4gICAgICAgIGZ1bmMoaGFzX2xvZ2lj YWxfcmluZ19wcmVlbXB0aW9uKTsgXAo+Pj4gKyAgICAgZnVuYyhoYXNfaHdfcHJlZW1wdF90b19p ZGxlKTsgXAo+Pj4gICAgICAgIGZ1bmMoaGFzX292ZXJsYXkpOyBcCj4+PiAgICAgICAgZnVuYyho YXNfcG9vbGVkX2V1KTsgXAo+Pj4gICAgICAgIGZ1bmMoaGFzX3Bzcik7IFwKPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4+PiBpbmRleCAwOGZkOWIxLi4yNmI3MDYyIDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+PiBAQCAtMTU1LDYgKzE1NSw3IEBACj4+PiAgICAjZGVm aW5lIEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSAoMSA8PCAzKQo+Pj4gICAgI2RlZmluZSBH RU44X0NUWF9TVEFUVVNfQ09NUExFVEUgICAgKDEgPDwgNCkKPj4+ICAgICNkZWZpbmUgR0VOOF9D VFhfU1RBVFVTX0xJVEVfUkVTVE9SRSAgICAgICAgKDEgPDwgMTUpCj4+PiArI2RlZmluZSBHRU4x MV9DVFhfU1RBVFVTX1BSRUVNUFRfSURMRSAgICAgICAgKDEgPDwgMjkpCj4+PiAgICAKPj4+ICAg ICNkZWZpbmUgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLIFwKPj4+ICAgICAgICAgKEdF TjhfQ1RYX1NUQVRVU19DT01QTEVURSB8IEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpCj4+PiBA QCAtNTAwLDI5ICs1MDEsNDkgQEAgc3RhdGljIHZvaWQgcG9ydF9hc3NpZ24oc3RydWN0IGV4ZWNs aXN0X3BvcnQgKnBvcnQsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+Pj4gICAgICAgIHBvcnRf c2V0KHBvcnQsIHBvcnRfcGFjayhpOTE1X3JlcXVlc3RfZ2V0KHJxKSwgcG9ydF9jb3VudChwb3J0 KSkpOwo+Pj4gICAgfQo+Pj4gICAgCj4+PiAtc3RhdGljIHZvaWQgaW5qZWN0X3ByZWVtcHRfY29u dGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+PiArc3RhdGljIHZvaWQgZXhl Y2xpc3Rfc2VuZF9wcmVlbXB0X3RvX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+Pj4gICAgewo+Pj4gICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVj bGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4+PiAtICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UgPQo+Pj4gLSAgICAgICAgICAgICB0b19pbnRlbF9jb250ZXh0KGVuZ2luZS0+aTkxNS0+ cHJlZW1wdF9jb250ZXh0LCBlbmdpbmUpOwo+Pj4gLSAgICAgdW5zaWduZWQgaW50IG47Cj4+PiAr ICAgICBHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+Pj4gICAgCj4+PiAtICAgICBH RU1fQlVHX09OKGV4ZWNsaXN0cy0+cHJlZW1wdF9jb21wbGV0ZV9zdGF0dXMgIT0KPj4+IC0gICAg ICAgICAgICAgICAgdXBwZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2MpKTsKPj4+ICsgICAgIGlmIChI QVNfSFdfUFJFRU1QVF9UT19JRExFKGVuZ2luZS0+aTkxNSkpIHsKPj4+ICsgICAgICAgICAgICAg LyoKPj4+ICsgICAgICAgICAgICAgICogaGFyZHdhcmUgd2hpY2ggSEFTX0hXX1BSRUVNUFRfVE9f SURMRSgpLCBhbHdheXMgYWxzbwo+Pj4gKyAgICAgICAgICAgICAgKiBIQVNfTE9HSUNBTF9SSU5H X0VMU1EoKSwgc28gd2UgY2FuIGFzc3VtZSBjdHJsX3JlZyBpcyBzZXQKPj4+ICsgICAgICAgICAg ICAgICovCj4+PiArICAgICAgICAgICAgIEdFTV9CVUdfT04oZXhlY2xpc3RzLT5jdHJsX3JlZyA9 PSBOVUxMKTsKPj4+ICAgIAo+Pj4gLSAgICAgLyoKPj4+IC0gICAgICAqIFN3aXRjaCB0byBvdXIg ZW1wdHkgcHJlZW1wdCBjb250ZXh0IHNvCj4+PiAtICAgICAgKiB0aGUgc3RhdGUgb2YgdGhlIEdQ VSBpcyBrbm93biAoaWRsZSkuCj4+PiAtICAgICAgKi8KPj4+IC0gICAgIEdFTV9UUkFDRSgiJXNc biIsIGVuZ2luZS0+bmFtZSk7Cj4+PiAtICAgICBmb3IgKG4gPSBleGVjbGlzdHNfbnVtX3BvcnRz KGV4ZWNsaXN0cyk7IC0tbjsgKQo+Pj4gLSAgICAgICAgICAgICB3cml0ZV9kZXNjKGV4ZWNsaXN0 cywgMCwgbik7Cj4+PiArICAgICAgICAgICAgIC8qCj4+PiArICAgICAgICAgICAgICAqIElmIHdl IGhhdmUgaGFyZHdhcmUgcHJlZW1wdC10by1pZGxlLCB3ZSBkbyBub3QgbmVlZCB0bwo+Pj4gKyAg ICAgICAgICAgICAgKiBpbmplY3QgYW55IGpvYiB0byB0aGUgaGFyZHdhcmUuIFdlIG9ubHkgc2V0 IGEgZmxhZy4KPj4+ICsgICAgICAgICAgICAgICovCj4+PiArICAgICAgICAgICAgIHdyaXRlbChF TF9DVFJMX1BSRUVNUFRfVE9fSURMRSwgZXhlY2xpc3RzLT5jdHJsX3JlZyk7Cj4+PiArICAgICB9 IGVsc2Ugewo+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPQo+Pj4g KyAgICAgICAgICAgICAgICAgICAgIHRvX2ludGVsX2NvbnRleHQoZW5naW5lLT5pOTE1LT5wcmVl bXB0X2NvbnRleHQsIGVuZ2luZSk7Cj4+PiArICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuOwo+ Pj4gICAgCj4+PiAtICAgICB3cml0ZV9kZXNjKGV4ZWNsaXN0cywgY2UtPmxyY19kZXNjLCBuKTsK Pj4+ICsgICAgICAgICAgICAgR0VNX0JVR19PTihleGVjbGlzdHMtPnByZWVtcHRfY29tcGxldGVf c3RhdHVzICE9Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJfMzJfYml0cyhjZS0+ bHJjX2Rlc2MpKTsKPj4+ICsgICAgICAgICAgICAgR0VNX0JVR19PTigoY2UtPmxyY19yZWdfc3Rh dGVbQ1RYX0NPTlRFWFRfQ09OVFJPTCArIDFdICYKPj4+ICsgICAgICAgICAgICAgICAgICAgICBf TUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxfRU5HSU5FX0NUWF9SRVNUT1JFX0lOSElCSVQgfAo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVFhfQ1RSTF9FTkdJ TkVfQ1RYX1NBVkVfSU5ISUJJVCkpICE9Cj4+PiArICAgICAgICAgICAgICAgICAgICAgX01BU0tF RF9CSVRfRU5BQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUIHwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1RYX0NUUkxfRU5HSU5FX0NU WF9TQVZFX0lOSElCSVQpKTsKPj4+ICAgIAo+Pj4gLSAgICAgLyogd2UgbmVlZCB0byBtYW51YWxs eSBsb2FkIHRoZSBzdWJtaXQgcXVldWUgKi8KPj4+IC0gICAgIGlmIChleGVjbGlzdHMtPmN0cmxf cmVnKQo+Pj4gLSAgICAgICAgICAgICB3cml0ZWwoRUxfQ1RSTF9MT0FELCBleGVjbGlzdHMtPmN0 cmxfcmVnKTsKPj4+ICsgICAgICAgICAgICAgLyoKPj4+ICsgICAgICAgICAgICAgICogU3dpdGNo IHRvIG91ciBlbXB0eSBwcmVlbXB0IGNvbnRleHQgc28KPj4+ICsgICAgICAgICAgICAgICogdGhl IHN0YXRlIG9mIHRoZSBHUFUgaXMga25vd24gKGlkbGUpLgo+Pj4gKyAgICAgICAgICAgICAgKi8K Pj4+ICsgICAgICAgICAgICAgZm9yIChuID0gZXhlY2xpc3RzX251bV9wb3J0cyhleGVjbGlzdHMp OyAtLW47ICkKPj4+ICsgICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZXNjKGV4ZWNsaXN0cywg MCwgbik7Cj4+PiArCj4+PiArICAgICAgICAgICAgIHdyaXRlX2Rlc2MoZXhlY2xpc3RzLCBjZS0+ bHJjX2Rlc2MsIG4pOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAvKiB3ZSBuZWVkIHRvIG1hbnVh bGx5IGxvYWQgdGhlIHN1Ym1pdCBxdWV1ZSAqLwo+Pj4gKyAgICAgICAgICAgICBpZiAoZXhlY2xp c3RzLT5jdHJsX3JlZykKPj4+ICsgICAgICAgICAgICAgICAgICAgICB3cml0ZWwoRUxfQ1RSTF9M T0FELCBleGVjbGlzdHMtPmN0cmxfcmVnKTsKPj4+ICsgICAgIH0KPj4+ICAgIAo+Pj4gICAgICAg IGV4ZWNsaXN0c19jbGVhcl9hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX0hXQUNL KTsKPj4+ICAgICAgICBleGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19B Q1RJVkVfUFJFRU1QVCk7Cj4+PiBAQCAtNTk1LDcgKzYxNiw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4gICAgCj4+PiAgICAgICAgICAgICAgICBpZiAobmVl ZF9wcmVlbXB0KGVuZ2luZSwgbGFzdCwgZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eSkpIHsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICBpbmplY3RfcHJlZW1wdF9jb250ZXh0KGVuZ2luZSk7Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgZXhlY2xpc3Rfc2VuZF9wcmVlbXB0X3RvX2lkbGUoZW5n aW5lKTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4gICAgICAgICAgICAg ICAgfQo+Pj4gICAgCj4+PiBAQCAtOTIyLDIyICs5NDMsNDMgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgIGV4ZWNsaXN0cy0+YWN0aXZlKTsKPj4+ICAgIAo+Pj4gICAgICAgICAgICAgICAg c3RhdHVzID0gYnVmWzIgKiBoZWFkXTsKPj4+IC0gICAgICAgICAgICAgaWYgKHN0YXR1cyAmIChH RU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUgfAo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAg IGV4ZWNsaXN0c19zZXRfYWN0aXZlKGV4ZWNsaXN0cywKPj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKPj4+IC0gICAg ICAgICAgICAgaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkKPj4+IC0g ICAgICAgICAgICAgICAgICAgICBleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywKPj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUNMSVNUU19B Q1RJVkVfSFdBQ0spOwo+Pj4gLQo+Pj4gLSAgICAgICAgICAgICBpZiAoIShzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfQ09NUExFVEVEX01BU0spKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwo+Pj4gKyAgICAgICAgICAgICAvKgo+Pj4gKyAgICAgICAgICAgICAgKiBDaGVjayBp ZiBwcmVlbXB0ZWQgZnJvbSBpZGxlIHRvIGlkbGUgZGlyZWN0bHkuCj4+PiArICAgICAgICAgICAg ICAqIFRoZSBTVEFUVVNfSURMRV9BQ1RJVkUgZmxhZyBpcyB1c2VkIHRvIG1hcmsKPj4+ICsgICAg ICAgICAgICAgICogc3VjaCB0cmFuc2l0aW9uLgo+Pj4gKyAgICAgICAgICAgICAgKi8KPj4+ICsg ICAgICAgICAgICAgaWYgKChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpICYm Cj4+PiArICAgICAgICAgICAgICAgICAgKHN0YXR1cyAmIEdFTjExX0NUWF9TVEFUVVNfUFJFRU1Q VF9JRExFKSkgewo+Pj4gICAgCj4+PiAtICAgICAgICAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBn ZXQgYSBDT01QTEVURUQgfCBJRExFX0FDVElWRSEgKi8KPj4+IC0gICAgICAgICAgICAgR0VNX0JV R19PTihzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpOwo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIC8qCj4+PiArICAgICAgICAgICAgICAgICAgICAgICogV2UgY291bGQgbm90 IGhhdmUgQ09NUExFVEVEIGFueXRoaW5nCj4+PiArICAgICAgICAgICAgICAgICAgICAgICogaWYg d2Ugd2VyZSBpZGxlIGJlZm9yZSBwcmVlbXB0aW9uLgo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAqLwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIEdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9D VFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLKTsKPj4+ICsgICAgICAgICAgICAgfSBlbHNlIHsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYgKEdFTjhfQ1RYX1NUQVRVU19JRExF X0FDVElWRSB8Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRU44X0NU WF9TVEFUVVNfUFJFRU1QVEVEKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 ZWNsaXN0c19zZXRfYWN0aXZlKGV4ZWNsaXN0cywKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUNMSVNUU19BQ1RJVkVfSFdBQ0spOwo+Pj4g Kwo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNf QUNUSVZFX0lETEUpCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjbGlzdHNf Y2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9IV0FDSyk7Cj4+PiArCj4+ PiArICAgICAgICAgICAgICAgICAgICAgaWYgKCEoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0NP TVBMRVRFRF9NQVNLKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl Owo+Pj4gICAgCj4+PiAtICAgICAgICAgICAgIGlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNf Q09NUExFVEUgJiYKPj4+IC0gICAgICAgICAgICAgICAgIGJ1ZlsyKmhlYWQgKyAxXSA9PSBleGVj bGlzdHMtPnByZWVtcHRfY29tcGxldGVfc3RhdHVzKSB7Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgLyogV2Ugc2hvdWxkIG5ldmVyIGdldCBhIENPTVBMRVRFRCB8IElETEVfQUNUSVZFISAqLwo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIEdFTV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RB VFVTX0lETEVfQUNUSVZFKTsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAg ICAgICAvKgo+Pj4gKyAgICAgICAgICAgICAgKiBDaGVjayBpZiBwcmVlbXB0ZWQgdG8gcmVhbCBp ZGxlLCBlaXRoZXIgZGlyZWN0bHkgb3IKPj4+ICsgICAgICAgICAgICAgICogdGhlIHByZWVtcHRp dmUgY29udGV4dCBhbHJlYWR5IGZpbmlzaGVkIGV4ZWN1dGluZwo+Pj4gKyAgICAgICAgICAgICAg Ki8KPj4+ICsgICAgICAgICAgICAgaWYgKChzdGF0dXMgJiBHRU4xMV9DVFhfU1RBVFVTX1BSRUVN UFRfSURMRSkgfHwKPj4+ICsgICAgICAgICAgICAgICAgIChzdGF0dXMgJiBHRU44X0NUWF9TVEFU VVNfQ09NUExFVEUgJiYKPj4+ICsgICAgICAgICAgICAgICAgIGJ1ZlsyKmhlYWQgKyAxXSA9PSBl eGVjbGlzdHMtPnByZWVtcHRfY29tcGxldGVfc3RhdHVzKSkgewo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICBHRU1fVFJBQ0UoIiVzIHByZWVtcHQtaWRsZVxuIiwgZW5naW5lLT5uYW1lKTsKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVfcHJlZW1wdF9jb250ZXh0KGV4ZWNsaXN0 cyk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4gQEAgLTIxNTAsNyAr MjE5Miw4IEBAIHZvaWQgaW50ZWxfZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gICAgICAgIGVuZ2luZS0+dW5wYXJrID0g TlVMTDsKPj4+ICAgIAo+Pj4gICAgICAgIGVuZ2luZS0+ZmxhZ3MgfD0gSTkxNV9FTkdJTkVfU1VQ UE9SVFNfU1RBVFM7Cj4+PiAtICAgICBpZiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQp Cj4+PiArICAgICBpZiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQgfHwKPj4+ICsgICAg ICAgICBIQVNfSFdfUFJFRU1QVF9UT19JRExFKGVuZ2luZS0+aTkxNSkpCj4+PiAgICAgICAgICAg ICAgICBlbmdpbmUtPmZsYWdzIHw9IEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OOwo+Pj4gICAg Cj4+PiAgICAgICAgZW5naW5lLT5pOTE1LT5jYXBzLnNjaGVkdWxlciA9Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaAo+Pj4gaW5kZXggZjVhNTUwMi4uODcxOTAxYSAxMDA2NDQKPj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuaAo+Pj4gQEAgLTQzLDYgKzQzLDcgQEAKPj4+ICAgICNkZWZpbmUg UklOR19FWEVDTElTVF9TUV9DT05URU5UUyhlbmdpbmUpICAgX01NSU8oKGVuZ2luZSktPm1taW9f YmFzZSArIDB4NTEwKQo+Pj4gICAgI2RlZmluZSBSSU5HX0VYRUNMSVNUX0NPTlRST0woZW5naW5l KSAgICAgICAgICAgICAgIF9NTUlPKChlbmdpbmUpLT5tbWlvX2Jhc2UgKyAweDU1MCkKPj4+ICAg ICNkZWZpbmUgICAgICAgRUxfQ1RSTF9MT0FEICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8 PCAwKQo+Pj4gKyNkZWZpbmUgICAgICAgIEVMX0NUUkxfUFJFRU1QVF9UT19JRExFICAgICAgICAg ICAgICAgKDEgPDwgMSkKPj4+ICAgIAo+Pj4gICAgLyogVGhlIGRvY3Mgc3BlY2lmeSB0aGF0IHRo ZSB3cml0ZSBwb2ludGVyIHdyYXBzIGFyb3VuZCBhZnRlciA1aCwgIkFmdGVyIHN0YXR1cwo+Pj4g ICAgICogaXMgd3JpdHRlbiBvdXQgdG8gdGhlIGxhc3QgYXZhaWxhYmxlIHN0YXR1cyBRVyBhdCBv ZmZzZXQgNWgsIHRoaXMgcG9pbnRlcgo+Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK