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

Daeho Jeong <[email protected]> Tue, 4 Aug 2026 10:08:01 -0700
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <CACOAw_w1fcBgGkW3MT=NgjWp1B5-1FSgMe2Ofm0AKcQU4OsBWA@mail.gmail.com>
T24gTW9uLCBBdWcgMywgMjAyNiBhdCA1OjQy4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn
PiB3cm90ZToKPgo+IE9uIDgvNC8yNiAwMDoxOCwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPiBPbiBT
dW4sIEF1ZyAyLCAyMDI2IGF0IDc6MDDigK9QTSBDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+IHdy
b3RlOgo+ID4+Cj4gPj4gT24gNy8zMC8yNiAyMzo0NiwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPj4+
IEZyb206IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4gPj4+Cj4gPj4+IFRo
aXMgcGF0Y2ggYWRkcyBhIGR5bmFtaWMgbWFuYWdlbWVudCBmZWF0dXJlIHRvIHRoZSBleGlzdGlu
ZyBkZXZpY2UKPiA+Pj4gYWxpYXNpbmcgZnVuY3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzZXJzIHRv
IGR5bmFtaWNhbGx5IHJlc2VydmUgb3IKPiA+Pj4gcmVsZWFzZSBzcGVjaWZpYyBkZXZpY2VzIGZy
b20gdGhlIGZpbGVzeXN0ZW0ncyBmcmVlIHBvb2wgYXQgcnVudGltZQo+ID4+PiB0aHJvdWdoIG5l
dyBpb2N0bHMuCj4gPj4+Cj4gPj4+IFRvIHN1cHBvcnQgdGhpcywgdGhyZWUgbmV3IGlvY3RscyBh
cmUgaW50cm9kdWNlZDoKPiA+Pj4gLSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUzogVGhpcyBy
ZWNsYWltcyB0aGUgc3BhY2Ugb2NjdXBpZWQgYnkgYQo+ID4+PiAgICAgZGV2aWNlIGFsaWFzaW5n
IGZpbGUuIEl0IGZpcnN0IHBlcmZvcm1zIGEgY2FwYWNpdHkgY2hlY2ssIHJlc2V0cyBHQwo+ID4+
PiAgICAgdmljdGltIGluZm9ybWF0aW9uIGZvciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyB0aGUg
c2VnbWVudHMgYXMgaW4tdXNlCj4gPj4+ICAgICB0byBwcmV2ZW50IG5ldyBhbGxvY2F0aW9ucywg
YW5kIHRoZW4gdHJpZ2dlcnMgR0MgdG8gbWlncmF0ZSBleGlzdGluZwo+ID4+PiAgICAgdmFsaWQg
ZGF0YSBvdXQgb2YgdGhlIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0aGVzZSBibG9ja3Mg
aW4gdGhlCj4gPj4+ICAgICBTSVQgdG8gZWZmZWN0aXZlbHkgZXhjbHVkZSB0aGUgZGV2aWNlIGZy
b20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPiA+Pj4KPiA+Pj4gLSBGMkZTX0lPQ19SRUxFQVNFX0RF
Vl9BTElBUzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3BhY2Ugb2YgYQo+ID4+PiAgICAg
cHJldmlvdXNseSByZXNlcnZlZCBkZXZpY2UgYWxpYXNpbmcgZmlsZS4gSXQgdHJ1bmNhdGVzIHRo
ZSBibG9ja3MKPiA+Pj4gICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgd2hpY2ggbWFrZXMg
dGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+Pj4gICAgIGZpbGVzeXN0ZW0gYWxsb2NhdGlv
biBhZ2Fpbi4KPiA+Pj4KPiA+Pj4gLSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzogVGhp
cyByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgYWxpYXNpbmcKPiA+Pj4gICAgIHN0YXR1cyBvZiBhIGRl
dmljZSBhbGlhc2luZyBmaWxlLCByZXR1cm5pbmcgd2hldGhlciB0aGUgZmlsZSBpcwo+ID4+PiAg
ICAgcmVsZWFzZWQgKGluYWN0aXZlIGFsaWFzKSBvciByZXNlcnZlZCAoYWN0aXZlIGFsaWFzLCB3
aXRoIGJsb2Nrcwo+ID4+PiAgICAgZnVsbHkgYWxsb2NhdGVkIG9uIHRoZSBkZXZpY2UpLgo+ID4+
Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29t
Pgo+ID4+PiAtLS0KPiA+Pj4gdjY6IGZpeGVkIGR1cGxpY2F0ZWQgYmxvY2sgcmVzZXJ2YXRpb25z
IGFuZCByYWNpbmcgdy8gbW1hcC4KPiA+Pj4gICAgICAgYWRkZWQgdGhlIGV4dGVudCBhbGlnbm1l
bnQgY2hlY2sgZm9yIGRldmljZSBhbGlhc2luZyBhcmVhcy4KPiA+Pj4gdjU6IHByZXZlbnRlZCBu
ZXcgc2VnbWVudCBhbGxvY2F0aW9uIG9uIGRldmljZXMgdW5kZXJnb2luZyByZXNlcnZhdGlvbgo+
ID4+PiAgICAgICBvciB3aXRoIGFjdGl2ZSBhbGlhc2VzLgo+ID4+PiAgICAgICB1c2VkIGluLW1l
bW9yeSBzdHJ1Y3QgdG8gcmVzZXJ2ZSBibG9ja3MgZm9yIGRldmljZSBhbGlhc2luZy4KPiA+Pj4g
ICAgICAgY2xlYXJlZCBwcmVmcmVlIChQUkUpIGRpcnR5IHNlZ21lbnQgYml0bWFwLgo+ID4+PiB2
NDogcmVuYW1lZCBpbnRlcmZhY2VzLgo+ID4+PiAgICAgICBmaXhlZCByYWNlIGNvbmRpdGlvbnMg
YmV0d2VlbiBjaGVja3BvaW50PWRpc2FibGUgbW91bnQgYW5kIGlvY3Rscy4KPiA+Pj4gICAgICAg
cmVmYWN0b3JlZCBzZWdtZW50IHJlc2VydmF0aW9uIHBhcnQuCj4gPj4+ICAgICAgIG1vZGlmaWVk
IGxvY2sgdXNhZ2UuCj4gPj4+IHYzOiBhZGQgQ0FQX1NZU19BRE1JTiBhbmQgY2hlY2twb2ludD1k
aXNhYmxlZCBjaGVjay4KPiA+Pj4gICAgICAgcmVtb3ZlIGEgZjJmcyBzcGVjaWZpYyBmbGFnIGV4
cG9zZWQgd2l0aCBnZXRmbGFncy4KPiA+Pj4gdjI6IHByZXZlbnQgb3BlcmF0aW9ucyBkdXJpbmcg
Y2hlY2twb2ludD1kaXNhYmxlZC4KPiA+Pj4gLS0tCj4gPj4+IC0tLQo+ID4+PiAgICBEb2N1bWVu
dGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IHwgIDM1ICsrKysKPiA+Pj4gICAgZnMvZjJmcy9k
YXRhLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ID4+PiAgICBmcy9mMmZzL2V4dGVu
dF9jYWNoZS5jICAgICAgICAgICAgIHwgICA3ICsKPiA+Pj4gICAgZnMvZjJmcy9mMmZzLmggICAg
ICAgICAgICAgICAgICAgICB8ICAxOSArLQo+ID4+PiAgICBmcy9mMmZzL2ZpbGUuYyAgICAgICAg
ICAgICAgICAgICAgIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPj4+ICAg
IGZzL2YyZnMvZ2MuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKystLQo+ID4+PiAgICBm
cy9mMmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4gPj4+ICAgIGZzL2Yy
ZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgfCAxNzYgKysrKysrKysrKysrKy0tLS0tLQo+
ID4+PiAgICBmcy9mMmZzL3NlZ21lbnQuaCAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwo+ID4+
PiAgICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKysKPiA+Pj4g
ICAgaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaCAgICAgICAgICB8ICAgNyArCj4gPj4+ICAgIDEx
IGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKPiA+Pj4K
PiA+Pj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgYi9E
b2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4gPj4+IGluZGV4IDhjNGExNGFlNDQ0
Zi4uMWE1ZmQ0YWZlNjA5IDEwMDY0NAo+ID4+PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0
ZW1zL2YyZnMucnN0Cj4gPj4+ICsrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5y
c3QKPiA+Pj4gQEAgLTEwNDUsNiArMTA0NSw0MSBAQCBTbywgdGhlIGtleSBpZGVhIGlzLCB1c2Vy
IGNhbiBkbyBhbnkgZmlsZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRjLCBhbmQKPiA+Pj4gICAgcmVj
bGFpbSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIHVzZSwgd2hpbGUgdGhlIHNwYWNlIGlzIGNvdW50ZWQg
YXMgL2RhdGEuCj4gPj4+ICAgIFRoYXQgZG9lc24ndCByZXF1aXJlIG1vZGlmeWluZyBwYXJ0aXRp
b24gc2l6ZSBhbmQgZmlsZXN5c3RlbSBmb3JtYXQuCj4gPj4+Cj4gPj4+ICtEeW5hbWljIERldmlj
ZSBBbGlhc2luZyBNYW5hZ2VtZW50Cj4gPj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCj4gPj4+ICsKPiA+Pj4gK0luIGFkZGl0aW9uIHRvIHN0YXRpYyBkZXZpY2UgYWxpYXNp
bmcgYnkgZGVsZXRpbmcgdGhlIGFsaWFzaW5nIGZpbGUsIEYyRlMKPiA+Pj4gK3N1cHBvcnRzIGR5
bmFtaWMgbWFuYWdlbWVudCBvZiBkZXZpY2UgYWxpYXNpbmcuIFRoaXMgbWVjaGFuaXNtIGFsbG93
cyB0aGUgc3lzdGVtCj4gPj4+ICt0byBkeW5hbWljYWxseSB0cmFuc2l0aW9uIHBhcnRpdGlvbiBv
d25lcnNoaXAgYmV0d2VlbiBGMkZTIHVzZXJkYXRhIGFuZCBleHRlcm5hbAo+ID4+PiArZW50aXRp
ZXMgKGUuZy4sIHpSQU0sIHJhdyBwYXJ0aXRpb24pIGJhc2VkIG9uIHN5c3RlbSByZXF1aXJlbWVu
dHMgd2l0aG91dAo+ID4+PiArZGVsZXRpbmcgdGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIG9yIHJl
cXVpcmluZyB1bm1vdW50L3JlbW91bnQuCj4gPj4+ICsKPiA+Pj4gK1RoZSBtYXN0ZXIgYWxpYXNp
bmcgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBmb3JtYXQgb2YgdGhlIGZpbGUg
c3lzdGVtCj4gPj4+ICthbmQgcmVtYWlucyBhcyBhIHBlcnNpc3RlbnQgY29udHJvbCBlbnRpdHkg
KGlvY3RsIGdhdGV3YXkpIGluIHRoZSByb290IGRpcmVjdG9yeS4KPiA+Pj4gKwo+ID4+PiArLSBQ
YXJ0aXRpb24gUmVzZXJ2YXRpb24gKEluLXNlcnZpY2UgdG8gQWxpYXNlZCkKPiA+Pj4gKyAgV2hl
biBhIHNwZWNpZmljIHBhcnRpdGlvbiBuZWVkcyB0byBiZSBkZWRpY2F0ZWQgdG8gZXh0ZXJuYWwg
c2VydmljZXMgKGUuZy4sIHpSQU0pLAo+ID4+PiArICBhIHVzZXIgY2FuIHJlc2VydmUgdGhlIGRl
dmljZSBhbGlhcyByYW5nZSB2aWEgaW9jdGwuIFRoZSBrZXJuZWwgcmVzZXRzIEdDIHZpY3RpbQo+
ID4+PiArICBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3Mgc2VnbWVudHMg
YXMgaW4tdXNlIHRvIHByZXZlbnQgbmV3Cj4gPj4+ICsgIGFsbG9jYXRpb25zLCBhbmQgdHJpZ2dl
cnMgZm9yY2VkIEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcgdmFsaWQgZGF0YSBvdXQgb2YgdGhlCj4g
Pj4+ICsgIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0aGVzZSBibG9ja3MgaW4gdGhlIFNJ
VCB0byBlZmZlY3RpdmVseSBleGNsdWRlIHRoZQo+ID4+PiArICBkZXZpY2UgZnJvbSB0aGUgdXNh
YmxlIGNhcGFjaXR5Lgo+ID4+PiArCj4gPj4+ICstIFBhcnRpdGlvbiBSZWxlYXNlIChBbGlhc2Vk
IHRvIEluLXNlcnZpY2UpCj4gPj4+ICsgIFdoZW4gZXh0ZXJuYWwgdXNhZ2UgY29uY2x1ZGVzLCB0
aGUgc3BhY2UgaXMgcmVjbGFpbWVkIG5vdCBieSBkZWxldGluZyB0aGUgZmlsZSwKPiA+Pj4gKyAg
YnV0IHRocm91Z2ggdGhlIHJlbGVhc2UgaW9jdGwuIFRoZSBrZXJuZWwgdHJ1bmNhdGVzIGJsb2Nr
cyBhc3NvY2lhdGVkIHdpdGgKPiA+Pj4gKyAgdGhlIGZpbGUsIHJlbGVhc2luZyB0aGVtIGJhY2sg
dG8gZ2VuZXJhbCBmaWxlc3lzdGVtIGFsbG9jYXRpb24uCj4gPj4+ICsKPiA+Pj4gKy4uIGNvZGUt
YmxvY2s6Ogo+ID4+PiArCj4gPj4+ICsgICAjIGYyZnNfaW8gZGV2X2FsaWFzIHJlbGVhc2UgL21u
dC9mMmZzL3ZkYy5maWxlCj4gPj4+ICsgICAjIGRmIC1oCj4gPj4+ICsgICAvZGV2L3ZkYiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2NEcgIDc1M00gICA2NEcgICAyJSAvbW50L2YyZnMKPiA+
Pj4gKwo+ID4+PiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZXNlcnZlIC9tbnQvZjJmcy92ZGMu
ZmlsZQo+ID4+PiArICAgIyBkZiAtaAo+ID4+PiArICAgL2Rldi92ZGIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjRHICAgMzNHICAgMzJHICA1MiUgL21udC9mMmZzCj4gPj4+ICsKPiA+Pj4g
ICAgUGVyLWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQKPiA+Pj4gICAgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBh
L2ZzL2YyZnMvZGF0YS5jIGIvZnMvZjJmcy9kYXRhLmMKPiA+Pj4gaW5kZXggYWMxY2Y0ZGUzZDYy
Li44OTJkNTk0MDQ4YjcgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZGF0YS5jCj4gPj4+ICsr
KyBiL2ZzL2YyZnMvZGF0YS5jCj4gPj4+IEBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQgZjJmc19y
ZXNlcnZlX25ld19ibG9ja3Moc3RydWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3Vu
dCkKPiA+Pj4KPiA+Pj4gICAgICAgIGlmICh1bmxpa2VseShpc19pbm9kZV9mbGFnX3NldChkbi0+
aW5vZGUsIEZJX05PX0FMTE9DKSkpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07
Cj4gPj4+IC0gICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwg
JmNvdW50LCB0cnVlKTsKPiA+Pj4gKyAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNi
aSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPiA+Pj4gICAgICAgIGlmICh1bmxp
a2VseShlcnIpKQo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4+Pgo+ID4+PiBA
QCAtMTU0Miw3ICsxNTQyLDcgQEAgc3RhdGljIGludCBfX2FsbG9jYXRlX2RhdGFfYmxvY2soc3Ry
dWN0IGRub2RlX29mX2RhdGEgKmRuLCBpbnQgc2VnX3R5cGUpCj4gPj4+Cj4gPj4+ICAgICAgICBk
bi0+ZGF0YV9ibGthZGRyID0gZjJmc19kYXRhX2Jsa2FkZHIoZG4pOwo+ID4+PiAgICAgICAgaWYg
KGRuLT5kYXRhX2Jsa2FkZHIgPT0gTlVMTF9BRERSKSB7Cj4gPj4+IC0gICAgICAgICAgICAgZXJy
ID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUpOwo+
ID4+PiArICAgICAgICAgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5p
bm9kZSwgJmNvdW50LCB0cnVlLCBmYWxzZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGlmICh1bmxp
a2VseShlcnIpKQo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+
ICAgICAgICB9Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jIGIvZnMv
ZjJmcy9leHRlbnRfY2FjaGUuYwo+ID4+PiBpbmRleCA2MWY2Yjk3MTQzNjYuLjNhNzM3ZGIwYzll
MSAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9leHRlbnRfY2FjaGUuYwo+ID4+PiArKysgYi9m
cy9mMmZzL2V4dGVudF9jYWNoZS5jCj4gPj4+IEBAIC02Miw2ICs2MiwxMyBAQCBib29sIHNhbml0
eV9jaGVja19leHRlbnRfY2FjaGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZvbGlvICpp
Zm9saW8pCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBpbm9kZS0+
aV9pbm8sIGVpLmJsaywgZWkuZm9mcywgZWkubGVuKTsKPiA+Pj4gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Cj4gPj4+ICAgICAgICAgICAgICAgIH0KPiA+Pj4gKwo+ID4+PiAr
ICAgICAgICAgICAgIGlmICgoZWkuYmxrICUgQkxLU19QRVJfU0VDKHNiaSkpIHx8IChlaS5sZW4g
JSBCTEtTX1BFUl9TRUMoc2JpKSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNf
d2FybihzYmksICIlczogZGV2aWNlIGFsaWFzIGlub2RlIChpbm89JWxseCkncyBleHRlbnQgaW5m
byBbJXUsICV1LCAldV0gaXMgbm90IGFsaWduZWQgdG8gc2VjdGlvbiBzaXplICV1IiwKPiA+Pj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBl
aS5ibGssIGVpLmZvZnMsIGVpLmxlbiwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCTEtTX1BFUl9TRUMoc2JpKSk7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKPiA+Pj4gICAgICAgIH0KPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv
ZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPiA+Pj4gaW5kZXggZjE3NzRkNGUxOGQyLi5mMjRlMzBi
YjVjM2QgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPj4+ICsrKyBiL2ZzL2Yy
ZnMvZjJmcy5oCj4gPj4+IEBAIC0xNDA0LDYgKzE0MDQsOCBAQCBzdHJ1Y3QgZjJmc19kZXZfaW5m
byB7Cj4gPj4+ICAgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2VnbWVudHM7Cj4gPj4+ICAgICAg
ICBibG9ja190IHN0YXJ0X2JsazsKPiA+Pj4gICAgICAgIGJsb2NrX3QgZW5kX2JsazsKPiA+Pj4g
KyAgICAgYm9vbCBoYXNfYWxpYXM7Cj4gPj4+ICsgICAgIGJvb2wgaXNfcmVzZXJ2aW5nOwo+ID4+
PiAgICAjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+Pj4gICAgICAgIHVuc2lnbmVkIGlu
dCBucl9ibGt6OyAgICAgICAgICAgLyogVG90YWwgbnVtYmVyIG9mIHpvbmVzICovCj4gPj4+ICAg
ICAgICB1bnNpZ25lZCBsb25nICpibGt6X3NlcTsgICAgICAgIC8qIEJpdG1hcCBpbmRpY2F0aW5n
IHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+Pj4gQEAgLTE4NTcsNiArMTg1OSw3IEBAIHN0cnVjdCBm
MmZzX3NiX2luZm8gewo+ID4+PiAgICAgICAgYmxvY2tfdCBsYXN0X3ZhbGlkX2Jsb2NrX2NvdW50
OyAgICAgICAgIC8qIGZvciByZWNvdmVyeSAqLwo+ID4+PiAgICAgICAgYmxvY2tfdCByZXNlcnZl
ZF9ibG9ja3M7ICAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyYWJsZSByZXNlcnZlZCBibG9ja3Mg
Ki8KPiA+Pj4gICAgICAgIGJsb2NrX3QgY3VycmVudF9yZXNlcnZlZF9ibG9ja3M7ICAgICAgICAv
KiBjdXJyZW50IHJlc2VydmVkIGJsb2NrcyAqLwo+ID4+PiArICAgICBibG9ja190IGFsaWFzX3Jl
c2VydmVkX2Jsb2NrczsgICAgICAgICAgLyogcmVzZXJ2ZWQgYmxvY2tzIGZvciBkZXZpY2UgYWxp
YXMgKi8KPiA+Pj4KPiA+Pj4gICAgICAgIC8qIEFkZGl0aW9uYWwgdHJhY2tpbmcgZm9yIG5vIGNo
ZWNrcG9pbnQgbW9kZSAqLwo+ID4+PiAgICAgICAgYmxvY2tfdCB1bnVzYWJsZV9ibG9ja19jb3Vu
dDsgICAgICAgICAgIC8qICMgb2YgYmxvY2tzIHNhdmVkIGJ5IGxhc3QgY3AgKi8KPiA+Pj4gQEAg
LTI1NTksNyArMjU2Miw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFpbGFi
bGVfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgYmxv
Y2tfdCBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4+Pgo+ID4+PiAgICAgICAgYXZhaWxfdXNl
cl9ibG9ja19jb3VudCA9IHNiaS0+dXNlcl9ibG9ja19jb3VudCAtCj4gPj4+IC0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrczsK
PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmktPmN1cnJlbnRf
cmVzZXJ2ZWRfYmxvY2tzIC0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrczsKPiA+Pj4KPiA+Pj4gICAgICAgIGlmICh0
ZXN0X29wdChzYmksIFJFU0VSVkVfUk9PVCkgJiYgIV9fYWxsb3dfcmVzZXJ2ZWRfcm9vdChzYmks
IGlub2RlLCBjYXApKQo+ID4+PiAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50
IC09IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ibG9ja3M7Cj4gPj4+IEBAIC0yNTc2
LDcgKzI1ODAsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfYXZhaWxhYmxlX2Js
b2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4KPiA+Pj4gICAgc3RhdGlj
IGlubGluZSB2b2lkIGYyZnNfaV9ibG9ja3Nfd3JpdGUoc3RydWN0IGlub2RlICosIGJsb2NrX3Qs
IGJvb2wsIGJvb2wpOwo+ID4+PiAgICBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tf
Y291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGlub2RlICppbm9kZSwgYmxrY250X3QgKmNvdW50LCBib29sIHBh
cnRpYWwpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCBibGtjbnRfdCAqY291bnQsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHBhcnRpYWwsIGJvb2wgYWxpYXNfcmVzZXJ2ZWQpCj4gPj4+ICAgIHsKPiA+Pj4g
ICAgICAgIGxvbmcgbG9uZyBkaWZmID0gMCwgcmVsZWFzZSA9IDA7Cj4gPj4+ICAgICAgICBibG9j
a190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPj4+IEBAIC0yNTk5LDEwICsyNjA0LDE2IEBA
IHN0YXRpYyBpbmxpbmUgaW50IGluY192YWxpZF9ibG9ja19jb3VudChzdHJ1Y3QgZjJmc19zYl9p
bmZvICpzYmksCj4gPj4+Cj4gPj4+ICAgICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsK
PiA+Pj4KPiA+Pj4gKyAgICAgaWYgKGFsaWFzX3Jlc2VydmVkKQo+ID4+PiArICAgICAgICAgICAg
IHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09ICpjb3VudDsKPiA+Pj4gKwo+ID4+PiAgICAg
ICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCA9IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc2Jp
LCBpbm9kZSwgdHJ1ZSk7Cj4gPj4+ICAgICAgICBkaWZmID0gKGxvbmcgbG9uZylzYmktPnRvdGFs
X3ZhbGlkX2Jsb2NrX2NvdW50ICsgKmNvdW50IC0KPiA+Pj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4+PiAg
ICAgICAgaWYgKHVubGlrZWx5KGRpZmYgPiAwKSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChh
bGlhc19yZXNlcnZlZCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+YWxpYXNfcmVz
ZXJ2ZWRfYmxvY2tzICs9ICpjb3VudDsKPiA+Pj4gKwo+ID4+PiAgICAgICAgICAgICAgICBpZiAo
IXBhcnRpYWwpIHsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmc2Jp
LT5zdGF0X2xvY2spOwo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgPSAqY291
bnQ7Cj4gPj4+IEBAIC00MDEwLDYgKzQwMjEsOCBAQCBpbnQgZjJmc19mbHVzaF9kZXZpY2VfY2Fj
aGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4gICAgdm9pZCBmMmZzX2Rlc3Ryb3lf
Zmx1c2hfY21kX2NvbnRyb2woc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBib29sIGZyZWUpOwo+
ID4+PiAgICB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAq
c2JpLCBibG9ja190IGFkZHIsCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4gPj4+ICt2b2lkIGYyZnNfcmVzZXJ2
ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4g
Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgbGVuKTsKPiA+Pj4gICAgYm9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9kYXRhKHN0cnVj
dCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsKPiA+Pj4gICAgaW50IGYyZnNf
c3RhcnRfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+Pj4gICAg
dm9pZCBmMmZzX2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+
Pj4gQEAgLTQyMzEsNiArNDI0NCw4IEBAIHZvaWQgZjJmc19idWlsZF9nY19tYW5hZ2VyKHN0cnVj
dCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4gPj4+ICAgIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBm
MmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0
X3NlZywgdW5zaWduZWQgaW50IGVuZF9zZWcsCj4gPj4+ICAgICAgICAgICAgICAgIGJvb2wgZHJ5
X3J1biwgdW5zaWduZWQgaW50IGRyeV9ydW5fc2VjdGlvbnMpOwo+ID4+PiArdm9pZCBmMmZzX3Jl
c2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICsg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+Pj4g
ICAgaW50IGYyZnNfcmVzaXplX2ZzKHN0cnVjdCBmaWxlICpmaWxwLCBfX3U2NCBibG9ja19jb3Vu
dCk7Cj4gPj4+ICAgIGludCBfX2luaXQgZjJmc19jcmVhdGVfZ2FyYmFnZV9jb2xsZWN0aW9uX2Nh
Y2hlKHZvaWQpOwo+ID4+PiAgICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25f
Y2FjaGUodm9pZCk7Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMv
ZmlsZS5jCj4gPj4+IGluZGV4IDRiNTJjNTZkNzFmMC4uODM1ZjEwYmM1OWI1IDEwMDY0NAo+ID4+
PiAtLS0gYS9mcy9mMmZzL2ZpbGUuYwo+ID4+PiArKysgYi9mcy9mMmZzL2ZpbGUuYwo+ID4+PiBA
QCAtODEzLDEzICs4MTMsMTkgQEAgaW50IGYyZnNfZG9fdHJ1bmNhdGVfYmxvY2tzKHN0cnVjdCBp
bm9kZSAqaW5vZGUsIHU2NCBmcm9tLCBib29sIGxvY2spCj4gPj4+Cj4gPj4+ICAgICAgICBpZiAo
SVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+ID4+PiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4g
Pj4+IC0gICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpID0gZXQtPmxhcmdlc3Q7Cj4g
Pj4+ICsgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpOwo+ID4+PiArCj4gPj4+ICsg
ICAgICAgICAgICAgcmVhZF9sb2NrKCZldC0+bG9jayk7Cj4gPj4+ICsgICAgICAgICAgICAgZWkg
PSBldC0+bGFyZ2VzdDsKPiA+Pj4gKyAgICAgICAgICAgICByZWFkX3VubG9jaygmZXQtPmxvY2sp
Owo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgICBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHNiaSwg
ZWkuYmxrLCBlaS5sZW4pOwo+ID4+Pgo+ID4+PiAgICAgICAgICAgICAgICBkZWNfdmFsaWRfYmxv
Y2tfY291bnQoc2JpLCBpbm9kZSwgZWkubGVuKTsKPiA+Pj4gICAgICAgICAgICAgICAgZjJmc191
cGRhdGVfdGltZShzYmksIFJFUV9USU1FKTsKPiA+Pj4KPiA+Pj4gKyAgICAgICAgICAgICBmMmZz
X2Ryb3BfZXh0ZW50X3RyZWUoaW5vZGUpOwo+ID4+PiArCj4gPj4+ICAgICAgICAgICAgICAgIGYy
ZnNfZm9saW9fcHV0KGlmb2xpbywgdHJ1ZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGdvdG8gb3V0
Owo+ID4+PiAgICAgICAgfQo+ID4+PiBAQCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0
YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4+
PiAgICAgICAgaWYgKChhdHRyLT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPiA+Pj4gICAgICAg
ICAgICAgICAgaWYgKG1hcHBpbmdfbGFyZ2VfZm9saW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5n
KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+
IC0gICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVhZHkoaW5vZGUp
IHx8Cj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0RFVklDRV9BTElBU0lO
Ryhpbm9kZSkpCj4gPj4+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9k
ZSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArICAg
ICAgICAgICAgIGlmICghZjJmc19pc19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSkKPiA+
Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+ICAgICAg
ICAgICAgICAgIGlmIChpc19pbm9kZV9mbGFnX3NldChpbm9kZSwgRklfQ09NUFJFU1NfUkVMRUFT
RUQpICYmCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgIUlTX0FMSUdORUQoYXR0ci0+aWFf
c2l6ZSwKPiA+Pj4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQgZjJmc19zZXRmbGFn
c19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMyIG1hc2spCj4gPj4+
ICAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVy
biAtRVBFUk07Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUp
KQo+ID4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAg
IGlmICgoaWZsYWdzIF4gbWFza2VkX2ZsYWdzKSAmIEYyRlNfQ0FTRUZPTERfRkwpIHsKPiA+Pj4g
ICAgICAgICAgICAgICAgaWYgKCFmMmZzX3NiX2hhc19jYXNlZm9sZChGMkZTX0lfU0IoaW5vZGUp
KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+
IEBAIC0yNjc4LDYgKzI2ODgsMTcgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlv
bl9wb2xpY3koc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICAg
ICAgcmV0dXJuIGZzY3J5cHRfaW9jdGxfZ2V0X3BvbGljeShmaWxwLCAodm9pZCBfX3VzZXIgKilh
cmcpOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9kZXZf
YWxpYXNfc3RhdHVzKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+Pj4g
K3sKPiA+Pj4gKyAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4g
Pj4+ICsKPiA+Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiAr
ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVybiBw
dXRfdXNlcihGMkZTX0hBU19CTE9DS1MoaW5vZGUpID8gRjJGU19ERVZfQUxJQVNfU1RBVFVTX1JF
U0VSVkVEIDoKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19ERVZfQUxJ
QVNfU1RBVFVTX1JFTEVBU0VELCAodTMyIF9fdXNlciAqKWFyZyk7Cj4gPj4+ICt9Cj4gPj4+ICsK
PiA+Pj4gICAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0
IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICB7Cj4gPj4+ICAgICAgICBz
dHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gQEAgLTM2MTYsNiAr
MzYzNywyNDEgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3RydWN0
IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICAgICAgICAgICAgICAgICAg
ICAgICh1MzIgX191c2VyICopYXJnKTsKPiA+Pj4gICAgfQo+ID4+Pgo+ID4+PiArc3RhdGljIGJv
b2wgZjJmc19nZXRfZGV2X2FsaWFzX2V4dGVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4g
Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnksCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ZXh0ZW50X2luZm8gKmVpKQo+ID4+PiArewo+ID4+PiArICAgICBpbnQgaTsKPiA+Pj4gKwo+ID4+
PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPiA+Pj4gKyAgICAg
ICAgICAgICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPj4+ICsK
PiA+Pj4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5wYXRo
Owo+ID4+PiArICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgZGVudHJ5LT5kX25hbWUubmFt
ZSkpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Pj4gKwo+ID4+PiAr
ICAgICAgICAgICAgIGVpLT5ibGsgPSBGREVWKGkpLnN0YXJ0X2JsazsKPiA+Pj4gKyAgICAgICAg
ICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19ibG9ja3Nf
cGVyX3NlZzsKPiA+Pj4gKyAgICAgICAgICAgICBlaS0+Zm9mcyA9IDA7Cj4gPj4+ICsgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgcmV0dXJuIGZhbHNl
Owo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2VydmVfZGV2
X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5v
ZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2Jf
aW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90
cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAg
ICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWk7Cj4gPj4+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNw
YyA9IHsgQ1BfU1lOQywgMCwgMCwgMCB9Owo+ID4+PiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2Nv
bnRleHQgbGMsIGdsYzsKPiA+Pj4gKyAgICAgYmxrY250X3QgY291bnQ7Cj4gPj4+ICsgICAgIHVu
c2lnbmVkIGludCBzdGFydCwgZW5kOwo+ID4+PiArICAgICBpbnQgdHlwZSwgZXJyOwo+ID4+PiAr
Cj4gPj4+ICsgICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKPiA+Pj4gKyAgICAgICAg
ICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19z
YmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkKPiA+Pj4gKyAgICAgICAgICAgICBy
ZXR1cm4gLUVJTlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBlcnIgPSBtbnRfd2FudF93cml0ZV9m
aWxlKGZpbHApOwo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIHJldHVy
biBlcnI7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPj4+ICsKPiA+
Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPj4+ICsgICAgICAg
ICAgICAgZXJyID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91
bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoRjJGU19IQVNfQkxP
Q0tTKGlub2RlKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPj4+ICsgICAgICAg
ICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4g
KyAgICAgaWYgKCFmMmZzX2dldF9kZXZfYWxpYXNfZXh0ZW50KHNiaSwgZmlscC0+Zl9wYXRoLmRl
bnRyeSwgJmVpKSkgewo+ID4+PiArICAgICAgICAgICAgIGYyZnNfd2FybihzYmksICJkZXZpY2Ug
YWxpYXMgZmlsZSAoJXMsIGlubz0lbGx1KSBoYXMgbm8gbWF0Y2hpbmcgZGV2aWNlIiwKPiA+Pj4g
KyAgICAgICAgICAgICAgICAgICAgICAgZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5hbWUs
Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUt
PmlfaW5vKTsKPiA+Pj4gKyAgICAgICAgICAgICBzZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9G
U0NLKTsKPiA+Pj4gKyAgICAgICAgICAgICBmMmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NP
UlJVUFRFRF9JTk9ERSk7Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsK
PiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0K
PiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+Pj4gKyAg
ICAgaWYgKHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQgKyBlaS5sZW4gPgo+ID4+PiArICAg
ICAgICAgICAgICAgICAgICAgZ2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCB0
cnVlKSkgewo+ID4+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7
Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVOT1NQQzsKPiA+Pj4gKyAgICAgICAgICAgICBn
b3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKyAgICAgc2JpLT5hbGlh
c19yZXNlcnZlZF9ibG9ja3MgKz0gZWkubGVuOwo+ID4+PiArICAgICBzcGluX3VubG9jaygmc2Jp
LT5zdGF0X2xvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSkt
PnNlZ21hcF9sb2NrKTsKPiA+Pj4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgo
c2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcgPSB0cnVlOwo+ID4+PiArICAgICBzcGluX3VubG9j
aygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBzdGFydCA9
IEdFVF9TRUdOTyhzYmksIGVpLmJsayk7Cj4gPj4+ICsgICAgIGVuZCA9IEdFVF9TRUdOTyhzYmks
IGVpLmJsayArIGVpLmxlbiAtIDEpOwo+ID4+PiArCj4gPj4+ICsgICAgIC8qIEFjcXVpcmUgZ2Nf
bG9jayBmb3IgdmljdGltIHJlc2V0LCBjdXJzZWcgcmVzaXplLCBhbmQgcmFuZ2UgR0MgKi8KPiA+
Pj4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+
PiArCj4gPj4+ICsgICAgIC8qIFJlc2V0IHRoZSB2aWN0aW0gaW5mb3JtYXRpb24gdG8gcHJldmVu
dCBHQyBmcm9tIHRhcmdldGluZyB0aGUgcmFuZ2UgKi8KPiA+Pj4gKyAgICAgZjJmc19yZXNldF9n
Y192aWN0aW1fcmVzb3VyY2Uoc2JpLCBzdGFydCwgZW5kKTsKPiA+Pj4gKwo+ID4+PiArICAgICAv
KiBNb3ZlIG91dCBjdXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ID4+PiArICAgICBm
b3IgKHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBF
OyB0eXBlKyspIHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSBmMmZzX2FsbG9jYXRlX3NlZ21l
bnRfZm9yX3Jlc2l6ZShzYmksIHR5cGUsIHN0YXJ0LCBlbmQpOwo+ID4+PiArICAgICAgICAgICAg
IGlmIChlcnIpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7
Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2JpLCAmbGMp
Owo+ID4+PiArCj4gPj4+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBT
QklfQ1BfRElTQUJMRUQpKSkgewo+ID4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4g
Pj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiArICAgICAg
ICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+PiArCj4gPj4+ICsg
ICAgIC8qIGRvIEdDIHRvIG1vdmUgb3V0IHZhbGlkIGJsb2NrcyBpbiB0aGUgcmFuZ2UgYWxsIGF0
IG9uY2UhICovCj4gPj4+ICsgICAgIGVyciA9IGYyZnNfZ2NfcmFuZ2Uoc2JpLCBzdGFydCwgZW5k
LCBmYWxzZSwgMCk7Cj4gPj4+ICsgICAgIGlmIChlcnIpIHsKPiA+Pj4gKyAgICAgICAgICAgICBm
MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2Nf
dW5sb2NrOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgY291bnQgPSBlaS5sZW47
Cj4gPj4+ICsgICAgIGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291
bnQsIGZhbHNlLCB0cnVlKTsKPiA+Pj4gKyAgICAgaWYgKGVycikgewo+ID4+PiArICAgICAgICAg
ICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAgICAgICAgICAgICBnb3RvIG91
dF9nY191bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICB3cml0ZV9sb2Nr
KCZldC0+bG9jayk7Cj4gPj4+ICsgICAgIGV0LT5sYXJnZXN0ID0gZWk7Cj4gPj4+ICsgICAgIHdy
aXRlX3VubG9jaygmZXQtPmxvY2spOwo+ID4+PiArICAgICBjbGVhcl9pbm9kZV9mbGFnKGlub2Rl
LCBGSV9OT19FWFRFTlQpOwo+ID4+PiArCj4gPj4+ICsgICAgIGYyZnNfcmVzZXJ2ZV9kZXZpY2Vf
YWxpYXMoc2JpLCBlaS5ibGssIGVpLmxlbik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaV9zaXplX3dy
aXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+ID4+PiAr
ICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPiA+Pj4gKwo+ID4+PiArICAgICBz
cGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4gPj4+ICsgICAgIEZERVYoZjJm
c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gZmFsc2U7
Cj4gPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4+
PiArCj4gPj4+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAgICAgZjJm
c191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+Pgo+ID4+IERvIHdlIG5l
ZWQgdG8gY2FsbCBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKSBoZXJlIHRvIG1ha2Ug
c3VyZSBwZXJzaXN0Cj4gPj4gZGV2aWNlIGFsaWFzIGZpbGUgZmlyc3Q/IHRvIGF2b2lkIGZvbGxv
d2luZyBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcygpIHJhY2luCj4gPj4gICAgdy8gZjJmc19p
b2NfcmVzZXJ2ZV9kZXZfYWxpYXMoKT8KPiA+Pgo+ID4+IC0gZjJmc19pb2NfcmVzZXJ2ZV9kZXZf
YWxpYXMgICAgICAgICAgICAtIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzCj4gPj4gLi4uCj4g
Pj4gICAgLSBmMmZzX3VubG9ja19vcAo+ID4+ICAgIC0gZjJmc191cF93cml0ZV90cmFjZShnY19s
b2NrKQo+ID4+ICAgIC0gaW5vZGVfdW5sb2NrCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBpbm9kZV9sb2NrCj4gPj4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uCj4gPj4gICAgLSBmMmZzX3dyaXRlX2NoZWNrcG9pbnQK
PiA+Cj4gPiBIaSBDaGFvLAo+ID4KPiA+IEkgY291bGRuJ3QgZ2V0IHlvdXIgcG9pbnQuIENvdWxk
IHlvdSBlbGFib3JhdGUgbW9yZSwgaWYgSSBtaXNzZWQgaXQ/Cj4KPiBIaSBEYWVobywKPgo+IEFj
dHVhbGx5LCB3aGF0IEkgbWVhbiBpcyBpZiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoKSBpcyBub3Qg
Y292ZXJlZCBieQo+IGlub2RlIGxvY2ssIGluIHJhY2UgY29uZGl0aW9uIHRoZXJlIHdpbGwgYmUg
YmVsb3cgaW52b2tpbmcgc2VyaWFsOgo+Cj4gQXNzdW1lOgo+IGYyZnNfaW9jX3Jlc2VydmVfZGV2
X2FsaWFzIDo9IHJlc2VydmVfZGV2X2FsaWFzICsgZjJmc193cml0ZV9jaGVja3BvaW50Cj4gZjJm
c19pb2NfcmVsZWFzZV9kZXZfYWxpYXMgOj0gcmVsZWFzZV9kZXZfYWxpYXMgKyBmMmZzX3dyaXRl
X2NoZWNrcG9pbnQKPgo+IDEpIFRocmVhZCBBOiByZXNlcnZlX2Rldl9hbGlhcwo+IDIpIFRocmVh
ZCBCOiByZWxlYXNlX2Rldl9hbGlhcwo+IDMpIFRocmVhZCBDOiByZXNlcnZlX2Rldl9hbGlhcwo+
IDQpIFRocmVhZCBCOiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQKPiA1KSBUaHJlYWQgQTogZjJmc193
cml0ZV9jaGVja3BvaW50Cj4gNikgVGhyZWFkIEM6IGYyZnNfd3JpdGVfY2hlY2twb2ludAo+Cj4g
QWZ0ZXIgMSkgYWxsIGRhdGEgYWZ0ZXIgcmVzZXJ2ZV9kZXZfYWxpYXMoKSBhcmUgbm90IGNoZWNr
cG9pbnRlZCwgdGhlbiB0aGUKPiBmb2xsb3dpbmcgcmVsZWFzZV9kZXZfYWxpYXMgaW4gMikgd29u
J3QgZW5jb3VudGVyIGFueSBpc3N1ZSwgcmlnaHQ/IGFuZCB0aGUKPiBzYW1lIHF1ZXRpb25zIGZv
ciAzKS4KPgo+IElPVywgcmVzZXJ2ZV9kZXZfYWxpYXMvcmVsZWFzZV9kZXZfYWxpYXMgZG9lc24n
dCBuZWVkIHRvIHJlbHkgb24gY2hlY2twb2ludGVkCj4gc3RhdGUgb2YgZWFjaCBvdGhlciwgYW0g
SSB1bmRlcnN0YW5kIGl0IGNvcnJlY3RseT8gaWYgc28gdGhlcmUgd29uJ3QgYmUgYW55Cj4gaXNz
dWUuCj4KPiA+Cj4gPiAxLiBJbi1tZW1vcnkgc3RhdGUgaXMgYWxyZWFkeSBhdG9taWMgKE5vIFJh
Y2UpOgo+ID4gICAgICBCZWZvcmUgaW5vZGVfdW5sb2NrKCksIGFsbCBpbi1tZW1vcnkgbWV0YWRh
dGEgKGV4dGVudF90cmVlLCBTSVQKPiA+IHNlZ21lbnQgYml0bWFwcywgaV9zaXplLCBhbmQgZGly
dHkgaW5vZGUgcGFnZSkgYXJlIGZ1bGx5IHVwZGF0ZWQgdW5kZXIKPiA+IGlub2RlX2xvY2sgKyBm
MmZzX2xvY2tfb3AuIEEgc3Vic2VxdWVudCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcygpCj4g
PiB3aWxsIG9ic2VydmUgYSBjb21wbGV0ZSwgY29uc2lzdGVudCBzdGF0ZS4KPiA+Cj4gPiAyLiBP
bi1kaXNrIGNvbnNpc3RlbmN5ICYgY3Jhc2ggc2FmZXR5Ogo+ID4gICAgICBDaGVja3BvaW50cyBh
cmUgc2VyaWFsaXplZCBpbnRlcm5hbGx5IHZpYSBjcF9tdXRleCAvCj4gPiBmMmZzX2xvY2tfYWxs
KCkuIFJlZ2FyZGxlc3Mgb2YgdGhlIGNoZWNrcG9pbnQgZXhlY3V0aW9uIHRpbWluZyBvciBhbnkK
PiA+IHN1ZGRlbiBwb3dlci1vZmYgKFNQTykgYmV0d2VlbiB0aGUgdHdvIGlvY3RscywgdGhlIGZp
bGVzeXN0ZW0gYWx3YXlzCj4gPiByZWNvdmVycyB0byB0aGUgbGFzdCBjb21taXR0ZWQgYXRvbWlj
IGNoZWNrcG9pbnQgd2l0aG91dCBtZXRhZGF0YQo+ID4gY29ycnVwdGlvbi4KPgo+IFRoYW5rcyBm
b3IgdGhlIGV4cGxhbmF0aW9uLgo+Cj4gVGhhbmtzLAoKClllcywgeW91ciB1bmRlcnN0YW5kaW5n
IGlzIGNvbXBsZXRlbHkgY29ycmVjdCEKCk5laXRoZXIgcmVzZXJ2ZV9kZXZfYWxpYXMoKSBub3Ig
cmVsZWFzZV9kZXZfYWxpYXMoKSByZWxpZXMgb24gdGhlCmNoZWNrcG9pbnRlZCBzdGF0ZSBvZiBw
cmV2aW91cyBvcGVyYXRpb25zLgpUaGV5IG9ubHkgZGVwZW5kIG9uIHRoZSBpbi1tZW1vcnkgbWV0
YWRhdGEgKGV4dGVudCB0cmVlLCBTSVQgYml0bWFwcywKaV9zaXplLCBldGMuKSwgd2hpY2ggaXMg
YWxyZWFkeSBhdG9taWNhbGx5IHVwZGF0ZWQgYW5kIGZ1bGx5CnN5bmNocm9uaXplZCBieSBpbm9k
ZV9sb2NrIGFuZCBmMmZzX2xvY2tfb3AuClRoZXJlZm9yZSwgdGhlIGludGVybGVhdmVkIGNoZWNr
cG9pbnQgc2NlbmFyaW8geW91IGRlc2NyaWJlZCB3b24ndApjYXVzZSBhbnkgaXNzdWUgYXQgYWxs
LgoKVGhhbmtzLAoKPgo+ID4KPiA+IFRoYW5rcywKPiA+Cj4gPj4KPiA+Pj4gKwo+ID4+PiArICAg
ICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp
bHApOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVybiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2Jp
LCAmY3BjKTsKPiA+Pj4gKwo+ID4+PiArb3V0X2djX3VubG9jazoKPiA+Pj4gKyAgICAgc3Bpbl9s
b2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPj4+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxv
Y2tzIC09IGVpLmxlbjsKPiA+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsK
PiA+Pj4gKwo+ID4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7
Cj4gPj4+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSku
aXNfcmVzZXJ2aW5nID0gZmFsc2U7Cj4gPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVFX0koc2Jp
KS0+c2VnbWFwX2xvY2spOwo+ID4+PiArICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdj
X2xvY2ssICZnbGMpOwo+ID4+PiArCj4gPj4+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4+PiArICAg
ICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp
bHApOwo+ID4+PiArICAgICByZXR1cm4gZXJyOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0
aWMgaW50IGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+ID4+
PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsK
PiA+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsK
PiA+Pj4gKyAgICAgc3RydWN0IGV4dGVudF90cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVu
dF90cmVlW0VYX1JFQURdOwo+ID4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWkgPSB7MCwg
fTsKPiA+Pj4gKyAgICAgc3RydWN0IGNwX2NvbnRyb2wgY3BjID0geyBDUF9TWU5DLCAwLCAwLCAw
IH07Cj4gPj4+ICsgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4dCBsYywgZ2xjOwo+ID4+PiAr
ICAgICBpbnQgZXJyOwo+ID4+PiArCj4gPj4+ICsgICAgIGlmICghY2FwYWJsZShDQVBfU1lTX0FE
TUlOKSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICsg
ICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkK
PiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+Pj4gKwo+ID4+PiArICAgICBl
cnIgPSBtbnRfd2FudF93cml0ZV9maWxlKGZpbHApOwo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+
PiArICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaW5vZGVfbG9j
ayhpbm9kZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5v
ZGUpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiA+Pj4gKyAgICAgICAg
ICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPj4+ICsgICAgIH0KPiA+Pj4gKwo+ID4+PiAr
ICAgICBpZiAoIUYyRlNfSEFTX0JMT0NLUyhpbm9kZSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBl
cnIgPSAwOwo+ID4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+Pj4g
KyAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgIGVyciA9IGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQo
aW5vZGUtPmlfbWFwcGluZyk7Cj4gPj4+ICsgICAgIGlmIChlcnIpCj4gPj4+ICsgICAgICAgICAg
ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArCj4gPj4+ICsgICAgIHJlYWRfbG9jaygm
ZXQtPmxvY2spOwo+ID4+PiArICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4+PiArICAgICByZWFk
X3VubG9jaygmZXQtPmxvY2spOwo+ID4+PiArCj4gPj4+ICsgICAgIGYyZnNfZG93bl93cml0ZV90
cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+Pj4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwg
JmxjKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNi
aSwgU0JJX0NQX0RJU0FCTEVEKSkpIHsKPiA+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFM
Owo+ID4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+Pj4gKyAg
ICAgICAgICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+
PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+Pj4gKyAgICAgfQo+ID4+
PiArCj4gPj4+ICsgICAgIGZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGlub2RlLT5pX21hcHBpbmcp
Owo+ID4+PiArICAgICB0cnVuY2F0ZV9zZXRzaXplKGlub2RlLCAwKTsKPiA+Pj4gKwo+ID4+PiAr
ICAgICBlcnIgPSBmMmZzX3RydW5jYXRlX2Jsb2Nrcyhpbm9kZSwgMCwgZmFsc2UpOwo+ID4+PiAr
ICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAgICAgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxv
ZmZfdCllaS5sZW4gPDwgc2JpLT5sb2dfYmxvY2tzaXplKTsKPiA+Pj4gKyAgICAgZmlsZW1hcF9p
bnZhbGlkYXRlX3VubG9jayhpbm9kZS0+aV9tYXBwaW5nKTsKPiA+Pj4gKwo+ID4+PiArICAgICBp
ZiAoZXJyKSB7Cj4gPj4+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+
ID4+PiArICAgICAgICAgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmds
Yyk7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4+PiArICAg
ICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZjJmc191cGRhdGVfaW5vZGVfcGFnZShpbm9kZSk7Cj4g
Pj4+ICsKPiA+Pj4gKyAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4+PiArICAgICBm
MmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4+Cj4gPj4gICAgICAg
ICAgZXJyID0gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYyk7Cj4gPj4KPiA+PiBUaGFu
a3MsCj4gPj4KPiA+Pj4gKwo+ID4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+PiAr
ICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHApOwo+ID4+PiArCj4gPj4+ICsgICAgIHJldHVy
biBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2JpLCAmY3BjKTsKPiA+Pj4gKwo+ID4+PiArb3V0X2lu
b2RlX3VubG9jazoKPiA+Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+Pj4gKyAgICAg
bW50X2Ryb3Bfd3JpdGVfZmlsZShmaWxwKTsKPiA+Pj4gKyAgICAgcmV0dXJuIGVycjsKPiA+Pj4g
K30KPiA+Pj4gKwo+ID4+PiAgICBzdGF0aWMgaW50IGYyZnNfaW9jX2lvX3ByaW8oc3RydWN0IGZp
bGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+PiAgICB7Cj4gPj4+ICAgICAgICBzdHJ1
Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4gQEAgLTQwNDEsNyArNDI5
Nyw3IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZV9jb21wcmVzc19ibG9ja3Moc3RydWN0IGRub2RlX29m
X2RhdGEgKmRuLCBwZ29mZl90IGNvdW50LAo+ID4+PiAgICAgICAgICAgICAgICB9Cj4gPj4+Cj4g
Pj4+ICAgICAgICAgICAgICAgIHJldCA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5p
bm9kZSwKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ0b19yZXNlcnZlZCwgZmFsc2UpOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnRvX3Jlc2VydmVkLCBmYWxzZSwgZmFsc2UpOwo+ID4+PiAgICAg
ICAgICAgICAgICBpZiAodW5saWtlbHkocmV0KSkKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0Owo+ID4+Pgo+ID4+PiBAQCAtNDc0Miw4ICs0OTk4LDE0IEBAIHN0YXRpYyBs
b25nIF9fZjJmc19pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5z
aWduZWQgbG9uZyBhcmcpCj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19jb21w
cmVzc19maWxlKGZpbHApOwo+ID4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT
X0ZJTEU6Cj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFz
X2ZpbGUoZmlscCwgYXJnKTsKPiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT
X1NUQVRVUzoKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlh
c19zdGF0dXMoZmlscCwgYXJnKTsKPiA+Pj4gICAgICAgIGNhc2UgRjJGU19JT0NfSU9fUFJJTzoK
PiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2lvX3ByaW8oZmlscCwgYXJnKTsK
PiA+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUzoKPiA+Pj4gKyAgICAg
ICAgICAgICByZXR1cm4gZjJmc19pb2NfcmVzZXJ2ZV9kZXZfYWxpYXMoZmlscCk7Cj4gPj4+ICsg
ICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6Cj4gPj4+ICsgICAgICAgICAgICAg
cmV0dXJuIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKGZpbHApOwo+ID4+PiAgICAgICAgZGVm
YXVsdDoKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4gPj4+ICAgICAgICB9
Cj4gPj4+IEBAIC01NTMwLDcgKzU3OTIsMTAgQEAgbG9uZyBmMmZzX2NvbXBhdF9pb2N0bChzdHJ1
Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+
ICAgICAgICBjYXNlIEYyRlNfSU9DX0RFQ09NUFJFU1NfRklMRToKPiA+Pj4gICAgICAgIGNhc2Ug
RjJGU19JT0NfQ09NUFJFU1NfRklMRToKPiA+Pj4gICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RF
Vl9BTElBU19GSUxFOgo+ID4+PiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RB
VFVTOgo+ID4+PiAgICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+ID4+PiArICAgICBjYXNl
IEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+ID4+PiArICAgICBjYXNlIEYyRlNfSU9DX1JF
TEVBU0VfREVWX0FMSUFTOgo+ID4+PiAgICAgICAgICAgICAgICBicmVhazsKPiA+Pj4gICAgICAg
IGRlZmF1bHQ6Cj4gPj4+ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PSU9DVExDTUQ7Cj4gPj4+
IGRpZmYgLS1naXQgYS9mcy9mMmZzL2djLmMgYi9mcy9mMmZzL2djLmMKPiA+Pj4gaW5kZXggZmZh
YTdiYTc2YTFiLi45M2JjYjM1YTViNWQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvZ2MuYwo+
ID4+PiArKysgYi9mcy9mMmZzL2djLmMKPiA+Pj4gQEAgLTIxOTcsMjkgKzIxOTcsMzcgQEAgaW50
IGYyZnNfZ2NfcmFuZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgcmV0
dXJuIDA7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1f
cmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiArICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKQo+ID4+PiArewo+ID4+
PiArICAgICBpbnQgaTsKPiA+Pj4gKwo+ID4+PiArICAgICBtdXRleF9sb2NrKCZESVJUWV9JKHNi
aSktPnNlZ2xpc3RfbG9jayk7Cj4gPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9M
SUNZOyBpKyspCj4gPj4+ICsgICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxhc3RfdmljdGlt
W2ldID49IHN0YXJ0ICYmCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s
YXN0X3ZpY3RpbVtpXSA8PSBlbmQpCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShz
YmkpLT5sYXN0X3ZpY3RpbVtpXSA9IDA7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZm9yIChpID0gQkdf
R0M7IGkgPD0gRkdfR0M7IGkrKykKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3Zp
Y3RpbV9zZWdbaV0gPj0gc3RhcnQgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+
bmV4dF92aWN0aW1fc2VnW2ldIDw9IGVuZCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNi
aS0+bmV4dF92aWN0aW1fc2VnW2ldID0gTlVMTF9TRUdOTzsKPiA+Pj4gKyAgICAgbXV0ZXhfdW5s
b2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4g
ICAgc3RhdGljIGludCBmcmVlX3NlZ21lbnRfcmFuZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp
LAo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlY3Ms
IGJvb2wgZHJ5X3J1bikKPiA+Pj4gICAgewo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IG5leHRf
aW51c2UsIHN0YXJ0LCBlbmQ7Cj4gPj4+ICAgICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7
IENQX1JFU0laRSwgMCwgMCwgMCB9Owo+ID4+PiAtICAgICBpbnQgZ2NfbW9kZSwgZ2NfdHlwZTsK
PiA+Pj4gICAgICAgIGludCBlcnIgPSAwOwo+ID4+PiAgICAgICAgaW50IHR5cGU7Cj4gPj4+Cj4g
Pj4+IC0gICAgIC8qIEZvcmNlIGJsb2NrIGFsbG9jYXRpb24gZm9yIEdDICovCj4gPj4+ICAgICAg
ICBNQUlOX1NFQ1Moc2JpKSAtPSBzZWNzOwo+ID4+PiAgICAgICAgc3RhcnQgPSBNQUlOX1NFQ1Mo
c2JpKSAqIFNFR1NfUEVSX1NFQyhzYmkpOwo+ID4+PiAgICAgICAgZW5kID0gTUFJTl9TRUdTKHNi
aSkgLSAxOwo+ID4+Pgo+ID4+PiAtICAgICBtdXRleF9sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xp
c3RfbG9jayk7Cj4gPj4+IC0gICAgIGZvciAoZ2NfbW9kZSA9IDA7IGdjX21vZGUgPCBNQVhfR0Nf
UE9MSUNZOyBnY19tb2RlKyspCj4gPj4+IC0gICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxh
c3RfdmljdGltW2djX21vZGVdID49IHN0YXJ0KQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAg
U0lUX0koc2JpKS0+bGFzdF92aWN0aW1bZ2NfbW9kZV0gPSAwOwo+ID4+PiAtCj4gPj4+IC0gICAg
IGZvciAoZ2NfdHlwZSA9IEJHX0dDOyBnY190eXBlIDw9IEZHX0dDOyBnY190eXBlKyspCj4gPj4+
IC0gICAgICAgICAgICAgaWYgKHNiaS0+bmV4dF92aWN0aW1fc2VnW2djX3R5cGVdID49IHN0YXJ0
KQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlw
ZV0gPSBOVUxMX1NFR05POwo+ID4+PiAtICAgICBtdXRleF91bmxvY2soJkRJUlRZX0koc2JpKS0+
c2VnbGlzdF9sb2NrKTsKPiA+Pj4gKyAgICAgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uo
c2JpLCBzdGFydCwgZW5kKTsKPiA+Pj4KPiA+Pj4gICAgICAgIC8qIE1vdmUgb3V0IGN1cnNlZ3Mg
ZnJvbSB0aGUgdGFyZ2V0IHJhbmdlICovCj4gPj4+ICAgICAgICBmb3IgKHR5cGUgPSBDVVJTRUdf
SE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0eXBlKyspIHsKPiA+Pj4g
ZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4+PiBpbmRl
eCBjYWMwM2I4ZTkxYTEuLjhjM2I1Nzk4N2Y2YyAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9u
YW1laS5jCj4gPj4+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4+PiBAQCAtNDI1LDYgKzQyNSw5
IEBAIHN0YXRpYyBpbnQgZjJmc19saW5rKHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVj
dCBpbm9kZSAqZGlyLAo+ID4+PiAgICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHko
c2JpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4gPj4+Cj4gPj4+ICsg
ICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4+PiArICAgICAgICAgICAgIHJl
dHVybiAtRVBFUk07Cj4gPj4+ICsKPiA+Pj4gICAgICAgIGVyciA9IGZzY3J5cHRfcHJlcGFyZV9s
aW5rKG9sZF9kZW50cnksIGRpciwgZGVudHJ5KTsKPiA+Pj4gICAgICAgIGlmIChlcnIpCj4gPj4+
ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC01NjgsNiArNTcxLDkgQEAgc3Rh
dGljIGludCBmMmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVu
dHJ5KQo+ID4+Pgo+ID4+PiAgICAgICAgdHJhY2VfZjJmc191bmxpbmtfZW50ZXIoZGlyLCBkZW50
cnkpOwo+ID4+Pgo+ID4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+
Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAo
dW5saWtlbHkoZjJmc19jcF9lcnJvcihzYmkpKSkgewo+ID4+PiAgICAgICAgICAgICAgICBlcnIg
PSAtRUlPOwo+ID4+PiAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+Pj4gQEAgLTk0Niw2ICs5
NTIsOSBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBz
dHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPj4+ICAgICAgICBib29sIG9sZF9pc19kaXIgPSBTX0lT
RElSKG9sZF9pbm9kZS0+aV9tb2RlKTsKPiA+Pj4gICAgICAgIGludCBlcnI7Cj4gPj4+Cj4gPj4+
ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSkKPiA+Pj4gKyAgICAgICAg
ICAgICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAodW5saWtlbHkoZjJm
c19jcF9lcnJvcihzYmkpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPj4+
ICAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBAQCAtMTAx
Niw2ICsxMDI1LDggQEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICpp
ZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAo+ID4+PiAgICAgICAgfQo+ID4+Pgo+ID4+PiAg
ICAgICAgaWYgKG5ld19pbm9kZSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChJU19ERVZJQ0Vf
QUxJQVNJTkcobmV3X2lub2RlKSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt
RVBFUk07Cj4gPj4+Cj4gPj4+ICAgICAgICAgICAgICAgIGVyciA9IC1FTk9URU1QVFk7Cj4gPj4+
ICAgICAgICAgICAgICAgIGlmIChvbGRfaXNfZGlyICYmICFmMmZzX2VtcHR5X2RpcihuZXdfaW5v
ZGUpKQo+ID4+PiBAQCAtMTE0Myw2ICsxMTU0LDkgQEAgc3RhdGljIGludCBmMmZzX2Nyb3NzX3Jl
bmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCj4g
Pj4+ICAgICAgICBpbnQgb2xkX25saW5rID0gMCwgbmV3X25saW5rID0gMDsKPiA+Pj4gICAgICAg
IGludCBlcnI7Cj4gPj4+Cj4gPj4+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lu
b2RlKSB8fCBJU19ERVZJQ0VfQUxJQVNJTkcobmV3X2lub2RlKSkKPiA+Pj4gKyAgICAgICAgICAg
ICByZXR1cm4gLUVQRVJNOwo+ID4+PiArCj4gPj4+ICAgICAgICBpZiAodW5saWtlbHkoZjJmc19j
cF9lcnJvcihzYmkpKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPj4+ICAg
ICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4+PiBkaWZmIC0tZ2l0
IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4+PiBpbmRleCBkNzFk
ZGIzZWU5MTguLmQ3MGRjNWVmM2RlNCAxMDA2NDQKPiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50
LmMKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+Pj4gQEAgLTI2MSw3ICsyNjEsNyBA
QCBzdGF0aWMgaW50IF9fcmVwbGFjZV9hdG9taWNfd3JpdGVfYmxvY2soc3RydWN0IGlub2RlICpp
bm9kZSwgcGdvZmZfdCBpbmRleCwKPiA+Pj4gICAgICAgIH0gZWxzZSB7Cj4gPj4+ICAgICAgICAg
ICAgICAgIGJsa2NudF90IGNvdW50ID0gMTsKPiA+Pj4KPiA+Pj4gLSAgICAgICAgICAgICBlcnIg
PSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCB0cnVlKTsKPiA+Pj4g
KyAgICAgICAgICAgICBlcnIgPSBpbmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNv
dW50LCB0cnVlLCBmYWxzZSk7Cj4gPj4+ICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiA+Pj4g
ICAgICAgICAgICAgICAgICAgICAgICBmMmZzX3B1dF9kbm9kZSgmZG4pOwo+ID4+PiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC0yNTAyLDM1ICsyNTAyLDQyIEBA
IHN0YXRpYyBpbnQgdXBkYXRlX3NpdF9lbnRyeV9mb3JfYWxsb2Moc3RydWN0IGYyZnNfc2JfaW5m
byAqc2JpLCBzdHJ1Y3Qgc2VnX2VudHJ5Cj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8sIGJsb2NrX3QgYmxrYWRkciwgdW5zaWduZWQgaW50IG9m
ZnNldCwgaW50IGRlbCkKPiA+Pj4gICAgewo+ID4+PiAgICAgICAgYm9vbCBleGlzdDsKPiA+Pj4g
KyAgICAgaW50IGRlbF9jb3VudCA9IGRlbDsKPiA+Pj4gKyAgICAgaW50IGk7Cj4gPj4+Cj4gPj4+
IC0gICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmN1cl92YWxp
ZF9tYXApOwo+ID4+PiAtICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4gPj4+IC0gICAgICAg
ICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxr
YWRkcik7Cj4gPj4+IC0gICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPiA+Pj4gLSAg
ICAgICAgICAgICBzZS0+dmFsaWRfYmxvY2tzLS07Cj4gPj4+IC0gICAgICAgICAgICAgZGVsID0g
MDsKPiA+Pj4gLSAgICAgfQo+ID4+PiArICAgICBmMmZzX2J1Z19vbihzYmksIEdFVF9TRUdOTyhz
YmksIGJsa2FkZHIpICE9IEdFVF9TRUdOTyhzYmksIGJsa2FkZHIgKyBkZWxfY291bnQgLSAxKSk7
Cj4gPj4+Cj4gPj4+IC0gICAgIGlmIChmMmZzX2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4g
Pj4+IC0gICAgICAgICAgICAgICAgICAgICAhZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwg
c2UtPmRpc2NhcmRfbWFwKSkKPiA+Pj4gLSAgICAgICAgICAgICBzYmktPmRpc2NhcmRfYmxrcy0t
Owo+ID4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsX2NvdW50OyBpKyspIHsKPiA+Pj4gKyAg
ICAgICAgICAgICBleGlzdCA9IGYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBzZS0+
Y3VyX3ZhbGlkX21hcCk7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGV4aXN0KSkg
ewo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3
cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxrYWRkciArIGkpOwo+ID4+PiArICAgICAgICAgICAgICAg
ICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNl
LT52YWxpZF9ibG9ja3MtLTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRlbCAtPSAxOwo+
ID4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4+ICsgICAgICAgICAgICAg
fQo+ID4+Pgo+ID4+PiAtICAgICAvKgo+ID4+PiAtICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJl
dXNlIGJsb2NrIHdoaWNoIGlzIGNoZWNrcG9pbnRlZAo+ID4+PiAtICAgICAgKiBvciBuZXdseSBp
bnZhbGlkYXRlZC4KPiA+Pj4gLSAgICAgICovCj4gPj4+IC0gICAgIGlmICghaXNfc2JpX2ZsYWdf
c2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkgewo+ID4+PiAtICAgICAgICAgICAgIGlmICghZjJm
c190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4+PiAt
ICAgICAgICAgICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPj4+IC0gICAg
ICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPj4+IC0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRf
dmFsaWRfYmxvY2tzKys7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfYmxvY2tfdW5pdF9k
aXNjYXJkKHNiaSkgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWYyZnNf
dGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBzZS0+ZGlzY2FyZF9tYXApKQo+ID4+PiArICAg
ICAgICAgICAgICAgICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPiA+Pj4gKwo+ID4+PiArICAg
ICAgICAgICAgIC8qCj4gPj4+ICsgICAgICAgICAgICAgICogU1NSIHNob3VsZCBuZXZlciByZXVz
ZSBibG9jayB3aGljaCBpcyBjaGVja3BvaW50ZWQKPiA+Pj4gKyAgICAgICAgICAgICAgKiBvciBu
ZXdseSBpbnZhbGlkYXRlZC4KPiA+Pj4gKyAgICAgICAgICAgICAgKi8KPiA+Pj4gKyAgICAgICAg
ICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpIHsKPiA+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCAr
IGksIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+Pj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0
X3ZhbGlkX2Jsb2NrcysrOwo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4+PiAgICAg
ICAgICAgICAgICB9Cj4gPj4+IC0gICAgIH0KPiA+Pj4KPiA+Pj4gLSAgICAgaWYgKCFmMmZzX3Rl
c3RfYml0KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4+PiAtICAgICAgICAgICAg
IHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSBkZWw7Cj4gPj4+IC0gICAgICAgICAgICAgaWYgKF9f
aXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgZ2V0X3Nl
Y19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4+PiArICAg
ICAgICAgICAgIGlmICghZjJmc190ZXN0X2JpdChvZmZzZXQgKyBpLCBzZS0+Y2twdF92YWxpZF9t
YXApKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3Mg
Kz0gMTsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24o
c2JpKSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShz
YmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsKPiA+Pj4gKyAgICAgICAgICAgICB9
Cj4gPj4+ICAgICAgICB9Cj4gPj4+Cj4gPj4+ICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9u
KHNiaSkpCj4gPj4+IEBAIC0yNTg1LDkgKzI1OTIsMTQgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVf
YmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+ID4+PiAgICAg
ICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPj4+ICAgICAg
ICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4gICAgICAgIGJsb2Nr
X3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPj4+IC0g
ICAgIHVuc2lnbmVkIGludCBzZWdfbnVtID0gR0VUX1NFR05PKHNiaSwgYWRkcl9lbmQpIC0gc2Vn
bm8gKyAxOwo+ID4+PiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+Pj4gICAgICAgIHVu
c2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsK
PiA+Pj4KPiA+Pj4gKyAgICAgaWYgKGxlbiA9PSAwKQo+ID4+PiArICAgICAgICAgICAgIHJldHVy
bjsKPiA+Pj4gKwo+ID4+PiArICAgICBzZWdfbnVtID0gR0VUX1NFR05PKHNiaSwgYWRkcl9lbmQp
IC0gc2Vnbm8gKyAxOwo+ID4+PiArCj4gPj4+ICAgICAgICBmMmZzX2J1Z19vbihzYmksIGFkZHIg
PT0gTlVMTF9BRERSKTsKPiA+Pj4gICAgICAgIGlmIChhZGRyID09IE5FV19BRERSIHx8IGFkZHIg
PT0gQ09NUFJFU1NfQUREUikKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4+PiBAQCAt
MjYyMCw2ICsyNjMyLDUyIEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJm
c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+Pj4gICAgICAgIHVwX3dyaXRlKCZzaXRf
aS0+c2VudHJ5X2xvY2spOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICt2b2lkIGYyZnNfcmVzZXJ2
ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4g
Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pCj4gPj4+
ICt7Cj4gPj4+ICsgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhzYmksIGFkZHIp
Owo+ID4+PiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+Pj4g
KyAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0ID0gYWRkciwgYWRkcl9lbmQgPSBhZGRyICsgbGVuIC0g
MTsKPiA+Pj4gKyAgICAgdW5zaWduZWQgaW50IHNlZ19udW07Cj4gPj4+ICsgICAgIHVuc2lnbmVk
IGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+Pj4g
Kwo+ID4+PiArICAgICBpZiAobGVuID09IDApCj4gPj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+
ID4+PiArCj4gPj4+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkgLSBz
ZWdubyArIDE7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZG93bl93cml0ZSgmc2l0X2ktPnNlbnRyeV9s
b2NrKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4+PiArICAgICAg
ICAgICAgIGNudCA9IGxlbjsKPiA+Pj4gKyAgICAgZWxzZQo+ID4+PiArICAgICAgICAgICAgIGNu
dCA9IG1heF9ibG9ja3MgLSBHRVRfQkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4+PiAr
Cj4gPj4+ICsgICAgIGRvIHsKPiA+Pj4gKyAgICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGlt
ZShzYmksIGFkZHJfc3RhcnQsIDApOwo+ID4+PiArICAgICAgICAgICAgIHVwZGF0ZV9zaXRfZW50
cnkoc2JpLCBhZGRyX3N0YXJ0LCBjbnQpOwo+ID4+PiArICAgICAgICAgICAgIF9fc2V0X3Rlc3Rf
YW5kX2ludXNlKHNiaSwgc2Vnbm8pOwo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogUmVt
b3ZlIHRoZSBzZWdtZW50IGZyb20gUFJFIChwcmVmcmVlKSB0byBwcmV2ZW50IGNoZWNrcG9pbnQg
ZnJvbSBmcmVlaW5nIGl0ISAqLwo+ID4+PiArICAgICAgICAgICAgIG11dGV4X2xvY2soJkRJUlRZ
X0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAodGVzdF9hbmRf
Y2xlYXJfYml0KHNlZ25vLCBESVJUWV9JKHNiaSktPmRpcnR5X3NlZ21hcFtQUkVdKSkKPiA+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIERJUlRZX0koc2JpKS0+bnJfZGlydHlbUFJFXS0tOwo+ID4+
PiArICAgICAgICAgICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp
Owo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogYWRkIGl0IGludG8gZGlydHkgc2VnbGlz
dCAqLwo+ID4+PiArICAgICAgICAgICAgIGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHNiaSwgc2Vnbm8p
Owo+ID4+PiArCj4gPj4+ICsgICAgICAgICAgICAgLyogdXBkYXRlIEBhZGRyX3N0YXJ0IGFuZCBA
Y250IGFuZCBAc2Vnbm8gKi8KPiA+Pj4gKyAgICAgICAgICAgICBhZGRyX3N0YXJ0ID0gU1RBUlRf
QkxPQ0soc2JpLCArK3NlZ25vKTsKPiA+Pj4gKyAgICAgICAgICAgICBpZiAoKytpID09IHNlZ19u
dW0pCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBjbnQgPSBHRVRfQkxLT0ZGX0ZST01fU0VH
MChzYmksIGFkZHJfZW5kKSArIDE7Cj4gPj4+ICsgICAgICAgICAgICAgZWxzZQo+ID4+PiArICAg
ICAgICAgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+Pj4gKyAgICAgfSB3aGlsZSAo
aSA8PSBzZWdfbnVtKTsKPiA+Pj4gKwo+ID4+PiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRy
eV9sb2NrKTsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgICBib29sIGYyZnNfaXNfY2hlY2twb2lu
dGVkX2RhdGEoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpCj4gPj4+
ICAgIHsKPiA+Pj4gICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+
ID4+PiBAQCAtMjc1OCw4ICsyODE2LDEzIEBAIHN0YXRpYyBpbnQgaXNfbmV4dF9zZWdtZW50X2Zy
ZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IHNl
Z25vID0gY3Vyc2VnLT5zZWdubyArIDE7Cj4gPj4+ICAgICAgICBzdHJ1Y3QgZnJlZV9zZWdtYXBf
aW5mbyAqZnJlZV9pID0gRlJFRV9JKHNiaSk7Cj4gPj4+Cj4gPj4+IC0gICAgIGlmIChzZWdubyA8
IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUgU0VHU19QRVJfU0VDKHNiaSkpCj4gPj4+ICsgICAg
IGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUgU0VHU19QRVJfU0VDKHNiaSkp
IHsKPiA+Pj4gKyAgICAgICAgICAgICBpbnQgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRl
eChzYmksIFNUQVJUX0JMT0NLKHNiaSwgc2Vnbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAgICAgICAg
ICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPiA+Pj4gKyAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOwo+ID4+PiAgICAgICAgICAgICAgICByZXR1cm4gIXRlc3Rf
Yml0KHNlZ25vLCBmcmVlX2ktPmZyZWVfc2VnbWFwKTsKPiA+Pj4gKyAgICAgfQo+ID4+PiAgICAg
ICAgcmV0dXJuIDA7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gQEAgLTI3NzgsNyArMjg0MSw4IEBA
IHN0YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+
Pj4gICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19wb2xpY3kgPSBzYmktPmFsbG9jYXRlX3NlY3Rp
b25fcG9saWN5Owo+ID4+PiAgICAgICAgdW5zaWduZWQgaW50IGFsbG9jX2hpbnQgPSBzYmktPmFs
bG9jYXRlX3NlY3Rpb25faGludDsKPiA+Pj4gICAgICAgIGJvb2wgaW5pdCA9IHRydWU7Cj4gPj4+
IC0gICAgIGludCBpOwo+ID4+PiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4+PiArICAg
ICBpbnQgaSwgZGV2aTsKPiA+Pj4gICAgICAgIGludCByZXQgPSAwOwo+ID4+Pgo+ID4+PiAgICAg
ICAgc3Bpbl9sb2NrKCZmcmVlX2ktPnNlZ21hcF9sb2NrKTsKPiA+Pj4gQEAgLTI3OTEsOCArMjg1
NSwxMyBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz
YmksCj4gPj4+ICAgICAgICBpZiAoIW5ld19zZWMgJiYgKCgqbmV3c2VnICsgMSkgJSBTRUdTX1BF
Ul9TRUMoc2JpKSkpIHsKPiA+Pj4gICAgICAgICAgICAgICAgc2Vnbm8gPSBmaW5kX25leHRfemVy
b19iaXQoZnJlZV9pLT5mcmVlX3NlZ21hcCwKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBH
RVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpLCAqbmV3c2VnICsgMSk7Cj4gPj4+IC0gICAg
ICAgICAgICAgaWYgKHNlZ25vIDwgR0VUX1NFR19GUk9NX1NFQyhzYmksIGhpbnQgKyAxKSkKPiA+
Pj4gKyAgICAgICAgICAgICBpZiAoc2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCAr
IDEpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBkZXZpID0gZjJmc190YXJnZXRfZGV2
aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4+PiArCj4gPj4+ICsg
ICAgICAgICAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tlZChzYmksIGRl
dmksIHBpbm5pbmcpKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZp
bmRfb3RoZXJfem9uZTsKPiA+Pj4gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdvdF9pdDsK
PiA+Pj4gKyAgICAgICAgICAgICB9Cj4gPj4+ICAgICAgICB9Cj4gPj4+Cj4gPj4+ICAgICNpZmRl
ZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4+PiBAQCAtMjgyOCwzMyArMjg5Nyw0MiBAQCBzdGF0
aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPj4+ICAg
IGZpbmRfb3RoZXJfem9uZToKPiA+Pj4gICAgICAgIHNlY25vID0gZmluZF9uZXh0X3plcm9fYml0
KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50KTsKPiA+Pj4KPiA+Pj4g
LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4+PiAtICAgICBpZiAoc2Vjbm8gPj0gTUFJ
Tl9TRUNTKHNiaSkgJiYgZjJmc19zYl9oYXNfYmxrem9uZWQoc2JpKSkgewo+ID4+PiAtICAgICAg
ICAgICAgIC8qIFdyaXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+ID4+PiAtICAgICAg
ICAgICAgIGlmIChzYmktPmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05M
WV9TRVEpIHsKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBHRVRfU0VDX0ZST01f
U0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9uZV9zZWdubyk7Cj4gPj4+IC0gICAgICAgICAgICAg
ICAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLCBN
QUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4gPj4+IC0gICAgICAgICAgICAgfSBlbHNlCj4gPj4+IC0g
ICAgICAgICAgICAgICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5m
cmVlX3NlY21hcCwKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNQUlOX1NFQ1Moc2JpKSk7Cj4gPj4+IC0gICAgICAgICAg
ICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7Cj4gPj4+IC0gICAgICAgICAgICAgICAg
ICAgICByZXQgPSAtRU5PU1BDOwo+ID4+PiAtICAgICAgICAgICAgICAgICAgICAgZjJmc19idWdf
b24oc2JpLCAxKTsKPiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsK
PiA+Pj4gLSAgICAgICAgICAgICB9Cj4gPj4+IC0gICAgIH0KPiA+Pj4gLSNlbmRpZgo+ID4+PiAt
Cj4gPj4+ICAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+Pj4gLSAgICAg
ICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwK
PiA+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4+PiAtICAgICAgICAgICAgIGlmIChzZWNubyA+PSBNQUlO
X1NFQ1Moc2JpKSkgewo+ID4+PiArICAgICAgICAgICAgIGlmIChsb29wZWQpIHsKPiA+Pj4gICAg
ICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PU1BDOwo+ID4+PiAgICAgICAgICAgICAgICAg
ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgIXBpbm5pbmcpOwo+ID4+PiAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+Pj4gICAgICAgICAgICAgICAgfQo+ID4+PiArICAg
ICAgICAgICAgIGhpbnQgPSAwOwo+ID4+PiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4g
Pj4+ICsgICAgICAgICAgICAgLyogV3JpdGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4g
Pj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYKPiA+Pj4g
KyAgICAgICAgICAgICAgICAgICAgIHNiaS0+Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9O
RV9BTExPQ19PTkxZX1NFUSkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBHRVRf
U0VDX0ZST01fU0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9uZV9zZWdubyk7Cj4gPj4+ICsjZW5k
aWYKPiA+Pj4gKyAgICAgICAgICAgICBsb29wZWQgPSB0cnVlOwo+ID4+PiArICAgICAgICAgICAg
IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiAgICAgICAgfQo+ID4+PiArCj4gPj4+ICAgICAg
ICBzZWdubyA9IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4gPj4+ICsKPiA+Pj4gKyAg
ICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIFNUQVJUX0JMT0NLKHNiaSwg
c2Vnbm8pKTsKPiA+Pj4gKwo+ID4+PiArICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tl
ZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPj4+ICsgICAgICAgICAgICAgd2hpbGUgKGRldmkg
PCBzYmktPnNfbmRldnMgJiYKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZGV2X2lz
X2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4+PiArICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGVuZF9zZWdubyA9IEdFVF9TRUdOTyhzYmksIEZERVYoZGV2
aSkuZW5kX2Jsayk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBH
RVRfU0VDX0ZST01fU0VHKHNiaSwgZW5kX3NlZ25vKSArIDE7Cj4gPj4+ICsgICAgICAgICAgICAg
ICAgICAgICBkZXZpKys7Cj4gPj4+ICsgICAgICAgICAgICAgfQo+ID4+PiArICAgICAgICAgICAg
IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4+PiArICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAg
aWYgKHNlY191c2FnZV9jaGVjayhzYmksIHNlY25vKSkgewo+ID4+PiArICAgICAgICAgICAgIGhp
bnQgPSBzZWNubyArIDE7Cj4gPj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7
Cj4gPj4+ICsgICAgIH0KPiA+Pj4gICAgICAgIHpvbmVubyA9IEdFVF9aT05FX0ZST01fU0VDKHNi
aSwgc2Vjbm8pOwo+ID4+Pgo+ID4+PiAgICAgICAgLyogZ2l2ZSB1cCBvbiBmaW5kaW5nIGFub3Ro
ZXIgem9uZSAqLwo+ID4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmggYi9mcy9mMmZz
L3NlZ21lbnQuaAo+ID4+PiBpbmRleCBiMGMwNmIzNTgwYjQuLjEwNzUwOGFlN2ViMyAxMDA2NDQK
PiA+Pj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50
LmgKPiA+Pj4gQEAgLTk1NCwxMCArOTU0LDMyIEBAIHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBzdW1f
YmxrX2FkZHIoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgYmFzZSwgaW50IHR5cGUpCj4g
Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChiYXNlICsgMSkgKyB0eXBlOwo+
ID4+PiAgICB9Cj4gPj4+Cj4gPj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZjJmc19kZXZfaXNfcmVz
ZXJ2aW5nKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IGRldmkpCj4gPj4+ICt7Cj4gPj4+
ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPj4+ICsgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwo+ID4+PiArICAgICByZXR1cm4gRkRFVihkZXZpKS5pc19yZXNl
cnZpbmc7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBmMmZzX2Rl
dl9pc19hbGxvY19ibG9ja2VkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+Pj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+
ID4+PiArewo+ID4+PiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKQo+
ID4+PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+Pj4gKyAgICAgcmV0dXJuIChwaW5u
aW5nICYmIEZERVYoZGV2aSkuaGFzX2FsaWFzKSB8fCBGREVWKGRldmkpLmlzX3Jlc2VydmluZzsK
PiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAgICBzdGF0aWMgaW5saW5lIGJvb2wgc2VjX3VzYWdlX2No
ZWNrKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQgaW50IHNlY25vKQo+ID4+PiAg
ICB7Cj4gPj4+ICAgICAgICBpZiAoaXNfY3Vyc2VjKHNiaSwgc2Vjbm8pIHx8IChzYmktPmN1cl92
aWN0aW1fc2VjID09IHNlY25vKSkKPiA+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4g
Pj4+ICsgICAgIGlmIChmMmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkgewo+ID4+PiArICAg
ICAgICAgICAgIGJsb2NrX3Qgc3RhcnRfYmxrID0gU1RBUlRfQkxPQ0soc2JpLCBHRVRfU0VHX0ZS
T01fU0VDKHNiaSwgc2Vjbm8pKTsKPiA+Pj4gKyAgICAgICAgICAgICBpbnQgZGV2aSA9IGYyZnNf
dGFyZ2V0X2RldmljZV9pbmRleChzYmksIHN0YXJ0X2Jsayk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg
ICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNiaSwgZGV2aSkpCj4gPj4+ICsgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+Pj4gKyAgICAgfQo+ID4+PiAgICAgICAg
cmV0dXJuIGZhbHNlOwo+ID4+PiAgICB9Cj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZz
L3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+Pj4gaW5kZXggYzQ0OGQ5OTJmZjJhLi5kNWRj
ODNlNjEzZTIgMTAwNjQ0Cj4gPj4+IC0tLSBhL2ZzL2YyZnMvc3VwZXIuYwo+ID4+PiArKysgYi9m
cy9mMmZzL3N1cGVyLmMKPiA+Pj4gQEAgLTUwMDEsNiArNTAwMSwzOSBAQCBzdGF0aWMgdm9pZCBm
MmZzX3R1bmluZ19wYXJhbWV0ZXJzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+Pj4gICAg
ICAgIHNiaS0+cmVhZGRpcl9yYSA9IHRydWU7Cj4gPj4+ICAgIH0KPiA+Pj4KPiA+Pj4gK3N0YXRp
YyB2b2lkIGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp
KQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKnJvb3QgPSBkX2lub2RlKHNiaS0+
c2ItPnNfcm9vdCk7Cj4gPj4+ICsgICAgIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4gPj4+
ICsgICAgIHN0cnVjdCBmb2xpbyAqZm9saW87Cj4gPj4+ICsgICAgIGludCBpOwo+ID4+PiArCj4g
Pj4+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPj4+ICsgICAg
ICAgICAgICAgcmV0dXJuOwo+ID4+PiArCj4gPj4+ICsgICAgIGZvciAoaSA9IDE7IGkgPCBzYmkt
PnNfbmRldnM7IGkrKykgewo+ID4+PiArICAgICAgICAgICAgIGNoYXIgKm5hbWUgPSBzdHJyY2hy
KEZERVYoaSkucGF0aCwgJy8nKTsKPiA+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlu
b2RlOwo+ID4+PiArICAgICAgICAgICAgIHN0cnVjdCBxc3RyIHFzdHI7Cj4gPj4+ICsKPiA+Pj4g
KyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5wYXRoOwo+ID4+
PiArICAgICAgICAgICAgIHFzdHIubmFtZSA9IG5hbWU7Cj4gPj4+ICsgICAgICAgICAgICAgcXN0
ci5sZW4gPSBzdHJsZW4obmFtZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgICBkZSA9IGYy
ZnNfZmluZF9lbnRyeShyb290LCAmcXN0ciwgJmZvbGlvKTsKPiA+Pj4gKyAgICAgICAgICAgICBp
ZiAoIWRlKQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4+ICsKPiA+
Pj4gKyAgICAgICAgICAgICBpbm9kZSA9IGYyZnNfaWdldChzYmktPnNiLCBsZTMyX3RvX2NwdShk
ZS0+aW5vKSk7Cj4gPj4+ICsgICAgICAgICAgICAgaWYgKCFJU19FUlIoaW5vZGUpKSB7Cj4gPj4+
ICsgICAgICAgICAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRFVihpKS5oYXNfYWxpYXMgPSB0cnVl
Owo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgaXB1dChpbm9kZSk7Cj4gPj4+ICsgICAgICAg
ICAgICAgfQo+ID4+PiArICAgICAgICAgICAgIGYyZnNfZm9saW9fcHV0KGZvbGlvLCAwKTsKPiA+
Pj4gKyAgICAgfQo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICAgIHN0YXRpYyBpbnQgZjJmc19maWxs
X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPiA+
Pj4gICAgewo+ID4+PiAgICAgICAgc3RydWN0IGYyZnNfZnNfY29udGV4dCAqY3R4ID0gZmMtPmZz
X3ByaXZhdGU7Cj4gPj4+IEBAIC01MjA5LDYgKzUyNDIsNyBAQCBzdGF0aWMgaW50IGYyZnNfZmls
bF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4g
Pj4+ICAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlk
X2Jsb2NrX2NvdW50Owo+ID4+PiAgICAgICAgc2JpLT5yZXNlcnZlZF9ibG9ja3MgPSAwOwo+ID4+
PiAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPj4+ICsgICAgIHNi
aS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzID0gMDsKPiA+Pj4gICAgICAgIGxpbWl0X3Jlc2VydmVf
cm9vdChzYmkpOwo+ID4+PiAgICAgICAgYWRqdXN0X3VudXNhYmxlX2NhcF9wZXJjKHNiaSk7Cj4g
Pj4+Cj4gPj4+IEBAIC01NDM2LDYgKzU0NzAsOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBl
cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPj4+ICAg
ICAgICBmMmZzX3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4+PiAgICAgICAgY2xlYXJf
c2JpX2ZsYWcoc2JpLCBTQklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4+Pgo+ID4+PiArICAgICBm
MmZzX3Jlc3RvcmVfZGV2aWNlX2FsaWFzKHNiaSk7Cj4gPj4+ICsKPiA+Pj4gICAgICAgIHNiaS0+
dW1vdW50X2xvY2tfaG9sZGVyID0gTlVMTDsKPiA+Pj4gICAgICAgIHJldHVybiAwOwo+ID4+Pgo+
ID4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaCBiL2luY2x1ZGUvdWFw
aS9saW51eC9mMmZzLmgKPiA+Pj4gaW5kZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAw
NjQ0Cj4gPj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9mMmZzLmgKPiA+Pj4gKysrIGIvaW5j
bHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4+PiBAQCAtNDUsNiArNDUsOSBAQAo+ID4+PiAgICAj
ZGVmaW5lIEYyRlNfSU9DX1NUQVJUX0FUT01JQ19SRVBMQUNFICAgICAgIF9JTyhGMkZTX0lPQ1RM
X01BR0lDLCAyNSkKPiA+Pj4gICAgI2RlZmluZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEUg
X0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4gPj4+ICAgICNkZWZpbmUgRjJGU19J
T0NfSU9fUFJJTyAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9NQUdJQywgMjcsIF9fdTMyKQo+
ID4+PiArI2RlZmluZSBGMkZTX0lPQ19SRVNFUlZFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RM
X01BR0lDLCAyOCkKPiA+Pj4gKyNkZWZpbmUgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVMgICBf
SU8oRjJGU19JT0NUTF9NQUdJQywgMjkpCj4gPj4+ICsjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZf
QUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMwLCBfX3UzMikKPiA+
Pj4KPiA+Pj4gICAgLyoKPiA+Pj4gICAgICogc2hvdWxkIGJlIHNhbWUgYXMgWEZTX0lPQ19HT0lO
R0RPV04uCj4gPj4+IEBAIC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPiA+Pj4gICAgICAgIEYyRlNf
SU9QUklPX01BWCwKPiA+Pj4gICAgfTsKPiA+Pj4KPiA+Pj4gKy8qIGZvciBGMkZTX0lPQ19HRVRf
REVWX0FMSUFTX1NUQVRVUyAqLwo+ID4+PiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNf
UkVMRUFTRUQgICAgICAgMAo+ID4+PiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVT
RVJWRUQgICAgICAgMQo+ID4+PiArCj4gPj4+ICAgIHN0cnVjdCBmMmZzX2djX3JhbmdlIHsKPiA+
Pj4gICAgICAgIF9fdTMyIHN5bmM7Cj4gPj4+ICAgICAgICBfX3U2NCBzdGFydDsKPiA+Pgo+CgoK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJm
cy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5u
ZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJm
cy1kZXZlbAo=