From mboxrd@z Thu Jan 1 00:00:00 1970 From: Elena Ufimtseva Subject: Re: [PATCH v3 3/4] x86: remove has_hvm_container_{domain/vcpu} Date: Fri, 3 Mar 2017 08:49:35 -0800 Message-ID: <20170303164935.GE28725@localhost.localdomain> References: <20170303122508.87465-1-roger.pau@citrix.com> <20170303122508.87465-4-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cjqQW-00070M-NG for xen-devel@lists.xenproject.org; Fri, 03 Mar 2017 16:51:33 +0000 Content-Disposition: inline In-Reply-To: <20170303122508.87465-4-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Roger Pau Monne Cc: Kevin Tian , Jan Beulich , Jun Nakajima , Andrew Cooper , Christoph Egger , Tim Deegan , George Dunlap , Suravee Suthikulpanit , xen-devel@lists.xenproject.org, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBNYXIgMDMsIDIwMTcgYXQgMTI6MjU6MDdQTSArMDAwMCwgUm9nZXIgUGF1IE1vbm5l IHdyb3RlOgo+IEl0IGlzIG5vdyB1c2VsZXNzIHNpbmNlIFBWSHYxIGlzIHJlbW92ZWQgYW5kIFBW SHYyIGlzIGEgSFZNIGRvbWFpbiBmcm9tIFhlbidzCj4gcG9pbnQgb2Ygdmlldy4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KPiBSZXZp ZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBBY2tl ZC1ieTogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gUmV2aWV3ZWQtYnk6IEtldmluIFRpYW4g PGtldmluLnRpYW5AaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBCb3JpcyBPc3Ryb3Zza3kgPGJv cmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IEFja2VkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9y Z2UuZHVubGFwQGNpdHJpeC5jb20+Cj4gLS0tCj4gQ2M6IENocmlzdG9waCBFZ2dlciA8Y2hlZ2dl ckBhbWF6b24uZGU+Cj4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBDYzog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBDYzogQm9yaXMgT3N0 cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KPiBDYzogU3VyYXZlZSBTdXRoaWt1 bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KPiBDYzogSnVuIE5ha2FqaW1h IDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGlu dGVsLmNvbT4KPiBDYzogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNv bT4KCkhtbSwgSSBkb250IHNlZSB0aGUgY29kZSBJIHNob3VsZCBBQ0suCkJ1dCBoZXJlIHlvdSBn byEKCkFja2VkLWJ5OiBFbGVuYSBVZmltdHNldmEgPGVsZW5hLnVmaW10c2V2YUBvcmFjbGUuY29t PgoKPiBDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+IENj OiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KPiBDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1L21jaGVjay92 bWNlLmMgICAgICB8ICA2ICsrKy0tLQo+ICB4ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyAgICAgICAg ICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L2NwdS92cG11X2FtZC5jICAgICAgICAgfCAx MiArKysrKystLS0tLS0KPiAgeGVuL2FyY2gveDg2L2NwdS92cG11X2ludGVsLmMgICAgICAgfCAz MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9jcHVpZC5j ICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCj4gIHhlbi9hcmNoL3g4Ni9kZWJ1Zy5jICAgICAg ICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICAg fCAyOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9kb21haW5f YnVpbGQuYyAgICAgICAgIHwgIDUgKystLS0KPiAgeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAg ICAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2RtLmMgICAgICAgICAgICAgICB8 ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgIHwgIDYgKysrLS0t Cj4gIHhlbi9hcmNoL3g4Ni9odm0vaXJxLmMgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2Fy Y2gveDg2L2h2bS9tdHJyLmMgICAgICAgICAgICAgfCAgMiArLQo+ICB4ZW4vYXJjaC94ODYvaHZt L3Ztc2kuYyAgICAgICAgICAgICB8ICAzICstLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNz LmMgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAg ICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgIHwgIDQg KystLQo+ICB4ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgICAgICAgICAgICB8ICAyICstCj4gIHhl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgICAgIHwgIDkgKysrKy0tLS0tCj4gIHhlbi9h cmNoL3g4Ni9zZXR1cC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gveDg2L3Rp bWUuYyAgICAgICAgICAgICAgICAgfCAxMSArKysrKy0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvdHJh cHMuYyAgICAgICAgICAgICAgICB8ICA0ICsrLS0KPiAgeGVuL2FyY2gveDg2L3g4Nl82NC90cmFw cy5jICAgICAgICAgfCAgNCArKy0tCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21t dS5jIHwgIDIgKy0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCAgICAgICAgfCAgMiAr LQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2V2ZW50LmggICAgICAgICB8ICAyICstCj4gIHhlbi9p bmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmggIHwgMTIgKysrKysrLS0tLS0tCj4gIHhlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oICAgICAgIHwgIDIgKy0KPiAgeGVuL2luY2x1ZGUveGVu L3NjaGVkLmggICAgICAgICAgICAgfCAgMiAtLQo+ICB4ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4u aCAgICAgICAgICB8ICA1ICsrLS0tCj4gIDMwIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMo KyksIDk1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21j aGVjay92bWNlLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay92bWNlLmMKPiBpbmRleCA4Yjcy N2I0Li42ZmI3ODMzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2Uu Ywo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3ZtY2UuYwo+IEBAIC04Miw3ICs4Miw3 IEBAIGludCB2bWNlX3Jlc3RvcmVfdmNwdShzdHJ1Y3QgdmNwdSAqdiwgY29uc3Qgc3RydWN0IGh2 bV92bWNlX3ZjcHUgKmN0eHQpCj4gICAgICB7Cj4gICAgICAgICAgZHByaW50ayhYRU5MT0dfR19F UlIsICIlcyByZXN0b3JlOiB1bnN1cHBvcnRlZCBNQ0EgY2FwYWJpbGl0aWVzIgo+ICAgICAgICAg ICAgICAgICAgIiAlIyIgUFJJeDY0ICIgZm9yICVwdiAoc3VwcG9ydGVkOiAlI0x4KVxuIiwKPiAt ICAgICAgICAgICAgICAgIGhhc19odm1fY29udGFpbmVyX3ZjcHUodikgPyAiSFZNIiA6ICJQViIs IGN0eHQtPmNhcHMsCj4gKyAgICAgICAgICAgICAgICBpc19odm1fdmNwdSh2KSA/ICJIVk0iIDog IlBWIiwgY3R4dC0+Y2FwcywKPiAgICAgICAgICAgICAgICAgIHYsIGd1ZXN0X21jZ19jYXAgJiB+ TUNHX0NBUF9DT1VOVCk7Cj4gICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiAgICAgIH0KPiBAQCAt MzY0LDcgKzM2NCw3IEBAIGludCBpbmplY3Rfdm1jZShzdHJ1Y3QgZG9tYWluICpkLCBpbnQgdmNw dSkKPiAgICAgICAgICBpZiAoICF2LT5pc19pbml0aWFsaXNlZCApCj4gICAgICAgICAgICAgIGNv bnRpbnVlOwo+ICAKPiAtICAgICAgICBpZiAoIChoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkg fHwKPiArICAgICAgICBpZiAoIChpc19odm1fZG9tYWluKGQpIHx8Cj4gICAgICAgICAgICAgICAg Z3Vlc3RfaGFzX3RyYXBfY2FsbGJhY2soZCwgdi0+dmNwdV9pZCwgVFJBUF9tYWNoaW5lX2NoZWNr KSkgJiYKPiAgICAgICAgICAgICAgICF0ZXN0X2FuZF9zZXRfYm9vbCh2LT5tY2VfcGVuZGluZykg KQo+ICAgICAgICAgIHsKPiBAQCAtNDQ0LDcgKzQ0NCw3IEBAIGludCB1bm1tYXBfYnJva2VuX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuLCB1bnNpZ25lZCBsb25nIGdmbikKPiAgICAg IGlmICggIW1mbl92YWxpZChtZm4pICkKPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgCj4g LSAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgfHwgIXBhZ2luZ19tb2RlX2hh cChkKSApCj4gKyAgICBpZiAoICFpc19odm1fZG9tYWluKGQpIHx8ICFwYWdpbmdfbW9kZV9oYXAo ZCkgKQo+ICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKPiAgCj4gICAgICByYyA9IC0xOwo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUv dnBtdS5jCj4gaW5kZXggYTFlOWYwMC4uMDM0MDFmZCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94 ODYvY3B1L3ZwbXUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCj4gQEAgLTIzNyw3 ICsyMzcsNyBAQCB2b2lkIHZwbXVfZG9faW50ZXJydXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQo+ICAgICAgICAgIHZwbXUtPmFyY2hfdnBtdV9vcHMtPmFyY2hfdnBtdV9zYXZlKHNhbXBs aW5nLCAxKTsKPiAgICAgICAgICB2cG11X3Jlc2V0KHZwbXUsIFZQTVVfQ09OVEVYVF9TQVZFIHwg VlBNVV9DT05URVhUX0xPQURFRCk7Cj4gIAo+IC0gICAgICAgIGlmICggaGFzX2h2bV9jb250YWlu ZXJfdmNwdShzYW1wbGVkKSApCj4gKyAgICAgICAgaWYgKCBpc19odm1fdmNwdShzYW1wbGVkKSAp Cj4gICAgICAgICAgICAgICpmbGFncyA9IDA7Cj4gICAgICAgICAgZWxzZQo+ICAgICAgICAgICAg ICAqZmxhZ3MgPSBQTVVfU0FNUExFX1BWOwo+IEBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCB2cG11 X2RvX2ludGVycnVwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiAgICAgICAgICAgICAg ci0+c3AgPSBjdXJfcmVncy0+cnNwOwo+ICAgICAgICAgICAgICByLT5mbGFncyA9IGN1cl9yZWdz LT5yZmxhZ3M7Cj4gIAo+IC0gICAgICAgICAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl92Y3B1 KHNhbXBsZWQpICkKPiArICAgICAgICAgICAgaWYgKCAhaXNfaHZtX3ZjcHUoc2FtcGxlZCkgKQo+ ICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICByLT5zcyA9IGN1cl9yZWdzLT5zczsK PiAgICAgICAgICAgICAgICAgIHItPmNzID0gY3VyX3JlZ3MtPmNzOwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvY3B1L3ZwbXVfYW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L3ZwbXVfYW1kLmMK PiBpbmRleCBlMGFjYmY0Li5iM2MzNjk3IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv dnBtdV9hbWQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdV9hbWQuYwo+IEBAIC0zMDUs OCArMzA1LDggQEAgc3RhdGljIGludCBhbWRfdnBtdV9zYXZlKHN0cnVjdCB2Y3B1ICp2LCAgYm9v bF90IHRvX2d1ZXN0KQo+ICAKPiAgICAgIGNvbnRleHRfc2F2ZSh2KTsKPiAgCj4gLSAgICBpZiAo ICF2cG11X2lzX3NldCh2cG11LCBWUE1VX1JVTk5JTkcpICYmCj4gLSAgICAgICAgIGhhc19odm1f Y29udGFpbmVyX3ZjcHUodikgJiYgaXNfbXNyX2JpdG1hcF9vbih2cG11KSApCj4gKyAgICBpZiAo ICF2cG11X2lzX3NldCh2cG11LCBWUE1VX1JVTk5JTkcpICYmIGlzX2h2bV92Y3B1KHYpICYmCj4g KyAgICAgICAgIGlzX21zcl9iaXRtYXBfb24odnBtdSkgKQo+ICAgICAgICAgIGFtZF92cG11X3Vu c2V0X21zcl9iaXRtYXAodik7Cj4gIAo+ICAgICAgaWYgKCB0b19ndWVzdCApCj4gQEAgLTM2Nyw3 ICszNjcsNyBAQCBzdGF0aWMgaW50IGFtZF92cG11X2RvX3dybXNyKHVuc2lnbmVkIGludCBtc3Is IHVpbnQ2NF90IG1zcl9jb250ZW50LAo+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAKPiAg ICAgIC8qIEZvciBhbGwgY291bnRlcnMsIGVuYWJsZSBndWVzdCBvbmx5IG1vZGUgZm9yIEhWTSBn dWVzdCAqLwo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICYmICh0eXBlID09 IE1TUl9UWVBFX0NUUkwpICYmCj4gKyAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICYmICh0eXBlID09 IE1TUl9UWVBFX0NUUkwpICYmCj4gICAgICAgICAgICFpc19ndWVzdF9tb2RlKG1zcl9jb250ZW50 KSApCj4gICAgICB7Cj4gICAgICAgICAgc2V0X2d1ZXN0X21vZGUobXNyX2NvbnRlbnQpOwo+IEBA IC0zODEsNyArMzgxLDcgQEAgc3RhdGljIGludCBhbWRfdnBtdV9kb193cm1zcih1bnNpZ25lZCBp bnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCwKPiAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4g ICAgICAgICAgdnBtdV9zZXQodnBtdSwgVlBNVV9SVU5OSU5HKTsKPiAgCj4gLSAgICAgICAgaWYg KCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICYmIGlzX21zcl9iaXRtYXBfb24odnBtdSkgKQo+ ICsgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikgJiYgaXNfbXNyX2JpdG1hcF9vbih2cG11KSAp Cj4gICAgICAgICAgICAgICBhbWRfdnBtdV9zZXRfbXNyX2JpdG1hcCh2KTsKPiAgICAgIH0KPiAg Cj4gQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgaW50IGFtZF92cG11X2RvX3dybXNyKHVuc2ln bmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50LAo+ICAgICAgICAgIChpc19wbXVfZW5h YmxlZChtc3JfY29udGVudCkgPT0gMCkgJiYgdnBtdV9pc19zZXQodnBtdSwgVlBNVV9SVU5OSU5H KSApCj4gICAgICB7Cj4gICAgICAgICAgdnBtdV9yZXNldCh2cG11LCBWUE1VX1JVTk5JTkcpOwo+ IC0gICAgICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfdmNwdSh2KSAmJiBpc19tc3JfYml0bWFw X29uKHZwbXUpICkKPiArICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICYmIGlzX21zcl9iaXRt YXBfb24odnBtdSkgKQo+ICAgICAgICAgICAgICAgYW1kX3ZwbXVfdW5zZXRfbXNyX2JpdG1hcCh2 KTsKPiAgICAgICAgICByZWxlYXNlX3BtdV9vd25lcnNoaXAoUE1VX09XTkVSX0hWTSk7Cj4gICAg ICB9Cj4gQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgdm9pZCBhbWRfdnBtdV9kZXN0cm95KHN0 cnVjdCB2Y3B1ICp2KQo+ICB7Cj4gICAgICBzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUgPSB2Y3B1 X3ZwbXUodik7Cj4gIAo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICYmIGlz X21zcl9iaXRtYXBfb24odnBtdSkgKQo+ICsgICAgaWYgKCBpc19odm1fdmNwdSh2KSAmJiBpc19t c3JfYml0bWFwX29uKHZwbXUpICkKPiAgICAgICAgICBhbWRfdnBtdV91bnNldF9tc3JfYml0bWFw KHYpOwo+ICAKPiAgICAgIHhmcmVlKHZwbXUtPmNvbnRleHQpOwo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvY3B1L3ZwbXVfaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdV9pbnRlbC5j Cj4gaW5kZXggNjI2YmVkNS4uMGQ2NmVjYiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvY3B1 L3ZwbXVfaW50ZWwuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdV9pbnRlbC5jCj4gQEAg LTMwNiw3ICszMDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19jb3JlMl92cG11X3NhdmUoc3Ry dWN0IHZjcHUgKnYpCj4gICAgICBmb3IgKCBpID0gMDsgaSA8IGFyY2hfcG1jX2NudDsgaSsrICkK PiAgICAgICAgICByZG1zcmwoTVNSX0lBMzJfUEVSRkNUUjAgKyBpLCB4ZW5fcG11X2NudHJfcGFp cltpXS5jb3VudGVyKTsKPiAgCj4gLSAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYp ICkKPiArICAgIGlmICggIWlzX2h2bV92Y3B1KHYpICkKPiAgICAgICAgICByZG1zcmwoTVNSX0NP UkVfUEVSRl9HTE9CQUxfU1RBVFVTLCBjb3JlMl92cG11X2N4dC0+Z2xvYmFsX3N0YXR1cyk7Cj4g IH0KPiAgCj4gQEAgLTMxNCw3ICszMTQsNyBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfc2F2ZShz dHJ1Y3QgdmNwdSAqdiwgYm9vbF90IHRvX2d1ZXN0KQo+ICB7Cj4gICAgICBzdHJ1Y3QgdnBtdV9z dHJ1Y3QgKnZwbXUgPSB2Y3B1X3ZwbXUodik7Cj4gIAo+IC0gICAgaWYgKCAhaGFzX2h2bV9jb250 YWluZXJfdmNwdSh2KSApCj4gKyAgICBpZiAoICFpc19odm1fdmNwdSh2KSApCj4gICAgICAgICAg d3Jtc3JsKE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsIDApOwo+ICAKPiAgICAgIGlmICggIXZw bXVfYXJlX2FsbF9zZXQodnBtdSwgVlBNVV9DT05URVhUX1NBVkUgfCBWUE1VX0NPTlRFWFRfTE9B REVEKSApCj4gQEAgLTMyMyw4ICszMjMsOCBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfc2F2ZShz dHJ1Y3QgdmNwdSAqdiwgYm9vbF90IHRvX2d1ZXN0KQo+ICAgICAgX19jb3JlMl92cG11X3NhdmUo dik7Cj4gIAo+ICAgICAgLyogVW5zZXQgUE1VIE1TUiBiaXRtYXAgdG8gdHJhcCBsYXp5IGxvYWQu ICovCj4gLSAgICBpZiAoICF2cG11X2lzX3NldCh2cG11LCBWUE1VX1JVTk5JTkcpICYmCj4gLSAg ICAgICAgIGhhc19odm1fY29udGFpbmVyX3ZjcHUodikgJiYgY3B1X2hhc192bXhfbXNyX2JpdG1h cCApCj4gKyAgICBpZiAoICF2cG11X2lzX3NldCh2cG11LCBWUE1VX1JVTk5JTkcpICYmIGlzX2h2 bV92Y3B1KHYpICYmCj4gKyAgICAgICAgIGNwdV9oYXNfdm14X21zcl9iaXRtYXAgKQo+ICAgICAg ICAgIGNvcmUyX3ZwbXVfdW5zZXRfbXNyX2JpdG1hcCh2LT5hcmNoLmh2bV92bXgubXNyX2JpdG1h cCk7Cj4gIAo+ICAgICAgaWYgKCB0b19ndWVzdCApCj4gQEAgLTM2Miw3ICszNjIsNyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgX19jb3JlMl92cG11X2xvYWQoc3RydWN0IHZjcHUgKnYpCj4gICAgICBp ZiAoIHZwbXVfaXNfc2V0KHZjcHVfdnBtdSh2KSwgVlBNVV9DUFVfSEFTX0RTKSApCj4gICAgICAg ICAgd3Jtc3JsKE1TUl9JQTMyX0RTX0FSRUEsIGNvcmUyX3ZwbXVfY3h0LT5kc19hcmVhKTsKPiAg Cj4gLSAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICkKPiArICAgIGlmICggIWlz X2h2bV92Y3B1KHYpICkKPiAgICAgIHsKPiAgICAgICAgICB3cm1zcmwoTVNSX0NPUkVfUEVSRl9H TE9CQUxfT1ZGX0NUUkwsIGNvcmUyX3ZwbXVfY3h0LT5nbG9iYWxfb3ZmX2N0cmwpOwo+ICAgICAg ICAgIGNvcmUyX3ZwbXVfY3h0LT5nbG9iYWxfb3ZmX2N0cmwgPSAwOwo+IEBAIC00MTMsNyArNDEz LDcgQEAgc3RhdGljIGludCBjb3JlMl92cG11X3ZlcmlmeShzdHJ1Y3QgdmNwdSAqdikKPiAgICAg IH0KPiAgCj4gICAgICBpZiAoIHZwbXVfaXNfc2V0KHZwbXUsIFZQTVVfQ1BVX0hBU19EUykgJiYK PiAtICAgICAgICAgIShoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpCj4gKyAgICAgICAgICEoaXNf aHZtX3ZjcHUodikKPiAgICAgICAgICAgICA/IGlzX2Nhbm9uaWNhbF9hZGRyZXNzKGNvcmUyX3Zw bXVfY3h0LT5kc19hcmVhKQo+ICAgICAgICAgICAgIDogX19hZGRyX29rKGNvcmUyX3ZwbXVfY3h0 LT5kc19hcmVhKSkgKQo+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IEBAIC00NzQsNyArNDc0 LDcgQEAgc3RhdGljIGludCBjb3JlMl92cG11X2FsbG9jX3Jlc291cmNlKHN0cnVjdCB2Y3B1ICp2 KQo+ICAgICAgaWYgKCAhYWNxdWlyZV9wbXVfb3duZXJzaGlwKFBNVV9PV05FUl9IVk0pICkKPiAg ICAgICAgICByZXR1cm4gMDsKPiAgCj4gLSAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX3ZjcHUo dikgKQo+ICsgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCj4gICAgICB7Cj4gICAgICAgICAgd3Jt c3JsKE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsIDApOwo+ICAgICAgICAgIGlmICggdm14X2Fk ZF9ob3N0X2xvYWRfbXNyKE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwpICkKPiBAQCAtNTM5LDcg KzUzOSw3IEBAIHN0YXRpYyBpbnQgY29yZTJfdnBtdV9tc3JfY29tbW9uX2NoZWNrKHUzMiBtc3Jf aW5kZXgsIGludCAqdHlwZSwgaW50ICppbmRleCkKPiAgICAgIHsKPiAgICAgICAgICBfX2NvcmUy X3ZwbXVfbG9hZChjdXJyZW50KTsKPiAgICAgICAgICB2cG11X3NldCh2cG11LCBWUE1VX0NPTlRF WFRfTE9BREVEKTsKPiAtICAgICAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX3ZjcHUoY3VycmVu dCkgJiYKPiArICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KGN1cnJlbnQpICYmCj4gICAgICAgICAg ICAgICBjcHVfaGFzX3ZteF9tc3JfYml0bWFwICkKPiAgICAgICAgICAgICAgY29yZTJfdnBtdV9z ZXRfbXNyX2JpdG1hcChjdXJyZW50LT5hcmNoLmh2bV92bXgubXNyX2JpdG1hcCk7Cj4gICAgICB9 Cj4gQEAgLTYxMiw5ICs2MTIsOCBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfZG9fd3Jtc3IodW5z aWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCj4gICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+ICAgICAgICAgIGlmICggdnBtdV9pc19zZXQodnBtdSwgVlBNVV9DUFVfSEFT X0RTKSApCj4gICAgICAgICAgewo+IC0gICAgICAgICAgICBpZiAoICEoaGFzX2h2bV9jb250YWlu ZXJfdmNwdSh2KQo+IC0gICAgICAgICAgICAgICAgICAgPyBpc19jYW5vbmljYWxfYWRkcmVzcyht c3JfY29udGVudCkKPiAtICAgICAgICAgICAgICAgICAgIDogX19hZGRyX29rKG1zcl9jb250ZW50 KSkgKQo+ICsgICAgICAgICAgICBpZiAoICEoaXNfaHZtX3ZjcHUodikgPyBpc19jYW5vbmljYWxf YWRkcmVzcyhtc3JfY29udGVudCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDogX19hZGRyX29rKG1zcl9jb250ZW50KSkgKQo+ICAgICAgICAgICAgICB7Cj4gICAgICAgICAg ICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICJJbGxlZ2FsIGFkZHJlc3MgZm9yIElBMzJfRFNfQVJFQTogJSMiIFBSSXg2NCAieFxuIiwK PiBAQCAtNjM1LDcgKzYzNCw3IEBAIHN0YXRpYyBpbnQgY29yZTJfdnBtdV9kb193cm1zcih1bnNp Z25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCwKPiAgICAgICAgICBpZiAoIG1zcl9j b250ZW50ICYgZml4ZWRfY3RybF9tYXNrICkKPiAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gIAo+IC0gICAgICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfdmNwdSh2KSApCj4gKyAgICAg ICAgaWYgKCBpc19odm1fdmNwdSh2KSApCj4gICAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21z cihNU1JfQ09SRV9QRVJGX0dMT0JBTF9DVFJMLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmNvcmUyX3ZwbXVfY3h0LT5nbG9iYWxfY3RybCk7Cj4gICAgICAgICAgZWxzZQo+IEBA IC03MDQsNyArNzAzLDcgQEAgc3RhdGljIGludCBjb3JlMl92cG11X2RvX3dybXNyKHVuc2lnbmVk IGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50LAo+ICAgICAgICAgICAgICBpZiAoIGJsb2Nr ZWQgKQo+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0gICAgICAgICAg ICBpZiAoIGhhc19odm1fY29udGFpbmVyX3ZjcHUodikgKQo+ICsgICAgICAgICAgICBpZiAoIGlz X2h2bV92Y3B1KHYpICkKPiAgICAgICAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21zcihNU1Jf Q09SRV9QRVJGX0dMT0JBTF9DVFJMLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZjb3JlMl92cG11X2N4dC0+Z2xvYmFsX2N0cmwpOwo+ICAgICAgICAgICAgICBlbHNlCj4g QEAgLTcyMyw3ICs3MjIsNyBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfZG9fd3Jtc3IodW5zaWdu ZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCj4gICAgICAgICAgd3Jtc3JsKG1zciwg bXNyX2NvbnRlbnQpOwo+ICAgICAgZWxzZQo+ICAgICAgewo+IC0gICAgICAgIGlmICggaGFzX2h2 bV9jb250YWluZXJfdmNwdSh2KSApCj4gKyAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCj4g ICAgICAgICAgICAgIHZteF93cml0ZV9ndWVzdF9tc3IoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RS TCwgbXNyX2NvbnRlbnQpOwo+ICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgd3Jtc3JsKE1T Ul9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsIG1zcl9jb250ZW50KTsKPiBAQCAtNzU3LDcgKzc1Niw3 IEBAIHN0YXRpYyBpbnQgY29yZTJfdnBtdV9kb19yZG1zcih1bnNpZ25lZCBpbnQgbXNyLCB1aW50 NjRfdCAqbXNyX2NvbnRlbnQpCj4gICAgICAgICAgICAgICptc3JfY29udGVudCA9IGNvcmUyX3Zw bXVfY3h0LT5nbG9iYWxfc3RhdHVzOwo+ICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICBj YXNlIE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkw6Cj4gLSAgICAgICAgICAgIGlmICggaGFzX2h2 bV9jb250YWluZXJfdmNwdSh2KSApCj4gKyAgICAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikg KQo+ICAgICAgICAgICAgICAgICAgdm14X3JlYWRfZ3Vlc3RfbXNyKE1TUl9DT1JFX1BFUkZfR0xP QkFMX0NUUkwsIG1zcl9jb250ZW50KTsKPiAgICAgICAgICAgICAgZWxzZQo+ICAgICAgICAgICAg ICAgICAgcmRtc3JsKE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsICptc3JfY29udGVudCk7Cj4g QEAgLTg1OCw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBjb3JlMl92cG11X2Rlc3Ryb3koc3RydWN0 IHZjcHUgKnYpCj4gICAgICB2cG11LT5jb250ZXh0ID0gTlVMTDsKPiAgICAgIHhmcmVlKHZwbXUt PnByaXZfY29udGV4dCk7Cj4gICAgICB2cG11LT5wcml2X2NvbnRleHQgPSBOVUxMOwo+IC0gICAg aWYgKCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICYmIGNwdV9oYXNfdm14X21zcl9iaXRtYXAg KQo+ICsgICAgaWYgKCBpc19odm1fdmNwdSh2KSAmJiBjcHVfaGFzX3ZteF9tc3JfYml0bWFwICkK PiAgICAgICAgICBjb3JlMl92cG11X3Vuc2V0X21zcl9iaXRtYXAodi0+YXJjaC5odm1fdm14Lm1z cl9iaXRtYXApOwo+ICAgICAgcmVsZWFzZV9wbXVfb3duZXJzaGlwKFBNVV9PV05FUl9IVk0pOwo+ ICAgICAgdnBtdV9jbGVhcih2cG11KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlk LmMgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwo+IGluZGV4IDBkZDM1ZGMuLmY5YmI5OGQgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKPiArKysgYi94ZW4vYXJjaC94ODYvY3B1aWQu Ywo+IEBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBndWVzdF9jcHVpZChjb25zdCBzdHJ1Y3QgdmNw dSAqdiwgdWludDMyX3QgbGVhZiwKPiAgICAgICAgICAgICAgICAgIHJlcy0+YyB8PSBjcHVmZWF0 X21hc2soWDg2X0ZFQVRVUkVfRFNDUEwpOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgaWYg KCBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICsgICAgICAgIGlmICggaXNfaHZtX2Rv bWFpbihkKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICAvKiBPU1hTQVZFIGNsZWFyIGlu IHBvbGljeS4gIEZhc3QtZm9yd2FyZCBDUjQgYmFjayBpbi4gKi8KPiAgICAgICAgICAgICAgaWYg KCB2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2NyWzRdICYgWDg2X0NSNF9PU1hTQVZFICkKPiBAQCAt OTE4LDExICs5MTgsMTEgQEAgdm9pZCBndWVzdF9jcHVpZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwg dWludDMyX3QgbGVhZiwKPiAgICAgIGNhc2UgMHg4MDAwMDAwMToKPiAgICAgICAgICAvKiBTWVND QUxMIGlzIGhpZGRlbiBvdXRzaWRlIG9mIGxvbmcgbW9kZSBvbiBJbnRlbC4gKi8KPiAgICAgICAg ICBpZiAoIHAtPng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCAmJgo+IC0gICAgICAgICAg ICAgaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICYmICFodm1fbG9uZ19tb2RlX2VuYWJsZWQo dikgKQo+ICsgICAgICAgICAgICAgaXNfaHZtX2RvbWFpbihkKSAmJiAhaHZtX2xvbmdfbW9kZV9l bmFibGVkKHYpICkKPiAgICAgICAgICAgICAgcmVzLT5kICY9IH5jcHVmZWF0X21hc2soWDg2X0ZF QVRVUkVfU1lTQ0FMTCk7Cj4gIAo+ICAgICAgY29tbW9uX2xlYWYxX2FkanVzdG1lbnRzOgo+IC0g ICAgICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAgICAgICBpZiAo IGlzX2h2bV9kb21haW4oZCkgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgLyogRmFzdC1m b3J3YXJkIE1TUl9BUElDX0JBU0UuRU4uICovCj4gICAgICAgICAgICAgIGlmICggdmxhcGljX2h3 X2Rpc2FibGVkKHZjcHVfdmxhcGljKHYpKSApCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9k ZWJ1Zy5jIGIveGVuL2FyY2gveDg2L2RlYnVnLmMKPiBpbmRleCA0OTk1NzRlLi4yMDcwMDc3IDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCj4gKysrIGIveGVuL2FyY2gveDg2L2Rl YnVnLmMKPiBAQCAtMTY4LDcgKzE2OCw3IEBAIHVuc2lnbmVkIGludCBkYmdfcndfZ3Vlc3RfbWVt KHN0cnVjdCBkb21haW4gKmRwLCB2b2lkICogX191c2VyIGdhZGRyLAo+ICAKPiAgICAgICAgICBw YWdlY250ID0gbWluX3QobG9uZywgUEFHRV9TSVpFIC0gKGFkZHIgJiB+UEFHRV9NQVNLKSwgbGVu KTsKPiAgCj4gLSAgICAgICAgbWZuID0gKGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkcCkKPiAr ICAgICAgICBtZm4gPSAoaXNfaHZtX2RvbWFpbihkcCkKPiAgICAgICAgICAgICAgICAgPyBkYmdf aHZtX3ZhMm1mbihhZGRyLCBkcCwgdG9hZGRyLCAmZ2ZuKQo+ICAgICAgICAgICAgICAgICA6IGRi Z19wdl92YTJtZm4oYWRkciwgZHAsIHBnZDMpKTsKPiAgICAgICAgICBpZiAoIG1mbl9lcShtZm4s IElOVkFMSURfTUZOKSApCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hl bi9hcmNoL3g4Ni9kb21haW4uYwo+IGluZGV4IDg0YTI4OWQuLjkwZTJiMWYgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4g QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIGR1bXBfcGFnZWZyYW1lX2luZm8oc3RydWN0IGRvbWFp biAqZCkKPiAgICAgICAgICBzcGluX3VubG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPiAgICAg IH0KPiAgCj4gLSAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCj4gKyAgICBp ZiAoIGlzX2h2bV9kb21haW4oZCkgKQo+ICAgICAgICAgIHAybV9wb2RfZHVtcF9kYXRhKGQpOwo+ ICAKPiAgICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPiBAQCAtNDEyLDcgKzQx Miw3IEBAIGludCB2Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCj4gIAo+ICAgICAgc3Bp bl9sb2NrX2luaXQoJnYtPmFyY2gudnBtdS52cG11X2xvY2spOwo+ICAKPiAtICAgIGlmICggaGFz X2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSAp Cj4gICAgICB7Cj4gICAgICAgICAgcmMgPSBodm1fdmNwdV9pbml0aWFsaXNlKHYpOwo+ICAgICAg ICAgIGdvdG8gZG9uZTsKPiBAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgdmNwdV9kZXN0cm95KHN0 cnVjdCB2Y3B1ICp2KQo+ICAgICAgaWYgKCAhaXNfaWRsZV9kb21haW4odi0+ZG9tYWluKSApCj4g ICAgICAgICAgdnBtdV9kZXN0cm95KHYpOwo+ICAKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWlu ZXJfdmNwdSh2KSApCj4gKyAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKPiAgICAgICAgICBodm1f dmNwdV9kZXN0cm95KHYpOwo+ICAgICAgZWxzZQo+ICAgICAgICAgIHhmcmVlKHYtPmFyY2gucHZf dmNwdS50cmFwX2N0eHQpOwo+IEBAIC01NzUsNyArNTc1LDcgQEAgaW50IGFyY2hfZG9tYWluX2Ny ZWF0ZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCj4gICAgICAg ICAgZC0+YXJjaC5lbXVsYXRpb25fZmxhZ3MgPSBlbWZsYWdzOwo+ICAgICAgfQo+ICAKPiAtICAg IGlmICggaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAgIGlmICggaXNfaHZtX2Rv bWFpbihkKSApCj4gICAgICB7Cj4gICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLmhhcF9lbmFi bGVkID0KPiAgICAgICAgICAgICAgaHZtX2Z1bmNzLmhhcF9zdXBwb3J0ZWQgJiYgKGRvbWNyX2Zs YWdzICYgRE9NQ1JGX2hhcCk7Cj4gQEAgLTY0OSw3ICs2NDksNyBAQCBpbnQgYXJjaF9kb21haW5f Y3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywKPiAgICAg IGlmICggKHJjID0gcHNyX2RvbWFpbl9pbml0KGQpKSAhPSAwICkKPiAgICAgICAgICBnb3RvIGZh aWw7Cj4gIAo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICsgICAg aWYgKCBpc19odm1fZG9tYWluKGQpICkKPiAgICAgIHsKPiAgICAgICAgICBpZiAoIChyYyA9IGh2 bV9kb21haW5faW5pdGlhbGlzZShkKSkgIT0gMCApCj4gICAgICAgICAgICAgIGdvdG8gZmFpbDsK PiBAQCAtNzA4LDcgKzcwOCw3IEBAIGludCBhcmNoX2RvbWFpbl9jcmVhdGUoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgaW50IGRvbWNyX2ZsYWdzLAo+ICAKPiAgdm9pZCBhcmNoX2RvbWFpbl9k ZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWlu ZXJfZG9tYWluKGQpICkKPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICAgICAg aHZtX2RvbWFpbl9kZXN0cm95KGQpOwo+ICAKPiAgICAgIHhmcmVlKGQtPmFyY2guZTgyMCk7Cj4g QEAgLTc2MCw4ICs3NjAsOCBAQCBpbnQgYXJjaF9kb21haW5fc29mdF9yZXNldChzdHJ1Y3QgZG9t YWluICpkKQo+ICAgICAgcDJtX3R5cGVfdCBwMm10Owo+ICAgICAgdW5zaWduZWQgaW50IGk7Cj4g IAo+IC0gICAgLyogU29mdCByZXNldCBpcyBzdXBwb3J0ZWQgZm9yIEhWTS9QVkggZG9tYWlucyBv bmx5LiAqLwo+IC0gICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAg IC8qIFNvZnQgcmVzZXQgaXMgc3VwcG9ydGVkIGZvciBIVk0gZG9tYWlucyBvbmx5LiAqLwo+ICsg ICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g IAo+ICAgICAgaHZtX2RvbWFpbl9zb2Z0X3Jlc2V0KGQpOwo+IEBAIC05NTEsNyArOTUxLDcgQEAg aW50IGFyY2hfc2V0X2luZm9fZ3Vlc3QoCj4gICAgICB2LT5mcHVfaW5pdGlhbGlzZWQgPSAhIShm bGFncyAmIFZHQ0ZfSTM4N19WQUxJRCk7Cj4gIAo+ICAgICAgdi0+YXJjaC5mbGFncyAmPSB+VEZf a2VybmVsX21vZGU7Cj4gLSAgICBpZiAoIChmbGFncyAmIFZHQ0ZfaW5fa2VybmVsKSB8fCBoYXNf aHZtX2NvbnRhaW5lcl9kb21haW4oZCkvKj8/PyovICkKPiArICAgIGlmICggKGZsYWdzICYgVkdD Rl9pbl9rZXJuZWwpIHx8IGlzX2h2bV9kb21haW4oZCkvKj8/PyovICkKPiAgICAgICAgICB2LT5h cmNoLmZsYWdzIHw9IFRGX2tlcm5lbF9tb2RlOwo+ICAKPiAgICAgIHYtPmFyY2gudmdjX2ZsYWdz ID0gZmxhZ3M7Cj4gQEAgLTk5Niw3ICs5OTYsNyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgK PiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl9k b21haW4oZCkgKQo+ICsgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKPiAgICAgIHsKPiAgICAg ICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodi0+YXJjaC5kZWJ1Z3JlZyk7ICsraSAp Cj4gICAgICAgICAgICAgIHYtPmFyY2guZGVidWdyZWdbaV0gPSBjKGRlYnVncmVnW2ldKTsKPiBA QCAtMjAyMSw3ICsyMDIxLDcgQEAgc3RhdGljIHZvaWQgX19jb250ZXh0X3N3aXRjaCh2b2lkKQo+ ICAgICAgICAgICAgICBpZiAoIHhjcjAgIT0gZ2V0X3hjcjAoKSAmJiAhc2V0X3hjcjAoeGNyMCkg KQo+ICAgICAgICAgICAgICAgICAgQlVHKCk7Cj4gIAo+IC0gICAgICAgICAgICBpZiAoIGNwdV9o YXNfeHNhdmVzICYmIGhhc19odm1fY29udGFpbmVyX3ZjcHUobikgKQo+ICsgICAgICAgICAgICBp ZiAoIGNwdV9oYXNfeHNhdmVzICYmIGlzX2h2bV92Y3B1KG4pICkKPiAgICAgICAgICAgICAgICAg IHNldF9tc3JfeHNzKG4tPmFyY2guaHZtX3ZjcHUubXNyX3hzcyk7Cj4gICAgICAgICAgfQo+ICAg ICAgICAgIHZjcHVfcmVzdG9yZV9mcHVfZWFnZXIobik7Cj4gQEAgLTIxMTEsNyArMjExMSw3IEBA IHZvaWQgY29udGV4dF9zd2l0Y2goc3RydWN0IHZjcHUgKnByZXYsIHN0cnVjdCB2Y3B1ICpuZXh0 KQo+ICAKPiAgICAgICAgICBpZiAoIGlzX3B2X2RvbWFpbihuZXh0ZCkgJiYKPiAgICAgICAgICAg ICAgIChpc19pZGxlX2RvbWFpbihwcmV2ZCkgfHwKPiAtICAgICAgICAgICAgICBoYXNfaHZtX2Nv bnRhaW5lcl9kb21haW4ocHJldmQpIHx8Cj4gKyAgICAgICAgICAgICAgaXNfaHZtX2RvbWFpbihw cmV2ZCkgfHwKPiAgICAgICAgICAgICAgICBpc19wdl8zMmJpdF9kb21haW4ocHJldmQpICE9IGlz X3B2XzMyYml0X2RvbWFpbihuZXh0ZCkpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHVp bnQ2NF90IGVmZXIgPSByZWFkX2VmZXIoKTsKPiBAQCAtMjQxMyw3ICsyNDEzLDcgQEAgaW50IGRv bWFpbl9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQo+ICAKPiAgICAgIHBp dF9kZWluaXQoZCk7Cj4gIAo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkg KQo+ICsgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKPiAgICAgICAgICBodm1fZG9tYWluX3Jl bGlucXVpc2hfcmVzb3VyY2VzKGQpOwo+ICAKPiAgICAgIHJldHVybiAwOwo+IEBAIC0yNDU2LDcg KzI0NTYsNyBAQCB2b2lkIHZjcHVfbWFya19ldmVudHNfcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdikK PiAgICAgIGlmICggYWxyZWFkeV9wZW5kaW5nICkKPiAgICAgICAgICByZXR1cm47Cj4gIAo+IC0g ICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICkKPiArICAgIGlmICggaXNfaHZtX3Zj cHUodikgKQo+ICAgICAgICAgIGh2bV9hc3NlcnRfZXZ0Y2huX2lycSh2KTsKPiAgICAgIGVsc2UK PiAgICAgICAgICB2Y3B1X2tpY2sodik7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21h aW5fYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwo+IGluZGV4IDg2MDU1ZDEu LmEwZDllZTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jCj4gKysr IGIveGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jCj4gQEAgLTM2MCw5ICszNjAsOCBAQCBzdGF0 aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgY29tcHV0ZV9kb20wX25yX3BhZ2VzKAo+ICAgICAgICAg ICAgICBhdmFpbCAtPSBtYXhfcGR4ID4+IHM7Cj4gICAgICB9Cj4gIAo+IC0gICAgbmVlZF9wYWdp bmcgPSBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkKPiAtICAgICAgICAgICAgICAgICAgPyAh aW9tbXVfaGFwX3B0X3NoYXJlIHx8ICFwYWdpbmdfbW9kZV9oYXAoZCkKPiAtICAgICAgICAgICAg ICAgICAgOiBvcHRfZG9tMF9zaGFkb3c7Cj4gKyAgICBuZWVkX3BhZ2luZyA9IGlzX2h2bV9kb21h aW4oZCkgPyAhaW9tbXVfaGFwX3B0X3NoYXJlIHx8ICFwYWdpbmdfbW9kZV9oYXAoZCkKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG9wdF9kb20wX3NoYWRvdzsKPiAgICAg IGZvciAoIDsgOyBuZWVkX3BhZ2luZyA9IDAgKQo+ICAgICAgewo+ICAgICAgICAgIG5yX3BhZ2Vz ID0gZG9tMF9ucnBhZ2VzOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94 ZW4vYXJjaC94ODYvZG9tY3RsLmMKPiBpbmRleCA5NDRhZjM5Li5kZmUzZDEwIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwo+ IEBAIC0xNTM4LDcgKzE1MzgsNyBAQCB2b2lkIGFyY2hfZ2V0X2luZm9fZ3Vlc3Qoc3RydWN0IHZj cHUgKnYsIHZjcHVfZ3Vlc3RfY29udGV4dF91IGMpCj4gICAgICBmb3IgKCBpID0gMDsgaSA8IEFS UkFZX1NJWkUodi0+YXJjaC5kZWJ1Z3JlZyk7ICsraSApCj4gICAgICAgICAgYyhkZWJ1Z3JlZ1tp XSA9IHYtPmFyY2guZGVidWdyZWdbaV0pOwo+ICAKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWlu ZXJfZG9tYWluKGQpICkKPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICB7Cj4g ICAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0ZXIgc3JlZzsKPiAgCj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYwo+IGluZGV4IDIx MjJjNDUuLjMzM2M4ODQgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gKysr IGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4gQEAgLTI4Myw3ICsyODMsNyBAQCBzdGF0aWMgaW50 IGRtX29wKGRvbWlkX3QgZG9taWQsCj4gICAgICBpZiAoIHJjICkKPiAgICAgICAgICByZXR1cm4g cmM7Cj4gIAo+IC0gICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICkKPiArICAg IGlmICggIWlzX2h2bV9kb21haW4oZCkgKQo+ICAgICAgICAgIGdvdG8gb3V0Owo+ICAKPiAgICAg IHJjID0geHNtX2RtX29wKFhTTV9ETV9QUklWLCBkKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiBpbmRleCBjMWUyY2Q0Li42 ZmU2ZGIwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiArKysgYi94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCj4gQEAgLTMwNTIsNyArMzA1Miw3IEBAIHN0YXRpYyBlbnVtIGh2 bV9jb3B5X3Jlc3VsdCBfX2h2bV9jb3B5KAo+ICAgICAgY2hhciAqcDsKPiAgICAgIGludCBjb3Vu dCwgdG9kbyA9IHNpemU7Cj4gIAo+IC0gICAgQVNTRVJUKGhhc19odm1fY29udGFpbmVyX3ZjcHUo dikpOwo+ICsgICAgQVNTRVJUKGlzX2h2bV92Y3B1KHYpKTsKPiAgCj4gICAgICAvKgo+ICAgICAg ICogWFhYIERpc2FibGUgZm9yIDQuMS4wOiBQVi1vbi1IVk0gZHJpdmVycyB3aWxsIGRvIGdyYW50 LXRhYmxlIG9wcwo+IEBAIC0zOTkzLDcgKzM5OTMsNyBAQCBzdGF0aWMgaW50IGh2bW9wX3NldF9w YXJhbSgKPiAgICAgICAgICByZXR1cm4gLUVTUkNIOwo+ICAKPiAgICAgIHJjID0gLUVJTlZBTDsK PiAtICAgIGlmICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCj4gKyAgICBpZiAoICFp c19odm1fZG9tYWluKGQpICkKPiAgICAgICAgICBnb3RvIG91dDsKPiAgCj4gICAgICByYyA9IGh2 bV9hbGxvd19zZXRfcGFyYW0oZCwgJmEpOwo+IEBAIC00MjQ4LDcgKzQyNDgsNyBAQCBzdGF0aWMg aW50IGh2bW9wX2dldF9wYXJhbSgKPiAgICAgICAgICByZXR1cm4gLUVTUkNIOwo+ICAKPiAgICAg IHJjID0gLUVJTlZBTDsKPiAtICAgIGlmICggIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAp Cj4gKyAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKPiAgICAgICAgICBnb3RvIG91dDsKPiAg Cj4gICAgICByYyA9IGh2bV9hbGxvd19nZXRfcGFyYW0oZCwgJmEpOwo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2lycS5jIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYwo+IGluZGV4IDc2 MDU0NGIuLmE3NzRlZDcgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKPiBAQCAtNDgwLDcgKzQ4MCw3IEBAIGludCBodm1f bG9jYWxfZXZlbnRzX25lZWRfZGVsaXZlcnkoc3RydWN0IHZjcHUgKnYpCj4gIAo+ICB2b2lkIGFy Y2hfZXZ0Y2huX2luamVjdChzdHJ1Y3QgdmNwdSAqdikKPiAgewo+IC0gICAgaWYgKCBoYXNfaHZt X2NvbnRhaW5lcl92Y3B1KHYpICkKPiArICAgIGlmICggaXNfaHZtX3ZjcHUodikgKQo+ICAgICAg ICAgIGh2bV9hc3NlcnRfZXZ0Y2huX2lycSh2KTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS9tdHJyLmMgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwo+IGluZGV4IGM1 YzI3Y2IuLmI3MjFjNjMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9tdHJyLmMKPiAr KysgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwo+IEBAIC01NDAsNyArNTQwLDcgQEAgaW50IGh2 bV9nZXRfbWVtX3Bpbm5lZF9jYWNoZWF0dHIoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ ICAgICAgdWludDY0X3QgbWFzayA9IH4odWludDY0X3QpMCA8PCBvcmRlcjsKPiAgICAgIGludCBy YyA9IC1FTlhJTzsKPiAgCj4gLSAgICBBU1NFUlQoaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQp KTsKPiArICAgIEFTU0VSVChpc19odm1fZG9tYWluKGQpKTsKPiAgCj4gICAgICByY3VfcmVhZF9s b2NrKCZwaW5uZWRfY2FjaGVhdHRyX3JjdV9sb2NrKTsKPiAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnlfcmN1ICggcmFuZ2UsCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jIGIv eGVuL2FyY2gveDg2L2h2bS92bXNpLmMKPiBpbmRleCAyNWY1NzU2Li5hMzY2OTJjIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92 bXNpLmMKPiBAQCAtNTYwLDggKzU2MCw3IEBAIHZvaWQgbXNpeHRibF9pbml0KHN0cnVjdCBkb21h aW4gKmQpCj4gIHsKPiAgICAgIHN0cnVjdCBodm1faW9faGFuZGxlciAqaGFuZGxlcjsKPiAgCj4g LSAgICBpZiAoICFoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgfHwgIWhhc192bGFwaWMoZCkg fHwKPiAtICAgICAgICAgbXNpeHRibF9pbml0aWFsaXNlZChkKSApCj4gKyAgICBpZiAoICFpc19o dm1fZG9tYWluKGQpIHx8ICFoYXNfdmxhcGljKGQpIHx8IG1zaXh0YmxfaW5pdGlhbGlzZWQoZCkg KQo+ICAgICAgICAgIHJldHVybjsKPiAgCj4gICAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJjaC5o dm1fZG9tYWluLm1zaXh0YmxfbGlzdCk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dm14L3ZtY3MuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwo+IGluZGV4IDk3OTE3NTYu LjkzNDY3NGMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCj4gKysr IGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCj4gQEAgLTc2OCw3ICs3NjgsNyBAQCB2b2lk IHZteF92bWNzX2V4aXQoc3RydWN0IHZjcHUgKnYpCj4gICAgICB7Cj4gICAgICAgICAgLyogRG9u J3QgY29uZnVzZSB2bXhfZG9fcmVzdW1lIChmb3IgQHYgb3IgQGN1cnJlbnQhKSAqLwo+ICAgICAg ICAgIHZteF9jbGVhcl92bWNzKHYpOwo+IC0gICAgICAgIGlmICggaGFzX2h2bV9jb250YWluZXJf dmNwdShjdXJyZW50KSApCj4gKyAgICAgICAgaWYgKCBpc19odm1fdmNwdShjdXJyZW50KSApCj4g ICAgICAgICAgICAgIHZteF9sb2FkX3ZtY3MoY3VycmVudCk7Cj4gIAo+ICAgICAgICAgIHNwaW5f dW5sb2NrKCZ2LT5hcmNoLmh2bV92bXgudm1jc19sb2NrKTsKPiBAQCAtMTkyNyw3ICsxOTI3LDcg QEAgc3RhdGljIHZvaWQgdm1jc19kdW1wKHVuc2lnbmVkIGNoYXIgY2gpCj4gIAo+ICAgICAgZm9y X2VhY2hfZG9tYWluICggZCApCj4gICAgICB7Cj4gLSAgICAgICAgaWYgKCAhaGFzX2h2bV9jb250 YWluZXJfZG9tYWluKGQpICkKPiArICAgICAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKPiAg ICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAgICAgcHJpbnRrKCJcbj4+PiBEb21haW4gJWQg PDw8XG4iLCBkLT5kb21haW5faWQpOwo+ICAgICAgICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYv aHZtL3ZteC92bXguYwo+IGluZGV4IDU5ZGY5NDguLmVlMDhkZTAgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L2h2bS92bXgvdm14LmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXgu Ywo+IEBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCB2bXhfcGlfaG9va3NfYXNzaWduKHN0cnVjdCBk b21haW4gKmQpCj4gIHsKPiAgICAgIHN0cnVjdCB2Y3B1ICp2Owo+ICAKPiAtICAgIGlmICggIWlv bW11X2ludHBvc3QgfHwgIWhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCj4gKyAgICBpZiAo ICFpb21tdV9pbnRwb3N0IHx8ICFpc19odm1fZG9tYWluKGQpICkKPiAgICAgICAgICByZXR1cm47 Cj4gIAo+ICAgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4ucGlfb3BzLnZjcHVfYmxvY2sp Owo+IEBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCB2bXhfcGlfaG9va3NfYXNzaWduKHN0cnVjdCBk b21haW4gKmQpCj4gIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gcGNpZGV2c19sb2Nr IGlzIGhlbGQgKi8KPiAgdm9pZCB2bXhfcGlfaG9va3NfZGVhc3NpZ24oc3RydWN0IGRvbWFpbiAq ZCkKPiAgewo+IC0gICAgaWYgKCAhaW9tbXVfaW50cG9zdCB8fCAhaGFzX2h2bV9jb250YWluZXJf ZG9tYWluKGQpICkKPiArICAgIGlmICggIWlvbW11X2ludHBvc3QgfHwgIWlzX2h2bV9kb21haW4o ZCkgKQo+ICAgICAgICAgIHJldHVybjsKPiAgCj4gICAgICBBU1NFUlQoZC0+YXJjaC5odm1fZG9t YWluLnBpX29wcy52Y3B1X2Jsb2NrKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMg Yi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IDEyZGFiY2YuLjkyZDBmN2YgMTAwNjQ0Cj4gLS0t IGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBAIC00Mzgs NyArNDM4LDcgQEAgaW50IHBhZ2VfaXNfcmFtX3R5cGUodW5zaWduZWQgbG9uZyBtZm4sIHVuc2ln bmVkIGxvbmcgbWVtX3R5cGUpCj4gIAo+ICB1bnNpZ25lZCBsb25nIGRvbWFpbl9nZXRfbWF4aW11 bV9ncGZuKHN0cnVjdCBkb21haW4gKmQpCj4gIHsKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWlu ZXJfZG9tYWluKGQpICkKPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICAgICAg cmV0dXJuIHAybV9nZXRfaG9zdHAybShkKS0+bWF4X21hcHBlZF9wZm47Cj4gICAgICAvKiBOQi4g UFYgZ3Vlc3RzIHNwZWNpZnkgbnJfcGZucyByYXRoZXIgdGhhbiBtYXhfcGZuIHNvIHdlIGFkanVz dCBoZXJlLiAqLwo+ICAgICAgcmV0dXJuIChhcmNoX2dldF9tYXhfcGZuKGQpID86IDEpIC0gMTsK PiBAQCAtMzE4NCw3ICszMTg0LDcgQEAgbG9uZyBkb19tbXVleHRfb3AoCj4gICAgICAgICAgICAg IGJyZWFrOwo+ICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5l cl9kb21haW4oZCkgKQo+ICsgICAgICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICAg ICAgewo+ICAgICAgICAgICAgICBzd2l0Y2ggKCBvcC5jbWQgKQo+ICAgICAgICAgICAgICB7Cj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyBiL3hlbi9hcmNoL3g4Ni9tbS9w YWdpbmcuYwo+IGluZGV4IDYzMjc2MzEuLjc1ZjVmYzAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L21tL3BhZ2luZy5jCj4gKysrIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gQEAgLTQy MCw3ICs0MjAsNyBAQCBzdGF0aWMgaW50IHBhZ2luZ19sb2dfZGlydHlfb3Aoc3RydWN0IGRvbWFp biAqZCwKPiAgICAgICAgICAgKiBNYXJrIGRpcnR5IGFsbCBjdXJyZW50bHkgd3JpdGUtbWFwcGVk IHBhZ2VzIG9uIGUuZy4gdGhlCj4gICAgICAgICAgICogZmluYWwgaXRlcmF0aW9uIG9mIGEgc2F2 ZSBvcGVyYXRpb24uCj4gICAgICAgICAgICovCj4gLSAgICAgICAgaWYgKCBoYXNfaHZtX2NvbnRh aW5lcl9kb21haW4oZCkgJiYKPiArICAgICAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgJiYKPiAg ICAgICAgICAgICAgIChzYy0+bW9kZSAmIFhFTl9ET01DVExfU0hBRE9XX0xPR0RJUlRZX0ZJTkFM KSApCj4gICAgICAgICAgICAgIGh2bV9tYXBwZWRfZ3Vlc3RfZnJhbWVzX21hcmtfZGlydHkoZCk7 Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIveGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+IGluZGV4IGQwNzhkNzguLmQ5M2YyYWIgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBAQCAtMzE5LDcgKzMxOSw3IEBAIGNvbnN0IHN0 cnVjdCB4ODZfZW11bGF0ZV9vcHMgKnNoYWRvd19pbml0X2VtdWxhdGlvbigKPiAgICAgIHN0cnVj dCB2Y3B1ICp2ID0gY3VycmVudDsKPiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKPiAgCj4gLSAg ICBBU1NFUlQoaGFzX2h2bV9jb250YWluZXJfdmNwdSh2KSk7Cj4gKyAgICBBU1NFUlQoaXNfaHZt X3ZjcHUodikpOwo+ICAKPiAgICAgIG1lbXNldChzaF9jdHh0LCAwLCBzaXplb2YoKnNoX2N0eHQp KTsKPiAgCj4gQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIHNoYWRvd19jb250aW51ZV9lbXVsYXRp b24oc3RydWN0IHNoX2VtdWxhdGVfY3R4dCAqc2hfY3R4dCwKPiAgICAgIHN0cnVjdCB2Y3B1ICp2 ID0gY3VycmVudDsKPiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgZGlmZjsKPiAgCj4gLSAgICBB U1NFUlQoaGFzX2h2bV9jb250YWluZXJfdmNwdSh2KSk7Cj4gKyAgICBBU1NFUlQoaXNfaHZtX3Zj cHUodikpOwo+ICAKPiAgICAgIC8qCj4gICAgICAgKiBXZSBkb24ndCByZWZldGNoIHRoZSBzZWdt ZW50IGJhc2VzLCBiZWNhdXNlIHdlIGRvbid0IGVtdWxhdGUKPiBAQCAtMTcwMCw5ICsxNzAwLDgg QEAgdm9pZCAqc2hfZW11bGF0ZV9tYXBfZGVzdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9u ZyB2YWRkciwKPiAgCj4gICNpZm5kZWYgTkRFQlVHCj4gICAgICAvKiBXZSBkb24ndCBlbXVsYXRl IHVzZXItbW9kZSB3cml0ZXMgdG8gcGFnZSB0YWJsZXMuICovCj4gLSAgICBpZiAoIGhhc19odm1f Y29udGFpbmVyX2RvbWFpbihkKQo+IC0gICAgICAgICA/IGh2bV9nZXRfY3BsKHYpID09IDMKPiAt ICAgICAgICAgOiAhZ3Vlc3Rfa2VybmVsX21vZGUodiwgZ3Vlc3RfY3B1X3VzZXJfcmVncygpKSAp Cj4gKyAgICBpZiAoIGlzX2h2bV9kb21haW4oZCkgPyBodm1fZ2V0X2NwbCh2KSA9PSAzCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAhZ3Vlc3Rfa2VybmVsX21vZGUodiwgZ3Vlc3RfY3B1 X3VzZXJfcmVncygpKSApCj4gICAgICB7Cj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0RFQlVH LCAiVXNlci1tb2RlIHdyaXRlIHRvIHBhZ2V0YWJsZSByZWFjaGVkICIKPiAgICAgICAgICAgICAg ICAgICAiZW11bGF0ZV9tYXBfZGVzdCgpLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4hXG4iKTsK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAu Ywo+IGluZGV4IDRhODA3YjguLjI0YmExMDMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3Nl dHVwLmMKPiArKysgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwo+IEBAIC0xNzIzLDcgKzE3MjMsNyBA QCB2b2lkIF9faHdkb21faW5pdCBzZXR1cF9pb19iaXRtYXAoc3RydWN0IGRvbWFpbiAqZCkKPiAg ewo+ICAgICAgaW50IHJjOwo+ICAKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfZG9tYWlu KGQpICkKPiArICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSApCj4gICAgICB7Cj4gICAgICAgICAg Yml0bWFwX2ZpbGwoZC0+YXJjaC5odm1fZG9tYWluLmlvX2JpdG1hcCwgMHgxMDAwMCk7Cj4gICAg ICAgICAgcmMgPSByYW5nZXNldF9yZXBvcnRfcmFuZ2VzKGQtPmFyY2guaW9wb3J0X2NhcHMsIDAs IDB4MTAwMDAsCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90aW1lLmMgYi94ZW4vYXJjaC94 ODYvdGltZS5jCj4gaW5kZXggZmU2ODNiZC4uYjQ5ODhiZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJj aC94ODYvdGltZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L3RpbWUuYwo+IEBAIC05NDAsNyArOTQw LDcgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfdmNwdV9zeXN0ZW1fdGltZShzdHJ1Y3QgdmNwdSAq diwgaW50IGZvcmNlKQo+ICAgICAgfQo+ICAgICAgZWxzZQo+ICAgICAgewo+IC0gICAgICAgIGlm ICggaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpICYmIGh2bV90c2Nfc2NhbGluZ19zdXBwb3J0 ZWQgKQo+ICsgICAgICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSAmJiBodm1fdHNjX3NjYWxpbmdf c3VwcG9ydGVkICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHRzY19zdGFtcCAgICAgICAg ICAgID0gaHZtX3NjYWxlX3RzYyhkLCB0LT5zdGFtcC5sb2NhbF90c2MpOwo+ICAgICAgICAgICAg ICBfdS50c2NfdG9fc3lzdGVtX211bCA9IGQtPmFyY2gudnRzY190b19ucy5tdWxfZnJhYzsKPiBA QCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCB0c2NfZ2V0X2luZm8oc3RydWN0IGRvbWFpbiAqZCwg dWludDMyX3QgKnRzY19tb2RlLAo+ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZWxhcHNl ZF9uc2VjLCB1aW50MzJfdCAqZ3RzY19raHosCj4gICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 ICppbmNhcm5hdGlvbikKPiAgewo+IC0gICAgYm9vbF90IGVuYWJsZV90c2Nfc2NhbGluZyA9IGhh c19odm1fY29udGFpbmVyX2RvbWFpbihkKSAmJgo+ICsgICAgYm9vbF90IGVuYWJsZV90c2Nfc2Nh bGluZyA9IGlzX2h2bV9kb21haW4oZCkgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBodm1fdHNjX3NjYWxpbmdfc3VwcG9ydGVkICYmICFkLT5hcmNoLnZ0c2M7Cj4gIAo+ICAg ICAgKmluY2FybmF0aW9uID0gZC0+YXJjaC5pbmNhcm5hdGlvbjsKPiBAQCAtMjAzMSw3ICsyMDMx LDcgQEAgdm9pZCB0c2Nfc2V0X2luZm8oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICAgKiAg UFY6IGd1ZXN0IGhhcyBub3QgbWlncmF0ZWQgeWV0IChhbmQgdGh1cyBhcmNoLnRzY19raHogPT0g Y3B1X2toeikKPiAgICAgICAgICAgKi8KPiAgICAgICAgICBpZiAoIHRzY19tb2RlID09IFRTQ19N T0RFX0RFRkFVTFQgJiYgaG9zdF90c2NfaXNfc2FmZSgpICYmCj4gLSAgICAgICAgICAgICAoaGFz X2h2bV9jb250YWluZXJfZG9tYWluKGQpID8KPiArICAgICAgICAgICAgIChpc19odm1fZG9tYWlu KGQpID8KPiAgICAgICAgICAgICAgICAoZC0+YXJjaC50c2Nfa2h6ID09IGNwdV9raHogfHwKPiAg ICAgICAgICAgICAgICAgaHZtX2dldF90c2Nfc2NhbGluZ19yYXRpbyhkLT5hcmNoLnRzY19raHop KSA6Cj4gICAgICAgICAgICAgICAgaW5jYXJuYXRpb24gPT0gMCkgKQo+IEBAIC0yMDQ2LDggKzIw NDYsNyBAQCB2b2lkIHRzY19zZXRfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgY2FzZSBU U0NfTU9ERV9QVlJEVFNDUDoKPiAgICAgICAgICBkLT5hcmNoLnZ0c2MgPSAhYm9vdF9jcHVfaGFz KFg4Nl9GRUFUVVJFX1JEVFNDUCkgfHwKPiAgICAgICAgICAgICAgICAgICAgICAgICAhaG9zdF90 c2NfaXNfc2FmZSgpOwo+IC0gICAgICAgIGVuYWJsZV90c2Nfc2NhbGluZyA9IGhhc19odm1fY29u dGFpbmVyX2RvbWFpbihkKSAmJgo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICFkLT5h cmNoLnZ0c2MgJiYKPiArICAgICAgICBlbmFibGVfdHNjX3NjYWxpbmcgPSBpc19odm1fZG9tYWlu KGQpICYmICFkLT5hcmNoLnZ0c2MgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dm1fZ2V0X3RzY19zY2FsaW5nX3JhdGlvKGd0c2Nfa2h6ID86IGNwdV9raHopOwo+ICAgICAgICAg IGQtPmFyY2gudHNjX2toeiA9IChlbmFibGVfdHNjX3NjYWxpbmcgJiYgZ3RzY19raHopID8gZ3Rz Y19raHogOiBjcHVfa2h6Owo+ICAgICAgICAgIHNldF90aW1lX3NjYWxlKCZkLT5hcmNoLnZ0c2Nf dG9fbnMsIGQtPmFyY2gudHNjX2toeiAqIDEwMDAgKTsKPiBAQCAtMjA2NCw3ICsyMDYzLDcgQEAg dm9pZCB0c2Nfc2V0X2luZm8oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAgICAgICBicmVhazsKPiAg ICAgIH0KPiAgICAgIGQtPmFyY2guaW5jYXJuYXRpb24gPSBpbmNhcm5hdGlvbiArIDE7Cj4gLSAg ICBpZiAoIGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSApCj4gKyAgICBpZiAoIGlzX2h2bV9k b21haW4oZCkgKQo+ICAgICAgewo+ICAgICAgICAgIGlmICggaHZtX3RzY19zY2FsaW5nX3N1cHBv cnRlZCAmJiAhZC0+YXJjaC52dHNjICkKPiAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWlu LnRzY19zY2FsaW5nX3JhdGlvID0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMg Yi94ZW4vYXJjaC94ODYvdHJhcHMuYwo+IGluZGV4IDEzYTYwOWIuLjBiZjUwNjEgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKPiArKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwo+ IEBAIC03OTksNyArNzk5LDcgQEAgdm9pZCBkb190cmFwKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQo+ICAgICAgfQo+ICAKPiAgICAgIGlmICggKCh0cmFwbnIgPT0gVFJBUF9jb3Byb19lcnJv cikgfHwgKHRyYXBuciA9PSBUUkFQX3NpbWRfZXJyb3IpKSAmJgo+IC0gICAgICAgICBzeXN0ZW1f c3RhdGUgPj0gU1lTX1NUQVRFX2FjdGl2ZSAmJiBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KGN1cnIp ICYmCj4gKyAgICAgICAgIHN5c3RlbV9zdGF0ZSA+PSBTWVNfU1RBVEVfYWN0aXZlICYmIGlzX2h2 bV92Y3B1KGN1cnIpICYmCj4gICAgICAgICAgIGN1cnItPmFyY2guaHZtX3ZjcHUuZnB1X2V4Y2Vw dGlvbl9jYWxsYmFjayApCj4gICAgICB7Cj4gICAgICAgICAgY3Vyci0+YXJjaC5odm1fdmNwdS5m cHVfZXhjZXB0aW9uX2NhbGxiYWNrKAo+IEBAIC05NzYsNyArOTc2LDcgQEAgdm9pZCBjcHVpZF9o eXBlcnZpc29yX2xlYXZlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbGVhZiwKPiAg ICAgICAgICBicmVhazsKPiAgCj4gICAgICBjYXNlIDQ6IC8qIEhWTSBoeXBlcnZpc29yIGxlYWYu ICovCj4gLSAgICAgICAgaWYgKCAhaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGQpIHx8IHN1Ymxl YWYgIT0gMCApCj4gKyAgICAgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSB8fCBzdWJsZWFmICE9 IDAgKQo+ICAgICAgICAgICAgICBicmVhazsKPiAgCj4gICAgICAgICAgaWYgKCBjcHVfaGFzX3Zt eF9hcGljX3JlZ192aXJ0ICkKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC90cmFw cy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCj4gaW5kZXggYjY2YzI0Yi4uYWQ0ZDZj MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiArKysgYi94ZW4v YXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiBAQCAtODgsNyArODgsNyBAQCB2b2lkIHNob3dfcmVn aXN0ZXJzKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICAgICAgZW51bSBjb250 ZXh0IGNvbnRleHQ7Cj4gICAgICBzdHJ1Y3QgdmNwdSAqdiA9IHN5c3RlbV9zdGF0ZSA+PSBTWVNf U1RBVEVfc21wX2Jvb3QgPyBjdXJyZW50IDogTlVMTDsKPiAgCj4gLSAgICBpZiAoIGd1ZXN0X21v ZGUocmVncykgJiYgaGFzX2h2bV9jb250YWluZXJfdmNwdSh2KSApCj4gKyAgICBpZiAoIGd1ZXN0 X21vZGUocmVncykgJiYgaXNfaHZtX3ZjcHUodikgKQo+ICAgICAgewo+ICAgICAgICAgIHN0cnVj dCBzZWdtZW50X3JlZ2lzdGVyIHNyZWc7Cj4gICAgICAgICAgY29udGV4dCA9IENUWFRfaHZtX2d1 ZXN0Owo+IEBAIC02MjMsNyArNjIzLDcgQEAgc3RhdGljIHZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5p dGlhbGlzZV9yaW5nM19rZXJuZWwodm9pZCAqaHlwZXJjYWxsX3BhZ2UpCj4gIHZvaWQgaHlwZXJj YWxsX3BhZ2VfaW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCB2b2lkICpoeXBlcmNhbGxfcGFn ZSkKPiAgewo+ICAgICAgbWVtc2V0KGh5cGVyY2FsbF9wYWdlLCAweENDLCBQQUdFX1NJWkUpOwo+ IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oZCkgKQo+ICsgICAgaWYgKCBpc19o dm1fZG9tYWluKGQpICkKPiAgICAgICAgICBodm1faHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZShk LCBoeXBlcmNhbGxfcGFnZSk7Cj4gICAgICBlbHNlIGlmICggIWlzX3B2XzMyYml0X2RvbWFpbihk KSApCj4gICAgICAgICAgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5nM19rZXJuZWwoaHlw ZXJjYWxsX3BhZ2UpOwo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYv aW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCj4gaW5kZXggNjlj ZDZjNS4uNzUwYzY2MyAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYv aW9tbXUuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jCj4gQEAg LTU1LDcgKzU1LDcgQEAgaW50IGFyY2hfaW9tbXVfcG9wdWxhdGVfcGFnZV90YWJsZShzdHJ1Y3Qg ZG9tYWluICpkKQo+ICAKPiAgICAgIHdoaWxlICggIXJjICYmIChwYWdlID0gcGFnZV9saXN0X3Jl bW92ZV9oZWFkKCZkLT5wYWdlX2xpc3QpKSApCj4gICAgICB7Cj4gLSAgICAgICAgaWYgKCBoYXNf aHZtX2NvbnRhaW5lcl9kb21haW4oZCkgfHwKPiArICAgICAgICBpZiAoIGlzX2h2bV9kb21haW4o ZCkgfHwKPiAgICAgICAgICAgICAgKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYgUEdUX3R5cGVf bWFzaykgPT0gUEdUX3dyaXRhYmxlX3BhZ2UgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKPiBkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgK PiBpbmRleCBkMTgyZDc1Li5lYzE0Y2NlIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvZG9tYWluLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCj4gQEAgLTE2 LDcgKzE2LDcgQEAKPiAgI2RlZmluZSBpc19wdl8zMmJpdF9kb21haW4oZCkgICgoZCktPmFyY2gu aXNfMzJiaXRfcHYpCj4gICNkZWZpbmUgaXNfcHZfMzJiaXRfdmNwdSh2KSAgICAoaXNfcHZfMzJi aXRfZG9tYWluKCh2KS0+ZG9tYWluKSkKPiAgCj4gLSNkZWZpbmUgaXNfaHZtX3B2X2V2dGNobl9k b21haW4oZCkgKGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAmJiBcCj4gKyNkZWZpbmUgaXNf aHZtX3B2X2V2dGNobl9kb21haW4oZCkgKGlzX2h2bV9kb21haW4oZCkgJiYgXAo+ICAgICAgICAg IGQtPmFyY2guaHZtX2RvbWFpbi5pcnEuY2FsbGJhY2tfdmlhX3R5cGUgPT0gSFZNSVJRX2NhbGxi YWNrX3ZlY3RvcikKPiAgI2RlZmluZSBpc19odm1fcHZfZXZ0Y2huX3ZjcHUodikgKGlzX2h2bV9w dl9ldnRjaG5fZG9tYWluKHYtPmRvbWFpbikpCj4gICNkZWZpbmUgaXNfZG9tYWluX2RpcmVjdF9t YXBwZWQoZCkgKCh2b2lkKShkKSwgMCkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9ldmVudC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ldmVudC5oCj4gaW5kZXggZDU4OWQ2Zi4u YTkxNTk5ZCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2V2ZW50LmgKPiArKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2V2ZW50LmgKPiBAQCAtMjYsNyArMjYsNyBAQCBzdGF0aWMg aW5saW5lIGludCBsb2NhbF9ldmVudHNfbmVlZF9kZWxpdmVyeSh2b2lkKQo+ICAKPiAgICAgIEFT U0VSVCghaXNfaWRsZV92Y3B1KHYpKTsKPiAgCj4gLSAgICByZXR1cm4gKGhhc19odm1fY29udGFp bmVyX3ZjcHUodikgPyBodm1fbG9jYWxfZXZlbnRzX25lZWRfZGVsaXZlcnkodikgOgo+ICsgICAg cmV0dXJuIChpc19odm1fdmNwdSh2KSA/IGh2bV9sb2NhbF9ldmVudHNfbmVlZF9kZWxpdmVyeSh2 KSA6Cj4gICAgICAgICAgICAgICh2Y3B1X2luZm8odiwgZXZ0Y2huX3VwY2FsbF9wZW5kaW5nKSAm Jgo+ICAgICAgICAgICAgICAgIXZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX21hc2spKSk7Cj4g IH0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9hY2Nlc3MuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmgKPiBpbmRleCA4OGVkYjNmLi5jYTcwMGM5 IDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmgKPiArKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X2FjY2Vzcy5oCj4gQEAgLTE0LDI3ICsxNCwyNyBA QAo+ICAKPiAgLyogUmF3IGFjY2VzcyBmdW5jdGlvbnM6IG5vIHR5cGUgY2hlY2tpbmcuICovCj4g ICNkZWZpbmUgcmF3X2NvcHlfdG9fZ3Vlc3QoZHN0LCBzcmMsIGxlbikgICAgICAgIFwKPiAtICAg IChoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KGN1cnJlbnQpID8gICAgICAgICAgICAgICAgICAgICBc Cj4gKyAgICAoaXNfaHZtX3ZjcHUoY3VycmVudCkgPyAgICAgICAgICAgICAgICAgICAgIFwKPiAg ICAgICBjb3B5X3RvX3VzZXJfaHZtKChkc3QpLCAoc3JjKSwgKGxlbikpIDogICAgXAo+ICAgICAg IGNvcHlfdG9fdXNlcigoZHN0KSwgKHNyYyksIChsZW4pKSkKPiAgI2RlZmluZSByYXdfY29weV9m cm9tX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgICAgXAo+IC0gICAgKGhhc19odm1fY29udGFpbmVy X3ZjcHUoY3VycmVudCkgPyAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIChpc19odm1fdmNw dShjdXJyZW50KSA/ICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgIGNvcHlfZnJvbV91c2Vy X2h2bSgoZHN0KSwgKHNyYyksIChsZW4pKSA6ICBcCj4gICAgICAgY29weV9mcm9tX3VzZXIoKGRz dCksIChzcmMpLCAobGVuKSkpCj4gICNkZWZpbmUgcmF3X2NsZWFyX2d1ZXN0KGRzdCwgIGxlbikg ICAgICAgICAgICAgIFwKPiAtICAgIChoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KGN1cnJlbnQpID8g ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAoaXNfaHZtX3ZjcHUoY3VycmVudCkgPyAgICAg ICAgICAgICAgICAgICAgIFwKPiAgICAgICBjbGVhcl91c2VyX2h2bSgoZHN0KSwgKGxlbikpIDog ICAgICAgICAgICAgXAo+ICAgICAgIGNsZWFyX3VzZXIoKGRzdCksIChsZW4pKSkKPiAgI2RlZmlu ZSBfX3Jhd19jb3B5X3RvX2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgICAgXAo+IC0gICAgKGhhc19o dm1fY29udGFpbmVyX3ZjcHUoY3VycmVudCkgPyAgICAgICAgICAgICAgICAgICAgIFwKPiArICAg IChpc19odm1fdmNwdShjdXJyZW50KSA/ICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgIGNv cHlfdG9fdXNlcl9odm0oKGRzdCksIChzcmMpLCAobGVuKSkgOiAgICBcCj4gICAgICAgX19jb3B5 X3RvX3VzZXIoKGRzdCksIChzcmMpLCAobGVuKSkpCj4gICNkZWZpbmUgX19yYXdfY29weV9mcm9t X2d1ZXN0KGRzdCwgc3JjLCBsZW4pICAgIFwKPiAtICAgIChoYXNfaHZtX2NvbnRhaW5lcl92Y3B1 KGN1cnJlbnQpID8gICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAoaXNfaHZtX3ZjcHUoY3Vy cmVudCkgPyAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICBjb3B5X2Zyb21fdXNlcl9odm0o KGRzdCksIChzcmMpLCAobGVuKSkgOiAgXAo+ICAgICAgIF9fY29weV9mcm9tX3VzZXIoKGRzdCks IChzcmMpLCAobGVuKSkpCj4gICNkZWZpbmUgX19yYXdfY2xlYXJfZ3Vlc3QoZHN0LCAgbGVuKSAg ICAgICAgICAgIFwKPiAtICAgIChoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KGN1cnJlbnQpID8gICAg ICAgICAgICAgICAgICAgICBcCj4gKyAgICAoaXNfaHZtX3ZjcHUoY3VycmVudCkgPyAgICAgICAg ICAgICAgICAgICAgIFwKPiAgICAgICBjbGVhcl91c2VyX2h2bSgoZHN0KSwgKGxlbikpIDogICAg ICAgICAgICAgXAo+ICAgICAgIGNsZWFyX3VzZXIoKGRzdCksIChsZW4pKSkKPiAgCj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vaHZtLmgKPiBpbmRleCBkYTBmNmJhLi4yYjRlMzI4IDEwMDY0NAo+IC0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v aHZtLmgKPiBAQCAtNjIzLDcgKzYyMyw3IEBAIHVuc2lnbmVkIGxvbmcgaHZtX2NyNF9ndWVzdF92 YWxpZF9iaXRzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBib29sIHJlc3RvcmUpOwo+ICAjZGVmaW5l IGFyY2hfdmNwdV9ibG9jayh2KSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICAgICAgc3RydWN0IHZjcHUgKnZfID0gKHYpOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+ICAgICAgc3RydWN0IGRvbWFpbiAqZF8gPSB2Xy0+ZG9tYWluOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl9k b21haW4oZF8pICYmICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgaWYgKCBpc19odm1f ZG9tYWluKGRfKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAg IChkXy0+YXJjaC5odm1fZG9tYWluLnBpX29wcy52Y3B1X2Jsb2NrKSApICAgICAgICAgIFwKPiAg ICAgICAgICBkXy0+YXJjaC5odm1fZG9tYWluLnBpX29wcy52Y3B1X2Jsb2NrKHZfKTsgICAgICAg ICAgXAo+ICB9KQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCBiL3hlbi9p bmNsdWRlL3hlbi9zY2hlZC5oCj4gaW5kZXggY2MxMTk5OS4uODMyMzUyYSAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5o Cj4gQEAgLTg3NCw4ICs4NzQsNiBAQCB2b2lkIHdhdGNoZG9nX2RvbWFpbl9kZXN0cm95KHN0cnVj dCBkb21haW4gKmQpOwo+ICAjZGVmaW5lIGlzX3B2X3ZjcHUodikgICAoaXNfcHZfZG9tYWluKCh2 KS0+ZG9tYWluKSkKPiAgI2RlZmluZSBpc19odm1fZG9tYWluKGQpICgoZCktPmd1ZXN0X3R5cGUg PT0gZ3Vlc3RfdHlwZV9odm0pCj4gICNkZWZpbmUgaXNfaHZtX3ZjcHUodikgICAoaXNfaHZtX2Rv bWFpbih2LT5kb21haW4pKQo+IC0jZGVmaW5lIGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAo KGQpLT5ndWVzdF90eXBlICE9IGd1ZXN0X3R5cGVfcHYpCj4gLSNkZWZpbmUgaGFzX2h2bV9jb250 YWluZXJfdmNwdSh2KSAgIChoYXNfaHZtX2NvbnRhaW5lcl9kb21haW4oKHYpLT5kb21haW4pKQo+ ICAjZGVmaW5lIGlzX3Bpbm5lZF92Y3B1KHYpICgodiktPmRvbWFpbi0+aXNfcGlubmVkIHx8IFwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFza193ZWlnaHQoKHYpLT5jcHVfaGFy ZF9hZmZpbml0eSkgPT0gMSkKPiAgI2lmZGVmIENPTkZJR19IQVNfUEFTU1RIUk9VR0gKPiBkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3RtZW1feGVuLmggYi94ZW4vaW5jbHVkZS94ZW4vdG1l bV94ZW4uaAo+IGluZGV4IGE2Y2FiMDAuLjEzY2Y3YmMgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1 ZGUveGVuL3RtZW1feGVuLmgKPiArKysgYi94ZW4vaW5jbHVkZS94ZW4vdG1lbV94ZW4uaAo+IEBA IC0xODUsOSArMTg1LDggQEAgdHlwZWRlZiBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNoYXIpIHRt ZW1fY2xpX3ZhX3BhcmFtX3Q7Cj4gIHN0YXRpYyBpbmxpbmUgaW50IHRtZW1fZ2V0X3RtZW1vcF9m cm9tX2NsaWVudCh0bWVtX29wX3QgKm9wLCB0bWVtX2NsaV9vcF90IHVvcHMpCj4gIHsKPiAgI2lm ZGVmIENPTkZJR19DT01QQVQKPiAtICAgIGlmICggaGFzX2h2bV9jb250YWluZXJfdmNwdShjdXJy ZW50KSA/Cj4gLSAgICAgICAgIGh2bV9ndWVzdF94ODZfbW9kZShjdXJyZW50KSAhPSA4IDoKPiAt ICAgICAgICAgaXNfcHZfMzJiaXRfdmNwdShjdXJyZW50KSApCj4gKyAgICBpZiAoIGlzX2h2bV92 Y3B1KGN1cnJlbnQpID8gaHZtX2d1ZXN0X3g4Nl9tb2RlKGN1cnJlbnQpICE9IDgKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiBpc19wdl8zMmJpdF92Y3B1KGN1cnJlbnQpICkKPiAg ICAgIHsKPiAgICAgICAgICBpbnQgcmM7Cj4gICAgICAgICAgZW51bSBYTEFUX3RtZW1fb3BfdSB1 Owo+IC0tIAo+IDIuMTAuMSAoQXBwbGUgR2l0LTc4KQo+IAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==