From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. Date: Wed, 20 Mar 2019 12:53:17 +0000 Message-ID: References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> <20190318171952.24302-4-mario.kleiner.de@gmail.com> <8ef78169-1893-0aee-9cb1-cce4054ebbcc@amd.com> <82efca66-1100-633f-2285-a9849d1bfc9e@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mario Kleiner Cc: "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gMy8yMC8xOSAzOjUxIEFNLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPiBPaywgZml4ZWQgYWxs IHRoZSBzdHlsZSBpc3N1ZXMgYW5kIHJhbiBjaGVja3BhdGNoIG92ZXIgdGhlIHBhdGNoZXMuIFRo YW5rcy4NCj4gDQo+IE9uIFR1ZSwgTWFyIDE5LCAyMDE5IGF0IDI6MzIgUE0gS2F6bGF1c2thcywg TmljaG9sYXMNCj4gPE5pY2hvbGFzLkthemxhdXNrYXNAYW1kLmNvbT4gd3JvdGU6DQo+Pg0KPj4g T24gMy8xOS8xOSA5OjIzIEFNLCBLYXpsYXVza2FzLCBOaWNob2xhcyB3cm90ZToNCj4+PiBPbiAz LzE4LzE5IDE6MTkgUE0sIE1hcmlvIEtsZWluZXIgd3JvdGU6DQo+Pj4+IEluIFZSUiBtb2RlLCBw cm9wZXIgdmJsYW5rL3BhZ2VmbGlwIHRpbWVzdGFtcHMgY2FuIG9ubHkgYmUgY29tcHV0ZWQNCj4+ Pj4gYWZ0ZXIgdGhlIGRpc3BsYXkgc2Nhbm91dCBwb3NpdGlvbiBoYXMgbGVmdCBmcm9udC1wb3Jj aC4gVGhlcmVmb3JlDQo+Pj4+IGRlbGF5IGNhbGxzIHRvIGRybV9jcnRjX2hhbmRsZV92Ymxhbmso KSwgYW5kIHRoZXJlYnkgY2FsbHMgdG8NCj4+Pj4gZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBh bmQgcGFnZWZsaXAgZXZlbnQgZGVsaXZlcnksIHRvIGFmdGVyIHRoZQ0KPj4+PiBlbmQgb2YgZnJv bnQtcG9yY2ggd2hlbiBpbiBWUlIgbW9kZS4NCj4+Pj4NCj4+Pj4gV2UgYWRkIGEgbmV3IHZ1cGRh dGUgaXJxLCB3aGljaCB0cmlnZ2VycyBhdCB0aGUgZW5kIG9mIHRoZSB2dXBkYXRlDQo+Pj4+IGlu dGVydmFsLCBpZS4gYXQgdGhlIGVuZCBvZiB2YmxhbmssIGFuZCBjYWxscyB0aGUgY29yZSB2Ymxh bmsgaGFuZGxlcg0KPj4+PiBmdW5jdGlvbi4gVGhlIG5ldyBpcnEgaGFuZGxlciBpcyBub3QgZXhl Y3V0ZWQgaW4gc3RhbmRhcmQgbm9uLVZSUg0KPj4+PiBtb2RlLCBzbyB2YmxhbmsgaGFuZGxpbmcg Zm9yIGZpeGVkIHJlZnJlc2ggcmF0ZSBtb2RlIGlzIGlkZW50aWNhbA0KPj4+PiB0byB0aGUgcGFz dCBpbXBsZW1lbnRhdGlvbi4NCj4+Pj4NCj4+Pj4gU2lnbmVkLW9mZi1ieTogTWFyaW8gS2xlaW5l ciA8bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5jb20+DQo+Pg0KPj4gTG9va3MgSSBsb3N0IHNvbWUg b2YgbXkgY29tbWVudHMgSSB3YW50ZWQgdG8gc2VuZCBpbiBteSBsYXN0IGVtYWlsLiBKdXN0DQo+ PiBhIGZldyBuaXRwaWNrcyAoaW5jbHVkaW5nIHNvbWUgdGhpbmdzIFBhdWwgbWVudGlvbmVkKS4N Cj4+DQo+PiBBbHNvIG1lYW50IHRvIENDIEhhcnJ5IG9uIHRoaXMgYXMgd2VsbC4NCj4+DQo+Pj4+ IC0tLQ0KPj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAgICAg ICAgICAgICAgfCAgIDEgKw0KPj4+PiAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG0uYyAgfCAxMjkgKysrKysrKysrKysrKysrKysrKystDQo+Pj4+ICAg ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oICB8ICAg OSArKw0KPj4+PiAgICAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9k bV9pcnEuYyAgfCAgMjIgKysrKw0KPj4+PiAgICAgLi4uL2FtZC9kaXNwbGF5L2RjL2lycS9kY2Ux MTAvaXJxX3NlcnZpY2VfZGNlMTEwLmMgfCAgIDcgKy0NCj4+Pj4gICAgIC4uLi9hbWQvZGlzcGxh eS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jIHwgICA3ICstDQo+Pj4+ICAgICAu Li4vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMgICB8ICAgNiAr LQ0KPj4+PiAgICAgLi4uL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24x MC5jICAgfCAgNDAgKysrKystLQ0KPj4+PiAgICAgOCBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0 aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pDQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdS5oDQo+Pj4+IGluZGV4IGY4ODc2MWEuLjY0MTY3ZGQgMTAwNjQ0DQo+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+Pj4+IEBAIC04MjcsNiArODI3LDcgQEAgc3Ry dWN0IGFtZGdwdV9kZXZpY2Ugew0KPj4+PiAgICAgICAvKiBGb3IgcHJlLURDRTExLiBEQ0UxMSBh bmQgbGF0ZXIgYXJlIGluICJzdHJ1Y3QgYW1kZ3B1X2RldmljZS0+ZG0iICovDQo+Pj4+ICAgICAg IHN0cnVjdCB3b3JrX3N0cnVjdCAgICAgICAgICAgICAgaG90cGx1Z193b3JrOw0KPj4+PiAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgICAgICAgICAgIGNydGNfaXJxOw0KPj4+PiArICAgIHN0 cnVjdCBhbWRncHVfaXJxX3NyYyAgICAgICAgICAgdnVwZGF0ZV9pcnE7DQo+Pj4+ICAgICAgIHN0 cnVjdCBhbWRncHVfaXJxX3NyYyAgICAgICAgICAgcGFnZWZsaXBfaXJxOw0KPj4+PiAgICAgICBz dHJ1Y3QgYW1kZ3B1X2lycV9zcmMgICAgICAgICAgIGhwZF9pcnE7DQo+Pj4+DQo+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYw0KPj4+ PiBpbmRleCA4NWU0Zjg3Li41NTVkOWU5ZiAxMDA2NDQNCj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYw0KPj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+Pj4+IEBAIC0zMTUs NiArMzE1LDMyIEBAIHN0YXRpYyB2b2lkIGRtX3BmbGlwX2hpZ2hfaXJxKHZvaWQgKmludGVycnVw dF9wYXJhbXMpDQo+Pj4+ICAgICAgIGRybV9jcnRjX3ZibGFua19wdXQoJmFtZGdwdV9jcnRjLT5i YXNlKTsNCj4+Pj4gICAgIH0NCj4+Pj4NCj4+Pj4gK3N0YXRpYyB2b2lkIGRtX3Z1cGRhdGVfaGln aF9pcnEodm9pZCAqaW50ZXJydXB0X3BhcmFtcykNCj4+Pj4gK3sNCj4+Pj4gKyAgICBzdHJ1Y3Qg Y29tbW9uX2lycV9wYXJhbXMgKmlycV9wYXJhbXMgPSBpbnRlcnJ1cHRfcGFyYW1zOw0KPj4+PiAr ICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaXJxX3BhcmFtcy0+YWRldjsNCj4+Pj4g KyAgICBzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFjcnRjOw0KPj4+PiArICAgIHN0cnVjdCBkbV9jcnRj X3N0YXRlICphY3J0Y19zdGF0ZTsNCj4+Pj4gKw0KPj4+PiArICAgIGFjcnRjID0gZ2V0X2NydGNf Ynlfb3RnX2luc3QoYWRldiwgaXJxX3BhcmFtcy0+aXJxX3NyYyAtIElSUV9UWVBFX1ZVUERBVEUp Ow0KPj4+PiArDQo+Pj4+ICsgICAgaWYgKGFjcnRjKSB7DQo+Pj4+ICsgICAgICAgICAgICBhY3J0 Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoYWNydGMtPmJhc2Uuc3RhdGUpOw0KPj4+PiArDQo+ Pj4+ICsgICAgICAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJjcnRjOiVkLCB2dXBkYXRlLXZycjol ZFxuIiwgYWNydGMtPmNydGNfaWQsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0YXRlKSk7DQo+Pj4+ICsNCj4+Pj4gKyAgICAg ICAgICAgIC8qIENvcmUgdmJsYW5rIGhhbmRsaW5nIGlzIGRvbmUgaGVyZSBhZnRlciBlbmQgb2Yg ZnJvbnQtcG9yY2ggaW4NCj4+Pj4gKyAgICAgICAgICAgICAqIHZyciBtb2RlLCBhcyB2Ymxhbmsg dGltZXN0YW1waW5nIHdpbGwgZ2l2ZSB2YWxpZCByZXN1bHRzDQo+Pj4+ICsgICAgICAgICAgICAg KiB3aGlsZSBub3cgZG9uZSBhZnRlciBmcm9udC1wb3JjaC4gVGhpcyB3aWxsIGFsc28gZGVsaXZl cg0KPj4+PiArICAgICAgICAgICAgICogcGFnZS1mbGlwIGNvbXBsZXRpb24gZXZlbnRzIHRoYXQg aGF2ZSBiZWVuIHF1ZXVlZCB0byB1cw0KPj4+PiArICAgICAgICAgICAgICogaWYgYSBwYWdlZmxp cCBoYXBwZW5lZCBpbnNpZGUgZnJvbnQtcG9yY2guDQo+Pj4+ICsgICAgICAgICAgICAgKi8NCj4+ Pj4gKyAgICAgICAgICAgIGlmIChhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+ Pj4+ICsgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5i YXNlKQ0KPj4+IEkgd2FzIHRoaW5raW5nIHRoYXQgMyBhbmQgNCBtaWdodCBoYXZlIHRvIGJlIG1l cmdlZCwgYnV0IFZSUiBwZmxpcA0KPj4+IHRpbWVzdGFtcGluZyBzZWVtcyB0byBiZSB0aGUgc2Ft ZSBhcyBpdCB3YXMgYmVmb3JlIChvZmYgYnkgYSBsaW5lIG9yDQo+Pj4gdHdvKSBzaW5jZSBpdCdz IG5vdCBoYW5kbGVkIGhlcmUgeWV0LiBUaGlzIHNlZW1zIHRvIGZpeCB2YmxhbmsgZXZlbnRzDQo+ Pj4gYW5kIHRpbWVzdGFtcGluZyBhdCBsZWFzdC4NCj4+Pg0KPj4+PiArICAgIH0NCj4+Pj4gK30N Cj4+Pj4gKw0KPj4+PiAgICAgc3RhdGljIHZvaWQgZG1fY3J0Y19oaWdoX2lycSh2b2lkICppbnRl cnJ1cHRfcGFyYW1zKQ0KPj4+PiAgICAgew0KPj4+PiAgICAgICBzdHJ1Y3QgY29tbW9uX2lycV9w YXJhbXMgKmlycV9wYXJhbXMgPSBpbnRlcnJ1cHRfcGFyYW1zOw0KPj4+PiBAQCAtMzI1LDExICsz NTEsMjQgQEAgc3RhdGljIHZvaWQgZG1fY3J0Y19oaWdoX2lycSh2b2lkICppbnRlcnJ1cHRfcGFy YW1zKQ0KPj4+PiAgICAgICBhY3J0YyA9IGdldF9jcnRjX2J5X290Z19pbnN0KGFkZXYsIGlycV9w YXJhbXMtPmlycV9zcmMgLSBJUlFfVFlQRV9WQkxBTkspOw0KPj4+Pg0KPj4+PiAgICAgICBpZiAo YWNydGMpIHsNCj4+Pj4gLSAgICAgICAgICAgIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRj LT5iYXNlKTsNCj4+Pj4gLSAgICAgICAgICAgIGFtZGdwdV9kbV9jcnRjX2hhbmRsZV9jcmNfaXJx KCZhY3J0Yy0+YmFzZSk7DQo+Pj4+IC0NCj4+Pj4gICAgICAgICAgICAgICBhY3J0Y19zdGF0ZSA9 IHRvX2RtX2NydGNfc3RhdGUoYWNydGMtPmJhc2Uuc3RhdGUpOw0KPj4+Pg0KPj4+PiArICAgICAg ICAgICAgRFJNX0RFQlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRj LT5jcnRjX2lkLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbWRncHVfZG1f dnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICAvKiBD b3JlIHZibGFuayBoYW5kbGluZyBhdCBzdGFydCBvZiBmcm9udC1wb3JjaCBpcyBvbmx5IHBvc3Np YmxlDQo+Pj4+ICsgICAgICAgICAgICAgKiBpbiBub24tdnJyIG1vZGUsIGFzIG9ubHkgdGhlcmUg dmJsYW5rIHRpbWVzdGFtcGluZyB3aWxsIGdpdmUNCj4+Pj4gKyAgICAgICAgICAgICAqIHZhbGlk IHJlc3VsdHMgd2hpbGUgZG9uZSBpbiBmcm9udC1wb3JjaC4gT3RoZXJ3aXNlIGRlZmVyIGl0DQo+ Pj4+ICsgICAgICAgICAgICAgKiB0byBkbV92dXBkYXRlX2hpZ2hfaXJxIGFmdGVyIGVuZCBvZiBm cm9udC1wb3JjaC4NCj4+Pj4gKyAgICAgICAgICAgICAqLw0KPj4+PiArICAgICAgICAgICAgaWYg KCFhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5iYXNlKTsNCj4+Pj4gKw0KPj4+ PiArICAgICAgICAgICAgLyogRm9sbG93aW5nIHN0dWZmIG11c3QgaGFwcGVuIGF0IHN0YXJ0IG9m IHZibGFuaywgZm9yIGNyYw0KPj4+PiArICAgICAgICAgICAgICogY29tcHV0YXRpb24gYW5kIGJl bG93LXRoZS1yYW5nZSBidHIgc3VwcG9ydCBpbiB2cnIgbW9kZS4NCj4+Pj4gKyAgICAgICAgICAg ICAqLw0KPj4+PiArICAgICAgICAgICAgYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFj cnRjLT5iYXNlKTsNCj4+Pj4gKw0KPj4+PiAgICAgICAgICAgICAgIGlmIChhY3J0Y19zdGF0ZS0+ c3RyZWFtICYmDQo+Pj4+ICAgICAgICAgICAgICAgICAgIGFjcnRjX3N0YXRlLT52cnJfcGFyYW1z LnN1cHBvcnRlZCAmJg0KPj4+PiAgICAgICAgICAgICAgICAgICBhY3J0Y19zdGF0ZS0+ZnJlZXN5 bmNfY29uZmlnLnN0YXRlID09IFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEUpIHsNCj4+Pj4gQEAg LTE0NDcsNiArMTQ4NiwyNyBAQCBzdGF0aWMgaW50IGRjZTExMF9yZWdpc3Rlcl9pcnFfaGFuZGxl cnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRtX2NydGNfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7DQo+Pj4+ICAgICAgIH0N Cj4+Pj4NCj4+Pj4gKyAgICAvKiBVc2UgVlVQREFURSBpbnRlcnJ1cHQgKi8NCj4+Pj4gKyAgICBm b3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0QxX1ZfVVBEQVRFX0lOVDsgaSA8PSBWSVNMQU5E UzMwX0lWX1NSQ0lEX0Q2X1ZfVVBEQVRFX0lOVDsgaSs9Mikgew0KPj4+PiArICAgICAgICAgICAg ciA9IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIGNsaWVudF9pZCwgaSwgJmFkZXYtPnZ1cGRhdGVf aXJxKTsNCj4+Pj4gKyAgICAgICAgICAgIGlmIChyKSB7DQo+Pj4+ICsgICAgICAgICAgICAgICAg ICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCB2dXBkYXRlIGlycSBpZCFcbiIpOw0KPj4+PiAr ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsNCj4+Pj4gKyAgICAgICAgICAgIH0NCj4+Pj4g Kw0KPj4+PiArICAgICAgICAgICAgaW50X3BhcmFtcy5pbnRfY29udGV4dCA9IElOVEVSUlVQVF9I SUdIX0lSUV9DT05URVhUOw0KPj4+PiArICAgICAgICAgICAgaW50X3BhcmFtcy5pcnFfc291cmNl ID0NCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgZGNfaW50ZXJydXB0X3RvX2lycV9zb3VyY2Uo ZGMsIGksIDApOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICBjX2lycV9wYXJhbXMgPSAmYWRl di0+ZG0udnVwZGF0ZV9wYXJhbXNbaW50X3BhcmFtcy5pcnFfc291cmNlIC0gRENfSVJRX1NPVVJD RV9WVVBEQVRFMV07DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgIGNfaXJxX3BhcmFtcy0+YWRl diA9IGFkZXY7DQo+Pj4+ICsgICAgICAgICAgICBjX2lycV9wYXJhbXMtPmlycV9zcmMgPSBpbnRf cGFyYW1zLmlycV9zb3VyY2U7DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgIGFtZGdwdV9kbV9p cnFfcmVnaXN0ZXJfaW50ZXJydXB0KGFkZXYsICZpbnRfcGFyYW1zLA0KPj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRtX3Z1cGRhdGVfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7DQo+ Pj4+ICsgICAgfQ0KPj4+PiArDQo+Pj4+ICAgICAgIC8qIFVzZSBHUlBIX1BGTElQIGludGVycnVw dCAqLw0KPj4+PiAgICAgICBmb3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0QxX0dSUEhfUEZM SVA7DQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBpIDw9IFZJU0xBTkRTMzBfSVZfU1JDSURf RDZfR1JQSF9QRkxJUDsgaSArPSAyKSB7DQo+Pj4+IEBAIC0xNTMyLDYgKzE1OTIsMzQgQEAgc3Rh dGljIGludCBkY24xMF9yZWdpc3Rlcl9pcnFfaGFuZGxlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtX2NydGNfaGlnaF9p cnEsIGNfaXJxX3BhcmFtcyk7DQo+Pj4+ICAgICAgIH0NCj4+Pj4NCj4+Pj4gKyAgICAvKiBVc2Ug VlVQREFURV9OT19MT0NLIGludGVycnVwdCBvbiBEQ04sIHdoaWNoIHNlZW1zIHRvIGNvcnJlc3Bv bmQgdG8NCj4+Pj4gKyAgICAgKiB0aGUgcmVndWxhciBWVVBEQVRFIGludGVycnVwdCBvbiBEQ0Uu IFdlIHdhbnQgRENfSVJRX1NPVVJDRV9WVVBEQVRFeA0KPj4+PiArICAgICAqIHRvIHRyaWdnZXIg YXQgZW5kIG9mIGVhY2ggdmJsYW5rLCByZWdhcmRsZXNzIG9mIHN0YXRlIG9mIHRoZSBsb2NrLA0K Pj4+PiArICAgICAqIG1hdGNoaW5nIERDRSBiZWhhdmlvdXIuDQo+Pj4+ICsgICAgICovDQo+Pj4+ ICsgICAgZm9yIChpID0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tf SU5URVJSVVBUOw0KPj4+PiArICAgICAgICAgaSA8PSBEQ05fMV8wX19TUkNJRF9fT1RHMF9JSENf Vl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQgKyBhZGV2LT5tb2RlX2luZm8ubnVtX2NydGMgLSAx Ow0KPj4+PiArICAgICAgICAgaSsrKSB7DQo+Pj4+ICsgICAgICAgICAgICByID0gYW1kZ3B1X2ly cV9hZGRfaWQoYWRldiwgU09DMTVfSUhfQ0xJRU5USURfRENFLCBpLCAmYWRldi0+dnVwZGF0ZV9p cnEpOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICBpZiAocikgew0KPj4+PiArICAgICAgICAg ICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgdnVwZGF0ZSBpcnEgaWQhXG4iKTsN Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7DQo+Pj4+ICsgICAgICAgICAgICB9 DQo+Pj4+ICsNCj4+Pj4gKyAgICAgICAgICAgIGludF9wYXJhbXMuaW50X2NvbnRleHQgPSBJTlRF UlJVUFRfSElHSF9JUlFfQ09OVEVYVDsNCj4+Pj4gKyAgICAgICAgICAgIGludF9wYXJhbXMuaXJx X3NvdXJjZSA9DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGRjX2ludGVycnVwdF90b19pcnFf c291cmNlKGRjLCBpLCAwKTsNCj4+Pj4gKw0KPj4+PiArICAgICAgICAgICAgY19pcnFfcGFyYW1z ID0gJmFkZXYtPmRtLnZ1cGRhdGVfcGFyYW1zW2ludF9wYXJhbXMuaXJxX3NvdXJjZSAtIERDX0lS UV9TT1VSQ0VfVlVQREFURTFdOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICBjX2lycV9wYXJh bXMtPmFkZXYgPSBhZGV2Ow0KPj4+PiArICAgICAgICAgICAgY19pcnFfcGFyYW1zLT5pcnFfc3Jj ID0gaW50X3BhcmFtcy5pcnFfc291cmNlOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgICAgICBhbWRn cHVfZG1faXJxX3JlZ2lzdGVyX2ludGVycnVwdChhZGV2LCAmaW50X3BhcmFtcywNCj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkbV92dXBkYXRlX2hpZ2hfaXJxLCBjX2lycV9wYXJh bXMpOw0KPj4+PiArICAgIH0NCj4+Pj4gKw0KPj4+PiAgICAgICAvKiBVc2UgR1JQSF9QRkxJUCBp bnRlcnJ1cHQgKi8NCj4+Pj4gICAgICAgZm9yIChpID0gRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZM SVBfSU5URVJSVVBUOw0KPj4+PiAgICAgICAgICAgICAgICAgICAgICAgaSA8PSBEQ05fMV8wX19T UkNJRF9fSFVCUDBfRkxJUF9JTlRFUlJVUFQgKyBhZGV2LT5tb2RlX2luZm8ubnVtX2NydGMgLSAx Ow0KPj4+PiBAQCAtMzIyNiwxMiArMzMxNCw0MiBAQCBkbV9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+Pj4+ICAgICAgIHJldHVybiAmc3RhdGUtPmJhc2U7DQo+ Pj4+ICAgICB9DQo+Pj4+DQo+Pj4+ICtzdGF0aWMgaW5saW5lIGludCBkbV9zZXRfdnVwZGF0ZV9p cnEoc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIGVuYWJsZSkNCj4+Pj4gK3sNCj4+Pj4gKyAg ICBlbnVtIGRjX2lycV9zb3VyY2UgaXJxX3NvdXJjZTsNCj4+Pj4gKyAgICBzdHJ1Y3QgYW1kZ3B1 X2NydGMgKmFjcnRjID0gdG9fYW1kZ3B1X2NydGMoY3J0Yyk7DQo+Pj4+ICsgICAgc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPj4+PiArICAgIGlu dCByYzsNCj4+Pj4gKw0KPj4+PiArICAgIGlycV9zb3VyY2UgPSBJUlFfVFlQRV9WVVBEQVRFICsg YWNydGMtPm90Z19pbnN0Ow0KPj4+PiArDQo+Pj4+ICsgICAgcmMgPSBkY19pbnRlcnJ1cHRfc2V0 KGFkZXYtPmRtLmRjLCBpcnFfc291cmNlLCBlbmFibGUpID8gMCA6IC1FQlVTWTsNCj4+Pj4gKw0K Pj4+PiArICAgIERSTV9ERUJVR19EUklWRVIoIiVzOiBjcnRjICVkIC0gdnVwZGF0ZSBpcnEgJXNh Ymxpbmc6IHI9JWRcbiIsDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYWNy dGMtPmNydGNfaWQsIGVuYWJsZSA/ICJlbiIgOiAiZGlzIiwgcmMpOw0KPj4NCj4+IFRoaXMgZXh0 cmEgX19mdW5jX18gaXMgcmVkdW5kYW50IGhlcmUuDQo+Pg0KPiANCj4gWWVwLiBJIHRoaW5rIG1h eWJlIHRoZSB3aG9sZSBkZWJ1ZyBtZXNzYWdlIGlzIHJlZHVuZGFudCBieSBub3cuIE1heWJlIGRy b3AgaXQ/DQo+IA0KPj4+PiArICAgIHJldHVybiByYzsNCj4+Pj4gK30NCj4+Pj4NCj4+Pj4gICAg IHN0YXRpYyBpbmxpbmUgaW50IGRtX3NldF92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjLCBi b29sIGVuYWJsZSkNCj4+Pj4gICAgIHsNCj4+Pj4gICAgICAgZW51bSBkY19pcnFfc291cmNlIGly cV9zb3VyY2U7DQo+Pj4+ICAgICAgIHN0cnVjdCBhbWRncHVfY3J0YyAqYWNydGMgPSB0b19hbWRn cHVfY3J0YyhjcnRjKTsNCj4+Pj4gICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBj cnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPj4+PiArICAgIHN0cnVjdCBkbV9jcnRjX3N0YXRlICph Y3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPj4+PiArICAgIGlu dCByYyA9IDA7DQo+Pj4+ICsNCj4+Pj4gKyAgICBpZiAoZW5hYmxlKSB7DQo+Pj4+ICsgICAgICAg ICAgICAvKiB2YmxhbmsgaXJxIG9uIC0+IE9ubHkgbmVlZCB2dXBkYXRlIGlycSBpbiB2cnIgbW9k ZSAqLw0KPj4+PiArICAgICAgICAgICAgaWYgKGFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0 YXRlKSkNCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmMgPSBkbV9zZXRfdnVwZGF0ZV9pcnEo Y3J0YywgdHJ1ZSk7DQo+Pj4+ICsgICAgfQ0KPj4+PiArICAgIGVsc2Ugew0KPj4+DQo+Pj4gc2hv dWxkIGJlIH0gZWxzZSB7DQo+Pj4NCj4+Pj4gKyAgICAgICAgICAgIC8qIHZibGFuayBpcnEgb2Zm IC0+IHZ1cGRhdGUgaXJxIG9mZiAqLw0KPj4+PiArICAgICAgICAgICAgcmMgPSBkbV9zZXRfdnVw ZGF0ZV9pcnEoY3J0YywgZmFsc2UpOw0KPj4+PiArICAgIH0NCj4+Pj4gKw0KPj4+PiArICAgIGlm IChyYykNCj4+Pj4gKyAgICAgICAgICAgIHJldHVybiByYzsNCj4+Pj4NCj4+Pj4gICAgICAgaXJx X3NvdXJjZSA9IElSUV9UWVBFX1ZCTEFOSyArIGFjcnRjLT5vdGdfaW5zdDsNCj4+Pj4gICAgICAg cmV0dXJuIGRjX2ludGVycnVwdF9zZXQoYWRldi0+ZG0uZGMsIGlycV9zb3VyY2UsIGVuYWJsZSkg PyAwIDogLUVCVVNZOw0KPj4+PiBAQCAtNDc0MSw3ICs0ODU5LDExIEBAIHN0YXRpYyB2b2lkIGFt ZGdwdV9kbV9oYW5kbGVfdnJyX3RyYW5zaXRpb24oc3RydWN0IGRtX2NydGNfc3RhdGUgKm9sZF9z dGF0ZSwNCj4+Pj4gICAgICAgICAgICAgICAgKiBXaGlsZSBWUlIgaXMgYWN0aXZlLCB3ZSBtdXN0 IG5vdCBkaXNhYmxlIHZibGFuayBpcnEsIGFzIGENCj4+Pj4gICAgICAgICAgICAgICAgKiByZWVu YWJsZSBhZnRlciBkaXNhYmxlIHdvdWxkIGNvbXB1dGUgYm9ndXMgdmJsYW5rL3BmbGlwDQo+Pj4+ ICAgICAgICAgICAgICAgICogdGltZXN0YW1wcyBpZiBpdCBsaWtlbHkgaGFwcGVuZWQgaW5zaWRl IGRpc3BsYXkgZnJvbnQtcG9yY2guDQo+Pj4+ICsgICAgICAgICAgICAgKg0KPj4+PiArICAgICAg ICAgICAgICogV2UgYWxzbyBuZWVkIHZ1cGRhdGUgaXJxIGZvciB0aGUgYWN0dWFsIGNvcmUgdmJs YW5rIGhhbmRsaW5nDQo+Pj4+ICsgICAgICAgICAgICAgKiBhdCBlbmQgb2YgdmJsYW5rLg0KPj4+ PiAgICAgICAgICAgICAgICAqLw0KPj4+PiArICAgICAgICAgICAgZG1fc2V0X3Z1cGRhdGVfaXJx KG5ld19zdGF0ZS0+YmFzZS5jcnRjLCB0cnVlKTsNCj4+Pj4gICAgICAgICAgICAgICBkcm1fY3J0 Y192YmxhbmtfZ2V0KG5ld19zdGF0ZS0+YmFzZS5jcnRjKTsNCj4+Pj4gICAgICAgICAgICAgICBE Uk1fREVCVUdfRFJJVkVSKCIlczogY3J0Yz0ldSBWUlIgb2ZmLT5vbjogR2V0IHZibGFuayByZWZc biIsDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbmV3X3N0 YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQpOw0KPj4+PiBAQCAtNDc1MCw2ICs0ODcyLDcgQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X2RtX2hhbmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19z dGF0ZSAqb2xkX3N0YXRlLA0KPj4+PiAgICAgICAgICAgICAgIC8qIFRyYW5zaXRpb24gVlJSIGFj dGl2ZSAtPiBpbmFjdGl2ZToNCj4+Pj4gICAgICAgICAgICAgICAgKiBBbGxvdyB2YmxhbmsgaXJx IGRpc2FibGUgYWdhaW4gZm9yIGZpeGVkIHJlZnJlc2ggcmF0ZS4NCj4+Pj4gICAgICAgICAgICAg ICAgKi8NCj4+Pj4gKyAgICAgICAgICAgIGRtX3NldF92dXBkYXRlX2lycShuZXdfc3RhdGUtPmJh c2UuY3J0YywgZmFsc2UpOw0KPj4+PiAgICAgICAgICAgICAgIGRybV9jcnRjX3ZibGFua19wdXQo bmV3X3N0YXRlLT5iYXNlLmNydGMpOw0KPj4+PiAgICAgICAgICAgICAgIERSTV9ERUJVR19EUklW RVIoIiVzOiBjcnRjPSV1IFZSUiBvbi0+b2ZmOiBEcm9wIHZibGFuayByZWZcbiIsDQo+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNy dGMtPmJhc2UuaWQpOw0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmgNCj4+Pj4gaW5kZXggZjc0MWVhMy4uMGIzNWY4NCAxMDA2NDQN Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG0uaA0KPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5oDQo+Pj4+IEBAIC0xODIsNiArMTgyLDE1IEBAIHN0cnVjdCBhbWRncHVfZGlzcGxh eV9tYW5hZ2VyIHsNCj4+Pj4gICAgICAgc3RydWN0IGNvbW1vbl9pcnFfcGFyYW1zDQo+Pj4+ICAg ICAgIHZibGFua19wYXJhbXNbRENfSVJRX1NPVVJDRV9WQkxBTks2IC0gRENfSVJRX1NPVVJDRV9W QkxBTksxICsgMV07DQo+Pj4+DQo+Pj4+ICsgICAgLyoqDQo+Pj4+ICsgICAgICogQHZ1cGRhdGVf cGFyYW1zOg0KPj4+PiArICAgICAqDQo+Pj4+ICsgICAgICogVmVydGljYWwgdXBkYXRlIElSUSBw YXJhbWV0ZXJzLCBwYXNzZWQgdG8gcmVnaXN0ZXJlZCBoYW5kbGVycyB3aGVuDQo+Pj4+ICsgICAg ICogdHJpZ2dlcmVkLg0KPj4+PiArICAgICAqLw0KPj4+PiArICAgIHN0cnVjdCBjb21tb25faXJx X3BhcmFtcw0KPj4+PiArICAgIHZ1cGRhdGVfcGFyYW1zW0RDX0lSUV9TT1VSQ0VfVlVQREFURTYg LSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxICsgMV07DQo+Pj4+ICsNCj4+Pj4gICAgICAgc3Bpbmxv Y2tfdCBpcnFfaGFuZGxlcl9saXN0X3RhYmxlX2xvY2s7DQo+Pj4+DQo+Pj4+ICAgICAgIHN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHRfZGV2Ow0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPj4+PiBp bmRleCBjZDEwZjc3Li5mZWU3ODM3IDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPj4+PiBAQCAt Njc0LDExICs2NzQsMzAgQEAgc3RhdGljIGludCBhbWRncHVfZG1fc2V0X2NydGNfaXJxX3N0YXRl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+PiAgICAgICAgICAgICAgIF9fZnVuY19f KTsNCj4+Pj4gICAgIH0NCj4+Pj4NCj4+Pj4gK3N0YXRpYyBpbnQgYW1kZ3B1X2RtX3NldF92dXBk YXRlX2lycV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqc291 cmNlLA0KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgY3J0Y19pZCwNCj4+Pg0KPj4+IHNob3VsZCBiZSB1bnNpZ25lZCBpbnQgY3J0Y19pZA0KPj4+ DQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGFtZGdw dV9pbnRlcnJ1cHRfc3RhdGUgc3RhdGUpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgcmV0dXJuIGRtX2ly cV9zdGF0ZSgNCj4+Pj4gKyAgICAgICAgICAgIGFkZXYsDQo+Pj4+ICsgICAgICAgICAgICBzb3Vy Y2UsDQo+Pj4+ICsgICAgICAgICAgICBjcnRjX2lkLA0KPj4+PiArICAgICAgICAgICAgc3RhdGUs DQo+Pj4+ICsgICAgICAgICAgICBJUlFfVFlQRV9WVVBEQVRFLA0KPj4+PiArICAgICAgICAgICAg X19mdW5jX18pOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICAgICBzdGF0aWMgY29uc3Qgc3RydWN0 IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIGRtX2NydGNfaXJxX2Z1bmNzID0gew0KPj4+PiAgICAgICAu c2V0ID0gYW1kZ3B1X2RtX3NldF9jcnRjX2lycV9zdGF0ZSwNCj4+Pj4gICAgICAgLnByb2Nlc3Mg PSBhbWRncHVfZG1faXJxX2hhbmRsZXIsDQo+Pj4+ICAgICB9Ow0KPj4+Pg0KPj4+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhbWRncHVfaXJxX3NyY19mdW5jcyBkbV92dXBkYXRlX2lycV9mdW5jcyA9 IHsNCj4+Pj4gKyAgICAuc2V0ID0gYW1kZ3B1X2RtX3NldF92dXBkYXRlX2lycV9zdGF0ZSwNCj4+ Pj4gKyAgICAucHJvY2VzcyA9IGFtZGdwdV9kbV9pcnFfaGFuZGxlciwNCj4+Pj4gK307DQo+Pj4+ ICsNCj4+Pj4gICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3MgZG1f cGFnZWZsaXBfaXJxX2Z1bmNzID0gew0KPj4+PiAgICAgICAuc2V0ID0gYW1kZ3B1X2RtX3NldF9w ZmxpcF9pcnFfc3RhdGUsDQo+Pj4+ICAgICAgIC5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5k bGVyLA0KPj4+PiBAQCAtNjk1LDYgKzcxNCw5IEBAIHZvaWQgYW1kZ3B1X2RtX3NldF9pcnFfZnVu Y3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+ICAgICAgIGFkZXYtPmNydGNfaXJx Lm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YzsNCj4+Pj4gICAgICAgYWRldi0+ Y3J0Y19pcnEuZnVuY3MgPSAmZG1fY3J0Y19pcnFfZnVuY3M7DQo+Pj4+DQo+Pj4+ICsgICAgYWRl di0+dnVwZGF0ZV9pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOw0KPj4+ PiArICAgIGFkZXYtPnZ1cGRhdGVfaXJxLmZ1bmNzID0gJmRtX3Z1cGRhdGVfaXJxX2Z1bmNzOw0K Pj4+PiArDQo+Pj4+ICAgICAgIGFkZXYtPnBhZ2VmbGlwX2lycS5udW1fdHlwZXMgPSBhZGV2LT5t b2RlX2luZm8ubnVtX2NydGM7DQo+Pj4+ICAgICAgIGFkZXYtPnBhZ2VmbGlwX2lycS5mdW5jcyA9 ICZkbV9wYWdlZmxpcF9pcnFfZnVuY3M7DQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2Rj ZTExMC5jDQo+Pj4+IGluZGV4IGFmZTA4NzYuLjg2OTg3ZjUgMTAwNjQ0DQo+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTEx MC5jDQo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEw L2lycV9zZXJ2aWNlX2RjZTExMC5jDQo+Pj4+IEBAIC04MSw2ICs4MSwxMSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7 DQo+Pj4+ICAgICAgIC5hY2sgPSBOVUxMDQo+Pj4+ICAgICB9Ow0KPj4+Pg0KPj4+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5j cyA9IHsNCj4+Pj4gKyAgICAuc2V0ID0gTlVMTCwNCj4+Pj4gKyAgICAuYWNrID0gTlVMTA0KPj4+ PiArfTsNCj4+Pj4gKw0KPj4+PiAgICAgI2RlZmluZSBocGRfaW50X2VudHJ5KHJlZ19udW0pXA0K Pj4+PiAgICAgICBbRENfSVJRX1NPVVJDRV9IUEQxICsgcmVnX251bV0gPSB7XA0KPj4+PiAgICAg ICAgICAgICAgIC5lbmFibGVfcmVnID0gbW1IUEQgIyMgcmVnX251bSAjIyBfRENfSFBEX0lOVF9D T05UUk9MLFwNCj4+Pj4gQEAgLTEzNyw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGly cV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+Pj4+ICAgICAg ICAgICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVB Ul9NQVNLLFwNCj4+Pj4gICAgICAgICAgICAgICAuYWNrX3ZhbHVlID1cDQo+Pj4+ICAgICAgICAg ICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVBUl9N QVNLLFwNCj4+Pj4gLSAgICAgICAgICAgIC5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3Nc DQo+Pj4+ICsgICAgICAgICAgICAuZnVuY3MgPSAmdnVwZGF0ZV9pcnFfaW5mb19mdW5jc1wNCj4+ Pj4gICAgICAgfQ0KPj4+Pg0KPj4+PiAgICAgI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19u dW0pXA0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2ly cS9kY2UxMjAvaXJxX3NlcnZpY2VfZGNlMTIwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYw0KPj4+PiBpbmRleCAxZWE3MjU2 Li43NTBiYTBhIDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYw0KPj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYw0KPj4+ PiBAQCAtODQsNiArODQsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9f ZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gew0KPj4+PiAgICAgICAuYWNrID0gTlVMTA0K Pj4+PiAgICAgfTsNCj4+Pj4NCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9p bmZvX2Z1bmNzIHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7DQo+Pj4+ICsgICAgLnNldCA9IE5V TEwsDQo+Pj4+ICsgICAgLmFjayA9IE5VTEwNCj4+Pj4gK307DQo+Pj4+ICsNCj4+Pj4gICAgICNk ZWZpbmUgQkFTRV9JTk5FUihzZWcpIFwNCj4+Pj4gICAgICAgRENFX0JBU0VfX0lOU1QwX1NFRyAj IyBzZWcNCj4+Pj4NCj4+Pj4gQEAgLTE0MCw3ICsxNDUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+Pj4+ICAg ICAgICAgICAgICAgSVJRX1JFR19FTlRSWShDUlRDLCByZWdfbnVtLFwNCj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgIENSVENfSU5URVJSVVBUX0NPTlRST0wsIENSVENfVl9VUERBVEVfSU5UX01T SyxcDQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVMs IENSVENfVl9VUERBVEVfSU5UX0NMRUFSKSxcDQo+Pj4+IC0gICAgICAgICAgICAuZnVuY3MgPSAm dmJsYW5rX2lycV9pbmZvX2Z1bmNzXA0KPj4+PiArICAgICAgICAgICAgLmZ1bmNzID0gJnZ1cGRh dGVfaXJxX2luZm9fZnVuY3NcDQo+Pj4+ICAgICAgIH0NCj4+Pj4NCj4+Pj4gICAgICNkZWZpbmUg dmJsYW5rX2ludF9lbnRyeShyZWdfbnVtKVwNCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYw0K Pj4+PiBpbmRleCA4YTIwNjZjLi5kZTIxOGZlIDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMNCj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2Vydmlj ZV9kY2U4MC5jDQo+Pj4+IEBAIC04NCw2ICs4NCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGly cV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+Pj4+ICAgICAg IC5hY2sgPSBOVUxMDQo+Pj4+ICAgICB9Ow0KPj4+Pg0KPj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsNCj4+Pj4g KyAgICAuc2V0ID0gTlVMTCwNCj4+Pj4gKyAgICAuYWNrID0gTlVMTA0KPj4+PiArfTsNCj4+Pj4N Cj4+Pj4gICAgICNkZWZpbmUgaHBkX2ludF9lbnRyeShyZWdfbnVtKVwNCj4+Pj4gICAgICAgW0RD X0lSUV9TT1VSQ0VfSU5WQUxJRCArIHJlZ19udW1dID0ge1wNCj4+Pj4gQEAgLTE0Miw3ICsxNDYs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJx X2luZm9fZnVuY3MgPSB7DQo+Pj4+ICAgICAgICAgICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RB VFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwNCj4+Pj4gICAgICAgICAgICAgICAu YWNrX3ZhbHVlID1cDQo+Pj4+ICAgICAgICAgICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVT X19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwNCj4+Pj4gLSAgICAgICAgICAgIC5mdW5j cyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3NcDQo+Pj4+ICsgICAgICAgICAgICAuZnVuY3MgPSAm dnVwZGF0ZV9pcnFfaW5mb19mdW5jc1wNCj4+Pj4gICAgICAgfQ0KPj4+Pg0KPj4+PiAgICAgI2Rl ZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0pXA0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24x MC5jDQo+Pj4+IGluZGV4IGUwNGFlNDkuLjEwYWM2ZGUgMTAwNjQ0DQo+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYw0K Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9z ZXJ2aWNlX2RjbjEwLmMNCj4+Pj4gQEAgLTU2LDYgKzU2LDE4IEBAIGVudW0gZGNfaXJxX3NvdXJj ZSB0b19kYWxfaXJxX3NvdXJjZV9kY24xMCgNCj4+Pj4gICAgICAgICAgICAgICByZXR1cm4gRENf SVJRX1NPVVJDRV9WQkxBTks1Ow0KPj4+PiAgICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19EQ19E Nl9PVEdfVlNUQVJUVVA6DQo+Pj4+ICAgICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VSQ0Vf VkJMQU5LNjsNCj4+Pj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFU RV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBEQ19JUlFfU09V UkNFX1ZVUERBVEUxOw0KPj4+PiArICAgIGNhc2UgRENOXzFfMF9fU1JDSURfX09URzFfSUhDX1Zf VVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPj4+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lS UV9TT1VSQ0VfVlVQREFURTI7DQo+Pj4+ICsgICAgY2FzZSBEQ05fMV8wX19TUkNJRF9fT1RHMl9J SENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+Pj4+ICsgICAgICAgICAgICByZXR1cm4g RENfSVJRX1NPVVJDRV9WVVBEQVRFMzsNCj4+Pj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19P VEczX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+Pj4gKyAgICAgICAgICAgIHJl dHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU0Ow0KPj4+PiArICAgIGNhc2UgRENOXzFfMF9fU1JD SURfX09URzRfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPj4+PiArICAgICAgICAg ICAgcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTU7DQo+Pj4+ICsgICAgY2FzZSBEQ05fMV8w X19TUkNJRF9fT1RHNV9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+Pj4+ICsgICAg ICAgICAgICByZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRFNjsNCj4+DQo+PiBJJ20gbm90IHN1 cmUgd2UgbmVjZXNzYXJpbHkgd2FudCB0byByZXVzZSB0aGUgc2FtZQ0KPj4gRENfSVJRX1NPVVJD RV9WVVBEQVRFMS4uLjYgZGVmaW5pdGlvbnMgaGVyZSBhZ2FpbiB3aGVuIGl0J3MgcmVhbGx5DQo+ PiBWX1VQREFURV9OT19MT0NLLg0KPj4NCj4gDQo+IEhtLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGlm IHdlIHVzZSBkaWZmZXJlbnQgb25lcyBmb3IgRENFIGFuZCBEQ04gd2UNCj4gbmVlZCBzcGVjaWFs LWNhc2UgaGFuZGxpbmcgaW4gYW1kZ3B1X2RtLmMsIGUuZy4sIGluDQo+IGFtZGdwdV9kbV9zZXRf dnVwZGF0ZV9pcnFfc3RhdGUoKSBhbmQgZG1fc2V0X3Z1cGRhdGVfaXJxKCkgdG8gZGV0ZWN0DQo+ IGlmIGl0IGlzIGNhbGluZyBEQ0Ugb3IgRENOIChob3cgdG8gZGV0ZWN0IHRoaXM/KSB0byBzZWxl Y3QgZGlmZmVyZW50DQo+IGlycSBzb3VyY2VzIElSUV9UWVBFX1ZVUERBVEUgdnMgSVJRX1RZUEVf VlVQREFURV9OT19MT0NLIGFuZCBzdWNoPw0KPiBBbmQgZGVmaW5pdGlvbnMgbGlrZSAic3RydWN0 IGFtZGdwdV9pcnFfc3JjIHZ1cGRhdGVfaXJxOyIgc2hvdWxkIHRoZW4NCj4gYWxzbyBleGlzdCB0 d2ljZSBhcyB2dXBkYXRlX2lycSBhbmQgdnVwZGF0ZV9pcnFfbm9fbG9jayBmb3IgY29ycmVjdA0K PiBuYW1pbmc/DQo+IA0KPiBPciB3ZSdkIG5hbWUgdGhlIElSUSBzb3VyY2UgYW5kIGFsbCByZWxl dmFudCBkYXRhIHN0cnVjdHVyZXMgYW5kDQo+IGZ1bmN0aW9ucyBzb21ldGhpbmcgbGlrZSBEQ19J UlFfU09VUkNFX1ZCTEFOS19FTkQxLi42IHRvIGRlc2NyaWJlIHdoYXQNCj4gaXQgc2lnbmFscyBp bnN0ZWFkIG9mIHRvIHdoYXQgaXQgY29ycmVzcG9uZHMgaW4gaGFyZHdhcmU/IFRoYXQgd291bGQN Cj4gYmUgd2hhdCB3YXMgZG9uZSB3aXRoIHRoZSByZWd1bGFyIERDX0lSUV9TT1VSQ0VfVkJMQU5L MS4uNi4gSXQgc2lnbmFscw0KPiBzdGFydCBvZiB2YmxhbmssIGJ1dCB0aGUgdW5kZXJseWluZyBo dyBpbnRlcnJ1cHRzIGFyZSBhY3R1YWxseSBhDQo+IHByb3Blcmx5IHByb2dyYW1tZWQgVkxJTkUw IGlycSBvbiBEQ0UgYW5kIGEgVlNUQVJUVVAgaXJxIG9uIERDTi4NCg0KDQpBaCwgSSBzZWUgd2hh dCB5b3UgbWVhbi4gTWF5YmUgdGhpcyBpcyBmb3IgdGhlIGJldHRlciB0byBzaGFyZSB0aGUgc2Ft ZSANCm5hbWVzIHRoZW4uIEknbGwgZGVmZXIgdGhpcyB0byBIYXJyeS4NCg0KPiANCj4gT2YgY291 cnNlIHRoaXMgYWxsIGFzc3VtZXMgd2UgbmVlZCB0byB1c2UgdGhlIE5PX0xPQ0sgdmFyaWFudCBv biBEQ04/DQo+IFdlIGhhdmVuJ3QgdGVzdGVkIHdoYXQgdGhlIHJlZ3VsYXIgVlVQREFURV9JUlEg ZG9lcywgYmVjYXVzZSBpIGRvbid0DQo+IGhhdmUgYSBzdWl0YWJsZSB0ZXN0IG1hY2hpbmUsIGFu ZCBteSB1c2Ugb2YgdGhlIE5PX0xPQ0sgdmFyaWFudCB3YXMNCj4ganVzdCBiYXNlZCBvbiBteSBp bnRlcnByZXRhdGlvbiBvZiB0aGlzIGxpdHRsZSBjb21tZW50IGluIHRoZSBEQ04NCj4gaGVhZGVy IGZpbGU6DQo+IA0KPiAjZGVmaW5lIERDTl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9O T19MT0NLX0lOVEVSUlVQVCAweDU3IC8vDQo+ICJPVEcwIFZVUERBVEUgZXZlbnQgd2l0aG91dCBs b2NrIGludGVycnVwdCwgVlVQREFURSBpcyB1cGRhdGUgZXZlbnQNCj4gZm9yIGRvdWJsZSBidWZm ZXJlZCByZWdpc3RlcnMiDQo+IA0KPiBhbmQgdGhlIGFic2VuY2Ugb2YgYW55IGV4cGxhbmF0b3J5 IGNvbW1lbnQgaW4gdGhlIGRlZmluZSBvZiByZWd1bGFyIFZfVVBEQVRFOg0KPiANCj4gI2RlZmlu ZSBEQ05fMV8wX19TUkNJRF9fRENfRDFfT1RHX1ZfVVBEQVRFIDB4MTggLy8gRDEgOiBPVEcgVl91 cGRhdGUNCj4gT1RHMV9JSENfVl9VUERBVEVfSU5URVJSVVBUDQo+IA0KPiBJIGFzc3VtZWQgdGhl IE5PX0xPQ0sgbWVhbnMgbm90IGFmZmVjdGVkIGJ5IHRoZSBzdGF0ZSBvZiBhbnkgb2YgdGhlIGh3 DQo+IGxvY2tzLCBzbyByZWd1bGFyIFZfVVBEQVRFIG1pZ2h0IGJlIGFmZmVjdGVkIGJ5IHRoZW0u IFlvdSBhZ3JlZWQgd2l0aA0KPiB0aGF0LCBidXQgd2UgbmV2ZXIgdGVzdGVkIHdoYXQgcmVndWxh ciBWX1VQREFURSB3b3VsZCBkbyBvbiBEQ04uIERvIHdlDQo+IGFjdHVhbGx5IGtub3cgZm9yIHN1 cmUgZnJvbSBodyBzcGVjcyB0aGF0IGl0IHdvdWxkIG5vdCB3b3JrLCBpZS4gbm90DQo+IHVuY29u ZGl0aW9uYWxseSBmaXJlIHRoZSBJUlEgYXQgZXZlcnkgZW5kIG9mIFZCTEFOSywgYXMgd2UgbmVl ZD8NCg0KRldJVywgSSBkaWQgdHJ5IHlvdXIgb3JpZ2luYWwgcGF0Y2hlcyB3aXRoIFZfVVBEQVRF LiBJIGRvbid0IGtub3cgb2ZmIA0KdGhlIHRvcCBvZiBteSBoZWFkIHdoYXQgc3BlY2lmaWNhbGx5 IFZfVVBEQVRFIGRvZXMgdGhhdCBWX1VQREFURV9OT19MT0NLIA0KZG9lc24ndCwgYnV0IGF0IHRo ZSB2ZXJ5IGxlYXN0IHRoZSBIVyB3b24ndCBiZSBmbGlwcGluZyBhbnl0aGluZyB0byB0aGUgDQpz Y3JlZW4gaWYgeW91J3JlIHVzaW5nIHRoZSBmb3JtZXIuIFlvdSdsbCBlbmQgdXAgd2l0aCBhIHN0 YXRpYyBzY3JlZW4gDQp0aGF0IGxvb2tzIGxpa2UgYSBzeXN0ZW0gaGFuZy4NCg0KTmljaG9sYXMg S2F6bGF1c2thcw0KDQo+IA0KPiANCj4+Pj4gICAgICAgY2FzZSBEQ05fMV8wX19TUkNJRF9fSFVC UDBfRkxJUF9JTlRFUlJVUFQ6DQo+Pj4+ICAgICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VS Q0VfUEZMSVAxOw0KPj4+PiAgICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19IVUJQMV9GTElQX0lO VEVSUlVQVDoNCj4+Pj4gQEAgLTE1Myw2ICsxNjUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp cnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gew0KPj4+PiAgICAg ICAuYWNrID0gTlVMTA0KPj4+PiAgICAgfTsNCj4+Pj4NCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZ1cGRhdGVfbm9fbG9ja19pcnFfaW5mb19mdW5jcyA9 IHsNCj4+Pj4gKyAgICAuc2V0ID0gTlVMTCwNCj4+Pj4gKyAgICAuYWNrID0gTlVMTA0KPj4+PiAr fTsNCj4+Pj4gKw0KPj4+PiAgICAgI2RlZmluZSBCQVNFX0lOTkVSKHNlZykgXA0KPj4+PiAgICAg ICBEQ0VfQkFTRV9fSU5TVDBfU0VHICMjIHNlZw0KPj4+Pg0KPj4+PiBAQCAtMjAzLDEyICsyMjAs MTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2ly cV9pbmZvX2Z1bmNzID0gew0KPj4+PiAgICAgICAgICAgICAgIC5mdW5jcyA9ICZwZmxpcF9pcnFf aW5mb19mdW5jc1wNCj4+Pj4gICAgICAgfQ0KPj4+Pg0KPj4+PiAtI2RlZmluZSB2dXBkYXRlX2lu dF9lbnRyeShyZWdfbnVtKVwNCj4+Pj4gKy8qIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkgbWFw cyB0byBEQ19JUlFfU09VUkNFX1ZVUERBVEV4LCB0byBtYXRjaCBzZW1hbnRpYw0KPj4+PiArICog b2YgRENFJ3MgRENfSVJRX1NPVVJDRV9WVVBEQVRFeC4NCj4+Pj4gKyAqLw0KPj4+PiArI2RlZmlu ZSB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KHJlZ19udW0pXA0KPj4+PiAgICAgICBbRENfSVJR X1NPVVJDRV9WVVBEQVRFMSArIHJlZ19udW1dID0ge1wNCj4+Pj4gICAgICAgICAgICAgICBJUlFf UkVHX0VOVFJZKE9URywgcmVnX251bSxcDQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgIE9UR19H TE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfSU5UX0VOLFwNCj4+Pj4gLSAgICAgICAgICAgICAg ICAgICAgT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9FVkVOVF9DTEVBUiksXA0KPj4+ PiAtICAgICAgICAgICAgLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wNCj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19MT0NL X0lOVF9FTixcDQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIE9UR19HTE9CQUxfU1lOQ19TVEFU VVMsIFZVUERBVEVfTk9fTE9DS19FVkVOVF9DTEVBUiksXA0KPj4+PiArICAgICAgICAgICAgLmZ1 bmNzID0gJnZ1cGRhdGVfbm9fbG9ja19pcnFfaW5mb19mdW5jc1wNCj4+Pj4gICAgICAgfQ0KPj4+ Pg0KPj4+PiAgICAgI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0pXA0KPj4+PiBAQCAt MzE1LDEyICszMzUsMTIgQEAgaXJxX3NvdXJjZV9pbmZvX2RjbjEwW0RBTF9JUlFfU09VUkNFU19O VU1CRVJdID0gew0KPj4+PiAgICAgICBkY191bmRlcmZsb3dfaW50X2VudHJ5KDYpLA0KPj4+PiAg ICAgICBbRENfSVJRX1NPVVJDRV9ETUNVX1NDUF0gPSBkdW1teV9pcnFfZW50cnkoKSwNCj4+Pj4g ICAgICAgW0RDX0lSUV9TT1VSQ0VfVkJJT1NfU1ddID0gZHVtbXlfaXJxX2VudHJ5KCksDQo+Pj4+ IC0gICAgdnVwZGF0ZV9pbnRfZW50cnkoMCksDQo+Pj4+IC0gICAgdnVwZGF0ZV9pbnRfZW50cnko MSksDQo+Pj4+IC0gICAgdnVwZGF0ZV9pbnRfZW50cnkoMiksDQo+Pj4+IC0gICAgdnVwZGF0ZV9p bnRfZW50cnkoMyksDQo+Pj4+IC0gICAgdnVwZGF0ZV9pbnRfZW50cnkoNCksDQo+Pj4+IC0gICAg dnVwZGF0ZV9pbnRfZW50cnkoNSksDQo+Pg0KPj4gSSBkb24ndCB0aGluayB3ZSBzaG91bGQgYmUg bmVjZXNzYXJpbHkgZHJvcHBpbmcgdGhlc2UsIGJ1dCBJIGd1ZXNzIGl0DQo+PiBjb3VsZCBnbyBl aXRoZXIgd2F5IHNpbmNlIHRoZXNlIElSUXMgdGVjaG5pY2FsbHkgYXJlbid0IGRlZmluZWQuDQo+ Pg0KPiANCj4gV2UgY291bGQga2VlcCBib3RoIGRlZmluaXRpb25zIGFyb3VuZCwgb3JpZ2luYWwg dnVwZGF0ZV9pbnRfZW50cnkgKw0KPiB0aGUgbmV3IHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnku DQo+IA0KPiAtbWFyaW8NCj4gDQo+Pj4+ICsgICAgdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgw KSwNCj4+Pj4gKyAgICB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDEpLA0KPj4+PiArICAgIHZ1 cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoMiksDQo+Pj4+ICsgICAgdnVwZGF0ZV9ub19sb2NrX2lu dF9lbnRyeSgzKSwNCj4+Pj4gKyAgICB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDQpLA0KPj4+ PiArICAgIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoNSksDQo+Pj4+ICAgICAgIHZibGFua19p bnRfZW50cnkoMCksDQo+Pj4+ICAgICAgIHZibGFua19pbnRfZW50cnkoMSksDQo+Pj4+ICAgICAg IHZibGFua19pbnRfZW50cnkoMiksDQo+Pj4+DQo+Pj4NCj4+PiBOaWNob2xhcyBLYXpsYXVza2Fz DQo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+ PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdA0KPj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn DQo+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4DQo+Pj4NCj4+DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbA==