Subject: growkernel patch for arm32 archs.
To: None <port-arm@netbsd.org>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: port-arm
Date: 03/02/2002 16:35:11
--------------Boundary-00=_N2UCZJEHCNZKT0FE66TK
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Hi,

As part of trying to improve the arm32 pmap I've spent today implementing 
growkernel functionality.  It seems to be working ok on cats.  However being 
a tad rusty on the pmap I thought I'd best ask if someone can check it.

Basically this allows the kernel to grow the kernel VM as needed.  by default 
it starts with 16MB of kernel VM space.

Can port maintainers check the value of KERNEL_VM_SIZE.  I've based the size 
on the comment in the header file, if that comments wrong then I may well 
have set it to the wrong thing.

hpcarm doesn't have a comment saying the range for kernel VM so I've left it 
at the current value.

shark, I've no idea how to update shark to make use of this, it's initarm is 
very different being ofw based, could someone who knows check this.

I plan to check this in this weekend.

Cheers,
Chris

--------------Boundary-00=_N2UCZJEHCNZKT0FE66TK
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="growkernel.patch"
Content-Transfer-Encoding: base64
Content-Description: arm32 pmap_growkernel implementation
Content-Disposition: attachment; filename="growkernel.patch"

SW5kZXg6IGFjb3JuMzIvYWNvcm4zMi9ycGNfbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9hY29ybjMyL2Fjb3JuMzIvcnBjX21hY2hkZXAuYyx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNApkaWZmIC11IC1wIC1yMS4yNCBycGNfbWFjaGRlcC5j
Ci0tLSBhY29ybjMyL2Fjb3JuMzIvcnBjX21hY2hkZXAuYwkyMDAyLzAyLzIyIDE4OjI1OjA4CTEu
MjQKKysrIGFjb3JuMzIvYWNvcm4zMi9ycGNfbWFjaGRlcC5jCTIwMDIvMDMvMDIgMTY6MzI6NTkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBleHRlcm4gaW50IHBtYXBfZGVidWdfbGV2ZWw7CiAjZGVmaW5l
CUtFUk5FTF9QVF9TWVMJCTEJLyogUGFnZSB0YWJsZSBmb3IgbWFwcGluZyBwcm9jMCB6ZXJvIHBh
Z2UgKi8KICNkZWZpbmUJS0VSTkVMX1BUX0tFUk5FTAkyCS8qIFBhZ2UgdGFibGUgZm9yIG1hcHBp
bmcga2VybmVsICovCiAjZGVmaW5lCUtFUk5FTF9QVF9WTURBVEEJMwkvKiBQYWdlIHRhYmxlcyBm
b3IgbWFwcGluZyBrZXJuZWwgVk0gKi8KLSNkZWZpbmUJS0VSTkVMX1BUX1ZNREFUQV9OVU0JKEtF
Uk5FTF9WTV9TSVpFID4+IChQRFNISUZUICsgMikpCisjZGVmaW5lCUtFUk5FTF9QVF9WTURBVEFf
TlVNCTQJLyogc3RhcnQgd2l0aCAxNk1CIG9mIEtWTSAqLwkKICNkZWZpbmUJTlVNX0tFUk5FTF9Q
VFMJCShLRVJORUxfUFRfVk1EQVRBICsgS0VSTkVMX1BUX1ZNREFUQV9OVU0pCiAKIHB2X2FkZHJf
dCBrZXJuZWxfcHRfdGFibGVbTlVNX0tFUk5FTF9QVFNdOwpAQCAtNjk2LDYgKzY5Niw4IEBAIGlu
aXRhcm0odm9pZCAqY29va2llKQogCXBtYXBfbGlua19sMnB0KGwxcGFnZXRhYmxlLCBWTUVNX1ZC
QVNFLAogCSAgICAma2VybmVsX3B0X3RhYmxlW0tFUk5FTF9QVF9WTUVNXSk7CiAKKwkvKiB1cGRh
dGUgdGhlIHRvcCBvZiB0aGUga2VybmVsIFZNICovCisJcG1hcF9jdXJtYXhrdmFkZHIgPSBLRVJO
RUxfVk1fQkFTRSArICgoS0VSTkVMX1BUX1ZNREFUQV9OVU0pICogMHgwMDQwMDAwMCkgLSAxOwog
CiAjaWZkZWYgVkVSQk9TRV9JTklUX0FSTQogCXByaW50ZigiTWFwcGluZyBrZXJuZWxcbiIpOwpJ
bmRleDogYWNvcm4zMi9pbmNsdWRlL3ZtcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
cm9vdC9zeXNzcmMvc3lzL2FyY2gvYWNvcm4zMi9pbmNsdWRlL3ZtcGFyYW0uaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS41CmRpZmYgLXUgLXAgLXIxLjUgdm1wYXJhbS5oCi0tLSBhY29ybjMyL2lu
Y2x1ZGUvdm1wYXJhbS5oCTIwMDEvMTEvMjMgMTg6MTY6MTAJMS41CisrKyBhY29ybjMyL2luY2x1
ZGUvdm1wYXJhbS5oCTIwMDIvMDMvMDIgMTY6MzM6MDAKQEAgLTg2LDcgKzg2LDcgQEAKIC8qIFhY
WCBtYXguIGFtb3VudCBvZiBLVk0gdG8gYmUgdXNlZCBieSBidWZmZXJzLiAqLwogI2lmbmRlZiBW
TV9NQVhfS0VSTkVMX0JVRgogI2RlZmluZSBWTV9NQVhfS0VSTkVMX0JVRiBcCi0JKChWTV9NQVhL
RVJOX0FERFJFU1MgLSBLRVJORUxfVk1fQkFTRSkgKiA0IC8gMTApCisJKChLRVJORUxfVk1fU0la
RSkgKiA0IC8gMTApCiAjZW5kaWYKIAogLyogdmlydHVhbCBzaXplcyAoYnl0ZXMpIGZvciB2YXJp
b3VzIGtlcm5lbCBzdWJtYXBzICovCkluZGV4OiBhcm0vYXJtMzIvYmNvcHlpbm91dC5TCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9hcm0vYXJtMzIvYmNvcHlp
bm91dC5TLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtdSAtcCAtcjEuMyBiY29weWlu
b3V0LlMKLS0tIGFybS9hcm0zMi9iY29weWlub3V0LlMJMjAwMS8xMS8yMCAwMDoyMjozMwkxLjMK
KysrIGFybS9hcm0zMi9iY29weWlub3V0LlMJMjAwMi8wMy8wMiAxNjozMzowMQpAQCAtNTQsNyAr
NTQsNyBAQCBMdm1fbWluX2FkZHJlc3M6CiBMdm1fbWF4dXNlcl9hZGRyZXNzOgogCS53b3JkCVZN
X01BWFVTRVJfQUREUkVTUwogTHZtX21heGtlcm5fYWRkcmVzczoKLQkud29yZAlWTV9NQVhLRVJO
X0FERFJFU1MKKwkud29yZAlfQ19MQUJFTChwbWFwX2N1cm1heGt2YWRkcikKIAogRU5UUlkoa2Nv
cHkpCiAJYglkb19jb3B5aW5vdXQKQEAgLTc4LDcgKzc4LDggQEAgRU5UUlkoY29weWluKQogCWNt
cAlyMSwgcjMKIAliY2MJTGJhZGFkZHJlc3MKIAlsZHIJcjMsIEx2bV9tYXhrZXJuX2FkZHJlc3MK
LQljbXAJcjEsIHIzCisJbGRyCWlwLCBbcjNdCisJY21wCXIxLCBpcAogCWJjcwlMYmFkYWRkcmVz
cwogCiAJLyogUXVpY2sgZXhpdCBpZiBsZW5ndGggaXMgemVybyAqLwkKQEAgLTExMSw3ICsxMTIs
OCBAQCBFTlRSWShjb3B5b3V0KQogCWNtcAlyMCwgcjMKIAliY2MJTGJhZGFkZHJlc3MKIAlsZHIJ
cjMsIEx2bV9tYXhrZXJuX2FkZHJlc3MKLQljbXAJcjAsIHIzCisJbGRyCWlwLCBbcjNdCisJY21w
CXIwLCBpcAogCWJjcwlMYmFkYWRkcmVzcwogCiAJLyogUXVpY2sgZXhpdCBpZiBsZW5ndGggaXMg
emVybyAqLwkKSW5kZXg6IGFybS9hcm0zMi9jb3B5c3RyLlMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2c3Jvb3Qvc3lzc3JjL3N5cy9hcmNoL2FybS9hcm0zMi9jb3B5c3RyLlMsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMgpkaWZmIC11IC1wIC1yMS4yIGNvcHlzdHIuUwotLS0gYXJtL2FybTMyL2Nv
cHlzdHIuUwkyMDAxLzA5LzI4IDA5OjU2OjAzCTEuMgorKysgYXJtL2FybTMyL2NvcHlzdHIuUwky
MDAyLzAzLzAyIDE2OjMzOjAxCkBAIC01Miw3ICs1Miw3IEBAIEx2bV9taW5fYWRkcmVzczoKIEx2
bV9tYXh1c2VyX2FkZHJlc3M6CiAJLndvcmQJVk1fTUFYVVNFUl9BRERSRVNTCiBMdm1fbWF4a2Vy
bl9hZGRyZXNzOgotCS53b3JkCVZNX01BWEtFUk5fQUREUkVTUworCS53b3JkCV9DX0xBQkVMKHBt
YXBfY3VybWF4a3ZhZGRyKQogCiAvKgogICogcjAgLSBmcm9tCkBAIC0xMTIsNyArMTEyLDggQEAg
RU5UUlkoY29weWluc3RyKQogCWNtcAlyMSwgcjQKIAliY2MJTGJhZGFkZHJlc3MKIAlsZHIJcjQs
IEx2bV9tYXhrZXJuX2FkZHJlc3MKLQljbXAJcjEsIHI0CisJbGRyCXI1LCBbcjRdCisJY21wCXIx
LCByNQogCWJjcwlMYmFkYWRkcmVzcwogCiAJLyogRG8gdGhlIGFjdHVhbCBjb3B5ICovCkBAIC0x
NDAsNyArMTQxLDggQEAgRU5UUlkoY29weW91dHN0cikKIAljbXAJcjAsIHI0CiAJYmNjCUxiYWRh
ZGRyZXNzCiAJbGRyCXI0LCBMdm1fbWF4a2Vybl9hZGRyZXNzCi0JY21wCXIwLCByNAorCWxkcgly
NSwgW3I0XQorCWNtcAlyMCwgcjUKIAliY3MJTGJhZGFkZHJlc3MKIAogCS8qIERvIHRoZSBhY3R1
YWwgY29weSAqLwpJbmRleDogYXJtL2FybTMyL2dlbmFzc3ltLmNmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9hcm0vYXJtMzIvZ2VuYXNzeW0uY2YsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtdSAtcCAtcjEuMTAgZ2VuYXNzeW0uY2YKLS0tIGFy
bS9hcm0zMi9nZW5hc3N5bS5jZgkyMDAyLzAyLzA1IDE4OjI2OjA4CTEuMTAKKysrIGFybS9hcm0z
Mi9nZW5hc3N5bS5jZgkyMDAyLzAzLzAyIDE2OjMzOjAxCkBAIC01Nyw3ICs1Nyw2IEBAIGVuZGlm
CiAKIGRlZmluZQlWTV9NSU5fQUREUkVTUwkJVk1fTUlOX0FERFJFU1MKIGRlZmluZQlWTV9NQVhV
U0VSX0FERFJFU1MJVk1fTUFYVVNFUl9BRERSRVNTCi1kZWZpbmUJVk1fTUFYS0VSTl9BRERSRVNT
CVZNX01BWEtFUk5fQUREUkVTUwogZGVmaW5lCVBST0NFU1NfUEFHRV9UQkxTX0JBU0UJUFJPQ0VT
U19QQUdFX1RCTFNfQkFTRQogCiBkZWZpbmUJVVBBR0VTCQkJVVBBR0VTCkluZGV4OiBhcm0vYXJt
MzIvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9h
cm0vYXJtMzIvcG1hcC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ3CmRpZmYgLXUgLXAgLXIx
LjQ3IHBtYXAuYwotLS0gYXJtL2FybTMyL3BtYXAuYwkyMDAyLzAyLzIyIDA0OjQ5OjIwCTEuNDcK
KysrIGFybS9hcm0zMi9wbWFwLmMJMjAwMi8wMy8wMiAxNjozMzoxNQpAQCAtMTQ4LDYgKzE0OCw3
IEBAIF9fS0VSTkVMX1JDU0lEKDAsICIkTmV0QlNEOiBwbWFwLmMsdiAxLjQKIAlpZiAocG1hcF9k
ZWJ1Z19sZXZlbCA+PSAoX2xldl8pKSBcCiAgICAgICAgIAkoKF9zdGF0XykpCiBpbnQgcG1hcF9k
ZWJ1Z19sZXZlbCA9IC0yOwordm9pZCBwbWFwX2R1bXBfcHZsaXN0KHZhZGRyX3QgcGh5cywgY2hh
ciAqbSk7CiAKIC8qCiAgKiBmb3Igc3dpdGNoaW5nIHRvIHBvdGVudGlhbGx5IGZpbmVyIGdyYWlu
ZWQgZGVidWdnaW5nCkBAIC0xNTgsMTAgKzE1OSwxMSBAQCBpbnQgcG1hcF9kZWJ1Z19sZXZlbCA9
IC0yOwogI2RlZmluZQlQREJfUkVNT1ZFCTB4MDAwOAogI2RlZmluZQlQREJfQ1JFQVRFCTB4MDAx
MAogI2RlZmluZQlQREJfUFRQQUdFCTB4MDAyMAotI2RlZmluZQlQREJfQVNOCQkweDAwNDAKKyNk
ZWZpbmUJUERCX0dST1dLRVJOCTB4MDA0MAogI2RlZmluZQlQREJfQklUUwkweDAwODAKICNkZWZp
bmUJUERCX0NPTExFQ1QJMHgwMTAwCiAjZGVmaW5lCVBEQl9QUk9URUNUCTB4MDIwMAorI2RlZmlu
ZQlQREJfTUFQX0wxCTB4MDQwMAogI2RlZmluZQlQREJfQk9PVFNUUkFQCTB4MTAwMAogI2RlZmlu
ZQlQREJfUEFSQU5PSUEJMHgyMDAwCiAjZGVmaW5lCVBEQl9XSVJJTkcJMHg0MDAwCkBAIC0xNzUs
MTIgKzE3NywxOCBAQCBpbnQgcG1hcGRlYnVnID0gUERCX1BBUkFOT0lBIHwgUERCX0ZPTExPCiAg
ICAgCiAjZWxzZQkvKiBQTUFQX0RFQlVHICovCiAjZGVmaW5lCVBERUJVRyhfbGV2Xyxfc3RhdF8p
IC8qIE5vdGhpbmcgKi8KLSNkZWZpbmUgUERFQlVHKF9sZXZfLF9zdGF0XykgLyogTm90aGluZyAq
LworI2RlZmluZSBOUERFQlVHKF9sZXZfLF9zdGF0XykgLyogTm90aGluZyAqLwogI2VuZGlmCS8q
IFBNQVBfREVCVUcgKi8KIAogc3RydWN0IHBtYXAgICAgIGtlcm5lbF9wbWFwX3N0b3JlOwogCiAv
KgorICogbGlua2VkIGxpc3Qgb2YgYWxsIG5vbi1rZXJuZWwgcG1hcHMKKyAqLworCitzdGF0aWMg
c3RydWN0IHBtYXBfaGVhZCBwbWFwczsKKworLyoKICAqIHBvb2wgdGhhdCBwbWFwIHN0cnVjdHVy
ZXMgYXJlIGFsbG9jYXRlZCBmcm9tCiAgKi8KIApAQCAtMTk5LDYgKzIwNyw3IEBAIGJvb2xlYW5f
dCBwbWFwX2luaXRpYWxpemVkID0gRkFMU0U7CS8qIEgKIAogc3RhdGljIHN0cnVjdCBsb2NrIHBt
YXBfbWFpbl9sb2NrOwogc3RhdGljIHN0cnVjdCBzaW1wbGVsb2NrIHB2YWxsb2NfbG9jazsKK3N0
YXRpYyBzdHJ1Y3Qgc2ltcGxlbG9jayBwbWFwc19sb2NrOwogI2lmZGVmIExPQ0tERUJVRwogI2Rl
ZmluZSBQTUFQX01BUF9UT19IRUFEX0xPQ0soKSBcCiAgICAgICh2b2lkKSBzcGlubG9ja21ncigm
cG1hcF9tYWluX2xvY2ssIExLX1NIQVJFRCwgTlVMTCkKQEAgLTI4MCw2ICsyODksNyBAQCBleHRl
cm4gaW50IG1heF9wcm9jZXNzZXM7CiAKIHZhZGRyX3QgdmlydHVhbF9zdGFydDsKIHZhZGRyX3Qg
dmlydHVhbF9lbmQ7Cit2YWRkcl90IHBtYXBfY3VybWF4a3ZhZGRyOwogCiB2YWRkcl90IGF2YWls
X3N0YXJ0OwogdmFkZHJfdCBhdmFpbF9lbmQ7CkBAIC05MzMsNyArOTQzLDcgQEAgcG1hcF9tYXBf
aW5fbDEocG1hcCwgdmEsIGwycGEsIHNlbGZyZWYpCiAJLyogQ2FsY3VsYXRlIHRoZSBpbmRleCBp
bnRvIHRoZSBMMSBwYWdlIHRhYmxlLiAqLwogCXB0dmEgPSAodmEgPj4gUERTSElGVCkgJiB+MzsK
IAotCVBERUJVRygwLCBwcmludGYoIndpcmluZyAlMDhseCBpbiB0byBwZCVwIHB0ZTB4JWx4IHZh
MHglbHhcbiIsIGwycGEsCisJTlBERUJVRyhQREJfTUFQX0wxLCBwcmludGYoIndpcmluZyAlMDhs
eCBpbiB0byBwZCVwIHB0ZTB4JWx4IHZhMHglbHhcbiIsIGwycGEsCiAJICAgIHBtYXAtPnBtX3Bk
aXIsIEwxX1BURShsMnBhKSwgcHR2YSkpOwogCiAJLyogTWFwIHBhZ2UgdGFibGUgaW50byB0aGUg
TDEuICovCkBAIC05NDIsMTMgKzk1MiwxMiBAQCBwbWFwX21hcF9pbl9sMShwbWFwLCB2YSwgbDJw
YSwgc2VsZnJlZikKIAlwbWFwLT5wbV9wZGlyW3B0dmEgKyAyXSA9IEwxX1BURShsMnBhICsgMHg4
MDApOwogCXBtYXAtPnBtX3BkaXJbcHR2YSArIDNdID0gTDFfUFRFKGwycGEgKyAweGMwMCk7CiAK
LQlQREVCVUcoMCwgcHJpbnRmKCJwdCBzZWxmIHJlZmVyZW5jZSAlbHggaW4gJWx4XG4iLAotCSAg
ICBMMl9QVEVfTkNfTkIobDJwYSwgQVBfS1JXKSwgcG1hcC0+cG1fdnB0cHQpKTsKLQogCS8qIE1h
cCB0aGUgcGFnZSB0YWJsZSBpbnRvIHRoZSBwYWdlIHRhYmxlIGFyZWEuICovCiAJaWYgKHNlbGZy
ZWYpIHsKLQkJKigocHRfZW50cnlfdCAqKShwbWFwLT5wbV92cHRwdCArIHB0dmEpKSA9Ci0JCQlM
Ml9QVEVfTkNfTkIobDJwYSwgQVBfS1JXKTsKKwkgICAgTlBERUJVRyhQREJfTUFQX0wxLCBwcmlu
dGYoInB0IHNlbGYgcmVmZXJlbmNlICVseCBpbiAlbHhcbiIsCisJCQlMMl9QVEVfTkNfTkIobDJw
YSwgQVBfS1JXKSwgcG1hcC0+cG1fdnB0cHQpKTsKKwkgICAgKigocHRfZW50cnlfdCAqKShwbWFw
LT5wbV92cHRwdCArIHB0dmEpKSA9CisJCUwyX1BURV9OQ19OQihsMnBhLCBBUF9LUlcpOwogCX0K
IAkvKiBYWFggc2hvdWxkIGJlIGEgcHVyZ2UgKi8KIC8qCWNwdV90bGJfZmx1c2hEKCk7Ki8KQEAg
LTExMjEsNyArMTEzMCw3IEBAIHBtYXBfYm9vdHN0cmFwKGtlcm5lbF9sMXB0LCBrZXJuZWxfcHRw
dCkKICNlbmRpZgogCiAJdmlydHVhbF9zdGFydCA9IEtFUk5FTF9WTV9CQVNFOwotCXZpcnR1YWxf
ZW5kID0gdmlydHVhbF9zdGFydCArIEtFUk5FTF9WTV9TSVpFIC0gMTsKKwl2aXJ0dWFsX2VuZCA9
IEtFUk5FTF9WTV9CQVNFICsgS0VSTkVMX1ZNX1NJWkUgLSAxOwogCiAJQUxMT0NfUEFHRV9IT09L
KHBhZ2VfaG9vazAsIE5CUEcpOwogCUFMTE9DX1BBR0VfSE9PSyhwYWdlX2hvb2sxLCBOQlBHKTsK
QEAgLTExNDIsNiArMTE1MSw4IEBAIHBtYXBfYm9vdHN0cmFwKGtlcm5lbF9sMXB0LCBrZXJuZWxf
cHRwdCkKIAkgKi8KIAlzcGlubG9ja2luaXQoJnBtYXBfbWFpbl9sb2NrLCAicG1hcGxrIiwgMCk7
CiAJc2ltcGxlX2xvY2tfaW5pdCgmcHZhbGxvY19sb2NrKTsKKwlzaW1wbGVfbG9ja19pbml0KCZw
bWFwc19sb2NrKTsKKwlMSVNUX0lOSVQoJnBtYXBzKTsKIAlUQUlMUV9JTklUKCZwdl9mcmVlcGFn
ZXMpOwogCVRBSUxRX0lOSVQoJnB2X3VudXNlZHBncyk7CiAKQEAgLTE0MzYsNiArMTQ0Nyw4IEBA
IHBtYXBfZnJlZV9sMXB0KHB0KQogICogb2YgTDEgcGFnZSB0YWJsZXMgY3VycmVudGx5IGhlbGQg
YnkgdGhlIGtlcm5lbCBvciBpdCB3aWxsIGFsbG9jYXRlCiAgKiBhIG5ldyBvbmUgdmlhIHBtYXBf
YWxsb2NfbDFwdCgpLgogICogSXQgd2lsbCB0aGVuIGluaXRpYWxpc2UgdGhlIGwxIHBhZ2UgdGFi
bGUgZm9yIHVzZS4KKyAqCisgKiBYWFggbXVzdCB0aWR5IHVwIGFuZCBmaXggdGhpcyBjb2RlLCBu
b3QgaGFwcHkgYWJvdXQgaG93IGl0IGRvZXMgdGhlIHBtYXBzX2xvY2tpbmcKICAqLwogc3RhdGlj
IGludAogcG1hcF9hbGxvY3BhZ2VkaXIocG1hcCkKQEAgLTE0NzcsMTYgKzE0OTAsNiBAQCBwbWFw
X2FsbG9jcGFnZWRpcihwbWFwKQogCWlmICghKHB0LT5wdF9mbGFncyAmIFBURkxBR19DTEVBTikp
CiAJCWJ6ZXJvKCh2b2lkICopcG1hcC0+cG1fcGRpciwgKFBEX1NJWkUgLSBLRVJORUxfUERfU0la
RSkpOwogCi0JLyogRG8gd2UgYWxyZWFkeSBoYXZlIHRoZSBrZXJuZWwgbWFwcGluZ3MgPyAqLwot
CWlmICghKHB0LT5wdF9mbGFncyAmIFBURkxBR19LUFQpKSB7Ci0JCS8qIER1cGxpY2F0ZSB0aGUg
a2VybmVsIG1hcHBpbmcgaS5lLiBhbGwgbWFwcGluZ3MgMHhmMDAwMDAwMCsgKi8KLQotCQliY29w
eSgoY2hhciAqKXBtYXBfa2VybmVsKCktPnBtX3BkaXIgKyAoUERfU0laRSAtIEtFUk5FTF9QRF9T
SVpFKSwKLQkJICAgIChjaGFyICopcG1hcC0+cG1fcGRpciArIChQRF9TSVpFIC0gS0VSTkVMX1BE
X1NJWkUpLAotCQkgICAgS0VSTkVMX1BEX1NJWkUpOwotCQlwdC0+cHRfZmxhZ3MgfD0gUFRGTEFH
X0tQVDsKLQl9Ci0KIAkvKiBBbGxvY2F0ZSBhIHBhZ2UgdGFibGUgdG8gbWFwIGFsbCB0aGUgcGFn
ZSB0YWJsZXMgZm9yIHRoaXMgcG1hcCAqLwogCiAjaWZkZWYgRElBR05PU1RJQwpAQCAtMTQ5Nywx
MCArMTUwMCwxOSBAQCBwbWFwX2FsbG9jcGFnZWRpcihwbWFwKQogI2VuZGlmCS8qIERJQUdOT1NU
SUMgKi8KIAlwbWFwLT5wbV92cHRwdCA9IHV2bV9rbV96YWxsb2Moa2VybmVsX21hcCwgTkJQRyk7
CiAJaWYgKHBtYXAtPnBtX3ZwdHB0ID09IDApIHsKLQkJcG1hcF9mcmVlcGFnZWRpcihwbWFwKTsK
LQkJcmV0dXJuKEVOT01FTSk7CisJICAgIHBtYXBfZnJlZXBhZ2VkaXIocG1hcCk7CisgICAgCSAg
ICByZXR1cm4oRU5PTUVNKTsKIAl9CiAKKwkvKiBuZWVkIHRvIGxvY2sgdGhpcyBhbGwgdXAgIGZv
ciBncm93a2VybmVsICovCisJc2ltcGxlX2xvY2soJnBtYXBzX2xvY2spOworCS8qIHdpc2ggd2Ug
ZGlkbid0IGhhdmUgdG8ga2VlcCB0aGlzIGxvY2tlZC4uLiAqLworCisJLyogRHVwbGljYXRlIHRo
ZSBrZXJuZWwgbWFwcGluZyBpLmUuIGFsbCBtYXBwaW5ncyAweGYwMDAwMDAwKyAqLworCWJjb3B5
KChjaGFyICopcG1hcF9rZXJuZWwoKS0+cG1fcGRpciArIChQRF9TSVpFIC0gS0VSTkVMX1BEX1NJ
WkUpLAorCQkoY2hhciAqKXBtYXAtPnBtX3BkaXIgKyAoUERfU0laRSAtIEtFUk5FTF9QRF9TSVpF
KSwKKwkJS0VSTkVMX1BEX1NJWkUpOworCiAJKHZvaWQpIHBtYXBfZXh0cmFjdChwbWFwX2tlcm5l
bCgpLCBwbWFwLT5wbV92cHRwdCwgJnBtYXAtPnBtX3BwdHB0KTsKIAlwbWFwLT5wbV9wcHRwdCAm
PSBQR19GUkFNRTsKIAkvKiBSZXZva2UgY2FjaGVhYmlsaXR5IGFuZCBidWZmZXJhYmlsaXR5ICov
CkBAIC0xNTEyLDcgKzE1MjQsNyBAQCBwbWFwX2FsbG9jcGFnZWRpcihwbWFwKQogCXBtYXBfbWFw
X2luX2wxKHBtYXAsIFBST0NFU1NfUEFHRV9UQkxTX0JBU0UsIHBtYXAtPnBtX3BwdHB0LCBUUlVF
KTsKIAogCXB0LT5wdF9mbGFncyAmPSB+UFRGTEFHX0NMRUFOOwkvKiBMMSBpcyBkaXJ0eSBub3cg
Ki8KLQorCQogCS8qCiAJICogTWFwIHRoZSBrZXJuZWwgcGFnZSB0YWJsZXMgZm9yIDB4ZjAwMDAw
MDAgKwogCSAqIGludG8gdGhlIHBhZ2UgdGFibGUgdXNlZCB0byBtYXAgdGhlCkBAIC0xNTI0LDYg
KzE1MzYsOSBAQCBwbWFwX2FsbG9jcGFnZWRpcihwbWFwKQogCSAgICAoY2hhciAqKXBtYXAtPnBt
X3ZwdHB0ICsgKChQRF9TSVpFIC0gS0VSTkVMX1BEX1NJWkUpID4+IDIpLAogCSAgICAoS0VSTkVM
X1BEX1NJWkUgPj4gMikpOwogCisJTElTVF9JTlNFUlRfSEVBRCgmcG1hcHMsIHBtYXAsIHBtX2xp
c3QpOworCXNpbXBsZV91bmxvY2soJnBtYXBzX2xvY2spOworCQogCXJldHVybigwKTsKIH0KIApA
QCAtMTYyOSw2ICsxNjQ0LDE0IEBAIHBtYXBfZGVzdHJveShwbWFwKQogCS8qCiAJICogcmVmZXJl
bmNlIGNvdW50IGlzIHplcm8sIGZyZWUgcG1hcCByZXNvdXJjZXMgYW5kIHRoZW4gZnJlZSBwbWFw
LgogCSAqLworCisJLyoKKwkgKiByZW1vdmUgaXQgZnJvbSBnbG9iYWwgbGlzdCBvZiBwbWFwcwor
CSAqLworCisJc2ltcGxlX2xvY2soJnBtYXBzX2xvY2spOworCUxJU1RfUkVNT1ZFKHBtYXAsIHBt
X2xpc3QpOworCXNpbXBsZV91bmxvY2soJnBtYXBzX2xvY2spOwogCQogCS8qIFJlbW92ZSB0aGUg
emVybyBwYWdlIG1hcHBpbmcgKi8KIAlwbWFwX3JlbW92ZShwbWFwLCAweDAwMDAwMDAwLCAweDAw
MDAwMDAwICsgTkJQRyk7CkBAIC0yNjc4LDcgKzI3MDEsNyBAQCBwbWFwX2VudGVyKHBtYXAsIHZh
LCBwYSwgcHJvdCwgZmxhZ3MpCiAKICNpZmRlZiBESUFHTk9TVElDCiAJLyogVmFsaWQgYWRkcmVz
cyA/ICovCi0JaWYgKHZhID49IChLRVJORUxfVk1fQkFTRSArIEtFUk5FTF9WTV9TSVpFKSkKKwlp
ZiAodmEgPj0gKHBtYXBfY3VybWF4a3ZhZGRyKSkKIAkJcGFuaWMoInBtYXBfZW50ZXI6IHRvbyBi
aWciKTsKIAlpZiAocG1hcCAhPSBwbWFwX2tlcm5lbCgpICYmIHZhICE9IDApIHsKIAkJaWYgKHZh
IDwgVk1fTUlOX0FERFJFU1MgfHwgdmEgPj0gVk1fTUFYVVNFUl9BRERSRVNTKQpAQCAtMjcwMiw2
ICsyNzI1LDcgQEAgcG1hcF9lbnRlcihwbWFwLCB2YSwgcGEsIHByb3QsIGZsYWdzKQogCXB0ZSA9
IHBtYXBfcHRlKHBtYXAsIHZhKTsKIAlpZiAoIXB0ZSkgewogCQlzdHJ1Y3Qgdm1fcGFnZSAqcHRw
OworCQlLQVNTRVJUKHBtYXAgIT0gcG1hcF9rZXJuZWwoKSk7IC8qIGtlcm5lbCBzaG91bGQgaGF2
ZSBwcmUtZ3Jvd24gKi8KIAogCQkvKiBpZiBmYWlsdXJlIGlzIGFsbG93ZWQgdGhlbiBkb24ndCB0
cnkgdG9vIGhhcmQgKi8KIAkJcHRwID0gcG1hcF9nZXRfcHRwKHBtYXAsIHZhLCBmbGFncyAmIFBN
QVBfQ0FORkFJTCk7CkBAIC0yODgxLDQzICsyOTA1LDIwIEBAIG91dDoKIAlyZXR1cm4gZXJyb3I7
CiB9CiAKKy8qCisgKiBwbWFwX2tlbnRlcl9wYTogZW50ZXIgYSBrZXJuZWwgbWFwcGluZworICoK
KyAqID0+IG5vIG5lZWQgdG8gbG9jayBhbnl0aGluZyBhc3N1bWUgdmEgaXMgYWxyZWFkeSBhbGxv
Y2F0ZWQKKyAqID0+IHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBub3JtYWwgcG1hcCBlbnRlciBmdW5j
dGlvbgorICovCiB2b2lkCiBwbWFwX2tlbnRlcl9wYSh2YSwgcGEsIHByb3QpCiAJdmFkZHJfdCB2
YTsKIAlwYWRkcl90IHBhOwogCXZtX3Byb3RfdCBwcm90OwogewotCXN0cnVjdCBwbWFwICpwbWFw
ID0gcG1hcF9rZXJuZWwoKTsKIAlwdF9lbnRyeV90ICpwdGU7Ci0Jc3RydWN0IHZtX3BhZ2UgKnBn
OwogIAotCWlmICghcG1hcF9wZGVfcGFnZShwbWFwX3BkZShwbWFwLCB2YSkpKSB7Ci0KLSNpZmRl
ZiBESUFHTk9TVElDCi0JCWlmIChwbWFwX3BkZV92KHBtYXBfcGRlKHBtYXAsIHZhKSkpCi0JCQlw
YW5pYygiVHJ5aW5nIHRvIG1hcCBrZXJuZWwgcGFnZSBpbnRvIHNlY3Rpb24gbWFwcGluZyIKLQkJ
CSAgICAiIFZBPSVseCBQQT0lbHgiLCB2YSwgcGEpOwotI2VuZGlmCi0JCS8qIAotCQkgKiBGb3Ig
dGhlIGtlcm5lbCBwbWFwcyBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZW5zdXJlCi0JCSAqIHRoYXQg
dGhleSBhcmUgYWx3YXlzIHByZXNlbnQsIGFuZCB0byBncm93IHRoZQotCQkgKiBrZXJuZWwgYXMg
cmVxdWlyZWQuCi0JCSAqLwotCi0JICAgIAkvKiBtdXN0IGxvY2sgdGhlIHBtYXAgKi8KLQkgICAg
CXNpbXBsZV9sb2NrKCYocG1hcF9rZXJuZWwoKS0+cG1fb2JqLnZtb2JqbG9jaykpOwotCQkvKiBB
bGxvY2F0ZSBhIHBhZ2UgdGFibGUgKi8KLQkJcGcgPSB1dm1fcGFnZWFsbG9jKCYocG1hcF9rZXJu
ZWwoKS0+cG1fb2JqKSwgMCwgTlVMTCwKLQkJICAgIFVWTV9QR0FfVVNFUkVTRVJWRSB8IFVWTV9Q
R0FfWkVSTyk7Ci0JCWlmIChwZyA9PSBOVUxMKSB7Ci0JCQlwYW5pYygicG1hcF9rZW50ZXJfcGE6
IG5vIGZyZWUgcGFnZXMiKTsKLQkJfQotCQlwZy0+ZmxhZ3MgJj0gflBHX0JVU1k7CS8qIG5ldmVy
IGJ1c3kgKi8KLQotCQkvKiBXaXJlIHRoaXMgcGFnZSB0YWJsZSBpbnRvIHRoZSBMMS4gKi8KLQkJ
cG1hcF9tYXBfaW5fbDEocG1hcCwgdmEsIFZNX1BBR0VfVE9fUEhZUyhwZyksIFRSVUUpOwotCQlz
aW1wbGVfdW5sb2NrKCYocG1hcF9rZXJuZWwoKS0+cG1fb2JqLnZtb2JqbG9jaykpOwotCX0KIAlw
dGUgPSB2dG9wdGUodmEpOwogCUtBU1NFUlQoIXBtYXBfcHRlX3YocHRlKSk7CiAJKnB0ZSA9IEwy
X1BURShwYSwgQVBfS1JXKTsKQEAgLTM3MTksNiArMzcyMCw4NCBAQCBwbWFwX2FsbG9jX3B0cChz
dHJ1Y3QgcG1hcCAqcG1hcCwgdmFkZHJfCiAvLwlwbWFwLT5wbV9wdHBoaW50ID0gcHRwOwogCXJl
dHVybiAocHRwKTsKIH0KKwordmFkZHJfdAorcG1hcF9ncm93a2VybmVsKG1heGt2YWRkcikKKwl2
YWRkcl90IG1heGt2YWRkcjsKK3sKKwlzdHJ1Y3QgcG1hcCAqa3BtID0gcG1hcF9rZXJuZWwoKSwg
KnBtOworCWludCBzOworCXBhZGRyX3QgcHRhZGRyOworCXN0cnVjdCB2bV9wYWdlICpwdHA7CisK
KwlpZiAobWF4a3ZhZGRyIDw9IHBtYXBfY3VybWF4a3ZhZGRyKQorCQlnb3RvIG91dDsJCS8qIHdl
IGFyZSBPSyAqLworCU5QREVCVUcoUERCX0dST1dLRVJOLCBwcmludGYoInBtYXBfZ3Jvd2tlcm5l
bDogZ3Jvd2luZyBrZXJuZWwgZnJvbSAlbHggdG8gJWx4XG4iLAorCQkgICAgcG1hcF9jdXJtYXhr
dmFkZHIsIG1heGt2YWRkcikpOworCisJLyoKKwkgKiB3aG9vcHMhICAgd2UgbmVlZCB0byBhZGQg
a2VybmVsIFBUUHMKKwkgKi8KKworCXMgPSBzcGxoaWdoKCk7CS8qIHRvIGJlIHNhZmUgKi8KKwlz
aW1wbGVfbG9jaygma3BtLT5wbV9vYmoudm1vYmpsb2NrKTsKKwkvKiBkdWUgdG8gdGhlIHdheSB0
aGUgYXJtIHBtYXAgd29ya3Mgd2UgbWFwIDRNQiBhdCBhIHRpbWUgKi8KKwlmb3IgKC8qbnVsbCov
IDsgcG1hcF9jdXJtYXhrdmFkZHIgPCBtYXhrdmFkZHIgOyBwbWFwX2N1cm1heGt2YWRkciArPSA0
ICogTkJQRCkgeworCisJCWlmICh1dm0ucGFnZV9pbml0X2RvbmUgPT0gRkFMU0UpIHsKKworCQkJ
LyoKKwkJCSAqIHdlJ3JlIGdyb3dpbmcgdGhlIGtlcm5lbCBwbWFwIGVhcmx5IChmcm9tCisJCQkg
KiB1dm1fcGFnZWJvb3RfYWxsb2MoKSkuICB0aGlzIGNhc2UgbXVzdCBiZQorCQkJICogaGFuZGxl
ZCBhIGxpdHRsZSBkaWZmZXJlbnRseS4KKwkJCSAqLworCisJCQlpZiAodXZtX3BhZ2VfcGh5c2dl
dCgmcHRhZGRyKSA9PSBGQUxTRSkKKwkJCQlwYW5pYygicG1hcF9ncm93a2VybmVsOiBvdXQgb2Yg
bWVtb3J5Iik7CisJCQlwbWFwX3plcm9fcGFnZShwdGFkZHIpOworCisJCQkvKiBtYXAgdGhpcyBw
YWdlIGluICovCisJCQlwbWFwX21hcF9pbl9sMShrcG0sIChwbWFwX2N1cm1heGt2YWRkciArIDEp
LCBwdGFkZHIsIFRSVUUpOworCisJCQkvKiBjb3VudCBQVFAgYXMgcmVzaWRlbnQgKi8KKwkJCWtw
bS0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQrKzsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyoK
KwkJICogVEhJUyAqTVVTVCogQkUgQ09ERUQgU08gQVMgVE8gV09SSyBJTiBUSEUKKwkJICogcG1h
cF9pbml0aWFsaXplZCA9PSBGQUxTRSBDQVNFISAgV0UgTUFZIEJFCisJCSAqIElOVk9LRUQgV0hJ
TEUgcG1hcF9pbml0KCkgSVMgUlVOTklORyEKKwkJICovCisKKwkJaWYgKChwdHAgPSBwbWFwX2Fs
bG9jX3B0cChrcG0sIChwbWFwX2N1cm1heGt2YWRkciArIDEpLCBGQUxTRSkpID09IE5VTEwpIHsK
KwkJCXBhbmljKCJwbWFwX2dyb3drZXJuZWw6IGFsbG9jIHB0cCBmYWlsZWQiKTsKKwkJfQorCisJ
CS8qIGRpc3RyaWJ1dGUgbmV3IGtlcm5lbCBQVFAgdG8gYWxsIGFjdGl2ZSBwbWFwcyAqLworCQlz
aW1wbGVfbG9jaygmcG1hcHNfbG9jayk7CisJCUxJU1RfRk9SRUFDSChwbSwgJnBtYXBzLCBwbV9s
aXN0KSB7CisJCSAgICBwbWFwX21hcF9pbl9sMShwbSwgKHBtYXBfY3VybWF4a3ZhZGRyICsgMSks
IFZNX1BBR0VfVE9fUEhZUyhwdHApLCBUUlVFKTsgCisJCX0KKworCQlzaW1wbGVfdW5sb2NrKCZw
bWFwc19sb2NrKTsKKwl9CisKKwkvKiAKKwkgKiBmbHVzaCBvdXQgdGhlIGNhY2hlLCBleHBlbnNp
dmUgYnV0IGdyb3drZXJuZWwgd2lsbCBoYXBwZW4gc28KKwkgKiByYXJlbHkKKwkgKi8KKwljcHVf
dGxiX2ZsdXNoRCgpOworCWNwdV9jcHdhaXQoKTsKKworCXNpbXBsZV91bmxvY2soJmtwbS0+cG1f
b2JqLnZtb2JqbG9jayk7CisJc3BseChzKTsKKworb3V0OgorCXJldHVybiAocG1hcF9jdXJtYXhr
dmFkZHIpOworfQorCisKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKiBCb290c3RyYXBwaW5n
IHJvdXRpbmVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKSW5kZXg6IGFybS9pbmNs
dWRlL2FybTMyL3BtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zeXNzcmMvc3lz
L2FyY2gvYXJtL2luY2x1ZGUvYXJtMzIvcG1hcC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI4
CmRpZmYgLXUgLXAgLXIxLjI4IHBtYXAuaAotLS0gYXJtL2luY2x1ZGUvYXJtMzIvcG1hcC5oCTIw
MDIvMDIvMjEgMjE6NTg6MDEJMS4yOAorKysgYXJtL2luY2x1ZGUvYXJtMzIvcG1hcC5oCTIwMDIv
MDMvMDIgMTY6MzM6MTUKQEAgLTg0LDE2ICs4NCwyNCBAQCBzdHJ1Y3QgbDFwdCB7CiAjZGVmaW5l
IFBURkxBR19DTEVBTgkJNAkJLyogTDEgaXMgY2xlYW4gKi8KIAogLyoKKyAqIHdlIG1haW50YWlu
IGEgbGlzdCBvZiBhbGwgbm9uLWtlcm5lbCBwbWFwcworICovCisKK0xJU1RfSEVBRChwbWFwX2hl
YWQsIHBtYXApOyAvKiBzdHJ1Y3QgcG1hcF9oZWFkOiBoZWFkIG9mIGEgcG1hcCBsaXN0ICovCisK
Ky8qCiAgKiBUaGUgcG1hcCBzdHJ1Y3R1cmUgaXRzZWxmLgogICovCiBzdHJ1Y3QgcG1hcCB7CiAJ
c3RydWN0IHV2bV9vYmplY3QJcG1fb2JqOwkJLyogdXZtX29iamVjdCAqLwogI2RlZmluZQlwbV9s
b2NrCXBtX29iai52bW9iamxvY2sJCisJTElTVF9FTlRSWShwbWFwKQlwbV9saXN0OwkvKiBsaXN0
IChsY2sgYnkgcG1fbGlzdCBsb2NrKSAqLwogCXBkX2VudHJ5X3QJCSpwbV9wZGlyOwkvKiBLVkEg
b2YgcGFnZSBkaXJlY3RvcnkgKi8KIAlzdHJ1Y3QgbDFwdAkJKnBtX2wxcHQ7CS8qIEwxIGRlc2Ny
aXB0b3IgKi8KIAlwYWRkcl90ICAgICAgICAgICAgICAgICBwbV9wcHRwdDsJLyogUEEgb2YgcHQn
cyBwYWdlIHRhYmxlICovCiAJdmFkZHJfdCAgICAgICAgICAgICAgICAgcG1fdnB0cHQ7CS8qIFZB
IG9mIHB0J3MgcGFnZSB0YWJsZSAqLwogCXN0cnVjdCBwbWFwX3N0YXRpc3RpY3MJcG1fc3RhdHM7
CS8qIHBtYXAgc3RhdGlzdGljcyAqLworCXN0cnVjdCB2bV9wYWdlICpwbV9wdHBoaW50OwkJLyog
cG9pbnRlciB0byBhIFBUUCBpbiBvdXIgcG1hcCAqLwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgcG1h
cCAqcG1hcF90OwpAQCAtMTc1LDYgKzE4Myw3IEBAIGV4dGVybiBpbnQJCXBtYXBfZGVidWdfbGV2
ZWw7IC8qIE9ubHkgZXgKIGV4dGVybiB2YWRkcl90IHBtYXBfbWFwIF9fUCgodmFkZHJfdCwgdmFk
ZHJfdCwgdmFkZHJfdCwgaW50KSk7CiBleHRlcm4gdm9pZCBwbWFwX3Byb2N3ciBfX1AoKHN0cnVj
dCBwcm9jICosIHZhZGRyX3QsIGludCkpOwogI2RlZmluZQlQTUFQX05FRURfUFJPQ1dSCisjZGVm
aW5lIFBNQVBfR1JPV0tFUk5FTAkJLyogdHVybiBvbiBwbWFwX2dyb3drZXJuZWwgaW50ZXJmYWNl
ICovCiAKIC8qCiAgKiBGdW5jdGlvbnMgd2UgdXNlIGludGVybmFsbHkKQEAgLTE5OCw2ICsyMDcs
MTEgQEAgdm9pZAlwbWFwX2xpbmtfbDJwdCh2YWRkcl90LCB2YWRkcl90LCBwdgogYm9vbGVhbl90
CXBtYXBfcGFnZWlkbGV6ZXJvIF9fUCgocGFkZHJfdCkpOwogI2RlZmluZSBQTUFQX1BBR0VJRExF
WkVSTyhwYSkJcG1hcF9wYWdlaWRsZXplcm8oKHBhKSkKIAorLyoKKyAqIFRoZSBjdXJyZW50IHRv
cCBvZiBrZXJuZWwgVk0KKyAqLworZXh0ZXJuIHZhZGRyX3QJcG1hcF9jdXJtYXhrdmFkZHI7CisK
ICNlbmRpZgkvKiBfS0VSTkVMICovCiAKIC8qCkBAIC0yMTQsNyArMjI4LDggQEAgYm9vbGVhbl90
CXBtYXBfcGFnZWlkbGV6ZXJvIF9fUCgocGFkZHJfdAogCSgoKnZ0b3B0ZSh2YSkgJiBQR19GUkFN
RSkgfCAoKHVuc2lnbmVkIGludCkodmEpICYgflBHX0ZSQU1FKSkKIAogLyogTDEgYW5kIEwyIHBh
Z2UgdGFibGUgbWFjcm9zICovCi0jZGVmaW5lIHBtYXBfcGRlKG0sIHYpICgmKChtKS0+cG1fcGRp
clsoKHZhZGRyX3QpKHYpID4+IFBEU0hJRlQpJjQwOTVdKSkKKyNkZWZpbmUgcG1hcF9wZGVpKHYp
CSgodiAmIFBEX01BU0spID4+IFBEU0hJRlQpCisjZGVmaW5lIHBtYXBfcGRlKG0sIHYpICgmKCht
KS0+cG1fcGRpcltwbWFwX3BkZWkodildKSkKICNkZWZpbmUgcG1hcF9wdGVfcGEocHRlKQkoKihw
dGUpICYgUEdfRlJBTUUpCiAjZGVmaW5lIHBtYXBfcGRlX3YocGRlKQkJKCoocGRlKSAhPSAwKQog
I2RlZmluZSBwbWFwX3BkZV9zZWN0aW9uKHBkZSkJKCgqKHBkZSkgJiBMMV9NQVNLKSA9PSBMMV9T
RUNUSU9OKQpJbmRleDogYXJtL2luY2x1ZGUvYXJtMzIvdm1wYXJhbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9hcm0vaW5jbHVkZS9hcm0zMi92bXBhcmFt
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC11IC1wIC1yMS41IHZtcGFyYW0uaAot
LS0gYXJtL2luY2x1ZGUvYXJtMzIvdm1wYXJhbS5oCTIwMDIvMDIvMDYgMTc6NDE6NDQJMS41Cisr
KyBhcm0vaW5jbHVkZS9hcm0zMi92bXBhcmFtLmgJMjAwMi8wMy8wMiAxNjozMzoxNQpAQCAtMTAy
LDcgKzEwMiw2IEBACiAJCQkJCSAgICAoS0VSTkVMX1NQQUNFX1NUQVJUID4+IFBHU0hJRlQpICog
XAogCQkJCQkgICAgc2l6ZW9mKHB0X2VudHJ5X3QpKSkKICNkZWZpbmUJVk1fTUlOX0tFUk5FTF9B
RERSRVNTCSgodmFkZHJfdCkgS0VSTkVMX1RFWFRfQkFTRSkKLSNkZWZpbmUJVk1fTUFYS0VSTl9B
RERSRVNTCSgodmFkZHJfdCkgS0VSTkVMX1ZNX0JBU0UgKyBLRVJORUxfVk1fU0laRSkKICNkZWZp
bmUJVk1fTUFYX0tFUk5FTF9BRERSRVNTCSgodmFkZHJfdCkgMHhmZmZmZmZmZikKIAogLyoKSW5k
ZXg6IGNhdHMvY2F0cy9jYXRzX21hY2hkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v
dC9zeXNzcmMvc3lzL2FyY2gvY2F0cy9jYXRzL2NhdHNfbWFjaGRlcC5jLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjI0CmRpZmYgLXUgLXAgLXIxLjI0IGNhdHNfbWFjaGRlcC5jCi0tLSBjYXRzL2Nh
dHMvY2F0c19tYWNoZGVwLmMJMjAwMi8wMi8yMiAxNzoxMTo1OQkxLjI0CisrKyBjYXRzL2NhdHMv
Y2F0c19tYWNoZGVwLmMJMjAwMi8wMy8wMiAxNjozMzoxNgpAQCAtMTM4LDkgKzEzOCwxMCBAQCBl
eHRlcm4gaW50IHBtYXBfZGVidWdfbGV2ZWw7CiAjZGVmaW5lIEtFUk5FTF9QVF9LRVJORUwJMQkv
KiBMMiB0YWJsZSBmb3IgbWFwcGluZyBrZXJuZWwgKi8KICNkZWZpbmUJS0VSTkVMX1BUX0tFUk5F
TF9OVU0JMgogCisvKiBub3cgdGhpcyBjb3VsZCBtb3ZlIGludG8gc29tZXRoaW5nIG1vcmUgZ2Vu
ZXJpYyAqLwogCQkJCQkvKiBMMiB0YWJsZXMgZm9yIG1hcHBpbmcga2VybmVsIFZNICovCiAjZGVm
aW5lCUtFUk5FTF9QVF9WTURBVEEJKEtFUk5FTF9QVF9LRVJORUwgKyBLRVJORUxfUFRfS0VSTkVM
X05VTSkKLSNkZWZpbmUJS0VSTkVMX1BUX1ZNREFUQV9OVU0JKEtFUk5FTF9WTV9TSVpFID4+IChQ
RFNISUZUICsgMikpCisjZGVmaW5lCUtFUk5FTF9QVF9WTURBVEFfTlVNCTQJLyogMTZNQiBrZXJu
ZWwgVk0gISovCiAjZGVmaW5lIE5VTV9LRVJORUxfUFRTCQkoS0VSTkVMX1BUX1ZNREFUQSArIEtF
Uk5FTF9QVF9WTURBVEFfTlVNKQogCiBwdl9hZGRyX3Qga2VybmVsX3B0X3RhYmxlW05VTV9LRVJO
RUxfUFRTXTsKQEAgLTU0Nyw2ICs1NDgsMTAgQEAgaW5pdGFybShib290YXJncykKIAlmb3IgKGxv
b3AgPSAwOyBsb29wIDwgS0VSTkVMX1BUX1ZNREFUQV9OVU07ICsrbG9vcCkKIAkJcG1hcF9saW5r
X2wycHQobDFwYWdldGFibGUsIEtFUk5FTF9WTV9CQVNFICsgbG9vcCAqIDB4MDA0MDAwMDAsCiAJ
CSAgICAma2VybmVsX3B0X3RhYmxlW0tFUk5FTF9QVF9WTURBVEEgKyBsb29wXSk7CisKKwkvKiB1
cGRhdGUgdGhlIHRvcCBvZiB0aGUga2VybmVsIFZNICovCisJcG1hcF9jdXJtYXhrdmFkZHIgPSBL
RVJORUxfVk1fQkFTRSArICgoS0VSTkVMX1BUX1ZNREFUQV9OVU0pICogMHgwMDQwMDAwMCkgLSAx
OworCQogCXBtYXBfbGlua19sMnB0KGwxcGFnZXRhYmxlLCBQUk9DRVNTX1BBR0VfVEJMU19CQVNF
LCAma2VybmVsX3B0cHQpOwogCiAjaWZkZWYgVkVSQk9TRV9JTklUX0FSTQpJbmRleDogY2F0cy9p
bmNsdWRlL3ZtcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zeXNzcmMvc3lz
L2FyY2gvY2F0cy9pbmNsdWRlL3ZtcGFyYW0uaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43CmRp
ZmYgLXUgLXAgLXIxLjcgdm1wYXJhbS5oCi0tLSBjYXRzL2luY2x1ZGUvdm1wYXJhbS5oCTIwMDEv
MTEvMjMgMTg6MTY6MTEJMS43CisrKyBjYXRzL2luY2x1ZGUvdm1wYXJhbS5oCTIwMDIvMDMvMDIg
MTY6MzM6MjAKQEAgLTY5LDEwICs2OSwxNCBAQAogICogVGhlIHJhbmdlIDB4ZjEwMDAwMDAgLSAw
eGZjZmZmZmZmIGlzIGF2YWlsYWJsZSBmb3Iga2VybmVsIFZNIHNwYWNlCiAgKiBGb290YnJpZGdl
IHJlZ2lzdGVycyBhbmQgSS9PIG1hcHBpbmdzIG9jY3VweSAweGZkMDAwMDAwIC0gMHhmZmZmZmZm
ZgogICovCi0jZGVmaW5lIEtFUk5FTF9WTV9TSVpFCQkweDA3MDAwMDAwCiAjZGVmaW5lCVBST0NF
U1NfUEFHRV9UQkxTX0JBU0UJUEFHRV9UQUJMRV9TUEFDRV9TVEFSVAogCiAvKgorICogU2l6ZSBv
ZiBhdmFpbGFibGUgS1ZNIHNwYWNlLCBub3RlIHRoYXQgZ3Jvd2tlcm5lbCB3aWxsIGdyb3cgaW50
byB0aGlzLgorICovCisjZGVmaW5lIEtFUk5FTF9WTV9TSVpFCTB4MEMwMDAwMDAKKworLyoKICAq
IE92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhZ2VyX21hcCBzaXplLCB0aGVyZSdzIG5vdCBlbm91Z2gg
S1ZBLgogICovCiAjZGVmaW5lIFBBR0VSX01BUF9TSVpFCQkoNCAqIDEwMjQgKiAxMDI0KQpAQCAt
ODYsNyArOTAsNyBAQAogLyogWFhYIG1heC4gYW1vdW50IG9mIEtWTSB0byBiZSB1c2VkIGJ5IGJ1
ZmZlcnMuICovCiAjaWZuZGVmIFZNX01BWF9LRVJORUxfQlVGCiAjZGVmaW5lIFZNX01BWF9LRVJO
RUxfQlVGIFwKLQkoKFZNX01BWEtFUk5fQUREUkVTUyAtIEtFUk5FTF9WTV9CQVNFKSAqIDQgLyAx
MCkKKwkoKChLRVJORUxfVk1fU0laRSkgKiA0KSAvIDEwKQogI2VuZGlmCiAKIC8qIHZpcnR1YWwg
c2l6ZXMgKGJ5dGVzKSBmb3IgdmFyaW91cyBrZXJuZWwgc3VibWFwcyAqLwpJbmRleDogZXZiYXJt
L2luY2x1ZGUvdm1wYXJhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3N5c3NyYy9z
eXMvYXJjaC9ldmJhcm0vaW5jbHVkZS92bXBhcmFtLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NwpkaWZmIC11IC1wIC1yMS43IHZtcGFyYW0uaAotLS0gZXZiYXJtL2luY2x1ZGUvdm1wYXJhbS5o
CTIwMDIvMDEvMTYgMjM6MzM6NTEJMS43CisrKyBldmJhcm0vaW5jbHVkZS92bXBhcmFtLmgJMjAw
Mi8wMy8wMiAxNjozMzoyMApAQCAtNjgsNyArNjgsNyBAQAogICogVGhlIHJhbmdlIDB4ZjEwMDAw
MDAgLSAweGZjZmZmZmZmIGlzIGF2YWlsYWJsZSBmb3Iga2VybmVsIFZNIHNwYWNlCiAgKiBDb3Jl
LWxvZ2ljIHJlZ2lzdGVycyBhbmQgSS9PIG1hcHBpbmdzIG9jY3VweSAweGZkMDAwMDAwIC0gMHhm
ZmZmZmZmZgogICovCi0jZGVmaW5lIEtFUk5FTF9WTV9TSVpFCQkweDA2MDAwMDAwCisjZGVmaW5l
IEtFUk5FTF9WTV9TSVpFCQkweDBDMDAwMDAwCiAjZGVmaW5lCVBST0NFU1NfUEFHRV9UQkxTX0JB
U0UJUEFHRV9UQUJMRV9TUEFDRV9TVEFSVAogCiAvKgpAQCAtODUsNyArODUsNyBAQAogLyogWFhY
IG1heC4gYW1vdW50IG9mIEtWTSB0byBiZSB1c2VkIGJ5IGJ1ZmZlcnMuICovCiAjaWZuZGVmIFZN
X01BWF9LRVJORUxfQlVGCiAjZGVmaW5lIFZNX01BWF9LRVJORUxfQlVGIFwKLQkoKFZNX01BWEtF
Uk5fQUREUkVTUyAtIEtFUk5FTF9WTV9CQVNFKSAqIDQgLyAxMCkKKwkoKEtFUk5FTF9WTV9TSVpF
KSAqIDQgLyAxMCkKICNlbmRpZgogCiAvKiB2aXJ0dWFsIHNpemVzIChieXRlcykgZm9yIHZhcmlv
dXMga2VybmVsIHN1Ym1hcHMgKi8KSW5kZXg6IGV2YmFybS9pbnRlZ3JhdG9yL2ludGVncmF0b3Jf
bWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3N5c3NyYy9zeXMvYXJjaC9l
dmJhcm0vaW50ZWdyYXRvci9pbnRlZ3JhdG9yX21hY2hkZXAuYyx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4xNgpkaWZmIC11IC1wIC1yMS4xNiBpbnRlZ3JhdG9yX21hY2hkZXAuYwotLS0gZXZiYXJt
L2ludGVncmF0b3IvaW50ZWdyYXRvcl9tYWNoZGVwLmMJMjAwMi8wMi8yMiAxNzoyNjozNgkxLjE2
CisrKyBldmJhcm0vaW50ZWdyYXRvci9pbnRlZ3JhdG9yX21hY2hkZXAuYwkyMDAyLzAzLzAyIDE2
OjMzOjIwCkBAIC0xNTQsNyArMTU0LDcgQEAgZXh0ZXJuIGludCBwbWFwX2RlYnVnX2xldmVsOwog
I2RlZmluZSBLRVJORUxfUFRfU1lTCQkwCS8qIFBhZ2UgdGFibGUgZm9yIG1hcHBpbmcgcHJvYzAg
emVybyBwYWdlICovCiAjZGVmaW5lIEtFUk5FTF9QVF9LRVJORUwJMQkvKiBQYWdlIHRhYmxlIGZv
ciBtYXBwaW5nIGtlcm5lbCAqLwogI2RlZmluZSBLRVJORUxfUFRfVk1EQVRBCTIJLyogUGFnZSB0
YWJsZXMgZm9yIG1hcHBpbmcga2VybmVsIFZNICovCi0jZGVmaW5lCUtFUk5FTF9QVF9WTURBVEFf
TlVNCShLRVJORUxfVk1fU0laRSA+PiAoUERTSElGVCArIDIpKQorI2RlZmluZQlLRVJORUxfUFRf
Vk1EQVRBX05VTQk0CS8qIHN0YXJ0IHdpdGggMTZNQiBvZiBLVk0gKi8KICNkZWZpbmUgTlVNX0tF
Uk5FTF9QVFMJCShLRVJORUxfUFRfVk1EQVRBICsgS0VSTkVMX1BUX1ZNREFUQV9OVU0pCiAKIHB2
X2FkZHJfdCBrZXJuZWxfcHRfdGFibGVbTlVNX0tFUk5FTF9QVFNdOwpAQCAtNjIzLDYgKzYyMyw5
IEBAIGluaXRhcm0oYm9vdGluZm8pCiAJCSAgICAma2VybmVsX3B0X3RhYmxlW0tFUk5FTF9QVF9W
TURBVEEgKyBsb29wXSk7CiAJcG1hcF9saW5rX2wycHQobDFwYWdldGFibGUsIFBST0NFU1NfUEFH
RV9UQkxTX0JBU0UsCiAJICAgICZrZXJuZWxfcHRwdCk7CisKKwkvKiB1cGRhdGUgdGhlIHRvcCBv
ZiB0aGUga2VybmVsIFZNICovCisJcG1hcF9jdXJtYXhrdmFkZHIgPSBLRVJORUxfVk1fQkFTRSAr
ICgoS0VSTkVMX1BUX1ZNREFUQV9OVU0pICogMHgwMDQwMDAwMCkgLSAxOwogCiAjaWZkZWYgVkVS
Qk9TRV9JTklUX0FSTQogCXByaW50ZigiTWFwcGluZyBrZXJuZWxcbiIpOwpJbmRleDogZXZiYXJt
L2lxODAzMTAvaXE4MDMxMF9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qv
c3lzc3JjL3N5cy9hcmNoL2V2YmFybS9pcTgwMzEwL2lxODAzMTBfbWFjaGRlcC5jLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjMxCmRpZmYgLXUgLXAgLXIxLjMxIGlxODAzMTBfbWFjaGRlcC5jCi0t
LSBldmJhcm0vaXE4MDMxMC9pcTgwMzEwX21hY2hkZXAuYwkyMDAyLzAyLzIzIDA1OjU4OjQ2CTEu
MzEKKysrIGV2YmFybS9pcTgwMzEwL2lxODAzMTBfbWFjaGRlcC5jCTIwMDIvMDMvMDIgMTY6MzM6
MjEKQEAgLTE3Miw3ICsxNzIsNyBAQCBleHRlcm4gaW50IHBtYXBfZGVidWdfbGV2ZWw7CiAKIAkJ
CQkJLyogTDIgdGFibGVzIGZvciBtYXBwaW5nIGtlcm5lbCBWTSAqLyAKICNkZWZpbmUgS0VSTkVM
X1BUX1ZNREFUQQkoS0VSTkVMX1BUX0lPUFhTICsgMSkKLSNkZWZpbmUJS0VSTkVMX1BUX1ZNREFU
QV9OVU0JKEtFUk5FTF9WTV9TSVpFID4+IChQRFNISUZUICsgMikpCisjZGVmaW5lCUtFUk5FTF9Q
VF9WTURBVEFfTlVNCTQJLyogc3RhcnQgd2l0aCAxNk1CIG9mIEtWTSAqLwogI2RlZmluZSBOVU1f
S0VSTkVMX1BUUwkJKEtFUk5FTF9QVF9WTURBVEEgKyBLRVJORUxfUFRfVk1EQVRBX05VTSkKIAog
cHZfYWRkcl90IGtlcm5lbF9wdF90YWJsZVtOVU1fS0VSTkVMX1BUU107CkBAIC02MDgsNiArNjA4
LDkgQEAgaW5pdGFybSh2b2lkICphcmcpCiAJCXBtYXBfbGlua19sMnB0KGwxcGFnZXRhYmxlLCBL
RVJORUxfVk1fQkFTRSArIGxvb3AgKiAweDAwNDAwMDAwLAogCQkgICAgJmtlcm5lbF9wdF90YWJs
ZVtLRVJORUxfUFRfVk1EQVRBICsgbG9vcF0pOwogCXBtYXBfbGlua19sMnB0KGwxcGFnZXRhYmxl
LCBQUk9DRVNTX1BBR0VfVEJMU19CQVNFLCAma2VybmVsX3B0cHQpOworCisJLyogdXBkYXRlIHRo
ZSB0b3Agb2YgdGhlIGtlcm5lbCBWTSAqLworCXBtYXBfY3VybWF4a3ZhZGRyID0gS0VSTkVMX1ZN
X0JBU0UgKyAoKEtFUk5FTF9QVF9WTURBVEFfTlVNKSAqIDB4MDA0MDAwMDApIC0gMTsKIAogI2lm
ZGVmIFZFUkJPU0VfSU5JVF9BUk0KIAlwcmludGYoIk1hcHBpbmcga2VybmVsXG4iKTsKSW5kZXg6
IG5ldHdpbmRlci9pbmNsdWRlL3ZtcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v
dC9zeXNzcmMvc3lzL2FyY2gvbmV0d2luZGVyL2luY2x1ZGUvdm1wYXJhbS5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjgKZGlmZiAtdSAtcCAtcjEuOCB2bXBhcmFtLmgKLS0tIG5ldHdpbmRlci9p
bmNsdWRlL3ZtcGFyYW0uaAkyMDAxLzExLzIzIDE4OjE2OjEyCTEuOAorKysgbmV0d2luZGVyL2lu
Y2x1ZGUvdm1wYXJhbS5oCTIwMDIvMDMvMDIgMTY6MzM6MjUKQEAgLTY4LDcgKzY4LDcgQEAKICAq
IFRoZSByYW5nZSAweGYxMDAwMDAwIC0gMHhmY2ZmZmZmZiBpcyBhdmFpbGFibGUgZm9yIGtlcm5l
bCBWTSBzcGFjZQogICogRm9vdGJyaWRnZSByZWdpc3RlcnMgYW5kIEkvTyBtYXBwaW5ncyBvY2N1
cHkgMHhmZDAwMDAwMCAtIDB4ZmZmZmZmZmYKICAqLwotI2RlZmluZSBLRVJORUxfVk1fU0laRQkJ
MHgwNjAwMDAwMAorI2RlZmluZSBLRVJORUxfVk1fU0laRQkJMHgwQzAwMDAwMAogI2RlZmluZQlQ
Uk9DRVNTX1BBR0VfVEJMU19CQVNFCVBBR0VfVEFCTEVfU1BBQ0VfU1RBUlQKIAogLyoKQEAgLTg1
LDcgKzg1LDcgQEAKIC8qIFhYWCBtYXguIGFtb3VudCBvZiBLVk0gdG8gYmUgdXNlZCBieSBidWZm
ZXJzLiAqLwogI2lmbmRlZiBWTV9NQVhfS0VSTkVMX0JVRgogI2RlZmluZSBWTV9NQVhfS0VSTkVM
X0JVRiBcCi0JKChWTV9NQVhLRVJOX0FERFJFU1MgLSBLRVJORUxfVk1fQkFTRSkgKiA0IC8gMTAp
CisJKChLRVJORUxfVk1fU0laRSkgKiA0IC8gMTApCiAjZW5kaWYKIAogLyogdmlydHVhbCBzaXpl
cyAoYnl0ZXMpIGZvciB2YXJpb3VzIGtlcm5lbCBzdWJtYXBzICovCkluZGV4OiBuZXR3aW5kZXIv
bmV0d2luZGVyL25ldHdpbmRlcl9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jv
b3Qvc3lzc3JjL3N5cy9hcmNoL25ldHdpbmRlci9uZXR3aW5kZXIvbmV0d2luZGVyX21hY2hkZXAu
Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMwpkaWZmIC11IC1wIC1yMS4yMyBuZXR3aW5kZXJf
bWFjaGRlcC5jCi0tLSBuZXR3aW5kZXIvbmV0d2luZGVyL25ldHdpbmRlcl9tYWNoZGVwLmMJMjAw
Mi8wMi8yMiAxODoyNTowOQkxLjIzCisrKyBuZXR3aW5kZXIvbmV0d2luZGVyL25ldHdpbmRlcl9t
YWNoZGVwLmMJMjAwMi8wMy8wMiAxNjozMzoyNQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGV4dGVybiBp
bnQgcG1hcF9kZWJ1Z19sZXZlbDsKICNkZWZpbmUgS0VSTkVMX1BUX1NZUwkJMAkvKiBQYWdlIHRh
YmxlIGZvciBtYXBwaW5nIHByb2MwIHplcm8gcGFnZSAqLwogI2RlZmluZSBLRVJORUxfUFRfS0VS
TkVMCTEJLyogUGFnZSB0YWJsZSBmb3IgbWFwcGluZyBrZXJuZWwgKi8KICNkZWZpbmUgS0VSTkVM
X1BUX1ZNREFUQQkyCS8qIFBhZ2UgdGFibGVzIGZvciBtYXBwaW5nIGtlcm5lbCBWTSAqLwotI2Rl
ZmluZQlLRVJORUxfUFRfVk1EQVRBX05VTQkoS0VSTkVMX1ZNX1NJWkUgPj4gKFBEU0hJRlQgKyAy
KSkKKyNkZWZpbmUJS0VSTkVMX1BUX1ZNREFUQV9OVU0JNAkvKiBzdGFydCB3aXRoIDE2TUIgb2Yg
S1ZNICovCiAjZGVmaW5lIE5VTV9LRVJORUxfUFRTCQkoS0VSTkVMX1BUX1ZNREFUQSArIEtFUk5F
TF9QVF9WTURBVEFfTlVNKQogCiBwdl9hZGRyX3Qga2VybmVsX3B0X3RhYmxlW05VTV9LRVJORUxf
UFRTXTsKQEAgLTU4MSw2ICs1ODEsOSBAQCBpbml0YXJtKGJvb3RpbmZvKQogCQkgICAgJmtlcm5l
bF9wdF90YWJsZVtLRVJORUxfUFRfVk1EQVRBICsgbG9vcF0pOwogCXBtYXBfbGlua19sMnB0KGwx
cGFnZXRhYmxlLCBQUk9DRVNTX1BBR0VfVEJMU19CQVNFLAogCSAgICAma2VybmVsX3B0cHQpOwor
CisJLyogdXBkYXRlIHRoZSB0b3Agb2YgdGhlIGtlcm5lbCBWTSAqLworCXBtYXBfY3VybWF4a3Zh
ZGRyID0gS0VSTkVMX1ZNX0JBU0UgKyAoKEtFUk5FTF9QVF9WTURBVEFfTlVNKSAqIDB4MDA0MDAw
MDApIC0gMTsKIAogI2lmZGVmIFZFUkJPU0VfSU5JVF9BUk0KIAlwcmludGYoIk1hcHBpbmcga2Vy
bmVsXG4iKTsKSW5kZXg6IGhwY2FybS9ocGNhcm0vaHBjX21hY2hkZXAuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3Zzcm9vdC9zeXNzcmMvc3lzL2FyY2gvaHBjYXJtL2hwY2FybS9ocGNfbWFjaGRl
cC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2CmRpZmYgLXUgLXAgLXIxLjM2IGhwY19tYWNo
ZGVwLmMKLS0tIGhwY2FybS9ocGNhcm0vaHBjX21hY2hkZXAuYwkyMDAyLzAyLzIzIDEzOjU4OjEw
CTEuMzYKKysrIGhwY2FybS9ocGNhcm0vaHBjX21hY2hkZXAuYwkyMDAyLzAzLzAyIDE2OjMzOjI3
CkBAIC0xNTUsNyArMTU1LDcgQEAgZXh0ZXJuIGludCBwbWFwX2RlYnVnX2xldmVsOwogI2RlZmlu
ZQlLRVJORUxfUFRfS0VSTkVMCTIJLyogUGFnZSB0YWJsZSBmb3IgbWFwcGluZyBrZXJuZWwgKi8K
ICNkZWZpbmUJS0VSTkVMX1BUX0lPCQkzCS8qIFBhZ2UgdGFibGUgZm9yIG1hcHBpbmcgSU8gKi8K
ICNkZWZpbmUJS0VSTkVMX1BUX1ZNREFUQQk0CS8qIFBhZ2UgdGFibGVzIGZvciBtYXBwaW5nIGtl
cm5lbCBWTSAqLwotI2RlZmluZQlLRVJORUxfUFRfVk1EQVRBX05VTQkoS0VSTkVMX1ZNX1NJWkUg
Pj4gKFBEU0hJRlQgKyAyKSkKKyNkZWZpbmUJS0VSTkVMX1BUX1ZNREFUQV9OVU0JNAkvKiBzdGFy
dCB3aXRoIDE2TUIgb2YgS1ZNICovCiAjZGVmaW5lCU5VTV9LRVJORUxfUFRTCQkoS0VSTkVMX1BU
X1ZNREFUQSArIEtFUk5FTF9QVF9WTURBVEFfTlVNKQogCiBwdl9hZGRyX3Qga2VybmVsX3B0X3Rh
YmxlW05VTV9LRVJORUxfUFRTXTsKQEAgLTUwNSw2ICs1MDUsOSBAQCBpbml0YXJtKGFyZ2MsIGFy
Z3YsIGJpKQogCQkgICAgJmtlcm5lbF9wdF90YWJsZVtLRVJORUxfUFRfVk1EQVRBICsgbG9vcF0p
OwogCXBtYXBfbGlua19sMnB0KGwxcGFnZXRhYmxlLCBQUk9DRVNTX1BBR0VfVEJMU19CQVNFLAog
CSAgICAma2VybmVsX3B0cHQpOworCisJLyogdXBkYXRlIHRoZSB0b3Agb2YgdGhlIGtlcm5lbCBW
TSAqLworCXBtYXBfY3VybWF4a3ZhZGRyID0gS0VSTkVMX1ZNX0JBU0UgKyAoKEtFUk5FTF9QVF9W
TURBVEFfTlVNKSAqIDB4MDA0MDAwMDApIC0gMTsKICNkZWZpbmUgU0FJUElPX0JBU0UJCTB4ZDAw
MDAwMDAJCS8qIFhYWCBYWFggKi8KIAlwbWFwX2xpbmtfbDJwdChsMXBhZ2V0YWJsZSwgU0FJUElP
X0JBU0UsCiAJICAgICZrZXJuZWxfcHRfdGFibGVbS0VSTkVMX1BUX0lPXSk7CkluZGV4OiBocGNh
cm0vaW5jbHVkZS92bXBhcmFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3lzc3Jj
L3N5cy9hcmNoL2hwY2FybS9pbmNsdWRlL3ZtcGFyYW0uaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xMQpkaWZmIC11IC1wIC1yMS4xMSB2bXBhcmFtLmgKLS0tIGhwY2FybS9pbmNsdWRlL3ZtcGFy
YW0uaAkyMDAyLzAyLzIzIDE0OjAyOjQ4CTEuMTEKKysrIGhwY2FybS9pbmNsdWRlL3ZtcGFyYW0u
aAkyMDAyLzAzLzAyIDE2OjMzOjI3CkBAIC05Myw3ICs5Myw3IEBACiAvKiBYWFggbWF4LiBhbW91
bnQgb2YgS1ZNIHRvIGJlIHVzZWQgYnkgYnVmZmVycy4gKi8KICNpZm5kZWYgVk1fTUFYX0tFUk5F
TF9CVUYKICNkZWZpbmUgVk1fTUFYX0tFUk5FTF9CVUYgXAotCSgoVk1fTUFYS0VSTl9BRERSRVNT
IC0gS0VSTkVMX1ZNX0JBU0UpICogNCAvIDEwKQorCSgoS0VSTkVMX1ZNX1NJWkUpICogNCAvIDEw
KQogI2VuZGlmCiAKIC8qIHZpcnR1YWwgc2l6ZXMgKGJ5dGVzKSBmb3IgdmFyaW91cyBrZXJuZWwg
c3VibWFwcyAqLwpJbmRleDogc2hhcmsvaW5jbHVkZS92bXBhcmFtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2c3Jvb3Qvc3lzc3JjL3N5cy9hcmNoL3NoYXJrL2luY2x1ZGUvdm1wYXJhbS5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcCAtcjEuMSB2bXBhcmFtLmgKLS0tIHNo
YXJrL2luY2x1ZGUvdm1wYXJhbS5oCTIwMDIvMDIvMTAgMDE6NTc6NDgJMS4xCisrKyBzaGFyay9p
bmNsdWRlL3ZtcGFyYW0uaAkyMDAyLzAzLzAyIDE2OjMzOjI3CkBAIC03OCw3ICs3OCw3IEBACiAv
KiBYWFggbWF4LiBhbW91bnQgb2YgS1ZNIHRvIGJlIHVzZWQgYnkgYnVmZmVycy4gKi8KICNpZm5k
ZWYgVk1fTUFYX0tFUk5FTF9CVUYKICNkZWZpbmUgVk1fTUFYX0tFUk5FTF9CVUYgXAotCSgoVk1f
TUFYS0VSTl9BRERSRVNTIC0gS0VSTkVMX1ZNX0JBU0UpICogNCAvIDEwKQorCSgoS0VSTkVMX1ZN
X1NJWkUpICogNCAvIDEwKQogI2VuZGlmCiAKIC8qIHZpcnR1YWwgc2l6ZXMgKGJ5dGVzKSBmb3Ig
dmFyaW91cyBrZXJuZWwgc3VibWFwcyAqLwo=

--------------Boundary-00=_N2UCZJEHCNZKT0FE66TK--