fontconfig: Branch 'master'

[email protected] (GitLab Mirror) Fri, 1 Nov 2019 06:00:03 +0000 (UTC)
Newsgroups gmane.comp.fonts.fontconfig
Message-ID <[email protected]>
IGRvYy9mY2NvbmZpZy5mbmNzICAgICAgICB8ICAgMjAgKysrCiBmb250Y29uZmlnL2ZvbnRjb25m
aWcuaCAgfCAgICA0IAogc3JjL2ZjY2FjaGUuYyAgICAgICAgICAgIHwgICA3MyArKysrKysrKysr
Ky0tLQogc3JjL2ZjY2ZnLmMgICAgICAgICAgICAgIHwgIDIzNyArKysrKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2ZjZGlyLmMgICAgICAgICAgICAgIHwg
ICAzMSArKysrKy0KIHNyYy9mY2luaXQuYyAgICAgICAgICAgICB8ICAgMTUgKy0KIHNyYy9mY2xp
c3QuYyAgICAgICAgICAgICB8ICAgMjUgKystLQogc3JjL2ZjbWF0Y2guYyAgICAgICAgICAgIHwg
ICA0OCArKysrLS0tLS0KIHRlc3QvTWFrZWZpbGUuYW0gICAgICAgICB8ICAgIDUgCiB0ZXN0L3J1
bi10ZXN0LnNoICAgICAgICAgfCAgIDE1ICsrCiB0ZXN0L3Rlc3QtY3JidWcxMDA0MjU0LmMgfCAg
MTE2ICsrKysrKysrKysrKysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MzYgaW5zZXJ0
aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQoKTmV3IGNvbW1pdHM6CmNvbW1pdCBiNWJjZjYxZmU3
ODllNjZkZjJkZTYwOWVjMjQ2Y2I3ZTRkMzI2MTgwCkF1dGhvcjogQWtpcmEgVEFHT0ggPGFraXJh
QHRhZ29oLm9yZz4KRGF0ZTogICBGcmkgTm92IDEgMTQ6NDM6NDIgMjAxOSArMDkwMAoKICAgIFVz
ZSBGY0NvbmZpZ1JlZmVyZW5jZS9EZXN0cm95IGFwcHJvcHJpYXRlbHkgaW5zdGVhZCBvZiBGY0Nv
bmZpZ0dldEN1cnJlbnQKICAgIAogICAgVGhpcyBtYXkgaW1wcm92ZXMgdG8gYmUgTVQtc2FmZS4K
ICAgIAogICAgUmVwb3J0ZWQgYXQgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVt
L2lzc3Vlcy9kZXRhaWw/aWQ9MTAwNDI1NAoKZGlmZiAtLWdpdCBhL2RvYy9mY2NvbmZpZy5mbmNz
IGIvZG9jL2ZjY29uZmlnLmZuY3MKaW5kZXggODI3NjlkNS4uZTcwOWI1NCAxMDA2NDQKLS0tIGEv
ZG9jL2ZjY29uZmlnLmZuY3MKKysrIGIvZG9jL2ZjY29uZmlnLmZuY3MKQEAgLTE3NCw2ICsxNzQs
MTAgQEAgUmV0dXJucyBvbmUgb2YgdGhlIHR3byBzZXRzIG9mIGZvbnRzIGZyb20gdGhlIGNvbmZp
Z3VyYXRpb24gYXMgc3BlY2lmaWVkCiBieSA8cGFyYW1ldGVyPnNldDwvcGFyYW1ldGVyPi4gVGhp
cyBmb250IHNldCBpcyBvd25lZCBieSB0aGUgbGlicmFyeSBhbmQgbXVzdAogbm90IGJlIG1vZGlm
aWVkIG9yIGZyZWVkLgogSWYgPHBhcmFtZXRlcj5jb25maWc8L3BhcmFtZXRlcj4gaXMgTlVMTCwg
dGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB1c2VkLgorICAgIDwvcGFyYT48cGFyYT4KK1Ro
aXMgZnVuY3Rpb24gaXNuJ3QgTVQtc2FmZS4gPGZ1bmN0aW9uPkZjQ29uZmlnUmVmZXJlbmNlPC9m
dW5jdGlvbj4gbXVzdCBiZSBjYWxsZWQKK2JlZm9yZSB1c2luZyB0aGlzIGFuZCB0aGVuIDxmdW5j
dGlvbj5GY0NvbmZpZ0Rlc3Ryb3k8L2Z1bmN0aW9uPiB3aGVuCit0aGUgcmV0dXJuIHZhbHVlIGlz
IG5vIGxvbmdlciByZWZlcmVuY2VkLgogQEAKIAogQFJFVEAgICAgICAgICAgIEZjQmxhbmtzICoK
QEAgLTQwNyw2ICs0MTEsMTAgQEAgcGFyc2UgZXJyb3IsIHNlbWFudGljIGVycm9yIG9yIGFsbG9j
YXRpb24gZmFpbHVyZS4gT3RoZXJ3aXNlIHJldHVybnMgRmNUcnVlLgogT2J0YWlucyB0aGUgc3lz
dGVtIHJvb3QgZGlyZWN0b3J5IGluICdjb25maWcnIGlmIGF2YWlsYWJsZS4gQWxsIGZpbGVzCiAo
aW5jbHVkaW5nIGZpbGUgcHJvcGVydGllcyBpbiBwYXR0ZXJucykgb2J0YWluZWQgZnJvbSB0aGlz
ICdjb25maWcnIGFyZQogcmVsYXRpdmUgdG8gdGhpcyBzeXN0ZW0gcm9vdCBkaXJlY3RvcnkuCisg
ICAgPC9wYXJhPjxwYXJhPgorVGhpcyBmdW5jdGlvbiBpc24ndCBNVC1zYWZlLiA8ZnVuY3Rpb24+
RmNDb25maWdSZWZlcmVuY2U8L2Z1bmN0aW9uPiBtdXN0IGJlIGNhbGxlZAorYmVmb3JlIHVzaW5n
IHRoaXMgYW5kIHRoZW4gPGZ1bmN0aW9uPkZjQ29uZmlnRGVzdHJveTwvZnVuY3Rpb24+IHdoZW4K
K3RoZSByZXR1cm4gdmFsdWUgaXMgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuCiBAU0lOQ0VACQkyLjEw
LjkyCiBAQAogCkBAIC00MzMsNiArNDQxLDEwIEBAIFdoZW4gc2V0dGluZyB0aGlzIG9uIHRoZSBj
dXJyZW50IGNvbmZpZyB0aGlzIGNhdXNlcyBjaGFuZ2luZyBjdXJyZW50IGNvbmZpZwogQFBVUlBP
U0VACUluaXRpYWxpemUgdGhlIGl0ZXJhdG9yCiBAREVTQ0AKIEluaXRpYWxpemUgJ2l0ZXInIHdp
dGggdGhlIGZpcnN0IGl0ZXJhdG9yIGluIHRoZSBjb25maWcgZmlsZSBpbmZvcm1hdGlvbiBsaXN0
LgorICAgIDwvcGFyYT48cGFyYT4KK1RoaXMgZnVuY3Rpb24gaXNuJ3QgTVQtc2FmZS4gPGZ1bmN0
aW9uPkZjQ29uZmlnUmVmZXJlbmNlPC9mdW5jdGlvbj4gbXVzdCBiZSBjYWxsZWQKK2JlZm9yZSB1
c2luZyB0aGlzIGFuZCB0aGVuIDxmdW5jdGlvbj5GY0NvbmZpZ0Rlc3Ryb3k8L2Z1bmN0aW9uPiB3
aGVuIHRoZSByZWxldmFudAordmFsdWVzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZC4KIEBTSU5D
RUAJCTIuMTIuOTEKIEBACiAKQEAgLTQ0NCw2ICs0NTYsMTAgQEAgSW5pdGlhbGl6ZSAnaXRlcicg
d2l0aCB0aGUgZmlyc3QgaXRlcmF0b3IgaW4gdGhlIGNvbmZpZyBmaWxlIGluZm9ybWF0aW9uIGxp
c3QuCiBAREVTQ0AKIFNldCAnaXRlcicgdG8gcG9pbnQgdG8gdGhlIG5leHQgbm9kZSBpbiB0aGUg
Y29uZmlnIGZpbGUgaW5mb3JtYXRpb24gbGlzdC4KIElmIHRoZXJlIGlzIG5vIG5leHQgbm9kZSwg
RmNGYWxzZSBpcyByZXR1cm5lZC4KKyAgICA8L3BhcmE+PHBhcmE+CitUaGlzIGZ1bmN0aW9uIGlz
bid0IE1ULXNhZmUuIDxmdW5jdGlvbj5GY0NvbmZpZ1JlZmVyZW5jZTwvZnVuY3Rpb24+IG11c3Qg
YmUgY2FsbGVkCitiZWZvcmUgdXNpbmcgPGZ1bmN0aW9uPkZjQ29uZmlnRmlsZUluZm9JdGVySW5p
dDwvZnVuY3Rpb24+IGFuZCB0aGVuCis8ZnVuY3Rpb24+RmNDb25maWdEZXN0cm95PC9mdW5jdGlv
bj4gd2hlbiB0aGUgcmVsZXZhbnQgdmFsdWVzIGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZC4KIEBT
SU5DRUAJCTIuMTIuOTEKIEBACiAKQEAgLTQ1OSw1ICs0NzUsOSBAQCBJZiB0aGVyZSBpcyBubyBu
ZXh0IG5vZGUsIEZjRmFsc2UgaXMgcmV0dXJuZWQuCiBPYnRhaW4gdGhlIGZpbGVuYW1lLCB0aGUg
ZGVzY3JpcHRpb24gYW5kIHRoZSBmbGFnIHdoZXRoZXIgaXQgaXMgZW5hYmxlZCBvciBub3QKIGZv
ciAnaXRlcicgd2hlcmUgcG9pbnRzIHRvIGN1cnJlbnQgY29uZmlndXJhdGlvbiBmaWxlIGluZm9y
bWF0aW9uLgogSWYgdGhlIGl0ZXJhdG9yIGlzIGludmFsaWQsIEZjRmFsc2UgaXMgcmV0dXJuZWQu
CisgICAgPC9wYXJhPjxwYXJhPgorVGhpcyBmdW5jdGlvbiBpc24ndCBNVC1zYWZlLiA8ZnVuY3Rp
b24+RmNDb25maWdSZWZlcmVuY2U8L2Z1bmN0aW9uPiBtdXN0IGJlIGNhbGxlZAorYmVmb3JlIHVz
aW5nIDxmdW5jdGlvbj5GY0NvbmZpZ0ZpbGVJbmZvSXRlckluaXQ8L2Z1bmN0aW9uPiBhbmQgdGhl
bgorPGZ1bmN0aW9uPkZjQ29uZmlnRGVzdHJveTwvZnVuY3Rpb24+IHdoZW4gdGhlIHJlbGV2YW50
IHZhbHVlcyBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQuCiBAU0lOQ0VACQkyLjEyLjkxCiBAQApk
aWZmIC0tZ2l0IGEvZm9udGNvbmZpZy9mb250Y29uZmlnLmggYi9mb250Y29uZmlnL2ZvbnRjb25m
aWcuaAppbmRleCAyZjBlOGNmLi5jNzk1MjQ1IDEwMDY0NAotLS0gYS9mb250Y29uZmlnL2ZvbnRj
b25maWcuaAorKysgYi9mb250Y29uZmlnL2ZvbnRjb25maWcuaApAQCAtMzc1LDcgKzM3NSw3IEBA
IEZjUHVibGljIEZjQm9vbAogRmNEaXJDYWNoZUNsZWFuIChjb25zdCBGY0NoYXI4ICpjYWNoZV9k
aXIsIEZjQm9vbCB2ZXJib3NlKTsKIAogRmNQdWJsaWMgdm9pZAotRmNDYWNoZUNyZWF0ZVRhZ0Zp
bGUgKGNvbnN0IEZjQ29uZmlnICpjb25maWcpOworRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKEZjQ29u
ZmlnICpjb25maWcpOwogCiBGY1B1YmxpYyBGY0Jvb2wKIEZjRGlyQ2FjaGVDcmVhdGVVVUlEIChG
Y0NoYXI4ICAqZGlyLApAQCAtNDM3LDcgKzQzNyw3IEBAIEZjUHVibGljIEZjQmxhbmtzICoKIEZj
Q29uZmlnR2V0QmxhbmtzIChGY0NvbmZpZyAqY29uZmlnKTsKIAogRmNQdWJsaWMgRmNTdHJMaXN0
ICoKLUZjQ29uZmlnR2V0Q2FjaGVEaXJzIChjb25zdCBGY0NvbmZpZwkqY29uZmlnKTsKK0ZjQ29u
ZmlnR2V0Q2FjaGVEaXJzIChGY0NvbmZpZwkqY29uZmlnKTsKIAogRmNQdWJsaWMgaW50CiBGY0Nv
bmZpZ0dldFJlc2NhbkludGVydmFsIChGY0NvbmZpZyAqY29uZmlnKTsKZGlmZiAtLWdpdCBhL3Ny
Yy9mY2NhY2hlLmMgYi9zcmMvZmNjYWNoZS5jCmluZGV4IGM1NjU1NjAuLmQ4ZjFkYWIgMTAwNjQ0
Ci0tLSBhL3NyYy9mY2NhY2hlLmMKKysrIGIvc3JjL2ZjY2FjaGUuYwpAQCAtNTgsMTEgKzU4LDE1
IEBAIEZjRGlyQ2FjaGVEZWxldGVVVUlEIChjb25zdCBGY0NoYXI4ICAqZGlyLAogewogICAgIEZj
Qm9vbCByZXQgPSBGY1RydWU7CiAjaWZuZGVmIF9XSU4zMgotICAgIGNvbnN0IEZjQ2hhcjggKnN5
c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7CisgICAgY29uc3QgRmNDaGFyOCAq
c3lzcm9vdDsKICAgICBGY0NoYXI4ICp0YXJnZXQsICpkOwogICAgIHN0cnVjdCBzdGF0IHN0YXRi
OwogICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOwogCisgICAgY29uZmlnID0gRmNDb25maWdS
ZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25maWcpCisJcmV0dXJuIEZjRmFsc2U7Cisg
ICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAoY29uZmlnKTsKICAgICBpZiAoc3lzcm9v
dCkKIAlkID0gRmNTdHJCdWlsZEZpbGVuYW1lIChzeXNyb290LCBkaXIsIE5VTEwpOwogICAgIGVs
c2UKQEAgLTk0LDYgKzk4LDcgQEAgRmNEaXJDYWNoZURlbGV0ZVVVSUQgKGNvbnN0IEZjQ2hhcjgg
ICpkaXIsCiBiYWlsOgogICAgIEZjU3RyRnJlZSAoZCk7CiAjZW5kaWYKKyAgICBGY0NvbmZpZ0Rl
c3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjY1LDcgKzI3MCwxMyBA
QCBGY0RpckNhY2hlVW5saW5rIChjb25zdCBGY0NoYXI4ICpkaXIsIEZjQ29uZmlnICpjb25maWcp
CiAjZW5kaWYKICAgICBGY1N0ckxpc3QJKmxpc3Q7CiAgICAgRmNDaGFyOAkqY2FjaGVfZGlyOwot
ICAgIGNvbnN0IEZjQ2hhcjggKnN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7
CisgICAgY29uc3QgRmNDaGFyOCAqc3lzcm9vdDsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwor
CisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25m
aWcpCisJcmV0dXJuIEZjRmFsc2U7CisgICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAo
Y29uZmlnKTsKIAogICAgIEZjRGlyQ2FjaGVCYXNlbmFtZU1ENSAoY29uZmlnLCBkaXIsIGNhY2hl
X2Jhc2UpOwogI2lmbmRlZiBfV0lOMzIKQEAgLTI3NCw3ICsyODUsMTAgQEAgRmNEaXJDYWNoZVVu
bGluayAoY29uc3QgRmNDaGFyOCAqZGlyLCBGY0NvbmZpZyAqY29uZmlnKQogCiAgICAgbGlzdCA9
IEZjU3RyTGlzdENyZWF0ZSAoY29uZmlnLT5jYWNoZURpcnMpOwogICAgIGlmICghbGlzdCkKLSAg
ICAgICAgcmV0dXJuIEZjRmFsc2U7CisgICAgeworCXJldCA9IEZjRmFsc2U7CisJZ290byBiYWls
OworICAgIH0KIAkKICAgICB3aGlsZSAoKGNhY2hlX2RpciA9IEZjU3RyTGlzdE5leHQgKGxpc3Qp
KSkKICAgICB7CkBAIC0zMDQsOCArMzE4LDExIEBAIEZjRGlyQ2FjaGVVbmxpbmsgKGNvbnN0IEZj
Q2hhcjggKmRpciwgRmNDb25maWcgKmNvbmZpZykKICAgICBGY0RpckNhY2hlRGVsZXRlVVVJRCAo
ZGlyLCBjb25maWcpOwogICAgIC8qIHJldHVybiBGY0ZhbHNlIGlmIHNvbWV0aGluZyB3ZW50IHdy
b25nICovCiAgICAgaWYgKGNhY2hlX2RpcikKLQlyZXR1cm4gRmNGYWxzZTsKLSAgICByZXR1cm4g
RmNUcnVlOworCXJldCA9IEZjRmFsc2U7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29u
ZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEwNDEsMTAgKzEw
NTgsMTUgQEAgRmNEaXJDYWNoZUxvYWQgKGNvbnN0IEZjQ2hhcjggKmRpciwgRmNDb25maWcgKmNv
bmZpZywgRmNDaGFyOCAqKmNhY2hlX2ZpbGUpCiB7CiAgICAgRmNDYWNoZSAqY2FjaGUgPSBOVUxM
OwogCisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFj
b25maWcpCisJcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFGY0RpckNhY2hlUHJvY2VzcyAoY29uZmln
LCBkaXIsCiAJCQkgICAgRmNEaXJDYWNoZU1hcEhlbHBlciwKIAkJCSAgICAmY2FjaGUsIGNhY2hl
X2ZpbGUpKQotCXJldHVybiBOVUxMOworCWNhY2hlID0gTlVMTDsKKworICAgIEZjQ29uZmlnRGVz
dHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiBjYWNoZTsKIH0KQEAgLTEwNTUsMTMgKzEwNzcs
MTYgQEAgRmNEaXJDYWNoZUxvYWRGaWxlIChjb25zdCBGY0NoYXI4ICpjYWNoZV9maWxlLCBzdHJ1
Y3Qgc3RhdCAqZmlsZV9zdGF0KQogICAgIGludAlmZDsKICAgICBGY0NhY2hlICpjYWNoZTsKICAg
ICBzdHJ1Y3Qgc3RhdAlteV9maWxlX3N0YXQ7CisgICAgRmNDb25maWcgKmNvbmZpZzsKIAogICAg
IGlmICghZmlsZV9zdGF0KQogCWZpbGVfc3RhdCA9ICZteV9maWxlX3N0YXQ7CiAgICAgZmQgPSBG
Y0RpckNhY2hlT3BlbkZpbGUgKGNhY2hlX2ZpbGUsIGZpbGVfc3RhdCk7CiAgICAgaWYgKGZkIDwg
MCkKIAlyZXR1cm4gTlVMTDsKLSAgICBjYWNoZSA9IEZjRGlyQ2FjaGVNYXBGZCAoRmNDb25maWdH
ZXRDdXJyZW50ICgpLCBmZCwgZmlsZV9zdGF0LCBOVUxMKTsKKyAgICBjb25maWcgPSBGY0NvbmZp
Z1JlZmVyZW5jZSAoTlVMTCk7CisgICAgY2FjaGUgPSBGY0RpckNhY2hlTWFwRmQgKGNvbmZpZywg
ZmQsIGZpbGVfc3RhdCwgTlVMTCk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwogICAg
IGNsb3NlIChmZCk7CiAgICAgcmV0dXJuIGNhY2hlOwogfQpAQCAtMTE1NSwxMiArMTE4MCwxNiBA
QCBGY0Jvb2wKIEZjRGlyQ2FjaGVWYWxpZCAoY29uc3QgRmNDaGFyOCAqZGlyKQogewogICAgIEZj
Q29uZmlnCSpjb25maWc7CisgICAgRmNCb29sCXJldDsKIAotICAgIGNvbmZpZyA9IEZjQ29uZmln
R2V0Q3VycmVudCAoKTsKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoTlVMTCk7CiAg
ICAgaWYgKCFjb25maWcpCiAgICAgICAgIHJldHVybiBGY0ZhbHNlOwogCi0gICAgcmV0dXJuIEZj
RGlyQ2FjaGVWYWxpZENvbmZpZyAoZGlyLCBjb25maWcpOworICAgIHJldCA9IEZjRGlyQ2FjaGVW
YWxpZENvbmZpZyAoZGlyLCBjb25maWcpOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK
KworICAgIHJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC0xNDM4LDkgKzE0NjcsMTMgQEAgRmNEaXJD
YWNoZUNsZWFuIChjb25zdCBGY0NoYXI4ICpjYWNoZV9kaXIsIEZjQm9vbCB2ZXJib3NlKQogICAg
IEZjQ2FjaGUJKmNhY2hlOwogICAgIHN0cnVjdCBzdGF0CXRhcmdldF9zdGF0OwogICAgIGNvbnN0
IEZjQ2hhcjggKnN5c3Jvb3Q7CisgICAgRmNDb25maWcJKmNvbmZpZzsKIAorICAgIGNvbmZpZyA9
IEZjQ29uZmlnUmVmZXJlbmNlIChOVUxMKTsKKyAgICBpZiAoIWNvbmZpZykKKwlyZXR1cm4gRmNG
YWxzZTsKICAgICAvKiBGSVhNRTogdGhpcyBBUEkgbmVlZHMgdG8gc3VwcG9ydCBub24tY3VycmVu
dCBGY0NvbmZpZyAqLwotICAgIHN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKE5VTEwpOwor
ICAgIHN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNvbmZpZyk7CiAgICAgaWYgKHN5c3Jv
b3QpCiAJZGlyID0gRmNTdHJCdWlsZEZpbGVuYW1lIChzeXNyb290LCBjYWNoZV9kaXIsIE5VTEwp
OwogICAgIGVsc2UKQEAgLTE0NDgsNyArMTQ4MSw4IEBAIEZjRGlyQ2FjaGVDbGVhbiAoY29uc3Qg
RmNDaGFyOCAqY2FjaGVfZGlyLCBGY0Jvb2wgdmVyYm9zZSkKICAgICBpZiAoIWRpcikKICAgICB7
CiAJZnByaW50ZiAoc3RkZXJyLCAiRm9udGNvbmZpZyBlcnJvcjogJXM6IG91dCBvZiBtZW1vcnlc
biIsIGNhY2hlX2Rpcik7Ci0JcmV0dXJuIEZjRmFsc2U7CisJcmV0ID0gRmNGYWxzZTsKKwlnb3Rv
IGJhaWw7CiAgICAgfQogICAgIGlmIChhY2Nlc3MgKChjaGFyICopIGRpciwgV19PSykgIT0gMCkK
ICAgICB7CkBAIC0xNTI1LDggKzE1NTksMTAgQEAgRmNEaXJDYWNoZUNsZWFuIChjb25zdCBGY0No
YXI4ICpjYWNoZV9kaXIsIEZjQm9vbCB2ZXJib3NlKQogICAgIH0KIAogICAgIGNsb3NlZGlyIChk
KTsKLSAgYmFpbDA6CitiYWlsMDoKICAgICBGY1N0ckZyZWUgKGRpcik7CitiYWlsOgorICAgIEZj
Q29uZmlnRGVzdHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xOTY4LDE1
ICsyMDA0LDIwIEBAIEZjRGlyQ2FjaGVDcmVhdGVUYWdGaWxlIChjb25zdCBGY0NoYXI4ICpjYWNo
ZV9kaXIpCiB9CiAKIHZvaWQKLUZjQ2FjaGVDcmVhdGVUYWdGaWxlIChjb25zdCBGY0NvbmZpZyAq
Y29uZmlnKQorRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKEZjQ29uZmlnICpjb25maWcpCiB7CiAgICAg
RmNDaGFyOCAgICpjYWNoZV9kaXIgPSBOVUxMLCAqZCA9IE5VTEw7CiAgICAgRmNTdHJMaXN0ICps
aXN0OwotICAgIGNvbnN0IEZjQ2hhcjggKnN5c3Jvb3QgPSBGY0NvbmZpZ0dldFN5c1Jvb3QgKGNv
bmZpZyk7CisgICAgY29uc3QgRmNDaGFyOCAqc3lzcm9vdDsKKworICAgIGNvbmZpZyA9IEZjQ29u
ZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29uZmlnKQorCXJldHVybjsKKyAgICBz
eXNyb290ID0gRmNDb25maWdHZXRTeXNSb290IChjb25maWcpOwogCiAgICAgbGlzdCA9IEZjQ29u
ZmlnR2V0Q2FjaGVEaXJzIChjb25maWcpOwogICAgIGlmICghbGlzdCkKLQlyZXR1cm47CisJZ290
byBiYWlsOwogCiAgICAgd2hpbGUgKChjYWNoZV9kaXIgPSBGY1N0ckxpc3ROZXh0IChsaXN0KSkp
CiAgICAgewpAQCAtMTk5Miw2ICsyMDMzLDggQEAgRmNDYWNoZUNyZWF0ZVRhZ0ZpbGUgKGNvbnN0
IEZjQ29uZmlnICpjb25maWcpCiAgICAgaWYgKGQpCiAJRmNTdHJGcmVlIChkKTsKICAgICBGY1N0
ckxpc3REb25lIChsaXN0KTsKK2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwog
fQogCiAjZGVmaW5lIF9fZmNjYWNoZV9fCmRpZmYgLS1naXQgYS9zcmMvZmNjZmcuYyBiL3NyYy9m
Y2NmZy5jCmluZGV4IDIxY2NkMjUuLjExZGM4NzYgMTAwNjQ0Ci0tLSBhL3NyYy9mY2NmZy5jCisr
KyBiL3NyYy9mY2NmZy5jCkBAIC0yMzcsMTIgKzIzNywxMiBAQCBGY0NvbmZpZ1VwdG9EYXRlIChG
Y0NvbmZpZyAqY29uZmlnKQogewogICAgIEZjRmlsZVRpbWUJY29uZmlnX3RpbWUsIGNvbmZpZ19k
aXJfdGltZSwgZm9udF90aW1lOwogICAgIHRpbWVfdAlub3cgPSB0aW1lKDApOworICAgIEZjQm9v
bAlyZXQgPSBGY1RydWU7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln
KTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50
ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gRmNGYWxzZTsKLSAgICB9CisJcmV0dXJu
IEZjRmFsc2U7CisKICAgICBjb25maWdfdGltZSA9IEZjQ29uZmlnTmV3ZXN0RmlsZSAoY29uZmln
LT5jb25maWdGaWxlcyk7CiAgICAgY29uZmlnX2Rpcl90aW1lID0gRmNDb25maWdOZXdlc3RGaWxl
IChjb25maWctPmNvbmZpZ0RpcnMpOwogICAgIGZvbnRfdGltZSA9IEZjQ29uZmlnTmV3ZXN0Rmls
ZSAoY29uZmlnLT5mb250RGlycyk7CkBAIC0yNTgsMTMgKzI1OCwxOSBAQCBGY0NvbmZpZ1VwdG9E
YXRlIChGY0NvbmZpZyAqY29uZmlnKQogCSAgICBmcHJpbnRmIChzdGRlcnIsCiAgICAgICAgICAg
ICAgICAgICAgICJGb250Y29uZmlnIHdhcm5pbmc6IERpcmVjdG9yeS9maWxlIG10aW1lIGluIHRo
ZSBmdXR1cmUuIE5ldyBmb250cyBtYXkgbm90IGJlIGRldGVjdGVkLlxuIik7CiAJICAgIGNvbmZp
Zy0+cmVzY2FuVGltZSA9IG5vdzsKLQkgICAgcmV0dXJuIEZjVHJ1ZTsKKwkgICAgZ290byBiYWls
OwogCX0KIAllbHNlCi0JICAgIHJldHVybiBGY0ZhbHNlOworCXsKKwkgICAgcmV0ID0gRmNGYWxz
ZTsKKwkgICAgZ290byBiYWlsOworCX0KICAgICB9CiAgICAgY29uZmlnLT5yZXNjYW5UaW1lID0g
bm93OwotICAgIHJldHVybiBGY1RydWU7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29u
ZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIEZjRXhwciAqCkBAIC0yOTEsMTEgKzI5Nywy
NiBAQCBGY0NvbmZpZ1JlZmVyZW5jZSAoRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBpZiAoIWNv
bmZpZykKICAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgpOworCS8qIERvIG5v
dCB1c2UgRmNDb25maWdHZXRDdXJyZW50ICgpIGZvciB0aGUgcHVycG9zZSBvZiBvYnRhaW5pbmcg
Y3VycmVudCBGY0NvbmZpZyBoZXJlLgorCSAqIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBjb3VudGVy
IG11c3QgYmUgaW5jcmVhc2VkIGJlZm9yZSBzZXR0aW5nIGl0IHRvIF9mY0NvbmZpZy4KKwkgKi8K
KyAgICByZXRyeToKKwljb25maWcgPSBmY19hdG9taWNfcHRyX2dldCAoJl9mY0NvbmZpZyk7CiAJ
aWYgKCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KKwl7CisJICAgIGNvbmZpZyA9IEZj
Q29uZmlnQ3JlYXRlICgpOworCSAgICBGY1JlZkluYyAoJmNvbmZpZy0+cmVmKTsKIAorCSAgICBj
b25maWcgPSBGY0luaXRMb2FkT3duQ29uZmlnQW5kRm9udHMgKGNvbmZpZyk7CisJICAgIGlmICgh
ZmNfYXRvbWljX3B0cl9jbXBleGNoICgmX2ZjQ29uZmlnLCBOVUxMLCBjb25maWcpKQorCSAgICB7
CisJCUZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsgLyogVG8gZGVjcmVhc2UgdGhlIHJlZmNvdW50
IGZvciB0aGUgYWJvdmUgb25lLiAqLworCQlGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7IC8qIFRv
IGRlc3Ryb3kgaXQgYWN0dWFseSAqLworCQlnb3RvIHJldHJ5OworCSAgICB9CisJICAgIHJldHVy
biBjb25maWc7CisJfQorICAgIH0KICAgICBGY1JlZkluYyAoJmNvbmZpZy0+cmVmKTsKIAogICAg
IHJldHVybiBjb25maWc7CkBAIC00NzUsMjUgKzQ5NiwzMiBAQCBGY0Jvb2wKIEZjQ29uZmlnQnVp
bGRGb250cyAoRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBGY0ZvbnRTZXQJICAgICpmb250czsK
KyAgICBGY0Jvb2wJICAgIHJldCA9IEZjVHJ1ZTsKIAorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVm
ZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0Nv
bmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJldHVybiBGY0ZhbHNlOwot
ICAgIH0KKwlyZXR1cm4gRmNGYWxzZTsKIAkKICAgICBmb250cyA9IEZjRm9udFNldENyZWF0ZSAo
KTsKICAgICBpZiAoIWZvbnRzKQotCXJldHVybiBGY0ZhbHNlOworICAgIHsKKwlyZXQgPSBGY0Zh
bHNlOworCWdvdG8gYmFpbDsKKyAgICB9CiAKICAgICBGY0NvbmZpZ1NldEZvbnRzIChjb25maWcs
IGZvbnRzLCBGY1NldFN5c3RlbSk7CiAKICAgICBpZiAoIUZjQ29uZmlnQWRkRGlyTGlzdCAoY29u
ZmlnLCBGY1NldFN5c3RlbSwgY29uZmlnLT5mb250RGlycykpCi0JcmV0dXJuIEZjRmFsc2U7Cisg
ICAgeworCXJldCA9IEZjRmFsc2U7CisJZ290byBiYWlsOworICAgIH0KICAgICBpZiAoRmNEZWJ1
ZyAoKSAmIEZDX0RCR19GT05UU0VUKQogCUZjRm9udFNldFByaW50IChmb250cyk7Ci0gICAgcmV0
dXJuIEZjVHJ1ZTsKK2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOworCisgICAg
cmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC01MzcsMTMgKzU2NSwxNSBAQCBGY0NvbmZpZ0Fk
ZENvbmZpZ0RpciAoRmNDb25maWcJICAgICpjb25maWcsCiBGY1N0ckxpc3QgKgogRmNDb25maWdH
ZXRDb25maWdEaXJzIChGY0NvbmZpZyAgICpjb25maWcpCiB7CisgICAgRmNTdHJMaXN0ICpyZXQ7
CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmlnKTsKICAgICBpZiAoIWNv
bmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgpOwotCWlmICghY29u
ZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIEZjU3RyTGlzdENyZWF0ZSAo
Y29uZmlnLT5jb25maWdEaXJzKTsKKwlyZXR1cm4gTlVMTDsKKyAgICByZXQgPSBGY1N0ckxpc3RD
cmVhdGUgKGNvbmZpZy0+Y29uZmlnRGlycyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcp
OworCisgICAgcmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC01NzksMTMgKzYwOSwxNSBAQCBG
Y0NvbmZpZ1Jlc2V0Rm9udERpcnMgKEZjQ29uZmlnICpjb25maWcpCiBGY1N0ckxpc3QgKgogRmND
b25maWdHZXRGb250RGlycyAoRmNDb25maWcJKmNvbmZpZykKIHsKKyAgICBGY1N0ckxpc3QgKnJl
dDsKKworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICgh
Y29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFj
b25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gRmNTdHJMaXN0Q3JlYXRl
IChjb25maWctPmZvbnREaXJzKTsKKwlyZXR1cm4gTlVMTDsKKyAgICByZXQgPSBGY1N0ckxpc3RD
cmVhdGUgKGNvbmZpZy0+Zm9udERpcnMpOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK
KworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBGY0Jvb2wKQEAgLTY3MCwxNSArNzAyLDE3
IEBAIEZjQ29uZmlnQWRkQ2FjaGVEaXIgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogfQogCiBGY1N0
ckxpc3QgKgotRmNDb25maWdHZXRDYWNoZURpcnMgKGNvbnN0IEZjQ29uZmlnICpjb25maWcpCitG
Y0NvbmZpZ0dldENhY2hlRGlycyAoRmNDb25maWcgKmNvbmZpZykKIHsKKyAgICBGY1N0ckxpc3Qg
KnJldDsKKworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlm
ICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYg
KCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gRmNTdHJMaXN0Q3Jl
YXRlIChjb25maWctPmNhY2hlRGlycyk7CisJcmV0dXJuIE5VTEw7CisgICAgcmV0ID0gRmNTdHJM
aXN0Q3JlYXRlIChjb25maWctPmNhY2hlRGlycyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25m
aWcpOworCisgICAgcmV0dXJuIHJldDsKIH0KIAogRmNCb29sCkBAIC02OTksMTMgKzczMywxNSBA
QCBGY0NvbmZpZ0FkZENvbmZpZ0ZpbGUgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogRmNTdHJMaXN0
ICoKIEZjQ29uZmlnR2V0Q29uZmlnRmlsZXMgKEZjQ29uZmlnICAgICpjb25maWcpCiB7CisgICAg
RmNTdHJMaXN0ICpyZXQ7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln
KTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50
ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIEZj
U3RyTGlzdENyZWF0ZSAoY29uZmlnLT5jb25maWdGaWxlcyk7CisJcmV0dXJuIE5VTEw7CisgICAg
cmV0ID0gRmNTdHJMaXN0Q3JlYXRlIChjb25maWctPmNvbmZpZ0ZpbGVzKTsKKyAgICBGY0NvbmZp
Z0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiBGY0NoYXI4ICoKQEAg
LTc4NCwyNSArODIwLDI2IEBAIEZjQ29uZmlnQWRkQmxhbmsgKEZjQ29uZmlnCSpjb25maWcgRkNf
VU5VU0VELAogaW50CiBGY0NvbmZpZ0dldFJlc2NhbkludGVydmFsIChGY0NvbmZpZyAqY29uZmln
KQogeworICAgIGludCByZXQ7CisKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29u
ZmlnKTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJy
ZW50ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJu
IGNvbmZpZy0+cmVzY2FuSW50ZXJ2YWw7CisJcmV0dXJuIDA7CisgICAgcmV0ID0gY29uZmlnLT5y
ZXNjYW5JbnRlcnZhbDsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1
cm4gcmV0OwogfQogCiBGY0Jvb2wKIEZjQ29uZmlnU2V0UmVzY2FuSW50ZXJ2YWwgKEZjQ29uZmln
ICpjb25maWcsIGludCByZXNjYW5JbnRlcnZhbCkKIHsKKyAgICBjb25maWcgPSBGY0NvbmZpZ1Jl
ZmVyZW5jZSAoY29uZmlnKTsKICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmND
b25maWdHZXRDdXJyZW50ICgpOwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gRmNGYWxzZTsK
LSAgICB9CisJcmV0dXJuIEZjRmFsc2U7CiAgICAgY29uZmlnLT5yZXNjYW5JbnRlcnZhbCA9IHJl
c2NhbkludGVydmFsOworICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsKKwogICAgIHJldHVy
biBGY1RydWU7CiB9CiAKQEAgLTE2NzAsMTUgKzE3MDcsMTMgQEAgRmNDb25maWdTdWJzdGl0dXRl
V2l0aFBhdCAoRmNDb25maWcgICAgKmNvbmZpZywKICAgICBGY0Jvb2wJICAgIHJldHZhbCA9IEZj
VHJ1ZTsKICAgICBGY1Rlc3QJICAgICoqdHN0ID0gTlVMTDsKIAotICAgIGlmICghY29uZmlnKQot
ICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0J
ICAgIHJldHVybiBGY0ZhbHNlOwotICAgIH0KLQogICAgIGlmIChraW5kIDwgRmNNYXRjaEtpbmRC
ZWdpbiB8fCBraW5kID49IEZjTWF0Y2hLaW5kRW5kKQogCXJldHVybiBGY0ZhbHNlOworCisgICAg
Y29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CisgICAgaWYgKCFjb25maWcpCisJ
cmV0dXJuIEZjRmFsc2U7CisKICAgICBzID0gY29uZmlnLT5zdWJzdFtraW5kXTsKICAgICBpZiAo
a2luZCA9PSBGY01hdGNoUGF0dGVybikKICAgICB7CkBAIC0xOTczLDYgKzIwMDgsNyBAQCBiYWls
MToKIAlmcmVlICh2YWx1ZSk7CiAgICAgaWYgKHRzdCkKIAlmcmVlICh0c3QpOworICAgIEZjQ29u
ZmlnRGVzdHJveSAoY29uZmlnKTsKIAogICAgIHJldHVybiByZXR2YWw7CiB9CkBAIC0yMjkwLDEy
ICsyMzI2LDkgQEAgRmNDb25maWdHZXRGaWxlbmFtZSAoRmNDb25maWcgICAgICAqY29uZmlnLAog
ICAgIEZjQ2hhcjggICAgKmZpbGUsICpkaXIsICoqcGF0aCwgKipwOwogICAgIGNvbnN0IEZjQ2hh
cjggKnN5c3Jvb3Q7CiAKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmlnKTsK
ICAgICBpZiAoIWNvbmZpZykKLSAgICB7Ci0JY29uZmlnID0gRmNDb25maWdHZXRDdXJyZW50ICgp
OwotCWlmICghY29uZmlnKQotCSAgICByZXR1cm4gTlVMTDsKLSAgICB9CisJcmV0dXJuIE5VTEw7
CiAgICAgc3lzcm9vdCA9IEZjQ29uZmlnR2V0U3lzUm9vdCAoY29uZmlnKTsKICAgICBpZiAoIXVy
bCB8fCAhKnVybCkKICAgICB7CkBAIC0yMzA2LDcgKzIzMzksMTAgQEAgRmNDb25maWdHZXRGaWxl
bmFtZSAoRmNDb25maWcgICAgICAqY29uZmlnLAogICAgIGZpbGUgPSAwOwogCiAgICAgaWYgKEZj
U3RySXNBYnNvbHV0ZUZpbGVuYW1lKHVybCkpCi0JcmV0dXJuIEZjQ29uZmlnRmlsZUV4aXN0cyAo
c3lzcm9vdCwgdXJsKTsKKyAgICB7CisJZmlsZSA9IEZjQ29uZmlnRmlsZUV4aXN0cyAoc3lzcm9v
dCwgdXJsKTsKKwlnb3RvIGJhaWw7CisgICAgfQogCiAgICAgaWYgKCp1cmwgPT0gJ34nKQogICAg
IHsKQEAgLTIzMzAsNyArMjM2NiwxMCBAQCBGY0NvbmZpZ0dldEZpbGVuYW1lIChGY0NvbmZpZyAg
ICAgICpjb25maWcsCiAgICAgewogCXBhdGggPSBGY0NvbmZpZ0dldFBhdGggKCk7CiAJaWYgKCFw
YXRoKQotCSAgICByZXR1cm4gTlVMTDsKKwl7CisJICAgIGZpbGUgPSBOVUxMOworCSAgICBnb3Rv
IGJhaWw7CisJfQogCWZvciAocCA9IHBhdGg7ICpwOyBwKyspCiAJewogCSAgICBGY0NoYXI4ICpz
OwpAQCAtMjM0Nyw2ICsyMzg2LDkgQEAgRmNDb25maWdHZXRGaWxlbmFtZSAoRmNDb25maWcgICAg
ICAqY29uZmlnLAogCX0KIAlGY0NvbmZpZ0ZyZWVQYXRoIChwYXRoKTsKICAgICB9CitiYWlsOgor
ICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsKKwogICAgIHJldHVybiBmaWxlOwogfQogCkBA
IC0yNDA5LDE3ICsyNDUxLDE4IEBAIEZjQ29uZmlnQXBwRm9udEFkZEZpbGUgKEZjQ29uZmlnICAg
ICpjb25maWcsCiAgICAgRmNTdHJTZXQJKnN1YmRpcnM7CiAgICAgRmNTdHJMaXN0CSpzdWJsaXN0
OwogICAgIEZjQ2hhcjgJKnN1YmRpcjsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwogCisgICAg
Y29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcpCi0g
ICAgewotCWNvbmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkg
ICAgcmV0dXJuIEZjRmFsc2U7Ci0gICAgfQorCXJldHVybiBGY0ZhbHNlOwogCiAgICAgc3ViZGly
cyA9IEZjU3RyU2V0Q3JlYXRlRXggKEZDU1NfR1JPV19CWV82NCk7CiAgICAgaWYgKCFzdWJkaXJz
KQotCXJldHVybiBGY0ZhbHNlOworICAgIHsKKwlyZXQgPSBGY0ZhbHNlOworCWdvdG8gYmFpbDsK
KyAgICB9CiAKICAgICBzZXQgPSBGY0NvbmZpZ0dldEZvbnRzIChjb25maWcsIEZjU2V0QXBwbGlj
YXRpb24pOwogICAgIGlmICghc2V0KQpAQCAtMjQyOCw3ICsyNDcxLDggQEAgRmNDb25maWdBcHBG
b250QWRkRmlsZSAoRmNDb25maWcgICAgKmNvbmZpZywKIAlpZiAoIXNldCkKIAl7CiAJICAgIEZj
U3RyU2V0RGVzdHJveSAoc3ViZGlycyk7Ci0JICAgIHJldHVybiBGY0ZhbHNlOworCSAgICByZXQg
PSBGY0ZhbHNlOworCSAgICBnb3RvIGJhaWw7CiAJfQogCUZjQ29uZmlnU2V0Rm9udHMgKGNvbmZp
Zywgc2V0LCBGY1NldEFwcGxpY2F0aW9uKTsKICAgICB9CkBAIC0yNDM2LDcgKzI0ODAsOCBAQCBG
Y0NvbmZpZ0FwcEZvbnRBZGRGaWxlIChGY0NvbmZpZyAgICAqY29uZmlnLAogICAgIGlmICghRmNG
aWxlU2NhbkNvbmZpZyAoc2V0LCBzdWJkaXJzLCBmaWxlLCBjb25maWcpKQogICAgIHsKIAlGY1N0
clNldERlc3Ryb3kgKHN1YmRpcnMpOwotCXJldHVybiBGY0ZhbHNlOworCXJldCA9IEZjRmFsc2U7
CisJZ290byBiYWlsOwogICAgIH0KICAgICBpZiAoKHN1Ymxpc3QgPSBGY1N0ckxpc3RDcmVhdGUg
KHN1YmRpcnMpKSkKICAgICB7CkBAIC0yNDQ3LDcgKzI0OTIsMTAgQEAgRmNDb25maWdBcHBGb250
QWRkRmlsZSAoRmNDb25maWcgICAgKmNvbmZpZywKIAlGY1N0ckxpc3REb25lIChzdWJsaXN0KTsK
ICAgICB9CiAgICAgRmNTdHJTZXREZXN0cm95IChzdWJkaXJzKTsKLSAgICByZXR1cm4gRmNUcnVl
OworYmFpbDoKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0
OwogfQogCiBGY0Jvb2wKQEAgLTI0NTYsMTcgKzI1MDQsMTggQEAgRmNDb25maWdBcHBGb250QWRk
RGlyIChGY0NvbmZpZwkgICAgKmNvbmZpZywKIHsKICAgICBGY0ZvbnRTZXQJKnNldDsKICAgICBG
Y1N0clNldAkqZGlyczsKKyAgICBGY0Jvb2wJcmV0ID0gRmNUcnVlOwogCisgICAgY29uZmlnID0g
RmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcpCi0gICAgewotCWNv
bmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkgICAgcmV0dXJu
IEZjRmFsc2U7Ci0gICAgfQorCXJldHVybiBGY0ZhbHNlOwogCiAgICAgZGlycyA9IEZjU3RyU2V0
Q3JlYXRlRXggKEZDU1NfR1JPV19CWV82NCk7CiAgICAgaWYgKCFkaXJzKQotCXJldHVybiBGY0Zh
bHNlOworICAgIHsKKwlyZXQgPSBGY0ZhbHNlOworCWdvdG8gYmFpbDsKKyAgICB9CiAKICAgICBz
ZXQgPSBGY0NvbmZpZ0dldEZvbnRzIChjb25maWcsIEZjU2V0QXBwbGljYXRpb24pOwogICAgIGlm
ICghc2V0KQpAQCAtMjQ3NSw3ICsyNTI0LDggQEAgRmNDb25maWdBcHBGb250QWRkRGlyIChGY0Nv
bmZpZwkgICAgKmNvbmZpZywKIAlpZiAoIXNldCkKIAl7CiAJICAgIEZjU3RyU2V0RGVzdHJveSAo
ZGlycyk7Ci0JICAgIHJldHVybiBGY0ZhbHNlOworCSAgICByZXQgPSBGY0ZhbHNlOworCSAgICBn
b3RvIGJhaWw7CiAJfQogCUZjQ29uZmlnU2V0Rm9udHMgKGNvbmZpZywgc2V0LCBGY1NldEFwcGxp
Y2F0aW9uKTsKICAgICB9CkBAIC0yNDg1LDIzICsyNTM1LDI2IEBAIEZjQ29uZmlnQXBwRm9udEFk
ZERpciAoRmNDb25maWcJICAgICpjb25maWcsCiAgICAgaWYgKCFGY0NvbmZpZ0FkZERpckxpc3Qg
KGNvbmZpZywgRmNTZXRBcHBsaWNhdGlvbiwgZGlycykpCiAgICAgewogCUZjU3RyU2V0RGVzdHJv
eSAoZGlycyk7Ci0JcmV0dXJuIEZjRmFsc2U7CisJcmV0ID0gRmNGYWxzZTsKKwlnb3RvIGJhaWw7
CiAgICAgfQogICAgIEZjU3RyU2V0RGVzdHJveSAoZGlycyk7Ci0gICAgcmV0dXJuIEZjVHJ1ZTsK
K2JhaWw6CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOworCisgICAgcmV0dXJuIHJldDsK
IH0KIAogdm9pZAogRmNDb25maWdBcHBGb250Q2xlYXIgKEZjQ29uZmlnCSAgICAqY29uZmlnKQog
eworICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29u
ZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25m
aWcpCi0JICAgIHJldHVybjsKLSAgICB9CisJcmV0dXJuOwogCiAgICAgRmNDb25maWdTZXRGb250
cyAoY29uZmlnLCAwLCBGY1NldEFwcGxpY2F0aW9uKTsKKworICAgIEZjQ29uZmlnRGVzdHJveSAo
Y29uZmlnKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9mY2Rpci5jIGIvc3JjL2ZjZGlyLmMK
aW5kZXggN2Q3YjIzYy4uNjkzYzg0NSAxMDA2NDQKLS0tIGEvc3JjL2ZjZGlyLmMKKysrIGIvc3Jj
L2ZjZGlyLmMKQEAgLTE2Nyw3ICsxNjcsMTYgQEAgRmNGaWxlU2NhbiAoRmNGb250U2V0CSAgICAq
c2V0LAogCSAgICBjb25zdCBGY0NoYXI4ICAgKmZpbGUsCiAJICAgIEZjQm9vbAkgICAgZm9yY2Ug
RkNfVU5VU0VEKQogewotICAgIHJldHVybiBGY0ZpbGVTY2FuQ29uZmlnIChzZXQsIGRpcnMsIGZp
bGUsIEZjQ29uZmlnR2V0Q3VycmVudCAoKSk7CisgICAgRmNDb25maWcgKmNvbmZpZzsKKyAgICBG
Y0Jvb2wgcmV0OworCisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKE5VTEwpOworICAg
IGlmICghY29uZmlnKQorCXJldHVybiBGY0ZhbHNlOworICAgIHJldCA9IEZjRmlsZVNjYW5Db25m
aWcgKHNldCwgZGlycywgZmlsZSwgY29uZmlnKTsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZp
Zyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKgpAQCAtMjcxLDEwICsyODAsMTkgQEAgRmNE
aXJTY2FuIChGY0ZvbnRTZXQJICAgICpzZXQsCiAJICAgY29uc3QgRmNDaGFyOCAgICAqZGlyLAog
CSAgIEZjQm9vbAkgICAgZm9yY2UgRkNfVU5VU0VEKQogeworICAgIEZjQ29uZmlnICpjb25maWc7
CisgICAgRmNCb29sIHJldDsKKwogICAgIGlmIChjYWNoZSB8fCAhZm9yY2UpCiAJcmV0dXJuIEZj
RmFsc2U7CiAKLSAgICByZXR1cm4gRmNEaXJTY2FuQ29uZmlnIChzZXQsIGRpcnMsIGRpciwgZm9y
Y2UsIEZjQ29uZmlnR2V0Q3VycmVudCAoKSk7CisgICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVu
Y2UgKE5VTEwpOworICAgIGlmICghY29uZmlnKQorCXJldHVybiBGY0ZhbHNlOworICAgIHJldCA9
IEZjRGlyU2NhbkNvbmZpZyAoc2V0LCBkaXJzLCBkaXIsIGZvcmNlLCBjb25maWcpOworICAgIEZj
Q29uZmlnRGVzdHJveSAoY29uZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIC8qCkBAIC0z
NTMsMTIgKzM3MSwxNiBAQCBGY0RpckNhY2hlUmVzY2FuIChjb25zdCBGY0NoYXI4ICpkaXIsIEZj
Q29uZmlnICpjb25maWcpCiAgICAgRmNDYWNoZSAqbmV3ID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3Rh
dCBkaXJfc3RhdDsKICAgICBGY1N0clNldCAqZGlyczsKLSAgICBjb25zdCBGY0NoYXI4ICpzeXNy
b290ID0gRmNDb25maWdHZXRTeXNSb290IChjb25maWcpOworICAgIGNvbnN0IEZjQ2hhcjggKnN5
c3Jvb3Q7CiAgICAgRmNDaGFyOCAqZCA9IE5VTEw7CiAjaWZuZGVmIF9XSU4zMgogICAgIGludCBm
ZCA9IC0xOwogI2VuZGlmCiAKKyAgICBjb25maWcgPSBGY0NvbmZpZ1JlZmVyZW5jZSAoY29uZmln
KTsKKyAgICBpZiAoIWNvbmZpZykKKwlyZXR1cm4gTlVMTDsKKyAgICBzeXNyb290ID0gRmNDb25m
aWdHZXRTeXNSb290IChjb25maWcpOwogICAgIGNhY2hlID0gRmNEaXJDYWNoZUxvYWQgKGRpciwg
Y29uZmlnLCBOVUxMKTsKICAgICBpZiAoIWNhY2hlKQogCWdvdG8gYmFpbDsKQEAgLTQwMSw2ICs0
MjMsNyBAQCBiYWlsMToKIGJhaWw6CiAgICAgaWYgKGQpCiAJRmNTdHJGcmVlIChkKTsKKyAgICBG
Y0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4gbmV3OwogfQpAQCAtNDEzLDYg
KzQzNiw3IEBAIEZjRGlyQ2FjaGVSZWFkIChjb25zdCBGY0NoYXI4ICpkaXIsIEZjQm9vbCBmb3Jj
ZSwgRmNDb25maWcgKmNvbmZpZykKIHsKICAgICBGY0NhY2hlCQkqY2FjaGUgPSBOVUxMOwogCisg
ICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgLyogVHJ5IHRvIHVz
ZSBleGlzdGluZyBjYWNoZSBmaWxlICovCiAgICAgaWYgKCFmb3JjZSkKIAljYWNoZSA9IEZjRGly
Q2FjaGVMb2FkIChkaXIsIGNvbmZpZywgTlVMTCk7CkBAIC00MjAsNiArNDQ0LDcgQEAgRmNEaXJD
YWNoZVJlYWQgKGNvbnN0IEZjQ2hhcjggKmRpciwgRmNCb29sIGZvcmNlLCBGY0NvbmZpZyAqY29u
ZmlnKQogICAgIC8qIE5vdCB1c2luZyBleGlzdGluZyBjYWNoZSBmaWxlLCBjb25zdHJ1Y3QgbmV3
IGNhY2hlICovCiAgICAgaWYgKCFjYWNoZSkKIAljYWNoZSA9IEZjRGlyQ2FjaGVTY2FuIChkaXIs
IGNvbmZpZyk7CisgICAgRmNDb25maWdEZXN0cm95IChjb25maWcpOwogCiAgICAgcmV0dXJuIGNh
Y2hlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2ZjaW5pdC5jIGIvc3JjL2ZjaW5pdC5jCmluZGV4IDU4
MzFhMTkuLjZmODJlYmQgMTAwNjQ0Ci0tLSBhL3NyYy9mY2luaXQuYworKysgYi9zcmMvZmNpbml0
LmMKQEAgLTIyOSw3ICsyMjksOCBAQCBGY0luaXRSZWluaXRpYWxpemUgKHZvaWQpCiBGY0Jvb2wK
IEZjSW5pdEJyaW5nVXB0b0RhdGUgKHZvaWQpCiB7Ci0gICAgRmNDb25maWcJKmNvbmZpZyA9IEZj
Q29uZmlnR2V0Q3VycmVudCAoKTsKKyAgICBGY0NvbmZpZwkqY29uZmlnID0gRmNDb25maWdSZWZl
cmVuY2UgKE5VTEwpOworICAgIEZjQm9vbAlyZXQgPSBGY1RydWU7CiAgICAgdGltZV90CW5vdzsK
IAogICAgIGlmICghY29uZmlnKQpAQCAtMjM4LDE5ICsyMzksMjMgQEAgRmNJbml0QnJpbmdVcHRv
RGF0ZSAodm9pZCkKICAgICAgKiByZXNjYW5JbnRlcnZhbCA9PSAwIGRpc2FibGVzIGF1dG9tYXRp
YyB1cCB0byBkYXRlCiAgICAgICovCiAgICAgaWYgKGNvbmZpZy0+cmVzY2FuSW50ZXJ2YWwgPT0g
MCkKLQlyZXR1cm4gRmNUcnVlOworCWdvdG8gYmFpbDsKICAgICAvKgogICAgICAqIENoZWNrIG5v
IG1vcmUgb2Z0ZW4gdGhhbiByZXNjYW5JbnRlcnZhbCBzZWNvbmRzCiAgICAgICovCiAgICAgbm93
ID0gdGltZSAoMCk7CiAgICAgaWYgKGNvbmZpZy0+cmVzY2FuVGltZSArIGNvbmZpZy0+cmVzY2Fu
SW50ZXJ2YWwgLSBub3cgPiAwKQotCXJldHVybiBGY1RydWU7CisJZ290byBiYWlsOwogICAgIC8q
CiAgICAgICogSWYgdXAgdG8gZGF0ZSwgZG9uJ3QgcmVsb2FkIGNvbmZpZ3VyYXRpb24KICAgICAg
Ki8KICAgICBpZiAoRmNDb25maWdVcHRvRGF0ZSAoMCkpCi0JcmV0dXJuIEZjVHJ1ZTsKLSAgICBy
ZXR1cm4gRmNJbml0UmVpbml0aWFsaXplICgpOworCWdvdG8gYmFpbDsKKyAgICByZXQgPSBGY0lu
aXRSZWluaXRpYWxpemUgKCk7CitiYWlsOgorICAgIEZjQ29uZmlnRGVzdHJveSAoY29uZmlnKTsK
KworICAgIHJldHVybiByZXQ7CiB9CiAKICNkZWZpbmUgX19mY2luaXRfXwpkaWZmIC0tZ2l0IGEv
c3JjL2ZjbGlzdC5jIGIvc3JjL2ZjbGlzdC5jCmluZGV4IDQ5NGJkZWEuLjA1MzgwM2IgMTAwNjQ0
Ci0tLSBhL3NyYy9mY2xpc3QuYworKysgYi9zcmMvZmNsaXN0LmMKQEAgLTQ5MSwxMSArNDkxLDEw
IEBAIEZjRm9udFNldExpc3QgKEZjQ29uZmlnCSAgICAqY29uZmlnLAogICAgIHsKIAlpZiAoIUZj
SW5pdEJyaW5nVXB0b0RhdGUgKCkpCiAJICAgIGdvdG8gYmFpbDA7Ci0KLQljb25maWcgPSBGY0Nv
bmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIGdvdG8gYmFpbDA7CiAgICAg
fQorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29u
ZmlnKQorCWdvdG8gYmFpbDA7CiAgICAgRmNMaXN0SGFzaFRhYmxlSW5pdCAoJnRhYmxlKTsKIAog
ICAgIGlmICghb3MpCkBAIC01NTgsNyArNTU3LDcgQEAgRmNGb250U2V0TGlzdCAoRmNDb25maWcJ
ICAgICpjb25maWcsCiAgICAgICovCiAgICAgcmV0ID0gRmNGb250U2V0Q3JlYXRlICgpOwogICAg
IGlmICghcmV0KQotCWdvdG8gYmFpbDA7CisJZ290byBiYWlsMTsKICAgICBmb3IgKGkgPSAwOyBp
IDwgRkNfTElTVF9IQVNIX1NJWkU7IGkrKykKIAl3aGlsZSAoKGJ1Y2tldCA9IHRhYmxlLmJ1Y2tl
dHNbaV0pKQogCXsKQEAgLTU3MCw2ICs1NjksNyBAQCBGY0ZvbnRTZXRMaXN0IChGY0NvbmZpZwkg
ICAgKmNvbmZpZywKIAogICAgIGlmIChkZXN0cm95X29zKQogICAgICAgICBGY09iamVjdFNldERl
c3Ryb3kgKG9zKTsKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CiAKICAgICByZXR1cm4g
cmV0OwogCkBAIC01NzcsNiArNTc3LDcgQEAgYmFpbDI6CiAgICAgRmNGb250U2V0RGVzdHJveSAo
cmV0KTsKIGJhaWwxOgogICAgIEZjTGlzdEhhc2hUYWJsZUNsZWFudXAgKCZ0YWJsZSk7CisgICAg
RmNDb25maWdEZXN0cm95IChjb25maWcpOwogYmFpbDA6CiAgICAgaWYgKGRlc3Ryb3lfb3MpCiAJ
RmNPYmplY3RTZXREZXN0cm95IChvcyk7CkBAIC01ODgsMjQgKzU4OSwyNiBAQCBGY0ZvbnRMaXN0
IChGY0NvbmZpZwkqY29uZmlnLAogCSAgICBGY1BhdHRlcm4JKnAsCiAJICAgIEZjT2JqZWN0U2V0
ICpvcykKIHsKLSAgICBGY0ZvbnRTZXQJKnNldHNbMl07CisgICAgRmNGb250U2V0CSpzZXRzWzJd
LCAqcmV0OwogICAgIGludAkJbnNldHM7CiAKICAgICBpZiAoIWNvbmZpZykKICAgICB7CiAJaWYg
KCFGY0luaXRCcmluZ1VwdG9EYXRlICgpKQogCSAgICByZXR1cm4gMDsKLQotCWNvbmZpZyA9IEZj
Q29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykKLQkgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOworICAgIGlmICghY29u
ZmlnKQorCXJldHVybiBOVUxMOwogICAgIG5zZXRzID0gMDsKICAgICBpZiAoY29uZmlnLT5mb250
c1tGY1NldFN5c3RlbV0pCiAJc2V0c1tuc2V0cysrXSA9IGNvbmZpZy0+Zm9udHNbRmNTZXRTeXN0
ZW1dOwogICAgIGlmIChjb25maWctPmZvbnRzW0ZjU2V0QXBwbGljYXRpb25dKQogCXNldHNbbnNl
dHMrK10gPSBjb25maWctPmZvbnRzW0ZjU2V0QXBwbGljYXRpb25dOwotICAgIHJldHVybiBGY0Zv
bnRTZXRMaXN0IChjb25maWcsIHNldHMsIG5zZXRzLCBwLCBvcyk7CisgICAgcmV0ID0gRmNGb250
U2V0TGlzdCAoY29uZmlnLCBzZXRzLCBuc2V0cywgcCwgb3MpOworICAgIEZjQ29uZmlnRGVzdHJv
eSAoY29uZmlnKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAjZGVmaW5lIF9fZmNsaXN0X18KICNp
bmNsdWRlICJmY2FsaWFzdGFpbC5oIgpkaWZmIC0tZ2l0IGEvc3JjL2ZjbWF0Y2guYyBiL3NyYy9m
Y21hdGNoLmMKaW5kZXggNzhiY2Y3Yi4uM2JjMzUyYiAxMDA2NDQKLS0tIGEvc3JjL2ZjbWF0Y2gu
YworKysgYi9zcmMvZmNtYXRjaC5jCkBAIC04NDUsNyArODQ1LDcgQEAgRmNGb250U2V0TWF0Y2gg
KEZjQ29uZmlnICAgICpjb25maWcsCiAJCUZjUGF0dGVybiAgICpwLAogCQlGY1Jlc3VsdCAgICAq
cmVzdWx0KQogewotICAgIEZjUGF0dGVybgkgICAgKmJlc3Q7CisgICAgRmNQYXR0ZXJuCSAgICAq
YmVzdCwgKnJldCA9IE5VTEw7CiAKICAgICBhc3NlcnQgKHNldHMgIT0gTlVMTCk7CiAgICAgYXNz
ZXJ0IChwICE9IE5VTEwpOwpAQCAtODUzLDE3ICs4NTMsMTYgQEAgRmNGb250U2V0TWF0Y2ggKEZj
Q29uZmlnICAgICpjb25maWcsCiAKICAgICAqcmVzdWx0ID0gRmNSZXN1bHROb01hdGNoOwogCisg
ICAgY29uZmlnID0gRmNDb25maWdSZWZlcmVuY2UgKGNvbmZpZyk7CiAgICAgaWYgKCFjb25maWcp
Ci0gICAgewotCWNvbmZpZyA9IEZjQ29uZmlnR2V0Q3VycmVudCAoKTsKLQlpZiAoIWNvbmZpZykK
LQkgICAgcmV0dXJuIDA7Ci0gICAgfQorCSAgICByZXR1cm4gTlVMTDsKICAgICBiZXN0ID0gRmNG
b250U2V0TWF0Y2hJbnRlcm5hbCAoc2V0cywgbnNldHMsIHAsIHJlc3VsdCk7CiAgICAgaWYgKGJl
c3QpCi0JcmV0dXJuIEZjRm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywgcCwgYmVzdCk7Ci0gICAg
ZWxzZQotCXJldHVybiBOVUxMOworCXJldCA9IEZjRm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywg
cCwgYmVzdCk7CisKKyAgICBGY0NvbmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4g
cmV0OwogfQogCiBGY1BhdHRlcm4gKgpAQCAtODczLDE5ICs4NzIsMTYgQEAgRmNGb250TWF0Y2gg
KEZjQ29uZmlnCSpjb25maWcsCiB7CiAgICAgRmNGb250U2V0CSpzZXRzWzJdOwogICAgIGludAkJ
bnNldHM7Ci0gICAgRmNQYXR0ZXJuICAgKmJlc3Q7CisgICAgRmNQYXR0ZXJuICAgKmJlc3QsICpy
ZXQgPSBOVUxMOwogCiAgICAgYXNzZXJ0IChwICE9IE5VTEwpOwogICAgIGFzc2VydCAocmVzdWx0
ICE9IE5VTEwpOwogCiAgICAgKnJlc3VsdCA9IEZjUmVzdWx0Tm9NYXRjaDsKIAorICAgIGNvbmZp
ZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcpOwogICAgIGlmICghY29uZmlnKQotICAgIHsK
LQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQgKCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJl
dHVybiAwOwotICAgIH0KKwlyZXR1cm4gTlVMTDsKICAgICBuc2V0cyA9IDA7CiAgICAgaWYgKGNv
bmZpZy0+Zm9udHNbRmNTZXRTeXN0ZW1dKQogCXNldHNbbnNldHMrK10gPSBjb25maWctPmZvbnRz
W0ZjU2V0U3lzdGVtXTsKQEAgLTg5NCw5ICs4OTAsMTEgQEAgRmNGb250TWF0Y2ggKEZjQ29uZmln
CSpjb25maWcsCiAKICAgICBiZXN0ID0gRmNGb250U2V0TWF0Y2hJbnRlcm5hbCAoc2V0cywgbnNl
dHMsIHAsIHJlc3VsdCk7CiAgICAgaWYgKGJlc3QpCi0JcmV0dXJuIEZjRm9udFJlbmRlclByZXBh
cmUgKGNvbmZpZywgcCwgYmVzdCk7Ci0gICAgZWxzZQotCXJldHVybiBOVUxMOworCXJldCA9IEZj
Rm9udFJlbmRlclByZXBhcmUgKGNvbmZpZywgcCwgYmVzdCk7CisKKyAgICBGY0NvbmZpZ0Rlc3Ry
b3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiB0eXBlZGVmIHN0cnVjdCBfRmNT
b3J0Tm9kZSB7CkBAIC0xMTgzLDcgKzExODEsNyBAQCBGY0ZvbnRTb3J0IChGY0NvbmZpZwkqY29u
ZmlnLAogCSAgICBGY0NoYXJTZXQJKipjc3AsCiAJICAgIEZjUmVzdWx0CSpyZXN1bHQpCiB7Ci0g
ICAgRmNGb250U2V0CSpzZXRzWzJdOworICAgIEZjRm9udFNldAkqc2V0c1syXSwgKnJldDsKICAg
ICBpbnQJCW5zZXRzOwogCiAgICAgYXNzZXJ0IChwICE9IE5VTEwpOwpAQCAtMTE5MSwxOCArMTE4
OSwxOCBAQCBGY0ZvbnRTb3J0IChGY0NvbmZpZwkqY29uZmlnLAogCiAgICAgKnJlc3VsdCA9IEZj
UmVzdWx0Tm9NYXRjaDsKIAorICAgIGNvbmZpZyA9IEZjQ29uZmlnUmVmZXJlbmNlIChjb25maWcp
OwogICAgIGlmICghY29uZmlnKQotICAgIHsKLQljb25maWcgPSBGY0NvbmZpZ0dldEN1cnJlbnQg
KCk7Ci0JaWYgKCFjb25maWcpCi0JICAgIHJldHVybiAwOwotICAgIH0KKwlyZXR1cm4gTlVMTDsK
ICAgICBuc2V0cyA9IDA7CiAgICAgaWYgKGNvbmZpZy0+Zm9udHNbRmNTZXRTeXN0ZW1dKQogCXNl
dHNbbnNldHMrK10gPSBjb25maWctPmZvbnRzW0ZjU2V0U3lzdGVtXTsKICAgICBpZiAoY29uZmln
LT5mb250c1tGY1NldEFwcGxpY2F0aW9uXSkKIAlzZXRzW25zZXRzKytdID0gY29uZmlnLT5mb250
c1tGY1NldEFwcGxpY2F0aW9uXTsKLSAgICByZXR1cm4gRmNGb250U2V0U29ydCAoY29uZmlnLCBz
ZXRzLCBuc2V0cywgcCwgdHJpbSwgY3NwLCByZXN1bHQpOworICAgIHJldCA9IEZjRm9udFNldFNv
cnQgKGNvbmZpZywgc2V0cywgbnNldHMsIHAsIHRyaW0sIGNzcCwgcmVzdWx0KTsKKyAgICBGY0Nv
bmZpZ0Rlc3Ryb3kgKGNvbmZpZyk7CisKKyAgICByZXR1cm4gcmV0OwogfQogI2RlZmluZSBfX2Zj
bWF0Y2hfXwogI2luY2x1ZGUgImZjYWxpYXN0YWlsLmgiCmRpZmYgLS1naXQgYS90ZXN0L01ha2Vm
aWxlLmFtIGIvdGVzdC9NYWtlZmlsZS5hbQppbmRleCBlNDRhYTBiLi5hYWU0NWNiIDEwMDY0NAot
LS0gYS90ZXN0L01ha2VmaWxlLmFtCisrKyBiL3Rlc3QvTWFrZWZpbGUuYW0KQEAgLTQyLDYgKzQy
LDExIEBAIHRlc3RfcHRocmVhZF9MREFERCA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGliZm9udGNv
bmZpZy5sYQogIyBXZSBkb24ndCBlbmFibGUgdGhpcyB0ZXN0IGJ5IGRlZmF1bHQgYmVjYXVzZSBp
dCB3aWxsIHJlcXVpcmUgY29uZmlnIGFuZCBmb250cwogIyB0byBtZWFuaW5nZnVsbHkgdGVzdCBh
bnl0aGluZywgYW5kIHdlIGFyZSBub3QgaW5zdGFsbGVkIHlldC4KICNURVNUUyArPSB0ZXN0LXB0
aHJlYWQKKworY2hlY2tfUFJPR1JBTVMgKz0gdGVzdC1jcmJ1ZzEwMDQyNTQKK3Rlc3RfY3JidWcx
MDA0MjU0X0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJmb250Y29uZmlnLmxhCisjIERp
c2FibGluZyB0aGlzIGZvciB0aGUgc2FtZSByZWFzb24gYXMgYWJvdmUgYnV0IHRyeWluZyB0byBy
dW4gaW4gcnVuLXRlc3Quc2guCisjVEVTVFMgKz0gdGVzdC1jcmJ1ZzEwMDQyNTQKIGVuZGlmCiBj
aGVja19QUk9HUkFNUyArPSB0ZXN0LWJ6ODk2MTcKIHRlc3RfYno4OTYxN19DRkxBR1MgPSBcCmRp
ZmYgLS1naXQgYS90ZXN0L3J1bi10ZXN0LnNoIGIvdGVzdC9ydW4tdGVzdC5zaAppbmRleCA4YWQw
OWUzLi5lMWVlNmQwIDEwMDY0NAotLS0gYS90ZXN0L3J1bi10ZXN0LnNoCisrKyBiL3Rlc3QvcnVu
LXRlc3Quc2gKQEAgLTIwLDYgKzIwLDggQEAKICMgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgogIyBUT1JUSU9VUyBB
Q1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAj
IFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCitzZXQgLWUKKwogY2FzZSAiJE9TVFlQRSIg
aW4KICAgICBtc3lzICkgTXlQV0Q9YHB3ZCAtV2AgOzsgICMgT24gTXN5cy9NaW5HVywgcmV0dXJu
cyBhIE1TIFdpbmRvd3Mgc3R5bGUgcGF0aC4KICAgICAqICAgICkgTXlQV0Q9YHB3ZGAgICAgOzsg
ICMgT24gYW55IG90aGVyIHBsYXRmb3JtcywgcmV0dXJucyBhIFVuaXggc3R5bGUgcGF0aC4KQEAg
LTQwOCw0ICs0MTAsMTcgQEAgcm0gLXJmICRNWUNBQ0hFQkFTRURJUiAkTVlDT05GSUcgbXktZm9u
dHMuY29uZiBteS1vdXQgbXktb3V0LmV4cGVjdGVkCiAKIGZpICMgaWYgWyAieCRFWEVFWFQiID0g
IngiIF0KIAoraWYgWyAteCAkQlVJTERURVNURElSL3Rlc3QtY3JidWcxMDA0MjU0IF07IHRoZW4K
KyAgICBkb3Rlc3QgIk1ULXNhZmUgZ2xvYmFsIGNvbmZpZyIKKyAgICBwcmVwCisgICAgY3VybCAt
cyAtbyAkRk9OVERJUi9ub3RvLnppcCBodHRwczovL25vdG8td2Vic2l0ZS0yLnN0b3JhZ2UuZ29v
Z2xlYXBpcy5jb20vcGtncy9Ob3RvU2Fucy1oaW50ZWQuemlwCisgICAgKGNkICRGT05URElSOyB1
bnppcCBub3RvLnppcCkKKyAgICBpZiBbIC1uICR7U09VUkNFX0RBVEVfRVBPQ0g6LX0gXSAmJiBb
ICR7I1NPVVJDRV9EQVRFX0VQT0NIfSAtZ3QgMCBdOyB0aGVuCisJdG91Y2ggLW0gLXQgImBkYXRl
IC1kIFwiQCR7U09VUkNFX0RBVEVfRVBPQ0h9XCIgKyV5JW0lZCVIJU0uJVNgIiAkRk9OVERJUgor
ICAgIGZpCisgICAgJEJVSUxEVEVTVERJUi90ZXN0LWNyYnVnMTAwNDI1NAorZWxzZQorICAgIGVj
aG8gIk5vIHRlc3QtY3JidWcxMDA0MjU0OiBza2lwcGVkIgorZmkKKwogcm0gLXJmICRGT05URElS
ICRDQUNIRUZJTEUgJENBQ0hFRElSICRCQVNFRElSICRGT05UQ09ORklHX0ZJTEUgb3V0CmRpZmYg
LS1naXQgYS90ZXN0L3Rlc3QtY3JidWcxMDA0MjU0LmMgYi90ZXN0L3Rlc3QtY3JidWcxMDA0MjU0
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNjNmZjNwotLS0gL2Rldi9u
dWxsCisrKyBiL3Rlc3QvdGVzdC1jcmJ1ZzEwMDQyNTQuYwpAQCAtMCwwICsxLDExNiBAQAorLyoK
KyAqIGZvbnRjb25maWcvdGVzdC90ZXN0LXB0aHJlYWQuYworICoKKyAqIENvcHlyaWdodCDCqSAy
MDAwIEtlaXRoIFBhY2thcmQKKyAqIENvcHlyaWdodCDCqSAyMDEzIFJhaW11bmQgU3RlZ2VyCisg
KgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNl
bGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCisgKiBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9z
ZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAorICogdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0
aGF0CisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVh
ciBpbiBzdXBwb3J0aW5nCisgKiBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0
aGUgYXV0aG9yKHMpIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkg
cGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNw
ZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgYXV0aG9ycyBtYWtlIG5vCisg
KiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUg
Zm9yIGFueSBwdXJwb3NlLiAgSXQKKyAqIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHBy
ZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKgorICogVEhFIEFVVEhPUihTKSBESVNDTEFJTVMg
QUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKKyAqIElOQ0xVRElO
RyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywg
SU4gTk8KKyAqIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgU1BF
Q0lBTCwgSU5ESVJFQ1QgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdF
UyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLAorICogREFUQSBPUiBQUk9G
SVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhF
UgorICogVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFVTRSBPUgorICogUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+
CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5o
PgorCitzdHJ1Y3QgdGhyX2FyZ19zCit7CisgICAgaW50IHRocl9udW07Cit9OworCitzdGF0aWMg
dm9pZAorcnVuX3F1ZXJ5ICh2b2lkKQoreworICAgIEZjUGF0dGVybiAqcGF0ID0gRmNQYXR0ZXJu
Q3JlYXRlICgpLCAqbWF0Y2g7CisgICAgRmNSZXN1bHQgcmVzdWx0OworCisgICAgRmNQYXR0ZXJu
QWRkU3RyaW5nIChwYXQsIEZDX0ZBTUlMWSwgInNhbnMtc2VyaWYiKTsKKyAgICBGY1BhdHRlcm5B
ZGRCb29sIChwYXQsIEZDX1NDQUxBQkxFLCBGY1RydWUpOworICAgIEZjQ29uZmlnU3Vic3RpdHV0
ZSAoTlVMTCwgcGF0LCBGY01hdGNoUGF0dGVybik7CisgICAgRmNEZWZhdWx0U3Vic3RpdHV0ZSAo
cGF0KTsKKyAgICBtYXRjaCA9IEZjRm9udE1hdGNoIChOVUxMLCBwYXQsICZyZXN1bHQpOworICAg
IGlmIChyZXN1bHQgIT0gRmNSZXN1bHRNYXRjaCB8fCAhbWF0Y2gpCisgICAgeworCWZwcmludGYg
KHN0ZGVyciwgIkVSUk9SOiBObyBtYXRjaGVzIGZvdW5kXG4iKTsKKyAgICB9CisgICAgaWYgKG1h
dGNoKQorCUZjUGF0dGVybkRlc3Ryb3kgKG1hdGNoKTsKKyAgICBGY1BhdHRlcm5EZXN0cm95IChw
YXQpOworfQorCitzdGF0aWMgdm9pZAorcnVuX3JlaW5pdCAodm9pZCkKK3sKKyAgICBpZiAoIUZj
SW5pdFJlaW5pdGlhbGl6ZSAoKSkKKyAgICB7CisJZnByaW50ZiAoc3RkZXJyLCAiRVJST1I6IFJl
aW5pdGlhbGl6aW5nIGZhaWxlZFxuIik7CisgICAgfQorfQorCisjZGVmaW5lIE5URVNUIDMwMDAK
Kworc3RhdGljIHZvaWQgKgorcnVuX3Rlc3RfaW5fdGhyZWFkICh2b2lkICphcmcpCit7CisgICAg
c3RydWN0IHRocl9hcmdfcyAqdGhyX2FyZyA9IChzdHJ1Y3QgdGhyX2FyZ19zICopIGFyZzsKKyAg
ICBpbnQgdGhyZWFkX251bSA9IHRocl9hcmctPnRocl9udW07CisKKyAgICBmcHJpbnRmIChzdGRl
cnIsICJXb3JrZXIgJWQ6IHN0YXJ0ZWQgKHJvdW5kICVkKVxuIiwgdGhyZWFkX251bSAlIDIsIHRo
cmVhZF9udW0gLyAyKTsKKyAgICBpZiAoKHRocmVhZF9udW0gJSAyKSA9PSAwKQorICAgIHsKKwly
dW5fcXVlcnkgKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisJcnVuX3JlaW5pdCAoKTsKKyAg
ICB9CisgICAgZnByaW50ZiAoc3RkZXJyLCAiV29ya2VyICVkOiBkb25lIChyb3VuZCAlZClcbiIs
IHRocmVhZF9udW0gJSAyLCB0aHJlYWRfbnVtIC8gMik7CisKKyAgICByZXR1cm4gTlVMTDsKK30K
KworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgcHRocmVhZF90IHRo
cmVhZHNbTlRFU1RdOworICAgIHN0cnVjdCB0aHJfYXJnX3MgdGhyX2FyZ1tOVEVTVF07CisgICAg
aW50IGksIGo7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTlRFU1Q7IGkrKykKKyAgICB7CisJaW50
IHJlc3VsdDsKKworCWZwcmludGYgKHN0ZGVyciwgIlRocmVhZCAlZCAod29ya2VyICVkIHJvdW5k
ICVkKTogY3JlYXRpbmdcbiIsIGksIGkgJSAyLCBpIC8gMik7CisJdGhyX2FyZ1tpXS50aHJfbnVt
ID0gaTsKKwlyZXN1bHQgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZHNbaV0sIE5VTEwsIHJ1bl90
ZXN0X2luX3RocmVhZCwKKwkJCQkgKHZvaWQgKikgJnRocl9hcmdbaV0pOworCWlmIChyZXN1bHQg
IT0gMCkKKwl7CisJICAgIGZwcmludGYgKHN0ZGVyciwgIkNhbm5vdCBjcmVhdGUgdGhyZWFkICVk
XG4iLCBpKTsKKwkgICAgYnJlYWs7CisJfQorICAgIH0KKyAgICBmb3IgKGogPSAwOyBqIDwgaTsg
aisrKQorICAgIHsKKwlwdGhyZWFkX2pvaW4odGhyZWFkc1tqXSwgTlVMTCk7CisJZnByaW50ZiAo
c3RkZXJyLCAiSm9pbmVkIHRocmVhZCAlZFxuIiwgaik7CisgICAgfQorICAgIEZjRmluaSAoKTsK
KworICAgIHJldHVybiAwOworfQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpGb250Y29uZmlnIG1haWxpbmcgbGlzdApGb250Y29uZmlnQGxpc3RzLmZyZWVk
ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv
L2ZvbnRjb25maWc=