Re: [f2fs-dev] [PATCH v5] f2fs: support dynamic reserve/release for device aliasing
Daeho Jeong <[email protected]> Wed, 29 Jul 2026 09:43:37 -0700
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CACOAw_y-qq79JtsUBMvdNurtb_bXD6esP8cc17M-Gxgf3xpO3w@mail.gmail.com> |
T24gV2VkLCBKdWwgMjksIDIwMjYgYXQgMjowOeKAr0FNIENoYW8gWXUgPGNoYW9Aa2VybmVsLm9y Zz4gd3JvdGU6Cj4KPiBPbiA3LzI0LzI2IDA0OjIwLCBEYWVobyBKZW9uZyB3cm90ZToKPiA+IEZy b206IERhZWhvIEplb25nIDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4gPgo+ID4gVGhpcyBwYXRj aCBhZGRzIGEgZHluYW1pYyBtYW5hZ2VtZW50IGZlYXR1cmUgdG8gdGhlIGV4aXN0aW5nIGRldmlj ZQo+ID4gYWxpYXNpbmcgZnVuY3Rpb25hbGl0eS4gSXQgYWxsb3dzIHVzZXJzIHRvIGR5bmFtaWNh bGx5IHJlc2VydmUgb3IKPiA+IHJlbGVhc2Ugc3BlY2lmaWMgZGV2aWNlcyBmcm9tIHRoZSBmaWxl c3lzdGVtJ3MgZnJlZSBwb29sIGF0IHJ1bnRpbWUKPiA+IHRocm91Z2ggbmV3IGlvY3Rscy4KPiA+ Cj4gPiBUbyBzdXBwb3J0IHRoaXMsIHRocmVlIG5ldyBpb2N0bHMgYXJlIGludHJvZHVjZWQ6Cj4g PiAtIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOiBUaGlzIHJlY2xhaW1zIHRoZSBzcGFjZSBv Y2N1cGllZCBieSBhCj4gPiAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBwZXJmb3Jt cyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPiA+ICAgdmljdGltIGluZm9ybWF0aW9uIGZv ciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyB0aGUgc2VnbWVudHMgYXMgaW4tdXNlCj4gPiAgIHRv IHByZXZlbnQgbmV3IGFsbG9jYXRpb25zLCBhbmQgdGhlbiB0cmlnZ2VycyBHQyB0byBtaWdyYXRl IGV4aXN0aW5nCj4gPiAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSByYW5nZS4gRmluYWxseSwgaXQg cmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+ID4gICBTSVQgdG8gZWZmZWN0aXZlbHkgZXhj bHVkZSB0aGUgZGV2aWNlIGZyb20gdGhlIHVzYWJsZSBjYXBhY2l0eS4KPiA+Cj4gPiAtIEYyRlNf SU9DX1JFTEVBU0VfREVWX0FMSUFTOiBUaGlzIHJlbGVhc2VzIHRoZSByZXNlcnZlZCBzcGFjZSBv ZiBhCj4gPiAgIHByZXZpb3VzbHkgcmVzZXJ2ZWQgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IHRy dW5jYXRlcyB0aGUgYmxvY2tzCj4gPiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwgd2hpY2gg bWFrZXMgdGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+ICAgZmlsZXN5c3RlbSBhbGxvY2F0 aW9uIGFnYWluLgo+ID4KPiA+IC0gRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6IFRoaXMg cmV0cmlldmVzIHRoZSBjdXJyZW50IGFsaWFzaW5nCj4gPiAgIHN0YXR1cyBvZiBhIGRldmljZSBh bGlhc2luZyBmaWxlLCByZXR1cm5pbmcgd2hldGhlciB0aGUgZmlsZSBpcwo+ID4gICByZWxlYXNl ZCAoaW5hY3RpdmUgYWxpYXMpIG9yIHJlc2VydmVkIChhY3RpdmUgYWxpYXMsIHdpdGggYmxvY2tz Cj4gPiAgIGZ1bGx5IGFsbG9jYXRlZCBvbiB0aGUgZGV2aWNlKS4KPiA+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4gLS0tCj4gPiB2NTog cHJldmVudGVkIG5ldyBzZWdtZW50IGFsbG9jYXRpb24gb24gZGV2aWNlcyB1bmRlcmdvaW5nIHJl c2VydmF0aW9uCj4gPiAgICAgb3Igd2l0aCBhY3RpdmUgYWxpYXNlcy4KPiA+ICAgICB1c2VkIGlu LW1lbW9yeSBzdHJ1Y3QgdG8gcmVzZXJ2ZSBibG9ja3MgZm9yIGRldmljZSBhbGlhc2luZy4KPiA+ ICAgICBjbGVhcmVkIHByZWZyZWUgKFBSRSkgZGlydHkgc2VnbWVudCBiaXRtYXAuCj4gPiB2NDog cmVuYW1lZCBpbnRlcmZhY2VzLgo+ID4gICAgIGZpeGVkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVu IGNoZWNrcG9pbnQ9ZGlzYWJsZSBtb3VudCBhbmQgaW9jdGxzLgo+ID4gICAgIHJlZmFjdG9yZWQg c2VnbWVudCByZXNlcnZhdGlvbiBwYXJ0Lgo+ID4gICAgIG1vZGlmaWVkIGxvY2sgdXNhZ2UuCj4g PiB2MzogYWRkIENBUF9TWVNfQURNSU4gYW5kIGNoZWNrcG9pbnQ9ZGlzYWJsZWQgY2hlY2suCj4g PiAgICAgcmVtb3ZlIGEgZjJmcyBzcGVjaWZpYyBmbGFnIGV4cG9zZWQgd2l0aCBnZXRmbGFncy4K PiA+IHYyOiBwcmV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJsZWQuCj4g PiAtLS0KPiA+IC0tLQo+ID4gIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QgfCAg MzUgKysrKwo+ID4gIGZzL2YyZnMvZjJmcy5oICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0K PiA+ICBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgIHwgMjc4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKystCj4gPiAgZnMvZjJmcy9nYy5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzMCArKy0tCj4gPiAgZnMvZjJmcy9uYW1laS5jICAgICAgICAgICAgICAgICAgICB8ICAx NCArKwo+ID4gIGZzL2YyZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgfCAxNzQgKysrKysr KysrKysrKy0tLS0tCj4gPiAgZnMvZjJmcy9zZWdtZW50LmggICAgICAgICAgICAgICAgICB8ICAy MiArKysKPiA+ICBmcy9mMmZzL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKysK PiA+ICBpbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oICAgICAgICAgIHwgICA3ICsKPiA+ICA5IGZp bGVzIGNoYW5nZWQsIDU0MiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCBiL0RvY3VtZW50 YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3QKPiA+IGluZGV4IDhjNGExNGFlNDQ0Zi4uMWE1ZmQ0 YWZlNjA5IDEwMDY0NAo+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJz dAo+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gQEAgLTEw NDUsNiArMTA0NSw0MSBAQCBTbywgdGhlIGtleSBpZGVhIGlzLCB1c2VyIGNhbiBkbyBhbnkgZmls ZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRjLCBhbmQKPiA+ICByZWNsYWltIHRoZSBzcGFjZSBhZnRl ciB0aGUgdXNlLCB3aGlsZSB0aGUgc3BhY2UgaXMgY291bnRlZCBhcyAvZGF0YS4KPiA+ICBUaGF0 IGRvZXNuJ3QgcmVxdWlyZSBtb2RpZnlpbmcgcGFydGl0aW9uIHNpemUgYW5kIGZpbGVzeXN0ZW0g Zm9ybWF0Lgo+ID4KPiA+ICtEeW5hbWljIERldmljZSBBbGlhc2luZyBNYW5hZ2VtZW50Cj4gPiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gKwo+ID4gK0luIGFkZGl0aW9u IHRvIHN0YXRpYyBkZXZpY2UgYWxpYXNpbmcgYnkgZGVsZXRpbmcgdGhlIGFsaWFzaW5nIGZpbGUs IEYyRlMKPiA+ICtzdXBwb3J0cyBkeW5hbWljIG1hbmFnZW1lbnQgb2YgZGV2aWNlIGFsaWFzaW5n LiBUaGlzIG1lY2hhbmlzbSBhbGxvd3MgdGhlIHN5c3RlbQo+ID4gK3RvIGR5bmFtaWNhbGx5IHRy YW5zaXRpb24gcGFydGl0aW9uIG93bmVyc2hpcCBiZXR3ZWVuIEYyRlMgdXNlcmRhdGEgYW5kIGV4 dGVybmFsCj4gPiArZW50aXRpZXMgKGUuZy4sIHpSQU0sIHJhdyBwYXJ0aXRpb24pIGJhc2VkIG9u IHN5c3RlbSByZXF1aXJlbWVudHMgd2l0aG91dAo+ID4gK2RlbGV0aW5nIHRoZSBtYXN0ZXIgYWxp YXNpbmcgZmlsZSBvciByZXF1aXJpbmcgdW5tb3VudC9yZW1vdW50Lgo+ID4gKwo+ID4gK1RoZSBt YXN0ZXIgYWxpYXNpbmcgZmlsZSBpcyBjcmVhdGVkIGR1cmluZyB0aGUgaW5pdGlhbCBmb3JtYXQg b2YgdGhlIGZpbGUgc3lzdGVtCj4gPiArYW5kIHJlbWFpbnMgYXMgYSBwZXJzaXN0ZW50IGNvbnRy b2wgZW50aXR5IChpb2N0bCBnYXRld2F5KSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuCj4gPiArCj4g PiArLSBQYXJ0aXRpb24gUmVzZXJ2YXRpb24gKEluLXNlcnZpY2UgdG8gQWxpYXNlZCkKPiA+ICsg IFdoZW4gYSBzcGVjaWZpYyBwYXJ0aXRpb24gbmVlZHMgdG8gYmUgZGVkaWNhdGVkIHRvIGV4dGVy bmFsIHNlcnZpY2VzIChlLmcuLCB6UkFNKSwKPiA+ICsgIGEgdXNlciBjYW4gcmVzZXJ2ZSB0aGUg ZGV2aWNlIGFsaWFzIHJhbmdlIHZpYSBpb2N0bC4gVGhlIGtlcm5lbCByZXNldHMgR0MgdmljdGlt Cj4gPiArICBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3Mgc2VnbWVudHMg YXMgaW4tdXNlIHRvIHByZXZlbnQgbmV3Cj4gPiArICBhbGxvY2F0aW9ucywgYW5kIHRyaWdnZXJz IGZvcmNlZCBHQyB0byBtaWdyYXRlIGV4aXN0aW5nIHZhbGlkIGRhdGEgb3V0IG9mIHRoZQo+ID4g KyAgcmFuZ2UuIEZpbmFsbHksIGl0IHJlc2VydmVzIHRoZXNlIGJsb2NrcyBpbiB0aGUgU0lUIHRv IGVmZmVjdGl2ZWx5IGV4Y2x1ZGUgdGhlCj4gPiArICBkZXZpY2UgZnJvbSB0aGUgdXNhYmxlIGNh cGFjaXR5Lgo+ID4gKwo+ID4gKy0gUGFydGl0aW9uIFJlbGVhc2UgKEFsaWFzZWQgdG8gSW4tc2Vy dmljZSkKPiA+ICsgIFdoZW4gZXh0ZXJuYWwgdXNhZ2UgY29uY2x1ZGVzLCB0aGUgc3BhY2UgaXMg cmVjbGFpbWVkIG5vdCBieSBkZWxldGluZyB0aGUgZmlsZSwKPiA+ICsgIGJ1dCB0aHJvdWdoIHRo ZSByZWxlYXNlIGlvY3RsLiBUaGUga2VybmVsIHRydW5jYXRlcyBibG9ja3MgYXNzb2NpYXRlZCB3 aXRoCj4gPiArICB0aGUgZmlsZSwgcmVsZWFzaW5nIHRoZW0gYmFjayB0byBnZW5lcmFsIGZpbGVz eXN0ZW0gYWxsb2NhdGlvbi4KPiA+ICsKPiA+ICsuLiBjb2RlLWJsb2NrOjoKPiA+ICsKPiA+ICsg ICAjIGYyZnNfaW8gZGV2X2FsaWFzIHJlbGVhc2UgL21udC9mMmZzL3ZkYy5maWxlCj4gPiArICAg IyBkZiAtaAo+ID4gKyAgIC9kZXYvdmRiICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0RyAg NzUzTSAgIDY0RyAgIDIlIC9tbnQvZjJmcwo+ID4gKwo+ID4gKyAgICMgZjJmc19pbyBkZXZfYWxp YXMgcmVzZXJ2ZSAvbW50L2YyZnMvdmRjLmZpbGUKPiA+ICsgICAjIGRmIC1oCj4gPiArICAgL2Rl di92ZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICAgMzNHICAgMzJHICA1MiUgL21u dC9mMmZzCj4gPiArCj4gPiAgUGVyLWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQK PiA+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4KPiA+IGRpZmYg LS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gPiBpbmRleCBmMTc3NGQ0 ZTE4ZDIuLjc0YzJkNThjZTI3MSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPiAr KysgYi9mcy9mMmZzL2YyZnMuaAo+ID4gQEAgLTE0MDQsNiArMTQwNCw4IEBAIHN0cnVjdCBmMmZz X2Rldl9pbmZvIHsKPiA+ICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9zZWdtZW50czsKPiA+ICAg ICAgIGJsb2NrX3Qgc3RhcnRfYmxrOwo+ID4gICAgICAgYmxvY2tfdCBlbmRfYmxrOwo+ID4gKyAg ICAgYm9vbCBoYXNfYWxpYXM7Cj4gPiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPiA+ICAjaWZk ZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+ICAgICAgIHVuc2lnbmVkIGludCBucl9ibGt6OyAg ICAgICAgICAgLyogVG90YWwgbnVtYmVyIG9mIHpvbmVzICovCj4gPiAgICAgICB1bnNpZ25lZCBs b25nICpibGt6X3NlcTsgICAgICAgIC8qIEJpdG1hcCBpbmRpY2F0aW5nIHNlcXVlbnRpYWwgem9u ZXMgKi8KPiA+IEBAIC0xODU3LDYgKzE4NTksNyBAQCBzdHJ1Y3QgZjJmc19zYl9pbmZvIHsKPiA+ ICAgICAgIGJsb2NrX3QgbGFzdF92YWxpZF9ibG9ja19jb3VudDsgICAgICAgICAvKiBmb3IgcmVj b3ZlcnkgKi8KPiA+ICAgICAgIGJsb2NrX3QgcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAgICAg ICAvKiBjb25maWd1cmFibGUgcmVzZXJ2ZWQgYmxvY2tzICovCj4gPiAgICAgICBibG9ja190IGN1 cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgLyogY3VycmVudCByZXNlcnZlZCBibG9ja3Mg Ki8KPiA+ICsgICAgIGJsb2NrX3QgYWxpYXNfcmVzZXJ2ZWRfYmxvY2tzOyAgICAgICAgICAvKiBy ZXNlcnZlZCBibG9ja3MgZm9yIGRldmljZSBhbGlhcyAqLwo+ID4KPiA+ICAgICAgIC8qIEFkZGl0 aW9uYWwgdHJhY2tpbmcgZm9yIG5vIGNoZWNrcG9pbnQgbW9kZSAqLwo+ID4gICAgICAgYmxvY2tf dCB1bnVzYWJsZV9ibG9ja19jb3VudDsgICAgICAgICAgIC8qICMgb2YgYmxvY2tzIHNhdmVkIGJ5 IGxhc3QgY3AgKi8KPiA+IEBAIC0yNTU5LDcgKzI1NjIsOCBAQCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGludCBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPiA+ICAgICAgIGJsb2NrX3QgYXZhaWxfdXNlcl9ibG9ja19jb3VudDsKPiA+Cj4gPiAgICAg ICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50ID0gc2JpLT51c2VyX2Jsb2NrX2NvdW50IC0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVk X2Jsb2NrczsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5j dXJyZW50X3Jlc2VydmVkX2Jsb2NrcyAtCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4KPiA+ICAgICAgIGlmICh0 ZXN0X29wdChzYmksIFJFU0VSVkVfUk9PVCkgJiYgIV9fYWxsb3dfcmVzZXJ2ZWRfcm9vdChzYmks IGlub2RlLCBjYXApKQo+ID4gICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50IC09 IEYyRlNfT1BUSU9OKHNiaSkucm9vdF9yZXNlcnZlZF9ibG9ja3M7Cj4gPiBAQCAtNDAxMCw2ICs0 MDE0LDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSk7Cj4gPiAgdm9pZCBmMmZzX2Rlc3Ryb3lfZmx1c2hfY21kX2NvbnRyb2woc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCBib29sIGZyZWUpOwo+ID4gIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Js b2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsK PiA+ICt2b2lkIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBibG9ja190IGFkZHIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbik7Cj4gPiAgYm9vbCBmMmZzX2lzX2NoZWNrcG9p bnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsKPiA+ ICBpbnQgZjJmc19zdGFydF9kaXNjYXJkX3RocmVhZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkp Owo+ID4gIHZvaWQgZjJmc19kcm9wX2Rpc2NhcmRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSk7Cj4gPiBAQCAtNDIzMSw2ICs0MjM3LDggQEAgdm9pZCBmMmZzX2J1aWxkX2djX21hbmFnZXIo c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPiA+ICBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9z ZWcsIHVuc2lnbmVkIGludCBlbmRfc2VnLAo+ID4gICAgICAgICAgICAgICBib29sIGRyeV9ydW4s IHVuc2lnbmVkIGludCBkcnlfcnVuX3NlY3Rpb25zKTsKPiA+ICt2b2lkIGYyZnNfcmVzZXRfZ2Nf dmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+ICBpbnQgZjJmc19y ZXNpemVfZnMoc3RydWN0IGZpbGUgKmZpbHAsIF9fdTY0IGJsb2NrX2NvdW50KTsKPiA+ICBpbnQg X19pbml0IGYyZnNfY3JlYXRlX2dhcmJhZ2VfY29sbGVjdGlvbl9jYWNoZSh2b2lkKTsKPiA+ICB2 b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9pZCk7Cj4gPiBkaWZm IC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+ID4gaW5kZXggNGI1MmM1 NmQ3MWYwLi42NDJmMDZmMmZhZWEgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2ZpbGUuYwo+ID4g KysrIGIvZnMvZjJmcy9maWxlLmMKPiA+IEBAIC04MTMsMTMgKzgxMywxOSBAQCBpbnQgZjJmc19k b190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyb20sIGJvb2wgbG9j aykKPiA+Cj4gPiAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+ID4gICAg ICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2RlKS0+ZXh0ZW50 X3RyZWVbRVhfUkVBRF07Cj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaSA9 IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWk7Cj4g PiArCj4gPiArICAgICAgICAgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4gKyAgICAgICAg ICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICByZWFkX3VubG9jaygmZXQt PmxvY2spOwo+ID4KPiA+ICAgICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzYmks IGVpLmJsaywgZWkubGVuKTsKPiA+Cj4gPiAgICAgICAgICAgICAgIGRlY192YWxpZF9ibG9ja19j b3VudChzYmksIGlub2RlLCBlaS5sZW4pOwo+ID4gICAgICAgICAgICAgICBmMmZzX3VwZGF0ZV90 aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgZjJmc19kcm9wX2V4dGVu dF90cmVlKGlub2RlKTsKPiA+ICsKPiA+ICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoaWZv bGlvLCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAgICB9Cj4gPiBA QCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICpp ZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4gICAgICAgaWYgKChhdHRyLT5pYV92YWxp ZCAmIEFUVFJfU0laRSkpIHsKPiA+ICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdfbGFyZ2VfZm9s aW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5nKSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGlmICghZjJmc19pc19jb21wcmVz c19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgaWYgKElTX0RF VklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F UEVSTTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVh ZHkoaW5vZGUpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK PiA+ICAgICAgICAgICAgICAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBGSV9DT01QUkVT U19SRUxFQVNFRCkgJiYKPiA+ICAgICAgICAgICAgICAgICAgICAgICAhSVNfQUxJR05FRChhdHRy LT5pYV9zaXplLAo+ID4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQgZjJmc19zZXRm bGFnc19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMyIG1hc2spCj4g PiAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAt RVBFUk07Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiAr ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAoKGlmbGFncyBe IG1hc2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4gPiAgICAgICAgICAgICAgIGlm ICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gQEAgLTI2NzgsNiArMjY4OCwxNyBA QCBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3BvbGljeShzdHJ1Y3QgZmlsZSAq ZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICByZXR1cm4gZnNjcnlwdF9pb2N0bF9n ZXRfcG9saWN5KGZpbHAsICh2b2lkIF9fdXNlciAqKWFyZyk7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0 aWMgaW50IGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfc3RhdHVzKHN0cnVjdCBmaWxlICpmaWxwLCB1 bnNpZ25lZCBsb25nIGFyZykKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0g ZmlsZV9pbm9kZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIGlmICghSVNfREVWSUNFX0FMSUFTSU5H KGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAg ICByZXR1cm4gcHV0X3VzZXIoRjJGU19IQVNfQkxPQ0tTKGlub2RlKSA/IEYyRlNfREVWX0FMSUFT X1NUQVRVU19SRVNFUlZFRCA6Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGMkZT X0RFVl9BTElBU19TVEFUVVNfUkVMRUFTRUQsICh1MzIgX191c2VyICopYXJnKTsKPiA+ICt9Cj4g PiArCj4gPiAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZW5jcnlwdGlvbl9wd3NhbHQoc3RydWN0 IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gIHsKPiA+ICAgICAgIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+ID4gQEAgLTM2MTYsNiArMzYzNywyNDgg QEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3RydWN0IGZpbGUgKmZp bHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gICAgICAgICAgICAgICAgICAgICAgICh1MzIgX191 c2VyICopYXJnKTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyBib29sIGYyZnNfZ2V0X2Rldl9hbGlh c19leHRlbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gKmVpKQo+ID4gK3sK PiA+ICsgICAgIGludCBpOwo+ID4gKwo+ID4gKyAgICAgZm9yIChpID0gMTsgaSA8IHNiaS0+c19u ZGV2czsgaSsrKSB7Cj4gPiArICAgICAgICAgICAgIGNoYXIgKm5hbWUgPSBzdHJyY2hyKEZERVYo aSkucGF0aCwgJy8nKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgbmFtZSA9IG5hbWUgPyBuYW1l ICsgMSA6IEZERVYoaSkucGF0aDsKPiA+ICsgICAgICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwg ZGVudHJ5LT5kX25hbWUubmFtZSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBlaS0+Ymxr ID0gRkRFVihpKS5zdGFydF9ibGs7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZWktPmxlbiA9 IEZERVYoaSkudG90YWxfc2VnbWVudHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwo+ID4gKyAgICAgICAgICAgICB9Cj4KPiBUcml2aWFsIGNsZWFudXAg dG8gYXZvaWQgbG9uZyBsaW5lOgo+Cj4gICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwg ZGVudHJ5LT5kX25hbWUubmFtZSkpCj4gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4KPiAgICAgICAgICAgICAgICAgZWktPmJsayA9IEZERVYoaSkuc3RhcnRfYmxrOwo+ICAgICAg ICAgICAgICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9zZWdtZW50cyA8PCBzYmktPmxvZ19i bG9ja3NfcGVyX3NlZzsKPiAgICAgICAgICAgICAgICAgZWktPmZvZnMgPSAwOwo+ICAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKPgo+ID4gKyAgICAgfQo+ID4gKyAgICAgcmV0dXJuIGZhbHNl Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFz KHN0cnVjdCBmaWxlICpmaWxwKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUg PSBmaWxlX2lub2RlKGZpbHApOwo+ID4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpID0g RjJGU19JX1NCKGlub2RlKTsKPiA+ICsgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAqZXQgPSBGMkZT X0koaW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPiA+ICsgICAgIHN0cnVjdCBleHRlbnRf aW5mbyBlaTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywgMCwg MCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4gPiAr ICAgICBibGtjbnRfdCBjb3VudDsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBzdGFydCwgZW5kOwo+ ID4gKyAgICAgaW50IHR5cGUsIGVycjsKPiA+ICsKPiA+ICsgICAgIGlmICghY2FwYWJsZShDQVBf U1lTX0FETUlOKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICsg ICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkK PiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBlcnIgPSBt bnRfd2FudF93cml0ZV9maWxlKGZpbHApOwo+ID4gKyAgICAgaWYgKGVycikKPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICsgICAgIGlub2RlX2xvY2soaW5vZGUpOwo+ID4g Kwo+ID4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4gPiArICAgICAg ICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3Vu bG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGlmIChGMkZTX0hBU19CTE9DS1MoaW5v ZGUpKSB7Cj4gPiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8g b3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGlmICghZjJmc19n ZXRfZGV2X2FsaWFzX2V4dGVudChzYmksIGZpbHAtPmZfcGF0aC5kZW50cnksICZlaSkpIHsKPiA+ ICsgICAgICAgICAgICAgZjJmc193YXJuKHNiaSwgImRldmljZSBhbGlhcyBmaWxlICglcywgaW5v PSVsbHUpIGhhcyBubyBtYXRjaGluZyBkZXZpY2UiLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZmlscC0+Zl9wYXRoLmRlbnRyeS0+ZF9uYW1lLm5hbWUsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWlub2RlLT5pX2lubyk7Cj4gPiArICAgICAgICAg ICAgIHNldF9zYmlfZmxhZyhzYmksIFNCSV9ORUVEX0ZTQ0spOwo+ID4gKyAgICAgICAgICAgICBm MmZzX2hhbmRsZV9lcnJvcihzYmksIEVSUk9SX0NPUlJVUFRFRF9JTk9ERSk7Cj4gPiArICAgICAg ICAgICAgIGVyciA9IC1FRlNDT1JSVVBURUQ7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmc2JpLT5z dGF0X2xvY2spOwo+ID4gKyAgICAgaWYgKHNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQgKyBl aS5sZW4gPgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdldF9hdmFpbGFibGVfYmxvY2tfY291 bnQoc2JpLCBpbm9kZSwgdHJ1ZSkpIHsKPiA+ICsgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnNi aS0+c3RhdF9sb2NrKTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVOT1NQQzsKPiA+ICsgICAg ICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKyAgICAgc2Jp LT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgKz0gZWkubGVuOwo+ID4gKyAgICAgc3Bpbl91bmxvY2so JnNiaS0+c3RhdF9sb2NrKTsKPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSkt PnNlZ21hcF9sb2NrKTsKPiA+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNi aSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gdHJ1ZTsKPiA+ICsgICAgIHNwaW5fdW5sb2NrKCZG UkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3RhcnQgPSBHRVRfU0VH Tk8oc2JpLCBlaS5ibGspOwo+ID4gKyAgICAgZW5kID0gR0VUX1NFR05PKHNiaSwgZWkuYmxrICsg ZWkubGVuIC0gMSk7Cj4gPiArCj4gPiArICAgICAvKiBBY3F1aXJlIGdjX2xvY2sgZm9yIHZpY3Rp bSByZXNldCwgY3Vyc2VnIHJlc2l6ZSwgYW5kIHJhbmdlIEdDICovCj4gPiArICAgICBmMmZzX2Rv d25fd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArCj4gPiArICAgICAvKiBS ZXNldCB0aGUgdmljdGltIGluZm9ybWF0aW9uIHRvIHByZXZlbnQgR0MgZnJvbSB0YXJnZXRpbmcg dGhlIHJhbmdlICovCj4gPiArICAgICBmMmZzX3Jlc2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmks IHN0YXJ0LCBlbmQpOwo+ID4gKwo+ID4gKyAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRo ZSB0YXJnZXQgcmFuZ2UgKi8KPiA+ICsgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsg dHlwZSA8IE5SX0NVUlNFR19QRVJTSVNUX1RZUEU7IHR5cGUrKykgewo+ID4gKyAgICAgICAgICAg ICBlcnIgPSBmMmZzX2FsbG9jYXRlX3NlZ21lbnRfZm9yX3Jlc2l6ZShzYmksIHR5cGUsIHN0YXJ0 LCBlbmQpOwo+ID4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGYyZnNf bG9ja19vcChzYmksICZsYyk7Cj4gPiArCj4gPiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2Zs YWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJyID0g LUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4g KyAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAr ICAgICAvKiBkbyBHQyB0byBtb3ZlIG91dCB2YWxpZCBibG9ja3MgaW4gdGhlIHJhbmdlIGFsbCBh dCBvbmNlISAqLwo+ID4gKyAgICAgZXJyID0gZjJmc19nY19yYW5nZShzYmksIHN0YXJ0LCBlbmQs IGZhbHNlLCAwKTsKPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgZjJmc191 bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9nY191bmxvY2s7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBjb3VudCA9IGVpLmxlbjsKPiA+ICsgICAgIGVy ciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGlub2RlLCAmY291bnQsIGZhbHNlKTsKPgo+ IEhtbS4uIHNlZW1zIGlmIGRldmljZSBhbGlhcyBmaWxlIGlzIDRHQiwgd2UgaGF2ZSByZXNlcnZl ZCA0R0IgYnkgc2V0Cj4gYWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIHRvIDRHQiwgaGVyZSB3ZSB3YW50 IHRvIGFsbG9jYXRlIGFub3RoZXIgNEdCPwo+IEl0IHdpbGwgZmFpbCBpZiB0aGUgbGVmdCBzcGFj ZSBpcyBsZXNzIHRoYW4gNEdCLCBzZWVtcyBub3QgbWFrZSBzZW5zZS4KPgo+IE1heWJlIHdlIGNh biBhZGQgYW5vdGhlciBwYXJhbWV0ZXIgdG8gbGV0IGluY192YWxpZF9ibG9ja19jb3VudCB0byAx KQo+IGluY3JlYXNlIHRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50IGFuZCAyKSBkZWNyZWFzZSBhbGlh c19yZXNlcnZlZF9ibG9ja3MKPiBhdG9taWNhbGx5IHVuZGVyIHByb3RldGlvbiBvZiBzdGF0X2xv Y2s/IFRob3VnaHRzPwo+Cj4KPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAg ZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9nY191 bmxvY2s7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9s b2NrKTsKPiA+ICsgICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09IGVpLmxlbjsKPiA+ ICsgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArCj4gPiArICAgICBpZiAo ZXQpIHsKPgo+IEFueSBjYXNlIHRoYXQgZXQgaXMgTlVMTD8KPgo+ID4gKyAgICAgICAgICAgICB3 cml0ZV9sb2NrKCZldC0+bG9jayk7Cj4gPiArICAgICAgICAgICAgIGV0LT5sYXJnZXN0ID0gZWk7 Cj4gPiArICAgICAgICAgICAgIHdyaXRlX3VubG9jaygmZXQtPmxvY2spOwo+ID4gKyAgICAgfQo+ ID4gKyAgICAgY2xlYXJfaW5vZGVfZmxhZyhpbm9kZSwgRklfTk9fRVhURU5UKTsKPiA+ICsKPiA+ ICsgICAgIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxpYXMoc2JpLCBlaS5ibGssIGVpLmxlbik7Cj4g PiArCj4gPiArICAgICBpX3NpemVfd3JpdGUoaW5vZGUsIChsb2ZmX3QpZWkubGVuIDw8IFBBR0Vf U0hJRlQpOwo+Cj4gPDwgc2JpLT5ibG9ja3NpemU/IGluIGNhc2UgcGFnZV9zaXplIGlzIG5vdCBl cXVhbHMgdG8gYmxvY2tzaXplLgo+Cj4gPiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlu b2RlKTsKPiA+ICsKPiA+ICsgICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2Nr KTsKPiA+ICsgICAgIEZERVYoZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSku aXNfcmVzZXJ2aW5nID0gZmFsc2U7Cj4gPiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSkt PnNlZ21hcF9sb2NrKTsKPiA+ICsKPiA+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsK PiA+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiAr Cj4gPiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4gKyAgICAgbW50X2Ryb3Bfd3JpdGVf ZmlsZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIGVyciA9IGYyZnNfd3JpdGVfY2hlY2twb2ludChz YmksICZjcGMpOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICtvdXRfZ2NfdW5sb2Nr Ogo+ID4gKyAgICAgc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArICAgICBzYmktPmFs aWFzX3Jlc2VydmVkX2Jsb2NrcyAtPSBlaS5sZW47Cj4gPiArICAgICBzcGluX3VubG9jaygmc2Jp LT5zdGF0X2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3Bpbl9sb2NrKCZGUkVFX0koc2JpKS0+c2Vn bWFwX2xvY2spOwo+ID4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBl aS5ibGspKS5pc19yZXNlcnZpbmcgPSBmYWxzZTsKPiA+ICsgICAgIHNwaW5fdW5sb2NrKCZGUkVF X0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKyAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2Jp LT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsKPgo+IG91dF9pbm9kZV91bmxvY2s6Cj4KPiA+ICsgICAg IGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHAp Owo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICsKPiA+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4g KyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUo ZmlscCk7Cj4gPiArICAgICByZXR1cm4gZXJyOwo+Cj4gQ2FuIGJlIHJlbW92ZWQuCj4KPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIGludCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhzdHJ1Y3Qg ZmlsZSAqZmlscCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9p bm9kZShmaWxwKTsKPiA+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNfSV9T Qihpbm9kZSk7Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2Rl KS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8gZWkg PSB7MCwgfTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywgMCwg MCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4gPiAr ICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURNSU4p KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gKyAgICAgaWYgKHVu bGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIGVyciA9IG1udF93YW50X3dy aXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICByZXR1 cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPiArCj4gPiArICAg ICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJy ID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4g KyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKCFGMkZTX0hBU19CTE9DS1MoaW5vZGUpKSB7Cj4g PiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2Rl X3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGVyciA9IGZpbGVtYXBfd3JpdGVf YW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAg ICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArCj4gPiArICAgICByZWFkX2xvY2so JmV0LT5sb2NrKTsKPiA+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4gPiArICAgICByZWFkX3Vu bG9jaygmZXQtPmxvY2spOwo+Cj4gRG8gd2UgbmVlZCB0byBkbyBzYW5pdHkgY2hlY2sgb24gd2hl dGhlciBzdGFydC9lbmQgb2YgZGV2aWNlIGFsaWFzIGZpbGUKPiBhcmUgYWxpZ25lZCB0byBzZWN0 aW9uLXNpemU/IG1heSBiZSBpbiBzYW5pdHlfY2hlY2tfZXh0ZW50X2NhY2hlKCk/CgpUaGFua3Mg Zm9yIGFsbCB0aGUgY29tbWVudHMuIEkgYWNjZXB0ZWQgYWxsIG90aGVyIGNvbW1lbnRzLgoKSW4g c2FuaXR5X2NoZWNrX2V4dGVudF9jYWNoZSgpLCB3ZSBhbHJlYWR5IHZlcmlmeSB0aGF0IHRoZSBl eHRlbnQKcmFuZ2Ugb2YgYSBkZXZpY2UgYWxpYXMgaW5vZGUgKGVpLmJsayBhbmQgZWkubGVuKSBt YXRjaGVzIHRoZSBleGFjdApzdGFydCBhbmQgZW5kIGJsb2NrIG9mIGEgc2Vjb25kYXJ5IGRldmlj ZSAoRkRFVihkZXZpKS5zdGFydF9ibGsgYW5kCkZERVYoZGV2aSkuZW5kX2Jsayk6ClNpbmNlIGV2 ZXJ5IHNlY29uZGFyeSBibG9jayBkZXZpY2UgaW4gRjJGUyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQg dG8gYmUKYWxpZ25lZCB0byBzZWN0aW9uIGJvdW5kYXJpZXMsIG1hdGNoaW5nIHRoZSBleHRlbnQg YWdhaW5zdCBGREVWKGRldmkpCmluaGVyZW50bHkgZ3VhcmFudGVlcyBzZWN0aW9uIGFsaWdubWVu dCBmb3IgdGhlIGRldmljZSBhbGlhcyBmaWxlIGFzCndlbGwuCgpUaGVyZWZvcmUsIGFkZGluZyBh biBleHBsaWNpdCBzZWN0aW9uIGFsaWdubWVudCBjaGVjayBpbgpzYW5pdHlfY2hlY2tfZXh0ZW50 X2NhY2hlKCkgc2VlbXMgcmVkdW5kYW50LgoKPgo+ID4gKwo+ID4gKyAgICAgZjJmc19kb3duX3dy aXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgZjJmc19sb2NrX29wKHNi aSwgJmxjKTsKPiA+ICsKPiA+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2Jp LCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ ID4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAg ICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAg ICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAg IHRydW5jYXRlX3NldHNpemUoaW5vZGUsIDApOwo+ID4gKwo+Cj4gVG8gYXZvaWQgcmFjaW5nIHcv IG1tYXA/Cj4KPiBmaWxlbWFwX2ludmFsaWRhdGVfbG9jayhpbm9kZS0+aV9tYXBwaW5nKTsKPgo+ ID4gKyAgICAgZXJyID0gZjJmc190cnVuY2F0ZV9ibG9ja3MoaW5vZGUsIDAsIGZhbHNlKTsKPgo+ IGZpbGVtYXBfaW52YWxpZGF0ZV91bmxvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4KPiA+ICsgICAg IGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90 KWVpLmxlbiA8PCBQQUdFX1NISUZUKTsKPgo+IDw8IHNiaS0+YmxvY2tzaXplPyBpbiBjYXNlIHBh Z2Vfc2l6ZSBpcyBub3QgZXF1YWxzIHRvIGJsb2Nrc2l6ZS4KPgo+ID4gKyAgICAgICAgICAgICBm MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGYyZnNfdXBfd3JpdGVf dHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGYyZnNfdXBkYXRlX2lub2Rl X3BhZ2UoaW5vZGUpOwo+ID4gKwo+ID4gKyAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+ ID4gKyAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsK PiA+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9m aWxlKGZpbHApOwo+ID4gKwo+ID4gKyAgICAgZXJyID0gZjJmc193cml0ZV9jaGVja3BvaW50KHNi aSwgJmNwYyk7Cj4KPiByZXR1cm4gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwgJmNwYyk7Cj4K PiA+ICsgICAgIHJldHVybiBlcnI7Cj4gPiArCj4gPiArb3V0X2lub2RlX3VubG9jazoKPiA+ICsg ICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiArICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZp bHApOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCBm MmZzX2lvY19pb19wcmlvKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ ICB7Cj4gPiAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+ IEBAIC00NzQyLDggKzUwMDUsMTQgQEAgc3RhdGljIGxvbmcgX19mMmZzX2lvY3RsKHN0cnVjdCBm aWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ICAgICAg ICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX2NvbXByZXNzX2ZpbGUoZmlscCk7Cj4gPiAgICAgICBj YXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRToKPiA+ICAgICAgICAgICAgICAgcmV0dXJu IGYyZnNfaW9jX2dldF9kZXZfYWxpYXNfZmlsZShmaWxwLCBhcmcpOwo+ID4gKyAgICAgY2FzZSBG MkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzoKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGYy ZnNfaW9jX2dldF9kZXZfYWxpYXNfc3RhdHVzKGZpbHAsIGFyZyk7Cj4gPiAgICAgICBjYXNlIEYy RlNfSU9DX0lPX1BSSU86Cj4gPiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19pb19wcmlv KGZpbHAsIGFyZyk7Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFU0VSVkVfREVWX0FMSUFTOgo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfcmVzZXJ2ZV9kZXZfYWxpYXMoZmlscCk7 Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTOgo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gZjJmc19pb2NfcmVsZWFzZV9kZXZfYWxpYXMoZmlscCk7Cj4gPiAgICAgICBk ZWZhdWx0Ogo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT1RUWTsKPiA+ICAgICAgIH0KPiA+ IEBAIC01NTMwLDcgKzU3OTksMTAgQEAgbG9uZyBmMmZzX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmls ZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICBj YXNlIEYyRlNfSU9DX0RFQ09NUFJFU1NfRklMRToKPiA+ICAgICAgIGNhc2UgRjJGU19JT0NfQ09N UFJFU1NfRklMRToKPiA+ICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19GSUxFOgo+ ID4gKyAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzoKPiA+ICAgICAgIGNh c2UgRjJGU19JT0NfSU9fUFJJTzoKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZf QUxJQVM6Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX1JFTEVBU0VfREVWX0FMSUFTOgo+ID4gICAg ICAgICAgICAgICBicmVhazsKPiA+ICAgICAgIGRlZmF1bHQ6Cj4gPiAgICAgICAgICAgICAgIHJl dHVybiAtRU5PSU9DVExDTUQ7Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIvZnMvZjJm cy9nYy5jCj4gPiBpbmRleCBmZmFhN2JhNzZhMWIuLjkzYmNiMzVhNWI1ZCAxMDA2NDQKPiA+IC0t LSBhL2ZzL2YyZnMvZ2MuYwo+ID4gKysrIGIvZnMvZjJmcy9nYy5jCj4gPiBAQCAtMjE5NywyOSAr MjE5NywzNyBAQCBpbnQgZjJmc19nY19yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4g PiAgICAgICByZXR1cm4gMDsKPiA+ICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0 aW1fcmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCkKPiA+ICt7Cj4gPiAr ICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2Vn bGlzdF9sb2NrKTsKPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9MSUNZOyBpKysp Cj4gPiArICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtpXSA+PSBzdGFy dCAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3RfdmljdGltW2ld IDw9IGVuZCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0X3ZpY3Rp bVtpXSA9IDA7Cj4gPiArCj4gPiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBGR19HQzsgaSsr KQo+ID4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPj0gc3RhcnQg JiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tpXSA8PSBl bmQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0gPSBO VUxMX1NFR05POwo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3Rf bG9jayk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgZnJlZV9zZWdtZW50X3JhbmdlKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBzZWNzLCBib29sIGRyeV9ydW4pCj4gPiAgewo+ID4gICAgICAgdW5zaWdu ZWQgaW50IG5leHRfaW51c2UsIHN0YXJ0LCBlbmQ7Cj4gPiAgICAgICBzdHJ1Y3QgY3BfY29udHJv bCBjcGMgPSB7IENQX1JFU0laRSwgMCwgMCwgMCB9Owo+ID4gLSAgICAgaW50IGdjX21vZGUsIGdj X3R5cGU7Cj4gPiAgICAgICBpbnQgZXJyID0gMDsKPiA+ICAgICAgIGludCB0eXBlOwo+ID4KPiA+ IC0gICAgIC8qIEZvcmNlIGJsb2NrIGFsbG9jYXRpb24gZm9yIEdDICovCj4gPiAgICAgICBNQUlO X1NFQ1Moc2JpKSAtPSBzZWNzOwo+ID4gICAgICAgc3RhcnQgPSBNQUlOX1NFQ1Moc2JpKSAqIFNF R1NfUEVSX1NFQyhzYmkpOwo+ID4gICAgICAgZW5kID0gTUFJTl9TRUdTKHNiaSkgLSAxOwo+ID4K PiA+IC0gICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+IC0g ICAgIGZvciAoZ2NfbW9kZSA9IDA7IGdjX21vZGUgPCBNQVhfR0NfUE9MSUNZOyBnY19tb2RlKysp Cj4gPiAtICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtnY19tb2RlXSA+ PSBzdGFydCkKPiA+IC0gICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5sYXN0X3ZpY3Rp bVtnY19tb2RlXSA9IDA7Cj4gPiAtCj4gPiAtICAgICBmb3IgKGdjX3R5cGUgPSBCR19HQzsgZ2Nf dHlwZSA8PSBGR19HQzsgZ2NfdHlwZSsrKQo+ID4gLSAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0 X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPj0gc3RhcnQpCj4gPiAtICAgICAgICAgICAgICAgICAgICAg c2JpLT5uZXh0X3ZpY3RpbV9zZWdbZ2NfdHlwZV0gPSBOVUxMX1NFR05POwo+ID4gLSAgICAgbXV0 ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPiArICAgICBmMmZzX3Jl c2V0X2djX3ZpY3RpbV9yZXNvdXJjZShzYmksIHN0YXJ0LCBlbmQpOwo+ID4KPiA+ICAgICAgIC8q IE1vdmUgb3V0IGN1cnNlZ3MgZnJvbSB0aGUgdGFyZ2V0IHJhbmdlICovCj4gPiAgICAgICBmb3Ig KHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUgPCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0 eXBlKyspIHsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL25hbWVpLmMgYi9mcy9mMmZzL25hbWVp LmMKPiA+IGluZGV4IGNhYzAzYjhlOTFhMS4uOGMzYjU3OTg3ZjZjIDEwMDY0NAo+ID4gLS0tIGEv ZnMvZjJmcy9uYW1laS5jCj4gPiArKysgYi9mcy9mMmZzL25hbWVpLmMKPiA+IEBAIC00MjUsNiAr NDI1LDkgQEAgc3RhdGljIGludCBmMmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwg c3RydWN0IGlub2RlICpkaXIsCj4gPiAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFk eShzYmkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKPiA+Cj4gPiArICAgICBp ZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F UEVSTTsKPiA+ICsKPiA+ICAgICAgIGVyciA9IGZzY3J5cHRfcHJlcGFyZV9saW5rKG9sZF9kZW50 cnksIGRpciwgZGVudHJ5KTsKPiA+ICAgICAgIGlmIChlcnIpCj4gPiAgICAgICAgICAgICAgIHJl dHVybiBlcnI7Cj4gPiBAQCAtNTY4LDYgKzU3MSw5IEBAIHN0YXRpYyBpbnQgZjJmc191bmxpbmso c3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKPiA+Cj4gPiAgICAgICB0 cmFjZV9mMmZzX3VubGlua19lbnRlcihkaXIsIGRlbnRyeSk7Cj4gPgo+ID4gKyAgICAgaWYgKElT X0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07 Cj4gPiArCj4gPiAgICAgICBpZiAodW5saWtlbHkoZjJmc19jcF9lcnJvcihzYmkpKSkgewo+ID4g ICAgICAgICAgICAgICBlcnIgPSAtRUlPOwo+ID4gICAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ IEBAIC05NDYsNiArOTUyLDkgQEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lk bWFwICppZG1hcCwgc3RydWN0IGlub2RlICpvbGRfZGlyLAo+ID4gICAgICAgYm9vbCBvbGRfaXNf ZGlyID0gU19JU0RJUihvbGRfaW5vZGUtPmlfbW9kZSk7Cj4gPiAgICAgICBpbnQgZXJyOwo+ID4K PiA+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSkKPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlmICh1bmxpa2VseShmMmZzX2Nw X2Vycm9yKHNiaSkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPiA+ICAgICAgIGlm ICghZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4gPiBAQCAtMTAxNiw2ICsxMDI1LDgg QEAgc3RhdGljIGludCBmMmZzX3JlbmFtZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0 IGlub2RlICpvbGRfZGlyLAo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIGlmIChuZXdfaW5vZGUp IHsKPiA+ICsgICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhuZXdfaW5vZGUpKQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPgo+ID4gICAgICAgICAg ICAgICBlcnIgPSAtRU5PVEVNUFRZOwo+ID4gICAgICAgICAgICAgICBpZiAob2xkX2lzX2RpciAm JiAhZjJmc19lbXB0eV9kaXIobmV3X2lub2RlKSkKPiA+IEBAIC0xMTQzLDYgKzExNTQsOSBAQCBz dGF0aWMgaW50IGYyZnNfY3Jvc3NfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0 IGRlbnRyeSAqb2xkX2RlbnRyeSwKPiA+ICAgICAgIGludCBvbGRfbmxpbmsgPSAwLCBuZXdfbmxp bmsgPSAwOwo+ID4gICAgICAgaW50IGVycjsKPiA+Cj4gPiArICAgICBpZiAoSVNfREVWSUNFX0FM SUFTSU5HKG9sZF9pbm9kZSkgfHwgSVNfREVWSUNFX0FMSUFTSU5HKG5ld19pbm9kZSkpCj4gPiAr ICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAodW5saWtlbHko ZjJmc19jcF9lcnJvcihzYmkpKSkKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4gPiAg ICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+ID4gZGlmZiAtLWdpdCBh L2ZzL2YyZnMvc2VnbWVudC5jIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+IGluZGV4IGQ3MWRkYjNl ZTkxOC4uMTIwMmJkZTMzOTBhIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmMKPiA+ ICsrKyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4gPiBAQCAtMjUwMiwzNSArMjUwMiw0MiBAQCBzdGF0 aWMgaW50IHVwZGF0ZV9zaXRfZW50cnlfZm9yX2FsbG9jKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgc3RydWN0IHNlZ19lbnRyeQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgaW50IHNlZ25vLCBibG9ja190IGJsa2FkZHIsIHVuc2lnbmVkIGludCBvZmZzZXQsIGlu dCBkZWwpCj4gPiAgewo+ID4gICAgICAgYm9vbCBleGlzdDsKPiA+ICsgICAgIGludCBkZWxfY291 bnQgPSBkZWw7Cj4gPiArICAgICBpbnQgaTsKPiA+Cj4gPiAtICAgICBleGlzdCA9IGYyZnNfdGVz dF9hbmRfc2V0X2JpdChvZmZzZXQsIHNlLT5jdXJfdmFsaWRfbWFwKTsKPiA+IC0gICAgIGlmICh1 bmxpa2VseShleGlzdCkpIHsKPiA+IC0gICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFw IHdhcyB3cm9uZ2x5IHNldCwgYmxrOiV1IiwgYmxrYWRkcik7Cj4gPiAtICAgICAgICAgICAgIGYy ZnNfYnVnX29uKHNiaSwgMSk7Cj4gPiAtICAgICAgICAgICAgIHNlLT52YWxpZF9ibG9ja3MtLTsK PiA+IC0gICAgICAgICAgICAgZGVsID0gMDsKPiA+IC0gICAgIH0KPiA+ICsgICAgIGYyZnNfYnVn X29uKHNiaSwgR0VUX1NFR05PKHNiaSwgYmxrYWRkcikgIT0gR0VUX1NFR05PKHNiaSwgYmxrYWRk ciArIGRlbF9jb3VudCAtIDEpKTsKPiA+Cj4gPiAtICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rp c2NhcmQoc2JpKSAmJgo+ID4gLSAgICAgICAgICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3Nl dF9iaXQob2Zmc2V0LCBzZS0+ZGlzY2FyZF9tYXApKQo+ID4gLSAgICAgICAgICAgICBzYmktPmRp c2NhcmRfYmxrcy0tOwo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IGRlbF9jb3VudDsgaSsrKSB7 Cj4gPiArICAgICAgICAgICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCAr IGksIHNlLT5jdXJfdmFsaWRfbWFwKTsKPiA+ICsgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGV4 aXN0KSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfZXJyKHNiaSwgIkJpdG1hcCB3 YXMgd3JvbmdseSBzZXQsIGJsazoldSIsIGJsa2FkZHIgKyBpKTsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNl LT52YWxpZF9ibG9ja3MtLTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZWwgLT0gMTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsgICAgICAgICAgICAgfQo+ID4K PiA+IC0gICAgIC8qCj4gPiAtICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJldXNlIGJsb2NrIHdo aWNoIGlzIGNoZWNrcG9pbnRlZAo+ID4gLSAgICAgICogb3IgbmV3bHkgaW52YWxpZGF0ZWQuCj4g PiAtICAgICAgKi8KPiA+IC0gICAgIGlmICghaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJ U0FCTEVEKSkgewo+ID4gLSAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChv ZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICBz ZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoX19p c19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcysrOwo+ID4gKyAgICAg ICAgICAgICBpZiAoZjJmc19ibG9ja191bml0X2Rpc2NhcmQoc2JpKSAmJgo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBz ZS0+ZGlzY2FyZF9tYXApKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9i bGtzLS07Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qCj4gPiArICAgICAgICAgICAgICAqIFNT UiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hpY2ggaXMgY2hlY2twb2ludGVkCj4gPiArICAg ICAgICAgICAgICAqIG9yIG5ld2x5IGludmFsaWRhdGVkLgo+ID4gKyAgICAgICAgICAgICAgKi8K PiA+ICsgICAgICAgICAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJM RUQpKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYW5kX3NldF9i aXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubykt PmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4gICAg ICAgICAgICAgICB9Cj4gPiAtICAgICB9Cj4gPgo+ID4gLSAgICAgaWYgKCFmMmZzX3Rlc3RfYml0 KG9mZnNldCwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gLSAgICAgICAgICAgICBzZS0+Y2tw dF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4gLSAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9z ZWN0aW9uKHNiaSkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmks IHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gZGVsOwo+ID4gKyAgICAgICAgICAgICBpZiAo IWYyZnNfdGVzdF9iaXQob2Zmc2V0ICsgaSwgc2UtPmNrcHRfdmFsaWRfbWFwKSkgewo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFs aWRfYmxvY2tzICs9IDE7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICAgICAgIH0KPiA+Cj4gPiAg ICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCj4gPiBAQCAtMjU4NSw5ICsyNTkyLDE0 IEBAIHZvaWQgZjJmc19pbnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IGJsb2NrX3QgYWRkciwKPiA+ICAgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhz YmksIGFkZHIpOwo+ID4gICAgICAgc3RydWN0IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7 Cj4gPiAgICAgICBibG9ja190IGFkZHJfc3RhcnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBs ZW4gLSAxOwo+ID4gLSAgICAgdW5zaWduZWQgaW50IHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBh ZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+ ICAgICAgIHVuc2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9z ZWcsIGNudDsKPiA+Cj4gPiArICAgICBpZiAobGVuID09IDApCj4gPiArICAgICAgICAgICAgIHJl dHVybjsKPiA+ICsKPiA+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VHTk8oc2JpLCBhZGRyX2VuZCkg LSBzZWdubyArIDE7Cj4gPiArCj4gPiAgICAgICBmMmZzX2J1Z19vbihzYmksIGFkZHIgPT0gTlVM TF9BRERSKTsKPiA+ICAgICAgIGlmIChhZGRyID09IE5FV19BRERSIHx8IGFkZHIgPT0gQ09NUFJF U1NfQUREUikKPiA+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gQEAgLTI2MjAsNiArMjYzMiw1 MiBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp LCBibG9ja190IGFkZHIsCj4gPiAgICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsK PiA+ICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBsZW4pCj4gPiArewo+ID4gKyAgICAgdW5zaWduZWQgaW50IHNl Z25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNp dF9pID0gU0lUX0koc2JpKTsKPiA+ICsgICAgIGJsb2NrX3QgYWRkcl9zdGFydCA9IGFkZHIsIGFk ZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsK PiA+ICsgICAgIHVuc2lnbmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Bl cl9zZWcsIGNudDsKPiA+ICsKPiA+ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAg ICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJf ZW5kKSAtIHNlZ25vICsgMTsKPiA+ICsKPiA+ICsgICAgIGRvd25fd3JpdGUoJnNpdF9pLT5zZW50 cnlfbG9jayk7Cj4gPiArCj4gPiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4gKyAgICAgICAg ICAgICBjbnQgPSBsZW47Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIGNudCA9IG1h eF9ibG9ja3MgLSBHRVRfQkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4gKwo+ID4gKyAg ICAgZG8gewo+ID4gKyAgICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGltZShzYmksIGFkZHJf c3RhcnQsIDApOwo+ID4gKyAgICAgICAgICAgICB1cGRhdGVfc2l0X2VudHJ5KHNiaSwgYWRkcl9z dGFydCwgY250KTsKPiA+ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2JpLCBz ZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc2VnbWVudCBmcm9t IFBSRSAocHJlZnJlZSkgdG8gcHJldmVudCBjaGVja3BvaW50IGZyb20gZnJlZWluZyBpdCEgKi8K PiA+ICsgICAgICAgICAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2sp Owo+ID4gKyAgICAgICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KHNlZ25vLCBESVJUWV9J KHNiaSktPmRpcnR5X3NlZ21hcFtQUkVdKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBESVJU WV9JKHNiaSktPm5yX2RpcnR5W1BSRV0tLTsKPiA+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2Nr KCZESVJUWV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8q IGFkZCBpdCBpbnRvIGRpcnR5IHNlZ2xpc3QgKi8KPiA+ICsgICAgICAgICAgICAgbG9jYXRlX2Rp cnR5X3NlZ21lbnQoc2JpLCBzZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIHVwZGF0 ZSBAYWRkcl9zdGFydCBhbmQgQGNudCBhbmQgQHNlZ25vICovCj4gPiArICAgICAgICAgICAgIGFk ZHJfc3RhcnQgPSBTVEFSVF9CTE9DSyhzYmksICsrc2Vnbm8pOwo+ID4gKyAgICAgICAgICAgICBp ZiAoKytpID09IHNlZ19udW0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gR0VUX0JM S09GRl9GUk9NX1NFRzAoc2JpLCBhZGRyX2VuZCkgKyAxOwo+ID4gKyAgICAgICAgICAgICBlbHNl Cj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+ICsgICAgIH0g d2hpbGUgKGkgPD0gc2VnX251bSk7Cj4gPiArCj4gPiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNl bnRyeV9sb2NrKTsKPiA+ICt9Cj4gPiArCj4gPiAgYm9vbCBmMmZzX2lzX2NoZWNrcG9pbnRlZF9k YXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKQo+ID4gIHsKPiA+ ICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kgPSBTSVRfSShzYmkpOwo+ID4gQEAgLTI3NTgs OCArMjgxNiwxMyBAQCBzdGF0aWMgaW50IGlzX25leHRfc2VnbWVudF9mcmVlKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPiA+ICAgICAgIHVuc2lnbmVkIGludCBzZWdubyA9IGN1cnNlZy0+c2Vn bm8gKyAxOwo+ID4gICAgICAgc3RydWN0IGZyZWVfc2VnbWFwX2luZm8gKmZyZWVfaSA9IEZSRUVf SShzYmkpOwo+ID4KPiA+IC0gICAgIGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25v ICUgU0VHU19QRVJfU0VDKHNiaSkpCj4gPiArICAgICBpZiAoc2Vnbm8gPCBNQUlOX1NFR1Moc2Jp KSAmJiBzZWdubyAlIFNFR1NfUEVSX1NFQyhzYmkpKSB7Cj4gPiArICAgICAgICAgICAgIGludCBk ZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdu bykpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNi aSwgZGV2aSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgICAgICAg ICAgICAgIHJldHVybiAhdGVzdF9iaXQoc2Vnbm8sIGZyZWVfaS0+ZnJlZV9zZWdtYXApOwo+ID4g KyAgICAgfQo+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+IEBAIC0yNzc4LDcgKzI4 NDEsOCBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksCj4gPiAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NfcG9saWN5ID0gc2JpLT5hbGxvY2F0ZV9z ZWN0aW9uX3BvbGljeTsKPiA+ICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19oaW50ID0gc2JpLT5h bGxvY2F0ZV9zZWN0aW9uX2hpbnQ7Cj4gPiAgICAgICBib29sIGluaXQgPSB0cnVlOwo+ID4gLSAg ICAgaW50IGk7Cj4gPiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4gKyAgICAgaW50IGks IGRldmk7Cj4gPiAgICAgICBpbnQgcmV0ID0gMDsKPiA+Cj4gPiAgICAgICBzcGluX2xvY2soJmZy ZWVfaS0+c2VnbWFwX2xvY2spOwo+ID4gQEAgLTI3OTEsOCArMjg1NSwxMyBAQCBzdGF0aWMgaW50 IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICBpZiAo IW5ld19zZWMgJiYgKCgqbmV3c2VnICsgMSkgJSBTRUdTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICAg ICAgICAgICAgICAgc2Vnbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlZ21h cCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCAr IDEpLCAqbmV3c2VnICsgMSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdf RlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpCj4gPiArICAgICAgICAgICAgIGlmIChzZWdubyA8IEdF VF9TRUdfRlJPTV9TRUMoc2JpLCBoaW50ICsgMSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBz ZWdubykpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19h bGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIGdvdF9pdDsKPiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAj aWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+IEBAIC0yODI4LDMzICsyODk3LDQyIEBAIHN0 YXRpYyBpbnQgZ2V0X25ld19zZWdtZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICBm aW5kX290aGVyX3pvbmU6Cj4gPiAgICAgICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVl X2ktPmZyZWVfc2VjbWFwLCBNQUlOX1NFQ1Moc2JpKSwgaGludCk7Cj4gPgo+ID4gLSNpZmRlZiBD T05GSUdfQkxLX0RFVl9aT05FRAo+ID4gLSAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkp ICYmIGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkpIHsKPiA+IC0gICAgICAgICAgICAgLyogV3Jp dGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4gPiAtICAgICAgICAgICAgIGlmIChzYmkt PmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05MWV9TRVEpIHsKPiA+IC0g ICAgICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNiaS0+Zmly c3Rfc2VxX3pvbmVfc2Vnbm8pOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHNlY25vID0gZmlu ZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50 KTsKPiA+IC0gICAgICAgICAgICAgfSBlbHNlCj4gPiAtICAgICAgICAgICAgICAgICAgICAgc2Vj bm8gPSBmaW5kX2ZpcnN0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAsCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1B SU5fU0VDUyhzYmkpKTsKPiA+IC0gICAgICAgICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhz YmkpKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPiA+IC0gICAg ICAgICAgICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+ID4gLSAgICAgICAgICAgICAg ICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+IC0gICAgICAgICAgICAgfQo+ID4gLSAgICAgfQo+ ID4gLSNlbmRpZgo+ID4gLQo+ID4gICAgICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7 Cj4gPiAtICAgICAgICAgICAgIHNlY25vID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZy ZWVfc2VjbWFwLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTUFJTl9TRUNTKHNiaSkpOwo+ID4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8g Pj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgaWYgKGxvb3BlZCkgewo+ID4g ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9TUEM7Cj4gPiAgICAgICAgICAgICAgICAg ICAgICAgZjJmc19idWdfb24oc2JpLCAhcGlubmluZyk7Cj4gPiAgICAgICAgICAgICAgICAgICAg ICAgZ290byBvdXRfdW5sb2NrOwo+ID4gICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAg IGhpbnQgPSAwOwo+ID4gKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4gKyAgICAgICAg ICAgICAvKiBXcml0ZSBvbmx5IHRvIHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+ICsgICAgICAgICAg ICAgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYKPiA+ICsgICAgICAgICAgICAgICAg ICAgICBzYmktPmJsa3pvbmVfYWxsb2NfcG9saWN5ID09IEJMS1pPTkVfQUxMT0NfT05MWV9TRVEp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUcoc2JpLCBz YmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPiA+ICsjZW5kaWYKPiA+ICsgICAgICAgICAgICAg bG9vcGVkID0gdHJ1ZTsKPiA+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7Cj4g PiAgICAgICB9Cj4gPiArCj4gPiAgICAgICBzZWdubyA9IEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBz ZWNubyk7Cj4gPiArCj4gPiArICAgICBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNi aSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4gKwo+ID4gKyAgICAgaWYgKGYyZnNfZGV2 X2lzX2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4gKyAgICAgICAgICAg ICB3aGlsZSAoZGV2aSA8IHNiaS0+c19uZGV2cyAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGYyZnNfZGV2X2lzX2FsbG9jX2Jsb2NrZWQoc2JpLCBkZXZpLCBwaW5uaW5nKSkgewo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbmRfc2Vnbm8gPSBHRVRfU0VHTk8oc2Jp LCBGREVWKGRldmkpLmVuZF9ibGspOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGhp bnQgPSBHRVRfU0VDX0ZST01fU0VHKHNiaSwgZW5kX3NlZ25vKSArIDE7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgZGV2aSsrOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAg IGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKHNl Y191c2FnZV9jaGVjayhzYmksIHNlY25vKSkgewo+ID4gKyAgICAgICAgICAgICBoaW50ID0gc2Vj bm8gKyAxOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICsgICAg IH0KPiA+ICAgICAgIHpvbmVubyA9IEdFVF9aT05FX0ZST01fU0VDKHNiaSwgc2Vjbm8pOwo+ID4K PiA+ICAgICAgIC8qIGdpdmUgdXAgb24gZmluZGluZyBhbm90aGVyIHpvbmUgKi8KPiA+IGRpZmYg LS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBpbmRleCBi MGMwNmIzNTgwYjQuLjEwNzUwOGFlN2ViMyAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvc2VnbWVu dC5oCj4gPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+ID4gQEAgLTk1NCwxMCArOTU0LDMyIEBA IHN0YXRpYyBpbmxpbmUgYmxvY2tfdCBzdW1fYmxrX2FkZHIoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBpbnQgYmFzZSwgaW50IHR5cGUpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtIChiYXNlICsgMSkgKyB0eXBlOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIGlubGluZSBib29s IGYyZnNfZGV2X2lzX3Jlc2VydmluZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBkZXZp KQo+ID4gK3sKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4g PiArICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiBGREVWKGRldmkp LmlzX3Jlc2VydmluZzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNf ZGV2X2lzX2FsbG9jX2Jsb2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+ ID4gK3sKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiAr ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiAocGlubmluZyAmJiBG REVWKGRldmkpLmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4gPiArfQo+ ID4gKwo+ID4gIHN0YXRpYyBpbmxpbmUgYm9vbCBzZWNfdXNhZ2VfY2hlY2soc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLCB1bnNpZ25lZCBpbnQgc2Vjbm8pCj4gPiAgewo+ID4gICAgICAgaWYgKGlz X2N1cnNlYyhzYmksIHNlY25vKSB8fCAoc2JpLT5jdXJfdmljdGltX3NlYyA9PSBzZWNubykpCj4g PiAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gKyAgICAgaWYgKGYyZnNfc2JfaGFzX2Rl dmljZV9hbGlhcyhzYmkpKSB7Cj4gPiArICAgICAgICAgICAgIGJsb2NrX3Qgc3RhcnRfYmxrID0g U1RBUlRfQkxPQ0soc2JpLCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgc2Vjbm8pKTsKPiA+ICsgICAg ICAgICAgICAgaW50IGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBzdGFydF9i bGspOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJmc19kZXZfaXNfcmVzZXJ2aW5nKHNi aSwgZGV2aSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAg ICB9Cj4gPiAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9m cy9mMmZzL3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+IGluZGV4IGM0NDhkOTkyZmYyYS4u YmNhMTQ3NWNiNTczIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4gPiArKysgYi9m cy9mMmZzL3N1cGVyLmMKPiA+IEBAIC01MDAxLDYgKzUwMDEsMzggQEAgc3RhdGljIHZvaWQgZjJm c190dW5pbmdfcGFyYW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICBz YmktPnJlYWRkaXJfcmEgPSB0cnVlOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHZvaWQgZjJmc19y ZXN0b3JlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiArewo+ID4g KyAgICAgc3RydWN0IGlub2RlICpyb290ID0gZF9pbm9kZShzYmktPnNiLT5zX3Jvb3QpOwo+ID4g KyAgICAgc3RydWN0IGYyZnNfZGlyX2VudHJ5ICpkZTsKPiA+ICsgICAgIHN0cnVjdCBmb2xpbyAq Zm9saW87Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNf ZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsg ICAgIGZvciAoaSA9IDE7IGkgPCBzYmktPnNfbmRldnM7IGkrKykgewo+ID4gKyAgICAgICAgICAg ICBjaGFyICpuYW1lID0gc3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPiArICAgICAgICAg ICAgIHN0cnVjdCBxc3RyIHFzdHI7Cj4gPiArCj4gPiArICAgICAgICAgICAgIG5hbWUgPSBuYW1l ID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4gPiArICAgICAgICAgICAgIHFzdHIubmFtZSA9 IG5hbWU7Cj4gPiArICAgICAgICAgICAgIHFzdHIubGVuID0gc3RybGVuKG5hbWUpOwo+ID4gKwo+ ID4gKyAgICAgICAgICAgICBkZSA9IGYyZnNfZmluZF9lbnRyeShyb290LCAmcXN0ciwgJmZvbGlv KTsKPiA+ICsgICAgICAgICAgICAgaWYgKGRlKSB7Cj4KPiBUcml2aWFsIGNsZWF1cCB0byBhdm9p ZCBsb25nIGxpbmUuCj4KPiBpZiAoIWRlKQo+ICAgICAgICAgY29udGludWU7Cj4KPiBUaGFua3Ms Cj4KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZjJmc19p Z2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsKPiA+ICsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICBpZiAoIUlTX0VSUihpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHV0KGlub2RlKTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9s aW8sIDApOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiArICAgICB9Cj4gPiArfQo+ID4gKwo+ID4g IHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVj dCBmc19jb250ZXh0ICpmYykKPiA+ICB7Cj4gPiAgICAgICBzdHJ1Y3QgZjJmc19mc19jb250ZXh0 ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPiA+IEBAIC01MjA5LDYgKzUyNDEsNyBAQCBzdGF0aWMg aW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29u dGV4dCAqZmMpCj4gPiAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQgPSBzYmktPnRv dGFsX3ZhbGlkX2Jsb2NrX2NvdW50Owo+ID4gICAgICAgc2JpLT5yZXNlcnZlZF9ibG9ja3MgPSAw Owo+ID4gICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiArICAgICBz YmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiAgICAgICBsaW1pdF9yZXNlcnZlX3Jv b3Qoc2JpKTsKPiA+ICAgICAgIGFkanVzdF91bnVzYWJsZV9jYXBfcGVyYyhzYmkpOwo+ID4KPiA+ IEBAIC01NDM2LDYgKzU0NjksOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAgICBmMmZzX3Vw ZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4gICAgICAgY2xlYXJfc2JpX2ZsYWcoc2JpLCBT QklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4KPiA+ICsgICAgIGYyZnNfcmVzdG9yZV9kZXZpY2Vf YWxpYXMoc2JpKTsKPiA+ICsKPiA+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tfaG9sZGVyID0gTlVM TDsKPiA+ICAgICAgIHJldHVybiAwOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv bGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4gaW5kZXggNzk1ZTI2 MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgv ZjJmcy5oCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4gPiBAQCAtNDUsNiAr NDUsOSBAQAo+ID4gICNkZWZpbmUgRjJGU19JT0NfU1RBUlRfQVRPTUlDX1JFUExBQ0UgICAgICAg IF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyNSkKPiA+ICAjZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZf QUxJQVNfRklMRSAgX0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4gPiAgI2RlZmlu ZSBGMkZTX0lPQ19JT19QUklPICAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9NQUdJQywgMjcs IF9fdTMyKQo+ID4gKyNkZWZpbmUgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVMgICBfSU8oRjJG U19JT0NUTF9NQUdJQywgMjgpCj4gPiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElB UyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOSkKPiA+ICsjZGVmaW5lIEYyRlNfSU9DX0dFVF9E RVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMwLCBfX3UzMikK PiA+Cj4gPiAgLyoKPiA+ICAgKiBzaG91bGQgYmUgc2FtZSBhcyBYRlNfSU9DX0dPSU5HRE9XTi4K PiA+IEBAIC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPiA+ICAgICAgIEYyRlNfSU9QUklPX01BWCwK PiA+ICB9Owo+ID4KPiA+ICsvKiBmb3IgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVMgKi8K PiA+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAgICAgICAwCj4gPiAr I2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgICAgICAgMQo+ID4gKwo+ID4g IHN0cnVjdCBmMmZzX2djX3JhbmdlIHsKPiA+ICAgICAgIF9fdTMyIHN5bmM7Cj4gPiAgICAgICBf X3U2NCBzdGFydDsKPgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlz dHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xp c3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK