Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jun 2010 19:06:16 +0530
From:      "Jayachandran C." <c.jayachandran@gmail.com>
To:        Randall Stewart <rrs@lakerest.net>, Juli Mallett <jmallett@freebsd.org>,  "M. Warner Losh" <imp@bsdimp.com>, freebsd-mips@freebsd.org
Subject:   Merging 64 bit changes to -HEAD
Message-ID:  <AANLkTik8jFkB7FTIIhyjalkfv1c0yXqse57Jzz527uf_@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--e0cb4e88758397b495048911b0d9
Content-Type: text/plain; charset=ISO-8859-1

I have volunteered to merge Juli's 64-bit work into HEAD,  and
hopefully get it to work on XLR too. The tree
(http://svn.freebsd.org/base/user/jmallett/octeon) has quite a bit of
changes, so I would like to do this over multiple changesets and
without breaking the current o32 code.

The first batch of changes are attached (also at
http://people.freebsd.org/~jchandra/jmallett-merge/), the patches are:

libc-asm.patch - change libc assembly code to use macros which work on o32/n64
libc-other.patch - makecontext implemenation, and other cleanup
ld.so.patch - change dynamic loader assembly code to use macros
tlb-to-c.patch - move TLB operations to C, update TLB operations API

I've tested this on XLR, but there is a chance that this might break
other platforms. So please let me know your comments on both the
patches and the merge process.

The future patches (if everything goes well), will do the PTE_ flag to
PG_ flag renaming in Juli's tree, then the actual n32/n64 changes.

Thanks,
JC.

--e0cb4e88758397b495048911b0d9
Content-Type: text/x-patch; charset=US-ASCII; name="libc-asm.patch"
Content-Disposition: attachment; filename="libc-asm.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gagrfoy80

SW5kZXg6IGxpYi9saWJjL21pcHMvU1lTLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9T
WVMuaAkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9TWVMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IFNZUy5oLHYgMS4xOCAyMDAzLzEwLzI5
IDEyOjI4OjMzIHBvb2thIEV4cCAkICovCisvKgkkTmV0QlNEOiBTWVMuaCx2IDEuMTkgMjAwOS8x
Mi8xNCAwMTowNzo0MSBtYXR0IEV4cCAkICovCiAvKiAkRnJlZUJTRCQgKi8KIAogLyotCkBAIC03
OSwxNCArNzksMjIgQEAKICAqLwogI2lmZGVmIF9fQUJJQ0FMTFNfXwogCS5hYmljYWxscwotIyBk
ZWZpbmUgUElDX1BST0xPR1VFKHgsc3IpCS5zZXQgbm9yZW9yZGVyOyAuY3Bsb2FkIHNyOyAuc2V0
IHJlb3JkZXIKLSMgZGVmaW5lIFBJQ19DQUxMKGwsc3IpCQlsYSBzciwgX0NfTEFCRUwobCk7IGpy
IHNyCisjIGlmIGRlZmluZWQoX19taXBzX28zMikgfHwgZGVmaW5lZChfX21pcHNfbzY0KQorIyAg
ZGVmaW5lIFBJQ19QUk9MT0dVRSh4KQlTRVRVUF9HUAorIyAgZGVmaW5lIFBJQ19UQUlMQ0FMTChs
KQlQVFJfTEEgdDksIF9DX0xBQkVMKGwpOyBqciB0OQorIyAgZGVmaW5lIFBJQ19SRVRVUk4oKQkJ
aiByYQorIyBlbHNlCisjICBkZWZpbmUgUElDX1BST0xPR1VFKHgpCVNFVFVQX0dQNjQodDMsIHgp
CisjICBkZWZpbmUgUElDX1RBSUxDQUxMKGwpCVBUUl9MQSB0OSwgX0NfTEFCRUwobCk7IFJFU1RP
UkVfR1A2NDsganIgdDkKKyMgIGRlZmluZSBQSUNfUkVUVVJOKCkJCVJFU1RPUkVfR1A2NDsgaiBy
YQorIyBlbmRpZgogI2Vsc2UKLSMgZGVmaW5lIFBJQ19QUk9MT0dVRSh4LHNyKQotIyBkZWZpbmUg
UElDX0NBTEwobCxzcikJCWogIF9DX0xBQkVMKGwpCi0jZW5kaWYKKyMgZGVmaW5lIFBJQ19QUk9M
T0dVRSh4KQorIyBkZWZpbmUgUElDX1RBSUxDQUxMKGwpCWogIF9DX0xBQkVMKGwpCisjIGRlZmlu
ZSBQSUNfUkVUVVJOKCkKKyNlbmRpZiAvKiBfX0FCSUNBTExTX18gKi8KIAotIyBkZWZpbmUgU1lT
VFJBUCh4KQlsaSB2MCwgU1lTXyAjIyB4OyBzeXNjYWxsOworIyBkZWZpbmUgU1lTVFJBUCh4KQls
aSB2MCxTWVNfICMjIHg7IHN5c2NhbGw7CiAKIC8qCiAgKiBEbyBhIHN5c2NhbGwgdGhhdCBjYW5u
b3QgZmFpbCAoc3luYywgZ2V0e3AsdSxnLGV1LGVnKWlkKQpAQCAtMTA2LDcgKzExNCw3IEBACiAg
Ki8KICNkZWZpbmUgUFNFVURPX05PRVJST1IoeCkJCQkJCQlcCiBMRUFGKF9fc3lzXyAjIyB4KTsJ
CQkJCQkJXAotICAgICAgICAud2VhayBfQ19MQUJFTCh4KTsJCQkJCQlcCisJLndlYWsgX0NfTEFC
RUwoeCk7CQkJCQkJXAogCV9DX0xBQkVMKHgpID0gX0NfTEFCRUwoX19DT05DQVQoX19zeXNfLHgp
KTsJCQlcCiAJLndlYWsgX0NfTEFCRUwoX19DT05DQVQoXyx4KSk7CQkJCQlcCiAJX0NfTEFCRUwo
X19DT05DQVQoXyx4KSkgPSBfQ19MQUJFTChfX0NPTkNBVChfX3N5c18seCkpOwkJXApAQCAtMTE2
LDE0ICsxMjQsMTQgQEAKIAogI2RlZmluZSBQU0VVRE8oeCkJCQkJCQkJXAogTEVBRihfX3N5c18g
IyMgeCk7CQkJCQkJCVwKLSAgICAgICAgLndlYWsgX0NfTEFCRUwoeCk7CQkJCQkJXAorCS53ZWFr
IF9DX0xBQkVMKHgpOwkJCQkJCVwKIAlfQ19MQUJFTCh4KSA9IF9DX0xBQkVMKF9fQ09OQ0FUKF9f
c3lzXyx4KSk7CQkJXAogCS53ZWFrIF9DX0xBQkVMKF9fQ09OQ0FUKF8seCkpOwkJCQkJXAogCV9D
X0xBQkVMKF9fQ09OQ0FUKF8seCkpID0gX0NfTEFCRUwoX19DT05DQVQoX19zeXNfLHgpKTsJCVwK
LQlQSUNfUFJPTE9HVUUoeCx0OSk7CQkJCQkJXAorCVBJQ19QUk9MT0dVRShfX3N5c18gIyMgeCk7
CQkJCQlcCiAJU1lTVFJBUCh4KTsJCQkJCQkJXAogCWJuZSBhMyx6ZXJvLGVycjsJCQkJCQlcCi0J
aiByYTsJCQkJCQkJCVwKKwlQSUNfUkVUVVJOKCk7CQkJCQkJCVwKIGVycjoJCQkJCQkJCQlcCi0J
UElDX0NBTEwoX19jZXJyb3IsdDkpOwkJCQkJCVwKLQlFTkQoX19zeXNfICMjIHgpCisJUElDX1RB
SUxDQUxMKF9fY2Vycm9yKTsJCQkJCQlcCitFTkQoX19zeXNfICMjIHgpCkluZGV4OiBsaWIvbGli
Yy9taXBzL3N0cmluZy9mZnMuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9m
ZnMuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9zdHJpbmcvZmZzLlMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBmZnMuUyx2IDEuMSAyMDA1
LzEyLzIwIDE5OjI4OjQ5IGNocmlzdG9zIEV4cCAkCSovCisvKgkkTmV0QlNEOiBmZnMuUyx2IDEu
MiAyMDA5LzEyLzE0IDAwOjM5OjAwIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg
KGMpIDE5OTEsIDE5OTMKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2lmIGRlZmluZWQoTElCQ19TQ0NT
KSAmJiAhZGVmaW5lZChsaW50KQogCUFTTVNUUigiZnJvbTogQCgjKWZmcy5zCTguMSAoQmVya2Vs
ZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBmZnMuUyx2IDEuMSAyMDA1LzEyLzIwIDE5
OjI4OjQ5IGNocmlzdG9zIEV4cCAkIikKKwlBU01TVFIoIiROZXRCU0Q6IGZmcy5TLHYgMS4yIDIw
MDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBu
b3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkluZGV4OiBsaWIvbGliYy9taXBzL3N0
cmluZy9iY21wLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zdHJpbmcvYmNtcC5TCShy
ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0cmluZy9iY21wLlMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBiY21wLlMsdiAxLjggMjAwMy8wOC8w
NyAxNjo0MjoxNiBhZ2MgRXhwICQJKi8KKy8qCSROZXRCU0Q6IGJjbXAuUyx2IDEuOSAyMDA5LzEy
LzE0IDAxOjA3OjQyIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTEs
IDE5OTMKQEAgLTM1LDkgKzM1LDE1IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KIF9fRkJT
RElEKCIkRnJlZUJTRCQiKTsKIAorI2RlZmluZSBfTE9DT1JFCQkvKiBYWFggbm90IHJlYWxseSwg
anVzdCBhc3NlbWJseS1jb2RlIHNvdXJjZSAqLworI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFuLmg+
CS8qIExXTE8vTFdISSwgU1dMTy9TV0hJICovCisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYg
IWRlZmluZWQobGludCkKKyNpZiAwCiAJQVNNU1RSKCJmcm9tOiBAKCMpYmNtcC5zCTguMSAoQmVy
a2VsZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBiY21wLlMsdiAxLjggMjAwMy8wOC8w
NyAxNjo0MjoxNiBhZ2MgRXhwICQiKQorI2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJjbXAuUyx2
IDEuOSAyMDA5LzEyLzE0IDAxOjA3OjQyIG1hdHQgRXhwICQiKQorI2VuZGlmCiAjZW5kaWYgLyog
TElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkBAIC00OSw4
NiArNTUsNzYgQEAKIAogTEVBRihiY21wKQogCS5zZXQJbm9yZW9yZGVyCi0JYmx0CWEyLCAxNiwg
c21hbGwJCSMgaXMgaXQgd29ydGggYW55IHRyb3VibGU/Ci0JeG9yCXYwLCBhMCwgYTEJCSMgY29t
cGFyZSBsb3cgdHdvIGJpdHMgb2YgYWRkcmVzc2VzCi0JYW5kCXYwLCB2MCwgMwotCXN1YnUJYTMs
IHplcm8sIGExCQkjIGNvbXB1dGUgIyBieXRlcyB0byB3b3JkIGFsaWduIGFkZHJlc3MKLQlibmUJ
djAsIHplcm8sIHVuYWxpZ25lZAkjIG5vdCBwb3NzaWJsZSB0byBhbGlnbiBhZGRyZXNzZXMKLQlh
bmQJYTMsIGEzLCAzCisJYmx0CQlhMiwgMTYsIHNtYWxsCSMgaXMgaXQgd29ydGggYW55IHRyb3Vi
bGU/CisJeG9yCQl2MCwgYTAsIGExCSMgY29tcGFyZSBsb3cgdHdvIGJpdHMgb2YgYWRkcmVzc2Vz
CisJYW5kCQl2MCwgdjAsIDMKKwlQVFJfU1VCVQlhMywgemVybywgYTEJIyBjb21wdXRlICMgYnl0
ZXMgdG8gd29yZCBhbGlnbiBhZGRyZXNzCisJYm5lCQl2MCwgemVybywgdW5hbGlnbmVkICMgbm90
IHBvc3NpYmxlIHRvIGFsaWduIGFkZHJlc3NlcworCWFuZAkJYTMsIGEzLCAzCiAKLQliZXEJYTMs
IHplcm8sIDFmCi0Jc3VidQlhMiwgYTIsIGEzCQkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNv
dW50Ci0JbW92ZQl2MCwgdjEJCQkjIGluaXQgdjAsdjEgc28gdW5tb2RpZmllZCBieXRlcyBtYXRj
aAotI2lmZGVmIF9fTUlQU0VCX18KLQlsd2wJdjAsIDAoYTApCQkjIHJlYWQgMSwgMiwgb3IgMyBi
eXRlcwotCWx3bAl2MSwgMChhMSkKLSNlbHNlCi0JbHdyCXYwLCAwKGEwKQkJIyByZWFkIDEsIDIs
IG9yIDMgYnl0ZXMKLQlsd3IJdjEsIDAoYTEpCi0jZW5kaWYKLQlhZGR1CWExLCBhMSwgYTMKLQli
bmUJdjAsIHYxLCBub21hdGNoCi0JYWRkdQlhMCwgYTAsIGEzCisJYmVxCQlhMywgemVybywgMWYK
KwlQVFJfU1VCVQlhMiwgYTIsIGEzCSMgc3VidHJhY3QgZnJvbSByZW1haW5pbmcgY291bnQKKwlt
b3ZlCQl2MCwgdjEJCSMgaW5pdCB2MCx2MSBzbyB1bm1vZGlmaWVkIGJ5dGVzIG1hdGNoCisJTFdI
SQkJdjAsIDAoYTApCSMgcmVhZCAxLCAyLCBvciAzIGJ5dGVzCisJTFdISQkJdjEsIDAoYTEpCisJ
UFRSX0FERFUJYTEsIGExLCBhMworCWJuZQkJdjAsIHYxLCBub21hdGNoCisJUFRSX0FERFUJYTAs
IGEwLCBhMwogMToKLQlhbmQJYTMsIGEyLCB+MwkJIyBjb21wdXRlIG51bWJlciBvZiB3aG9sZSB3
b3JkcyBsZWZ0Ci0Jc3VidQlhMiwgYTIsIGEzCQkjICAgd2hpY2ggaGFzIHRvIGJlID49ICgxNi0z
KSAmIH4zCi0JYWRkdQlhMywgYTMsIGEwCQkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKKwlhbmQJ
CWEzLCBhMiwgfjMJIyBjb21wdXRlIG51bWJlciBvZiB3aG9sZSB3b3JkcyBsZWZ0CisJUFRSX1NV
QlUJYTIsIGEyLCBhMwkjICAgd2hpY2ggaGFzIHRvIGJlID49ICgxNi0zKSAmIH4zCisJUFRSX0FE
RFUJYTMsIGEzLCBhMAkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKIDI6Ci0JbHcJdjAsIDAoYTAp
CQkjIGNvbXBhcmUgd29yZHMKLQlsdwl2MSwgMChhMSkKLQlhZGR1CWEwLCBhMCwgNAotCWJuZQl2
MCwgdjEsIG5vbWF0Y2gKLQlhZGR1CWExLCBhMSwgNAotCWJuZQlhMCwgYTMsIDJiCisJbHcJCXYw
LCAwKGEwKQkjIGNvbXBhcmUgd29yZHMKKwlsdwkJdjEsIDAoYTEpCisJUFRSX0FERFUJYTAsIGEw
LCA0CisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDQKKwlibmUJCWEw
LCBhMywgMmIKIAlub3AKLQliCXNtYWxsCQkJIyBmaW5pc2ggcmVtYWluZGVyCisJYgkJc21hbGwJ
CSMgZmluaXNoIHJlbWFpbmRlcgogCW5vcAogdW5hbGlnbmVkOgotCWJlcQlhMywgemVybywgMmYK
LQlzdWJ1CWEyLCBhMiwgYTMJCSMgc3VidHJhY3QgZnJvbSByZW1haW5pbmcgY291bnQKLQlhZGR1
CWEzLCBhMywgYTAJCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcworCWJlcQkJYTMsIHplcm8sIDJm
CisJUFRSX1NVQlUJYTIsIGEyLCBhMwkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNvdW50CisJ
UFRSX0FERFUJYTMsIGEzLCBhMAkjIGNvbXB1dGUgZW5kaW5nIGFkZHJlc3MKIDE6Ci0JbGJ1CXYw
LCAwKGEwKQkJIyBjb21wYXJlIGJ5dGVzIHVudGlsIGExIHdvcmQgYWxpZ25lZAotCWxidQl2MSwg
MChhMSkKLQlhZGR1CWEwLCBhMCwgMQotCWJuZQl2MCwgdjEsIG5vbWF0Y2gKLQlhZGR1CWExLCBh
MSwgMQotCWJuZQlhMCwgYTMsIDFiCisJbGJ1CQl2MCwgMChhMCkJIyBjb21wYXJlIGJ5dGVzIHVu
dGlsIGExIHdvcmQgYWxpZ25lZAorCWxidQkJdjEsIDAoYTEpCisJUFRSX0FERFUJYTAsIGEwLCAx
CisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDEKKwlibmUJCWEwLCBh
MywgMWIKIAlub3AKIDI6Ci0JYW5kCWEzLCBhMiwgfjMJCSMgY29tcHV0ZSBudW1iZXIgb2Ygd2hv
bGUgd29yZHMgbGVmdAotCXN1YnUJYTIsIGEyLCBhMwkJIyAgIHdoaWNoIGhhcyB0byBiZSA+PSAo
MTYtMykgJiB+MwotCWFkZHUJYTMsIGEzLCBhMAkJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCisJ
YW5kCQlhMywgYTIsIH4zCSMgY29tcHV0ZSBudW1iZXIgb2Ygd2hvbGUgd29yZHMgbGVmdAorCVBU
Ul9TVUJVCWEyLCBhMiwgYTMJIyAgIHdoaWNoIGhhcyB0byBiZSA+PSAoMTYtMykgJiB+MworCVBU
Ul9BRERVCWEzLCBhMywgYTAJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCiAzOgotI2lmZGVmIF9f
TUlQU0VCX18KLQlsd2wJdjAsIDAoYTApCQkjIGNvbXBhcmUgd29yZHMgYTAgdW5hbGlnbmVkLCBh
MSBhbGlnbmVkCi0JbHdyCXYwLCAzKGEwKQotI2Vsc2UKLQlsd3IJdjAsIDAoYTApCQkjIGNvbXBh
cmUgd29yZHMgYTAgdW5hbGlnbmVkLCBhMSBhbGlnbmVkCi0JbHdsCXYwLCAzKGEwKQotI2VuZGlm
Ci0JbHcJdjEsIDAoYTEpCi0JYWRkdQlhMCwgYTAsIDQKLQlibmUJdjAsIHYxLCBub21hdGNoCi0J
YWRkdQlhMSwgYTEsIDQKLQlibmUJYTAsIGEzLCAzYgorCUxXSEkJCXYwLCAwKGEwKQkjIGNvbXBh
cmUgd29yZHMgYTAgdW5hbGlnbmVkLCBhMSBhbGlnbmVkCisJTFdMTwkJdjAsIDMoYTApCisJbHcJ
CXYxLCAwKGExKQorCVBUUl9BRERVCWEwLCBhMCwgNAorCWJuZQkJdjAsIHYxLCBub21hdGNoCisJ
UFRSX0FERFUJYTEsIGExLCA0CisJYm5lCQlhMCwgYTMsIDNiCiAJbm9wCiBzbWFsbDoKLQlibGUJ
YTIsIHplcm8sIG1hdGNoCi0JYWRkdQlhMywgYTIsIGEwCQkjIGNvbXB1dGUgZW5kaW5nIGFkZHJl
c3MKKwlibGUJCWEyLCB6ZXJvLCBtYXRjaAorCVBUUl9BRERVCWEzLCBhMiwgYTAJCSMgY29tcHV0
ZSBlbmRpbmcgYWRkcmVzcwogMToKLQlsYnUJdjAsIDAoYTApCi0JbGJ1CXYxLCAwKGExKQotCWFk
ZHUJYTAsIGEwLCAxCi0JYm5lCXYwLCB2MSwgbm9tYXRjaAotCWFkZHUJYTEsIGExLCAxCi0JYm5l
CWEwLCBhMywgMWIKKwlsYnUJCXYwLCAwKGEwKQorCWxidQkJdjEsIDAoYTEpCisJUFRSX0FERFUJ
YTAsIGEwLCAxCisJYm5lCQl2MCwgdjEsIG5vbWF0Y2gKKwlQVFJfQUREVQlhMSwgYTEsIDEKKwli
bmUJCWEwLCBhMywgMWIKIAlub3AKIG1hdGNoOgotCWoJcmEKLQltb3ZlCXYwLCB6ZXJvCisJagkJ
cmEKKwltb3ZlCQl2MCwgemVybwogbm9tYXRjaDoKLQlqCXJhCi0JbGkJdjAsIDEKKwlqCQlyYQor
CWxpCQl2MCwgMQogCS5zZXQJcmVvcmRlcgogRU5EKGJjbXApCkluZGV4OiBsaWIvbGliYy9taXBz
L3N0cmluZy9iemVyby5TCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJjL21pcHMvc3RyaW5nL2J6ZXJv
LlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3RyaW5nL2J6ZXJvLlMJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBiemVyby5TLHYgMS44IDIw
MDMvMDgvMDcgMTY6NDI6MTYgYWdjIEV4cCAkCSovCisvKgkkTmV0QlNEOiBiemVyby5TLHYgMS4x
MCAyMDA5LzEyLzE0IDAyOjUzOjUyIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg
KGMpIDE5OTEsIDE5OTMKQEAgLTM2LDEwICszNiwxNSBAQAogX19GQlNESUQoIiRGcmVlQlNEJCIp
OwogCiAjaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVkKGxpbnQpCisjaWYgMAogCUFT
TVNUUigiZnJvbTogQCgjKWJ6ZXJvLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01TVFIo
IiROZXRCU0Q6IGJ6ZXJvLlMsdiAxLjggMjAwMy8wOC8wNyAxNjo0MjoxNiBhZ2MgRXhwICQiKQor
I2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJ6ZXJvLlMsdiAxLjEwIDIwMDkvMTIvMTQgMDI6NTM6
NTIgbWF0dCBFeHAgJCIpCisjZW5kaWYKICNlbmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50
ICovCiAKKyNkZWZpbmUgX0xPQ09SRQkJLyogWFhYIG5vdCByZWFsbHksIGp1c3QgYXNzZW1ibHkt
Y29kZSBzb3VyY2UgKi8KKyNpbmNsdWRlIDxtYWNoaW5lL2VuZGlhbi5oPgogCiAjaWZkZWYgX19B
QklDQUxMU19fCiAJLmFiaWNhbGxzCkBAIC00OSwzNCArNTQsNDggQEAKIAogTEVBRihiemVybykK
IAkuc2V0CW5vcmVvcmRlcgotCWJsdAlhMSwgMTIsIHNtYWxsY2xyCSMgc21hbGwgYW1vdW50IHRv
IGNsZWFyPwotCXN1YnUJYTMsIHplcm8sIGEwCQkjIGNvbXB1dGUgIyBieXRlcyB0byB3b3JkIGFs
aWduIGFkZHJlc3MKLQlhbmQJYTMsIGEzLCAzCi0JYmVxCWEzLCB6ZXJvLCAxZgkJIyBza2lwIGlm
IHdvcmQgYWxpZ25lZAotCXN1YnUJYTEsIGExLCBhMwkJIyBzdWJ0cmFjdCBmcm9tIHJlbWFpbmlu
ZyBjb3VudAotI2lmZGVmIF9fTUlQU0VCX18KLQlzd2wJemVybywgMChhMCkJCSMgY2xlYXIgMSwg
Miwgb3IgMyBieXRlcyB0byBhbGlnbgotI2Vsc2UKLQlzd3IJemVybywgMChhMCkJCSMgY2xlYXIg
MSwgMiwgb3IgMyBieXRlcyB0byBhbGlnbgorCWJsdAkJYTEsIDMqU1pSRUcsIHNtYWxsY2xyICMg
c21hbGwgYW1vdW50IHRvIGNsZWFyPworCVBUUl9TVUJVCWEzLCB6ZXJvLCBhMAkjIGNvbXB1dGUg
IyBieXRlcyB0byB3b3JkIGFsaWduIGFkZHJlc3MKKwlhbmQJCWEzLCBhMywgU1pSRUctMQorCWJl
cQkJYTMsIHplcm8sIDFmCSMgc2tpcCBpZiB3b3JkIGFsaWduZWQKKyNpZiBTWlJFRyA9PSA0CisJ
UFRSX1NVQlUJYTEsIGExLCBhMwkjIHN1YnRyYWN0IGZyb20gcmVtYWluaW5nIGNvdW50CisJU1dI
SQkJemVybywgMChhMCkJIyBjbGVhciAxLCAyLCBvciAzIGJ5dGVzIHRvIGFsaWduCisJUFRSX0FE
RFUJYTAsIGEwLCBhMwogI2VuZGlmCi0JYWRkdQlhMCwgYTAsIGEzCisjaWYgU1pSRUcgPT0gOAor
CVBUUl9TVUJVCWExLCBhMSwgYTMJIyBzdWJ0cmFjdCBmcm9tIHJlbWFpbmluZyBjb3VudAorCVBU
Ul9BRERVCWEwLCBhMCwgYTMJIyBhbGlnbiBkc3QgdG8gbmV4dCB3b3JkCisJc2xsCQlhMywgYTMs
IDMJIyBiaXRzIHRvIGJ5dGVzCisJbGkJCWEyLCAtMQkJIyBtYWtlIGEgbWFzaworI2lmIF9CWVRF
X09SREVSID09IF9CSUdfRU5ESUFOCisJUkVHX1NSTFYJYTIsIGEyLCBhMwkjIHdlIHdhbnQgdG8g
a2VlcCB0aGUgTVNCIGJ5dGVzCisjZW5kaWYKKyNpZiBfQllURV9PUkRFUiA9PSBfTElUVExFX0VO
RElBTgorCVJFR19TTExWCWEyLCBhMiwgYTMJIyB3ZSB3YW50IHRvIGtlZXAgdGhlIExTQiBieXRl
cworI2VuZGlmCisJbm9yCQlhMiwgemVybywgYTIJIyBjb21wbGVtZW50IHRoZSBtYXNrCisJUkVH
X0wJCXYwLCAtU1pSRUcoYTApCSMgbG9hZCB0aGUgd29yZCB0byBwYXJ0aWFsbHkgY2xlYXIKKwlh
bmQJCXYwLCB2MCwgYTIJIyBjbGVhciB0aGUgYnl0ZXMKKwlSRUdfUwkJdjAsIC1TWlJFRyhhMCkJ
IyBzdG9yZSBpdCBiYWNrCisjZW5kaWYKIDE6Ci0JYW5kCXYwLCBhMSwgMwkJIyBjb21wdXRlIG51
bWJlciBvZiB3b3JkcyBsZWZ0Ci0Jc3VidQlhMywgYTEsIHYwCi0JbW92ZQlhMSwgdjAKLQlhZGR1
CWEzLCBhMywgYTAJCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcworCWFuZAkJdjAsIGExLCBTWlJF
Ry0xCSMgY29tcHV0ZSBudW1iZXIgb2Ygd29yZHMgbGVmdAorCVBUUl9TVUJVCWEzLCBhMSwgdjAK
Kwltb3ZlCQlhMSwgdjAKKwlQVFJfQUREVQlhMywgYTMsIGEwCSMgY29tcHV0ZSBlbmRpbmcgYWRk
cmVzcwogMjoKLQlhZGR1CWEwLCBhMCwgNAkJIyBjbGVhciB3b3JkcwotCWJuZQlhMCwgYTMsIDJi
CQkjICAgdW5yb2xsaW5nIGxvb3AgZG9lc250IGhlbHAKLQlzdwl6ZXJvLCAtNChhMCkJCSMgICBz
aW5jZSB3ZSBhcmUgbGltaXRlZCBieSBtZW1vcnkgc3BlZWQKKwlQVFJfQUREVQlhMCwgYTAsIFNa
UkVHCSMgY2xlYXIgd29yZHMKKwlibmUJCWEwLCBhMywgMmIJIyAgdW5yb2xsaW5nIGxvb3AgZG9l
c250IGhlbHAKKwlSRUdfUwkJemVybywgLVNaUkVHKGEwKSAjIHNpbmNlIHdlIGFyZSBsaW1pdGVk
IGJ5IG1lbW9yeSBzcGVlZAogc21hbGxjbHI6Ci0JYmxlCWExLCB6ZXJvLCAyZgotCWFkZHUJYTMs
IGExLCBhMAkJIyBjb21wdXRlIGVuZGluZyBhZGRyZXNzCisJYmxlCQlhMSwgemVybywgMmYKKwlQ
VFJfQUREVQlhMywgYTEsIGEwCSMgY29tcHV0ZSBlbmRpbmcgYWRkcmVzcwogMToKLQlhZGR1CWEw
LCBhMCwgMQkJIyBjbGVhciBieXRlcwotCWJuZQlhMCwgYTMsIDFiCi0Jc2IJemVybywgLTEoYTAp
CisJUFRSX0FERFUJYTAsIGEwLCAxCSMgY2xlYXIgYnl0ZXMKKwlibmUJCWEwLCBhMywgMWIKKwlz
YgkJemVybywgLTEoYTApCiAyOgotCWoJcmEKKwlqCQlyYQogCW5vcAogRU5EKGJ6ZXJvKQpJbmRl
eDogbGliL2xpYmMvbWlwcy9zdHJpbmcvaW5kZXguUwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9t
aXBzL3N0cmluZy9pbmRleC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0
cmluZy9pbmRleC5TCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNCArNDYsMTQgQEAKIAogTEVBRihp
bmRleCkKIDE6Ci0JbGJ1CWEyLCAwKGEwKQkJIyBnZXQgYSBieXRlCi0JYWRkdQlhMCwgYTAsIDEK
LQliZXEJYTIsIGExLCBmbmQKLQlibmUJYTIsIHplcm8sIDFiCisJbGJ1CQlhMiwgMChhMCkJCSMg
Z2V0IGEgYnl0ZQorCVBUUl9BRERVCWEwLCBhMCwgMQorCWJlcQkJYTIsIGExLCBmbmQKKwlibmUJ
CWEyLCB6ZXJvLCAxYgogbm90Zm5kOgotCW1vdmUJdjAsIHplcm8KLQlqCXJhCisJbW92ZQkJdjAs
IHplcm8KKwlqCQlyYQogZm5kOgotCXN1YnUJdjAsIGEwLCAxCi0JaglyYQorCVBUUl9TVUJVCXYw
LCBhMCwgMQorCWoJCXJhCiBFTkQoaW5kZXgpCkluZGV4OiBsaWIvbGliYy9taXBzL3N0cmluZy9z
dHJsZW4uUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9zdHJsZW4uUwkocmV2
aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9zdHJpbmcvc3RybGVuLlMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiBzdHJsZW4uUyx2IDEuMSAyMDA1LzEy
LzIwIDE5OjI4OjUwIGNocmlzdG9zIEV4cCAkCSovCisvKgkkTmV0QlNEOiBzdHJsZW4uUyx2IDEu
MiAyMDA5LzEyLzE0IDAwOjM5OjAwIG1hdHQgRXhwICQJKi8KIAogLyotCiAgKiBDb3B5cmlnaHQg
KGMpIDE5OTEsIDE5OTMKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2lmIGRlZmluZWQoTElCQ19TQ0NT
KSAmJiAhZGVmaW5lZChsaW50KQogCUFTTVNUUigiZnJvbTogQCgjKXN0cmxlbi5zCTguMSAoQmVy
a2VsZXkpIDYvNC85MyIpCi0JQVNNU1RSKCIkTmV0QlNEOiBzdHJsZW4uUyx2IDEuMSAyMDA1LzEy
LzIwIDE5OjI4OjUwIGNocmlzdG9zIEV4cCAkIikKKwlBU01TVFIoIiROZXRCU0Q6IHN0cmxlbi5T
LHYgMS4yIDIwMDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19T
Q0NTIGFuZCBub3QgbGludCAqLwogCiAjaWZkZWYgX19BQklDQUxMU19fCkBAIC00NSwxMSArNDUs
MTEgQEAKICNlbmRpZgogCiBMRUFGKHN0cmxlbikKLQlhZGR1CXYxLCBhMCwgMQorCVBUUl9BRERV
CXYxLCBhMCwgMQogMToKLQlsYgl2MCwgMChhMCkJCSMgZ2V0IGJ5dGUgZnJvbSBzdHJpbmcKLQlh
ZGR1CWEwLCBhMCwgMQkJIyBpbmNyZW1lbnQgcG9pbnRlcgotCWJuZQl2MCwgemVybywgMWIJCSMg
Y29udGludWUgaWYgbm90IGVuZAotCXN1YnUJdjAsIGEwLCB2MQkJIyBjb21wdXRlIGxlbmd0aCAt
IDEgZm9yICdcMCcgY2hhcgotCWoJcmEKKwlsYgkJdjAsIDAoYTApCSMgZ2V0IGJ5dGUgZnJvbSBz
dHJpbmcKKwlQVFJfQUREVQlhMCwgYTAsIDEJIyBpbmNyZW1lbnQgcG9pbnRlcgorCWJuZQkJdjAs
IHplcm8sIDFiCSMgY29udGludWUgaWYgbm90IGVuZAorCVBUUl9TVUJVIAl2MCwgYTAsIHYxCSMg
Y29tcHV0ZSBsZW5ndGggLSAxIGZvciAnXDAnIGNoYXIKKwlqCQlyYQogRU5EKHN0cmxlbikKSW5k
ZXg6IGxpYi9saWJjL21pcHMvc3RyaW5nL3N0cmNtcC5TCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj
L21pcHMvc3RyaW5nL3N0cmNtcC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBz
L3N0cmluZy9zdHJjbXAuUwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRC
U0Q6IHN0cmNtcC5TLHYgMS4xIDIwMDUvMTIvMjAgMTk6Mjg6NTAgY2hyaXN0b3MgRXhwICQJKi8K
Ky8qCSROZXRCU0Q6IHN0cmNtcC5TLHYgMS4yIDIwMDkvMTIvMTQgMDA6Mzk6MDAgbWF0dCBFeHAg
JAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5MSwgMTk5MwpAQCAtMzcsNyArMzcsNyBA
QAogCiAjaWYgZGVmaW5lZChMSUJDX1NDQ1MpICYmICFkZWZpbmVkKGxpbnQpCiAJQVNNU1RSKCJm
cm9tOiBAKCMpc3RyY21wLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01TVFIoIiROZXRC
U0Q6IHN0cmNtcC5TLHYgMS4xIDIwMDUvMTIvMjAgMTk6Mjg6NTAgY2hyaXN0b3MgRXhwICQiKQor
CUFTTVNUUigiJE5ldEJTRDogc3RyY21wLlMsdiAxLjIgMjAwOS8xMi8xNCAwMDozOTowMCBtYXR0
IEV4cCAkIikKICNlbmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50ICovCiAKICNpZmRlZiBf
X0FCSUNBTExTX18KQEAgLTU1LDkgKzU1LDkgQEAKIAlibmUJdDAsIHQxLCBOb3RFcQogCWxidQl0
MCwgMShhMCkJCSMgdW5yb2xsIGxvb3AKIAlsYnUJdDEsIDEoYTEpCi0JYWRkCWEwLCBhMCwgMgor
CVBUUl9BREQJYTAsIGEwLCAyCiAJYmVxCXQwLCB6ZXJvLCBMZXNzT3JFcQkjIGVuZCBvZiBmaXJz
dCBzdHJpbmc/Ci0JYWRkCWExLCBhMSwgMgorCVBUUl9BREQJYTEsIGExLCAyCiAJYmVxCXQwLCB0
MSwgMWIKIE5vdEVxOgogCXN1YnUJdjAsIHQwLCB0MQpJbmRleDogbGliL2xpYmMvbWlwcy9zdHJp
bmcvcmluZGV4LlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zdHJpbmcvcmluZGV4LlMJ
KHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3RyaW5nL3JpbmRleC5TCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAKICNlbmRpZgogCiBMRUFGKHJpbmRleCkKLQlt
b3ZlCXYwLCB6ZXJvCQkjIGRlZmF1bHQgaWYgbm90IGZvdW5kCisJbW92ZQkJdjAsIHplcm8JCSMg
ZGVmYXVsdCBpZiBub3QgZm91bmQKIDE6Ci0JbGJ1CWEzLCAwKGEwKQkJIyBnZXQgYSBieXRlCi0J
YWRkdQlhMCwgYTAsIDEKLQlibmUJYTMsIGExLCAyZgotCXN1YnUJdjAsIGEwLCAxCQkjIHNhdmUg
YWRkcmVzcyBvZiBsYXN0IG1hdGNoCisJbGJ1CQlhMywgMChhMCkJCSMgZ2V0IGEgYnl0ZQorCVBU
Ul9BRERVCWEwLCBhMCwgMQorCWJuZQkJYTMsIGExLCAyZgorCVBUUl9TVUJVCXYwLCBhMCwgMQkJ
IyBzYXZlIGFkZHJlc3Mgb2YgbGFzdCBtYXRjaAogMjoKLQlibmUJYTMsIHplcm8sIDFiCQkjIGNv
bnRpbnVlIGlmIG5vdCBlbmQKLQlqCXJhCisJYm5lCQlhMywgemVybywgMWIJCSMgY29udGludWUg
aWYgbm90IGVuZAorCWoJCXJhCiBFTkQocmluZGV4KQpJbmRleDogbGliL2xpYmMvbWlwcy9zdHJp
bmcvYmNvcHkuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N0cmluZy9iY29weS5TCShy
ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N0cmluZy9iY29weS5TCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLyoJJE5ldEJTRDogYmNvcHkuUyx2IDEuMiAyMDA1LzEy
LzI3IDExOjIzOjUzIHRzdXRzdWkgRXhwICQJKi8KKy8qCSROZXRCU0Q6IGJjb3B5LlMsdiAxLjMg
MjAwOS8xMi8xNCAwMDozOTowMCBtYXR0IEV4cCAkCSovCiAKIC8qCiAgKiBNYWNoIE9wZXJhdGlu
ZyBTeXN0ZW0KQEAgLTM4LDkgKzM4LDE1IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc20uaD4KIF9f
RkJTRElEKCIkRnJlZUJTRCQiKTsKIAorI2RlZmluZSBfTE9DT1JFCQkvKiBYWFggbm90IHJlYWxs
eSwganVzdCBhc3NlbWJseS1jb2RlIHNvdXJjZSAqLworI2luY2x1ZGUgPG1hY2hpbmUvZW5kaWFu
Lmg+CisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKKyNpZiAwCiAJ
QVNNU1RSKCJmcm9tOiBAKCMpbWlwc19iY29weS5zCTIuMiBDTVUgMTgvMDYvOTMiKQotCUFTTVNU
UigiJE5ldEJTRDogYmNvcHkuUyx2IDEuMiAyMDA1LzEyLzI3IDExOjIzOjUzIHRzdXRzdWkgRXhw
ICQiKQorI2Vsc2UKKwlBU01TVFIoIiROZXRCU0Q6IGJjb3B5LlMsdiAxLjMgMjAwOS8xMi8xNCAw
MDozOTowMCBtYXR0IEV4cCAkIikKKyNlbmRpZgogI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90
IGxpbnQgKi8KIAogI2lmZGVmIF9fQUJJQ0FMTFNfXwpAQCAtOTksNzEgKzEwNSw3MiBAQAogCSAq
CWNvcHkgaXMgYWxpZ25hYmxlLiAgZWcgaWYgc3JjIGFuZCBkZXN0IGFyZSBib3RoCiAJICoJb24g
YSBoYWxmd29yZCBib3VuZGFyeS4KIAkgKi8KLQlhbmRpCXQxLERTVFJFRywzCQkjIGdldCBsYXN0
IDMgYml0cyBvZiBkZXN0Ci0JYm5lCXQxLHplcm8sM2YKLQlhbmRpCXQwLFNSQ1JFRywzCQkjIGdl
dCBsYXN0IDMgYml0cyBvZiBzcmMKLQlibmUJdDAsemVybyw1ZgorCWFuZGkJCXQxLERTVFJFRywo
U1pSRUctMSkJIyBnZXQgbGFzdCBiaXRzIG9mIGRlc3QKKwlibmUJCXQxLHplcm8sM2YJCSMgZGVz
dCB1bmFsaWduZWQKKwlhbmRpCQl0MCxTUkNSRUcsKFNaUkVHLTEpCSMgZ2V0IGxhc3QgYml0cyBv
ZiBzcmMKKwlibmUJCXQwLHplcm8sNWYKIAogCS8qCi0JICoJRm9yd2FyZCBhbGlnbmVkLT5hbGln
bmVkIGNvcHksIDgqNCBieXRlcyBhdCBhIHRpbWUuCisJICoJRm9yd2FyZCBhbGlnbmVkLT5hbGln
bmVkIGNvcHksIDggd29yZHMgYXQgYSB0aW1lLgogCSAqLwotCWxpCUFULC0zMgotCWFuZAl0MCxT
SVpFUkVHLEFUCQkjIGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZSBvZiAzMiAqLwotCWFkZHUJ
YTMsU1JDUkVHLHQwCQkjIHJ1biBmYXN0IGxvb3AgdXAgdG8gdGhpcyBhZGRyZXNzCi0Jc2x0dQlB
VCxTUkNSRUcsYTMJCSMgYW55IHdvcmsgdG8gZG8/Ci0JYmVxCUFULHplcm8sMmYKLQlzdWJ1CVNJ
WkVSRUcsdDAKKzk4OgorCWxpCQlBVCwtKFNaUkVHKjgpCisJYW5kCQl0MCxTSVpFUkVHLEFUCQkj
IGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZXMKKwlQVFJfQUREVQlhMyxTUkNSRUcsdDAJCSMg
cnVuIGZhc3QgbG9vcCB1cCB0byB0aGlzIGFkZHIKKwlzbHR1CQlBVCxTUkNSRUcsYTMJCSMgYW55
IHdvcmsgdG8gZG8/CisJYmVxCQlBVCx6ZXJvLDJmCisJUFRSX1NVQlUJU0laRVJFRyx0MAogCiAJ
LyoKIAkgKglsb29wIGJvZHkKIAkgKi8KIDE6CSMgY3AKLQlsdwl0MywwKFNSQ1JFRykKLQlsdwl2
MSw0KFNSQ1JFRykKLQlsdwl0MCw4KFNSQ1JFRykKLQlsdwl0MSwxMihTUkNSRUcpCi0JYWRkdQlT
UkNSRUcsMzIKLQlzdwl0MywwKERTVFJFRykKLQlzdwl2MSw0KERTVFJFRykKLQlzdwl0MCw4KERT
VFJFRykKLQlzdwl0MSwxMihEU1RSRUcpCi0JbHcJdDEsLTQoU1JDUkVHKQotCWx3CXQwLC04KFNS
Q1JFRykKLQlsdwl2MSwtMTIoU1JDUkVHKQotCWx3CXQzLC0xNihTUkNSRUcpCi0JYWRkdQlEU1RS
RUcsMzIKLQlzdwl0MSwtNChEU1RSRUcpCi0Jc3cJdDAsLTgoRFNUUkVHKQotCXN3CXYxLC0xMihE
U1RSRUcpCi0JYm5lCVNSQ1JFRyxhMywxYgotCXN3CXQzLC0xNihEU1RSRUcpCisJUkVHX0wJCXQz
LCgwKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXYxLCgxKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJ
CXQwLCgyKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQxLCgzKlNaUkVHKShTUkNSRUcpCisJUFRS
X0FERFUJU1JDUkVHLFNaUkVHKjgKKwlSRUdfUwkJdDMsKDAqU1pSRUcpKERTVFJFRykKKwlSRUdf
UwkJdjEsKDEqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdDAsKDIqU1pSRUcpKERTVFJFRykKKwlS
RUdfUwkJdDEsKDMqU1pSRUcpKERTVFJFRykKKwlSRUdfTAkJdDEsKC0xKlNaUkVHKShTUkNSRUcp
CisJUkVHX0wJCXQwLCgtMipTWlJFRykoU1JDUkVHKQorCVJFR19MCQl2MSwoLTMqU1pSRUcpKFNS
Q1JFRykKKwlSRUdfTAkJdDMsKC00KlNaUkVHKShTUkNSRUcpCisJUFRSX0FERFUJRFNUUkVHLFNa
UkVHKjgKKwlSRUdfUwkJdDEsKC0xKlNaUkVHKShEU1RSRUcpCisJUkVHX1MJCXQwLCgtMipTWlJF
RykoRFNUUkVHKQorCVJFR19TCQl2MSwoLTMqU1pSRUcpKERTVFJFRykKKwlibmUJCVNSQ1JFRyxh
MywxYgorCVJFR19TCQl0MywoLTQqU1pSRUcpKERTVFJFRykKIAogCS8qCiAJICoJQ29weSBhIHdv
cmQgYXQgYSB0aW1lLCBubyBsb29wIHVucm9sbGluZy4KIAkgKi8KIDI6CSMgd29yZGNvcHkKLQlh
bmRpCXQyLFNJWkVSRUcsMwkJIyBnZXQgYnl0ZSBjb3VudCAvIDQKLQlzdWJ1CXQyLFNJWkVSRUcs
dDIJCSMgdDIgPSBudW1iZXIgb2Ygd29yZHMgdG8gY29weSAqIDQKLQliZXEJdDIsemVybywzZgot
CWFkZHUJdDAsU1JDUkVHLHQyCQkjIHN0b3AgYXQgdDAKLQlzdWJ1CVNJWkVSRUcsU0laRVJFRyx0
MgorCWFuZGkJCXQyLFNJWkVSRUcsKFNaUkVHLTEpCSMgZ2V0IGJ5dGUgY291bnQgLyBTWlJFRwor
CVBUUl9TVUJVCXQyLFNJWkVSRUcsdDIJCSMgdDIgPSB3b3JkcyB0byBjb3B5ICogU1pSRUcKKwli
ZXEJCXQyLHplcm8sM2YKKwlQVFJfQUREVQl0MCxTUkNSRUcsdDIJCSMgc3RvcCBhdCB0MAorCVBU
Ul9TVUJVCVNJWkVSRUcsU0laRVJFRyx0MgogMToKLQlsdwl0MywwKFNSQ1JFRykKLQlhZGR1CVNS
Q1JFRyw0Ci0Jc3cJdDMsMChEU1RSRUcpCi0JYm5lCVNSQ1JFRyx0MCwxYgotCWFkZHUJRFNUUkVH
LDQKKwlSRUdfTAkJdDMsMChTUkNSRUcpCisJUFRSX0FERFUJU1JDUkVHLFNaUkVHCisJUkVHX1MJ
CXQzLDAoRFNUUkVHKQorCWJuZQkJU1JDUkVHLHQwLDFiCisJUFRSX0FERFUJRFNUUkVHLFNaUkVH
CiAKIDM6CSMgYnl0ZWNvcHkKLQliZXEJU0laRVJFRyx6ZXJvLDRmCSMgbm90aGluZyBsZWZ0IHRv
IGRvPworCWJlcQkJU0laRVJFRyx6ZXJvLDRmCQkjIG5vdGhpbmcgbGVmdCB0byBkbz8KIAlub3AK
IDE6Ci0JbGIJdDMsMChTUkNSRUcpCi0JYWRkdQlTUkNSRUcsMQotCXNiCXQzLDAoRFNUUkVHKQot
CXN1YnUJU0laRVJFRywxCi0JYmd0eglTSVpFUkVHLDFiCi0JYWRkdQlEU1RSRUcsMQorCWxiCQl0
MywwKFNSQ1JFRykKKwlQVFJfQUREVQlTUkNSRUcsMQorCXNiCQl0MywwKERTVFJFRykKKwlQVFJf
U1VCVQlTSVpFUkVHLDEKKwliZ3R6CQlTSVpFUkVHLDFiCisJUFRSX0FERFUJRFNUUkVHLDEKIAog
NDoJIyBjb3B5ZG9uZQogCWoJcmEKQEAgLTE3Myw5NiArMTgwLDkxIEBACiAJICoJQ29weSBmcm9t
IHVuYWxpZ25lZCBzb3VyY2UgdG8gYWxpZ25lZCBkZXN0LgogCSAqLwogNToJIyBkZXN0YWxpZ25l
ZAotCWFuZGkJdDAsU0laRVJFRywzCQkjIHQwID0gYnl0ZWNvdW50IG1vZCA0Ci0Jc3VidQlhMyxT
SVpFUkVHLHQwCQkjIG51bWJlciBvZiB3b3JkcyB0byB0cmFuc2ZlcgotCWJlcQlhMyx6ZXJvLDNi
CisJYW5kaQkJdDAsU0laRVJFRywoU1pSRUctMSkJIyB0MCA9IGJ5dGVjb3VudCBtb2QgU1pSRUcK
KwlQVFJfU1VCVQlhMyxTSVpFUkVHLHQwCQkjIG51bWJlciBvZiB3b3JkcyB0byB0cmFuc2Zlcgor
CWJlcQkJYTMsemVybywzYgogCW5vcAotCW1vdmUJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8g
ZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKLQlhZGR1CWEzLFNSQ1JFRyxhMwkJIyBzdG9wIHBvaW50CisJ
bW92ZQkJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKKwlQ
VFJfQUREVQlhMyxTUkNSRUcsYTMJCSMgc3RvcCBwb2ludAogCiAxOgotI2lmZGVmIF9fTUlQU0VC
X18KLQlsd2wJdDMsMChTUkNSRUcpCi0JbHdyCXQzLDMoU1JDUkVHKQotI2Vsc2UKLQlsd3IJdDMs
MChTUkNSRUcpCi0JbHdsCXQzLDMoU1JDUkVHKQotI2VuZGlmCi0JYWRkaQlTUkNSRUcsNAotCXN3
CXQzLDAoRFNUUkVHKQotCWJuZQlTUkNSRUcsYTMsMWIKLQlhZGRpCURTVFJFRyw0CisJUkVHX0xI
SQkJdDMsMChTUkNSRUcpCisJUkVHX0xMTwkJdDMsU1pSRUctMShTUkNSRUcpCisJUFRSX0FEREkJ
U1JDUkVHLFNaUkVHCisJUkVHX1MJCXQzLDAoRFNUUkVHKQorCWJuZQkJU1JDUkVHLGEzLDFiCisJ
UFRSX0FEREkJRFNUUkVHLFNaUkVHCiAKLQlqCTNiCisJYgkJM2IKIAlub3AKIAogNjoJIyBiYWNr
Y29weSAtLSBiYXNlZCBvbiBhYm92ZQotCWFkZHUJU1JDUkVHLFNJWkVSRUcKLQlhZGR1CURTVFJF
RyxTSVpFUkVHCi0JYW5kaQl0MSxEU1RSRUcsMwkJIyBnZXQgbGFzdCAzIGJpdHMgb2YgZGVzdAot
CWJuZQl0MSx6ZXJvLDNmCi0JYW5kaQl0MCxTUkNSRUcsMwkJIyBnZXQgbGFzdCAzIGJpdHMgb2Yg
c3JjCi0JYm5lCXQwLHplcm8sNWYKKwlQVFJfQUREVQlTUkNSRUcsU0laRVJFRworCVBUUl9BRERV
CURTVFJFRyxTSVpFUkVHCisJYW5kaQkJdDEsRFNUUkVHLFNaUkVHLTEJIyBnZXQgbGFzdCAzIGJp
dHMgb2YgZGVzdAorCWJuZQkJdDEsemVybywzZgorCWFuZGkJCXQwLFNSQ1JFRyxTWlJFRy0xCSMg
Z2V0IGxhc3QgMyBiaXRzIG9mIHNyYworCWJuZQkJdDAsemVybyw1ZgogCiAJLyoKIAkgKglGb3J3
YXJkIGFsaWduZWQtPmFsaWduZWQgY29weSwgOCo0IGJ5dGVzIGF0IGEgdGltZS4KIAkgKi8KLQls
aQlBVCwtMzIKLQlhbmQJdDAsU0laRVJFRyxBVAkJIyBjb3VudCB0cnVuY2F0ZWQgdG8gbXVsdGlw
bGUgb2YgMzIKLQliZXEJdDAsemVybywyZgkJIyBhbnkgd29yayB0byBkbz8KLQlzdWJ1CVNJWkVS
RUcsdDAKLQlzdWJ1CWEzLFNSQ1JFRyx0MAorCWxpCQlBVCwoLTgqU1pSRUcpCisJYW5kCQl0MCxT
SVpFUkVHLEFUCQkjIGNvdW50IHRydW5jYXRlZCB0byBtdWx0aXBsZSBvZiAzMgorCWJlcQkJdDAs
emVybywyZgkJIyBhbnkgd29yayB0byBkbz8KKwlQVFJfU1VCVQlTSVpFUkVHLHQwCisJUFRSX1NV
QlUJYTMsU1JDUkVHLHQwCiAKIAkvKgogCSAqCWxvb3AgYm9keQogCSAqLwogMToJIyBjcAotCWx3
CXQzLC0xNihTUkNSRUcpCi0JbHcJdjEsLTEyKFNSQ1JFRykKLQlsdwl0MCwtOChTUkNSRUcpCi0J
bHcJdDEsLTQoU1JDUkVHKQotCXN1YnUJU1JDUkVHLDMyCi0Jc3cJdDMsLTE2KERTVFJFRykKLQlz
dwl2MSwtMTIoRFNUUkVHKQotCXN3CXQwLC04KERTVFJFRykKLQlzdwl0MSwtNChEU1RSRUcpCi0J
bHcJdDEsMTIoU1JDUkVHKQotCWx3CXQwLDgoU1JDUkVHKQotCWx3CXYxLDQoU1JDUkVHKQotCWx3
CXQzLDAoU1JDUkVHKQotCXN1YnUJRFNUUkVHLDMyCi0Jc3cJdDEsMTIoRFNUUkVHKQotCXN3CXQw
LDgoRFNUUkVHKQotCXN3CXYxLDQoRFNUUkVHKQotCWJuZQlTUkNSRUcsYTMsMWIKLQlzdwl0Myww
KERTVFJFRykKKwlSRUdfTAkJdDMsKC00KlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXYxLCgtMypT
WlJFRykoU1JDUkVHKQorCVJFR19MCQl0MCwoLTIqU1pSRUcpKFNSQ1JFRykKKwlSRUdfTAkJdDEs
KC0xKlNaUkVHKShTUkNSRUcpCisJUFRSX1NVQlUJU1JDUkVHLDgqU1pSRUcKKwlSRUdfUwkJdDMs
KC00KlNaUkVHKShEU1RSRUcpCisJUkVHX1MJCXYxLCgtMypTWlJFRykoRFNUUkVHKQorCVJFR19T
CQl0MCwoLTIqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdDEsKC0xKlNaUkVHKShEU1RSRUcpCisJ
UkVHX0wJCXQxLCgzKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQwLCgyKlNaUkVHKShTUkNSRUcp
CisJUkVHX0wJCXYxLCgxKlNaUkVHKShTUkNSRUcpCisJUkVHX0wJCXQzLCgwKlNaUkVHKShTUkNS
RUcpCisJUFRSX1NVQlUJRFNUUkVHLDgqU1pSRUcKKwlSRUdfUwkJdDEsKDMqU1pSRUcpKERTVFJF
RykKKwlSRUdfUwkJdDAsKDIqU1pSRUcpKERTVFJFRykKKwlSRUdfUwkJdjEsKDEqU1pSRUcpKERT
VFJFRykKKwlibmUJCVNSQ1JFRyxhMywxYgorCVJFR19TCQl0MywoMCpTWlJFRykoRFNUUkVHKQog
CiAJLyoKIAkgKglDb3B5IGEgd29yZCBhdCBhIHRpbWUsIG5vIGxvb3AgdW5yb2xsaW5nLgogCSAq
LwogMjoJIyB3b3JkY29weQotCWFuZGkJdDIsU0laRVJFRywzCQkjIGdldCBieXRlIGNvdW50IC8g
NAotCXN1YnUJdDIsU0laRVJFRyx0MgkJIyB0MiA9IG51bWJlciBvZiB3b3JkcyB0byBjb3B5ICog
NAotCWJlcQl0Mix6ZXJvLDNmCi0Jc3VidQl0MCxTUkNSRUcsdDIJCSMgc3RvcCBhdCB0MAotCXN1
YnUJU0laRVJFRyxTSVpFUkVHLHQyCisJYW5kaQkJdDIsU0laRVJFRyxTWlJFRy0xCSMgZ2V0IGJ5
dGUgY291bnQgLyA0CisJUFRSX1NVQlUJdDIsU0laRVJFRyx0MgkJIyB0MiA9IG51bWJlciBvZiB3
b3JkcyB0byBjb3B5CisJYmVxCQl0Mix6ZXJvLDNmCisJUFRSX1NVQlUJdDAsU1JDUkVHLHQyCQkj
IHN0b3AgYXQgdDAKKwlQVFJfU1VCVQlTSVpFUkVHLFNJWkVSRUcsdDIKIDE6Ci0JbHcJdDMsLTQo
U1JDUkVHKQotCXN1YnUJU1JDUkVHLDQKLQlzdwl0MywtNChEU1RSRUcpCi0JYm5lCVNSQ1JFRyx0
MCwxYgotCXN1YnUJRFNUUkVHLDQKKwlSRUdfTAkJdDMsLVNaUkVHKFNSQ1JFRykKKwlQVFJfU1VC
VQlTUkNSRUcsU1pSRUcKKwlSRUdfUwkJdDMsLVNaUkVHKERTVFJFRykKKwlibmUJCVNSQ1JFRyx0
MCwxYgorCVBUUl9TVUJVCURTVFJFRyxTWlJFRwogCiAzOgkjIGJ5dGVjb3B5Ci0JYmVxCVNJWkVS
RUcsemVybyw0ZgkJIyBub3RoaW5nIGxlZnQgdG8gZG8/CisJYmVxCQlTSVpFUkVHLHplcm8sNGYJ
CSMgbm90aGluZyBsZWZ0IHRvIGRvPwogCW5vcAogMToKLQlsYgl0MywtMShTUkNSRUcpCi0Jc3Vi
dQlTUkNSRUcsMQotCXNiCXQzLC0xKERTVFJFRykKLQlzdWJ1CVNJWkVSRUcsMQotCWJndHoJU0la
RVJFRywxYgotCXN1YnUJRFNUUkVHLDEKKwlsYgkJdDMsLTEoU1JDUkVHKQorCVBUUl9TVUJVCVNS
Q1JFRywxCisJc2IJCXQzLC0xKERTVFJFRykKKwlQVFJfU1VCVQlTSVpFUkVHLDEKKwliZ3R6CQlT
SVpFUkVHLDFiCisJUFRSX1NVQlUJRFNUUkVHLDEKIAogNDoJIyBjb3B5ZG9uZQogCWoJcmEKQEAg
LTI3MiwyNyArMjc0LDIyIEBACiAJICoJQ29weSBmcm9tIHVuYWxpZ25lZCBzb3VyY2UgdG8gYWxp
Z25lZCBkZXN0LgogCSAqLwogNToJIyBkZXN0YWxpZ25lZAotCWFuZGkJdDAsU0laRVJFRywzCQkj
IHQwID0gYnl0ZWNvdW50IG1vZCA0Ci0Jc3VidQlhMyxTSVpFUkVHLHQwCQkjIG51bWJlciBvZiB3
b3JkcyB0byB0cmFuc2ZlcgotCWJlcQlhMyx6ZXJvLDNiCisJYW5kaQkJdDAsU0laRVJFRyxTWlJF
Ry0xCSMgdDAgPSBieXRlY291bnQgbW9kIDQKKwlQVFJfU1VCVQlhMyxTSVpFUkVHLHQwCQkjIG51
bWJlciBvZiB3b3JkcyB0byB0cmFuc2ZlcgorCWJlcQkJYTMsemVybywzYgogCW5vcAotCW1vdmUJ
U0laRVJFRyx0MAkJIyB0aGlzIG1hbnkgdG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKLQlzdWJ1CWEz
LFNSQ1JFRyxhMwkJIyBzdG9wIHBvaW50CisJbW92ZQkJU0laRVJFRyx0MAkJIyB0aGlzIG1hbnkg
dG8gZG8gYWZ0ZXIgd2UgYXJlIGRvbmUKKwlQVFJfU1VCVQlhMyxTUkNSRUcsYTMJCSMgc3RvcCBw
b2ludAogCiAxOgotI2lmZGVmIF9fTUlQU0VCX18KLQlsd2wJdDMsLTQoU1JDUkVHKQotCWx3cgl0
MywtMShTUkNSRUcpCi0jZWxzZQotCWx3cgl0MywtNChTUkNSRUcpCi0JbHdsCXQzLC0xKFNSQ1JF
RykKLSNlbmRpZgotCXN1YnUJU1JDUkVHLDQKLQlzdwl0MywtNChEU1RSRUcpCi0JYm5lCVNSQ1JF
RyxhMywxYgotCXN1YnUJRFNUUkVHLDQKKwlSRUdfTEhJCQl0MywtU1pSRUcoU1JDUkVHKQorCVJF
R19MTE8JCXQzLC0xKFNSQ1JFRykKKwlQVFJfU1VCVQlTUkNSRUcsU1pSRUcKKwlSRUdfUwkJdDMs
LVNaUkVHKERTVFJFRykKKwlibmUJCVNSQ1JFRyxhMywxYgorCVBUUl9TVUJVCURTVFJFRyxTWlJF
RwogCi0JagkzYgorCWIJCTNiCiAJbm9wCiAKIAkuc2V0CXJlb3JkZXIKSW5kZXg6IGxpYi9saWJj
L21pcHMvZ2VuL19zZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9fc2V0
am1wLlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvZ2VuL19zZXRqbXAuUwko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IF9zZXRqbXAuUyx2IDEu
MjAgMjAwNS8xMC8wNyAxNzoxNjo0MCB0c3V0c3VpIEV4cCAkCSovCisvKgkkTmV0QlNEOiBfc2V0
am1wLlMsdiAxLjIwLjM0LjUgMjAxMC8wMi8wMyAyMzo0Njo0NyBtYXR0IEV4cCAkCSovCiAKIC8q
LQogICogQ29weXJpZ2h0IChjKSAxOTkxLCAxOTkzCkBAIC0zNiwxNSArMzYsMTYgQEAKIF9fRkJT
RElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxtYWNoaW5lL3JlZ251bS5oPgogCisjaW5jbHVk
ZSAiU1lTLmgiCisKICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLQlB
U01TVFIoImZyb206IEAoIylfc2V0am1wLnMJOC4xIChCZXJrZWxleSkgNi80LzkzIikKLQlBU01T
VFIoIiROZXRCU0Q6IF9zZXRqbXAuUyx2IDEuMjAgMjAwNS8xMC8wNyAxNzoxNjo0MCB0c3V0c3Vp
IEV4cCAkIikKKyNpZiAwCisJUkNTSUQoImZyb206IEAoIylfc2V0am1wLnMJOC4xIChCZXJrZWxl
eSkgNi80LzkzIikKKyNlbHNlCisJUkNTSUQoIiROZXRCU0Q6IF9zZXRqbXAuUyx2IDEuMjAuMzQu
NSAyMDEwLzAyLzAzIDIzOjQ2OjQ3IG1hdHQgRXhwICQiKQorI2VuZGlmCiAjZW5kaWYgLyogTElC
Q19TQ0NTIGFuZCBub3QgbGludCAqLwogCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLmFiaWNhbGxz
Ci0jZW5kaWYKLQogLyoKICAqIEMgbGlicmFyeSAtLSBfc2V0am1wLCBfbG9uZ2ptcAogICoKQEAg
LTU2LDYyICs1Nyw3MCBAQAogICogVGhlIHByZXZpb3VzIHNpZ25hbCBzdGF0ZSBpcyBOT1QgcmVz
dG9yZWQuCiAgKi8KIAorCS5zZXQJbm9yZW9yZGVyCiAKIExFQUYoX3NldGptcCkKLSNpZmRlZiBf
X0FCSUNBTExTX18gCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0Jc3VidQlzcCwgc3As
IENBTExGUkFNRV9TSVoJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQotCS5jcHJlc3RvcmUgMTYKKwlS
RUdfUFJPTE9HVUUKKwlSRUdfTEkJdjAsIF9KQl9NQUdJQ19fU0VUSk1QCisJUkVHX1MJdjAsIChf
SkJfTUFHSUMgICogU1pSRUcpKGEwKQorCVJFR19TCXJhLCAoX0pCX1JFR19SQSAqIFNaUkVHKShh
MCkKKwlSRUdfUwlzMCwgKF9KQl9SRUdfUzAgKiBTWlJFRykoYTApCisJUkVHX1MJczEsIChfSkJf
UkVHX1MxICogU1pSRUcpKGEwKQorCVJFR19TCXMyLCAoX0pCX1JFR19TMiAqIFNaUkVHKShhMCkK
KwlSRUdfUwlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRykoYTApCisJUkVHX1MJczQsIChfSkJfUkVH
X1M0ICogU1pSRUcpKGEwKQorCVJFR19TCXM1LCAoX0pCX1JFR19TNSAqIFNaUkVHKShhMCkKKwlS
RUdfUwlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTApCisJUkVHX1MJczcsIChfSkJfUkVHX1M3
ICogU1pSRUcpKGEwKQorCVJFR19TCXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShhMCkKKyNpZiBk
ZWZpbmVkKF9fbWlwc19uMzIpIHx8IGRlZmluZWQoX19taXBzX242NCkKKwlSRUdfUwlncCwgKF9K
Ql9SRUdfR1AgKiBTWlJFRykoYTApCSMgbmV3YWJpIGdwIGlzIGNhbGxlZS1zYXZlZAogI2VuZGlm
Ci0JbGkJdjAsIF9KQl9NQUdJQ19fU0VUSk1QCi0Jc3cJdjAsIChfSkJfTUFHSUMgICogU1pSRUcp
KGEwKQotCXN3CXJhLCAoX0pCX1JFR19SQSAqIFNaUkVHKShhMCkKLQlzdwlzMCwgKF9KQl9SRUdf
UzAgKiBTWlJFRykoYTApCi0Jc3cJczEsIChfSkJfUkVHX1MxICogU1pSRUcpKGEwKQotCXN3CXMy
LCAoX0pCX1JFR19TMiAqIFNaUkVHKShhMCkKLQlzdwlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRyko
YTApCi0Jc3cJczQsIChfSkJfUkVHX1M0ICogU1pSRUcpKGEwKQotCXN3CXM1LCAoX0pCX1JFR19T
NSAqIFNaUkVHKShhMCkKLQlzdwlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTApCi0Jc3cJczcs
IChfSkJfUkVHX1M3ICogU1pSRUcpKGEwKQotCXN3CXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShh
MCkKLSNpZmRlZiBfX0FCSUNBTExTX18KLQlhZGR1CXNwLCBzcCwgQ0FMTEZSQU1FX1NJWgkjIHVu
LWFsbG9jYXRlIHRoZSBzdGFjayBmcmFtZQotI2VuZGlmCQotCXN3CXNwLCAoX0pCX1JFR19TUCAq
IFNaUkVHKShhMCkKKwlSRUdfUwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCisJUkVHX0VQ
SUxPR1VFCisKIAlqCXJhCiAJbW92ZQl2MCwgemVybwogRU5EKF9zZXRqbXApCiAKIExFQUYoX2xv
bmdqbXApCi0jaWZkZWYgX19BQklDQUxMU19fIAotCS5zZXQJbm9yZW9yZGVyCi0JLmNwbG9hZCB0
OQotCXN1YnUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCSMgYWxsb2NhdGUgc3RhY2sgZnJhbWUKLQku
Y3ByZXN0b3JlIDE2Ci0jZW5kaWYgIAotCWx3CXYwLCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkK
LQlsdwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTApCi0JbGkJdDAsIF9KQl9NQUdJQ19fU0VU
Sk1QCi0JYm5lCXYwLCB0MCwgYm90Y2gJCSMganVtcCBpZiBlcnJvcgotCWx3CXMwLCAoX0pCX1JF
R19TMCAqIFNaUkVHKShhMCkKLQlsdwlzMSwgKF9KQl9SRUdfUzEgKiBTWlJFRykoYTApCi0JbHcJ
czIsIChfSkJfUkVHX1MyICogU1pSRUcpKGEwKQotCWx3CXMzLCAoX0pCX1JFR19TMyAqIFNaUkVH
KShhMCkKLQlsdwlzNCwgKF9KQl9SRUdfUzQgKiBTWlJFRykoYTApCi0JbHcJczUsIChfSkJfUkVH
X1M1ICogU1pSRUcpKGEwKQotCWx3CXM2LCAoX0pCX1JFR19TNiAqIFNaUkVHKShhMCkKLQlsdwlz
NywgKF9KQl9SRUdfUzcgKiBTWlJFRykoYTApCi0JbHcJc3AsIChfSkJfUkVHX1NQICogU1pSRUcp
KGEwKQotCWx3CXM4LCAoX0pCX1JFR19TOCAqIFNaUkVHKShhMCkKKwlQSUNfUFJPTE9HVUUoX2xv
bmdqbXApCisJUFRSX1NVQlUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCisJU0FWRV9HUChDQUxMRlJB
TUVfR1ApCiAKKwlSRUdfUFJPTE9HVUUKKwlSRUdfTAkJdjAsIChfSkJfTUFHSUMgICogU1pSRUcp
KGEwKQkjIGdldCBtYWdpYyBudW1iZXIKKwlSRUdfTAkJcmEsIChfSkJfUkVHX1JBICogU1pSRUcp
KGEwKQorCVJFR19MSQkJdDAsIF9KQl9NQUdJQ19fU0VUSk1QCisJYm5lCQl2MCwgdDAsIGJvdGNo
CQkjIGp1bXAgaWYgZXJyb3IKKwlQVFJfQUREVQlzcCwgc3AsIENBTExGUkFNRV9TSVoJIyBkb2Vz
IG5vdCBtYXR0ZXIsIHNhbml0eQorCVJFR19MCQlzMCwgKF9KQl9SRUdfUzAgKiBTWlJFRykoYTAp
CisJUkVHX0wJCXMxLCAoX0pCX1JFR19TMSAqIFNaUkVHKShhMCkKKwlSRUdfTAkJczIsIChfSkJf
UkVHX1MyICogU1pSRUcpKGEwKQorCVJFR19MCQlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRykoYTAp
CisJUkVHX0wJCXM0LCAoX0pCX1JFR19TNCAqIFNaUkVHKShhMCkKKwlSRUdfTAkJczUsIChfSkJf
UkVHX1M1ICogU1pSRUcpKGEwKQorCVJFR19MCQlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTAp
CisJUkVHX0wJCXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkKKyNpZiBkZWZpbmVkKF9fbWlw
c19uMzIpIHx8IGRlZmluZWQoX19taXBzX242NCkKKwlSRUdfTAkJZ3AsIChfSkJfUkVHX0dQICog
U1pSRUcpKGEwKQorI2VuZGlmCisJUkVHX0wJCXNwLCAoX0pCX1JFR19TUCAqIFNaUkVHKShhMCkK
KwlSRUdfTAkJczgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorCisJUkVHX0VQSUxPR1VFCisJ
bW92ZQl2MCwgYTEJCQkjIGdldCByZXR1cm4gdmFsdWUgaW4gMXN0IGFyZwogCWoJcmEKLQltb3Zl
CXYwLCBhMQorCW5vcAogCiBib3RjaDoKLQlqYWwJX0NfTEFCRUwobG9uZ2ptcGVycm9yKQorCS8q
CisJICogV2Uga25vdyB3ZSBhcmVuJ3QgcmV0dXJuaW5nIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQg
cmVzdG9yaW5nCisJICogb3VyIGNhbGxlcidzIEdQLgorCSAqLworCVBUUl9MQQl0OSwgX0NfTEFC
RUwobG9uZ2ptcGVycm9yKQorCWphbHIJdDkKIAlub3AKLQlqYWwJX0NfTEFCRUwoYWJvcnQpCi0J
bm9wCisKKwlQSUNfVEFJTENBTEwoYWJvcnQpCiBFTkQoX2xvbmdqbXApCkluZGV4OiBsaWIvbGli
Yy9taXBzL2dlbi9zZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9zZXRq
bXAuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlwcy9nZW4vc2V0am1wLlMJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAKIAlBU01TVFIoIiROZXRCU0Q6IHNldGptcC5T
LHYgMS4xNyAyMDA1LzA5LzE3IDExOjQ5OjM5IHRzdXRzdWkgRXhwICQiKQogI2VuZGlmIC8qIExJ
QkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KIAorI2luY2x1ZGUgIlNZUy5oIgorCiAjaWZkZWYgX19B
QklDQUxMU19fCiAJLmFiaWNhbGxzCiAjZW5kaWYKQEAgLTYxLDEwMCArNjMsMTAyIEBACiAKIE5F
U1RFRChzZXRqbXAsIFNFVEpNUF9GUkFNRV9TSVpFLCByYSkKIAkubWFzawkweDgwMDAwMDAwLCAo
Q0FMTEZSQU1FX1JBIC0gQ0FMTEZSQU1FX1NJWikKLQkuc2V0CW5vcmVvcmRlcgotI2lmZGVmIF9f
QUJJQ0FMTFNfXwotCS5jcGxvYWQJdDkKLSNlbmRpZgotCXN1YnUJc3AsIHNwLCBTRVRKTVBfRlJB
TUVfU0laRQkjIGFsbG9jYXRlIHN0YWNrIGZyYW1lCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLmNw
cmVzdG9yZSAxNgotI2VuZGlmCi0Jc3cJcmEsIENBTExGUkFNRV9SQShzcCkJCSMgc2F2ZSBSQQot
CXN3CWEwLCBDQUxMRlJBTUVfU0laKHNwKQkJIyBzdG9yZSBlbnYKKwlTRVRVUF9HUAorCVBUUl9T
VUJVIHNwLCBzcCwgU0VUSk1QX0ZSQU1FX1NJWkUJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQorCVNB
VkVfR1AoQ0FMTEZSQU1FX0dQKQorCVNFVFVQX0dQNjQoQ0FMTEZSQU1FX0dQLCBzZXRqbXApCiAK
KwlSRUdfUwlyYSwgQ0FMTEZSQU1FX1JBKHNwKQkJIyBzYXZlIFJBCisJUkVHX1MJYTAsIENBTExG
UkFNRV9TSVooc3ApCQkjIHN0b3JlIGVudgorCiAJLyogR2V0IHRoZSBzaWduYWwgbWFzay4gKi8K
LQlhZGR1CWEyLCBhMCwgX0pCX1NJR01BU0sgKiBTWlJFRwkjICZvZW52CisJUFRSX0FERFUgYTIs
IGEwLCBfSkJfU0lHTUFTSyAqIFNaUkVHCSMgJm9lbnYKIAlsaQlhMCwgMQkJCQkjIFNJR19TRVRC
TE9DSwogCW1vdmUJYTEsIHplcm8JCQkjICZlbnYgPT0gMAotCWxhCXQ5LCBfQ19MQUJFTChzaWdw
cm9jbWFzaykJIyBnZXQgY3VycmVudCBzaWduYWwgbWFzawotCWphbAl0OQotCW5vcAorCVBUUl9M
QQl0OSwgX0NfTEFCRUwoc2lncHJvY21hc2spCSMgZ2V0IGN1cnJlbnQgc2lnbmFsIG1hc2sKKwlq
YWxyCXQ5CiAKLQlsdwlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJCSMgcmVzdG9yZSBlbnYgcG9pbnRl
cgotCWx3CXJhLCBDQUxMRlJBTUVfUkEoc3ApCQkjIHJlc3RvcmUgUkEKLQlhZGR1CXNwLCBzcCwg
U0VUSk1QX0ZSQU1FX1NJWkUJIyBwb3Agc3RhY2sgZnJhbWUKKwlSRVNUT1JFX0dQNjQKKwlSRUdf
TAlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJCSMgcmVzdG9yZSBlbnYgcG9pbnRlcgorCVJFR19MCXJh
LCBDQUxMRlJBTUVfUkEoc3ApCQkjIHJlc3RvcmUgUkEKKwlQVFJfQUREVSBzcCwgc3AsIFNFVEpN
UF9GUkFNRV9TSVpFCSMgcG9wIHN0YWNrIGZyYW1lCiAKLQlsaQl2MCwgX0pCX01BR0lDX1NFVEpN
UAotCXN3CXYwLCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkKLQlzdwlyYSwgKF9KQl9SRUdfUkEg
KiBTWlJFRykoYTApCi0Jc3cJczAsIChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQotCXN3CXMxLCAo
X0pCX1JFR19TMSAqIFNaUkVHKShhMCkKLQlzdwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTAp
Ci0Jc3cJczMsIChfSkJfUkVHX1MzICogU1pSRUcpKGEwKQotCXN3CXM0LCAoX0pCX1JFR19TNCAq
IFNaUkVHKShhMCkKLQlzdwlzNSwgKF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCi0Jc3cJczYsIChf
SkJfUkVHX1M2ICogU1pSRUcpKGEwKQotCXN3CXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkK
LQlzdwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCi0Jc3cJczgsIChfSkJfUkVHX1M4ICog
U1pSRUcpKGEwKQorCVJFR19MSQl2MCwgX0pCX01BR0lDX1NFVEpNUAorCVJFR19TCXYwLCAoX0pC
X01BR0lDICAqIFNaUkVHKShhMCkKKwlSRUdfUwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTAp
CisJUkVHX1MJczAsIChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQorCVJFR19TCXMxLCAoX0pCX1JF
R19TMSAqIFNaUkVHKShhMCkKKwlSRUdfUwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTApCisJ
UkVHX1MJczMsIChfSkJfUkVHX1MzICogU1pSRUcpKGEwKQorCVJFR19TCXM0LCAoX0pCX1JFR19T
NCAqIFNaUkVHKShhMCkKKwlSRUdfUwlzNSwgKF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCisJUkVH
X1MJczYsIChfSkJfUkVHX1M2ICogU1pSRUcpKGEwKQorCVJFR19TCXM3LCAoX0pCX1JFR19TNyAq
IFNaUkVHKShhMCkKKwlSRUdfUwlzcCwgKF9KQl9SRUdfU1AgKiBTWlJFRykoYTApCisJUkVHX1MJ
czgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorI2lmIGRlZmluZWQoX19taXBzX24zMikgfHwg
ZGVmaW5lZChfX21pcHNfbjY0KQorCVJFR19TCWdwLCAoX0pCX1JFR19HUCAqIFNaUkVHKShhMCkK
KyNlbmRpZgogCiAJbW92ZQl2MCwgemVybwotCWoJcmEKKwlqcglyYQogRU5EKHNldGptcCkKIAog
I2RlZmluZSBMT05HSk1QX0ZSQU1FX1NJWkUJKENBTExGUkFNRV9TSVogKyAoU1pSRUcgKiAyKSkK
IAogTkVTVEVEKGxvbmdqbXAsIExPTkdKTVBfRlJBTUVfU0laRSwgcmEpCiAJLm1hc2sJMHg4MDAw
MDAwMCwgKENBTExGUkFNRV9SQSAtIENBTExGUkFNRV9TSVopCi0JLnNldAlub3Jlb3JkZXIKLSNp
ZmRlZiBfX0FCSUNBTExTX18KLQkuY3Bsb2FkCXQ5Ci0jZW5kaWYKLQlzdWJ1CXNwLCBzcCwgTE9O
R0pNUF9GUkFNRV9TSVpFCSMgYWxsb2NhdGUgc3RhY2sgZnJhbWUKLSNpZmRlZiBfX0FCSUNBTExT
X18KLQkuY3ByZXN0b3JlIDE2Ci0jZW5kaWYKLQlzdwlyYSwgQ0FMTEZSQU1FX1JBKHNwKQkJIyBz
YXZlIFJBCi0JbHcJdjAsIChfSkJfTUFHSUMgICogU1pSRUcpKGEwKQotCWxpCXQwLCBfSkJfTUFH
SUNfU0VUSk1QCisJUElDX1BST0xPR1VFKGxvbmdqbXApCisJUFRSX1NVQlUgc3AsIHNwLCBMT05H
Sk1QX0ZSQU1FX1NJWkUJIyBhbGxvY2F0ZSBzdGFjayBmcmFtZQorCVNBVkVfR1AoQ0FMTEZSQU1F
X0dQKQorCisJUkVHX1MJcmEsIENBTExGUkFNRV9SQShzcCkJCSMgc2F2ZSBSQQorCVJFR19MCXYw
LCAoX0pCX01BR0lDICAqIFNaUkVHKShhMCkKKwlSRUdfTEkJdDAsIF9KQl9NQUdJQ19TRVRKTVAK
IAlibmUJdjAsIHQwLCBib3RjaAkJIyBqdW1wIGlmIGVycm9yCiAJbm9wCiAKLQlzdwlhMCwgQ0FM
TEZSQU1FX1NJWihzcCkJCSMgc2F2ZSBlbnYKLQlzdwlhMSwgKENBTExGUkFNRV9TSVogKyBTWlJF
Rykoc3ApCSMgc2F2ZSByZXR1cm4gdmFsdWUKKwlSRUdfUwlhMCwgQ0FMTEZSQU1FX1NJWihzcCkJ
CSMgc2F2ZSBlbnYKKwlSRUdfUwlhMSwgKENBTExGUkFNRV9TSVogKyBTWlJFRykoc3ApCSMgc2F2
ZSByZXR1cm4gdmFsdWUKIAogCSMgc2V0IHNpZ21hc2sKLQlhZGR1CWExLCBhMCwgX0pCX1NJR01B
U0sgKiBTWlJFRwkjICZzZXQKKwlQVFJfQUREVSBhMSwgYTAsIF9KQl9TSUdNQVNLICogU1pSRUcJ
IyAmc2V0CiAJbW92ZQlhMiwgemVybwkJCSMgJm9zZXQgPT0gTlVMTAogCWxpCWEwLCAzCQkJCSMg
U0lHX1NFVE1BU0sKLQlsYQl0OSxfQ19MQUJFTChzaWdwcm9jbWFzaykJIyBzZXQgY3VycmVudCBz
aWduYWwgbWFzaworCVBUUl9MQQl0OSxfQ19MQUJFTChzaWdwcm9jbWFzaykJIyBzZXQgY3VycmVu
dCBzaWduYWwgbWFzawogCWphbAl0OQogCW5vcAogCi0JbHcJYTAsIENBTExGUkFNRV9TSVooc3Ap
CQkjIHJlc3RvcmUgZW52Ci0JbHcJYTEsIChDQUxMRlJBTUVfU0laICsgU1pSRUcpKHNwKQkjIHJl
c3RvcmUgcmV0dXJuIHZhbHVlCisJUkVHX0wJYTAsIENBTExGUkFNRV9TSVooc3ApCQkjIHJlc3Rv
cmUgZW52CisJUkVHX0wJYTEsIChDQUxMRlJBTUVfU0laICsgU1pSRUcpKHNwKQkjIHJlc3RvcmUg
cmV0dXJuIHZhbHVlCiAKLQlsdwlyYSwgKF9KQl9SRUdfUkEgKiBTWlJFRykoYTApCi0JbHcJczAs
IChfSkJfUkVHX1MwICogU1pSRUcpKGEwKQotCWx3CXMxLCAoX0pCX1JFR19TMSAqIFNaUkVHKShh
MCkKLQlsdwlzMiwgKF9KQl9SRUdfUzIgKiBTWlJFRykoYTApCi0JbHcJczMsIChfSkJfUkVHX1Mz
ICogU1pSRUcpKGEwKQotCWx3CXM0LCAoX0pCX1JFR19TNCAqIFNaUkVHKShhMCkKLQlsdwlzNSwg
KF9KQl9SRUdfUzUgKiBTWlJFRykoYTApCi0JbHcJczYsIChfSkJfUkVHX1M2ICogU1pSRUcpKGEw
KQotCWx3CXM3LCAoX0pCX1JFR19TNyAqIFNaUkVHKShhMCkKLQlsdwlzcCwgKF9KQl9SRUdfU1Ag
KiBTWlJFRykoYTApCi0JbHcJczgsIChfSkJfUkVHX1M4ICogU1pSRUcpKGEwKQorCVJFR19MCXJh
LCAoX0pCX1JFR19SQSAqIFNaUkVHKShhMCkKKwlSRUdfTAlzMCwgKF9KQl9SRUdfUzAgKiBTWlJF
RykoYTApCisJUkVHX0wJczEsIChfSkJfUkVHX1MxICogU1pSRUcpKGEwKQorCVJFR19MCXMyLCAo
X0pCX1JFR19TMiAqIFNaUkVHKShhMCkKKwlSRUdfTAlzMywgKF9KQl9SRUdfUzMgKiBTWlJFRyko
YTApCisJUkVHX0wJczQsIChfSkJfUkVHX1M0ICogU1pSRUcpKGEwKQorCVJFR19MCXM1LCAoX0pC
X1JFR19TNSAqIFNaUkVHKShhMCkKKwlSRUdfTAlzNiwgKF9KQl9SRUdfUzYgKiBTWlJFRykoYTAp
CisJUkVHX0wJczcsIChfSkJfUkVHX1M3ICogU1pSRUcpKGEwKQorCVJFR19MCXNwLCAoX0pCX1JF
R19TUCAqIFNaUkVHKShhMCkKKwlSRUdfTAlzOCwgKF9KQl9SRUdfUzggKiBTWlJFRykoYTApCisj
aWYgZGVmaW5lZChfX21pcHNfbjMyKSB8fCBkZWZpbmVkKF9fbWlwc19uNjQpCisJUkVHX0wJZ3As
IChfSkJfUkVHX0dQICogU1pSRUcpKGEwKQorI2VuZGlmCisKIAltb3ZlCXYwLCBhMQogCWoJcmEK
IAlub3AKIAogYm90Y2g6Ci0JbGEJdDksIF9DX0xBQkVMKGxvbmdqbXBlcnJvcikKLQlqYWwJdDkK
KwkvKgorCSAqIFdlIGtub3cgd2UgYXJlbid0IHJldHVybmluZyBzbyB3ZSBkb24ndCBjYXJlIGFi
b3V0IHJlc3RvcmluZworCSAqIG91ciBjYWxsZXIncyBHUC4KKwkgKi8KKwlQVFJfTEEJdDksIF9D
X0xBQkVMKGxvbmdqbXBlcnJvcikKKwlqYWxyCXQ5CiAJbm9wCiAKLQlsYQl0OSwgX0NfTEFCRUwo
YWJvcnQpCi0JamFsCXQ5Ci0Jbm9wCisJUElDX1RBSUxDQUxMKGFib3J0KQogRU5EKGxvbmdqbXAp
CkluZGV4OiBsaWIvbGliYy9taXBzL2dlbi9zaWdzZXRqbXAuUwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIv
bGliYy9taXBzL2dlbi9zaWdzZXRqbXAuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMv
bWlwcy9nZW4vc2lnc2V0am1wLlMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKIAlB
U01TVFIoIiROZXRCU0Q6IHNpZ3NldGptcC5TLHYgMS44IDIwMDUvMDkvMTcgMTE6NDk6MzkgdHN1
dHN1aSBFeHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCisjaW5j
bHVkZSAiU1lTLmgiCisKICNpZmRlZiBfX0FCSUNBTExTX18KIAkuYWJpY2FsbHMKICNlbmRpZgpA
QCAtNTcsMzAgKzU5LDE5IEBACiAgKi8KIAogTEVBRihzaWdzZXRqbXApCi0jaWZkZWYgX19BQklD
QUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0jZW5k
aWYKKwlQSUNfUFJPTE9HVUUoc2lnc2V0am1wKQorCiAJYm5lCWExLCAweDAsIDFmCQkJIyBkbyBz
YXZpbmcgb2Ygc2lnbmFsIG1hc2s/Ci0JbGEJdDksIF9zZXRqbXAKLQlqciB0OQorCVBJQ19UQUlM
Q0FMTChfc2V0am1wKQogCi0xOglsYQl0OSwgc2V0am1wCi0JanIgdDkKKzE6CVBJQ19UQUlMQ0FM
TChzZXRqbXApCiBFTkQoc2lnc2V0am1wKQogCiBMRUFGKHNpZ2xvbmdqbXApCi0jaWZkZWYgX19B
QklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0j
ZW5kaWYKLQlsdwl0MCwgKF9KQl9NQUdJQyAgKiBTWlJFRykoYTApCi0JbGkJdDEsIF9KQl9NQUdJ
Q19fU0VUSk1QCisJUElDX1BST0xPR1VFKHNpZ2xvbmdqbXApCisJUkVHX0wJdDAsIChfSkJfTUFH
SUMgICogU1pSRUcpKGEwKQorCVJFR19MSQl0MSwgX0pCX01BR0lDX19TRVRKTVAKIAlibmUJdDAs
IHQxLCAxZgkJCSMgc2V0am1wIG9yIF9zZXRqbXAgbWFnaWM/Ci0JbGEJdDksIF9sb25nam1wCi0J
anIJdDkKLTE6CWxhCXQ5LCBsb25nam1wCi0JanIJdDkKKwlQSUNfVEFJTENBTEwoX2xvbmdqbXAp
CisxOglQSUNfVEFJTENBTEwobG9uZ2ptcCkKIEVORChzaWdsb25nam1wKQpJbmRleDogbGliL2xp
YmMvbWlwcy9zeXMvYnJrLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvYnJrLlMJ
KHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3lzL2Jyay5TCSh3b3JraW5nIGNv
cHkpCkBAIC00OSwyNSArNDksMjMgQEAKIF9DX0xBQkVMKG1pbmJyayk6CiAJLndvcmQJX0NfTEFC
RUwoX2VuZCkKIAorCS50ZXh0CiBMRUFGKF9fc3lzX2JyaykKIAlXRUFLX0FMSUFTKGJyaywgX19z
eXNfYnJrKQogCVdFQUtfQUxJQVMoX2JyaywgX19zeXNfYnJrKQotI2lmZGVmIF9fQUJJQ0FMTFNf
XwotCS5zZXQJbm9yZW9yZGVyCi0JLmNwbG9hZAl0OQotCS5zZXQJcmVvcmRlcgotI2VuZGlmCi0J
bHcJdjAsIF9DX0xBQkVMKG1pbmJyaykKKwlQSUNfUFJPTE9HVUUoX19zeXNfYnJrKQorCVBUUl9M
QQl2MCwgX0NfTEFCRUwobWluYnJrKQorCVBUUl9MCXYwLCAwKHYwKQogCWJnZXUJYTAsIHYwLCAx
ZgogCW1vdmUJYTAsIHYwCQkjIGRvbnQgYWxsb3cgYnJlYWsgPCBtaW5icmsKIDE6CiAJbGkJdjAs
IFNZU19icmVhawogCXN5c2NhbGwKIAlibmUJYTMsIHplcm8sIDJmCi0Jc3cJYTAsIF9DX0xBQkVM
KF9fY3VyYnJrKQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX1MJYTAsIDAo
dDApCiAJbW92ZQl2MCwgemVybwotCWoJcmEKKwlQSUNfUkVUVVJOKCkKIDI6Ci0JbGEJdDksIF9D
X0xBQkVMKF9fY2Vycm9yKQotCWpyCXQ5CisJUElDX1RBSUxDQUxMKF9fY2Vycm9yKQogRU5EKF9f
c3lzX2JyaykKSW5kZXg6IGxpYi9saWJjL21pcHMvc3lzL3B0cmFjZS5TCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGxpYi9saWJjL21pcHMvc3lzL3B0cmFjZS5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGli
Yy9taXBzL3N5cy9wdHJhY2UuUwkod29ya2luZyBjb3B5KQpAQCAtNDEsMzIgKzQxLDMxIEBACiAJ
QVNNU1RSKCIkTmV0QlNEOiBwdHJhY2UuUyx2IDEuOSAyMDAzLzA4LzA3IDE2OjQyOjE3IGFnYyBF
eHAgJCIpCiAjZW5kaWYgLyogTElCQ19TQ0NTIGFuZCBub3QgbGludCAqLwogCi1MRUFGKHB0cmFj
ZSkKLQkuZnJhbWUJc3AsIDQwLCByYQotCS5tYXNrCTB4ODAwMDAwMDAsIC04Ci0jaWZkZWYgX19B
QklDQUxMU19fCi0JLnNldCAgICBub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0JLnNldCAgICByZW9y
ZGVyCi0jZW5kaWYKLQlzdWJ1CXNwLCBzcCwgNDAKLQlzdwlyYSwgIDMyKHNwKQotI2lmZGVmIF9f
QUJJQ0FMTFNfXwotCS5jcHJlc3RvcmUgMTYKLSNlbmRpZgotCWxhCXQ5LCBfQ19MQUJFTChfX2Vy
cm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCi0JamFscgl0OQotI2lmZGVmIF9fQUJJQ0FM
TFNfXwotCWx3CWdwLCAxNihzcCkKLSNlbmRpZgotCXN3CXplcm8sIDAodjApCi0JbHcJcmEsIDMy
KHNwKQotCWFkZHUJc3AsIHNwLCA0MAotCWxpCXYwLCBTWVNfcHRyYWNlCitORVNURURfTk9QUk9G
SUxFKHB0cmFjZSwgQ0FMTEZSQU1FX1NJWiwgcmEpCisJLm1hc2sJMHg4MDAwMDAwMCwgKENBTExG
UkFNRV9SQSAtIENBTExGUkFNRV9TSVopCisJU0VUVVBfR1AKKwlQVFJfU1VCVQlzcCwgc3AsIENB
TExGUkFNRV9TSVoKKwlTRVRVUF9HUDY0KENBTExGUkFNRV9HUCwgcHRyYWNlKQorCVNBVkVfR1Ao
Q0FMTEZSQU1FX0dQKQorCisJUFRSX1MJCXJhLCBDQUxMRlJBTUVfUkEoc3ApCisKKwlQVFJfTEEJ
CXQ5LCBfQ19MQUJFTChfX2Vycm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCisJamFscgkJ
dDkKKworCVBUUl9MCQlyYSwgQ0FMTEZSQU1FX1JBKHNwKQorCUlOVF9TCQl6ZXJvLCAwKHYwKQkJ
IyB1cGRhdGUgZXJybm8gdmFsdWUKKworCWxpCQl2MCwgU1lTX3B0cmFjZQogCXN5c2NhbGwKLQli
bmUJYTMsIHplcm8sIDFmCi0JaglyYQotMToKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0J
anIJdDkKKworCSMgTG9hZCBfX2NlcnJvcidzIGFkZHJlc3MgdXNpbmcgb3VyIGdwLCB0aGVuIHJl
c3RvcmUgaXQuCisJUFRSX0xBCQl0OSwgX19jZXJyb3IKKwlSRVNUT1JFX0dQNjQKKwlQVFJfQURE
VQlzcCwgc3AsIENBTExGUkFNRV9TSVoKKworCWJuZQkJYTMsIHplcm8sIDFmCisKKwlqCQlyYQor
MToJagkJdDkKIEVORChwdHJhY2UpCkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9mb3JrLlMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvZm9yay5TCShyZXZpc2lvbiAyMDkwNDApCisr
KyBsaWIvbGliYy9taXBzL3N5cy9mb3JrLlMJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIwICs0NCwx
NCBAQAogTEVBRihfX3N5c19mb3JrKQogCVdFQUtfQUxJQVMoZm9yaywgX19zeXNfZm9yaykKIAlX
RUFLX0FMSUFTKF9mb3JrLCBfX3N5c19mb3JrKQotI2lmZGVmIF9fQUJJQ0FMTFNfXwotCS5zZXQg
ICAgbm9yZW9yZGVyCi0JLmNwbG9hZCB0OQotCS5zZXQgICAgcmVvcmRlcgotI2VuZGlmCi0JZm9y
ayA9IF9fc3lzX2ZvcmsKKwlQSUNfUFJPTE9HVUUoX19zeXNfZm9yaykKIAlsaQl2MCwgU1lTX2Zv
cmsJIyBwaWQgPSBmb3JrKCkKIAlzeXNjYWxsCiAJYm5lCWEzLCB6ZXJvLCAyZgogCWJlcQl2MSwg
emVybywgMWYJIyB2MSA9PSAwIGluIHBhcmVudCwgMSBpbiBjaGlsZAogCW1vdmUJdjAsIHplcm8K
IDE6Ci0JaglyYQorCVBJQ19SRVRVUk4oKQogMjoKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3Ip
Ci0JanIJdDkKKwlQSUNfVEFJTENBTEwoX19jZXJyb3IpCiBFTkQoX19zeXNfZm9yaykKSW5kZXg6
IGxpYi9saWJjL21pcHMvc3lzL3NicmsuUwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL3N5
cy9zYnJrLlMJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvc3lzL3NicmsuUwko
d29ya2luZyBjb3B5KQpAQCAtNTIsMzQgKzUyLDIyIEBACiBMRUFGKF9fc3lzX3NicmspCiAJV0VB
S19BTElBUyhzYnJrLCBfX3N5c19zYnJrKQogCVdFQUtfQUxJQVMoX3NicmssIF9fc3lzX3Nicmsp
Ci0jaWZkZWYgX19BQklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIKLQkuY3Bsb2FkCXQ5Ci0JLnNl
dAlyZW9yZGVyCi0jZW5kaWYKLQlhZGR1CXNwLCBzcCwgLTE2Ci0Jc3cJczAsIDAoc3ApCQkjIFBy
ZXNlcnZlIHMwIHZhbHVlIGluIHN0YWNrCi0JCQkJCSMgaXQgc2hvdWxkIGJlIHRoZSBzYW1lIG9u
IHJldHVybgotCQkJCQkjIFdlIGNhbid0IHVzZSB2MSBhcyB0ZW1wb3JhcnkKLQkJCQkJIyByZWdp
c3RlciBzaW5jZSBzeXNjYWxsIHVzZXMgaXQKLQkJCQkJIyB0byByZXR1cm4gNjQtYml0IHZhbHVl
cwotCWx3CXMwLCBfQ19MQUJFTChfX2N1cmJyaykKLQlsaQl2MCwgU1lTX2JyZWFrCi0JYWRkdQlh
MCwgYTAsIHMwCQkjIGNvbXB1dGUgY3VycmVudCBicmVhaworCVBJQ19QUk9MT0dVRShfX3N5c19z
YnJrKQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX0wJdDAsIDAodDApCisJ
UFRSX0FERFUgYTAsIGEwLCB0MAogCisJbGkJdjAsIFNZU19icmVhawogCXN5c2NhbGwKIAogCWJu
ZQlhMywgemVybywgMWYKIAlub3AKLQltb3ZlCXYwLCBzMAkJCSMgcmV0dXJuIG9sZCB2YWwgb2Yg
Y3VyYnJrIGZyb20gYWJvdmUKLQlsdwlzMCwgMChzcCkKLQlhZGR1CXNwLCBzcCwgMTYKLQlzdwlh
MCwgX0NfTEFCRUwoX19jdXJicmspCSMgc2F2ZSBjdXJyZW50IHZhbCBvZiBjdXJicmsgZnJvbSBh
Ym92ZQorCW1vdmUJdjAsIHQwCQkJIyByZXR1cm4gb2xkIHZhbCBvZiBjdXJicmsgZnJvbSBhYm92
ZQorCVBUUl9MQQl0MCwgX0NfTEFCRUwoX19jdXJicmspCisJUFRSX1MJYTAsIDAodDApCQkjIHNh
dmUgY3VycmVudCB2YWwgb2YgY3VyYnJrIGZyb20gYWJvdmUKKwlQSUNfUkVUVVJOKCkKIAlqCXJh
CiAKIDE6Ci0JbHcJczAsIDAoc3ApCi0JYWRkdQlzcCwgc3AsIDE2Ci0JbGEJdDksIF9DX0xBQkVM
KF9fY2Vycm9yKQotCWpyCXQ5CisJUElDX1RBSUxDQUxMKF9fY2Vycm9yKQogRU5EKF9fc3lzX3Ni
cmspCkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9PdmZvcmsuUwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIv
bGliYy9taXBzL3N5cy9PdmZvcmsuUwkocmV2aXNpb24gMjA5MDQwKQorKysgbGliL2xpYmMvbWlw
cy9zeXMvT3Zmb3JrLlMJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDIxICs0OSwxNiBAQAogICovCiAK
IExFQUYoX19zeXNfdmZvcmspCi0jaWZkZWYgX19BQklDQUxMU19fCi0JLnNldAlub3Jlb3JkZXIK
LQkuY3Bsb2FkCXQ5Ci0JLnNldAlyZW9yZGVyCi0jZW5kaWYKIAlXRUFLX0FMSUFTKHZmb3JrLCBf
X3N5c192Zm9yaykKIAlXRUFLX0FMSUFTKF92Zm9yaywgX19zeXNfdmZvcmspCisJUElDX1BST0xP
R1VFKF9fc3lzX3Zmb3JrKQogCWxpCXYwLCBTWVNfdmZvcmsJCSMgc3lzdGVtIGNhbGwgbnVtYmVy
IGZvciB2Zm9yawogCXN5c2NhbGwKIAliZXEJYTMsIHplcm8sIDFmCQkjIGp1bXAgaWYgbm8gZXJy
b3JzCi0JbGEJdDksIF9fY2Vycm9yCi0JanIJdDkKKwlQSUNfVEFJTENBTEwoX19jZXJyb3IpCiAx
OgogCWJlcQl2MSwgemVybywgMmYJCSMgcGFyZW50IHByb2Nlc3MgPwogCW1vdmUJdjAsIHplcm8J
CSMgcmV0dXJuIHplcm8gaW4gY2hpbGQKIDI6Ci0JaglyYQorCVBJQ19SRVRVUk4oKQogRU5EKF9f
c3lzX3Zmb3JrKQpJbmRleDogbGliL2xpYmMvbWlwcy9zeXMvZXhlY3QuUwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBsaWIvbGliYy9taXBzL3N5cy9leGVjdC5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGli
Yy9taXBzL3N5cy9leGVjdC5TCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEsMTEgQEAKICNl
bmRpZiAvKiBMSUJDX1NDQ1MgYW5kIG5vdCBsaW50ICovCiAKIExFQUYoZXhlY3QpCi0jaWZkZWYg
X19BQklDQUxMU19fCi0JLnNldCAgICBub3Jlb3JkZXIKLQkuY3Bsb2FkIHQ5Ci0JLnNldCAgICBy
ZW9yZGVyCi0jZW5kaWYKKwlQSUNfUFJPTE9HVUUoZXhlY3QpCiAJbGkJdjAsIFNZU19leGVjdmUK
IAlzeXNjYWxsCiAJYm5lCWEzLCB6ZXJvLCAxZgotCWoJcmEKKwlQSUNfUkVUVVJOKCkKIDE6Ci0J
bGEgICAgICB0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0JanIgICAgICB0OQorCVBJQ19UQUlMQ0FM
TChfX2NlcnJvcikKIEVORChleGVjdCkKSW5kZXg6IGxpYi9saWJjL21pcHMvc3lzL2NlcnJvci5T
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGxpYi9saWJjL21pcHMvc3lzL2NlcnJvci5TCShyZXZpc2lvbiAyMDkw
NDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9jZXJyb3IuUwkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDQgQEAKLS8qCSROZXRCU0Q6IGNlcnJvci5TLHYgMS4xMyAyMDAzLzA4LzA3IDE2OjQyOjE3
IGFnYyBFeHAgJAkqLworLyoJJE5ldEJTRDogY2Vycm9yLlMsdiAxLjE0IDIwMDkvMTIvMTQgMDE6
MDc6NDIgbWF0dCBFeHAgJAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5MSwgMTk5MwpA
QCAtMzcsMzUgKzM3LDM2IEBACiAjaW5jbHVkZSAiU1lTLmgiCiAKICNpZiBkZWZpbmVkKExJQkNf
U0NDUykgJiYgIWRlZmluZWQobGludCkKLQlBU01TVFIoImZyb206IEAoIyljZXJyb3Iucwk4LjEg
KEJlcmtlbGV5KSA2LzE2LzkzIikKLQlBU01TVFIoIiROZXRCU0Q6IGNlcnJvci5TLHYgMS4xMyAy
MDAzLzA4LzA3IDE2OjQyOjE3IGFnYyBFeHAgJCIpCisjaWYgMAorCVJDU0lEKCJmcm9tOiBAKCMp
Y2Vycm9yLnMJOC4xIChCZXJrZWxleSkgNi8xNi85MyIpCisjZWxzZQorCVJDU0lEKCIkTmV0QlNE
OiBjZXJyb3IuUyx2IDEuMTQgMjAwOS8xMi8xNCAwMTowNzo0MiBtYXR0IEV4cCAkIikKKyNlbmRp
ZgogI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KIAorCS5nbG9ibAlfQ19MQUJF
TChfX2Vycm9yKQorTkVTVEVEX05PUFJPRklMRShfX2NlcnJvciwgQ0FMTEZSQU1FX1NJWiwgcmEp
CisJLm1hc2sJMHg4MDAwMDAwMCwgKENBTExGUkFNRV9SQSAtIENBTExGUkFNRV9TSVopCisJU0VU
VVBfR1AKKwlQVFJfU1VCVQlzcCwgc3AsIENBTExGUkFNRV9TSVoKKwlTRVRVUF9HUDY0KENBTExG
UkFNRV9HUCwgX19jZXJyb3IpCisJU0FWRV9HUChDQUxMRlJBTUVfR1ApCiAKLQkvKgotCSAqIFRo
ZSBfX2Vycm9yKCkgZnVuY3Rpb24gaXMgdGhyZWFkIGF3YXJlLiBGb3Igbm9uLXRocmVhZGVkCi0J
ICogcHJvZ3JhbXMgYW5kIHRoZSBpbml0aWFsIHRocmVhZGVkIGluIHRocmVhZGVkIHByb2dyYW1z
LAotCSAqIGl0IHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBnbG9iYWwgZXJybm8gdmFyaWFibGUu
Ci0JICovCi0JLmdsb2JsICBfQ19MQUJFTChfX2Vycm9yKQotCS50eXBlICAgX0NfTEFCRUwoX19l
cnJvciksJWZ1bmN0aW9uCisJUFRSX1MJCXJhLCBDQUxMRlJBTUVfUkEoc3ApCisJUkVHX1MJCXYw
LCBDQUxMRlJBTUVfUzAoc3ApCSMgc2F2ZSBlcnJubyB2YWx1ZQogCi1MRUFGKF9fY2Vycm9yKQot
CS5mcmFtZSBzcCwgQ0FMTEZSQU1FX1NJWiwgcmEKLQlQSUNfUFJPTE9HVUUoX19jZXJyb3IsIHQ5
KQotCXN1YnUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCi0JLm1hc2sJMHg4MDAwMDAwMCwgKENBTExG
UkFNRV9SQSAtIENBTExGUkFNRV9TSVopCi0Jc3cJcmEsIENBTExGUkFNRV9SQShzcCkKLQlzdwl2
MCwgMTIoc3ApCQkjIHNhdmUgZXJybm8gdmFsdWUKKwlQVFJfTEEJCXQ5LCBfQ19MQUJFTChfX2Vy
cm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCisJamFscgkJdDkKIAotCWxhCXQ5LCBfQ19M
QUJFTChfX2Vycm9yKQkjIGxvY2F0ZSBhZGRyZXNzIG9mIGVycm5vCi0JamFscgl0OQorCVJFR19M
CQl0MCwgQ0FMTEZSQU1FX1MwKHNwKQorCVBUUl9MCQlyYSwgQ0FMTEZSQU1FX1JBKHNwKQorCUlO
VF9TCQl0MCwgMCh2MCkJCSMgdXBkYXRlIGVycm5vIHZhbHVlCiAKLQlsdwl0MCwgMTIoc3ApCi0J
bHcJcmEsIENBTExGUkFNRV9SQShzcCkKLQlzdwl0MCwgMCh2MCkJCSMgdXBkYXRlIGVycm5vIHZh
bHVlCi0JYWRkaXUJc3AsIHNwLCBDQUxMRlJBTUVfU0laCi0JbGkJdjAsIC0xCi0JbGkJdjEsIC0x
Ci0JaglyYQorCVJFU1RPUkVfR1A2NAorCVBUUl9BRERVCXNwLCBzcCwgQ0FMTEZSQU1FX1NJWgor
CisJbGkJCXYwLCAtMQorCWxpCQl2MSwgLTEKKworCWoJCXJhCiBFTkQoX19jZXJyb3IpCkluZGV4
OiBsaWIvbGliYy9taXBzL3N5cy9waXBlLlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9z
eXMvcGlwZS5TCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9waXBlLlMJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDE5ICs0NCwxNCBAQAogTEVBRihfX3N5c19waXBlKQogCVdF
QUtfQUxJQVMocGlwZSwgX19zeXNfcGlwZSkKIAlXRUFLX0FMSUFTKF9waXBlLCBfX3N5c19waXBl
KQotI2lmZGVmIF9fQUJJQ0FMTFNfXwotCS5zZXQgICAgbm9yZW9yZGVyCi0JLmNwbG9hZCB0OQot
CS5zZXQgICAgcmVvcmRlcgotI2VuZGlmCisJUElDX1BST0xPR1VFKF9fc3lzX3BpcGUpCiAJbGkJ
djAsIFNZU19waXBlCSMgcGlwZShmaWxkZXMpIGludCBmaWxkZXNbMl07CiAJc3lzY2FsbAogCWJu
ZQlhMywgemVybywgMWYKIAlzdwl2MCwgMChhMCkJIyBzdG9yZSB0aGUgdHdvIGZpbGUgZGVzY3Jp
cHRvcnMKIAlzdwl2MSwgNChhMCkKIAltb3ZlCXYwLCB6ZXJvCi0JaglyYQorCVBJQ19SRVRVUk4o
KQogMToKLQlsYQl0OSwgX0NfTEFCRUwoX19jZXJyb3IpCi0JanIJdDkKKwlQSUNfVEFJTENBTEwo
X19jZXJyb3IpCiBFTkQoX19zeXNfcGlwZSkK
--e0cb4e88758397b495048911b0d9
Content-Type: text/x-patch; charset=US-ASCII; name="libc-other.patch"
Content-Disposition: attachment; filename="libc-other.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gagrg8vx1

SW5kZXg6IGxpYi9saWJjL21pcHMvU3ltYm9sLm1hcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9t
aXBzL1N5bWJvbC5tYXAJKHJldmlzaW9uIDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvU3ltYm9s
Lm1hcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTMgKzI0LDkgQEAKIAlzaWdzZXRqbXA7CiAJc2ln
bG9uZ2ptcDsKIAlodG9ubDsKLQlfX2h0b25sOwogCWh0b25zOwotCV9faHRvbnM7CiAJbnRvaGw7
Ci0JX19udG9obDsKIAludG9oczsKLQlfX250b2hzOwogCXZmb3JrOwogCWJyazsKIAljZXJyb3I7
CQkvKiBYWFggLSBTaG91bGQgdGhpcyBiZSAuY2Vycm9yIChzZWUgc3lzL2NlcnJvci5TKT8gKi8K
SW5kZXg6IGxpYi9saWJjL21pcHMvTWFrZWZpbGUuaW5jCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj
L21pcHMvTWFrZWZpbGUuaW5jCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL01h
a2VmaWxlLmluYwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDYgQEAKICMJJE5ldEJTRDogTWFr
ZWZpbGUuaW5jLHYgMS43IDIwMDUvMDkvMTcgMTE6NDk6MzkgdHN1dHN1aSBFeHAgJAogIyAkRnJl
ZUJTRCQKIAotU09GVEZMT0FUX0JJVFM9MzIKLQogQ0ZMQUdTKz0tRFNPRlRGTE9BVAogCiBNRFNS
Q1MrPSBtYWNoZGVwX2xkaXNkLmMKSW5kZXg6IGxpYi9saWJjL21pcHMvZ2VuL01ha2VmaWxlLmlu
Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaWIvbGliYy9taXBzL2dlbi9NYWtlZmlsZS5pbmMJKHJldmlzaW9u
IDIwOTA0MCkKKysrIGxpYi9saWJjL21pcHMvZ2VuL01ha2VmaWxlLmluYwkod29ya2luZyBjb3B5
KQpAQCAtNiw0ICs2LDQgQEAKICMgU1JDUys9CWZsdF9yb3VuZHMuYyBmcGdldG1hc2suYyBmcGdl
dHJvdW5kLmMgZnBnZXRzdGlja3kuYyBmcHNldG1hc2suYyBcCiAjCWZwc2V0cm91bmQuYyBmcHNl
dHN0aWNreS5jCiAKLVNSQ1MrPQlfc2V0X3RwLmMgX3NldGptcC5TIG1ha2Vjb250ZXh0LmMgc2V0
am1wLlMgc2lnbmFsY29udGV4dC5jIHNpZ3NldGptcC5TCitTUkNTKz0JX2N0eF9zdGFydC5TIF9z
ZXRfdHAuYyBfc2V0am1wLlMgbWFrZWNvbnRleHQuYyBzZXRqbXAuUyBzaWduYWxjb250ZXh0LmMg
c2lnc2V0am1wLlMKSW5kZXg6IGxpYi9saWJjL21pcHMvZ2VuL21ha2Vjb250ZXh0LmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gbGliL2xpYmMvbWlwcy9nZW4vbWFrZWNvbnRleHQuYwkocmV2aXNpb24gMjA5MDQw
KQorKysgbGliL2xpYmMvbWlwcy9nZW4vbWFrZWNvbnRleHQuYwkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IG1ha2Vjb250ZXh0LmMsdiAxLjMgMjAwMy8wMS8xOSAw
ODo1MzozNiBtYXR0IEV4cCAkCSovCisvKgkkTmV0QlNEOiBtYWtlY29udGV4dC5jLHYgMS41IDIw
MDkvMTIvMTQgMDE6MDc6NDIgbWF0dCBFeHAgJAkqLwogCiAvKi0KICAqIENvcHlyaWdodCAoYykg
MjAwMSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4KQEAgLTE1LDEzICsxNSw2IEBACiAgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFs
bCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp
cyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2Vt
ZW50OgotICogICAgICAgIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg
YnkgdGhlIE5ldEJTRAotICogICAgICAgIEZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250cmli
dXRvcnMuCi0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRCU0QgRm91bmRhdGlvbiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5E
IENPTlRSSUJVVE9SUwogICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECkBAIC0zOSw0OCArMzIsOTIgQEAK
ICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpZiBkZWZp
bmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLV9fUkNTSUQoIiROZXRCU0Q6IG1ha2Vj
b250ZXh0LmMsdiAxLjMgMjAwMy8wMS8xOSAwODo1MzozNiBtYXR0IEV4cCAkIik7CitfX1JDU0lE
KCIkTmV0QlNEOiBtYWtlY29udGV4dC5jLHYgMS41IDIwMDkvMTIvMTQgMDE6MDc6NDIgbWF0dCBF
eHAgJCIpOwogI2VuZGlmCiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMv
cGFyYW0uaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3JlZ251bS5oPgorCisjaW5jbHVkZSA8c3RkYXJn
Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8
c3RkaW8uaD4KICNpbmNsdWRlIDx1Y29udGV4dC5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgogCitf
X3dlYWtfcmVmZXJlbmNlKF9fbWFrZWNvbnRleHQsIG1ha2Vjb250ZXh0KTsKKwordm9pZCBfY3R4
X2RvbmUodWNvbnRleHRfdCAqKTsKK3ZvaWQgX2N0eF9zdGFydCh2b2lkKTsKKwogdm9pZAotbWFr
ZWNvbnRleHQodWNvbnRleHRfdCAqdWNwLCB2b2lkICgqZnVuYykodm9pZCksIGludCBhcmdjLCAu
Li4pCitfX21ha2Vjb250ZXh0KHVjb250ZXh0X3QgKnVjcCwgdm9pZCAoKmZ1bmMpKHZvaWQpLCBp
bnQgYXJnYywgLi4uKQogewotCS8qIFhYWE1JUFM6IEltcGxlbWVudCBtZSAqLwotI2lmIDAKLQlf
X2dyZWdfdCAqZ3IgPSB1Y3AtPnVjX21jb250ZXh0Ll9fZ3JlZ3M7Ci0JdWludHB0cl90ICpzcDsK
KwltY29udGV4dF90ICptYzsKKwlyZWdpc3Rlcl90ICpzcDsKIAlpbnQgaTsKIAl2YV9saXN0IGFw
OwogCi0Jdm9pZCBfX3Jlc3VtZWNvbnRleHQodm9pZCk7CisJLyoKKwkgKiBYWFgvanVsaQorCSAq
IFdlIG5lZWQgYW4gbWNfbGVuIG9yIG1jX2ZsYWdzIGxpa2Ugb3RoZXIgYXJjaGl0ZWN0dXJlcwor
CSAqIHNvIHRoYXQgd2UgY2FuIG1hcmsgYSBjb250ZXh0IGFzIGludmFsaWQuICBTdG9yZSBpdCBp
bgorCSAqIG1jLT5tY19yZWdzW1pFUk9dIHBlcmhhcHM/CisJICovCisJaWYgKGFyZ2MgPCAwIHx8
IGFyZ2MgPiA2IHx8IHVjcCA9PSBOVUxMIHx8CisJICAgIHVjcC0+dWNfc3RhY2suc3Nfc3AgPT0g
TlVMTCB8fAorCSAgICB1Y3AtPnVjX3N0YWNrLnNzX3NpemUgPCBNSU5TSUdTVEtTWikKKwkJcmV0
dXJuOworCW1jID0gJnVjcC0+dWNfbWNvbnRleHQ7CiAKLQkvKiBMSU5URUQgdWludHB0cl90IGlz
IHNhZmUgKi8KLQlzcCAgPSAodWludHB0cl90ICopCisJc3AgID0gKHJlZ2lzdGVyX3QgKikKIAkg
ICAgKCh1aW50cHRyX3QpdWNwLT51Y19zdGFjay5zc19zcCArIHVjcC0+dWNfc3RhY2suc3Nfc2l6
ZSk7Ci0JLyogTElOVEVEIHVpbnRwdHJfdCBpcyBzYWZlICovCisjaWYgZGVmaW5lZChfX21pcHNf
bzMyKSB8fCBkZWZpbmVkKF9fbWlwc19vNjQpCiAJc3AgLT0gKGFyZ2MgPj0gNCA/IGFyZ2MgOiA0
KTsJLyogTWFrZSByb29tIGZvciA+PTQgYXJndW1lbnRzLiAqLwotCXNwICA9ICh1aW50cHRyX3Qg
KikKLQkgICAgICAoKHVpbnRwdHJfdClzcCAmIH4weDcpOwkvKiBBbGlnbiBvbiBkb3VibGUtd29y
ZCBib3VuZGFyeS4gKi8KKwlzcCAgPSAocmVnaXN0ZXJfdCAqKQorCSAgICAoKHVpbnRwdHJfdClz
cCAmIH4weDcpOwkvKiBBbGlnbiBvbiBkb3VibGUtd29yZCBib3VuZGFyeS4gKi8KKyNlbGlmIGRl
ZmluZWQoX19taXBzX24zMikgfHwgZGVmaW5lZChfX21pcHNfbjY0KQorCXNwIC09IChhcmdjID4g
OCA/IGFyZ2MgLSA4IDogMCk7IC8qIE1ha2Ugcm9vbSBmb3IgPiA4IGFyZ3VtZW50cy4gKi8KKwlz
cCAgPSAocmVnaXN0ZXJfdCAqKQorCSAgICAoKHVpbnRwdHJfdClzcCAmIH4weGYpOwkvKiBBbGln
biBvbiBxdWFkLXdvcmQgYm91bmRhcnkuICovCisjZW5kaWYKIAotCWdyW19SRUdfU1BdICA9IChf
X2dyZWdfdClzcDsKLQlncltfUkVHX1JBXSAgPSAoX19ncmVnX3QpX19yZXN1bWVjb250ZXh0Owot
CWdyW19SRUdfVDldICA9IChfX2dyZWdfdClmdW5jOwkvKiByZXF1aXJlZCBmb3IgLmFiaWNhbGxz
ICovCi0JZ3JbX1JFR19FUENdID0gKF9fZ3JlZ190KWZ1bmM7CisJbWMtPm1jX3JlZ3NbU1BdID0g
KGludHB0cl90KXNwOworCW1jLT5tY19yZWdzW1MwXSA9IChpbnRwdHJfdCl1Y3A7CisJbWMtPm1j
X3JlZ3NbVDldID0gKGludHB0cl90KWZ1bmM7CisJbWMtPm1jX3BjID0gKGludHB0cl90KV9jdHhf
c3RhcnQ7CiAKIAkvKiBDb25zdHJ1Y3QgYXJndW1lbnQgbGlzdC4gKi8KIAl2YV9zdGFydChhcCwg
YXJnYyk7CisjaWYgZGVmaW5lZChfX21pcHNfbzMyKSB8fCBkZWZpbmVkKF9fbWlwc19vNjQpCiAJ
LyogVXAgdG8gdGhlIGZpcnN0IGZvdXIgYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4gJGEwLTMuICov
CiAJZm9yIChpID0gMDsgaSA8IGFyZ2MgJiYgaSA8IDQ7IGkrKykKLQkJLyogTElOVEVEIHVpbnRw
dHJfdCBpcyBzYWZlICovCi0JCWdyW19SRUdfQTAgKyBpXSA9IHZhX2FyZyhhcCwgdWludHB0cl90
KTsKKwkJLyogTElOVEVEIHJlZ2lzdGVyX3QgaXMgc2FmZSAqLworCQltYy0+bWNfcmVnc1tBMCAr
IGldID0gdmFfYXJnKGFwLCByZWdpc3Rlcl90KTsKIAkvKiBQYXNzIHJlbWFpbmluZyBhcmd1bWVu
dHMgb24gdGhlIHN0YWNrIGFib3ZlIHRoZSAkYTAtMyBnYXAuICovCi0JZm9yIChzcCArPSA0OyBp
IDwgYXJnYzsgaSsrKQorCXNwICs9IGk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fbWlwc19uMzIp
IHx8IGRlZmluZWQoX19taXBzX242NCkKKwkvKiBVcCB0byB0aGUgZmlyc3QgOCBhcmd1bWVudHMg
YXJlIHBhc3NlZCBpbiAkYTAtNy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgYXJnYyAmJiBpIDwgODsg
aSsrKQorCQkvKiBMSU5URUQgcmVnaXN0ZXJfdCBpcyBzYWZlICovCisJCW1jLT5tY19yZWdzW0Ew
ICsgaV0gPSB2YV9hcmcoYXAsIHJlZ2lzdGVyX3QpOworCS8qIFBhc3MgcmVtYWluaW5nIGFyZ3Vt
ZW50cyBvbiB0aGUgc3RhY2sgYWJvdmUgdGhlICRhMC0zIGdhcC4gKi8KKyNlbmRpZgorCS8qIFBh
c3MgcmVtYWluaW5nIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgYWJvdmUgdGhlICRhMC0zIGdhcC4g
Ki8KKwlmb3IgKDsgaSA8IGFyZ2M7IGkrKykKIAkJLyogTElOVEVEIHVpbnRwdHJfdCBpcyBzYWZl
ICovCi0JCSpzcCsrID0gdmFfYXJnKGFwLCB1aW50cHRyX3QpOworCQkqc3ArKyA9IHZhX2FyZyhh
cCwgcmVnaXN0ZXJfdCk7CiAJdmFfZW5kKGFwKTsKLSNlbmRpZgogfQorCit2b2lkCitfY3R4X2Rv
bmUodWNvbnRleHRfdCAqdWNwKQoreworCisJaWYgKHVjcC0+dWNfbGluayA9PSBOVUxMKQorCQll
eGl0KDApOworCWVsc2UgeworCQlzZXRjb250ZXh0KChjb25zdCB1Y29udGV4dF90ICopdWNwLT51
Y19saW5rKTsKKwkJYWJvcnQoKTsKKwl9Cit9CkluZGV4OiBsaWIvbGliYy9taXBzL3N5cy9NYWtl
ZmlsZS5pbmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xpYmMvbWlwcy9zeXMvTWFrZWZpbGUuaW5jCShy
ZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9taXBzL3N5cy9NYWtlZmlsZS5pbmMJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAjICRGcmVlQlNEJAogCiBNREFTTT0gIE92Zm9yay5T
IGJyay5TIGNlcnJvci5TIGV4ZWN0LlMgXAotCWZvcmsuUyBwaXBlLlMgcHRyYWNlLlMgc2Jyay5T
IHNobWF0LlMgc3lzY2FsbC5TCisJZm9yay5TIHBpcGUuUyBwdHJhY2UuUyBzYnJrLlMgc3lzY2Fs
bC5TCiAKICMgRG9uJ3QgZ2VuZXJhdGUgZGVmYXVsdCBjb2RlIGZvciB0aGVzZSBzeXNjYWxsczoK
IE5PQVNNPQlicmVhay5vIGV4aXQubyBmdHJ1bmNhdGUubyBnZXRsb2dpbi5vIGxzZWVrLm8gbW1h
cC5vIFwKSW5kZXg6IGxpYi9saWJjL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJjL01h
a2VmaWxlCShyZXZpc2lvbiAyMDkwNDApCisrKyBsaWIvbGliYy9NYWtlZmlsZQkod29ya2luZyBj
b3B5KQpAQCAtNTEsOSArNTEsMTQgQEAKIC5pbmNsdWRlICIkey5DVVJESVJ9L3Bvc2l4MWUvTWFr
ZWZpbGUuaW5jIgogLmlmICR7TUFDSElORV9BUkNIfSAhPSAiYW1kNjQiICYmIFwKICAgICAke01B
Q0hJTkVfQVJDSH0gIT0gImlhNjQiICYmIFwKLSAgICAke01BQ0hJTkVfQVJDSH0gIT0gInNwYXJj
NjQiCisgICAgJHtNQUNISU5FX0FSQ0h9ICE9ICJzcGFyYzY0IiAmJiBcCisgICAgJHtNQUNISU5F
X0FSQ0h9ICE9ICJtaXBzIgogLmluY2x1ZGUgIiR7LkNVUkRJUn0vcXVhZC9NYWtlZmlsZS5pbmMi
CiAuZW5kaWYKKy5pZiAke01BQ0hJTkVfQVJDSH0gPT0gIm1pcHMiICYmIFwKKyAgICAoIWRlZmlu
ZWQoVEFSR0VUX0FCSSkgfHwgJHtUQVJHRVRfQUJJfSA9PSAibzMyIikKKy5pbmNsdWRlICIkey5D
VVJESVJ9L3F1YWQvTWFrZWZpbGUuaW5jIgorLmVuZGlmCiAuaW5jbHVkZSAiJHsuQ1VSRElSfS9y
ZWdleC9NYWtlZmlsZS5pbmMiCiAuaW5jbHVkZSAiJHsuQ1VSRElSfS9yZXNvbHYvTWFrZWZpbGUu
aW5jIgogLmluY2x1ZGUgIiR7LkNVUkRJUn0vc3RkaW8vTWFrZWZpbGUuaW5jIgo=
--e0cb4e88758397b495048911b0d9
Content-Type: text/x-patch; charset=US-ASCII; name="ld.so.patch"
Content-Disposition: attachment; filename="ld.so.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gagrgebk2

SW5kZXg6IGxpYmV4ZWMvcnRsZC1lbGYvbWlwcy9ydGxkX3N0YXJ0LlMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
bGliZXhlYy9ydGxkLWVsZi9taXBzL3J0bGRfc3RhcnQuUwkocmV2aXNpb24gMjA5MTkzKQorKysg
bGliZXhlYy9ydGxkLWVsZi9taXBzL3J0bGRfc3RhcnQuUwkod29ya2luZyBjb3B5KQpAQCAtNjgs
NyArNjgsOCBAQAogCW1vdmUJYTAsIHMwCQkJLyogc3AgKi8KIAlQVFJfQUREVSBhMSwgc3AsIDIq
UFRSX1NJWkUJLyogJm91ciBhdGV4aXQgZnVuY3Rpb24gKi8KIAlQVFJfQUREVSBhMiwgc3AsIDMq
UFRSX1NJWkUJLyogb2JqX21haW4gZW50cnkgKi8KLQlqYWwJX0NfTEFCRUwoX3J0bGQpCQkvKiB2
MCA9IF9ydGxkKHNwLCBjbGVhbnVwLCBvYmpwKSAqLworCVBUUl9MQQl0OSwgX0NfTEFCRUwoX3J0
bGQpCisJamFscgl0OQkJCS8qIHYwID0gX3J0bGQoc3AsIGNsZWFudXAsIG9ianApICovCiAJIG5v
cAogCiAJUFRSX0wJYTEsIDIqUFRSX1NJWkUoc3ApCS8qIG91ciBhdGV4aXQgZnVuY3Rpb24gKi8K
QEAgLTEyMyw3ICsxMjQsNyBAQAogCW1vdmUJczAsIHNwCiAKIAltb3ZlCWEwLCB2MQkJCS8qIG9s
ZCBHUCAqLwotCXN1YnUJYTAsIGEwLCAweDdmZjAJCS8qIFRoZSBvZmZzZXQgb2YgJGdwIGZyb20g
dGhlCSovCisJUFRSX1NVQlUJYTAsIGEwLCAweDdmZjAJCS8qIFRoZSBvZmZzZXQgb2YgJGdwIGZy
b20gdGhlCSovCiAgICAgICAgCQkJCQkvKiBiZWdpbm5pbmcgb2YgdGhlIC5nb3Qgc2VjdGlvbjog
Ki8KIAkJCQkJLyogJGdwID0gLmdvdCArIDB4N2ZmMCwgc28JKi8KIAkJCQkJLyogLmdvdCA9ICRn
cCAtIDB4N2ZmMAkJKi8KQEAgLTEzNiw3ICsxMzcsOCBAQAogCWFuZAlhMCwgYTAsIDB4N2ZmZmZm
ZmYKIAltb3ZlCWExLCB0OAkJCS8qIHN5bWJvbCBpbmRleCAqLwogCi0JamFsCV9DX0xBQkVMKF9t
aXBzX3J0bGRfYmluZCkKKwlQVFJfTEEJdDksIF9DX0xBQkVMKF9taXBzX3J0bGRfYmluZCkKKwlq
YWxyCXQ5CiAJIG5vcAogCiAJbW92ZQlzcCwgczAK
--e0cb4e88758397b495048911b0d9
Content-Type: text/x-patch; charset=US-ASCII; name="tlb-to-c.patch"
Content-Disposition: attachment; filename="tlb-to-c.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gagrgmb13

SW5kZXg6IHN5cy9jb25mL2ZpbGVzLm1pcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2NvbmYvZmlsZXMu
bWlwcwkocmV2aXNpb24gMjA5MTkzKQorKysgc3lzL2NvbmYvZmlsZXMubWlwcwkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQAogbWlwcy9taXBzL2ZwLlMJCQlzdGFuZGFyZAogbWlwcy9t
aXBzL3BtX21hY2hkZXAuYwkJc3RhbmRhcmQKIG1pcHMvbWlwcy9zd3RjaC5TCQlzdGFuZGFyZAot
bWlwcy9taXBzL3RsYi5TCQkJc3RhbmRhcmQKK21pcHMvbWlwcy90bGIuYwkJCXN0YW5kYXJkCiAK
IG1pcHMvbWlwcy9idXNfc3BhY2VfZ2VuZXJpYy5jIAlzdGFuZGFyZAogbWlwcy9taXBzL2J1c2Rt
YV9tYWNoZGVwLmMgCXN0YW5kYXJkCkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL3RsYi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvdGxiLmgJKHJldmlzaW9uIDApCisrKyBzeXMvbWlw
cy9pbmNsdWRlL3RsYi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKi0KKyAqIENv
cHlyaWdodCAoYykgMjAwNC0yMDEwIEp1bGkgTWFsbGV0dCA8am1hbGxldHRARnJlZUJTRC5vcmc+
CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
CisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNpZm5kZWYJ
X01BQ0hJTkVfVExCX0hfCisjZGVmaW5lCV9NQUNISU5FX1RMQl9IXworCit2b2lkIHRsYl9pbnNl
cnRfd2lyZWQodW5zaWduZWQsIHZtX29mZnNldF90LCBwdF9lbnRyeV90LCBwdF9lbnRyeV90KTsK
K3ZvaWQgdGxiX2ludmFsaWRhdGVfYWRkcmVzcyhzdHJ1Y3QgcG1hcCAqLCB2bV9vZmZzZXRfdCk7
Cit2b2lkIHRsYl9pbnZhbGlkYXRlX2FsbCh2b2lkKTsKK3ZvaWQgdGxiX2ludmFsaWRhdGVfYWxs
X3VzZXIoc3RydWN0IHBtYXAgKik7Cit2b2lkIHRsYl9zYXZlKHZvaWQpOwordm9pZCB0bGJfdXBk
YXRlKHN0cnVjdCBwbWFwICosIHZtX29mZnNldF90LCBwdF9lbnRyeV90KTsKKworI2VuZGlmIC8q
ICFfTUFDSElORV9UTEJfSF8gKi8KSW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvY3B1LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3lzL21pcHMvaW5jbHVkZS9jcHUuaAkocmV2aXNpb24gMjA5MTkzKQorKysgc3lz
L21pcHMvaW5jbHVkZS9jcHUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDI3ICsyNzQsNiBAQAog
I2RlZmluZQlPUENPREVfQzEJCTB4MTEKIAogLyoKLSAqIFRoZSBsb3cgcGFydCBvZiB0aGUgVExC
IGVudHJ5LgotICovCi0jZGVmaW5lCVZNVExCX1BGX05VTQkJMHgzZmZmZmZjMAotI2RlZmluZQlW
TVRMQl9BVFRSX01BU0sJCTB4MDAwMDAwMzgKLSNkZWZpbmUJVk1UTEJfTU9EX0JJVAkJMHgwMDAw
MDAwNAotI2RlZmluZQlWTVRMQl9WQUxJRF9CSVQJCTB4MDAwMDAwMDIKLSNkZWZpbmUJVk1UTEJf
R0xPQkFMX0JJVAkweDAwMDAwMDAxCi0KLSNkZWZpbmUJVk1UTEJfUEhZU19QQUdFX1NISUZUCTYK
LQotLyoKLSAqIFRoZSBoaWdoIHBhcnQgb2YgdGhlIFRMQiBlbnRyeS4KLSAqLwotI2RlZmluZQlW
TVRMQl9WSVJUX1BBR0VfTlVNCQkweGZmZmZlMDAwCi0jZGVmaW5lCVZNVExCX1BJRAkJCTB4MDAw
MDAwZmYKLSNkZWZpbmUJVk1UTEJfUElEX1I5SwkJCTB4MDAwMDBmZmYKLSNkZWZpbmUJVk1UTEJf
UElEX1NISUZUCQkJMAotI2RlZmluZQlWTVRMQl9WSVJUX1BBR0VfU0hJRlQJCTEyCi0jZGVmaW5l
CVZNVExCX1ZJUlRfUEFHRV9TSElGVF9SOUsJMTMKLQotLyoKICAqIFRoZSBmaXJzdCBUTEIgZW50
cnkgdGhhdCB3cml0ZSByYW5kb20gaGl0cy4KICAqIFRMQiBlbnRyeSAwIG1hcHMgdGhlIGtlcm5l
bCBzdGFjayBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGhyZWFkCiAgKiBUTEIgZW50cnkgMSBt
YXBzIHRoZSBwY3B1IGFyZWEgb2YgcHJvY2Vzc29yIChvbmx5IGZvciBTTVAgYnVpbGRzKQpAQCAt
MzEzLDE0ICsyOTIsNiBAQAogI2RlZmluZQlWTU5VTV9QSURTCQkyNTYKIAogLyoKLSAqIFRMQiBw
cm9iZSByZXR1cm4gY29kZXMuCi0gKi8KLSNkZWZpbmUJVk1UTEJfTk9UX0ZPVU5ECQkwCi0jZGVm
aW5lCVZNVExCX0ZPVU5ECQkxCi0jZGVmaW5lCVZNVExCX0ZPVU5EX1dJVEhfUEFUQ0gJMgotI2Rl
ZmluZQlWTVRMQl9QUk9CRV9FUlJPUgkzCi0KLS8qCiAgKiBFeHBvcnRlZCBkZWZpbml0aW9ucyB1
bmlxdWUgdG8gbWlwcyBjcHUgc3VwcG9ydC4KICAqLwogCkBAIC0zMzUsNiArMzA2LDcgQEAKICNp
Zm5kZWYgX0xPQ09SRQogI2luY2x1ZGUgPG1hY2hpbmUvY3B1ZnVuYy5oPgogI2luY2x1ZGUgPG1h
Y2hpbmUvZnJhbWUuaD4KKwogLyoKICAqIEFyZ3VtZW50cyB0byBoYXJkY2xvY2sgYW5kIGdhdGhl
cnN0YXRzIGVuY2Fwc3VsYXRlIHRoZSBwcmV2aW91cwogICogbWFjaGluZSBzdGF0ZSBpbiBhbiBv
cGFxdWUgY2xvY2tmcmFtZS4KQEAgLTQ1NSwxMiArNDI3LDkgQEAKICNpZiBkZWZpbmVkKF9LRVJO
RUwpICYmICFkZWZpbmVkKF9MT0NPUkUpCiBleHRlcm4gdW5pb24gY3B1cHJpZCBmcHVfaWQ7CiAK
LXN0cnVjdCB0bGI7CiBzdHJ1Y3QgdXNlcjsKIAogaW50IE1pcHNfQ29uZmlnQ2FjaGUodm9pZCk7
Ci12b2lkIE1pcHNfU2V0V0lSRUQoaW50KTsKLXZvaWQgTWlwc19TZXRQSUQoaW50KTsKIAogdm9p
ZCBNaXBzX1N5bmNDYWNoZSh2b2lkKTsKIHZvaWQgTWlwc19TeW5jRENhY2hlKHZtX29mZnNldF90
LCBpbnQpOwpAQCAtNDcxLDEyICs0NDAsNiBAQAogdm9pZCBNaXBzX1N5bmNJQ2FjaGUodm1fb2Zm
c2V0X3QsIGludCk7CiB2b2lkIE1pcHNfSW52YWxpZGF0ZUlDYWNoZSh2bV9vZmZzZXRfdCwgaW50
KTsKIAotdm9pZCBNaXBzX1RMQkZsdXNoKGludCk7Ci12b2lkIE1pcHNfVExCRmx1c2hBZGRyKHZt
X29mZnNldF90KTsKLXZvaWQgTWlwc19UTEJXcml0ZUluZGV4ZWQoaW50LCBzdHJ1Y3QgdGxiICop
Owotdm9pZCBNaXBzX1RMQlVwZGF0ZSh2bV9vZmZzZXRfdCwgdW5zaWduZWQpOwotdm9pZCBNaXBz
X1RMQlJlYWQoaW50LCBzdHJ1Y3QgdGxiICopOwotdm9pZCBtaXBzX1RCSUFQKGludCk7CiB2b2lk
IHdiZmx1c2godm9pZCk7CiAKIGV4dGVybiB1X2ludDMyX3QgY3B1X2NvdW50ZXJfaW50ZXJ2YWw7
CS8qIE51bWJlciBvZiBjb3VudGVyIHRpY2tzL3RpY2sgKi8KQEAgLTUxNiwxNiArNDc5LDYgQEAK
IAkJCTogInIiIChmdW5jKSwgInIiIChhcmcwKSwgInIiIChhcmcxKSwgInIiIChhcmcyKSAgLyog
aW5wdXRzICovIFwKIAkJCTogIiQzMSIsICIkNCIsICIkNSIsICIkNiIpOwogCi0jZGVmaW5lCU1h
Y2hTZXRQSUQJCQlNaXBzX1NldFBJRAotI2RlZmluZQlNYWNoVExCVXBkYXRlICAgCQlNaXBzX1RM
QlVwZGF0ZQotI2RlZmluZQltaXBzX1RCSVMJCQlNaXBzX1RMQkZsdXNoQWRkcgotI2RlZmluZQlN
SVBTX1RCSUFQKCkJCQltaXBzX1RCSUFQKG51bV90bGJlbnRyaWVzKQotI2RlZmluZQlNYWNoU2V0
V0lSRUQoaW5kZXgpCQlNaXBzX1NldFdJUkVEKGluZGV4KQotI2RlZmluZQlNYWNoVExCRmx1c2go
Y291bnQpCQlNaXBzX1RMQkZsdXNoKGNvdW50KQotI2RlZmluZQlNYWNoVExCR2V0UElEKHBpZCkJ
CShwaWQgPSBNaXBzX1RMQkdldFBJRCgpKQotI2RlZmluZQlNYWNoVExCUmVhZCh0bGJubywgdGxi
cCkJTWlwc19UTEJSZWFkKHRsYm5vLCB0bGJwKQotI2RlZmluZQlNYWNoRlBUcmFwKHNyLCBjYXVz
ZSwgcGMpCU1pcHNGUFRyYXAoc3IsIGNhdXNlLCBwYykKLQogLyoKICAqIEVuYWJsZSByZWFsdGlt
ZSBjbG9jayAoYWx3YXlzIGVuYWJsZWQpLgogICovCkBAIC01NDIsOCArNDk1LDYgQEAKICAqICBM
b3cgbGV2ZWwgYWNjZXNzIHJvdXRpbmVzIHRvIENQVSByZWdpc3RlcnMKICAqLwogCi1pbnQgTWlw
c19UTEJHZXRQSUQodm9pZCk7Ci0KIHZvaWQgc3dpX3ZtKHZvaWQgKik7CiB2b2lkIGNwdV9oYWx0
KHZvaWQpOwogdm9pZCBjcHVfcmVzZXQodm9pZCk7CkluZGV4OiBzeXMvbWlwcy9pbmNsdWRlL3B0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2luY2x1ZGUvcHRlLmgJKHJldmlzaW9uIDIwOTE5
MykKKysrIHN5cy9taXBzL2luY2x1ZGUvcHRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEs
NyBAQAotLyoJJE9wZW5CU0Q6IHB0ZS5oLHYgMS40IDE5OTgvMDEvMjggMTM6NDY6MjUgcGVmbyBF
eHAgJAkqLwotCiAvKi0KLSAqIENvcHlyaWdodCAoYykgMTk4OCBVbml2ZXJzaXR5IG9mIFV0YWgu
Ci0gKiBDb3B5cmlnaHQgKGMpIDE5OTIsIDE5OTMKLSAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2
ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChjKSAyMDA0LTIwMTAgSnVsaSBNYWxsZXR0IDxqbWFsbGV0dEBGcmVlQlNELm9yZz4KKyAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgotICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0
d2FyZSBjb250cmlidXRlZCB0byBCZXJrZWxleSBieQotICogdGhlIFN5c3RlbXMgUHJvZ3JhbW1p
bmcgR3JvdXAgb2YgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCBDb21wdXRlcgotICogU2NpZW5jZSBE
ZXBhcnRtZW50IGFuZCBSYWxwaCBDYW1wYmVsbC4KLSAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwogICogYXJlIG1ldDoKQEAgLTE3LDE4ICsxMCwxMSBAQAogICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcg
bWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAq
ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKLSAqCVRoaXMg
cHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YK
LSAqCUNhbGlmb3JuaWEsIEJlcmtlbGV5IGFuZCBpdHMgY29udHJpYnV0b3JzLgotICogNC4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKICAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUwogICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCkBAIC0zNyw2MCArMjMsNjYgQEAKICAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKICAqIFNVQ0ggREFNQUdFLgogICoKLSAqCWZyb206IFV0YWggSGRyOiBwdGUuaCAx
LjExIDg5LzA5LzAzCi0gKglmcm9tOiBAKCMpcHRlLmggOC4xIChCZXJrZWxleSkgNi8xMC85Mwot
ICoJSk5QUjogcHRlLmgsdiAxLjEuNC4xIDIwMDcvMDkvMTAgMDY6MjA6MTkgZ2lyaXNoCiAgKiAk
RnJlZUJTRCQKICAqLwogCi0jaWZuZGVmIF9NQUNISU5FX1BURV9IXworI2lmbmRlZglfTUFDSElO
RV9QVEVfSF8KICNkZWZpbmUJX01BQ0hJTkVfUFRFX0hfCiAKLSNpbmNsdWRlIDxtYWNoaW5lL2Vu
ZGlhbi5oPgorLyoKKyAqIFRMQiBhbmQgUFRFIG1hbmFnZW1lbnQuICBNb3N0IHRoaW5ncyBvcGVy
YXRlIHdpdGhpbiB0aGUgY29udGV4dCBvZgorICogRW50cnlMbzAsMSwgYW5kIGJlZ2luIHdpdGgg
VExCTE9fLiAgVGhpbmdzIHdoaWNoIHdvcmsgd2l0aCBFbnRyeUhpCisgKiBzdGFydCB3aXRoIFRM
QkhJXy4gIFBURSBiaXRzIGJlZ2luIHdpdGggUEdfLgorICoKKyAqIE5vdGUgdGhhdCB3ZSB1c2Ug
dGhlIHNhbWUgc2l6ZSBWTSBhbmQgVExCIHBhZ2VzLgorICovCisjZGVmaW5lCVRMQl9QQUdFX1NI
SUZUCShQQUdFX1NISUZUKQorI2RlZmluZQlUTEJfUEFHRV9TSVpFCSgxIDw8IFRMQl9QQUdFX1NI
SUZUKQorI2RlZmluZQlUTEJfUEFHRV9NQVNLCShUTEJfUEFHRV9TSVpFIC0gMSkKIAogLyoKLSAq
IE1JUFMgaGFyZHdhcmUgcGFnZSB0YWJsZSBlbnRyeQorICogVExCIFBhZ2VNYXNrIHJlZ2lzdGVy
LiAgSGFzIG1hc2sgYml0cyBzZXQgYWJvdmUgdGhlIGRlZmF1bHQsIDRLLCBwYWdlIG1hc2suCiAg
Ki8KKyNkZWZpbmUJVExCTUFTS19TSElGVAkoMTMpCisjZGVmaW5lCVRMQk1BU0tfTUFTSwkoKFBB
R0VfTUFTSyA+PiBUTEJNQVNLX1NISUZUKSA8PCBUTEJNQVNLX1NISUZUKQogCi0jaWZuZGVmIF9M
T0NPUkUKLXN0cnVjdCBwdGUgewotI2lmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotdW5zaWdu
ZWQgaW50CXBnX3Byb3Q6MiwJCS8qIFNXOiBhY2Nlc3MgY29udHJvbCAqLwotCQlwZ19wZm51bToy
NCwJCS8qIEhXOiBjb3JlIHBhZ2UgZnJhbWUgbnVtYmVyIG9yIDAgKi8KLQkJcGdfYXR0cjozLAkJ
LyogSFc6IGNhY2hlIGF0dHJpYnV0ZSAqLwotCQlwZ19tOjEsCQkJLyogSFc6IG1vZGlmaWVkIChk
aXJ0eSkgYml0ICovCi0JCXBnX3Y6MSwJCQkvKiBIVzogdmFsaWQgYml0ICovCi0JCXBnX2c6MTsJ
CQkvKiBIVzogaWdub3JlIHBpZCBiaXQgKi8KLSNlbmRpZgotI2lmIEJZVEVfT1JERVIgPT0gTElU
VExFX0VORElBTgotdW5zaWduZWQgaW50CXBnX2c6MSwJCQkvKiBIVzogaWdub3JlIHBpZCBiaXQg
Ki8KLQkJcGdfdjoxLAkJCS8qIEhXOiB2YWxpZCBiaXQgKi8KLQkJcGdfbToxLAkJCS8qIEhXOiBt
b2RpZmllZCAoZGlydHkpIGJpdCAqLwotCQlwZ19hdHRyOjMsCQkvKiBIVzogY2FjaGUgYXR0cmli
dXRlICovCi0JCXBnX3BmbnVtOjI0LAkJLyogSFc6IGNvcmUgcGFnZSBmcmFtZSBudW1iZXIgb3Ig
MCAqLwotCQlwZ19wcm90OjI7CQkvKiBTVzogYWNjZXNzIGNvbnRyb2wgKi8KLSNlbmRpZgotfTsK
LQogLyoKLSAqIFN0cnVjdHVyZSBkZWZpbmluZyBhbiB0bGIgZW50cnkgZGF0YSBzZXQuCisgKiBQ
Rk4gZm9yIEVudHJ5TG8gcmVnaXN0ZXIuICBVcHBlciBiaXRzIGFyZSAwLCB3aGljaCBpcyB0byBz
YXkgdGhhdAorICogYml0IDI5IGlzIHRoZSBsYXN0IGhhcmR3YXJlIGJpdDsgIEJpdHMgMzAgYW5k
IHVwd2FyZHMgKEVudHJ5TG8gaXMKKyAqIDY0IGJpdCB0aG91Z2ggaXQgY2FuIGJlIHJlZmVycmVk
IHRvIGluIDMyLWJpdHMgcHJvdmlkaW5nIDIgc29mdHdhcmUKKyAqIGJpdHMgc2FmZWx5LiAgV2Ug
dXNlIGl0IGFzIDY0IGJpdHMgdG8gZ2V0IG1hbnkgc29mdHdhcmUgYml0cywgYW5kCisgKiBnb2Qg
a25vd3Mgd2hhdCBlbHNlLikgYXJlIHVuYWNrbm93bGVkZ2VkIGJ5IGhhcmR3YXJlLiAgVGhleSBt
YXkgYmUKKyAqIHdyaXR0ZW4gYXMgYW55dGhpbmcsIGJ1dCBvdGhlcndpc2UgdGhleSBoYXZlIGFz
IG11Y2ggbWVhbmluZyBhcworICogb3RoZXIgMCBmaWVsZHMuCiAgKi8KKyNkZWZpbmUJVExCTE9f
U1dCSVRTX1NISUZUCSgzMCkKKyNkZWZpbmUJVExCTE9fU1dCSVRTX01BU0sJKDB4M1UgPDwgVExC
TE9fU1dCSVRTX1NISUZUKQorI2RlZmluZQlUTEJMT19QRk5fU0hJRlQJCSg2KQorI2RlZmluZQlU
TEJMT19QRk5fTUFTSwkJKDB4M0ZGRkZGQzApCisjZGVmaW5lCVRMQkxPX1BBX1RPX1BGTihwYSkJ
KCgoKHBhKSA+PiBUTEJfUEFHRV9TSElGVCkgPDwgVExCTE9fUEZOX1NISUZUKSAmIFRMQkxPX1BG
Tl9NQVNLKQorI2RlZmluZQlUTEJMT19QRk5fVE9fUEEocGZuKQkoKHZtX3BhZGRyX3QpKChwZm4p
ID4+IFRMQkxPX1BGTl9TSElGVCkgPDwgVExCX1BBR0VfU0hJRlQpCisjZGVmaW5lCVRMQkxPX1BU
RV9UT19QRk4ocHRlKQkoKHB0ZSkgJiBUTEJMT19QRk5fTUFTSykKKyNkZWZpbmUJVExCTE9fUFRF
X1RPX1BBKHB0ZSkJKFRMQkxPX1BGTl9UT19QQShUTEJMT19QVEVfVE9fUEZOKChwdGUpKSkpCisg
IAorLyoKKyAqIFZQTiBmb3IgRW50cnlIaSByZWdpc3Rlci4gIFVwcGVyIHR3byBiaXRzIHNlbGVj
dCB1c2VyLCBzdXBlcnZpc29yLAorICogb3Iga2VybmVsLiAgQml0cyA2MSB0byA0MCBjb3B5IGJp
dCA2My4gIFZQTjIgaXMgYml0cyAzOSBhbmQgZG93biB0bworICogYXMgbG93IGFzIDEzLCBkb3du
IHRvIFBBR0VfU0hJRlQsIHRvIGluZGV4IDIgVExCIHBhZ2VzKi4gIEZyb20gYml0IDEyCisgKiB0
byBiaXQgOCB0aGVyZSBpcyBhIDUtYml0IDAgZmllbGQuICBMb3cgYnl0ZSBpcyBBU0lELgorICoK
KyAqIE5vdGUgdGhhdCBpbiBGcmVlQlNELCB3ZSBtYXAgMiBUTEIgcGFnZXMgaXMgZXF1YWwgdG8g
MSBWTSBwYWdlLgorICovCisjZGVmaW5lCVRMQkhJX0FTSURfTUFTSwkJKDB4ZmYpCisjZGVmaW5l
CVRMQkhJX0VOVFJZKHZhLCBhc2lkKQkoKCh2YSkgJiB+UEFHRV9NQVNLKSB8ICgoYXNpZCkgJiBU
TEJISV9BU0lEX01BU0spKQogCi1zdHJ1Y3QgdGxiIHsKLQlpbnQJdGxiX21hc2s7Ci0JaW50CXRs
Yl9oaTsKLQlpbnQJdGxiX2xvMDsKLQlpbnQJdGxiX2xvMTsKLX07Ci0KKyNpZm5kZWYgX0xPQ09S
RQogdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRfZW50cnlfdDsKIHR5cGVkZWYgcHRfZW50cnlfdCAq
cGRfZW50cnlfdDsKKyNlbmRpZgogCiAjZGVmaW5lCVBERVNJWkUJCXNpemVvZihwZF9lbnRyeV90
KQkvKiBmb3IgYXNzZW1ibHkgZmlsZXMgKi8KICNkZWZpbmUJUFRFU0laRQkJc2l6ZW9mKHB0X2Vu
dHJ5X3QpCS8qIGZvciBhc3NlbWJseSBmaWxlcyAqLwogCi0jZW5kaWYgLyogX0xPQ09SRSAqLwot
CiAjZGVmaW5lCVBUX0VOVFJZX05VTEwJKChwdF9lbnRyeV90ICopIDApCiAKICNkZWZpbmUJUFRF
X1dJUkVECTB4ODAwMDAwMDAJLyogU1cgKi8KQEAgLTExOSwxMSArMTExLDYgQEAKICNkZWZpbmUg
UFRFX0hWUE4gICAgICAgIDB4ZmZmZmUwMDAgICAgICAvKiBIYXJkd2FyZSBwYWdlIG5vIG1hc2sg
Ki8KICNkZWZpbmUgUFRFX0FTSUQgICAgICAgIDB4MDAwMDAwZmYgICAgICAvKiBBZGRyZXNzIHNw
YWNlIElEICovCiAKLSNkZWZpbmUJUFRFX1NISUZUCTYKLSNkZWZpbmUJcGZuX2lzX2V4dCh4KQko
KHgpICYgMHgzYzAwMDAwMCkKLSNkZWZpbmUJdmFkX3RvX3Bmbih4KQkoKCh1bnNpZ25lZCkoeCkg
Pj4gUFRFX1NISUZUKSAmIFBURV9GUkFNRSkKLSNkZWZpbmUJdmFkX3RvX3BmbjY0KHgpCSgocXVh
ZF90KSh4KSA+PiBQVEVfU0hJRlQpICYgUFRFX0ZSQU1FKQotI2RlZmluZQlwZm5fdG9fdmFkKHgp
CSgoKHgpICYgUFRFX0ZSQU1FKSA8PCBQVEVfU0hJRlQpCiAKIC8qIFVzZXIgdmlydHVhbCB0byBw
dGUgb2Zmc2V0IGluIHBhZ2UgdGFibGUgKi8KICNkZWZpbmUJdmFkX3RvX3B0ZV9vZmZzZXQoYWRy
KQkoKChhZHIpID4+IFBBR0VfU0hJRlQpICYgKE5QVEVQRyAtMSkpCkBAIC0xMzgsMTYgKzEyNSw1
IEBACiAjZGVmaW5lCW1pcHNfcGdfY3dwYWdlX2JpdCgpCShQVEVfQ1dQQUdFKQogI2RlZmluZQlt
aXBzX3BnX2dsb2JhbF9iaXQoKQkoUFRFX0cpCiAjZGVmaW5lCW1pcHNfcGdfd2lyZWRfYml0KCkJ
KFBURV9XSVJFRCkKLSNkZWZpbmUJbWlwc190bGJwZm5fdG9fcGFkZHIoeCkJcGZuX3RvX3ZhZCgo
eCkpCi0jZGVmaW5lCW1pcHNfcGFkZHJfdG9fdGxicGZuKHgpCXZhZF90b19wZm4oKHgpKQogCi0v
KiBUaGVzZSBhcmUgbm90IHVzZWQgKi8KLSNkZWZpbmUJUFRFX1NJWkVfNEsJMHgwMDAwMDAwMAot
I2RlZmluZQlQVEVfU0laRV8xNksJMHgwMDAwNjAwMAotI2RlZmluZQlQVEVfU0laRV82NEsJMHgw
MDAxZTAwMAotI2RlZmluZQlQVEVfU0laRV8yNTZLCTB4MDAwN2UwMDAKLSNkZWZpbmUJUFRFX1NJ
WkVfMU0JMHgwMDFmZTAwMAotI2RlZmluZQlQVEVfU0laRV80TQkweDAwN2ZlMDAwCi0jZGVmaW5l
CVBURV9TSVpFXzE2TQkweDAxZmZlMDAwCi0KLSNlbmRpZgkvKiAhX01BQ0hJTkVfUFRFX0hfICov
CisjZW5kaWYgLyogIV9NQUNISU5FX1BURV9IXyAqLwpJbmRleDogc3lzL21pcHMvaW5jbHVkZS9w
bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvaW5jbHVkZS9wbWFwLmgJKHJldmlzaW9uIDIw
OTE5MykKKysrIHN5cy9taXBzL2luY2x1ZGUvcG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
NSArNDksNyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvdm1wYXJhbS5oPgogI2luY2x1ZGUgPG1hY2hp
bmUvcHRlLmg+CiAKLSNkZWZpbmUJVkFERFIocGRpLCBwdGkpCSgodm1fb2Zmc2V0X3QpKCgocGRp
KTw8UERSU0hJRlQpfCgocHRpKTw8UEFHRV9TSElGVCkpKQotCiAjZGVmaW5lCU5LUFQJCTEyMAkv
KiBhY3R1YWwgbnVtYmVyIG9mIGtlcm5lbCBwYWdlIHRhYmxlcyAqLwotCi0jaWZuZGVmIE5LUERF
Ci0jZGVmaW5lCU5LUERFCQkyNTUJLyogYWRkcmVzc2FibGUgbnVtYmVyIG9mIHBhZ2UgdGFibGVz
L3BkZSdzICovCi0jZW5kaWYKLQotI2RlZmluZQlLUFRESQkJKFZNX01JTl9LRVJORUxfQUREUkVT
UyA+PiBTRUdTSElGVCkKICNkZWZpbmUJTlVTRVJQR1RCTFMJKFZNX01BWFVTRVJfQUREUkVTUyA+
PiBTRUdTSElGVCkKIAogI2lmbmRlZiBMT0NPUkUKQEAgLTEwOSw2ICsxMDEsNyBAQAogdm1fb2Zm
c2V0X3QgcG1hcF9rZXh0cmFjdCh2bV9vZmZzZXRfdCB2YSk7CiAKICNkZWZpbmUJdnRvcGh5cyh2
YSkJcG1hcF9rZXh0cmFjdCgoKHZtX29mZnNldF90KSAodmEpKSkKKyNkZWZpbmUJcG1hcF9hc2lk
KHBtYXApCShwbWFwKS0+cG1fYXNpZFtQQ1BVX0dFVChjcHVpZCldLmFzaWQKIAogZXh0ZXJuIHN0
cnVjdCBwbWFwCWtlcm5lbF9wbWFwX3N0b3JlOwogI2RlZmluZSBrZXJuZWxfcG1hcAkoJmtlcm5l
bF9wbWFwX3N0b3JlKQpAQCAtMTIyLDkgKzExNSw4IEBACiAjZGVmaW5lCVBNQVBfTVRYKHBtYXAp
CQkoJihwbWFwKS0+cG1fbXR4KQogI2RlZmluZQlQTUFQX1RSWUxPQ0socG1hcCkJbXR4X3RyeWxv
Y2soJihwbWFwKS0+cG1fbXR4KQogI2RlZmluZQlQTUFQX1VOTE9DSyhwbWFwKQltdHhfdW5sb2Nr
KCYocG1hcCktPnBtX210eCkKLQogI2RlZmluZSBQTUFQX0xHTUVNX0xPQ0tfSU5JVChzeXNtYXAp
IG10eF9pbml0KCYoc3lzbWFwKS0+bG9jaywgInBtYXAtbGdtZW0iLCBcCi0JCQkJICAgICJwZXIt
Y3B1LW1hcCIsIChNVFhfREVGfCBNVFhfRFVQT0spKQorCQkJICAgICAicGVyLWNwdS1tYXAiLCAo
TVRYX0RFRnwgTVRYX0RVUE9LKSkKICNkZWZpbmUgUE1BUF9MR01FTV9MT0NLKHN5c21hcCkgbXR4
X2xvY2soJihzeXNtYXApLT5sb2NrKQogI2RlZmluZSBQTUFQX0xHTUVNX1VOTE9DSyhzeXNtYXAp
IG10eF91bmxvY2soJihzeXNtYXApLT5sb2NrKQogI2RlZmluZSBQTUFQX0xHTUVNX0RFU1RST1ko
c3lzbWFwKSBtdHhfZGVzdHJveSgmKHN5c21hcCktPmxvY2spCkBAIC0xODMsMTEgKzE3NSw2IEBA
CiB2b2lkIHBtYXBfdXBkYXRlX3BhZ2UocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCBwdF9l
bnRyeV90IHB0ZSk7CiB2b2lkIHBtYXBfZmx1c2hfcHZjYWNoZSh2bV9wYWdlX3QgbSk7CiAKLS8q
Ci0gKiBGdW5jdGlvbiB0byBzYXZlIFRMQiBjb250ZW50cyBzbyB0aGF0IHRoZXkgbWF5IGJlIGlu
c3BlY3RlZCBpbiB0aGUgZGVidWdnZXIuCi0gKi8KLWV4dGVybiB2b2lkIHBtYXBfc2F2ZV90bGIo
dm9pZCk7Ci0KICNlbmRpZgkJCQkvKiBfS0VSTkVMICovCiAKICNlbmRpZgkJCQkvKiAhTE9DT1JF
ICovCkluZGV4OiBzeXMvbWlwcy9taXBzL3RsYi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21p
cHMvdGxiLmMJKHJldmlzaW9uIDApCisrKyBzeXMvbWlwcy9taXBzL3RsYi5jCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMxMSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMCBKdWxp
IE1hbGxldHQgPGptYWxsZXR0QEZyZWVCU0Qub3JnPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1Ig
QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB
VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisg
KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
CisgKiAkRnJlZUJTRCQKKyAqLworCisjaW5jbHVkZSAib3B0X2RkYi5oIgorCisjaW5jbHVkZSA8
c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0
bS5oPgorI2luY2x1ZGUgPHN5cy9wY3B1Lmg+CisjaW5jbHVkZSA8c3lzL3NtcC5oPgorCisjaW5j
bHVkZSA8dm0vdm0uaD4KKyNpbmNsdWRlIDx2bS92bV9wYWdlLmg+CisKKyNpbmNsdWRlIDxtYWNo
aW5lL3B0ZS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvdGxiLmg+CisKK3N0cnVjdCB0bGJfc3RhdGUg
eworCXVuc2lnbmVkIHdpcmVkOworCXN0cnVjdCB0bGJfZW50cnkgeworCQlyZWdpc3Rlcl90IGVu
dHJ5aGk7CisJCXJlZ2lzdGVyX3QgZW50cnlsbzA7CisJCXJlZ2lzdGVyX3QgZW50cnlsbzE7CisJ
fSBlbnRyeVtNSVBTX01BWF9UTEJfRU5UUklFU107Cit9OworCitzdGF0aWMgc3RydWN0IHRsYl9z
dGF0ZSB0bGJfc3RhdGVbTUFYQ1BVXTsKKworI2lmIDAKKy8qCisgKiBQYWdlTWFzayBtdXN0IGlu
Y3JlbWVudCBpbiBzdGVwcyBvZiAyIGJpdHMuCisgKi8KK0NPTVBJTEVfVElNRV9BU1NFUlQoUE9Q
Q05UKFRMQk1BU0tfTUFTSykgJSAyID09IDApOworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9p
ZAordGxiX3Byb2JlKHZvaWQpCit7CisJX19hc20gX192b2xhdGlsZSAoInRsYnAiIDogOiA6ICJt
ZW1vcnkiKTsKKwltaXBzX2NwMF9zeW5jKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGxi
X3JlYWQodm9pZCkKK3sKKwlfX2FzbSBfX3ZvbGF0aWxlICgidGxiciIgOiA6IDogIm1lbW9yeSIp
OworCW1pcHNfY3AwX3N5bmMoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfd3JpdGVf
aW5kZXhlZCh2b2lkKQoreworCV9fYXNtIF9fdm9sYXRpbGUgKCJ0bGJ3aSIgOiA6IDogIm1lbW9y
eSIpOworCW1pcHNfY3AwX3N5bmMoKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit0bGJfd3Jp
dGVfcmFuZG9tKHZvaWQpCit7CisJX19hc20gX192b2xhdGlsZSAoInRsYndyIiA6IDogOiAibWVt
b3J5Iik7CisJbWlwc19jcDBfc3luYygpOworfQorCitzdGF0aWMgdm9pZCB0bGJfaW52YWxpZGF0
ZV9vbmUodW5zaWduZWQpOworCit2b2lkCit0bGJfaW5zZXJ0X3dpcmVkKHVuc2lnbmVkIGksIHZt
X29mZnNldF90IHZhLCBwdF9lbnRyeV90IHB0ZTAsIHB0X2VudHJ5X3QgcHRlMSkKK3sKKwlyZWdp
c3Rlcl90IG1hc2ssIGFzaWQ7CisJcmVnaXN0ZXJfdCBzOworCisJdmEgJj0gflBBR0VfTUFTSzsK
KworCXMgPSBpbnRyX2Rpc2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFz
aWQgPSBtaXBzX3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCW1pcHNfd3JfaW5k
ZXgoaSk7CisJbWlwc193cl9wYWdlbWFzaygwKTsKKwltaXBzX3dyX2VudHJ5aGkoVExCSElfRU5U
UlkodmEsIDApKTsKKwltaXBzX3dyX2VudHJ5bG8wKHB0ZTApOworCW1pcHNfd3JfZW50cnlsbzEo
cHRlMSk7CisJdGxiX3dyaXRlX2luZGV4ZWQoKTsKKworCW1pcHNfd3JfZW50cnloaShhc2lkKTsK
KwltaXBzX3dyX3BhZ2VtYXNrKG1hc2spOworCWludHJfcmVzdG9yZShzKTsKK30KKwordm9pZAor
dGxiX2ludmFsaWRhdGVfYWRkcmVzcyhzdHJ1Y3QgcG1hcCAqcG1hcCwgdm1fb2Zmc2V0X3QgdmEp
Cit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwlpbnQgaTsKKwor
CXZhICY9IH5QQUdFX01BU0s7CisKKwlzID0gaW50cl9kaXNhYmxlKCk7CisJbWFzayA9IG1pcHNf
cmRfcGFnZW1hc2soKTsKKwlhc2lkID0gbWlwc19yZF9lbnRyeWhpKCkgJiBUTEJISV9BU0lEX01B
U0s7CisKKwltaXBzX3dyX3BhZ2VtYXNrKDApOworCW1pcHNfd3JfZW50cnloaShUTEJISV9FTlRS
WSh2YSwgcG1hcF9hc2lkKHBtYXApKSk7CisJdGxiX3Byb2JlKCk7CisJaSA9IG1pcHNfcmRfaW5k
ZXgoKTsKKwlpZiAoaSA+PSAwKQorCQl0bGJfaW52YWxpZGF0ZV9vbmUoaSk7CisKKwltaXBzX3dy
X2VudHJ5aGkoYXNpZCk7CisJbWlwc193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUo
cyk7Cit9CisKK3ZvaWQKK3RsYl9pbnZhbGlkYXRlX2FsbCh2b2lkKQoreworCXJlZ2lzdGVyX3Qg
bWFzaywgYXNpZDsKKwlyZWdpc3Rlcl90IHM7CisJdW5zaWduZWQgaTsKKworCXMgPSBpbnRyX2Rp
c2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFzaWQgPSBtaXBzX3JkX2Vu
dHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCWZvciAoaSA9IG1pcHNfcmRfd2lyZWQoKTsg
aSA8IG51bV90bGJlbnRyaWVzOyBpKyspCisJCXRsYl9pbnZhbGlkYXRlX29uZShpKTsKKworCW1p
cHNfd3JfZW50cnloaShhc2lkKTsKKwltaXBzX3dyX3BhZ2VtYXNrKG1hc2spOworCWludHJfcmVz
dG9yZShzKTsKK30KKwordm9pZAordGxiX2ludmFsaWRhdGVfYWxsX3VzZXIoc3RydWN0IHBtYXAg
KnBtYXApCit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwl1bnNp
Z25lZCBpOworCisJcyA9IGludHJfZGlzYWJsZSgpOworCW1hc2sgPSBtaXBzX3JkX3BhZ2VtYXNr
KCk7CisJYXNpZCA9IG1pcHNfcmRfZW50cnloaSgpICYgVExCSElfQVNJRF9NQVNLOworCisJZm9y
IChpID0gbWlwc19yZF93aXJlZCgpOyBpIDwgbnVtX3RsYmVudHJpZXM7IGkrKykgeworCQlyZWdp
c3Rlcl90IHVhc2lkOworCisJCW1pcHNfd3JfaW5kZXgoaSk7CisJCXRsYl9yZWFkKCk7CisKKwkJ
dWFzaWQgPSBtaXBzX3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKwkJaWYgKHBtYXAg
PT0gTlVMTCkgeworCQkJLyoKKwkJCSAqIEludmFsaWRhdGUgYWxsIG5vbi1rZXJuZWwgZW50cmll
cy4KKwkJCSAqLworCQkJaWYgKHVhc2lkID09IDApCisJCQkJY29udGludWU7CisJCX0gZWxzZSB7
CisJCQkvKgorCQkJICogSW52YWxpZGF0ZSB0aGlzIHBtYXAncyBlbnRyaWVzLgorCQkJICovCisJ
CQlpZiAodWFzaWQgIT0gcG1hcF9hc2lkKHBtYXApKQorCQkJCWNvbnRpbnVlOworCQl9CisJCXRs
Yl9pbnZhbGlkYXRlX29uZShpKTsKKwl9CisKKwltaXBzX3dyX2VudHJ5aGkoYXNpZCk7CisJbWlw
c193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUocyk7Cit9CisKKy8qIFhYWCBPbmx5
IGlmIEREQj8gICovCit2b2lkCit0bGJfc2F2ZSh2b2lkKQoreworCXVuc2lnbmVkIGksIGNwdTsK
KworCWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKKworCXRsYl9zdGF0ZVtjcHVdLndpcmVkID0gbWlw
c19yZF93aXJlZCgpOworCWZvciAoaSA9IDA7IGkgPCBudW1fdGxiZW50cmllczsgaSsrKSB7CisJ
CW1pcHNfd3JfaW5kZXgoaSk7CisJCXRsYl9yZWFkKCk7CisKKwkJdGxiX3N0YXRlW2NwdV0uZW50
cnlbaV0uZW50cnloaSA9IG1pcHNfcmRfZW50cnloaSgpOworCQl0bGJfc3RhdGVbY3B1XS5lbnRy
eVtpXS5lbnRyeWxvMCA9IG1pcHNfcmRfZW50cnlsbzAoKTsKKwkJdGxiX3N0YXRlW2NwdV0uZW50
cnlbaV0uZW50cnlsbzEgPSBtaXBzX3JkX2VudHJ5bG8xKCk7CisJfQorfQorCit2b2lkCit0bGJf
dXBkYXRlKHN0cnVjdCBwbWFwICpwbWFwLCB2bV9vZmZzZXRfdCB2YSwgcHRfZW50cnlfdCBwdGUp
Cit7CisJcmVnaXN0ZXJfdCBtYXNrLCBhc2lkOworCXJlZ2lzdGVyX3QgczsKKwlpbnQgaTsKKwor
CXZhICY9IH5QQUdFX01BU0s7CisJcHRlICY9IH5UTEJMT19TV0JJVFNfTUFTSzsKKworCXMgPSBp
bnRyX2Rpc2FibGUoKTsKKwltYXNrID0gbWlwc19yZF9wYWdlbWFzaygpOworCWFzaWQgPSBtaXBz
X3JkX2VudHJ5aGkoKSAmIFRMQkhJX0FTSURfTUFTSzsKKworCW1pcHNfd3JfcGFnZW1hc2soMCk7
CisJbWlwc193cl9lbnRyeWhpKFRMQkhJX0VOVFJZKHZhLCBwbWFwX2FzaWQocG1hcCkpKTsKKwl0
bGJfcHJvYmUoKTsKKwlpID0gbWlwc19yZF9pbmRleCgpOworCWlmIChpID49IDApIHsKKwkJdGxi
X3JlYWQoKTsKKworCQlpZiAoKHZhICYgUEFHRV9TSVpFKSA9PSAwKSB7CisJCQltaXBzX3dyX2Vu
dHJ5bG8wKHB0ZSk7CisJCX0gZWxzZSB7CisJCQltaXBzX3dyX2VudHJ5bG8xKHB0ZSk7CisJCX0K
KwkJdGxiX3dyaXRlX2luZGV4ZWQoKTsKKwl9CisKKwltaXBzX3dyX2VudHJ5aGkoYXNpZCk7CisJ
bWlwc193cl9wYWdlbWFzayhtYXNrKTsKKwlpbnRyX3Jlc3RvcmUocyk7Cit9CisKK3N0YXRpYyB2
b2lkCit0bGJfaW52YWxpZGF0ZV9vbmUodW5zaWduZWQgaSkKK3sKKwkvKiBYWFggYW4gaW52YWxp
ZCBBU0lEPyAqLworCW1pcHNfd3JfZW50cnloaShUTEJISV9FTlRSWShNSVBTX0tTRUcwX1NUQVJU
ICsgKDIgKiBpICogUEFHRV9TSVpFKSwgMCkpOworCW1pcHNfd3JfZW50cnlsbzAoMCk7CisJbWlw
c193cl9lbnRyeWxvMSgwKTsKKwltaXBzX3dyX3BhZ2VtYXNrKDApOworCW1pcHNfd3JfaW5kZXgo
aSk7CisJdGxiX3dyaXRlX2luZGV4ZWQoKTsKK30KKworI2lmZGVmIEREQgorI2luY2x1ZGUgPGRk
Yi9kZGIuaD4KKworREJfU0hPV19DT01NQU5EKHRsYiwgZGRiX2R1bXBfdGxiKQoreworCXJlZ2lz
dGVyX3QgZWhpLCBlbG8wLCBlbG8xOworCXVuc2lnbmVkIGksIGNwdTsKKworCS8qCisJICogWFhY
CisJICogVGhlIHdvcnN0IGNvbnZlcnNpb24gZnJvbSBoZXggdG8gZGVjaW1hbCBldmVyLgorCSAq
LworCWlmIChoYXZlX2FkZHIpCisJCWNwdSA9ICgoYWRkciA+PiA0KSAlIDE2KSAqIDEwICsgKGFk
ZHIgJSAxNik7CisJZWxzZQorCQljcHUgPSBQQ1BVX0dFVChjcHVpZCk7CisKKwlpZiAoY3B1IDwg
MCB8fCBjcHUgPj0gbXBfbmNwdXMpIHsKKwkJZGJfcHJpbnRmKCJJbnZhbGlkIENQVSAldVxuIiwg
Y3B1KTsKKwkJcmV0dXJuOworCX0KKworCWlmIChjcHUgPT0gUENQVV9HRVQoY3B1aWQpKQorCQl0
bGJfc2F2ZSgpOworCisJZGJfcHJpbnRmKCJCZWdpbm5pbmcgVExCIGR1bXAgZm9yIENQVSAldS4u
LlxuIiwgY3B1KTsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3RsYmVudHJpZXM7IGkrKykgeworCQlp
ZiAoaSA9PSB0bGJfc3RhdGVbY3B1XS53aXJlZCkgeworCQkJaWYgKGkgIT0gMCkKKwkJCQlkYl9w
cmludGYoIl5eXiBXSVJFRCBFTlRSSUVTIF5eXlxuIik7CisJCQllbHNlCisJCQkJZGJfcHJpbnRm
KCIoTm8gd2lyZWQgZW50cmllcy4pXG4iKTsKKwkJfQorCisJCS8qIFhYWCBQYWdlTWFzay4gICov
CisJCWVoaSA9IHRsYl9zdGF0ZVtjcHVdLmVudHJ5W2ldLmVudHJ5aGk7CisJCWVsbzAgPSB0bGJf
c3RhdGVbY3B1XS5lbnRyeVtpXS5lbnRyeWxvMDsKKwkJZWxvMSA9IHRsYl9zdGF0ZVtjcHVdLmVu
dHJ5W2ldLmVudHJ5bG8xOworCisJCWlmIChlbG8wID09IDAgJiYgZWxvMSA9PSAwKQorCQkJY29u
dGludWU7CisKKwkJZGJfcHJpbnRmKCIjJXVcdD0+ICVqeFxuIiwgaSwgKGludG1heF90KWVoaSk7
CisJCWRiX3ByaW50ZigiIExvMFx0JWp4XHQoJSNqeClcbiIsIChpbnRtYXhfdCllbG8wLCAoaW50
bWF4X3QpVExCTE9fUFRFX1RPX1BBKGVsbzApKTsKKwkJZGJfcHJpbnRmKCIgTG8xXHQlanhcdCgl
I2p4KVxuIiwgKGludG1heF90KWVsbzEsIChpbnRtYXhfdClUTEJMT19QVEVfVE9fUEEoZWxvMSkp
OworCX0KKwlkYl9wcmludGYoIkZpbmlzaGVkLlxuIik7Cit9CisjZW5kaWYKSW5kZXg6IHN5cy9t
aXBzL21pcHMvY3B1LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy9jcHUuYwkocmV2aXNp
b24gMjA5MTkzKQorKysgc3lzL21pcHMvbWlwcy9jcHUuYwkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvaW50cl9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8
bWFjaGluZS9sb2NvcmUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3B0ZS5oPgorI2luY2x1ZGUgPG1h
Y2hpbmUvdGxiLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9od2Z1bmMuaD4KIAogc3RydWN0IG1pcHNf
Y3B1aW5mbyBjcHVpbmZvOwpAQCAtMTM1LDkgKzEzNiw5IEBACiAJcGxhdGZvcm1fY3B1X2luaXQo
KTsKIAltaXBzX2dldF9pZGVudGl0eSgmY3B1aW5mbyk7CiAJbnVtX3RsYmVudHJpZXMgPSBjcHVp
bmZvLnRsYl9uZW50cmllczsKLQlNaXBzX1NldFdJUkVEKDApOwotCU1pcHNfVExCRmx1c2gobnVt
X3RsYmVudHJpZXMpOwotCU1pcHNfU2V0V0lSRUQoVk1XSVJFRF9FTlRSSUVTKTsKKwltaXBzX3dy
X3dpcmVkKDApOworCXRsYl9pbnZhbGlkYXRlX2FsbCgpOworCW1pcHNfd3Jfd2lyZWQoVk1XSVJF
RF9FTlRSSUVTKTsKIAltaXBzX2NvbmZpZ19jYWNoZSgmY3B1aW5mbyk7CiAJbWlwc192ZWN0b3Jf
aW5pdCgpOwogCkluZGV4OiBzeXMvbWlwcy9taXBzL3BtYXAuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
bWlwcy9taXBzL3BtYXAuYwkocmV2aXNpb24gMjA5MTkzKQorKysgc3lzL21pcHMvbWlwcy9wbWFw
LmMJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAKIAogI2luY2x1ZGUgPG1hY2hpbmUv
Y2FjaGUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL21kX3Zhci5oPgorI2luY2x1ZGUgPG1hY2hpbmUv
dGxiLmg+CiAKICNpZiBkZWZpbmVkKERJQUdOT1NUSUMpCiAjZGVmaW5lCVBNQVBfRElBR05PU1RJ
QwpAQCAtMTUwLDggKzE1MSw2IEBACiAKIHZtX29mZnNldF90IGtlcm5lbF92bV9lbmQ7CiAKLXN0
YXRpYyBzdHJ1Y3QgdGxiIHRsYnN0YXNoW01BWENQVV1bTUlQU19NQVhfVExCX0VOVFJJRVNdOwot
CiBzdGF0aWMgdm9pZCBwbWFwX2FzaWRfYWxsb2MocG1hcF90IHBtYXApOwogCiAvKgpAQCAtMTgy
LDggKzE4MSw2IEBACiBzdGF0aWMgdm1fcGFnZV90IF9wbWFwX2FsbG9jcHRlKHBtYXBfdCBwbWFw
LCB1bnNpZ25lZCBwdGVwaW5kZXgsIGludCBmbGFncyk7CiBzdGF0aWMgaW50IHBtYXBfdW51c2Vf
cHQocG1hcF90LCB2bV9vZmZzZXRfdCwgdm1fcGFnZV90KTsKIHN0YXRpYyBpbnQgaW5pdF9wdGVf
cHJvdCh2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Byb3RfdCBwcm90KTsKLXN0YXRp
YyB2b2lkIHBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHZtX29mZnNldF90KTsKLXN0YXRpYyB2
b2lkIHBtYXBfVExCX3VwZGF0ZV9rZXJuZWwodm1fb2Zmc2V0X3QsIHB0X2VudHJ5X3QpOwogc3Rh
dGljIHZtX3BhZ2VfdCBwbWFwX2FsbG9jX3B0ZV9wYWdlKHBtYXBfdCwgdW5zaWduZWQgaW50LCBp
bnQsIHZtX29mZnNldF90ICopOwogc3RhdGljIHZvaWQgcG1hcF9yZWxlYXNlX3B0ZV9wYWdlKHZt
X3BhZ2VfdCk7CiAKQEAgLTIyMyw3ICsyMjAsNyBAQAogCWludHIgPSBpbnRyX2Rpc2FibGUoKTsJ
CQkJCQlcCiAJc2NoZWRfcGluKCk7CQkJCQkJCVwKIAl2YSA9IHN5c20tPmJhc2U7CQkJCQkJXAot
CW5wdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwaHlzKSB8CQkJCVwKKwlucHRlID0gVExCTE9f
UEFfVE9fUEZOKHBoeXMpIHwJCQkJCVwKIAkgICAgUFRFX1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBU
RV9XIHwgUFRFX0NBQ0hFOwkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEpOwkJ
CQlcCiAJKnB0ZSA9IG5wdGU7CQkJCQkJCVwKQEAgLTI0MSwxMSArMjM4LDExIEBACiAJc2NoZWRf
cGluKCk7CQkJCQkJCVwKIAl2YTEgPSBzeXNtLT5iYXNlOwkJCQkJCVwKIAl2YTIgPSBzeXNtLT5i
YXNlICsgUEFHRV9TSVpFOwkJCQkJXAotCW5wdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwaHlz
MSkgfAkJCQlcCisJbnB0ZSA9IFRMQkxPX1BBX1RPX1BGTihwaHlzMSkgfAkJCQkJXAogCSAgICBQ
VEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ0FDSEU7CQkJXAogCXB0ZSA9IHBt
YXBfcHRlKGtlcm5lbF9wbWFwLCB2YTEpOwkJCQlcCiAJKnB0ZSA9IG5wdGU7CQkJCQkJCVwKLQlu
cHRlID0gbWlwc19wYWRkcl90b190bGJwZm4ocGh5czIpIHwJCQkJXAorCW5wdGUgPSAgVExCTE9f
UEFfVE9fUEZOKHBoeXMyKSB8CQkJCVwKIAkgICAgUFRFX1JXIHwgUFRFX1YgfCBQVEVfRyB8IFBU
RV9XIHwgUFRFX0NBQ0hFOwkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwgdmEyKTsJ
CQkJXAogCSpwdGUgPSBucHRlOwkJCQkJCQlcCkBAIC0yNTUsMTEgKzI1MiwxMSBAQAogI2RlZmlu
ZQlQTUFQX0xNRU1fVU5NQVAoKQkJCQkJCVwKIAlwdGUgPSBwbWFwX3B0ZShrZXJuZWxfcG1hcCwg
c3lzbS0+YmFzZSk7CQkJXAogCSpwdGUgPSBQVEVfRzsJCQkJCQkJXAotCXBtYXBfVExCX2ludmFs
aWRhdGVfa2VybmVsKHN5c20tPmJhc2UpOwkJCQlcCisJdGxiX2ludmFsaWRhdGVfYWRkcmVzcyhr
ZXJuZWxfcG1hcCwgc3lzbS0+YmFzZSk7CQlcCiAJc3lzbS0+dmFsaWQxID0gMDsJCQkJCQlcCiAJ
cHRlID0gcG1hcF9wdGUoa2VybmVsX3BtYXAsIHN5c20tPmJhc2UgKyBQQUdFX1NJWkUpOwkJXAog
CSpwdGUgPSBQVEVfRzsJCQkJCQkJXAotCXBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHN5c20t
PmJhc2UgKyBQQUdFX1NJWkUpOwkJXAorCXRsYl9pbnZhbGlkYXRlX2FkZHJlc3Moa2VybmVsX3Bt
YXAsIHN5c20tPmJhc2UgKyBQQUdFX1NJWkUpOwlcCiAJc3lzbS0+dmFsaWQyID0gMDsJCQkJCQlc
CiAJc2NoZWRfdW5waW4oKTsJCQkJCQkJXAogCWludHJfcmVzdG9yZShpbnRyKTsJCQkJCQlcCkBA
IC00OTksNyArNDk2LDcgQEAKIAlrZXJuZWxfcG1hcC0+cG1fYXNpZFswXS5hc2lkID0gUE1BUF9B
U0lEX1JFU0VSVkVEOwogCWtlcm5lbF9wbWFwLT5wbV9hc2lkWzBdLmdlbiA9IDA7CiAJcG1hcF9t
YXhfYXNpZCA9IFZNTlVNX1BJRFM7Ci0JTWFjaFNldFBJRCgwKTsKKwltaXBzX3dyX2VudHJ5aGko
MCk7CiB9CiAKIC8qCkBAIC01NzYsOSArNTczLDE0IEBACiAKICNlbmRpZgogCi0JaWYgKHBtYXAt
PnBtX2FjdGl2ZSAmIFBDUFVfR0VUKGNwdW1hc2spKSB7Ci0JCXBtYXBfVExCX2ludmFsaWRhdGVf
YWxsKCk7Ci0JfSBlbHNlCisJaWYgKHBtYXAgPT0ga2VybmVsX3BtYXApIHsKKwkJdGxiX2ludmFs
aWRhdGVfYWxsKCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAocG1hcC0+cG1fYWN0aXZlICYgUENQ
VV9HRVQoY3B1bWFzaykpCisJCXRsYl9pbnZhbGlkYXRlX2FsbF91c2VyKHBtYXApOworCWVsc2UK
IAkJcG1hcC0+cG1fYXNpZFtQQ1BVX0dFVChjcHVpZCldLmdlbiA9IDA7CiB9CiAKQEAgLTYwOCw3
ICs2MTAsNyBAQAogI2VuZGlmCiAKIAlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkpIHsKLQkJcG1h
cF9UTEJfaW52YWxpZGF0ZV9rZXJuZWwodmEpOworCQl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKHBt
YXAsIHZhKTsKIAkJcmV0dXJuOwogCX0KIAlpZiAocG1hcC0+cG1fYXNpZFtQQ1BVX0dFVChjcHVp
ZCldLmdlbiAhPSBQQ1BVX0dFVChhc2lkX2dlbmVyYXRpb24pKQpAQCAtNjE3LDIwICs2MTksOSBA
QAogCQlwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0uZ2VuID0gMDsKIAkJcmV0dXJuOwog
CX0KLQl2YSA9IHBtYXBfdmFfYXNpZChwbWFwLCAodmEgJiB+UEFHRV9NQVNLKSk7Ci0JbWlwc19U
QklTKHZhKTsKKwl0bGJfaW52YWxpZGF0ZV9hZGRyZXNzKHBtYXAsIHZhKTsKIH0KIAotc3RhdGlj
IHZvaWQKLXBtYXBfVExCX2ludmFsaWRhdGVfa2VybmVsKHZtX29mZnNldF90IHZhKQotewotCXVf
aW50MzJfdCBwaWQ7Ci0KLQlNYWNoVExCR2V0UElEKHBpZCk7Ci0JdmEgPSB2YSB8IChwaWQgPDwg
Vk1UTEJfUElEX1NISUZUKTsKLQltaXBzX1RCSVModmEpOwotfQotCiBzdHJ1Y3QgcG1hcF91cGRh
dGVfcGFnZV9hcmcgewogCXBtYXBfdCBwbWFwOwogCXZtX29mZnNldF90IHZhOwpAQCAtNjU5LDcg
KzY1MCw3IEBACiAKICNlbmRpZgogCWlmIChpc19rZXJuZWxfcG1hcChwbWFwKSkgewotCQlwbWFw
X1RMQl91cGRhdGVfa2VybmVsKHZhLCBwdGUpOworCQl0bGJfdXBkYXRlKHBtYXAsIHZhLCBwdGUp
OwogCQlyZXR1cm47CiAJfQogCWlmIChwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0uZ2Vu
ICE9IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpCkBAIC02NjgsMjMgKzY1OSw5IEBACiAJCXBt
YXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5nZW4gPSAwOwogCQlyZXR1cm47CiAJfQotCXZh
ID0gcG1hcF92YV9hc2lkKHBtYXAsICh2YSAmIH5QQUdFX01BU0spKTsKLQlNYWNoVExCVXBkYXRl
KHZhLCBwdGUpOworCXRsYl91cGRhdGUocG1hcCwgdmEsIHB0ZSk7CiB9CiAKLXN0YXRpYyB2b2lk
Ci1wbWFwX1RMQl91cGRhdGVfa2VybmVsKHZtX29mZnNldF90IHZhLCBwdF9lbnRyeV90IHB0ZSkK
LXsKLQl1X2ludDMyX3QgcGlkOwotCi0JdmEgJj0gflBBR0VfTUFTSzsKLQotCU1hY2hUTEJHZXRQ
SUQocGlkKTsKLQl2YSA9IHZhIHwgKHBpZCA8PCBWTVRMQl9QSURfU0hJRlQpOwotCi0JTWFjaFRM
QlVwZGF0ZSh2YSwgcHRlKTsKLX0KLQogLyoKICAqCVJvdXRpbmU6CXBtYXBfZXh0cmFjdAogICoJ
RnVuY3Rpb246CkBAIC03MDAsNyArNjc3LDcgQEAKIAlQTUFQX0xPQ0socG1hcCk7CiAJcHRlID0g
cG1hcF9wdGUocG1hcCwgdmEpOwogCWlmIChwdGUpIHsKLQkJcmV0dmFsID0gbWlwc190bGJwZm5f
dG9fcGFkZHIoKnB0ZSkgfCAodmEgJiBQQUdFX01BU0spOworCQlyZXR2YWwgPSBUTEJMT19QVEVf
VE9fUEEoKnB0ZSkgfCAodmEgJiBQQUdFX01BU0spOwogCX0KIAlQTUFQX1VOTE9DSyhwbWFwKTsK
IAlyZXR1cm4gcmV0dmFsOwpAQCAtNzI3LDEwICs3MDQsMTAgQEAKIAlwdGUgPSAqcG1hcF9wdGUo
cG1hcCwgdmEpOwogCWlmIChwdGUgIT0gMCAmJiBwbWFwX3B0ZV92KCZwdGUpICYmCiAJICAgICgo
cHRlICYgUFRFX1JXKSB8fCAocHJvdCAmIFZNX1BST1RfV1JJVEUpID09IDApKSB7Ci0JCWlmICh2
bV9wYWdlX3BhX3RyeXJlbG9jayhwbWFwLCBtaXBzX3RsYnBmbl90b19wYWRkcihwdGUpLCAmcGEp
KQorCQlpZiAodm1fcGFnZV9wYV90cnlyZWxvY2socG1hcCwgVExCTE9fUFRFX1RPX1BBKHB0ZSks
ICZwYSkpCiAJCQlnb3RvIHJldHJ5OwogCi0JCW0gPSBQSFlTX1RPX1ZNX1BBR0UobWlwc190bGJw
Zm5fdG9fcGFkZHIocHRlKSk7CisJCW0gPSBQSFlTX1RPX1ZNX1BBR0UoVExCTE9fUFRFX1RPX1BB
KHB0ZSkpOwogCQl2bV9wYWdlX2hvbGQobSk7CiAJfQogCVBBX1VOTE9DS19DT05EKHBhKTsKQEAg
LTc1NCw3ICs3MzEsNyBAQAogI2lmZGVmIFBNQVBfREVCVUcKIAlwcmludGYoInBtYXBfa2VudGVy
OiAgdmE6IDB4JTA4eCAtPiBwYTogMHglMDh4XG4iLCB2YSwgcGEpOwogI2VuZGlmCi0JbnB0ZSA9
IG1pcHNfcGFkZHJfdG9fdGxicGZuKHBhKSB8IFBURV9SVyB8IFBURV9WIHwgUFRFX0cgfCBQVEVf
VzsKKwlucHRlID0gVExCTE9fUEFfVE9fUEZOKHBhKSB8IFBURV9SVyB8IFBURV9WIHwgUFRFX0cg
fCBQVEVfVzsKIAogCWlmIChpc19jYWNoZWFibGVfbWVtKHBhKSkKIAkJbnB0ZSB8PSBQVEVfQ0FD
SEU7CkBAIC0xNDg0LDcgKzE0NjEsNyBAQAogCQlwbWFwLT5wbV9zdGF0cy53aXJlZF9jb3VudCAt
PSAxOwogCiAJcG1hcC0+cG1fc3RhdHMucmVzaWRlbnRfY291bnQgLT0gMTsKLQlwYSA9IG1pcHNf
dGxicGZuX3RvX3BhZGRyKG9sZHB0ZSk7CisJcGEgPSBUTEJMT19QVEVfVE9fUEEob2xkcHRlKTsK
IAogCWlmIChwYWdlX2lzX21hbmFnZWQocGEpKSB7CiAJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEp
OwpAQCAtMTcwMCw3ICsxNjc3LDcgQEAKIAkJfQogcmV0cnk6CiAJCW9iaXRzID0gcGJpdHMgPSAq
cHRlOwotCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKHBiaXRzKTsKKwkJcGEgPSBUTEJMT19Q
VEVfVE9fUEEocGJpdHMpOwogCiAJCWlmIChwYWdlX2lzX21hbmFnZWQocGEpICYmIChwYml0cyAm
IFBURV9NKSAhPSAwKSB7CiAJCQltID0gUEhZU19UT19WTV9QQUdFKHBhKTsKQEAgLTE3NzYsNyAr
MTc1Myw3IEBACiAJcGEgPSBWTV9QQUdFX1RPX1BIWVMobSk7CiAJb20gPSBOVUxMOwogCW9yaWdw
dGUgPSAqcHRlOwotCW9wYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKG9yaWdwdGUpOworCW9wYSA9
IFRMQkxPX1BURV9UT19QQShvcmlncHRlKTsKIAogCS8qCiAJICogTWFwcGluZyBoYXMgbm90IGNo
YW5nZWQsIG11c3QgYmUgcHJvdGVjdGlvbiBvciB3aXJpbmcgY2hhbmdlLgpAQCAtMTg3Myw3ICsx
ODUwLDcgQEAKIAkvKgogCSAqIE5vdyB2YWxpZGF0ZSBtYXBwaW5nIHdpdGggZGVzaXJlZCBwcm90
ZWN0aW9uL3dpcmluZy4KIAkgKi8KLQluZXdwdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkg
fCBydyB8IFBURV9WOworCW5ld3B0ZSA9IFRMQkxPX1BBX1RPX1BGTihwYSkgfCBydyB8IFBURV9W
OwogCiAJaWYgKGlzX2NhY2hlYWJsZV9tZW0ocGEpKQogCQluZXdwdGUgfD0gUFRFX0NBQ0hFOwpA
QCAtMjAzOSw3ICsyMDE2LDcgQEAKIAkvKgogCSAqIE5vdyB2YWxpZGF0ZSBtYXBwaW5nIHdpdGgg
Uk8gcHJvdGVjdGlvbgogCSAqLwotCSpwdGUgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkgfCBQ
VEVfVjsKKwkqcHRlID0gVExCTE9fUEFfVE9fUEZOKHBhKSB8IFBURV9WOwogCiAJaWYgKGlzX2Nh
Y2hlYWJsZV9tZW0ocGEpKQogCQkqcHRlIHw9IFBURV9DQUNIRTsKQEAgLTIwOTIsNyArMjA2OSw3
IEBACiAJCWNwdSA9IFBDUFVfR0VUKGNwdWlkKTsKIAkJc3lzbSA9ICZzeXNtYXBfbG1lbVtjcHVd
OwogCQkvKiBTaW5jZSB0aGlzIGlzIGZvciB0aGUgZGVidWdnZXIsIG5vIGxvY2tzIG9yIGFueSBv
dGhlciBmdW4gKi8KLQkJbnB0ZSA9IG1pcHNfcGFkZHJfdG9fdGxicGZuKHBhKSB8IFBURV9SVyB8
IFBURV9WIHwgUFRFX0cgfCBQVEVfVyB8IFBURV9DQUNIRTsKKwkJbnB0ZSA9IFRMQkxPX1BBX1RP
X1BGTihwYSkgfCBQVEVfUlcgfCBQVEVfViB8IFBURV9HIHwgUFRFX1cgfCBQVEVfQ0FDSEU7CiAJ
CXB0ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCBzeXNtLT5iYXNlKTsKIAkJKnB0ZSA9IG5wdGU7
CiAJCXN5c20tPnZhbGlkMSA9IDE7CkBAIC0yNDA3LDcgKzIzODQsNyBAQAogCQl9CiAJCSpwdGUg
PSBpc19rZXJuZWxfcG1hcChwbWFwKSA/IFBURV9HIDogMDsKIAotCQltID0gUEhZU19UT19WTV9Q
QUdFKG1pcHNfdGxicGZuX3RvX3BhZGRyKHRwdGUpKTsKKwkJbSA9IFBIWVNfVE9fVk1fUEFHRShU
TEJMT19QVEVfVE9fUEEodHB0ZSkpOwogCQlLQVNTRVJUKG0gIT0gTlVMTCwKIAkJICAgICgicG1h
cF9yZW1vdmVfcGFnZXM6IGJhZCB0cHRlICV4IiwgdHB0ZSkpOwogCkBAIC0yODE0LDcgKzI3OTEs
NyBAQAogCXZhbCA9IE1JTkNPUkVfSU5DT1JFOwogCWlmICgocHRlICYgUFRFX00pICE9IDApCiAJ
CXZhbCB8PSBNSU5DT1JFX01PRElGSUVEIHwgTUlOQ09SRV9NT0RJRklFRF9PVEhFUjsKLQlwYSA9
IG1pcHNfdGxicGZuX3RvX3BhZGRyKHB0ZSk7CisJcGEgPSBUTEJMT19QVEVfVE9fUEEocHRlKTsK
IAltYW5hZ2VkID0gcGFnZV9pc19tYW5hZ2VkKHBhKTsKIAlpZiAobWFuYWdlZCkgewogCQkvKgpA
QCAtMjg1Niw3ICsyODMzLDcgQEAKIAlwbWFwX2FzaWRfYWxsb2MocG1hcCk7CiAJaWYgKHRkID09
IGN1cnRocmVhZCkgewogCQlQQ1BVX1NFVChzZWdiYXNlLCBwbWFwLT5wbV9zZWd0YWIpOwotCQlN
YWNoU2V0UElEKHBtYXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5hc2lkKTsKKwkJbWlwc193
cl9lbnRyeWhpKHBtYXAtPnBtX2FzaWRbUENQVV9HRVQoY3B1aWQpXS5hc2lkKTsKIAl9CiAKIAlQ
Q1BVX1NFVChjdXJwbWFwLCBwbWFwKTsKQEAgLTI5NDgsNyArMjkyNSw3IEBACiAJCQkJCQkJdm1f
b2Zmc2V0X3QgcGE7CiAJCQkJCQkJdm1fcGFnZV90IG07CiAKLQkJCQkJCQlwYSA9IG1pcHNfdGxi
cGZuX3RvX3BhZGRyKCpwdGUpOworCQkJCQkJCXBhID0gVExCTE9fUEZOX1RPX1BBKCpwdGUpOwog
CQkJCQkJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEpOwogCQkJCQkJCXByaW50ZigidmE6ICVwLCBw
dDogJXAsIGg6ICVkLCB3OiAlZCwgZjogMHgleCIsCiAJCQkJCQkJICAgICh2b2lkICopdmEsCkBA
IC0zMDQ0LDcgKzMwMjEsNyBAQAogCSAgICBwbWFwLT5wbV9hc2lkW1BDUFVfR0VUKGNwdWlkKV0u
Z2VuID09IFBDUFVfR0VUKGFzaWRfZ2VuZXJhdGlvbikpOwogCWVsc2UgewogCQlpZiAoUENQVV9H
RVQobmV4dF9hc2lkKSA9PSBwbWFwX21heF9hc2lkKSB7Ci0JCQlNSVBTX1RCSUFQKCk7CisJCQl0
bGJfaW52YWxpZGF0ZV9hbGxfdXNlcihOVUxMKTsKIAkJCVBDUFVfU0VUKGFzaWRfZ2VuZXJhdGlv
biwKIAkJCSAgICAoUENQVV9HRVQoYXNpZF9nZW5lcmF0aW9uKSArIDEpICYgQVNJREdFTl9NQVNL
KTsKIAkJCWlmIChQQ1BVX0dFVChhc2lkX2dlbmVyYXRpb24pID09IDApIHsKQEAgLTMxMjQsNyAr
MzEwMSw3IEBACiAJCWlmIChjdXJwcm9jICYmIGN1cnByb2MtPnBfdm1zcGFjZSkgewogCQkJcHRl
cCA9IHBtYXBfcHRlKCZjdXJwcm9jLT5wX3Ztc3BhY2UtPnZtX3BtYXAsIHZhKTsKIAkJCWlmIChw
dGVwKQotCQkJCXBhID0gbWlwc190bGJwZm5fdG9fcGFkZHIoKnB0ZXApIHwKKwkJCQlwYSA9IFRM
QkxPX1BURV9UT19QQSgqcHRlcCkgfAogCQkJCSAgICAodmEgJiBQQUdFX01BU0spOwogCQl9CiAJ
fSBlbHNlIGlmICh2YSA+PSBNSVBTX0tTRUcwX1NUQVJUICYmCkBAIC0zMTQwLDkgKzMxMTcsMTEg
QEAKIAkJaWYgKGtlcm5lbF9wbWFwLT5wbV9hY3RpdmUpIHsKIAkJCS8qIEl0cyBpbnNpZGUgdGhl
IHZpcnR1YWwgYWRkcmVzcyByYW5nZSAqLwogCQkJcHRlcCA9IHBtYXBfcHRlKGtlcm5lbF9wbWFw
LCB2YSk7Ci0JCQlpZiAocHRlcCkKLQkJCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKCpwdGVw
KSB8Ci0JCQkJICAgICh2YSAmIFBBR0VfTUFTSyk7CisJCQlpZiAocHRlcCkgeworCQkJCXJldHVy
biAoVExCTE9fUFRFX1RPX1BBKCpwdGVwKSB8CisJCQkJICAgICh2YSAmIFBBR0VfTUFTSykpOwor
CQkJfQorCQkJcmV0dXJuICgwKTsKIAkJfQogCX0KIAlyZXR1cm4gcGE7CkBAIC0zMTYwLDYxICsz
MTM5LDMgQEAKIAkJfQogCX0KIH0KLQotdm9pZAotcG1hcF9zYXZlX3RsYih2b2lkKQotewotCWlu
dCB0bGJubywgY3B1OwotCi0JY3B1ID0gUENQVV9HRVQoY3B1aWQpOwotCi0JZm9yICh0bGJubyA9
IDA7IHRsYm5vIDwgbnVtX3RsYmVudHJpZXM7ICsrdGxibm8pCi0JCU1hY2hUTEJSZWFkKHRsYm5v
LCAmdGxic3Rhc2hbY3B1XVt0bGJub10pOwotfQotCi0jaWZkZWYgRERCCi0jaW5jbHVkZSA8ZGRi
L2RkYi5oPgotCi1EQl9TSE9XX0NPTU1BTkQodGxiLCBkZGJfZHVtcF90bGIpCi17Ci0JaW50IGNw
dSwgdGxibm87Ci0Jc3RydWN0IHRsYiAqdGxiOwotCi0JaWYgKGhhdmVfYWRkcikKLQkJY3B1ID0g
KChhZGRyID4+IDQpICUgMTYpICogMTAgKyAoYWRkciAlIDE2KTsKLQllbHNlCi0JCWNwdSA9IFBD
UFVfR0VUKGNwdWlkKTsKLQotCWlmIChjcHUgPCAwIHx8IGNwdSA+PSBtcF9uY3B1cykgewotCQlk
Yl9wcmludGYoIkludmFsaWQgQ1BVICVkXG4iLCBjcHUpOwotCQlyZXR1cm47Ci0JfSBlbHNlCi0J
CWRiX3ByaW50ZigiQ1BVICVkOlxuIiwgY3B1KTsKLQotCWlmIChjcHUgPT0gUENQVV9HRVQoY3B1
aWQpKQotCQlwbWFwX3NhdmVfdGxiKCk7Ci0KLQlmb3IgKHRsYm5vID0gMDsgdGxibm8gPCBudW1f
dGxiZW50cmllczsgKyt0bGJubykgewotCQl0bGIgPSAmdGxic3Rhc2hbY3B1XVt0bGJub107Ci0J
CWlmICh0bGItPnRsYl9sbzAgJiBQVEVfViB8fCB0bGItPnRsYl9sbzEgJiBQVEVfVikgewotCQkJ
cHJpbnRmKCJUTEIgJTJkIHZhZCAweCUwbHggIiwKLQkJCQl0bGJubywgKGxvbmcpKHRsYi0+dGxi
X2hpICYgMHhmZmZmZmYwMCkpOwotCQl9IGVsc2UgewotCQkJcHJpbnRmKCJUTEIqJTJkIHZhZCAw
eCUwbHggIiwKLQkJCQl0bGJubywgKGxvbmcpKHRsYi0+dGxiX2hpICYgMHhmZmZmZmYwMCkpOwot
CQl9Ci0JCXByaW50ZigiMD0weCUwbHggIiwgcGZuX3RvX3ZhZCgobG9uZyl0bGItPnRsYl9sbzAp
KTsKLQkJcHJpbnRmKCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9WID8gJ1YnIDogJy0nKTsKLQkJ
cHJpbnRmKCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9NID8gJ00nIDogJy0nKTsKLQkJcHJpbnRm
KCIlYyIsIHRsYi0+dGxiX2xvMCAmIFBURV9HID8gJ0cnIDogJy0nKTsKLQkJcHJpbnRmKCIgYXRy
ICV4ICIsICh0bGItPnRsYl9sbzAgPj4gMykgJiA3KTsKLQkJcHJpbnRmKCIxPTB4JTBseCAiLCBw
Zm5fdG9fdmFkKChsb25nKXRsYi0+dGxiX2xvMSkpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJf
bG8xICYgUFRFX1YgPyAnVicgOiAnLScpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJfbG8xICYg
UFRFX00gPyAnTScgOiAnLScpOwotCQlwcmludGYoIiVjIiwgdGxiLT50bGJfbG8xICYgUFRFX0cg
PyAnRycgOiAnLScpOwotCQlwcmludGYoIiBhdHIgJXggIiwgKHRsYi0+dGxiX2xvMSA+PiAzKSAm
IDcpOwotCQlwcmludGYoIiBzej0leCBwaWQ9JXhcbiIsIHRsYi0+dGxiX21hc2ssCi0JCSAgICAg
ICAodGxiLT50bGJfaGkgJiAweDAwMDAwMGZmKSk7Ci0JfQotfQotI2VuZGlmCS8qIEREQiAqLwpJ
bmRleDogc3lzL21pcHMvbWlwcy9tcF9tYWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMv
bWlwcy9tcF9tYWNoZGVwLmMJKHJldmlzaW9uIDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvbXBf
bWFjaGRlcC5jCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSA8bWFj
aGluZS9od2Z1bmMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL2ludHJfbWFjaGRlcC5oPgogI2luY2x1
ZGUgPG1hY2hpbmUvY2FjaGUuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3RsYi5oPgogCiBzdHJ1Y3Qg
cGNiIHN0b3BwY2JzW01BWENQVV07CiAKQEAgLTEyOCw3ICsxMjksNyBAQAogCQkJQ1RSMChLVFJf
U01QLCAiSVBJX1NUT1Agb3IgSVBJX1NUT1BfSEFSRCIpOwogCiAJCQlzYXZlY3R4KCZzdG9wcGNi
c1tjcHVdKTsKLQkJCXBtYXBfc2F2ZV90bGIoKTsKKwkJCXRsYl9zYXZlKCk7CiAKIAkJCS8qIElu
ZGljYXRlIHdlIGFyZSBzdG9wcGVkICovCiAJCQlhdG9taWNfc2V0X2ludCgmc3RvcHBlZF9jcHVz
LCBjcHVtYXNrKTsKQEAgLTIzOCw5ICsyMzksOSBAQAogc21wX2luaXRfc2Vjb25kYXJ5KHVfaW50
MzJfdCBjcHVpZCkKIHsKIAkvKiBUTEIgKi8KLQlNaXBzX1NldFdJUkVEKDApOwotCU1pcHNfVExC
Rmx1c2gobnVtX3RsYmVudHJpZXMpOwotCU1pcHNfU2V0V0lSRUQoVk1XSVJFRF9FTlRSSUVTKTsK
KwltaXBzX3dyX3dpcmVkKDApOworCXRsYl9pbnZhbGlkYXRlX2FsbCgpOworCW1pcHNfd3Jfd2ly
ZWQoVk1XSVJFRF9FTlRSSUVTKTsKIAogCS8qCiAJICogV2UgYXNzdW1lIHRoYXQgdGhlIEwxIGNh
Y2hlIG9uIHRoZSBBUHMgaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUKQEAgLTI1MSw3ICsyNTIsNyBA
QAogCiAJbWlwc19zeW5jKCk7CiAKLQlNYWNoU2V0UElEKDApOworCW1pcHNfd3JfZW50cnloaSgw
KTsKIAogCXBjcHVfaW5pdChQQ1BVX0FERFIoY3B1aWQpLCBjcHVpZCwgc2l6ZW9mKHN0cnVjdCBw
Y3B1KSk7CiAJZHBjcHVfaW5pdChkcGNwdSwgY3B1aWQpOwpJbmRleDogc3lzL21pcHMvbWlwcy9t
YWNoZGVwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMvbWlwcy9tYWNoZGVwLmMJKHJldmlzaW9u
IDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvbWFjaGRlcC5jCSh3b3JraW5nIGNvcHkpCkBAIC04
OSw2ICs4OSw3IEBACiAjaW5jbHVkZSA8bWFjaGluZS9od2Z1bmMuaD4KICNpbmNsdWRlIDxtYWNo
aW5lL2ludHJfbWFjaGRlcC5oPgogI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+CisjaW5jbHVk
ZSA8bWFjaGluZS90bGIuaD4KICNpZmRlZiBEREIKICNpbmNsdWRlIDxzeXMva2RiLmg+CiAjaW5j
bHVkZSA8ZGRiL2RkYi5oPgpAQCAtMTE4LDcgKzExOSw3IEBACiAvKgogICogRWFjaCBlbnRyeSBp
biB0aGUgcGNwdV9zcGFjZVtdIGFycmF5IGlzIGxhaWQgb3V0IGluIHRoZSBmb2xsb3dpbmcgbWFu
bmVyOgogICogc3RydWN0IHBjcHUgZm9yIGNwdSAnbicJcGNwdV9zcGFjZVtuXQotICogYm9vdCBz
dGFjayBmb3IgY3B1ICduJwlwY3B1X3NwYWNlW25dICsgUEFHRV9TSVpFICogMiAtIFNUQVJUX0ZS
QU1FCisgKiBib290IHN0YWNrIGZvciBjcHUgJ24nCXBjcHVfc3BhY2Vbbl0gKyBQQUdFX1NJWkUg
KiAyIC0gQ0FMTEZSQU1FX1NJWgogICoKICAqIE5vdGUgdGhhdCB0aGUgYm9vdCBzdGFjayBncm93
cyBkb3dud2FyZHMgYW5kIHdlIGFzc3VtZSB0aGF0IHdlIG5ldmVyCiAgKiB1c2UgZW5vdWdoIHN0
YWNrIHNwYWNlIHRvIHRyYW1wbGUgb3ZlciB0aGUgJ3N0cnVjdCBwY3B1JyB0aGF0IGlzIGF0CkBA
IC00MTMsMjAgKzQxNCwxNyBAQAogbWlwc19wY3B1X3RsYl9pbml0KHN0cnVjdCBwY3B1ICpwY3B1
KQogewogCXZtX3BhZGRyX3QgcGE7Ci0Jc3RydWN0IHRsYiB0bGI7Ci0JaW50IGxvYml0czsKKwlw
dF9lbnRyeV90IHB0ZTsKIAogCS8qCiAJICogTWFwIHRoZSBwY3B1IHN0cnVjdHVyZSBhdCB0aGUg
dmlydHVhbCBhZGRyZXNzICdwY3B1cCcuCiAJICogV2UgdXNlIGEgd2lyZWQgdGxiIGluZGV4IHRv
IGRvIHRoaXMgb25lLXRpbWUgbWFwcGluZy4KIAkgKi8KLQltZW1zZXQoJnRsYiwgMCwgc2l6ZW9m
KHRsYikpOwogCXBhID0gdnRvcGh5cyhwY3B1KTsKLQlsb2JpdHMgPSBQVEVfUlcgfCBQVEVfViB8
IFBURV9HIHwgUFRFX0NBQ0hFOwotCXRsYi50bGJfaGkgPSAodm1fb2Zmc2V0X3QpcGNwdXA7Ci0J
dGxiLnRsYl9sbzAgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSkgfCBsb2JpdHM7Ci0JdGxiLnRs
Yl9sbzEgPSBtaXBzX3BhZGRyX3RvX3RsYnBmbihwYSArIFBBR0VfU0laRSkgfCBsb2JpdHM7Ci0J
TWlwc19UTEJXcml0ZUluZGV4ZWQoUENQVV9UTEJfRU5UUlksICZ0bGIpOworCXB0ZSA9IFBURV9S
VyB8IFBURV9WIHwgUFRFX0cgfCBQVEVfQ0FDSEU7CisJdGxiX2luc2VydF93aXJlZChQQ1BVX1RM
Ql9FTlRSWSwgKHZtX29mZnNldF90KXBjcHVwLAorCQkJIFRMQkxPX1BBX1RPX1BGTihwYSkgfCBw
dGUsCisJCQkgVExCTE9fUEFfVE9fUEZOKHBhICsgUEFHRV9TSVpFKSB8IHB0ZSk7CiB9CiAjZW5k
aWYKIApJbmRleDogc3lzL21pcHMvbWlwcy90cmFwLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL21pcHMv
bWlwcy90cmFwLmMJKHJldmlzaW9uIDIwOTE5MykKKysrIHN5cy9taXBzL21pcHMvdHJhcC5jCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTYsNyArMzk2LDcgQEAKIAkJCX0KIAkJCSpwdGUgfD0gbWlwc19w
Z19tX2JpdCgpOwogCQkJcG1hcF91cGRhdGVfcGFnZShrZXJuZWxfcG1hcCwgdHJhcGZyYW1lLT5i
YWR2YWRkciwgKnB0ZSk7Ci0JCQlwYSA9IG1pcHNfdGxicGZuX3RvX3BhZGRyKCpwdGUpOworCQkJ
cGEgPSBUTEJMT19QVEVfVE9fUEEoKnB0ZSk7CiAJCQlpZiAoIXBhZ2VfaXNfbWFuYWdlZChwYSkp
CiAJCQkJcGFuaWMoInRyYXA6IGt0bGJtb2Q6IHVubWFuYWdlZCBwYWdlIik7CiAJCQlwbWFwX3Nl
dF9tb2RpZmllZChwYSk7CkBAIC00MzUsNyArNDM1LDcgQEAKIAkJCX0KIAkJCSpwdGUgfD0gbWlw
c19wZ19tX2JpdCgpOwogCQkJcG1hcF91cGRhdGVfcGFnZShwbWFwLCB0cmFwZnJhbWUtPmJhZHZh
ZGRyLCAqcHRlKTsKLQkJCXBhID0gbWlwc190bGJwZm5fdG9fcGFkZHIoKnB0ZSk7CisJCQlwYSA9
IFRMQkxPX1BURV9UT19QQSgqcHRlKTsKIAkJCWlmICghcGFnZV9pc19tYW5hZ2VkKHBhKSkKIAkJ
CQlwYW5pYygidHJhcDogdXRsYm1vZDogdW5tYW5hZ2VkIHBhZ2UiKTsKIAkJCXBtYXBfc2V0X21v
ZGlmaWVkKHBhKTsK
--e0cb4e88758397b495048911b0d9--



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