Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Jul 2010 18:00:04 +0200
From:      Harald Schmalzbauer <h.schmalzbauer@omnilan.de>
To:        bseklecki@collaborativefusion.com
Cc:        freebsd-stable <freebsd-stable@freebsd.org>, Brandon Gooch <jamesbrandongooch@gmail.com>, Sean McAfee <smcafee@collaborativefusion.com>, Steve Polyack <korvus@comcast.net>, Michael Tuexen <tuexen@freebsd.org>, Jack Vogel <jfvogel@gmail.com>, Jeremy Chadwick <freebsd@jdc.parodius.com>
Subject:   Re: em(4) duplex problems with 82541EI on RELENG_8, -CURRENT on  PowerEdge 1850
Message-ID:  <4C447684.7010308@omnilan.de>
In-Reply-To: <1279552398.31311.443.camel@soundwave>
References:  <1275419919.30057.50.camel@soundwave.ws.pitbpa0.priv.collaborativefusion.com>	 <20100601193733.GA44816@icarus.home.lan>	 <AANLkTilAiGMfh7Jo0aJk4aEYXnPOvJvz93Xl3fpsxGQR@mail.gmail.com>	 <AANLkTik2uhWo1MGbEfvZGfSiLpx5Y-m9FpA1UKn3SaTa@mail.gmail.com>	 <4C3CBC1E.9030106@omnilan.de> <1279212377.31311.144.camel@soundwave>	 <1279212602.31311.151.camel@soundwave>	 <84875A93-3851-476E-8F2E-A7008CA6BD5C@FreeBSD.org>	 <4C3F49E8.9090201@comcast.net>	 <AANLkTilXYsE9SID4qeAdn_ZhHCWL8xO6dRKaIjNl4gJD@mail.gmail.com> <1279552398.31311.443.camel@soundwave>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigF6A690C36A07BC733D80DCC7
Content-Type: multipart/mixed; boundary="------------020608030802000604090208"

This is a multi-part message in MIME format.
--------------020608030802000604090208
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

Brian A. Seklecki schrieb am 19.07.2010 17:13 (localtime):
> On Thu, 2010-07-15 at 10:53 -0700, Jack Vogel wrote:
>> The fact that I WISH it to be MFC'd doesn't mean that I am actually
>> given permission to do so.
>=20
>   It seems 8.1 release was tagged on Saturday so we're proper-fucked
>   (we will have to run local patches on all 1850s and 2850s for the
>   duration of RELENG_8_1)
>=20
> http://svn.freebsd.org/viewvc/base?view=3Drevision&revision=3D210187
>=20
>=20
>   Might want to prepare a patch file and instructions now for when

At least the patchfile is something I have hand, Find attached.


>   the whining starts on freebsd-questions@.

-Harry

--------------020608030802000604090208
Content-Type: text/plain;
 name="e1000-releng8.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="e1000-releng8.patch"

LS0tIHN5cy9kZXYvZTEwMDAvaWZfZW0uYwkyMDEwLzA1LzE4IDE3OjA5OjIwCTEuMjEuMi4x
MAorKysgc3lzL2Rldi9lMTAwMC9pZl9lbS5jCTIwMTAvMDYvMTggMTc6MjI6MDgJMS4yMS4y
LjExCkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVlQlNEOiBzcmMvc3lzL2Rldi9l
MTAwMC9pZl9lbS5jLHYgMS4yMS4yLjEwLjIuMSAyMDEwLzA2LzE0IDAyOjA5OjA2IGtlbnNt
aXRoIEV4cCAkKi8KKy8qJEZyZWVCU0Q6IHNyYy9zeXMvZGV2L2UxMDAwL2lmX2VtLmMsdiAx
LjIxLjIuMTEgMjAxMC8wNi8xOCAxNzoyMjowOCBqZnYgRXhwICQqLwogCiAjaWZkZWYgSEFW
RV9LRVJORUxfT1BUSU9OX0hFQURFUlMKICNpbmNsdWRlICJvcHRfZGV2aWNlX3BvbGxpbmcu
aCIKQEAgLTIzMCw4ICsyMzAsOSBAQCBzdGF0aWMgdm9pZAllbV9mcmVlX3JlY2VpdmVfYnVm
ZmVycyhzdHJ1CiBzdGF0aWMgdm9pZAllbV9lbmFibGVfaW50cihzdHJ1Y3QgYWRhcHRlciAq
KTsKIHN0YXRpYyB2b2lkCWVtX2Rpc2FibGVfaW50cihzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0
YXRpYyB2b2lkCWVtX3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlciAqKTsK
K3N0YXRpYyB2b2lkCWVtX2FkZF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7
CiBzdGF0aWMgYm9vbAllbV90eGVvZihzdHJ1Y3QgdHhfcmluZyAqKTsKLXN0YXRpYyBpbnQJ
ZW1fcnhlb2Yoc3RydWN0IHJ4X3JpbmcgKiwgaW50KTsKK3N0YXRpYyBib29sCWVtX3J4ZW9m
KHN0cnVjdCByeF9yaW5nICosIGludCwgaW50ICopOwogI2lmbmRlZiBfX05PX1NUUklDVF9B
TElHTk1FTlQKIHN0YXRpYyBpbnQJZW1fZml4dXBfcngoc3RydWN0IHJ4X3JpbmcgKik7CiAj
ZW5kaWYKQEAgLTI0Miw3ICsyNDMsNiBAQCBzdGF0aWMgYm9vbAllbV90c29fc2V0dXAoc3Ry
dWN0IHR4X3JpbmcgCiBzdGF0aWMgdm9pZAllbV9zZXRfcHJvbWlzYyhzdHJ1Y3QgYWRhcHRl
ciAqKTsKIHN0YXRpYyB2b2lkCWVtX2Rpc2FibGVfcHJvbWlzYyhzdHJ1Y3QgYWRhcHRlciAq
KTsKIHN0YXRpYyB2b2lkCWVtX3NldF9tdWx0aShzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRp
YyB2b2lkCWVtX3ByaW50X2h3X3N0YXRzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZv
aWQJZW1fdXBkYXRlX2xpbmtfc3RhdHVzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZv
aWQJZW1fcmVmcmVzaF9tYnVmcyhzdHJ1Y3QgcnhfcmluZyAqLCBpbnQpOwogc3RhdGljIHZv
aWQJZW1fcmVnaXN0ZXJfdmxhbih2b2lkICosIHN0cnVjdCBpZm5ldCAqLCB1MTYpOwpAQCAt
MjUyLDExICsyNTIsOSBAQCBzdGF0aWMgaW50CWVtX3htaXQoc3RydWN0IHR4X3JpbmcgKiwg
c3RyCiBzdGF0aWMgaW50CWVtX2RtYV9tYWxsb2Moc3RydWN0IGFkYXB0ZXIgKiwgYnVzX3Np
emVfdCwKIAkJICAgIHN0cnVjdCBlbV9kbWFfYWxsb2MgKiwgaW50KTsKIHN0YXRpYyB2b2lk
CWVtX2RtYV9mcmVlKHN0cnVjdCBhZGFwdGVyICosIHN0cnVjdCBlbV9kbWFfYWxsb2MgKik7
Ci1zdGF0aWMgdm9pZAllbV9wcmludF9kZWJ1Z19pbmZvKHN0cnVjdCBhZGFwdGVyICopOwor
c3RhdGljIGludAllbV9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBz
dGF0aWMgdm9pZAllbV9wcmludF9udm1faW5mbyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRp
YyBpbnQgCWVtX2lzX3ZhbGlkX2V0aGVyX2FkZHIodTggKik7Ci1zdGF0aWMgaW50CWVtX3N5
c2N0bF9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKTsKLXN0YXRpYyBpbnQJZW1fc3lzY3Rs
X2RlYnVnX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgaW50CWVtX3N5c2N0
bF9pbnRfZGVsYXkoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgdm9pZAllbV9hZGRf
aW50X2RlbGF5X3N5c2N0bChzdHJ1Y3QgYWRhcHRlciAqLCBjb25zdCBjaGFyICosCiAJCSAg
ICBjb25zdCBjaGFyICosIHN0cnVjdCBlbV9pbnRfZGVsYXlfaW5mbyAqLCBpbnQsIGludCk7
CkBAIC0zNDcsOCArMzQ1LDEzIEBAIHN0YXRpYyBpbnQgZW1fZGVidWdfc2JwID0gRkFMU0U7
CiBUVU5BQkxFX0lOVCgiaHcuZW0uc2JwIiwgJmVtX2RlYnVnX3NicCk7CiAKIC8qIExvY2Fs
IGNvbnRyb2xzIGZvciBNU0kvTVNJWCAqLworI2lmZGVmIEVNX01VTFRJUVVFVUUKIHN0YXRp
YyBpbnQgZW1fZW5hYmxlX21zaXggPSBUUlVFOwogc3RhdGljIGludCBlbV9tc2l4X3F1ZXVl
cyA9IDI7IC8qIGZvciA4MjU3NCwgY2FuIGJlIDEgb3IgMiAqLworI2Vsc2UKK3N0YXRpYyBp
bnQgZW1fZW5hYmxlX21zaXggPSBGQUxTRTsKK3N0YXRpYyBpbnQgZW1fbXNpeF9xdWV1ZXMg
PSAwOyAvKiBkaXNhYmxlICovCisjZW5kaWYKIFRVTkFCTEVfSU5UKCJody5lbS5lbmFibGVf
bXNpeCIsICZlbV9lbmFibGVfbXNpeCk7CiBUVU5BQkxFX0lOVCgiaHcuZW0ubXNpeF9xdWV1
ZXMiLCAmZW1fbXNpeF9xdWV1ZXMpOwogCkBAIC00NDcsMTMgKzQ1MCw4IEBAIGVtX2F0dGFj
aChkZXZpY2VfdCBkZXYpCiAJLyogU1lTQ1RMIHN0dWZmICovCiAJU1lTQ1RMX0FERF9QUk9D
KGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpLAogCSAgICBTWVNDVExfQ0hJTERSRU4oZGV2
aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKSwKLQkgICAgT0lEX0FVVE8sICJkZWJ1ZyIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCi0JICAgIGVtX3N5c2N0bF9kZWJ1
Z19pbmZvLCAiSSIsICJEZWJ1ZyBJbmZvcm1hdGlvbiIpOwotCi0JU1lTQ1RMX0FERF9QUk9D
KGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpLAotCSAgICBTWVNDVExfQ0hJTERSRU4oZGV2
aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKSwKLQkgICAgT0lEX0FVVE8sICJzdGF0cyIsIENU
TFRZUEVfSU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCi0JICAgIGVtX3N5c2N0bF9zdGF0
cywgIkkiLCAiU3RhdGlzdGljcyIpOworCSAgICBPSURfQVVUTywgIm52bSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCisJICAgIGVtX3N5c2N0bF9udm1faW5mbywg
IkkiLCAiTlZNIEluZm9ybWF0aW9uIik7CiAKIAljYWxsb3V0X2luaXRfbXR4KCZhZGFwdGVy
LT50aW1lciwgJmFkYXB0ZXItPmNvcmVfbXR4LCAwKTsKIApAQCAtNjUxLDYgKzY0OSw4IEBA
IGVtX2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJYWRhcHRlci0+dmxhbl9kZXRhY2ggPSBFVkVO
VEhBTkRMRVJfUkVHSVNURVIodmxhbl91bmNvbmZpZywKIAkgICAgZW1fdW5yZWdpc3Rlcl92
bGFuLCBhZGFwdGVyLCBFVkVOVEhBTkRMRVJfUFJJX0ZJUlNUKTsgCiAKKwllbV9hZGRfaHdf
c3RhdHMoYWRhcHRlcik7CisKIAkvKiBOb24tQU1UIGJhc2VkIGhhcmR3YXJlIGNhbiBub3cg
dGFrZSBjb250cm9sIGZyb20gZmlybXdhcmUgKi8KIAlpZiAoYWRhcHRlci0+aGFzX21hbmFn
ZSAmJiAhYWRhcHRlci0+aGFzX2FtdCkKIAkJZW1fZ2V0X2h3X2NvbnRyb2woYWRhcHRlcik7
CkBAIC0xMzUxLDEyICsxMzUxLDEzIEBAIGVtX3BvbGwoc3RydWN0IGlmbmV0ICppZnAsIGVu
dW0gcG9sbF9jbWQKIAlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IGlmcC0+aWZfc29mdGM7
CiAJc3RydWN0IHR4X3JpbmcJKnR4ciA9IGFkYXB0ZXItPnR4X3JpbmdzOwogCXN0cnVjdCBy
eF9yaW5nCSpyeHIgPSBhZGFwdGVyLT5yeF9yaW5nczsKLQl1MzIJCXJlZ19pY3IsIHJ4X2Rv
bmUgPSAwOworCXUzMgkJcmVnX2ljcjsKKwlpbnQJCXJ4X2RvbmU7CiAKIAlFTV9DT1JFX0xP
Q0soYWRhcHRlcik7CiAJaWYgKChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVOTklO
RykgPT0gMCkgewogCQlFTV9DT1JFX1VOTE9DSyhhZGFwdGVyKTsKLQkJcmV0dXJuIChyeF9k
b25lKTsKKwkJcmV0dXJuICgwKTsKIAl9CiAKIAlpZiAoY21kID09IFBPTExfQU5EX0NIRUNL
X1NUQVRVUykgewpAQCAtMTM3MSw5ICsxMzcyLDcgQEAgZW1fcG9sbChzdHJ1Y3QgaWZuZXQg
KmlmcCwgZW51bSBwb2xsX2NtZAogCX0KIAlFTV9DT1JFX1VOTE9DSyhhZGFwdGVyKTsKIAot
CUVNX1JYX0xPQ0socnhyKTsKLQlyeF9kb25lID0gZW1fcnhlb2YocnhyLCBjb3VudCk7Ci0J
RU1fUlhfVU5MT0NLKHJ4cik7CisJZW1fcnhlb2YocnhyLCBjb3VudCwgJnJ4X2RvbmUpOwog
CiAJRU1fVFhfTE9DSyh0eHIpOwogCWVtX3R4ZW9mKHR4cik7CkBAIC0xNDQ1LDE2ICsxNDQ0
LDE1IEBAIGVtX2hhbmRsZV9xdWUodm9pZCAqY29udGV4dCwgaW50IHBlbmRpbmcKIAlzdHJ1
Y3QgaWZuZXQJKmlmcCA9IGFkYXB0ZXItPmlmcDsKIAlzdHJ1Y3QgdHhfcmluZwkqdHhyID0g
YWRhcHRlci0+dHhfcmluZ3M7CiAJc3RydWN0IHJ4X3JpbmcJKnJ4ciA9IGFkYXB0ZXItPnJ4
X3JpbmdzOwotCWJvb2wJCW1vcmVfcng7CisJYm9vbAkJbW9yZTsKIAogCiAJaWYgKGlmcC0+
aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5OSU5HKSB7Ci0JCUVNX1JYX0xPQ0socnhyKTsK
LQkJbW9yZV9yeCA9IGVtX3J4ZW9mKHJ4ciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCk7
Ci0JCUVNX1JYX1VOTE9DSyhyeHIpOworCQltb3JlID0gZW1fcnhlb2YocnhyLCBhZGFwdGVy
LT5yeF9wcm9jZXNzX2xpbWl0LCBOVUxMKTsKIAogCQlFTV9UWF9MT0NLKHR4cik7Ci0JCWVt
X3R4ZW9mKHR4cik7CisJCWlmIChlbV90eGVvZih0eHIpKQorCQkJbW9yZSA9IFRSVUU7CiAj
aWZkZWYgRU1fTVVMVElRVUVVRQogCQlpZiAoIWRyYnJfZW1wdHkoaWZwLCB0eHItPmJyKSkK
IAkJCWVtX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7CkBAIC0xNDYzLDcgKzE0
NjEsNyBAQCBlbV9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGludCBwZW5kaW5nCiAJCQll
bV9zdGFydF9sb2NrZWQoaWZwLCB0eHIpOwogI2VuZGlmCiAJCUVNX1RYX1VOTE9DSyh0eHIp
OwotCQlpZiAobW9yZV9yeCkgeworCQlpZiAobW9yZSkgewogCQkJdGFza3F1ZXVlX2VucXVl
dWUoYWRhcHRlci0+dHEsICZhZGFwdGVyLT5xdWVfdGFzayk7CiAJCQlyZXR1cm47CiAJCX0K
QEAgLTE1MTEsMTAgKzE1MDksOCBAQCBlbV9tc2l4X3J4KHZvaWQgKmFyZykKIAlzdHJ1Y3Qg
YWRhcHRlcgkqYWRhcHRlciA9IHJ4ci0+YWRhcHRlcjsKIAlib29sCQltb3JlOwogCi0JRU1f
UlhfTE9DSyhyeHIpOwogCSsrcnhyLT5yeF9pcnE7Ci0JbW9yZSA9IGVtX3J4ZW9mKHJ4ciwg
YWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCk7Ci0JRU1fUlhfVU5MT0NLKHJ4cik7CisJbW9y
ZSA9IGVtX3J4ZW9mKHJ4ciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCwgTlVMTCk7CiAJ
aWYgKG1vcmUpCiAJCXRhc2txdWV1ZV9lbnF1ZXVlKHJ4ci0+dHEsICZyeHItPnJ4X3Rhc2sp
OwogCWVsc2UKQEAgLTE1MzksNyArMTUzNSw3IEBAIGVtX21zaXhfbGluayh2b2lkICphcmcp
CiAKIAlpZiAocmVnX2ljciAmIChFMTAwMF9JQ1JfUlhTRVEgfCBFMTAwMF9JQ1JfTFNDKSkg
ewogCQlhZGFwdGVyLT5ody5tYWMuZ2V0X2xpbmtfc3RhdHVzID0gMTsKLQkJdGFza3F1ZXVl
X2VucXVldWUodGFza3F1ZXVlX2Zhc3QsICZhZGFwdGVyLT5saW5rX3Rhc2spOworCQllbV9o
YW5kbGVfbGluayhhZGFwdGVyLCAwKTsKIAl9IGVsc2UKIAkJRTEwMDBfV1JJVEVfUkVHKCZh
ZGFwdGVyLT5odywgRTEwMDBfSU1TLAogCQkgICAgRU1fTVNJWF9MSU5LIHwgRTEwMDBfSU1T
X0xTQyk7CkBAIC0xNTUzLDkgKzE1NDksNyBAQCBlbV9oYW5kbGVfcngodm9pZCAqY29udGV4
dCwgaW50IHBlbmRpbmcpCiAJc3RydWN0IGFkYXB0ZXIJKmFkYXB0ZXIgPSByeHItPmFkYXB0
ZXI7CiAgICAgICAgIGJvb2wgICAgICAgICAgICBtb3JlOwogCi0JRU1fUlhfTE9DSyhyeHIp
OwotCW1vcmUgPSBlbV9yeGVvZihyeHIsIGFkYXB0ZXItPnJ4X3Byb2Nlc3NfbGltaXQpOwot
CUVNX1JYX1VOTE9DSyhyeHIpOworCW1vcmUgPSBlbV9yeGVvZihyeHIsIGFkYXB0ZXItPnJ4
X3Byb2Nlc3NfbGltaXQsIE5VTEwpOwogCWlmIChtb3JlKQogCQl0YXNrcXVldWVfZW5xdWV1
ZShyeHItPnRxLCAmcnhyLT5yeF90YXNrKTsKIAllbHNlCkBAIC0yMDY5LDkgKzIwNjMsNiBA
QCBlbV9sb2NhbF90aW1lcih2b2lkICphcmcpCiAJaWYgKGUxMDAwX2dldF9sYWFfc3RhdGVf
ODI1NzEoJmFkYXB0ZXItPmh3KSA9PSBUUlVFKQogCQllMTAwMF9yYXJfc2V0KCZhZGFwdGVy
LT5odywgYWRhcHRlci0+aHcubWFjLmFkZHIsIDApOwogCi0JaWYgKGVtX2Rpc3BsYXlfZGVi
dWdfc3RhdHMgJiYgaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpCi0JCWVt
X3ByaW50X2h3X3N0YXRzKGFkYXB0ZXIpOwotCiAJLyoKIAkqKiBDaGVjayBmb3IgdGltZSBz
aW5jZSBhbnkgZGVzY3JpcHRvciB3YXMgY2xlYW5lZAogCSovCkBAIC0yNDMxLDExICsyNDIy
LDYgQEAgZW1fYWxsb2NhdGVfbXNpeChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcgogCWFkYXB0
ZXItPmxpbmt2ZWMgPSB2ZWN0b3I7CiAJYWRhcHRlci0+aXZhcnMgfD0gICg4IHwgdmVjdG9y
KSA8PCAxNjsKIAlhZGFwdGVyLT5pdmFycyB8PSAweDgwMDAwMDAwOwotCVRBU0tfSU5JVCgm
YWRhcHRlci0+bGlua190YXNrLCAwLCBlbV9oYW5kbGVfbGluaywgYWRhcHRlcik7Ci0JYWRh
cHRlci0+dHEgPSB0YXNrcXVldWVfY3JlYXRlX2Zhc3QoImVtX2xpbmsiLCBNX05PV0FJVCwK
LQkgICAgdGFza3F1ZXVlX3RocmVhZF9lbnF1ZXVlLCAmYWRhcHRlci0+dHEpOwotCXRhc2tx
dWV1ZV9zdGFydF90aHJlYWRzKCZhZGFwdGVyLT50cSwgMSwgUElfTkVULCAiJXMgbGlua3Ei
LAotCSAgICBkZXZpY2VfZ2V0X25hbWV1bml0KGFkYXB0ZXItPmRldikpOwogCiAJcmV0dXJu
ICgwKTsKIH0KQEAgLTQwOTAsOCArNDA3Niw4IEBAIGVtX2luaXRpYWxpemVfcmVjZWl2ZV91
bml0KHN0cnVjdCBhZGFwdGUKICAqICAKICAqICBGb3IgcG9sbGluZyB3ZSBhbHNvIG5vdyBy
ZXR1cm4gdGhlIG51bWJlciBvZiBjbGVhbmVkIHBhY2tldHMKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
Ci1zdGF0aWMgaW50Ci1lbV9yeGVvZihzdHJ1Y3QgcnhfcmluZyAqcnhyLCBpbnQgY291bnQp
CitzdGF0aWMgYm9vbAorZW1fcnhlb2Yoc3RydWN0IHJ4X3JpbmcgKnJ4ciwgaW50IGNvdW50
LCBpbnQgKmRvbmUpCiB7CiAJc3RydWN0IGFkYXB0ZXIJCSphZGFwdGVyID0gcnhyLT5hZGFw
dGVyOwogCXN0cnVjdCBpZm5ldAkJKmlmcCA9IGFkYXB0ZXItPmlmcDsKQEAgLTQxMDIsNyAr
NDA4OCw3IEBAIGVtX3J4ZW9mKHN0cnVjdCByeF9yaW5nICpyeHIsIGludCBjb3VudCkKIAli
b29sCQkJZW9wOwogCXN0cnVjdCBlMTAwMF9yeF9kZXNjCSpjdXI7CiAKLQlFTV9SWF9MT0NL
X0FTU0VSVChyeHIpOworCUVNX1JYX0xPQ0socnhyKTsKIAogCWZvciAoaSA9IHJ4ci0+bmV4
dF90b19jaGVjaywgcHJvY2Vzc2VkID0gMDsgY291bnQgIT0gMDspIHsKIApAQCAtNDE5Niw4
ICs0MTgyLDEzIEBAIHNraXA6CiAJCQlpID0gMDsKIAogCQkvKiBTZW5kIHRvIHRoZSBzdGFj
ayAqLwotCQlpZiAoc2VuZG1wICE9IE5VTEwpCisJCWlmIChzZW5kbXAgIT0gTlVMTCkgewor
CQkJcnhyLT5uZXh0X3RvX2NoZWNrID0gaTsKKwkJCUVNX1JYX1VOTE9DSyhyeHIpOwogCQkJ
KCppZnAtPmlmX2lucHV0KShpZnAsIHNlbmRtcCk7CisJCQlFTV9SWF9MT0NLKHJ4cik7CisJ
CQlpID0gcnhyLT5uZXh0X3RvX2NoZWNrOworCQl9CiAKIAkJLyogT25seSByZWZyZXNoIG1i
dWZzIGV2ZXJ5IDggZGVzY3JpcHRvcnMgKi8KIAkJaWYgKHByb2Nlc3NlZCA9PSA4KSB7CkBA
IC00MjEzLDEyICs0MjA0LDExIEBAIHNraXA6CiAJfQogCiAJcnhyLT5uZXh0X3RvX2NoZWNr
ID0gaTsKKwlpZiAoZG9uZSAhPSBOVUxMKQorCQkqZG9uZSA9IHJ4ZG9uZTsKKwlFTV9SWF9V
TkxPQ0socnhyKTsKIAotI2lmZGVmIERFVklDRV9QT0xMSU5HCi0JcmV0dXJuIChyeGRvbmUp
OwotI2Vsc2UKIAlyZXR1cm4gKChzdGF0dXMgJiBFMTAwMF9SWERfU1RBVF9ERCkgPyBUUlVF
IDogRkFMU0UpOwotI2VuZGlmCiB9CiAKICNpZm5kZWYgX19OT19TVFJJQ1RfQUxJR05NRU5U
CkBAIC00ODY5LDExNCArNDg1OSwyODUgQEAgZW1fdXBkYXRlX3N0YXRzX2NvdW50ZXJzKHN0
cnVjdCBhZGFwdGVyIAogfQogCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFRoaXMg
cm91dGluZSBpcyBjYWxsZWQgb25seSB3aGVuIGVtX2Rpc3BsYXlfZGVidWdfc3RhdHMgaXMg
ZW5hYmxlZC4KLSAqICBUaGlzIHJvdXRpbmUgcHJvdmlkZXMgYSB3YXkgdG8gdGFrZSBhIGxv
b2sgYXQgaW1wb3J0YW50IHN0YXRpc3RpY3MKLSAqICBtYWludGFpbmVkIGJ5IHRoZSBkcml2
ZXIgYW5kIGhhcmR3YXJlLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEFkZCBz
eXNjdGwgdmFyaWFibGVzLCBvbmUgcGVyIHN0YXRpc3RpYywgdG8gdGhlIHN5c3RlbS4KKyAq
Lwogc3RhdGljIHZvaWQKLWVtX3ByaW50X2RlYnVnX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFk
YXB0ZXIpCitlbV9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCiB7CisK
IAlkZXZpY2VfdCBkZXYgPSBhZGFwdGVyLT5kZXY7Ci0JdTggKmh3X2FkZHIgPSBhZGFwdGVy
LT5ody5od19hZGRyOwotCXN0cnVjdCByeF9yaW5nICpyeHIgPSBhZGFwdGVyLT5yeF9yaW5n
czsKLQlzdHJ1Y3QgdHhfcmluZyAqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7CiAKLQlkZXZp
Y2VfcHJpbnRmKGRldiwgIkFkYXB0ZXIgaGFyZHdhcmUgYWRkcmVzcyA9ICVwIFxuIiwgaHdf
YWRkcik7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDVFJMID0gMHgleCBSQ1RMID0gMHgleCBc
biIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfQ1RSTCksCi0J
ICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkNUTCkpOwotCWRldmlj
ZV9wcmludGYoZGV2LCAiUGFja2V0IGJ1ZmZlciA9IFR4PSVkayBSeD0lZGsgXG4iLAotCSAg
ICAoKEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUEJBKSAmIDB4ZmZmZjAw
MDApID4+IDE2KSxcCi0JICAgIChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAw
X1BCQSkgJiAweGZmZmYpICk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJGbG93IGNvbnRyb2wg
d2F0ZXJtYXJrcyBoaWdoID0gJWQgbG93ID0gJWRcbiIsCi0JICAgIGFkYXB0ZXItPmh3LmZj
LmhpZ2hfd2F0ZXIsCi0JICAgIGFkYXB0ZXItPmh3LmZjLmxvd193YXRlcik7Ci0JZGV2aWNl
X3ByaW50ZihkZXYsICJ0eF9pbnRfZGVsYXkgPSAlZCwgdHhfYWJzX2ludF9kZWxheSA9ICVk
XG4iLAotCSAgICBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1RJRFYpLAot
CSAgICBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1RBRFYpKTsKLQlkZXZp
Y2VfcHJpbnRmKGRldiwgInJ4X2ludF9kZWxheSA9ICVkLCByeF9hYnNfaW50X2RlbGF5ID0g
JWRcbiIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRUUiks
Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkFEVikpOworCXN0
cnVjdCBzeXNjdGxfY3R4X2xpc3QgKmN0eCA9IGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYp
OworCXN0cnVjdCBzeXNjdGxfb2lkICp0cmVlID0gZGV2aWNlX2dldF9zeXNjdGxfdHJlZShk
ZXYpOworCXN0cnVjdCBzeXNjdGxfb2lkX2xpc3QgKmNoaWxkID0gU1lTQ1RMX0NISUxEUkVO
KHRyZWUpOworCXN0cnVjdCBlMTAwMF9od19zdGF0cyAqc3RhdHMgPSAmYWRhcHRlci0+c3Rh
dHM7CisKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqc3RhdF9ub2RlLCAqaW50X25vZGUsICpob3N0
X25vZGU7CisJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqc3RhdF9saXN0LCAqaW50X2xpc3Qs
ICpob3N0X2xpc3Q7CisKKwkvKiBEcml2ZXIgU3RhdGlzdGljcyAqLworCVNZU0NUTF9BRERf
VUlOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImxpbmtfaXJxIiwgCisJCQlDVExGTEFHX1JE
LCAmYWRhcHRlci0+bGlua19pcnEsIDAsCisJCQkiTGluayBNU0lYIElSUSBIYW5kbGVkIik7
CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgIm1idWZfYWxsb2Nf
ZmFpbCIsIAorCQkJIENUTEZMQUdfUkQsICZhZGFwdGVyLT5tYnVmX2FsbG9jX2ZhaWxlZCwK
KwkJCSAiU3RkIG1idWYgZmFpbGVkIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxk
LCBPSURfQVVUTywgImNsdXN0ZXJfYWxsb2NfZmFpbCIsIAorCQkJIENUTEZMQUdfUkQsICZh
ZGFwdGVyLT5tYnVmX2NsdXN0ZXJfZmFpbGVkLAorCQkJICJTdGQgbWJ1ZiBjbHVzdGVyIGZh
aWxlZCIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkcm9w
cGVkIiwgCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+ZHJvcHBlZF9wa3RzLAorCQkJIkRy
aXZlciBkcm9wcGVkIHBhY2tldHMiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQs
IE9JRF9BVVRPLCAidHhfZG1hX2ZhaWwiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5u
b190eF9kbWFfc2V0dXAsCisJCQkiRHJpdmVyIHR4IGRtYSBmYWlsdXJlIGluIHhtaXQiKTsK
KworCVNZU0NUTF9BRERfVUlOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImZjX2hpZ2hfd2F0
ZXIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPmh3LmZjLmhpZ2hfd2F0ZXIsIDAsCisJ
CQkiRmxvdyBDb250cm9sIEhpZ2ggV2F0ZXJtYXJrIik7CisJU1lTQ1RMX0FERF9VSU5UKGN0
eCwgY2hpbGQsIE9JRF9BVVRPLCAiZmNfbG93X3dhdGVyIiwgCisJCQlDVExGTEFHX1JELCAm
YWRhcHRlci0+aHcuZmMubG93X3dhdGVyLCAwLAorCQkJIkZsb3cgQ29udHJvbCBMb3cgV2F0
ZXJtYXJrIik7CisKKwkvKiBNQUMgc3RhdHMgZ2V0IHRoZSBvd24gc3ViIG5vZGUgKi8KKwor
CXN0YXRfbm9kZSA9IFNZU0NUTF9BRERfTk9ERShjdHgsIGNoaWxkLCBPSURfQVVUTywgIm1h
Y19zdGF0cyIsIAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiU3RhdGlzdGljcyIpOwor
CXN0YXRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihzdGF0X25vZGUpOworCisJU1lTQ1RMX0FE
RF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImV4Y2Vzc19jb2xsIiwgCisJCQlD
VExGTEFHX1JELCAmc3RhdHMtPmVjb2wsCisJCQkiRXhjZXNzaXZlIGNvbGxpc2lvbnMiKTsK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAic3ltYm9sX2Vy
cm9ycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc3ltZXJycywKKwkJCSJT
eW1ib2wgRXJyb3JzIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURf
QVVUTywgInNlcXVlbmNlX2Vycm9ycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3Rh
dHMuc2VjLAorCQkJIlNlcXVlbmNlIEVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChjdHgs
IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJkZWZlcl9jb3VudCIsCisJCQlDVExGTEFHX1JELCAm
YWRhcHRlci0+c3RhdHMuZGMsCisJCQkiRGVmZXIgQ291bnQiKTsKKwlTWVNDVExfQUREX1FV
QUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWlzc2VkX3BhY2tldHMiLAorCQkJQ1RM
RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wYywKKwkJCSJNaXNzZWQgUGFja2V0cyIpOwor
CVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X25vX2J1
ZmYiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnJuYmMsCisJCQkiUmVjZWl2
ZSBObyBCdWZmZXJzIik7CisJLyogUkxFQyBpcyBpbmFjY3VyYXRlIG9uIHNvbWUgaGFyZHdh
cmUsIGNhbGN1bGF0ZSBvdXIgb3duLiAqLworLyogCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0
YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X2xlbl9lcnJzIiwgKi8KKy8qIAkJCUNUTEZMQUdf
UkQsIGFkYXB0ZXItPnN0YXRzLnJvYyArIGFkYXB0ZXItPnN0YXRzLnJ1YywgKi8KKy8qIAkJ
CSJSZWNlaXZlIExlbmd0aCBFcnJvcnMiKTsgKi8KKworCVNZU0NUTF9BRERfUVVBRChjdHgs
IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X2VycnMiLAorCQkJQ1RMRkxBR19SRCwgJmFk
YXB0ZXItPnN0YXRzLnJ4ZXJyYywKKwkJCSJSZWNlaXZlIEVycm9ycyIpOworCVNZU0NUTF9B
RERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJjcmNfZXJycyIsCisJCQlDVExG
TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY3JjZXJycywKKwkJCSJDUkMgZXJyb3JzIik7CisJ
U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImFsaWdubWVudF9l
cnJzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5hbGduZXJyYywKKwkJCSJB
bGlnbm1lbnQgRXJyb3JzIik7CisJLyogT24gODI1NzUgdGhlc2UgYXJlIGNvbGxpc2lvbiBj
b3VudHMgKi8KKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAi
Y29sbF9leHRfZXJycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2V4dGVy
ciwKKwkJCSJDb2xsaXNpb24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzIik7CisJU1lTQ1RM
X0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X292ZXJydW5zIiwKKwkJ
CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5yeF9vdmVycnVucywKKwkJCSJSWCBvdmVycnVucyIp
OworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ3YXRjaGRv
Z190aW1lb3V0cyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+d2F0Y2hkb2dfZXZlbnRz
LAorCQkJIldhdGNoZG9nIHRpbWVvdXRzIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3Rh
dF9saXN0LCBPSURfQVVUTywgInhvbl9yZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRl
ci0+c3RhdHMueG9ucnhjLAorCQkJIlhPTiBSZWNlaXZlZCIpOworCVNZU0NUTF9BRERfUVVB
RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ4b25fdHhkIiwKKwkJCUNUTEZMQUdfUkQs
ICZhZGFwdGVyLT5zdGF0cy54b250eGMsCisJCQkiWE9OIFRyYW5zbWl0dGVkIik7CisJU1lT
Q1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInhvZmZfcmVjdmQiLAor
CQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnhvZmZyeGMsCisJCQkiWE9GRiBSZWNl
aXZlZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ4
b2ZmX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMueG9mZnR4YywKKwkJ
CSJYT0ZGIFRyYW5zbWl0dGVkIik7CisKKwkvKiBQYWNrZXQgUmVjZXB0aW9uIFN0YXRzICov
CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInRvdGFsX3Br
dHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnRwciwKKwkJCSJU
b3RhbCBQYWNrZXRzIFJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRf
bGlzdCwgT0lEX0FVVE8sICJnb29kX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFk
YXB0ZXItPnN0YXRzLmdwcmMsCisJCQkiR29vZCBQYWNrZXRzIFJlY2VpdmVkIik7CisJU1lT
Q1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImJjYXN0X3BrdHNfcmVj
dmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmJwcmMsCisJCQkiQnJvYWRj
YXN0IFBhY2tldHMgUmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xp
c3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c19yZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRh
cHRlci0+c3RhdHMubXByYywKKwkJCSJNdWx0aWNhc3QgUGFja2V0cyBSZWNlaXZlZCIpOwor
CVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNf
NjQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzY0LAorCQkJIjY0IGJ5
dGUgZnJhbWVzIHJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlz
dCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfNjVfMTI3IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw
dGVyLT5zdGF0cy5wcmMxMjcsCisJCQkiNjUtMTI3IGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7
CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2ZyYW1l
c18xMjhfMjU1IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wcmMyNTUsCisJ
CQkiMTI4LTI1NSBieXRlIGZyYW1lcyByZWNlaXZlZCIpOworCVNZU0NUTF9BRERfUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfMjU2XzUxMSIsCisJCQlDVExG
TEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHJjNTExLAorCQkJIjI1Ni01MTEgYnl0ZSBmcmFt
ZXMgcmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9B
VVRPLCAicnhfZnJhbWVzXzUxMl8xMDIzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5z
dGF0cy5wcmMxMDIzLAorCQkJIjUxMi0xMDIzIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisJ
U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2ZyYW1lc18x
MDI0XzE1MjIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzE1MjIsCisJ
CQkiMTAyMy0xNTIyIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisgCVNZU0NUTF9BRERfUVVB
RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGV0c19yZWN2ZCIsIAorIAkJ
CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5nb3JjLCAKKyAJCQkiR29vZCBPY3RldHMg
UmVjZWl2ZWQiKTsgCisKKwkvKiBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXRzICovCisgCVNZ
U0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGVzdF90
eGQiLCAKKyAJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ290YywgCisgCQkJIkdv
b2QgT2N0ZXN0IFRyYW5zbWl0dGVkIik7IAorCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRf
bGlzdCwgT0lEX0FVVE8sICJ0b3RhbF9wa3RzX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRh
cHRlci0+c3RhdHMudHB0LAorCQkJIlRvdGFsIFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlT
WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZ29vZF9wa3RzX3R4
ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ3B0YywKKwkJCSJHb29kIFBh
Y2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3Qs
IE9JRF9BVVRPLCAiYmNhc3RfcGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXIt
PnN0YXRzLmJwdGMsCisJCQkiQnJvYWRjYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlT
WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c190
eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wdGMsCisJCQkiTXVsdGlj
YXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0
X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzY0IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw
dGVyLT5zdGF0cy5wdGM2NCwKKwkJCSI2NCBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCAiKTsK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVz
XzY1XzEyNyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTI3LAorCQkJ
IjY1LTEyNyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTI4XzI1NSIsCisJCQlDVExG
TEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMjU1LAorCQkJIjEyOC0yNTUgYnl0ZSBmcmFt
ZXMgdHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9J
RF9BVVRPLCAidHhfZnJhbWVzXzI1Nl81MTEiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXIt
PnN0YXRzLnB0YzUxMSwKKwkJCSIyNTYtNTExIGJ5dGUgZnJhbWVzIHRyYW5zbWl0dGVkIik7
CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4X2ZyYW1l
c181MTJfMTAyMyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTAyMywK
KwkJCSI1MTItMTAyMyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERf
UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTAyNF8xNTIyIiwK
KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wdGMxNTIyLAorCQkJIjEwMjQtMTUy
MiBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0
YXRfbGlzdCwgT0lEX0FVVE8sICJ0c29fdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVy
LT5zdGF0cy50c2N0YywKKwkJCSJUU08gQ29udGV4dHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVND
VExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHNvX2N0eF9mYWlsIiwK
KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy50c2N0ZmMsCisJCQkiVFNPIENvbnRl
eHRzIEZhaWxlZCIpOworCisKKwkvKiBJbnRlcnJ1cHQgU3RhdHMgKi8KKworCWludF9ub2Rl
ID0gU1lTQ1RMX0FERF9OT0RFKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiaW50ZXJydXB0cyIs
IAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiSW50ZXJydXB0IFN0YXRpc3RpY3MiKTsK
KwlpbnRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihpbnRfbm9kZSk7CisKKwlTWVNDVExfQURE
X1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJhc3NlcnRzIiwKKwkJCUNUTEZMQUdf
UkQsICZhZGFwdGVyLT5zdGF0cy5pYWMsCisJCQkiSW50ZXJydXB0IEFzc2VydGlvbiBDb3Vu
dCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaW50X2xpc3QsIE9JRF9BVVRPLCAicnhf
cGt0X3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pY3J4cHRjLAor
CQkJIkludGVycnVwdCBDYXVzZSBSeCBQa3QgVGltZXIgRXhwaXJlIENvdW50Iik7CisKKwlT
WVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9hYnNfdGltZXIi
LAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhhdGMsCisJCQkiSW50ZXJy
dXB0IENhdXNlIFJ4IEFicyBUaW1lciBFeHBpcmUgQ291bnQiKTsKKworCVNZU0NUTF9BRERf
UVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4X3BrdF90aW1lciIsCisJCQlDVExG
TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaWN0eHB0YywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2Ug
VHggUGt0IFRpbWVyIEV4cGlyZSBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg
aW50X2xpc3QsIE9JRF9BVVRPLCAidHhfYWJzX3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZh
ZGFwdGVyLT5zdGF0cy5pY3R4YXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBBYnMgVGlt
ZXIgRXhwaXJlIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwg
T0lEX0FVVE8sICJ0eF9xdWV1ZV9lbXB0eSIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+
c3RhdHMuaWN0eHFlYywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2UgVHggUXVldWUgRW1wdHkgQ291
bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4
X3F1ZXVlX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmlj
dHhxbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBRdWV1ZSBNaW4gVGhyZXNoIENvdW50
Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9k
ZXNjX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhk
bXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBEZXNjIE1pbiBUaHJlc2ggQ291bnQiKTsK
KworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInJ4X292ZXJy
dW4iLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhvYywKKwkJCSJJbnRl
cnJ1cHQgQ2F1c2UgUmVjZWl2ZXIgT3ZlcnJ1biBDb3VudCIpOworCisJLyogSG9zdCB0byBD
YXJkIFN0YXRzICovCisKKwlob3N0X25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4LCBjaGls
ZCwgT0lEX0FVVE8sICJob3N0IiwgCisJCQkJICAgIENUTEZMQUdfUkQsIE5VTEwsIAorCQkJ
CSAgICAiSG9zdCB0byBDYXJkIFN0YXRpc3RpY3MiKTsKKworCWhvc3RfbGlzdCA9IFNZU0NU
TF9DSElMRFJFTihob3N0X25vZGUpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9s
aXN0LCBPSURfQVVUTywgImJyZWFrZXJfdHhfcGt0IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw
dGVyLT5zdGF0cy5jYnRtcGMsCisJCQkiQ2lyY3VpdCBCcmVha2VyIFR4IFBhY2tldCBDb3Vu
dCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVUTywgImhv
c3RfdHhfcGt0X2Rpc2NhcmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmh0
ZHBtYywKKwkJCSJIb3N0IFRyYW5zbWl0IERpc2NhcmRlZCBQYWNrZXRzIik7CisKKwlTWVND
VExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfcGt0IiwKKwkJCUNU
TEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5ycHRoYywKKwkJCSJSeCBQYWNrZXRzIFRvIEhv
c3QiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FVVE8sICJi
cmVha2VyX3J4X3BrdHMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmNicm1w
YywKKwkJCSJDaXJjdWl0IEJyZWFrZXIgUnggUGFja2V0IENvdW50Iik7CisKKwlTWVNDVExf
QUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJlYWtlcl9yeF9wa3RfZHJv
cCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2JyZHBjLAorCQkJIkNpcmN1
aXQgQnJlYWtlciBSeCBEcm9wcGVkIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4
LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAidHhfZ29vZF9wa3QiLAorCQkJQ1RMRkxBR19SRCwg
JmFkYXB0ZXItPnN0YXRzLmhncHRjLAorCQkJIkhvc3QgR29vZCBQYWNrZXRzIFR4IENvdW50
Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJl
YWtlcl90eF9wa3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaHRj
YmRwYywKKwkJCSJIb3N0IFR4IENpcmN1aXQgQnJlYWtlciBEcm9wcGVkIENvdW50Iik7CisK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfZ29vZF9i
eXRlcyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaGdvcmMsCisJCQkiSG9z
dCBHb29kIE9jdGV0cyBSZWNlaXZlZCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0
eCwgaG9zdF9saXN0LCBPSURfQVVUTywgInR4X2dvb2RfYnl0ZXMiLAorCQkJQ1RMRkxBR19S
RCwgJmFkYXB0ZXItPnN0YXRzLmhnb3RjLAorCQkJIkhvc3QgR29vZCBPY3RldHMgVHJhbnNt
aXQgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FV
VE8sICJsZW5ndGhfZXJyb3JzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5s
ZW5lcnJzLAorCQkJIkxlbmd0aCBFcnJvcnMiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgs
IGhvc3RfbGlzdCwgT0lEX0FVVE8sICJzZXJkZXNfdmlvbGF0aW9uX3BrdCIsCisJCQlDVExG
TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc2N2cGMsCisJCQkiU2VyRGVzL1NHTUlJIENvZGUg
VmlvbGF0aW9uIFBrdCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9s
aXN0LCBPSURfQVVUTywgImhlYWRlcl9yZWRpcl9taXNzZWQiLAorCQkJQ1RMRkxBR19SRCwg
JmFkYXB0ZXItPnN0YXRzLmhybXBjLAorCQkJIkhlYWRlciBSZWRpcmVjdGlvbiBNaXNzZWQg
UGFja2V0IENvdW50Iik7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0ZXItPm51bV9x
dWV1ZXM7IGkrKywgdHhyKyspIHsKLQkJZGV2aWNlX3ByaW50ZihkZXYsICJRdWV1ZSglZCkg
dGRoID0gJWQsIHRkdCA9ICVkXG4iLCBpLAotCQkgICAgRTEwMDBfUkVBRF9SRUcoJmFkYXB0
ZXItPmh3LCBFMTAwMF9UREgoaSkpLAotCQkgICAgRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXIt
Pmh3LCBFMTAwMF9URFQoaSkpKTsKLQkJZGV2aWNlX3ByaW50ZihkZXYsICJUWCglZCkgbm8g
ZGVzY3JpcHRvcnMgYXZhaWwgZXZlbnQgPSAlbGRcbiIsCi0JCSAgICB0eHItPm1lLCB0eHIt
Pm5vX2Rlc2NfYXZhaWwpOwotCQlkZXZpY2VfcHJpbnRmKGRldiwgIlRYKCVkKSBNU0lYIElS
USBIYW5kbGVkID0gJWxkXG4iLAotCQkgICAgdHhyLT5tZSwgdHhyLT50eF9pcnEpOwotCQlk
ZXZpY2VfcHJpbnRmKGRldiwgIk51bSBUeCBkZXNjcmlwdG9ycyBhdmFpbCA9ICVkXG4iLAot
CQkgICAgdHhyLT50eF9hdmFpbCk7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiVHggRGVzY3Jp
cHRvcnMgbm90IGF2YWlsMSA9ICVsZFxuIiwKLQkJICAgIHR4ci0+bm9fZGVzY19hdmFpbCk7
Ci0JfQotCWZvciAoaW50IGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3F1ZXVlczsgaSsrLCBy
eHIrKykgewotCQlkZXZpY2VfcHJpbnRmKGRldiwgIlJYKCVkKSBNU0lYIElSUSBIYW5kbGVk
ID0gJWxkXG4iLAotCQkgICAgcnhyLT5tZSwgcnhyLT5yeF9pcnEpOwotCQlkZXZpY2VfcHJp
bnRmKGRldiwgImh3IHJkaCA9ICVkLCBodyByZHQgPSAlZFxuIiwKLQkJICAgIEUxMDAwX1JF
QURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRIKGkpKSwKLQkJICAgIEUxMDAwX1JFQURf
UkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRUKGkpKSk7Ci0JfQotCWRldmljZV9wcmludGYo
ZGV2LCAiU3RkIG1idWYgZmFpbGVkID0gJWxkXG4iLAotCSAgICBhZGFwdGVyLT5tYnVmX2Fs
bG9jX2ZhaWxlZCk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJTdGQgbWJ1ZiBjbHVzdGVyIGZh
aWxlZCA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+bWJ1Zl9jbHVzdGVyX2ZhaWxlZCk7Ci0J
ZGV2aWNlX3ByaW50ZihkZXYsICJEcml2ZXIgZHJvcHBlZCBwYWNrZXRzID0gJWxkXG4iLAot
CSAgICBhZGFwdGVyLT5kcm9wcGVkX3BrdHMpOwotfQogCi1zdGF0aWMgdm9pZAotZW1fcHJp
bnRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JZGV2aWNlX3QgZGV2
ID0gYWRhcHRlci0+ZGV2OwogCi0JZGV2aWNlX3ByaW50ZihkZXYsICJFeGNlc3NpdmUgY29s
bGlzaW9ucyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuZWNv
bCk7Ci0jaWYJKERFQlVHX0hXID4gMCkgIC8qIERvbnQgb3V0cHV0IHRoZXNlIGVycm9ycyBu
b3JtYWxseSAqLwotCWRldmljZV9wcmludGYoZGV2LCAiU3ltYm9sIGVycm9ycyA9ICVsbGRc
biIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuc3ltZXJycyk7Ci0jZW5kaWYK
LQlkZXZpY2VfcHJpbnRmKGRldiwgIlNlcXVlbmNlIGVycm9ycyA9ICVsbGRcbiIsCi0JICAg
IChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuc2VjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwg
IkRlZmVyIGNvdW50ID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0
cy5kYyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJNaXNzZWQgUGFja2V0cyA9ICVsbGRcbiIs
Ci0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMubXBjKTsKLQlkZXZpY2VfcHJpbnRm
KGRldiwgIlJlY2VpdmUgTm8gQnVmZmVycyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcp
YWRhcHRlci0+c3RhdHMucm5iYyk7Ci0JLyogUkxFQyBpcyBpbmFjY3VyYXRlIG9uIHNvbWUg
aGFyZHdhcmUsIGNhbGN1bGF0ZSBvdXIgb3duLiAqLwotCWRldmljZV9wcmludGYoZGV2LCAi
UmVjZWl2ZSBMZW5ndGggRXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKChsb25nIGxvbmcpYWRh
cHRlci0+c3RhdHMucm9jICsgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5ydWMpKTsKLQlk
ZXZpY2VfcHJpbnRmKGRldiwgIlJlY2VpdmUgZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxv
bmcgbG9uZylhZGFwdGVyLT5zdGF0cy5yeGVycmMpOwotCWRldmljZV9wcmludGYoZGV2LCAi
Q3JjIGVycm9ycyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMu
Y3JjZXJycyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJBbGlnbm1lbnQgZXJyb3JzID0gJWxs
ZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5hbGduZXJyYyk7Ci0JZGV2
aWNlX3ByaW50ZihkZXYsICJDb2xsaXNpb24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzID0g
JWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5jZXh0ZXJyKTsKLQlk
ZXZpY2VfcHJpbnRmKGRldiwgIndhdGNoZG9nIHRpbWVvdXRzID0gJWxkXG4iLAotCSAgICBh
ZGFwdGVyLT53YXRjaGRvZ19ldmVudHMpOwotCWRldmljZV9wcmludGYoZGV2LCAiWE9OIFJj
dmQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvbnJ4Yyk7
Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT04gWG10ZCA9ICVsbGRcbiIsCi0JICAgIChsb25n
IGxvbmcpYWRhcHRlci0+c3RhdHMueG9udHhjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlhP
RkYgUmN2ZCA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMueG9m
ZnJ4Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT0ZGIFhtdGQgPSAlbGxkXG4iLAotCSAg
ICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvZmZ0eGMpOwotCWRldmljZV9wcmludGYo
ZGV2LCAiR29vZCBQYWNrZXRzIFJjdmQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFk
YXB0ZXItPnN0YXRzLmdwcmMpOwotCWRldmljZV9wcmludGYoZGV2LCAiR29vZCBQYWNrZXRz
IFhtdGQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmdwdGMp
OwotCWRldmljZV9wcmludGYoZGV2LCAiVFNPIENvbnRleHRzIFhtdGQgPSAlbGxkXG4iLAot
CSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnRzY3RjKTsKLQlkZXZpY2VfcHJpbnRm
KGRldiwgIlRTTyBDb250ZXh0cyBGYWlsZWQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25n
KWFkYXB0ZXItPnN0YXRzLnRzY3RmYyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00
OTg2LDI4ICs1MTQ3LDkgQEAgZW1fcHJpbnRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFk
YXB0ZQogICogIDMyIHdvcmRzLCBzdHVmZiB0aGF0IG1hdHRlcnMgaXMgaW4gdGhhdCBleHRl
bnQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZAotZW1fcHJpbnRfbnZt
X2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JdTE2CWVlcHJvbV9kYXRhOwot
CWludAlpLCBqLCByb3cgPSAwOwotCi0JLyogSXRzIGEgYml0IGNydWRlLCBidXQgaXQgZ2V0
cyB0aGUgam9iIGRvbmUgKi8KLQlwcmludGYoIlxuSW50ZXJmYWNlIEVFUFJPTSBEdW1wOlxu
Iik7Ci0JcHJpbnRmKCJPZmZzZXRcbjB4MDAwMCAgIik7Ci0JZm9yIChpID0gMCwgaiA9IDA7
IGkgPCAzMjsgaSsrLCBqKyspIHsKLQkJaWYgKGogPT0gOCkgeyAvKiBNYWtlIHRoZSBvZmZz
ZXQgYmxvY2sgKi8KLQkJCWogPSAwOyArK3JvdzsKLQkJCXByaW50ZigiXG4weDAwJXgwICAi
LHJvdyk7Ci0JCX0KLQkJZTEwMDBfcmVhZF9udm0oJmFkYXB0ZXItPmh3LCBpLCAxLCAmZWVw
cm9tX2RhdGEpOwotCQlwcmludGYoIiUwNHggIiwgZWVwcm9tX2RhdGEpOwotCX0KLQlwcmlu
dGYoIlxuIik7Ci19CiAKIHN0YXRpYyBpbnQKLWVtX3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NU
TF9IQU5ETEVSX0FSR1MpCitlbV9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJH
UykKIHsKIAlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKIAlpbnQgZXJyb3I7CkBAIC01MDE5
LDE2ICs1MTYxLDEyIEBAIGVtX3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FS
R1MKIAlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQogCQlyZXR1cm4gKGVycm9yKTsKIAot
CWlmIChyZXN1bHQgPT0gMSkgewotCQlhZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopYXJn
MTsKLQkJZW1fcHJpbnRfZGVidWdfaW5mbyhhZGFwdGVyKTsKLQl9CiAJLyoKIAkgKiBUaGlz
IHZhbHVlIHdpbGwgY2F1c2UgYSBoZXggZHVtcCBvZiB0aGUKIAkgKiBmaXJzdCAzMiAxNi1i
aXQgd29yZHMgb2YgdGhlIEVFUFJPTSB0bwogCSAqIHRoZSBzY3JlZW4uCiAJICovCi0JaWYg
KHJlc3VsdCA9PSAyKSB7CisJaWYgKHJlc3VsdCA9PSAxKSB7CiAJCWFkYXB0ZXIgPSAoc3Ry
dWN0IGFkYXB0ZXIgKilhcmcxOwogCQllbV9wcmludF9udm1faW5mbyhhZGFwdGVyKTsKICAg
ICAgICAgfQpAQCAtNTAzNiwyNiArNTE3NCwyNCBAQCBlbV9zeXNjdGxfZGVidWdfaW5mbyhT
WVNDVExfSEFORExFUl9BUkdTCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLQotc3RhdGljIGlu
dAotZW1fc3lzY3RsX3N0YXRzKFNZU0NUTF9IQU5ETEVSX0FSR1MpCitzdGF0aWMgdm9pZAor
ZW1fcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCiB7Ci0Jc3RydWN0
IGFkYXB0ZXIgKmFkYXB0ZXI7Ci0JaW50IGVycm9yOwotCWludCByZXN1bHQ7Ci0KLQlyZXN1
bHQgPSAtMTsKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZyZXN1bHQsIDAs
IHJlcSk7Ci0KLQlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQotCQlyZXR1cm4gKGVycm9y
KTsKKwl1MTYJZWVwcm9tX2RhdGE7CisJaW50CWksIGosIHJvdyA9IDA7CiAKLQlpZiAocmVz
dWx0ID09IDEpIHsKLQkJYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKWFyZzE7Ci0JCWVt
X3ByaW50X2h3X3N0YXRzKGFkYXB0ZXIpOworCS8qIEl0cyBhIGJpdCBjcnVkZSwgYnV0IGl0
IGdldHMgdGhlIGpvYiBkb25lICovCisJcHJpbnRmKCJcbkludGVyZmFjZSBFRVBST00gRHVt
cDpcbiIpOworCXByaW50ZigiT2Zmc2V0XG4weDAwMDAgICIpOworCWZvciAoaSA9IDAsIGog
PSAwOyBpIDwgMzI7IGkrKywgaisrKSB7CisJCWlmIChqID09IDgpIHsgLyogTWFrZSB0aGUg
b2Zmc2V0IGJsb2NrICovCisJCQlqID0gMDsgKytyb3c7CisJCQlwcmludGYoIlxuMHgwMCV4
MCAgIixyb3cpOworCQl9CisJCWUxMDAwX3JlYWRfbnZtKCZhZGFwdGVyLT5odywgaSwgMSwg
JmVlcHJvbV9kYXRhKTsKKwkJcHJpbnRmKCIlMDR4ICIsIGVlcHJvbV9kYXRhKTsKIAl9Ci0K
LQlyZXR1cm4gKGVycm9yKTsKKwlwcmludGYoIlxuIik7CiB9CiAKIHN0YXRpYyBpbnQKLS0t
IHN5cy9kZXYvZTEwMDAvaWZfaWdiLmMJMjAxMC8wNS8xNCAyMjoyMDo1OAkxLjIxLjIuOAor
Kysgc3lzL2Rldi9lMTAwMC9pZl9pZ2IuYwkyMDEwLzA2LzE4IDE3OjIyOjA4CTEuMjEuMi45
CkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVlQlNEOiBzcmMvc3lzL2Rldi9lMTAw
MC9pZl9pZ2IuYyx2IDEuMjEuMi44LjIuMSAyMDEwLzA2LzE0IDAyOjA5OjA2IGtlbnNtaXRo
IEV4cCAkKi8KKy8qJEZyZWVCU0Q6IHNyYy9zeXMvZGV2L2UxMDAwL2lmX2lnYi5jLHYgMS4y
MS4yLjkgMjAxMC8wNi8xOCAxNzoyMjowOCBqZnYgRXhwICQqLwogCiAKICNpZmRlZiBIQVZF
X0tFUk5FTF9PUFRJT05fSEVBREVSUwpAQCAtOTksNyArOTksNyBAQCBpbnQJaWdiX2Rpc3Bs
YXlfZGVidWdfc3RhdHMgPSAwOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIERyaXZlciB2ZXJz
aW9uOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KLWNoYXIgaWdiX2RyaXZlcl92ZXJzaW9uW10gPSAi
dmVyc2lvbiAtIDEuOS41IjsKK2NoYXIgaWdiX2RyaXZlcl92ZXJzaW9uW10gPSAidmVyc2lv
biAtIDEuOS42IjsKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0yMDUsMTQgKzIwNSwxMyBA
QCBzdGF0aWMgX19pbmxpbmUJdm9pZCBpZ2JfcnhfZGlzY2FyZChzdHJ1CiBzdGF0aWMgX19p
bmxpbmUgdm9pZCBpZ2JfcnhfaW5wdXQoc3RydWN0IHJ4X3JpbmcgKiwKIAkJICAgIHN0cnVj
dCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIpOwogCi1zdGF0aWMgYm9vbAlpZ2Jfcnhl
b2Yoc3RydWN0IGlnYl9xdWV1ZSAqLCBpbnQpOworc3RhdGljIGJvb2wJaWdiX3J4ZW9mKHN0
cnVjdCBpZ2JfcXVldWUgKiwgaW50LCBpbnQgKik7CiBzdGF0aWMgdm9pZAlpZ2JfcnhfY2hl
Y2tzdW0odTMyLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIpOwogc3RhdGljIGludAlpZ2JfdHhfY3R4
X3NldHVwKHN0cnVjdCB0eF9yaW5nICosIHN0cnVjdCBtYnVmICopOwogc3RhdGljIGJvb2wJ
aWdiX3Rzb19zZXR1cChzdHJ1Y3QgdHhfcmluZyAqLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIgKik7
CiBzdGF0aWMgdm9pZAlpZ2Jfc2V0X3Byb21pc2Moc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0
aWMgdm9pZAlpZ2JfZGlzYWJsZV9wcm9taXNjKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGlj
IHZvaWQJaWdiX3NldF9tdWx0aShzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRpYyB2b2lkCWln
Yl9wcmludF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRpYyB2b2lkCWlnYl91
cGRhdGVfbGlua19zdGF0dXMoc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMgdm9pZAlpZ2Jf
cmVmcmVzaF9tYnVmcyhzdHJ1Y3QgcnhfcmluZyAqLCBpbnQpOwogCkBAIC0yMjQsMTEgKzIy
MywxMCBAQCBzdGF0aWMgaW50CWlnYl94bWl0KHN0cnVjdCB0eF9yaW5nICosIHN0CiBzdGF0
aWMgaW50CWlnYl9kbWFfbWFsbG9jKHN0cnVjdCBhZGFwdGVyICosIGJ1c19zaXplX3QsCiAJ
CSAgICBzdHJ1Y3QgaWdiX2RtYV9hbGxvYyAqLCBpbnQpOwogc3RhdGljIHZvaWQJaWdiX2Rt
YV9mcmVlKHN0cnVjdCBhZGFwdGVyICosIHN0cnVjdCBpZ2JfZG1hX2FsbG9jICopOwotc3Rh
dGljIHZvaWQJaWdiX3ByaW50X2RlYnVnX2luZm8oc3RydWN0IGFkYXB0ZXIgKik7CitzdGF0
aWMgaW50CWlnYl9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0
aWMgdm9pZAlpZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMg
aW50IAlpZ2JfaXNfdmFsaWRfZXRoZXJfYWRkcih1OCAqKTsKLXN0YXRpYyBpbnQJaWdiX3N5
c2N0bF9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKTsKLXN0YXRpYyBpbnQJaWdiX3N5c2N0
bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FSR1MpOworc3RhdGljIHZvaWQgICAgIGln
Yl9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOwogLyogTWFuYWdlbWVu
dCBhbmQgV09MIFN1cHBvcnQgKi8KIHN0YXRpYyB2b2lkCWlnYl9pbml0X21hbmFnZWFiaWxp
dHkoc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMgdm9pZAlpZ2JfcmVsZWFzZV9tYW5hZ2Vh
YmlsaXR5KHN0cnVjdCBhZGFwdGVyICopOwpAQCAtMjQwLDcgKzIzOCw2IEBAIHN0YXRpYyB2
b2lkICAgICBpZ2JfbGVkX2Z1bmModm9pZCAqLCBpbnQKIHN0YXRpYyBpbnQJaWdiX2lycV9m
YXN0KHZvaWQgKik7CiBzdGF0aWMgdm9pZAlpZ2JfYWRkX3J4X3Byb2Nlc3NfbGltaXQoc3Ry
dWN0IGFkYXB0ZXIgKiwgY29uc3QgY2hhciAqLAogCQkgICAgY29uc3QgY2hhciAqLCBpbnQg
KiwgaW50KTsKLXN0YXRpYyB2b2lkCWlnYl9oYW5kbGVfcnh0eCh2b2lkICpjb250ZXh0LCBp
bnQgcGVuZGluZyk7CiBzdGF0aWMgdm9pZAlpZ2JfaGFuZGxlX3F1ZSh2b2lkICpjb250ZXh0
LCBpbnQgcGVuZGluZyk7CiBzdGF0aWMgdm9pZAlpZ2JfaGFuZGxlX2xpbmsodm9pZCAqY29u
dGV4dCwgaW50IHBlbmRpbmcpOwogCkBAIC00MTIsMTMgKzQwOSw4IEBAIGlnYl9hdHRhY2go
ZGV2aWNlX3QgZGV2KQogCS8qIFNZU0NUTCBzdHVmZiAqLwogCVNZU0NUTF9BRERfUFJPQyhk
ZXZpY2VfZ2V0X3N5c2N0bF9jdHgoZGV2KSwKIAkgICAgU1lTQ1RMX0NISUxEUkVOKGRldmlj
ZV9nZXRfc3lzY3RsX3RyZWUoZGV2KSksCi0JICAgIE9JRF9BVVRPLCAiZGVidWciLCBDVExU
WVBFX0lOVHxDVExGTEFHX1JXLCBhZGFwdGVyLCAwLAotCSAgICBpZ2Jfc3lzY3RsX2RlYnVn
X2luZm8sICJJIiwgIkRlYnVnIEluZm9ybWF0aW9uIik7Ci0KLQlTWVNDVExfQUREX1BST0Mo
ZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRldiksCi0JICAgIFNZU0NUTF9DSElMRFJFTihkZXZp
Y2VfZ2V0X3N5c2N0bF90cmVlKGRldikpLAotCSAgICBPSURfQVVUTywgInN0YXRzIiwgQ1RM
VFlQRV9JTlR8Q1RMRkxBR19SVywgYWRhcHRlciwgMCwKLQkgICAgaWdiX3N5c2N0bF9zdGF0
cywgIkkiLCAiU3RhdGlzdGljcyIpOworCSAgICBPSURfQVVUTywgIm52bSIsIENUTFRZUEVf
SU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCisJICAgIGlnYl9zeXNjdGxfbnZtX2luZm8s
ICJJIiwgIk5WTSBJbmZvcm1hdGlvbiIpOwogCiAJU1lTQ1RMX0FERF9JTlQoZGV2aWNlX2dl
dF9zeXNjdGxfY3R4KGFkYXB0ZXItPmRldiksCiAJICAgIFNZU0NUTF9DSElMRFJFTihkZXZp
Y2VfZ2V0X3N5c2N0bF90cmVlKGFkYXB0ZXItPmRldikpLApAQCAtNTg0LDYgKzU3Niw4IEBA
IGlnYl9hdHRhY2goZGV2aWNlX3QgZGV2KQogCWFkYXB0ZXItPnZsYW5fZGV0YWNoID0gRVZF
TlRIQU5ETEVSX1JFR0lTVEVSKHZsYW5fdW5jb25maWcsCiAJICAgICBpZ2JfdW5yZWdpc3Rl
cl92bGFuLCBhZGFwdGVyLCBFVkVOVEhBTkRMRVJfUFJJX0ZJUlNUKTsKIAorCWlnYl9hZGRf
aHdfc3RhdHMoYWRhcHRlcik7CisKIAkvKiBUZWxsIHRoZSBzdGFjayB0aGF0IHRoZSBpbnRl
cmZhY2UgaXMgbm90IGFjdGl2ZSAqLwogCWFkYXB0ZXItPmlmcC0+aWZfZHJ2X2ZsYWdzICY9
IH4oSUZGX0RSVl9SVU5OSU5HIHwgSUZGX0RSVl9PQUNUSVZFKTsKIApAQCAtODE4LDIxICs4
MTIsMjUgQEAgaWdiX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQogc3RhdGljIGludAogaWdi
X21xX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAqbSkKIHsKLQlzdHJ1
Y3QgYWRhcHRlcgkqYWRhcHRlciA9IGlmcC0+aWZfc29mdGM7Ci0Jc3RydWN0IHR4X3JpbmcJ
KnR4cjsKLQlpbnQgCQlpID0gMCwgZXJyID0gMDsKKwlzdHJ1Y3QgYWRhcHRlcgkJKmFkYXB0
ZXIgPSBpZnAtPmlmX3NvZnRjOworCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZTsKKwlzdHJ1Y3Qg
dHhfcmluZwkJKnR4cjsKKwlpbnQgCQkJaSA9IDAsIGVyciA9IDA7CiAKIAkvKiBXaGljaCBx
dWV1ZSB0byB1c2UgKi8KIAlpZiAoKG0tPm1fZmxhZ3MgJiBNX0ZMT1dJRCkgIT0gMCkKIAkJ
aSA9IG0tPm1fcGt0aGRyLmZsb3dpZCAlIGFkYXB0ZXItPm51bV9xdWV1ZXM7CiAKIAl0eHIg
PSAmYWRhcHRlci0+dHhfcmluZ3NbaV07CisJcXVlID0gJmFkYXB0ZXItPnF1ZXVlc1tpXTsK
IAogCWlmIChJR0JfVFhfVFJZTE9DSyh0eHIpKSB7CiAJCWVyciA9IGlnYl9tcV9zdGFydF9s
b2NrZWQoaWZwLCB0eHIsIG0pOwogCQlJR0JfVFhfVU5MT0NLKHR4cik7Ci0JfSBlbHNlCisJ
fSBlbHNlIHsKIAkJZXJyID0gZHJicl9lbnF1ZXVlKGlmcCwgdHhyLT5iciwgbSk7CisJCXRh
c2txdWV1ZV9lbnF1ZXVlKHF1ZS0+dHEsICZxdWUtPnF1ZV90YXNrKTsKKwl9CiAKIAlyZXR1
cm4gKGVycik7CiB9CkBAIC0xMjI1LDUwICsxMjIzLDI0IEBAIGlnYl9pbml0KHZvaWQgKmFy
ZykKIAogCiBzdGF0aWMgdm9pZAotaWdiX2hhbmRsZV9yeHR4KHZvaWQgKmNvbnRleHQsIGlu
dCBwZW5kaW5nKQotewotCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZSA9IGNvbnRleHQ7Ci0Jc3Ry
dWN0IGFkYXB0ZXIJCSphZGFwdGVyID0gcXVlLT5hZGFwdGVyOwotCXN0cnVjdCB0eF9yaW5n
CQkqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7Ci0Jc3RydWN0IGlmbmV0CQkqaWZwOwotCi0J
aWZwID0gYWRhcHRlci0+aWZwOwotCi0JaWYgKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RS
Vl9SVU5OSU5HKSB7Ci0JCWlmIChpZ2Jfcnhlb2YocXVlLCBhZGFwdGVyLT5yeF9wcm9jZXNz
X2xpbWl0KSkKLQkJCXRhc2txdWV1ZV9lbnF1ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+
cnh0eF90YXNrKTsKLQkJSUdCX1RYX0xPQ0sodHhyKTsKLQkJaWdiX3R4ZW9mKHR4cik7Ci0K
LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJaWYgKCFkcmJyX2VtcHR5KGlm
cCwgdHhyLT5icikpCi0JCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyLCBOVUxMKTsK
LSNlbHNlCi0JCWlmICghSUZRX0RSVl9JU19FTVBUWSgmaWZwLT5pZl9zbmQpKQotCQkJaWdi
X3N0YXJ0X2xvY2tlZCh0eHIsIGlmcCk7Ci0jZW5kaWYKLQkJSUdCX1RYX1VOTE9DSyh0eHIp
OwotCX0KLQotCWlnYl9lbmFibGVfaW50cihhZGFwdGVyKTsKLX0KLQotc3RhdGljIHZvaWQK
IGlnYl9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGludCBwZW5kaW5nKQogewogCXN0cnVj
dCBpZ2JfcXVldWUgKnF1ZSA9IGNvbnRleHQ7CiAJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIg
PSBxdWUtPmFkYXB0ZXI7CiAJc3RydWN0IHR4X3JpbmcgKnR4ciA9IHF1ZS0+dHhyOwogCXN0
cnVjdCBpZm5ldAkqaWZwID0gYWRhcHRlci0+aWZwOwotCWJvb2wJCW1vcmU7CiAKIAlpZiAo
aWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpIHsKLQkJbW9yZSA9IGlnYl9y
eGVvZihxdWUsIC0xKTsKKwkJYm9vbAltb3JlOworCisJCW1vcmUgPSBpZ2Jfcnhlb2YocXVl
LCAtMSwgTlVMTCk7CiAKIAkJSUdCX1RYX0xPQ0sodHhyKTsKLQkJaWdiX3R4ZW9mKHR4cik7
CisJCWlmIChpZ2JfdHhlb2YodHhyKSkKKwkJCW1vcmUgPSBUUlVFOwogI2lmIF9fRnJlZUJT
RF92ZXJzaW9uID49IDgwMDAwMAotCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyLCBO
VUxMKTsKKwkJaWYgKCFkcmJyX2VtcHR5KGlmcCwgdHhyLT5icikpCisJCQlpZ2JfbXFfc3Rh
cnRfbG9ja2VkKGlmcCwgdHhyLCBOVUxMKTsKICNlbHNlCiAJCWlmICghSUZRX0RSVl9JU19F
TVBUWSgmaWZwLT5pZl9zbmQpKQogCQkJaWdiX3N0YXJ0X2xvY2tlZCh0eHIsIGlmcCk7CkBA
IC0xMjgwLDExICsxMjUyLDE1IEBAIGlnYl9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGlu
dCBwZW5kaW4KIAkJfQogCX0KIAotCS8qIFJlZW5hYmxlIHRoaXMgaW50ZXJydXB0ICovCiAj
aWZkZWYgREVWSUNFX1BPTExJTkcKLQlpZiAoIShpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQ
X1BPTExJTkcpKQorCWlmIChpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQX1BPTExJTkcpCisJ
CXJldHVybjsKICNlbmRpZgotCUUxMDAwX1dSSVRFX1JFRygmYWRhcHRlci0+aHcsIEUxMDAw
X0VJTVMsIHF1ZS0+ZWltcyk7CisJLyogUmVlbmFibGUgdGhpcyBpbnRlcnJ1cHQgKi8KKwlp
ZiAocXVlLT5laW1zKQorCQlFMTAwMF9XUklURV9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9F
SU1TLCBxdWUtPmVpbXMpOworCWVsc2UKKwkJaWdiX2VuYWJsZV9pbnRyKGFkYXB0ZXIpOwog
fQogCiAvKiBEZWFsIHdpdGggbGluayBpbiBhIHNsZWVwYWJsZSBjb250ZXh0ICovCkBAIC0x
MzA2LDggKzEyODIsOSBAQCBpZ2JfaGFuZGxlX2xpbmsodm9pZCAqY29udGV4dCwgaW50IHBl
bmRpCiBzdGF0aWMgaW50CiBpZ2JfaXJxX2Zhc3Qodm9pZCAqYXJnKQogewotCXN0cnVjdCBh
ZGFwdGVyCSphZGFwdGVyID0gYXJnOwotCXVpbnQzMl90CXJlZ19pY3I7CisJc3RydWN0IGFk
YXB0ZXIJCSphZGFwdGVyID0gYXJnOworCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZSA9IGFkYXB0
ZXItPnF1ZXVlczsKKwl1MzIJCQlyZWdfaWNyOwogCiAKIAlyZWdfaWNyID0gRTEwMDBfUkVB
RF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwpAQCAtMTMyOSwxMSArMTMwNiwxMSBA
QCBpZ2JfaXJxX2Zhc3Qodm9pZCAqYXJnKQogCSAqIE1TSSBtZXNzYWdlIHJlb3JkZXJpbmcg
ZXJyYXRhIG9uIGNlcnRhaW4gc3lzdGVtcy4KIAkgKi8KIAlpZ2JfZGlzYWJsZV9pbnRyKGFk
YXB0ZXIpOwotCXRhc2txdWV1ZV9lbnF1ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+cnh0
eF90YXNrKTsKKwl0YXNrcXVldWVfZW5xdWV1ZShxdWUtPnRxLCAmcXVlLT5xdWVfdGFzayk7
CiAKIAkvKiBMaW5rIHN0YXR1cyBjaGFuZ2UgKi8KIAlpZiAocmVnX2ljciAmIChFMTAwMF9J
Q1JfUlhTRVEgfCBFMTAwMF9JQ1JfTFNDKSkKLQkJdGFza3F1ZXVlX2VucXVldWUoYWRhcHRl
ci0+dHEsICZhZGFwdGVyLT5saW5rX3Rhc2spOworCQl0YXNrcXVldWVfZW5xdWV1ZShxdWUt
PnRxLCAmYWRhcHRlci0+bGlua190YXNrKTsKIAogCWlmIChyZWdfaWNyICYgRTEwMDBfSUNS
X1JYTykKIAkJYWRhcHRlci0+cnhfb3ZlcnJ1bnMrKzsKQEAgLTEzNzMsMTUgKzEzNTAsMTQg
QEAgaWdiX3BvbGwoc3RydWN0IGlmbmV0ICppZnAsIGVudW0gcG9sbF9jbQogCQlyZWdfaWNy
ID0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwogCQkvKiBMaW5r
IHN0YXR1cyBjaGFuZ2UgKi8KIAkJaWYgKHJlZ19pY3IgJiAoRTEwMDBfSUNSX1JYU0VRIHwg
RTEwMDBfSUNSX0xTQykpCi0JCQl0YXNrcXVldWVfZW5xdWV1ZShhZGFwdGVyLT50cSwgJmFk
YXB0ZXItPmxpbmtfdGFzayk7CisJCQlpZ2JfaGFuZGxlX2xpbmsoYWRhcHRlciwgMCk7CiAK
IAkJaWYgKHJlZ19pY3IgJiBFMTAwMF9JQ1JfUlhPKQogCQkJYWRhcHRlci0+cnhfb3ZlcnJ1
bnMrKzsKIAl9CiAJSUdCX0NPUkVfVU5MT0NLKGFkYXB0ZXIpOwogCi0JLyogVE9ETzogcnhf
Y291bnQgKi8KLQlyeF9kb25lID0gaWdiX3J4ZW9mKHF1ZSwgY291bnQpID8gMSA6IDA7CisJ
aWdiX3J4ZW9mKHF1ZSwgY291bnQsICZyeF9kb25lKTsKIAogCUlHQl9UWF9MT0NLKHR4cik7
CiAJZG8gewpAQCAtMTQyMSw3ICsxMzk3LDcgQEAgaWdiX21zaXhfcXVlKHZvaWQgKmFyZykK
IAltb3JlX3R4ID0gaWdiX3R4ZW9mKHR4cik7CiAJSUdCX1RYX1VOTE9DSyh0eHIpOwogCi0J
bW9yZV9yeCA9IGlnYl9yeGVvZihxdWUsIGFkYXB0ZXItPnJ4X3Byb2Nlc3NfbGltaXQpOwor
CW1vcmVfcnggPSBpZ2Jfcnhlb2YocXVlLCBhZGFwdGVyLT5yeF9wcm9jZXNzX2xpbWl0LCBO
VUxMKTsKIAogCWlmIChpZ2JfZW5hYmxlX2FpbSA9PSBGQUxTRSkKIAkJZ290byBub19jYWxj
OwpAQCAtMTUwMSw3ICsxNDc3LDcgQEAgaWdiX21zaXhfbGluayh2b2lkICphcmcpCiAJaWNy
ID0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwogCWlmICghKGlj
ciAmIEUxMDAwX0lDUl9MU0MpKQogCQlnb3RvIHNwdXJpb3VzOwotCXRhc2txdWV1ZV9lbnF1
ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+bGlua190YXNrKTsKKwlpZ2JfaGFuZGxlX2xp
bmsoYWRhcHRlciwgMCk7CiAKIHNwdXJpb3VzOgogCS8qIFJlYXJtICovCkBAIC0xOTAwLDcg
KzE4NzYsNiBAQCBzdGF0aWMgdm9pZAogaWdiX2xvY2FsX3RpbWVyKHZvaWQgKmFyZykKIHsK
IAlzdHJ1Y3QgYWRhcHRlcgkJKmFkYXB0ZXIgPSBhcmc7Ci0Jc3RydWN0IGlmbmV0CQkqaWZw
ID0gYWRhcHRlci0+aWZwOwogCWRldmljZV90CQlkZXYgPSBhZGFwdGVyLT5kZXY7CiAJc3Ry
dWN0IHR4X3JpbmcJCSp0eHIgPSBhZGFwdGVyLT50eF9yaW5nczsKIApAQCAtMTkxMCw5ICsx
ODg1LDYgQEAgaWdiX2xvY2FsX3RpbWVyKHZvaWQgKmFyZykKIAlpZ2JfdXBkYXRlX2xpbmtf
c3RhdHVzKGFkYXB0ZXIpOwogCWlnYl91cGRhdGVfc3RhdHNfY291bnRlcnMoYWRhcHRlcik7
CiAKLQlpZiAoaWdiX2Rpc3BsYXlfZGVidWdfc3RhdHMgJiYgaWZwLT5pZl9kcnZfZmxhZ3Mg
JiBJRkZfRFJWX1JVTk5JTkcpCi0JCWlnYl9wcmludF9od19zdGF0cyhhZGFwdGVyKTsKLQog
ICAgICAgICAvKgogICAgICAgICAqKiBXYXRjaGRvZzogY2hlY2sgZm9yIHRpbWUgc2luY2Ug
YW55IGRlc2NyaXB0b3Igd2FzIGNsZWFuZWQKICAgICAgICAgKi8KQEAgLTE5MjMsMTEgKzE4
OTUsNiBAQCBpZ2JfbG9jYWxfdGltZXIodm9pZCAqYXJnKQogCQkJZ290byB0aW1lb3V0Owog
CX0KIAotCS8qIFRyaWdnZXIgYW4gUlggaW50ZXJydXB0IG9uIGFsbCBxdWV1ZXMgKi8KLSNp
ZmRlZiBERVZJQ0VfUE9MTElORwotCWlmICghKGlmcC0+aWZfY2FwZW5hYmxlICYgSUZDQVBf
UE9MTElORykpCi0jZW5kaWYKLQlFMTAwMF9XUklURV9SRUcoJmFkYXB0ZXItPmh3LCBFMTAw
MF9FSUNTLCBhZGFwdGVyLT5yeF9tYXNrKTsKIAljYWxsb3V0X3Jlc2V0KCZhZGFwdGVyLT50
aW1lciwgaHosIGlnYl9sb2NhbF90aW1lciwgYWRhcHRlcik7CiAJcmV0dXJuOwogCkBAIC0y
MTQyLDIwICsyMTA5LDIwIEBAIGlnYl9hbGxvY2F0ZV9sZWdhY3koc3RydWN0IGFkYXB0ZXIg
KmFkYXAKIAkgKiBUcnkgYWxsb2NhdGluZyBhIGZhc3QgaW50ZXJydXB0IGFuZCB0aGUgYXNz
b2NpYXRlZCBkZWZlcnJlZAogCSAqIHByb2Nlc3NpbmcgY29udGV4dHMuCiAJICovCi0JVEFT
S19JTklUKCZhZGFwdGVyLT5yeHR4X3Rhc2ssIDAsIGlnYl9oYW5kbGVfcnh0eCwgcXVlKTsK
KwlUQVNLX0lOSVQoJnF1ZS0+cXVlX3Rhc2ssIDAsIGlnYl9oYW5kbGVfcXVlLCBxdWUpOwog
CS8qIE1ha2UgdGFza2xldCBmb3IgZGVmZXJyZWQgbGluayBoYW5kbGluZyAqLwogCVRBU0tf
SU5JVCgmYWRhcHRlci0+bGlua190YXNrLCAwLCBpZ2JfaGFuZGxlX2xpbmssIGFkYXB0ZXIp
OwotCWFkYXB0ZXItPnRxID0gdGFza3F1ZXVlX2NyZWF0ZV9mYXN0KCJpZ2JfdGFza3EiLCBN
X05PV0FJVCwKLQkgICAgdGFza3F1ZXVlX3RocmVhZF9lbnF1ZXVlLCAmYWRhcHRlci0+dHEp
OwotCXRhc2txdWV1ZV9zdGFydF90aHJlYWRzKCZhZGFwdGVyLT50cSwgMSwgUElfTkVULCAi
JXMgdGFza3EiLAorCXF1ZS0+dHEgPSB0YXNrcXVldWVfY3JlYXRlX2Zhc3QoImlnYl90YXNr
cSIsIE1fTk9XQUlULAorCSAgICB0YXNrcXVldWVfdGhyZWFkX2VucXVldWUsICZxdWUtPnRx
KTsKKwl0YXNrcXVldWVfc3RhcnRfdGhyZWFkcygmcXVlLT50cSwgMSwgUElfTkVULCAiJXMg
dGFza3EiLAogCSAgICBkZXZpY2VfZ2V0X25hbWV1bml0KGFkYXB0ZXItPmRldikpOwogCWlm
ICgoZXJyb3IgPSBidXNfc2V0dXBfaW50cihkZXYsIGFkYXB0ZXItPnJlcywKIAkgICAgSU5U
Ul9UWVBFX05FVCB8IElOVFJfTVBTQUZFLCBpZ2JfaXJxX2Zhc3QsIE5VTEwsCiAJICAgIGFk
YXB0ZXIsICZhZGFwdGVyLT50YWcpKSAhPSAwKSB7CiAJCWRldmljZV9wcmludGYoZGV2LCAi
RmFpbGVkIHRvIHJlZ2lzdGVyIGZhc3QgaW50ZXJydXB0ICIKIAkJCSAgICAiaGFuZGxlcjog
JWRcbiIsIGVycm9yKTsKLQkJdGFza3F1ZXVlX2ZyZWUoYWRhcHRlci0+dHEpOwotCQlhZGFw
dGVyLT50cSA9IE5VTEw7CisJCXRhc2txdWV1ZV9mcmVlKHF1ZS0+dHEpOworCQlxdWUtPnRx
ID0gTlVMTDsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCkBAIC0yMTk0LDYgKzIxNjEsOSBA
QCBpZ2JfYWxsb2NhdGVfbXNpeChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlCiAJCQlkZXZpY2Vf
cHJpbnRmKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBRdWV1ZSBoYW5kbGVyIik7CiAJCQly
ZXR1cm4gKGVycm9yKTsKIAkJfQorI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDUwNAor
CQlidXNfZGVzY3JpYmVfaW50cihkZXYsIHF1ZS0+cmVzLCBxdWUtPnRhZywgInF1ZSAlZCIs
IGkpOworI2VuZGlmCiAJCXF1ZS0+bXNpeCA9IHZlY3RvcjsKIAkJaWYgKGFkYXB0ZXItPmh3
Lm1hYy50eXBlID09IGUxMDAwXzgyNTc1KQogCQkJcXVlLT5laW1zID0gRTEwMDBfRUlDUl9U
WF9RVUVVRTAgPDwgaTsKQEAgLTIyMjksMTUgKzIxOTksMTEgQEAgaWdiX2FsbG9jYXRlX21z
aXgoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZQogCQlkZXZpY2VfcHJpbnRmKGRldiwgIkZhaWxl
ZCB0byByZWdpc3RlciBMaW5rIGhhbmRsZXIiKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQor
I2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDUwNAorCWJ1c19kZXNjcmliZV9pbnRyKGRl
diwgYWRhcHRlci0+cmVzLCBhZGFwdGVyLT50YWcsICJsaW5rIik7CisjZW5kaWYKIAlhZGFw
dGVyLT5saW5rdmVjID0gdmVjdG9yOwogCi0JLyogTWFrZSB0YXNrbGV0IGZvciBkZWZlcnJl
ZCBoYW5kbGluZyAqLwotCVRBU0tfSU5JVCgmYWRhcHRlci0+bGlua190YXNrLCAwLCBpZ2Jf
aGFuZGxlX2xpbmssIGFkYXB0ZXIpOwotCWFkYXB0ZXItPnRxID0gdGFza3F1ZXVlX2NyZWF0
ZV9mYXN0KCJpZ2JfbGluayIsIE1fTk9XQUlULAotCSAgICB0YXNrcXVldWVfdGhyZWFkX2Vu
cXVldWUsICZhZGFwdGVyLT50cSk7Ci0JdGFza3F1ZXVlX3N0YXJ0X3RocmVhZHMoJmFkYXB0
ZXItPnRxLCAxLCBQSV9ORVQsICIlcyBsaW5rIiwKLQkgICAgZGV2aWNlX2dldF9uYW1ldW5p
dChhZGFwdGVyLT5kZXYpKTsKLQogCXJldHVybiAoMCk7CiB9CiAKQEAgLTM1NzAsNyArMzUz
Niw3IEBAIGlnYl9yZWZyZXNoX21idWZzKHN0cnVjdCByeF9yaW5nICpyeHIsIGkKIAljbGVh
bmVkID0gLTE7IC8qIFNpZ25pZnkgbm8gY29tcGxldGlvbnMgKi8KIAl3aGlsZSAoaSAhPSBs
aW1pdCkgewogCQlyeGJ1ZiA9ICZyeHItPnJ4X2J1ZmZlcnNbaV07Ci0JCWlmIChyeGJ1Zi0+
bV9oZWFkID09IE5VTEwpIHsKKwkJaWYgKChyeGJ1Zi0+bV9oZWFkID09IE5VTEwpICYmIChy
eHItPmhkcl9zcGxpdCkpIHsKIAkJCW1oID0gbV9nZXRoZHIoTV9ET05UV0FJVCwgTVRfREFU
QSk7CiAJCQlpZiAobWggPT0gTlVMTCkKIAkJCQlnb3RvIHVwZGF0ZTsKQEAgLTM3NzYsMTYg
KzM3NDIsMjQgQEAgaWdiX3NldHVwX3JlY2VpdmVfcmluZyhzdHJ1Y3QgcnhfcmluZyAqcgog
CSovCiAJaWdiX2ZyZWVfcmVjZWl2ZV9yaW5nKHJ4cik7CiAKKwkvKiBDb25maWd1cmUgZm9y
IGhlYWRlciBzcGxpdD8gKi8KKwlpZiAoaWdiX2hlYWRlcl9zcGxpdCkKKwkJcnhyLT5oZHJf
c3BsaXQgPSBUUlVFOworCiAgICAgICAgIC8qIE5vdyByZXBsZW5pc2ggdGhlIHJpbmcgbWJ1
ZnMgKi8KIAlmb3IgKGludCBqID0gMDsgaiAhPSBhZGFwdGVyLT5udW1fcnhfZGVzYzsgKytq
KSB7CiAJCXN0cnVjdCBtYnVmCSptaCwgKm1wOwogCiAJCXJ4YnVmID0gJnJ4ci0+cnhfYnVm
ZmVyc1tqXTsKKwkJaWYgKHJ4ci0+aGRyX3NwbGl0ID09IEZBTFNFKQorCQkJZ290byBza2lw
X2hlYWQ7CiAKIAkJLyogRmlyc3QgdGhlIGhlYWRlciAqLwogCQlyeGJ1Zi0+bV9oZWFkID0g
bV9nZXRoZHIoTV9ET05UV0FJVCwgTVRfREFUQSk7Ci0JCWlmIChyeGJ1Zi0+bV9oZWFkID09
IE5VTEwpCisJCWlmIChyeGJ1Zi0+bV9oZWFkID09IE5VTEwpIHsKKwkJCWVycm9yID0gRU5P
QlVGUzsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKwkJfQogCQltX2Fk
aihyeGJ1Zi0+bV9oZWFkLCBFVEhFUl9BTElHTik7CiAJCW1oID0gcnhidWYtPm1faGVhZDsK
IAkJbWgtPm1fbGVuID0gbWgtPm1fcGt0aGRyLmxlbiA9IE1ITEVOOwpAQCAtMzgwMSwxMSAr
Mzc3NSwxNCBAQCBpZ2Jfc2V0dXBfcmVjZWl2ZV9yaW5nKHN0cnVjdCByeF9yaW5nICpyCiAJ
CS8qIFVwZGF0ZSBkZXNjcmlwdG9yICovCiAJCXJ4ci0+cnhfYmFzZVtqXS5yZWFkLmhkcl9h
ZGRyID0gaHRvbGU2NChoc2VnWzBdLmRzX2FkZHIpOwogCitza2lwX2hlYWQ6CiAJCS8qIE5v
dyB0aGUgcGF5bG9hZCBjbHVzdGVyICovCiAJCXJ4YnVmLT5tX3BhY2sgPSBtX2dldGpjbChN
X0RPTlRXQUlULCBNVF9EQVRBLAogCQkgICAgTV9QS1RIRFIsIGFkYXB0ZXItPnJ4X21idWZf
c3opOwotCQlpZiAocnhidWYtPm1fcGFjayA9PSBOVUxMKQorCQlpZiAocnhidWYtPm1fcGFj
ayA9PSBOVUxMKSB7CisJCQllcnJvciA9IEVOT0JVRlM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBnb3RvIGZhaWw7CisJCX0KIAkJbXAgPSByeGJ1Zi0+bV9wYWNrOwogCQltcC0+bV9w
a3RoZHIubGVuID0gbXAtPm1fbGVuID0gYWRhcHRlci0+cnhfbWJ1Zl9zejsKIAkJLyogR2V0
IHRoZSBtZW1vcnkgbWFwcGluZyAqLwpAQCAtMzgyNCwxMSArMzgwMSw4IEBAIGlnYl9zZXR1
cF9yZWNlaXZlX3Jpbmcoc3RydWN0IHJ4X3JpbmcgKnIKIAlyeHItPm5leHRfdG9fY2hlY2sg
PSAwOwogCXJ4ci0+bmV4dF90b19yZWZyZXNoID0gMDsKIAlyeHItPmxyb19lbmFibGVkID0g
RkFMU0U7Ci0KLQlpZiAoaWdiX2hlYWRlcl9zcGxpdCkKLQkJcnhyLT5oZHJfc3BsaXQgPSBU
UlVFOwotCWVsc2UKLQkJaWZwLT5pZl9jYXBhYmlsaXRpZXMgJj0gfklGQ0FQX0xSTzsKKwly
eHItPnJ4X3NwbGl0X3BhY2tldHMgPSAwOworCXJ4ci0+cnhfYnl0ZXMgPSAwOwogCiAJcnhy
LT5mbXAgPSBOVUxMOwogCXJ4ci0+bG1wID0gTlVMTDsKQEAgLTM4NzIsNyArMzg0Niw3IEBA
IHN0YXRpYyBpbnQKIGlnYl9zZXR1cF9yZWNlaXZlX3N0cnVjdHVyZXMoc3RydWN0IGFkYXB0
ZXIgKmFkYXB0ZXIpCiB7CiAJc3RydWN0IHJ4X3JpbmcgKnJ4ciA9IGFkYXB0ZXItPnJ4X3Jp
bmdzOwotCWludCBpLCBqOworCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGFkYXB0ZXIt
Pm51bV9xdWV1ZXM7IGkrKywgcnhyKyspCiAJCWlmIChpZ2Jfc2V0dXBfcmVjZWl2ZV9yaW5n
KHJ4cikpCkBAIC0zODgzLDEzICszODU3LDExIEBAIGZhaWw6CiAJLyoKIAkgKiBGcmVlIFJY
IGJ1ZmZlcnMgYWxsb2NhdGVkIHNvIGZhciwgd2Ugd2lsbCBvbmx5IGhhbmRsZQogCSAqIHRo
ZSByaW5ncyB0aGF0IGNvbXBsZXRlZCwgdGhlIGZhaWxpbmcgY2FzZSB3aWxsIGhhdmUKLQkg
KiBjbGVhbmVkIHVwIGZvciBpdHNlbGYuIFRoZSB2YWx1ZSBvZiAnaScgd2lsbCBiZSB0aGUK
LQkgKiBmYWlsZWQgcmluZyBzbyB3ZSBtdXN0IHByZS1kZWNyZW1lbnQgaXQuCisJICogY2xl
YW5lZCB1cCBmb3IgaXRzZWxmLiAnaScgaXMgdGhlIGVuZHBvaW50LgogCSAqLwotCXJ4ciA9
IGFkYXB0ZXItPnJ4X3JpbmdzOwotCWZvciAoLS1pOyBpID4gMDsgaS0tLCByeHIrKykgewot
CQlmb3IgKGogPSAwOyBqIDwgYWRhcHRlci0+bnVtX3J4X2Rlc2M7IGorKykKLQkJCWlnYl9m
cmVlX3JlY2VpdmVfcmluZyhyeHIpOworCWZvciAoaW50IGogPSAwOyBqID4gaTsgKytqKSB7
CisJCXJ4ciA9ICZhZGFwdGVyLT5yeF9yaW5nc1tpXTsKKwkJaWdiX2ZyZWVfcmVjZWl2ZV9y
aW5nKHJ4cik7CiAJfQogCiAJcmV0dXJuIChFTk9CVUZTKTsKQEAgLTQxOTUsNyArNDE2Nyw5
IEBAIGlnYl9yeF9pbnB1dChzdHJ1Y3QgcnhfcmluZyAqcnhyLCBzdHJ1Y3QKIAkJCWlmICh0
Y3BfbHJvX3J4KCZyeHItPmxybywgbSwgMCkgPT0gMCkKIAkJCQlyZXR1cm47CiAJfQorCUlH
Ql9SWF9VTkxPQ0socnhyKTsKIAkoKmlmcC0+aWZfaW5wdXQpKGlmcCwgbSk7CisJSUdCX1JY
X0xPQ0socnhyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNDIxMCwxNCArNDE4NCwx
NCBAQCBpZ2JfcnhfaW5wdXQoc3RydWN0IHJ4X3JpbmcgKnJ4ciwgc3RydWN0CiAgKiAgUmV0
dXJuIFRSVUUgaWYgbW9yZSB0byBjbGVhbiwgRkFMU0Ugb3RoZXJ3aXNlCiAgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwogc3RhdGljIGJvb2wKLWlnYl9yeGVvZihzdHJ1Y3QgaWdiX3F1ZXVlICpxdWUs
IGludCBjb3VudCkKK2lnYl9yeGVvZihzdHJ1Y3QgaWdiX3F1ZXVlICpxdWUsIGludCBjb3Vu
dCwgaW50ICpkb25lKQogewogCXN0cnVjdCBhZGFwdGVyCQkqYWRhcHRlciA9IHF1ZS0+YWRh
cHRlcjsKIAlzdHJ1Y3QgcnhfcmluZwkJKnJ4ciA9IHF1ZS0+cnhyOwogCXN0cnVjdCBpZm5l
dAkJKmlmcCA9IGFkYXB0ZXItPmlmcDsKIAlzdHJ1Y3QgbHJvX2N0cmwJCSpscm8gPSAmcnhy
LT5scm87CiAJc3RydWN0IGxyb19lbnRyeQkqcXVldWVkOwotCWludAkJCWksIHByb2Nlc3Nl
ZCA9IDA7CisJaW50CQkJaSwgcHJvY2Vzc2VkID0gMCwgcnhkb25lID0gMDsKIAl1MzIJCQlw
dHlwZSwgc3RhdGVyciA9IDA7CiAJdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MJKmN1cjsKIApA
QCAtNDM2Niw4ICs0MzQwLDEyIEBAIG5leHRfZGVzYzoKIAkJLyoKIAkJKiogU2VuZCB0byB0
aGUgc3RhY2sgb3IgTFJPCiAJCSovCi0JCWlmIChzZW5kbXAgIT0gTlVMTCkKKwkJaWYgKHNl
bmRtcCAhPSBOVUxMKSB7CisJCQlyeHItPm5leHRfdG9fY2hlY2sgPSBpOwogCQkJaWdiX3J4
X2lucHV0KHJ4ciwgaWZwLCBzZW5kbXAsIHB0eXBlKTsKKwkJCWkgPSByeHItPm5leHRfdG9f
Y2hlY2s7CisJCQlyeGRvbmUrKzsKKwkJfQogCiAJCS8qIEV2ZXJ5IDggZGVzY3JpcHRvcnMg
d2UgZ28gdG8gcmVmcmVzaCBtYnVmcyAqLwogCQlpZiAocHJvY2Vzc2VkID09IDgpIHsKQEAg
LTQzOTQsNiArNDM3Miw5IEBAIG5leHRfZGVzYzoKIAogCUlHQl9SWF9VTkxPQ0socnhyKTsK
IAorCWlmIChkb25lICE9IE5VTEwpCisJCSpkb25lID0gcnhkb25lOworCiAJLyoKIAkqKiBX
ZSBzdGlsbCBoYXZlIGNsZWFuaW5nIHRvIGRvPwogCSoqIFNjaGVkdWxlIGFub3RoZXIgaW50
ZXJydXB0IGlmIHNvLgpAQCAtNDc1MSw4ICs0NzMyLDEwIEBAIGlnYl91cGRhdGVfc3RhdHNf
Y291bnRlcnMoc3RydWN0IGFkYXB0ZXIKIAkvKiBGb3IgdGhlIDY0LWJpdCBieXRlIGNvdW50
ZXJzIHRoZSBsb3cgZHdvcmQgbXVzdCBiZSByZWFkIGZpcnN0LiAqLwogCS8qIEJvdGggcmVn
aXN0ZXJzIGNsZWFyIG9uIHRoZSByZWFkIG9mIHRoZSBoaWdoIGR3b3JkICovCiAKLQlhZGFw
dGVyLT5zdGF0cy5nb3JjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBf
R09SQ0gpOwotCWFkYXB0ZXItPnN0YXRzLmdvdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0
ZXItPmh3LCBFMTAwMF9HT1RDSCk7CisJYWRhcHRlci0+c3RhdHMuZ29yYyArPSBFMTAwMF9S
RUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPUkNMKSArCisJICAoKHU2NClFMTAwMF9S
RUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPUkNIKSA8PCAzMik7CisJYWRhcHRlci0+
c3RhdHMuZ290YyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPVENM
KSArCisJICAoKHU2NClFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPVENI
KSA8PCAzMikgOwogCiAJYWRhcHRlci0+c3RhdHMucm5iYyArPSBFMTAwMF9SRUFEX1JFRygm
YWRhcHRlci0+aHcsIEUxMDAwX1JOQkMpOwogCWFkYXB0ZXItPnN0YXRzLnJ1YyArPSBFMTAw
MF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1JVQyk7CkBAIC00Nzc0LDYgKzQ3NTcs
MzggQEAgaWdiX3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlcgogCWFkYXB0
ZXItPnN0YXRzLm1wdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9N
UFRDKTsKIAlhZGFwdGVyLT5zdGF0cy5icHRjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVy
LT5odywgRTEwMDBfQlBUQyk7CiAKKwkvKiBJbnRlcnJ1cHQgQ291bnRzICovCisKKwlhZGFw
dGVyLT5zdGF0cy5pYWMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9J
QUMpOworCWFkYXB0ZXItPnN0YXRzLmljcnhwdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0
ZXItPmh3LCBFMTAwMF9JQ1JYUFRDKTsKKwlhZGFwdGVyLT5zdGF0cy5pY3J4YXRjICs9IEUx
MDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNSWEFUQyk7CisJYWRhcHRlci0+
c3RhdHMuaWN0eHB0YyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0lD
VFhQVEMpOworCWFkYXB0ZXItPnN0YXRzLmljdHhhdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFk
YXB0ZXItPmh3LCBFMTAwMF9JQ1RYQVRDKTsKKwlhZGFwdGVyLT5zdGF0cy5pY3R4cWVjICs9
IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNUWFFFQyk7CisJYWRhcHRl
ci0+c3RhdHMuaWN0eHFtdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAw
MF9JQ1RYUU1UQyk7CisJYWRhcHRlci0+c3RhdHMuaWNyeGRtdGMgKz0gRTEwMDBfUkVBRF9S
RUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1JYRE1UQyk7CisJYWRhcHRlci0+c3RhdHMuaWNy
eG9jICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNSWE9DKTsKKwor
CS8qIEhvc3QgdG8gQ2FyZCBTdGF0aXN0aWNzICovCisKKwlhZGFwdGVyLT5zdGF0cy5jYnRt
cGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9DQlRNUEMpOworCWFk
YXB0ZXItPnN0YXRzLmh0ZHBtYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUx
MDAwX0hURFBNQyk7CisJYWRhcHRlci0+c3RhdHMuY2JyZHBjICs9IEUxMDAwX1JFQURfUkVH
KCZhZGFwdGVyLT5odywgRTEwMDBfQ0JSRFBDKTsKKwlhZGFwdGVyLT5zdGF0cy5jYnJtcGMg
Kz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9DQlJNUEMpOworCWFkYXB0
ZXItPnN0YXRzLnJwdGhjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBf
UlBUSEMpOworCWFkYXB0ZXItPnN0YXRzLmhncHRjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFw
dGVyLT5odywgRTEwMDBfSEdQVEMpOworCWFkYXB0ZXItPnN0YXRzLmh0Y2JkcGMgKz0gRTEw
MDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9IVENCRFBDKTsKKwlhZGFwdGVyLT5z
dGF0cy5oZ29yYyArPSAoRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9IR09S
Q0wpICsKKwkJCQkgKCh1NjQpRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCAKKwkJCQkJ
CSAgICAgIEUxMDAwX0hHT1JDSCkgPDwgMzIpKTsKKworCWFkYXB0ZXItPnN0YXRzLmhnb3Rj
ICs9IChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0hHT1RDTCkgKworCQkJ
CSAoKHU2NClFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIAorCQkJCQkJICAgICAgRTEw
MDBfSEdPVENIKSA8PCAzMikpOworCWFkYXB0ZXItPnN0YXRzLmxlbmVycnMgKz0gRTEwMDBf
UkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9MRU5FUlJTKTsKKwlhZGFwdGVyLT5zdGF0
cy5zY3ZwYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1NDVlBDKTsK
KwlhZGFwdGVyLT5zdGF0cy5ocm1wYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcs
IEUxMDAwX0hSTVBDKTsKKwogCWFkYXB0ZXItPnN0YXRzLmFsZ25lcnJjICs9IAogCQlFMTAw
MF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0FMR05FUlJDKTsKIAlhZGFwdGVyLT5z
dGF0cy5yeGVycmMgKz0gCkBAIC00ODAyLDE0MCArNDgxNywzNzUgQEAgaWdiX3VwZGF0ZV9z
dGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlcgogfQogCiAKLS8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ci0gKgotICogIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25seSB3aGVuIGlnYl9kaXNwbGF5
X2RlYnVnX3N0YXRzIGlzIGVuYWJsZWQuCi0gKiAgVGhpcyByb3V0aW5lIHByb3ZpZGVzIGEg
d2F5IHRvIHRha2UgYSBsb29rIGF0IGltcG9ydGFudCBzdGF0aXN0aWNzCi0gKiAgbWFpbnRh
aW5lZCBieSB0aGUgZHJpdmVyIGFuZCBoYXJkd2FyZS4KLSAqCi0gKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KKy8qCisgKiBBZGQgc3lzY3RsIHZhcmlhYmxlcywgb25lIHBlciBzdGF0aXN0aWMsIHRv
IHRoZSBzeXN0ZW0uCisgKi8KIHN0YXRpYyB2b2lkCi1pZ2JfcHJpbnRfZGVidWdfaW5mbyhz
dHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK2lnYl9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0
ZXIgKmFkYXB0ZXIpCiB7CisKIAlkZXZpY2VfdCBkZXYgPSBhZGFwdGVyLT5kZXY7Ci0Jc3Ry
dWN0IGlnYl9xdWV1ZSAqcXVlID0gYWRhcHRlci0+cXVldWVzOwotCXN0cnVjdCByeF9yaW5n
ICpyeHIgPSBhZGFwdGVyLT5yeF9yaW5nczsKKwogCXN0cnVjdCB0eF9yaW5nICp0eHIgPSBh
ZGFwdGVyLT50eF9yaW5nczsKLQl1aW50OF90ICpod19hZGRyID0gYWRhcHRlci0+aHcuaHdf
YWRkcjsKKwlzdHJ1Y3QgcnhfcmluZyAqcnhyID0gYWRhcHRlci0+cnhfcmluZ3M7CiAKLQlk
ZXZpY2VfcHJpbnRmKGRldiwgIkFkYXB0ZXIgaGFyZHdhcmUgYWRkcmVzcyA9ICVwIFxuIiwg
aHdfYWRkcik7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDVFJMID0gMHgleCBSQ1RMID0gMHgl
eCBcbiIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfQ1RSTCks
Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkNUTCkpOwotCi0j
aWYJKERFQlVHX0hXID4gMCkgIC8qIERvbnQgb3V0cHV0IHRoZXNlIGVycm9ycyBub3JtYWxs
eSAqLwotCWRldmljZV9wcmludGYoZGV2LCAiSU1TID0gMHgleCBFSU1TID0gMHgleCBcbiIs
Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSU1TKSwKLQkgICAg
RTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9FSU1TKSk7Ci0jZW5kaWYKKwlz
dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHggPSBkZXZpY2VfZ2V0X3N5c2N0bF9jdHgoZGV2
KTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqdHJlZSA9IGRldmljZV9nZXRfc3lzY3RsX3RyZWUo
ZGV2KTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZF9saXN0ICpjaGlsZCA9IFNZU0NUTF9DSElMRFJF
Tih0cmVlKTsKKwlzdHJ1Y3QgZTEwMDBfaHdfc3RhdHMgKnN0YXRzID0gJmFkYXB0ZXItPnN0
YXRzOworCisJc3RydWN0IHN5c2N0bF9vaWQgKnN0YXRfbm9kZSwgKnF1ZXVlX25vZGUsICpp
bnRfbm9kZSwgKmhvc3Rfbm9kZTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZF9saXN0ICpzdGF0X2xp
c3QsICpxdWV1ZV9saXN0LCAqaW50X2xpc3QsICpob3N0X2xpc3Q7CisKKyNkZWZpbmUgUVVF
VUVfTkFNRV9MRU4gMzIKKwljaGFyIG5hbWVidWZbUVVFVUVfTkFNRV9MRU5dOworCisJLyog
RHJpdmVyIFN0YXRpc3RpY3MgKi8KKwlTWVNDVExfQUREX1VJTlQoY3R4LCBjaGlsZCwgT0lE
X0FVVE8sICJsaW5rX2lycSIsIAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPmxpbmtfaXJx
LCAwLAorCQkJIkxpbmsgTVNJWCBJUlEgSGFuZGxlZCIpOworCVNZU0NUTF9BRERfVUxPTkco
Y3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkcm9wcGVkIiwgCisJCQlDVExGTEFHX1JELCAmYWRh
cHRlci0+ZHJvcHBlZF9wa3RzLAorCQkJIkRyaXZlciBkcm9wcGVkIHBhY2tldHMiKTsKKwlT
WVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfZG1hX2ZhaWwiLCAK
KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5ub190eF9kbWFfc2V0dXAsCisJCQkiRHJpdmVy
IHR4IGRtYSBmYWlsdXJlIGluIHhtaXQiKTsKKworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBj
aGlsZCwgT0lEX0FVVE8sICJkZXZpY2VfY29udHJvbCIsIAorCQkJQ1RMRkxBR19SRCwgJmFk
YXB0ZXItPmRldmljZV9jb250cm9sLAorCQkJIkRldmljZSBDb250cm9sIFJlZ2lzdGVyIik7
CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInJ4X2NvbnRyb2wi
LCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5yeF9jb250cm9sLAorCQkJIlJlY2VpdmVy
IENvbnRyb2wgUmVnaXN0ZXIiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9J
RF9BVVRPLCAiaW50ZXJydXB0X21hc2siLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5p
bnRfbWFzaywKKwkJCSJJbnRlcnJ1cHQgTWFzayIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4
LCBjaGlsZCwgT0lEX0FVVE8sICJleHRlbmRlZF9pbnRfbWFzayIsIAorCQkJQ1RMRkxBR19S
RCwgJmFkYXB0ZXItPmVpbnRfbWFzaywKKwkJCSJFeHRlbmRlZCBJbnRlcnJ1cHQgTWFzayIp
OworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9idWZfYWxs
b2MiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5wYWNrZXRfYnVmX2FsbG9jX3R4LAor
CQkJIlRyYW5zbWl0IEJ1ZmZlciBQYWNrZXQgQWxsb2NhdGlvbiIpOworCVNZU0NUTF9BRERf
VUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJyeF9idWZfYWxsb2MiLCAKKwkJCUNUTEZM
QUdfUkQsICZhZGFwdGVyLT5wYWNrZXRfYnVmX2FsbG9jX3J4LAorCQkJIlJlY2VpdmUgQnVm
ZmVyIFBhY2tldCBBbGxvY2F0aW9uIik7CisJU1lTQ1RMX0FERF9VSU5UKGN0eCwgY2hpbGQs
IE9JRF9BVVRPLCAiZmNfaGlnaF93YXRlciIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+
aHcuZmMuaGlnaF93YXRlciwgMCwKKwkJCSJGbG93IENvbnRyb2wgSGlnaCBXYXRlcm1hcmsi
KTsKKwlTWVNDVExfQUREX1VJTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJmY19sb3dfd2F0
ZXIiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5ody5mYy5sb3dfd2F0ZXIsIDAsCisJ
CQkiRmxvdyBDb250cm9sIExvdyBXYXRlcm1hcmsiKTsKIAotCWRldmljZV9wcmludGYoZGV2
LCAiUGFja2V0IGJ1ZmZlciA9IFR4PSVkayBSeD0lZGsgXG4iLAotCSAgICAoKEUxMDAwX1JF
QURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUEJBKSAmIDB4ZmZmZjAwMDApID4+IDE2KSxc
Ci0JICAgIChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1BCQSkgJiAweGZm
ZmYpICk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJGbG93IGNvbnRyb2wgd2F0ZXJtYXJrcyBo
aWdoID0gJWQgbG93ID0gJWRcbiIsCi0JICAgIGFkYXB0ZXItPmh3LmZjLmhpZ2hfd2F0ZXIs
Ci0JICAgIGFkYXB0ZXItPmh3LmZjLmxvd193YXRlcik7Ci0KLQlmb3IgKGludCBpID0gMDsg
aSA8IGFkYXB0ZXItPm51bV9xdWV1ZXM7IGkrKywgcnhyKyssIHR4cisrKSB7Ci0JCWRldmlj
ZV9wcmludGYoZGV2LCAiUXVldWUoJWQpIHRkaCA9ICVkLCB0ZHQgPSAlZCAgIiwgaSwKLQkJ
ICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfVERIKGkpKSwKLQkJICAg
IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfVERUKGkpKSk7Ci0JCWRldmlj
ZV9wcmludGYoZGV2LCAicmRoID0gJWQsIHJkdCA9ICVkXG4iLAotCQkgICAgRTEwMDBfUkVB
RF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SREgoaSkpLAotCQkgICAgRTEwMDBfUkVBRF9S
RUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SRFQoaSkpKTsKLQkJZGV2aWNlX3ByaW50ZihkZXYs
ICJUWCglZCkgbm8gZGVzY3JpcHRvcnMgYXZhaWwgZXZlbnQgPSAlbGxkXG4iLAotCQkgICAg
dHhyLT5tZSwgKGxvbmcgbG9uZyl0eHItPm5vX2Rlc2NfYXZhaWwpOwotCQlkZXZpY2VfcHJp
bnRmKGRldiwgIlRYKCVkKSBQYWNrZXRzIHNlbnQgPSAlbGxkXG4iLAotCQkgICAgdHhyLT5t
ZSwgKGxvbmcgbG9uZyl0eHItPnR4X3BhY2tldHMpOwotCQlkZXZpY2VfcHJpbnRmKGRldiwg
IlJYKCVkKSBQYWNrZXRzIHJlY2VpdmVkID0gJWxsZCAgIiwKLQkJICAgIHJ4ci0+bWUsIChs
b25nIGxvbmcpcnhyLT5yeF9wYWNrZXRzKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0
ZXItPm51bV9xdWV1ZXM7IGkrKywgdHhyKyspIHsKKwkJc25wcmludGYobmFtZWJ1ZiwgUVVF
VUVfTkFNRV9MRU4sICJxdWV1ZSVkIiwgaSk7CisJCXF1ZXVlX25vZGUgPSBTWVNDVExfQURE
X05PREUoY3R4LCBjaGlsZCwgT0lEX0FVVE8sIG5hbWVidWYsCisJCQkJCSAgICBDVExGTEFH
X1JELCBOVUxMLCAiUXVldWUgTmFtZSIpOworCQlxdWV1ZV9saXN0ID0gU1lTQ1RMX0NISUxE
UkVOKHF1ZXVlX25vZGUpOworCisJCVNZU0NUTF9BRERfVUlOVChjdHgsIHF1ZXVlX2xpc3Qs
IE9JRF9BVVRPLCAidHhkX2hlYWQiLAorCQkJCUNUTEZMQUdfUkQsICZ0eHItPnRkaCwgMCwK
KwkJCQkiVHJhbnNtaXQgRGVzY3JpcHRvciBIZWFkIik7CisJCVNZU0NUTF9BRERfVUlOVChj
dHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAidHhkX3RhaWwiLAorCQkJCUNUTEZMQUdfUkQs
ICZ0eHItPnRkdCwgMCwKKwkJCQkiVHJhbnNtaXQgRGVzY3JpcHRvciBUYWlsIik7CisJCVNZ
U0NUTF9BRERfUVVBRChjdHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAibm9fZGVzY19hdmFp
bCIsIAorCQkJCUNUTEZMQUdfUkQsICZ0eHItPm5vX2Rlc2NfYXZhaWwsCisJCQkJIlF1ZXVl
IE5vIERlc2NyaXB0b3IgQXZhaWxhYmxlIik7CisJCVNZU0NUTF9BRERfUVVBRChjdHgsIHF1
ZXVlX2xpc3QsIE9JRF9BVVRPLCAidHhfcGFja2V0cyIsCisJCQkJQ1RMRkxBR19SRCwgJnR4
ci0+dHhfcGFja2V0cywKKwkJCQkiUXVldWUgUGFja2V0cyBUcmFuc21pdHRlZCIpOwogCX0K
IAogCWZvciAoaW50IGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3F1ZXVlczsgaSsrLCByeHIr
KykgewogCQlzdHJ1Y3QgbHJvX2N0cmwgKmxybyA9ICZyeHItPmxybzsKLQkJZGV2aWNlX3By
aW50ZihkZXYsICJRdWV1ZSglZCkgcmRoID0gJWQsIHJkdCA9ICVkXG4iLCBpLAotCQkgICAg
RTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SREgoaSkpLAotCQkgICAgRTEw
MDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SRFQoaSkpKTsKLQkJZGV2aWNlX3By
aW50ZihkZXYsICJSWCglZCkgUGFja2V0cyByZWNlaXZlZCA9ICVsbGRcbiIsIHJ4ci0+bWUs
Ci0JCSAgICAobG9uZyBsb25nKXJ4ci0+cnhfcGFja2V0cyk7Ci0JCWRldmljZV9wcmludGYo
ZGV2LCAiIFNwbGl0IFBhY2tldHMgPSAlbGxkICIsCi0JCSAgICAobG9uZyBsb25nKXJ4ci0+
cnhfc3BsaXRfcGFja2V0cyk7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiIEJ5dGUgY291bnQg
PSAlbGxkXG4iLAotCQkgICAgKGxvbmcgbG9uZylyeHItPnJ4X2J5dGVzKTsKLQkJZGV2aWNl
X3ByaW50ZihkZXYsIlJYKCVkKSBMUk8gUXVldWVkPSAlZCAgIiwKLQkJICAgIGksIGxyby0+
bHJvX3F1ZXVlZCk7Ci0JCWRldmljZV9wcmludGYoZGV2LCJMUk8gRmx1c2hlZD0gJWRcbiIs
bHJvLT5scm9fZmx1c2hlZCk7Ci0JfQotCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBhZGFwdGVy
LT5udW1fcXVldWVzOyBpKyssIHF1ZSsrKQotCQlkZXZpY2VfcHJpbnRmKGRldiwiUVVFKCVk
KSBJUlFzID0gJWxseFxuIiwKLQkJICAgIGksIChsb25nIGxvbmcpcXVlLT5pcnFzKTsKLQot
CWRldmljZV9wcmludGYoZGV2LCAiTElOSyBNU0lYIElSUSBIYW5kbGVkID0gJXVcbiIsIGFk
YXB0ZXItPmxpbmtfaXJxKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIk1idWYgZGVmcmFnIGZh
aWxlZCA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+bWJ1Zl9kZWZyYWdfZmFpbGVkKTsKLQlk
ZXZpY2VfcHJpbnRmKGRldiwgIlN0ZCBtYnVmIGhlYWRlciBmYWlsZWQgPSAlbGRcbiIsCi0J
ICAgIGFkYXB0ZXItPm1idWZfaGVhZGVyX2ZhaWxlZCk7Ci0JZGV2aWNlX3ByaW50ZihkZXYs
ICJTdGQgbWJ1ZiBwYWNrZXQgZmFpbGVkID0gJWxkXG4iLAotCSAgICBhZGFwdGVyLT5tYnVm
X3BhY2tldF9mYWlsZWQpOwotCWRldmljZV9wcmludGYoZGV2LCAiRHJpdmVyIGRyb3BwZWQg
cGFja2V0cyA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+ZHJvcHBlZF9wa3RzKTsKLQlkZXZp
Y2VfcHJpbnRmKGRldiwgIkRyaXZlciB0eCBkbWEgZmFpbHVyZSBpbiB4bWl0ID0gJWxkXG4i
LAotCQlhZGFwdGVyLT5ub190eF9kbWFfc2V0dXApOwotfQogCi1zdGF0aWMgdm9pZAotaWdi
X3ByaW50X2h3X3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQotewotCWRldmljZV90
IGRldiA9IGFkYXB0ZXItPmRldjsKKwkJc25wcmludGYobmFtZWJ1ZiwgUVVFVUVfTkFNRV9M
RU4sICJxdWV1ZSVkIiwgaSk7CisJCXF1ZXVlX25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4
LCBjaGlsZCwgT0lEX0FVVE8sIG5hbWVidWYsIAorCQkJCQkgICAgQ1RMRkxBR19SRCwgTlVM
TCwgIlF1ZXVlIE5hbWUiKTsKKwkJcXVldWVfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihxdWV1
ZV9ub2RlKTsKKworCQlTWVNDVExfQUREX1VJTlQoY3R4LCBxdWV1ZV9saXN0LCBPSURfQVVU
TywgInJ4ZF9oZWFkIiwKKwkJCQlDVExGTEFHX1JELCAmcnhyLT5yZGgsIDAsCisJCQkJIlJl
Y2VpdmUgRGVzY3JpcHRvciBIZWFkIik7CisJCVNZU0NUTF9BRERfVUlOVChjdHgsIHF1ZXVl
X2xpc3QsIE9JRF9BVVRPLCAicnhkX3RhaWwiLAorCQkJCUNUTEZMQUdfUkQsICZyeHItPnJk
dCwgMCwKKwkJCQkiUmVjZWl2ZSBEZXNjcmlwdG9yIFRhaWwiKTsKKwkJU1lTQ1RMX0FERF9R
VUFEKGN0eCwgcXVldWVfbGlzdCwgT0lEX0FVVE8sICJyeF9wYWNrZXRzIiwKKwkJCQlDVExG
TEFHX1JELCAmcnhyLT5yeF9wYWNrZXRzLAorCQkJCSJRdWV1ZSBQYWNrZXRzIFJlY2VpdmVk
Iik7CisJCVNZU0NUTF9BRERfUVVBRChjdHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAicnhf
Ynl0ZXMiLAorCQkJCUNUTEZMQUdfUkQsICZyeHItPnJ4X2J5dGVzLAorCQkJCSJRdWV1ZSBC
eXRlcyBSZWNlaXZlZCIpOworCQlTWVNDVExfQUREX1VJTlQoY3R4LCBxdWV1ZV9saXN0LCBP
SURfQVVUTywgImxyb19xdWV1ZWQiLAorCQkJCUNUTEZMQUdfUkQsICZscm8tPmxyb19xdWV1
ZWQsIDAsCisJCQkJIkxSTyBRdWV1ZWQiKTsKKwkJU1lTQ1RMX0FERF9VSU5UKGN0eCwgcXVl
dWVfbGlzdCwgT0lEX0FVVE8sICJscm9fZmx1c2hlZCIsCisJCQkJQ1RMRkxBR19SRCwgJmxy
by0+bHJvX2ZsdXNoZWQsIDAsCisJCQkJIkxSTyBGbHVzaGVkIik7CisJfQorCisJLyogTUFD
IHN0YXRzIGdldCB0aGUgb3duIHN1YiBub2RlICovCisKKwlzdGF0X25vZGUgPSBTWVNDVExf
QUREX05PREUoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJtYWNfc3RhdHMiLCAKKwkJCQkgICAg
Q1RMRkxBR19SRCwgTlVMTCwgIk1BQyBTdGF0aXN0aWNzIik7CisJc3RhdF9saXN0ID0gU1lT
Q1RMX0NISUxEUkVOKHN0YXRfbm9kZSk7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0
X2xpc3QsIE9JRF9BVVRPLCAiZXhjZXNzX2NvbGwiLCAKKwkJCUNUTEZMQUdfUkQsICZzdGF0
cy0+ZWNvbCwKKwkJCSJFeGNlc3NpdmUgY29sbGlzaW9ucyIpOworCVNZU0NUTF9BRERfUVVB
RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJzaW5nbGVfY29sbCIsIAorCQkJQ1RMRkxB
R19SRCwgJnN0YXRzLT5zY2MsCisJCQkiU2luZ2xlIGNvbGxpc2lvbnMiKTsKKwlTWVNDVExf
QUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibXVsdGlwbGVfY29sbCIsIAor
CQkJQ1RMRkxBR19SRCwgJnN0YXRzLT5tY2MsCisJCQkiTXVsdGlwbGUgY29sbGlzaW9ucyIp
OworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJsYXRlX2Nv
bGwiLCAKKwkJCUNUTEZMQUdfUkQsICZzdGF0cy0+bGF0ZWNvbCwKKwkJCSJMYXRlIGNvbGxp
c2lvbnMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAi
Y29sbGlzaW9uX2NvdW50IiwgCisJCQlDVExGTEFHX1JELCAmc3RhdHMtPmNvbGMsCisJCQki
Q29sbGlzaW9uIENvdW50Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBP
SURfQVVUTywgInN5bWJvbF9lcnJvcnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0
YXRzLnN5bWVycnMsCisJCQkiU3ltYm9sIEVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJzZXF1ZW5jZV9lcnJvcnMiLAorCQkJQ1RMRkxB
R19SRCwgJmFkYXB0ZXItPnN0YXRzLnNlYywKKwkJCSJTZXF1ZW5jZSBFcnJvcnMiKTsKKwlT
WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZGVmZXJfY291bnQi
LAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmRjLAorCQkJIkRlZmVyIENvdW50
Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgIm1pc3Nl
ZF9wYWNrZXRzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5tcGMsCisJCQki
TWlzc2VkIFBhY2tldHMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9J
RF9BVVRPLCAicmVjdl9ub19idWZmIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0
cy5ybmJjLAorCQkJIlJlY2VpdmUgTm8gQnVmZmVycyIpOworCVNZU0NUTF9BRERfUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X3VuZGVyc2l6ZSIsCisJCQlDVExGTEFH
X1JELCAmYWRhcHRlci0+c3RhdHMucnVjLAorCQkJIlJlY2VpdmUgVW5kZXJzaXplIik7CisJ
U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJlY3ZfZnJhZ21l
bnRlZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucmZjLAorCQkJIkZyYWdt
ZW50ZWQgUGFja2V0cyBSZWNlaXZlZCAiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0
X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9vdmVyc2l6ZSIsCisJCQlDVExGTEFHX1JELCAmYWRh
cHRlci0+c3RhdHMucm9jLAorCQkJIk92ZXJzaXplZCBQYWNrZXRzIFJlY2VpdmVkIik7CisJ
U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJlY3ZfamFiYmVy
IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5yamMsCisJCQkiUmVjZXZpZWQg
SmFiYmVyIik7CiAKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkV4Y2Vzc2l2ZSBjb2xsaXNpb25z
ID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5lY29sKTsKLSNp
ZgkoREVCVUdfSFcgPiAwKSAgLyogRG9udCBvdXRwdXQgdGhlc2UgZXJyb3JzIG5vcm1hbGx5
ICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJTeW1ib2wgZXJyb3JzID0gJWxsZFxuIiwKLQkg
ICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5zeW1lcnJzKTsKLSNlbmRpZgotCWRldmlj
ZV9wcmludGYoZGV2LCAiU2VxdWVuY2UgZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcg
bG9uZylhZGFwdGVyLT5zdGF0cy5zZWMpOwotCWRldmljZV9wcmludGYoZGV2LCAiRGVmZXIg
Y291bnQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmRjKTsK
LQlkZXZpY2VfcHJpbnRmKGRldiwgIk1pc3NlZCBQYWNrZXRzID0gJWxsZFxuIiwKLQkgICAg
KGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5tcGMpOwotCWRldmljZV9wcmludGYoZGV2LCAi
UmVjZWl2ZSBObyBCdWZmZXJzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVy
LT5zdGF0cy5ybmJjKTsKIAkvKiBSTEVDIGlzIGluYWNjdXJhdGUgb24gc29tZSBoYXJkd2Fy
ZSwgY2FsY3VsYXRlIG91ciBvd24uICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJSZWNlaXZl
IExlbmd0aCBFcnJvcnMgPSAlbGxkXG4iLAotCSAgICAoKGxvbmcgbG9uZylhZGFwdGVyLT5z
dGF0cy5yb2MgKyAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnJ1YykpOwotCWRldmljZV9w
cmludGYoZGV2LCAiUmVjZWl2ZSBlcnJvcnMgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25n
KWFkYXB0ZXItPnN0YXRzLnJ4ZXJyYyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDcmMgZXJy
b3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5jcmNlcnJz
KTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkFsaWdubWVudCBlcnJvcnMgPSAlbGxkXG4iLAot
CSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmFsZ25lcnJjKTsKKy8qIAlTWVNDVExf
QUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9sZW5fZXJycyIsICov
CisvKiAJCQlDVExGTEFHX1JELCBhZGFwdGVyLT5zdGF0cy5yb2MgKyBhZGFwdGVyLT5zdGF0
cy5ydWMsICovCisvKiAJCQkiUmVjZWl2ZSBMZW5ndGggRXJyb3JzIik7ICovCisKKwlTWVND
VExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9lcnJzIiwKKwkJ
CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5yeGVycmMsCisJCQkiUmVjZWl2ZSBFcnJv
cnMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiY3Jj
X2VycnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmNyY2VycnMsCisJCQki
Q1JDIGVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FV
VE8sICJhbGlnbm1lbnRfZXJycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMu
YWxnbmVycmMsCisJCQkiQWxpZ25tZW50IEVycm9ycyIpOwogCS8qIE9uIDgyNTc1IHRoZXNl
IGFyZSBjb2xsaXNpb24gY291bnRzICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJDb2xsaXNp
b24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9u
ZylhZGFwdGVyLT5zdGF0cy5jZXh0ZXJyKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlJYIG92
ZXJydW5zID0gJWxkXG4iLCBhZGFwdGVyLT5yeF9vdmVycnVucyk7Ci0JZGV2aWNlX3ByaW50
ZihkZXYsICJ3YXRjaGRvZyB0aW1lb3V0cyA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+d2F0
Y2hkb2dfZXZlbnRzKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlhPTiBSY3ZkID0gJWxsZFxu
IiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy54b25yeGMpOwotCWRldmljZV9w
cmludGYoZGV2LCAiWE9OIFhtdGQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0
ZXItPnN0YXRzLnhvbnR4Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT0ZGIFJjdmQgPSAl
bGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvZmZyeGMpOwotCWRl
dmljZV9wcmludGYoZGV2LCAiWE9GRiBYbXRkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9u
ZylhZGFwdGVyLT5zdGF0cy54b2ZmdHhjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkdvb2Qg
UGFja2V0cyBSY3ZkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0
cy5ncHJjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkdvb2QgUGFja2V0cyBYbXRkID0gJWxs
ZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5ncHRjKTsKLQlkZXZpY2Vf
cHJpbnRmKGRldiwgIlRTTyBDb250ZXh0cyBYbXRkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcg
bG9uZylhZGFwdGVyLT5zdGF0cy50c2N0Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJUU08g
Q29udGV4dHMgRmFpbGVkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5z
dGF0cy50c2N0ZmMpOwotfQorCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lE
X0FVVE8sICJjb2xsX2V4dF9lcnJzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0
cy5jZXh0ZXJyLAorCQkJIkNvbGxpc2lvbi9DYXJyaWVyIGV4dGVuc2lvbiBlcnJvcnMiKTsK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicnhfb3ZlcnJ1
bnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnJ4X292ZXJydW5zLAorCQkJIlJYIG92
ZXJydW5zIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywg
IndhdGNoZG9nX3RpbWVvdXRzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT53YXRjaGRv
Z19ldmVudHMsCisJCQkiV2F0Y2hkb2cgdGltZW91dHMiKTsKKwlTWVNDVExfQUREX1FVQUQo
Y3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAieG9uX3JlY3ZkIiwKKwkJCUNUTEZMQUdfUkQs
ICZhZGFwdGVyLT5zdGF0cy54b25yeGMsCisJCQkiWE9OIFJlY2VpdmVkIik7CisJU1lTQ1RM
X0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInhvbl90eGQiLAorCQkJQ1RM
RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnhvbnR4YywKKwkJCSJYT04gVHJhbnNtaXR0ZWQi
KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAieG9mZl9y
ZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMueG9mZnJ4YywKKwkJCSJY
T0ZGIFJlY2VpdmVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURf
QVVUTywgInhvZmZfdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy54b2Zm
dHhjLAorCQkJIlhPRkYgVHJhbnNtaXR0ZWQiKTsKKwkvKiBQYWNrZXQgUmVjZXB0aW9uIFN0
YXRzICovCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInRv
dGFsX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnRwciwK
KwkJCSJUb3RhbCBQYWNrZXRzIFJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgs
IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19S
RCwgJmFkYXB0ZXItPnN0YXRzLmdwcmMsCisJCQkiR29vZCBQYWNrZXRzIFJlY2VpdmVkIik7
CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImJjYXN0X3Br
dHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmJwcmMsCisJCQki
QnJvYWRjYXN0IFBhY2tldHMgUmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBz
dGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c19yZWN2ZCIsCisJCQlDVExGTEFHX1JE
LCAmYWRhcHRlci0+c3RhdHMubXByYywKKwkJCSJNdWx0aWNhc3QgUGFja2V0cyBSZWNlaXZl
ZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9m
cmFtZXNfNjQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzY0LAorCQkJ
IjY0IGJ5dGUgZnJhbWVzIHJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0
YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfNjVfMTI3IiwKKwkJCUNUTEZMQUdfUkQs
ICZhZGFwdGVyLT5zdGF0cy5wcmMxMjcsCisJCQkiNjUtMTI3IGJ5dGUgZnJhbWVzIHJlY2Vp
dmVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4
X2ZyYW1lc18xMjhfMjU1IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wcmMy
NTUsCisJCQkiMTI4LTI1NSBieXRlIGZyYW1lcyByZWNlaXZlZCIpOworCVNZU0NUTF9BRERf
UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfMjU2XzUxMSIsCisJ
CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHJjNTExLAorCQkJIjI1Ni01MTEgYnl0
ZSBmcmFtZXMgcmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3Qs
IE9JRF9BVVRPLCAicnhfZnJhbWVzXzUxMl8xMDIzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw
dGVyLT5zdGF0cy5wcmMxMDIzLAorCQkJIjUxMi0xMDIzIGJ5dGUgZnJhbWVzIHJlY2VpdmVk
Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2Zy
YW1lc18xMDI0XzE1MjIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzE1
MjIsCisJCQkiMTAyMy0xNTIyIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisgCVNZU0NUTF9B
RERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGV0c19yZWN2ZCIs
IAorIAkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5nb3JjLCAKKyAJCQkiR29vZCBP
Y3RldHMgUmVjZWl2ZWQiKTsgCisKKwkvKiBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXRzICov
CisgCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29j
dGVzdF90eGQiLCAKKyAJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ290YywgCisg
CQkJIkdvb2QgT2N0ZXN0IFRyYW5zbWl0dGVkIik7IAorCVNZU0NUTF9BRERfUVVBRChjdHgs
IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0b3RhbF9wa3RzX3R4ZCIsCisJCQlDVExGTEFHX1JE
LCAmYWRhcHRlci0+c3RhdHMudHB0LAorCQkJIlRvdGFsIFBhY2tldHMgVHJhbnNtaXR0ZWQi
KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZ29vZF9w
a3RzX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ3B0YywKKwkJCSJH
b29kIFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0
X2xpc3QsIE9JRF9BVVRPLCAiYmNhc3RfcGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFk
YXB0ZXItPnN0YXRzLmJwdGMsCisJCQkiQnJvYWRjYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQi
KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3Rf
cGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wdGMsCisJCQki
TXVsdGljYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4
LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzY0IiwKKwkJCUNUTEZMQUdfUkQs
ICZhZGFwdGVyLT5zdGF0cy5wdGM2NCwKKwkJCSI2NCBieXRlIGZyYW1lcyB0cmFuc21pdHRl
ZCAiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhf
ZnJhbWVzXzY1XzEyNyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTI3
LAorCQkJIjY1LTEyNyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERf
UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTI4XzI1NSIsCisJ
CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMjU1LAorCQkJIjEyOC0yNTUgYnl0
ZSBmcmFtZXMgdHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xp
c3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzI1Nl81MTEiLAorCQkJQ1RMRkxBR19SRCwgJmFk
YXB0ZXItPnN0YXRzLnB0YzUxMSwKKwkJCSIyNTYtNTExIGJ5dGUgZnJhbWVzIHRyYW5zbWl0
dGVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4
X2ZyYW1lc181MTJfMTAyMyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRj
MTAyMywKKwkJCSI1MTItMTAyMyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NU
TF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTAyNF8x
NTIyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wdGMxNTIyLAorCQkJIjEw
MjQtMTUyMiBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChj
dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0c29fdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZh
ZGFwdGVyLT5zdGF0cy50c2N0YywKKwkJCSJUU08gQ29udGV4dHMgVHJhbnNtaXR0ZWQiKTsK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHNvX2N0eF9m
YWlsIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy50c2N0ZmMsCisJCQkiVFNP
IENvbnRleHRzIEZhaWxlZCIpOworCisKKwkvKiBJbnRlcnJ1cHQgU3RhdHMgKi8KKworCWlu
dF9ub2RlID0gU1lTQ1RMX0FERF9OT0RFKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiaW50ZXJy
dXB0cyIsIAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiSW50ZXJydXB0IFN0YXRpc3Rp
Y3MiKTsKKwlpbnRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihpbnRfbm9kZSk7CisKKwlTWVND
VExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJhc3NlcnRzIiwKKwkJCUNU
TEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pYWMsCisJCQkiSW50ZXJydXB0IEFzc2VydGlv
biBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaW50X2xpc3QsIE9JRF9BVVRP
LCAicnhfcGt0X3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pY3J4
cHRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBQa3QgVGltZXIgRXhwaXJlIENvdW50Iik7
CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9hYnNf
dGltZXIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhhdGMsCisJCQki
SW50ZXJydXB0IENhdXNlIFJ4IEFicyBUaW1lciBFeHBpcmUgQ291bnQiKTsKKworCVNZU0NU
TF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4X3BrdF90aW1lciIsCisJ
CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaWN0eHB0YywKKwkJCSJJbnRlcnJ1cHQg
Q2F1c2UgVHggUGt0IFRpbWVyIEV4cGlyZSBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFE
KGN0eCwgaW50X2xpc3QsIE9JRF9BVVRPLCAidHhfYWJzX3RpbWVyIiwKKwkJCUNUTEZMQUdf
UkQsICZhZGFwdGVyLT5zdGF0cy5pY3R4YXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBB
YnMgVGltZXIgRXhwaXJlIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRf
bGlzdCwgT0lEX0FVVE8sICJ0eF9xdWV1ZV9lbXB0eSIsCisJCQlDVExGTEFHX1JELCAmYWRh
cHRlci0+c3RhdHMuaWN0eHFlYywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2UgVHggUXVldWUgRW1w
dHkgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVU
TywgInR4X3F1ZXVlX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0
YXRzLmljdHhxbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBRdWV1ZSBNaW4gVGhyZXNo
IENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8s
ICJyeF9kZXNjX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRz
LmljcnhkbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBEZXNjIE1pbiBUaHJlc2ggQ291
bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInJ4
X292ZXJydW4iLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhvYywKKwkJ
CSJJbnRlcnJ1cHQgQ2F1c2UgUmVjZWl2ZXIgT3ZlcnJ1biBDb3VudCIpOworCisJLyogSG9z
dCB0byBDYXJkIFN0YXRzICovCisKKwlob3N0X25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4
LCBjaGlsZCwgT0lEX0FVVE8sICJob3N0IiwgCisJCQkJICAgIENUTEZMQUdfUkQsIE5VTEws
IAorCQkJCSAgICAiSG9zdCB0byBDYXJkIFN0YXRpc3RpY3MiKTsKKworCWhvc3RfbGlzdCA9
IFNZU0NUTF9DSElMRFJFTihob3N0X25vZGUpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg
aG9zdF9saXN0LCBPSURfQVVUTywgImJyZWFrZXJfdHhfcGt0IiwKKwkJCUNUTEZMQUdfUkQs
ICZhZGFwdGVyLT5zdGF0cy5jYnRtcGMsCisJCQkiQ2lyY3VpdCBCcmVha2VyIFR4IFBhY2tl
dCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVU
TywgImhvc3RfdHhfcGt0X2Rpc2NhcmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0
YXRzLmh0ZHBtYywKKwkJCSJIb3N0IFRyYW5zbWl0IERpc2NhcmRlZCBQYWNrZXRzIik7CisK
KwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfcGt0IiwK
KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5ycHRoYywKKwkJCSJSeCBQYWNrZXRz
IFRvIEhvc3QiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FV
VE8sICJicmVha2VyX3J4X3BrdHMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRz
LmNicm1wYywKKwkJCSJDaXJjdWl0IEJyZWFrZXIgUnggUGFja2V0IENvdW50Iik7CisKKwlT
WVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJlYWtlcl9yeF9w
a3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2JyZHBjLAorCQkJ
IkNpcmN1aXQgQnJlYWtlciBSeCBEcm9wcGVkIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FV
QUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAidHhfZ29vZF9wa3QiLAorCQkJQ1RMRkxB
R19SRCwgJmFkYXB0ZXItPnN0YXRzLmhncHRjLAorCQkJIkhvc3QgR29vZCBQYWNrZXRzIFR4
IENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRP
LCAiYnJlYWtlcl90eF9wa3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3Rh
dHMuaHRjYmRwYywKKwkJCSJIb3N0IFR4IENpcmN1aXQgQnJlYWtlciBEcm9wcGVkIENvdW50
Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhf
Z29vZF9ieXRlcyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaGdvcmMsCisJ
CQkiSG9zdCBHb29kIE9jdGV0cyBSZWNlaXZlZCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9R
VUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVUTywgInR4X2dvb2RfYnl0ZXMiLAorCQkJQ1RM
RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmhnb3RjLAorCQkJIkhvc3QgR29vZCBPY3RldHMg
VHJhbnNtaXQgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwg
T0lEX0FVVE8sICJsZW5ndGhfZXJyb3JzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5z
dGF0cy5sZW5lcnJzLAorCQkJIkxlbmd0aCBFcnJvcnMiKTsKKworCVNZU0NUTF9BRERfUVVB
RChjdHgsIGhvc3RfbGlzdCwgT0lEX0FVVE8sICJzZXJkZXNfdmlvbGF0aW9uX3BrdCIsCisJ
CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc2N2cGMsCisJCQkiU2VyRGVzL1NHTUlJ
IENvZGUgVmlvbGF0aW9uIFBrdCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg
aG9zdF9saXN0LCBPSURfQVVUTywgImhlYWRlcl9yZWRpcl9taXNzZWQiLAorCQkJQ1RMRkxB
R19SRCwgJmFkYXB0ZXItPnN0YXRzLmhybXBjLAorCQkJIkhlYWRlciBSZWRpcmVjdGlvbiBN
aXNzZWQgUGFja2V0IENvdW50Iik7CiAKKworfQogLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAg
KiAgVGhpcyByb3V0aW5lIHByb3ZpZGVzIGEgd2F5IHRvIGR1bXAgb3V0IHRoZSBhZGFwdGVy
IGVlcHJvbSwKQEAgLTQ5NDMsMjggKzUxOTMsOCBAQCBpZ2JfcHJpbnRfaHdfc3RhdHMoc3Ry
dWN0IGFkYXB0ZXIgKmFkYXB0CiAgKiAgMzIgd29yZHMsIHN0dWZmIHRoYXQgbWF0dGVycyBp
cyBpbiB0aGF0IGV4dGVudC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lk
Ci1pZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JdTE2
CWVlcHJvbV9kYXRhOwotCWludAlpLCBqLCByb3cgPSAwOwotCi0JLyogSXRzIGEgYml0IGNy
dWRlLCBidXQgaXQgZ2V0cyB0aGUgam9iIGRvbmUgKi8KLQlwcmludGYoIlxuSW50ZXJmYWNl
IEVFUFJPTSBEdW1wOlxuIik7Ci0JcHJpbnRmKCJPZmZzZXRcbjB4MDAwMCAgIik7Ci0JZm9y
IChpID0gMCwgaiA9IDA7IGkgPCAzMjsgaSsrLCBqKyspIHsKLQkJaWYgKGogPT0gOCkgeyAv
KiBNYWtlIHRoZSBvZmZzZXQgYmxvY2sgKi8KLQkJCWogPSAwOyArK3JvdzsKLQkJCXByaW50
ZigiXG4weDAwJXgwICAiLHJvdyk7Ci0JCX0KLQkJZTEwMDBfcmVhZF9udm0oJmFkYXB0ZXIt
Pmh3LCBpLCAxLCAmZWVwcm9tX2RhdGEpOwotCQlwcmludGYoIiUwNHggIiwgZWVwcm9tX2Rh
dGEpOwotCX0KLQlwcmludGYoIlxuIik7Ci19Ci0KIHN0YXRpYyBpbnQKLWlnYl9zeXNjdGxf
ZGVidWdfaW5mbyhTWVNDVExfSEFORExFUl9BUkdTKQoraWdiX3N5c2N0bF9udm1faW5mbyhT
WVNDVExfSEFORExFUl9BUkdTKQogewogCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyOwogCWlu
dCBlcnJvcjsKQEAgLTQ5NzYsMTYgKzUyMDYsMTIgQEAgaWdiX3N5c2N0bF9kZWJ1Z19pbmZv
KFNZU0NUTF9IQU5ETEVSX0FSRwogCWlmIChlcnJvciB8fCAhcmVxLT5uZXdwdHIpCiAJCXJl
dHVybiAoZXJyb3IpOwogCi0JaWYgKHJlc3VsdCA9PSAxKSB7Ci0JCWFkYXB0ZXIgPSAoc3Ry
dWN0IGFkYXB0ZXIgKilhcmcxOwotCQlpZ2JfcHJpbnRfZGVidWdfaW5mbyhhZGFwdGVyKTsK
LQl9CiAJLyoKIAkgKiBUaGlzIHZhbHVlIHdpbGwgY2F1c2UgYSBoZXggZHVtcCBvZiB0aGUK
IAkgKiBmaXJzdCAzMiAxNi1iaXQgd29yZHMgb2YgdGhlIEVFUFJPTSB0bwogCSAqIHRoZSBz
Y3JlZW4uCiAJICovCi0JaWYgKHJlc3VsdCA9PSAyKSB7CisJaWYgKHJlc3VsdCA9PSAxKSB7
CiAJCWFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKilhcmcxOwogCQlpZ2JfcHJpbnRfbnZt
X2luZm8oYWRhcHRlcik7CiAgICAgICAgIH0KQEAgLTQ5OTMsMjYgKzUyMTksMjQgQEAgaWdi
X3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FSRwogCXJldHVybiAoZXJyb3Ip
OwogfQogCi0KLXN0YXRpYyBpbnQKLWlnYl9zeXNjdGxfc3RhdHMoU1lTQ1RMX0hBTkRMRVJf
QVJHUykKK3N0YXRpYyB2b2lkCitpZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIg
KmFkYXB0ZXIpCiB7Ci0Jc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXI7Ci0JaW50IGVycm9yOwot
CWludCByZXN1bHQ7Ci0KLQlyZXN1bHQgPSAtMTsKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVf
aW50KG9pZHAsICZyZXN1bHQsIDAsIHJlcSk7Ci0KLQlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3
cHRyKQotCQlyZXR1cm4gKGVycm9yKTsKKwl1MTYJZWVwcm9tX2RhdGE7CisJaW50CWksIGos
IHJvdyA9IDA7CiAKLQlpZiAocmVzdWx0ID09IDEpIHsKLQkJYWRhcHRlciA9IChzdHJ1Y3Qg
YWRhcHRlciAqKWFyZzE7Ci0JCWlnYl9wcmludF9od19zdGF0cyhhZGFwdGVyKTsKKwkvKiBJ
dHMgYSBiaXQgY3J1ZGUsIGJ1dCBpdCBnZXRzIHRoZSBqb2IgZG9uZSAqLworCXByaW50Zigi
XG5JbnRlcmZhY2UgRUVQUk9NIER1bXA6XG4iKTsKKwlwcmludGYoIk9mZnNldFxuMHgwMDAw
ICAiKTsKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IDMyOyBpKyssIGorKykgeworCQlpZiAo
aiA9PSA4KSB7IC8qIE1ha2UgdGhlIG9mZnNldCBibG9jayAqLworCQkJaiA9IDA7ICsrcm93
OworCQkJcHJpbnRmKCJcbjB4MDAleDAgICIscm93KTsKKwkJfQorCQllMTAwMF9yZWFkX252
bSgmYWRhcHRlci0+aHcsIGksIDEsICZlZXByb21fZGF0YSk7CisJCXByaW50ZigiJTA0eCAi
LCBlZXByb21fZGF0YSk7CiAJfQotCi0JcmV0dXJuIChlcnJvcik7CisJcHJpbnRmKCJcbiIp
OwogfQogCiBzdGF0aWMgdm9pZAotLS0gc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaAkyMDEwLzA0
LzA1IDIwOjM5OjQ0CTEuNC4yLjIKKysrIHN5cy9kZXYvZTEwMDAvaWZfaWdiLmgJMjAxMC8w
Ni8xOCAxNzoyMjowOAkxLjQuMi4zCkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVl
QlNEOiBzcmMvc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaCx2IDEuNC4yLjIuMi4xIDIwMTAvMDYv
MTQgMDI6MDk6MDYga2Vuc21pdGggRXhwICQqLworLyokRnJlZUJTRDogc3JjL3N5cy9kZXYv
ZTEwMDAvaWZfaWdiLmgsdiAxLjQuMi4zIDIwMTAvMDYvMTggMTc6MjI6MDggamZ2IEV4cCAk
Ki8KIAogI2lmbmRlZiBfSUdCX0hfREVGSU5FRF8KICNkZWZpbmUgX0lHQl9IX0RFRklORURf
CkBAIC0zMTcsNiArMzE3LDkgQEAgc3RydWN0IHR4X3JpbmcgewogCWludAkJCXdhdGNoZG9n
X3RpbWU7CiAJdTY0CQkJbm9fZGVzY19hdmFpbDsKIAl1NjQJCQl0eF9wYWNrZXRzOworCS8q
IFN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZywgT05MWS4gKi8KKwl1MzIJCQl0ZGg7IC8qIFRy
YW5zbWl0IERlc2NyaXB0b3IgSGVhZCAqLworCXUzMgkJCXRkdDsgLyogVHJhbnNtaXQgRGVz
Y3JpcHRvciBUYWlsICovCiB9OwogCiAvKgpAQCAtMzUzLDYgKzM1Niw5IEBAIHN0cnVjdCBy
eF9yaW5nIHsKIAl1NjQJCQlyeF9kaXNjYXJkZWQ7CiAJdTY0CQkJcnhfcGFja2V0czsKIAl1
NjQJCQlyeF9ieXRlczsKKwkvKiBTdGF0aXN0aWNzIGZvciByZXBvcnRpbmcsIE9OTFkuICov
CisJdTMyCQkJcmRoOyAvKiBUcmFuc21pdCBEZXNjcmlwdG9yIEhlYWQgKi8KKwl1MzIJCQly
ZHQ7IC8qIFRyYW5zbWl0IERlc2NyaXB0b3IgVGFpbCAqLwogfTsKIAogc3RydWN0IGFkYXB0
ZXIgewpAQCAtMzgyLDggKzM4OCw2IEBAIHN0cnVjdCBhZGFwdGVyIHsKIAlpbnQJCW1pbl9m
cmFtZV9zaXplOwogCXN0cnVjdCBtdHgJY29yZV9tdHg7CiAJaW50CQlpZ2JfaW5zZXJ0X3Zs
YW5faGVhZGVyOwotCXN0cnVjdCB0YXNrICAgICByeHR4X3Rhc2s7Ci0Jc3RydWN0IHRhc2tx
dWV1ZSAqdHE7CS8qIGFkYXB0ZXIgdGFzayBxdWV1ZSAqLwogICAgICAgICB1MTYJCW51bV9x
dWV1ZXM7CiAKIAlldmVudGhhbmRsZXJfdGFnIHZsYW5fYXR0YWNoOwpAQCAtNDI4LDYgKzQz
MiwxMiBAQCBzdHJ1Y3QgYWRhcHRlciB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcJbm9fdHhf
ZG1hX3NldHVwOwogCXVuc2lnbmVkIGxvbmcJd2F0Y2hkb2dfZXZlbnRzOwogCXVuc2lnbmVk
IGxvbmcJcnhfb3ZlcnJ1bnM7CisJdW5zaWduZWQgbG9uZwlkZXZpY2VfY29udHJvbDsKKwl1
bnNpZ25lZCBsb25nCXJ4X2NvbnRyb2w7CisJdW5zaWduZWQgbG9uZwlpbnRfbWFzazsKKwl1
bnNpZ25lZCBsb25nCWVpbnRfbWFzazsKKwl1bnNpZ25lZCBsb25nCXBhY2tldF9idWZfYWxs
b2Nfcng7CisJdW5zaWduZWQgbG9uZwlwYWNrZXRfYnVmX2FsbG9jX3R4OwogCiAJYm9vbGVh
bl90ICAgICAgIGluX2RldGFjaDsKIAotLS0gc3lzL2Rldi9lMTAwMC9pZl9sZW0uYwkyMDEw
LzA1LzE0IDIyOjIwOjU4CTEuMy4yLjQKKysrIHN5cy9kZXYvZTEwMDAvaWZfbGVtLmMJMjAx
MC8wNi8xOCAxNzoyMjowOAkxLjMuMi41CkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRG
cmVlQlNEOiBzcmMvc3lzL2Rldi9lMTAwMC9pZl9sZW0uYyx2IDEuMy4yLjQuMi4xIDIwMTAv
MDYvMTQgMDI6MDk6MDYga2Vuc21pdGggRXhwICQqLworLyokRnJlZUJTRDogc3JjL3N5cy9k
ZXYvZTEwMDAvaWZfbGVtLmMsdiAxLjMuMi41IDIwMTAvMDYvMTggMTc6MjI6MDggamZ2IEV4
cCAkKi8KIAogI2lmZGVmIEhBVkVfS0VSTkVMX09QVElPTl9IRUFERVJTCiAjaW5jbHVkZSAi
b3B0X2RldmljZV9wb2xsaW5nLmgiCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIHZvaWQJ
bGVtX3R4ZW9mKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZvaWQJbGVtX3R4X3B1cmdl
KHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIGludAlsZW1fYWxsb2NhdGVfcmVjZWl2ZV9z
dHJ1Y3R1cmVzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIGludAlsZW1fYWxsb2NhdGVf
dHJhbnNtaXRfc3RydWN0dXJlcyhzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRpYyBpbnQJbGVt
X3J4ZW9mKHN0cnVjdCBhZGFwdGVyICosIGludCk7CitzdGF0aWMgYm9vbAlsZW1fcnhlb2Yo
c3RydWN0IGFkYXB0ZXIgKiwgaW50LCBpbnQgKik7CiAjaWZuZGVmIF9fTk9fU1RSSUNUX0FM
SUdOTUVOVAogc3RhdGljIGludAlsZW1fZml4dXBfcngoc3RydWN0IGFkYXB0ZXIgKik7CiAj
ZW5kaWYKQEAgLTEyNTUsNyArMTI1NSw3IEBAIGxlbV9wb2xsKHN0cnVjdCBpZm5ldCAqaWZw
LCBlbnVtIHBvbGxfY20KIAl9CiAJRU1fQ09SRV9VTkxPQ0soYWRhcHRlcik7CiAKLQlyeF9k
b25lID0gbGVtX3J4ZW9mKGFkYXB0ZXIsIGNvdW50KTsKKwlsZW1fcnhlb2YoYWRhcHRlciwg
Y291bnQsICZyeF9kb25lKTsKIAogCUVNX1RYX0xPQ0soYWRhcHRlcik7CiAJbGVtX3R4ZW9m
KGFkYXB0ZXIpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgbGVtX2ludHIodm9pZCAqYXJnKQog
CiAJRU1fVFhfTE9DSyhhZGFwdGVyKTsKIAlsZW1fdHhlb2YoYWRhcHRlcik7Ci0JbGVtX3J4
ZW9mKGFkYXB0ZXIsIC0xKTsKKwlsZW1fcnhlb2YoYWRhcHRlciwgLTEsIE5VTEwpOwogCWxl
bV90eGVvZihhZGFwdGVyKTsKIAlpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JV
Tk5JTkcgJiYKIAkgICAgIUlGUV9EUlZfSVNfRU1QVFkoJmlmcC0+aWZfc25kKSkKQEAgLTEz
NTAsNyArMTM1MCw3IEBAIGxlbV9oYW5kbGVfcnh0eCh2b2lkICpjb250ZXh0LCBpbnQgcGVu
ZGkKIAogCiAJaWYgKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5OSU5HKSB7Ci0J
CWlmIChsZW1fcnhlb2YoYWRhcHRlciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCkgIT0g
MCkKKwkJaWYgKGxlbV9yeGVvZihhZGFwdGVyLCBhZGFwdGVyLT5yeF9wcm9jZXNzX2xpbWl0
LCBOVUxMKSAhPSAwKQogCQkJdGFza3F1ZXVlX2VucXVldWUoYWRhcHRlci0+dHEsICZhZGFw
dGVyLT5yeHR4X3Rhc2spOwogCQlFTV9UWF9MT0NLKGFkYXB0ZXIpOwogCQlsZW1fdHhlb2Yo
YWRhcHRlcik7CkBAIC0zNDQ5LDggKzM0NDksOCBAQCBsZW1fZnJlZV9yZWNlaXZlX3N0cnVj
dHVyZXMoc3RydWN0IGFkYXB0CiAgKiAgCiAgKiAgRm9yIHBvbGxpbmcgd2UgYWxzbyBub3cg
cmV0dXJuIHRoZSBudW1iZXIgb2YgY2xlYW5lZCBwYWNrZXRzCiAgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Lwotc3RhdGljIGludAotbGVtX3J4ZW9mKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQg
Y291bnQpCitzdGF0aWMgYm9vbAorbGVtX3J4ZW9mKHN0cnVjdCBhZGFwdGVyICphZGFwdGVy
LCBpbnQgY291bnQsIGludCAqZG9uZSkKIHsKIAlzdHJ1Y3QgaWZuZXQJKmlmcCA9IGFkYXB0
ZXItPmlmcDs7CiAJc3RydWN0IG1idWYJKm1wOwpAQCAtMzQ2Niw4ICszNDY2LDEwIEBAIGxl
bV9yeGVvZihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IGMKIAkgICAgQlVTX0RNQVNZ
TkNfUE9TVFJFQUQpOwogCiAJaWYgKCEoKGN1cnJlbnRfZGVzYy0+c3RhdHVzKSAmIEUxMDAw
X1JYRF9TVEFUX0REKSkgeworCQlpZiAoZG9uZSAhPSBOVUxMKQorCQkJKmRvbmUgPSByeF9z
ZW50OwogCQlFTV9SWF9VTkxPQ0soYWRhcHRlcik7Ci0JCXJldHVybiAocnhfc2VudCk7CisJ
CXJldHVybiAoRkFMU0UpOwogCX0KIAogCXdoaWxlICgoY3VycmVudF9kZXNjLT5zdGF0dXMg
JiBFMTAwMF9SWERfU1RBVF9ERCkgJiYKQEAgLTM2MjYsOCArMzYyOCwxMCBAQCBkaXNjYXJk
OgogCWlmICgtLWkgPCAwKQogCQlpID0gYWRhcHRlci0+bnVtX3J4X2Rlc2MgLSAxOwogCUUx
MDAwX1dSSVRFX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1JEVCgwKSwgaSk7CisJaWYgKGRv
bmUgIT0gTlVMTCkKKwkJKmRvbmUgPSByeF9zZW50OwogCUVNX1JYX1VOTE9DSyhhZGFwdGVy
KTsKLQlyZXR1cm4gKHJ4X3NlbnQpOworCXJldHVybiAoY3VycmVudF9kZXNjLT5zdGF0dXMg
JiBFMTAwMF9SWERfU1RBVF9ERCk7CiB9CiAKICNpZm5kZWYgX19OT19TVFJJQ1RfQUxJR05N
RU5UCg==
--------------020608030802000604090208--

--------------enigF6A690C36A07BC733D80DCC7
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)

iEYEARECAAYFAkxEdpcACgkQLDqVQ9VXb8jz9ACfaLxQ+Y+z2ullaBPna0/0KrDT
bAYAoKW/S/STf/Y8EzULUKEd8l6bxGNJ
=zpqG
-----END PGP SIGNATURE-----

--------------enigF6A690C36A07BC733D80DCC7--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C447684.7010308>