[plasma/print-manager] /: kded: Notify when a print job is sent to a printer that is offline

Mike Noe <[email protected]> Tue, 4 Aug 2026 18:21:07 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
R2l0IGNvbW1pdCA4Y2Y5NmQzNzlhN2IyMTg3ZDc1YTNmZjE2NzdlMTIzODFhY2Y0M2Q2IGJ5IE1p
a2UgTm9lLgpDb21taXR0ZWQgb24gMDQvMDgvMjAyNiBhdCAxNzo0NS4KUHVzaGVkIGJ5IG5vZWUg
aW50byBicmFuY2ggJ21hc3RlcicuCgprZGVkOiBOb3RpZnkgd2hlbiBhIHByaW50IGpvYiBpcyBz
ZW50IHRvIGEgcHJpbnRlciB0aGF0IGlzIG9mZmxpbmUKCkJVRzogMzYyMTQzCkZJWEVELUlOOiA2
LjguMAoKTSAgKzEwNCAgLTE4ICAgc3JjL2tkZWQvQ3Vwc1dhdGNoZXIuY3BwCk0gICsyNCAgIC0z
ICAgIHNyYy9rZGVkL0N1cHNXYXRjaGVyLmgKTSAgKzUgICAgLTAgICAgc3JjL2tkZWQvcHJpbnRt
YW5hZ2VyLm5vdGlmeXJjCk0gICsyMSAgIC0wICAgIHNyYy9saWJrY3Vwcy9LQ3Vwc1ByaW50ZXIu
Y3BwCk0gICsxNCAgIC0wICAgIHNyYy9saWJrY3Vwcy9LQ3Vwc1ByaW50ZXIuaApNICArNyAgICAt
MCAgICB0ZXN0cy9DTWFrZUxpc3RzLnR4dApBICArNjEgICAtMCAgICB0ZXN0cy9ub3RpZnlzdGF0
dXN0ZXN0LmNwcCAgICAgW0xpY2Vuc2U6IEdQTCh2Mi4wKyldCgpodHRwczovL2ludmVudC5rZGUu
b3JnL3BsYXNtYS9wcmludC1tYW5hZ2VyLy0vY29tbWl0LzhjZjk2ZDM3OWE3YjIxODdkNzVhM2Zm
MTY3N2UxMjM4MWFjZjQzZDYKCmRpZmYgLS1naXQgYS9zcmMva2RlZC9DdXBzV2F0Y2hlci5jcHAg
Yi9zcmMva2RlZC9DdXBzV2F0Y2hlci5jcHAKaW5kZXggNzYxM2Q2MGUuLjUxYmVjZWQwIDEwMDY0
NAotLS0gYS9zcmMva2RlZC9DdXBzV2F0Y2hlci5jcHAKKysrIGIvc3JjL2tkZWQvQ3Vwc1dhdGNo
ZXIuY3BwCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KICNp
bmNsdWRlIDxLTm90aWZpY2F0aW9uPgogCisjaW5jbHVkZSA8Q29tbWFuZEhlbHBlcnMuaD4KICNp
bmNsdWRlIDxLQ3Vwc1JlcXVlc3QuaD4KICNpbmNsdWRlIDxQcm9jZXNzUnVubmVyLmg+CiAKQEAg
LTE4LDE5ICsxOSw1MSBAQCB1c2luZyBuYW1lc3BhY2UgUXQ6OlN0cmluZ0xpdGVyYWxzOwogQ3Vw
c1dhdGNoZXI6OkN1cHNXYXRjaGVyKFFPYmplY3QgKnBhcmVudCkKICAgICA6IFFPYmplY3QocGFy
ZW50KQogewotICAgIGNvbm5lY3QoS0N1cHNDb25uZWN0aW9uOjpnbG9iYWwoKSwgJktDdXBzQ29u
bmVjdGlvbjo6c2VydmVyU3RhcnRlZCwgdGhpcywgW10oY29uc3QgUVN0cmluZyAmbXNnKSB7Ci0g
ICAgICAgIHFDRGVidWcoUE1LREVEKSA8PCAiQ1VQUyBTdGFydGVkOiIgPDwgbXNnOwotICAgIH0p
OwotCi0gICAgY29ubmVjdChLQ3Vwc0Nvbm5lY3Rpb246Omdsb2JhbCgpLCAmS0N1cHNDb25uZWN0
aW9uOjpzZXJ2ZXJTdG9wcGVkLCB0aGlzLCBbXShjb25zdCBRU3RyaW5nICZtc2cpIHsKLSAgICAg
ICAgcUNEZWJ1ZyhQTUtERUQpIDw8ICJDVVBTIFN0b3BwZWQ6IiA8PCBtc2c7Ci0gICAgfSk7Ci0K
LSAgICBjb25uZWN0KEtDdXBzQ29ubmVjdGlvbjo6Z2xvYmFsKCksICZLQ3Vwc0Nvbm5lY3Rpb246
OnNlcnZlclJlc3RhcnRlZCwgdGhpcywgW10oY29uc3QgUVN0cmluZyAmbXNnKSB7Ci0gICAgICAg
IHFDRGVidWcoUE1LREVEKSA8PCAiQ1VQUyBSZXN0YXJ0ZWQ6IiA8PCBtc2c7Ci0gICAgfSk7Cisg
ICAgY29ubmVjdChLQ3Vwc0Nvbm5lY3Rpb246Omdsb2JhbCgpLCAmS0N1cHNDb25uZWN0aW9uOjpq
b2JDcmVhdGVkLCB0aGlzLCAmQ3Vwc1dhdGNoZXI6OmpvYkNyZWF0ZWQpOworICAgIGNvbm5lY3Qo
S0N1cHNDb25uZWN0aW9uOjpnbG9iYWwoKSwgJktDdXBzQ29ubmVjdGlvbjo6am9iUHJvZ3Jlc3Ms
IHRoaXMsICZDdXBzV2F0Y2hlcjo6am9iUHJvZ3Jlc3MpOworCisgICAgLyoqCisgICAgICogSGFu
ZGxlciBmb3Igd2hlbiBhIGpvYiBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LiAgRXZlbiBpZiB0aGUg
am9iIGlzIGNhbmNlbGxlZAorICAgICAqIHdlJ2xsIHJlY2VpdmUgdGhpcyBzaWduYWwuICBFaXRo
ZXIgd2F5LCByZW1vdmUgdGhlIGpvYiBmcm9tIHRoZSBub3RpZmllZCBsaXN0CisgICAgICogaWYg
aXQgd2FzIG5vdGlmaWVkIHByZXZpb3VzbHkuCisgICAgICovCisgICAgY29ubmVjdChLQ3Vwc0Nv
bm5lY3Rpb246Omdsb2JhbCgpLAorICAgICAgICAgICAgJktDdXBzQ29ubmVjdGlvbjo6am9iQ29t
cGxldGVkLAorICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgIFt0aGlzXShbW21heWJlX3Vu
dXNlZF1dIGNvbnN0IFFTdHJpbmcgJnRleHQsCisgICAgICAgICAgICAgICAgICAgW1ttYXliZV91
bnVzZWRdXSBjb25zdCBRU3RyaW5nICZwcmludGVyVXJpLAorICAgICAgICAgICAgICAgICAgIFtb
bWF5YmVfdW51c2VkXV0gY29uc3QgUVN0cmluZyAmcHJpbnRlck5hbWUsCisgICAgICAgICAgICAg
ICAgICAgW1ttYXliZV91bnVzZWRdXSB1aW50IHByaW50ZXJTdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICBbW21heWJlX3VudXNlZF1dIGNvbnN0IFFTdHJpbmcgJnByaW50ZXJTdGF0ZVJlYXNvbnMs
CisgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSBib29sIHByaW50ZXJJc0FjY2Vw
dGluZ0pvYnMsCisgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSB1aW50IGpvYklk
LAorICAgICAgICAgICAgICAgICAgIFtbbWF5YmVfdW51c2VkXV0gdWludCBqb2JTdGF0ZSwKKyAg
ICAgICAgICAgICAgICAgICBbW21heWJlX3VudXNlZF1dIGNvbnN0IFFTdHJpbmcgJmpvYlN0YXRl
UmVhc29ucywKKyAgICAgICAgICAgICAgICAgICBbW21heWJlX3VudXNlZF1dIGNvbnN0IFFTdHJp
bmcgJmpvYk5hbWUsCisgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSB1aW50IGpv
YkltcHJlc3Npb25zQ29tcGxldGVkKSB7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBjbnQg
PSBtX25vdGlmaWVkSm9iSWRzLnJlbW92ZUFsbChqb2JJZCk7CisgICAgICAgICAgICAgICAgcUNE
ZWJ1ZyhQTUtERUQpIDw8ICJqb2JDb21wbGV0ZWQ6IiA8PCBqb2JTdGF0ZVJlYXNvbnMgPDwgam9i
SWQgPDwgIlJlbW92ZWQgZnJvbSBub3RpZnkgbGlzdDoiIDw8IGNudDsKKyAgICAgICAgICAgIH0p
OworfQogCi0gICAgY29ubmVjdChLQ3Vwc0Nvbm5lY3Rpb246Omdsb2JhbCgpLCAmS0N1cHNDb25u
ZWN0aW9uOjpqb2JDcmVhdGVkLCB0aGlzLCAmQ3Vwc1dhdGNoZXI6OmpvYkhhbmRsZXIpOwordm9p
ZCBDdXBzV2F0Y2hlcjo6bm90aWZ5UHJpbnRlclN0YXR1cyhjb25zdCBLQ3Vwc1ByaW50ZXIgJnBy
aW50ZXIsIGNvbnN0IFFTdHJpbmcgcmVhc29uKQoreworICAgIGF1dG8gbm90aWZ5ID0gbmV3IEtO
b3RpZmljYXRpb24odSJTdGF0dXNXYXJuaW5nIl9zKTsKKyAgICBub3RpZnktPnNldENvbXBvbmVu
dE5hbWUodSJwcmludG1hbmFnZXIiX3MpOworICAgIG5vdGlmeS0+c2V0VGl0bGUocHJpbnRlci5p
bmZvKCkpOworICAgIG5vdGlmeS0+c2V0VGV4dCgKKyAgICAgICAgaTE4bmMoIkBpbmZvOnN0YXR1
cyAlMSBpcyB0aGUgcmVhc29uIG1lc3NhZ2UgZm9yIHRoZSBzdGF0dXMiLCAiJTFcblRoZSBwcmlu
dCBqb2Igd2lsbCBjb21wbGV0ZSB3aGVuIHRoZSBwcmludGVyIGJlY29tZXMgYXZhaWxhYmxlLiIs
IHJlYXNvbikpOworCisgICAgLy8gV2UgY2FuIGFsbG93IHRoZSB1c2VyIHRvIHJlc3VtZSB0aGUg
cHJpbnRlciBpZiBpdCBpcyBwYXVzZWQvc3RvcHBlZAorICAgIGlmIChwcmludGVyLnN0YXRlKCkg
PT0gS0N1cHNQcmludGVyOjpTdG9wcGVkKSB7CisgICAgICAgIGF1dG8gZGVmQWN0aW9uID0gbm90
aWZ5LT5hZGRBY3Rpb24oaTE4bmMoIkBhY3Rpb246YnV0dG9uIFByb21wdCB0byByZXN1bWUgcHJp
bnRlciIsICJSZXN1bWUgUHJpbnRlciIpKTsKKyAgICAgICAgY29ubmVjdChkZWZBY3Rpb24sICZL
Tm90aWZpY2F0aW9uQWN0aW9uOjphY3RpdmF0ZWQsIHRoaXMsIFtwcmludGVyXSgpIHsKKyAgICAg
ICAgICAgIFByaW50ZXJDb21tYW5kcyBwcmludGVyQ21kOworICAgICAgICAgICAgcHJpbnRlckNt
ZC5yZXN1bWVQcmludGVyKHByaW50ZXIubmFtZSgpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAg
IG5vdGlmeS0+c2VuZEV2ZW50KCk7CisgICAgcUNEZWJ1ZyhQTUtERUQpIDw8ICJTZW5kaW5nIHN0
YXR1cyBldmVudCBub3RpZmljYXRpb246IiA8PCBwcmludGVyLm5hbWUoKSA8PCByZWFzb247CiB9
CiAKIHZvaWQgQ3Vwc1dhdGNoZXI6OmNoZWNrTWFya2VyTGV2ZWxzKGNvbnN0IEtDdXBzUHJpbnRl
ciAmcHJpbnRlcikKQEAgLTQ0LDE1ICs3NywxNSBAQCB2b2lkIEN1cHNXYXRjaGVyOjpjaGVja01h
cmtlckxldmVscyhjb25zdCBLQ3Vwc1ByaW50ZXIgJnByaW50ZXIpCiAgICAgICAgIG5vdGlmeS0+
c2V0VGV4dChtc2dzLmpvaW4odSJcbiJfcykpOwogCiAgICAgICAgIGF1dG8gY2hlY2tNYXJrZXJz
ID0gbm90aWZ5LT5hZGREZWZhdWx0QWN0aW9uKGkxOG5jKCJAYWN0aW9uOmJ1dHRvbiBjaGVjayBw
cmludGVyIGluayBsZXZlbHMiLCAiQ2hlY2sgTGV2ZWxz4oCmIikpOwotICAgICAgICBjb25uZWN0
KGNoZWNrTWFya2VycywgJktOb3RpZmljYXRpb25BY3Rpb246OmFjdGl2YXRlZCwgdGhpcywgW3Bu
ID0gcHJpbnRlci5uYW1lKCksIHRva2VuID0gbm90aWZ5LT54ZGdBY3RpdmF0aW9uVG9rZW4oKS50
b1V0ZjgoKV0oKSB7Ci0gICAgICAgICAgICBQcm9jZXNzUnVubmVyOjprY21Db25maWd1cmVQcmlu
dGVyKHBuLCB0b2tlbik7CisgICAgICAgIGNvbm5lY3QoY2hlY2tNYXJrZXJzLCAmS05vdGlmaWNh
dGlvbkFjdGlvbjo6YWN0aXZhdGVkLCB0aGlzLCBbcHJpbnRlciwgbm90aWZ5XSgpIHsKKyAgICAg
ICAgICAgIFByb2Nlc3NSdW5uZXI6OmtjbUNvbmZpZ3VyZVByaW50ZXIocHJpbnRlci5uYW1lKCks
IG5vdGlmeS0+eGRnQWN0aXZhdGlvblRva2VuKCkudG9VdGY4KCkpOwogICAgICAgICB9KTsKIAog
ICAgICAgICBub3RpZnktPnNlbmRFdmVudCgpOwogICAgIH0KIH0KIAotdm9pZCBDdXBzV2F0Y2hl
cjo6am9iSGFuZGxlcihbW21heWJlX3VudXNlZF1dIGNvbnN0IFFTdHJpbmcgJnRleHQsCit2b2lk
IEN1cHNXYXRjaGVyOjpqb2JDcmVhdGVkKFtbbWF5YmVfdW51c2VkXV0gY29uc3QgUVN0cmluZyAm
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSBjb25z
dCBRU3RyaW5nICZwcmludGVyVXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW21h
eWJlX3VudXNlZF1dIGNvbnN0IFFTdHJpbmcgJnByaW50ZXJOYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbW21heWJlX3VudXNlZF1dIHVpbnQgcHJpbnRlclN0YXRlLApAQCAtNjQs
MTkgKzk3LDMxIEBAIHZvaWQgQ3Vwc1dhdGNoZXI6OmpvYkhhbmRsZXIoW1ttYXliZV91bnVzZWRd
XSBjb25zdCBRU3RyaW5nICZ0ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW21h
eWJlX3VudXNlZF1dIGNvbnN0IFFTdHJpbmcgJmpvYk5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtbbWF5YmVfdW51c2VkXV0gdWludCBqb2JJbXByZXNzaW9uc0NvbXBsZXRlZCkK
IHsKLSAgICBxQ0RlYnVnKFBNS0RFRCkgPDwgdGV4dCA8PCBwcmludGVyTmFtZSA8PCBqb2JJZCA8
PCBqb2JTdGF0ZVJlYXNvbnM7CisgICAgcUNEZWJ1ZyhQTUtERUQpIDw8ICJqb2JDcmVhdGVkOiIg
PDwgdGV4dCA8PCBwcmludGVyTmFtZSA8PCBqb2JJZCA8PCBqb2JTdGF0ZVJlYXNvbnM7CiAgICAg
c3RhdGljIGNvbnN0IFFTdHJpbmdMaXN0IHNfYXR0cnMoe0tDVVBTX01BUktFUl9OQU1FUywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0NVUFNfTUFSS0VSX0xFVkVMUywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0NVUFNfTUFSS0VSX0hJR0hf
TEVWRUxTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLQ1VQU19NQVJL
RVJfTE9XX0xFVkVMUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0NV
UFNfTUFSS0VSX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBL
Q1VQU19QUklOVEVSX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEtDVVBTX1BSSU5URVJfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEtDVVBTX1BSSU5URVJfU1RBVEVfTUVTU0FHRSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgS0NVUFNfUFJJTlRFUl9JTkZPLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBLQ1VQU19QUklOVEVSX1RZUEV9KTsKIAogICAgIGNvbnN0IGF1dG8g
cmVxdWVzdCA9IG5ldyBLQ3Vwc1JlcXVlc3Q7Ci0gICAgY29ubmVjdChyZXF1ZXN0LCAmS0N1cHNS
ZXF1ZXN0OjpmaW5pc2hlZCwgdGhpcywgW3RoaXNdKEtDdXBzUmVxdWVzdCAqcmVxKSB7CisgICAg
Y29ubmVjdChyZXF1ZXN0LCAmS0N1cHNSZXF1ZXN0OjpmaW5pc2hlZCwgdGhpcywgW3RoaXMsIHRl
eHRdKEtDdXBzUmVxdWVzdCAqcmVxKSB7CiAgICAgICAgIGlmICghcmVxLT5wcmludGVycygpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgY29uc3QgYXV0byBwcmludGVyID0gcmVxLT5wcmludGVy
cygpLmF0KDApOworICAgICAgICAgICAgY29uc3QgYXV0byBwcmludGVyID0gcmVxLT5wcmludGVy
cygpLmNvbnN0Rmlyc3QoKTsKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogSWYgYSBq
b2IgaXMgY3JlYXRlZCB0aGUgcHJpbnRlciBpcyBtb3N0IGxpa2VseSBhdmFpbGFibGUgYW5kCisg
ICAgICAgICAgICAgKiBhY2NlcHRpbmcgcHJpbnQgam9iIHJlcXVlc3RzOyBob3dldmVyLCBpdCBj
b3VsZCBiZSBzaW1wbHkgcGF1c2VkL3N0b3BwZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gcmVhc29uID0gcHJpbnRlci5jaGVja05vdEF2YWlsYWJsZSh0ZXh0KTsK
KyAgICAgICAgICAgIGlmICghcmVhc29uLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG5v
dGlmeVByaW50ZXJTdGF0dXMocHJpbnRlciwgcmVhc29uKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC8vIENoZWNrIG1hcmtlcnMKICAgICAgICAgICAgIGNoZWNrTWFya2VyTGV2ZWxzKHBy
aW50ZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gaXQncyBwb3NzaWJsZSBh
dHRyaWJ1dGVzIGZyb20gYSB0ZW1wb3JhcnkgcXVldWUgY291bGQgYmUgZW1wdHkKQEAgLTg4LDQg
KzEzMyw0NSBAQCB2b2lkIEN1cHNXYXRjaGVyOjpqb2JIYW5kbGVyKFtbbWF5YmVfdW51c2VkXV0g
Y29uc3QgUVN0cmluZyAmdGV4dCwKICAgICByZXF1ZXN0LT5nZXRQcmludGVyQXR0cmlidXRlcyhw
cmludGVyTmFtZSwgZmFsc2UsIHNfYXR0cnMpOwogfQogCisvKioKKyAqIFRoaXMgc2lnbmFsIGlt
cGxpZXMgQ1VQUyBpcyB0cnlpbmcgdG8gY29tcGxldGUgYSBwcmludCBqb2IgYW5kIHdpbGwgYmUg
cmVjZWl2ZWQKKyAqIGlmIHRoZSBwcmludGVyIGlzIGF2YWlsYWJsZSBvciBub3QsIHBvc3NpYmx5
IG1hbnkgdGltZXMgcGVyIGpvYi4KKyAqCisgKiBJZiB3ZSd2ZSBhbHJlYWR5IG5vdGlmaWVkIG9u
IGEgam9iLCBkb24ndCBub3RpZnkgYWdhaW4sIG90aGVyd2lzZSwgY2hlY2sgYXZhaWxhYmxlLgor
ICovCit2b2lkIEN1cHNXYXRjaGVyOjpqb2JQcm9ncmVzcyhjb25zdCBRU3RyaW5nICZ0ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSBjb25zdCBRU3Ry
aW5nICZwcmludGVyVXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZyAmcHJpbnRlck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IHBy
aW50ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcg
JnByaW50ZXJTdGF0ZVJlYXNvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHByaW50ZXJJc0FjY2VwdGluZ0pvYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50IGpvYklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1ttYXliZV91bnVzZWRd
XSB1aW50IGpvYlN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZyAmam9iU3RhdGVSZWFzb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tt
YXliZV91bnVzZWRdXSBjb25zdCBRU3RyaW5nICZqb2JOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW1ttYXliZV91bnVzZWRdXSB1aW50IGpvYkltcHJlc3Npb25zQ29tcGxldGVk
KQoreworICAgIHFDRGVidWcoUE1LREVEKSA8PCAiam9iUHJvZ3Jlc3M6IiA8PCB0ZXh0IDw8IHBy
aW50ZXJOYW1lIDw8IGpvYklkIDw8IHByaW50ZXJTdGF0ZSA8PCBwcmludGVyU3RhdGVSZWFzb25z
IDw8IGpvYlN0YXRlIDw8IGpvYlN0YXRlUmVhc29uczsKKworICAgIGlmIChtX25vdGlmaWVkSm9i
SWRzLmNvbnRhaW5zKGpvYklkKSkgeworICAgICAgICBxQ0RlYnVnKFBNS0RFRCkgPDwgam9iSWQg
PDwgIkpvYklEIGhhcyBhbHJlYWR5IHRyaWdnZXJlZCBhIG5vdGlmeSBldmVudCwgaWdub3Jpbmci
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgbW9jayBwcmludGVy
IGJhc2VkIG9uIHRoZSBwYXJhbXMgZnJvbSB0aGUgc2lnbmFsCisgICAgS0N1cHNQcmludGVyIHBy
aW50ZXJ7e3tLQ1VQU19QUklOVEVSX0lORk8sIHByaW50ZXJOYW1lfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAge0tDVVBTX1BSSU5URVJfTkFNRSwgcHJpbnRlck5hbWV9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB7S0NVUFNfUFJJTlRFUl9UWVBFLCBDVVBTX1BSSU5URVJfTE9DQUx9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICB7S0NVUFNfUFJJTlRFUl9TVEFURSwgcHJpbnRl
clN0YXRlfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAge0tDVVBTX1BSSU5URVJfU1RBVEVf
TUVTU0FHRSwgcHJpbnRlclN0YXRlUmVhc29uc30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHtLQ1VQU19QUklOVEVSX0lTX0FDQ0VQVElOR19KT0JTLCBwcmludGVySXNBY2NlcHRpbmdKb2Jz
fX19OworCisgICAgY29uc3QgYXV0byByZWFzb24gPSBwcmludGVyLmNoZWNrTm90QXZhaWxhYmxl
KHRleHQpOworICAgIGlmICghcmVhc29uLmlzRW1wdHkoKSkgeworICAgICAgICBub3RpZnlQcmlu
dGVyU3RhdHVzKHByaW50ZXIsIHJlYXNvbik7CisgICAgICAgIG1fbm90aWZpZWRKb2JJZHMgPDwg
am9iSWQ7CisgICAgICAgIHFDRGVidWcoUE1LREVEKSA8PCBqb2JJZCA8PCAiU2V0dGluZyBqb2JJ
RCBsaXN0ZWQgYXMgbm90aWZpZWQiOworICAgIH0KK30KKwogI2luY2x1ZGUgIm1vY19DdXBzV2F0
Y2hlci5jcHAiCmRpZmYgLS1naXQgYS9zcmMva2RlZC9DdXBzV2F0Y2hlci5oIGIvc3JjL2tkZWQv
Q3Vwc1dhdGNoZXIuaAppbmRleCAwZjVkNzMzZS4uZTM4MjMyMmIgMTAwNjQ0Ci0tLSBhL3NyYy9r
ZGVkL0N1cHNXYXRjaGVyLmgKKysrIGIvc3JjL2tkZWQvQ3Vwc1dhdGNoZXIuaApAQCAtMTAsMTQg
KzEwLDIxIEBACiAKIGNsYXNzIEtDdXBzUHJpbnRlcjsKIC8qKgotICogQ2hlY2sgZm9yIGF0IGxl
YXN0IG9uZSBtYXJrZXIgbGV2ZWwgYmVpbmcgYmVsb3cgdGhlIHRocmVzaG9sZC4KKyAqIFBlcmZv
cm0gbWFya2VyIGxldmVsIGNoZWNraW5nIGFuZCBwcmludGVyIHN0YXR1cyBjaGVja2luZworICog
d2hlbiBhIGpvYiBpcyBjcmVhdGVkLgogICoKLSAqIENVUFMgb25seSB1cGRhdGVzIHByaW50ZXJz
LmNvbmYgYWZ0ZXIgdGhlIGZpcnN0IHByaW50CisgKiBGb3IgbWFya2VyIGxldmVscywgQ1VQUyBv
bmx5IHVwZGF0ZXMgcHJpbnRlcnMuY29uZiBhZnRlciB0aGUgZmlyc3QgcHJpbnQKICAqIGpvYiBp
cyBjcmVhdGVkL3NlbnQsIHNvIG1hcmtlci0qIGF0dHJpYnV0ZXMgd2lsbCBub3QgZXhpc3QgdW50
aWwgdGhhdCBwb2ludC4KICAqIEZvciBhIG5ld2x5IGFkZGVkIHByaW50ZXIgcXVldWUgb3IgZGlz
Y292ZXJlZCBwcmludGVyLCB0aGlzIHdpbGwgYmUgYSBub29wLgogICoKICAqIEFzc3VtZXMgbGV2
ZWxzIGFuZCB0aHJlc2hvbGRzIGFyZSBwZXJjZW50YWdlcy4KICAqIHNlZSBodHRwczovL29wZW5w
cmludGluZy5naXRodWIuaW8vY3Vwcy9kb2Mvc3BlYy1pcHAuaHRtbCNtYXJrZXItaGlnaC1sZXZl
bHMKKyAqCisgKiBGb3IgcHJpbnRlciBzdGF0dXMgY2hlY2tpbmcsIHdoZW4gYSBwcmludGVyIGlz
IHBhdXNlZCBvciBub3QgYWNjZXB0aW5nIGpvYnMKKyAqIG5vICJqb2JQcm9ncmVzcyIgc2lnbmFs
cyBhcmUgc2VudCBzbyB3ZSBjYW4gY2hlY2sgd2hlbiB0aGUgam9iIGlzIGNyZWF0ZWQuCisgKgor
ICogSWYgdGhlIHByaW50ZXIgaXMgb2ZmbGluZSBvciBjYW5ub3QgYmUgbG9jYXRlZCwgd2Ugd2ls
bCBrbm93IHRoYXQgdmlhIHRoZQorICogam9iUHJvZ3Jlc3Mgc2lnbmFsIGFuZCB3ZSBjYW4gY2hl
Y2sgc3RhdHVzIHJlYXNvbnMgYWdhaW5zdCBrZXl3b3Jkcy4KICAqLwogY2xhc3MgQ3Vwc1dhdGNo
ZXIgOiBwdWJsaWMgUU9iamVjdAogewpAQCAtMjksMTEgKzM2LDIzIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2b2lkIGNoZWNrTWFya2VyTGV2ZWxzKGNvbnN0IEtDdXBzUHJpbnRlciAmcHJp
bnRlcik7CisgICAgdm9pZCBub3RpZnlQcmludGVyU3RhdHVzKGNvbnN0IEtDdXBzUHJpbnRlciAm
cHJpbnRlciwgY29uc3QgUVN0cmluZyByZWFzb24gPSBRU3RyaW5nKCkpOwogCisgICAgdm9pZCBq
b2JQcm9ncmVzcyhjb25zdCBRU3RyaW5nICZ0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUVN0cmluZyAmcHJpbnRlclVyaSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJp
bmcgJnByaW50ZXJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgdWludCBwcmludGVyU3RhdGUs
CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZwcmludGVyU3RhdGVSZWFzb25z
LAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmludGVySXNBY2NlcHRpbmdKb2JzLAorICAg
ICAgICAgICAgICAgICAgICAgdWludCBqb2JJZCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQg
am9iU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZqb2JTdGF0ZVJl
YXNvbnMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZqb2JOYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgdWludCBqb2JJbXByZXNzaW9uc0NvbXBsZXRlZCk7CiAgICAgLyoq
CiAgICAgICogQGJyaWVmIEdlbmVyaWMgaGFuZGxlciBmb3Igam9iIHNpZ25hbHMKICAgICAgKi8K
LSAgICB2b2lkIGpvYkhhbmRsZXIoY29uc3QgUVN0cmluZyAmdGV4dCwKKyAgICB2b2lkIGpvYkNy
ZWF0ZWQoY29uc3QgUVN0cmluZyAmdGV4dCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0
cmluZyAmcHJpbnRlclVyaSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmcHJp
bnRlck5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQgcHJpbnRlclN0YXRlLApAQCAtNDQs
NCArNjMsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZq
b2JTdGF0ZVJlYXNvbnMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmpvYk5h
bWUsCiAgICAgICAgICAgICAgICAgICAgIHVpbnQgam9iSW1wcmVzc2lvbnNDb21wbGV0ZWQpOwor
CisgICAgUUxpc3Q8dWludD4gbV9ub3RpZmllZEpvYklkczsKIH07CmRpZmYgLS1naXQgYS9zcmMv
a2RlZC9wcmludG1hbmFnZXIubm90aWZ5cmMgYi9zcmMva2RlZC9wcmludG1hbmFnZXIubm90aWZ5
cmMKaW5kZXggMzk5ZWIzYmMuLjZhNWJlZTAxIDEwMDY0NAotLS0gYS9zcmMva2RlZC9wcmludG1h
bmFnZXIubm90aWZ5cmMKKysrIGIvc3JjL2tkZWQvcHJpbnRtYW5hZ2VyLm5vdGlmeXJjCkBAIC0x
MTEsNiArMTExLDExIEBAIENvbW1lbnRbdWtdPdCh0L/QvtCy0ZbRidC10L3QvdGPINC/0YDQviDQ
stC40Y/QstC70LXQvdC90Y8g0L3QvtCy0L7Qs9C+INC/0YDQuNC9CiBDb21tZW50W3poX0NOXT3m
o4DmtYvliLDmlrDmiZPljbDmnLrml7bpgJrnn6UKIENvbW1lbnRbemhfVFddPeWBtea4rOWIsOaW
sOWNsOihqOapn+aZgueZvOWHuumAmuefpQogCitbRXZlbnQvU3RhdHVzV2FybmluZ10KK05hbWU9
UHJpbnRlciBTdGF0dXMgV2FybmluZworQWN0aW9uPVBvcHVwCitJY29uTmFtZT1wcmludGVyLXdh
cm5pbmcKKwogW0V2ZW50L01hcmtlckxldmVsXQogTmFtZT1Mb3cgSW5rL1RvbmVyIExldmVscwog
TmFtZVthcl092YXYs9iq2YjZitin2Kog2KfZhNit2KjYsS/Zhdiz2K3ZiNmCINin2YTYrdio2LEg
2YXZhtiu2YHYttipCmRpZmYgLS1naXQgYS9zcmMvbGlia2N1cHMvS0N1cHNQcmludGVyLmNwcCBi
L3NyYy9saWJrY3Vwcy9LQ3Vwc1ByaW50ZXIuY3BwCmluZGV4IDA4MTZjMzUxLi41ODNkNGIzOCAx
MDA2NDQKLS0tIGEvc3JjL2xpYmtjdXBzL0tDdXBzUHJpbnRlci5jcHAKKysrIGIvc3JjL2xpYmtj
dXBzL0tDdXBzUHJpbnRlci5jcHAKQEAgLTEwLDYgKzEwLDggQEAKICNpbmNsdWRlICJLQ3Vwc1By
aW50ZXIuaCIKICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgogCit1c2luZyBuYW1lc3BhY2Ug
UXQ6OlN0cmluZ0xpdGVyYWxzOworCiBLQ3Vwc1ByaW50ZXI6OktDdXBzUHJpbnRlcigpCiAgICAg
OiBtX2lzQ2xhc3MoZmFsc2UpCiB7CkBAIC0yOTksNiArMzAxLDI1IEBAIFFTdHJpbmcgS0N1cHNQ
cmludGVyOjpzdGF0ZU1zZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tLQ1VQU19Q
UklOVEVSX1NUQVRFX01FU1NBR0VdLnRvU3RyaW5nKCk7CiB9CiAKK1FTdHJpbmcgS0N1cHNQcmlu
dGVyOjpjaGVja05vdEF2YWlsYWJsZShjb25zdCBRU3RyaW5nICZtc2cpIGNvbnN0Cit7CisgICAg
c3RhdGljIGNvbnN0IFFTdHJpbmdMaXN0IGtleXdvcmRze3Uib2ZmbGluZSJfcywgdSJwYXVzZWQi
X3MsIHUic3RvcHBlZCJfcywgdSJzaHV0ZG93biJfc307CisKKyAgICBpZiAoc3RhdGUoKSA9PSBT
dG9wcGVkKSB7CisgICAgICAgIHJldHVybiBpMThuYygiQGluZm86c3RhdHVzIiwgIlRoZSBwcmlu
dGVyIGlzIHBhdXNlZCBvciBzdG9wcGVkLiIpOworICAgIH0KKworICAgIGF1dG8gaXQgPSBzdGQ6
OmZpbmRfaWYoa2V5d29yZHMuYmVnaW4oKSwga2V5d29yZHMuZW5kKCksIFt0aGlzXShjb25zdCBR
U3RyaW5nICZrZXl3b3JkKSB7CisgICAgICAgIHJldHVybiBzdGF0ZU1zZygpLmNvbnRhaW5zKGtl
eXdvcmQsIFF0OjpDYXNlSW5zZW5zaXRpdmUpOworICAgIH0pOworCisgICAgaWYgKG1zZy5jb250
YWlucyh1InVuYWJsZSB0byBsb2NhdGUiX3MsIFF0OjpDYXNlSW5zZW5zaXRpdmUpIHx8IG1zZy5j
b250YWlucyh1InVuYXZhaWxhYmxlIl9zLCBRdDo6Q2FzZUluc2Vuc2l0aXZlKSB8fCBpdCAhPSBr
ZXl3b3Jkcy5lbmQoKSkgeworICAgICAgICByZXR1cm4gbXNnOworICAgIH0KKworICAgIHJldHVy
biB7fTsKK30KKwogaW50IEtDdXBzUHJpbnRlcjo6bWFya2VyQ2hhbmdlVGltZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fYXR0cmlidXRlc1tLQ1VQU19NQVJLRVJfQ0hBTkdFX1RJTUVdLnRvSW50
KCk7CmRpZmYgLS1naXQgYS9zcmMvbGlia2N1cHMvS0N1cHNQcmludGVyLmggYi9zcmMvbGlia2N1
cHMvS0N1cHNQcmludGVyLmgKaW5kZXggMjU0ZDhlYjQuLmJkZGNkYTllIDEwMDY0NAotLS0gYS9z
cmMvbGlia2N1cHMvS0N1cHNQcmludGVyLmgKKysrIGIvc3JjL2xpYmtjdXBzL0tDdXBzUHJpbnRl
ci5oCkBAIC01MCw2ICs1MCwyMCBAQCBwdWJsaWM6CiAKICAgICBTdGF0dXMgc3RhdGUoKSBjb25z
dDsKICAgICBRU3RyaW5nIHN0YXRlTXNnKCkgY29uc3Q7CisgICAgLyoqCisgICAgICogQGJyaWVm
IGNoZWNrTm90QXZhaWxhYmxlIC0gQ2hlY2sgdG8gc2VlIGlmIGEgcHJpbnRlciBpcyBhdmFpbGFi
bGUKKyAgICAgKgorICAgICAqIEBwYXJhbSBtc2cgaXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgc2Vh
cmNoZWQgZm9yIGtleXdvcmRzIGluZGljYXRpbmcKKyAgICAgKiBhdmFpbGFiaWxpdHkgb2YgdGhl
IHByaW50ZXIuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIElmIHRoZSBwcmludGVyIGlzIG5vdCBh
dmFpbGFibGUsIHRoZSBtZXNzYWdlIHBhcmFtLCBhcyB0aGlzCisgICAgICogaXMgZ2VuZXJhbGx5
IGFuIGluZm9ybWF0aXZlIG1lc3NhZ2UgZnJvbSBDVVBTIGRldGFpbGluZyB0aGUgcmVhc29uLgor
ICAgICAqIEhvd2V2ZXIsIGZvciBwYXVzZWQgcHJpbnRlcnMsIHJldHVybiBhIHNpbXBsZSBtZXNz
YWdlIHRoYXQKKyAgICAgKiB0aGUgcHJpbnRlciBpcyBwYXVzZWQuCisgICAgICoKKyAgICAgKiBS
ZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJpbnRlciBpcyBhdmFpbGFibGUuCisgICAg
ICovCisgICAgUVN0cmluZyBjaGVja05vdEF2YWlsYWJsZShjb25zdCBRU3RyaW5nICZtc2cpIGNv
bnN0OwogICAgIGludCBtYXJrZXJDaGFuZ2VUaW1lKCkgY29uc3Q7CiAgICAgUVZhcmlhbnQgYXJn
dW1lbnQoY29uc3QgUVN0cmluZyAmbmFtZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL0NN
YWtlTGlzdHMudHh0IGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKaW5kZXggNDgyM2UxNjYuLmY4MTI5
MjA0IDEwMDY0NAotLS0gYS90ZXN0cy9DTWFrZUxpc3RzLnR4dAorKysgYi90ZXN0cy9DTWFrZUxp
c3RzLnR4dApAQCAtMjIsNiArMjIsMTMgQEAgZWNtX2FkZF90ZXN0KAogICAgIE5BTUVfUFJFRklY
ICJwbS0iCiApCiAKK2VjbV9hZGRfdGVzdCgKKyAgICBub3RpZnlzdGF0dXN0ZXN0LmNwcAorICAg
IFRFU1RfTkFNRSBub3RpZnlzdGF0dXN0ZXN0cworICAgIExJTktfTElCUkFSSUVTIGtjdXBzIFF0
OjpUZXN0CisgICAgTkFNRV9QUkVGSVggInBtLSIKKykKKwogZWNtX2FkZF90ZXN0KAogICAgIGNv
bW1hbmR0ZXN0LmNwcAogICAgIFRlc3RIZWxwZXJzLmgKZGlmZiAtLWdpdCBhL3Rlc3RzL25vdGlm
eXN0YXR1c3Rlc3QuY3BwIGIvdGVzdHMvbm90aWZ5c3RhdHVzdGVzdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjU5NGRiMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz
dHMvbm90aWZ5c3RhdHVzdGVzdC5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIFNQRFgtRmls
ZUNvcHlyaWdodFRleHQ6IDIwMjYgTWlrZSBOb2UgPG5vZWVyb3ZlckBnbWFpbC5jb20+CisgKiBT
UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpbmNsdWRl
IDxRT2JqZWN0PgorI2luY2x1ZGUgPFFUZXN0PgorCisjaW5jbHVkZSA8S0N1cHNQcmludGVyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBRdDo6TGl0ZXJhbHM6OlN0cmluZ0xpdGVyYWxzOworCitjbGFz
cyBOb3RpZnlTdGF0dXNUZXN0IDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorCitw
cml2YXRlIFFfU0xPVFM6CisKKyAgICB2b2lkIHRlc3ROb3RpZnlTdGF0dXMoKQorICAgIHsKKyAg
ICAgICAgLy8gQW4gaWRsZSwgYXZhaWxhYmxlIHByaW50ZXIKKyAgICAgICAgS0N1cHNQcmludGVy
IHByaW50ZXJ7e3tLQ1VQU19QUklOVEVSX05BTUUsIHUibm90aWZ5dGVzdCJfc30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7S0NVUFNfUFJJTlRFUl9UWVBFLCBDVVBTX1BSSU5URVJf
TE9DQUx9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0tDVVBTX1BSSU5URVJfU1RB
VEUsIEtDdXBzUHJpbnRlcjo6SWRsZX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
S0NVUFNfUFJJTlRFUl9TVEFURV9NRVNTQUdFLCB1Im5vbmUiX3N9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge0tDVVBTX1BSSU5URVJfSVNfQUNDRVBUSU5HX0pPQlMsIHRydWV9fX07
CisKKyAgICAgICAgYXV0byByZWFzb24gPSBwcmludGVyLmNoZWNrTm90QXZhaWxhYmxlKHUidGVz
dCBtZXNzYWdlIl9zKTsKKyAgICAgICAgLy8gcmVhc29uIGVtcHR5IG1lYW5zIHRoZSBwcmludGVy
IGlzIGF2YWlsYWJsZQorICAgICAgICBRVkVSSUZZKHJlYXNvbi5pc0VtcHR5KCkpOworCisgICAg
ICAgIC8vIEEgcGF1c2VkIHByaW50ZXIKKyAgICAgICAgcHJpbnRlci5zZXRBdHRyaWJ1dGUoS0NV
UFNfUFJJTlRFUl9TVEFURV9NRVNTQUdFLCB1InBhdXNlZCJfcyk7CisgICAgICAgIHJlYXNvbiA9
IHByaW50ZXIuY2hlY2tOb3RBdmFpbGFibGUodSJ0ZXN0IG1lc3NhZ2UiX3MpOworICAgICAgICBR
VkVSSUZZKCFyZWFzb24uaXNFbXB0eSgpKTsKKworICAgICAgICBwcmludGVyLnNldEF0dHJpYnV0
ZShLQ1VQU19QUklOVEVSX1NUQVRFX01FU1NBR0UsIHUibm9uZSJfcyk7CisgICAgICAgIHByaW50
ZXIuc2V0QXR0cmlidXRlKEtDVVBTX1BSSU5URVJfU1RBVEUsIEtDdXBzUHJpbnRlcjo6U3RvcHBl
ZCk7CisgICAgICAgIHJlYXNvbiA9IHByaW50ZXIuY2hlY2tOb3RBdmFpbGFibGUodSJ0ZXN0IG1l
c3NhZ2UiX3MpOworICAgICAgICBRVkVSSUZZKCFyZWFzb24uaXNFbXB0eSgpKTsKKworICAgICAg
ICAvLyBBbiBvZmZsaW5lIHByaW50ZXIKKyAgICAgICAgcHJpbnRlci5zZXRBdHRyaWJ1dGUoS0NV
UFNfUFJJTlRFUl9TVEFURV9NRVNTQUdFLCB1Im9mZmxpbmUiX3MpOworICAgICAgICBwcmludGVy
LnNldEF0dHJpYnV0ZShLQ1VQU19QUklOVEVSX1NUQVRFLCBLQ3Vwc1ByaW50ZXI6OklkbGUpOwor
ICAgICAgICByZWFzb24gPSBwcmludGVyLmNoZWNrTm90QXZhaWxhYmxlKHUidGVzdCBtZXNzYWdl
Il9zKTsKKyAgICAgICAgUVZFUklGWSghcmVhc29uLmlzRW1wdHkoKSk7CisKKyAgICAgICAgLy8g
QSBkaXNjb25uZWN0ZWQgcHJpbnRlcgorICAgICAgICBwcmludGVyLnNldEF0dHJpYnV0ZShLQ1VQ
U19QUklOVEVSX1NUQVRFX01FU1NBR0UsIHUibm9uZSJfcyk7CisgICAgICAgIHJlYXNvbiA9IHBy
aW50ZXIuY2hlY2tOb3RBdmFpbGFibGUodSJ1bmF2YWlsYWJsZSJfcyk7CisgICAgICAgIFFWRVJJ
RlkoIXJlYXNvbi5pc0VtcHR5KCkpOworCisgICAgICAgIC8vIEEgbm90IGZvdW5kIHByaW50ZXIK
KyAgICAgICAgcHJpbnRlci5zZXRBdHRyaWJ1dGUoS0NVUFNfUFJJTlRFUl9TVEFURV9NRVNTQUdF
LCB1Im5vbmUiX3MpOworICAgICAgICByZWFzb24gPSBwcmludGVyLmNoZWNrTm90QXZhaWxhYmxl
KHUidW5hYmxlIHRvIGxvY2F0ZSJfcyk7CisgICAgICAgIFFWRVJJRlkoIXJlYXNvbi5pc0VtcHR5
KCkpOworICAgIH0KK307CisKK1FURVNUX01BSU4oTm90aWZ5U3RhdHVzVGVzdCkKKyNpbmNsdWRl
ICJub3RpZnlzdGF0dXN0ZXN0Lm1vYyIK