linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "shufan_lee(李書帆)" <shufan_lee@richtek.com>
To: 'Greg KH' <greg@kroah.com>, ShuFanLee <leechu729@gmail.com>
Cc: "heikki.krogerus@linux.intel.com"
	<heikki.krogerus@linux.intel.com>,
	"cy_huang(黃啟原)" <cy_huang@richtek.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: USB TYPEC: RT1711H Type-C Chip Driver
Date: Thu, 18 Jan 2018 13:13:15 +0000	[thread overview]
Message-ID: <f94537a67a1544d1937eae3dbfcd554f@ex1.rt.l> (raw)

RGVhciBHZXJnLA0KDQogIE1hbnkgdGhhbmtzIHRvIHlvdXIgY29tbWVudC4NCiAgSSd2ZSBjaGVj
a2VkIGFsbCBvZiB0aGVtIGFuZCBoZXJlIGFyZSBzb21lIHF1ZXN0aW9ucyBuZWVkIHlvdXIgaGVs
cC4NCg0KPiArRXhhbXBsZToNCj4gK3J0MTcxMWhANGUgew0KPiArc3RhdHVzID0gIm9rIjsNCj4g
K2NvbXBhdGlibGUgPSAicmljaHRlayx0eXBlY19ydDE3MTFoIjsNCj4gK3JlZyA9IDwweDRlPjsN
Cj4gK3J0LGludHJfZ3BpbyA9IDwmZ3BpbzI2IDAgMHgwPjsNCj4gK3J0LG5hbWUgPSAicnQxNzEx
aCI7DQo+ICtydCxwb3J0X3R5cGUgPSA8Mj47IC8qIDA6IERGUCwgMTogVUZQLCAyOiBEUlAgKi8N
Cj4gK3J0LGRlZl9yb2xlID0gPDA+OyAvKiAwOiBTTkssIDE6IFNSQywgLTE6IFRZUEVDX05PX1BS
RUZFUlJFRF9ST0xFICovDQo+ICt9Ow0KDQpkdHMgc3R1ZmYgbmVlZHMgdG8gYWx3YXlzIGJlIGlu
IGEgc2VwYXJhdGUgZmlsZSBzbyB0aGUgRFQgbWFpbnRhaW5lcnMgY2FuIHJldmlldy9hY2sgaXQu
ICBTcGxpdCB0aGlzIHBhdGNoIHVwIGludG8gc21hbGxlciBwaWVjZXMgcGxlYXNlLg0KDQpPaywg
SSdsbCBzcGxpdCBpdCBpbnRvIHR3byBwYXRjaGVzLCBvbmUgZm9yIHNvdXJjZSBjb2RlIGFuZCBv
bmNlIGZvciBkdHMgcmVsYXRlZCBmaWxlcy4NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQo+IGRpZmYgLS1n
aXQgYS9kcml2ZXJzL3VzYi90eXBlYy9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL3R5cGVjL01ha2Vm
aWxlDQo+IGluZGV4IGJiMzEzOGEuLmUzYWFmM2MgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdXNi
L3R5cGVjL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL01ha2VmaWxlDQo+IEBA
IC0yLDYgKzIsNyBAQA0KPiAgb2JqLSQoQ09ORklHX1RZUEVDKSs9IHR5cGVjLm8NCj4gIG9iai0k
KENPTkZJR19UWVBFQ19UQ1BNKSs9IHRjcG0ubw0KPiAgb2JqLXkrPSBmdXNiMzAyLw0KPiArb2Jq
LSQoQ09ORklHX1RZUEVDX1JUMTcxMUgpKz0gcnQxNzExaC8NCg0KV2h5IGRvIHlvdSBuZWVkIGEg
d2hvbGUgZGlyZWN0b3J5IGZvciBvbmUgZmlsZT8NCg0KSXMgdGhlIHN1Z2dlc3Rpb24gdG8gbW92
ZSBydDE3MTFoLmMgdG8gdGhlIHNhbWUgZGlyZWN0b3J5IGxldmVsIGFzIHRjcG0/IGkuZS4gZHJp
dmVycy91c2IvdHlwZWMvcnQxNzExaC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPiArPHVhcGkvbGlu
dXgvc2NoZWQvdHlwZXMuaD4NCg0KVGhpcyBsYXN0ICNpbmNsdWRlIHNob3VsZCBub3QgYmUgbmVl
ZGVkLiAgSWYgaXQgZG9lcywgeW91IGFyZSBkb2luZyBzb21ldGhpbmcgcmVhbGx5IHdyb25nLi4u
DQoNCk9rLCB0aGlzICNpbmNsdWRlIHdpbGwgYmUgcmVtb3ZlZA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoN
Cj4gKw0KPiArI2luY2x1ZGUgInJ0MTcxMWguaCINCg0KV2h5IGEgLmggZmlsZSBmb3IgYSBzaW5n
bGUgLmMgZmlsZT8NCg0KSXMgdGhlIHN1Z2dlc3Rpb24gdG8gbW92ZSBhbGwgY29udGVudCBpbiBy
dDE3MTFoLmggaW50byBydDE3MTFoLmM/DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPiArDQo+ICsjZGVm
aW5lIFJUMTcxMUhfRFJWX1ZFUlNJT04iMS4wLjMiDQoNCldoZW4gY29kZSBpcyBpbiB0aGUga2Vy
bmVsIHRyZWUsIHZlcnNpb25zIG1lYW4gbm90aGluZywgeW91IHdpbGwgbm90ZSB0aGF0IG5vIG90
aGVyIFVTQiBkcml2ZXIgaGFzIHRoZW0sIHJpZ2h0PyAgUGxlYXNlIHJlbW92ZS4NCg0KT2ssIHRo
aXMgd2lsbCBiZSByZW1vdmVkLg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCmtlcm5lbCB0eXBlcyBhcmUg
dTE2LCB1MzIsIHU4LCBhbmQgdGhlIGxpa2UsIG5vdCB1aW50MTZfdCwgdGhvc2UgYXJlIGZvciB1
c2Vyc3BhY2UgY29kZSBvbmx5Lg0KWWVhaCwgb3RoZXIgZHJpdmVycyBkbyBpdCwgYnV0IHlvdSBz
aG91bGRuJ3QgOikNCg0KT2ssIEknbGwgdXNlIHUxNiwgdTMyIGFuZCB1OCBpbnN0ZWFkIG9mIHVp
bnQxNl90LCB1aW50MzJfdCBhbmQgdWludDhfdA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCj4gKy8qIElS
USAqLw0KPiArc3RydWN0IGt0aHJlYWRfd29ya2VyIGlycV93b3JrZXI7DQo+ICtzdHJ1Y3Qga3Ro
cmVhZF93b3JrIGlycV93b3JrOw0KPiArc3RydWN0IHRhc2tfc3RydWN0ICppcnFfd29ya2VyX3Rh
c2s7DQoNCjMgdGhpbmdzIGZvciBhbiBpcnEgaGFuZGxlcj8gIFRoYXQgZmVlbHMgd3JvbmcuDQoN
Cj4gK2F0b21pY190IHBvbGxfY291bnQ7DQoNCkxpa2UgSSBzYWlkIGJlZm9yZSwgd2h5IGlzIHRo
aXMgYW4gYXRvbWljPw0KDQpJJ2xsIHVzZSB0aHJlYWRlZF9pcnEgaW5zdGVhZCwgdGhlIGFib3Zl
IHRoaW5ncyB3aWxsIGJlIHJlbW92ZWQuDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPiArLyogSTJDICov
DQo+ICthdG9taWNfdCBpMmNfYnVzeTsNCj4gK2F0b21pY190IHBtX3N1c3BlbmQ7DQoNCldoeSBh
cmUgdGhlc2UgYXRvbWljPyAgWW91IGtub3cgdGhhdCBkb2Vzbid0IG1lYW4gdGhleSBkbyBub3Qg
bmVlZCBsb2NraW5nLCByaWdodD8NCg0KRm9yIG15IHVuZGVyc3RhbmRpbmcsIGEgc2luZ2xlIG9w
ZXJhdGlvbiBvbiBhdG9taWNfdCBkb2Vzbid0IG5lZWQgbG9jaywgbGlrZSBhIHNpbmdsZSBhdG9t
aWNfc2V0Lg0KQnV0IHR3byBjb25zZWN1dGl2ZSBvcGVyYXRpb25zIGRvZXNuJ3QgZ3VhcmFudGVl
IGFueXRoaW5nLiBMaWtlIGF0b21pY19zZXQgZm9sbG93ZWQgYnkgYW4gYXRvbWljX3JlYWQuDQpU
aGlzIHBhcnQgaXMgcmVmZXJlbmNlZCBmcm9tIGZ1c2IzMDIgdXNlZCB0byBtYWtlIHN1cmUgSTJD
IGlzIGlkbGUgYmVmb3JlIHN5c3RlbSBzdXNwZW5kcy4NCkl0IG9ubHkgbmVlZHMgdG8gZ3VhcmFu
dGVlIGEgc2luZ2xlIHJlYWQvd3JpdGUgb24gdGhlc2UgdmFyaWFibGUgaXMgYXRvbWljIG9wZXJh
dGlvbiwgc28gYXRvbWljIGlzIHVzZWQuDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPiArfTsNCj4gKw0K
PiArLyoNCj4gKyAqIExvZ2dpbmcgJiBkZWJ1Z2dpbmcNCj4gKyAqLw0KPiArDQo+ICsjaWZkZWYg
Q09ORklHX0RFQlVHX0ZTDQo+ICsNCj4gK3N0YXRpYyBpbnQgcnQxNzExaF9yZWdfYmxvY2tfcmVh
ZChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLCB1aW50OF90IHJlZywNCj4gK2ludCBsZW4sIHVp
bnQ4X3QgKmRhdGEpOw0KPiArc3RhdGljIGludCBydDE3MTFoX3JlZ19ibG9ja193cml0ZShzdHJ1
Y3QgcnQxNzExaF9jaGlwICpjaGlwLCB1aW50OF90IHJlZywNCj4gK2ludCBsZW4sIGNvbnN0IHVp
bnQ4X3QgKmRhdGEpOw0KPiArDQo+ICtzdHJ1Y3QgcmVnX2Rlc2Mgew0KPiArdWludDhfdCBhZGRy
Ow0KPiArdWludDhfdCBzaXplOw0KPiArfTsNCj4gKyNkZWZpbmUgREVDTF9SRUcoX2FkZHIsIF9z
aXplKSB7LmFkZHIgPSBfYWRkciwgLnNpemUgPSBfc2l6ZX0NCj4gKw0KPiArc3RhdGljIHN0cnVj
dCByZWdfZGVzYyBydDE3MTFoX3JlZ19kZXNjW10gPSB7DQo+ICtERUNMX1JFRyhSVDE3MTFIX1JF
R19WSUQsIDIpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfUElELCAyKSwNCj4gK0RFQ0xfUkVH
KFJUMTcxMUhfUkVHX0RJRCwgMiksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19UWVBFQ19SRVYs
IDIpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfUERfUkVWLCAyKSwNCj4gK0RFQ0xfUkVHKFJU
MTcxMUhfUkVHX1BESUZfUkVWLCAyKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0FMRVJULCAy
KSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0FMRVJUX01BU0ssIDIpLA0KPiArREVDTF9SRUco
UlQxNzExSF9SRUdfUE9XRVJfU1RBVFVTX01BU0ssIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9S
RUdfRkFVTFRfU1RBVFVTX01BU0ssIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfVENQQ19D
VFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JPTEVfQ1RSTCwgMSksDQo+ICtERUNM
X1JFRyhSVDE3MTFIX1JFR19GQVVMVF9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVH
X1BPV0VSX0NUUkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfQ0NfU1RBVFVTLCAxKSwN
Cj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1BPV0VSX1NUQVRVUywgMSksDQo+ICtERUNMX1JFRyhS
VDE3MTFIX1JFR19GQVVMVF9TVEFUVVMsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfQ09N
TUFORCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19NU0dfSERSX0lORk8sIDEpLA0KPiAr
REVDTF9SRUcoUlQxNzExSF9SRUdfUlhfREVURUNULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhf
UkVHX1JYX0JZVEVfQ05ULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JYX0JVRl9GUkFN
RV9UWVBFLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JYX0hEUiwgMiksDQo+ICtERUNM
X1JFRyhSVDE3MTFIX1JFR19SWF9EQVRBLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1RS
QU5TTUlULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1RYX0JZVEVfQ05ULCAxKSwNCj4g
K0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1RYX0hEUiwgMiksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JF
R19UWF9EQVRBLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0NMS19DVFJMMiwgMSksDQo+
ICtERUNMX1JFRyhSVDE3MTFIX1JFR19DTEtfQ1RSTDMsIDEpLA0KPiArREVDTF9SRUcoUlQxNzEx
SF9SRUdfQk1DX0NUUkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfQk1DSU9fUlhEWlNF
TCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19WQ09OTl9DTElNSVRFTiwgMSksDQo+ICtE
RUNMX1JFRyhSVDE3MTFIX1JFR19SVF9TVEFUVVMsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9S
RUdfUlRfSU5ULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JUX01BU0ssIDEpLA0KPiAr
REVDTF9SRUcoUlQxNzExSF9SRUdfSURMRV9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhf
UkVHX0lOVFJTVF9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1dBVENIRE9HX0NU
UkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfSTJDUlNUX0NUUkwsIDEpLA0KPiArREVD
TF9SRUcoUlQxNzExSF9SRUdfU1dSRVNFVCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19U
VENQQ19GSUxURVIsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfRFJQX1RPR0dMRV9DWUNM
RSwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19EUlBfRFVUWV9DVFJMLCAxKSwNCj4gK0RF
Q0xfUkVHKFJUMTcxMUhfUkVHX0JNQ0lPX1JYRFpFTiwgMSksIH07DQo+ICsNCj4gK3N0YXRpYyBj
b25zdCBjaGFyICpydDE3MTFoX2RiZ19maWxlbmFtZVtSVDE3MTFIX0RCR19NQVhdID0gew0KPiAr
ImxvZyIsICJyZWdzIiwgInJlZ19hZGRyIiwgImRhdGEiLA0KPiArfTsNCj4gKw0KPiArc3RhdGlj
IGJvb2wgcnQxNzExaF9sb2dfZnVsbChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwKSB7DQo+ICty
ZXR1cm4gY2hpcC0+bG9nYnVmZmVyX3RhaWwgPT0NCj4gKyhjaGlwLT5sb2didWZmZXJfaGVhZCAr
IDEpICUgTE9HX0JVRkZFUl9FTlRSSUVTOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9ydDE3MTFo
X2xvZyhzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLCBjb25zdCBjaGFyICpmbXQsDQo+ICsgdmFf
bGlzdCBhcmdzKQ0KPiArew0KPiArY2hhciB0bXBidWZmZXJbTE9HX0JVRkZFUl9FTlRSWV9TSVpF
XTsNCj4gK3U2NCB0c19uc2VjID0gbG9jYWxfY2xvY2soKTsNCj4gK3Vuc2lnbmVkIGxvbmcgcmVt
X25zZWM7DQo+ICsNCj4gK2lmICghY2hpcC0+bG9nYnVmZmVyW2NoaXAtPmxvZ2J1ZmZlcl9oZWFk
XSkgew0KPiArY2hpcC0+bG9nYnVmZmVyW2NoaXAtPmxvZ2J1ZmZlcl9oZWFkXSA9DQo+ICtkZXZt
X2t6YWxsb2MoY2hpcC0+ZGV2LCBMT0dfQlVGRkVSX0VOVFJZX1NJWkUsIEdGUF9LRVJORUwpOw0K
PiAraWYgKCFjaGlwLT5sb2didWZmZXJbY2hpcC0+bG9nYnVmZmVyX2hlYWRdKQ0KPiArcmV0dXJu
Ow0KPiArfQ0KPiArDQo+ICt2c25wcmludGYodG1wYnVmZmVyLCBzaXplb2YodG1wYnVmZmVyKSwg
Zm10LCBhcmdzKTsNCj4gKw0KPiArbXV0ZXhfbG9jaygmY2hpcC0+bG9nYnVmZmVyX2xvY2spOw0K
PiArDQo+ICtpZiAocnQxNzExaF9sb2dfZnVsbChjaGlwKSkgew0KPiArY2hpcC0+bG9nYnVmZmVy
X2hlYWQgPSBtYXgoY2hpcC0+bG9nYnVmZmVyX2hlYWQgLSAxLCAwKTsNCj4gK3N0cmxjcHkodG1w
YnVmZmVyLCAib3ZlcmZsb3ciLCBzaXplb2YodG1wYnVmZmVyKSk7DQo+ICt9DQo+ICsNCj4gK2lm
IChjaGlwLT5sb2didWZmZXJfaGVhZCA8IDAgfHwNCj4gK2NoaXAtPmxvZ2J1ZmZlcl9oZWFkID49
IExPR19CVUZGRVJfRU5UUklFUykgew0KPiArZGV2X3dhcm4oY2hpcC0+ZGV2LCAiJXMgYmFkIGxv
ZyBidWZmZXIgaW5kZXggJWRcbiIsIF9fZnVuY19fLA0KPiArY2hpcC0+bG9nYnVmZmVyX2hlYWQp
Ow0KPiArZ290byBhYm9ydDsNCj4gK30NCj4gKw0KPiAraWYgKCFjaGlwLT5sb2didWZmZXJbY2hp
cC0+bG9nYnVmZmVyX2hlYWRdKSB7DQo+ICtkZXZfd2FybihjaGlwLT5kZXYsICIlcyBsb2cgYnVm
ZmVyIGluZGV4ICVkIGlzIE5VTExcbiIsDQo+ICtfX2Z1bmNfXywgY2hpcC0+bG9nYnVmZmVyX2hl
YWQpOw0KPiArZ290byBhYm9ydDsNCj4gK30NCj4gKw0KPiArcmVtX25zZWMgPSBkb19kaXYodHNf
bnNlYywgMTAwMDAwMDAwMCk7DQo+ICtzY25wcmludGYoY2hpcC0+bG9nYnVmZmVyW2NoaXAtPmxv
Z2J1ZmZlcl9oZWFkXSwgTE9HX0JVRkZFUl9FTlRSWV9TSVpFLA0KPiArIlslNWx1LiUwNmx1XSAl
cyIsICh1bnNpZ25lZCBsb25nKXRzX25zZWMsIHJlbV9uc2VjIC8gMTAwMCwNCj4gKyAgdG1wYnVm
ZmVyKTsNCj4gK2NoaXAtPmxvZ2J1ZmZlcl9oZWFkID0gKGNoaXAtPmxvZ2J1ZmZlcl9oZWFkICsg
MSkgJQ0KPiArTE9HX0JVRkZFUl9FTlRSSUVTOw0KPiArDQo+ICthYm9ydDoNCj4gK211dGV4X3Vu
bG9jaygmY2hpcC0+bG9nYnVmZmVyX2xvY2spOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBy
dDE3MTFoX2xvZyhzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLA0KPiArY29uc3QgY2hhciAqZm10
LCAuLi4pDQo+ICt7DQo+ICt2YV9saXN0IGFyZ3M7DQo+ICsNCj4gK3ZhX3N0YXJ0KGFyZ3MsIGZt
dCk7DQo+ICtfcnQxNzExaF9sb2coY2hpcCwgZm10LCBhcmdzKTsNCj4gK3ZhX2VuZChhcmdzKTsN
Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBydDE3MTFoX2xvZ19zaG93KHN0cnVjdCBydDE3MTFo
X2NoaXAgKmNoaXAsIHN0cnVjdA0KPiArc2VxX2ZpbGUgKnMpIHsNCj4gK2ludCB0YWlsOw0KPiAr
DQo+ICttdXRleF9sb2NrKCZjaGlwLT5sb2didWZmZXJfbG9jayk7DQo+ICt0YWlsID0gY2hpcC0+
bG9nYnVmZmVyX3RhaWw7DQo+ICt3aGlsZSAodGFpbCAhPSBjaGlwLT5sb2didWZmZXJfaGVhZCkg
ew0KPiArc2VxX3ByaW50ZihzLCAiJXMiLCBjaGlwLT5sb2didWZmZXJbdGFpbF0pOw0KPiArdGFp
bCA9ICh0YWlsICsgMSkgJSBMT0dfQlVGRkVSX0VOVFJJRVM7DQo+ICt9DQo+ICtpZiAoIXNlcV9o
YXNfb3ZlcmZsb3dlZChzKSkNCj4gK2NoaXAtPmxvZ2J1ZmZlcl90YWlsID0gdGFpbDsNCj4gK211
dGV4X3VubG9jaygmY2hpcC0+bG9nYnVmZmVyX2xvY2spOw0KPiArDQo+ICtyZXR1cm4gMDsNCj4g
K30NCj4gKw0KPiArc3RhdGljIGludCBydDE3MTFoX3JlZ3Nfc2hvdyhzdHJ1Y3QgcnQxNzExaF9j
aGlwICpjaGlwLCBzdHJ1Y3QNCj4gK3NlcV9maWxlICpzKSB7DQo+ICtpbnQgcmV0ID0gMDsNCj4g
K2ludCBpID0gMCwgaiA9IDA7DQo+ICtzdHJ1Y3QgcmVnX2Rlc2MgKmRlc2MgPSBOVUxMOw0KPiAr
dWludDhfdCByZWd2YWxbMl0gPSB7MH07DQo+ICsNCj4gK2ZvciAoaSA9IDA7IGkgPCBBUlJBWV9T
SVpFKHJ0MTcxMWhfcmVnX2Rlc2MpOyBpKyspIHsNCj4gK2Rlc2MgPSAmcnQxNzExaF9yZWdfZGVz
Y1tpXTsNCj4gK3JldCA9IHJ0MTcxMWhfcmVnX2Jsb2NrX3JlYWQoY2hpcCwgZGVzYy0+YWRkciwg
ZGVzYy0+c2l6ZSwNCj4gK3JlZ3ZhbCk7DQo+ICtpZiAocmV0IDwgMCkgew0KPiArZGV2X2Vycihj
aGlwLT5kZXYsICIlcyByZWFkIHJlZzB4JTAyWCBmYWlsXG4iLA0KPiArX19mdW5jX18sIGRlc2Mt
PmFkZHIpOw0KPiArY29udGludWU7DQo+ICt9DQo+ICsNCj4gK3NlcV9wcmludGYocywgInJlZzB4
JTAyeDoweCIsIGRlc2MtPmFkZHIpOw0KPiArZm9yIChqID0gMDsgaiA8IGRlc2MtPnNpemU7IGor
KykNCj4gK3NlcV9wcmludGYocywgIiUwMngsIiwgcmVndmFsW2pdKTsNCj4gK3NlcV9wdXRzKHMs
ICJcbiIpOw0KPiArfQ0KPiArDQo+ICtyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu
bGluZSBpbnQgcnQxNzExaF9yZWdfYWRkcl9zaG93KHN0cnVjdCBydDE3MTFoX2NoaXAgKmNoaXAs
DQo+ICtzdHJ1Y3Qgc2VxX2ZpbGUgKnMpDQo+ICt7DQo+ICtzdHJ1Y3QgcmVnX2Rlc2MgKmRlc2Mg
PSAmcnQxNzExaF9yZWdfZGVzY1tjaGlwLT5kYmdfcmVnaWR4XTsNCj4gKw0KPiArc2VxX3ByaW50
ZihzLCAiMHglMDJ4XG4iLCBkZXNjLT5hZGRyKTsNCj4gK3JldHVybiAwOw0KPiArfQ0KPiArDQo+
ICtzdGF0aWMgaW5saW5lIGludCBydDE3MTFoX2RhdGFfc2hvdyhzdHJ1Y3QgcnQxNzExaF9jaGlw
ICpjaGlwLA0KPiArc3RydWN0IHNlcV9maWxlICpzKQ0KPiArew0KPiAraW50IHJldCA9IDAsIGkg
PSAwOw0KPiArc3RydWN0IHJlZ19kZXNjICpkZXNjID0gJnJ0MTcxMWhfcmVnX2Rlc2NbY2hpcC0+
ZGJnX3JlZ2lkeF07DQo+ICt1aW50OF90IHJlZ3ZhbFsyXSA9IHswfTsNCj4gKw0KPiArcmV0ID0g
cnQxNzExaF9yZWdfYmxvY2tfcmVhZChjaGlwLCBkZXNjLT5hZGRyLCBkZXNjLT5zaXplLCByZWd2
YWwpOw0KPiAraWYgKHJldCA8IDApDQo+ICtyZXR1cm4gcmV0Ow0KPiArDQo+ICtzZXFfcHJpbnRm
KHMsICJyZWcweCUwMng9MHgiLCBkZXNjLT5hZGRyKTsNCj4gK2ZvciAoaSA9IDA7IGkgPCBkZXNj
LT5zaXplOyBpKyspDQo+ICtzZXFfcHJpbnRmKHMsICIlMDJ4LCIsIHJlZ3ZhbFtpXSk7DQo+ICtz
ZXFfcHV0cyhzLCAiXG4iKTsNCj4gK3JldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50
IHJ0MTcxMWhfZGJnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KSB7DQo+ICtpbnQg
cmV0ID0gMDsNCj4gK3N0cnVjdCBydDE3MTFoX2RiZ19pbmZvICppbmZvID0gKHN0cnVjdCBydDE3
MTFoX2RiZ19pbmZvICopcy0+cHJpdmF0ZTsNCj4gK3N0cnVjdCBydDE3MTFoX2NoaXAgKmNoaXAg
PSBpbmZvLT5jaGlwOw0KPiArDQo+ICttdXRleF9sb2NrKCZjaGlwLT5kYmdvcHNfbG9jayk7DQo+
ICtzd2l0Y2ggKGluZm8tPmlkKSB7DQo+ICtjYXNlIFJUMTcxMUhfREJHX0xPRzoNCj4gK3JldCA9
IHJ0MTcxMWhfbG9nX3Nob3coY2hpcCwgcyk7DQo+ICticmVhazsNCj4gK2Nhc2UgUlQxNzExSF9E
QkdfUkVHUzoNCj4gK3JldCA9IHJ0MTcxMWhfcmVnc19zaG93KGNoaXAsIHMpOw0KPiArYnJlYWs7
DQo+ICtjYXNlIFJUMTcxMUhfREJHX1JFR19BRERSOg0KPiArcmV0ID0gcnQxNzExaF9yZWdfYWRk
cl9zaG93KGNoaXAsIHMpOw0KPiArYnJlYWs7DQo+ICtjYXNlIFJUMTcxMUhfREJHX0RBVEE6DQo+
ICtyZXQgPSBydDE3MTFoX2RhdGFfc2hvdyhjaGlwLCBzKTsNCj4gK2JyZWFrOw0KPiArZGVmYXVs
dDoNCj4gK3JldCA9IC1FSU5WQUw7DQo+ICticmVhazsNCj4gK30NCj4gKw0KPiArbXV0ZXhfdW5s
b2NrKCZjaGlwLT5kYmdvcHNfbG9jayk7DQo+ICtyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgaW50IHJ0MTcxMWhfZGJnX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp
bGUgKmZpbGUpIHsNCj4gK2lmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQ0KPiArcmV0dXJu
IHNpbmdsZV9vcGVuKGZpbGUsIHJ0MTcxMWhfZGJnX3Nob3csIGlub2RlLT5pX3ByaXZhdGUpOw0K
PiArZmlsZS0+cHJpdmF0ZV9kYXRhID0gaW5vZGUtPmlfcHJpdmF0ZTsNCj4gK3JldHVybiAwOw0K
PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGdldF9wYXJhbWV0ZXJzKGNoYXIgKmJ1ZiwgbG9uZyBp
bnQgKnBhcmFtMSwgaW50DQo+ICtudW1fb2ZfcGFyKSB7DQo+ICtjaGFyICp0b2tlbjsNCj4gK2lu
dCBiYXNlLCBjbnQ7DQo+ICsNCj4gK3Rva2VuID0gc3Ryc2VwKCZidWYsICIgIik7DQo+ICsNCj4g
K2ZvciAoY250ID0gMDsgY250IDwgbnVtX29mX3BhcjsgY250KyspIHsNCj4gK2lmICh0b2tlbiAh
PSBOVUxMKSB7DQo+ICtpZiAoKHRva2VuWzFdID09ICd4JykgfHwgKHRva2VuWzFdID09ICdYJykp
DQo+ICtiYXNlID0gMTY7DQo+ICtlbHNlDQo+ICtiYXNlID0gMTA7DQo+ICsNCj4gK2lmIChrc3Ry
dG91bCh0b2tlbiwgYmFzZSwgJnBhcmFtMVtjbnRdKSAhPSAwKQ0KPiArcmV0dXJuIC1FSU5WQUw7
DQo+ICsNCj4gK3Rva2VuID0gc3Ryc2VwKCZidWYsICIgIik7DQo+ICt9IGVsc2UNCj4gK3JldHVy
biAtRUlOVkFMOw0KPiArfQ0KPiArcmV0dXJuIDA7DQo+ICt9DQoNCldoYXQgaXMgdGhpcyBmdW5j
dGlvbiBkb2luZz8gIFdoYXQgaXMgeW91ciBkZWJ1Z2ZzIGZpbGVzIGZvcj8NCg0KVGhlcmUgYXJl
IDQgZGVidWcgZmlsZXMuDQpGaXJzdChsb2cpIGlzIGZvciBsb2dnaW5nIHdoaWNoIG5lZWRzIGEg
bG9jayBmb3IgbG9nIGJ1ZmZlci4gVGhlIHdheSB0byBsb2cgaXMgcmVmZXJlbmNlZCBmcm9tIGZ1
c2IzMDIgYW5kIHRjcG0uDQpTZWNvbmQocmVncykgaXMgdXNlZCB0byBkdW1wIGFsbCByZWdpc3Rl
ciBvZiBydDE3MTFoLg0KVGhpcmQocmVnX2FkZHIpJkZvcnRoKGRhdGEpIGFyZSB1c2VkIHRvIHdy
aXRlL3JlYWQgYSByZWdpc3RlciBzcGVjaWZpZWQgaW4gcmVnX2FkZHIuDQpUaGUgcmVhc29uIHRv
IGNyZWF0ZSB0aGVzZSBkZWJ1ZyBmaWxlcyBpcyB0byBtYWtlIGlzc3VlIHN1cHBvcnQgZWFzaWVy
Lg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQoNCj4gKyNpZmRlZiBDT05GSUdfREVCVUdfRlMNCj4gK3N0cnVj
dCBkZW50cnkgKmRiZ2RpcjsNCj4gK3N0cnVjdCBydDE3MTFoX2RiZ19pbmZvIGRiZ19pbmZvW1JU
MTcxMUhfREJHX01BWF07DQo+ICtzdHJ1Y3QgZGVudHJ5ICpkYmdfZmlsZXNbUlQxNzExSF9EQkdf
TUFYXTsNCj4gK2ludCBkYmdfcmVnaWR4Ow0KPiArc3RydWN0IG11dGV4IGRiZ29wc19sb2NrOw0K
PiArLyogbG9jayBmb3IgbG9nIGJ1ZmZlciBhY2Nlc3MgKi8NCj4gK3N0cnVjdCBtdXRleCBsb2di
dWZmZXJfbG9jazsNCj4gK2ludCBsb2didWZmZXJfaGVhZDsNCj4gK2ludCBsb2didWZmZXJfdGFp
bDsNCj4gK3U4ICpsb2didWZmZXJbTE9HX0JVRkZFUl9FTlRSSUVTXTsNCj4gKyNlbmRpZiAvKiBD
T05GSUdfREVCVUdfRlMgKi8NCg0KVGhhdCdzIGEgbG90IG9mIHN0dWZmIGpzdXQgZm9yIGRlYnVn
ZnMuICBXaHkgZG8geW91IGNhcmUgYWJvdXQgI2RlZmluZSBhdCBhbGw/ICBUaGUgY29kZSBzaG91
bGQgbm90Lg0KDQpJcyB0aGUgc3VnZ2VzdGlvbiB0byByZW1vdmUgI2lmZGVmIENPTkZJR19ERUJV
R19GUz8NCg0KQW5kIGFub3RoZXIgMiBsb2Nrcz8gIEljaywgbm8uDQoNCmRiZ29wc19sb2NrIGlz
IHVzZWQgdG8gcHJldmVudCB1c2VyIGZyb20gYWNjZXNzaW5nIGRpZmZlcmVudCBkZWJ1ZyBmaWxl
cyBzaW11bHRhbmVvdXNseS4NCklzIHRoZSBzdWdnZXN0aW9uIHRvIHVzZSB0aGUgbG9jayBvZiB0
aGUgZm9sbG93aW5nIG9uZT8NCj4gKy8qIGxvY2sgZm9yIHNoYXJpbmcgY2hpcCBzdGF0ZXMgKi8N
Cj4gK3N0cnVjdCBtdXRleCBsb2NrOw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCj4gK3NucHJpbnRmKGRp
cm5hbWUsIGxlbiArIDksICJydDE3MTFoLSVzIiwgZGV2X25hbWUoY2hpcC0+ZGV2KSk7DQo+ICtp
ZiAoIWNoaXAtPmRiZ2Rpcikgew0KPiArY2hpcC0+ZGJnZGlyID0gZGVidWdmc19jcmVhdGVfZGly
KGRpcm5hbWUsIE5VTEwpOw0KPiAraWYgKCFjaGlwLT5kYmdkaXIpDQo+ICtyZXR1cm4gLUVOT01F
TTsNCg0KTm8gbmVlZCB0byBldmVyIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZGVidWdmc18g
Y2FsbHMsIHlvdSBzaG91bGQgbm90IGNhcmUgYW5kIGNhbiBhbHdheXMgdXNlIHRoZSB2YWx1ZSB0
byBhbnkgZnV0dXJlIGRlYnVnZnMgY2FsbHMsIGlmIHlvdSByZWFsbHkgbmVlZCBpdC4NCg0KSWYg
aXQgaXMgTlVMTCB3aXRob3V0IGNoZWNraW5nIGFuZCB3ZSB1c2UgaXQgaW4gZGVidWdmc19jcmVh
dGVfZmlsZSwgYWxsIHRoZSBkZWJ1ZyBmaWxlcyB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIHJvb3Qg
b2YgdGhlIGRlYnVnZnMgZmlsZXN5c3RlbS4NCklzIHRoaXMgY29ycmVjdD8NCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KDQo+ICtmb3IgKGkgPSAwOyBpIDwgUlQxNzExSF9EQkdfTUFYOyBpKyspIHsNCj4gK2lu
Zm8gPSAmY2hpcC0+ZGJnX2luZm9baV07DQoNCnN0YXRpYyBhcnJheSBvZiBkZWJ1ZyBpbmZvPyAg
VGhhdCBmZWVscyBvZGQuDQoNCklzIHRoZSBzdWdnZXN0aW9uIHRvIHVzZSBwb2ludGVyIG9mIGFy
cmF5IGFuZCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgaXQ/DQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KTGlr
ZSBoZXJlLCB5b3UgZG9uJ3QgbmVlZCB0aGlzLCBhbmQgeW91IGRvbid0IG5lZWQgdG8gY2FyZSBh
Ym91dCB0aGUgcmV0dXJuIHZhbHVlLg0KDQo+ICtnb3RvIGVycjsNCj4gK30NCj4gK30NCj4gKw0K
PiArcmV0dXJuIDA7DQo+ICtlcnI6DQo+ICtkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2hpcC0+
ZGJnZGlyKTsNCj4gK3JldHVybiByZXQ7DQoNCldoeSBkbyB5b3UgY2FyZSBhYm91dCBhbiBlcnJv
ciBoZXJlPyAgWW91ciBjb2RlIHNob3VsZCBub3QgZG8gYW55dGhpbmcgZGlmZmVyZW50IGlmIGRl
YnVnZnMgc3R1ZmYgZG9lcyBub3Qgd29yayBvciBpZiBpdCBkb2VzLiAgSXQncyBkZWJ1Z2dpbmcg
b25seS4NCk9rLCB0aGlzIHdpbGwgYmUgcmVtb3ZlZC4NCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpCZXN0
IFJlZ2FyZHMsDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KU2h1LUZhbiBMZWUNClJp
Y2h0ZWsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbg0KVEVMOiArODg2LTMtNTUyNjc4OSAjMjM1OQ0K
RkFYOiArODg2LTMtNTUyNjYxMg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KLS0t
LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEdyZWcgS0ggW21haWx0bzpncmVnQGtyb2Fo
LmNvbV0NClNlbnQ6IFdlZG5lc2RheSwgSmFudWFyeSAxNywgMjAxOCA5OjQyIFBNDQpUbzogU2h1
RmFuTGVlDQpDYzogaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbTsgY3lfaHVhbmcotsCx
0q3sKTsgc2h1ZmFuX2xlZSin9a7RpnwpOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBs
aW51eC11c2JAdmdlci5rZXJuZWwub3JnDQpTdWJqZWN0OiBSZTogW1BBVENIXSBVU0IgVFlQRUM6
IFJUMTcxMUggVHlwZS1DIENoaXAgRHJpdmVyDQoNCk9uIFdlZCwgSmFuIDEwLCAyMDE4IGF0IDAy
OjU5OjEyUE0gKzA4MDAsIFNodUZhbkxlZSB3cm90ZToNCj4gRnJvbTogU2h1RmFuTGVlIDxzaHVm
YW5fbGVlQHJpY2h0ZWsuY29tPg0KPg0KPiBSaWNodGVrIFJUMTcxMUggVHlwZS1DIGNoaXAgZHJp
dmVyIHRoYXQgd29ya3Mgd2l0aCBUeXBlLUMgUG9ydA0KPiBDb250cm9sbGVyIE1hbmFnZXIgdG8g
cHJvdmlkZSBVU0IgUEQgYW5kIFVTQiBUeXBlLUMgZnVuY3Rpb25hbGl0aWVzLg0KPg0KPiBTaWdu
ZWQtb2ZmLWJ5OiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRlay5jb20+DQoNCk1pbm9yIHJl
dmlldyBvZiB5b3VyIG1haW4gc3RydWN0dXJlIGFuZCB5b3VyIGRlYnVnZnMgY29kZSBhbmQgb3Ro
ZXIgc3R1ZmYsIGFsbCBvZiB3aGljaCBuZWVkIHdvcms6DQoNCj4gLS0tDQo+ICAuLi4vZGV2aWNl
dHJlZS9iaW5kaW5ncy91c2IvcmljaHRlayxydDE3MTFoLnR4dCAgICB8ICAgMzggKw0KPiAgYXJj
aC9hcm02NC9ib290L2R0cy9oaXNpbGljb24vcnQxNzExaC5kdHNpICAgICAgICAgfCAgIDExICsN
Cj4gIGRyaXZlcnMvdXNiL3R5cGVjL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArDQo+ICBkcml2ZXJzL3VzYi90eXBlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgIDEgKw0KPiAgZHJpdmVycy91c2IvdHlwZWMvcnQxNzExaC9LY29uZmlnICAgICAg
ICAgICAgICAgICAgfCAgICA3ICsNCj4gIGRyaXZlcnMvdXNiL3R5cGVjL3J0MTcxMWgvTWFrZWZp
bGUgICAgICAgICAgICAgICAgIHwgICAgMiArDQo+ICBkcml2ZXJzL3VzYi90eXBlYy9ydDE3MTFo
L3J0MTcxMWguYyAgICAgICAgICAgICAgICB8IDIyNDEgKysrKysrKysrKysrKysrKysrKysNCj4g
IGRyaXZlcnMvdXNiL3R5cGVjL3J0MTcxMWgvcnQxNzExaC5oICAgICAgICAgICAgICAgIHwgIDMw
MCArKysNCj4gIDggZmlsZXMgY2hhbmdlZCwgMjYwMiBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUg
bW9kZSAxMDA2NDQNCj4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9yaWNo
dGVrLHJ0MTcxMWgudHh0DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib290L2R0
cy9oaXNpbGljb24vcnQxNzExaC5kdHNpDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91
c2IvdHlwZWMvcnQxNzExaC9LY29uZmlnICBjcmVhdGUgbW9kZQ0KPiAxMDA2NDQgZHJpdmVycy91
c2IvdHlwZWMvcnQxNzExaC9NYWtlZmlsZQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv
dXNiL3R5cGVjL3J0MTcxMWgvcnQxNzExaC5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy
cy91c2IvdHlwZWMvcnQxNzExaC9ydDE3MTFoLmgNCj4NCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcmljaHRlayxydDE3MTFoLnR4dA0KPiBiL0Rv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcmljaHRlayxydDE3MTFoLnR4dA0K
PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5jMjgyOTljDQo+IC0tLSAv
ZGV2L251bGwNCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9y
aWNodGVrLHJ0MTcxMWgudHh0DQo+IEBAIC0wLDAgKzEsMzggQEANCj4gK1JpY2h0ZWsgUlQxNzEx
SCBUeXBlLUMgUG9ydCBDb250cm9sbGVyLg0KPiArDQo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVzOg0K
PiArLSBjb21wYXRpYmxlIDogTXVzdCBiZSAicmljaHRlayx0eXBlY19ydDE3MTFoIjsNCj4gKy0g
cmVnIDogTXVzdCBiZSAweDRlLCBpdCdzIGRlZmF1bHQgc2xhdmUgYWRkcmVzcyBvZiBSVDE3MTFI
Lg0KPiArLSBydCxpbnRyX2dwaW8gOiBJUlEgR1BJTyBwaW4gdGhhdCdzIGNvbm5lY3RlZCB0byBS
VDE3MTFIIGludGVycnVwdC4NCj4gKw0KPiArT3B0aW9uYWwgbm9kZToNCj4gKy0gcnQsbmFtZSA6
IE5hbWUgdXNlZCBmb3IgcmVnaXN0ZXJpbmcgSVJRIGFuZCBjcmVhdGluZyBrdGhyZWFkLg0KPiAr
ICAgIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwgImRlZmF1bHQiIHdpbGwgYmUg
YXBwbGllZC4NCj4gKy0gcnQsZGVmX3JvbGUgOiBEZWZhdWx0IHBvcnQgcm9sZSAoVFlQRUNfU0lO
SygwKSBvciBUWVBFQ19TT1VSQ0UoMSkpLg0KPiArU2V0IHRvIFRZUEVDX05PX1BSRUZFUlJFRF9S
T0xFKC0xKSBpZiBubyBkZWZhdWx0IHJvbGUuDQo+ICtJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBz
cGVjaWZpZWQsIFRZUEVDX1NJTksgd2lsbCBiZSBhcHBsaWVkLg0KPiArLSBydCxwb3J0X3R5cGUg
OiBQb3J0IHR5cGUgKFRZUEVDX1BPUlRfREZQKDApLCBUWVBFQ19QT1JUX1VGUCgxKSwNCj4gKyBv
ciBUWVBFQ19QT1JUX0RSUCgyKSkuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwN
Cj4gKyBUWVBFQ19QT1JUX0RSUCB3aWxsIGJlIGFwcGxpZWQuDQo+ICstIHJ0LG1heF9zbmtfbXYg
OiBNYXhpbXVtIGFjY2VwdGFibGUgc2luayB2b2x0YWdlIGluIG1WLg0KPiArICBJZiB0aGlzIHBy
b3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQsIDUwMDBtViB3aWxsIGJlIGFwcGxpZWQuDQo+ICstIHJ0
LG1heF9zbmtfbWEgOiBNYXhpbXVtIHNpbmsgY3VycmVudCBpbiBtQS4NCj4gKyAgSWYgdGhpcyBw
cm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkLCAzMDAwbUEgd2lsbCBiZSBhcHBsaWVkLg0KPiArLSBy
dCxtYXhfc25rX213IDogTWF4aW11bSByZXF1aXJlZCBzaW5rIHBvd2VyIGluIG1XLg0KPiArICBJ
ZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQsIDE1MDAwbVcgd2lsbCBiZSBhcHBsaWVk
Lg0KPiArLSBydCxvcGVyYXRpbmdfc25rX213IDogUmVxdWlyZWQgb3BlcmF0aW5nIHNpbmsgcG93
ZXIgaW4gbVcuDQo+ICtJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQsDQo+ICsyNTAw
bVcgd2lsbCBiZSBhcHBsaWVkLg0KPiArLSBydCx0cnlfcm9sZV9odyA6IFRydWUgaWYgdHJ5LntT
cmMsU25rfSBpcyBpbXBsZW1lbnRlZCBpbiBoYXJkd2FyZS4NCj4gKyAgIElmIHRoaXMgcHJvcGVy
dHkgaXMgbm90IHNwZWNpZmllZCwgRmFsc2Ugd2lsbCBiZSBhcHBsaWVkLg0KPiArDQo+ICtFeGFt
cGxlOg0KPiArcnQxNzExaEA0ZSB7DQo+ICtzdGF0dXMgPSAib2siOw0KPiArY29tcGF0aWJsZSA9
ICJyaWNodGVrLHR5cGVjX3J0MTcxMWgiOw0KPiArcmVnID0gPDB4NGU+Ow0KPiArcnQsaW50cl9n
cGlvID0gPCZncGlvMjYgMCAweDA+Ow0KPiArcnQsbmFtZSA9ICJydDE3MTFoIjsNCj4gK3J0LHBv
cnRfdHlwZSA9IDwyPjsgLyogMDogREZQLCAxOiBVRlAsIDI6IERSUCAqLw0KPiArcnQsZGVmX3Jv
bGUgPSA8MD47IC8qIDA6IFNOSywgMTogU1JDLCAtMTogVFlQRUNfTk9fUFJFRkVSUkVEX1JPTEUg
Ki8NCj4gK307DQoNCmR0cyBzdHVmZiBuZWVkcyB0byBhbHdheXMgYmUgaW4gYSBzZXBhcmF0ZSBm
aWxlIHNvIHRoZSBEVCBtYWludGFpbmVycyBjYW4gcmV2aWV3L2FjayBpdC4gIFNwbGl0IHRoaXMg
cGF0Y2ggdXAgaW50byBzbWFsbGVyIHBpZWNlcyBwbGVhc2UuDQoNCg0KPiBkaWZmIC0tZ2l0IGEv
YXJjaC9hcm02NC9ib290L2R0cy9oaXNpbGljb24vcnQxNzExaC5kdHNpDQo+IGIvYXJjaC9hcm02
NC9ib290L2R0cy9oaXNpbGljb24vcnQxNzExaC5kdHNpDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0
DQo+IGluZGV4IDAwMDAwMDAuLjQxOTZjYzANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9hcmNo
L2FybTY0L2Jvb3QvZHRzL2hpc2lsaWNvbi9ydDE3MTFoLmR0c2kNCj4gQEAgLTAsMCArMSwxMSBA
QA0KPiArJmkyYzcgew0KPiArcnQxNzExaEA0ZSB7DQo+ICtzdGF0dXMgPSAib2siOw0KPiArY29t
cGF0aWJsZSA9ICJyaWNodGVrLHR5cGVjX3J0MTcxMWgiOw0KPiArcmVnID0gPDB4NGU+Ow0KPiAr
cnQsaW50cl9ncGlvID0gPCZncGlvMjYgMCAweDA+Ow0KPiArcnQsbmFtZSA9ICJydDE3MTFoIjsN
Cj4gK3J0LHBvcnRfdHlwZSA9IDwyPjsgLyogMDogREZQLCAxOiBVRlAsIDI6IERSUCAqLw0KPiAr
cnQsZGVmX3JvbGUgPSA8MD47IC8qIDA6IFNOSywgMTogU1JDICovDQo+ICt9Ow0KPiArfTsNCj4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL0tjb25maWcgYi9kcml2ZXJzL3VzYi90eXBl
Yy9LY29uZmlnDQo+IGluZGV4IGJjYjI3NDQuLjdiZWRlMGIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl
cnMvdXNiL3R5cGVjL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy91c2IvdHlwZWMvS2NvbmZpZw0K
PiBAQCAtNTYsNiArNTYsOCBAQCBpZiBUWVBFQ19UQ1BNDQo+DQo+ICBzb3VyY2UgImRyaXZlcnMv
dXNiL3R5cGVjL2Z1c2IzMDIvS2NvbmZpZyINCj4NCj4gK3NvdXJjZSAiZHJpdmVycy91c2IvdHlw
ZWMvcnQxNzExaC9LY29uZmlnIg0KPiArDQo+ICBjb25maWcgVFlQRUNfV0NPVkUNCj4gIHRyaXN0
YXRlICJJbnRlbCBXaGlza2V5Q292ZSBQTUlDIFVTQiBUeXBlLUMgUEhZIGRyaXZlciINCj4gIGRl
cGVuZHMgb24gQUNQSQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvTWFrZWZpbGUg
Yi9kcml2ZXJzL3VzYi90eXBlYy9NYWtlZmlsZQ0KPiBpbmRleCBiYjMxMzhhLi5lM2FhZjNjIDEw
MDY0NA0KPiAtLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJz
L3VzYi90eXBlYy9NYWtlZmlsZQ0KPiBAQCAtMiw2ICsyLDcgQEANCj4gIG9iai0kKENPTkZJR19U
WVBFQykrPSB0eXBlYy5vDQo+ICBvYmotJChDT05GSUdfVFlQRUNfVENQTSkrPSB0Y3BtLm8NCj4g
IG9iai15Kz0gZnVzYjMwMi8NCj4gK29iai0kKENPTkZJR19UWVBFQ19SVDE3MTFIKSs9IHJ0MTcx
MWgvDQoNCldoeSBkbyB5b3UgbmVlZCBhIHdob2xlIGRpcmVjdG9yeSBmb3Igb25lIGZpbGU/DQoN
Cg0KPiAgb2JqLSQoQ09ORklHX1RZUEVDX1dDT1ZFKSs9IHR5cGVjX3djb3ZlLm8NCj4gIG9iai0k
KENPTkZJR19UWVBFQ19VQ1NJKSs9IHVjc2kvDQo+ICBvYmotJChDT05GSUdfVFlQRUNfVFBTNjU5
OFgpKz0gdHBzNjU5OHgubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvdHlwZWMvcnQxNzEx
aC9LY29uZmlnDQo+IGIvZHJpdmVycy91c2IvdHlwZWMvcnQxNzExaC9LY29uZmlnDQo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjJmYmZmZjUNCj4gLS0tIC9kZXYvbnVs
bA0KPiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy9ydDE3MTFoL0tjb25maWcNCj4gQEAgLTAsMCAr
MSw3IEBADQo+ICtjb25maWcgVFlQRUNfUlQxNzExSA0KPiArdHJpc3RhdGUgIlJpY2h0ZWsgUlQx
NzExSCBUeXBlLUMgY2hpcCBkcml2ZXIiDQo+ICtkZXBlbmRzIG9uIEkyQyAmJiBQT1dFUl9TVVBQ
TFkNCj4gK2hlbHANCj4gKyAgVGhlIFJpY2h0ZWsgUlQxNzExSCAgIFR5cGUtQyBjaGlwIGRyaXZl
ciB0aGF0IHdvcmtzIHdpdGgNCj4gKyAgVHlwZS1DIFBvcnQgQ29udHJvbGxlciBNYW5hZ2VyIHRv
IHByb3ZpZGUgVVNCIFBEIGFuZCBVU0INCj4gKyAgVHlwZS1DIGZ1bmN0aW9uYWxpdGllcy4NCj4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3J0MTcxMWgvTWFrZWZpbGUNCj4gYi9kcml2
ZXJzL3VzYi90eXBlYy9ydDE3MTFoL01ha2VmaWxlDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+
IGluZGV4IDAwMDAwMDAuLjVmYWI4YWUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJz
L3VzYi90eXBlYy9ydDE3MTFoL01ha2VmaWxlDQo+IEBAIC0wLDAgKzEsMiBAQA0KPiArIyBTUERY
LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArb2JqLSQoQ09ORklHX1RZUEVDX1JUMTcx
MUgpKz0gcnQxNzExaC5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9ydDE3MTFo
L3J0MTcxMWguYw0KPiBiL2RyaXZlcnMvdXNiL3R5cGVjL3J0MTcxMWgvcnQxNzExaC5jDQo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjFhZWYzZTgNCj4gLS0tIC9kZXYv
bnVsbA0KPiArKysgYi9kcml2ZXJzL3VzYi90eXBlYy9ydDE3MTFoL3J0MTcxMWguYw0KPiBAQCAt
MCwwICsxLDIyNDEgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0K
PiArLyoNCj4gKyAqIENvcHlyaWdodCAyMDE3IFJpY2h0ZWsgVGVjaG5vbG9naCBDb3JwLg0KPiAr
ICoNCj4gKyAqIFJpY2h0ZWsgUlQxNzExSCBUeXBlLUMgQ2hpcCBEcml2ZXIgICovDQo+ICsNCj4g
KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4N
Cj4gKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvZXJyLmg+
DQo+ICsjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1
bnRpbWUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC91
c2IvdHlwZWMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC91c2IvdGNwbS5oPg0KPiArI2luY2x1ZGUg
PGxpbnV4L3VzYi9wZC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4NCj4gKyNpbmNs
dWRlIDxsaW51eC9vZi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ICsjaW5jbHVk
ZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1
bWVyLmg+ICNpbmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHkuaD4NCj4gKyNpbmNsdWRlIDxsaW51
eC9leHRjb24uaD4gI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPiAjaW5jbHVkZQ0KPiArPGxp
bnV4L2t0aHJlYWQuaD4gI2luY2x1ZGUgPGxpbnV4L2NwdS5oPiAjaW5jbHVkZQ0KPiArPGxpbnV4
L2FsYXJtdGltZXIuaD4gI2luY2x1ZGUgPGxpbnV4L3NjaGVkL2Nsb2NrLmg+ICNpbmNsdWRlDQo+
ICs8dWFwaS9saW51eC9zY2hlZC90eXBlcy5oPg0KDQpUaGlzIGxhc3QgI2luY2x1ZGUgc2hvdWxk
IG5vdCBiZSBuZWVkZWQuICBJZiBpdCBkb2VzLCB5b3UgYXJlIGRvaW5nIHNvbWV0aGluZyByZWFs
bHkgd3JvbmcuLi4NCg0KPiArDQo+ICsjaW5jbHVkZSAicnQxNzExaC5oIg0KDQpXaHkgYSAuaCBm
aWxlIGZvciBhIHNpbmdsZSAuYyBmaWxlPw0KDQo+ICsNCj4gKyNkZWZpbmUgUlQxNzExSF9EUlZf
VkVSU0lPTiIxLjAuMyINCg0KV2hlbiBjb2RlIGlzIGluIHRoZSBrZXJuZWwgdHJlZSwgdmVyc2lv
bnMgbWVhbiBub3RoaW5nLCB5b3Ugd2lsbCBub3RlIHRoYXQgbm8gb3RoZXIgVVNCIGRyaXZlciBo
YXMgdGhlbSwgcmlnaHQ/ICBQbGVhc2UgcmVtb3ZlLg0KDQoNCj4gKw0KPiArI2RlZmluZSBMT0df
QlVGRkVSX0VOVFJJRVMxMDI0DQo+ICsjZGVmaW5lIExPR19CVUZGRVJfRU5UUllfU0laRTEyOCAv
KiAxMjggY2hhciBwZXIgbGluZSAqLw0KPiArDQo+ICtlbnVtIHsNCj4gK1JUMTcxMUhfREJHX0xP
RyA9IDAsDQo+ICtSVDE3MTFIX0RCR19SRUdTLA0KPiArUlQxNzExSF9EQkdfUkVHX0FERFIsDQo+
ICtSVDE3MTFIX0RCR19EQVRBLA0KPiArUlQxNzExSF9EQkdfTUFYLA0KPiArfTsNCj4gKw0KPiAr
c3RydWN0IHJ0MTcxMWhfZGJnX2luZm8gew0KPiArc3RydWN0IHJ0MTcxMWhfY2hpcCAqY2hpcDsN
Cj4gK2ludCBpZDsNCj4gK307DQo+ICsNCj4gKw0KPiArc3RydWN0IHJ0MTcxMWhfY2hpcCB7DQo+
ICtzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjOw0KPiArc3RydWN0IGRldmljZSAqZGV2Ow0KPiArdWlu
dDE2X3QgZGlkOw0KDQprZXJuZWwgdHlwZXMgYXJlIHUxNiwgdTMyLCB1OCwgYW5kIHRoZSBsaWtl
LCBub3QgdWludDE2X3QsIHRob3NlIGFyZSBmb3IgdXNlcnNwYWNlIGNvZGUgb25seS4NCg0KWWVh
aCwgb3RoZXIgZHJpdmVycyBkbyBpdCwgYnV0IHlvdSBzaG91bGRuJ3QgOikNCg0KDQo+ICtpbnQg
aXJxX2dwaW87DQo+ICtpbnQgaXJxOw0KPiArY2hhciAqbmFtZTsNCj4gK3N0cnVjdCB0Y3BjX2Rl
diB0Y3BjX2RldjsNCj4gK3N0cnVjdCB0Y3BjX2NvbmZpZyB0Y3BjX2NmZzsNCj4gK3N0cnVjdCB0
Y3BtX3BvcnQgKnRjcG1fcG9ydDsNCj4gK3N0cnVjdCByZWd1bGF0b3IgKnZidXM7DQo+ICtzdHJ1
Y3QgZXh0Y29uX2RldiAqZXh0Y29uOw0KPiArDQo+ICsvKiBJUlEgKi8NCj4gK3N0cnVjdCBrdGhy
ZWFkX3dvcmtlciBpcnFfd29ya2VyOw0KPiArc3RydWN0IGt0aHJlYWRfd29yayBpcnFfd29yazsN
Cj4gK3N0cnVjdCB0YXNrX3N0cnVjdCAqaXJxX3dvcmtlcl90YXNrOw0KDQozIHRoaW5ncyBmb3Ig
YW4gaXJxIGhhbmRsZXI/ICBUaGF0IGZlZWxzIHdyb25nLg0KDQo+ICthdG9taWNfdCBwb2xsX2Nv
dW50Ow0KDQpMaWtlIEkgc2FpZCBiZWZvcmUsIHdoeSBpcyB0aGlzIGFuIGF0b21pYz8NCg0KPiAr
c3RydWN0IGRlbGF5ZWRfd29yayBwb2xsX3dvcms7DQo+ICsNCj4gKy8qIExQTSAqLw0KPiArc3Ry
dWN0IGRlbGF5ZWRfd29yayB3YWtldXBfd29yazsNCj4gK3N0cnVjdCBhbGFybSB3YWtldXBfdGlt
ZXI7DQo+ICtzdHJ1Y3QgbXV0ZXggd2FrZXVwX2xvY2s7DQo+ICtlbnVtIHR5cGVjX2NjX3B1bGwg
bHBtX3B1bGw7DQo+ICtib29sIHdha2V1cF9vbmNlOw0KPiArYm9vbCBsb3dfcnBfZHV0eV9jbnRk
b3duOw0KPiArYm9vbCBjYWJsZV9vbmx5Ow0KPiArYm9vbCBscG07DQo+ICsNCj4gKy8qIEkyQyAq
Lw0KPiArYXRvbWljX3QgaTJjX2J1c3k7DQo+ICthdG9taWNfdCBwbV9zdXNwZW5kOw0KDQpXaHkg
YXJlIHRoZXNlIGF0b21pYz8gIFlvdSBrbm93IHRoYXQgZG9lc24ndCBtZWFuIHRoZXkgZG8gbm90
IG5lZWQgbG9ja2luZywgcmlnaHQ/DQoNCj4gKw0KPiArLyogcHN5ICsgcHN5IHN0YXR1cyAqLw0K
PiArc3RydWN0IHBvd2VyX3N1cHBseSAqcHN5Ow0KPiArdTMyIGN1cnJlbnRfbGltaXQ7DQo+ICt1
MzIgc3VwcGx5X3ZvbHRhZ2U7DQo+ICsNCj4gKy8qIGxvY2sgZm9yIHNoYXJpbmcgY2hpcCBzdGF0
ZXMgKi8NCj4gK3N0cnVjdCBtdXRleCBsb2NrOw0KDQpIb3cgbWFueSBsb2NrcyBkbyB5b3UgaGF2
ZSBpbiB0aGlzIHN0cnVjdHVyZT8gIFlvdSBzaG91bGQgb25seSBuZWVkIDEuDQoNCj4gKw0KPiAr
LyogcG9ydCBzdGF0dXMgKi8NCj4gK2Jvb2wgdmNvbm5fb247DQo+ICtib29sIHZidXNfb247DQo+
ICtib29sIGNoYXJnZV9vbjsNCj4gK2Jvb2wgdmJ1c19wcmVzZW50Ow0KPiArZW51bSB0eXBlY19j
Y19wb2xhcml0eSBwb2xhcml0eTsNCj4gK2VudW0gdHlwZWNfY2Nfc3RhdHVzIGNjMTsNCj4gK2Vu
dW0gdHlwZWNfY2Nfc3RhdHVzIGNjMjsNCj4gK2VudW0gdHlwZWNfcm9sZSBwd3Jfcm9sZTsNCj4g
K2Jvb2wgZHJwX3RvZ2dsaW5nOw0KPiArDQo+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+ICtz
dHJ1Y3QgZGVudHJ5ICpkYmdkaXI7DQo+ICtzdHJ1Y3QgcnQxNzExaF9kYmdfaW5mbyBkYmdfaW5m
b1tSVDE3MTFIX0RCR19NQVhdOw0KPiArc3RydWN0IGRlbnRyeSAqZGJnX2ZpbGVzW1JUMTcxMUhf
REJHX01BWF07DQo+ICtpbnQgZGJnX3JlZ2lkeDsNCj4gK3N0cnVjdCBtdXRleCBkYmdvcHNfbG9j
azsNCj4gKy8qIGxvY2sgZm9yIGxvZyBidWZmZXIgYWNjZXNzICovDQo+ICtzdHJ1Y3QgbXV0ZXgg
bG9nYnVmZmVyX2xvY2s7DQo+ICtpbnQgbG9nYnVmZmVyX2hlYWQ7DQo+ICtpbnQgbG9nYnVmZmVy
X3RhaWw7DQo+ICt1OCAqbG9nYnVmZmVyW0xPR19CVUZGRVJfRU5UUklFU107DQo+ICsjZW5kaWYg
LyogQ09ORklHX0RFQlVHX0ZTICovDQoNClRoYXQncyBhIGxvdCBvZiBzdHVmZiBqc3V0IGZvciBk
ZWJ1Z2ZzLiAgV2h5IGRvIHlvdSBjYXJlIGFib3V0ICNkZWZpbmUgYXQgYWxsPyAgVGhlIGNvZGUg
c2hvdWxkIG5vdC4NCg0KQW5kIGFub3RoZXIgMiBsb2Nrcz8gIEljaywgbm8uDQoNCg0KPiArfTsN
Cj4gKw0KPiArLyoNCj4gKyAqIExvZ2dpbmcgJiBkZWJ1Z2dpbmcNCj4gKyAqLw0KPiArDQo+ICsj
aWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+ICsNCj4gK3N0YXRpYyBpbnQgcnQxNzExaF9yZWdfYmxv
Y2tfcmVhZChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLCB1aW50OF90IHJlZywNCj4gK2ludCBs
ZW4sIHVpbnQ4X3QgKmRhdGEpOw0KPiArc3RhdGljIGludCBydDE3MTFoX3JlZ19ibG9ja193cml0
ZShzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLCB1aW50OF90IHJlZywNCj4gK2ludCBsZW4sIGNv
bnN0IHVpbnQ4X3QgKmRhdGEpOw0KPiArDQo+ICtzdHJ1Y3QgcmVnX2Rlc2Mgew0KPiArdWludDhf
dCBhZGRyOw0KPiArdWludDhfdCBzaXplOw0KPiArfTsNCj4gKyNkZWZpbmUgREVDTF9SRUcoX2Fk
ZHIsIF9zaXplKSB7LmFkZHIgPSBfYWRkciwgLnNpemUgPSBfc2l6ZX0NCj4gKw0KPiArc3RhdGlj
IHN0cnVjdCByZWdfZGVzYyBydDE3MTFoX3JlZ19kZXNjW10gPSB7DQo+ICtERUNMX1JFRyhSVDE3
MTFIX1JFR19WSUQsIDIpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfUElELCAyKSwNCj4gK0RF
Q0xfUkVHKFJUMTcxMUhfUkVHX0RJRCwgMiksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19UWVBF
Q19SRVYsIDIpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfUERfUkVWLCAyKSwNCj4gK0RFQ0xf
UkVHKFJUMTcxMUhfUkVHX1BESUZfUkVWLCAyKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0FM
RVJULCAyKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0FMRVJUX01BU0ssIDIpLA0KPiArREVD
TF9SRUcoUlQxNzExSF9SRUdfUE9XRVJfU1RBVFVTX01BU0ssIDEpLA0KPiArREVDTF9SRUcoUlQx
NzExSF9SRUdfRkFVTFRfU1RBVFVTX01BU0ssIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdf
VENQQ19DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JPTEVfQ1RSTCwgMSksDQo+
ICtERUNMX1JFRyhSVDE3MTFIX1JFR19GQVVMVF9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcx
MUhfUkVHX1BPV0VSX0NUUkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfQ0NfU1RBVFVT
LCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1BPV0VSX1NUQVRVUywgMSksDQo+ICtERUNM
X1JFRyhSVDE3MTFIX1JFR19GQVVMVF9TVEFUVVMsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9S
RUdfQ09NTUFORCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19NU0dfSERSX0lORk8sIDEp
LA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfUlhfREVURUNULCAxKSwNCj4gK0RFQ0xfUkVHKFJU
MTcxMUhfUkVHX1JYX0JZVEVfQ05ULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JYX0JV
Rl9GUkFNRV9UWVBFLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JYX0hEUiwgMiksDQo+
ICtERUNMX1JFRyhSVDE3MTFIX1JFR19SWF9EQVRBLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhf
UkVHX1RSQU5TTUlULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1RYX0JZVEVfQ05ULCAx
KSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1RYX0hEUiwgMiksDQo+ICtERUNMX1JFRyhSVDE3
MTFIX1JFR19UWF9EQVRBLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0NMS19DVFJMMiwg
MSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19DTEtfQ1RSTDMsIDEpLA0KPiArREVDTF9SRUco
UlQxNzExSF9SRUdfQk1DX0NUUkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfQk1DSU9f
UlhEWlNFTCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19WQ09OTl9DTElNSVRFTiwgMSks
DQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19SVF9TVEFUVVMsIDEpLA0KPiArREVDTF9SRUcoUlQx
NzExSF9SRUdfUlRfSU5ULCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1JUX01BU0ssIDEp
LA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfSURMRV9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJU
MTcxMUhfUkVHX0lOVFJTVF9DVFJMLCAxKSwNCj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX1dBVENI
RE9HX0NUUkwsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfSTJDUlNUX0NUUkwsIDEpLA0K
PiArREVDTF9SRUcoUlQxNzExSF9SRUdfU1dSRVNFVCwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFI
X1JFR19UVENQQ19GSUxURVIsIDEpLA0KPiArREVDTF9SRUcoUlQxNzExSF9SRUdfRFJQX1RPR0dM
RV9DWUNMRSwgMSksDQo+ICtERUNMX1JFRyhSVDE3MTFIX1JFR19EUlBfRFVUWV9DVFJMLCAxKSwN
Cj4gK0RFQ0xfUkVHKFJUMTcxMUhfUkVHX0JNQ0lPX1JYRFpFTiwgMSksIH07DQo+ICsNCj4gK3N0
YXRpYyBjb25zdCBjaGFyICpydDE3MTFoX2RiZ19maWxlbmFtZVtSVDE3MTFIX0RCR19NQVhdID0g
ew0KPiArImxvZyIsICJyZWdzIiwgInJlZ19hZGRyIiwgImRhdGEiLA0KPiArfTsNCj4gKw0KPiAr
c3RhdGljIGJvb2wgcnQxNzExaF9sb2dfZnVsbChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwKSB7
DQo+ICtyZXR1cm4gY2hpcC0+bG9nYnVmZmVyX3RhaWwgPT0NCj4gKyhjaGlwLT5sb2didWZmZXJf
aGVhZCArIDEpICUgTE9HX0JVRkZFUl9FTlRSSUVTOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9y
dDE3MTFoX2xvZyhzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLCBjb25zdCBjaGFyICpmbXQsDQo+
ICsgdmFfbGlzdCBhcmdzKQ0KPiArew0KPiArY2hhciB0bXBidWZmZXJbTE9HX0JVRkZFUl9FTlRS
WV9TSVpFXTsNCj4gK3U2NCB0c19uc2VjID0gbG9jYWxfY2xvY2soKTsNCj4gK3Vuc2lnbmVkIGxv
bmcgcmVtX25zZWM7DQo+ICsNCj4gK2lmICghY2hpcC0+bG9nYnVmZmVyW2NoaXAtPmxvZ2J1ZmZl
cl9oZWFkXSkgew0KPiArY2hpcC0+bG9nYnVmZmVyW2NoaXAtPmxvZ2J1ZmZlcl9oZWFkXSA9DQo+
ICtkZXZtX2t6YWxsb2MoY2hpcC0+ZGV2LCBMT0dfQlVGRkVSX0VOVFJZX1NJWkUsIEdGUF9LRVJO
RUwpOw0KPiAraWYgKCFjaGlwLT5sb2didWZmZXJbY2hpcC0+bG9nYnVmZmVyX2hlYWRdKQ0KPiAr
cmV0dXJuOw0KPiArfQ0KPiArDQo+ICt2c25wcmludGYodG1wYnVmZmVyLCBzaXplb2YodG1wYnVm
ZmVyKSwgZm10LCBhcmdzKTsNCj4gKw0KPiArbXV0ZXhfbG9jaygmY2hpcC0+bG9nYnVmZmVyX2xv
Y2spOw0KPiArDQo+ICtpZiAocnQxNzExaF9sb2dfZnVsbChjaGlwKSkgew0KPiArY2hpcC0+bG9n
YnVmZmVyX2hlYWQgPSBtYXgoY2hpcC0+bG9nYnVmZmVyX2hlYWQgLSAxLCAwKTsNCj4gK3N0cmxj
cHkodG1wYnVmZmVyLCAib3ZlcmZsb3ciLCBzaXplb2YodG1wYnVmZmVyKSk7DQo+ICt9DQo+ICsN
Cj4gK2lmIChjaGlwLT5sb2didWZmZXJfaGVhZCA8IDAgfHwNCj4gK2NoaXAtPmxvZ2J1ZmZlcl9o
ZWFkID49IExPR19CVUZGRVJfRU5UUklFUykgew0KPiArZGV2X3dhcm4oY2hpcC0+ZGV2LCAiJXMg
YmFkIGxvZyBidWZmZXIgaW5kZXggJWRcbiIsIF9fZnVuY19fLA0KPiArY2hpcC0+bG9nYnVmZmVy
X2hlYWQpOw0KPiArZ290byBhYm9ydDsNCj4gK30NCj4gKw0KPiAraWYgKCFjaGlwLT5sb2didWZm
ZXJbY2hpcC0+bG9nYnVmZmVyX2hlYWRdKSB7DQo+ICtkZXZfd2FybihjaGlwLT5kZXYsICIlcyBs
b2cgYnVmZmVyIGluZGV4ICVkIGlzIE5VTExcbiIsDQo+ICtfX2Z1bmNfXywgY2hpcC0+bG9nYnVm
ZmVyX2hlYWQpOw0KPiArZ290byBhYm9ydDsNCj4gK30NCj4gKw0KPiArcmVtX25zZWMgPSBkb19k
aXYodHNfbnNlYywgMTAwMDAwMDAwMCk7DQo+ICtzY25wcmludGYoY2hpcC0+bG9nYnVmZmVyW2No
aXAtPmxvZ2J1ZmZlcl9oZWFkXSwgTE9HX0JVRkZFUl9FTlRSWV9TSVpFLA0KPiArIlslNWx1LiUw
Nmx1XSAlcyIsICh1bnNpZ25lZCBsb25nKXRzX25zZWMsIHJlbV9uc2VjIC8gMTAwMCwNCj4gKyAg
dG1wYnVmZmVyKTsNCj4gK2NoaXAtPmxvZ2J1ZmZlcl9oZWFkID0gKGNoaXAtPmxvZ2J1ZmZlcl9o
ZWFkICsgMSkgJQ0KPiArTE9HX0JVRkZFUl9FTlRSSUVTOw0KPiArDQo+ICthYm9ydDoNCj4gK211
dGV4X3VubG9jaygmY2hpcC0+bG9nYnVmZmVyX2xvY2spOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg
dm9pZCBydDE3MTFoX2xvZyhzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwLA0KPiArY29uc3QgY2hh
ciAqZm10LCAuLi4pDQo+ICt7DQo+ICt2YV9saXN0IGFyZ3M7DQo+ICsNCj4gK3ZhX3N0YXJ0KGFy
Z3MsIGZtdCk7DQo+ICtfcnQxNzExaF9sb2coY2hpcCwgZm10LCBhcmdzKTsNCj4gK3ZhX2VuZChh
cmdzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBydDE3MTFoX2xvZ19zaG93KHN0cnVjdCBy
dDE3MTFoX2NoaXAgKmNoaXAsIHN0cnVjdA0KPiArc2VxX2ZpbGUgKnMpIHsNCj4gK2ludCB0YWls
Ow0KPiArDQo+ICttdXRleF9sb2NrKCZjaGlwLT5sb2didWZmZXJfbG9jayk7DQo+ICt0YWlsID0g
Y2hpcC0+bG9nYnVmZmVyX3RhaWw7DQo+ICt3aGlsZSAodGFpbCAhPSBjaGlwLT5sb2didWZmZXJf
aGVhZCkgew0KPiArc2VxX3ByaW50ZihzLCAiJXMiLCBjaGlwLT5sb2didWZmZXJbdGFpbF0pOw0K
PiArdGFpbCA9ICh0YWlsICsgMSkgJSBMT0dfQlVGRkVSX0VOVFJJRVM7DQo+ICt9DQo+ICtpZiAo
IXNlcV9oYXNfb3ZlcmZsb3dlZChzKSkNCj4gK2NoaXAtPmxvZ2J1ZmZlcl90YWlsID0gdGFpbDsN
Cj4gK211dGV4X3VubG9jaygmY2hpcC0+bG9nYnVmZmVyX2xvY2spOw0KPiArDQo+ICtyZXR1cm4g
MDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBydDE3MTFoX3JlZ3Nfc2hvdyhzdHJ1Y3QgcnQx
NzExaF9jaGlwICpjaGlwLCBzdHJ1Y3QNCj4gK3NlcV9maWxlICpzKSB7DQo+ICtpbnQgcmV0ID0g
MDsNCj4gK2ludCBpID0gMCwgaiA9IDA7DQo+ICtzdHJ1Y3QgcmVnX2Rlc2MgKmRlc2MgPSBOVUxM
Ow0KPiArdWludDhfdCByZWd2YWxbMl0gPSB7MH07DQo+ICsNCj4gK2ZvciAoaSA9IDA7IGkgPCBB
UlJBWV9TSVpFKHJ0MTcxMWhfcmVnX2Rlc2MpOyBpKyspIHsNCj4gK2Rlc2MgPSAmcnQxNzExaF9y
ZWdfZGVzY1tpXTsNCj4gK3JldCA9IHJ0MTcxMWhfcmVnX2Jsb2NrX3JlYWQoY2hpcCwgZGVzYy0+
YWRkciwgZGVzYy0+c2l6ZSwNCj4gK3JlZ3ZhbCk7DQo+ICtpZiAocmV0IDwgMCkgew0KPiArZGV2
X2VycihjaGlwLT5kZXYsICIlcyByZWFkIHJlZzB4JTAyWCBmYWlsXG4iLA0KPiArX19mdW5jX18s
IGRlc2MtPmFkZHIpOw0KPiArY29udGludWU7DQo+ICt9DQo+ICsNCj4gK3NlcV9wcmludGYocywg
InJlZzB4JTAyeDoweCIsIGRlc2MtPmFkZHIpOw0KPiArZm9yIChqID0gMDsgaiA8IGRlc2MtPnNp
emU7IGorKykNCj4gK3NlcV9wcmludGYocywgIiUwMngsIiwgcmVndmFsW2pdKTsNCj4gK3NlcV9w
dXRzKHMsICJcbiIpOw0KPiArfQ0KPiArDQo+ICtyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3Rh
dGljIGlubGluZSBpbnQgcnQxNzExaF9yZWdfYWRkcl9zaG93KHN0cnVjdCBydDE3MTFoX2NoaXAg
KmNoaXAsDQo+ICtzdHJ1Y3Qgc2VxX2ZpbGUgKnMpDQo+ICt7DQo+ICtzdHJ1Y3QgcmVnX2Rlc2Mg
KmRlc2MgPSAmcnQxNzExaF9yZWdfZGVzY1tjaGlwLT5kYmdfcmVnaWR4XTsNCj4gKw0KPiArc2Vx
X3ByaW50ZihzLCAiMHglMDJ4XG4iLCBkZXNjLT5hZGRyKTsNCj4gK3JldHVybiAwOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgaW5saW5lIGludCBydDE3MTFoX2RhdGFfc2hvdyhzdHJ1Y3QgcnQxNzEx
aF9jaGlwICpjaGlwLA0KPiArc3RydWN0IHNlcV9maWxlICpzKQ0KPiArew0KPiAraW50IHJldCA9
IDAsIGkgPSAwOw0KPiArc3RydWN0IHJlZ19kZXNjICpkZXNjID0gJnJ0MTcxMWhfcmVnX2Rlc2Nb
Y2hpcC0+ZGJnX3JlZ2lkeF07DQo+ICt1aW50OF90IHJlZ3ZhbFsyXSA9IHswfTsNCj4gKw0KPiAr
cmV0ID0gcnQxNzExaF9yZWdfYmxvY2tfcmVhZChjaGlwLCBkZXNjLT5hZGRyLCBkZXNjLT5zaXpl
LCByZWd2YWwpOw0KPiAraWYgKHJldCA8IDApDQo+ICtyZXR1cm4gcmV0Ow0KPiArDQo+ICtzZXFf
cHJpbnRmKHMsICJyZWcweCUwMng9MHgiLCBkZXNjLT5hZGRyKTsNCj4gK2ZvciAoaSA9IDA7IGkg
PCBkZXNjLT5zaXplOyBpKyspDQo+ICtzZXFfcHJpbnRmKHMsICIlMDJ4LCIsIHJlZ3ZhbFtpXSk7
DQo+ICtzZXFfcHV0cyhzLCAiXG4iKTsNCj4gK3JldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0
aWMgaW50IHJ0MTcxMWhfZGJnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KSB7DQo+
ICtpbnQgcmV0ID0gMDsNCj4gK3N0cnVjdCBydDE3MTFoX2RiZ19pbmZvICppbmZvID0gKHN0cnVj
dCBydDE3MTFoX2RiZ19pbmZvICopcy0+cHJpdmF0ZTsNCj4gK3N0cnVjdCBydDE3MTFoX2NoaXAg
KmNoaXAgPSBpbmZvLT5jaGlwOw0KPiArDQo+ICttdXRleF9sb2NrKCZjaGlwLT5kYmdvcHNfbG9j
ayk7DQo+ICtzd2l0Y2ggKGluZm8tPmlkKSB7DQo+ICtjYXNlIFJUMTcxMUhfREJHX0xPRzoNCj4g
K3JldCA9IHJ0MTcxMWhfbG9nX3Nob3coY2hpcCwgcyk7DQo+ICticmVhazsNCj4gK2Nhc2UgUlQx
NzExSF9EQkdfUkVHUzoNCj4gK3JldCA9IHJ0MTcxMWhfcmVnc19zaG93KGNoaXAsIHMpOw0KPiAr
YnJlYWs7DQo+ICtjYXNlIFJUMTcxMUhfREJHX1JFR19BRERSOg0KPiArcmV0ID0gcnQxNzExaF9y
ZWdfYWRkcl9zaG93KGNoaXAsIHMpOw0KPiArYnJlYWs7DQo+ICtjYXNlIFJUMTcxMUhfREJHX0RB
VEE6DQo+ICtyZXQgPSBydDE3MTFoX2RhdGFfc2hvdyhjaGlwLCBzKTsNCj4gK2JyZWFrOw0KPiAr
ZGVmYXVsdDoNCj4gK3JldCA9IC1FSU5WQUw7DQo+ICticmVhazsNCj4gK30NCj4gKw0KPiArbXV0
ZXhfdW5sb2NrKCZjaGlwLT5kYmdvcHNfbG9jayk7DQo+ICtyZXR1cm4gcmV0Ow0KPiArfQ0KPiAr
DQo+ICtzdGF0aWMgaW50IHJ0MTcxMWhfZGJnX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry
dWN0IGZpbGUgKmZpbGUpIHsNCj4gK2lmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQ0KPiAr
cmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIHJ0MTcxMWhfZGJnX3Nob3csIGlub2RlLT5pX3ByaXZh
dGUpOw0KPiArZmlsZS0+cHJpdmF0ZV9kYXRhID0gaW5vZGUtPmlfcHJpdmF0ZTsNCj4gK3JldHVy
biAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGdldF9wYXJhbWV0ZXJzKGNoYXIgKmJ1Ziwg
bG9uZyBpbnQgKnBhcmFtMSwgaW50DQo+ICtudW1fb2ZfcGFyKSB7DQo+ICtjaGFyICp0b2tlbjsN
Cj4gK2ludCBiYXNlLCBjbnQ7DQo+ICsNCj4gK3Rva2VuID0gc3Ryc2VwKCZidWYsICIgIik7DQo+
ICsNCj4gK2ZvciAoY250ID0gMDsgY250IDwgbnVtX29mX3BhcjsgY250KyspIHsNCj4gK2lmICh0
b2tlbiAhPSBOVUxMKSB7DQo+ICtpZiAoKHRva2VuWzFdID09ICd4JykgfHwgKHRva2VuWzFdID09
ICdYJykpDQo+ICtiYXNlID0gMTY7DQo+ICtlbHNlDQo+ICtiYXNlID0gMTA7DQo+ICsNCj4gK2lm
IChrc3RydG91bCh0b2tlbiwgYmFzZSwgJnBhcmFtMVtjbnRdKSAhPSAwKQ0KPiArcmV0dXJuIC1F
SU5WQUw7DQo+ICsNCj4gK3Rva2VuID0gc3Ryc2VwKCZidWYsICIgIik7DQo+ICt9IGVsc2UNCj4g
K3JldHVybiAtRUlOVkFMOw0KPiArfQ0KPiArcmV0dXJuIDA7DQo+ICt9DQoNCldoYXQgaXMgdGhp
cyBmdW5jdGlvbiBkb2luZz8gIFdoYXQgaXMgeW91ciBkZWJ1Z2ZzIGZpbGVzIGZvcj8NCg0KPiAr
DQo+ICtzdGF0aWMgaW50IGdldF9kYXRhcyhjb25zdCBjaGFyICpidWYsIGNvbnN0IGludCBsZW5n
dGgsDQo+ICt1bnNpZ25lZCBjaGFyICpkYXRhX2J1ZmZlciwgdW5zaWduZWQgY2hhciBkYXRhX2xl
bmd0aCkgew0KPiAraW50IGksIHB0cjsNCj4gK2xvbmcgaW50IHZhbHVlOw0KPiArY2hhciB0b2tl
bls1XTsNCj4gKw0KPiArdG9rZW5bMF0gPSAnMCc7DQo+ICt0b2tlblsxXSA9ICd4JzsNCj4gK3Rv
a2VuWzRdID0gMDsNCj4gK2lmIChidWZbMF0gIT0gJzAnIHx8IGJ1ZlsxXSAhPSAneCcpDQo+ICty
ZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArcHRyID0gMjsNCj4gK2ZvciAoaSA9IDA7IChpIDwgZGF0
YV9sZW5ndGgpICYmIChwdHIgKyAyIDw9IGxlbmd0aCk7IGkrKykgew0KPiArdG9rZW5bMl0gPSBi
dWZbcHRyKytdOw0KPiArdG9rZW5bM10gPSBidWZbcHRyKytdOw0KPiArcHRyKys7DQo+ICtpZiAo
a3N0cnRvdWwodG9rZW4sIDE2LCAmdmFsdWUpICE9IDApDQo+ICtyZXR1cm4gLUVJTlZBTDsNCj4g
K2RhdGFfYnVmZmVyW2ldID0gdmFsdWU7DQo+ICt9DQo+ICtyZXR1cm4gMDsNCj4gK30NCj4gKw0K
PiArc3RhdGljIGludCBydDE3MTFoX3JlZ2FkZHIyaWR4KHVpbnQ4X3QgcmVnX2FkZHIpIHsNCj4g
K2ludCBpID0gMDsNCj4gK3N0cnVjdCByZWdfZGVzYyAqZGVzYyA9IE5VTEw7DQo+ICsNCj4gK2Zv
ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJ0MTcxMWhfcmVnX2Rlc2MpOyBpKyspIHsNCj4gK2Rl
c2MgPSAmcnQxNzExaF9yZWdfZGVzY1tpXTsNCj4gK2lmIChkZXNjLT5hZGRyID09IHJlZ19hZGRy
KQ0KPiArcmV0dXJuIGk7DQo+ICt9DQo+ICtyZXR1cm4gLUVJTlZBTDsNCj4gK30NCj4gKw0KPiAr
c3RhdGljIHNzaXplX3QgcnQxNzExaF9kYmdfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0
IGNoYXIgX191c2VyICp1YnVmLA0KPiArc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpDQo+ICt7
DQo+ICtpbnQgcmV0ID0gMDsNCj4gK3N0cnVjdCBydDE3MTFoX2RiZ19pbmZvICppbmZvID0NCj4g
KyhzdHJ1Y3QgcnQxNzExaF9kYmdfaW5mbyAqKWZpbGUtPnByaXZhdGVfZGF0YTsNCj4gK3N0cnVj
dCBydDE3MTFoX2NoaXAgKmNoaXAgPSBpbmZvLT5jaGlwOw0KPiArc3RydWN0IHJlZ19kZXNjICpk
ZXNjID0gTlVMTDsNCj4gK2NoYXIgbGJ1ZlsxMjhdOw0KPiArbG9uZyBpbnQgcGFyYW1bNV07DQo+
ICt1bnNpZ25lZCBjaGFyIHJlZ19kYXRhWzJdID0gezB9Ow0KPiArDQo+ICtpZiAoY291bnQgPiBz
aXplb2YobGJ1ZikgLSAxKQ0KPiArcmV0dXJuIC1FRkFVTFQ7DQo+ICsNCj4gK3JldCA9IGNvcHlf
ZnJvbV91c2VyKGxidWYsIHVidWYsIGNvdW50KTsNCj4gK2lmIChyZXQpDQo+ICtyZXR1cm4gLUVG
QVVMVDsNCj4gK2xidWZbY291bnRdID0gJ1wwJzsNCj4gKw0KPiArbXV0ZXhfbG9jaygmY2hpcC0+
ZGJnb3BzX2xvY2spOw0KPiArc3dpdGNoIChpbmZvLT5pZCkgew0KPiArY2FzZSBSVDE3MTFIX0RC
R19SRUdfQUREUjoNCj4gK3JldCA9IGdldF9wYXJhbWV0ZXJzKGxidWYsIHBhcmFtLCAxKTsNCj4g
K2lmIChyZXQgPCAwKSB7DQo+ICtkZXZfZXJyKGNoaXAtPmRldiwgIiVzIGdldCBwYXJhbSBmYWls
XG4iLCBfX2Z1bmNfXyk7DQo+ICtyZXQgPSAtRUlOVkFMOw0KPiArZ290byBvdXQ7DQo+ICt9DQo+
ICtyZXQgPSBydDE3MTFoX3JlZ2FkZHIyaWR4KHBhcmFtWzBdKTsNCj4gK2lmIChyZXQgPCAwKSB7
DQo+ICtkZXZfZXJyKGNoaXAtPmRldiwgIiVzIGFkZHIyaWR4IGZhaWxcbiIsIF9fZnVuY19fKTsN
Cj4gK3JldCA9IC1FSU5WQUw7DQo+ICtnb3RvIG91dDsNCj4gK30NCj4gK2NoaXAtPmRiZ19yZWdp
ZHggPSByZXQ7DQo+ICticmVhazsNCj4gK2Nhc2UgUlQxNzExSF9EQkdfREFUQToNCj4gK2Rlc2Mg
PSAmcnQxNzExaF9yZWdfZGVzY1tjaGlwLT5kYmdfcmVnaWR4XTsNCj4gK2lmICgoZGVzYy0+c2l6
ZSAtIDEpICogMyArIDUgIT0gY291bnQpIHsNCj4gK2Rldl9lcnIoY2hpcC0+ZGV2LCAiJXMgaW5j
b3JyZWN0IGlucHV0IGxlbmd0aFxuIiwNCj4gK19fZnVuY19fKTsNCj4gK3JldCA9IC1FSU5WQUw7
DQo+ICtnb3RvIG91dDsNCj4gK30NCj4gK3JldCA9IGdldF9kYXRhcygoY2hhciAqKXVidWYsIGNv
dW50LCByZWdfZGF0YSwgZGVzYy0+c2l6ZSk7DQo+ICtpZiAocmV0IDwgMCkgew0KPiArZGV2X2Vy
cihjaGlwLT5kZXYsICIlcyBnZXQgZGF0YSBmYWlsXG4iLCBfX2Z1bmNfXyk7DQo+ICtyZXQgPSAt
RUlOVkFMOw0KPiArZ290byBvdXQ7DQo+ICt9DQo+ICtyZXQgPSBydDE3MTFoX3JlZ19ibG9ja193
cml0ZShjaGlwLCBkZXNjLT5hZGRyLCBkZXNjLT5zaXplLA0KPiArcmVnX2RhdGEpOw0KPiArYnJl
YWs7DQo+ICtkZWZhdWx0Og0KPiArcmV0ID0gLUVJTlZBTDsNCj4gK2JyZWFrOw0KPiArfQ0KPiAr
DQo+ICtvdXQ6DQo+ICttdXRleF91bmxvY2soJmNoaXAtPmRiZ29wc19sb2NrKTsNCj4gK3JldHVy
biByZXQgPCAwID8gcmV0IDogY291bnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcnQxNzEx
aF9kYmdfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZQ0KPiArKmZpbGUp
IHsNCj4gK2lmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9SRUFEKQ0KPiArcmV0dXJuIHNpbmdsZV9y
ZWxlYXNlKGlub2RlLCBmaWxlKTsNCj4gK3JldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg
Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBydDE3MTFoX2RiZ19vcHMgPSB7DQo+ICsub3Bl
bj0gcnQxNzExaF9kYmdfb3BlbiwNCj4gKy5sbHNlZWs9IHNlcV9sc2VlaywNCj4gKy5yZWFkPSBz
ZXFfcmVhZCwNCj4gKy53cml0ZT0gcnQxNzExaF9kYmdfd3JpdGUsDQo+ICsucmVsZWFzZT0gcnQx
NzExaF9kYmdfcmVsZWFzZSwNCj4gK307DQo+ICsNCj4gKw0KPiArc3RhdGljIGludCBydDE3MTFo
X2RlYnVnZnNfaW5pdChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwKSB7DQo+ICtpbnQgcmV0ID0g
MCwgaSA9IDA7DQo+ICtzdHJ1Y3QgcnQxNzExaF9kYmdfaW5mbyAqaW5mbyA9IE5VTEw7DQo+ICtp
bnQgbGVuID0gMDsNCj4gK2NoYXIgKmRpcm5hbWUgPSBOVUxMOw0KPiArDQo+ICttdXRleF9pbml0
KCZjaGlwLT5sb2didWZmZXJfbG9jayk7DQo+ICttdXRleF9pbml0KCZjaGlwLT5kYmdvcHNfbG9j
ayk7DQo+ICtsZW4gPSBzdHJsZW4oZGV2X25hbWUoY2hpcC0+ZGV2KSk7DQo+ICtkaXJuYW1lID0g
ZGV2bV9remFsbG9jKGNoaXAtPmRldiwgbGVuICsgOSwgR0ZQX0tFUk5FTCk7DQo+ICtpZiAoIWRp
cm5hbWUpDQo+ICtyZXR1cm4gLUVOT01FTTsNCj4gK3NucHJpbnRmKGRpcm5hbWUsIGxlbiArIDks
ICJydDE3MTFoLSVzIiwgZGV2X25hbWUoY2hpcC0+ZGV2KSk7DQo+ICtpZiAoIWNoaXAtPmRiZ2Rp
cikgew0KPiArY2hpcC0+ZGJnZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRpcm5hbWUsIE5VTEwp
Ow0KPiAraWYgKCFjaGlwLT5kYmdkaXIpDQo+ICtyZXR1cm4gLUVOT01FTTsNCg0KTm8gbmVlZCB0
byBldmVyIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZGVidWdmc18gY2FsbHMsIHlvdSBzaG91
bGQgbm90IGNhcmUgYW5kIGNhbiBhbHdheXMgdXNlIHRoZSB2YWx1ZSB0byBhbnkgZnV0dXJlIGRl
YnVnZnMgY2FsbHMsIGlmIHlvdSByZWFsbHkgbmVlZCBpdC4NCg0KPiArfQ0KPiArDQo+ICtmb3Ig
KGkgPSAwOyBpIDwgUlQxNzExSF9EQkdfTUFYOyBpKyspIHsNCj4gK2luZm8gPSAmY2hpcC0+ZGJn
X2luZm9baV07DQoNCnN0YXRpYyBhcnJheSBvZiBkZWJ1ZyBpbmZvPyAgVGhhdCBmZWVscyBvZGQu
DQoNCj4gK2luZm8tPmNoaXAgPSBjaGlwOw0KPiAraW5mby0+aWQgPSBpOw0KPiArY2hpcC0+ZGJn
X2ZpbGVzW2ldID0gZGVidWdmc19jcmVhdGVfZmlsZSgNCj4gK3J0MTcxMWhfZGJnX2ZpbGVuYW1l
W2ldLCBTX0lGUkVHIHwgMDQ0NCwNCj4gK2NoaXAtPmRiZ2RpciwgaW5mbywgJnJ0MTcxMWhfZGJn
X29wcyk7DQo+ICtpZiAoIWNoaXAtPmRiZ19maWxlc1tpXSkgew0KPiArcmV0ID0gLUVJTlZBTDsN
Cg0KTGlrZSBoZXJlLCB5b3UgZG9uJ3QgbmVlZCB0aGlzLCBhbmQgeW91IGRvbid0IG5lZWQgdG8g
Y2FyZSBhYm91dCB0aGUgcmV0dXJuIHZhbHVlLg0KDQo+ICtnb3RvIGVycjsNCj4gK30NCj4gK30N
Cj4gKw0KPiArcmV0dXJuIDA7DQo+ICtlcnI6DQo+ICtkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUo
Y2hpcC0+ZGJnZGlyKTsNCj4gK3JldHVybiByZXQ7DQoNCldoeSBkbyB5b3UgY2FyZSBhYm91dCBh
biBlcnJvciBoZXJlPyAgWW91ciBjb2RlIHNob3VsZCBub3QgZG8gYW55dGhpbmcgZGlmZmVyZW50
IGlmIGRlYnVnZnMgc3R1ZmYgZG9lcyBub3Qgd29yayBvciBpZiBpdCBkb2VzLiAgSXQncyBkZWJ1
Z2dpbmcgb25seS4NCg0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBydDE3MTFoX2RlYnVnZnNf
ZXhpdChzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwKSB7DQo+ICtkZWJ1Z2ZzX3JlbW92ZV9yZWN1
cnNpdmUoY2hpcC0+ZGJnZGlyKTsNCg0KU2VlLCB5b3UgZGlkbid0IG5lZWQgdGhvc2UgZmlsZSBo
YW5kbGVzIDopDQoNCnRoYW5rcywNCg0KZ3JlZyBrLWgNCioqKioqKioqKioqKiogRW1haWwgQ29u
ZmlkZW50aWFsaXR5IE5vdGljZSAqKioqKioqKioqKioqKioqKioqKg0KDQpUaGUgaW5mb3JtYXRp
b24gY29udGFpbmVkIGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgYXR0YWNo
bWVudHMpIG1heSBiZSBjb25maWRlbnRpYWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBvciBv
dGhlcndpc2UgZXhlbXB0IGZyb20gZGlzY2xvc3VyZSB1bmRlciBhcHBsaWNhYmxlIGxhd3MuIEl0
IGlzIGludGVuZGVkIHRvIGJlIGNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVjaXBp
ZW50KHMpLiBBbnkgdXNlLCBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24sIHByaW50aW5nLCBy
ZXRhaW5pbmcgb3IgY29weWluZyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGl0cyBhdHRhY2ht
ZW50cykgYnkgdW5pbnRlbmRlZCByZWNpcGllbnQocykgaXMgc3RyaWN0bHkgcHJvaGliaXRlZCBh
bmQgbWF5IGJlIHVubGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGllbnQg
b2YgdGhpcyBlLW1haWwsIG9yIGJlbGlldmUgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGUt
bWFpbCBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IChieSBy
ZXBseWluZyB0byB0aGlzIGUtbWFpbCksIGRlbGV0ZSBhbnkgYW5kIGFsbCBjb3BpZXMgb2YgdGhp
cyBlLW1haWwgKGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0sIGFu
ZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90aGVy
IHBlcnNvbi4gVGhhbmsgeW91IQ0K
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

             reply	other threads:[~2018-01-18 13:13 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-18 13:13 shufan_lee(李書帆) [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-01-30 23:25 USB TYPEC: RT1711H Type-C Chip Driver Guenter Roeck
2018-01-30 13:21 shufan_lee(李書帆)
2018-01-29 19:57 Guenter Roeck
2018-01-29  7:19 shufan_lee(李書帆)
2018-01-22 18:50 Guenter Roeck
2018-01-22  2:01 shufan_lee(李書帆)
2018-01-19 16:02 Guenter Roeck
2018-01-19  9:24 Heikki Krogerus
2018-01-19  9:01 shufan_lee(李書帆)
2018-01-19  8:22 Heikki Krogerus
2018-01-19  8:03 Greg KH
2018-01-19  5:48 shufan_lee(李書帆)
2018-01-19  3:09 Jun Li
2018-01-17 13:42 Greg KH
2018-01-17 13:33 Greg KH
2018-01-17 13:33 Greg KH
2018-01-17 13:31 Greg Kroah-Hartman
2018-01-17 12:00 Heikki Krogerus
2018-01-17 11:14 Greg Kroah-Hartman
2018-01-17 11:08 Heikki Krogerus
2018-01-17  9:30 shufan_lee(李書帆)
2018-01-10  6:59 ShuFanLee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f94537a67a1544d1937eae3dbfcd554f@ex1.rt.l \
    --to=shufan_lee@richtek.com \
    --cc=cy_huang@richtek.com \
    --cc=greg@kroah.com \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=leechu729@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).