patch for pager_noxpm
Doug Alcorn (alcornd@sonoco.com)
29 Sep 1998 17:23:59 -0400
--Multipart_Tue_Sep_29_17:23:59_1998-1
Content-Type: text/plain; charset=US-ASCII
I talked with sasha on #afterstep and found that the pager_noxpm had
not been updated in a while. So, since I was using pager_noxpm and it
didn't do what I wanted, I decided to update it. Here is my patch
file. I jumped to patch level 07 for 1.5beta4. You can call it
whatever you want. I made the patch in the afterstep/src directory.
--Multipart_Tue_Sep_29_17:23:59_1998-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="1.5beta4-07-lathi-pager_noxpm.patch"
Content-Transfer-Encoding: base64
ZGlmZiAtTiAtdSAtciBQYWdlcl9ub3hwbS9QYWdlcl9ub3hwbS5jIFBhZ2VyX25veHBtLmRr
YS9QYWdlcl9ub3hwbS5jCi0tLSBQYWdlcl9ub3hwbS9QYWdlcl9ub3hwbS5jCU1vbiBTZXAg
MTQgMDM6NDc6MjMgMTk5OAorKysgUGFnZXJfbm94cG0uZGthL1BhZ2VyX25veHBtLmMJVHVl
IFNlcCAyOSAxNjowNjo0MyAxOTk4CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdo
dCAoQykgMTk5OCBEb3VnIEFsY29ybiA8YWxjb3JuZEBlYXJ0aGxpbmsubmV0PgogICogQ29w
eXJpZ2h0IChDKSAxOTk2IERhbiBXZWVrcwogICogQ29weXJpZ2h0IChDKSAxOTk0IFJvYiBO
YXRpb24KICAqCkBAIC0zMSw2ICszMiw3IEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5v
Lmg+CiAjaWZkZWYgSVNDCQkJLyogU2F1bCAqLwogI2luY2x1ZGUgPHN5cy9ic2R0eXBlcy5o
PgkvKiBTYXVsICovCiAjZW5kaWYgLyogU2F1bCAqLwpAQCAtNDUsNiArNDcsOSBAQAogI2lu
Y2x1ZGUgPFgxMS9YcHJvdG8uaD4KICNpbmNsdWRlIDxYMTEvWGF0b20uaD4KICNpbmNsdWRl
IDxYMTEvSW50cmluc2ljLmg+CisjaWZkZWYgSTE4TgorI2luY2x1ZGUgPFgxMS9YbG9jYWxl
Lmg+CisjZW5kaWYKIAogI2luY2x1ZGUgIlBhZ2VyX25veHBtLmgiCiAjaW5jbHVkZSAiLi4v
Li4vaW5jbHVkZS9tb2R1bGUuaCIKQEAgLTY1LDYgKzcwLDcgQEAKIFBhZ2VyV2luZG93ICpG
b2N1c1dpbiA9IE5VTEw7CiAKIERpc3BsYXkgKmRweTsJCQkvKiB3aGljaCBkaXNwbGF5IGFy
ZSB3ZSB0YWxraW5nIHRvICovCitpbnQgc2NyZWVuOwogaW50IHhfZmQsIGZkX3dpZHRoOwog
CiBjaGFyICpQYWdlckZvcmUgPSAiYmxhY2siOwpAQCAtODUsMTMgKzkxLDI0IEBACiBpbnQg
ZGVzazEgPSAwLCBkZXNrMiA9IDA7CiBpbnQgbmRlc2tzID0gMDsKIGludCBTdGlja3lJY29u
cyA9IDA7CisKKy8qIEFkZGVkIGZvciBCYWxsb25zIC0gZGthICovCitpbnQgU2hvd0JhbGxv
bnMgPSAwOworY2hhciAqQmFsbG9vbkJhY2sgPSBOVUxMOworY2hhciAqQmFsbG9vbkZvcmUg
PSBOVUxMOworY2hhciAqQmFsbG9vbkZvbnQgPSAiZml4ZWQiOworY2hhciAqQmFsbG9vbkJv
cmRlckNvbG9yID0gImJsYWNrIjsKK2ludCBCYWxsb29uQm9yZGVyV2lkdGggPSAxOworaW50
IEJhbGxvb25ZT2Zmc2V0ID0gMTsKKworaW50IFRpdGxlQWxpZ24gPSAxOwkJLyogZGthICov
CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKICAqCiAgKiAgUHJvY2VkdXJlOgogICoJbWFpbiAtIHN0
YXJ0IG9mIG1vZHVsZQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWludCAKK2ludAogbWFp
biAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogICBjaGFyICp0ZW1wLCAqcywgKmNwdHI7
CkBAIC05OSw3ICsxMTYsNyBAQAogICBjaGFyIGNvbmZpZ2ZpbGVbMjU1XTsKICAgY2hhciAq
cmVhbGNvbmZpZ2ZpbGU7CiAgIGludCBpdGVtcCwgaTsKLSAgY2hhciBsaW5lWzEwMF07Cisg
IGNoYXIgbGluZVtNQVhMSU5FTEVOR1RIXTsKICAgY2hhciBtYXNrX21lc2dbNTBdOwogCiAg
IC8qIFNhdmUgb3VyIHByb2dyYW0gIG5hbWUgLSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KQEAg
LTEwOCw5ICsxMjUsMTUgQEAKICAgaWYgKHMgIT0gTlVMTCkKICAgICB0ZW1wID0gcyArIDE7
CiAKLSAgTXlOYW1lID0gc2FmZW1hbGxvYyAoc3RybGVuICh0ZW1wKSArIDIpOworICBNeU5h
bWUgPSBzYWZlbWFsbG9jIChzdHJsZW4gKHRlbXApICsgMSk7CiAgIHN0cmNweSAoTXlOYW1l
LCB0ZW1wKTsKIAorCisjaWZkZWYgSTE4TgorICBpZiAoc2V0bG9jYWxlIChMQ19BTEwsIEFG
VEVSX0xPQ0FMRSkgPT0gTlVMTCkKKyAgICBmcHJpbnRmIChzdGRlcnIsICIlczogY2Fubm90
IHNldCBsb2NhbGUuXG4iLCBNeU5hbWUpOworI2VuZGlmCisKICAgaWYgKChhcmdjICE9IDcp
ICYmIChhcmdjICE9IDYpKQogICAgIHsKICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzIFZl
cnNpb24gJXMgc2hvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgYnkgYWZ0ZXJzdGVwIVxuIiwgTXlO
YW1lLApAQCAtMTUwLDcgKzE3Myw3IEBACiAgICAgfQogICBuZGVza3MgPSBkZXNrMiAtIGRl
c2sxICsgMTsKIAotICBEZXNrcyA9IChEZXNrSW5mbyAqKSBtYWxsb2MgKG5kZXNrcyAqIHNp
emVvZiAoRGVza0luZm8pKTsKKyAgRGVza3MgPSAoRGVza0luZm8gKikgc2FmZW1hbGxvYyAo
bmRlc2tzICogc2l6ZW9mIChEZXNrSW5mbykpOwogICBmb3IgKGkgPSAwOyBpIDwgbmRlc2tz
OyBpKyspCiAgICAgewogICAgICAgc3ByaW50ZiAobGluZSwgIkRlc2sgJWQiLCBpICsgZGVz
azEpOwpAQCAtMTY2LDcgKzE4OSw3IEBACiAgICAgfQogICB4X2ZkID0gWENvbm5lY3Rpb25O
dW1iZXIgKGRweSk7CiAKLSAgU2NyLnNjcmVlbiA9IERlZmF1bHRTY3JlZW4gKGRweSk7Cisg
IHNjcmVlbiA9IFNjci5zY3JlZW4gPSBEZWZhdWx0U2NyZWVuIChkcHkpOwogICBTY3IuUm9v
dCA9IFJvb3RXaW5kb3cgKGRweSwgU2NyLnNjcmVlbik7CiAgIGlmIChTY3IuUm9vdCA9PSBO
b25lKQogICAgIHsKQEAgLTE3NCw2ICsxOTcsNyBAQAogICAgICAgZXhpdCAoMSk7CiAgICAg
fQogICBTY3IuZF9kZXB0aCA9IERlZmF1bHREZXB0aCAoZHB5LCBTY3Iuc2NyZWVuKTsKKyAg
U2NyLkN1cnJlbnREZXNrID0gMTsKIAogICBzcHJpbnRmIChtYXNrX21lc2csICJTRVRfTUFT
SyAlbHVcbiIsICh1bnNpZ25lZCBsb25nKSAoTV9BRERfV0lORE9XIHwKIAkJCQkJCQkgTV9D
T05GSUdVUkVfV0lORE9XIHwKQEAgLTE5NSw3ICsyMTksNyBAQAogICBlbHNlCiAgICAgewog
ICAgICAgc3ByaW50ZiAoY29uZmlnZmlsZSwgIiVzL3BhZ2VyIiwgQUZURVJfRElSKTsKLSAg
ICAgIHJlYWxjb25maWdmaWxlID0gUHV0SG9tZSAoY29uZmlnZmlsZSk7CisgICAgICByZWFs
Y29uZmlnZmlsZSA9IChjaGFyICopIFB1dEhvbWUgKGNvbmZpZ2ZpbGUpOwogCiAgICAgICBp
ZiAoKENoZWNrRmlsZSAocmVhbGNvbmZpZ2ZpbGUpKSA9PSAtMSkKIAl7CkBAIC0yMDQsOCAr
MjI4LDE0IEBACiAJICByZWFsY29uZmlnZmlsZSA9IFB1dEhvbWUgKGNvbmZpZ2ZpbGUpOwog
CX0KICAgICAgIFBhcnNlT3B0aW9ucyAocmVhbGNvbmZpZ2ZpbGUpOworICAgICAgZnJlZSAo
cmVhbGNvbmZpZ2ZpbGUpOwogICAgIH0KIAorICBQYXJzZUJhc2VPcHRpb25zIChhcmd2WzNd
KTsKKworICAvKiBmaW5pc2ggaW5pdGlhbGl6aW5nIGJhbGxvb25zICovCisgIGJhbGxvb25f
c2V0dXAoKTsKKwogICAvKiBvcGVuIGEgcGFnZXIgd2luZG93ICovCiAgIGluaXRpYWxpemVf
cGFnZXIgKCk7CiAKQEAgLTIyNSwxNCArMjU1LDE0IEBACiAgKglMb29wIC0gd2FpdCBmb3Ig
ZGF0YSB0byBwcm9jZXNzCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCAKK3ZvaWQK
IExvb3AgKGludCAqZmQpCiB7CiAgIFhFdmVudCBFdmVudDsKIAogICB3aGlsZSAoMSkKICAg
ICB7Ci0gICAgICBpZiAoTXlfWE5leHRFdmVudCAoZHB5LCAmRXZlbnQpKQorICAgICAgaWYg
KE15X1hOZXh0RXZlbnQgKGRweSwgJkV2ZW50KSAmJiAhYmFsbG9vbl9oYW5kbGVfZXZlbnQg
KCZFdmVudCkpCiAJRGlzcGF0Y2hFdmVudCAoJkV2ZW50KTsKICAgICB9CiB9CkBAIC0yNDQs
NyArMjc0LDcgQEAKICAqCVByb2Nlc3MgbWVzc2FnZSAtIGV4YW1pbmVzIHBhY2tldCB0eXBl
cywgYW5kIHRha2VzIGFwcHJvcHJpYXRlIGFjdGlvbgogICoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLXZvaWQgCit2b2lkCiBwcm9jZXNzX21lc3NhZ2UgKHVuc2lnbmVkIGxvbmcgdHlwZSwg
dW5zaWduZWQgbG9uZyAqYm9keSkKIHsKICAgc3dpdGNoICh0eXBlKQpAQCAtMjk5LDcgKzMy
OSw3IEBACiAgKglTSUdQSVBFIGhhbmRsZXIgLSBTSUdQSVBFIG1lYW5zIGFmdGVyc3RlcCBp
cyBkeWluZwogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgCit2b2lkCiBEZWFkUGlw
ZSAoaW50IG5vbnNlbnNlKQogewogICBleGl0ICgwKTsKQEAgLTMxMSw3ICszNDEsNyBAQAog
ICoJbGlzdF9hZGQgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCiAgKgog
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwotdm9pZCAKK3ZvaWQKIGxpc3RfYWRkICh1bnNpZ25lZCBs
b25nICpib2R5KQogewogICBQYWdlcldpbmRvdyAqdCwgKipwcmV2OwpAQCAtMzUyLDcgKzM4
Miw3IEBACiAgKglsaXN0X2NvbmZpZ3VyZSAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50cyB0
byBzdGRlcnIKICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIAordm9pZAogbGlzdF9j
b25maWd1cmUgKHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7CiAgIFBhZ2VyV2luZG93ICp0OwpA
QCAtMzk2LDYgKzQyNiwxMyBAQAogCSAgICAgIHQtPnkgPSAtMTAwMDA7CiAJICAgIH0KIAl9
CisgICAgICBlbHNlIGlmICh0LT5mbGFncyAmIFNIQURFRCkKKwl7CisJICB0LT54ID0gdC0+
ZnJhbWVfeDsKKwkgIHQtPnkgPSB0LT5mcmFtZV95OworCSAgdC0+d2lkdGggPSB0LT5mcmFt
ZV93aWR0aDsKKwkgIHQtPmhlaWdodCA9IHQtPnRpdGxlX2hlaWdodDsKKwl9CiAgICAgICBl
bHNlCiAJewogCSAgdC0+eCA9IHQtPmZyYW1lX3g7CkBAIC00MTAsNyArNDQ3LDggQEAKIAog
ICAgICAgZWxzZQogCU1vdmVSZXNpemVQYWdlclZpZXcgKHQpOwotICAgICAgaWYgKEZvY3Vz
V2luID09IHQpCisKKyAgICAgIGlmICgoRm9jdXNXaW4gPT0gdCkgJiYgISh0LT5mbGFncyAm
IFNIQURFRCkpCiAJSGlsaWdodCAodCwgT04pOwogICAgICAgZWxzZQogCUhpbGlnaHQgKHQs
IE9GRik7CkBAIC00MjMsNyArNDYxLDcgQEAKICAqCWxpc3RfZGVzdHJveSAtIGRpc3BsYXlz
IHBhY2tldCBjb250ZW50cyB0byBzdGRlcnIKICAqCiAgKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12
b2lkIAordm9pZAogbGlzdF9kZXN0cm95ICh1bnNpZ25lZCBsb25nICpib2R5KQogewogICBQ
YWdlcldpbmRvdyAqdCwgKipwcmV2OwpAQCAtNDU4LDcgKzQ5Niw3IEBACiAgKglsaXN0X2Zv
Y3VzIC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgogICoKICAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KLXZvaWQgCit2b2lkCiBsaXN0X2ZvY3VzICh1bnNpZ25lZCBsb25nICpi
b2R5KQogewogICBQYWdlcldpbmRvdyAqdCwgKnRlbXA7CkBAIC00ODksNyArNTI3LDcgQEAK
ICAqCWxpc3RfbmV3X3BhZ2UgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJy
CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCAKK3ZvaWQKIGxpc3RfbmV3X3BhZ2Ug
KHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7CiAgIFNjci5WeCA9IChsb25nKSBib2R5WzBdOwpA
QCAtNTA3LDIxICs1NDUsMjcgQEAKICAqCWxpc3RfbmV3X2Rlc2sgLSBkaXNwbGF5cyBwYWNr
ZXQgY29udGVudHMgdG8gc3RkZXJyCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCAK
K2ludCBvbGRvbGREZXNrID0gLTE7CitpbnQgb2xkRGVzayA9IC0xOworaW50IGZpcnN0VGlt
ZSA9IDE7CisKK3ZvaWQKIGxpc3RfbmV3X2Rlc2sgKHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7
Ci0gIGludCBvbGREZXNrOwotCisgIG9sZG9sZERlc2sgPSBvbGREZXNrOwogICBvbGREZXNr
ID0gU2NyLkN1cnJlbnREZXNrOwogICBTY3IuQ3VycmVudERlc2sgPSAobG9uZykgYm9keVsw
XTsKIAogICBNb3ZlUGFnZSAoKTsKKyAgaWYgKChvbGREZXNrIC0gZGVzazEgPj0gMCkgJiYg
KG9sZERlc2sgLSBkZXNrMSA8PSBuZGVza3MpKQorICAgIERyYXdHcmlkIChvbGREZXNrIC0g
ZGVzazEsIDEpOworICBpZiAoKFNjci5DdXJyZW50RGVzayAtIGRlc2sxID49IDApICYmIChT
Y3IuQ3VycmVudERlc2sgLSBkZXNrMSA8PSBuZGVza3MpKQorICAgIERyYXdHcmlkIChTY3Iu
Q3VycmVudERlc2sgLSBkZXNrMSwgMSk7CiAKLSAgRHJhd0dyaWQgKG9sZERlc2sgLSBkZXNr
MSwgMSk7Ci0gIERyYXdHcmlkIChTY3IuQ3VycmVudERlc2sgLSBkZXNrMSwgMSk7CiAgIE1v
dmVTdGlja3lXaW5kb3dzICgpOwogICBIaWxpZ2h0IChGb2N1c1dpbiwgT0ZGKTsKICAgSGls
aWdodCAoRm9jdXNXaW4sIE9OKTsKKyAgZmlyc3RUaW1lID0gMDsKIH0KIAogLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCkBAIC01MzAsNyArNTc0LDcgQEAKICAqCWxpc3RfcmFpc2UgLSBkaXNwbGF5
cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCiAgKgogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot
dm9pZCAKK3ZvaWQKIGxpc3RfcmFpc2UgKHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7CiAgIFBh
Z2VyV2luZG93ICp0OwpAQCAtNTU3LDcgKzYwMSw3IEBACiAgKglsaXN0X2xvd2VyIC0gZGlz
cGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgogICoKICAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLXZvaWQgCit2b2lkCiBsaXN0X2xvd2VyICh1bnNpZ25lZCBsb25nICpib2R5KQogewog
ICBQYWdlcldpbmRvdyAqdDsKQEAgLTU4Niw3ICs2MzAsNyBAQAogICoJbGlzdF91bmtub3cg
LSBoYW5kbGVzIGFuIHVucmVjb2duaXplZCBwYWNrZXQuCiAgKgogICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwotdm9pZCAKK3ZvaWQKIGxpc3RfdW5rbm93biAodW5zaWduZWQgbG9uZyAqYm9keSkK
IHsKICAgLyogIGZwcmludGYoc3RkZXJyLCJVbmtub3duIHBhY2tldCB0eXBlXG4iKTsgKi8K
QEAgLTU5OCw3ICs2NDIsNyBAQAogICoJbGlzdF9pY29uaWZ5IC0gZGlzcGxheXMgcGFja2V0
IGNvbnRlbnRzIHRvIHN0ZGVycgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXZvaWQgCit2
b2lkCiBsaXN0X2ljb25pZnkgKHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7CiAgIFBhZ2VyV2lu
ZG93ICp0OwpAQCAtNjQ0LDcgKzY4OCw3IEBACiAgKgogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwog
Ci12b2lkIAordm9pZAogbGlzdF9kZWljb25pZnkgKHVuc2lnbmVkIGxvbmcgKmJvZHkpCiB7
CiAgIFBhZ2VyV2luZG93ICp0OwpAQCAtNjgyLDcgKzcyNiw3IEBACiAgKglsaXN0X2ljb25f
bmFtZSAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50cyB0byBzdGRlcnIKICAqCiAgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi12b2lkIAordm9pZAogbGlzdF9pY29uX25hbWUgKHVuc2lnbmVkIGxv
bmcgKmJvZHkpCiB7CiAgIFBhZ2VyV2luZG93ICp0OwpAQCAtNjk2LDExICs3NDAsMTUgQEAK
ICAgICB9CiAgIGlmICh0ICE9IE5VTEwpCiAgICAgeworICAgICAgQmFsbG9vbiAqYmFsbG9v
bjsKICAgICAgIGlmICh0LT5pY29uX25hbWUgIT0gTlVMTCkKIAlmcmVlICh0LT5pY29uX25h
bWUpOwogICAgICAgQ29weVN0cmluZyAoJnQtPmljb25fbmFtZSwgKGNoYXIgKikgKCZib2R5
WzNdKSk7CiAgICAgICBMYWJlbFdpbmRvdyAodCk7CiAgICAgICBMYWJlbEljb25XaW5kb3cg
KHQpOworICAgICAgYmFsbG9vbiA9IGJhbGxvb25fZmluZCAodC0+UGFnZXJWaWV3KTsKKyAg
ICAgIGlmIChiYWxsb29uICE9IE5VTEwpCisJYmFsbG9vbl9zZXRfdGV4dCAoYmFsbG9vbiwg
dC0+aWNvbl9uYW1lKTsKICAgICB9CiB9CiAKQEAgLTcxMyw3ICs3NjEsNyBAQAogICoJbGlz
dF9lbmQgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCiAgKgogICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwotdm9pZCAKK3ZvaWQKIGxpc3RfZW5kICh2b2lkKQogewogICB1bnNp
Z25lZCBpbnQgbmNoaWxkcmVuLCBpOwpAQCAtNzUyLDcgKzgwMCw3IEBACiAgKiBXYWl0cyBm
b3IgbmV4dCBYIGV2ZW50LCBvciBmb3IgYW4gYXV0by1yYWlzZSB0aW1lb3V0LgogICoKICAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLwotaW50IAoraW50CiBNeV9YTmV4dEV2ZW50IChEaXNw
bGF5ICogZHB5LCBYRXZlbnQgKiBldmVudCkKIHsKICAgZmRfc2V0IGluX2Zkc2V0OwpAQCAt
NzYwLDYgKzgwOCw4IEBACiAgIGludCBjb3VudCA9IDA7CiAgIHN0YXRpYyBpbnQgbWlzc19j
b3VudGVyID0gMDsKICAgdW5zaWduZWQgbG9uZyAqYm9keTsKKyAgc3RydWN0IHRpbWV2YWwg
dHY7CisgIHN0cnVjdCB0aW1ldmFsICp0ID0gTlVMTDsKIAogICBpZiAoWFBlbmRpbmcgKGRw
eSkpCiAgICAgewpAQCAtNzcxLDEyICs4MjEsMTggQEAKICAgRkRfU0VUICh4X2ZkLCAmaW5f
ZmRzZXQpOwogICBGRF9TRVQgKGZkWzFdLCAmaW5fZmRzZXQpOwogCisgIGlmICh0aW1lcl9k
ZWxheV90aWxsX25leHRfYWxhcm0gKCh0aW1lX3QgKikgJiB0di50dl9zZWMsICh0aW1lX3Qg
KikgJiB0di50dl91c2VjKSkKKyAgICB0ID0gJnR2OworCiAjaWZkZWYgX19ocHV4Ci0gIHNl
bGVjdCAoZmRfd2lkdGgsIChpbnQgKikgJmluX2Zkc2V0LCAwLCAwLCBOVUxMKTsKKyAgd2hp
bGUgKHNlbGVjdCAoZmRfd2lkdGgsIChpbnQgKikgJmluX2Zkc2V0LCAwLCAwLCBOVUxMKSA9
PSAtMSkKKyAgICBpZiAoZXJybm8gIT0gRUlOVFIpCisgICAgICBicmVhazsKICNlbHNlCi0g
IHNlbGVjdCAoZmRfd2lkdGgsICZpbl9mZHNldCwgMCwgMCwgTlVMTCk7CisgIHdoaWxlIChz
ZWxlY3QgKGZkX3dpZHRoLCAmaW5fZmRzZXQsIDAsIDAsIE5VTEwpID09IC0xKQorICAgIGlm
IChlcnJubyAhPSBFSU5UUikKKyAgICAgIGJyZWFrOwogI2VuZGlmCi0KICAgaWYgKEZEX0lT
U0VUICh4X2ZkLCAmaW5fZmRzZXQpKQogICAgIHsKICAgICAgIGlmIChYUGVuZGluZyAoZHB5
KSkKQEAgLTc5OSw2ICs4NTUsOSBAQAogCSAgZnJlZSAoYm9keSk7CiAJfQogICAgIH0KKyAg
LyogaGFuZGxlIHRpbWVvdXQgZXZlbnRzICovCisgIHRpbWVyX2hhbmRsZSAoKTsKKwogICBy
ZXR1cm4gMDsKIH0KIApAQCAtODA5LDcgKzg2OCw3IEBACiAgKiBUaGlzIHJvdXRpbmUgaXMg
cmVzcG9uc2libGUgZm9yIHJlYWRpbmcgYW5kIHBhcnNpbmcgdGhlIGNvbmZpZyBmaWxlCiAg
KgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIAordm9pZAogUGFyc2VPcHRpb25z
IChjaGFyICpmaWxlbmFtZSkKIHsKICAgRklMRSAqZmQgPSAoRklMRSAqKSAwOwpAQCAtODUx
LDggKzkxMCw3IEBACiAgICAgICB3aGlsZSAoaXNzcGFjZSAoKnRsaW5lKSkKIAl0bGluZSsr
OwogCi0gICAgICBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmCi0JICAobXlzdHJu
Y2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiR2VvbWV0cnkiKSwg
Q2xlbmd0aCArIDkpID09IDApKQorICAgICAgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAx
KSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAi
R2VvbWV0cnkiKSwgQ2xlbmd0aCArIDkpID09IDApKQogCXsKIAkgIHRtcCA9ICZ0bGluZVtD
bGVuZ3RoICsgOV07CiAJICB3aGlsZSAoKChpc3NwYWNlICgqdG1wKSkgJiYgKCp0bXAgIT0g
J1xuJykpICYmICgqdG1wICE9IDApKQpAQCAtODc3LDkgKzkzNSw3IEBACiAJICAgICAgdXNw
b3NpdGlvbiA9IDE7CiAJICAgIH0KIAl9Ci0gICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxp
bmVbMF0pID4gMSkgJiYKLQkgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmcz
ICgiKiIsIE15TmFtZSwgIkljb25HZW9tZXRyeSIpLAotCQkJICAgIENsZW5ndGggKyAxMykg
PT0gMCkpCisgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYgKG15
c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIkljb25HZW9t
ZXRyeSIpLCBDbGVuZ3RoICsgMTMpID09IDApKQogCXsKIAkgIHRtcCA9ICZ0bGluZVtDbGVu
Z3RoICsgMTNdOwogCSAgd2hpbGUgKCgoaXNzcGFjZSAoKnRtcCkpICYmICgqdG1wICE9ICdc
bicpKSAmJiAoKnRtcCAhPSAwKSkKQEAgLTkwNiw4NSArOTYyLDE0MiBAQAogCSAgICAgICAo
bXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiTGFiZWwi
KSwgQ2xlbmd0aCArIDYpID09IDApKQogCXsKIAkgIGRlc2sgPSBkZXNrMTsKLQkgIHNzY2Fu
ZiAoJnRsaW5lW0NsZW5ndGggKyA2XSwgIiVkIiwgJmRlc2spOworCSAgbiA9IENsZW5ndGgg
KyA2OworCSAgc3NjYW5mICgmdGxpbmVbbl0sICIlZCIsICZkZXNrKTsKIAkgIGlmICgoZGVz
ayA+PSBkZXNrMSkgJiYgKGRlc2sgPD0gZGVzazIpKQogCSAgICB7Ci0JICAgICAgbiA9IDA7
Ci0JICAgICAgd2hpbGUgKGlzc3BhY2UgKHRsaW5lW0NsZW5ndGggKyA2ICsgbl0pKQorCSAg
ICAgIHdoaWxlIChpc3NwYWNlICh0bGluZVtuXSkpCiAJCW4rKzsKLQkgICAgICB3aGlsZSAo
IWlzc3BhY2UgKHRsaW5lW0NsZW5ndGggKyA2ICsgbl0pKQorCSAgICAgIHdoaWxlICghaXNz
cGFjZSAodGxpbmVbbl0pKQogCQluKys7CiAJICAgICAgZnJlZSAoRGVza3NbZGVzayAtIGRl
c2sxXS5sYWJlbCk7Ci0JICAgICAgQ29weVN0cmluZyAoJkRlc2tzW2Rlc2sgLSBkZXNrMV0u
bGFiZWwsICZ0bGluZVtDbGVuZ3RoICsgNiArIG5dKTsKKwkgICAgICBDb3B5U3RyaW5nICgm
RGVza3NbZGVzayAtIGRlc2sxXS5sYWJlbCwgJnRsaW5lW25dKTsKIAkgICAgfQogCX0KLSAg
ICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgotCSAgICAgICAobXlz
dHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiRm9udCIpLCBD
bGVuZ3RoICsgNSkgPT0gMCkpCisgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0p
ID4gMSkgJiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFt
ZSwgIkFsaWduIiksIENsZW5ndGggKyA2KSA9PSAwKSkKKwl7CisJICBzc2NhbmYgKCZ0bGlu
ZVtDbGVuZ3RoICsgNl0sICIlZCIsICZUaXRsZUFsaWduKTsKKworCX0KKyAgICAgIGVsc2Ug
aWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUs
IENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiRm9udCIpLCBDbGVuZ3RoICsgNSkgPT0gMCkp
CiAJewogCSAgQ29weVN0cmluZyAoJmZvbnRfc3RyaW5nLCAmdGxpbmVbQ2xlbmd0aCArIDVd
KTsKIAkgIGlmIChteXN0cm5jYXNlY21wIChmb250X3N0cmluZywgIm5vbmUiLCA0KSA9PSAw
KQogCSAgICB1c2VsYWJlbCA9IDA7CiAKIAl9Ci0gICAgICBlbHNlIGlmICgoc3RybGVuICgm
dGxpbmVbMF0pID4gMSkgJiYKLQkgICAgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRT
dHJpbmczICgiKiIsIE15TmFtZSwgIkZvcmUiKSwgQ2xlbmd0aCArIDUpID09IDApKQorICAg
ICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21w
ICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJGb3JlIiksIENsZW5ndGggKyA1
KSA9PSAwKSkKIAl7CiAJICBDb3B5U3RyaW5nICgmUGFnZXJGb3JlLCAmdGxpbmVbQ2xlbmd0
aCArIDVdKTsKIAl9Ci0gICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkg
JiYKLQkgICAgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15
TmFtZSwgIkJhY2siKSwgQ2xlbmd0aCArIDUpID09IDApKQorICAgICAgZWxzZSBpZiAoKHN0
cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3Ry
aW5nMyAoIioiLCBNeU5hbWUsICJCYWNrIiksIENsZW5ndGggKyA1KSA9PSAwKSkKIAl7CiAJ
ICBDb3B5U3RyaW5nICgmUGFnZXJCYWNrLCAmdGxpbmVbQ2xlbmd0aCArIDVdKTsKIAl9Ci0g
ICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYKLQkgICAgICAgKG15
c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIkhpbGlnaHQi
KSwgQ2xlbmd0aCArIDgpID09IDApKQorICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5l
WzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBN
eU5hbWUsICJIaWxpZ2h0IiksIENsZW5ndGggKyA4KSA9PSAwKSkKIAl7CiAJICBpZiAoU2Ny
LmRfZGVwdGggPiAxKQogCSAgICBDb3B5U3RyaW5nICgmSGlsaWdodEMsICZ0bGluZVtDbGVu
Z3RoICsgOF0pOwogCX0KLSAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAx
KSAmJgotCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwg
TXlOYW1lLCAiU21hbGxGb250IiksCisgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVb
MF0pID4gMSkgJiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15
TmFtZSwgIlNtYWxsRm9udCIpLAogCQkJICAgICAgIENsZW5ndGggKyAxMCkgPT0gMCkpCiAJ
ewogCSAgQ29weVN0cmluZyAoJnNtYWxsRm9udCwgJnRsaW5lW0NsZW5ndGggKyAxMF0pOwog
CX0KLSAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgotCSAgICAg
KG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIlN0YXJ0
SWNvbmljIiksCisgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYg
KG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIlN0YXJ0
SWNvbmljIiksCiAJCQkgICAgIENsZW5ndGggKyAxMikgPT0gMCkpCiAJewogCSAgU3RhcnRJ
Y29uaWMgPSAxOwogCX0KLSAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAx
KSAmJgotCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwg
TXlOYW1lLCAiUm93cyIpLAorICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+
IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUs
ICJSb3dzIiksCiAJCQkgICAgICAgQ2xlbmd0aCArIDUpID09IDApKQogCXsKIAkgIHNzY2Fu
ZiAoJnRsaW5lW0NsZW5ndGggKyA1XSwgIiVkIiwgJlJvd3MpOwogCX0KLSAgICAgIGVsc2Ug
aWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgotCSAgICAgICAobXlzdHJuY2FzZWNt
cCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiQ29sdW1ucyIpLAorICAgICAg
ZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0
bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJDb2x1bW5zIiksCiAJCQkgICAgICAg
Q2xlbmd0aCArIDgpID09IDApKQogCXsKIAkgIHNzY2FuZiAoJnRsaW5lW0NsZW5ndGggKyA4
XSwgIiVkIiwgJkNvbHVtbnMpOwogCX0KLSAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGlu
ZVswXSkgPiAxKSAmJgotCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUsICJIaUJhY2tD
b2xvciIsIDExKSA9PSAwKSkKKyAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkg
PiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsICJIaUJhY2tDb2xvciIsIDExKSA9PSAw
KSkKIAl7CiAJICBpZiAoU2NyLmRfZGVwdGggPiAxKQogCSAgICBDb3B5U3RyaW5nICgmSGlC
YWNrLCAmdGxpbmVbMTFdKTsKIAl9Ci0gICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVb
MF0pID4gMSkgJiYKLQkgICAgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCAiSGlGb3JlQ29s
b3IiLCAxMSkgPT0gMCkpCisgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4g
MSkgJiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCAiSGlGb3JlQ29sb3IiLCAxMSkgPT0gMCkp
CiAJewogCSAgaWYgKFNjci5kX2RlcHRoID4gMSkKIAkgICAgQ29weVN0cmluZyAoJkhpRm9y
ZSwgJnRsaW5lWzExXSk7CiAJfQotICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBd
KSA+IDEpICYmCi0JICAgICAgIChteXN0cm5jYXNlY21wICh0bGluZSwgIlN0aWNreUljb25z
IiwgMTEpID09IDApKQorICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEp
ICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgIlN0aWNreVBhZ2VySWNvbnMiLCAxMSkgPT0g
MCkpCiAJewogCSAgU3RpY2t5SWNvbnMgPSAxOwogCX0KLSAgICAgIGVsc2UgaWYgKChzdHJs
ZW4gKCZ0bGluZVswXSkgPiAxKSAmJgorLyogICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxp
bmVbMF0pID4gMSkgJiYKIAkgICAgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCAiRGVza1Rv
cFNpemUiLCAxMSkgPT0gMCkpCisJeworCSAgc3NjYW5mICgmdGxpbmVbMTFdLCAiJWR4JWQi
LCAmU2NyLlZ4TWF4LCAmU2NyLlZ5TWF4KTsKKwkgIFNjci5WeE1heCA9IFNjci5WeE1heCAq
IFNjci5NeURpc3BsYXlXaWR0aCAtIFNjci5NeURpc3BsYXlXaWR0aDsKKwkgIFNjci5WeU1h
eCA9IFNjci5WeU1heCAqIFNjci5NeURpc3BsYXlIZWlnaHQgLSBTY3IuTXlEaXNwbGF5SGVp
Z2h0OworCX0KKyAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgor
CSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUsICJEZXNrVG9wU2NhbGUiLCAxMikgPT0g
MCkpCisJeworCSAgc3NjYW5mICgmdGxpbmVbMTJdLCAiJWQiLCAmU2NyLlZTY2FsZSk7CisJ
fQorKi8KKyAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiBiYWxs
b29uX3BhcnNlICh0bGluZSwgZmQpKTsKKworICAgICAgdGxpbmUgPSBmZ2V0cyAobGluZSwg
KHNpemVvZiBsaW5lKSAtIDEsIGZkKTsKKyAgICAgIG9yaWdfdGxpbmUgPSB0bGluZTsKKyAg
ICB9CisgIHJldHVybjsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisg
KiBUaGlzIHJvdXRpbmUgaXMgcmVzcG9uc2libGUgZm9yIHJlYWRpbmcgYW5kIHBhcnNpbmcg
dGhlIGJhc2UgZmlsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorUGFy
c2VCYXNlT3B0aW9ucyAoY2hhciAqZmlsZW5hbWUpCit7CisgIEZJTEUgKmZkID0gKEZJTEUg
KikgMDsKKyAgY2hhciBsaW5lW01BWExJTkVMRU5HVEggKiAyXTsKKyAgY2hhciAqdGxpbmUs
ICpvcmlnX3RsaW5lOworICBpbnQgQ2xlbmd0aDsKKworICBTY3IuVlNjYWxlID0gMzI7CisK
KyAgU2NyLk15RGlzcGxheVdpZHRoID0gRGlzcGxheVdpZHRoIChkcHksIFNjci5zY3JlZW4p
OworICBTY3IuTXlEaXNwbGF5SGVpZ2h0ID0gRGlzcGxheUhlaWdodCAoZHB5LCBTY3Iuc2Ny
ZWVuKTsKKworICBTY3IuVnhNYXggPSAzICogU2NyLk15RGlzcGxheVdpZHRoIC0gU2NyLk15
RGlzcGxheVdpZHRoOworICBTY3IuVnlNYXggPSAzICogU2NyLk15RGlzcGxheUhlaWdodCAt
IFNjci5NeURpc3BsYXlIZWlnaHQ7CisgIGlmIChTY3IuVnhNYXggPCAwKQorICAgIFNjci5W
eE1heCA9IDA7CisgIGlmIChTY3IuVnlNYXggPCAwKQorICAgIFNjci5WeU1heCA9IDA7Cisg
IFNjci5WeCA9IDA7CisgIFNjci5WeSA9IDA7CisKKyAgZmQgPSBmb3BlbiAoZmlsZW5hbWUs
ICJyIik7CisgIGlmIChmZCA9PSAoRklMRSAqKSAwKQorICAgIHsKKyAgICAgIGZwcmludGYg
KHN0ZGVyciwgIiVzOiBjYW4ndCBvcGVuIGNvbmZpZyBmaWxlICVzIiwgTXlOYW1lLCBmaWxl
bmFtZSk7CisgICAgICBleGl0ICgxKTsKKyAgICB9CisgIHRsaW5lID0gZmdldHMgKGxpbmUs
IChzaXplb2YgbGluZSkgLSAxLCBmZCk7CisgIG9yaWdfdGxpbmUgPSB0bGluZTsKKyAgQ2xl
bmd0aCA9IHN0cmxlbiAoTXlOYW1lKTsKKyAgd2hpbGUgKHRsaW5lICE9IChjaGFyICopIDAp
CisgICAgeworICAgICAgd2hpbGUgKGlzc3BhY2UgKCp0bGluZSkpCisJdGxpbmUrKzsKKwor
ICAgICAgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgorCSAgKG15c3RybmNhc2Vj
bXAgKHRsaW5lLCAiRGVza1RvcFNpemUiLCAxMSkgPT0gMCkpCiAJewogCSAgc3NjYW5mICgm
dGxpbmVbMTFdLCAiJWR4JWQiLCAmU2NyLlZ4TWF4LCAmU2NyLlZ5TWF4KTsKIAkgIFNjci5W
eE1heCA9IFNjci5WeE1heCAqIFNjci5NeURpc3BsYXlXaWR0aCAtIFNjci5NeURpc3BsYXlX
aWR0aDsKZGlmZiAtTiAtdSAtciBQYWdlcl9ub3hwbS9QYWdlcl9ub3hwbS5oIFBhZ2VyX25v
eHBtLmRrYS9QYWdlcl9ub3hwbS5oCi0tLSBQYWdlcl9ub3hwbS9QYWdlcl9ub3hwbS5oCU1v
biBTZXAgMTQgMDM6NDE6MzEgMTk5OAorKysgUGFnZXJfbm94cG0uZGthL1BhZ2VyX25veHBt
LmgJVHVlIFNlcCAyOSAxNTo1NzoxOCAxOTk4CkBAIC0xLDc3ICsxLDgwIEBACiB0eXBlZGVm
IHN0cnVjdCBTY3JlZW5JbmZvCi17Ci0gIHVuc2lnbmVkIGxvbmcgc2NyZWVuOwotICBpbnQg
ZF9kZXB0aDsJICAgICAgICAvKiBjb3B5IG9mIERlZmF1bHREZXB0aChkcHksIHNjcmVlbikg
Ki8KLSAgaW50IE15RGlzcGxheVdpZHRoOwkvKiBteSBjb3B5IG9mIERpc3BsYXlXaWR0aChk
cHksIHNjcmVlbikgKi8KLSAgaW50IE15RGlzcGxheUhlaWdodDsgIC8qIG15IGNvcHkgb2Yg
RGlzcGxheUhlaWdodChkcHksIHNjcmVlbikgKi8KLSAgCi0gIGNoYXIgKkFTUm9vdDsJLyog
dGhlIGhlYWQgb2YgdGhlIGFmdGVyc3RlcCB3aW5kb3cgbGlzdCAqLwotICBXaW5kb3cgUm9v
dDsJCS8qIHRoZSByb290IHdpbmRvdyAqLwotCi0gIFdpbmRvdyBQYWdlcl93OwotCi0gIEZv
bnQgUGFnZXJGb250OyAgICAgICAgLyogZm9udCBzdHJ1Y3QgZm9yIHdpbmRvdyBsYWJlbHMg
aW4gcGFnZXIgKG9wdGlvbmFsKSovCi0gIAotICBHQyBOb3JtYWxHQzsJCSAvKiBub3JtYWwg
R0MgZm9yIG1lbnVzLCBwYWdlciwgcmVzaXplIHdpbmRvdyAqLwotCi0gIGNoYXIgICpIaWxp
dGU7CSAvKiB0aGUgYWZ0ZXJzdGVwIHdpbmRvdyB0aGF0IGlzIGhpZ2hsaWdodGVkIAotCQkJ
ICAqIGV4Y2VwdCBmb3IgbmV0d29ya2luZyBkZWxheXMsIHRoaXMgaXMgdGhlCi0JCQkgICog
d2luZG93IHdoaWNoIFJFQUxMWSBoYXMgdGhlIGZvY3VzICovCi0gIHVuc2lnbmVkIFZTY2Fs
ZTsgICAgICAgLyogUGFubmVyIHNjYWxlIGZhY3RvciAqLwotICBpbnQgVnhNYXg7ICAgICAg
ICAgICAgIC8qIE1heCBsb2NhdGlvbiBmb3IgdG9wIGxlZnQgb2YgdmlydCBkZXNrKi8KLSAg
aW50IFZ5TWF4OwotICBpbnQgVng7ICAgICAgICAgICAgICAgIC8qIEN1cnJlbnQgbG9jIGZv
ciB0b3AgbGVmdCBvZiB2aXJ0IGRlc2sgKi8KLSAgaW50IFZ5OwotICBpbnQgQ3VycmVudERl
c2s7Ci0gIFBpeG1hcCBzdGlja3lfZ3JheV9waXhtYXA7Ci0gIFBpeG1hcCBsaWdodF9ncmF5
X3BpeG1hcDsKLSAgUGl4bWFwIGdyYXlfcGl4bWFwOwotCi19IFNjcmVlbkluZm87Ci0KLXR5
cGVkZWYgc3RydWN0IHBhZ2VyX3dpbmRvdyAKLXsKLSAgY2hhciAqdDsKLSAgV2luZG93IHc7
Ci0gIFdpbmRvdyBmcmFtZTsKLSAgaW50IHg7Ci0gIGludCB5OwotICBpbnQgd2lkdGg7Ci0g
IGludCBoZWlnaHQ7Ci0gIGludCBkZXNrOwotICBpbnQgZnJhbWVfeDsKLSAgaW50IGZyYW1l
X3k7Ci0gIGludCBmcmFtZV93aWR0aDsKLSAgaW50IGZyYW1lX2hlaWdodDsKLSAgaW50IHRp
dGxlX2hlaWdodDsKLSAgaW50IGJvcmRlcl93aWR0aDsKLSAgaW50IGljb25feDsKLSAgaW50
IGljb25feTsKLSAgaW50IGljb25fd2lkdGg7Ci0gIGludCBpY29uX2hlaWdodDsKLSAgUGl4
ZWwgdGV4dDsKLSAgUGl4ZWwgYmFjazsKLSAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgV2lu
ZG93IGljb25fdzsKLSAgV2luZG93IGljb25fcGl4bWFwX3c7Ci0gIGNoYXIgKmljb25fbmFt
ZTsKLQotICBXaW5kb3cgUGFnZXJWaWV3OwotICBXaW5kb3cgSWNvblZpZXc7Ci0KLSAgc3Ry
dWN0IHBhZ2VyX3dpbmRvdyAqbmV4dDsKLX0gUGFnZXJXaW5kb3c7Ci0KLQotdHlwZWRlZiBz
dHJ1Y3QgZGVza19pbmZvIAotewotICBXaW5kb3cgdzsKLSAgV2luZG93IHRpdGxlX3c7Ci0g
IFdpbmRvdyBDUGFnZXJXaW47Ci0gIGludCB4OwotICBpbnQgeTsKLSAgY2hhciAqbGFiZWw7
Ci19IERlc2tJbmZvOworICB7CisgICAgdW5zaWduZWQgbG9uZyBzY3JlZW47CisgICAgaW50
IGRfZGVwdGg7CQkvKiBjb3B5IG9mIERlZmF1bHREZXB0aChkcHksIHNjcmVlbikgKi8KKyAg
ICBpbnQgTXlEaXNwbGF5V2lkdGg7CQkvKiBteSBjb3B5IG9mIERpc3BsYXlXaWR0aChkcHks
IHNjcmVlbikgKi8KKyAgICBpbnQgTXlEaXNwbGF5SGVpZ2h0OwkvKiBteSBjb3B5IG9mIERp
c3BsYXlIZWlnaHQoZHB5LCBzY3JlZW4pICovCisKKyAgICBjaGFyICpBU1Jvb3Q7CQkvKiB0
aGUgaGVhZCBvZiB0aGUgYWZ0ZXJzdGVwIHdpbmRvdyBsaXN0ICovCisgICAgV2luZG93IFJv
b3Q7CQkvKiB0aGUgcm9vdCB3aW5kb3cgKi8KKworICAgIFdpbmRvdyBQYWdlcl93OworCisg
ICAgRm9udCBQYWdlckZvbnQ7CQkvKiBmb250IHN0cnVjdCBmb3Igd2luZG93IGxhYmVscyBp
biBwYWdlciAob3B0aW9uYWwpICovCisKKyAgICBHQyBOb3JtYWxHQzsJCS8qIG5vcm1hbCBH
QyBmb3IgbWVudXMsIHBhZ2VyLCByZXNpemUgd2luZG93ICovCisKKyAgICBjaGFyICpIaWxp
dGU7CQkvKiB0aGUgYWZ0ZXJzdGVwIHdpbmRvdyB0aGF0IGlzIGhpZ2hsaWdodGVkIAorCQkJ
CSAqIGV4Y2VwdCBmb3IgbmV0d29ya2luZyBkZWxheXMsIHRoaXMgaXMgdGhlCisJCQkJICog
d2luZG93IHdoaWNoIFJFQUxMWSBoYXMgdGhlIGZvY3VzICovCisgICAgdW5zaWduZWQgVlNj
YWxlOwkJLyogUGFubmVyIHNjYWxlIGZhY3RvciAqLworICAgIGludCBWeE1heDsJCQkvKiBN
YXggbG9jYXRpb24gZm9yIHRvcCBsZWZ0IG9mIHZpcnQgZGVzayAqLworICAgIGludCBWeU1h
eDsKKyAgICBpbnQgVng7CQkJLyogQ3VycmVudCBsb2MgZm9yIHRvcCBsZWZ0IG9mIHZpcnQg
ZGVzayAqLworICAgIGludCBWeTsKKyAgICBpbnQgQ3VycmVudERlc2s7CisgICAgUGl4bWFw
IHN0aWNreV9ncmF5X3BpeG1hcDsKKyAgICBQaXhtYXAgbGlnaHRfZ3JheV9waXhtYXA7Cisg
ICAgUGl4bWFwIGdyYXlfcGl4bWFwOworCisgIH0KK1NjcmVlbkluZm87CisKK3R5cGVkZWYg
c3RydWN0IHBhZ2VyX3dpbmRvdworICB7CisgICAgY2hhciAqdDsKKyAgICBXaW5kb3cgdzsK
KyAgICBXaW5kb3cgZnJhbWU7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IHdp
ZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgaW50IGRlc2s7CisgICAgaW50IGZyYW1lX3g7
CisgICAgaW50IGZyYW1lX3k7CisgICAgaW50IGZyYW1lX3dpZHRoOworICAgIGludCBmcmFt
ZV9oZWlnaHQ7CisgICAgaW50IHRpdGxlX2hlaWdodDsKKyAgICBpbnQgYm9yZGVyX3dpZHRo
OworICAgIGludCBpY29uX3g7CisgICAgaW50IGljb25feTsKKyAgICBpbnQgaWNvbl93aWR0
aDsKKyAgICBpbnQgaWNvbl9oZWlnaHQ7CisgICAgUGl4ZWwgdGV4dDsKKyAgICBQaXhlbCBi
YWNrOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgV2luZG93IGljb25fdzsKKyAg
ICBXaW5kb3cgaWNvbl9waXhtYXBfdzsKKyAgICBjaGFyICppY29uX25hbWU7CisKKyAgICBX
aW5kb3cgUGFnZXJWaWV3OworICAgIFdpbmRvdyBJY29uVmlldzsKKworICAgIHN0cnVjdCBw
YWdlcl93aW5kb3cgKm5leHQ7CisgIH0KK1BhZ2VyV2luZG93OworCisKK3R5cGVkZWYgc3Ry
dWN0IGRlc2tfaW5mbworICB7CisgICAgV2luZG93IHc7CisgICAgV2luZG93IHRpdGxlX3c7
CisgICAgV2luZG93IENQYWdlcldpbjsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBj
aGFyICpsYWJlbDsKKyAgfQorRGVza0luZm87CiAKICNkZWZpbmUgT04gMQogI2RlZmluZSBP
RkYgMApAQCAtODEsNjEgKzg0LDYzIEBACiAgKiBTdWJyb3V0aW5lIFByb3RvdHlwZXMKICAq
IAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIExvb3AoaW50ICpmZCk7Ci12b2lkIFNl
bmRJbmZvKGludCAqZmQsY2hhciAqbWVzc2FnZSx1bnNpZ25lZCBsb25nIHdpbmRvdyk7Ci1j
aGFyICpzYWZlbWFsbG9jKGludCBsZW5ndGgpOwotdm9pZCBEZWFkUGlwZShpbnQgbm9uc2Vu
c2UpOwotdm9pZCBwcm9jZXNzX21lc3NhZ2UodW5zaWduZWQgbG9uZyB0eXBlLHVuc2lnbmVk
IGxvbmcgKmJvZHkpOwotdm9pZCBQYXJzZU9wdGlvbnMoY2hhciAqZmlsZW5hbWUpOwotCi12
b2lkIGxpc3RfYWRkKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwotdm9pZCBsaXN0X2NvbmZpZ3Vy
ZSh1bnNpZ25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF9kZXN0cm95KHVuc2lnbmVkIGxv
bmcgKmJvZHkpOwotdm9pZCBsaXN0X2ZvY3VzKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwotdm9p
ZCBsaXN0X3RvZ2dsZSh1bnNpZ25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF9uZXdfcGFn
ZSh1bnNpZ25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF9uZXdfZGVzayh1bnNpZ25lZCBs
b25nICpib2R5KTsKLXZvaWQgbGlzdF9yYWlzZSh1bnNpZ25lZCBsb25nICpib2R5KTsKLXZv
aWQgbGlzdF9sb3dlcih1bnNpZ25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF91bmtub3du
KHVuc2lnbmVkIGxvbmcgKmJvZHkpOwotdm9pZCBsaXN0X2ljb25pZnkodW5zaWduZWQgbG9u
ZyAqYm9keSk7Ci12b2lkIGxpc3RfZGVpY29uaWZ5KHVuc2lnbmVkIGxvbmcgKmJvZHkpOwot
dm9pZCBsaXN0X3dpbmRvd19uYW1lKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwotdm9pZCBsaXN0
X2ljb25fbmFtZSh1bnNpZ25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF9jbGFzcyh1bnNp
Z25lZCBsb25nICpib2R5KTsKLXZvaWQgbGlzdF9yZXNfbmFtZSh1bnNpZ25lZCBsb25nICpi
b2R5KTsKLXZvaWQgbGlzdF9lbmQodm9pZCk7Ci1pbnQgTXlfWE5leHRFdmVudChEaXNwbGF5
ICpkcHksIFhFdmVudCAqZXZlbnQpOwordm9pZCBMb29wIChpbnQgKmZkKTsKK3ZvaWQgU2Vu
ZEluZm8gKGludCAqZmQsIGNoYXIgKm1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgd2luZG93KTsK
K2NoYXIgKnNhZmVtYWxsb2MgKGludCBsZW5ndGgpOwordm9pZCBEZWFkUGlwZSAoaW50IG5v
bnNlbnNlKTsKK3ZvaWQgcHJvY2Vzc19tZXNzYWdlICh1bnNpZ25lZCBsb25nIHR5cGUsIHVu
c2lnbmVkIGxvbmcgKmJvZHkpOwordm9pZCBQYXJzZU9wdGlvbnMgKGNoYXIgKmZpbGVuYW1l
KTsKK3ZvaWQgUGFyc2VCYXNlT3B0aW9ucyAoY2hhciAqZmlsZW5hbWUpOworCit2b2lkIGxp
c3RfYWRkICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF9jb25maWd1cmUgKHVu
c2lnbmVkIGxvbmcgKmJvZHkpOwordm9pZCBsaXN0X2Rlc3Ryb3kgKHVuc2lnbmVkIGxvbmcg
KmJvZHkpOwordm9pZCBsaXN0X2ZvY3VzICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQg
bGlzdF90b2dnbGUgKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwordm9pZCBsaXN0X25ld19wYWdl
ICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF9uZXdfZGVzayAodW5zaWduZWQg
bG9uZyAqYm9keSk7Cit2b2lkIGxpc3RfcmFpc2UgKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwor
dm9pZCBsaXN0X2xvd2VyICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF91bmtu
b3duICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF9pY29uaWZ5ICh1bnNpZ25l
ZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF9kZWljb25pZnkgKHVuc2lnbmVkIGxvbmcgKmJv
ZHkpOwordm9pZCBsaXN0X3dpbmRvd19uYW1lICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3Zv
aWQgbGlzdF9pY29uX25hbWUgKHVuc2lnbmVkIGxvbmcgKmJvZHkpOwordm9pZCBsaXN0X2Ns
YXNzICh1bnNpZ25lZCBsb25nICpib2R5KTsKK3ZvaWQgbGlzdF9yZXNfbmFtZSAodW5zaWdu
ZWQgbG9uZyAqYm9keSk7Cit2b2lkIGxpc3RfZW5kICh2b2lkKTsKK2ludCBNeV9YTmV4dEV2
ZW50IChEaXNwbGF5ICogZHB5LCBYRXZlbnQgKiBldmVudCk7CiAKIC8qIFN0dWZmIGluIHhf
cGFnZXIuYyAqLwotdm9pZCBpbml0aWFsaXplX3BhZ2VyKHZvaWQpOwotUGl4ZWwgR2V0Q29s
b3IoY2hhciAqbmFtZSk7Ci12b2lkIG5vY29sb3IoY2hhciAqYSwgY2hhciAqYik7Ci12b2lk
IERpc3BhdGNoRXZlbnQoWEV2ZW50ICpFdmVudCk7Ci12b2lkIFJlQ29uZmlndXJlKHZvaWQp
Owotdm9pZCBSZUNvbmZpZ3VyZUFsbCh2b2lkKTsKLXZvaWQgTW92ZVBhZ2Uodm9pZCk7Ci12
b2lkIERyYXdHcmlkKGludCBpLGludCBlcmFzZSk7Ci12b2lkIERyYXdJY29uR3JpZChpbnQg
ZXJhc2UpOwotdm9pZCBTd2l0Y2hUb0Rlc2soaW50IERlc2spOwotdm9pZCBTd2l0Y2hUb0Rl
c2tBbmRQYWdlKGludCBEZXNrLCBYRXZlbnQgKkV2ZW50KTsKLXZvaWQgQWRkTmV3V2luZG93
KFBhZ2VyV2luZG93ICpwcmV2KTsKLXZvaWQgTW92ZVJlc2l6ZVBhZ2VyVmlldyhQYWdlcldp
bmRvdyAqdCk7Ci12b2lkIENoYW5nZURlc2tGb3JXaW5kb3coUGFnZXJXaW5kb3cgKnQsbG9u
ZyBuZXdkZXNrKTsKLXZvaWQgTW92ZVN0aWNreVdpbmRvdyh2b2lkKTsKLXZvaWQgSGlsaWdo
dChQYWdlcldpbmRvdyAqLCBpbnQpOwotdm9pZCBTY3JvbGwoaW50IERlc2ssIGludCB4LCBp
bnQgeSk7Ci12b2lkIE1vdmVXaW5kb3coWEV2ZW50ICpFdmVudCk7Ci12b2lkIExhYmVsV2lu
ZG93KFBhZ2VyV2luZG93ICp0KTsKLXZvaWQgTGFiZWxJY29uV2luZG93KFBhZ2VyV2luZG93
ICp0KTsKLXZvaWQgUmVDb25maWd1cmVJY29ucyh2b2lkKTsKLXZvaWQgSWNvblN3aXRjaFBh
Z2UoWEV2ZW50ICpFdmVudCk7Ci12b2lkIEljb25TY3JvbGwoaW50IHgsIGludCB5KTsKLXZv
aWQgSWNvbk1vdmVXaW5kb3coWEV2ZW50ICpFdmVudCxQYWdlcldpbmRvdyAqdCk7Ci12b2lk
IEhhbmRsZUV4cG9zZShYRXZlbnQgKkV2ZW50KTsKLXZvaWQgTW92ZVN0aWNreVdpbmRvd3Mo
dm9pZCk7Cit2b2lkIGluaXRpYWxpemVfcGFnZXIgKHZvaWQpOworUGl4ZWwgR2V0Q29sb3Ig
KGNoYXIgKm5hbWUpOwordm9pZCBub2NvbG9yIChjaGFyICphLCBjaGFyICpiKTsKK3ZvaWQg
RGlzcGF0Y2hFdmVudCAoWEV2ZW50ICogRXZlbnQpOwordm9pZCBSZUNvbmZpZ3VyZSAodm9p
ZCk7Cit2b2lkIFJlQ29uZmlndXJlQWxsICh2b2lkKTsKK3ZvaWQgTW92ZVBhZ2UgKHZvaWQp
Owordm9pZCBEcmF3R3JpZCAoaW50IGksIGludCBlcmFzZSk7Cit2b2lkIERyYXdJY29uR3Jp
ZCAoaW50IGVyYXNlKTsKK3ZvaWQgU3dpdGNoVG9EZXNrIChpbnQgRGVzayk7Cit2b2lkIFN3
aXRjaFRvRGVza0FuZFBhZ2UgKGludCBEZXNrLCBYRXZlbnQgKiBFdmVudCk7Cit2b2lkIEFk
ZE5ld1dpbmRvdyAoUGFnZXJXaW5kb3cgKiBwcmV2KTsKK3ZvaWQgTW92ZVJlc2l6ZVBhZ2Vy
VmlldyAoUGFnZXJXaW5kb3cgKiB0KTsKK3ZvaWQgQ2hhbmdlRGVza0ZvcldpbmRvdyAoUGFn
ZXJXaW5kb3cgKiB0LCBsb25nIG5ld2Rlc2spOwordm9pZCBNb3ZlU3RpY2t5V2luZG93ICh2
b2lkKTsKK3ZvaWQgTWFwQmFsbG9vbldpbmRvdyAoWEV2ZW50ICopOwordm9pZCBVbm1hcEJh
bGxvb25XaW5kb3cgKHZvaWQpOwordm9pZCBEcmF3SW5CYWxsb29uV2luZG93ICh2b2lkKTsK
K3ZvaWQgSGlsaWdodCAoUGFnZXJXaW5kb3cgKiwgaW50KTsKK3ZvaWQgU2Nyb2xsIChpbnQg
RGVzaywgaW50IHgsIGludCB5KTsKK3ZvaWQgTW92ZVdpbmRvdyAoWEV2ZW50ICogRXZlbnQp
Owordm9pZCBMYWJlbFdpbmRvdyAoUGFnZXJXaW5kb3cgKiB0KTsKK3ZvaWQgTGFiZWxJY29u
V2luZG93IChQYWdlcldpbmRvdyAqIHQpOwordm9pZCBSZUNvbmZpZ3VyZUljb25zICh2b2lk
KTsKK3ZvaWQgSWNvblN3aXRjaFBhZ2UgKFhFdmVudCAqIEV2ZW50KTsKK3ZvaWQgSWNvblNj
cm9sbCAoaW50IHgsIGludCB5KTsKK3ZvaWQgSWNvbk1vdmVXaW5kb3cgKFhFdmVudCAqIEV2
ZW50LCBQYWdlcldpbmRvdyAqIHQpOwordm9pZCBIYW5kbGVFeHBvc2UgKFhFdmVudCAqIEV2
ZW50KTsKK3ZvaWQgTW92ZVN0aWNreVdpbmRvd3MgKHZvaWQpOwogI2lmZGVmIEJST0tFTl9T
VU5fSEVBREVSUwogI2luY2x1ZGUgIi4uLy4uL2FmdGVyc3RlcC9zdW5faGVhZGVycy5oIgog
I2VuZGlmCi0KLQpkaWZmIC1OIC11IC1yIFBhZ2VyX25veHBtL21ha2VmaWxlLmRpZmYgUGFn
ZXJfbm94cG0uZGthL21ha2VmaWxlLmRpZmYKLS0tIFBhZ2VyX25veHBtL21ha2VmaWxlLmRp
ZmYJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5CisrKyBQYWdlcl9ub3hwbS5ka2EvbWFrZWZp
bGUuZGlmZglUdWUgU2VwIDI5IDE2OjA3OjA1IDE5OTgKQEAgLTAsMCArMSwxMSBAQAorMmMy
LDMKKzwgT0JKUwkJPSBQYWdlcl9ub3hwbS5vIHhfcGFnZXJfbm94cG0ubworLS0tCis+IE9C
SlMJCT0gUGFnZXIubyB4X3BhZ2VyLm8geF9zY2FsZS5vIGJhY2tncm91bmQubyBsb2FkaW1n
Lm8gYXNfeHBtLm8gYXNfanBlZy5vIFwKKz4gCQkgIC4uL2FmdGVyc3RlcC9zdGVwZ2Z4Lm8g
Li4vYWZ0ZXJzdGVwL2hhc2h0YWJsZS5vCis0YzUKKzwgUFJPRwkJPSBQYWdlcl9ub3hwbQor
LS0tCis+IFBST0cJCT0gUGFnZXIKKzEwNmQxMDYKKzwgCmRpZmYgLU4gLXUgLXIgUGFnZXJf
bm94cG0vcGFnZXIuZGlmZiBQYWdlcl9ub3hwbS5ka2EvcGFnZXIuZGlmZgotLS0gUGFnZXJf
bm94cG0vcGFnZXIuZGlmZglXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKKysrIFBhZ2VyX25v
eHBtLmRrYS9wYWdlci5kaWZmCVR1ZSBTZXAgMjkgMTU6MDM6MzkgMTk5OApAQCAtMCwwICsx
LDU4OSBAQAorMmMyLDYKKzwgICogQ29weXJpZ2h0IChDKSAxOTk4IERvdWcgQWxjb3JuIDxh
bGNvcm5kQGVhcnRobGluay5uZXQ+CistLS0KKz4gICogQ29weXJpZ2h0IChjKSAxOTk4IFNh
c2hhIFZhc2tvIDxzYXNoYXZAc3ByaW50bWFpbC5jb20+Cis+ICAqIENvcHlyaWdodCAoYykg
MTk5NyByaWNAZ2ljY3MuZ2VvcmdldG93bi5lZHUKKz4gICogQ29weXJpZ2h0IChDKSAxOTk4
IE1ha290byBLYXRvIDxtX2thdG9AZ2EyLnNvLW5ldC5uZS5qcD4KKz4gICogQ29weXJpZ2h0
IChjKSAxOTk3IEd1eWxoZW0gQXpuYXIgPGd1eWxoZW1Ab2VpbC5xYy5jYT4KKz4gICogQ29w
eXJpZ2h0IChDKSAxOTk2IFJhaW5lciBNLiBDYW5hdmFuIChjYW5hdmFuQFpldXMuY3MuYm9u
bi5lZHUpCisxM2MxNworPCAgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLS0KKz4gICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgIFNlZSB0aGUKKzIxYTI2
Cis+IAorMjZhMzIKKz4gI2luY2x1ZGUgPGVycm5vLmg+CiszMSwzMmQzNgorPCAjaW5jbHVk
ZSA8c3lzL3dhaXQuaD4KKzwgI2luY2x1ZGUgPHN5cy90aW1lLmg+CiszNWMzOSw0MAorPCAj
aW5jbHVkZSA8ZXJybm8uaD4KKy0tLQorPiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKz4gI2lu
Y2x1ZGUgPHN5cy90aW1lLmg+Cis1NGQ1OAorPCAjaW5jbHVkZSAiUGFnZXJfbm94cG0uaCIK
KzU1YTYwCis+IAorNTZhNjIKKz4gI2luY2x1ZGUgIlBhZ2VyLmgiCis3MmE3OQorPiBpbnQg
c2NyZWVuOworODNhOTEsOTgKKz4gaW50IFNob3dCYWxsb29ucyA9IDA7Cis+IGNoYXIgKkJh
bGxvb25CYWNrID0gTlVMTDsKKz4gY2hhciAqQmFsbG9vbkZvcmUgPSBOVUxMOworPiBjaGFy
ICpCYWxsb29uRm9udCA9ICJmaXhlZCI7Cis+IGNoYXIgKkJhbGxvb25Cb3JkZXJDb2xvciA9
ICJibGFjayI7Cis+IGludCBCYWxsb29uQm9yZGVyV2lkdGggPSAxOworPiBpbnQgQmFsbG9v
bllPZmZzZXQgPSAyOworPiAKKzg3ZDEwMQorPCBleHRlcm4gRGVza0luZm8gKkRlc2tzOwor
ODhhMTAzLDEwNAorPiBpbnQgVGl0bGVBbGlnbiA9IDE7Cis+IGludCBSZWRyYXdCZyA9IDE7
Cis5NCwxMDFjMTEwCis8IC8qIEFkZGVkIGZvciBCYWxsb25zIC0gZGthICovCis8IGludCBT
aG93QmFsbG9ucyA9IDA7Cis8IGNoYXIgKkJhbGxvb25CYWNrID0gTlVMTDsKKzwgY2hhciAq
QmFsbG9vbkZvcmUgPSBOVUxMOworPCBjaGFyICpCYWxsb29uRm9udCA9ICJmaXhlZCI7Cis8
IGNoYXIgKkJhbGxvb25Cb3JkZXJDb2xvciA9ICJibGFjayI7Cis8IGludCBCYWxsb29uQm9y
ZGVyV2lkdGggPSAxOworPCBpbnQgQmFsbG9vbllPZmZzZXQgPSAxOworLS0tCis+IGV4dGVy
biB1bnNpZ25lZCBsb25nIE1heEJhY2tncm91bmRDb2xvcnM7CisxMDNkMTExCis8IGludCBU
aXRsZUFsaWduID0gMTsJCS8qIGRrYSAqLworMTA2LDEwN2MxMTQsMTE1Cis8ICAqICBQcm9j
ZWR1cmU6Cis8ICAqCW1haW4gLSBzdGFydCBvZiBtb2R1bGUKKy0tLQorPiAgKiAgIFByb2Nl
ZHVyZToKKz4gICogICBtYWluIC0gc3RhcnQgb2YgbW9kdWxlCisxMThkMTI1Cis8ICAgY2hh
ciBsaW5lW01BWExJTkVMRU5HVEhdOworMTIxYzEyOAorPCAgIC8qIFNhdmUgb3VyIHByb2dy
YW0gIG5hbWUgLSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KKy0tLQorPiAgIC8qIFNhdmUgb3Vy
IHByb2dyYW0gICBuYW1lIC0gZm9yIGVycm9yIG1lc3NhZ2VzICovCisxMjJhMTMwCis+IAor
MTMwZDEzNworPCAKKzE0NmMxNTMKKzwgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiICAgd2hl
cmUgZGVza3RvcHMgbiB0aHJvdWdoIG0gYXJlIGRpc3BsYXllZFxuIik7CistLS0KKz4gICAg
ICAgZnByaW50ZiAoc3RkZXJyLCAiICAgICAgd2hlcmUgZGVza3RvcHMgbiB0aHJvdWdoIG0g
YXJlIGRpc3BsYXllZFxuIik7CisxNzVhMTgzLDE4NQorPiAgIEJhY2tncm91bmRzID0gKEZp
bGVkSW1hZ2UgKikgc2FmZW1hbGxvYyAoQkFDS1NfTlVNICogc2l6ZW9mIChGaWxlZEltYWdl
KSk7Cis+IAorPiAgIEluaXRCYWNrZ3JvdW5kcyAoKTsKKzE3NywxODBjMTg3LDE4OQorPCAg
ICAgeworPCAgICAgICBzcHJpbnRmIChsaW5lLCAiRGVzayAlZCIsIGkgKyBkZXNrMSk7Cis8
ICAgICAgIENvcHlTdHJpbmcgKCZEZXNrc1tpXS5sYWJlbCwgbGluZSk7Cis8ICAgICB9Cist
LS0KKz4gICAgIEluaXREZXNrIChpKTsKKz4gCis+ICAgSW5pdFhJbWFnZUxvYWRlciAoKTsK
KzE5MWMyMDAKKzwgICBTY3Iuc2NyZWVuID0gRGVmYXVsdFNjcmVlbiAoZHB5KTsKKy0tLQor
PiAgIHNjcmVlbiA9IFNjci5zY3JlZW4gPSBEZWZhdWx0U2NyZWVuIChkcHkpOworMTk5YzIw
OAorPCAgIFNjci5DdXJyZW50RGVzayA9IDE7CistLS0KKz4gICBTY3IuQ3VycmVudERlc2sg
PSAtMTsKKzIwNmEyMTYKKz4gCQkJCQkJCSBNX05FV19CQUNLR1JPVU5EIHwKKzIyOGEyMzkK
Kz4gCisyMzZjMjQ3Cis8ICAgYmFsbG9vbl9zZXR1cCgpOworLS0tCis+ICAgYmFsbG9vbl9z
ZXR1cCAoKTsKKzI0N2QyNTcKKzwgCisyNTMsMjU0YzI2MywyNjQKKzwgICogIFByb2NlZHVy
ZToKKzwgICoJTG9vcCAtIHdhaXQgZm9yIGRhdGEgdG8gcHJvY2VzcworLS0tCis+ICAqICAg
UHJvY2VkdXJlOgorPiAgKiAgIExvb3AgLSB3YWl0IGZvciBkYXRhIHRvIHByb2Nlc3MKKzI1
N2MyNjcKKzwgdm9pZAorLS0tCis+IHZvaWQgCisyNzIsMjczYzI4MiwyODMKKzwgICogIFBy
b2NlZHVyZToKKzwgICoJUHJvY2VzcyBtZXNzYWdlIC0gZXhhbWluZXMgcGFja2V0IHR5cGVz
LCBhbmQgdGFrZXMgYXBwcm9wcmlhdGUgYWN0aW9uCistLS0KKz4gICogICBQcm9jZWR1cmU6
Cis+ICAqICAgUHJvY2VzcyBtZXNzYWdlIC0gZXhhbWluZXMgcGFja2V0IHR5cGVzLCBhbmQg
dGFrZXMgYXBwcm9wcmlhdGUgYWN0aW9uCisyNzZjMjg2Cis8IHZvaWQKKy0tLQorPiB2b2lk
IAorMjk4YTMwOSwzMTEKKz4gICAgIGNhc2UgTV9ORVdfQkFDS0dST1VORDoKKz4gICAgICAg
bGlzdF9uZXdfYmFja2dyb3VuZCAoYm9keSk7Cis+ICAgICAgIGJyZWFrOworMzI3LDMyOGMz
NDAsMzQxCis8ICAqICBQcm9jZWR1cmU6Cis8ICAqCVNJR1BJUEUgaGFuZGxlciAtIFNJR1BJ
UEUgbWVhbnMgYWZ0ZXJzdGVwIGlzIGR5aW5nCistLS0KKz4gICogICBQcm9jZWR1cmU6Cis+
ICAqICAgU0lHUElQRSBoYW5kbGVyIC0gU0lHUElQRSBtZWFucyBhZnRlcnN0ZXAgaXMgZHlp
bmcKKzMzMWMzNDQKKzwgdm9pZAorLS0tCis+IHZvaWQgCiszMzksMzQwYzM1MiwzNTMKKzwg
ICogIFByb2NlZHVyZToKKzwgICoJbGlzdF9hZGQgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVu
dHMgdG8gc3RkZXJyCistLS0KKz4gICogICBQcm9jZWR1cmU6Cis+ICAqICAgbGlzdF9hZGQg
LSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCiszNDNjMzU2Cis8IHZvaWQK
Ky0tLQorPiB2b2lkIAorMzY4YTM4MiwzODMKKz4gICAoKnByZXYpLT5wYWdlcl92aWV3X3dp
ZHRoID0gMDsKKz4gICAoKnByZXYpLT5wYWdlcl92aWV3X2hlaWdodCA9IDA7CiszODAsMzgx
YzM5NSwzOTYKKzwgICogIFByb2NlZHVyZToKKzwgICoJbGlzdF9jb25maWd1cmUgLSBkaXNw
bGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCistLS0KKz4gICogICBQcm9jZWR1cmU6
Cis+ICAqICAgbGlzdF9jb25maWd1cmUgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8g
c3RkZXJyCiszOTlkNDEzCis8IAorNDQxYTQ1NgorPiAKKzQ0NmQ0NjAKKzwgCis0NTksNDYw
YzQ3Myw0NzQKKzwgICogIFByb2NlZHVyZToKKzwgICoJbGlzdF9kZXN0cm95IC0gZGlzcGxh
eXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorLS0tCis+ICAqICAgUHJvY2VkdXJlOgor
PiAgKiAgIGxpc3RfZGVzdHJveSAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50cyB0byBzdGRl
cnIKKzQ2M2M0NzcKKzwgdm9pZAorLS0tCis+IHZvaWQgCis0ODNhNDk4Cis+IAorNDg0YTUw
MAorPiAKKzQ5NCw0OTVjNTEwLDUxMQorPCAgKiAgUHJvY2VkdXJlOgorPCAgKglsaXN0X2Zv
Y3VzIC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorLS0tCis+ICAqICAg
UHJvY2VkdXJlOgorPiAgKiAgIGxpc3RfZm9jdXMgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVu
dHMgdG8gc3RkZXJyCis1MjUsNTI2YzU0MSw1NDIKKzwgICogIFByb2NlZHVyZToKKzwgICoJ
bGlzdF9uZXdfcGFnZSAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50cyB0byBzdGRlcnIKKy0t
LQorPiAgKiAgIFByb2NlZHVyZToKKz4gICogICBsaXN0X25ld19wYWdlIC0gZGlzcGxheXMg
cGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorNTI5YzU0NQorPCB2b2lkCistLS0KKz4gdm9p
ZCAKKzU0Myw1NDRjNTU5LDU2MAorPCAgKiAgUHJvY2VkdXJlOgorPCAgKglsaXN0X25ld19k
ZXNrIC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorLS0tCis+ICAqICAg
UHJvY2VkdXJlOgorPiAgKiAgIGxpc3RfbmV3X2Rlc2sgLSBkaXNwbGF5cyBwYWNrZXQgY29u
dGVudHMgdG8gc3RkZXJyCis1NTFjNTY3Cis8IHZvaWQKKy0tLQorPiB2b2lkIAorNTU4YTU3
NQorPiAKKzU2MGE1NzgsNTg3Cis+IAorPiAgIGlmIChSZWRyYXdCZyA+IDApCis+ICAgICBp
ZiAob2xkRGVzayAhPSAxMDAwMCAmJiBTY3IuQ3VycmVudERlc2sgPT0gMTAwMDApCis+ICAg
ICAgIHsKKz4gCS8qIGZwcmludGYoc3RkZXJyLCJcbkdyYWJSb290OiBvbGRvbGREZXNrOiAl
bGQsIG9sZERlc2s6ICVkLCBDdXJyZW50RGVzazogJWQsIFRvR3JhYiA6PSAlZCBcbiIsb2xk
b2xkRGVzaywgb2xkRGVzaywgU2NyLkN1cnJlbnREZXNrLCBvbGREZXNrLWRlc2sxKTsgKi8K
Kz4gCUNoZWNrQW5kR3JhYlJvb3RQaXhtYXAgKG9sZERlc2sgLSBkZXNrMSk7Cis+ICAgICAg
IH0KKz4gCis+IC8qICAgZnByaW50ZihzdGRlcnIsIlxuQ2hhbmdlRGVzazogb2xkb2xkRGVz
azogJWxkLCBvbGREZXNrOiAlZCwgQ3VycmVudERlc2s6ICVkLCBUb0dyYWIgOj0gJWQgXG4i
LG9sZG9sZERlc2ssIG9sZERlc2ssIFNjci5DdXJyZW50RGVzaywgb2xkRGVzay1kZXNrMSk7
ICovCis+IAorNTY2YTU5NCw1OTkKKz4gLyogZnByaW50ZihzdGRlcnIsIlxuc2V0Um9vdDog
bmRlczogJWksIGQxOiAlaSwgTjogJXNcbmkuZS4gJWQgKCVkIC0gJWQpID0gJWQgIixuZGVz
a3MsIGRlc2sxLE15TmFtZSwgb2xkRGVzaywgU2NyLkN1cnJlbnREZXNrLCBkZXNrMSwgKFNj
ci5DdXJyZW50RGVzayAtIGRlc2sxKSk7ICovCis+ICAgaWYgKChTY3IuQ3VycmVudERlc2sg
LSBkZXNrMSA+PSAwKSAmJiAoU2NyLkN1cnJlbnREZXNrIC0gZGVzazEgPD0gbmRlc2tzKSkK
Kz4gICAgIGlmIChSZWRyYXdCZyA+IDApCis+ICAgICAgIGlmICgob2xkRGVzayA9PSAxMDAw
MCAmJiBTY3IuQ3VycmVudERlc2sgIT0gb2xkb2xkRGVzaykgfHwKKz4gCSAgKG9sZERlc2sg
IT0gMTAwMDAgJiYgU2NyLkN1cnJlbnREZXNrICE9IG9sZERlc2spIHx8IGZpcnN0VGltZSA9
PSAxKQorPiAJRHJhd1Jvb3QgKFNjci5DdXJyZW50RGVzayAtIGRlc2sxKTsKKzU3Miw1NzNj
NjA1LDYwNgorPCAgKiAgUHJvY2VkdXJlOgorPCAgKglsaXN0X3JhaXNlIC0gZGlzcGxheXMg
cGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorLS0tCis+ICAqICAgUHJvY2VkdXJlOgorPiAg
KiAgICAgICAgIGxpc3RfbmV3X2JhY2tncm91bmQgLSByZXJlYWQgY29uZmlnIGZpbGUgJiBy
ZWNvbmZpZ3VyZSBvbiBmbHkKKzU3NmM2MDksNjI3Cis8IHZvaWQKKy0tLQorPiB2b2lkIAor
PiBsaXN0X25ld19iYWNrZ3JvdW5kICh1bnNpZ25lZCBsb25nICpib2R5KQorPiB7Cis+IC8q
IG5lZWQgdG8gYWRkIGNvZGUgaGVyZSB0byByZXJlYWQgY29uZmlnIGZpbGUgKi8KKz4gCis+
ICAgQmFja2dyb3VuZENoYW5nZWQgKFNjci5DdXJyZW50RGVzayk7Cis+ICAgTWFrZUJhY2tn
cm91bmRzIChTY3IuQ3VycmVudERlc2spOworPiAgIERyYXdSb290IChTY3IuQ3VycmVudERl
c2spOworPiAgIFNldFBhZ2VyQmFja2dyb3VuZCAoU2NyLkN1cnJlbnREZXNrKTsKKz4gICBE
cmF3R3JpZCAoU2NyLkN1cnJlbnREZXNrLCAxKTsKKz4gfQorPiAKKz4gLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCis+ICAqCis+ICAqICAgUHJvY2VkdXJlOgorPiAgKiAgIGxpc3RfcmFpc2UgLSBk
aXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCis+ICAqCis+ICAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KKz4gdm9pZCAKKzU5NmQ2NDYKKzwgCis1OTksNjAwYzY0OSw2NTAKKzwgICog
IFByb2NlZHVyZToKKzwgICoJbGlzdF9sb3dlciAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50
cyB0byBzdGRlcnIKKy0tLQorPiAgKiAgIFByb2NlZHVyZToKKz4gICogICBsaXN0X2xvd2Vy
IC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorNjAzYzY1MworPCB2b2lk
CistLS0KKz4gdm9pZCAKKzYwN2E2NTgKKz4gICBpbnQgaTsKKzYyMGM2NzEsNjcyCis8IAlY
TG93ZXJXaW5kb3cgKGRweSwgRGVza3NbdC0+ZGVzayAtIGRlc2sxXS5DUGFnZXJXaW4pOwor
LS0tCis+IAlmb3IgKGkgPSAzOyBpID49IDA7IGktLSkKKz4gCSAgWExvd2VyV2luZG93IChk
cHksIERlc2tzW3QtPmRlc2sgLSBkZXNrMV0uQ1BhZ2VyV2luW2ldKTsKKzYyOCw2MjljNjgw
LDY4MQorPCAgKiAgUHJvY2VkdXJlOgorPCAgKglsaXN0X3Vua25vdyAtIGhhbmRsZXMgYW4g
dW5yZWNvZ25pemVkIHBhY2tldC4KKy0tLQorPiAgKiAgIFByb2NlZHVyZToKKz4gICogICBs
aXN0X3Vua25vdyAtIGhhbmRsZXMgYW4gdW5yZWNvZ25pemVkIHBhY2tldC4KKzYzMmM2ODQK
Kzwgdm9pZAorLS0tCis+IHZvaWQgCis2MzVjNjg3Cis8ICAgLyogIGZwcmludGYoc3RkZXJy
LCJVbmtub3duIHBhY2tldCB0eXBlXG4iKTsgKi8KKy0tLQorPiAgIC8qICAgZnByaW50Zihz
dGRlcnIsIlVua25vd24gcGFja2V0IHR5cGVcbiIpOyAqLworNjQwLDY0MWM2OTIsNjkzCis8
ICAqICBQcm9jZWR1cmU6Cis8ICAqCWxpc3RfaWNvbmlmeSAtIGRpc3BsYXlzIHBhY2tldCBj
b250ZW50cyB0byBzdGRlcnIKKy0tLQorPiAgKiAgIFByb2NlZHVyZToKKz4gICogICBsaXN0
X2ljb25pZnkgLSBkaXNwbGF5cyBwYWNrZXQgY29udGVudHMgdG8gc3RkZXJyCis2NDRjNjk2
Cis8IHZvaWQKKy0tLQorPiB2b2lkIAorNjg1LDY4NmM3MzcsNzM4Cis8ICAqICBQcm9jZWR1
cmU6Cis8ICAqCWxpc3RfZGVpY29uaWZ5IC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRv
IHN0ZGVycgorLS0tCis+ICAqICAgUHJvY2VkdXJlOgorPiAgKiAgIGxpc3RfZGVpY29uaWZ5
IC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorNjkwYzc0MgorPCB2b2lk
CistLS0KKz4gdm9pZCAKKzcyNCw3MjVjNzc2LDc3NworPCAgKiAgUHJvY2VkdXJlOgorPCAg
KglsaXN0X2ljb25fbmFtZSAtIGRpc3BsYXlzIHBhY2tldCBjb250ZW50cyB0byBzdGRlcnIK
Ky0tLQorPiAgKiAgIFByb2NlZHVyZToKKz4gICogICBsaXN0X2ljb25fbmFtZSAtIGRpc3Bs
YXlzIHBhY2tldCBjb250ZW50cyB0byBzdGRlcnIKKzcyOGM3ODAKKzwgdm9pZAorLS0tCis+
IHZvaWQgCis3NTQsNzU2ZDgwNQorPCAKKzwgCis8IAorNzU5LDc2MGM4MDgsODA5Cis8ICAq
ICBQcm9jZWR1cmU6Cis8ICAqCWxpc3RfZW5kIC0gZGlzcGxheXMgcGFja2V0IGNvbnRlbnRz
IHRvIHN0ZGVycgorLS0tCis+ICAqICAgUHJvY2VkdXJlOgorPiAgKiAgIGxpc3RfZW5kIC0g
ZGlzcGxheXMgcGFja2V0IGNvbnRlbnRzIHRvIHN0ZGVycgorNzYzYzgxMgorPCB2b2lkCist
LS0KKz4gdm9pZCAKKzc4OWQ4MzcKKzwgCis3OTQsNzk2ZDg0MQorPCAKKzwgCis8IAorODAy
Yzg0NworPCBpbnQKKy0tLQorPiBpbnQgCis4MDdjODUyCis8ICAgaW50IGNvdW50ID0gMDsK
Ky0tLQorPiAgIGludCBjb3VudDsKKzgxOGQ4NjIKKzwgCis4NDRhODg5Cis+IAorODQ4ZDg5
MgorPCAKKzg2Myw4NjRkOTA2Cis8IAorPCAKKzg3MGM5MTIKKzwgdm9pZAorLS0tCis+IHZv
aWQgCis4ODAsODkyZDkyMQorPCAgIFNjci5WU2NhbGUgPSAzMjsKKzwgCis8ICAgU2NyLk15
RGlzcGxheVdpZHRoID0gRGlzcGxheVdpZHRoIChkcHksIFNjci5zY3JlZW4pOworPCAgIFNj
ci5NeURpc3BsYXlIZWlnaHQgPSBEaXNwbGF5SGVpZ2h0IChkcHksIFNjci5zY3JlZW4pOwor
PCAKKzwgICBTY3IuVnhNYXggPSAzICogU2NyLk15RGlzcGxheVdpZHRoIC0gU2NyLk15RGlz
cGxheVdpZHRoOworPCAgIFNjci5WeU1heCA9IDMgKiBTY3IuTXlEaXNwbGF5SGVpZ2h0IC0g
U2NyLk15RGlzcGxheUhlaWdodDsKKzwgICBpZiAoU2NyLlZ4TWF4IDwgMCkKKzwgICAgIFNj
ci5WeE1heCA9IDA7Cis8ICAgaWYgKFNjci5WeU1heCA8IDApCis8ICAgICBTY3IuVnlNYXgg
PSAwOworPCAgIFNjci5WeCA9IDA7Cis8ICAgU2NyLlZ5ID0gMDsKKzkwMGQ5MjgKKzwgCis5
MTFkOTM4Cis8IAorOTE2LDkxOGM5NDMsOTQ0Cis8IAkgICAgeworPCAJICAgICAgdG1wKys7
Cis8IAkgICAgfQorLS0tCis+IAkgICAgdG1wKys7Cis+IAorOTIxYTk0OAorPiAKKzkzNyw5
MzhjOTY0Cis8ICAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAo
bXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiSWNvbkdl
b21ldHJ5IiksCis8IAkJCSAgICBDbGVuZ3RoICsgMTMpID09IDApKQorLS0tCis+ICAgICAg
IGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAo
dGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiSWNvbkdlb21ldHJ5IiksIENsZW5n
dGggKyAxMykgPT0gMCkpCis5NDIsOTQ0Yzk2OCw5NjkKKzwgCSAgICB7Cis8IAkgICAgICB0
bXArKzsKKzwgCSAgICB9CistLS0KKz4gCSAgICB0bXArKzsKKz4gCis5NDdhOTczCis+IAor
OTUzLDk1NWM5NzkKKzwgCSAgICB7Cis8IAkgICAgICBpY29uX3ggPSBnX3g7Cis8IAkgICAg
fQorLS0tCis+IAkgICAgaWNvbl94ID0gZ194OworOTU3LDk1OWM5ODEsOTgyCis8IAkgICAg
eworPCAJICAgICAgaWNvbl95ID0gZ195OworPCAJICAgIH0KKy0tLQorPiAJICAgIGljb25f
eSA9IGdfeTsKKz4gCis5NzdjMTAwMCwxMDg0Cis8ICAgICAgIGVsc2UgaWYgKChzdHJsZW4g
KCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMg
KCIqIiwgTXlOYW1lLCAiQWxpZ24iKSwgQ2xlbmd0aCArIDYpID09IDApKQorLS0tCis+ICAg
ICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNt
cCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiSW1hZ2UiKSwgQ2xlbmd0aCAr
IDYpID09IDApKQorPiAJeworPiAJICBkZXNrID0gZGVzazE7Cis+IAkgIG4gPSBDbGVuZ3Ro
ICsgNjsKKz4gCis+IAkgIHNzY2FuZiAoJnRsaW5lW25dLCAiJWQiLCAmZGVzayk7Cis+IAkg
IGlmICgoZGVzayA+PSBkZXNrMSkgJiYgKGRlc2sgPD0gZGVzazIpKQorPiAJICAgIHsKKz4g
CSAgICAgIHdoaWxlIChpc3NwYWNlICh0bGluZVtuXSkpCis+IAkJbisrOworPiAJICAgICAg
d2hpbGUgKCFpc3NwYWNlICh0bGluZVtuXSkpCis+IAkJbisrOworPiAJICAgICAgQ29weVN0
cmluZyAoJnRtcCwgJnRsaW5lW25dKTsKKz4gCSAgICAgIFNldFBhZ2VyUGl4bWFwIChkZXNr
IC0gZGVzazEsIHRtcCk7Cis+IAkgICAgICBmcmVlICh0bXApOworPiAJICAgIH0KKz4gCX0K
Kz4gICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5j
YXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJYUE0iKSwgQ2xlbmd0
aCArIDQpID09IDApKQorPiAJewkJCS8qIHVubm9mZmljaWFseSBzdXBwb3J0aW5nIG9sZGVy
IFBhZ2VyWFBNIHNldHRpbmcgKi8KKz4gCSAgZGVzayA9IGRlc2sxOworPiAJICBuID0gQ2xl
bmd0aCArIDQ7Cis+IAorPiAJICBzc2NhbmYgKCZ0bGluZVtuXSwgIiVkIiwgJmRlc2spOwor
PiAJICBpZiAoKGRlc2sgPj0gZGVzazEpICYmIChkZXNrIDw9IGRlc2syKSkKKz4gCSAgICB7
Cis+IAkgICAgICB3aGlsZSAoaXNzcGFjZSAodGxpbmVbbl0pKQorPiAJCW4rKzsKKz4gCSAg
ICAgIHdoaWxlICghaXNzcGFjZSAodGxpbmVbbl0pKQorPiAJCW4rKzsKKz4gCSAgICAgIENv
cHlTdHJpbmcgKCZ0bXAsICZ0bGluZVtuXSk7Cis+IAkgICAgICBTZXRQYWdlclBpeG1hcCAo
ZGVzayAtIGRlc2sxLCB0bXApOworPiAJICAgICAgU2V0Um9vdFBpeG1hcCAoZGVzayAtIGRl
c2sxLCB0bXApOworPiAJICAgICAgZnJlZSAodG1wKTsKKz4gCSAgICB9Cis+IAl9Cis+ICAg
ICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNt
cCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiRGVza3RvcEltYWdlIiksIENs
ZW5ndGggKyAxMykgPT0gMCkpCis+IAl7Cis+IAkgIGRlc2sgPSBkZXNrMTsKKz4gCSAgbiA9
IENsZW5ndGggKyAxMzsKKz4gCSAgc3NjYW5mICgmdGxpbmVbbl0sICIlZCIsICZkZXNrKTsK
Kz4gCSAgaWYgKChkZXNrID49IGRlc2sxKSAmJiAoZGVzayA8PSBkZXNrMikpCis+IAkgICAg
eworPiAJICAgICAgd2hpbGUgKGlzc3BhY2UgKHRsaW5lW25dKSkKKz4gCQluKys7Cis+IAkg
ICAgICB3aGlsZSAoIWlzc3BhY2UgKHRsaW5lW25dKSkKKz4gCQluKys7Cis+IAorPiAJICAg
ICAgQ29weVN0cmluZyAoJnRtcCwgJnRsaW5lW25dKTsKKz4gCis+IAkgICAgICBTZXRSb290
UGl4bWFwIChkZXNrIC0gZGVzazEsIHRtcCk7Cis+IAkgICAgICBmcmVlICh0bXApOworPiAJ
ICAgIH0KKz4gCX0KKz4gICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEp
ICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJG
YXN0QmFja2dyb3VuZCIpLCBDbGVuZ3RoICsgMTQpID09IDApKQorPiAJeworPiAJICBkZXNr
ID0gZGVzazE7Cis+IAkgIG4gPSBDbGVuZ3RoICsgMTU7Cis+IAkgIHNzY2FuZiAoJnRsaW5l
W25dLCAiJWQiLCAmZGVzayk7Cis+IAkgIGlmICgoZGVzayA+PSBkZXNrMSkgJiYgKGRlc2sg
PD0gZGVzazIpKQorPiAJICAgIHsKKz4gCSAgICAgIHdoaWxlIChpc3NwYWNlICh0bGluZVtu
XSkpCis+IAkJbisrOworPiAJICAgICAgd2hpbGUgKCFpc3NwYWNlICh0bGluZVtuXSkpCis+
IAkJbisrOworPiAJICAgICAgd2hpbGUgKGlzc3BhY2UgKHRsaW5lW25dKSkKKz4gCQluKys7
Cis+IAorPiAJICAgICAgQ29weVN0cmluZyAoJnRtcCwgJnRsaW5lW25dKTsKKz4gCis+IAkg
ICAgICBTZXRGYXN0QmFja2dyb3VuZCAoZGVzayAtIGRlc2sxLCB0bXApOworPiAJICAgICAg
ZnJlZSAodG1wKTsKKz4gCSAgICB9Cis+IAl9Cis+ICAgICAgIGVsc2UgaWYgKChzdHJsZW4g
KCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMg
KCIqIiwgTXlOYW1lLCAiWEltYWdlTG9hZGVyQXJncyIpLCBDbGVuZ3RoICsgMTYpID09IDAp
KQorPiAJeworPiAJICBkZXNrID0gZGVzazE7Cis+IAkgIG4gPSBDbGVuZ3RoICsgMTc7Cis+
IAkgIHdoaWxlIChpc3NwYWNlICh0bGluZVtuXSkpCis+IAkgICAgbisrOworPiAJICBDb3B5
U3RyaW5nICgmdG1wLCAmdGxpbmVbbl0pOworPiAJICBTZXRYSW1hZ2VMb2FkZXJBcmdzICh0
bXApOworPiAJICBmcmVlICh0bXApOworPiAJfQorPiAgICAgICBlbHNlIGlmICgoc3RybGVu
ICgmdGxpbmVbMF0pID4gMSkgJiYKKz4gCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUs
IENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiQWxpZ24iKSwgQ2xlbmd0aCArIDYpID09IDAp
KQorOTgyYzEwODksMTA5NQorPCAgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0p
ID4gMSkgJiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFt
ZSwgIkZvbnQiKSwgQ2xlbmd0aCArIDUpID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYg
KChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21w
ICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJSZWRyYXdCZyIpLCBDbGVuZ3Ro
ICsgOSkgPT0gMCkpCis+IAl7Cis+IAkgIHNzY2FuZiAoJnRsaW5lW0NsZW5ndGggKyA5XSwg
IiVkIiwgJlJlZHJhd0JnKTsKKz4gCX0KKz4gICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRs
aW5lWzBdKSA+IDEpICYmCis+IAkgICAgICAgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRT
dHJpbmczICgiKiIsIE15TmFtZSwgIkZvbnQiKSwgQ2xlbmd0aCArIDUpID09IDApKQorOTg5
YzExMDIsMTEwMworPCAgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkg
JiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIkZv
cmUiKSwgQ2xlbmd0aCArIDUpID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYgKChzdHJs
ZW4gKCZ0bGluZVswXSkgPiAxKSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21wICh0bGlu
ZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5hbWUsICJGb3JlIiksIENsZW5ndGggKyA1KSA9PSAw
KSkKKzk5M2MxMTA3LDExMDgKKzwgICAgICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBd
KSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioiLCBNeU5h
bWUsICJCYWNrIiksIENsZW5ndGggKyA1KSA9PSAwKSkKKy0tLQorPiAgICAgICBlbHNlIGlm
ICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYKKz4gCSAgICAgICAobXlzdHJuY2FzZWNt
cCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiQmFjayIpLCBDbGVuZ3RoICsg
NSkgPT0gMCkpCis5OTdjMTExMiwxMTEzCis8ICAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0
bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIq
IiwgTXlOYW1lLCAiSGlsaWdodCIpLCBDbGVuZ3RoICsgOCkgPT0gMCkpCistLS0KKz4gICAg
ICAgZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmCis+IAkgICAgICAgKG15
c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIkhpbGlnaHQi
KSwgQ2xlbmd0aCArIDgpID09IDApKQorMTAwMiwxMDAzYzExMTgsMTExOQorPCAgICAgICBl
bHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYgKG15c3RybmNhc2VjbXAgKHRs
aW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIlNtYWxsRm9udCIpLAorPCAJCQkgICAg
ICAgQ2xlbmd0aCArIDEwKSA9PSAwKSkKKy0tLQorPiAgICAgICBlbHNlIGlmICgoc3RybGVu
ICgmdGxpbmVbMF0pID4gMSkgJiYKKz4gCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUs
IENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiU21hbGxGb250IiksIENsZW5ndGggKyAxMCkg
PT0gMCkpCisxMDA3LDEwMDhjMTEyMywxMTI0Cis8ICAgICAgIGVsc2UgaWYgKChzdHJsZW4g
KCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMg
KCIqIiwgTXlOYW1lLCAiU3RhcnRJY29uaWMiKSwKKzwgCQkJICAgICBDbGVuZ3RoICsgMTIp
ID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAx
KSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21wICh0bGluZSwgQ2F0U3RyaW5nMyAoIioi
LCBNeU5hbWUsICJTdGFydEljb25pYyIpLCBDbGVuZ3RoICsgMTIpID09IDApKQorMTAxMiwx
MDEzYzExMjgsMTEyOQorPCAgICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4g
MSkgJiYgKG15c3RybmNhc2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwg
IlJvd3MiKSwKKzwgCQkJICAgICAgIENsZW5ndGggKyA1KSA9PSAwKSkKKy0tLQorPiAgICAg
ICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVbMF0pID4gMSkgJiYKKz4gCSAgICAgICAobXlz
dHJuY2FzZWNtcCAodGxpbmUsIENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiUm93cyIpLCBD
bGVuZ3RoICsgNSkgPT0gMCkpCisxMDE3LDEwMThjMTEzMywxMTM5Cis8ICAgICAgIGVsc2Ug
aWYgKChzdHJsZW4gKCZ0bGluZVswXSkgPiAxKSAmJiAobXlzdHJuY2FzZWNtcCAodGxpbmUs
IENhdFN0cmluZzMgKCIqIiwgTXlOYW1lLCAiQ29sdW1ucyIpLAorPCAJCQkgICAgICAgQ2xl
bmd0aCArIDgpID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0bGlu
ZVswXSkgPiAxKSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21wICh0bGluZSwgIk1heEJh
Y2tncm91bmRDb2xvcnMiLCAxOSkgPT0gMCkpCis+IAl7Cis+IAkgIHNzY2FuZiAoJnRsaW5l
WzE5XSwgIiVsdSIsICZNYXhCYWNrZ3JvdW5kQ29sb3JzKTsKKz4gCX0KKz4gICAgICAgZWxz
ZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmCis+IAkgICAgICAgKG15c3RybmNh
c2VjbXAgKHRsaW5lLCBDYXRTdHJpbmczICgiKiIsIE15TmFtZSwgIkNvbHVtbnMiKSwgQ2xl
bmd0aCArIDgpID09IDApKQorMTAyMmMxMTQzLDExNDQKKzwgICAgICAgZWxzZSBpZiAoKHN0
cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwgIkhpQmFj
a0NvbG9yIiwgMTEpID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYgKChzdHJsZW4gKCZ0
bGluZVswXSkgPiAxKSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21wICh0bGluZSwgIkhp
QmFja0NvbG9yIiwgMTEpID09IDApKQorMTAyN2MxMTQ5LDExNTAKKzwgICAgICAgZWxzZSBp
ZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0bGluZSwg
IkhpRm9yZUNvbG9yIiwgMTEpID09IDApKQorLS0tCis+ICAgICAgIGVsc2UgaWYgKChzdHJs
ZW4gKCZ0bGluZVswXSkgPiAxKSAmJgorPiAJICAgICAgIChteXN0cm5jYXNlY21wICh0bGlu
ZSwgIkhpRm9yZUNvbG9yIiwgMTEpID09IDApKQorMTAzMiwxMDQyZDExNTQKKzwgICAgICAg
ZWxzZSBpZiAoKHN0cmxlbiAoJnRsaW5lWzBdKSA+IDEpICYmIChteXN0cm5jYXNlY21wICh0
bGluZSwgIlN0aWNreVBhZ2VySWNvbnMiLCAxMSkgPT0gMCkpCis8IAl7Cis8IAkgIFN0aWNr
eUljb25zID0gMTsKKzwgCX0KKzwgLyogICAgICBlbHNlIGlmICgoc3RybGVuICgmdGxpbmVb
MF0pID4gMSkgJiYKKzwgCSAgICAgICAobXlzdHJuY2FzZWNtcCAodGxpbmUsICJEZXNrVG9w
U2l6ZSIsIDExKSA9PSAwKSkKKzwgCXsKKzwgCSAgc3NjYW5mICgmdGxpbmVbMTFdLCAiJWR4
JWQiLCAmU2NyLlZ4TWF4LCAmU2NyLlZ5TWF4KTsKKzwgCSAgU2NyLlZ4TWF4ID0gU2NyLlZ4
TWF4ICogU2NyLk15RGlzcGxheVdpZHRoIC0gU2NyLk15RGlzcGxheVdpZHRoOworPCAJICBT
Y3IuVnlNYXggPSBTY3IuVnlNYXggKiBTY3IuTXlEaXNwbGF5SGVpZ2h0IC0gU2NyLk15RGlz
cGxheUhlaWdodDsKKzwgCX0KKzEwNDRjMTE1NgorPCAJICAgICAgIChteXN0cm5jYXNlY21w
ICh0bGluZSwgIkRlc2tUb3BTY2FsZSIsIDEyKSA9PSAwKSkKKy0tLQorPiAJICAgICAgICht
eXN0cm5jYXNlY21wICh0bGluZSwgIlN0aWNreVBhZ2VySWNvbiIsIDE1KSA9PSAwKSkKKzEw
NDZjMTE1OAorPCAJICBzc2NhbmYgKCZ0bGluZVsxMl0sICIlZCIsICZTY3IuVlNjYWxlKTsK
Ky0tLQorPiAJICBTdGlja3lJY29ucyA9IDE7CisxMDQ4ZDExNTkKKzwgKi8KZGlmZiAtTiAt
dSAtciBQYWdlcl9ub3hwbS9wYWdlci5oLmRpZmYgUGFnZXJfbm94cG0uZGthL3BhZ2VyLmgu
ZGlmZgotLS0gUGFnZXJfbm94cG0vcGFnZXIuaC5kaWZmCVdlZCBEZWMgMzEgMTk6MDA6MDAg
MTk2OQorKysgUGFnZXJfbm94cG0uZGthL3BhZ2VyLmguZGlmZglUdWUgU2VwIDI5IDE1OjUx
OjExIDE5OTgKQEAgLTAsMCArMSw5NSBAQAorNTljNTksNjAKKzwgCistLS0KKz4gICAgIGlu
dCBwYWdlcl92aWV3X3dpZHRoOworPiAgICAgaW50IHBhZ2VyX3ZpZXdfaGVpZ2h0OworNjZh
NjgsODUKKz4gdHlwZWRlZiBlbnVtIHBhZ2VyX2JhY2tncl90eXBlCis+ICAgeworPiAgICAg
YmFja2dyVXNlWFBNID0gMCwKKz4gICAgIGJhY2tnclNjYWxlUm9vdCwKKz4gICAgIGJhY2tn
clNhbWVBc1Jvb3QKKz4gCis+ICAgfQorPiBCYWNrZ3JvdW5kVHlwZTsKKz4gCis+IHR5cGVk
ZWYgc3RydWN0IGZpbGVkX2ltYWdlCis+ICAgeworPiAgICAgUGl4bWFwIHBpeG1hcDsKKz4g
ICAgIGNoYXIgKmZpbGVuYW1lOworPiAgICAgY2hhciAqTG9hZGVyQXJnczsKKz4gICAgIGlu
dCBpbl91c2U7CQkJLypudW1iZXIgb2Ygb2JqZWN0cyB1c2luZyBpdCAqLworPiAgIH0KKz4g
RmlsZWRJbWFnZTsKKz4gCis3MmM5MQorPCAgICAgV2luZG93IENQYWdlcldpbjsKKy0tLQor
PiAgICAgV2luZG93IENQYWdlcldpbls0XTsKKzc1YTk1LDEwNAorPiAKKz4gICAgIEJhY2tn
cm91bmRUeXBlIFBhZ2VyQmFja1R5cGU7Cis+ICAgICBpbnQgUm9vdEJhY2ssIFBhZ2VyQmFj
azsKKz4gCis+ICAgICBjaGFyICpMb2FkZXJBcmdzOworPiAKKz4gICAgIGludCBGYXN0QmFj
a2dyb3VuZE9uOworPiAgICAgdW5zaWduZWQgaW50IHRpbGVfaHNpemU7Cis+ICAgICB1bnNp
Z25lZCBpbnQgdGlsZV92c2l6ZTsKKz4gCis3OWMxMDgsMTI1Cis8ICNkZWZpbmUgT04gMQor
LS0tCis+ICNkZWZpbmUgQkFDS1NfTlVNICAgICAgICAgICAgICAgICAgICAgICAgKChuZGVz
a3MqMikrMSkKKz4gI2RlZmluZSBTTUFMTF9GSUxFX05BTUVfRVhUICAgICAgICAgICAgICAi
LiV1eCV1LmFzLnhwbSIKKz4gI2RlZmluZSBTTUFMTF9GSUxFX05BTUVfRVhUX01BWF9MRU4g
ICAgICAzMgorPiAKKz4gZXh0ZXJuIGNoYXIgKlhJbWFnZUxvYWRlckFwcDsKKz4gZXh0ZXJu
IGNoYXIgKlhJbWFnZUxvYWRlckFyZ3M7Cis+IAorPiBleHRlcm4gRmlsZWRJbWFnZSAqQmFj
a2dyb3VuZHM7Cis+IGV4dGVybiBEZXNrSW5mbyAqRGVza3M7Cis+IAorPiAjZGVmaW5lIFBB
R0VSX1BJWE1BUCAgICAgQmFja2dyb3VuZHNbRGVza3NbRGVza10uUGFnZXJCYWNrXS5waXht
YXAKKz4gI2RlZmluZSBST09UX1BJWE1BUCAgICAgIEJhY2tncm91bmRzW0Rlc2tzW0Rlc2td
LlJvb3RCYWNrXS5waXhtYXAKKz4gCis+ICNkZWZpbmUgUEFHRVJfRklMRU5BTUUgICBCYWNr
Z3JvdW5kc1tEZXNrc1tEZXNrXS5QYWdlckJhY2tdLmZpbGVuYW1lCis+ICNkZWZpbmUgUk9P
VF9GSUxFTkFNRSAgICBCYWNrZ3JvdW5kc1tEZXNrc1tEZXNrXS5Sb290QmFja10uZmlsZW5h
bWUKKz4gCis+IAorPiAjZGVmaW5lIE9OICAxCis4MWExMjgsMTI5Cis+IAorPiAKKzkyYTE0
MQorPiB2b2lkIFBhcnNlQmFzZU9wdGlvbnMgKGNoYXIgKmZpbGVuYW1lKTsKKzEwMGExNTAK
Kz4gdm9pZCBsaXN0X25ld19iYWNrZ3JvdW5kICh1bnNpZ25lZCBsb25nICpib2R5KTsKKzEx
MmExNjMsMTgwCis+IC8qIFN0dWZmIGluIGJhY2tncm91bmQuYyAqLworPiB2b2lkIEluaXRY
SW1hZ2VMb2FkZXIgKCk7Cis+IHZvaWQgU2V0WEltYWdlTG9hZGVyQXJncyAoY2hhciAqYXJn
cyk7Cis+IHZvaWQgSW5pdERlc2tCYWNrZ3JvdW5kcyAobG9uZyBEZXNrKTsKKz4gdm9pZCBJ
bml0QmFja2dyb3VuZHMgKCk7Cis+IHZvaWQgU2V0UGFnZXJCYWNrZ3JvdW5kIChsb25nIERl
c2spOworPiB2b2lkIE1ha2VCYWNrZ3JvdW5kcyAobG9uZyBEZXNrKTsKKz4gdm9pZCBDaGVj
a0FuZEdyYWJSb290UGl4bWFwIChsb25nIERlc2spOworPiB2b2lkIERyYXdSb290IChsb25n
IERlc2spOworPiB2b2lkIEJhY2tncm91bmRDaGFuZ2VkIChsb25nIERlc2spOworPiB2b2lk
IFNldEJhY2tncm91bmRUeXBlIChsb25nIERlc2ssIGNoYXIgKnBhcmFtcyk7Cis+IHZvaWQg
U2V0Um9vdFBpeG1hcCAobG9uZyBEZXNrLCBjaGFyICp4cG1GaWxlKTsKKz4gdm9pZCBTZXRQ
YWdlclBpeG1hcCAobG9uZyBEZXNrLCBjaGFyICp4cG1GaWxlKTsKKz4gdm9pZCBTZXRGYXN0
QmFja2dyb3VuZCAobG9uZyBEZXNrLCBjaGFyICpwYXJhbXMpOworPiAKKz4gLyogU3R1ZmYg
aW4geF9zY2FsZS5jICovCis+IFBpeG1hcCBTY2FsZVBpeG1hcFRvV2luIChQaXhtYXAgc3Jj
LCBEcmF3YWJsZSB0b193aW4sIHVuc2lnbmVkIGludCB0b19kZXB0aCk7Cis+IAorMTEzYTE4
MgorPiB2b2lkIEluaXREZXNrIChsb25nIERlc2spOworMTI4YTE5OCwyMDAKKz4gdm9pZCBN
YXBCYWxsb29uV2luZG93IChYRXZlbnQgKik7Cis+IHZvaWQgVW5tYXBCYWxsb29uV2luZG93
ICh2b2lkKTsKKz4gdm9pZCBEcmF3SW5CYWxsb29uV2luZG93ICh2b2lkKTsKKzEzOWEyMTIs
MjEzCis+IAorPiAKZGlmZiAtTiAtdSAtciBQYWdlcl9ub3hwbS94X3BhZ2VyLmRpZmYgUGFn
ZXJfbm94cG0uZGthL3hfcGFnZXIuZGlmZgotLS0gUGFnZXJfbm94cG0veF9wYWdlci5kaWZm
CVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQorKysgUGFnZXJfbm94cG0uZGthL3hfcGFnZXIu
ZGlmZglUdWUgU2VwIDI5IDE1OjQ4OjIyIDE5OTgKQEAgLTAsMCArMSw0OTEgQEAKKzJjMiw1
Cis8ICAqIENvcHlyaWdodCAoQykgMTk5OCBEb3VnIEFsY29ybiA8YWxjb3JuZEBlYXJ0aGxp
bmsubmV0PgorLS0tCis+ICAqIENvcHlyaWdodCAoQykgMTk5OCBTYXNoYSBWYXNrbyA8c2Fz
aGF2QHNwcmludG1haWwuY29tPgorPiAgKiBDb3B5cmlnaHQgKEMpIDE5OTggTWFrb3RvIEth
dG8gPG1fa2F0b0BnYTIuc28tbmV0Lm5lLmpwPgorPiAgKiBDb3B5cmlnaHQgKEMpIDE5OTgg
UmljIExpc3RlciA8cmljQGdpY2NzLmdlb3JnZXRvd24uZWR1PgorPiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTcgR3V5bGhlbSBBem5hciA8Z3V5bGhlbUBvZWlsLnFjLmNhPgorNGM3Cis8ICAq
IENvcHlyaWdodCAoQykgMTk5NCBSb2IgTmF0aW9uCistLS0KKz4gICogQ29weXJpZ2h0IChD
KSAxOTk1IFJvYiBOYXRpb24KKzIxYTI1LDMyCis+IC8qCis+ICAgICNkZWZpbmUgTE9HMShh
KSAgICAgICBmcHJpbnRmKCBzdGRlcnIsIGEgKTsKKz4gICAgI2RlZmluZSBMT0cyKGEsYikg
ICAgZnByaW50Ziggc3RkZXJyLCBhLCBiICk7Cis+ICAgICNkZWZpbmUgTE9HMyhhLGIsYykg
ICAgZnByaW50Ziggc3RkZXJyLCBhLCBiLCBjICk7Cis+ICAgICNkZWZpbmUgTE9HNChhLGIs
YyxkKSAgICBmcHJpbnRmKCBzdGRlcnIsIGEsIGIsIGMsIGQgKTsKKz4gICovCis+IAorPiAK
KzI2YTM4LDM5Cis+IAorPiAKKzI5YTQzCis+IAorNDFhNTYKKz4gI2luY2x1ZGUgPFgxMS94
cG0uaD4KKzQzYzU4LDU5Cis8ICNpbmNsdWRlICJQYWdlcl9ub3hwbS5oIgorLS0tCis+ICNp
bmNsdWRlICIuLi8uLi9pbmNsdWRlL2FmdGVyc3RlcC5oIgorPiAjaW5jbHVkZSAiUGFnZXIu
aCIKKzg3YTEwNAorPiAKKzExMGExMjgsMTQ3Cis+IAorPiAKKz4gdm9pZCAKKz4gSW5pdERl
c2sgKGxvbmcgRGVzaykKKz4geworPiAgIGNoYXIgbGluZVsxMDBdOworPiAgIExPRzIgKCJc
bkVudGVyIEluaXREZXNrICVsZCIsIERlc2spOworPiAgIHNwcmludGYgKGxpbmUsICJEZXNr
ICVsdSIsIERlc2sgKyBkZXNrMSk7Cis+ICAgQ29weVN0cmluZyAoJkRlc2tzW0Rlc2tdLmxh
YmVsLCBsaW5lKTsKKz4gCis+ICAgRGVza3NbRGVza10uTG9hZGVyQXJncyA9IE5VTEw7Cis+
ICAgSW5pdERlc2tCYWNrZ3JvdW5kcyAoRGVzayk7Cis+ICAgRGVza3NbRGVza10uUGFnZXJC
YWNrVHlwZSA9IGJhY2tnclVzZVhQTTsKKz4gICBEZXNrc1tEZXNrXS5GYXN0QmFja2dyb3Vu
ZE9uID0gMDsKKz4gICBEZXNrc1tEZXNrXS50aWxlX2hzaXplID0gMDsKKz4gICBEZXNrc1tE
ZXNrXS50aWxlX3ZzaXplID0gMDsKKz4gICBMT0cyICgiXG5FeGl0IEluaXREZXNrICVsZCIs
IERlc2spOworPiB9Cis+IAorPiAKKzExNGMxNTEKKzwgICoJSW5pdGlhbGl6ZV9wYWdlciAt
IGNyZWF0ZXMgdGhlIHBhZ2VyIHdpbmRvdywgaWYgbmVlZGVkCistLS0KKz4gICogICBJbml0
aWFsaXplX3BhZ2VyIC0gY3JlYXRlcyB0aGUgcGFnZXIgd2luZG93LCBpZiBuZWVkZWQKKzEx
N2MxNTQKKzwgICoJeCx5IGxvY2F0aW9uIG9mIHRoZSB3aW5kb3cKKy0tLQorPiAgKiAgIHgs
eSBsb2NhdGlvbiBvZiB0aGUgd2luZG93CisxNjdjMjA0Cis8ICAgICB3aW5kb3dGb250ID0g
TlVMTDsKKy0tLQorPiAgICAgd2luZG93Rm9udC5mb250ID0gTlVMTDsKKzE5MCwxOTFkMjI2
Cis8IAorPCAKKzIxM2QyNDcKKzwgCisyMzhkMjcxCis8IAorMjQ3ZDI3OQorPCAKKzMyMGEz
NTMKKz4gCiszNjFkMzkzCis8IAorMzY3LDM3MmMzOTksNDE3Cis8ICAgICAgIERlc2tzW2ld
LkNQYWdlcldpbiA9IFhDcmVhdGVXaW5kb3cgKGRweSwgRGVza3NbaV0udywgLTEwMDAsIC0x
MDAwLCB3LCBoLCAwLAorPCAJCQkJCSAgQ29weUZyb21QYXJlbnQsCis8IAkJCQkJICBJbnB1
dE91dHB1dCwgQ29weUZyb21QYXJlbnQsCis8IAkJCQkJICB2YWx1ZW1hc2ssCis8IAkJCQkJ
ICAmYXR0cmlidXRlcyk7Cis8ICAgICAgIFhNYXBSYWlzZWQgKGRweSwgRGVza3NbaV0uQ1Bh
Z2VyV2luKTsKKy0tLQorPiAKKz4gICAgICAgRGVza3NbaV0uQ1BhZ2VyV2luWzBdID0gWENy
ZWF0ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS53LCAtMTAwMCwgLTEwMDAsIHcgKyA2LCAzLCAw
LAorPiAJCQkJQ29weUZyb21QYXJlbnQsIElucHV0T3V0cHV0LCBDb3B5RnJvbVBhcmVudCwK
Kz4gCQkJCQkgICAgIHZhbHVlbWFzaywgJmF0dHJpYnV0ZXMpOworPiAgICAgICBEZXNrc1tp
XS5DUGFnZXJXaW5bMV0gPSBYQ3JlYXRlV2luZG93IChkcHksIERlc2tzW2ldLncsIC0xMDAw
LCAtMTAwMCwgdyArIDYsIDMsIDAsCis+IAkJCQlDb3B5RnJvbVBhcmVudCwgSW5wdXRPdXRw
dXQsIENvcHlGcm9tUGFyZW50LAorPiAJCQkJCSAgICAgdmFsdWVtYXNrLCAmYXR0cmlidXRl
cyk7Cis+IAorPiAgICAgICBEZXNrc1tpXS5DUGFnZXJXaW5bMl0gPSBYQ3JlYXRlV2luZG93
IChkcHksIERlc2tzW2ldLncsIC0xMDAwLCAtMTAwMCwgMywgaCwgMCwKKz4gCQkJCUNvcHlG
cm9tUGFyZW50LCBJbnB1dE91dHB1dCwgQ29weUZyb21QYXJlbnQsCis+IAkJCQkJICAgICB2
YWx1ZW1hc2ssICZhdHRyaWJ1dGVzKTsKKz4gCis+ICAgICAgIERlc2tzW2ldLkNQYWdlcldp
blszXSA9IFhDcmVhdGVXaW5kb3cgKGRweSwgRGVza3NbaV0udywgLTEwMDAsIC0xMDAwLCAz
LCBoLCAwLAorPiAJCQkJQ29weUZyb21QYXJlbnQsIElucHV0T3V0cHV0LCBDb3B5RnJvbVBh
cmVudCwKKz4gCQkJCQkgICAgIHZhbHVlbWFzaywgJmF0dHJpYnV0ZXMpOworPiAKKz4gICAg
ICAgZm9yIChsID0gMDsgbCA8IDQ7IGwrKykKKz4gCVhNYXBSYWlzZWQgKGRweSwgRGVza3Nb
aV0uQ1BhZ2VyV2luW2xdKTsKKz4gCiszNzVhNDIxLDQyMgorPiAgICAgICBNYWtlQmFja2dy
b3VuZHMgKGkpOworPiAgICAgICBTZXRQYWdlckJhY2tncm91bmQgKGkpOworNDE0LDQ0NmQ0
NjAKKzwgCis8IAorPCAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorPCAgKiAKKzwgICogTG9h
ZHMgYSBzaW5nbGUgY29sb3IKKzwgICoKKzwgICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCis8
IFBpeGVsCis8IEdldENvbG9yIChjaGFyICpuYW1lKQorPCB7Cis8ICAgWENvbG9yIGNvbG9y
OworPCAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Cis8IAorPCAgIFhHZXRXaW5k
b3dBdHRyaWJ1dGVzIChkcHksIFNjci5Sb290LCAmYXR0cmlidXRlcyk7Cis8ICAgY29sb3Iu
cGl4ZWwgPSAwOworPCAgIGlmICghWFBhcnNlQ29sb3IgKGRweSwgYXR0cmlidXRlcy5jb2xv
cm1hcCwgbmFtZSwgJmNvbG9yKSkKKzwgICAgIHsKKzwgICAgICAgbm9jb2xvciAoInBhcnNl
IiwgbmFtZSk7Cis8ICAgICB9Cis8ICAgZWxzZSBpZiAoIVhBbGxvY0NvbG9yIChkcHksIGF0
dHJpYnV0ZXMuY29sb3JtYXAsICZjb2xvcikpCis8ICAgICB7Cis8ICAgICAgIG5vY29sb3Ig
KCJhbGxvYyIsIG5hbWUpOworPCAgICAgfQorPCAgIHJldHVybiBjb2xvci5waXhlbDsKKzwg
fQorPCAKKzwgCis8IHZvaWQKKzwgbm9jb2xvciAoY2hhciAqYSwgY2hhciAqYikKKzwgewor
PCAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiBjYW4ndCAlcyAlc1xuIiwgTXlOYW1lLCBhLCBi
KTsKKzwgfQorPCAKKzQ1MmM0NjYKKzwgdm9pZAorLS0tCis+IHZvaWQgCis0NzBjNDg0Cis8
IAkgIChFdmVudC0+eGJ1dHRvbi5idXR0b24gPT0gMikpCistLS0KKz4gCSAgKEV2ZW50LT54
YnV0dG9uLmJ1dHRvbiA9PSAyKSkJCS8qMykpID8/Pz8/Pz8gc2VlIGJlbG93ICovCis0ODAs
NDgyYzQ5NAorPCAJICAgIHsKKzwgCSAgICAgIEljb25Td2l0Y2hQYWdlIChFdmVudCk7Cis8
IAkgICAgfQorLS0tCis+IAkgICAgSWNvblN3aXRjaFBhZ2UgKEV2ZW50KTsKKzQ4M2E0OTYK
Kz4gICAgICAgLyogdGhhdCB3YXMgbmV2ZXIgZ29pbmcgdG8gaGFwcGVuID8hPyE/ISBCVWc/
Pz8gKi8KKzU1MGQ1NjIKKzwgCis1NjRjNTc2Cis8IHZvaWQKKy0tLQorPiB2b2lkIAorNTgz
LDU4NWM1OTUKKzwgCXsKKzwgCSAgTGFiZWxXaW5kb3cgKHQpOworPCAJfQorLS0tCis+IAlM
YWJlbFdpbmRvdyAodCk7Cis1ODcsNTg5YzU5NworPCAJeworPCAJICBMYWJlbEljb25XaW5k
b3cgKHQpOworPCAJfQorLS0tCis+IAlMYWJlbEljb25XaW5kb3cgKHQpOworNjAxYzYwOQor
PCB2b2lkCistLS0KKz4gdm9pZCAKKzY0MWM2NDksNjU0Cis8IAkJWE1vdmVSZXNpemVXaW5k
b3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luLCB4LCB5LCB3LCBoKTsKKy0tLQorPiAJCXsK
Kz4gCQkgIFhNb3ZlUmVzaXplV2luZG93IChkcHksIERlc2tzW2ldLkNQYWdlcldpblswXSwg
eCAtIDMsIHkgLSAzLCB3ICsgNiwgMyk7Cis+IAkJICBYTW92ZVJlc2l6ZVdpbmRvdyAoZHB5
LCBEZXNrc1tpXS5DUGFnZXJXaW5bMV0sIHggLSAzLCB5ICsgaCwgdyArIDYsIDMpOworPiAJ
CSAgWE1vdmVSZXNpemVXaW5kb3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luWzJdLCB4IC0g
MywgeSwgMywgaCk7Cis+IAkJICBYTW92ZVJlc2l6ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS5D
UGFnZXJXaW5bM10sIHggKyB3LCB5LCAzLCBoKTsKKz4gCQl9Cis2NDMsNjQ0YzY1Niw2NjEK
KzwgCQlYTW92ZVJlc2l6ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW4sIC0xMDAw
LCAtMTAwLCB3LCBoKTsKKzwgCistLS0KKz4gCQl7Cis+IAkJICBYTW92ZVJlc2l6ZVdpbmRv
dyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW5bMF0sIC0xMDAwLCAtMTAwMCwgdyArIDYsIDMp
OworPiAJCSAgWE1vdmVSZXNpemVXaW5kb3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luWzFd
LCAtMTAwMCwgLTEwMDAsIHcgKyA2LCAzKTsKKz4gCQkgIFhNb3ZlUmVzaXplV2luZG93IChk
cHksIERlc2tzW2ldLkNQYWdlcldpblsyXSwgLTEwMDAsIC0xMDAwLCAzLCBoKTsKKz4gCQkg
IFhNb3ZlUmVzaXplV2luZG93IChkcHksIERlc2tzW2ldLkNQYWdlcldpblszXSwgLTEwMDAs
IC0xMDAwLCAzLCBoKTsKKz4gCQl9Cis2NTVjNjcyCis8IHZvaWQKKy0tLQorPiB2b2lkIAor
NjU4YzY3NQorPCAgIGludCBuMSwgbTEsIHgsIHksIG4sIG0sIGk7CistLS0KKz4gICBpbnQg
bjEsIG0xLCB4LCB5LCBuLCBtLCBpLCBsLCB3LCBoOworNjcwYTY4OAorPiAKKzY3NSw2NzZj
NjkzLDcwMgorPCAJICBYTW92ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW4sIHgs
IHkpOworPCAJICBYTG93ZXJXaW5kb3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luKTsKKy0t
LQorPiAJICB3ID0gKHdpbmRvd193IC0gbikgLyAobiArIDEpOworPiAJICBoID0gKHdpbmRv
d19oIC0gbGFiZWxfaCAtIG0pIC8gKG0gKyAxKTsKKz4gCSAgWE1vdmVXaW5kb3cgKGRweSwg
RGVza3NbaV0uQ1BhZ2VyV2luWzBdLCB4IC0gMywgeSAtIDMpOworPiAJICBYTW92ZVdpbmRv
dyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW5bMV0sIHggLSAzLCB5ICsgc2NyX2gpOworPiAJ
ICBYTW92ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW5bMl0sIHggLSAzLCB5KTsK
Kz4gCSAgWE1vdmVXaW5kb3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luWzNdLCB4ICsgc2Ny
X3csIHkpOworPiAKKz4gCSAgLypYTW92ZVdpbmRvdyhkcHksIERlc2tzW2ldLkNQYWdlcldp
biwgeCx5KTsgKi8KKz4gCSAgZm9yIChsID0gMDsgbCA8IDQ7IGwrKykKKz4gCSAgICBYTG93
ZXJXaW5kb3cgKGRweSwgRGVza3NbaV0uQ1BhZ2VyV2luW2xdKTsKKzY3OWM3MDUsNzA4Cis8
IAlYTW92ZVdpbmRvdyAoZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW4sIC0xMDAwLCAtMTAwMCk7
CistLS0KKz4gCS8qWE1vdmVXaW5kb3coZHB5LCBEZXNrc1tpXS5DUGFnZXJXaW4sIC0xMDAw
LC0xMDAwKTsgKi8KKz4gCWZvciAobCA9IDA7IGwgPCA0OyBsKyspCis+IAkgIFhNb3ZlV2lu
ZG93IChkcHksIERlc2tzW2ldLkNQYWdlcldpbltsXSwgLTEwMDAsIC0xMDAwKTsKKz4gCis3
MDBhNzMwCis+IAorNzA1YzczNQorPCB2b2lkCistLS0KKz4gdm9pZCAKKzcxOGM3NDgKKzwg
dm9pZAorLS0tCis+IHZvaWQgCis3NTFhNzgyCis+IAorNzU3Yzc4OAorPCB2b2lkCistLS0K
Kz4gdm9pZCAKKzc3MmE4MDQKKz4gCis4MDBkODMxCis8IAorODMyLDgzM2M4NjMKKzwgCis8
IHZvaWQKKy0tLQorPiB2b2lkIAorODQzYTg3NAorPiAKKzg3OGQ5MDgKKzwgCis4ODVkOTE0
Cis8IAorODg5YTkxOQorPiAKKzg5NGQ5MjMKKzwgCis5MTFhOTQxCis+IAorOTQ4YTk3OQor
PiAKKzk3OGQxMDA4Cis8IAorOTg0YTEwMTUKKz4gCisxMDE1LDEwMTdjMTA0NgorPCAKKzwg
Cis8IHZvaWQKKy0tLQorPiB2b2lkIAorMTAzM2QxMDYxCis8IAorMTA0MWExMDcwCis+IAor
MTA0NWExMDc1Cis+IAorMTA2MmExMDkzCis+IAorMTA3N2MxMTA4Cis8IHZvaWQKKy0tLQor
PiB2b2lkIAorMTExMWQxMTQxCis8IAorMTEyMmExMTUzCis+IAorMTEyOSwxMTMwYzExNjAK
KzwgCis8IHZvaWQKKy0tLQorPiB2b2lkIAorMTE0MiwxMTQ0YzExNzIKKzwgCSAgICB7Cis8
IAkgICAgICBDaGFuZ2VEZXNrRm9yV2luZG93ICh0LCBTY3IuQ3VycmVudERlc2spOworPCAJ
ICAgIH0KKy0tLQorPiAJICAgIENoYW5nZURlc2tGb3JXaW5kb3cgKHQsIFNjci5DdXJyZW50
RGVzayk7CisxMTQ2LDExNDhjMTE3NCwxMTc1Cis8IAkgICAgeworPCAJICAgICAgTW92ZVJl
c2l6ZVBhZ2VyVmlldyAodCk7Cis8IAkgICAgfQorLS0tCis+IAkgICAgTW92ZVJlc2l6ZVBh
Z2VyVmlldyAodCk7Cis+IAorMTE1NGMxMTgxCis8IHZvaWQKKy0tLQorPiB2b2lkIAorMTE4
MiwxMTg1YzEyMDksMTIxMAorPCAJCVhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwIChkcHks
IHQtPlBhZ2VyVmlldywKKzwgCQkJCQkgICAgU2NyLmxpZ2h0X2dyYXlfcGl4bWFwKTsKKzwg
CSAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwIChkcHksIHQtPkljb25WaWV3LAor
PCAJCQkJCSAgU2NyLmxpZ2h0X2dyYXlfcGl4bWFwKTsKKy0tLQorPiAJCVhTZXRXaW5kb3dC
YWNrZ3JvdW5kUGl4bWFwIChkcHksIHQtPlBhZ2VyVmlldywgU2NyLmxpZ2h0X2dyYXlfcGl4
bWFwKTsKKz4gCSAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwIChkcHksIHQtPklj
b25WaWV3LCBTY3IubGlnaHRfZ3JheV9waXhtYXApOworMTIxMWMxMjM2Cis8IHZvaWQKKy0t
LQorPiB2b2lkIAorMTIxNmExMjQyCis+IAorMTIyMCwxMjIyYzEyNDYKKzwgCXsKKzwgCSAg
cmV0dXJuOworPCAJfQorLS0tCis+IAlyZXR1cm47CisxMjI4ZDEyNTEKKzwgCisxMjUzLDEy
NTRjMTI3NgorPCAKKzwgdm9pZAorLS0tCis+IHZvaWQgCisxMjY2ZDEyODcKKzwgCisxMjkx
LDEyOTJjMTMxMgorPCAKKzwgdm9pZAorLS0tCis+IHZvaWQgCisxMzEzYTEzMzQKKz4gCisx
MzE1LDEzMTdjMTMzNgorPCAJeworPCAJICBJY29uTW92ZVdpbmRvdyAoRXZlbnQsIHQpOwor
PCAJfQorLS0tCis+IAlJY29uTW92ZVdpbmRvdyAoRXZlbnQsIHQpOworMTMyMSwxMzIzZDEz
MzkKKzwgICBpZiAodCA9PSBOVUxMKQorPCAgICAgcmV0dXJuOworPCAKKzEzNDdkMTM2Mgor
PCAKKzEzNjQsMTM2NWMxMzc5Cis8IAkgIFhNb3ZlV2luZG93IChkcHksIHQtPlBhZ2VyVmll
dywgeCAtICh4MSksCis8IAkJICAgICAgIHkgLSAoeTEpKTsKKy0tLQorPiAJICBYTW92ZVdp
bmRvdyAoZHB5LCB0LT5QYWdlclZpZXcsIHggLSAoeDEpLCB5IC0gKHkxKSk7CisxMzcyLDEz
NzNjMTM4NgorPCAJICBYTW92ZVdpbmRvdyAoZHB5LCB0LT5QYWdlclZpZXcsIHggLSAoeDEp
LAorPCAJCSAgICAgICB5IC0gKHkxKSk7CistLS0KKz4gCSAgWE1vdmVXaW5kb3cgKGRweSwg
dC0+UGFnZXJWaWV3LCB4IC0gKHgxKSwgeSAtICh5MSkpOworMTM3NywxMzc5YzEzOTAKKzwg
CXsKKzwgCSAgSGFuZGxlRXhwb3NlIChFdmVudCk7Cis8IAl9CistLS0KKz4gCUhhbmRsZUV4
cG9zZSAoRXZlbnQpOworMTQ0MSwxNDQ0YzE0NTIsMTQ1MworPCAgICAgICB4ID0gKHgyIC0g
bjEpICoKKzwgCShTY3IuVnhNYXggKyBTY3IuTXlEaXNwbGF5V2lkdGgpIC8gKGRlc2tfdyAt
IG4pIC0gU2NyLlZ4OworPCAgICAgICB5ID0gKHkyIC0gbTEpICoKKzwgCShTY3IuVnlNYXgg
KyBTY3IuTXlEaXNwbGF5SGVpZ2h0KSAvIChkZXNrX2ggLSBtKSAtIFNjci5WeTsKKy0tLQor
PiAgICAgICB4ID0gKHgyIC0gbjEpICogKFNjci5WeE1heCArIFNjci5NeURpc3BsYXlXaWR0
aCkgLyAoZGVza193IC0gbikgLSBTY3IuVng7Cis+ICAgICAgIHkgPSAoeTIgLSBtMSkgKiAo
U2NyLlZ5TWF4ICsgU2NyLk15RGlzcGxheUhlaWdodCkgLyAoZGVza19oIC0gbSkgLSBTY3Iu
Vnk7CisxNDgyZDE0OTAKKzwgCisxNTA5LDE1MTNkMTUxNgorPCAKKzwgCis8IAorPCAKKzwg
CisxNTE2LDE1MTdjMTUxOSwxNTIwCis8ICAqICBQcm9jZWR1cmU6Cis8ICAqICAgICAgQVNF
cnJvckhhbmRsZXIgLSBkaXNwbGF5cyBpbmZvIG9uIGludGVybmFsIGVycm9ycworLS0tCis+
ICAqICAgUHJvY2VkdXJlOgorPiAgKiAgICAgICAgIEFTRXJyb3JIYW5kbGVyIC0gZGlzcGxh
eXMgaW5mbyBvbiBpbnRlcm5hbCBlcnJvcnMKKzE1MjBjMTUyMworPCBYRXJyb3JIYW5kbGVy
CistLS0KKz4gWEVycm9ySGFuZGxlciAKKzE1MjYsMTUyN2MxNTI5Cis8IAorPCB2b2lkCist
LS0KKz4gdm9pZCAKKzE1MzQsMTU0MWMxNTM2LDE1MzgKKzwgICBpZiAod2luZG93Rm9udC5m
b250ID09IE5VTEwpCis8ICAgICB7Cis8ICAgICAgIHJldHVybjsKKzwgICAgIH0KKzwgICBp
ZiAodC0+aWNvbl9uYW1lID09IE5VTEwpCis8ICAgICB7Cis8ICAgICAgIHJldHVybjsKKzwg
ICAgIH0KKy0tLQorPiAgIGlmICh0LT5pY29uX25hbWUgPT0gTlVMTCB8fCB3aW5kb3dGb250
LmZvbnQgPT0gTlVMTCkKKz4gICAgIHJldHVybjsKKz4gCisxNTQzLDE1NDVjMTU0MAorPCAg
ICAgeworPCAgICAgICB0Z2MgPSBGb2N1c0dDOworPCAgICAgfQorLS0tCis+ICAgICB0Z2Mg
PSBGb2N1c0dDOworMTU3MiwxNTc5YzE1NjcsMTU2OAorPCAgIGlmICh3aW5kb3dGb250LmZv
bnQgPT0gTlVMTCkKKzwgICAgIHsKKzwgICAgICAgcmV0dXJuOworPCAgICAgfQorPCAgIGlm
ICh0LT5pY29uX25hbWUgPT0gTlVMTCkKKzwgICAgIHsKKzwgICAgICAgcmV0dXJuOworPCAg
ICAgfQorLS0tCis+ICAgaWYgKHQtPmljb25fbmFtZSA9PSBOVUxMIHx8IHdpbmRvd0ZvbnQu
Zm9udCA9PSBOVUxMKQorPiAgICAgcmV0dXJuOworMTU4MiwxNTg0YzE1NzEKKzwgICAgIHsK
KzwgICAgICAgdGdjID0gRm9jdXNHQzsKKzwgICAgIH0KKy0tLQorPiAgICAgdGdjID0gRm9j
dXNHQzsKKzE2MDJjMTU4OQorPCB2b2lkCistLS0KKz4gdm9pZCAKKzE2MzksMTY0MWMxNjI2
Cis8IAorPCAJICBYTW92ZVdpbmRvdyAoZHB5LCB0LT5JY29uVmlldywgeCAtICh4MSksCis8
IAkJICAgICAgIHkgLSAoeTEpKTsKKy0tLQorPiAJICBYTW92ZVdpbmRvdyAoZHB5LCB0LT5J
Y29uVmlldywgeCAtICh4MSksIHkgLSAoeTEpKTsKKzE2NTYsMTY1OGMxNjQxCis8IAl7Cis8
IAkgIEhhbmRsZUV4cG9zZSAoRXZlbnQpOworPCAJfQorLS0tCis+IAlIYW5kbGVFeHBvc2Ug
KEV2ZW50KTsKKzE2NjdkMTY0OQorPCAKKzE2OTEsMTY5NGMxNjczLDE2NzQKKzwgICAgICAg
eCA9ICh4IC0gbjEpICoKKzwgCShTY3IuVnhNYXggKyBTY3IuTXlEaXNwbGF5V2lkdGgpIC8g
KGljb25fdyAtIG4pIC0gU2NyLlZ4OworPCAgICAgICB5ID0gKHkgLSBtMSkgKgorPCAJKFNj
ci5WeU1heCArIFNjci5NeURpc3BsYXlIZWlnaHQpIC8gKGljb25faCAtIG0pIC0gU2NyLlZ5
OworLS0tCis+ICAgICAgIHggPSAoeCAtIG4xKSAqIChTY3IuVnhNYXggKyBTY3IuTXlEaXNw
bGF5V2lkdGgpIC8gKGljb25fdyAtIG4pIC0gU2NyLlZ4OworPiAgICAgICB5ID0gKHkgLSBt
MSkgKiAoU2NyLlZ5TWF4ICsgU2NyLk15RGlzcGxheUhlaWdodCkgLyAoaWNvbl9oIC0gbSkg
LSBTY3IuVnk7CisxNjk2LDE2OTdjMTY3NgorPCAgICAgICBpZiAoKCh0LT5mbGFncyAmIElD
T05JRklFRCkgJiYgKFN0aWNreUljb25zKSkgfHwKKzwgCSAgKHQtPmZsYWdzICYgU1RJQ0tZ
KSkKKy0tLQorPiAgICAgICBpZiAoKCh0LT5mbGFncyAmIElDT05JRklFRCkgJiYgKFN0aWNr
eUljb25zKSkgfHwgKHQtPmZsYWdzICYgU1RJQ0tZKSkKKzE3MTcsMTcxOWMxNjk2LDE2OTcK
KzwgCXsKKzwgCSAgTW92ZVJlc2l6ZVBhZ2VyVmlldyAodCk7Cis8IAl9CistLS0KKz4gCU1v
dmVSZXNpemVQYWdlclZpZXcgKHQpOworPiAKKzE3MjdkMTcwNAorPCAKZGlmZiAtTiAtdSAt
ciBQYWdlcl9ub3hwbS94X3BhZ2VyX25veHBtLmMgUGFnZXJfbm94cG0uZGthL3hfcGFnZXJf
bm94cG0uYwotLS0gUGFnZXJfbm94cG0veF9wYWdlcl9ub3hwbS5jCU1vbiBTZXAgMTQgMDM6
NDc6MjMgMTk5OAorKysgUGFnZXJfbm94cG0uZGthL3hfcGFnZXJfbm94cG0uYwlUdWUgU2Vw
IDI5IDE2OjAzOjQ3IDE5OTgKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChD
KSAxOTk4IERvdWcgQWxjb3JuIDxhbGNvcm5kQGVhcnRobGluay5uZXQ+CiAgKiBDb3B5cmln
aHQgKEMpIDE5OTYgRGFuIFdlZWtzCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTQgUm9iIE5hdGlv
bgogICoKQEAgLTE4LDExICsxOSwyMSBAQAogICoKICAqLwogCisjZGVmaW5lIExPRzEoYSkK
KyNkZWZpbmUgTE9HMihhLGIpCisjZGVmaW5lIExPRzMoYSxiLGMpCisjZGVmaW5lIExPRzQo
YSxiLGMsZCkKKwogI2luY2x1ZGUgIi4uLy4uL2NvbmZpZ3VyZS5oIgorI2luY2x1ZGUgIi4u
Ly4uL2luY2x1ZGUvYWZ0ZXJzdGVwbGliLmgiCisjaW5jbHVkZSAiLi4vLi4vaW5jbHVkZS9h
ZnRlcnN0ZXAuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8
c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CiAKICNpbmNsdWRlIDxYMTEvWGxpYi5o
PgogI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgpAQCAtMzEsNyArNDIsMTcgQEAKICNpbmNsdWRl
IDxYMTEvSW50cmluc2ljLmg+CiAKICNpbmNsdWRlICJQYWdlcl9ub3hwbS5oIgotI2luY2x1
ZGUgIi4uLy4uL2luY2x1ZGUvYWZ0ZXJzdGVwLmgiCisKKyNpZmRlZiBJMThOCisjaWZkZWYg
X19TVERDX18KKyNkZWZpbmUgWFRleHRXaWR0aCh4LHkseikgICAgICAgICBYbWJUZXh0RXNj
YXBlbWVudCh4ICMjIHNldCx5LHopCisjZWxzZQorI2RlZmluZSBYVGV4dFdpZHRoKHgseSx6
KSAgICAgICAgIFhtYlRleHRFc2NhcGVtZW50KHgvKiovc2V0LHkseikKKyNlbmRpZgorI2Rl
ZmluZSBYRHJhd1N0cmluZyh0LHUsdix3LHgseSx6KSAgICAgIFhtYkRyYXdTdHJpbmcodCx1
LEZPTlRTRVQsdix3LHgseSx6KQorI2RlZmluZSBYRHJhd0ltYWdlU3RyaW5nKHQsdSx2LHcs
eCx5LHopIFhtYkRyYXdTdHJpbmcodCx1LEZPTlRTRVQsdix3LHgseSx6KQorI2VuZGlmCisK
IGV4dGVybiBTY3JlZW5JbmZvIFNjcjsKIGV4dGVybiBEaXNwbGF5ICpkcHk7CiAKQEAgLTQx
LDcgKzYyLDcgQEAKIGV4dGVybiBpbnQgd2luZG93X3csIHdpbmRvd19oLCB3aW5kb3dfeCwg
d2luZG93X3ksIHVzcG9zaXRpb24sIHVzZWxhYmVsOwogZXh0ZXJuIGludCBTdGFydEljb25p
YzsKIGV4dGVybiBpbnQgaWNvbl93LCBpY29uX2gsIGljb25feCwgaWNvbl95OwotWEZvbnRT
dHJ1Y3QgKmZvbnQsICp3aW5kb3dGb250OworTXlGb250IGZvbnQsIHdpbmRvd0ZvbnQ7CiAK
IEdDIE5vcm1hbEdDLCBIaWxpdGVHQywgcnZHQzsKIEdDIFN0ZEdDLCBGb2N1c0dDOwpAQCAt
NTQsMTEgKzc1LDE0IEBACiBleHRlcm4gY2hhciAqTXlOYW1lOwogCiBleHRlcm4gaW50IGRl
c2sxLCBkZXNrMiwgbmRlc2tzOworZXh0ZXJuIGludCBUaXRsZUFsaWduOwogZXh0ZXJuIGlu
dCBSb3dzLCBDb2x1bW5zOwogZXh0ZXJuIGludCBmZFsyXTsKIAogaW50IGRlc2tfdyA9IDA7
CiBpbnQgZGVza19oID0gMDsKK2ludCBzY3JfdyA9IDA7CitpbnQgc2NyX2ggPSAwOwogaW50
IGxhYmVsX2ggPSAwOwogCiBEZXNrSW5mbyAqRGVza3M7CkBAIC0xMDgsNyArMTMyLDcgQEAK
ICAgKE5vcnRoV2VzdEdyYXZpdHkpCQkvKiBncmF2aXR5ICovCiB9OwogCi12b2lkIAordm9p
ZAogaW5pdGlhbGl6ZV9wYWdlciAodm9pZCkKIHsKICAgWFRleHRQcm9wZXJ0eSBuYW1lOwpA
QCAtMTMxLDI2ICsxNTUsMTcgQEAKICAgbSA9IFNjci5WeU1heCAvIFNjci5NeURpc3BsYXlI
ZWlnaHQ7CiAKICAgLyogbG9hZCB0aGUgZm9udCAqLwotICBpZiAoKGZvbnQgPSBYTG9hZFF1
ZXJ5Rm9udCAoZHB5LCBmb250X3N0cmluZykpID09IE5VTEwpCi0gICAgewotICAgICAgaWYg
KChmb250ID0gWExvYWRRdWVyeUZvbnQgKGRweSwgImZpeGVkIikpID09IE5VTEwpCi0Jewot
CSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IE5vIGZvbnRzIGF2YWlsYWJsZVxuIiwgTXlOYW1l
KTsKLQkgIGV4aXQgKDEpOwotCX0KLSAgICB9OworICBsb2FkX2ZvbnQgKGZvbnRfc3RyaW5n
LCAmZm9udCk7CiAgIGlmICh1c2VsYWJlbCkKLSAgICBsYWJlbF9oID0gZm9udC0+YXNjZW50
ICsgZm9udC0+ZGVzY2VudCArIDI7CisgICAgbGFiZWxfaCA9IGZvbnQuaGVpZ2h0ICsgMjsK
ICAgZWxzZQogICAgIGxhYmVsX2ggPSAwOwogCiAKICAgaWYgKHNtYWxsRm9udCAhPSBOVUxM
KQotICAgIHsKLSAgICAgIHdpbmRvd0ZvbnQgPSBYTG9hZFF1ZXJ5Rm9udCAoZHB5LCBzbWFs
bEZvbnQpOwotICAgIH0KKyAgICBsb2FkX2ZvbnQgKHNtYWxsRm9udCwgJndpbmRvd0ZvbnQp
OwogICBlbHNlCi0gICAgd2luZG93Rm9udCA9IE5VTEw7CisgICAgd2luZG93Rm9udC5mb250
ID0gTlVMTDsKIAogICAvKiBMb2FkIHRoZSBjb2xvcnMgKi8KICAgZm9yZV9waXggPSBHZXRD
b2xvciAoUGFnZXJGb3JlKTsKQEAgLTM2Niw3ICszODEsNyBAQAogICBnY3YuZm9yZWdyb3Vu
ZCA9IGZvcmVfcGl4OwogICBnY3YuYmFja2dyb3VuZCA9IGJhY2tfcGl4OwogCi0gIGdjdi5m
b250ID0gZm9udC0+ZmlkOworICBnY3YuZm9udCA9IGZvbnQuZm9udC0+ZmlkOwogICBOb3Jt
YWxHQyA9IFhDcmVhdGVHQyAoZHB5LCBTY3IuUm9vdCwgZ2NtLCAmZ2N2KTsKIAogICBnY3Yu
Zm9yZWdyb3VuZCA9IGhpX3BpeDsKQEAgLTM4MywxMiArMzk4LDEyIEBACiAgICAgZ2N2LmZv
cmVncm91bmQgPSBmb3JlX3BpeDsKICAgcnZHQyA9IFhDcmVhdGVHQyAoZHB5LCBTY3IuUm9v
dCwgZ2NtLCAmZ2N2KTsKIAotICBpZiAod2luZG93Rm9udCAhPSBOVUxMKQorICBpZiAod2lu
ZG93Rm9udC5mb250ICE9IE5VTEwpCiAgICAgewogICAgICAgLyogQ3JlYXRlIEdDJ3MgZm9y
IGRvaW5nIHdpbmRvdyBsYWJlbHMgKi8KICAgICAgIGdjdi5mb3JlZ3JvdW5kID0gZm9jdXNf
Zm9yZV9waXg7CiAgICAgICBnY3YuYmFja2dyb3VuZCA9IGZvY3VzX3BpeDsKLSAgICAgIGdj
di5mb250ID0gd2luZG93Rm9udC0+ZmlkOworICAgICAgZ2N2LmZvbnQgPSB3aW5kb3dGb250
LmZvbnQtPmZpZDsKICAgICAgIFN0ZEdDID0gWENyZWF0ZUdDIChkcHksIFNjci5Sb290LCBn
Y20sICZnY3YpOwogCiAgICAgICBnY3YuZm9yZWdyb3VuZCA9IGZvY3VzX2ZvcmVfcGl4OwpA
QCAtNDA0LDcgKzQxOSw3IEBACiAgKiBMb2FkcyBhIHNpbmdsZSBjb2xvcgogICoKICAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwotUGl4ZWwgCitQaXhlbAogR2V0Q29sb3IgKGNoYXIgKm5h
bWUpCiB7CiAgIFhDb2xvciBjb2xvcjsKQEAgLTQyNCw3ICs0MzksNyBAQAogfQogCiAKLXZv
aWQgCit2b2lkCiBub2NvbG9yIChjaGFyICphLCBjaGFyICpiKQogewogICBmcHJpbnRmIChz
dGRlcnIsICIlczogY2FuJ3QgJXMgJXNcbiIsIE15TmFtZSwgYSwgYik7CkBAIC00MzUsNyAr
NDUwLDcgQEAKICAqIERlY2lkZSB3aGF0IHRvIGRvIGFib3V0IHJlY2VpdmVkIFggZXZlbnRz
CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi12b2lkIAordm9pZAogRGlzcGF0Y2hF
dmVudCAoWEV2ZW50ICogRXZlbnQpCiB7CiAgIGludCBpLCB4LCB5OwpAQCAtNDg4LDcgKzUw
Myw3IEBACiAgICAgICBicmVhazsKICAgICBjYXNlIEJ1dHRvblByZXNzOgogICAgICAgaWYg
KCgoRXZlbnQtPnhidXR0b24uYnV0dG9uID09IDIpIHx8Ci0JICAgKChFdmVudC0+eGJ1dHRv
bi5idXR0b24gPT0gMykgJiYKKwkgICAoKEV2ZW50LT54YnV0dG9uLmJ1dHRvbiA9PSAxKSAm
JgogCSAgICAoRXZlbnQtPnhidXR0b24uc3RhdGUgJiBNb2QxTWFzaykpKSAmJgogCSAgKEV2
ZW50LT54YnV0dG9uLnN1YndpbmRvdyAhPSBOb25lKSkKIAl7CkBAIC01NDcsNyArNTYyLDcg
QEAKICAgICB9CiB9CiAKLXZvaWQgCit2b2lkCiBIYW5kbGVFeHBvc2UgKFhFdmVudCAqIEV2
ZW50KQogewogICBpbnQgaTsKQEAgLTU4NCw3ICs1OTksNyBAQAogICogUmVzcG9uZCB0byBh
IGNoYW5nZSBpbiB3aW5kb3cgZ2VvbWV0cnkuCiAgKgogICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi12b2lkIAordm9pZAogUmVDb25maWd1cmUgKHZvaWQpCiB7CiAgIFdpbmRvdyByb290
OwpAQCAtNjA4LDYgKzYyMyw4IEBACiAgIHggPSAoZGVza193IC0gbikgKiBTY3IuVnggLyAo
U2NyLlZ4TWF4ICsgU2NyLk15RGlzcGxheVdpZHRoKSArIG4xOwogICB5ID0gKGRlc2tfaCAt
IG0pICogU2NyLlZ5IC8gKFNjci5WeU1heCArIFNjci5NeURpc3BsYXlIZWlnaHQpICsgbTE7
CiAKKyAgc2NyX3cgPSB3OworICBzY3JfaCA9IGg7CiAgIGZvciAoayA9IDA7IGsgPCBSb3dz
OyBrKyspCiAgICAgewogICAgICAgZm9yIChqID0gMDsgaiA8IENvbHVtbnM7IGorKykKQEAg
LTYyNiwxMSArNjQzLDkgQEAKIAkgICAgICBlbHNlCiAJCVhNb3ZlUmVzaXplV2luZG93IChk
cHksIERlc2tzW2ldLkNQYWdlcldpbiwgLTEwMDAsIC0xMDAsIHcsIGgpOwogCi0JICAgICAg
WENsZWFyQXJlYSAoZHB5LCBEZXNrc1tpXS53LCAwLCAwLCBkZXNrX3csCi0JCQkgIGRlc2tf
aCwgVHJ1ZSk7CisJICAgICAgWENsZWFyQXJlYSAoZHB5LCBEZXNrc1tpXS53LCAwLCAwLCBk
ZXNrX3csIGRlc2tfaCwgVHJ1ZSk7CiAJICAgICAgaWYgKHVzZWxhYmVsKQotCQlYQ2xlYXJB
cmVhIChkcHksIERlc2tzW2ldLnRpdGxlX3csIDAsIDAsIGRlc2tfdywKLQkJCSAgICBsYWJl
bF9oLCBUcnVlKTsKKwkJWENsZWFyQXJlYSAoZHB5LCBEZXNrc1tpXS50aXRsZV93LCAwLCAw
LCBkZXNrX3csIGxhYmVsX2gsIFRydWUpOwogCSAgICB9CiAJfQogICAgIH0KQEAgLTYzOCw3
ICs2NTMsNyBAQAogICBSZUNvbmZpZ3VyZUFsbCAoKTsKIH0KIAotdm9pZCAKK3ZvaWQKIE1v
dmVQYWdlICh2b2lkKQogewogICBpbnQgbjEsIG0xLCB4LCB5LCBuLCBtLCBpOwpAQCAtNjg4
LDcgKzcwMyw3IEBACiAgICAgfQogfQogCi12b2lkIAordm9pZAogUmVDb25maWd1cmVBbGwg
KHZvaWQpCiB7CiAgIFBhZ2VyV2luZG93ICp0OwpAQCAtNzAxLDcgKzcxNiw3IEBACiAgICAg
fQogfQogCi12b2lkIAordm9pZAogUmVDb25maWd1cmVJY29ucyAodm9pZCkKIHsKICAgUGFn
ZXJXaW5kb3cgKnQ7CkBAIC03NDAsNyArNzU1LDcgQEAKICAqIERyYXcgZ3JpZCBsaW5lcyBm
b3IgZGVzayAjaQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdm9pZCAKK3ZvaWQK
IERyYXdHcmlkIChpbnQgaSwgaW50IGVyYXNlKQogewogICBpbnQgeSwgeTEsIHkyLCB4LCB4
MSwgeDIsIGQsIGhvcl9vZmYsIHc7CkBAIC03ODEsMzMgKzc5Niw0MiBAQAogICBlbHNlCiAg
ICAgewogICAgICAgaWYgKHVzZWxhYmVsICYmIGVyYXNlKQotCVhDbGVhckFyZWEgKGRweSwg
RGVza3NbaV0udGl0bGVfdywKLQkJICAgIDAsIDAsIGRlc2tfdywgbGFiZWxfaCAtIDEsIEZh
bHNlKTsKKwlYQ2xlYXJBcmVhIChkcHksIERlc2tzW2ldLnRpdGxlX3csIDAsIDAsIGRlc2tf
dywgbGFiZWxfaCAtIDEsIEZhbHNlKTsKICAgICB9CiAKICAgZCA9IGRlc2sxICsgaTsKICAg
cHRyID0gRGVza3NbaV0ubGFiZWw7Ci0gIHcgPSBYVGV4dFdpZHRoIChmb250LCBwdHIsIHN0
cmxlbiAocHRyKSk7CisgIHcgPSBYVGV4dFdpZHRoIChmb250LmZvbnQsIHB0ciwgc3RybGVu
IChwdHIpKTsKICAgaWYgKHcgPiBkZXNrX3cpCiAgICAgewogICAgICAgc3ByaW50ZiAoc3Ry
LCAiJWQiLCBkKTsKICAgICAgIHB0ciA9IHN0cjsKLSAgICAgIHcgPSBYVGV4dFdpZHRoIChm
b250LCBwdHIsIHN0cmxlbiAocHRyKSk7CisgICAgICB3ID0gWFRleHRXaWR0aCAoZm9udC5m
b250LCBwdHIsIHN0cmxlbiAocHRyKSk7CiAgICAgfQorCiAgIGlmICgodyA8PSBkZXNrX3cp
ICYmICh1c2VsYWJlbCkpCiAgICAgeworI3VuZGVmIEZPTlRTRVQKKyNkZWZpbmUgRk9OVFNF
VCBmb250LmZvbnRzZXQKKwogICAgICAgaG9yX29mZiA9IChkZXNrX3cgLSB3KSAvIDI7Ci0g
ICAgICBpZiAoaSA9PSAoU2NyLkN1cnJlbnREZXNrIC0gZGVzazEpKQotCVhEcmF3U3RyaW5n
IChkcHksIERlc2tzW2ldLnRpdGxlX3csIHJ2R0MsIGhvcl9vZmYsIGZvbnQtPmFzY2VudCAr
IDEsCi0JCSAgICAgcHRyLCBzdHJsZW4gKHB0cikpOworICAgICAgaWYgKFRpdGxlQWxpZ24g
PiAwKQorCVhEcmF3U3RyaW5nIChkcHksIERlc2tzW2ldLnRpdGxlX3csCisJCSAgICAgKGkg
PT0gKFNjci5DdXJyZW50RGVzayAtIGRlc2sxKSkgPyBydkdDIDogTm9ybWFsR0MsCisJCSAg
ICAgVGl0bGVBbGlnbiwgZm9udC55ICsgMSwgcHRyLCBzdHJsZW4gKHB0cikpOworICAgICAg
ZWxzZSBpZiAoVGl0bGVBbGlnbiA9PSAwKQorCVhEcmF3U3RyaW5nIChkcHksIERlc2tzW2ld
LnRpdGxlX3csCisJCSAgICAgKGkgPT0gKFNjci5DdXJyZW50RGVzayAtIGRlc2sxKSkgPyBy
dkdDIDogTm9ybWFsR0MsCisJCSAgICAgaG9yX29mZiwgZm9udC55ICsgMSwgcHRyLCBzdHJs
ZW4gKHB0cikpOwogICAgICAgZWxzZQotCVhEcmF3U3RyaW5nIChkcHksIERlc2tzW2ldLnRp
dGxlX3csIE5vcm1hbEdDLCBob3Jfb2ZmLCBmb250LT5hc2NlbnQgKyAxLAotCQkgICAgIHB0
ciwgc3RybGVuIChwdHIpKTsKKwlYRHJhd1N0cmluZyAoZHB5LCBEZXNrc1tpXS50aXRsZV93
LAorCQkgICAgIChpID09IChTY3IuQ3VycmVudERlc2sgLSBkZXNrMSkpID8gcnZHQyA6IE5v
cm1hbEdDLAorCQkgICAgIGRlc2tfdyAtIHcgKyBUaXRsZUFsaWduLCBmb250LnkgKyAxLCBw
dHIsIHN0cmxlbiAocHRyKSk7CiAgICAgfQogfQogCiAKLXZvaWQgCit2b2lkCiBEcmF3SWNv
bkdyaWQgKGludCBlcmFzZSkKIHsKICAgaW50IHksIHkxLCB5MiwgeCwgeDEsIHgyLCB3LCBo
LCBuLCBtLCBuMSwgbTE7CkBAIC04NTMsNyArODc3LDcgQEAKIH0KIAogCi12b2lkIAordm9p
ZAogU3dpdGNoVG9EZXNrIChpbnQgRGVzaykKIHsKICAgY2hhciBjb21tYW5kWzI1Nl07CkBA
IC04NjQsNyArODg4LDcgQEAKIH0KIAogCi12b2lkIAordm9pZAogU3dpdGNoVG9EZXNrQW5k
UGFnZSAoaW50IERlc2ssIFhFdmVudCAqIEV2ZW50KQogewogICBjaGFyIGNvbW1hbmRbMjU2
XTsKQEAgLTg3OCwxNCArOTAyLDE3IEBACiAJICAgKGRlc2tfaCAqIFNjci5NeURpc3BsYXlI
ZWlnaHQpKTsKICAgU2VuZEluZm8gKGZkLCBjb21tYW5kLCAwKTsKIAotICBzcHJpbnRmIChj
b21tYW5kLCAiRGVzayAwICVkXG4iLCBEZXNrICsgZGVzazEpOworICBpZiAoU2NyLkN1cnJl
bnREZXNrID09IERlc2sgKyBkZXNrMSkJLyoganVzdCBjaGFuZ2luZyBwYWdlICovCisgICAg
c3ByaW50ZiAoY29tbWFuZCwgIkRlc2sgMCAlZFxuIiwgRGVzayArIGRlc2sxKTsKKyAgZWxz
ZQkJCQkvKiByZWFsbHkgY2hhbmdpbmcgZGVzayAqLworICAgIHNwcmludGYgKGNvbW1hbmQs
ICJEZXNrIDEwMDAwICVkXG4iLCBEZXNrICsgZGVzazEpOwogICBTZW5kSW5mbyAoZmQsIGNv
bW1hbmQsIDApOwogCiAjZW5kaWYKICAgV2FpdCA9IDE7CiB9CiAKLXZvaWQgCit2b2lkCiBJ
Y29uU3dpdGNoUGFnZSAoWEV2ZW50ICogRXZlbnQpCiB7CiAgIGNoYXIgY29tbWFuZFsyNTZd
OwpAQCAtOTAyLDcgKzkyOSw3IEBACiB9CiAKIAotdm9pZCAKK3ZvaWQKIEFkZE5ld1dpbmRv
dyAoUGFnZXJXaW5kb3cgKiB0KQogewogICB1bnNpZ25lZCBsb25nIHZhbHVlbWFzazsKQEAg
LTkzMCw2ICs5NTcsOSBAQAogICBhdHRyaWJ1dGVzLmJvcmRlcl9waXhlbCA9IGZvcmVfcGl4
OwogICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSAoRXhwb3N1cmVNYXNrKTsKIAorICAvKiBF
bnRlciBhbmQgTGVhdmUgZXZlbnRzIHRvIHBvcCB1cCBiYWxsb29uIHdpbmRvdyAqLworICBh
dHRyaWJ1dGVzLmV2ZW50X21hc2sgPSAoRXhwb3N1cmVNYXNrIHwgRW50ZXJXaW5kb3dNYXNr
IHwgTGVhdmVXaW5kb3dNYXNrKTsKKwogICBpZiAoKGkgPj0gMCkgJiYgKGkgPCBuZGVza3Mp
KQogICAgIHsKICAgICAgIHQtPlBhZ2VyVmlldyA9IFhDcmVhdGVXaW5kb3cgKGRweSwgRGVz
a3NbaV0udywgeCwgeSwgdywgaCwgMSwKQEAgLTkzNyw2ICs5NjcsNyBAQAogCQkJCSAgICBJ
bnB1dE91dHB1dCwgQ29weUZyb21QYXJlbnQsCiAJCQkJICAgIHZhbHVlbWFzaywgJmF0dHJp
YnV0ZXMpOwogCisgICAgICBiYWxsb29uX25ldyAodC0+UGFnZXJWaWV3KTsKICAgICAgIFhN
YXBSYWlzZWQgKGRweSwgdC0+UGFnZXJWaWV3KTsKICAgICB9CiAgIGVsc2UKQEAgLTk2NCw2
ICs5OTUsNyBAQAogCSAgICAgICBUcnVlLCBCdXR0b25QcmVzc01hc2sgfCBCdXR0b25SZWxl
YXNlTWFzayB8IEJ1dHRvbk1vdGlvbk1hc2ssCiAJCSAgIEdyYWJNb2RlQXN5bmMsIEdyYWJN
b2RlQXN5bmMsIE5vbmUsCiAJCSAgIE5vbmUpOworICAgICAgYmFsbG9vbl9uZXcgKHQtPklj
b25WaWV3KTsKICAgICAgIFhNYXBSYWlzZWQgKGRweSwgdC0+SWNvblZpZXcpOwogICAgIH0K
ICAgZWxzZQpAQCAtOTcyLDYgKzEwMDQsNyBAQAogCQkJCSAgIENvcHlGcm9tUGFyZW50LAog
CQkJCSAgIElucHV0T3V0cHV0LCBDb3B5RnJvbVBhcmVudCwKIAkJCQkgICB2YWx1ZW1hc2ss
ICZhdHRyaWJ1dGVzKTsKKyAgICAgIGJhbGxvb25fbmV3ICh0LT5JY29uVmlldyk7CiAgICAg
ICBYTWFwUmFpc2VkIChkcHksIHQtPkljb25WaWV3KTsKICAgICB9CiAgIEhpbGlnaHQgKHQs
IE9GRik7CkBAIC05NzksNyArMTAxMiw3IEBACiAKIAogCi12b2lkIAordm9pZAogQ2hhbmdl
RGVza0ZvcldpbmRvdyAoUGFnZXJXaW5kb3cgKiB0LCBsb25nIG5ld2Rlc2spCiB7CiAgIGlu
dCBpLCB4LCB5LCB3LCBoLCBuLCBtLCBuMSwgbTE7CkBAIC05ODksNyArMTAyMiw5IEBACiAg
IGlmICh0LT5QYWdlclZpZXcgPT0gTm9uZSkKICAgICB7CiAgICAgICB0LT5kZXNrID0gbmV3
ZGVzazsKKyAgICAgIGJhbGxvb25fZGVsZXRlIChiYWxsb29uX2ZpbmQgKHQtPkljb25WaWV3
KSk7CiAgICAgICBYRGVzdHJveVdpbmRvdyAoZHB5LCB0LT5JY29uVmlldyk7CisgICAgICB0
LT5JY29uVmlldyA9IE5vbmU7CiAgICAgICBBZGROZXdXaW5kb3cgKHQpOwogICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEwMTMsNiArMTA0OCw3IEBACiAgICAgfQogICBlbHNlCiAgICAg
eworICAgICAgYmFsbG9vbl9kZWxldGUgKGJhbGxvb25fZmluZCAodC0+UGFnZXJWaWV3KSk7
CiAgICAgICBYRGVzdHJveVdpbmRvdyAoZHB5LCB0LT5QYWdlclZpZXcpOwogICAgICAgdC0+
UGFnZXJWaWV3ID0gTm9uZTsKICAgICB9CkBAIC0xMDI2LDEzICsxMDYyLDE0IEBACiAgICAg
dyA9IDE7CiAgIGlmIChoIDwgMSkKICAgICBoID0gMTsKKwogICBpZiAoU2NyLkN1cnJlbnRE
ZXNrID09IHQtPmRlc2spCiAgICAgWE1vdmVSZXNpemVXaW5kb3cgKGRweSwgdC0+SWNvblZp
ZXcsIHgsIHksIHcsIGgpOwogICBlbHNlCiAgICAgWE1vdmVSZXNpemVXaW5kb3cgKGRweSwg
dC0+SWNvblZpZXcsIC0xMDAwLCAtMTAwMCwgdywgaCk7CiB9CiAKLXZvaWQgCit2b2lkCiBN
b3ZlUmVzaXplUGFnZXJWaWV3IChQYWdlcldpbmRvdyAqIHQpCiB7CiAgIGludCB4LCB5LCB3
LCBoLCBuLCBtLCBuMSwgbTE7CkBAIC0xMDUyLDExICsxMDg5LDE0IEBACiAgICAgdyA9IDE7
CiAgIGlmIChoIDwgMSkKICAgICBoID0gMTsKKwogICBpZiAodC0+UGFnZXJWaWV3ICE9IE5v
bmUpCiAgICAgWE1vdmVSZXNpemVXaW5kb3cgKGRweSwgdC0+UGFnZXJWaWV3LCB4LCB5LCB3
LCBoKTsKICAgZWxzZSBpZiAoKHQtPmRlc2sgPj0gZGVzazEpICYmICh0LT5kZXNrIDw9IGRl
c2syKSkKICAgICB7CisgICAgICBiYWxsb29uX2RlbGV0ZSAoYmFsbG9vbl9maW5kICh0LT5J
Y29uVmlldykpOwogICAgICAgWERlc3Ryb3lXaW5kb3cgKGRweSwgdC0+SWNvblZpZXcpOwor
ICAgICAgdC0+SWNvblZpZXcgPSBOb25lOwogICAgICAgQWRkTmV3V2luZG93ICh0KTsKICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDc5LDcgKzExMTksNyBAQAogfQogCiAKLXZvaWQg
Cit2b2lkCiBNb3ZlU3RpY2t5V2luZG93cyAodm9pZCkKIHsKICAgUGFnZXJXaW5kb3cgKnQ7
CkBAIC0xMDk3LDE0ICsxMTM3LDEzIEBACiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBNb3Zl
UmVzaXplUGFnZXJWaWV3ICh0KTsKLQogCSAgICB9CiAJfQogICAgICAgdCA9IHQtPm5leHQ7
CiAgICAgfQogfQogCi12b2lkIAordm9pZAogSGlsaWdodCAoUGFnZXJXaW5kb3cgKiB0LCBp
bnQgb24pCiB7CiAKQEAgLTExNjEsNyArMTIwMCw3IEBACiAgIExhYmVsSWNvbldpbmRvdyAo
dCk7CiB9CiAKLXZvaWQgCit2b2lkCiBTY3JvbGwgKGludCBEZXNrLCBpbnQgeCwgaW50IHkp
CiB7CiAjaWZuZGVmIE5PTl9WSVJUVUFMCkBAIC0xMjA0LDcgKzEyNDMsNyBAQAogfQogCiAK
LXZvaWQgCit2b2lkCiBJY29uU2Nyb2xsIChpbnQgeCwgaW50IHkpCiB7CiAjaWZuZGVmIE5P
Tl9WSVJUVUFMCkBAIC0xMjQyLDcgKzEyODEsNyBAQAogfQogCiAKLXZvaWQgCit2b2lkCiBN
b3ZlV2luZG93IChYRXZlbnQgKiBFdmVudCkKIHsKICAgY2hhciBjb21tYW5kWzEwMF07CkBA
IC0xMjY3LDggKzEzMDYsOCBAQAogICAgICAgaWYgKHQgIT0gTlVMTCkKIAl7CiAJICBJY29u
TW92ZVdpbmRvdyAoRXZlbnQsIHQpOwotCSAgcmV0dXJuOwogCX0KKyAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgaWYgKHQgPT0gTlVMTCkKQEAgLTEzNTQsNiArMTM5Myw3IEBACiAJWFJl
cGFyZW50V2luZG93IChkcHksIHQtPlBhZ2VyVmlldywgRGVza3NbTmV3RGVzayAtIGRlc2sx
XS53LCAwLCAwKTsKICAgICAgIGVsc2UKIAl7CisJICBiYWxsb29uX2RlbGV0ZSAoYmFsbG9v
bl9maW5kICh0LT5QYWdlclZpZXcpKTsKIAkgIFhEZXN0cm95V2luZG93IChkcHksIHQtPlBh
Z2VyVmlldyk7CiAJICB0LT5QYWdlclZpZXcgPSBOb25lOwogCX0KQEAgLTE0NjksMjEgKzE1
MDksMjEgQEAKICAqICAgICAgQVNFcnJvckhhbmRsZXIgLSBkaXNwbGF5cyBpbmZvIG9uIGlu
dGVybmFsIGVycm9ycwogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1YRXJyb3JIYW5kbGVy
IAorWEVycm9ySGFuZGxlcgogQVNFcnJvckhhbmRsZXIgKERpc3BsYXkgKiBkcHksIFhFcnJv
ckV2ZW50ICogZXZlbnQpCiB7CiAgIHJldHVybiAwOwogfQogCiAKLXZvaWQgCit2b2lkCiBM
YWJlbFdpbmRvdyAoUGFnZXJXaW5kb3cgKiB0KQogewogICBYR0NWYWx1ZXMgR2xvYmFsZ2N2
OwogICB1bnNpZ25lZCBsb25nIEdsb2JhbGdjbTsKICAgR0MgdGdjOwogCi0gIGlmICh3aW5k
b3dGb250ID09IE5VTEwpCisgIGlmICh3aW5kb3dGb250LmZvbnQgPT0gTlVMTCkKICAgICB7
CiAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTUwNiwyMCArMTU0NiwyMiBAQAogICBpZiAo
dC0+UGFnZXJWaWV3ICE9IE5vbmUpCiAgICAgewogICAgICAgWENsZWFyV2luZG93IChkcHks
IHQtPlBhZ2VyVmlldyk7Ci0gICAgICBYRHJhd0ltYWdlU3RyaW5nIChkcHksIHQtPlBhZ2Vy
VmlldywgdGdjLCAyLCB3aW5kb3dGb250LT5hc2NlbnQgKyAyLAorI3VuZGVmIEZPTlRTRVQK
KyNkZWZpbmUgRk9OVFNFVCB3aW5kb3dGb250LmZvbnRzZXQKKyAgICAgIFhEcmF3SW1hZ2VT
dHJpbmcgKGRweSwgdC0+UGFnZXJWaWV3LCB0Z2MsIDIsIHdpbmRvd0ZvbnQueSArIDIsCiAJ
CQl0LT5pY29uX25hbWUsIHN0cmxlbiAodC0+aWNvbl9uYW1lKSk7CiAgICAgfQogfQogCiAK
LXZvaWQgCit2b2lkCiBMYWJlbEljb25XaW5kb3cgKFBhZ2VyV2luZG93ICogdCkKIHsKICAg
WEdDVmFsdWVzIEdsb2JhbGdjdjsKICAgdW5zaWduZWQgbG9uZyBHbG9iYWxnY207CiAgIEdD
IHRnYzsKIAotICBpZiAod2luZG93Rm9udCA9PSBOVUxMKQorICBpZiAod2luZG93Rm9udC5m
b250ID09IE5VTEwpCiAgICAgewogICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1NDIsMTIg
KzE1ODQsMTQgQEAKIAogICAgIH0KICAgWENsZWFyV2luZG93IChkcHksIHQtPkljb25WaWV3
KTsKLSAgWERyYXdJbWFnZVN0cmluZyAoZHB5LCB0LT5JY29uVmlldywgdGdjLCAyLCB3aW5k
b3dGb250LT5hc2NlbnQgKyAyLAorI3VuZGVmIEZPTlRTRVQKKyNkZWZpbmUgRk9OVFNFVCB3
aW5kb3dGb250LmZvbnRzZXQKKyAgWERyYXdJbWFnZVN0cmluZyAoZHB5LCB0LT5JY29uVmll
dywgdGdjLCAyLCB3aW5kb3dGb250LnkgKyAyLAogCQkgICAgdC0+aWNvbl9uYW1lLCBzdHJs
ZW4gKHQtPmljb25fbmFtZSkpOwogCiB9CiAKLXZvaWQgCit2b2lkCiBJY29uTW92ZVdpbmRv
dyAoWEV2ZW50ICogRXZlbnQsIFBhZ2VyV2luZG93ICogdCkKIHsKICAgaW50IHgxLCB5MSwg
ZmluaXNoZWQgPSAwLCB3eCwgd3ksIG4sIHggPSAwLCB5ID0gMCwgeGkgPSAwLCB5aSA9IDA7
Cg==
--
(__) Doug Alcorn
oo ) (Fledgling XEmacs User)
|_/\ alcornd@earthlink.net
--Multipart_Tue_Sep_29_17:23:59_1998-1--