Emu10k1 driver update

Rui Sousa (rui.p.m.sousa@clix.pt)
Tue, 9 Oct 2001 21:34:24 +0200 (CEST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--17496956-450392075-1002656064=:12595
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,

Attached a patch for the emu10k1 kernel driver against 2.4.11pre6.

Changes:
Mixer improvements.
Fixed a dead lock in emu10k1_volxxx_irqhandler.
Small code cleanup.

The patch against 2.4.10-ac10 can be found at:

ftp://opensource.creative.com/pub/dist/emu10k1-2.4.10-ac10-2.patch

(it's basically the same except for the Configure.help file)

Please apply,

Rui Sousa

--17496956-450392075-1002656064=:12595
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="emu10k1-2.4.11-pre6-1.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0110092134231.12595@sophia-sousar3.nice.mindpseed.com>
Content-Description: emu10k1 patch
Content-Disposition: attachment; filename="emu10k1-2.4.11-pre6-1.patch"

ZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmlnL0RvY3VtZW50YXRpb24v
Q29uZmlndXJlLmhlbHAgbGludXgtMi40LjExcHJlNi5lbXUxMGsxL0RvY3Vt
ZW50YXRpb24vQ29uZmlndXJlLmhlbHANCi0tLSBsaW51eC0yLjQuMTFwcmU2
Lm9yaWcvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlUdWUgT2N0ICA5
IDIwOjQ4OjU5IDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEv
RG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlUdWUgT2N0ICA5IDIwOjUz
OjM1IDIwMDENCkBAIC0xNTc1MiwyNSArMTU3NTIsMTggQEANCiBDcmVhdGl2
ZSBFTVUxMEsxIGJhc2VkIFBDSSBzb3VuZCBjYXJkcw0KIENPTkZJR19TT1VO
RF9FTVUxMEsxDQogICBTYXkgWSBvciBNIGlmIHlvdSBoYXZlIGEgUENJIHNv
dW5kIGNhcmQgdXNpbmcgdGhlIEVNVTEwSzEgY2hpcHNldCwNCi0gIHN1Y2gg
YXMgdGhlIENyZWF0aXZlIFNCTGl2ZSEsIFNCIFBDSTUxMiBvciBFbXUtQVBT
Lg0KKyAgc3VjaCBhcyB0aGUgdmFyaW91cyBDcmVhdGl2ZSBTQkxpdmUhLCBT
QiBQQ0k1MTIgb3IgRW11LUFQUy4NCiANCi0gIEZvciBtb3JlIGluZm9ybWF0
aW9uIGFib3V0IHRoZSBkZWdyZWUgb2Ygc3VwcG9ydCBmb3IgdGhlIGRpZmZl
cmVudA0KLSAgY2FyZCBtb2RlbHMgcGxlYXNlIGNoZWNrOg0KLQ0KLSAgICAg
ICBodHRwOi8vb3BlbnNvdXJjZS5jcmVhdGl2ZS5jb20NCisgIEZvciBtb3Jl
IGluZm9ybWF0aW9uIG9uIHRoaXMgZHJpdmVyIGFuZCB0aGUgZGVncmVlIG9m
IHN1cHBvcnQgZm9yIHRoZQ0KKyAgZGlmZmVyZW50IGNhcmQgbW9kZWxzIHBs
ZWFzZSBjaGVjayA8aHR0cDovL29wZW5zb3VyY2UuY3JlYXRpdmUuY29tPi4N
CiANCiAgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBsb2FkIGRzcCBtaWNyb2Nv
ZGUgcGF0Y2hlcyBpbnRvIHRoZSBFTVUxMEsxDQogICBjaGlwLiAgVGhlc2Ug
cGF0Y2hlcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgcmVhbCB0aW1lIHNvdW5k
IHByb2Nlc3NpbmcNCi0gIGVmZmVjdHMgd2hpY2ggaW5jbHVkZSBmb3IgZXhh
bXBsZTogc2lnbmFsIHJvdXRpbmcsIGJhc3MvdHJlYmxlIGNvbnRyb2wsDQot
ICBBQzMgcGFzc3Rocm91Z2gsIC4uLg0KLSAgVXNlcnNwYWNlIHRvb2xzIHRv
IGNyZWF0ZSBuZXcgcGF0Y2hlcyBhbmQgbG9hZC91bmxvYWQgdGhlbSBjYW4g
YmUgZm91bmQNCi0gIGF0IHRoZSBhYm92ZSBsaW5rLiBZb3UgbmVlZCB0byBn
ZXQgdGhlIHNvdXJjZSBzbmFwc2hvdCBhbmQgdGhlbiB0eXBlOg0KLQ0KLQkl
IG1ha2UgdG9vbHMNCi0JJSBtYWtlIGluc3RhbGwtdG9vbHMNCi0NCi0gIGlu
IHRoZSB0b3AgZGlyZWN0b3J5Lg0KLQ0KKyAgZWZmZWN0cyB3aGljaCBpbmNs
dWRlIGZvciBleGFtcGxlOiBzaWduYWwgcm91dGluZywgYmFzcy90cmVibGUN
CisgIGNvbnRyb2wsIEFDMyBwYXNzdGhyb3VnaCwgLi4uDQorICBVc2Vyc3Bh
Y2UgdG9vbHMgdG8gY3JlYXRlIG5ldyBwYXRjaGVzIGFuZCBsb2FkL3VubG9h
ZCB0aGVtIGNhbiBiZQ0KKyAgZm91bmQgYXQgPGh0dHA6Ly9vcGVuc291cmNl
LmNyZWF0aXZlLmNvbS9kaXN0Lmh0bWw+Lg0KKyANCiBDcmVhdGl2ZSBFTVUx
MEsxIE1JREkNCiBDT05GSUdfTUlESV9FTVUxMEsxDQogICBTYXkgWSBpZiB5
b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgT1NTIC9kZXYvc2VxdWVu
Y2VyIGludGVyZmFjZS4NCmRpZmYgLXVyIGxpbnV4LTIuNC4xMXByZTYub3Jp
Zy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvYXVkaW8uYyBsaW51eC0yLjQuMTFw
cmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2F1ZGlvLmMNCi0t
LSBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsx
L2F1ZGlvLmMJVGh1IE9jdCAgNCAyMjo1Nzo1OCAyMDAxDQorKysgbGludXgt
Mi40LjExcHJlNi5lbXUxMGsxL2RyaXZlcnMvc291bmQvZW11MTBrMS9hdWRp
by5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAwMQ0KQEAgLTQ5LDcgKzQ5LDYg
QEANCiAjaW5jbHVkZSAiaXJxbWdyLmgiDQogI2luY2x1ZGUgImF1ZGlvLmgi
DQogI2luY2x1ZGUgIjgwMTAuaCINCi0jaW5jbHVkZSAicGFzc3Rocm91Z2gu
aCINCiANCiBzdGF0aWMgdm9pZCBjYWxjdWxhdGVfb2ZyYWcoc3RydWN0IHdv
aW5zdCAqKTsNCiBzdGF0aWMgdm9pZCBjYWxjdWxhdGVfaWZyYWcoc3RydWN0
IHdpaW5zdCAqKTsNCkBAIC05ODQsNiArOTgzLDkgQEANCiAJdW5zaWduZWQg
bG9uZyBwZ29mZjsNCiAJaW50IHJkLCB3cjsNCiANCisJRFBGKDQsICJlbXUx
MGsxX21tX25vcGFnZSgpXG4iKTsNCisJRFBEKDQsICJhZGRyOiAlI2x4XG4i
LCBhZGRyZXNzKTsNCisNCiAJaWYgKGFkZHJlc3MgPiB2bWEtPnZtX2VuZCkg
ew0KIAkJRFBGKDIsICJFWElULCByZXR1cm5pbmcgTk9QQUdFX1NJR0JVU1xu
Iik7DQogCQlyZXR1cm4gTk9QQUdFX1NJR0JVUzsgLyogRGlzYWxsb3cgbXJl
bWFwICovDQpAQCAtMTAxMyw2ICsxMDE1LDggQEANCiAJfQ0KIA0KIAlnZXRf
cGFnZSAoZG1hcGFnZSk7DQorDQorCURQRCg0LCAicGFnZTogJSNseFxuIiwg
ZG1hcGFnZSk7DQogCXJldHVybiBkbWFwYWdlOw0KIH0NCiANCkBAIC0xMDIz
LDE0ICsxMDI3LDE0IEBADQogc3RhdGljIGludCBlbXUxMGsxX2F1ZGlvX21t
YXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
dm1hKQ0KIHsNCiAJc3RydWN0IGVtdTEwazFfd2F2ZWRldmljZSAqd2F2ZV9k
ZXYgPSAoc3RydWN0IGVtdTEwazFfd2F2ZWRldmljZSAqKSBmaWxlLT5wcml2
YXRlX2RhdGE7DQotCXVuc2lnbmVkIGxvbmcgbWF4c2l6ZSwgc2l6ZSwgb2Zm
c2V0LCBwZ29mZnNldDsNCisJdW5zaWduZWQgbG9uZyBtYXhfcGFnZXMsIG5f
cGFnZXMsIHBnb2Zmc2V0Ow0KIAlzdHJ1Y3Qgd29pbnN0ICp3b2luc3QgPSBO
VUxMOw0KIAlzdHJ1Y3Qgd2lpbnN0ICp3aWluc3QgPSBOVUxMOw0KIAl1bnNp
Z25lZCBsb25nIGZsYWdzOw0KIA0KIAlEUEYoMiwgImVtdTEwazFfYXVkaW9f
bW1hcCgpXG4iKTsNCiANCi0JbWF4c2l6ZSA9IDA7DQorCW1heF9wYWdlcyA9
IDA7DQogCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpIHsNCiAJCXdv
aW5zdCA9IHdhdmVfZGV2LT53b2luc3Q7DQogDQpAQCAtMTA1Myw3ICsxMDU3
LDcgQEANCiAJCX0NCiANCiAJCXdvaW5zdC0+bW1hcHBlZCA9IDE7DQotCQlt
YXhzaXplICs9IHdvaW5zdC0+YnVmZmVyLnBhZ2VzICogUEFHRV9TSVpFOw0K
KwkJbWF4X3BhZ2VzICs9IHdvaW5zdC0+YnVmZmVyLnBhZ2VzOw0KIAkJc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSgmd29pbnN0LT5sb2NrLCBmbGFncyk7DQog
CX0NCiANCkBAIC0xMDcyLDIxICsxMDc2LDIzIEBADQogCQl9DQogDQogCQl3
aWluc3QtPm1tYXBwZWQgPSAxOw0KLQkJbWF4c2l6ZSArPSB3aWluc3QtPmJ1
ZmZlci5wYWdlcyAqIFBBR0VfU0laRTsNCisJCW1heF9wYWdlcyArPSB3aWlu
c3QtPmJ1ZmZlci5wYWdlczsNCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
JndpaW5zdC0+bG9jaywgZmxhZ3MpOw0KIAl9DQogDQotCXNpemUgPSB2bWEt
PnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQ7DQorCW5fcGFnZXMgPSAoKHZtYS0+
dm1fZW5kIC0gdm1hLT52bV9zdGFydCkgKyBQQUdFX1NJWkUgLSAxKSA+PiBQ
QUdFX1NISUZUOw0KIAlwZ29mZnNldCA9IHZtYS0+dm1fcGdvZmY7DQotCW9m
ZnNldCA9IHBnb2Zmc2V0IDw8IFBBR0VfU0hJRlQ7DQogDQotCWlmIChvZmZz
ZXQgKyBzaXplID4gbWF4c2l6ZSkNCisJRFBEKDMsICJ2bWFfc3RhcnQ6ICUj
bHgsIHZtYV9lbmQ6ICUjbHgsIHZtYV9vZmZzZXQ6ICVkXG4iLCB2bWEtPnZt
X3N0YXJ0LCB2bWEtPnZtX2VuZCwgcGdvZmZzZXQpOw0KKwlEUEQoMywgIm5f
cGFnZXM6ICVkLCBtYXhfcGFnZXM6ICVkXG4iLCBuX3BhZ2VzLCBtYXhfcGFn
ZXMpOw0KKw0KKwlpZiAocGdvZmZzZXQgKyBuX3BhZ2VzID4gbWF4X3BhZ2Vz
KQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQogCXZtYS0+dm1fZmxhZ3MgfD0g
Vk1fUkVTRVJWRUQ7DQogCXZtYS0+dm1fb3BzID0gJmVtdTEwazFfbW1fb3Bz
Ow0KIAl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IHdhdmVfZGV2Ow0KLQkNCisN
CiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTEyNDAsOSArMTI0NiwxMSBAQA0K
IA0KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJndvaW5zdC0+bG9jaywgZmxhZ3Mp
Ow0KIA0KLQkJaWYgKHdvaW5zdC0+Zm9ybWF0LnBhc3N0aHJvdWdoICYmIGNh
cmQtPnB0LnN0YXRlICE9IFBUX1NUQVRFX0lOQUNUSVZFKQ0KKwkJaWYgKHdv
aW5zdC0+Zm9ybWF0LnBhc3N0aHJvdWdoICYmIGNhcmQtPnB0LnN0YXRlICE9
IFBUX1NUQVRFX0lOQUNUSVZFKSB7DQorCQkJc3Bpbl9sb2NrKCZjYXJkLT5w
dC5sb2NrKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBlbXUxMGsxX3B0
X3N0b3AoY2FyZCk7DQotDQorCQkJc3Bpbl91bmxvY2soJmNhcmQtPnB0Lmxv
Y2spOw0KKwkJfQ0KIAkJaWYgKHdvaW5zdC0+c3RhdGUgJiBXQVZFX1NUQVRF
X09QRU4pIHsNCiAJCQlpZiAod29pbnN0LT5zdGF0ZSAmIFdBVkVfU1RBVEVf
U1RBUlRFRCkgew0KIAkJCQlpZiAoIShmaWxlLT5mX2ZsYWdzICYgT19OT05C
TE9DSykpIHsNCkBAIC0xMjU5LDcgKzEyNjcsNyBAQA0KIAkJfQ0KIA0KIAkJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd29pbnN0LT5sb2NrLCBmbGFncyk7
DQotCQkvKiB3YWl0IGZvciB0aGUgdGFza2xldCAoYm90dG9tLWhhbGYpIHRv
IGZpbmlzaCAqLw0KKwkJLyogcmVtb3ZlIHRoZSB0YXNrbGV0ICovDQogCQl0
YXNrbGV0X2tpbGwoJndvaW5zdC0+dGltZXIudGFza2xldCk7DQogCQlrZnJl
ZSh3YXZlX2Rldi0+d29pbnN0KTsNCiAJfQ0KQEAgLTE1MDUsOSArMTUxMywx
MCBAQA0KIA0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ3aWluc3QtPmxv
Y2ssIGZsYWdzKTsNCiANCi0JaWYgKGJ5dGVzdG9jb3B5ID49IHdpaW5zdC0+
YnVmZmVyLmZyYWdtZW50X3NpemUgJiYgd2FpdHF1ZXVlX2FjdGl2ZSgmd2lp
bnN0LT53YWl0X3F1ZXVlKSkNCi0JCXdha2VfdXBfaW50ZXJydXB0aWJsZSgm
d2lpbnN0LT53YWl0X3F1ZXVlKTsNCi0JZWxzZQ0KKwlpZiAoYnl0ZXN0b2Nv
cHkgPj0gd2lpbnN0LT5idWZmZXIuZnJhZ21lbnRfc2l6ZSkgew0KKwkgCWlm
ICh3YWl0cXVldWVfYWN0aXZlKCZ3aWluc3QtPndhaXRfcXVldWUpKQ0KKwkJ
CXdha2VfdXBfaW50ZXJydXB0aWJsZSgmd2lpbnN0LT53YWl0X3F1ZXVlKTsN
CisJfSBlbHNlDQogCQlEUEQoMywgIk5vdCBlbm91Z2ggdHJhbnNmZXIgc2l6
ZSwgJWRcbiIsIGJ5dGVzdG9jb3B5KTsNCiANCiAJcmV0dXJuOw0KQEAgLTE1
MzksOSArMTU0OCwxMCBAQA0KIAl9IGVsc2UNCiAJCXNwaW5fdW5sb2NrX2ly
cXJlc3RvcmUoJndvaW5zdC0+bG9jaywgZmxhZ3MpOw0KIA0KLQlpZiAoYnl0
ZXN0b2NvcHkgPj0gd29pbnN0LT5idWZmZXIuZnJhZ21lbnRfc2l6ZSAmJiB3
YWl0cXVldWVfYWN0aXZlKCZ3b2luc3QtPndhaXRfcXVldWUpKQ0KLQkJd2Fr
ZV91cF9pbnRlcnJ1cHRpYmxlKCZ3b2luc3QtPndhaXRfcXVldWUpOw0KLQll
bHNlDQorCWlmIChieXRlc3RvY29weSA+PSB3b2luc3QtPmJ1ZmZlci5mcmFn
bWVudF9zaXplKSB7DQorCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmd29pbnN0
LT53YWl0X3F1ZXVlKSkNCisJCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJndv
aW5zdC0+d2FpdF9xdWV1ZSk7DQorCX0gZWxzZQ0KIAkJRFBEKDMsICJOb3Qg
ZW5vdWdoIHRyYW5zZmVyIHNpemUgLT4gJWRcbiIsIGJ5dGVzdG9jb3B5KTsN
CiANCiAJcmV0dXJuOw0KZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmln
L2RyaXZlcnMvc291bmQvZW11MTBrMS9lZnhtZ3IuYyBsaW51eC0yLjQuMTFw
cmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2VmeG1nci5jDQot
LS0gbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBr
MS9lZnhtZ3IuYwlTYXQgQXVnIDExIDA2OjAyOjE4IDIwMDENCisrKyBsaW51
eC0yLjQuMTFwcmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2Vm
eG1nci5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAwMQ0KQEAgLTEsNCArMSw0
IEBADQotLyogICAgIA0KKy8qDQogICoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioNCiAgKiAgICAgZWZ4bWdyLmMNCiAgKiAgICAgQ29weXJpZ2h0IDE5OTks
IDIwMDAgQ3JlYXRpdmUgTGFicywgSW5jLiANCkBAIC00OSw3ICs0OSw3IEBA
DQogCQlnb3RvIG1hdGNoOw0KIAl9DQogDQotCWZvcihpID0gMDsgaSA8IG1n
ci0+Y3VycmVudF9wYWdlcyAqIFBBVENIRVNfUEVSX1BBR0U7IGkrKykgew0K
Kwlmb3IgKGkgPSAwOyBpIDwgbWdyLT5jdXJyZW50X3BhZ2VzICogUEFUQ0hF
U19QRVJfUEFHRTsgaSsrKSB7DQogCQlwYXRjaCA9IFBBVENIKG1nciwgaSk7
DQogCQkJc3ByaW50ZihzLCIlcyIsIHBhdGNoLT5uYW1lKTsNCiANCkBAIC05
Nyw3NyArOTcsODEgQEANCiANCiAvL0FuIGludGVybmFsIGZ1bmN0aW9uIGZv
ciBzZXR0aW5nIE9TUyBtaXhlciBjb250cm9scy4NCiB2b2lkIGVtdTEwazFf
c2V0X29zc192b2woc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IG9z
c19taXhlciwNCi0JCQkgdW5zaWduZWQgaW50IGxlZnQsIHVuc2lnbmVkIGlu
dCByaWdodCl7DQotDQotCWV4dGVybiBzdHJ1Y3Qgb3NzX3NjYWxpbmcgdm9s
dW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNdOw0KKwkJCSB1bnNp
Z25lZCBpbnQgbGVmdCwgdW5zaWduZWQgaW50IHJpZ2h0KQ0KK3sNCisJZXh0
ZXJuIGNoYXIgdm9sdW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNd
Ow0KIA0KIAljYXJkLT5hYzk3Lm1peGVyX3N0YXRlW29zc19taXhlcl0gPSAo
cmlnaHQgPDwgOCkgfCBsZWZ0Ow0KIA0KIAlpZiAoIWNhcmQtPmlzYXBzKQ0K
IAkJY2FyZC0+YWM5Ny53cml0ZV9taXhlcigmY2FyZC0+YWM5Nywgb3NzX21p
eGVyLCBsZWZ0LCByaWdodCk7DQotDQogCQ0KIAllbXUxMGsxX3NldF92b2x1
bWVfZ3ByKGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzBd
LCBsZWZ0LA0KLQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0u
c2NhbGUsDQotCQkJICAgICAgIHZvbHVtZV9wYXJhbXNbb3NzX21peGVyXS5t
dXRpbmcpOw0KLQllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNhcmQsIGNhcmQt
Pm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdodCwNCi0JCQkgICAg
ICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdLnNjYWxlLA0KLQkJCSAgICAg
ICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0ubXV0aW5nKTsNCisJCQkgICAg
ICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdKTsNCiANCisJZW11MTBrMV9z
ZXRfdm9sdW1lX2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21p
eGVyXVsxXSwgcmlnaHQsDQorCQkJICAgICAgIHZvbHVtZV9wYXJhbXNbb3Nz
X21peGVyXSk7DQogfQ0KIA0KLQ0KIC8vRklYTUU6IG11dGUgc2hvdWxkIHVu
bXV0ZSB3aGVuIHByZXNzZWQgYSBzZWNvbmQgdGltZQ0KIHZvaWQgZW11MTBr
MV9tdXRlX2lycWhhbmRsZXIoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCkN
CiB7DQotCXN0cnVjdCBwYXRjaF9tYW5hZ2VyICptZ3IgPSAmY2FyZC0+bWdy
Ow0KLQl1bnNpZ25lZCBsb25nICBmbGFnczsNCisJaW50IG9zc19jaGFubmVs
ID0gVk9MQ1RSTF9DSEFOTkVMOw0KKwlpbnQgbGVmdCwgcmlnaHQ7DQorCXN0
YXRpYyBpbnQgdmFsID0gMDsNCisNCisJaWYgKHZhbCkgew0KKwkJbGVmdCA9
IHZhbCAmIDB4ZmY7DQorCQlyaWdodCA9ICh2YWwgPj4gOCkgJiAweGZmOw0K
KwkJdmFsID0gMDsNCisJfSBlbHNlIHsNCisJCXZhbCA9IGNhcmQtPmFjOTcu
bWl4ZXJfc3RhdGVbb3NzX2NoYW5uZWxdOw0KKwkJbGVmdCA9IDA7DQorCQly
aWdodCA9IDA7DQorCX0NCiANCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+
bG9jaywgZmxhZ3MpOw0KLQllbXUxMGsxX3NldF9vc3Nfdm9sKGNhcmQsVk9M
Q1RSTF9DSEFOTkVMLDAsMCk7DQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
Jm1nci0+bG9jaywgZmxhZ3MpOw0KKwllbXUxMGsxX3NldF9vc3Nfdm9sKGNh
cmQsIG9zc19jaGFubmVsLCBsZWZ0LCByaWdodCk7DQogfQ0KIA0KIHZvaWQg
ZW11MTBrMV92b2xpbmNyX2lycWhhbmRsZXIoc3RydWN0IGVtdTEwazFfY2Fy
ZCAqY2FyZCkNCiB7DQotCXN0cnVjdCBwYXRjaF9tYW5hZ2VyICptZ3IgPSAm
Y2FyZC0+bWdyOw0KLQl1bnNpZ25lZCBsb25nICBmbGFnczsNCi0JdW5zaWdu
ZWQgaW50IG9zc19jaGFubmVsPVZPTENUUkxfQ0hBTk5FTCwgbGVmdD0wLHJp
Z2h0PTA7DQorCWludCBvc3NfY2hhbm5lbCA9IFZPTENUUkxfQ0hBTk5FTDsN
CisJaW50IGxlZnQsIHJpZ2h0Ow0KIA0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm
bWdyLT5sb2NrLCBmbGFncyk7DQogCWxlZnQgPSBjYXJkLT5hYzk3Lm1peGVy
X3N0YXRlW29zc19jaGFubmVsXSAmIDB4ZmY7DQogCXJpZ2h0ID0gKGNhcmQt
PmFjOTcubWl4ZXJfc3RhdGVbb3NzX2NoYW5uZWxdID4+IDgpICYgMHhmZjsN
CiANCi0JaWYoKGxlZnQrPVZPTENUUkxfU1RFUF9TSVpFICk+MTAwKQ0KLQkJ
bGVmdD0xMDA7DQotCWlmKChyaWdodCs9Vk9MQ1RSTF9TVEVQX1NJWkUgKT4x
MDApDQotCQlyaWdodD0xMDA7DQotCWVtdTEwazFfc2V0X29zc192b2woY2Fy
ZCxvc3NfY2hhbm5lbCxsZWZ0LHJpZ2h0KTsNCi0Jc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSgmbWdyLT5sb2NrLCBmbGFncyk7CQ0KKwlpZiAoKGxlZnQgKz0g
Vk9MQ1RSTF9TVEVQX1NJWkUpID4gMTAwKQ0KKwkJbGVmdCA9IDEwMDsNCisN
CisJaWYgKChyaWdodCArPSBWT0xDVFJMX1NURVBfU0laRSkgPiAxMDApDQor
CQlyaWdodCA9IDEwMDsNCisNCisJZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJk
LCBvc3NfY2hhbm5lbCwgbGVmdCwgcmlnaHQpOw0KIH0NCisNCiB2b2lkIGVt
dTEwazFfdm9sZGVjcl9pcnFoYW5kbGVyKHN0cnVjdCBlbXUxMGsxX2NhcmQg
KmNhcmQpDQogew0KLQlzdHJ1Y3QgcGF0Y2hfbWFuYWdlciAqbWdyID0gJmNh
cmQtPm1ncjsNCi0JdW5zaWduZWQgbG9uZyAgZmxhZ3M7DQotCWludCBvc3Nf
Y2hhbm5lbD1WT0xDVFJMX0NIQU5ORUwsIGxlZnQ9MCxyaWdodD0wOw0KKwlp
bnQgb3NzX2NoYW5uZWwgPSBWT0xDVFJMX0NIQU5ORUw7DQorCWludCBsZWZ0
LCByaWdodDsNCiANCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+bG9jaywg
ZmxhZ3MpOw0KIAlsZWZ0ID0gY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3Nf
Y2hhbm5lbF0gJiAweGZmOw0KIAlyaWdodCA9IChjYXJkLT5hYzk3Lm1peGVy
X3N0YXRlW29zc19jaGFubmVsXSA+PiA4KSAmIDB4ZmY7DQogDQotCWlmKChs
ZWZ0LT1WT0xDVFJMX1NURVBfU0laRSApPDApDQotCQlsZWZ0PTA7DQotCWlm
KChyaWdodC09Vk9MQ1RSTF9TVEVQX1NJWkUgKTwwKQ0KLQkJcmlnaHQ9MDsN
Ci0JZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJkLG9zc19jaGFubmVsLGxlZnQs
cmlnaHQpOw0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZ3ItPmxvY2ss
IGZsYWdzKTsNCi19DQorCWlmICgobGVmdCAtPSBWT0xDVFJMX1NURVBfU0la
RSkgPCAwKQ0KKwkJbGVmdCA9IDA7DQogDQorCWlmICgocmlnaHQgLT0gVk9M
Q1RSTF9TVEVQX1NJWkUpIDwgMCkNCisJCXJpZ2h0ID0gMDsNCiANCi12b2lk
IGVtdTEwazFfc2V0X3ZvbHVtZV9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAq
Y2FyZCwgaW50IGFkZHIsIHMzMiB2b2wsIGludCBzY2FsZSwgaW50IG11dGlu
ZykNCisJZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJkLCBvc3NfY2hhbm5lbCwg
bGVmdCwgcmlnaHQpOw0KK30NCisNCit2b2lkIGVtdTEwazFfc2V0X3ZvbHVt
ZV9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IGFkZHIsIHMz
MiB2b2wsIGludCBzY2FsZSkNCiB7DQogCXN0cnVjdCBwYXRjaF9tYW5hZ2Vy
ICptZ3IgPSAmY2FyZC0+bWdyOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0K
KwlpbnQgbXV0aW5nOw0KIA0KIAljb25zdCBzMzIgbG9nMmxpbls1XSA9eyAg
ICAgICAgICAgICAgICAgIC8vICBhdHRlbnVhdGlvbiAoZEIpDQogCQkweDdm
ZmZmZmZmLCAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAwLjAgICAg
ICAgICANCkBAIC0xNzksMTAgKzE4MywxMiBAQA0KIAlpZiAoYWRkciA8IDAp
DQogCQlyZXR1cm47DQogDQorCW11dGluZyA9IChzY2FsZSA9PSAweDEwKSA/
IDB4N2Y6IHNjYWxlOw0KKwkNCiAJdm9sID0gKDEwMCAtIHZvbCApICogc2Nh
bGUgLyAxMDA7DQogDQogCS8vIFRoYW5rcyB0byB0aGUgY29tcC5kc3AgbmV3
c2dyb3VwIGZvciB0aGlzIG5lYXQgdHJpY2s6DQotCXZvbCA9IHZvbCA+PSBt
dXRpbmcgPyAwOiBsb2cybGluW3ZvbCYzXT4+KHZvbD4+Mik7DQorCXZvbCA9
ICh2b2wgPj0gbXV0aW5nKSA/IDAgOiAobG9nMmxpblt2b2wgJiAzXSA+PiAo
dm9sID4+IDIpKTsNCiANCiAJc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+bG9j
aywgZmxhZ3MpOw0KIAllbXUxMGsxX3NldF9jb250cm9sX2dwcihjYXJkLCBh
ZGRyLCB2b2wsIDApOw0KQEAgLTE5NywxNSArMjAzLDE2IEBADQogCQl1MzIg
YmM7DQogCQliYyA9IHNibGl2ZV9yZWFkcHRyKGNhcmQsIEdQUl9CQVNFICsg
Y2FyZC0+cHQuaW50cl9ncHIsIDApOw0KIAkJaWYgKGJjICE9IDApIHsNCi0J
CQlzcGluX2xvY2tfaXJxc2F2ZSgmY2FyZC0+bG9jaywgZmxhZ3MpOw0KKwkJ
CURQRCgzLCAicHQgaW50ZXJydXB0LCBiYyA9ICVkXG4iLCBiYyk7DQorCQkJ
c3Bpbl9sb2NrX2lycXNhdmUoJmNhcmQtPnB0LmxvY2ssIGZsYWdzKTsNCiAJ
CQljYXJkLT5wdC5ibG9ja3NfcGxheWVkID0gYmM7DQogCQkJaWYgKGNhcmQt
PnB0LmJsb2Nrc19wbGF5ZWQgPj0gY2FyZC0+cHQuYmxvY2tzX2NvcGllZCkg
ew0KIAkJCQlEUEYoMSwgImJ1ZmZlciB1bmRlcnJ1biBpbiBwYXNzdGhyb3Vn
aCBwbGF5YmFja1xuIik7DQogCQkJCWVtdTEwazFfcHRfc3RvcChjYXJkKTsN
CiAJCQl9DQogCQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZjYXJkLT5wdC53
YWl0KTsNCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5sb2Nr
LCBmbGFncyk7DQotCQkJRFBEKDMsICJwdCBpbnRlcnJ1cHQsIGJjID0gJWRc
biIsIGJjKTsNCisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5w
dC5sb2NrLCBmbGFncyk7DQogCQl9DQogCX0NCiB9DQorDQpkaWZmIC11ciBs
aW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2Vm
eG1nci5oIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5k
L2VtdTEwazEvZWZ4bWdyLmgNCi0tLSBsaW51eC0yLjQuMTFwcmU2Lm9yaWcv
ZHJpdmVycy9zb3VuZC9lbXUxMGsxL2VmeG1nci5oCVNhdCBBdWcgMTEgMDY6
MDI6MTggMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2
ZXJzL3NvdW5kL2VtdTEwazEvZWZ4bWdyLmgJVHVlIE9jdCAgOSAyMDo1Mzoz
NSAyMDAxDQpAQCAtNjYsNyArNjYsOCBAQA0KIA0KICAgICAgICAgdTMyIGdw
cl91c2VkW05VTV9HUFJTIC8gMzJdOyAgICAvKiBiaXRtYXAgb2YgdXNlZCBn
cHJzICovDQogICAgICAgICB1MzIgZ3ByX2lucHV0W05VTV9HUFJTIC8gMzJd
Ow0KLSAgICAgICAgdTggdHJhbWxfaXN0YXJ0OyAgLyogc3RhcnRpbmcgYWRk
cmVzcyBvZiB0aGUgaW50ZXJuYWwgdHJhbSBsaW5lcyB1c2VkICovICAgICAg
ICB1OCB0cmFtbF9pc2l6ZTsgICAvKiBudW1iZXIgb2YgaW50ZXJuYWwgdHJh
bSBsaW5lcyB1c2VkICovDQorICAgICAgICB1OCB0cmFtbF9pc3RhcnQ7ICAv
KiBzdGFydGluZyBhZGRyZXNzIG9mIHRoZSBpbnRlcm5hbCB0cmFtIGxpbmVz
IHVzZWQgKi8NCisgICAgICAgIHU4IHRyYW1sX2lzaXplOyAgIC8qIG51bWJl
ciBvZiBpbnRlcm5hbCB0cmFtIGxpbmVzIHVzZWQgKi8NCiANCiAgICAgICAg
IHU4IHRyYW1sX2VzdGFydDsNCiAgICAgICAgIHU4IHRyYW1sX2VzaXplOw0K
QEAgLTk3LDEwICs5OCw2IEBADQogI2RlZmluZSBHUFJfQkFTRSAweDEwMA0K
ICNkZWZpbmUgT1VUUFVUX0JBU0UgMHgyMA0KIA0KLS8vV2UgY2FuIGdldCB0
aGlzIGluZm8gYnkgbG9va2luZyBhdCB0aGUgY29kZSBzdGFydA0KLS8vI2Rl
ZmluZSBQQVRDSF9UWVBFX0lOUFVUICAgICAgICAweDENCi0vLyNkZWZpbmUg
UEFUQ0hfVFlQRV9PVVRQVVQgICAgICAgMHgyDQotDQogI2RlZmluZSBNQVhf
UEFUQ0hFU19QQUdFUyAzMg0KIA0KIHN0cnVjdCBwYXRjaF9tYW5hZ2VyIHsN
CkBAIC0xMzksNiArMTM2LDE0IEBADQogDQogI2RlZmluZSBQQ00xX0lOX0wg
ICAgICAgIDB4MDQNCiAjZGVmaW5lIFBDTTFfSU5fUiAgICAgICAgMHgwNQ0K
Ky8vbXV0aWxjaGFubmVsIHBsYXliYWNrIHN0cmVhbSBhcHBlYXIgaGVyZToN
CisNCisjZGVmaW5lIE1VTFRJX0ZST05UX0wJMHgwOA0KKyNkZWZpbmUgTVVM
VElfRlJPTlRfUgkweDA5DQorI2RlZmluZSBNVUxUSV9SRUFSX0wJMHgwYQ0K
KyNkZWZpbmUgTVVMVElfUkVBUl9SCTB4MGINCisjZGVmaW5lIE1VTFRJX0NF
TlRFUgkweDBjDQorI2RlZmluZSBNVUxUSV9MRkUJMHgwZA0KIA0KICNkZWZp
bmUgQUM5N19JTl9MCTB4MTANCiAjZGVmaW5lIEFDOTdfSU5fUgkweDExDQpA
QCAtMTUwLDEwICsxNTUsMTcgQEANCiAjZGVmaW5lIEFDOTdfRlJPTlRfUgkw
eDIxDQogI2RlZmluZSBESUdJVEFMX09VVF9MCTB4MjINCiAjZGVmaW5lIERJ
R0lUQUxfT1VUX1IJMHgyMw0KKyNkZWZpbmUgRElHSVRBTF9DRU5URVIJMHgy
NA0KKyNkZWZpbmUgRElHSVRBTF9MRkUJMHgyNQ0KKw0KICNkZWZpbmUgQU5B
TE9HX1JFQVJfTAkweDI4DQogI2RlZmluZSBBTkFMT0dfUkVBUl9SCTB4MjkN
CiAjZGVmaW5lIEFEQ19SRUNfTAkweDJhDQogI2RlZmluZSBBRENfUkVDX1IJ
MHgyYg0KKw0KKyNkZWZpbmUgQU5BTE9HX0NFTlRFUgkweDMxDQorI2RlZmlu
ZSBBTkFMT0dfTEZFCTB4MzINCisNCiANCiAjZGVmaW5lIElOUFVUX1BBVENI
X1NUQVJUKHBhdGNoLCBubSwgbG4sIGkpCQlcDQogZG8gewkJCQkJCQlcDQpk
aWZmIC11ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9l
bXUxMGsxL2h3YWNjZXNzLmggbGludXgtMi40LjExcHJlNi5lbXUxMGsxL2Ry
aXZlcnMvc291bmQvZW11MTBrMS9od2FjY2Vzcy5oDQotLS0gbGludXgtMi40
LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBrMS9od2FjY2Vzcy5o
CVdlZCBBdWcgMTUgMTA6MjI6MTYgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXBy
ZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5kL2VtdTEwazEvaHdhY2Nlc3MuaAlU
dWUgT2N0ICA5IDIwOjUzOjM1IDIwMDENCkBAIC0zOCw4ICszOCw4IEBADQog
I2luY2x1ZGUgPGxpbnV4L2FjOTdfY29kZWMuaD4NCiAjaW5jbHVkZSA8bGlu
dXgvcGNpLmg+DQogDQotI2luY2x1ZGUgInBhc3N0aHJvdWdoLmgiDQogI2lu
Y2x1ZGUgImVmeG1nci5oIg0KKyNpbmNsdWRlICJwYXNzdGhyb3VnaC5oIg0K
ICNpbmNsdWRlICJtaWRpLmgiDQogDQogI2RlZmluZSBFTVVQQUdFU0laRSAg
ICAgNDA5NiAgICAgICAgICAgIC8qIGRvbid0IGNoYW5nZSAqLw0KQEAgLTEy
MiwxMCArMTIyLDEwIEBADQogI2RlZmluZSBDTURfU0VUR1BSMk9TUwkJX0lP
VygnRCcsIDE2LCBzdHJ1Y3QgbWl4ZXJfcHJpdmF0ZV9pb2N0bCkNCiAjZGVm
aW5lIENNRF9TRVRNQ0hfRlgJCV9JT1coJ0QnLCAxNywgc3RydWN0IG1peGVy
X3ByaXZhdGVfaW9jdGwpDQogI2RlZmluZSBDTURfU0VUUEFTU1RIUk9VR0gJ
X0lPVygnRCcsIDE4LCBzdHJ1Y3QgbWl4ZXJfcHJpdmF0ZV9pb2N0bCkNCisj
ZGVmaW5lIENNRF9QUklWQVRFM19WRVJTSU9OCV9JT1coJ0QnLCAxOSwgc3Ry
dWN0IG1peGVyX3ByaXZhdGVfaW9jdGwpDQogDQotc3RydWN0IG9zc19zY2Fs
aW5nIHsNCi0JY2hhciBzY2FsZSwgbXV0aW5nOw0KLX07IA0KKy8vdXAgdGhp
cyBudW1iZXIgd2hlbiBicmVha2luZyBjb21wYXRpYmlsaXR5DQorI2RlZmlu
ZSBQUklWQVRFM19WRVJTSU9OIDENCiANCiBzdHJ1Y3QgZW11MTBrMV9jYXJk
IA0KIHsNCkBAIC0xOTIsMTIgKzE5MiwxMiBAQA0KIGludCBlbXUxMGsxX2Zp
bmRfY29udHJvbF9ncHIoc3RydWN0IHBhdGNoX21hbmFnZXIgKiwgY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOw0KIHZvaWQgZW11MTBrMV9zZXRfY29u
dHJvbF9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAqLCBpbnQgLCBzMzIsIGlu
dCApOw0KIA0KLXZvaWQgZW11MTBrMV9zZXRfdm9sdW1lX2dwcihzdHJ1Y3Qg
ZW11MTBrMV9jYXJkICosIGludCwgczMyLCBpbnQsIGludCk7DQordm9pZCBl
bXUxMGsxX3NldF92b2x1bWVfZ3ByKHN0cnVjdCBlbXUxMGsxX2NhcmQgKiwg
aW50LCBzMzIsIGludCk7DQogDQogDQotI2RlZmluZSBWT0xfNkJJVCAweDQw
LDB4NDANCi0jZGVmaW5lIFZPTF81QklUIDB4MjAsMHgyMA0KLSNkZWZpbmUg
Vk9MXzRCSVQgMHgxMCwweDdmDQorI2RlZmluZSBWT0xfNkJJVCAweDQwDQor
I2RlZmluZSBWT0xfNUJJVCAweDIwDQorI2RlZmluZSBWT0xfNEJJVCAweDEw
DQogDQogI2RlZmluZSBUSU1FT1VUIAkJICAgIDE2Mzg0DQogDQpkaWZmIC11
ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsx
L21haW4uYyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEvZHJpdmVycy9zb3Vu
ZC9lbXUxMGsxL21haW4uYw0KLS0tIGxpbnV4LTIuNC4xMXByZTYub3JpZy9k
cml2ZXJzL3NvdW5kL2VtdTEwazEvbWFpbi5jCVR1ZSBPY3QgIDkgMjA6NDk6
MzAgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJz
L3NvdW5kL2VtdTEwazEvbWFpbi5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAw
MQ0KQEAgLTY2LDcgKzY2LDEwIEBADQogICogICAgICAgICAgQWRkZWQgU3Vw
cG9ydCBmb3IgNS4xIGNhcmRzIChkaWdpdGFsIG91dCBhbmQgdGhlIHRoaXJk
IGFuYWxvZyBvdXQpDQogICogICAgIDAuMTUgQWRkZWQgU2VxdWVuY2VyIFN1
cHBvcnQgKERhbmllbCBNYWNrKQ0KICAqICAgICAgICAgIFN1cHBvcnQgZm9y
IG11bHRpY2hhbm5lbCBwY20gcGxheWJhY2sgKEVkdWFyZCBIYXNlbmxlaXRo
bmVyKQ0KLSAqICAgICAgICAgIA0KKyAqICAgICAwLjE2IE1peGVyIGltcHJv
dmVtZW50cywgYWRkZWQgb2xkIHRyZWJsZS9iYXNzIHN1cHBvcnQgKERhbmll
bCBCZXJ0cmFuZCkNCisgKiAgICAgICAgICBTbWFsbCBjb2RlIGZvcm1hdCBj
bGVhbnVwLg0KKyAqICAgICAgICAgIERlYWRsb2NrIGJ1ZyBmaXggZm9yIGVt
dTEwazFfdm9seHh4X2lycWhhbmRsZXIoKS4NCisgKg0KICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovDQogDQogLyogVGhlc2UgYXJlIG9ubHkgaW5jbHVk
ZWQgb25jZSBwZXIgbW9kdWxlICovDQpAQCAtOTksNyArMTAyLDcgQEANCiAj
ZGVmaW5lIFNORENBUkRfRU1VMTBLMSA0Ng0KICNlbmRpZg0KICANCi0jZGVm
aW5lIERSSVZFUl9WRVJTSU9OICIwLjE1Ig0KKyNkZWZpbmUgRFJJVkVSX1ZF
UlNJT04gIjAuMTYiDQogDQogLyogRklYTUU6IGlzIHRoaXMgcmlnaHQ/ICov
DQogLyogZG9lcyB0aGUgY2FyZCBzdXBwb3J0IDMyIGJpdCBidXMgbWFzdGVy
PyovDQpAQCAtMjE2LDcgKzIxOSw3IEBADQogDQogCWNhcmQtPmFjOTcucHJp
dmF0ZV9kYXRhID0gY2FyZDsNCiANCi0JaWYoIWNhcmQtPmlzYXBzKSB7DQor
CWlmICghY2FyZC0+aXNhcHMpIHsNCiAJCWNhcmQtPmFjOTcuaWQgPSAwOw0K
IAkJY2FyZC0+YWM5Ny5jb2RlY19yZWFkID0gZW11MTBrMV9hYzk3X3JlYWQ7
DQogICAgICAgICAJY2FyZC0+YWM5Ny5jb2RlY193cml0ZSA9IGVtdTEwazFf
YWM5N193cml0ZTsNCkBAIC0yMjcsOCArMjMwLDEwIEBADQogCQl9DQogCQkv
KiA1LjE6IEVuYWJsZSB0aGUgYWRkaXRpb25hbCBBQzk3IFNsb3RzLiBJZiB0
aGUgZW11MTBrMSB2ZXJzaW9uDQogCQkJZG9lcyBub3Qgc3VwcG9ydCB0aGlz
LCBpdCBzaG91bGRuJ3QgZG8gYW55IGhhcm0gKi8NCi0JCXNibGl2ZV93cml0
ZXB0cihjYXJkLCBBQzk3U0xPVCwgMCwgQUM5N1NMT1RfQ05UUnxBQzk3U0xP
VF9MRkUpOw0KLQkJDQorCQlzYmxpdmVfd3JpdGVwdHIoY2FyZCwgQUM5N1NM
T1QsIDAsIEFDOTdTTE9UX0NOVFIgfCBBQzk3U0xPVF9MRkUpOw0KKw0KKwkJ
Ly8gRm9yY2UgNWJpdA0KKwkJLy9jYXJkLT5hYzk3LmJpdF9yZXNvbHV0aW9u
PTU7DQogDQogCQlpZiAoIXByb2NfbWtkaXIgKCJkcml2ZXIvZW11MTBrMSIs
IDApKSB7DQogCQkJcHJpbnRrKEtFUk5fRVJSICJlbXUxMGsxOiB1bmFibGUg
dG8gY3JlYXRlIHByb2MgZGlyZWN0b3J5IGRyaXZlci9lbXUxMGsxXG4iKTsN
CkBAIC0yNDcsNiArMjUyLDcgQEANCiAJCQlnb3RvIGVycl9hYzk3X3Byb2M7
DQogCQl9DQogDQorCQkvKiB0aGVzZSB3aWxsIHN0b3JlIHRoZSBvcmlnaW5h
bCB2YWx1ZXMgYW5kIG5ldmVyIGJlIG1vZGlmaWVkICovDQogCQljYXJkLT5h
Yzk3X3N1cHBvcnRlZF9taXhlcnMgPSBjYXJkLT5hYzk3LnN1cHBvcnRlZF9t
aXhlcnM7DQogCQljYXJkLT5hYzk3X3N0ZXJlb19taXhlcnMgPSBjYXJkLT5h
Yzk3LnN0ZXJlb19taXhlcnM7DQogCX0NCkBAIC0yNjgsNyArMjc0LDcgQEAN
CiB7DQogCWNoYXIgc1szMl07DQogDQotCWlmKCFjYXJkLT5pc2Fwcykgew0K
KwlpZiAoIWNhcmQtPmlzYXBzKSB7DQogCQlzcHJpbnRmKHMsICJkcml2ZXIv
ZW11MTBrMS8lcy9hYzk3IiwgY2FyZC0+cGNpX2Rldi0+c2xvdF9uYW1lKTsN
CiAJCXJlbW92ZV9wcm9jX2VudHJ5KHMsIE5VTEwpOw0KIA0KQEAgLTMzMyw3
ICszMzksNyBAQA0KIA0KICNpZmRlZiBFTVUxMEsxX1NFUVVFTkNFUg0KIAlj
YXJkLT5zZXFfZGV2ID0gc291bmRfYWxsb2NfbWlkaWRldigpOw0KLQlpZihj
YXJkLT5zZXFfZGV2ID09IC0xKQ0KKwlpZiAoY2FyZC0+c2VxX2RldiA9PSAt
MSkNCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJlbXUxMGsxOiB1bmFibGUg
dG8gcmVnaXN0ZXIgc2VxdWVuY2VyIGRldmljZSEiKTsNCiAJZWxzZSB7DQog
CQkJc3RkX21pZGlfc3ludGgubWlkaV9kZXYgPSBjYXJkLT5zZXFfZGV2Ow0K
QEAgLTM0MSwyMiArMzQ3LDIxIEBADQogCQkJCQkoc3RydWN0IG1pZGlfb3Bl
cmF0aW9ucyAqKQ0KIAkJCQkJa21hbGxvYyhzaXplb2Yoc3RydWN0IG1pZGlf
b3BlcmF0aW9ucyksIEdGUF9LRVJORUwpOw0KIAkJCQ0KLQkJCWlmKG1pZGlf
ZGV2c1tjYXJkLT5zZXFfZGV2XSA9PSBOVUxMKSB7DQotCQkJCQlwcmludGso
S0VSTl9FUlIgImVtdTEwazE6IHVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkh
Iik7DQotCQkJCQlzb3VuZF91bmxvYWRfbWlkaWRldihjYXJkLT5zZXFfZGV2
KTsNCi0JCQkJCWNhcmQtPnNlcV9kZXYgPSAtMTsNCi0JCQkJCXJldHVybiAw
Ow0KKwkJCWlmIChtaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0gPT0gTlVMTCkg
ew0KKwkJCQlwcmludGsoS0VSTl9FUlIgImVtdTEwazE6IHVuYWJsZSB0byBh
bGxvY2F0ZSBtZW1vcnkhIik7DQorCQkJCXNvdW5kX3VubG9hZF9taWRpZGV2
KGNhcmQtPnNlcV9kZXYpOw0KKwkJCQljYXJkLT5zZXFfZGV2ID0gLTE7DQor
CQkJCXJldHVybiAwOw0KIAkJCX0gZWxzZSB7DQotCQkJCQltZW1jcHkoKGNo
YXIgKiltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0sIA0KLQkJCQkJCSAgIChj
aGFyICopJmVtdTEwazFfbWlkaV9vcGVyYXRpb25zLCANCi0JCQkJCQkgICBz
aXplb2Yoc3RydWN0IG1pZGlfb3BlcmF0aW9ucykpOw0KLQkJCQkJbWlkaV9k
ZXZzW2NhcmQtPnNlcV9kZXZdLT5kZXZjID0gY2FyZDsNCi0JCQkJCXNlcXVl
bmNlcl9pbml0KCk7DQorCQkJCW1lbWNweSgoY2hhciAqKW1pZGlfZGV2c1tj
YXJkLT5zZXFfZGV2XSwgDQorCQkJCQkoY2hhciAqKSZlbXUxMGsxX21pZGlf
b3BlcmF0aW9ucywgDQorCQkJCQlzaXplb2Yoc3RydWN0IG1pZGlfb3BlcmF0
aW9ucykpOw0KKwkJCQltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0tPmRldmMg
PSBjYXJkOw0KKwkJCQlzZXF1ZW5jZXJfaW5pdCgpOw0KIAkJCX0NCiAJfQ0K
IAljYXJkLT5zZXFfbWlkaWRldiA9IDA7DQogI2VuZGlmDQotDQogCXJldHVy
biAwOw0KIA0KIGVycl9vdXQzOg0KQEAgLTM3MCwxOSArMzc1LDE5IEBADQog
DQogc3RhdGljIHZvaWQgX19kZXZpbml0IGVtdTEwazFfbWlkaV9jbGVhbnVw
KHN0cnVjdCBlbXUxMGsxX2NhcmQgKmNhcmQpDQogew0KLSAgICB0YXNrbGV0
X2tpbGwoJmNhcmQtPm1wdW91dC0+dGFza2xldCk7DQotICAgIGtmcmVlKGNh
cmQtPm1wdW91dCk7DQorCXRhc2tsZXRfa2lsbCgmY2FyZC0+bXB1b3V0LT50
YXNrbGV0KTsNCisJa2ZyZWUoY2FyZC0+bXB1b3V0KTsNCiANCi0gICAgdGFz
a2xldF9raWxsKCZjYXJkLT5tcHVpbi0+dGFza2xldCk7DQotICAgIGtmcmVl
KGNhcmQtPm1wdWluKTsNCisJdGFza2xldF9raWxsKCZjYXJkLT5tcHVpbi0+
dGFza2xldCk7DQorCWtmcmVlKGNhcmQtPm1wdWluKTsNCiANCiAjaWZkZWYg
RU1VMTBLMV9TRVFVRU5DRVINCi0gICAgaWYoY2FyZC0+c2VxX2RldiA+IC0x
KSB7DQotCSAgICAgICAga2ZyZWUobWlkaV9kZXZzW2NhcmQtPnNlcV9kZXZd
KTsNCi0JCQltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0gPSBOVUxMOw0KLSAg
ICAgICAgICAgIHNvdW5kX3VubG9hZF9taWRpZGV2KGNhcmQtPnNlcV9kZXYp
Ow0KLQkJCWNhcmQtPnNlcV9kZXYgPSAtMTsNCi0gICAgfQ0KKwlpZiAoY2Fy
ZC0+c2VxX2RldiA+IC0xKSB7DQorCQlrZnJlZShtaWRpX2RldnNbY2FyZC0+
c2VxX2Rldl0pOw0KKwkJbWlkaV9kZXZzW2NhcmQtPnNlcV9kZXZdID0gTlVM
TDsNCisJCXNvdW5kX3VubG9hZF9taWRpZGV2KGNhcmQtPnNlcV9kZXYpOw0K
KwkJY2FyZC0+c2VxX2RldiA9IC0xOw0KKwl9DQogI2VuZGlmDQogDQogCXVu
cmVnaXN0ZXJfc291bmRfbWlkaShjYXJkLT5taWRpX2Rldik7DQpAQCAtNDQ3
LDkxICs0NTIsMTUyIEBADQogCQkJCSAgICBUQU5LTUVNQUREUlJFR0JBU0Ug
KyBpLCAwLA0KIAkJCQkgICAgVEFHTElTVF9FTkQpOw0KIA0KLQltZ3ItPmN1
cnJlbnRfcGFnZXMgPSA1IC8gUEFUQ0hFU19QRVJfUEFHRSArIDE7DQotICAg
ICAgICBmb3IoaSA9IDA7IGkgPCBtZ3ItPmN1cnJlbnRfcGFnZXM7IGkrKykg
ew0KLSAgICAgICAgICAgICAgICBtZ3ItPnBhdGNoW2ldID0gKHZvaWQgKilf
X2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIDEpOw0KLSAgICAgICAgICAg
ICAgICBpZiAobWdyLT5wYXRjaFtpXSA9PSBOVUxMKSB7DQotICAgICAgICAg
ICAgICAgICAgICAgICAgbWdyLT5jdXJyZW50X3BhZ2VzID0gaTsNCi0gICAg
ICAgICAgICAgICAgICAgICAgICBmeF9jbGVhbnVwKG1ncik7DQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQotICAgICAgICAg
ICAgICAgIH0NCi0gICAgICAgICAgICAgICAgbWVtc2V0KG1nci0+cGF0Y2hb
aV0sIDAsIFBBR0VfU0laRSk7DQotICAgICAgICB9DQorCS8qICEhIFRoZSBu
dW1iZXIgYmVsbG93IG11c3QgZXF1YWwgdGhlIG51bWJlciBvZiBwYXRjaGVz
LCBjdXJyZW50bHkgMTEgISEgKi8NCisJbWdyLT5jdXJyZW50X3BhZ2VzID0g
KDExICsgUEFUQ0hFU19QRVJfUEFHRSAtIDEpIC8gUEFUQ0hFU19QRVJfUEFH
RTsNCisJZm9yIChpID0gMDsgaSA8IG1nci0+Y3VycmVudF9wYWdlczsgaSsr
KSB7DQorCQltZ3ItPnBhdGNoW2ldID0gKHZvaWQgKilfX2dldF9mcmVlX3Bh
Z2UoR0ZQX0tFUk5FTCk7DQorCQlpZiAobWdyLT5wYXRjaFtpXSA9PSBOVUxM
KSB7DQorCQkJbWdyLT5jdXJyZW50X3BhZ2VzID0gaTsNCisJCQlmeF9jbGVh
bnVwKG1ncik7DQorCQkJcmV0dXJuIC1FTk9NRU07DQorCQl9DQorCQltZW1z
ZXQobWdyLT5wYXRjaFtpXSwgMCwgUEFHRV9TSVpFKTsNCisJfQ0KIA0KIAlw
YyA9IDA7DQogCXBhdGNoX24gPSAwOw0KKwkvL2ZpcnN0IGZyZWUgR1BSID0g
MHgxMWINCiANCi0JLyogRlggdm9sdW1lIGNvcnJlY3Rpb24gKi8NCi0JSU5Q
VVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJQY20gTCB2b2wgY29ycmVjdGlvbiIs
IDB4MCwgMCk7DQorCS8qIEZYIHZvbHVtZSBjb3JyZWN0aW9uIGFuZCBWb2x1
bWUgY29udHJvbCovDQorCUlOUFVUX1BBVENIX1NUQVJUKHBhdGNoLCAiUGNt
IEwgdm9sIiwgMHgwLCAwKTsNCiAJR0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4
MTAwLCAweDApOw0KLQkNCi0JT1AoNCwgMHgxMDAsIDB4NDAsIFBDTV9JTl9M
LCAweDQ0KTsNCisJR0VUX0NPTlRST0xfR1BSKHBhdGNoLCAweDEwNiwgIlZv
bCIsIDAsIDB4N2ZmZmZmZmYpOw0KKwlHRVRfRFlOQU1JQ19HUFIocGF0Y2gs
IDB4MTEyKTsNCisNCisJT1AoNCwgMHgxMTIsIDB4NDAsIFBDTV9JTl9MLCAw
eDQ0KTsgLy8qNA0KKwlPUCgwLCAweDEwMCwgMHgwNDAsIDB4MTEyLCAweDEw
Nik7ICAvLyp2b2wNCiAJSU5QVVRfUEFUQ0hfRU5EKHBhdGNoKTsNCiANCiAN
Ci0JSU5QVVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJQY20gUiB2b2wgY29ycmVj
dGlvbiIsIDB4MSwgMCk7DQorCUlOUFVUX1BBVENIX1NUQVJUKHBhdGNoLCAi
UGNtIFIgdm9sIiwgMHgxLCAwKTsNCiAJR0VUX09VVFBVVF9HUFIocGF0Y2gs
IDB4MTAxLCAweDEpOw0KKwlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTA3
LCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7DQorCUdFVF9EWU5BTUlDX0dQUihw
YXRjaCwgMHgxMTIpOw0KKw0KKwlPUCg0LCAweDExMiwgMHg0MCwgUENNX0lO
X1IsIDB4NDQpOyANCisJT1AoMCwgMHgxMDEsIDB4MDQwLCAweDExMiwgMHgx
MDcpOw0KIA0KLQlPUCg0LCAweDEwMSwgMHg0MCwgUENNX0lOX1IsIDB4NDQp
Ow0KIAlJTlBVVF9QQVRDSF9FTkQocGF0Y2gpOw0KIA0KIA0KKwkvLyBDRC1E
aWdpdGFsIEluIFZvbHVtZSBjb250cm9sDQorCUlOUFVUX1BBVENIX1NUQVJU
KHBhdGNoLCAiQ0QtRGlnaXRhbCBWb2wgTCIsIDB4MTIsIDApOw0KKwlHRVRf
T1VUUFVUX0dQUihwYXRjaCwgMHgxMGMsIDB4MTIpOw0KKwlHRVRfQ09OVFJP
TF9HUFIocGF0Y2gsIDB4MTBkLCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7DQor
DQorCU9QKDAsIDB4MTBjLCAweDA0MCwgU1BESUZfQ0RfTCwgMHgxMGQpOw0K
KwlJTlBVVF9QQVRDSF9FTkQocGF0Y2gpOw0KKw0KKwlJTlBVVF9QQVRDSF9T
VEFSVChwYXRjaCwgIkNELURpZ2l0YWwgVm9sIFIiLCAweDEzLCAwKTsNCisJ
R0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4MTBlLCAweDEzKTsNCisJR0VUX0NP
TlRST0xfR1BSKHBhdGNoLCAweDEwZiwgIlZvbCIsIDAsIDB4N2ZmZmZmZmYp
Ow0KKw0KKwlPUCgwLCAweDEwZSwgMHgwNDAsIFNQRElGX0NEX1IsIDB4MTBm
KTsNCisJSU5QVVRfUEFUQ0hfRU5EKHBhdGNoKTsNCisNCisJLy9Wb2x1bWUg
Q29ycmVjdGlvbiBmb3IgTXVsdGktY2hhbm5lbCBJbnB1dHMNCisJSU5QVVRf
UEFUQ0hfU1RBUlQocGF0Y2gsICJNdWx0aS1DaGFubmVsIEdhaW4iLCAweDA4
LCAwKTsNCisJcGF0Y2gtPmlucHV0PXBhdGNoLT5vdXRwdXQ9MHgzRjAwOw0K
Kw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTMsIE1VTFRJX0ZST05U
X0wpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTQsIE1VTFRJX0ZS
T05UX1IpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTUsIE1VTFRJ
X1JFQVJfTCk7DQorCUdFVF9PVVRQVVRfR1BSKHBhdGNoLCAweDExNiwgTVVM
VElfUkVBUl9SKTsNCisJR0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4MTE3LCBN
VUxUSV9DRU5URVIpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTgs
IE1VTFRJX0xGRSk7DQorDQorCU9QKDQsIDB4MTEzLCAweDQwLCBNVUxUSV9G
Uk9OVF9MLCAweDQ0KTsNCisJT1AoNCwgMHgxMTQsIDB4NDAsIE1VTFRJX0ZS
T05UX1IsIDB4NDQpOw0KKwlPUCg0LCAweDExNSwgMHg0MCwgTVVMVElfUkVB
Ul9MLCAweDQ0KTsNCisJT1AoNCwgMHgxMTYsIDB4NDAsIE1VTFRJX1JFQVJf
UiwgMHg0NCk7DQorCU9QKDQsIDB4MTE3LCAweDQwLCBNVUxUSV9DRU5URVIs
IDB4NDQpOw0KKwlPUCg0LCAweDExOCwgMHg0MCwgTVVMVElfTEZFLCAweDQ0
KTsNCisJDQorCUlOUFVUX1BBVENIX0VORChwYXRjaCk7DQorDQorDQorCS8v
Um91dGluZyBwYXRjaCBzdGFydA0KIAlST1VUSU5HX1BBVENIX1NUQVJUKHJw
YXRjaCwgIlJvdXRpbmciKTsNCiAJR0VUX0lOUFVUX0dQUihycGF0Y2gsIDB4
MTAwLCAweDApOw0KIAlHRVRfSU5QVVRfR1BSKHJwYXRjaCwgMHgxMDEsIDB4
MSk7DQorCUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDEwYywgMHgxMik7DQor
CUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDEwZSwgMHgxMyk7DQorCUdFVF9J
TlBVVF9HUFIocnBhdGNoLCAweDExMywgTVVMVElfRlJPTlRfTCk7DQorCUdF
VF9JTlBVVF9HUFIocnBhdGNoLCAweDExNCwgTVVMVElfRlJPTlRfUik7DQor
CUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDExNSwgTVVMVElfUkVBUl9MKTsN
CisJR0VUX0lOUFVUX0dQUihycGF0Y2gsIDB4MTE2LCBNVUxUSV9SRUFSX1Ip
Ow0KKwlHRVRfSU5QVVRfR1BSKHJwYXRjaCwgMHgxMTcsIE1VTFRJX0NFTlRF
Uik7DQorCUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDExOCwgTVVMVElfTEZF
KTsNCiANCi0gICAgICAgIEdFVF9EWU5BTUlDX0dQUihycGF0Y2gsIDB4MTAy
KTsNCi0gICAgICAgIEdFVF9EWU5BTUlDX0dQUihycGF0Y2gsIDB4MTAzKTsN
CisJR0VUX0RZTkFNSUNfR1BSKHJwYXRjaCwgMHgxMDIpOw0KKwlHRVRfRFlO
QU1JQ19HUFIocnBhdGNoLCAweDEwMyk7DQogDQogCUdFVF9PVVRQVVRfR1BS
KHJwYXRjaCwgMHgxMDQsIDB4OCk7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRj
aCwgMHgxMDUsIDB4OSk7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRjaCwgMHgx
MGEsIDB4Mik7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRjaCwgMHgxMGIsIDB4
Myk7DQogDQotCUdFVF9DT05UUk9MX0dQUihycGF0Y2gsIDB4MTA2LCAiVm9s
IFBjbSBMOlJlYXIgTCIsIDAsIDB4N2ZmZmZmZmYpOw0KLSAgICAgICAgR0VU
X0NPTlRST0xfR1BSKHJwYXRjaCwgMHgxMDcsICJWb2wgUGNtIFI6UmVhciBS
IiwgMCwgMHg3ZmZmZmZmZik7DQogDQogCS8qIGlucHV0IGJ1ZmZlciAqLw0K
IAlPUCg2LCAweDEwMiwgQUM5N19JTl9MLCAweDQwLCAweDQwKTsNCiAJT1Ao
NiwgMHgxMDMsIEFDOTdfSU5fUiwgMHg0MCwgMHg0MCk7DQogDQotCS8qIERp
Z2l0YWwgSW4gKyBQQ00gLS0+IEFDOTcgb3V0IChmcm9udCBzcGVha2Vycykq
Lw0KLQlPUCg2LCBBQzk3X0ZST05UX0wsIDB4MTAwLCBTUERJRl9DRF9MLCAw
eDQwKTsNCiANCisJLyogRGlnaXRhbCBJbiArIFBDTSArIE1VTFRJX0ZST05U
LT4gQUM5NyBvdXQgKGZyb250IHNwZWFrZXJzKSovDQorCU9QKDYsIEFDOTdf
RlJPTlRfTCwgMHgxMDAsIDB4MTBjLCAweDExMyk7DQorDQorCUNPTk5FQ1Qo
TVVMVElfRlJPTlRfTCwgQUM5N19GUk9OVF9MKTsNCiAJQ09OTkVDVChQQ01f
SU5fTCwgQUM5N19GUk9OVF9MKTsNCi0gICAgICAgIENPTk5FQ1QoU1BESUZf
Q0RfTCwgQUM5N19GUk9OVF9MKTsNCisJQ09OTkVDVChTUERJRl9DRF9MLCBB
Qzk3X0ZST05UX0wpOw0KIA0KLQlPUCg2LCBBQzk3X0ZST05UX1IsIDB4MTAx
LCBTUERJRl9DRF9SLCAweDQwKTsNCisJT1AoNiwgQUM5N19GUk9OVF9SLCAw
eDEwMSwgMHgxMGUsIDB4MTE0KTsNCiANCisJQ09OTkVDVChNVUxUSV9GUk9O
VF9SLCBBQzk3X0ZST05UX1IpOw0KIAlDT05ORUNUKFBDTV9JTl9SLCBBQzk3
X0ZST05UX1IpOw0KIAlDT05ORUNUKFNQRElGX0NEX1IsIEFDOTdfRlJPTlRf
Uik7DQogDQotCS8qIERpZ2l0YWwgSW4gKyBQQ00gKyBBQzk3IEluICsgUENN
MSAtLT4gUmVhciBDaGFubmVsICovIA0KLQlPUCgwLCAweDEwNCwgUENNMV9J
Tl9MLCAweDEwMCwgMHgxMDYpOw0KLQlPUCg2LCAweDEwNCwgMHgxMDQsIFNQ
RElGX0NEX0wsIDB4MTAyKTsNCisJLyogRGlnaXRhbCBJbiArIFBDTSArIEFD
OTcgSW4gKyBQQ00xICsgTVVMVElfUkVBUiAtLT4gUmVhciBDaGFubmVsICov
IA0KKwlPUCg2LCAweDEwNCwgUENNMV9JTl9MLCAweDEwMCwgMHgxMTUpOw0K
KwlPUCg2LCAweDEwNCwgMHgxMDQsIDB4MTBjLCAweDEwMik7DQogDQorCUNP
Tk5FQ1QoTVVMVElfUkVBUl9MLCBBTkFMT0dfUkVBUl9MKTsNCiAJQ09OTkVD
VChBQzk3X0lOX0wsIEFOQUxPR19SRUFSX0wpOw0KLQlDT05ORUNUX1YoUENN
X0lOX0wsIEFOQUxPR19SRUFSX0wpOw0KKwlDT05ORUNUKFBDTV9JTl9MLCBB
TkFMT0dfUkVBUl9MKTsNCiAJQ09OTkVDVChTUERJRl9DRF9MLCBBTkFMT0df
UkVBUl9MKTsNCiAJQ09OTkVDVChQQ00xX0lOX0wsIEFOQUxPR19SRUFSX0wp
Ow0KIA0KLQlPUCgwLCAweDEwNSwgUENNMV9JTl9SLCAweDEwMSwgMHgxMDcp
Ow0KLQlPUCg2LCAweDEwNSwgMHgxMDUsIFNQRElGX0NEX1IsIDB4MTAzKTsN
CisJT1AoNiwgMHgxMDUsIFBDTTFfSU5fUiwgMHgxMDEsIDB4MTE2KTsNCisJ
T1AoNiwgMHgxMDUsIDB4MTA1LCAweDEwZSwgMHgxMDMpOw0KIA0KKwlDT05O
RUNUKE1VTFRJX1JFQVJfUiwgQU5BTE9HX1JFQVJfUik7DQogCUNPTk5FQ1Qo
QUM5N19JTl9SLCBBTkFMT0dfUkVBUl9SKTsNCi0gICAgICAgIENPTk5FQ1Rf
VihQQ01fSU5fUiwgQU5BTE9HX1JFQVJfUik7DQotICAgICAgICBDT05ORUNU
KFNQRElGX0NEX1IsIEFOQUxPR19SRUFSX1IpOw0KKwlDT05ORUNUKFBDTV9J
Tl9SLCBBTkFMT0dfUkVBUl9SKTsNCisJQ09OTkVDVChTUERJRl9DRF9SLCBB
TkFMT0dfUkVBUl9SKTsNCiAJQ09OTkVDVChQQ00xX0lOX1IsIEFOQUxPR19S
RUFSX1IpOw0KIA0KLQkvKiBEaWdpdGFsIEluICsgUENNICsgQUM5NyBJbiAt
LT4gRGlnaXRhbCBvdXQgKi8NCi0JT1AoNiwgMHgxMGIsIDB4MTAwLCAweDEw
MiwgU1BESUZfQ0RfTCk7DQorCS8qIERpZ2l0YWwgSW4gKyBQQ00gKyBBQzk3
IEluICsgTVVMVElfRlJPTlQgLS0+IERpZ2l0YWwgb3V0ICovDQorCU9QKDYs
IDB4MTBiLCAweDEwMCwgMHgxMDIsIDB4MTBjKTsNCisJT1AoNiwgMHgxMGIs
IDB4MTBiLCAweDExMywgMHg0MCk7DQogDQorCUNPTk5FQ1QoTVVMVElfRlJP
TlRfTCwgRElHSVRBTF9PVVRfTCk7DQogCUNPTk5FQ1QoUENNX0lOX0wsIERJ
R0lUQUxfT1VUX0wpOw0KLSAgICAgICAgQ09OTkVDVChBQzk3X0lOX0wsIERJ
R0lUQUxfT1VUX0wpOw0KLSAgICAgICAgQ09OTkVDVChTUERJRl9DRF9MLCBE
SUdJVEFMX09VVF9MKTsNCisJQ09OTkVDVChBQzk3X0lOX0wsIERJR0lUQUxf
T1VUX0wpOw0KKwlDT05ORUNUKFNQRElGX0NEX0wsIERJR0lUQUxfT1VUX0wp
Ow0KIA0KLQlPUCg2LCAweDEwYSwgMHgxMDEsIDB4MTAzLCBTUERJRl9DRF9S
KTsNCisJT1AoNiwgMHgxMGEsIDB4MTAxLCAweDEwMywgMHgxMGUpOw0KKwlP
UCg2LCAweDEwYiwgMHgxMGIsIDB4MTE0LCAweDQwKTsNCiANCisJQ09OTkVD
VChNVUxUSV9GUk9OVF9SLCBESUdJVEFMX09VVF9SKTsNCiAJQ09OTkVDVChQ
Q01fSU5fUiwgRElHSVRBTF9PVVRfUik7DQogCUNPTk5FQ1QoQUM5N19JTl9S
LCBESUdJVEFMX09VVF9SKTsNCiAJQ09OTkVDVChTUERJRl9DRF9SLCBESUdJ
VEFMX09VVF9SKTsNCkBAIC01NDUsMjMgKzYxMSw0MCBAQA0KIA0KIAlDT05O
RUNUKEFDOTdfSU5fUiwgQURDX1JFQ19SKTsNCiANCisNCisJLyogZngxMjpB
bmFsb2ctQ2VudGVyICovDQorCU9QKDYsIEFOQUxPR19DRU5URVIsIDB4MTE3
LCAweDQwLCAweDQwKTsNCisJQ09OTkVDVChNVUxUSV9DRU5URVIsIEFOQUxP
R19DRU5URVIpOw0KKw0KKwkvKiBmeDExOkFuYWxvZy1MRkUgKi8NCisJT1Ao
NiwgQU5BTE9HX0xGRSwgMHgxMTgsIDB4NDAsIDB4NDApOw0KKwlDT05ORUNU
KE1VTFRJX0xGRSwgQU5BTE9HX0xGRSk7DQorDQorCS8qIGZ4MTI6RGlnaXRh
bC1DZW50ZXIgKi8NCisJT1AoNiwgRElHSVRBTF9DRU5URVIsIDB4MTE3LCAw
eDQwLCAweDQwKTsNCisJQ09OTkVDVChNVUxUSV9DRU5URVIsIERJR0lUQUxf
Q0VOVEVSKTsNCisNCisJLyogZngxMTpBbmFsb2ctTEZFICovDQorCU9QKDYs
IERJR0lUQUxfTEZFLCAweDExOCwgMHg0MCwgMHg0MCk7DQorCUNPTk5FQ1Qo
TVVMVElfTEZFLCBESUdJVEFMX0xGRSk7DQorCQ0KIAlST1VUSU5HX1BBVENI
X0VORChycGF0Y2gpOw0KIA0KIA0KLQkvLyBNYXN0ZXIgdm9sdW1lIGNvbnRy
b2wgb24gcmVhcg0KLQlPVVRQVVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJWb2wg
TWFzdGVyIEwiLCAweDgsIDApOw0KKwkvLyBSZWFyIHZvbHVtZSBjb250cm9s
DQorCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwgIlZvbCBSZWFyIEwiLCAw
eDgsIDApOw0KIAlHRVRfSU5QVVRfR1BSKHBhdGNoLCAweDEwNCwgMHg4KTsN
Ci0JR0VUX0NPTlRST0xfR1BSKHBhdGNoLCAweDEwOCwgIlZvbCIsIDAsIDB4
N2ZmZmZmZmYpOw0KKwlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTE5LCAi
Vm9sIiwgMCwgMHg3ZmZmZmZmZik7DQogDQotCU9QKDAsIEFOQUxPR19SRUFS
X0wsIDB4MDQwLCAweDEwNCwgMHgxMDgpOw0KKwlPUCgwLCBBTkFMT0dfUkVB
Ul9MLCAweDA0MCwgMHgxMDQsIDB4MTE5KTsNCiAJT1VUUFVUX1BBVENIX0VO
RChwYXRjaCk7DQogDQogDQotCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwg
IlZvbCBNYXN0ZXIgUiIsIDB4OSwgMCk7DQorCU9VVFBVVF9QQVRDSF9TVEFS
VChwYXRjaCwgIlZvbCBSZWFyIFIiLCAweDksIDApOw0KIAlHRVRfSU5QVVRf
R1BSKHBhdGNoLCAweDEwNSwgMHg5KTsNCi0JR0VUX0NPTlRST0xfR1BSKHBh
dGNoLCAweDEwOSwgIlZvbCIsIDAsIDB4N2ZmZmZmZmYpOw0KKwlHRVRfQ09O
VFJPTF9HUFIocGF0Y2gsIDB4MTFhLCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7
DQogDQotCU9QKDAsIEFOQUxPR19SRUFSX1IsIDB4MDQwLCAweDEwNSwgMHgx
MDkpOw0KKwlPUCgwLCBBTkFMT0dfUkVBUl9SLCAweDA0MCwgMHgxMDUsIDB4
MTFhKTsNCiAJT1VUUFVUX1BBVENIX0VORChwYXRjaCk7DQogDQogDQpAQCAt
NTczLDcgKzY1Niw3IEBADQogCU9QKDAsIERJR0lUQUxfT1VUX0wsIDB4MDQw
LCAweDEwYSwgMHgxMDgpOw0KIAlPVVRQVVRfUEFUQ0hfRU5EKHBhdGNoKTsN
CiANCi0JDQorDQogCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwgIlZvbCBN
YXN0ZXIgUiIsIDB4MywgMSk7DQogCUdFVF9JTlBVVF9HUFIocGF0Y2gsIDB4
MTBiLCAweDMpOw0KIAlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTA5LCAi
Vm9sIiwgMCwgMHg3ZmZmZmZmZik7DQpAQCAtNTkwLDI0ICs2NzMsNjIgQEAN
CiANCiAJbWdyLT5sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOw0KIA0KKw0K
KwkvL01hc3RlciB2b2x1bWUNCiAJbWdyLT5jdHJsX2dwcltTT1VORF9NSVhF
Ul9WT0xVTUVdWzBdID0gODsNCiAJbWdyLT5jdHJsX2dwcltTT1VORF9NSVhF
Ul9WT0xVTUVdWzFdID0gOTsNCiANCiAJbGVmdCA9IGNhcmQtPmFjOTcubWl4
ZXJfc3RhdGVbU09VTkRfTUlYRVJfVk9MVU1FXSAmIDB4ZmY7DQogCXJpZ2h0
ID0gKGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbU09VTkRfTUlYRVJfVk9MVU1F
XSA+PiA4KSAmIDB4ZmY7DQogDQotCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIo
Y2FyZCwgOCwgbGVmdCwgIFZPTF82QklUKTsNCi0JZW11MTBrMV9zZXRfdm9s
dW1lX2dwcihjYXJkLCA5LCByaWdodCwgVk9MXzZCSVQpOw0KKwllbXUxMGsx
X3NldF92b2x1bWVfZ3ByKGNhcmQsIDgsIGxlZnQsIDEgPDwgY2FyZC0+YWM5
Ny5iaXRfcmVzb2x1dGlvbik7DQorCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIo
Y2FyZCwgOSwgcmlnaHQsIDEgPDwgY2FyZC0+YWM5Ny5iaXRfcmVzb2x1dGlv
bik7DQorDQorCS8vUmVhciB2b2x1bWUNCisJbWdyLT5jdHJsX2dwclsgU09V
TkRfTUlYRVJfT0dBSU4gXVswXSA9IDB4MTk7DQorCW1nci0+Y3RybF9ncHJb
IFNPVU5EX01JWEVSX09HQUlOIF1bMV0gPSAweDFhOw0KKw0KKwlsZWZ0ID0g
cmlnaHQgPSA2NzsNCisJY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtTT1VORF9N
SVhFUl9PR0FJTl0gPSAocmlnaHQgPDwgOCkgfCBsZWZ0Ow0KIA0KKwljYXJk
LT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgfD0gU09VTkRfTUFTS19PR0FJTjsN
CisJY2FyZC0+YWM5Ny5zdGVyZW9fbWl4ZXJzIHw9IFNPVU5EX01BU0tfT0dB
SU47DQorDQorCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIoY2FyZCwgMHgxOSwg
bGVmdCwgVk9MXzVCSVQpOw0KKwllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNh
cmQsIDB4MWEsIHJpZ2h0LCBWT0xfNUJJVCk7DQorDQorCS8vUENNIFZvbHVt
ZQ0KIAltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX1BDTV1bMF0gPSA2Ow0K
IAltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX1BDTV1bMV0gPSA3Ow0KIA0K
IAlsZWZ0ID0gY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtTT1VORF9NSVhFUl9Q
Q01dICYgMHhmZjsNCiAJcmlnaHQgPSAoY2FyZC0+YWM5Ny5taXhlcl9zdGF0
ZVtTT1VORF9NSVhFUl9QQ01dID4+IDgpICYgMHhmZjsNCiANCi0JZW11MTBr
MV9zZXRfdm9sdW1lX2dwcihjYXJkLCA2LCBsZWZ0LCAgVk9MXzVCSVQpOw0K
KwllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNhcmQsIDYsIGxlZnQsIFZPTF81
QklUKTsNCiAJZW11MTBrMV9zZXRfdm9sdW1lX2dwcihjYXJkLCA3LCByaWdo
dCwgVk9MXzVCSVQpOw0KIA0KKwkvL0NELURpZ2l0YWwgVm9sdW1lDQorCW1n
ci0+Y3RybF9ncHJbU09VTkRfTUlYRVJfRElHSVRBTDFdWzBdID0gMHhkOw0K
KwltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX0RJR0lUQUwxXVsxXSA9IDB4
ZjsNCisNCisJbGVmdCA9IHJpZ2h0ID0gNjc7DQorCWNhcmQtPmFjOTcubWl4
ZXJfc3RhdGVbU09VTkRfTUlYRVJfRElHSVRBTDFdID0gKHJpZ2h0IDw8IDgp
IHwgbGVmdDsgDQorDQorCWNhcmQtPmFjOTcuc3VwcG9ydGVkX21peGVycyB8
PSBTT1VORF9NQVNLX0RJR0lUQUwxOw0KKwljYXJkLT5hYzk3LnN0ZXJlb19t
aXhlcnMgfD0gU09VTkRfTUFTS19ESUdJVEFMMTsNCisNCisJZW11MTBrMV9z
ZXRfdm9sdW1lX2dwcihjYXJkLCAweGQsIGxlZnQsIFZPTF81QklUKTsNCisJ
ZW11MTBrMV9zZXRfdm9sdW1lX2dwcihjYXJkLCAweGYsIHJpZ2h0LCBWT0xf
NUJJVCk7DQorDQorCS8vaGFyZCB3aXJlIHRoZSBhYzk3J3MgcGNtLCB3ZSds
bCBkbyB0aGF0IGluIGRzcCBjb2RlIGluc3RlYWQuDQorCWVtdTEwazFfYWM5
N193cml0ZSgmY2FyZC0+YWM5NywgMHgxOCwgMHgwKTsNCisJY2FyZC0+YWM5
N19zdXBwb3J0ZWRfbWl4ZXJzICY9IH5TT1VORF9NQVNLX1BDTTsNCisJY2Fy
ZC0+YWM5N19zdGVyZW9fbWl4ZXJzICY9IH5TT1VORF9NQVNLX1BDTTsNCisN
CisJLy9zZXQgSWdhaW4gdG8gMGRCIGJ5IGRlZmF1bHQsIG1heWJlIGNvbnNp
ZGVyIGhhcmR3aXJpbmcgaXQgaGVyZS4NCisJZW11MTBrMV9hYzk3X3dyaXRl
KCZjYXJkLT5hYzk3LCBBQzk3X1JFQ09SRF9HQUlOLCAweDAwMDApOw0KKwlj
YXJkLT5hYzk3Lm1peGVyX3N0YXRlW1NPVU5EX01JWEVSX0lHQUlOXSA9IDB4
MTAxOyANCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTc3NSw2ICs4OTYs
NyBAQA0KIAljYXJkLT5wdC5pbnRyX2dwcl9uYW1lID0gImNvdW50IjsNCiAJ
Y2FyZC0+cHQuZW5hYmxlX2dwcl9uYW1lID0gImVuYWJsZSI7DQogCWNhcmQt
PnB0LnBvc19ncHJfbmFtZSA9ICJwdHIiOw0KKwlzcGluX2xvY2tfaW5pdCgm
Y2FyZC0+cHQubG9jayk7DQogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNhcmQt
PnB0LndhaXQpOw0KIA0KIC8qCXRtcCA9IHNibGl2ZV9yZWFkZm4wKGNhcmQs
IEhDRkcpOw0KQEAgLTEwNDAsOCArMTE2Miw4IEBADQogDQogc3RhdGljIHN0
cnVjdCBtaWRpX29wZXJhdGlvbnMgZW11MTBrMV9taWRpX29wZXJhdGlvbnMg
PQ0KIHsNCi0gICAgVEhJU19NT0RVTEUsDQotICAgIHsiRU1VMTBLMSBNSURJ
IiwgMCwgMCwgU05EQ0FSRF9FTVUxMEsxfSwNCisJVEhJU19NT0RVTEUsDQor
CXsiRU1VMTBLMSBNSURJIiwgMCwgMCwgU05EQ0FSRF9FTVUxMEsxfSwNCiAJ
JnN0ZF9taWRpX3N5bnRoLA0KIAl7MH0sDQogCWVtdTEwazFfc2VxX21pZGlf
b3BlbiwNCkBAIC0xMDU3LDQgKzExNzksMyBAQA0KIH07DQogDQogI2VuZGlm
DQotDQpkaWZmIC11ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9z
b3VuZC9lbXUxMGsxL21pZGkuYyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEv
ZHJpdmVycy9zb3VuZC9lbXUxMGsxL21pZGkuYw0KLS0tIGxpbnV4LTIuNC4x
MXByZTYub3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWlkaS5jCVN1biBB
dWcgMTIgMTk6MjU6MzEgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11
MTBrMS9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWlkaS5jCVR1ZSBPY3QgIDkg
MjA6NTM6MzUgMjAwMQ0KQEAgLTk0LDcgKzk0LDYgQEANCiANCiAJRFBGKDIs
ICJlbXUxMGsxX21pZGlfb3BlbigpXG4iKTsNCiANCi0JDQogCS8qIENoZWNr
IGZvciBjb3JyZWN0IGRldmljZSB0byBvcGVuICovDQogCWxpc3RfZm9yX2Vh
Y2goZW50cnksICZlbXUxMGsxX2RldnMpIHsNCiAJCWNhcmQgPSBsaXN0X2Vu
dHJ5KGVudHJ5LCBzdHJ1Y3QgZW11MTBrMV9jYXJkLCBsaXN0KTsNCkBAIC0x
MDcsMTAgKzEwNiw5IEBADQogDQogbWF0Y2g6DQogI2lmZGVmIEVNVTEwSzFf
U0VRVUVOQ0VSDQotCWlmKGNhcmQtPnNlcV9taWRpZGV2KQkvKiBjYXJkIGlz
IG9wZW5lZCBieSBzZXF1ZW5jZXIgKi8NCi0JCQlyZXR1cm4gLUVCVVNZOw0K
KwlpZiAoY2FyZC0+c2VxX21pZGlkZXYpCS8qIGNhcmQgaXMgb3BlbmVkIGJ5
IHNlcXVlbmNlciAqLw0KKwkJcmV0dXJuIC1FQlVTWTsNCiAjZW5kaWYNCi0J
DQogDQogCS8qIFdhaXQgZm9yIGRldmljZSB0byBiZWNvbWUgZnJlZSAqLw0K
IAlkb3duKCZjYXJkLT5vcGVuX3NlbSk7DQpAQCAtMTMwLDkgKzEyOCw4IEBA
DQogCQlkb3duKCZjYXJkLT5vcGVuX3NlbSk7DQogCX0NCiANCi0JaWYgKCht
aWRpX2RldiA9IChzdHJ1Y3QgZW11MTBrMV9taWRpZGV2aWNlICopIGttYWxs
b2Moc2l6ZW9mKCptaWRpX2RldiksIEdGUF9LRVJORUwpKSA9PSBOVUxMKSB7
DQorCWlmICgobWlkaV9kZXYgPSAoc3RydWN0IGVtdTEwazFfbWlkaWRldmlj
ZSAqKSBrbWFsbG9jKHNpemVvZigqbWlkaV9kZXYpLCBHRlBfS0VSTkVMKSkg
PT0gTlVMTCkNCiAJCXJldHVybiAtRUlOVkFMOw0KLQl9DQogDQogCW1pZGlf
ZGV2LT5jYXJkID0gY2FyZDsNCiAJbWlkaV9kZXYtPm1pc3RhdGUgPSBNSURJ
SU5fU1RBVEVfU1RPUFBFRDsNCkBAIC0yNDQsNyArMjQxLDYgQEANCiAJd2Fr
ZV91cF9pbnRlcnJ1cHRpYmxlKCZjYXJkLT5vcGVuX3dhaXQpOw0KIA0KIAl1
bmxvY2tfa2VybmVsKCk7DQotCQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQpAQCAt
NDYyLDI0ICs0NTgsMjIgQEANCiAJCQkJdm9pZCAoKmlucHV0KSAoaW50IGRl
diwgdW5zaWduZWQgY2hhciBkYXRhKSwNCiAJCQkJdm9pZCAoKm91dHB1dCkg
KGludCBkZXYpKQ0KIHsNCi0gICAgc3RydWN0IGVtdTEwazFfY2FyZCAqY2Fy
ZDsNCi0gICAgc3RydWN0IG1pZGlfb3BlbmluZm8gZHNDYXJkTWlkaU9wZW5J
bmZvOw0KKwlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJkOw0KKwlzdHJ1Y3Qg
bWlkaV9vcGVuaW5mbyBkc0NhcmRNaWRpT3BlbkluZm87DQogCXN0cnVjdCBl
bXUxMGsxX21pZGlkZXZpY2UgKm1pZGlfZGV2Ow0KLQkJDQotCWlmKCAgICBt
aWRpX2RldnNbZGV2XSA9PSBOVUxMDQotCQl8fCBtaWRpX2RldnNbZGV2XS0+
ZGV2YyA9PSBOVUxMKQ0KLQkJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlpZiAo
bWlkaV9kZXZzW2Rldl0gPT0gTlVMTCB8fCBtaWRpX2RldnNbZGV2XS0+ZGV2
YyA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQogDQogCWNhcmQgPSBt
aWRpX2RldnNbZGV2XS0+ZGV2YzsNCiANCi0JaWYoY2FyZC0+b3Blbl9tb2Rl
KQkJLyogY2FyZCBpcyBvcGVuZWQgbmF0aXZlICovDQotCQkJcmV0dXJuIC1F
QlVTWTsNCisJaWYgKGNhcmQtPm9wZW5fbW9kZSkJCS8qIGNhcmQgaXMgb3Bl
bmVkIG5hdGl2ZSAqLw0KKwkJcmV0dXJuIC1FQlVTWTsNCiAJCQkNCiAJRFBG
KDIsICJlbXUxMGsxX3NlcV9taWRpX29wZW4oKVxuIik7DQogCQ0KLQlpZiAo
KG1pZGlfZGV2ID0gKHN0cnVjdCBlbXUxMGsxX21pZGlkZXZpY2UgKikga21h
bGxvYyhzaXplb2YoKm1pZGlfZGV2KSwgR0ZQX0tFUk5FTCkpID09IE5VTEwp
IHsNCisJaWYgKChtaWRpX2RldiA9IChzdHJ1Y3QgZW11MTBrMV9taWRpZGV2
aWNlICopIGttYWxsb2Moc2l6ZW9mKCptaWRpX2RldiksIEdGUF9LRVJORUwp
KSA9PSBOVUxMKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQotCX0NCiANCiAJbWlk
aV9kZXYtPmNhcmQgPSBjYXJkOw0KIAltaWRpX2Rldi0+bWlzdGF0ZSA9IE1J
RElJTl9TVEFURV9TVE9QUEVEOw0KQEAgLTQ5MiwxMCArNDg2LDEwIEBADQog
DQogCWRzQ2FyZE1pZGlPcGVuSW5mby5yZWZkYXRhID0gKHVuc2lnbmVkIGxv
bmcpIG1pZGlfZGV2Ow0KIA0KLSAgICBpZiAoZW11MTBrMV9tcHVvdXRfb3Bl
bihjYXJkLCAmZHNDYXJkTWlkaU9wZW5JbmZvKSA8IDApIHsNCi0gICAgICAg
IEVSUk9SKCk7DQotICAgICAgICByZXR1cm4gLUVOT0RFVjsNCi0gICAgfQ0K
KwlpZiAoZW11MTBrMV9tcHVvdXRfb3BlbihjYXJkLCAmZHNDYXJkTWlkaU9w
ZW5JbmZvKSA8IDApIHsNCisJCUVSUk9SKCk7DQorCQlyZXR1cm4gLUVOT0RF
VjsNCisJfQ0KIA0KIAljYXJkLT5zZXFfbWlkaWRldiA9IG1pZGlfZGV2Ow0K
IAkJDQpAQCAtNTA3LDI5ICs1MDEsMjYgQEANCiAJc3RydWN0IGVtdTEwazFf
Y2FyZCAqY2FyZDsNCiANCiAJRFBGKDIsICJlbXUxMGsxX3NlcV9taWRpX2Ns
b3NlKClcbiIpOw0KLSAgICBpZiggICAgbWlkaV9kZXZzW2Rldl0gPT0gTlVM
TA0KLSAgICAgICAgfHwgbWlkaV9kZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkN
Ci0JCQlyZXR1cm47DQorCWlmIChtaWRpX2RldnNbZGV2XSA9PSBOVUxMIHx8
IG1pZGlfZGV2c1tkZXZdLT5kZXZjID09IE5VTEwpDQorCQlyZXR1cm47DQog
DQogCWNhcmQgPSBtaWRpX2RldnNbZGV2XS0+ZGV2YzsNCiAJZW11MTBrMV9t
cHVvdXRfY2xvc2UoY2FyZCk7DQogDQotCWlmKGNhcmQtPnNlcV9taWRpZGV2
KSB7DQotCQkJa2ZyZWUoY2FyZC0+c2VxX21pZGlkZXYpOw0KLQkJCWNhcmQt
PnNlcV9taWRpZGV2ID0gMDsNCisJaWYgKGNhcmQtPnNlcV9taWRpZGV2KSB7
DQorCQlrZnJlZShjYXJkLT5zZXFfbWlkaWRldik7DQorCQljYXJkLT5zZXFf
bWlkaWRldiA9IDA7DQogCX0NCiB9DQogDQogaW50IGVtdTEwazFfc2VxX21p
ZGlfb3V0KGludCBkZXYsIHVuc2lnbmVkIGNoYXIgbWlkaV9ieXRlKQ0KIHsN
Ci0NCiAJc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZDsNCiAJc3RydWN0IG1p
ZGlfaGRyICptaWRpaGRyOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0K
LQlpZiggICAgbWlkaV9kZXZzW2Rldl0gPT0gTlVMTA0KLSAgICAgICAgfHwg
bWlkaV9kZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkNCi0JCQlyZXR1cm4gLUVJ
TlZBTDsNCisJaWYgKG1pZGlfZGV2c1tkZXZdID09IE5VTEwgfHwgbWlkaV9k
ZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0K
IA0KIAljYXJkID0gbWlkaV9kZXZzW2Rldl0tPmRldmM7DQogDQpAQCAtNTgz
LDIxICs1NzQsMjIgQEANCiAJc3RydWN0IG1pZGlfcXVldWUgKnF1ZXVlOw0K
IAlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJkOw0KIA0KLQlpZiggICAgbWlk
aV9kZXZzW2Rldl0gPT0gTlVMTA0KLSAgICAgICAgfHwgbWlkaV9kZXZzW2Rl
dl0tPmRldmMgPT0gTlVMTCkNCi0JCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYg
KG1pZGlfZGV2c1tkZXZdID09IE5VTEwgfHwgbWlkaV9kZXZzW2Rldl0tPmRl
dmMgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0KIA0KIAljb3VudCA9
IDA7DQotCQ0KKw0KIAljYXJkID0gbWlkaV9kZXZzW2Rldl0tPmRldmM7DQog
CXF1ZXVlID0gY2FyZC0+bXB1b3V0LT5maXJzdG1pZGlxOw0KIA0KLQl3aGls
ZShxdWV1ZSAhPSBOVUxMKSB7DQotCQkJY291bnQrKzsNCi0JCQlpZihxdWV1
ZSA9PSBjYXJkLT5tcHVvdXQtPmxhc3RtaWRpcSkNCi0JCQkJCWJyZWFrOw0K
LQkJCXF1ZXVlID0gcXVldWUtPm5leHQ7DQorCXdoaWxlIChxdWV1ZSAhPSBO
VUxMKSB7DQorCQljb3VudCsrOw0KKwkJaWYgKHF1ZXVlID09IGNhcmQtPm1w
dW91dC0+bGFzdG1pZGlxKQ0KKwkJCWJyZWFrOw0KKw0KKwkJcXVldWUgPSBx
dWV1ZS0+bmV4dDsNCiAJfQ0KKw0KIAlyZXR1cm4gY291bnQ7DQogfQ0KIA0K
ZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQv
ZW11MTBrMS9taXhlci5jIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2
ZXJzL3NvdW5kL2VtdTEwazEvbWl4ZXIuYw0KLS0tIGxpbnV4LTIuNC4xMXBy
ZTYub3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWl4ZXIuYwlTYXQgQXVn
IDExIDA2OjAyOjE5IDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVtdTEw
azEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL21peGVyLmMJVHVlIE9jdCAgOSAy
MDo1MzozNSAyMDAxDQpAQCAtNDAsNDQgKzQwLDE0OSBAQA0KICNpbmNsdWRl
ICI4MDEwLmgiDQogI2luY2x1ZGUgInJlY21nci5oIg0KIA0KLS8vRklYTUU6
IFNPVU5EX01JWEVSX1ZPTFVNRSBzaG91bGQgYmUgc2VsZWN0YWJsZSA1IG9y
IDYgYml0DQotY29uc3Qgc3RydWN0IG9zc19zY2FsaW5nIHZvbHVtZV9wYXJh
bXNbU09VTkRfTUlYRVJfTlJERVZJQ0VTXT0gew0KLS8qIFVzZWQgYnkgdGhl
IGFjOTcgZHJpdmVyICovDQotCVtTT1VORF9NSVhFUl9WT0xVTUVdCT0Je1ZP
TF82QklUfSwNCi0JW1NPVU5EX01JWEVSX0JBU1NdCT0Je1ZPTF80QklUfSwN
Ci0JW1NPVU5EX01JWEVSX1RSRUJMRV0JPQl7Vk9MXzRCSVR9LA0KLQlbU09V
TkRfTUlYRVJfUENNXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9T
UEVBS0VSXQk9CXtWT0xfNEJJVH0sDQotCVtTT1VORF9NSVhFUl9MSU5FXQk9
CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9NSUNdCT0Je1ZPTF81QklU
fSwNCi0JW1NPVU5EX01JWEVSX0NEXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VO
RF9NSVhFUl9BTFRQQ01dCT0Je1ZPTF82QklUfSwNCi0JW1NPVU5EX01JWEVS
X0lHQUlOXQk9CXtWT0xfNEJJVH0sDQotCVtTT1VORF9NSVhFUl9MSU5FMV0J
PQl7Vk9MXzVCSVR9LA0KLQlbU09VTkRfTUlYRVJfUEhPTkVJTl0JPSAJe1ZP
TF81QklUfSwNCi0JW1NPVU5EX01JWEVSX1BIT05FT1VUXQk9IAl7Vk9MXzZC
SVR9LA0KLQlbU09VTkRfTUlYRVJfVklERU9dCT0Je1ZPTF81QklUfSwNCi0v
KiBOb3QgdXNlZCBieSB0aGUgYWM5NyBkcml2ZXIgKi8NCi0JW1NPVU5EX01J
WEVSX1NZTlRIXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9JTUlY
XQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9SRUNMRVZdCT0Je1ZP
TF81QklUfSwNCi0JW1NPVU5EX01JWEVSX09HQUlOXQk9CXtWT0xfNUJJVH0s
DQotCVtTT1VORF9NSVhFUl9MSU5FMl0JPQl7Vk9MXzVCSVR9LA0KLQlbU09V
TkRfTUlYRVJfTElORTNdCT0Je1ZPTF81QklUfSwNCi0JW1NPVU5EX01JWEVS
X0RJR0lUQUwxXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9ESUdJ
VEFMMl0JPQl7Vk9MXzVCSVR9LA0KLQlbU09VTkRfTUlYRVJfRElHSVRBTDNd
CT0Je1ZPTF81QklUfSwNCi0JW1NPVU5EX01JWEVSX1JBRElPXQk9CXtWT0xf
NUJJVH0sDQotCVtTT1VORF9NSVhFUl9NT05JVE9SXQk9CXtWT0xfNUJJVH0N
CisNCitzdGF0aWMgY29uc3QgdTMyIGJhc3NfdGFibGVbNDFdWzVdID0gew0K
Kwl7IDB4M2U0Zjg0NGYsIDB4ODRlZDRjYzMsIDB4M2NjNjk5MjcsIDB4N2Iw
MzU1M2EsIDB4YzRkYTg0ODYgfSwNCisJeyAweDNlNjlhMTdhLCAweDg0YzI4
MGZiLCAweDNjZDc3Y2Q0LCAweDdiMmYyYTZmLCAweGM0YjA4ZDFkIH0sDQor
CXsgMHgzZTgyZmY0MiwgMHg4NDk5OTFkNSwgMHgzY2U3NDY2YiwgMHg3YjU5
MTdjNiwgMHhjNDg4NjNlZSB9LA0KKwl7IDB4M2U5YmFiM2MsIDB4ODQ3MjY3
ZjAsIDB4M2NmNWZmZTgsIDB4N2I4MTM1NjAsIDB4YzQ2MWYyMmMgfSwNCisJ
eyAweDNlYjNiMjc1LCAweDg0NGNlZDI5LCAweDNkMDNiMjk1LCAweDdiYTc5
YTFjLCAweGM0M2QyMjNiIH0sDQorCXsgMHgzZWNiMjE3NCwgMHg4NDI5MGM4
YiwgMHgzZDEwNjcxNCwgMHg3YmNjNWJhMywgMHhjNDE5ZGZhNSB9LA0KKwl7
IDB4M2VlMjA0NGIsIDB4ODQwNmIyNDQsIDB4M2QxYzI1NjEsIDB4N2JlZjhl
NzcsIDB4YzNmODE3MGYgfSwNCisJeyAweDNlZjg2Njk4LCAweDgzZTVjYjk2
LCAweDNkMjZmNGQ4LCAweDdjMTE0NjAwLCAweGMzZDdiNjI1IH0sDQorCXsg
MHgzZjBlNTM5MCwgMHg4M2M2NDZjOSwgMHgzZDMwZGMzOSwgMHg3YzMxOTQ5
OCwgMHhjM2I4YWI5NyB9LA0KKwl7IDB4M2YyM2Q2MGIsIDB4ODNhODEzMjEs
IDB4M2QzOWUxYWYsIDB4N2M1MDhiOWMsIDB4YzM5YWU3MDQgfSwNCisJeyAw
eDNmMzhmODg0LCAweDgzOGIyMGQyLCAweDNkNDIwYWQyLCAweDdjNmUzYjc1
LCAweGMzN2U1OGYxIH0sDQorCXsgMHgzZjRkYzUyYywgMHg4MzZmNjBlZiwg
MHgzZDQ5NWNhYiwgMHg3YzhhYjNhNiwgMHhjMzYyZjJiZSB9LA0KKwl7IDB4
M2Y2MjQ1ZTgsIDB4ODM1NGM1NjUsIDB4M2Q0ZmRiYjgsIDB4N2NhNjAyZDYs
IDB4YzM0OGE2OWIgfSwNCisJeyAweDNmNzY4NDVmLCAweDgzM2I0MGVjLCAw
eDNkNTU4YmYwLCAweDdjYzAzNmRmLCAweGMzMmY2NzdjIH0sDQorCXsgMHgz
ZjhhOGEwMywgMHg4MzIyYzZmYiwgMHgzZDVhNzBjNCwgMHg3Y2Q5NWNkNywg
MHhjMzE3MjkwYiB9LA0KKwl7IDB4M2Y5ZTYwMTQsIDB4ODMwYjRiYzMsIDB4
M2Q1ZThkMjUsIDB4N2NmMTgxMWEsIDB4YzJmZmRmYTUgfSwNCisJeyAweDNm
YjIwZmFlLCAweDgyZjRjNDIwLCAweDNkNjFlMzdmLCAweDdkMDhhZjU2LCAw
eGMyZTk4MDRhIH0sDQorCXsgMHgzZmM1YTFjYywgMHg4MmRmMjU5MiwgMHgz
ZDY0NzVjMywgMHg3ZDFlZjI5NCwgMHhjMmQ0MDA5NiB9LA0KKwl7IDB4M2Zk
OTFmNTUsIDB4ODJjYTY2MzIsIDB4M2Q2NjQ1NjQsIDB4N2QzNDU1NDEsIDB4
YzJiZjU2YjkgfSwNCisJeyAweDNmZWM5MTIwLCAweDgyYjY3Y2FjLCAweDNk
Njc1MzU2LCAweDdkNDhlMTM4LCAweGMyYWI3OTZlIH0sDQorCXsgMHg0MDAw
MDAwMCwgMHg4MmEzNjAzNywgMHgzZDY3YTAxMiwgMHg3ZDVjOWZjOSwgMHhj
Mjk4NWZlZSB9LA0KKwl7IDB4NDAxMzc0YzcsIDB4ODI5MTA4OGEsIDB4M2Q2
NzJiOTMsIDB4N2Q2Zjk5YzMsIDB4YzI4NjAxZjIgfSwNCisJeyAweDQwMjZm
ODU3LCAweDgyN2Y2ZGQ3LCAweDNkNjVmNTU5LCAweDdkODFkNzdjLCAweGMy
NzQ1N2EzIH0sDQorCXsgMHg0MDNhOTM5ZiwgMHg4MjZlODhjNSwgMHgzZDYz
ZmM2MywgMHg3ZDkzNjBkNCwgMHhjMjYzNTk5NiB9LA0KKwl7IDB4NDA0ZTRm
YWYsIDB4ODI1ZTUyNjYsIDB4M2Q2MTNmMzIsIDB4N2RhNDNkNDIsIDB4YzI1
MzAwYzYgfSwNCisJeyAweDQwNjIzNWJhLCAweDgyNGVjNDM0LCAweDNkNWRi
YmMzLCAweDdkYjQ3M2Q3LCAweGMyNDM0NjhlIH0sDQorCXsgMHg0MDc2NGYx
ZiwgMHg4MjNmZDgwYywgMHgzZDU5NmY4ZiwgMHg3ZGM0MGI0NCwgMHhjMjM0
MjRhMiB9LA0KKwl7IDB4NDA4YWE1NzYsIDB4ODIzMTg4MjQsIDB4M2Q1NDU3
ODcsIDB4N2RkMzA5ZTIsIDB4YzIyNTk1MDkgfSwNCisJeyAweDQwOWY0Mjk2
LCAweDgyMjNjZjBiLCAweDNkNGU3MDEyLCAweDdkZTE3NWI1LCAweGMyMTc5
MjE4IH0sDQorCXsgMHg0MGI0MzBhMCwgMHg4MjE2YTdhMSwgMHgzZDQ3YjUw
NSwgMHg3ZGVmNTQ3NSwgMHhjMjBhMTY3MCB9LA0KKwl7IDB4NDBjOTdhMGEs
IDB4ODIwYTBkMTIsIDB4M2Q0MDIxYTEsIDB4N2RmY2FiOGQsIDB4YzFmZDFj
ZjUgfSwNCisJeyAweDQwZGYyOWE2LCAweDgxZmRmYWQ2LCAweDNkMzdiMDhk
LCAweDdlMDk4MDI4LCAweGMxZjBhMGNhIH0sDQorCXsgMHg0MGY1NGFiMSwg
MHg4MWYyNmNhOSwgMHgzZDJlNWJkMSwgMHg3ZTE1ZDcyYiwgMHhjMWU0OWQ1
MiB9LA0KKwl7IDB4NDEwYmU4ZGEsIDB4ODFlNzVlODksIDB4M2QyNDFjY2Us
IDB4N2UyMWI1NDQsIDB4YzFkOTBlMjQgfSwNCisJeyAweDQxMjMxMDUxLCAw
eDgxZGNjY2IzLCAweDNkMThlYzM3LCAweDdlMmQxZWU2LCAweGMxY2RlZjEw
IH0sDQorCXsgMHg0MTNhY2RkMCwgMHg4MWQyYjM5ZSwgMHgzZDBjYzIwYSwg
MHg3ZTM4MTg0ZSwgMHhjMWMzM2MxMyB9LA0KKwl7IDB4NDE1MzJlYTcsIDB4
ODFjOTBmZmIsIDB4M2NmZjk1ODUsIDB4N2U0MmE1OGIsIDB4YzFiOGYxNWEg
fSwNCisJeyAweDQxNmM0MGNkLCAweDgxYmZkZWIyLCAweDNjZjE1ZDIxLCAw
eDdlNGNjYTdjLCAweGMxYWYwYjNmIH0sDQorCXsgMHg0MTg2MTJlYSwgMHg4
MWI3MWNkYywgMHgzY2UyMGU4NSwgMHg3ZTU2OGFkMywgMHhjMWE1ODY0MCB9
LA0KKwl7IDB4NDFhMGI0NjUsIDB4ODFhZWM3YzUsIDB4M2NkMTllN2MsIDB4
N2U1ZmVhMWUsIDB4YzE5YzVmMDMgfSwNCisJeyAweDQxYmMzNTczLCAweDgx
YTZkY2VhLCAweDNjYzAwMGU5LCAweDdlNjhlYmMyLCAweGMxOTM5MjUwIH0N
Cit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1MzIgdHJlYmxlX3RhYmxlWzQxXVs1
XSA9IHsNCisJeyAweDAxMjVjYmE5LCAweGZlZDVkZWJkLCAweDAwNTk5YjZj
LCAweDBkMjUwNmRhLCAweGZhODViMzU0IH0sDQorCXsgMHgwMTQyZjY3ZSwg
MHhmZWIwMzE2MywgMHgwMDY2Y2QwZiwgMHgwZDE0YzY5ZCwgMHhmYTkxNDQ3
MyB9LA0KKwl7IDB4MDE2MzI4YmQsIDB4ZmU4NjAxNTgsIDB4MDA3NWI3ZjIs
IDB4MGQwM2ViMjcsIDB4ZmE5ZDMyZDIgfSwNCisJeyAweDAxODZiNDM4LCAw
eGZlNTZjOTgyLCAweDAwODY5MjM0LCAweDBjZjI3MDQ4LCAweGZhYTk3ZmNh
IH0sDQorCXsgMHgwMWFkZjM1OCwgMHhmZTIxZjVmZSwgMHgwMDk5OTg0Miwg
MHgwY2UwNTFjMiwgMHhmYWI2MmNhNSB9LA0KKwl7IDB4MDFkOTQ5ZmEsIDB4
ZmRlNmUyODcsIDB4MDBhZjBkOGQsIDB4MGNjZDhiNGEsIDB4ZmFjMzNhYTcg
fSwNCisJeyAweDAyMDkyNjY5LCAweGZkYTRkOGJmLCAweDAwYzczZDRjLCAw
eDBjYmExODg0LCAweGZhZDBhYjA3IH0sDQorCXsgMHgwMjNlMDI2OCwgMHhm
ZDViMGU0YSwgMHgwMGUyN2I1NCwgMHgwY2E1ZjUwOSwgMHhmYWRlN2VmMiB9
LA0KKwl7IDB4MDI3ODY0NWMsIDB4ZmQwOGEyYjAsIDB4MDEwMTI1MDksIDB4
MGM5MTFjNjMsIDB4ZmFlY2I3ODggfSwNCisJeyAweDAyYjhlMDkxLCAweGZj
YWM5ZDFhLCAweDAxMjNhMjYyLCAweDBjN2I4YTE0LCAweGZhZmI1NWRmIH0s
DQorCXsgMHgwMzAwMWE5YSwgMHhmYzQ1ZTljZSwgMHgwMTRhNjcwOSwgMHgw
YzY1Mzk4ZiwgMHhmYjBhNWFmZiB9LA0KKwl7IDB4MDM0ZWM2ZDcsIDB4ZmJk
MzU3NmIsIDB4MDE3NWYzOTcsIDB4MGM0ZTI2NDMsIDB4ZmIxOWM3ZTQgfSwN
CisJeyAweDAzYTVhYzE1LCAweGZiNTM5M2VlLCAweDAxYTZkNmVkLCAweDBj
MzY0Yjk0LCAweGZiMjk5ZDdjIH0sDQorCXsgMHgwNDA1YTU2MiwgMHhmYWM1
Mjk2OCwgMHgwMWRkYWZhZSwgMHgwYzFkYTRlMiwgMHhmYjM5ZGNhNSB9LA0K
Kwl7IDB4MDQ2ZmEzZmUsIDB4ZmEyNjdhNjYsIDB4MDIxYjJkZGQsIDB4MGMw
NDJkOGQsIDB4ZmI0YTg2MzEgfSwNCisJeyAweDA0ZTRiMTdmLCAweGY5NzVi
ZTBmLCAweDAyNjAxNDlmLCAweDBiZTllMGYyLCAweGZiNWI5YWUwIH0sDQor
CXsgMHgwNTY1ZjIyMCwgMHhmOGIwZmJlNSwgMHgwMmFkM2MyOSwgMHgwYmNl
YmE3MywgMHhmYjZkMWI2MCB9LA0KKwl7IDB4MDVmNGE3NDUsIDB4ZjdkNjA3
MjIsIDB4MDMwMzkzZDQsIDB4MGJiMmI1NzgsIDB4ZmI3ZjA4NGQgfSwNCisJ
eyAweDA2OTIzMjM2LCAweGY2ZTI3OWJkLCAweDAzNjQyNDY1LCAweDBiOTVj
ZDc1LCAweGZiOTE2MjMzIH0sDQorCXsgMHgwNzQwMTcxMywgMHhmNWQzYWVm
OSwgMHgwM2QwMTI4MywgMHgwYjc3ZmRlZCwgMHhmYmE0Mjk4NCB9LA0KKwl7
IDB4MDgwMDAwMDAsIDB4ZjRhNmJkODgsIDB4MDQ0OGExNjEsIDB4MGI1OTQy
NzgsIDB4ZmJiNzVlOWYgfSwNCisJeyAweDA4ZDNjMDk3LCAweGYzNTg3MTMx
LCAweDA0Y2YzNWE0LCAweDBiMzk5NmM5LCAweGZiY2IwMWNiIH0sDQorCXsg
MHgwOWJkNTlhMiwgMHhmMWU1NDNmOSwgMHgwNTY1NTg4MCwgMHgwYjE4ZjZi
MiwgMHhmYmRmMTMzMyB9LA0KKwl7IDB4MGFiZWZkMGYsIDB4ZjA0OTU2Y2Es
IDB4MDYwY2JiMTIsIDB4MGFmNzVlMmMsIDB4ZmJmMzkyZTggfSwNCisJeyAw
eDBiZGIxMjNlLCAweGVlODA2OTg0LCAweDA2YzczOWZlLCAweDBhZDRjOTYy
LCAweGZjMDg4MGRkIH0sDQorCXsgMHgwZDE0M2E5NCwgMHhlYzg1ZDI4Nywg
MHgwNzk2ZTE1MCwgMHgwYWIxMzRiMCwgMHhmYzFkZGNlNSB9LA0KKwl7IDB4
MGU2ZDU2NjQsIDB4ZWE1NDc1OTgsIDB4MDg3ZGYwYTAsIDB4MGE4YzljYjYs
IDB4ZmMzM2E2YWQgfSwNCisJeyAweDBmZTk4YTJhLCAweGU3ZTZiYTM1LCAw
eDA5N2VkZjgzLCAweDBhNjZmZTViLCAweGZjNDlkZGMyIH0sDQorCXsgMHgx
MThjNDQyMSwgMHhlNTM2ODEzYSwgMHgwYTljNjI0OCwgMHgwYTQwNTZkNywg
MHhmYzYwODE4NSB9LA0KKwl7IDB4MTM1OTQyMmUsIDB4ZTIzZDE5ZWIsIDB4
MGJkOTZlZmIsIDB4MGExOGEzYmYsIDB4ZmM3NzkxMmMgfSwNCisJeyAweDE1
NTQ5ODJiLCAweGRlZjMzNjQ1LCAweDBkMzk0MmJkLCAweDA5ZWZlMzEyLCAw
eGZjOGYwYmMxIH0sDQorCXsgMHgxNzgyYjY4YSwgMHhkYjUwZGViMSwgMHgw
ZWJmNjc2ZCwgMHgwOWM2MTMzZiwgMHhmY2E2ZjAxOSB9LA0KKwl7IDB4MTll
ODcxNWQsIDB4ZDc0ZDY0ZmQsIDB4MTA2ZmI5OTksIDB4MDk5YjMzMzcsIDB4
ZmNiZjNjZDYgfSwNCisJeyAweDFjOGIwN2I4LCAweGQyZGY1NmFiLCAweDEy
NGU2ZWM4LCAweDA5NmY0Mjc0LCAweGZjZDdmMDYwIH0sDQorCXsgMHgxZjcw
MmI2ZCwgMHhjZGZjNmU5MiwgMHgxNDYwMWMxMCwgMHgwOTQyNDEwYiwgMHhm
Y2YxMDhlNSB9LA0KKwl7IDB4MjI5ZTA5MzMsIDB4Yzg5OTg1Y2QsIDB4MTZh
OWJjZmEsIDB4MDkxNDJmYjUsIDB4ZmQwYTg0NTEgfSwNCisJeyAweDI2MWI1
MTE4LCAweGMyYWE4NDA5LCAweDE5MzBiYWI2LCAweDA4ZTUwZmRjLCAweGZk
MjQ2MDRkIH0sDQorCXsgMHgyOWVmM2Y1ZCwgMHhiYzIyNGYyOCwgMHgxYmZh
ZjM5NiwgMHgwOGI0ZTNhYSwgMHhmZDNlOWEzYiB9LA0KKwl7IDB4MmUyMWE1
OWIsIDB4YjRmMmJhNDYsIDB4MWYwZWMyZDYsIDB4MDg4M2FlMTUsIDB4ZmQ1
OTJmMzMgfSwNCisJeyAweDMyYmFmNDRiLCAweGFkMGM3NDI5LCAweDIyNzMw
OGEzLCAweDA4NTE3MmViLCAweGZkNzQxYmZkIH0sDQorCXsgMHgzN2M0NDQ4
YiwgMHhhNDVlZjUxZCwgMHgyNjJmMzI2NywgMHgwODFlMzZkYywgMHhmZDhm
NWQxNCB9DQogfTsNCi1zdGF0aWMgbG9mZl90IGVtdTEwazFfbWl4ZXJfbGxz
ZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3Jp
Z2luKQ0KKw0KKw0KK3N0YXRpYyB2b2lkIHNldF9iYXNzKHN0cnVjdCBlbXUx
MGsxX2NhcmQgKmNhcmQsIGludCBsLCBpbnQgcikNCiB7DQotCURQRigyLCAi
c2JsaXZlX21peGVyX2xsc2VlaygpIGNhbGxlZFxuIik7DQotCXJldHVybiAt
RVNQSVBFOw0KKwlpbnQgaTsNCisNCisJbCA9IChsICogNDAgKyA1MCkgLyAx
MDA7DQorCXIgPSAociAqIDQwICsgNTApIC8gMTAwOw0KKw0KKwlmb3IgKGkg
PSAwOyBpIDwgNTsgaSsrKQ0KKwkJc2JsaXZlX3dyaXRlcHRyKGNhcmQsIEdQ
Ul9CQVNFICsgY2FyZC0+bWdyLmN0cmxfZ3ByW1NPVU5EX01JWEVSX0JBU1Nd
WzBdICsgaSwgMCwgYmFzc190YWJsZVtsXVtpXSk7DQogfQ0KIA0KLS8qIE1p
eGVyIGZpbGUgb3BlcmF0aW9ucyAqLw0KK3N0YXRpYyB2b2lkIHNldF90cmVi
bGUoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IGwsIGludCByKQ0K
K3sNCisJaW50IGk7DQorDQorCWwgPSAobCAqIDQwICsgNTApIC8gMTAwOw0K
KwlyID0gKHIgKiA0MCArIDUwKSAvIDEwMDsNCisNCisJZm9yIChpID0gMDsg
aSA8IDU7IGkrKykNCisJCXNibGl2ZV93cml0ZXB0cihjYXJkLCBHUFJfQkFT
RSArIGNhcmQtPm1nci5jdHJsX2dwcltTT1VORF9NSVhFUl9UUkVCTEVdWzBd
ICsgaSAsIDAsIHRyZWJsZV90YWJsZVtsXVtpXSk7DQorfQ0KKw0KK2NvbnN0
IGNoYXIgdm9sdW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNdPSB7
DQorLyogVXNlZCBieSB0aGUgYWM5NyBkcml2ZXIgKi8NCisJW1NPVU5EX01J
WEVSX1ZPTFVNRV0JPQlWT0xfNkJJVCwNCisJW1NPVU5EX01JWEVSX0JBU1Nd
CT0JVk9MXzRCSVQsDQorCVtTT1VORF9NSVhFUl9UUkVCTEVdCT0JVk9MXzRC
SVQsDQorCVtTT1VORF9NSVhFUl9QQ01dCT0JVk9MXzVCSVQsDQorCVtTT1VO
RF9NSVhFUl9TUEVBS0VSXQk9CVZPTF80QklULA0KKwlbU09VTkRfTUlYRVJf
TElORV0JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX01JQ10JPQlWT0xf
NUJJVCwNCisJW1NPVU5EX01JWEVSX0NEXQk9CVZPTF81QklULA0KKwlbU09V
TkRfTUlYRVJfQUxUUENNXQk9CVZPTF82QklULA0KKwlbU09VTkRfTUlYRVJf
SUdBSU5dCT0JVk9MXzRCSVQsDQorCVtTT1VORF9NSVhFUl9MSU5FMV0JPQlW
T0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX1BIT05FSU5dCT0gCVZPTF81QklU
LA0KKwlbU09VTkRfTUlYRVJfUEhPTkVPVVRdCT0gCVZPTF82QklULA0KKwlb
U09VTkRfTUlYRVJfVklERU9dCT0JVk9MXzVCSVQsDQorLyogTm90IHVzZWQg
YnkgdGhlIGFjOTcgZHJpdmVyICovDQorCVtTT1VORF9NSVhFUl9TWU5USF0J
PQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX0lNSVhdCT0JVk9MXzVCSVQs
DQorCVtTT1VORF9NSVhFUl9SRUNMRVZdCT0JVk9MXzVCSVQsDQorCVtTT1VO
RF9NSVhFUl9PR0FJTl0JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX0xJ
TkUyXQk9CVZPTF81QklULA0KKwlbU09VTkRfTUlYRVJfTElORTNdCT0JVk9M
XzVCSVQsDQorCVtTT1VORF9NSVhFUl9ESUdJVEFMMV0JPQlWT0xfNUJJVCwN
CisJW1NPVU5EX01JWEVSX0RJR0lUQUwyXQk9CVZPTF81QklULA0KKwlbU09V
TkRfTUlYRVJfRElHSVRBTDNdCT0JVk9MXzVCSVQsDQorCVtTT1VORF9NSVhF
Ul9SQURJT10JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX01PTklUT1Jd
CT0JVk9MXzVCSVQNCit9Ow0KIA0KKy8qIE1peGVyIGZpbGUgb3BlcmF0aW9u
cyAqLw0KIHN0YXRpYyBpbnQgZW11MTBrMV9wcml2YXRlX21peGVyKHN0cnVj
dCBlbXUxMGsxX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln
bmVkIGxvbmcgYXJnKQ0KIHsNCiAJc3RydWN0IG1peGVyX3ByaXZhdGVfaW9j
dGwgKmN0bDsNCkBAIC0xNTAsMTcgKzI1NSwyMyBAQA0KIAkJCQkJcmV0ID0g
LUVJTlZBTDsNCiAJCQkJCWJyZWFrOw0KIAkJCQl9DQorDQogCQkJCWNhcmQt
PndhdmVpbi5yZWNzcmMgPSBXQVZFUkVDT1JEX0FDOTc7DQogCQkJCWJyZWFr
Ow0KKw0KIAkJCWNhc2UgV0FWRVJFQ09SRF9NSUM6DQogCQkJCWNhcmQtPndh
dmVpbi5yZWNzcmMgPSBXQVZFUkVDT1JEX01JQzsNCiAJCQkJYnJlYWs7DQor
DQogCQkJY2FzZSBXQVZFUkVDT1JEX0ZYOg0KIAkJCQljYXJkLT53YXZlaW4u
cmVjc3JjID0gV0FWRVJFQ09SRF9GWDsNCiAJCQkJY2FyZC0+d2F2ZWluLmZ4
d2MgPSBjdGwtPnZhbFsxXSAmIDB4ZmZmZjsNCisNCiAJCQkJaWYgKCFjYXJk
LT53YXZlaW4uZnh3YykNCiAJCQkJCXJldCA9IC1FSU5WQUw7DQorDQogCQkJ
CWJyZWFrOw0KKw0KIAkJCWRlZmF1bHQ6DQogCQkJCXJldCA9IC1FSU5WQUw7
DQogCQkJCWJyZWFrOw0KQEAgLTI2Nyw4ICszNzgsOCBAQA0KIAkJCQl9DQog
DQogCQkJCWlmIChwYWdlID49IGNhcmQtPm1nci5jdXJyZW50X3BhZ2VzKSB7
DQotCQkJCQlmb3IoaSA9IGNhcmQtPm1nci5jdXJyZW50X3BhZ2VzOyBpIDwg
cGFnZSArIDE7IGkrKykgew0KLQkJCQkgICAgICAgICAgICAgICAgY2FyZC0+
bWdyLnBhdGNoW2ldID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKEdGUF9L
RVJORUwsIDEpOw0KKwkJCQkJZm9yIChpID0gY2FyZC0+bWdyLmN1cnJlbnRf
cGFnZXM7IGkgPCBwYWdlICsgMTsgaSsrKSB7DQorCQkJCSAgICAgICAgICAg
ICAgICBjYXJkLT5tZ3IucGF0Y2hbaV0gPSAodm9pZCAqKV9fZ2V0X2ZyZWVf
cGFnZShHRlBfS0VSTkVMKTsNCiAJCQkJCQlpZihjYXJkLT5tZ3IucGF0Y2hb
aV0gPT0gTlVMTCkgew0KIAkJCQkJCQljYXJkLT5tZ3IuY3VycmVudF9wYWdl
cyA9IGk7DQogCQkJCQkJCXJldCA9IC1FTk9NRU07DQpAQCAtMjgzLDcgKzM5
NCw3IEBADQogDQogCQkJCW1lbWNweShwYXRjaCwgJmN0bC0+dmFsWzFdLCBz
aXplb2Yoc3RydWN0IGRzcF9wYXRjaCkpOw0KIA0KLQkJCQlpZihwYXRjaC0+
Y29kZV9zaXplID09IDApIHsNCisJCQkJaWYgKHBhdGNoLT5jb2RlX3NpemUg
PT0gMCkgew0KIAkJCQkJZm9yKGkgPSBwYWdlICsgMTsgaSA8IGNhcmQtPm1n
ci5jdXJyZW50X3BhZ2VzOyBpKyspDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9wYWdlKCh1bnNpZ25l
ZCBsb25nKSBjYXJkLT5tZ3IucGF0Y2hbaV0pOw0KIA0KQEAgLTMwNiwxMyAr
NDE3LDEzIEBADQogCQkJZW11MTBrMV9zZXRfY29udHJvbF9ncHIoY2FyZCwg
YWRkciwgKigoczMyICopKChjaGFyICopIGN0bC0+dmFsICsgMiAqIFBBVENI
X05BTUVfU0laRSkpLCAwKTsNCiAJCQlicmVhazsNCiANCi0NCiAJCWNhc2Ug
Q01EX1NFVEdQT1VUOg0KLQkJCWlmKCBjdGwtPnZhbFswXT4yIHx8IGN0bC0+
dmFsWzFdPjEpew0KKwkJCWlmIChjdGwtPnZhbFswXSA+IDIgfHwgY3RsLT52
YWxbMV0gPiAxKSB7DQogCQkJCXJldD0gLUVJTlZBTDsNCiAJCQkJYnJlYWs7
DQogCQkJfQ0KLQkJCWVtdTEwazFfd3JpdGVmbjAoY2FyZCwgKDE8PDI0KXwg
KCgoY3RsLT52YWxbMF0pKzEwKTw8MTYgKSB8IEhDRkcgLGN0bC0+dmFsWzFd
KTsNCisNCisJCQllbXUxMGsxX3dyaXRlZm4wKGNhcmQsICgxIDw8IDI0KSB8
ICgoKGN0bC0+dmFsWzBdKSArIDEwKSA8PCAxNikgfCBIQ0ZHLCBjdGwtPnZh
bFsxXSk7DQogCQkJYnJlYWs7DQogDQogCQljYXNlIENNRF9HRVRHUFIyT1NT
Og0KQEAgLTMyOCw2ICs0MzksNyBAQA0KIA0KIAkJCWlmIChjb3B5X3RvX3Vz
ZXIoKHZvaWQgKikgYXJnLCBjdGwsIHNpemVvZihzdHJ1Y3QgbWl4ZXJfcHJp
dmF0ZV9pb2N0bCkpKQ0KIAkJCQlyZXQgPSAtRUZBVUxUOw0KKw0KIAkJCWJy
ZWFrOw0KIA0KIAkJY2FzZSBDTURfU0VUR1BSMk9TUzoNCkBAIC0zNTAsMzAg
KzQ2Miw0MyBAQA0KIA0KIAkJCQlpZiAoY2gpIHsNCiAJCQkJCXN0YXRlID4+
PSA4Ow0KLQkJCQkJY2FyZC0+YWM5Ny5zdGVyZW9fbWl4ZXJzIHw9ICgxPDxp
ZCk7DQorCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgfD0gKDEgPDwg
aWQpOw0KIAkJCQl9IGVsc2Ugew0KLQkJCQkJY2FyZC0+YWM5Ny5zdXBwb3J0
ZWRfbWl4ZXJzIHw9ICgxPDxpZCk7DQorCQkJCQljYXJkLT5hYzk3LnN1cHBv
cnRlZF9taXhlcnMgfD0gKDEgPDwgaWQpOw0KIAkJCQl9DQogDQotCQkJCWVt
dTEwazFfc2V0X3ZvbHVtZV9ncHIoY2FyZCwgYWRkciwgc3RhdGUgJiAweGZm
LA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW2lkXS5zY2FsZSwNCi0J
CQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tpZF0ubXV0aW5nKTsNCisJCQkJ
aWYgKGlkID09IFNPVU5EX01JWEVSX1RSRUJMRSkgew0KKwkJCQkJc2V0X3Ry
ZWJsZShjYXJkLCBjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW2lkXSAmIDB4ZmYs
IChjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW2lkXSA+PiA4KSAmIDB4ZmYpOw0K
KwkJCQl9IGVsc2UgaWYgKGlkID09IFNPVU5EX01JWEVSX0JBU1MpIHsNCisJ
CQkJCXNldF9iYXNzKGNhcmQsIGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbaWRd
ICYgMHhmZiwgKGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbaWRdID4+IDgpICYg
MHhmZik7DQorCQkJCX0gZWxzZQ0KKwkJCQkJZW11MTBrMV9zZXRfdm9sdW1l
X2dwcihjYXJkLCBhZGRyLCBzdGF0ZSAmIDB4ZmYsDQorCQkJCQkJCSAgICAg
ICB2b2x1bWVfcGFyYW1zW2lkXSk7DQogCQkJfSBlbHNlIHsNCiAJCQkJaWYg
KGNoKSB7DQotCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgJj0gfigx
PDxpZCk7DQorCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgJj0gfigx
IDw8IGlkKTsNCiAJCQkJCWNhcmQtPmFjOTcuc3RlcmVvX21peGVycyB8PSBj
YXJkLT5hYzk3X3N0ZXJlb19taXhlcnM7DQogCQkJCX0gZWxzZSB7DQotCQkJ
CQljYXJkLT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgJj0gfigxPDxpZCk7DQor
CQkJCQljYXJkLT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgJj0gfigxIDw8IGlk
KTsNCiAJCQkJCWNhcmQtPmFjOTcuc3VwcG9ydGVkX21peGVycyB8PSBjYXJk
LT5hYzk3X3N1cHBvcnRlZF9taXhlcnM7DQogCQkJCX0NCiAJCQl9DQogCQkJ
YnJlYWs7DQorDQogCQljYXNlIENNRF9TRVRQQVNTVEhST1VHSDoNCiAJCQlj
YXJkLT5wdC5zZWxlY3RlZCA9IGN0bC0+dmFsWzBdID8gMSA6IDA7DQogCQkJ
aWYgKGNhcmQtPnB0LnN0YXRlICE9IFBUX1NUQVRFX0lOQUNUSVZFKQ0KIAkJ
CQlicmVhazsNCisNCiAJCQljYXJkLT5wdC5zcGNzX3RvX3VzZSA9IGN0bC0+
dmFsWzBdICYgMHgwNzsNCiAJCQlicmVhazsNCisNCisJCWNhc2UgQ01EX1BS
SVZBVEUzX1ZFUlNJT046DQorCQkJY3RsLT52YWxbMF09UFJJVkFURTNfVkVS
U0lPTjsNCisJCQlpZiAoY29weV90b191c2VyKCh2b2lkICopIGFyZywgY3Rs
LCBzaXplb2Yoc3RydWN0IG1peGVyX3ByaXZhdGVfaW9jdGwpKSkNCisJCQkJ
cmV0ID0gLUVGQVVMVDsNCisJCQlicmVhazsNCisNCiAJCWRlZmF1bHQ6DQog
CQkJcmV0ID0gLUVJTlZBTDsNCiAJCQlicmVhazsNCkBAIC00NDEsNDIgKzU2
Niw3NSBAQA0KIAlyZXR1cm4gLUVJTlZBTDsNCiB9DQogDQorc3RhdGljIGlu
dCBlbXUxMGsxX2RzcF9taXhlcihzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJk
LCB1bnNpZ25lZCBpbnQgb3NzX21peGVyLCB1bnNpZ25lZCBsb25nIGFyZykN
Cit7DQorCXVuc2lnbmVkIGludCBsZWZ0LCByaWdodDsNCisJaW50IHZhbDsN
CisJaW50IHNjYWxlOw0KKw0KKwlpZiAoZ2V0X3VzZXIodmFsLCAoaW50ICop
YXJnKSkNCisJCXJldHVybiAtRUZBVUxUOw0KKw0KKwkvKiBjbGVhbnNlIGlu
cHV0IGEgbGl0dGxlICovDQorCXJpZ2h0ID0gKCh2YWwgPj4gOCkgICYgMHhm
Zik7DQorCWxlZnQgPSAodmFsICAmIDB4ZmYpOw0KKw0KKwlpZiAocmlnaHQg
PiAxMDApIHJpZ2h0ID0gMTAwOw0KKwlpZiAobGVmdCA+IDEwMCkgbGVmdCA9
IDEwMDsNCisNCisJY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3NfbWl4ZXJd
ID0gKHJpZ2h0IDw8IDgpIHwgbGVmdDsNCisJaWYgKG9zc19taXhlciA9PSBT
T1VORF9NSVhFUl9UUkVCTEUpIHsNCisJCXNldF90cmVibGUoY2FyZCwgbGVm
dCwgcmlnaHQpOw0KKwkJcmV0dXJuIDA7DQorCX0gaWYgKG9zc19taXhlciA9
PSBTT1VORF9NSVhFUl9CQVNTKSB7DQorCQlzZXRfYmFzcyhjYXJkLCBsZWZ0
LCByaWdodCk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlpZiAob3NzX21p
eGVyID09IFNPVU5EX01JWEVSX1ZPTFVNRSkNCisJCXNjYWxlID0gMSA8PCBj
YXJkLT5hYzk3LmJpdF9yZXNvbHV0aW9uOw0KKwllbHNlDQorCQlzY2FsZSA9
IHZvbHVtZV9wYXJhbXNbb3NzX21peGVyXTsNCisNCisJZW11MTBrMV9zZXRf
dm9sdW1lX2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21peGVy
XVswXSwgbGVmdCwgc2NhbGUpOw0KKwllbXUxMGsxX3NldF92b2x1bWVfZ3By
KGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdo
dCwgc2NhbGUpOw0KKw0KKwlpZiAoY2FyZC0+YWM5N19zdXBwb3J0ZWRfbWl4
ZXJzICYgKDEgPDwgb3NzX21peGVyKSkNCisJCWNhcmQtPmFjOTcud3JpdGVf
bWl4ZXIoJmNhcmQtPmFjOTcsIG9zc19taXhlciwgbGVmdCwgcmlnaHQpOw0K
Kw0KKwlyZXR1cm4gMDsNCit9DQogDQotCQ0KIHN0YXRpYyBpbnQgZW11MTBr
MV9taXhlcl9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls
ZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcp
DQogew0KIAlpbnQgcmV0Ow0KIAlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJk
ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0KLQ0KKwl1bnNpZ25lZCBpbnQgb3Nz
X21peGVyID0gX0lPQ19OUihjbWQpOw0KKwkNCiAJcmV0ID0gLUVJTlZBTDsN
Ci0JaWYgKCFjYXJkLT5pc2FwcykNCi0JCXJldCA9IGNhcmQtPmFjOTcubWl4
ZXJfaW9jdGwoJmNhcmQtPmFjOTcsIGNtZCwgYXJnKTsNCi0NCi0JaWYgKHJl
dCA8IDApDQotCQlyZXQgPSBlbXUxMGsxX3ByaXZhdGVfbWl4ZXIoY2FyZCwg
Y21kLCBhcmcpOw0KLQllbHNlew0KLQkJdW5zaWduZWQgaW50IG9zc19taXhl
ciwgbGVmdCwgcmlnaHQ7DQotDQotCQlvc3NfbWl4ZXIgPSBfSU9DX05SKGNt
ZCk7DQorCWlmICghY2FyZC0+aXNhcHMpIHsNCisJCWlmIChjbWQgPT0gU09V
TkRfTUlYRVJfSU5GTykgew0KKwkJCW1peGVyX2luZm8gaW5mbzsNCisNCisJ
CQlzdHJuY3B5KGluZm8uaWQsIGNhcmQtPmFjOTcubmFtZSwgc2l6ZW9mKGlu
Zm8uaWQpKTsNCisJCQlzdHJuY3B5KGluZm8ubmFtZSwgIkNyZWF0aXZlIFNC
TGl2ZSAtIEVtdTEwazEiLCBzaXplb2YoaW5mby5uYW1lKSk7DQorCQkJaW5m
by5tb2RpZnlfY291bnRlciA9IGNhcmQtPmFjOTcubW9kY250Ow0KIA0KLQkJ
aWYgKChfSU9DX0RJUihjbWQpID09IChfSU9DX1dSSVRFfF9JT0NfUkVBRCkp
ICYmIG9zc19taXhlcjw9U09VTkRfTUlYRVJfTlJERVZJQ0VTICkgew0KKwkJ
CWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgKilhcmcsICZpbmZvLCBzaXplb2Yo
aW5mbykpKQ0KKwkJCQlyZXR1cm4gLUVGQVVMVDsNCiANCi0JCQlsZWZ0ID0g
Y2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3NfbWl4ZXJdICYgMHhmZjsNCi0J
CQlyaWdodCA9IChjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW29zc19taXhlcl0g
Pj4gOCkgJiAweGZmOw0KLQkJCWlmKGNhcmQtPmFjOTcuc3VwcG9ydGVkX21p
eGVyc3woMTw8b3NzX21peGVyKSkNCi0JCQkJZW11MTBrMV9zZXRfdm9sdW1l
X2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21peGVyXVswXSwg
bGVmdCwNCi0JCQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJd
LnNjYWxlLA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhl
cl0ubXV0aW5nKTsNCi0JCQlpZihjYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMg
fCgxPDxvc3NfbWl4ZXIpKQ0KLQkJCQllbXUxMGsxX3NldF92b2x1bWVfZ3By
KGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdo
dCwNCi0JCQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdLnNj
YWxlLA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0u
bXV0aW5nKTsNCisJCQlyZXR1cm4gMDsNCiAJCX0NCi0JCQ0KKw0KKwkJaWYg
KChfSU9DX0RJUihjbWQpID09IChfSU9DX1dSSVRFfF9JT0NfUkVBRCkpICYm
IG9zc19taXhlciA8PSBTT1VORF9NSVhFUl9OUkRFVklDRVMpDQorCQkJcmV0
ID0gZW11MTBrMV9kc3BfbWl4ZXIoY2FyZCwgb3NzX21peGVyLCBhcmcpOw0K
KwkJZWxzZQ0KKwkJCXJldCA9IGNhcmQtPmFjOTcubWl4ZXJfaW9jdGwoJmNh
cmQtPmFjOTcsIGNtZCwgYXJnKTsNCiAJfQ0KIAkNCi0JDQotCQkNCisJaWYg
KHJldCA8IDApDQorCQlyZXQgPSBlbXUxMGsxX3ByaXZhdGVfbWl4ZXIoY2Fy
ZCwgY21kLCBhcmcpOw0KKw0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCkBAIC01
MTAsNyArNjY4LDcgQEANCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVt
dTEwazFfbWl4ZXJfZm9wcyA9IHsNCiAJb3duZXI6CQlUSElTX01PRFVMRSwN
Ci0JbGxzZWVrOgkJZW11MTBrMV9taXhlcl9sbHNlZWssDQorCWxsc2VlazoJ
CW5vX2xsc2VlaywNCiAJaW9jdGw6CQllbXUxMGsxX21peGVyX2lvY3RsLA0K
IAlvcGVuOgkJZW11MTBrMV9taXhlcl9vcGVuLA0KIAlyZWxlYXNlOgllbXUx
MGsxX21peGVyX3JlbGVhc2UsDQpkaWZmIC11ciBsaW51eC0yLjQuMTFwcmU2
Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsxL3Bhc3N0aHJvdWdoLmMgbGlu
dXgtMi40LjExcHJlNi5lbXUxMGsxL2RyaXZlcnMvc291bmQvZW11MTBrMS9w
YXNzdGhyb3VnaC5jDQotLS0gbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZl
cnMvc291bmQvZW11MTBrMS9wYXNzdGhyb3VnaC5jCVRodSBPY3QgIDQgMjI6
NTc6NTggMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2
ZXJzL3NvdW5kL2VtdTEwazEvcGFzc3Rocm91Z2guYwlUdWUgT2N0ICA5IDIw
OjUzOjM1IDIwMDENCkBAIC00Nyw3ICs0Nyw2IEBADQogI2luY2x1ZGUgImly
cW1nci5oIg0KICNpbmNsdWRlICJhdWRpby5oIg0KICNpbmNsdWRlICI4MDEw
LmgiDQotI2luY2x1ZGUgInBhc3N0aHJvdWdoLmgiDQogDQogc3RhdGljIHZv
aWQgcHRfcHV0c2FtcGxlcyhzdHJ1Y3QgcHRfZGF0YSAqcHQsIHUxNiAqcHRy
LCB1MTYgbGVmdCwgdTE2IHJpZ2h0KQ0KIHsNCkBAIC0yMDksOSArMjA4LDcg
QEANCiB7DQogCXN0cnVjdCBwdF9kYXRhICpwdCA9ICZjYXJkLT5wdDsNCiAJ
aW50IGk7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCXNwaW5fbG9j
a19pcnFzYXZlKCZjYXJkLT5wdC5sb2NrLCBmbGFncyk7DQogCWlmIChwdC0+
c3RhdGUgIT0gUFRfU1RBVEVfSU5BQ1RJVkUpIHsNCiAJCURQRigyLCAiZGln
aXRhbCBwYXNzLXRocm91Z2ggc3RvcHBlZFxuIik7DQogCQlzYmxpdmVfd3Jp
dGVwdHIoY2FyZCwgR1BSX0JBU0UgKyBwdC0+ZW5hYmxlX2dwciwgMCwgMCk7
DQpAQCAtMjIyLDcgKzIxOSw2IEBADQogCQlwdC0+c3RhdGUgPSBQVF9TVEFU
RV9JTkFDVElWRTsNCiAJCWtmcmVlKHB0LT5idWYpOw0KIAl9DQotCXNwaW5f
dW5sb2NrX2lycXJlc3RvcmUoJmNhcmQtPnB0LmxvY2ssIGZsYWdzKTsNCiB9
DQogDQogdm9pZCBlbXUxMGsxX3B0X3dhdmVvdXRfdXBkYXRlKHN0cnVjdCBl
bXUxMGsxX3dhdmVkZXZpY2UgKndhdmVfZGV2KQ0KZGlmZiAtdXIgbGludXgt
Mi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBrMS9wYXNzdGhy
b3VnaC5oIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5k
L2VtdTEwazEvcGFzc3Rocm91Z2guaA0KLS0tIGxpbnV4LTIuNC4xMXByZTYu
b3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvcGFzc3Rocm91Z2guaAlTdW4g
QXVnIDEyIDE5OjI1OjMxIDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVt
dTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL3Bhc3N0aHJvdWdoLmgJVHVl
IE9jdCAgOSAyMDo1MzozNSAyMDAxDQpAQCAtMzIsNyArMzIsNiBAQA0KICNp
Zm5kZWYgX1BBU1NUSFJPVUdIX0gNCiAjZGVmaW5lIF9QQVNTVEhST1VHSF9I
DQogDQotI2luY2x1ZGUgImh3YWNjZXNzLmgiDQogI2luY2x1ZGUgImF1ZGlv
LmgiDQogDQogLyogbnVtYmVyIG9mIDE2LWJpdCBzdGVyZW8gc2FtcGxlcyBp
biBYVFJBTSBidWZmZXIgKi8NCg==
--17496956-450392075-1002656064=:12595--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/