From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Matthew Harmsen To: git-commits@fedoraproject.org Subject: [rpms/jss] pqc: Resolves: mbz #1408057,1409867 Date: Tue, 28 Jul 2026 16:48:36 GMT Message-ID: <178525731607.1.6464801933760417219.rpms-jss-b754fed43d5c@fedoraproject.org> List-ID: X-Git-Repo: rpms/jss X-Git-Branch: pqc X-Git-Rev: b754fed43d5c5e98c472b288174013c657327f27 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvanNzCiAgICAgICAgICAgIEJyYW5jaCA6IHBxYwogICAgICAgICAgICBDb21t aXQgOiBiNzU0ZmVkNDNkNWM1ZTk4YzQ3MmIyODgxNzQwMTNjNjU3MzI3ZjI3CiAgICAgICAgICAg IEF1dGhvciA6IE1hdHRoZXcgSGFybXNlbiA8bWhhcm1zZW5AcmVkaGF0LmNvbT4KICAgICAgICAg ICAgRGF0ZSAgIDogMjAxNy0xMS0wMVQxMToxNjo1MS0wNjowMAogICAgICAgICAgICBTdGF0cyAg OiArNzI1Ly0xIGluIDMgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3NyYy5m ZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2pzcy9jL2I3NTRmZWQ0M2Q1YzVlOThjNDcyYjI4ODE3NDAx M2M2NTczMjdmMjc/YnJhbmNoPXBxYwoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZXNv bHZlczogbWJ6ICMxNDA4MDU3LDE0MDk4NjcKCi0gTW96aWxsYSBCdWd6aWxsYSAjMTQwODA1NyAt IEpTUyB0aHJvd3MgT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gd2l0aG91dAogIG1lc3NhZ2UgKGVk ZXdhdGEpCi0gTW96aWxsYSBCdWd6aWxsYSAjMTQwOTg2NyAtIG9yZy5tb3ppbGxhLmpzcy5wa2l4 LmNtcy5TaWduZXJJbmZvCiAgaW5jb3JyZWN0bHkgcHJvZHVjaW5nIHNpZ25hdHVyZXMgKGVzcGVj aWFsbHkgZm9yIEVDKSAoY2Z1LGRzdHV0em1hbikKCi0tLQpkaWZmIC0tZ2l0IGEvanNzLU9iamVj dE5vdEZvdW5kRXhjZXB0aW9uLW1lc3NhZ2UucGF0Y2ggYi9qc3MtT2JqZWN0Tm90Rm91bmRFeGNl cHRpb24tbWVzc2FnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w ZDYxZTI2Ci0tLSAvZGV2L251bGwKKysrIGIvanNzLU9iamVjdE5vdEZvdW5kRXhjZXB0aW9uLW1l c3NhZ2UucGF0Y2gKQEAgLTAsMCArMSw2ODAgQEAKKyMgSEcgY2hhbmdlc2V0IHBhdGNoCisjIFVz ZXIgIkVuZGkgUy4gRGV3YXRhIiA8ZWRld2F0YUByZWRoYXQuY29tPgorIyBEYXRlIDE1MDkxNTQ3 MTkgLTcyMDAKKyMgICAgICBTYXQgT2N0IDI4IDAzOjM4OjM5IDIwMTcgKzAyMDAKKyMgTm9kZSBJ RCAxOWEwZTIxNDZhOTI5MTczNzU3ZTZjY2JiNjFhMDM1ZWM5NDI2ZjQzCisjIFBhcmVudCAgYjFh M2MzY2M2YjM1ODQ5NDhkMjUxZDNiZmNmZTY2MzBkODk3MGRiNQorQWRkZWQgY2VydGlmaWNhdGUg bmlja25hbWUgaW50byBPYmplY3ROb3RGb3VuZEV4Y2VwdGlvbiBtZXNzYWdlLgorVGhlIGNvZGUg dGhhdCBnZW5lcmF0ZXMgT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gaGFzIGJlZW4gbW9kaWZpZWQK K3RvIGluY2x1ZGUgdGhlIGNlcnRpZmljYXRlIG5pY2tuYW1lIHRvIGhlbHAgdHJvdWJsZXNob290 aW5nLgorCitodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4 MDU3CisKK2RpZmYgLS1naXQgYS9vcmcvbW96aWxsYS9qc3MvUEsxMUZpbmRlci5jIGIvb3JnL21v emlsbGEvanNzL1BLMTFGaW5kZXIuYworLS0tIGEvb3JnL21vemlsbGEvanNzL1BLMTFGaW5kZXIu YworKysrIGIvb3JnL21vemlsbGEvanNzL1BLMTFGaW5kZXIuYworQEAgLTU0LDcgKzU0LDkgQEAK KyAgICAgY2VydCA9IEpTU19QSzExX2ZpbmRDZXJ0QW5kU2xvdEZyb21OaWNrbmFtZShuaWNrLCBO VUxMLCAmc2xvdCk7CisgCisgICAgIGlmKGNlcnQgPT0gTlVMTCkgeworLSAgICAgICAgSlNTX25h dGl2ZVRocm93KGVudiwgT0JKRUNUX05PVF9GT1VORF9FWENFUFRJT04pOworKyAgICAgICAgY2hh ciAqbWVzc2FnZSA9IFBSX3NtcHJpbnRmKCJDZXJ0aWZpY2F0ZSBub3QgZm91bmQ6ICVzIiwgbmlj ayk7CisrICAgICAgICBKU1NfdGhyb3dNc2coZW52LCBPQkpFQ1RfTk9UX0ZPVU5EX0VYQ0VQVElP TiwgbWVzc2FnZSk7CisrICAgICAgICBQUl9zbXByaW50Zl9mcmVlKG1lc3NhZ2UpOworICAgICAg ICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAKK0BAIC0xNTc3LDcgKzE1NzksOSBAQAorICAgICBj ZXJ0ID0gQ0VSVF9GaW5kQ2VydEJ5Tmlja25hbWUoQ0VSVF9HZXREZWZhdWx0Q2VydERCKCksIG5p Y2tuYW1lKTsKKyAKKyAgICAgaWYgKGNlcnQgPT0gTlVMTCkgeworLSAgICAgICAgSlNTX3Rocm93 KGVudiwgT0JKRUNUX05PVF9GT1VORF9FWENFUFRJT04pOworKyAgICAgICAgY2hhciAqbWVzc2Fn ZSA9IFBSX3NtcHJpbnRmKCJDZXJ0aWZpY2F0ZSBub3QgZm91bmQ6ICVzIiwgbmlja25hbWUpOwor KyAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgT0JKRUNUX05PVF9GT1VORF9FWENFUFRJT04sIG1l c3NhZ2UpOworKyAgICAgICAgUFJfc21wcmludGZfZnJlZShtZXNzYWdlKTsKKyAgICAgICAgIGdv dG8gZmluaXNoOworICAgICB9IGVsc2UgeworICAgICAvKiAwIGZvciBjZXJ0aWZpY2F0ZVVzYWdl IGluIGNhbGwgdG8gQ0VSVF9WZXJpZnlDZXJ0aWZpY2F0ZU5vdyB3aWxsCitAQCAtMTY0MCw3ICsx NjQ0LDkgQEAKKyAgICAgY2VydCA9IENFUlRfRmluZENlcnRCeU5pY2tuYW1lKENFUlRfR2V0RGVm YXVsdENlcnREQigpLCBuaWNrbmFtZSk7CisgCisgICAgIGlmIChjZXJ0ID09IE5VTEwpIHsKKy0g ICAgICAgIEpTU190aHJvdyhlbnYsIE9CSkVDVF9OT1RfRk9VTkRfRVhDRVBUSU9OKTsKKysgICAg ICAgIGNoYXIgKm1lc3NhZ2UgPSBQUl9zbXByaW50ZigiQ2VydGlmaWNhdGUgbm90IGZvdW5kOiAl cyIsIG5pY2tuYW1lKTsKKysgICAgICAgIEpTU190aHJvd01zZyhlbnYsIE9CSkVDVF9OT1RfRk9V TkRfRVhDRVBUSU9OLCBtZXNzYWdlKTsKKysgICAgICAgIFBSX3NtcHJpbnRmX2ZyZWUobWVzc2Fn ZSk7CisgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgfSBlbHNlIHsKKyAgICAgLyogMCBmb3Ig Y2VydGlmaWNhdGVVc2FnZSBpbiBjYWxsIHRvIENFUlRfVmVyaWZ5Q2VydGlmaWNhdGVOb3cgdG8K K0BAIC0xODAxLDcgKzE4MDcsOSBAQAorICAgICBjZXJ0ID0gQ0VSVF9GaW5kQ2VydEJ5Tmlja25h bWUoQ0VSVF9HZXREZWZhdWx0Q2VydERCKCksIG5pY2tuYW1lKTsKKyAKKyAgICAgaWYgKGNlcnQg PT0gTlVMTCkgeworLSAgICAgICAgSlNTX3Rocm93KGVudiwgT0JKRUNUX05PVF9GT1VORF9FWENF UFRJT04pOworKyAgICAgICAgY2hhciAqbWVzc2FnZSA9IFBSX3NtcHJpbnRmKCJDZXJ0aWZpY2F0 ZSBub3QgZm91bmQ6ICVzIiwgbmlja25hbWUpOworKyAgICAgICAgSlNTX3Rocm93TXNnKGVudiwg T0JKRUNUX05PVF9GT1VORF9FWENFUFRJT04sIG1lc3NhZ2UpOworKyAgICAgICAgUFJfc21wcmlu dGZfZnJlZShtZXNzYWdlKTsKKyAgICAgICAgIGdvdG8gZmluaXNoOworICAgICB9IGVsc2Ugewor ICAgICAgICAgcnYgPSBDRVJUX1ZlcmlmeUNlcnROb3coQ0VSVF9HZXREZWZhdWx0Q2VydERCKCks IGNlcnQsCisjIEhHIGNoYW5nZXNldCBwYXRjaAorIyBVc2VyICJFbmRpIFMuIERld2F0YSIgPGVk ZXdhdGFAcmVkaGF0LmNvbT4KKyMgRGF0ZSAxNTA5MTU0ODE5IC03MjAwCisjICAgICAgU2F0IE9j dCAyOCAwMzo0MDoxOSAyMDE3ICswMjAwCisjIE5vZGUgSUQgODM3Yzc5NDc2MTEwZWNkNGJmNmI1 MDdmYWFkNTBlZGI5ZWVkN2U3ZQorIyBQYXJlbnQgIDE5YTBlMjE0NmE5MjkxNzM3NTdlNmNjYmI2 MWEwMzVlYzk0MjZmNDMKK1JlZm9ybWF0dGVkIFNvY2tldEJhc2UuamF2YS4KK1RoZSBTb2NrZXRC YXNlLmphdmEgaGFzIGJlZW4gYXV0by1mb3JtYXR0ZWQgdXNpbmcgRWNsaXBzZSB0bworc2ltcGxp ZnkgZnVydGhlciBjaGFuZ2VzIG9uIHRoZSBmaWxlLgorCitodHRwczovL2J1Z3ppbGxhLm1vemls bGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4MDU3CisKK2RpZmYgLS1naXQgYS9vcmcvbW96aWxs YS9qc3Mvc3NsL1NvY2tldEJhc2UuamF2YSBiL29yZy9tb3ppbGxhL2pzcy9zc2wvU29ja2V0QmFz ZS5qYXZhCistLS0gYS9vcmcvbW96aWxsYS9qc3Mvc3NsL1NvY2tldEJhc2UuamF2YQorKysrIGIv b3JnL21vemlsbGEvanNzL3NzbC9Tb2NrZXRCYXNlLmphdmEKK0BAIC0yNyw2ICsyNyw3IEBACisg ICAgIGludCBnZXRUaW1lb3V0KCkgeworICAgICAgICAgcmV0dXJuIHRpbWVvdXQ7CisgICAgIH0K KysKKyAgICAgdm9pZCBzZXRUaW1lb3V0KGludCB0aW1lb3V0KSB7CisgICAgICAgICB0aGlzLnRp bWVvdXQgPSB0aW1lb3V0OworICAgICB9CitAQCAtMzYsMTggKzM3LDE3IEBACisgICAgIH0KKyAK KyAgICAgbmF0aXZlIGJ5dGVbXSBzb2NrZXRDcmVhdGUoT2JqZWN0IHNvY2tldE9iamVjdCwKKy0g ICAgICAgIFNTTENlcnRpZmljYXRlQXBwcm92YWxDYWxsYmFjayBjZXJ0QXBwcm92YWxDYWxsYmFj aywKKy0gICAgICAgIFNTTENsaWVudENlcnRpZmljYXRlU2VsZWN0aW9uQ2FsbGJhY2sgY2xpZW50 Q2VydFNlbGVjdGlvbkNhbGxiYWNrLAorLSAgICAgICAgamF2YS5uZXQuU29ja2V0IGphdmFTb2Nr LCBTdHJpbmcgaG9zdCxpbnQgZmFtaWx5KQorKyAgICAgICAgICAgIFNTTENlcnRpZmljYXRlQXBw cm92YWxDYWxsYmFjayBjZXJ0QXBwcm92YWxDYWxsYmFjaywKKysgICAgICAgICAgICBTU0xDbGll bnRDZXJ0aWZpY2F0ZVNlbGVjdGlvbkNhbGxiYWNrIGNsaWVudENlcnRTZWxlY3Rpb25DYWxsYmFj aywKKysgICAgICAgICAgICBqYXZhLm5ldC5Tb2NrZXQgamF2YVNvY2ssIFN0cmluZyBob3N0LCBp bnQgZmFtaWx5KQorICAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247CisgCisgICAg IGJ5dGVbXSBzb2NrZXRDcmVhdGUoT2JqZWN0IHNvY2tldE9iamVjdCwKKy0gICAgICAgIFNTTENl cnRpZmljYXRlQXBwcm92YWxDYWxsYmFjayBjZXJ0QXBwcm92YWxDYWxsYmFjaywKKy0gICAgICAg IFNTTENsaWVudENlcnRpZmljYXRlU2VsZWN0aW9uQ2FsbGJhY2sgY2xpZW50Q2VydFNlbGVjdGlv bkNhbGxiYWNrLCBpbnQgZmFtaWx5KQorLSAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRp b24KKy0gICAgeworKyAgICAgICAgICAgIFNTTENlcnRpZmljYXRlQXBwcm92YWxDYWxsYmFjayBj ZXJ0QXBwcm92YWxDYWxsYmFjaywKKysgICAgICAgICAgICBTU0xDbGllbnRDZXJ0aWZpY2F0ZVNl bGVjdGlvbkNhbGxiYWNrIGNsaWVudENlcnRTZWxlY3Rpb25DYWxsYmFjaywgaW50IGZhbWlseSkK KysgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uIHsKKyAgICAgICAgIHJldHVybiBz b2NrZXRDcmVhdGUoc29ja2V0T2JqZWN0LCBjZXJ0QXBwcm92YWxDYWxsYmFjaywKKy0gICAgICAg ICAgICBjbGllbnRDZXJ0U2VsZWN0aW9uQ2FsbGJhY2ssIG51bGwsIG51bGwsIGZhbWlseSk7Cisr ICAgICAgICAgICAgICAgIGNsaWVudENlcnRTZWxlY3Rpb25DYWxsYmFjaywgbnVsbCwgbnVsbCwg ZmFtaWx5KTsKKyAgICAgfQorIAorICAgICBuYXRpdmUgdm9pZCBzb2NrZXRCaW5kKGJ5dGVbXSBh ZGRyQkEsIGludCBwb3J0KSB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOworQEAgLTU3LDcgKzU3LDcg QEAKKyAgICAgICogc2FmZXIgdGhhbiBjb3B5aW5nIHRoZSB2YWx1ZXMgb2YgdGhlIEMgY29uc3Rh bnRzLCB3aGljaCBhcmUgc3ViamVjdAorICAgICAgKiB0byBjaGFuZ2UsIGludG8gSmF2YSBjb2Rl LgorICAgICAgKiBOb3RlIHRvIGRldmVsb3BlciB0aGVzZSBjb25zdGFudHMgYXJlIG5vdCBhbGwg cmVsYXRlZCEgaS5lLiB5b3UgY2Fubm90CistICAgICAqIHBhc3MgaW4gUFJfU0hVVERPV05fUkNW IHRvIHNldFNTTE9wdGlvbiBldGMhIENoZWNrIHRoZWlyIHVzYWdlIAorKyAgICAgKiBwYXNzIGlu IFBSX1NIVVRET1dOX1JDViB0byBzZXRTU0xPcHRpb24gZXRjISBDaGVjayB0aGVpciB1c2FnZQor ICAgICAgKiBpbiBOU1MgYW5kIE5TUFIgYmVmb3JlIHVzaW5nLgorICAgICAgKi8KKyAgICAgc3Rh dGljIGZpbmFsIGludCBTU0xfRU5BQkxFX1NTTDIgPSAwOworQEAgLTczLDcgKzczLDcgQEAKKyAg ICAgc3RhdGljIGZpbmFsIGludCBTU0xfUE9MSUNZX0RPTUVTVElDID0gMTA7CisgICAgIHN0YXRp YyBmaW5hbCBpbnQgU1NMX1BPTElDWV9FWFBPUlQgPSAxMTsKKyAgICAgc3RhdGljIGZpbmFsIGlu dCBTU0xfUE9MSUNZX0ZSQU5DRSA9IDEyOworLSAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9ST0xM QkFDS19ERVRFQ1RJT04gPSAxMzsgCisrICAgIHN0YXRpYyBmaW5hbCBpbnQgU1NMX1JPTExCQUNL X0RFVEVDVElPTiA9IDEzOworICAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9OT19TVEVQX0RPV04g PSAxNDsKKyAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfRU5BQkxFX0ZEWCA9IDE1OworICAgICBz dGF0aWMgZmluYWwgaW50IFNTTF9WMl9DT01QQVRJQkxFX0hFTExPID0gMTY7CitAQCAtOTgsNyAr OTgsNyBAQAorICAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9WYXJpYW50X1N0cmVhbSA9IDMzOwor ICAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9WYXJpYW50X0RhdGFncmFtID0gMzQ7CisgCistICAg IHN0YXRpYyBmaW5hbCBpbnQgU1NMX0FGX0lORVQgID0gNTA7CisrICAgIHN0YXRpYyBmaW5hbCBp bnQgU1NMX0FGX0lORVQgPSA1MDsKKyAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfQUZfSU5FVDYg PSA1MTsKKyAKKyAgICAgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CitAQCAtMTA2 LDcgKzEwNiw3IEBACisgICAgIH0KKyAKKyAgICAgLy8gU1NMU2VydmVyU29ja2V0IGFuZCBTU0xT b2NrZXQgY2xvc2UgbWV0aG9kcworLSAgICAvLyBoYXZlIHRoZWlyIG93biBzeW5jaHJvbml6YXRp b24gY29udHJvbCB0aGF0IAorKyAgICAvLyBoYXZlIHRoZWlyIG93biBzeW5jaHJvbml6YXRpb24g Y29udHJvbCB0aGF0CisgICAgIC8vIHByb3RlY3RzIFNvY2tldEJhc2Uuc29ja2V0Q2xvc2UuCisg ICAgIG5hdGl2ZSB2b2lkIHNvY2tldENsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uOworIAorQEAg LTExOCwxNCArMTE4LDEzIEBACisgICAgIH0KKyAKKyAgICAgcHVibGljIHZvaWQgcmVxdWVzdENs aWVudEF1dGhOb0V4cGlyeUNoZWNrKGJvb2xlYW4gYikKKy0gICAgICAgIHRocm93cyBTb2NrZXRF eGNlcHRpb24KKy0gICAgeworKyAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb24gewor ICAgICAgICAgcmVxdWVzdGluZ0NsaWVudEF1dGggPSBiOworICAgICAgICAgcmVxdWVzdENsaWVu dEF1dGhOb0V4cGlyeUNoZWNrTmF0aXZlKGIpOworICAgICB9CisgCisgICAgIHByaXZhdGUgbmF0 aXZlIHZvaWQgcmVxdWVzdENsaWVudEF1dGhOb0V4cGlyeUNoZWNrTmF0aXZlKGJvb2xlYW4gYikK Ky0gICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247CisrICAgICAgICAgICAgdGhyb3dzIFNv Y2tldEV4Y2VwdGlvbjsKKyAKKyAgICAgdm9pZCBlbmFibGVTU0wyKGJvb2xlYW4gZW5hYmxlKSB0 aHJvd3MgU29ja2V0RXhjZXB0aW9uIHsKKyAgICAgICAgIHNldFNTTE9wdGlvbihTU0xfRU5BQkxF X1NTTDIsIGVuYWJsZSk7CitAQCAtMTQ0LDggKzE0Myw3IEBACisgICAgIH0KKyAKKyAgICAgdm9p ZCBlbmFibGVSZW5lZ290aWF0aW9uKGludCBtb2RlKQorLSAgICAgICAgICAgIHRocm93cyBTb2Nr ZXRFeGNlcHRpb24KKy0gICAgeworKyAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb24g eworICAgICAgICAgc2V0U1NMT3B0aW9uTW9kZShTb2NrZXRCYXNlLlNTTF9FTkFCTEVfUkVORUdP VElBVElPTiwgbW9kZSk7CisgICAgIH0KKyAKK0BAIC0xNjgsMjMgKzE2NiwyMSBAQAorICAgICB2 b2lkIGVuYWJsZVYyQ29tcGF0aWJsZUhlbGxvKGJvb2xlYW4gZW5hYmxlKSB0aHJvd3MgU29ja2V0 RXhjZXB0aW9uIHsKKyAgICAgICAgIHNldFNTTE9wdGlvbihTU0xfVjJfQ09NUEFUSUJMRV9IRUxM TywgZW5hYmxlKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgdm9pZCBzZXRTU0xPcHRpb24oaW50 IG9wdGlvbiwgYm9vbGVhbiBvbikKKy0gICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb24KKy0g ICAgeworKyAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb24geworICAgICAgICAgc2V0 U1NMT3B0aW9uKG9wdGlvbiwgb24gPyAxIDogMCk7CisgICAgIH0KKyAKKy0gICAgLyoqIAorLSAg ICAgKiBTZXRzIFNTTCBvcHRpb25zIGZvciB0aGlzIHNvY2tldCB0aGF0IGhhdmUgc2ltcGxlIAor KyAgICAvKioKKysgICAgICogU2V0cyBTU0wgb3B0aW9ucyBmb3IgdGhpcyBzb2NrZXQgdGhhdCBo YXZlIHNpbXBsZQorICAgICAgKiBlbmFibGUvZGlzYWJsZSB2YWx1ZXMuCisgICAgICAqLworICAg ICBuYXRpdmUgdm9pZCBzZXRTU0xPcHRpb24oaW50IG9wdGlvbiwgaW50IG9uKQorLSAgICAgICAg dGhyb3dzIFNvY2tldEV4Y2VwdGlvbjsKKysgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0 aW9uOworIAorICAgICB2b2lkIHNldFNTTFZlcnNpb25SYW5nZShvcmcubW96aWxsYS5qc3Muc3Ns LlNTTFNvY2tldC5TU0xWZXJzaW9uUmFuZ2UgcmFuZ2UpCistICAgICAgICB0aHJvd3MgU29ja2V0 RXhjZXB0aW9uCistICAgIHsKKysgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uIHsK KyAgICAgICAgIHNldFNTTFZlcnNpb25SYW5nZShyYW5nZS5nZXRNaW5FbnVtKCksIHJhbmdlLmdl dE1heEVudW0oKSk7CisgICAgIH0KKyAKK0BAIC0xOTIsOTMgKzE4OCwxMDEgQEAKKyAgICAgICog U2V0cyBTU0wgVmVyc2lvbiBSYW5nZSBmb3IgdGhpcyBzb2NrZXQgdG8gc3VwcG9ydCBUTFMgdjEu MSBhbmQgdjEuMgorICAgICAgKi8KKyAgICAgbmF0aXZlIHZvaWQgc2V0U1NMVmVyc2lvblJhbmdl KGludCBtaW4sIGludCBtYXgpCistICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOworKyAg ICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247CisgCistICAgIC8qKiAKKysgICAgLyoq CisgICAgICAqIFNldHMgdGhlIFNTTCBvcHRpb24gc2V0dGluZyBtb2RlIHZhbHVlIHVzZSBmb3Ig b3B0aW9ucworICAgICAgKiB0aGF0IGhhdmUgbW9yZSB2YWx1ZXMgdGhhbiBqdXN0IGVuYWJsZS9k aXNhYmxlLgorICAgICAgKi8KKyAgICAgbmF0aXZlIHZvaWQgc2V0U1NMT3B0aW9uTW9kZShpbnQg b3B0aW9uLCBpbnQgb3B0aW9uMikKKy0gICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247IAor KyAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247CisgCistICAgIAorICAgICAvKiBy ZXR1cm4gMCBmb3Igb3B0aW9uIGRpc2FibGVkIDEgZm9yIG9wdGlvbiBlbmFibGVkLiAqLworICAg ICBuYXRpdmUgaW50IGdldFNTTE9wdGlvbihpbnQgb3B0aW9uKQorLSAgICAgICAgdGhyb3dzIFNv Y2tldEV4Y2VwdGlvbjsKKy0gICAgCisrICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlv bjsKKysKKyAgICAgcHVibGljIFN0cmluZyBnZXRTU0xPcHRpb25zKCkgeworICAgICAgICAgU3Ry aW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgIHRyeSB7CisgICAg ICAgICAgICAgYnVmLmFwcGVuZCgiU1NMIE9wdGlvbnMgY29uZmlndXJlZCBmb3IgdGhpcyBTU0xT b2NrZXQ6Iik7CistICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfRU5BQkxFX1NTTDIiICsg CistICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX0VOQUJMRV9T U0wyKSAhPSAwKQorLSAgICAgICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOworLSAgICAg ICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9TU0wzIiAgKyAKKy0gICAgICAgICAgICAg ICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX1NTTDMpICE9IDApIAorLSAg ICAgICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOworLSAgICAgICAgICAgIGJ1Zi5hcHBl bmQoIlxuU1NMX0VOQUJMRV9UTFMiICArIAorLSAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlv bihTb2NrZXRCYXNlLlNTTF9FTkFCTEVfVExTKSAhPSAwKSAKKy0gICAgICAgICAgICAgICAgPyAi PW9uIiA6ICAiPW9mZiIpKTsKKy0gICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9SRVFVSVJF X0NFUlRJRklDQVRFIik7IAorKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9T U0wyIiArCisrICAgICAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNT TF9FTkFCTEVfU1NMMikgIT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiPW9u IgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9b2ZmIikpOworKyAgICAgICAgICAg IGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9TU0wzIiArCisrICAgICAgICAgICAgICAgICAgICAo KGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9FTkFCTEVfU1NMMykgIT0gMCkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPyAiPW9uIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6ICI9b2ZmIikpOworKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9UTFMi ICsKKysgICAgICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX0VO QUJMRV9UTFMpICE9IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKKysgICAgICAgICAgICBidWYu YXBwZW5kKCJcblNTTF9SRVFVSVJFX0NFUlRJRklDQVRFIik7CisgICAgICAgICAgICAgc3dpdGNo IChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfUkVRVUlSRV9DRVJUSUZJQ0FURSkpIHsKKy0g ICAgICAgICAgICAgICAgY2FzZSAwOgorLSAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgi PU5ldmVyIik7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAg Y2FzZSAxOgorLSAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPUFsd2F5cyIpOworLSAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAgIGNhc2UgMjoKKy0gICAg ICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1GaXJzdCBIYW5kc2hha2UiKTsKKy0gICAgICAg ICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICBjYXNlIDM6CistICAgICAgICAg ICAgICAgICAgICBidWYuYXBwZW5kKCI9Tm8gRXJyb3IiKTsKKy0gICAgICAgICAgICAgICAgICAg IGJyZWFrOworLSAgICAgICAgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAgICAgICAg YnVmLmFwcGVuZCgiPVJlcG9ydCBKU1MgQnVnIHRoaXMgb3B0aW9uIGhhcyBhIHN0YXR1cy4iKTsK Ky0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGNhc2UgMDoKKysgICAg ICAgICAgICAgICAgYnVmLmFwcGVuZCgiPU5ldmVyIik7CisrICAgICAgICAgICAgICAgIGJyZWFr OworKyAgICAgICAgICAgIGNhc2UgMToKKysgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPUFs d2F5cyIpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBjYXNlIDI6Cisr ICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1GaXJzdCBIYW5kc2hha2UiKTsKKysgICAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgY2FzZSAzOgorKyAgICAgICAgICAgICAgICBi dWYuYXBwZW5kKCI9Tm8gRXJyb3IiKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVJlcG9ydCBKU1Mg QnVnIHRoaXMgb3B0aW9uIGhhcyBhIHN0YXR1cy4iKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgfSAvL2VuZCBzd2l0Y2gKKy0gICAgICAgICAgICBidWYuYXBwZW5kKCJc blNTTF9SRVFVRVNUX0NFUlRJRklDQVRFIiAgKyAKKy0gICAgICAgICAgICAgICAgKChnZXRTU0xP cHRpb24oU29ja2V0QmFzZS5TU0xfUkVRVUVTVF9DRVJUSUZJQ0FURSkgIT0gMCkgCistICAgICAg ICAgICAgICAgID8gIj1vbiIgOiAgIj1vZmYiKSk7CistICAgICAgICAgICAgYnVmLmFwcGVuZCgi XG5TU0xfTk9fQ0FDSEUiICArIAorLSAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2Nr ZXRCYXNlLlNTTF9OT19DQUNIRSkgIT0gMCkKKy0gICAgICAgICAgICAgICAgPyAiPW9uIiA6ICAi PW9mZiIpKTsKKy0gICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9ST0xMQkFDS19ERVRFQ1RJ T04iICArIAorLSAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9S T0xMQkFDS19ERVRFQ1RJT04pICE9IDApCistICAgICAgICAgICAgICAgID8gIj1vbiIgOiAgIj1v ZmYiKSk7CistICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfTk9fU1RFUF9ET1dOIiAgKyAK Ky0gICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfTk9fU1RFUF9E T1dOKSAhPSAwKQorLSAgICAgICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOworLSAgICAg ICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9GRFgiICArIAorLSAgICAgICAgICAgICAg ICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9FTkFCTEVfRkRYKSAhPSAwKQorLSAgICAg ICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOworLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQo IlxuU1NMX1YyX0NPTVBBVElCTEVfSEVMTE8iICArIAorLSAgICAgICAgICAgICAgICAoKGdldFNT TE9wdGlvbihTb2NrZXRCYXNlLlNTTF9WMl9DT01QQVRJQkxFX0hFTExPKSAhPSAwKSAKKy0gICAg ICAgICAgICAgICAgPyAiPW9uIiA6ICAiPW9mZiIpKTsKKy0gICAgICAgICAgICBidWYuYXBwZW5k KCJcblNTTF9FTkFCTEVfU0VTU0lPTl9USUNLRVRTIiAgKworLSAgICAgICAgICAgICAgICAoKGdl dFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9FTkFCTEVfU0VTU0lPTl9USUNLRVRTKQorLSAgICAg ICAgICAgICAgICAhPSAwKSA/ICI9b24iIDogICI9b2ZmIikpOworKyAgICAgICAgICAgIGJ1Zi5h cHBlbmQoIlxuU1NMX1JFUVVFU1RfQ0VSVElGSUNBVEUiICsKKysgICAgICAgICAgICAgICAgICAg ICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX1JFUVVFU1RfQ0VSVElGSUNBVEUpICE9IDAp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiAiPW9mZiIpKTsKKysgICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9O T19DQUNIRSIgKworKyAgICAgICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFz ZS5TU0xfTk9fQ0FDSEUpICE9IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1v biIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKKysgICAgICAgICAg ICBidWYuYXBwZW5kKCJcblNTTF9ST0xMQkFDS19ERVRFQ1RJT04iICsKKysgICAgICAgICAgICAg ICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX1JPTExCQUNLX0RFVEVDVElPTikg IT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiPW9uIgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6ICI9b2ZmIikpOworKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxu U1NMX05PX1NURVBfRE9XTiIgKworKyAgICAgICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24o U29ja2V0QmFzZS5TU0xfTk9fU1RFUF9ET1dOKSAhPSAwKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/ICI9b24iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1vZmYiKSk7 CisrICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfRU5BQkxFX0ZEWCIgKworKyAgICAgICAg ICAgICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX0ZEWCkgIT0g MCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiPW9uIgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ICI9b2ZmIikpOworKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NM X1YyX0NPTVBBVElCTEVfSEVMTE8iICsKKysgICAgICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0 aW9uKFNvY2tldEJhc2UuU1NMX1YyX0NPTVBBVElCTEVfSEVMTE8pICE9IDApCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgID8gIj1vbiIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiAiPW9mZiIpKTsKKysgICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9FTkFCTEVfU0VTU0lP Tl9USUNLRVRTIiArCisrICAgICAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRC YXNlLlNTTF9FTkFCTEVfU0VTU0lPTl9USUNLRVRTKSAhPSAwKSA/ICI9b24iIDogIj1vZmYiKSk7 CisgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfRU5BQkxFX1JFTkVHT1RJQVRJT04iKTsK KyAgICAgICAgICAgICBzd2l0Y2ggKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9FTkFCTEVf UkVORUdPVElBVElPTikpIHsKKy0gICAgICAgICAgICAgICAgY2FzZSAwOgorLSAgICAgICAgICAg ICAgICAgICAgYnVmLmFwcGVuZCgiPVNTTF9SRU5FR09USUFURV9ORVZFUiIpOworLSAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgICAgIGNhc2UgMToKKy0gICAgICAgICAg ICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1TU0xfUkVORUdPVElBVEVfVU5SRVNUUklDVEVEIik7Cist ICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgY2FzZSAyOgorLSAg ICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVNTTF9SRU5FR09USUFURV9SRVFVSVJFU19Y VE4iKTsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICBjYXNl IDM6CistICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9U1NMX1JFTkVHT1RJQVRFX1RS QU5TSVRJT05BTCIpOworLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAg ICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9UmVwb3J0IEpT UyBCdWcgdGhpcyBvcHRpb24gaGFzIGEgc3RhdHVzLiIpOworLSAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgICAgICBidWYuYXBwZW5k KCI9U1NMX1JFTkVHT1RJQVRFX05FVkVSIik7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgICAgIGNhc2UgMToKKysgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVNTTF9SRU5F R09USUFURV9VTlJFU1RSSUNURUQiKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICAgICAgY2FzZSAyOgorKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9U1NMX1JFTkVHT1RJ QVRFX1JFUVVJUkVTX1hUTiIpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAg ICBjYXNlIDM6CisrICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1TU0xfUkVORUdPVElBVEVf VFJBTlNJVElPTkFMIik7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGRl ZmF1bHQ6CisrICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1SZXBvcnQgSlNTIEJ1ZyB0aGlz IG9wdGlvbiBoYXMgYSBzdGF0dXMuIik7CisrICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgIH0gLy9lbmQgc3dpdGNoCistICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfUkVR VUlSRV9TQUZFX05FR09USUFUSU9OIiAgKworLSAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlv bihTb2NrZXRCYXNlLlNTTF9SRVFVSVJFX1NBRkVfTkVHT1RJQVRJT04pICE9IDApCistICAgICAg ICAgICAgICAgID8gIj1vbiIgOiAgIj1vZmYiKSk7CisrICAgICAgICAgICAgYnVmLmFwcGVuZCgi XG5TU0xfUkVRVUlSRV9TQUZFX05FR09USUFUSU9OIiArCisrICAgICAgICAgICAgICAgICAgICAo KGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9SRVFVSVJFX1NBRkVfTkVHT1RJQVRJT04pICE9 IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKKyAKKyAgICAgICAgIH0gY2F0Y2ggKFNvY2tldEV4 Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5nZXRTU0xPcHRpb25zIGV4 Y2VwdGlvbiAiICsgZS5nZXRNZXNzYWdlKCkpOworQEAgLTI5MiwxOSArMjk2LDE4IEBACisgICAg ICAqIG9mIGNvbnN0cnVjdGlvbiB0aGFuIGdldEJ5TmFtZSgpLCBhbmQgaXQgaXMgZmluYWwuCisg ICAgICAqCisgICAgICAqIEByZXR1cm4gVGhlIEluZXRBZGRyZXNzIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuIGludGVnZXIsCistICAgICAqICAgICAgb3IgPHR0Pm51bGw8L3R0PiBpZiB0aGUg SW5ldEFkZHJlc3MgY291bGQgbm90IGJlIGNvbnN0cnVjdGVkLgorKyAgICAgKiAgICAgICAgIG9y IDx0dD5udWxsPC90dD4gaWYgdGhlIEluZXRBZGRyZXNzIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3Rl ZC4KKyAgICAgICovCistICAgIHByaXZhdGUgc3RhdGljIEluZXRBZGRyZXNzCistICAgIGNvbnZl cnRJbnRUb0luZXRBZGRyZXNzKGludCBpbnRBZGRyKSB7CisrICAgIHByaXZhdGUgc3RhdGljIElu ZXRBZGRyZXNzIGNvbnZlcnRJbnRUb0luZXRBZGRyZXNzKGludCBpbnRBZGRyKSB7CisgICAgICAg ICBJbmV0QWRkcmVzcyBpbjsKKyAgICAgICAgIGludFtdIGFkZHIgPSBuZXcgaW50WzRdOworICAg ICAgICAgYWRkclswXSA9ICgoaW50QWRkciA+Pj4gMjQpICYgMHhmZik7CisgICAgICAgICBhZGRy WzFdID0gKChpbnRBZGRyID4+PiAxNikgJiAweGZmKTsKKy0gICAgICAgIGFkZHJbMl0gPSAoKGlu dEFkZHIgPj4+ICA4KSAmIDB4ZmYpOworLSAgICAgICAgYWRkclszXSA9ICgoaW50QWRkciAgICAg ICApICYgMHhmZik7CisrICAgICAgICBhZGRyWzJdID0gKChpbnRBZGRyID4+PiA4KSAmIDB4ZmYp OworKyAgICAgICAgYWRkclszXSA9ICgoaW50QWRkcikgJiAweGZmKTsKKyAgICAgICAgIHRyeSB7 CisgICAgICAgICAgICAgaW4gPSBJbmV0QWRkcmVzcy5nZXRCeU5hbWUoCistICAgICAgICAgICAg ICAgIGFkZHJbMF0gKyAiLiIgKyBhZGRyWzFdICsgIi4iICsgYWRkclsyXSArICIuIiArIGFkZHJb M10gKTsKKysgICAgICAgICAgICAgICAgICAgIGFkZHJbMF0gKyAiLiIgKyBhZGRyWzFdICsgIi4i ICsgYWRkclsyXSArICIuIiArIGFkZHJbM10pOworICAgICAgICAgfSBjYXRjaCAoamF2YS5uZXQu VW5rbm93bkhvc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIGluID0gbnVsbDsKKyAgICAg ICAgIH0KK0BAIC0zMTIsMTIgKzMxNSwxMyBAQAorICAgICB9CisgCisgICAgIHByaXZhdGUgbmF0 aXZlIGJ5dGVbXSBnZXRMb2NhbEFkZHJlc3NCeXRlQXJyYXlOYXRpdmUoKSB0aHJvd3MgU29ja2V0 RXhjZXB0aW9uOworKworICAgICBwcml2YXRlIG5hdGl2ZSBieXRlW10gZ2V0UGVlckFkZHJlc3NC eXRlQXJyYXlOYXRpdmUoKSB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOworKworICAgICAvKioKKyAg ICAgICogQHJldHVybiB0aGUgSW5ldEFkZHJlc3Mgb2YgdGhlIHBlZXIgZW5kIG9mIHRoZSBzb2Nr ZXQuCisgICAgICAqLworLSAgICBJbmV0QWRkcmVzcyBnZXRJbmV0QWRkcmVzcygpCistICAgIHsK KysgICAgSW5ldEFkZHJlc3MgZ2V0SW5ldEFkZHJlc3MoKSB7CisgICAgICAgICB0cnkgeworICAg ICAgICAgICAgIGJ5dGVbXSBhZGRyZXNzID0gZ2V0UGVlckFkZHJlc3NCeXRlQXJyYXlOYXRpdmUo KTsKKyAKK0BAIC0zMjYsMTQgKzMzMCwxNSBAQAorICAgICAgICAgICAgIHRyeSB7CisgCisgICAg ICAgICAgICAgICAgIGlBZGRyID0gSW5ldEFkZHJlc3MuZ2V0QnlBZGRyZXNzKGFkZHJlc3MpOwor LSAgICAgICAgICAgIH0gICBjYXRjaChVbmtub3duSG9zdEV4Y2VwdGlvbiBlKSB7CisrICAgICAg ICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIH0K KyAKKyAgICAgICAgICAgICByZXR1cm4gaUFkZHI7CistICAgICAgICB9IGNhdGNoKFNvY2tldEV4 Y2VwdGlvbiBlKSB7CisrICAgICAgICB9IGNhdGNoIChTb2NrZXRFeGNlcHRpb24gZSkgeworICAg ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgfQorICAgICB9CisrCisgICAgIHByaXZh dGUgbmF0aXZlIGludCBnZXRQZWVyQWRkcmVzc05hdGl2ZSgpIHRocm93cyBTb2NrZXRFeGNlcHRp b247CisgCisgICAgIC8qKgorQEAgLTM0OCwyMCArMzUzLDIxIEBACisgICAgICAgICAgICAgdHJ5 IHsKKyAKKyAgICAgICAgICAgICAgICAgbEFkZHIgPSBJbmV0QWRkcmVzcy5nZXRCeUFkZHJlc3Mo YWRkcmVzcyk7CistICAgICAgICAgICAgfSAgIGNhdGNoKFVua25vd25Ib3N0RXhjZXB0aW9uIGUp IHsKKysgICAgICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiBlKSB7CisgICAg ICAgICAgICAgfQorIAorICAgICAgICAgICAgIHJldHVybiBsQWRkcjsKKy0gICAgICAgIH0gY2F0 Y2goU29ja2V0RXhjZXB0aW9uIGUpIHsKKysgICAgICAgIH0gY2F0Y2ggKFNvY2tldEV4Y2VwdGlv biBlKSB7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICB9CisgICAgIH0KKysK KyAgICAgcHJpdmF0ZSBuYXRpdmUgaW50IGdldExvY2FsQWRkcmVzc05hdGl2ZSgpIHRocm93cyBT b2NrZXRFeGNlcHRpb247CisgCisgICAgIHB1YmxpYyBpbnQgZ2V0TG9jYWxQb3J0KCkgeworICAg ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICByZXR1cm4gZ2V0TG9jYWxQb3J0TmF0aXZlKCk7Cist ICAgICAgICB9IGNhdGNoKFNvY2tldEV4Y2VwdGlvbiBlKSB7CisrICAgICAgICB9IGNhdGNoIChT b2NrZXRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQor ICAgICB9CitAQCAtMzY5LDE4ICszNzUsMTYgQEAKKyAgICAgcHJpdmF0ZSBuYXRpdmUgaW50IGdl dExvY2FsUG9ydE5hdGl2ZSgpIHRocm93cyBTb2NrZXRFeGNlcHRpb247CisgCisgICAgIHZvaWQg cmVxdWlyZUNsaWVudEF1dGgoYm9vbGVhbiByZXF1aXJlLCBib29sZWFuIG9uUmVkbykKKy0gICAg ICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uCistICAgIHsKKy0gICAgICAgIGlmKCByZXF1 aXJlICYmICFyZXF1ZXN0aW5nQ2xpZW50QXV0aCApIHsKKysgICAgICAgICAgICB0aHJvd3MgU29j a2V0RXhjZXB0aW9uIHsKKysgICAgICAgIGlmIChyZXF1aXJlICYmICFyZXF1ZXN0aW5nQ2xpZW50 QXV0aCkgeworICAgICAgICAgICAgIHJlcXVlc3RDbGllbnRBdXRoKHRydWUpOworICAgICAgICAg fQorICAgICAgICAgc2V0U1NMT3B0aW9uKFNTTF9SRVFVSVJFX0NFUlRJRklDQVRFLCByZXF1aXJl ID8gKG9uUmVkbyA/IDEgOiAyKSA6IDApOworICAgICB9CisgCisgICAgIHZvaWQgcmVxdWlyZUNs aWVudEF1dGgoaW50IG1vZGUpCistICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbgor LSAgICB7CistICAgICAgICBpZihtb2RlID4gMCAmJiAhcmVxdWVzdGluZ0NsaWVudEF1dGggKSB7 CisrICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbiB7CisrICAgICAgICBpZiAobW9k ZSA+IDAgJiYgIXJlcXVlc3RpbmdDbGllbnRBdXRoKSB7CisgICAgICAgICAgICAgcmVxdWVzdENs aWVudEF1dGgodHJ1ZSk7CisgICAgICAgICB9CisgICAgICAgICBzZXRTU0xPcHRpb25Nb2RlKFNv Y2tldEJhc2UuU1NMX1JFUVVJUkVfQ0VSVElGSUNBVEUsIG1vZGUpOworQEAgLTM5MCw1MiArMzk0 LDUyIEBACisgICAgICAqIFNldHMgdGhlIG5pY2tuYW1lIG9mIHRoZSBjZXJ0aWZpY2F0ZSB0byB1 c2UgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi4KKyAgICAgICovCisgICAgIHB1YmxpYyB2b2lk IHNldENsaWVudENlcnROaWNrbmFtZShTdHJpbmcgbmljaykgdGhyb3dzIFNvY2tldEV4Y2VwdGlv biB7CistICAgICAgdHJ5IHsKKy0gICAgICAgIHNldENsaWVudENlcnQoIENyeXB0b01hbmFnZXIu Z2V0SW5zdGFuY2UoKS5maW5kQ2VydEJ5Tmlja25hbWUobmljaykgKTsKKy0gICAgICB9IGNhdGNo KENyeXB0b01hbmFnZXIuTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24gbmllKSB7CistICAgICAgICB0 aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJDcnlwdG9NYW5hZ2VyIG5vdCBpbml0aWFsaXplZCIp OworLSAgICAgIH0gY2F0Y2goT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gb25mZSkgeworLSAgICAg ICAgdGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigiT2JqZWN0IG5vdCBmb3VuZDogIiArIG9uZmUp OworLSAgICAgIH0gY2F0Y2goVG9rZW5FeGNlcHRpb24gdGUpIHsKKy0gICAgICAgIHRocm93IG5l dyBTb2NrZXRFeGNlcHRpb24oIlRva2VuIEV4Y2VwdGlvbjogIiArIHRlKTsKKy0gICAgICB9Cisr ICAgICAgICB0cnkgeworKyAgICAgICAgICAgIHNldENsaWVudENlcnQoQ3J5cHRvTWFuYWdlci5n ZXRJbnN0YW5jZSgpLmZpbmRDZXJ0QnlOaWNrbmFtZShuaWNrKSk7CisrICAgICAgICB9IGNhdGNo IChDcnlwdG9NYW5hZ2VyLk5vdEluaXRpYWxpemVkRXhjZXB0aW9uIG5pZSkgeworKyAgICAgICAg ICAgIHRocm93IG5ldyBTb2NrZXRFeGNlcHRpb24oIkNyeXB0b01hbmFnZXIgbm90IGluaXRpYWxp emVkIik7CisrICAgICAgICB9IGNhdGNoIChPYmplY3ROb3RGb3VuZEV4Y2VwdGlvbiBvbmZlKSB7 CisrICAgICAgICAgICAgdGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigiT2JqZWN0IG5vdCBmb3Vu ZDogIiArIG9uZmUpOworKyAgICAgICAgfSBjYXRjaCAoVG9rZW5FeGNlcHRpb24gdGUpIHsKKysg ICAgICAgICAgICB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJUb2tlbiBFeGNlcHRpb246ICIg KyB0ZSk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgbmF0aXZlIHZvaWQgc2V0Q2xpZW50 Q2VydChvcmcubW96aWxsYS5qc3MuY3J5cHRvLlg1MDlDZXJ0aWZpY2F0ZSBjZXJ0KQorLSAgICAg ICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbjsKKysgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhj ZXB0aW9uOworIAorICAgICB2b2lkIHVzZUNhY2hlKGJvb2xlYW4gYikgdGhyb3dzIFNvY2tldEV4 Y2VwdGlvbiB7CisgICAgICAgICBzZXRTU0xPcHRpb24oU1NMX05PX0NBQ0hFLCAhYik7CisgICAg IH0KKyAKKyAgICAgc3RhdGljIFRocm93YWJsZSBwcm9jZXNzRXhjZXB0aW9ucyhUaHJvd2FibGUg dG9wRXhjZXB0aW9uLAorLSAgICAgICAgVGhyb3dhYmxlIGJvdHRvbUV4Y2VwdGlvbikKKy0gICAg eworLSAgICAgIHRyeSB7CistICAgICAgICBTdHJpbmdCdWZmZXIgc3RyQnVmOworLSAgICAgICAg c3RyQnVmID0gbmV3IFN0cmluZ0J1ZmZlciggdG9wRXhjZXB0aW9uLnRvU3RyaW5nKCkgKTsKKysg ICAgICAgICAgICBUaHJvd2FibGUgYm90dG9tRXhjZXB0aW9uKSB7CisrICAgICAgICB0cnkgewor KyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBzdHJCdWY7CisrICAgICAgICAgICAgc3RyQnVmID0g bmV3IFN0cmluZ0J1ZmZlcih0b3BFeGNlcHRpb24udG9TdHJpbmcoKSk7CisgCistICAgICAgICBp ZiggYm90dG9tRXhjZXB0aW9uICE9IG51bGwgKSB7CistICAgICAgICAgICAgc3RyQnVmLmFwcGVu ZCgiIC0tPiAiKTsKKy0gICAgICAgICAgICBzdHJCdWYuYXBwZW5kKCBib3R0b21FeGNlcHRpb24u dG9TdHJpbmcoKSApOworKyAgICAgICAgICAgIGlmIChib3R0b21FeGNlcHRpb24gIT0gbnVsbCkg eworKyAgICAgICAgICAgICAgICBzdHJCdWYuYXBwZW5kKCIgLS0+ICIpOworKyAgICAgICAgICAg ICAgICBzdHJCdWYuYXBwZW5kKGJvdHRvbUV4Y2VwdGlvbi50b1N0cmluZygpKTsKKysgICAgICAg ICAgICB9CisrCisrICAgICAgICAgICAgQ2xhc3MgZXhjZXBDbGFzcyA9IHRvcEV4Y2VwdGlvbi5n ZXRDbGFzcygpOworKyAgICAgICAgICAgIENsYXNzIHN0cmluZ0NsYXNzID0gamF2YS5sYW5nLlN0 cmluZy5jbGFzczsKKysgICAgICAgICAgICBDb25zdHJ1Y3RvciBjb25zID0gZXhjZXBDbGFzcy5n ZXRDb25zdHJ1Y3RvcihuZXcgQ2xhc3NbXSB7IHN0cmluZ0NsYXNzIH0pOworKworKyAgICAgICAg ICAgIHJldHVybiAoVGhyb3dhYmxlKSBjb25zLm5ld0luc3RhbmNlKG5ldyBPYmplY3RbXSB7IHN0 ckJ1Zi50b1N0cmluZygpIH0pOworKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKysg ICAgICAgICAgICBBc3NlcnQubm90UmVhY2hlZCgiUHJvYmxlbSBjb25zdHJ1Y3RpbmcgZXhjZXB0 aW9uIGNvbnRhaW5lciIpOworKyAgICAgICAgICAgIHJldHVybiB0b3BFeGNlcHRpb247CisgICAg ICAgICB9CistCistICAgICAgICBDbGFzcyBleGNlcENsYXNzID0gdG9wRXhjZXB0aW9uLmdldENs YXNzKCk7CistICAgICAgICBDbGFzcyBzdHJpbmdDbGFzcyA9IGphdmEubGFuZy5TdHJpbmcuY2xh c3M7CistICAgICAgICBDb25zdHJ1Y3RvciBjb25zID0gZXhjZXBDbGFzcy5nZXRDb25zdHJ1Y3Rv cihuZXcgQ2xhc3NbXSB7c3RyaW5nQ2xhc3N9KTsKKy0KKy0gICAgICAgIHJldHVybiAoVGhyb3dh YmxlKSBjb25zLm5ld0luc3RhbmNlKG5ldyBPYmplY3RbXSB7IHN0ckJ1Zi50b1N0cmluZygpIH0p OworLSAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUgKSB7CistICAgICAgICBBc3NlcnQubm90UmVh Y2hlZCgiUHJvYmxlbSBjb25zdHJ1Y3RpbmcgZXhjZXB0aW9uIGNvbnRhaW5lciIpOworLSAgICAg ICAgcmV0dXJuIHRvcEV4Y2VwdGlvbjsKKy0gICAgICB9CisgICAgIH0KKyAKKyAgICAgc3RhdGlj IHByaXZhdGUgaW50IHN1cHBvcnRzSVBWNiA9IC0xOworKworICAgICBzdGF0aWMgYm9vbGVhbiBz dXBwb3J0c0lQVjYoKSB7CisgCistICAgICAgICBpZihzdXBwb3J0c0lQVjYgPj0gMCkgeworLSAg ICAgICAgICAgIGlmKHN1cHBvcnRzSVBWNiA+IDApIHsKKysgICAgICAgIGlmIChzdXBwb3J0c0lQ VjYgPj0gMCkgeworKyAgICAgICAgICAgIGlmIChzdXBwb3J0c0lQVjYgPiAwKSB7CisgICAgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC00NDQsMjggKzQ0OCwyNSBAQAorIAorICAgICAgICAg RW51bWVyYXRpb24gbmV0SW50ZXI7CisgICAgICAgICB0cnkgeworLSAgICAgICAgICAgICAgICAg bmV0SW50ZXIgPSBOZXR3b3JrSW50ZXJmYWNlLmdldE5ldHdvcmtJbnRlcmZhY2VzKCk7CistICAg ICAgICB9ICBjYXRjaCAoU29ja2V0RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBuZXRJbnRl ciA9IE5ldHdvcmtJbnRlcmZhY2UuZ2V0TmV0d29ya0ludGVyZmFjZXMoKTsKKysgICAgICAgIH0g Y2F0Y2ggKFNvY2tldEV4Y2VwdGlvbiBlKSB7CisgCistICAgICAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorLSAgICAgICAg d2hpbGUgKCBuZXRJbnRlci5oYXNNb3JlRWxlbWVudHMoKSApCistICAgICAgICB7CistICAgICAg ICAgICAgTmV0d29ya0ludGVyZmFjZSBuaSA9IChOZXR3b3JrSW50ZXJmYWNlKW5ldEludGVyLm5l eHRFbGVtZW50KCk7CisrICAgICAgICB3aGlsZSAobmV0SW50ZXIuaGFzTW9yZUVsZW1lbnRzKCkp IHsKKysgICAgICAgICAgICBOZXR3b3JrSW50ZXJmYWNlIG5pID0gKE5ldHdvcmtJbnRlcmZhY2Up IG5ldEludGVyLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAgRW51bWVyYXRpb24gYWRkcnMg PSBuaS5nZXRJbmV0QWRkcmVzc2VzKCk7CistICAgICAgICAgICAgd2hpbGUgKCBhZGRycy5oYXNN b3JlRWxlbWVudHMoKSApCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgT2JqZWN0 IG8gPSBhZGRycy5uZXh0RWxlbWVudCgpOworLSAgICAgICAgICAgICAgICAgaWYgKCBvLmdldENs YXNzKCkgPT0gSW5ldEFkZHJlc3MuY2xhc3MgfHwKKy0gICAgICAgICAgICAgICAgICAgICBvLmdl dENsYXNzKCkgPT0gSW5ldDRBZGRyZXNzLmNsYXNzIHx8CistICAgICAgICAgICAgICAgICAgICAg by5nZXRDbGFzcygpID09IEluZXQ2QWRkcmVzcy5jbGFzcyApCistICAgICAgICAgICAgICAgICB7 CistICAgICAgICAgICAgICAgICAgICAgIEluZXRBZGRyZXNzIGlhZGRyID0gKEluZXRBZGRyZXNz KSBvOworLSAgICAgICAgICAgICAgICAgICAgICBpZihvLmdldENsYXNzKCkgPT0gSW5ldDZBZGRy ZXNzLmNsYXNzKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0lQVjYgPSAx OworLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CistICAgICAgICAgICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB3aGlsZSAoYWRk cnMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKysgICAgICAgICAgICAgICAgT2JqZWN0IG8gPSBhZGRy cy5uZXh0RWxlbWVudCgpOworKyAgICAgICAgICAgICAgICBpZiAoby5nZXRDbGFzcygpID09IElu ZXRBZGRyZXNzLmNsYXNzIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgby5nZXRDbGFzcygp ID09IEluZXQ0QWRkcmVzcy5jbGFzcyB8fAorKyAgICAgICAgICAgICAgICAgICAgICAgIG8uZ2V0 Q2xhc3MoKSA9PSBJbmV0NkFkZHJlc3MuY2xhc3MpIHsKKysgICAgICAgICAgICAgICAgICAgIElu ZXRBZGRyZXNzIGlhZGRyID0gKEluZXRBZGRyZXNzKSBvOworKyAgICAgICAgICAgICAgICAgICAg aWYgKG8uZ2V0Q2xhc3MoKSA9PSBJbmV0NkFkZHJlc3MuY2xhc3MpIHsKKysgICAgICAgICAgICAg ICAgICAgICAgICBzdXBwb3J0c0lQVjYgPSAxOworKyAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgc3VwcG9ydHNJUFY2ID0gMDsKKyMg SEcgY2hhbmdlc2V0IHBhdGNoCisjIFVzZXIgIkVuZGkgUy4gRGV3YXRhIiA8ZWRld2F0YUByZWRo YXQuY29tPgorIyBEYXRlIDE1MDkxNTQ4MjQgLTcyMDAKKyMgICAgICBTYXQgT2N0IDI4IDAzOjQw OjI0IDIwMTcgKzAyMDAKKyMgTm9kZSBJRCBjYTJjMmZjZmFmMjA3Zjg3YzNjNjllNDkzZjJiMzBm ZDBhMDg4ZTk1CisjIFBhcmVudCAgODM3Yzc5NDc2MTEwZWNkNGJmNmI1MDdmYWFkNTBlZGI5ZWVk N2U3ZQorRml4ZWQgU29ja2V0QmFzZS5zZXRDbGllbnRDZXJ0Tmlja25hbWUoKSBleGNlcHRpb24g aGFuZGxpbmcuCitQcmV2aW91c2x5IHRoZSBTb2NrZXRCYXNlLnNldENsaWVudENlcnROaWNrbmFt ZSgpIHdvdWxkIGNhdGNoCit0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGFuZCB0aHJvdyBhIFNvY2tl dEV4Y2VwdGlvbiBpbnN0ZWFkLgorVGhlIG9yaWdpbmFsIHN0YWNrIHRyYWNlIHdhcyBsb3N0IHNp bmNlIFNvY2tldEV4Y2VwdGlvbiBkb2VzIG5vdAorc3VwcG9ydCBjaGFpbmluZy4KKworVGhlIGNv ZGUgaGFzIGJlZW4gbW9kaWZpZWQgdG8gdGhyb3cgYSBSdW50aW1lRXhjZXB0aW9uIGluc3RlYWQK K2FuZCBjaGFpbiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLiBUaGlzIHdheSB0aGUgb3JpZ2luYWwg c3RhY2sKK3RyYWNlIGNhbiBiZSBwcmVzZXJ2ZWQgdG8gaGVscCB0cm91Ymxlc2hvb3RpbmcuCisK K2h0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDgwNTcKKwor ZGlmZiAtLWdpdCBhL29yZy9tb3ppbGxhL2pzcy9zc2wvU29ja2V0QmFzZS5qYXZhIGIvb3JnL21v emlsbGEvanNzL3NzbC9Tb2NrZXRCYXNlLmphdmEKKy0tLSBhL29yZy9tb3ppbGxhL2pzcy9zc2wv U29ja2V0QmFzZS5qYXZhCisrKysgYi9vcmcvbW96aWxsYS9qc3Mvc3NsL1NvY2tldEJhc2UuamF2 YQorQEAgLTQsMTcgKzQsMjEgQEAKKyAKKyBwYWNrYWdlIG9yZy5tb3ppbGxhLmpzcy5zc2w7Cisg CistaW1wb3J0IGphdmEubmV0Lio7CisraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisraW1w b3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOworK2ltcG9ydCBqYXZhLm5ldC5JbmV0 NEFkZHJlc3M7CisraW1wb3J0IGphdmEubmV0LkluZXQ2QWRkcmVzczsKKytpbXBvcnQgamF2YS5u ZXQuSW5ldEFkZHJlc3M7CisraW1wb3J0IGphdmEubmV0Lk5ldHdvcmtJbnRlcmZhY2U7CisgaW1w b3J0IGphdmEubmV0LlNvY2tldEV4Y2VwdGlvbjsKKy1pbXBvcnQgamF2YS5pby4qOworLWltcG9y dCBqYXZhLmlvLklPRXhjZXB0aW9uOworLWltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworK2ltcG9y dCBqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbjsKKyBpbXBvcnQgamF2YS51dGlsLkVudW1l cmF0aW9uOworLWltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKKy1pbXBvcnQg b3JnLm1vemlsbGEuanNzLnV0aWwuQXNzZXJ0OworKworIGltcG9ydCBvcmcubW96aWxsYS5qc3Mu Q3J5cHRvTWFuYWdlcjsKKyBpbXBvcnQgb3JnLm1vemlsbGEuanNzLmNyeXB0by5PYmplY3ROb3RG b3VuZEV4Y2VwdGlvbjsKKyBpbXBvcnQgb3JnLm1vemlsbGEuanNzLmNyeXB0by5Ub2tlbkV4Y2Vw dGlvbjsKKytpbXBvcnQgb3JnLm1vemlsbGEuanNzLmNyeXB0by5YNTA5Q2VydGlmaWNhdGU7Cisr aW1wb3J0IG9yZy5tb3ppbGxhLmpzcy51dGlsLkFzc2VydDsKKyAKKyBjbGFzcyBTb2NrZXRCYXNl IHsKKyAKK0BAIC0zOTUsMTMgKzM5OSwxOCBAQAorICAgICAgKi8KKyAgICAgcHVibGljIHZvaWQg c2V0Q2xpZW50Q2VydE5pY2tuYW1lKFN0cmluZyBuaWNrKSB0aHJvd3MgU29ja2V0RXhjZXB0aW9u IHsKKyAgICAgICAgIHRyeSB7CistICAgICAgICAgICAgc2V0Q2xpZW50Q2VydChDcnlwdG9NYW5h Z2VyLmdldEluc3RhbmNlKCkuZmluZENlcnRCeU5pY2tuYW1lKG5pY2spKTsKKysgICAgICAgICAg ICBDcnlwdG9NYW5hZ2VyIGNtID0gQ3J5cHRvTWFuYWdlci5nZXRJbnN0YW5jZSgpOworKyAgICAg ICAgICAgIFg1MDlDZXJ0aWZpY2F0ZSBjZXJ0ID0gY20uZmluZENlcnRCeU5pY2tuYW1lKG5pY2sp OworKyAgICAgICAgICAgIHNldENsaWVudENlcnQoY2VydCk7CisrCisgICAgICAgICB9IGNhdGNo IChDcnlwdG9NYW5hZ2VyLk5vdEluaXRpYWxpemVkRXhjZXB0aW9uIG5pZSkgeworLSAgICAgICAg ICAgIHRocm93IG5ldyBTb2NrZXRFeGNlcHRpb24oIkNyeXB0b01hbmFnZXIgbm90IGluaXRpYWxp emVkIik7CisrICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24obmllKTsKKysK KyAgICAgICAgIH0gY2F0Y2ggKE9iamVjdE5vdEZvdW5kRXhjZXB0aW9uIG9uZmUpIHsKKy0gICAg ICAgICAgICB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJPYmplY3Qgbm90IGZvdW5kOiAiICsg b25mZSk7CisrICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24ob25mZSk7Cisr CisgICAgICAgICB9IGNhdGNoIChUb2tlbkV4Y2VwdGlvbiB0ZSkgeworLSAgICAgICAgICAgIHRo cm93IG5ldyBTb2NrZXRFeGNlcHRpb24oIlRva2VuIEV4Y2VwdGlvbjogIiArIHRlKTsKKysgICAg ICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbih0ZSk7CisgICAgICAgICB9CisgICAg IH0KKyAKCmRpZmYgLS1naXQgYS9qc3MtU2lnbmF0dXJlQWxnb3JpdGhtLnBhdGNoIGIvanNzLVNp Z25hdHVyZUFsZ29yaXRobS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5lODdkYjFiCi0tLSAvZGV2L251bGwKKysrIGIvanNzLVNpZ25hdHVyZUFsZ29yaXRobS5wYXRj aApAQCAtMCwwICsxLDM0IEBACisjIEhHIGNoYW5nZXNldCBwYXRjaAorIyBVc2VyIERhdmlkIFN0 dXR6bWFuIGRhdmlkLmtvbnJhZC5zdHV0em1hbkB1cy5hcm15Lm1pbAorIyBEYXRlIDE1MDkwNjIz NDYgMjUyMDAKKyMgICAgICBUaHUgT2N0IDI2IDE2OjU5OjA2IDIwMTcgLTA3MDAKKyMgTm9kZSBJ RCBiMWEzYzNjYzZiMzU4NDk0OGQyNTFkM2JmY2ZlNjYzMGQ4OTcwZGI1CisjIFBhcmVudCAgMjUy YzEwZjQ0ODk3MWI3YWUwODdiZGUyNTk1MDVhYmQ1ZGM1YTAzYQorQnVnemlsbGEubW96aWxsYSAx NDA5ODY3IG9yZy5tb3ppbGxhLmpzcy5wa2l4LmNtcy5TaWduZXJJbmZvIGluY29ycmVjdGx5IHBy b2R1Y2luZyBzaWduYXR1cmVzIChlc3BlY2lhbGx5IGZvciBFQykKKworVGhlIHBhdGNoIGZpeGVz IHRoZSBPSUQgdGhhdCBnb2VzIGludG8gdGhlIHNpZ25hdHVyZUFsZ29yaXRobSBmaWVsZCBhcyB3 ZWxsIGFzIHBhc3NpbmcgdGhlIGZ1bGwgc2lnbmF0dXJlIGFsZ29yaXRobSB0byB0aGUgU2lnbmF0 dXJlIGNvbnRleHQgdG8gZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZSB1c2luZyB0aGUgcHJvcGVyIGFs Z29yaXRobS4KK1dpdGggdGhpcyBwYXRjaCwgaWYgb25lIHBhc3NlcyBTaWduYXR1cmVBbGdvcml0 aG0uUlNBU2lnbmF0dXJlV2l0aFNIQTI1NkRpZ2VzdCBpbiB0aGUgY29uc3RydWN0b3Igb25lIHdp bGwgbm93IGdldCBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiAoMSAyIDg0MCAxMTM1NDkgMSAxIDEx KSBpbiB0aGUgc2lnbmF0dXJlQWxnb3JpdGhtIGZpZWxkLgorCitjZnUgY2hlY2tpbmcgaW4gZm9y IGRzdHV0em1hbgorCitkaWZmIC0tZ2l0IGEvb3JnL21vemlsbGEvanNzL3BraXgvY21zL1NpZ25l ckluZm8uamF2YSBiL29yZy9tb3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKKy0t LSBhL29yZy9tb3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKKysrKyBiL29yZy9t b3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKK0BAIC0yODksNyArMjg5LDcgQEAK KyAgICAgICAgIH0KKyAKKyAgICAgICAgIGRpZ2VzdEVuY3J5cHRpb25BbGdvcml0aG0gPSBuZXcg QWxnb3JpdGhtSWRlbnRpZmllcigKKy0gICAgICAgICAgICBzaWduaW5nQWxnLmdldFJhd0FsZygp LnRvT0lEKCksbnVsbCApOworKyAgICAgICAgICAgIHNpZ25pbmdBbGcudG9PSUQoKSxudWxsICk7 CisgCisgCisgICAgICAgICBpZiggc2lnbmVkQXR0cmlidXRlcyAhPSBudWxsICkgCitAQCAtMzMy LDcgKzMzMiw3IEBACisgICAgICAgICAvLyBlbmNyeXB0IHRoZSBERVItZW5jb2RlZCBEaWdlc3RJ bmZvIHdpdGggdGhlIHByaXZhdGUga2V5CisgICAgICAgICBDcnlwdG9Ub2tlbiB0b2tlbiA9IHNp Z25pbmdLZXkuZ2V0T3duaW5nVG9rZW4oKTsKKyAgICAgICAgIFNpZ25hdHVyZSBzaWc7CistICAg ICAgICBzaWcgPSB0b2tlbi5nZXRTaWduYXR1cmVDb250ZXh0KCBzaWduaW5nQWxnLmdldFJhd0Fs ZygpICk7CisrICAgICAgICBzaWcgPSB0b2tlbi5nZXRTaWduYXR1cmVDb250ZXh0KCBzaWduaW5n QWxnICk7CisgICAgICAgICBzaWcuaW5pdFNpZ24oc2lnbmluZ0tleSk7CisgICAgICAgICBzaWcu dXBkYXRlKHRvQmVTaWduZWQpOworICAgICAgICAgZW5jcnlwdGVkRGlnZXN0ID0gbmV3IE9DVEVU X1NUUklORyhzaWcuc2lnbigpKTsKCmRpZmYgLS1naXQgYS9qc3Muc3BlYyBiL2pzcy5zcGVjCmlu ZGV4IDZjNjkwOTUuLmI2MmQ3NzYgMTAwNjQ0Ci0tLSBhL2pzcy5zcGVjCisrKyBiL2pzcy5zcGVj CkBAIC0xLDYgKzEsNiBAQAogTmFtZTogICAgICAgICAgIGpzcwogVmVyc2lvbjogICAgICAgIDQu NC4yCi1SZWxlYXNlOiAgICAgICAgNiV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgNyV7P2Rpc3R9 CiBTdW1tYXJ5OiAgICAgICAgSmF2YSBTZWN1cml0eSBTZXJ2aWNlcyAoSlNTKQogCiBHcm91cDog ICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwpAQCAtMzYsNiArMzYsOCBAQCBQ YXRjaDE6ICAgICAgICAganNzLUhNQUMtdGVzdC1mb3ItQUVTLWVuY3J5cHQtdW53cmFwLnBhdGNo CiBQYXRjaDI6ICAgICAgICAganNzLVBCRS1wYWRkZWQtYmxvY2stY2lwaGVyLWVuaGFuY2VtZW50 cy5wYXRjaAogUGF0Y2gzOiAgICAgICAgIGpzcy1maXgtUEsxMVN0b3JlLWdldEVuY3J5cHRlZFBy aXZhdGVLZXlJbmZvLXNlZ2ZhdWx0LnBhdGNoCiBQYXRjaDQ6ICAgICAgICAganNzLUhNQUMtdW53 cmFwLWtleXdyYXAtRklQU01PREUucGF0Y2gKK1BhdGNoNTogICAgICAgICBqc3MtU2lnbmF0dXJl QWxnb3JpdGhtLnBhdGNoCitQYXRjaDY6ICAgICAgICAganNzLU9iamVjdE5vdEZvdW5kRXhjZXB0 aW9uLW1lc3NhZ2UucGF0Y2gKIAogJWRlc2NyaXB0aW9uCiBKYXZhIFNlY3VyaXR5IFNlcnZpY2Vz IChKU1MpIGlzIGEgamF2YSBuYXRpdmUgaW50ZXJmYWNlIHdoaWNoIHByb3ZpZGVzIGEgYnJpZGdl CkBAIC01Nyw2ICs1OSw4IEBAIHB1c2hkIGpzcwogJXBhdGNoMiAtcDEKICVwYXRjaDMgLXAxCiAl cGF0Y2g0IC1wMQorJXBhdGNoNSAtcDEKKyVwYXRjaDYgLXAxCiBwb3BkCiAKICVidWlsZApAQCAt MTQ5LDYgKzE1MywxMiBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAle19qYXZhZG9jZGlyfS8l e25hbWV9LSV7dmVyc2lvbn0vKgogCiAlY2hhbmdlbG9nCisqIFdlZCBOb3YgIDEgMjAxNyBEb2d0 YWcgVGVhbSA8cGtpLWRldmVsQHJlZGhhdC5jb20+IDQuNC4yLTcKKy0gTW96aWxsYSBCdWd6aWxs YSAjMTQwODA1NyAtIEpTUyB0aHJvd3MgT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gd2l0aG91dAor ICBtZXNzYWdlIChlZGV3YXRhKQorLSBNb3ppbGxhIEJ1Z3ppbGxhICMxNDA5ODY3IC0gb3JnLm1v emlsbGEuanNzLnBraXguY21zLlNpZ25lckluZm8gaW5jb3JyZWN0bHkKKyAgcHJvZHVjaW5nIHNp Z25hdHVyZXMgKGVzcGVjaWFsbHkgZm9yIEVDKSAoY2Z1LGRzdHV0em1hbikKKwogKiBGcmkgT2N0 IDI3IDIwMTcgRG9ndGFnIFRlYW0gPHBraS1kZXZlbEByZWRoYXQuY29tPiA0LjQuMi02CiAtIE1v emlsbGEgQnVnemlsbGEgIzE0MDA4ODQgLSBuZXcgSlNTIGZhaWx1cmVzOiBITUFDIFVud3JhcCBh bmQgS2V5V3JhcHBpbmcKICAgRklQU01PREUgKGptYWduZSkK