From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tamas K Lengyel Subject: Re: [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN Date: Tue, 7 May 2019 14:27:08 -0600 Message-ID: References: <20190507151458.29350-1-julien.grall@arm.com> <20190507151458.29350-14-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hO6go-0005rd-0L for xen-devel@lists.xenproject.org; Tue, 07 May 2019 20:27:50 +0000 Received: by mail-wm1-f48.google.com with SMTP id y197so249673wmd.0 for ; Tue, 07 May 2019 13:27:46 -0700 (PDT) In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Xen-devel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXkgNywgMjAxOSBhdCA5OjE1IEFNIEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+IHdyb3RlOgo+Cj4gVGhlIGZpcnN0IHBhcmFtZXRlciBvZiB7cyxnfWV0X2dwZm5f ZnJvbV9tZm4oKSBpcyBhbiBNRk4sIHNvIGl0IGNhbiBiZQo+IHN3aXRjaGVkIHRvIHVzZSB0aGUg dHlwZXNhZmUuCj4KPiBBdCB0aGUgc2FtZSB0aW1lLCByZXBsYWNlIGdwZm4gd2l0aCBwZm4gaW4g dGhlIGhlbHBlcnMgYXMgdGhleSBhbGwgZGVhbAo+IHdpdGggUEZOIGFuZCBhbHNvIHR1cm4gdGhl IG1hY3JvcyB0byBzdGF0aWMgaW5saW5lLgo+Cj4gTm90ZSB0aGF0IHRoZSByZXR1cm4gb2YgdGhl IGdldHRlciBhbmQgdGhlIDJuZCBwYXJhbWV0ZXIgb2YgdGhlIHNldHRlcgo+IGhhdmUgbm90IGJl ZW4gY29udmVydGVkIHRvIHVzZSB0eXBlc2FmZSBQRk4gYmVjYXVzZSBpdCB3YXMgcmVxdWlyaW5n Cj4gbW9yZSBjaGFuZ2VzIHRoYW4gZXhwZWN0ZWQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4g R3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKRm9yIHRoZSBtZW1fc2hhcmluZyBiaXRzOgpB Y2tlZC1ieTogVGFtYXMgSyBMZW5neWVsIDx0YW1hc0B0a2xlbmd5ZWwuY29tPgoKPiAtLS0KPiAg ICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAgICAgIC0gUGF0Y2ggYWRkZWQKPiAtLS0KPiAgeGVuL2Fy Y2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYyB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS5j ICAgICAgICAgICAgICAgICAgfCAxNCArKysrLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vbWVtX3No YXJpbmcuYyAgICAgIHwgMTkgKysrKystLS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS1wb2Qu YyAgICAgICAgICB8ICA0ICstLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICAg IHwgMzcgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAg ICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgICAgICAgICAgIHwgIDQgKy0tCj4gIHhlbi9hcmNoL3g4 Ni9wdi9kb20wX2J1aWxkLmMgICAgICAgfCAgNiArKy0tCj4gIHhlbi9hcmNoL3g4Ni94ODZfNjQv dHJhcHMuYyAgICAgICAgfCA0MSArKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICB4ZW4vY29tbW9u L21lbW9yeS5jICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2NvbW1vbi9wYWdlX2FsbG9j LmMgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCAgICAgICAg ICAgfCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmggIHwgIDIgKy0K PiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICAgICB8IDE2ICsrKysrLS0tLQo+ICB4 ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAgICAgICAgIHwgIDIgKy0KPiAgMTUgZmlsZXMgY2hh bmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jIGIveGVuL2FyY2gveDg2L2NwdS9t Y2hlY2svbWNhY3Rpb24uYwo+IGluZGV4IDY5MzMyZmI4NGQuLjVlNzhmYjc3MDMgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMKPiBAQCAtODksNyArODksNyBAQCBtY19tZW1lcnJf ZGhhbmRsZXIoc3RydWN0IG1jYV9iaW5mbyAqYmluZm8sCj4gICAgICAgICAgICAgIHsKPiAgICAg ICAgICAgICAgICAgIGQgPSBnZXRfZG9tYWluX2J5X2lkKGJhbmstPm1jX2RvbWlkKTsKPiAgICAg ICAgICAgICAgICAgIEFTU0VSVChkKTsKPiAtICAgICAgICAgICAgICAgIGdmbiA9IGdldF9ncGZu X2Zyb21fbWZuKChiYW5rLT5tY19hZGRyKSA+PiBQQUdFX1NISUZUKTsKPiArICAgICAgICAgICAg ICAgIGdmbiA9IGdldF9wZm5fZnJvbV9tZm4obWFkZHJfdG9fbWZuKGJhbmstPm1jX2FkZHIpKTsK Pgo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bm1tYXBfYnJva2VuX3BhZ2UoZCwgbWZuLCBnZm4p ICkKPiAgICAgICAgICAgICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMg Yi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IDdkODg3ZjI2OTkuLjYwYzQ3NTgyYmUgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBA IC01MDIsNyArNTAyLDcgQEAgdm9pZCBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KHN0cnVjdCBw YWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21haW4gKmQsCj4gICAgICBpZiAoIHBhZ2VfZ2V0X293 bmVyKHBhZ2UpID09IGQgKQo+ICAgICAgICAgIHJldHVybjsKPgo+IC0gICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuX3gocGFnZV90b19tZm4ocGFnZSkpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAg ICBzZXRfcGZuX2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBJTlZBTElEX00yUF9FTlRSWSk7 Cj4KPiAgICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPgo+IEBAIC0xMDc3LDcg KzEwNzcsNyBAQCBnZXRfcGFnZV9mcm9tX2wxZSgKPgo+ICAgICAgICAgICAgICBnZHByaW50ayhY RU5MT0dfV0FSTklORywgIkVycm9yIHVwZGF0aW5nIG1hcHBpbmdzIGZvciBtZm4gJSIgUFJJX21m bgo+ICAgICAgICAgICAgICAgICAgICAgICAiIChwZm4gJSIgUFJJX3BmbiAiLCBmcm9tIEwxIGVu dHJ5ICUiIFBSSXB0ZSAiKSBmb3IgZCVkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICBtZm4s IGdldF9ncGZuX2Zyb21fbWZuKG1mbiksCj4gKyAgICAgICAgICAgICAgICAgICAgIG1mbiwgZ2V0 X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAgICAgICAgICAgICAgICAgICBsMWVfZ2V0 X2ludHB0ZShsMWUpLCBsMWVfb3duZXItPmRvbWFpbl9pZCk7Cj4gICAgICAgICAgICAgIHJldHVy biBlcnI7Cj4gICAgICAgICAgfQo+IEBAIC0xMDg4LDcgKzEwODgsNyBAQCBnZXRfcGFnZV9mcm9t X2wxZSgKPiAgIGNvdWxkX25vdF9waW46Cj4gICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg IkVycm9yIGdldHRpbmcgbWZuICUiIFBSSV9tZm4gIiAocGZuICUiIFBSSV9wZm4KPiAgICAgICAg ICAgICAgICIpIGZyb20gTDEgZW50cnkgJSIgUFJJcHRlICIgZm9yIGwxZV9vd25lciBkJWQsIHBn X293bmVyIGQlZFxuIiwKPiAtICAgICAgICAgICAgIG1mbiwgZ2V0X2dwZm5fZnJvbV9tZm4obWZu KSwKPiArICAgICAgICAgICAgIG1mbiwgZ2V0X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAg ICAgICAgICAgICAgbDFlX2dldF9pbnRwdGUobDFlKSwgbDFlX293bmVyLT5kb21haW5faWQsIHBn X293bmVyLT5kb21haW5faWQpOwo+ICAgICAgaWYgKCByZWFsX3BnX293bmVyICE9IE5VTEwgKQo+ ICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+IEBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMg aW50IGFsbG9jX3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25n IHR5cGUsCj4gICAgICAgICAgICAgICAgICAgIiAocGZuICUiIFBSSV9wZm4gIikgZm9yIHR5cGUg JSIgUFJ0eXBlX2luZm8KPiAgICAgICAgICAgICAgICAgICAiOiBjYWY9JTA4bHggdGFmPSUiIFBS dHlwZV9pbmZvICJcbiIsCj4gICAgICAgICAgICAgICAgICAgbWZuX3gocGFnZV90b19tZm4ocGFn ZSkpLAo+IC0gICAgICAgICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9f bWZuKHBhZ2UpKSksCj4gKyAgICAgICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3Rv X21mbihwYWdlKSksCj4gICAgICAgICAgICAgICAgICAgdHlwZSwgcGFnZS0+Y291bnRfaW5mbywg cGFnZS0+dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgIGlmICggcGFnZSAhPSBjdXJyZW50 LT5hcmNoLm9sZF9ndWVzdF90YWJsZSApCj4gICAgICAgICAgICAgIHBhZ2UtPnUuaW51c2UudHlw ZV9pbmZvID0gMDsKPiBAQCAtMjg5MCw3ICsyODkwLDcgQEAgc3RhdGljIGludCBfZ2V0X3BhZ2Vf dHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUsCj4gICAgICAg ICAgICAgICAgICAgICAgICJCYWQgdHlwZSAoc2F3ICUiIFBSdHlwZV9pbmZvICIgIT0gZXhwICUi IFBSdHlwZV9pbmZvICIpICIKPiAgICAgICAgICAgICAgICAgICAgICAgImZvciBtZm4gJSIgUFJJ X21mbiAiIChwZm4gJSIgUFJJX3BmbiAiKVxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgeCwg dHlwZSwgbWZuX3gocGFnZV90b19tZm4ocGFnZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICBn ZXRfZ3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSkpKTsKPiArICAgICAgICAg ICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZSBpZiAo IHVubGlrZWx5KCEoeCAmIFBHVF92YWxpZGF0ZWQpKSApCj4gQEAgLTQwMDIsNyArNDAwMiw3IEBA IGxvbmcgZG9fbW11X3VwZGF0ZSgKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAg ICAgICB9Cj4KPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSwgZ3Bm bik7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBncGZuKTsKPiAgICAgICAg ICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KHBnX293bmVyLCBfcGZuKGdwZm4pKTsKPgo+ICAg ICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiBAQCAtNDUyOSw3ICs0NTI5LDcgQEAgaW50IHhl bm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoCj4gICAgICAgICAgZ290byBwdXRfYm90aDsKPgo+ICAg ICAgLyogVW5tYXAgZnJvbSBvbGQgbG9jYXRpb24sIGlmIGFueS4gKi8KPiAtICAgIG9sZF9ncGZu ID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSk7Cj4gKyAgICBvbGRfZ3BmbiA9IGdldF9w Zm5fZnJvbV9tZm4obWZuKTsKPiAgICAgIEFTU0VSVCghU0hBUkVEX00yUChvbGRfZ3BmbikpOwo+ ICAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuICYmIG9sZF9ncGZuICE9IGdmbiAp Cj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jIGIv eGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBpbmRleCA1YWM5ZDhmNTRjLi5hZjkwM2Mx MWU5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysrIGIv eGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBAQCAtMzkxLDExICszOTEsMTIgQEAgc3Rh dGljIGlubGluZSB2b2lkIG1lbV9zaGFyaW5nX2dmbl9kZXN0cm95KHN0cnVjdCBwYWdlX2luZm8g KnBhZ2UsCj4gICAgICB4ZnJlZShnZm5faW5mbyk7Cj4gIH0KPgo+IC1zdGF0aWMgc3RydWN0IHBh Z2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKHVuc2lnbmVkIGxvbmcgbWZuKQo+ICtzdGF0aWMg c3RydWN0IHBhZ2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKG1mbl90IG1mbikKPiAgewo+IC0g ICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92YWxpZChtZm4p ICkKPiAgICAgIHsKPiAtICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvKiBwYWdlID0gbWZuX3RvX3Bh Z2UoX21mbihtZm4pKTsKPiArICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvKiBwYWdlID0gbWZuX3Rv X3BhZ2UobWZuKTsKPiArCj4gICAgICAgICAgaWYgKCBwYWdlX2dldF9vd25lcihwYWdlKSA9PSBk b21fY293ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIC8qIENvdW50IGhhcyB0byBiZSBh dCBsZWFzdCB0d28sIGJlY2F1c2Ugd2UncmUgY2FsbGVkCj4gQEAgLTQwNCw3ICs0MDUsNyBAQCBz dGF0aWMgc3RydWN0IHBhZ2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKHVuc2lnbmVkIGxvbmcg bWZuKQo+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHQgPSByZWFkX2F0b21pYygmcGFnZS0+ dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgICAgICBBU1NFUlQoKHQgJiBQR1RfdHlwZV9t YXNrKSA9PSBQR1Rfc2hhcmVkX3BhZ2UpOwo+ICAgICAgICAgICAgICBBU1NFUlQoKHQgJiBQR1Rf Y291bnRfbWFzaykgPj0gMik7Cj4gLSAgICAgICAgICAgIEFTU0VSVChTSEFSRURfTTJQKGdldF9n cGZuX2Zyb21fbWZuKG1mbikpKTsKPiArICAgICAgICAgICAgQVNTRVJUKFNIQVJFRF9NMlAoZ2V0 X3Bmbl9mcm9tX21mbihtZm4pKSk7Cj4gICAgICAgICAgICAgIHJldHVybiBwYWdlOwo+ICAgICAg ICAgIH0KPiAgICAgIH0KPiBAQCAtNDY0LDEwICs0NjUsMTAgQEAgc3RhdGljIGludCBhdWRpdCh2 b2lkKQo+ICAgICAgICAgIH0KPgo+ICAgICAgICAgIC8qIENoZWNrIHRoZSBtMnAgZW50cnkgKi8K PiAtICAgICAgICBpZiAoICFTSEFSRURfTTJQKGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbikp KSApCj4gKyAgICAgICAgaWYgKCAhU0hBUkVEX00yUChnZXRfcGZuX2Zyb21fbWZuKG1mbikpICkK PiAgICAgICAgICB7Cj4gICAgICAgICAgICAgTUVNX1NIQVJJTkdfREVCVUcoIm1mbiAlbHggc2hh cmVkLCBidXQgd3JvbmcgbTJwIGVudHJ5ICglbHgpIVxuIiwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZm5feChtZm4pLCBnZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pKSk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2V0X3Bmbl9mcm9tX21m bihtZm4pKTsKPiAgICAgICAgICAgICBlcnJvcnMrKzsKPiAgICAgICAgICB9Cj4KPiBAQCAtNjkz LDcgKzY5NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqX19ncmFiX3NoYXJl ZF9wYWdlKG1mbl90IG1mbikKPiAgICAgIGlmICggIW1lbV9zaGFyaW5nX3BhZ2VfbG9jayhwZykg KQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+Cj4gLSAgICBpZiAoIG1lbV9zaGFyaW5nX2xvb2t1 cChtZm5feChtZm4pKSA9PSBOVUxMICkKPiArICAgIGlmICggbWVtX3NoYXJpbmdfbG9va3VwKG1m bikgPT0gTlVMTCApCj4gICAgICB7Cj4gICAgICAgICAgbWVtX3NoYXJpbmdfcGFnZV91bmxvY2so cGcpOwo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+IEBAIC04NzcsNyArODc4LDcgQEAgc3RhdGlj IGludCBub21pbmF0ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKPiAgICAgIGF0 b21pY19pbmMoJm5yX3NoYXJlZF9tZm5zKTsKPgo+ICAgICAgLyogVXBkYXRlIG0ycCBlbnRyeSB0 byBTSEFSRURfTTJQX0VOVFJZICovCj4gLSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4p LCBTSEFSRURfTTJQX0VOVFJZKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBTSEFSRURf TTJQX0VOVFJZKTsKPgo+ICAgICAgKnBoYW5kbGUgPSBwYWdlLT5zaGFyaW5nLT5oYW5kbGU7Cj4g ICAgICBhdWRpdF9hZGRfbGlzdChwYWdlKTsKPiBAQCAtMTIyMiw3ICsxMjIzLDcgQEAgcHJpdmF0 ZV9wYWdlX2ZvdW5kOgo+ICAgICAgfQo+Cj4gICAgICAvKiBVcGRhdGUgbTJwIGVudHJ5ICovCj4g LSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSksIGdmbik7Cj4g KyAgICBzZXRfcGZuX2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBnZm4pOwo+Cj4gICAgICAv KiBOb3cgdGhhdCB0aGUgZ2ZuPC0+bWZuIG1hcCBpcyBwcm9wZXJseSBlc3RhYmxpc2hlZCwKPiAg ICAgICAqIG1hcmtpbmcgZGlydHkgaXMgZmVhc2libGUgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiBpbmRleCA0 MzEzODYzMDY2Li45ZTAwMTczOGY0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cG9kLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gQEAgLTY1Miw3ICs2NTIs NyBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsIGdmbl90 IGdmbiwgdW5zaWduZWQgaW50IG9yZGVyKQo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAg IHAybV90bGJfZmx1c2hfc3luYyhwMm0pOwo+ICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8 IG47ICsraiApCj4gLSAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4p LCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgICAgICBwMm1fcG9kX2NhY2hlX2Fk ZChwMm0sIHBhZ2UsIGN1cl9vcmRlcik7Cj4KPiAgICAgICAgICAgICAgc3RlYWxfZm9yX2NhY2hl ID0gICggcDJtLT5wb2QuZW50cnlfY291bnQgPiBwMm0tPnBvZC5jb3VudCApOwo+IEBAIC0xMjAz LDcgKzEyMDMsNyBAQCBwMm1fcG9kX2RlbWFuZF9wb3B1bGF0ZShzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCBnZm5fdCBnZm4sCj4KPiAgICAgIGZvciggaSA9IDA7IGkgPCAoMVVMIDw8IG9yZGVyKTsg aSsrICkKPiAgICAgIHsKPiAtICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pICsg aSwgZ2ZuX3goZ2ZuX2FsaWduZWQpICsgaSk7Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9tX21mbiht Zm5fYWRkKG1mbiwgaSksIGdmbl94KGdmbl9hbGlnbmVkKSArIGkpOwo+ICAgICAgICAgIHBhZ2lu Z19tYXJrX3Bmbl9kaXJ0eShkLCBfcGZuKGdmbl94KGdmbl9hbGlnbmVkKSArIGkpKTsKPiAgICAg IH0KPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXB0LmMKPiBpbmRleCBjYWZjOWYyOTliLi4wZTg1ODE5ZjliIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYwo+IEBAIC05OTEsNyArOTkxLDggQEAgc3RhdGljIGludCBwMm1fcHRfY2hhbmdlX2VudHJ5 X3R5cGVfcmFuZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwKPiAgbG9uZyBwMm1fcHRfYXVkaXRf cDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gIHsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZW50 cnlfY291bnQgPSAwLCBwbWJhZCA9IDA7Cj4gLSAgICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuLCBt MnBmbjsKPiArICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtMnBmbjsKPiArICAgIG1mbl90IG1mbjsK Pgo+ICAgICAgQVNTRVJUKHAybV9sb2NrZWRfYnlfbWUocDJtKSk7Cj4gICAgICBBU1NFUlQocG9k X2xvY2tlZF9ieV9tZShwMm0pKTsKPiBAQCAtMTAzMCwxOSArMTAzMSwxOSBAQCBsb25nIHAybV9w dF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21haW4gKnAybSkKPiAgICAgICAgICAgICAgICAgIC8q IGNoZWNrIGZvciAxR0Igc3VwZXIgcGFnZSAqLwo+ICAgICAgICAgICAgICAgICAgaWYgKCBsM2Vf Z2V0X2ZsYWdzKGwzZVtpM10pICYgX1BBR0VfUFNFICkKPiAgICAgICAgICAgICAgICAgIHsKPiAt ICAgICAgICAgICAgICAgICAgICBtZm4gPSBsM2VfZ2V0X3BmbihsM2VbaTNdKTsKPiAtICAgICAg ICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKF9tZm4obWZuKSkpOwo+ICsgICAgICAgICAg ICAgICAgICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwzZVtpM10pOwo+ICsgICAgICAgICAgICAgICAg ICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgLyogd2Ug aGF2ZSB0byBjb3ZlciA1MTJ4NTEyIDRLIHBhZ2VzICovCj4gICAgICAgICAgICAgICAgICAgICAg Zm9yICggaTIgPSAwOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyIDwgKEwyX1BBR0VU QUJMRV9FTlRSSUVTICogTDFfUEFHRVRBQkxFX0VOVFJJRVMpOwo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGkyKyspCj4gICAgICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAg ICAgICAgICAgICBtMnBmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1mbitpMik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fYWRkKG1mbiwgaTIp KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtMnBmbiAhPSAoZ2ZuICsgaTIpICkK PiAgICAgICAgICAgICAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcG1iYWQrKzsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9QUklOVEsoIm1p c21hdGNoOiBnZm4gJSNseCAtPiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuK2kyLCBtZm4raTIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4g bWZuICUiUFJJX21mbiIgZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdmbiArIGkyLCBtZm5feChtZm5fYWRkKG1mbiwgaTIpKSwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4pOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiBAQCAt MTA2NywxNyArMTA2OCwxNyBAQCBsb25nIHAybV9wdF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21h aW4gKnAybSkKPiAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBmb3Igc3VwZXIgcGFnZSAq Lwo+ICAgICAgICAgICAgICAgICAgICAgIGlmICggbDJlX2dldF9mbGFncyhsMmVbaTJdKSAmIF9Q QUdFX1BTRSApCj4gICAgICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAg ICAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmVbaTJdKTsKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgbWZuID0gbDJlX2dldF9tZm4obDJlW2kyXSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg IEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo IGkxID0gMDsgaTEgPCBMMV9QQUdFVEFCTEVfRU5UUklFUzsgaTErKykKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4gPSBnZXRf Z3Bmbl9mcm9tX21mbihtZm4raTEpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJw Zm4gPSBnZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpMSkpOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogQWxsb3cgc2hhcmVkIE0yUHMgKi8KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICggKG0ycGZuICE9IChnZm4gKyBpMSkpICYmICFTSEFSRURfTTJQKG0y cGZuKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG1iYWQrKzsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdmbiAlI2x4XG4iLCBn Zm4raTEsIG1mbitpMSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJ TlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gKyBpMSwg bWZuX3gobWZuX2FkZChtZm4sIGkxKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtMnBmbik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gQEAgLTEwOTksMTkgKzEx MDAsMTkgQEAgbG9uZyBwMm1fcHRfYXVkaXRfcDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfY291bnQrKzsKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgICAgICAgICAgICAgICAg ICB9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwxZV9nZXRfcGZuKGwxZVtpMV0p Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKF9tZm4obWZuKSkp Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1m bik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwxZV9nZXRfbWZuKGwxZVtpMV0p Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9wZm5fZnJvbV9tZm4obWZuKTsKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtMnBmbiAhPSBnZm4gJiYKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlICE9IHAybV9tbWlvX2RpcmVjdCAmJgo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICFwMm1faXNfZ3JhbnQodHlwZSkgJiYKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhcDJtX2lzX3NoYXJlZCh0eXBlKSApCj4gICAgICAgICAgICAg ICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIm1pc21hdGNoOiBnZm4gJSNseCAt PiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdm biAlI2x4XG4iLCBnZm4sIG1mbiwgbTJwZm4pOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlI2x4Igo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdmbiAlI2x4XG4iLCBnZm4sIG1m biwgbTJwZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJtaXNtYXRj aDogZ2ZuICUjbHggLT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuLCBtZm5feChtZm4pLCBtMnBmbik7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHgg LT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdmbiwgbWZuX3gobWZuKSwgbTJwZm4pOwo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICAgICAgICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0u YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGluZGV4IDNjOThmNzJkYmIuLjAwM2VkOTc1MjEg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCj4gKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS5jCj4gQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihz dHJ1Y3QgZG9tYWluICpkKQo+Cj4KPiAgc3RhdGljIGludAo+IC1wMm1fcmVtb3ZlX3BhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBt Zm4sCj4gK3AybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBs b25nIGdmbl9sLCBtZm5fdCBtZm4sCj4gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFn ZV9vcmRlcikKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyBpOwo+IEBAIC03ODMsMTcgKzc4Mywx NyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCj4gICAgICAgICAgcmV0dXJuIDA7Cj4KPiAgICAg IEFTU0VSVChnZm5fbG9ja2VkX2J5X21lKHAybSwgZ2ZuKSk7Cj4gLSAgICBQMk1fREVCVUcoInJl bW92aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5fbCwgbWZuKTsKPiArICAgIFAyTV9ERUJV RygicmVtb3ZpbmcgZ2ZuPSUjbHggbWZuPSUiUFJJX21mbiJcbiIsIGdmbl9sLCBtZm5feChtZm4p KTsKPgo+IC0gICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92 YWxpZChtZm4pICkKPiAgICAgIHsKPiAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwg cGFnZV9vcmRlcik7IGkrKyApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBtZm5fcmV0dXJu ID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwgMCwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwo+ICAgICAg ICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAy bV9pc19mb3JlaWduKHQpICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1m bitpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gLSAgICAgICAgICAgIEFTU0VSVCggIXAybV9pc192 YWxpZCh0KSB8fCBtZm4gKyBpID09IG1mbl94KG1mbl9yZXR1cm4pICk7Cj4gKyAgICAgICAgICAg ICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkp Owo+ICsgICAgICAgICAgICBBU1NFUlQoICFwMm1faXNfdmFsaWQodCkgfHwgbWZuX2VxKG1mbl9h ZGQobWZuLCBpKSwgbWZuX3JldHVybikgKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBy ZXR1cm4gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAy bV9pbnZhbGlkLAo+IEBAIC04MDcsNyArODA3LDcgQEAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCj4gICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ICAgICAgaW50IHJjOwo+ICAgICAgZ2ZuX2xvY2so cDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOwo+IC0gICAgcmMgPSBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBn Zm5feChnZm4pLCBtZm5feChtZm4pLCBwYWdlX29yZGVyKTsKPiArICAgIHJjID0gcDJtX3JlbW92 ZV9wYWdlKHAybSwgZ2ZuX3goZ2ZuKSwgbWZuLCBwYWdlX29yZGVyKTsKPiAgICAgIGdmbl91bmxv Y2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOwo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gQEAgLTkw OCw3ICs5MDgsNyBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBn Zm5fdCBnZm4sIG1mbl90IG1mbiwKPiAgICAgICAgICBlbHNlIGlmICggcDJtX2lzX3JhbShvdCkg JiYgIXAybV9pc19wYWdlZChvdCkgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgQVNTRVJU KG1mbl92YWxpZChvbWZuKSk7Cj4gLSAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94 KG9tZm4pLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9t Zm4ob21mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNl IGlmICggb3QgPT0gcDJtX3BvcHVsYXRlX29uX2RlbWFuZCApCj4gICAgICAgICAgewo+IEBAIC05 NTEsNyArOTUxLDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwg Z2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAgICAgICAgICAgICAgICBQMk1fREVCVUcoIm9sZCBn Zm49JSNseCAtPiBtZm4gJSNseFxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5f eChvZ2ZuKSAsIG1mbl94KG9tZm4pKTsKPiAgICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9t Zm4sIG1mbl9hZGQobWZuLCBpKSkgKQo+IC0gICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVf cGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChtZm5fYWRkKG1mbiwgaSkpLAo+ICsgICAgICAg ICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5fYWRkKG1m biwgaSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgfQo+IEBAIC05NjgsOCArOTY4LDggQEAgZ3Vlc3RfcGh5c21h cF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAg ICAgICAgaWYgKCAhcDJtX2lzX2dyYW50KHQpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKPiAtICAgICAgICAg ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAr ICAgICAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAg ICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBlbHNlCj4gQEAgLTEyNzIsNyArMTI3Miw3IEBAIHN0 YXRpYyBpbnQgc2V0X3R5cGVkX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGdmbl9sLAo+ICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBvcmRlcik7ICsr aSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbl9hZGQo b21mbiwgaSkpKTsKPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gob21mbikg KyBpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4o bWZuX2FkZChvbWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAg IH0KPgo+IEBAIC0xNDY3LDcgKzE0NjcsNyBAQCBpbnQgc2V0X3NoYXJlZF9wMm1fZW50cnkoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwgbWZuX3QgbWZuKQo+ICAgICAgcGdf dHlwZSA9IHJlYWRfYXRvbWljKCYobWZuX3RvX3BhZ2Uob21mbiktPnUuaW51c2UudHlwZV9pbmZv KSk7Cj4gICAgICBpZiAoIChwZ190eXBlICYgUEdUX2NvdW50X21hc2spID09IDAKPiAgICAgICAg ICAgfHwgKHBnX3R5cGUgJiBQR1RfdHlwZV9tYXNrKSAhPSBQR1Rfc2hhcmVkX3BhZ2UgKQo+IC0g ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG9tZm4pLCBJTlZBTElEX00yUF9FTlRSWSk7 Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihvbWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4K PiAgICAgIFAyTV9ERUJVRygic2V0IHNoYXJlZCAlbHggJWx4XG4iLCBnZm5fbCwgbWZuX3gobWZu KSk7Cj4gICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIG1mbiwgUEFHRV9PUkRFUl80 SywgcDJtX3JhbV9zaGFyZWQsCj4gQEAgLTE4MjEsNyArMTgyMSw3IEBAIGludCBwMm1fbWVtX3Bh Z2luZ19wcmVwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIHVpbnQ2NF90 IGJ1ZmZlcikKPiAgICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIG1mbiwgUEFHRV9P UkRFUl80SywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nX21vZGVfbG9nX2RpcnR5 KGQpID8gcDJtX3JhbV9sb2dkaXJ0eQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiBwMm1fcmFtX3J3LCBhKTsKPiAtICAgIHNldF9ncGZuX2Zyb21f bWZuKG1mbl94KG1mbiksIGdmbl9sKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBnZm5f bCk7Cj4KPiAgICAgIGlmICggIXBhZ2VfZXh0YW50ICkKPiAgICAgICAgICBhdG9taWNfZGVjKCZk LT5wYWdlZF9wYWdlcyk7Cj4gQEAgLTE4NzIsNyArMTg3Miw3IEBAIHZvaWQgcDJtX21lbV9wYWdp bmdfcmVzdW1lKHN0cnVjdCBkb21haW4gKmQsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcmFtX3J3LCBhKTsKPgo+ICAg ICAgICAgICAgICBpZiAoICFyYyApCj4gLSAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21m bihtZm5feChtZm4pLCBnZm5feChnZm4pKTsKPiArICAgICAgICAgICAgICAgIHNldF9wZm5fZnJv bV9tZm4obWZuLCBnZm5feChnZm4pKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZ2ZuX3VubG9j ayhwMm0sIGdmbiwgMCk7Cj4gICAgICB9Cj4gQEAgLTI2MzUsNyArMjYzNSw3IEBAIGludCBwMm1f Y2hhbmdlX2FsdHAybV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCwKPiAg ICAgIGlmICggZ2ZuX2VxKG5ld19nZm4sIElOVkFMSURfR0ZOKSApCj4gICAgICB7Cj4gICAgICAg ICAgaWYgKCBtZm5fdmFsaWQobWZuKSApCj4gLSAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShh cDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuX3gobWZuKSwgUEFHRV9PUkRFUl80Syk7Cj4gKyAgICAg ICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuLCBQQUdFX09S REVSXzRLKTsKPiAgICAgICAgICByYyA9IDA7Cj4gICAgICAgICAgZ290byBvdXQ7Cj4gICAgICB9 Cj4gQEAgLTI3NzIsOCArMjc3Miw4IEBAIHZvaWQgYXVkaXRfcDJtKHN0cnVjdCBkb21haW4gKmQs Cj4gIHsKPiAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Cj4gICAgICBzdHJ1Y3QgZG9tYWlu ICpvZDsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBnZm47Cj4gLSAgICBtZm5fdCBwMm1mbjsK PiArICAgIHVuc2lnbmVkIGxvbmcgZ2ZuOwo+ICsgICAgbWZuX3QgcDJtZm4sIG1mbjsKPiAgICAg IHVuc2lnbmVkIGxvbmcgb3JwaGFuc19jb3VudCA9IDAsIG1wYmFkID0gMCwgcG1iYWQgPSAwOwo+ ICAgICAgcDJtX2FjY2Vzc190IHAybWE7Cj4gICAgICBwMm1fdHlwZV90IHR5cGU7Cj4gQEAgLTI3 OTUsNTQgKzI3OTUsNTQgQEAgdm9pZCBhdWRpdF9wMm0oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg IHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPiAgICAgIHBhZ2VfbGlzdF9mb3JfZWFj aCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAgewo+IC0gICAgICAgIG1mbiA9IG1mbl94 KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiArICAgICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsK Pgo+IC0gICAgICAgIFAyTV9QUklOVEsoImF1ZGl0aW5nIGd1ZXN0IHBhZ2UsIG1mbj0lI2x4XG4i LCBtZm4pOwo+ICsgICAgICAgIFAyTV9QUklOVEsoImF1ZGl0aW5nIGd1ZXN0IHBhZ2UsIG1mbj0l IlBSSV9tZm4iXG4iLCBtZm5feChtZm4pKTsKPgo+ICAgICAgICAgIG9kID0gcGFnZV9nZXRfb3du ZXIocGFnZSk7Cj4KPiAgICAgICAgICBpZiAoIG9kICE9IGQgKQo+ICAgICAgICAgIHsKPiAtICAg ICAgICAgICAgUDJNX1BSSU5USygid3Jvbmcgb3duZXIgJSNseCAtPiAlcCgldSkgIT0gJXAoJXUp XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIG1mbiwgb2QsIChvZD9vZC0+ZG9tYWluX2lk Oi0xKSwgZCwgZC0+ZG9tYWluX2lkKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygid3Jvbmcg b3duZXIgJSJQUklfbWZuIiAtPiAlcCgldSkgIT0gJXAoJXUpXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIG1mbl94KG1mbiksIG9kLCAob2Q/b2QtPmRvbWFpbl9pZDotMSksIGQsIGQtPmRv bWFpbl9pZCk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+IC0gICAg ICAgIGdmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1mbik7Cj4gKyAgICAgICAgZ2ZuID0gZ2V0X3Bm bl9mcm9tX21mbihtZm4pOwo+ICAgICAgICAgIGlmICggZ2ZuID09IElOVkFMSURfTTJQX0VOVFJZ ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIG9ycGhhbnNfY291bnQrKzsKPiAtICAgICAg ICAgICAgUDJNX1BSSU5USygib3JwaGFuZWQgZ3Vlc3QgcGFnZTogbWZuPSUjbHggaGFzIGludmFs aWQgZ2ZuXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBtZm4pOwo+ICsgICAgICAg ICAgICBQMk1fUFJJTlRLKCJvcnBoYW5lZCBndWVzdCBwYWdlOiBtZm49JSJQUklfbWZuIiBoYXMg aW52YWxpZCBnZm5cbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSk7Cj4g ICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+ICAgICAgICAgIGlmICggU0hB UkVEX00yUChnZm4pICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoInNo YXJlZCBtZm4gKCVseCkgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gLSAgICAgICAgICAgICAg ICAgICAgbWZuKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygic2hhcmVkIG1mbiAoJSJQUklf bWZuIikgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg bWZuX3gobWZuKSk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+ICAg ICAgICAgIHAybWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgJnR5cGUsICZwMm1h LCAwLCBOVUxMKTsKPiAtICAgICAgICBpZiAoIG1mbl94KHAybWZuKSAhPSBtZm4gKQo+ICsgICAg ICAgIGlmICggIW1mbl9lcShwMm1mbiwgbWZuKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAg ICBtcGJhZCsrOwo+IC0gICAgICAgICAgICBQMk1fUFJJTlRLKCJtYXAgbWlzbWF0Y2ggbWZuICUj bHggLT4gZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gKyAgICAgICAgICAgIFAyTV9QUklOVEsoIm1h cCBtaXNtYXRjaCBtZm4gJSJQUklfbWZuIiAtPiBnZm4gJSNseCAtPiBtZm4gJSJQUklfbWZuIiIK PiAgICAgICAgICAgICAgICAgICAgICAgICAiICgtPiBnZm4gJSNseClcbiIsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgbWZuLCBnZm4sIG1mbl94KHAybWZuKSwKPiArICAgICAgICAgICAgICAg ICAgICAgICBtZm5feChtZm4pLCBnZm4sIG1mbl94KHAybWZuKSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAobWZuX3ZhbGlkKHAybWZuKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICA/IGdl dF9ncGZuX2Zyb21fbWZuKG1mbl94KHAybWZuKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAg PyBnZXRfcGZuX2Zyb21fbWZuKHAybWZuKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0x dSkpOwo+ICAgICAgICAgICAgICAvKiBUaGlzIG0ycCBlbnRyeSBpcyBzdGFsZTogdGhlIGRvbWFp biBoYXMgYW5vdGhlciBmcmFtZSBpbgo+ICAgICAgICAgICAgICAgKiB0aGlzIHBoeXNpY2FsIHNs b3QuICBObyBncmVhdCBkaXNhc3RlciwgYnV0IGZvciBuZWF0bmVzcywKPiAgICAgICAgICAgICAg ICogYmxvdyBhd2F5IHRoZSBtMnAgZW50cnkuICovCj4gLSAgICAgICAgICAgIHNldF9ncGZuX2Zy b21fbWZuKG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICBzZXRfcGZuX2Zy b21fbWZuKG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBf X3B1dF9nZm4ocDJtLCBnZm4pOwo+Cj4gLSAgICAgICAgUDJNX1BSSU5USygiT0s6IG1mbj0lI2x4 LCBnZm49JSNseCwgcDJtZm49JSNseFxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICBtZm4s IGdmbiwgbWZuX3gocDJtZm4pKTsKPiArICAgICAgICBQMk1fUFJJTlRLKCJPSzogbWZuPSUiUFJJ X21mbiIsIGdmbj0lI2x4LCBwMm1mbj0lIlBSSV9tZm4iXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgbWZuX3gobWZuKSwgZ2ZuLCBtZm5feChwMm1mbikpOwo+ICAgICAgfQo+ICAgICAgc3Bpbl91 bmxvY2soJmQtPnBhZ2VfYWxsb2NfbG9jayk7Cj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gaW5kZXggOWIwZjI2OGU3 NC4uY2VmMmY5MDE4NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiAr KysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQg cGFnaW5nX21hcmtfZGlydHkoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAgICAg ICByZXR1cm47Cj4KPiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9y IG5vbi10cmFuc2xhdGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJv bV9tZm4obWZuX3goZ21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihn bWZuKSk7Cj4KPiAgICAgIHBhZ2luZ19tYXJrX3Bmbl9kaXJ0eShkLCBwZm4pOwo+ICB9Cj4gQEAg LTM2Miw3ICszNjIsNyBAQCBpbnQgcGFnaW5nX21mbl9pc19kaXJ0eShzdHJ1Y3QgZG9tYWluICpk LCBtZm5fdCBnbWZuKQo+ICAgICAgQVNTRVJUKHBhZ2luZ19tb2RlX2xvZ19kaXJ0eShkKSk7Cj4K PiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9yIG5vbi10cmFuc2xh dGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3go Z21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihnbWZuKSk7Cj4gICAg ICAvKiBJbnZhbGlkIHBhZ2VzIGNhbid0IGJlIGRpcnR5LiAqLwo+ICAgICAgaWYgKCB1bmxpa2Vs eSghVkFMSURfTTJQKHBmbl94KHBmbikpKSApCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9t MF9idWlsZC5jCj4gaW5kZXggY2VmMmQ0MjI1NC4uYjM5YWI2NzA5MiAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L2RvbTBf YnVpbGQuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHZvaWQgX19pbml0IGRvbTBfdXBkYXRlX3BoeXNt YXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICBlbHNlCj4gICAg ICAgICAgKCh1bnNpZ25lZCBpbnQgKil2cGh5c21hcF9zKVtwZm5dID0gbWZuOwo+Cj4gLSAgICBz ZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbik7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZuKF9tZm4o bWZuKSwgcGZuKTsKPiAgfQo+Cj4gIHN0YXRpYyBfX2luaXQgdm9pZCBtYXJrX3B2X3B0X3BhZ2Vz X3Jkb25seShzdHJ1Y3QgZG9tYWluICpkLAo+IEBAIC03OTgsOCArNzk4LDggQEAgaW50IF9faW5p dCBkb20wX2NvbnN0cnVjdF9wdihzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgcGFnZV9saXN0X2Zv cl9lYWNoICggcGFnZSwgJmQtPnBhZ2VfbGlzdCApCj4gICAgICB7Cj4gICAgICAgICAgbWZuID0g bWZuX3gocGFnZV90b19tZm4ocGFnZSkpOwo+IC0gICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdl dF9ncGZuX2Zyb21fbWZuKG1mbikpKTsKPiAtICAgICAgICBpZiAoIGdldF9ncGZuX2Zyb21fbWZu KG1mbikgPj0gY291bnQgKQo+ICsgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdldF9wZm5fZnJv bV9tZm4oX21mbihtZm4pKSkpOwo+ICsgICAgICAgIGlmICggZ2V0X3Bmbl9mcm9tX21mbihfbWZu KG1mbikpID49IGNvdW50ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIEJVR19PTihpc19w dl8zMmJpdF9kb21haW4oZCkpOwo+ICAgICAgICAgICAgICBpZiAoICFwYWdlLT51LmludXNlLnR5 cGVfaW5mbyAmJgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiBpbmRleCA0NGFmNzY1ZTNlLi5mODBmMjI1MGZl IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvdHJhcHMuYwo+IEBAIC0xODQsNyArMTg0LDggQEAgdm9pZCB2Y3B1X3No b3dfcmVnaXN0ZXJzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQo+Cj4gIHZvaWQgc2hvd19wYWdlX3dh bGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICB7Cj4gLSAgICB1bnNpZ25lZCBsb25nIHBmbiwgbWZu ID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOwo+ICsgICAgdW5zaWduZWQgbG9uZyBwZm47Cj4g KyAgICBtZm5fdCBtZm4gPSBtYWRkcl90b19tZm4ocmVhZF9jcjMoKSk7Cj4gICAgICBsNF9wZ2Vu dHJ5X3QgbDRlLCAqbDR0Owo+ICAgICAgbDNfcGdlbnRyeV90IGwzZSwgKmwzdDsKPiAgICAgIGwy X3BnZW50cnlfdCBsMmUsICpsMnQ7Cj4gQEAgLTE5NCw1MiArMTk1LDUyIEBAIHZvaWQgc2hvd19w YWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICAgICAgaWYgKCAhaXNfY2Fub25pY2FsX2Fk ZHJlc3MoYWRkcikgKQo+ICAgICAgICAgIHJldHVybjsKPgo+IC0gICAgbDR0ID0gbWFwX2RvbWFp bl9wYWdlKF9tZm4obWZuKSk7Cj4gKyAgICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKPiAg ICAgIGw0ZSA9IGw0dFtsNF90YWJsZV9vZmZzZXQoYWRkcildOwo+ICAgICAgdW5tYXBfZG9tYWlu X3BhZ2UobDR0KTsKPiAtICAgIG1mbiA9IGw0ZV9nZXRfcGZuKGw0ZSk7Cj4gLSAgICBwZm4gPSBt Zm5fdmFsaWQoX21mbihtZm4pKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4g LSAgICAgICAgICBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4g KyAgICBtZm4gPSBsNGVfZ2V0X21mbihsNGUpOwo+ICsgICAgcGZuID0gbWZuX3ZhbGlkKG1mbikg JiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ICsgICAgICAgICAgZ2V0X3Bmbl9m cm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gICAgICBwcmludGsoIiBMNFsweCUw M2x4XSA9ICUiUFJJcHRlIiAlMDE2bHhcbiIsCj4gICAgICAgICAgICAgbDRfdGFibGVfb2Zmc2V0 KGFkZHIpLCBsNGVfZ2V0X2ludHB0ZShsNGUpLCBwZm4pOwo+ICAgICAgaWYgKCAhKGw0ZV9nZXRf ZmxhZ3MobDRlKSAmIF9QQUdFX1BSRVNFTlQpIHx8Cj4gLSAgICAgICAgICFtZm5fdmFsaWQoX21m bihtZm4pKSApCj4gKyAgICAgICAgICFtZm5fdmFsaWQobWZuKSApCj4gICAgICAgICAgcmV0dXJu Owo+Cj4gLSAgICBsM3QgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGwzdCA9 IG1hcF9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgbDNlID0gbDN0W2wzX3RhYmxlX29mZnNldChh ZGRyKV07Cj4gICAgICB1bm1hcF9kb21haW5fcGFnZShsM3QpOwo+IC0gICAgbWZuID0gbDNlX2dl dF9wZm4obDNlKTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZuKG1mbikpICYmIG1hY2hpbmVf dG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1m bikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwzZSk7Cj4g KyAgICBwZm4gPSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxp ZCA/Cj4gKyAgICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRS WTsKPiAgICAgIHByaW50aygiIEwzWzB4JTAzbHhdID0gJSJQUklwdGUiICUwMTZseCVzXG4iLAo+ ICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldChhZGRyKSwgbDNlX2dldF9pbnRwdGUobDNlKSwg cGZuLAo+ICAgICAgICAgICAgIChsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFHRV9QU0UpID8gIiAo UFNFKSIgOiAiIik7Cj4gICAgICBpZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJF U0VOVCkgfHwKPiAgICAgICAgICAgKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdFX1BTRSkgfHwK PiAtICAgICAgICAgIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgICAgICAgIW1mbl92YWxp ZChtZm4pICkKPiAgICAgICAgICByZXR1cm47Cj4KPiAtICAgIGwydCA9IG1hcF9kb21haW5fcGFn ZShfbWZuKG1mbikpOwo+ICsgICAgbDJ0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7Cj4gICAgICBs MmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAgICAgIHVubWFwX2RvbWFpbl9wYWdl KGwydCk7Cj4gLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUpOwo+IC0gICAgcGZuID0gbWZuX3Zh bGlkKF9tZm4obWZuKSkgJiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+IC0gICAg ICAgICAgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICsgICAg bWZuID0gbDJlX2dldF9tZm4obDJlKTsKPiArICAgIHBmbiA9IG1mbl92YWxpZChtZm4pICYmIG1h Y2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiArICAgICAgICAgIGdldF9wZm5fZnJvbV9t Zm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICAgICAgcHJpbnRrKCIgTDJbMHglMDNseF0g PSAlIlBSSXB0ZSIgJTAxNmx4JXNcbiIsCj4gICAgICAgICAgICAgbDJfdGFibGVfb2Zmc2V0KGFk ZHIpLCBsMmVfZ2V0X2ludHB0ZShsMmUpLCBwZm4sCj4gICAgICAgICAgICAgKGwyZV9nZXRfZmxh Z3MobDJlKSAmIF9QQUdFX1BTRSkgPyAiIChQU0UpIiA6ICIiKTsKPiAgICAgIGlmICggIShsMmVf Z2V0X2ZsYWdzKGwyZSkgJiBfUEFHRV9QUkVTRU5UKSB8fAo+ICAgICAgICAgICAobDJlX2dldF9m bGFncyhsMmUpICYgX1BBR0VfUFNFKSB8fAo+IC0gICAgICAgICAhbWZuX3ZhbGlkKF9tZm4obWZu KSkgKQo+ICsgICAgICAgICAhbWZuX3ZhbGlkKG1mbikgKQo+ICAgICAgICAgIHJldHVybjsKPgo+ IC0gICAgbDF0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7Cj4gKyAgICBsMXQgPSBtYXBf ZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgIGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQoYWRkcild Owo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDF0KTsKPiAtICAgIG1mbiA9IGwxZV9nZXRfcGZu KGwxZSk7Cj4gLSAgICBwZm4gPSBtZm5fdmFsaWQoX21mbihtZm4pKSAmJiBtYWNoaW5lX3RvX3Bo eXNfbWFwcGluZ192YWxpZCA/Cj4gLSAgICAgICAgICBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDog SU5WQUxJRF9NMlBfRU5UUlk7Cj4gKyAgICBtZm4gPSBsMWVfZ2V0X21mbihsMWUpOwo+ICsgICAg cGZuID0gbWZuX3ZhbGlkKG1mbikgJiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ ICsgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4g ICAgICBwcmludGsoIiBMMVsweCUwM2x4XSA9ICUiUFJJcHRlIiAlMDE2bHhcbiIsCj4gICAgICAg ICAgICAgbDFfdGFibGVfb2Zmc2V0KGFkZHIpLCBsMWVfZ2V0X2ludHB0ZShsMWUpLCBwZm4pOwo+ ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9y eS5jCj4gaW5kZXggZDZhNTgwZGEzMS4uZWVjYzk2NzFmZiAxMDA2NDQKPiAtLS0gYS94ZW4vY29t bW9uL21lbW9yeS5jCj4gKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+IEBAIC0yNzMsNyArMjcz LDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVfcGh5c21hcChzdHJ1Y3QgbWVtb3BfYXJncyAqYSkK PiAgICAgICAgICAgICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkKPiAgICAgICAg ICAgICAgewo+ICAgICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCAoMVUgPDwgYS0+ZXh0 ZW50X29yZGVyKTsgaisrICkKPiAtICAgICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21m bihtZm5feChtZm5fYWRkKG1mbiwgaikpLCBncGZuICsgaik7Cj4gKyAgICAgICAgICAgICAgICAg ICAgc2V0X3Bmbl9mcm9tX21mbihtZm5fYWRkKG1mbiwgaiksIGdwZm4gKyBqKTsKPgo+ICAgICAg ICAgICAgICAgICAgLyogSW5mb3JtIHRoZSBkb21haW4gb2YgdGhlIG5ldyBwYWdlJ3MgbWFjaGlu ZSBhZGRyZXNzLiAqLwo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseShfX2NvcHlfbWZu X3RvX2d1ZXN0X29mZnNldChhLT5leHRlbnRfbGlzdCwgaSwKPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9wYWdlX2FsbG9jLmMgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IGluZGV4IDYwNjFj Y2UyNGYuLmExMDBlMDNlMmUgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMK PiArKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IEBAIC0xNDI0LDcgKzE0MjQsNyBAQCBz dGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCj4KPiAgICAgICAgICAvKiBUaGlzIHBhZ2UgaXMg bm90IGEgZ3Vlc3QgZnJhbWUgYW55IG1vcmUuICovCj4gICAgICAgICAgcGFnZV9zZXRfb3duZXIo JnBnW2ldLCBOVUxMKTsgLyogc2V0X2dwZm5fZnJvbV9tZm4gc25vb3BzIHBnIG93bmVyICovCj4g LSAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSArIGksIElOVkFMSURfTTJQX0VO VFJZKTsKPiArICAgICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCArIGkpLCBJTlZB TElEX00yUF9FTlRSWSk7Cj4KPiAgICAgICAgICBpZiAoIG5lZWRfc2NydWIgKQo+ICAgICAgICAg IHsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUv YXNtLWFybS9tbS5oCj4gaW5kZXggYTljYjk4YTZjNy4uM2MwM2JlM2JjYSAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21t LmgKPiBAQCAtMzIyLDcgKzMyMiw3IEBAIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21f Z3ZhKHN0cnVjdCB2Y3B1ICp2LCB2YWRkcl90IHZhLAo+ICAjZGVmaW5lIFNIQVJFRF9NMlAoX2Up ICAgICAgICAgICAoKF9lKSA9PSBTSEFSRURfTTJQX0VOVFJZKQo+Cj4gIC8qIFdlIGRvbid0IGhh dmUgYSBNMlAgb24gQXJtICovCj4gLSNkZWZpbmUgc2V0X2dwZm5fZnJvbV9tZm4obWZuLCBwZm4p IGRvIHsgKHZvaWQpIChtZm4pLCAodm9pZCkocGZuKTsgfSB3aGlsZSAoMCkKPiArc3RhdGljIGlu bGluZSB2b2lkIHNldF9wZm5fZnJvbV9tZm4obWZuX3QgbWZuLCB1bnNpZ25lZCBsb25nIHBmbikg e30KPgo+ICAvKiBBcmNoLXNwZWNpZmljIHBvcnRpb24gb2YgbWVtb3J5X29wIGh5cGVyY2FsbC4g Ki8KPiAgbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o dm9pZCkgYXJnKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJs ZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gaW5kZXggNjYxMjI4ZGQz OS4uZDczMWI5ZTQ5ZiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3Rh YmxlLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmgKPiBAQCAtNDEs NyArNDEsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZXBsYWNlX2dyYW50X2hvc3RfbWFwcGluZyh1 aW50NjRfdCBhZGRyLCBtZm5fdCBmcmFtZSwKPiAgI2RlZmluZSBnbnR0YWJfZ2V0X2ZyYW1lX2dm bihndCwgc3QsIGlkeCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIG1m bl90IG1mbl8gPSAoc3QpID8gZ250dGFiX3N0YXR1c19tZm4oZ3QsIGlkeCkgICAgICAgICAgICAg ICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgIDogZ250dGFiX3NoYXJlZF9tZm4o Z3QsIGlkeCk7ICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAgIHVuc2lnbmVkIGxvbmcgZ3Bm bl8gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm5fKSk7ICAgICAgICAgICAgICAgIFwKPiAr ICAgIHVuc2lnbmVkIGxvbmcgZ3Bmbl8gPSBnZXRfcGZuX2Zyb21fbWZuKG1mbl8pOyAgICAgICAg ICAgICAgICAgICAgICAgIFwKPiAgICAgIFZBTElEX00yUChncGZuXykgPyBfZ2ZuKGdwZm5fKSA6 IElOVkFMSURfR0ZOOyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgfSkKPgo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgK PiBpbmRleCA0NzIxNzI1YzYwLi5iY2U2MDYxOWMzIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+IEBAIC00OTIs MjIgKzQ5MiwyNiBAQCBleHRlcm4gc3RydWN0IGRvbWFpbiAqZG9tX3hlbiwgKmRvbV9pbywgKmRv bV9jb3c7IC8qIGZvciB2bWNvcmVpbmZvICovCj4gICAqLwo+ICBleHRlcm4gYm9vbCBtYWNoaW5l X3RvX3BoeXNfbWFwcGluZ192YWxpZDsKPgo+IC1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2dwZm5f ZnJvbV9tZm4odW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxvbmcgcGZuKQo+ICtzdGF0aWMg aW5saW5lIHZvaWQgc2V0X3Bmbl9mcm9tX21mbihtZm5fdCBtZm4sIHVuc2lnbmVkIGxvbmcgcGZu KQo+ICB7Cj4gLSAgICBzdHJ1Y3QgZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3Bh Z2UoX21mbihtZm4pKSk7Cj4gKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIG1mbl8gPSBtZm5feCht Zm4pOwo+ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdl KG1mbikpOwo+ICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeSA9IChkICYmIChkID09IGRvbV9jb3cp KSA/IFNIQVJFRF9NMlBfRU5UUlkgOiBwZm47Cj4KPiAgICAgIGlmICghbWFjaGluZV90b19waHlz X21hcHBpbmdfdmFsaWQpCj4gICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICBpZiAoIG1mbiA+PSAo UkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8g NCApCj4gLSAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRy eTsKPiAtICAgIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiArICAgIGlm ICggbWZuXyA+PSAoUkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJ UlRfU1RBUlQpIC8gNCApCj4gKyAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5n W21mbl9dID0gZW50cnk7Cj4gKyAgICBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1ttZm5fXSA9IGVu dHJ5Owo+ICB9Cj4KPiAgZXh0ZXJuIHN0cnVjdCByYW5nZXNldCAqbW1pb19yb19yYW5nZXM7Cj4K PiAtI2RlZmluZSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pICAgICAgKG1hY2hpbmVfdG9fcGh5c19t YXBwaW5nWyhtZm4pXSkKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9wZm5fZnJv bV9tZm4obWZuX3QgbWZuKQo+ICt7Cj4gKyAgICByZXR1cm4gbWFjaGluZV90b19waHlzX21hcHBp bmdbbWZuX3gobWZuKV07Cj4gK30KPgo+ICAjZGVmaW5lIGNvbXBhdF9wZm5fdG9fY3IzKHBmbikg KCgodW5zaWduZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCj4gICNk ZWZpbmUgY29tcGF0X2NyM190b19wZm4oY3IzKSAoKCh1bnNpZ25lZCkoY3IzKSA+PiAxMikgfCAo KHVuc2lnbmVkKShjcjMpIDw8IDIwKSkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBpbmRleCAwMTU3NTY4YmU5Li4w N2I3ZWM2ZGIwIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICBzdGF0aWMgaW5s aW5lIGdmbl90IG1mbl90b19nZm4oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuKQo+ ICB7Cj4gICAgICBpZiAoIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApCj4gLSAgICAgICAgcmV0 dXJuIF9nZm4oZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSkpOwo+ICsgICAgICAgIHJldHVy biBfZ2ZuKGdldF9wZm5fZnJvbV9tZm4obWZuKSk7Cj4gICAgICBlbHNlCj4gICAgICAgICAgcmV0 dXJuIF9nZm4obWZuX3gobWZuKSk7Cj4gIH0KPiAtLQo+IDIuMTEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 515E3C004C9 for ; Tue, 7 May 2019 20:28:12 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0BD2D20578 for ; Tue, 7 May 2019 20:28:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=tklengyel.com header.i=@tklengyel.com header.b="bQl6Yusz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0BD2D20578 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tklengyel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hO6gp-0005ri-3Z; Tue, 07 May 2019 20:27:51 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hO6go-0005rd-0L for xen-devel@lists.xenproject.org; Tue, 07 May 2019 20:27:50 +0000 X-Inumbo-ID: 9394101e-7106-11e9-843c-bc764e045a96 Received: from rs224.mailgun.us (unknown [209.61.151.224]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 9394101e-7106-11e9-843c-bc764e045a96; Tue, 07 May 2019 20:27:47 +0000 (UTC) DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=tklengyel.com; q=dns/txt; s=krs; t=1557260867; h=Content-Type: Cc: To: Subject: Message-ID: Date: From: In-Reply-To: References: MIME-Version: Sender; bh=qWasJztVH0dPJUQsBLZrxjlTR4b4HC0FOZ9ujDme8Fo=; b=bQl6Yusz6DvnrXxmACnD6n8ayL7pezDjk5V9ZdKzddcwmHfjxVFhHFI/cZmGfazy3mVECqca dd0aHD9auOSiMdHjUpQutPIdpBBs/T7O0jGm5Z2Xw9FpW2DIElYpg55zMFEymOTdNy0a3SK2 0+MBM/wmnkJdZ9SVMnYt8zl4vs8= X-Mailgun-Sending-Ip: 209.61.151.224 X-Mailgun-Sid: WyIyYTNmOCIsICJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmciLCAiY2Q4NDAiXQ== Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by mxa.mailgun.org with ESMTP id 5cd1ea42.7efc3c5ac070-smtp-out-n03; Tue, 07 May 2019 20:27:46 -0000 (UTC) Received: by mail-wm1-f48.google.com with SMTP id y197so249673wmd.0 for ; Tue, 07 May 2019 13:27:46 -0700 (PDT) X-Gm-Message-State: APjAAAWBxhFGkYu3t1pQj+3up3TBSL4BYwuAj7lcE6i0FHZKK6vjYN3K jz3K0Qp4PCtGbMOPSbyL+0EEXLy36Hc/4vU5lrY= X-Google-Smtp-Source: APXvYqx1vnHDFW694zTkhB8YShUId/XbJD36Q2sydMOp3P1z8hAoek8jFBe+9mGVDKFD1w6IFRc0gUoMXddHgtyvURo= X-Received: by 2002:a7b:cb4e:: with SMTP id v14mr196071wmj.52.1557260865153; Tue, 07 May 2019 13:27:45 -0700 (PDT) MIME-Version: 1.0 References: <20190507151458.29350-1-julien.grall@arm.com> <20190507151458.29350-14-julien.grall@arm.com> In-Reply-To: <20190507151458.29350-14-julien.grall@arm.com> From: Tamas K Lengyel Date: Tue, 7 May 2019 14:27:08 -0600 X-Gmail-Original-Message-ID: Message-ID: To: Julien Grall Subject: Re: [Xen-devel] [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() to use typesafe MFN X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Xen-devel , =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190507202708.WF6yPV8aQ_eOtj1Y4sbakTCCZCuV5e9tX_s2SG3Sd0U@z> T24gVHVlLCBNYXkgNywgMjAxOSBhdCA5OjE1IEFNIEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+IHdyb3RlOgo+Cj4gVGhlIGZpcnN0IHBhcmFtZXRlciBvZiB7cyxnfWV0X2dwZm5f ZnJvbV9tZm4oKSBpcyBhbiBNRk4sIHNvIGl0IGNhbiBiZQo+IHN3aXRjaGVkIHRvIHVzZSB0aGUg dHlwZXNhZmUuCj4KPiBBdCB0aGUgc2FtZSB0aW1lLCByZXBsYWNlIGdwZm4gd2l0aCBwZm4gaW4g dGhlIGhlbHBlcnMgYXMgdGhleSBhbGwgZGVhbAo+IHdpdGggUEZOIGFuZCBhbHNvIHR1cm4gdGhl IG1hY3JvcyB0byBzdGF0aWMgaW5saW5lLgo+Cj4gTm90ZSB0aGF0IHRoZSByZXR1cm4gb2YgdGhl IGdldHRlciBhbmQgdGhlIDJuZCBwYXJhbWV0ZXIgb2YgdGhlIHNldHRlcgo+IGhhdmUgbm90IGJl ZW4gY29udmVydGVkIHRvIHVzZSB0eXBlc2FmZSBQRk4gYmVjYXVzZSBpdCB3YXMgcmVxdWlyaW5n Cj4gbW9yZSBjaGFuZ2VzIHRoYW4gZXhwZWN0ZWQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4g R3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgoKRm9yIHRoZSBtZW1fc2hhcmluZyBiaXRzOgpB Y2tlZC1ieTogVGFtYXMgSyBMZW5neWVsIDx0YW1hc0B0a2xlbmd5ZWwuY29tPgoKPiAtLS0KPiAg ICAgQ2hhbmdlcyBpbiB2MjoKPiAgICAgICAgIC0gUGF0Y2ggYWRkZWQKPiAtLS0KPiAgeGVuL2Fy Y2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYyB8ICAyICstCj4gIHhlbi9hcmNoL3g4Ni9tbS5j ICAgICAgICAgICAgICAgICAgfCAxNCArKysrLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vbWVtX3No YXJpbmcuYyAgICAgIHwgMTkgKysrKystLS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3AybS1wb2Qu YyAgICAgICAgICB8ICA0ICstLQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICAg IHwgMzcgKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAg ICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICB4 ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMgICAgICAgICAgIHwgIDQgKy0tCj4gIHhlbi9hcmNoL3g4 Ni9wdi9kb20wX2J1aWxkLmMgICAgICAgfCAgNiArKy0tCj4gIHhlbi9hcmNoL3g4Ni94ODZfNjQv dHJhcHMuYyAgICAgICAgfCA0MSArKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICB4ZW4vY29tbW9u L21lbW9yeS5jICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgeGVuL2NvbW1vbi9wYWdlX2FsbG9j LmMgICAgICAgICAgICB8ICAyICstCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vbW0uaCAgICAgICAg ICAgfCAgMiArLQo+ICB4ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmggIHwgIDIgKy0K PiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICAgICB8IDE2ICsrKysrLS0tLQo+ICB4 ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAgICAgICAgIHwgIDIgKy0KPiAgMTUgZmlsZXMgY2hh bmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDEwNiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jIGIveGVuL2FyY2gveDg2L2NwdS9t Y2hlY2svbWNhY3Rpb24uYwo+IGluZGV4IDY5MzMyZmI4NGQuLjVlNzhmYjc3MDMgMTAwNjQ0Cj4g LS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNhY3Rpb24uYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMKPiBAQCAtODksNyArODksNyBAQCBtY19tZW1lcnJf ZGhhbmRsZXIoc3RydWN0IG1jYV9iaW5mbyAqYmluZm8sCj4gICAgICAgICAgICAgIHsKPiAgICAg ICAgICAgICAgICAgIGQgPSBnZXRfZG9tYWluX2J5X2lkKGJhbmstPm1jX2RvbWlkKTsKPiAgICAg ICAgICAgICAgICAgIEFTU0VSVChkKTsKPiAtICAgICAgICAgICAgICAgIGdmbiA9IGdldF9ncGZu X2Zyb21fbWZuKChiYW5rLT5tY19hZGRyKSA+PiBQQUdFX1NISUZUKTsKPiArICAgICAgICAgICAg ICAgIGdmbiA9IGdldF9wZm5fZnJvbV9tZm4obWFkZHJfdG9fbWZuKGJhbmstPm1jX2FkZHIpKTsK Pgo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bm1tYXBfYnJva2VuX3BhZ2UoZCwgbWZuLCBnZm4p ICkKPiAgICAgICAgICAgICAgICAgIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMg Yi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IDdkODg3ZjI2OTkuLjYwYzQ3NTgyYmUgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBA IC01MDIsNyArNTAyLDcgQEAgdm9pZCBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KHN0cnVjdCBw YWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21haW4gKmQsCj4gICAgICBpZiAoIHBhZ2VfZ2V0X293 bmVyKHBhZ2UpID09IGQgKQo+ICAgICAgICAgIHJldHVybjsKPgo+IC0gICAgc2V0X2dwZm5fZnJv bV9tZm4obWZuX3gocGFnZV90b19tZm4ocGFnZSkpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAg ICBzZXRfcGZuX2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBJTlZBTElEX00yUF9FTlRSWSk7 Cj4KPiAgICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPgo+IEBAIC0xMDc3LDcg KzEwNzcsNyBAQCBnZXRfcGFnZV9mcm9tX2wxZSgKPgo+ICAgICAgICAgICAgICBnZHByaW50ayhY RU5MT0dfV0FSTklORywgIkVycm9yIHVwZGF0aW5nIG1hcHBpbmdzIGZvciBtZm4gJSIgUFJJX21m bgo+ICAgICAgICAgICAgICAgICAgICAgICAiIChwZm4gJSIgUFJJX3BmbiAiLCBmcm9tIEwxIGVu dHJ5ICUiIFBSSXB0ZSAiKSBmb3IgZCVkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICBtZm4s IGdldF9ncGZuX2Zyb21fbWZuKG1mbiksCj4gKyAgICAgICAgICAgICAgICAgICAgIG1mbiwgZ2V0 X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAgICAgICAgICAgICAgICAgICAgICBsMWVfZ2V0 X2ludHB0ZShsMWUpLCBsMWVfb3duZXItPmRvbWFpbl9pZCk7Cj4gICAgICAgICAgICAgIHJldHVy biBlcnI7Cj4gICAgICAgICAgfQo+IEBAIC0xMDg4LDcgKzEwODgsNyBAQCBnZXRfcGFnZV9mcm9t X2wxZSgKPiAgIGNvdWxkX25vdF9waW46Cj4gICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg IkVycm9yIGdldHRpbmcgbWZuICUiIFBSSV9tZm4gIiAocGZuICUiIFBSSV9wZm4KPiAgICAgICAg ICAgICAgICIpIGZyb20gTDEgZW50cnkgJSIgUFJJcHRlICIgZm9yIGwxZV9vd25lciBkJWQsIHBn X293bmVyIGQlZFxuIiwKPiAtICAgICAgICAgICAgIG1mbiwgZ2V0X2dwZm5fZnJvbV9tZm4obWZu KSwKPiArICAgICAgICAgICAgIG1mbiwgZ2V0X3Bmbl9mcm9tX21mbihfbWZuKG1mbikpLAo+ICAg ICAgICAgICAgICAgbDFlX2dldF9pbnRwdGUobDFlKSwgbDFlX293bmVyLT5kb21haW5faWQsIHBn X293bmVyLT5kb21haW5faWQpOwo+ICAgICAgaWYgKCByZWFsX3BnX293bmVyICE9IE5VTEwgKQo+ ICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+IEBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdGF0aWMg aW50IGFsbG9jX3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25n IHR5cGUsCj4gICAgICAgICAgICAgICAgICAgIiAocGZuICUiIFBSSV9wZm4gIikgZm9yIHR5cGUg JSIgUFJ0eXBlX2luZm8KPiAgICAgICAgICAgICAgICAgICAiOiBjYWY9JTA4bHggdGFmPSUiIFBS dHlwZV9pbmZvICJcbiIsCj4gICAgICAgICAgICAgICAgICAgbWZuX3gocGFnZV90b19tZm4ocGFn ZSkpLAo+IC0gICAgICAgICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KHBhZ2VfdG9f bWZuKHBhZ2UpKSksCj4gKyAgICAgICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3Rv X21mbihwYWdlKSksCj4gICAgICAgICAgICAgICAgICAgdHlwZSwgcGFnZS0+Y291bnRfaW5mbywg cGFnZS0+dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgIGlmICggcGFnZSAhPSBjdXJyZW50 LT5hcmNoLm9sZF9ndWVzdF90YWJsZSApCj4gICAgICAgICAgICAgIHBhZ2UtPnUuaW51c2UudHlw ZV9pbmZvID0gMDsKPiBAQCAtMjg5MCw3ICsyODkwLDcgQEAgc3RhdGljIGludCBfZ2V0X3BhZ2Vf dHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5cGUsCj4gICAgICAg ICAgICAgICAgICAgICAgICJCYWQgdHlwZSAoc2F3ICUiIFBSdHlwZV9pbmZvICIgIT0gZXhwICUi IFBSdHlwZV9pbmZvICIpICIKPiAgICAgICAgICAgICAgICAgICAgICAgImZvciBtZm4gJSIgUFJJ X21mbiAiIChwZm4gJSIgUFJJX3BmbiAiKVxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgeCwg dHlwZSwgbWZuX3gocGFnZV90b19tZm4ocGFnZSkpLAo+IC0gICAgICAgICAgICAgICAgICAgICBn ZXRfZ3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSkpKTsKPiArICAgICAgICAg ICAgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihwYWdlX3RvX21mbihwYWdlKSkpOwo+ICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZSBpZiAo IHVubGlrZWx5KCEoeCAmIFBHVF92YWxpZGF0ZWQpKSApCj4gQEAgLTQwMDIsNyArNDAwMiw3IEBA IGxvbmcgZG9fbW11X3VwZGF0ZSgKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAg ICAgICB9Cj4KPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSwgZ3Bm bik7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBncGZuKTsKPiAgICAgICAg ICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KHBnX293bmVyLCBfcGZuKGdwZm4pKTsKPgo+ICAg ICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiBAQCAtNDUyOSw3ICs0NTI5LDcgQEAgaW50IHhl bm1lbV9hZGRfdG9fcGh5c21hcF9vbmUoCj4gICAgICAgICAgZ290byBwdXRfYm90aDsKPgo+ICAg ICAgLyogVW5tYXAgZnJvbSBvbGQgbG9jYXRpb24sIGlmIGFueS4gKi8KPiAtICAgIG9sZF9ncGZu ID0gZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSk7Cj4gKyAgICBvbGRfZ3BmbiA9IGdldF9w Zm5fZnJvbV9tZm4obWZuKTsKPiAgICAgIEFTU0VSVCghU0hBUkVEX00yUChvbGRfZ3BmbikpOwo+ ICAgICAgaWYgKCBzcGFjZSA9PSBYRU5NQVBTUEFDRV9nbWZuICYmIG9sZF9ncGZuICE9IGdmbiAp Cj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jIGIv eGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBpbmRleCA1YWM5ZDhmNTRjLi5hZjkwM2Mx MWU5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCj4gKysrIGIv eGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKPiBAQCAtMzkxLDExICszOTEsMTIgQEAgc3Rh dGljIGlubGluZSB2b2lkIG1lbV9zaGFyaW5nX2dmbl9kZXN0cm95KHN0cnVjdCBwYWdlX2luZm8g KnBhZ2UsCj4gICAgICB4ZnJlZShnZm5faW5mbyk7Cj4gIH0KPgo+IC1zdGF0aWMgc3RydWN0IHBh Z2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKHVuc2lnbmVkIGxvbmcgbWZuKQo+ICtzdGF0aWMg c3RydWN0IHBhZ2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKG1mbl90IG1mbikKPiAgewo+IC0g ICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92YWxpZChtZm4p ICkKPiAgICAgIHsKPiAtICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvKiBwYWdlID0gbWZuX3RvX3Bh Z2UoX21mbihtZm4pKTsKPiArICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvKiBwYWdlID0gbWZuX3Rv X3BhZ2UobWZuKTsKPiArCj4gICAgICAgICAgaWYgKCBwYWdlX2dldF9vd25lcihwYWdlKSA9PSBk b21fY293ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIC8qIENvdW50IGhhcyB0byBiZSBh dCBsZWFzdCB0d28sIGJlY2F1c2Ugd2UncmUgY2FsbGVkCj4gQEAgLTQwNCw3ICs0MDUsNyBAQCBz dGF0aWMgc3RydWN0IHBhZ2VfaW5mbyogbWVtX3NoYXJpbmdfbG9va3VwKHVuc2lnbmVkIGxvbmcg bWZuKQo+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHQgPSByZWFkX2F0b21pYygmcGFnZS0+ dS5pbnVzZS50eXBlX2luZm8pOwo+ICAgICAgICAgICAgICBBU1NFUlQoKHQgJiBQR1RfdHlwZV9t YXNrKSA9PSBQR1Rfc2hhcmVkX3BhZ2UpOwo+ICAgICAgICAgICAgICBBU1NFUlQoKHQgJiBQR1Rf Y291bnRfbWFzaykgPj0gMik7Cj4gLSAgICAgICAgICAgIEFTU0VSVChTSEFSRURfTTJQKGdldF9n cGZuX2Zyb21fbWZuKG1mbikpKTsKPiArICAgICAgICAgICAgQVNTRVJUKFNIQVJFRF9NMlAoZ2V0 X3Bmbl9mcm9tX21mbihtZm4pKSk7Cj4gICAgICAgICAgICAgIHJldHVybiBwYWdlOwo+ICAgICAg ICAgIH0KPiAgICAgIH0KPiBAQCAtNDY0LDEwICs0NjUsMTAgQEAgc3RhdGljIGludCBhdWRpdCh2 b2lkKQo+ICAgICAgICAgIH0KPgo+ICAgICAgICAgIC8qIENoZWNrIHRoZSBtMnAgZW50cnkgKi8K PiAtICAgICAgICBpZiAoICFTSEFSRURfTTJQKGdldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbikp KSApCj4gKyAgICAgICAgaWYgKCAhU0hBUkVEX00yUChnZXRfcGZuX2Zyb21fbWZuKG1mbikpICkK PiAgICAgICAgICB7Cj4gICAgICAgICAgICAgTUVNX1NIQVJJTkdfREVCVUcoIm1mbiAlbHggc2hh cmVkLCBidXQgd3JvbmcgbTJwIGVudHJ5ICglbHgpIVxuIiwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtZm5feChtZm4pLCBnZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pKSk7Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSwgZ2V0X3Bmbl9mcm9tX21m bihtZm4pKTsKPiAgICAgICAgICAgICBlcnJvcnMrKzsKPiAgICAgICAgICB9Cj4KPiBAQCAtNjkz LDcgKzY5NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2VfaW5mbyAqX19ncmFiX3NoYXJl ZF9wYWdlKG1mbl90IG1mbikKPiAgICAgIGlmICggIW1lbV9zaGFyaW5nX3BhZ2VfbG9jayhwZykg KQo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+Cj4gLSAgICBpZiAoIG1lbV9zaGFyaW5nX2xvb2t1 cChtZm5feChtZm4pKSA9PSBOVUxMICkKPiArICAgIGlmICggbWVtX3NoYXJpbmdfbG9va3VwKG1m bikgPT0gTlVMTCApCj4gICAgICB7Cj4gICAgICAgICAgbWVtX3NoYXJpbmdfcGFnZV91bmxvY2so cGcpOwo+ICAgICAgICAgIHJldHVybiBOVUxMOwo+IEBAIC04NzcsNyArODc4LDcgQEAgc3RhdGlj IGludCBub21pbmF0ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKPiAgICAgIGF0 b21pY19pbmMoJm5yX3NoYXJlZF9tZm5zKTsKPgo+ICAgICAgLyogVXBkYXRlIG0ycCBlbnRyeSB0 byBTSEFSRURfTTJQX0VOVFJZICovCj4gLSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4p LCBTSEFSRURfTTJQX0VOVFJZKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBTSEFSRURf TTJQX0VOVFJZKTsKPgo+ICAgICAgKnBoYW5kbGUgPSBwYWdlLT5zaGFyaW5nLT5oYW5kbGU7Cj4g ICAgICBhdWRpdF9hZGRfbGlzdChwYWdlKTsKPiBAQCAtMTIyMiw3ICsxMjIzLDcgQEAgcHJpdmF0 ZV9wYWdlX2ZvdW5kOgo+ICAgICAgfQo+Cj4gICAgICAvKiBVcGRhdGUgbTJwIGVudHJ5ICovCj4g LSAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChwYWdlX3RvX21mbihwYWdlKSksIGdmbik7Cj4g KyAgICBzZXRfcGZuX2Zyb21fbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpLCBnZm4pOwo+Cj4gICAgICAv KiBOb3cgdGhhdCB0aGUgZ2ZuPC0+bWZuIG1hcCBpcyBwcm9wZXJseSBlc3RhYmxpc2hlZCwKPiAg ICAgICAqIG1hcmtpbmcgZGlydHkgaXMgZmVhc2libGUgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiBpbmRleCA0 MzEzODYzMDY2Li45ZTAwMTczOGY0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cG9kLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gQEAgLTY1Miw3ICs2NTIs NyBAQCBwMm1fcG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsIGdmbl90 IGdmbiwgdW5zaWduZWQgaW50IG9yZGVyKQo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAg IHAybV90bGJfZmx1c2hfc3luYyhwMm0pOwo+ICAgICAgICAgICAgICBmb3IgKCBqID0gMDsgaiA8 IG47ICsraiApCj4gLSAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4p LCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgICAgICBzZXRfcGZuX2Zyb21fbWZu KG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgICAgICBwMm1fcG9kX2NhY2hlX2Fk ZChwMm0sIHBhZ2UsIGN1cl9vcmRlcik7Cj4KPiAgICAgICAgICAgICAgc3RlYWxfZm9yX2NhY2hl ID0gICggcDJtLT5wb2QuZW50cnlfY291bnQgPiBwMm0tPnBvZC5jb3VudCApOwo+IEBAIC0xMjAz LDcgKzEyMDMsNyBAQCBwMm1fcG9kX2RlbWFuZF9wb3B1bGF0ZShzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLCBnZm5fdCBnZm4sCj4KPiAgICAgIGZvciggaSA9IDA7IGkgPCAoMVVMIDw8IG9yZGVyKTsg aSsrICkKPiAgICAgIHsKPiAtICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm4pICsg aSwgZ2ZuX3goZ2ZuX2FsaWduZWQpICsgaSk7Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9tX21mbiht Zm5fYWRkKG1mbiwgaSksIGdmbl94KGdmbl9hbGlnbmVkKSArIGkpOwo+ICAgICAgICAgIHBhZ2lu Z19tYXJrX3Bmbl9kaXJ0eShkLCBfcGZuKGdmbl94KGdmbl9hbGlnbmVkKSArIGkpKTsKPiAgICAg IH0KPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXB0LmMKPiBpbmRleCBjYWZjOWYyOTliLi4wZTg1ODE5ZjliIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t cHQuYwo+IEBAIC05OTEsNyArOTkxLDggQEAgc3RhdGljIGludCBwMm1fcHRfY2hhbmdlX2VudHJ5 X3R5cGVfcmFuZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwKPiAgbG9uZyBwMm1fcHRfYXVkaXRf cDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gIHsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZW50 cnlfY291bnQgPSAwLCBwbWJhZCA9IDA7Cj4gLSAgICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuLCBt MnBmbjsKPiArICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtMnBmbjsKPiArICAgIG1mbl90IG1mbjsK Pgo+ICAgICAgQVNTRVJUKHAybV9sb2NrZWRfYnlfbWUocDJtKSk7Cj4gICAgICBBU1NFUlQocG9k X2xvY2tlZF9ieV9tZShwMm0pKTsKPiBAQCAtMTAzMCwxOSArMTAzMSwxOSBAQCBsb25nIHAybV9w dF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21haW4gKnAybSkKPiAgICAgICAgICAgICAgICAgIC8q IGNoZWNrIGZvciAxR0Igc3VwZXIgcGFnZSAqLwo+ICAgICAgICAgICAgICAgICAgaWYgKCBsM2Vf Z2V0X2ZsYWdzKGwzZVtpM10pICYgX1BBR0VfUFNFICkKPiAgICAgICAgICAgICAgICAgIHsKPiAt ICAgICAgICAgICAgICAgICAgICBtZm4gPSBsM2VfZ2V0X3BmbihsM2VbaTNdKTsKPiAtICAgICAg ICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKF9tZm4obWZuKSkpOwo+ICsgICAgICAgICAg ICAgICAgICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwzZVtpM10pOwo+ICsgICAgICAgICAgICAgICAg ICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgLyogd2Ug aGF2ZSB0byBjb3ZlciA1MTJ4NTEyIDRLIHBhZ2VzICovCj4gICAgICAgICAgICAgICAgICAgICAg Zm9yICggaTIgPSAwOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyIDwgKEwyX1BBR0VU QUJMRV9FTlRSSUVTICogTDFfUEFHRVRBQkxFX0VOVFJJRVMpOwo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGkyKyspCj4gICAgICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAg ICAgICAgICAgICBtMnBmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1mbitpMik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIG0ycGZuID0gZ2V0X3Bmbl9mcm9tX21mbihtZm5fYWRkKG1mbiwgaTIp KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtMnBmbiAhPSAoZ2ZuICsgaTIpICkK PiAgICAgICAgICAgICAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcG1iYWQrKzsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAyTV9QUklOVEsoIm1p c21hdGNoOiBnZm4gJSNseCAtPiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAtPiBnZm4gJSNseFxuIiwgZ2ZuK2kyLCBtZm4raTIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4g bWZuICUiUFJJX21mbiIgZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdmbiArIGkyLCBtZm5feChtZm5fYWRkKG1mbiwgaTIpKSwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4pOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiBAQCAt MTA2NywxNyArMTA2OCwxNyBAQCBsb25nIHAybV9wdF9hdWRpdF9wMm0oc3RydWN0IHAybV9kb21h aW4gKnAybSkKPiAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBmb3Igc3VwZXIgcGFnZSAq Lwo+ICAgICAgICAgICAgICAgICAgICAgIGlmICggbDJlX2dldF9mbGFncyhsMmVbaTJdKSAmIF9Q QUdFX1BTRSApCj4gICAgICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAg ICAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmVbaTJdKTsKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgQVNTRVJUKG1mbl92YWxpZChfbWZuKG1mbikpKTsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgbWZuID0gbDJlX2dldF9tZm4obDJlW2kyXSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg IEFTU0VSVChtZm5fdmFsaWQobWZuKSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo IGkxID0gMDsgaTEgPCBMMV9QQUdFVEFCTEVfRU5UUklFUzsgaTErKykKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJwZm4gPSBnZXRf Z3Bmbl9mcm9tX21mbihtZm4raTEpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTJw Zm4gPSBnZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpMSkpOwo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogQWxsb3cgc2hhcmVkIE0yUHMgKi8KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICggKG0ycGZuICE9IChnZm4gKyBpMSkpICYmICFTSEFSRURfTTJQKG0y cGZuKSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG1iYWQrKzsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdmbiAlI2x4XG4iLCBn Zm4raTEsIG1mbitpMSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJ TlRLKCJtaXNtYXRjaDogZ2ZuICUjbHggLT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gKyBpMSwg bWZuX3gobWZuX2FkZChtZm4sIGkxKSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtMnBmbik7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gQEAgLTEwOTksMTkgKzEx MDAsMTkgQEAgbG9uZyBwMm1fcHRfYXVkaXRfcDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfY291bnQrKzsKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgICAgICAgICAgICAgICAg ICB9Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwxZV9nZXRfcGZuKGwxZVtpMV0p Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKF9tZm4obWZuKSkp Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1m bik7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIG1mbiA9IGwxZV9nZXRfbWZuKGwxZVtpMV0p Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbikpOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBtMnBmbiA9IGdldF9wZm5fZnJvbV9tZm4obWZuKTsKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtMnBmbiAhPSBnZm4gJiYKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlICE9IHAybV9tbWlvX2RpcmVjdCAmJgo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICFwMm1faXNfZ3JhbnQodHlwZSkgJiYKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhcDJtX2lzX3NoYXJlZCh0eXBlKSApCj4gICAgICAgICAgICAg ICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtYmFkKys7Cj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIm1pc21hdGNoOiBnZm4gJSNseCAt PiBtZm4gJSNseCIKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdm biAlI2x4XG4iLCBnZm4sIG1mbiwgbTJwZm4pOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgUDJNX1BSSU5USygibWlzbWF0Y2g6IGdmbiAlI2x4IC0+IG1mbiAlI2x4Igo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+IGdmbiAlI2x4XG4iLCBnZm4sIG1m biwgbTJwZm4pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKCJtaXNtYXRj aDogZ2ZuICUjbHggLT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuLCBtZm5feChtZm4pLCBtMnBmbik7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQMk1fUFJJTlRLKCJtaXNtYXRjaDogZ2ZuICUjbHgg LT4gbWZuICUiUFJJX21mbiIgLT4gZ2ZuICUjbHhcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdmbiwgbWZuX3gobWZuKSwgbTJwZm4pOwo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQlVHKCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiAg ICAgICAgICAgICAgICAgICAgICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0u YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+IGluZGV4IDNjOThmNzJkYmIuLjAwM2VkOTc1MjEg MTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCj4gKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS5jCj4gQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihz dHJ1Y3QgZG9tYWluICpkKQo+Cj4KPiAgc3RhdGljIGludAo+IC1wMm1fcmVtb3ZlX3BhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBt Zm4sCj4gK3AybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBs b25nIGdmbl9sLCBtZm5fdCBtZm4sCj4gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFn ZV9vcmRlcikKPiAgewo+ICAgICAgdW5zaWduZWQgbG9uZyBpOwo+IEBAIC03ODMsMTcgKzc4Mywx NyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCj4gICAgICAgICAgcmV0dXJuIDA7Cj4KPiAgICAg IEFTU0VSVChnZm5fbG9ja2VkX2J5X21lKHAybSwgZ2ZuKSk7Cj4gLSAgICBQMk1fREVCVUcoInJl bW92aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5fbCwgbWZuKTsKPiArICAgIFAyTV9ERUJV RygicmVtb3ZpbmcgZ2ZuPSUjbHggbWZuPSUiUFJJX21mbiJcbiIsIGdmbl9sLCBtZm5feChtZm4p KTsKPgo+IC0gICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCj4gKyAgICBpZiAoIG1mbl92 YWxpZChtZm4pICkKPiAgICAgIHsKPiAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwg cGFnZV9vcmRlcik7IGkrKyApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBtZm5fcmV0dXJu ID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwgMCwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwo+ICAgICAg ICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAy bV9pc19mb3JlaWduKHQpICkKPiAtICAgICAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1m bitpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gLSAgICAgICAgICAgIEFTU0VSVCggIXAybV9pc192 YWxpZCh0KSB8fCBtZm4gKyBpID09IG1mbl94KG1mbl9yZXR1cm4pICk7Cj4gKyAgICAgICAgICAg ICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkp Owo+ICsgICAgICAgICAgICBBU1NFUlQoICFwMm1faXNfdmFsaWQodCkgfHwgbWZuX2VxKG1mbl9h ZGQobWZuLCBpKSwgbWZuX3JldHVybikgKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBy ZXR1cm4gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAy bV9pbnZhbGlkLAo+IEBAIC04MDcsNyArODA3LDcgQEAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCj4gICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwo+ICAgICAgaW50IHJjOwo+ICAgICAgZ2ZuX2xvY2so cDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOwo+IC0gICAgcmMgPSBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBn Zm5feChnZm4pLCBtZm5feChtZm4pLCBwYWdlX29yZGVyKTsKPiArICAgIHJjID0gcDJtX3JlbW92 ZV9wYWdlKHAybSwgZ2ZuX3goZ2ZuKSwgbWZuLCBwYWdlX29yZGVyKTsKPiAgICAgIGdmbl91bmxv Y2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOwo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gQEAgLTkw OCw3ICs5MDgsNyBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBn Zm5fdCBnZm4sIG1mbl90IG1mbiwKPiAgICAgICAgICBlbHNlIGlmICggcDJtX2lzX3JhbShvdCkg JiYgIXAybV9pc19wYWdlZChvdCkgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgQVNTRVJU KG1mbl92YWxpZChvbWZuKSk7Cj4gLSAgICAgICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94 KG9tZm4pLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9t Zm4ob21mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNl IGlmICggb3QgPT0gcDJtX3BvcHVsYXRlX29uX2RlbWFuZCApCj4gICAgICAgICAgewo+IEBAIC05 NTEsNyArOTUxLDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwg Z2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAgICAgICAgICAgICAgICBQMk1fREVCVUcoIm9sZCBn Zm49JSNseCAtPiBtZm4gJSNseFxuIiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5f eChvZ2ZuKSAsIG1mbl94KG9tZm4pKTsKPiAgICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9t Zm4sIG1mbl9hZGQobWZuLCBpKSkgKQo+IC0gICAgICAgICAgICAgICAgICAgIHAybV9yZW1vdmVf cGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChtZm5fYWRkKG1mbiwgaSkpLAo+ICsgICAgICAg ICAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5fYWRkKG1m biwgaSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgfQo+IEBAIC05NjgsOCArOTY4LDggQEAgZ3Vlc3RfcGh5c21h cF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCj4gICAg ICAgICAgaWYgKCAhcDJtX2lzX2dyYW50KHQpICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAg IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKPiAtICAgICAgICAg ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbl9hZGQobWZuLCBpKSksCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAr ICAgICAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4obWZuX2FkZChtZm4sIGkpLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKPiAg ICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBlbHNlCj4gQEAgLTEyNzIsNyArMTI3Miw3IEBAIHN0 YXRpYyBpbnQgc2V0X3R5cGVkX3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGdmbl9sLAo+ICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBvcmRlcik7ICsr aSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbl9hZGQo b21mbiwgaSkpKTsKPiAtICAgICAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gob21mbikg KyBpLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4gKyAgICAgICAgICAgIHNldF9wZm5fZnJvbV9tZm4o bWZuX2FkZChvbWZuLCBpKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAg IH0KPgo+IEBAIC0xNDY3LDcgKzE0NjcsNyBAQCBpbnQgc2V0X3NoYXJlZF9wMm1fZW50cnkoc3Ry dWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwgbWZuX3QgbWZuKQo+ICAgICAgcGdf dHlwZSA9IHJlYWRfYXRvbWljKCYobWZuX3RvX3BhZ2Uob21mbiktPnUuaW51c2UudHlwZV9pbmZv KSk7Cj4gICAgICBpZiAoIChwZ190eXBlICYgUEdUX2NvdW50X21hc2spID09IDAKPiAgICAgICAg ICAgfHwgKHBnX3R5cGUgJiBQR1RfdHlwZV9tYXNrKSAhPSBQR1Rfc2hhcmVkX3BhZ2UgKQo+IC0g ICAgICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG9tZm4pLCBJTlZBTElEX00yUF9FTlRSWSk7 Cj4gKyAgICAgICAgc2V0X3Bmbl9mcm9tX21mbihvbWZuLCBJTlZBTElEX00yUF9FTlRSWSk7Cj4K PiAgICAgIFAyTV9ERUJVRygic2V0IHNoYXJlZCAlbHggJWx4XG4iLCBnZm5fbCwgbWZuX3gobWZu KSk7Cj4gICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIG1mbiwgUEFHRV9PUkRFUl80 SywgcDJtX3JhbV9zaGFyZWQsCj4gQEAgLTE4MjEsNyArMTgyMSw3IEBAIGludCBwMm1fbWVtX3Bh Z2luZ19wcmVwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIHVpbnQ2NF90 IGJ1ZmZlcikKPiAgICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIG1mbiwgUEFHRV9P UkRFUl80SywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nX21vZGVfbG9nX2RpcnR5 KGQpID8gcDJtX3JhbV9sb2dkaXJ0eQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiBwMm1fcmFtX3J3LCBhKTsKPiAtICAgIHNldF9ncGZuX2Zyb21f bWZuKG1mbl94KG1mbiksIGdmbl9sKTsKPiArICAgIHNldF9wZm5fZnJvbV9tZm4obWZuLCBnZm5f bCk7Cj4KPiAgICAgIGlmICggIXBhZ2VfZXh0YW50ICkKPiAgICAgICAgICBhdG9taWNfZGVjKCZk LT5wYWdlZF9wYWdlcyk7Cj4gQEAgLTE4NzIsNyArMTg3Miw3IEBAIHZvaWQgcDJtX21lbV9wYWdp bmdfcmVzdW1lKHN0cnVjdCBkb21haW4gKmQsIHZtX2V2ZW50X3Jlc3BvbnNlX3QgKnJzcCkKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fcmFtX3J3LCBhKTsKPgo+ICAg ICAgICAgICAgICBpZiAoICFyYyApCj4gLSAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21m bihtZm5feChtZm4pLCBnZm5feChnZm4pKTsKPiArICAgICAgICAgICAgICAgIHNldF9wZm5fZnJv bV9tZm4obWZuLCBnZm5feChnZm4pKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZ2ZuX3VubG9j ayhwMm0sIGdmbiwgMCk7Cj4gICAgICB9Cj4gQEAgLTI2MzUsNyArMjYzNSw3IEBAIGludCBwMm1f Y2hhbmdlX2FsdHAybV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCwKPiAg ICAgIGlmICggZ2ZuX2VxKG5ld19nZm4sIElOVkFMSURfR0ZOKSApCj4gICAgICB7Cj4gICAgICAg ICAgaWYgKCBtZm5fdmFsaWQobWZuKSApCj4gLSAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShh cDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuX3gobWZuKSwgUEFHRV9PUkRFUl80Syk7Cj4gKyAgICAg ICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuLCBQQUdFX09S REVSXzRLKTsKPiAgICAgICAgICByYyA9IDA7Cj4gICAgICAgICAgZ290byBvdXQ7Cj4gICAgICB9 Cj4gQEAgLTI3NzIsOCArMjc3Miw4IEBAIHZvaWQgYXVkaXRfcDJtKHN0cnVjdCBkb21haW4gKmQs Cj4gIHsKPiAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7Cj4gICAgICBzdHJ1Y3QgZG9tYWlu ICpvZDsKPiAtICAgIHVuc2lnbmVkIGxvbmcgbWZuLCBnZm47Cj4gLSAgICBtZm5fdCBwMm1mbjsK PiArICAgIHVuc2lnbmVkIGxvbmcgZ2ZuOwo+ICsgICAgbWZuX3QgcDJtZm4sIG1mbjsKPiAgICAg IHVuc2lnbmVkIGxvbmcgb3JwaGFuc19jb3VudCA9IDAsIG1wYmFkID0gMCwgcG1iYWQgPSAwOwo+ ICAgICAgcDJtX2FjY2Vzc190IHAybWE7Cj4gICAgICBwMm1fdHlwZV90IHR5cGU7Cj4gQEAgLTI3 OTUsNTQgKzI3OTUsNTQgQEAgdm9pZCBhdWRpdF9wMm0oc3RydWN0IGRvbWFpbiAqZCwKPiAgICAg IHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsKPiAgICAgIHBhZ2VfbGlzdF9mb3JfZWFj aCAoIHBhZ2UsICZkLT5wYWdlX2xpc3QgKQo+ICAgICAgewo+IC0gICAgICAgIG1mbiA9IG1mbl94 KHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiArICAgICAgICBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsK Pgo+IC0gICAgICAgIFAyTV9QUklOVEsoImF1ZGl0aW5nIGd1ZXN0IHBhZ2UsIG1mbj0lI2x4XG4i LCBtZm4pOwo+ICsgICAgICAgIFAyTV9QUklOVEsoImF1ZGl0aW5nIGd1ZXN0IHBhZ2UsIG1mbj0l IlBSSV9tZm4iXG4iLCBtZm5feChtZm4pKTsKPgo+ICAgICAgICAgIG9kID0gcGFnZV9nZXRfb3du ZXIocGFnZSk7Cj4KPiAgICAgICAgICBpZiAoIG9kICE9IGQgKQo+ICAgICAgICAgIHsKPiAtICAg ICAgICAgICAgUDJNX1BSSU5USygid3Jvbmcgb3duZXIgJSNseCAtPiAlcCgldSkgIT0gJXAoJXUp XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIG1mbiwgb2QsIChvZD9vZC0+ZG9tYWluX2lk Oi0xKSwgZCwgZC0+ZG9tYWluX2lkKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygid3Jvbmcg b3duZXIgJSJQUklfbWZuIiAtPiAlcCgldSkgIT0gJXAoJXUpXG4iLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgIG1mbl94KG1mbiksIG9kLCAob2Q/b2QtPmRvbWFpbl9pZDotMSksIGQsIGQtPmRv bWFpbl9pZCk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+IC0gICAg ICAgIGdmbiA9IGdldF9ncGZuX2Zyb21fbWZuKG1mbik7Cj4gKyAgICAgICAgZ2ZuID0gZ2V0X3Bm bl9mcm9tX21mbihtZm4pOwo+ICAgICAgICAgIGlmICggZ2ZuID09IElOVkFMSURfTTJQX0VOVFJZ ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIG9ycGhhbnNfY291bnQrKzsKPiAtICAgICAg ICAgICAgUDJNX1BSSU5USygib3JwaGFuZWQgZ3Vlc3QgcGFnZTogbWZuPSUjbHggaGFzIGludmFs aWQgZ2ZuXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBtZm4pOwo+ICsgICAgICAg ICAgICBQMk1fUFJJTlRLKCJvcnBoYW5lZCBndWVzdCBwYWdlOiBtZm49JSJQUklfbWZuIiBoYXMg aW52YWxpZCBnZm5cbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWZuX3gobWZuKSk7Cj4g ICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+ICAgICAgICAgIGlmICggU0hB UkVEX00yUChnZm4pICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIFAyTV9QUklOVEsoInNo YXJlZCBtZm4gKCVseCkgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gLSAgICAgICAgICAgICAg ICAgICAgbWZuKTsKPiArICAgICAgICAgICAgUDJNX1BSSU5USygic2hhcmVkIG1mbiAoJSJQUklf bWZuIikgb24gZG9tYWluIHBhZ2UgbGlzdCFcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg bWZuX3gobWZuKSk7Cj4gICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICAgICAgICAgIH0KPgo+ICAg ICAgICAgIHAybWZuID0gZ2V0X2dmbl90eXBlX2FjY2VzcyhwMm0sIGdmbiwgJnR5cGUsICZwMm1h LCAwLCBOVUxMKTsKPiAtICAgICAgICBpZiAoIG1mbl94KHAybWZuKSAhPSBtZm4gKQo+ICsgICAg ICAgIGlmICggIW1mbl9lcShwMm1mbiwgbWZuKSApCj4gICAgICAgICAgewo+ICAgICAgICAgICAg ICBtcGJhZCsrOwo+IC0gICAgICAgICAgICBQMk1fUFJJTlRLKCJtYXAgbWlzbWF0Y2ggbWZuICUj bHggLT4gZ2ZuICUjbHggLT4gbWZuICUjbHgiCj4gKyAgICAgICAgICAgIFAyTV9QUklOVEsoIm1h cCBtaXNtYXRjaCBtZm4gJSJQUklfbWZuIiAtPiBnZm4gJSNseCAtPiBtZm4gJSJQUklfbWZuIiIK PiAgICAgICAgICAgICAgICAgICAgICAgICAiICgtPiBnZm4gJSNseClcbiIsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgbWZuLCBnZm4sIG1mbl94KHAybWZuKSwKPiArICAgICAgICAgICAgICAg ICAgICAgICBtZm5feChtZm4pLCBnZm4sIG1mbl94KHAybWZuKSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAobWZuX3ZhbGlkKHAybWZuKQo+IC0gICAgICAgICAgICAgICAgICAgICAgICA/IGdl dF9ncGZuX2Zyb21fbWZuKG1mbl94KHAybWZuKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAg PyBnZXRfcGZuX2Zyb21fbWZuKHAybWZuKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICA6IC0x dSkpOwo+ICAgICAgICAgICAgICAvKiBUaGlzIG0ycCBlbnRyeSBpcyBzdGFsZTogdGhlIGRvbWFp biBoYXMgYW5vdGhlciBmcmFtZSBpbgo+ICAgICAgICAgICAgICAgKiB0aGlzIHBoeXNpY2FsIHNs b3QuICBObyBncmVhdCBkaXNhc3RlciwgYnV0IGZvciBuZWF0bmVzcywKPiAgICAgICAgICAgICAg ICogYmxvdyBhd2F5IHRoZSBtMnAgZW50cnkuICovCj4gLSAgICAgICAgICAgIHNldF9ncGZuX2Zy b21fbWZuKG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICsgICAgICAgICAgICBzZXRfcGZuX2Zy b21fbWZuKG1mbiwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBf X3B1dF9nZm4ocDJtLCBnZm4pOwo+Cj4gLSAgICAgICAgUDJNX1BSSU5USygiT0s6IG1mbj0lI2x4 LCBnZm49JSNseCwgcDJtZm49JSNseFxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICBtZm4s IGdmbiwgbWZuX3gocDJtZm4pKTsKPiArICAgICAgICBQMk1fUFJJTlRLKCJPSzogbWZuPSUiUFJJ X21mbiIsIGdmbj0lI2x4LCBwMm1mbj0lIlBSSV9tZm4iXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgbWZuX3gobWZuKSwgZ2ZuLCBtZm5feChwMm1mbikpOwo+ICAgICAgfQo+ICAgICAgc3Bpbl91 bmxvY2soJmQtPnBhZ2VfYWxsb2NfbG9jayk7Cj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCj4gaW5kZXggOWIwZjI2OGU3 NC4uY2VmMmY5MDE4NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiAr KysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQg cGFnaW5nX21hcmtfZGlydHkoc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgZ21mbikKPiAgICAgICAg ICByZXR1cm47Cj4KPiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9y IG5vbi10cmFuc2xhdGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJv bV9tZm4obWZuX3goZ21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihn bWZuKSk7Cj4KPiAgICAgIHBhZ2luZ19tYXJrX3Bmbl9kaXJ0eShkLCBwZm4pOwo+ICB9Cj4gQEAg LTM2Miw3ICszNjIsNyBAQCBpbnQgcGFnaW5nX21mbl9pc19kaXJ0eShzdHJ1Y3QgZG9tYWluICpk LCBtZm5fdCBnbWZuKQo+ICAgICAgQVNTRVJUKHBhZ2luZ19tb2RlX2xvZ19kaXJ0eShkKSk7Cj4K PiAgICAgIC8qIFdlIC9yZWFsbHkvIG1lYW4gUEZOIGhlcmUsIGV2ZW4gZm9yIG5vbi10cmFuc2xh dGVkIGd1ZXN0cy4gKi8KPiAtICAgIHBmbiA9IF9wZm4oZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3go Z21mbikpKTsKPiArICAgIHBmbiA9IF9wZm4oZ2V0X3Bmbl9mcm9tX21mbihnbWZuKSk7Cj4gICAg ICAvKiBJbnZhbGlkIHBhZ2VzIGNhbid0IGJlIGRpcnR5LiAqLwo+ICAgICAgaWYgKCB1bmxpa2Vs eSghVkFMSURfTTJQKHBmbl94KHBmbikpKSApCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9wdi9kb20wX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9t MF9idWlsZC5jCj4gaW5kZXggY2VmMmQ0MjI1NC4uYjM5YWI2NzA5MiAxMDA2NDQKPiAtLS0gYS94 ZW4vYXJjaC94ODYvcHYvZG9tMF9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3B2L2RvbTBf YnVpbGQuYwo+IEBAIC0zOSw3ICszOSw3IEBAIHZvaWQgX19pbml0IGRvbTBfdXBkYXRlX3BoeXNt YXAoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCj4gICAgICBlbHNlCj4gICAg ICAgICAgKCh1bnNpZ25lZCBpbnQgKil2cGh5c21hcF9zKVtwZm5dID0gbWZuOwo+Cj4gLSAgICBz ZXRfZ3Bmbl9mcm9tX21mbihtZm4sIHBmbik7Cj4gKyAgICBzZXRfcGZuX2Zyb21fbWZuKF9tZm4o bWZuKSwgcGZuKTsKPiAgfQo+Cj4gIHN0YXRpYyBfX2luaXQgdm9pZCBtYXJrX3B2X3B0X3BhZ2Vz X3Jkb25seShzdHJ1Y3QgZG9tYWluICpkLAo+IEBAIC03OTgsOCArNzk4LDggQEAgaW50IF9faW5p dCBkb20wX2NvbnN0cnVjdF9wdihzdHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgcGFnZV9saXN0X2Zv cl9lYWNoICggcGFnZSwgJmQtPnBhZ2VfbGlzdCApCj4gICAgICB7Cj4gICAgICAgICAgbWZuID0g bWZuX3gocGFnZV90b19tZm4ocGFnZSkpOwo+IC0gICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdl dF9ncGZuX2Zyb21fbWZuKG1mbikpKTsKPiAtICAgICAgICBpZiAoIGdldF9ncGZuX2Zyb21fbWZu KG1mbikgPj0gY291bnQgKQo+ICsgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdldF9wZm5fZnJv bV9tZm4oX21mbihtZm4pKSkpOwo+ICsgICAgICAgIGlmICggZ2V0X3Bmbl9mcm9tX21mbihfbWZu KG1mbikpID49IGNvdW50ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIEJVR19PTihpc19w dl8zMmJpdF9kb21haW4oZCkpOwo+ICAgICAgICAgICAgICBpZiAoICFwYWdlLT51LmludXNlLnR5 cGVfaW5mbyAmJgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKPiBpbmRleCA0NGFmNzY1ZTNlLi5mODBmMjI1MGZl IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvdHJhcHMuYwo+IEBAIC0xODQsNyArMTg0LDggQEAgdm9pZCB2Y3B1X3No b3dfcmVnaXN0ZXJzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQo+Cj4gIHZvaWQgc2hvd19wYWdlX3dh bGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICB7Cj4gLSAgICB1bnNpZ25lZCBsb25nIHBmbiwgbWZu ID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOwo+ICsgICAgdW5zaWduZWQgbG9uZyBwZm47Cj4g KyAgICBtZm5fdCBtZm4gPSBtYWRkcl90b19tZm4ocmVhZF9jcjMoKSk7Cj4gICAgICBsNF9wZ2Vu dHJ5X3QgbDRlLCAqbDR0Owo+ICAgICAgbDNfcGdlbnRyeV90IGwzZSwgKmwzdDsKPiAgICAgIGwy X3BnZW50cnlfdCBsMmUsICpsMnQ7Cj4gQEAgLTE5NCw1MiArMTk1LDUyIEBAIHZvaWQgc2hvd19w YWdlX3dhbGsodW5zaWduZWQgbG9uZyBhZGRyKQo+ICAgICAgaWYgKCAhaXNfY2Fub25pY2FsX2Fk ZHJlc3MoYWRkcikgKQo+ICAgICAgICAgIHJldHVybjsKPgo+IC0gICAgbDR0ID0gbWFwX2RvbWFp bl9wYWdlKF9tZm4obWZuKSk7Cj4gKyAgICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKPiAg ICAgIGw0ZSA9IGw0dFtsNF90YWJsZV9vZmZzZXQoYWRkcildOwo+ICAgICAgdW5tYXBfZG9tYWlu X3BhZ2UobDR0KTsKPiAtICAgIG1mbiA9IGw0ZV9nZXRfcGZuKGw0ZSk7Cj4gLSAgICBwZm4gPSBt Zm5fdmFsaWQoX21mbihtZm4pKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxpZCA/Cj4g LSAgICAgICAgICBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4g KyAgICBtZm4gPSBsNGVfZ2V0X21mbihsNGUpOwo+ICsgICAgcGZuID0gbWZuX3ZhbGlkKG1mbikg JiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ICsgICAgICAgICAgZ2V0X3Bmbl9m cm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4gICAgICBwcmludGsoIiBMNFsweCUw M2x4XSA9ICUiUFJJcHRlIiAlMDE2bHhcbiIsCj4gICAgICAgICAgICAgbDRfdGFibGVfb2Zmc2V0 KGFkZHIpLCBsNGVfZ2V0X2ludHB0ZShsNGUpLCBwZm4pOwo+ICAgICAgaWYgKCAhKGw0ZV9nZXRf ZmxhZ3MobDRlKSAmIF9QQUdFX1BSRVNFTlQpIHx8Cj4gLSAgICAgICAgICFtZm5fdmFsaWQoX21m bihtZm4pKSApCj4gKyAgICAgICAgICFtZm5fdmFsaWQobWZuKSApCj4gICAgICAgICAgcmV0dXJu Owo+Cj4gLSAgICBsM3QgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKPiArICAgIGwzdCA9 IG1hcF9kb21haW5fcGFnZShtZm4pOwo+ICAgICAgbDNlID0gbDN0W2wzX3RhYmxlX29mZnNldChh ZGRyKV07Cj4gICAgICB1bm1hcF9kb21haW5fcGFnZShsM3QpOwo+IC0gICAgbWZuID0gbDNlX2dl dF9wZm4obDNlKTsKPiAtICAgIHBmbiA9IG1mbl92YWxpZChfbWZuKG1mbikpICYmIG1hY2hpbmVf dG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiAtICAgICAgICAgIGdldF9ncGZuX2Zyb21fbWZuKG1m bikgOiBJTlZBTElEX00yUF9FTlRSWTsKPiArICAgIG1mbiA9IGwzZV9nZXRfbWZuKGwzZSk7Cj4g KyAgICBwZm4gPSBtZm5fdmFsaWQobWZuKSAmJiBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ192YWxp ZCA/Cj4gKyAgICAgICAgICBnZXRfcGZuX2Zyb21fbWZuKG1mbikgOiBJTlZBTElEX00yUF9FTlRS WTsKPiAgICAgIHByaW50aygiIEwzWzB4JTAzbHhdID0gJSJQUklwdGUiICUwMTZseCVzXG4iLAo+ ICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldChhZGRyKSwgbDNlX2dldF9pbnRwdGUobDNlKSwg cGZuLAo+ICAgICAgICAgICAgIChsM2VfZ2V0X2ZsYWdzKGwzZSkgJiBfUEFHRV9QU0UpID8gIiAo UFNFKSIgOiAiIik7Cj4gICAgICBpZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJF U0VOVCkgfHwKPiAgICAgICAgICAgKGwzZV9nZXRfZmxhZ3MobDNlKSAmIF9QQUdFX1BTRSkgfHwK PiAtICAgICAgICAgIW1mbl92YWxpZChfbWZuKG1mbikpICkKPiArICAgICAgICAgIW1mbl92YWxp ZChtZm4pICkKPiAgICAgICAgICByZXR1cm47Cj4KPiAtICAgIGwydCA9IG1hcF9kb21haW5fcGFn ZShfbWZuKG1mbikpOwo+ICsgICAgbDJ0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7Cj4gICAgICBs MmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAgICAgIHVubWFwX2RvbWFpbl9wYWdl KGwydCk7Cj4gLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUpOwo+IC0gICAgcGZuID0gbWZuX3Zh bGlkKF9tZm4obWZuKSkgJiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+IC0gICAg ICAgICAgZ2V0X2dwZm5fZnJvbV9tZm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICsgICAg bWZuID0gbDJlX2dldF9tZm4obDJlKTsKPiArICAgIHBmbiA9IG1mbl92YWxpZChtZm4pICYmIG1h Y2hpbmVfdG9fcGh5c19tYXBwaW5nX3ZhbGlkID8KPiArICAgICAgICAgIGdldF9wZm5fZnJvbV9t Zm4obWZuKSA6IElOVkFMSURfTTJQX0VOVFJZOwo+ICAgICAgcHJpbnRrKCIgTDJbMHglMDNseF0g PSAlIlBSSXB0ZSIgJTAxNmx4JXNcbiIsCj4gICAgICAgICAgICAgbDJfdGFibGVfb2Zmc2V0KGFk ZHIpLCBsMmVfZ2V0X2ludHB0ZShsMmUpLCBwZm4sCj4gICAgICAgICAgICAgKGwyZV9nZXRfZmxh Z3MobDJlKSAmIF9QQUdFX1BTRSkgPyAiIChQU0UpIiA6ICIiKTsKPiAgICAgIGlmICggIShsMmVf Z2V0X2ZsYWdzKGwyZSkgJiBfUEFHRV9QUkVTRU5UKSB8fAo+ICAgICAgICAgICAobDJlX2dldF9m bGFncyhsMmUpICYgX1BBR0VfUFNFKSB8fAo+IC0gICAgICAgICAhbWZuX3ZhbGlkKF9tZm4obWZu KSkgKQo+ICsgICAgICAgICAhbWZuX3ZhbGlkKG1mbikgKQo+ICAgICAgICAgIHJldHVybjsKPgo+ IC0gICAgbDF0ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7Cj4gKyAgICBsMXQgPSBtYXBf ZG9tYWluX3BhZ2UobWZuKTsKPiAgICAgIGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQoYWRkcild Owo+ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDF0KTsKPiAtICAgIG1mbiA9IGwxZV9nZXRfcGZu KGwxZSk7Cj4gLSAgICBwZm4gPSBtZm5fdmFsaWQoX21mbihtZm4pKSAmJiBtYWNoaW5lX3RvX3Bo eXNfbWFwcGluZ192YWxpZCA/Cj4gLSAgICAgICAgICBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pIDog SU5WQUxJRF9NMlBfRU5UUlk7Cj4gKyAgICBtZm4gPSBsMWVfZ2V0X21mbihsMWUpOwo+ICsgICAg cGZuID0gbWZuX3ZhbGlkKG1mbikgJiYgbWFjaGluZV90b19waHlzX21hcHBpbmdfdmFsaWQgPwo+ ICsgICAgICAgICAgZ2V0X3Bmbl9mcm9tX21mbihtZm4pIDogSU5WQUxJRF9NMlBfRU5UUlk7Cj4g ICAgICBwcmludGsoIiBMMVsweCUwM2x4XSA9ICUiUFJJcHRlIiAlMDE2bHhcbiIsCj4gICAgICAg ICAgICAgbDFfdGFibGVfb2Zmc2V0KGFkZHIpLCBsMWVfZ2V0X2ludHB0ZShsMWUpLCBwZm4pOwo+ ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29tbW9uL21lbW9y eS5jCj4gaW5kZXggZDZhNTgwZGEzMS4uZWVjYzk2NzFmZiAxMDA2NDQKPiAtLS0gYS94ZW4vY29t bW9uL21lbW9yeS5jCj4gKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwo+IEBAIC0yNzMsNyArMjcz LDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVfcGh5c21hcChzdHJ1Y3QgbWVtb3BfYXJncyAqYSkK PiAgICAgICAgICAgICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkKPiAgICAgICAg ICAgICAgewo+ICAgICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCAoMVUgPDwgYS0+ZXh0 ZW50X29yZGVyKTsgaisrICkKPiAtICAgICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21m bihtZm5feChtZm5fYWRkKG1mbiwgaikpLCBncGZuICsgaik7Cj4gKyAgICAgICAgICAgICAgICAg ICAgc2V0X3Bmbl9mcm9tX21mbihtZm5fYWRkKG1mbiwgaiksIGdwZm4gKyBqKTsKPgo+ICAgICAg ICAgICAgICAgICAgLyogSW5mb3JtIHRoZSBkb21haW4gb2YgdGhlIG5ldyBwYWdlJ3MgbWFjaGlu ZSBhZGRyZXNzLiAqLwo+ICAgICAgICAgICAgICAgICAgaWYgKCB1bmxpa2VseShfX2NvcHlfbWZu X3RvX2d1ZXN0X29mZnNldChhLT5leHRlbnRfbGlzdCwgaSwKPiBkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9wYWdlX2FsbG9jLmMgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IGluZGV4IDYwNjFj Y2UyNGYuLmExMDBlMDNlMmUgMTAwNjQ0Cj4gLS0tIGEveGVuL2NvbW1vbi9wYWdlX2FsbG9jLmMK PiArKysgYi94ZW4vY29tbW9uL3BhZ2VfYWxsb2MuYwo+IEBAIC0xNDI0LDcgKzE0MjQsNyBAQCBz dGF0aWMgdm9pZCBmcmVlX2hlYXBfcGFnZXMoCj4KPiAgICAgICAgICAvKiBUaGlzIHBhZ2UgaXMg bm90IGEgZ3Vlc3QgZnJhbWUgYW55IG1vcmUuICovCj4gICAgICAgICAgcGFnZV9zZXRfb3duZXIo JnBnW2ldLCBOVUxMKTsgLyogc2V0X2dwZm5fZnJvbV9tZm4gc25vb3BzIHBnIG93bmVyICovCj4g LSAgICAgICAgc2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSArIGksIElOVkFMSURfTTJQX0VO VFJZKTsKPiArICAgICAgICBzZXRfcGZuX2Zyb21fbWZuKG1mbl9hZGQobWZuLCArIGkpLCBJTlZB TElEX00yUF9FTlRSWSk7Cj4KPiAgICAgICAgICBpZiAoIG5lZWRfc2NydWIgKQo+ICAgICAgICAg IHsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9tbS5oIGIveGVuL2luY2x1ZGUv YXNtLWFybS9tbS5oCj4gaW5kZXggYTljYjk4YTZjNy4uM2MwM2JlM2JjYSAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL21tLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL21t LmgKPiBAQCAtMzIyLDcgKzMyMiw3IEBAIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21f Z3ZhKHN0cnVjdCB2Y3B1ICp2LCB2YWRkcl90IHZhLAo+ICAjZGVmaW5lIFNIQVJFRF9NMlAoX2Up ICAgICAgICAgICAoKF9lKSA9PSBTSEFSRURfTTJQX0VOVFJZKQo+Cj4gIC8qIFdlIGRvbid0IGhh dmUgYSBNMlAgb24gQXJtICovCj4gLSNkZWZpbmUgc2V0X2dwZm5fZnJvbV9tZm4obWZuLCBwZm4p IGRvIHsgKHZvaWQpIChtZm4pLCAodm9pZCkocGZuKTsgfSB3aGlsZSAoMCkKPiArc3RhdGljIGlu bGluZSB2b2lkIHNldF9wZm5fZnJvbV9tZm4obWZuX3QgbWZuLCB1bnNpZ25lZCBsb25nIHBmbikg e30KPgo+ICAvKiBBcmNoLXNwZWNpZmljIHBvcnRpb24gb2YgbWVtb3J5X29wIGh5cGVyY2FsbC4g Ki8KPiAgbG9uZyBhcmNoX21lbW9yeV9vcChpbnQgb3AsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0o dm9pZCkgYXJnKTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJs ZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ncmFudF90YWJsZS5oCj4gaW5kZXggNjYxMjI4ZGQz OS4uZDczMWI5ZTQ5ZiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3Rh YmxlLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2dyYW50X3RhYmxlLmgKPiBAQCAtNDEs NyArNDEsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZXBsYWNlX2dyYW50X2hvc3RfbWFwcGluZyh1 aW50NjRfdCBhZGRyLCBtZm5fdCBmcmFtZSwKPiAgI2RlZmluZSBnbnR0YWJfZ2V0X2ZyYW1lX2dm bihndCwgc3QsIGlkeCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIG1m bl90IG1mbl8gPSAoc3QpID8gZ250dGFiX3N0YXR1c19tZm4oZ3QsIGlkeCkgICAgICAgICAgICAg ICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgIDogZ250dGFiX3NoYXJlZF9tZm4o Z3QsIGlkeCk7ICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAgIHVuc2lnbmVkIGxvbmcgZ3Bm bl8gPSBnZXRfZ3Bmbl9mcm9tX21mbihtZm5feChtZm5fKSk7ICAgICAgICAgICAgICAgIFwKPiAr ICAgIHVuc2lnbmVkIGxvbmcgZ3Bmbl8gPSBnZXRfcGZuX2Zyb21fbWZuKG1mbl8pOyAgICAgICAg ICAgICAgICAgICAgICAgIFwKPiAgICAgIFZBTElEX00yUChncGZuXykgPyBfZ2ZuKGdwZm5fKSA6 IElOVkFMSURfR0ZOOyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgfSkKPgo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgK PiBpbmRleCA0NzIxNzI1YzYwLi5iY2U2MDYxOWMzIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvbW0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAo+IEBAIC00OTIs MjIgKzQ5MiwyNiBAQCBleHRlcm4gc3RydWN0IGRvbWFpbiAqZG9tX3hlbiwgKmRvbV9pbywgKmRv bV9jb3c7IC8qIGZvciB2bWNvcmVpbmZvICovCj4gICAqLwo+ICBleHRlcm4gYm9vbCBtYWNoaW5l X3RvX3BoeXNfbWFwcGluZ192YWxpZDsKPgo+IC1zdGF0aWMgaW5saW5lIHZvaWQgc2V0X2dwZm5f ZnJvbV9tZm4odW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGxvbmcgcGZuKQo+ICtzdGF0aWMg aW5saW5lIHZvaWQgc2V0X3Bmbl9mcm9tX21mbihtZm5fdCBtZm4sIHVuc2lnbmVkIGxvbmcgcGZu KQo+ICB7Cj4gLSAgICBzdHJ1Y3QgZG9tYWluICpkID0gcGFnZV9nZXRfb3duZXIobWZuX3RvX3Bh Z2UoX21mbihtZm4pKSk7Cj4gKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIG1mbl8gPSBtZm5feCht Zm4pOwo+ICsgICAgc3RydWN0IGRvbWFpbiAqZCA9IHBhZ2VfZ2V0X293bmVyKG1mbl90b19wYWdl KG1mbikpOwo+ICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeSA9IChkICYmIChkID09IGRvbV9jb3cp KSA/IFNIQVJFRF9NMlBfRU5UUlkgOiBwZm47Cj4KPiAgICAgIGlmICghbWFjaGluZV90b19waHlz X21hcHBpbmdfdmFsaWQpCj4gICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICBpZiAoIG1mbiA+PSAo UkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJUlRfU1RBUlQpIC8g NCApCj4gLSAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRy eTsKPiAtICAgIG1hY2hpbmVfdG9fcGh5c19tYXBwaW5nW21mbl0gPSBlbnRyeTsKPiArICAgIGlm ICggbWZuXyA+PSAoUkRXUl9DT01QQVRfTVBUX1ZJUlRfRU5EIC0gUkRXUl9DT01QQVRfTVBUX1ZJ UlRfU1RBUlQpIC8gNCApCj4gKyAgICAgICAgY29tcGF0X21hY2hpbmVfdG9fcGh5c19tYXBwaW5n W21mbl9dID0gZW50cnk7Cj4gKyAgICBtYWNoaW5lX3RvX3BoeXNfbWFwcGluZ1ttZm5fXSA9IGVu dHJ5Owo+ICB9Cj4KPiAgZXh0ZXJuIHN0cnVjdCByYW5nZXNldCAqbW1pb19yb19yYW5nZXM7Cj4K PiAtI2RlZmluZSBnZXRfZ3Bmbl9mcm9tX21mbihtZm4pICAgICAgKG1hY2hpbmVfdG9fcGh5c19t YXBwaW5nWyhtZm4pXSkKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9wZm5fZnJv bV9tZm4obWZuX3QgbWZuKQo+ICt7Cj4gKyAgICByZXR1cm4gbWFjaGluZV90b19waHlzX21hcHBp bmdbbWZuX3gobWZuKV07Cj4gK30KPgo+ICAjZGVmaW5lIGNvbXBhdF9wZm5fdG9fY3IzKHBmbikg KCgodW5zaWduZWQpKHBmbikgPDwgMTIpIHwgKCh1bnNpZ25lZCkocGZuKSA+PiAyMCkpCj4gICNk ZWZpbmUgY29tcGF0X2NyM190b19wZm4oY3IzKSAoKCh1bnNpZ25lZCkoY3IzKSA+PiAxMikgfCAo KHVuc2lnbmVkKShjcjMpIDw8IDIwKSkKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBpbmRleCAwMTU3NTY4YmU5Li4w N2I3ZWM2ZGIwIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiArKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCj4gQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMg aW5saW5lIHN0cnVjdCBwYWdlX2luZm8gKmdldF9wYWdlX2Zyb21fZ2ZuKAo+ICBzdGF0aWMgaW5s aW5lIGdmbl90IG1mbl90b19nZm4oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgbWZuX3QgbWZuKQo+ ICB7Cj4gICAgICBpZiAoIHBhZ2luZ19tb2RlX3RyYW5zbGF0ZShkKSApCj4gLSAgICAgICAgcmV0 dXJuIF9nZm4oZ2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSkpOwo+ICsgICAgICAgIHJldHVy biBfZ2ZuKGdldF9wZm5fZnJvbV9tZm4obWZuKSk7Cj4gICAgICBlbHNlCj4gICAgICAgICAgcmV0 dXJuIF9nZm4obWZuX3gobWZuKSk7Cj4gIH0KPiAtLQo+IDIuMTEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==