Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing

Chao Yu via Linux-f2fs-devel <[email protected]> Wed, 5 Aug 2026 09:19:46 +0800
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
T24gOC81LzI2IDAxOjA4LCBEYWVobyBKZW9uZyB3cm90ZToKPiBPbiBNb24sIEF1ZyAzLCAyMDI2
IGF0IDU6NDLigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdyb3RlOgo+Pgo+PiBPbiA4
LzQvMjYgMDA6MTgsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4gT24gU3VuLCBBdWcgMiwgMjAyNiBh
dCA3OjAw4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3JnPiB3cm90ZToKPj4+Pgo+Pj4+IE9u
IDcvMzAvMjYgMjM6NDYsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4+PiBGcm9tOiBEYWVobyBKZW9u
ZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+Pj4+Pgo+Pj4+PiBUaGlzIHBhdGNoIGFkZHMgYSBk
eW5hbWljIG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhpc3RpbmcgZGV2aWNlCj4+Pj4+IGFs
aWFzaW5nIGZ1bmN0aW9uYWxpdHkuIEl0IGFsbG93cyB1c2VycyB0byBkeW5hbWljYWxseSByZXNl
cnZlIG9yCj4+Pj4+IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNlcyBmcm9tIHRoZSBmaWxlc3lzdGVt
J3MgZnJlZSBwb29sIGF0IHJ1bnRpbWUKPj4+Pj4gdGhyb3VnaCBuZXcgaW9jdGxzLgo+Pj4+Pgo+
Pj4+PiBUbyBzdXBwb3J0IHRoaXMsIHRocmVlIG5ldyBpb2N0bHMgYXJlIGludHJvZHVjZWQ6Cj4+
Pj4+IC0gRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6IFRoaXMgcmVjbGFpbXMgdGhlIHNwYWNl
IG9jY3VwaWVkIGJ5IGEKPj4+Pj4gICAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBw
ZXJmb3JtcyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPj4+Pj4gICAgIHZpY3RpbSBpbmZv
cm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3MgdGhlIHNlZ21lbnRzIGFzIGluLXVz
ZQo+Pj4+PiAgICAgdG8gcHJldmVudCBuZXcgYWxsb2NhdGlvbnMsIGFuZCB0aGVuIHRyaWdnZXJz
IEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcKPj4+Pj4gICAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSBy
YW5nZS4gRmluYWxseSwgaXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+Pj4+PiAgICAg
U0lUIHRvIGVmZmVjdGl2ZWx5IGV4Y2x1ZGUgdGhlIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2Fw
YWNpdHkuCj4+Pj4+Cj4+Pj4+IC0gRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6IFRoaXMgcmVs
ZWFzZXMgdGhlIHJlc2VydmVkIHNwYWNlIG9mIGEKPj4+Pj4gICAgIHByZXZpb3VzbHkgcmVzZXJ2
ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRydW5jYXRlcyB0aGUgYmxvY2tzCj4+Pj4+ICAg
ICBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUsIHdoaWNoIG1ha2VzIHRoZW0gYXZhaWxhYmxlIGZv
ciBnZW5lcmFsCj4+Pj4+ICAgICBmaWxlc3lzdGVtIGFsbG9jYXRpb24gYWdhaW4uCj4+Pj4+Cj4+
Pj4+IC0gRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6IFRoaXMgcmV0cmlldmVzIHRoZSBj
dXJyZW50IGFsaWFzaW5nCj4+Pj4+ICAgICBzdGF0dXMgb2YgYSBkZXZpY2UgYWxpYXNpbmcgZmls
ZSwgcmV0dXJuaW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMKPj4+Pj4gICAgIHJlbGVhc2VkIChpbmFj
dGl2ZSBhbGlhcykgb3IgcmVzZXJ2ZWQgKGFjdGl2ZSBhbGlhcywgd2l0aCBibG9ja3MKPj4+Pj4g
ICAgIGZ1bGx5IGFsbG9jYXRlZCBvbiB0aGUgZGV2aWNlKS4KPj4+Pj4KPj4+Pj4gU2lnbmVkLW9m
Zi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+
IHY2OiBmaXhlZCBkdXBsaWNhdGVkIGJsb2NrIHJlc2VydmF0aW9ucyBhbmQgcmFjaW5nIHcvIG1t
YXAuCj4+Pj4+ICAgICAgIGFkZGVkIHRoZSBleHRlbnQgYWxpZ25tZW50IGNoZWNrIGZvciBkZXZp
Y2UgYWxpYXNpbmcgYXJlYXMuCj4+Pj4+IHY1OiBwcmV2ZW50ZWQgbmV3IHNlZ21lbnQgYWxsb2Nh
dGlvbiBvbiBkZXZpY2VzIHVuZGVyZ29pbmcgcmVzZXJ2YXRpb24KPj4+Pj4gICAgICAgb3Igd2l0
aCBhY3RpdmUgYWxpYXNlcy4KPj4+Pj4gICAgICAgdXNlZCBpbi1tZW1vcnkgc3RydWN0IHRvIHJl
c2VydmUgYmxvY2tzIGZvciBkZXZpY2UgYWxpYXNpbmcuCj4+Pj4+ICAgICAgIGNsZWFyZWQgcHJl
ZnJlZSAoUFJFKSBkaXJ0eSBzZWdtZW50IGJpdG1hcC4KPj4+Pj4gdjQ6IHJlbmFtZWQgaW50ZXJm
YWNlcy4KPj4+Pj4gICAgICAgZml4ZWQgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gY2hlY2twb2lu
dD1kaXNhYmxlIG1vdW50IGFuZCBpb2N0bHMuCj4+Pj4+ICAgICAgIHJlZmFjdG9yZWQgc2VnbWVu
dCByZXNlcnZhdGlvbiBwYXJ0Lgo+Pj4+PiAgICAgICBtb2RpZmllZCBsb2NrIHVzYWdlLgo+Pj4+
PiB2MzogYWRkIENBUF9TWVNfQURNSU4gYW5kIGNoZWNrcG9pbnQ9ZGlzYWJsZWQgY2hlY2suCj4+
Pj4+ICAgICAgIHJlbW92ZSBhIGYyZnMgc3BlY2lmaWMgZmxhZyBleHBvc2VkIHdpdGggZ2V0Zmxh
Z3MuCj4+Pj4+IHYyOiBwcmV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJs
ZWQuCj4+Pj4+IC0tLQo+Pj4+PiAtLS0KPj4+Pj4gICAgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVt
cy9mMmZzLnJzdCB8ICAzNSArKysrCj4+Pj4+ICAgIGZzL2YyZnMvZGF0YS5jICAgICAgICAgICAg
ICAgICAgICAgfCAgIDQgKy0KPj4+Pj4gICAgZnMvZjJmcy9leHRlbnRfY2FjaGUuYyAgICAgICAg
ICAgICB8ICAgNyArCj4+Pj4+ICAgIGZzL2YyZnMvZjJmcy5oICAgICAgICAgICAgICAgICAgICAg
fCAgMTkgKy0KPj4+Pj4gICAgZnMvZjJmcy9maWxlLmMgICAgICAgICAgICAgICAgICAgICB8IDI3
MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+Pj4+PiAgICBmcy9mMmZzL2djLmMgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDMwICsrLS0KPj4+Pj4gICAgZnMvZjJmcy9uYW1laS5jICAg
ICAgICAgICAgICAgICAgICB8ICAxNCArKwo+Pj4+PiAgICBmcy9mMmZzL3NlZ21lbnQuYyAgICAg
ICAgICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKystLS0tLS0KPj4+Pj4gICAgZnMvZjJmcy9z
ZWdtZW50LmggICAgICAgICAgICAgICAgICB8ICAyMiArKysKPj4+Pj4gICAgZnMvZjJmcy9zdXBl
ci5jICAgICAgICAgICAgICAgICAgICB8ICAzNiArKysrCj4+Pj4+ICAgIGluY2x1ZGUvdWFwaS9s
aW51eC9mMmZzLmggICAgICAgICAgfCAgIDcgKwo+Pj4+PiAgICAxMSBmaWxlcyBjaGFuZ2VkLCA1
NTUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQg
YS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxl
c3lzdGVtcy9mMmZzLnJzdAo+Pj4+PiBpbmRleCA4YzRhMTRhZTQ0NGYuLjFhNWZkNGFmZTYwOSAx
MDA2NDQKPj4+Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+Pj4+
PiArKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+Pj4+IEBAIC0xMDQ1
LDYgKzEwNDUsNDEgQEAgU28sIHRoZSBrZXkgaWRlYSBpcywgdXNlciBjYW4gZG8gYW55IGZpbGUg
b3BlcmF0aW9ucyBvbiAvZGV2L3ZkYywgYW5kCj4+Pj4+ICAgIHJlY2xhaW0gdGhlIHNwYWNlIGFm
dGVyIHRoZSB1c2UsIHdoaWxlIHRoZSBzcGFjZSBpcyBjb3VudGVkIGFzIC9kYXRhLgo+Pj4+PiAg
ICBUaGF0IGRvZXNuJ3QgcmVxdWlyZSBtb2RpZnlpbmcgcGFydGl0aW9uIHNpemUgYW5kIGZpbGVz
eXN0ZW0gZm9ybWF0Lgo+Pj4+Pgo+Pj4+PiArRHluYW1pYyBEZXZpY2UgQWxpYXNpbmcgTWFuYWdl
bWVudAo+Pj4+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+PiArCj4+
Pj4+ICtJbiBhZGRpdGlvbiB0byBzdGF0aWMgZGV2aWNlIGFsaWFzaW5nIGJ5IGRlbGV0aW5nIHRo
ZSBhbGlhc2luZyBmaWxlLCBGMkZTCj4+Pj4+ICtzdXBwb3J0cyBkeW5hbWljIG1hbmFnZW1lbnQg
b2YgZGV2aWNlIGFsaWFzaW5nLiBUaGlzIG1lY2hhbmlzbSBhbGxvd3MgdGhlIHN5c3RlbQo+Pj4+
PiArdG8gZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBwYXJ0aXRpb24gb3duZXJzaGlwIGJldHdlZW4g
RjJGUyB1c2VyZGF0YSBhbmQgZXh0ZXJuYWwKPj4+Pj4gK2VudGl0aWVzIChlLmcuLCB6UkFNLCBy
YXcgcGFydGl0aW9uKSBiYXNlZCBvbiBzeXN0ZW0gcmVxdWlyZW1lbnRzIHdpdGhvdXQKPj4+Pj4g
K2RlbGV0aW5nIHRoZSBtYXN0ZXIgYWxpYXNpbmcgZmlsZSBvciByZXF1aXJpbmcgdW5tb3VudC9y
ZW1vdW50Lgo+Pj4+PiArCj4+Pj4+ICtUaGUgbWFzdGVyIGFsaWFzaW5nIGZpbGUgaXMgY3JlYXRl
ZCBkdXJpbmcgdGhlIGluaXRpYWwgZm9ybWF0IG9mIHRoZSBmaWxlIHN5c3RlbQo+Pj4+PiArYW5k
IHJlbWFpbnMgYXMgYSBwZXJzaXN0ZW50IGNvbnRyb2wgZW50aXR5IChpb2N0bCBnYXRld2F5KSBp
biB0aGUgcm9vdCBkaXJlY3RvcnkuCj4+Pj4+ICsKPj4+Pj4gKy0gUGFydGl0aW9uIFJlc2VydmF0
aW9uIChJbi1zZXJ2aWNlIHRvIEFsaWFzZWQpCj4+Pj4+ICsgIFdoZW4gYSBzcGVjaWZpYyBwYXJ0
aXRpb24gbmVlZHMgdG8gYmUgZGVkaWNhdGVkIHRvIGV4dGVybmFsIHNlcnZpY2VzIChlLmcuLCB6
UkFNKSwKPj4+Pj4gKyAgYSB1c2VyIGNhbiByZXNlcnZlIHRoZSBkZXZpY2UgYWxpYXMgcmFuZ2Ug
dmlhIGlvY3RsLiBUaGUga2VybmVsIHJlc2V0cyBHQyB2aWN0aW0KPj4+Pj4gKyAgaW5mb3JtYXRp
b24gZm9yIHRoZSB0YXJnZXQgcmFuZ2UsIG1hcmtzIHNlZ21lbnRzIGFzIGluLXVzZSB0byBwcmV2
ZW50IG5ldwo+Pj4+PiArICBhbGxvY2F0aW9ucywgYW5kIHRyaWdnZXJzIGZvcmNlZCBHQyB0byBt
aWdyYXRlIGV4aXN0aW5nIHZhbGlkIGRhdGEgb3V0IG9mIHRoZQo+Pj4+PiArICByYW5nZS4gRmlu
YWxseSwgaXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZSBTSVQgdG8gZWZmZWN0aXZlbHkg
ZXhjbHVkZSB0aGUKPj4+Pj4gKyAgZGV2aWNlIGZyb20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPj4+
Pj4gKwo+Pj4+PiArLSBQYXJ0aXRpb24gUmVsZWFzZSAoQWxpYXNlZCB0byBJbi1zZXJ2aWNlKQo+
Pj4+PiArICBXaGVuIGV4dGVybmFsIHVzYWdlIGNvbmNsdWRlcywgdGhlIHNwYWNlIGlzIHJlY2xh
aW1lZCBub3QgYnkgZGVsZXRpbmcgdGhlIGZpbGUsCj4+Pj4+ICsgIGJ1dCB0aHJvdWdoIHRoZSBy
ZWxlYXNlIGlvY3RsLiBUaGUga2VybmVsIHRydW5jYXRlcyBibG9ja3MgYXNzb2NpYXRlZCB3aXRo
Cj4+Pj4+ICsgIHRoZSBmaWxlLCByZWxlYXNpbmcgdGhlbSBiYWNrIHRvIGdlbmVyYWwgZmlsZXN5
c3RlbSBhbGxvY2F0aW9uLgo+Pj4+PiArCj4+Pj4+ICsuLiBjb2RlLWJsb2NrOjoKPj4+Pj4gKwo+
Pj4+PiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZWxlYXNlIC9tbnQvZjJmcy92ZGMuZmlsZQo+
Pj4+PiArICAgIyBkZiAtaAo+Pj4+PiArICAgL2Rldi92ZGIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNjRHICA3NTNNICAgNjRHICAgMiUgL21udC9mMmZzCj4+Pj4+ICsKPj4+Pj4gKyAgICMg
ZjJmc19pbyBkZXZfYWxpYXMgcmVzZXJ2ZSAvbW50L2YyZnMvdmRjLmZpbGUKPj4+Pj4gKyAgICMg
ZGYgLWgKPj4+Pj4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0RyAg
IDMzRyAgIDMyRyAgNTIlIC9tbnQvZjJmcwo+Pj4+PiArCj4+Pj4+ICAgIFBlci1maWxlIFJlYWQt
T25seSBMYXJnZSBGb2xpbyBTdXBwb3J0Cj4+Pj4+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2RhdGEuYyBi
L2ZzL2YyZnMvZGF0YS5jCj4+Pj4+IGluZGV4IGFjMWNmNGRlM2Q2Mi4uODkyZDU5NDA0OGI3IDEw
MDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+Pj4+PiArKysgYi9mcy9mMmZzL2RhdGEu
Ywo+Pj4+PiBAQCAtMTI3MCw3ICsxMjcwLDcgQEAgaW50IGYyZnNfcmVzZXJ2ZV9uZXdfYmxvY2tz
KHN0cnVjdCBkbm9kZV9vZl9kYXRhICpkbiwgYmxrY250X3QgY291bnQpCj4+Pj4+Cj4+Pj4+ICAg
ICAgICBpZiAodW5saWtlbHkoaXNfaW5vZGVfZmxhZ19zZXQoZG4tPmlub2RlLCBGSV9OT19BTExP
QykpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+PiAtICAgICBlcnIg
PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUsICZjb3VudCwgdHJ1ZSk7Cj4+
Pj4+ICsgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNv
dW50LCB0cnVlLCBmYWxzZSk7Cj4+Pj4+ICAgICAgICBpZiAodW5saWtlbHkoZXJyKSkKPj4+Pj4g
ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPj4+Pj4KPj4+Pj4gQEAgLTE1NDIsNyArMTU0Miw3
IEBAIHN0YXRpYyBpbnQgX19hbGxvY2F0ZV9kYXRhX2Jsb2NrKHN0cnVjdCBkbm9kZV9vZl9kYXRh
ICpkbiwgaW50IHNlZ190eXBlKQo+Pj4+Pgo+Pj4+PiAgICAgICAgZG4tPmRhdGFfYmxrYWRkciA9
IGYyZnNfZGF0YV9ibGthZGRyKGRuKTsKPj4+Pj4gICAgICAgIGlmIChkbi0+ZGF0YV9ibGthZGRy
ID09IE5VTExfQUREUikgewo+Pj4+PiAtICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9j
a19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNvdW50LCB0cnVlKTsKPj4+Pj4gKyAgICAgICAgICAg
ICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBkbi0+aW5vZGUsICZjb3VudCwgdHJ1
ZSwgZmFsc2UpOwo+Pj4+PiAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXJyKSkKPj4+Pj4g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4+PiAgICAgICAgfQo+Pj4+PiBk
aWZmIC0tZ2l0IGEvZnMvZjJmcy9leHRlbnRfY2FjaGUuYyBiL2ZzL2YyZnMvZXh0ZW50X2NhY2hl
LmMKPj4+Pj4gaW5kZXggNjFmNmI5NzE0MzY2Li4zYTczN2RiMGM5ZTEgMTAwNjQ0Cj4+Pj4+IC0t
LSBhL2ZzL2YyZnMvZXh0ZW50X2NhY2hlLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9leHRlbnRfY2Fj
aGUuYwo+Pj4+PiBAQCAtNjIsNiArNjIsMTMgQEAgYm9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2Nh
Y2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+Pj4+PiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBlaS5ibGssIGVp
LmZvZnMsIGVpLmxlbik7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
Owo+Pj4+PiAgICAgICAgICAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAo
KGVpLmJsayAlIEJMS1NfUEVSX1NFQyhzYmkpKSB8fCAoZWkubGVuICUgQkxLU19QRVJfU0VDKHNi
aSkpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiJXM6IGRl
dmljZSBhbGlhcyBpbm9kZSAoaW5vPSVsbHgpJ3MgZXh0ZW50IGluZm8gWyV1LCAldSwgJXVdIGlz
IG5vdCBhbGlnbmVkIHRvIHNlY3Rpb24gc2l6ZSAldSIsCj4+Pj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19mdW5jX18sIGlub2RlLT5pX2lubywgZWkuYmxrLCBlaS5mb2ZzLCBl
aS5sZW4sCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxLU19QRVJfU0VD
KHNiaSkpOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+PiAr
ICAgICAgICAgICAgIH0KPj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4+Pj4+ICAg
ICAgICB9Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMv
ZjJmcy5oCj4+Pj4+IGluZGV4IGYxNzc0ZDRlMThkMi4uZjI0ZTMwYmI1YzNkIDEwMDY0NAo+Pj4+
PiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+Pj4+PiArKysgYi9mcy9mMmZzL2YyZnMuaAo+Pj4+PiBA
QCAtMTQwNCw2ICsxNDA0LDggQEAgc3RydWN0IGYyZnNfZGV2X2luZm8gewo+Pj4+PiAgICAgICAg
dW5zaWduZWQgaW50IHRvdGFsX3NlZ21lbnRzOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBzdGFydF9i
bGs7Cj4+Pj4+ICAgICAgICBibG9ja190IGVuZF9ibGs7Cj4+Pj4+ICsgICAgIGJvb2wgaGFzX2Fs
aWFzOwo+Pj4+PiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPj4+Pj4gICAgI2lmZGVmIENPTkZJ
R19CTEtfREVWX1pPTkVECj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgbnJfYmxrejsgICAgICAg
ICAgIC8qIFRvdGFsIG51bWJlciBvZiB6b25lcyAqLwo+Pj4+PiAgICAgICAgdW5zaWduZWQgbG9u
ZyAqYmxrel9zZXE7ICAgICAgICAvKiBCaXRtYXAgaW5kaWNhdGluZyBzZXF1ZW50aWFsIHpvbmVz
ICovCj4+Pj4+IEBAIC0xODU3LDYgKzE4NTksNyBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPj4+
Pj4gICAgICAgIGJsb2NrX3QgbGFzdF92YWxpZF9ibG9ja19jb3VudDsgICAgICAgICAvKiBmb3Ig
cmVjb3ZlcnkgKi8KPj4+Pj4gICAgICAgIGJsb2NrX3QgcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAg
ICAgICAgICAvKiBjb25maWd1cmFibGUgcmVzZXJ2ZWQgYmxvY2tzICovCj4+Pj4+ICAgICAgICBi
bG9ja190IGN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgLyogY3VycmVudCByZXNlcnZl
ZCBibG9ja3MgKi8KPj4+Pj4gKyAgICAgYmxvY2tfdCBhbGlhc19yZXNlcnZlZF9ibG9ja3M7ICAg
ICAgICAgIC8qIHJlc2VydmVkIGJsb2NrcyBmb3IgZGV2aWNlIGFsaWFzICovCj4+Pj4+Cj4+Pj4+
ICAgICAgICAvKiBBZGRpdGlvbmFsIHRyYWNraW5nIGZvciBubyBjaGVja3BvaW50IG1vZGUgKi8K
Pj4+Pj4gICAgICAgIGJsb2NrX3QgdW51c2FibGVfYmxvY2tfY291bnQ7ICAgICAgICAgICAvKiAj
IG9mIGJsb2NrcyBzYXZlZCBieSBsYXN0IGNwICovCj4+Pj4+IEBAIC0yNTU5LDcgKzI1NjIsOCBA
QCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0
cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgICAgIGJsb2NrX3QgYXZhaWxfdXNlcl9i
bG9ja19jb3VudDsKPj4+Pj4KPj4+Pj4gICAgICAgIGF2YWlsX3VzZXJfYmxvY2tfY291bnQgPSBz
YmktPnVzZXJfYmxvY2tfY291bnQgLQo+Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3M7Cj4+Pj4+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyAt
Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5hbGlhc19y
ZXNlcnZlZF9ibG9ja3M7Cj4+Pj4+Cj4+Pj4+ICAgICAgICBpZiAodGVzdF9vcHQoc2JpLCBSRVNF
UlZFX1JPT1QpICYmICFfX2FsbG93X3Jlc2VydmVkX3Jvb3Qoc2JpLCBpbm9kZSwgY2FwKSkKPj4+
Pj4gICAgICAgICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCAtPSBGMkZTX09QVElPTihz
YmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzOwo+Pj4+PiBAQCAtMjU3Niw3ICsyNTgwLDggQEAgc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzdHJ1Y3Qg
ZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+Cj4+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmMmZz
X2lfYmxvY2tzX3dyaXRlKHN0cnVjdCBpbm9kZSAqLCBibG9ja190LCBib29sLCBib29sKTsKPj4+
Pj4gICAgc3RhdGljIGlubGluZSBpbnQgaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZz
X3NiX2luZm8gKnNiaSwKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBpbm9kZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwgYm9vbCBwYXJ0aWFsKQo+Pj4+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgYmxrY250X3Qg
KmNvdW50LAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJ0aWFs
LCBib29sIGFsaWFzX3Jlc2VydmVkKQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICBsb25nIGxvbmcg
ZGlmZiA9IDAsIHJlbGVhc2UgPSAwOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBhdmFpbF91c2VyX2Js
b2NrX2NvdW50Owo+Pj4+PiBAQCAtMjU5OSwxMCArMjYwNCwxNiBAQCBzdGF0aWMgaW5saW5lIGlu
dCBpbmNfdmFsaWRfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+Pgo+
Pj4+PiAgICAgICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+Pj4+Cj4+Pj4+ICsgICAg
IGlmIChhbGlhc19yZXNlcnZlZCkKPj4+Pj4gKyAgICAgICAgICAgICBzYmktPmFsaWFzX3Jlc2Vy
dmVkX2Jsb2NrcyAtPSAqY291bnQ7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGF2YWlsX3VzZXJfYmxv
Y2tfY291bnQgPSBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsIHRydWUpOwo+
Pj4+PiAgICAgICAgZGlmZiA9IChsb25nIGxvbmcpc2JpLT50b3RhbF92YWxpZF9ibG9ja19jb3Vu
dCArICpjb3VudCAtCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2Vs
eShkaWZmID4gMCkpIHsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoYWxpYXNfcmVzZXJ2ZWQpCj4+
Pj4+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyArPSAq
Y291bnQ7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWFsKSB7Cj4+Pj4+
ICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+
Pj4gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlID0gKmNvdW50Owo+Pj4+PiBAQCAtNDAx
MCw2ICs0MDIxLDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3Ni
X2luZm8gKnNiaSk7Cj4+Pj4+ICAgIHZvaWQgZjJmc19kZXN0cm95X2ZsdXNoX2NtZF9jb250cm9s
KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYm9vbCBmcmVlKTsKPj4+Pj4gICAgdm9pZCBmMmZz
X2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRy
LAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBsZW4pOwo+Pj4+PiArdm9pZCBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHN0
cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4+Pj4+
ICAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz
YmksIGJsb2NrX3QgYmxrYWRkcik7Cj4+Pj4+ICAgIGludCBmMmZzX3N0YXJ0X2Rpc2NhcmRfdGhy
ZWFkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+Pj4+ICAgIHZvaWQgZjJmc19kcm9wX2Rp
c2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+Pj4+IEBAIC00MjMxLDYgKzQy
NDQsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFuYWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpz
YmkpOwo+Pj4+PiAgICBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks
Cj4+Pj4+ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9zZWcsIHVuc2lnbmVkIGlu
dCBlbmRfc2VnLAo+Pj4+PiAgICAgICAgICAgICAgICBib29sIGRyeV9ydW4sIHVuc2lnbmVkIGlu
dCBkcnlfcnVuX3NlY3Rpb25zKTsKPj4+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1fcmVz
b3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCk7Cj4+Pj4+ICAgIGludCBmMmZzX3Jlc2l6
ZV9mcyhzdHJ1Y3QgZmlsZSAqZmlscCwgX191NjQgYmxvY2tfY291bnQpOwo+Pj4+PiAgICBpbnQg
X19pbml0IGYyZnNfY3JlYXRlX2dhcmJhZ2VfY29sbGVjdGlvbl9jYWNoZSh2b2lkKTsKPj4+Pj4g
ICAgdm9pZCBmMmZzX2Rlc3Ryb3lfZ2FyYmFnZV9jb2xsZWN0aW9uX2NhY2hlKHZvaWQpOwo+Pj4+
PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+Pj4+PiBpbmRl
eCA0YjUyYzU2ZDcxZjAuLjgzNWYxMGJjNTliNSAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9m
aWxlLmMKPj4+Pj4gKysrIGIvZnMvZjJmcy9maWxlLmMKPj4+Pj4gQEAgLTgxMywxMyArODEzLDE5
IEBAIGludCBmMmZzX2RvX3RydW5jYXRlX2Jsb2NrcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQg
ZnJvbSwgYm9vbCBsb2NrKQo+Pj4+Pgo+Pj4+PiAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lO
Ryhpbm9kZSkpIHsKPj4+Pj4gICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF90cmVlICpldCA9
IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+Pj4+PiAtICAgICAgICAgICAg
IHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9IGV0LT5sYXJnZXN0Owo+Pj4+PiArICAgICAgICAgICAg
IHN0cnVjdCBleHRlbnRfaW5mbyBlaTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIHJlYWRf
bG9jaygmZXQtPmxvY2spOwo+Pj4+PiArICAgICAgICAgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+
Pj4+ICsgICAgICAgICAgICAgcmVhZF91bmxvY2soJmV0LT5sb2NrKTsKPj4+Pj4KPj4+Pj4gICAg
ICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzYmksIGVpLmJsaywgZWkubGVuKTsK
Pj4+Pj4KPj4+Pj4gICAgICAgICAgICAgICAgZGVjX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5v
ZGUsIGVpLmxlbik7Cj4+Pj4+ICAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2JpLCBS
RVFfVElNRSk7Cj4+Pj4+Cj4+Pj4+ICsgICAgICAgICAgICAgZjJmc19kcm9wX2V4dGVudF90cmVl
KGlub2RlKTsKPj4+Pj4gKwo+Pj4+PiAgICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9s
aW8sIHRydWUpOwo+Pj4+PiAgICAgICAgICAgICAgICBnb3RvIG91dDsKPj4+Pj4gICAgICAgIH0K
Pj4+Pj4gQEAgLTExMDAsOCArMTEwNiw5IEBAIGludCBmMmZzX3NldGF0dHIoc3RydWN0IG1udF9p
ZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPj4+Pj4gICAgICAgIGlmICgoYXR0
ci0+aWFfdmFsaWQgJiBBVFRSX1NJWkUpKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlmIChtYXBw
aW5nX2xhcmdlX2ZvbGlvX3N1cHBvcnQoaW5vZGUtPmlfbWFwcGluZykpCj4+Pj4+ICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiAtICAgICAgICAgICAgIGlm
ICghZjJmc19pc19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+Pj4+PiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiAr
ICAgICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoIWYy
ZnNfaXNfY29tcHJlc3NfYmFja2VuZF9yZWFkeShpbm9kZSkpCj4+Pj4+ICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiAgICAgICAgICAgICAgICBpZiAoaXNf
aW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJX0NPTVBSRVNTX1JFTEVBU0VEKSAmJgo+Pj4+PiAgICAg
ICAgICAgICAgICAgICAgICAgICFJU19BTElHTkVEKGF0dHItPmlhX3NpemUsCj4+Pj4+IEBAIC0y
MTMwLDYgKzIxMzcsOSBAQCBzdGF0aWMgaW50IGYyZnNfc2V0ZmxhZ3NfY29tbW9uKHN0cnVjdCBp
bm9kZSAqaW5vZGUsIHUzMiBpZmxhZ3MsIHUzMiBtYXNrKQo+Pj4+PiAgICAgICAgaWYgKElTX05P
UVVPVEEoaW5vZGUpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+Pgo+
Pj4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+Pj4gKyAgICAgICAg
ICAgICByZXR1cm4gLUVQRVJNOwo+Pj4+PiArCj4+Pj4+ICAgICAgICBpZiAoKGlmbGFncyBeIG1h
c2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlm
ICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4+Pj4+ICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4+PiBAQCAtMjY3OCw2ICsyNjg4
LDE3IEBAIHN0YXRpYyBpbnQgZjJmc19pb2NfZ2V0X2VuY3J5cHRpb25fcG9saWN5KHN0cnVjdCBm
aWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgIHJldHVybiBmc2NyeXB0
X2lvY3RsX2dldF9wb2xpY3koZmlscCwgKHZvaWQgX191c2VyICopYXJnKTsKPj4+Pj4gICAgfQo+
Pj4+Pgo+Pj4+PiArc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhzdHJ1
Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgIHN0
cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiArCj4+Pj4+ICsgICAg
IGlmICghSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1
cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiArICAgICByZXR1cm4gcHV0X3VzZXIoRjJGU19IQVNf
QkxPQ0tTKGlub2RlKSA/IEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRVNFUlZFRCA6Cj4+Pj4+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNF
RCwgKHUzMiBfX3VzZXIgKilhcmcpOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICAgIHN0YXRpYyBp
bnQgZjJmc19pb2NfZ2V0X2VuY3J5cHRpb25fcHdzYWx0KHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp
Z25lZCBsb25nIGFyZykKPj4+Pj4gICAgewo+Pj4+PiAgICAgICAgc3RydWN0IGlub2RlICppbm9k
ZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4+Pj4+IEBAIC0zNjE2LDYgKzM2MzcsMjQxIEBAIHN0YXRp
YyBpbnQgZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19maWxlKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNp
Z25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAodTMyIF9fdXNlciAq
KWFyZyk7Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gK3N0YXRpYyBib29sIGYyZnNfZ2V0X2Rldl9h
bGlhc19leHRlbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+Pj4+PiArICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvICplaSkK
Pj4+Pj4gK3sKPj4+Pj4gKyAgICAgaW50IGk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZm9yIChpID0g
MTsgaSA8IHNiaS0+c19uZGV2czsgaSsrKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgY2hhciAqbmFt
ZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAg
ICAgbmFtZSA9IG5hbWUgPyBuYW1lICsgMSA6IEZERVYoaSkucGF0aDsKPj4+Pj4gKyAgICAgICAg
ICAgICBpZiAoc3RyY21wKG5hbWUsIGRlbnRyeS0+ZF9uYW1lLm5hbWUpKQo+Pj4+PiArICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICBlaS0+
YmxrID0gRkRFVihpKS5zdGFydF9ibGs7Cj4+Pj4+ICsgICAgICAgICAgICAgZWktPmxlbiA9IEZE
RVYoaSkudG90YWxfc2VnbWVudHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4+Pj4+ICsg
ICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiB0cnVl
Owo+Pj4+PiArICAgICB9Cj4+Pj4+ICsgICAgIHJldHVybiBmYWxzZTsKPj4+Pj4gK30KPj4+Pj4g
Kwo+Pj4+PiArc3RhdGljIGludCBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhzdHJ1Y3QgZmls
ZSAqZmlscCkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVf
aW5vZGUoZmlscCk7Cj4+Pj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNf
SV9TQihpbm9kZSk7Cj4+Pj4+ICsgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQgPSBGMkZTX0ko
aW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPj4+Pj4gKyAgICAgc3RydWN0IGV4dGVudF9p
bmZvIGVpOwo+Pj4+PiArICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAs
IDAsIDAgfTsKPj4+Pj4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4+
Pj4+ICsgICAgIGJsa2NudF90IGNvdW50Owo+Pj4+PiArICAgICB1bnNpZ25lZCBpbnQgc3RhcnQs
IGVuZDsKPj4+Pj4gKyAgICAgaW50IHR5cGUsIGVycjsKPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAo
IWNhcGFibGUoQ0FQX1NZU19BRE1JTikpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVS
TTsKPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwg
U0JJX0NQX0RJU0FCTEVEKSkpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+
Pj4+ICsKPj4+Pj4gKyAgICAgZXJyID0gbW50X3dhbnRfd3JpdGVfZmlsZShmaWxwKTsKPj4+Pj4g
KyAgICAgaWYgKGVycikKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4+PiArCj4+
Pj4+ICsgICAgIGlub2RlX2xvY2soaW5vZGUpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghSVNf
REVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5W
QUw7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAg
ICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkpIHsKPj4+
Pj4gKyAgICAgICAgICAgICBlcnIgPSAwOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu
b2RlX3VubG9jazsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghZjJmc19n
ZXRfZGV2X2FsaWFzX2V4dGVudChzYmksIGZpbHAtPmZfcGF0aC5kZW50cnksICZlaSkpIHsKPj4+
Pj4gKyAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiZGV2aWNlIGFsaWFzIGZpbGUgKCVzLCBp
bm89JWxsdSkgaGFzIG5vIG1hdGNoaW5nIGRldmljZSIsCj4+Pj4+ICsgICAgICAgICAgICAgICAg
ICAgICAgIGZpbHAtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lLAo+Pj4+PiArICAgICAgICAg
ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLT5pX2lubyk7Cj4+Pj4+ICsg
ICAgICAgICAgICAgc2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7Cj4+Pj4+ICsgICAg
ICAgICAgICAgZjJmc19oYW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9DT1JSVVBURURfSU5PREUpOwo+
Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FRlNDT1JSVVBURUQ7Cj4+Pj4+ICsgICAgICAgICAg
ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAg
ICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+Pj4+ICsgICAgIGlmIChzYmktPnRvdGFs
X3ZhbGlkX2Jsb2NrX2NvdW50ICsgZWkubGVuID4KPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg
IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgdHJ1ZSkpIHsKPj4+Pj4gKyAg
ICAgICAgICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+Pj4+PiArICAgICAgICAg
ICAgIGVyciA9IC1FTk9TUEM7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5s
b2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tz
ICs9IGVpLmxlbjsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+
Pj4gKwo+Pj4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4+
Pj4+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNf
cmVzZXJ2aW5nID0gdHJ1ZTsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5z
ZWdtYXBfbG9jayk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgc3RhcnQgPSBHRVRfU0VHTk8oc2JpLCBl
aS5ibGspOwo+Pj4+PiArICAgICBlbmQgPSBHRVRfU0VHTk8oc2JpLCBlaS5ibGsgKyBlaS5sZW4g
LSAxKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAvKiBBY3F1aXJlIGdjX2xvY2sgZm9yIHZpY3RpbSBy
ZXNldCwgY3Vyc2VnIHJlc2l6ZSwgYW5kIHJhbmdlIEdDICovCj4+Pj4+ICsgICAgIGYyZnNfZG93
bl93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAv
KiBSZXNldCB0aGUgdmljdGltIGluZm9ybWF0aW9uIHRvIHByZXZlbnQgR0MgZnJvbSB0YXJnZXRp
bmcgdGhlIHJhbmdlICovCj4+Pj4+ICsgICAgIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNl
KHNiaSwgc3RhcnQsIGVuZCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgLyogTW92ZSBvdXQgY3Vyc2Vn
cyBmcm9tIHRoZSB0YXJnZXQgcmFuZ2UgKi8KPj4+Pj4gKyAgICAgZm9yICh0eXBlID0gQ1VSU0VH
X0hPVF9EQVRBOyB0eXBlIDwgTlJfQ1VSU0VHX1BFUlNJU1RfVFlQRTsgdHlwZSsrKSB7Cj4+Pj4+
ICsgICAgICAgICAgICAgZXJyID0gZjJmc19hbGxvY2F0ZV9zZWdtZW50X2Zvcl9yZXNpemUoc2Jp
LCB0eXBlLCBzdGFydCwgZW5kKTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+Pj4+PiAr
ICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+
Pj4+ICsKPj4+Pj4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPj4+Pj4gKwo+Pj4+PiAr
ICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkp
IHsKPj4+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4+PiArICAgICAgICAgICAg
IGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9n
Y191bmxvY2s7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgICAvKiBkbyBHQyB0byBt
b3ZlIG91dCB2YWxpZCBibG9ja3MgaW4gdGhlIHJhbmdlIGFsbCBhdCBvbmNlISAqLwo+Pj4+PiAr
ICAgICBlcnIgPSBmMmZzX2djX3JhbmdlKHNiaSwgc3RhcnQsIGVuZCwgZmFsc2UsIDApOwo+Pj4+
PiArICAgICBpZiAoZXJyKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2Jp
LCAmbGMpOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPj4+Pj4gKyAg
ICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGNvdW50ID0gZWkubGVuOwo+Pj4+PiArICAgICBlcnIg
PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCBmYWxzZSwgdHJ1ZSk7
Cj4+Pj4+ICsgICAgIGlmIChlcnIpIHsKPj4+Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19v
cChzYmksICZsYyk7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4+
PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgd3JpdGVfbG9jaygmZXQtPmxvY2spOwo+Pj4+
PiArICAgICBldC0+bGFyZ2VzdCA9IGVpOwo+Pj4+PiArICAgICB3cml0ZV91bmxvY2soJmV0LT5s
b2NrKTsKPj4+Pj4gKyAgICAgY2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsK
Pj4+Pj4gKwo+Pj4+PiArICAgICBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHNiaSwgZWkuYmxr
LCBlaS5sZW4pOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxvZmZf
dCllaS5sZW4gPDwgc2JpLT5sb2dfYmxvY2tzaXplKTsKPj4+Pj4gKyAgICAgZjJmc191cGRhdGVf
aW5vZGVfcGFnZShpbm9kZSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgc3Bpbl9sb2NrKCZGUkVFX0ko
c2JpKS0+c2VnbWFwX2xvY2spOwo+Pj4+PiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9p
bmRleChzYmksIGVpLmJsaykpLmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+Pj4+PiArICAgICBzcGlu
X3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+Pj4gKwo+Pj4+PiArICAgICBm
MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2Uo
JnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4KPj4+PiBEbyB3ZSBuZWVkIHRvIGNhbGwgZjJmc193
cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYykgaGVyZSB0byBtYWtlIHN1cmUgcGVyc2lzdAo+Pj4+
IGRldmljZSBhbGlhcyBmaWxlIGZpcnN0PyB0byBhdm9pZCBmb2xsb3dpbmcgZjJmc19pb2NfcmVs
ZWFzZV9kZXZfYWxpYXMoKSByYWNpbgo+Pj4+ICAgIHcvIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2Fs
aWFzKCk/Cj4+Pj4KPj4+PiAtIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzICAgICAgICAgICAg
LSBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcwo+Pj4+IC4uLgo+Pj4+ICAgIC0gZjJmc191bmxv
Y2tfb3AKPj4+PiAgICAtIGYyZnNfdXBfd3JpdGVfdHJhY2UoZ2NfbG9jaykKPj4+PiAgICAtIGlu
b2RlX3VubG9jawo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0gaW5vZGVfbG9jawo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgo+Pj4+ICAgIC0gZjJmc193cml0ZV9jaGVja3BvaW50Cj4+Pgo+Pj4gSGkgQ2hhbywK
Pj4+Cj4+PiBJIGNvdWxkbid0IGdldCB5b3VyIHBvaW50LiBDb3VsZCB5b3UgZWxhYm9yYXRlIG1v
cmUsIGlmIEkgbWlzc2VkIGl0Pwo+Pgo+PiBIaSBEYWVobywKPj4KPj4gQWN0dWFsbHksIHdoYXQg
SSBtZWFuIGlzIGlmIGYyZnNfd3JpdGVfY2hlY2twb2ludCgpIGlzIG5vdCBjb3ZlcmVkIGJ5Cj4+
IGlub2RlIGxvY2ssIGluIHJhY2UgY29uZGl0aW9uIHRoZXJlIHdpbGwgYmUgYmVsb3cgaW52b2tp
bmcgc2VyaWFsOgo+Pgo+PiBBc3N1bWU6Cj4+IGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFzIDo9
IHJlc2VydmVfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3BvaW50Cj4+IGYyZnNfaW9jX3Jl
bGVhc2VfZGV2X2FsaWFzIDo9IHJlbGVhc2VfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3Bv
aW50Cj4+Cj4+IDEpIFRocmVhZCBBOiByZXNlcnZlX2Rldl9hbGlhcwo+PiAyKSBUaHJlYWQgQjog
cmVsZWFzZV9kZXZfYWxpYXMKPj4gMykgVGhyZWFkIEM6IHJlc2VydmVfZGV2X2FsaWFzCj4+IDQp
IFRocmVhZCBCOiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQKPj4gNSkgVGhyZWFkIEE6IGYyZnNfd3Jp
dGVfY2hlY2twb2ludAo+PiA2KSBUaHJlYWQgQzogZjJmc193cml0ZV9jaGVja3BvaW50Cj4+Cj4+
IEFmdGVyIDEpIGFsbCBkYXRhIGFmdGVyIHJlc2VydmVfZGV2X2FsaWFzKCkgYXJlIG5vdCBjaGVj
a3BvaW50ZWQsIHRoZW4gdGhlCj4+IGZvbGxvd2luZyByZWxlYXNlX2Rldl9hbGlhcyBpbiAyKSB3
b24ndCBlbmNvdW50ZXIgYW55IGlzc3VlLCByaWdodD8gYW5kIHRoZQo+PiBzYW1lIHF1ZXRpb25z
IGZvciAzKS4KPj4KPj4gSU9XLCByZXNlcnZlX2Rldl9hbGlhcy9yZWxlYXNlX2Rldl9hbGlhcyBk
b2Vzbid0IG5lZWQgdG8gcmVseSBvbiBjaGVja3BvaW50ZWQKPj4gc3RhdGUgb2YgZWFjaCBvdGhl
ciwgYW0gSSB1bmRlcnN0YW5kIGl0IGNvcnJlY3RseT8gaWYgc28gdGhlcmUgd29uJ3QgYmUgYW55
Cj4+IGlzc3VlLgo+Pgo+Pj4KPj4+IDEuIEluLW1lbW9yeSBzdGF0ZSBpcyBhbHJlYWR5IGF0b21p
YyAoTm8gUmFjZSk6Cj4+PiAgICAgIEJlZm9yZSBpbm9kZV91bmxvY2soKSwgYWxsIGluLW1lbW9y
eSBtZXRhZGF0YSAoZXh0ZW50X3RyZWUsIFNJVAo+Pj4gc2VnbWVudCBiaXRtYXBzLCBpX3NpemUs
IGFuZCBkaXJ0eSBpbm9kZSBwYWdlKSBhcmUgZnVsbHkgdXBkYXRlZCB1bmRlcgo+Pj4gaW5vZGVf
bG9jayArIGYyZnNfbG9ja19vcC4gQSBzdWJzZXF1ZW50IGYyZnNfaW9jX3JlbGVhc2VfZGV2X2Fs
aWFzKCkKPj4+IHdpbGwgb2JzZXJ2ZSBhIGNvbXBsZXRlLCBjb25zaXN0ZW50IHN0YXRlLgo+Pj4K
Pj4+IDIuIE9uLWRpc2sgY29uc2lzdGVuY3kgJiBjcmFzaCBzYWZldHk6Cj4+PiAgICAgIENoZWNr
cG9pbnRzIGFyZSBzZXJpYWxpemVkIGludGVybmFsbHkgdmlhIGNwX211dGV4IC8KPj4+IGYyZnNf
bG9ja19hbGwoKS4gUmVnYXJkbGVzcyBvZiB0aGUgY2hlY2twb2ludCBleGVjdXRpb24gdGltaW5n
IG9yIGFueQo+Pj4gc3VkZGVuIHBvd2VyLW9mZiAoU1BPKSBiZXR3ZWVuIHRoZSB0d28gaW9jdGxz
LCB0aGUgZmlsZXN5c3RlbSBhbHdheXMKPj4+IHJlY292ZXJzIHRvIHRoZSBsYXN0IGNvbW1pdHRl
ZCBhdG9taWMgY2hlY2twb2ludCB3aXRob3V0IG1ldGFkYXRhCj4+PiBjb3JydXB0aW9uLgo+Pgo+
PiBUaGFua3MgZm9yIHRoZSBleHBsYW5hdGlvbi4KPj4KPj4gVGhhbmtzLAo+IAo+IAo+IFllcywg
eW91ciB1bmRlcnN0YW5kaW5nIGlzIGNvbXBsZXRlbHkgY29ycmVjdCEKPiAKPiBOZWl0aGVyIHJl
c2VydmVfZGV2X2FsaWFzKCkgbm9yIHJlbGVhc2VfZGV2X2FsaWFzKCkgcmVsaWVzIG9uIHRoZQo+
IGNoZWNrcG9pbnRlZCBzdGF0ZSBvZiBwcmV2aW91cyBvcGVyYXRpb25zLgo+IFRoZXkgb25seSBk
ZXBlbmQgb24gdGhlIGluLW1lbW9yeSBtZXRhZGF0YSAoZXh0ZW50IHRyZWUsIFNJVCBiaXRtYXBz
LAo+IGlfc2l6ZSwgZXRjLiksIHdoaWNoIGlzIGFscmVhZHkgYXRvbWljYWxseSB1cGRhdGVkIGFu
ZCBmdWxseQo+IHN5bmNocm9uaXplZCBieSBpbm9kZV9sb2NrIGFuZCBmMmZzX2xvY2tfb3AuCj4g
VGhlcmVmb3JlLCB0aGUgaW50ZXJsZWF2ZWQgY2hlY2twb2ludCBzY2VuYXJpbyB5b3UgZGVzY3Jp
YmVkIHdvbid0Cj4gY2F1c2UgYW55IGlzc3VlIGF0IGFsbC4KCkl0IG1ha2Ugc2Vuc2UsIHRoYW5r
cyBhIGxvdCBmb3IgdGhlIGV4cGxhbmF0aW9uIQoKVGhhbmtzLAoKPiAKPiBUaGFua3MsCj4gCj4+
Cj4+Pgo+Pj4gVGhhbmtzLAo+Pj4KPj4+Pgo+Pj4+PiArCj4+Pj4+ICsgICAgIGlub2RlX3VubG9j
ayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsK
Pj4+Pj4gKyAgICAgcmV0dXJuIGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpOwo+Pj4+
PiArCj4+Pj4+ICtvdXRfZ2NfdW5sb2NrOgo+Pj4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3Rh
dF9sb2NrKTsKPj4+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWkubGVu
Owo+Pj4+PiArICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+Pj4+PiArCj4+Pj4+
ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+Pj4gKyAgICAg
RkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcg
PSBmYWxzZTsKPj4+Pj4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9j
ayk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7
Cj4+Pj4+ICsKPj4+Pj4gK291dF9pbm9kZV91bmxvY2s6Cj4+Pj4+ICsgICAgIGlub2RlX3VubG9j
ayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsg
ICAgIHJldHVybiBlcnI7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBpbnQgZjJmc19p
b2NfcmVsZWFzZV9kZXZfYWxpYXMoc3RydWN0IGZpbGUgKmZpbHApCj4+Pj4+ICt7Cj4+Pj4+ICsg
ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiArICAgICBz
dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+Pj4+PiArICAgICBz
dHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVB
RF07Cj4+Pj4+ICsgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9IHswLCB9Owo+Pj4+PiArICAg
ICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAsIDAsIDAgfTsKPj4+Pj4gKyAg
ICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4+Pj4+ICsgICAgIGludCBlcnI7
Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQo+Pj4+PiAr
ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYgKHVubGlr
ZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+Pj4+PiArICAgICAg
ICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVyciA9IG1udF93YW50
X3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsgICAgIGlmIChlcnIpCj4+Pj4+ICsgICAgICAgICAg
ICAgcmV0dXJuIGVycjsKPj4+Pj4gKwo+Pj4+PiArICAgICBpbm9kZV9sb2NrKGlub2RlKTsKPj4+
Pj4gKwo+Pj4+PiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPj4+Pj4g
KyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0
X2lub2RlX3VubG9jazsKPj4+Pj4gKyAgICAgfQo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmICghRjJG
U19IQVNfQkxPQ0tTKGlub2RlKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4+Pj4+
ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+
ICsKPj4+Pj4gKyAgICAgZXJyID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdChpbm9kZS0+aV9tYXBw
aW5nKTsKPj4+Pj4gKyAgICAgaWYgKGVycikKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p
bm9kZV91bmxvY2s7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgcmVhZF9sb2NrKCZldC0+bG9jayk7Cj4+
Pj4+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4+Pj4+ICsgICAgIHJlYWRfdW5sb2NrKCZldC0+
bG9jayk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNlKCZzYmktPmdj
X2xvY2ssICZnbGMpOwo+Pj4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4+PiAr
Cj4+Pj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElT
QUJMRUQpKSkgewo+Pj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4+Pj4+ICsgICAg
ICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4+PiArICAgICAgICAgICAgIGYy
ZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4+ICsgICAgICAgICAg
ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICsKPj4+Pj4gKyAg
ICAgZmlsZW1hcF9pbnZhbGlkYXRlX2xvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4+Pj4+ICsgICAg
IHRydW5jYXRlX3NldHNpemUoaW5vZGUsIDApOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGVyciA9IGYy
ZnNfdHJ1bmNhdGVfYmxvY2tzKGlub2RlLCAwLCBmYWxzZSk7Cj4+Pj4+ICsgICAgIGlmIChlcnIp
Cj4+Pj4+ICsgICAgICAgICAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8
PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+Pj4+PiArICAgICBmaWxlbWFwX2ludmFsaWRhdGVfdW5s
b2NrKGlub2RlLT5pX21hcHBpbmcpOwo+Pj4+PiArCj4+Pj4+ICsgICAgIGlmIChlcnIpIHsKPj4+
Pj4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgICAg
ICAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPj4+Pj4gKyAg
ICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+
Pj4+PiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPj4+Pj4gKwo+Pj4+PiAr
ICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+Pj4+ICsgICAgIGYyZnNfdXBfd3JpdGVf
dHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+Pj4KPj4+PiAgICAgICAgICBlcnIgPSBmMmZz
X3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPj4+Pgo+Pj4+IFRoYW5rcywKPj4+Pgo+Pj4+
PiArCj4+Pj4+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4+Pj4+ICsgICAgIG1udF9kcm9w
X3dyaXRlX2ZpbGUoZmlscCk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgcmV0dXJuIGYyZnNfd3JpdGVf
Y2hlY2twb2ludChzYmksICZjcGMpOwo+Pj4+PiArCj4+Pj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+
Pj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4+PiArICAgICBtbnRfZHJvcF93cml0
ZV9maWxlKGZpbHApOwo+Pj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4+PiArfQo+Pj4+PiArCj4+
Pj4+ICAgIHN0YXRpYyBpbnQgZjJmc19pb2NfaW9fcHJpbyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z
aWduZWQgbG9uZyBhcmcpCj4+Pj4+ICAgIHsKPj4+Pj4gICAgICAgIHN0cnVjdCBpbm9kZSAqaW5v
ZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4+PiBAQCAtNDA0MSw3ICs0Mjk3LDcgQEAgc3RhdGlj
IGludCByZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIHBn
b2ZmX3QgY291bnQsCj4+Pj4+ICAgICAgICAgICAgICAgIH0KPj4+Pj4KPj4+Pj4gICAgICAgICAg
ICAgICAgcmV0ID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLAo+Pj4+PiAt
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRvX3Jlc2VydmVk
LCBmYWxzZSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmdG9fcmVzZXJ2ZWQsIGZhbHNlLCBmYWxzZSk7Cj4+Pj4+ICAgICAgICAgICAgICAgIGlm
ICh1bmxpa2VseShyZXQpKQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7
Cj4+Pj4+Cj4+Pj4+IEBAIC00NzQyLDggKzQ5OTgsMTQgQEAgc3RhdGljIGxvbmcgX19mMmZzX2lv
Y3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFy
ZykKPj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2NvbXByZXNzX2ZpbGUoZmls
cCk7Cj4+Pj4+ICAgICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRToKPj4+Pj4g
ICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfZmlsZShmaWxwLCBh
cmcpOwo+Pj4+PiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+Pj4+
PiArICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhmaWxw
LCBhcmcpOwo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+Pj4+PiAgICAgICAg
ICAgICAgICByZXR1cm4gZjJmc19pb2NfaW9fcHJpbyhmaWxwLCBhcmcpOwo+Pj4+PiArICAgICBj
YXNlIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+Pj4+PiArICAgICAgICAgICAgIHJldHVy
biBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhmaWxwKTsKPj4+Pj4gKyAgICAgY2FzZSBGMkZT
X0lPQ19SRUxFQVNFX0RFVl9BTElBUzoKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19p
b2NfcmVsZWFzZV9kZXZfYWxpYXMoZmlscCk7Cj4+Pj4+ICAgICAgICBkZWZhdWx0Ogo+Pj4+PiAg
ICAgICAgICAgICAgICByZXR1cm4gLUVOT1RUWTsKPj4+Pj4gICAgICAgIH0KPj4+Pj4gQEAgLTU1
MzAsNyArNTc5MiwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxl
LCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPj4+Pj4gICAgICAgIGNhc2Ug
RjJGU19JT0NfREVDT01QUkVTU19GSUxFOgo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19DT01Q
UkVTU19GSUxFOgo+Pj4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEU6
Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6Cj4+Pj4+ICAg
ICAgICBjYXNlIEYyRlNfSU9DX0lPX1BSSU86Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVT
RVJWRV9ERVZfQUxJQVM6Cj4+Pj4+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJ
QVM6Cj4+Pj4+ICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+PiAgICAgICAgZGVmYXVsdDoKPj4+
Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9JT0NUTENNRDsKPj4+Pj4gZGlmZiAtLWdpdCBh
L2ZzL2YyZnMvZ2MuYyBiL2ZzL2YyZnMvZ2MuYwo+Pj4+PiBpbmRleCBmZmFhN2JhNzZhMWIuLjkz
YmNiMzVhNWI1ZCAxMDA2NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9nYy5jCj4+Pj4+ICsrKyBiL2Zz
L2YyZnMvZ2MuYwo+Pj4+PiBAQCAtMjE5NywyOSArMjE5NywzNyBAQCBpbnQgZjJmc19nY19yYW5n
ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAgICByZXR1cm4gMDsKPj4+Pj4g
ICAgfQo+Pj4+Pgo+Pj4+PiArdm9pZCBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzdHJ1
Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBlbmQpCj4+Pj4+ICt7Cj4+Pj4+ICsgICAgIGludCBp
Owo+Pj4+PiArCj4+Pj4+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9s
b2NrKTsKPj4+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9HQ19QT0xJQ1k7IGkrKykKPj4+
Pj4gKyAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0aW1baV0gPj0gc3RhcnQg
JiYKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2ld
IDw9IGVuZCkKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3Rfdmlj
dGltW2ldID0gMDsKPj4+Pj4gKwo+Pj4+PiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBGR19H
QzsgaSsrKQo+Pj4+PiArICAgICAgICAgICAgIGlmIChzYmktPm5leHRfdmljdGltX3NlZ1tpXSA+
PSBzdGFydCAmJgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9z
ZWdbaV0gPD0gZW5kKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3Rp
bV9zZWdbaV0gPSBOVUxMX1NFR05POwo+Pj4+PiArICAgICBtdXRleF91bmxvY2soJkRJUlRZX0ko
c2JpKS0+c2VnbGlzdF9sb2NrKTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAgICBzdGF0aWMgaW50
IGZyZWVfc2VnbWVudF9yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VjcywgYm9vbCBkcnlfcnVu
KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pbnVzZSwgc3RhcnQs
IGVuZDsKPj4+Pj4gICAgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfUkVTSVpFLCAw
LCAwLCAwIH07Cj4+Pj4+IC0gICAgIGludCBnY19tb2RlLCBnY190eXBlOwo+Pj4+PiAgICAgICAg
aW50IGVyciA9IDA7Cj4+Pj4+ICAgICAgICBpbnQgdHlwZTsKPj4+Pj4KPj4+Pj4gLSAgICAgLyog
Rm9yY2UgYmxvY2sgYWxsb2NhdGlvbiBmb3IgR0MgKi8KPj4+Pj4gICAgICAgIE1BSU5fU0VDUyhz
YmkpIC09IHNlY3M7Cj4+Pj4+ICAgICAgICBzdGFydCA9IE1BSU5fU0VDUyhzYmkpICogU0VHU19Q
RVJfU0VDKHNiaSk7Cj4+Pj4+ICAgICAgICBlbmQgPSBNQUlOX1NFR1Moc2JpKSAtIDE7Cj4+Pj4+
Cj4+Pj4+IC0gICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPj4+
Pj4gLSAgICAgZm9yIChnY19tb2RlID0gMDsgZ2NfbW9kZSA8IE1BWF9HQ19QT0xJQ1k7IGdjX21v
ZGUrKykKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0aW1bZ2Nf
bW9kZV0gPj0gc3RhcnQpCj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s
YXN0X3ZpY3RpbVtnY19tb2RlXSA9IDA7Cj4+Pj4+IC0KPj4+Pj4gLSAgICAgZm9yIChnY190eXBl
ID0gQkdfR0M7IGdjX3R5cGUgPD0gRkdfR0M7IGdjX3R5cGUrKykKPj4+Pj4gLSAgICAgICAgICAg
ICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPj0gc3RhcnQpCj4+Pj4+IC0gICAg
ICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA9IE5VTExfU0VH
Tk87Cj4+Pj4+IC0gICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp
Owo+Pj4+PiArICAgICBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmksIHN0YXJ0LCBl
bmQpOwo+Pj4+Pgo+Pj4+PiAgICAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRoZSB0YXJn
ZXQgcmFuZ2UgKi8KPj4+Pj4gICAgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsgdHlw
ZSA8IE5SX0NVUlNFR19QRVJTSVNUX1RZUEU7IHR5cGUrKykgewo+Pj4+PiBkaWZmIC0tZ2l0IGEv
ZnMvZjJmcy9uYW1laS5jIGIvZnMvZjJmcy9uYW1laS5jCj4+Pj4+IGluZGV4IGNhYzAzYjhlOTFh
MS4uOGMzYjU3OTg3ZjZjIDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPj4+Pj4g
KysrIGIvZnMvZjJmcy9uYW1laS5jCj4+Pj4+IEBAIC00MjUsNiArNDI1LDkgQEAgc3RhdGljIGlu
dCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpkaXIs
Cj4+Pj4+ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+Pj4+PiAg
ICAgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKPj4+Pj4KPj4+Pj4gKyAgICAgaWYgKElTX0RF
VklDRV9BTElBU0lORyhpbm9kZSkpCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsK
Pj4+Pj4gKwo+Pj4+PiAgICAgICAgZXJyID0gZnNjcnlwdF9wcmVwYXJlX2xpbmsob2xkX2RlbnRy
eSwgZGlyLCBkZW50cnkpOwo+Pj4+PiAgICAgICAgaWYgKGVycikKPj4+Pj4gICAgICAgICAgICAg
ICAgcmV0dXJuIGVycjsKPj4+Pj4gQEAgLTU2OCw2ICs1NzEsOSBAQCBzdGF0aWMgaW50IGYyZnNf
dW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4+Pj4+Cj4+
Pj4+ICAgICAgICB0cmFjZV9mMmZzX3VubGlua19lbnRlcihkaXIsIGRlbnRyeSk7Cj4+Pj4+Cj4+
Pj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAgICAg
ICAgIHJldHVybiAtRVBFUk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZz
X2NwX2Vycm9yKHNiaSkpKSB7Cj4+Pj4+ICAgICAgICAgICAgICAgIGVyciA9IC1FSU87Cj4+Pj4+
ICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+Pj4+PiBAQCAtOTQ2LDYgKzk1Miw5IEBAIHN0YXRp
YyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAq
b2xkX2RpciwKPj4+Pj4gICAgICAgIGJvb2wgb2xkX2lzX2RpciA9IFNfSVNESVIob2xkX2lub2Rl
LT5pX21vZGUpOwo+Pj4+PiAgICAgICAgaW50IGVycjsKPj4+Pj4KPj4+Pj4gKyAgICAgaWYgKElT
X0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAt
RVBFUk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNi
aSkpKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4+Pj4gICAgICAgIGlmICgh
ZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4+Pj4+IEBAIC0xMDE2LDYgKzEwMjUsOCBA
QCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3Qg
aW5vZGUgKm9sZF9kaXIsCj4+Pj4+ICAgICAgICB9Cj4+Pj4+Cj4+Pj4+ICAgICAgICBpZiAobmV3
X2lub2RlKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhuZXdf
aW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPj4+Pj4K
Pj4+Pj4gICAgICAgICAgICAgICAgZXJyID0gLUVOT1RFTVBUWTsKPj4+Pj4gICAgICAgICAgICAg
ICAgaWYgKG9sZF9pc19kaXIgJiYgIWYyZnNfZW1wdHlfZGlyKG5ld19pbm9kZSkpCj4+Pj4+IEBA
IC0xMTQzLDYgKzExNTQsOSBAQCBzdGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0cnVjdCBp
bm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKPj4+Pj4gICAgICAgIGlu
dCBvbGRfbmxpbmsgPSAwLCBuZXdfbmxpbmsgPSAwOwo+Pj4+PiAgICAgICAgaW50IGVycjsKPj4+
Pj4KPj4+Pj4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpIHx8IElTX0RF
VklDRV9BTElBU0lORyhuZXdfaW5vZGUpKQo+Pj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBF
Uk07Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNiaSkp
KQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPj4+Pj4gICAgICAgIGlmICghZjJm
c19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4+Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3Nl
Z21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4+Pj4+IGluZGV4IGQ3MWRkYjNlZTkxOC4uZDcw
ZGM1ZWYzZGU0IDEwMDY0NAo+Pj4+PiAtLS0gYS9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4+PiArKysg
Yi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4+PiBAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBpbnQg
X19yZXBsYWNlX2F0b21pY193cml0ZV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBwZ29mZl90
IGluZGV4LAo+Pj4+PiAgICAgICAgfSBlbHNlIHsKPj4+Pj4gICAgICAgICAgICAgICAgYmxrY250
X3QgY291bnQgPSAxOwo+Pj4+Pgo+Pj4+PiAtICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9i
bG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIHRydWUpOwo+Pj4+PiArICAgICAgICAgICAg
IGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIHRydWUsIGZh
bHNlKTsKPj4+Pj4gICAgICAgICAgICAgICAgaWYgKGVycikgewo+Pj4+PiAgICAgICAgICAgICAg
ICAgICAgICAgIGYyZnNfcHV0X2Rub2RlKCZkbik7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVycjsKPj4+Pj4gQEAgLTI1MDIsMzUgKzI1MDIsNDIgQEAgc3RhdGljIGludCB1
cGRhdGVfc2l0X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVj
dCBzZWdfZW50cnkKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBzZWdubywgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgZGVs
KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgICAgICBib29sIGV4aXN0Owo+Pj4+PiArICAgICBpbnQgZGVs
X2NvdW50ID0gZGVsOwo+Pj4+PiArICAgICBpbnQgaTsKPj4+Pj4KPj4+Pj4gLSAgICAgZXhpc3Qg
PSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+Y3VyX3ZhbGlkX21hcCk7Cj4+Pj4+
IC0gICAgIGlmICh1bmxpa2VseShleGlzdCkpIHsKPj4+Pj4gLSAgICAgICAgICAgICBmMmZzX2Vy
cihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0LCBibGs6JXUiLCBibGthZGRyKTsKPj4+Pj4g
LSAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4+PiAtICAgICAgICAgICAgIHNl
LT52YWxpZF9ibG9ja3MtLTsKPj4+Pj4gLSAgICAgICAgICAgICBkZWwgPSAwOwo+Pj4+PiAtICAg
ICB9Cj4+Pj4+ICsgICAgIGYyZnNfYnVnX29uKHNiaSwgR0VUX1NFR05PKHNiaSwgYmxrYWRkcikg
IT0gR0VUX1NFR05PKHNiaSwgYmxrYWRkciArIGRlbF9jb3VudCAtIDEpKTsKPj4+Pj4KPj4+Pj4g
LSAgICAgaWYgKGYyZnNfYmxvY2tfdW5pdF9kaXNjYXJkKHNiaSkgJiYKPj4+Pj4gLSAgICAgICAg
ICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+ZGlzY2FyZF9t
YXApKQo+Pj4+PiAtICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9ibGtzLS07Cj4+Pj4+ICsgICAg
IGZvciAoaSA9IDA7IGkgPCBkZWxfY291bnQ7IGkrKykgewo+Pj4+PiArICAgICAgICAgICAgIGV4
aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCArIGksIHNlLT5jdXJfdmFsaWRfbWFw
KTsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4+Pj4+ICsgICAg
ICAgICAgICAgICAgICAgICBmMmZzX2VycihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0LCBi
bGs6JXUiLCBibGthZGRyICsgaSk7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX2J1
Z19vbihzYmksIDEpOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nr
cy0tOwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZGVsIC09IDE7Cj4+Pj4+ICsgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+Cj4+Pj4+
IC0gICAgIC8qCj4+Pj4+IC0gICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hp
Y2ggaXMgY2hlY2twb2ludGVkCj4+Pj4+IC0gICAgICAqIG9yIG5ld2x5IGludmFsaWRhdGVkLgo+
Pj4+PiAtICAgICAgKi8KPj4+Pj4gLSAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklf
Q1BfRElTQUJMRUQpKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3Nl
dF9iaXQob2Zmc2V0LCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4+Pj4+IC0gICAgICAgICAgICAg
ICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPj4+Pj4gLSAgICAgICAgICAgICAgICAg
ICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPj4+Pj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3Mr
KzsKPj4+Pj4gKyAgICAgICAgICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAm
Jgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZjJmc190ZXN0X2FuZF9zZXRf
Yml0KG9mZnNldCArIGksIHNlLT5kaXNjYXJkX21hcCkpCj4+Pj4+ICsgICAgICAgICAgICAgICAg
ICAgICBzYmktPmRpc2NhcmRfYmxrcy0tOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgLyoK
Pj4+Pj4gKyAgICAgICAgICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJldXNlIGJsb2NrIHdoaWNo
IGlzIGNoZWNrcG9pbnRlZAo+Pj4+PiArICAgICAgICAgICAgICAqIG9yIG5ld2x5IGludmFsaWRh
dGVkLgo+Pj4+PiArICAgICAgICAgICAgICAqLwo+Pj4+PiArICAgICAgICAgICAgIGlmICghaXNf
c2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkgewo+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRf
dmFsaWRfbWFwKSkgewo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZS0+Y2tw
dF92YWxpZF9ibG9ja3MrKzsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tz
Kys7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4+Pj4+ICAgICAgICAgICAgICAgIH0K
Pj4+Pj4gLSAgICAgfQo+Pj4+Pgo+Pj4+PiAtICAgICBpZiAoIWYyZnNfdGVzdF9iaXQob2Zmc2V0
LCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgc2UtPmNrcHRfdmFs
aWRfYmxvY2tzICs9IGRlbDsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0
aW9uKHNiaSkpCj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwg
c2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSBkZWw7Cj4+Pj4+ICsgICAgICAgICAgICAgaWYg
KCFmMmZzX3Rlc3RfYml0KG9mZnNldCArIGksIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4+PiAr
ICAgICAgICAgICAgICAgICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4+PiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5j
a3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4+PiArICAgICAgICAgICAgIH0KPj4+Pj4gICAgICAg
IH0KPj4+Pj4KPj4+Pj4gICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPj4+Pj4g
QEAgLTI1ODUsOSArMjU5MiwxNCBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0
IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+Pj4+ICAgICAgICB1bnNpZ25lZCBp
bnQgc2Vnbm8gPSBHRVRfU0VHTk8oc2JpLCBhZGRyKTsKPj4+Pj4gICAgICAgIHN0cnVjdCBzaXRf
aW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+Pj4+PiAgICAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0
ID0gYWRkciwgYWRkcl9lbmQgPSBhZGRyICsgbGVuIC0gMTsKPj4+Pj4gLSAgICAgdW5zaWduZWQg
aW50IHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4+Pj4+
ICsgICAgIHVuc2lnbmVkIGludCBzZWdfbnVtOwo+Pj4+PiAgICAgICAgdW5zaWduZWQgaW50IGkg
PSAxLCBtYXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+Pj4+Pgo+Pj4+PiAr
ICAgICBpZiAobGVuID09IDApCj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+PiArCj4+
Pj4+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7
Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIGYyZnNfYnVnX29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIp
Owo+Pj4+PiAgICAgICAgaWYgKGFkZHIgPT0gTkVXX0FERFIgfHwgYWRkciA9PSBDT01QUkVTU19B
RERSKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4+IEBAIC0yNjIwLDYgKzI2MzIs
NTIgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi
aSwgYmxvY2tfdCBhZGRyLAo+Pj4+PiAgICAgICAgdXBfd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9j
ayk7Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlh
cyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPj4+Pj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikKPj4+Pj4gK3sKPj4+Pj4gKyAg
ICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4+Pj4+ICsgICAg
IHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+Pj4+PiArICAgICBibG9ja190
IGFkZHJfc3RhcnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+Pj4+PiArICAg
ICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPj4+Pj4gKyAgICAgdW5zaWduZWQgaW50IGkgPSAxLCBt
YXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+Pj4+PiArCj4+Pj4+ICsgICAg
IGlmIChsZW4gPT0gMCkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4+Pj4+ICsKPj4+Pj4g
KyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsgMTsKPj4+
Pj4gKwo+Pj4+PiArICAgICBkb3duX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4+PiAr
Cj4+Pj4+ICsgICAgIGlmIChzZWdfbnVtID09IDEpCj4+Pj4+ICsgICAgICAgICAgICAgY250ID0g
bGVuOwo+Pj4+PiArICAgICBlbHNlCj4+Pj4+ICsgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2Nr
cyAtIEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcik7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAg
ZG8gewo+Pj4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zZWdtZW50X210aW1lKHNiaSwgYWRkcl9z
dGFydCwgMCk7Cj4+Pj4+ICsgICAgICAgICAgICAgdXBkYXRlX3NpdF9lbnRyeShzYmksIGFkZHJf
c3RhcnQsIGNudCk7Cj4+Pj4+ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2Jp
LCBzZWdubyk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICAvKiBSZW1vdmUgdGhlIHNlZ21l
bnQgZnJvbSBQUkUgKHByZWZyZWUpIHRvIHByZXZlbnQgY2hlY2twb2ludCBmcm9tIGZyZWVpbmcg
aXQhICovCj4+Pj4+ICsgICAgICAgICAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWds
aXN0X2xvY2spOwo+Pj4+PiArICAgICAgICAgICAgIGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoc2Vn
bm8sIERJUlRZX0koc2JpKS0+ZGlydHlfc2VnbWFwW1BSRV0pKQo+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgRElSVFlfSShzYmkpLT5ucl9kaXJ0eVtQUkVdLS07Cj4+Pj4+ICsgICAgICAgICAg
ICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4+Pj4+ICsKPj4+
Pj4gKyAgICAgICAgICAgICAvKiBhZGQgaXQgaW50byBkaXJ0eSBzZWdsaXN0ICovCj4+Pj4+ICsg
ICAgICAgICAgICAgbG9jYXRlX2RpcnR5X3NlZ21lbnQoc2JpLCBzZWdubyk7Cj4+Pj4+ICsKPj4+
Pj4gKyAgICAgICAgICAgICAvKiB1cGRhdGUgQGFkZHJfc3RhcnQgYW5kIEBjbnQgYW5kIEBzZWdu
byAqLwo+Pj4+PiArICAgICAgICAgICAgIGFkZHJfc3RhcnQgPSBTVEFSVF9CTE9DSyhzYmksICsr
c2Vnbm8pOwo+Pj4+PiArICAgICAgICAgICAgIGlmICgrK2kgPT0gc2VnX251bSkKPj4+Pj4gKyAg
ICAgICAgICAgICAgICAgICAgIGNudCA9IEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcl9l
bmQpICsgMTsKPj4+Pj4gKyAgICAgICAgICAgICBlbHNlCj4+Pj4+ICsgICAgICAgICAgICAgICAg
ICAgICBjbnQgPSBtYXhfYmxvY2tzOwo+Pj4+PiArICAgICB9IHdoaWxlIChpIDw9IHNlZ19udW0p
Owo+Pj4+PiArCj4+Pj4+ICsgICAgIHVwX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4+
PiArfQo+Pj4+PiArCj4+Pj4+ICAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1
Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRkcikKPj4+Pj4gICAgewo+Pj4+PiAg
ICAgICAgc3RydWN0IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4+Pj4+IEBAIC0yNzU4
LDggKzI4MTYsMTMgQEAgc3RhdGljIGludCBpc19uZXh0X3NlZ21lbnRfZnJlZShzdHJ1Y3QgZjJm
c19zYl9pbmZvICpzYmksCj4+Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8gPSBjdXJzZWct
PnNlZ25vICsgMTsKPj4+Pj4gICAgICAgIHN0cnVjdCBmcmVlX3NlZ21hcF9pbmZvICpmcmVlX2kg
PSBGUkVFX0koc2JpKTsKPj4+Pj4KPj4+Pj4gLSAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNi
aSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkKPj4+Pj4gKyAgICAgaWYgKHNlZ25vIDwg
TUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkgewo+Pj4+PiArICAg
ICAgICAgICAgIGludCBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRf
QkxPQ0soc2JpLCBzZWdubykpOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNf
ZGV2X2lzX3Jlc2VydmluZyhzYmksIGRldmkpKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7Cj4+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiAhdGVzdF9iaXQoc2Vnbm8sIGZy
ZWVfaS0+ZnJlZV9zZWdtYXApOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICAgICAgICByZXR1cm4gMDsK
Pj4+Pj4gICAgfQo+Pj4+Pgo+Pj4+PiBAQCAtMjc3OCw3ICsyODQxLDggQEAgc3RhdGljIGludCBn
ZXRfbmV3X3NlZ21lbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiAgICAgICAgdW5z
aWduZWQgaW50IGFsbG9jX3BvbGljeSA9IHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3k7Cj4+
Pj4+ICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NfaGludCA9IHNiaS0+YWxsb2NhdGVfc2VjdGlv
bl9oaW50Owo+Pj4+PiAgICAgICAgYm9vbCBpbml0ID0gdHJ1ZTsKPj4+Pj4gLSAgICAgaW50IGk7
Cj4+Pj4+ICsgICAgIGJvb2wgbG9vcGVkID0gZmFsc2U7Cj4+Pj4+ICsgICAgIGludCBpLCBkZXZp
Owo+Pj4+PiAgICAgICAgaW50IHJldCA9IDA7Cj4+Pj4+Cj4+Pj4+ICAgICAgICBzcGluX2xvY2so
JmZyZWVfaS0+c2VnbWFwX2xvY2spOwo+Pj4+PiBAQCAtMjc5MSw4ICsyODU1LDEzIEBAIHN0YXRp
YyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAg
ICAgIGlmICghbmV3X3NlYyAmJiAoKCpuZXdzZWcgKyAxKSAlIFNFR1NfUEVSX1NFQyhzYmkpKSkg
ewo+Pj4+PiAgICAgICAgICAgICAgICBzZWdubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2kt
PmZyZWVfc2VnbWFwLAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9TRUdfRlJPTV9T
RUMoc2JpLCBoaW50ICsgMSksICpuZXdzZWcgKyAxKTsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAo
c2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpKQo+Pj4+PiArICAgICAgICAg
ICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpIHsKPj4+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2Jp
LCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgICAgICAg
ICAgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykp
Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluZF9vdGhlcl96b25l
Owo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZ290X2l0Owo+Pj4+PiArICAgICAg
ICAgICAgIH0KPj4+Pj4gICAgICAgIH0KPj4+Pj4KPj4+Pj4gICAgI2lmZGVmIENPTkZJR19CTEtf
REVWX1pPTkVECj4+Pj4+IEBAIC0yODI4LDMzICsyODk3LDQyIEBAIHN0YXRpYyBpbnQgZ2V0X25l
d19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+Pj4gICAgZmluZF9vdGhlcl96
b25lOgo+Pj4+PiAgICAgICAgc2Vjbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVl
X3NlY21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+Pj4+Pgo+Pj4+PiAtI2lmZGVmIENPTkZJ
R19CTEtfREVWX1pPTkVECj4+Pj4+IC0gICAgIGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSAm
JiBmMmZzX3NiX2hhc19ibGt6b25lZChzYmkpKSB7Cj4+Pj4+IC0gICAgICAgICAgICAgLyogV3Jp
dGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4+Pj4+IC0gICAgICAgICAgICAgaWYgKHNi
aS0+Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkgewo+Pj4+
PiAtICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUcoc2JpLCBzYmkt
PmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHNlY25v
ID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkp
LCBoaW50KTsKPj4+Pj4gLSAgICAgICAgICAgICB9IGVsc2UKPj4+Pj4gLSAgICAgICAgICAgICAg
ICAgICAgIHNlY25vID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLAo+
Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1BSU5fU0VDUyhzYmkpKTsKPj4+Pj4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8g
Pj0gTUFJTl9TRUNTKHNiaSkpIHsKPj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1F
Tk9TUEM7Cj4+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+
Pj4+PiAtICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+Pj4+PiAtICAgICAg
ICAgICAgIH0KPj4+Pj4gLSAgICAgfQo+Pj4+PiAtI2VuZGlmCj4+Pj4+IC0KPj4+Pj4gICAgICAg
IGlmIChzZWNubyA+PSBNQUlOX1NFQ1Moc2JpKSkgewo+Pj4+PiAtICAgICAgICAgICAgIHNlY25v
ID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLAo+Pj4+PiAtICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQUlOX1NFQ1Mo
c2JpKSk7Cj4+Pj4+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7
Cj4+Pj4+ICsgICAgICAgICAgICAgaWYgKGxvb3BlZCkgewo+Pj4+PiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldCA9IC1FTk9TUEM7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgZjJmc19i
dWdfb24oc2JpLCAhcGlubmluZyk7Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv
dXRfdW5sb2NrOwo+Pj4+PiAgICAgICAgICAgICAgICB9Cj4+Pj4+ICsgICAgICAgICAgICAgaGlu
dCA9IDA7Cj4+Pj4+ICsjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPj4+Pj4gKyAgICAgICAg
ICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8KPj4+Pj4gKyAgICAgICAg
ICAgICBpZiAoZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+Pj4+PiArICAgICAgICAgICAg
ICAgICAgICAgc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEtaT05FX0FMTE9DX09OTFlf
U0VRKQo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUco
c2JpLCBzYmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPj4+Pj4gKyNlbmRpZgo+Pj4+PiArICAg
ICAgICAgICAgIGxvb3BlZCA9IHRydWU7Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290
aGVyX3pvbmU7Cj4+Pj4+ICAgICAgICB9Cj4+Pj4+ICsKPj4+Pj4gICAgICAgIHNlZ25vID0gR0VU
X1NFR19GUk9NX1NFQyhzYmksIHNlY25vKTsKPj4+Pj4gKwo+Pj4+PiArICAgICBkZXZpID0gZjJm
c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+Pj4+
PiArCj4+Pj4+ICsgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwg
cGlubmluZykpIHsKPj4+Pj4gKyAgICAgICAgICAgICB3aGlsZSAoZGV2aSA8IHNiaS0+c19uZGV2
cyAmJgo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tl
ZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZW5kX3NlZ25vID0gR0VUX1NFR05PKHNiaSwgRkRFVihkZXZpKS5lbmRfYmxrKTsK
Pj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9T
RUcoc2JpLCBlbmRfc2Vnbm8pICsgMTsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldmkr
KzsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290
aGVyX3pvbmU7Cj4+Pj4+ICsgICAgIH0KPj4+Pj4gKwo+Pj4+PiArICAgICBpZiAoc2VjX3VzYWdl
X2NoZWNrKHNiaSwgc2Vjbm8pKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgaGludCA9IHNlY25vICsg
MTsKPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPj4+Pj4gKyAgICAg
fQo+Pj4+PiAgICAgICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4+
Pj4+Cj4+Pj4+ICAgICAgICAvKiBnaXZlIHVwIG9uIGZpbmRpbmcgYW5vdGhlciB6b25lICovCj4+
Pj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4+
Pj4+IGluZGV4IGIwYzA2YjM1ODBiNC4uMTA3NTA4YWU3ZWIzIDEwMDY0NAo+Pj4+PiAtLS0gYS9m
cy9mMmZzL3NlZ21lbnQuaAo+Pj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+Pj4+PiBAQCAt
OTU0LDEwICs5NTQsMzIgQEAgc3RhdGljIGlubGluZSBibG9ja190IHN1bV9ibGtfYWRkcihzdHJ1
Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBiYXNlLCBpbnQgdHlwZSkKPj4+Pj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0gKGJhc2UgKyAxKSArIHR5cGU7Cj4+Pj4+ICAgIH0KPj4+
Pj4KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2Rldl9pc19yZXNlcnZpbmcoc3RydWN0
IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgZGV2aSkKPj4+Pj4gK3sKPj4+Pj4gKyAgICAgaWYgKCFm
MmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Cj4+Pj4+ICsgICAgIHJldHVybiBGREVWKGRldmkpLmlzX3Jlc2VydmluZzsKPj4+Pj4g
K30KPj4+Pj4gKwo+Pj4+PiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2X2lzX2FsbG9jX2Js
b2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4+PiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBkZXZpLCBib29sIHBpbm5pbmcpCj4+Pj4+ICt7Cj4+Pj4+
ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4+Pj4+ICsgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4+PiArICAgICByZXR1cm4gKHBpbm5pbmcgJiYgRkRFVihk
ZXZpKS5oYXNfYWxpYXMpIHx8IEZERVYoZGV2aSkuaXNfcmVzZXJ2aW5nOwo+Pj4+PiArfQo+Pj4+
PiArCj4+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWNfdXNhZ2VfY2hlY2soc3RydWN0IGYy
ZnNfc2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vjbm8pCj4+Pj4+ICAgIHsKPj4+Pj4gICAg
ICAgIGlmIChpc19jdXJzZWMoc2JpLCBzZWNubykgfHwgKHNiaS0+Y3VyX3ZpY3RpbV9zZWMgPT0g
c2Vjbm8pKQo+Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+Pj4gKyAgICAgaWYg
KGYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgYmxv
Y2tfdCBzdGFydF9ibGsgPSBTVEFSVF9CTE9DSyhzYmksIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBz
ZWNubykpOwo+Pj4+PiArICAgICAgICAgICAgIGludCBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNl
X2luZGV4KHNiaSwgc3RhcnRfYmxrKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIGlmIChm
MmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPj4+Pj4gKyAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwo+Pj4+PiArICAgICB9Cj4+Pj4+ICAgICAgICByZXR1cm4gZmFsc2U7
Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc3VwZXIuYyBiL2Zz
L2YyZnMvc3VwZXIuYwo+Pj4+PiBpbmRleCBjNDQ4ZDk5MmZmMmEuLmQ1ZGM4M2U2MTNlMiAxMDA2
NDQKPj4+Pj4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4+Pj4+ICsrKyBiL2ZzL2YyZnMvc3VwZXIu
Ywo+Pj4+PiBAQCAtNTAwMSw2ICs1MDAxLDM5IEBAIHN0YXRpYyB2b2lkIGYyZnNfdHVuaW5nX3Bh
cmFtZXRlcnMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+Pj4+PiAgICAgICAgc2JpLT5yZWFk
ZGlyX3JhID0gdHJ1ZTsKPj4+Pj4gICAgfQo+Pj4+Pgo+Pj4+PiArc3RhdGljIHZvaWQgZjJmc19y
ZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4+Pj4+ICt7Cj4+
Pj4+ICsgICAgIHN0cnVjdCBpbm9kZSAqcm9vdCA9IGRfaW5vZGUoc2JpLT5zYi0+c19yb290KTsK
Pj4+Pj4gKyAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPj4+Pj4gKyAgICAgc3RydWN0
IGZvbGlvICpmb2xpbzsKPj4+Pj4gKyAgICAgaW50IGk7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgaWYg
KCFmMmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkKPj4+Pj4gKyAgICAgICAgICAgICByZXR1
cm47Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgZm9yIChpID0gMTsgaSA8IHNiaS0+c19uZGV2czsgaSsr
KSB7Cj4+Pj4+ICsgICAgICAgICAgICAgY2hhciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRo
LCAnLycpOwo+Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGU7Cj4+Pj4+ICsg
ICAgICAgICAgICAgc3RydWN0IHFzdHIgcXN0cjsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAg
IG5hbWUgPSBuYW1lID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4+Pj4+ICsgICAgICAgICAg
ICAgcXN0ci5uYW1lID0gbmFtZTsKPj4+Pj4gKyAgICAgICAgICAgICBxc3RyLmxlbiA9IHN0cmxl
bihuYW1lKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAgICAgIGRlID0gZjJmc19maW5kX2VudHJ5
KHJvb3QsICZxc3RyLCAmZm9saW8pOwo+Pj4+PiArICAgICAgICAgICAgIGlmICghZGUpCj4+Pj4+
ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgICAg
ICAgIGlub2RlID0gZjJmc19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsKPj4+
Pj4gKyAgICAgICAgICAgICBpZiAoIUlTX0VSUihpbm9kZSkpIHsKPj4+Pj4gKyAgICAgICAgICAg
ICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4+PiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4+Pj4+ICsgICAg
ICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPj4+Pj4gKyAgICAgICAgICAgICB9Cj4+Pj4+
ICsgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIDApOwo+Pj4+PiArICAgICB9Cj4+
Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gICAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+Pj4+PiAgICB7Cj4+Pj4+
ICAgICAgICBzdHJ1Y3QgZjJmc19mc19jb250ZXh0ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPj4+
Pj4gQEAgLTUyMDksNiArNTI0Miw3IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVj
dCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+Pj4gICAgICAgIHNi
aS0+bGFzdF92YWxpZF9ibG9ja19jb3VudCA9IHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQ7
Cj4+Pj4+ICAgICAgICBzYmktPnJlc2VydmVkX2Jsb2NrcyA9IDA7Cj4+Pj4+ICAgICAgICBzYmkt
PmN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzID0gMDsKPj4+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNl
cnZlZF9ibG9ja3MgPSAwOwo+Pj4+PiAgICAgICAgbGltaXRfcmVzZXJ2ZV9yb290KHNiaSk7Cj4+
Pj4+ICAgICAgICBhZGp1c3RfdW51c2FibGVfY2FwX3BlcmMoc2JpKTsKPj4+Pj4KPj4+Pj4gQEAg
LTU0MzYsNiArNTQ3MCw4IEBAIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+Pj4gICAgICAgIGYyZnNfdXBk
YXRlX3RpbWUoc2JpLCBSRVFfVElNRSk7Cj4+Pj4+ICAgICAgICBjbGVhcl9zYmlfZmxhZyhzYmks
IFNCSV9DUF9ESVNBQkxFRF9RVUlDSyk7Cj4+Pj4+Cj4+Pj4+ICsgICAgIGYyZnNfcmVzdG9yZV9k
ZXZpY2VfYWxpYXMoc2JpKTsKPj4+Pj4gKwo+Pj4+PiAgICAgICAgc2JpLT51bW91bnRfbG9ja19o
b2xkZXIgPSBOVUxMOwo+Pj4+PiAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+Cj4+Pj4+IGRpZmYgLS1n
aXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMu
aAo+Pj4+PiBpbmRleCA3OTVlMjYyNTgzNTUuLjQ0MDlhZGEyZmVjYiAxMDA2NDQKPj4+Pj4gLS0t
IGEvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+Pj4+PiArKysgYi9pbmNsdWRlL3VhcGkvbGlu
dXgvZjJmcy5oCj4+Pj4+IEBAIC00NSw2ICs0NSw5IEBACj4+Pj4+ICAgICNkZWZpbmUgRjJGU19J
T0NfU1RBUlRfQVRPTUlDX1JFUExBQ0UgICAgICAgX0lPKEYyRlNfSU9DVExfTUFHSUMsIDI1KQo+
Pj4+PiAgICAjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRSBfSU9SKEYyRlNfSU9D
VExfTUFHSUMsIDI2LCBfX3UzMikKPj4+Pj4gICAgI2RlZmluZSBGMkZTX0lPQ19JT19QUklPICAg
ICAgICAgICAgX0lPVyhGMkZTX0lPQ1RMX01BR0lDLCAyNywgX191MzIpCj4+Pj4+ICsjZGVmaW5l
IEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTICAgX0lPKEYyRlNfSU9DVExfTUFHSUMsIDI4KQo+
Pj4+PiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RM
X01BR0lDLCAyOSkKPj4+Pj4gKyNkZWZpbmUgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVMg
ICAgICAgIF9JT1IoRjJGU19JT0NUTF9NQUdJQywgMzAsIF9fdTMyKQo+Pj4+Pgo+Pj4+PiAgICAv
Kgo+Pj4+PiAgICAgKiBzaG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4KPj4+Pj4g
QEAgLTcwLDYgKzczLDEwIEBAIGVudW0gewo+Pj4+PiAgICAgICAgRjJGU19JT1BSSU9fTUFYLAo+
Pj4+PiAgICB9Owo+Pj4+Pgo+Pj4+PiArLyogZm9yIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RB
VFVTICovCj4+Pj4+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAg
ICAwCj4+Pj4+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRVNFUlZFRCAgICAgICAx
Cj4+Pj4+ICsKPj4+Pj4gICAgc3RydWN0IGYyZnNfZ2NfcmFuZ2Ugewo+Pj4+PiAgICAgICAgX191
MzIgc3luYzsKPj4+Pj4gICAgICAgIF9fdTY0IHN0YXJ0Owo+Pj4+Cj4+CgoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFp
bGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8v
bGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK