Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Apr 2011 00:53:37 +0200 (CEST)
From:      Ingo Flaschberger <if@freebsd.org>
To:        freebsd-net@freebsd.org
Subject:   Re: Routing enhancement - reduce routing table locking
Message-ID:  <alpine.LRH.2.00.1104180051450.8693@filebunker.xip.at>
In-Reply-To: <alpine.LRH.2.00.1104061426350.2152@filebunker.xip.at>
References:  <alpine.LRH.2.00.1104050303140.2152@filebunker.xip.at> <alpine.LRH.2.00.1104061426350.2152@filebunker.xip.at>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--168430090-2014229598-1303080817=:8693
Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII


attached a new version of this patch with some improvements and bug-fixes.
Test-Reports are welcome.

Kind regards,
 	Ingo Flaschberger
--168430090-2014229598-1303080817=:8693
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=rmlock_8.2_20110418.diff
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.LRH.2.00.1104180053370.8693@filebunker.xip.at>
Content-Description: 
Content-Disposition: attachment; filename=rmlock_8.2_20110418.diff

ZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9jb250cmliL2lw
ZmlsdGVyL3JhZGl4LmMgLi9jb250cmliL2lwZmlsdGVyL3JhZGl4LmMNCi0t
LSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9jb250cmliL2lwZmlsdGVyL3Jh
ZGl4LmMJMjAwOS0wOC0wMyAwODoxMzowNi4wMDAwMDAwMDAgKzAwMDANCisr
KyAuL2NvbnRyaWIvaXBmaWx0ZXIvcmFkaXguYwkyMDExLTA0LTAzIDE2OjA4
OjI4LjAwMDAwMDAwMCArMDAwMA0KQEAgLTc1OSw5ICs3NTksMTAgQEANCiB9
DQogDQogc3RydWN0IHJhZGl4X25vZGUgKg0KLXJuX2RlbGV0ZSh2X2FyZywg
bmV0bWFza19hcmcsIGhlYWQpDQorcm5fZGVsZXRlKHZfYXJnLCBuZXRtYXNr
X2FyZywgaGVhZCwgcm4pDQogCXZvaWQgKnZfYXJnLCAqbmV0bWFza19hcmc7
DQogCXN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQ7DQorCXN0cnVjdCBy
YWRpeF9ub2RlICpybjsNCiB7DQogCXN0cnVjdCByYWRpeF9ub2RlICp0LCAq
cCwgKngsICp0dDsNCiAJc3RydWN0IHJhZGl4X21hc2sgKm0sICpzYXZlZF9t
LCAqKm1wOw0KQEAgLTEwNjksNyArMTA3MCw3IEBADQogCXN0cnVjdCByYWRp
eF9ub2RlX2hlYWQgKnJuaCA9IHA7DQogCXN0cnVjdCByYWRpeF9ub2RlICpk
Ow0KIA0KLQlkID0gcm5oLT5ybmhfZGVsYWRkcihuLT5ybl9rZXksIE5VTEws
IHJuaCk7DQorCWQgPSBybmgtPnJuaF9kZWxhZGRyKG4tPnJuX2tleSwgTlVM
TCwgcm5oLCBOVUxMKTsNCiAJaWYgKGQgIT0gTlVMTCkgew0KIAkJRnJlZVMo
ZCwgbWF4X2tleWxlbiArIDIgKiBzaXplb2YgKCpkKSk7DQogCX0NCmRpZmYg
LXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvY29udHJpYi9pcGZpbHRl
ci9yYWRpeF9pcGYuaCAuL2NvbnRyaWIvaXBmaWx0ZXIvcmFkaXhfaXBmLmgN
Ci0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9jb250cmliL2lwZmlsdGVy
L3JhZGl4X2lwZi5oCTIwMDktMDgtMDMgMDg6MTM6MDYuMDAwMDAwMDAwICsw
MDAwDQorKysgLi9jb250cmliL2lwZmlsdGVyL3JhZGl4X2lwZi5oCTIwMTEt
MDQtMTIgMTY6Mjc6MzEuMDAwMDAwMDAwICswMDAwDQpAQCAtMTMwLDcgKzEz
MCw4IEBADQogCQlfX1AoKHZvaWQgKnYsIHZvaWQgKm1hc2ssDQogCQkgICAg
IHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQsIHN0cnVjdCByYWRpeF9u
b2RlIG5vZGVzW10pKTsNCiAJc3RydWN0CXJhZGl4X25vZGUgKigqcm5oX2Rl
bGFkZHIpCS8qIHJlbW92ZSBiYXNlZCBvbiBzb2NrYWRkciAqLw0KLQkJX19Q
KCh2b2lkICp2LCB2b2lkICptYXNrLCBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFk
ICpoZWFkKSk7DQorCQlfX1AoKHZvaWQgKnYsIHZvaWQgKm1hc2ssIHN0cnVj
dCByYWRpeF9ub2RlX2hlYWQgKmhlYWQsDQorCQkgICAgc3RydWN0IHJhZGl4
X25vZGUgKnJuKSk7DQogCXN0cnVjdAlyYWRpeF9ub2RlICooKnJuaF9kZWxw
a3QpCS8qIHJlbW92ZSBiYXNlZCBvbiBwYWNrZXQgaGRyICovDQogCQlfX1Ao
KHZvaWQgKnYsIHZvaWQgKm1hc2ssIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQg
KmhlYWQpKTsNCiAJc3RydWN0CXJhZGl4X25vZGUgKigqcm5oX21hdGNoYWRk
cikJLyogbG9jYXRlIGJhc2VkIG9uIHNvY2thZGRyICovDQpAQCAtMjAyLDcg
KzIwMyw4IEBADQogCSAqcm5fYWRkbWFzayBfX1AoKHZvaWQgKiwgaW50LCBp
bnQpKSwNCiAJICpybl9hZGRyb3V0ZSBfX1AoKHZvaWQgKiwgdm9pZCAqLCBz
dHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICosDQogCQkJc3RydWN0IHJhZGl4X25v
ZGUgWzJdKSksDQotCSAqcm5fZGVsZXRlIF9fUCgodm9pZCAqLCB2b2lkICos
IHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKikpLA0KKwkgKnJuX2RlbGV0ZSBf
X1AoKHZvaWQgKiwgdm9pZCAqLCBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICos
DQorCSAgICAgIHN0cnVjdCByYWRpeF9ub2RlICopKSwNCiAJICpybl9pbnNl
cnQgX19QKCh2b2lkICosIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKiwgaW50
ICosDQogCQkJc3RydWN0IHJhZGl4X25vZGUgWzJdKSksDQogCSAqcm5fbG9v
a3VwIF9fUCgodm9pZCAqLCB2b2lkICosIHN0cnVjdCByYWRpeF9ub2RlX2hl
YWQgKikpLA0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9z
YmluL3JvdXRlZC9yYWRpeC5jIC4vc2Jpbi9yb3V0ZWQvcmFkaXguYw0KLS0t
IC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3NiaW4vcm91dGVkL3JhZGl4LmMJ
MjAwOS0wOC0wMyAwODoxMzowNi4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3Ni
aW4vcm91dGVkL3JhZGl4LmMJMjAxMS0wNC0wMyAxNjowODowNy4wMDAwMDAw
MDAgKzAwMDANCkBAIC02NjIsNyArNjYyLDggQEANCiBzdGF0aWMgc3RydWN0
IHJhZGl4X25vZGUgKg0KIHJuX2RlbGV0ZSh2b2lkICp2X2FyZywNCiAJICB2
b2lkICpuZXRtYXNrX2FyZywNCi0JICBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFk
ICpoZWFkKQ0KKwkgIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQsDQor
CSAgc3RydWN0IHJhZGl4X25vZGUgKnJuKQ0KIHsNCiAJc3RydWN0IHJhZGl4
X25vZGUgKnQsICpwLCAqeCwgKnR0Ow0KIAlzdHJ1Y3QgcmFkaXhfbWFzayAq
bSwgKnNhdmVkX20sICoqbXA7DQpAQCAtNjcwLDYgKzY3MSw4IEBADQogCWNh
ZGRyX3QgdiwgbmV0bWFzazsNCiAJaW50IGIsIGhlYWRfb2ZmLCB2bGVuOw0K
IA0KKwlybiA9IE5VTEw7IC8qIFhYWCBtYWtlIGNvbXBpbGVyIGhhcHB5ICov
DQorDQogCXYgPSB2X2FyZzsNCiAJbmV0bWFzayA9IG5ldG1hc2tfYXJnOw0K
IAl4ID0gaGVhZC0+cm5oX3RyZWV0b3A7DQpkaWZmIC11IC1yIC4uL3NyY19v
cmdfOC4yXzIwMTEwMzI5L3NiaW4vcm91dGVkL3JhZGl4LmggLi9zYmluL3Jv
dXRlZC9yYWRpeC5oDQotLS0gLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc2Jp
bi9yb3V0ZWQvcmFkaXguaAkyMDA5LTA4LTAzIDA4OjEzOjA2LjAwMDAwMDAw
MCArMDAwMA0KKysrIC4vc2Jpbi9yb3V0ZWQvcmFkaXguaAkyMDExLTA0LTEy
IDE2OjI4OjA0LjAwMDAwMDAwMCArMDAwMA0KQEAgLTExNSw3ICsxMTUsOCBA
QA0KIAkJKHZvaWQgKnYsIHZvaWQgKm1hc2ssDQogCQkgICAgIHN0cnVjdCBy
YWRpeF9ub2RlX2hlYWQgKmhlYWQsIHN0cnVjdCByYWRpeF9ub2RlIG5vZGVz
W10pOw0KIAlzdHJ1Y3QJcmFkaXhfbm9kZSAqKCpybmhfZGVsYWRkcikJLyog
cmVtb3ZlIGJhc2VkIG9uIHNvY2thZGRyICovDQotCQkodm9pZCAqdiwgdm9p
ZCAqbWFzaywgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqaGVhZCk7DQorCQko
dm9pZCAqdiwgdm9pZCAqbWFzaywgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAq
aGVhZCwNCisJCSAgICAgc3RydWN0IHJhZGl4X25vZGUgKnJuKTsNCiAJc3Ry
dWN0CXJhZGl4X25vZGUgKigqcm5oX2RlbHBrdCkJLyogcmVtb3ZlIGJhc2Vk
IG9uIHBhY2tldCBoZHIgKi8NCiAJCSh2b2lkICp2LCB2b2lkICptYXNrLCBz
dHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpoZWFkKTsNCiAJc3RydWN0CXJhZGl4
X25vZGUgKigqcm5oX21hdGNoYWRkcikJLyogbG9jYXRlIGJhc2VkIG9uIHNv
Y2thZGRyICovDQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5
L3NiaW4vcm91dGVkL3RhYmxlLmMgLi9zYmluL3JvdXRlZC90YWJsZS5jDQot
LS0gLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc2Jpbi9yb3V0ZWQvdGFibGUu
YwkyMDA5LTA4LTAzIDA4OjEzOjA2LjAwMDAwMDAwMCArMDAwMA0KKysrIC4v
c2Jpbi9yb3V0ZWQvdGFibGUuYwkyMDExLTA0LTAzIDE2OjA4OjA3LjAwMDAw
MDAwMCArMDAwMA0KQEAgLTE4NjUsNyArMTg2NSw3IEBADQogCW1hc2tfc29j
ay5zaW5fYWRkci5zX2FkZHIgPSBodG9ubChydC0+cnRfbWFzayk7DQogCW1h
c2t0cmltKCZtYXNrX3NvY2spOw0KIAlpZiAocnQgIT0gKHN0cnVjdCBydF9l
bnRyeSAqKXJoZWFkLT5ybmhfZGVsYWRkcigmZHN0X3NvY2ssICZtYXNrX3Nv
Y2ssDQotCQkJCQkJCXJoZWFkKSkgew0KKwkJCQkJCQlyaGVhZCwgTlVMTCkp
IHsNCiAJCW1zZ2xvZygicm5oX2RlbGFkZHIoKSBmYWlsZWQiKTsNCiAJfSBl
bHNlIHsNCiAJCWZyZWUocnQpOw0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzgu
Ml8yMDExMDMyOS9zeXMvY29udHJpYi9pcGZpbHRlci9uZXRpbmV0L2lwX3Bv
b2wuYyAuL3N5cy9jb250cmliL2lwZmlsdGVyL25ldGluZXQvaXBfcG9vbC5j
DQotLS0gLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL2NvbnRyaWIvaXBm
aWx0ZXIvbmV0aW5ldC9pcF9wb29sLmMJMjAwNy0xMC0xOCAyMTo0MjozOC4w
MDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9jb250cmliL2lwZmlsdGVyL25l
dGluZXQvaXBfcG9vbC5jCTIwMTEtMDQtMDMgMTY6MDc6NDYuMDAwMDAwMDAw
ICswMDAwDQpAQCAtNjcsNiArNjcsNyBAQA0KICNpbmNsdWRlICJuZXRpbmV0
L2lwX2NvbXBhdC5oIg0KICNpbmNsdWRlICJuZXRpbmV0L2lwX2ZpbC5oIg0K
ICNpbmNsdWRlICJuZXRpbmV0L2lwX3Bvb2wuaCINCisjaW5jbHVkZSA8c3lz
L3JtbG9jay5oPg0KIA0KICNpZiBkZWZpbmVkKElQRklMVEVSX0xPT0tVUCkg
JiYgZGVmaW5lZChfS0VSTkVMKSAmJiBcDQogICAgICAgKChCU0QgPj0gMTk4
OTExKSAmJiAhZGVmaW5lZChfX29zZl9fKSAmJiBcDQpAQCAtNjIwLDcgKzYy
MSw3IEBADQogDQogCVJBRElYX05PREVfSEVBRF9MT0NLKGlwby0+aXBvX2hl
YWQpOw0KIAlpcG8tPmlwb19oZWFkLT5ybmhfZGVsYWRkcigmaXBlLT5pcG5f
YWRkciwgJmlwZS0+aXBuX21hc2ssDQotCQkJCSAgIGlwby0+aXBvX2hlYWQp
Ow0KKwkJCQkgICBpcG8tPmlwb19oZWFkLCBOVUxMKTsNCiAJUkFESVhfTk9E
RV9IRUFEX1VOTE9DSyhpcG8tPmlwb19oZWFkKTsNCiANCiAJaXBfcG9vbF9u
b2RlX2RlcmVmKGlwZSk7DQpAQCAtNzUxLDcgKzc1Miw3IEBADQogCVJBRElY
X05PREVfSEVBRF9MT0NLKGlwby0+aXBvX2hlYWQpOw0KIAl3aGlsZSAoKG4g
PSBpcG8tPmlwb19saXN0KSAhPSBOVUxMKSB7DQogCQlpcG8tPmlwb19oZWFk
LT5ybmhfZGVsYWRkcigmbi0+aXBuX2FkZHIsICZuLT5pcG5fbWFzaywNCi0J
CQkJCSAgIGlwby0+aXBvX2hlYWQpOw0KKwkJCQkJICAgaXBvLT5pcG9faGVh
ZCwgTlVMTCk7DQogDQogCQkqbi0+aXBuX3BuZXh0ID0gbi0+aXBuX25leHQ7
DQogCQlpZiAobi0+aXBuX25leHQpDQpAQCAtOTYzLDcgKzk2NCw3IEBADQog
CXN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKnJuaCA9IHA7DQogCXN0cnVjdCBy
YWRpeF9ub2RlICpkOw0KIA0KLQlkID0gcm5oLT5ybmhfZGVsYWRkcihuLT5y
bl9rZXksIE5VTEwsIHJuaCk7DQorCWQgPSBybmgtPnJuaF9kZWxhZGRyKG4t
PnJuX2tleSwgTlVMTCwgcm5oLCBOVUxMKTsNCiAJaWYgKGQgIT0gTlVMTCkg
ew0KIAkJRnJlZVMoZCwgbWF4X2tleWxlbiArIDIgKiBzaXplb2YgKCpkKSk7
DQogCX0NCmRpZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lz
L2NvbnRyaWIvcGYvbmV0L3BmLmMgLi9zeXMvY29udHJpYi9wZi9uZXQvcGYu
Yw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9jb250cmliL3Bm
L25ldC9wZi5jCTIwMTAtMDktMjAgMTc6MDM6MTAuMDAwMDAwMDAwICswMDAw
DQorKysgLi9zeXMvY29udHJpYi9wZi9uZXQvcGYuYwkyMDExLTA0LTAzIDE2
OjA3OjQ2LjAwMDAwMDAwMCArMDAwMA0KQEAgLTk5LDkgKzk5LDcgQEANCiAj
aW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+DQogI2luY2x1ZGUgPG5ldC9icGYu
aD4NCiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQotI2lmbmRlZiBfX0ZyZWVC
U0RfXw0KICNpbmNsdWRlIDxuZXQvcmFkaXhfbXBhdGguaD4NCi0jZW5kaWYN
CiANCiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0KICNpbmNsdWRlIDxuZXRp
bmV0L2luX3Zhci5oPg0KQEAgLTYxNjYsOSArNjE2NCw5IEBADQogCQkJaWYg
KGtpZi0+cGZpa19pZnAgPT0gaWZwKQ0KIAkJCQlyZXQgPSAxOw0KICNpZmRl
ZiBfX0ZyZWVCU0RfXyAvKiBNVUxUSVBBVEhfUk9VVElORyAqLw0KLQkJCXJu
ID0gTlVMTDsNCi0jZWxzZQ0KIAkJCXJuID0gcm5fbXBhdGhfbmV4dChybik7
DQorI2Vsc2UNCisJCQlybiA9IHJuX21wYXRoX25leHQocm4sIDApOw0KICNl
bmRpZg0KIAkJfSB3aGlsZSAoY2hlY2tfbXBhdGggPT0gMSAmJiBybiAhPSBO
VUxMICYmIHJldCA9PSAwKTsNCiAJfSBlbHNlDQpkaWZmIC11IC1yIC4uL3Ny
Y19vcmdfOC4yXzIwMTEwMzI5L3N5cy9jb250cmliL3BmL25ldC9wZl90YWJs
ZS5jIC4vc3lzL2NvbnRyaWIvcGYvbmV0L3BmX3RhYmxlLmMNCi0tLSAuLi9z
cmNfb3JnXzguMl8yMDExMDMyOS9zeXMvY29udHJpYi9wZi9uZXQvcGZfdGFi
bGUuYwkyMDA5LTA4LTAzIDA4OjEzOjA2LjAwMDAwMDAwMCArMDAwMA0KKysr
IC4vc3lzL2NvbnRyaWIvcGYvbmV0L3BmX3RhYmxlLmMJMjAxMS0wNC0wMyAx
NjowNzo0Ni4wMDAwMDAwMDAgKzAwMDANCkBAIC00NCw3ICs0NCw3IEBADQog
I2luY2x1ZGUgPHN5cy9tYnVmLmg+DQogI2luY2x1ZGUgPHN5cy9rZXJuZWwu
aD4NCiAjaW5jbHVkZSA8c3lzL2xvY2suaD4NCi0jaW5jbHVkZSA8c3lzL3J3
bG9jay5oPg0KKyNpbmNsdWRlIDxzeXMvcm1sb2NrLmg+DQogI2lmZGVmIF9f
RnJlZUJTRF9fDQogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4NCiAjZW5kaWYN
CkBAIC0xMTE0LDE3ICsxMTE0LDkgQEANCiAjZW5kaWYNCiAJaWYgKEtFTlRS
WV9ORVRXT1JLKGtlKSkgew0KIAkJcGZyX3ByZXBhcmVfbmV0d29yaygmbWFz
aywga2UtPnBmcmtlX2FmLCBrZS0+cGZya2VfbmV0KTsNCi0jaWZkZWYgX19G
cmVlQlNEX18NCi0JCXJuID0gcm5fZGVsZXRlKCZrZS0+cGZya2Vfc2EsICZt
YXNrLCBoZWFkKTsNCi0jZWxzZQ0KIAkJcm4gPSBybl9kZWxldGUoJmtlLT5w
ZnJrZV9zYSwgJm1hc2ssIGhlYWQsIE5VTEwpOw0KLSNlbmRpZg0KIAl9IGVs
c2UNCi0jaWZkZWYgX19GcmVlQlNEX18NCi0JCXJuID0gcm5fZGVsZXRlKCZr
ZS0+cGZya2Vfc2EsIE5VTEwsIGhlYWQpOw0KLSNlbHNlDQogCQlybiA9IHJu
X2RlbGV0ZSgma2UtPnBmcmtlX3NhLCBOVUxMLCBoZWFkLCBOVUxMKTsNCi0j
ZW5kaWYNCiAJc3BseChzKTsNCiANCiAJaWYgKHJuID09IE5VTEwpIHsNCmRp
ZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL2tlcm4vc3Vi
cl93aXRuZXNzLmMgLi9zeXMva2Vybi9zdWJyX3dpdG5lc3MuYw0KLS0tIC4u
L3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9rZXJuL3N1YnJfd2l0bmVzcy5j
CTIwMTEtMDMtMjggMTU6MjY6NDguMDAwMDAwMDAwICswMDAwDQorKysgLi9z
eXMva2Vybi9zdWJyX3dpdG5lc3MuYwkyMDExLTA0LTAzIDE2OjA3OjU0LjAw
MDAwMDAwMCArMDAwMA0KQEAgLTUwOCw3ICs1MDgsNyBAQA0KIAkgKiBSb3V0
aW5nDQogCSAqLw0KIAl7ICJzb19yY3YiLCAmbG9ja19jbGFzc19tdHhfc2xl
ZXAgfSwNCi0JeyAicmFkaXggbm9kZSBoZWFkIiwgJmxvY2tfY2xhc3Nfcncg
fSwNCisJeyAicmFkaXggbm9kZSBoZWFkIiwgJmxvY2tfY2xhc3Nfcm0gfSwN
CiAJeyAicnRlbnRyeSIsICZsb2NrX2NsYXNzX210eF9zbGVlcCB9LA0KIAl7
ICJpZmFkZHIiLCAmbG9ja19jbGFzc19tdHhfc2xlZXAgfSwNCiAJeyBOVUxM
LCBOVUxMIH0sDQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5
L3N5cy9rZXJuL3Zmc19leHBvcnQuYyAuL3N5cy9rZXJuL3Zmc19leHBvcnQu
Yw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9rZXJuL3Zmc19l
eHBvcnQuYwkyMDA5LTEwLTAxIDEzOjExOjQ1LjAwMDAwMDAwMCArMDAwMA0K
KysrIC4vc3lzL2tlcm4vdmZzX2V4cG9ydC5jCTIwMTEtMDQtMDMgMTY6MDc6
NTQuMDAwMDAwMDAwICswMDAwDQpAQCAtNDMsNiArNDMsNyBAQA0KICNpbmNs
dWRlIDxzeXMvamFpbC5oPg0KICNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQog
I2luY2x1ZGUgPHN5cy9sb2NrLmg+DQorI2luY2x1ZGUgPHN5cy9ybWxvY2su
aD4NCiAjaW5jbHVkZSA8c3lzL21hbGxvYy5oPg0KICNpbmNsdWRlIDxzeXMv
bWJ1Zi5oPg0KICNpbmNsdWRlIDxzeXMvbW91bnQuaD4NCkBAIC0yMjgsNyAr
MjI5LDcgQEANCiAJc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqcm5oID0gKHN0
cnVjdCByYWRpeF9ub2RlX2hlYWQgKikgdzsNCiAJc3RydWN0IHVjcmVkICpj
cmVkOw0KIA0KLQkoKnJuaC0+cm5oX2RlbGFkZHIpIChybi0+cm5fa2V5LCBy
bi0+cm5fbWFzaywgcm5oKTsNCisJKCpybmgtPnJuaF9kZWxhZGRyKSAocm4t
PnJuX2tleSwgcm4tPnJuX21hc2ssIHJuaCwgTlVMTCk7DQogCWNyZWQgPSAo
KHN0cnVjdCBuZXRjcmVkICopcm4pLT5uZXRjX2Fub247DQogCWlmIChjcmVk
ICE9IE5VTEwpDQogCQljcmZyZWUoY3JlZCk7DQpAQCAtNDI3LDYgKzQyOCw3
IEBADQogCXJlZ2lzdGVyIHN0cnVjdCBuZXRjcmVkICpucDsNCiAJcmVnaXN0
ZXIgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqcm5oOw0KIAlzdHJ1Y3Qgc29j
a2FkZHIgKnNhZGRyOw0KKwlzdHJ1Y3Qgcm1fcHJpb3RyYWNrZXIgdHJhY2tl
cjsNCiANCiAJbmVwID0gbXAtPm1udF9leHBvcnQ7DQogCWlmIChuZXAgPT0g
TlVMTCkNCkBAIC00NDAsMTAgKzQ0MiwxMCBAQA0KIAkJCXNhZGRyID0gbmFt
Ow0KIAkJCXJuaCA9IG5lcC0+bmVfcnRhYmxlW3NhZGRyLT5zYV9mYW1pbHld
Ow0KIAkJCWlmIChybmggIT0gTlVMTCkgew0KLQkJCQlSQURJWF9OT0RFX0hF
QURfUkxPQ0socm5oKTsNCisJCQkJUkFESVhfTk9ERV9IRUFEX1JMT0NLKHJu
aCwgJnRyYWNrZXIpOw0KIAkJCQlucCA9IChzdHJ1Y3QgbmV0Y3JlZCAqKQ0K
IAkJCQkgICAgKCpybmgtPnJuaF9tYXRjaGFkZHIpKHNhZGRyLCBybmgpOw0K
LQkJCQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgpOw0KKwkJCQlSQURJ
WF9OT0RFX0hFQURfUlVOTE9DSyhybmgsICZ0cmFja2VyKTsNCiAJCQkJaWYg
KG5wICYmIG5wLT5uZXRjX3Jub2Rlcy0+cm5fZmxhZ3MgJiBSTkZfUk9PVCkN
CiAJCQkJCW5wID0gTlVMTDsNCiAJCQl9DQpkaWZmIC11IC1yIC4uL3NyY19v
cmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQvaWYuYyAuL3N5cy9uZXQvaWYuYw0K
LS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQvaWYuYwkyMDEx
LTA0LTA2IDE4OjAzOjQ5LjAwMDAwMDAwMCArMDAwMA0KKysrIC4vc3lzL25l
dC9pZi5jCTIwMTEtMDQtMTIgMTY6MjE6MDUuMDAwMDAwMDAwICswMDAwDQpA
QCAtNDksNiArNDksNyBAQA0KICNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPg0K
ICNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQogI2luY2x1ZGUgPHN5cy9sb2Nr
Lmg+DQorI2luY2x1ZGUgPHN5cy9ybWxvY2suaD4NCiAjaW5jbHVkZSA8c3lz
L3JlZmNvdW50Lmg+DQogI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4NCiAjaW5j
bHVkZSA8c3lzL3J3bG9jay5oPg0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzgu
Ml8yMDExMDMyOS9zeXMvbmV0L3BmaWwuYyAuL3N5cy9uZXQvcGZpbC5jDQot
LS0gLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25ldC9wZmlsLmMJMjAx
MC0wMi0wNyAwOTowMDoyMi4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9u
ZXQvcGZpbC5jCTIwMTEtMDQtMDMgMTY6MDc6NTcuMDAwMDAwMDAwICswMDAw
DQpAQCAtMzksNyArMzksNiBAQA0KICNpbmNsdWRlIDxzeXMvc29ja2V0dmFy
Lmg+DQogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPg0KICNpbmNsdWRlIDxzeXMv
Y29uZHZhci5oPg0KLSNpbmNsdWRlIDxzeXMvbG9jay5oPg0KICNpbmNsdWRl
IDxzeXMvbXV0ZXguaD4NCiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4NCiAjaW5j
bHVkZSA8c3lzL3F1ZXVlLmg+DQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4y
XzIwMTEwMzI5L3N5cy9uZXQvcmFkaXguYyAuL3N5cy9uZXQvcmFkaXguYw0K
LS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQvcmFkaXguYwky
MDEwLTA0LTAyIDA1OjAyOjUwLjAwMDAwMDAwMCArMDAwMA0KKysrIC4vc3lz
L25ldC9yYWRpeC5jCTIwMTEtMDQtMDMgMTY6MDc6NTcuMDAwMDAwMDAwICsw
MDAwDQpAQCAtNDEsNiArNDEsNyBAQA0KICNpbmNsdWRlIDxzeXMvc3lzdG0u
aD4NCiAjaW5jbHVkZSA8c3lzL21hbGxvYy5oPg0KICNpbmNsdWRlIDxzeXMv
c3lzbG9nLmg+DQorI2luY2x1ZGUgPHN5cy9ybWxvY2suaD4NCiAjaW5jbHVk
ZSA8bmV0L3JhZGl4Lmg+DQogI2luY2x1ZGUgIm9wdF9tcGF0aC5oIg0KICNp
ZmRlZiBSQURJWF9NUEFUSA0KQEAgLTYxNCw3ICs2MTUsNyBAQA0KIAlzdHJ1
Y3QgcmFkaXhfbm9kZSB0cmVlbm9kZXNbMl07DQogew0KIAljYWRkcl90IHYg
PSAoY2FkZHJfdCl2X2FyZywgbmV0bWFzayA9IChjYWRkcl90KW5fYXJnOw0K
LQlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhfbm9kZSAqdCwgKnggPSAwLCAqdHQ7
DQorCXJlZ2lzdGVyIHN0cnVjdCByYWRpeF9ub2RlICp0LCAqeCA9IDAsICp4
eCA9IDAsICp0dDsNCiAJc3RydWN0IHJhZGl4X25vZGUgKnNhdmVkX3R0LCAq
dG9wID0gaGVhZC0+cm5oX3RyZWV0b3A7DQogCXNob3J0IGIgPSAwLCBiX2xl
YWYgPSAwOw0KIAlpbnQga2V5ZHVwbGljYXRlZDsNCkBAIC03MjMsMTIgKzcy
NCwxOSBAQA0KIAkJeCA9IHQtPnJuX3JpZ2h0Ow0KIAkvKiBQcm9tb3RlIGdl
bmVyYWwgcm91dGVzIGZyb20gYmVsb3cgKi8NCiAJaWYgKHgtPnJuX2JpdCA8
IDApIHsNCi0JICAgIGZvciAobXAgPSAmdC0+cm5fbWtsaXN0OyB4OyB4ID0g
eC0+cm5fZHVwZWRrZXkpDQorICAgICAgICAgICAgZm9yIChtcCA9ICZ0LT5y
bl9ta2xpc3Q7IHg7IHh4ID0geCwgeCA9IHgtPnJuX2R1cGVka2V5KSB7DQor
ICAgICAgICAgICAgICAgIGlmICh4eCAmJiB4eC0+cm5fbWtsaXN0ICYmIHh4
LT5ybl9tYXNrID09IHgtPnJuX21hc2sgJiYNCisJCQkJeC0+cm5fbWtsaXN0
ID09IDApIHsNCisJCQkvKiBtdWx0aXBhdGggcm91dGUsIGJ1bXAgcmVmY291
bnQgb24gZmlyc3QgbWtsaXN0ICovDQorCQkJeC0+cm5fbWtsaXN0ID0geHgt
PnJuX21rbGlzdDsNCisJCQl4LT5ybl9ta2xpc3QtPnJtX3JlZnMrKzsNCisJ
CX0NCiAJCWlmICh4LT5ybl9tYXNrICYmICh4LT5ybl9iaXQgPj0gYl9sZWFm
KSAmJiB4LT5ybl9ta2xpc3QgPT0gMCkgew0KIAkJCSptcCA9IG0gPSBybl9u
ZXdfcmFkaXhfbWFzayh4LCAwKTsNCiAJCQlpZiAobSkNCiAJCQkJbXAgPSAm
bS0+cm1fbWtsaXN0Ow0KIAkJfQ0KKwkgICAgfQ0KIAl9IGVsc2UgaWYgKHgt
PnJuX21rbGlzdCkgew0KIAkJLyoNCiAJCSAqIFNraXAgb3ZlciBtYXNrcyB3
aG9zZSBpbmRleCBpcyA+IHRoYXQgb2YgbmV3IG5vZGUNCkBAIC03NjAsMTEg
Kzc2OCwzMCBAQA0KIAkJCWJyZWFrOw0KIAkJaWYgKG0tPnJtX2ZsYWdzICYg
Uk5GX05PUk1BTCkgew0KIAkJCW1tYXNrID0gbS0+cm1fbGVhZi0+cm5fbWFz
azsNCi0JCQlpZiAodHQtPnJuX2ZsYWdzICYgUk5GX05PUk1BTCkgew0KLSNp
ZiAhZGVmaW5lZChSQURJWF9NUEFUSCkNCi0JCQkgICAgbG9nKExPR19FUlIs
DQotCQkJICAgICAgICAiTm9uLXVuaXF1ZSBub3JtYWwgcm91dGUsIG1hc2sg
bm90IGVudGVyZWRcbiIpOw0KKwkJCWlmIChrZXlkdXBsaWNhdGVkKSB7DQor
CQkJCWlmIChtLT5ybV9sZWFmLT5ybl9wYXJlbnQgPT0gdHQpDQorCQkJCQkv
KiBuZXcgcm91dGUgaXMgYmV0dHRlciAqLw0KKwkJCQkJbS0+cm1fbGVhZiA9
IHR0Ow0KKyNpZmRlZiBESUFHTk9TVElDDQorCQkJCWVsc2Ugew0KKwkJCQkJ
Zm9yICh0ID0gbS0+cm1fbGVhZjsgdDsNCisJCQkJCQl0ID0gdC0+cm5fZHVw
ZWRrZXkpIHsNCisJCQkJCQlicmVhazsNCisJCQkJCX0NCisJCQkJCWlmICh0
ID09IE5VTEwpIHsNCisJCQkJCQlsb2coTE9HX0VSUiwgIk5vbi11bmlxdWUg
Ig0KKwkJCQkJCQkibm9ybWFsIHJvdXRlIG9uIGR1cGVka2V5LCAiDQorCQkJ
CQkJCSJtYXNrIG5vdCBlbnRlcmVkXG4iKTsNCisJCQkJCQlyZXR1cm4gdHQ7
DQorCQkJCQl9DQorCQkJCX0NCiAjZW5kaWYNCisJCQkJbS0+cm1fcmVmcysr
Ow0KKwkJCQl0dC0+cm5fbWtsaXN0ID0gbTsNCisJCQkJcmV0dXJuIHR0Ow0K
KwkJCX0gZWxzZSBpZiAodHQtPnJuX2ZsYWdzICYgUk5GX05PUk1BTCkgew0K
KwkJCQlsb2coTE9HX0VSUiwgIk5vbi11bmlxdWUgbm9ybWFsIHJvdXRlLCIN
CisJCQkJCSIgbWFzayBub3QgZW50ZXJlZFxuIik7DQogCQkJCXJldHVybiB0
dDsNCiAJCQl9DQogCQl9IGVsc2UNCkBAIC03ODMsOSArODEwLDEwIEBADQog
fQ0KIA0KIHN0cnVjdCByYWRpeF9ub2RlICoNCi1ybl9kZWxldGUodl9hcmcs
IG5ldG1hc2tfYXJnLCBoZWFkKQ0KK3JuX2RlbGV0ZSh2X2FyZywgbmV0bWFz
a19hcmcsIGhlYWQsIHJuKQ0KIAl2b2lkICp2X2FyZywgKm5ldG1hc2tfYXJn
Ow0KIAlzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpoZWFkOw0KKwlzdHJ1Y3Qg
cmFkaXhfbm9kZSAqcm47DQogew0KIAlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhf
bm9kZSAqdCwgKnAsICp4LCAqdHQ7DQogCXN0cnVjdCByYWRpeF9tYXNrICpt
LCAqc2F2ZWRfbSwgKiptcDsNCkBAIC04MTUsMTMgKzg0MywzNyBAQA0KIAkJ
CWlmICgodHQgPSB0dC0+cm5fZHVwZWRrZXkpID09IDApDQogCQkJCXJldHVy
biAoMCk7DQogCX0NCisjaWZkZWYgUkFESVhfTVBBVEgNCisJaWYgKHJuKSB7
DQorCQl3aGlsZSAodHQgIT0gcm4pDQorCQkJaWYgKCh0dCA9IHR0LT5ybl9k
dXBlZGtleSkgPT0gMCkNCisJCQkJcmV0dXJuICgwKTsNCisJfQ0KKyNlbmRp
Zg0KIAlpZiAodHQtPnJuX21hc2sgPT0gMCB8fCAoc2F2ZWRfbSA9IG0gPSB0
dC0+cm5fbWtsaXN0KSA9PSAwKQ0KIAkJZ290byBvbjE7DQogCWlmICh0dC0+
cm5fZmxhZ3MgJiBSTkZfTk9STUFMKSB7DQotCQlpZiAobS0+cm1fbGVhZiAh
PSB0dCB8fCBtLT5ybV9yZWZzID4gMCkgew0KKwkJaWYgKG0tPnJtX2xlYWYg
IT0gdHQgJiYgbS0+cm1fcmVmcyA9PSAwKSB7DQogCQkJbG9nKExPR19FUlIs
ICJybl9kZWxldGU6IGluY29uc2lzdGVudCBhbm5vdGF0aW9uXG4iKTsNCiAJ
CQlyZXR1cm4gMDsgIC8qIGRhbmdsaW5nIHJlZiBjb3VsZCBjYXVzZSBkaXNh
c3RlciAqLw0KIAkJfQ0KKwkJaWYgKG0tPnJtX2xlYWYgIT0gdHQpIHsNCisJ
CQlpZiAoLS1tLT5ybV9yZWZzID49IDApDQorCQkJCWdvdG8gb24xOw0KKwkJ
fQ0KKwkJLyogdHQgaXMgY3VycmVudGx5IHRoZSBoZWFkIG9mIHRoZSBwb3Nz
aWJsZSBtdWx0aXBhdGggY2hhaW4gKi8NCisJCWlmIChtLT5ybV9yZWZzID4g
MCkgew0KKwkJCWlmICh0dC0+cm5fZHVwZWRrZXkgPT0gTlVMTCB8fA0KKwkJ
CQl0dC0+cm5fZHVwZWRrZXktPnJuX21rbGlzdCAhPSBtKSB7DQorCQkJCQls
b2coTE9HX0VSUiwgInJuX2RlbGV0ZTogaW5jb25zaXN0ZW50ICINCisJCQkJ
CQkiZHVwZWRrZXkgbGlzdFxuIik7DQorCQkJCQlyZXR1cm4gKDApOw0KKwkJ
CX0NCisJCQltLT5ybV9sZWFmID0gdHQtPnJuX2R1cGVka2V5Ow0KKwkJCS0t
bS0+cm1fcmVmczsNCisJCQlnb3RvIG9uMTsNCisJCX0NCisJCS8qIGVsc2Ug
dHQgaXMgbGFzdCBhbmQgb25seSByb3V0ZSAqLw0KIAl9IGVsc2Ugew0KIAkJ
aWYgKG0tPnJtX21hc2sgIT0gdHQtPnJuX21hc2spIHsNCiAJCQlsb2coTE9H
X0VSUiwgInJuX2RlbGV0ZTogaW5jb25zaXN0ZW50IGFubm90YXRpb25cbiIp
Ow0KQEAgLTg3NSwxNSArOTI3LDEwIEBADQogCQkJZWxzZQ0KIAkJCQl0LT5y
bl9yaWdodCA9IHg7DQogCQl9IGVsc2Ugew0KLQkJCS8qIGZpbmQgbm9kZSBp
biBmcm9udCBvZiB0dCBvbiB0aGUgY2hhaW4gKi8NCi0JCQlmb3IgKHggPSBw
ID0gc2F2ZWRfdHQ7IHAgJiYgcC0+cm5fZHVwZWRrZXkgIT0gdHQ7KQ0KLQkJ
CQlwID0gcC0+cm5fZHVwZWRrZXk7DQotCQkJaWYgKHApIHsNCi0JCQkJcC0+
cm5fZHVwZWRrZXkgPSB0dC0+cm5fZHVwZWRrZXk7DQotCQkJCWlmICh0dC0+
cm5fZHVwZWRrZXkpCQkvKiBwYXJlbnQgKi8NCi0JCQkJCXR0LT5ybl9kdXBl
ZGtleS0+cm5fcGFyZW50ID0gcDsNCi0JCQkJCQkJCS8qIHBhcmVudCAqLw0K
LQkJCX0gZWxzZSBsb2coTE9HX0VSUiwgInJuX2RlbGV0ZTogY291bGRuJ3Qg
ZmluZCB1c1xuIik7DQorCQkJeCA9IHNhdmVkX3R0Ow0KKwkJCXQtPnJuX2R1
cGVka2V5ID0gdHQtPnJuX2R1cGVka2V5Ow0KKwkJCWlmICh0dC0+cm5fZHVw
ZWRrZXkpDQorCQkJCXR0LT5ybl9kdXBlZGtleS0+cm5fcGFyZW50ID0gdDsN
CiAJCX0NCiAJCXQgPSB0dCArIDE7DQogCQlpZiAgKHQtPnJuX2ZsYWdzICYg
Uk5GX0FDVElWRSkgew0KQEAgLTkzMSw4ICs5NzgsMTYgQEANCiAJCQkJaWYg
KG0gPT0geC0+cm5fbWtsaXN0KSB7DQogCQkJCQlzdHJ1Y3QgcmFkaXhfbWFz
ayAqbW0gPSBtLT5ybV9ta2xpc3Q7DQogCQkJCQl4LT5ybl9ta2xpc3QgPSAw
Ow0KLQkJCQkJaWYgKC0tKG0tPnJtX3JlZnMpIDwgMCkNCisJCQkJCWlmICgt
LShtLT5ybV9yZWZzKSA8IDApIHsNCiAJCQkJCQlNS0ZyZWUobSk7DQorCQkJ
CQl9IGVsc2UgaWYgKG0tPnJtX2ZsYWdzICYgUk5GX05PUk1BTCkgew0KKwkJ
CQkJCS8qDQorCQkJCQkJKiBkb24ndCBwcm9ncmVzcyBiZWNhdXNlIHRoaXMN
CisJCQkJCQkqIGEgbXVsdGlwYXRoIHJvdXRlLiBOZXh0DQorCQkJCQkJKiBy
b3V0ZSB3aWxsIHVzZSB0aGUgc2FtZSBtLg0KKwkJCQkJCSovDQorCQkJCQkJ
bW0gPSBtOw0KKwkJCQkJfQ0KIAkJCQkJbSA9IG1tOw0KIAkJCQl9DQogCQkJ
aWYgKG0pDQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXQvcmFkaXguaCAuL3N5cy9uZXQvcmFkaXguaA0KLS0tIC4uL3NyY19v
cmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQvcmFkaXguaAkyMDEwLTAzLTIzIDA5
OjU4OjU5LjAwMDAwMDAwMCArMDAwMA0KKysrIC4vc3lzL25ldC9yYWRpeC5o
CTIwMTEtMDQtMTIgMTY6Mjk6NDcuMDAwMDAwMDAwICswMDAwDQpAQCAtMzYs
NyArMzYsNyBAQA0KICNpZmRlZiBfS0VSTkVMDQogI2luY2x1ZGUgPHN5cy9f
bG9jay5oPg0KICNpbmNsdWRlIDxzeXMvX211dGV4Lmg+DQotI2luY2x1ZGUg
PHN5cy9fcndsb2NrLmg+DQorI2luY2x1ZGUgPHN5cy9fcm1sb2NrLmg+DQog
I2VuZGlmDQogDQogI2lmZGVmIE1BTExPQ19ERUNMQVJFDQpAQCAtMTE0LDcg
KzExNCw4IEBADQogCQkodm9pZCAqdiwgdm9pZCAqbWFzaywNCiAJCSAgICAg
c3RydWN0IHJhZGl4X25vZGVfaGVhZCAqaGVhZCwgc3RydWN0IHJhZGl4X25v
ZGUgbm9kZXNbXSk7DQogCXN0cnVjdAlyYWRpeF9ub2RlICooKnJuaF9kZWxh
ZGRyKQkvKiByZW1vdmUgYmFzZWQgb24gc29ja2FkZHIgKi8NCi0JCSh2b2lk
ICp2LCB2b2lkICptYXNrLCBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpoZWFk
KTsNCisJCSh2b2lkICp2LCB2b2lkICptYXNrLCBzdHJ1Y3QgcmFkaXhfbm9k
ZV9oZWFkICpoZWFkLA0KKwkJICAgICBzdHJ1Y3QgcmFkaXhfbm9kZSAqcm4p
Ow0KIAlzdHJ1Y3QJcmFkaXhfbm9kZSAqKCpybmhfZGVscGt0KQkvKiByZW1v
dmUgYmFzZWQgb24gcGFja2V0IGhkciAqLw0KIAkJKHZvaWQgKnYsIHZvaWQg
Km1hc2ssIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKmhlYWQpOw0KIAlzdHJ1
Y3QJcmFkaXhfbm9kZSAqKCpybmhfbWF0Y2hhZGRyKQkvKiBsb2NhdGUgYmFz
ZWQgb24gc29ja2FkZHIgKi8NCkBAIC0xMzMsNyArMTM0LDcgQEANCiAJc3Ry
dWN0CXJhZGl4X25vZGUgcm5oX25vZGVzWzNdOwkvKiBlbXB0eSB0cmVlIGZv
ciBjb21tb24gY2FzZSAqLw0KIAlpbnQJcm5oX211bHRpcGF0aDsJCQkvKiBt
dWx0aXBhdGggY2FwYWJsZSA/ICovDQogI2lmZGVmIF9LRVJORUwNCi0Jc3Ry
dWN0CXJ3bG9jayBybmhfbG9jazsJCS8qIGxvY2tzIGVudGlyZSByYWRpeCB0
cmVlICovDQorCXN0cnVjdAlybWxvY2sgcm5oX2xvY2s7CQkvKiBsb2NrcyBl
bnRpcmUgcmFkaXggdHJlZSAqLw0KICNlbmRpZg0KIH07DQogDQpAQCAtMTQ3
LDE3ICsxNDgsMTUgQEANCiAjZGVmaW5lIEZyZWUocCkgZnJlZSgoY2FkZHJf
dClwLCBNX1JUQUJMRSk7DQogDQogI2RlZmluZQlSQURJWF9OT0RFX0hFQURf
TE9DS19JTklUKHJuaCkJXA0KLSAgICByd19pbml0X2ZsYWdzKCYocm5oKS0+
cm5oX2xvY2ssICJyYWRpeCBub2RlIGhlYWQiLCAwKQ0KLSNkZWZpbmUJUkFE
SVhfTk9ERV9IRUFEX0xPQ0socm5oKQlyd193bG9jaygmKHJuaCktPnJuaF9s
b2NrKQ0KLSNkZWZpbmUJUkFESVhfTk9ERV9IRUFEX1VOTE9DSyhybmgpCXJ3
X3d1bmxvY2soJihybmgpLT5ybmhfbG9jaykNCi0jZGVmaW5lCVJBRElYX05P
REVfSEVBRF9STE9DSyhybmgpCXJ3X3Jsb2NrKCYocm5oKS0+cm5oX2xvY2sp
DQotI2RlZmluZQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgpCXJ3X3J1
bmxvY2soJihybmgpLT5ybmhfbG9jaykNCi0jZGVmaW5lCVJBRElYX05PREVf
SEVBRF9MT0NLX1RSWV9VUEdSQURFKHJuaCkJcndfdHJ5X3VwZ3JhZGUoJihy
bmgpLT5ybmhfbG9jaykNCi0NCi0NCi0jZGVmaW5lCVJBRElYX05PREVfSEVB
RF9ERVNUUk9ZKHJuaCkJcndfZGVzdHJveSgmKHJuaCktPnJuaF9sb2NrKQ0K
LSNkZWZpbmUJUkFESVhfTk9ERV9IRUFEX0xPQ0tfQVNTRVJUKHJuaCkgcndf
YXNzZXJ0KCYocm5oKS0+cm5oX2xvY2ssIFJBX0xPQ0tFRCkNCi0jZGVmaW5l
CVJBRElYX05PREVfSEVBRF9XTE9DS19BU1NFUlQocm5oKSByd19hc3NlcnQo
JihybmgpLT5ybmhfbG9jaywgUkFfV0xPQ0tFRCkNCisJcm1faW5pdF9mbGFn
cygmKHJuaCktPnJuaF9sb2NrLCAicmFkaXggbm9kZSBoZWFkIiwgMCkNCisj
ZGVmaW5lICAgICAgICBSQURJWF9OT0RFX0hFQURfTE9DSyhybmgpICAgICAg
IHJtX3dsb2NrKCYocm5oKS0+cm5oX2xvY2spDQorI2RlZmluZSAgICAgICAg
UkFESVhfTk9ERV9IRUFEX1VOTE9DSyhybmgpICAgICBybV93dW5sb2NrKCYo
cm5oKS0+cm5oX2xvY2spDQorI2RlZmluZSAgICAgICAgUkFESVhfTk9ERV9I
RUFEX1JMT0NLKHJuaCwgdHJhY2tlcikgICAgIHJtX3Jsb2NrKCYocm5oKS0+
cm5oX2xvY2ssICh0cmFja2VyKSkNCisjZGVmaW5lICAgICAgICBSQURJWF9O
T0RFX0hFQURfUlVOTE9DSyhybmgsIHRyYWNrZXIpICAgcm1fcnVubG9jaygm
KHJuaCktPnJuaF9sb2NrLCAodHJhY2tlcikpDQorDQorI2RlZmluZSAgICAg
ICAgUkFESVhfTk9ERV9IRUFEX0RFU1RST1kocm5oKSAgICBybV9kZXN0cm95
KCYocm5oKS0+cm5oX2xvY2spDQorI2RlZmluZSAgICAgICAgUkFESVhfTk9E
RV9IRUFEX0xPQ0tfQVNTRVJUKHJuaCkgICAgICAgIHJtX3dvd25lZCgmKHJu
aCktPnJuaF9sb2NrKQ0KKyNkZWZpbmUgICAgICAgIFJBRElYX05PREVfSEVB
RF9XTE9DS19BU1NFUlQocm5oKSAgICAgICBybV93b3duZWQoJihybmgpLT5y
bmhfbG9jaykNCiAjZW5kaWYgLyogX0tFUk5FTCAqLw0KIA0KIHZvaWQJIHJu
X2luaXQoaW50KTsNCkBAIC0xNjgsNyArMTY3LDcgQEANCiAJICpybl9hZGRt
YXNrKHZvaWQgKiwgaW50LCBpbnQpLA0KIAkgKnJuX2FkZHJvdXRlICh2b2lk
ICosIHZvaWQgKiwgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAqLA0KIAkJCXN0
cnVjdCByYWRpeF9ub2RlIFsyXSksDQotCSAqcm5fZGVsZXRlKHZvaWQgKiwg
dm9pZCAqLCBzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICopLA0KKwkgKnJuX2Rl
bGV0ZSh2b2lkICosIHZvaWQgKiwgc3RydWN0IHJhZGl4X25vZGVfaGVhZCAq
LCBzdHJ1Y3QgcmFkaXhfbm9kZSAqKSwNCiAJICpybl9sb29rdXAgKHZvaWQg
KnZfYXJnLCB2b2lkICptX2FyZywNCiAJCSAgICAgICAgc3RydWN0IHJhZGl4
X25vZGVfaGVhZCAqaGVhZCksDQogCSAqcm5fbWF0Y2godm9pZCAqLCBzdHJ1
Y3QgcmFkaXhfbm9kZV9oZWFkICopOw0KZGlmZiAtdSAtciAuLi9zcmNfb3Jn
XzguMl8yMDExMDMyOS9zeXMvbmV0L3JhZGl4X21wYXRoLmMgLi9zeXMvbmV0
L3JhZGl4X21wYXRoLmMNCi0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9z
eXMvbmV0L3JhZGl4X21wYXRoLmMJMjAxMS0wNC0xMiAyMTozMTowOC4wMDAw
MDAwMDAgKzAwMDANCisrKyAuL3N5cy9uZXQvcmFkaXhfbXBhdGguYwkyMDEx
LTA0LTE1IDE3OjQwOjQzLjAwMDAwMDAwMCArMDAwMA0KQEAgLTQ1LDYgKzQ1
LDggQEANCiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KICNpbmNsdWRlIDxz
eXMvZG9tYWluLmg+DQogI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4NCisjaW5j
bHVkZSA8c3lzL2xvY2suaD4NCisjaW5jbHVkZSA8c3lzL3JtbG9jay5oPg0K
ICNpbmNsdWRlIDxuZXQvcmFkaXguaD4NCiAjaW5jbHVkZSA8bmV0L3JhZGl4
X21wYXRoLmg+DQogI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPg0KQEAgLTU0LDcg
KzU2LDcgQEANCiAvKg0KICAqIGdpdmUgc29tZSBqaXR0ZXIgdG8gaGFzaCwg
dG8gYXZvaWQgc3luY2hyb25pemF0aW9uIGJldHdlZW4gcm91dGVycw0KICAq
Lw0KLXN0YXRpYyB1aW50MzJfdCBoYXNoaml0dGVyOw0KK3VpbnQzMl90IGhh
c2hqaXR0ZXI7DQogDQogaW50DQogcm5fbXBhdGhfY2FwYWJsZShzdHJ1Y3Qg
cmFkaXhfbm9kZV9oZWFkICpybmgpDQpAQCAtNzcsMjAgKzc5LDYgQEANCiAJ
CXJldHVybiBOVUxMOw0KIH0NCiANCi11aW50MzJfdA0KLXJuX21wYXRoX2Nv
dW50KHN0cnVjdCByYWRpeF9ub2RlICpybikNCi17DQotCXVpbnQzMl90IGkg
PSAwOw0KLQlzdHJ1Y3QgcnRlbnRyeSAqcnQ7DQotCQ0KLQl3aGlsZSAocm4g
IT0gTlVMTCkgew0KLQkJcnQgPSAoc3RydWN0IHJ0ZW50cnkgKilybjsNCi0J
CWkgKz0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0Ow0KLQkJcm4gPSBybl9tcGF0
aF9uZXh0KHJuKTsNCi0JfQ0KLQlyZXR1cm4gKGkpOw0KLX0NCi0NCiBzdHJ1
Y3QgcnRlbnRyeSAqDQogcnRfbXBhdGhfbWF0Y2hnYXRlKHN0cnVjdCBydGVu
dHJ5ICpydCwgc3RydWN0IHNvY2thZGRyICpnYXRlKQ0KIHsNCkBAIC0xMjUs
MzMgKzExMyw2IEBADQogCXJldHVybiAoc3RydWN0IHJ0ZW50cnkgKilybjsN
CiB9DQogDQotLyogDQotICogZ28gdGhyb3VnaCB0aGUgY2hhaW4gYW5kIHVu
bGluayAicnQiIGZyb20gdGhlIGxpc3QNCi0gKiB0aGUgY2FsbGVyIHdpbGwg
ZnJlZSAicnQiDQotICovDQotaW50DQotcnRfbXBhdGhfZGVsZHVwKHN0cnVj
dCBydGVudHJ5ICpoZWFkcnQsIHN0cnVjdCBydGVudHJ5ICpydCkNCi17DQot
ICAgICAgICBzdHJ1Y3QgcmFkaXhfbm9kZSAqdCwgKnR0Ow0KLQ0KLSAgICAg
ICAgaWYgKCFoZWFkcnQgfHwgIXJ0KQ0KLSAgICAgICAgICAgIHJldHVybiAo
MCk7DQotICAgICAgICB0ID0gKHN0cnVjdCByYWRpeF9ub2RlICopaGVhZHJ0
Ow0KLSAgICAgICAgdHQgPSBybl9tcGF0aF9uZXh0KHQpOw0KLSAgICAgICAg
d2hpbGUgKHR0KSB7DQotICAgICAgICAgICAgaWYgKHR0ID09IChzdHJ1Y3Qg
cmFkaXhfbm9kZSAqKXJ0KSB7DQotICAgICAgICAgICAgICAgIHQtPnJuX2R1
cGVka2V5ID0gdHQtPnJuX2R1cGVka2V5Ow0KLSAgICAgICAgICAgICAgICB0
dC0+cm5fZHVwZWRrZXkgPSBOVUxMOw0KLSAgICAJICAgICAgICB0dC0+cm5f
ZmxhZ3MgJj0gflJORl9BQ1RJVkU7DQotCSAgICAgICAgdHRbMV0ucm5fZmxh
Z3MgJj0gflJORl9BQ1RJVkU7DQotICAgICAgICAgICAgICAgIHJldHVybiAo
MSk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIHQgPSB0dDsNCi0g
ICAgICAgICAgICB0dCA9IHJuX21wYXRoX25leHQoKHN0cnVjdCByYWRpeF9u
b2RlICopdCk7DQotICAgICAgICB9DQotICAgICAgICByZXR1cm4gKDApOw0K
LX0NCi0NCiAvKg0KICAqIGNoZWNrIGlmIHdlIGhhdmUgdGhlIHNhbWUga2V5
L21hc2svZ2F0ZXdheSBvbiB0aGUgdGFibGUgYWxyZWFkeS4NCiAgKi8NCkBA
IC0yNjEsMTAgKzIyMiwyMSBAQA0KIHZvaWQNCiBydGFsbG9jX21wYXRoX2Zp
YihzdHJ1Y3Qgcm91dGUgKnJvLCB1aW50MzJfdCBoYXNoLCB1X2ludCBmaWJu
dW0pDQogew0KKwlydGFsbG9jX21wYXRoX2ZpYl9mbGFncyggcm8sIGhhc2gs
IGZpYm51bSwgMCk7DQorfQ0KKw0KKy8qDQorICogZmxhZyBSVEZfR0FURVdB
WSByZXR1cm5zIG9ubHkgaW50ZXJmYWNlIHJvdXRlcywNCisgKiBvbmx5IG9u
ZSBpbnRlcmZhY2Utcm91dGUgaXMgcG9zc2libGUNCisgKi8NCit2b2lkDQor
cnRhbGxvY19tcGF0aF9maWJfZmxhZ3Moc3RydWN0IHJvdXRlICpybywgdWlu
dDMyX3QgaGFzaCwgdV9pbnQgZmlibnVtLCBpbnQgZmxhZ3MpDQorew0KIAlz
dHJ1Y3QgcmFkaXhfbm9kZSAqcm4wLCAqcm47DQotCXVfaW50MzJfdCBuOw0K
Kwl1X2ludDMyX3QgbiA9IDE7DQogCXN0cnVjdCBydGVudHJ5ICpydDsNCiAJ
aW50NjRfdCB3ZWlnaHQ7DQorCWludDY0X3QgbG93ZXN0X3dlaWdodDsNCiAN
CiAJLyoNCiAJICogWFhYIHdlIGRvbid0IGF0dGVtcHQgdG8gbG9va3VwIGNh
Y2hlZCByb3V0ZSBhZ2Fpbjsgd2hhdCBzaG91bGQNCkBAIC0yODUsMjAgKzI1
NywzNSBAQA0KIA0KIAkvKiBiZXlvbmQgaGVyZSwgd2UgdXNlIHJuIGFzIHRo
ZSBtYXN0ZXIgY29weSAqLw0KIAlybjAgPSBybiA9IChzdHJ1Y3QgcmFkaXhf
bm9kZSAqKXJvLT5yb19ydDsNCi0JbiA9IHJuX21wYXRoX2NvdW50KHJuMCk7
DQorDQorCS8qIGZpbmQgbG93ZXN0IHdlaWdodCByb3V0ZSAqLw0KKwlmb3Ig
KCBydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuLCB3ZWlnaHQgPSBydC0+cnRf
cm14LnJteF93ZWlnaHQ7DQorCSAgICBybiAhPSBOVUxMOyBybiA9IHJuX21w
YXRoX25leHQoIHJuKSkgew0KKwkJcnQgPSAoc3RydWN0IHJ0ZW50cnkgKily
bjsNCisJCWlmICgocnQtPnJ0X2ZsYWdzICYgUlRGX1VQKSAmJiAhKHJ0LT5y
dF9mbGFncyAmIGZsYWdzKSkgew0KKwkJCWlmIChmbGFncyAmIFJURl9HQVRF
V0FZKSAvKiBzaG9ydGN1dCAqLw0KKwkJCQlnb3RvIGVuZDsJLyogb25seSAx
IGludGVyZmFjZSByb3V0ZSBwb3NzaWJsZSEgKi8NCisJCQlpZiAod2VpZ2h0
ID4gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KSB7DQorCQkJCXdlaWdodCA9IHJ0
LT5ydF9ybXgucm14X3dlaWdodDsNCisJCQkJbiA9IDE7DQorCQkJfSBlbHNl
IGlmICh3ZWlnaHQgPT0gcnQtPnJ0X3JteC5ybXhfd2VpZ2h0KQ0KKwkJCQlu
Kys7DQorCQl9DQorCX0NCisJbG93ZXN0X3dlaWdodCA9IHdlaWdodDsNCiAN
CiAJLyogZ3cgc2VsZWN0aW9uIGJ5IE1vZHVsby1OIEhhc2ggKFJGQzI5OTEp
IFhYWCBuZWVkIGltcHJvdmVtZW50PyAqLw0KIAloYXNoICs9IGhhc2hqaXR0
ZXI7DQogCWhhc2ggJT0gbjsNCi0JZm9yICh3ZWlnaHQgPSBhYnMoKGludDMy
X3QpaGFzaCksIHJ0ID0gcm8tPnJvX3J0Ow0KLQkgICAgIHdlaWdodCA+PSBy
dC0+cnRfcm14LnJteF93ZWlnaHQgJiYgcm47IA0KLQkgICAgIHdlaWdodCAt
PSBydC0+cnRfcm14LnJteF93ZWlnaHQpIHsNCi0JCQ0KLQkJLyogc3RheSB3
aXRoaW4gdGhlIG11bHRpcGF0aCByb3V0ZXMgKi8NCi0JCWlmIChybi0+cm5f
ZHVwZWRrZXkgJiYgcm4tPnJuX21hc2sgIT0gcm4tPnJuX2R1cGVka2V5LT5y
bl9tYXNrKQ0KLQkJCWJyZWFrOw0KLQkJcm4gPSBybi0+cm5fZHVwZWRrZXk7
DQorCWZvciAoIHJuID0gcm4wLCBuID0gMDsgcm4gIT0gTlVMTDsgcm4gPSBy
bl9tcGF0aF9uZXh0KCBybikpIHsNCiAJCXJ0ID0gKHN0cnVjdCBydGVudHJ5
ICopcm47DQorCQlpZiAocnQtPnJ0X2ZsYWdzICYgUlRGX1VQKSB7DQorCQkJ
aWYgKCBydC0+cnRfcm14LnJteF93ZWlnaHQgPT0gbG93ZXN0X3dlaWdodCkg
ew0KKwkJCQlpZiAobiA9PSBoYXNoKQ0KKwkJCQkJYnJlYWs7DQorCQkJCW4r
KzsNCisJCQl9DQorCQl9DQogCX0NCiAJLyogWFhYIHRyeSBmaWxsaW5nIHJ0
X2d3cm91dGUgYW5kIGF2b2lkIHVucmVhY2hhYmxlIGd3ICAqLw0KIA0KQEAg
LTMwOCw2ICsyOTUsNyBAQA0KIAkJcm8tPnJvX3J0ID0gTlVMTDsNCiAJCXJl
dHVybjsNCiAJfQ0KK2VuZDoNCiAJaWYgKHJvLT5yb19ydCAhPSBydCkgew0K
IAkJUlRGUkVFX0xPQ0tFRChyby0+cm9fcnQpOw0KIAkJcm8tPnJvX3J0ID0g
KHN0cnVjdCBydGVudHJ5ICopcm47DQpkaWZmIC11IC1yIC4uL3NyY19vcmdf
OC4yXzIwMTEwMzI5L3N5cy9uZXQvcmFkaXhfbXBhdGguaCAuL3N5cy9uZXQv
cmFkaXhfbXBhdGguaA0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXQvcmFkaXhfbXBhdGguaAkyMDA5LTA4LTAzIDA4OjEzOjA2LjAwMDAw
MDAwMCArMDAwMA0KKysrIC4vc3lzL25ldC9yYWRpeF9tcGF0aC5oCTIwMTEt
MDQtMTUgMTc6Mzk6NTYuMDAwMDAwMDAwICswMDAwDQpAQCAtNDQsMTQgKzQ0
LDE1IEBADQogc3RydWN0IHJvdXRlOw0KIHN0cnVjdCBydGVudHJ5Ow0KIHN0
cnVjdCBzb2NrYWRkcjsNCitleHRlcm4gdWludDMyX3QgaGFzaGppdHRlcjsN
CiBpbnQJcm5fbXBhdGhfY2FwYWJsZShzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFk
ICopOw0KIHN0cnVjdCByYWRpeF9ub2RlICpybl9tcGF0aF9uZXh0KHN0cnVj
dCByYWRpeF9ub2RlICopOw0KLXVfaW50MzJfdCBybl9tcGF0aF9jb3VudChz
dHJ1Y3QgcmFkaXhfbm9kZSAqKTsNCiBzdHJ1Y3QgcnRlbnRyeSAqcnRfbXBh
dGhfbWF0Y2hnYXRlKHN0cnVjdCBydGVudHJ5ICosIHN0cnVjdCBzb2NrYWRk
ciAqKTsNCiBpbnQgcnRfbXBhdGhfY29uZmxpY3Qoc3RydWN0IHJhZGl4X25v
ZGVfaGVhZCAqLCBzdHJ1Y3QgcnRlbnRyeSAqLA0KICAgICBzdHJ1Y3Qgc29j
a2FkZHIgKik7DQordm9pZCBydGFsbG9jX21wYXRoX2ZpYl9mbGFncyhzdHJ1
Y3Qgcm91dGUgKiwgdV9pbnQzMl90LCB1X2ludCwgaW50KTsNCiB2b2lkIHJ0
YWxsb2NfbXBhdGhfZmliKHN0cnVjdCByb3V0ZSAqLCB1X2ludDMyX3QsIHVf
aW50KTsNCi0jZGVmaW5lIHJ0YWxsb2NfbXBhdGgoX3JvdXRlLCBfaGFzaCkg
cnRhbGxvY19tcGF0aF9maWIoKF9yb3V0ZSksIChfaGFzaCksIDApDQorI2Rl
ZmluZSBydGFsbG9jX21wYXRoKF9yb3V0ZSwgX2hhc2gpIHJ0YWxsb2NfbXBh
dGhfZmliX2ZsYWdzKChfcm91dGUpLCAoX2hhc2gpLCAwLCAwKQ0KIHN0cnVj
dCByYWRpeF9ub2RlICpybl9tcGF0aF9sb29rdXAodm9pZCAqLCB2b2lkICos
DQogICAgIHN0cnVjdCByYWRpeF9ub2RlX2hlYWQgKik7DQogaW50IHJ0X21w
YXRoX2RlbGR1cChzdHJ1Y3QgcnRlbnRyeSAqLCBzdHJ1Y3QgcnRlbnRyeSAq
KTsNCmRpZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25l
dC9yb3V0ZS5jIC4vc3lzL25ldC9yb3V0ZS5jDQotLS0gLi4vc3JjX29yZ184
LjJfMjAxMTAzMjkvc3lzL25ldC9yb3V0ZS5jCTIwMTEtMDQtMTQgMTY6MDk6
NDAuMDAwMDAwMDAwICswMDAwDQorKysgLi9zeXMvbmV0L3JvdXRlLmMJMjAx
MS0wNC0xNCAxNjoxNDoxOC4wMDAwMDAwMDAgKzAwMDANCkBAIC01MSw2ICs1
MSw4IEBADQogI2luY2x1ZGUgPHN5cy9wcm9jLmg+DQogI2luY2x1ZGUgPHN5
cy9kb21haW4uaD4NCiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPg0KKyNpbmNs
dWRlIDxzeXMvbG9jay5oPg0KKyNpbmNsdWRlIDxzeXMvcm1sb2NrLmg+DQog
DQogI2luY2x1ZGUgPG5ldC9pZi5oPg0KICNpbmNsdWRlIDxuZXQvaWZfZGwu
aD4NCkBAIC0zNDIsNiArMzQ0LDcgQEANCiAJc3RydWN0IHJhZGl4X25vZGUg
KnJuOw0KIAlzdHJ1Y3QgcnRlbnRyeSAqbmV3cnQ7DQogCXN0cnVjdCBydF9h
ZGRyaW5mbyBpbmZvOw0KKwlzdHJ1Y3Qgcm1fcHJpb3RyYWNrZXIgdHJhY2tl
cjsNCiAJaW50IGVyciA9IDAsIG1zZ3R5cGUgPSBSVE1fTUlTUzsNCiAJaW50
IG5lZWRsb2NrOw0KIA0KQEAgLTM1OCwyNCArMzYxLDI2IEBADQogCQlnb3Rv
IG1pc3M7DQogCX0NCiAJbmVlZGxvY2sgPSAhKGlnbmZsYWdzICYgUlRGX1JO
SF9MT0NLRUQpOw0KLQlpZiAobmVlZGxvY2spDQotCQlSQURJWF9OT0RFX0hF
QURfUkxPQ0socm5oKTsNCi0jaWZkZWYgSU5WQVJJQU5UUwkNCisJaWYgKG5l
ZWRsb2NrKSAvKiBYWFggd2UgYWx3YXlzIG5lZWQgdGhlIGxvY2sgZm9yIG5v
dyEgKi8NCisJCVJBRElYX05PREVfSEVBRF9MT0NLKHJuaCk7DQogCWVsc2UN
Ci0JCVJBRElYX05PREVfSEVBRF9MT0NLX0FTU0VSVChybmgpOw0KLSNlbmRp
Zg0KKwkJUkFESVhfTk9ERV9IRUFEX1JMT0NLKHJuaCwgJnRyYWNrZXIpOw0K
IAlybiA9IHJuaC0+cm5oX21hdGNoYWRkcihkc3QsIHJuaCk7DQogCWlmIChy
biAmJiAoKHJuLT5ybl9mbGFncyAmIFJORl9ST09UKSA9PSAwKSkgew0KIAkJ
bmV3cnQgPSBydCA9IFJOVE9SVChybik7DQogCQlSVF9MT0NLKG5ld3J0KTsN
CiAJCVJUX0FERFJFRihuZXdydCk7DQotCQlpZiAobmVlZGxvY2spDQotCQkJ
UkFESVhfTk9ERV9IRUFEX1JVTkxPQ0socm5oKTsNCisJCWlmIChuZWVkbG9j
aykgLyogWFhYIHdlIGFsd2F5cyBuZWVkIHRoZSBsb2NrIGZvciBub3chICov
DQorCQkJUkFESVhfTk9ERV9IRUFEX1VOTE9DSyhybmgpOw0KKwkJZWxzZQ0K
KwkJCVJBRElYX05PREVfSEVBRF9SVU5MT0NLKHJuaCwgJnRyYWNrZXIpOw0K
IAkJZ290byBkb25lOw0KKwl9DQorCWlmIChuZWVkbG9jaykgLyogWFhYIHdl
IGFsd2F5cyBuZWVkIHRoZSBsb2NrIGZvciBub3chICovDQorCQlSQURJWF9O
T0RFX0hFQURfVU5MT0NLKHJuaCk7DQorCWVsc2UNCisJCVJBRElYX05PREVf
SEVBRF9SVU5MT0NLKHJuaCwgJnRyYWNrZXIpOw0KIA0KLQl9IGVsc2UgaWYg
KG5lZWRsb2NrKQ0KLQkJUkFESVhfTk9ERV9IRUFEX1JVTkxPQ0socm5oKTsN
Ci0JDQogCS8qDQogCSAqIEVpdGhlciB3ZSBoaXQgdGhlIHJvb3Qgb3IgY291
bGRuJ3QgZmluZCBhbnkgbWF0Y2gsDQogCSAqIFdoaWNoIGJhc2ljYWxseSBt
ZWFucw0KQEAgLTQwMCw2ICs0MDUsMTYyIEBADQogfQ0KIA0KIC8qDQorICog
TG9va3VwIGEgZGVzdGluYXRpb24gaW4gdGhlIHJvdXRpbmcgdGFibGUgYW5k
DQorICogcmVwb3J0IHRoZSBuZXh0IGhvcCwgaW50ZXJmYWNlIGFuZCBpbnRl
cmZhY2UgYWRkcmVzcw0KKyAqIGluIGEgbmV3IHN0cnVjdHVyZS4NCisgKiBP
bmx5IHJlYWQgbG9jayBhY2Nlc3Mgb24gdGhlIHJvdXRpbmcgdGFibGUgaXMg
cmVxdWlyZWQsDQorICogaW5kaXZpZHVhbCByb3V0ZXMgYXJlIG5vdCBsb2Nr
ZWQuDQorICogUmV0dXJucyAxIGZvciBlbnRyeSBmb3VuZCwgMCBmb3Igbm90
IGZvdW5kLg0KKyAqLw0KK2ludA0KK3J0bG9va3VwX2ZpYihzdHJ1Y3Qgc29j
a2FkZHIgKmRzdCwgdV9pbnQgZmlibnVtLCBzdHJ1Y3QgcnRsb29rdXAgKnJ0
bCwNCisgICAgaW50IGZsYWdzKQ0KK3sNCisJc3RydWN0IHJhZGl4X25vZGVf
aGVhZCAqcm5oOw0KKwlzdHJ1Y3QgcmFkaXhfbm9kZSAqcm47DQorCXN0cnVj
dCBydGVudHJ5ICpydDsNCisJaW50IHJldCA9IDA7DQorCXN0cnVjdCBybV9w
cmlvdHJhY2tlciB0cmFja2VyOw0KKw0KKwlLQVNTRVJUKChmaWJudW0gPCBy
dF9udW1maWJzKSwgKCJydGFsbG9jMV9maWI6IGJhZCBmaWJudW0iKSk7DQor
CWlmIChkc3QtPnNhX2ZhbWlseSAhPSBBRl9JTkVUKSAgLyogT25seSBJTkVU
IHN1cHBvcnRzID4gMSBmaWIgbm93ICovDQorCQlmaWJudW0gPSAwOw0KKwly
bmggPSBydF90YWJsZXNfZ2V0X3JuaChmaWJudW0sIGRzdC0+c2FfZmFtaWx5
KTsNCisNCisJLyogTG9vayB1cCB0aGUgYWRkcmVzcyBpbiB0aGUgdGFibGUg
Zm9yIHRoYXQgQWRkcmVzcyBGYW1pbHkuICovDQorCWlmIChybmggPT0gTlVM
TCkgew0KKwkJVl9ydHN0YXQucnRzX3VucmVhY2grKzsNCisJCXJldHVybiAo
MCk7DQorCX0NCisNCisJUkFESVhfTk9ERV9IRUFEX1JMT0NLKHJuaCwgJnRy
YWNrZXIpOw0KKwlybiA9IHJuaC0+cm5oX21hdGNoYWRkcihkc3QsIHJuaCk7
DQorCWlmIChybiAhPSBOVUxMICYmICgocm4tPnJuX2ZsYWdzICYgUk5GX1JP
T1QpID09IDApKSB7DQorCQlydCA9IFJOVE9SVChybik7DQorDQorCQlpZigg
cnQtPnJ0X2dhdGV3YXktPnNhX2xlbiA+IHJ0bC0+cnRfZ2F0ZXdheS0+c2Ff
bGVuKSB7DQorCQkJdW5zaWduZWQgY2hhciBzYV9sZW4gPSBydGwtPnJ0X2dh
dGV3YXktPnNhX2xlbjsNCisJCQliY29weSggcnQtPnJ0X2dhdGV3YXksIHJ0
bC0+cnRfZ2F0ZXdheSwgc2FfbGVuKTsNCisJCQlydGwtPnJ0X2dhdGV3YXkt
PnNhX2xlbiA9IHNhX2xlbjsNCisJCX0gZWxzZSB7DQorCQkJdW5zaWduZWQg
Y2hhciBzYV9sZW4gPSBydC0+cnRfZ2F0ZXdheS0+c2FfbGVuOw0KKwkJCWJj
b3B5KCBydC0+cnRfZ2F0ZXdheSwgcnRsLT5ydF9nYXRld2F5LCBzYV9sZW4p
Ow0KKwkJCXJ0bC0+cnRfZ2F0ZXdheS0+c2FfbGVuID0gc2FfbGVuOw0KKwkJ
fQ0KKwkJcnRsLT5ydF9pZnAgPSBydC0+cnRfaWZwOw0KKwkJcnRsLT5ydF9p
ZmEgPSBydC0+cnRfaWZhOw0KKwkJcnRsLT5ydF9ybXgucm14X210dSA9IHJ0
LT5ydF9ybXgucm14X210dTsNCisJCXJ0bC0+cnRfcm14LnJteF9leHBpcmUg
PSBydC0+cnRfcm14LnJteF9leHBpcmU7DQorCQlydGwtPnJ0X2ZsYWdzID0g
cnQtPnJ0X2ZsYWdzOw0KKwkJaWYgKGZsYWdzICYgUlRMX1BLU0VOVCkNCisg
ICAgICAgICAgICAgICAgCXJ0LT5ydF9ybXgucm14X3Brc2VudCsrOyAvKiBy
YWN5IGJ1dCBvayAqLw0KKwkJcmV0ID0gMTsNCisJfQ0KKwlSQURJWF9OT0RF
X0hFQURfUlVOTE9DSyhybmgsICZ0cmFja2VyKTsNCisJcmV0dXJuIChyZXQp
Ow0KK30NCisNCisjaWZkZWYgUkFESVhfTVBBVEgNCisvKg0KKyAqIExvb2t1
cCBhIG1wYXRoIGRlc3RpbmF0aW9uIGluIHRoZSByb3V0aW5nIHRhYmxlIGFu
ZA0KKyAqIHJlcG9ydCB0aGUgbmV4dCBob3AsIGludGVyZmFjZSBhbmQgaW50
ZXJmYWNlIGFkZHJlc3MNCisgKiBpbiBhIG5ldyBzdHJ1Y3R1cmUuDQorICog
T25seSByZWFkIGxvY2sgYWNjZXNzIG9uIHRoZSByb3V0aW5nIHRhYmxlIGlz
IHJlcXVpcmVkLA0KKyAqIGluZGl2aWR1YWwgcm91dGVzIGFyZSBub3QgbG9j
a2VkLg0KKyAqIFJldHVybnMgMSBmb3IgZW50cnkgZm91bmQsIDAgZm9yIG5v
dCBmb3VuZC4NCisgKi8NCitpbnQNCitydGxvb2t1cF9tcGF0aF9maWIoc3Ry
dWN0IHNvY2thZGRyICpkc3QsIHVfaW50MzJfdCBoYXNoLCB1X2ludCBmaWJu
dW0sDQorICAgIHN0cnVjdCBydGxvb2t1cCAqcnRsLCBpbnQgZmxhZ3MpDQor
ew0KKwlzdHJ1Y3QgcmFkaXhfbm9kZV9oZWFkICpybmg7DQorCXN0cnVjdCBy
YWRpeF9ub2RlICpybiwgKnJuMDsNCisJc3RydWN0IHJ0ZW50cnkgKnJ0Ow0K
KwlpbnQgcmV0ID0gMDsNCisJc3RydWN0IHJtX3ByaW90cmFja2VyIHRyYWNr
ZXI7DQorCWludDY0X3Qgd2VpZ2h0Ow0KKwlpbnQ2NF90IGxvd2VzdF93ZWln
aHQ7DQorCXVfaW50MzJfdCBuID0gMDsNCisNCisJS0FTU0VSVCgoZmlibnVt
IDwgcnRfbnVtZmlicyksICgicnRhbGxvYzFfZmliOiBiYWQgZmlibnVtIikp
Ow0KKwlpZiAoZHN0LT5zYV9mYW1pbHkgIT0gQUZfSU5FVCkgIC8qIE9ubHkg
SU5FVCBzdXBwb3J0cyA+IDEgZmliIG5vdyAqLw0KKwkJZmlibnVtID0gMDsN
CisJcm5oID0gcnRfdGFibGVzX2dldF9ybmgoZmlibnVtLCBkc3QtPnNhX2Zh
bWlseSk7DQorDQorCS8qIExvb2sgdXAgdGhlIGFkZHJlc3MgaW4gdGhlIHRh
YmxlIGZvciB0aGF0IEFkZHJlc3MgRmFtaWx5LiAqLw0KKwlpZiAocm5oID09
IE5VTEwpIHsNCisJCVZfcnRzdGF0LnJ0c191bnJlYWNoKys7DQorCQlyZXR1
cm4gKDApOw0KKwl9DQorDQorCVJBRElYX05PREVfSEVBRF9STE9DSyhybmgs
ICZ0cmFja2VyKTsNCisJcm4gPSBybmgtPnJuaF9tYXRjaGFkZHIoZHN0LCBy
bmgpOw0KKwlpZiAocm4gIT0gTlVMTCAmJiAoKHJuLT5ybl9mbGFncyAmIFJO
Rl9ST09UKSA9PSAwKSkgew0KKwkJLyogd2UgaGF2ZSBhIHJvdXRlIC0gbm93
IGRvIHRoZSBtcGF0aCBzZWxlY3Rpb24gKi8NCisJCWlmIChybl9tcGF0aF9u
ZXh0KCBybikgIT0gTlVMTCkgeyAvKiBtdWx0aXBhdGggKi8NCisJCQlybjAg
PSBybjsNCisNCisJCQkvKiBmaW5kIGxvd2VzdCB3ZWlnaHQgcm91dGUgKi8N
CisJCQlmb3IgKCBydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJuLA0KKwkJCSAg
ICB3ZWlnaHQgPSBydC0+cnRfcm14LnJteF93ZWlnaHQ7DQorCQkJICAgIHJu
ICE9IE5VTEw7IHJuID0gcm5fbXBhdGhfbmV4dCggcm4pKSB7DQorCQkJCXJ0
ID0gKHN0cnVjdCBydGVudHJ5ICopcm47DQorCQkJCWlmKHJ0LT5ydF9mbGFn
cyAmIFJURl9VUCkgew0KKwkJCQkJaWYgKHdlaWdodCA+IHJ0LT5ydF9ybXgu
cm14X3dlaWdodCkgew0KKwkJCQkJCXdlaWdodCA9IHJ0LT5ydF9ybXgucm14
X3dlaWdodDsNCisJCQkJCQluID0gMTsNCisJCQkJCX0gZWxzZSBpZiAod2Vp
Z2h0ID09IHJ0LT5ydF9ybXgucm14X3dlaWdodCkNCisJCQkJCQluKys7DQor
CQkJCX0NCisJCQl9DQorCQkJbG93ZXN0X3dlaWdodCA9IHdlaWdodDsNCisN
CisJCQkvKiBzZWxlY3Qgbm93IG9uZSBvZiB0aGUgbG93ZXN0IHdlaWdodCBy
b3V0ZXMgKi8NCisJCQkvKiBndyBzZWxlY3Rpb24gYnkgTW9kdWxvLU4gSGFz
aCAoUkZDMjk5MSkgWFhYIG5lZWQgaW1wcm92ZW1lbnQ/ICovDQorCQkJaGFz
aCArPSBoYXNoaml0dGVyOw0KKwkJCWhhc2ggJT0gbjsNCisJCQlmb3IgKCBy
biA9IHJuMCwgbiA9IDA7IHJuICE9IE5VTEw7IHJuID0gcm5fbXBhdGhfbmV4
dCggcm4pKSB7DQorCQkJCXJ0ID0gKHN0cnVjdCBydGVudHJ5ICopcm47DQor
CQkJCWlmKHJ0LT5ydF9mbGFncyAmIFJURl9VUCkgew0KKwkJCQkJaWYgKCBy
dC0+cnRfcm14LnJteF93ZWlnaHQgPT0gbG93ZXN0X3dlaWdodCkgew0KKwkJ
CQkJCWlmIChuID09IGhhc2gpDQorCQkJCQkJCWJyZWFrOw0KKwkJCQkJCW4r
KzsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisNCisJCQkvKiBndyBzZWxl
Y3Rpb24gaGFzIGZhaWxlZCAtIHRoZXJlIG11c3QgYmUgb25seSB6ZXJvIHdl
aWdodCByb3V0ZXMgKi8gICAgICAgICAgICAgICAgICAgDQorCQkJaWYgKCFy
bikNCisJCQkJZ290byBlbmQ7DQorCQl9IGVsc2UNCisJCQlydCA9IChzdHJ1
Y3QgcnRlbnRyeSAqKXJuOw0KKw0KKwkJaWYoIHJ0LT5ydF9nYXRld2F5LT5z
YV9sZW4gPiBydGwtPnJ0X2dhdGV3YXktPnNhX2xlbikgew0KKwkJCXVuc2ln
bmVkIGNoYXIgc2FfbGVuID0gcnRsLT5ydF9nYXRld2F5LT5zYV9sZW47DQor
CQkJYmNvcHkoIHJ0LT5ydF9nYXRld2F5LCBydGwtPnJ0X2dhdGV3YXksIHNh
X2xlbik7DQorCQkJcnRsLT5ydF9nYXRld2F5LT5zYV9sZW4gPSBzYV9sZW47
DQorCQl9IGVsc2Ugew0KKwkJCXVuc2lnbmVkIGNoYXIgc2FfbGVuID0gcnQt
PnJ0X2dhdGV3YXktPnNhX2xlbjsNCisJCQliY29weSggcnQtPnJ0X2dhdGV3
YXksIHJ0bC0+cnRfZ2F0ZXdheSwgc2FfbGVuKTsNCisJCQlydGwtPnJ0X2dh
dGV3YXktPnNhX2xlbiA9IHNhX2xlbjsNCisJCX0NCisJCXJ0bC0+cnRfaWZw
ID0gcnQtPnJ0X2lmcDsNCisJCXJ0bC0+cnRfaWZhID0gcnQtPnJ0X2lmYTsN
CisJCXJ0bC0+cnRfcm14LnJteF9tdHUgPSBydC0+cnRfcm14LnJteF9tdHU7
DQorCQlydGwtPnJ0X3JteC5ybXhfZXhwaXJlID0gcnQtPnJ0X3JteC5ybXhf
ZXhwaXJlOw0KKwkJcnRsLT5ydF9mbGFncyA9IHJ0LT5ydF9mbGFnczsNCisJ
CWlmIChmbGFncyAmIFJUTF9QS1NFTlQpDQorCQkJcnQtPnJ0X3JteC5ybXhf
cGtzZW50Kys7CS8qIHJhY3kgYnV0IG9rICovDQorCQlyZXQgPSAxOw0KKwl9
DQorZW5kOg0KKwlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgsICZ0cmFj
a2VyKTsNCisJcmV0dXJuIChyZXQpOw0KK30NCisjZW5kaWYNCisNCisvKg0K
ICAqIFJlbW92ZSBhIHJlZmVyZW5jZSBjb3VudCBmcm9tIGFuIHJ0ZW50cnku
DQogICogSWYgdGhlIGNvdW50IGdldHMgbG93IGVub3VnaCwgdGFrZSBpdCBv
dXQgb2YgdGhlIHJvdXRpbmcgdGFibGUNCiAgKi8NCkBAIC04NzUsNyArMTAz
Niw3IEBADQogCSAqIFJlbW92ZSB0aGUgaXRlbSBmcm9tIHRoZSB0cmVlOyBp
dCBzaG91bGQgYmUgdGhlcmUsDQogCSAqIGJ1dCB3aGVuIGNhbGxlcnMgaW52
b2tlIHVzIGJsaW5kbHkgaXQgbWF5IG5vdCAoc2lnaCkuDQogCSAqLw0KLQly
biA9IHJuaC0+cm5oX2RlbGFkZHIocnRfa2V5KHJ0KSwgcnRfbWFzayhydCks
IHJuaCk7DQorCXJuID0gcm5oLT5ybmhfZGVsYWRkcihydF9rZXkocnQpLCBy
dF9tYXNrKHJ0KSwgcm5oLCBOVUxMKTsNCiAJaWYgKHJuID09IE5VTEwpIHsN
CiAJCWVycm9yID0gRVNSQ0g7DQogCQlnb3RvIGJhZDsNCkBAIC05MTMsMTEy
ICsxMDc0LDYgQEANCiAJcmV0dXJuIChlcnJvcik7DQogfQ0KIA0KLSNpZmRl
ZiBSQURJWF9NUEFUSA0KLXN0YXRpYyBpbnQNCi1ybl9tcGF0aF91cGRhdGUo
aW50IHJlcSwgc3RydWN0IHJ0X2FkZHJpbmZvICppbmZvLA0KLSAgICBzdHJ1
Y3QgcmFkaXhfbm9kZV9oZWFkICpybmgsIHN0cnVjdCBydGVudHJ5ICoqcmV0
X25ydCkNCi17DQotCS8qDQotCSAqIGlmIHdlIGdvdCBtdWx0aXBhdGggcm91
dGVzLCB3ZSByZXF1aXJlIHVzZXJzIHRvIHNwZWNpZnkNCi0JICogYSBtYXRj
aGluZyBSVEFYX0dBVEVXQVkuDQotCSAqLw0KLQlzdHJ1Y3QgcnRlbnRyeSAq
cnQsICpydG8gPSBOVUxMOw0KLQlyZWdpc3RlciBzdHJ1Y3QgcmFkaXhfbm9k
ZSAqcm47DQotCWludCBlcnJvciA9IDA7DQotDQotCXJuID0gcm5oLT5ybmhf
bWF0Y2hhZGRyKGRzdCwgcm5oKTsNCi0JaWYgKHJuID09IE5VTEwpDQotCQly
ZXR1cm4gKEVTUkNIKTsNCi0JcnRvID0gcnQgPSBSTlRPUlQocm4pOw0KLQly
dCA9IHJ0X21wYXRoX21hdGNoZ2F0ZShydCwgZ2F0ZXdheSk7DQotCWlmIChy
dCA9PSBOVUxMKQ0KLQkJcmV0dXJuIChFU1JDSCk7DQotCS8qDQotCSAqIHRo
aXMgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBjaGFpbg0KLQkgKi8NCi0J
aWYgKHJ0byA9PSBydCkgew0KLQkJcm4gPSBybl9tcGF0aF9uZXh0KChzdHJ1
Y3QgcmFkaXhfbm9kZSAqKXJ0KTsNCi0JCS8qDQotCQkgKiB0aGVyZSBpcyBh
bm90aGVyIGVudHJ5LCBub3cgaXQncyBhY3RpdmUNCi0JCSAqLw0KLQkJaWYg
KHJuKSB7DQotCQkJcnRvID0gUk5UT1JUKHJuKTsNCi0JCQlSVF9MT0NLKHJ0
byk7DQotCQkJcnRvLT5ydF9mbGFncyB8PSBSVEZfVVA7DQotCQkJUlRfVU5M
T0NLKHJ0byk7DQotCQl9IGVsc2UgaWYgKHJ0LT5ydF9mbGFncyAmIFJURl9H
QVRFV0FZKSB7DQotCQkJLyoNCi0JCQkgKiBGb3IgZ2F0ZXdheSByb3V0ZXMs
IHdlIG5lZWQgdG8gDQotCQkJICogbWFrZSBzdXJlIHRoYXQgd2Ugd2UgYXJl
IGRlbGV0aW5nDQotCQkJICogdGhlIGNvcnJlY3QgZ2F0ZXdheS4gDQotCQkJ
ICogcnRfbXBhdGhfbWF0Y2hnYXRlKCkgZG9lcyBub3QgDQotCQkJICogY2hl
Y2sgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmx5DQotCQkJICogb25lIHJv
dXRlIGluIHRoZSBjaGFpbi4gIA0KLQkJCSAqLw0KLQkJCWlmIChnYXRld2F5
ICYmDQotCQkJICAgIChydC0+cnRfZ2F0ZXdheS0+c2FfbGVuICE9IGdhdGV3
YXktPnNhX2xlbiB8fA0KLQkJCQltZW1jbXAocnQtPnJ0X2dhdGV3YXksIGdh
dGV3YXksIGdhdGV3YXktPnNhX2xlbikpKQ0KLQkJCQllcnJvciA9IEVTUkNI
Ow0KLQkJCWVsc2Ugew0KLQkJCQkvKg0KLQkJCQkgKiByZW1vdmUgZnJvbSB0
cmVlIGJlZm9yZSByZXR1cm5pbmcgaXQNCi0JCQkJICogdG8gdGhlIGNhbGxl
cg0KLQkJCQkgKi8NCi0JCQkJcm4gPSBybmgtPnJuaF9kZWxhZGRyKGRzdCwg
bmV0bWFzaywgcm5oKTsNCi0JCQkJS0FTU0VSVChydCA9PSBSTlRPUlQocm4p
LCAoInJhZGl4IG5vZGUgZGlzYXBwZWFyZWQiKSk7DQotCQkJCWdvdG8gZ3dk
ZWxldGU7DQotCQkJfQ0KLQkJCQ0KLQkJfQ0KLQkJLyoNCi0JCSAqIHVzZSB0
aGUgbm9ybWFsIGRlbGV0ZSBjb2RlIHRvIHJlbW92ZQ0KLQkJICogdGhlIGZp
cnN0IGVudHJ5DQotCQkgKi8NCi0JCWlmIChyZXEgIT0gUlRNX0RFTEVURSkg
DQotCQkJZ290byBub25kZWxldGU7DQotDQotCQllcnJvciA9IEVOT0VOVDsN
Ci0JCWdvdG8gZG9uZTsNCi0JfQ0KLQkJDQotCS8qDQotCSAqIGlmIHRoZSBl
bnRyeSBpcyAybmQgYW5kIG9uIHVwDQotCSAqLw0KLQlpZiAoKHJlcSA9PSBS
VE1fREVMRVRFKSAmJiAhcnRfbXBhdGhfZGVsZHVwKHJ0bywgcnQpKQ0KLQkJ
cGFuaWMgKCJydHJlcXVlc3QxOiBydF9tcGF0aF9kZWxkdXAiKTsNCi1nd2Rl
bGV0ZToNCi0JUlRfTE9DSyhydCk7DQotCVJUX0FERFJFRihydCk7DQotCWlm
IChyZXEgPT0gUlRNX0RFTEVURSkgew0KLQkJcnQtPnJ0X2ZsYWdzICY9IH5S
VEZfVVA7DQotCQkvKg0KLQkJICogT25lIG1vcmUgcnRlbnRyeSBmbG9hdGlu
ZyBhcm91bmQgdGhhdCBpcyBub3QNCi0JCSAqIGxpbmtlZCB0byB0aGUgcm91
dGluZyB0YWJsZS4gcnR0cmFzaCB3aWxsIGJlIGRlY3JlbWVudGVkDQotCQkg
KiB3aGVuIFJURlJFRShydCkgaXMgZXZlbnR1YWxseSBjYWxsZWQuDQotCQkg
Ki8NCi0JCVZfcnR0cmFzaCsrOw0KLQl9DQotCQ0KLW5vbmRlbGV0ZToNCi0J
aWYgKHJlcSAhPSBSVE1fREVMRVRFKQ0KLQkJcGFuaWMoInVucmVjb2duaXpl
ZCByZXF1ZXN0ICVkIiwgcmVxKTsNCi0JDQotDQotCS8qDQotCSAqIElmIHRo
ZSBjYWxsZXIgd2FudHMgaXQsIHRoZW4gaXQgY2FuIGhhdmUgaXQsDQotCSAq
IGJ1dCBpdCdzIHVwIHRvIGl0IHRvIGZyZWUgdGhlIHJ0ZW50cnkgYXMgd2Ug
d29uJ3QgYmUNCi0JICogZG9pbmcgaXQuDQotCSAqLw0KLQlpZiAocmV0X25y
dCkgew0KLQkJKnJldF9ucnQgPSBydDsNCi0JCVJUX1VOTE9DSyhydCk7DQot
CX0gZWxzZQ0KLQkJUlRGUkVFX0xPQ0tFRChydCk7DQotZG9uZToNCi0JcmV0
dXJuIChlcnJvcik7DQotfQ0KLSNlbmRpZg0KLQ0KIGludA0KIHJ0cmVxdWVz
dDFfZmliKGludCByZXEsIHN0cnVjdCBydF9hZGRyaW5mbyAqaW5mbywgc3Ry
dWN0IHJ0ZW50cnkgKipyZXRfbnJ0LA0KIAkJCQl1X2ludCBmaWJudW0pDQpA
QCAtMTAzMiw2ICsxMDg3LDcgQEANCiAJcmVnaXN0ZXIgc3RydWN0IHJhZGl4
X25vZGVfaGVhZCAqcm5oOw0KIAlzdHJ1Y3QgaWZhZGRyICppZmE7DQogCXN0
cnVjdCBzb2NrYWRkciAqbmRzdDsNCisJc3RydWN0IHJtX3ByaW90cmFja2Vy
IHRyYWNrZXI7DQogI2RlZmluZSBzZW5kZXJyKHgpIHsgZXJyb3IgPSB4IDsg
Z290byBiYWQ7IH0NCiANCiAJS0FTU0VSVCgoZmlibnVtIDwgcnRfbnVtZmli
cyksICgicnRyZXF1ZXN0MV9maWI6IGJhZCBmaWJudW0iKSk7DQpAQCAtMTA0
OCw3ICsxMTA0LDcgQEANCiAJaWYgKG5lZWRsb2NrKQ0KIAkJUkFESVhfTk9E
RV9IRUFEX0xPQ0socm5oKTsNCiAJZWxzZQ0KLQkJUkFESVhfTk9ERV9IRUFE
X0xPQ0tfQVNTRVJUKHJuaCk7DQorCQlSQURJWF9OT0RFX0hFQURfUkxPQ0so
cm5oLCAmdHJhY2tlcik7DQogCS8qDQogCSAqIElmIHdlIGFyZSBhZGRpbmcg
YSBob3N0IHJvdXRlIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBwdXQNCiAJICog
YSBuZXRtYXNrIGluIHRoZSB0cmVlLCBub3IgZG8gd2Ugd2FudCB0byBjbG9u
ZSBpdC4NCkBAIC0xMDU4LDI4ICsxMTE0LDMwIEBADQogDQogCXN3aXRjaCAo
cmVxKSB7DQogCWNhc2UgUlRNX0RFTEVURToNCisJCWlmICgocm4gPSBybmgt
PnJuaF9sb29rdXAoZHN0LCBuZXRtYXNrLCBybmgpKSA9PSBOVUxMKQ0KKwkJ
CXNlbmRlcnIoRVNSQ0gpOw0KKwkJcnQgPSBSTlRPUlQocm4pOw0KICNpZmRl
ZiBSQURJWF9NUEFUSA0KKwkJLyoNCisJCSAqIGlmIHdlIGdvdCBtdWx0aXBh
dGggcm91dGVzLCB3ZSByZXF1aXJlIHVzZXJzIHRvIHNwZWNpZnkNCisJCSAq
IGEgbWF0Y2hpbmcgUlRBWF9HQVRFV0FZLg0KKwkJICovDQogCQlpZiAocm5f
bXBhdGhfY2FwYWJsZShybmgpKSB7DQotCQkJZXJyb3IgPSBybl9tcGF0aF91
cGRhdGUocmVxLCBpbmZvLCBybmgsIHJldF9ucnQpOw0KLQkJCS8qDQotCQkJ
ICogImJhZCIgaG9sZHMgdHJ1ZSBmb3IgdGhlIHN1Y2Nlc3MgY2FzZQ0KLQkJ
CSAqIGFzIHdlbGwNCi0JCQkgKi8NCi0JCQlpZiAoZXJyb3IgIT0gRU5PRU5U
KQ0KLQkJCQlnb3RvIGJhZDsNCi0JCQllcnJvciA9IDA7DQorCQkJcnQgPSBy
dF9tcGF0aF9tYXRjaGdhdGUoIHJ0LCBnYXRld2F5KTsNCisJCQlybiA9IChz
dHJ1Y3QgcmFkaXhfbm9kZSAqKXJ0Ow0KKwkJCWlmICghcnQpDQorCQkJCXNl
bmRlcnIoRVNSQ0gpOw0KIAkJfQ0KICNlbmRpZg0KIAkJLyoNCiAJCSAqIFJl
bW92ZSB0aGUgaXRlbSBmcm9tIHRoZSB0cmVlIGFuZCByZXR1cm4gaXQuDQog
CQkgKiBDb21wbGFpbiBpZiBpdCBpcyBub3QgdGhlcmUgYW5kIGRvIG5vIG1v
cmUgcHJvY2Vzc2luZy4NCiAJCSAqLw0KLQkJcm4gPSBybmgtPnJuaF9kZWxh
ZGRyKGRzdCwgbmV0bWFzaywgcm5oKTsNCisJCXJuID0gcm5oLT5ybmhfZGVs
YWRkcihkc3QsIG5ldG1hc2ssIHJuaCwgcm4pOw0KIAkJaWYgKHJuID09IE5V
TEwpDQogCQkJc2VuZGVycihFU1JDSCk7DQogCQlpZiAocm4tPnJuX2ZsYWdz
ICYgKFJORl9BQ1RJVkUgfCBSTkZfUk9PVCkpDQogCQkJcGFuaWMgKCJydHJl
cXVlc3QgZGVsZXRlIik7DQotCQlydCA9IFJOVE9SVChybik7DQogCQlSVF9M
T0NLKHJ0KTsNCiAJCVJUX0FERFJFRihydCk7DQogCQlydC0+cnRfZmxhZ3Mg
Jj0gflJURl9VUDsNCkBAIC0xMjg1LDYgKzEzNDMsOCBAQA0KIGJhZDoNCiAJ
aWYgKG5lZWRsb2NrKQ0KIAkJUkFESVhfTk9ERV9IRUFEX1VOTE9DSyhybmgp
Ow0KKwllbHNlDQorCQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgsICZ0
cmFja2VyKTsNCiAJcmV0dXJuIChlcnJvcik7DQogI3VuZGVmIHNlbmRlcnIN
CiB9DQpAQCAtMTMwOCw3ICsxMzY4LDkgQEANCiAjZW5kaWYNCiANCiAJUlRf
TE9DS19BU1NFUlQocnQpOw0KKyNpZmRlZiBJTlZBUklBTlRTDQogCVJBRElY
X05PREVfSEVBRF9MT0NLX0FTU0VSVChybmgpOw0KKyNlbmRpZg0KIAkNCiAJ
LyoNCiAJICogUHJlcGFyZSB0byBzdG9yZSB0aGUgZ2F0ZXdheSBpbiBydC0+
cnRfZ2F0ZXdheS4NCkBAIC0xNDY0LDYgKzE1MjYsNyBAQA0KIAkJCQkJICAg
IGlmYS0+aWZhX2FkZHIpOw0KIAkJCQkJaWYgKCFydCkNCiAJCQkJCQllcnJv
ciA9IEVTUkNIOw0KKwkJCQkJcm4gPSAoc3RydWN0IHJhZGl4X25vZGUgKily
dDsNCiAJCQkJfQ0KIAkJCX0NCiAJCQllbHNlDQpkaWZmIC11IC1yIC4uL3Ny
Y19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQvcm91dGUuaCAuL3N5cy9uZXQv
cm91dGUuaA0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXQv
cm91dGUuaAkyMDEwLTA0LTAyIDA1OjEyOjQ2LjAwMDAwMDAwMCArMDAwMA0K
KysrIC4vc3lzL25ldC9yb3V0ZS5oCTIwMTEtMDQtMDYgMjA6Mzc6NDguMDAw
MDAwMDAwICswMDAwDQpAQCAtNzksNiArNzksMzkgQEANCiB9Ow0KIA0KIC8q
DQorICogUG9pbnRlcnMgdG8gc3RydWN0dXJlcyBvbiB0aGUgc3RhY2sgZm9y
IHB1cmUgcm91dGluZw0KKyAqIHRhYmxlIGxvb2t1cHMgLyBmYXN0IG10dSBh
Y2Nlc3MuDQorICogRmFrZXMgc3RydWN0IHJ0X21ldHJpY3NfbGl0ZQ0KKyAq
Lw0KK3N0cnVjdCBydGxvb2t1cF9tZXRyaWNzIHsNCisJdV9sb25nICBybXhf
bXR1OyAgICAgICAgLyogTVRVIGZvciB0aGlzIHBhdGggKi8NCisJdV9sb25n
ICBybXhfZXhwaXJlOyAgICAgLyogWFhYIHJlYXJhbmdlIHJ0X21ldHJpY3Nf
bGl0ZSAqLw0KKwl1X2xvbmcgIHJteF9wa3NlbnQ7ICAgICAvKiBYWFggZmFz
dGVyIHRoYW4gZXh0cmEgaWY/IC0gcmVtb3ZlPyAqLw0KK307DQorDQorLyoN
CisgKiBQb2ludGVycyB0byBzdHJ1Y3R1cmVzIG9uIHRoZSBzdGFjayBmb3Ig
cHVyZSByb3V0aW5nDQorICogdGFibGUgbG9va3Vwcy4gDQorICogRmFrZXMg
c3RydWN0IHJ0ZW50cnkNCisgKi8NCisjaWZuZGVmIFJORl9OT1JNQUwNCisj
aW5jbHVkZSA8bmV0L3JhZGl4Lmg+DQorI2lmZGVmIFJBRElYX01QQVRIDQor
I2luY2x1ZGUgPG5ldC9yYWRpeF9tcGF0aC5oPg0KKyNlbmRpZg0KKyNlbmRp
Zg0KK3N0cnVjdCBydGxvb2t1cCB7DQorICAgICAgIHN0cnVjdCAgcmFkaXhf
bm9kZSBydF9ub2Rlc1syXTsgICAgICAgICAvKiBYWFggcmVhcmFuZ2UgcnRl
bnRyeSBhbmQgcmVtb3ZlICovDQorICAgICAgIHN0cnVjdCAgc29ja2FkZHIg
KnJ0X2dhdGV3YXk7DQorICAgICAgIGludCAgICAgcnRfZmxhZ3M7DQorICAg
ICAgIGludCAgICAgcnRfcmVmY250OyAgICAgICAgICAgICAgICAgICAgICAv
KiBYWFggcmVhcmFuZ2UgcnRlbnRyeSBhbmQgcmVtb3ZlICovDQorICAgICAg
IHN0cnVjdCAgaWZuZXQgKnJ0X2lmcDsNCisgICAgICAgc3RydWN0ICBpZmFk
ZHIgKnJ0X2lmYTsNCisgICAgICAgc3RydWN0ICBydGxvb2t1cF9tZXRyaWNz
IHJ0X3JteDsNCit9Ow0KKyNkZWZpbmUgICAgICAgIFJUTF9QS1NFTlQgICAg
ICAweDAwMDEgIC8qIGluY3JlbWVudCBwYWNrZXQgc2VudCBjb3VudGVyICov
DQorDQorLyoNCiAgKiBybXhfcnR0IGFuZCBybXhfcnR0dmFyIGFyZSBzdG9y
ZWQgYXMgbWljcm9zZWNvbmRzOw0KICAqIFJUVFRPUFJIWihydHQpIGNvbnZl
cnRzIHRvIGEgdmFsdWUgc3VpdGFibGUgZm9yIHVzZQ0KICAqIGJ5IGEgcHJv
dG9jb2wgc2xvd3RpbW8gY291bnRlci4NCkBAIC0xMjMsMTIgKzE1Niw2IEBA
DQogICogZ2F0ZXdheXMgYXJlIG1hcmtlZCBzbyB0aGF0IHRoZSBvdXRwdXQg
cm91dGluZXMga25vdyB0byBhZGRyZXNzIHRoZQ0KICAqIGdhdGV3YXkgcmF0
aGVyIHRoYW4gdGhlIHVsdGltYXRlIGRlc3RpbmF0aW9uLg0KICAqLw0KLSNp
Zm5kZWYgUk5GX05PUk1BTA0KLSNpbmNsdWRlIDxuZXQvcmFkaXguaD4NCi0j
aWZkZWYgUkFESVhfTVBBVEgNCi0jaW5jbHVkZSA8bmV0L3JhZGl4X21wYXRo
Lmg+DQotI2VuZGlmDQotI2VuZGlmDQogc3RydWN0IHJ0ZW50cnkgew0KIAlz
dHJ1Y3QJcmFkaXhfbm9kZSBydF9ub2Rlc1syXTsJLyogdHJlZSBnbHVlLCBh
bmQgb3RoZXIgdmFsdWVzICovDQogCS8qDQpAQCAtNDMwLDYgKzQ1NywxMCBA
QA0KIHZvaWQJIHJ0YWxsb2NfZmliKHN0cnVjdCByb3V0ZSAqcm8sIHVfaW50
IGZpYm51bSk7DQogc3RydWN0IHJ0ZW50cnkgKnJ0YWxsb2MxX2ZpYihzdHJ1
Y3Qgc29ja2FkZHIgKiwgaW50LCB1X2xvbmcsIHVfaW50KTsNCiBpbnQJIHJ0
aW9jdGxfZmliKHVfbG9uZywgY2FkZHJfdCwgdV9pbnQpOw0KK2ludCAgICBy
dGxvb2t1cF9maWIoc3RydWN0IHNvY2thZGRyICosIHVfaW50LCBzdHJ1Y3Qg
cnRsb29rdXAgKiwgaW50KTsNCisjaWZkZWYgUkFESVhfTVBBVEgNCitpbnQg
ICAgcnRsb29rdXBfbXBhdGhfZmliKHN0cnVjdCBzb2NrYWRkciAqLCB1X2lu
dDMyX3QsIHVfaW50LCBzdHJ1Y3QgcnRsb29rdXAgKiwgaW50KTsNCisjZW5k
aWYNCiB2b2lkCSBydHJlZGlyZWN0X2ZpYihzdHJ1Y3Qgc29ja2FkZHIgKiwg
c3RydWN0IHNvY2thZGRyICosDQogCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKiwg
aW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgdV9pbnQpOw0KIGludAkgcnRyZXF1
ZXN0X2ZpYihpbnQsIHN0cnVjdCBzb2NrYWRkciAqLA0KZGlmZiAtdSAtciAu
Li9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0L3J0c29jay5jIC4vc3lz
L25ldC9ydHNvY2suYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXQvcnRzb2NrLmMJMjAxMC0xMC0zMCAxMTo1NDo1NS4wMDAwMDAwMDAg
KzAwMDANCisrKyAuL3N5cy9uZXQvcnRzb2NrLmMJMjAxMS0wNC0wMyAxNjow
Nzo1Ny4wMDAwMDAwMDAgKzAwMDANCkBAIC01MSw2ICs1MSw3IEBADQogI2lu
Y2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4NCiAjaW5jbHVkZSA8c3lzL3N5c2N0
bC5oPg0KICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4NCisjaW5jbHVkZSA8c3lz
L3JtbG9jay5oPg0KIA0KICNpbmNsdWRlIDxuZXQvaWYuaD4NCiAjaW5jbHVk
ZSA8bmV0L2lmX2RsLmg+DQpAQCAtNTEzLDYgKzUxNCw3IEBADQogCWludCBs
ZW4sIGVycm9yID0gMDsNCiAJc3RydWN0IGlmbmV0ICppZnAgPSBOVUxMOw0K
IAl1bmlvbiBzb2NrYWRkcl91bmlvbiBzYXVuOw0KKwlzdHJ1Y3Qgcm1fcHJp
b3RyYWNrZXIgdHJhY2tlcjsNCiANCiAjZGVmaW5lIHNlbmRlcnIoZSkgeyBl
cnJvciA9IGU7IGdvdG8gZmx1c2g7fQ0KIAlpZiAobSA9PSBOVUxMIHx8ICgo
bS0+bV9sZW4gPCBzaXplb2YobG9uZykpICYmDQpAQCAtNjQzLDExICs2NDUs
MTEgQEANCiAJCSAgICBpbmZvLnJ0aV9pbmZvW1JUQVhfRFNUXS0+c2FfZmFt
aWx5KTsNCiAJCWlmIChybmggPT0gTlVMTCkNCiAJCQlzZW5kZXJyKEVBRk5P
U1VQUE9SVCk7DQotCQlSQURJWF9OT0RFX0hFQURfUkxPQ0socm5oKTsNCisJ
CVJBRElYX05PREVfSEVBRF9STE9DSyhybmgsICZ0cmFja2VyKTsNCiAJCXJ0
ID0gKHN0cnVjdCBydGVudHJ5ICopIHJuaC0+cm5oX2xvb2t1cChpbmZvLnJ0
aV9pbmZvW1JUQVhfRFNUXSwNCiAJCQlpbmZvLnJ0aV9pbmZvW1JUQVhfTkVU
TUFTS10sIHJuaCk7DQogCQlpZiAocnQgPT0gTlVMTCkgewkvKiBYWFggbG9v
a3MgYm9ndXMgKi8NCi0JCQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgp
Ow0KKwkJCVJBRElYX05PREVfSEVBRF9SVU5MT0NLKHJuaCwgJnRyYWNrZXIp
Ow0KIAkJCXNlbmRlcnIoRVNSQ0gpOw0KIAkJfQ0KICNpZmRlZiBSQURJWF9N
UEFUSA0KQEAgLTY2Myw3ICs2NjUsNyBAQA0KIAkJICAgIChydG0tPnJ0bV90
eXBlICE9IFJUTV9HRVQgfHwgaW5mby5ydGlfaW5mb1tSVEFYX0dBVEVXQVld
KSkgew0KIAkJCXJ0ID0gcnRfbXBhdGhfbWF0Y2hnYXRlKHJ0LCBpbmZvLnJ0
aV9pbmZvW1JUQVhfR0FURVdBWV0pOw0KIAkJCWlmICghcnQpIHsNCi0JCQkJ
UkFESVhfTk9ERV9IRUFEX1JVTkxPQ0socm5oKTsNCisJCQkJUkFESVhfTk9E
RV9IRUFEX1JVTkxPQ0socm5oLCAmdHJhY2tlcik7DQogCQkJCXNlbmRlcnIo
RVNSQ0gpOw0KIAkJCX0NCiAJCX0NCkBAIC02OTUsMTMgKzY5NywxMyBAQA0K
IAkJCSAqLw0KIAkJCXJ0ID0gKHN0cnVjdCBydGVudHJ5ICopcm5oLT5ybmhf
bWF0Y2hhZGRyKCZsYWRkciwgcm5oKTsNCiAJCQlpZiAocnQgPT0gTlVMTCkg
ew0KLQkJCQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgpOw0KKwkJCQlS
QURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgsICZ0cmFja2VyKTsNCiAJCQkJ
c2VuZGVycihFU1JDSCk7DQogCQkJfQ0KIAkJfSANCiAJCVJUX0xPQ0socnQp
Ow0KIAkJUlRfQUREUkVGKHJ0KTsNCi0JCVJBRElYX05PREVfSEVBRF9SVU5M
T0NLKHJuaCk7DQorCQlSQURJWF9OT0RFX0hFQURfUlVOTE9DSyhybmgsICZ0
cmFja2VyKTsNCiANCiAJCS8qIA0KIAkJICogRml4IGZvciBQUjogODI5NzQN
CmRpZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25ldGlu
ZXQvaWNtcF92YXIuaCAuL3N5cy9uZXRpbmV0L2ljbXBfdmFyLmgNCi0tLSAu
Li9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldC9pY21wX3Zhci5o
CTIwMDktMDgtMDMgMDg6MTM6MDYuMDAwMDAwMDAwICswMDAwDQorKysgLi9z
eXMvbmV0aW5ldC9pY21wX3Zhci5oCTIwMTEtMDQtMDMgMTY6MDc6NTcuMDAw
MDAwMDAwICswMDAwDQpAQCAtMTAyLDcgKzEwMiwxMSBAQA0KICNkZWZpbmUg
QkFORExJTV9SU1RfQ0xPU0VEUE9SVCAzIC8qIE5vIGNvbm5lY3Rpb24sIGFu
ZCBubyBsaXN0ZW5lcnMgKi8NCiAjZGVmaW5lIEJBTkRMSU1fUlNUX09QRU5Q
T1JUIDQgICAvKiBObyBjb25uZWN0aW9uLCBsaXN0ZW5lciAqLw0KICNkZWZp
bmUgQkFORExJTV9JQ01QNl9VTlJFQUNIIDUNCi0jZGVmaW5lIEJBTkRMSU1f
TUFYIDUNCisjZGVmaW5lIEJBTkRMSU1fSUNNUF9GV0RfVU5SRUFDSCA2IC8q
IGZvcndhcmRpbmc6IGxpbWl0IHVucmVhY2hhYmxlICovDQorI2RlZmluZSBC
QU5ETElNX0lDTVBfRldEX1RJTVhDRUVEIDcgLyogZm9yd2FyZGluZzogbGlt
aXQgdGltZS1leGNlZWRlZCAqLw0KKyNkZWZpbmUgQkFORExJTV9JQ01QX0ZX
RF9ORUVERlJBRyA4IC8qIGZvcndhcmRpbmc6IGxpbWl0IG5lZWQtZnJhZyAq
Lw0KKyNkZWZpbmUgQkFORExJTV9JQ01QX0ZXRF9GSUxURVIgOSAvKiBmb3J3
YXJkaW5nOiBsaW1pdCBhZG1pbi1wcm9oaWIgKi8NCisjZGVmaW5lIEJBTkRM
SU1fTUFYIDkNCiAjZW5kaWYNCiANCiAjZW5kaWYNCmRpZmYgLXUgLXIgLi4v
c3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25ldGluZXQvaW4uYyAuL3N5cy9u
ZXRpbmV0L2luLmMNCi0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMv
bmV0aW5ldC9pbi5jCTIwMTEtMDQtMTIgMTM6MDI6MDIuMDAwMDAwMDAwICsw
MDAwDQorKysgLi9zeXMvbmV0aW5ldC9pbi5jCTIwMTEtMDQtMTQgMTY6MjI6
NDEuMDAwMDAwMDAwICswMDAwDQpAQCAtMTM5MywxMiArMTM5MywyMiBAQA0K
IGluX2xsdGFibGVfcnRjaGVjayhzdHJ1Y3QgaWZuZXQgKmlmcCwgdV9pbnQg
ZmxhZ3MsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqbDNhZGRyKQ0KIHsNCiAJ
c3RydWN0IHJ0ZW50cnkgKnJ0Ow0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwlz
dHJ1Y3Qgcm91dGUgcm87DQorI2VuZGlmDQogDQogCUtBU1NFUlQobDNhZGRy
LT5zYV9mYW1pbHkgPT0gQUZfSU5FVCwNCiAJICAgICgic2luX2ZhbWlseSAl
ZCIsIGwzYWRkci0+c2FfZmFtaWx5KSk7DQogDQorI2lmZGVmIFJBRElYX01Q
QVRIDQorCWJ6ZXJvKCAmcm8sIHNpemVvZihybykpOw0KKwliY29weSggX19E
RUNPTlNUKHN0cnVjdCBzb2NrYWRkciAqLCBsM2FkZHIpLCAmcm8ucm9fZHN0
LCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7DQorCXJ0YWxsb2NfbXBhdGhf
ZmliX2ZsYWdzKCAoc3RydWN0IHJvdXRlICopJnJvLCBSVEZfQU5OT1VOQ0Us
IDAsIFJURl9HQVRFV0FZKTsNCisJcnQgPSByby5yb19ydDsNCisjZWxzZQ0K
IAkvKiBYWFggcnRhbGxvYzEgc2hvdWxkIHRha2UgYSBjb25zdCBwYXJhbSAq
Lw0KIAlydCA9IHJ0YWxsb2MxKF9fREVDT05TVChzdHJ1Y3Qgc29ja2FkZHIg
KiwgbDNhZGRyKSwgMCwgMCk7DQorI2VuZGlmDQogCWlmIChydCA9PSBOVUxM
IHx8ICghKGZsYWdzICYgTExFX1BVQikgJiYNCiAJCQkgICAoKHJ0LT5ydF9m
bGFncyAmIFJURl9HQVRFV0FZKSB8fCANCiAJCQkgICAgKHJ0LT5ydF9pZnAg
IT0gaWZwKSkpKSB7DQpAQCAtMTQwNiwxMSArMTQxNiwyMCBAQA0KIAkJbG9n
KExPR19JTkZPLCAiSVB2NCBhZGRyZXNzOiBcIiVzXCIgaXMgbm90IG9uIHRo
ZSBuZXR3b3JrXG4iLA0KIAkJICAgIGluZXRfbnRvYSgoKGNvbnN0IHN0cnVj
dCBzb2NrYWRkcl9pbiAqKWwzYWRkciktPnNpbl9hZGRyKSk7DQogI2VuZGlm
DQorI2lmZGVmIFJBRElYX01QQVRIDQorCQlpZiAocnQgIT0gTlVMTCkNCisJ
CQlSVEZSRUUocnQpOw0KKyNlbHNlDQogCQlpZiAocnQgIT0gTlVMTCkNCiAJ
CQlSVEZSRUVfTE9DS0VEKHJ0KTsNCisjZW5kaWYNCiAJCXJldHVybiAoRUlO
VkFMKTsNCiAJfQ0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwlSVEZSRUUocnQp
Ow0KKyNlbHNlDQogCVJURlJFRV9MT0NLRUQocnQpOw0KKyNlbmRpZg0KIAly
ZXR1cm4gMDsNCiB9DQogDQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4yXzIw
MTEwMzI5L3N5cy9uZXRpbmV0L2luX3JteC5jIC4vc3lzL25ldGluZXQvaW5f
cm14LmMNCi0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5l
dC9pbl9ybXguYwkyMDEwLTEwLTExIDExOjI1OjM3LjAwMDAwMDAwMCArMDAw
MA0KKysrIC4vc3lzL25ldGluZXQvaW5fcm14LmMJMjAxMS0wNC0xNCAxNjoy
MzoxMy4wMDAwMDAwMDAgKzAwMDANCkBAIC01MSw2ICs1MSw4IEBADQogI2lu
Y2x1ZGUgPHN5cy9tYnVmLmg+DQogI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4N
CiAjaW5jbHVkZSA8c3lzL2NhbGxvdXQuaD4NCisjaW5jbHVkZSA8c3lzL2xv
Y2suaD4NCisjaW5jbHVkZSA8c3lzL3JtbG9jay5oPg0KIA0KICNpbmNsdWRl
IDxuZXQvaWYuaD4NCiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQpkaWZmIC11
IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwX2Zh
c3Rmd2QuYyAuL3N5cy9uZXRpbmV0L2lwX2Zhc3Rmd2QuYw0KLS0tIC4uL3Ny
Y19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwX2Zhc3Rmd2QuYwky
MDEwLTEyLTEwIDE0OjA2OjUwLjAwMDAwMDAwMCArMDAwMA0KKysrIC4vc3lz
L25ldGluZXQvaXBfZmFzdGZ3ZC5jCTIwMTEtMDQtMDcgMDI6MjQ6MDEuMDAw
MDAwMDAwICswMDAwDQpAQCAtOTQsNiArOTQsOSBAQA0KICNpbmNsdWRlIDxu
ZXQvaWZfdmFyLmg+DQogI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KICNpbmNs
dWRlIDxuZXQvcm91dGUuaD4NCisjaWZkZWYgUkFESVhfTVBBVEgNCisjaW5j
bHVkZSA8bmV0L3JhZGl4X21wYXRoLmg+DQorI2VuZGlmDQogI2luY2x1ZGUg
PG5ldC92bmV0Lmg+DQogDQogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCkBA
IC0xMDIsNiArMTA1LDcgQEANCiAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPg0K
ICNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPg0KICNpbmNsdWRlIDxuZXRp
bmV0L2lwX2ljbXAuaD4NCisjaW5jbHVkZSA8bmV0aW5ldC9pY21wX3Zhci5o
Pg0KICNpbmNsdWRlIDxuZXRpbmV0L2lwX29wdGlvbnMuaD4NCiANCiAjaW5j
bHVkZSA8bWFjaGluZS9pbl9ja3N1bS5oPg0KQEAgLTExMyw3ICsxMTcsMTEg
QEANCiAgICAgJlZORVRfTkFNRShpcGZhc3Rmb3J3YXJkX2FjdGl2ZSksIDAs
ICJFbmFibGUgZmFzdCBJUCBmb3J3YXJkaW5nIik7DQogDQogc3RhdGljIHN0
cnVjdCBzb2NrYWRkcl9pbiAqDQotaXBfZmluZHJvdXRlKHN0cnVjdCByb3V0
ZSAqcm8sIHN0cnVjdCBpbl9hZGRyIGRlc3QsIHN0cnVjdCBtYnVmICptKQ0K
KyNpZmRlZiBSQURJWF9NUEFUSA0KK2lwX2ZpbmRyb3V0ZShzdHJ1Y3Qgcm91
dGUgKnJvLCB1aW50MzJfdCBoYXNoLCBzdHJ1Y3QgaW5fYWRkciBkZXN0LCBz
dHJ1Y3QgbWJ1ZiAqbSwgc3RydWN0IHJ0bG9va3VwICpydGwpDQorI2Vsc2UN
CitpcF9maW5kcm91dGUoc3RydWN0IHJvdXRlICpybywgc3RydWN0IGluX2Fk
ZHIgZGVzdCwgc3RydWN0IG1idWYgKm0sIHN0cnVjdCBydGxvb2t1cCAqcnRs
KQ0KKyNlbmRpZg0KIHsNCiAJc3RydWN0IHNvY2thZGRyX2luICpkc3Q7DQog
CXN0cnVjdCBydGVudHJ5ICpydDsNCkBAIC0xMjYsNyArMTM0LDE2IEBADQog
CWRzdC0+c2luX2ZhbWlseSA9IEFGX0lORVQ7DQogCWRzdC0+c2luX2xlbiA9
IHNpemVvZigqZHN0KTsNCiAJZHN0LT5zaW5fYWRkci5zX2FkZHIgPSBkZXN0
LnNfYWRkcjsNCi0JaW5fcnRhbGxvY19pZ24ocm8sIDAsIE1fR0VURklCKG0p
KTsNCisNCisjaWZkZWYgUkFESVhfTVBBVEgNCisJaWYgKCFydGxvb2t1cF9t
cGF0aF9maWIoKHN0cnVjdCBzb2NrYWRkciAqKWRzdCwNCisJCQloYXNoLCBN
X0dFVEZJQihtKSwgIHJ0bCwgUlRMX1BLU0VOVCkpDQorI2Vsc2UNCisJaWYg
KCFydGxvb2t1cF9maWIoIChzdHJ1Y3Qgc29ja2FkZHIgKilkc3QsIE1fR0VU
RklCKG0pLCBydGwsIFJUTF9QS1NFTlQpKQ0KKyNlbmRpZg0KKwkJcm8tPnJv
X3J0ID0gTlVMTDsNCisJZWxzZQ0KKwkJcm8tPnJvX3J0ID0gKHN0cnVjdCBy
dGVudHJ5ICopcnRsOw0KIA0KIAkvKg0KIAkgKiBSb3V0ZSB0aGVyZSBhbmQg
aW50ZXJmYWNlIHN0aWxsIHVwPw0KQEAgLTE0MCw5ICsxNTcsMTAgQEANCiAJ
fSBlbHNlIHsNCiAJCUlQU1RBVF9JTkMoaXBzX25vcm91dGUpOw0KIAkJSVBT
VEFUX0lOQyhpcHNfY2FudGZvcndhcmQpOw0KLQkJaWYgKHJ0KQ0KLQkJCVJU
RlJFRShydCk7DQotCQlpY21wX2Vycm9yKG0sIElDTVBfVU5SRUFDSCwgSUNN
UF9VTlJFQUNIX0hPU1QsIDAsIDApOw0KKwkJaWYgKGJhZHBvcnRfYmFuZGxp
bShCQU5ETElNX0lDTVBfRldEX1VOUkVBQ0gpIDwgMCkNCisJCQltX2ZyZWVt
KG0pOw0KKwkJZWxzZQ0KKwkJCWljbXBfZXJyb3IobSwgSUNNUF9VTlJFQUNI
LCBJQ01QX1VOUkVBQ0hfSE9TVCwgMCwgMCk7DQogCQlyZXR1cm4gTlVMTDsN
CiAJfQ0KIAlyZXR1cm4gZHN0Ow0KQEAgLTE2Nyw2ICsxODUsOCBAQA0KIAl1
X3Nob3J0IHN1bSwgaXBfbGVuOw0KIAlpbnQgZXJyb3IgPSAwOw0KIAlpbnQg
aGxlbiwgbXR1Ow0KKwlzdHJ1Y3QgcnRsb29rdXAgcnRsOw0KKwlzdHJ1Y3Qg
c29ja2FkZHJfZGwgZ2F0ZXdheTsNCiAjaWZkZWYgSVBGSVJFV0FMTF9GT1JX
QVJEDQogCXN0cnVjdCBtX3RhZyAqZndkX3RhZzsNCiAjZW5kaWYNCkBAIC0y
OTksOCArMzE5LDExIEBADQogCQlpZiAoaXBfZG9vcHRzID09IDEpDQogCQkJ
cmV0dXJuIG07DQogCQllbHNlIGlmIChpcF9kb29wdHMgPT0gMikgew0KLQkJ
CWljbXBfZXJyb3IobSwgSUNNUF9VTlJFQUNILCBJQ01QX1VOUkVBQ0hfRklM
VEVSX1BST0hJQiwNCi0JCQkJMCwgMCk7DQorCQkJaWYgKGJhZHBvcnRfYmFu
ZGxpbShCQU5ETElNX0lDTVBfRldEX0ZJTFRFUikgPCAwKQ0KKwkJCQltX2Zy
ZWVtKG0pOw0KKwkJCWVsc2UNCisJCQkJaWNtcF9lcnJvcihtLCBJQ01QX1VO
UkVBQ0gsDQorCQkJCQlJQ01QX1VOUkVBQ0hfRklMVEVSX1BST0hJQiwgMCwg
MCk7DQogCQkJcmV0dXJuIE5VTEw7CS8qIG1idWYgYWxyZWFkeSBmcmVlJ2Qg
Ki8NCiAJCX0NCiAJCS8qIGVsc2UgaWdub3JlIElQIG9wdGlvbnMgYW5kIGNv
bnRpbnVlICovDQpAQCAtMzk5LDcgKzQyMiwxMSBAQA0KIAlpZiAoIVZfaXBz
dGVhbHRoKSB7DQogI2VuZGlmDQogCWlmIChpcC0+aXBfdHRsIDw9IElQVFRM
REVDKSB7DQotCQlpY21wX2Vycm9yKG0sIElDTVBfVElNWENFRUQsIElDTVBf
VElNWENFRURfSU5UUkFOUywgMCwgMCk7DQorCQlpZiAoYmFkcG9ydF9iYW5k
bGltKEJBTkRMSU1fSUNNUF9GV0RfVElNWENFRUQpIDwgMCkNCisJCQltX2Zy
ZWVtKG0pOw0KKwkJZWxzZQ0KKwkJCWljbXBfZXJyb3IobSwgSUNNUF9USU1Y
Q0VFRCwgSUNNUF9USU1YQ0VFRF9JTlRSQU5TLA0KKwkJCQkwLCAwKTsNCiAJ
CXJldHVybiBOVUxMOwkvKiBtYnVmIGFscmVhZHkgZnJlZSdkICovDQogCX0N
CiANCkBAIC00MjAsNyArNDQ3LDE2IEBADQogCS8qDQogCSAqIEZpbmQgcm91
dGUgdG8gZGVzdGluYXRpb24uDQogCSAqLw0KLQlpZiAoKGRzdCA9IGlwX2Zp
bmRyb3V0ZSgmcm8sIGRlc3QsIG0pKSA9PSBOVUxMKQ0KKwliemVybyggJmdh
dGV3YXksIHNpemVvZihnYXRld2F5KSk7DQorCWdhdGV3YXkuc2RsX2xlbiA9
IHNpemVvZihnYXRld2F5KTsNCisJcnRsLnJ0X2dhdGV3YXkgPSAoc3RydWN0
IHNvY2thZGRyICopJmdhdGV3YXk7DQorI2lmZGVmIFJBRElYX01QQVRIDQor
CWlmICgoZHN0ID0gaXBfZmluZHJvdXRlKCZybywgbnRvaGwoaXAtPmlwX3Ny
Yy5zX2FkZHIgXiBpcC0+aXBfZHN0LnNfYWRkciksDQorCQkJZGVzdCwgbSwg
JnJ0bCkpID09IE5VTEwpDQorI2Vsc2UNCisJaWYgKChkc3QgPSBpcF9maW5k
cm91dGUoJnJvLA0KKwkJCWRlc3QsIG0sICZydGwpKSA9PSBOVUxMKQ0KKyNl
bmRpZg0KIAkJcmV0dXJuIE5VTEw7CS8qIGljbXAgdW5yZWFjaCBhbHJlYWR5
IHNlbnQgKi8NCiAJaWZwID0gcm8ucm9fcnQtPnJ0X2lmcDsNCiANCkBAIC00
NzYsOCArNTEyLDYgQEANCiAJCQkgKiAib3VycyItbGFiZWwuDQogCQkJICov
DQogCQkJbS0+bV9mbGFncyB8PSBNX0ZBU1RGV0RfT1VSUzsNCi0JCQlpZiAo
cm8ucm9fcnQpDQotCQkJCVJURlJFRShyby5yb19ydCk7DQogCQkJcmV0dXJu
IG07DQogCQl9DQogCQkvKg0KQEAgLTQ5MCw4ICs1MjQsMTAgQEANCiAJCQlt
X3RhZ19kZWxldGUobSwgZndkX3RhZyk7DQogCQl9DQogI2VuZGlmIC8qIElQ
RklSRVdBTExfRk9SV0FSRCAqLw0KLQkJUlRGUkVFKHJvLnJvX3J0KTsNCi0J
CWlmICgoZHN0ID0gaXBfZmluZHJvdXRlKCZybywgZGVzdCwgbSkpID09IE5V
TEwpDQorCQliemVybyggJmdhdGV3YXksIHNpemVvZihnYXRld2F5KSk7DQor
CQlnYXRld2F5LnNkbF9sZW4gPSBzaXplb2YoZ2F0ZXdheSk7DQorCQlydGwu
cnRfZ2F0ZXdheSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmZ2F0ZXdheTsNCisJ
CWlmICgoZHN0ID0gaXBfZmluZHJvdXRlKCZybywgZGVzdCwgbSwgJnJ0bCkp
ID09IE5VTEwpDQogCQkJcmV0dXJuIE5VTEw7CS8qIGljbXAgdW5yZWFjaCBh
bHJlYWR5IHNlbnQgKi8NCiAJCWlmcCA9IHJvLnJvX3J0LT5ydF9pZnA7DQog
CX0NCkBAIC01MDcsNiArNTQzLDggQEANCiAJaWYgKChyby5yb19ydC0+cnRf
ZmxhZ3MgJiBSVEZfUkVKRUNUKSAmJg0KIAkgICAgKHJvLnJvX3J0LT5ydF9y
bXgucm14X2V4cGlyZSA9PSAwIHx8DQogCSAgICB0aW1lX3VwdGltZSA8IHJv
LnJvX3J0LT5ydF9ybXgucm14X2V4cGlyZSkpIHsNCisJCWlmIChiYWRwb3J0
X2JhbmRsaW0oQkFORExJTV9JQ01QX0ZXRF9VTlJFQUNIKSA8IDApDQorCQkJ
Z290byBkcm9wOw0KIAkJaWNtcF9lcnJvcihtLCBJQ01QX1VOUkVBQ0gsIElD
TVBfVU5SRUFDSF9IT1NULCAwLCAwKTsNCiAJCWdvdG8gY29uc3VtZWQ7DQog
CX0NCkBAIC01MjcsNiArNTY1LDggQEANCiAJICogQ2hlY2sgaWYgbWVkaWEg
bGluayBzdGF0ZSBvZiBpbnRlcmZhY2UgaXMgbm90IGRvd24NCiAJICovDQog
CWlmIChpZnAtPmlmX2xpbmtfc3RhdGUgPT0gTElOS19TVEFURV9ET1dOKSB7
DQorCQlpZiAoYmFkcG9ydF9iYW5kbGltKEJBTkRMSU1fSUNNUF9GV0RfVU5S
RUFDSCkgPCAwKQ0KKwkJCWdvdG8gZHJvcDsNCiAJCWljbXBfZXJyb3IobSwg
SUNNUF9VTlJFQUNILCBJQ01QX1VOUkVBQ0hfSE9TVCwgMCwgMCk7DQogCQln
b3RvIGNvbnN1bWVkOw0KIAl9DQpAQCAtNTU3LDggKzU5Nyw5IEBADQogCQkg
Ki8NCiAJCWlmIChpcC0+aXBfb2ZmICYgSVBfREYpIHsNCiAJCQlJUFNUQVRf
SU5DKGlwc19jYW50ZnJhZyk7DQotCQkJaWNtcF9lcnJvcihtLCBJQ01QX1VO
UkVBQ0gsIElDTVBfVU5SRUFDSF9ORUVERlJBRywNCi0JCQkJMCwgbXR1KTsN
CisJCQlpZiAoYmFkcG9ydF9iYW5kbGltKEJBTkRMSU1fSUNNUF9GV0RfTkVF
REZSQUcpIDwgMCkNCisJCQkJZ290byBkcm9wOw0KKwkJCWljbXBfZXJyb3Io
bSwgSUNNUF9VTlJFQUNILCBJQ01QX1VOUkVBQ0hfTkVFREZSQUcsIDAsIG10
dSk7DQogCQkJZ290byBjb25zdW1lZDsNCiAJCX0gZWxzZSB7DQogCQkJLyoN
CkBAIC02MDYsMTIgKzY0Nyw5IEBADQogCQlJUFNUQVRfSU5DKGlwc19mYXN0
Zm9yd2FyZCk7DQogCX0NCiBjb25zdW1lZDoNCi0JUlRGUkVFKHJvLnJvX3J0
KTsNCiAJcmV0dXJuIE5VTEw7DQogZHJvcDoNCiAJaWYgKG0pDQogCQltX2Zy
ZWVtKG0pOw0KLQlpZiAocm8ucm9fcnQpDQotCQlSVEZSRUUocm8ucm9fcnQp
Ow0KIAlyZXR1cm4gTlVMTDsNCiB9DQpkaWZmIC11IC1yIC4uL3NyY19vcmdf
OC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwX2ljbXAuYyAuL3N5cy9uZXRp
bmV0L2lwX2ljbXAuYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXRpbmV0L2lwX2ljbXAuYwkyMDEwLTA5LTIxIDIyOjMzOjMwLjAwMDAw
MDAwMCArMDAwMA0KKysrIC4vc3lzL25ldGluZXQvaXBfaWNtcC5jCTIwMTEt
MDQtMDQgMjM6MDE6NTcuMDAwMDAwMDAwICswMDAwDQpAQCAtOTU4LDcgKzk1
OCwxMSBAQA0KIAkJeyAiaWNtcCB0c3RhbXAgcmVzcG9uc2UiIH0sDQogCQl7
ICJjbG9zZWQgcG9ydCBSU1QgcmVzcG9uc2UiIH0sDQogCQl7ICJvcGVuIHBv
cnQgUlNUIHJlc3BvbnNlIiB9LA0KLQkJeyAiaWNtcDYgdW5yZWFjaCByZXNw
b25zZSIgfQ0KKwkJeyAiaWNtcDYgdW5yZWFjaCByZXNwb25zZSIgfSwNCisJ
CXsgImZvcndhcmRpbmc6IGxpbWl0IHVucmVhY2hhYmxlIiB9LA0KKwkJeyAi
Zm9yd2FyZGluZzogbGltaXQgdGltZS1leGNlZWRlZCIgfSwNCisJCXsgImZv
cndhcmRpbmc6IGxpbWl0IG5lZWQtZnJhZyIgfSwNCisJCXsgImZvcndhcmRp
bmc6IGxpbWl0IGFkbWluLXByb2hpYiIgfQ0KIAl9Ow0KIA0KIAkvKg0KZGlm
ZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldC9p
cF9pbnB1dC5jIC4vc3lzL25ldGluZXQvaXBfaW5wdXQuYw0KLS0tIC4uL3Ny
Y19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwX2lucHV0LmMJMjAx
MS0wMy0yOCAxNToyNjo1Mi4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9u
ZXRpbmV0L2lwX2lucHV0LmMJMjAxMS0wNC0xNCAxNjoyODoyMi4wMDAwMDAw
MDAgKzAwMDANCkBAIC03MSw2ICs3MSw3IEBADQogI2luY2x1ZGUgPG5ldGlu
ZXQvaXBfdmFyLmg+DQogI2luY2x1ZGUgPG5ldGluZXQvaXBfZncuaD4NCiAj
aW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+DQorI2luY2x1ZGUgPG5ldGlu
ZXQvaWNtcF92YXIuaD4NCiAjaW5jbHVkZSA8bmV0aW5ldC9pcF9vcHRpb25z
Lmg+DQogI2luY2x1ZGUgPG1hY2hpbmUvaW5fY2tzdW0uaD4NCiAjaW5jbHVk
ZSA8bmV0aW5ldC9pcF9jYXJwLmg+DQpAQCAtMTM0OCwyMCArMTM0OSwyNCBA
QA0KIAlzdHJ1Y3Qgcm91dGUgc3JvOw0KIAlzdHJ1Y3Qgc29ja2FkZHJfaW4g
KnNpbjsNCiAJc3RydWN0IGluX2lmYWRkciAqaWE7DQorCXN0cnVjdCBydGxv
b2t1cCBydGw7DQorCXN0cnVjdCBzb2NrYWRkcl9kbCBnYXRld2F5Ow0KIA0K
IAliemVybygmc3JvLCBzaXplb2Yoc3JvKSk7DQogCXNpbiA9IChzdHJ1Y3Qg
c29ja2FkZHJfaW4gKikmc3JvLnJvX2RzdDsNCiAJc2luLT5zaW5fZmFtaWx5
ID0gQUZfSU5FVDsNCiAJc2luLT5zaW5fbGVuID0gc2l6ZW9mKCpzaW4pOw0K
IAlzaW4tPnNpbl9hZGRyID0gZHN0Ow0KLQlpbl9ydGFsbG9jX2lnbigmc3Jv
LCAwLCBmaWJudW0pOw0KLQ0KLQlpZiAoc3JvLnJvX3J0ID09IE5VTEwpDQor
CQ0KKwliemVybyggJmdhdGV3YXksIHNpemVvZihnYXRld2F5KSk7DQorCWdh
dGV3YXkuc2RsX2xlbiA9IHNpemVvZihnYXRld2F5KTsNCisJcnRsLnJ0X2dh
dGV3YXkgPSAoc3RydWN0IHNvY2thZGRyICopJmdhdGV3YXk7DQorCWlmICgh
cnRsb29rdXBfZmliKCAoc3RydWN0IHNvY2thZGRyICopJnNyby5yb19kc3Qs
DQorCQkJZmlibnVtLCAmcnRsLCAwKSkNCiAJCXJldHVybiAoTlVMTCk7DQog
DQotCWlhID0gaWZhdG9pYShzcm8ucm9fcnQtPnJ0X2lmYSk7DQorCWlhID0g
aWZhdG9pYShydGwucnRfaWZhKTsNCiAJaWZhX3JlZigmaWEtPmlhX2lmYSk7
DQotCVJURlJFRShzcm8ucm9fcnQpOw0KIAlyZXR1cm4gKGlhKTsNCiB9DQog
DQpAQCAtMTM5Nyw2ICsxNDAyLDggQEANCiAJc3RydWN0IGluX2FkZHIgZGVz
dDsNCiAJc3RydWN0IHJvdXRlIHJvOw0KIAlpbnQgZXJyb3IsIHR5cGUgPSAw
LCBjb2RlID0gMCwgbXR1ID0gMDsNCisJaW50IGljbXBfc2VuZCA9IDA7DQor
CXN0cnVjdCBydGxvb2t1cCBydGw7DQogDQogCWlmIChtLT5tX2ZsYWdzICYg
KE1fQkNBU1R8TV9NQ0FTVCkgfHwgaW5fY2FuZm9yd2FyZChpcC0+aXBfZHN0
KSA9PSAwKSB7DQogCQlJUFNUQVRfSU5DKGlwc19jYW50Zm9yd2FyZCk7DQpA
QCAtMTQwNyw4ICsxNDE0LDExIEBADQogCWlmICghVl9pcHN0ZWFsdGgpIHsN
CiAjZW5kaWYNCiAJCWlmIChpcC0+aXBfdHRsIDw9IElQVFRMREVDKSB7DQot
CQkJaWNtcF9lcnJvcihtLCBJQ01QX1RJTVhDRUVELCBJQ01QX1RJTVhDRUVE
X0lOVFJBTlMsDQotCQkJICAgIDAsIDApOw0KKwkJCWlmIChiYWRwb3J0X2Jh
bmRsaW0oQkFORExJTV9JQ01QX0ZXRF9USU1YQ0VFRCkgPCAwKQ0KKwkJCQlt
X2ZyZWVtKG0pOw0KKwkJCWVsc2UNCisJCQkJaWNtcF9lcnJvcihtLCBJQ01Q
X1RJTVhDRUVELCBJQ01QX1RJTVhDRUVEX0lOVFJBTlMsDQorCQkJCQkwLCAw
KTsNCiAJCQlyZXR1cm47DQogCQl9DQogI2lmZGVmIElQU1RFQUxUSA0KQEAg
LTE0MjMsNyArMTQzMywxMCBAQA0KIAkgKiBpcF9vdXRwdXQgaW4gY2FzZSBv
ZiBvdXRnb2luZyBJUHNlYyBwb2xpY3kuDQogCSAqLw0KIAlpZiAoIXNyY3J0
ICYmIGlhID09IE5VTEwpIHsNCi0JCWljbXBfZXJyb3IobSwgSUNNUF9VTlJF
QUNILCBJQ01QX1VOUkVBQ0hfSE9TVCwgMCwgMCk7DQorCQlpZiAoYmFkcG9y
dF9iYW5kbGltKEJBTkRMSU1fSUNNUF9GV0RfVU5SRUFDSCkgPCAwKQ0KKwkJ
CW1fZnJlZW0obSk7DQorCQllbHNlDQorCQkJaWNtcF9lcnJvcihtLCBJQ01Q
X1VOUkVBQ0gsIElDTVBfVU5SRUFDSF9IT1NULCAwLCAwKTsNCiAJCXJldHVy
bjsNCiAJfQ0KICNlbmRpZg0KQEAgLTE0NzYsNiArMTQ4OSw4IEBADQogCSAq
IGFuZCBpZiBwYWNrZXQgd2FzIG5vdCBzb3VyY2Ugcm91dGVkIChvciBoYXMg
YW55IG9wdGlvbnMpLg0KIAkgKiBBbHNvLCBkb24ndCBzZW5kIHJlZGlyZWN0
IGlmIGZvcndhcmRpbmcgdXNpbmcgYSBkZWZhdWx0IHJvdXRlDQogCSAqIG9y
IGEgcm91dGUgbW9kaWZpZWQgYnkgYSByZWRpcmVjdC4NCisJICogVGhpcyBw
YXJ0IG9mIGNvZGUgYWxzbyBkbyBub3QgdXNlIHRoZSBydGxvb2t1cF9maWIs
IGJlY2F1c2UNCisJICogcnRfbm9kZXMgaXMgbm90IHN1cHBvcnRlZC4NCiAJ
ICovDQogCWRlc3Quc19hZGRyID0gMDsNCiAJaWYgKCFzcmNydCAmJiBWX2lw
c2VuZHJlZGlyZWN0cyAmJg0KQEAgLTE1MTcsMTMgKzE1MzIsMTMgQEANCiAJ
ICogdGhlIElDTVBfVU5SRUFDSF9ORUVERlJBRyAiTmV4dC1Ib3AgTVRVIiBm
aWVsZCBkZXNjcmliZWQgaW4gUkZDMTE5MS4NCiAJICovDQogCWJ6ZXJvKCZy
bywgc2l6ZW9mKHJvKSk7DQorCWJ6ZXJvKCZydGwsIHNpemVvZihydGwpKTsN
CisJcm8ucm9fcnQgPSAoc3RydWN0IHJ0ZW50cnkgKikmcnRsOw0KIA0KLQll
cnJvciA9IGlwX291dHB1dChtLCBOVUxMLCAmcm8sIElQX0ZPUldBUkRJTkcs
IE5VTEwsIE5VTEwpOw0KKwllcnJvciA9IGlwX291dHB1dChtLCBOVUxMLCAm
cm8sIElQX0ZPUldBUkRJTkcgfCBJUF9OT1JURlJFRSwgTlVMTCwgTlVMTCk7
DQogDQogCWlmIChlcnJvciA9PSBFTVNHU0laRSAmJiByby5yb19ydCkNCiAJ
CW10dSA9IHJvLnJvX3J0LT5ydF9ybXgucm14X210dTsNCi0JaWYgKHJvLnJv
X3J0KQ0KLQkJUlRGUkVFKHJvLnJvX3J0KTsNCiANCiAJaWYgKGVycm9yKQ0K
IAkJSVBTVEFUX0lOQyhpcHNfY2FudGZvcndhcmQpOw0KQEAgLTE1NTgsMTEg
KzE1NzMsMTMgQEANCiAJZGVmYXVsdDoNCiAJCXR5cGUgPSBJQ01QX1VOUkVB
Q0g7DQogCQljb2RlID0gSUNNUF9VTlJFQUNIX0hPU1Q7DQorCQlpY21wX3Nl
bmQgPSBiYWRwb3J0X2JhbmRsaW0oIEJBTkRMSU1fSUNNUF9GV0RfVU5SRUFD
SCk7DQogCQlicmVhazsNCiANCiAJY2FzZSBFTVNHU0laRToNCiAJCXR5cGUg
PSBJQ01QX1VOUkVBQ0g7DQogCQljb2RlID0gSUNNUF9VTlJFQUNIX05FRURG
UkFHOw0KKwkJaWNtcF9zZW5kID0gYmFkcG9ydF9iYW5kbGltKCBCQU5ETElN
X0lDTVBfRldEX05FRURGUkFHKTsNCiANCiAjaWZkZWYgSVBTRUMNCiAJCS8q
IA0KQEAgLTE2MTgsNyArMTYzNSwxMCBAQA0KIAl9DQogCWlmIChpYSAhPSBO
VUxMKQ0KIAkJaWZhX2ZyZWUoJmlhLT5pYV9pZmEpOw0KLQlpY21wX2Vycm9y
KG1jb3B5LCB0eXBlLCBjb2RlLCBkZXN0LnNfYWRkciwgbXR1KTsNCisJaWYg
KGljbXBfc2VuZCA8IDApDQorCQltX2ZyZWVtKG0pOw0KKwllbHNlDQorCQlp
Y21wX2Vycm9yKG1jb3B5LCB0eXBlLCBjb2RlLCBkZXN0LnNfYWRkciwgbXR1
KTsNCiB9DQogDQogdm9pZA0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8y
MDExMDMyOS9zeXMvbmV0aW5ldC9pcF9vdXRwdXQuYyAuL3N5cy9uZXRpbmV0
L2lwX291dHB1dC5jDQotLS0gLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lz
L25ldGluZXQvaXBfb3V0cHV0LmMJMjAxMC0xMC0yNSAxMzoxNjoxMS4wMDAw
MDAwMDAgKzAwMDANCisrKyAuL3N5cy9uZXRpbmV0L2lwX291dHB1dC5jCTIw
MTEtMDQtMTQgMTY6Mjc6MzAuMDAwMDAwMDAwICswMDAwDQpAQCAtNTQsNiAr
NTQsNyBAQA0KIA0KICNpbmNsdWRlIDxuZXQvaWYuaD4NCiAjaW5jbHVkZSA8
bmV0L2lmX2xsYXRibC5oPg0KKyNpbmNsdWRlIDxuZXQvaWZfZGwuaD4NCiAj
aW5jbHVkZSA8bmV0L25ldGlzci5oPg0KICNpbmNsdWRlIDxuZXQvcGZpbC5o
Pg0KICNpbmNsdWRlIDxuZXQvcm91dGUuaD4NCkBAIC0xMjgsOCArMTI5LDEz
IEBADQogCXN0cnVjdCBpbl9pZmFkZHIgKmlhID0gTlVMTDsNCiAJaW50IGlz
YnJvYWRjYXN0LCBzd19jc3VtOw0KIAlzdHJ1Y3Qgcm91dGUgaXByb3V0ZTsN
CisJc3RydWN0IHJ0bG9va3VwIHJ0bG5ldzsNCisJc3RydWN0IHJ0bG9va3Vw
ICpydGw7DQogCXN0cnVjdCBydGVudHJ5ICpydGU7CS8qIGNhY2hlIGZvciBy
by0+cm9fcnQgKi8NCiAJc3RydWN0IGluX2FkZHIgb2RzdDsNCisJc3RydWN0
IHNvY2thZGRyX2RsIGdhdGV3YXk7DQorCWludCByb19wcm92aWRlZCA9IDE7
DQorCQ0KICNpZmRlZiBJUEZJUkVXQUxMX0ZPUldBUkQNCiAJc3RydWN0IG1f
dGFnICpmd2RfdGFnID0gTlVMTDsNCiAjZW5kaWYNCkBAIC0xNDgsNyArMTU0
LDkgQEANCiAJfQ0KIA0KIAlpZiAocm8gPT0gTlVMTCkgew0KKwkJcm9fcHJv
dmlkZWQgPSAwOw0KIAkJcm8gPSAmaXByb3V0ZTsNCisJCXJ0bCA9ICZydGxu
ZXc7DQogCQliemVybyhybywgc2l6ZW9mICgqcm8pKTsNCiANCiAjaWZkZWYg
RkxPV1RBQkxFDQpAQCAtMTY3LDcgKzE3NSwxNSBAQA0KIAkJCX0NCiAJCX0N
CiAjZW5kaWYNCi0JfQ0KKwl9IGVsc2Ugew0KKwkJaWYgKHJvLT5yb19ydCAm
JiAoZmxhZ3MgJiBJUF9OT1JURlJFRSkpIHsNCisJCSAgICAgICAgbm9ydGZy
ZWUgPSAxOw0KKwkJCS8qIGV4dHJhY3QgcnRsIGZyb20gcHJvdmlkZWQgcm8s
IGNsZWFyIHJvLT5yb19ydCBhZnRlcndhcmRzICovDQorCSAgICAgICAgCXJ0
bCA9IChzdHJ1Y3QgcnRsb29rdXAgKilyby0+cm9fcnQ7DQorCQkJcm8tPnJv
X3J0ID0gTlVMTDsNCisJCX0gZWxzZQ0KKwkJCXJ0bCA9ICZydGxuZXc7DQor
ICAgICAgICB9DQogDQogCWlmIChvcHQpIHsNCiAJCWxlbiA9IDA7DQpAQCAt
MjcxLDE2ICsyODcsMzkgQEANCiAJCSAqIG9wZXJhdGlvbiAoYXMgaXQgaXMg
Zm9yIEFSUCkuDQogCQkgKi8NCiAJCWlmIChydGUgPT0gTlVMTCkgew0KKwkJ
CS8qIGNoZWNrIGlmIGNhbGxlciBkb2VzIG5vdCBmcmVlIHJvX3J0LCBhcyB0
aGUgICovDQorCQkJaWYgKChyb19wcm92aWRlZCkgJiYgKChmbGFncyAmIElQ
X05PUlRGUkVFKSA9PSAwKSkgew0KKyNpZmRlZiBSQURJWF9NUEFUSA0KKwkJ
CQlydGFsbG9jX21wYXRoX2ZpYihybywNCisJCQkJICAgIG50b2hsKGlwLT5p
cF9zcmMuc19hZGRyIF4gaXAtPmlwX2RzdC5zX2FkZHIpLA0KKwkJCQkgICAg
aW5wID8gaW5wLT5pbnBfaW5jLmluY19maWJudW0gOiBNX0dFVEZJQihtKSk7
DQorI2Vsc2UNCisJCQkJaW5fcnRhbGxvY19pZ24ocm8sIDAsDQorCQkJCSAg
ICBpbnAgPyBpbnAtPmlucF9pbmMuaW5jX2ZpYm51bSA6IE1fR0VURklCKG0p
KTsNCisjZW5kaWYNCisJCQkJcnRlID0gcm8tPnJvX3J0Ow0KKwkJCX0gZWxz
ZSB7IC8qIGFscmlnaHQgLSB1c2UgdGhlIGZhc3QgbG9va3VwIGNvZGUgKi8N
CisJCQkgICAgICAgIGJ6ZXJvKCAmZ2F0ZXdheSwgc2l6ZW9mKGdhdGV3YXkp
KTsNCisJCQkgICAgICAgIGdhdGV3YXkuc2RsX2xlbiA9IHNpemVvZihnYXRl
d2F5KTsNCisJCQkJcnRsLT5ydF9nYXRld2F5ID0gKHN0cnVjdCBzb2NrYWRk
ciAqKSZnYXRld2F5Ow0KICNpZmRlZiBSQURJWF9NUEFUSA0KLQkJCXJ0YWxs
b2NfbXBhdGhfZmliKHJvLA0KLQkJCSAgICBudG9obChpcC0+aXBfc3JjLnNf
YWRkciBeIGlwLT5pcF9kc3Quc19hZGRyKSwNCi0JCQkgICAgaW5wID8gaW5w
LT5pbnBfaW5jLmluY19maWJudW0gOiBNX0dFVEZJQihtKSk7DQorCQkJCWlm
ICghcnRsb29rdXBfbXBhdGhfZmliKChzdHJ1Y3Qgc29ja2FkZHIgKilkc3Qs
DQorCQkJCQkJbnRvaGwoaXAtPmlwX3NyYy5zX2FkZHIgXiBpcC0+aXBfZHN0
LnNfYWRkciksDQorCQkJCQkJaW5wID8gaW5wLT5pbnBfaW5jLmluY19maWJu
dW0gOiBNX0dFVEZJQihtKSwNCisJCQkJCQlydGwsIFJUTF9QS1NFTlQpKQ0K
ICNlbHNlDQotCQkJaW5fcnRhbGxvY19pZ24ocm8sIDAsDQotCQkJICAgIGlu
cCA/IGlucC0+aW5wX2luYy5pbmNfZmlibnVtIDogTV9HRVRGSUIobSkpOw0K
KwkJCQlpZiAoIXJ0bG9va3VwX2ZpYiggKHN0cnVjdCBzb2NrYWRkciAqKWRz
dCwNCisJCQkJCQlpbnAgPyBpbnAtPmlucF9pbmMuaW5jX2ZpYm51bSA6IE1f
R0VURklCKG0pLA0KKwkJCQkJCXJ0bCwgUlRMX1BLU0VOVCkpDQogI2VuZGlm
DQotCQkJcnRlID0gcm8tPnJvX3J0Ow0KKwkJCQkgICAgICAgIHJvLT5yb19y
dCA9IE5VTEw7DQorCQkJCWVsc2Ugew0KKwkJCQkJbm9ydGZyZWUgPSAxOw0K
KwkJCQkJcm8tPnJvX3J0ID0gKHN0cnVjdCBydGVudHJ5ICopcnRsOw0KKwkJ
CQl9DQorCQkJfQ0KIAkJfQ0KKwkJcnRlID0gcm8tPnJvX3J0Ow0KIAkJaWYg
KHJ0ZSA9PSBOVUxMIHx8DQogCQkgICAgcnRlLT5ydF9pZnAgPT0gTlVMTCB8
fA0KIAkJICAgICFSVF9MSU5LX0lTX1VQKHJ0ZS0+cnRfaWZwKSkgew0KZGlm
ZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldC9p
cF92YXIuaCAuL3N5cy9uZXRpbmV0L2lwX3Zhci5oDQotLS0gLi4vc3JjX29y
Z184LjJfMjAxMTAzMjkvc3lzL25ldGluZXQvaXBfdmFyLmgJMjAxMC0wOS0x
OCAwMTo1NDoyOC4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9uZXRpbmV0
L2lwX3Zhci5oCTIwMTEtMDQtMDcgMDI6MjI6MDUuMDAwMDAwMDAwICswMDAw
DQpAQCAtMTU3LDYgKzE1Nyw3IEBADQogI2RlZmluZQlJUF9TRU5EVE9JRgkJ
MHg4CQkvKiBzZW5kIG9uIHNwZWNpZmljIGlmbmV0ICovDQogI2RlZmluZSBJ
UF9ST1VURVRPSUYJCVNPX0RPTlRST1VURQkvKiAweDEwIGJ5cGFzcyByb3V0
aW5nIHRhYmxlcyAqLw0KICNkZWZpbmUgSVBfQUxMT1dCUk9BRENBU1QJU09f
QlJPQURDQVNUCS8qIDB4MjAgY2FuIHNlbmQgYnJvYWRjYXN0IHBhY2tldHMg
Ki8NCisjZGVmaW5lIElQX05PUlRGUkVFCQkweDQwCQkvKiBjYWxsZXIgZG9l
cyBub3QgZnJlZSByb19ydCB2aWEgUlRGUkVFICovDQogDQogLyoNCiAgKiBt
YnVmIGZsYWcgdXNlZCBieSBpcF9mYXN0ZndkDQpkaWZmIC11IC1yIC4uL3Ny
Y19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwZncvaXBfZndfdGFi
bGUuYyAuL3N5cy9uZXRpbmV0L2lwZncvaXBfZndfdGFibGUuYw0KLS0tIC4u
L3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0L2lwZncvaXBfZndf
dGFibGUuYwkyMDEwLTAzLTIzIDA5OjU4OjU5LjAwMDAwMDAwMCArMDAwMA0K
KysrIC4vc3lzL25ldGluZXQvaXBmdy9pcF9md190YWJsZS5jCTIwMTEtMDQt
MDMgMTY6MDc6NTcuMDAwMDAwMDAwICswMDAwDQpAQCAtMTM3LDcgKzEzNyw3
IEBADQogCW1hc2suc2luX2FkZHIuc19hZGRyID0gaHRvbmwobWxlbiA/IH4o
KDEgPDwgKDMyIC0gbWxlbikpIC0gMSkgOiAwKTsNCiAJc2Euc2luX2FkZHIu
c19hZGRyID0gYWRkciAmIG1hc2suc2luX2FkZHIuc19hZGRyOw0KIAlJUEZX
X1dMT0NLKGNoKTsNCi0JZW50ID0gKHN0cnVjdCB0YWJsZV9lbnRyeSAqKXJu
aC0+cm5oX2RlbGFkZHIoJnNhLCAmbWFzaywgcm5oKTsNCisJZW50ID0gKHN0
cnVjdCB0YWJsZV9lbnRyeSAqKXJuaC0+cm5oX2RlbGFkZHIoJnNhLCAmbWFz
aywgcm5oLCBOVUxMKTsNCiAJaWYgKGVudCA9PSBOVUxMKSB7DQogCQlJUEZX
X1dVTkxPQ0soY2gpOw0KIAkJcmV0dXJuIChFU1JDSCk7DQpAQCAtMTU0LDcg
KzE1NCw3IEBADQogCXN0cnVjdCB0YWJsZV9lbnRyeSAqZW50Ow0KIA0KIAll
bnQgPSAoc3RydWN0IHRhYmxlX2VudHJ5ICopDQotCSAgICBybmgtPnJuaF9k
ZWxhZGRyKHJuLT5ybl9rZXksIHJuLT5ybl9tYXNrLCBybmgpOw0KKwkgICAg
cm5oLT5ybmhfZGVsYWRkcihybi0+cm5fa2V5LCBybi0+cm5fbWFzaywgcm5o
LCBOVUxMKTsNCiAJaWYgKGVudCAhPSBOVUxMKQ0KIAkJZnJlZShlbnQsIE1f
SVBGV19UQkwpOw0KIAlyZXR1cm4gKDApOw0KZGlmZiAtdSAtciAuLi9zcmNf
b3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldDYvaW42X2lmYXR0YWNoLmMg
Li9zeXMvbmV0aW5ldDYvaW42X2lmYXR0YWNoLmMNCi0tLSAuLi9zcmNfb3Jn
XzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldDYvaW42X2lmYXR0YWNoLmMJMjAx
MC0wNS0wNiAwNjo0NDoxOS4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9u
ZXRpbmV0Ni9pbjZfaWZhdHRhY2guYwkyMDExLTA0LTAzIDE2OjA3OjU3LjAw
MDAwMDAwMCArMDAwMA0KQEAgLTQyLDYgKzQyLDggQEANCiAjaW5jbHVkZSA8
c3lzL3Byb2MuaD4NCiAjaW5jbHVkZSA8c3lzL3N5c2xvZy5oPg0KICNpbmNs
dWRlIDxzeXMvbWQ1Lmg+DQorI2luY2x1ZGUgPHN5cy9sb2NrLmg+DQorI2lu
Y2x1ZGUgPHN5cy9ybWxvY2suaD4NCiANCiAjaW5jbHVkZSA8bmV0L2lmLmg+
DQogI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KZGlmZiAtdSAtciAuLi9zcmNf
b3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldDYvaW42X3JteC5jIC4vc3lz
L25ldGluZXQ2L2luNl9ybXguYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEw
MzI5L3N5cy9uZXRpbmV0Ni9pbjZfcm14LmMJMjAxMC0xMC0xMSAxMToyNToz
Ny4wMDAwMDAwMDAgKzAwMDANCisrKyAuL3N5cy9uZXRpbmV0Ni9pbjZfcm14
LmMJMjAxMS0wNC0wMyAxNjowNzo1Ny4wMDAwMDAwMDAgKzAwMDANCkBAIC04
Nyw2ICs4Nyw3IEBADQogI2luY2x1ZGUgPHN5cy9yd2xvY2suaD4NCiAjaW5j
bHVkZSA8c3lzL3N5c2xvZy5oPg0KICNpbmNsdWRlIDxzeXMvY2FsbG91dC5o
Pg0KKyNpbmNsdWRlIDxzeXMvcm1sb2NrLmg+DQogDQogI2luY2x1ZGUgPG5l
dC9pZi5oPg0KICNpbmNsdWRlIDxuZXQvcm91dGUuaD4NCmRpZmYgLXUgLXIg
Li4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25ldGluZXQ2L2luNl9zcmMu
YyAuL3N5cy9uZXRpbmV0Ni9pbjZfc3JjLmMNCi0tLSAuLi9zcmNfb3JnXzgu
Ml8yMDExMDMyOS9zeXMvbmV0aW5ldDYvaW42X3NyYy5jCTIwMTEtMDQtMTIg
MTM6MDI6MDQuMDAwMDAwMDAwICswMDAwDQorKysgLi9zeXMvbmV0aW5ldDYv
aW42X3NyYy5jCTIwMTEtMDQtMTQgMTY6MzA6MjEuMDAwMDAwMDAwICswMDAw
DQpAQCAtNTE4LDEwICs1MTgsMTAgQEANCiAJaWYgKGRzdHNvY2stPnNpbjZf
YWRkci5zNl9hZGRyMzJbMF0gPT0gMCAmJg0KIAkgICAgZHN0c29jay0+c2lu
Nl9hZGRyLnM2X2FkZHIzMlsxXSA9PSAwICYmDQogCSAgICAhSU42X0lTX0FE
RFJfTE9PUEJBQ0soJmRzdHNvY2stPnNpbjZfYWRkcikpIHsNCi0JCXByaW50
ZigiaW42X3NlbGVjdHJvdXRlOiBzdHJhbmdlIGRlc3RpbmF0aW9uICVzXG4i
LA0KKwkJcHJpbnRmKCJzZWxlY3Ryb3V0ZTogc3RyYW5nZSBkZXN0aW5hdGlv
biAlc1xuIiwNCiAJCSAgICAgICBpcDZfc3ByaW50ZihpcDZidWYsICZkc3Rz
b2NrLT5zaW42X2FkZHIpKTsNCiAJfSBlbHNlIHsNCi0JCXByaW50ZigiaW42
X3NlbGVjdHJvdXRlOiBkZXN0aW5hdGlvbiA9ICVzJSUlZFxuIiwNCisJCXBy
aW50Zigic2VsZWN0cm91dGU6IGRlc3RpbmF0aW9uID0gJXMlJSVkXG4iLA0K
IAkJICAgICAgIGlwNl9zcHJpbnRmKGlwNmJ1ZiwgJmRzdHNvY2stPnNpbjZf
YWRkciksDQogCQkgICAgICAgZHN0c29jay0+c2luNl9zY29wZV9pZCk7IC8q
IGZvciBkZWJ1ZyAqLw0KIAl9DQpAQCAtODAyLDkgKzgwMiwyNTkgQEANCiAg
ICAgc3RydWN0IGlwNl9tb3B0aW9ucyAqbW9wdHMsIHN0cnVjdCByb3V0ZV9p
bjYgKnJvLA0KICAgICBzdHJ1Y3QgaWZuZXQgKipyZXRpZnAsIHN0cnVjdCBy
dGVudHJ5ICoqcmV0cnQpDQogew0KKyAgICAgICAgcmV0dXJuIChzZWxlY3Ry
b3V0ZShkc3Rzb2NrLCBvcHRzLCBtb3B0cywgcm8sIHJldGlmcCwNCisgICAg
ICAgICAgICByZXRydCwgMCkpOw0KK30NCisgDQorLyogUHJvdmlkZXMgZmFz
dCBidXQgbWluaW1hbCBhY2Nlc3MgdG8gcm91dGluZyB0YWJsZS4NCisgKiBi
YXNlZCBhdCBzZWxlY3Ryb3V0ZQ0KKyAqIFhYWCByZW1vdmUgYW5kIGRvIGxv
b2t1cCBkaXJlY3QgaW4gaXA2X291dHB1dA0KKyAqLw0KK2ludA0KK2luNl9s
b29rdXAoc3RydWN0IHNvY2thZGRyX2luNiAqZHN0c29jaywgc3RydWN0IGlw
Nl9wa3RvcHRzICpvcHRzLA0KKyAgICBzdHJ1Y3QgaXA2X21vcHRpb25zICpt
b3B0cywgc3RydWN0IHJvdXRlX2luNiAqcm8sIHN0cnVjdCBydGxvb2t1cCAq
cnRsLA0KKyAgICBzdHJ1Y3QgaWZuZXQgKipyZXRpZnAsIHN0cnVjdCBydGVu
dHJ5ICoqcmV0cnQpDQorew0KKyAgICAgICBpbnQgZXJyb3IgPSAwOw0KKyAg
ICAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IE5VTEw7DQorICAgICAgIHN0cnVj
dCBydGVudHJ5ICpydCA9IE5VTEw7DQorICAgICAgIHN0cnVjdCBzb2NrYWRk
cl9pbjYgKnNpbjZfbmV4dDsNCisgICAgICAgc3RydWN0IGluNl9wa3RpbmZv
ICpwaSA9IE5VTEw7DQorICAgICAgIHN0cnVjdCBpbjZfYWRkciAqZHN0ID0g
JmRzdHNvY2stPnNpbjZfYWRkcjsNCisgICAgICAgaW50IG5vcm91dGVvayA9
IDA7DQorICAgICAgIHVuc2lnbmVkIGNoYXIgc2FfbGVuID0gcnRsLT5ydF9n
YXRld2F5LT5zYV9sZW47DQorI2lmIDANCisgICAgICAgY2hhciBpcDZidWZb
SU5FVDZfQUREUlNUUkxFTl07DQorDQorICAgICAgIGlmIChkc3Rzb2NrLT5z
aW42X2FkZHIuczZfYWRkcjMyWzBdID09IDAgJiYNCisgICAgICAgICAgIGRz
dHNvY2stPnNpbjZfYWRkci5zNl9hZGRyMzJbMV0gPT0gMCAmJg0KKyAgICAg
ICAgICAgIUlONl9JU19BRERSX0xPT1BCQUNLKCZkc3Rzb2NrLT5zaW42X2Fk
ZHIpKSB7DQorICAgICAgICAgICAgICAgcHJpbnRmKCJpbjZfbG9va3VwOiBz
dHJhbmdlIGRlc3RpbmF0aW9uICVzXG4iLA0KKyAgICAgICAgICAgICAgICAg
ICAgICBpcDZfc3ByaW50ZihpcDZidWYsICZkc3Rzb2NrLT5zaW42X2FkZHIp
KTsNCisgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICBwcmludGYo
ImluNl9sb29rdXA6IGRlc3RpbmF0aW9uID0gJXMlJSVkXG4iLA0KKyAgICAg
ICAgICAgICAgICAgICAgICBpcDZfc3ByaW50ZihpcDZidWYsICZkc3Rzb2Nr
LT5zaW42X2FkZHIpLA0KKyAgICAgICAgICAgICAgICAgICAgICBkc3Rzb2Nr
LT5zaW42X3Njb3BlX2lkKTsgLyogZm9yIGRlYnVnICovDQorICAgICAgIH0N
CisjZW5kaWYNCisNCisgICAgICAgLyogSWYgdGhlIGNhbGxlciBzcGVjaWZ5
IHRoZSBvdXRnb2luZyBpbnRlcmZhY2UgZXhwbGljaXRseSwgdXNlIGl0LiAq
Lw0KKyAgICAgICBpZiAob3B0cyAmJiAocGkgPSBvcHRzLT5pcDZwb19wa3Rp
bmZvKSAhPSBOVUxMICYmIHBpLT5pcGk2X2lmaW5kZXgpIHsNCisgICAgICAg
ICAgICAgICAvKiBYWFggYm91bmRhcnkgY2hlY2sgaXMgYXNzdW1lZCB0byBi
ZSBhbHJlYWR5IGRvbmUuICovDQorICAgICAgICAgICAgICAgaWZwID0gaWZu
ZXRfYnlpbmRleChwaS0+aXBpNl9pZmluZGV4KTsNCisgICAgICAgICAgICAg
ICBpZiAoaWZwICE9IE5VTEwgJiYNCisgICAgICAgICAgICAgICAgICAgKG5v
cm91dGVvayB8fCByZXRydCA9PSBOVUxMIHx8DQorICAgICAgICAgICAgICAg
ICAgIElONl9JU19BRERSX01VTFRJQ0FTVChkc3QpKSkgew0KKyAgICAgICAg
ICAgICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgICAgICAgICAq
IHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIG9yIGdldCB0aGUgcm91dGUgZm9y
DQorICAgICAgICAgICAgICAgICAgICAgICAgKiBtdWx0aWNhc3QuDQorICAg
ICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gZG9uZTsNCisgICAgICAgICAgICAgICB9IGVsc2UNCisgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gZ2V0cm91dGU7DQorICAgICAgIH0N
CisNCisgICAgICAgLyoNCisgICAgICAgICogSWYgdGhlIGRlc3RpbmF0aW9u
IGFkZHJlc3MgaXMgYSBtdWx0aWNhc3QgYWRkcmVzcyBhbmQgdGhlIG91dGdv
aW5nDQorICAgICAgICAqIGludGVyZmFjZSBmb3IgdGhlIGFkZHJlc3MgaXMg
c3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIsIHVzZSBpdC4NCisgICAgICAgICov
DQorICAgICAgIGlmIChJTjZfSVNfQUREUl9NVUxUSUNBU1QoZHN0KSAmJg0K
KyAgICAgICAgICAgbW9wdHMgIT0gTlVMTCAmJiAoaWZwID0gbW9wdHMtPmlt
Nm9fbXVsdGljYXN0X2lmcCkgIT0gTlVMTCkgew0KKyAgICAgICAgICAgICAg
IGdvdG8gZG9uZTsgLyogd2UgZG8gbm90IG5lZWQgYSByb3V0ZSBmb3IgbXVs
dGljYXN0LiAqLw0KKyAgICAgICB9DQorDQorICBnZXRyb3V0ZToNCisgICAg
ICAgLyoNCisgICAgICAgICogSWYgdGhlIG5leHQgaG9wIGFkZHJlc3MgZm9y
IHRoZSBwYWNrZXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIsDQorICAg
ICAgICAqIHVzZSBpdCBhcyB0aGUgZ2F0ZXdheS4NCisgICAgICAgICovDQor
ICAgICAgIGlmIChvcHRzICYmIG9wdHMtPmlwNnBvX25leHRob3ApIHsNCisg
ICAgICAgICAgICAgICBzdHJ1Y3Qgcm91dGVfaW42ICpyb247DQorICAgICAg
ICAgICAgICAgc3RydWN0IGxsZW50cnkgKmxhOw0KKyAgICAgICAgICAgDQor
ICAgICAgICAgICAgICAgc2luNl9uZXh0ID0gc2F0b3NpbjYob3B0cy0+aXA2
cG9fbmV4dGhvcCk7DQorICAgICAgICAgICAgICAgDQorICAgICAgICAgICAg
ICAgLyogYXQgdGhpcyBtb21lbnQsIHdlIG9ubHkgc3VwcG9ydCBBRl9JTkVU
NiBuZXh0IGhvcHMgKi8NCisgICAgICAgICAgICAgICBpZiAoc2luNl9uZXh0
LT5zaW42X2ZhbWlseSAhPSBBRl9JTkVUNikgew0KKyAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3IgPSBFQUZOT1NVUFBPUlQ7IC8qIG9yIHNob3VsZCB3
ZSBwcm9jZWVkPyAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBk
b25lOw0KKyAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAv
Kg0KKyAgICAgICAgICAgICAgICAqIElmIHRoZSBuZXh0IGhvcCBpcyBhbiBJ
UHY2IGFkZHJlc3MsIHRoZW4gdGhlIG5vZGUgaWRlbnRpZmllZA0KKyAgICAg
ICAgICAgICAgICAqIGJ5IHRoYXQgYWRkcmVzcyBtdXN0IGJlIGEgbmVpZ2hi
b3Igb2YgdGhlIHNlbmRpbmcgaG9zdC4NCisgICAgICAgICAgICAgICAgKi8N
CisgICAgICAgICAgICAgICByb24gPSAmb3B0cy0+aXA2cG9fbmV4dHJvdXRl
Ow0KKyAgICAgICAgICAgICAgIC8qDQorICAgICAgICAgICAgICAgICogWFhY
IHdoYXQgZG8gd2UgZG8gaGVyZT8NCisgICAgICAgICAgICAgICAgKiBQTFog
dG8gYmUgZml4aW5nDQorICAgICAgICAgICAgICAgICovDQorDQorICAgICAg
ICAgICAgICAgaWYgKHJvbi0+cm9fcnQgPT0gTlVMTCkgew0KKyAgICAgICAg
ICAgICAgICAgICAgICAgYnplcm8oIHJ0bC0+cnRfZ2F0ZXdheSwgc2FfbGVu
KTsNCisgICAgICAgICAgICAgICAgICAgICAgIHJ0bC0+cnRfZ2F0ZXdheS0+
c2FfbGVuID0gc2FfbGVuOw0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCFydGxvb2t1cF9maWIoIChzdHJ1Y3Qgc29ja2FkZHIgKikmcm9uLT5yb19k
c3QsIDBVLCAvKiBtdWx0aSBwYXRoIGNhc2U/ICovDQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRsLCBSVExfUEtTRU5UKSkg
ew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb24tPnJvX3J0
ID0gTlVMTDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3IgPSBFSE9TVFVOUkVBQ0g7DQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZG9uZTsNCisgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb24tPnJv
X3J0ID0gKHN0cnVjdCBydGVudHJ5ICopIHJ0bDsNCisgICAgICAgICAgICAg
ICB9DQorDQorICAgICAgICAgICAgICAgcnQgPSByb24tPnJvX3J0Ow0KKyAg
ICAgICAgICAgICAgIGlmcCA9IHJ0LT5ydF9pZnA7DQorICAgICAgICAgICAg
ICAgSUZfQUZEQVRBX0xPQ0soaWZwKTsNCisgICAgICAgICAgICAgICBsYSA9
IGxsYV9sb29rdXAoTExUQUJMRTYoaWZwKSwgMCwgKHN0cnVjdCBzb2NrYWRk
ciAqKSZzaW42X25leHQtPnNpbjZfYWRkcik7DQorICAgICAgICAgICAgICAg
SUZfQUZEQVRBX1VOTE9DSyhpZnApOw0KKyAgICAgICAgICAgICAgIGlmIChs
YSAhPSBOVUxMKSANCisgICAgICAgICAgICAgICAgICAgICAgIExMRV9SVU5M
T0NLKGxhKTsNCisgICAgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yID0gRUhPU1RVTlJFQUNIOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgZ290byBkb25lOw0KKyAgICAgICAgICAgICAgIH0N
CisjaWYgMA0KKyAgICAgICAgICAgICAgIGlmICgocm9uLT5yb19ydCAmJg0K
KyAgICAgICAgICAgICAgICAgICAocm9uLT5yb19ydC0+cnRfZmxhZ3MgJiAo
UlRGX1VQIHwgUlRGX0xMSU5GTykpICE9DQorICAgICAgICAgICAgICAgICAg
IChSVEZfVVAgfCBSVEZfTExJTkZPKSkgfHwNCisgICAgICAgICAgICAgICAg
ICAgIUlONl9BUkVfQUREUl9FUVVBTCgmc2F0b3NpbjYoJnJvbi0+cm9fZHN0
KS0+c2luNl9hZGRyLA0KKyAgICAgICAgICAgICAgICAgICAmc2luNl9uZXh0
LT5zaW42X2FkZHIpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cm9uLT5yb19ydCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cm9uLT5yb19ydCA9IE5VTEw7DQorICAgICAgICAgICAgICAgICAgICAgICAq
c2F0b3NpbjYoJnJvbi0+cm9fZHN0KSA9ICpzaW42X25leHQ7DQorICAgICAg
ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgIGlmIChyb24tPnJvX3J0ID09
IE5VTEwpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGJ6ZXJvKCBydGwt
PnJ0X2dhdGV3YXksIHNhX2xlbik7DQorICAgICAgICAgICAgICAgICAgICAg
ICBydGwtPnJ0X2dhdGV3YXktPnNhX2xlbiA9IHNhX2xlbjsNCisgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcnRsb29rdXBfZmliKCAoc3RydWN0IHNv
Y2thZGRyICopJnJvbi0+cm9fZHN0LCAwVSwNCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydGwsIFJUTF9QS1NFTlQpKSB7DQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbi0+cm9fcnQgPSBO
VUxMOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9
IEVIT1NUVU5SRUFDSDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBkb25lOw0KKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9uLT5yb19y
dCA9IChzdHJ1Y3QgcnRlbnRyeSAqKSBydGw7DQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghKHJvbi0+cm9fcnQtPnJ0X2ZsYWdzICYg
UlRGX0xMSU5GTykpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByb24tPnJvX3J0ID0gTlVMTDsNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVIT1NUVU5SRUFD
SDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGRvbmU7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
DQorICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAg
fQ0KKyNlbmRpZg0KKw0KKyAgICAgICAgICAgICAgIC8qDQorICAgICAgICAg
ICAgICAgICogV2hlbiBjbG9uaW5nIGlzIHJlcXVpcmVkLCB0cnkgdG8gYWxs
b2NhdGUgYSByb3V0ZSB0byB0aGUNCisgICAgICAgICAgICAgICAgKiBkZXN0
aW5hdGlvbiBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIHN0b3JlIHBhdGggTVRV
DQorICAgICAgICAgICAgICAgICogaW5mb3JtYXRpb24uDQorICAgICAgICAg
ICAgICAgICovDQorICAgICAgICAgICAgICAgZ290byBkb25lOw0KKyAgICAg
ICB9DQorDQorICAgICAgIC8qDQorICAgICAgICAqIFVzZSBhIGNhY2hlZCBy
b3V0ZSBpZiBpdCBleGlzdHMgYW5kIGlzIHZhbGlkLCBlbHNlIHRyeSB0byBh
bGxvY2F0ZQ0KKyAgICAgICAgKiBhIG5ldyBvbmUuICBOb3RlIHRoYXQgd2Ug
c2hvdWxkIGNoZWNrIHRoZSBhZGRyZXNzIGZhbWlseSBvZiB0aGUNCisgICAg
ICAgICogY2FjaGVkIGRlc3RpbmF0aW9uLCBpbiBjYXNlIG9mIHNoYXJpbmcg
dGhlIGNhY2hlIHdpdGggSVB2NC4NCisgICAgICAgICovDQorICAgICAgIGlm
IChybykgew0KKyAgICAgICAgICAgICAgIGlmIChyby0+cm9fcnQgJiYNCisg
ICAgICAgICAgICAgICAgICAgKCEocm8tPnJvX3J0LT5ydF9mbGFncyAmIFJU
Rl9VUCkgfHwNCisgICAgICAgICAgICAgICAgICAgICgoc3RydWN0IHNvY2th
ZGRyICopKCZyby0+cm9fZHN0KSktPnNhX2ZhbWlseSAhPSBBRl9JTkVUNiB8
fA0KKyAgICAgICAgICAgICAgICAgICAgIUlONl9BUkVfQUREUl9FUVVBTCgm
c2F0b3NpbjYoJnJvLT5yb19kc3QpLT5zaW42X2FkZHIsDQorICAgICAgICAg
ICAgICAgICAgICBkc3QpKSkNCisgICAgICAgICAgICAgICAgICAgICAgIHJv
LT5yb19ydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKU5VTEw7DQorICAgICAgICAg
ICAgICAgaWYgKHJvLT5yb19ydCA9PSAoc3RydWN0IHJ0ZW50cnkgKilOVUxM
KSB7DQorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJf
aW42ICpzYTY7DQorDQorICAgICAgICAgICAgICAgICAgICAgICAvKiBObyBy
b3V0ZSB5ZXQsIHNvIHRyeSB0byBhY3F1aXJlIG9uZSAqLw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgYnplcm8oJnJvLT5yb19kc3QsIHNpemVvZihzdHJ1
Y3Qgc29ja2FkZHJfaW42KSk7DQorICAgICAgICAgICAgICAgICAgICAgICBz
YTYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZyby0+cm9fZHN0Ow0KKyAg
ICAgICAgICAgICAgICAgICAgICAgKnNhNiA9ICpkc3Rzb2NrOw0KKyAgICAg
ICAgICAgICAgICAgICAgICAgc2E2LT5zaW42X3Njb3BlX2lkID0gMDsNCisN
CisgICAgICAgICAgICAgICAgICAgICAgIGJ6ZXJvKCBydGwtPnJ0X2dhdGV3
YXksIHNhX2xlbik7DQorICAgICAgICAgICAgICAgICAgICAgICBydGwtPnJ0
X2dhdGV3YXktPnNhX2xlbiA9IHNhX2xlbjsNCisjaWZkZWYgUkFESVhfTVBB
VEgNCisgICAgICAgICAgICAgICAgICAgICAgIGlmICghcnRsb29rdXBfbXBh
dGhfZmliKChzdHJ1Y3Qgc29ja2FkZHIgKikmcm8tPnJvX2RzdCwNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9obChzYTYt
PnNpbjZfYWRkci5zNl9hZGRyMzJbM10pLA0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDBVLCBydGwsIFJUTF9QS1NFTlQpKQ0K
KyNlbHNlDQorICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJ0bG9va3Vw
X2ZpYigoc3RydWN0IHNvY2thZGRyICopJnJvLT5yb19kc3QsIDBVLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0bCwgUlRM
X1BLU0VOVCkpDQorI2VuZGlmDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJvLT5yb19ydCA9IE5VTEw7DQorICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJv
LT5yb19ydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKSBydGw7DQorICAgICAgICAg
ICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisg
ICAgICAgICAgICAgICAvKg0KKyAgICAgICAgICAgICAgICAqIGRvIG5vdCBj
YXJlIGFib3V0IHRoZSByZXN1bHQgaWYgd2UgaGF2ZSB0aGUgbmV4dGhvcA0K
KyAgICAgICAgICAgICAgICAqIGV4cGxpY2l0bHkgc3BlY2lmaWVkLg0KKyAg
ICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAgICAgIGlmIChvcHRzICYm
IG9wdHMtPmlwNnBvX25leHRob3ApDQorICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIGRvbmU7DQorDQorICAgICAgICAgICAgICAgaWYgKHJvLT5yb19y
dCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgaWZwID0gcm8tPnJvX3J0
LT5ydF9pZnA7DQorDQorICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWZw
ID09IE5VTEwpIHsgLyogY2FuIHRoaXMgcmVhbGx5IGhhcHBlbj8gKi8NCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm8tPnJvX3J0ID0gTlVM
TDsNCisgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAg
ICB9DQorICAgICAgICAgICAgICAgaWYgKHJvLT5yb19ydCA9PSBOVUxMKQ0K
KyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBFSE9TVFVOUkVBQ0g7
DQorICAgICAgICAgICAgICAgcnQgPSByby0+cm9fcnQ7DQorDQorICAgICAg
ICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAgKiBDaGVjayBpZiB0aGUg
b3V0Z29pbmcgaW50ZXJmYWNlIGNvbmZsaWN0cyB3aXRoDQorICAgICAgICAg
ICAgICAgICogdGhlIGludGVyZmFjZSBzcGVjaWZpZWQgYnkgaXBpNl9pZmlu
ZGV4IChpZiBzcGVjaWZpZWQpLg0KKyAgICAgICAgICAgICAgICAqIE5vdGUg
dGhhdCBsb29wYmFjayBpbnRlcmZhY2UgaXMgYWx3YXlzIG9rYXkuDQorICAg
ICAgICAgICAgICAgICogKHRoaXMgbWF5IGhhcHBlbiB3aGVuIHdlIGFyZSBz
ZW5kaW5nIGEgcGFja2V0IHRvIG9uZSBvZg0KKyAgICAgICAgICAgICAgICAq
ICBvdXIgb3duIGFkZHJlc3Nlcy4pDQorICAgICAgICAgICAgICAgICovDQor
ICAgICAgICAgICAgICAgaWYgKGlmcCAmJiBvcHRzICYmIG9wdHMtPmlwNnBv
X3BrdGluZm8gJiYNCisgICAgICAgICAgICAgICAgICAgb3B0cy0+aXA2cG9f
cGt0aW5mby0+aXBpNl9pZmluZGV4KSB7DQorICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIShpZnAtPmlmX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSAmJg0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcC0+aWZfaW5kZXggIT0N
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLT5pcDZwb19wa3Rp
bmZvLT5pcGk2X2lmaW5kZXgpIHsNCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3IgPSBFSE9TVFVOUkVBQ0g7DQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsNCisgICAgICAgICAgICAg
ICAgICAgICAgIH0NCisgICAgICAgICAgICAgICB9DQorICAgICAgIH0NCisN
CisgIGRvbmU6DQorICAgICAgIGlmIChpZnAgPT0gTlVMTCAmJiBydCA9PSBO
VUxMKSB7DQorICAgICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgICAg
KiBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGNhbGxlciBkaWQgbm90IHBhc3Mg
YSBjYWNoZWQgcm91dGUNCisgICAgICAgICAgICAgICAgKiBub3IgYW55IG90
aGVyIGhpbnRzLiAgV2UgdHJlYXQgdGhpcyBjYXNlIGFuIGVycm9yLg0KKyAg
ICAgICAgICAgICAgICAqLw0KKyAgICAgICAgICAgICAgIGVycm9yID0gRUhP
U1RVTlJFQUNIOw0KKyAgICAgICB9DQorICAgICAgIGlmIChlcnJvciA9PSBF
SE9TVFVOUkVBQ0gpDQorICAgICAgICAgICAgICAgVl9pcDZzdGF0LmlwNnNf
bm9yb3V0ZSsrOw0KKw0KKyAgICAgICBpZiAocmV0aWZwICE9IE5VTEwpIHsN
CisgICAgICAgICAgICAgICAqcmV0aWZwID0gaWZwOw0KKw0KKyAgICAgICAg
ICAgICAgIC8qDQorICAgICAgICAgICAgICAgICogQWRqdXN0IHRoZSAib3V0
Z29pbmciIGludGVyZmFjZS4gIElmIHdlJ3JlIGdvaW5nIHRvIGxvb3AgDQor
ICAgICAgICAgICAgICAgICogdGhlIHBhY2tldCBiYWNrIHRvIG91cnNlbHZl
cywgdGhlIGlmcCB3b3VsZCBiZSB0aGUgbG9vcGJhY2sgDQorICAgICAgICAg
ICAgICAgICogaW50ZXJmYWNlLiBIb3dldmVyLCB3ZSdkIHJhdGhlciBrbm93
IHRoZSBpbnRlcmZhY2UgYXNzb2NpYXRlZCANCisgICAgICAgICAgICAgICAg
KiB0byB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyAod2hpY2ggc2hvdWxkIHBy
b2JhYmx5IGJlIG9uZSBvZiANCisgICAgICAgICAgICAgICAgKiBvdXIgb3du
IGFkZHJlc3Nlcy4pDQorICAgICAgICAgICAgICAgICovDQorICAgICAgICAg
ICAgICAgaWYgKHJ0KSB7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KHJ0LT5ydF9pZnAtPmlmX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSAmJg0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChydC0+cnRfZ2F0ZXdheS0+c2Ff
ZmFtaWx5ID09IEFGX0xJTkspKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqcmV0aWZwID0gDQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWZuZXRfYnlpbmRleCgoKHN0cnVjdCBzb2NrYWRk
cl9kbCAqKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJ0LT5ydF9nYXRld2F5KS0+c2RsX2luZGV4
KTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgIH0NCisgICAgICAgaWYg
KHJldHJ0ICE9IE5VTEwpDQorICAgICAgICAgICAgICAgKnJldHJ0ID0gcnQ7
ICAgIC8qIHJ0IG1heSBiZSBOVUxMICovDQogDQotCXJldHVybiAoc2VsZWN0
cm91dGUoZHN0c29jaywgb3B0cywgbW9wdHMsIHJvLCByZXRpZnAsDQotCSAg
ICByZXRydCwgMCkpOw0KKyAgICAgICByZXR1cm4gKGVycm9yKTsNCiB9DQog
DQogLyoNCmRpZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lz
L25ldGluZXQ2L2lwNl9mb3J3YXJkLmMgLi9zeXMvbmV0aW5ldDYvaXA2X2Zv
cndhcmQuYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRp
bmV0Ni9pcDZfZm9yd2FyZC5jCTIwMTAtMDItMDcgMDk6MDA6MjIuMDAwMDAw
MDAwICswMDAwDQorKysgLi9zeXMvbmV0aW5ldDYvaXA2X2ZvcndhcmQuYwky
MDExLTA0LTE0IDE2OjMxOjEzLjAwMDAwMDAwMCArMDAwMA0KQEAgLTUwLDYg
KzUwLDcgQEANCiAjaW5jbHVkZSA8c3lzL3N5c2xvZy5oPg0KIA0KICNpbmNs
dWRlIDxuZXQvaWYuaD4NCisjaW5jbHVkZSA8bmV0L2lmX2RsLmg+DQogI2lu
Y2x1ZGUgPG5ldC9yb3V0ZS5oPg0KICNpbmNsdWRlIDxuZXQvcGZpbC5oPg0K
IA0KQEAgLTk5LDkgKzEwMCwxMiBAQA0KIAlzdHJ1Y3QgaWZuZXQgKm9yaWdp
ZnA7CS8qIG1heWJlIHVubmVjZXNzYXJ5ICovDQogCXVfaW50MzJfdCBpbnpv
bmUsIG91dHpvbmU7DQogCXN0cnVjdCBpbjZfYWRkciBzcmNfaW42LCBkc3Rf
aW42Ow0KKwlzdHJ1Y3QgcnRsb29rdXAgcnRsOw0KKwlzdHJ1Y3Qgc29ja2Fk
ZHJfZGwgZ2F0ZXdheTsNCiAjaWZkZWYgSVBTRUMNCiAJc3RydWN0IHNlY3Bv
bGljeSAqc3AgPSBOVUxMOw0KIAlpbnQgaXBzZWNydCA9IDA7DQorCWludCBu
b3J0ZnJlZSA9IDA7DQogI2VuZGlmDQogCWNoYXIgaXA2YnVmc1tJTkVUNl9B
RERSU1RSTEVOXSwgaXA2YnVmZFtJTkVUNl9BRERSU1RSTEVOXTsNCiANCkBA
IC0yODMsNyArMjg3LDcgQEANCiAJc3RhdGUucm8gPSBOVUxMOwkvKiB1cGRh
dGUgYXQgaXBzZWM2X291dHB1dF90dW5uZWwoKSAqLw0KIAlzdGF0ZS5kc3Qg
PSBOVUxMOwkvKiB1cGRhdGUgYXQgaXBzZWM2X291dHB1dF90dW5uZWwoKSAq
Lw0KIA0KLQllcnJvciA9IGlwc2VjNl9vdXRwdXRfdHVubmVsKCZzdGF0ZSwg
c3AsIDApOw0KKwllcnJvciA9IGlwc2VjNl9vdXRwdXRfdHVubmVsKCZzdGF0
ZSwgc3AsIDAsICZydGwsIChzdHJ1Y3Qgc29ja2FkZHIgKikmZ2F0ZXdheSwg
Jm5vcnRmcmVlKTsNCiANCiAJbSA9IHN0YXRlLm07DQogCUtFWV9GUkVFU1Ao
JnNwKTsNCkBAIC0zNTIsMTggKzM1NiwyOSBAQA0KIAlkc3QtPnNpbjZfZmFt
aWx5ID0gQUZfSU5FVDY7DQogCWRzdC0+c2luNl9hZGRyID0gaXA2LT5pcDZf
ZHN0Ow0KIA0KLQlyaW42LnJvX3J0ID0gcnRhbGxvYzEoKHN0cnVjdCBzb2Nr
YWRkciAqKWRzdCwgMCwgMCk7DQotCWlmIChyaW42LnJvX3J0ICE9IE5VTEwp
DQotCQlSVF9VTkxPQ0socmluNi5yb19ydCk7DQotCWVsc2Ugew0KKwliemVy
byggJmdhdGV3YXksIHNpemVvZihnYXRld2F5KSk7DQorCWdhdGV3YXkuc2Rs
X2xlbiA9IHNpemVvZihnYXRld2F5KTsNCisJcnRsLnJ0X2dhdGV3YXkgPSAo
c3RydWN0IHNvY2thZGRyICopJmdhdGV3YXk7DQorI2lmZGVmIFJBRElYX01Q
QVRIDQorCXNyY19pbjYgPSBpcDYtPmlwNl9zcmM7DQorCWRzdF9pbjYgPSBp
cDYtPmlwNl9kc3Q7DQorCWlmICghcnRsb29rdXBfbXBhdGhfZmliKChzdHJ1
Y3Qgc29ja2FkZHIgKikmcmluNi5yb19kc3QsDQorCQkJbnRvaGwoc3JjX2lu
Ni0+c2luNl9hZGRyLnM2X2FkZHIzMlszXSBeIGRzdF9pbjYtPnNpbjZfYWRk
ci5zNl9hZGRyMzJbM10pLA0KKwkJCTBVLCAmcnRsLCBSVExfUEtTRU5UKSkg
ew0KKyNlbHNlDQorCWlmICghcnRsb29rdXBfZmliKCAoc3RydWN0IHNvY2th
ZGRyICopJnJpbjYucm9fZHN0LCAwVSwgJnJ0bCwNCisJCQlSVExfUEtTRU5U
KSkgew0KKyNlbmRpZg0KKwkJcmluNi5yb19ydCA9IE5VTEw7DQogCQlWX2lw
NnN0YXQuaXA2c19ub3JvdXRlKys7DQogCQlpbjZfaWZzdGF0X2luYyhtLT5t
X3BrdGhkci5yY3ZpZiwgaWZzNl9pbl9ub3JvdXRlKTsNCiAJCWlmIChtY29w
eSkgew0KIAkJCWljbXA2X2Vycm9yKG1jb3B5LCBJQ01QNl9EU1RfVU5SRUFD
SCwNCi0JCQlJQ01QNl9EU1RfVU5SRUFDSF9OT1JPVVRFLCAwKTsNCisJCQkJ
SUNNUDZfRFNUX1VOUkVBQ0hfTk9ST1VURSwgMCk7DQogCQl9DQogCQlnb3Rv
IGJhZDsNCi0JfQ0KKwl9IGVsc2UNCisJCXJpbjYucm9fcnQgPSAoc3RydWN0
IHJ0ZW50cnkgKikgJnJ0bDsNCiAJcnQgPSByaW42LnJvX3J0Ow0KICNpZmRl
ZiBJUFNFQw0KIHNraXBfcm91dGluZzoNCkBAIC01ODAsMTIgKzU5NSwxMiBA
QA0KIA0KIHNlbmRlcnI6DQogCWlmIChtY29weSA9PSBOVUxMKQ0KLQkJZ290
byBvdXQ7DQorCQlyZXR1cm47DQogCXN3aXRjaCAoZXJyb3IpIHsNCiAJY2Fz
ZSAwOg0KIAkJaWYgKHR5cGUgPT0gTkRfUkVESVJFQ1QpIHsNCiAJCQlpY21w
Nl9yZWRpcmVjdF9vdXRwdXQobWNvcHksIHJ0KTsNCi0JCQlnb3RvIG91dDsN
CisJCQlyZXR1cm47DQogCQl9DQogCQlnb3RvIGZyZWVjb3B5Ow0KIA0KQEAg
LTYwNywxOCArNjIyLDExIEBADQogCQlicmVhazsNCiAJfQ0KIAlpY21wNl9l
cnJvcihtY29weSwgdHlwZSwgY29kZSwgMCk7DQotCWdvdG8gb3V0Ow0KKwly
ZXR1cm47DQogDQogIGZyZWVjb3B5Og0KIAltX2ZyZWVtKG1jb3B5KTsNCi0J
Z290byBvdXQ7DQorCXJldHVybjsNCiBiYWQ6DQogCW1fZnJlZW0obSk7DQot
b3V0Og0KLQlpZiAocnQgIT0gTlVMTA0KLSNpZmRlZiBJUFNFQw0KLQkgICAg
JiYgIWlwc2VjcnQNCi0jZW5kaWYNCi0JICAgICkNCi0JCVJURlJFRShydCk7
DQogfQ0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMv
bmV0aW5ldDYvaXA2X2lucHV0LmMgLi9zeXMvbmV0aW5ldDYvaXA2X2lucHV0
LmMNCi0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldDYv
aXA2X2lucHV0LmMJMjAxMC0wOS0xOCAwMTo1NDoyOC4wMDAwMDAwMDAgKzAw
MDANCisrKyAuL3N5cy9uZXRpbmV0Ni9pcDZfaW5wdXQuYwkyMDExLTA0LTA3
IDAyOjE0OjI4LjAwMDAwMDAwMCArMDAwMA0KQEAgLTMxMyw2ICszMTMsOCBA
QA0KIAlpbnQgc3JjcnQgPSAwOw0KIAlzdHJ1Y3QgbGxlbnRyeSAqbGxlID0g
TlVMTDsNCiAJc3RydWN0IHNvY2thZGRyX2luNiBkc3Q2LCAqZHN0Ow0KKwlz
dHJ1Y3QgcnRsb29rdXAgcnRsOw0KKwlzdHJ1Y3Qgc29ja2FkZHJfZGwgZ2F0
ZXdheTsNCiANCiAJYnplcm8oJnJpbjYsIHNpemVvZihzdHJ1Y3Qgcm91dGVf
aW42KSk7DQogI2lmZGVmIElQU0VDDQpAQCAtNjAzLDExICs2MDUsMTUgQEAN
CiAJZHN0LT5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42
KTsNCiAJZHN0LT5zaW42X2ZhbWlseSA9IEFGX0lORVQ2Ow0KIAlkc3QtPnNp
bjZfYWRkciA9IGlwNi0+aXA2X2RzdDsNCi0JcmluNi5yb19ydCA9IHJ0YWxs
b2MxKChzdHJ1Y3Qgc29ja2FkZHIgKilkc3QsIDAsIDApOw0KLQlpZiAocmlu
Ni5yb19ydCkNCi0JCVJUX1VOTE9DSyhyaW42LnJvX3J0KTsNCiANCi0jZGVm
aW5lIHJ0Nl9rZXkocikgKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKChyKS0+
cnRfbm9kZXMtPnJuX2tleSkpDQorCWJ6ZXJvKCAmZ2F0ZXdheSwgc2l6ZW9m
KGdhdGV3YXkpKTsNCisJZ2F0ZXdheS5zZGxfbGVuID0gc2l6ZW9mKGdhdGV3
YXkpOw0KKwlydGwucnRfZ2F0ZXdheSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikm
Z2F0ZXdheTsNCisJaWYgKCFydGxvb2t1cF9maWIoIChzdHJ1Y3Qgc29ja2Fk
ZHIgKilkc3QsDQorCSAgICAwVSwgJnJ0bCwgMCkpDQorCQlyaW42LnJvX3J0
ID0gTlVMTDsNCisJZWxzZQ0KKwkJcmluNi5yb19ydCA9IChzdHJ1Y3QgcnRl
bnRyeSAqKSZydGw7DQogDQogCS8qDQogCSAqIEFjY2VwdCB0aGUgcGFja2V0
IGlmIHRoZSBmb3J3YXJkaW5nIGludGVyZmFjZSB0byB0aGUgZGVzdGluYXRp
b24NCkBAIC02MzgsMTUgKzY0NCw2IEBADQogI2lmZGVmIFJURl9DTE9ORUQN
CiAJICAgICEocmluNi5yb19ydC0+cnRfZmxhZ3MgJiBSVEZfQ0xPTkVEKSAm
Jg0KICNlbmRpZg0KLSNpZiAwDQotCSAgICAvKg0KLQkgICAgICogVGhlIGNo
ZWNrIGJlbG93IGlzIHJlZHVuZGFudCBzaW5jZSB0aGUgY29tcGFyaXNvbiBv
Zg0KLQkgICAgICogdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGUga2V5IG9mIHRo
ZSBydGVudHJ5IGhhcw0KLQkgICAgICogYWxyZWFkeSBkb25lIHRocm91Z2gg
bG9va2luZyB1cCB0aGUgcm91dGluZyB0YWJsZS4NCi0JICAgICAqLw0KLQkg
ICAgSU42X0FSRV9BRERSX0VRVUFMKCZpcDYtPmlwNl9kc3QsDQotCSAgICAm
cnQ2X2tleShyaW42LnJvX3J0KS0+c2luNl9hZGRyKQ0KLSNlbmRpZg0KIAkg
ICAgcmluNi5yb19ydC0+cnRfaWZwLT5pZl90eXBlID09IElGVF9MT09QKSB7
DQogCQlpbnQgZnJlZV9pYTYgPSAwOw0KIAkJc3RydWN0IGluNl9pZmFkZHIg
KmlhNjsNCkBAIC03NjMsNyArNzYwLDcgQEANCiAjaWYgMAkvKnRvdWNoZXMg
TlVMTCBwb2ludGVyKi8NCiAJCQlpbjZfaWZzdGF0X2luYyhtLT5tX3BrdGhk
ci5yY3ZpZiwgaWZzNl9pbl9kaXNjYXJkKTsNCiAjZW5kaWYNCi0JCQlnb3Rv
IG91dDsJLyogbSBoYXZlIGFscmVhZHkgYmVlbiBmcmVlZCAqLw0KKwkJCXJl
dHVybjsJLyogbSBoYXZlIGFscmVhZHkgYmVlbiBmcmVlZCAqLw0KIAkJfQ0K
IA0KIAkJLyogYWRqdXN0IHBvaW50ZXIgKi8NCkBAIC03ODYsNyArNzgzLDcg
QEANCiAJCQlpY21wNl9lcnJvcihtLCBJQ01QNl9QQVJBTV9QUk9CLA0KIAkJ
CQkgICAgSUNNUDZfUEFSQU1QUk9CX0hFQURFUiwNCiAJCQkJICAgIChjYWRk
cl90KSZpcDYtPmlwNl9wbGVuIC0gKGNhZGRyX3QpaXA2KTsNCi0JCQlnb3Rv
IG91dDsNCisJCQlyZXR1cm47DQogCQl9DQogI2lmbmRlZiBQVUxMRE9XTl9U
RVNUDQogCQkvKiBpcDZfaG9wb3B0c19pbnB1dCgpIGVuc3VyZXMgdGhhdCBt
YnVmIGlzIGNvbnRpZ3VvdXMgKi8NCkBAIC03OTYsNyArNzkzLDcgQEANCiAJ
CQlzaXplb2Yoc3RydWN0IGlwNl9oYmgpKTsNCiAJCWlmIChoYmggPT0gTlVM
TCkgew0KIAkJCVZfaXA2c3RhdC5pcDZzX3Rvb3Nob3J0Kys7DQotCQkJZ290
byBvdXQ7DQorCQkJcmV0dXJuOw0KIAkJfQ0KICNlbmRpZg0KIAkJbnh0ID0g
aGJoLT5pcDZoX254dDsNCkBAIC04NjgsNyArODY1LDcgQEANCiAJCX0NCiAJ
fSBlbHNlIGlmICghb3Vycykgew0KIAkJaXA2X2ZvcndhcmQobSwgc3JjcnQp
Ow0KLQkJZ290byBvdXQ7DQorCQlyZXR1cm47DQogCX0NCiANCiAJaXA2ID0g
bXRvZChtLCBzdHJ1Y3QgaXA2X2hkciAqKTsNCkBAIC05MzEsMTIgKzkyOCw5
IEBADQogDQogCQlueHQgPSAoKmluZXQ2c3dbaXA2X3Byb3RveFtueHRdXS5w
cl9pbnB1dCkoJm0sICZvZmYsIG54dCk7DQogCX0NCi0JZ290byBvdXQ7DQor
CXJldHVybjsNCiBiYWQ6DQogCW1fZnJlZW0obSk7DQotb3V0Og0KLQlpZiAo
cmluNi5yb19ydCkNCi0JCVJURlJFRShyaW42LnJvX3J0KTsNCiB9DQogDQog
LyoNCmRpZmYgLXUgLXIgLi4vc3JjX29yZ184LjJfMjAxMTAzMjkvc3lzL25l
dGluZXQ2L2lwNl9vdXRwdXQuYyAuL3N5cy9uZXRpbmV0Ni9pcDZfb3V0cHV0
LmMNCi0tLSAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9zeXMvbmV0aW5ldDYv
aXA2X291dHB1dC5jCTIwMTAtMTAtMjUgMTM6MTY6MTEuMDAwMDAwMDAwICsw
MDAwDQorKysgLi9zeXMvbmV0aW5ldDYvaXA2X291dHB1dC5jCTIwMTEtMDQt
MTQgMTY6MzM6MDQuMDAwMDAwMDAwICswMDAwDQpAQCAtODIsNiArODIsNyBA
QA0KICNpbmNsdWRlIDxzeXMvdWNyZWQuaD4NCiANCiAjaW5jbHVkZSA8bmV0
L2lmLmg+DQorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KICNpbmNsdWRlIDxu
ZXQvbmV0aXNyLmg+DQogI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPg0KICNpbmNs
dWRlIDxuZXQvcGZpbC5oPg0KQEAgLTEzNSw3ICsxMzYsOCBAQA0KIHN0YXRp
YyBpbnQgaXA2X2luc2VydF9qdW1ib29wdChzdHJ1Y3QgaXA2X2V4dGhkcnMg
KiwgdV9pbnQzMl90KTsNCiBzdGF0aWMgaW50IGlwNl9zcGxpdGhkcihzdHJ1
Y3QgbWJ1ZiAqLCBzdHJ1Y3QgaXA2X2V4dGhkcnMgKik7DQogc3RhdGljIGlu
dCBpcDZfZ2V0cG10dSBfX1AoKHN0cnVjdCByb3V0ZV9pbjYgKiwgc3RydWN0
IHJvdXRlX2luNiAqLA0KLQlzdHJ1Y3QgaWZuZXQgKiwgc3RydWN0IGluNl9h
ZGRyICosIHVfbG9uZyAqLCBpbnQgKikpOw0KKwlzdHJ1Y3QgaWZuZXQgKiwg
c3RydWN0IGluNl9hZGRyICosIHVfbG9uZyAqLCBpbnQgKiwgaW50ICosIA0K
KwlzdHJ1Y3QgcnRsb29rdXAgKiwgc3RydWN0IHNvY2thZGRyX2RsICopKTsN
CiBzdGF0aWMgaW50IGNvcHlwa3RvcHRzKHN0cnVjdCBpcDZfcGt0b3B0cyAq
LCBzdHJ1Y3QgaXA2X3BrdG9wdHMgKiwgaW50KTsNCiANCiANCkBAIC0yMTMs
NiArMjE1LDEwIEBADQogCXN0cnVjdCByb3V0ZV9pbjYgKnJvX3BtdHUgPSBO
VUxMOw0KIAlpbnQgaGRyc3BsaXQgPSAwOw0KIAlpbnQgbmVlZGlwc2VjID0g
MDsNCisJc3RydWN0IHJ0bG9va3VwIHJ0bDsNCisJc3RydWN0IHNvY2thZGRy
X2RsIGdhdGV3YXk7DQorCWludCByb19wcm92aWRlZCA9IDE7DQorCWludCBu
b3J0ZnJlZSA9IDA7DQogI2lmZGVmIFNDVFANCiAJaW50IHN3X2NzdW07DQog
I2VuZGlmDQpAQCAtNDYzLDYgKzQ2OSw3IEBADQogCSAqIFJvdXRlIHBhY2tl
dC4NCiAJICovDQogCWlmIChybyA9PSAwKSB7DQorCSAgICAgICAgcm9fcHJv
dmlkZWQgPSAwOw0KIAkJcm8gPSAmaXA2cm91dGU7DQogCQliemVybygoY2Fk
ZHJfdClybywgc2l6ZW9mKCpybykpOw0KIAl9DQpAQCAtNTIxLDcgKzUyOCwx
NSBAQA0KIAkJc3RhdGUucm8gPSAoc3RydWN0IHJvdXRlICopcm87DQogCQlz
dGF0ZS5kc3QgPSAoc3RydWN0IHNvY2thZGRyICopZHN0Ow0KIA0KLQkJZXJy
b3IgPSBpcHNlYzZfb3V0cHV0X3R1bm5lbCgmc3RhdGUsIHNwLCBmbGFncyk7
DQorCQkvKiBjaGVjayBpZiBjYWxsZXIgZG9lcyBub3QgZnJlZSByb19ydCwg
YXMgbmVlZGVkIGJ5DQorCQkgKiBydGxvb2t1cF8obXBhdGgpX2ZpYg0KKwkJ
ICovDQorCQlpZiAocm9fcHJvdmlkZWQpDQorCQkJZXJyb3IgPSBpcHNlYzZf
b3V0cHV0X3R1bm5lbCgmc3RhdGUsIHNwLCBmbGFncywgTlVMTCwgDQorCQkJ
ICAgIE5VTEwsICZub3J0ZnJlZSk7DQorCQllbHNlDQorCQkJZXJyb3IgPSBp
cHNlYzZfb3V0cHV0X3R1bm5lbCgmc3RhdGUsIHNwLCBmbGFncywgJnJ0bCwN
CisJCQkgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZnYXRld2F5LCAmbm9ydGZy
ZWUpOw0KIA0KIAkJbSA9IHN0YXRlLm07DQogCQlybyA9IChzdHJ1Y3Qgcm91
dGVfaW42ICopc3RhdGUucm87DQpAQCAtNTc2LDE1ICs1OTEsMjYgQEANCiAJ
ZHN0X3NhLnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7DQogCWRzdF9zYS5zaW42
X2xlbiA9IHNpemVvZihkc3Rfc2EpOw0KIAlkc3Rfc2Euc2luNl9hZGRyID0g
aXA2LT5pcDZfZHN0Ow0KLQlpZiAoKGVycm9yID0gaW42X3NlbGVjdHJvdXRl
KCZkc3Rfc2EsIG9wdCwgaW02bywgcm8sDQotCSAgICAmaWZwLCAmcnQpKSAh
PSAwKSB7DQorCS8qIGNoZWNrIGlmIGNhbGxlciBkb2VzIG5vdCBmcmVlIHJv
X3J0LCBhcyBuZWVkZWQgYnkNCisJICogcnRsb29rdXBfKG1wYXRoKV9maWIN
CisJICovDQorCWlmIChyb19wcm92aWRlZCkgew0KKwkJZXJyb3IgPSBpbjZf
c2VsZWN0cm91dGUoJmRzdF9zYSwgb3B0LCBpbTZvLCBybywgJmlmcCwgJnJ0
KTsNCisJfSBlbHNlIHsNCisJCWJ6ZXJvKCAmZ2F0ZXdheSwgc2l6ZW9mKGdh
dGV3YXkpKTsNCisJCWdhdGV3YXkuc2RsX2xlbiA9IHNpemVvZihnYXRld2F5
KTsNCisJCXJ0bC5ydF9nYXRld2F5ID0gKHN0cnVjdCBzb2NrYWRkciAqKSZn
YXRld2F5Ow0KKwkJZXJyb3IgPSBpbjZfbG9va3VwKCZkc3Rfc2EsIG9wdCwg
aW02bywgcm8sICZydGwsICZpZnAsICZydCk7DQorCQlub3J0ZnJlZSA9IDE7
DQorCX0NCisJaWYgKGVycm9yICE9IDApIHsNCiAJCXN3aXRjaCAoZXJyb3Ip
IHsNCi0JCWNhc2UgRUhPU1RVTlJFQUNIOg0KLQkJCVZfaXA2c3RhdC5pcDZz
X25vcm91dGUrKzsNCi0JCQlicmVhazsNCi0JCWNhc2UgRUFERFJOT1RBVkFJ
TDoNCi0JCWRlZmF1bHQ6DQotCQkJYnJlYWs7IC8qIFhYWCBzdGF0aXN0aWNz
PyAqLw0KKwkJCWNhc2UgRUhPU1RVTlJFQUNIOg0KKwkJCQlWX2lwNnN0YXQu
aXA2c19ub3JvdXRlKys7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgRUFERFJO
T1RBVkFJTDoNCisJCQlkZWZhdWx0Og0KKwkJCQlicmVhazsgLyogWFhYIHN0
YXRpc3RpY3M/ICovDQogCQl9DQogCQlpZiAoaWZwICE9IE5VTEwpDQogCQkJ
aW42X2lmc3RhdF9pbmMoaWZwLCBpZnM2X291dF9kaXNjYXJkKTsNCkBAIC01
OTIsNyArNjE4LDcgQEANCiAJfQ0KIAlpZiAocnQgPT0gTlVMTCkgew0KIAkJ
LyoNCi0JCSAqIElmIGluNl9zZWxlY3Ryb3V0ZSgpIGRvZXMgbm90IHJldHVy
biBhIHJvdXRlIGVudHJ5LA0KKwkJICogSWYgaW42X3NlbGVjdHJvdXRlKCkv
aW42X2xvb2t1cCgpIGRvZXMgbm90IHJldHVybiBhIHJvdXRlIGVudHJ5LA0K
IAkJICogZHN0IG1heSBub3QgaGF2ZSBiZWVuIHVwZGF0ZWQuDQogCQkgKi8N
CiAJCSpkc3QgPSBkc3Rfc2E7CS8qIFhYWCAqLw0KQEAgLTc0MywxMSArNzY5
LDIwIEBADQogCWlmIChpZnBwKQ0KIAkJKmlmcHAgPSBpZnA7DQogDQotCS8q
IERldGVybWluZSBwYXRoIE1UVS4gKi8NCi0JaWYgKChlcnJvciA9IGlwNl9n
ZXRwbXR1KHJvX3BtdHUsIHJvLCBpZnAsICZmaW5hbGRzdCwgJm10dSwNCi0J
ICAgICZhbHdheXNmcmFnKSkgIT0gMCkNCi0JCWdvdG8gYmFkOw0KLQ0KKwkv
KiBEZXRlcm1pbmUgcGF0aCBNVFUuDQorCSAqIGNoZWNrIGlmIGNhbGxlciBk
b2VzIG5vdCBmcmVlIHJvX3J0LCBhcyBuZWVkZWQgYnkNCisJICogcnRsb29r
dXBfKG1wYXRoKV9maWINCisJICovDQorCWlmIChyb19wcm92aWRlZCkgew0K
KwkJaWYgKChlcnJvciA9IGlwNl9nZXRwbXR1KHJvX3BtdHUsIHJvLCBpZnAs
ICZmaW5hbGRzdCwgJm10dSwNCisgICAgICAgICAgICAgICAgICAgICZhbHdh
eXNmcmFnLCAmbm9ydGZyZWUsIE5VTEwsIE5VTEwpKSAhPSAwKQ0KKwkJCWdv
dG8gYmFkOw0KKwl9IGVsc2Ugew0KKwkJaWYgKChlcnJvciA9IGlwNl9nZXRw
bXR1KHJvX3BtdHUsIHJvLCBpZnAsICZmaW5hbGRzdCwgJm10dSwNCisgICAg
ICAgICAgICAgICAgICAgICZhbHdheXNmcmFnLCAmbm9ydGZyZWUsICZydGws
ICZnYXRld2F5KSkgIT0gMCkNCisJCQlnb3RvIGJhZDsNCisJfQ0KKwkJCQ0K
IAkvKg0KIAkgKiBUaGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gbWF5IHNw
ZWNpZnkgdG8gdXNlIHRoZSBtaW5pbXVtIE1UVQ0KIAkgKiBpbiBzb21lIGNh
c2VzLg0KQEAgLTEwNzEsOSArMTEwNiw5IEBADQogCQlWX2lwNnN0YXQuaXA2
c19mcmFnbWVudGVkKys7DQogDQogZG9uZToNCi0JaWYgKHJvID09ICZpcDZy
b3V0ZSAmJiByby0+cm9fcnQpIHsgLyogYnJhY2UgbmVjZXNzYXJ5IGZvciBS
VEZSRUUgKi8NCisJaWYgKHJvID09ICZpcDZyb3V0ZSAmJiByby0+cm9fcnQg
JiYgIW5vcnRmcmVlKSB7IC8qIGJyYWNlIG5lY2Vzc2FyeSBmb3IgUlRGUkVF
ICovDQogCQlSVEZSRUUocm8tPnJvX3J0KTsNCi0JfSBlbHNlIGlmIChyb19w
bXR1ID09ICZpcDZyb3V0ZSAmJiByb19wbXR1LT5yb19ydCkgew0KKwl9IGVs
c2UgaWYgKHJvX3BtdHUgPT0gJmlwNnJvdXRlICYmIHJvX3BtdHUtPnJvX3J0
ICYmICFub3J0ZnJlZSkgew0KIAkJUlRGUkVFKHJvX3BtdHUtPnJvX3J0KTsN
CiAJfQ0KICNpZmRlZiBJUFNFQw0KQEAgLTEyNjQsNyArMTI5OSw3IEBADQog
c3RhdGljIGludA0KIGlwNl9nZXRwbXR1KHN0cnVjdCByb3V0ZV9pbjYgKnJv
X3BtdHUsIHN0cnVjdCByb3V0ZV9pbjYgKnJvLA0KICAgICBzdHJ1Y3QgaWZu
ZXQgKmlmcCwgc3RydWN0IGluNl9hZGRyICpkc3QsIHVfbG9uZyAqbXR1cCwN
Ci0gICAgaW50ICphbHdheXNmcmFncCkNCisgICAgaW50ICphbHdheXNmcmFn
cCwgaW50ICpub3J0ZnJlZSwgc3RydWN0IHJ0bG9va3VwICpydGwsIHN0cnVj
dCBzb2NrYWRkcl9kbCAqZ2F0ZXdheSkNCiB7DQogCXVfaW50MzJfdCBtdHUg
PSAwOw0KIAlpbnQgYWx3YXlzZnJhZyA9IDA7DQpAQCAtMTI3Nyw3ICsxMzEy
LDggQEANCiAJCWlmIChyb19wbXR1LT5yb19ydCAmJg0KIAkJICAgICgocm9f
cG10dS0+cm9fcnQtPnJ0X2ZsYWdzICYgUlRGX1VQKSA9PSAwIHx8DQogCQkg
ICAgICFJTjZfQVJFX0FERFJfRVFVQUwoJnNhNl9kc3QtPnNpbjZfYWRkciwg
ZHN0KSkpIHsNCi0JCQlSVEZSRUUocm9fcG10dS0+cm9fcnQpOw0KKwkJCWlm
IChydGwgPT0gTlVMTCkNCisJCQkJUlRGUkVFKHJvX3BtdHUtPnJvX3J0KTsN
CiAJCQlyb19wbXR1LT5yb19ydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKU5VTEw7
DQogCQl9DQogCQlpZiAocm9fcG10dS0+cm9fcnQgPT0gTlVMTCkgew0KQEAg
LTEyODYsNyArMTMyMiwxOSBAQA0KIAkJCXNhNl9kc3QtPnNpbjZfbGVuID0g
c2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOw0KIAkJCXNhNl9kc3QtPnNp
bjZfYWRkciA9ICpkc3Q7DQogDQotCQkJcnRhbGxvYygoc3RydWN0IHJvdXRl
ICopcm9fcG10dSk7DQorCQkJaWYgKHJ0bCA9PSBOVUxMKQ0KKwkJCQlydGFs
bG9jKChzdHJ1Y3Qgcm91dGUgKilyb19wbXR1KTsNCisJCQllbHNlIHsNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ6ZXJvKCBnYXRld2F5
LCBzaXplb2YoIHN0cnVjdCBzb2NrYWRkcl9kbCkpOw0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2F0ZXdheS0+c2RsX2xlbiA9IHNpemVv
ZihzdHJ1Y3Qgc29ja2FkZHJfZGwpOw0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcnRsLT5ydF9nYXRld2F5ID0gKHN0cnVjdCBzb2NrYWRk
ciAqKWdhdGV3YXk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXJ0bG9va3VwX2ZpYiggKHN0cnVjdCBzb2NrYWRkciAqKXNhNl9k
c3QsIDAsIHJ0bCwgMCkpDQorCQkJCQlyb19wbXR1LT5yb19ydCA9IE5VTEw7
DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCisJ
CQkJCXJvX3BtdHUtPnJvX3J0ID0gKHN0cnVjdCBydGVudHJ5ICopcnRsOw0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbm9y
dGZyZWUgPSAxOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KKwkJCX0NCiAJCX0NCiAJfQ0KIAlpZiAocm9fcG10dS0+cm9fcnQpIHsN
CkBAIC0xODg3LDcgKzE5MzUsNyBAQA0KIAkJCQkgKiB0aGUgb3V0Z29pbmcg
aW50ZXJmYWNlLg0KIAkJCQkgKi8NCiAJCQkJZXJyb3IgPSBpcDZfZ2V0cG10
dSgmc3JvLCBOVUxMLCBOVUxMLA0KLQkJCQkgICAgJmluNnAtPmluNnBfZmFk
ZHIsICZwbXR1LCBOVUxMKTsNCisJCQkJICAgICZpbjZwLT5pbjZwX2ZhZGRy
LCAmcG10dSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7DQogCQkJCWlmIChz
cm8ucm9fcnQpDQogCQkJCQlSVEZSRUUoc3JvLnJvX3J0KTsNCiAJCQkJaWYg
KGVycm9yKQ0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8yMDExMDMyOS9z
eXMvbmV0aW5ldDYvaXA2X3Zhci5oIC4vc3lzL25ldGluZXQ2L2lwNl92YXIu
aA0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpbmV0Ni9p
cDZfdmFyLmgJMjAxMC0wOS0wOSAwNjo0MzoxOC4wMDAwMDAwMDAgKzAwMDAN
CisrKyAuL3N5cy9uZXRpbmV0Ni9pcDZfdmFyLmgJMjAxMS0wNC0wNyAxMTo1
NDoxNi4wMDAwMDAwMDAgKzAwMDANCkBAIC00MzEsMTIgKzQzMSwxNiBAQA0K
IGludAlkZXN0Nl9pbnB1dCBfX1AoKHN0cnVjdCBtYnVmICoqLCBpbnQgKiwg
aW50KSk7DQogaW50CW5vbmVfaW5wdXQgX19QKChzdHJ1Y3QgbWJ1ZiAqKiwg
aW50ICosIGludCkpOw0KIA0KKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4NCiBp
bnQJaW42X3NlbGVjdHNyYyhzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHN0cnVj
dCBpcDZfcGt0b3B0cyAqLA0KIAlzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0
IHJvdXRlX2luNiAqLCBzdHJ1Y3QgdWNyZWQgKmNyZWQsDQogCXN0cnVjdCBp
Zm5ldCAqKiwgc3RydWN0IGluNl9hZGRyICopOw0KIGludCBpbjZfc2VsZWN0
cm91dGUgX19QKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICosIHN0cnVjdCBpcDZf
cGt0b3B0cyAqLA0KIAlzdHJ1Y3QgaXA2X21vcHRpb25zICosIHN0cnVjdCBy
b3V0ZV9pbjYgKiwgc3RydWN0IGlmbmV0ICoqLA0KIAlzdHJ1Y3QgcnRlbnRy
eSAqKikpOw0KK2ludCBpbjZfbG9va3VwIF9fUCgoc3RydWN0IHNvY2thZGRy
X2luNiAqLCBzdHJ1Y3QgaXA2X3BrdG9wdHMgKiwNCisJc3RydWN0IGlwNl9t
b3B0aW9ucyAqLCBzdHJ1Y3Qgcm91dGVfaW42ICosIHN0cnVjdCBydGxvb2t1
cCAqLA0KKwlzdHJ1Y3QgaWZuZXQgKiosIHN0cnVjdCBydGVudHJ5ICoqKSk7
DQogdV9pbnQzMl90IGlwNl9yYW5kb21pZCBfX1AoKHZvaWQpKTsNCiB1X2lu
dDMyX3QgaXA2X3JhbmRvbWZsb3dsYWJlbCBfX1AoKHZvaWQpKTsNCiAjZW5k
aWYgLyogX0tFUk5FTCAqLw0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzguMl8y
MDExMDMyOS9zeXMvbmV0aW5ldDYvbmQ2X25ici5jIC4vc3lzL25ldGluZXQ2
L25kNl9uYnIuYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9u
ZXRpbmV0Ni9uZDZfbmJyLmMJMjAxMS0wNC0xMiAxMzowMjowNC4wMDAwMDAw
MDAgKzAwMDANCisrKyAuL3N5cy9uZXRpbmV0Ni9uZDZfbmJyLmMJMjAxMS0w
NC0xMiAxNjowNjoyNi4wMDAwMDAwMDAgKzAwMDANCkBAIC0yNTYsNyArMjU2
LDExIEBADQogCQkJICovDQogCQkJaWYgKG5lZWRfcHJveHkpDQogCQkJCXBy
b3h5ZGwgPSAqU0RMKHJ0LT5ydF9nYXRld2F5KTsNCisjaWZkZWYgUkFESVhf
TVBBVEgNCisJCQlSVEZSRUUocnQpOyAgICAgLyogcnRhbGxvY19tcGF0aCBk
b2VzIG5vdCByZXR1cm4gYSBsb2NrZWQgcm91dGUgKi8NCisjZWxzZQ0KIAkJ
CVJURlJFRV9MT0NLRUQocnQpOw0KKyNlbmRpZg0KIAkJfQ0KIAkJaWYgKG5l
ZWRfcHJveHkpIHsNCiAJCQkvKg0KZGlmZiAtdSAtciAuLi9zcmNfb3JnXzgu
Ml8yMDExMDMyOS9zeXMvbmV0aW5ldDYvbmQ2X3J0ci5jIC4vc3lzL25ldGlu
ZXQ2L25kNl9ydHIuYw0KLS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXRpbmV0Ni9uZDZfcnRyLmMJMjAxMC0wNS0wNiAwNjo0NDoxOS4wMDAw
MDAwMDAgKzAwMDANCisrKyAuL3N5cy9uZXRpbmV0Ni9uZDZfcnRyLmMJMjAx
MS0wNC0wMyAxNjowNzo1Ny4wMDAwMDAwMDAgKzAwMDANCkBAIC00OCw2ICs0
OCw4IEBADQogI2luY2x1ZGUgPHN5cy9yd2xvY2suaD4NCiAjaW5jbHVkZSA8
c3lzL3N5c2xvZy5oPg0KICNpbmNsdWRlIDxzeXMvcXVldWUuaD4NCisjaW5j
bHVkZSA8c3lzL2xvY2suaD4NCisjaW5jbHVkZSA8c3lzL3JtbG9jay5oPg0K
IA0KICNpbmNsdWRlIDxuZXQvaWYuaD4NCiAjaW5jbHVkZSA8bmV0L2lmX3R5
cGVzLmg+DQpkaWZmIC11IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5
cy9uZXRpcHNlYy9pcHNlYzYuaCAuL3N5cy9uZXRpcHNlYy9pcHNlYzYuaA0K
LS0tIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpcHNlYy9pcHNl
YzYuaAkyMDEwLTA5LTE4IDAxOjU0OjI4LjAwMDAwMDAwMCArMDAwMA0KKysr
IC4vc3lzL25ldGlwc2VjL2lwc2VjNi5oCTIwMTEtMDQtMDggMTI6NTc6NDUu
MDAwMDAwMDAwICswMDAwDQpAQCAtNzIsNyArNzIsOCBAQA0KIGV4dGVybiBp
bnQgaXBzZWM2X291dHB1dF90cmFucyBfX1AoKHN0cnVjdCBpcHNlY19vdXRw
dXRfc3RhdGUgKiwgdV9jaGFyICosDQogCXN0cnVjdCBtYnVmICosIHN0cnVj
dCBzZWNwb2xpY3kgKiwgaW50LCBpbnQgKikpOw0KIGV4dGVybiBpbnQgaXBz
ZWM2X291dHB1dF90dW5uZWwgX19QKChzdHJ1Y3QgaXBzZWNfb3V0cHV0X3N0
YXRlICosDQotCXN0cnVjdCBzZWNwb2xpY3kgKiwgaW50KSk7DQorCXN0cnVj
dCBzZWNwb2xpY3kgKiwgaW50LCBzdHJ1Y3QgcnRsb29rdXAgKiwgc3RydWN0
IHNvY2thZGRyICosDQorCWludCAqKSk7DQogI2VuZGlmIC8qX0tFUk5FTCov
DQogDQogI2VuZGlmIC8qX05FVElQU0VDX0lQU0VDNl9IXyovDQpkaWZmIC11
IC1yIC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpcHNlYy9pcHNl
Y19vdXRwdXQuYyAuL3N5cy9uZXRpcHNlYy9pcHNlY19vdXRwdXQuYw0KLS0t
IC4uL3NyY19vcmdfOC4yXzIwMTEwMzI5L3N5cy9uZXRpcHNlYy9pcHNlY19v
dXRwdXQuYwkyMDExLTAyLTIyIDE5OjM5OjA4LjAwMDAwMDAwMCArMDAwMA0K
KysrIC4vc3lzL25ldGlwc2VjL2lwc2VjX291dHB1dC5jCTIwMTEtMDQtMDgg
MTI6NTY6MzguMDAwMDAwMDAwICswMDAwDQpAQCAtNDQsNiArNDQsNyBAQA0K
ICNpbmNsdWRlIDxzeXMvc3lzbG9nLmg+DQogDQogI2luY2x1ZGUgPG5ldC9p
Zi5oPg0KKyNpbmNsdWRlIDxuZXQvaWZfZGwuaD4NCiAjaW5jbHVkZSA8bmV0
L3BmaWwuaD4NCiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+DQogI2luY2x1ZGUg
PG5ldC92bmV0Lmg+DQpAQCAtNzUyLDcgKzc1Myw4IEBADQogICogSVBzZWMg
b3V0cHV0IGxvZ2ljIGZvciBJUHY2LCB0dW5uZWwgbW9kZS4NCiAgKi8NCiBp
bnQNCi1pcHNlYzZfb3V0cHV0X3R1bm5lbChzdHJ1Y3QgaXBzZWNfb3V0cHV0
X3N0YXRlICpzdGF0ZSwgc3RydWN0IHNlY3BvbGljeSAqc3AsIGludCBmbGFn
cykNCitpcHNlYzZfb3V0cHV0X3R1bm5lbChzdHJ1Y3QgaXBzZWNfb3V0cHV0
X3N0YXRlICpzdGF0ZSwgc3RydWN0IHNlY3BvbGljeSAqc3AsDQorICAgIGlu
dCBmbGFncywgc3RydWN0IHJ0bG9va3VwICpydGwsIHN0cnVjdCBzb2NrYWRk
ciAqZ2F0ZXdheSwgaW50ICpub3J0ZnJlZSkNCiB7DQogCXN0cnVjdCBpcDZf
aGRyICppcDY7DQogCXN0cnVjdCBpcHNlY3JlcXVlc3QgKmlzcjsNCkBAIC03
NjAsNyArNzYyLDcgQEANCiAJaW50IGVycm9yOw0KIAlzdHJ1Y3Qgc29ja2Fk
ZHJfaW42ICpkc3Q2Ow0KIAlzdHJ1Y3QgbWJ1ZiAqbTsNCi0NCisJDQogCUlQ
U0VDX0FTU0VSVChzdGF0ZSAhPSBOVUxMLCAoIm51bGwgc3RhdGUiKSk7DQog
CUlQU0VDX0FTU0VSVChzdGF0ZS0+bSAhPSBOVUxMLCAoIm51bGwgbSIpKTsN
CiAJSVBTRUNfQVNTRVJUKHNwICE9IE5VTEwsICgibnVsbCBzcCIpKTsNCkBA
IC04MzYsNyArODM4LDggQEANCiAJCWlmIChzdGF0ZS0+cm8tPnJvX3J0DQog
CQkgJiYgKChzdGF0ZS0+cm8tPnJvX3J0LT5ydF9mbGFncyAmIFJURl9VUCkg
PT0gMA0KIAkJICB8fCAhSU42X0FSRV9BRERSX0VRVUFMKCZkc3Q2LT5zaW42
X2FkZHIsICZpcDYtPmlwNl9kc3QpKSkgew0KLQkJCVJURlJFRShzdGF0ZS0+
cm8tPnJvX3J0KTsNCisJCQlpZiAocnRsID09IE5VTEwpDQorCQkJCVJURlJF
RShzdGF0ZS0+cm8tPnJvX3J0KTsNCiAJCQlzdGF0ZS0+cm8tPnJvX3J0ID0g
TlVMTDsNCiAJCX0NCiAJCWlmIChzdGF0ZS0+cm8tPnJvX3J0ID09IE5VTEwp
IHsNCkBAIC04NDQsNyArODQ3LDIwIEBADQogCQkJZHN0Ni0+c2luNl9mYW1p
bHkgPSBBRl9JTkVUNjsNCiAJCQlkc3Q2LT5zaW42X2xlbiA9IHNpemVvZigq
ZHN0Nik7DQogCQkJZHN0Ni0+c2luNl9hZGRyID0gaXA2LT5pcDZfZHN0Ow0K
LQkJCXJ0YWxsb2Moc3RhdGUtPnJvKTsNCisNCisJCQlpZiAocnRsID09IE5V
TEwpDQorCQkJCXJ0YWxsb2Moc3RhdGUtPnJvKTsNCisJCQllbHNlIHsNCisJ
CQkJYnplcm8oIGdhdGV3YXksIHNpemVvZiggc3RydWN0IHNvY2thZGRyX2Rs
KSk7DQorCQkJCWdhdGV3YXktPnNhX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29j
a2FkZHJfZGwpOw0KKwkJCQlydGwtPnJ0X2dhdGV3YXkgPSAoc3RydWN0IHNv
Y2thZGRyICopZ2F0ZXdheTsNCisJCQkJaWYgKCFydGxvb2t1cF9maWIoIChz
dHJ1Y3Qgc29ja2FkZHIgKilkc3Q2LCAwLCBydGwsIDApKQ0KKwkJCQkJc3Rh
dGUtPnJvLT5yb19ydCA9IE5VTEw7DQorCQkJCWVsc2Ugew0KKwkJCQkJc3Rh
dGUtPnJvLT5yb19ydCA9IChzdHJ1Y3QgcnRlbnRyeSAqKXJ0bDsNCisJCQkJ
CSpub3J0ZnJlZSA9IDE7DQorCQkJCX0NCisJCQl9DQogCQl9DQogCQlpZiAo
c3RhdGUtPnJvLT5yb19ydCA9PSBOVUxMKSB7DQogCQkJVl9pcDZzdGF0Lmlw
NnNfbm9yb3V0ZSsrOw0K

--168430090-2014229598-1303080817=:8693--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.LRH.2.00.1104180051450.8693>