[COMMIT] Use parse_integer() in read_atom(); support bases with ratios like integers

Aidan Kehoe <[email protected]> Sat, 9 May 2015 00:42:11 +0100
Newsgroups gmane.emacs.xemacs.patches
Message-ID <[email protected]>
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg
SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u
ZXQ+CiMgRGF0ZSAxNDMxMTI4NDU3IC0zNjAwCiMgICAgICBTYXQgTWF5IDA5IDAwOjQwOjU3IDIw
MTUgKzAxMDAKIyBOb2RlIElEIDYxNzQ4NDhmM2U2Y2ZmNDRlYzMwNTU1ZDE5MzVjOWMyYTMyMGRk
ZmYKIyBQYXJlbnQgIDg3ZTI5ZDkzZTExYjY0OWNkZmE5NjZlNDQ0N2NlYmE0NTM3OWFmMGEKVXNl
IHBhcnNlX2ludGVnZXIoKSBpbiByZWFkX2F0b20oKTsgc3VwcG9ydCBiYXNlcyB3aXRoIHJhdGlv
cyBsaWtlIGludGVnZXJzCgpzcmMvQ2hhbmdlTG9nIGFkZGl0aW9uOgoKMjAxNS0wNS0wOCAgQWlk
YW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KCgkqIGRhdGEuYyAoaW5pdF9lcnJvcnNf
b25jZV9lYXJseSk6CglNb3ZlIHRoZSBRdW5zdXBwb3J0ZWRfdHlwZSBoZXJlIGZyb20gbnVtYmVy
cy5jLCBzbyBpdCdzIGF2YWlsYWJsZQoJd2hlbiB0aGUgbWFqb3JpdHkgb2Ygb3VyIHR5cGVzIGFy
ZSBub3Qgc3VwcG9ydGVkLgoJKiBnZW5lcmFsLXNsb3RzLmg6IEFkZCBpdCBoZXJlLCB0b28uCgkq
IG51bWJlci5jOiBSZW1vdmUgdGhlIGRlZmluaXRpb24gb2YgUXVuc3VwcG9ydGVkX3R5cGUgZnJv
bSBoZXJlLgoKCSogbHJlYWQuYyAocmVhZF9hdG9tKToKCUNoZWNrIGlmIHRoZSBmaXJzdCBjaGFy
YWN0ZXIgY291bGQgcmVmbGVjdCBhIHJhdGlvbmFsLCBpZiBzbywgY2FsbAoJcGFyc2VfaW50ZWdl
cigpLCBkb24ndCBjaGVjayB0aGUgc3ludGF4IG9mIHRoZSBvdGhlcgoJY2hhcmFjdGVycy4gVGhp
cyBhbGxvd3MgdXMgdG8gYWNjZXB0IHRoZSBub24tQVNDSUkgZGlnaXQKCWNoYXJhY3RlcnMgdG9v
LgoJSWYgdGhhdCB3b3JrZWQgcGFydGlhbGx5LCBidXQgbm90IGNvbXBsZXRlbHksIGFuZCB0aGUg
bmV4dCBjaGFyIGlzCglhIHNsYXNoLCB0cnkgdG8gcGFyc2UgYXMgYSByYXRpby4KCUlmIHRoYXQg
ZmFpbHMsIHRyeSBpc2Zsb2F0X3N0cmluZygpLCBidXQgb25seSBpZiB0aGUgZmlyc3QKCWNoYXJh
Y3RlciBjb3VsZCBwbGF1c2libHkgYmUgcGFydCBvZiBhIGZsb2F0LgoJT3RoZXJ3aXNlLCB0cmVh
dCBhcyBhIHN5bWJvbC4KCSogbHJlYWQuYyAocmVhZF9yYXRpb25hbCk6CglSZW5hbWUgZnJvbSBy
ZWFkX2ludGVnZXIuIEhhbmRsZSByYXRpb3Mgd2l0aCB0aGUgc2FtZSByYWRpeAoJc3BlY2lmaWNh
dGlvbiBhcyB3YXMgdXNlZCBmb3IgaW50ZWdlcnMuCgkqIGxyZWFkLmMgKHJlYWQxKToKCVJlbmFt
ZSByZWFkX2ludGVnZXIgaW4gdGhpcyBmdW5jdGlvbi4gU3VwcG9ydCB0aGUgQ29tbW9uIExpc3AK
CSNOTk5yTU1NIHN5bnRheCBmb3IgcGFyc2luZyBhIG51bWJlciBNTU0gb2YgYXJiaXRyYXJ5IHJh
ZGl4IE5OTi4KCm1hbi9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA1LTA4ICBBaWRhbiBLZWhv
ZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogbGlzcHJlZi9udW1iZXJzLnRleGkgKE51bWJl
cnMpOgoJRGVzY3JpYmUgdGhlIG5ld2x5LXN1cHBvcnRlZCBhcmJpdHJhcnktYmFzZSBzeW50YXgg
Zm9yIHJhdGlvbmFscwoJKGludGVnZXJzIGFuZCByYXRpb3MpLiBEZXNjcmliZSB0aGF0IHJhdGlv
cyBjYW4gdGFrZSB0aGUgc2FtZSBiYXNlCglzcGVjaWZpY2F0aW9uIGFzIGludGVnZXJzLCBzb21l
dGhpbmcgYWxzbyBuZXcuCgp0ZXN0cy9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA1LTA4ICBB
aWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogYXV0b21hdGVkL2xpc3AtcmVh
ZGVyLXRlc3RzLmVsOgoJQ2hlY2sgdGhlIGFyYml0cmFyeS1iYXNlIGludGVnZXIgcmVhZGVyIHN5
bnRheCBzdXBwb3J0LCBqdXN0CglhZGRlZC4gIENoZWNrIHRoZSByZWFkZXIgYmFzZSBzdXBwb3J0
IGZvciByYXRpb3MsIGp1c3QgYWRkZWQuCglDaGVjayB0aGUgbm9uLUFTQ0lJLWRpZ2l0IHN1cHBv
cnQgaW4gdGhlIHJlYWRlciwganVzdCBhZGRlZC4KCmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYx
NzQ4NDhmM2U2YyBtYW4vQ2hhbmdlTG9nCi0tLSBhL21hbi9DaGFuZ2VMb2cJRnJpIE1heSAwOCAy
MDowNDo0MiAyMDE1ICswMTAwCisrKyBiL21hbi9DaGFuZ2VMb2cJU2F0IE1heSAwOSAwMDo0MDo1
NyAyMDE1ICswMTAwCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTUtMDUtMDggIEFpZGFuIEtlaG9lICA8
a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisKKwkqIGxpc3ByZWYvbnVtYmVycy50ZXhpIChOdW1iZXJz
KToKKwlEZXNjcmliZSB0aGUgbmV3bHktc3VwcG9ydGVkIGFyYml0cmFyeS1iYXNlIHN5bnRheCBm
b3IgcmF0aW9uYWxzCisJKGludGVnZXJzIGFuZCByYXRpb3MpLiBEZXNjcmliZSB0aGF0IHJhdGlv
cyBjYW4gdGFrZSB0aGUgc2FtZSBiYXNlCisJc3BlY2lmaWNhdGlvbiBhcyBpbnRlZ2Vycywgc29t
ZXRoaW5nIGFsc28gbmV3LgorCiAyMDE1LTAzLTE1ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJo
YXNhcmQubmV0PgogCiAJKiBsaXNwcmVmL3N0cmluZ3MudGV4aSAoQ2hhcmFjdGVyIENvZGVzKToK
ZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIG1hbi9saXNwcmVmL251bWJlcnMu
dGV4aQotLS0gYS9tYW4vbGlzcHJlZi9udW1iZXJzLnRleGkJRnJpIE1heSAwOCAyMDowNDo0MiAy
MDE1ICswMTAwCisrKyBiL21hbi9saXNwcmVmL251bWJlcnMudGV4aQlTYXQgTWF5IDA5IDAwOjQw
OjU3IDIwMTUgKzAxMDAKQEAgLTE4LDEyICsxOCwxNiBAQAogb2YgWEVtYWNzKSBhcmUgd2hvbGUg
bnVtYmVycyBzdWNoIGFzIEBtaW51c3t9MywgMCwgI2IwMTExLCAjeEZFRUQsCiAjbzc0NC4gIFRo
ZWlyIHZhbHVlcyBhcmUgZXhhY3QsIGFuZCB0aGVpciByYW5nZSBpcyBsaW1pdGVkLiAgVGhlCiBu
dW1iZXIgcHJlZml4ZXMgYCNiJywgYCNvJywgYW5kIGAjeCcgYXJlIHN1cHBvcnRlZCB0byByZXBy
ZXNlbnQgbnVtYmVycwotaW4gYmluYXJ5LCBvY3RhbCwgYW5kIGhleGFkZWNpbWFsIG5vdGF0aW9u
IChvciByYWRpeCkuICBGbG9hdGluZyBwb2ludAotbnVtYmVycyBhcmUgbnVtYmVycyB3aXRoIGZy
YWN0aW9uYWwgcGFydHMsIHN1Y2ggYXMgQG1pbnVze300LjUsIDAuMCwgb3IKLTIuNzE4MjguICBU
aGV5IGNhbiBhbHNvIGJlIGV4cHJlc3NlZCBpbiBleHBvbmVudGlhbCBub3RhdGlvbjogMS41ZTIK
LWVxdWFscyAxNTA7IGluIHRoaXMgZXhhbXBsZSwgQHNhbXB7ZTJ9IHN0YW5kcyBmb3IgdGVuIHRv
IHRoZSBzZWNvbmQKLXBvd2VyLCBhbmQgaXMgbXVsdGlwbGllZCBieSAxLjUuICBGbG9hdGluZyBw
b2ludCB2YWx1ZXMgYXJlIG5vdCBleGFjdDsKLXRoZXkgaGF2ZSBhIGZpeGVkLCBsaW1pdGVkIGFt
b3VudCBvZiBwcmVjaXNpb24uCitpbiBiaW5hcnksIG9jdGFsLCBhbmQgaGV4YWRlY2ltYWwgbm90
YXRpb24gKG9yIHJhZGl4KS4gIFRoZSBzeW50YXgKK2AjTk5Ock5VTScgaXMgYWxzbyBzdXBwb3J0
ZWQsIGFsbG93aW5nIGEgcmFkaXggdG8gYmUgZXhwbGljaXRseQorc3BlY2lmaWVkOyBlLmcuIGAj
MjByMTUnIGRlbm90ZXMgdGhlIGZpeG51bSAyNSwgZXhwcmVzc2VkIGluIGJhc2UKK3R3ZW50eS4K
KworICBGbG9hdGluZyBwb2ludCBudW1iZXJzIGFyZSBudW1iZXJzIHdpdGggZnJhY3Rpb25hbCBw
YXJ0cywgc3VjaCBhcworQG1pbnVze300LjUsIDAuMCwgb3IgMi43MTgyOC4gIFRoZXkgY2FuIGFs
c28gYmUgZXhwcmVzc2VkIGluIGV4cG9uZW50aWFsCitub3RhdGlvbjogMS41ZTIgZXF1YWxzIDE1
MDsgaW4gdGhpcyBleGFtcGxlLCBAc2FtcHtlMn0gc3RhbmRzIGZvciB0ZW4gdG8KK3RoZSBzZWNv
bmQgcG93ZXIsIGFuZCBpcyBtdWx0aXBsaWVkIGJ5IDEuNS4gIEZsb2F0aW5nIHBvaW50IHZhbHVl
cyBhcmUKK25vdCBleGFjdDsgdGhleSBoYXZlIGEgZml4ZWQsIGxpbWl0ZWQgYW1vdW50IG9mIHBy
ZWNpc2lvbi4KIAogICBCaWdudW1zIGFyZSBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzLiAg
V2hlbiBzdXBwb3J0ZWQsIFhFbWFjcyBjYW4KIGhhbmRsZSBhbnkgaW50ZWdyYWwgY2FsY3VsYXRp
b25zIHlvdSBoYXZlIGVub3VnaCB2aXJ0dWFsIG1lbW9yeSB0bwpAQCAtMzMsOSArMzcsMTMgQEAK
IGF1dG9tYXRpY2FsbHkgY29udmVydHMgcmVzdWx0cyBvZiBjb21wdXRhdGlvbnMgZnJvbSBmaXhu
dW0gdG8gYmlnbnVtLAogYW5kIGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgc3RvcmFnZSByZXF1aXJl
ZCB0byByZXByZXNlbnQgdGhlIG51bWJlci4KIFRodXMgdXNlIG9mIGJpZ251bXMgYXJlIGVudGly
ZWx5IHRyYW5zcGFyZW50IHRvIHRoZSB1c2VyLCBleGNlcHQgZm9yIGEKLWZldyBzcGVjaWFsIGFw
cGxpY2F0aW9ucyB0aGF0IGV4cGVjdCBvdmVyZmxvd3MuICBSYXRpb3MgYXJlIHJhdGlvbmFsCi1u
dW1iZXJzIHdpdGggYXJiaXRyYXJ5IHByZWNpc2lvbi4gIFRoZXkgYXJlIG5vdGF0ZWQgaW4gdGhl
Ci11c3VhbCB3YXkgd2l0aCB0aGUgc29saWR1cywgZm9yIGV4YW1wbGUgNS8zIG9yIEBtaW51c3t9
MjIvNy4KK2ZldyBzcGVjaWFsIGFwcGxpY2F0aW9ucyB0aGF0IGV4cGVjdCBvdmVyZmxvd3MuCisK
KyAgUmF0aW9zIGFyZSByYXRpb25hbCBudW1iZXJzIHdpdGggYXJiaXRyYXJ5IHByZWNpc2lvbi4g
IFRoZXkgYXJlIG5vdGF0ZWQKK2luIHRoZSB1c3VhbCB3YXkgd2l0aCB0aGUgc29saWR1cywgZm9y
IGV4YW1wbGUgNS8zIG9yIEBtaW51c3t9MjIvNy4gIFRoZQorc3ludGF4IGZvciB1c2luZyBhIHBh
cnRpY3VsYXIgcmFkaXggaXMgdGhlIHNhbWUgYXMgdGhhdCBmb3IgaW50ZWdlcnMsCitzbywgZS5n
LiwgQHNhbXB7I3g4LzEwfSBpcyBlcXVpdmFsZW50IHRvIEBzYW1wezEvMn0gYW5kIEBzYW1weyMz
MHIxMC80fQordG8gQHNhbXB7MTUvMn0sIHJlc3BlY3RpdmVseS4KIAogICBCaWdmbG9hdHMgYXJl
IGZsb2F0aW5nIHBvaW50IG51bWJlcnMgd2l0aCBhcmJpdHJhcnkgcHJlY2lzaW9uLCB3aGljaAog
bWF5IGJlIHNwZWNpZmllZCBieSB0aGUgdXNlciAoYW5kIG1heSBiZSBkaWZmZXJlbnQgZm9yIGRp
ZmZlcmVudApkaWZmIC1yIDg3ZTI5ZDkzZTExYiAtciA2MTc0ODQ4ZjNlNmMgc3JjL0NoYW5nZUxv
ZwotLS0gYS9zcmMvQ2hhbmdlTG9nCUZyaSBNYXkgMDggMjA6MDQ6NDIgMjAxNSArMDEwMAorKysg
Yi9zcmMvQ2hhbmdlTG9nCVNhdCBNYXkgMDkgMDA6NDA6NTcgMjAxNSArMDEwMApAQCAtMSwzICsx
LDI4IEBACisyMDE1LTA1LTA4ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0Pgor
CisJKiBkYXRhLmMgKGluaXRfZXJyb3JzX29uY2VfZWFybHkpOgorCU1vdmUgdGhlIFF1bnN1cHBv
cnRlZF90eXBlIGhlcmUgZnJvbSBudW1iZXJzLmMsIHNvIGl0J3MgYXZhaWxhYmxlCisJd2hlbiB0
aGUgbWFqb3JpdHkgb2Ygb3VyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkLgorCSogZ2VuZXJhbC1z
bG90cy5oOiBBZGQgaXQgaGVyZSwgdG9vLgorCSogbnVtYmVyLmM6IFJlbW92ZSB0aGUgZGVmaW5p
dGlvbiBvZiBRdW5zdXBwb3J0ZWRfdHlwZSBmcm9tIGhlcmUuCisKKwkqIGxyZWFkLmMgKHJlYWRf
YXRvbSk6CisJQ2hlY2sgaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBjb3VsZCByZWZsZWN0IGEgcmF0
aW9uYWwsIGlmIHNvLCBjYWxsCisJcGFyc2VfaW50ZWdlcigpLCBkb24ndCBjaGVjayB0aGUgc3lu
dGF4IG9mIHRoZSBvdGhlcgorCWNoYXJhY3RlcnMuIFRoaXMgYWxsb3dzIHVzIHRvIGFjY2VwdCB0
aGUgbm9uLUFTQ0lJIGRpZ2l0CisJY2hhcmFjdGVycyB0b28uCisJSWYgdGhhdCB3b3JrZWQgcGFy
dGlhbGx5LCBidXQgbm90IGNvbXBsZXRlbHksIGFuZCB0aGUgbmV4dCBjaGFyIGlzCisJYSBzbGFz
aCwgdHJ5IHRvIHBhcnNlIGFzIGEgcmF0aW8uCisJSWYgdGhhdCBmYWlscywgdHJ5IGlzZmxvYXRf
c3RyaW5nKCksIGJ1dCBvbmx5IGlmIHRoZSBmaXJzdAorCWNoYXJhY3RlciBjb3VsZCBwbGF1c2li
bHkgYmUgcGFydCBvZiBhIGZsb2F0LgorCU90aGVyd2lzZSwgdHJlYXQgYXMgYSBzeW1ib2wuCisJ
KiBscmVhZC5jIChyZWFkX3JhdGlvbmFsKToKKwlSZW5hbWUgZnJvbSByZWFkX2ludGVnZXIuIEhh
bmRsZSByYXRpb3Mgd2l0aCB0aGUgc2FtZSByYWRpeAorCXNwZWNpZmljYXRpb24gYXMgd2FzIHVz
ZWQgZm9yIGludGVnZXJzLgorCSogbHJlYWQuYyAocmVhZDEpOgorCVJlbmFtZSByZWFkX2ludGVn
ZXIgaW4gdGhpcyBmdW5jdGlvbi4gU3VwcG9ydCB0aGUgQ29tbW9uIExpc3AKKwkjTk5Ock1NTSBz
eW50YXggZm9yIHBhcnNpbmcgYSBudW1iZXIgTU1NIG9mIGFyYml0cmFyeSByYWRpeCBOTk4uCisK
IDIwMTUtMDUtMDggIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CiAKIAkqIGdl
bmVyYWwtc2xvdHMuaDogU29ydCB0aGUgc3ltYm9scyBpbiB0aGlzIGZpbGUgdXNpbmcgdGhlIExp
c3AKZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIHNyYy9kYXRhLmMKLS0tIGEv
c3JjL2RhdGEuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIwMTUgKzAxMDAKKysrIGIvc3JjL2RhdGEu
YwlTYXQgTWF5IDA5IDAwOjQwOjU3IDIwMTUgKzAxMDAKQEAgLTE4MTQsMTAgKzE4MTQsOSBAQAog
CiAgb3ZlcmZsb3c6CiAjaWZuZGVmIEhBVkVfQklHTlVNCi0gIHJldHVybiBGc2lnbmFsIChRaW52
YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAgICAgICAgIGxpc3QzIChidWlsZF9tc2dfc3RyaW5n
ICgiSW50ZWdlciBjb25zdGFudCBvdmVyZmxvdyIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
IG1ha2Vfc3RyaW5nIChidWYsIGxlbiksIG1ha2VfZml4bnVtIChiYXNlKSkpOwotCisgIHJldHVy
biBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwKKyAgICAgICAgICAgICAgICAgIGxpc3QzIChi
dWlsZF9hc2NzdHJpbmcgKCJiaWdudW0iKSwgbWFrZV9zdHJpbmcgKGJ1ZiwgbGVuKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBtYWtlX2ZpeG51bSAoYmFzZSkpKTsKICNlbHNlIC8qIEhBVkVf
QklHTlVNICovCiAgIHJlc3VsdCA9IG1ha2VfYmlnbnVtX2VtYWNzX3VpbnQgKG9udW0pOwogCkBA
IC00MTAwLDYgKzQwOTksMTAgQEAKICAgREVGRVJST1IgKFFzaW5ndWxhcml0eV9lcnJvciwgIkFy
aXRobWV0aWMgc2luZ3VsYXJpdHkgZXJyb3IiLCBRZG9tYWluX2Vycm9yKTsKICAgREVGRVJST1Ig
KFFvdmVyZmxvd19lcnJvciwgIkFyaXRobWV0aWMgb3ZlcmZsb3cgZXJyb3IiLCBRZG9tYWluX2Vy
cm9yKTsKICAgREVGRVJST1IgKFF1bmRlcmZsb3dfZXJyb3IsICJBcml0aG1ldGljIHVuZGVyZmxv
dyBlcnJvciIsIFFkb21haW5fZXJyb3IpOworCisgIC8qIE1vdmVkIGhlcmUgZnJvbSBudW1iZXIu
Yywgc28gaXQncyBhdmFpbGFibGUgd2hlbiBub25lIG9mIHRoZSBuZXcgbnVtZXJpYworICAgICB0
eXBlcyBhcmUuICovCisgIERFRkVSUk9SX1NUQU5EQVJEIChRdW5zdXBwb3J0ZWRfdHlwZSwgUXdy
b25nX3R5cGVfYXJndW1lbnQpOwogfQogCiB2b2lkCmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYx
NzQ4NDhmM2U2YyBzcmMvZ2VuZXJhbC1zbG90cy5oCi0tLSBhL3NyYy9nZW5lcmFsLXNsb3RzLmgJ
RnJpIE1heSAwOCAyMDowNDo0MiAyMDE1ICswMTAwCisrKyBiL3NyYy9nZW5lcmFsLXNsb3RzLmgJ
U2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0zMDcsNiArMzA3LDcgQEAKIFNZTUJP
TCAoUXVuZW5jb2RhYmxlKTsKIFNZTUJPTCAoUXVuaWNvZGVfcmVnaXN0cmllcyk7CiBTWU1CT0wg
KFF1bmljb2RlX3R5cGUpOworU1lNQk9MIChRdW5zdXBwb3J0ZWRfdHlwZSk7CiBTWU1CT0wgKFF1
bmltcGxlbWVudGVkKTsKIFNZTUJPTCAoUXVzZXJfZGVmYXVsdCk7CiBTWU1CT0xfS0VZV09SRCAo
UV92YWx1ZSk7CmRpZmYgLXIgODdlMjlkOTNlMTFiIC1yIDYxNzQ4NDhmM2U2YyBzcmMvbHJlYWQu
YwotLS0gYS9zcmMvbHJlYWQuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIwMTUgKzAxMDAKKysrIGIv
c3JjL2xyZWFkLmMJU2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0xOTMwLDYyICsx
OTMwLDEyMyBAQAogICAvKiBUaGlzIGZ1bmN0aW9uIGNhbiBHQyAqLwogICBpbnQgc2F3X2FfYmFj
a3NsYXNoOwogICBCeXRlY291bnQgbGVuID0gcmVhZF9hdG9tXzAgKHJlYWRjaGFyZnVuLCBmaXJz
dGNoYXIsICZzYXdfYV9iYWNrc2xhc2gpOwotICBjaGFyICpyZWFkX3B0ciA9IChjaGFyICopCi0g
ICAgcmVzaXppbmdfYnVmZmVyX3N0cmVhbV9wdHIgKFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3Ry
ZWFtKSk7Ci0KLSAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KLSAgaWYgKCEgKHNhd19hX2JhY2tz
bGFzaCB8fCB1bmludGVybmVkX3N5bWJvbCkpCisgIElieXRlICpyZWFkX3B0cgorICAgID0gKEli
eXRlICopIHJlc2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVy
X3N0cmVhbSkpOworCisgIC8qIElzIGl0IGFuIGludGVnZXI/CisKKyAgICAgSWYgYSB0b2tlbiBo
YWQgYW55IGJhY2tzbGFzaGVzIGluIGl0LCBpdCBpcyBkaXNxdWFsaWZpZWQgZnJvbSBiZWluZyBh
bgorICAgICBpbnRlZ2VyIG9yIGEgZmxvYXQuICBUaGlzIG1lYW5zIHRoYXQgMTIzXDQ1NiBpcyBh
IHN5bWJvbCwgYXMgaXMgXDEyMworICAgICAod2hpY2ggaXMgdGhlIHdheSAoaW50ZXJuICIxMjMi
KSBwcmludHMpLiAgQWxzbywgaWYgdG9rZW4gd2FzIHByZWNlZGVkIGJ5CisgICAgICM6LCBpdCdz
IGFsd2F5cyBhIHN5bWJvbC4gKi8KKworICBpZiAoIShzYXdfYV9iYWNrc2xhc2ggfHwgdW5pbnRl
cm5lZF9zeW1ib2wpKQogICAgIHsKLSAgICAgIC8qIElmIGEgdG9rZW4gaGFkIGFueSBiYWNrc2xh
c2hlcyBpbiBpdCwgaXQgaXMgZGlzcXVhbGlmaWVkIGZyb20KLQkgYmVpbmcgYW4gaW50ZWdlciBv
ciBhIGZsb2F0LiAgVGhpcyBtZWFucyB0aGF0IDEyM1w0NTYgaXMgYQotCSBzeW1ib2wsIGFzIGlz
IFwxMjMgKHdoaWNoIGlzIHRoZSB3YXkgKGludGVybiAiMTIzIikgcHJpbnRzKS4KLQkgQWxzbywg
aWYgdG9rZW4gd2FzIHByZWNlZGVkIGJ5ICM6LCBpdCdzIGFsd2F5cyBhIHN5bWJvbC4KLSAgICAg
ICAqLwotICAgICAgY2hhciAqcCA9IHJlYWRfcHRyICsgbGVuOwotICAgICAgY2hhciAqcDEgPSBy
ZWFkX3B0cjsKLQotICAgICAgaWYgKCpwMSA9PSAnKycgfHwgKnAxID09ICctJykgcDErKzsKLSAg
ICAgIGlmIChwMSAhPSBwKQotCXsKLSAgICAgICAgICBpbnQgYzsKLQotICAgICAgICAgIHdoaWxl
IChwMSAhPSBwICYmIChjID0gKnAxKSA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICBw
MSsrOwotCSAgLyogSW50ZWdlcnMgY2FuIGhhdmUgdHJhaWxpbmcgZGVjaW1hbCBwb2ludHMuICAq
LwotCSAgaWYgKHAxID4gcmVhZF9wdHIgJiYgcDEgPCBwICYmICpwMSA9PSAnLicpCi0JICAgIHAx
Kys7Ci0gICAgICAgICAgaWYgKHAxID09IHApCisgICAgICBMaXNwX09iamVjdCBnb3QgPSBnZXRf
Y2hhcl90YWJsZSAoZmlyc3RjaGFyLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICBGaXhudW0g
Zml4dmFsID0gRklYTlVNUCAoZ290KSA/IFhSRUFMRklYTlVNIChnb3QpIDogLTE7CisgICAgICBC
b29saW50IHN0YXJ0c19saWtlX2FuX2ludF9wID0gKGZpeHZhbCA+IC0xICYmIGZpeHZhbCA8IDEw
KQorICAgICAgICB8fCBmaXJzdGNoYXIgPT0gJysnIHx8IGZpcnN0Y2hhciA9PSAnLSc7CisgICAg
ICBJYnl0ZSAqZW5kcCA9IE5VTEw7CisgICAgICBMaXNwX09iamVjdCBudW0gPSBRbmlsOworCisg
ICAgICAvKiBBdHRlbXB0IHRvIHBhcnNlIGFzIGFuIGludGVnZXIsIHdpdGggOkpVTkstQUxMT1dF
RCB0LiBEbyBhIGdyb3NzCisgICAgICAgICBwbGF1c2liaWxpdHkgY2hlY2sgKGFib3ZlKSBmaXJz
dCwgdGhvdWdoLCB3ZSdkIHByZWZlciBub3QgdG8gY2FsbAorICAgICAgICAgcGFyc2VfaW50ZWdl
cigpIG9uIGV2ZXJ5IHN5bWJvbCB3ZSBzZWUuICovCisgICAgICBpZiAoc3RhcnRzX2xpa2VfYW5f
aW50X3ApCisgICAgICAgIHsKKyAgICAgICAgICBudW0gPSBwYXJzZV9pbnRlZ2VyIChyZWFkX3B0
ciwgJmVuZHAsIGxlbiwgMTAsIDEsIFFuaWwpOworICAgICAgICB9CisKKyAgICAgIGlmIChJTlRF
R0VSUCAobnVtKSkKKyAgICAgICAgeworICAgICAgICAgIGlmIChlbmRwID09IChyZWFkX3B0ciAr
IGxlbikpCiAgICAgICAgICAgICB7Ci0JICAgICAgSWJ5dGUgKmJ1Zl9lbmQ7Ci0gICAgICAgICAg
ICAgIC8qIEl0IGlzIGFuIGludGVnZXIuICovCi0JICAgICAgaWYgKHAxWy0xXSA9PSAnLicpCisg
ICAgICAgICAgICAgIC8qIFdlIGNvbnN1bWVkIHRoZSB3aG9sZSBhdG9tLCBpdCdzIGRlZmluaXRl
bHkgYW4gaW50ZWdlci4gKi8KKyAgICAgICAgICAgICAgcmV0dXJuIG51bTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICBlbHNlIGlmICgnLicgPT0gaXRleHRfaWNoYXIgKGVuZHApKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAvKiBUcmFpbGluZyBkZWNpbWFsIHBvaW50IGlzIGFsbG93
ZWQgaW4gdGhlIExpc3AgcmVhZGVyLCB0aGlzIGlzCisgICAgICAgICAgICAgICAgIGFuIGludGVn
ZXIuICovCisgICAgICAgICAgICAgIElOQ19JQllURVBUUiAoZW5kcCk7CisgICAgICAgICAgICAg
IGlmIChlbmRwID09IChyZWFkX3B0ciArIGxlbikpCiAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgbGVuIC09IDE7CisgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtOwogICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfaW50ZWdlciAoKEli
eXRlICopIHJlYWRfcHRyLCAmYnVmX2VuZCwgbGVuLCAxMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsIFFuaWwpOwotCSAgICB9Ci0JfQotI2lmZGVmIEhBVkVfUkFUSU8K
LSAgICAgIGlmIChpc3JhdGlvX3N0cmluZyAocmVhZF9wdHIpKQotCXsKLQkgIC8qIEdNUCByYXRp
b19zZXRfc3RyaW5nIGhhcyBubyBlZmZlY3Qgd2l0aCBpbml0aWFsICsgc2lnbiAqLwotCSAgaWYg
KCpyZWFkX3B0ciA9PSAnKycpCi0JICAgIHJlYWRfcHRyKys7Ci0JICByYXRpb19zZXRfc3RyaW5n
IChzY3JhdGNoX3JhdGlvLCByZWFkX3B0ciwgMCk7Ci0JICBpZiAoYmlnbnVtX3NpZ24gKHJhdGlv
X2Rlbm9taW5hdG9yIChzY3JhdGNoX3JhdGlvKSkgIT0gMCkgewotCSAgICByYXRpb19jYW5vbmlj
YWxpemUgKHNjcmF0Y2hfcmF0aW8pOwotCSAgICByZXR1cm4gRmNhbm9uaWNhbGl6ZV9udW1iZXIg
KG1ha2VfcmF0aW9fcnQgKHNjcmF0Y2hfcmF0aW8pKTsKLQkgIH0KLQkgIHJldHVybiBGc2lnbmFs
IChRaW52YWxpZF9yZWFkX3N5bnRheCwKLQkJCSAgbGlzdDIgKGJ1aWxkX21zZ19zdHJpbmcKLQkJ
CQkgKCJJbnZhbGlkIHJhdGlvIGNvbnN0YW50IGluIHJlYWRlciIpLAotCQkJCSBtYWtlX3N0cmlu
ZyAoKElieXRlICopIHJlYWRfcHRyLCBsZW4pKSk7Ci0JfQotI2VuZGlmCi0gICAgICBpZiAoaXNm
bG9hdF9zdHJpbmcgKHJlYWRfcHRyKSkKLQlyZXR1cm4gbWFrZV9mbG9hdCAoYXRvZiAocmVhZF9w
dHIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmICgnLycgPT0gaXRleHRfaWNo
YXIgKGVuZHApKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBNYXliZSBpdCdzIGEg
cmF0aW8/ICovCisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGRlbm9tID0gUW5pbDsKKworICAg
ICAgICAgICAgICBJTkNfSUJZVEVQVFIgKGVuZHApOworCisgICAgICAgICAgICAgIGlmIChlbmRw
IDwgKHJlYWRfcHRyICsgbGVuKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICBJY2hhciBjYyA9IGl0ZXh0X2ljaGFyIChlbmRwKTsKKyAgICAgICAgICAgICAgICAgIC8qIE5v
IGxlYWRpbmcgc2lnbiBhbGxvd2VkIGluIHRoZSBkZW5vbWluYXRvciwgdGhhdCB3b3VsZAorICAg
ICAgICAgICAgICAgICAgICAgbWFrZSBpdCBhIHN5bWJvbCAoYWNjb3JkaW5nIHRvIENvbW1vbiBM
aXNwLCBvZiBjb3Vyc2UpLiovCisgICAgICAgICAgICAgICAgICBpZiAoY2MgIT0gJysnICYmIGNj
ICE9ICctJykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGRl
bm9tID0gcGFyc2VfaW50ZWdlciAoZW5kcCwgJmVuZHAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsZW4gLSAoZW5kcCAtIHJlYWRfcHRyKSwgMTAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBRbmlsKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAo
SU5URUdFUlAgKGRlbm9tKSAmJiBlbmRwID09IChyZWFkX3B0ciArIGxlbikpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgaWYgKFpFUk9QIChkZW5vbSkpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBGc2lnbmFsIChRaW52YWxpZF9yZWFk
X3N5bnRheCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0MiAoYnVpbGRfbXNn
X3N0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkludmFsaWQg
cmF0aW8gY29uc3RhbnQgaW4gcmVhZGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1ha2Vfc3RyaW5nIChyZWFkX3B0ciwgbGVuKSkpOworICAgICAgICAgICAgICAg
ICAgICB9CisjaWZuZGVmIEhBVkVfUkFUSU8KKyAgICAgICAgICAgICAgICAgIC8qIFN1cHBvcnQg
YSBjb3VwbGUgb2YgdHJpdmlhbCByYXRpb3MgaW4gdGhlIHJlYWRlciB0byBhbGxvdworICAgICAg
ICAgICAgICAgICAgICAgcGVvcGxlIHRvIHRlc3QgcmF0aW8gc3ludGF4OiAqLworICAgICAgICAg
ICAgICAgICAgaWYgKEVRIChkZW5vbSwgbWFrZV9maXhudW0gKDEpKSkKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW07CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGlmICghTklMUCAoRmVxdWFsIChudW0sIGRlbm9t
KSkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZV9maXhudW0gKDEpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgIHJldHVybiBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaXN0MyAoYnVpbGRfYXNjc3RyaW5nICgicmF0aW8iKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLCBkZW5vbSkpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvbW90ZV9hcmdzICgmbnVtLCAmZGVub20pKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRklYTlVNX1Q6
CisgICAgICAgICAgICAgICAgICAgICAgbnVtID0gbWFrZV9yYXRpbyAoWFJFQUxGSVhOVU0gKG51
bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFJFQUxGSVhOVU0g
KGRlbm9tKSk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVt
YmVyIChudW0pOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIEJJR05VTV9UOgorICAgICAgICAgICAgICAgICAgICAgIG51bSA9IG1ha2VfcmF0
aW9fYmcgKFhCSUdOVU1fREFUQSAobnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBYQklHTlVNX0RBVEEgKGRlbm9tKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVtYmVyIChudW0pOworICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydCAoMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyNlbmRpZiAvKiBIQVZF
X1JBVElPICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAvKiBPdGhlcndpc2Us
IG5vdCBhIHJhdGlvIG9yIGludGVnZXIsIGRlc3BpdGUgdGhhdCB0aGUgcGFydGlhbAorICAgICAg
ICAgICAgICAgICBwYXJzZSBtYXkgaGF2ZSBzdWNjZWVkZWQuIFRoZSB0cmFpbGluZyBqdW5rIGRp
c3F1YWxpZmllcworICAgICAgICAgICAgICAgICBpdC4gKi8KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICBpZiAoKHN0YXJ0c19saWtlX2FuX2ludF9wIHx8ICcuJyA9PSBmaXJzdGNo
YXIpCisgICAgICAgICAgJiYgaXNmbG9hdF9zdHJpbmcgKChjaGFyICopIHJlYWRfcHRyKSkKKyAg
ICAgICAgeworICAgICAgICAgIHJldHVybiBtYWtlX2Zsb2F0IChhdG9mICgoY2hhciAqKSByZWFk
X3B0cikpOworICAgICAgICB9CiAgICAgfQogCiAgIHsKQEAgLTIwMDIsMTUgKzIwNjMsNzcgQEAK
IH0KIAogc3RhdGljIExpc3BfT2JqZWN0Ci1yZWFkX2ludGVnZXIgKExpc3BfT2JqZWN0IHJlYWRj
aGFyZnVuLCBpbnQgYmFzZSkKK3JlYWRfcmF0aW9uYWwgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVu
LCBGaXhudW0gYmFzZSkKIHsKICAgLyogVGhpcyBmdW5jdGlvbiBjYW4gR0MgKi8KICAgaW50IHNh
d19hX2JhY2tzbGFzaDsKLSAgSWJ5dGUgKmJ1Zl9lbmQ7CisgIElieXRlICpidWZfZW5kLCAqYnVm
X3B0ciwgKnNsYXNoOwogICBCeXRlY291bnQgbGVuID0gcmVhZF9hdG9tXzAgKHJlYWRjaGFyZnVu
LCAtMSwgJnNhd19hX2JhY2tzbGFzaCk7Ci0gIHJldHVybiAocGFyc2VfaW50ZWdlcgotCSAgKHJl
c2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkp
LAotICAgICAgICAgICAmYnVmX2VuZCwgbGVuLCBiYXNlLCAwLCBRbmlsKSk7CisgIExpc3BfT2Jq
ZWN0IG51bSA9IFFuaWwsIGRlbm9tID0gUXplcm87CisKKyAgYnVmX3B0ciA9IHJlc2l6aW5nX2J1
ZmZlcl9zdHJlYW1fcHRyIChYTFNUUkVBTSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpOworCisgIGlm
ICgoc2xhc2ggPSBtZW1jaHIgKGJ1Zl9wdHIsICcvJywgbGVuKSkgPT0gTlVMTCkKKyAgICB7Cisg
ICAgICAvKiBDYW4ndCBiZSBhIHJhdGlvLCBwYXJzZSBhcyBhcyBhbiBpbnRlZ2VyLiAqLyAKKyAg
ICAgIHJldHVybiBwYXJzZV9pbnRlZ2VyIChidWZfcHRyLCAmYnVmX2VuZCwgbGVuLCBiYXNlLCAw
LCBRbmlsKTsKKyAgICB9CisKKyAgLyogTm8gbmVlZCB0byBjYWxsIGlzcmF0aW9fc3RyaW5nLCB0
aGUgZGV0YWlsZWQgcGFyc2luZyAoYW5kIGVycm9yaW5nLCBhcworICAgICBuZWNlc3NhcnkpIHdp
bGwgYmUgZG9uZSBieSBwYXJzZV9pbnRlZ2VyLiAqLworICBudW0gPSBwYXJzZV9pbnRlZ2VyIChi
dWZfcHRyLCAmYnVmX2VuZCwgc2xhc2ggLSBidWZfcHRyLCBiYXNlLCAwLCBRbmlsKTsKKworICBJ
TkNfSUJZVEVQVFIgKHNsYXNoKTsKKyAgaWYgKHNsYXNoIDwgKGJ1Zl9wdHIgKyBsZW4pKQorICAg
IHsKKyAgICAgIEljaGFyIGNjID0gaXRleHRfaWNoYXIgKHNsYXNoKTsKKyAgICAgIGlmIChjYyAh
PSAnKycgJiYgY2MgIT0gJy0nKQorICAgICAgICB7CisgICAgICAgICAgZGVub20gPSBwYXJzZV9p
bnRlZ2VyIChzbGFzaCwgJmJ1Zl9lbmQsIGxlbiAtIChzbGFzaCAtIGJ1Zl9wdHIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSwgMCwgUW5pbCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgaWYgKFpFUk9QIChkZW5vbSkpCisgICAgeworICAgICAgLyogVGhlIGRlbm9taW5h
dG9yIHdhcyB6ZXJvLCBvciBpdCBoYWQgYSBzaWduIHNwZWNpZmllZDsgdGhlc2UgYXJlCisgICAg
ICAgICBpbnZhbGlkIHJhdGlvcywgZm9yIHNsaWdodGx5IGRpZmZlcmVudCByZWFzb25zLiAqLwor
ICAgICAgRnNpZ25hbCAoUWludmFsaWRfcmVhZF9zeW50YXgsCisgICAgICAgICAgICAgICBsaXN0
MiAoYnVpbGRfbXNnX3N0cmluZyAoIkludmFsaWQgcmF0aW8gY29uc3RhbnQgaW4gcmVhZGVyIiks
CisgICAgICAgICAgICAgICAgICAgICAgbWFrZV9zdHJpbmcgKGJ1Zl9wdHIsIGxlbikpKTsKKyAg
ICB9CisKKyNpZm5kZWYgSEFWRV9SQVRJTworICAvKiBTdXBwb3J0IGEgY291cGxlIG9mIHRyaXZp
YWwgcmF0aW9zIGluIHRoZSByZWFkZXIgdG8gYWxsb3cgcGVvcGxlIHRvIHRlc3QKKyAgICAgcmF0
aW8gc3ludGF4OiAqLworICBpZiAoRVEgKGRlbm9tLCBtYWtlX2ZpeG51bSAoMSkpKQorICAgIHsK
KyAgICAgIHJldHVybiBudW07CisgICAgfQorICBpZiAoIU5JTFAgKEZlcXVhbCAobnVtLCBkZW5v
bSkpKQorICAgIHsKKyAgICAgIHJldHVybiBtYWtlX2ZpeG51bSAoMSk7CisgICAgfQorCisgIHJl
dHVybiBGc2lnbmFsIChRdW5zdXBwb3J0ZWRfdHlwZSwgbGlzdDMgKGJ1aWxkX2FzY3N0cmluZyAo
InJhdGlvIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bSwgZGVub20pKTsKKyNlbHNlCisgIHN3aXRjaCAocHJvbW90ZV9hcmdzICgmbnVtLCAmZGVub20p
KQorICAgIHsKKyAgICBjYXNlIEZJWE5VTV9UOgorICAgICAgbnVtID0gbWFrZV9yYXRpbyAoWFJF
QUxGSVhOVU0gKG51bSksIFhSRUFMRklYTlVNIChkZW5vbSkpOworICAgICAgcmV0dXJuIEZjYW5v
bmljYWxpemVfbnVtYmVyIChudW0pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBCSUdOVU1fVDoK
KyAgICAgIG51bSA9IG1ha2VfcmF0aW9fYmcgKFhCSUdOVU1fREFUQSAobnVtKSwgWEJJR05VTV9E
QVRBIChkZW5vbSkpOworICAgICAgcmV0dXJuIEZjYW5vbmljYWxpemVfbnVtYmVyIChudW0pOwor
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGFzc2VydCAoMCk7IC8qIHByb21vdGVf
YXJncygpIHdpdGggdHdvIGludGVnZXJzIHdvbid0IGdpdmUgdXMgYW55dGhpbmcKKyAgICAgICAg
ICAgICAgICAgICAgIGJ1dCBmaXhudW1zIG9yIGJpZ251bXMuICovCisgICAgICByZXR1cm4gUW5p
bDsKKyAgICB9CisjZW5kaWYKIH0KIAogc3RhdGljIExpc3BfT2JqZWN0CkBAIC0yNTY5LDExICsy
NjkyLDExIEBACiAgICAgICAgICAgICAvKiBiaXQgdmVjdG9ycyAqLwogCSAgY2FzZSAnKic6IHJl
dHVybiByZWFkX2JpdF92ZWN0b3IgKHJlYWRjaGFyZnVuKTsKICAgICAgICAgICAgIC8qICNvMTAg
PT4gOCAtLSBvY3RhbCBjb25zdGFudCBzeW50YXggKi8KLQkgIGNhc2UgJ28nOiBjYXNlICdPJzog
cmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4sIDgpOworCSAgY2FzZSAnbyc6IGNhc2Ug
J08nOiByZXR1cm4gcmVhZF9yYXRpb25hbCAocmVhZGNoYXJmdW4sIDgpOwogICAgICAgICAgICAg
LyogI3hkZWFkID0+IDU3MDA1IC0tIGhleCBjb25zdGFudCBzeW50YXggKi8KLQkgIGNhc2UgJ3gn
OiBjYXNlICdYJzogcmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4sIDE2KTsKKwkgIGNh
c2UgJ3gnOiBjYXNlICdYJzogcmV0dXJuIHJlYWRfcmF0aW9uYWwgKHJlYWRjaGFyZnVuLCAxNik7
CiAgICAgICAgICAgICAvKiAjYjAxMCA9PiAyIC0tIGJpbmFyeSBjb25zdGFudCBzeW50YXggKi8K
LQkgIGNhc2UgJ2InOiBjYXNlICdCJzogcmV0dXJuIHJlYWRfaW50ZWdlciAocmVhZGNoYXJmdW4s
IDIpOworCSAgY2FzZSAnYic6IGNhc2UgJ0InOiByZXR1cm4gcmVhZF9yYXRpb25hbCAocmVhZGNo
YXJmdW4sIDIpOwogCSAgICAvKiAjciJyYXdcc3RyaW5ndCIgLS0gcmF3IHN0cmluZyBzeW50YXgg
Ki8KIAkgIGNhc2UgJ3InOiByZXR1cm4gcmVhZF9yYXdfc3RyaW5nKHJlYWRjaGFyZnVuKTsKICAg
ICAgICAgICAgIC8qICNzKGZvb2JhciBrZXkxIHZhbDEga2V5MiB2YWwyKSAtLSBzdHJ1Y3R1cmUg
c3ludGF4ICovCkBAIC0yNjA2LDMyICsyNzI5LDQ0IEBACiAjZW5kaWYKIAkgIGNhc2UgJzAnOiBj
YXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKIAkgIGNhc2UgJzUnOiBjYXNl
ICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKLQkgICAgLyogUmVhZGVyIGZvcm1z
IHRoYXQgY2FuIHJldXNlIHByZXZpb3VzbHkgcmVhZCBvYmplY3RzLiAgKi8KKyAgICAgICAgICBo
YXNoX2RpZ2l0X3N5bnRheDoKKwkgICAgLyogUmVhZGVyIGZvcm1zIHRoYXQgY2FuIHJldXNlIHBy
ZXZpb3VzbHkgcmVhZCBvYmplY3RzLCBvciB0aGUKKyAgICAgICAgICAgICAgIENvbW1vbiBMaXNw
IHN5bnRheCBmb3IgYSByYXRpb25hbCBvZiBhcmJpdHJhcnkgYmFzZS4gICovCiAJICAgIHsKLQkg
ICAgICBMaXNwX09iamVjdCBwYXJzZWQsIGZvdW5kOworICAgICAgICAgICAgICBMaXNwX09iamVj
dCBnb3QgPSBnZXRfY2hhcl90YWJsZSAoYywgVmRpZ2l0X2ZpeG51bV9tYXApOworICAgICAgICAg
ICAgICBGaXhudW0gZml4dmFsID0gRklYTlVNUCAoZ290KSA/IFhSRUFMRklYTlVNIChnb3QpIDog
LTE7CisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IHBhcnNlZCwgZm91bmQ7CiAJICAgICAgSWJ5
dGUgKmJ1Zl9lbmQ7CiAKIAkgICAgICBMc3RyZWFtX3Jld2luZCAoWExTVFJFQU0gKFZyZWFkX2J1
ZmZlcl9zdHJlYW0pKTsKIAotCSAgICAgIC8qIFVzaW5nIHJlYWRfaW50ZWdlcigpIGhlcmUgaXMg
aW1wb3NzaWJsZSwgYmVjYXVzZSBpdAorCSAgICAgIC8qIFVzaW5nIHJlYWRfcmF0aW9uYWwoKSBo
ZXJlIGlzIGltcG9zc2libGUsIGJlY2F1c2UgaXQKICAgICAgICAgICAgICAgICAgY2hva2VzIG9u
IGA9Jy4gKi8KLQkgICAgICB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisJICAgICAgd2hp
bGUgKGZpeHZhbCA+PSAwICYmIGZpeHZhbCA8PSA5KQogCQl7CiAJCSAgTHN0cmVhbV9wdXRfaWNo
YXIgKFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3RyZWFtKSwgYyk7CiAJCSAgUVVJVDsKIAkJICBj
ID0gcmVhZGNoYXIgKHJlYWRjaGFyZnVuKTsKKyAgICAgICAgICAgICAgICAgIGdvdCA9IGdldF9j
aGFyX3RhYmxlIChjLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICAgICAgICAgICAgICBmaXh2
YWwgPSBGSVhOVU1QIChnb3QpID8gWFJFQUxGSVhOVU0gKGdvdCkgOiAtMTsKIAkJfQogCi0JICAg
ICAgLyogYmxhc3RlZCB0ZXJtaW5hdGluZyAwICovCi0JICAgICAgTHN0cmVhbV9wdXRfaWNoYXIg
KFhMU1RSRUFNIChWcmVhZF9idWZmZXJfc3RyZWFtKSwgMCk7CiAJICAgICAgTHN0cmVhbV9mbHVz
aCAoWExTVFJFQU0gKFZyZWFkX2J1ZmZlcl9zdHJlYW0pKTsKIAogCSAgICAgIHBhcnNlZAogCQk9
IHBhcnNlX2ludGVnZXIgKHJlc2l6aW5nX2J1ZmZlcl9zdHJlYW1fcHRyCiAJCQkJIChYTFNUUkVB
TSAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpLCAmYnVmX2VuZCwKIAkJCQkgTHN0cmVhbV9ieXRlX2Nv
dW50IChYTFNUUkVBTQotCQkJCQkJICAgICAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpCi0JCQkJIC0g
MSwgMTAsIDAsIFFuaWwpOworCQkJCQkJICAgICAoVnJlYWRfYnVmZmVyX3N0cmVhbSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIDAsIFFuaWwpOworCisgICAgICAgICAg
ICAgIGlmICgncicgPT0gYyB8fCAnUicgPT0gYykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAvKiBDb21tb24gTGlzcCBzeW50YXggdG8gc3BlY2lmeSBhbiBpbnRlZ2VyIG9m
IGFyYml0cmFyeQorICAgICAgICAgICAgICAgICAgICAgYmFzZS4gKi8KKyAgICAgICAgICAgICAg
ICAgIENIRUNLX0ZJWE5VTSAocGFyc2VkKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiByZWFk
X3JhdGlvbmFsIChyZWFkY2hhcmZ1biwgWEZJWE5VTSAocGFyc2VkKSk7CisgICAgICAgICAgICAg
ICAgfQogCiAJICAgICAgZm91bmQgPSBhc3NvY19ub19xdWl0IChwYXJzZWQsIFZyZWFkX29iamVj
dHMpOwogCSAgICAgIGlmIChjID09ICc9JykKQEAgLTI2ODEsNiArMjgxNiwxNCBAQAogCSAgICB9
CiAJICBkZWZhdWx0OgogCSAgICB7CisgICAgICAgICAgICAgIExpc3BfT2JqZWN0IGdvdCA9IGdl
dF9jaGFyX3RhYmxlIChjLCBWZGlnaXRfZml4bnVtX21hcCk7CisgICAgICAgICAgICAgIEZpeG51
bSBmaXh2YWwgPSBGSVhOVU1QIChnb3QpID8gWFJFQUxGSVhOVU0gKGdvdCkgOiAtMTsKKworICAg
ICAgICAgICAgICBpZiAoZml4dmFsID4gLTEgJiYgZml4dmFsIDwgMTApCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgZ290byBoYXNoX2RpZ2l0X3N5bnRheDsKKyAgICAgICAg
ICAgICAgICB9CisKIAkgICAgICB1bnJlYWRjaGFyIChyZWFkY2hhcmZ1biwgYyk7CiAJICAgICAg
cmV0dXJuIEZzaWduYWwgKFFpbnZhbGlkX3JlYWRfc3ludGF4LAogCQkJICAgICAgbGlzdDEgKGJ1
aWxkX2FzY3N0cmluZyAoIiMiKSkpOwpkaWZmIC1yIDg3ZTI5ZDkzZTExYiAtciA2MTc0ODQ4ZjNl
NmMgc3JjL251bWJlci5jCi0tLSBhL3NyYy9udW1iZXIuYwlGcmkgTWF5IDA4IDIwOjA0OjQyIDIw
MTUgKzAxMDAKKysrIGIvc3JjL251bWJlci5jCVNhdCBNYXkgMDkgMDA6NDA6NTcgMjAxNSArMDEw
MApAQCAtMzIsNyArMzIsNiBAQAogTGlzcF9PYmplY3QgUXJhdGlvbmFscCwgUWZsb2F0aW5ncCwg
UXJlYWxwOwogTGlzcF9PYmplY3QgVmRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uOwogCi1zdGF0aWMg
TGlzcF9PYmplY3QgUXVuc3VwcG9ydGVkX3R5cGU7CiBzdGF0aWMgTGlzcF9PYmplY3QgVmJpZ2Zs
b2F0X21heF9wcmVjOwogc3RhdGljIGludCBudW1iZXJfaW5pdGlhbGl6ZWQ7CiAKQEAgLTgxMSw5
ICs4MTAsNiBAQAogICBERUZTVUJSIChGcmVhbHApOwogICBERUZTVUJSIChGY2Fub25pY2FsaXpl
X251bWJlcik7CiAgIERFRlNVQlIgKEZjb2VyY2VfbnVtYmVyKTsKLQotICAvKiBFcnJvcnMgKi8K
LSAgREVGRVJST1JfU1RBTkRBUkQgKFF1bnN1cHBvcnRlZF90eXBlLCBRd3JvbmdfdHlwZV9hcmd1
bWVudCk7CiB9CiAKIHZvaWQKZGlmZiAtciA4N2UyOWQ5M2UxMWIgLXIgNjE3NDg0OGYzZTZjIHRl
c3RzL0NoYW5nZUxvZwotLS0gYS90ZXN0cy9DaGFuZ2VMb2cJRnJpIE1heSAwOCAyMDowNDo0MiAy
MDE1ICswMTAwCisrKyBiL3Rlc3RzL0NoYW5nZUxvZwlTYXQgTWF5IDA5IDAwOjQwOjU3IDIwMTUg
KzAxMDAKQEAgLTEsMyArMSwxMCBAQAorMjAxNS0wNS0wOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFA
cGFyaGFzYXJkLm5ldD4KKworCSogYXV0b21hdGVkL2xpc3AtcmVhZGVyLXRlc3RzLmVsOgorCUNo
ZWNrIHRoZSBhcmJpdHJhcnktYmFzZSBpbnRlZ2VyIHJlYWRlciBzeW50YXggc3VwcG9ydCwganVz
dAorCWFkZGVkLiAgQ2hlY2sgdGhlIHJlYWRlciBiYXNlIHN1cHBvcnQgZm9yIHJhdGlvcywganVz
dCBhZGRlZC4KKwlDaGVjayB0aGUgbm9uLUFTQ0lJLWRpZ2l0IHN1cHBvcnQgaW4gdGhlIHJlYWRl
ciwganVzdCBhZGRlZC4KKwogMjAxNS0wNS0wOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFz
YXJkLm5ldD4KIAogCSogYXV0b21hdGVkL2xpc3AtdGVzdHMuZWw6CmRpZmYgLXIgODdlMjlkOTNl
MTFiIC1yIDYxNzQ4NDhmM2U2YyB0ZXN0cy9hdXRvbWF0ZWQvbGlzcC1yZWFkZXItdGVzdHMuZWwK
LS0tIGEvdGVzdHMvYXV0b21hdGVkL2xpc3AtcmVhZGVyLXRlc3RzLmVsCUZyaSBNYXkgMDggMjA6
MDQ6NDIgMjAxNSArMDEwMAorKysgYi90ZXN0cy9hdXRvbWF0ZWQvbGlzcC1yZWFkZXItdGVzdHMu
ZWwJU2F0IE1heSAwOSAwMDo0MDo1NyAyMDE1ICswMTAwCkBAIC0yMTcsMyArMjE3LDEyNCBAQAog
MjQwOTk4NCIKICAgICAiLTI4OTQ4MDIyMzA5MzI5MDQ4ODU1ODkyNzQ2MjUyMTcxOTc2OTYzMzE3
NDk2MTY2NDEwMTQxMDA5ODY0Mzk2MDAxOTc4MlwKIDgyNDA5OTg1IikpKQorCisobWFjcm9sZXQK
KyAgICAoKEFzc2VydC1yZWFkaW5nLXJhdGlvbmFscyAoJnJlc3QgZGV0YWlscykKKyAgICAgICAo
Y29ucworICAgICAgICAncHJvZ24KKyAgICAgICAgKGxvb3AKKyAgICAgICAgICAgIGZvciAoZ3Vh
cmQgZmlyc3QgLiByZXN0KSBpbiBkZXRhaWxzCisgICAgICAgICAgICBjb2xsZWN0IGAod2hlbiAs
Z3VhcmQKKyAgICAgICAgICAgICAgICAgICAgICAsQChsb29wIGZvciB2YWx1ZSBpbiByZXN0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGAoQXNzZXJ0IChlcWwgLGZpcnN0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVhZCAs
dmFsdWUpKSkpKSkpKQorICAgICAod2l0aC1kaWdpdHMgKGFzY2lpIGFsdGVybmF0ZSAmYm9keSBi
b2R5KQorICAgICAgIChsZXQgKCh0cmVlLWFsaXN0IChsaXN0IChjb25zICdvbGQgJ25ldykpKQor
ICAgICAgICAgICAgICh0ZXh0LWFsaXN0IChtYXBjYXIqICMnY29ucyBhc2NpaSBhbHRlcm5hdGUp
KSkKKyAgICAgICAgIChsaXN0KgorICAgICAgICAgICdwcm9nbgorICAgICAgICAgIChzdWJsaXMg
dHJlZS1hbGlzdCBib2R5Cis6dGVzdCAjJyhsYW1iZGEgKG5ldyBvbGQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOzsgVGhpcyBmdW5jdGlvbiByZXBsYWNlcyBhbnkgQVNDSUkgZGVjaW1h
bCBkaWdpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpbiBhbnkgc3RyaW5nIGVu
Y291bnRlcmVkIGluIHRoZSB0cmVlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOzsgbm9uLUFTQ0lJIGRpZ2l0cyBzdXBwbGllZCBpbiBBTFRFUk5BVEUuCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoc3RyaW5ncCBvbGQpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmluZC1pZiAjJ2RpZ2l0LWNoYXItcCBvbGQpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgKGNkYXIgdHJlZS1hbGlzdCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXRlbmF0ZSAnc3RyaW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmxpcyB0
ZXh0LWFsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYXBwZW5kIG9sZCBuaWwpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0KSkpKSkpCisgICAgICh3aXRoLWFsbC1kaWdpdHMgKCZib2R5IGJvZHkpCisgICAgICAg
KGxpc3QKKyAgICAgICAgJ3Byb2duCisgICAgICAgIChsaXN0KiAnd2l0aC1kaWdpdHMgIjAxMjM0
NTY3ODkiICIwMTIzNDU2Nzg5IiBib2R5KQorICAgICAgICAod2hlbiAoZmVhdHVyZXAgJ211bGUp
CisgICAgICAgICAgKGNvbnMKKyAgICAgICAgICAgJ3Byb2duCisgICAgICAgICAgIChsb29wIGZv
ciAoY29kZS1wb2ludCAuIHNjcmlwdCkKKyAgICAgICAgICAgICBpbiAnKCgjeDA2NjAgLiAiQXJh
YmljLUluZGljIikKKyAgICAgICAgICAgICAgICAgICgjeDA2ZjAgLiAiRXh0ZW5kZWQgQXJhYmlj
LUluZGljIikKKyAgICAgICAgICAgICAgICAgICgjeDA3YzAgLiAiTmtvIikKKyAgICAgICAgICAg
ICAgICAgICgjeDA5NjYgLiAiRGV2YW5hZ2FyaSIpCisgICAgICAgICAgICAgICAgICAoI3gwOWU2
IC4gIkJlbmdhbGkiKQorICAgICAgICAgICAgICAgICAgKCN4MGE2NiAuICJHdXJtdWtoaSIpCisg
ICAgICAgICAgICAgICAgICAoI3gwYWU2IC4gIkd1amFyYXRpIikKKyAgICAgICAgICAgICAgICAg
ICgjeDBiNjYgLiAiT3JpeWEiKQorICAgICAgICAgICAgICAgICAgKCN4MGJlNiAuICJUYW1pbCIp
CisgICAgICAgICAgICAgICAgICAoI3gwYzY2IC4gIlRlbHVndSIpCisgICAgICAgICAgICAgICAg
ICAoI3gwY2U2IC4gIkthbm5hZGEiKQorICAgICAgICAgICAgICAgICAgKCN4MGQ2NiAuICJNYWxh
eWFsYW0iKQorICAgICAgICAgICAgICAgICAgKCN4MGRlNiAuICJTaW5oYWxhIExpdGgiKQorICAg
ICAgICAgICAgICAgICAgKCN4MGU1MCAuICJUaGFpIikKKyAgICAgICAgICAgICAgICAgICgjeDBl
ZDAgLiAiTGFvIikKKyAgICAgICAgICAgICAgICAgICgjeDBmMjAgLiAiVGliZXRhbiIpCisgICAg
ICAgICAgICAgICAgICAoI3gxMDQwIC4gIk15YW5tYXIiKQorICAgICAgICAgICAgICAgICAgKCN4
MTA5MCAuICJNeWFubWFyIFNoYW4iKQorICAgICAgICAgICAgICAgICAgKCN4MTdlMCAuICJLaG1l
ciIpCisgICAgICAgICAgICAgICAgICAoI3gxODEwIC4gIk1vbmdvbGlhbiIpCisgICAgICAgICAg
ICAgICAgICAoI3gxOTQ2IC4gIkxpbWJ1IikKKyAgICAgICAgICAgICAgICAgICgjeDE5ZDAgLiAi
TmV3IFRhaSBMdWUiKQorICAgICAgICAgICAgICAgICAgKCN4MWE4MCAuICJUYWkgVGhhbSBIb3Jh
IikKKyAgICAgICAgICAgICAgICAgICgjeDFhOTAgLiAiVGFpIFRoYW0gVGhhbSIpCisgICAgICAg
ICAgICAgICAgICAoI3gxYjUwIC4gIkJhbGluZXNlIikKKyAgICAgICAgICAgICAgICAgICgjeDFi
YjAgLiAiU3VuZGFuZXNlIikKKyAgICAgICAgICAgICAgICAgICgjeDFjNDAgLiAiTGVwY2hhIikK
KyAgICAgICAgICAgICAgICAgICgjeDFjNTAgLiAiT2wgQ2hpa2kiKQorICAgICAgICAgICAgICAg
ICAgKCN4YTYyMCAuICJWYWkiKQorICAgICAgICAgICAgICAgICAgKCN4YThkMCAuICJTYXVyYXNo
dHJhIikKKyAgICAgICAgICAgICAgICAgICgjeGE5MDAgLiAiS2F5YWggTGkiKQorICAgICAgICAg
ICAgICAgICAgKCN4YTlkMCAuICJKYXZhbmVzZSIpCisgICAgICAgICAgICAgICAgICAoI3hhOWYw
IC4gIk15YW5tYXIgVGFpIExhaW5nIikKKyAgICAgICAgICAgICAgICAgICgjeGFhNTAgLiAiQ2hh
bSIpCisgICAgICAgICAgICAgICAgICAoI3hhYmYwIC4gIk1lZXRlaSBNYXllayIpCisgICAgICAg
ICAgICAgICAgICAoI3hmZjEwIC4gIkZ1bGx3aWR0aCIpCisgICAgICAgICAgICAgICAgICAoI3gw
MDAxMDRhMCAuICJPc21hbnlhIikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDExMDY2IC4gIkJy
YWhtaSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAxMTBmMCAuICJTb3JhIFNvbXBlbmciKQor
ICAgICAgICAgICAgICAgICAgKCN4MDAwMTExMzYgLiAiQ2hha21hIikKKyAgICAgICAgICAgICAg
ICAgICgjeDAwMDExMWQwIC4gIlNoYXJhZGEiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTEy
ZjAgLiAiS2h1ZGF3YWRpIikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDExNGQwIC4gIlRpcmh1
dGEiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTE2NTAgLiAiTW9kaSIpCisgICAgICAgICAg
ICAgICAgICAoI3gwMDAxMTZjMCAuICJUYWtyaSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAx
MThlMCAuICJXYXJhbmcgQ2l0aSIpCisgICAgICAgICAgICAgICAgICAoI3gwMDAxNmE2MCAuICJN
cm8iKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMTZiNTAgLiAiUGFoYXdoIEhtb25nIikKKyAg
ICAgICAgICAgICAgICAgICgjeDAwMDFkN2NlIC4gIk1hdGhlbWF0aWNhbCBCb2xkIikKKyAgICAg
ICAgICAgICAgICAgICgjeDAwMDFkN2Q4IC4gIk1hdGhlbWF0aWNhbCBEb3VibGUtU3RydWNrIikK
KyAgICAgICAgICAgICAgICAgICgjeDAwMDFkN2UyIC4gIk1hdGhlbWF0aWNhbCBTYW5zLVNlcmlm
IikKKyAgICAgICAgICAgICAgICAgICgjeDAwMDFkN2VjIC4gIk1hdGhlbWF0aWNhbCBTYW5zLVNl
cmlmIEJvbGQiKQorICAgICAgICAgICAgICAgICAgKCN4MDAwMWQ3ZjYgLiAiTWF0aGVtYXRpY2Fs
IE1vbm9zcGFjZSIpKQorICAgICAgICAgICBjb2xsZWN0IAorICAgICAgICAgICAobGlzdCogJ3dp
dGgtZGlnaXRzICIwMTIzNDU2Nzg5IgorICAgICAgICAgICAgICAgICAgOzsgQWxsIHRoZSBVbmlj
b2RlIGRlY2ltYWwgZGlnaXRzIGhhdmUgY29udGlndW91cyBjb2RlCisgICAgICAgICAgICAgICAg
ICA7OyBwb2ludCByYW5nZXMgYXMgZG9jdW1lbnRlZCBieSB0aGUgVW5pY29kZSBzdGFuZGFyZCwK
KyAgICAgICAgICAgICAgICAgIDs7IHdlIGNhbiBqdXN0IGluY3JlbWVudC4KKyAgICAgICAgICAg
ICAgICAgIChjb25jYXQgKGxvb3AgZm9yIGZpeG51bSBmcm9tIGNvZGUtcG9pbnQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG8gKCsgY29kZS1wb2ludCA5KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IChkZWNvZGUtY2hhciAndWNzIGZpeG51bSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICIiKQorICAgICAgICAgICAgICAgICAgYm9keSkpKSkp
KSkKKyAgKHdpdGgtYWxsLWRpZ2l0cyAgCisgICAgKEFzc2VydC1yZWFkaW5nLXJhdGlvbmFscwor
ICAgICAodCAxICIxIiAiI2IxIiAiI28xIiAiI3gxIiAiIzJyMSIgIiMyMHIxIiAiIzIwMDByMSIp
CisgICAgICh0IDAgIi0wIiAiI2IwIiAiI28wIiAiI3gwIiAiIzFyMCIgIiMycjAiICIjMjByMCIg
IiMyMDAwcjAiKQorICAgICAodCAtMSAiLTEiICIjYi0xIiAiI28tMSIgIiN4LTEiICIjMnItMSIg
IiMyMHItMSIgIiMyMDAwci0xIikKKyAgICAgKHQgMTA3Mzc0MTgyMyAiI2IxMTExMTExMTExMTEx
MTExMTExMTExMTExMTExMTEiICIjbzc3Nzc3Nzc3NzciCisgICAgICAgICIjeDNmZmZmZmZmIiAi
IzMyclZWVlZWViIpCisgICAgICh0IC0xMDczNzQxODI0ICIjYi0xMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwIiAiI28tMTAwMDAwMDAwMDAiCisgICAgICAgICIjeC00MDAwMDAwMCIgIiMz
MnItMTAwMDAwMCIpCisgICAgICgoZmVhdHVyZXAgJ3JhdGlvKQorICAgICAgMSAiMS8xIiAiMi8y
IiAiI2IxLzEiICIjbzIvMiIgIiN4My8zIiAiIzJyMS8xIiAiIzIwcjIwMDAvMjAwMCIpCisgICAg
ICgoZmVhdHVyZXAgJ3JhdGlvKQorICAgICAgLTEgIi0xLzEiICItMi8yIiAiI2ItMS8xIiAiI28t
Mi8yIiAiI3gtMy8zIiAiIzJyLTEvMSIKKyAgICAgICIjMjByLTIwMDAvMjAwMCIpKQorICAgIChD
aGVjay1FcnJvciBpbnZhbGlkLXJlYWQtc3ludGF4IChyZWFkICIxMjM0NTY3LzAiKSkKKyAgICAo
Q2hlY2stRXJyb3IgaW52YWxpZC1yZWFkLXN5bnRheCAocmVhZCAiI3gxMjM0NTY3LzAiKSkKKyAg
ICAoQ2hlY2stRXJyb3IgaW52YWxpZC1yZWFkLXN5bnRheCAocmVhZCAiIzIwMDAwcjEyMzQ1Njcv
MCIpKQorICAgIDs7IFVuaW50dWl0aXZlLCBidXQgdGhhdCdzIHRoZSBDb21tb24gTGlzcCBiZWhh
dmlvdXIuIE1heWJlIHdlIHNob3VsZAorICAgIDs7IGVycm9yLgorICAgIChBc3NlcnQgKHN5bWJv
bHAgKHJlYWQgIjEyMzQvLTEyMyIpKSkpKQorCis7OzsgZW5kIG9mIGxpc3AtcmVhZGVyLXRlc3Rz
LmVsCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRoZXIgZmVkIHRvIGNhdHRsZSBb4oCmXSB3aGVu
IHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQKYW5pbWFscykgc28gdGhhdCB0aGUgYW5pbWFs
cyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKApuKAmQoJ4oCUIEFuZ2V3YW5kdGUgQ2hlbWll
LCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNvY2lhbCBjb250ZXh0IG9mCgkoc3ludGhldGlj
KSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBpbiBDYW1lcm9vbiB0cmVlIHJvb3RzLgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWEVtYWNzLVBhdGNo
ZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVzQHhlbWFjcy5vcmcKaHR0cDovL2xpc3RzLnhl
bWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1hY3MtcGF0Y2hlcwo=