public inbox for linux-clk@vger.kernel.org
 help / color / mirror / Atom feed
From: Icenowy Zheng <icenowy@aosc.xyz>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Jean-Francois Moine <moinejf@free.fr>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	David Airlie <airlied@linux.ie>,
	"linux-sunxi@googlegroups.com" <linux-sunxi@googlegroups.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>, Chen-Yu Tsai <wens@csie.org>,
	Rob Herring <robh+dt@kernel.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines
Date: Thu, 23 Feb 2017 04:28:42 +0800	[thread overview]
Message-ID: <3557471487795322@web2j.yandex.ru> (raw)
In-Reply-To: <20170222200947.3ikrhvv76ymfu5tv@lukather>

CgoyMy4wMi4yMDE3LCAwNDowOSwgIk1heGltZSBSaXBhcmQiIDxtYXhpbWUucmlwYXJkQGZyZWUt
ZWxlY3Ryb25zLmNvbT46Cj4gSGksCj4KPiBPbiBXZWQsIEZlYiAyMiwgMjAxNyBhdCAxMToyMzow
NlBNICswODAwLCBJY2Vub3d5IFpoZW5nIHdyb3RlOgo+PiDCoEFsbHdpbm5lciBoYXZlIGEgbmV3
ICJEaXNwbGF5IEVuZ2luZSAyLjAiIGluIHRoZXJlIG5ldyBTb0NzLCB3aGljaCBjb21lcwo+PiDC
oGluIGEgbmV3ICJEaXNwbGF5IEVuZ2luZSIgKG1peGVycyBpbnN0ZWFkIG9mIG9sZCBiYWNrZW5k
cyBhbmQKPj4gwqBmcm9udGVuZHMpLgo+Pgo+PiDCoEFkZCBzdXBwb3J0IGZvciB0aGUgbWl4ZXIg
b24gQWxsd2lubmVyIFYzcyBTb0M7IGl0J3MgdGhlIHNpbXBsZXN0IG9uZS4KPj4KPj4gwqBTaWdu
ZWQtb2ZmLWJ5OiBJY2Vub3d5IFpoZW5nIDxpY2Vub3d5QGFvc2MueHl6Pgo+PiDCoC0tLQo+PiDC
oMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL0tjb25maWcgfCA4ICsKPj4gwqDCoGRyaXZlcnMvZ3B1
L2RybS9zdW40aS9NYWtlZmlsZSB8IDEgKwo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1
bjRpX2NydGMuYyB8IDYgKy0KPj4gwqDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYu
YyB8IDM4ICsrKy0KPj4gwqDCoGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9kcnYuaCB8IDEg
Kwo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMgfCA5MiArKysrKyst
LQo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmggfCAxICsKPj4gwqDC
oGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV9taXhlci5jIHwgNDE3ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKwo+PiDCoMKgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhp
X21peGVyLmggfCAxMzMgKysrKysrKysrKysrCj4+IMKgwqA5IGZpbGVzIGNoYW5nZWQsIDY3NCBp
bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4gwqDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBk
cml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfbWl4ZXIuYwo+PiDCoMKgY3JlYXRlIG1vZGUgMTAw
NjQ0IGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV9taXhlci5oCj4+Cj4+IMKgZGlmZiAtLWdp
dCBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRp
L0tjb25maWcKPj4gwqBpbmRleCBhNGIzNTdkYjg4NTYuLjhkZjQwMWZmZjE0NSAxMDA2NDQKPj4g
wqAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvS2NvbmZpZwo+PiDCoCsrKyBiL2RyaXZlcnMv
Z3B1L2RybS9zdW40aS9LY29uZmlnCj4+IMKgQEAgLTEyLDMgKzEyLDExIEBAIGNvbmZpZyBEUk1f
U1VONEkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlv
dSBoYXZlIGFuIEFsbHdpbm5lciBTb0Mgd2l0aCBhCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oERpc3BsYXkgRW5naW5lLiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxs
ZWQKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3VuNGktZHJtLgo+PiDCoCsKPj4gwqArY29u
ZmlnIERSTV9TVU40SV9ERTIKPj4gwqArIGJvb2wgIlN1cHBvcnQgRGlzcGxheSBFbmdpbmUgMi4w
Igo+PiDCoCsgZGVwZW5kcyBvbiBEUk1fU1VONEkKPj4gwqArIGRlZmF1bHQgTUFDSF9TVU44SQo+
PiDCoCsgaGVscAo+PiDCoCsgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEFsbHdp
bm5lciBTb0Mgd2l0aCBhCj4+IMKgKyAiRGlzcGxheSBFbmdpbmUgMi4wIi4KPj4gwqBkaWZmIC0t
Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3N1
bjRpL01ha2VmaWxlCj4+IMKgaW5kZXggZDYyNWE4MmE2ZTVmLi44OTBlNmU1MGRmZWUgMTAwNjQ0
Cj4+IMKgLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlCj4+IMKgKysrIGIvZHJp
dmVycy9ncHUvZHJtL3N1bjRpL01ha2VmaWxlCj4+IMKgQEAgLTksNSArOSw2IEBAIHN1bjRpLXRj
b24teSArPSBzdW40aV9kb3RjbG9jay5vCj4+Cj4+IMKgwqBvYmotJChDT05GSUdfRFJNX1NVTjRJ
KSArPSBzdW40aS1kcm0ubyBzdW40aS10Y29uLm8KPj4gwqDCoG9iai0kKENPTkZJR19EUk1fU1VO
NEkpICs9IHN1bjRpX2JhY2tlbmQubwo+PiDCoCtvYmotJChDT05GSUdfRFJNX1NVTjRJKSArPSBz
dW44aV9taXhlci5vCj4+IMKgwqBvYmotJChDT05GSUdfRFJNX1NVTjRJKSArPSBzdW42aV9kcmMu
bwo+PiDCoMKgb2JqLSQoQ09ORklHX0RSTV9TVU40SSkgKz0gc3VuNGlfdHYubwo+PiDCoGRpZmYg
LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5jIGIvZHJpdmVycy9ncHUv
ZHJtL3N1bjRpL3N1bjRpX2NydGMuYwo+PiDCoGluZGV4IDRhMTkyMjEwNTc0Zi4uNGQyMjI4NDU0
NzI2IDEwMDY0NAo+PiDCoC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9jcnRjLmMK
Pj4gwqArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfY3J0Yy5jCj4+IMKgQEAgLTI1
LDYgKzI1LDcgQEAKPj4gwqDCoCNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KPj4KPj4gwqDC
oCNpbmNsdWRlICJzdW40aV9iYWNrZW5kLmgiCj4+IMKgKyNpbmNsdWRlICJzdW44aV9taXhlci5o
Igo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2NydGMuaCIKPj4gwqDCoCNpbmNsdWRlICJzdW40aV9k
cnYuaCIKPj4gwqDCoCNpbmNsdWRlICJzdW40aV90Y29uLmgiCj4+IMKgQEAgLTU1LDcgKzU2LDEw
IEBAIHN0YXRpYyB2b2lkIHN1bjRpX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0YyAq
Y3J0YywKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBEUk1fREVCVUdfRFJJVkVSKCJDb21taXR0
aW5nIHBsYW5lIGNoYW5nZXNcbiIpOwo+Pgo+PiDCoC0gc3VuNGlfYmFja2VuZF9jb21taXQoZHJ2
LT5iYWNrZW5kKTsKPj4gwqArIGlmIChkcnYtPmJhY2tlbmQpCj4+IMKgKyBzdW40aV9iYWNrZW5k
X2NvbW1pdChkcnYtPmJhY2tlbmQpOwo+PiDCoCsgZWxzZSBpZiAoZHJ2LT5taXhlcikKPj4gwqAr
IHN1bjhpX21peGVyX2NvbW1pdChkcnYtPm1peGVyKTsKPj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKg
wqBpZiAoZXZlbnQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY3J0
Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPj4gwqBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt
L3N1bjRpL3N1bjRpX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5jCj4+
IMKgaW5kZXggNGNlNjY1MzQ5ZjZiLi41OGFmMzhmNWU4MzMgMTAwNjQ0Cj4+IMKgLS0tIGEvZHJp
dmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2Rydi5jCj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJt
L3N1bjRpL3N1bjRpX2Rydi5jCj4+IMKgQEAgLTIwLDEyICsyMCwxNyBAQAo+PiDCoMKgI2luY2x1
ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4+IMKgwqAjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgo+
Pgo+PiDCoCsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4+IMKgKwo+PiDCoMKgI2luY2x1
ZGUgInN1bjRpX2NydGMuaCIKPj4gwqDCoCNpbmNsdWRlICJzdW40aV9kcnYuaCIKPj4gwqDCoCNp
bmNsdWRlICJzdW40aV9mcmFtZWJ1ZmZlci5oIgo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2xheWVy
LmgiCj4+IMKgwqAjaW5jbHVkZSAic3VuNGlfdGNvbi5oIgo+Pgo+PiDCoCsjZGVmaW5lIERFX1ZF
Ul9ERSAwCj4+IMKgKyNkZWZpbmUgREVfVkVSX0RFMiAxCj4+IMKgKwo+PiDCoMKgc3RhdGljIGlu
dCBzdW40aV9kcnZfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCB1bnNpZ25l
ZCBpbnQgcGlwZSkKPj4gwqDCoHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3VuNGlf
ZHJ2ICpkcnYgPSBkcm0tPmRldl9wcml2YXRlOwo+PiDCoEBAIC0xMTcsNyArMTIyLDkgQEAgc3Rh
dGljIGludCBzdW40aV9kcnZfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+IMKgwqB7Cj4+IMKg
wqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9kZXZpY2UgKmRybTsKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgwqBzdHJ1Y3Qgc3VuNGlfZHJ2ICpkcnY7Cj4+IMKgLSBpbnQgcmV0Owo+PiDCoCsgaW50
IHJldCwgZGVfdmVyOwo+PiDCoCsKPj4gwqArIGRlX3ZlciA9IChpbnQpb2ZfZGV2aWNlX2dldF9t
YXRjaF9kYXRhKGRldik7Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtID0gZHJtX2Rldl9h
bGxvYygmc3VuNGlfZHJ2X2RyaXZlciwgZGV2KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo
SVNfRVJSKGRybSkpCj4+IMKgQEAgLTE0MCw3ICsxNDcsMTAgQEAgc3RhdGljIGludCBzdW40aV9k
cnZfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+Pgo+
PiDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIENyZWF0ZSBvdXIgbGF5ZXJzICovCj4+IMKgLSBkcnYt
PmxheWVycyA9IHN1bjRpX2xheWVyc19pbml0KGRybSk7Cj4+IMKgKyBpZiAoZGVfdmVyID09IERF
X1ZFUl9ERTIpCj4+IMKgKyBkcnYtPmxheWVycyA9IHN1bjhpX2xheWVyc19pbml0KGRybSk7Cj4+
IMKgKyBlbHNlCj4+IMKgKyBkcnYtPmxheWVycyA9IHN1bjRpX2xheWVyc19pbml0KGRybSk7Cj4+
IMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihkcnYtPmxheWVycykpIHsKPj4gwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2Vycihkcm0tPmRldiwgIkNvdWxkbid0
IGNyZWF0ZSB0aGUgcGxhbmVzXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgcmV0ID0gUFRSX0VSUihkcnYtPmxheWVycyk7Cj4+IMKgQEAgLTMyMywxMCArMzMzLDI2
IEBAIHN0YXRpYyBpbnQgc3VuNGlfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw
ZGV2KQo+PiDCoMKgfQo+Pgo+PiDCoMKgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg
c3VuNGlfZHJ2X29mX3RhYmxlW10gPSB7Cj4+IMKgLSB7IC5jb21wYXRpYmxlID0gImFsbHdpbm5l
cixzdW41aS1hMTMtZGlzcGxheS1lbmdpbmUiIH0sCj4+IMKgLSB7IC5jb21wYXRpYmxlID0gImFs
bHdpbm5lcixzdW42aS1hMzEtZGlzcGxheS1lbmdpbmUiIH0sCj4+IMKgLSB7IC5jb21wYXRpYmxl
ID0gImFsbHdpbm5lcixzdW42aS1hMzFzLWRpc3BsYXktZW5naW5lIiB9LAo+PiDCoC0geyAuY29t
cGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGktYTMzLWRpc3BsYXktZW5naW5lIiB9LAo+PiDCoCsg
ewo+PiDCoCsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjVpLWExMy1kaXNwbGF5LWVuZ2lu
ZSIsCj4+IMKgKyAuZGF0YSA9ICh2b2lkICopREVfVkVSX0RFLAo+PiDCoCsgfSwKPj4gwqArIHsK
Pj4gwqArIC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtZGlzcGxheS1lbmdpbmUi
LAo+PiDCoCsgLmRhdGEgPSAodm9pZCAqKURFX1ZFUl9ERSwKPj4gwqArIH0sCj4+IMKgKyB7Cj4+
IMKgKyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNmktYTMxcy1kaXNwbGF5LWVuZ2luZSIs
Cj4+IMKgKyAuZGF0YSA9ICh2b2lkICopREVfVkVSX0RFLAo+PiDCoCsgfSwKPj4gwqArIHsKPj4g
wqArIC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1hMzMtZGlzcGxheS1lbmdpbmUiLAo+
PiDCoCsgLmRhdGEgPSAodm9pZCAqKURFX1ZFUl9ERSwKPj4gwqArIH0sCj4+IMKgKyB7Cj4+IMKg
KyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGktdjNzLWRpc3BsYXktZW5naW5lIiwKPj4g
wqArIC5kYXRhID0gKHZvaWQgKilERV9WRVJfREUyLAo+PiDCoCsgfSwKPj4gwqDCoMKgwqDCoMKg
wqDCoMKgwqB7IH0KPj4gwqDCoH07Cj4+IMKgwqBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW40
aV9kcnZfb2ZfdGFibGUpOwo+PiDCoGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkv
c3VuNGlfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfZHJ2LmgKPj4gwqBpbmRl
eCA1OTczNTNlYWI3MjguLmNmMWRhOTViODViZCAxMDA2NDQKPj4gwqAtLS0gYS9kcml2ZXJzL2dw
dS9kcm0vc3VuNGkvc3VuNGlfZHJ2LmgKPj4gwqArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkv
c3VuNGlfZHJ2LmgKPj4gwqBAQCAtMTgsNiArMTgsNyBAQAo+Pgo+PiDCoMKgc3RydWN0IHN1bjRp
X2RydiB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHN1bjRpX2JhY2tlbmQgKmJhY2tl
bmQ7Cj4+IMKgKyBzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyOwo+PiDCoMKgwqDCoMKgwqDCoMKg
wqDCoHN0cnVjdCBzdW40aV9jcnRjICpjcnRjOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVj
dCBzdW40aV90Y29uICp0Y29uOwo+Pgo+PiDCoGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v
c3VuNGkvc3VuNGlfbGF5ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40aV9sYXllci5j
Cj4+IMKgaW5kZXggNWQ1M2M5NzdiY2E1Li42ZGNkYWMzOGFiNjkgMTAwNjQ0Cj4+IMKgLS0tIGEv
ZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmMKPj4gwqArKysgYi9kcml2ZXJzL2dw
dS9kcm0vc3VuNGkvc3VuNGlfbGF5ZXIuYwo+PiDCoEBAIC0xNiw1MiArMTYsNjYgQEAKPj4gwqDC
oCNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pgo+PiDCoMKgI2luY2x1ZGUgInN1bjRpX2JhY2tlbmQu
aCIKPj4gwqArI2luY2x1ZGUgInN1bjhpX21peGVyLmgiCj4+IMKgwqAjaW5jbHVkZSAic3VuNGlf
ZHJ2LmgiCj4+IMKgwqAjaW5jbHVkZSAic3VuNGlfbGF5ZXIuaCIKPj4KPj4gwqDCoHN0cnVjdCBz
dW40aV9wbGFuZV9kZXNjIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVu
dW0gZHJtX3BsYW5lX3R5cGUgdHlwZTsKPj4gwqArIC8qIFBpcGUgaXMgbm90IHVzZWQgaW4gc3Vu
OGktbWl4ZXIgKi8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHU4IHBpcGU7
Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCB1aW50MzJfdCAqZm9y
bWF0czsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IG5mb3Jt
YXRzOwo+PiDCoMKgfTsKPj4KPj4gwqAtc3RhdGljIGludCBzdW40aV9iYWNrZW5kX2xheWVyX2F0
b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gwqArc3RhdGljIGludCBzdW40
aV9sYXllcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+IMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUp
Cj4+IMKgwqB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4+IMKgwqB9Cj4+Cj4+
IMKgLXN0YXRpYyB2b2lkIHN1bjRpX2JhY2tlbmRfbGF5ZXJfYXRvbWljX2Rpc2FibGUoc3RydWN0
IGRybV9wbGFuZSAqcGxhbmUsCj4+IMKgK3N0YXRpYyB2b2lkIHN1bjRpX2xheWVyX2F0b21pY19k
aXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPj4g
wqDCoHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3VuNGlfbGF5ZXIgKmxheWVyID0g
cGxhbmVfdG9fc3VuNGlfbGF5ZXIocGxhbmUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVj
dCBzdW40aV9kcnYgKmRydiA9IGxheWVyLT5kcnY7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Ry
dWN0IHN1bjRpX2JhY2tlbmQgKmJhY2tlbmQgPSBkcnYtPmJhY2tlbmQ7Cj4+IMKgKyBzdHJ1Y3Qg
c3VuOGlfbWl4ZXIgKm1peGVyID0gZHJ2LT5taXhlcjsKPj4KPj4gwqAtIHN1bjRpX2JhY2tlbmRf
bGF5ZXJfZW5hYmxlKGJhY2tlbmQsIGxheWVyLT5pZCwgZmFsc2UpOwo+PiDCoCsgaWYgKGJhY2tl
bmQpCj4+IMKgKyBzdW40aV9iYWNrZW5kX2xheWVyX2VuYWJsZShiYWNrZW5kLCBsYXllci0+aWQs
IGZhbHNlKTsKPj4gwqArIGVsc2UgaWYgKG1peGVyKQo+PiDCoCsgc3VuOGlfbWl4ZXJfbGF5ZXJf
ZW5hYmxlKG1peGVyLCBsYXllci0+aWQsIGZhbHNlKTsKPj4gwqDCoH0KPgo+IEknbSBub3Qgc3Vy
ZSBpdCBtYWtlcyBzZW5zZSB0byByZXVzZSB0aGF0IHBhcnQuIFlvdSBjYW4ganVzdCBjcmVhdGUg
YQo+IG5ldyBwbGFuZSBkcml2ZXIgZW50aXJlbHkuCj4KPj4gwqAtc3RhdGljIHZvaWQgc3VuNGlf
YmFja2VuZF9sYXllcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiDC
oCtzdGF0aWMgdm9pZCBzdW40aV9sYXllcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg
KnBsYW5lLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg
ZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCj4+IMKgwqB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC
oMKgc3RydWN0IHN1bjRpX2xheWVyICpsYXllciA9IHBsYW5lX3RvX3N1bjRpX2xheWVyKHBsYW5l
KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qgc3VuNGlfZHJ2ICpkcnYgPSBsYXllci0+
ZHJ2Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBzdW40aV9iYWNrZW5kICpiYWNrZW5k
ID0gZHJ2LT5iYWNrZW5kOwo+PiDCoC0KPj4gwqAtIHN1bjRpX2JhY2tlbmRfdXBkYXRlX2xheWVy
X2Nvb3JkKGJhY2tlbmQsIGxheWVyLT5pZCwgcGxhbmUpOwo+PiDCoC0gc3VuNGlfYmFja2VuZF91
cGRhdGVfbGF5ZXJfZm9ybWF0cyhiYWNrZW5kLCBsYXllci0+aWQsIHBsYW5lKTsKPj4gwqAtIHN1
bjRpX2JhY2tlbmRfdXBkYXRlX2xheWVyX2J1ZmZlcihiYWNrZW5kLCBsYXllci0+aWQsIHBsYW5l
KTsKPj4gwqAtIHN1bjRpX2JhY2tlbmRfbGF5ZXJfZW5hYmxlKGJhY2tlbmQsIGxheWVyLT5pZCwg
dHJ1ZSk7Cj4+IMKgKyBzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyID0gZHJ2LT5taXhlcjsKPj4g
wqArCj4+IMKgKyBpZiAoYmFja2VuZCkgewo+PiDCoCsgc3VuNGlfYmFja2VuZF91cGRhdGVfbGF5
ZXJfY29vcmQoYmFja2VuZCwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKgKyBzdW40aV9iYWNrZW5k
X3VwZGF0ZV9sYXllcl9mb3JtYXRzKGJhY2tlbmQsIGxheWVyLT5pZCwgcGxhbmUpOwo+PiDCoCsg
c3VuNGlfYmFja2VuZF91cGRhdGVfbGF5ZXJfYnVmZmVyKGJhY2tlbmQsIGxheWVyLT5pZCwgcGxh
bmUpOwo+PiDCoCsgc3VuNGlfYmFja2VuZF9sYXllcl9lbmFibGUoYmFja2VuZCwgbGF5ZXItPmlk
LCB0cnVlKTsKPj4gwqArIH0gZWxzZSBpZiAobWl4ZXIpIHsKPj4gwqArIHN1bjhpX21peGVyX3Vw
ZGF0ZV9sYXllcl9jb29yZChtaXhlciwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKgKyBzdW44aV9t
aXhlcl91cGRhdGVfbGF5ZXJfZm9ybWF0cyhtaXhlciwgbGF5ZXItPmlkLCBwbGFuZSk7Cj4+IMKg
KyBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfYnVmZmVyKG1peGVyLCBsYXllci0+aWQsIHBsYW5l
KTsKPj4gwqArIHN1bjhpX21peGVyX2xheWVyX2VuYWJsZShtaXhlciwgbGF5ZXItPmlkLCB0cnVl
KTsKPj4gwqArIH0KPj4gwqDCoH0KPj4KPj4gwqAtc3RhdGljIHN0cnVjdCBkcm1fcGxhbmVfaGVs
cGVyX2Z1bmNzIHN1bjRpX2JhY2tlbmRfbGF5ZXJfaGVscGVyX2Z1bmNzID0gewo+PiDCoC0gLmF0
b21pY19jaGVjayA9IHN1bjRpX2JhY2tlbmRfbGF5ZXJfYXRvbWljX2NoZWNrLAo+PiDCoC0gLmF0
b21pY19kaXNhYmxlID0gc3VuNGlfYmFja2VuZF9sYXllcl9hdG9taWNfZGlzYWJsZSwKPj4gwqAt
IC5hdG9taWNfdXBkYXRlID0gc3VuNGlfYmFja2VuZF9sYXllcl9hdG9taWNfdXBkYXRlLAo+PiDC
oCtzdGF0aWMgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3Mgc3VuNGlfbGF5ZXJfaGVscGVy
X2Z1bmNzID0gewo+PiDCoCsgLmF0b21pY19jaGVjayA9IHN1bjRpX2xheWVyX2F0b21pY19jaGVj
aywKPj4gwqArIC5hdG9taWNfZGlzYWJsZSA9IHN1bjRpX2xheWVyX2F0b21pY19kaXNhYmxlLAo+
PiDCoCsgLmF0b21pY191cGRhdGUgPSBzdW40aV9sYXllcl9hdG9taWNfdXBkYXRlLAo+PiDCoMKg
fTsKPj4KPj4gwqAtc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mgc3VuNGlfYmFj
a2VuZF9sYXllcl9mdW5jcyA9IHsKPj4gwqArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf
ZnVuY3Mgc3VuNGlfbGF5ZXJfZnVuY3MgPSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgLmF0b21p
Y19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwK
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9t
aWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAu
ZGVzdHJveSA9IGRybV9wbGFuZV9jbGVhbnVwLAo+PiDCoEBAIC04OCw2ICsxMDIsMTIgQEAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHN1bjRpX2JhY2tlbmRfbGF5ZXJfZm9ybWF0c19vdmVybGF5W10g
PSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPj4gwqDCoH07
Cj4+Cj4+IMKgK3N0YXRpYyBjb25zdCB1aW50MzJfdCBzdW44aV9taXhlcl9sYXllcl9mb3JtYXRz
W10gPSB7Cj4+IMKgKyBEUk1fRk9STUFUX0FSR0I4ODg4LAo+PiDCoCsgRFJNX0ZPUk1BVF9SR0I4
ODgsCj4+IMKgKyBEUk1fRk9STUFUX1hSR0I4ODg4LAo+PiDCoCt9Owo+PiDCoCsKPj4gwqDCoHN0
YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyBzdW40aV9iYWNrZW5kX3BsYW5lc1td
ID0gewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgLnR5cGUgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZLAo+PiDCoEBAIC0xMDMs
NiArMTIzLDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyBzdW40aV9i
YWNrZW5kX3BsYW5lc1tdID0gewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoH0sCj4+IMKgwqB9Owo+
Pgo+PiDCoCtzdGF0aWMgY29uc3Qgc3RydWN0IHN1bjRpX3BsYW5lX2Rlc2Mgc3VuOGlfbWl4ZXJf
cGxhbmVzW10gPSB7Cj4+IMKgKyB7Cj4+IMKgKyAudHlwZSA9IERSTV9QTEFORV9UWVBFX1BSSU1B
UlksCj4+IMKgKyAuZm9ybWF0cyA9IHN1bjhpX21peGVyX2xheWVyX2Zvcm1hdHMsCj4+IMKgKyAu
bmZvcm1hdHMgPSBBUlJBWV9TSVpFKHN1bjhpX21peGVyX2xheWVyX2Zvcm1hdHMpLAo+PiDCoCsg
fSwKPj4gwqArIHsKPj4gwqArIC50eXBlID0gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKPj4gwqAr
IC5mb3JtYXRzID0gc3VuOGlfbWl4ZXJfbGF5ZXJfZm9ybWF0cywKPj4gwqArIC5uZm9ybWF0cyA9
IEFSUkFZX1NJWkUoc3VuOGlfbWl4ZXJfbGF5ZXJfZm9ybWF0cyksCj4+IMKgKyB9LAo+PiDCoCt9
Owo+PiDCoCsKPj4gwqDCoHN0YXRpYyBzdHJ1Y3Qgc3VuNGlfbGF5ZXIgKnN1bjRpX2xheWVyX2lu
aXRfb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3Qgc3VuNGlfcGxhbmVfZGVzYyAqcGxhbmUp
Cj4+IMKgwqB7Cj4+IMKgQEAgLTExNSw3ICsxNDgsNyBAQCBzdGF0aWMgc3RydWN0IHN1bjRpX2xh
eWVyICpzdW40aV9sYXllcl9pbml0X29uZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAo+PiDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK
Pj4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQo
ZHJtLCAmbGF5ZXItPnBsYW5lLCBCSVQoMCksCj4+IMKgLSAmc3VuNGlfYmFja2VuZF9sYXllcl9m
dW5jcywKPj4gwqArICZzdW40aV9sYXllcl9mdW5jcywKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoHBsYW5lLT5mb3JtYXRzLCBwbGFuZS0+bmZvcm1hdHMsCj4+IMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqBwbGFuZS0+dHlwZSwgTlVMTCk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJl
dCkgewo+PiDCoEBAIC0xMjQsNyArMTU3LDcgQEAgc3RhdGljIHN0cnVjdCBzdW40aV9sYXllciAq
c3VuNGlfbGF5ZXJfaW5pdF9vbmUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPj4gwqDCoMKgwqDC
oMKgwqDCoMKgwqB9Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3BsYW5lX2hlbHBlcl9h
ZGQoJmxheWVyLT5wbGFuZSwKPj4gwqAtICZzdW40aV9iYWNrZW5kX2xheWVyX2hlbHBlcl9mdW5j
cyk7Cj4+IMKgKyAmc3VuNGlfbGF5ZXJfaGVscGVyX2Z1bmNzKTsKPj4gwqDCoMKgwqDCoMKgwqDC
oMKgwqBsYXllci0+ZHJ2ID0gZHJ2Owo+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwbGFu
ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+PiDCoEBAIC0xODcsMyArMjIwLDMw
IEBAIHN0cnVjdCBzdW40aV9sYXllciAqKnN1bjRpX2xheWVyc19pbml0KHN0cnVjdCBkcm1fZGV2
aWNlICpkcm0pCj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGxheWVyczsKPj4gwqDC
oH0KPj4gwqArCj4+IMKgK3N0cnVjdCBzdW40aV9sYXllciAqKnN1bjhpX2xheWVyc19pbml0KHN0
cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4KPiBBbmQgc3RvcmUgdGhpcyAoYW5kIHN1bjRpX2xheWVy
c19pbml0KSBpbiBhbiBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUKPiBmdW5jdGlvbiBwb2ludGVycyBm
b3IgdGhvc2UuCgpIb3cgc2hvdWxkIEkgZG8gaXQ/CklmIEkgY3JlYXRlIGEgb3BzIHN0cnVjdCwg
d2hlcmUgc2hvdWxkIEkgcmVmZXJlbmNlIGl0PwoKPgo+PiDCoCt7Cj4+IMKgKyBzdHJ1Y3Qgc3Vu
NGlfbGF5ZXIgKipsYXllcnM7Cj4+IMKgKyBpbnQgaTsKPj4gwqArCj4+IMKgKyBsYXllcnMgPSBk
ZXZtX2tjYWxsb2MoZHJtLT5kZXYsIEFSUkFZX1NJWkUoc3VuOGlfbWl4ZXJfcGxhbmVzKSwKPj4g
wqArIHNpemVvZigqKmxheWVycyksIEdGUF9LRVJORUwpOwo+PiDCoCsgaWYgKCFsYXllcnMpCj4+
IMKgKyByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gwqArCj4+IMKgKyBmb3IgKGkgPSAwOyBp
IDwgQVJSQVlfU0laRShzdW44aV9taXhlcl9wbGFuZXMpOyBpKyspIHsKPj4gwqArIGNvbnN0IHN0
cnVjdCBzdW40aV9wbGFuZV9kZXNjICpwbGFuZSA9ICZzdW44aV9taXhlcl9wbGFuZXNbaV07Cj4+
IMKgKyBzdHJ1Y3Qgc3VuNGlfbGF5ZXIgKmxheWVyID0gbGF5ZXJzW2ldOwo+PiDCoCsKPj4gwqAr
IGxheWVyID0gc3VuNGlfbGF5ZXJfaW5pdF9vbmUoZHJtLCBwbGFuZSk7Cj4+IMKgKyBpZiAoSVNf
RVJSKGxheWVyKSkgewo+PiDCoCsgZGV2X2Vycihkcm0tPmRldiwgIkNvdWxkbid0IGluaXRpYWxp
emUgJXMgcGxhbmVcbiIsCj4+IMKgKyBpID8gIm92ZXJsYXkiIDogInByaW1hcnkiKTsKPj4gwqAr
IHJldHVybiBFUlJfQ0FTVChsYXllcik7Cj4+IMKgKyB9Owo+PiDCoCsKPj4gwqArIGxheWVyLT5p
ZCA9IGk7Cj4+IMKgKyB9Owo+PiDCoCsKPj4gwqArIHJldHVybiBsYXllcnM7Cj4+IMKgK30KPj4g
wqBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmggYi9kcml2
ZXJzL2dwdS9kcm0vc3VuNGkvc3VuNGlfbGF5ZXIuaAo+PiDCoGluZGV4IGEyZjY1ZDdhM2Y0ZS4u
ZjdiOWU1ZGFlYTUwIDEwMDY0NAo+PiDCoC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW40
aV9sYXllci5oCj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjRpX2xheWVyLmgK
Pj4gwqBAQCAtMjYsNSArMjYsNiBAQCBwbGFuZV90b19zdW40aV9sYXllcihzdHJ1Y3QgZHJtX3Bs
YW5lICpwbGFuZSkKPj4gwqDCoH0KPj4KPj4gwqDCoHN0cnVjdCBzdW40aV9sYXllciAqKnN1bjRp
X2xheWVyc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOwo+PiDCoCtzdHJ1Y3Qgc3VuNGlf
bGF5ZXIgKipzdW44aV9sYXllcnNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKPj4KPj4g
wqDCoCNlbmRpZiAvKiBfU1VONElfTEFZRVJfSF8gKi8KPj4gwqBkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3Vu
OGlfbWl4ZXIuYwo+PiDCoG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IMKgaW5kZXggMDAwMDAwMDAw
MDAwLi45NDI3YjU3MjQwZDMKPj4gwqAtLS0gL2Rldi9udWxsCj4+IMKgKysrIGIvZHJpdmVycy9n
cHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMKPj4gwqBAQCAtMCwwICsxLDQxNyBAQAo+PiDCoCsv
Kgo+PiDCoCsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3Nj
Lnh5ej4KPj4gwqArICoKPj4gwqArICogQmFzZWQgb24gc3VuNGlfYmFja2VuZC5jLCB3aGljaCBp
czoKPj4gwqArICogQ29weXJpZ2h0IChDKSAyMDE1IEZyZWUgRWxlY3Ryb25zCj4+IMKgKyAqIENv
cHlyaWdodCAoQykgMjAxNSBOZXh0VGhpbmcgQ28KPj4gwqArICoKPj4gwqArICogVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiDC
oCsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcwo+PiDCoCsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+PiDCoCsgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gwqArICovCj4+IMKgKwo+PiDCoCsjaW5j
bHVkZSA8ZHJtL2RybVAuaD4KPj4gwqArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o
Pgo+PiDCoCsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4+IMKgKyNpbmNsdWRlIDxkcm0vZHJt
X2NydGNfaGVscGVyLmg+Cj4+IMKgKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4K
Pj4gwqArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KPj4gwqArI2luY2x1ZGUg
PGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4+IMKgKwo+PiDCoCsjaW5jbHVkZSA8bGludXgvY29t
cG9uZW50Lmg+Cj4+IMKgKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+PiDCoCsjaW5jbHVkZSA8
bGludXgvb2ZfZGV2aWNlLmg+Cj4+IMKgKwo+PiDCoCsjaW5jbHVkZSAic3VuOGlfbWl4ZXIuaCIK
Pj4gwqArI2luY2x1ZGUgInN1bjRpX2Rydi5oIgo+PiDCoCsKPj4gwqArI2RlZmluZSBTVU44SV9E
UkFNX09GRlNFVCAweDQwMDAwMDAwCj4KPiBQSFlTX09GRlNFVD8KCkFueSBuYW1lIGlzIE9LLgoK
KFAuUy4gdGhpcyBzZWVtcyBhbHNvIG5lZWRlZCBmb3Igc29tZSBERTFzKQoKPgo+PiDCoCsKPj4g
wqArI2lmIGRlZmluZWQgQ09ORklHX0RSTV9TVU40SV9ERTIKPgo+IFRoYXQgaWZkZWYgc2hvdWxk
IGJlIGluIHRoZSBoZWFkZXIKClNvIHRoZSBmaWxlIG9ubHkgY29tcGlsZSBpZiB0aGlzIG9wdGlv
biBpcyBlbmFibGVkPwoKQW5kIGlmIHRoaXMgb3B0aW9uIGlzIGRpc2FibGVkLCBpbmxpbmVkIG51
bGwgc3R1YnMgc2hvdWxkIGJlCm1hZGUgaW4gaGVhZGVyPwoKPgo+PiDCoCt2b2lkIHN1bjhpX21p
eGVyX2NvbW1pdChzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyKQo+PiDCoCt7Cj4+IMKgKyBEUk1f
REVCVUdfRFJJVkVSKCJDb21taXR0aW5nIGNoYW5nZXNcbiIpOwo+PiDCoCsKPj4gwqArIHJlZ21h
cF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfR0xPQkFMX0RCVUZGLAo+PiDCoCsgU1VO
OElfTUlYRVJfR0xPQkFMX0RCVUZGX0VOQUJMRSk7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJP
TChzdW44aV9taXhlcl9jb21taXQpOwo+Cj4gQ29tbWl0IGNvdWxkIGJlIG9uZSBvZiB0aGVzZSBv
cHMgdG9vLgo+Cj4+IMKgK3ZvaWQgc3VuOGlfbWl4ZXJfbGF5ZXJfZW5hYmxlKHN0cnVjdCBzdW44
aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIGJvb2wgZW5hYmxlKQo+PiDCoCt7Cj4+
IMKgKyB1MzIgdmFsOwo+PiDCoCsgLyogQ3VycmVudGx5IHRoZSBmaXJzdCBVSSBjaGFubmVsIGlz
IHVzZWQgKi8KPj4gwqArIGludCBjaGFuID0gbWl4ZXItPmNmZy0+dmlfbnVtOwo+PiDCoCsKPj4g
wqArIERSTV9ERUJVR19EUklWRVIoIkVuYWJsaW5nIGxheWVyICVkIGluIGNoYW5uZWwgJWRcbiIs
IGxheWVyLCBjaGFuKTsKPj4gwqArCj4+IMKgKyBpZiAoZW5hYmxlKQo+PiDCoCsgdmFsID0gU1VO
OElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0VOOwo+PiDCoCsgZWxzZQo+PiDCoCsgdmFsID0g
MDsKPgo+IFNvIHlvdSBvbmx5IHN1cHBvcnQgdGhlIFVJIGNoYW5uZWw/Cj4KPiBXaHkgZG8geW91
IGV4cG9zZSBzZXZlcmFsIHBsYW5lcyB0aGVuPwoKQ3VycmVudGx5IEkgZGlkbid0IGZpbmQgYW55
IHdheSB0byBlbmFibGUgbW9yZSB0aGFuIG9uZSBjaGFubmVsCmF0IHRoZSBzYW1lIHRpbWUsIHNv
IG9ubHkgdGhlIGZpcnN0IFVJIGNoYW5uZWwgaXMgdXNlZC4KCkFmdGVyIG1vcmUga25vd2xlZGdl
cyBhcmUgZ2FpbmVkIGZvciBERTIgbWl4ZXJzIHdlIGNhbiBpbXBsZW1lbnQKbW9yZSBmdW5jdGlv
bnMgKGZvciBleGFtcGxlLCBKZXJuZWpzayBoYXZlIGFscmVhZHkgZGlzY292ZXJlZCBob3cKdG8g
ZG8gY29sb3Igc3BhY2UgY29ycmVsYXRpb24gaW4gREUyIGZvciBUVkUpLgoKPgo+PiDCoCsKPj4g
wqArIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+cmVncywKPj4gwqArIFNVTjhJX01JWEVSX0NI
QU5fVUlfTEFZRVJfQVRUUihjaGFuLCBsYXllciksCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJ
X0xBWUVSX0FUVFJfRU4sIHZhbCk7Cj4+IMKgKwo+PiDCoCsgLyogU2V0IHRoZSBhbHBoYSBjb25m
aWd1cmF0aW9uICovCj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXItPnJlZ3MsCj4+IMKg
KyBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFIoY2hhbiwgbGF5ZXIpLAo+PiDCoCsgU1VO
OElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhBX01PREVfTUFTSywKPj4gwqArIFNVTjhJ
X01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9BTFBIQV9NT0RFX0RFRik7Cj4+IMKgKyByZWdtYXBf
dXBkYXRlX2JpdHMobWl4ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVS
X0FUVFIoY2hhbiwgbGF5ZXIpLAo+PiDCoCsgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRS
X0FMUEhBX01BU0ssCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFJfQUxQSEFf
REVGKTsKPgo+IFRoaXMgc2hvdWxkIGJlIGluIGEgcHJvcGVydHkKCldoYXQgcHJvcGVydHk/Cgo+
Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJPTChzdW44aV9taXhlcl9sYXllcl9lbmFibGUpOwo+
PiDCoCsKPj4gwqArc3RhdGljIGludCBzdW44aV9taXhlcl9kcm1fZm9ybWF0X3RvX2xheWVyKHN0
cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiDCoCsgdTMyIGZvcm1hdCwgdTMyICptb2RlKQo+PiDC
oCt7Cj4+IMKgKyBpZiAoKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpICYm
Cj4+IMKgKyAoZm9ybWF0ID09IERSTV9GT1JNQVRfQVJHQjg4ODgpKQo+PiDCoCsgZm9ybWF0ID0g
RFJNX0ZPUk1BVF9YUkdCODg4ODsKPgo+IERvIHlvdSBhY3R1YWxseSBoYXZlIHRoYXQgaXNzdWUu
CgpZZXMsIGl0IHJlYWxseSBkbywgYXQgbGVhc3Qgc2NyZWVuIGdvIGJsYWNrIHdoZW4gSSBzZXQg
dGhpcyB0byBBUkdCODg4OCBpbgpVLUJvb3QuIChVLUJvb3QgaXMgYSBnb29kIGV4cGVyaWVtZW50
IGFyZWEgOy0pICkKCj4KPj4gwqArIHN3aXRjaCAoZm9ybWF0KSB7Cj4+IMKgKyBjYXNlIERSTV9G
T1JNQVRfQVJHQjg4ODg6Cj4+IMKgKyAqbW9kZSA9IFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJf
QVRUUl9GQkZNVF9BUkdCODg4ODsKPj4gwqArIGJyZWFrOwo+PiDCoCsKPj4gwqArIGNhc2UgRFJN
X0ZPUk1BVF9YUkdCODg4ODoKPj4gwqArICptb2RlID0gU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlF
Ul9BVFRSX0ZCRk1UX1hSR0I4ODg4Owo+PiDCoCsgYnJlYWs7Cj4+IMKgKwo+PiDCoCsgY2FzZSBE
Uk1fRk9STUFUX1JHQjg4ODoKPj4gwqArICptb2RlID0gU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlF
Ul9BVFRSX0ZCRk1UX1JHQjg4ODsKPj4gwqArIGJyZWFrOwo+PiDCoCsKPj4gwqArIGRlZmF1bHQ6
Cj4+IMKgKyByZXR1cm4gLUVJTlZBTDsKPj4gwqArIH0KPj4gwqArCj4+IMKgKyByZXR1cm4gMDsK
Pj4gwqArfQo+PiDCoCsKPj4gwqAraW50IHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZChz
dHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3Bs
YW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUg
PSBwbGFuZS0+c3RhdGU7Cj4+IMKgKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRl
LT5mYjsKPj4gwqArIC8qIEN1cnJlbnRseSB0aGUgZmlyc3QgVUkgY2hhbm5lbCBpcyB1c2VkICov
Cj4+IMKgKyBpbnQgY2hhbiA9IG1peGVyLT5jZmctPnZpX251bTsKPj4gwqArIGludCBpOwo+PiDC
oCsKPj4gwqArIERSTV9ERUJVR19EUklWRVIoIlVwZGF0aW5nIGxheWVyICVkXG4iLCBsYXllcik7
Cj4+IMKgKwo+PiDCoCsgaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkp
IHsKPj4gwqArIERSTV9ERUJVR19EUklWRVIoIlByaW1hcnkgbGF5ZXIsIHVwZGF0aW5nIGdsb2Jh
bCBzaXplIFc6ICV1IEg6ICV1XG4iLAo+PiDCoCsgc3RhdGUtPmNydGNfdywgc3RhdGUtPmNydGNf
aCk7Cj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0dMT0JBTF9T
SVpFLAo+PiDCoCsgU1VOOElfTUlYRVJfU0laRShzdGF0ZS0+Y3J0Y193LAo+PiDCoCsgc3RhdGUt
PmNydGNfaCkpOwo+PiDCoCsgRFJNX0RFQlVHX0RSSVZFUigiVXBkYXRpbmcgYmxlbmRlciBzaXpl
XG4iKTsKPj4gwqArIGZvciAoaSA9IDA7IGkgPCBTVU44SV9NSVhFUl9NQVhfQ0hBTl9DT1VOVDsg
aSsrKQo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVyLT5yZWdzLAo+PiDCoCsgU1VOOElfTUlYRVJf
QkxFTkRfQVRUUl9JTlNJWkUoaSksCj4+IMKgKyBTVU44SV9NSVhFUl9TSVpFKHN0YXRlLT5jcnRj
X3csCj4+IMKgKyBzdGF0ZS0+Y3J0Y19oKSk7Cj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJl
Z3MsIFNVTjhJX01JWEVSX0JMRU5EX09VVFNJWkUsCj4+IMKgKyBTVU44SV9NSVhFUl9TSVpFKHN0
YXRlLT5jcnRjX3csCj4+IMKgKyBzdGF0ZS0+Y3J0Y19oKSk7Cj4+IMKgKyBEUk1fREVCVUdfRFJJ
VkVSKCJVcGRhdGluZyBjaGFubmVsIHNpemVcbiIpOwo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVy
LT5yZWdzLCBTVU44SV9NSVhFUl9DSEFOX1VJX09WTF9TSVpFKGNoYW4pLAo+PiDCoCsgU1VOOElf
TUlYRVJfU0laRShzdGF0ZS0+Y3J0Y193LAo+PiDCoCsgc3RhdGUtPmNydGNfaCkpOwo+PiDCoCsg
fQo+PiDCoCsKPj4gwqArIC8qIFNldCB0aGUgbGluZSB3aWR0aCAqLwo+PiDCoCsgRFJNX0RFQlVH
X0RSSVZFUigiTGF5ZXIgbGluZSB3aWR0aDogJWQgYnl0ZXNcbiIsIGZiLT5waXRjaGVzWzBdKTsK
Pj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlF
Ul9QSVRDSChjaGFuLCBsYXllciksCj4+IMKgKyBmYi0+cGl0Y2hlc1swXSk7Cj4+IMKgKwo+PiDC
oCsgLyogU2V0IGhlaWdodCBhbmQgd2lkdGggKi8KPj4gwqArIERSTV9ERUJVR19EUklWRVIoIkxh
eWVyIHNpemUgVzogJXUgSDogJXVcbiIsCj4+IMKgKyBzdGF0ZS0+Y3J0Y193LCBzdGF0ZS0+Y3J0
Y19oKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQ0hBTl9V
SV9MQVlFUl9TSVpFKGNoYW4sIGxheWVyKSwKPj4gwqArIFNVTjhJX01JWEVSX1NJWkUoc3RhdGUt
PmNydGNfdywgc3RhdGUtPmNydGNfaCkpOwo+PiDCoCsKPj4gwqArIC8qIFNldCBiYXNlIGNvb3Jk
aW5hdGVzICovCj4+IMKgKyBEUk1fREVCVUdfRFJJVkVSKCJMYXllciBjb29yZGluYXRlcyBYOiAl
ZCBZOiAlZFxuIiwKPj4gwqArIHN0YXRlLT5jcnRjX3gsIHN0YXRlLT5jcnRjX3kpOwo+PiDCoCsg
cmVnbWFwX3dyaXRlKG1peGVyLT5yZWdzLCBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0NPT1JE
KGNoYW4sIGxheWVyKSwKPj4gwqArIFNVTjhJX01JWEVSX0NPT1JEKHN0YXRlLT5jcnRjX3gsIHN0
YXRlLT5jcnRjX3kpKTsKPj4gwqArCj4+IMKgKyByZXR1cm4gMDsKPj4gwqArfQo+PiDCoCtFWFBP
UlRfU1lNQk9MKHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZCk7Cj4+IMKgKwo+PiDCoCtp
bnQgc3VuOGlfbWl4ZXJfdXBkYXRlX2xheWVyX2Zvcm1hdHMoc3RydWN0IHN1bjhpX21peGVyICpt
aXhlciwKPj4gwqArIGludCBsYXllciwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4+IMKgK3sK
Pj4gwqArIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOwo+PiDC
oCsgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+ZmI7Cj4+IMKgKyBib29sIGlu
dGVybGFjZWQgPSBmYWxzZTsKPj4gwqArIHUzMiB2YWw7Cj4+IMKgKyAvKiBDdXJyZW50bHkgdGhl
IGZpcnN0IFVJIGNoYW5uZWwgaXMgdXNlZCAqLwo+PiDCoCsgaW50IGNoYW4gPSBtaXhlci0+Y2Zn
LT52aV9udW07Cj4+IMKgKyBpbnQgcmV0Owo+PiDCoCsKPj4gwqArIGlmIChwbGFuZS0+c3RhdGUt
PmNydGMpCj4+IMKgKyBpbnRlcmxhY2VkID0gcGxhbmUtPnN0YXRlLT5jcnRjLT5zdGF0ZS0+YWRq
dXN0ZWRfbW9kZS5mbGFncwo+PiDCoCsgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRTsKPj4gwqAr
Cj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5E
X09VVENUTCwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX09VVENUTF9JTlRFUkxBQ0VELAo+PiDC
oCsgaW50ZXJsYWNlZCA/Cj4+IMKgKyBTVU44SV9NSVhFUl9CTEVORF9PVVRDVExfSU5URVJMQUNF
RCA6IDApOwo+PiDCoCsKPj4gwqArIERSTV9ERUJVR19EUklWRVIoIlN3aXRjaGluZyBkaXNwbGF5
IG1peGVyIGludGVybGFjZWQgbW9kZSAlc1xuIiwKPj4gwqArIGludGVybGFjZWQgPyAib24iIDog
Im9mZiIpOwo+PiDCoCsKPj4gwqArIHJldCA9IHN1bjhpX21peGVyX2RybV9mb3JtYXRfdG9fbGF5
ZXIocGxhbmUsIGZiLT5mb3JtYXQtPmZvcm1hdCwKPj4gwqArICZ2YWwpOwo+PiDCoCsgaWYgKHJl
dCkgewo+PiDCoCsgRFJNX0RFQlVHX0RSSVZFUigiSW52YWxpZCBmb3JtYXRcbiIpOwo+PiDCoCsg
cmV0dXJuIHJldDsKPj4gwqArIH0KPj4gwqArCj4+IMKgKyByZWdtYXBfdXBkYXRlX2JpdHMobWl4
ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhFUl9DSEFOX1VJX0xBWUVSX0FUVFIoY2hhbiwgbGF5
ZXIpLAo+PiDCoCsgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX01BU0ssIHZh
bCk7Cj4+IMKgKwo+PiDCoCsgcmV0dXJuIDA7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJPTChz
dW44aV9taXhlcl91cGRhdGVfbGF5ZXJfZm9ybWF0cyk7Cj4+IMKgKwo+PiDCoCtpbnQgc3VuOGlf
bWl4ZXJfdXBkYXRlX2xheWVyX2J1ZmZlcihzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDC
oCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgc3Ry
dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFuZS0+c3RhdGU7Cj4+IMKgKyBzdHJ1Y3Qg
ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsKPj4gwqArIHN0cnVjdCBkcm1fZ2VtX2Nt
YV9vYmplY3QgKmdlbTsKPj4gwqArIGRtYV9hZGRyX3QgcGFkZHI7Cj4+IMKgKyB1aW50MzJfdCBw
YWRkcl91MzI7Cj4+IMKgKyAvKiBDdXJyZW50bHkgdGhlIGZpcnN0IFVJIGNoYW5uZWwgaXMgdXNl
ZCAqLwo+PiDCoCsgaW50IGNoYW4gPSBtaXhlci0+Y2ZnLT52aV9udW07Cj4+IMKgKyBpbnQgYnBw
Owo+PiDCoCsKPj4gwqArIC8qIEdldCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVy
IGluIG1lbW9yeSAqLwo+PiDCoCsgZ2VtID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgMCk7
Cj4+IMKgKwo+PiDCoCsgRFJNX0RFQlVHX0RSSVZFUigiVXNpbmcgR0VNIEAgJXBhZFxuIiwgJmdl
bS0+cGFkZHIpOwo+PiDCoCsKPj4gwqArIC8qIENvbXB1dGUgdGhlIHN0YXJ0IG9mIHRoZSBkaXNw
bGF5ZWQgbWVtb3J5ICovCj4+IMKgKyBicHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4+IMKgKyBw
YWRkciA9IGdlbS0+cGFkZHIgKyBmYi0+b2Zmc2V0c1swXTsKPj4gwqArIHBhZGRyICs9IChzdGF0
ZS0+c3JjX3ggPj4gMTYpICogYnBwOwo+PiDCoCsgcGFkZHIgKz0gKHN0YXRlLT5zcmNfeSA+PiAx
NikgKiBmYi0+cGl0Y2hlc1swXTsKPj4gwqArIHBhZGRyIC09IFNVTjhJX0RSQU1fT0ZGU0VUOwo+
PiDCoCsKPj4gwqArIERSTV9ERUJVR19EUklWRVIoIlNldHRpbmcgYnVmZmVyIGFkZHJlc3MgdG8g
JXBhZFxuIiwgJnBhZGRyKTsKPj4gwqArCj4+IMKgKyBwYWRkcl91MzIgPSAodWludDMyX3QpIHBh
ZGRyOwo+PiDCoCsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywKPj4gwqArIFNVTjhJ
X01JWEVSX0NIQU5fVUlfTEFZRVJfVE9QX0xBRERSKGNoYW4sIGxheWVyKSwKPj4gwqArIHBhZGRy
X3UzMik7Cj4+IMKgKwo+PiDCoCsgcmV0dXJuIDA7Cj4+IMKgK30KPj4gwqArRVhQT1JUX1NZTUJP
TChzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfYnVmZmVyKTsKPj4gwqArCj4+IMKgK3N0YXRpYyBz
dHJ1Y3QgcmVnbWFwX2NvbmZpZyBzdW44aV9taXhlcl9yZWdtYXBfY29uZmlnID0gewo+PiDCoCsg
LnJlZ19iaXRzID0gMzIsCj4+IMKgKyAudmFsX2JpdHMgPSAzMiwKPj4gwqArIC5yZWdfc3RyaWRl
ID0gNCwKPj4gwqArIC5tYXhfcmVnaXN0ZXIgPSAweGJmZmMsIC8qIGd1ZXNzZWQgKi8KPj4gwqAr
fTsKPj4gwqArCj4+IMKgK3N0YXRpYyBpbnQgc3VuOGlfbWl4ZXJfYmluZChzdHJ1Y3QgZGV2aWNl
ICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPj4gwqArIHZvaWQgKmRhdGEpCj4+IMKgK3sK
Pj4gwqArIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo
ZGV2KTsKPj4gwqArIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkYXRhOwo+PiDCoCsgc3RydWN0
IHN1bjRpX2RydiAqZHJ2ID0gZHJtLT5kZXZfcHJpdmF0ZTsKPj4gwqArIHN0cnVjdCBzdW44aV9t
aXhlciAqbWl4ZXI7Cj4+IMKgKyBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPj4gwqArIHZvaWQgX19p
b21lbSAqcmVnczsKPj4gwqArIGludCBpLCByZXQ7Cj4+IMKgKwo+PiDCoCsgbWl4ZXIgPSBkZXZt
X2t6YWxsb2MoZGV2LCBzaXplb2YoKm1peGVyKSwgR0ZQX0tFUk5FTCk7Cj4+IMKgKyBpZiAoIW1p
eGVyKQo+PiDCoCsgcmV0dXJuIC1FTk9NRU07Cj4+IMKgKyBkZXZfc2V0X2RydmRhdGEoZGV2LCBt
aXhlcik7Cj4+IMKgKyBkcnYtPm1peGVyID0gbWl4ZXI7Cj4+IMKgKwo+PiDCoCsgbWl4ZXItPmNm
ZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+PiDCoCsgaWYgKCFtaXhlci0+Y2Zn
KQo+PiDCoCsgcmV0dXJuIC1FSU5WQUw7Cj4+IMKgKwo+PiDCoCsgcmVzID0gcGxhdGZvcm1fZ2V0
X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPj4gwqArIHJlZ3MgPSBkZXZtX2lv
cmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOwo+PiDCoCsgaWYgKElTX0VSUihyZWdzKSkKPj4gwqAr
IHJldHVybiBQVFJfRVJSKHJlZ3MpOwo+PiDCoCsKPj4gwqArIG1peGVyLT5yZWdzID0gZGV2bV9y
ZWdtYXBfaW5pdF9tbWlvKGRldiwgcmVncywKPj4gwqArICZzdW44aV9taXhlcl9yZWdtYXBfY29u
ZmlnKTsKPj4gwqArIGlmIChJU19FUlIobWl4ZXItPnJlZ3MpKSB7Cj4+IMKgKyBkZXZfZXJyKGRl
diwgIkNvdWxkbid0IGNyZWF0ZSB0aGUgbWl4ZXIgcmVnbWFwXG4iKTsKPj4gwqArIHJldHVybiBQ
VFJfRVJSKG1peGVyLT5yZWdzKTsKPj4gwqArIH0KPj4gwqArCj4+IMKgKyBtaXhlci0+cmVzZXQg
PSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KGRldiwgTlVMTCk7Cj4+IMKgKyBpZiAoSVNfRVJSKG1p
eGVyLT5yZXNldCkpIHsKPj4gwqArIGRldl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0IG91ciByZXNl
dCBsaW5lXG4iKTsKPj4gwqArIHJldHVybiBQVFJfRVJSKG1peGVyLT5yZXNldCk7Cj4+IMKgKyB9
Cj4+IMKgKwo+PiDCoCsgcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChtaXhlci0+cmVzZXQp
Owo+PiDCoCsgaWYgKHJldCkgewo+PiDCoCsgZGV2X2VycihkZXYsICJDb3VsZG4ndCBkZWFzc2Vy
dCBvdXIgcmVzZXQgbGluZVxuIik7Cj4+IMKgKyByZXR1cm4gcmV0Owo+PiDCoCsgfQo+PiDCoCsK
Pj4gwqArIG1peGVyLT5idXNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImJ1cyIpOwo+PiDCoCsg
aWYgKElTX0VSUihtaXhlci0+YnVzX2NsaykpIHsKPj4gwqArIGRldl9lcnIoZGV2LCAiQ291bGRu
J3QgZ2V0IHRoZSBtaXhlciBidXMgY2xvY2tcbiIpOwo+PiDCoCsgcmV0ID0gUFRSX0VSUihtaXhl
ci0+YnVzX2Nsayk7Cj4+IMKgKyBnb3RvIGVycl9hc3NlcnRfcmVzZXQ7Cj4+IMKgKyB9Cj4+IMKg
KyBjbGtfcHJlcGFyZV9lbmFibGUobWl4ZXItPmJ1c19jbGspOwo+PiDCoCsKPj4gwqArIG1peGVy
LT5tb2RfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgIm1vZCIpOwo+PiDCoCsgaWYgKElTX0VSUiht
aXhlci0+bW9kX2NsaykpIHsKPj4gwqArIGRldl9lcnIoZGV2LCAiQ291bGRuJ3QgZ2V0IHRoZSBt
aXhlciBtb2R1bGUgY2xvY2tcbiIpOwo+PiDCoCsgcmV0ID0gUFRSX0VSUihtaXhlci0+bW9kX2Ns
ayk7Cj4+IMKgKyBnb3RvIGVycl9kaXNhYmxlX2J1c19jbGs7Cj4+IMKgKyB9Cj4+IMKgKyBjbGtf
cHJlcGFyZV9lbmFibGUobWl4ZXItPm1vZF9jbGspOwo+Cj4gU3VwcG9ydGluZyBydW50aW1lX3Bt
IHdvdWxkIGJlIGJldHRlci4KCkJ1dCBJIHRoaW5rIGl0J3MgYXQgbGVhc3Qgbm90IHN1cHBvcnQg
eWV0IGZvciBERTEgYmFja2VuZC4uLgoKPgo+PiDCoCsgLyogUmVzZXQgdGhlIHJlZ2lzdGVycyAq
Lwo+PiDCoCsgZm9yIChpID0gMHgwOyBpIDwgMHgyMDAwMDsgaSArPSA0KQo+PiDCoCsgcmVnbWFw
X3dyaXRlKG1peGVyLT5yZWdzLCBpLCAwKTsKPgo+IERvIHlvdSBzdGlsbCBuZWVkIHRvIHJlc2V0
IGl0PyBJc24ndCB0aGUgcmVzZXQgbGluZSBlbm91Z2g/CgpOb3BlLCBzb21lIHN0cmFuZ2UgZGF0
YSBsaWVzIGluIHRoZSBERTIgc3BhY2UuCgpIZXJlJ3MgYSByZWcgZHVtcCBvZiBhIHJ1bm5pbmcg
REUyICdzIGNoYW5uZWwgMiBvbiBWM3M6Cj0+IG1kIDAxMTA0MDAwCjAxMTA0MDAwOiBmZjAwMDQw
MyAwMTBmMDFkZiAwMDAwMDAwMCAwMDAwMDc4MCAgICAuLi4uLi4uLi4uLi4uLi4uCjAxMTA0MDEw
OiAwM2Y4MDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgICAuLi4uLi4uLi4uLi4uLi4u
CjAxMTA0MDIwOiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgICAuLi4uLi4u
Li4uLi4uLi4uCjAxMTA0MDMwOiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAg
ICAuLi4uLi4uLi4uLi4uLi4uCjAxMTA0MDQwOiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAw
MDAwMDAwMCAgICAuLi4uLi4uLi4uLi4uLi4uCjAxMTA0MDUwOiAwMDAwMDAwMCAwMDAwMDAwMCAw
MDAwMDAwMCAwMDAwMDAwMCAgICAuLi4uLi4uLi4uLi4uLi4uCjAxMTA0MDYwOiAwMDAwMDAwMCAw
MDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgICAuLi4uLi4uLi4uLi4uLi4uCjAxMTA0MDcwOiAw
MDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgICAuLi4uLi4uLi4uLi4uLi4uCjAx
MTA0MDgwOiAwMDAwMDAwMCAwMDAwMDAwMCAwMTBmMDFkZiBiYmU0ZDNiMCAgICAuLi4uLi4uLi4u
Li4uLi4uCjAxMTA0MDkwOiA1NGRhYWY5OCAxMzgzNTkyNyBhMTQ3OWI1OCA4Mzk2YjhhZCAgICAu
Li5UJ1kuLlguRy4uLi4uCjAxMTA0MGEwOiAwN2QwMmVkZSBhMzlhMThkYSA4N2Q4OGFiYSBhMmQy
M2NmNiAgICAuLi4uLi4uLi4uLi4uPC4uCjAxMTA0MGIwOiBlOGJmYThmNyAyYzhkMmI3YyBmOGJi
ZWIzZSA5ODAxM2I3NSAgICAuLi4ufCsuLD4uLi51Oy4uCjAxMTA0MGMwOiA3YzE4NmY0OCA0ZGRj
ZGJkZSBiNjU4Y2FmOCA3NmI3NzBkNiAgICBIby58Li4uTS4uWC4ucC52CjAxMTA0MGQwOiBiOWE2
MjBlZiBmZTIxNWNjMSBlZGQ2YzRiMyBjNWY3YTY2YyAgICAuIC4uLlwhLi4uLi5sLi4uCjAxMTA0
MGUwOiAwZDFmZjZkMyA5NTZjYTllOCA3ZjUxZjgwYSBhZDlhMTg0YSAgICAuLi4uLi5sLi4uUS5K
Li4uCjAxMTA0MGYwOiBmZjIzZTQyOCA3NzJkOGQxNCBmNGMwMzA3NyA4YmY0OTVjYSAgICAoLiMu
Li4td3cwLi4uLi4uCgooUC5TLiBvbmx5IGZpcnN0IDB4ODggYnl0ZXMgYXJlIHVzZWQgaW4gYSBV
SSBjaGFubmVsLCBzbyB0aGUgZm9sbG93aW5nIGlzCm5vdCByZXNldGVkIGJ5IFUtQm9vdCBERTIg
ZHJpdmVyIGFuZCBpcyBrZXB0IHRoZSBvcmlnaW5hbCBhZnRlciByZXNldCBsaW5lCmRlYXNzZXJ0
aW5nKQoKPgo+PiDCoCsgLyogRW5hYmxlIHRoZSBtaXhlciAqLwo+PiDCoCsgcmVnbWFwX3dyaXRl
KG1peGVyLT5yZWdzLCBTVU44SV9NSVhFUl9HTE9CQUxfQ1RMLAo+PiDCoCsgU1VOOElfTUlYRVJf
R0xPQkFMX0NUTF9SVF9FTik7Cj4+IMKgKwo+PiDCoCsgLyogSW5pdGlhbGl6ZSBibGVuZGVyICov
Cj4+IMKgKyByZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5EX0ZDT0xP
Ul9DVEwsCj4+IMKgKyBTVU44SV9NSVhFUl9CTEVORF9GQ09MT1JfQ1RMX0RFRik7Cj4+IMKgKyBy
ZWdtYXBfd3JpdGUobWl4ZXItPnJlZ3MsIFNVTjhJX01JWEVSX0JMRU5EX1BSRU1VTFRJUExZLAo+
PiDCoCsgU1VOOElfTUlYRVJfQkxFTkRfUFJFTVVMVElQTFlfREVGKTsKPj4gwqArIHJlZ21hcF93
cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxFTkRfQktDT0xPUiwKPj4gwqArIFNVTjhJ
X01JWEVSX0JMRU5EX0JLQ09MT1JfREVGKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVn
cywgU1VOOElfTUlYRVJfQkxFTkRfTU9ERSgwKSwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX01P
REVfREVGKTsKPj4gwqArIHJlZ21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxF
TkRfTU9ERSgxKSwKPj4gwqArIFNVTjhJX01JWEVSX0JMRU5EX01PREVfREVGKTsKPj4gwqArIHJl
Z21hcF93cml0ZShtaXhlci0+cmVncywgU1VOOElfTUlYRVJfQkxFTkRfQ0tfQ1RMLAo+PiDCoCsg
U1VOOElfTUlYRVJfQkxFTkRfQ0tfQ1RMX0RFRik7Cj4+IMKgKwo+PiDCoCsgZm9yIChpID0gMDsg
aSA8IFNVTjhJX01JWEVSX01BWF9DSEFOX0NPVU5UOyBpKyspCj4+IMKgKyByZWdtYXBfd3JpdGUo
bWl4ZXItPnJlZ3MsCj4+IMKgKyBTVU44SV9NSVhFUl9CTEVORF9BVFRSX0ZDT0xPUihpKSwKPj4g
wqArIFNVTjhJX01JWEVSX0JMRU5EX0FUVFJfRkNPTE9SX0RFRik7Cj4+IMKgKwo+PiDCoCsgLyog
U2VsZWN0IHRoZSBmaXJzdCBVSSBjaGFubmVsICovCj4+IMKgKyBEUk1fREVCVUdfRFJJVkVSKCJT
ZWxlY3RpbmcgY2hhbm5lbCAlZCAoZmlyc3QgVUkgY2hhbm5lbClcbiIsCj4+IMKgKyBtaXhlci0+
Y2ZnLT52aV9udW0pOwo+PiDCoCsgcmVnbWFwX3dyaXRlKG1peGVyLT5yZWdzLCBTVU44SV9NSVhF
Ul9CTEVORF9ST1VURSwKPj4gwqArIG1peGVyLT5jZmctPnZpX251bSk7Cj4+IMKgKwo+PiDCoCsg
cmV0dXJuIDA7Cj4+IMKgKwo+PiDCoCsgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1peGVyLT5tb2Rf
Y2xrKTsKPj4gwqArZXJyX2Rpc2FibGVfYnVzX2NsazoKPj4gwqArIGNsa19kaXNhYmxlX3VucHJl
cGFyZShtaXhlci0+YnVzX2Nsayk7Cj4+IMKgK2Vycl9hc3NlcnRfcmVzZXQ6Cj4+IMKgKyByZXNl
dF9jb250cm9sX2Fzc2VydChtaXhlci0+cmVzZXQpOwo+PiDCoCsgcmV0dXJuIHJldDsKPj4gwqAr
fQo+PiDCoCsKPj4gwqArc3RhdGljIHZvaWQgc3VuOGlfbWl4ZXJfdW5iaW5kKHN0cnVjdCBkZXZp
Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+PiDCoCsgdm9pZCAqZGF0YSkKPj4gwqAr
ewo+PiDCoCsgc3RydWN0IHN1bjhpX21peGVyICptaXhlciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp
Owo+PiDCoCsKPj4gwqArIGNsa19kaXNhYmxlX3VucHJlcGFyZShtaXhlci0+bW9kX2Nsayk7Cj4+
IMKgKyBjbGtfZGlzYWJsZV91bnByZXBhcmUobWl4ZXItPmJ1c19jbGspOwo+PiDCoCsgcmVzZXRf
Y29udHJvbF9hc3NlcnQobWl4ZXItPnJlc2V0KTsKPj4gwqArfQo+PiDCoCsKPj4gwqArc3RhdGlj
IGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIHN1bjhpX21peGVyX29wcyA9IHsKPj4gwqArIC5i
aW5kID0gc3VuOGlfbWl4ZXJfYmluZCwKPj4gwqArIC51bmJpbmQgPSBzdW44aV9taXhlcl91bmJp
bmQsCj4+IMKgK307Cj4+IMKgKwo+PiDCoCtzdGF0aWMgaW50IHN1bjhpX21peGVyX3Byb2JlKHN0
cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+IMKgK3sKPj4gwqArIHJldHVybiBjb21wb25l
bnRfYWRkKCZwZGV2LT5kZXYsICZzdW44aV9taXhlcl9vcHMpOwo+PiDCoCt9Cj4+IMKgKwo+PiDC
oCtzdGF0aWMgaW50IHN1bjhpX21peGVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw
ZGV2KQo+PiDCoCt7Cj4+IMKgKyBjb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZzdW44aV9taXhl
cl9vcHMpOwo+PiDCoCsKPj4gwqArIHJldHVybiAwOwo+PiDCoCt9Cj4+IMKgKwo+PiDCoCtzdGF0
aWMgY29uc3Qgc3RydWN0IHN1bjhpX21peGVyX2NmZyBzdW44aV92M3NfbWl4ZXJfY2ZnID0gewo+
PiDCoCsgLnZpX251bSA9IDIsCj4+IMKgKyAudWlfbnVtID0gMSwKPj4gwqArfTsKPj4gwqArCj4+
IMKgK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX21peGVyX29mX3RhYmxl
W10gPSB7Cj4+IMKgKyB7Cj4+IMKgKyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGktdjNz
LWRlMi1taXhlciIsCj4+IMKgKyAuZGF0YSA9ICZzdW44aV92M3NfbWl4ZXJfY2ZnCj4+IMKgKyB9
LAo+PiDCoCsgeyB9Cj4+IMKgK307Cj4+IMKgK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhp
X21peGVyX29mX3RhYmxlKTsKPj4gwqArCj4+IMKgK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJp
dmVyIHN1bjhpX21peGVyX3BsYXRmb3JtX2RyaXZlciA9IHsKPj4gwqArIC5wcm9iZSA9IHN1bjhp
X21peGVyX3Byb2JlLAo+PiDCoCsgLnJlbW92ZSA9IHN1bjhpX21peGVyX3JlbW92ZSwKPj4gwqAr
IC5kcml2ZXIgPSB7Cj4+IMKgKyAubmFtZSA9ICJzdW44aS1taXhlciIsCj4+IMKgKyAub2ZfbWF0
Y2hfdGFibGUgPSBzdW44aV9taXhlcl9vZl90YWJsZSwKPj4gwqArIH0sCj4+IMKgK307Cj4+IMKg
K21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfbWl4ZXJfcGxhdGZvcm1fZHJpdmVyKTsKPj4g
wqArCj4+IMKgK01PRFVMRV9BVVRIT1IoIkljZW5vd3kgWmhlbmcgPGljZW5vd3lAYW9zYy54eXo+
Iik7Cj4+IMKgK01PRFVMRV9ERVNDUklQVElPTigiQWxsd2lubmVyIERFMiBNaXhlciBkcml2ZXIi
KTsKPj4gwqArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+PiDCoCsjZWxzZSAvKiBEUk1fU1VONElf
REUyICovCj4+IMKgK3ZvaWQgc3VuOGlfbWl4ZXJfY29tbWl0KHN0cnVjdCBzdW44aV9taXhlciAq
bWl4ZXIpCj4+IMKgK3sKPj4gwqArfQo+PiDCoCsKPj4gwqArdm9pZCBzdW44aV9taXhlcl9sYXll
cl9lbmFibGUoc3RydWN0IHN1bjhpX21peGVyICptaXhlciwKPj4gwqArIGludCBsYXllciwgYm9v
bCBlbmFibGUpCj4+IMKgK3sKPj4gwqArfQo+PiDCoCsKPj4gwqAraW50IHN1bjhpX21peGVyX3Vw
ZGF0ZV9sYXllcl9jb29yZChzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxh
eWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgcmV0dXJuIC1FTk9F
TlQ7Cj4+IMKgK30KPj4gwqArCj4+IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfZm9y
bWF0cyhzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3Qg
ZHJtX3BsYW5lICpwbGFuZSkKPj4gwqArewo+PiDCoCsgcmV0dXJuIC1FTk9FTlQ7Cj4+IMKgK30K
Pj4gwqArCj4+IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfYnVmZmVyKHN0cnVjdCBz
dW44aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIHN0cnVjdCBkcm1fcGxhbmUgKnBs
YW5lKQo+PiDCoCt7Cj4+IMKgKyByZXR1cm4gLUVOT0VOVDsKPj4gwqArfQo+PiDCoCsjZW5kaWYg
LyogQ09ORklHX0RSTV9TVU40SV9ERTIgKi8KPj4gwqBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv
ZHJtL3N1bjRpL3N1bjhpX21peGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfbWl4
ZXIuaAo+PiDCoG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IMKgaW5kZXggMDAwMDAwMDAwMDAwLi4w
YmMxMzRiM2JjOTgKPj4gwqAtLS0gL2Rldi9udWxsCj4+IMKgKysrIGIvZHJpdmVycy9ncHUvZHJt
L3N1bjRpL3N1bjhpX21peGVyLmgKPj4gwqBAQCAtMCwwICsxLDEzMyBAQAo+PiDCoCsvKgo+PiDC
oCsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3NjLnh5ej4K
Pj4gwqArICoKPj4gwqArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiDCoCsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+PiDCoCsgKiBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+PiDC
oCsgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
Pj4gwqArICovCj4+IMKgKwo+PiDCoCsjaWZuZGVmIF9TVU44SV9NSVhFUl9IXwo+PiDCoCsjZGVm
aW5lIF9TVU44SV9NSVhFUl9IXwo+PiDCoCsKPj4gwqArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+
PiDCoCsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+IMKgKyNpbmNsdWRlIDxsaW51eC9yZXNl
dC5oPgo+PiDCoCsKPj4gwqArI2luY2x1ZGUgInN1bjRpX2xheWVyLmgiCj4+IMKgKwo+PiDCoCsj
ZGVmaW5lIFNVTjhJX01JWEVSX01BWF9DSEFOX0NPVU5UIDQKPj4gwqArCj4+IMKgKyNkZWZpbmUg
U1VOOElfTUlYRVJfU0laRSh3LCBoKSAoKChoKSAtIDEpIDw8IDE2IHwgKCh3KSAtIDEpKQo+PiDC
oCsjZGVmaW5lIFNVTjhJX01JWEVSX0NPT1JEKHgsIHkpICgoeSkgPDwgMTYgfCAoeCkpCj4+IMKg
Kwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9DVEwgMHgwCj4+IMKgKyNkZWZpbmUg
U1VOOElfTUlYRVJfR0xPQkFMX1NUQVRVUyAweDQKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9H
TE9CQUxfREJVRkYgMHg4Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR0xPQkFMX1NJWkUgMHhj
Cj4+IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9DVExfUlRfRU4gMHgxCj4+
IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0dMT0JBTF9EQlVGRl9FTkFCTEUgMHgxCj4+
IMKgKwo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX0ZDT0xPUl9DVEwgMHgxMDAwCj4+
IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQVRUUl9GQ09MT1IoeCkgKDB4MTAwNCArIDB4
MTAgKiAoeCkgKyAweDApCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQVRUUl9JTlNJ
WkUoeCkgKDB4MTAwNCArIDB4MTAgKiAoeCkgKyAweDQpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfQkxFTkRfQVRUUl9PRkZTRVQoeCkgKDB4MTAwNCArIDB4MTAgKiAoeCkgKyAweDgpCj4+IMKg
KyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfUk9VVEUgMHgxMDgwCj4+IMKgKyNkZWZpbmUgU1VO
OElfTUlYRVJfQkxFTkRfUFJFTVVMVElQTFkgMHgxMDg0Cj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfQkxFTkRfQktDT0xPUiAweDEwODgKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9P
VVRTSVpFIDB4MTA4Ywo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX01PREUoeCkgKDB4
MTA5MCArIDB4MDQgKiAoeCkpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQ0tfQ1RM
IDB4MTBiMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX0NLX0NGRyAweDEwYjQKPj4g
wqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9DS19NQVgoeCkgKDB4MTBjMCArIDB4MDQgKiAo
eCkpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQ0tfTUlOKHgpICgweDEwZTAgKyAw
eDA0ICogKHgpKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX09VVENUTCAweDEwZmMK
Pj4gwqArCj4+IMKgKy8qIFRoZSBmb2xsb3dpbmcgbnVtYmVycyBhcmUgc29tZSBzdGlsbCB1bmtu
b3duIG1hZ2ljIG51bWJlcnMgKi8KPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9BVFRS
X0ZDT0xPUl9ERUYgMHhmZjAwMDAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX0ZD
T0xPUl9DVExfREVGIDB4MDAwMDAxMDEKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9Q
UkVNVUxUSVBMWV9ERUYgMHgwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQkxFTkRfQktDT0xP
Ul9ERUYgMHhmZjAwMDAwMAo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0JMRU5EX01PREVfREVG
IDB4MDMwMTAzMDEKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9DS19DVExfREVGIDB4
MAo+PiDCoCsKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CTEVORF9PVVRDVExfSU5URVJMQUNF
RCBCSVQoMSkKPj4gwqArCj4+IMKgKy8qCj4+IMKgKyAqIFZJIGNoYW5uZWxzIGFyZSBub3QgdXNl
ZCBub3csIGJ1dCB0aGUgc3VwcG9ydCBvZiB0aGVtIG1heSBiZSBpbnRyb2R1Y2VkIGluCj4+IMKg
KyAqIHRoZSBmdXR1cmUuCj4+IMKgKyAqLwo+PiDCoCsKPj4gwqArI2RlZmluZSBTVU44SV9NSVhF
Ul9DSEFOX1VJX0xBWUVSX0FUVFIoY2gsIGxheWVyKSBcCj4+IMKgKyAoMHgyMDAwICsgMHgxMDAw
ICogKGNoKSArIDB4MjAgKiAobGF5ZXIpICsgMHgwKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVS
X0NIQU5fVUlfTEFZRVJfU0laRShjaCwgbGF5ZXIpIFwKPj4gwqArICgweDIwMDAgKyAweDEwMDAg
KiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDQpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
Q0hBTl9VSV9MQVlFUl9DT09SRChjaCwgbGF5ZXIpIFwKPj4gwqArICgweDIwMDAgKyAweDEwMDAg
KiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
Q0hBTl9VSV9MQVlFUl9QSVRDSChjaCwgbGF5ZXIpIFwKPj4gwqArICgweDIwMDAgKyAweDEwMDAg
KiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweGMpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
Q0hBTl9VSV9MQVlFUl9UT1BfTEFERFIoY2gsIGxheWVyKSBcCj4+IMKgKyAoMHgyMDAwICsgMHgx
MDAwICogKGNoKSArIDB4MjAgKiAobGF5ZXIpICsgMHgxMCkKPj4gwqArI2RlZmluZSBTVU44SV9N
SVhFUl9DSEFOX1VJX0xBWUVSX0JPVF9MQUREUihjaCwgbGF5ZXIpIFwKPj4gwqArICgweDIwMDAg
KyAweDEwMDAgKiAoY2gpICsgMHgyMCAqIChsYXllcikgKyAweDE0KQo+PiDCoCsjZGVmaW5lIFNV
TjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfRkNPTE9SKGNoLCBsYXllcikgXAo+PiDCoCsgKDB4MjAw
MCArIDB4MTAwMCAqIChjaCkgKyAweDIwICogKGxheWVyKSArIDB4MTgpCj4+IMKgKyNkZWZpbmUg
U1VOOElfTUlYRVJfQ0hBTl9VSV9UT1BfSEFERFIoY2gpICgweDIwMDAgKyAweDEwMDAgKiAoY2gp
ICsgMHg4MCkKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9DSEFOX1VJX0JPVF9IQUREUihjaCkg
KDB4MjAwMCArIDB4MTAwMCAqIChjaCkgKyAweDg0KQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVS
X0NIQU5fVUlfT1ZMX1NJWkUoY2gpICgweDIwMDAgKyAweDEwMDAgKiAoY2gpICsgMHg4OCkKPj4g
wqArCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0VOIEJJVCgw
KQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9BTFBIQV9NT0RF
X01BU0sgR0VOTUFTSygyLCAxKQo+PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZ
RVJfQVRUUl9GQkZNVF9NQVNLIEdFTk1BU0soMTEsIDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlY
RVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhBX01BU0sgR0VOTUFTSygzMSwgMjQpCj4+IMKgKyNk
ZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0FMUEhBX01PREVfREVGICgxIDw8
IDEpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9BVFRSX0ZCRk1UX0FS
R0I4ODg4ICgwIDw8IDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hBTl9VSV9MQVlFUl9B
VFRSX0ZCRk1UX1hSR0I4ODg4ICg0IDw8IDgpCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQ0hB
Tl9VSV9MQVlFUl9BVFRSX0ZCRk1UX1JHQjg4OCAoOCA8PCA4KQo+PiDCoCsjZGVmaW5lIFNVTjhJ
X01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9BTFBIQV9ERUYgKDB4ZmYgPDwgMjQpCj4+IMKgKwo+
PiDCoCsvKgo+PiDCoCsgKiBUaGVzZSBzdW4tZW5naW5lcyBhcmUgc3RpbGwgdW5rbm93biBub3cs
IHRoZSBFTiByZWdpc3RlcnMgYXJlIGhlcmUgb25seSB0bwo+PiDCoCsgKiBiZSB1c2VkIHRvIGRp
c2FibGUgdGhlc2Ugc3ViLWVuZ2luZXMuCj4+IMKgKyAqLwo+PiDCoCsjZGVmaW5lIFNVTjhJX01J
WEVSX1ZTVV9FTiAweDIwMDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR1NVMV9FTiAweDMw
MDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfR1NVMl9FTiAweDQwMDAwCj4+IMKgKyNkZWZp
bmUgU1VOOElfTUlYRVJfR1NVM19FTiAweDUwMDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJf
RkNFX0VOIDB4YTAwMDAKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9CV1NfRU4gMHhhMjAwMAo+
PiDCoCsjZGVmaW5lIFNVTjhJX01JWEVSX0xUSV9FTiAweGE0MDAwCj4+IMKgKyNkZWZpbmUgU1VO
OElfTUlYRVJfUEVBS19FTiAweGE2MDAwCj4+IMKgKyNkZWZpbmUgU1VOOElfTUlYRVJfQVNFX0VO
IDB4YTgwMDAKPj4gwqArI2RlZmluZSBTVU44SV9NSVhFUl9GQ0NfRU4gMHhhYTAwMAo+PiDCoCsj
ZGVmaW5lIFNVTjhJX01JWEVSX0RDU0NfRU4gMHhiMDAwMAo+PiDCoCsKPj4gwqArc3RydWN0IHN1
bjhpX21peGVyX2NmZyB7Cj4+IMKgKyBpbnQgdmlfbnVtOwo+PiDCoCsgaW50IHVpX251bTsKPj4g
wqArfTsKPj4gwqArCj4+IMKgK3N0cnVjdCBzdW44aV9taXhlciB7Cj4+IMKgKyBzdHJ1Y3QgcmVn
bWFwICpyZWdzOwo+PiDCoCsKPj4gwqArIGNvbnN0IHN0cnVjdCBzdW44aV9taXhlcl9jZmcgKmNm
ZzsKPj4gwqArCj4+IMKgKyBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcmVzZXQ7Cj4+IMKgKwo+PiDC
oCsgc3RydWN0IGNsayAqYnVzX2NsazsKPj4gwqArIHN0cnVjdCBjbGsgKm1vZF9jbGs7Cj4+IMKg
K307Cj4+IMKgKwo+PiDCoCt2b2lkIHN1bjhpX21peGVyX2NvbW1pdChzdHJ1Y3Qgc3VuOGlfbWl4
ZXIgKm1peGVyKTsKPj4gwqArCj4+IMKgK3ZvaWQgc3VuOGlfbWl4ZXJfbGF5ZXJfZW5hYmxlKHN0
cnVjdCBzdW44aV9taXhlciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIGJvb2wgZW5hYmxlKTsK
Pj4gwqAraW50IHN1bjhpX21peGVyX3VwZGF0ZV9sYXllcl9jb29yZChzdHJ1Y3Qgc3VuOGlfbWl4
ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4+
IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfZm9ybWF0cyhzdHJ1Y3Qgc3VuOGlfbWl4
ZXIgKm1peGVyLAo+PiDCoCsgaW50IGxheWVyLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4+
IMKgK2ludCBzdW44aV9taXhlcl91cGRhdGVfbGF5ZXJfYnVmZmVyKHN0cnVjdCBzdW44aV9taXhl
ciAqbWl4ZXIsCj4+IMKgKyBpbnQgbGF5ZXIsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPj4g
wqArI2VuZGlmIC8qIF9TVU44SV9NSVhFUl9IXyAqLwo+PiDCoC0tCj4+IMKgMi4xMS4xCj4KPiBU
aGFua3MsCj4gTWF4aW1lCj4KPiAtLQo+IE1heGltZSBSaXBhcmQsIEZyZWUgRWxlY3Ryb25zCj4g
RW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdpbmVlcmluZwo+IGh0dHA6Ly9mcmVlLWVsZWN0
cm9ucy5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m
cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp
bnV4LWFybS1rZXJuZWwK

  reply	other threads:[~2017-02-22 20:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-22 15:23 [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines Icenowy Zheng
2017-02-22 15:23 ` [PATCH 5/8] drm/sun4i: tcon: add support for V3s TCON Icenowy Zheng
2017-02-22 15:23 ` [PATCH 6/8] ARM: dts: sun8i: add DE2 nodes for V3s SoC Icenowy Zheng
2017-02-22 15:23 ` [PATCH 7/8] ARM: dts: sun8i: add pinmux for LCD pins of " Icenowy Zheng
2017-02-22 15:23 ` [PATCH 8/8] [DO NOT MERGE] ARM: dts: sun8i: enable LCD panel of Lichee Pi Zero Icenowy Zheng
2017-02-22 20:09 ` [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines Maxime Ripard
2017-02-22 20:28   ` Icenowy Zheng [this message]
2017-02-22 22:54     ` Maxime Ripard
2017-02-24 13:30   ` Rob Herring
2017-02-24 15:30     ` Jernej Škrabec
  -- strict thread matches above, loose matches on Subject: below --
2017-02-22 15:18 [PATCH 0/8] Initial Allwinner Display Engine 2.0 Support Icenowy Zheng
2017-02-22 15:18 ` [PATCH 4/8] drm/sun4i: add support for sun8i DE2 mixers and display engines Icenowy Zheng
2017-02-22 22:01   ` Jernej Škrabec
2017-02-22 22:04     ` Icenowy Zheng
2017-02-23 14:27   ` Stefan Monnier
2017-02-23 17:44   ` Emil Velikov
2017-02-24  0:46     ` Maxime Ripard

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=3557471487795322@web2j.yandex.ru \
    --to=icenowy@aosc.xyz \
    --cc=airlied@linux.ie \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@siol.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=moinejf@free.fr \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.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