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: Endi S. Dewata To: git-commits@fedoraproject.org Subject: [rpms/jss] pqc: Rebased to JSS 4.4.3 Date: Tue, 28 Jul 2026 16:48:38 GMT Message-ID: <178525731874.1.11681949318586403490.rpms-jss-657efa4d11e8@fedoraproject.org> List-ID: X-Git-Repo: rpms/jss X-Git-Branch: pqc X-Git-Rev: 657efa4d11e81ab7ac8e2b5c2435240faec3c8ed ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvanNzCiAgICAgICAgICAgIEJyYW5jaCA6IHBxYwogICAgICAgICAgICBDb21t aXQgOiA2NTdlZmE0ZDExZTgxYWI3YWM4ZTJiNWMyNDM1MjQwZmFlYzNjOGVkCiAgICAgICAgICAg IEF1dGhvciA6IEVuZGkgUy4gRGV3YXRhIDxlZGV3YXRhQHJlZGhhdC5jb20+CiAgICAgICAgICAg IERhdGUgICA6IDIwMTgtMDQtMDVUMjI6MzU6MDkrMDI6MDAKICAgICAgICAgICAgU3RhdHMgIDog KzIxLy0yMzU0IGluIDEyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMu ZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9qc3MvYy82NTdlZmE0ZDExZTgxYWI3YWM4ZTJiNWMyNDM1 MjQwZmFlYzNjOGVkP2JyYW5jaD1wcWMKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmVi YXNlZCB0byBKU1MgNC40LjMKCmh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5j Z2k/aWQ9MTU0ODU0OAoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpp bmRleCBkZWFkOWE5Li41NDA0NmY2IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRp Z25vcmUKQEAgLTMsMyArMyw0IEBAIGpzcy00LjIuNi50YXIuZ3oKIC9qc3MtNC40LjAudGFyLmd6 CiAvanNzLTQuNC4xLnRhci5negogL2pzcy00LjQuMi50YXIuZ3oKKy9qc3MtNC40LjMudGFyLmd6 CgpkaWZmIC0tZ2l0IGEvanNzLUhNQUMtdGVzdC1mb3ItQUVTLWVuY3J5cHQtdW53cmFwLnBhdGNo IGIvanNzLUhNQUMtdGVzdC1mb3ItQUVTLWVuY3J5cHQtdW53cmFwLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA0MzVkZmQwLi4wMDAwMDAwCi0tLSBhL2pzcy1ITUFDLXRlc3Qt Zm9yLUFFUy1lbmNyeXB0LXVud3JhcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5NiArMCww IEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEphY2sgTWFnbmUgPGptYWduZUByZWRo YXQuY29tPgotIyBEYXRlIDE1MDQzMDc3NTQgMjUyMDAKLSMgICAgICBGcmkgU2VwIDAxIDE2OjE1 OjU0IDIwMTcgLTA3MDAKLSMgTm9kZSBJRCBlZWMxNTUxOGZkNjFmMWQ5ODhjMjViNGRlNTg5NTU1 Nzk2ZjllNjVmCi0jIFBhcmVudCAgMTdkMWQ3Yjc0MGNhNTc3N2ZiY2Y4ZWU4MTdhMmYyNmI5Yzkz NTkzYQotdW53cmFwcGluZyBvZiBITUFDLVNIQTEgc2VjcmV0IGtleXMgdXNpbmcgQUVTIHdyYXBw aW5nIGFuZCB1bndyYXBwaW5nCi1jZnUgb24gYmVoYWxmIG9mIGptYWduZQotCi1kaWZmIC1yIDE3 ZDFkN2I3NDBjYSAtciBlZWMxNTUxOGZkNjEgb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExS2V5 V3JhcHBlci5qYXZhCi0tLS0gYS9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFLZXlXcmFwcGVy LmphdmEJTW9uIE1heSAwMSAxMDozOTo1MCAyMDE3IC0wNzAwCi0rKysgYi9vcmcvbW96aWxsYS9q c3MvcGtjczExL1BLMTFLZXlXcmFwcGVyLmphdmEJRnJpIFNlcCAwMSAxNjoxNTo1NCAyMDE3IC0w NzAwCi1AQCAtNTg4LDYgKzU4OCw4IEBACi0gICAgICAgICAgICAgcmV0dXJuIEVuY3J5cHRpb25B bGdvcml0aG0uUkM0OwotICAgICAgICAgfSBlbHNlIGlmKCB0eXBlID09IFN5bW1ldHJpY0tleS5B RVMgKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIEVuY3J5cHRpb25BbGdvcml0aG0uQUVTXzEyOF9F Q0I7Ci0rICAgICAgICB9IGVsc2UgaWYoIHR5cGUgPT0gU3ltbWV0cmljS2V5LlNIQTFfSE1BQykg ewotKyAgICAgICAgICAgIHJldHVybiBITUFDQWxnb3JpdGhtLlNIQTE7Ci0gICAgICAgICB9IGVs c2UgIHsKLSAgICAgICAgICAgICBBc3NlcnQuX2Fzc2VydCggdHlwZSA9PSBTeW1tZXRyaWNLZXku UkMyICk7Ci0gICAgICAgICAgICAgcmV0dXJuIEVuY3J5cHRpb25BbGdvcml0aG0uUkMyX0NCQzsK LWRpZmYgLXIgMTdkMWQ3Yjc0MGNhIC1yIGVlYzE1NTE4ZmQ2MSBvcmcvbW96aWxsYS9qc3MvcGtj czExL1BLMTFNZXNzYWdlRGlnZXN0LmMKLS0tLSBhL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsx MU1lc3NhZ2VEaWdlc3QuYwlNb24gTWF5IDAxIDEwOjM5OjUwIDIwMTcgLTA3MDAKLSsrKyBiL29y Zy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMU1lc3NhZ2VEaWdlc3QuYwlGcmkgU2VwIDAxIDE2OjE1 OjU0IDIwMTcgLTA3MDAKLUBAIC02NywxOSArNjcsMTkgQEAKLSAgICAgfQotIAotICAgICAvKiBj b3B5IHRoZSBrZXksIHNldHRpbmcgdGhlIENLQV9TSUdOIGF0dHJpYnV0ZSAqLwotLSAgICAvKgot KyAgICAKLSAgICAgbmV3S2V5ID0gUEsxMV9Db3B5U3ltS2V5Rm9yU2lnbmluZyhvcmlnS2V5LCBt ZWNoKTsKLSsKLSsgICAgLyogRm9yIHNvbWUga2V5IG9uIHRoZSBoc20sIHRoaXMgY2FsbCBjb3Vs ZCBmYWlsLCBidXQgdGhlIGtleSBtYXkgd29yayBhbnl3YXkgKi8KLSsKLSAgICAgaWYoIG5ld0tl eSA9PSBOVUxMICkgewotLSAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgRElHRVNUX0VYQ0VQVElP TiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNldCBDS0FfU0lHTiBhdHRy aWJ1dGUgb24gc3ltbWV0cmljIGtleSIpOwotLSAgICAgICAgZ290byBmaW5pc2g7Ci0rICAgICAg ICBuZXdLZXkgPSBvcmlnS2V5OwotICAgICB9Ci0tICAgICovCi0gCi0gICAgIHBhcmFtLmRhdGEg PSBOVUxMOwotICAgICBwYXJhbS5sZW4gPSAwOwotIAotLSAgICBjb250ZXh0ID0gUEsxMV9DcmVh dGVDb250ZXh0QnlTeW1LZXkobWVjaCwgQ0tBX1NJR04sIG9yaWdLZXksICZwYXJhbSk7Ci0rICAg IGNvbnRleHQgPSBQSzExX0NyZWF0ZUNvbnRleHRCeVN5bUtleShtZWNoLCBDS0FfU0lHTiwgbmV3 S2V5LCAmcGFyYW0pOwotICAgICBpZiggY29udGV4dCA9PSBOVUxMICkgewotICAgICAgICAgSlNT X3Rocm93TXNnKGVudiwgRElHRVNUX0VYQ0VQVElPTiwKLSAgICAgICAgICAgICAiVW5hYmxlIHRv IGluaXRpYWxpemUgZGlnZXN0IGNvbnRleHQiKTsKLUBAIC04OCw3ICs4OCw3IEBACi0gCi0gICAg IGNvbnRleHRPYmogPSBKU1NfUEsxMV93cmFwQ2lwaGVyQ29udGV4dFByb3h5KGVudiwgJmNvbnRl eHQpOwotIGZpbmlzaDoKLS0gICAgaWYobmV3S2V5KSB7Ci0rICAgIGlmKG5ld0tleSAmJiAobmV3 S2V5ICE9IG9yaWdLZXkpKSB7Ci0gICAgICAgICAvKiBTeW1LZXlzIGFyZSByZWYgY291bnRlZCwg YW5kIHRoZSBjb250ZXh0IHdpbGwgZnJlZSBpdCdzIHJlZgotICAgICAgICAgICogd2hlbiBpdCBp cyBkZXN0cm95ZWQgKi8KLSAgICAgICAgIFBLMTFfRnJlZVN5bUtleShuZXdLZXkpOwotZGlmZiAt ciAxN2QxZDdiNzQwY2EgLXIgZWVjMTU1MThmZDYxIG9yZy9tb3ppbGxhL2pzcy90ZXN0cy9IbWFj VGVzdC5qYXZhCi0tLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAot KysrIGIvb3JnL21vemlsbGEvanNzL3Rlc3RzL0htYWNUZXN0LmphdmEJRnJpIFNlcCAwMSAxNjox NTo1NCAyMDE3IC0wNzAwCi1AQCAtMCwwICsxLDExOSBAQAotKwotK3BhY2thZ2Ugb3JnLm1vemls bGEuanNzLnRlc3RzOwotKwotKwotK2ltcG9ydCBqYXZhLnNlY3VyaXR5LktleTsKLStpbXBvcnQg amF2YXguY3J5cHRvLkNpcGhlcjsKLStpbXBvcnQgamF2YXguY3J5cHRvLktleUdlbmVyYXRvcjsK LStpbXBvcnQgamF2YXguY3J5cHRvLk1hYzsKLStpbXBvcnQgamF2YXguY3J5cHRvLlNlY3JldEtl eTsKLStpbXBvcnQgamF2YXguY3J5cHRvLnNwZWMuSXZQYXJhbWV0ZXJTcGVjOwotKwotK2ltcG9y dCBvcmcubW96aWxsYS5qc3MuQ3J5cHRvTWFuYWdlcjsKLStpbXBvcnQgb3JnLm1vemlsbGEuanNz LmNyeXB0by5DcnlwdG9Ub2tlbjsKLStpbXBvcnQgb3JnLm1vemlsbGEuanNzLmNyeXB0by5TeW1t ZXRyaWNLZXk7Ci0rCi0rCi0rcHVibGljIGNsYXNzIEhtYWNUZXN0IHsKLSsKLSsgIHByaXZhdGUg c3RhdGljIGZpbmFsIFN0cmluZyBJTlRFUk5BTF9LRVlfU1RPUkFHRV9UT0tFTiA9Ci0rICAgIG5l dyBDcnlwdG9NYW5hZ2VyLkluaXRpYWxpemF0aW9uVmFsdWVzKCIiKS5nZXRJbnRlcm5hbEtleVN0 b3JhZ2VUb2tlbkRlc2NyaXB0aW9uKCkudHJpbSgpOwotKwotKyAgcHJpdmF0ZSBzdGF0aWMgZmlu YWwgU3RyaW5nIE5TU19EQVRBQkFTRV9ESVIgPSAic3FsOmRhdGEiOwotKyAgcHJpdmF0ZSBzdGF0 aWMgZmluYWwgU3RyaW5nIFBST1ZJREVSID0gIk1vemlsbGEtSlNTIjsKLSsKLSsKLSsgIHB1Ymxp YyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCi0rICAgewotKwotKyAgICBTdHJpbmcg YWxnb3JpdGhtID0gImhtYWMtc2hhMSI7Ci0rCi0rICAgIHRyeSB7Ci0rICAgICAgIGNvbmZpZ3Vy ZUNyeXB0byhhcmdzKTsKLSsKLSsgICAgICAgTWFjIG1hYyA9IE1hYy5nZXRJbnN0YW5jZShhbGdv cml0aG0sIFBST1ZJREVSKTsKLSsKLSsgICAgICAgYnl0ZVtdIGtleURhdGEgPSBuZXcgYnl0ZVsx Nl07Ci0rICAgICAgIEtleSBrZXkgPSBpbXBvcnRIbWFjU2hhMUtleShrZXlEYXRhKTsKLSsKLSsg ICAgICAgbWFjLmluaXQoa2V5KTsKLSsKLSsgICAgICAgZG9ITUFDKG1hYywiRG9ndGFnIHJ1bGVz ISIpOwotKwotKyAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRvbmUiKTsKLSsKLSsgICAgICAg U3lzdGVtLmV4aXQoMCk7Ci0rICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0rICAgICAgICBT eXN0ZW0uZXhpdCgxKTsKLSsgICAgfQotKyAgfQotKwotKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBj b25maWd1cmVDcnlwdG8oU3RyaW5nW10gYXJncykKLSsgICAgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0r Ci0rICAgIENyeXB0b01hbmFnZXIuSW5pdGlhbGl6YXRpb25WYWx1ZXMgaW5pdGlhbGl6YXRpb25W YWx1ZXMgPQotKyAgICAgIG5ldyBDcnlwdG9NYW5hZ2VyLkluaXRpYWxpemF0aW9uVmFsdWVzKGFy Z3NbMF0pOwotKwotKyAgICBDcnlwdG9NYW5hZ2VyLmluaXRpYWxpemUoaW5pdGlhbGl6YXRpb25W YWx1ZXMpOwotKwotKyAgICBDcnlwdG9NYW5hZ2VyIGNyeXB0b01hbmFnZXIgPSBDcnlwdG9NYW5h Z2VyLmdldEluc3RhbmNlKCk7Ci0rCi0rICAgIENyeXB0b1Rva2VuIGNyeXB0b1Rva2VuID0KLSsg ICAgICBjcnlwdG9NYW5hZ2VyLmdldFRva2VuQnlOYW1lKElOVEVSTkFMX0tFWV9TVE9SQUdFX1RP S0VOKTsKLSsKLSsgICAgY3J5cHRvTWFuYWdlci5zZXRUaHJlYWRUb2tlbihjcnlwdG9Ub2tlbik7 Ci0rICB9Ci0rCi0rICBwcml2YXRlIHN0YXRpYyBLZXkgaW1wb3J0SG1hY1NoYTFLZXkoYnl0ZVtd IGtleSkKLSsgICAgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0rCi0rICAgIGZpbmFsIFN0cmluZyBXUkFQ UElOR19BTEdPUklUSE0gPSAiQUVTL0NCQy9QS0NTNVBhZGRpbmciOwotKwotKyAgICBLZXkgd3Jh cHBpbmdLZXkgPSBnZXRXcmFwcGluZ0tleSgpOwotKwotKyAgICBieXRlW10gaXYgPSBuZXcgYnl0 ZVsxNl07Ci0rICAgIEl2UGFyYW1ldGVyU3BlYyBpdlBhcmFtZXRlclNwZWMgPSBuZXcgSXZQYXJh bWV0ZXJTcGVjKGl2KTsKLSsKLSsgICAgQ2lwaGVyIHdyYXBwaW5nQ2lwaGVyID0gQ2lwaGVyLmdl dEluc3RhbmNlKFdSQVBQSU5HX0FMR09SSVRITSwgUFJPVklERVIpOwotKyAgICB3cmFwcGluZ0Np cGhlci5pbml0KENpcGhlci5FTkNSWVBUX01PREUsIHdyYXBwaW5nS2V5LCBpdlBhcmFtZXRlclNw ZWMpOwotKwotKyAgICBieXRlW10gd3JhcHBlZEtleURhdGEgPSB3cmFwcGluZ0NpcGhlci5kb0Zp bmFsKGtleSk7Ci0rCi0rICAgIENpcGhlciB1bndyYXBwaW5nQ2lwaGVyID0gQ2lwaGVyLmdldElu c3RhbmNlKFdSQVBQSU5HX0FMR09SSVRITSwgUFJPVklERVIpOwotKyAgICB1bndyYXBwaW5nQ2lw aGVyLmluaXQoQ2lwaGVyLlVOV1JBUF9NT0RFLCB3cmFwcGluZ0tleSwgaXZQYXJhbWV0ZXJTcGVj KTsKLSsKLSsgICAgcmV0dXJuIChTZWNyZXRLZXkpIHVud3JhcHBpbmdDaXBoZXIudW53cmFwKHdy YXBwZWRLZXlEYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3ltbWV0cmljS2V5LlNIQTFfSE1BQy50b1N0cmluZygpLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2lwaGVyLlNFQ1JFVF9LRVkpOwotKyAg fQotKwotKyAgcHJpdmF0ZSBzdGF0aWMgc3luY2hyb25pemVkIEtleSBnZXRXcmFwcGluZ0tleSgp Ci0rICAgIHRocm93cyBFeGNlcHRpb24gewotKwotKyAgICBmaW5hbCBTdHJpbmcga2V5R2VuQWxn b3JpdGhtID0gIkFFUyI7Ci0rICAgIGZpbmFsIGludCB3cmFwcGluZ0tleUxlbmd0aCA9IDI1NjsK LSsKLSsgICAgS2V5R2VuZXJhdG9yIGtleUdlbiA9IEtleUdlbmVyYXRvci5nZXRJbnN0YW5jZShr ZXlHZW5BbGdvcml0aG0sIFBST1ZJREVSKTsKLSsgICAga2V5R2VuLmluaXQod3JhcHBpbmdLZXlM ZW5ndGgpOwotKyAgICByZXR1cm4ga2V5R2VuLmdlbmVyYXRlS2V5KCk7Ci0rICB9Ci0rCi0rICBw dWJsaWMgc3RhdGljIHZvaWQgZG9ITUFDKE1hYyBtb3ppbGxhSG1hYywgU3RyaW5nIGNsZWFyVGV4 dCkKLSsgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKLSsgICAgICAgIGJ5dGVbXSBtb3pp bGxhSG1hY091dDsKLSsKLSsgICAgICAgIC8vR2V0IHRoZSBNb3ppbGxhIEhNQUMKLSsgICAgICAg IG1vemlsbGFIbWFjT3V0ID0gbW96aWxsYUhtYWMuZG9GaW5hbChjbGVhclRleHQuZ2V0Qnl0ZXMo KSk7Ci0rCi0rICAgICAgICBpZiAobW96aWxsYUhtYWNPdXQubGVuZ3RoID09IG1vemlsbGFIbWFj LmdldE1hY0xlbmd0aCgpKSB7Ci0rICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFBST1ZJ REVSICsgIiBzdXBwb3J0cyAiICsKLSsgICAgICAgICAgICAgICAgICAgIG1vemlsbGFIbWFjLmdl dEFsZ29yaXRobSgpICsgIiAgYW5kIHRoZSBvdXRwdXQgc2l6ZSBpcyAiICsgbW96aWxsYUhtYWMu Z2V0TWFjTGVuZ3RoKCkpOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICB0aHJvdyBu ZXcgRXhjZXB0aW9uKCJFUlJPUjogaG1hYyBvdXRwdXQgc2l6ZSBpcyAiICsKLSsgICAgICAgICAg ICAgICAgICAgIG1vemlsbGFIbWFjT3V0Lmxlbmd0aCArICIsIHNob3VsZCBiZSAiICsKLSsgICAg ICAgICAgICAgICAgICAgIG1vemlsbGFIbWFjLmdldE1hY0xlbmd0aCgpKTsKLSsgICAgICAgIH0K LSsgICAgfQotKwotKwotK30KLWRpZmYgLXIgMTdkMWQ3Yjc0MGNhIC1yIGVlYzE1NTE4ZmQ2MSBv cmcvbW96aWxsYS9qc3MvdGVzdHMvYWxsLnBsCi0tLS0gYS9vcmcvbW96aWxsYS9qc3MvdGVzdHMv YWxsLnBsCU1vbiBNYXkgMDEgMTA6Mzk6NTAgMjAxNyAtMDcwMAotKysrIGIvb3JnL21vemlsbGEv anNzL3Rlc3RzL2FsbC5wbAlGcmkgU2VwIDAxIDE2OjE1OjU0IDIwMTcgLTA3MDAKLUBAIC00OTIs NiArNDkyLDEwIEBACi0gJGNvbW1hbmQgPSAiJGphdmEgLWNwICRqc3NfY2xhc3NwYXRoIG9yZy5t b3ppbGxhLmpzcy50ZXN0cy5ITUFDVGVzdCAkdGVzdGRpciAkcHdmaWxlIjsKLSBydW5fdGVzdCgk dGVzdG5hbWUsICRjb21tYW5kKTsKLSAKLSskdGVzdG5hbWUgPSAiSE1BQyBVbndyYXAiOwotKyRj b21tYW5kID0gIiRqYXZhIC1jcCAkanNzX2NsYXNzcGF0aCBvcmcubW96aWxsYS5qc3MudGVzdHMu SG1hY1Rlc3QgJHRlc3RkaXIgJHB3ZmlsZSI7Ci0rcnVuX3Rlc3QoJHRlc3RuYW1lLCAkY29tbWFu ZCk7Ci0rCi0gJHRlc3RuYW1lID0gIktleVdyYXBwaW5nICI7Ci0gJGNvbW1hbmQgPSAiJGphdmEg LWNwICRqc3NfY2xhc3NwYXRoIG9yZy5tb3ppbGxhLmpzcy50ZXN0cy5KQ0FLZXlXcmFwICR0ZXN0 ZGlyICRwd2ZpbGUiOwotIHJ1bl90ZXN0KCR0ZXN0bmFtZSwgJGNvbW1hbmQpOwoKZGlmZiAtLWdp dCBhL2pzcy1ITUFDLXVud3JhcC1rZXl3cmFwLUZJUFNNT0RFLnBhdGNoIGIvanNzLUhNQUMtdW53 cmFwLWtleXdyYXAtRklQU01PREUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDUyOWQzM2EuLjAwMDAwMDAKLS0tIGEvanNzLUhNQUMtdW53cmFwLWtleXdyYXAtRklQU01PREUu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRj aAotIyBVc2VyIEphY2sgTWFnbmUgPGptYWduZUByZWRoYXQuY29tPgotIyBEYXRlIDE1MDY2NDA4 NTAgMjUyMDAKLSMgICAgICBUaHUgU2VwIDI4IDE2OjIwOjUwIDIwMTcgLTA3MDAKLSMgTm9kZSBJ RCAyNTJjMTBmNDQ4OTcxYjdhZTA4N2JkZTI1OTUwNWFiZDVkYzVhMDNhCi0jIFBhcmVudCAgM2U5 YTVhZTIxNDlkMDQ4NzdkYzE5YjExN2E4OTE3YzIyODU0ZjhlYgotRml4OiBCdWcgMTQwMDg4NCAt IG5ldyBKU1MgZmFpbHVyZXM6IEhNQUMgVW53cmFwIGFuZCBLZXlXcmFwcGluZyBGSVBTTU9ERS4K LQotZGlmZiAtLWdpdCBhL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvS2V5VHlwZS5qYXZhIGIvb3Jn L21vemlsbGEvanNzL3BrY3MxMS9LZXlUeXBlLmphdmEKLS0tLSBhL29yZy9tb3ppbGxhL2pzcy9w a2NzMTEvS2V5VHlwZS5qYXZhCi0rKysgYi9vcmcvbW96aWxsYS9qc3MvcGtjczExL0tleVR5cGUu amF2YQotQEAgLTIwNCw5ICsyMDQsNyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF bmNyeXB0aW9uQWxnb3JpdGhtLkFFU18xOTJfQ0JDLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFbmNyeXB0aW9uQWxnb3JpdGhtLkFFU18yNTZfRUNCLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFbmNyeXB0aW9uQWxnb3JpdGhtLkFFU18yNTZfQ0JDLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBBRVMgQ0JDIFBBRCBpcyB0aGUgc2FtZSBhcyBBRVNfMjU2X0NC Q19QQUQgKi8KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hvdWxkbid0IGJyZWFr IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgMzEzNzk4Ki8gICAgICAgIAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvL0VuY3J5cHRpb25BbGdvcml0aG0uQUVTX0NCQ19QQUQsIAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQWxnb3JpdGhtLkFFU19DQkNfUEFELCAK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5jcnlwdGlvbkFsZ29yaXRobS5BRVNfMTI4 X0NCQ19QQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY3J5cHRpb25BbGdvcml0 aG0uQUVTXzE5Ml9DQkNfUEFELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbmNyeXB0 aW9uQWxnb3JpdGhtLkFFU18yNTZfQ0JDX1BBRCAgICAgICAgCgpkaWZmIC0tZ2l0IGEvanNzLU9i amVjdE5vdEZvdW5kRXhjZXB0aW9uLW1lc3NhZ2UucGF0Y2ggYi9qc3MtT2JqZWN0Tm90Rm91bmRF eGNlcHRpb24tbWVzc2FnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ2 MWUyNi4uMDAwMDAwMAotLS0gYS9qc3MtT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24tbWVzc2FnZS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4MCArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRj aAotIyBVc2VyICJFbmRpIFMuIERld2F0YSIgPGVkZXdhdGFAcmVkaGF0LmNvbT4KLSMgRGF0ZSAx NTA5MTU0NzE5IC03MjAwCi0jICAgICAgU2F0IE9jdCAyOCAwMzozODozOSAyMDE3ICswMjAwCi0j IE5vZGUgSUQgMTlhMGUyMTQ2YTkyOTE3Mzc1N2U2Y2NiYjYxYTAzNWVjOTQyNmY0MwotIyBQYXJl bnQgIGIxYTNjM2NjNmIzNTg0OTQ4ZDI1MWQzYmZjZmU2NjMwZDg5NzBkYjUKLUFkZGVkIGNlcnRp ZmljYXRlIG5pY2tuYW1lIGludG8gT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gbWVzc2FnZS4KLVRo ZSBjb2RlIHRoYXQgZ2VuZXJhdGVzIE9iamVjdE5vdEZvdW5kRXhjZXB0aW9uIGhhcyBiZWVuIG1v ZGlmaWVkCi10byBpbmNsdWRlIHRoZSBjZXJ0aWZpY2F0ZSBuaWNrbmFtZSB0byBoZWxwIHRyb3Vi bGVzaG9vdGluZy4KLQotaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTQwODA1NwotCi1kaWZmIC0tZ2l0IGEvb3JnL21vemlsbGEvanNzL1BLMTFGaW5kZXIuYyBi L29yZy9tb3ppbGxhL2pzcy9QSzExRmluZGVyLmMKLS0tLSBhL29yZy9tb3ppbGxhL2pzcy9QSzEx RmluZGVyLmMKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9QSzExRmluZGVyLmMKLUBAIC01NCw3ICs1 NCw5IEBACi0gICAgIGNlcnQgPSBKU1NfUEsxMV9maW5kQ2VydEFuZFNsb3RGcm9tTmlja25hbWUo bmljaywgTlVMTCwgJnNsb3QpOwotIAotICAgICBpZihjZXJ0ID09IE5VTEwpIHsKLS0gICAgICAg IEpTU19uYXRpdmVUaHJvdyhlbnYsIE9CSkVDVF9OT1RfRk9VTkRfRVhDRVBUSU9OKTsKLSsgICAg ICAgIGNoYXIgKm1lc3NhZ2UgPSBQUl9zbXByaW50ZigiQ2VydGlmaWNhdGUgbm90IGZvdW5kOiAl cyIsIG5pY2spOwotKyAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgT0JKRUNUX05PVF9GT1VORF9F WENFUFRJT04sIG1lc3NhZ2UpOwotKyAgICAgICAgUFJfc21wcmludGZfZnJlZShtZXNzYWdlKTsK LSAgICAgICAgIGdvdG8gZmluaXNoOwotICAgICB9Ci0gCi1AQCAtMTU3Nyw3ICsxNTc5LDkgQEAK LSAgICAgY2VydCA9IENFUlRfRmluZENlcnRCeU5pY2tuYW1lKENFUlRfR2V0RGVmYXVsdENlcnRE QigpLCBuaWNrbmFtZSk7Ci0gCi0gICAgIGlmIChjZXJ0ID09IE5VTEwpIHsKLS0gICAgICAgIEpT U190aHJvdyhlbnYsIE9CSkVDVF9OT1RfRk9VTkRfRVhDRVBUSU9OKTsKLSsgICAgICAgIGNoYXIg Km1lc3NhZ2UgPSBQUl9zbXByaW50ZigiQ2VydGlmaWNhdGUgbm90IGZvdW5kOiAlcyIsIG5pY2tu YW1lKTsKLSsgICAgICAgIEpTU190aHJvd01zZyhlbnYsIE9CSkVDVF9OT1RfRk9VTkRfRVhDRVBU SU9OLCBtZXNzYWdlKTsKLSsgICAgICAgIFBSX3NtcHJpbnRmX2ZyZWUobWVzc2FnZSk7Ci0gICAg ICAgICBnb3RvIGZpbmlzaDsKLSAgICAgfSBlbHNlIHsKLSAgICAgLyogMCBmb3IgY2VydGlmaWNh dGVVc2FnZSBpbiBjYWxsIHRvIENFUlRfVmVyaWZ5Q2VydGlmaWNhdGVOb3cgd2lsbAotQEAgLTE2 NDAsNyArMTY0NCw5IEBACi0gICAgIGNlcnQgPSBDRVJUX0ZpbmRDZXJ0QnlOaWNrbmFtZShDRVJU X0dldERlZmF1bHRDZXJ0REIoKSwgbmlja25hbWUpOwotIAotICAgICBpZiAoY2VydCA9PSBOVUxM KSB7Ci0tICAgICAgICBKU1NfdGhyb3coZW52LCBPQkpFQ1RfTk9UX0ZPVU5EX0VYQ0VQVElPTik7 Ci0rICAgICAgICBjaGFyICptZXNzYWdlID0gUFJfc21wcmludGYoIkNlcnRpZmljYXRlIG5vdCBm b3VuZDogJXMiLCBuaWNrbmFtZSk7Ci0rICAgICAgICBKU1NfdGhyb3dNc2coZW52LCBPQkpFQ1Rf Tk9UX0ZPVU5EX0VYQ0VQVElPTiwgbWVzc2FnZSk7Ci0rICAgICAgICBQUl9zbXByaW50Zl9mcmVl KG1lc3NhZ2UpOwotICAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgIH0gZWxzZSB7Ci0gICAgIC8q IDAgZm9yIGNlcnRpZmljYXRlVXNhZ2UgaW4gY2FsbCB0byBDRVJUX1ZlcmlmeUNlcnRpZmljYXRl Tm93IHRvCi1AQCAtMTgwMSw3ICsxODA3LDkgQEAKLSAgICAgY2VydCA9IENFUlRfRmluZENlcnRC eU5pY2tuYW1lKENFUlRfR2V0RGVmYXVsdENlcnREQigpLCBuaWNrbmFtZSk7Ci0gCi0gICAgIGlm IChjZXJ0ID09IE5VTEwpIHsKLS0gICAgICAgIEpTU190aHJvdyhlbnYsIE9CSkVDVF9OT1RfRk9V TkRfRVhDRVBUSU9OKTsKLSsgICAgICAgIGNoYXIgKm1lc3NhZ2UgPSBQUl9zbXByaW50ZigiQ2Vy dGlmaWNhdGUgbm90IGZvdW5kOiAlcyIsIG5pY2tuYW1lKTsKLSsgICAgICAgIEpTU190aHJvd01z ZyhlbnYsIE9CSkVDVF9OT1RfRk9VTkRfRVhDRVBUSU9OLCBtZXNzYWdlKTsKLSsgICAgICAgIFBS X3NtcHJpbnRmX2ZyZWUobWVzc2FnZSk7Ci0gICAgICAgICBnb3RvIGZpbmlzaDsKLSAgICAgfSBl bHNlIHsKLSAgICAgICAgIHJ2ID0gQ0VSVF9WZXJpZnlDZXJ0Tm93KENFUlRfR2V0RGVmYXVsdENl cnREQigpLCBjZXJ0LAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciAiRW5kaSBTLiBEZXdh dGEiIDxlZGV3YXRhQHJlZGhhdC5jb20+Ci0jIERhdGUgMTUwOTE1NDgxOSAtNzIwMAotIyAgICAg IFNhdCBPY3QgMjggMDM6NDA6MTkgMjAxNyArMDIwMAotIyBOb2RlIElEIDgzN2M3OTQ3NjExMGVj ZDRiZjZiNTA3ZmFhZDUwZWRiOWVlZDdlN2UKLSMgUGFyZW50ICAxOWEwZTIxNDZhOTI5MTczNzU3 ZTZjY2JiNjFhMDM1ZWM5NDI2ZjQzCi1SZWZvcm1hdHRlZCBTb2NrZXRCYXNlLmphdmEuCi1UaGUg U29ja2V0QmFzZS5qYXZhIGhhcyBiZWVuIGF1dG8tZm9ybWF0dGVkIHVzaW5nIEVjbGlwc2UgdG8K LXNpbXBsaWZ5IGZ1cnRoZXIgY2hhbmdlcyBvbiB0aGUgZmlsZS4KLQotaHR0cHM6Ly9idWd6aWxs YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODA1NwotCi1kaWZmIC0tZ2l0IGEvb3Jn L21vemlsbGEvanNzL3NzbC9Tb2NrZXRCYXNlLmphdmEgYi9vcmcvbW96aWxsYS9qc3Mvc3NsL1Nv Y2tldEJhc2UuamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL3NzbC9Tb2NrZXRCYXNlLmphdmEK LSsrKyBiL29yZy9tb3ppbGxhL2pzcy9zc2wvU29ja2V0QmFzZS5qYXZhCi1AQCAtMjcsNiArMjcs NyBAQAotICAgICBpbnQgZ2V0VGltZW91dCgpIHsKLSAgICAgICAgIHJldHVybiB0aW1lb3V0Owot ICAgICB9Ci0rCi0gICAgIHZvaWQgc2V0VGltZW91dChpbnQgdGltZW91dCkgewotICAgICAgICAg dGhpcy50aW1lb3V0ID0gdGltZW91dDsKLSAgICAgfQotQEAgLTM2LDE4ICszNywxNyBAQAotICAg ICB9Ci0gCi0gICAgIG5hdGl2ZSBieXRlW10gc29ja2V0Q3JlYXRlKE9iamVjdCBzb2NrZXRPYmpl Y3QsCi0tICAgICAgICBTU0xDZXJ0aWZpY2F0ZUFwcHJvdmFsQ2FsbGJhY2sgY2VydEFwcHJvdmFs Q2FsbGJhY2ssCi0tICAgICAgICBTU0xDbGllbnRDZXJ0aWZpY2F0ZVNlbGVjdGlvbkNhbGxiYWNr IGNsaWVudENlcnRTZWxlY3Rpb25DYWxsYmFjaywKLS0gICAgICAgIGphdmEubmV0LlNvY2tldCBq YXZhU29jaywgU3RyaW5nIGhvc3QsaW50IGZhbWlseSkKLSsgICAgICAgICAgICBTU0xDZXJ0aWZp Y2F0ZUFwcHJvdmFsQ2FsbGJhY2sgY2VydEFwcHJvdmFsQ2FsbGJhY2ssCi0rICAgICAgICAgICAg U1NMQ2xpZW50Q2VydGlmaWNhdGVTZWxlY3Rpb25DYWxsYmFjayBjbGllbnRDZXJ0U2VsZWN0aW9u Q2FsbGJhY2ssCi0rICAgICAgICAgICAgamF2YS5uZXQuU29ja2V0IGphdmFTb2NrLCBTdHJpbmcg aG9zdCwgaW50IGZhbWlseSkKLSAgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOwot IAotICAgICBieXRlW10gc29ja2V0Q3JlYXRlKE9iamVjdCBzb2NrZXRPYmplY3QsCi0tICAgICAg ICBTU0xDZXJ0aWZpY2F0ZUFwcHJvdmFsQ2FsbGJhY2sgY2VydEFwcHJvdmFsQ2FsbGJhY2ssCi0t ICAgICAgICBTU0xDbGllbnRDZXJ0aWZpY2F0ZVNlbGVjdGlvbkNhbGxiYWNrIGNsaWVudENlcnRT ZWxlY3Rpb25DYWxsYmFjaywgaW50IGZhbWlseSkKLS0gICAgICAgICAgICB0aHJvd3MgU29ja2V0 RXhjZXB0aW9uCi0tICAgIHsKLSsgICAgICAgICAgICBTU0xDZXJ0aWZpY2F0ZUFwcHJvdmFsQ2Fs bGJhY2sgY2VydEFwcHJvdmFsQ2FsbGJhY2ssCi0rICAgICAgICAgICAgU1NMQ2xpZW50Q2VydGlm aWNhdGVTZWxlY3Rpb25DYWxsYmFjayBjbGllbnRDZXJ0U2VsZWN0aW9uQ2FsbGJhY2ssIGludCBm YW1pbHkpCi0rICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbiB7Ci0gICAgICAgICBy ZXR1cm4gc29ja2V0Q3JlYXRlKHNvY2tldE9iamVjdCwgY2VydEFwcHJvdmFsQ2FsbGJhY2ssCi0t ICAgICAgICAgICAgY2xpZW50Q2VydFNlbGVjdGlvbkNhbGxiYWNrLCBudWxsLCBudWxsLCBmYW1p bHkpOwotKyAgICAgICAgICAgICAgICBjbGllbnRDZXJ0U2VsZWN0aW9uQ2FsbGJhY2ssIG51bGws IG51bGwsIGZhbWlseSk7Ci0gICAgIH0KLSAKLSAgICAgbmF0aXZlIHZvaWQgc29ja2V0QmluZChi eXRlW10gYWRkckJBLCBpbnQgcG9ydCkgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbjsKLUBAIC01Nyw3 ICs1Nyw3IEBACi0gICAgICAqIHNhZmVyIHRoYW4gY29weWluZyB0aGUgdmFsdWVzIG9mIHRoZSBD IGNvbnN0YW50cywgd2hpY2ggYXJlIHN1YmplY3QKLSAgICAgICogdG8gY2hhbmdlLCBpbnRvIEph dmEgY29kZS4KLSAgICAgICogTm90ZSB0byBkZXZlbG9wZXIgdGhlc2UgY29uc3RhbnRzIGFyZSBu b3QgYWxsIHJlbGF0ZWQhIGkuZS4geW91IGNhbm5vdAotLSAgICAgKiBwYXNzIGluIFBSX1NIVVRE T1dOX1JDViB0byBzZXRTU0xPcHRpb24gZXRjISBDaGVjayB0aGVpciB1c2FnZSAKLSsgICAgICog cGFzcyBpbiBQUl9TSFVURE9XTl9SQ1YgdG8gc2V0U1NMT3B0aW9uIGV0YyEgQ2hlY2sgdGhlaXIg dXNhZ2UKLSAgICAgICogaW4gTlNTIGFuZCBOU1BSIGJlZm9yZSB1c2luZy4KLSAgICAgICovCi0g ICAgIHN0YXRpYyBmaW5hbCBpbnQgU1NMX0VOQUJMRV9TU0wyID0gMDsKLUBAIC03Myw3ICs3Myw3 IEBACi0gICAgIHN0YXRpYyBmaW5hbCBpbnQgU1NMX1BPTElDWV9ET01FU1RJQyA9IDEwOwotICAg ICBzdGF0aWMgZmluYWwgaW50IFNTTF9QT0xJQ1lfRVhQT1JUID0gMTE7Ci0gICAgIHN0YXRpYyBm aW5hbCBpbnQgU1NMX1BPTElDWV9GUkFOQ0UgPSAxMjsKLS0gICAgc3RhdGljIGZpbmFsIGludCBT U0xfUk9MTEJBQ0tfREVURUNUSU9OID0gMTM7IAotKyAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9S T0xMQkFDS19ERVRFQ1RJT04gPSAxMzsKLSAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfTk9fU1RF UF9ET1dOID0gMTQ7Ci0gICAgIHN0YXRpYyBmaW5hbCBpbnQgU1NMX0VOQUJMRV9GRFggPSAxNTsK LSAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfVjJfQ09NUEFUSUJMRV9IRUxMTyA9IDE2OwotQEAg LTk4LDcgKzk4LDcgQEAKLSAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfVmFyaWFudF9TdHJlYW0g PSAzMzsKLSAgICAgc3RhdGljIGZpbmFsIGludCBTU0xfVmFyaWFudF9EYXRhZ3JhbSA9IDM0Owot IAotLSAgICBzdGF0aWMgZmluYWwgaW50IFNTTF9BRl9JTkVUICA9IDUwOwotKyAgICBzdGF0aWMg ZmluYWwgaW50IFNTTF9BRl9JTkVUID0gNTA7Ci0gICAgIHN0YXRpYyBmaW5hbCBpbnQgU1NMX0FG X0lORVQ2ID0gNTE7Ci0gCi0gICAgIHZvaWQgY2xvc2UoKSB0aHJvd3MgSU9FeGNlcHRpb24gewot QEAgLTEwNiw3ICsxMDYsNyBAQAotICAgICB9Ci0gCi0gICAgIC8vIFNTTFNlcnZlclNvY2tldCBh bmQgU1NMU29ja2V0IGNsb3NlIG1ldGhvZHMKLS0gICAgLy8gaGF2ZSB0aGVpciBvd24gc3luY2hy b25pemF0aW9uIGNvbnRyb2wgdGhhdCAKLSsgICAgLy8gaGF2ZSB0aGVpciBvd24gc3luY2hyb25p emF0aW9uIGNvbnRyb2wgdGhhdAotICAgICAvLyBwcm90ZWN0cyBTb2NrZXRCYXNlLnNvY2tldENs b3NlLgotICAgICBuYXRpdmUgdm9pZCBzb2NrZXRDbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbjsK LSAKLUBAIC0xMTgsMTQgKzExOCwxMyBAQAotICAgICB9Ci0gCi0gICAgIHB1YmxpYyB2b2lkIHJl cXVlc3RDbGllbnRBdXRoTm9FeHBpcnlDaGVjayhib29sZWFuIGIpCi0tICAgICAgICB0aHJvd3Mg U29ja2V0RXhjZXB0aW9uCi0tICAgIHsKLSsgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0 aW9uIHsKLSAgICAgICAgIHJlcXVlc3RpbmdDbGllbnRBdXRoID0gYjsKLSAgICAgICAgIHJlcXVl c3RDbGllbnRBdXRoTm9FeHBpcnlDaGVja05hdGl2ZShiKTsKLSAgICAgfQotIAotICAgICBwcml2 YXRlIG5hdGl2ZSB2b2lkIHJlcXVlc3RDbGllbnRBdXRoTm9FeHBpcnlDaGVja05hdGl2ZShib29s ZWFuIGIpCi0tICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOwotKyAgICAgICAgICAgIHRo cm93cyBTb2NrZXRFeGNlcHRpb247Ci0gCi0gICAgIHZvaWQgZW5hYmxlU1NMMihib29sZWFuIGVu YWJsZSkgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbiB7Ci0gICAgICAgICBzZXRTU0xPcHRpb24oU1NM X0VOQUJMRV9TU0wyLCBlbmFibGUpOwotQEAgLTE0NCw4ICsxNDMsNyBAQAotICAgICB9Ci0gCi0g ICAgIHZvaWQgZW5hYmxlUmVuZWdvdGlhdGlvbihpbnQgbW9kZSkKLS0gICAgICAgICAgICB0aHJv d3MgU29ja2V0RXhjZXB0aW9uCi0tICAgIHsKLSsgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhj ZXB0aW9uIHsKLSAgICAgICAgIHNldFNTTE9wdGlvbk1vZGUoU29ja2V0QmFzZS5TU0xfRU5BQkxF X1JFTkVHT1RJQVRJT04sIG1vZGUpOwotICAgICB9Ci0gCi1AQCAtMTY4LDIzICsxNjYsMjEgQEAK LSAgICAgdm9pZCBlbmFibGVWMkNvbXBhdGlibGVIZWxsbyhib29sZWFuIGVuYWJsZSkgdGhyb3dz IFNvY2tldEV4Y2VwdGlvbiB7Ci0gICAgICAgICBzZXRTU0xPcHRpb24oU1NMX1YyX0NPTVBBVElC TEVfSEVMTE8sIGVuYWJsZSk7Ci0gICAgIH0KLS0gICAgCi0rCi0gICAgIHZvaWQgc2V0U1NMT3B0 aW9uKGludCBvcHRpb24sIGJvb2xlYW4gb24pCi0tICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0 aW9uCi0tICAgIHsKLSsgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uIHsKLSAgICAg ICAgIHNldFNTTE9wdGlvbihvcHRpb24sIG9uID8gMSA6IDApOwotICAgICB9Ci0gCi0tICAgIC8q KiAKLS0gICAgICogU2V0cyBTU0wgb3B0aW9ucyBmb3IgdGhpcyBzb2NrZXQgdGhhdCBoYXZlIHNp bXBsZSAKLSsgICAgLyoqCi0rICAgICAqIFNldHMgU1NMIG9wdGlvbnMgZm9yIHRoaXMgc29ja2V0 IHRoYXQgaGF2ZSBzaW1wbGUKLSAgICAgICogZW5hYmxlL2Rpc2FibGUgdmFsdWVzLgotICAgICAg Ki8KLSAgICAgbmF0aXZlIHZvaWQgc2V0U1NMT3B0aW9uKGludCBvcHRpb24sIGludCBvbikKLS0g ICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247Ci0rICAgICAgICAgICAgdGhyb3dzIFNvY2tl dEV4Y2VwdGlvbjsKLSAKLSAgICAgdm9pZCBzZXRTU0xWZXJzaW9uUmFuZ2Uob3JnLm1vemlsbGEu anNzLnNzbC5TU0xTb2NrZXQuU1NMVmVyc2lvblJhbmdlIHJhbmdlKQotLSAgICAgICAgdGhyb3dz IFNvY2tldEV4Y2VwdGlvbgotLSAgICB7Ci0rICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2Vw dGlvbiB7Ci0gICAgICAgICBzZXRTU0xWZXJzaW9uUmFuZ2UocmFuZ2UuZ2V0TWluRW51bSgpLCBy YW5nZS5nZXRNYXhFbnVtKCkpOwotICAgICB9Ci0gCi1AQCAtMTkyLDkzICsxODgsMTAxIEBACi0g ICAgICAqIFNldHMgU1NMIFZlcnNpb24gUmFuZ2UgZm9yIHRoaXMgc29ja2V0IHRvIHN1cHBvcnQg VExTIHYxLjEgYW5kIHYxLjIKLSAgICAgICovCi0gICAgIG5hdGl2ZSB2b2lkIHNldFNTTFZlcnNp b25SYW5nZShpbnQgbWluLCBpbnQgbWF4KQotLSAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlv bjsKLSsgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOwotIAotLSAgICAvKiogCi0r ICAgIC8qKgotICAgICAgKiBTZXRzIHRoZSBTU0wgb3B0aW9uIHNldHRpbmcgbW9kZSB2YWx1ZSB1 c2UgZm9yIG9wdGlvbnMKLSAgICAgICogdGhhdCBoYXZlIG1vcmUgdmFsdWVzIHRoYW4ganVzdCBl bmFibGUvZGlzYWJsZS4KLSAgICAgICovCi0gICAgIG5hdGl2ZSB2b2lkIHNldFNTTE9wdGlvbk1v ZGUoaW50IG9wdGlvbiwgaW50IG9wdGlvbjIpCi0tICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0 aW9uOyAKLSsgICAgICAgICAgICB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOwotIAotLSAgICAKLSAg ICAgLyogcmV0dXJuIDAgZm9yIG9wdGlvbiBkaXNhYmxlZCAxIGZvciBvcHRpb24gZW5hYmxlZC4g Ki8KLSAgICAgbmF0aXZlIGludCBnZXRTU0xPcHRpb24oaW50IG9wdGlvbikKLS0gICAgICAgIHRo cm93cyBTb2NrZXRFeGNlcHRpb247Ci0tICAgIAotKyAgICAgICAgICAgIHRocm93cyBTb2NrZXRF eGNlcHRpb247Ci0rCi0gICAgIHB1YmxpYyBTdHJpbmcgZ2V0U1NMT3B0aW9ucygpIHsKLSAgICAg ICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7Ci0gICAgICAgICB0cnkg ewotICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlNTTCBPcHRpb25zIGNvbmZpZ3VyZWQgZm9yIHRo aXMgU1NMU29ja2V0OiIpOwotLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9T U0wyIiArIAotLSAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9F TkFCTEVfU1NMMikgIT0gMCkKLS0gICAgICAgICAgICAgICAgPyAiPW9uIiA6ICAiPW9mZiIpKTsK LS0gICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9FTkFCTEVfU1NMMyIgICsgCi0tICAgICAg ICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX0VOQUJMRV9TU0wzKSAhPSAw KSAKLS0gICAgICAgICAgICAgICAgPyAiPW9uIiA6ICAiPW9mZiIpKTsKLS0gICAgICAgICAgICBi dWYuYXBwZW5kKCJcblNTTF9FTkFCTEVfVExTIiAgKyAKLS0gICAgICAgICAgICAgICAgKChnZXRT U0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX1RMUykgIT0gMCkgCi0tICAgICAgICAgICAg ICAgID8gIj1vbiIgOiAgIj1vZmYiKSk7Ci0tICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xf UkVRVUlSRV9DRVJUSUZJQ0FURSIpOyAKLSsgICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9F TkFCTEVfU1NMMiIgKwotKyAgICAgICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0 QmFzZS5TU0xfRU5BQkxFX1NTTDIpICE9IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ID8gIj1vbiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKLSsgICAg ICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9FTkFCTEVfU1NMMyIgKwotKyAgICAgICAgICAgICAg ICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX1NTTDMpICE9IDApCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAiPW9mZiIpKTsKLSsgICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9FTkFC TEVfVExTIiArCi0rICAgICAgICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNl LlNTTF9FTkFCTEVfVExTKSAhPSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICI9 b24iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1vZmYiKSk7Ci0rICAgICAgICAg ICAgYnVmLmFwcGVuZCgiXG5TU0xfUkVRVUlSRV9DRVJUSUZJQ0FURSIpOwotICAgICAgICAgICAg IHN3aXRjaCAoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX1JFUVVJUkVfQ0VSVElGSUNBVEUp KSB7Ci0tICAgICAgICAgICAgICAgIGNhc2UgMDoKLS0gICAgICAgICAgICAgICAgICAgIGJ1Zi5h cHBlbmQoIj1OZXZlciIpOwotLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAg ICAgICAgIGNhc2UgMToKLS0gICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1BbHdheXMi KTsKLS0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgICAgICBjYXNlIDI6 Ci0tICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9Rmlyc3QgSGFuZHNoYWtlIik7Ci0t ICAgICAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICAgICAgY2FzZSAzOgotLSAg ICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPU5vIEVycm9yIik7Ci0tICAgICAgICAgICAg ICAgICAgICBicmVhazsKLS0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLS0gICAgICAgICAgICAg ICAgICAgIGJ1Zi5hcHBlbmQoIj1SZXBvcnQgSlNTIEJ1ZyB0aGlzIG9wdGlvbiBoYXMgYSBzdGF0 dXMuIik7Ci0tICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIDA6 Ci0rICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1OZXZlciIpOwotKyAgICAgICAgICAgICAg ICBicmVhazsKLSsgICAgICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgICAgICAgIGJ1Zi5hcHBl bmQoIj1BbHdheXMiKTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgY2Fz ZSAyOgotKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9Rmlyc3QgSGFuZHNoYWtlIik7Ci0r ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGNhc2UgMzoKLSsgICAgICAgICAg ICAgICAgYnVmLmFwcGVuZCgiPU5vIEVycm9yIik7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1SZXBv cnQgSlNTIEJ1ZyB0aGlzIG9wdGlvbiBoYXMgYSBzdGF0dXMuIik7Ci0rICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgIH0gLy9lbmQgc3dpdGNoCi0tICAgICAgICAgICAgYnVmLmFw cGVuZCgiXG5TU0xfUkVRVUVTVF9DRVJUSUZJQ0FURSIgICsgCi0tICAgICAgICAgICAgICAgICgo Z2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX1JFUVVFU1RfQ0VSVElGSUNBVEUpICE9IDApIAot LSAgICAgICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOwotLSAgICAgICAgICAgIGJ1Zi5h cHBlbmQoIlxuU1NMX05PX0NBQ0hFIiAgKyAKLS0gICAgICAgICAgICAgICAgKChnZXRTU0xPcHRp b24oU29ja2V0QmFzZS5TU0xfTk9fQ0FDSEUpICE9IDApCi0tICAgICAgICAgICAgICAgID8gIj1v biIgOiAgIj1vZmYiKSk7Ci0tICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfUk9MTEJBQ0tf REVURUNUSU9OIiAgKyAKLS0gICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFz ZS5TU0xfUk9MTEJBQ0tfREVURUNUSU9OKSAhPSAwKQotLSAgICAgICAgICAgICAgICA/ICI9b24i IDogICI9b2ZmIikpOwotLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX05PX1NURVBfRE9X TiIgICsgCi0tICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX05P X1NURVBfRE9XTikgIT0gMCkKLS0gICAgICAgICAgICAgICAgPyAiPW9uIiA6ICAiPW9mZiIpKTsK LS0gICAgICAgICAgICBidWYuYXBwZW5kKCJcblNTTF9FTkFCTEVfRkRYIiAgKyAKLS0gICAgICAg ICAgICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX0ZEWCkgIT0gMCkK LS0gICAgICAgICAgICAgICAgPyAiPW9uIiA6ICAiPW9mZiIpKTsKLS0gICAgICAgICAgICBidWYu YXBwZW5kKCJcblNTTF9WMl9DT01QQVRJQkxFX0hFTExPIiAgKyAKLS0gICAgICAgICAgICAgICAg KChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfVjJfQ09NUEFUSUJMRV9IRUxMTykgIT0gMCkg Ci0tICAgICAgICAgICAgICAgID8gIj1vbiIgOiAgIj1vZmYiKSk7Ci0tICAgICAgICAgICAgYnVm LmFwcGVuZCgiXG5TU0xfRU5BQkxFX1NFU1NJT05fVElDS0VUUyIgICsKLS0gICAgICAgICAgICAg ICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfRU5BQkxFX1NFU1NJT05fVElDS0VUUykK LS0gICAgICAgICAgICAgICAgIT0gMCkgPyAiPW9uIiA6ICAiPW9mZiIpKTsKLSsgICAgICAgICAg ICBidWYuYXBwZW5kKCJcblNTTF9SRVFVRVNUX0NFUlRJRklDQVRFIiArCi0rICAgICAgICAgICAg ICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9SRVFVRVNUX0NFUlRJRklDQVRF KSAhPSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICI9b24iCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDogIj1vZmYiKSk7Ci0rICAgICAgICAgICAgYnVmLmFwcGVuZCgi XG5TU0xfTk9fQ0FDSEUiICsKLSsgICAgICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNv Y2tldEJhc2UuU1NMX05PX0NBQ0hFKSAhPSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/ICI9b24iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1vZmYiKSk7Ci0rICAg ICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfUk9MTEJBQ0tfREVURUNUSU9OIiArCi0rICAgICAg ICAgICAgICAgICAgICAoKGdldFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9ST0xMQkFDS19ERVRF Q1RJT04pICE9IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKLSsgICAgICAgICAgICBidWYuYXBw ZW5kKCJcblNTTF9OT19TVEVQX0RPV04iICsKLSsgICAgICAgICAgICAgICAgICAgICgoZ2V0U1NM T3B0aW9uKFNvY2tldEJhc2UuU1NMX05PX1NURVBfRE9XTikgIT0gMCkKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPyAiPW9uIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9 b2ZmIikpOwotKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9GRFgiICsKLSsg ICAgICAgICAgICAgICAgICAgICgoZ2V0U1NMT3B0aW9uKFNvY2tldEJhc2UuU1NMX0VOQUJMRV9G RFgpICE9IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIj1vbiIKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiAiPW9mZiIpKTsKLSsgICAgICAgICAgICBidWYuYXBwZW5k KCJcblNTTF9WMl9DT01QQVRJQkxFX0hFTExPIiArCi0rICAgICAgICAgICAgICAgICAgICAoKGdl dFNTTE9wdGlvbihTb2NrZXRCYXNlLlNTTF9WMl9DT01QQVRJQkxFX0hFTExPKSAhPSAwKQotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICA/ICI9b24iCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDogIj1vZmYiKSk7Ci0rICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG5TU0xfRU5BQkxF X1NFU1NJT05fVElDS0VUUyIgKwotKyAgICAgICAgICAgICAgICAgICAgKChnZXRTU0xPcHRpb24o U29ja2V0QmFzZS5TU0xfRU5BQkxFX1NFU1NJT05fVElDS0VUUykgIT0gMCkgPyAiPW9uIiA6ICI9 b2ZmIikpOwotICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuU1NMX0VOQUJMRV9SRU5FR09USUFU SU9OIik7Ci0gICAgICAgICAgICAgc3dpdGNoIChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xf RU5BQkxFX1JFTkVHT1RJQVRJT04pKSB7Ci0tICAgICAgICAgICAgICAgIGNhc2UgMDoKLS0gICAg ICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1TU0xfUkVORUdPVElBVEVfTkVWRVIiKTsKLS0g ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgICAgICBjYXNlIDE6Ci0tICAg ICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9U1NMX1JFTkVHT1RJQVRFX1VOUkVTVFJJQ1RF RCIpOwotLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgICAgIGNhc2Ug MjoKLS0gICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1TU0xfUkVORUdPVElBVEVfUkVR VUlSRVNfWFROIik7Ci0tICAgICAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICAg ICAgY2FzZSAzOgotLSAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVNTTF9SRU5FR09U SUFURV9UUkFOU0lUSU9OQUwiKTsKLS0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAg ICAgICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVJl cG9ydCBKU1MgQnVnIHRoaXMgb3B0aW9uIGhhcyBhIHN0YXR1cy4iKTsKLS0gICAgICAgICAgICAg ICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGNhc2UgMDoKLSsgICAgICAgICAgICAgICAgYnVm LmFwcGVuZCgiPVNTTF9SRU5FR09USUFURV9ORVZFUiIpOwotKyAgICAgICAgICAgICAgICBicmVh azsKLSsgICAgICAgICAgICBjYXNlIDE6Ci0rICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIj1T U0xfUkVORUdPVElBVEVfVU5SRVNUUklDVEVEIik7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgICAgIGNhc2UgMjoKLSsgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiPVNTTF9S RU5FR09USUFURV9SRVFVSVJFU19YVE4iKTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAg ICAgICAgICAgY2FzZSAzOgotKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9U1NMX1JFTkVH T1RJQVRFX1RSQU5TSVRJT05BTCIpOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAg ICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCI9UmVwb3J0IEpTUyBC dWcgdGhpcyBvcHRpb24gaGFzIGEgc3RhdHVzLiIpOwotKyAgICAgICAgICAgICAgICBicmVhazsK LSAgICAgICAgICAgICB9IC8vZW5kIHN3aXRjaAotLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxu U1NMX1JFUVVJUkVfU0FGRV9ORUdPVElBVElPTiIgICsKLS0gICAgICAgICAgICAgICAgKChnZXRT U0xPcHRpb24oU29ja2V0QmFzZS5TU0xfUkVRVUlSRV9TQUZFX05FR09USUFUSU9OKSAhPSAwKQot LSAgICAgICAgICAgICAgICA/ICI9b24iIDogICI9b2ZmIikpOwotKyAgICAgICAgICAgIGJ1Zi5h cHBlbmQoIlxuU1NMX1JFUVVJUkVfU0FGRV9ORUdPVElBVElPTiIgKwotKyAgICAgICAgICAgICAg ICAgICAgKChnZXRTU0xPcHRpb24oU29ja2V0QmFzZS5TU0xfUkVRVUlSRV9TQUZFX05FR09USUFU SU9OKSAhPSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICI9b24iCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogIj1vZmYiKSk7Ci0gCi0gICAgICAgICB9IGNhdGNoIChT b2NrZXRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxuZ2V0U1NMT3B0 aW9ucyBleGNlcHRpb24gIiArIGUuZ2V0TWVzc2FnZSgpKTsKLUBAIC0yOTIsMTkgKzI5NiwxOCBA QAotICAgICAgKiBvZiBjb25zdHJ1Y3Rpb24gdGhhbiBnZXRCeU5hbWUoKSwgYW5kIGl0IGlzIGZp bmFsLgotICAgICAgKgotICAgICAgKiBAcmV0dXJuIFRoZSBJbmV0QWRkcmVzcyBjb3JyZXNwb25k aW5nIHRvIHRoZSBnaXZlbiBpbnRlZ2VyLAotLSAgICAgKiAgICAgIG9yIDx0dD5udWxsPC90dD4g aWYgdGhlIEluZXRBZGRyZXNzIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC4KLSsgICAgICogICAg ICAgICBvciA8dHQ+bnVsbDwvdHQ+IGlmIHRoZSBJbmV0QWRkcmVzcyBjb3VsZCBub3QgYmUgY29u c3RydWN0ZWQuCi0gICAgICAqLwotLSAgICBwcml2YXRlIHN0YXRpYyBJbmV0QWRkcmVzcwotLSAg ICBjb252ZXJ0SW50VG9JbmV0QWRkcmVzcyhpbnQgaW50QWRkcikgewotKyAgICBwcml2YXRlIHN0 YXRpYyBJbmV0QWRkcmVzcyBjb252ZXJ0SW50VG9JbmV0QWRkcmVzcyhpbnQgaW50QWRkcikgewot ICAgICAgICAgSW5ldEFkZHJlc3MgaW47Ci0gICAgICAgICBpbnRbXSBhZGRyID0gbmV3IGludFs0 XTsKLSAgICAgICAgIGFkZHJbMF0gPSAoKGludEFkZHIgPj4+IDI0KSAmIDB4ZmYpOwotICAgICAg ICAgYWRkclsxXSA9ICgoaW50QWRkciA+Pj4gMTYpICYgMHhmZik7Ci0tICAgICAgICBhZGRyWzJd ID0gKChpbnRBZGRyID4+PiAgOCkgJiAweGZmKTsKLS0gICAgICAgIGFkZHJbM10gPSAoKGludEFk ZHIgICAgICAgKSAmIDB4ZmYpOwotKyAgICAgICAgYWRkclsyXSA9ICgoaW50QWRkciA+Pj4gOCkg JiAweGZmKTsKLSsgICAgICAgIGFkZHJbM10gPSAoKGludEFkZHIpICYgMHhmZik7Ci0gICAgICAg ICB0cnkgewotICAgICAgICAgICAgIGluID0gSW5ldEFkZHJlc3MuZ2V0QnlOYW1lKAotLSAgICAg ICAgICAgICAgICBhZGRyWzBdICsgIi4iICsgYWRkclsxXSArICIuIiArIGFkZHJbMl0gKyAiLiIg KyBhZGRyWzNdICk7Ci0rICAgICAgICAgICAgICAgICAgICBhZGRyWzBdICsgIi4iICsgYWRkclsx XSArICIuIiArIGFkZHJbMl0gKyAiLiIgKyBhZGRyWzNdKTsKLSAgICAgICAgIH0gY2F0Y2ggKGph dmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICBpbiA9IG51bGw7 Ci0gICAgICAgICB9Ci1AQCAtMzEyLDEyICszMTUsMTMgQEAKLSAgICAgfQotIAotICAgICBwcml2 YXRlIG5hdGl2ZSBieXRlW10gZ2V0TG9jYWxBZGRyZXNzQnl0ZUFycmF5TmF0aXZlKCkgdGhyb3dz IFNvY2tldEV4Y2VwdGlvbjsKLSsKLSAgICAgcHJpdmF0ZSBuYXRpdmUgYnl0ZVtdIGdldFBlZXJB ZGRyZXNzQnl0ZUFycmF5TmF0aXZlKCkgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbjsKLSsKLSAgICAg LyoqCi0gICAgICAqIEByZXR1cm4gdGhlIEluZXRBZGRyZXNzIG9mIHRoZSBwZWVyIGVuZCBvZiB0 aGUgc29ja2V0LgotICAgICAgKi8KLS0gICAgSW5ldEFkZHJlc3MgZ2V0SW5ldEFkZHJlc3MoKQot LSAgICB7Ci0rICAgIEluZXRBZGRyZXNzIGdldEluZXRBZGRyZXNzKCkgewotICAgICAgICAgdHJ5 IHsKLSAgICAgICAgICAgICBieXRlW10gYWRkcmVzcyA9IGdldFBlZXJBZGRyZXNzQnl0ZUFycmF5 TmF0aXZlKCk7Ci0gCi1AQCAtMzI2LDE0ICszMzAsMTUgQEAKLSAgICAgICAgICAgICB0cnkgewot IAotICAgICAgICAgICAgICAgICBpQWRkciA9IEluZXRBZGRyZXNzLmdldEJ5QWRkcmVzcyhhZGRy ZXNzKTsKLS0gICAgICAgICAgICB9ICAgY2F0Y2goVW5rbm93bkhvc3RFeGNlcHRpb24gZSkgewot KyAgICAgICAgICAgIH0gY2F0Y2ggKFVua25vd25Ib3N0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAg ICAgICB9Ci0gCi0gICAgICAgICAgICAgcmV0dXJuIGlBZGRyOwotLSAgICAgICAgfSBjYXRjaChT b2NrZXRFeGNlcHRpb24gZSkgewotKyAgICAgICAgfSBjYXRjaCAoU29ja2V0RXhjZXB0aW9uIGUp IHsKLSAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgIH0KLSAgICAgfQotKwotICAg ICBwcml2YXRlIG5hdGl2ZSBpbnQgZ2V0UGVlckFkZHJlc3NOYXRpdmUoKSB0aHJvd3MgU29ja2V0 RXhjZXB0aW9uOwotIAotICAgICAvKioKLUBAIC0zNDgsMjAgKzM1MywyMSBAQAotICAgICAgICAg ICAgIHRyeSB7Ci0gCi0gICAgICAgICAgICAgICAgIGxBZGRyID0gSW5ldEFkZHJlc3MuZ2V0QnlB ZGRyZXNzKGFkZHJlc3MpOwotLSAgICAgICAgICAgIH0gICBjYXRjaChVbmtub3duSG9zdEV4Y2Vw dGlvbiBlKSB7Ci0rICAgICAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gZSkg ewotICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICByZXR1cm4gbEFkZHI7Ci0tICAgICAg ICB9IGNhdGNoKFNvY2tldEV4Y2VwdGlvbiBlKSB7Ci0rICAgICAgICB9IGNhdGNoIChTb2NrZXRF eGNlcHRpb24gZSkgewotICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgfQotICAg ICB9Ci0rCi0gICAgIHByaXZhdGUgbmF0aXZlIGludCBnZXRMb2NhbEFkZHJlc3NOYXRpdmUoKSB0 aHJvd3MgU29ja2V0RXhjZXB0aW9uOwotIAotICAgICBwdWJsaWMgaW50IGdldExvY2FsUG9ydCgp IHsKLSAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgcmV0dXJuIGdldExvY2FsUG9ydE5hdGl2 ZSgpOwotLSAgICAgICAgfSBjYXRjaChTb2NrZXRFeGNlcHRpb24gZSkgewotKyAgICAgICAgfSBj YXRjaCAoU29ja2V0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg ICAgIH0KLSAgICAgfQotQEAgLTM2OSwxOCArMzc1LDE2IEBACi0gICAgIHByaXZhdGUgbmF0aXZl IGludCBnZXRMb2NhbFBvcnROYXRpdmUoKSB0aHJvd3MgU29ja2V0RXhjZXB0aW9uOwotIAotICAg ICB2b2lkIHJlcXVpcmVDbGllbnRBdXRoKGJvb2xlYW4gcmVxdWlyZSwgYm9vbGVhbiBvblJlZG8p Ci0tICAgICAgICAgICAgdGhyb3dzIFNvY2tldEV4Y2VwdGlvbgotLSAgICB7Ci0tICAgICAgICBp ZiggcmVxdWlyZSAmJiAhcmVxdWVzdGluZ0NsaWVudEF1dGggKSB7Ci0rICAgICAgICAgICAgdGhy b3dzIFNvY2tldEV4Y2VwdGlvbiB7Ci0rICAgICAgICBpZiAocmVxdWlyZSAmJiAhcmVxdWVzdGlu Z0NsaWVudEF1dGgpIHsKLSAgICAgICAgICAgICByZXF1ZXN0Q2xpZW50QXV0aCh0cnVlKTsKLSAg ICAgICAgIH0KLSAgICAgICAgIHNldFNTTE9wdGlvbihTU0xfUkVRVUlSRV9DRVJUSUZJQ0FURSwg cmVxdWlyZSA/IChvblJlZG8gPyAxIDogMikgOiAwKTsKLSAgICAgfQotIAotICAgICB2b2lkIHJl cXVpcmVDbGllbnRBdXRoKGludCBtb2RlKQotLSAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNl cHRpb24KLS0gICAgewotLSAgICAgICAgaWYobW9kZSA+IDAgJiYgIXJlcXVlc3RpbmdDbGllbnRB dXRoICkgewotKyAgICAgICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb24gewotKyAgICAgICAg aWYgKG1vZGUgPiAwICYmICFyZXF1ZXN0aW5nQ2xpZW50QXV0aCkgewotICAgICAgICAgICAgIHJl cXVlc3RDbGllbnRBdXRoKHRydWUpOwotICAgICAgICAgfQotICAgICAgICAgc2V0U1NMT3B0aW9u TW9kZShTb2NrZXRCYXNlLlNTTF9SRVFVSVJFX0NFUlRJRklDQVRFLCBtb2RlKTsKLUBAIC0zOTAs NTIgKzM5NCw1MiBAQAotICAgICAgKiBTZXRzIHRoZSBuaWNrbmFtZSBvZiB0aGUgY2VydGlmaWNh dGUgdG8gdXNlIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24uCi0gICAgICAqLwotICAgICBwdWJs aWMgdm9pZCBzZXRDbGllbnRDZXJ0Tmlja25hbWUoU3RyaW5nIG5pY2spIHRocm93cyBTb2NrZXRF eGNlcHRpb24gewotLSAgICAgIHRyeSB7Ci0tICAgICAgICBzZXRDbGllbnRDZXJ0KCBDcnlwdG9N YW5hZ2VyLmdldEluc3RhbmNlKCkuZmluZENlcnRCeU5pY2tuYW1lKG5pY2spICk7Ci0tICAgICAg fSBjYXRjaChDcnlwdG9NYW5hZ2VyLk5vdEluaXRpYWxpemVkRXhjZXB0aW9uIG5pZSkgewotLSAg ICAgICAgdGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigiQ3J5cHRvTWFuYWdlciBub3QgaW5pdGlh bGl6ZWQiKTsKLS0gICAgICB9IGNhdGNoKE9iamVjdE5vdEZvdW5kRXhjZXB0aW9uIG9uZmUpIHsK LS0gICAgICAgIHRocm93IG5ldyBTb2NrZXRFeGNlcHRpb24oIk9iamVjdCBub3QgZm91bmQ6ICIg KyBvbmZlKTsKLS0gICAgICB9IGNhdGNoKFRva2VuRXhjZXB0aW9uIHRlKSB7Ci0tICAgICAgICB0 aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJUb2tlbiBFeGNlcHRpb246ICIgKyB0ZSk7Ci0tICAg ICAgfQotKyAgICAgICAgdHJ5IHsKLSsgICAgICAgICAgICBzZXRDbGllbnRDZXJ0KENyeXB0b01h bmFnZXIuZ2V0SW5zdGFuY2UoKS5maW5kQ2VydEJ5Tmlja25hbWUobmljaykpOwotKyAgICAgICAg fSBjYXRjaCAoQ3J5cHRvTWFuYWdlci5Ob3RJbml0aWFsaXplZEV4Y2VwdGlvbiBuaWUpIHsKLSsg ICAgICAgICAgICB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJDcnlwdG9NYW5hZ2VyIG5vdCBp bml0aWFsaXplZCIpOwotKyAgICAgICAgfSBjYXRjaCAoT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24g b25mZSkgewotKyAgICAgICAgICAgIHRocm93IG5ldyBTb2NrZXRFeGNlcHRpb24oIk9iamVjdCBu b3QgZm91bmQ6ICIgKyBvbmZlKTsKLSsgICAgICAgIH0gY2F0Y2ggKFRva2VuRXhjZXB0aW9uIHRl KSB7Ci0rICAgICAgICAgICAgdGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigiVG9rZW4gRXhjZXB0 aW9uOiAiICsgdGUpOwotKyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIG5hdGl2ZSB2b2lkIHNl dENsaWVudENlcnQob3JnLm1vemlsbGEuanNzLmNyeXB0by5YNTA5Q2VydGlmaWNhdGUgY2VydCkK LS0gICAgICAgIHRocm93cyBTb2NrZXRFeGNlcHRpb247Ci0rICAgICAgICAgICAgdGhyb3dzIFNv Y2tldEV4Y2VwdGlvbjsKLSAKLSAgICAgdm9pZCB1c2VDYWNoZShib29sZWFuIGIpIHRocm93cyBT b2NrZXRFeGNlcHRpb24gewotICAgICAgICAgc2V0U1NMT3B0aW9uKFNTTF9OT19DQUNIRSwgIWIp OwotICAgICB9Ci0gCi0gICAgIHN0YXRpYyBUaHJvd2FibGUgcHJvY2Vzc0V4Y2VwdGlvbnMoVGhy b3dhYmxlIHRvcEV4Y2VwdGlvbiwKLS0gICAgICAgIFRocm93YWJsZSBib3R0b21FeGNlcHRpb24p Ci0tICAgIHsKLS0gICAgICB0cnkgewotLSAgICAgICAgU3RyaW5nQnVmZmVyIHN0ckJ1ZjsKLS0g ICAgICAgIHN0ckJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoIHRvcEV4Y2VwdGlvbi50b1N0cmluZygp ICk7Ci0rICAgICAgICAgICAgVGhyb3dhYmxlIGJvdHRvbUV4Y2VwdGlvbikgewotKyAgICAgICAg dHJ5IHsKLSsgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc3RyQnVmOwotKyAgICAgICAgICAgIHN0 ckJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIodG9wRXhjZXB0aW9uLnRvU3RyaW5nKCkpOwotIAotLSAg ICAgICAgaWYoIGJvdHRvbUV4Y2VwdGlvbiAhPSBudWxsICkgewotLSAgICAgICAgICAgIHN0ckJ1 Zi5hcHBlbmQoIiAtLT4gIik7Ci0tICAgICAgICAgICAgc3RyQnVmLmFwcGVuZCggYm90dG9tRXhj ZXB0aW9uLnRvU3RyaW5nKCkgKTsKLSsgICAgICAgICAgICBpZiAoYm90dG9tRXhjZXB0aW9uICE9 IG51bGwpIHsKLSsgICAgICAgICAgICAgICAgc3RyQnVmLmFwcGVuZCgiIC0tPiAiKTsKLSsgICAg ICAgICAgICAgICAgc3RyQnVmLmFwcGVuZChib3R0b21FeGNlcHRpb24udG9TdHJpbmcoKSk7Ci0r ICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIENsYXNzIGV4Y2VwQ2xhc3MgPSB0b3BFeGNl cHRpb24uZ2V0Q2xhc3MoKTsKLSsgICAgICAgICAgICBDbGFzcyBzdHJpbmdDbGFzcyA9IGphdmEu bGFuZy5TdHJpbmcuY2xhc3M7Ci0rICAgICAgICAgICAgQ29uc3RydWN0b3IgY29ucyA9IGV4Y2Vw Q2xhc3MuZ2V0Q29uc3RydWN0b3IobmV3IENsYXNzW10geyBzdHJpbmdDbGFzcyB9KTsKLSsKLSsg ICAgICAgICAgICByZXR1cm4gKFRocm93YWJsZSkgY29ucy5uZXdJbnN0YW5jZShuZXcgT2JqZWN0 W10geyBzdHJCdWYudG9TdHJpbmcoKSB9KTsKLSsgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBl KSB7Ci0rICAgICAgICAgICAgQXNzZXJ0Lm5vdFJlYWNoZWQoIlByb2JsZW0gY29uc3RydWN0aW5n IGV4Y2VwdGlvbiBjb250YWluZXIiKTsKLSsgICAgICAgICAgICByZXR1cm4gdG9wRXhjZXB0aW9u OwotICAgICAgICAgfQotLQotLSAgICAgICAgQ2xhc3MgZXhjZXBDbGFzcyA9IHRvcEV4Y2VwdGlv bi5nZXRDbGFzcygpOwotLSAgICAgICAgQ2xhc3Mgc3RyaW5nQ2xhc3MgPSBqYXZhLmxhbmcuU3Ry aW5nLmNsYXNzOwotLSAgICAgICAgQ29uc3RydWN0b3IgY29ucyA9IGV4Y2VwQ2xhc3MuZ2V0Q29u c3RydWN0b3IobmV3IENsYXNzW10ge3N0cmluZ0NsYXNzfSk7Ci0tCi0tICAgICAgICByZXR1cm4g KFRocm93YWJsZSkgY29ucy5uZXdJbnN0YW5jZShuZXcgT2JqZWN0W10geyBzdHJCdWYudG9TdHJp bmcoKSB9KTsKLS0gICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlICkgewotLSAgICAgICAgQXNzZXJ0 Lm5vdFJlYWNoZWQoIlByb2JsZW0gY29uc3RydWN0aW5nIGV4Y2VwdGlvbiBjb250YWluZXIiKTsK LS0gICAgICAgIHJldHVybiB0b3BFeGNlcHRpb247Ci0tICAgICAgfQotICAgICB9Ci0gCi0gICAg IHN0YXRpYyBwcml2YXRlIGludCBzdXBwb3J0c0lQVjYgPSAtMTsKLSsKLSAgICAgc3RhdGljIGJv b2xlYW4gc3VwcG9ydHNJUFY2KCkgewotIAotLSAgICAgICAgaWYoc3VwcG9ydHNJUFY2ID49IDAp IHsKLS0gICAgICAgICAgICBpZihzdXBwb3J0c0lQVjYgPiAwKSB7Ci0rICAgICAgICBpZiAoc3Vw cG9ydHNJUFY2ID49IDApIHsKLSsgICAgICAgICAgICBpZiAoc3VwcG9ydHNJUFY2ID4gMCkgewot ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtNDQ0LDI4ICs0NDgsMjUgQEAKLSAKLSAg ICAgICAgIEVudW1lcmF0aW9uIG5ldEludGVyOwotICAgICAgICAgdHJ5IHsKLS0gICAgICAgICAg ICAgICAgIG5ldEludGVyID0gTmV0d29ya0ludGVyZmFjZS5nZXROZXR3b3JrSW50ZXJmYWNlcygp OwotLSAgICAgICAgfSAgY2F0Y2ggKFNvY2tldEV4Y2VwdGlvbiBlKSB7Ci0rICAgICAgICAgICAg bmV0SW50ZXIgPSBOZXR3b3JrSW50ZXJmYWNlLmdldE5ldHdvcmtJbnRlcmZhY2VzKCk7Ci0rICAg ICAgICB9IGNhdGNoIChTb2NrZXRFeGNlcHRpb24gZSkgewotIAotLSAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOwotKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLS0g ICAgICAgIHdoaWxlICggbmV0SW50ZXIuaGFzTW9yZUVsZW1lbnRzKCkgKQotLSAgICAgICAgewot LSAgICAgICAgICAgIE5ldHdvcmtJbnRlcmZhY2UgbmkgPSAoTmV0d29ya0ludGVyZmFjZSluZXRJ bnRlci5uZXh0RWxlbWVudCgpOwotKyAgICAgICAgd2hpbGUgKG5ldEludGVyLmhhc01vcmVFbGVt ZW50cygpKSB7Ci0rICAgICAgICAgICAgTmV0d29ya0ludGVyZmFjZSBuaSA9IChOZXR3b3JrSW50 ZXJmYWNlKSBuZXRJbnRlci5uZXh0RWxlbWVudCgpOwotICAgICAgICAgICAgIEVudW1lcmF0aW9u IGFkZHJzID0gbmkuZ2V0SW5ldEFkZHJlc3NlcygpOwotLSAgICAgICAgICAgIHdoaWxlICggYWRk cnMuaGFzTW9yZUVsZW1lbnRzKCkgKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAg IE9iamVjdCBvID0gYWRkcnMubmV4dEVsZW1lbnQoKTsKLS0gICAgICAgICAgICAgICAgIGlmICgg by5nZXRDbGFzcygpID09IEluZXRBZGRyZXNzLmNsYXNzIHx8Ci0tICAgICAgICAgICAgICAgICAg ICAgby5nZXRDbGFzcygpID09IEluZXQ0QWRkcmVzcy5jbGFzcyB8fAotLSAgICAgICAgICAgICAg ICAgICAgIG8uZ2V0Q2xhc3MoKSA9PSBJbmV0NkFkZHJlc3MuY2xhc3MgKQotLSAgICAgICAgICAg ICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgICBJbmV0QWRkcmVzcyBpYWRkciA9IChJbmV0 QWRkcmVzcykgbzsKLS0gICAgICAgICAgICAgICAgICAgICAgaWYoby5nZXRDbGFzcygpID09IElu ZXQ2QWRkcmVzcy5jbGFzcykgewotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNJ UFY2ID0gMTsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotLSAgICAg ICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgd2hp bGUgKGFkZHJzLmhhc01vcmVFbGVtZW50cygpKSB7Ci0rICAgICAgICAgICAgICAgIE9iamVjdCBv ID0gYWRkcnMubmV4dEVsZW1lbnQoKTsKLSsgICAgICAgICAgICAgICAgaWYgKG8uZ2V0Q2xhc3Mo KSA9PSBJbmV0QWRkcmVzcy5jbGFzcyB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgIG8uZ2V0 Q2xhc3MoKSA9PSBJbmV0NEFkZHJlc3MuY2xhc3MgfHwKLSsgICAgICAgICAgICAgICAgICAgICAg ICBvLmdldENsYXNzKCkgPT0gSW5ldDZBZGRyZXNzLmNsYXNzKSB7Ci0rICAgICAgICAgICAgICAg ICAgICBJbmV0QWRkcmVzcyBpYWRkciA9IChJbmV0QWRkcmVzcykgbzsKLSsgICAgICAgICAgICAg ICAgICAgIGlmIChvLmdldENsYXNzKCkgPT0gSW5ldDZBZGRyZXNzLmNsYXNzKSB7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgc3VwcG9ydHNJUFY2ID0gMTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHN1cHBvcnRzSVBWNiA9 IDA7Ci0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyICJFbmRpIFMuIERld2F0YSIgPGVkZXdh dGFAcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTA5MTU0ODI0IC03MjAwCi0jICAgICAgU2F0IE9jdCAy OCAwMzo0MDoyNCAyMDE3ICswMjAwCi0jIE5vZGUgSUQgY2EyYzJmY2ZhZjIwN2Y4N2MzYzY5ZTQ5 M2YyYjMwZmQwYTA4OGU5NQotIyBQYXJlbnQgIDgzN2M3OTQ3NjExMGVjZDRiZjZiNTA3ZmFhZDUw ZWRiOWVlZDdlN2UKLUZpeGVkIFNvY2tldEJhc2Uuc2V0Q2xpZW50Q2VydE5pY2tuYW1lKCkgZXhj ZXB0aW9uIGhhbmRsaW5nLgotUHJldmlvdXNseSB0aGUgU29ja2V0QmFzZS5zZXRDbGllbnRDZXJ0 Tmlja25hbWUoKSB3b3VsZCBjYXRjaAotdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBhbmQgdGhyb3cg YSBTb2NrZXRFeGNlcHRpb24gaW5zdGVhZC4KLVRoZSBvcmlnaW5hbCBzdGFjayB0cmFjZSB3YXMg bG9zdCBzaW5jZSBTb2NrZXRFeGNlcHRpb24gZG9lcyBub3QKLXN1cHBvcnQgY2hhaW5pbmcuCi0K LVRoZSBjb2RlIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHRocm93IGEgUnVudGltZUV4Y2VwdGlvbiBp bnN0ZWFkCi1hbmQgY2hhaW4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gVGhpcyB3YXkgdGhlIG9y aWdpbmFsIHN0YWNrCi10cmFjZSBjYW4gYmUgcHJlc2VydmVkIHRvIGhlbHAgdHJvdWJsZXNob290 aW5nLgotCi1odHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4 MDU3Ci0KLWRpZmYgLS1naXQgYS9vcmcvbW96aWxsYS9qc3Mvc3NsL1NvY2tldEJhc2UuamF2YSBi L29yZy9tb3ppbGxhL2pzcy9zc2wvU29ja2V0QmFzZS5qYXZhCi0tLS0gYS9vcmcvbW96aWxsYS9q c3Mvc3NsL1NvY2tldEJhc2UuamF2YQotKysrIGIvb3JnL21vemlsbGEvanNzL3NzbC9Tb2NrZXRC YXNlLmphdmEKLUBAIC00LDE3ICs0LDIxIEBACi0gCi0gcGFja2FnZSBvcmcubW96aWxsYS5qc3Mu c3NsOwotIAotLWltcG9ydCBqYXZhLm5ldC4qOwotK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9u OwotK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcjsKLStpbXBvcnQgamF2YS5u ZXQuSW5ldDRBZGRyZXNzOwotK2ltcG9ydCBqYXZhLm5ldC5JbmV0NkFkZHJlc3M7Ci0raW1wb3J0 IGphdmEubmV0LkluZXRBZGRyZXNzOwotK2ltcG9ydCBqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNl OwotIGltcG9ydCBqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb247Ci0taW1wb3J0IGphdmEuaW8uKjsK LS1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLS1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsK LStpbXBvcnQgamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb247Ci0gaW1wb3J0IGphdmEudXRp bC5FbnVtZXJhdGlvbjsKLS1pbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7Ci0t aW1wb3J0IG9yZy5tb3ppbGxhLmpzcy51dGlsLkFzc2VydDsKLSsKLSBpbXBvcnQgb3JnLm1vemls bGEuanNzLkNyeXB0b01hbmFnZXI7Ci0gaW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5jcnlwdG8uT2Jq ZWN0Tm90Rm91bmRFeGNlcHRpb247Ci0gaW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5jcnlwdG8uVG9r ZW5FeGNlcHRpb247Ci0raW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5jcnlwdG8uWDUwOUNlcnRpZmlj YXRlOwotK2ltcG9ydCBvcmcubW96aWxsYS5qc3MudXRpbC5Bc3NlcnQ7Ci0gCi0gY2xhc3MgU29j a2V0QmFzZSB7Ci0gCi1AQCAtMzk1LDEzICszOTksMTggQEAKLSAgICAgICovCi0gICAgIHB1Ymxp YyB2b2lkIHNldENsaWVudENlcnROaWNrbmFtZShTdHJpbmcgbmljaykgdGhyb3dzIFNvY2tldEV4 Y2VwdGlvbiB7Ci0gICAgICAgICB0cnkgewotLSAgICAgICAgICAgIHNldENsaWVudENlcnQoQ3J5 cHRvTWFuYWdlci5nZXRJbnN0YW5jZSgpLmZpbmRDZXJ0QnlOaWNrbmFtZShuaWNrKSk7Ci0rICAg ICAgICAgICAgQ3J5cHRvTWFuYWdlciBjbSA9IENyeXB0b01hbmFnZXIuZ2V0SW5zdGFuY2UoKTsK LSsgICAgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydCA9IGNtLmZpbmRDZXJ0QnlOaWNrbmFt ZShuaWNrKTsKLSsgICAgICAgICAgICBzZXRDbGllbnRDZXJ0KGNlcnQpOwotKwotICAgICAgICAg fSBjYXRjaCAoQ3J5cHRvTWFuYWdlci5Ob3RJbml0aWFsaXplZEV4Y2VwdGlvbiBuaWUpIHsKLS0g ICAgICAgICAgICB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJDcnlwdG9NYW5hZ2VyIG5vdCBp bml0aWFsaXplZCIpOwotKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKG5p ZSk7Ci0rCi0gICAgICAgICB9IGNhdGNoIChPYmplY3ROb3RGb3VuZEV4Y2VwdGlvbiBvbmZlKSB7 Ci0tICAgICAgICAgICAgdGhyb3cgbmV3IFNvY2tldEV4Y2VwdGlvbigiT2JqZWN0IG5vdCBmb3Vu ZDogIiArIG9uZmUpOwotKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKG9u ZmUpOwotKwotICAgICAgICAgfSBjYXRjaCAoVG9rZW5FeGNlcHRpb24gdGUpIHsKLS0gICAgICAg ICAgICB0aHJvdyBuZXcgU29ja2V0RXhjZXB0aW9uKCJUb2tlbiBFeGNlcHRpb246ICIgKyB0ZSk7 Ci0rICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odGUpOwotICAgICAgICAg fQotICAgICB9Ci0gCgpkaWZmIC0tZ2l0IGEvanNzLVBCRS1wYWRkZWQtYmxvY2stY2lwaGVyLWVu aGFuY2VtZW50cy5wYXRjaCBiL2pzcy1QQkUtcGFkZGVkLWJsb2NrLWNpcGhlci1lbmhhbmNlbWVu dHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNDNlYzUuLjAwMDAwMDAK LS0tIGEvanNzLVBCRS1wYWRkZWQtYmxvY2stY2lwaGVyLWVuaGFuY2VtZW50cy5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDYyMCArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2Vy IEZyYXNlciBUd2VlZGFsZTxmdHdlZWRhbGVAcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTA0ODk0MTYz IDI1MjAwCi0jICAgICAgRnJpIFNlcCAwOCAxMTowOToyMyAyMDE3IC0wNzAwCi0jIE5vZGUgSUQg MzYyOWI1OThhOWNlNzNlODNjNzg5NjQwN2UzY2E4MjBmNjM4Mzc1MAotIyBQYXJlbnQgIGVlYzE1 NTE4ZmQ2MWYxZDk4OGMyNWI0ZGU1ODk1NTU3OTZmOWU2NWYKLUJ1ZyAxMzcwNzc4IFBCRSBhbmQg cGFkZGVkIGJsb2NrIGNpcGhlciBlbmhhbmNlbWVudHMgYW5kIGZpeGVzIC0KLSAgcGF0Y2gganNz LWZ0d2VlZGFsLTAwMDYtUEJFS2V5R2VuUGFyYW1zLWFsbG93LXNwZWNpZnlpbmctZW5jcnlwdGlv bi1hbGdvcml0aC5wYXRjaAotCi1BbGxvdyBzcGVjaWZ5aW5nIGFuIHRhcmdldCBlbmNyeXB0aW9u IGFsZ29yaXRobSBpbiBQQkVLZXlHZW5QYXJhbXM7Ci0gaWYgdGhlIFBCRSBhbGdvcml0aG0gZG9l cyBub3QgaW1wbHkgYSBwYXJ0aWN1bGFyIGNpcGhlciwgdGhpcyBpcyBuZWVkZWQKLSB0byBkZXRl cm1pbmUgdGhlIHNpemUgb2YgdGhlIGtleSB0byBnZW5lcmF0ZQotCi1jZnUgZm9yIGZ0d2VlZGFs ZQotCi1kaWZmIC1yIGVlYzE1NTE4ZmQ2MSAtciAzNjI5YjU5OGE5Y2Ugb3JnL21vemlsbGEvanNz L2NyeXB0by9QQkVLZXlHZW5QYXJhbXMuamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL2NyeXB0 by9QQkVLZXlHZW5QYXJhbXMuamF2YQlGcmkgU2VwIDAxIDE2OjE1OjU0IDIwMTcgLTA3MDAKLSsr KyBiL29yZy9tb3ppbGxhL2pzcy9jcnlwdG8vUEJFS2V5R2VuUGFyYW1zLmphdmEJRnJpIFNlcCAw OCAxMTowOToyMyAyMDE3IC0wNzAwCi1AQCAtMTMsNiArMTMsNyBAQAotICAgICBwcml2YXRlIFBh c3N3b3JkIHBhc3M7Ci0gICAgIHByaXZhdGUgYnl0ZVtdIHNhbHQ7Ci0gICAgIHByaXZhdGUgaW50 IGl0ZXJhdGlvbnM7Ci0rICAgIHByaXZhdGUgRW5jcnlwdGlvbkFsZ29yaXRobSBlbmNyeXB0aW9u QWxnb3JpdGhtID0gRW5jcnlwdGlvbkFsZ29yaXRobS5ERVMzX0NCQzsKLSAKLSAgICAgcHJpdmF0 ZSBQQkVLZXlHZW5QYXJhbXMoKSB7IH0KLSAKLUBAIC00MCw3ICs0MSw4IEBACi0gICAgIH0KLSAK LSAgICAgLyoqCi0tICAgICAqIENyZWF0ZXMgUEJFIHBhcmFtZXRlcnMuCi0rICAgICAqIENyZWF0 ZXMgUEJFIHBhcmFtZXRlcnMgdXNpbmcgZGVmYXVsdCBlbmNyeXB0aW9uIGFsZ29yaXRobQotKyAg ICAgKiAoREVTM19FREUzX0NCQykuCi0gICAgICAqCi0gICAgICAqIEBwYXJhbSBwYXNzIFRoZSBw YXNzd29yZC4gSXQgd2lsbCBiZSBjbG9uZWQsIHNvIHRoZQotICAgICAgKiAgICAgIGNhbGxlciBp cyBzdGlsbCByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcgaXQuIEl0IG11c3Qgbm90IGJlIG51bGwu Ci1AQCAtNjAsNiArNjIsMzMgQEAKLSAgICAgfQotIAotICAgICAvKioKLSsgICAgICogQ3JlYXRl cyBQQkUgcGFyYW1ldGVycyB1c2luZyBkZWZhdWx0IGVuY3J5cHRpb24gYWxnb3JpdGhtCi0rICAg ICAqIChERVMzX0VERTNfQ0JDKS4KLSsgICAgICoKLSsgICAgICogQHBhcmFtIHBhc3MgVGhlIHBh c3N3b3JkLiBJdCB3aWxsIGJlIGNsb25lZCwgc28gdGhlCi0rICAgICAqICAgICAgY2FsbGVyIGlz IHN0aWxsIHJlc3BvbnNpYmxlIGZvciBjbGVhcmluZyBpdC4gSXQgbXVzdCBub3QgYmUgbnVsbC4K LSsgICAgICogQHBhcmFtIHNhbHQgVGhlIHNhbHQgZm9yIHRoZSBQQkUgYWxnb3JpdGhtLiBXaWxs IDxiPm5vdDwvYj4gYmUgY2xvbmVkLgotKyAgICAgKiAgICAgIE11c3Qgbm90IGJlIG51bGwuIEl0 IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvCi0rICAgICAqICAgICAgdXNl IHRoZSByaWdodCBzYWx0IGxlbmd0aCBmb3IgdGhlIGFsZ29yaXRobS4gTW9zdCBhbGdvcml0aG1z Ci0rICAgICAqICAgICAgdXNlIDggYnl0ZXMgb2Ygc2FsdC4KLSsgICAgICogQHBhcmFtIGl0ZXJh dGlvbnMgVGhlIGl0ZXJhdGlvbiBjb3VudCBmb3IgdGhlIFBCRSBhbGdvcml0aG0uCi0rICAgICAq IEBwYXJhbSBlbmNBbGcgVGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtLiAgVGhpcyBpcyB1c2VkIHdp dGggU09NRQotKyAgICAgKiAgICAgIFBCRSBhbGdvcml0aG1zIGZvciBkZXRlcm1pbmluZyB0aGUg S0RGIG91dHB1dCBsZW5ndGguCi0rICAgICAqLwotKyAgICBwdWJsaWMgUEJFS2V5R2VuUGFyYW1z KAotKyAgICAgICAgICAgIGNoYXJbXSBwYXNzLCBieXRlW10gc2FsdCwgaW50IGl0ZXJhdGlvbnMs Ci0rICAgICAgICAgICAgRW5jcnlwdGlvbkFsZ29yaXRobSBlbmNBbGcpIHsKLSsgICAgICAgIGlm IChwYXNzID09IG51bGwgfHwgc2FsdCA9PSBudWxsKSB7Ci0rICAgICAgICAgICAgdGhyb3cgbmV3 IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7Ci0rICAgICAgICB9Ci0rICAgICAgICB0aGlzLnBhc3Mg PSBuZXcgUGFzc3dvcmQoKGNoYXJbXSkgcGFzcy5jbG9uZSgpKTsKLSsgICAgICAgIHRoaXMuc2Fs dCA9IHNhbHQ7Ci0rICAgICAgICB0aGlzLml0ZXJhdGlvbnMgPSBpdGVyYXRpb25zOwotKyAgICAg ICAgaWYgKGVuY0FsZyAhPSBudWxsKQotKyAgICAgICAgICAgIHRoaXMuZW5jcnlwdGlvbkFsZ29y aXRobSA9IGVuY0FsZzsKLSsgICAgfQotKwotKyAgICAvKioKLSAgICAgICogUmV0dXJucyBhIDxi PnJlZmVyZW5jZTwvYj4gdG8gdGhlIHBhc3N3b3JkLCBub3QgYSBjb3B5LgotICAgICAgKi8KLSAg ICAgcHVibGljIFBhc3N3b3JkIGdldFBhc3N3b3JkKCkgewotQEAgLTgxLDYgKzExMCwxNCBAQAot ICAgICB9Ci0gCi0gICAgIC8qKgotKyAgICAgKiBUaGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gaXMg dXNlZCB3aXRoIFNPTUUgUEJFIGFsZ29yaXRobXMgZm9yCi0rICAgICAqIGRldGVybWluaW5nIHRo ZSBLREYgb3V0cHV0IGxlbmd0aC4KLSsgICAgICovCi0rICAgIHB1YmxpYyBFbmNyeXB0aW9uQWxn b3JpdGhtIGdldEVuY3J5cHRpb25BbGdvcml0aG0oKSB7Ci0rICAgICAgICByZXR1cm4gZW5jcnlw dGlvbkFsZ29yaXRobTsKLSsgICAgfQotKwotKyAgICAvKioKLSAgICAgICogQ2xlYXJzIHRoZSBw YXNzd29yZC4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhpcyBvYmplY3QgaXMgbm8KLSAg ICAgICogbG9uZ2VyIG5lZWRlZCBzbyB0aGUgcGFzc3dvcmQgaXMgbm90IGxlZnQgYXJvdW5kIGlu IG1lbW9yeS4KLSAgICAgICovCi1kaWZmIC1yIGVlYzE1NTE4ZmQ2MSAtciAzNjI5YjU5OGE5Y2Ug b3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExS2V5R2VuZXJhdG9yLmMKLS0tLSBhL29yZy9tb3pp bGxhL2pzcy9wa2NzMTEvUEsxMUtleUdlbmVyYXRvci5jCUZyaSBTZXAgMDEgMTY6MTU6NTQgMjAx NyAtMDcwMAotKysrIGIvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExS2V5R2VuZXJhdG9yLmMJ RnJpIFNlcCAwOCAxMTowOToyMyAyMDE3IC0wNzAwCi1AQCAtMjQ2LDkgKzI0Niw5IEBACi0gICoK LSAgKi8KLSBKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCi0tSmF2YV9vcmdfbW96aWxsYV9qc3Nf cGtjczExX1BLMTFLZXlHZW5lcmF0b3JfZ2VuZXJhdGVQQkUKLS0gICAgKEpOSUVudiAqZW52LCBq Y2xhc3MgY2xhenosIGpvYmplY3QgdG9rZW4sIGpvYmplY3QgYWxnLCBqYnl0ZUFycmF5IHBhc3NC QSwKLS0gICAgamJ5dGVBcnJheSBzYWx0QkEsIGppbnQgaXRlcmF0aW9uQ291bnQpCi0rSmF2YV9v cmdfbW96aWxsYV9qc3NfcGtjczExX1BLMTFLZXlHZW5lcmF0b3JfZ2VuZXJhdGVQQkUoCi0rICAg IEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGpvYmplY3QgdG9rZW4sIGpvYmplY3QgYWxnLCBq b2JqZWN0IGVuY0FsZywKLSsgICAgamJ5dGVBcnJheSBwYXNzQkEsIGpieXRlQXJyYXkgc2FsdEJB LCBqaW50IGl0ZXJhdGlvbkNvdW50KQotIHsKLSAgICAgUEsxMVNsb3RJbmZvICpzbG90PU5VTEw7 Ci0gICAgIFBLMTFTeW1LZXkgKnNrZXk9TlVMTDsKLUBAIC0yOTksMTIgKzI5OSwxNSBAQAotICAg ICAgICAgb2lkVGFnID0gSlNTX2dldE9pZFRhZ0Zyb21BbGcoZW52LCBhbGcpOwotICAgICAgICAg UFJfQVNTRVJUKG9pZFRhZyAhPSBTRUNfT0lEX1VOS05PV04pOwotIAotKyAgICAgICAgU0VDT2lk VGFnIGVuY0FsZ09pZFRhZyA9IEpTU19nZXRPaWRUYWdGcm9tQWxnKGVudiwgZW5jQWxnKTsKLSsg ICAgICAgIFBSX0FTU0VSVChlbmNBbGdPaWRUYWcgIT0gU0VDX09JRF9VTktOT1dOKTsKLSsKLSAg ICAgICAgIC8qIGNyZWF0ZSBhbGdpZCAqLwotICAgICAgICAgYWxnaWQgPSBQSzExX0NyZWF0ZVBC RVYyQWxnb3JpdGhtSUQoCi0gICAgICAgICAgICAgb2lkVGFnLAotLSAgICAgICAgICAgIFNFQ19P SURfREVTX0VERTNfQ0JDLAotKyAgICAgICAgICAgIGVuY0FsZ09pZFRhZywKLSAgICAgICAgICAg ICBTRUNfT0lEX0hNQUNfU0hBMSwKLS0gICAgICAgICAgICAxNjgvOCwKLSsgICAgICAgICAgICAw LAotICAgICAgICAgICAgIGl0ZXJhdGlvbkNvdW50LAotICAgICAgICAgICAgIHNhbHQpOwotIAot ZGlmZiAtciBlZWMxNTUxOGZkNjEgLXIgMzYyOWI1OThhOWNlIG9yZy9tb3ppbGxhL2pzcy9wa2Nz MTEvUEsxMUtleUdlbmVyYXRvci5qYXZhCi0tLS0gYS9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BL MTFLZXlHZW5lcmF0b3IuamF2YQlGcmkgU2VwIDAxIDE2OjE1OjU0IDIwMTcgLTA3MDAKLSsrKyBi L29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleUdlbmVyYXRvci5qYXZhCUZyaSBTZXAgMDgg MTE6MDk6MjMgMjAxNyAtMDcwMAotQEAgLTE3OCw4ICsxNzgsOSBAQAotICAgICAgICAgICAgIGJ5 dGVbXSBwd2J5dGVzPW51bGw7Ci0gICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAg cHdieXRlcyA9IGNoYXJUb0J5dGUuY29udmVydCgga2dwLmdldFBhc3N3b3JkKCkuZ2V0Q2hhcnMo KSApOwotLSAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVQQkUodG9rZW4sIGFsZ29yaXRo bSwgcHdieXRlcywKLS0gICAgICAgICAgICAgICAgICAgIGtncC5nZXRTYWx0KCksIGtncC5nZXRJ dGVyYXRpb25zKCkpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVQQkUoCi0rICAg ICAgICAgICAgICAgICAgICB0b2tlbiwgYWxnb3JpdGhtLCBrZ3AuZ2V0RW5jcnlwdGlvbkFsZ29y aXRobSgpLAotKyAgICAgICAgICAgICAgICAgICAgcHdieXRlcywga2dwLmdldFNhbHQoKSwga2dw LmdldEl0ZXJhdGlvbnMoKSk7Ci0gICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAg ICAgICAgaWYoIHB3Ynl0ZXMhPW51bGwgKSB7Ci0gICAgICAgICAgICAgICAgICAgICBQYXNzd29y ZC53aXBlQnl0ZXMocHdieXRlcyk7Ci1AQCAtMjk2LDcgKzI5Nyw5IEBACi0gICAgICAqICBiZSBu dWxsLgotICAgICAgKi8KLSAgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIFN5bW1ldHJpY0tleQot LSAgICBnZW5lcmF0ZVBCRShQSzExVG9rZW4gdG9rZW4sIEtleUdlbkFsZ29yaXRobSBhbGdvcml0 aG0sIGJ5dGVbXSBwYXNzLAotLSAgICAgICAgYnl0ZVtdIHNhbHQsIGludCBpdGVyYXRpb25Db3Vu dCkgdGhyb3dzIFRva2VuRXhjZXB0aW9uOwotKyAgICBnZW5lcmF0ZVBCRSgKLSsgICAgICAgIFBL MTFUb2tlbiB0b2tlbiwgS2V5R2VuQWxnb3JpdGhtIGFsZ29yaXRobSwgRW5jcnlwdGlvbkFsZ29y aXRobSBlbmNBbGcsCi0rICAgICAgICBieXRlW10gcGFzcywgYnl0ZVtdIHNhbHQsIGludCBpdGVy YXRpb25Db3VudCkKLSsgICAgICAgIHRocm93cyBUb2tlbkV4Y2VwdGlvbjsKLSAKLSB9Ci0jIEhH IGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEZyYXNlciBUd2VlZGFsZTxmdHdlZWRhbGVAcmVkaGF0 LmNvbT4KLSMgRGF0ZSAxNTA0ODk0NTI5IDI1MjAwCi0jICAgICAgRnJpIFNlcCAwOCAxMToxNToy OSAyMDE3IC0wNzAwCi0jIE5vZGUgSUQgYmFkYTE0MDlkMmJiNjdjZDkyYzNiN2MyOTJiOGJiNGFl NjM4ODUxMwotIyBQYXJlbnQgIDM2MjliNTk4YTljZTczZTgzYzc4OTY0MDdlM2NhODIwZjYzODM3 NTAKLUJ1ZyAxMzcwNzc4IFBCRSBhbmQgcGFkZGVkIGJsb2NrIGNpcGhlciBlbmhhbmNlbWVudHMg YW5kIGZpeGVzIC0KLXBhdGNoIGpzcy1mdHdlZWRhbC0wMDA3LVN1cHBvcnQtdGhlLUNLS19HRU5F UklDX1NFQ1JFVC1zeW1tZXRyaWMta2V5LXR5cGUucGF0Y2gKLVN1YmplY3Q6IFN1cHBvcnQgdGhl IENLS19HRU5FUklDX1NFQ1JFVCBzeW1tZXRyaWMga2V5IHR5cGUKLUZyb206IEZyYXNlciBUd2Vl ZGFsZSA8ZnR3ZWVkYWxAcmVkaGF0LmNvbT4KLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgotZm91 bmQgcGF0Y2ggYXQgYnl0ZSA4NzMKLW1lc3NhZ2U6Ci1TdXBwb3J0IHRoZSBDS0tfR0VORVJJQ19T RUNSRVQgc3ltbWV0cmljIGtleSB0eXBlCi1UaGUgTlNTIFBCS0RGMiBnZW5lcmF0aW9uIHByb2R1 Y2VzIGEga2V5IHdpdGggdGhlIENLS19HRU5FUklDX1NFQ1JFVAota2V5IHR5cGUuICBUaGUgdW5k ZXJseWluZyBQS0NTICMxMSBvYmplY3QgKmRvZXMqIHJlY29yZCB0aGUgaW50ZW5kZWQKLWVuY3J5 cHRpb24gYWxnb3JpdGhtIHRoYXQgd2FzIHNwZWNpZmllZCB3aGVuIGdlbmVyYXRpbmcgdGhlIGtl eSB2aWEKLVBLMTFfUEJFS2V5R2VuLCBidXQgdGhpcyBpbmZvcm1hdGlvbiBpcyBub3QgZXhwb3Nl ZCB2aWEgdGhlIFBLQ1MgIzExCi1pbnRlcmZhY2UuICBXaGVuIGluaXRpYWxpc2luZyBhIGNpcGhl ciwgSlNTIGNoZWNrcyB0aGUga2V5IHR5cGUKLWFnYWluc3QgdGhlIGVuY3J5cHRpb24gYWxnb3Jp dGhtIGFuZCBmYWlscyBpZiB0aGV5IGRvIG5vdCBtYXRjaCwKLXdoaWNoIGlzIGFsd2F5cyB0aGUg Y2FzZSB3aXRoIFBCS0RGMi1kZXJpdmVkIGtleXMuCi0KLVRvIHdvcmsgYXJvdW5kIHRoaXMgcHJv YmxlbSwgcHJvcGVybHkgcmVjb3JkIHRoZSBrZXkgdHlwZSBmb3IKLUNLS19HRU5FUklDX1NFQ1JF VCBrZXlzLCBhbmQgdXBkYXRlIHRoZSBjaXBoZXIgaW5pdGlhbGlzYXRpb24ga2V5Ci10eXBlIGNo ZWNrIHRvIGFsd2F5cyBhY2NlcHQgc3VjaCBrZXlzLgotCi1jZnUgZm9yIGZ0d2VlZGFsCi0KLWRp ZmYgLXIgMzYyOWI1OThhOWNlIC1yIGJhZGExNDA5ZDJiYiBvcmcvbW96aWxsYS9qc3MvcGtjczEx L0tleVR5cGUuamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL3BrY3MxMS9LZXlUeXBlLmphdmEJ RnJpIFNlcCAwOCAxMTowOToyMyAyMDE3IC0wNzAwCi0rKysgYi9vcmcvbW96aWxsYS9qc3MvcGtj czExL0tleVR5cGUuamF2YQlGcmkgU2VwIDA4IDExOjE1OjI5IDIwMTcgLTA3MDAKLUBAIC0yNDIs NCArMjQyLDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNIQTFfSE1BQyIKLSAg ICAgICAgICAgICAgICAgICAgICAgICApOwotIAotKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEtl eVR5cGUgR0VORVJJQ19TRUNSRVQgPQotKyAgICAgICAgbmV3IEtleVR5cGUobmV3IEFsZ29yaXRo bVtdIHsgfSwgIkdFTkVSSUNfU0VDUkVUIik7Ci0rCi0gfQotZGlmZiAtciAzNjI5YjU5OGE5Y2Ug LXIgYmFkYTE0MDlkMmJiIG9yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUNpcGhlci5qYXZhCi0t LS0gYS9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFDaXBoZXIuamF2YQlGcmkgU2VwIDA4IDEx OjA5OjIzIDIwMTcgLTA3MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUNpcGhl ci5qYXZhCUZyaSBTZXAgMDggMTE6MTU6MjkgMjAxNyAtMDcwMAotQEAgLTI0Myw4ICsyNDMsMTEg QEAKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIHRyeSB7Ci0tICAgICAgICAgICAgaWYoICgoUEsx MVN5bUtleSlrZXkpLmdldEtleVR5cGUoKSAhPQotLSAgICAgICAgICAgICAgICAgICAgS2V5VHlw ZS5nZXRLZXlUeXBlRnJvbUFsZ29yaXRobShhbGdvcml0aG0pICkgewotKyAgICAgICAgICAgIEtl eVR5cGUga2V5VHlwZSA9ICgoUEsxMVN5bUtleSkga2V5KS5nZXRLZXlUeXBlKCk7Ci0rICAgICAg ICAgICAgaWYgKAotKyAgICAgICAgICAgICAgICBrZXlUeXBlICE9IEtleVR5cGUuR0VORVJJQ19T RUNSRVQKLSsgICAgICAgICAgICAgICAgJiYga2V5VHlwZSAhPSBLZXlUeXBlLmdldEtleVR5cGVG cm9tQWxnb3JpdGhtKGFsZ29yaXRobSkKLSsgICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAg ICAgdGhyb3cgbmV3IEludmFsaWRLZXlFeGNlcHRpb24oIktleSBpcyBub3QgdGhlIHJpZ2h0IHR5 cGUgZm9yIisKLSAgICAgICAgICAgICAgICAgICAgICIgdGhpcyBhbGdvcml0aG06ICIgKyAoKFBL MTFTeW1LZXkpa2V5KS5nZXRLZXlUeXBlKCkgKyAiOiIgKyBLZXlUeXBlLmdldEtleVR5cGVGcm9t QWxnb3JpdGhtKGFsZ29yaXRobSkgKyI7Iik7Ci0gICAgICAgICAgICAgfQotZGlmZiAtciAzNjI5 YjU5OGE5Y2UgLXIgYmFkYTE0MDlkMmJiIG9yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVN5bUtl eS5jCi0tLS0gYS9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFTeW1LZXkuYwlGcmkgU2VwIDA4 IDExOjA5OjIzIDIwMTcgLTA3MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVN5 bUtleS5jCUZyaSBTZXAgMDggMTE6MTU6MjkgMjAxNyAtMDcwMAotQEAgLTMwNSw2ICszMDUsOSBA QAotICAgICAgICAgICBjYXNlIENLS19ERVMyOgotICAgICAgICAgICAgICB0eXBlRmllbGROYW1l ID0gREVTM19LRVlUWVBFX0ZJRUxEOwotICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAg Y2FzZSBDS0tfR0VORVJJQ19TRUNSRVQ6Ci0rICAgICAgICAgICAgIHR5cGVGaWVsZE5hbWUgPSBH RU5FUklDX1NFQ1JFVF9LRVlUWVBFX0ZJRUxEOwotKyAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBQUl9BU1NFUlQoUFJfRkFMU0UpOwotICAgICAg ICAgICAgIHR5cGVGaWVsZE5hbWUgPSBERVNfS0VZVFlQRV9GSUVMRDsKLWRpZmYgLXIgMzYyOWI1 OThhOWNlIC1yIGJhZGExNDA5ZDJiYiBvcmcvbW96aWxsYS9qc3MvdXRpbC9qYXZhX2lkcy5oCi0t LS0gYS9vcmcvbW96aWxsYS9qc3MvdXRpbC9qYXZhX2lkcy5oCUZyaSBTZXAgMDggMTE6MDk6MjMg MjAxNyAtMDcwMAotKysrIGIvb3JnL21vemlsbGEvanNzL3V0aWwvamF2YV9pZHMuaAlGcmkgU2Vw IDA4IDExOjE1OjI5IDIwMTcgLTA3MDAKLUBAIC04Nyw2ICs4Nyw3IEBACi0gI2RlZmluZSBSQzJf S0VZVFlQRV9GSUVMRCAiUkMyIgotICNkZWZpbmUgU0hBMV9ITUFDX0tFWVRZUEVfRklFTEQgIlNI QTFfSE1BQyIKLSAjZGVmaW5lIEFFU19LRVlUWVBFX0ZJRUxEICJBRVMiCi0rI2RlZmluZSBHRU5F UklDX1NFQ1JFVF9LRVlUWVBFX0ZJRUxEICJHRU5FUklDX1NFQ1JFVCIKLSAKLSAvKgotICAqIE5h dGl2ZVByb3h5Ci0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEZyYXNlciBUd2VlZGFsZTxm dHdlZWRhbGVAcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTA0ODk0ODgyIDI1MjAwCi0jICAgICAgRnJp IFNlcCAwOCAxMToyMToyMiAyMDE3IC0wNzAwCi0jIE5vZGUgSUQgODkwMjE2NTk5ZjIxZGY0YzZk MDc4MTU2MDRhYWFjNTI2ODIzYTg5MgotIyBQYXJlbnQgIGJhZGExNDA5ZDJiYjY3Y2Q5MmMzYjdj MjkyYjhiYjRhZTYzODg1MTMKLUJ1ZyAxMzcwNzc4IFBCRSBhbmQgcGFkZGVkIGJsb2NrIGNpcGhl ciBlbmhhbmNlbWVudHMgYW5kIGZpeGVzIC0KLXBhdGNoIGpzcy1mdHdlZWRhbC0wMDA4LVBLMTFD aXBoZXItaW1wcm92ZS1lcnJvci1yZXBvcnRpbmcucGF0Y2gKLVN1YmplY3Q6IFBLMTFDaXBoZXI6 IGltcHJvdmUgZXJyb3IgcmVwb3J0aW5nCi1Gcm9tOiBGcmFzZXIgVHdlZWRhbGUgPGZ0d2VlZGFs QHJlZGhhdC5jb20+Ci1tZXNzYWdlOgotUEsxMUNpcGhlcjogaW1wcm92ZSBlcnJvciByZXBvcnRp bmcKLQotY2Z1IGZvciBmdHdlZWRhbAotCi1kaWZmIC1yIGJhZGExNDA5ZDJiYiAtciA4OTAyMTY1 OTlmMjEgb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2lwaGVyLmMKLS0tLSBhL29yZy9tb3pp bGxhL2pzcy9wa2NzMTEvUEsxMUNpcGhlci5jCUZyaSBTZXAgMDggMTE6MTU6MjkgMjAxNyAtMDcw MAotKysrIGIvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2lwaGVyLmMJRnJpIFNlcCAwOCAx MToyMToyMiAyMDE3IC0wNzAwCi1AQCAtMTUyLDcgKzE1Miw5IEBACi0gICAgIC8qIGRvIHRoZSBv cGVyYXRpb24gKi8KLSAgICAgaWYoIFBLMTFfQ2lwaGVyT3AoY29udGV4dCwgb3V0YnVmLCAoaW50 Kikmb3V0bGVuLCBvdXRsZW4sCi0gICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIqKWluYnVmLCBp bmxlbikgIT0gU0VDU3VjY2VzcykgewotLSAgICAgICAgSlNTX3Rocm93TXNnKGVudiwgVE9LRU5f RVhDRVBUSU9OLCAiQ2lwaGVyIE9wZXJhdGlvbiBmYWlsZWQiKTsKLSsgICAgICAgIEpTU190aHJv d01zZ1ByRXJyQXJnKAotKyAgICAgICAgICAgIGVudiwgVE9LRU5fRVhDRVBUSU9OLCAiQ2lwaGVy IGNvbnRleHQgdXBkYXRlIGZhaWxlZCIsCi0rICAgICAgICAgICAgUFJfR2V0RXJyb3IoKSk7Ci0g ICAgICAgICBnb3RvIGZpbmlzaDsKLSAgICAgfQotICAgICBQUl9BU1NFUlQob3V0bGVuID49IDAp OwotQEAgLTIwOSw3ICsyMTEsOSBAQAotICAgICAvKiBwZXJmb3JtIHRoZSBmaW5hbGl6YXRpb24g Ki8KLSAgICAgc3RhdHVzID0gUEsxMV9EaWdlc3RGaW5hbChjb250ZXh0LCBvdXRCdWYsICZuZXdP dXRMZW4sIG91dExlbik7Ci0gICAgIGlmKCAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpICkgewotLSAg ICAgICAgSlNTX3Rocm93TXNnKGVudiwgVE9LRU5fRVhDRVBUSU9OLCAiQ2lwaGVyIG9wZXJhdGlv biBmYWlsZWQgb24gdG9rZW4iKTsKLSsgICAgICAgIEpTU190aHJvd01zZ1ByRXJyQXJnKAotKyAg ICAgICAgICAgIGVudiwgVE9LRU5fRVhDRVBUSU9OLCAiQ2lwaGVyIGNvbnRleHQgZmluYWxpemF0 aW9uIGZhaWxlZCIsCi0rICAgICAgICAgICAgUFJfR2V0RXJyb3IoKSk7Ci0gICAgICAgICBnb3Rv IGZpbmlzaDsKLSAgICAgfQotIAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBGcmFzZXIg VHdlZWRhbGU8ZnR3ZWVkYWxlQHJlZGhhdC5jb20+Ci0jIERhdGUgMTUwNDg5NTU1MiAyNTIwMAot IyAgICAgIEZyaSBTZXAgMDggMTE6MzI6MzIgMjAxNyAtMDcwMAotIyBOb2RlIElEIGQzOWU5YjM3 Mzc5OGVhOWQ2YWU3ZjM1MDg5YjA3MTQzODQ1YjIxMGUKLSMgUGFyZW50ICA4OTAyMTY1OTlmMjFk ZjRjNmQwNzgxNTYwNGFhYWM1MjY4MjNhODkyCi1CdWcgMTM3MDc3OCBQQkUgYW5kIHBhZGRlZCBi bG9jayBjaXBoZXIgZW5oYW5jZW1lbnRzIGFuZCBmaXhlcyAtCi1wYXRjaCBqc3MtZnR3ZWVkYWwt MDAwOS1VcGRhdGUtQUVTLUNCQy1QQUQtY2lwaGVyLWRlZmluaXRpb25zLnBhdGNoCi1TdWJqZWN0 OiBVcGRhdGUgQUVTLUNCQy1QQUQgY2lwaGVyIGRlZmluaXRpb25zCi1Gcm9tOiBGcmFzZXIgVHdl ZWRhbGUgPGZ0d2VlZGFsQHJlZGhhdC5jb20+Ci1tZXNzYWdlOgotVXBkYXRlIEFFUy1DQkMtUEFE IGNpcGhlciBkZWZpbml0aW9ucwotVGhlIEFFU197MTI4LDE5MiwyNTZ9X0NCQ19QQUQgRW5jcnlw dGlvbkFsZ29yaXRobSBkZWZpbml0aW9ucyBkZWNsYXJlCi10aGUgY29ycmVjdCBQS0NTICMxMSBj aXBoZXIgbWVjaGFuaXNtIGFuZCBwYWRkaW5nLCBidXQgZG8gbm90IGRlY2xhcmUKLXRoZSByZWxl dmFudCBPSURzLiAgVGhleSBhcmUgYWxzbyB1bnVzYWJsZSBhcyB0YXJnZXQgYWxnb3JpdGhtcyBp bgotUEJFIGtleSBnZW5lcmF0aW9uIGJlY2F1c2UgdGhleSBkZWNsYXJlIGEgUEsxMV9NRUNIIGlu c3RlYWQgb2YgYQotU0VDX09JRF9UQUcuCi0KLVVwZGF0ZSB0aGVzZSBhbGdvcml0aG1zIGRlZmlu aXRpb25zIHRvIGRlY2xhcmUgYSBTRUNfT0lEX1RBRyBpbnN0ZWFkCi1vZiBhIFBLMTFfTUVDSCAo SlNTX2dldE9pZFRhZ0Zyb21BbGcoKSB3aWxsIHN0aWxsIHJldHVybiB0aGUgY29ycmVjdAotbWVj aGFuaXNtKSBhbmQgZGVjbGFyZSB0aGUgYXNzb2NpYXRlZCBPSURzLgotCi1jZnUgZm9yIGZ0d2Vl ZGFsCi0KLWRpZmYgLXIgODkwMjE2NTk5ZjIxIC1yIGQzOWU5YjM3Mzc5OCBvcmcvbW96aWxsYS9q c3MvY3J5cHRvL0VuY3J5cHRpb25BbGdvcml0aG0uamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNz L2NyeXB0by9FbmNyeXB0aW9uQWxnb3JpdGhtLmphdmEJRnJpIFNlcCAwOCAxMToyMToyMiAyMDE3 IC0wNzAwCi0rKysgYi9vcmcvbW96aWxsYS9qc3MvY3J5cHRvL0VuY3J5cHRpb25BbGdvcml0aG0u amF2YQlGcmkgU2VwIDA4IDExOjMyOjMyIDIwMTcgLTA3MDAKLUBAIC0zNTksOCArMzU5LDEwIEBA Ci0gICAgICAgICBBRVNfUk9PVF9PSUQuc3ViQnJhbmNoKDIpLCAxMjgpOwotIAotICAgICBwdWJs aWMgc3RhdGljIGZpbmFsIEVuY3J5cHRpb25BbGdvcml0aG0KLS0gICAgQUVTXzEyOF9DQkNfUEFE ID0gbmV3IEVuY3J5cHRpb25BbGdvcml0aG0oQ0tNX0FFU19DQkNfUEFELCBBbGcuQUVTLCBNb2Rl LkNCQywKLS0gICAgICAgIFBhZGRpbmcuUEtDUzUsIElWUGFyYW1ldGVyU3BlY0NsYXNzZXMsIDE2 LCBudWxsLCAxMjgpOyAvLyBubyBvaWQKLSsgICAgQUVTXzEyOF9DQkNfUEFEID0gbmV3IEVuY3J5 cHRpb25BbGdvcml0aG0oU0VDX09JRF9BRVNfMTI4X0NCQywKLSsgICAgICAgIEFsZy5BRVMsIE1v ZGUuQ0JDLAotKyAgICAgICAgUGFkZGluZy5QS0NTNSwgSVZQYXJhbWV0ZXJTcGVjQ2xhc3Nlcywg MTYsCi0rICAgICAgICBBRVNfUk9PVF9PSUQuc3ViQnJhbmNoKDIpLCAxMjgpOwotICAgICAKLSAg ICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbmNyeXB0aW9uQWxnb3JpdGhtCi0gICAgIEFFU18xOTJf RUNCID0gbmV3IEVuY3J5cHRpb25BbGdvcml0aG0oU0VDX09JRF9BRVNfMTkyX0VDQiwKLUBAIC0z NzQsOCArMzc2LDEwIEBACi0gICAgICAgICBBRVNfUk9PVF9PSUQuc3ViQnJhbmNoKDIyKSwgMTky KTsKLSAgICAgCi0gICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRW5jcnlwdGlvbkFsZ29yaXRobQot LSAgICBBRVNfMTkyX0NCQ19QQUQgPSBuZXcgRW5jcnlwdGlvbkFsZ29yaXRobShDS01fQUVTX0NC Q19QQUQsIEFsZy5BRVMsIE1vZGUuQ0JDLAotLSAgICAgICAgUGFkZGluZy5QS0NTNSwgSVZQYXJh bWV0ZXJTcGVjQ2xhc3NlcywgMTYsIG51bGwsIDE5Mik7IC8vIG5vIG9pZAotKyAgICBBRVNfMTky X0NCQ19QQUQgPSBuZXcgRW5jcnlwdGlvbkFsZ29yaXRobShTRUNfT0lEX0FFU18xOTJfQ0JDLAot KyAgICAgICAgQWxnLkFFUywgTW9kZS5DQkMsCi0rICAgICAgICBQYWRkaW5nLlBLQ1M1LCBJVlBh cmFtZXRlclNwZWNDbGFzc2VzLCAxNiwKLSsgICAgICAgIEFFU19ST09UX09JRC5zdWJCcmFuY2go MjIpLCAxOTIpOwotIAotICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVuY3J5cHRpb25BbGdvcml0 aG0KLSAgICAgQUVTXzI1Nl9FQ0IgPSBuZXcgRW5jcnlwdGlvbkFsZ29yaXRobShTRUNfT0lEX0FF U18yNTZfRUNCLAotQEAgLTM5Myw2ICszOTcsOSBAQAotICAgICAgICAgUGFkZGluZy5QS0NTNSwg SVZQYXJhbWV0ZXJTcGVjQ2xhc3NlcywgMTYsIG51bGwsIDI1Nik7IC8vIG5vIG9pZAotICAgICAK LSAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbmNyeXB0aW9uQWxnb3JpdGhtCi0tICAgIEFFU18y NTZfQ0JDX1BBRCA9IEFFU19DQkNfUEFEOwotKyAgICBBRVNfMjU2X0NCQ19QQUQgPSBuZXcgRW5j cnlwdGlvbkFsZ29yaXRobShTRUNfT0lEX0FFU18yNTZfQ0JDLAotKyAgICAgICAgQWxnLkFFUywg TW9kZS5DQkMsCi0rICAgICAgICBQYWRkaW5nLlBLQ1M1LCBJVlBhcmFtZXRlclNwZWNDbGFzc2Vz LCAxNiwKLSsgICAgICAgIEFFU19ST09UX09JRC5zdWJCcmFuY2goNDIpLCAyNTYpOwotICAgICAK LSB9Ci0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEZyYXNlciBUd2VlZGFsZTxmdHdlZWRh bGVAcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTA0ODk2NjIxIDI1MjAwCi0jICAgICAgRnJpIFNlcCAw OCAxMTo1MDoyMSAyMDE3IC0wNzAwCi0jIE5vZGUgSUQgMGI4YTZlODRiNmM3MzY3NDNmMjE4NGIy Yjg1OGZkYTZiZTc0MDU0NAotIyBQYXJlbnQgIGQzOWU5YjM3Mzc5OGVhOWQ2YWU3ZjM1MDg5YjA3 MTQzODQ1YjIxMGUKLUJ1ZyAxMzcwNzc4IFBCRSBhbmQgcGFkZGVkIGJsb2NrIGNpcGhlciBlbmhh bmNlbWVudHMgYW5kIGZpeGVzIC0KLXBhdGNoIGpzcy1mdHdlZWRhbC0wMDEwLVBLMTFDaXBoZXIt dXNlLXBhZC1tZWNoYW5pc20tZm9yLWFsZ29yaXRobXMtdGhhdC11c2UucGF0Y2gKLVN1YmplY3Q6 IFBLMTFDaXBoZXI6IHVzZSBwYWQgbWVjaGFuaXNtIGZvciBhbGdvcml0aG1zIHRoYXQgdXNlIHBh ZGRpbmcKLUZyb206IEZyYXNlciBUd2VlZGFsZSA8ZnR3ZWVkYWxAcmVkaGF0LmNvbT4KLW1lc3Nh Z2U6Ci1QSzExQ2lwaGVyOiB1c2UgcGFkIG1lY2hhbmlzbSBmb3IgYWxnb3JpdGhtcyB0aGF0IHVz ZSBwYWRkaW5nCi1UaGUgUEsxMUNpcGhlciBpbXBsZW1lbnRhdGlvbiwgd2hlbiBpbml0aWFsaXNp bmcgYSBjaXBoZXIgY29udGV4dCwKLXVzZXMgSlNTX2dldFBLMTFNZWNoRnJvbUFsZygpIHRvIHJl dHJpZXZlIHRoZSBQS0NTICMxMSBtZWNoYW5pc20gdG8KLXVzZS4gIFdoZW4gYSBKU1MgRW5jcnlw dGlvbkFsZ29yaXRobSB1c2VzIGEgU0VDX09JRF9UQUcsIHRoaXMgd2lsbAotcmV0dXJuIHRoZSBu b24tcGFkZGVkIG1lY2hhbmlzbS4gIFRoZW4sIGlmIHRoZSBzaXplIG9mIHRoZSBkYXRhIGlzCi1u b3QgYSBtdWx0aXBsZSBvZiB0aGUgY2lwaGVyIGJsb2NrIHNpemUsIGEgcGFkZGluZyBlcnJvciBv Y2N1cnMuCi0KLVdoZW4gdGhlIEVuY3J5cHRpb25BbGdvcml0aG0gaW5kaWNhdGVzIHRoYXQgcGFk ZGluZyBpcyB0byBiZSB1c2VkLAotY2FsbCBQSzExX0dldFBhZE1lY2hhbmlzbSgpIG9uIHRoZSBy ZXN1bHQgb2YgSlNTX2dldFBLMTFNZWNoRnJvbUFsZygpCi10byBnZXQgdGhlIHBhZGRpbmcgdmFy aWFudCBvZiB0aGUgbWVjaGFuaXNtLgotCi1jZnUgZm9yIGZ0d2VlZGFsCi0KLWRpZmYgLXIgZDM5 ZTliMzczNzk4IC1yIDBiOGE2ZTg0YjZjNyBvcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFDaXBo ZXIuYwotLS0tIGEvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2lwaGVyLmMJRnJpIFNlcCAw OCAxMTozMjozMiAyMDE3IC0wNzAwCi0rKysgYi9vcmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFD aXBoZXIuYwlGcmkgU2VwIDA4IDExOjUwOjIxIDIwMTcgLTA3MDAKLUBAIC0yNCwxNiArMjQsMTYg QEAKLSBKTklFWFBPUlQgam9iamVjdCBKTklDQUxMCi0gSmF2YV9vcmdfbW96aWxsYV9qc3NfcGtj czExX1BLMTFDaXBoZXJfaW5pdENvbnRleHQKLSAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xh enosIGpib29sZWFuIGVuY3J5cHQsIGpvYmplY3Qga2V5T2JqLAotLSAgICAgICAgam9iamVjdCBh bGdPYmosIGpieXRlQXJyYXkgaXZCQSkKLSsgICAgICAgIGpvYmplY3QgYWxnT2JqLCBqYnl0ZUFy cmF5IGl2QkEsIGpib29sZWFuIHBhZGRlZCkKLSB7Ci0gICAgIHJldHVybiBKYXZhX29yZ19tb3pp bGxhX2pzc19wa2NzMTFfUEsxMUNpcGhlcl9pbml0Q29udGV4dFdpdGhLZXlCaXRzCi0tICAgICAg ICAoIGVudiwgY2xhenosIGVuY3J5cHQsIGtleU9iaiwgYWxnT2JqLCBpdkJBLCAwKTsKLSsgICAg ICAgICggZW52LCBjbGF6eiwgZW5jcnlwdCwga2V5T2JqLCBhbGdPYmosIGl2QkEsIDAsIHBhZGRl ZCk7Ci0gfQotIAotIEpOSUVYUE9SVCBqb2JqZWN0IEpOSUNBTEwKLSBKYXZhX29yZ19tb3ppbGxh X2pzc19wa2NzMTFfUEsxMUNpcGhlcl9pbml0Q29udGV4dFdpdGhLZXlCaXRzCi0gICAgIChKTklF bnYgKmVudiwgamNsYXNzIGNsYXp6LCBqYm9vbGVhbiBlbmNyeXB0LCBqb2JqZWN0IGtleU9iaiwK LS0gICAgICAgIGpvYmplY3QgYWxnT2JqLCBqYnl0ZUFycmF5IGl2QkEsIGppbnQga2V5Qml0cykK LSsgICAgICAgIGpvYmplY3QgYWxnT2JqLCBqYnl0ZUFycmF5IGl2QkEsIGppbnQga2V5Qml0cywg amJvb2xlYW4gcGFkZGVkKQotIHsKLSAgICAgQ0tfTUVDSEFOSVNNX1RZUEUgbWVjaDsKLSAgICAg UEsxMVN5bUtleSAqa2V5PU5VTEw7Ci1AQCAtNTMsNiArNTMsOSBAQAotICAgICAgICAgZ290byBm aW5pc2g7Ci0gICAgIH0KLSAKLSsgICAgaWYgKHBhZGRlZCkKLSsgICAgICAgIG1lY2ggPSBQSzEx X0dldFBhZE1lY2hhbmlzbShtZWNoKTsKLSsKLSAgICAgLyogZ2V0IG9wZXJhdGlvbiB0eXBlICov Ci0gICAgIGlmKCBlbmNyeXB0ICkgewotICAgICAgICAgb3AgPSBDS0FfRU5DUllQVDsKLWRpZmYg LXIgZDM5ZTliMzczNzk4IC1yIDBiOGE2ZTg0YjZjNyBvcmcvbW96aWxsYS9qc3MvcGtjczExL1BL MTFDaXBoZXIuamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExQ2lwaGVyLmph dmEJRnJpIFNlcCAwOCAxMTozMjozMiAyMDE3IC0wNzAwCi0rKysgYi9vcmcvbW96aWxsYS9qc3Mv cGtjczExL1BLMTFDaXBoZXIuamF2YQlGcmkgU2VwIDA4IDExOjUwOjIxIDIwMTcgLTA3MDAKLUBA IC05MCwxMCArOTAsMTMgQEAKLSAgICAgICAgIHN0YXRlID0gRU5DUllQVDsKLSAKLSAgICAgICAg IGlmKCBwYXJhbWV0ZXJzIGluc3RhbmNlb2YgUkMyUGFyYW1ldGVyU3BlYyApIHsKLS0gICAgICAg ICAgICBjb250ZXh0UHJveHkgPSBpbml0Q29udGV4dFdpdGhLZXlCaXRzKCB0cnVlLCBrZXksIGFs Z29yaXRobSwgSVYsCi0tICAgICAgICAgICAgICAgICgoUkMyUGFyYW1ldGVyU3BlYylwYXJhbWV0 ZXJzKS5nZXRFZmZlY3RpdmVLZXlCaXRzKCkgKTsKLSsgICAgICAgICAgICBjb250ZXh0UHJveHkg PSBpbml0Q29udGV4dFdpdGhLZXlCaXRzKAotKyAgICAgICAgICAgICAgICB0cnVlLCBrZXksIGFs Z29yaXRobSwgSVYsCi0rICAgICAgICAgICAgICAgICgoUkMyUGFyYW1ldGVyU3BlYylwYXJhbWV0 ZXJzKS5nZXRFZmZlY3RpdmVLZXlCaXRzKCksCi0rICAgICAgICAgICAgICAgIGFsZ29yaXRobS5p c1BhZGRlZCgpKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgY29udGV4dFByb3h5 ID0gaW5pdENvbnRleHQoIHRydWUsIGtleSwgYWxnb3JpdGhtLCBJViApOwotKyAgICAgICAgICAg IGNvbnRleHRQcm94eSA9IGluaXRDb250ZXh0KAotKyAgICAgICAgICAgICAgICB0cnVlLCBrZXks IGFsZ29yaXRobSwgSVYsIGFsZ29yaXRobS5pc1BhZGRlZCgpKTsKLSAgICAgICAgIH0KLSAgICAg fQotIAotQEAgLTExMiwxMCArMTE1LDEzIEBACi0gICAgICAgICBzdGF0ZSA9IERFQ1JZUFQ7Ci0g Ci0gICAgICAgICBpZiggcGFyYW1ldGVycyBpbnN0YW5jZW9mIFJDMlBhcmFtZXRlclNwZWMgKSB7 Ci0tICAgICAgICAgICAgY29udGV4dFByb3h5ID0gaW5pdENvbnRleHRXaXRoS2V5Qml0cyhmYWxz ZSwga2V5LCBhbGdvcml0aG0sIElWLAotLSAgICAgICAgICAgICAgICAoKFJDMlBhcmFtZXRlclNw ZWMpcGFyYW1ldGVycykuZ2V0RWZmZWN0aXZlS2V5Qml0cygpICk7Ci0rICAgICAgICAgICAgY29u dGV4dFByb3h5ID0gaW5pdENvbnRleHRXaXRoS2V5Qml0cygKLSsgICAgICAgICAgICAgICAgZmFs c2UsIGtleSwgYWxnb3JpdGhtLCBJViwKLSsgICAgICAgICAgICAgICAgKChSQzJQYXJhbWV0ZXJT cGVjKXBhcmFtZXRlcnMpLmdldEVmZmVjdGl2ZUtleUJpdHMoKSwKLSsgICAgICAgICAgICAgICAg YWxnb3JpdGhtLmlzUGFkZGVkKCkpOwotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBj b250ZXh0UHJveHkgPSBpbml0Q29udGV4dChmYWxzZSwga2V5LCBhbGdvcml0aG0sIElWKTsKLSsg ICAgICAgICAgICBjb250ZXh0UHJveHkgPSBpbml0Q29udGV4dCgKLSsgICAgICAgICAgICAgICAg ZmFsc2UsIGtleSwgYWxnb3JpdGhtLCBJViwgYWxnb3JpdGhtLmlzUGFkZGVkKCkpOwotICAgICAg ICAgfQotICAgICB9Ci0gCi1AQCAtMTgyLDEzICsxODgsMTMgQEAKLSAKLSAgICAgcHJpdmF0ZSBz dGF0aWMgbmF0aXZlIENpcGhlckNvbnRleHRQcm94eQotICAgICBpbml0Q29udGV4dChib29sZWFu IGVuY3J5cHQsIFN5bW1ldHJpY0tleSBrZXksIEVuY3J5cHRpb25BbGdvcml0aG0gYWxnLAotLSAg ICAgICAgICAgICAgICAgYnl0ZVtdIElWKQotKyAgICAgICAgICAgICAgICAgYnl0ZVtdIElWLCBi b29sZWFuIHBhZGRlZCkKLSAgICAgICAgIHRocm93cyBUb2tlbkV4Y2VwdGlvbjsKLSAKLSAgICAg Ly8gVGhpcyB2ZXJzaW9uIGFjY2VwdHMgdGhlIG51bWJlciBvZiBlZmZlY3RpdmUga2V5IGJpdHMg Zm9yIFJDMiBDQkMuCi0gICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBDaXBoZXJDb250ZXh0UHJv eHkKLSAgICAgaW5pdENvbnRleHRXaXRoS2V5Qml0cyhib29sZWFuIGVuY3J5cHQsIFN5bW1ldHJp Y0tleSBrZXksCi0tICAgICAgICAgICAgICAgIEVuY3J5cHRpb25BbGdvcml0aG0gYWxnLCBieXRl W10gSVYsIGludCBrZXlCaXRzKQotKyAgICAgICAgICAgICAgICBFbmNyeXB0aW9uQWxnb3JpdGht IGFsZywgYnl0ZVtdIElWLCBpbnQga2V5Qml0cywgYm9vbGVhbiBwYWRkZWQpCi0gICAgICAgICB0 aHJvd3MgVG9rZW5FeGNlcHRpb247Ci0gCi0gICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBieXRl W10KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgRnJhc2VyIFR3ZWVkYWxlPGZ0d2VlZGFs ZUByZWRoYXQuY29tPgotIyBEYXRlIDE1MDQ4OTY4MTYgMjUyMDAKLSMgICAgICBGcmkgU2VwIDA4 IDExOjUzOjM2IDIwMTcgLTA3MDAKLSMgTm9kZSBJRCBiM2I2NTNmYWVmODQ3NWFlMDNjNjcwNzY2 NDI5ZmQ0ZGZhYjM3YTVlCi0jIFBhcmVudCAgMGI4YTZlODRiNmM3MzY3NDNmMjE4NGIyYjg1OGZk YTZiZTc0MDU0NAotYnVnIDEzNzA3NzggUEJFIGFuZCBwYWRkZWQgYmxvY2sgY2lwaGVyIGVuaGFu Y2VtZW50cyBhbmQgZml4ZXMgLQotcGF0Y2gganNzLWZ0d2VlZGFsLTAwMTItMi1BZGQtbWV0aG9k LUVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLmNyZWF0ZVBCRVMyLnBhdGNoCi1TdWJqZWN0OiBBZGQg bWV0aG9kIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLmNyZWF0ZVBCRVMyCi1Gcm9tOiBGcmFzZXIg VHdlZWRhbGUgPGZ0d2VlZGFsQHJlZGhhdC5jb20+Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW4K LWZvdW5kIHBhdGNoIGF0IGJ5dGUgNDA0Ci1tZXNzYWdlOgotQWRkIG1ldGhvZCBFbmNyeXB0ZWRQ cml2YXRlS2V5SW5mby5jcmVhdGVQQkVTMgotVGhlIGNyZWF0ZVBCRSBtZXRob2QgZG9lcyBub3Qg c3VwcG9ydCBQQkVTMiAoaXQgaXMgbmVjZXNzYXJ5IHRvIGtub3cKLXRoZSBkZXNpcmVkIGVuY3J5 cHRlZCBhbGdvcml0aG0gdG8gZGVyaXZlIHRoZSBrZXkgYW5kIGJ1aWxkIHRoZQotcGFyYW1ldGVy cyBkYXRhKS4gIEFkZCB0aGUgY3JlYXRlUEJFUzIgbWV0aG9kLCB3aGljaCB1c2VzIFBCS0RGMiB0 bwotZGVyaXZlIHRoZSBzeW1tZXRyaWMga2V5IGFuZCBhbGxvd3MgdGhlIGNhbGxlciB0byBzcGVj aWZ5IHRoZQotZW5jcnlwdGlvbiBhbGdvcml0aG0uCi0KLWNmdSBmb3IgZnR3ZWVkYWwKLQotZGlm ZiAtciAwYjhhNmU4NGI2YzcgLXIgYjNiNjUzZmFlZjg0IG9yZy9tb3ppbGxhL2pzcy9wa2l4L3By aW1pdGl2ZS9FbmNyeXB0ZWRQcml2YXRlS2V5SW5mby5qYXZhCi0tLS0gYS9vcmcvbW96aWxsYS9q c3MvcGtpeC9wcmltaXRpdmUvRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uamF2YQlGcmkgU2VwIDA4 IDExOjUwOjIxIDIwMTcgLTA3MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9wa2l4L3ByaW1pdGl2 ZS9FbmNyeXB0ZWRQcml2YXRlS2V5SW5mby5qYXZhCUZyaSBTZXAgMDggMTE6NTM6MzYgMjAxNyAt MDcwMAotQEAgLTE1NSw2ICsxNTUsMTAwIEBACi0gCi0gCi0gICAgIC8qKgotKyAgICAgKiBFeHBv cnQgYSBwcml2YXRlIGtleSBpbiBQQkVTMiBmb3JtYXQsIHVzaW5nIGEgcmFuZG9tIFBCS0RGMiBz YWx0LgotKyAgICAgKgotKyAgICAgKiBUb2tlbiBtdXN0IHN1cHBvcnQgdGhlIENLTV9QS0NTNV9Q QktEMiBtZWNoYW5pc20uCi0rICAgICAqCi0rICAgICAqIEBwYXJhbSBzYWx0TGVuIExlbmd0aCBv ZiBzYWx0IGluIGJ5dGVzIChkZWZhdWx0OiAxNikKLSsgICAgICogQHBhcmFtIGtkZkl0ZXJhdGlv bnMgUEJLREYyIGl0ZXJhdGlvbnMgKGRlZmF1bHQ6IDIwMDApCi0rICAgICAqIEBwYXJhbSBlbmNB bGcgVGhlIHN5bW1ldHJpYyBlbmNyeXB0aW9uIGFsZ29yaXRobSBmb3IgZW5jaXBoZXJpbmcgdGhl Ci0rICAgICAqICAgICAgICAgICAgICAgcHJpdmF0ZSBrZXkuICBEZXRlcm1pbmVzIHRoZSBzaXpl IG9mIGRlcml2ZWQga2V5LgotKyAgICAgKiBAcGFyYW0gcHdkIFBhc3N3b3JkCi0rICAgICAqIEBw YXJhbSBjaGFyVG9CeXRlQ29udmVydGVyIFRoZSBtZWNoYW5pc20gZm9yIGNvbnZlcnRpbmcgdGhl IGNoYXJhY3RlcnMKLSsgICAgICogICAgICBpbiB0aGUgcGFzc3dvcmQgaW50byBieXRlcy4gIElm IG51bGwsIHRoZSBkZWZhdWx0IG1lY2hhbmlzbQotKyAgICAgKiAgICAgIHdpbGwgYmUgdXNlZCwg d2hpY2ggaXMgVVRGOC4KLSsgICAgICogQHBhcmFtIHByaXZhdGVLZXlJbmZvIFRoZSBlbmNvZGVk IFByaXZhdGVLZXlJbmZvIHRvIGJlIGVuY3J5cHRlZCBhbmQKLSsgICAgICogICAgICAgICAgICAg ICAgICAgICAgIHN0b3JlZCBpbiB0aGUgRW5jcnlwdGVkQ29udGVudEluZm8uCi0rICAgICAqLwot KyAgICBwdWJsaWMgc3RhdGljIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIGNyZWF0ZVBCRVMyKAot KyAgICAgICAgICAgIGludCBzYWx0TGVuLAotKyAgICAgICAgICAgIGludCBrZGZJdGVyYXRpb25z LAotKyAgICAgICAgICAgIEVuY3J5cHRpb25BbGdvcml0aG0gZW5jQWxnLAotKyAgICAgICAgICAg IFBhc3N3b3JkIHB3ZCwKLSsgICAgICAgICAgICBLZXlHZW5lcmF0b3IuQ2hhclRvQnl0ZUNvbnZl cnRlciBjaGFyVG9CeXRlQ29udmVydGVyLAotKyAgICAgICAgICAgIFByaXZhdGVLZXlJbmZvIHBy aXZhdGVLZXlJbmZvKQotKyAgICAgICAgdGhyb3dzIENyeXB0b01hbmFnZXIuTm90SW5pdGlhbGl6 ZWRFeGNlcHRpb24sIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiwKLSsgICAgICAgIEludmFsaWRL ZXlFeGNlcHRpb24sIEludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24sIFRva2VuRXhj ZXB0aW9uLAotKyAgICAgICAgQ2hhckNvbnZlcnNpb25FeGNlcHRpb24KLSsgICAgewotKyAgICAg ICAgaWYgKGVuY0FsZyA9PSBudWxsKQotKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJn dW1lbnRFeGNlcHRpb24oImVuY0FsZyBjYW5ub3QgYmUgbnVsbCIpOwotKyAgICAgICAgaWYgKHB3 ZCA9PSBudWxsKQotKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRp b24oInB3ZCBjYW5ub3QgYmUgbnVsbCIpOwotKyAgICAgICAgaWYgKHByaXZhdGVLZXlJbmZvID09 IG51bGwpCi0rICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigi cHJpdmF0ZUtleUluZm8gY2Fubm90IGJlIG51bGwiKTsKLSsKLSsgICAgICAgIGlmIChrZGZJdGVy YXRpb25zIDwgMSkKLSsgICAgICAgICAgICBrZGZJdGVyYXRpb25zID0gMjAwMDsKLSsgICAgICAg IGlmIChzYWx0TGVuIDwgMSkKLSsgICAgICAgICAgICBzYWx0TGVuID0gMTY7Ci0rCi0rICAgICAg ICB0cnkgewotKyAgICAgICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBQQktERjIgc2FsdAotKyAg ICAgICAgICAgIFNlY3VyZVJhbmRvbSByYW5kb20gPSBuZXcgU2VjdXJlUmFuZG9tKCk7Ci0rICAg ICAgICAgICAgYnl0ZSBzYWx0W10gPSBuZXcgYnl0ZVtzYWx0TGVuXTsKLSsgICAgICAgICAgICBy YW5kb20ubmV4dEJ5dGVzKHNhbHQpOwotKwotKyAgICAgICAgICAgIC8vIGRlcml2ZSBzeW1tZXRy aWMga2V5IGZyb20gcGFzc3BocmFzZSB1c2luZyBQQktERjIKLSsgICAgICAgICAgICBDcnlwdG9N YW5hZ2VyIGNtID0gQ3J5cHRvTWFuYWdlci5nZXRJbnN0YW5jZSgpOwotKyAgICAgICAgICAgIENy eXB0b1Rva2VuIHRva2VuID0gY20uZ2V0SW50ZXJuYWxDcnlwdG9Ub2tlbigpOwotKyAgICAgICAg ICAgIEtleUdlbmVyYXRvciBrZyA9IHRva2VuLmdldEtleUdlbmVyYXRvcigKLSsgICAgICAgICAg ICAgICAgUEJFQWxnb3JpdGhtLlBCRV9QS0NTNV9QQktERjIpOwotKyAgICAgICAgICAgIFBCRUtl eUdlblBhcmFtcyBwYmVrZ1BhcmFtcyA9IG5ldyBQQkVLZXlHZW5QYXJhbXMoCi0rICAgICAgICAg ICAgICAgIHB3ZC5nZXRDaGFycygpLCBzYWx0LCBrZGZJdGVyYXRpb25zLCBlbmNBbGcpOwotKyAg ICAgICAgICAgIGlmIChjaGFyVG9CeXRlQ29udmVydGVyICE9IG51bGwpCi0rICAgICAgICAgICAg ICAgIGtnLnNldENoYXJUb0J5dGVDb252ZXJ0ZXIoY2hhclRvQnl0ZUNvbnZlcnRlcik7Ci0rICAg ICAgICAgICAga2cuaW5pdGlhbGl6ZShwYmVrZ1BhcmFtcyk7Ci0rICAgICAgICAgICAgU3ltbWV0 cmljS2V5IHNrID0ga2cuZ2VuZXJhdGUoKTsKLSsKLSsgICAgICAgICAgICAvLyBlbmNyeXB0IFBy aXZhdGVLZXlJbmZvCi0rICAgICAgICAgICAgYnl0ZSBpdltdID0gbmV3IGJ5dGVbZW5jQWxnLmdl dEJsb2NrU2l6ZSgpXTsKLSsgICAgICAgICAgICByYW5kb20ubmV4dEJ5dGVzKGl2KTsKLSsgICAg ICAgICAgICBDaXBoZXIgY2lwaGVyID0gdG9rZW4uZ2V0Q2lwaGVyQ29udGV4dChlbmNBbGcpOwot KyAgICAgICAgICAgIGNpcGhlci5pbml0RW5jcnlwdChzaywgbmV3IElWUGFyYW1ldGVyU3BlYyhp dikpOwotKyAgICAgICAgICAgIGJ5dGVbXSBlbmNEYXRhID0gY2lwaGVyLmRvRmluYWwoQVNOMVV0 aWwuZW5jb2RlKHByaXZhdGVLZXlJbmZvKSk7Ci0rCi0rICAgICAgICAgICAgLy8gY29uc3RydWN0 IEtERiBBbGdvcml0aG1JZGVudGlmaWVyCi0rICAgICAgICAgICAgU0VRVUVOQ0UgcGFyYW1zS2Rm ID0gbmV3IFNFUVVFTkNFKCk7Ci0rICAgICAgICAgICAgcGFyYW1zS2RmLmFkZEVsZW1lbnQobmV3 IE9DVEVUX1NUUklORyhzYWx0KSk7Ci0rICAgICAgICAgICAgcGFyYW1zS2RmLmFkZEVsZW1lbnQo bmV3IElOVEVHRVIoKGxvbmcpIGtkZkl0ZXJhdGlvbnMpKTsKLSsgICAgICAgICAgICBwYXJhbXNL ZGYuYWRkRWxlbWVudChuZXcgSU5URUdFUigobG9uZykgc2suZ2V0TGVuZ3RoKCkpKTsKLSsgICAg ICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyIGFsZ0lkS2RmID0gbmV3IEFsZ29yaXRobUlkZW50 aWZpZXIoCi0rICAgICAgICAgICAgICAgIFBCRUFsZ29yaXRobS5QQkVfUEtDUzVfUEJLREYyLnRv T0lEKCksIHBhcmFtc0tkZik7Ci0rCi0rICAgICAgICAgICAgLy8gY29uc3RydWN0IGVuY3J5cHRp b24gQWxnb3JpdGhtSWRlbnRpZmllcgotKyAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIg YWxnSWRFbmMgPSBuZXcgQWxnb3JpdGhtSWRlbnRpZmllcigKLSsgICAgICAgICAgICAgICAgZW5j QWxnLnRvT0lEKCksIG5ldyBPQ1RFVF9TVFJJTkcoaXYpKTsKLSsKLSsgICAgICAgICAgICAvLyBj b25zdHJ1Y3QgImNvbXBvc2l0ZSIgUEJFUzIgQWxnb3JpdGhtSWRlbnRpZmllcgotKyAgICAgICAg ICAgIFNFUVVFTkNFIHBhcmFtc1BCRVMyID0gbmV3IFNFUVVFTkNFKCk7Ci0rICAgICAgICAgICAg cGFyYW1zUEJFUzIuYWRkRWxlbWVudChhbGdJZEtkZik7Ci0rICAgICAgICAgICAgcGFyYW1zUEJF UzIuYWRkRWxlbWVudChhbGdJZEVuYyk7Ci0rICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmll ciBhbGdJZFBCRVMyID0gbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoCi0rICAgICAgICAgICAgICAg IFBCRUFsZ29yaXRobS5QQkVfUEtDUzVfUEJFUzIudG9PSUQoKSwgcGFyYW1zUEJFUzIpOwotKwot KyAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbwotKyAgICAg ICAgICAgIHJldHVybiBuZXcgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8oYWxnSWRQQkVTMiwgbmV3 IE9DVEVUX1NUUklORyhlbmNEYXRhKSk7Ci0rICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQmxvY2tT aXplRXhjZXB0aW9uIGUpIHsKLSsgICAgICAgICAgICBBc3NlcnQubm90UmVhY2hlZCgiSWxsZWdh bEJsb2NrU2l6ZUV4Y2VwdGlvbiBpbiBFbmNyeXB0ZWRDb250ZW50SW5mby5jcmVhdGVQQkVTMiIp OwotKyAgICAgICAgfSBjYXRjaCAoQmFkUGFkZGluZ0V4Y2VwdGlvbiBlKSB7Ci0rICAgICAgICAg ICAgQXNzZXJ0Lm5vdFJlYWNoZWQoIkJhZFBhZGRpbmdFeGNlcHRpb24gaW4gRW5jcnlwdGVkQ29u dGVudEluZm8uY3JlYXRlUEJFUzIiKTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiBudWxs OyAvLyB1bnJlYWNoYWJsZQotKyAgICB9Ci0rCi0rCi0rICAgIC8qKgotICAgICAgKiBDcmVhdGVz IGEgbmV3IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLCB3aGVyZSB0aGUgZGF0YSBpcyBlbmNyeXB0 ZWQKLSAgICAgICogd2l0aCBhIHBhc3N3b3JkLWJhc2VkIGtleS0gCi0gICAgICAqICAgICAgIHdp dGggd3JhcHBpbmcvdW53cmFwcGluZyBoYXBwZW5pbmcgb24gdG9rZW4uCi0jIEhHIGNoYW5nZXNl dCBwYXRjaAotIyBVc2VyIEZyYXNlciBUd2VlZGFsZTxmdHdlZWRhbGVAcmVkaGF0LmNvbT4KLSMg RGF0ZSAxNTA0ODk2OTY0IDI1MjAwCi0jICAgICAgRnJpIFNlcCAwOCAxMTo1NjowNCAyMDE3IC0w NzAwCi0jIE5vZGUgSUQgODdkY2EwN2Y3NTI5NDYzMzk4NzM0ZDEyNzliY2ZkNzAyM2E0M2Q0Ywot IyBQYXJlbnQgIGIzYjY1M2ZhZWY4NDc1YWUwM2M2NzA3NjY0MjlmZDRkZmFiMzdhNWUKLUJ1ZyAx MzcwNzc4IFBCRSBhbmQgcGFkZGVkIGJsb2NrIGNpcGhlciBlbmhhbmNlbWVudHMgYW5kIGZpeGVz IC0KLXBhdGNoICBqc3MtZnR3ZWVkYWwtMDAxMy1JbXByb3ZlLWVycm9yLXJlcG9ydGluZy5wYXRj aAotU3ViamVjdDogSW1wcm92ZSBlcnJvciByZXBvcnRpbmcKLUZyb206IEZyYXNlciBUd2VlZGFs ZSA8ZnR3ZWVkYWxAcmVkaGF0LmNvbT4KLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgotZm91bmQg cGF0Y2ggYXQgYnl0ZSAxNTcKLW1lc3NhZ2U6Ci1JbXByb3ZlIGVycm9yIHJlcG9ydGluZwotCi1j ZnUgZm9yIGZ0d2VlZGFsCi0KLWRpZmYgLXIgYjNiNjUzZmFlZjg0IC1yIDg3ZGNhMDdmNzUyOSBv cmcvbW96aWxsYS9qc3MvcGtjczExL1BLMTFLZXlXcmFwcGVyLmMKLS0tLSBhL29yZy9tb3ppbGxh L2pzcy9wa2NzMTEvUEsxMUtleVdyYXBwZXIuYwlGcmkgU2VwIDA4IDExOjUzOjM2IDIwMTcgLTA3 MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMUtleVdyYXBwZXIuYwlGcmkgU2Vw IDA4IDExOjU2OjA0IDIwMTcgLTA3MDAKLUBAIC0yNTEsOSArMjUxLDcgQEAKLSAgICAgc3RhdHVz ID0gUEsxMV9XcmFwUHJpdktleShzbG90LCB3cmFwcGluZywgdG9CZVdyYXBwZWQsIG1lY2gsIHBh cmFtLAotICAgICAgICAgICAgICAgICAmd3JhcHBlZCwgTlVMTCAvKiB3aW5jeCAqLyApOwotICAg ICBpZihzdGF0dXMgIT0gU0VDU3VjY2VzcykgewotLSAgICAgICAgY2hhciBlcnJbMjU2XSA9IHsw fTsKLS0gICAgICAgIFBSX3NucHJpbnRmKGVyciwgMjU2LCAiV3JhcHBpbmcgb3BlcmF0aW9uIGZh aWxlZCBvbiB0b2tlbjolZCIsIFBSX0dldEVycm9yKCkpOwotLSAgICAgICAgSlNTX3Rocm93TXNn KGVudiwgVE9LRU5fRVhDRVBUSU9OLCBlcnIpOwotKyAgICAgICAgSlNTX3Rocm93TXNnUHJFcnIo ZW52LCBUT0tFTl9FWENFUFRJT04sICJXcmFwcGluZyBvcGVyYXRpb24gZmFpbGVkIG9uIHRva2Vu Iik7Ci0gICAgICAgICBnb3RvIGZpbmlzaDsKLSAgICAgfQotICAgICBQUl9BU1NFUlQod3JhcHBl ZC5sZW4+MCAmJiB3cmFwcGVkLmRhdGEhPU5VTEwpOwotQEAgLTQ1MCw4ICs0NDgsOCBAQAotICAg ICAgICAgICAgICAgICBhdHRyaWJzLCBudW1BdHRyaWJzLCBOVUxMIC8qd2luY3gqLyk7Ci0gICAg IGlmKCBwcml2ayA9PSBOVUxMICkgewotICAgICAgICAgY2hhciBlcnJbMjU2XSA9IHswfTsKLS0g ICAgICAgIFBSX3NucHJpbnRmKGVyciwgMjU2LCAiS2V5IFVud3JhcCBmYWlsZWQgb24gdG9rZW46 ZXJyb3I9JWQsIGtleVR5cGU9JWQiLCBQUl9HZXRFcnJvcigpLCBrZXlUeXBlKTsKLS0gICAgICAg IEpTU190aHJvd01zZyhlbnYsIFRPS0VOX0VYQ0VQVElPTiwgZXJyKTsKLSsgICAgICAgIFBSX3Nu cHJpbnRmKGVyciwgMjU2LCAiS2V5IFVud3JhcCBmYWlsZWQgb24gdG9rZW47IGtleVR5cGU9JWQi LCBrZXlUeXBlKTsKLSsgICAgICAgIEpTU190aHJvd01zZ1ByRXJyKGVudiwgVE9LRU5fRVhDRVBU SU9OLCBlcnIpOwotICAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgIH0KLSAgICAgICAgICAgICAg ICAgCi1kaWZmIC1yIGIzYjY1M2ZhZWY4NCAtciA4N2RjYTA3Zjc1Mjkgb3JnL21vemlsbGEvanNz L3BrY3MxMS9QSzExU3RvcmUuYwotLS0tIGEvb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExU3Rv cmUuYwlGcmkgU2VwIDA4IDExOjUzOjM2IDIwMTcgLTA3MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pz cy9wa2NzMTEvUEsxMVN0b3JlLmMJRnJpIFNlcCAwOCAxMTo1NjowNCAyMDE3IC0wNzAwCi1AQCAt NzM0LDcgKzczNCw3IEBACi0gICAgICAgICBQUl9UUlVFIC8qIGlzcGVybSAqLywgUFJfVFJVRSAv KiBpc3ByaXZhdGUgKi8sCi0gICAgICAgICBwdWJLZXktPmtleVR5cGUsIGtleVVzYWdlLCBOVUxM IC8qIHdpbmN4ICovKTsKLSAgICAgaWYgKHJlc3VsdCAhPSBTRUNTdWNjZXNzKSB7Ci0tICAgICAg ICBKU1NfdGhyb3dNc2coCi0rICAgICAgICBKU1NfdGhyb3dNc2dQckVycigKLSAgICAgICAgICAg ICBlbnYsIFRPS0VOX0VYQ0VQVElPTiwKLSAgICAgICAgICAgICAiRmFpbGVkIHRvIGltcG9ydCBF bmNyeXB0ZWRQcml2YXRlS2V5SW5mbyB0byB0b2tlbiIpOwotICAgICAgICAgZ290byBmaW5pc2g7 CgpkaWZmIC0tZ2l0IGEvanNzLVNpZ25hdHVyZUFsZ29yaXRobS5wYXRjaCBiL2pzcy1TaWduYXR1 cmVBbGdvcml0aG0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4N2RiMWIu LjAwMDAwMDAKLS0tIGEvanNzLVNpZ25hdHVyZUFsZ29yaXRobS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDM0ICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgRGF2aWQgU3R1 dHptYW4gZGF2aWQua29ucmFkLnN0dXR6bWFuQHVzLmFybXkubWlsCi0jIERhdGUgMTUwOTA2MjM0 NiAyNTIwMAotIyAgICAgIFRodSBPY3QgMjYgMTY6NTk6MDYgMjAxNyAtMDcwMAotIyBOb2RlIElE IGIxYTNjM2NjNmIzNTg0OTQ4ZDI1MWQzYmZjZmU2NjMwZDg5NzBkYjUKLSMgUGFyZW50ICAyNTJj MTBmNDQ4OTcxYjdhZTA4N2JkZTI1OTUwNWFiZDVkYzVhMDNhCi1CdWd6aWxsYS5tb3ppbGxhIDE0 MDk4Njcgb3JnLm1vemlsbGEuanNzLnBraXguY21zLlNpZ25lckluZm8gaW5jb3JyZWN0bHkgcHJv ZHVjaW5nIHNpZ25hdHVyZXMgKGVzcGVjaWFsbHkgZm9yIEVDKQotCi1UaGUgcGF0Y2ggZml4ZXMg dGhlIE9JRCB0aGF0IGdvZXMgaW50byB0aGUgc2lnbmF0dXJlQWxnb3JpdGhtIGZpZWxkIGFzIHdl bGwgYXMgcGFzc2luZyB0aGUgZnVsbCBzaWduYXR1cmUgYWxnb3JpdGhtIHRvIHRoZSBTaWduYXR1 cmUgY29udGV4dCB0byBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlIHVzaW5nIHRoZSBwcm9wZXIgYWxn b3JpdGhtLgotV2l0aCB0aGlzIHBhdGNoLCBpZiBvbmUgcGFzc2VzIFNpZ25hdHVyZUFsZ29yaXRo bS5SU0FTaWduYXR1cmVXaXRoU0hBMjU2RGlnZXN0IGluIHRoZSBjb25zdHJ1Y3RvciBvbmUgd2ls bCBub3cgZ2V0IHNoYTI1NldpdGhSU0FFbmNyeXB0aW9uICgxIDIgODQwIDExMzU0OSAxIDEgMTEp IGluIHRoZSBzaWduYXR1cmVBbGdvcml0aG0gZmllbGQuCi0KLWNmdSBjaGVja2luZyBpbiBmb3Ig ZHN0dXR6bWFuCi0KLWRpZmYgLS1naXQgYS9vcmcvbW96aWxsYS9qc3MvcGtpeC9jbXMvU2lnbmVy SW5mby5qYXZhIGIvb3JnL21vemlsbGEvanNzL3BraXgvY21zL1NpZ25lckluZm8uamF2YQotLS0t IGEvb3JnL21vemlsbGEvanNzL3BraXgvY21zL1NpZ25lckluZm8uamF2YQotKysrIGIvb3JnL21v emlsbGEvanNzL3BraXgvY21zL1NpZ25lckluZm8uamF2YQotQEAgLTI4OSw3ICsyODksNyBAQAot ICAgICAgICAgfQotIAotICAgICAgICAgZGlnZXN0RW5jcnlwdGlvbkFsZ29yaXRobSA9IG5ldyBB bGdvcml0aG1JZGVudGlmaWVyKAotLSAgICAgICAgICAgIHNpZ25pbmdBbGcuZ2V0UmF3QWxnKCku dG9PSUQoKSxudWxsICk7Ci0rICAgICAgICAgICAgc2lnbmluZ0FsZy50b09JRCgpLG51bGwgKTsK LSAKLSAKLSAgICAgICAgIGlmKCBzaWduZWRBdHRyaWJ1dGVzICE9IG51bGwgKSAKLUBAIC0zMzIs NyArMzMyLDcgQEAKLSAgICAgICAgIC8vIGVuY3J5cHQgdGhlIERFUi1lbmNvZGVkIERpZ2VzdElu Zm8gd2l0aCB0aGUgcHJpdmF0ZSBrZXkKLSAgICAgICAgIENyeXB0b1Rva2VuIHRva2VuID0gc2ln bmluZ0tleS5nZXRPd25pbmdUb2tlbigpOwotICAgICAgICAgU2lnbmF0dXJlIHNpZzsKLS0gICAg ICAgIHNpZyA9IHRva2VuLmdldFNpZ25hdHVyZUNvbnRleHQoIHNpZ25pbmdBbGcuZ2V0UmF3QWxn KCkgKTsKLSsgICAgICAgIHNpZyA9IHRva2VuLmdldFNpZ25hdHVyZUNvbnRleHQoIHNpZ25pbmdB bGcgKTsKLSAgICAgICAgIHNpZy5pbml0U2lnbihzaWduaW5nS2V5KTsKLSAgICAgICAgIHNpZy51 cGRhdGUodG9CZVNpZ25lZCk7Ci0gICAgICAgICBlbmNyeXB0ZWREaWdlc3QgPSBuZXcgT0NURVRf U1RSSU5HKHNpZy5zaWduKCkpOwoKZGlmZiAtLWdpdCBhL2pzcy1maXgtUEsxMVN0b3JlLWdldEVu Y3J5cHRlZFByaXZhdGVLZXlJbmZvLXNlZ2ZhdWx0LnBhdGNoIGIvanNzLWZpeC1QSzExU3RvcmUt Z2V0RW5jcnlwdGVkUHJpdmF0ZUtleUluZm8tc2VnZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGZiOTNkYzAuLjAwMDAwMDAKLS0tIGEvanNzLWZpeC1QSzExU3RvcmUt Z2V0RW5jcnlwdGVkUHJpdmF0ZUtleUluZm8tc2VnZmF1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNSArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEZyYXNlciBUd2Vl ZGFsZTxmdHdlZWRhbGVAcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTA1MTc1ODYyIDI1MjAwCi0jICAg ICAgTW9uIFNlcCAxMSAxNzoyNDoyMiAyMDE3IC0wNzAwCi0jIE5vZGUgSUQgM2U5YTVhZTIxNDlk MDQ4NzdkYzE5YjExN2E4OTE3YzIyODU0ZjhlYgotIyBQYXJlbnQgIDg3ZGNhMDdmNzUyOTQ2MzM5 ODczNGQxMjc5YmNmZDcwMjNhNDNkNGMKLUJ1ZyAxMzcxMTQ3IFBLMTFTdG9yZS5nZXRFbmNyeXB0 ZWRQcml2YXRlS2V5SW5mbygpIHNlZ2ZhdWx0IGlmIGV4cG9ydCBmYWlscyAtCi1wYXRjaCBqc3Mt ZnR3ZWVkYWwtMDAxMS1Eb24tdC1jcmFzaC1pZi1QSzExX0V4cG9ydEVuY3J5cHRlZFByaXZLZXlJ bmZvLXJldHVyLnBhdGNoCi1TdWJqZWN0OiBEb24ndCBjcmFzaCBpZiBQSzExX0V4cG9ydEVuY3J5 cHRlZFByaXZLZXlJbmZvIHJldHVybnMgTlVMTAotRnJvbTogRnJhc2VyIFR3ZWVkYWxlIDxmdHdl ZWRhbEByZWRoYXQuY29tPgotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCi1mb3VuZCBwYXRjaCBh dCBieXRlIDIzOQotbWVzc2FnZToKLURvbid0IGNyYXNoIGlmIFBLMTFfRXhwb3J0RW5jcnlwdGVk UHJpdktleUluZm8gcmV0dXJucyBOVUxMCi1QSzExX0V4cG9ydEVuY3J5cHRlZFByaXZLZXlJbmZv IHJldHVybmluZyBOVUxMIGlzIG5vdCBiZWluZyBoYW5kbGVkCi1wcm9wZXJseSwgY2F1c2luZyBz ZWdmYXVsdC4gIERldGVjdCB0aGlzIGNvbmRpdGlvbiBhbmQgcmFpc2UgYQotVG9rZW5FeGNlcHRp b24gaW5zdGVhZC4KLQotY2Z1IGZvciBmdHdlZWRhbAotCi1kaWZmIC1yIDg3ZGNhMDdmNzUyOSAt ciAzZTlhNWFlMjE0OWQgb3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExU3RvcmUuYwotLS0tIGEv b3JnL21vemlsbGEvanNzL3BrY3MxMS9QSzExU3RvcmUuYwlGcmkgU2VwIDA4IDExOjU2OjA0IDIw MTcgLTA3MDAKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9wa2NzMTEvUEsxMVN0b3JlLmMJTW9uIFNl cCAxMSAxNzoyNDoyMiAyMDE3IC0wNzAwCi1AQCAtNTgxLDYgKzU4MSwxMSBAQAotICAgICAvLyBl eHBvcnQgdGhlIGVwa2kKLSAgICAgZXBraSA9IFBLMTFfRXhwb3J0RW5jcnlwdGVkUHJpdktleUlu Zm8oCi0gICAgICAgICBzbG90LCBhbGdUYWcsIHB3SXRlbSwgcHJpdmssIGl0ZXJhdGlvbnMsIE5V TEwgLyp3aW5jeCovKTsKLSsgICAgaWYgKGVwa2kgPT0gTlVMTCkgewotKyAgICAgICAgSlNTX3Ro cm93TXNnUHJFcnIoCi0rICAgICAgICAgICAgZW52LCBUT0tFTl9FWENFUFRJT04sICJGYWlsZWQg dG8gZXhwb3J0IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIik7Ci0rICAgICAgICBnb3RvIGZpbmlz aDsKLSsgICAgfQotIAotICAgICAvLyBERVItZW5jb2RlIHRoZSBlcGtpCi0gICAgIGlmIChTRUNf QVNOMUVuY29kZUl0ZW0oTlVMTCwgJmVwa2lJdGVtLCBlcGtpLAoKZGlmZiAtLWdpdCBhL2pzcy1m aXgtU2lnbmVySW5mby12ZXJzaW9uLnBhdGNoIGIvanNzLWZpeC1TaWduZXJJbmZvLXZlcnNpb24u cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NmUzOTMuLjAwMDAwMDAKLS0t IGEvanNzLWZpeC1TaWduZXJJbmZvLXZlcnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0 NCArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIERhdmlkIFN0dXR6bWFuPGRh dmlkLmtvbnJhZC5zdHV0em1hbkB1cy5hcm15Lm1pbD4KLSMgRGF0ZSAxNTE2MTQ0MDkyIDI4ODAw Ci0jICAgICAgVHVlIEphbiAxNiAxNTowODoxMiAyMDE4IC0wODAwCi0jIE5vZGUgSUQgMWQ4NThj NmQ0NjI2YjYyNWJiNjcxNDI2ZTY4OTlkOThjMmY1YmIyZQotIyBQYXJlbnQgIDg3NDZhM2ZjNzQ3 ODVlMmZkMTJmODZkMDhhNjg4NmVkOTE2MDYyMGUKLUJ1ZyMgMzg2MzUxIFNpZ25lckluZm8gdmVy c2lvbiwgcj1jZnUKLQotVGhpcyBwYXRjaCBmaXhlcyB2ZXJzaW9uaW5nIG9mIFNpZ25lckluZm8g dG8gbWF0Y2ggQ01TIHNwZWMuCi0KLWNmdSBmb3IgZHN0dXR6bWFuCi0KLWRpZmYgLS1naXQgYS9v cmcvbW96aWxsYS9qc3MvcGtpeC9jbXMvU2lnbmVySW5mby5qYXZhIGIvb3JnL21vemlsbGEvanNz L3BraXgvY21zL1NpZ25lckluZm8uamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL3BraXgvY21z L1NpZ25lckluZm8uamF2YQotKysrIGIvb3JnL21vemlsbGEvanNzL3BraXgvY21zL1NpZ25lcklu Zm8uamF2YQotQEAgLTUyLDkgKzUyLDYgQEAKLSAgICAgcHJpdmF0ZSBPQ1RFVF9TVFJJTkcgZW5j cnlwdGVkRGlnZXN0OwotICAgICBwcml2YXRlIFNFVCB1bnNpZ25lZEF0dHJpYnV0ZXM7IC8vIFsx XSBPUFRJT05BTAotIAotLSAgICAvLyB3ZSBvbmx5IGRvIENNUyBpbiBSRkMgMjYzMAotLSAgICBw cml2YXRlIHN0YXRpYyBmaW5hbCBJTlRFR0VSIFZFUlNJT04gPSBuZXcgSU5URUdFUigzKTsKLS0K LSAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgLy8gQWNjZXNz b3IgbWV0aG9kcwotQEAgLTE5OCw4ICsxOTUsMTcgQEAKLSAgICAgICAgIENyeXB0b01hbmFnZXIu Tm90SW5pdGlhbGl6ZWRFeGNlcHRpb24sIFNpZ25hdHVyZUV4Y2VwdGlvbiwKLSAgICAgICAgIFRv a2VuRXhjZXB0aW9uCi0gICAgIHsKLS0gICAgICAgIHZlcnNpb24gPSBWRVJTSU9OOwotKyAgICAg ICAgaWYgKHNpZ25lcklkZW50aWZpZXIgPT0gbnVsbCkgewotKyAgICAgICAgICAgIHRocm93IG5l dyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlNpZ25lcklkZW50aWZpZXIgbWF5IG5vdCBiZSBu dWxsIik7Ci0rICAgICAgICB9Ci0gICAgICAgICB0aGlzLnNpZ25lcklkZW50aWZpZXIgPSBzaWdu ZXJJZGVudGlmaWVyOwotKyAgICAgICAgaWYgKFNpZ25lcklkZW50aWZpZXIuSVNTVUVSX0FORF9T RVJJQUxOVU1CRVIuZXF1YWxzKHRoaXMuc2lnbmVySWRlbnRpZmllci5nZXRUeXBlKCkpKSB7Ci0r ICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gbmV3IElOVEVHRVIoMSk7Ci0rICAgICAgICB9IGVs c2UgaWYgKFNpZ25lcklkZW50aWZpZXIuU1VCSkVDVF9LRVlfSURFTlRJRklFUi5lcXVhbHModGhp cy5zaWduZXJJZGVudGlmaWVyLmdldFR5cGUoKSkpIHsKLSsgICAgICAgICAgICB0aGlzLnZlcnNp b24gPSBuZXcgSU5URUdFUigzKTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgdGhy b3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5leHBlY3RlZCBTaWduZXJJZGVudGlm aWVyIHR5cGUiKTsKLSsgICAgICAgIH0KLSAgICAgICAgIHRoaXMuZGlnZXN0QWxnb3JpdGhtID0K LSAgICAgICAgICAgICAgICAgbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoc2lnbmluZ0FsZy5nZXRE aWdlc3RBbGcoKS50b09JRCgpLG51bGwpOwotIAoKZGlmZiAtLWdpdCBhL2pzcy1zaWduYXR1cmUt Y29ycmVjdGlvbi5wYXRjaCBiL2pzcy1zaWduYXR1cmUtY29ycmVjdGlvbi5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc0NjA4My4uMDAwMDAwMAotLS0gYS9qc3Mtc2lnbmF0 dXJlLWNvcnJlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotIyBI RyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBEYXZpZCBTdHV0em1hbjxkYXZpZC5rb25yYWQuc3R1 dHptYW5AdXMuYXJteS5taWw+Ci0jIERhdGUgMTUxNTcxMTUyNCAyODgwMAotIyAgICAgIFRodSBK YW4gMTEgMTQ6NTg6NDQgMjAxOCAtMDgwMAotIyBOb2RlIElEIDllMmRiN2VlZTY2NTIzMzA3MjNk OTM1YzJiOTAwYjliMDliMWFiOWQKLSMgUGFyZW50ICBjYTJjMmZjZmFmMjA3Zjg3YzNjNjllNDkz ZjJiMzBmZDBhMDg4ZTk1Ci1CdWcgMTQwOTg2NyAtIGFkZGl0aW9uYWwgZml4IGZyb20gZHN0dXR6 bWFuOiBhbGxvdyBzaWduYXR1cmVzIHRvIGJlIGNyZWF0ZWQgY29ycmVjdGx5LgotCi1jZnUgZm9y IGRzdHV0em1hbgotCi1kaWZmIC0tZ2l0IGEvb3JnL21vemlsbGEvanNzL3BraXgvY21zL1NpZ25l ckluZm8uamF2YSBiL29yZy9tb3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKLS0t LSBhL29yZy9tb3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKLSsrKyBiL29yZy9t b3ppbGxhL2pzcy9wa2l4L2Ntcy9TaWduZXJJbmZvLmphdmEKLUBAIC05LDE0ICs5LDEwIEBACi0g aW1wb3J0IG9yZy5tb3ppbGxhLmpzcy51dGlsLkFzc2VydDsKLSBpbXBvcnQgb3JnLm1vemlsbGEu anNzLnBraXgucHJpbWl0aXZlLio7Ci0gaW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5jcnlwdG8uKjsK LS1pbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKLS1pbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7 Ci0taW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07Ci0gaW1wb3J0IGphdmEuc2Vj dXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbjsKLSBpbXBvcnQgamF2YS5zZWN1cml0eS5TaWduYXR1 cmVFeGNlcHRpb247Ci0gaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0 aW9uOwotIGltcG9ydCBqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3Q7Ci0taW1wb3J0IG9yZy5t b3ppbGxhLmpzcy5jcnlwdG8uKjsKLSBpbXBvcnQgb3JnLm1vemlsbGEuanNzLmNyeXB0by5YNTA5 Q2VydGlmaWNhdGU7Ci0gaW1wb3J0IG9yZy5tb3ppbGxhLmpzcy5wa2l4LmNlcnQuKjsKLSBpbXBv cnQgb3JnLm1vemlsbGEuanNzLio7Ci1AQCAtNzMsMTQgKzY5LDYgQEAKLSAgICAgfQotIAotICAg ICAvKioKLS0gICAgICogTG93LWxldmVsIG1ldGhvZCB0byBzZXQgdGhlIHZlcnNpb24uCi0tICAg ICAqIEl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzLiAgVXNlIGl0IGF0 IHlvdXIgb3duIHJpc2suCi0tICAgIHB1YmxpYyB2b2lkIHNldFZlcnNpb24oSU5URUdFUiB2ZXJz aW9uKSB7Ci0tICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uOwotLSAgICB9Ci0tICAgICAq LwotLQotLSAgICAvKioKLSAgICAgICogUmV0cmlldmVzIHRoZSBTaWduZXJJZGVudGlmaWVyLgot ICAgICAgKi8KLSAgICAgcHVibGljIFNpZ25lcklkZW50aWZpZXIgZ2V0U2lnbmVySWRlbnRpZmll cigpIHsKLUBAIC04OCwxNCArNzYsNiBAQAotICAgICB9Ci0gCi0gICAgIC8qKgotLSAgICAgKiBM b3ctbGV2ZWwgbWV0aG9kIHRvIHNldCB0aGUgc2lnbmVySWRlbnRpZmllci4KLS0gICAgICogSXQg aXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBjYWxsIHRoaXMuICBVc2UgaXQgYXQgeW91ciBv d24gcmlzay4KLS0gICAgcHVibGljIHZvaWQgc2V0U2lnbmVySWRlbnRpZmllciggU2lnbmVySWRl bnRpZmllciBpYXNuICkgewotLSAgICAgICAgdGhpcy5zaWduZXJJZGVudGlmaWVyID0gaWFzbjsK LS0gICAgfQotLSAgICAgKi8KLS0KLS0gICAgLyoqCi0gICAgICAqIFJldHJpZXZlcyB0aGUgRGln ZXN0QWxnb3JpdGhtIHVzZWQgaW4gdGhpcyBTaWduZXJJbmZvLgotICAgICAgKgotICAgICAgKiBA ZXhjZXB0aW9uIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBJZiB0aGUgYWxnb3JpdGhtIGlzIG5v dAotQEAgLTExNiwxNCArOTYsNiBAQAotICAgICB9Ci0gCi0gICAgIC8qKgotLSAgICAgKiBMb3ct bGV2ZWwgbWV0aG9kIHRvIHNldCB0aGUgZGlnZXN0IEFsZ29yaXRobUlkZW50aWZpZXIuCi0tICAg ICAqIEl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzLiAgVXNlIGl0IGF0 IHlvdXIgb3duIHJpc2suCi0tICAgIHB1YmxpYyB2b2lkIHNldERpZ2VzdEFsZ29yaXRobUlkZW50 aWZpZXIoQWxnb3JpdGhtSWRlbnRpZmllciBhbGdpZCkgewotLSAgICAgICAgdGhpcy5kaWdlc3RB bGdvcml0aG0gPSBhbGdpZDsKLS0gICAgfQotLSAgICAgKi8KLS0KLS0gICAgLyoqCi0gICAgICAq IFJldHJpZXZlcyB0aGUgc2lnbmVkIGF0dHJpYnV0ZXMsIGlmIHRoZXkgZXhpc3QuCi0gICAgICAq Ci0gICAgICAqLwotQEAgLTEzOSwxNCArMTExLDYgQEAKLSAgICAgfQotIAotICAgICAvKioKLS0g ICAgICogTG93LWxldmVsIG1ldGhvZCB0byBzZXQgdGhlIHNpZ25lZEF0dHJpYnV0ZXMgZmllbGQu Ci0tICAgICAqIEl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzLiAgVXNl IGl0IGF0IHlvdXIgb3duIHJpc2suCi0tICAgIHB1YmxpYyB2b2lkIHNldFNpZ25lZEF0dHJpYnV0 ZXMoU0VUIGF1dGhBdHRyaWIpIHsKLS0gICAgICAgIHRoaXMuc2lnbmVkQXR0cmlidXRlcyA9IGF1 dGhBdHRyaWI7Ci0tICAgIH0KLS0gICAgICovCi0tCi0tICAgIC8qKgotICAgICAgKiBSZXR1cm5z IHRoZSByYXcgc2lnbmF0dXJlIChkaWdlc3QgZW5jcnlwdGlvbikgYWxnb3JpdGhtIHVzZWQgaW4g dGhpcwotICAgICAgKiBTaWduZXJJbmZvLgotICAgICAgKgotQEAgLTE2OCwxNSArMTMyLDYgQEAK LSAgICAgfQotIAotICAgICAvKioKLS0gICAgICogTG93LWxldmVsIG1ldGhvZCB0byBzZXQgdGhl IGRpZ2VzdEVuY3J5cHRpb25BbGdvcml0aG0gZmllbGQuCi0tICAgICAqIEl0IGlzIG5vdCBub3Jt YWxseSBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzLiAgVXNlIGl0IGF0IHlvdXIgb3duIHJpc2suCi0t ICAgIHB1YmxpYyB2b2lkCi0tICAgIHNldERpZ2VzdEVuY3J5cHRpb25BbGdvcml0aG1JZGVudGlm aWVyKEFsZ29yaXRobUlkZW50aWZpZXIgYWxnaWQpIHsKLS0gICAgICAgIHRoaXMuZGlnZXN0RW5j cnlwdGlvbkFsZ29yaXRobT0gYWxnaWQ7Ci0tICAgIH0KLS0gICAgICovCi0tCi0tICAgIC8qKgot ICAgICAgKiBSZXRyaWV2ZXMgdGhlIGVuY3J5cHRlZCBkaWdlc3QuCi0gICAgICAqLwotICAgICBw dWJsaWMgYnl0ZVtdIGdldEVuY3J5cHRlZERpZ2VzdCgpIHsKLUBAIC0xODQsMTQgKzEzOSw2IEBA Ci0gICAgIH0KLSAKLSAgICAgLyoqCi0tICAgICAqIExvdy1sZXZlbCBtZXRob2QgdG8gc2V0IHRo ZSBlbmNyeXB0ZWREaWdlc3QgZmllbGQuCi0tICAgICAqIEl0IGlzIG5vdCBub3JtYWxseSBuZWNl c3NhcnkgdG8gY2FsbCB0aGlzLiAgVXNlIGl0IGF0IHlvdXIgb3duIHJpc2suCi0tICAgIHB1Ymxp YyB2b2lkIHNldEVuY3J5cHRlZERpZ2VzdChieXRlW10gZWQpIHsKLS0gICAgICAgIHRoaXMuZW5j cnlwdGVkRGlnZXN0ID0gbmV3IE9DVEVUX1NUUklORyhlZCk7Ci0tICAgIH0KLS0gICAgICovCi0t Ci0tICAgIC8qKgotICAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGlm IHRoZXkgZXhpc3QuCi0gICAgICAqCi0gICAgICAqLwotQEAgLTIwNiwxNCArMTUzLDYgQEAKLSAg ICAgICAgIHJldHVybiAodW5zaWduZWRBdHRyaWJ1dGVzIT1udWxsKTsKLSAgICAgfQotIAotLSAg ICAvKioKLS0gICAgICogTG93LWxldmVsIG1ldGhvZCB0byBzZXQgdGhlIHVuc2lnbmVkQXR0cmli dXRlcyBmaWVsZC4KLS0gICAgICogSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBjYWxs IHRoaXMuICBVc2UgaXQgYXQgeW91ciBvd24gcmlzay4KLS0gICAgcHVibGljIHZvaWQgc2V0VW5z aWduZWRBdHRyaWJ1dGVzKFNFVCB1bmF1dGhBdHRyaWIpIHsKLS0gICAgICAgIHRoaXMudW5zaWdu ZWRBdHRyaWJ1dGVzID0gdW5hdXRoQXR0cmliOwotLSAgICB9Ci0tICAgICAqLwotLQotICAgICAv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLwotICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAvLyBDb25zdHJ1Y3RvcnMK LUBAIC0yMjEsMTcgKzE2MCw2IEBACi0gICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gCi0gICAgIC8qKgot LSAgICAgKiBMb3ctbGV2ZWwgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gIEFsbCBmaWVsZHMgYXJlIGlu aXRpYWxpemVkIHRvIG51bGwuCi0tICAgICAqIEJlZm9yZSB0aGlzIFNpZ25lckluZm8gY2FuIGJl IHByb2Nlc3NlZCBvciB1c2VkIGluIGFueSB3YXksIGFsbCBvZgotLSAgICAgKiB0aGUgZmllbGRz IGV4Y2VwdCA8Y29kZT5zaWduZWRBdHRyaWJ1dGVzPC9jb2RlPiBhbmQKLS0gICAgICogPGNvZGU+ dW5zaWduZWRBdHRyaWJ1dGVzPC9jb2RlPiBtdXN0IGJlIG5vbi1udWxsLgotLSAgICAgKiA8cD5J dCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIGNhbGwgdGhpcyBjb25zdHJ1Y3Rvci5Vc2Ug aXQgYXQKLS0gICAgICogeW91ciBvd24gcmlzay4KLS0gICAgcHVibGljIFNpZ25lckluZm8oKSB7 Ci0tICAgIH0KLS0gICAgICovCi0tCi0tICAgIC8qKgotICAgICAgKiBBIGNvbnN0cnVjdG9yIGZv ciBjcmVhdGluZyBhIG5ldyBTaWduZXJJbmZvIGZyb20gc2NyYXRjaC4KLSAgICAgICoKLSAgICAg ICogQHBhcmFtIHNpZ25lcklkZW50aWZpZXIgVGhlIHNpZ25lcklkZW50aWZpZXIgb2YgdGhlCi1A QCAtMzAzLDM2ICsyMzEsMzIgQEAKLSAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gCi0gICAgICAgICAvLyBjb21wdXRlIHRoZSBkaWdl c3QKLS0gICAgICAgIGJ5dGVbXSBkaWdlc3Q9bnVsbDsKLS0gICAgICAgIERpZ2VzdEFsZ29yaXRo bSBkaWdlc3RBbGcgPSBzaWduaW5nQWxnLmdldERpZ2VzdEFsZygpOwotLSAgICAgICAgaWYoIHNp Z25lZEF0dHJpYnV0ZXMgPT0gbnVsbCApIHsKLSsgICAgICAgIENyeXB0b1Rva2VuIHRva2VuID0g c2lnbmluZ0tleS5nZXRPd25pbmdUb2tlbigpOwotKyAgICAgICAgU2lnbmF0dXJlIHNpZzsKLSsg ICAgICAgIGJ5dGVbXSB0b0JlU2lnbmVkID0gbnVsbDsKLSsgICAgICAgIGlmIChzaWduZWRBdHRy aWJ1dGVzID09IG51bGwpIHsKLSAgICAgICAgICAgICAvLyBqdXN0IHVzZSB0aGUgbWVzc2FnZSBk aWdlc3Qgb2YgdGhlIGNvbnRlbnQKLS0gICAgICAgICAgICBkaWdlc3QgPSBtZXNzYWdlRGlnZXN0 OwotKyAgICAgICAgICAgIGlmIChzaWduaW5nQWxnLmdldFJhd0FsZygpID09IFNpZ25hdHVyZUFs Z29yaXRobS5SU0FTaWduYXR1cmUpIHsKLSsgICAgICAgICAgICAgICAgU0VRVUVOQ0UgZGlnZXN0 SW5mbyA9IGNyZWF0ZURpZ2VzdEluZm8obWVzc2FnZURpZ2VzdCwgZmFsc2UpOwotKyAgICAgICAg ICAgICAgICB0b0JlU2lnbmVkID0gQVNOMVV0aWwuZW5jb2RlKGRpZ2VzdEluZm8pOwotKyAgICAg ICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHRvQmVTaWduZWQgPSBtZXNzYWdlRGln ZXN0OwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBzaWcgPSB0b2tlbi5nZXRTaWduYXR1 cmVDb250ZXh0KHNpZ25pbmdBbGcuZ2V0UmF3QWxnKCkpOyAvL2RhdGEgaXMgYWxyZWFkeSBkaWdl c3RlZAotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAvLyBkaWdlc3QgdGhlIGNvbnRl bnRzIG9jdGV0cyBvZiB0aGUgc2lnbmVkIGF0dHJpYnV0ZXMKLS0gICAgICAgICAgICBieXRlW10g ZW5jID0gQVNOMVV0aWwuZW5jb2RlKHNpZ25lZEF0dHJpYnV0ZXMpOwotLSAgICAgICAgICAgIE1l c3NhZ2VEaWdlc3QgbWQgPQotLSAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VEaWdlc3Qu Z2V0SW5zdGFuY2UoZGlnZXN0QWxnLnRvU3RyaW5nKCkpOwotLSAgICAgICAgICAgIGRpZ2VzdCA9 IG1kLmRpZ2VzdCggZW5jICk7Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICBieXRlW10gdG9CZVNp Z25lZDsKLS0gICAgICAgIGlmKCBzaWduaW5nQWxnLmdldFJhd0FsZygpID09IFNpZ25hdHVyZUFs Z29yaXRobS5SU0FTaWduYXR1cmUgKSB7Ci0tICAgICAgICAgICAgLy8gcHV0IHRoZSBkaWdlc3Qg aW4gYSBEaWdlc3RJbmZvCi0tICAgICAgICAgICAgU0VRVUVOQ0UgZGlnZXN0SW5mbyA9IG5ldyBT RVFVRU5DRSgpOwotLSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIgZGlnZXN0QWxnSWQg PQotLSAgICAgICAgICAgICAgICAgICAgbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoIGRpZ2VzdEFs Zy50b09JRCgpLG51bGwgKTsKLS0gICAgICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQoIGRp Z2VzdEFsZ0lkICk7Ci0tICAgICAgICAgICAgZGlnZXN0SW5mby5hZGRFbGVtZW50KCBuZXcgT0NU RVRfU1RSSU5HKCBkaWdlc3QgKSApOwotLSAgICAgICAgICAgIHRvQmVTaWduZWQgPSBBU04xVXRp bC5lbmNvZGUoZGlnZXN0SW5mbyk7Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIHRv QmVTaWduZWQgPSBkaWdlc3Q7Ci0rICAgICAgICAgICAgYnl0ZVtdIGVuY29kaW5nID0gQVNOMVV0 aWwuZW5jb2RlKHNpZ25lZEF0dHJpYnV0ZXMpOwotKyAgICAgICAgICAgIGlmIChzaWduaW5nQWxn LmdldFJhd0FsZygpID09IFNpZ25hdHVyZUFsZ29yaXRobS5SU0FTaWduYXR1cmUpIHsKLSsgICAg ICAgICAgICAgICAgLy8gcHV0IHRoZSBkaWdlc3QgaW4gYSBEaWdlc3RJbmZvCi0rICAgICAgICAg ICAgICAgIFNFUVVFTkNFIGRpZ2VzdEluZm8gPSBjcmVhdGVEaWdlc3RJbmZvKGVuY29kaW5nLCB0 cnVlKTsKLSsgICAgICAgICAgICAgICAgdG9CZVNpZ25lZCA9IEFTTjFVdGlsLmVuY29kZShkaWdl c3RJbmZvKTsKLSsgICAgICAgICAgICAgICAgc2lnID0gdG9rZW4uZ2V0U2lnbmF0dXJlQ29udGV4 dChTaWduYXR1cmVBbGdvcml0aG0uUlNBU2lnbmF0dXJlKTsKLSsgICAgICAgICAgICB9IGVsc2Ug ewotKyAgICAgICAgICAgICAgICB0b0JlU2lnbmVkID0gZW5jb2Rpbmc7Ci0rICAgICAgICAgICAg ICAgIHNpZyA9IHRva2VuLmdldFNpZ25hdHVyZUNvbnRleHQoc2lnbmluZ0FsZyk7Ci0rICAgICAg ICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgCi0gICAgICAgICAvLyBlbmNyeXB0IHRoZSBE RVItZW5jb2RlZCBEaWdlc3RJbmZvIHdpdGggdGhlIHByaXZhdGUga2V5Ci0tICAgICAgICBDcnlw dG9Ub2tlbiB0b2tlbiA9IHNpZ25pbmdLZXkuZ2V0T3duaW5nVG9rZW4oKTsKLS0gICAgICAgIFNp Z25hdHVyZSBzaWc7Ci0tICAgICAgICBzaWcgPSB0b2tlbi5nZXRTaWduYXR1cmVDb250ZXh0KCBz aWduaW5nQWxnICk7Ci0gICAgICAgICBzaWcuaW5pdFNpZ24oc2lnbmluZ0tleSk7Ci0gICAgICAg ICBzaWcudXBkYXRlKHRvQmVTaWduZWQpOwotICAgICAgICAgZW5jcnlwdGVkRGlnZXN0ID0gbmV3 IE9DVEVUX1NUUklORyhzaWcuc2lnbigpKTsKLUBAIC00OTQsMjEgKzQxOCwyMCBAQAotICAgICAg ICAgICAgICAgICBkaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtLmdldE9JRCgpCi0gICAgICAgICAg ICAgKTsKLSAKLSsgICAgICAgIENyeXB0b1Rva2VuIHRva2VuID0gQ3J5cHRvTWFuYWdlci5nZXRJ bnN0YW5jZSgpCi0rICAgICAgICAgICAgICAgIC5nZXRJbnRlcm5hbENyeXB0b1Rva2VuKCk7Ci0r ICAgICAgICBTaWduYXR1cmUgc2lnOwotICAgICAgICAgYnl0ZVtdIHRvQmVWZXJpZmllZDsKLS0g ICAgICAgIGlmKCBzaWdBbGcuZ2V0UmF3QWxnKCkgPT0gU2lnbmF0dXJlQWxnb3JpdGhtLlJTQVNp Z25hdHVyZSApIHsKLSsgICAgICAgIGlmIChzaWdBbGcuZ2V0UmF3QWxnKCkgPT0gU2lnbmF0dXJl QWxnb3JpdGhtLlJTQVNpZ25hdHVyZSkgewotICAgICAgICAgICAgIC8vIGNyZWF0ZSBEaWdlc3RJ bmZvIHN0cnVjdHVyZQotLSAgICAgICAgICAgIFNFUVVFTkNFIGRpZ2VzdEluZm8gPSBuZXcgU0VR VUVOQ0UoKTsKLS0gICAgICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQoCi0tICAgICAgICAg ICAgICAgIG5ldyBBbGdvcml0aG1JZGVudGlmaWVyKGRpZ2VzdEFsZ29yaXRobS5nZXRPSUQoKSwg bnVsbCkgKTsKLS0gICAgICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQoIG5ldyBPQ1RFVF9T VFJJTkcobWVzc2FnZURpZ2VzdCkgKTsKLSsgICAgICAgICAgICBTRVFVRU5DRSBkaWdlc3RJbmZv ID0gY3JlYXRlRGlnZXN0SW5mbyhtZXNzYWdlRGlnZXN0LCBmYWxzZSk7Ci0gICAgICAgICAgICAg dG9CZVZlcmlmaWVkID0gQVNOMVV0aWwuZW5jb2RlKGRpZ2VzdEluZm8pOwotKyAgICAgICAgICAg IHNpZyA9IHRva2VuLmdldFNpZ25hdHVyZUNvbnRleHQoc2lnQWxnLmdldFJhd0FsZygpKTsKLSAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgdG9CZVZlcmlmaWVkID0gbWVzc2FnZURpZ2Vz dDsKLSsgICAgICAgICAgICBzaWcgPSB0b2tlbi5nZXRTaWduYXR1cmVDb250ZXh0KHNpZ0FsZyk7 Ci0gICAgICAgICB9Ci0tCi0tICAgICAgICBDcnlwdG9Ub2tlbiB0b2tlbiA9IENyeXB0b01hbmFn ZXIuZ2V0SW5zdGFuY2UoKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldElu dGVybmFsQ3J5cHRvVG9rZW4oKTsKLS0gICAgICAgIFNpZ25hdHVyZSBzaWcgPSB0b2tlbi5nZXRT aWduYXR1cmVDb250ZXh0KHNpZ0FsZyk7Ci0rICAgICAgICAKLSAgICAgICAgIHNpZy5pbml0VmVy aWZ5KHB1YmtleSk7Ci0gICAgICAgICBzaWcudXBkYXRlKHRvQmVWZXJpZmllZCk7Ci0gICAgICAg ICBpZiggc2lnLnZlcmlmeShlbmNyeXB0ZWREaWdlc3QudG9CeXRlQXJyYXkoKSkgKSB7Ci1AQCAt NjcxLDMxICs1OTQsMjIgQEAKLSAgICAgICAgIC8vIE5vdyB2ZXJpZnkgdGhlIHNpZ25hdHVyZS4K LSAgICAgICAgIENyeXB0b1Rva2VuIHRva2VuID0KLSAgICAgICAgICAgICAgICAgICAgIENyeXB0 b01hbmFnZXIuZ2V0SW5zdGFuY2UoKS5nZXRJbnRlcm5hbENyeXB0b1Rva2VuKCk7Ci0tICAgICAg ICBTaWduYXR1cmUgc2lnID0gdG9rZW4uZ2V0U2lnbmF0dXJlQ29udGV4dCggc2lnQWxnICk7Ci0t ICAgICAgICBzaWcuaW5pdFZlcmlmeShwdWJrZXkpOwotKyAgICAgICAgU2lnbmF0dXJlIHNpZzsK LSAKLSAgICAgICAgIC8vIHZlcmlmeSB0aGUgY29udGVudHMgb2N0ZXRzIG9mIHRoZSBERVIgZW5j b2RlZCBzaWduZWQgYXR0cmlicwotLSAgICAgICAgYnl0ZVtdIHRvQmVEaWdlc3RlZCA9IEFTTjFV dGlsLmVuY29kZShzaWduZWRBdHRyaWJ1dGVzKTsKLS0gICAgCi0tICAgICAgICBNZXNzYWdlRGln ZXN0IG1kID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZSgKLS0gICAgICAgICAgICAgICAgRGln ZXN0QWxnb3JpdGhtLmZyb21PSUQoZGlnZXN0QWxnb3JpdGhtLmdldE9JRCgpKS50b1N0cmluZygp ICk7Ci0tICAgICAgICBieXRlW10gZGlnZXN0ID0gbWQuZGlnZXN0KHRvQmVEaWdlc3RlZCk7Ci0t Ci0rICAgICAgICBieXRlW10gZW5jb2RpbmcgPSBBU04xVXRpbC5lbmNvZGUoc2lnbmVkQXR0cmli dXRlcyk7Ci0gICAgICAgICBieXRlW10gdG9CZVZlcmlmaWVkOwotLSAgICAgICAgaWYoIHNpZ0Fs Zy5nZXRSYXdBbGcoKSA9PSBTaWduYXR1cmVBbGdvcml0aG0uUlNBU2lnbmF0dXJlICkgewotKyAg ICAgICAgaWYgKHNpZ0FsZy5nZXRSYXdBbGcoKSA9PSBTaWduYXR1cmVBbGdvcml0aG0uUlNBU2ln bmF0dXJlKSB7Ci0gICAgICAgICAgICAgLy8gY3JlYXRlIERpZ2VzdEluZm8gc3RydWN0dXJlCi0t ICAgICAgICAgICAgU0VRVUVOQ0UgZGlnZXN0SW5mbyA9IG5ldyBTRVFVRU5DRSgpOwotLQkJCi0t ICAgICAgICAgICAgQWxnb3JpdGhtSWRlbnRpZmllciBkaWdlc3RBbGdJZCA9Ci0tICAgICAgICAg ICAgICAgICAgICBuZXcgQWxnb3JpdGhtSWRlbnRpZmllciggZGlnZXN0QWxnb3JpdGhtLmdldE9J RCgpLG51bGwgKTsKLS0gICAgICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQoIGRpZ2VzdEFs Z0lkICk7Ci0tCQkKLS0gICAgICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQoIG5ldyBPQ1RF VF9TVFJJTkcoZGlnZXN0KSApOwotKyAgICAgICAgICAgIFNFUVVFTkNFIGRpZ2VzdEluZm8gPSBj cmVhdGVEaWdlc3RJbmZvKGVuY29kaW5nLCB0cnVlKTsKLSAgICAgICAgICAgICB0b0JlVmVyaWZp ZWQgPSBBU04xVXRpbC5lbmNvZGUoZGlnZXN0SW5mbyk7Ci0rICAgICAgICAgICAgc2lnID0gdG9r ZW4uZ2V0U2lnbmF0dXJlQ29udGV4dChTaWduYXR1cmVBbGdvcml0aG0uUlNBU2lnbmF0dXJlKTsK LSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgdG9CZVZlcmlmaWVkID0gZGlnZXN0Owot KyAgICAgICAgICAgIHRvQmVWZXJpZmllZCA9IGVuY29kaW5nOwotKyAgICAgICAgICAgIHNpZyA9 IHRva2VuLmdldFNpZ25hdHVyZUNvbnRleHQoc2lnQWxnKTsKLSAgICAgICAgIH0KLSAgCi0rICAg ICAgICBzaWcuaW5pdFZlcmlmeShwdWJrZXkpOwotICAgICAgICAgc2lnLnVwZGF0ZSggdG9CZVZl cmlmaWVkICk7Ci0gCi0gICAgICAgICBpZiggISBzaWcudmVyaWZ5KGVuY3J5cHRlZERpZ2VzdC50 b0J5dGVBcnJheSgpKSApIHsKLUBAIC03MDgsNiArNjIyLDI1IEBACi0gICAgICAgICAvLyBTVUND RVNTRlVMTFkgVkVSSUZJRUQKLSAKLSAgICAgfQotKyAgICAgICAgCi0rICAgIHByaXZhdGUgU0VR VUVOQ0UgY3JlYXRlRGlnZXN0SW5mbyhieXRlW10gZGF0YSwgYm9vbGVhbiBkb0RpZ2VzdCkgdGhy b3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiB7Ci0rICAgICAgICBpZihkYXRhID09IG51bGwg fHwgZGF0YS5sZW5ndGggPT0gMCl7Ci0rICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1 bWVudEV4Y2VwdGlvbigiRGF0YSB0byBkaWdlc3QgbXVzdCBiZSBzdXBwbGllZCIpOwotKyAgICAg ICAgfQotKyAgICAgICAgU0VRVUVOQ0UgZGlnZXN0SW5mbyA9IG5ldyBTRVFVRU5DRSgpOwotKyAg ICAgICAgZGlnZXN0SW5mby5hZGRFbGVtZW50KHRoaXMuZGlnZXN0QWxnb3JpdGhtKTsKLSsgICAg ICAgIGJ5dGVbXSBkaWdlc3Q7Ci0rICAgICAgICBpZiAoZG9EaWdlc3QpIHsKLSsgICAgICAgICAg ICBNZXNzYWdlRGlnZXN0IG1kID0gTWVzc2FnZURpZ2VzdC5nZXRJbnN0YW5jZSgKLSsgICAgICAg ICAgICAgICAgICAgIERpZ2VzdEFsZ29yaXRobS5mcm9tT0lEKHRoaXMuZGlnZXN0QWxnb3JpdGht LmdldE9JRCgpKS50b1N0cmluZygpKTsKLSsgICAgICAgICAgICBkaWdlc3QgPSBtZC5kaWdlc3Qo ZGF0YSk7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGRpZ2VzdCA9IGRhdGE7Ci0r ICAgICAgICB9Ci0rICAgICAgICBkaWdlc3RJbmZvLmFkZEVsZW1lbnQobmV3IE9DVEVUX1NUUklO RyhkaWdlc3QpKTsKLSsgICAgICAgIHJldHVybiBkaWdlc3RJbmZvOwotKyAgICB9Ci0rCi0gCi0g ICAgIC8qKgotICAgICAgKiBDb21wYXJlcyB0d28gbm9uLW51bGwgYnl0ZSBhcnJheXMuICBSZXR1 cm5zIHRydWUgaWYgdGhleSBhcmUgaWRlbnRpY2FsLAoKZGlmZiAtLWdpdCBhL2pzcy1zdGFuZGFy ZGl6ZS1FQ0MtYWxnb3JpdGhtLW5hbWVzLnBhdGNoIGIvanNzLXN0YW5kYXJkaXplLUVDQy1hbGdv cml0aG0tbmFtZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNDdmZGIu LjAwMDAwMDAKLS0tIGEvanNzLXN0YW5kYXJkaXplLUVDQy1hbGdvcml0aG0tbmFtZXMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBV c2VyIERhdmlkIFN0dXR6bWFuPGRhdmlkLmtvbnJhZC5zdHV0em1hbkB1cy5hcm15Lm1pbD4KLSMg RGF0ZSAxNTE1NzIyNDAwIDI4ODAwCi0jICAgICAgVGh1IEphbiAxMSAxODowMDowMCAyMDE4IC0w ODAwCi0jIE5vZGUgSUQgODc0NmEzZmM3NDc4NWUyZmQxMmY4NmQwOGE2ODg2ZWQ5MTYwNjIwZQot IyBQYXJlbnQgIDllMmRiN2VlZTY2NTIzMzA3MjNkOTM1YzJiOTAwYjliMDliMWFiOWQKLUJ1ZyA1 ODkxNTggQWRkIHN1cHBvcnQgZm9yIEphdmEgU2VjdXJpdHkgU3RhbmRhcmQgQWxnb3JpdGhtIE5h bWVzIGZvciBFQyBTaWduYXR1cmUgdHlwZXMKLQotVGhpcyBwYXRjaCBhZGRzIHRoZSBhbGlhc2Vz IGZvciBKYXZhIFNlY3VyaXR5IFN0YW5kYXJkIEFsZ29yaXRobSBOYW1lcyBmb3IgRUMgU2lnbmF0 dXJlIHR5cGVzLgotCi1jZnUgZm9yIGRzdHV0em1hbiAocmV2aWV3ZWQgYnkgd3RjKQotCi1kaWZm IC0tZ2l0IGEvb3JnL21vemlsbGEvanNzL0pTU1Byb3ZpZGVyLmphdmEgYi9vcmcvbW96aWxsYS9q c3MvSlNTUHJvdmlkZXIuamF2YQotLS0tIGEvb3JnL21vemlsbGEvanNzL0pTU1Byb3ZpZGVyLmph dmEKLSsrKyBiL29yZy9tb3ppbGxhL2pzcy9KU1NQcm92aWRlci5qYXZhCi1AQCAtNzksMjEgKzc5 LDI1IEBACi0gICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUuU0hBLTEvRUMiLCAiU0hB MXdpdGhFQyIpOwotICAgICAgICAgcHV0KCJBbGcuQWxpYXMuU2lnbmF0dXJlLlNIQS9FQ0RTQSIs ICJTSEExd2l0aEVDIik7Ci0gICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUuU0hBMS9F Q0RTQSIsICJTSEExd2l0aEVDIik7Ci0rICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUu U0hBMXdpdGhFQ0RTQSIsICJTSEExd2l0aEVDIik7IC8vSkNFIFN0YW5kYXJkIE5hbWUKLSAKLSAg ICAgICAgIHB1dCgiU2lnbmF0dXJlLlNIQTI1NndpdGhFQyIsCi0gICAgICAgICAgICAgIm9yZy5t b3ppbGxhLmpzcy5wcm92aWRlci5qYXZhLnNlY3VyaXR5LkpTU1NpZ25hdHVyZVNwaSRTSEEyNTZF QyIpOwotICAgICAgICAgcHV0KCJBbGcuQWxpYXMuU2lnbmF0dXJlLlNIQTI1Ni9FQyIsICJTSEEy NTZ3aXRoRUMiKTsKLSAgICAgICAgIHB1dCgiQWxnLkFsaWFzLlNpZ25hdHVyZS5TSEEtMjU2L0VD IiwgIlNIQTI1NndpdGhFQyIpOwotKyAgICAgICAgcHV0KCJBbGcuQWxpYXMuU2lnbmF0dXJlLlNI QTI1NndpdGhFQ0RTQSIsICJTSEEyNTZ3aXRoRUMiKTsgLy9KQ0UgU3RhbmRhcmQgTmFtZQotIAot ICAgICAgICAgcHV0KCJTaWduYXR1cmUuU0hBMzg0d2l0aEVDIiwKLSAgICAgICAgICAgICAib3Jn Lm1vemlsbGEuanNzLnByb3ZpZGVyLmphdmEuc2VjdXJpdHkuSlNTU2lnbmF0dXJlU3BpJFNIQTM4 NEVDIik7Ci0gICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUuU0hBMzg0L0VDIiwgIlNI QTM4NHdpdGhFQyIpOwotICAgICAgICAgcHV0KCJBbGcuQWxpYXMuU2lnbmF0dXJlLlNIQS0zODQv RUMiLCAiU0hBMzg0d2l0aEVDIik7Ci0rICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUu U0hBMzg0d2l0aEVDRFNBIiwgIlNIQTM4NHdpdGhFQyIpOyAvL0pDRSBTdGFuZGFyZCBOYW1lCi0g Ci0gICAgICAgICBwdXQoIlNpZ25hdHVyZS5TSEE1MTJ3aXRoRUMiLAotICAgICAgICAgICAgICJv cmcubW96aWxsYS5qc3MucHJvdmlkZXIuamF2YS5zZWN1cml0eS5KU1NTaWduYXR1cmVTcGkkU0hB NTEyRUMiKTsKLSAgICAgICAgIHB1dCgiQWxnLkFsaWFzLlNpZ25hdHVyZS5TSEE1MTIvRUMiLCAi U0hBNTEyd2l0aEVDIik7Ci0gICAgICAgICBwdXQoIkFsZy5BbGlhcy5TaWduYXR1cmUuU0hBLTUx Mi9FQyIsICJTSEE1MTJ3aXRoRUMiKTsKLSsgICAgICAgIHB1dCgiQWxnLkFsaWFzLlNpZ25hdHVy ZS5TSEE1MTJ3aXRoRUNEU0EiLCAiU0hBNTEyd2l0aEVDIik7IC8vSkNFIFN0YW5kYXJkIE5hbWUK LSAKLSAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgIC8vIE1lc3NhZ2UgRGlnZXN0aW5nCgpkaWZmIC0t Z2l0IGEvanNzLnNwZWMgYi9qc3Muc3BlYwppbmRleCA3NjBkNzFhLi5lYmY5MGM1IDEwMDY0NAot LS0gYS9qc3Muc3BlYworKysgYi9qc3Muc3BlYwpAQCAtMSwxNyArMSwyNCBAQAogTmFtZTogICAg ICAgICAgIGpzcwotVmVyc2lvbjogICAgICAgIDQuNC4yCi1SZWxlYXNlOiAgICAgICAgMTAlez9k aXN0fQorVmVyc2lvbjogICAgICAgIDQuNC4zCitSZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9CiBT dW1tYXJ5OiAgICAgICAgSmF2YSBTZWN1cml0eSBTZXJ2aWNlcyAoSlNTKQogCiBHcm91cDogICAg ICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwogTGljZW5zZTogICAgICAgIE1QTHYx LjEgb3IgR1BMdjIrIG9yIExHUEx2MisKIFVSTDogICAgICAgICAgICBodHRwOi8vd3d3Lm1vemls bGEub3JnL3Byb2plY3RzL3NlY3VyaXR5L3BraS9qc3MvCi0jIFRoZSBzb3VyY2UgZm9yIHRoaXMg cGFja2FnZSB3YXMgcHVsbGVkIGZyb20gdXBzdHJlYW0ncyBoZy4gVXNlIHRoZQotIyBmb2xsb3dp bmcgY29tbWFuZHMgdG8gZ2VuZXJhdGUgdGhlIHRhcmJhbGw6CisjIFRoZSBzb3VyY2UgZm9yIHRo aXMgcGFja2FnZSB3YXMgcHVsbGVkIGZyb20gdXBzdHJlYW0gcmVwb3NpdG9yeS4KKyMKKyMgVG8g Z2VuZXJhdGUgdGhlIHRhcmJhbGwgd2l0aCBIRzoKICMKICMgaGcgY2xvbmUgaHR0cHM6Ly9oZy5t b3ppbGxhLm9yZy9wcm9qZWN0cy9qc3MKICMgY2QganNzCi0jIGhnIGFyY2hpdmUgLS1wcmVmaXgg anNzLTQuNC4yL2pzcy8gLi4vanNzLTQuNC4yLnRhci5negorIyBoZyBhcmNoaXZlIC0tcHJlZml4 IGpzcy00LjQuMy9qc3MvIC4uL2pzcy00LjQuMy50YXIuZ3oKKyMKKyMgVG8gZ2VuZXJhdGUgdGhl IHRhcmJhbGwgd2l0aCBHaXQ6CisjCisjIGdpdCBjbG9uZSBoZzo6aHR0cHM6Ly9oZy5tb3ppbGxh Lm9yZy9wcm9qZWN0cy9qc3MKKyMgY2QganNzCisjIGdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhci5n eiAtLXByZWZpeCBqc3MtNC40LjMvanNzLyAtbyAuLi9qc3MtNC40LjMudGFyLmd6IC12IEhFQUQK ICMKIFNvdXJjZTA6ICAgICAgICBodHRwOi8vcGtpLmZlZG9yYXByb2plY3Qub3JnL3BraS9zb3Vy Y2VzLyV7bmFtZX0vJXt2ZXJzaW9ufS8le25hbWV9LSV7dmVyc2lvbn0udGFyLmd6CiBTb3VyY2Ux OiAgICAgICAgaHR0cDovL3BraS5mZWRvcmFwcm9qZWN0Lm9yZy9wa2kvc291cmNlcy8le25hbWV9 LyV7dmVyc2lvbn0vTVBMLTEuMS50eHQKQEAgLTMxLDE2ICszOCw2IEBAIEJ1aWxkUmVxdWlyZXM6 ICBwZXJsLWludGVycHJldGVyCiBSZXF1aXJlczogICAgICAgamF2YS1oZWFkbGVzcwogUmVxdWly ZXM6ICAgICAgIG5zcyA+PSAzLjI4LjQtNgogCi1QYXRjaDE6ICAgICAgICAganNzLUhNQUMtdGVz dC1mb3ItQUVTLWVuY3J5cHQtdW53cmFwLnBhdGNoCi1QYXRjaDI6ICAgICAgICAganNzLVBCRS1w YWRkZWQtYmxvY2stY2lwaGVyLWVuaGFuY2VtZW50cy5wYXRjaAotUGF0Y2gzOiAgICAgICAgIGpz cy1maXgtUEsxMVN0b3JlLWdldEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLXNlZ2ZhdWx0LnBhdGNo Ci1QYXRjaDQ6ICAgICAgICAganNzLUhNQUMtdW53cmFwLWtleXdyYXAtRklQU01PREUucGF0Y2gK LVBhdGNoNTogICAgICAgICBqc3MtU2lnbmF0dXJlQWxnb3JpdGhtLnBhdGNoCi1QYXRjaDY6ICAg ICAgICAganNzLU9iamVjdE5vdEZvdW5kRXhjZXB0aW9uLW1lc3NhZ2UucGF0Y2gKLVBhdGNoNzog ICAgICAgICBqc3Mtc2lnbmF0dXJlLWNvcnJlY3Rpb24ucGF0Y2gKLVBhdGNoODogICAgICAgICBq c3Mtc3RhbmRhcmRpemUtRUNDLWFsZ29yaXRobS1uYW1lcy5wYXRjaAotUGF0Y2g5OiAgICAgICAg IGpzcy1maXgtU2lnbmVySW5mby12ZXJzaW9uLnBhdGNoCi0KICVkZXNjcmlwdGlvbgogSmF2YSBT ZWN1cml0eSBTZXJ2aWNlcyAoSlNTKSBpcyBhIGphdmEgbmF0aXZlIGludGVyZmFjZSB3aGljaCBw cm92aWRlcyBhIGJyaWRnZQogZm9yIGphdmEtYmFzZWQgYXBwbGljYXRpb25zIHRvIHVzZSBuYXRp dmUgTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKS4KQEAgLTU1LDIwICs1MiwxMiBAQCBS ZXF1aXJlczogICAgICAganNzID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBUaGlzIHBhY2thZ2Ug Y29udGFpbnMgdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBKU1MuCiAKICVwcmVwCi0lc2V0dXAg LXEgLW4gJXtuYW1lfS0le3ZlcnNpb259Ci1wdXNoZCBqc3MKLSVwYXRjaDEgLXAxCi0lcGF0Y2gy IC1wMQotJXBhdGNoMyAtcDEKLSVwYXRjaDQgLXAxCi0lcGF0Y2g1IC1wMQotJXBhdGNoNiAtcDEK LSVwYXRjaDcgLXAxCi0lcGF0Y2g4IC1wMQotJXBhdGNoOSAtcDEKLXBvcGQKKyVhdXRvc2V0dXAg LW4gJXtuYW1lfS0le3ZlcnNpb259CiAKICVidWlsZAorCislc2V0X2J1aWxkX2ZsYWdzCisKIFsg LXogIiRKQVZBX0hPTUUiIF0gJiYgZXhwb3J0IEpBVkFfSE9NRT0le19qdm1kaXJ9L2phdmEKIFsg LXogIiRVU0VfSU5TVEFMTEVEX05TUFIiIF0gJiYgZXhwb3J0IFVTRV9JTlNUQUxMRURfTlNQUj0x CiBbIC16ICIkVVNFX0lOU1RBTExFRF9OU1MiIF0gJiYgZXhwb3J0IFVTRV9JTlNUQUxMRURfTlNT PTEKQEAgLTE1NSwzNTEgKzE0NCw2IEBAIGNwIC1wICoudHh0ICRSUE1fQlVJTERfUk9PVCV7X2ph dmFkb2NkaXJ9LyV7bmFtZX0tJXt2ZXJzaW9ufQogJXtfamF2YWRvY2Rpcn0vJXtuYW1lfS0le3Zl cnNpb259LyoKIAogJWNoYW5nZWxvZwotKiBXZWQgRmViIDA3IDIwMTggRmVkb3JhIFJlbGVhc2Ug RW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA0LjQuMi0xMAotLSBSZWJ1 aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI4X01hc3NfUmVi dWlsZAotCi0qIE1vbiBKYW4gMjIgMjAxOCBEb2d0YWcgVGVhbSA8cGtpLWRldmVsQHJlZGhhdC5j b20+IDQuNC4yLTkKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTQwOTg2NyAtIG9yZy5tb3ppbGxhLmpz cy5wa2l4LmNtcy5TaWduZXJJbmZvIGluY29ycmVjdGx5Ci0gIHByb2R1Y2luZyBzaWduYXR1cmVz IChlc3BlY2lhbGx5IGZvciBFQykgKGNmdSxkc3R1dHptYW4pCi0tIE1vemlsbGEgQnVnemlsbGEg IzU4OTE1OCAtIEFkZCBTdW4ncyBzdGFuZGFyZCBhbGdvcml0aG0gbmFtZXMgZm9yIGFsbCBFQ0MK LSAgc2lnbmF0dXJlIHR5cGVzIChjZnUsZHN0dXR6bWFuKQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMz ODYzNTEgLSBTaWduZXJJbmZvIGNsYXNzIGluc2VydHMgd3JvbmcgdmVyc2lvbiAjIGludG8KLSAg dGhlIHJlc3VsdGluZyBzdHJ1Y3R1cmUgKGNmdSxkc3R1dHptYW4pCi0KLSogTW9uIEphbiAwOCAy MDE4IEthcnN0ZW4gSG9wcCA8a2Fyc3RlbkByZWRoYXQuY29tPiAtIDQuNC4yLTgKLS0gdXBkYXRl IGJ1aWxkIGRlcGVuZGVuY2llcwotCi0qIFdlZCBOb3YgIDEgMjAxNyBEb2d0YWcgVGVhbSA8cGtp LWRldmVsQHJlZGhhdC5jb20+IDQuNC4yLTcKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTQwODA1NyAt IEpTUyB0aHJvd3MgT2JqZWN0Tm90Rm91bmRFeGNlcHRpb24gd2l0aG91dAotICBtZXNzYWdlIChl ZGV3YXRhKQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxNDA5ODY3IC0gb3JnLm1vemlsbGEuanNzLnBr aXguY21zLlNpZ25lckluZm8gaW5jb3JyZWN0bHkKLSAgcHJvZHVjaW5nIHNpZ25hdHVyZXMgKGVz cGVjaWFsbHkgZm9yIEVDKSAoY2Z1LGRzdHV0em1hbikKLQotKiBGcmkgT2N0IDI3IDIwMTcgRG9n dGFnIFRlYW0gPHBraS1kZXZlbEByZWRoYXQuY29tPiA0LjQuMi02Ci0tIE1vemlsbGEgQnVnemls bGEgIzE0MDA4ODQgLSBuZXcgSlNTIGZhaWx1cmVzOiBITUFDIFVud3JhcCBhbmQgS2V5V3JhcHBp bmcKLSAgRklQU01PREUgKGptYWduZSkKLQotKiBNb24gU2VwIDExIDIwMTcgRG9ndGFnIFRlYW0g PHBraS1kZXZlbEByZWRoYXQuY29tPiA0LjQuMi01Ci0tIE1vemlsbGEgQnVnemlsbGEgIzEzNzA3 NzggLSBQQkUgYW5kIHBhZGRlZCBibG9jayBjaXBoZXIgZW5oYW5jZW1lbnRzIGFuZAotICBmaXhl cyAoZnR3ZWVkYWwpCi0tIE1vemlsbGEgQnVnemlsbGEgIzEzNzExNDcgLSBQSzExU3RvcmUuZ2V0 RW5jcnlwdGVkUHJpdmF0ZUtleUluZm8oKSBzZWdmYXVsdAotICBpZiBleHBvcnQgZmFpbHMgKGZ0 d2VlZGFsKQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzczODI0IC0gTW96aWxsYSBCdWcgIzEzNzM4 MjQgLSBCdWcgMTMwODAyNyAoY2hhbmdlIDIxNjMpCi0gIGJyZWFrcyBITUFDLVNIQTEga2V5IGlt cG9ydHMgKGptYWduZSkKLQotKiBUaHUgQXVnIDAzIDIwMTcgRmVkb3JhIFJlbGVhc2UgRW5naW5l ZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA0LjQuMi00Ci0tIFJlYnVpbHQgZm9y IGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjdfQmludXRpbHNfTWFzc19S ZWJ1aWxkCi0KLSogV2VkIEp1bCAyNiAyMDE3IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gNC40LjItMwotLSBSZWJ1aWx0IGZvciBodHRwczov L2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI3X01hc3NfUmVidWlsZAotCi0qIFR1ZSBN YXkgIDkgMjAxNyBNYXR0aGV3IEhhcm1zZW4gPG1oYXJtc2VuQHJlZGhhdC5jb20+IC0gNC40LjIt MgotLSBCdW1wIE5TUyBkZXBlbmRlbmNpZXMgZnJvbSA0LjI4LjMgdG8gNC4yOC40LTYgdG8gcGlj ay11cCBmaXggaW4KLSAgTW96aWxsYSBCdWd6aWxsYSAjMTM2MDIwNyAtIEZpeCBpbmNvcnJlY3Qg aWYgKHNzLT4uLi4pIGluIFNTTF9SZWNvbmZpZ0ZECi0KLSogTW9uIE1heSAgMSAyMDE3IE1hdHRo ZXcgSGFybXNlbiA8bWhhcm1zZW5AcmVkaGF0LmNvbT4gLSA0LjQuMi0xCi0tIE1vemlsbGEgQnVn emlsbGEgIzEzNTI0NzYgLSBSRkU6IERvY3VtZW50IG9uIHRoZSBSRUFETUUgaG93IHRvIGNyZWF0 ZSBhCi0gIHJlbGVhc2UgdGFnIChtaGFybXNlbikKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTM1NTM1 OCAtIENyeXB0b1N0b3JlOiBhZGQgbWV0aG9kcyBmb3IgaW1wb3J0aW5nIGFuZAotICBleHBvcnRp bmcgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gKGZ0d2VlZGFsKQotLSBNb3ppbGxhIEJ1Z3ppbGxh ICMxMzU5NzMxIC0gQ3J5cHRvU3RvcmUuaW1wb3J0UHJpdmF0ZUtleSBlbmhhbmNlbWVudHMKLSAg KGZ0d2VlZGFsKQotCi0qIE1vbiBBcHIgMTcgMjAxNyBNYXR0aGV3IEhhcm1zZW4gPG1oYXJtc2Vu QHJlZGhhdC5jb20+IC0gNC40LjEtMgotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzU1MjY4IC0gSlNT IDQuNCBpcyBpbmNvbXBhdGlibGUgd2l0aCB2ZXJzaW9ucyBvZgotICBpZG0tY29uc29sZS1mcmFt ZXdvcmsgPCAxLjEuMTctNAotLSBSZWQgSGF0IEJ1Z3ppbGxhICMxNDM1MDc2IC0gUmVtb3ZlIHVu dXNlZCBsZWdhY3kgbGluZXMgZnJvbSBKU1Mgc3BlYyBmaWxlcwotCi0qIE1vbiBNYXIgMjcgMjAx NyBNYXR0aGV3IEhhcm1zZW4gPG1oYXJtc2VuQHJlZGhhdC5jb20+IC0gNC40LjEtMQotLSBCdWd6 aWxsYSBCdWcgIzE0MzE5MzcgLSBSZWJhc2UganNzIHRvIDQuNC54IGluIEZlZG9yYSAyNSsKLS0g VXBkYXRlZCBidWlsZCByZXF1aXJlbWVudHMgZm9yIE5TUFIKLS0gVXBkYXRlZCBidWlsZCBhbmQg cnVudGltZSByZXF1aXJlbWVudHMgZm9yIE5TUwotLSAjIyAnanNzLXBvc3QtcmViYXNlLnBhdGNo JyByZXNvbHZlcyB0aGUgZm9sbG93aW5nIGlzc3VlcyBwb3J0ZWQgZnJvbQotICAjIyB1cHN0cmVh bToKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTMzNzA5MiAtIENNQyBjb25mb3JtYW5jZSB1cGRhdGU6 IEltcGxlbWVudCByZXF1aXJlZCBBU04uMQotICBjb2RlIGZvciBSRkM1MjcyKyAoY2Z1KQotLSBN b3ppbGxhIEJ1Z3ppbGxhICMxMzQ3Mzk0IC0gRWNsaXBzZSBwcm9qZWN0IGZpbGVzIGZvciBKU1Mg KGVkZXdhdGEpCi0tIE1vemlsbGEgQnVnemlsbGEgIzEzNDc0MjkgLSBEZXByZWNhdGVkIFNTTCAz LjAgY2lwaGVyIG5hbWVzIGluIFNTTFNvY2tldAotICBjbGFzcy4gKGVkZXdhdGEpCi0tIE1vemls bGEgQnVnemlsbGEgIzEzNDg4NTYgLSBTU0wgYWxlcnQgY2FsbGJhY2sgKGVkZXdhdGEpCi0tIE1v emlsbGEgQnVnemlsbGEgIzEzNDkyNzggLSBTU0wgY2lwaGVyIGVudW1lcmF0aW9uIChlZGV3YXRh KQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzQ5MzQ5IC0gUHJvYmxlbSB3aXRoIFBhc3N3b3JkLnJl YWRQYXNzd29yZEZyb21Db25zb2xlKCkuCi0gIChlZGV3YXRhKQotLSBNb3ppbGxhIEJ1Z3ppbGxh ICMxMzQ5ODMxIC0gUmV2aXNlIHRvcC1sZXZlbCBSRUFETUUgZmlsZSAobWhhcm1zZW4pCi0tIE1v emlsbGEgQnVnemlsbGEgIzEzNDk4MzYgLSBDaGFuZ2VzIHRvIEpTUyBWZXJzaW9uIEJsb2NrICht aGFybXNlbikKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTM1MDEzMCAtIE1pc3NpbmcKLSAgQ3J5cHRv TWFuYWdlci52ZXJpZnlDZXJ0aWZpY2F0ZU5vd0NVTmF0aXZlKCkgaW1wbGVtZW50YXRpb24uIChl bWFsZG9uYSkKLQotKiBUdWUgTWFyIDIxIDIwMTcgTWF0dGhldyBIYXJtc2VuIDxtaGFybXNlbkBy ZWRoYXQuY29tPiAtIDQuNC4wLTMKLS0gQnVnemlsbGEgQnVnICMxNDM0NTM1IC0gIEpTUyA0LjQu eCBpcyBpbmNvbXBhdGlibGUgd2l0aCB2ZXJzaW9ucyBvZgotICBwa2ktYmFzZSA8IDEwLjQuMAot Ci0qIFdlZCBNYXIgMTUgMjAxNyBNYXR0aGV3IEhhcm1zZW4gPG1oYXJtc2VuQHJlZGhhdC5jb20+ IC0gNC40LjAtMgotLSBCdWd6aWxsYSBCdWcgIzE0MzI1NjggLSBKU1MgNC40LnggaXMgaW5jb21w YXRpYmxlIHdpdGggdmVyc2lvbnMgb2YKLSAgdG9tY2F0anNzIDwgNy4yLjEgCi0KLSogTW9uIE1h ciAxMyAyMDE3IEVsaW8gTWFsZG9uYWRvIDxlbWFsZG9uYUByZWRoYXQuY29tPiAtIDQuNC4wLTEK LS0gQnVnemlsbGEgQnVnICMxNDMxOTM3IC0gUmViYXNlIGpzcyB0byA0LjQueCBpbiBGZWRvcmEg MjUrCi0tICMjIEpTUyA0LjQuMCBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHBhdGNoZXMgcG9ydGVk IGZyb20gZG93bnN0cmVhbToKLS0gTW96aWxsYSBCdWd6aWxsYSAjNTA3NTM2IC0gQWRkIElQdjYg ZnVuY3Rpb25hbGl0eSB0byBKU1MKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTMwNzg3MiAtIEV4cG9z ZSBOU1MgY2FsbHMgZm9yIE9DU1Agc2V0dGluZ3MKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTMwNzg4 MiAtIFJGRSBlY2MgLSBhZGQgZWNjIGN1cnZlIG5hbWUgc3VwcG9ydCBpbiBKU1MgYW5kCi0gIENT IGludGVyZmFjZQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzA3OTkzIC0gRXhwb3NlIHVwZGF0ZWQg Y2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uCi0gIGluIEpTUwotLSBNb3ppbGxhIEJ1 Z3ppbGxhICMxMzA4MDAwIC0gSW5jb3JyZWN0IHNvY2tldCBhY2NlcHQgZXJyb3IgbWVzc2FnZSBk dWUgdG8gYmFkCi0gIHBvaW50ZXIgYXJpdGhtZXRpYwotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzA4 MDAxIC0gVmVyaWZpY2F0aW9uIHNob3VsZCBmYWlsIHdoZW4gYSByZXZva2VkCi0gIGNlcnRpZmlj YXRlIGlzIGFkZGVkCi0tIE1vemlsbGEgQnVnemlsbGEgIzEzMDgwMDQgLSBXYXJuaW5ncyBzaG91 bGQgYmUgY2xlYW5lZCB1cCBpbiBKU1MgYnVpbGQKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTMwODAw NiAtIERSTSBmYWlsZWQgdG8gcmVjb3Zlcnkga2V5cyB3aGVuIGluIEZJUFMgbW9kZQotICAoSFNN ICsgTlNTKQotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzA4MDA4IC0gRGVmZWN0cyByZXZlYWxlZCBi eSBDb3Zlcml0eSBzY2FuCi0tIE1vemlsbGEgQnVnemlsbGEgIzEzMDgwMDkgLSBBZGQgc3VwcG9y dCBmb3IgUEtDUzV2Mjsgc3VwcG9ydCBmb3Igc2VjdXJlIFBLQ1MxMgotLSBNb3ppbGxhIEJ1Z3pp bGxhICMxMzA4MDEyIC0gRFJNOiBkdXJpbmcgYXJjaGl2aW5nIGFuZCByZWNvdmVyaW5nLCB3cmFw cGluZwotICB1bndyYXBwaW5nIGtleXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIHRva2VuCi0tIE1v emlsbGEgQnVnemlsbGEgIzEzMDgwMTMgLSBKU1MgLSBIU00gdG9rZW4gbmFtZSB3YXMgbWlzdGFr ZW4gZm9yCi0gIG1hbnVmYWN0dXJlciBpZGVudGlmaWVyCi0tIE1vemlsbGEgQnVnemlsbGEgIzEz MDgwMTcgLSBVbi1kZXByZWNhdGUgcHJldmlvdXNseSBkZXByZWNhdGVkIG1ldGhvZHMgaW4KLSAg SlNTIDQuMi42Ci0tIE1vemlsbGEgQnVnemlsbGEgIzEzMDgwMTkgLSBQcm92aWRlIFRvbWNhdCBz dXBwb3J0IGZvciBUTFMgdjEuMSBhbmQKLSAgVExTIHYxLjIgdmlhIE5TUyB0aHJvdWdoIEpTUwot LSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzA4MDI2IC0gSlNTIGNlcnRpZmljYXRlIHZhbGlkYXRpb24g ZG9lcyBub3QgcGFzcyB1cCBleGFjdAotICBlcnJvciBmcm9tIE5TUwotLSBNb3ppbGxhIEJ1Z3pp bGxhICMxMzA4MDI3IC0gTWVyZ2UgcGtpLXN5bWtleSBpbnRvIGpzcwotLSBNb3ppbGxhIEJ1Z3pp bGxhICMxMzA4MDI5IC0gUmVzb2x2ZSBKYXZhZG9jIGJ1aWxkIGlzc3VlcwotLSBNb3ppbGxhIEJ1 Z3ppbGxhICMxMzA4MDQ3IC0gc3VwcG9ydCBFQ0MgZW5jcnlwdGlvbiBrZXkgYXJjaGl2YWwgYW5k IHJlY292ZXJ5Ci0tIE1vemlsbGEgQnVnemlsbGEgIzEzMTMxMjIgLSBSZW1vdmUgYnlwYXNzIHRl c3RzIGFzIGxhdGVzdCBOU1MgaGFzIHJlbW92ZWQKLSAgUEtDUyMxMSBieXBhc3Mgc3VwcG9ydAot LSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzI4Njc1IC0gU2ltcGxlIHByb2JsZW0gdW53cmFwcGluZyBB RVMgc3ltIGtleXMgb24gdG9rZW4KLS0gTW96aWxsYSBCdWd6aWxsYSAjMTM0NTE3NCAtIENhbm5v dCBjcmVhdGUgc3lzdGVtIGNlcnRzIHdoZW4gdXNpbmcgTHVuYVNBIEhTTQotICBpbiBGSVBTIE1v ZGUgYW5kIEVDQyBhbGdvcml0aG1zCi0tIE1vemlsbGEgQnVnemlsbGEgIzEzNDU2MTMgLSBleHBv c2UgQUVTIEtleVdyYXAgYW5kIGFkZCBzb21lIHVzZWZ1bCBPSUQKLSAgZnVuY3Rpb25zCi0tIE1v emlsbGEgQnVnemlsbGEgIzEzNDY0MTAgLSBMb2FkIEpTUyBsaWJyYXJpZXMgYXBwcm9wcmlhdGVs eQotLSAjIyBKU1MgNC40LjAgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIGZvciBidWls ZGluZyBhbmQgdGVzdGluZzoKLS0gTW96aWxsYSBCdWd6aWxsYSAjMTMzMTc2NSAtIFNpbXBsaWZ5 IEpTUyBNYWtlZmlsZSBidWlsZCBhbmQgdGVzdAotLSBNb3ppbGxhIEJ1Z3ppbGxhICMxMzQ2NDIw IC0gRG9jdW1lbnQgc3RlcHMgcmVxdWlyZWQgdG8gdXNlIHRoZSBwcm9wZXIKLSAgbGlianNzNC5z byB3aGVuIHJ1bm5pbmcgY2VydGFpbiBITUFDIEFsZ29yaXRobXMgdGVzdHMKLQotKiBXZWQgRmVi IDIyIDIwMTcgSmFjayBNYWduZSA8am1hZ25lQHJlZGhhdC5jb20+IC0gNC4yLjYtNDQKLS0gQnVn emlsbGEgQnVnICMxNDI1OTcxIC0gU2ltcGxlIHByb2JsZW0gdW53cmFwcGluZyBBRVMgc3ltIGtl eXMgb24gdG9rZW4KLQotKiBGcmkgRmViIDEwIDIwMTcgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJp bmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA0LjIuNi00MwotLSBSZWJ1aWx0IGZvciBo dHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzI2X01hc3NfUmVidWlsZAotCi0q IFR1ZSBBdWcgOSAyMDE2IENocmlzdGluYSBGdSA8Y2Z1QHJlZGhhdC5jb20+IC0gNC4yLjYtNDIK LS0gU3luYyB1cCBwYXRjaGVzIGZyb20gYm90aCBGZWRvcmEgYW5kIFJIRUw7IGFkZGluZyB0d28g cGF0Y2hlcwotICAoY2Z1LCBlZGV3YXRhLCBtaGFybXNlbikgZnJvbSBSSEVMOgotLSBCdWd6aWxs YSBCdWcgIzEyMzg0NTAgLSBVbnNhdGlzZmllZExpbmtFcnJvciBvbiBXaW5kb3dzIChjZnUpCi0t IG1ha2UgaXQgY29tcGlsZSBvbiBXaW5kb3dzIHBsYXRmb3JtcyAoY2Z1IGZvciBuaG9zb2kpCi0K LSogRnJpIEp1biAyNCAyMDE2IENocmlzdGluYSBGdSA8Y2Z1QHJlZGhhdC5jb20+IC0gNC4yLjYt NDEKLS0gQnVnemlsbGEgMTIyMTI5NSBqc3MgZmFpbHMgdG8gZGVjb2RlIEVuY3J5cHRlZEtleSA+ PiBFbnZlbG9wZWREYXRhCi0gIChjZnUgZm9yIHJveXNqb3NoQGdtYWlsLmNvbSkKLQotKiBUaHUg TWF5IDE5IDIwMTYgQ2hyaXN0aW5hIEZ1IDxjZnVAcmVkaGF0LmNvbT4gLSA0LjIuNi00MAotLSBC dWd6aWxsYSAxMDc0MjA4IC0gcGFzcyB1cCBleGFjdCBKU1MgY2VydGlmaWNhdGUgdmFsaWRhdGlv biBlcnJvcnMgZnJvbSBOU1MKLSAgKGVkZXdhdGEpCi0tIEJ1Z3ppbGxhIDEzMzE1OTYgLSBLZXkg YXJjaGl2YWwgZmFpbHMgd2hlbiBLUkEgaXMgY29uZmlndXJlZCB3aXRoIGx1bmFzYS4KLSAgKGNm dSkKLS0gUEtJIHRpY2tldCA4MDEgLSBNZXJnZSBwa2ktc3lta2V5IGludG8ganNzIChwaGFzZSAx KQotICAoam1hZ25lKQotCi0qIFdlZCBEZWMgMDkgMjAxNSBFbmRpIERld2F0YSA8ZWRld2F0YUBy ZWRoYXQuY29tPiAtIDQuMi42LTM4Ci0tIEJ1Z3ppbGxhIEJ1ZyAjMTI4OTc5OSAtIEpTUyBidWls ZCBmYWlsdXJlIG9uIEYyMyBhbmQgUmF3aGlkZSAoZWRld2F0YSkKLQotKiBUaHUgQXByIDA5IDIw MTUgTWFyY2luIEp1c3praWV3aWN6IDxtanVzemtpZXdpY3pAcmVkaGF0LmNvbT4gLSA0LjIuNi0z NwotLSBGaXggdXNlIG9mIF9faXNhX2JpdHMgbWFjcm8gc28gaXQgZG9lcyBub3QgZmFpbCBkdXJp bmcgc3JwbSBnZW5lcmF0aW9uIG9uIGtvamkKLQotKiBUaHUgQXByIDA5IDIwMTUgTWFyY2luIEp1 c3praWV3aWN6IDxtanVzemtpZXdpY3pAcmVkaGF0LmNvbT4gLSA0LjIuNi0zNgotLSBVc2UgX19p c2FfYml0cyBtYWNybyB0byBjaGVjayBmb3IgNjQtYml0IGFyY2guIFVuYmxvY2tzIGFhcmNoNjQg YW5kIHBwYzY0bGUuCi0KLSogVHVlIFNlcCAzMCAyMDE0IENocmlzdGluYSBGdSA8Y2Z1QHJlZGhh dC5jb20+IC0gNC4yLjYtMzUKLS0gQnVnemlsbGEgQnVnICMxMDQwNjQwIC0gSW5jb3JyZWN0IE9J RHMgZm9yIFNIQTIgYWxnb3JpdGhtcwotICAoY2Z1IGZvciBqbmltZWhAZ21haWwuY29tKQotLSBC dWd6aWxsYSBCdWcgIzExMzM3MTggLSBLZXkgc3RyZW5ndGggdmFsaWRhdGlvbiBpcyBub3QgcGVy Zm9ybWVkIGZvciBSQzQKLSAgYWxnb3JpdGhtIChua2luZGVyKQotLSBCdWd6aWxsYSBCdWcgIzgx NjM5NiAtIFByb3ZpZGUgVG9tY2F0IHN1cHBvcnQgZm9yIFRMUyB2MS4xIGFuZAotICBUTFMgdjEu MiB2aWEgTlNTIHRocm91Z2ggSlNTIChjZnUpCi0KLSogU2F0IEF1ZyAxNiAyMDE0IEZlZG9yYSBS ZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDQu Mi42LTM0Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRv cmFfMjFfMjJfTWFzc19SZWJ1aWxkCi0KLSogU3VuIEp1biAwOCAyMDE0IEZlZG9yYSBSZWxlYXNl IEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDQuMi42LTMz Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjFf TWFzc19SZWJ1aWxkCi0KLSogRnJpIE1hciAyOCAyMDE0IE1pY2hhZWwgU2ltYWNlayA8bXNpbWFj ZWtAcmVkaGF0LmNvbT4gLSA0LjIuNi0zMgotLSBVc2UgUmVxdWlyZXM6IGphdmEtaGVhZGxlc3Mg cmVidWlsZCAoIzEwNjc1MjgpCi0KLSogU2F0IEF1ZyAwMyAyMDEzIEZlZG9yYSBSZWxlYXNlIEVu Z2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDQuMi42LTMxCi0t IFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMjBfTWFz c19SZWJ1aWxkCi0KLSogV2VkIEp1bCAxNyAyMDEzIE5hdGhhbiBLaW5kZXIgPG5raW5kZXJAcmVk aGF0LmNvbT4gLSA0LjIuNi0zMAotLSBCdWd6aWxsYSBCdWcgIzg0NzEyMCAtIFVuYWJsZSB0byBi dWlsZCBKU1Mgb24gRjE3IG9yIG5ld2VyCi0KLSogVGh1IEZlYiAxNCAyMDEzIEZlZG9yYSBSZWxl YXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDQuMi42 LTI5Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFf MTlfTWFzc19SZWJ1aWxkCi0KLSogV2VkIERlYyAxOSAyMDEyIFN0YW5pc2xhdiBPY2hvdG5pY2t5 IDxzb2Nob3RuaWNreUByZWRoYXQuY29tPiAtIDQuMi42LTI4Ci0tIHJldmJ1bXAgYWZ0ZXIgam5p ZGlyIGNoYW5nZQotCi0qIFdlZCBEZWMgMTIgMjAxMiBTdGFuaXNsYXYgT2Nob3RuaWNreSA8c29j aG90bmlja3lAcmVkaGF0LmNvbT4gLSA0LjIuNi0yNwotLSBTaW1wbGUgcmVidWlsZAotCi0qIE1v biBOb3YgMTkgMjAxMiBDaHJpc3RpbmEgRnUgPGNmdUByZWRoYXQuY29tPiAtIDQuMi42LTI2Ci0t IGFkZGVkIHNvdXJjZSBVUkxzIGluIHNwZWMgZmlsZSB0byBwYXNzIFBhY2thZ2UgV3JhbmdsZXIK LQotKiBUaHUgSnVsIDE5IDIwMTIgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbC1lbmdA bGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gNC4yLjYtMjUKLS0gUmVidWlsdCBmb3IgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8xOF9NYXNzX1JlYnVpbGQKLQotKiBGcmkg TWFyIDMwIDIwMTIgTWF0dGhldyBIYXJtc2VuIDxtaGFybXNlbkByZWRoYXQuY29tPiAtIDQuMi42 LTI0Ci0tIEJ1Z3ppbGxhIEJ1ZyAjNzgzMDA3IC0gVW4tZGVwcmVjYXRlIHByZXZpb3VzbHkgZGVw cmVjYXRlZCBtZXRob2RzIGluCi0gIEpTUyA0LjIuNiAuIC4gLiBCYWRQYWRkaW5nRXhjZXB0aW9u IChtaGFybXNlbikKLQotKiBUdWUgTWFyIDIwIDIwMTIgQ2hyaXN0aW5hIEZ1IDxjZnVAcmVkaGF0 LmNvbT4gLSA0LjIuNi0yMwotLSBCdWd6aWxsYSBCdWcgIzc5NzM1MSAtIEpTUyAtIEhTTSB0b2tl biBuYW1lIHdhcyBtaXN0YWtlbiBmb3IgbWFudWZhY3R1cmVyCi0gIGlkZW50aWZpZXIgKGNmdSkK LS0gQnVnemlsbGEgQnVnICM4MDQ4NDAgLSBbUkZFXSBFQ0MgZW5jcnlwdGlvbiBrZXlzIGNhbm5v dCBiZSBhcmNoaXZlZAotICBFQ0MgcGhhc2UyIHdvcmsgLSBzdXBwb3J0IGZvciBFQ0MgZW5jcnlw dGlvbiBrZXkgYXJjaGl2YWwgYW5kIHJlY292ZXJ5IChjZnUpCi0tIEJ1Z3ppbGxhIEJ1ZyAjNzgz MDA3IC0gVW4tZGVwcmVjYXRlIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBtZXRob2RzIGluCi0gIEpT UyA0LjIuNiAuIC4gLiAobWhhcm1zZW4pCi0tIERvZ3RhZyBUUkFDIFRhc2sgIzEwOSAoaHR0cHM6 Ly9mZWRvcmFob3N0ZWQub3JnL3BraS90aWNrZXQvMTA5KSAtIGFkZAotICBiZW5pZ24gSk5JIGph ciBmaWxlIHN5bWJvbGljIGxpbmsgZnJvbSBKTkkgbGliZGlyIHRvIEpOSSBqYXIgZmlsZSAobWhh cm1zZW4pCi0KLSogRnJpIEphbiAxMyAyMDEyIEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWwtZW5nQGxpc3RzLmZlZG9yYXByb2plY3Qub3JnPiAtIDQuMi42LTIyCi0tIFJlYnVpbHQgZm9y IGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMTdfTWFzc19SZWJ1aWxkCi0K LSogV2VkIE9jdCAxOSAyMDExIENocmlzdGluYSBGdSA8Y2Z1QHJlZGhhdC5jb20+IC0gNC4yLjYt MjEKLS0gQnVnemlsbGEgQnVnICM3MzcxMjIgLSBEUk06IGR1cmluZyBhcmNoaXZpbmcgYW5kIHJl Y292ZXJpbmcsIHdyYXBwaW5nCi0gIHVud3JhcHBpbmcga2V5cyBzaG91bGQgYmUgZG9uZSBpbiB0 aGUgdG9rZW4KLS0gc3VwcG9ydCBmb3IgUEtDUzV2Mjsgc3VwcG9ydCBmb3Igc2VjdXJlIFBLQ1Mx MgotLSBCdWd6aWxsYSBCdWcgIzc0NDc5NyAtIEtSQSBrZXkgcmVjb3ZlcnkgKHJldHJpZXZlIHBr Y3MjMTIpIGZhaWxzIGFmdGVyIHRoZQotICBpbi1wbGFjZSB1cGdyYWRlKCBDUyA4LjAtPjguMSkK LQotKiBNb24gU2VwIDE5IDIwMTEgTWF0dGhldyBIYXJtc2VuIDxtaGFybXNlbkByZWRoYXQuY29t PiAtIDQuMi42LTIwCi0tIEJ1Z3ppbGxhIEJ1ZyAjNzE1NjIxIC0gRGVmZWN0cyByZXZlYWxlZCBi eSBDb3Zlcml0eSBzY2FuCi0KLSogV2VkIEF1ZyAzMSAyMDExIE1hdHRoZXcgSGFybXNlbiA8bWhh cm1zZW5AcmVkaGF0LmNvbT4gLSA0LjIuNi0xOS4xCi0tIEJ1Z3ppbGxhIEJ1ZyAjNzM0NTkwIC0g UmVmYWN0b3IgSk5JIGxpYnJhcmllcyBmb3IgRmVkb3JhIDE2KyAuIC4gLgotCi0qIE1vbiBBdWcg MTUgMjAxMSBDaHJpc3RpbmEgRnUgPGNmdUByZWRoYXQuY29tPiAtIDQuMi42LTE5Ci0tIEJ1Z3pp bGxhIEJ1ZyA3MzM1NTAgLSBEUk0gZmFpbGVkIHRvIHJlY292ZXJ5IGtleXMgd2hlbiBpbiBGSVBT IG1vZGUKLSAgKEhTTSArIE5TUykKLQotKiBGcmkgQXVnIDEyIDIwMTEgTWF0dGhldyBIYXJtc2Vu IDxtaGFybXNlbkByZWRoYXQuY29tPiAtIDQuMi42LTE4Ci0tIEJ1Z3ppbGxhIEJ1ZyAjNjYwNDM2 IC0gV2FybmluZ3Mgc2hvdWxkIGJlIGNsZWFuZWQgdXAgaW4gSlNTIGJ1aWxkCi0gIChqZGVubmlz LCBtaGFybXNlbikKLQotKiBXZWQgTWF5IDE4IDIwMTEgQ2hyaXN0aW5hIEZ1IDxjZnVAcmVkaGF0 LmNvbT4gLSA0LjIuNi0xNwotLSBCdWcgNjcwOTgwIC0gQ2Fubm90IGNyZWF0ZSBzeXN0ZW0gY2Vy dHMgd2hlbiB1c2luZyBMdW5hU0EgSFNNIGluIEZJUFMgTW9kZQotICBhbmQgRUNDIGFsZ29yaXRo bXMgKHN1cHBvcnQgdG9rZW5zIHRoYXQgZG9uJ3QgZG8gRUNESCkKLQotKiBGcmkgQXByIDA4IDIw MTEgSmFjayBNYWduZSA8am1hZ25lQHJlZGhhdC5jb20+IC0gNC4yLjYtMTUuOTkKLS0gYnVnIDY5 NDY2MSAtIFRLUyBpbnN0YW5jZSBjcmFzaCBkdXJpbmcgdG9rZW4gZW5yb2xsbWVudC4KLSAgQmFj ayBvdXQgb2YgcHJldmlvdXMgcGF0Y2ggZm9yICM2NzYwODMuCi0KLSogVGh1IEZlYiAyNCAyMDEx IEFuZHJldyBXbnVrIDxhd251a0ByZWRoYXQuY29tPiAtIDQuMi42LTE1Ci0tIGJ1ZyA2NzYwODMg LSBKU1M6IHNsb3RzIG5vdCBmcmVlZCAKLQotKiBXZWQgRmViIDA5IDIwMTEgRmVkb3JhIFJlbGVh c2UgRW5naW5lZXJpbmcgPHJlbC1lbmdAbGlzdHMuZmVkb3JhcHJvamVjdC5vcmc+IC0gNC4yLjYt MTQKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8x NV9NYXNzX1JlYnVpbGQKLQotKiBNb24gSmFuIDMxIDIwMTEgSm9obiBEZW5uaXMgPGpkZW5uaXNA cmVkaGF0LmNvbT4gLSA0LjIuNi0xMwotLSByZW1vdmUgbWlzbGVhZGluZyBjb21tZW50IGluIHNw ZWMgZmlsZSBjb25jZXJuaW5nIGphciBzaWduaW5nCi0KLSogVHVlIEphbiAxMSAyMDExIEtldmlu IFdyaWdodCA8a3dyaWdodEByZWRoYXQuY29tPiAtIDQuMi42LTEyCi0tIGFkZGVkIG1pc3Npbmcg cGF0Y2ggbGluZQotCi0qIFR1ZSBEZWMgMjEgMjAxMCBDaHJpc3RpbmEgRnUgPGNmdUByZWRoYXQu Y29tPiAtIDQuMi42LTExCi0tIGJ1ZyA2NTQ2NTcgLSA8amRlbm5pc0ByZWRoYXQuY29tPgotICBJ bmNvcnJlY3Qgc29ja2V0IGFjY2VwdCBlcnJvciBtZXNzYWdlIGR1ZSB0byBiYWQgcG9pbnRlciBh cml0aG1ldGljCi0tIGJ1ZyA2NjExNDIgLSA8Y2Z1QHJlZGhhdC5jb20+Ci0gIFZlcmlmaWNhdGlv biBzaG91bGQgZmFpbCB3aGVuIGEgcmV2b2tlZCBjZXJ0aWZpY2F0ZSBpcyBhZGRlZAotCi0qIFRo dSBEZWMgMTYgMjAxMCBKb2huIERlbm5pcyA8amRlbm5pc0ByZWRoYXQuY29tPiAtIDQuMi42LTEw Ci0tIFJlc29sdmVzOiBidWcgNjU2MDk0IC0gPGpkZW5uaXNAcmVkaGF0LmNvbT4KLSAgUmViYXNl IGpzcyB0byBhdCBsZWFzdCBqc3MtNC4yLjYtOQotLSA8amRlbm5pc0ByZWRoYXQuY29tPgotICBt ZXJnZSBpbiB1cGRhdGVzIGZyb20gRmVkb3JhCi0gIG1vdmUgamFyIGxvY2F0aW9uIHRvICUle19s aWJkaXJ9L2pzcyBhbmQgcHJvdmlkZSBzeW1saW5rcywgb24gMzJiaXQgbG9va3MgbGlrZSB0aGlz OgotICAgIC91c3IvbGliL2phdmEvanNzNC5qYXIgLT4gL3Vzci9saWIvanNzL2pzczQuamFyCi0g ICAgL3Vzci9saWIvanNzL2pzczQtPHZlcnNpb24+LmphcgotICAgIC91c3IvbGliL2pzcy9qc3M0 LmphciAtPiBqc3M0LTx2ZXJzaW9uPi5qYXIKLSAgICAvdXNyL2xpYi9qc3MvbGlianNzNC5zbwot LSBidWcgNjU0NjU3IC0gPGpkZW5uaXNAcmVkaGF0LmNvbT4KLSAgSW5jb3JyZWN0IHNvY2tldCBh Y2NlcHQgZXJyb3IgbWVzc2FnZSBkdWUgdG8gYmFkIHBvaW50ZXIgYXJpdGhtZXRpYwotLSBidWcg NjQ3MzY0IC0gPGNmdUByZWRoYXQuY29tPgotICBFeHBvc2UgdXBkYXRlZCBjZXJ0aWZpY2F0ZSB2 ZXJpZmljYXRpb24gZnVuY3Rpb24gaW4gSlNTCi0tIGJ1ZyA1Mjk5NDUgLSA8Y2Z1QHJlZGhhdC5j b20+Ci0gIGV4cG9zZSBOU1MgY2FsbHMgZm9yIE9DU1Agc2V0dGluZ3MKLS0gYnVnIDYzODgzMyAt IDxjZnVAcmVkaGF0LmNvbT4KLSAgcmZlIGVjYyAtIGFkZCBlYyBjdXJ2ZSBuYW1lIHN1cHBvcnQg aW4gSlNTIGFuZCBDUwotLSA8cmNyaXR0ZW5AcmVkaGF0LmNvbT4KLSAgTmVlZCB0byBleHBsaWNp dGx5IGNhdGNoIFVuc2F0aXNmaWVkTGlua0Vycm9yIGV4Y2VwdGlvbiBmb3IgU3lzdGVtLmxvYWQo KQotLSBidWcgNTMzMzA0IC0gPHJjcml0dGVuQHJlZGhhdC5jb20+Ci0gIE1vdmUgbG9jYXRpb24g b2YgbGlianNzNC5zbyB0byBzdWJkaXJlY3RvcnkgYW5kIHVzZSBTeXN0ZW0ubG9hZCgpIHRvCi0g IGxvYWQgaXQgaW5zdGVhZCBvZiBTeXN0ZW0ubG9hZExpYnJhcnkoKSBmb3IgRmVkb3JhIHBhY2th Z2luZyBjb21wbGlhbmNlCi0KLSogTW9uIE5vdiAzMCAyMDA5IERlbm5pcyBHcmVnb3JvdmljIDxk Z3JlZ29yQHJlZGhhdC5jb20+IC0gNC4yLjYtNC4xCi0tIFJlYnVpbHQgZm9yIFJIRUwgNgotCi0q IEZyaSBKdWwgMzEgMjAwOSBSb2IgQ3JpdHRlbmRlbiA8cmNyaXR0ZW5AcmVkaGF0LmNvbT4gNC4y LjYtNAotLSBSZXNvbHZlczogYnVnIDIyNDY4OCAtIDxjZnVAcmVkaGF0LmNvbT4KLSAgU3VwcG9y dCBFQ0MgUE9QIG9uIHRoZSBzZXJ2ZXIKLS0gUmVzb2x2ZXM6IGJ1ZyA0Njk0NTYgLSA8am1hZ25l QHJlZGhhdC5jb20+Ci0gIFNlcnZlciBTb2NrZXRzIGFyZSBoYXJkIGNvZGVkIHRvIElQVjQKLS0g UmVzb2x2ZXM6IGJ1ZyA1MDkxODMgLSA8bWhhcm1zZW5AcmVkaGF0LmNvbT4KLSAgU2V0IE5TUyBk ZXBlbmRlbmN5ID49IDMuMTIuMy45OQotCi0qIEZyaSBKdWwgMjQgMjAwOSBGZWRvcmEgUmVsZWFz ZSBFbmdpbmVlcmluZyA8cmVsLWVuZ0BsaXN0cy5mZWRvcmFwcm9qZWN0Lm9yZz4gLSA0LjIuNi0z Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMTJf TWFzc19SZWJ1aWxkCi0KLSogRnJpIEp1biAgNSAyMDA5IFJvYiBDcml0dGVuZGVuIDxyY3JpdHRl bkByZWRoYXQuY29tPiA0LjIuNi0yCi0tIEluY2x1ZGUgcGF0Y2ggdG8gZml4IG1pc3NpbmcgQHBh cmFtIHNvIGphdmFkb2NzIHdpbGwgYnVpbGQKLQotKiBGcmkgSnVuICA1IDIwMDkgUm9iIENyaXR0 ZW5kZW4gPHJjcml0dGVuQHJlZGhhdC5jb20+IDQuMi42LTEKLS0gUmVzb2x2ZXM6IGJ1ZyA0NTUz MDUgLSA8Y2Z1QHJlZGhhdC5jb20+Ci0gIENBIEVDQyBTaWduaW5nIEtleSBGYWlsdXJlCi0tIFJl c29sdmVzOiBidWcgNTAyMTExIC0gPGNmdUByZWRoYXQuY29tPgotICBOZWVkIEpTUyBpbnRlcmZh Y2UgZm9yIE5TUydzIFBLMTFfR2VuZXJhdGVLZXlQYWlyV2l0aE9wRmxhZ3MoKSBmdW5jdGlvbgot LSBSZXNvbHZlczogYnVnIDUwMzgwOSAtIDxtaGFybXNlbkByZWRoYXQuY29tPgotICBVcGRhdGUg SlNTIHZlcnNpb24gdG8gNC4yLjYKLS0gUmVzb2x2ZXM6IGJ1ZyA1MDM4MTcgLSA8bWhhcm1zZW5A cmVkaGF0LmNvbT4KLSAgQ3JlYXRlIEpTUyBKYXZhZG9jcyBhcyB0aGVpciBvd24gUlBNCi0KLSog V2VkIEZlYiAyNSAyMDA5IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3Rz LmZlZG9yYXByb2plY3Qub3JnPiAtIDQuMi41LTQKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRv cmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8xMV9NYXNzX1JlYnVpbGQKLSAKLSogVHVlIEF1ZyAg NSAyMDA4IFRvbSAic3BvdCIgQ2FsbGF3YXkgPHRjYWxsYXdhQHJlZGhhdC5jb20+IC0gNC4yLjUt MwotLSBmaXggbGljZW5zZSB0YWcKLQotKiBUdWUgRmViIDE5IDIwMDggRmVkb3JhIFJlbGVhc2Ug RW5naW5lZXJpbmcgPHJlbC1lbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gNC4yLjUtMgotLSBBdXRv cmVidWlsZCBmb3IgR0NDIDQuMwotCi0qIEZyaSBBdWcgIDMgMjAwNyBSb2IgQ3JpdHRlbmRlbiA8 cmNyaXR0ZW5AcmVkaGF0LmNvbT4gNC4yLjUtMQotLSB1cGRhdGUgdG8gNC4yLjUKLQotKiBUaHUg TWF5IDI0IDIwMDcgUm9iIENyaXR0ZW5kZW4gPHJjcml0dGVuQHJlZGhhdC5jb20+IDQuMi40LTYK LS0gVXNlIF9qbmlkaXIgbWFjcm8gaW5zdGVhZCBvZiBfamF2YWRpciBmb3IgdGhlIGphciBmaWxl cy4gVGhpcyB3aWxsIGJyZWFrCi0gIG11bHRpbGliIGluc3RhbGxzIGJ1dCBhZGhlcmVzIHRvIHRo ZSBqcGFja2FnZSBzcGVjLgotCi0qIFdlZCBNYXkgMTYgMjAwNyBSb2IgQ3JpdHRlbmRlbiA8cmNy aXR0ZW5AcmVkaGF0LmNvbT4gNC4yLjQtNQotLSBJbmNsdWRlIHRoZSAzIGxpY2Vuc2UgZmlsZXMK LS0gUmVtb3ZlIFJlcXVpcmVzIGZvciBuc3MgYW5kIG5zcHIuIFRoZXNlIGxpYnJhcmllcyBoYXZl IHZlcnNpb25lZCBzeW1ib2xzCi0gIHNvIEJ1aWxkUmVxdWlyZXMgaXMgZW5vdWdoIHRvIHNldCB0 aGUgbWluaW11bS4KLS0gQWRkIHNwYXJjNjQgZm9yIHRoZSA2NC1iaXQgbGlzdAotCi0qIE1vbiBN YXkgMTQgMjAwNyBSb2IgQ3JpdHRlbmRlbiA8cmNyaXR0ZW5AcmVkaGF0LmNvbT4gNC4yLjQtNAot LSBJbmNsdWRlZCBhZGRpdGlvbmFsIGNvbW1lbnRzIG9uIGphciBzaWduaW5nIGFuZCB3aHkgbGRj b25maWcgaXMgbm90Ci0gIHJlcXVpcmVkLgotCi0qIFRodSBNYXkgMTAgMjAwNyBSb2IgQ3JpdHRl bmRlbiA8cmNyaXR0ZW5AcmVkaGF0LmNvbT4gNC4yLjQtMwotLSBBZGRlZCBpbmZvcm1hdGlvbiBv biBob3cgdG8gcHVsbCB0aGUgc291cmNlIGludG8gYSB0YXIuZ3oKLQotKiBUaHUgTWFyIDE1IDIw MDcgIFJvYiBDcml0dGVuZGVuIDxyY3JpdHRlbkByZWRoYXQuY29tPiA0LjIuNC0yCi0tIEFkZGVk IFJQTV9PUFRfRkxBR1MgdG8gWENGTEFHUwotLSBBZGRlZCBsaW5rIHRvIFN1biBKQ0UgaW5mb3Jt YXRpb24KLQotKiBUdWUgRmViIDI3IDIwMDcgUm9iIENyaXR0ZW5kZW4gPHJjcml0dGVuQHJlZGhh dC5jb20+IDQuMi40LTEKLS0gSW5pdGlhbCBidWlsZAorKiBUaHUgQXByIDA1IDIwMTggRG9ndGFn IFBLSSBUZWFtIDxwa2ktZGV2ZWxAcmVkaGF0LmNvbT4gNC40LjMtMQorLSBSZWJhc2VkIHRvIEpT UyA0LjQuMworLSBSZWQgSGF0IEJ1Z3ppbGxhICMxNTQ4NTQ4IC0gUGFydGlhbCBGZWRvcmEgYnVp bGQgZmxhZ3MgaW5qZWN0aW9uCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXgg ODgzOTliOS4uOGQxNDZmNiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0x ICsxIEBACi1TSEE1MTIgKGpzcy00LjQuMi50YXIuZ3opID0gNzFmNzZhZWYyOTA1YzM3NGEwZDg3 YjI1YTczZGIyNDk4NTYyZmUxNmNlZjE0ODljNTg1OTI3MWQyYWUyNjQ2OTVkZDJiMDA4ODA1Mzlj MzViMjFmNGUwYjE5ODU2YWJjNTAyOGI4MTNmZTA1YjMzMzUyMzA0YjUzODE4MmIyNTEKK1NIQTUx MiAoanNzLTQuNC4zLnRhci5neikgPSA0YzQ3MWNjMDE5NWVjZTk4NGY1Y2QyMzI4NjJlN2RlNzdl YzM3MWQ4ZDk5NGM3MmQxZmIxZDgyYWM0YzNhNTIzZmVkYTU2MWM5M2M2NjY4ZDNjNTBkNjcwMDEy OGQ1NmQwNWFiMWJhYzkxOGQwYTYxOGY1MDIzYWZlZTNkMzZlNQo=