From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandru Stefan ISAILA Subject: Ping: [PATCH RFC v2] x86/domctl: Don't pause the whole domain if only getting vcpu state Date: Mon, 19 Feb 2018 08:55:12 +0000 Message-ID: <1519030511.4963.25.camel@bitdefender.com> References: <1507284150-4985-1-git-send-email-aisaila@bitdefender.com> <1515142723.4067.1.camel@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1515142723.4067.1.camel@bitdefender.com> Content-Language: en-US Content-ID: <1F56D142FC9DCA409C6699CBEBF52E72@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "xen-devel@lists.xen.org" Cc: "andrew.cooper3@citrix.com" , "paul.durrant@citrix.com" , "ian.jackson@eu.citrix.com" , "wei.liu2@citrix.com" , "jbeulich@suse.com" List-Id: xen-devel@lists.xenproject.org UGluZz8NCj4gT24gVmksIDIwMTctMTAtMDYgYXQgMTM6MDIgKzAzMDAsIEFsZXhhbmRydSBJc2Fp bGEgd3JvdGU6DQo+ID4NCj4gPiBUaGlzIHBhdGNoIGFkZHMgdGhlIGh2bV9zYXZlX29uZV9jcHVf Y3R4dCgpIGZ1bmN0aW9uLg0KPiA+IEl0IG9wdGltaXplcyBieSBvbmx5IHBhdXNpbmcgdGhlIHZj cHUgb24gYWxsIEhWTVNSX1BFUl9WQ1BVIHNhdmUNCj4gPiBjYWxsYmFja3Mgd2hlcmUgb25seSBk YXRhIGZvciBvbmUgVkNQVSBpcyByZXF1aXJlZC4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFs ZXhhbmRydSBJc2FpbGEgPGFpc2FpbGFAYml0ZGVmZW5kZXIuY29tPg0KPiA+DQo+ID4gLS0tDQo+ ID4gQ2hhbmdlcyBzaW5jZSBWMToNCj4gPiAtIEludGVncmF0ZWQgdGhlIHZjcHUgY2hlY2sgaW50 byBhbGwgdGhlIHNhdmUgY2FsbGJhY2tzDQo+ID4gLS0tDQo+ID4gIHRvb2xzL3Rlc3RzL3ZocGV0 L2VtdWwuaCAgICAgICB8ICAgMyArLQ0KPiA+ICB0b29scy90ZXN0cy92aHBldC9tYWluLmMgICAg ICAgfCAgIDIgKy0NCj4gPiAgeGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5jIHwgIDE2ICsr LQ0KPiA+ICB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgICAgfCAgIDIgLQ0KPiA+ICB4ZW4v YXJjaC94ODYvaHZtL2hwZXQuYyAgICAgICAgfCAgIDIgKy0NCj4gPiAgeGVuL2FyY2gveDg2L2h2 bS9odm0uYyAgICAgICAgIHwgMjgwICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ID4g LS0NCj4gPiAtLS0tLS0tLS0tDQo+ID4gIHhlbi9hcmNoL3g4Ni9odm0vaTgyNTQuYyAgICAgICB8 ICAgMiArLQ0KPiA+ICB4ZW4vYXJjaC94ODYvaHZtL2lycS5jICAgICAgICAgfCAgIDYgKy0NCj4g PiAgeGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgICAgICAgIHwgIDMyICsrKystDQo+ID4gIHhlbi9h cmNoL3g4Ni9odm0vcG10aW1lci5jICAgICB8ICAgMiArLQ0KPiA+ICB4ZW4vYXJjaC94ODYvaHZt L3J0Yy5jICAgICAgICAgfCAgIDIgKy0NCj4gPiAgeGVuL2FyY2gveDg2L2h2bS9zYXZlLmMgICAg ICAgIHwgIDcxICsrKysrKysrLS0tDQo+ID4gIHhlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jICAg ICB8ICAgMiArLQ0KPiA+ICB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgICAgfCAgMTcgKyst DQo+ID4gIHhlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgICAgICB8ICAyMyArKystDQo+ID4gIHhl bi9hcmNoL3g4Ni9odm0vdnBpYy5jICAgICAgICB8ICAgMiArLQ0KPiA+ICB4ZW4vaW5jbHVkZS9h c20teDg2L2h2bS9odm0uaCAgfCAgIDIgKw0KPiA+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9z YXZlLmggfCAgIDUgKy0NCj4gPiAgMTggZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyks IDE0NyBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS90b29scy90ZXN0cy92aHBl dC9lbXVsLmggYi90b29scy90ZXN0cy92aHBldC9lbXVsLmgNCj4gPiBpbmRleCAzODNhY2ZmLi45 OWQ1YmJkIDEwMDY0NA0KPiA+IC0tLSBhL3Rvb2xzL3Rlc3RzL3ZocGV0L2VtdWwuaA0KPiA+ICsr KyBiL3Rvb2xzL3Rlc3RzL3ZocGV0L2VtdWwuaA0KPiA+IEBAIC0yOTYsNyArMjk2LDggQEAgc3Ry dWN0IGh2bV9od19ocGV0DQo+ID4gIH07DQo+ID4NCj4gPiAgdHlwZWRlZiBpbnQgKCpodm1fc2F2 ZV9oYW5kbGVyKShzdHJ1Y3QgZG9tYWluICpkLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh2bV9kb21haW5fY29udGV4dF90ICpoKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpOw0KPiA+ICB0eXBl ZGVmIGludCAoKmh2bV9sb2FkX2hhbmRsZXIpKHN0cnVjdCBkb21haW4gKmQsDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpOw0KPiA+ DQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3ZocGV0L21haW4uYyBiL3Rvb2xzL3Rlc3Rz L3ZocGV0L21haW4uYw0KPiA+IGluZGV4IDZmZTY1ZWEuLjNkOGU3ZjUgMTAwNjQ0DQo+ID4gLS0t IGEvdG9vbHMvdGVzdHMvdmhwZXQvbWFpbi5jDQo+ID4gKysrIGIvdG9vbHMvdGVzdHMvdmhwZXQv bWFpbi5jDQo+ID4gQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIF9faW5pdCBodm1fcmVnaXN0ZXJf c2F2ZXZtKHVpbnQxNl90DQo+ID4gdHlwZWNvZGUsDQo+ID4NCj4gPiAgaW50IGRvX3NhdmUodWlu dDE2X3QgdHlwZWNvZGUsIHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9jb250ZXh0 X3QgKmgpDQo+ID4gIHsNCj4gPiAtICAgIHJldHVybiBodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVd LnNhdmUoZCwgaCk7DQo+ID4gKyAgICByZXR1cm4gaHZtX3NyX2hhbmRsZXJzW3R5cGVjb2RlXS5z YXZlKGQsIGgsIGQtPm1heF92Y3B1cyk7DQo+ID4gIH0NCj4gPg0KPiA+ICBpbnQgZG9fbG9hZCh1 aW50MTZfdCB0eXBlY29kZSwgc3RydWN0IGRvbWFpbiAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRl eHRfdCAqaCkNCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svdm1jZS5j DQo+ID4gYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMNCj4gPiBpbmRleCBlMDdjZDJm Li5hMWExMmE1IDEwMDY0NA0KPiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2Uu Yw0KPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYw0KPiA+IEBAIC0zNDks MTIgKzM0OSwyNCBAQCBpbnQgdm1jZV93cm1zcih1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCkN Cj4gPiAgICAgIHJldHVybiByZXQ7DQo+ID4gIH0NCj4gPg0KPiA+IC1zdGF0aWMgaW50IHZtY2Vf c2F2ZV92Y3B1X2N0eHQoc3RydWN0IGRvbWFpbiAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRleHRf dCAqaCkNCj4gPiArc3RhdGljIGludCB2bWNlX3NhdmVfdmNwdV9jdHh0KHN0cnVjdCBkb21haW4g KmQsDQo+ID4gaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgsIHVuc2lnbmVkIGludCBpbnN0YW5jZSkN Cj4gPiAgew0KPiA+ICAgICAgc3RydWN0IHZjcHUgKnY7DQo+ID4gICAgICBpbnQgZXJyID0gMDsN Cj4gPg0KPiA+IC0gICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiA+ICsgICAgaWYoIGluc3Rh bmNlIDwgZC0+bWF4X3ZjcHVzICkNCj4gPiArICAgIHsNCj4gPiArICAgICAgICBzdHJ1Y3QgaHZt X3ZtY2VfdmNwdSBjdHh0Ow0KPiA+ICsNCj4gPiArICAgICAgICB2ID0gZC0+dmNwdVtpbnN0YW5j ZV07DQo+ID4gKyAgICAgICAgY3R4dC5jYXBzID0gdi0+YXJjaC52bWNlLm1jZ19jYXA7DQo+ID4g KyAgICAgICAgY3R4dC5tY2lfY3RsMl9iYW5rMCA9IHYtPmFyY2gudm1jZS5iYW5rWzBdLm1jaV9j dGwyOw0KPiA+ICsgICAgICAgIGN0eHQubWNpX2N0bDJfYmFuazEgPSB2LT5hcmNoLnZtY2UuYmFu a1sxXS5tY2lfY3RsMjsNCj4gPiArICAgICAgICBjdHh0Lm1jZ19leHRfY3RsID0gdi0+YXJjaC52 bWNlLm1jZ19leHRfY3RsOw0KPiA+ICsNCj4gPiArICAgICAgICBlcnIgPSBodm1fc2F2ZV9lbnRy eShWTUNFX1ZDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KTsNCj4gPiArICAgIH0NCj4gPiArICAg IGVsc2UgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiA+ICAgICAgew0KPiA+ICAgICAgICAgIHN0 cnVjdCBodm1fdm1jZV92Y3B1IGN0eHQgPSB7DQo+ID4gICAgICAgICAgICAgIC5jYXBzID0gdi0+ YXJjaC52bWNlLm1jZ19jYXAsDQo+ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwu YyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYw0KPiA+IGluZGV4IDU0MGJhMDguLmQzYzRlMTQgMTAw NjQ0DQo+ID4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jDQo+ID4gKysrIGIveGVuL2FyY2gv eDg2L2RvbWN0bC5jDQo+ID4gQEAgLTYyNCwxMiArNjI0LDEwIEBAIGxvbmcgYXJjaF9kb19kb21j dGwoDQo+ID4gICAgICAgICAgICAgICAhaXNfaHZtX2RvbWFpbihkKSApDQo+ID4gICAgICAgICAg ICAgIGJyZWFrOw0KPiA+DQo+ID4gLSAgICAgICAgZG9tYWluX3BhdXNlKGQpOw0KPiA+ICAgICAg ICAgIHJldCA9IGh2bV9zYXZlX29uZShkLCBkb21jdGwtPnUuaHZtY29udGV4dF9wYXJ0aWFsLnR5 cGUsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5odm1jb250ZXh0 X3BhcnRpYWwuaW5zdGFuY2UsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0 bC0+dS5odm1jb250ZXh0X3BhcnRpYWwuYnVmZmVyLA0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZG9tY3RsLT51Lmh2bWNvbnRleHRfcGFydGlhbC5idWZzeik7DQo+ID4gLSAgICAg ICAgZG9tYWluX3VucGF1c2UoZCk7DQo+ID4NCj4gPiAgICAgICAgICBpZiAoICFyZXQgKQ0KPiA+ ICAgICAgICAgICAgICBjb3B5YmFjayA9IHRydWU7DQo+ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vaHBldC5jIGIveGVuL2FyY2gveDg2L2h2bS9ocGV0LmMNCj4gPiBpbmRleCAzZWE4 OTVhLi41NmY0NjkxIDEwMDY0NA0KPiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHBldC5jDQo+ ID4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9ocGV0LmMNCj4gPiBAQCAtNTA5LDcgKzUwOSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX21taW9fb3BzIGhwZXRfbW1pb19vcHMNCj4gPiA9DQo+ ID4gew0KPiA+ICB9Ow0KPiA+DQo+ID4NCj4gPiAtc3RhdGljIGludCBocGV0X3NhdmUoc3RydWN0 IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ID4gK3N0YXRpYyBpbnQgaHBl dF9zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiA+IHVu c2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAgew0KPiA+ICAgICAgSFBFVFN0YXRlICpocCA9IGRv bWFpbl92aHBldChkKTsNCj4gPiAgICAgIHN0cnVjdCB2Y3B1ICp2ID0gcHRfZ2xvYmFsX3ZjcHVf dGFyZ2V0KGQpOw0KPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVu L2FyY2gveDg2L2h2bS9odm0uYw0KPiA+IGluZGV4IDIwNWI0Y2IuLjE0MGYyYzMgMTAwNjQ0DQo+ ID4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYw0KPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMNCj4gPiBAQCAtNzI4LDEzICs3MjgsMTkgQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ry b3koc3RydWN0IGRvbWFpbiAqZCkNCj4gPiAgICAgIH0NCj4gPiAgfQ0KPiA+DQo+ID4gLXN0YXRp YyBpbnQgaHZtX3NhdmVfdHNjX2FkanVzdChzdHJ1Y3QgZG9tYWluICpkLA0KPiA+IGh2bV9kb21h aW5fY29udGV4dF90ICpoKQ0KPiA+ICtzdGF0aWMgaW50IGh2bV9zYXZlX3RzY19hZGp1c3Qoc3Ry dWN0IGRvbWFpbiAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwgdW5zaWduZWQgaW50 IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4gPiAgICAgIHN0 cnVjdCBodm1fdHNjX2FkanVzdCBjdHh0Ow0KPiA+ICAgICAgaW50IGVyciA9IDA7DQo+ID4NCj4g PiAtICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkNCj4gPiArICAgIGlmKCBpbnN0YW5jZSA8IGQt Pm1heF92Y3B1cyApDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgICAgdiA9IGQtPnZjcHVbaW5zdGFu Y2VdOw0KPiA+ICsgICAgICAgIGN0eHQudHNjX2FkanVzdCA9IHYtPmFyY2guaHZtX3ZjcHUubXNy X3RzY19hZGp1c3Q7DQo+ID4gKyAgICAgICAgZXJyID0gaHZtX3NhdmVfZW50cnkoVFNDX0FESlVT VCwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZWxzZSBmb3Jf ZWFjaF92Y3B1ICggZCwgdiApDQo+ID4gICAgICB7DQo+ID4gICAgICAgICAgY3R4dC50c2NfYWRq dXN0ID0gdi0+YXJjaC5odm1fdmNwdS5tc3JfdHNjX2FkanVzdDsNCj4gPiAgICAgICAgICBlcnIg PSBodm1fc2F2ZV9lbnRyeShUU0NfQURKVVNULCB2LT52Y3B1X2lkLCBoLCAmY3R4dCk7DQo+ID4g QEAgLTc2OCwxMTcgKzc3NCwxMzUgQEAgc3RhdGljIGludCBodm1fbG9hZF90c2NfYWRqdXN0KHN0 cnVjdA0KPiA+IGRvbWFpbg0KPiA+ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gPiAg SFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShUU0NfQURKVVNULCBodm1fc2F2ZV90c2NfYWRqdXN0 LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9sb2FkX3RzY19hZGp1c3QsIDEs IEhWTVNSX1BFUl9WQ1BVKTsNCj4gPg0KPiA+IC1zdGF0aWMgaW50IGh2bV9zYXZlX2NwdV9jdHh0 KHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9jb250ZXh0X3QNCj4gPiAqaCkNCj4g PiArdm9pZCBodm1fc2F2ZV9vbmVfY3B1X2N0eHQoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1f aHdfY3B1DQo+ID4gKmN0eHQpDQo+ID4gK3sNCj4gPiArICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lz dGVyIHNlZzsNCj4gPiArDQo+ID4gKyAgICAvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgdm1jcy92 bWNiIGJpdHMgKi8NCj4gPiArICAgIGh2bV9mdW5jcy5zYXZlX2NwdV9jdHh0KHYsIGN0eHQpOw0K PiA+ICsNCj4gPiArICAgIGN0eHQtPnRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjX2ZpeGVkKHYsIHYt PmRvbWFpbi0NCj4gPiA+DQo+ID4gPiBhcmNoLmh2bV9kb21haW4uc3luY190c2MpOw0KPiA+ICsN Cj4gPiArICAgIGN0eHQtPm1zcl90c2NfYXV4ID0gaHZtX21zcl90c2NfYXV4KHYpOw0KPiA+ICsN Cj4gPiArICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2lkdHIsICZzZWcp Ow0KPiA+ICsgICAgY3R4dC0+aWR0cl9saW1pdCA9IHNlZy5saW1pdDsNCj4gPiArICAgIGN0eHQt PmlkdHJfYmFzZSA9IHNlZy5iYXNlOw0KPiA+ICsNCj4gPiArICAgIGh2bV9nZXRfc2VnbWVudF9y ZWdpc3Rlcih2LCB4ODZfc2VnX2dkdHIsICZzZWcpOw0KPiA+ICsgICAgY3R4dC0+Z2R0cl9saW1p dCA9IHNlZy5saW1pdDsNCj4gPiArICAgIGN0eHQtPmdkdHJfYmFzZSA9IHNlZy5iYXNlOw0KPiA+ ICsNCj4gPiArICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2NzLCAmc2Vn KTsNCj4gPiArICAgIGN0eHQtPmNzX3NlbCA9IHNlZy5zZWw7DQo+ID4gKyAgICBjdHh0LT5jc19s aW1pdCA9IHNlZy5saW1pdDsNCj4gPiArICAgIGN0eHQtPmNzX2Jhc2UgPSBzZWcuYmFzZTsNCj4g PiArICAgIGN0eHQtPmNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gPiArDQo+ID4gKyAgICBodm1f Z2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19kcywgJnNlZyk7DQo+ID4gKyAgICBjdHh0 LT5kc19zZWwgPSBzZWcuc2VsOw0KPiA+ICsgICAgY3R4dC0+ZHNfbGltaXQgPSBzZWcubGltaXQ7 DQo+ID4gKyAgICBjdHh0LT5kc19iYXNlID0gc2VnLmJhc2U7DQo+ID4gKyAgICBjdHh0LT5kc19h cmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gKw0KPiA+ICsgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lz dGVyKHYsIHg4Nl9zZWdfZXMsICZzZWcpOw0KPiA+ICsgICAgY3R4dC0+ZXNfc2VsID0gc2VnLnNl bDsNCj4gPiArICAgIGN0eHQtPmVzX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiA+ICsgICAgY3R4dC0+ ZXNfYmFzZSA9IHNlZy5iYXNlOw0KPiA+ICsgICAgY3R4dC0+ZXNfYXJieXRlcyA9IHNlZy5hdHRy Ow0KPiA+ICsNCj4gPiArICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX3Nz LCAmc2VnKTsNCj4gPiArICAgIGN0eHQtPnNzX3NlbCA9IHNlZy5zZWw7DQo+ID4gKyAgICBjdHh0 LT5zc19saW1pdCA9IHNlZy5saW1pdDsNCj4gPiArICAgIGN0eHQtPnNzX2Jhc2UgPSBzZWcuYmFz ZTsNCj4gPiArICAgIGN0eHQtPnNzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gPiArDQo+ID4gKyAg ICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19mcywgJnNlZyk7DQo+ID4gKyAg ICBjdHh0LT5mc19zZWwgPSBzZWcuc2VsOw0KPiA+ICsgICAgY3R4dC0+ZnNfbGltaXQgPSBzZWcu bGltaXQ7DQo+ID4gKyAgICBjdHh0LT5mc19iYXNlID0gc2VnLmJhc2U7DQo+ID4gKyAgICBjdHh0 LT5mc19hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gKw0KPiA+ICsgICAgaHZtX2dldF9zZWdtZW50 X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ3MsICZzZWcpOw0KPiA+ICsgICAgY3R4dC0+Z3Nfc2VsID0g c2VnLnNlbDsNCj4gPiArICAgIGN0eHQtPmdzX2xpbWl0ID0gc2VnLmxpbWl0Ow0KPiA+ICsgICAg Y3R4dC0+Z3NfYmFzZSA9IHNlZy5iYXNlOw0KPiA+ICsgICAgY3R4dC0+Z3NfYXJieXRlcyA9IHNl Zy5hdHRyOw0KPiA+ICsNCj4gPiArICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZf c2VnX3RyLCAmc2VnKTsNCj4gPiArICAgIGN0eHQtPnRyX3NlbCA9IHNlZy5zZWw7DQo+ID4gKyAg ICBjdHh0LT50cl9saW1pdCA9IHNlZy5saW1pdDsNCj4gPiArICAgIGN0eHQtPnRyX2Jhc2UgPSBz ZWcuYmFzZTsNCj4gPiArICAgIGN0eHQtPnRyX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gPiArDQo+ ID4gKyAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19sZHRyLCAmc2VnKTsN Cj4gPiArICAgIGN0eHQtPmxkdHJfc2VsID0gc2VnLnNlbDsNCj4gPiArICAgIGN0eHQtPmxkdHJf bGltaXQgPSBzZWcubGltaXQ7DQo+ID4gKyAgICBjdHh0LT5sZHRyX2Jhc2UgPSBzZWcuYmFzZTsN Cj4gPiArICAgIGN0eHQtPmxkdHJfYXJieXRlcyA9IHNlZy5hdHRyOw0KPiA+ICsNCj4gPiArICAg IGlmICggdi0+ZnB1X2luaXRpYWxpc2VkICkNCj4gPiArICAgIHsNCj4gPiArICAgICAgICBtZW1j cHkoY3R4dC0+ZnB1X3JlZ3MsIHYtPmFyY2guZnB1X2N0eHQsIHNpemVvZihjdHh0LQ0KPiA+ID4N Cj4gPiA+IGZwdV9yZWdzKSk7DQo+ID4gKyAgICAgICAgY3R4dC0+ZmxhZ3MgPSBYRU5fWDg2X0ZQ VV9JTklUSUFMSVNFRDsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBjdHh0LT5yYXggPSB2 LT5hcmNoLnVzZXJfcmVncy5yYXg7DQo+ID4gKyAgICBjdHh0LT5yYnggPSB2LT5hcmNoLnVzZXJf cmVncy5yYng7DQo+ID4gKyAgICBjdHh0LT5yY3ggPSB2LT5hcmNoLnVzZXJfcmVncy5yY3g7DQo+ ID4gKyAgICBjdHh0LT5yZHggPSB2LT5hcmNoLnVzZXJfcmVncy5yZHg7DQo+ID4gKyAgICBjdHh0 LT5yYnAgPSB2LT5hcmNoLnVzZXJfcmVncy5yYnA7DQo+ID4gKyAgICBjdHh0LT5yc2kgPSB2LT5h cmNoLnVzZXJfcmVncy5yc2k7DQo+ID4gKyAgICBjdHh0LT5yZGkgPSB2LT5hcmNoLnVzZXJfcmVn cy5yZGk7DQo+ID4gKyAgICBjdHh0LT5yc3AgPSB2LT5hcmNoLnVzZXJfcmVncy5yc3A7DQo+ID4g KyAgICBjdHh0LT5yaXAgPSB2LT5hcmNoLnVzZXJfcmVncy5yaXA7DQo+ID4gKyAgICBjdHh0LT5y ZmxhZ3MgPSB2LT5hcmNoLnVzZXJfcmVncy5yZmxhZ3M7DQo+ID4gKyAgICBjdHh0LT5yOCAgPSB2 LT5hcmNoLnVzZXJfcmVncy5yODsNCj4gPiArICAgIGN0eHQtPnI5ICA9IHYtPmFyY2gudXNlcl9y ZWdzLnI5Ow0KPiA+ICsgICAgY3R4dC0+cjEwID0gdi0+YXJjaC51c2VyX3JlZ3MucjEwOw0KPiA+ ICsgICAgY3R4dC0+cjExID0gdi0+YXJjaC51c2VyX3JlZ3MucjExOw0KPiA+ICsgICAgY3R4dC0+ cjEyID0gdi0+YXJjaC51c2VyX3JlZ3MucjEyOw0KPiA+ICsgICAgY3R4dC0+cjEzID0gdi0+YXJj aC51c2VyX3JlZ3MucjEzOw0KPiA+ICsgICAgY3R4dC0+cjE0ID0gdi0+YXJjaC51c2VyX3JlZ3Mu cjE0Ow0KPiA+ICsgICAgY3R4dC0+cjE1ID0gdi0+YXJjaC51c2VyX3JlZ3MucjE1Ow0KPiA+ICsg ICAgY3R4dC0+ZHIwID0gdi0+YXJjaC5kZWJ1Z3JlZ1swXTsNCj4gPiArICAgIGN0eHQtPmRyMSA9 IHYtPmFyY2guZGVidWdyZWdbMV07DQo+ID4gKyAgICBjdHh0LT5kcjIgPSB2LT5hcmNoLmRlYnVn cmVnWzJdOw0KPiA+ICsgICAgY3R4dC0+ZHIzID0gdi0+YXJjaC5kZWJ1Z3JlZ1szXTsNCj4gPiAr ICAgIGN0eHQtPmRyNiA9IHYtPmFyY2guZGVidWdyZWdbNl07DQo+ID4gKyAgICBjdHh0LT5kcjcg PSB2LT5hcmNoLmRlYnVncmVnWzddOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGh2 bV9zYXZlX2NwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9jb250ZXh0 X3QNCj4gPiAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAgICBzdHJ1 Y3QgdmNwdSAqdjsNCj4gPiAgICAgIHN0cnVjdCBodm1faHdfY3B1IGN0eHQ7DQo+ID4gLSAgICBz dHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciBzZWc7DQo+ID4NCj4gPiAtICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkNCj4gPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cykNCj4gPiArICAg IHsNCj4gPiArICAgICAgICB2ID0gZC0+dmNwdVtpbnN0YW5jZV07DQo+ID4gKyAgICAgICAgaWYg KCB2LT5wYXVzZV9mbGFncyAmIFZQRl9kb3duICkNCj4gPiArICAgICAgICAgICAgcmV0dXJuIDE7 DQo+ID4gKyAgICAgICAgbWVtc2V0KCZjdHh0LCAwLCBzaXplb2YoY3R4dCkpOw0KPiA+ICsNCj4g PiArICAgICAgICBodm1fc2F2ZV9vbmVfY3B1X2N0eHQodiwgJmN0eHQpOw0KPiA+ICsNCj4gPiAr ICAgICAgICBpZiAoIGh2bV9zYXZlX2VudHJ5KENQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpICE9 IDAgKQ0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMTsNCj4gPiArICAgIH0NCj4gPiArICAgIGVs c2UgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiA+ICAgICAgew0KPiA+IC0gICAgICAgIC8qIFdl IGRvbid0IG5lZWQgdG8gc2F2ZSBzdGF0ZSBmb3IgYSB2Y3B1IHRoYXQgaXMgZG93bjsNCj4gPiB0 aGUNCj4gPiByZXN0b3JlDQo+ID4gKyAgICAgICAgLyogV2UgZG9uJ3QgbmVlZCB0byBzYXZlIHN0 YXRlIGZvciBhIHZjcHUgdGhhdCBpcyBkb3duOw0KPiA+IHRoZQ0KPiA+IHJlc3RvcmUNCj4gPiAg ICAgICAgICAgKiBjb2RlIHdpbGwgbGVhdmUgaXQgZG93biBpZiB0aGVyZSBpcyBub3RoaW5nIHNh dmVkLiAqLw0KPiA+ICAgICAgICAgIGlmICggdi0+cGF1c2VfZmxhZ3MgJiBWUEZfZG93biApDQo+ ID4gICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiA+DQo+ID4gICAgICAgICAgbWVtc2V0KCZjdHh0 LCAwLCBzaXplb2YoY3R4dCkpOw0KPiA+DQo+ID4gLSAgICAgICAgLyogQXJjaGl0ZWN0dXJlLXNw ZWNpZmljIHZtY3Mvdm1jYiBiaXRzICovDQo+ID4gLSAgICAgICAgaHZtX2Z1bmNzLnNhdmVfY3B1 X2N0eHQodiwgJmN0eHQpOw0KPiA+IC0NCj4gPiAtICAgICAgICBjdHh0LnRzYyA9IGh2bV9nZXRf Z3Vlc3RfdHNjX2ZpeGVkKHYsIGQtDQo+ID4gPg0KPiA+ID4gYXJjaC5odm1fZG9tYWluLnN5bmNf dHNjKTsNCj4gPiAtDQo+ID4gLSAgICAgICAgY3R4dC5tc3JfdHNjX2F1eCA9IGh2bV9tc3JfdHNj X2F1eCh2KTsNCj4gPiAtDQo+ID4gLSAgICAgICAgaHZtX2dldF9zZWdtZW50X3JlZ2lzdGVyKHYs IHg4Nl9zZWdfaWR0ciwgJnNlZyk7DQo+ID4gLSAgICAgICAgY3R4dC5pZHRyX2xpbWl0ID0gc2Vn LmxpbWl0Ow0KPiA+IC0gICAgICAgIGN0eHQuaWR0cl9iYXNlID0gc2VnLmJhc2U7DQo+ID4gLQ0K PiA+IC0gICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2dkdHIsICZz ZWcpOw0KPiA+IC0gICAgICAgIGN0eHQuZ2R0cl9saW1pdCA9IHNlZy5saW1pdDsNCj4gPiAtICAg ICAgICBjdHh0LmdkdHJfYmFzZSA9IHNlZy5iYXNlOw0KPiA+IC0NCj4gPiAtICAgICAgICBodm1f Z2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19jcywgJnNlZyk7DQo+ID4gLSAgICAgICAg Y3R4dC5jc19zZWwgPSBzZWcuc2VsOw0KPiA+IC0gICAgICAgIGN0eHQuY3NfbGltaXQgPSBzZWcu bGltaXQ7DQo+ID4gLSAgICAgICAgY3R4dC5jc19iYXNlID0gc2VnLmJhc2U7DQo+ID4gLSAgICAg ICAgY3R4dC5jc19hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gLQ0KPiA+IC0gICAgICAgIGh2bV9n ZXRfc2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2RzLCAmc2VnKTsNCj4gPiAtICAgICAgICBj dHh0LmRzX3NlbCA9IHNlZy5zZWw7DQo+ID4gLSAgICAgICAgY3R4dC5kc19saW1pdCA9IHNlZy5s aW1pdDsNCj4gPiAtICAgICAgICBjdHh0LmRzX2Jhc2UgPSBzZWcuYmFzZTsNCj4gPiAtICAgICAg ICBjdHh0LmRzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gPiAtDQo+ID4gLSAgICAgICAgaHZtX2dl dF9zZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZXMsICZzZWcpOw0KPiA+IC0gICAgICAgIGN0 eHQuZXNfc2VsID0gc2VnLnNlbDsNCj4gPiAtICAgICAgICBjdHh0LmVzX2xpbWl0ID0gc2VnLmxp bWl0Ow0KPiA+IC0gICAgICAgIGN0eHQuZXNfYmFzZSA9IHNlZy5iYXNlOw0KPiA+IC0gICAgICAg IGN0eHQuZXNfYXJieXRlcyA9IHNlZy5hdHRyOw0KPiA+IC0NCj4gPiAtICAgICAgICBodm1fZ2V0 X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ19zcywgJnNlZyk7DQo+ID4gLSAgICAgICAgY3R4 dC5zc19zZWwgPSBzZWcuc2VsOw0KPiA+IC0gICAgICAgIGN0eHQuc3NfbGltaXQgPSBzZWcubGlt aXQ7DQo+ID4gLSAgICAgICAgY3R4dC5zc19iYXNlID0gc2VnLmJhc2U7DQo+ID4gLSAgICAgICAg Y3R4dC5zc19hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gLQ0KPiA+IC0gICAgICAgIGh2bV9nZXRf c2VnbWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2ZzLCAmc2VnKTsNCj4gPiAtICAgICAgICBjdHh0 LmZzX3NlbCA9IHNlZy5zZWw7DQo+ID4gLSAgICAgICAgY3R4dC5mc19saW1pdCA9IHNlZy5saW1p dDsNCj4gPiAtICAgICAgICBjdHh0LmZzX2Jhc2UgPSBzZWcuYmFzZTsNCj4gPiAtICAgICAgICBj dHh0LmZzX2FyYnl0ZXMgPSBzZWcuYXR0cjsNCj4gPiAtDQo+ID4gLSAgICAgICAgaHZtX2dldF9z ZWdtZW50X3JlZ2lzdGVyKHYsIHg4Nl9zZWdfZ3MsICZzZWcpOw0KPiA+IC0gICAgICAgIGN0eHQu Z3Nfc2VsID0gc2VnLnNlbDsNCj4gPiAtICAgICAgICBjdHh0LmdzX2xpbWl0ID0gc2VnLmxpbWl0 Ow0KPiA+IC0gICAgICAgIGN0eHQuZ3NfYmFzZSA9IHNlZy5iYXNlOw0KPiA+IC0gICAgICAgIGN0 eHQuZ3NfYXJieXRlcyA9IHNlZy5hdHRyOw0KPiA+IC0NCj4gPiAtICAgICAgICBodm1fZ2V0X3Nl Z21lbnRfcmVnaXN0ZXIodiwgeDg2X3NlZ190ciwgJnNlZyk7DQo+ID4gLSAgICAgICAgY3R4dC50 cl9zZWwgPSBzZWcuc2VsOw0KPiA+IC0gICAgICAgIGN0eHQudHJfbGltaXQgPSBzZWcubGltaXQ7 DQo+ID4gLSAgICAgICAgY3R4dC50cl9iYXNlID0gc2VnLmJhc2U7DQo+ID4gLSAgICAgICAgY3R4 dC50cl9hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gLQ0KPiA+IC0gICAgICAgIGh2bV9nZXRfc2Vn bWVudF9yZWdpc3Rlcih2LCB4ODZfc2VnX2xkdHIsICZzZWcpOw0KPiA+IC0gICAgICAgIGN0eHQu bGR0cl9zZWwgPSBzZWcuc2VsOw0KPiA+IC0gICAgICAgIGN0eHQubGR0cl9saW1pdCA9IHNlZy5s aW1pdDsNCj4gPiAtICAgICAgICBjdHh0LmxkdHJfYmFzZSA9IHNlZy5iYXNlOw0KPiA+IC0gICAg ICAgIGN0eHQubGR0cl9hcmJ5dGVzID0gc2VnLmF0dHI7DQo+ID4gLQ0KPiA+IC0gICAgICAgIGlm ICggdi0+ZnB1X2luaXRpYWxpc2VkICkNCj4gPiAtICAgICAgICB7DQo+ID4gLSAgICAgICAgICAg IG1lbWNweShjdHh0LmZwdV9yZWdzLCB2LT5hcmNoLmZwdV9jdHh0LA0KPiA+IHNpemVvZihjdHh0 LmZwdV9yZWdzKSk7DQo+ID4gLSAgICAgICAgICAgIGN0eHQuZmxhZ3MgPSBYRU5fWDg2X0ZQVV9J TklUSUFMSVNFRDsNCj4gPiAtICAgICAgICB9DQo+ID4gLQ0KPiA+IC0gICAgICAgIGN0eHQucmF4 ID0gdi0+YXJjaC51c2VyX3JlZ3MucmF4Ow0KPiA+IC0gICAgICAgIGN0eHQucmJ4ID0gdi0+YXJj aC51c2VyX3JlZ3MucmJ4Ow0KPiA+IC0gICAgICAgIGN0eHQucmN4ID0gdi0+YXJjaC51c2VyX3Jl Z3MucmN4Ow0KPiA+IC0gICAgICAgIGN0eHQucmR4ID0gdi0+YXJjaC51c2VyX3JlZ3MucmR4Ow0K PiA+IC0gICAgICAgIGN0eHQucmJwID0gdi0+YXJjaC51c2VyX3JlZ3MucmJwOw0KPiA+IC0gICAg ICAgIGN0eHQucnNpID0gdi0+YXJjaC51c2VyX3JlZ3MucnNpOw0KPiA+IC0gICAgICAgIGN0eHQu cmRpID0gdi0+YXJjaC51c2VyX3JlZ3MucmRpOw0KPiA+IC0gICAgICAgIGN0eHQucnNwID0gdi0+ YXJjaC51c2VyX3JlZ3MucnNwOw0KPiA+IC0gICAgICAgIGN0eHQucmlwID0gdi0+YXJjaC51c2Vy X3JlZ3MucmlwOw0KPiA+IC0gICAgICAgIGN0eHQucmZsYWdzID0gdi0+YXJjaC51c2VyX3JlZ3Mu cmZsYWdzOw0KPiA+IC0gICAgICAgIGN0eHQucjggID0gdi0+YXJjaC51c2VyX3JlZ3Mucjg7DQo+ ID4gLSAgICAgICAgY3R4dC5yOSAgPSB2LT5hcmNoLnVzZXJfcmVncy5yOTsNCj4gPiAtICAgICAg ICBjdHh0LnIxMCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMDsNCj4gPiAtICAgICAgICBjdHh0LnIx MSA9IHYtPmFyY2gudXNlcl9yZWdzLnIxMTsNCj4gPiAtICAgICAgICBjdHh0LnIxMiA9IHYtPmFy Y2gudXNlcl9yZWdzLnIxMjsNCj4gPiAtICAgICAgICBjdHh0LnIxMyA9IHYtPmFyY2gudXNlcl9y ZWdzLnIxMzsNCj4gPiAtICAgICAgICBjdHh0LnIxNCA9IHYtPmFyY2gudXNlcl9yZWdzLnIxNDsN Cj4gPiAtICAgICAgICBjdHh0LnIxNSA9IHYtPmFyY2gudXNlcl9yZWdzLnIxNTsNCj4gPiAtICAg ICAgICBjdHh0LmRyMCA9IHYtPmFyY2guZGVidWdyZWdbMF07DQo+ID4gLSAgICAgICAgY3R4dC5k cjEgPSB2LT5hcmNoLmRlYnVncmVnWzFdOw0KPiA+IC0gICAgICAgIGN0eHQuZHIyID0gdi0+YXJj aC5kZWJ1Z3JlZ1syXTsNCj4gPiAtICAgICAgICBjdHh0LmRyMyA9IHYtPmFyY2guZGVidWdyZWdb M107DQo+ID4gLSAgICAgICAgY3R4dC5kcjYgPSB2LT5hcmNoLmRlYnVncmVnWzZdOw0KPiA+IC0g ICAgICAgIGN0eHQuZHI3ID0gdi0+YXJjaC5kZWJ1Z3JlZ1s3XTsNCj4gPiArICAgICAgICBodm1f c2F2ZV9vbmVfY3B1X2N0eHQodiwgJmN0eHQpOw0KPiA+DQo+ID4gICAgICAgICAgaWYgKCBodm1f c2F2ZV9lbnRyeShDUFUsIHYtPnZjcHVfaWQsIGgsICZjdHh0KSAhPSAwICkNCj4gPiAtICAgICAg ICAgICAgcmV0dXJuIDE7DQo+ID4gKyAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ICAgICAgfQ0K PiA+ICAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtMTE2Miw3ICsxMTg2LDggQEAgSFZN X1JFR0lTVEVSX1NBVkVfUkVTVE9SRShDUFUsDQo+ID4gaHZtX3NhdmVfY3B1X2N0eHQsIGh2bV9s b2FkX2NwdV9jdHh0LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2F2ZV9hcmVhKSArIFwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHhzdGF0ZV9jdHh0X3NpemUoeGNyMCkpDQo+ID4NCj4gPiAtc3RhdGljIGludCBodm1fc2F2 ZV9jcHVfeHNhdmVfc3RhdGVzKHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9jb250 ZXh0X3QgKmgpDQo+ID4gK3N0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X3hzYXZlX3N0YXRlcyhzdHJ1 Y3QgZG9tYWluICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90ICpoLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ ICB7DQo+ID4gICAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4gPiAgICAgIHN0cnVjdCBodm1faHdfY3B1 X3hzYXZlICpjdHh0Ow0KPiA+IEBAIC0xMTcwLDcgKzExOTUsMjcgQEAgc3RhdGljIGludCBodm1f c2F2ZV9jcHVfeHNhdmVfc3RhdGVzKHN0cnVjdA0KPiA+IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9j b250ZXh0X3QgKmgpDQo+ID4gICAgICBpZiAoICFjcHVfaGFzX3hzYXZlICkNCj4gPiAgICAgICAg ICByZXR1cm4gMDsgICAvKiBkbyBub3RoaW5nICovDQo+ID4NCj4gPiAtICAgIGZvcl9lYWNoX3Zj cHUgKCBkLCB2ICkNCj4gPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ID4g KyAgICB7DQo+ID4gKyAgICAgICAgdW5zaWduZWQgaW50IHNpemU7DQo+ID4gKw0KPiA+ICsgICAg ICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsNCj4gPiArICAgICAgICBzaXplID0gSFZNX0NQVV9Y U0FWRV9TSVpFKHYtPmFyY2gueGNyMF9hY2N1bSk7DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmICgg IXhzYXZlX2VuYWJsZWQodikgKQ0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMTsNCj4gPiArICAg ICAgICBpZiAoIF9odm1faW5pdF9lbnRyeShoLCBDUFVfWFNBVkVfQ09ERSwgdi0+dmNwdV9pZCwg c2l6ZSkNCj4gPiApDQo+ID4gKyAgICAgICAgICAgIHJldHVybiAxOw0KPiA+ICsgICAgICAgIGN0 eHQgPSAoc3RydWN0IGh2bV9od19jcHVfeHNhdmUgKikmaC0+ZGF0YVtoLT5jdXJdOw0KPiA+ICsg ICAgICAgIGgtPmN1ciArPSBzaXplOw0KPiA+ICsNCj4gPiArICAgICAgICBjdHh0LT54ZmVhdHVy ZV9tYXNrID0geGZlYXR1cmVfbWFzazsNCj4gPiArICAgICAgICBjdHh0LT54Y3IwID0gdi0+YXJj aC54Y3IwOw0KPiA+ICsgICAgICAgIGN0eHQtPnhjcjBfYWNjdW0gPSB2LT5hcmNoLnhjcjBfYWNj dW07DQo+ID4gKyAgICAgICAgZXhwYW5kX3hzYXZlX3N0YXRlcyh2LCAmY3R4dC0+c2F2ZV9hcmVh LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAtIG9mZnNldG9mKHR5cGVv ZigqY3R4dCksDQo+ID4gc2F2ZV9hcmVhKSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIGZv cl9lYWNoX3ZjcHUgKCBkLCB2ICkNCj4gPiAgICAgIHsNCj4gPiAgICAgICAgICB1bnNpZ25lZCBp bnQgc2l6ZSA9IEhWTV9DUFVfWFNBVkVfU0laRSh2LQ0KPiA+ID5hcmNoLnhjcjBfYWNjdW0pOw0K PiA+DQo+ID4gQEAgLTEzMjQsMTAgKzEzNjksMzkgQEAgc3RhdGljIGludCBodm1fbG9hZF9jcHVf eHNhdmVfc3RhdGVzKHN0cnVjdA0KPiA+IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3Qg KmgpDQo+ID4gICNkZWZpbmUgSFZNX0NQVV9NU1JfU0laRShjbnQpIG9mZnNldG9mKHN0cnVjdCBo dm1fbXNyLCBtc3JbY250XSkNCj4gPiAgc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5 IG1zcl9jb3VudF9tYXg7DQo+ID4NCj4gPiAtc3RhdGljIGludCBodm1fc2F2ZV9jcHVfbXNycyhz dHJ1Y3QgZG9tYWluICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90DQo+ID4gKmgpDQo+ID4g K3N0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X21zcnMoc3RydWN0IGRvbWFpbiAqZCwNCj4gPiBodm1f ZG9tYWluX2NvbnRleHRfdA0KPiA+ICpoLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAgew0KPiA+ICAgICAgc3RydWN0IHZjcHUg KnY7DQo+ID4NCj4gPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ID4gKyAg ICB7DQo+ID4gKyAgICAgICAgc3RydWN0IGh2bV9tc3IgKmN0eHQ7DQo+ID4gKyAgICAgICAgdW5z aWduZWQgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsN Cj4gPiArDQo+ID4gKyAgICAgICAgaWYgKCBfaHZtX2luaXRfZW50cnkoaCwgQ1BVX01TUl9DT0RF LCB2LT52Y3B1X2lkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9DUFVf TVNSX1NJWkUobXNyX2NvdW50X21heCkpICkNCj4gPiArICAgICAgICAgICAgcmV0dXJuIDE7DQo+ ID4gKyAgICAgICAgY3R4dCA9IChzdHJ1Y3QgaHZtX21zciAqKSZoLT5kYXRhW2gtPmN1cl07DQo+ ID4gKyAgICAgICAgY3R4dC0+Y291bnQgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICBpZiAoIGh2 bV9mdW5jcy5zYXZlX21zciApDQo+ID4gKyAgICAgICAgICAgIGh2bV9mdW5jcy5zYXZlX21zcih2 LCBjdHh0KTsNCj4gPiArDQo+ID4gKyAgICAgICAgQVNTRVJUKGN0eHQtPmNvdW50IDw9IG1zcl9j b3VudF9tYXgpOw0KPiA+ICsNCj4gPiArICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGN0eHQtPmNv dW50OyArK2kgKQ0KPiA+ICsgICAgICAgICAgICBjdHh0LT5tc3JbaV0uX3JzdmQgPSAwOw0KPiA+ ICsNCj4gPiArICAgICAgICBpZiAoIGN0eHQtPmNvdW50ICkNCj4gPiArICAgICAgICAgICAgaC0+ Y3VyICs9IEhWTV9DUFVfTVNSX1NJWkUoY3R4dC0+Y291bnQpOw0KPiA+ICsgICAgICAgIGVsc2UN Cj4gPiArICAgICAgICAgICAgaC0+Y3VyIC09IHNpemVvZihzdHJ1Y3QgaHZtX3NhdmVfZGVzY3Jp cHRvcik7DQo+ID4gKw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAgICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkNCj4gPiAgICAgIHsNCj4gPiAgICAgICAgICBzdHJ1Y3QgaHZtX21zciAqY3R4dDsN Cj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pODI1NC5jIGIveGVuL2FyY2gveDg2 L2h2bS9pODI1NC5jDQo+ID4gaW5kZXggOTkyZjA4ZC4uMTQzYjY0ZCAxMDA2NDQNCj4gPiAtLS0g YS94ZW4vYXJjaC94ODYvaHZtL2k4MjU0LmMNCj4gPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2k4 MjU0LmMNCj4gPiBAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgcGl0X3N0b3BfY2hhbm5lbDBfaXJx KFBJVFN0YXRlICpwaXQpDQo+ID4gICAgICBzcGluX3VubG9jaygmcGl0LT5sb2NrKTsNCj4gPiAg fQ0KPiA+DQo+ID4gLXN0YXRpYyBpbnQgcGl0X3NhdmUoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2Rv bWFpbl9jb250ZXh0X3QgKmgpDQo+ID4gK3N0YXRpYyBpbnQgcGl0X3NhdmUoc3RydWN0IGRvbWFp biAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgsDQo+ID4gdW5zaWduZWQgaW50IGluc3RhbmNl KQ0KPiA+ICB7DQo+ID4gICAgICBQSVRTdGF0ZSAqcGl0ID0gZG9tYWluX3ZwaXQoZCk7DQo+ID4g ICAgICBpbnQgcmM7DQo+ID4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMgYi94 ZW4vYXJjaC94ODYvaHZtL2lycS5jDQo+ID4gaW5kZXggZTQyNWRmOS4uZGJiZjc2OSAxMDA2NDQN Cj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lycS5jDQo+ID4gKysrIGIveGVuL2FyY2gveDg2 L2h2bS9pcnEuYw0KPiA+IEBAIC01OTgsNyArNTk4LDcgQEAgc3RhdGljIGludCBfX2luaXQgZHVt cF9pcnFfaW5mb19rZXlfaW5pdCh2b2lkKQ0KPiA+ICB9DQo+ID4gIF9faW5pdGNhbGwoZHVtcF9p cnFfaW5mb19rZXlfaW5pdCk7DQo+ID4NCj4gPiAtc3RhdGljIGludCBpcnFfc2F2ZV9wY2koc3Ry dWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ID4gK3N0YXRpYyBpbnQg aXJxX3NhdmVfcGNpKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoLA0K PiA+IHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAgew0KPiA+ICAgICAgc3RydWN0IGh2bV9p cnEgKmh2bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsNCj4gPiAgICAgIHVuc2lnbmVkIGludCBh c3NlcnRlZCwgcGRldiwgcGludHg7DQo+ID4gQEAgLTYzMCw3ICs2MzAsNyBAQCBzdGF0aWMgaW50 IGlycV9zYXZlX3BjaShzdHJ1Y3QgZG9tYWluICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90 ICpoKQ0KPiA+ICAgICAgcmV0dXJuIHJjOw0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIGludCBp cnFfc2F2ZV9pc2Eoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpDQo+ ID4gK3N0YXRpYyBpbnQgaXJxX3NhdmVfaXNhKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5f Y29udGV4dF90ICpoLA0KPiA+IHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAgew0KPiA+ICAg ICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsNCj4gPg0KPiA+ IEBAIC02MzgsNyArNjM4LDcgQEAgc3RhdGljIGludCBpcnFfc2F2ZV9pc2Eoc3RydWN0IGRvbWFp biAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gPiAgICAgIHJldHVybiAoIGh2 bV9zYXZlX2VudHJ5KElTQV9JUlEsIDAsIGgsICZodm1faXJxLT5pc2FfaXJxKSApOw0KPiA+ICB9 DQo+ID4NCj4gPiAtc3RhdGljIGludCBpcnFfc2F2ZV9saW5rKHN0cnVjdCBkb21haW4gKmQsIGh2 bV9kb21haW5fY29udGV4dF90DQo+ID4gKmgpDQo+ID4gK3N0YXRpYyBpbnQgaXJxX3NhdmVfbGlu ayhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdA0KPiA+ICpoLA0KPiA+IHVu c2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAgew0KPiA+ICAgICAgc3RydWN0IGh2bV9pcnEgKmh2 bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL210cnIuYyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+ID4gaW5kZXggYjcy MWM2My4uYjk5OGQ4MCAxMDA2NDQNCj4gPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL210cnIuYw0K PiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vbXRyci5jDQo+ID4gQEAgLTY2NiwxNCArNjY2LDQy IEBAIGludCBodm1fc2V0X21lbV9waW5uZWRfY2FjaGVhdHRyKHN0cnVjdA0KPiA+IGRvbWFpbg0K PiA+ICpkLCB1aW50NjRfdCBnZm5fc3RhcnQsDQo+ID4gICAgICByZXR1cm4gMDsNCj4gPiAgfQ0K PiA+DQo+ID4gLXN0YXRpYyBpbnQgaHZtX3NhdmVfbXRycl9tc3Ioc3RydWN0IGRvbWFpbiAqZCwN Cj4gPiBodm1fZG9tYWluX2NvbnRleHRfdA0KPiA+ICpoKQ0KPiA+ICtzdGF0aWMgaW50IGh2bV9z YXZlX210cnJfbXNyKHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9jb250ZXh0X3QN Cj4gPiAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAgICBpbnQgaTsN Cj4gPiAgICAgIHN0cnVjdCB2Y3B1ICp2Ow0KPiA+ICAgICAgc3RydWN0IGh2bV9od19tdHJyIGh3 X210cnI7DQo+ID4gICAgICBzdHJ1Y3QgbXRycl9zdGF0ZSAqbXRycl9zdGF0ZTsNCj4gPiAgICAg IC8qIHNhdmUgbXRyciZwYXQgKi8NCj4gPiAtICAgIGZvcl9lYWNoX3ZjcHUoZCwgdikNCj4gPiAr ICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ID4gKyAgICB7DQo+ID4gKyAgICAg ICAgdiA9IGQtPnZjcHVbaW5zdGFuY2VdOw0KPiA+ICsgICAgICAgIG10cnJfc3RhdGUgPSAmdi0+ YXJjaC5odm1fdmNwdS5tdHJyOw0KPiA+ICsNCj4gPiArICAgICAgICBodm1fZ2V0X2d1ZXN0X3Bh dCh2LCAmaHdfbXRyci5tc3JfcGF0X2NyKTsNCj4gPiArDQo+ID4gKyAgICAgICAgaHdfbXRyci5t c3JfbXRycl9kZWZfdHlwZSA9IG10cnJfc3RhdGUtPmRlZl90eXBlDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAobXRycl9zdGF0ZS0+ZW5hYmxlZCA8PCAxMCk7DQo+ID4g KyAgICAgICAgaHdfbXRyci5tc3JfbXRycl9jYXAgPSBtdHJyX3N0YXRlLT5tdHJyX2NhcDsNCj4g PiArDQo+ID4gKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBNVFJSX1ZDTlQ7IGkrKyApDQo+ID4g KyAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAvKiBzYXZlIHBoeXNiYXNlICovDQo+ID4gKyAg ICAgICAgICAgIGh3X210cnIubXNyX210cnJfdmFyW2kqMl0gPQ0KPiA+ICsgICAgICAgICAgICAg ICAgKCh1aW50NjRfdCopbXRycl9zdGF0ZS0+dmFyX3JhbmdlcylbaSoyXTsNCj4gPiArICAgICAg ICAgICAgLyogc2F2ZSBwaHlzbWFzayAqLw0KPiA+ICsgICAgICAgICAgICBod19tdHJyLm1zcl9t dHJyX3ZhcltpKjIrMV0gPQ0KPiA+ICsgICAgICAgICAgICAgICAgKCh1aW50NjRfdCopbXRycl9z dGF0ZS0+dmFyX3JhbmdlcylbaSoyKzFdOw0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBOVU1fRklYRURfTVNSOyBpKysgKQ0KPiA+ICsgICAgICAg ICAgICBod19tdHJyLm1zcl9tdHJyX2ZpeGVkW2ldID0NCj4gPiArICAgICAgICAgICAgICAgICgo dWludDY0X3QqKW10cnJfc3RhdGUtPmZpeGVkX3JhbmdlcylbaV07DQo+ID4gKw0KPiA+ICsgICAg ICAgIGlmICggaHZtX3NhdmVfZW50cnkoTVRSUiwgdi0+dmNwdV9pZCwgaCwgJmh3X210cnIpICE9 IDAgKQ0KPiA+ICsgICAgICAgICAgICByZXR1cm4gMTsNCj4gPiArICAgIH0NCj4gPiArICAgIGVs c2UgZm9yX2VhY2hfdmNwdShkLCB2KQ0KPiA+ICAgICAgew0KPiA+ICAgICAgICAgIG10cnJfc3Rh dGUgPSAmdi0+YXJjaC5odm1fdmNwdS5tdHJyOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vcG10aW1lci5jDQo+ID4gYi94ZW4vYXJjaC94ODYvaHZtL3BtdGltZXIuYw0K PiA+IGluZGV4IGI3MGMyOTkuLjIxZGNkZWIgMTAwNjQ0DQo+ID4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9wbXRpbWVyLmMNCj4gPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3BtdGltZXIuYw0KPiA+ IEBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIGludCBoYW5kbGVfcG10X2lvKA0KPiA+ICAgICAg cmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gPiAgfQ0KPiA+DQo+ID4gLXN0YXRpYyBpbnQgYWNwaV9z YXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ICtzdGF0 aWMgaW50IGFjcGlfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAq aCwNCj4gPiB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ID4gIHsNCj4gPiAgICAgIHN0cnVjdCBo dm1faHdfYWNwaSAqYWNwaSA9ICZkLT5hcmNoLmh2bV9kb21haW4uYWNwaTsNCj4gPiAgICAgIFBN VFN0YXRlICpzID0gJmQtPmFyY2guaHZtX2RvbWFpbi5wbF90aW1lLT52cG10Ow0KPiA+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3J0Yy5jIGIveGVuL2FyY2gveDg2L2h2bS9ydGMuYw0K PiA+IGluZGV4IGJjZmExNjkuLjgzZjMzOWQgMTAwNjQ0DQo+ID4gLS0tIGEveGVuL2FyY2gveDg2 L2h2bS9ydGMuYw0KPiA+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vcnRjLmMNCj4gPiBAQCAtNzM3 LDcgKzczNyw3IEBAIHZvaWQgcnRjX21pZ3JhdGVfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KQ0KPiA+ ICB9DQo+ID4NCj4gPiAgLyogU2F2ZSBSVEMgaGFyZHdhcmUgc3RhdGUgKi8NCj4gPiAtc3RhdGlj IGludCBydGNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkN Cj4gPiArc3RhdGljIGludCBydGNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCwNCj4gPiB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ID4gIHsNCj4gPiAgICAg IFJUQ1N0YXRlICpzID0gZG9tYWluX3ZydGMoZCk7DQo+ID4gICAgICBpbnQgcmM7DQo+ID4gZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc2F2ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9zYXZl LmMNCj4gPiBpbmRleCA4OTg0YTIzLi45N2I1NmY3IDEwMDY0NA0KPiA+IC0tLSBhL3hlbi9hcmNo L3g4Ni9odm0vc2F2ZS5jDQo+ID4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zYXZlLmMNCj4gPiBA QCAtMTM4LDYgKzEzOCw3IEBAIGludCBodm1fc2F2ZV9vbmUoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgaW50DQo+ID4gdHlwZWNvZGUsIHVuc2lnbmVkIGludCBpbnN0YW5jZSwNCj4gPiAgICAg IGludCBydjsNCj4gPiAgICAgIGh2bV9kb21haW5fY29udGV4dF90IGN0eHQgPSB7IH07DQo+ID4g ICAgICBjb25zdCBzdHJ1Y3QgaHZtX3NhdmVfZGVzY3JpcHRvciAqZGVzYzsNCj4gPiArICAgIGJv b2wgaXNfc2luZ2xlX2luc3RhbmNlID0gZmFsc2U7DQo+ID4NCj4gPiAgICAgIGlmICggZC0+aXNf ZHlpbmcgfHwNCj4gPiAgICAgICAgICAgdHlwZWNvZGUgPiBIVk1fU0FWRV9DT0RFX01BWCB8fA0K PiA+IEBAIC0xNDUsNDEgKzE0Niw3NSBAQCBpbnQgaHZtX3NhdmVfb25lKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkDQo+ID4gaW50DQo+ID4gdHlwZWNvZGUsIHVuc2lnbmVkIGludCBpbnN0YW5j ZSwNCj4gPiAgICAgICAgICAgIWh2bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0uc2F2ZSApDQo+ID4g ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4NCj4gPiArICAgIGlmKCBodm1fc3JfaGFuZGxl cnNbdHlwZWNvZGVdLmtpbmQgPT0gSFZNU1JfUEVSX1ZDUFUgJiYNCj4gPiArICAgICAgICBpbnN0 YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ID4gKyAgICAgICAgaXNfc2luZ2xlX2luc3RhbmNlID0g dHJ1ZTsNCj4gPiArDQo+ID4gICAgICBjdHh0LnNpemUgPSBodm1fc3JfaGFuZGxlcnNbdHlwZWNv ZGVdLnNpemU7DQo+ID4gLSAgICBpZiAoIGh2bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0ua2luZCA9 PSBIVk1TUl9QRVJfVkNQVSApDQo+ID4gKyAgICBpZiAoIGh2bV9zcl9oYW5kbGVyc1t0eXBlY29k ZV0ua2luZCA9PSBIVk1TUl9QRVJfVkNQVSAmJg0KPiA+ICsgICAgICAgICBpbnN0YW5jZSA9PSBk LT5tYXhfdmNwdXMgKQ0KPiA+ICAgICAgICAgIGN0eHQuc2l6ZSAqPSBkLT5tYXhfdmNwdXM7DQo+ ID4gKw0KPiA+ICAgICAgY3R4dC5kYXRhID0geG1hbGxvY19ieXRlcyhjdHh0LnNpemUpOw0KPiA+ ICAgICAgaWYgKCAhY3R4dC5kYXRhICkNCj4gPiAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4g Pg0KPiA+IC0gICAgaWYgKCAocnYgPSBodm1fc3JfaGFuZGxlcnNbdHlwZWNvZGVdLnNhdmUoZCwg JmN0eHQpKSAhPSAwICkNCj4gPiArICAgIGlmKCBpc19zaW5nbGVfaW5zdGFuY2UgKQ0KPiA+ICsg ICAgICAgIHZjcHVfcGF1c2UoZC0+dmNwdVtpbnN0YW5jZV0pOw0KPiA+ICsgICAgZWxzZQ0KPiA+ ICsgICAgICAgIGRvbWFpbl9wYXVzZShkKTsNCj4gPiArDQo+ID4gKyAgICBpZiAoIChydiA9IGh2 bV9zcl9oYW5kbGVyc1t0eXBlY29kZV0uc2F2ZShkLCAmY3R4dCwgaW5zdGFuY2UpKQ0KPiA+ICE9 IDAgKQ0KPiA+ICAgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgIkhWTSVkIHNhdmU6IGZhaWxl ZCB0byBzYXZlIHR5cGUNCj4gPiAlIlBSSXUxNiIgKCVkKVxuIiwNCj4gPiAgICAgICAgICAgICAg ICAgZC0+ZG9tYWluX2lkLCB0eXBlY29kZSwgcnYpOw0KPiA+ICAgICAgZWxzZSBpZiAoIHJ2ID0g LUVOT0VOVCwgY3R4dC5jdXIgPj0gc2l6ZW9mKCpkZXNjKSApDQo+ID4gICAgICB7DQo+ID4gICAg ICAgICAgdWludDMyX3Qgb2ZmOw0KPiA+DQo+ID4gLSAgICAgICAgZm9yICggb2ZmID0gMDsgb2Zm IDw9IChjdHh0LmN1ciAtIHNpemVvZigqZGVzYykpOyBvZmYgKz0NCj4gPiBkZXNjLT5sZW5ndGgg KQ0KPiA+ICsgICAgICAgIGlmKCBpc19zaW5nbGVfaW5zdGFuY2UgKQ0KPiA+ICAgICAgICAgIHsN Cj4gPiAtICAgICAgICAgICAgZGVzYyA9ICh2b2lkICopKGN0eHQuZGF0YSArIG9mZik7DQo+ID4g KyAgICAgICAgICAgIGRlc2MgPSAodm9pZCAqKShjdHh0LmRhdGEpOw0KPiA+ICAgICAgICAgICAg ICAvKiBNb3ZlIHBhc3QgaGVhZGVyICovDQo+ID4gLSAgICAgICAgICAgIG9mZiArPSBzaXplb2Yo KmRlc2MpOw0KPiA+ICsgICAgICAgICAgICBvZmYgPSBzaXplb2YoKmRlc2MpOw0KPiA+ICAgICAg ICAgICAgICBpZiAoIGN0eHQuY3VyIDwgZGVzYy0+bGVuZ3RoIHx8DQo+ID4gICAgICAgICAgICAg ICAgICAgb2ZmID4gY3R4dC5jdXIgLSBkZXNjLT5sZW5ndGggKQ0KPiA+IC0gICAgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gLSAgICAgICAgICAgIGlmICggaW5zdGFuY2UgPT0gZGVzYy0+aW5zdGFu Y2UgKQ0KPiA+ICsgICAgICAgICAgICAgICAgcnYgPSAtRUZBVUxUOw0KPiA+ICsgICAgICAgICAg ICBydiA9IDA7DQo+ID4gKyAgICAgICAgICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwoaGFu ZGxlKSApDQo+ID4gKyAgICAgICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5ndGg7DQo+ID4g KyAgICAgICAgICAgIGVsc2UgaWYgKCAqYnVmc3ogPCBkZXNjLT5sZW5ndGggKQ0KPiA+ICsgICAg ICAgICAgICAgICAgcnYgPSAtRU5PQlVGUzsNCj4gPiArICAgICAgICAgICAgZWxzZSBpZiAoIGNv cHlfdG9fZ3Vlc3QoaGFuZGxlLCBjdHh0LmRhdGEgKyBvZmYsIGRlc2MtDQo+ID4gPg0KPiA+ID4g bGVuZ3RoKSApDQo+ID4gKyAgICAgICAgICAgICAgICBydiA9IC1FRkFVTFQ7DQo+ID4gKyAgICAg ICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICpidWZzeiA9IGRlc2MtPmxlbmd0aDsN Cj4gPiArICAgICAgICAgICAgdmNwdV91bnBhdXNlKGQtPnZjcHVbaW5zdGFuY2VdKTsNCj4gPiAr ICAgICAgICB9DQo+ID4gKyAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgIHsNCj4gPiArICAgICAg ICAgICAgZm9yICggb2ZmID0gMDsgb2ZmIDw9IChjdHh0LmN1ciAtIHNpemVvZigqZGVzYykpOyBv ZmYNCj4gPiArPQ0KPiA+IGRlc2MtPmxlbmd0aCApDQo+ID4gICAgICAgICAgICAgIHsNCj4gPiAt ICAgICAgICAgICAgICAgIHJ2ID0gMDsNCj4gPiAtICAgICAgICAgICAgICAgIGlmICggZ3Vlc3Rf aGFuZGxlX2lzX251bGwoaGFuZGxlKSApDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgKmJ1ZnN6 ID0gZGVzYy0+bGVuZ3RoOw0KPiA+IC0gICAgICAgICAgICAgICAgZWxzZSBpZiAoICpidWZzeiA8 IGRlc2MtPmxlbmd0aCApDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgcnYgPSAtRU5PQlVGUzsN Cj4gPiAtICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBjb3B5X3RvX2d1ZXN0KGhhbmRsZSwgY3R4 dC5kYXRhICsgb2ZmLA0KPiA+IGRlc2MtPmxlbmd0aCkgKQ0KPiA+IC0gICAgICAgICAgICAgICAg ICAgIHJ2ID0gLUVGQVVMVDsNCj4gPiAtICAgICAgICAgICAgICAgIGVsc2UNCj4gPiAtICAgICAg ICAgICAgICAgICAgICAqYnVmc3ogPSBkZXNjLT5sZW5ndGg7DQo+ID4gLSAgICAgICAgICAgICAg ICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgIGRlc2MgPSAodm9pZCAqKShjdHh0LmRhdGEg KyBvZmYpOw0KPiA+ICsgICAgICAgICAgICAgICAgLyogTW92ZSBwYXN0IGhlYWRlciAqLw0KPiA+ ICsgICAgICAgICAgICAgICAgb2ZmICs9IHNpemVvZigqZGVzYyk7DQo+ID4gKyAgICAgICAgICAg ICAgICBpZiAoIGN0eHQuY3VyIDwgZGVzYy0+bGVuZ3RoIHx8DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIG9mZiA+IGN0eHQuY3VyIC0gZGVzYy0+bGVuZ3RoICkNCj4gPiArICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgIGlmICggaW5zdGFuY2UgPT0gZGVz Yy0+aW5zdGFuY2UgKQ0KPiA+ICsgICAgICAgICAgICAgICAgew0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHJ2ID0gMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICBpZiAoIGd1ZXN0X2hhbmRs ZV9pc19udWxsKGhhbmRsZSkgKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqYnVmc3og PSBkZXNjLT5sZW5ndGg7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoICpidWZz eiA8IGRlc2MtPmxlbmd0aCApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJ2ID0gLUVO T0JVRlM7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIGNvcHlfdG9fZ3Vlc3Qo aGFuZGxlLCBjdHh0LmRhdGEgKw0KPiA+IG9mZiwNCj4gPiBkZXNjLT5sZW5ndGgpICkNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgcnYgPSAtRUZBVUxUOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZnN6ID0gZGVzYy0+ bGVuZ3RoOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAg ICAgICAgfQ0KPiA+ICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgIGRvbWFpbl91bnBh dXNlKGQpOw0KPiA+ICAgICAgICAgIH0NCj4gPiAgICAgIH0NCj4gPg0KPiA+IEBAIC0yMjUsNyAr MjYwLDcgQEAgaW50IGh2bV9zYXZlKHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFpbl9j b250ZXh0X3QgKmgpDQo+ID4gICAgICAgICAgew0KPiA+ICAgICAgICAgICAgICBwcmludGsoWEVO TE9HX0dfSU5GTyAiSFZNJWQgc2F2ZTogJXNcbiIsDQo+ID4gICAgICAgICAgICAgICAgICAgICBk LT5kb21haW5faWQsIGh2bV9zcl9oYW5kbGVyc1tpXS5uYW1lKTsNCj4gPiAtICAgICAgICAgICAg aWYgKCBoYW5kbGVyKGQsIGgpICE9IDAgKQ0KPiA+ICsgICAgICAgICAgICBpZiAoIGhhbmRsZXIo ZCwgaCwgZC0+bWF4X3ZjcHVzKSAhPSAwICkNCj4gPiAgICAgICAgICAgICAgew0KPiA+ICAgICAg ICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICJIVk0lZCBzYXZlOiBmYWlsZWQgdG8gc2F2ZSB0eXBlDQo+ID4gJSJQUkl1MTYiXG4iLA0K PiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zpb2FwaWMuYw0KPiA+IGIveGVuL2Fy Y2gveDg2L2h2bS92aW9hcGljLmMNCj4gPiBpbmRleCA5N2I0MTlmLi4zNGQ2OTA3IDEwMDY0NA0K PiA+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlvYXBpYy5jDQo+ID4gKysrIGIveGVuL2FyY2gv eDg2L2h2bS92aW9hcGljLmMNCj4gPiBAQCAtNTY5LDcgKzU2OSw3IEBAIGludCB2aW9hcGljX2dl dF90cmlnZ2VyX21vZGUoY29uc3Qgc3RydWN0DQo+ID4gZG9tYWluDQo+ID4gKmQsIHVuc2lnbmVk IGludCBnc2kpDQo+ID4gICAgICByZXR1cm4gdmlvYXBpYy0+cmVkaXJ0YmxbcGluXS5maWVsZHMu dHJpZ19tb2RlOw0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIGludCBpb2FwaWNfc2F2ZShzdHJ1 Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gPiArc3RhdGljIGludCBp b2FwaWNfc2F2ZShzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4g PiB1bnNpZ25lZCBpbnQgaW5zdGFuY2UpDQo+ID4gIHsNCj4gPiAgICAgIHN0cnVjdCBodm1fdmlv YXBpYyAqczsNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFu LmMNCj4gPiBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYw0KPiA+IGluZGV4IGYwZmE1OWQu LjU5NDNiZjQgMTAwNjQ0DQo+ID4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jDQo+ ID4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jDQo+ID4gQEAgLTk5NCw3ICs5OTQs NyBAQCBvdXQ6DQo+ID4gICAgICByZXR1cm4gSFZNX0hDQUxMX2NvbXBsZXRlZDsNCj4gPiAgfQ0K PiA+DQo+ID4gLXN0YXRpYyBpbnQgdmlyaWRpYW5fc2F2ZV9kb21haW5fY3R4dChzdHJ1Y3QgZG9t YWluICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ICtzdGF0aWMgaW50IHZp cmlkaWFuX3NhdmVfZG9tYWluX2N0eHQoc3RydWN0IGRvbWFpbiAqZCwNCj4gPiBodm1fZG9tYWlu X2NvbnRleHRfdCAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAgICBz dHJ1Y3QgaHZtX3ZpcmlkaWFuX2RvbWFpbl9jb250ZXh0IGN0eHQgPSB7DQo+ID4gICAgICAgICAg LnRpbWVfcmVmX2NvdW50ID0gZC0NCj4gPiA+DQo+ID4gPiBhcmNoLmh2bV9kb21haW4udmlyaWRp YW4udGltZV9yZWZfY291bnQudmFsLA0KPiA+IEBAIC0xMDMwLDE0ICsxMDMwLDI1IEBAIHN0YXRp YyBpbnQgdmlyaWRpYW5fbG9hZF9kb21haW5fY3R4dChzdHJ1Y3QNCj4gPiBkb21haW4gKmQsIGh2 bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ICBIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKFZJ UklESUFOX0RPTUFJTiwNCj4gPiB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0LA0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZpcmlkaWFuX2xvYWRfZG9tYWluX2N0eHQsIDEsDQo+ID4g SFZNU1JfUEVSX0RPTSk7DQo+ID4NCj4gPiAtc3RhdGljIGludCB2aXJpZGlhbl9zYXZlX3ZjcHVf Y3R4dChzdHJ1Y3QgZG9tYWluICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ ICtzdGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsDQo+ ID4gaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgsIHVuc2lnbmVkIGludCBpbnN0YW5jZSkNCj4gPiAg ew0KPiA+ICAgICAgc3RydWN0IHZjcHUgKnY7DQo+ID4NCj4gPiAgICAgIGlmICggIWlzX3Zpcmlk aWFuX2RvbWFpbihkKSApDQo+ID4gICAgICAgICAgcmV0dXJuIDA7DQo+ID4NCj4gPiAtICAgIGZv cl9lYWNoX3ZjcHUoIGQsIHYgKSB7DQo+ID4gKyAgICBpZiggaW5zdGFuY2UgPCBkLT5tYXhfdmNw dXMgKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9j b250ZXh0IGN0eHQ7DQo+ID4gKw0KPiA+ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsN Cj4gPiArICAgICAgICBjdHh0LnZwX2Fzc2lzdF9tc3IgPSB2LQ0KPiA+ID4NCj4gPiA+IGFyY2gu aHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXc7DQo+ID4gKyAgICAgICAgY3R4dC52 cF9hc3Npc3RfdmVjdG9yID0gdi0NCj4gPiA+DQo+ID4gPiBhcmNoLmh2bV92Y3B1LnZpcmlkaWFu LnZwX2Fzc2lzdC52ZWN0b3I7DQo+ID4gKw0KPiA+ICsgICAgICAgIGlmICggaHZtX3NhdmVfZW50 cnkoVklSSURJQU5fVkNQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpDQo+ID4gIT0NCj4gPiAwICkN Cj4gPiArICAgICAgICAgICAgcmV0dXJuIDE7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIGZv cl9lYWNoX3ZjcHUoIGQsIHYgKSB7DQo+ID4gICAgICAgICAgc3RydWN0IGh2bV92aXJpZGlhbl92 Y3B1X2NvbnRleHQgY3R4dCA9IHsNCj4gPiAgICAgICAgICAgICAgLnZwX2Fzc2lzdF9tc3IgPSB2 LQ0KPiA+ID4NCj4gPiA+IGFyY2guaHZtX3ZjcHUudmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXcs DQo+ID4gICAgICAgICAgICAgIC52cF9hc3Npc3RfdmVjdG9yID0gdi0NCj4gPiA+DQo+ID4gPiBh cmNoLmh2bV92Y3B1LnZpcmlkaWFuLnZwX2Fzc2lzdC52ZWN0b3IsDQo+ID4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jDQo+ ID4gaW5kZXggNGJmYzUzZS4uNTkxNjMxYSAxMDA2NDQNCj4gPiAtLS0gYS94ZW4vYXJjaC94ODYv aHZtL3ZsYXBpYy5jDQo+ID4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYw0KPiA+IEBA IC0xMzg3LDcgKzEzODcsNyBAQCBzdGF0aWMgdm9pZCBsYXBpY19yZWFybShzdHJ1Y3QgdmxhcGlj ICpzKQ0KPiA+ICAgICAgcy0+dGltZXJfbGFzdF91cGRhdGUgPSBzLT5wdC5sYXN0X3BsdF9ndGlt ZTsNCj4gPiAgfQ0KPiA+DQo+ID4gLXN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3RydWN0 IGRvbWFpbiAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRleHRfdA0KPiA+ICpoKQ0KPiA+ICtzdGF0 aWMgaW50IGxhcGljX3NhdmVfaGlkZGVuKHN0cnVjdCBkb21haW4gKmQsDQo+ID4gaHZtX2RvbWFp bl9jb250ZXh0X3QNCj4gPiAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4g ICAgICBzdHJ1Y3QgdmNwdSAqdjsNCj4gPiAgICAgIHN0cnVjdCB2bGFwaWMgKnM7DQo+ID4gQEAg LTEzOTYsNyArMTM5NiwxMyBAQCBzdGF0aWMgaW50IGxhcGljX3NhdmVfaGlkZGVuKHN0cnVjdCBk b21haW4NCj4gPiAqZCwNCj4gPiBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkNCj4gPiAgICAgIGlm ICggIWhhc192bGFwaWMoZCkgKQ0KPiA+ICAgICAgICAgIHJldHVybiAwOw0KPiA+DQo+ID4gLSAg ICBmb3JfZWFjaF92Y3B1ICggZCwgdiApDQo+ID4gKyAgICBpZiggaW5zdGFuY2UgPCBkLT5tYXhf dmNwdXMgKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICAgIHYgPSBkLT52Y3B1W2luc3RhbmNlXTsN Cj4gPiArICAgICAgICBzID0gdmNwdV92bGFwaWModik7DQo+ID4gKyAgICAgICAgcmMgPSBodm1f c2F2ZV9lbnRyeShMQVBJQywgdi0+dmNwdV9pZCwgaCwgJnMtPmh3KTsNCj4gPiArICAgIH0NCj4g PiArICAgIGVsc2UgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQ0KPiA+ICAgICAgew0KPiA+ICAgICAg ICAgIHMgPSB2Y3B1X3ZsYXBpYyh2KTsNCj4gPiAgICAgICAgICBpZiAoIChyYyA9IGh2bV9zYXZl X2VudHJ5KExBUElDLCB2LT52Y3B1X2lkLCBoLCAmcy0+aHcpKQ0KPiA+ICE9DQo+ID4gMCApDQo+ ID4gQEAgLTE0MDYsNyArMTQxMiw3IEBAIHN0YXRpYyBpbnQgbGFwaWNfc2F2ZV9oaWRkZW4oc3Ry dWN0IGRvbWFpbg0KPiA+ICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ICAg ICAgcmV0dXJuIHJjOw0KPiA+ICB9DQo+ID4NCj4gPiAtc3RhdGljIGludCBsYXBpY19zYXZlX3Jl Z3Moc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QNCj4gPiAqaCkNCj4gPiAr c3RhdGljIGludCBsYXBpY19zYXZlX3JlZ3Moc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9j b250ZXh0X3QNCj4gPiAqaCwgdW5zaWduZWQgaW50IGluc3RhbmNlKQ0KPiA+ICB7DQo+ID4gICAg ICBzdHJ1Y3QgdmNwdSAqdjsNCj4gPiAgICAgIHN0cnVjdCB2bGFwaWMgKnM7DQo+ID4gQEAgLTE0 MTUsNyArMTQyMSwxNiBAQCBzdGF0aWMgaW50IGxhcGljX3NhdmVfcmVncyhzdHJ1Y3QgZG9tYWlu ICpkLA0KPiA+IGh2bV9kb21haW5fY29udGV4dF90ICpoKQ0KPiA+ICAgICAgaWYgKCAhaGFzX3Zs YXBpYyhkKSApDQo+ID4gICAgICAgICAgcmV0dXJuIDA7DQo+ID4NCj4gPiAtICAgIGZvcl9lYWNo X3ZjcHUgKCBkLCB2ICkNCj4gPiArICAgIGlmKCBpbnN0YW5jZSA8IGQtPm1heF92Y3B1cyApDQo+ ID4gKyAgICB7DQo+ID4gKyAgICAgICAgdiA9IGQtPnZjcHVbaW5zdGFuY2VdOw0KPiA+ICsgICAg ICAgIGlmICggaHZtX2Z1bmNzLnN5bmNfcGlyX3RvX2lyciApDQo+ID4gKyAgICAgICAgICAgIGh2 bV9mdW5jcy5zeW5jX3Bpcl90b19pcnIodik7DQo+ID4gKw0KPiA+ICsgICAgICAgIHMgPSB2Y3B1 X3ZsYXBpYyh2KTsNCj4gPiArICAgICAgICByYyA9IGh2bV9zYXZlX2VudHJ5KExBUElDX1JFR1Ms IHYtPnZjcHVfaWQsIGgsIHMtPnJlZ3MpOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZWxzZSBmb3Jf ZWFjaF92Y3B1ICggZCwgdiApDQo+ID4gICAgICB7DQo+ID4gICAgICAgICAgaWYgKCBodm1fZnVu Y3Muc3luY19waXJfdG9faXJyICkNCj4gPiAgICAgICAgICAgICAgaHZtX2Z1bmNzLnN5bmNfcGly X3RvX2lycih2KTsNCj4gPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92cGljLmMgYi94 ZW4vYXJjaC94ODYvaHZtL3ZwaWMuYw0KPiA+IGluZGV4IGUxNjBiYmQuLjZiNzdmM2MgMTAwNjQ0 DQo+ID4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92cGljLmMNCj4gPiArKysgYi94ZW4vYXJjaC94 ODYvaHZtL3ZwaWMuYw0KPiA+IEBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIGludCB2cGljX2lu dGVyY2VwdF9lbGNyX2lvKA0KPiA+ICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCj4gPiAgfQ0K PiA+DQo+ID4gLXN0YXRpYyBpbnQgdnBpY19zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21h aW5fY29udGV4dF90ICpoKQ0KPiA+ICtzdGF0aWMgaW50IHZwaWNfc2F2ZShzdHJ1Y3QgZG9tYWlu ICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gPiB1bnNpZ25lZCBpbnQgaW5zdGFuY2Up DQo+ID4gIHsNCj4gPiAgICAgIHN0cnVjdCBodm1faHdfdnBpYyAqczsNCj4gPiAgICAgIGludCBp Ow0KPiA+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9p bmNsdWRlL2FzbS0NCj4gPiB4ODYvaHZtL2h2bS5oDQo+ID4gaW5kZXggYjY4N2UwMy4uYzRiN2Iz ZCAxMDA2NDQNCj4gPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaA0KPiA+ICsr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oDQo+ID4gQEAgLTYwOSw2ICs2MDksOCBA QCBzdGF0aWMgaW5saW5lIGJvb2wNCj4gPiBhbHRwMm1fdmNwdV9lbXVsYXRlX3ZlKHN0cnVjdA0K PiA+IHZjcHUgKnYpDQo+ID4gICAgICByZXR1cm4gZmFsc2U7DQo+ID4gIH0NCj4gPg0KPiA+ICt2 b2lkIGh2bV9zYXZlX29uZV9jcHVfY3R4dChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGh2bV9od19j cHUNCj4gPiAqY3R4dCk7DQo+ID4gKw0KPiA+ICAvKiBDaGVjayBDUjQvRUZFUiB2YWx1ZXMgKi8N Cj4gPiAgY29uc3QgY2hhciAqaHZtX2VmZXJfdmFsaWQoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVp bnQ2NF90IHZhbHVlLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZWQgaW50 IGNyMF9wZyk7DQo+ID4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3NhdmUu aCBiL3hlbi9pbmNsdWRlL2FzbS0NCj4gPiB4ODYvaHZtL3NhdmUuaA0KPiA+IGluZGV4IGY4ODll OGYuLmEyYzM5YzQgMTAwNjQ0DQo+ID4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc2F2 ZS5oDQo+ID4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc2F2ZS5oDQo+ID4gQEAgLTk1 LDggKzk1LDkgQEAgc3RhdGljIGlubGluZSB1aW50MTZfdCBodm1fbG9hZF9pbnN0YW5jZShzdHJ1 Y3QNCj4gPiBodm1fZG9tYWluX2NvbnRleHQgKmgpDQo+ID4gICAqIFRoZSBzYXZlIGhhbmRsZXIg bWF5IHNhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIGEgdHlwZSBpbnRvIHRoZQ0KPiA+IGJ1ZmZl cjsNCj4gPiAgICogdGhlIGxvYWQgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNo IGluc3RhbmNlIGZvdW5kDQo+ID4gd2hlbg0KPiA+ICAgKiByZXN0b3JpbmcuICBCb3RoIHJldHVy biBub24temVybyBvbiBlcnJvci4gKi8NCj4gPiAtdHlwZWRlZiBpbnQgKCpodm1fc2F2ZV9oYW5k bGVyKSAoc3RydWN0IGRvbWFpbiAqZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpOw0KPiA+ICt0eXBlZGVmIGludCAoKmh2bV9z YXZlX2hhbmRsZXIpIChzdHJ1Y3QgZG9tYWluICpkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBodm1fZG9tYWluX2NvbnRleHRfdCAqaCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluc3RhbmNlKTsNCj4gPiAgdHlwZWRl ZiBpbnQgKCpodm1fbG9hZF9oYW5kbGVyKSAoc3RydWN0IGRvbWFpbiAqZCwNCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpOw0KPiA+ DQoNCl9fX19fX19fX19fX19fX19fX19fX19fXw0KVGhpcyBlbWFpbCB3YXMgc2Nhbm5lZCBieSBC aXRkZWZlbmRlcg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcK aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==