RE: [PATCH v2 3/7] iio: Add support for DA9150 GPADC

Opensource [Adam Thomson]
2014-09-09T10:53:02Z

T24gQXVndXN0IDMwLCAyMDE0IDIxOjAxLCBKb25hdGhhbiBDYW1lcm9uIHdyb3RlOg0KDQo+IE9u
IDI4LzA4LzE0IDEyOjI4LCBQZXRlciBNZWVyd2FsZCB3cm90ZToNCj4gPg0KPiA+IHNvbWUgbWlu
b3IgY29tbWVudHMgaW5saW5lDQo+IEEgZmV3IG1vcmUgZnJvbSBtZSArIG1ha2Ugc3VyZSBhbGwg
eW91ciB1bml0cyBtYXRjaCB0aGUgQUJJIGFuZCBpbg0KPiBwYXJ0aWN1bGFyIHRoYXQgZXZlcnl0
aGluZyB5b3UgdXNlIGlzIGRvY3VtZW50ZWQgaW4NCj4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu
Zy9zeWZzLWJ1cy1paW8uICBTb21lIHN0dWZmIHRoYXQgb25seQ0KPiBleGlzdHMgaW4gc3RhZ2lu
ZyBkcml2ZXJzIGlzbid0IGRvY3VtZW50ZWQgaW4gdGhlcmUgYXMgeWV0DQo+IChjdXJyZW50IG1l
YXN1cmVtZW50cyBmb3IgZXhhbXBsZSkgc28gdGhlIGRvY3Mgd2lsbCBuZWVkIGFkZGl0aW9ucw0K
PiBhbG9uZ3NpZGUgdGhpcyBkcml2ZXIuDQo+IA0KPiBUaGFua3MsDQo+IA0KPiBKb25hdGhhbg0K
PiA+DQo+ID4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEQTkxNTAgQ2hhcmdlciAmIEZ1
ZWwtR2F1Z2UgSUMgR1BBREMuDQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEFkYW0gVGhvbXNv
biA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlhc2VtaS5jb20+DQo+ID4+IC0tLQ0KPiA+PiAg
ZHJpdmVycy9paW8vYWRjL0tjb25maWcgICAgICAgIHwgICA5ICsNCj4gPj4gIGRyaXZlcnMvaWlv
L2FkYy9NYWtlZmlsZSAgICAgICB8ICAgMSArDQo+ID4+ICBkcml2ZXJzL2lpby9hZGMvZGE5MTUw
LWdwYWRjLmMgfCA0MzANCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysNCj4gPj4gIDMgZmlsZXMgY2hhbmdlZCwgNDQwIGluc2VydGlvbnMoKykNCj4gPj4gIGNyZWF0
ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lpby9hZGMvZGE5MTUwLWdwYWRjLmMNCj4gPj4NCj4gPj4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9LY29uZmlnIGIvZHJpdmVycy9paW8vYWRjL0tj
b25maWcNCj4gPj4gaW5kZXggMTFiMDQ4YS4uODA0MTM0NyAxMDA2NDQNCj4gPj4gLS0tIGEvZHJp
dmVycy9paW8vYWRjL0tjb25maWcNCj4gPj4gKysrIGIvZHJpdmVycy9paW8vYWRjL0tjb25maWcN
Cj4gPj4gQEAgLTEyNyw2ICsxMjcsMTUgQEAgY29uZmlnIEFUOTFfQURDDQo+ID4+ICAJaGVscA0K
PiA+PiAgCSAgU2F5IHllcyBoZXJlIHRvIGJ1aWxkIHN1cHBvcnQgZm9yIEF0bWVsIEFUOTEgQURD
Lg0KPiA+Pg0KPiA+PiArY29uZmlnIERBOTE1MF9HUEFEQw0KPiA+PiArCXRyaXN0YXRlICJEaWFs
b2cgREE5MTUwIEdQQURDIGRyaXZlciBzdXBwb3J0Ig0KPiA+PiArCWRlcGVuZHMgb24gTUZEX0RB
OTE1MA0KPiA+PiArCWhlbHANCj4gPj4gKwkgIFNheSB5ZXMgaGVyZSB0byBidWlsZCBzdXBwb3J0
IGZvciBEaWFsb2cgREE5MTUwIEdQQURDLg0KPiA+PiArDQo+ID4+ICsJICBUaGlzIGRyaXZlciBj
YW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgY2hvc2VuLCB0aGUgbW9kdWxlIG5hbWUN
Cj4gPj4gKwkgIHdpbGwgYmUgZGE5MTUwLWdwYWRjLg0KPiA+PiArDQo+ID4+ICBjb25maWcgRVhZ
Tk9TX0FEQw0KPiA+PiAgCXRyaXN0YXRlICJFeHlub3MgQURDIGRyaXZlciBzdXBwb3J0Ig0KPiA+
PiAgCWRlcGVuZHMgb24gQVJDSF9FWFlOT1MgfHwgKE9GICYmIENPTVBJTEVfVEVTVCkNCj4gPj4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9NYWtlZmlsZSBiL2RyaXZlcnMvaWlvL2FkYy9N
YWtlZmlsZQ0KPiA+PiBpbmRleCBhZDgxYjUxLi40ODQxM2QyIDEwMDY0NA0KPiA+PiAtLS0gYS9k
cml2ZXJzL2lpby9hZGMvTWFrZWZpbGUNCj4gPj4gKysrIGIvZHJpdmVycy9paW8vYWRjL01ha2Vm
aWxlDQo+ID4+IEBAIC0xNCw2ICsxNCw3IEBAIG9iai0kKENPTkZJR19BRDc3OTMpICs9IGFkNzc5
My5vDQo+ID4+ICBvYmotJChDT05GSUdfQUQ3ODg3KSArPSBhZDc4ODcubw0KPiA+PiAgb2JqLSQo
Q09ORklHX0FENzk5WCkgKz0gYWQ3OTl4Lm8NCj4gPj4gIG9iai0kKENPTkZJR19BVDkxX0FEQykg
Kz0gYXQ5MV9hZGMubw0KPiA+PiArb2JqLSQoQ09ORklHX0RBOTE1MF9HUEFEQykgKz0gZGE5MTUw
LWdwYWRjLm8NCj4gPj4gIG9iai0kKENPTkZJR19FWFlOT1NfQURDKSArPSBleHlub3NfYWRjLm8N
Cj4gPj4gIG9iai0kKENPTkZJR19MUDg3ODhfQURDKSArPSBscDg3ODhfYWRjLm8NCj4gPj4gIG9i
ai0kKENPTkZJR19NQVgxMDI3KSArPSBtYXgxMDI3Lm8NCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZl
cnMvaWlvL2FkYy9kYTkxNTAtZ3BhZGMuYyBiL2RyaXZlcnMvaWlvL2FkYy9kYTkxNTAtZ3BhZGMu
Yw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwLi4yMWEyMWE5
DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvZHJpdmVycy9paW8vYWRjL2RhOTE1MC1n
cGFkYy5jDQo+ID4+IEBAIC0wLDAgKzEsNDMwIEBADQo+ID4+ICsvKg0KPiA+PiArICogREE5MTUw
IEdQQURDIERyaXZlcg0KPiA+PiArICoNCj4gPj4gKyAqIENvcHlyaWdodCAoYykgMjAxNCBEaWFs
b2cgU2VtaWNvbmR1Y3Rvcg0KPiA+PiArICoNCj4gPj4gKyAqIEF1dGhvcjogQWRhbSBUaG9tc29u
IDxBZGFtLlRob21zb24uT3BlbnNvdXJjZUBkaWFzZW1pLmNvbT4NCj4gPj4gKyAqDQo+ID4+ICsg
KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0
IGFuZC9vciBtb2RpZnkgaXQNCj4gPj4gKyAqIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUg
R2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KPiA+PiArICogRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2Us
IG9yIChhdCB5b3VyDQo+ID4+ICsgKiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPiA+PiAr
ICovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPj4gKyNpbmNs
dWRlIDxsaW51eC9zbGFiLmg+DQo+ID4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4+
ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4+ICsjaW5jbHVkZSA8bGlu
dXgvaW50ZXJydXB0Lmg+DQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvZGE5MTUw
L2NvcmUuaD4NCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9tZmQvZGE5MTUwL3BkYXRhLmg+DQo+ID4+
ICsjaW5jbHVkZSA8bGludXgvbWZkL2RhOTE1MC9yZWdpc3RlcnMuaD4NCj4gPj4gKw0KPiA+PiAr
I2luY2x1ZGUgPGxpbnV4L2lpby9paW8uaD4NCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9paW8vbWFj
aGluZS5oPg0KPiA+PiArI2luY2x1ZGUgPGxpbnV4L2lpby9kcml2ZXIuaD4NCj4gPj4gKw0KPiA+
PiArDQo+ID4+ICsvKiBDaGFubmVscyAqLw0KPiA+PiArZW51bSBkYTkxNTBfZ3BhZGNfaHdfY2hh
bm5lbCB7DQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fR1BJT0FfMlYgPSAwLA0KPiA+PiAr
CURBOTE1MF9HUEFEQ19IV19DSEFOX0dQSU9BXzJWXywNCj4gPg0KPiA+IHdoeSB0aGUgdW5kZXJz
Y29yZV8gbm90YXRpb24/DQo+ID4gY291bGRuJ3QgeW91IHVzZSBlLmcuIERBOTE1MF9HUEFEQ19I
V19DSEFOX0dQSU9CXzJWID0gMj8NCj4gPg0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX0dQ
SU9CXzJWLA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX0dQSU9CXzJWXywNCj4gPj4gKwlE
QTkxNTBfR1BBRENfSFdfQ0hBTl9HUElPQ18yViwNCj4gPj4gKwlEQTkxNTBfR1BBRENfSFdfQ0hB
Tl9HUElPQ18yVl8sDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fR1BJT0RfMlYsDQo+ID4+
ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fR1BJT0RfMlZfLA0KPiA+PiArCURBOTE1MF9HUEFEQ19I
V19DSEFOX0lCVVNfU0VOU0UsDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fSUJVU19TRU5T
RV8sDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fVkJVU19ESVYsDQo+ID4+ICsJREE5MTUw
X0dQQURDX0hXX0NIQU5fVkJVU19ESVZfLA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX0lE
LA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX0lEXywNCj4gPj4gKwlEQTkxNTBfR1BBRENf
SFdfQ0hBTl9WU1lTLA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX1ZTWVNfLA0KPiA+PiAr
CURBOTE1MF9HUEFEQ19IV19DSEFOX0dQSU9BXzVWLA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19D
SEFOX0dQSU9BXzVWXywNCj4gPj4gKwlEQTkxNTBfR1BBRENfSFdfQ0hBTl9HUElPQl81ViwNCj4g
Pj4gKwlEQTkxNTBfR1BBRENfSFdfQ0hBTl9HUElPQl81Vl8sDQo+ID4+ICsJREE5MTUwX0dQQURD
X0hXX0NIQU5fR1BJT0NfNVYsDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fR1BJT0NfNVZf
LA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX0dQSU9EXzVWLA0KPiA+PiArCURBOTE1MF9H
UEFEQ19IV19DSEFOX0dQSU9EXzVWXywNCj4gPj4gKwlEQTkxNTBfR1BBRENfSFdfQ0hBTl9WQkFU
LA0KPiA+PiArCURBOTE1MF9HUEFEQ19IV19DSEFOX1ZCQVRfLA0KPiA+PiArCURBOTE1MF9HUEFE
Q19IV19DSEFOX1RCQVQsDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fVEJBVF8sDQo+ID4+
ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fVEpVTkNfQ09SRSwNCj4gPj4gKwlEQTkxNTBfR1BBRENf
SFdfQ0hBTl9USlVOQ19DT1JFXywNCj4gPj4gKwlEQTkxNTBfR1BBRENfSFdfQ0hBTl9USlVOQ19P
VlAsDQo+ID4+ICsJREE5MTUwX0dQQURDX0hXX0NIQU5fVEpVTkNfT1ZQXywNCj4gPj4gK307DQo+
ID4+ICsNCj4gPj4gK2VudW0gZGE5MTUwX2dwYWRjX2NoYW5uZWwgew0KPiA+PiArCURBOTE1MF9H
UEFEQ19DSEFOX0dQSU9BID0gMCwNCj4gPj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9HUElPQiwNCj4g
Pj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9HUElPQywNCj4gPj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9H
UElPRCwNCj4gPj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9JQlVTLA0KPiA+PiArCURBOTE1MF9HUEFE
Q19DSEFOX1ZCVVMsDQo+ID4+ICsJREE5MTUwX0dQQURDX0NIQU5fSUQsDQo+ID4+ICsJREE5MTUw
X0dQQURDX0NIQU5fVlNZUywNCj4gPj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9WQkFULA0KPiA+PiAr
CURBOTE1MF9HUEFEQ19DSEFOX1RCQVQsDQo+ID4+ICsJREE5MTUwX0dQQURDX0NIQU5fVEpVTkNf
Q09SRSwNCj4gPj4gKwlEQTkxNTBfR1BBRENfQ0hBTl9USlVOQ19PVlAsDQo+ID4+ICt9Ow0KPiA+
PiArDQo+ID4+ICsvKiBQcml2YXRlIGRhdGEgKi8NCj4gPj4gK3N0cnVjdCBkYTkxNTBfZ3BhZGMg
ew0KPiA+PiArCXN0cnVjdCBkYTkxNTAgKmRhOTE1MDsNCj4gPj4gKwlzdHJ1Y3QgZGV2aWNlICpk
ZXY7DQo+ID4+ICsNCj4gPj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gPj4gKwlzdHJ1Y3QgY29t
cGxldGlvbiBjb21wbGV0ZTsNCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKw0KPiA+PiArc3RhdGlj
IGlycXJldHVybl90IGRhOTE1MF9ncGFkY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkNCj4gPj4g
K3sNCj4gPj4gKw0KPiA+PiArCXN0cnVjdCBkYTkxNTBfZ3BhZGMgKmdwYWRjID0gZGF0YTsNCj4g
Pj4gKw0KPiA+PiArCWNvbXBsZXRlKCZncGFkYy0+Y29tcGxldGUpOw0KPiA+PiArDQo+ID4+ICsJ
cmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQgZGE5MTUwX2dw
YWRjX3JlYWRfYWRjKHN0cnVjdCBkYTkxNTBfZ3BhZGMgKmdwYWRjLCBpbnQgaHdfY2hhbikNCj4g
Pg0KPiA+IHN0YXRpYz8NCj4gPg0KPiA+PiArew0KPiA+PiArCXU4IHJlc3VsdF9yZWdzWzJdOw0K
PiA+PiArCWludCByZXN1bHQ7DQo+ID4+ICsNCj4gPj4gKwltdXRleF9sb2NrKCZncGFkYy0+bG9j
ayk7DQo+ID4+ICsNCj4gPj4gKwkvKiBTZXQgY2hhbm5lbCAmIGVuYWJsZSBtZWFzdXJlbWVudCAq
Lw0KPiA+PiArCWRhOTE1MF9yZWdfd3JpdGUoZ3BhZGMtPmRhOTE1MCwgREE5MTUwX0dQQURDX01B
TiwNCj4gPj4gKwkJCSAoREE5MTUwX0dQQURDX0VOX01BU0sgfA0KPiA+PiArCQkJICBod19jaGFu
IDw8IERBOTE1MF9HUEFEQ19NVVhfU0hJRlQpKTsNCj4gPj4gKw0KPiA+PiArCS8qIENvbnN1bWUg
bGVmdC1vdmVyIGNvbXBsZXRpb24gZnJvbSBhIHByZXZpb3VzIHRpbWVvdXQgKi8NCj4gPj4gKwl0
cnlfd2FpdF9mb3JfY29tcGxldGlvbigmZ3BhZGMtPmNvbXBsZXRlKTsNCj4gPj4gKw0KPiA+PiAr
CS8qIENoZWNrIGZvciBhY3R1YWwgY29tcGxldGlvbiAqLw0KPiA+PiArCXdhaXRfZm9yX2NvbXBs
ZXRpb25fdGltZW91dCgmZ3BhZGMtPmNvbXBsZXRlLCBtc2Vjc190b19qaWZmaWVzKDUpKTsNCj4g
Pj4gKw0KPiA+PiArCS8qIFJlYWQgcmVzdWx0IGFuZCBzdGF0dXMgZnJvbSBkZXZpY2UgKi8NCj4g
Pj4gKwlkYTkxNTBfYnVsa19yZWFkKGdwYWRjLT5kYTkxNTAsIERBOTE1MF9HUEFEQ19SRVNfQSwg
MiwgcmVzdWx0X3JlZ3MpOw0KPiA+PiArDQo+ID4+ICsJbXV0ZXhfdW5sb2NrKCZncGFkYy0+bG9j
ayk7DQo+ID4+ICsNCj4gPj4gKwkvKiBDaGVjayB0byBtYWtlIHN1cmUgZGV2aWNlIHJlYWxseSBo
YXMgY29tcGxldGVkIHJlYWRpbmcgKi8NCj4gPj4gKwlpZiAocmVzdWx0X3JlZ3NbMV0gJiBEQTkx
NTBfR1BBRENfUlVOX01BU0spIHsNCj4gPj4gKwkJZGV2X2VycihncGFkYy0+ZGV2LCAiVGltZW91
dCBvbiBjaGFubmVsICVkIG9mIEdQLUFEQ1xuIiwNCj4gPg0KPiA+IEdQQURDIGV2ZXJ5d2hlcmUg
ZWxzZQ0KPiA+DQo+ID4+ICsJCQlod19jaGFuKTsNCj4gPj4gKwkJcmV0dXJuIC1FVElNRURPVVQ7
DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICsJLyogTFNCcyAtIDIgYml0cyAqLw0KPiA+PiArCXJl
c3VsdCA9IChyZXN1bHRfcmVnc1sxXSAmIERBOTE1MF9HUEFEQ19SRVNfTF9NQVNLKSA+Pg0KPiA+
PiArCQkgREE5MTUwX0dQQURDX1JFU19MX1NISUZUOw0KPiA+PiArCS8qIE1TQnMgLSA4IGJpdHMg
Ki8NCj4gPj4gKwlyZXN1bHQgfD0gcmVzdWx0X3JlZ3NbMF0gPDwgREE5MTUwX0dQQURDX1JFU19M
X0JJVFM7DQo+ID4NCj4gPiBjYW4ndCB0aGUgcmVhZCBiZSBkb25lIHdpdGggYSAxNmJpdCByZWFk
Pw0KPiA+DQo+ID4+ICsNCj4gPj4gKwlyZXR1cm4gcmVzdWx0Ow0KPiA+PiArfQ0KPiA+PiArDQo+
ID4+ICtzdGF0aWMgaW5saW5lIGludCBkYTkxNTBfZ3BhZGNfZ3Bpb181dl92b2x0YWdlX25vdyhp
bnQgcmF3X3ZhbCkNCj4gPj4gK3sNCj4gPj4gKwkvKiBDb252ZXJ0IHRvIHVWICovDQo+ID4+ICsJ
cmV0dXJuICgoKDYgKiAoKHJhd192YWwgKiAxMDAwKSArIDUwMCkpIC8gMTAyNCkgKiAxMDAwKTsN
Cj4gQmFzZSB1bml0cyBvZiB2b2x0YWdlIGFyZSBtaWxsaXZvbHRzLiAgU2VlIERvY3VtZW50YXRp
b24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby4NCg0KUmlnaHQuIE9rLg0KDQo+ID4NCj4gPiBv
dXRlciBwYXJlbnRoZXNpcyBub3QgbmVlZGVkLCBoZXJlIGFuZCBiZWxvdw0KPiA+DQo+ID4+ICt9
DQo+ID4+ICsNCj4gPj4gK3N0YXRpYyBpbmxpbmUgaW50IGRhOTE1MF9ncGFkY19pYnVzX2N1cnJl
bnRfYXZnKGludCByYXdfdmFsKQ0KPiA+PiArew0KPiA+PiArCS8qIENvbnZlcnQgdG8gdUEgKi8N
Cj4gPj4gKwlyZXR1cm4gKCgoNCAqICgocmF3X3ZhbCAqIDEwMDApICsgNTAwKSkgLyAyMDQ4KSAq
IDEwMDApOw0KPiBpbnRlcmVzdGluZ2x5IHRoaXMgaXMgYWN0dWFsbHkgb3VyIGZpcnN0IGN1cnJl
bnQgY2hhbm5lbCBvdXRzaWRlIHN0YWdpbmcuDQo+IEFzIHN1Y2ggdGhlIGRvY3MgZG9uJ3QgY292
ZXIgaXQuICBQbGVhc2UgYWRkLCBrZWVwaW5nIGlubGluZSB3aXRoIHRoZQ0KPiB1bml0cyB1c2Vk
IGluIGh3bW9uLiBtQSwgSUlSQw0KDQpSaWdodCwgb2suDQoNCj4gPj4gK30NCj4gPj4gKw0KPiA+
PiArc3RhdGljIGlubGluZSBpbnQgZGE5MTUwX2dwYWRjX3ZidXNfMjF2X3ZvbHRhZ2Vfbm93KGlu
dCByYXdfdmFsKQ0KPiA+PiArew0KPiA+PiArCS8qIENvbnZlcnQgdG8gdVYgKi8NCj4gPj4gKwly
ZXR1cm4gKCgoMjEgKiAoKHJhd192YWwgKiAxMDAwKSArIDUwMCkpIC8gMTAyNCkgKiAxMDAwKTsN
Cj4gPj4gK30NCj4gPj4gKw0KPiA+PiArc3RhdGljIGlubGluZSBpbnQgZGE5MTUwX2dwYWRjX3Zz
eXNfNnZfdm9sdGFnZV9ub3coaW50IHJhd192YWwpDQo+ID4+ICt7DQo+ID4+ICsJLyogQ29udmVy
dCB0byB1ViAqLw0KPiA+PiArCXJldHVybiAoKCgzICogKChyYXdfdmFsICogMTAwMCkgKyA1MDAp
KSAvIDUxMikgKiAxMDAwKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArc3RhdGljIGlubGluZSBp
bnQgZGE5MTUwX2dwYWRjX3RqdW5jX3RlbXAoaW50IHJhd192YWwpDQo+ID4+ICt7DQo+ID4+ICsJ
LyogQ29udmVydCB0byAwLjEgZGVncmVlcyBDICovDQo+ID4NCj4gPiBJSU8gd2FudHMgbWlsbGUg
ZGVncmVlcyBDDQo+IEV4YWN0bHkuICBQbGVhc2UgY2hlY2sgYWxsIG9mIHRoZXNlIGNvcnJlc3Bv
bmQgdG8gdGhlIGJhc2UgdW5pdHMgcmVxdWlyZWQNCj4gYnkgdGhlIGRvY3VtZW50YXRpb24uICBN
b3N0IG9mIHRoZXNlIG1pZ2h0IGJlIGJldHRlciBoYW5kbGVkIGFzIHJhdw0KPiB3aXRoIHNjYWxl
IGFuZCBvZmZzZXQgcHJvdmlkZWQsIGxldHRpbmcgdGhlIG1hdGhzIGJlIGRvaW5nIGluIHVzZXJz
cGFjZSB1c2luZw0KPiBmbG9hdGluZyBwb2ludC4NCg0KU29tZSBhcmUgbmVlZGVkIGJ5IHRoZSBj
aGFyZ2VyIGRyaXZlci4gVGhlIGludGVudGlvbiBvZiBhZGRpbmcgdGhlIGNvbnZlcnNpb25zDQpo
ZXJlIHdhcyBzbyB0aGlzIGtub3dsZWRnZSB3YXMgbm90IG5lZWRlZCBpbiB0aGUgY2hhcmdlciBk
cml2ZXIuIFNlZW1zIHdyb25nIHRvDQptb3ZlIHRoZSBjYWxjdWxhdGlvbnMgb3V0IG9mIHRoZSBJ
SU8gZHJpdmVyLiBNb3N0IG9mIHRoZXNlIGFyZSBub3Qgc2ltcGxlIGxpbmVhcg0Kc28gc2NhbGUg
YW5kIG9mZnNldCB3aWxsIG5vdCB3b3JrLCB1bmxlc3MgSSdtIG1pc3Npbmcgc29tZXRoaW5nLg0K
DQo+ID4NCj4gPj4gKwlyZXR1cm4gKCgoODc5IC0gKDEwMjMgLSByYXdfdmFsKSkgKiAxMDAwMCkg
LyA0NDIwKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArc3RhdGljIGlubGluZSBpbnQgZGE5MTUw
X2dwYWRjX3ZiYXRfdm9sdGFnZV9ub3coaW50IHJhd192YWwpDQo+ID4+ICt7DQo+ID4+ICsJLyog
Q29udmVydCB0byB1ViAqLw0KPiA+PiArCXJldHVybiAoKDI5MzIgKiByYXdfdmFsKSArIDE1MDAw
MDApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQgZGE5MTUwX2dwYWRjX3JlYWRfcHJvY2Vz
c2VkKHN0cnVjdCBkYTkxNTBfZ3BhZGMgKmdwYWRjLCBpbnQgY2hhbm5lbCwNCj4gPj4gKwkJCQlp
bnQgaHdfY2hhbikNCj4gPg0KPiA+IHN0YXRpYz8NCj4gPg0KPiA+PiArew0KPiA+PiArCWludCBy
YXdfdmFsLCByZXQ7DQo+ID4+ICsNCj4gPj4gKwlyYXdfdmFsID0gZGE5MTUwX2dwYWRjX3JlYWRf
YWRjKGdwYWRjLCBod19jaGFuKTsNCj4gPj4gKwlpZiAocmF3X3ZhbCA8IDApDQo+ID4+ICsJCXJl
dHVybiByYXdfdmFsOw0KPiA+PiArDQo+ID4+ICsJc3dpdGNoIChjaGFubmVsKSB7DQo+ID4+ICsJ
Y2FzZSBEQTkxNTBfR1BBRENfQ0hBTl9HUElPQToNCj4gPj4gKwljYXNlIERBOTE1MF9HUEFEQ19D
SEFOX0dQSU9COg0KPiA+PiArCWNhc2UgREE5MTUwX0dQQURDX0NIQU5fR1BJT0M6DQo+ID4+ICsJ
Y2FzZSBEQTkxNTBfR1BBRENfQ0hBTl9HUElPRDoNCj4gPj4gKwkJcmV0ID0gZGE5MTUwX2dwYWRj
X2dwaW9fNXZfdm9sdGFnZV9ub3cocmF3X3ZhbCk7DQo+ID4NCj4gPiBjb3VsZCByZXR1cm4gZGly
ZWN0bHkgLi4uDQo+ID4NCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJY2FzZSBEQTkxNTBfR1BBRENf
Q0hBTl9JQlVTOg0KPiA+PiArCQlyZXQgPSBkYTkxNTBfZ3BhZGNfaWJ1c19jdXJyZW50X2F2Zyhy
YXdfdmFsKTsNCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJY2FzZSBEQTkxNTBfR1BBRENfQ0hBTl9W
QlVTOg0KPiA+PiArCQlyZXQgPSBkYTkxNTBfZ3BhZGNfdmJ1c18yMXZfdm9sdGFnZV9ub3cocmF3
X3ZhbCk7DQo+ID4+ICsJCWJyZWFrOw0KPiA+PiArCWNhc2UgREE5MTUwX0dQQURDX0NIQU5fVlNZ
UzoNCj4gPj4gKwkJcmV0ID0gZGE5MTUwX2dwYWRjX3ZzeXNfNnZfdm9sdGFnZV9ub3cocmF3X3Zh
bCk7DQo+ID4+ICsJCWJyZWFrOw0KPiA+PiArCWNhc2UgREE5MTUwX0dQQURDX0NIQU5fVEpVTkNf
Q09SRToNCj4gPj4gKwljYXNlIERBOTE1MF9HUEFEQ19DSEFOX1RKVU5DX09WUDoNCj4gPj4gKwkJ
cmV0ID0gZGE5MTUwX2dwYWRjX3RqdW5jX3RlbXAocmF3X3ZhbCk7DQo+ID4+ICsJCWJyZWFrOw0K
PiA+PiArCWRlZmF1bHQ6DQo+ID4+ICsJCS8qIE5vIHByb2Nlc3NpbmcgZm9yIG90aGVyIGNoYW5u
ZWxzIHNvIHJldHVybiByYXcgdmFsdWUgKi8NCj4gPj4gKwkJcmV0ID0gcmF3X3ZhbDsNCj4gPj4g
KwkJYnJlYWs7DQo+ID4+ICsJfQ0KPiA+DQo+ID4gYW5kIHNhdmUgdGhlIGZpbmFsIHJldHVybg0K
PiA+PiArDQo+ID4+ICsJcmV0dXJuIHJldDsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiAraW50IGRh
OTE1MF9ncGFkY19yZWFkX3NjYWxlKGludCBjaGFubmVsKQ0KPiA+DQo+ID4gc3RhdGljPw0KPiA+
DQo+ID4+ICt7DQo+ID4+ICsJaW50IHJldDsNCj4gPj4gKw0KPiA+PiArCXN3aXRjaCAoY2hhbm5l
bCkgew0KPiA+PiArCWNhc2UgREE5MTUwX0dQQURDX0NIQU5fVkJBVDoNCj4gPj4gKwkJcmV0ID0g
MjkzMjsNCj4gPg0KPiA+IHJldHVybiBkaXJlY3RseT8NCj4gPg0KPiA+PiArCQlicmVhazsNCj4g
Pj4gKwlkZWZhdWx0Og0KPiA+PiArCQlyZXQgPSAtRUlOVkFMOw0KPiA+PiArCX0NCj4gPj4gKw0K
PiA+PiArCXJldHVybiByZXQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK2ludCBkYTkxNTBfZ3Bh
ZGNfcmVhZF9vZmZzZXQoaW50IGNoYW5uZWwpDQo+ID4+ICt7DQo+ID4+ICsJaW50IHJldDsNCj4g
Pj4gKw0KPiA+PiArCXN3aXRjaCAoY2hhbm5lbCkgew0KPiA+PiArCWNhc2UgREE5MTUwX0dQQURD
X0NIQU5fVkJBVDoNCj4gPj4gKwkJcmV0ID0gMTUwMDAwMCAvIDI5MzI7DQo+ID4NCj4gPiByZXR1
cm4gZGlyZWN0bHk/DQo+ID4NCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJZGVmYXVsdDoNCj4gPj4g
KwkJcmV0ID0gLUVJTlZBTDsNCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwlyZXR1cm4gcmV0Ow0K
PiA+PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQgZGE5MTUwX2dwYWRjX3JlYWRfcmF3KHN0cnVjdCBp
aW9fZGV2ICppbmRpb19kZXYsDQo+ID4+ICsJCQkgIHN0cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0
ICpjaGFuLA0KPiA+PiArCQkJICBpbnQgKnZhbCwgaW50ICp2YWwyLCBsb25nIG1hc2spDQo+ID4N
Cj4gPiBzdGF0aWM/DQo+ID4NCj4gPj4gK3sNCj4gPj4gKwlzdHJ1Y3QgZGE5MTUwX2dwYWRjICpn
cGFkYyA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ID4+ICsJaW50IHJldDsNCj4gPj4gKw0KPiA+
PiArCWlmICgoY2hhbi0+Y2hhbm5lbCA8IERBOTE1MF9HUEFEQ19DSEFOX0dQSU9BKSB8fA0KPiA+
PiArCSAgICAoY2hhbi0+Y2hhbm5lbCA+IERBOTE1MF9HUEFEQ19DSEFOX1RKVU5DX09WUCkpDQo+
ID4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICsJc3dpdGNoIChtYXNrKSB7DQo+
ID4+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1JBVzoNCj4gPj4gKwljYXNlIElJT19DSEFOX0lORk9f
UFJPQ0VTU0VEOg0KPiBXb3VsZCBiZSBjbGVhbmVyIHRvIGhhdmUgZWFjaCBvZiB0aGVzZSBmdW5j
dGlvbnMgdXNlIHJldCBmb3IgcmV0dXJuIGNvZGUNCj4gaW5jbHVkaW5nIElJT19WQUxfSU5UIGFu
ZCBwYXNzIHZhbCBhcyBhbiBhcmd1ZW1lbnQuICBXb3VsZCBnZXQgcmlkDQo+IG9mIHRoZSBmaWRk
bHkgaGFuZGxpbmcgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBhbGxvdyBkaXJlY3QN
Cj4gcmV0dXJucyBmcm9tIGVhY2ggb2YgdGhlIGNhc2Ugc3RhdGVtZW50cy4NCj4gDQo+IEFsc28s
IGFyZSB0aGUgYmFzZSB1bml0cyBvZiBhbGwgb2YgdGhlc2UgY2hhbm5lbHMgcmVhbGx5IGdpdmlu
ZyB1cw0KPiBhbiBpbnRlZ2VyIHJlc3VsdD8gIEUuZy4gbVYsIG1BIGV0Yz8gTm90IGltcG9zc2li
bGUsIGJ1dCBzZWVtcyB1bmxpa2VseSENCg0KT2ssIEkgY2FuIG1ha2UgdGhhdCBjaGFuZ2UuIFdv
dWxkbid0IHNheSB3aGF0IHdhcyB0aGVyZSBub3cgaXMgZmlkZGx5LCBidXQgYW0NCmhhcHB5IHRv
IHVwZGF0ZS4NCg0KSW4gdGVybXMgb2YgYmFzZSB1bml0cywgdGhleSBhcmUgYWN0dWFsbHkgaW4g
ViBvciBBLCByYXRoZXIgdGhhbiBzYXkgbVYgb3IgbUEsDQphY2NvcmRpbmcgdG8gdGhlIGRhdGFz
aGVldCwgYnV0IGFzIHRoZXJlJ3Mgbm8gZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCBpbiB0aGUNCmtl
cm5lbCB0aGUgc2Vuc2libGUgb3B0aW9uIHdhcyB0byBwcm92aWRlIHRoZW0gaW4gc21hbGxlciB1
bml0cyBhbmQgcHJvdmlkZQ0KZ3JlYXRlciBhY2N1cmFjeS4NCg0KPiANCj4gPj4gKwkJcmV0ID0g
ZGE5MTUwX2dwYWRjX3JlYWRfcHJvY2Vzc2VkKGdwYWRjLCBjaGFuLT5jaGFubmVsLA0KPiA+PiAr
CQkJCQkJICBjaGFuLT5hZGRyZXNzKTsNCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJY2FzZSBJSU9f
Q0hBTl9JTkZPX1NDQUxFOg0KPiA+PiArCQlyZXQgPSBkYTkxNTBfZ3BhZGNfcmVhZF9zY2FsZShj
aGFuLT5jaGFubmVsKTsNCj4gPj4gKwkJYnJlYWs7DQo+ID4+ICsJY2FzZSBJSU9fQ0hBTl9JTkZP
X09GRlNFVDoNCj4gPj4gKwkJcmV0ID0gZGE5MTUwX2dwYWRjX3JlYWRfb2Zmc2V0KGNoYW4tPmNo
YW5uZWwpOw0KPiA+PiArCQlicmVhazsNCj4gPj4gKwlkZWZhdWx0Og0KPiA+PiArCQlyZXQgPSAt
RUlOVkFMOw0KPiA+PiArCQlicmVhazsNCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwlpZiAocmV0
IDwgMCkNCj4gPj4gKwkJcmV0dXJuIHJldDsNCj4gPj4gKw0KPiA+PiArCSp2YWwgPSByZXQ7DQo+
ID4+ICsNCj4gPj4gKwlyZXR1cm4gSUlPX1ZBTF9JTlQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g
K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2luZm8gZGE5MTUwX2dwYWRjX2luZm8gPSB7DQo+ID4+
ICsJLnJlYWRfcmF3ID0gJmRhOTE1MF9ncGFkY19yZWFkX3JhdywNCj4gPj4gKwkuZHJpdmVyX21v
ZHVsZSA9IFRISVNfTU9EVUxFLA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArI2RlZmluZSBHUEFE
Q19DSEFOTkVMKF9pZCwgX2h3X2lkLCBfdHlwZSwgY2hhbl9pbmZvLCBfZXh0X25hbWUpIHsJXA0K
PiA+PiArCS50eXBlID0gX3R5cGUsCQkJCQkJCVwNCj4gPj4gKwkuaW5kZXhlZCA9IDEsCQkJCQkJ
CVwNCj4gPg0KPiA+IHRoZXJlIGlzIG9ubHkgb25lIGN1cnJlbnQgY2hhbm5lbCwgaXQgc2hvdWxk
IG5vdCBiZSBpbmRleGVkDQo+IE9wdGlvbmFsLiBFaXRoZXIgd2F5IHVzZXJzcGFjZSBzaG91bGQg
Y29wZSBmaW5lLiBBdCBvbmUgcG9pbnQgSSB0aG91Z2h0DQo+IGFib3V0IGluc2lzdGluZyBldmVy
eXRoaW5nIHdhcyBpbmRleGVkLCB0byByZWR1Y2UgdXNlcnNwYWNlIGNvbXBsZXhpdHkNCj4gKGV2
ZXIgc28gc2xpZ2h0bHkpIGJ1dCB3YXMgYSBiaXQgbGF0ZSBieSB0aGUgdGltZSBJIHRob3VnaHQg
b2YgaXQgOykNCg0KSWYgaXQncyBvaywgSSB3aWxsIGxlYXZlIGFzIGlzIGFzIHRvIGtlZXAgdGhp
cyBtYWNybyBjb21tb24uDQoNCj4gPg0KPiA+PiArCS5jaGFubmVsID0gREE5MTUwX0dQQURDX0NI
QU5fIyNfaWQsCQkJCVwNCj4gPj4gKwkuYWRkcmVzcyA9IERBOTE1MF9HUEFEQ19IV19DSEFOXyMj
X2h3X2lkLAkJCVwNCj4gPj4gKwkuaW5mb19tYXNrX3NlcGFyYXRlID0gY2hhbl9pbmZvLAkJCQlc
DQo+ID4+ICsJLmV4dGVuZF9uYW1lID0gX2V4dF9uYW1lLAkJCQkJXA0KPiA+PiArCS5kYXRhc2hl
ZXRfbmFtZSA9ICNfaWQsCQkJCQkJXA0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsjZGVmaW5lIEdQ
QURDX0NIQU5ORUxfUkFXKF9pZCwgX2h3X2lkLCBfdHlwZSwgX2V4dF9uYW1lKQlcDQo+ID4+ICsJ
R1BBRENfQ0hBTk5FTChfaWQsIF9od19pZCwgX3R5cGUsIEJJVChJSU9fQ0hBTl9JTkZPX1JBVyks
DQo+IF9leHRfbmFtZSkNCj4gPj4gKw0KPiA+PiArI2RlZmluZSBHUEFEQ19DSEFOTkVMX1NDQUxF
RChfaWQsIF9od19pZCwgX3R5cGUsIF9leHRfbmFtZSkJXA0KPiA+PiArCUdQQURDX0NIQU5ORUwo
X2lkLCBfaHdfaWQsIF90eXBlLAkJCVwNCj4gPj4gKwkJICAgICAgQklUKElJT19DSEFOX0lORk9f
UkFXKSB8CQkJXA0KPiA+PiArCQkgICAgICBCSVQoSUlPX0NIQU5fSU5GT19TQ0FMRSkgfAkJXA0K
PiA+PiArCQkgICAgICBCSVQoSUlPX0NIQU5fSU5GT19PRkZTRVQpLAkJXA0KPiA+PiArCQkgICAg
ICBfZXh0X25hbWUpDQo+ID4+ICsNCj4gPj4gKyNkZWZpbmUgR1BBRENfQ0hBTk5FTF9QUk9DRVNT
RUQoX2lkLCBfaHdfaWQsIF90eXBlLCBfZXh0X25hbWUpDQo+IAlcDQo+ID4+ICsJR1BBRENfQ0hB
Tk5FTChfaWQsIF9od19pZCwgX3R5cGUsIEJJVChJSU9fQ0hBTl9JTkZPX1BST0NFU1NFRCksCVwN
Cj4gPj4gKwkJICAgICAgX2V4dF9uYW1lKQ0KPiBUaGlzIG1hY3JvIGFuZCBzaW1pbGFyIG5lZWQg
YSBEQTkxNTAgcHJlZml4IHRvIGF2b2lkIGxpa2VseSBuYW1lIGNsYXNoZXMgaW4NCj4gZnV0dXJl
Lg0KDQpGYWlyIHBvaW50LiBXaWxsIHVwZGF0ZS4NCg0KPiA+PiArDQo+ID4+ICsvKiBTdXBwb3J0
ZWQgY2hhbm5lbHMgKi8NCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBk
YTkxNTBfZ3BhZGNfY2hhbm5lbHNbXSA9IHsNCj4gPj4gKwlHUEFEQ19DSEFOTkVMX1BST0NFU1NF
RChHUElPQSwgR1BJT0FfNVYsIElJT19WT0xUQUdFLCAiR1BJT0EiKSwNCj4gPj4gKwlHUEFEQ19D
SEFOTkVMX1BST0NFU1NFRChHUElPQiwgR1BJT0JfNVYsIElJT19WT0xUQUdFLCAiR1BJT0IiKSwN
Cj4gPj4gKwlHUEFEQ19DSEFOTkVMX1BST0NFU1NFRChHUElPQywgR1BJT0NfNVYsIElJT19WT0xU
QUdFLCAiR1BJT0MiKSwNCj4gPj4gKwlHUEFEQ19DSEFOTkVMX1BST0NFU1NFRChHUElPRCwgR1BJ
T0RfNVYsIElJT19WT0xUQUdFLCAiR1BJT0QiKSwNCj4gPj4gKwlHUEFEQ19DSEFOTkVMX1BST0NF
U1NFRChJQlVTLCBJQlVTX1NFTlNFLCBJSU9fQ1VSUkVOVCwgIklCVVMiKSwNCj4gPj4gKwlHUEFE
Q19DSEFOTkVMX1BST0NFU1NFRChWQlVTLCBWQlVTX0RJVl8sIElJT19WT0xUQUdFLCAiVkJVUyIp
LA0KPiA+PiArCUdQQURDX0NIQU5ORUxfUkFXKElELCBJRCwgSUlPX1ZPTFRBR0UsICJJRCIpLA0K
PiA+PiArCUdQQURDX0NIQU5ORUxfUFJPQ0VTU0VEKFZTWVMsIFZTWVMsIElJT19WT0xUQUdFLCAi
VlNZUyIpLA0KPiA+PiArCUdQQURDX0NIQU5ORUxfU0NBTEVEKFZCQVQsIFZCQVQsIElJT19WT0xU
QUdFLCAiVkJBVCIpLA0KPiA+PiArCUdQQURDX0NIQU5ORUxfUkFXKFRCQVQsIFRCQVQsIElJT19W
T0xUQUdFLCAiVEJBVCIpLA0KPiA+PiArCUdQQURDX0NIQU5ORUxfUFJPQ0VTU0VEKFRKVU5DX0NP
UkUsIFRKVU5DX0NPUkUsIElJT19URU1QLA0KPiAiVEpVTkNfQ09SRSIpLA0KPiA+PiArCUdQQURD
X0NIQU5ORUxfUFJPQ0VTU0VEKFRKVU5DX09WUCwgVEpVTkNfT1ZQLCBJSU9fVEVNUCwNCj4gIlRK
VU5DX09WUCIpLA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyogRGVmYXVsdCBtYXBzIHVzZWQg
YnkgZGE5MTUwLWNoYXJnZXIgKi8NCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgaWlvX21hcCBkYTkxNTBf
Z3BhZGNfZGVmYXVsdF9tYXBzW10gPSB7DQo+ID4+ICsJew0KPiA+PiArCQkuY29uc3VtZXJfZGV2
X25hbWUgPSAiZGE5MTUwLWNoYXJnZXIiLA0KPiA+PiArCQkuY29uc3VtZXJfY2hhbm5lbCA9ICJD
SEFOX0lCVVMiLA0KPiA+PiArCQkuYWRjX2NoYW5uZWxfbGFiZWwgPSAiSUJVUyIsDQo+ID4+ICsJ
fSwNCj4gPj4gKwl7DQo+ID4+ICsJCS5jb25zdW1lcl9kZXZfbmFtZSA9ICJkYTkxNTAtY2hhcmdl
ciIsDQo+ID4+ICsJCS5jb25zdW1lcl9jaGFubmVsID0gIkNIQU5fVkJVUyIsDQo+ID4+ICsJCS5h
ZGNfY2hhbm5lbF9sYWJlbCA9ICJWQlVTIiwNCj4gPj4gKwl9LA0KPiA+PiArCXsNCj4gPj4gKwkJ
LmNvbnN1bWVyX2Rldl9uYW1lID0gImRhOTE1MC1jaGFyZ2VyIiwNCj4gPj4gKwkJLmNvbnN1bWVy
X2NoYW5uZWwgPSAiQ0hBTl9USlVOQyIsDQo+ID4+ICsJCS5hZGNfY2hhbm5lbF9sYWJlbCA9ICJU
SlVOQ19DT1JFIiwNCj4gPj4gKwl9LA0KPiA+PiArCXsNCj4gPj4gKwkJLmNvbnN1bWVyX2Rldl9u
YW1lID0gImRhOTE1MC1jaGFyZ2VyIiwNCj4gPj4gKwkJLmNvbnN1bWVyX2NoYW5uZWwgPSAiQ0hB
Tl9WQkFUIiwNCj4gPj4gKwkJLmFkY19jaGFubmVsX2xhYmVsID0gIlZCQVQiLA0KPiA+PiArCX0s
DQo+ID4+ICsJe30sDQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW50IGRhOTE1MF9n
cGFkY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+PiArew0KPiA+PiAr
CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+ID4+ICsJc3RydWN0IGRhOTE1MCAq
ZGE5MTUwID0gZGV2X2dldF9kcnZkYXRhKGRldi0+cGFyZW50KTsNCj4gPj4gKwlzdHJ1Y3QgZGE5
MTUwX2dwYWRjICpncGFkYzsNCj4gPj4gKwlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2Ow0KPiA+
PiArCWludCByZXQ7DQo+ID4+ICsNCj4gPj4gKwlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2Vf
YWxsb2MoJnBkZXYtPmRldiwNCj4gPj4gKwkJCQkJICBzaXplb2Yoc3RydWN0IGRhOTE1MF9ncGFk
YykpOw0KPiA+PiArCWlmICghaW5kaW9fZGV2KSB7DQo+ID4+ICsJCWRldl9lcnIoJnBkZXYtPmRl
diwgIkZhaWxlZCB0byBhbGxvY2F0ZSBJSU8gZGV2aWNlXG4iKTsNCj4gPj4gKwkJcmV0dXJuIC1F
Tk9NRU07DQo+ID4+ICsJfQ0KPiA+PiArCWdwYWRjID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4g
Pj4gKw0KPiA+PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGluZGlvX2Rldik7DQo+ID4+
ICsJZ3BhZGMtPmRhOTE1MCA9IGRhOTE1MDsNCj4gPj4gKwlncGFkYy0+ZGV2ID0gZGV2Ow0KPiA+
PiArDQo+ID4+ICsJcmV0ID0gaWlvX21hcF9hcnJheV9yZWdpc3RlcihpbmRpb19kZXYsIGRhOTE1
MF9ncGFkY19kZWZhdWx0X21hcHMpOw0KPiA+PiArCWlmIChyZXQpIHsNCj4gPj4gKwkJZGV2X2Vy
cihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgSUlPIG1hcHM6ICVkXG4iLCByZXQpOw0KPiA+PiAr
CQlnb3RvIGlpb19tYXBfZmFpbDsNCj4gPg0KPiA+IGp1c3QgcmV0dXJuIGhlcmU/DQo+ID4NCj4g
Pj4gKwl9DQo+ID4+ICsNCj4gPj4gKwltdXRleF9pbml0KCZncGFkYy0+bG9jayk7DQo+ID4+ICsJ
aW5pdF9jb21wbGV0aW9uKCZncGFkYy0+Y29tcGxldGUpOw0KPiA+PiArDQo+ID4+ICsJLyogUmVn
aXN0ZXIgSVJRICovDQo+ID4+ICsJcmV0ID0gZGE5MTUwX3JlZ2lzdGVyX2lycShwZGV2LCBncGFk
YywgZGE5MTUwX2dwYWRjX2lycSwgIkdQQURDIik7DQo+IFRoaXMgZnVuY3Rpb24gd2FudHMgcmVu
YW1pbmcgdG8gaW5kaWNhdGUgdGhhdCBpdCBpcyBkb2luZyBhIG1hbmFnZWQNCj4gaXJxIHJlcXVl
c3QuLi4gZGV2bV9kYTkxNTAgZXRjIHdvdWxkIGJlIGNvbnZlbnRpb25hbCA7KQ0KDQpZZXAsIGl0
J3MgYSBnb29kIHBvaW50LiBXaWxsIHVwZGF0ZS4NCg0KPiA+PiArCWlmIChyZXQgPCAwKQ0KPiA+
PiArCQlnb3RvIGlycV9mYWlsOw0KPiA+PiArDQo+ID4+ICsJaW5kaW9fZGV2LT5uYW1lID0gZGV2
X25hbWUoZGV2KTsNCj4gPj4gKwlpbmRpb19kZXYtPmRldi5wYXJlbnQgPSBkZXY7DQo+ID4+ICsJ
aW5kaW9fZGV2LT5kZXYub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiA+PiArCWluZGlv
X2Rldi0+aW5mbyA9ICZkYTkxNTBfZ3BhZGNfaW5mbzsNCj4gPj4gKwlpbmRpb19kZXYtPm1vZGVz
ID0gSU5ESU9fRElSRUNUX01PREU7DQo+ID4+ICsJaW5kaW9fZGV2LT5jaGFubmVscyA9IGRhOTE1
MF9ncGFkY19jaGFubmVsczsNCj4gPj4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZ
X1NJWkUoZGE5MTUwX2dwYWRjX2NoYW5uZWxzKTsNCj4gPj4gKw0KPiA+PiArCXJldCA9IGlpb19k
ZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2KTsNCj4gPj4gKwlpZiAocmV0KSB7DQo+ID4+ICsJCWRl
dl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIElJTyBkZXZpY2U6ICVkXG4iLCByZXQpOw0K
PiA+PiArCQlnb3RvIGlpb19kZXZfZmFpbDsNCj4gPj4gKwl9DQo+ID4+ICsNCj4gPj4gKwlyZXR1
cm4gcmV0Ow0KPiA+PiArDQo+ID4+ICtpaW9fZGV2X2ZhaWw6DQo+ID4+ICtpcnFfZmFpbDoNCj4g
Pg0KPiA+IHdoeSB0d28gbGFiZWxzPw0KPiA+DQo+ID4+ICsJaWlvX21hcF9hcnJheV91bnJlZ2lz
dGVyKGluZGlvX2Rldik7DQo+ID4+ICsNCj4gPj4gK2lpb19tYXBfZmFpbDoNCj4gPj4gKwlyZXR1
cm4gcmV0Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgaW50IGRhOTE1MF9ncGFkY19y
ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPj4gK3sNCj4gPj4gKwlzdHJ1
Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4+
ICsNCj4gPj4gKwlpaW9fbWFwX2FycmF5X3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsNCj4gPg0KPiA+
IHVucmVnaXN0ZXIgaXJxPw0KPiBOb3QgYWN0dWFsbHkgbmVlZGVkIGFzIGl0IHdhcyBhIGRldm0g
cmVnaXN0ZXIgLSBoYXZpbmcgc2FpZCB0aGF0DQo+IHRoZSBmdW5jdGlvbiBzaG91bGQgaW5kaWNh
dGUgdGhhdCBpdCdzIG5hbWluZy4NCg0KQWdyZWVkLg0KDQo+ID4NCj4gPj4gKwlpaW9fZGV2aWNl
X3VucmVnaXN0ZXIoaW5kaW9fZGV2KTsNCj4gPj4gKw0KPiA+PiArCXJldHVybiAwOw0KPiA+PiAr
fQ0KPiA+PiArDQo+ID4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkYTkxNTBfZ3Bh
ZGNfZHJpdmVyID0gew0KPiA+PiArCS5kcml2ZXIgPSB7DQo+ID4+ICsJCS5uYW1lID0gImRhOTE1
MC1ncGFkYyIsDQo+ID4+ICsJCS5vd25lciA9IFRISVNfTU9EVUxFLA0KPiA+PiArCX0sDQo+ID4+
ICsJLnByb2JlID0gZGE5MTUwX2dwYWRjX3Byb2JlLA0KPiA+PiArCS5yZW1vdmUgPSBkYTkxNTBf
Z3BhZGNfcmVtb3ZlLA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArbW9kdWxlX3BsYXRmb3JtX2Ry
aXZlcihkYTkxNTBfZ3BhZGNfZHJpdmVyKTsNCj4gPj4gKw0KPiA+PiArTU9EVUxFX0RFU0NSSVBU
SU9OKCJHUEFEQyBEcml2ZXIgZm9yIERBOTE1MCIpOw0KPiA+PiArTU9EVUxFX0FVVEhPUigiQWRh
bSBUaG9tc29uDQo+IDxBZGFtLlRob21zb24uT3BlbnNvdXJjZUBkaWFzZW1pLmNvbSIpOw0KPiA+
PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiA+PiAtLQ0KPiA+PiAxLjkuMw0KPiA+Pg0KPiA+
PiAtLQ0KPiA+PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAi
dW5zdWJzY3JpYmUgbGludXgta2VybmVsIiBpbg0KPiA+PiB0aGUgYm9keSBvZiBhIG1lc3NhZ2Ug
dG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZw0KPiA+PiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0
ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCj4gPj4gUGxlYXNl
IHJlYWQgdGhlIEZBUSBhdCAgaHR0cDovL3d3dy50dXgub3JnL2xrbWwvDQo+ID4+DQo+ID4NCg==