From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Souza, Jose" Subject: Re: [PATCH v8 1/3] drm/i915/psr: Make PSR registers relative to transcoders Date: Wed, 21 Aug 2019 20:06:59 +0000 Message-ID: References: <20190820223325.27490-1-jose.souza@intel.com> <20190821043601.GB30506@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 ESMTPS id A48656EB61 for ; Thu, 22 Aug 2019 14:31:40 +0000 (UTC) In-Reply-To: <20190821043601.GB30506@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Gupta, Anshuman" Cc: "intel-gfx@lists.freedesktop.org" , "De Marchi, Lucas" , "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE5LTA4LTIxIGF0IDEwOjA2ICswNTMwLCBBbnNodW1hbiBHdXB0YSB3cm90ZToN Cj4gT24gMjAxOS0wOC0yMCBhdCAxNTozMzoyMyAtMDcwMCwgSm9zw6kgUm9iZXJ0byBkZSBTb3V6 YSB3cm90ZToNCj4gPiBQU1IgcmVnaXN0ZXJzIGFyZSBhIG1lc3MsIHNvbWUgaGF2ZSB0aGUgZnVs bCBhZGRyZXNzIHdoaWxlIG90aGVycw0KPiA+IGp1c3QNCj4gPiBoYXZlIHRoZSBhZGRpdGlvbmFs IG9mZnNldCBmcm9tIHBzcl9tbWlvX2Jhc2UuDQo+ID4gDQo+ID4gRm9yIEJEVysgcHNyX21taW9f YmFzZSBpcyBub3RoaW5nIG1vcmUgdGhhbiBUUkFOU0NPREVSX0VEUF9PRkZTRVQgKw0KPiA+IDB4 ODAwIGFuZCB1c2luZyBpdCBtYWtlcyBtb3JlIGRpZmZpY3VsdCBmb3IgcGVvcGxlIHdpdGggYW4g UFNSDQo+ID4gcmVnaXN0ZXIgYWRkcmVzcyBvciBQU1IgcmVnaXN0ZXIgbmFtZSBmcm9tIGZyb20g QlNwZWMgYXMgaTkxNSBhbHNvDQo+ID4gZG9uJ3QgbWF0Y2ggdGhlIEJTcGVjIG5hbWVzLg0KPiA+ IEZvciBIU1cgcHNyX21taW9fYmFzZSBpcyBfRERJX0JVRl9DVExfQSArIDB4ODAwIGFuZCBQU1Ig cmVnaXN0ZXJzDQo+ID4gYXJlDQo+ID4gb25seSBhdmFpbGFibGUgaW4gRERJQS4NCj4gPiANCj4g PiBPdGhlciByZWFzb24gdG8gbWFrZSByZWxhdGl2ZSB0byB0cmFuc2NvZGVyIGlzIHRoYXQgc2lu Y2UgQkRXIGV2ZXJ5DQo+ID4gdHJhbnNjb2RlciBoYXZlIFBTUiByZWdpc3RlcnMsIHNvIGluIHRo ZW9yeSBpdCBzaG91bGQgYmUgcG9zc2libGUNCj4gPiB0bw0KPiA+IGhhdmUgUFNSIGVuYWJsZWQg aW4gYSBub24tZURQIHRyYW5zY29kZXIuDQo+ID4gDQo+ID4gU28gZm9yIEJEVysgd2UgY2FuIHVz ZSBfVFJBTlMyKCkgdG8gZ2V0IHRoZSByZWdpc3RlciBvZmZzZXQgb2YgYW55DQo+ID4gUFNSIHJl Z2lzdGVyIGluIGFueSB0cmFuc2NvZGVyIHdoaWxlIGZvciBIU1cgd2UgaGF2ZSBfSFNXX1BTUl9B REoNCj4gPiB0aGF0IHdpbGwgY2FsY3VsYXRlIHRoZSByZWdpc3RlciBvZmZzZXQgZm9yIHRoZSBz aW5nbGUgUFNSDQo+ID4gaW5zdGFuY2UsDQo+ID4gbm90aW5nIHRoYXQgd2UgYXJlIGFscmVhZHkg Z3VhcmRlZCBhYm91dCB0cnlpbmcgdG8gZW5hYmxlIFBTUiBpbg0KPiA+IG90aGVyDQo+ID4gcG9y dCB0aGFuIERESUEgb24gSFNXIGJ5IHRoZSAnaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9S VF9BKScNCj4gPiBpbg0KPiA+IGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZygpLCB0aGlzIGNoZWNr IHNob3VsZCBvbmx5IGJlIHZhbGlkIGZvciBIU1cNCj4gPiBhbmQgd2lsbCBiZSBjaGFuZ2VkIGlu IGZ1dHVyZS4NCj4gPiBQU1IyIHJlZ2lzdGVycyBhbmQgUFNSX0VWRU5UIHdhcyBhZGRlZCBhZnRl ciBIYXN3ZWxsIHNvIHRoYXQgaXMgd2h5DQo+ID4gX1BTUl9BREooKSBpcyBub3QgdXNlZCBpbiBz b21lIG1hY3Jvcy4NCj4gPiANCj4gPiBUaGUgb25seSByZWdpc3RlcnMgdGhhdCBjYW4gbm90IGJl IHJlbGF0aXZlIHRvIHRyYW5zY29kZXIgYXJlDQo+ID4gUFNSX0lNUiBhbmQgUFNSX0lJUiB0aGF0 IGFyZSBub3QgcmVsYXRpdmUgdG8gYW55dGhpbmcsIHNvIGtlZXBpbmcNCj4gPiBpdA0KPiA+IGhh cmRjb2RlZC4gVGhhdCBjaGFuZ2VkIGZvciBUR0wgYnV0IGl0IHdpbGwgYmUgaGFuZGxlZCBpbiBh bm90aGVyDQo+ID4gcGF0Y2guDQo+ID4gDQo+ID4gQWxzbyByZW1vdmluZyBCRFdfRURQX1BTUl9C QVNFIGZyb20gR1ZUIGJlY2F1c2UgaXQgaXMgbm90IHVzZWQgYXMNCj4gPiBpdA0KPiA+IGlzIHRo ZSBvbmx5IFBTUiByZWdpc3RlciB0aGF0IEdWVCBoYXZlLg0KPiA+IA0KPiA+IHY1Og0KPiA+IC0g TWFjcm9zIGNoYW5nZWQgdG8gYmUgbW9yZSBleHBsaWNpdCBhYm91dCBIU1cgKERoaW5ha2FyYW4p DQo+ID4gLSBTcXVhc2hlZCB3aXRoIHRoZSBwYXRjaCB0aGF0IGFkZGVkIHRoZSB0cmFuIHBhcmFt ZXRlciB0byB0aGUNCj4gPiBtYWNyb3MgKERoaW5ha2FyYW4pDQo+ID4gDQo+ID4gdjY6DQo+ID4g LSBDaGVja2luZyBmb3IgaW50ZXJydXB0aW9uIGVycm9ycyBhZnRlciBtb2R1bGUgcmVsb2FkIGlu IHRoZQ0KPiA+IHRyYW5zY29kZXIgdGhhdCB3aWxsIGJlIHVzZWQgKERoaW5ha2FyYW4pDQo+ID4g LSBVc2luZyBsb3dlcmNhc2UgdG8gdGhlIHJlZ2lzdGVycyBvZmZzZXRzDQo+ID4gDQo+ID4gdjc6 DQo+ID4gLSBSZW1vdmluZyBJU19IQVNXRUxMKCkgZnJvbSByZWdpc3RlcnMgbWFjcm9zKEphbmkp DQo+ID4gDQo+ID4gQ2M6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5A aW50ZWwuY29tPg0KPiA+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ DQo+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4g Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4g Q2M6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogTHVj YXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+DQo+ID4gU2ln bmVkLW9mZi1ieTogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+DQo+ ID4gLS0tDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMgfCAx MDQgKysrKysrKysrKysrKy0tLS0NCj4gPiAtLS0tLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2hhbmRsZXJzLmMgICAgICB8ICAgMiArLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgIDE4ICsrLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAgNSArLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oICAgICAgICAgIHwgIDU3ICsrKysrKysrKy0tLS0NCj4gPiAgNSBmaWxlcyBj aGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMNCj4gPiBpbmRleCAzYmZi NzIwNTYwYzIuLjc3MjMyZjZiY2ExNyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuYw0KPiA+IEBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIHZvaWQg aHN3X3Bzcl9zZXR1cF9hdXgoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0KPiA+ICAN Cj4gPiAgCUJVSUxEX0JVR19PTihzaXplb2YoYXV4X21zZykgPiAyMCk7DQo+ID4gIAlmb3IgKGkg PSAwOyBpIDwgc2l6ZW9mKGF1eF9tc2cpOyBpICs9IDQpDQo+ID4gLQkJSTkxNV9XUklURShFRFBf UFNSX0FVWF9EQVRBKGkgPj4gMiksDQo+ID4gKwkJSTkxNV9XUklURShFRFBfUFNSX0FVWF9EQVRB KGRldl9wcml2LT5wc3IudHJhbnNjb2RlciwgaQ0KPiA+ID4+IDIpLA0KPiA+ICAJCQkgICBpbnRl bF9kcF9wYWNrX2F1eCgmYXV4X21zZ1tpXSwNCj4gPiBzaXplb2YoYXV4X21zZykgLSBpKSk7DQo+ ID4gIA0KPiA+ICAJYXV4X2Nsb2NrX2RpdmlkZXIgPSBpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19k aXZpZGVyKGludGVsX2RwLA0KPiA+IDApOw0KPiA+IEBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGlj IHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgoc3RydWN0IGludGVsX2RwDQo+ID4gKmludGVsX2RwKQ0K PiA+ICANCj4gPiAgCS8qIFNlbGVjdCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICov DQo+ID4gIAlhdXhfY3RsICY9IHBzcl9hdXhfbWFzazsNCj4gPiAtCUk5MTVfV1JJVEUoRURQX1BT Ul9BVVhfQ1RMLCBhdXhfY3RsKTsNCj4gPiArCUk5MTVfV1JJVEUoRURQX1BTUl9BVVhfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlciksIGF1eF9jdGwpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBz dGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkNCj4gPiBAQCAtNDkxLDggKzQ5MSw5IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3Ix KHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDgpDQo+ID4gIAkJdmFsIHw9IEVEUF9QU1JfQ1JDX0VOQUJMRTsNCj4gPiAgDQo+ ID4gLQl2YWwgfD0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKSAmDQo+ID4gRURQX1BTUl9SRVNUT1JF X1BTUl9BQ1RJVkVfQ1RYX01BU0s7DQo+ID4gLQlJOTE1X1dSSVRFKEVEUF9QU1JfQ1RMLCB2YWwp Ow0KPiA+ICsJdmFsIHw9IChJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFu c2NvZGVyKSkgJg0KPiA+ICsJCUVEUF9QU1JfUkVTVE9SRV9QU1JfQUNUSVZFX0NUWF9NQVNLKTsN Cj4gPiArCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwg dmFsKTsNCj4gPiAgfQ0KPiA+ICANCj4gPiAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3BzcjIo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiBAQCAtNTI4LDkgKzUyOSw5IEBAIHN0YXRp YyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkN Cj4gPiAgCSAqIFBTUjIgSFcgaXMgaW5jb3JyZWN0bHkgdXNpbmcgRURQX1BTUl9UUDFfVFAzX1NF TCBhbmQgQlNwZWMNCj4gPiBpcw0KPiA+ICAJICogcmVjb21tZW5kaW5nIGtlZXAgdGhpcyBiaXQg dW5zZXQgd2hpbGUgUFNSMiBpcyBlbmFibGVkLg0KPiA+ICAJICovDQo+ID4gLQlJOTE1X1dSSVRF KEVEUF9QU1JfQ1RMLCAwKTsNCj4gPiArCUk5MTVfV1JJVEUoRURQX1BTUl9DVEwoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyKSwgMCk7DQo+ID4gIA0KPiA+IC0JSTkxNV9XUklURShFRFBfUFNSMl9D VEwsIHZhbCk7DQo+ID4gKwlJOTE1X1dSSVRFKEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXIpLCB2YWwpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgYm9vbCBpbnRlbF9w c3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLA0KPiA+IEBAIC02MDYs MTAgKzYwNyw5IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9k cA0KPiA+ICppbnRlbF9kcCwNCj4gPiAgDQo+ID4gIAkvKg0KPiA+ICAJICogSFNXIHNwZWMgZXhw bGljaXRseSBzYXlzIFBTUiBpcyB0aWVkIHRvIHBvcnQgQS4NCj4gPiAtCSAqIEJEVysgcGxhdGZv cm1zIHdpdGggRERJIGltcGxlbWVudGF0aW9uIG9mIFBTUiBoYXZlIGRpZmZlcmVudA0KPiA+IC0J ICogUFNSIHJlZ2lzdGVycyBwZXIgdHJhbnNjb2RlciBhbmQgd2Ugb25seSBpbXBsZW1lbnQNCj4g PiB0cmFuc2NvZGVyIEVEUA0KPiA+IC0JICogb25lcy4gU2luY2UgYnkgRGlzcGxheSBkZXNpZ24g dHJhbnNjb2RlciBFRFAgaXMgdGllZCB0byBwb3J0DQo+ID4gQQ0KPiA+IC0JICogd2UgY2FuIHNh ZmVseSBlc2NhcGUgYmFzZWQgb24gdGhlIHBvcnQgQS4NCj4gPiArCSAqIEJEVysgcGxhdGZvcm1z IGhhdmUgYSBpbnN0YW5jZSBvZiBQU1IgcmVnaXN0ZXJzIHBlcg0KPiA+IHRyYW5zY29kZXIgYnV0 DQo+ID4gKwkgKiBmb3Igbm93IGl0IG9ubHkgc3VwcG9ydHMgb25lIGluc3RhbmNlIG9mIFBTUiwg c28gbGV0cyBrZWVwDQo+ID4gaXQNCj4gPiArCSAqIGhhcmRjb2RlZCB0byBQT1JUX0ENCj4gPiAg CSAqLw0KPiA+ICAJaWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7DQo+ID4gIAkJ RFJNX0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IFBvcnQgbm90DQo+ID4gc3VwcG9y dGVkXG4iKTsNCj4gPiBAQCAtNjQ5LDggKzY0OSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9h Y3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHANCj4gPiAqaW50ZWxfZHApDQo+ID4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsNCj4gPiAgDQo+ ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQ0KPiA+IC0JCVdBUk5fT04oSTkxNV9S RUFEKEVEUF9QU1IyX0NUTCkgJiBFRFBfUFNSMl9FTkFCTEUpOw0KPiA+IC0JV0FSTl9PTihJOTE1 X1JFQUQoRURQX1BTUl9DVEwpICYgRURQX1BTUl9FTkFCTEUpOw0KPiA+ICsJCVdBUk5fT04oSTkx NV9SRUFEKEVEUF9QU1IyX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKSAmIEVE UF9QU1IyX0VOQUJMRSk7DQo+ID4gKwlXQVJOX09OKEk5MTVfUkVBRChFRFBfUFNSX0NUTChkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIpKSAmDQo+ID4gRURQX1BTUl9FTkFCTEUpOw0KPiA+ICAJV0FS Tl9PTihkZXZfcHJpdi0+cHNyLmFjdGl2ZSk7DQo+ID4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZk ZXZfcHJpdi0+cHNyLmxvY2spOw0KPiA+ICANCj4gPiBAQCAtNzIwLDE5ICs3MjAsMzcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0DQo+ID4gaW50ZWxfZHAgKmlu dGVsX2RwLA0KPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkNCj4gPiAgCQltYXNr IHw9IEVEUF9QU1JfREVCVUdfTUFTS19ESVNQX1JFR19XUklURTsNCj4gPiAgDQo+ID4gLQlJOTE1 X1dSSVRFKEVEUF9QU1JfREVCVUcsIG1hc2spOw0KPiA+ICsJSTkxNV9XUklURShFRFBfUFNSX0RF QlVHKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIG1hc2spOw0KPiA+ICB9DQo+ID4gIA0KPiA+ ICBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQ0KPiA+ICpkZXZfcHJpdiwNCj4gPiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZQ0KPiA+ICpjcnRjX3N0YXRlKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZGV2X3ByaXYtPnBzci5kcDsNCj4gPiArCXUzMiB2YWw7DQo+ID4gIA0KPiA+ ICAJV0FSTl9PTihkZXZfcHJpdi0+cHNyLmVuYWJsZWQpOw0KPiA+ICANCj4gPiAgCWRldl9wcml2 LT5wc3IucHNyMl9lbmFibGVkID0gaW50ZWxfcHNyMl9lbmFibGVkKGRldl9wcml2LA0KPiA+IGNy dGNfc3RhdGUpOw0KPiA+ICAJZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAw Ow0KPiA+ICAJZGV2X3ByaXYtPnBzci5waXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpLQ0KPiA+ID5waXBlOw0KPiA+ICsJZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyID0g Y3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIElm IGEgUFNSIGVycm9yIGhhcHBlbmVkIGFuZCB0aGUgZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUNCj4g PiBFRFBfUFNSX0lJUg0KPiA+ICsJICogd2lsbCBzdGlsbCBrZWVwIHRoZSBlcnJvciBzZXQgZXZl biBhZnRlciB0aGUgcmVzZXQgZG9uZSBpbg0KPiA+IHRoZQ0KPiA+ICsJICogaXJxX3ByZWluc3Rh bGwgYW5kIGlycV91bmluc3RhbGwgaG9va3MuDQo+ID4gKwkgKiBBbmQgZW5hYmxpbmcgaW4gdGhp cyBzaXR1YXRpb24gY2F1c2UgdGhlIHNjcmVlbiB0byBmcmVlemUgaW4NCj4gPiB0aGUNCj4gPiAr CSAqIGZpcnN0IHRpbWUgdGhhdCBQU1IgSFcgdHJpZXMgdG8gYWN0aXZhdGUgc28gbGV0cyBrZWVw IFBTUg0KPiA+IGRpc2FibGVkDQo+ID4gKwkgKiB0byBhdm9pZCBhbnkgcmVuZGVyaW5nIHByb2Js ZW1zLg0KPiA+ICsJICovDQo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9JSVIpOw0KPiA+ ICsJdmFsICY9IEVEUF9QU1JfRVJST1IoZWRwX3Bzcl9zaGlmdChkZXZfcHJpdi0+cHNyLnRyYW5z Y29kZXIpKTsNCj4gPiArCWlmICh2YWwpIHsNCj4gPiArCQlkZXZfcHJpdi0+cHNyLnNpbmtfbm90 X3JlbGlhYmxlID0gdHJ1ZTsNCj4gPiArCQlEUk1fREVCVUdfS01TKCJQU1IgaW50ZXJydXB0aW9u IGVycm9yIHNldCwgbm90IGVuYWJsaW5nDQo+ID4gUFNSXG4iKTsNCj4gPiArCQlyZXR1cm47DQo+ ID4gKwl9DQo+ID4gIA0KPiA+ICAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsDQo+ ID4gIAkJICAgICAgZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPyAiMiIgOiAiMSIpOw0KPiA+ IEBAIC03ODIsMjAgKzgwMCwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZXhpdChzdHJ1Y3QN Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gPiAgCXUzMiB2YWw7DQo+ID4gIA0K PiA+ICAJaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSkgew0KPiA+IC0JCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpDQo+ID4gLQkJCVdBUk5fT04oSTkxNV9SRUFEKEVEUF9QU1IyX0NUTCkg Jg0KPiA+IEVEUF9QU1IyX0VOQUJMRSk7DQo+ID4gLQkJV0FSTl9PTihJOTE1X1JFQUQoRURQX1BT Ul9DVEwpICYgRURQX1BTUl9FTkFCTEUpOw0KPiA+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpIHsNCj4gPiArCQkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1IyX0NUTChkZXZfcHJpdi0N Cj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiArCQkJV0FSTl9PTih2YWwgJiBFRFBfUFNSMl9F TkFCTEUpOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1Jf Q1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOw0KPiA+ICsJCVdBUk5fT04odmFsICYgRURQ X1BTUl9FTkFCTEUpOw0KPiA+ICsNCj4gPiAgCQlyZXR1cm47DQo+ID4gIAl9DQo+ID4gIA0KPiA+ ICAJaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7DQo+ID4gLQkJdmFsID0gSTkxNV9S RUFEKEVEUF9QU1IyX0NUTCk7DQo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1IyX0NUTChk ZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiAgCQlXQVJOX09OKCEodmFsICYg RURQX1BTUjJfRU5BQkxFKSk7DQo+ID4gLQkJSTkxNV9XUklURShFRFBfUFNSMl9DVEwsIHZhbCAm IH5FRFBfUFNSMl9FTkFCTEUpOw0KPiA+ICsJCXZhbCAmPSB+RURQX1BTUjJfRU5BQkxFOw0KPiA+ ICsJCUk5MTVfV1JJVEUoRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksDQo+ ID4gdmFsKTsNCj4gPiAgCX0gZWxzZSB7DQo+ID4gLQkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1Jf Q1RMKTsNCj4gPiArCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKSk7DQo+ID4gIAkJV0FSTl9PTighKHZhbCAmIEVEUF9QU1JfRU5BQkxFKSk7DQo+ ID4gLQkJSTkxNV9XUklURShFRFBfUFNSX0NUTCwgdmFsICYgfkVEUF9QU1JfRU5BQkxFKTsNCj4g PiArCQl2YWwgJj0gfkVEUF9QU1JfRU5BQkxFOw0KPiA+ICsJCUk5MTVfV1JJVEUoRURQX1BTUl9D VEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsNCj4gPiAgCX0NCj4gPiAgCWRldl9w cml2LT5wc3IuYWN0aXZlID0gZmFsc2U7DQo+ID4gIH0NCj4gPiBAQCAtODE3LDEwICs4NDIsMTAg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdA0KPiA+IGludGVs X2RwICppbnRlbF9kcCkNCj4gPiAgCWludGVsX3Bzcl9leGl0KGRldl9wcml2KTsNCj4gPiAgDQo+ ID4gIAlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQpIHsNCj4gPiAtCQlwc3Jfc3RhdHVz ID0gRURQX1BTUjJfU1RBVFVTOw0KPiA+ICsJCXBzcl9zdGF0dXMgPSBFRFBfUFNSMl9TVEFUVVMo ZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsNCj4gPiAgCQlwc3Jfc3RhdHVzX21hc2sgPSBFRFBf UFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsNCj4gPiAgCX0gZWxzZSB7DQo+ID4gLQkJcHNyX3N0YXR1 cyA9IEVEUF9QU1JfU1RBVFVTOw0KPiA+ICsJCXBzcl9zdGF0dXMgPSBFRFBfUFNSX1NUQVRVUyhk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOw0KPiA+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9Q U1JfU1RBVFVTX1NUQVRFX01BU0s7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IEBAIC05NjMsNyArOTg4 LDggQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdA0KPiA+IGludGVs X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLA0KPiA+ICAJICogZGVmZW5zaXZlIGVub3VnaCB0 byBjb3ZlciBldmVyeXRoaW5nLg0KPiA+ICAJICovDQo+ID4gIA0KPiA+IC0JcmV0dXJuIF9faW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsDQo+ID4gRURQX1BTUl9TVEFU VVMsDQo+ID4gKwlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVu Y29yZSwNCj4gPiArCQkJCQkgRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFu c2NvZGVyKSwNCj4gPiAgCQkJCQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSywNCj4gPiAgCQkJ CQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwgMiwNCj4gPiA1MCwNCj4gPiAgCQkJCQkgb3V0 X3ZhbHVlKTsNCj4gPiBAQCAtOTc5LDEwICsxMDA1LDEwIEBAIHN0YXRpYyBib29sDQo+ID4gX19w c3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ID4gIAlpZiAoZGV2X3ByaXYtPnBzci5w c3IyX2VuYWJsZWQpIHsNCj4gPiAtCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVM7DQo+ID4gKwkJcmVn ID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7DQo+ID4gIAkJbWFz ayA9IEVEUF9QU1IyX1NUQVRVU19TVEFURV9NQVNLOw0KPiA+ICAJfSBlbHNlIHsNCj4gPiAtCQly ZWcgPSBFRFBfUFNSX1NUQVRVUzsNCj4gPiArCQlyZWcgPSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJp di0+cHNyLnRyYW5zY29kZXIpOw0KPiA+ICAJCW1hc2sgPSBFRFBfUFNSX1NUQVRVU19TVEFURV9N QVNLOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiBAQCAtMTIwOCwzNiArMTIzNCwyNCBAQCB2b2lkIGlu dGVsX3Bzcl9mbHVzaChzdHJ1Y3QNCj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4g PiAgICovDQo+ID4gIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQ0KPiA+ICB7DQo+ID4gLQl1MzIgdmFsOw0KPiA+IC0NCj4gPiAgCWlmICghSEFT X1BTUihkZXZfcHJpdikpDQo+ID4gIAkJcmV0dXJuOw0KPiA+ICANCj4gPiAtCWRldl9wcml2LT5w c3JfbW1pb19iYXNlID0gSVNfSEFTV0VMTChkZXZfcHJpdikgPw0KPiA+IC0JCUhTV19FRFBfUFNS X0JBU0UgOiBCRFdfRURQX1BTUl9CQVNFOw0KPiA+IC0NCj4gPiAgCWlmICghZGV2X3ByaXYtPnBz ci5zaW5rX3N1cHBvcnQpDQo+ID4gIAkJcmV0dXJuOw0KPiA+ICANCj4gPiArCWlmIChJU19IQVNX RUxMKGRldl9wcml2KSkNCj4gPiArCQkvKg0KPiA+ICsJCSAqIEhTVyBkb24ndCBoYXZlIFBTUiBy ZWdpc3RlcnMgb24gdGhlIHNhbWUgc3BhY2UgYXMNCj4gPiB0cmFuc2NvZGVyDQo+ID4gKwkJICog c28gc2V0IHRoaXMgdG8gYSB2YWx1ZSB0aGF0IHdoZW4gc3VidHJhY3QgdG8gdGhlDQo+ID4gcmVn aXN0ZXINCj4gPiArCQkgKiBpbiB0cmFuc2NvZGVyIHNwYWNlIHJlc3VsdHMgaW4gdGhlIHJpZ2h0 IG9mZnNldCBmb3INCj4gPiBIU1cNCj4gPiArCQkgKi8NCj4gPiArCQlkZXZfcHJpdi0+aHN3X3Bz cl9tbWlvX2FkanVzdCA9IF9TUkRfQ1RMX0VEUCAtDQo+ID4gX0hTV19FRFBfUFNSX0JBU0U7DQo+ ID4gKw0KPiA+ICAJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPT0gLTEpDQo+ID4gIAkJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFkZXZfcHJpdi0NCj4gPiA+dmJ0LnBzci5l bmFibGUpDQo+ID4gIAkJCWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPSAwOw0KPiA+ICANCj4g PiAtCS8qDQo+ID4gLQkgKiBJZiBhIFBTUiBlcnJvciBoYXBwZW5lZCBhbmQgdGhlIGRyaXZlciBp cyByZWxvYWRlZCwgdGhlDQo+ID4gRURQX1BTUl9JSVINCj4gPiAtCSAqIHdpbGwgc3RpbGwga2Vl cCB0aGUgZXJyb3Igc2V0IGV2ZW4gYWZ0ZXIgdGhlIHJlc2V0IGRvbmUgaW4NCj4gPiB0aGUNCj4g PiAtCSAqIGlycV9wcmVpbnN0YWxsIGFuZCBpcnFfdW5pbnN0YWxsIGhvb2tzLg0KPiA+IC0JICog QW5kIGVuYWJsaW5nIGluIHRoaXMgc2l0dWF0aW9uIGNhdXNlIHRoZSBzY3JlZW4gdG8gZnJlZXpl IGluDQo+ID4gdGhlDQo+ID4gLQkgKiBmaXJzdCB0aW1lIHRoYXQgUFNSIEhXIHRyaWVzIHRvIGFj dGl2YXRlIHNvIGxldHMga2VlcCBQU1INCj4gPiBkaXNhYmxlZA0KPiA+IC0JICogdG8gYXZvaWQg YW55IHJlbmRlcmluZyBwcm9ibGVtcy4NCj4gPiAtCSAqLw0KPiA+IC0JdmFsID0gSTkxNV9SRUFE KEVEUF9QU1JfSUlSKTsNCj4gPiAtCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGVkcF9wc3Jfc2hpZnQo VFJBTlNDT0RFUl9FRFApKTsNCj4gPiAtCWlmICh2YWwpIHsNCj4gPiAtCQlEUk1fREVCVUdfS01T KCJQU1IgaW50ZXJydXB0aW9uIGVycm9yIHNldFxuIik7DQo+ID4gLQkJZGV2X3ByaXYtPnBzci5z aW5rX25vdF9yZWxpYWJsZSA9IHRydWU7DQo+ID4gLQl9DQo+ID4gLQ0KPiBFYXJsaWVyIEVEUF9Q U1JfSUlSIHdhcyBiZWluZyBjaGVja2VkIG9ubHkgaW4gZHJpdmVyIGluaXQgcGF0aCwgDQo+IG5v dyBpdCBoYXMgYmVlbiBjaGVja2VkIGZvciBldmVyeSBtb2Rlc2V0L2Zhc3RzZXQgcGF0aCBpbg0K PiBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZCgpLiBJcyBpdCBvayA/DQo+IElmIGl0IGlzIGp1c3Rp ZmllZCB3aHkgYXJlIHdlIG5vdCBjaGVja2luZyBpdCBpbiBpbnRlbF9wc3JfZmx1c2goKQ0KPiB0 aGVyZSBhbHNvIGl0IGVuYWJsZXMgcHNyLg0KDQpJIG1vdmVkIGl0IHByaW1hcmlseSBiZWNhdXNl IG9uIGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKCkgd2UgaGF2ZSB0aGUNCnRyYW5zY29kZXIgdGhh dCB3aWxsIGJlIHVzZWQsIGRvaW5nIG9uIGluaXQgd2Ugd291bGQgbmVlZCB0byBjaGVjayBmb3IN CmFsbCB0cmFuc2NvZGVycyBhbmQgaW4gY2FzZSBvZiBhIGVycm9yIHNldCBpbiBvbmUgdHJhbnNj b2RlciB3ZSB3b3VsZA0KbmVlZCB0byBmYWlsIGluaXRpYWxpemF0aW9uIGFzIFBTUiBjb3VsZCBi ZSBlbmFibGVkIG9uIHRoYXQgdHJhbnNjb2Rlci4NCg0KTm8gbmVlZCB0byBkbyB0aGF0IG9uIGlu dGVsX3Bzcl9mbHVzaCgpIGJlY2F1c2UgUFNSIGludGVycnVwdGlvbnMgY2FuDQpiZSB0cmlnZ2Vy ZWQgZXZlbiB3aXRoIFBTUiBpbmFjdGl2ZS4NCg0KDQo+ID4gIAkvKiBTZXQgbGlua19zdGFuZGJ5 IHggbGlua19vZmYgZGVmYXVsdHMgKi8NCj4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQ0KPiA+ICAJCS8qIEhTVyBhbmQgQkRXIHJlcXVpcmUg d29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndA0KPiA+IGltcGxlbWVudC4gKi8NCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRsZXJzLmMNCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9oYW5kbGVycy5jDQo+ID4gaW5kZXggMjVmNzgxOTZiOTY0Li40NWE5 MTI0ZTUzYjYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2hhbmRs ZXJzLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvaGFuZGxlcnMuYw0KPiA+ IEBAIC0yNzk2LDcgKzI3OTYsNyBAQCBzdGF0aWMgaW50IGluaXRfYnJvYWR3ZWxsX21taW9faW5m byhzdHJ1Y3QNCj4gPiBpbnRlbF9ndnQgKmd2dCkNCj4gPiAgCU1NSU9fRChDSElDS0VOX1BJUEVT TF8xKFBJUEVfQyksIERfQkRXX1BMVVMpOw0KPiA+ICANCj4gPiAgCU1NSU9fRChXTV9NSVNDLCBE X0JEVyk7DQo+ID4gLQlNTUlPX0QoX01NSU8oQkRXX0VEUF9QU1JfQkFTRSksIERfQkRXKTsNCj4g PiArCU1NSU9fRChfTU1JTyhfU1JEX0NUTF9FRFApLCBEX0JEVyk7DQo+ID4gIA0KPiA+ICAJTU1J T19EKF9NTUlPKDB4NjY3MWMpLCBEX0JEV19QTFVTKTsNCj4gPiAgCU1NSU9fRChfTU1JTygweDY2 YzAwKSwgRF9CRFdfUExVUyk7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Yw0KPiA+IGluZGV4IGIzOTIyNmQ3ZjhkMi4uNmU0ODI0ZGFhZmFlIDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jDQo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMNCj4gPiBAQCAtMjEzMiw3ICsyMTMyLDcgQEAgcHNy X3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiAqZGV2X3ByaXYsIHN0 cnVjdCBzZXFfZmlsZSAqbSkNCj4gPiAgCQkJIkJVRl9PTiIsDQo+ID4gIAkJCSJUR19PTiINCj4g PiAgCQl9Ow0KPiA+IC0JCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9TVEFUVVMpOw0KPiA+ICsJ CXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFu c2NvZGVyKSk7DQo+ID4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBfUFNSMl9TVEFUVVNfU1RB VEVfTUFTSykgPj4NCj4gPiAgCQkJICAgICAgRURQX1BTUjJfU1RBVFVTX1NUQVRFX1NISUZUOw0K PiA+ICAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykpDQo+ID4gQEAg LTIxNDgsNyArMjE0OCw3IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlDQo+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pDQo+ID4gIAkJCSJTUkRPRkZB Q0siLA0KPiA+ICAJCQkiU1JERU5UX09OIiwNCj4gPiAgCQl9Ow0KPiA+IC0JCXZhbCA9IEk5MTVf UkVBRChFRFBfUFNSX1NUQVRVUyk7DQo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1JfU1RB VFVTKGRldl9wcml2LQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ICAJCXN0YXR1c192YWwg PSAodmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4NCj4gPiAgCQkJICAgICAgRURQ X1BTUl9TVEFUVVNfU1RBVEVfU0hJRlQ7DQo+ID4gIAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9T SVpFKGxpdmVfc3RhdHVzKSkNCj4gPiBAQCAtMjE5MSwxMCArMjE5MSwxMCBAQCBzdGF0aWMgaW50 IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0DQo+ID4gc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp DQo+ID4gIAkJZ290byB1bmxvY2s7DQo+ID4gIA0KPiA+ICAJaWYgKHBzci0+cHNyMl9lbmFibGVk KSB7DQo+ID4gLQkJdmFsID0gSTkxNV9SRUFEKEVEUF9QU1IyX0NUTCk7DQo+ID4gKwkJdmFsID0g STkxNV9SRUFEKEVEUF9QU1IyX0NUTChkZXZfcHJpdi0NCj4gPiA+cHNyLnRyYW5zY29kZXIpKTsN Cj4gPiAgCQllbmFibGVkID0gdmFsICYgRURQX1BTUjJfRU5BQkxFOw0KPiA+ICAJfSBlbHNlIHsN Cj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9DVEwpOw0KPiA+ICsJCXZhbCA9IEk5MTVf UkVBRChFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsNCj4gPiAgCQllbmFi bGVkID0gdmFsICYgRURQX1BTUl9FTkFCTEU7DQo+ID4gIAl9DQo+ID4gIAlzZXFfcHJpbnRmKG0s ICJTb3VyY2UgUFNSIGN0bDogJXMgWzB4JTA4eF1cbiIsDQo+ID4gQEAgLTIyMDcsNyArMjIwNyw4 IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3QNCj4gPiBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkNCj4gPiAgCSAqIFNLTCsgUGVyZiBjb3VudGVyIGlzIHJlc2V0IHRvIDAg ZXZlcnl0aW1lIERDIHN0YXRlIGlzDQo+ID4gZW50ZXJlZA0KPiA+ICAJICovDQo+ID4gIAlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgew0KPiA+IC0J CXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX1BFUkZfQ05UKSAmDQo+ID4gRURQX1BTUl9QRVJGX0NO VF9NQVNLOw0KPiA+ICsJCXZhbCA9IEk5MTVfUkVBRChFRFBfUFNSX1BFUkZfQ05UKGRldl9wcml2 LQ0KPiA+ID5wc3IudHJhbnNjb2RlcikpOw0KPiA+ICsJCXZhbCAmPSBFRFBfUFNSX1BFUkZfQ05U X01BU0s7DQo+ID4gIAkJc2VxX3ByaW50ZihtLCAiUGVyZm9ybWFuY2UgY291bnRlcjogJXVcbiIs IHZhbCk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IEBAIC0yMjI1LDggKzIyMjYsMTEgQEAgc3RhdGlj IGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdA0KPiA+IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQ0KPiA+ICAJCSAqIFJlYWRpbmcgYWxsIDMgcmVnaXN0ZXJzIGJlZm9yZSBoYW5kIHRvIG1p bmltaXplDQo+ID4gY3Jvc3NpbmcgYQ0KPiA+ICAJCSAqIGZyYW1lIGJvdW5kYXJ5IGJldHdlZW4g cmVnaXN0ZXIgcmVhZHMNCj4gPiAgCQkgKi8NCj4gPiAtCQlmb3IgKGZyYW1lID0gMDsgZnJhbWUg PCBQU1IyX1NVX1NUQVRVU19GUkFNRVM7IGZyYW1lICs9DQo+ID4gMykNCj4gPiAtCQkJc3VfZnJh bWVzX3ZhbFtmcmFtZSAvIDNdID0NCj4gPiBJOTE1X1JFQUQoUFNSMl9TVV9TVEFUVVMoZnJhbWUp KTsNCj4gPiArCQlmb3IgKGZyYW1lID0gMDsgZnJhbWUgPCBQU1IyX1NVX1NUQVRVU19GUkFNRVM7 IGZyYW1lICs9DQo+ID4gMykgew0KPiA+ICsJCQl2YWwgPSBJOTE1X1JFQUQoUFNSMl9TVV9TVEFU VVMoZGV2X3ByaXYtDQo+ID4gPnBzci50cmFuc2NvZGVyLA0KPiA+ICsJCQkJCQkgICAgICAgZnJh bWUpKTsNCj4gPiArCQkJc3VfZnJhbWVzX3ZhbFtmcmFtZSAvIDNdID0gdmFsOw0KPiA+ICsJCX0N Cj4gPiAgDQo+ID4gIAkJc2VxX3B1dHMobSwgIkZyYW1lOlx0UFNSMiBTVSBibG9ja3M6XG4iKTsN Cj4gPiAgDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgN Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiBpbmRleCBlYjMxYzE2 NTZjZWEuLmJlOTk5NzkxYWJjYSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0K PiA+IEBAIC00NzksNiArNDc5LDcgQEAgc3RydWN0IGk5MTVfcHNyIHsNCj4gPiAgCWJvb2wgZW5h YmxlZDsNCj4gPiAgCXN0cnVjdCBpbnRlbF9kcCAqZHA7DQo+ID4gIAllbnVtIHBpcGUgcGlwZTsN Cj4gPiArCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyOw0KPiA+ICAJYm9vbCBhY3RpdmU7DQo+ ID4gIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsNCj4gPiAgCXVuc2lnbmVkIGJ1c3lfZnJvbnRi dWZmZXJfYml0czsNCj4gPiBAQCAtMTMzMCwxMSArMTMzMSwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7DQo+ID4gIAkgKi8NCj4gPiAgCXUzMiBncGlvX21taW9fYmFzZTsNCj4gPiAgDQo+ ID4gKwl1MzIgaHN3X3Bzcl9tbWlvX2FkanVzdDsNCj4gPiArDQo+ID4gIAkvKiBNTUlPIGJhc2Ug YWRkcmVzcyBmb3IgTUlQSSByZWdzICovDQo+ID4gIAl1MzIgbWlwaV9tbWlvX2Jhc2U7DQo+ID4g IA0KPiA+IC0JdTMyIHBzcl9tbWlvX2Jhc2U7DQo+ID4gLQ0KPiA+ICAJdTMyIHBwc19tbWlvX2Jh c2U7DQo+ID4gIA0KPiA+ICAJd2FpdF9xdWV1ZV9oZWFkX3QgZ21idXNfd2FpdF9xdWV1ZTsNCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+IGluZGV4IDJhYmQxOTkwOTNjNS4uYTA5 MmIzNGMyNjlkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oDQo+ID4gQEAgLTQx ODYsMTAgKzQxODYsMTcgQEAgZW51bSB7DQo+ID4gICNkZWZpbmUgUElQRVNSQyh0cmFucykJCV9N TUlPX1RSQU5TMih0cmFucywgX1BJUEVBU1JDKQ0KPiA+ICAjZGVmaW5lIFBJUEVfTVVMVCh0cmFu cykJX01NSU9fVFJBTlMyKHRyYW5zLCBfUElQRV9NVUxUX0EpDQo+ID4gIA0KPiA+IC0vKiBIU1cr IGVEUCBQU1IgcmVnaXN0ZXJzICovDQo+ID4gLSNkZWZpbmUgSFNXX0VEUF9QU1JfQkFTRQkweDY0 ODAwDQo+ID4gLSNkZWZpbmUgQkRXX0VEUF9QU1JfQkFTRQkweDZmODAwDQo+ID4gLSNkZWZpbmUg RURQX1BTUl9DVEwJCQkJX01NSU8oZGV2X3ByaXYtDQo+ID4gPnBzcl9tbWlvX2Jhc2UgKyAwKQ0K PiA+ICsvKg0KPiA+ICsgKiBIU1crIGVEUCBQU1IgcmVnaXN0ZXJzDQo+ID4gKyAqDQo+ID4gKyAq IEhTVyBQU1IgcmVnaXN0ZXJzIGFyZSByZWxhdGl2ZSB0byBERElBKF9ERElfQlVGX0NUTF9BICsg MHg4MDApDQo+ID4gd2l0aCBqdXN0IG9uZQ0KPiA+ICsgKiBpbnN0YW5jZSBvZiBpdA0KPiA+ICsg Ki8NCj4gPiArI2RlZmluZSBfSFNXX0VEUF9QU1JfQkFTRQkJCTB4NjQ4MDANCj4gPiArI2RlZmlu ZSBfU1JEX0NUTF9BCQkJCTB4NjA4MDANCj4gPiArI2RlZmluZSBfU1JEX0NUTF9FRFAJCQkJMHg2 ZjgwMA0KPiA+ICsjZGVmaW5lIF9QU1JfQURKKHRyYW4sIHJlZykJCQkoX1RSQU5TMih0cmFuLA0K PiA+IHJlZykgLSBkZXZfcHJpdi0+aHN3X3Bzcl9tbWlvX2FkanVzdCkNCj4gPiArI2RlZmluZSBF RFBfUFNSX0NUTCh0cmFuKQkJCV9NTUlPKF9QU1JfQURKKHRyYW4sDQo+ID4gX1NSRF9DVExfQSkp DQo+ID4gICNkZWZpbmUgICBFRFBfUFNSX0VOQUJMRQkJCSgxIDw8IDMxKQ0KPiA+ICAjZGVmaW5l ICAgQkRXX1BTUl9TSU5HTEVfRlJBTUUJCQkoMSA8PCAzMCkNCj4gPiAgI2RlZmluZSAgIEVEUF9Q U1JfUkVTVE9SRV9QU1JfQUNUSVZFX0NUWF9NQVNLCSgxIDw8IDI5KSAvKiBTVw0KPiA+IGNhbid0 IG1vZGlmeSAqLw0KPiA+IEBAIC00MjI2LDE2ICs0MjMzLDIyIEBAIGVudW0gew0KPiA+ICAjZGVm aW5lICAgRURQX1BTUl9UUkFOU0NPREVSX0FfU0hJRlQJCTgNCj4gPiAgI2RlZmluZSAgIEVEUF9Q U1JfVFJBTlNDT0RFUl9FRFBfU0hJRlQJCTANCj4gPiAgDQo+ID4gLSNkZWZpbmUgRURQX1BTUl9B VVhfQ1RMCQkJCV9NTUlPKGRldl9wcml2LQ0KPiA+ID5wc3JfbW1pb19iYXNlICsgMHgxMCkNCj4g PiArI2RlZmluZSBfU1JEX0FVWF9DVExfQQkJCQkweDYwODEwDQo+ID4gKyNkZWZpbmUgX1NSRF9B VVhfQ1RMX0VEUAkJCTB4NmY4MTANCj4gPiArI2RlZmluZSBFRFBfUFNSX0FVWF9DVEwodHJhbikJ CQlfTU1JTyhfUFNSX0FESigNCj4gPiB0cmFuLCBfU1JEX0FVWF9DVExfQSkpDQo+ID4gICNkZWZp bmUgICBFRFBfUFNSX0FVWF9DVExfVElNRV9PVVRfTUFTSwkJKDMgPDwgMjYpDQo+ID4gICNkZWZp bmUgICBFRFBfUFNSX0FVWF9DVExfTUVTU0FHRV9TSVpFX01BU0sJKDB4MWYgPDwgMjApDQo+ID4g ICNkZWZpbmUgICBFRFBfUFNSX0FVWF9DVExfUFJFQ0hBUkdFXzJVU19NQVNLCSgweGYgPDwgMTYp DQo+ID4gICNkZWZpbmUgICBFRFBfUFNSX0FVWF9DVExfRVJST1JfSU5URVJSVVBUCSgxIDw8IDEx KQ0KPiA+ICAjZGVmaW5lICAgRURQX1BTUl9BVVhfQ1RMX0JJVF9DTE9DS18yWF9NQVNLCSgweDdm ZikNCj4gPiAgDQo+ID4gLSNkZWZpbmUgRURQX1BTUl9BVVhfREFUQShpKQkJCV9NTUlPKGRldl9w cml2LQ0KPiA+ID5wc3JfbW1pb19iYXNlICsgMHgxNCArIChpKSAqIDQpIC8qIDUgcmVnaXN0ZXJz ICovDQo+ID4gKyNkZWZpbmUgX1NSRF9BVVhfREFUQV9BCQkJCTB4NjA4MTQNCj4gPiArI2RlZmlu ZSBfU1JEX0FVWF9EQVRBX0VEUAkJCTB4NmY4MTQNCj4gPiArI2RlZmluZSBFRFBfUFNSX0FVWF9E QVRBKHRyYW4sIGkpCQlfTU1JTyhfUFNSX0FESih0cmFuLA0KPiA+IF9TUkRfQVVYX0RBVEFfQSkg KyAoaSkgKyA0KSAvKiA1IHJlZ2lzdGVycyAqLw0KPiA+ICANCj4gPiAtI2RlZmluZSBFRFBfUFNS X1NUQVRVUwkJCQlfTU1JTyhkZXZfcHJpdi0NCj4gPiA+cHNyX21taW9fYmFzZSArIDB4NDApDQo+ ID4gKyNkZWZpbmUgX1NSRF9TVEFUVVNfQQkJCQkweDYwODQwDQo+ID4gKyNkZWZpbmUgX1NSRF9T VEFUVVNfRURQCQkJCTB4NmY4NDANCj4gPiArI2RlZmluZSBFRFBfUFNSX1NUQVRVUyh0cmFuKQkJ CV9NTUlPKF9QU1JfQURKKA0KPiA+IHRyYW4sIF9TUkRfU1RBVFVTX0EpKQ0KPiA+ICAjZGVmaW5l ICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSwkJKDcgPDwgMjkpDQo+ID4gICNkZWZpbmUgICBF RFBfUFNSX1NUQVRVU19TVEFURV9TSElGVAkJMjkNCj4gPiAgI2RlZmluZSAgIEVEUF9QU1JfU1RB VFVTX1NUQVRFX0lETEUJCSgwIDw8IDI5KQ0KPiA+IEBAIC00MjYwLDEwICs0MjczLDE1IEBAIGVu dW0gew0KPiA+ICAjZGVmaW5lICAgRURQX1BTUl9TVEFUVVNfU0VORElOR19UUDEJCSgxIDw8IDQp DQo+ID4gICNkZWZpbmUgICBFRFBfUFNSX1NUQVRVU19JRExFX01BU0sJCTB4Zg0KPiA+ICANCj4g PiAtI2RlZmluZSBFRFBfUFNSX1BFUkZfQ05UCQlfTU1JTyhkZXZfcHJpdi0+cHNyX21taW9fYmFz ZSArDQo+ID4gMHg0NCkNCj4gPiArI2RlZmluZSBfU1JEX1BFUkZfQ05UX0EJCQkweDYwODQ0DQo+ ID4gKyNkZWZpbmUgX1NSRF9QRVJGX0NOVF9FRFAJCTB4NmY4NDQNCj4gPiArI2RlZmluZSBFRFBf UFNSX1BFUkZfQ05UKHRyYW4pCQlfTU1JTyhfUFNSX0FESih0cmFuLA0KPiA+IF9TUkRfUEVSRl9D TlRfQSkpDQo+ID4gICNkZWZpbmUgICBFRFBfUFNSX1BFUkZfQ05UX01BU0sJCTB4ZmZmZmZmDQo+ ID4gIA0KPiA+IC0jZGVmaW5lIEVEUF9QU1JfREVCVUcJCQkJX01NSU8oZGV2X3ByaXYtDQo+ID4g PnBzcl9tbWlvX2Jhc2UgKyAweDYwKSAvKiBQU1JfTUFTSyBvbiBTS0wrICovDQo+ID4gKy8qIFBT Ul9NQVNLIG9uIFNLTCsgKi8NCj4gPiArI2RlZmluZSBfU1JEX0RFQlVHX0EJCQkJMHg2MDg2MA0K PiA+ICsjZGVmaW5lIF9TUkRfREVCVUdfRURQCQkJCTB4NmY4NjANCj4gPiArI2RlZmluZSBFRFBf UFNSX0RFQlVHKHRyYW4pCQkJX01NSU8oX1BTUl9BREooDQo+ID4gdHJhbiwgX1NSRF9ERUJVR19B KSkNCj4gPiAgI2RlZmluZSAgIEVEUF9QU1JfREVCVUdfTUFTS19NQVhfU0xFRVAgICAgICAgICAo MSA8PCAyOCkNCj4gPiAgI2RlZmluZSAgIEVEUF9QU1JfREVCVUdfTUFTS19MUFNQICAgICAgICAg ICAgICAoMSA8PCAyNykNCj4gPiAgI2RlZmluZSAgIEVEUF9QU1JfREVCVUdfTUFTS19NRU1VUCAg ICAgICAgICAgICAoMSA8PCAyNikNCj4gPiBAQCAtNDI3MSw3ICs0Mjg5LDkgQEAgZW51bSB7DQo+ ID4gICNkZWZpbmUgICBFRFBfUFNSX0RFQlVHX01BU0tfRElTUF9SRUdfV1JJVEUgICAgKDEgPDwg MTYpIC8qDQo+ID4gUmVzZXJ2ZWQgaW4gSUNMKyAqLw0KPiA+ICAjZGVmaW5lICAgRURQX1BTUl9E RUJVR19FWElUX09OX1BJWEVMX1VOREVSUlVOICgxIDw8IDE1KSAvKiBTS0wrDQo+ID4gKi8NCj4g PiAgDQo+ID4gLSNkZWZpbmUgRURQX1BTUjJfQ1RMCQkJX01NSU8oMHg2ZjkwMCkNCj4gPiArI2Rl ZmluZSBfUFNSMl9DVExfQQkJCTB4NjA5MDANCj4gPiArI2RlZmluZSBfUFNSMl9DVExfRURQCQkJ MHg2ZjkwMA0KPiA+ICsjZGVmaW5lIEVEUF9QU1IyX0NUTCh0cmFuKQkJX01NSU9fVFJBTlMyKHRy YW4sIF9QU1IyX0NUTF9BKQ0KPiA+ICAjZGVmaW5lICAgRURQX1BTUjJfRU5BQkxFCQkoMSA8PCAz MSkNCj4gPiAgI2RlZmluZSAgIEVEUF9TVV9UUkFDS19FTkFCTEUJCSgxIDw8IDMwKQ0KPiA+ICAj ZGVmaW5lICAgRURQX1lfQ09PUkRJTkFURV9WQUxJRAkoMSA8PCAyNikgLyogR0xLIGFuZCBDTkwr ICovDQo+ID4gQEAgLTQyOTMsOCArNDMxMyw4IEBAIGVudW0gew0KPiA+ICAjZGVmaW5lIF9QU1Jf RVZFTlRfVFJBTlNfQgkJCTB4NjE4NDgNCj4gPiAgI2RlZmluZSBfUFNSX0VWRU5UX1RSQU5TX0MJ CQkweDYyODQ4DQo+ID4gICNkZWZpbmUgX1BTUl9FVkVOVF9UUkFOU19ECQkJMHg2Mzg0OA0KPiA+ IC0jZGVmaW5lIF9QU1JfRVZFTlRfVFJBTlNfRURQCQkJMHg2Rjg0OA0KPiA+IC0jZGVmaW5lIFBT Ul9FVkVOVCh0cmFucykJCQlfTU1JT19UUkFOUzIodHJhbnMsDQo+ID4gX1BTUl9FVkVOVF9UUkFO U19BKQ0KPiA+ICsjZGVmaW5lIF9QU1JfRVZFTlRfVFJBTlNfRURQCQkJMHg2Zjg0OA0KPiA+ICsj ZGVmaW5lIFBTUl9FVkVOVCh0cmFuKQkJCQlfTU1JT19UUkFOUzIodHINCj4gPiBhbiwgX1BTUl9F VkVOVF9UUkFOU19BKQ0KPiA+ICAjZGVmaW5lICBQU1JfRVZFTlRfUFNSMl9XRF9USU1FUl9FWFBJ UkUJCSgxIDw8IDE3KQ0KPiA+ICAjZGVmaW5lICBQU1JfRVZFTlRfUFNSMl9ESVNBQkxFRAkJKDEg PDwgMTYpDQo+ID4gICNkZWZpbmUgIFBTUl9FVkVOVF9TVV9ESVJUWV9GSUZPX1VOREVSUlVOCSgx IDw8IDE1KQ0KPiA+IEBAIC00MzEyLDE1ICs0MzMyLDE2IEBAIGVudW0gew0KPiA+ICAjZGVmaW5l ICBQU1JfRVZFTlRfTFBTUF9NT0RFX0VYSVQJCSgxIDw8IDEpDQo+ID4gICNkZWZpbmUgIFBTUl9F VkVOVF9QU1JfRElTQUJMRQkJCSgxIDw8IDApDQo+ID4gIA0KPiA+IC0jZGVmaW5lIEVEUF9QU1Iy X1NUQVRVUwkJCV9NTUlPKDB4NmY5NDApDQo+ID4gKyNkZWZpbmUgX1BTUjJfU1RBVFVTX0EJCQkw eDYwOTQwDQo+ID4gKyNkZWZpbmUgX1BTUjJfU1RBVFVTX0VEUAkJMHg2Zjk0MA0KPiA+ICsjZGVm aW5lIEVEUF9QU1IyX1NUQVRVUyh0cmFuKQkJX01NSU9fVFJBTlMyKHRyYW4sDQo+ID4gX1BTUjJf U1RBVFVTX0EpDQo+ID4gICNkZWZpbmUgRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0sgICAgICgw eGYgPDwgMjgpDQo+ID4gICNkZWZpbmUgRURQX1BTUjJfU1RBVFVTX1NUQVRFX1NISUZUICAgIDI4 DQo+ID4gIA0KPiA+IC0jZGVmaW5lIF9QU1IyX1NVX1NUQVRVU18wCQkweDZGOTE0DQo+ID4gLSNk ZWZpbmUgX1BTUjJfU1VfU1RBVFVTXzEJCTB4NkY5MTgNCj4gPiAtI2RlZmluZSBfUFNSMl9TVV9T VEFUVVNfMgkJMHg2RjkxQw0KPiA+IC0jZGVmaW5lIF9QU1IyX1NVX1NUQVRVUyhpbmRleCkJCV9N TUlPKF9QSUNLX0VWRU4oKGluZGV4DQo+ID4gKSwgX1BTUjJfU1VfU1RBVFVTXzAsIF9QU1IyX1NV X1NUQVRVU18xKSkNCj4gPiAtI2RlZmluZSBQU1IyX1NVX1NUQVRVUyhmcmFtZSkJCShfUFNSMl9T VV9TVEFUVVMoKGZyYW1lDQo+ID4gKSAvIDMpKQ0KPiA+ICsjZGVmaW5lIF9QU1IyX1NVX1NUQVRV U19BCQkweDYwOTE0DQo+ID4gKyNkZWZpbmUgX1BTUjJfU1VfU1RBVFVTX0VEUAkJMHg2ZjkxNA0K PiA+ICsjZGVmaW5lIF9QU1IyX1NVX1NUQVRVUyh0cmFuLCBpbmRleCkJX01NSU8oX1RSQU5TMih0 cmFuLA0KPiA+IF9QU1IyX1NVX1NUQVRVU19BKSArIChpbmRleCkgKiA0KQ0KPiA+ICsjZGVmaW5l IFBTUjJfU1VfU1RBVFVTKHRyYW4sIGZyYW1lKQkoX1BTUjJfU1VfU1RBVFVTKHRyYW4sDQo+ID4g KGZyYW1lKSAvIDMpKQ0KPiA+ICAjZGVmaW5lIFBTUjJfU1VfU1RBVFVTX1NISUZUKGZyYW1lKQko KChmcmFtZSkgJSAzKSAqIDEwKQ0KPiA+ICAjZGVmaW5lIFBTUjJfU1VfU1RBVFVTX01BU0soZnJh bWUpCSgweDNmZiA8PA0KPiA+IFBTUjJfU1VfU1RBVFVTX1NISUZUKGZyYW1lKSkNCj4gPiAgI2Rl ZmluZSBQU1IyX1NVX1NUQVRVU19GUkFNRVMJCTgNCj4gPiAtLSANCj4gPiAyLjIyLjENCj4gPiAN Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnDQo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==