RE: [PATCH v2 1/7] mfd: Add support for DA9150 combined charger & fuel-gauge device

Opensource [Adam Thomson]
2014-09-09T10:38:18Z

T24gQXVndXN0IDI4LCAyMDE0IDE3OjM2LCBMZWUgSm9uZXMgd3JvdGU6DQoNClRoYW5rcyBmb3Ig
dGhlIGZlZWRiYWNrLiBBcyBhIGdlbmVyYWwgY29tbWVudCBhIGNvdXBsZSBvZiB0aGUgaXRlbXMg
eW91J3ZlDQppZGVudGlmaWVkIHJlbGF0ZSB0byBmdXR1cmUgdXBkYXRlcyAoYWRkaXRpb25hbCBm
dW5jdGlvbmFsaXR5IGJlaW5nIGFkZGVkKS4NCkkgYWxyZWFkeSBoYXZlIGNvZGUgaW4gcGxhY2Ug
Zm9yIHRoaXMgYnV0IGhhdmUgc3RyaXBwZWQgb3V0IGEgY291cGxlIG9mIHRoZQ0KZHJpdmVycyBq
dXN0IHRvIHJlZHVjZSB0aGUgY2h1cm4gYW5kIHNpemUgb2YgcGF0Y2ggc3VibWlzc2lvbi4gVGhl
c2Ugd2lsbCBiZQ0KYWRkZWQgb25jZSB0aGVzZSBwYXRjaGVzIGhhdmUgYmVlbiBhY2NlcHRlZC4N
Cg0KV2hlcmUgdGhpcyBpcyB0aGUgY2FzZSwgSSBoYXZlIGFkZGVkIG5vdGVzIGluLWxpbmUgYWdh
aW5zdCB0aGUgcmVsZXZhbnQNCmNvbW1lbnRzIHlvdSBtYWRlLg0KDQo+IE9uIFRodSwgMjggQXVn
IDIwMTQsIEFkYW0gVGhvbXNvbiB3cm90ZToNCj4gDQo+ID4gREE5MTUwIGlzIGEgY29tYmluZWQg
Q2hhcmdlciBhbmQgRnVlbC1HYXVnZSBJQywgd2l0aCBhZGRpdGlvbmFsDQo+ID4gR1BJTyBhbmQg
R1BBREMgZnVuY3Rpb25hbGl0eS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFkYW0gVGhvbXNv
biA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlhc2VtaS5jb20+DQo+ID4gLS0tDQo+ID4gIGRy
aXZlcnMvbWZkL0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgMTIgKw0KPiA+ICBkcml2ZXJz
L21mZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICAyICsNCj4gPiAgZHJpdmVycy9tZmQv
ZGE5MTUwLWNvcmUuYyAgICAgICAgICAgIHwgIDMzMiArKysrKysrKysrDQo+ID4gIGRyaXZlcnMv
bWZkL2RhOTE1MC1pMmMuYyAgICAgICAgICAgICB8ICAxNzYgKysrKysrDQo+IA0KPiBEbyB5b3Ug
YWxzbyBoYXZlIGFub3RoZXIsIHNheSBTUEkgdmVyc2lvbj8NCg0KTm8sIG5vdCB5ZXQsIGJ1dCB0
aGlzIGlzIHNvbWV0aGluZyB0aGF0IHdlIG1heSBhZGQgbGF0ZXIgYXMgdGhlIGRldmljZSBkb2Vz
DQpzdXBwb3J0IFNQSS4NCg0KPiANCj4gPiAgaW5jbHVkZS9saW51eC9tZmQvZGE5MTUwL2NvcmUu
aCAgICAgIHwgICA4MCArKysNCj4gPiAgaW5jbHVkZS9saW51eC9tZmQvZGE5MTUwL3BkYXRhLmgg
ICAgIHwgICAyMSArDQo+ID4gIGluY2x1ZGUvbGludXgvbWZkL2RhOTE1MC9yZWdpc3RlcnMuaCB8
IDExNTMNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICA3IGZpbGVz
IGNoYW5nZWQsIDE3NzYgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp
dmVycy9tZmQvZGE5MTUwLWNvcmUuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9t
ZmQvZGE5MTUwLWkyYy5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L21m
ZC9kYTkxNTAvY29yZS5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L21m
ZC9kYTkxNTAvcGRhdGEuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9t
ZmQvZGE5MTUwL3JlZ2lzdGVycy5oDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQv
S2NvbmZpZyBiL2RyaXZlcnMvbWZkL0tjb25maWcNCj4gPiBpbmRleCBkZTVhYmYyLi43NmFkYjJj
IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJz
L21mZC9LY29uZmlnDQo+ID4gQEAgLTE4Myw2ICsxODMsMTggQEAgY29uZmlnIE1GRF9EQTkwNjMN
Cj4gPiAgCSAgQWRkaXRpb25hbCBkcml2ZXJzIG11c3QgYmUgZW5hYmxlZCBpbiBvcmRlciB0byB1
c2UgdGhlIGZ1bmN0aW9uYWxpdHkNCj4gPiAgCSAgb2YgdGhlIGRldmljZS4NCj4gPg0KPiA+ICtj
b25maWcgTUZEX0RBOTE1MA0KPiA+ICsJYm9vbCAiRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MTUw
IENoYXJnZXIgRnVlbC1HYXVnZSBjaGlwIg0KPiANCj4gV2h5IGNhbid0IHRoaXMgYmUgYnVpbHQg
YXMgYSBtb2R1bGU/DQoNCk5vIHJlYXNvbi4gV2lsbCBjaGFuZ2UgaXQuDQoNCj4gDQo+ID4gKwlk
ZXBlbmRzIG9uIEkyQz15DQo+ID4gKwlzZWxlY3QgTUZEX0NPUkUNCj4gPiArCXNlbGVjdCBSRUdN
QVBfSTJDDQo+ID4gKwlzZWxlY3QgUkVHTUFQX0lSUQ0KPiA+ICsJaGVscA0KPiA+ICsJICBUaGlz
IGFkZHMgc3VwcG9ydCBmb3IgdGhlIERBOTE1MCBpbnRlZ3JhdGVkIGNoYXJnZXIgYW5kIGZ1ZWwt
Z2F1Z2UNCj4gPiArCSAgY2hpcC4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgY29tbW9uIHN1cHBvcnQg
Zm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlLg0KPiA+ICsJICBBZGRpdGlvbmFsIGRyaXZlcnMgbXVz
dCBiZSBlbmFibGVkIGluIG9yZGVyIHRvIHVzZSB0aGUgc3BlY2lmaWMNCj4gPiArCSAgZmVhdHVy
ZXMgb2YgdGhlIGRldmljZS4NCj4gPiArDQo+ID4gIGNvbmZpZyBNRkRfTUMxM1hYWA0KPiA+ICAJ
dHJpc3RhdGUNCj4gPiAgCWRlcGVuZHMgb24gKFNQSV9NQVNURVIgfHwgSTJDKQ0KPiA+IGRpZmYg
LS1naXQgYS9kcml2ZXJzL21mZC9NYWtlZmlsZSBiL2RyaXZlcnMvbWZkL01ha2VmaWxlDQo+ID4g
aW5kZXggZjAwMTQ4Ny4uMDk4ZGZhMSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21mZC9NYWtl
ZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvbWZkL01ha2VmaWxlDQo+ID4gQEAgLTExNCw2ICsxMTQs
OCBAQCBvYmotJChDT05GSUdfTUZEX0RBOTA1NSkJKz0gZGE5MDU1Lm8NCj4gPiAgZGE5MDYzLW9i
anMJCQk6PSBkYTkwNjMtY29yZS5vIGRhOTA2My1pcnEubyBkYTkwNjMtaTJjLm8NCj4gPiAgb2Jq
LSQoQ09ORklHX01GRF9EQTkwNjMpCSs9IGRhOTA2My5vDQo+ID4NCj4gPiArb2JqLSQoQ09ORklH
X01GRF9EQTkxNTApCSs9IGRhOTE1MC1jb3JlLm8gZGE5MTUwLWkyYy5vDQo+ID4gKw0KPiANCj4g
RG8gdGhlIG90aGVyIGRyaXZlcnMgc21lbGw/ICBQbGVhc2UgYnV0dCB1cCBhZ2FpbnN0IHRoZW0u
DQo+IA0KPiBJJ20gbm90IGVudGlyZWx5IHN1cmUgd2h5IHRoZXJlIGFyZSBzbyBtYW55ICdcbidz
IGluIHRoZSBNYWtlZmlsZSENCg0KT2tleSBkb2tleS4gV2lsbCBjaGFuZ2UuDQoNCj4gDQo+ID4g
IG9iai0kKENPTkZJR19NRkRfTUFYMTQ1NzcpCSs9IG1heDE0NTc3Lm8NCj4gPiAgb2JqLSQoQ09O
RklHX01GRF9NQVg3NzY4NikJKz0gbWF4Nzc2ODYubw0KPiA+ICBvYmotJChDT05GSUdfTUZEX01B
WDc3NjkzKQkrPSBtYXg3NzY5My5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2RhOTE1
MC1jb3JlLmMgYi9kcml2ZXJzL21mZC9kYTkxNTAtY29yZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi4wMjlhMzBiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+
ICsrKyBiL2RyaXZlcnMvbWZkL2RhOTE1MC1jb3JlLmMNCj4gPiBAQCAtMCwwICsxLDMzMiBAQA0K
PiA+ICsvKg0KPiA+ICsgKiBEQTkxNTAgQ29yZSBNRkQgRHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAq
IENvcHlyaWdodCAoYykgMjAxNCBEaWFsb2cgU2VtaWNvbmR1Y3Rvcg0KPiA+ICsgKg0KPiA+ICsg
KiBBdXRob3I6IEFkYW0gVGhvbXNvbiA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlhc2VtaS5j
b20+DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdA0KPiA+ICsgKiB1bmRlciAgdGhl
IHRlcm1zIG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUNCj4gPiArICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyDQo+ID4gKyAqIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o
Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9w
bGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gPiArI2lu
Y2x1ZGUgPGxpbnV4L2lycS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+
ID4gKyNpbmNsdWRlIDxsaW51eC9tZmQvY29yZS5oPg0KPiA+ICsNCj4gDQo+IE5vIHJlYWwgbmVl
ZCBmb3IgdGhpcyAnXG4nLg0KDQpJIGNhbiBjaGFuZ2UgdGhpcywgYnV0IG15IHJlYXNvbiB3YXMg
dG8gc2VwYXJhdGUgY29tbW9uIGtlcm5lbCBpbmNsdWRlcyBmcm9tDQpkZXZpY2Ugc3BlY2lmaWMg
b25lcywgZm9yIHJlYWRhYmlsaXR5LiANCg0KPiANCj4gPiArI2luY2x1ZGUgPGxpbnV4L21mZC9k
YTkxNTAvY29yZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbWZkL2RhOTE1MC9yZWdpc3RlcnMu
aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21mZC9kYTkxNTAvcGRhdGEuaD4NCj4gPiArDQo+ID4g
K3U4IGRhOTE1MF9yZWdfcmVhZChzdHJ1Y3QgZGE5MTUwICpkYTkxNTAsIHUxNiByZWcpDQo+ID4g
K3sNCj4gPiArCWludCB2YWwsIHJldDsNCj4gPiArDQo+ID4gKwlyZXQgPSByZWdtYXBfcmVhZChk
YTkxNTAtPnJlZ21hcCwgcmVnLCAmdmFsKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiANCj4gV2hh
dCBpZiByZXQgPiAwPyAgSXMgdGhhdCBhIGdvb2QgdGhpbmc/IDopDQo+IA0KPiBKdXN0ICdpZiAo
cmV0KScuDQoNCkZpbmUsIHdpbGwgY2hhbmdlLg0KDQo+IA0KPiA+ICsJCWRldl9lcnIoZGE5MTUw
LT5kZXYsICJGYWlsZWQgdG8gcmVhZCBmcm9tIHJlZyAweCV4OiAlZFxuIiwNCj4gPiArCQkJcmVn
LCByZXQpOw0KPiA+ICsNCj4gPiArCXJldHVybiAodTgpIHZhbDsNCj4gPiArfQ0KPiA+ICtFWFBP
UlRfU1lNQk9MX0dQTChkYTkxNTBfcmVnX3JlYWQpOw0KPiANCj4gTm90IHN1cmUgSSBsaWtlIHRo
aXMgYWJzdHJhY3Rpb24gc3R1ZmYuICBJIGNvdWxkIHVuZGVyc3RhbmQgaWYgdGhlcmUNCj4gd2Vy
ZSBsb2NraW5nIGludm9sdmVkLCBidXQgdGhlcmUgaXNuJ3QuICBZb3UgZG9uJ3QgYXBwZWFyIHRv
IGNoZWNrIGZvcg0KPiBlcnJvcnMgaW4gdGhlIHN1Ym9yZGluYXRlIGRyaXZlcnMgZWl0aGVyLCBy
YXRoZXIgeW91IGp1c3QgcGxvdWdoIG9uDQo+IGFoZWFkLiAgTm90IHN1cmUgdGhhdCdzIGEgZ29v
ZCBpZGVhIGVpdGhlci4NCj4gDQo+IEFueW9uZSBoYXZlIGEgc2Vjb25kIG9waW5pb24/DQoNClRo
ZSByZWFzb24gZm9yIHRoZXNlIGlzIGJlY2F1c2UgZnV0dXJlIHBhdGNoZXMgdG8gYWRkIGFkZGl0
aW9uYWwgZnVuY3Rpb25hbGl0eQ0Kd2lsbCBpbnRyb2R1Y2UgSTJDIGFjY2VzcyBmdW5jdGlvbnMg
d2hpY2ggZG8gbm90IHVzZSByZWdtYXAgYW5kIGFjY2VzcyB0aGUNCmRldmljZSB2aWEgYSBzZXBh
cmF0ZSBJMkMgYWRkcmVzcyBmb3IgdGhpcyBwdXJwb3NlLiBJIHdpbGwgbmVlZCB0byBwcm92aWRl
DQphY2Nlc3MgZnVuY3Rpb25zIGZvciB0aGF0LCBhbmQgc28gaGF2aW5nIGEgY29tbW9uIHN0eWxl
IG9mIEkyQyBhY2Nlc3MgbWFrZXMNCnNlbnNlIGZvciB0aGlzIGRyaXZlci4gTWVhbnMgYW55IGFj
Y2VzcyBqdXN0IG5lZWRzIHRvIHByb3ZpZGUgdGhlIE1GRCBwcml2YXRlDQpkYXRhLCBhbmQgdGhl
IHJlbGV2YW50IGZ1bmN0aW9ucyB0YWtlIGNhcmUgb2YgdGhlIHJlc3QuIEkgdGhpbmsgdGhpcyBp
cyBjbGVhbmVyDQppbiB0aGlzIGluc3RhbmNlLg0KDQpXaXRoIHJlZ2FyZHMgdG8gZXJyb3JzLCBp
ZiB3ZSdyZSBzZWVpbmcgcHJvYmxlbXMgb24gSTJDIEkgZG9uJ3QgYmVsaWV2ZSBkZWFsaW5nDQp3
aXRoIHRoZSBlcnJvcnMgZWxzZXdoZXJlIGlzIGdvaW5nIHRvIGhlbHAgbXVjaC4gSSB3YW50ZWQg
dG8gcHJvdmlkZSBsb2dnaW5nDQp0aG91Z2ggaW4gY2FzZSB0aGlzIGlzIHNlZW4gZm9yIHNvbWUg
cmVhc29uLiBIb3dldmVyIEkgY291bGQganVzdCBtYWtlIHRoZXNlDQpmdW5jdGlvbnMgdm9pZCBy
ZXR1cm4gYXMgeW91J3JlIHJpZ2h0IGluIHlvdXIgY29tbWVudHMgdGhhdCBubyBjaGVja2luZyBp
cyBkb25lDQplbHNld2hlcmUuDQoNCj4gDQo+ID4gK2ludCBkYTkxNTBfcmVnX3dyaXRlKHN0cnVj
dCBkYTkxNTAgKmRhOTE1MCwgdTE2IHJlZywgdTggdmFsKQ0KPiA+ICt7DQo+ID4gKwlpbnQgcmV0
Ow0KPiA+ICsNCj4gPiArCXJldCA9IHJlZ21hcF93cml0ZShkYTkxNTAtPnJlZ21hcCwgcmVnLCB2
YWwpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJZGV2X2VycihkYTkxNTAtPmRldiwgIkZh
aWxlZCB0byB3cml0ZSB0byByZWcgMHgleDogJWRcbiIsDQo+ID4gKwkJCXJlZywgcmV0KTsNCj4g
PiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGRh
OTE1MF9yZWdfd3JpdGUpOw0KPiANCj4gQmxhaC4NCj4gDQo+ID4gK2ludCBkYTkxNTBfc2V0X2Jp
dHMoc3RydWN0IGRhOTE1MCAqZGE5MTUwLCB1MTYgcmVnLCB1OCBtYXNrLCB1OCB2YWwpDQo+ID4g
K3sNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRz
KGRhOTE1MC0+cmVnbWFwLCByZWcsIG1hc2ssIHZhbCk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4g
PiArCQlkZXZfZXJyKGRhOTE1MC0+ZGV2LCAiRmFpbGVkIHRvIHNldCBiaXRzIGluIHJlZyAweCV4
OiAlZFxuIiwNCj4gPiArCQkJcmVnLCByZXQpOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+
ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoZGE5MTUwX3NldF9iaXRzKTsNCj4gDQo+IEJs
YWguDQo+IA0KPiA+ICtpbnQgZGE5MTUwX2J1bGtfcmVhZChzdHJ1Y3QgZGE5MTUwICpkYTkxNTAs
IHUxNiByZWcsIGludCBjb3VudCwgdTggKmJ1ZikNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4g
PiArDQo+ID4gKwlyZXQgPSByZWdtYXBfYnVsa19yZWFkKGRhOTE1MC0+cmVnbWFwLCByZWcsIGJ1
ZiwgY291bnQpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJZGV2X2VycihkYTkxNTAtPmRl
diwgIkZhaWxlZCB0byBidWxrIHJlYWQgZnJvbSByZWcgMHgleDogJWRcbiIsDQo+ID4gKwkJCXJl
ZywgcmV0KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gK0VYUE9SVF9T
WU1CT0xfR1BMKGRhOTE1MF9idWxrX3JlYWQpOw0KPiANCj4gQmxhaC4NCj4gDQo+ID4gK2ludCBk
YTkxNTBfYnVsa193cml0ZShzdHJ1Y3QgZGE5MTUwICpkYTkxNTAsIHUxNiByZWcsIGludCBjb3Vu
dCwgY29uc3QgdTggKmJ1ZikNCj4gPiArew0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwly
ZXQgPSByZWdtYXBfcmF3X3dyaXRlKGRhOTE1MC0+cmVnbWFwLCByZWcsIGJ1ZiwgY291bnQpOw0K
PiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJZGV2X2VycihkYTkxNTAtPmRldiwgIkZhaWxlZCB0
byBidWxrIHdyaXRlIHRvIHJlZyAweCV4ICVkXG4iLA0KPiA+ICsJCQlyZWcsIHJldCk7DQo+ID4g
Kw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkYTkx
NTBfYnVsa193cml0ZSk7DQo+IA0KPiBCbGFoLg0KPiANCj4gPiArc3RhdGljIHN0cnVjdCByZWdt
YXBfaXJxIGRhOTE1MF9pcnFzW10gPSB7DQo+ID4gKwlbREE5MTUwX0lSUV9WQlVTXSA9IHsNCj4g
PiArCQkucmVnX29mZnNldCA9IDAsDQo+ID4gKwkJLm1hc2sgPSBEQTkxNTBfRV9WQlVTX01BU0ss
DQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfQ0hHXSA9IHsNCj4gPiArCQkucmVnX29mZnNl
dCA9IDAsDQo+ID4gKwkJLm1hc2sgPSBEQTkxNTBfRV9DSEdfTUFTSywNCj4gPiArCX0sDQo+ID4g
KwlbREE5MTUwX0lSUV9UQ0xBU1NdID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMCwNCj4gPiAr
CQkubWFzayA9IERBOTE1MF9FX1RDTEFTU19NQVNLLA0KPiA+ICsJfSwNCj4gPiArCVtEQTkxNTBf
SVJRX1RKVU5DXSA9IHsNCj4gPiArCQkucmVnX29mZnNldCA9IDAsDQo+ID4gKwkJLm1hc2sgPSBE
QTkxNTBfRV9USlVOQ19NQVNLLA0KPiA+ICsJfSwNCj4gPiArCVtEQTkxNTBfSVJRX1ZGQVVMVF0g
PSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAwLA0KPiA+ICsJCS5tYXNrID0gREE5MTUwX0VfVkZB
VUxUX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfQ09ORl0gPSB7DQo+ID4gKwkJ
LnJlZ19vZmZzZXQgPSAxLA0KPiA+ICsJCS5tYXNrID0gREE5MTUwX0VfQ09ORl9NQVNLLA0KPiA+
ICsJfSwNCj4gPiArCVtEQTkxNTBfSVJRX0RBVF0gPSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAx
LA0KPiA+ICsJCS5tYXNrID0gREE5MTUwX0VfREFUX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RB
OTE1MF9JUlFfRFRZUEVdID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMSwNCj4gPiArCQkubWFz
ayA9IERBOTE1MF9FX0RUWVBFX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfSURd
ID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMSwNCj4gPiArCQkubWFzayA9IERBOTE1MF9FX0lE
X01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfQURQXSA9IHsNCj4gPiArCQkucmVn
X29mZnNldCA9IDEsDQo+ID4gKwkJLm1hc2sgPSBEQTkxNTBfRV9BRFBfTUFTSywNCj4gPiArCX0s
DQo+ID4gKwlbREE5MTUwX0lSUV9TRVNTX0VORF0gPSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAx
LA0KPiA+ICsJCS5tYXNrID0gREE5MTUwX0VfU0VTU19FTkRfTUFTSywNCj4gPiArCX0sDQo+ID4g
KwlbREE5MTUwX0lSUV9TRVNTX1ZMRF0gPSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAxLA0KPiA+
ICsJCS5tYXNrID0gREE5MTUwX0VfU0VTU19WTERfTUFTSywNCj4gPiArCX0sDQo+ID4gKwlbREE5
MTUwX0lSUV9GR10gPSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAyLA0KPiA+ICsJCS5tYXNrID0g
REE5MTUwX0VfRkdfTUFTSywNCj4gPiArCX0sDQo+ID4gKwlbREE5MTUwX0lSUV9HUF0gPSB7DQo+
ID4gKwkJLnJlZ19vZmZzZXQgPSAyLA0KPiA+ICsJCS5tYXNrID0gREE5MTUwX0VfR1BfTUFTSywN
Cj4gPiArCX0sDQo+ID4gKwlbREE5MTUwX0lSUV9UQkFUXSA9IHsNCj4gPiArCQkucmVnX29mZnNl
dCA9IDIsDQo+ID4gKwkJLm1hc2sgPSBEQTkxNTBfRV9UQkFUX01BU0ssDQo+ID4gKwl9LA0KPiA+
ICsJW0RBOTE1MF9JUlFfR1BJT0FdID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMiwNCj4gPiAr
CQkubWFzayA9IERBOTE1MF9FX0dQSU9BX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9J
UlFfR1BJT0JdID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMiwNCj4gPiArCQkubWFzayA9IERB
OTE1MF9FX0dQSU9CX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfR1BJT0NdID0g
ew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0gMiwNCj4gPiArCQkubWFzayA9IERBOTE1MF9FX0dQSU9D
X01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfR1BJT0RdID0gew0KPiA+ICsJCS5y
ZWdfb2Zmc2V0ID0gMiwNCj4gPiArCQkubWFzayA9IERBOTE1MF9FX0dQSU9EX01BU0ssDQo+ID4g
Kwl9LA0KPiA+ICsJW0RBOTE1MF9JUlFfR1BBRENdID0gew0KPiA+ICsJCS5yZWdfb2Zmc2V0ID0g
MiwNCj4gPiArCQkubWFzayA9IERBOTE1MF9FX0dQQURDX01BU0ssDQo+ID4gKwl9LA0KPiA+ICsJ
W0RBOTE1MF9JUlFfV0tVUF0gPSB7DQo+ID4gKwkJLnJlZ19vZmZzZXQgPSAzLA0KPiA+ICsJCS5t
YXNrID0gREE5MTUwX0VfV0tVUF9NQVNLLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ID4g
K3N0YXRpYyBzdHJ1Y3QgcmVnbWFwX2lycV9jaGlwIGRhOTE1MF9yZWdtYXBfaXJxX2NoaXAgPSB7
DQo+ID4gKwkubmFtZSA9ICJkYTkxNTBfaXJxIiwNCj4gPiArCS5zdGF0dXNfYmFzZSA9IERBOTE1
MF9FVkVOVF9FLA0KPiA+ICsJLm1hc2tfYmFzZSA9IERBOTE1MF9JUlFfTUFTS19FLA0KPiA+ICsJ
LmFja19iYXNlID0gREE5MTUwX0VWRU5UX0UsDQo+ID4gKwkubnVtX3JlZ3MgPSBEQTkxNTBfTlVN
X0lSUV9SRUdTLA0KPiA+ICsJLmlycXMgPSBkYTkxNTBfaXJxcywNCj4gPiArCS5udW1faXJxcyA9
IEFSUkFZX1NJWkUoZGE5MTUwX2lycXMpLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogSGVscGVy
IGZ1bmN0aW9ucyBmb3Igc3ViLWRldmljZXMgdG8gcmVxdWVzdC9mcmVlIElSUXMgKi8NCj4gPiAr
aW50IGRhOTE1MF9yZWdpc3Rlcl9pcnEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9p
ZCAqZGV2X2lkLA0KPiA+ICsJCQlpcnFfaGFuZGxlcl90IGhhbmRsZXIsIGNvbnN0IGNoYXIgKm5h
bWUpDQo+ID4gK3sNCj4gPiArCWludCBpcnEsIHJldDsNCj4gPiArDQo+ID4gKwlpcnEgPSBwbGF0
Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCBuYW1lKTsNCj4gPiArCWlmIChpcnEgPCAwKQ0KPiA+
ICsJCXJldHVybiBpcnE7DQo+ID4gKw0KPiA+ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVk
X2lycSgmcGRldi0+ZGV2LCBpcnEsIE5VTEwsIGhhbmRsZXIsDQo+ID4gKwkJCQkJSVJRRl9PTkVT
SE9ULCBuYW1lLCBkZXZfaWQpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlkZXZfZXJyKCZwZGV2
LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBJUlEgJWQ6ICVkXG4iLCBpcnEsIHJldCk7DQo+ID4g
Kw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkYTkx
NTBfcmVnaXN0ZXJfaXJxKTsNCj4gDQo+IFdoeSBkbyB0aGV5IG5lZWQgaGVscD8gIFdoYXQgcHJv
YmxlbSBkb2VzIGFkZGluZyB0aGVzZSBsYXllcnMgc29sdmU/DQoNCk1lYW5zIEkgZG9uJ3QgaGF2
ZSB0byBrZWVwIGFkZGluZyBwcmludCBlcnJvciBsaW5lcyBldmVyeXdoZXJlIGVsc2UgaWYgdGhp
cw0KZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBpdC4gVGhvdWdodCB0aGF0IHdvdWxkIGJlIGNsZWFu
ZXIuDQoNCj4gDQo+ID4gK3ZvaWQgZGE5MTUwX3JlbGVhc2VfaXJxKHN0cnVjdCBwbGF0Zm9ybV9k
ZXZpY2UgKnBkZXYsIHZvaWQgKmRldl9pZCwNCj4gPiArCQkgICAgICAgY29uc3QgY2hhciAqbmFt
ZSkNCj4gPiArew0KPiA+ICsJaW50IGlycTsNCj4gPiArDQo+ID4gKwlpcnEgPSBwbGF0Zm9ybV9n
ZXRfaXJxX2J5bmFtZShwZGV2LCBuYW1lKTsNCj4gPiArCWlmIChpcnEgPCAwKQ0KPiA+ICsJCXJl
dHVybjsNCj4gPiArDQo+ID4gKwlkZXZtX2ZyZWVfaXJxKCZwZGV2LT5kZXYsIGlycSwgZGV2X2lk
KTsNCj4gPiArfQ0KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChkYTkxNTBfcmVsZWFzZV9pcnEpOw0K
PiANCj4gRG8geW91IGV2ZXIgcmVsZWFzZSB0aGUgSVJRIGFuZCBub3QgdW5iaW5kIHRoZSBkcml2
ZXI/DQo+IA0KPiBBcmUgdGhlcmUgb3JkZXJpbmcgaXNzdWVzIGF0IHBsYXkgaGVyZT8NCj4gDQo+
IElmIG5vdCwgdGhlcmUncyBubyBuZWVkIHRvIGNvbmR1Y3QgYSBtYW51YWwgZnJlZS4NCg0KSW4g
dGhlIGNoYXJnZXIgZHJpdmVyLCBpbiB0aGUgcmVtb3ZlIGZ1bmN0aW9uIHRoZXJlIGlzIGEgbmVl
ZCBJIGJlbGlldmUgdG8NCmZyZWUgdGhlIElSUXMgYmVmb3JlIG90aGVyIGl0ZW1zIGFyZSBjbGVh
cmVkIHVwIChlLmcuIHBvd2VyX3N1cHBseSBjbGFzc2VzKSwNCnNvIHRoaXMgaXMgd2h5IEkgaGF2
ZSBhZGRlZCB0aGlzIGluIGhlcmUuDQoNCj4gDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ug
ZGE5MTUwX2dwYWRjX3Jlc291cmNlc1tdID0gew0KPiA+ICsJew0KPiA+ICsJCS5uYW1lID0gIkdQ
QURDIiwNCj4gPiArCQkuc3RhcnQgPSBEQTkxNTBfSVJRX0dQQURDLA0KPiA+ICsJCS5lbmQgPSBE
QTkxNTBfSVJRX0dQQURDLA0KPiA+ICsJCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRLA0KPiA+ICsJ
fSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgZGE5MTUwX2No
YXJnZXJfcmVzb3VyY2VzW10gPSB7DQo+ID4gKwl7DQo+ID4gKwkJLm5hbWUgPSAiQ0hHX1NUQVRV
UyIsDQo+ID4gKwkJLnN0YXJ0ID0gREE5MTUwX0lSUV9DSEcsDQo+ID4gKwkJLmVuZCA9IERBOTE1
MF9JUlFfQ0hHLA0KPiA+ICsJCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRLA0KPiA+ICsJfSwNCj4g
PiArCXsNCj4gPiArCQkubmFtZSA9ICJDSEdfVEpVTkMiLA0KPiA+ICsJCS5zdGFydCA9IERBOTE1
MF9JUlFfVEpVTkMsDQo+ID4gKwkJLmVuZCA9IERBOTE1MF9JUlFfVEpVTkMsDQo+ID4gKwkJLmZs
YWdzID0gSU9SRVNPVVJDRV9JUlEsDQo+ID4gKwl9LA0KPiA+ICsJew0KPiA+ICsJCS5uYW1lID0g
IkNIR19WRkFVTFQiLA0KPiA+ICsJCS5zdGFydCA9IERBOTE1MF9JUlFfVkZBVUxULA0KPiA+ICsJ
CS5lbmQgPSBEQTkxNTBfSVJRX1ZGQVVMVCwNCj4gPiArCQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lS
USwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLm5hbWUgPSAiQ0hHX1ZCVVMiLA0KPiA+ICsJ
CS5zdGFydCA9IERBOTE1MF9JUlFfVkJVUywNCj4gPiArCQkuZW5kID0gREE5MTUwX0lSUV9WQlVT
LA0KPiA+ICsJCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4g
PiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgbWZkX2NlbGwgZGE5MTUwX2RldnNbXSA9IHsNCj4gPiAr
CXsNCj4gPiArCQkubmFtZSA9ICJkYTkxNTAtZ3BhZGMiLA0KPiA+ICsJCS5vZl9jb21wYXRpYmxl
ID0gImRsZyxkYTkxNTAtZ3BhZGMiLA0KPiA+ICsJCS5yZXNvdXJjZXMgPSBkYTkxNTBfZ3BhZGNf
cmVzb3VyY2VzLA0KPiA+ICsJCS5udW1fcmVzb3VyY2VzID0gQVJSQVlfU0laRShkYTkxNTBfZ3Bh
ZGNfcmVzb3VyY2VzKSwNCj4gPiArCX0sDQo+ID4gKwl7DQo+ID4gKwkJLm5hbWUgPSAiZGE5MTUw
LWNoYXJnZXIiLA0KPiA+ICsJCS5vZl9jb21wYXRpYmxlID0gImRsZyxkYTkxNTAtY2hhcmdlciIs
DQo+ID4gKwkJLnJlc291cmNlcyA9IGRhOTE1MF9jaGFyZ2VyX3Jlc291cmNlcywNCj4gPiArCQku
bnVtX3Jlc291cmNlcyA9IEFSUkFZX1NJWkUoZGE5MTUwX2NoYXJnZXJfcmVzb3VyY2VzKSwNCj4g
PiArCX0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtpbnQgZGE5MTUwX2RldmljZV9pbml0KHN0cnVj
dCBkYTkxNTAgKmRhOTE1MCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGRhOTE1MF9wZGF0YSAqcGRh
dGEgPSBkYTkxNTAtPmRldi0+cGxhdGZvcm1fZGF0YTsNCj4gDQo+IGRldl9nZXRfcGxhdGRhdGEo
KQ0KDQpSaWdodCBoby4gV2lsbCB1cGRhdGUuDQoNCj4gDQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsN
Cj4gPiArCS8qIEhhbmRsZSBwbGF0Zm9ybSBkYXRhICovDQo+IA0KPiBUaGlzIGNvbW1lbnQgZG9l
c24ndCBhZGQgYW55dGhpbmcgLSB0aGUgY29kZSBpcyBjbGVhciBlbm91Z2guDQoNCk9rIHdpbGwg
c2NyYXAgdGhhdC4NCg0KPiANCj4gPiArCWlmIChwZGF0YSkNCj4gPiArCQlkYTkxNTAtPmlycV9i
YXNlID0gcGRhdGEtPmlycV9iYXNlOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCWRhOTE1MC0+aXJxX2Jh
c2UgPSAtMTsNCj4gDQo+IHBkYXRhID8gcGRhdGEtPmlycV9iYXNlIDogLTE7DQoNClRoaXMgaXMg
bGVmdCB0aGlzIHdheSBhcyBsYXRlciB1cGRhdGVzIHRvIGFkZCBhZGRpdGlvbmFsIGZ1bmN0aW9u
YWxpdHkgd2lsbA0KcmVxdWlyZSBhZGR0aW9uYWwgd29yayB0byBiZSBkb25lIHdpdGggdGhlIHBs
YXRmb3JtIGRhdGEuIFNlZW1lZCBwb2ludGxlc3MNCmNoYW5naW5nIGl0IGhlcmUganVzdCB0byBj
aGFuZ2UgaXQgYmFjayBsYXRlci4NCg0KPiANCj4gPiArCS8qIEluaXQgSVJRcyAqLw0KPiANCj4g
Tm8gbmVlZCBmb3IgdGhlc2UsIHBsZWFzZSBvbmx5IGFkZCBjb21tZW50cyB3aGVyZSB0aGUgY29k
ZSBpcyBjb21wbGV4DQo+IG9yIGNvbnZvbHV0ZWQuDQoNCk9rLCB3aWxsIHJlbW92ZS4NCg0KPiAN
Cj4gPiArCXJldCA9IHJlZ21hcF9hZGRfaXJxX2NoaXAoZGE5MTUwLT5yZWdtYXAsIGRhOTE1MC0+
aXJxLA0KPiA+ICsJCQkJICBJUlFGX1RSSUdHRVJfTE9XIHwgSVJRRl9PTkVTSE9ULA0KPiA+ICsJ
CQkJICBkYTkxNTAtPmlycV9iYXNlLCAmZGE5MTUwX3JlZ21hcF9pcnFfY2hpcCwNCj4gPiArCQkJ
CSAgJmRhOTE1MC0+cmVnbWFwX2lycV9kYXRhKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiANCj4g
J2lmIChyZXQpJyB3aGVyZSBwb3NpdGl2ZSByZXBsaWVzIGFyZW4ndCBwb3NzaWJsZSBvciBhcmUg
ZXJyb3JzLg0KDQpPaywgZmluZS4NCg0KPiANCj4gPiArCQlnb3RvIGVycl9pcnE7DQo+IA0KPiBK
dXN0IHJldHVybiBoZXJlIGFuZCByZW1vdmUgJ2Vycl9pcnEnIGxhYmVsLg0KDQpZZXAsIHdpbGwg
dGlkeSB1cC4NCg0KPiANCj4gPiArCWRhOTE1MC0+aXJxX2Jhc2UgPSByZWdtYXBfaXJxX2NoaXBf
Z2V0X2Jhc2UoZGE5MTUwLT5yZWdtYXBfaXJxX2RhdGEpOw0KPiA+ICsNCj4gPiArCS8qIE1ha2Ug
dGhlIElSUSBsaW5lIGEgd2FrZSBzb3VyY2UgKi8NCj4gPiArCWVuYWJsZV9pcnFfd2FrZShkYTkx
NTAtPmlycSk7DQo+ID4gKw0KPiA+ICsJLyogQWRkIE1GRCBEZXZpY2VzICovDQo+ID4gKwlyZXQg
PSBtZmRfYWRkX2RldmljZXMoZGE5MTUwLT5kZXYsIC0xLCBkYTkxNTBfZGV2cywNCj4gPiArCQkJ
ICAgICAgQVJSQVlfU0laRShkYTkxNTBfZGV2cyksIE5VTEwsDQo+ID4gKwkJCSAgICAgIGRhOTE1
MC0+aXJxX2Jhc2UsIE5VTEwpOw0KPiA+ICsJaWYgKHJldCA8IDApIHsNCj4gPiArCQlkZXZfZXJy
KGRhOTE1MC0+ZGV2LCAiRmFpbGVkIHRvIGFkZCBjaGlsZCBkZXZpY2VzOiAlZFxuIiwgcmV0KTsN
Cj4gPiArCQlnb3RvIGVycl9tZmQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+
ID4gKw0KPiA+ICtlcnJfbWZkOg0KPiA+ICsJcmVnbWFwX2RlbF9pcnFfY2hpcChkYTkxNTAtPmly
cSwgZGE5MTUwLT5yZWdtYXBfaXJxX2RhdGEpOw0KPiA+ICtlcnJfaXJxOg0KPiA+ICsJcmV0dXJu
IHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBkYTkxNTBfZGV2aWNlX2V4aXQoc3RydWN0
IGRhOTE1MCAqZGE5MTUwKQ0KPiA+ICt7DQo+ID4gKwlyZWdtYXBfZGVsX2lycV9jaGlwKGRhOTE1
MC0+aXJxLCBkYTkxNTAtPnJlZ21hcF9pcnFfZGF0YSk7DQo+ID4gKwltZmRfcmVtb3ZlX2Rldmlj
ZXMoZGE5MTUwLT5kZXYpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIGRhOTE1MF9kZXZpY2Vf
c2h1dGRvd24oc3RydWN0IGRhOTE1MCAqZGE5MTUwKQ0KPiA+ICt7DQo+ID4gKwkvKiBNYWtlIHN1
cmUgd2UgaGF2ZSBhIHdha3VwIHNvdXJjZSBmb3IgdGhlIGRldmljZSAqLw0KPiA+ICsJZGE5MTUw
X3NldF9iaXRzKGRhOTE1MCwgREE5MTUwX0NPTkZJR19ELA0KPiA+ICsJCQlEQTkxNTBfV0tVUF9Q
TV9FTl9NQVNLLA0KPiA+ICsJCQlEQTkxNTBfV0tVUF9QTV9FTl9NQVNLKTsNCj4gPiArDQo+ID4g
KwkvKiBTZXQgZGV2aWNlIHRvIERJU0FCTEVEIG1vZGUgKi8NCj4gPiArCWRhOTE1MF9zZXRfYml0
cyhkYTkxNTAsIERBOTE1MF9DT05UUk9MX0MsDQo+ID4gKwkJCURBOTE1MF9ESVNBQkxFX01BU0ss
IERBOTE1MF9ESVNBQkxFX01BU0spOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtNT0RVTEVfREVTQ1JJ
UFRJT04oIk1GRCBDb3JlIERyaXZlciBmb3IgREE5MTUwIik7DQo+ID4gK01PRFVMRV9BVVRIT1Io
IkFkYW0gVGhvbXNvbg0KPiA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlhc2VtaS5jb20iKTsN
Cj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21m
ZC9kYTkxNTAtaTJjLmMgYi9kcml2ZXJzL21mZC9kYTkxNTAtaTJjLmMNCj4gPiBuZXcgZmlsZSBt
b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmEwMjUyNWMNCj4gPiAtLS0gL2Rldi9udWxs
DQo+ID4gKysrIGIvZHJpdmVycy9tZmQvZGE5MTUwLWkyYy5jDQo+ID4gQEAgLTAsMCArMSwxNzYg
QEANCj4gPiArLyoNCj4gPiArICogREE5MTUwIEkyQyBEcml2ZXINCj4gPiArICoNCj4gPiArICog
Q29weXJpZ2h0IChjKSAyMDE0IERpYWxvZyBTZW1pY29uZHVjdG9yDQo+ID4gKyAqDQo+ID4gKyAq
IEF1dGhvcjogQWRhbSBUaG9tc29uIDxBZGFtLlRob21zb24uT3BlbnNvdXJjZUBkaWFzZW1pLmNv
bT4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0DQo+ID4gKyAqIHVuZGVyICB0aGUg
dGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZQ0KPiA+ICsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAy
IG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXINCj4gPiArICogb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+
DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Bs
YXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+ID4gKyNpbmNs
dWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gPiAr
DQo+IA0KPiBSZW1vdmUgdGhpcyBsaW5lLg0KDQpPay4NCg0KPiANCj4gPiArI2luY2x1ZGUgPGxp
bnV4L21mZC9kYTkxNTAvY29yZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbWZkL2RhOTE1MC9y
ZWdpc3RlcnMuaD4NCj4gPiArDQo+ID4gK3N0YXRpYyBib29sIGRhOTE1MF92b2xhdGlsZV9yZWco
c3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcmVnKQ0KPiA+ICt7DQo+ID4gKwlzd2l0
Y2ggKHJlZykgew0KPiA+ICsJY2FzZSBEQTkxNTBfUEFHRV9DT046DQo+ID4gKwljYXNlIERBOTE1
MF9TVEFUVVNfQToNCj4gPiArCWNhc2UgREE5MTUwX1NUQVRVU19COg0KPiA+ICsJY2FzZSBEQTkx
NTBfU1RBVFVTX0M6DQo+ID4gKwljYXNlIERBOTE1MF9TVEFUVVNfRDoNCj4gPiArCWNhc2UgREE5
MTUwX1NUQVRVU19FOg0KPiA+ICsJY2FzZSBEQTkxNTBfU1RBVFVTX0Y6DQo+ID4gKwljYXNlIERB
OTE1MF9TVEFUVVNfRzoNCj4gPiArCWNhc2UgREE5MTUwX1NUQVRVU19IOg0KPiA+ICsJY2FzZSBE
QTkxNTBfU1RBVFVTX0k6DQo+ID4gKwljYXNlIERBOTE1MF9TVEFUVVNfSjoNCj4gPiArCWNhc2Ug
REE5MTUwX1NUQVRVU19LOg0KPiA+ICsJY2FzZSBEQTkxNTBfU1RBVFVTX0w6DQo+ID4gKwljYXNl
IERBOTE1MF9TVEFUVVNfTjoNCj4gPiArCWNhc2UgREE5MTUwX0ZBVUxUX0xPR19BOg0KPiA+ICsJ
Y2FzZSBEQTkxNTBfRkFVTFRfTE9HX0I6DQo+ID4gKwljYXNlIERBOTE1MF9FVkVOVF9FOg0KPiA+
ICsJY2FzZSBEQTkxNTBfRVZFTlRfRjoNCj4gPiArCWNhc2UgREE5MTUwX0VWRU5UX0c6DQo+ID4g
KwljYXNlIERBOTE1MF9FVkVOVF9IOg0KPiA+ICsJY2FzZSBEQTkxNTBfQ09OVFJPTF9COg0KPiA+
ICsJY2FzZSBEQTkxNTBfQ09OVFJPTF9DOg0KPiA+ICsJY2FzZSBEQTkxNTBfR1BBRENfTUFOOg0K
PiA+ICsJY2FzZSBEQTkxNTBfR1BBRENfUkVTX0E6DQo+ID4gKwljYXNlIERBOTE1MF9HUEFEQ19S
RVNfQjoNCj4gPiArCWNhc2UgREE5MTUwX0FERVRWQl9DRkdfQzoNCj4gPiArCWNhc2UgREE5MTUw
X0FERVREX1NUQVQ6DQo+ID4gKwljYXNlIERBOTE1MF9BREVUX0NNUFNUQVQ6DQo+ID4gKwljYXNl
IERBOTE1MF9BREVUX0NUUkxfQToNCj4gPiArCWNhc2UgREE5MTUwX1BQUl9UQ1RSX0I6DQo+ID4g
KwljYXNlIERBOTE1MF9DT1JFQlRMRF9TVEFUX0E6DQo+ID4gKwljYXNlIERBOTE1MF9DT1JFX0RB
VEFfQToNCj4gPiArCWNhc2UgREE5MTUwX0NPUkVfREFUQV9COg0KPiA+ICsJY2FzZSBEQTkxNTBf
Q09SRV9EQVRBX0M6DQo+ID4gKwljYXNlIERBOTE1MF9DT1JFX0RBVEFfRDoNCj4gPiArCWNhc2Ug
REE5MTUwX0NPUkUyV0lSRV9TVEFUX0E6DQo+ID4gKwljYXNlIERBOTE1MF9GV19DVFJMX0M6DQo+
ID4gKwljYXNlIERBOTE1MF9GR19DVFJMX0I6DQo+ID4gKwljYXNlIERBOTE1MF9GV19DVFJMX0I6
DQo+ID4gKwljYXNlIERBOTE1MF9HUEFEQ19DTUFOOg0KPiA+ICsJY2FzZSBEQTkxNTBfR1BBRENf
Q1JFU19BOg0KPiA+ICsJY2FzZSBEQTkxNTBfR1BBRENfQ1JFU19COg0KPiA+ICsJY2FzZSBEQTkx
NTBfQ0NfSUNIR19SRVNfQToNCj4gPiArCWNhc2UgREE5MTUwX0NDX0lDSEdfUkVTX0I6DQo+ID4g
KwljYXNlIERBOTE1MF9DQ19JQVZHX1JFU19BOg0KPiA+ICsJY2FzZSBEQTkxNTBfQ0NfSUFWR19S
RVNfQjoNCj4gPiArCWNhc2UgREE5MTUwX1RBVVhfQ1RSTF9BOg0KPiA+ICsJY2FzZSBEQTkxNTBf
VEFVWF9WQUxVRV9IOg0KPiA+ICsJY2FzZSBEQTkxNTBfVEFVWF9WQUxVRV9MOg0KPiA+ICsJY2Fz
ZSBEQTkxNTBfVEJBVF9SRVNfQToNCj4gPiArCWNhc2UgREE5MTUwX1RCQVRfUkVTX0I6DQo+ID4g
KwkJcmV0dXJuIHRydWU7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCXJldHVybiBmYWxzZTsNCj4g
PiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfcmFu
Z2VfY2ZnIGRhOTE1MF9yYW5nZV9jZmdbXSA9IHsNCj4gPiArCXsNCj4gPiArCQkucmFuZ2VfbWlu
ID0gREE5MTUwX1BBR0VfQ09OLA0KPiA+ICsJCS5yYW5nZV9tYXggPSBEQTkxNTBfVEJBVF9SRVNf
QiwNCj4gPiArCQkuc2VsZWN0b3JfcmVnID0gREE5MTUwX1BBR0VfQ09OLA0KPiA+ICsJCS5zZWxl
Y3Rvcl9tYXNrID0gREE5MTUwX0kyQ19QQUdFX01BU0ssDQo+ID4gKwkJLnNlbGVjdG9yX3NoaWZ0
ID0gREE5MTUwX0kyQ19QQUdFX1NISUZULA0KPiA+ICsJCS53aW5kb3dfc3RhcnQgPSAwLA0KPiA+
ICsJCS53aW5kb3dfbGVuID0gMjU2LA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0
YXRpYyBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBkYTkxNTBfcmVnbWFwX2NvbmZpZyA9IHsNCj4gPiAr
CS5yZWdfYml0cyA9IDgsDQo+ID4gKwkudmFsX2JpdHMgPSA4LA0KPiA+ICsJLnJhbmdlcyA9IGRh
OTE1MF9yYW5nZV9jZmcsDQo+ID4gKwkubnVtX3JhbmdlcyA9IEFSUkFZX1NJWkUoZGE5MTUwX3Jh
bmdlX2NmZyksDQo+ID4gKwkubWF4X3JlZ2lzdGVyID0gREE5MTUwX1RCQVRfUkVTX0IsDQo+ID4g
Kw0KPiA+ICsJLmNhY2hlX3R5cGUgPSBSRUdDQUNIRV9SQlRSRUUsDQo+ID4gKw0KPiA+ICsJLnZv
bGF0aWxlX3JlZyA9IGRhOTE1MF92b2xhdGlsZV9yZWcsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtz
dGF0aWMgaW50IGRhOTE1MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiA+ICsJ
CQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBk
YTkxNTAgKmRhOTE1MDsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJZGE5MTUwID0gZGV2
bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKHN0cnVjdCBkYTkxNTApLCBHRlBfS0VSTkVM
KTsNCj4gDQo+IHNpemVvZigqZGE5MTUwKQ0KDQpTYW1lIGRpZmZlcmVuY2UsIGJ1dCBvay4NCg0K
PiANCj4gPiArCWlmIChkYTkxNTAgPT0gTlVMTCkNCj4gDQo+IGlmICghZGE5MTUwKQ0KDQpSaWdo
dCwgZmluZS4NCg0KPiANCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ICdcbicNCg0KUmln
aHQsIGZpbmUuDQoNCj4gDQo+ID4gKwlkYTkxNTAtPmRldiA9ICZjbGllbnQtPmRldjsNCj4gPiAr
CWRhOTE1MC0+aXJxID0gY2xpZW50LT5pcnE7DQo+ID4gKwlpMmNfc2V0X2NsaWVudGRhdGEoY2xp
ZW50LCBkYTkxNTApOw0KPiA+ICsJZGV2X3NldF9kcnZkYXRhKGRhOTE1MC0+ZGV2LCBkYTkxNTAp
Ow0KPiANCj4gV2h5IGRvIHlvdSBuZWVkIHRoaXMgaW4gYm90aCBsb2NhdGlvbnM/DQo+IA0KDQpE
b24ndC4gV2lsbCByZW1vdmUgYWNjb3JkaW5nbHkuDQoNCj4gPiArCWRhOTE1MC0+cmVnbWFwID0g
ZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmZGE5MTUwX3JlZ21hcF9jb25maWcpOw0KPiA+
ICsJaWYgKElTX0VSUihkYTkxNTAtPnJlZ21hcCkpIHsNCj4gPiArCQlyZXQgPSBQVFJfRVJSKGRh
OTE1MC0+cmVnbWFwKTsNCj4gPiArCQlkZXZfZXJyKGRhOTE1MC0+ZGV2LCAiRmFpbGVkIHRvIGFs
bG9jYXRlIHJlZ2lzdGVyIG1hcDogJWRcbiIsDQo+ID4gKwkJCXJldCk7DQo+ID4gKwkJcmV0dXJu
IHJldDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gZGE5MTUwX2RldmljZV9pbml0KGRh
OTE1MCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZGE5MTUwX3JlbW92ZShzdHJ1
Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZGE5MTUwICpkYTkx
NTAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4gPiArDQo+ID4gKwlkYTkxNTBfZGV2
aWNlX2V4aXQoZGE5MTUwKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsN
Cj4gPiArc3RhdGljIHZvaWQgZGE5MTUwX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll
bnQpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkYTkxNTAgKmRhOTE1MCA9IGkyY19nZXRfY2xpZW50
ZGF0YShjbGllbnQpOw0KPiA+ICsNCj4gPiArCWRhOTE1MF9kZXZpY2Vfc2h1dGRvd24oZGE5MTUw
KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lk
IGRhOTE1MF9pMmNfaWRbXSA9IHsNCj4gPiArCXsgImRhOTE1MCIsIDAgfSwNCj4gDQo+IEkgZG9u
J3Qgc2VlIHRoZSAuaWQgcGFyYW1ldGVyIGJlaW5nIHVzZWQsIGp1c3QgbGVhdmUgaXQgYmxhbmsu
DQoNCk9rLCBubyBwcm9ibGVtLg0KDQo+IA0KPiA+ICsJeyB9DQo+ID4gK307DQo+ID4gK01PRFVM
RV9ERVZJQ0VfVEFCTEUoaTJjLCBkYTkxNTBfaTJjX2lkKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBj
b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRhOTE1MF9vZl9tYXRjaFtdID0gew0KPiA+ICsJeyAu
Y29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwIiwgfSwNCj4gPiArCXsgfQ0KPiA+ICt9Ow0KPiANCj4g
TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgLi4uKQ0KPiANCj4gPiArc3RhdGljIHN0cnVjdCBpMmNf
ZHJpdmVyIGRhOTE1MF9kcml2ZXIgPSB7DQo+ID4gKwkuZHJpdmVyCT0gew0KPiA+ICsJCS5uYW1l
CT0gImRhOTE1MCIsDQo+ID4gKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsDQo+IA0KPiBZb3UgY2Fu
IHJlbW92ZSB0aGlzIGxpbmUsIGl0J3MgdGFrZW4gY2FyZSBvZiBmb3IgeW91IGVsc2V3aGVyZS4N
Cg0KWWVzLCB3aWxsIHJlbW92ZS4NCg0KPiANCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9t
YXRjaF9wdHIoZGE5MTUwX29mX21hdGNoKSwNCj4gPiArCX0sDQo+ID4gKwkucHJvYmUJCT0gZGE5
MTUwX3Byb2JlLA0KPiA+ICsJLnJlbW92ZQkJPSBkYTkxNTBfcmVtb3ZlLA0KPiA+ICsJLnNodXRk
b3duCT0gZGE5MTUwX3NodXRkb3duLA0KPiA+ICsJLmlkX3RhYmxlCT0gZGE5MTUwX2kyY19pZCwN
Cj4gPiArfTsNCj4gPiArDQo+ID4gK21vZHVsZV9pMmNfZHJpdmVyKGRhOTE1MF9kcml2ZXIpOw0K
PiA+ICsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJJMkMgRHJpdmVyIGZvciBEQTkxNTAiKTsN
Cj4gPiArTU9EVUxFX0FVVEhPUigiQWRhbSBUaG9tc29uDQo+IDxBZGFtLlRob21zb24uT3BlbnNv
dXJjZUBkaWFzZW1pLmNvbSIpOw0KPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+ID4gZGlm
ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL2RhOTE1MC9jb3JlLmggYi9pbmNsdWRlL2xpbnV4
L21mZC9kYTkxNTAvY29yZS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw
MDAwMDAwLi5kMjNjNTAwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvbGlu
dXgvbWZkL2RhOTE1MC9jb3JlLmgNCj4gPiBAQCAtMCwwICsxLDgwIEBADQo+ID4gKy8qDQo+ID4g
KyAqIERBOTE1MCBNRkQgRHJpdmVyIC0gQ29yZSBEYXRhDQo+ID4gKyAqDQo+ID4gKyAqIENvcHly
aWdodCAoYykgMjAxNCBEaWFsb2cgU2VtaWNvbmR1Y3Rvcg0KPiA+ICsgKg0KPiA+ICsgKiBBdXRo
b3I6IEFkYW0gVGhvbXNvbiA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlhc2VtaS5jb20+DQo+
ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdA0KPiA+ICsgKiB1bmRlciAgdGhlIHRlcm1z
IG9mICB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUN
Cj4gPiArICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0
aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyDQo+ID4gKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX0RBOTE1MF9DT1JFX0gNCj4gPiAr
I2RlZmluZSBfX0RBOTE1MF9DT1JFX0gNCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZp
Y2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPiANCj4gV2hhdCdzIHRoaXMgdXNl
ZCBmb3I/DQo+IA0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ID4gKyNpbmNs
dWRlIDxsaW51eC9yZWdtYXAuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+DQo+ID4g
Kw0KPiA+ICsvKiBJMkMgYWRkcmVzcyBwYWdpbmcgKi8NCj4gPiArI2RlZmluZSBEQTkxNTBfUkVH
X1BBR0VfU0hJRlQJOA0KPiA+ICsjZGVmaW5lIERBOTE1MF9SRUdfUEFHRV9NQVNLCTB4RkYNCj4g
PiArDQo+ID4gKy8qIElSUXMgKi8NCj4gPiArI2RlZmluZSBEQTkxNTBfTlVNX0lSUV9SRUdTCTQN
Cj4gPiArI2RlZmluZSBEQTkxNTBfSVJRX1ZCVVMJCTANCj4gPiArI2RlZmluZSBEQTkxNTBfSVJR
X0NIRwkJMQ0KPiA+ICsjZGVmaW5lIERBOTE1MF9JUlFfVENMQVNTCTINCj4gPiArI2RlZmluZSBE
QTkxNTBfSVJRX1RKVU5DCTMNCj4gPiArI2RlZmluZSBEQTkxNTBfSVJRX1ZGQVVMVAk0DQo+ID4g
KyNkZWZpbmUgREE5MTUwX0lSUV9DT05GCQk1DQo+ID4gKyNkZWZpbmUgREE5MTUwX0lSUV9EQVQJ
CTYNCj4gPiArI2RlZmluZSBEQTkxNTBfSVJRX0RUWVBFCTcNCj4gPiArI2RlZmluZSBEQTkxNTBf
SVJRX0lECQk4DQo+ID4gKyNkZWZpbmUgREE5MTUwX0lSUV9BRFAJCTkNCj4gPiArI2RlZmluZSBE
QTkxNTBfSVJRX1NFU1NfRU5ECTEwDQo+ID4gKyNkZWZpbmUgREE5MTUwX0lSUV9TRVNTX1ZMRAkx
MQ0KPiA+ICsjZGVmaW5lIERBOTE1MF9JUlFfRkcJCTEyDQo+ID4gKyNkZWZpbmUgREE5MTUwX0lS
UV9HUAkJMTMNCj4gPiArI2RlZmluZSBEQTkxNTBfSVJRX1RCQVQJCTE0DQo+ID4gKyNkZWZpbmUg
REE5MTUwX0lSUV9HUElPQQkxNQ0KPiA+ICsjZGVmaW5lIERBOTE1MF9JUlFfR1BJT0IJMTYNCj4g
PiArI2RlZmluZSBEQTkxNTBfSVJRX0dQSU9DCTE3DQo+ID4gKyNkZWZpbmUgREE5MTUwX0lSUV9H
UElPRAkxOA0KPiA+ICsjZGVmaW5lIERBOTE1MF9JUlFfR1BBREMJMTkNCj4gPiArI2RlZmluZSBE
QTkxNTBfSVJRX1dLVVAJCTIwDQo+ID4gKw0KPiA+ICtzdHJ1Y3QgZGE5MTUwIHsNCj4gPiArCXN0
cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArDQo+ID4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7DQo+
ID4gKw0KPiANCj4gV2h5IHRoZSAnXG4ncz8NCg0KUGVyc29uYWwgcHJlZmVyZW5jZSwgYnV0IHdp
bGwgcmVtb3ZlLg0KDQo+IA0KPiA+ICsJc3RydWN0IHJlZ21hcF9pcnFfY2hpcF9kYXRhICpyZWdt
YXBfaXJxX2RhdGE7DQo+ID4gKwlpbnQgaXJxOw0KPiA+ICsJaW50IGlycV9iYXNlOw0KPiA+ICt9
Ow0KPiA+ICsNCj4gPiArLyogRGV2aWNlIEkvTyAqLw0KPiA+ICt1OCBkYTkxNTBfcmVnX3JlYWQo
c3RydWN0IGRhOTE1MCAqZGE5MTUwLCB1MTYgcmVnKTsNCj4gPiAraW50IGRhOTE1MF9yZWdfd3Jp
dGUoc3RydWN0IGRhOTE1MCAqZGE5MTUwLCB1MTYgcmVnLCB1OCB2YWwpOw0KPiA+ICtpbnQgZGE5
MTUwX3NldF9iaXRzKHN0cnVjdCBkYTkxNTAgKmRhOTE1MCwgdTE2IHJlZywgdTggbWFzaywgdTgg
dmFsKTsNCj4gPiArDQo+ID4gK2ludCBkYTkxNTBfYnVsa19yZWFkKHN0cnVjdCBkYTkxNTAgKmRh
OTE1MCwgdTE2IHJlZywgaW50IGNvdW50LCB1OCAqYnVmKTsNCj4gPiAraW50IGRhOTE1MF9idWxr
X3dyaXRlKHN0cnVjdCBkYTkxNTAgKmRhOTE1MCwgdTE2IHJlZywgaW50IGNvdW50LCBjb25zdCB1
OCAqYnVmKTsNCj4gPiArDQo+ID4gKy8qIElSUSBoZWxwZXIgZnVuY3Rpb25zICovDQo+ID4gK2lu
dCBkYTkxNTBfcmVnaXN0ZXJfaXJxKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQg
KmRldl9pZCwNCj4gPiArCQkJaXJxX2hhbmRsZXJfdCBoYW5kbGVyLCBjb25zdCBjaGFyICpuYW1l
KTsNCj4gPiArdm9pZCBkYTkxNTBfcmVsZWFzZV9pcnEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq
cGRldiwgdm9pZCAqZGV2X2lkLA0KPiA+ICsJCQljb25zdCBjaGFyICpuYW1lKTsNCj4gDQo+IEkn
bSBub3Qgc3VyZSB3aHkgYW55IG9mIHRoZXNlIDcgZnVuY3Rpb25zIGFyZSByZXF1aXJlZC4NCg0K
Q2xhcmlmaWVkIG15IGludGVudGlvbnMgaW4gcHJldmlvdXMgY29tbWVudHMuDQoNCj4gDQo+ID4g
Ky8qIEluaXQvRXhpdCAqLw0KPiA+ICtpbnQgZGE5MTUwX2RldmljZV9pbml0KHN0cnVjdCBkYTkx
NTAgKmRhOTE1MCk7DQo+ID4gK3ZvaWQgZGE5MTUwX2RldmljZV9leGl0KHN0cnVjdCBkYTkxNTAg
KmRhOTE1MCk7DQo+ID4gK3ZvaWQgZGE5MTUwX2RldmljZV9zaHV0ZG93bihzdHJ1Y3QgZGE5MTUw
ICpkYTkxNTApOw0KPiA+ICsNCj4gPiArI2VuZGlmIC8qIF9fREE5MTUwX0NPUkVfSCAqLw0KPiA+
IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21mZC9kYTkxNTAvcGRhdGEuaCBiL2luY2x1ZGUv
bGludXgvbWZkL2RhOTE1MC9wZGF0YS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp
bmRleCAwMDAwMDAwLi5lMmIzN2YxDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1
ZGUvbGludXgvbWZkL2RhOTE1MC9wZGF0YS5oDQo+ID4gQEAgLTAsMCArMSwyMSBAQA0KPiA+ICsv
Kg0KPiA+ICsgKiBEQTkxNTAgTUZEIERyaXZlciAtIFBsYXRmb3JtIERhdGENCj4gPiArICoNCj4g
PiArICogQ29weXJpZ2h0IChjKSAyMDE0IERpYWxvZyBTZW1pY29uZHVjdG9yDQo+ID4gKyAqDQo+
ID4gKyAqIEF1dGhvcjogQWRhbSBUaG9tc29uIDxBZGFtLlRob21zb24uT3BlbnNvdXJjZUBkaWFz
ZW1pLmNvbT4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0DQo+ID4gKyAqIHVuZGVy
ICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZQ0KPiA+ICsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXINCj4gPiArICogb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fREE5MTUwX1BE
QVRBX0gNCj4gPiArI2RlZmluZSBfX0RBOTE1MF9QREFUQV9IDQo+ID4gKw0KPiA+ICtzdHJ1Y3Qg
ZGE5MTUwX3BkYXRhIHsNCj4gPiArCWludCBpcnFfYmFzZTsNCj4gPiArfTsNCj4gDQo+IEp1c3Qg
cHV0IHRoaXMgaW4gY29yZS5oIGFuZCBkbyBhd2F5IHdpdGh0IHRoaXMgaGVhZGVyIGZpbGUuDQoN
ClRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBJIHdpbGwgYWRkIG1vcmUgcGxhdGZvcm0gZGF0
YSBpdGVtcyBsYXRlciB3aXRoDQpzdWJzZXF1ZW50IHN1Ym1pc3Npb25zIGZvciBhZGRpdGlvbmFs
IGZlYXR1cmVzLiBJdCBmZWx0IGNsZWFuZXIgdG8gc2VwYXJhdGUgb3V0DQp0aGVzZSBzdHJ1Y3R1
cmVzIHRoYW4gdGhyb3cgaXQgaW4gdGhlIGNvcmUuaCBoZWFkZXIuIEhvd2V2ZXIgaWYgaXQncyBn
b2luZyB0bw0KYmUgYSBwcm9ibGVtIEknbGwgZm9sZCB0aGlzIGludG8gY29yZS5oDQoNCj4gDQo+
ID4gKyNlbmRpZiAvKiBfX0RBOTE1MF9QREFUQV9IICovDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1
ZGUvbGludXgvbWZkL2RhOTE1MC9yZWdpc3RlcnMuaA0KPiBiL2luY2x1ZGUvbGludXgvbWZkL2Rh
OTE1MC9yZWdpc3RlcnMuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw
MDAwMC4uZWY0ODI2ZA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4
L21mZC9kYTkxNTAvcmVnaXN0ZXJzLmgNCj4gPiBAQCAtMCwwICsxLDExNTMgQEANCj4gPiArLyoN
Cj4gPiArICogREE5MTUwIE1GRCBEcml2ZXIgLSBSZWdpc3RlcnMNCj4gPiArICoNCj4gPiArICog
Q29weXJpZ2h0IChjKSAyMDE0IERpYWxvZyBTZW1pY29uZHVjdG9yDQo+ID4gKyAqDQo+ID4gKyAq
IEF1dGhvcjogQWRhbSBUaG9tc29uIDxBZGFtLlRob21zb24uT3BlbnNvdXJjZUBkaWFzZW1pLmNv
bT4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0DQo+ID4gKyAqIHVuZGVyICB0aGUg
dGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZQ0KPiA+ICsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAy
IG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXINCj4gPiArICogb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fREE5MTUwX1JFR0lTVEVS
U19IDQo+ID4gKyNkZWZpbmUgX19EQTkxNTBfUkVHSVNURVJTX0gNCj4gPiArDQo+ID4gKy8qIFJl
Z2lzdGVycyAqLw0KPiANCj4gWy4uLl0NCj4gDQo+ID4gKy8qIERBOTE1MF9DT05UUk9MX0EgPSAw
eDBFNSAqLw0KPiA+ICsjZGVmaW5lIERBOTE1MF9WREQzM19TTF9TSElGVAkJCTANCj4gPiArI2Rl
ZmluZSBEQTkxNTBfVkREMzNfU0xfTUFTSwkJCSgweDAxIDw8IDApDQo+ID4gKyNkZWZpbmUgREE5
MTUwX1ZERDMzX0xQTV9TSElGVAkJCTENCj4gPiArI2RlZmluZSBEQTkxNTBfVkREMzNfTFBNX01B
U0sJCQkoMHgwMyA8PCAxKQ0KPiA+ICsjZGVmaW5lIERBOTE1MF9WREQzM19FTl9TSElGVAkJCTMN
Cj4gPiArI2RlZmluZSBEQTkxNTBfVkREMzNfRU5fTUFTSwkJCSgweDAxIDw8IDMpDQo+ID4gKyNk
ZWZpbmUgREE5MTUwX0dQSV9MUE1fU0hJRlQJCQk2DQo+ID4gKyNkZWZpbmUgREE5MTUwX0dQSV9M
UE1fTUFTSwkJCSgweDAxIDw8IDYpDQo+ID4gKyNkZWZpbmUgREE5MTUwX1BNX0lGX0xQTV9TSElG
VAkJCTcNCj4gPiArI2RlZmluZSBEQTkxNTBfUE1fSUZfTFBNX01BU0sJCQkoMHgwMSA8PCA3KQ0K
PiA+ICsNCj4gPiArLyogREE5MTUwX0NPTlRST0xfQiA9IDB4MEU2ICovDQo+ID4gKyNkZWZpbmUg
REE5MTUwX0xQTV9TSElGVAkJCTANCj4gPiArI2RlZmluZSBEQTkxNTBfTFBNX01BU0sJCQkJKDB4
MDEgPDwgMCkNCj4gPiArI2RlZmluZSBEQTkxNTBfUkVTRVRfU0hJRlQJCQkxDQo+ID4gKyNkZWZp
bmUgREE5MTUwX1JFU0VUX01BU0sJCQkoMHgwMSA8PCAxKQ0KPiA+ICsjZGVmaW5lIERBOTE1MF9S
RVNFVF9VU1JDT05GX0VOX1NISUZUCQkyDQo+ID4gKyNkZWZpbmUgREE5MTUwX1JFU0VUX1VTUkNP
TkZfRU5fTUFTSwkJKDB4MDEgPDwgMikNCj4gPiArDQo+ID4gKy8qIERBOTE1MF9DT05UUk9MX0Mg
PSAweDBFNyAqLw0KPiA+ICsjZGVmaW5lIERBOTE1MF9ESVNBQkxFX1NISUZUCQkJMA0KPiA+ICsj
ZGVmaW5lIERBOTE1MF9ESVNBQkxFX01BU0sJCQkoMHgwMSA8PCAwKQ0KPiANCj4gVXNlIEJJVCgp
IGZvciBhbGwgb2YgdGhlc2UgKDEgPDwgWCkgbWFjcm9zLg0KDQpPSywgd2lsbCBkby4NCg0KPiAN
Cj4gWy4uLl0NCj4gDQo+IC0tDQo+IExlZSBKb25lcw0KPiBMaW5hcm8gU1RNaWNyb2VsZWN0cm9u
aWNzIExhbmRpbmcgVGVhbSBMZWFkDQo+IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3
YXJlIGZvciBBUk0gU29Dcw0KPiBGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBC
bG9nDQo=