From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [for-4.8][PATCH v2 17/23] xen/arm: p2m: Introduce p2m_set_entry and __p2m_set_entry Date: Wed, 21 Sep 2016 19:18:26 -0700 (PDT) Message-ID: References: <1473938919-31976-1-git-send-email-julien.grall@arm.com> <1473938919-31976-18-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1473938919-31976-18-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: proskurin@sec.in.tum.de, sstabellini@kernel.org, steve.capper@arm.com, wei.chen@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAxNSBTZXAgMjAxNiwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IFRoZSBBUk0gYXJjaGl0 ZWN0dXJlIG1hbmRhdGVzIHRvIHVzZSBvZiBhIGJyZWFrLWJlZm9yZS1tYWtlIHNlcXVlbmNlCj4g d2hlbiBjaGFuZ2luZyB0cmFuc2xhdGlvbiBlbnRyaWVzIGlmIHRoZSBwYWdlIHRhYmxlIGlzIHNo YXJlZCBiZXR3ZWVuCj4gbXVsdGlwbGUgQ1BVcyB3aGVuZXZlciBhIHZhbGlkIGVudHJ5IGlzIHJl cGxhY2VkIGJ5IGFub3RoZXIgdmFsaWQgZW50cnkKPiAoc2VlIEQ0LjcuMSBpbiBBUk0gRERJIDA0 ODdBLmogZm9yIG1vcmUgZGV0YWlscykuCj4gCj4gVGhlIGJyZWFrLWJlZm9yZS1tYWtlIHNlcXVl bmNlIGNhbiBiZSBkaXZpZGVkIGluIHRoZSBmb2xsb3dpbmcgc3RlcHM6Cj4gICAgIDEpIEludmFs aWRhdGUgdGhlIG9sZCBlbnRyeSBpbiB0aGUgcGFnZSB0YWJsZQo+ICAgICAyKSBJc3N1ZSBhIFRM QiBpbnZhbGlkYXRpb24gaW5zdHJ1Y3Rpb24gZm9yIHRoZSBhZGRyZXNzIGFzc29jaWF0ZWQKPiAg ICAgdG8gdGhpcyBlbnRyeQo+ICAgICAzKSBXcml0ZSB0aGUgbmV3IGVudHJ5Cj4gCj4gVGhlIGN1 cnJlbnQgUDJNIGNvZGUgaW1wbGVtZW50ZWQgaW4gYXBwbHlfb25lX2xldmVsIGRvZXMgbm90IHJl c3BlY3QKPiB0aGlzIHNlcXVlbmNlIGFuZCBtYXkgcmVzdWx0IHRvIGJyZWFrIGNvaGVyZW5jeSBv biBzb21lIHByb2Nlc3NvcnMuCj4gCj4gQWRhcHRpbmcgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp b24gdG8gdXNlIHRoZSBicmVhay1iZWZvcmUtbWFrZQo+IHNlcXVlbmNlIHdvdWxkIGltcGx5IHNv bWUgY29kZSBkdXBsaWNhdGlvbiBhbmQgbW9yZSBUTEJzIGludmFsaWRhdGlvbgo+IHRoYW4gbmVj ZXNzYXJ5LiBGb3IgaW5zdGFuY2UsIGlmIHdlIGFyZSByZXBsYWNpbmcgYSA0S0IgcGFnZSBhbmQg dGhlCj4gY3VycmVudCBtYXBwaW5nIGluIHRoZSBQMk0gaXMgdXNpbmcgYSAxR0Igc3VwZXJwYWdl LCB0aGUgZm9sbG93aW5nIHN0ZXBzCj4gd2lsbCBoYXBwZW46Cj4gICAgIDEpIFNoYXR0ZXIgdGhl IDFHQiBzdXBlcnBhZ2UgaW50byBhIHNlcmllcyBvZiAyTUIgc3VwZXJwYWdlcwo+ICAgICAyKSBT aGF0dGVyIHRoZSAyTUIgc3VwZXJwYWdlIGludG8gYSBzZXJpZXMgb2YgNEtCIHBhZ2VzCj4gICAg IDMpIFJlcGxhY2UgdGhlIDRLQiBwYWdlCj4gCj4gQXMgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRp b24gaXMgc2hhdHRlcmluZyB3aGlsZSBkZXNjZW5kaW5nIGFuZCBpbnN0YWxsCj4gdGhlIG1hcHBp bmcsIFhlbiB3b3VsZCBuZWVkIHRvIGlzc3VlIDMgVExCIGludmFsaWRhdGlvbiBpbnN0cnVjdGlv bnMKPiB3aGljaCBpcyBjbGVhcmx5IGluZWZmaWNpZW50Lgo+IAo+IEZ1cnRoZXJtb3JlLCBhbGwg dGhlIG9wZXJhdGlvbnMgd2hpY2ggbW9kaWZ5IHRoZSBwYWdlIHRhYmxlIGFyZSB1c2luZwo+IHRo ZSBzYW1lIHNrZWxldG9uLiBJdCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRvIG1haW50YWluIGRpZmZl cmVudCBjb2RlIHBhdGhzCj4gdGhhbiBoYXZpbmcgYSBnZW5lcmljIGZ1bmN0aW9uIHRoYXQgc2V0 IGFuIGVudHJ5IGFuZCB0YWtlIGNhcmUgb2YgdGhlCj4gYnJlYWstYmVmb3JlLW1ha2Ugc2VxdWVu Y2UuCj4gCj4gVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgeDg2IEVQVCBv bmUgd2hpY2gsIEkgdGhpbmssCj4gZml0cyBxdWl0ZSB3ZWxsIGZvciB0aGUgYnJlYWstYmVmb3Jl LW1ha2Ugc2VxdWVuY2Ugd2hpbHN0IGtlZXBpbmcKPiB0aGUgY29kZSBzaW1wbGUuCj4gCj4gVGhl IG1haW4gZnVuY3Rpb24gb2YgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBfX3AybV9zZXRfZW50 cnkuIEl0IHdpbGwKPiBvbmx5IHdvcmsgb24gbWFwcGluZyB0aGF0IGFyZSBhbGlnbmVkIHRvIGEg YmxvY2sgZW50cnkgaW4gdGhlIHBhZ2UgdGFibGUKPiAoaS5lIDFHQiwgMk1CLCA0S0Igd2hlbiB1 c2luZyBhIDRLQiBncmFudWxhcml0eSkuCj4gCj4gQW5vdGhlciBmdW5jdGlvbiwgcDJtX3NldF9l bnRyeSwgaXMgcHJvdmlkZWQgdG8gYnJlYWsgZG93biBpcyByZWdpb24KPiBpbnRvIG1hcHBpbmcg dGhhdCBpcyBhbGlnbmVkIHRvIGEgYmxvY2sgZW50cnkgb3IgNEtCIHdoZW4gbWVtYWNjZXNzIGlz Cj4gZW5hYmxlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFs bEBhcm0uY29tPgo+IAo+IC0tLQo+ICAgICBDaGFuZ2VzIGluIHYyOgo+ICAgICAgICAgLSBmaXgg dHlwb2VzIGluIHRoZSBjb21taXQgbWVzc2FnZQo+ICAgICAgICAgLSBkb24ndCB1c2UgdGhlIGRl ZmF1bHQgYWNjZXNzIHdoZW4gc2hhdHRlcmluZyB0aGUgc3VwZXJwYWdlCj4gICAgICAgICAtIHJl bW92ZSBkdXBsaWNhdGVkIGNvbW1lbnQKPiAgICAgICAgIC0gZXhwb3J0IHAybV9zZXRfZW50cnkK PiAgICAgICAgIC0gcy90b2RvL25yLwo+ICAgICAgICAgLSBpb21tdSBmbHVzaAo+ICAgICAgICAg LSB1cGRhdGUgdGhlIHN0YXRzIHdoZW4gcmVtb3ZpbmcvYWRkaW5nIGEgbWFwcGluZwo+ICAgICAg ICAgLSB1cGRhdGUgZG9jCj4gICAgICAgICAtIGZpeCBwMm1fc3BsaXRfc3VwZXJwYWdlCj4gICAg ICAgICAtIGRvbid0IHRyeSB0byBhbGxvY2F0ZSBpbnRlcm1lZGlhdGUgcGFnZSB0YWJsZSB3aGVu IHJlbW92aW5nIGFuCj4gICAgICAgICBlbnRyeQo+ICAgICAgICAgLSB0aGUgVExCIGZsdXNoIGlz IG5vdCBuZWNlc3Nhcnkgd2hlbiBvbmx5IHBlcm1pc3Npb24gYXJlCj4gICAgICAgICBjaGFuZ2Vk IChlLmcgbWVtYWNjZXNzKS4KPiAtLS0KPiAgeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgfCAz NzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9p bmNsdWRlL2FzbS1hcm0vcDJtLmggIHwgIDExICsrCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGFn ZS5oIHwgICA0ICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCAzODkgaW5zZXJ0aW9ucygrKQo+IAo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKPiBpbmRl eCAzY2EyZTkwLi41ZjdhZWYwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9wMm0uYwo+ICsr KyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IEBAIC03ODMsNiArNzgzLDM4MCBAQCBzdGF0aWMgdm9p ZCBwMm1fcHV0X2wzX3BhZ2UoY29uc3QgbHBhZV90IHB0ZSkKPiAgICAgIH0KPiAgfQo+ICAKPiAr LyogRnJlZSBscGFlIHN1Yi10cmVlIGJlaGluZCBhbiBlbnRyeSAqLwo+ICtzdGF0aWMgdm9pZCBw Mm1fZnJlZV9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICBscGFlX3QgZW50cnksIHVuc2lnbmVkIGludCBsZXZlbCkKPiArewo+ICsgICAg dW5zaWduZWQgaW50IGk7Cj4gKyAgICBscGFlX3QgKnRhYmxlOwo+ICsgICAgbWZuX3QgbWZuOwo+ ICsKPiArICAgIC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIGVudHJ5IGlzIGludmFsaWQuICovCj4g KyAgICBpZiAoICFwMm1fdmFsaWQoZW50cnkpICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsg ICAgLyogTm90aGluZyB0byBkbyBidXQgdXBkYXRpbmcgdGhlIHN0YXRlcyBpZiB0aGUgZW50cnkg aXMgYSBzdXBlci1wYWdlLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXiBzdGF0cwoKQXNpZGUgZnJvbSB0aGlzIHNtYWxsIHR5cG8sIGV2ZXJ5dGhpbmcgZWxz ZSBpcyBnb29kOgoKUmV2aWV3ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlA a2VybmVsLm9yZz4KCgo+ICsgICAgaWYgKCBwMm1faXNfc3VwZXJwYWdlKGVudHJ5LCBsZXZlbCkg KQo+ICsgICAgewo+ICsgICAgICAgIHAybS0+c3RhdHMubWFwcGluZ3NbbGV2ZWxdLS07Cj4gKyAg ICAgICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggbGV2ZWwgPT0gMyApCj4gKyAg ICB7Cj4gKyAgICAgICAgcDJtLT5zdGF0cy5tYXBwaW5nc1tsZXZlbF0tLTsKPiArICAgICAgICBw Mm1fcHV0X2wzX3BhZ2UoZW50cnkpOwo+ICsgICAgICAgIHJldHVybjsKPiArICAgIH0KPiArCj4g KyAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKGVudHJ5LnAybS5iYXNlKSk7Cj4gKyAg ICBmb3IgKCBpID0gMDsgaSA8IExQQUVfRU5UUklFUzsgaSsrICkKPiArICAgICAgICBwMm1fZnJl ZV9lbnRyeShwMm0sICoodGFibGUgKyBpKSwgbGV2ZWwgKyAxKTsKPiArCj4gKyAgICB1bm1hcF9k b21haW5fcGFnZSh0YWJsZSk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIE1ha2Ugc3VyZSBhbGwg dGhlIHJlZmVyZW5jZXMgaW4gdGhlIFRMQiBoYXZlIGJlZW4gcmVtb3ZlZCBiZWZvcmUKPiArICAg ICAqIGZyZWluZyB0aGUgaW50ZXJtZWRpYXRlIHBhZ2UgdGFibGUuCj4gKyAgICAgKiBYWFg6IFNo b3VsZCB3ZSBkZWZlciB0aGUgZnJlZSBvZiB0aGUgcGFnZSB0YWJsZSB0byBhdm9pZCB0aGUKPiAr ICAgICAqIGZsdXNoPwo+ICsgICAgICovCj4gKyAgICBpZiAoIHAybS0+bmVlZF9mbHVzaCApCj4g KyAgICAgICAgcDJtX2ZsdXNoX3RsYl9zeW5jKHAybSk7Cj4gKwo+ICsgICAgbWZuID0gX21mbihl bnRyeS5wMm0uYmFzZSk7Cj4gKyAgICBBU1NFUlQobWZuX3ZhbGlkKG1mbl94KG1mbikpKTsKPiAr Cj4gKyAgICBmcmVlX2RvbWhlYXBfcGFnZShtZm5fdG9fcGFnZShtZm5feChtZm4pKSk7Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIHAybV9zcGxpdF9zdXBlcnBhZ2Uoc3RydWN0IHAybV9kb21haW4g KnAybSwgbHBhZV90ICplbnRyeSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbGV2ZWwsIHVuc2lnbmVkIGludCB0YXJnZXQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICpvZmZzZXRzKQo+ICt7Cj4gKyAg ICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwo+ICsgICAgdW5zaWduZWQgaW50IGk7Cj4gKyAgICBs cGFlX3QgcHRlLCAqdGFibGU7Cj4gKyAgICBib29sIHJ2ID0gdHJ1ZTsKPiArCj4gKyAgICAvKiBD b252ZW5pZW5jZSBhbGlhc2VzICovCj4gKyAgICBtZm5fdCBtZm4gPSBfbWZuKGVudHJ5LT5wMm0u YmFzZSk7Cj4gKyAgICB1bnNpZ25lZCBpbnQgbmV4dF9sZXZlbCA9IGxldmVsICsgMTsKPiArICAg IHVuc2lnbmVkIGludCBsZXZlbF9vcmRlciA9IGxldmVsX29yZGVyc1tuZXh0X2xldmVsXTsKPiAr Cj4gKyAgICAvKgo+ICsgICAgICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCB0YXJn ZXQgIT0gbGV2ZWwgYW5kIHRoZSBlbnRyeSBpcwo+ICsgICAgICogYSBzdXBlcnBhZ2UuCj4gKyAg ICAgKi8KPiArICAgIEFTU0VSVChsZXZlbCA8IHRhcmdldCk7Cj4gKyAgICBBU1NFUlQocDJtX2lz X3N1cGVycGFnZSgqZW50cnksIGxldmVsKSk7Cj4gKwo+ICsgICAgcGFnZSA9IGFsbG9jX2RvbWhl YXBfcGFnZShOVUxMLCAwKTsKPiArICAgIGlmICggIXBhZ2UgKQo+ICsgICAgICAgIHJldHVybiBm YWxzZTsKPiArCj4gKyAgICBwYWdlX2xpc3RfYWRkKHBhZ2UsICZwMm0tPnBhZ2VzKTsKPiArICAg IHRhYmxlID0gX19tYXBfZG9tYWluX3BhZ2UocGFnZSk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAq IFdlIGFyZSBlaXRoZXIgc3BsaXR0aW5nIGEgZmlyc3QgbGV2ZWwgMUcgcGFnZSBpbnRvIDUxMiBz ZWNvbmQgbGV2ZWwKPiArICAgICAqIDJNIHBhZ2VzLCBvciBhIHNlY29uZCBsZXZlbCAyTSBwYWdl IGludG8gNTEyIHRoaXJkIGxldmVsIDRLIHBhZ2VzLgo+ICsgICAgICovCj4gKyAgICBmb3IgKCBp ID0gMDsgaSA8IExQQUVfRU5UUklFUzsgaSsrICkKPiArICAgIHsKPiArICAgICAgICBscGFlX3Qg Km5ld19lbnRyeSA9IHRhYmxlICsgaTsKPiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBV c2UgdGhlIGNvbnRlbnQgb2YgdGhlIHN1cGVycGFnZSBlbnRyeSBhbmQgb3ZlcnJpZGUKPiArICAg ICAgICAgKiB0aGUgbmVjZXNzYXJ5IGZpZWxkcy4gU28gdGhlIGNvcnJlY3QgcGVybWlzc2lvbiBh cmUga2VwdC4KPiArICAgICAgICAgKi8KPiArICAgICAgICBwdGUgPSAqZW50cnk7Cj4gKyAgICAg ICAgcHRlLnAybS5iYXNlID0gbWZuX3gobWZuX2FkZChtZm4sIGkgPDwgbGV2ZWxfb3JkZXIpKTsK PiArCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBGaXJzdCBhbmQgc2Vjb25kIGxldmVsIHBh Z2VzIHNldCBwMm0udGFibGUgPSAwLCBidXQgdGhpcmQKPiArICAgICAgICAgKiBsZXZlbCBlbnRy aWVzIHNldCBwMm0udGFibGUgPSAxLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIHB0ZS5wMm0u dGFibGUgPSAobmV4dF9sZXZlbCA9PSAzKTsKPiArCj4gKyAgICAgICAgd3JpdGVfcHRlKG5ld19l bnRyeSwgcHRlKTsKPiArICAgIH0KPiArCj4gKyAgICAvKiBVcGRhdGUgc3RhdHMgKi8KPiArICAg IHAybS0+c3RhdHMuc2hhdHRlcmVkW2xldmVsXSsrOwo+ICsgICAgcDJtLT5zdGF0cy5tYXBwaW5n c1tsZXZlbF0tLTsKPiArICAgIHAybS0+c3RhdHMubWFwcGluZ3NbbmV4dF9sZXZlbF0gKz0gTFBB RV9FTlRSSUVTOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBTaGF0dGVyIHN1cGVycGFnZSBpbiB0 aGUgcGFnZSB0byB0aGUgbGV2ZWwgd2Ugd2FudCB0byBtYWtlIHRoZQo+ICsgICAgICogY2hhbmdl cy4KPiArICAgICAqIFRoaXMgaXMgZG9uZSBvdXRzaWRlIHRoZSBsb29wIHRvIGF2b2lkIGNoZWNr aW5nIHRoZSBvZmZzZXQgdG8KPiArICAgICAqIGtub3cgd2hldGhlciB0aGUgZW50cnkgc2hvdWxk IGJlIHNoYXR0ZXJlZCBmb3IgZXZlcnkgZW50cnkuCj4gKyAgICAgKi8KPiArICAgIGlmICggbmV4 dF9sZXZlbCAhPSB0YXJnZXQgKQo+ICsgICAgICAgIHJ2ID0gcDJtX3NwbGl0X3N1cGVycGFnZShw Mm0sIHRhYmxlICsgb2Zmc2V0c1tuZXh0X2xldmVsXSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGV2ZWwgKyAxLCB0YXJnZXQsIG9mZnNldHMpOwo+ICsKPiArICAgIGlmICgg cDJtLT5jbGVhbl9wdGUgKQo+ICsgICAgICAgIGNsZWFuX2RjYWNoZV92YV9yYW5nZSh0YWJsZSwg UEFHRV9TSVpFKTsKPiArCj4gKyAgICB1bm1hcF9kb21haW5fcGFnZSh0YWJsZSk7Cj4gKwo+ICsg ICAgcHRlID0gbWZuX3RvX3AybV9lbnRyeShfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSwgcDJtX2lu dmFsaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3Mp Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBFdmVuIGlmIHdlIGZhaWxlZCwgd2Ugc2hvdWxkIGlu c3RhbGwgdGhlIG5ld2x5IGFsbG9jYXRlZCBMUEFFCj4gKyAgICAgKiBlbnRyeS4gVGhlIGNhbGxl ciB3aWxsIGJlIGluIGNoYXJnZSB0byBmcmVlIHRoZSBzdWItdHJlZS4KPiArICAgICAqLwo+ICsg ICAgcDJtX3dyaXRlX3B0ZShlbnRyeSwgcHRlLCBwMm0tPmNsZWFuX3B0ZSk7Cj4gKwo+ICsgICAg cmV0dXJuIHJ2Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBJbnNlcnQgYW4gZW50cnkgaW4gdGhlIHAy bS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdpdGggYSBtYXBwaW5nCj4gKyAqIGVxdWFsIHRvIGEg cGFnZS9zdXBlcnBhZ2UgKDRLLCAyTSwgMUcpLgo+ICsgKi8KPiArc3RhdGljIGludCBfX3AybV9z ZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ZuX3Qgc2dmbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHBhZ2Vfb3JkZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mbl90IHNtZm4s Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgcDJtX2FjY2Vzc190IGEpCj4gK3sKPiArICAgIHBhZGRyX3QgYWRk ciA9IHBmbl90b19wYWRkcihnZm5feChzZ2ZuKSk7Cj4gKyAgICB1bnNpZ25lZCBpbnQgbGV2ZWwg PSAwOwo+ICsgICAgdW5zaWduZWQgaW50IHRhcmdldCA9IDMgLSAocGFnZV9vcmRlciAvIExQQUVf U0hJRlQpOwo+ICsgICAgbHBhZV90ICplbnRyeSwgKnRhYmxlLCBvcmlnX3B0ZTsKPiArICAgIGlu dCByYzsKPiArCj4gKyAgICAvKiBDb252ZW5pZW5jZSBhbGlhc2VzICovCj4gKyAgICBjb25zdCB1 bnNpZ25lZCBpbnQgb2Zmc2V0c1s0XSA9IHsKPiArICAgICAgICB6ZXJvZXRoX3RhYmxlX29mZnNl dChhZGRyKSwKPiArICAgICAgICBmaXJzdF90YWJsZV9vZmZzZXQoYWRkciksCj4gKyAgICAgICAg c2Vjb25kX3RhYmxlX29mZnNldChhZGRyKSwKPiArICAgICAgICB0aGlyZF90YWJsZV9vZmZzZXQo YWRkcikKPiArICAgIH07Cj4gKwo+ICsgICAgQVNTRVJUKHAybV9pc193cml0ZV9sb2NrZWQocDJt KSk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIENoZWNrIGlmIHRoZSBsZXZlbCB0YXJnZXQgaXMg dmFsaWQ6IHdlIG9ubHkgc3VwcG9ydAo+ICsgICAgICogNEsgLSAyTSAtIDFHIG1hcHBpbmcuCj4g KyAgICAgKi8KPiArICAgIEFTU0VSVCh0YXJnZXQgPiAwICYmIHRhcmdldCA8PSAzKTsKPiArCj4g KyAgICB0YWJsZSA9IHAybV9nZXRfcm9vdF9wb2ludGVyKHAybSwgc2dmbik7Cj4gKyAgICBpZiAo ICF0YWJsZSApCj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsgICAgZm9yICggbGV2 ZWwgPSBQMk1fUk9PVF9MRVZFTDsgbGV2ZWwgPCB0YXJnZXQ7IGxldmVsKysgKQo+ICsgICAgewo+ ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogRG9uJ3QgdHJ5IHRvIGFsbG9jYXRlIGludGVybWVk aWF0ZSBwYWdlIHRhYmxlIGlmIHRoZSBtYXBwaW5nCj4gKyAgICAgICAgICogaXMgYWJvdXQgdG8g YmUgcmVtb3ZlZCAoaS5lIG1mbiA9PSBJTlZBTElEX01GTikuCj4gKyAgICAgICAgICovCj4gKyAg ICAgICAgcmMgPSBwMm1fbmV4dF9sZXZlbChwMm0sIG1mbl9lcShzbWZuLCBJTlZBTElEX01GTiks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGUsIG9mZnNldHNbbGV2ZWxdKTsK PiArICAgICAgICBpZiAoIHJjID09IEdVRVNUX1RBQkxFX01BUF9GQUlMRUQgKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICogV2UgYXJlIGhlcmUgYmVjYXVz ZSBwMm1fbmV4dF9sZXZlbCBoYXMgZmFpbGVkIHRvIG1hcAo+ICsgICAgICAgICAgICAgKiB0aGUg aW50ZXJtZWRpYXRlIHBhZ2UgdGFibGUgKGUuZyB0aGUgdGFibGUgZG9lcyBub3QgZXhpc3QKPiAr ICAgICAgICAgICAgICogYW5kIHRoZXkgcDJtIHRyZWUgaXMgcmVhZC1vbmx5KS4gSXQgaXMgYSB2 YWxpZCBjYXNlCj4gKyAgICAgICAgICAgICAqIHdoZW4gcmVtb3ZpbmcgYSBtYXBwaW5nIGFzIGl0 IG1heSBub3QgZXhpc3QgaW4gdGhlCj4gKyAgICAgICAgICAgICAqIHBhZ2UgdGFibGUuIEluIHRo aXMgY2FzZSwganVzdCBpZ25vcmUgaXQuCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAg ICByYyA9IG1mbl9lcShzbWZuLCBJTlZBTElEX01GTikgPyAwIDogLUVOT0VOVDsKPiArICAgICAg ICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGVsc2UgaWYgKCByYyAhPSBH VUVTVF9UQUJMRV9OT1JNQUxfUEFHRSApCj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgfQo+ ICsKPiArICAgIGVudHJ5ID0gdGFibGUgKyBvZmZzZXRzW2xldmVsXTsKPiArCj4gKyAgICAvKgo+ ICsgICAgICogSWYgd2UgYXJlIGhlcmUgd2l0aCBsZXZlbCA8IHRhcmdldCwgd2UgbXVzdCBiZSBh dCBhIGxlYWYgbm9kZSwKPiArICAgICAqIGFuZCB3ZSBuZWVkIHRvIGJyZWFrIHVwIHRoZSBzdXBl cnBhZ2UuCj4gKyAgICAgKi8KPiArICAgIGlmICggbGV2ZWwgPCB0YXJnZXQgKQo+ICsgICAgewo+ ICsgICAgICAgIC8qIFdlIG5lZWQgdG8gc3BsaXQgdGhlIG9yaWdpbmFsIHBhZ2UuICovCj4gKyAg ICAgICAgbHBhZV90IHNwbGl0X3B0ZSA9ICplbnRyeTsKPiArCj4gKyAgICAgICAgQVNTRVJUKHAy bV9pc19zdXBlcnBhZ2UoKmVudHJ5LCBsZXZlbCkpOwo+ICsKPiArICAgICAgICBpZiAoICFwMm1f c3BsaXRfc3VwZXJwYWdlKHAybSwgJnNwbGl0X3B0ZSwgbGV2ZWwsIHRhcmdldCwgb2Zmc2V0cykg KQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICogVGhlIGN1 cnJlbnQgc3VwZXItcGFnZSBpcyBzdGlsbCBpbi1wbGFjZSwgc28gcmUtaW5jcmVtZW50Cj4gKyAg ICAgICAgICAgICAqIHRoZSBzdGF0cy4KPiArICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAg IHAybS0+c3RhdHMubWFwcGluZ3NbbGV2ZWxdKys7Cj4gKwo+ICsgICAgICAgICAgICAvKiBGcmVl IHRoZSBhbGxvY2F0ZWQgc3ViLXRyZWUgKi8KPiArICAgICAgICAgICAgcDJtX2ZyZWVfZW50cnko cDJtLCBzcGxpdF9wdGUsIGxldmVsKTsKPiArCj4gKyAgICAgICAgICAgIHJjID0gLUVOT01FTTsK PiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICAvKgo+ ICsgICAgICAgICAqIEZvbGxvdyB0aGUgYnJlYWstYmVmb3JlLXNlcXVlbmNlIHRvIHVwZGF0ZSB0 aGUgZW50cnkuCj4gKyAgICAgICAgICogRm9yIG1vcmUgZGV0YWlscyBzZWUgKEQ0LjcuMSBpbiBB Uk0gRERJIDA0ODdBLmopLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIHAybV9yZW1vdmVfcHRl KGVudHJ5LCBwMm0tPmNsZWFuX3B0ZSk7Cj4gKyAgICAgICAgcDJtX2ZsdXNoX3RsYl9zeW5jKHAy bSk7Cj4gKwo+ICsgICAgICAgIHAybV93cml0ZV9wdGUoZW50cnksIHNwbGl0X3B0ZSwgcDJtLT5j bGVhbl9wdGUpOwo+ICsKPiArICAgICAgICAvKiB0aGVuIG1vdmUgdG8gdGhlIGxldmVsIHdlIHdh bnQgdG8gbWFrZSByZWFsIGNoYW5nZXMgKi8KPiArICAgICAgICBmb3IgKCA7IGxldmVsIDwgdGFy Z2V0OyBsZXZlbCsrICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHJjID0gcDJtX25leHRf bGV2ZWwocDJtLCB0cnVlLCAmdGFibGUsIG9mZnNldHNbbGV2ZWxdKTsKPiArCj4gKyAgICAgICAg ICAgIC8qCj4gKyAgICAgICAgICAgICAqIFRoZSBlbnRyeSBzaG91bGQgYmUgZm91bmQgYW5kIGVp dGhlciBiZSBhIHRhYmxlCj4gKyAgICAgICAgICAgICAqIG9yIGEgc3VwZXJwYWdlIGlmIGxldmVs IDMgaXMgbm90IHRhcmdldGVkCj4gKyAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICBBU1NF UlQocmMgPT0gR1VFU1RfVEFCTEVfTk9STUFMX1BBR0UgfHwKPiArICAgICAgICAgICAgICAgICAg IChyYyA9PSBHVUVTVF9UQUJMRV9TVVBFUl9QQUdFICYmIHRhcmdldCA8IDMpKTsKPiArICAgICAg ICB9Cj4gKwo+ICsgICAgICAgIGVudHJ5ID0gdGFibGUgKyBvZmZzZXRzW2xldmVsXTsKPiArICAg IH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogV2Ugc2hvdWxkIGFsd2F5cyBiZSB0aGVyZSB3aXRo IHRoZSBjb3JyZWN0IGxldmVsIGJlY2F1c2UKPiArICAgICAqIGFsbCB0aGUgaW50ZXJtZWRpYXRl IHRhYmxlcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGlmIG5lY2Vzc2FyeS4KPiArICAgICAqLwo+ICsg ICAgQVNTRVJUKGxldmVsID09IHRhcmdldCk7Cj4gKwo+ICsgICAgb3JpZ19wdGUgPSAqZW50cnk7 Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFRoZSByYWRpeC10cmVlIGNhbiBvbmx5IHdvcmsgb24g NEtCLiBUaGlzIGlzIG9ubHkgdXNlZCB3aGVuCj4gKyAgICAgKiBtZW1hY2Nlc3MgaXMgZW5hYmxl ZC4KPiArICAgICAqLwo+ICsgICAgQVNTRVJUKCFwMm0tPm1lbV9hY2Nlc3NfZW5hYmxlZCB8fCBw YWdlX29yZGVyID09IDApOwo+ICsgICAgLyoKPiArICAgICAqIFRoZSBhY2Nlc3MgdHlwZSBzaG91 bGQgYWx3YXlzIGJlIHAybV9hY2Nlc3Nfcnd4IHdoZW4gdGhlIG1hcHBpbmcKPiArICAgICAqIGlz IHJlbW92ZWQuCj4gKyAgICAgKi8KPiArICAgIEFTU0VSVCghbWZuX2VxKElOVkFMSURfTUZOLCBz bWZuKSB8fCAoYSA9PSBwMm1fYWNjZXNzX3J3eCkpOwo+ICsgICAgLyoKPiArICAgICAqIFVwZGF0 ZSB0aGUgbWVtIGFjY2VzcyBwZXJtaXNzaW9uIGJlZm9yZSB1cGRhdGUgdGhlIFAyTS4gU28gd2UK PiArICAgICAqIGRvbid0IGhhdmUgdG8gcmV2ZXJ0IHRoZSBtYXBwaW5nIGlmIGl0IGhhcyBmYWls ZWQuCj4gKyAgICAgKi8KPiArICAgIHJjID0gcDJtX21lbV9hY2Nlc3NfcmFkaXhfc2V0KHAybSwg c2dmbiwgYSk7Cj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICBnb3RvIG91dDsKPiArCj4gKyAg ICAvKgo+ICsgICAgICogQWx3YXlzIHJlbW92ZSB0aGUgZW50cnkgaW4gb3JkZXIgdG8gZm9sbG93 IHRoZSBicmVhay1iZWZvcmUtbWFrZQo+ICsgICAgICogc2VxdWVuY2Ugd2hlbiB1cGRhdGluZyB0 aGUgdHJhbnNsYXRpb24gdGFibGUgKEQ0LjcuMSBpbiBBUk0gRERJCj4gKyAgICAgKiAwNDg3QS5q KS4KPiArICAgICAqLwo+ICsgICAgaWYgKCBwMm1fdmFsaWQob3JpZ19wdGUpICkKPiArICAgICAg ICBwMm1fcmVtb3ZlX3B0ZShlbnRyeSwgcDJtLT5jbGVhbl9wdGUpOwo+ICsKPiArICAgIGlmICgg bWZuX2VxKHNtZm4sIElOVkFMSURfTUZOKSApCj4gKyAgICAgICAgLyogRmx1c2ggY2FuIGJlIGRl ZmVycmVkIGlmIHRoZSBlbnRyeSBpcyByZW1vdmVkICovCj4gKyAgICAgICAgcDJtLT5uZWVkX2Zs dXNoIHw9ICEhcDJtX3ZhbGlkKG9yaWdfcHRlKTsKPiArICAgIGVsc2UKPiArICAgIHsKPiArICAg ICAgICBscGFlX3QgcHRlID0gbWZuX3RvX3AybV9lbnRyeShzbWZuLCB0LCBhKTsKPiArCj4gKyAg ICAgICAgaWYgKCBsZXZlbCA8IDMgKQo+ICsgICAgICAgICAgICBwdGUucDJtLnRhYmxlID0gMDsg LyogU3VwZXJwYWdlIGVudHJ5ICovCj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogSXQg aXMgbmVjZXNzYXJ5IHRvIGZsdXNoIHRoZSBUTEIgYmVmb3JlIHdyaXRpbmcgdGhlIG5ldyBlbnRy eQo+ICsgICAgICAgICAqIHRvIGtlZXAgY29oZXJlbmN5IHdoZW4gdGhlIHByZXZpb3VzIGVudHJ5 IHdhcyB2YWxpZC4KPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIEFsdGhvdWdoLCBpdCBjb3Vs ZCBiZSBkZWZlcmVkIHdoZW4gb25seSB0aGUgcGVybWlzc2lvbnMgYXJlCj4gKyAgICAgICAgICog Y2hhbmdlZCAoZS5nIGluIGNhc2Ugb2YgbWVtYWNjZXNzKS4KPiArICAgICAgICAgKi8KPiArICAg ICAgICBpZiAoIHAybV92YWxpZChvcmlnX3B0ZSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAg ICAgaWYgKCBsaWtlbHkoIXAybS0+bWVtX2FjY2Vzc19lbmFibGVkKSB8fAo+ICsgICAgICAgICAg ICAgICAgIFAyTV9DTEVBUl9QRVJNKHB0ZSkgIT0gUDJNX0NMRUFSX1BFUk0ob3JpZ19wdGUpICkK PiArICAgICAgICAgICAgICAgIHAybV9mbHVzaF90bGJfc3luYyhwMm0pOwo+ICsgICAgICAgICAg ICBlbHNlCj4gKyAgICAgICAgICAgICAgICBwMm0tPm5lZWRfZmx1c2ggPSB0cnVlOwo+ICsgICAg ICAgIH0KPiArICAgICAgICBlbHNlIC8qIG5ldyBtYXBwaW5nICovCj4gKyAgICAgICAgICAgIHAy bS0+c3RhdHMubWFwcGluZ3NbbGV2ZWxdKys7Cj4gKwo+ICsgICAgICAgIHAybV93cml0ZV9wdGUo ZW50cnksIHB0ZSwgcDJtLT5jbGVhbl9wdGUpOwo+ICsKPiArICAgICAgICBwMm0tPm1heF9tYXBw ZWRfZ2ZuID0gZ2ZuX21heChwMm0tPm1heF9tYXBwZWRfZ2ZuLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdmbl9hZGQoc2dmbiwgMSA8PCBwYWdlX29yZGVyKSk7Cj4g KyAgICAgICAgcDJtLT5sb3dlc3RfbWFwcGVkX2dmbiA9IGdmbl9taW4ocDJtLT5sb3dlc3RfbWFw cGVkX2dmbiwgc2dmbik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIEZyZWUgdGhl IGVudHJ5IG9ubHkgaWYgdGhlIG9yaWdpbmFsIHB0ZSB3YXMgdmFsaWQgYW5kIHRoZSBiYXNlCj4g KyAgICAgKiBpcyBkaWZmZXJlbnQgKHRvIGF2b2lkIGZyZWVpbmcgd2hlbiBwZXJtaXNzaW9uIGlz IGNoYW5nZWQpLgo+ICsgICAgICovCj4gKyAgICBpZiAoIHAybV92YWxpZChvcmlnX3B0ZSkgJiYg ZW50cnktPnAybS5iYXNlICE9IG9yaWdfcHRlLnAybS5iYXNlICkKPiArICAgICAgICBwMm1fZnJl ZV9lbnRyeShwMm0sIG9yaWdfcHRlLCBsZXZlbCk7Cj4gKwo+ICsgICAgaWYgKCBuZWVkX2lvbW11 KHAybS0+ZG9tYWluKSAmJiAocDJtX3ZhbGlkKG9yaWdfcHRlKSB8fCBwMm1fdmFsaWQoKmVudHJ5 KSkgKQo+ICsgICAgICAgIHJjID0gaW9tbXVfaW90bGJfZmx1c2gocDJtLT5kb21haW4sIGdmbl94 KHNnZm4pLCAxVUwgPDwgcGFnZV9vcmRlcik7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgcmMgPSAw Owo+ICsKPiArb3V0Ogo+ICsgICAgdW5tYXBfZG9tYWluX3BhZ2UodGFibGUpOwo+ICsKPiArICAg IHJldHVybiByYzsKPiArfQo+ICsKPiAraW50IHAybV9zZXRfZW50cnkoc3RydWN0IHAybV9kb21h aW4gKnAybSwKPiArICAgICAgICAgICAgICAgICAgZ2ZuX3Qgc2dmbiwKPiArICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBuciwKPiArICAgICAgICAgICAgICAgICAgbWZuX3Qgc21mbiwK PiArICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0LAo+ICsgICAgICAgICAgICAgICAgICBw Mm1fYWNjZXNzX3QgYSkKPiArewo+ICsgICAgaW50IHJjID0gMDsKPiArCj4gKyAgICB3aGlsZSAo IG5yICkKPiArICAgIHsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIFhYWDogU3VwcG9ydCBz dXBlcnBhZ2UgbWFwcGluZ3MgaWYgbnIgaXMgbm90IGFsaWduZWQgdG8gYQo+ICsgICAgICAgICAq IHN1cGVycGFnZSBzaXplLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIHVuc2lnbmVkIGxvbmcg bWFzayA9IGdmbl94KHNnZm4pIHwgbWZuX3goc21mbikgfCBucjsKPiArICAgICAgICB1bnNpZ25l ZCBsb25nIG9yZGVyOwo+ICsKPiArICAgICAgICAvKiBBbHdheXMgbWFwIDRrIGJ5IDRrIHdoZW4g bWVtYWNjZXNzIGlzIGVuYWJsZWQgKi8KPiArICAgICAgICBpZiAoIHVubGlrZWx5KHAybS0+bWVt X2FjY2Vzc19lbmFibGVkKSApCj4gKyAgICAgICAgICAgIG9yZGVyID0gVEhJUkRfT1JERVI7Cj4g KyAgICAgICAgZWxzZSBpZiAoICEobWFzayAmICgoMVVMIDw8IEZJUlNUX09SREVSKSAtIDEpKSAp Cj4gKyAgICAgICAgICAgIG9yZGVyID0gRklSU1RfT1JERVI7Cj4gKyAgICAgICAgZWxzZSBpZiAo ICEobWFzayAmICgoMVVMIDw8IFNFQ09ORF9PUkRFUikgLSAxKSkgKQo+ICsgICAgICAgICAgICBv cmRlciA9IFNFQ09ORF9PUkRFUjsKPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgIG9yZGVy ID0gVEhJUkRfT1JERVI7Cj4gKwo+ICsgICAgICAgIHJjID0gX19wMm1fc2V0X2VudHJ5KHAybSwg c2dmbiwgb3JkZXIsIHNtZm4sIHQsIGEpOwo+ICsgICAgICAgIGlmICggcmMgKQo+ICsgICAgICAg ICAgICBicmVhazsKPiArCj4gKyAgICAgICAgc2dmbiA9IGdmbl9hZGQoc2dmbiwgKDEgPDwgb3Jk ZXIpKTsKPiArICAgICAgICBpZiAoICFtZm5fZXEoc21mbiwgSU5WQUxJRF9NRk4pICkKPiArICAg ICAgICAgICBzbWZuID0gbWZuX2FkZChzbWZuLCAoMSA8PCBvcmRlcikpOwo+ICsKPiArICAgICAg ICBuciAtPSAoMSA8PCBvcmRlcik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHJjOwo+ICt9 Cj4gKwo+ICAvKgo+ICAgKiBSZXR1cm5zIHRydWUgaWYgc3RhcnRfZ3BhZGRyLi5lbmRfZ3BhZGRy IGNvbnRhaW5zIGF0IGxlYXN0IG9uZQo+ICAgKiBzdWl0YWJseSBhbGlnbmVkIGxldmVsX3NpemUg bWFwcHBpbmcgb2YgbWFkZHIuCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJt LmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4gaW5kZXggNmZlNmEzNy4uY2NhODZlZiAx MDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4gKysrIGIveGVuL2luY2x1 ZGUvYXNtLWFybS9wMm0uaAo+IEBAIC0xODcsNiArMTg3LDE3IEBAIG1mbl90IHAybV9nZXRfZW50 cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuLAo+ICAgICAgICAgICAgICAgICAg ICAgIHAybV90eXBlX3QgKnQsIHAybV9hY2Nlc3NfdCAqYSwKPiAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIpOwo+ICAKPiArLyoKPiArICogRGlyZWN0IHNldCBh IHAybSBlbnRyeTogb25seSBmb3IgdXNlIGJ5IHRoZSBQMk0gY29kZS4KPiArICogVGhlIFAyTSB3 cml0ZSBsb2NrIHNob3VsZCBiZSB0YWtlbi4KPiArICovCj4gK2ludCBwMm1fc2V0X2VudHJ5KHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sCj4gKyAgICAgICAgICAgICAgICAgIGdmbl90IHNnZm4sCj4g KyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnIsCj4gKyAgICAgICAgICAgICAgICAg IG1mbl90IHNtZm4sCj4gKyAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgdCwKPiArICAgICAg ICAgICAgICAgICAgcDJtX2FjY2Vzc190IGEpOwo+ICsKPiAgLyogQ2xlYW4gJiBpbnZhbGlkYXRl IGNhY2hlcyBjb3JyZXNwb25kaW5nIHRvIGEgcmVnaW9uIG9mIGd1ZXN0IGFkZHJlc3Mgc3BhY2Ug Ki8KPiAgaW50IHAybV9jYWNoZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBzdGFydCwg dW5zaWduZWQgbG9uZyBucik7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJt L3BhZ2UuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oCj4gaW5kZXggYTQzYjBmYS4uYmE2 MzMyMiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BhZ2UuaAo+ICsrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vcGFnZS5oCj4gQEAgLTE2Niw2ICsxNjYsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgX19wYWNrZWQgewo+ICAgICAgdW5zaWduZWQgbG9uZyBzYnoxOjU7Cj4gIH0gbHBhZV9w Mm1fdDsKPiAgCj4gKy8qIFBlcm1pc3Npb24gbWFzazogeG4sIHdyaXRlLCByZWFkICovCj4gKyNk ZWZpbmUgUDJNX1BFUk1fTUFTSyAoMHgwMDQwMDAwMDAwMDAwMEMwVUxMKQo+ICsjZGVmaW5lIFAy TV9DTEVBUl9QRVJNKHB0ZSkgKChwdGUpLmJpdHMgJiB+UDJNX1BFUk1fTUFTSykKPiArCj4gIC8q Cj4gICAqIFdhbGsgaXMgdGhlIGNvbW1vbiBiaXRzIG9mIHAybSBhbmQgcHQgZW50cmllcyB3aGlj aCBhcmUgbmVlZGVkIHRvCj4gICAqIHNpbXBseSB3YWxrIHRoZSB0YWJsZSAoZS5nLiBmb3IgZGVi dWcpLgo+IC0tIAo+IDEuOS4xCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK