Re: [SPAM] valias remove alias

Drew Wells <[email protected]> Fri, 18 Sep 2015 15:21:25 +0100
Newsgroups gmane.mail.vpopmail
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------020200030005040500050403
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

On 09/18/2015 02:47 PM, Matt Brookings wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Drew, I know you've put a lot of effort into these patches, but they do not succeed against the
> 5.5.0 trunk.  Patches should be made against the most recent revision, which can be checked out via
> Subversion from Sourceforge.
>
> On 09/18/2015 08:11 AM, Drew Wells wrote:
>> On 09/17/2015 04:55 PM, Matt Brookings wrote:
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>
>>> On 09/17/2015 10:52 AM, Drew Wells wrote:
>>>>>> I basically did a diff from 5.4.29 to 5.4.33 and implemented that diff to 5.5.0, some of
>>>>>> it had already been done to 5.5.0 and alot of it centered around the snprintf tidy up's
>>>>>> and the string_list implementation. The attached patch does not include any of the
>>>>>> changes I recently sent to the mailing list, just the changes from 5.4.[29->33].
>>>> This patch was generated from the 5.5.0 .tar.bz2, I had a look at SVN trunk and from what I
>>>> could see, it was 5.4.34.
>>> The trunk on Sourceforge is the current 5.5.0.  The 5.4 series only appears in the tags and
>>> branches area now.  I'll look over this patch and get it applied.  Thanks for putting it
>>> together!
>>>
>> And lastly for now, someone has done a lot of work in tidying up/making safe all the calls to
>> snprintf(), the attached patch completes this work (I think).  This patch comes after the
>> 5.4.[29->33] patch I did.
>>
>>
>
Ok, have have downloaded a snapshot .zip file from Sourceforge 
(vpopmail-code-1034.zip) and applied the changes to that and attached 
the patch.  This is the 5.4.[29-33] changes patch, I'll do the 
snprintf() one later.  Let me know if you need me to do anything else 
with it.


!DSPAM:55fc1de841551347274186!

--------------020200030005040500050403
Content-Type: text/plain; charset=UTF-8;
 name="vpopmail-code-1034-trunk-5.4.x.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="vpopmail-code-1034-trunk-5.4.x.patch"

ZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL2JhY2tlbmRzL215c3Fs
L3ZteXNxbC5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9iYWNrZW5kcy9teXNxbC92bXlz
cWwuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2VuZHMvbXlzcWwv
dm15c3FsLmMJMjAxMC0xMC0yNiAxODoxNTozNi4wMDAwMDAwMDAgKzAxMDAKKysrIHZwb3Bt
YWlsLWNvZGUtMTAzNC10cnVuay9iYWNrZW5kcy9teXNxbC92bXlzcWwuYwkyMDE1LTA5LTE4
IDE1OjAwOjA5LjgxMDA5NjY4MCArMDEwMApAQCAtMTc4NSwxMCArMTc4NSwxMCBAQAogICAg
ICAgICBsaW1pdHMtPm1heGZvcndhcmRzID0gYXRvaShyb3dbMl0pOwogICAgICAgICBsaW1p
dHMtPm1heGF1dG9yZXNwb25kZXJzID0gYXRvaShyb3dbM10pOwogICAgICAgICBsaW1pdHMt
Pm1heG1haWxpbmdsaXN0cyA9IGF0b2kocm93WzRdKTsKLSAgICAgICAgbGltaXRzLT5kaXNr
cXVvdGEgPSBhdG9pKHJvd1s1XSk7Ci0gICAgICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBh
dG9pKHJvd1s2XSk7Ci0gICAgICAgIGxpbWl0cy0+ZGVmYXVsdHF1b3RhID0gYXRvaShyb3db
N10pOwotICAgICAgICBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3VudCA9IGF0b2kocm93Wzhd
KTsKKyAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBzdHJ0b2xsKHJvd1s1XSwgTlVMTCwg
MTApOworICAgICAgICBsaW1pdHMtPm1heG1zZ2NvdW50ID0gc3RydG9sbChyb3dbNl0sIE5V
TEwsIDEwKTsKKyAgICAgICAgbGltaXRzLT5kZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKHJvd1s3
XSwgTlVMTCwgMTApOworICAgICAgICBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3VudCA9IHN0
cnRvbGwocm93WzhdLCBOVUxMLCAxMCk7CiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9wb3Ag
PSBhdG9pKHJvd1s5XSk7CiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9pbWFwID0gYXRvaShy
b3dbMTBdKTsKICAgICAgICAgbGltaXRzLT5kaXNhYmxlX2RpYWx1cCA9IGF0b2kocm93WzEx
XSk7CkBAIC0xODA4LDggKzE4MDgsOCBAQAogICAgICAgICBsaW1pdHMtPnBlcm1fbWFpbGxp
c3RfdXNlcnMgPSBwZXJtICYgVkxJTUlUX0RJU0FCTEVfQUxMOwogICAgICAgICBwZXJtID4+
PSBWTElNSVRfRElTQUJMRV9CSVRTOwogICAgICAgICBsaW1pdHMtPnBlcm1fbWFpbGxpc3Rf
bW9kZXJhdG9ycyA9IHBlcm0gJiBWTElNSVRfRElTQUJMRV9BTEw7Ci0gICAgICAgIGxpbWl0
cy0+cGVybV9xdW90YSA9IGF0b2kocm93WzIzXSk7Ci0gICAgICAgIGxpbWl0cy0+cGVybV9k
ZWZhdWx0cXVvdGEgPSBhdG9pKHJvd1syNF0pOworICAgICAgICBsaW1pdHMtPnBlcm1fcXVv
dGEgPSBzdHJ0b2xsKHJvd1syM10sIE5VTEwsIDEwKTsKKyAgICAgICAgbGltaXRzLT5wZXJt
X2RlZmF1bHRxdW90YSA9IHN0cnRvbGwocm93WzI0XSwgTlVMTCwgMTApOwogICAgIH0KICAg
ICBteXNxbF9mcmVlX3Jlc3VsdChyZXNfcmVhZCk7CiAKQEAgLTE4MzAsNyArMTgzMCw3IEBA
CiAgICAgICAgICJkaXNrcXVvdGEgPSAlZCwgbWF4bXNnY291bnQgPSAlZCwgZGVmYXVsdHF1
b3RhID0gJWQsIGRlZmF1bHRtYXhtc2djb3VudCA9ICVkLCAiCiAgICAgICAgICJkaXNhYmxl
X3BvcCA9ICVkLCBkaXNhYmxlX2ltYXAgPSAlZCwgZGlzYWJsZV9kaWFsdXAgPSAlZCwgIgog
ICAgICAgICAiZGlzYWJsZV9wYXNzd29yZGNoYW5naW5nID0gJWQsIGRpc2FibGVfd2VibWFp
bCA9ICVkLCBkaXNhYmxlX3JlbGF5ID0gJWQsICIKLSAgICAgICAgImRpc2FibGVfc210cCA9
ICVkLCBkaXNhYmxlX3NwYW1hc3Nhc3NpbiA9ICVkLCBkZWxldGVfc3BhbSA9ICVkLCBwZXJt
X2FjY291bnQgPSAlZCwgIgorICAgICAgICAiZGlzYWJsZV9zbXRwID0gJWQsIGRpc2FibGVf
c3BhbWFzc2Fzc2luID0gJWQsIGRlbGV0ZV9zcGFtID0gJWQsIGRpc2FibGVfbWFpbGRyb3Ag
PSAlZCwgcGVybV9hY2NvdW50ID0gJWQsICIKICAgICAgICAgInBlcm1fYWxpYXMgPSAlZCwg
cGVybV9mb3J3YXJkID0gJWQsIHBlcm1fYXV0b3Jlc3BvbmRlciA9ICVkLCBwZXJtX21haWxs
aXN0ID0gJWQsICIKICAgICAgICAgInBlcm1fcXVvdGEgPSAlZCwgcGVybV9kZWZhdWx0cXVv
dGEgPSAlZCAiCiAgICAgICAgICJPTiBEVVBMSUNBVEUgS0VZIFVQREFURSAiCkBAIC0xODQ3
LDcgKzE4NDcsNyBAQAogICAgICAgICBsaW1pdHMtPmRpc2txdW90YSwgbGltaXRzLT5tYXht
c2djb3VudCwgbGltaXRzLT5kZWZhdWx0cXVvdGEsIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2Nv
dW50LAogICAgICAgICBsaW1pdHMtPmRpc2FibGVfcG9wLCBsaW1pdHMtPmRpc2FibGVfaW1h
cCwgbGltaXRzLT5kaXNhYmxlX2RpYWx1cCwKICAgICAgICAgbGltaXRzLT5kaXNhYmxlX3Bh
c3N3b3JkY2hhbmdpbmcsIGxpbWl0cy0+ZGlzYWJsZV93ZWJtYWlsLCBsaW1pdHMtPmRpc2Fi
bGVfcmVsYXksCi0gICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9zbXRwLCBsaW1pdHMtPmRpc2Fi
bGVfc3BhbWFzc2Fzc2luLCBsaW1pdHMtPmRlbGV0ZV9zcGFtLCBsaW1pdHMtPnBlcm1fYWNj
b3VudCwKKyAgICAgICAgbGltaXRzLT5kaXNhYmxlX3NtdHAsIGxpbWl0cy0+ZGlzYWJsZV9z
cGFtYXNzYXNzaW4sIGxpbWl0cy0+ZGVsZXRlX3NwYW0sIGxpbWl0cy0+ZGlzYWJsZV9tYWls
ZHJvcCwgbGltaXRzLT5wZXJtX2FjY291bnQsCiAgICAgICAgIGxpbWl0cy0+cGVybV9hbGlh
cywgbGltaXRzLT5wZXJtX2ZvcndhcmQsIGxpbWl0cy0+cGVybV9hdXRvcmVzcG9uZGVyLAog
ICAgICAgICAobGltaXRzLT5wZXJtX21haWxsaXN0IHwKICAgICAgICAgICAgIChsaW1pdHMt
PnBlcm1fbWFpbGxpc3RfdXNlcnMgPDwgVkxJTUlUX0RJU0FCTEVfQklUUykgfApkaWZmIC11
UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3Fs
LmguaW4gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tlbmRzL215c3FsL3ZteXNxbC5o
LmluCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9iYWNrZW5kcy9teXNxbC92
bXlzcWwuaC5pbgkyMDEwLTEwLTI2IDE4OjE1OjM2LjAwMDAwMDAwMCArMDEwMAorKysgdnBv
cG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCTIwMTUt
MDktMTggMTU6MDA6MDkuODEwMDk2NjgwICswMTAwCkBAIC0yNjgsMTAgKzI2OCwxMCBAQAog
ICAgICAgbWF4Zm9yd2FyZHMgICAgICAgICAgICAgIElOVCgxMCkgTk9UIE5VTEwgREVGQVVM
VCAtMSwgXAogICAgICAgbWF4YXV0b3Jlc3BvbmRlcnMgICAgICAgIElOVCgxMCkgTk9UIE5V
TEwgREVGQVVMVCAtMSwgXAogICAgICAgbWF4bWFpbGluZ2xpc3RzICAgICAgICAgIElOVCgx
MCkgTk9UIE5VTEwgREVGQVVMVCAtMSwgXAotICAgICAgZGlza3F1b3RhICAgICAgICAgICAg
ICAgIElOVCgxMikgTk9UIE5VTEwgREVGQVVMVCAwLCBcCi0gICAgICBtYXhtc2djb3VudCAg
ICAgICAgICAgICAgSU5UKDEyKSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKLSAgICAgIGRlZmF1
bHRxdW90YSAgICAgICAgICAgICBJTlQoMTIpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAotICAg
ICAgZGVmYXVsdG1heG1zZ2NvdW50ICAgICAgIElOVCgxMikgTk9UIE5VTEwgREVGQVVMVCAw
LCBcCisgICAgICBkaXNrcXVvdGEgICAgICAgICAgICAgICAgQklHSU5UIFVOU0lHTkVEIE5P
VCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgbWF4bXNnY291bnQgICAgICAgICAgICAgIEJJ
R0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKKyAgICAgIGRlZmF1bHRxdW90
YSAgICAgICAgICAgICBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwLCBcCisg
ICAgICBkZWZhdWx0bWF4bXNnY291bnQgICAgICAgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxM
IERFRkFVTFQgMCwgXAogICAgICAgZGlzYWJsZV9wb3AgICAgICAgICAgICAgIFRJTllJTlQo
MSkgTk9UIE5VTEwgREVGQVVMVCAwLCBcCiAgICAgICBkaXNhYmxlX2ltYXAgICAgICAgICAg
ICAgVElOWUlOVCgxKSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKICAgICAgIGRpc2FibGVfZGlh
bHVwICAgICAgICAgICBUSU5ZSU5UKDEpIE5PVCBOVUxMIERFRkFVTFQgMCwgXApkaWZmIC11
UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2ZpbGwuYyB2cG9wbWFpbC1j
b2RlLTEwMzQtdHJ1bmsvYmFja2ZpbGwuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5r
Lm9yaWcvYmFja2ZpbGwuYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAor
KysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tmaWxsLmMJMjAxNS0wOS0xOCAxNTow
MDowOS44MTEwOTY2MjUgKzAxMDAKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlIDx1bmlz
dGQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgor
I2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSAidnBvcG1haWwuaCIKKyNpbmNsdWRlICJm
aWxlX2xvY2suaCIKICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxl
LmgiCiAKQEAgLTM3LDYgKzM5LDcgQEAKIAlpbnQgICAgICAgICAgICAgZmQ7CiAjaWZkZWYg
RklMRV9MT0NLSU5HCiAJaW50ICAgICAgICAgICAgIGxvY2tmZDsKKwljaGFyCQlsb2NrZmls
ZVtNQVhfQlVGRl07CiAjZW5kaWYKIAogCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zikp
CmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9jbGllbnQuYyB2cG9w
bWFpbC1jb2RlLTEwMzQtdHJ1bmsvY2xpZW50LmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10
cnVuay5vcmlnL2NsaWVudC5jCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICswMDAw
CisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvY2xpZW50LmMJMjAxNS0wOS0xOCAxNTow
MDowOS44MTEwOTY2MjUgKzAxMDAKQEAgLTc4LDY2ICs3OCw2NCBAQAogCiAgICBjb25maWcg
PSBjb25maWdfYmVnaW4oInZ1c2FnZWMuY29uZiIpOwogICAgaWYgKGNvbmZpZyA9PSBOVUxM
KQotCSAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogd2FybmluZzogY29uZmln
X2JlZ2luIGZhaWxlZFxuIik7CisJICByZXR1cm4gTlVMTDsKIAogICAgLyoKIAkgIERpc2Fi
bGVkIGNoZWNrCiAgICAqLwogCi0gICBlbHNlIHsKLQkgIHN0ciA9IGNvbmZpZ19mZXRjaF9i
eV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJEaXNhYmxlIik7Ci0JICBpZiAoKHN0cikgJiYg
KCpzdHIpKSB7Ci0JCSBpZiAoIShzdHJjYXNlY21wKHN0ciwgIlRydWUiKSkpIHsKLQkJCWNv
bmZpZ19raWxsKGNvbmZpZyk7Ci0JCQlyZXR1cm4gTlVMTDsKLQkJIH0KLQkgIH0KKyAgIHN0
ciA9IGNvbmZpZ19mZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJEaXNhYmxlIik7
CisgICBpZiAoKHN0cikgJiYgKCpzdHIpKSB7CisJaWYgKCEoc3RyY2FzZWNtcChzdHIsICJU
cnVlIikpKSB7CisJICAgIGNvbmZpZ19raWxsKGNvbmZpZyk7CisJICAgIHJldHVybiBOVUxM
OworCSB9CisgICB9CiAKLQkgIC8qCi0JCSBHZXQgdGltZW91dAotCSAgKi8KLQotCSAgc3Ry
ID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlRpbWVvdXQiKTsK
LQkgIGlmIChzdHIpIHsKLQkJIGZsID0gYXRvaShzdHIpOwotCQkgaWYgKChmbCA9PSAtMSkg
fHwgKGZsID09IDApKQotCQkJZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29u
ZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpUaW1lb3V0OiAlc1xuIiwgc3RyKTsKLQkJIGVs
c2UKLQkJCXRpbWVvdXQgPSBmbDsKLQkgIH0KKyAgIC8qCisJICBHZXQgdGltZW91dAorICAg
Ki8KIAotCSAgLyoKLQkJIERldGVybWluZSBjb25uZWN0aW9uIHR5cGUKLQkgICovCi0KLQkg
IHN0ciA9IGNvbmZpZ19mZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJSZW1vdGUi
KTsKLQkgIGlmIChzdHIpIHsKLQkJIHJldCA9IGlwcHBfcGFyc2Uoc3RyLCAmYWRkcik7Ci0J
CSBpZiAoIXJldCkgewotCQkJY29uZmlnX2tpbGwoY29uZmlnKTsKLQkJCWZwcmludGYoc3Rk
ZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6UmVt
b3RlOiAlc1xuIiwgc3RyKTsKLQkJCXJldHVybiBOVUxMOwotCQkgfQotCSAgfQorICAgc3Ry
ID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlRpbWVvdXQiKTsK
KyAgIGlmIChzdHIpIHsKKwlmbCA9IGF0b2koc3RyKTsKKwlpZiAoKGZsID09IC0xKSB8fCAo
ZmwgPT0gMCkpCisJICAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZp
Z3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6VGltZW91dDogJXNcbiIsIHN0cik7CisJZWxzZQor
CSAgICB0aW1lb3V0ID0gZmw7CisJfQogCi0JICBlbHNlIHsKLQkJIHN0ciA9IGNvbmZpZ19m
ZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJGaWxlbmFtZSIpOwotCQkgaWYgKHN0
cikgewotCQkJaWYgKCEoKnN0cikpIHsKLQkJCSAgIGNvbmZpZ19raWxsKGNvbmZpZyk7Ci0J
CQkgICBmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiBjb25maWd1cmF0aW9uIGVy
cm9yOiBTZXJ2ZXI6OkZpbGVuYW1lXG4iKTsKLQkJCSAgIHJldHVybiBOVUxMOwotCQkJfQot
Ci0JCQlmbCA9IHN0cmxlbihzdHIpOwotCQkJaWYgKGZsID49IHNpemVvZihzb2NrZXRfZmls
ZSkpCi0JCQkgICBmbCA9IChzaXplb2Yoc29ja2V0X2ZpbGUpIC0gMSk7CisgICAvKgorCSAg
RGV0ZXJtaW5lIGNvbm5lY3Rpb24gdHlwZQorICAgKi8KIAotCQkJbWVtY3B5KHNvY2tldF9m
aWxlLCBzdHIsIGZsKTsKLQkJIH0KLQkgIH0KKyAgIHN0ciA9IGNvbmZpZ19mZXRjaF9ieV9u
YW1lKGNvbmZpZywgIlNlcnZlciIsICJSZW1vdGUiKTsKKyAgIGlmIChzdHIpIHsKKwlyZXQg
PSBpcHBwX3BhcnNlKHN0ciwgJmFkZHIpOworCWlmICghcmV0KSB7CisJICAgIGNvbmZpZ19r
aWxsKGNvbmZpZyk7CisJICAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNv
bmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6UmVtb3RlOiAlc1xuIiwgc3RyKTsKKwkgICAg
cmV0dXJuIE5VTEw7CisJfQorICAgfQorCisgICBlbHNlIHsKKwlzdHIgPSBjb25maWdfZmV0
Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiRmlsZW5hbWUiKTsKKwlpZiAoc3RyKSB7
CisJICAgIGlmICghKCpzdHIpKSB7CisJCWNvbmZpZ19raWxsKGNvbmZpZyk7CisJCWZwcmlu
dGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZl
cjo6RmlsZW5hbWVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwkgICAgfQorCisJICAgIGZsID0g
c3RybGVuKHN0cik7CisJICAgIGlmIChmbCA+PSBzaXplb2Yoc29ja2V0X2ZpbGUpKQorCQlm
bCA9IChzaXplb2Yoc29ja2V0X2ZpbGUpIC0gMSk7CisKKwkgICAgbWVtY3B5KHNvY2tldF9m
aWxlLCBzdHIsIGZsKTsKKwl9CiAKLQkgIGNvbmZpZ19raWxsKGNvbmZpZyk7CisJY29uZmln
X2tpbGwoY29uZmlnKTsKICAgIH0KIAogICAgLyoKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUt
MTAzNC10cnVuay5vcmlnL2NvbmYuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvY29uZi5j
Ci0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9jb25mLmMJMjAwOS0wOS0wOCAx
NjowODo0My4wMDAwMDAwMDAgKzAxMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9j
b25mLmMJMjAxNS0wOS0xOCAxNTowMDowOS44MTIwOTY1NzIgKzAxMDAKQEAgLTc4NywxMyAr
Nzg3LDEyIEBACiBjaGFyICpjb25maWdfZmV0Y2hfYnlfbnVtKGNvbmZpZ190ICpjLCBjaGFy
ICpsYWJlbCwgaW50IG51bSkKIHsgIAogICBpbnQgY3VyID0gMDsKKyAgY29uZmlnX2xhYmVs
X3QgKmwgPSBOVUxMOworICBjb25maWdfYXRvbV90ICphID0gTlVMTDsKIAogICBpZiAoYyA9
PSBOVUxMKQogCSByZXR1cm4gTlVMTDsKIAotICBjb25maWdfbGFiZWxfdCAqbCA9IE5VTEw7
Ci0gIGNvbmZpZ19hdG9tX3QgKmEgPSBOVUxMOwotCiAgIGlmIChjLT5sYWJlbHMgPT0gTlVM
TCkKICAgICAgcmV0dXJuIE5VTEw7CiAKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10
cnVuay5vcmlnL2RvYy9VUEdSQURFIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9kb2MvVVBH
UkFERQotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvZG9jL1VQR1JBREUJMjAw
OS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAz
NC10cnVuay9kb2MvVVBHUkFERQkyMDE1LTA5LTE4IDE1OjAwOjA5LjgxMzA5NjUyMSArMDEw
MApAQCAtNCw2ICs0LDE1IEBACiBpbnRvIHRoZSB2cG9wbWFpbCBsaWJyYXJpZXMuICBUaGVz
ZSBpbmNsdWRlIFFtYWlsQWRtaW4sIHFtYWlsLXNtdHBkIChpZiAKIHlvdSBoYXZlIHRoZSBj
aGt1c2VyIHBhdGNoIGFwcGxpZWQpLCBDb3VyaWVyLUlNQVAgZXRjLgogCisrVXBncmFkaW5n
IHRvIHZwb3BtYWlsLTUuNC4zMworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytJ
ZiB5b3UgYXJlIHN0b3JpbmcgbGltaXRzIGluIE15U1FMLCB0aGUgZm9sbG93aW5nIHNjaGVt
YSBjaGFuZ2VzIG11c3QgYmUgbWFkZToKKysKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBBREQg
YGRpc2FibGVfbWFpbGRyb3BgIFRJTllJTlQoMSkgREVGQVVMVCAnMCcgTk9UIE5VTEwgQUZU
RVIgYGRpc2FibGVfc3BhbWFzc2Fzc2luYDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJ
RlkgYGRpc2txdW90YWAgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMDsKKytB
TFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJRlkgYG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdO
RUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBg
ZGVmYXVsdHF1b3RhYCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FM
VEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBgZGVmYXVsdG1heG1zZ2NvdW50YCBCSUdJTlQg
VU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOwogCiBVcGdyYWRpbmcgdG8gdnBvcG1haWwt
NS40LjE4CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLXVQciB2cG9wbWFp
bC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9tYWlsZGlycXVvdGEuYyB2cG9wbWFpbC1jb2RlLTEw
MzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5v
cmlnL21haWxkaXJxdW90YS5jCTIwMTEtMDItMjggMTc6MjE6MDMuMDAwMDAwMDAwICswMDAw
CisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmMJMjAxNS0wOS0x
OCAxNTowMDowOS44MTQwOTY0NzEgKzAxMDAKQEAgLTQyLDE2ICs0MiwxNiBAQAogCiAvKiBw
cml2YXRlIGZ1bmN0aW9ucyAtIG5vIG5hbWUgY2xhc2hlcyB3aXRoIGNvdXJpZXIgKi8KIHN0
YXRpYyBjaGFyICptYWtlbmV3bWFpbGRpcnNpemVuYW1lKGNvbnN0IGNoYXIgKiwgaW50ICop
Owotc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqbWF4
dGltZSwgb2ZmX3QgKnNpemVwLCBpbnQgKmNudHApOwotc3RhdGljIGludCBjb3VudHN1YmRp
cihjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnN1YmRpciwgdGltZV90ICptYXh0aW1l
LCBvZmZfdCAqc2l6ZXAsIGludCAqY250cCk7CitzdGF0aWMgaW50IGNvdW50Y3VybmV3KGNv
bnN0IGNoYXIgKmRpciwgdGltZV90ICptYXh0aW1lLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9y
YWdlX3QgKmNudHApOworc3RhdGljIGludCBjb3VudHN1YmRpcihjb25zdCBjaGFyICpkaXIs
IGNvbnN0IGNoYXIgKnN1YmRpciwgdGltZV90ICptYXh0aW1lLCBzdG9yYWdlX3QgKnNpemVw
LCBzdG9yYWdlX3QgKmNudHApOwogc3RhdGljIGludCBzdGF0Y3VybmV3KGNvbnN0IGNoYXIg
KmRpciwgdGltZV90ICptYXh0aW1lc3RhbXApOwogc3RhdGljIGludCBzdGF0c3ViZGlyKGNv
bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUpOwog
c3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1haWxkaXJzaXpl
X2ZkLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICBs
b25nIG1haWxkaXJzaXplX3NpemUsIGludCBtYWlsZGlyc2l6ZV9jbnQsIGludCBpc25ldyk7
CisgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV90IG1haWxkaXJzaXplX3NpemUsIHN0
b3JhZ2VfdCBtYWlsZGlyc2l6ZV9jbnQsIGludCBpc25ldyk7CiBzdGF0aWMgaW50IGRvY2hl
Y2txdW90YShjb25zdCBjaGFyICpkaXIsIGludCAqbWFpbGRpcnNpemVfZmRwdHIsIGNvbnN0
IGNoYXIgKnF1b3RhX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB4dHJh
X3NpemUsIGludCB4dHJhX2NudCwgaW50ICpwZXJjZW50YWdlKTsKLXN0YXRpYyBpbnQgZG9j
b3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqZGlyc3RhbXAsIG9mZl90ICpzaXplcCwg
aW50ICpjbnRwKTsKLXN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNoYXIg
KmRpciwgaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwgY29uc3QgY2hhciAqcXVvdGFfdHlwZSwg
bG9uZyB4dHJhX3NpemUsIGludCB4dHJhX2NudCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdG9yYWdlX3QgeHRyYV9zaXplLCBzdG9yYWdlX3QgeHRyYV9jbnQsIGludCAqcGVyY2Vu
dGFnZSk7CitzdGF0aWMgaW50IGRvY291bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRp
cnN0YW1wLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOworc3RhdGljIGlu
dCBtYWlsZGlyX2NoZWNrcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgKm1haWxkaXJzaXpl
X2ZkcHRyLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCBzdG9yYWdlX3QgeHRyYV9zaXplLCBz
dG9yYWdlX3QgeHRyYV9jbnQpOwogLyogIG1vdmVkIGludG8gbWFpbGRpcnF1b3RhLmggYXMg
bm9uLXN0YXRpYwogc3RhdGljIGludCBtYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRp
ciwgaW50IG1haWxkaXJzaXplX2ZkLAogCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcg
bWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCk7CkBAIC01OSw3ICs1OSw3
IEBACiBzdGF0aWMgaW50IG1haWxkaXJfc2FmZW9wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50
IG1vZGUsIGludCBwZXJtKTsKIHN0YXRpYyBjaGFyICpzdHJfcGlkX3QocGlkX3QgdCwgY2hh
ciAqYXJnKTsKIHN0YXRpYyBjaGFyICpzdHJfdGltZV90KHRpbWVfdCB0LCBjaGFyICphcmcp
Owotc3RhdGljIGludCBtYWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWdu
ZWQgbG9uZyAqcyk7CitzdGF0aWMgaW50IG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFy
ICpuLCBzdG9yYWdlX3QgKnMpOwogCiAjZGVmaW5lICBOVU1CVUZTSVpFICAgICAgNjAKICNk
ZWZpbmUJTURRVU9UQV9TSVpFCSdTJwkvKiBUb3RhbCBzaXplIG9mIGFsbCBtZXNzYWdlcyBp
biBtYWlsZGlyICovCkBAIC03NSwxMCArNzUsMTEgQEAKIGNoYXIJZG9tZGlyW01BWF9QV19E
SVJdOwogY2hhcgkqcDsKIGNoYXIJZG9tYWluWzI1Nl0sIHFiWzI1Nl0gPSB7IDAgfTsKLWxv
bmcgICAgc2l6ZSA9IDA7Ci11bnNpZ25lZCBsb25nIG1heHNpemUgPSAwOwotaW50CWNudCA9
IDAsIHJldCA9IDA7Ci1pbnQJbWF4Y250ID0gMDsKK3N0b3JhZ2VfdCBzaXplID0gMDsKK3N0
b3JhZ2VfdCBtYXhzaXplID0gMDsKK3N0b3JhZ2VfdCBjbnQgPSAwOworaW50IHJldCA9IDA7
CitzdG9yYWdlX3QgbWF4Y250ID0gMDsKIHN0cnVjdCB2bGltaXRzIGxpbWl0czsKICAgIHN0
b3JhZ2VfdCBzdXNhZ2UgPSAwLCBjdXNhZ2UgPSAwOwogCkBAIC0xNDQsNyArMTQ1LDcgQEAK
ICAgICAgICAgcmV0dXJuIDA7CiB9CiAKLWludCByZWFkZG9tYWlucXVvdGEoY29uc3QgY2hh
ciAqZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKQoraW50IHJlYWRkb21haW5xdW90YShj
b25zdCBjaGFyICpkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsK
IGludCB0cmllczsKIGNoYXIJY2hlY2tkaXJbMjU2XTsKQEAgLTIwNSw3ICsyMDYsNyBAQAog
CXJldHVybiAwOwogfQogCi1pbnQgd3JhcHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGly
LCBvZmZfdCAqc2l6ZXAsIGludCAqY250cCkKK2ludCB3cmFwcmVhZHVzZXJxdW90YShjb25z
dCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHRp
bWVfdAl0bTsKIHRpbWVfdAltYXh0aW1lOwpAQCAtMjg0LDEwICsyODUsMTAgQEAKIAogCXJl
dHVybiAwOwogfQotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBsb25nICpz
aXplcCwgaW50ICpjbnRwKQoraW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBz
dG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApCiB7CiAJaW50IHJldHZhbDsKLQlv
ZmZfdCBzOworCXN0b3JhZ2VfdCBzOwogCQogCXMgPSAob2ZmX3QpICpzaXplcDsKIAlyZXR2
YWwgPSB3cmFwcmVhZHVzZXJxdW90YShkaXIsICZzLCBjbnRwKTsKQEAgLTM0OCw4ICszNDks
OCBAQAogCiBzdGF0aWMgaW50IG1haWxkaXJzaXplX3JlYWQoY29uc3QgY2hhciAqZmlsZW5h
bWUsCS8qIFRoZSBmaWxlbmFtZSAqLwogCWludCAqZmRwdHIsCS8qIEtlZXAgdGhlIGZpbGUg
ZGVzY3JpcHRvciBvcGVuICovCi0Jb2ZmX3QgKnNpemVwdHIsCS8qIEdyYW5kIHRvdGFsIG9m
IG1haWxkaXIgc2l6ZSAqLwotCWludCAqY250cHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtZXNz
YWdlIGNvdW50ICovCisJc3RvcmFnZV90ICpzaXplcHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBt
YWlsZGlyIHNpemUgKi8KKwlzdG9yYWdlX3QgKmNudHB0ciwgLyogR3JhbmQgdG90YWwgb2Yg
bWVzc2FnZSBjb3VudCAqLwogCXVuc2lnbmVkICpubGluZXMsIC8qICMgb2YgbGluZXMgaW4g
bWFpbGRpcnNpemUgKi8KIAlzdHJ1Y3Qgc3RhdCAqc3RhdHB0cikJLyogVGhlIHN0YXRzIG9u
IG1haWxkaXJzaXplICovCiB7CkBAIC0zNTcsOCArMzU4LDkgQEAKICBpbnQgZjsKICBjaGFy
ICpwOwogIHVuc2lnbmVkIGw7Ci0gaW50IG47Cisgc3RvcmFnZV90IG47CiAgaW50IGZpcnN0
OworIGludCByZXQgPSAwOwogCiAgICAvKgogCSAgT2xkLXN0eWxlCkBAIC0zNzEsNiArMzcz
LDE4IEBACiAJcD1idWY7CiAJbD1zaXplb2YoYnVmKTsKIAorCS8qCisJCU1haWxkaXIrKyBz
cGVjaWZpY2F0aW9uIHNheXMgdG8gcmVidWlsZCB0aGUgbWFpbGRpcnNpemUgZmlsZSBpZiB0
aGUKKwkJZmlsZSBpcyA1MTIwIG9yIG1vcmUgYnl0ZXMsIG9yIGlzIG1vcmUgdGhhbiAxNSBt
aW51dGVzIG9sZAorCSovCisKKwlyZXQgPSBmc3RhdChmLCBzdGF0cHRyKTsKKwlpZiAoKHJl
dCAhPSAtMSkgJiYgKChzdGF0cHRyLT5zdF9zaXplID49IDUxMjApIHx8ICh0aW1lKE5VTEwp
ID4gc3RhdHB0ci0+c3RfbXRpbWUgKyAoMTUqNjApKSkpIHsKKwkgICB1bmxpbmsoZmlsZW5h
bWUpOworCSAgIGNsb3NlKGYpOworCSAgIHJldHVybiAtMTsKKwl9CisKIAl3aGlsZSAobCkK
IAl7CiAJCW49cmVhZChmLCBwLCBsKTsKQEAgLTM4Myw3ICszOTcsNyBAQAogCQlwICs9IG47
CiAJCWwgLT0gbjsKIAl9Ci0JaWYgKGwgPT0gMCB8fCBmc3RhdChmLCBzdGF0cHRyKSkJLyog
bWFpbGRpciB0b28gYmlnICovCisJaWYgKGwgPT0gMCB8fCByZXQpCS8qIG1haWxkaXIgdG9v
IGJpZyAqLwogCXsKIAkJY2xvc2UoZik7CiAJCXJldHVybiAoLTEpOwpAQCAtMzk3LDggKzQx
MSw4IEBACiAJZmlyc3Q9MTsKIAl3aGlsZSAoKnApCiAJewotCWxvbmcgbj0wOwotCWludCBj
PTA7CisJc3RvcmFnZV90IG49MDsKKwlzdG9yYWdlX3QgYz0wOwogCWNoYXIJKnE9cDsKIAog
CQl3aGlsZSAoKnApCkBAIC00MTMsNyArNDI3LDcgQEAKIAkJCWZpcnN0PTA7CiAJCQljb250
aW51ZTsKIAkJfQotCQlzc2NhbmYocSwgIiVsZCAlZCIsICZuLCAmYyk7CisJCXNzY2FuZihx
LCAiJWxsdSAlbGx1IiwgJm4sICZjKTsKIAkJKnNpemVwdHIgKz0gbjsKIAkJKmNudHB0ciAr
PSBjOwogCQkrKyAqbmxpbmVzOwpAQCAtNDIyLDkgKzQzNiw5IEBACiAJcmV0dXJuICgwKTsK
IH0KIAotc3RhdGljIGludCBxY2FsYyhvZmZfdCBzLCB1bnNpZ25lZCBuLCBjb25zdCBjaGFy
ICpxdW90YSwgaW50ICpwZXJjZW50YWdlKQorc3RhdGljIGludCBxY2FsYyhzdG9yYWdlX3Qg
cywgc3RvcmFnZV90IG4sIGNvbnN0IGNoYXIgKnF1b3RhLCBpbnQgKnBlcmNlbnRhZ2UpCiB7
Ci1vZmZfdCBpOworc3RvcmFnZV90IGk7CiBpbnQJc3BlcmNlbnRhZ2U9MDsKIGludAlucGVy
Y2VudGFnZT0wOwogCkBAIC00NDksNiArNDYzLDcgQEAKIAkJCQlyZXR1cm4gKC0xKTsKIAkJ
CX0KIAorI2lmIDAKIAkJCS8qCiAJCQkqKiBGb3IgaHVnZSBxdW90YXMsIG92ZXIgMjBtYiwK
IAkJCSoqIGRpdmlkZSBudW1lcmF0b3IgJiBkZW5vbWluYXRvciBieSAxMDI0IHRvIHByZXZl
bnQKQEAgLTQ1Nyw2ICs0NzIsNyBAQAogCiAJCQl4PTE7CiAJCQlpZiAoaSA+IDIwMDAwMDAw
KSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJc3BlcmNlbnRhZ2UgPSBpID8gKHMveCkgKiAxMDAg
LyAoaS94KToxMDA7CiAJCQlicmVhazsKQEAgLTQ2OCwxMCArNDg0LDEyIEBACiAJCQkJcmV0
dXJuICgtMSk7CiAJCQl9CiAKKyNpZiAwCiAJCQkvKiBEaXR0byAqLwogCiAJCQl4PTE7CiAJ
CQlpZiAoaSA+IDIwMDAwMDAwKSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJbnBlcmNlbnRhZ2Ug
PSBpID8gKChvZmZfdCluL3gpICogMTAwIC8gKGkveCk6MTAwOwogCQkJYnJlYWs7CkBAIC00
ODQsOCArNTAyLDggQEAKIHN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNo
YXIgKmRpciwKIAlpbnQgKm1haWxkaXJzaXplX2ZkcHRyLAogCWNvbnN0IGNoYXIgKnF1b3Rh
X3R5cGUsCi0JbG9uZyB4dHJhX3NpemUsCi0JaW50IHh0cmFfY250KQorCXN0b3JhZ2VfdCB4
dHJhX3NpemUsCisJc3RvcmFnZV90IHh0cmFfY250KQogewogaW50CWR1bW15LCByZXQgPSAw
OwogCkBAIC00OTUsMTMgKzUxMywyMSBAQAogCiAgICBmcHJpbnRmKHN0ZGVyciwgIndhcm5p
bmc6IHByb2dyYW0gdXNpbmcgZGVwcmVjYXRlZCBxdW90YSBmdW5jdGlvbiBhdCAlczolZFxu
IiwgX19GSUxFX18sIF9fTElORV9fKTsKIAorICAgaWYgKCh4dHJhX3NpemUgPT0gMCkgfHwg
KHh0cmFfY250ID09IDApKQorCXJldHVybiAwOworCiAgICAvKgogCSAgUGluZyB0aGUgZGFl
bW9uCiAgICAqLwogCiAgICByZXQgPSBjbGllbnRfcXVlcnlfcXVpY2soIiAiLCBOVUxMLCBO
VUxMKTsKLSAgIGlmIChyZXQpCi0gICAgICByZXR1cm4gdm1haWxkaXJfcmVhZHF1b3RhKGRp
ciwgcXVvdGFfdHlwZSk7CisgICBpZiAocmV0KSB7CisgICAgICByZXQgPSB2bWFpbGRpcl9y
ZWFkcXVvdGEoZGlyLCBxdW90YV90eXBlKTsKKyAgICAgIGlmIChyZXQgPj0gMTAwKQorICAg
ICAgICAgIHJldHVybiAtMTsKKworICAgICAgcmV0dXJuIDA7CisgICB9CiAKICAgIC8qCiAJ
ICBGYWxsIGJhY2sKQEAgLTU2OSwxNiArNTk1LDE2IEBACiBzdGF0aWMgaW50IGRvY2hlY2tx
dW90YShjb25zdCBjaGFyICpkaXIsCiAJaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwKIAljb25z
dCBjaGFyICpxdW90YV90eXBlLAotCWxvbmcgeHRyYV9zaXplLAotCWludCB4dHJhX2NudCwK
KwlzdG9yYWdlX3QgeHRyYV9zaXplLAorCXN0b3JhZ2VfdCB4dHJhX2NudCwKIAlpbnQgKnBl
cmNlbnRhZ2UpCiB7CiBjaGFyCSpjaGVja2ZvbGRlcj0oY2hhciAqKW1hbGxvYyhzdHJsZW4o
ZGlyKStzaXplb2YoIi9tYWlsZGlyZm9sZGVyIikpOwogY2hhcgkqbmV3bWFpbGRpcnNpemVu
YW1lOwogc3RydWN0IHN0YXQgc3RhdF9idWY7CiBpbnQJbWFpbGRpcnNpemVfZmQgPSAtMTsK
LW9mZl90CW1haWxkaXJzaXplX3NpemU7Ci1pbnQgICAgIG1haWxkaXJzaXplX2NudDsKK3N0
b3JhZ2VfdCBtYWlsZGlyc2l6ZV9zaXplOworc3RvcmFnZV90IG1haWxkaXJzaXplX2NudDsK
IHVuc2lnbmVkIG1haWxkaXJzaXplX25saW5lczsKIGludAluOwogdGltZV90CXRtOwpAQCAt
NzQ2LDcgKzc3Miw3IEBACiB9CiAKIGludAltYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIg
KmRpciwgaW50IG1haWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxv
bmcgbWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCkKKwljb25zdCBjaGFy
ICpxdW90YV90eXBlLCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1h
aWxkaXJzaXplX2NudCkKIHsKICAgIGludCByZXQgPSAwOwogCkBAIC03NzUsNyArODAxLDcg
QEAKIH0KIAogc3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1h
aWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcgbWFpbGRpcnNp
emVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwKKwljb25zdCBjaGFyICpxdW90YV90eXBl
LCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxkaXJzaXplX2Nu
dCwKIAlpbnQgaXNuZXcpCiB7CiB1bmlvbgl7CkBAIC04NDQsOCArODcwLDcgQEAKIAkJbmlv
dj0yOwogCX0KIAotCi0Jc3ByaW50Zih1LmJ1ZiwgIiVsZCAlZFxuIiwgbWFpbGRpcnNpemVf
c2l6ZSwgbWFpbGRpcnNpemVfY250KTsKKwlzcHJpbnRmKHUuYnVmLCAiJWxsdSAlbHVcbiIs
IG1haWxkaXJzaXplX3NpemUsIG1haWxkaXJzaXplX2NudCk7CiAJaW92W25pb3ZdLmlvdl9i
YXNlPXUuYnVmOwogCWlvdltuaW92XS5pb3ZfbGVuPXN0cmxlbih1LmJ1Zik7CiAKQEAgLTk3
Myw3ICs5OTgsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRjdXJu
ZXcoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpzaXplcCwgaW50
ICpjbnRwKQorc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVf
dCAqbWF4dGltZSwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogY2hh
cgkqcD0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGlyKSs1KTsKIGludAluOwpAQCAtOTkwLDcg
KzEwMTUsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRzdWJkaXIo
Y29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSwg
b2ZmX3QgKnNpemVwLCBpbnQgKmNudHApCitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0
IGNoYXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3Jh
Z2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIGNoYXIJKnA7CiBpbnQJbjsKQEAg
LTEwMDcsMTMgKzEwMzIsMTMgQEAKIAlyZXR1cm4gKG4pOwogfQogCi1zdGF0aWMgaW50IGRv
Y291bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRpcnN0YW1wLCBvZmZfdCAqc2l6ZXAs
IGludCAqY250cCkKK3N0YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVf
dCAqZGlyc3RhbXAsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHN0
cnVjdAlzdGF0CXN0YXRfYnVmOwogY2hhcgkqcDsKIERJUgkqZGlycDsKIHN0cnVjdCBkaXJl
bnQgKmRlOwotdW5zaWduZWQgbG9uZwlzOworc3RvcmFnZV90IHM7CiAKIAlpZiAoc3RhdChk
aXIsICZzdGF0X2J1ZikpCXJldHVybiAoMCk7CS8qIElnbm9yZSAqLwogCWlmIChzdGF0X2J1
Zi5zdF9tdGltZSA+ICpkaXJzdGFtcCkJKmRpcnN0YW1wPXN0YXRfYnVmLnN0X210aW1lOwpA
QCAtMTA0Myw3ICsxMDY4LDcgQEAKIAogCiAJCWlmIChtYWlsZGlyX3BhcnNlcXVvdGEobiwg
JnMpID09IDApCi0JCQlzdGF0X2J1Zi5zdF9zaXplPXM7CisJCQkqc2l6ZXAgKz0gczsKIAkJ
ZWxzZQogCQl7CiAJCQlwPShjaGFyICopbWFsbG9jKHN0cmxlbihkaXIpK3N0cmxlbihuKSsy
KTsKQEAgLTEwNTksOCArMTA4NCw4IEBACiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlmcmVl
KHApOworCQkJKnNpemVwICs9IHN0YXRfYnVmLnN0X3NpemU7CiAJCX0KLQkJKnNpemVwICs9
IHN0YXRfYnVmLnN0X3NpemU7CiAJCSsrKmNudHA7CiAJfQogCkBAIC0xMTMxLDcgKzExNTYs
NyBAQAogICAgICAgICByZXR1cm4gKHN0cmNweShhcmcsIHApKTsKIH0KIAotc3RhdGljIGlu
dCBtYWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWduZWQgbG9uZyAqcykK
K3N0YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3JhZ2Vf
dCAqcykKIHsKIGNvbnN0IGNoYXIgKm87CiBpbnQgICAgIHllczsKQEAgLTExNjMsNiArMTE4
OCw3IEBACiAgICAgICAgICAgICAgICAgKnM9MDsKICAgICAgICAgICAgICAgICB3aGlsZSAo
Km8gPj0gJzAnICYmICpvIDw9ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgICpzPSAq
cyoxMCArICgqbysrIC0gJzAnKTsKKwogICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuICgtMSk7CmRpZmYgLXVQciB2cG9wbWFpbC1jb2Rl
LTEwMzQtdHJ1bmsub3JpZy9tYWlsZGlycXVvdGEuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1
bmsvbWFpbGRpcnF1b3RhLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL21h
aWxkaXJxdW90YS5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICswMDAwCisrKyB2
cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmgJMjAxNS0wOS0xOCAxNTow
MDowOS44MTQwOTY0NzEgKzAxMDAKQEAgLTgsNiArOCw4IEBACiAgICAtQmlsbCBTaHVwcAog
ICovCiAKKyNpbmNsdWRlICJzdG9yYWdlLmgiCisKICNkZWZpbmUgUVVPVEFfV0FSTl9QRVJD
RU5UIDkwCiAKIC8qIEkndmUgcmVtb3ZlZCBwcmV0dHkgbXVjaCB0aGUgd2hvbGUgZmlsZSBl
eGVjZXB0IGZvcgpAQCAtMTUsOCArMTcsOCBAQAogICAgSSJ2ZSBtYWRlIHRoZSBjb3VyaWVy
IGZ1bmN0aW9ucyBzdGF0aWMuCiAgICAtIEJyaWFuIEtvbGFjaQogKi8KLWludCByZWFkZG9t
YWlucXVvdGEoY29uc3QgY2hhciAqZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKTsKLWlu
dCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIqIGRpciwgbG9uZyAqc2l6ZXAsIGludCAqY250
cCk7CitpbnQgcmVhZGRvbWFpbnF1b3RhKGNvbnN0IGNoYXIgKmRpciwgc3RvcmFnZV90ICpz
aXplcCwgc3RvcmFnZV90ICpjbnRwKTsKK2ludCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIq
IGRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKTsKIGludCBkb21haW5f
b3Zlcl9tYWlsZGlycXVvdGEoY29uc3QgY2hhciAqdXNlcmRpcik7CiBpbnQgdXNlcl9vdmVy
X21haWxkaXJxdW90YShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnF1b3RhKTsKIGlu
dCB2bWFpbGRpcl9yZWFkcXVvdGEoY29uc3QgY2hhciAqZGlyLAljb25zdCBjaGFyICpxdW90
YSk7CkBAIC0yNCw1ICsyNiw1IEBACiBpbnQgbWFpbGRpcl9hZGRxdW90YShjb25zdCBjaGFy
ICosCS8qIFBvaW50ZXIgdG8gdGhlIG1haWxkaXIgKi8KIAlpbnQsCS8qIE11c3QgYmUgdGhl
IGludCBwb2ludGVkIHRvIGJ5IDJuZCBhcmcgdG8gY2hlY2txdW90YSAqLwogCWNvbnN0IGNo
YXIgKiwJLyogVGhlIHF1b3RhICovCi0JbG9uZywJLyogKy8tIGJ5dGVzICovCi0JaW50KTsJ
LyogKy8tIGZpbGVzICovCisJc3RvcmFnZV90LAkvKiArLy0gYnl0ZXMgKi8KKwlzdG9yYWdl
X3QpOwkvKiArLy0gZmlsZXMgKi8KZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu
ay5vcmlnL3ZhZGR1c2VyLmMgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3ZhZGR1c2VyLmMK
LS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZhZGR1c2VyLmMJMjAxMC0xMS0w
MiAxNzoxNToxMC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu
ay92YWRkdXNlci5jCTIwMTUtMDktMTggMTU6MDA6MDkuODE1MDk2NDIzICswMTAwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAidnBvcG1haWwuaCIKICNpbmNsdWRlICJ2YXV0aC5o
IgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCisjaW5jbHVkZSAicHdzdHIuaCIKIAogY2hh
ciBFbWFpbFtNQVhfQlVGRl07CiBjaGFyIFBhc3N3ZFtNQVhfQlVGRl07CmRpZmYgLXVQciB2
cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92Y2hrcHcuYyB2cG9wbWFpbC1jb2RlLTEw
MzQtdHJ1bmsvdmNoa3B3LmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Zj
aGtwdy5jCTIwMTAtMTAtMDcgMjM6MTc6MzYuMDAwMDAwMDAwICswMTAwCisrKyB2cG9wbWFp
bC1jb2RlLTEwMzQtdHJ1bmsvdmNoa3B3LmMJMjAxNS0wOS0xOCAxNTowMDowOS44MTUwOTY0
MjMgKzAxMDAKQEAgLTczMywyNiArNzMzLDI2IEBACiAKICAgaWYgKCAodmVycm9yID09IFZM
T0dfRVJST1JfUEFTU1dEKSAmJiAoIEVOQUJMRV9MT0dHSU5HPT0xIHx8IEVOQUJMRV9MT0dH
SU5HPT0yIHx8IEVOQUJMRV9MT0dHSU5HPT0zIHx8IEVOQUJMRV9MT0dHSU5HPT00ICkgKSB7
CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBh
c3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICAgIHN5
c2xvZyhMT0dfTk9USUNFLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAg
ICAgICAgc3lzbG9nKExPR19OT1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwg
bG9ncyIpOwogICAgICAgfQogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwgVGhlVXNlciwg
VGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUpICkgIT0gMCAp
IHsKLSAgICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0ZSBT
UUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtwdzog
Y2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVycm9y
ID09IFZMT0dfRVJST1JfSU5URVJOQUwgKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9y
LCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGlu
ZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4n
dCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIs
InZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlm
ICggdmVycm9yID09IFZMT0dfRVJST1JfTE9HT04gKSB7CiAgICAgICBpZiAoIChsb2dzcWwo
dmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwg
TG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3
OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNF
LCIlcyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBl
bHNlIGlmICggdmVycm9yID09IFZMT0dfRVJST1JfQUNDRVNTICkgewogICAgICAgaWYgKCAo
bG9nc3FsKHZlcnJvciwgVGhlVXNlciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJ
cEFkZHIsIExvZ0xpbmUpICkgIT0gMCApIHsKLSAgICAgICAgc3lzbG9nKExPR19OT1RJQ0Us
InZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKKyAgICAgICAgICBzeXNsb2coTE9H
X05PVElDRSwiJXMiLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CiAgICAgICB9
CiAgIH0gZWxzZSBpZiAoIHZlcnJvciA9PSBWTE9HX0FVVEggJiYgKCBFTkFCTEVfTE9HR0lO
RyA9PSAxIHx8IEVOQUJMRV9MT0dHSU5HID09IDQgKSApIHsKICAgICAgIGlmICggKGxvZ3Nx
bCh2ZXJyb3IsIFRoZVVzZXIsIFRoZURvbWFpbiwgVGhlUGFzcywgVGhlTmFtZSwgSXBBZGRy
LCBMb2dMaW5lKSApICE9IDAgKSB7Ci0gICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCJ2Y2hr
cHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExPR19OT1RJ
Q0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAgfQogICB9
CiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZsaW1p
dHMuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdmxpbWl0cy5jCi0tLSB2cG9wbWFpbC1j
b2RlLTEwMzQtdHJ1bmsub3JpZy92bGltaXRzLmMJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAw
MDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92bGltaXRzLmMJMjAx
NS0wOS0xOCAxNTowMDoyNy43MjYwOTU2NTkgKzAxMDAKQEAgLTE4NywyMiArMTg3LDIyIEBA
CiAKIAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJxdW90YSIpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGlza3F1b3RhID0gYXRvaShz
Mik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBzdHJ0b2xsKHMyLCBO
VUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKIAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJt
YXhtc2djb3VudCIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAg
ICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBhdG9pKHMyKTsKKyAgICAgICAgICAgICAgICBs
aW1pdHMtPm1heG1zZ2NvdW50ID0gc3RydG9sbChzMiwgTlVMTCwgMTApOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIXN0cmNtcChzMSwgImRlZmF1bHRfcXVvdGEiKSkg
ewogICAgICAgICAgICAgICAgIGlmIChzMikKLSAgICAgICAgICAgICAgICBsaW1pdHMtPmRl
ZmF1bHRxdW90YSA9IGF0b2koczIpOworICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGVmYXVs
dHF1b3RhID0gc3RydG9sbChzMiwgTlVMTCwgMTApOwogICAgICAgICAgICAgfQogCiAJCQll
bHNlIGlmICghc3RyY21wKHMxLCAiZGVmYXVsdF9tYXhtc2djb3VudCIpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1heG1z
Z2NvdW50ID0gYXRvaShzMik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0bWF4
bXNnY291bnQgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKIAkJ
CWVsc2UgaWYgKCFzdHJjbXAoczEsICJkaXNhYmxlX3BvcCIpKSB7CkBAIC00ODAsMTAgKzQ4
MCwxMCBAQAogICAgICAgICBmcHJpbnRmKGZzLCAibWF4Zm9yd2FyZHM6ICVkXG4iLCBsaW1p
dHMtPm1heGZvcndhcmRzKTsKICAgICAgICAgZnByaW50ZihmcywgIm1heGF1dG9yZXNwb25k
ZXJzOiAlZFxuIiwgbGltaXRzLT5tYXhhdXRvcmVzcG9uZGVycyk7CiAgICAgICAgIGZwcmlu
dGYoZnMsICJtYXhtYWlsaW5nbGlzdHM6ICVkXG4iLCBsaW1pdHMtPm1heG1haWxpbmdsaXN0
cyk7Ci0gICAgICAgIGZwcmludGYoZnMsICJxdW90YTogJWRcbiIsIGxpbWl0cy0+ZGlza3F1
b3RhKTsKLSAgICAgICAgZnByaW50ZihmcywgIm1heG1zZ2NvdW50OiAlZFxuIiwgbGltaXRz
LT5tYXhtc2djb3VudCk7Ci0gICAgICAgIGZwcmludGYoZnMsICJkZWZhdWx0X3F1b3RhOiAl
ZFxuIiwgbGltaXRzLT5kZWZhdWx0cXVvdGEpOwotICAgICAgICBmcHJpbnRmKGZzLCAiZGVm
YXVsdF9tYXhtc2djb3VudDogJWRcbiIsIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2NvdW50KTsK
KyAgICAgICAgZnByaW50ZihmcywgInF1b3RhOiAlbGx1XG4iLCBsaW1pdHMtPmRpc2txdW90
YSk7CisgICAgICAgIGZwcmludGYoZnMsICJtYXhtc2djb3VudDogJWxsdVxuIiwgbGltaXRz
LT5tYXhtc2djb3VudCk7CisgICAgICAgIGZwcmludGYoZnMsICJkZWZhdWx0X3F1b3RhOiAl
bGx1XG4iLCBsaW1pdHMtPmRlZmF1bHRxdW90YSk7CisgICAgICAgIGZwcmludGYoZnMsICJk
ZWZhdWx0X21heG1zZ2NvdW50OiAlbGx1XG4iLCBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3Vu
dCk7CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfcG9wKSBmcHJpbnRmKGZzLCAiZGlz
YWJsZV9wb3BcbiIpOwogICAgICAgICBpZiAobGltaXRzLT5kaXNhYmxlX2ltYXApIGZwcmlu
dGYoZnMsICJkaXNhYmxlX2ltYXBcbiIpOwogICAgICAgICBpZiAobGltaXRzLT5kaXNhYmxl
X2RpYWx1cCkgZnByaW50ZihmcywgImRpc2FibGVfZGlhbHVwXG4iKTsKZGlmZiAtdVByIHZw
b3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZsaW1pdHMuaCB2cG9wbWFpbC1jb2RlLTEw
MzQtdHJ1bmsvdmxpbWl0cy5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92
bGltaXRzLmgJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3Bt
YWlsLWNvZGUtMTAzNC10cnVuay92bGltaXRzLmgJMjAxNS0wOS0xOCAxNTowMDoyNy43Mjcw
OTU2MTcgKzAxMDAKQEAgLTIwLDYgKzIwLDggQEAKICNkZWZpbmUgVkxJTUlUX0RJU0FCTEVf
QUxMIChWTElNSVRfRElTQUJMRV9DUkVBVEV8VkxJTUlUX0RJU0FCTEVfTU9ESUZZfFZMSU1J
VF9ESVNBQkxFX0RFTEVURSkKICNkZWZpbmUgVkxJTUlUX0RJU0FCTEVfQklUUyAzCiAKKyNp
bmNsdWRlICJzdG9yYWdlLmgiCisKIHN0cnVjdCB2bGltaXRzIHsKICAgICAgIC8qIG1heCBz
ZXJ2aWNlIGxpbWl0cyAqLwogICAgICAgaW50ICAgICAgIG1heHBvcGFjY291bnRzOwpAQCAt
MjksMTAgKzMxLDEwIEBACiAgICAgICBpbnQgICAgICAgbWF4bWFpbGluZ2xpc3RzOwogCiAg
ICAgICAvKiBxdW90YSAmIG1lc3NhZ2UgY291bnQgbGltaXRzICovCi0gICAgICBpbnQgICAg
ICAgZGlza3F1b3RhOwotICAgICAgaW50ICAgICAgIG1heG1zZ2NvdW50OwotICAgICAgaW50
ICAgICAgIGRlZmF1bHRxdW90YTsKLSAgICAgIGludCAgICAgICBkZWZhdWx0bWF4bXNnY291
bnQ7CisgICAgICBzdG9yYWdlX3QgZGlza3F1b3RhOworICAgICAgc3RvcmFnZV90IG1heG1z
Z2NvdW50OworICAgICAgc3RvcmFnZV90IGRlZmF1bHRxdW90YTsKKyAgICAgIHN0b3JhZ2Vf
dCBkZWZhdWx0bWF4bXNnY291bnQ7CiAKICAgICAgIC8qIHRoZSBmb2xsb3dpbmcgYXJlIDAg
KGZhbHNlKSBvciAxICh0cnVlKSAqLwogICAgICAgc2hvcnQgICAgIGRpc2FibGVfcG9wOwpk
aWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdmxpc3RsaWIuYyB2cG9w
bWFpbC1jb2RlLTEwMzQtdHJ1bmsvdmxpc3RsaWIuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0
LXRydW5rLm9yaWcvdmxpc3RsaWIuYwkyMDEwLTEwLTEzIDE4OjE5OjU3LjAwMDAwMDAwMCAr
MDEwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3ZsaXN0bGliLmMJMjAxNS0wOS0x
OCAxNTowMDoyNy43MjcwOTU2MTcgKzAxMDAKQEAgLTE5Myw4ICsxOTMsOCBAQAogCiAgICAg
aWYoIERvbWFpbk9ubHkgKSB7ICAgIC8vICAgSGF2ZSBkb21haW4KICAgICAgICAgaWYgKCBz
dHJzdHIoIEFkZHJlc3MsICJAIikgIT0gTlVMTCApIHJldHVybig0KTsKLSAgICAgICAgc25w
cmludGYoIExJLT5OYW1lLCAgIE1BWF9GSUxFX05BTUUsICIlcyIsICIiICk7Ci0gICAgICAg
IHNucHJpbnRmKCBMSS0+RG9tYWluLCBNQVhfRklMRV9OQU1FLCAiJXMiLCBBZGRyZXNzICk7
CisgICAgICAgIHNucHJpbnRmKCBMSS0+TmFtZSwgICBzaXplb2YoTEktPk5hbWUpLCAiJXMi
LCAiIiApOworICAgICAgICBzbnByaW50ZiggTEktPkRvbWFpbiwgc2l6ZW9mKExJLT5Eb21h
aW4pLCAiJXMiLCBBZGRyZXNzICk7CiAgICAgfQogCiAgICAgZWxzZSB7ICAgICAgICAgICAg
ICAgIC8vICAgSGF2ZSBtYWlsIGxpc3QKQEAgLTIwNiwxMyArMjA2LDEzIEBACiAKICAgICBp
ZigoIExJLT5lbnRyeSA9IGdldF9kb21haW5fZW50cmllcyggTEktPkRvbWFpbiApKSA9PSBO
VUxMICkgcmV0dXJuKDMpOwogCi0gICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIE1B
WF9GSUxFX05BTUUsICJwb3N0bWFzdGVyQCVzIiwgTEktPkRvbWFpbiApOyAKLSAgICBzbnBy
aW50ZiggTEktPlJlcGx5VG9fQWRkciwgTUFYX0ZJTEVfTkFNRSwgIiVzIiwgIiIgKTsKLSAg
ICBzbnByaW50ZiggTEktPlNRTEJhc2UsICAgICAgTUFYX0ZJTEVfTkFNRSwgImV6bWxtIiAp
OwotICAgIHNucHJpbnRmKCBMSS0+U1FMSG9zdCwgICAgICBNQVhfRklMRV9OQU1FLCAibG9j
YWxob3N0IiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMUGFzcywgICAgICBNQVhfRklMRV9O
QU1FLCAiZGJwYXNzIiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMVGFibGUsICAgICBNQVhf
RklMRV9OQU1FLCAiZXptbG0iICk7Ci0gICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAg
IE1BWF9GSUxFX05BTUUsICJkYlVzZXIiICk7CisgICAgc25wcmludGYoIExJLT5Pd25lckVt
YWlsLCAgIHNpemVvZihMSS0+T3duZXJFbWFpbCksICJwb3N0bWFzdGVyQCVzIiwgTEktPkRv
bWFpbiApOyAKKyAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRkciwgc2l6ZW9mKExJLT5S
ZXBseVRvX0FkZHIpLCAiJXMiLCAiIiApOworICAgIHNucHJpbnRmKCBMSS0+U1FMQmFzZSwg
ICAgICBzaXplb2YoTEktPlNRTEJhc2UpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJ
LT5TUUxIb3N0LCAgICAgIHNpemVvZihMSS0+U1FMSG9zdCksICJsb2NhbGhvc3QiICk7Cisg
ICAgc25wcmludGYoIExJLT5TUUxQYXNzLCAgICAgIHNpemVvZihMSS0+U1FMUGFzcyksICJk
YnBhc3MiICk7CisgICAgc25wcmludGYoIExJLT5TUUxUYWJsZSwgICAgIHNpemVvZihMSS0+
U1FMVGFibGUpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAg
IHNpemVvZihMSS0+U1FMVXNlciksICJkYlVzZXIiICk7CiAKIC8vICAgIHByaW50ZiggImJl
Zm9yZSBtYWtlIG5hbWVcbiIgKTsKIApkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRy
dW5rLm9yaWcvdm1vZGRvbWxpbWl0cy5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92bW9k
ZG9tbGltaXRzLmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Ztb2Rkb21s
aW1pdHMuYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1h
aWwtY29kZS0xMDM0LXRydW5rL3Ztb2Rkb21saW1pdHMuYwkyMDE1LTA5LTE4IDE1OjAwOjI3
LjcyODA5NTU3NyArMDEwMApAQCAtMjEyLDEwICsyMTIsMTAgQEAKICAgICAgICAgICAgIHBy
aW50ZiAoKGxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSAmIFZMSU1JVF9ESVNBQkxFX0RFTEVU
RSA/ICJERU5ZX0RFTEVURSAgIiA6IkFMTE9XX0RFTEVURSAiKSApOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAgICAgICBwcmludGYoIkRvbWFp
biBRdW90YTogJWQgTUJcbiIsIGxpbWl0cy5kaXNrcXVvdGEpOwotICAgICAgICAgICAgcHJp
bnRmKCJEZWZhdWx0IFVzZXIgUXVvdGE6ICVkIGJ5dGVzXG4iLCBsaW1pdHMuZGVmYXVsdHF1
b3RhKTsKLSAgICAgICAgICAgIHByaW50ZigiTWF4IERvbWFpbiBNZXNzYWdlczogJWRcbiIs
IGxpbWl0cy5tYXhtc2djb3VudCk7Ci0gICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgTWF4
IE1lc3NhZ2VzIHBlciBVc2VyOiAlZFxuIiwgbGltaXRzLmRlZmF1bHRtYXhtc2djb3VudCk7
CisgICAgICAgICAgICBwcmludGYoIkRvbWFpbiBRdW90YTogJWxsdSBNQlxuIiwgbGltaXRz
LmRpc2txdW90YSk7CisgICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgVXNlciBRdW90YTog
JWxsdSBieXRlc1xuIiwgbGltaXRzLmRlZmF1bHRxdW90YSk7CisgICAgICAgICAgICBwcmlu
dGYoIk1heCBEb21haW4gTWVzc2FnZXM6ICVsbHVcbiIsIGxpbWl0cy5tYXhtc2djb3VudCk7
CisgICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgTWF4IE1lc3NhZ2VzIHBlciBVc2VyOiAl
bGx1XG4iLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKICAgICAgICAgICAgIHJldHVy
bih2ZXhpdCgwKSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTIzNywxNiAr
MjM3LDE2IEBACiAgICAgICAgIAogICAgICAgICAvKiBxdW90YSAmIG1lc3NhZ2UgY291bnQg
bGltaXRzICovCiAgICAgICAgIGlmIChEb21haW5RdW90YVswXSAhPSAwKSB7Ci0gICAgICAg
ICAgICBsaW1pdHMuZGlza3F1b3RhID0gYXRvaShEb21haW5RdW90YSk7CisgICAgICAgICAg
ICBsaW1pdHMuZGlza3F1b3RhID0gc3RydG9sbChEb21haW5RdW90YSwgTlVMTCwgMTApOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChEb21haW5NYXhNc2dDb3VudFswXSAhPSAwKSB7Ci0g
ICAgICAgICAgICBsaW1pdHMubWF4bXNnY291bnQgPSBhdG9pKERvbWFpbk1heE1zZ0NvdW50
KTsKKyAgICAgICAgICAgIGxpbWl0cy5tYXhtc2djb3VudCA9IHN0cnRvbGwoRG9tYWluTWF4
TXNnQ291bnQsIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoRGVmYXVsdFVz
ZXJRdW90YVswXSAhPSAwKSB7Ci0gICAgICAgICAgICBsaW1pdHMuZGVmYXVsdHF1b3RhID0g
YXRvaShmb3JtYXRfbWFpbGRpcnF1b3RhKERlZmF1bHRVc2VyUXVvdGEpKTsKKyAgICAgICAg
ICAgIGxpbWl0cy5kZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKGZvcm1hdF9tYWlsZGlycXVvdGEo
RGVmYXVsdFVzZXJRdW90YSksIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
RGVmYXVsdFVzZXJNYXhNc2dDb3VudFswXSAhPSAwKSB7Ci0gICAgICAgICAgICBsaW1pdHMu
ZGVmYXVsdG1heG1zZ2NvdW50ID0gYXRvaShEZWZhdWx0VXNlck1heE1zZ0NvdW50KTsKKyAg
ICAgICAgICAgIGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQgPSBzdHJ0b2xsKERlZmF1bHRV
c2VyTWF4TXNnQ291bnQsIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKEdpZEZsYWcgPT0gMSkgewpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRy
dW5rLm9yaWcvdnBvcG1haWwuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnBvcG1haWwu
YwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWwuYwkyMDExLTAy
LTAzIDIxOjMyOjI3LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRy
dW5rL3Zwb3BtYWlsLmMJMjAxNS0wOS0xOCAxNToxNDoyMi42OTUwOTQ5MzEgKzAxMDAKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZsaW1pdHMu
aCIKICNpbmNsdWRlICJtYWlsZGlycXVvdGEuaCIKKyNpbmNsdWRlICJzdG9yYWdlLmgiCiAj
aW5jbHVkZSAidmF1dGhtb2R1bGUuaCIKICNpbmNsdWRlICJwd3N0ci5oIgogCkBAIC0yNTE2
LDYgKzI1MTcsOSBAQAogICAgIHJldHVybihOVUxMKTsKICAgfQogCisgIC8qIHJlY29yZCB0
aGUgZGlyIHdoZXJlIHRoZSBjb21tYW5kIHdhcyBydW4gZnJvbSAqLworICBjYWxsX2RpciA9
IG9wZW4oIi4iLCBPX1JET05MWSk7CisKICAgLyogZ28gdG8gdGhlIGRpciBmb3Igb3VyIGNo
b3NlbiBkb21haW4gKi8KICAgY2hkaXIoZG9tYWluX2Rpcik7IAogCkBAIC0zMzMwLDYgKzMz
MzQsMTIgQEAKICAgICByZXR1cm4oIFZBX0RPTUFJTl9ET0VTX05PVF9FWElTVCApOwogICB9
CiAKKyAgLyogcmVjb3JkIHdoaWNoIGRpciB0aGUgY29tbWFuZCB3YXMgbGF1bmNoZWQgZnJv
bSAqLworICBjYWxsX2RpciA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisKKyAgLyogc2V0IHRo
ZSBtYXNrIGZvciBmaWxlIGNyZWF0aW9uICovCisgIHVtYXNrKFZQT1BNQUlMX1VNQVNLKTsK
KyAKICAgLyogc28sIHdlIHNob3VsZCBoYXZlIHNvbWUgdmFyaWFibGVzIGxpa2UgdGhpcyBu
b3cgOgogICAgKiAgIGRpcjogICAgL2hvbWUvdnBvcG1haWwvZG9tYWlucy9beF0vc29tZWRv
bWFpbi5jb20vW3hdL3NvbWV1c2VyCiAgICAqICAgdG1wYnVmOiAvaG9tZS92cG9wbWFpbC9k
b21haW5zL1t4XS9zb21lZG9tYWluLmNvbQpAQCAtMzk2MSw4ICszOTcxLDggQEAKIAogY2hh
ciAqZm9ybWF0X21haWxkaXJxdW90YShjb25zdCBjaGFyICpxKSB7CiBpbnQgICAgIGk7Ci1k
b3VibGUJcXVvdGFfc2l6ZTsKLWxvbmcJcXVvdGFfY291bnQ7CitzdG9yYWdlX3QgcXVvdGFf
c2l6ZTsKK3N0b3JhZ2VfdCBxdW90YV9jb3VudDsKIGNoYXIJKnA7CiBzdGF0aWMgY2hhciAg
ICB0ZW1wcXVvdGFbMTI4XTsKIApAQCAtMzk3MiwzNCArMzk4MiwzNCBAQAogICAgIH0KIAog
ICAgIC8qIHRyYW5zbGF0ZSB0aGUgcXVvdGEgdG8gYSBudW1iZXIsIG9yIGxlYXZlIGl0ICov
Ci0gICAgcXVvdGFfc2l6ZSA9IC0xLjA7Ci0gICAgcXVvdGFfY291bnQgPSAtMTsKKyAgICBx
dW90YV9zaXplID0gMDsKKyAgICBxdW90YV9jb3VudCA9IDA7CiAgICAgc25wcmludGYgKHRl
bXBxdW90YSwgc2l6ZW9mKHRlbXBxdW90YSksICIlcyIsIHEpOwogICAgIHAgPSBzdHJ0b2sg
KHRlbXBxdW90YSwgIiwiKTsKICAgICB3aGlsZSAocCAhPSBOVUxMKSB7CiAgICAgICBpID0g
c3RybGVuKHApIC0gMTsKICAgICAgIGlmIChwW2ldID09ICdDJykgeyAvKiBzcGVjaWZ5IGEg
bGltaXQgb24gdGhlIG51bWJlciBvZiBtZXNzYWdlcyAoQ09VTlQpICovCi0gICAgICAgIHF1
b3RhX2NvdW50ID0gYXRvbChwKTsKKyAgICAgICAgcXVvdGFfY291bnQgPSBzdHJ0b2xsKHAs
IE5VTEwsIDEwKTsKICAgICAgIH0gZWxzZSB7IC8qIHNwZWNpZnkgYSBsaW1pdCBvbiB0aGUg
c2l6ZSAqLwogICAgICAgICAvKiBzdHJpcCBvcHRpb25hbCB0cmFpbGluZyBTICovCiAgICAg
ICAgIGlmICgocFtpXSA9PSAnUycpIHx8IChwW2ldID09ICdzJykpIHBbaS0tXSA9ICdcMCc7
CiAgICAgICAgIC8qIHN0cmlwIG9wdGlvbmFsIHRyYWlsaW5nIEIgKGZvciBLQiwgTUIpICov
CiAgICAgICAgIGlmICgocFtpXSA9PSAnQicpIHx8IChwW2ldID09ICdiJykpIHBbaS0tXSA9
ICdcMCc7CiAKLSAgICAgICAgcXVvdGFfc2l6ZSA9IGF0b2YocCk7CisgICAgICAgIHF1b3Rh
X3NpemUgPSBzdHJ0b2xsKHAsIE5VTEwsIDEwKTsKICAgICAgICAgaWYgKChwW2ldID09ICdN
JykgfHwgKHBbaV0gPT0gJ20nKSkgcXVvdGFfc2l6ZSAqPSAxMDI0ICogMTAyNDsKICAgICAg
ICAgaWYgKChwW2ldID09ICdLJykgfHwgKHBbaV0gPT0gJ2snKSkgcXVvdGFfc2l6ZSAqPSAx
MDI0OwogICAgICAgfQogICAgICAgcCA9IHN0cnRvayAoTlVMTCwgIiwiKTsKICAgICB9CiAK
LSAgICBpZiAocXVvdGFfY291bnQgPT0gLTEpCi0gICAgICBpZiAocXVvdGFfc2l6ZSA9PSAt
MS4wKSBzdHJjcHkgKHRlbXBxdW90YSwgIiIpOyAvKiBpbnZhbGlkIHF1b3RhICovCi0gICAg
ICBlbHNlIHNwcmludGYgKHRlbXBxdW90YSwgIiUuMGZTIiwgcXVvdGFfc2l6ZSk7Ci0gICAg
ZWxzZSBpZiAocXVvdGFfc2l6ZSA9PSAtMS4wKQotICAgICAgc3ByaW50ZiAodGVtcHF1b3Rh
LCAiJWx1QyIsIHF1b3RhX2NvdW50KTsKKyAgICBpZiAocXVvdGFfY291bnQgPT0gMCkKKyAg
ICAgIGlmIChxdW90YV9zaXplID09IDApIHN0cmNweSAodGVtcHF1b3RhLCAiIik7IC8qIGlu
dmFsaWQgcXVvdGEgKi8KKyAgICAgIGVsc2Ugc3ByaW50ZiAodGVtcHF1b3RhLCAiJWxsdVMi
LCBxdW90YV9zaXplKTsKKyAgICBlbHNlIGlmIChxdW90YV9zaXplID09IDApCisgICAgICBz
cHJpbnRmICh0ZW1wcXVvdGEsICIlbGx1QyIsIHF1b3RhX2NvdW50KTsKICAgICBlbHNlCi0g
ICAgICBzcHJpbnRmICh0ZW1wcXVvdGEsICIlLjBmUywlbHVDIiwgcXVvdGFfc2l6ZSwgcXVv
dGFfY291bnQpOworICAgICAgc3ByaW50ZiAodGVtcHF1b3RhLCAiJWxsdVMsJWxsdUMiLCBx
dW90YV9zaXplLCBxdW90YV9jb3VudCk7CiAKICAgICByZXR1cm4gdGVtcHF1b3RhOwogfQpA
QCAtNDI0Miw3ICs0MjUyLDcgQEAKIAlpbnQgcHJpbnRlZDsgICAvKiBudW1iZXIgb2YgY2hh
cmFjdGVycyBwcmludGVkICovCiAJY29uc3QgY2hhciAqZjsgLyogY3VycmVudCBwb3NpdGlv
biBpbiBmb3JtYXQgc3RyaW5nICovCiAJY2hhciAqYjsgICAgICAgLyogY3VycmVudCBwb3Np
dGlvbiBpbiBvdXRwdXQgYnVmZmVyICovCi0JY2hhciBuWzIwXTsgICAgLyogYnVmZmVyIHRv
IGhvbGQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG51bWJlciAqLworCWNoYXIgbls2MF07
ICAgIC8qIGJ1ZmZlciB0byBob2xkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBudW1iZXIg
Ki8KIAkKICAgICAgICAgaW50IGFyZ24gPSAwOyAgLyogdXNlZCBmb3IgbnVtYmVyZWQgYXJn
dW1lbnRzICovCiAgICAgICAgIGNoYXIgYXJnc3RyWzEwXTsKQEAgLTQyNzQsOSArNDI4NCwx
NCBAQAogCQkJCWNhc2UgJ3UnOgogCQkJCQlzbnByaW50ZiAobiwgc2l6ZW9mKG4pLCAiJXUi
LCB2YV9hcmcgKGFwLCB1bnNpZ25lZCBpbnQpKTsKIAkJCQkJYnJlYWs7CisKKwkJCQljYXNl
ICdTJzoKKwkJCQkJc25wcmludGYgKG4sIHNpemVvZihuKSwgIiVsbHUiLCB2YV9hcmcgKGFw
LCBzdG9yYWdlX3QpKTsKKwkJCQkJYnJlYWs7CiAJCQkJCQogCQkJCWNhc2UgJ2wnOgogCQkJ
CQlmKys7CisKIAkJCQkJc3dpdGNoICgqZikgewogCQkJCQkJY2FzZSAnZCc6CiAJCQkJCQlj
YXNlICdpJzoKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Zwb3Bt
YWlsZC5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92cG9wbWFpbGQuYwotLS0gdnBvcG1h
aWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWxkLmMJMjAxMS0wMi0wMyAyMTozMjoy
Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92cG9wbWFp
bGQuYwkyMDE1LTA5LTE4IDE1OjAwOjI3Ljc0NzA5NTA5NSArMDEwMApAQCAtMjQ1LDggKzI0
NSw4IEBACiAKICAgbWVtc2V0KFJlYWRCdWYsMCxzaXplb2YoUmVhZEJ1ZikpOwogICBpZiAo
c2VsZWN0KDIsJnJmZHMsKGZkX3NldCAqKSAwLChmZF9zZXQgKikwLCZ0dik+PTEpIHsKLSAg
ICBmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRpbik7Ci0gICAgcmV0dXJuKDEp
OworICAgIGlmIChmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRpbikgIT0gTlVM
TCkKKyAgICAgIHJldHVybigxKTsKICAgfQogICByZXR1cm4oLTEpOwogfQpAQCAtMzAxLDcg
KzMwMSw3IEBACiAgICAgZXhpdCggLTEgKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVm
LHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICAvKiBh
dXRoZW50aWNhdGUgZmlyc3Qgb3IgZHJvcCBjb25uZWN0aW9uICovCkBAIC0xNDIxLDcgKzE0
MjEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE0NDUs
NyArMTQ0NSw3IEBACiAgICAgICBzdHJlcnJvcihlcnJubykpOwogICAgIHJldHVybigtMSk7
CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsK
KyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsK
ICAgcmV0dXJuKDApOwogfQogCkBAIC0xNDc3LDcgKzE0NzcsNyBAQAogICAgIHJldHVybigt
MSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRf
T0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
IFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIHdoaWxlKChteWRpcmVudD1y
ZWFkZGlyKG15ZGlyKSkhPU5VTEwpewpAQCAtMTUxNSw3ICsxNTE1LDcgQEAKICAgICAvKiBv
aCB3ZWxsLCBhdCBsZWFzdCB3ZSBtaWdodCBkaWUgc29vbiAqLwogICB9CiAKLSAgc25wcmlu
dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJp
bnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwog
ICByZXR1cm4oMCk7CiB9CiAKQEAgLTE1NDYsOSArMTU0Niw4IEBACiAgICAgcmV0dXJuKC0x
KTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9P
Syk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P
Syk7CiAgIHJldHVybigwKTsKLQogfQogCiAKQEAgLTE1NzMsNyArMTU3Miw3IEBACiAgICAg
cmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsIFJFVF9PSyk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTYwNiw3ICsxNjA1LDcgQEAK
ICAgfQogICBmY2xvc2UoZnMpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
ICIlcyIsIFJFVF9PSyk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTYzMSw3ICsxNjMwLDcg
QEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICB3
aGlsZShmZ2V0cyh0bXBidWYsc2l6ZW9mKHRtcGJ1ZiksZnMpIT1OVUxMKXsKQEAgLTE2NDYs
NyArMTY0NSw3IEBACiAgIGZjbG9zZShmcyk7CiAKICAgaWYgKCB0bXBidWZbMF0gIT0gMCAm
JiB0bXBidWZbc3RybGVuKHRtcGJ1ZiktMV0gIT0gJ1xuJyApIHsKLSAgICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfQ1JMRiAiLiIgUkVUX0NSTEYpOworICAg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9DUkxGICIu
IiBSRVRfQ1JMRik7CiAgIH0gZWxzZSB7CiAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKICAgfQpAQCAtMTY3MywxMSArMTY3MiwxMSBA
QAogICAgICAgc3RyZXJyb3IoZXJybm8pKTsKICAgICByZXR1cm4oLTEpOwogICB9Ci0gIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwog
ICB3YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
ICJ1aWQ6ICVkXG4iLCBteXN0YXQuc3RfdWlkKTsgCiAgIHdhaXRfd3JpdGUoKTsKLSAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsK
ICAgcmV0dXJuKDApOwogfQogCkBAIC0xNzQyLDcgKzE3NDEsNyBAQAogICAgIGVudHJ5PWdl
dF9kb21haW5fZW50cmllcyhOVUxMKTsKICAgICAKICAgfQotICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7
CiB9CiAKQEAgLTE3NzksNyArMTc3OCw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0g
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp
OwogICB3YWl0X3dyaXRlKCk7CiAKICAgY291bnQgPSAwOwpAQCAtMTc5Nyw3ICsxNzk2LDcg
QEAKICAgfQogCiAgIGlmKCBtaXNzICkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6
ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgICByZXR1cm4oMCk7CiAg
IH0gZWxzZSBpZiggcGVyX3BhZ2UgPiAwICkgewogICAgIHBhZ2UgPSAoIGNvdW50IC8gcGVy
X3BhZ2UgKSArIDE7CkBAIC0xODA4LDcgKzE4MDcsNyBAQAogICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAicGFnZSAlaSIgUkVUX0NSTEYsIHBhZ2UgKTsKICAgd2Fp
dF93cml0ZSgpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIu
IiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTgyOSw3ICsxODI4
LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6
ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAog
ICBjb3VudCA9IDA7CkBAIC0xODQxLDcgKzE4NDAsNyBAQAogICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWkiIFJFVF9DUkxGLCBjb3VudCk7CiAgIHdh
aXRfd3JpdGUoKTsKIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
LiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
JXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE4NzQsNyArMTg3
Myw3IEBACiAgICAgIHJldHVybigtMSk7CiAgICB9CiAgCi0gICBzbnByaW50ZihXcml0ZUJ1
Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICAgc25wcmludGYoV3JpdGVC
dWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgIHdhaXRfd3Jp
dGUoKTsKICAKICAgIGZpcnN0PTE7CkBAIC0xODg2LDcgKzE4ODUsNyBAQAogCiAgICBzbnBy
aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWkiIFJFVF9DUkxGLCBj
b3VudCk7CiAgICB3YWl0X3dyaXRlKCk7Ci0gICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m
KFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgIHJldHVybigwKTsKICB9CiAg
IAkgCkBAIC0xOTQwLDcgKzE5MzksNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp
OwogICB3YWl0X3dyaXRlKCk7CiAKICAgZmlyc3Q9MTsKQEAgLTE5NTcsMTMgKzE5NTYsMTMg
QEAKICAgICAgIHNlbmRfdXNlcl9pbmZvKHRtcHZwdyk7CiAgICAgfQogCi0gICAgc25wcmlu
dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9DUkxGICk7CisgICAgc25wcmlu
dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9DUkxGICk7CiAgICAg
d2FpdF93cml0ZSgpOwogCiAgICAgKytjb3VudDsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigw
KTsKIH0KIApAQCAtMjAxOCw3ICsyMDE3LDcgQEAKICAgLyogIHByaW50IGFsbCBhbGlhc2Vz
ICAqLwogICBpZiAoc3Ryc3RyKEVtYWlsLCAiQCIpID09IE5VTEwpIHsKICAgICB0bXBhbGlh
cyA9IHZhbGlhc19zZWxlY3RfYWxsKEFsaWFzLCBFbWFpbCk7Ci0gICAgc25wcmludGYoV3Jp
dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgICBzbnByaW50ZihX
cml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICAgIHdh
aXRfd3JpdGUoKTsKICAgICAgIAogICAgIHdoaWxlICh0bXBhbGlhcyAhPSBOVUxMKSB7CkBA
IC0yMDMxLDkgKzIwMzAsOSBAQAogICB9IGVsc2UgewogICAgIHRtcGFsaWFzID0gdmFsaWFz
X3NlbGVjdChBbGlhcywgRG9tYWluKTsKICAgICBpZiAodG1wYWxpYXMgPT0gTlVMTCkgewot
ICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7Cisg
ICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09L
KTsKICAgICB9IGVsc2UgewotICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0
ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgICAgICB3YWl0X3dyaXRlKCk7CiAg
ICAgICAKICAgICAgIHdoaWxlICh0bXBhbGlhcyAhPSBOVUxMKSB7CkBAIC0yMDQ0LDcgKzIw
NDMsNyBAQAogICAgIH0KICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0
ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMjEw
Nyw3ICsyMTA2LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3Jp
dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3Jp
dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93
cml0ZSgpOwogCiAgIGogPSBia3NjYW5kaXIoIi4iLCAmbmFtZWxpc3QsIDAsIHFhX3NvcnQp
OwpAQCAtMjEzNiw3ICsyMTM1LDcgQEAKICAgICB9CiAgICAgKytjb3VudDsKICAgfQotICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYp
OwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTIxNTgsMTYgKzIxNTcsMTYgQEAKIAogICBpZiAo
dmF1dGhfbW9kdWxlX2ZlYXR1cmUoIklQX0FMSUFTX0RPTUFJTlMiKSkgewogICBpZiAoIHZn
ZXRfaXBfbWFwKGlwLHRtcGRvbWFpbixzaXplb2YodG1wZG9tYWluKSkgPCAwICkgewotICAg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9FUlIgIjAuMzAwMyBl
cnJvciIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksICIlcyIsIFJFVF9FUlIgIjAuMzAwMyBlcnJvciIgUkVUX0NSTEYpOwogICAgIHJldHVy
bigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLFJF
VF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz
IiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAgCiAgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksIiVzICVzIiBSRVRfQ1JMRiwgaXAsIHRtcGRvbWFpbik7
CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm
KSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm
KSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgfQogCiAgIGVsc2UKQEAgLTIyMDMsMTEgKzIy
MDIsMTEgQEAKICAgfQogCiAgIGlmICggdmFkZF9pcF9tYXAoaXAsZG9tYWluKSA8IDAgKSB7
Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX0VSUiAiMC4z
MTA1IGVycm9yIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMC4zMTA1IGVycm9yIiBSRVRfQ1JMRik7CiAgICAg
cmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz
IiwgUkVUX09LKTsKICAgIH0KIAogICAgZWxzZQpAQCAtMjI0Miw3ICsyMjQxLDcgQEAKICAg
ICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSxSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi
JXMiLCBSRVRfT0spOwogICB9CiAKICAgZWxzZQpAQCAtMjI2Myw3ICsyMjYyLDcgQEAKICAg
fQogCiAgIGlmICh2YXV0aF9tb2R1bGVfZmVhdHVyZSgiSVBfQUxJQVNfRE9NQUlOUyIpKSB7
Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsK
KyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01P
UkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgZmlyc3QgPSAxOwpAQCAtMjI3Myw3ICsyMjcy
LDcgQEAKICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzICVz
IiBSRVRfQ1JMRiwgcl9pcCwgcl9kb21haW4pOwogICAgIHdhaXRfd3JpdGUoKTsKICAgfQot
ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOwor
ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NS
TEYpOwogICB9CiAKICAgZWxzZQpAQCAtMjMwMyw3ICsyMzAyLDcgQEAKICAgICByZXR1cm4o
LTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVU
X09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMi
LCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAibWF4X3BvcGFjY291bnRzICVkIiBSRVRfQ1JMRiwgCkBA
IC0yMzE2LDc0ICsyMzE1LDc0IEBACiAgICAgbXlsaW1pdHMubWF4YXV0b3Jlc3BvbmRlcnMp
OyB3YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
ICJtYXhfbWFpbGluZ2xpc3RzICVkIiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMubWF4bWFp
bGluZ2xpc3RzKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiZGlza19xdW90YSAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlza19xdW90YSAlbGx1IiBSRVRfQ1JMRiwgCiAg
ICAgbXlsaW1pdHMuZGlza3F1b3RhKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAibWF4X21zZ2NvdW50ICVkIiBSRVRfQ1JMRiwgCisg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJtYXhfbXNnY291bnQgJWxs
dSIgUkVUX0NSTEYsIAogICAgIG15bGltaXRzLm1heG1zZ2NvdW50KTsgd2FpdF93cml0ZSgp
OwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVmYXVsdF9xdW90
YSAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp
LCAiZGVmYXVsdF9xdW90YSAlbGx1IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMuZGVmYXVs
dHF1b3RhKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp
dGVCdWYpLCAiZGVmYXVsdF9tYXhtc2djb3VudCAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50
ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVmYXVsdF9tYXhtc2djb3VudCAlbGx1
IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsgd2FpdF93
cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3BvcCkgCi0gICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfcG9wIDEiIFJFVF9DUkxGKTsg
CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2Fi
bGVfcG9wIDEiIFJFVF9DUkxGKTsgCiAgIGVsc2UgCi0gICAgc25wcmludGYoV3JpdGVCdWYs
c2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfcG9wIDAiIFJFVF9DUkxGKTsgCisgICAgc25w
cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfcG9wIDAi
IFJFVF9DUkxGKTsgCiAKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNh
YmxlX2ltYXApIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJk
aXNhYmxlX2ltYXAgMSIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv
ZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX2ltYXAgMSIgUkVUX0NSTEYpOwogICBlbHNl
Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfaW1h
cCAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm
KSwgIiVzIiwgImRpc2FibGVfaW1hcCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsK
IAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV9kaWFsdXApIAotICAgIHNucHJpbnRmKFdyaXRl
QnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX2RpYWx1cCAxIiBSRVRfQ1JMRik7Cisg
ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf
ZGlhbHVwIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9kaWFsdXAgMCIgUkVUX0NSTEYpOworICAgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX2RpYWx1
cCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlz
YWJsZV9wYXNzd29yZGNoYW5naW5nKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAxIiBSRVRfQ1JMRik7Cisg
ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf
cGFzc3dvcmRfY2hhbmdpbmcgMSIgUkVUX0NSTEYpOwogICBlbHNlIAotICAgIHNucHJpbnRm
KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3Bhc3N3b3JkX2NoYW5naW5n
IDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp
LCAiJXMiLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAwIiBSRVRfQ1JMRik7CiAgIHdh
aXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV93ZWJtYWlsKQotICAgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3dlYm1haWwgMSIg
UkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsICJkaXNhYmxlX3dlYm1haWwgMSIgUkVUX0NSTEYpOwogICBlbHNlCi0gICAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfd2VibWFpbCAwIiBSRVRf
Q1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwg
ImRpc2FibGVfd2VibWFpbCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBp
ZiAobXlsaW1pdHMuZGlzYWJsZV9yZWxheSkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9leHRlcm5hbF9yZWxheSAxIiBSRVRfQ1JMRik7Cisg
ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf
ZXh0ZXJuYWxfcmVsYXkgMSIgUkVUX0NSTEYpOwogICBlbHNlCi0gICAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfZXh0ZXJuYWxfcmVsYXkgMCIgUkVU
X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs
ICJkaXNhYmxlX2V4dGVybmFsX3JlbGF5IDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgp
OwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3NtdHApCi0gICAgc25wcmludGYoV3JpdGVC
dWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfc210cCAxIiBSRVRfQ1JMRik7CisgICAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc210
cCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLCAiZGlzYWJsZV9zbXRwIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihX
cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zbXRwIDAiIFJFVF9D
UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3NwYW1h
c3Nhc3NpbikgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRp
c2FibGVfc3BhbWFzc2Fzc2luIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMSIgUkVU
X0NSTEYpOwogICBlbHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1
ZiksICJkaXNhYmxlX3NwYW1hc3Nhc3NpbiAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo
V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc3BhbWFzc2Fzc2lu
IDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kZWxl
dGVfc3BhbSkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVs
ZXRlX3NwYW0gMSIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX
cml0ZUJ1ZiksICIlcyIsICJkZWxldGVfc3BhbSAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAg
ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVsZXRlX3NwYW0gMCIg
UkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl
cyIsICJkZWxldGVfc3BhbSAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBp
ZiAobXlsaW1pdHMuZGlzYWJsZV9tYWlsZHJvcCkgCi0gICAgc25wcmludGYoV3JpdGVCdWYs
c2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfbWFpbGRyb3AgMSIgUkVUX0NSTEYpOworICAg
IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX21h
aWxkcm9wIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz
aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9tYWlsZHJvcCAwIiBSRVRfQ1JMRik7CisgICAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfbWFp
bGRyb3AgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgInBlcm1fYWNjb3VudCAlZCIgUkVUX0NSTEYsIApA
QCAtMjQwNiw3ICsyNDA1LDcgQEAKICAgICBteWxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSk7
IHdhaXRfd3JpdGUoKTsKICAgd2FpdF93cml0ZSgpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVm
LHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVm
LHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsK
IH0KIApAQCAtMjQzNSw3ICsyNDM0LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAg
c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmlu
dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgd2FpdF93
cml0ZSgpOwogCiAgIHdoaWxlKGZnZXRzKFJlYWRCdWYsc2l6ZW9mKFJlYWRCdWYpLHN0ZGlu
KSE9TlVMTCApIHsKQEAgLTI0NDMsNyArMjQ0Miw3IEBACiAKICAgICBpZiAoIChwYXJhbSA9
IHN0cnRvayhSZWFkQnVmLFBBUkFNX1RPS0VOUykpID09IE5VTEwgKSBjb250aW51ZTsKICAg
ICBpZiAoICh2YWx1ZSA9IHN0cnRvayhOVUxMLFBBUkFNX1RPS0VOUykpID09IE5VTEwgKSAg
ewotICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAgICBz
bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgICAiICBX
YXJuaW5nOiBtaXNzaW5nIHZhbHVlIiBSRVRfQ1JMRik7CiAgICAgICB3YWl0X3dyaXRlKCk7
CiAgICAgICBjb250aW51ZTsKQEAgLTI1MDYsNyArMjUwNSw3IEBACiAgICAgfSBlbHNlIGlm
ICggc3RyY21wKHBhcmFtLCJwZXJtX2RlZmF1bHRxdW90YSIpID09IDAgKSB7CiAgICAgICBt
eWxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSA9IGF0b2kodmFsdWUpOwogICAgIH0gZWxzZSB7
Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAKKyAgICAgIHNu
cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICAgICIgIFdh
cm5pbmc6IGludmFsaWQgb3B0aW9uIiBSRVRfQ1JMRik7CiAgICAgICB3YWl0X3dyaXRlKCk7
CiAgICAgfQpAQCAtMjUxNiw3ICsyNTE1LDcgQEAKICAgaWYgKCB2c2V0X2xpbWl0cyhkb21h
aW4sJm15bGltaXRzKSA8IDAgKSB7CiAgICAgc2hvd19lcnJvciggRVJSX05PX1NFVF9MSU1J
VFMsIDM1MDQgKTsKICAgfSBlbHNlIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo
V3JpdGVCdWYpLFJFVF9PSyk7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgIiVzIiwgUkVUX09LKTsKICAgfQogICByZXR1cm4oMCk7CiB9CkBAIC0yNTQyLDcg
KzI1NDEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1
ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTI1
NzcsMTAgKzI1NzYsMTAgQEAKICAgfSAKIAogICBpZiAoISh2YXV0aF9tb2R1bGVfZmVhdHVy
ZSgiQVVUSF9MT0dHSU5HIikpKQotCSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgUkVUX09LKTsKKwkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks
ICIlcyIsIFJFVF9PSyk7CiAKICAgZWxzZSB7Ci0JICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisJICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl
b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAJICB3YWl0X3dyaXRlKCk7CiAK
IAkgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAidGltZSAlbGQiIFJF
VF9DUkxGLApAQCAtMjU5MSw3ICsyNTkwLDcgQEAKIAkJIHZnZXRfbGFzdGF1dGhpcCh0bXB2
cHcsIFRtcERvbWFpbikpOwogCSAgd2FpdF93cml0ZSgpOwogCi0JICBzbnByaW50ZihXcml0
ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworCSAgc25wcmludGYoV3Jp
dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgfQogCiAg
IHJldHVybigwKTsKQEAgLTI2MTgsMzUgKzI2MTcsMzYgQEAKIGludCBnZXRfdXNlcl9zaXpl
KCkKIHsKICAgY2hhciAqZW1haWxfYWRkcmVzczsKLSAgaW50IHJldCwgY250OwotICBsb25n
IGJ5dGVzOworICBpbnQgcmV0OworICBzdG9yYWdlX3QgY250OworICBzdG9yYWdlX3QgYnl0
ZXM7CiAKICAgaWYgKCEoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1JTikgJiYgIShBdXRoVnB3
LnB3X2dpZCAmIFNBX0FETUlOKSkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCBSRVRfRVJSICIzODAxIG5vdCBhdXRob3JpemVkIiBSRVRfQ1JMRik7Cisg
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9FUlIg
IjM4MDEgbm90IGF1dGhvcml6ZWQiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9
CiAKICAgaWYgKChlbWFpbF9hZGRyZXNzID0gc3RydG9rKE5VTEwsIFRPS0VOUykpID09IE5V
TEwpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAg
c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBSRVRf
RVJSICIzODAyIGVtYWlsX2FkZHJlc3MgcmVxdWlyZWQiIFJFVF9DUkxGKTsKICAgICByZXR1
cm4oLTEpOwogICB9CiAKICAgaWYgKHBhcnNlX2VtYWlsKGVtYWlsX2FkZHJlc3MsIFRtcFVz
ZXIsIFRtcERvbWFpbiwgQVVUSF9TSVpFKSAhPSAwKSB7Ci0gICAgc25wcmludGYoV3JpdGVC
dWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo
V3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwMyBpbnZhbGlkIGVtYWlsIGFk
ZHJlc3MiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKCEoQXV0
aFZwdy5wd19naWQgJiBTQV9BRE1JTikgJiYgKEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4p
IAogICAgICYmIChzdHJjbXAoVGhlRG9tYWluLCBUbXBEb21haW4pICE9IDApKSB7Ci0gICAg
c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdy
aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwNCBu
b3QgYXV0aG9yaXplZCBmb3IgZG9tYWluIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsK
ICAgfQogCiAgIGlmICgodG1wdnB3ID0gdmF1dGhfZ2V0cHcoVG1wVXNlciwgVG1wRG9tYWlu
KSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYp
LCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAg
ICAgIFJFVF9FUlIgIjM4MDUgdXNlciBkb2VzIG5vdCBleGlzdCIgUkVUX0NSTEYpOwogICAg
IHJldHVybigtMSk7CiAgIH0KQEAgLTI2NTQsMTggKzI2NTQsMTggQEAKICAgYnl0ZXMgPSAw
OwogICBjbnQgPSAwOwogICBpZiAoKHJldCA9IHJlYWR1c2VycXVvdGEodG1wdnB3LT5wd19k
aXIsICZieXRlcywgJmNudCkpICE9IDApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6
ZW9mKFdyaXRlQnVmKSwgCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1
ZiksICIlcyIsCiAgICAgICBSRVRfRVJSICIzODA2IHVuYWJsZSB0byBmZXRjaCBzaXplIG9m
IHVzZXIgYWNjb3VudCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBz
bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp
OwogICB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVC
dWYpLCAic2l6ZSAlbGQiIFJFVF9DUkxGLCBieXRlcyk7CisgIHNucHJpbnRmKFdyaXRlQnVm
LCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAlbGx1IiBSRVRfQ1JMRiwgYnl0ZXMpOwogICB3
YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi
Y291bnQgJWQiIFJFVF9DUkxGLCBjbnQpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgImNvdW50ICVsdSIgUkVUX0NSTEYsIGNudCk7CiAgIHdhaXRfd3JpdGUo
KTsKLSAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JM
Rik7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIg
UkVUX0NSTEYpOwogCiAgIHJldHVybigwKTsKIH0KQEAgLTI2NzMsMzEgKzI2NzMsMzIgQEAK
IGludCBnZXRfZG9tYWluX3NpemUoKQogewogICBjaGFyICpkb21haW4sIHRtcGRpclsyNTZd
OwotICBpbnQgcmV0LCBjbnQsIGZpcnN0OwotICBsb25nIGJ5dGVzOwotICB1bnNpZ25lZCBp
bnQgdG90YWxjbnQ7Ci0gIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbGJ5dGVzOworICBpbnQg
cmV0LCBmaXJzdDsKKyAgc3RvcmFnZV90IGNudDsKKyAgc3RvcmFnZV90IGJ5dGVzOworICBz
dG9yYWdlX3QgdG90YWxjbnQ7CisgIHN0b3JhZ2VfdCB0b3RhbGJ5dGVzOwogCiAgIGlmICgh
KEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4pICYmICEoQXV0aFZwdy5wd19naWQgJiBTQV9B
RE1JTikpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisg
ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBS
RVRfRVJSICIzOTAxIG5vdCBhdXRob3JpemVkIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0x
KTsKICAgfQogCiAgIGlmICgoZG9tYWluID0gc3RydG9rKE5VTEwsIFRPS0VOUykpID09IE5V
TEwpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAg
c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBSRVRf
RVJSICIzOTAyIGRvbWFpbiByZXF1aXJlZCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7
CiAgIH0KIAogICBpZiAoIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSAmJiAoQXV0aFZw
dy5wd19naWQgJiBRQV9BRE1JTikgCiAgICAgJiYgKHN0cmNtcChUaGVEb21haW4sIGRvbWFp
bikgIT0gMCkpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwK
KyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAg
IFJFVF9FUlIgIjM5MDMgbm90IGF1dGhvcml6ZWQgZm9yIGRvbWFpbiIgUkVUX0NSTEYpOwog
ICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy
aXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy
aXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgdG90
YWxieXRlcyA9IDA7CkBAIC0yNzE1LDEyICsyNzE2LDEyIEBACiAgICAgfSBlbHNlIHsKICAg
ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAidXNlciAlc0AlcyIg
UkVUX0NSTEYsIHRtcHZwdy0+cHdfbmFtZSwgZG9tYWluKTsKICAgICAgIHdhaXRfd3JpdGUo
KTsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAl
bGQiIFJFVF9DUkxGLCBieXRlcyk7CisgICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m
KFdyaXRlQnVmKSwgInNpemUgJWxsdSIgUkVUX0NSTEYsIGJ5dGVzKTsKICAgICAgIHdhaXRf
d3JpdGUoKTsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi
Y291bnQgJWQiIFJFVF9DUkxGLCBjbnQpOworICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNp
emVvZihXcml0ZUJ1ZiksICJjb3VudCAlbGx1IiBSRVRfQ1JMRiwgY250KTsKICAgICAgIHdh
aXRfd3JpdGUoKTsKLSAgICAgIHRvdGFsYnl0ZXMgKz0gKHVuc2lnbmVkIGxvbmcpYnl0ZXM7
Ci0gICAgICB0b3RhbGNudCArPSAodW5zaWduZWQgaW50KWNudDsKKyAgICAgIHRvdGFsYnl0
ZXMgKz0gYnl0ZXM7CisgICAgICB0b3RhbGNudCArPSBjbnQ7CiAgICAgfQogICB9CiAKQEAg
LTI3MjgsMTYgKzI3MjksMTYgQEAKICAgd2FpdF93cml0ZSgpOwogICBzbnByaW50ZihXcml0
ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgInNpemUgJWxsdSIgUkVUX0NSTEYsIHRvdGFsYnl0
ZXMpOwogICB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3Jp
dGVCdWYpLCAiY291bnQgJXUiIFJFVF9DUkxGLCB0b3RhbGNudCk7CisgIHNucHJpbnRmKFdy
aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWxsdSIgUkVUX0NSTEYsIHRvdGFs
Y250KTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy
aXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihX
cml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAKICAgcmV0dXJuKDApOwogfQogCiBp
bnQgcXVpdCgpCiB7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJF
VF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJF
VF9PSyk7CiAgIHdhaXRfd3JpdGUoKTsKICAgdmNsb3NlKCk7CiAKQEAgLTI3NDgsNyArMjc0
OSw3IEBACiB7CiAgaW50IGk7CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl
QnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC
dWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBmb3IoaT0w
O0xvZ2luRnVuY3Rpb25zW2ldLmNvbW1hbmQhPU5VTEw7KytpICkgewpAQCAtMjc2Myw3ICsy
NzY0LDcgQEAKICAgICB9CiAgICAgd2FpdF93cml0ZSgpOwogICB9Ci0gIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdy
aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIAogICBy
ZXR1cm4oMSk7IAogfQpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcv
dnBvcG1haWwuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnBvcG1haWwuaAotLS0gdnBv
cG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWwuaAkyMDExLTAyLTAzIDIxOjMy
OjI3LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Zwb3Bt
YWlsLmgJMjAxNS0wOS0xOCAxNToxMzowNC4yNDMwOTQyNjkgKzAxMDAKQEAgLTIxLDYgKzIx
LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CQkv
LyBmb3IgdWlkX3QKKyNpbmNsdWRlICJzdG9yYWdlLmgiCiAjaW5jbHVkZSAidmF1dGguaCIK
IAogLyogIEVuYWJsZSBleHBhbmRlZCBkZWJ1ZyBpbmZvcm1hdGlvbi4gIENvbnNpZGVyIHRo
ZXNlIGZvciAuL2NvbmZpZ3VyZSBvcHRpb25zICAqLwpAQCAtMTg1LDcgKzE4Niw2IEBACiAg
ICAgICAgIGNoYXIgICAgKnBhdGg7CiB9IGRvbWFpbl9lbnRyeTsKIAotCiAvKiAgIFN0cnVj
dHVyZSBmb3IgbWFpbGluZyBsaXN0IGRhdGEgICovCiB0eXBlZGVmIHN0cnVjdCBsaXN0SW5m
b1R5cGUgewogICAgZG9tYWluX2VudHJ5ICplbnRyeTsKQEAgLTM0Myw3ICszNDMsNyBAQAog
Y2hhciAqZm9ybWF0X21haWxkaXJxdW90YShjb25zdCBjaGFyICpxKTsKIGNoYXIgKmRhdGVf
aGVhZGVyKCk7CiBpbnQgcW5wcmludGYgKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLWludCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIq
IGRpciwgbG9uZyAqc2l6ZXAsIGludCAqY250cCk7CitpbnQgcmVhZHVzZXJxdW90YShjb25z
dCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCk7CiAjaWZu
ZGVmIEhBVkVfV0FSTgogI2RlZmluZSB3YXJuKC4uLikgZnByaW50ZihzdGRlcnIsIF9fVkFf
QVJHU19fKQogI2VuZGlmCmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3Jp
Zy92dXNhZ2VkL2RpcmVjdG9yeS5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2Vk
L2RpcmVjdG9yeS5jCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2Vk
L2RpcmVjdG9yeS5jCTIwMTAtMTEtMzAgMjA6MzM6MTEuMDAwMDAwMDAwICswMDAwCisrKyB2
cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC9kaXJlY3RvcnkuYwkyMDE1LTA5LTE4
IDE1OjAwOjI3Ljc0ODA5NTA4MCArMDEwMApAQCAtMzIsNyArMzIsNyBAQAogICAgI2luY2x1
ZGUgPGFzc2VydC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8Y29uZi5oPgotI2luY2x1ZGUgPHN0
b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAicGF0aC5oIgog
I2luY2x1ZGUgImRpcmVjdG9yeS5oIgogCmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQt
dHJ1bmsub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5oIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu
ay92dXNhZ2VkL2RpcmVjdG9yeS5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3Jp
Zy92dXNhZ2VkL2RpcmVjdG9yeS5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICsw
MDAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC9kaXJlY3RvcnkuaAky
MDE1LTA5LTE4IDE1OjAwOjI3Ljc0OTA5NTA3MiArMDEwMApAQCAtMjQsNyArMjQsNyBAQAog
I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgImNv
bmYuaCIKLSNpbmNsdWRlICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgog
CiAvKgogICAgQSBzaW5nbGUgZGlyZWN0b3J5IHN0cnVjdHVyZQpkaWZmIC11UHIgdnBvcG1h
aWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC9kb21haW4uYyB2cG9wbWFpbC1jb2Rl
LTEwMzQtdHJ1bmsvdnVzYWdlZC9kb21haW4uYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRy
dW5rLm9yaWcvdnVzYWdlZC9kb21haW4uYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAw
MCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQvZG9tYWluLmMJ
MjAxNS0wOS0xOCAxNTowMDoyNy43NDkwOTUwNzIgKzAxMDAKQEAgLTI1LDcgKzI1LDcgQEAK
ICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHB0aHJlYWQuaD4K
LSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2luY2x1
ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiZG9tYWluLmgiCiAKZGlmZiAtdVByIHZwb3BtYWls
LWNvZGUtMTAzNC10cnVuay5vcmlnL3Z1c2FnZWQvZG9tYWluLmggdnBvcG1haWwtY29kZS0x
MDM0LXRydW5rL3Z1c2FnZWQvZG9tYWluLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu
ay5vcmlnL3Z1c2FnZWQvZG9tYWluLmgJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAg
KzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL2RvbWFpbi5oCTIw
MTUtMDktMTggMTU6MDA6MjcuNzUwMDk1MDU2ICswMTAwCkBAIC0yMiw3ICsyMiw3IEBACiAg
ICAjZGVmaW5lIF9fRE9NQUlOX0hfCiAKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVk
ZSAic3RvcmFnZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKIAogLyoKICAgIE1heGlt
dW0gbGVuZ3RoIG9mIGEgZG9tYWluIG5hbWUKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAz
NC10cnVuay5vcmlnL3Z1c2FnZWQvcXVvdGEuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsv
dnVzYWdlZC9xdW90YS5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNh
Z2VkL3F1b3RhLmgJMjAwOS0wMy0xMCAxNzo0Mzo1MC4wMDAwMDAwMDAgKzAwMDAKKysrIHZw
b3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3F1b3RhLmgJMjAxNS0wOS0xOCAxNTow
MDoyNy43NTAwOTUwNTYgKzAxMDAKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19RVU9U
QV9IXwogICAgI2RlZmluZSBfX1FVT1RBX0hfCiAKLSNpbmNsdWRlICJzdG9yYWdlLmgiCisj
aW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgUXVvdGEgc2l6ZSBpbiBieXRlcwpk
aWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2VyLmMg
dnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQvdXNlci5jCi0tLSB2cG9wbWFpbC1j
b2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3VzZXIuYwkyMDEwLTA5LTAxIDIwOjI0OjQz
LjAwMDAwMDAwMCArMDEwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQv
dXNlci5jCTIwMTUtMDktMTggMTU6MDA6MjcuNzUxMDk1MDM5ICswMTAwCkBAIC0zMiw3ICsz
Miw3IEBACiAjaW5jbHVkZSA8dmF1dGguaD4KICNpbmNsdWRlIDx2YXV0aG1vZHVsZS5oPgog
I2luY2x1ZGUgPGNvbmYuaD4KLSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4v
c3RvcmFnZS5oIgogI2luY2x1ZGUgInBhdGguaCIKICNpbmNsdWRlICJjYWNoZS5oIgogI2lu
Y2x1ZGUgInVzZXJzdG9yZS5oIgpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5r
Lm9yaWcvdnVzYWdlZC91c2VyLmggdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQv
dXNlci5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3VzZXIu
aAkyMDEwLTA5LTAxIDIwOjI0OjQzLjAwMDAwMDAwMCArMDEwMAorKysgdnBvcG1haWwtY29k
ZS0xMDM0LXRydW5rL3Z1c2FnZWQvdXNlci5oCTIwMTUtMDktMTggMTU6MDA6MjcuNzUxMDk1
MDM5ICswMTAwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlICIuLi9jb25mLmgiCi0jaW5jbHVkZSAic3RvcmFn
ZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJkb21haW4uaCIKICNp
bmNsdWRlICJ1c2Vyc3RvcmUuaCIKICNpbmNsdWRlICIuLi92YXV0aC5oIgpkaWZmIC11UHIg
dnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYyB2cG9w
bWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC91c2Vyc3RvcmUuYwotLS0gdnBvcG1haWwt
Y29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYwkyMDA5LTEyLTEwIDE2
OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1
c2FnZWQvdXNlcnN0b3JlLmMJMjAxNS0wOS0xOCAxNTowMDoyNy43NTIwOTUwMjcgKzAxMDAK
QEAgLTI5LDcgKzI5LDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcKICAgICNpbmNsdWRlIDxh
c3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9z
dG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUgInBhdGguaCIKICNpbmNs
dWRlICJkaXJlY3RvcnkuaCIKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5v
cmlnL3Z1c2FnZWQvdXNlcnN0b3JlLmggdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2Fn
ZWQvdXNlcnN0b3JlLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Z1c2Fn
ZWQvdXNlcnN0b3JlLmgJMjAwOS0wOC0yNCAxNjo0MDoxNS4wMDAwMDAwMDAgKzAxMDAKKysr
IHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3VzZXJzdG9yZS5oCTIwMTUtMDkt
MTggMTU6MDA6MjcuNzUyMDk1MDI3ICswMTAwCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVm
IF9fVVNFUlNUT1JFX0hfCiAgICAjZGVmaW5lIF9fVVNFUlNUT1JFX0hfCiAKLSNpbmNsdWRl
ICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2luY2x1ZGUgImRpcmVj
dG9yeS5oIgogI2luY2x1ZGUgImNvbmYuaCIKICNpbmNsdWRlIDxwdGhyZWFkLmg+CmRpZmYg
LXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5jIHZwb3Bt
YWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3ZkYi5jCi0tLSB2cG9wbWFpbC1jb2RlLTEw
MzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5jCTIwMTAtMDktMDEgMjA6NTQ6NDAuMDAwMDAw
MDAwICswMTAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC92ZGIuYwky
MDE1LTA5LTE4IDE1OjAwOjI3Ljc1MzA5NTAxOSArMDEwMApAQCAtMTMsNyArMTMsNyBAQAog
I2lmZGVmIEFTU0VSVF9ERUJVRwogICAgI2luY2x1ZGUgPGFzc2VydC5oPgogI2VuZGlmCi0j
aW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRl
IDxjb25mLmg+CiAjaW5jbHVkZSA8dnBvcG1haWwuaD4KICNpbmNsdWRlICJwYXRoLmgiCmRp
ZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5oIHZw
b3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3ZkYi5oCi0tLSB2cG9wbWFpbC1jb2Rl
LTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAw
MDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC92ZGIu
aAkyMDE1LTA5LTE4IDE1OjAwOjI3Ljc1MzA5NTAxOSArMDEwMApAQCAtNSw3ICs1LDcgQEAK
ICNpZm5kZWYgX19WREJfSF8KICAgICNkZWZpbmUgX19WREJfSF8KIAotI2luY2x1ZGUgPHN0
b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgog
CiAvKgo=
--------------020200030005040500050403--