[pim/korganizer] /: Implement holiday category selection and filtering.

Allen Winter <[email protected]> Fri, 10 Apr 2026 18:17:58 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs,gmane.comp.kde.doc
Message-ID <[email protected]>
R2l0IGNvbW1pdCA2NTRlMzg5NTQzYzZkNDhjMjNmYzIzODU5M2M5ZDk1YzI4NTNjOWUxIGJ5IEFs
bGVuIFdpbnRlci4KQ29tbWl0dGVkIG9uIDEwLzA0LzIwMjYgYXQgMTU6MDAuClB1c2hlZCBieSB3
aW50ZXJ6IGludG8gYnJhbmNoICdtYXN0ZXInLgoKSW1wbGVtZW50IGhvbGlkYXkgY2F0ZWdvcnkg
c2VsZWN0aW9uIGFuZCBmaWx0ZXJpbmcuCgpCVUc6MzM2MTQ3CgpNICArMiAgICAtMiAgICBDTWFr
ZUxpc3RzLnR4dApNICArMTUgICAtNSAgICBkb2MvaW5kZXguZG9jYm9vawpNICArMjQgICAtMiAg
ICBzcmMva29nbG9iYWxzLmNwcApNICArMTUgICAtMiAgICBzcmMva29nbG9iYWxzLmgKTSAgKzIg
ICAgLTAgICAgc3JjL2tvbnRhY3RwbHVnaW4vc3BlY2lhbGRhdGVzL3Nkc3VtbWFyeXdpZGdldC5j
cHAKTSAgKzU1ICAgLTIgICAgc3JjL3ByZWZzL2tvcHJlZnNkaWFsb2d0aW1lLmNwcApNICArMSAg
ICAtMCAgICBzcmMvcHJlZnMva29wcmVmc2RpYWxvZ3RpbWUuaApNICArMiAgICAtMCAgICBzcmMv
d2hhdHNuZXcvd2hhdHNuZXd0cmFuc2xhdGlvbnMuY3BwCgpodHRwczovL2ludmVudC5rZGUub3Jn
L3BpbS9rb3JnYW5pemVyLy0vY29tbWl0LzY1NGUzODk1NDNjNmQ0OGMyM2ZjMjM4NTkzYzlkOTVj
Mjg1M2M5ZTEKCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDQ5ODQxZDgzNS4uZjNhYjNjOGZmIDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9DTWFrZUxpc3RzLnR4dApAQCAtMTQ4LDggKzE0OCw4IEBAIGZpbmRfcGFja2FnZSgKIHNldChQ
SU1DT01NT05fTElCX1ZFUlNJT04gIjYuNy40MCIpCiBzZXQoTElCS0RFUElNX0xJQl9WRVJTSU9O
ICI2LjcuNDAiKQogc2V0KExJQklOQ0lERU5DRUVESVRPUl9MSUJfVkVSU0lPTiAiNi43LjQwIikK
LXNldChDQUxFTkRBUlNVUFBPUlRfTElCX1ZFUlNJT04gIjYuNy40MCIpCi1zZXQoRVZFTlRWSUVX
X0xJQl9WRVJTSU9OICI2LjcuNDEiKQorc2V0KENBTEVOREFSU1VQUE9SVF9MSUJfVkVSU0lPTiAi
Ni43LjQxIikKK3NldChFVkVOVFZJRVdfTElCX1ZFUlNJT04gIjYuNy40MiIpCiAKICMgRmluZCBL
RjYgcGFja2FnZQogZmluZF9wYWNrYWdlKEtGNkkxOG4gJHtLRl9NSU5fVkVSU0lPTn0gQ09ORklH
IFJFUVVJUkVEKQpkaWZmIC0tZ2l0IGEvZG9jL2luZGV4LmRvY2Jvb2sgYi9kb2MvaW5kZXguZG9j
Ym9vawppbmRleCA4ODdhNjYyZGUuLjE0NWZiM2M1NyAxMDA2NDQKLS0tIGEvZG9jL2luZGV4LmRv
Y2Jvb2sKKysrIGIvZG9jL2luZGV4LmRvY2Jvb2sKQEAgLTIwNjAsMTEgKzIwNjAsMjEgQEAgaW4g
dGhlIEFnZW5kYSB2aWV3LjwvcGFyYT48L2xpc3RpdGVtPgogPC92YXJsaXN0ZW50cnk+CiAKIDx2
YXJsaXN0ZW50cnk+Ci08dGVybT48Z3VpbGFiZWw+SG9saWRheXM8L2d1aWxhYmVsPjwvdGVybT4K
LTxsaXN0aXRlbT48cGFyYT5TZWxlY3QgeW91ciBjb3VudHJ5IGZyb20gdGhlIGRyb3AgZG93biBs
aXN0LCBvciBpZgotaXQgaXMgbm90IGxpc3RlZCwgc2VsZWN0IDxndWlsYWJlbD4oTm9uZSk8L2d1
aWxhYmVsPi4KLUlmIHlvdXIgY291bnRyeSBpcyBzZWxlY3RlZCwgJmtvcmdhbml6ZXI7IHdpbGwg
cmVjb2duaXplIGFuZCBkaXNwbGF5Ci1pdHMgaW1wb3J0YW50IGRhdGVzIGFuZCBob2xpZGF5cyBp
biB0aGUgY2FsZW5kYXIgdmlldy48L3BhcmE+PC9saXN0aXRlbT4KKzx0ZXJtPjxndWlsYWJlbD5I
b2xpZGF5IFJlZ2lvbnM8L2d1aWxhYmVsPjwvdGVybT4KKzxsaXN0aXRlbT48cGFyYT5TZWxlY3Qg
aG9saWRheSByZWdpb25zIGZyb20gdGhlIGRyb3AgZG93biBsaXN0LgorRm9yIGVhY2ggc2VsZWN0
ZWQgcmVnaW9uLCAma29yZ2FuaXplcjsgd2lsbCByZWNvZ25pemUgYW5kIGRpc3BsYXkKK2l0cyBp
bXBvcnRhbnQgZGF0ZXMgYW5kIGhvbGlkYXlzIGluIHRoZSBhZ2VuZGEgYW5kIG1vbnRoIHZpZXdz
LgorWW91IGNhbiBjb25maWd1cmUgdGhlIHR5cGVzIG9mIGhvbGlkYXlzIHRvIGRpc3BsYXkgd2l0
aCB0aGUKK0hvbGlkYXkgQ2F0ZWdvcmllcyBkcm9wIGRvd24gbGlzdCAoc2VlIG5leHQgZW50cnkp
LgorPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKworPHZhcmxpc3RlbnRyeT4K
Kzx0ZXJtPjxndWlsYWJlbD5Ib2xpZGF5IENhdGVnb3JpZXM8L2d1aWxhYmVsPjwvdGVybT4KKzxs
aXN0aXRlbT48cGFyYT5TZWxlY3QgdGhlIGhvbGlkYXkgY2F0ZWdvcmllcyBmcm9tIHRoZSBkcm9w
IGRvd24gbGlzdC4KK0J5IGRlZmF1bHQgYWxsIGhvbGlkYXkgdHlwZXMgYXJlIGVuYWJsZWQuICBT
ZWxlY3QgdGhlIGhvbGlkYXkgY2F0ZWdvcmllcworeW91IHdhbnQgdG8gaGlkZSwgZm9yIGV4YW1w
bGUgc29tZSBwZW9wbGUgYXJlIG5vdCBpbnRlcmVzdGluZyBpbiByZWxpZ2lvdXMgaG9saWRheXMu
Cis8L3BhcmE+PC9saXN0aXRlbT4KIDwvdmFybGlzdGVudHJ5PgogCiA8dmFybGlzdGVudHJ5Pgpk
aWZmIC0tZ2l0IGEvc3JjL2tvZ2xvYmFscy5jcHAgYi9zcmMva29nbG9iYWxzLmNwcAppbmRleCBk
NTdhNzgzOTcuLmU1N2Q2NjQ3MyAxMDA2NDQKLS0tIGEvc3JjL2tvZ2xvYmFscy5jcHAKKysrIGIv
c3JjL2tvZ2xvYmFscy5jcHAKQEAgLTgsNiArOCwxMCBAQAogCiAjaW5jbHVkZSAia29nbG9iYWxz
LmgiCiAjaW5jbHVkZSAicHJlZnMva29wcmVmcy5oIgorCisjaW5jbHVkZSA8Q2FsZW5kYXJTdXBw
b3J0L0tDYWxQcmVmcz4KKworI2luY2x1ZGUgPEtIb2xpZGF5cy9Ib2xpZGF5Q2F0ZWdvcmllcz4K
ICNpbmNsdWRlIDxLSG9saWRheXMvSG9saWRheVJlZ2lvbj4KIAogI2luY2x1ZGUgPFFBcHBsaWNh
dGlvbj4KQEAgLTMwLDYgKzM0LDcgQEAgS09HbG9iYWxzOjpLT0dsb2JhbHMoKSA9IGRlZmF1bHQ7
CiBLT0dsb2JhbHM6On5LT0dsb2JhbHMoKQogewogICAgIHFEZWxldGVBbGwobUhvbGlkYXlSZWdp
b25zKTsKKyAgICBtSG9saWRheUNhdGVnb3JpZXMuY2xlYXIoKTsKIH0KIAogYm9vbCBLT0dsb2Jh
bHM6OnJldmVyc2VMYXlvdXQoKQpAQCAtMzcsNyArNDIsNyBAQCBib29sIEtPR2xvYmFsczo6cmV2
ZXJzZUxheW91dCgpCiAgICAgcmV0dXJuIFFBcHBsaWNhdGlvbjo6aXNSaWdodFRvTGVmdCgpOwog
fQogCi1RTWFwPFFEYXRlLCBRU3RyaW5nTGlzdD4gS09HbG9iYWxzOjpob2xpZGF5KGNvbnN0IFFE
YXRlICZzdGFydCwgY29uc3QgUURhdGUgJmVuZCkgY29uc3QKK1FNYXA8UURhdGUsIFFTdHJpbmdM
aXN0PiBLT0dsb2JhbHM6OmhvbGlkYXkoY29uc3QgUURhdGUgJnN0YXJ0LCBjb25zdCBRRGF0ZSAm
ZW5kKQogewogICAgIFFNYXA8UURhdGUsIFFTdHJpbmdMaXN0PiBob2xpZGF5c0J5RGF0ZTsKIApA
QCAtNDUsOCArNTAsMTAgQEAgUU1hcDxRRGF0ZSwgUVN0cmluZ0xpc3Q+IEtPR2xvYmFsczo6aG9s
aWRheShjb25zdCBRRGF0ZSAmc3RhcnQsIGNvbnN0IFFEYXRlICZlbmQKICAgICAgICAgcmV0dXJu
IGhvbGlkYXlzQnlEYXRlOwogICAgIH0KIAotICAgIGZvciAoY29uc3QgS0hvbGlkYXlzOjpIb2xp
ZGF5UmVnaW9uICpyZWdpb24gOiBzdGQ6OmFzX2NvbnN0KG1Ib2xpZGF5UmVnaW9ucykpIHsKKyAg
ICBzZXRIb2xpZGF5Q2F0ZWdvcmllcyhDYWxlbmRhclN1cHBvcnQ6OktDYWxQcmVmczo6aW5zdGFu
Y2UoKS0+aG9saWRheUNhdGVnb3JpZXMoKSk7CisgICAgZm9yIChLSG9saWRheXM6OkhvbGlkYXlS
ZWdpb24gKnJlZ2lvbiA6IHN0ZDo6YXNfY29uc3QobUhvbGlkYXlSZWdpb25zKSkgewogICAgICAg
ICBpZiAocmVnaW9uICYmIHJlZ2lvbi0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICByZWdpb24t
PnNldENhdGVnb3JpZXMoaG9saWRheUNhdGVnb3JpZXMoKSk7CiAgICAgICAgICAgICBjb25zdCBL
SG9saWRheXM6OkhvbGlkYXk6Okxpc3QgbGlzdCA9IHJlZ2lvbi0+cmF3SG9saWRheXNXaXRoQXN0
cm9TZWFzb25zKHN0YXJ0LCBlbmQpOwogICAgICAgICAgICAgY29uc3QgaW50IGxpc3RDb3VudChs
aXN0LmNvdW50KCkpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0Q291bnQ7
ICsraSkgewpAQCAtOTIsMyArOTksMTggQEAgUUxpc3Q8S0hvbGlkYXlzOjpIb2xpZGF5UmVnaW9u
ICo+ICZLT0dsb2JhbHM6OmhvbGlkYXlzKCkKIHsKICAgICByZXR1cm4gbUhvbGlkYXlSZWdpb25z
OwogfQorCit2b2lkIEtPR2xvYmFsczo6c2V0SG9saWRheUNhdGVnb3JpZXMoY29uc3QgUVN0cmlu
Z0xpc3QgJmNhdGVnb3JpZXMpCit7CisgICAgbUhvbGlkYXlDYXRlZ29yaWVzLmNsZWFyKCk7Cisg
ICAgZm9yIChjb25zdCBRU3RyaW5nICZjYXRlZ29yeSA6IGNhdGVnb3JpZXMpIHsKKyAgICAgICAg
aWYgKEtIb2xpZGF5czo6aXNIb2xpZGF5Q2F0ZWdvcnlWYWxpZChjYXRlZ29yeSkpIHsKKyAgICAg
ICAgICAgIG1Ib2xpZGF5Q2F0ZWdvcmllcy5hcHBlbmQoY2F0ZWdvcnkpOworICAgICAgICB9Cisg
ICAgfQorfQorCitRU3RyaW5nTGlzdCBLT0dsb2JhbHM6OmhvbGlkYXlDYXRlZ29yaWVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUhvbGlkYXlDYXRlZ29yaWVzOworfQpkaWZmIC0tZ2l0IGEvc3Jj
L2tvZ2xvYmFscy5oIGIvc3JjL2tvZ2xvYmFscy5oCmluZGV4IDczNzViM2U1Mi4uZTQzODY3ODli
IDEwMDY0NAotLS0gYS9zcmMva29nbG9iYWxzLmgKKysrIGIvc3JjL2tvZ2xvYmFscy5oCkBAIC0z
MSw3ICszMSw3IEBAIHB1YmxpYzoKIAogICAgIH5LT0dsb2JhbHMoKTsKIAotICAgIFtbbm9kaXNj
YXJkXV0gUU1hcDxRRGF0ZSwgUVN0cmluZ0xpc3Q+IGhvbGlkYXkoY29uc3QgUURhdGUgJnN0YXJ0
LCBjb25zdCBRRGF0ZSAmZW5kKSBjb25zdDsKKyAgICBbW25vZGlzY2FyZF1dIFFNYXA8UURhdGUs
IFFTdHJpbmdMaXN0PiBob2xpZGF5KGNvbnN0IFFEYXRlICZzdGFydCwgY29uc3QgUURhdGUgJmVu
ZCk7CiAKICAgICBbW25vZGlzY2FyZF1dIGludCBmaXJzdERheU9mV2VlaygpIGNvbnN0OwogCkBA
IC00MywxMyArNDMsMjYgQEAgcHVibGljOgogICAgICovCiAgICAgdm9pZCBzZXRIb2xpZGF5cyhj
b25zdCBRU3RyaW5nTGlzdCAmcmVnaW9ucyk7CiAKLSAgICAvKiogcmV0dXJuIHRoZSBIb2xpZGF5
UmVnaW9uIG9iamVjdCBvciAwIGlmIG5vbmUgaGFzIGJlZW4gZGVmaW5lZAorICAgIC8qKgorICAg
ICAqIFJldHVybnMgdGhlIEhvbGlkYXlSZWdpb24gb2JqZWN0IG9yIDAgaWYgbm9uZSBoYXMgYmVl
biBkZWZpbmVkCiAgICAgICovCiAgICAgW1tub2Rpc2NhcmRdXSBRTGlzdDxLSG9saWRheXM6Okhv
bGlkYXlSZWdpb24gKj4gJmhvbGlkYXlzKCk7CiAKKyAgICAvKioKKyAgICAgKiBTZXQgd2hpY2gg
aG9saWRheSBjYXRlZ29yaWVzIHRoZSB1c2VyIHdhbnRzIHRvIHVzZS4KKyAgICAgKiBAcGFyYW0g
Y2F0ZWdvcmllcyBhIGxpc3Qgb2YgSG9saWRheSBDYXRlZ29yeSBzdHJpbmdzLgorICAgICAqLwor
ICAgIHZvaWQgc2V0SG9saWRheUNhdGVnb3JpZXMoY29uc3QgUVN0cmluZ0xpc3QgJmNhdGVnb3Jp
ZXMpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaG9saWRheSBjYXRlZ29yaWVzIGxp
c3QKKyAgICAgKi8KKyAgICBbW25vZGlzY2FyZF1dIFFTdHJpbmdMaXN0IGhvbGlkYXlDYXRlZ29y
aWVzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBLT0dsb2JhbHMoKTsKIAogcHJpdmF0ZToK
ICAgICBRTGlzdDxLSG9saWRheXM6OkhvbGlkYXlSZWdpb24gKj4gbUhvbGlkYXlSZWdpb25zOwor
ICAgIFFTdHJpbmdMaXN0IG1Ib2xpZGF5Q2F0ZWdvcmllczsKIH07CmRpZmYgLS1naXQgYS9zcmMv
a29udGFjdHBsdWdpbi9zcGVjaWFsZGF0ZXMvc2RzdW1tYXJ5d2lkZ2V0LmNwcCBiL3NyYy9rb250
YWN0cGx1Z2luL3NwZWNpYWxkYXRlcy9zZHN1bW1hcnl3aWRnZXQuY3BwCmluZGV4IDM0ZDU1MTcz
MC4uMTA5NDExZDQyIDEwMDY0NAotLS0gYS9zcmMva29udGFjdHBsdWdpbi9zcGVjaWFsZGF0ZXMv
c2RzdW1tYXJ5d2lkZ2V0LmNwcAorKysgYi9zcmMva29udGFjdHBsdWdpbi9zcGVjaWFsZGF0ZXMv
c2RzdW1tYXJ5d2lkZ2V0LmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgPEFrb25hZGkv
SXRlbUZldGNoU2NvcGU+CiAjaW5jbHVkZSA8QWtvbmFkaS9TZWFyY2hRdWVyeT4KICNpbmNsdWRl
IDxDYWxlbmRhclN1cHBvcnQvQ2FsZW5kYXJTaW5nbGV0b24+CisjaW5jbHVkZSA8Q2FsZW5kYXJT
dXBwb3J0L0tDYWxQcmVmcz4KICNpbmNsdWRlIDxDYWxlbmRhclN1cHBvcnQvVXRpbHM+CiAKICNp
bmNsdWRlIDxLQ2FsZW5kYXJDb3JlL0NhbGVuZGFyPgpAQCAtMzU1LDYgKzM1Niw3IEBAIHZvaWQg
U0RTdW1tYXJ5V2lkZ2V0OjpjcmVhdGVMYWJlbHMoKQogICAgIGlmIChtU2hvd0hvbGlkYXlzKSB7
CiAgICAgICAgIGlmIChpbml0SG9saWRheXMoKSkgewogICAgICAgICAgICAgZm9yIChkdCA9IFFE
YXRlOjpjdXJyZW50RGF0ZSgpOyBkdCA8PSBRRGF0ZTo6Y3VycmVudERhdGUoKS5hZGREYXlzKG1E
YXlzQWhlYWQgLSAxKTsgZHQgPSBkdC5hZGREYXlzKDEpKSB7CisgICAgICAgICAgICAgICAgbUhv
bGlkYXlzLT5zZXRDYXRlZ29yaWVzKENhbGVuZGFyU3VwcG9ydDo6S0NhbFByZWZzOjppbnN0YW5j
ZSgpLT5ob2xpZGF5Q2F0ZWdvcmllcygpKTsKICAgICAgICAgICAgICAgICBRTGlzdDxIb2xpZGF5
PiBjb25zdCBob2xpZGF5cyA9IG1Ib2xpZGF5cy0+cmF3SG9saWRheXNXaXRoQXN0cm9TZWFzb25z
KGR0KTsKICAgICAgICAgICAgICAgICBRTGlzdDxIb2xpZGF5Pjo6Q29uc3RJdGVyYXRvciBpdCA9
IGhvbGlkYXlzLmNvbnN0QmVnaW4oKTsKICAgICAgICAgICAgICAgICBmb3IgKDsgaXQgIT0gaG9s
aWRheXMuY29uc3RFbmQoKTsgKytpdCkgewpkaWZmIC0tZ2l0IGEvc3JjL3ByZWZzL2tvcHJlZnNk
aWFsb2d0aW1lLmNwcCBiL3NyYy9wcmVmcy9rb3ByZWZzZGlhbG9ndGltZS5jcHAKaW5kZXggNjlm
Mzk4YWMxLi4yMjVmMTE5ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9wcmVmcy9rb3ByZWZzZGlhbG9ndGlt
ZS5jcHAKKysrIGIvc3JjL3ByZWZzL2tvcHJlZnNkaWFsb2d0aW1lLmNwcApAQCAtMyw2ICszLDcg
QEAKIAogICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDAwLTIwMDMgQ29ybmVsaXVzIFNjaHVt
YWNoZXIgPHNjaHVtYWNoZXJAa2RlLm9yZz4KICAgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAw
My0yMDA0IFJlaW5ob2xkIEthaW5ob2ZlciA8cmVpbmhvbGRAa2FpbmhvZmVyLmNvbT4KKyAgU1BE
WC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNSBBbGxlbiBXaW50ZXIgPHdpbnRlckBrZGUub3JnPgog
CiAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyIFdJVEggTGljZW5z
ZVJlZi1RdC1Db21tZXJjaWFsLWV4Y2VwdGlvbi0xLjAKICovCkBAIC0xMSwxMiArMTIsMTQgQEAK
ICNpbmNsdWRlICJrb3ByZWZzLmgiCiAjaW5jbHVkZSA8Q2FsZW5kYXJTdXBwb3J0L0tDYWxQcmVm
cz4KICNpbmNsdWRlIDxLQ29tYm9Cb3g+CisjaW5jbHVkZSA8S0hvbGlkYXlzL0hvbGlkYXlDYXRl
Z29yaWVzPgogI2luY2x1ZGUgPEtIb2xpZGF5cy9Ib2xpZGF5UmVnaW9uPgogI2luY2x1ZGUgPEtM
b2NhbGl6ZWRTdHJpbmc+CiAjaW5jbHVkZSA8S1BsdWdpbkZhY3Rvcnk+CiAjaW5jbHVkZSA8S1Rp
bWVDb21ib0JveD4KICNpbmNsdWRlIDxLVXJsUmVxdWVzdGVyPgogI2luY2x1ZGUgPExpYmtkZXBp
bS9LQ2hlY2tDb21ib0JveD4KKyNpbmNsdWRlIDxRQnV0dG9uR3JvdXA+CiAjaW5jbHVkZSA8UUNo
ZWNrQm94PgogI2luY2x1ZGUgPFFDb21ib0JveD4KICNpbmNsdWRlIDxRRnJhbWU+CkBAIC02Miwx
MSArNjUsMTIgQEAgS09QcmVmc0RpYWxvZ1RpbWU6OktPUHJlZnNEaWFsb2dUaW1lKFFPYmplY3Qg
KnBhcmVudCwgY29uc3QgS1BsdWdpbk1ldGFEYXRhICZkYXQKICAgICBhdXRvIGhvbGlkYXlSZWdC
b3ggPSBuZXcgUVdpZGdldChyZWdpb25hbFBhZ2UpOwogICAgIGF1dG8gaG9saWRheVJlZ0JveEhC
b3hMYXlvdXQgPSBuZXcgUUhCb3hMYXlvdXQoaG9saWRheVJlZ0JveCk7CiAgICAgaG9saWRheVJl
Z0JveEhCb3hMYXlvdXQtPnNldENvbnRlbnRzTWFyZ2lucyh7fSk7Ci0gICAgaG9saWRheXNMYXlv
dXQtPmFkZFdpZGdldChob2xpZGF5UmVnQm94LCAxLCAwLCAxLCAyKTsKKyAgICBob2xpZGF5c0xh
eW91dC0+YWRkV2lkZ2V0KGhvbGlkYXlSZWdCb3gsIDEsIDAsIDEsIDEpOwogCi0gICAgYXV0byBo
b2xpZGF5TGFiZWwgPSBuZXcgUUxhYmVsKGkxOG5jKCJAbGFiZWwiLCAiVXNlIGhvbGlkYXkgcmVn
aW9uOiIpLCBob2xpZGF5UmVnQm94KTsKKyAgICBhdXRvIGhvbGlkYXlMYWJlbCA9IG5ldyBRTGFi
ZWwoaTE4bmMoIkBsYWJlbCIsICJVc2UgaG9saWRheSByZWdpb25zOiIpLCBob2xpZGF5UmVnQm94
KTsKICAgICBob2xpZGF5TGFiZWwtPnNldFRvb2xUaXAoQ2FsZW5kYXJTdXBwb3J0OjpLQ2FsUHJl
ZnM6Omluc3RhbmNlKCktPmhvbGlkYXlzSXRlbSgpLT50b29sVGlwKCkpOwogICAgIGhvbGlkYXlM
YWJlbC0+c2V0V2hhdHNUaGlzKENhbGVuZGFyU3VwcG9ydDo6S0NhbFByZWZzOjppbnN0YW5jZSgp
LT5ob2xpZGF5c0l0ZW0oKS0+d2hhdHNUaGlzKCkpOworICAgIGhvbGlkYXlSZWdCb3hIQm94TGF5
b3V0LT5hZGRXaWRnZXQoaG9saWRheUxhYmVsKTsKIAogICAgIG1Ib2xpZGF5Q2hlY2tDb21ibyA9
IG5ldyBLUElNOjpLQ2hlY2tDb21ib0JveChob2xpZGF5UmVnQm94KTsKICAgICBob2xpZGF5UmVn
Qm94SEJveExheW91dC0+YWRkV2lkZ2V0KG1Ib2xpZGF5Q2hlY2tDb21ibyk7CkBAIC0xMDgsNiAr
MTEyLDQ1IEBAIEtPUHJlZnNEaWFsb2dUaW1lOjpLT1ByZWZzRGlhbG9nVGltZShRT2JqZWN0ICpw
YXJlbnQsIGNvbnN0IEtQbHVnaW5NZXRhRGF0YSAmZGF0CiAgICAgICAgIG1Ib2xpZGF5Q2hlY2tD
b21iby0+c2V0SXRlbUNoZWNrU3RhdGUobUhvbGlkYXlDaGVja0NvbWJvLT5maW5kRGF0YShyZWdp
b25TdHIpLCBRdDo6Q2hlY2tlZCk7CiAgICAgfQogCisgICAgLy8gaG9saWRheSByZWdpb24gc2Vs
ZWN0aW9uCisgICAgYXV0byBob2xpZGF5Q2F0Qm94ID0gbmV3IFFXaWRnZXQocmVnaW9uYWxQYWdl
KTsKKyAgICBhdXRvIGhvbGlkYXlDYXRCb3hIQm94TGF5b3V0ID0gbmV3IFFIQm94TGF5b3V0KGhv
bGlkYXlDYXRCb3gpOworICAgIGhvbGlkYXlDYXRCb3hIQm94TGF5b3V0LT5zZXRDb250ZW50c01h
cmdpbnMoe30pOworICAgIGhvbGlkYXlzTGF5b3V0LT5hZGRXaWRnZXQoaG9saWRheUNhdEJveCwg
MiwgMCwgMSwgMSk7CisKKyAgICBhdXRvIGhvbGlkYXlDYXRMYWJlbCA9IG5ldyBRTGFiZWwoaTE4
bmMoIkBsYWJlbCIsICJVc2UgaG9saWRheSBjYXRlZ29yaWVzOiIpLCBob2xpZGF5Q2F0Qm94KTsK
KyAgICBob2xpZGF5Q2F0TGFiZWwtPnNldFRvb2xUaXAoQ2FsZW5kYXJTdXBwb3J0OjpLQ2FsUHJl
ZnM6Omluc3RhbmNlKCktPmhvbGlkYXlDYXRlZ29yaWVzSXRlbSgpLT50b29sVGlwKCkpOworICAg
IGhvbGlkYXlDYXRMYWJlbC0+c2V0V2hhdHNUaGlzKENhbGVuZGFyU3VwcG9ydDo6S0NhbFByZWZz
OjppbnN0YW5jZSgpLT5ob2xpZGF5Q2F0ZWdvcmllc0l0ZW0oKS0+d2hhdHNUaGlzKCkpOworICAg
IGhvbGlkYXlDYXRCb3hIQm94TGF5b3V0LT5hZGRXaWRnZXQoaG9saWRheUNhdExhYmVsKTsKKwor
ICAgIG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8gPSBuZXcgS1BJTTo6S0NoZWNrQ29tYm9Cb3goaG9s
aWRheUNhdEJveCk7CisgICAgaG9saWRheUNhdEJveEhCb3hMYXlvdXQtPmFkZFdpZGdldChtSG9s
aWRheVR5cGVDaGVja0NvbWJvKTsKKyAgICBjb25uZWN0KG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8s
ICZLUElNOjpLQ2hlY2tDb21ib0JveDo6Y2hlY2tlZEl0ZW1zQ2hhbmdlZCwgdGhpcywgJktPUHJl
ZnNEaWFsb2dUaW1lOjpzbG90V2lkQ2hhbmdlZCk7CisgICAgaG9saWRheXNMYXlvdXQtPmFkZFdp
ZGdldChtSG9saWRheVR5cGVDaGVja0NvbWJvKTsKKworICAgIG1Ib2xpZGF5VHlwZUNoZWNrQ29t
Ym8tPnNldFRvb2xUaXAoQ2FsZW5kYXJTdXBwb3J0OjpLQ2FsUHJlZnM6Omluc3RhbmNlKCktPmhv
bGlkYXlDYXRlZ29yaWVzSXRlbSgpLT50b29sVGlwKCkpOworICAgIG1Ib2xpZGF5VHlwZUNoZWNr
Q29tYm8tPnNldFdoYXRzVGhpcyhDYWxlbmRhclN1cHBvcnQ6OktDYWxQcmVmczo6aW5zdGFuY2Uo
KS0+aG9saWRheUNhdGVnb3JpZXNJdGVtKCktPndoYXRzVGhpcygpKTsKKworICAgIG1Ib2xpZGF5
VHlwZUNoZWNrQ29tYm8tPmNsZWFyKCk7CisgICAgbUhvbGlkYXlUeXBlQ2hlY2tDb21iby0+c2V0
RGVmYXVsdFRleHQoaTE4bmMoIkBpdGVtOmlubGlzdGJveCIsICJTZWxlY3QgSG9saWRheSBDYXRl
Z29yaWVzIikpOworICAgIGNvbnN0IFFTdHJpbmdMaXN0IGNhdGVnb3JpZXMgPSBLSG9saWRheXM6
OmFsbEhvbGlkYXlDYXRlZ29yaWVzKCk7CisgICAgaW50IGl0ZW1ObyA9IDA7CisgICAgZm9yIChj
b25zdCBhdXRvICZjYXRlZ29yeSA6IHN0ZDo6YXNfY29uc3QoY2F0ZWdvcmllcykpIHsKKyAgICAg
ICAgY29uc3QgUVN0cmluZyB0ckNhdGVnb3J5ID0gS0hvbGlkYXlzOjp0cmFuc2xhdGVIb2xpZGF5
Q2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgICAgICBtSG9saWRheVR5cGVDaGVja0NvbWJvLT5hZGRJ
dGVtKHRyQ2F0ZWdvcnksIGNhdGVnb3J5KTsKKyAgICAgICAgbUhvbGlkYXlUeXBlQ2hlY2tDb21i
by0+c2V0SXRlbURhdGEoaXRlbU5vKyssIEtIb2xpZGF5czo6aG9saWRheUNhdGVnb3J5RGVzY3Jp
cHRpb24oY2F0ZWdvcnkpLCBRdDo6VG9vbFRpcFJvbGUpOworICAgIH0KKyAgICBjb25zdCBhdXRv
IGhvbGlkYXlDYXRlZ29yaWVzID0gQ2FsZW5kYXJTdXBwb3J0OjpLQ2FsUHJlZnM6Omluc3RhbmNl
KCktPmhvbGlkYXlDYXRlZ29yaWVzKCk7CisgICAgaWYgKCFob2xpZGF5Q2F0ZWdvcmllcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBRU3RyaW5nICZ0eXBlIDogaG9saWRheUNhdGVn
b3JpZXMpIHsKKyAgICAgICAgICAgIG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8tPnNldEl0ZW1DaGVj
a1N0YXRlKG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8tPmZpbmREYXRhKHR5cGUpLCBRdDo6Q2hlY2tl
ZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcg
JnR5cGUgOiBjYXRlZ29yaWVzKSB7CisgICAgICAgICAgICBtSG9saWRheVR5cGVDaGVja0NvbWJv
LT5zZXRJdGVtQ2hlY2tTdGF0ZShtSG9saWRheVR5cGVDaGVja0NvbWJvLT5maW5kRGF0YSh0eXBl
KSwgUXQ6OkNoZWNrZWQpOworICAgICAgICB9CisgICAgfQorCiAgICAgYXV0byB3b3JraW5nSG91
cnNHcm91cEJveCA9IG5ldyBRR3JvdXBCb3goaTE4bmMoIkB0aXRsZTpncm91cCIsICJXZWVrbHkg
U2NoZWR1bGUiKSwgcmVnaW9uYWxQYWdlKTsKICAgICByZWdpb25hbExheW91dC0+YWRkV2lkZ2V0
KHdvcmtpbmdIb3Vyc0dyb3VwQm94LCAyLCAwKTsKIApAQCAtMjYwLDYgKzMwMywxNiBAQCB2b2lk
IEtPUHJlZnNEaWFsb2dUaW1lOjp1c3JXcml0ZUNvbmZpZygpCiAgICAgfQogICAgIENhbGVuZGFy
U3VwcG9ydDo6S0NhbFByZWZzOjppbnN0YW5jZSgpLT5tSG9saWRheXMgPSBIb2xpZGF5UmVnaW9u
czsKIAorICAgIFFTdHJpbmdMaXN0IEhvbGlkYXlUeXBlczsKKyAgICBjb25zdCBhdXRvIGhvbGlk
YXlUeXBlc0NoZWNrZWRJdGVtcyA9IG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8tPmNoZWNrZWRJdGVt
cygpOworICAgIGZvciAoY29uc3QgUVN0cmluZyAmc3RyIDogaG9saWRheVR5cGVzQ2hlY2tlZEl0
ZW1zKSB7CisgICAgICAgIGNvbnN0IGludCBpbmRleCA9IG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8t
PmZpbmRUZXh0KHN0cik7CisgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgICAgICBI
b2xpZGF5VHlwZXMuYXBwZW5kKG1Ib2xpZGF5VHlwZUNoZWNrQ29tYm8tPml0ZW1EYXRhKGluZGV4
KS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDYWxlbmRhclN1cHBvcnQ6OktD
YWxQcmVmczo6aW5zdGFuY2UoKS0+bUhvbGlkYXlDYXRlZ29yaWVzID0gSG9saWRheVR5cGVzOwor
CiAgICAgQ2FsZW5kYXJTdXBwb3J0OjpLQ2FsUHJlZnM6Omluc3RhbmNlKCktPm1SZW1pbmRlclRp
bWUgPSBtUmVtaW5kZXJUaW1lU3Bpbi0+dmFsdWUoKTsKICAgICBDYWxlbmRhclN1cHBvcnQ6OktD
YWxQcmVmczo6aW5zdGFuY2UoKS0+bVJlbWluZGVyVGltZVVuaXRzID0gbVJlbWluZGVyVW5pdHND
b21iby0+Y3VycmVudEluZGV4KCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9wcmVmcy9rb3ByZWZzZGlh
bG9ndGltZS5oIGIvc3JjL3ByZWZzL2tvcHJlZnNkaWFsb2d0aW1lLmgKaW5kZXggNmE3YjBiZDNm
Li5lNDQ0MmMzMWYgMTAwNjQ0Ci0tLSBhL3NyYy9wcmVmcy9rb3ByZWZzZGlhbG9ndGltZS5oCisr
KyBiL3NyYy9wcmVmcy9rb3ByZWZzZGlhbG9ndGltZS5oCkBAIC0zMCw2ICszMCw3IEBAIHByb3Rl
Y3RlZDoKIHByaXZhdGU6CiAgICAgUVN0cmluZ0xpc3QgdHpvbmVuYW1lczsKICAgICBLUElNOjpL
Q2hlY2tDb21ib0JveCAqbUhvbGlkYXlDaGVja0NvbWJvID0gbnVsbHB0cjsKKyAgICBLUElNOjpL
Q2hlY2tDb21ib0JveCAqbUhvbGlkYXlUeXBlQ2hlY2tDb21ibyA9IG51bGxwdHI7CiAgICAgUVNw
aW5Cb3ggKm1SZW1pbmRlclRpbWVTcGluID0gbnVsbHB0cjsKICAgICBLQ29tYm9Cb3ggKm1SZW1p
bmRlclVuaXRzQ29tYm8gPSBudWxscHRyOwogICAgIFFDaGVja0JveCAqbVdvcmtEYXlzWzddOwpk
aWZmIC0tZ2l0IGEvc3JjL3doYXRzbmV3L3doYXRzbmV3dHJhbnNsYXRpb25zLmNwcCBiL3NyYy93
aGF0c25ldy93aGF0c25ld3RyYW5zbGF0aW9ucy5jcHAKaW5kZXggZmIxMzdiMjhmLi40MzU0OGIx
YmYgMTAwNjQ0Ci0tLSBhL3NyYy93aGF0c25ldy93aGF0c25ld3RyYW5zbGF0aW9ucy5jcHAKKysr
IGIvc3JjL3doYXRzbmV3L3doYXRzbmV3dHJhbnNsYXRpb25zLmNwcApAQCAtMTksNiArMTksOCBA
QCBRTGlzdDxLTGF6eUxvY2FsaXplZFN0cmluZz4gV2hhdHNOZXdUcmFuc2xhdGlvbnM6Omxhc3RO
ZXdGZWF0dXJlcygpIGNvbnN0CiAgICAgICAgICAgICAgICAiU2V0dGluZyBhIGRlZmF1bHQgRXZl
bnQgY2FsZW5kYXIgaGFzIGJlZW4gc3VwcG9ydGVkIGZvciBhIGxvbmcgdGltZS4gIFNlZSB0aGUg
Q2FsZW5kYXIgTWFuYWdlciBjb250ZXh0IG1lbnUgXCJTZXQgYXMgRGVmYXVsdCBUb2RvIENhbGVu
ZGFyXCIiKSwKICAgICAgICAga2xpMThuKCJBZ2VuZGEgdmlldzogb3B0aW9uYWxseSBkcmF3IGJv
bGRlci9mYXR0ZXIgaG9yaXpvbnRhbCBncmlkIGxpbmVzIGV2ZXJ5IHR3byBob3Vycy4gVG8gZW5h
YmxlIHRoaXMgYmVoYXZpb3VyLCBjaGVjayB0aGUgXCJEcmF3IGJvbGQgaG9yaXpvbnRhbCAiCiAg
ICAgICAgICAgICAgICAiZ3JpZCBsaW5lcyBmb3IgdGhlIGV2ZW4gaG91cnNcIiBvcHRpb24gaW4g
dGhlIFZpZXctPkFnZW5kYSBWaWV3IHRhYiIpLAorICAgICAgICBrbGkxOG4oIkl0IGlzIG5vdyBw
b3NzaWJsZSB0byBoaWRlIGhvbGlkYXlzIHRoYXQgYmVsb25nIHRvIHNwZWNpZmljIGNhdGVnb3Jp
ZXMsIGZvciBleGFtcGxlIHRvIGhpZGUgcmVsaWdpb3VzIGhvbGlkYXlzLiBTZWUgdGhlIENhdGVn
b3JpZXMgY29tYm9ib3ggaW4gIgorICAgICAgICAgICAgICAgInRoZSBIb2xpZGF5cyBzZWN0aW9u
IG9mIHRoZSBUaW1lJkRhdGUtPlJlZ2lvbmFsIHRhYiIpLAogICAgIH07CiAgICAgcmV0dXJuIGlu
Zm87CiB9Cgo=