Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id A1124200C18 for ; Sat, 11 Feb 2017 22:33:16 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 946FE160B5B; Sat, 11 Feb 2017 21:33:16 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 15900160B4C for ; Sat, 11 Feb 2017 22:33:14 +0100 (CET) Received: (qmail 17309 invoked by uid 500); 11 Feb 2017 21:33:14 -0000 Mailing-List: contact dev-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list dev@felix.apache.org Received: (qmail 17297 invoked by uid 99); 11 Feb 2017 21:33:13 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 11 Feb 2017 21:33:13 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id C4E731A06AD for ; Sat, 11 Feb 2017 21:33:12 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.379 X-Spam-Level: ** X-Spam-Status: No, score=2.379 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=codecentric.de Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id mFwTVS-RXQpg for ; Sat, 11 Feb 2017 21:33:08 +0000 (UTC) Received: from mail-vk0-f45.google.com (mail-vk0-f45.google.com [209.85.213.45]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id AE67B5F1B3 for ; Sat, 11 Feb 2017 21:33:07 +0000 (UTC) Received: by mail-vk0-f45.google.com with SMTP id k127so44392281vke.0 for ; Sat, 11 Feb 2017 13:33:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=codecentric.de; s=google; h=mime-version:from:date:message-id:subject:to; bh=5OdyuRjd+DbfsDrb03lM0OrboOfRI0pYFkmEBnyQZIw=; b=FC3hb3mW78aSZZvertWSY8xOolrPVe8W75SQmJuLX1kApQCRcU4qXWlm3CAnxYBE36 n77ZP2ZSFjrLSrJxFOg8yw4sbiIcjwEQ/j8MJvoQlDpTJw9g92v1vI7+6RI2Q0lsgGjK fn3txfIHvoIvrJNTxbQZDJL4veqzKnbveoaC0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=5OdyuRjd+DbfsDrb03lM0OrboOfRI0pYFkmEBnyQZIw=; b=FEF629Nix2lieMF2iX54KBOC024Zt0xy96SB1X+vwSxEoplqBvB5tUeSQTQeXBWGVf n2h8wvRY+v0DyjmwSaQlsxnR0EnmM1TNXvePYhd2IVEgkniaIvdWneQ6a4CL70jbiEOu 4JeA7L/dgYXslf6TkF4EtwcIITp44YkOlrwgdQjgOgx4MrKzKpvF/HW79E01sEVYTPCD 8LzKsPT+qe4YqVBjdvfZ3OQsHDY4OAscARdBgpflo8HanrojCcsoC16FYdbWqTofz/// LEV6YnTZFMOE5S7loMolOMXM/qH2TUs0/7+02sruVvrhPUowKhWeC6iSmiOKNg2cdcH5 11Zw== X-Gm-Message-State: AMke39lLi3W+fwxLkKbtwic+XBa67M5xBA4sm2LaFHTz7OUk2XBl5ksoaitrrkEjBgK0EXZxMB5z5L8KqFhEJGNg X-Received: by 10.31.93.66 with SMTP id r63mr7888936vkb.126.1486848780585; Sat, 11 Feb 2017 13:33:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.80.18 with HTTP; Sat, 11 Feb 2017 13:32:59 -0800 (PST) From: Fabian Lange Date: Sat, 11 Feb 2017 15:32:59 -0600 Message-ID: Subject: Various unclosed Zip-Streams. Ticket for each? To: dev@felix.apache.org Content-Type: multipart/mixed; boundary=001a114e005c670a19054847f531 archived-at: Sat, 11 Feb 2017 21:33:16 -0000 --001a114e005c670a19054847f531 Content-Type: multipart/alternative; boundary=001a114e005c670a14054847f52f --001a114e005c670a14054847f52f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi all, I spent some time browsing through the usage of zip/jar input and outpoutstreams. I noticed that in the codebase often the source of the zip inpustream is closed, but not the zipinputstream itself. this leads to leaking native memory (as the inflater is open which holds on native memory) I have attached a diff of my changes. Shall I do issues for each or can somebody with enough powers maybe apply them directly? Fabian -- Fabian Lange | Performance Expert mobil: +49 (0) 160.3673393 codecentric AG | Hochstra=C3=9Fe 11 | 42697 Solingen | Deutschland Sitz der Gesellschaft: Solingen | HRB 25917| Amtsgericht Wuppertal Vorstand: Michael Hochg=C3=BCrtel . Mirko Novakovic . Rainer Vehns Aufsichtsrat: Patric Fedlmeier (Vorsitzender) . Klaus J=C3=A4ger . J=C3=BCr= gen Sch=C3=BCtz --001a114e005c670a14054847f52f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi all,
I spent some time browsing through the usage o= f zip/jar input and outpoutstreams.
I noticed that in the codebas= e often the source of the zip inpustream is closed, but not the zipinputstr= eam itself. this leads to leaking native memory (as the inflater is open wh= ich holds on native memory)

I have attached a diff= of my changes.

Shall I do issues for each or can = somebody with enough powers maybe apply them directly?

=
Fabian


--
Fabian Lan= ge | Performance Expert
mobil: +49 (0) 160.3673393

codecentric AG= | Hochstra=C3=9Fe 11 | 42697 Solingen | Deutschland

Sitz der Gesell= schaft: Solingen | HRB 25917| Amtsgericht Wuppertal
Vorstand: Michael Ho= chg=C3=BCrtel . Mirko Novakovic . Rainer Vehns
Aufsichtsrat: Patric Fedl= meier (Vorsitzender) .=C2=A0Klaus J=C3=A4ger=C2=A0. J=C3=BCrgen Sch=C3=BCtz=
--001a114e005c670a14054847f52f-- --001a114e005c670a19054847f531 Content-Type: text/plain; charset=US-ASCII; name="felix-zip-leaks.diff" Content-Disposition: attachment; filename="felix-zip-leaks.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iz1rdczu0 ZGlmZiAtLWdpdCBhL2J1bmRsZXJlcG9zaXRvcnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2Zl bGl4L2J1bmRsZXJlcG9zaXRvcnkvaW1wbC9EYXRhTW9kZWxIZWxwZXJJbXBsLmphdmEgYi9idW5k bGVyZXBvc2l0b3J5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC9idW5kbGVyZXBvc2l0 b3J5L2ltcGwvRGF0YU1vZGVsSGVscGVySW1wbC5qYXZhCmluZGV4IDI0OTQ3YzEuLjNlNTlkMzYg MTAwNjQ0Ci0tLSBhL2J1bmRsZXJlcG9zaXRvcnkvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2Zl bGl4L2J1bmRsZXJlcG9zaXRvcnkvaW1wbC9EYXRhTW9kZWxIZWxwZXJJbXBsLmphdmEKKysrIGIv YnVuZGxlcmVwb3NpdG9yeS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvYnVuZGxlcmVw b3NpdG9yeS9pbXBsL0RhdGFNb2RlbEhlbHBlckltcGwuamF2YQpAQCAtMTA4LDEwICsxMDgsMjIg QEAgcHVibGljIGNsYXNzIERhdGFNb2RlbEhlbHBlckltcGwgaW1wbGVtZW50cyBEYXRhTW9kZWxI ZWxwZXIKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbnRyeSA9 IHppbi5nZXROZXh0RW50cnkoKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg Ly8gYXMgdGhlIFppcElucHV0U3RyZWFtIGlzIG5vdCB1c2VkIGZ1cnRoZXIgaXQgd291bGQgbm90 IGJlIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBpZiAoaXMgPT0gbnVsbCkKKyAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICAgICB6aW4uY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24gZXgpCisgICAgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBtdWNoIHdlIGNhbiBk by4KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0KICAgICAgICAgICAgIGVsc2UgaWYgKHVybC5nZXRQYXRoKCkuZW5kc1dpdGgoIi5neiIpKQog ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzID0gbmV3IEdaSVBJbnB1dFN0cmVhbShG aWxlVXRpbC5vcGVuVVJMKHVybCkpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg ICAgaXMgPSBuZXcgR1pJUElucHV0U3RyZWFtKEZpbGVVdGlsLm9wZW5VUkwodXJsKSk7CiAgICAg ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CkBAIC00NTQsMTggKzQ2 NiwxNyBAQCBwdWJsaWMgY2xhc3MgRGF0YU1vZGVsSGVscGVySW1wbCBpbXBsZW1lbnRzIERhdGFN b2RlbEhlbHBlcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJpdmF0ZSBieXRlW10gbG9h ZEVudHJ5KFN0cmluZyBuYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24KICAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IEZpbGVVdGlsLm9wZW5VUkwoYnVuZGxlVXJs KTsKKyAgICAgICAgICAgICAgICBaaXBJbnB1dFN0cmVhbSB6aXMgPSBuZXcgWmlwSW5wdXRTdHJl YW0oRmlsZVV0aWwub3BlblVSTChidW5kbGVVcmwpKTsKICAgICAgICAgICAgICAgICB0cnkKICAg ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFppcElucHV0U3RyZWFtIGppcyA9 IG5ldyBaaXBJbnB1dFN0cmVhbShpcyk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoWmlwRW50 cnkgZSA9IGppcy5nZXROZXh0RW50cnkoKTsgZSAhPSBudWxsOyBlID0gamlzLmdldE5leHRFbnRy eSgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgKFppcEVudHJ5IGUgPSB6aXMuZ2V0TmV4dEVu dHJ5KCk7IGUgIT0gbnVsbDsgZSA9IHppcy5nZXROZXh0RW50cnkoKSkKICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuZXF1YWxzSWdub3JlQ2Fz ZShlLmdldE5hbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5 T3V0cHV0U3RyZWFtKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGJ1ZiA9 IG5ldyBieXRlWzEwMjRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuOwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobiA9IGppcy5yZWFkKGJ1ZiwgMCwgYnVm Lmxlbmd0aCkpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKG4gPSB6 aXMucmVhZChidWYsIDAsIGJ1Zi5sZW5ndGgpKSA+IDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW9zLndyaXRlKGJ1Ziwg MCwgbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDc1LDcgKzQ4Niw3IEBA IHB1YmxpYyBjbGFzcyBEYXRhTW9kZWxIZWxwZXJJbXBsIGltcGxlbWVudHMgRGF0YU1vZGVsSGVs cGVyCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZpbmFsbHkKICAgICAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlzLmNsb3NlKCk7CisgICAgICAgICAgICAg ICAgICAgIHppcy5jbG9zZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy ZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc3JjL21haW4v amF2YS9vcmcvYXBhY2hlL2ZlbGl4L2Nvbm5lY3QvVVJMUmV2aXNpb24uamF2YSBiL2Nvbm5lY3Qv c3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L2Nvbm5lY3QvVVJMUmV2aXNpb24uamF2YQpp bmRleCA3MjFiODk3Li40ZGYxOWFlIDEwMDY0NAotLS0gYS9jb25uZWN0L3NyYy9tYWluL2phdmEv b3JnL2FwYWNoZS9mZWxpeC9jb25uZWN0L1VSTFJldmlzaW9uLmphdmEKKysrIGIvY29ubmVjdC9z cmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvY29ubmVjdC9VUkxSZXZpc2lvbi5qYXZhCkBA IC02NSwxMyArNjUsMTEgQEAgY2xhc3MgVVJMUmV2aXNpb24gaW1wbGVtZW50cyBSZXZpc2lvbgog ICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBFbnVtZXJhdGlvbjxTdHJpbmc+IGdldEVudHJpZXMo KQogICAgIHsKLSAgICAgICAgSW5wdXRTdHJlYW0gY29udGVudCA9IG51bGw7CiAgICAgICAgIEph cklucHV0U3RyZWFtIGphcklucHV0ID0gbnVsbDsKICAgICAgICAgCiAgICAgICAgIHRyeQogICAg ICAgICB7Ci0gICAgICAgICAgICBjb250ZW50ID0gZ2V0VXJsQ29udGVudCgpOwotICAgICAgICAg ICAgamFySW5wdXQgPSBuZXcgSmFySW5wdXRTdHJlYW0oY29udGVudCk7CisgICAgICAgICAgICBq YXJJbnB1dCA9IG5ldyBKYXJJbnB1dFN0cmVhbShnZXRVcmxDb250ZW50KCkpOwogICAgICAgICAg ICAgTGlzdDxTdHJpbmc+IGVudHJpZXMgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAg ICAgICAgIEphckVudHJ5IGphckVudHJ5OwogCkBAIC04MSwxNiArNzksMTMgQEAgY2xhc3MgVVJM UmV2aXNpb24gaW1wbGVtZW50cyBSZXZpc2lvbgogICAgICAgICAgICAgfQogICAgICAgICAgICAg cmV0dXJuIENvbGxlY3Rpb25zLmVudW1lcmF0aW9uKGVudHJpZXMpOwogICAgICAgICB9Ci0KICAg ICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGUucHJp bnRTdGFja1RyYWNlKCk7CiAgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuZW51bWVyYXRp b24oQ29sbGVjdGlvbnMuRU1QVFlfTElTVCk7CiAgICAgICAgIH0KLQogICAgICAgICBmaW5hbGx5 CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNsb3NlKGNvbnRlbnQpOwogICAgICAgICAgICAgY2xv c2UoamFySW5wdXQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZmlsZWluc3RhbGwv c3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L2ZpbGVpbnN0YWxsL2ludGVybmFsL0RpcmVj dG9yeVdhdGNoZXIuamF2YSBiL2ZpbGVpbnN0YWxsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9m ZWxpeC9maWxlaW5zdGFsbC9pbnRlcm5hbC9EaXJlY3RvcnlXYXRjaGVyLmphdmEKaW5kZXggZTdj NDExYS4uOWI1Y2Y5MSAxMDA2NDQKLS0tIGEvZmlsZWluc3RhbGwvc3JjL21haW4vamF2YS9vcmcv YXBhY2hlL2ZlbGl4L2ZpbGVpbnN0YWxsL2ludGVybmFsL0RpcmVjdG9yeVdhdGNoZXIuamF2YQor KysgYi9maWxlaW5zdGFsbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgvZmlsZWluc3Rh bGwvaW50ZXJuYWwvRGlyZWN0b3J5V2F0Y2hlci5qYXZhCkBAIC05NDcsMTQgKzk0Nyw3IEBAIHB1 YmxpYyBjbGFzcyBEaXJlY3RvcnlXYXRjaGVyIGV4dGVuZHMgVGhyZWFkIGltcGxlbWVudHMgQnVu ZGxlTGlzdGVuZXIKICAgICAgICAgICAgICAgICBVUkwgdHJhbnNmb3JtZWQgPSBhcnRpZmFjdC5n ZXRUcmFuc2Zvcm1lZFVybCgpOwogICAgICAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IHRy YW5zZm9ybWVkLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgQnVmZmVyZWRJbnB1dFN0cmVh bSBpbiA9IG5ldyBCdWZmZXJlZElucHV0U3RyZWFtKHRyYW5zZm9ybWVkLm9wZW5TdHJlYW0oKSk7 Ci0gICAgICAgICAgICAgICAgdHJ5Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg ICAgICBidW5kbGUgPSBpbnN0YWxsT3JVcGRhdGVCdW5kbGUobG9jYXRpb24sIGluLCBhcnRpZmFj dC5nZXRDaGVja3N1bSgpLCBtb2RpZmllZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgIGZpbmFsbHkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlu LmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1bmRsZSA9IGlu c3RhbGxPclVwZGF0ZUJ1bmRsZShsb2NhdGlvbiwgaW4sIGFydGlmYWN0LmdldENoZWNrc3VtKCks IG1vZGlmaWVkKTsKICAgICAgICAgICAgICAgICBhcnRpZmFjdC5zZXRCdW5kbGVJZChidW5kbGUu Z2V0QnVuZGxlSWQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBpZiB0aGUgbGlz dGVuZXIgaXMgYW4gYXJ0aWZhY3QgdHJhbnNmb3JtZXIKQEAgLTk2OCwxNCArOTYxLDcgQEAgcHVi bGljIGNsYXNzIERpcmVjdG9yeVdhdGNoZXIgZXh0ZW5kcyBUaHJlYWQgaW1wbGVtZW50cyBCdW5k bGVMaXN0ZW5lcgogICAgICAgICAgICAgICAgIEZpbGUgdHJhbnNmb3JtZWQgPSBhcnRpZmFjdC5n ZXRUcmFuc2Zvcm1lZCgpOwogICAgICAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IHBhdGgu dG9VUkkoKS5ub3JtYWxpemUoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgIEJ1ZmZlcmVk SW5wdXRTdHJlYW0gaW4gPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShuZXcgRmlsZUlucHV0U3Ry ZWFtKHRyYW5zZm9ybWVkICE9IG51bGwgPyB0cmFuc2Zvcm1lZCA6IHBhdGgpKTsKLSAgICAgICAg ICAgICAgICB0cnkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1bmRs ZSA9IGluc3RhbGxPclVwZGF0ZUJ1bmRsZShsb2NhdGlvbiwgaW4sIGFydGlmYWN0LmdldENoZWNr c3VtKCksIG1vZGlmaWVkKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmlu YWxseQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW4uY2xvc2UoKTsK LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVuZGxlID0gaW5zdGFsbE9yVXBk YXRlQnVuZGxlKGxvY2F0aW9uLCBpbiwgYXJ0aWZhY3QuZ2V0Q2hlY2tzdW0oKSwgbW9kaWZpZWQp OwogICAgICAgICAgICAgICAgIGFydGlmYWN0LnNldEJ1bmRsZUlkKGJ1bmRsZS5nZXRCdW5kbGVJ ZCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGluc3RhbGxhdGlvbkZhaWx1cmVzLnJl bW92ZShwYXRoKTsKQEAgLTk5Nyw1MyArOTgzLDY0IEBAIHB1YmxpYyBjbGFzcyBEaXJlY3RvcnlX YXRjaGVyIGV4dGVuZHMgVGhyZWFkIGltcGxlbWVudHMgQnVuZGxlTGlzdGVuZXIKICAgICAgICAg U3RyaW5nIGJ1bmRsZUxvY2F0aW9uLCBCdWZmZXJlZElucHV0U3RyZWFtIGlzLCBsb25nIGNoZWNr c3VtLCBBdG9taWNCb29sZWFuIG1vZGlmaWVkKQogICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24s IEJ1bmRsZUV4Y2VwdGlvbgogICAgIHsKLSAgICAgICAgaXMubWFyaygyNTYgKiAxMDI0KTsKLSAg ICAgICAgSmFySW5wdXRTdHJlYW0gamFyID0gbmV3IEphcklucHV0U3RyZWFtKGlzKTsKLSAgICAg ICAgTWFuaWZlc3QgbSA9IGphci5nZXRNYW5pZmVzdCgpOwotICAgICAgICBpZiggbSA9PSBudWxs ICkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEJ1bmRsZUV4Y2VwdGlvbigKLSAgICAgICAgICAg ICAgICAiVGhlIGJ1bmRsZSAiICsgYnVuZGxlTG9jYXRpb24gKyAiIGRvZXMgbm90IGhhdmUgYSBN RVRBLUlORi9NQU5JRkVTVC5NRiEgIisKLSAgICAgICAgICAgICAgICAgICAgIk1ha2Ugc3VyZSwg TUVUQS1JTkYgYW5kIE1BTklGRVNULk1GIGFyZSB0aGUgZmlyc3QgMiBlbnRyaWVzIGluIHlvdXIg SkFSISIpOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBzbiA9IG0uZ2V0TWFpbkF0dHJpYnV0 ZXMoKS5nZXRWYWx1ZShDb25zdGFudHMuQlVORExFX1NZTUJPTElDTkFNRSk7Ci0gICAgICAgIFN0 cmluZyB2U3RyID0gbS5nZXRNYWluQXR0cmlidXRlcygpLmdldFZhbHVlKENvbnN0YW50cy5CVU5E TEVfVkVSU0lPTik7Ci0gICAgICAgIFZlcnNpb24gdiA9IHZTdHIgPT0gbnVsbCA/IFZlcnNpb24u ZW1wdHlWZXJzaW9uIDogVmVyc2lvbi5wYXJzZVZlcnNpb24odlN0cik7Ci0gICAgICAgIEJ1bmRs ZVtdIGJ1bmRsZXMgPSBjb250ZXh0LmdldEJ1bmRsZXMoKTsKLSAgICAgICAgZm9yIChCdW5kbGUg YiA6IGJ1bmRsZXMpIHsKLSAgICAgICAgICAgIGlmIChiLmdldFN5bWJvbGljTmFtZSgpICE9IG51 bGwgJiYgYi5nZXRTeW1ib2xpY05hbWUoKS5lcXVhbHMoc24pKSB7Ci0gICAgICAgICAgICAgICAg dlN0ciA9IGIuZ2V0SGVhZGVycygpLmdldChDb25zdGFudHMuQlVORExFX1ZFUlNJT04pOwotICAg ICAgICAgICAgICAgIFZlcnNpb24gYnYgPSB2U3RyID09IG51bGwgPyBWZXJzaW9uLmVtcHR5VmVy c2lvbiA6IFZlcnNpb24ucGFyc2VWZXJzaW9uKHZTdHIpOwotICAgICAgICAgICAgICAgIGlmICh2 LmVxdWFscyhidikpIHsKLSAgICAgICAgICAgICAgICAgICAgaXMucmVzZXQoKTsKLSAgICAgICAg ICAgICAgICAgICAgaWYgKFV0aWwubG9hZENoZWNrc3VtKGIsIGNvbnRleHQpICE9IGNoZWNrc3Vt KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2coTG9nZ2VyLkxPR19XQVJOSU5HLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQSBidW5kbGUgd2l0aCB0aGUgc2FtZSBzeW1i b2xpYyBuYW1lICgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBz biArICIpIGFuZCB2ZXJzaW9uICgiICsgdlN0cgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsgIikgaXMgYWxyZWFkeSBpbnN0YWxsZWQuICBVcGRhdGluZyB0aGlzIGJ1 bmRsZSBpbnN0ZWFkLiIsIG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICAgICAgICAgICAgICBzdG9wVHJhbnNpZW50KGIpOwotICAgICAgICAgICAgICAgICAgICAg ICAgVXRpbC5zdG9yZUNoZWNrc3VtKGIsIGNoZWNrc3VtLCBjb250ZXh0KTsKLSAgICAgICAgICAg ICAgICAgICAgICAgIGIudXBkYXRlKGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm aWVkLnNldCh0cnVlKTsKKyAgICAgICAgSmFySW5wdXRTdHJlYW0gamFyID0gbnVsbDsKKyAgICAg ICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIGlzLm1hcmsoMjU2ICogMTAyNCk7CisgICAg ICAgICAgICBqYXIgPSBuZXcgSmFySW5wdXRTdHJlYW0oaXMpOworICAgICAgICAgICAgTWFuaWZl c3QgbSA9IGphci5nZXRNYW5pZmVzdCgpOworICAgICAgICAgICAgaWYoIG0gPT0gbnVsbCApIHsK KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVuZGxlRXhjZXB0aW9uKAorICAgICAgICAgICAg ICAgICAgICAiVGhlIGJ1bmRsZSAiICsgYnVuZGxlTG9jYXRpb24gKyAiIGRvZXMgbm90IGhhdmUg YSBNRVRBLUlORi9NQU5JRkVTVC5NRiEgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICJNYWtl IHN1cmUsIE1FVEEtSU5GIGFuZCBNQU5JRkVTVC5NRiBhcmUgdGhlIGZpcnN0IDIgZW50cmllcyBp biB5b3VyIEpBUiEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzbiA9IG0u Z2V0TWFpbkF0dHJpYnV0ZXMoKS5nZXRWYWx1ZShDb25zdGFudHMuQlVORExFX1NZTUJPTElDTkFN RSk7CisgICAgICAgICAgICBTdHJpbmcgdlN0ciA9IG0uZ2V0TWFpbkF0dHJpYnV0ZXMoKS5nZXRW YWx1ZShDb25zdGFudHMuQlVORExFX1ZFUlNJT04pOworICAgICAgICAgICAgVmVyc2lvbiB2ID0g dlN0ciA9PSBudWxsID8gVmVyc2lvbi5lbXB0eVZlcnNpb24gOiBWZXJzaW9uLnBhcnNlVmVyc2lv bih2U3RyKTsKKyAgICAgICAgICAgIEJ1bmRsZVtdIGJ1bmRsZXMgPSBjb250ZXh0LmdldEJ1bmRs ZXMoKTsKKyAgICAgICAgICAgIGZvciAoQnVuZGxlIGIgOiBidW5kbGVzKSB7CisgICAgICAgICAg ICAgICAgaWYgKGIuZ2V0U3ltYm9saWNOYW1lKCkgIT0gbnVsbCAmJiBiLmdldFN5bWJvbGljTmFt ZSgpLmVxdWFscyhzbikpIHsKKyAgICAgICAgICAgICAgICAgICAgdlN0ciA9IGIuZ2V0SGVhZGVy cygpLmdldChDb25zdGFudHMuQlVORExFX1ZFUlNJT04pOworICAgICAgICAgICAgICAgICAgICBW ZXJzaW9uIGJ2ID0gdlN0ciA9PSBudWxsID8gVmVyc2lvbi5lbXB0eVZlcnNpb24gOiBWZXJzaW9u LnBhcnNlVmVyc2lvbih2U3RyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHYuZXF1YWxzKGJ2 KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaXMucmVzZXQoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChVdGlsLmxvYWRDaGVja3N1bShiLCBjb250ZXh0KSAhPSBjaGVja3N1bSkg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhMb2dnZXIuTE9HX1dBUk5JTkcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQSBidW5kbGUgd2l0aCB0aGUgc2Ft ZSBzeW1ib2xpYyBuYW1lICgiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgc24gKyAiKSBhbmQgdmVyc2lvbiAoIiArIHZTdHIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSBpcyBhbHJlYWR5IGluc3RhbGxlZC4gIFVw ZGF0aW5nIHRoaXMgYnVuZGxlIGluc3RlYWQuIiwgbnVsbAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFRyYW5zaWVudChiKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsLnN0b3JlQ2hlY2tzdW0oYiwgY2hlY2tz dW0sIGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIudXBkYXRlKGlzKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZC5zZXQodHJ1ZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYjsKICAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYjsKICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpcy5yZXNldCgpOworICAg ICAgICAgICAgVXRpbC5sb2coY29udGV4dCwgTG9nZ2VyLkxPR19JTkZPLCAiSW5zdGFsbGluZyBi dW5kbGUgIiArIHNuCisgICAgICAgICAgICAgICAgICAgICsgIiAvICIgKyB2LCBudWxsKTsKKyAg ICAgICAgICAgIEJ1bmRsZSBiID0gY29udGV4dC5pbnN0YWxsQnVuZGxlKGJ1bmRsZUxvY2F0aW9u LCBpcyk7CisgICAgICAgICAgICBVdGlsLnN0b3JlQ2hlY2tzdW0oYiwgY2hlY2tzdW0sIGNvbnRl eHQpOworICAgICAgICAgICAgbW9kaWZpZWQuc2V0KHRydWUpOworCisgICAgICAgICAgICAvLyBT ZXQgZGVmYXVsdCBzdGFydCBsZXZlbCBhdCBpbnN0YWxsIHRpbWUsIHRoZSB1c2VyIGNhbiBvdmVy cmlkZSBpdCBpZiBoZSB3YW50cworICAgICAgICAgICAgaWYgKHN0YXJ0TGV2ZWwgIT0gMCkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBiLmFkYXB0KEJ1bmRsZVN0YXJ0TGV2ZWwuY2xh c3MpLnNldFN0YXJ0TGV2ZWwoc3RhcnRMZXZlbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ICAKKyAgICAgICAgICAgIHJldHVybiBiOwogICAgICAgICB9Ci0gICAgICAgIGlzLnJlc2V0KCk7 Ci0gICAgICAgIFV0aWwubG9nKGNvbnRleHQsIExvZ2dlci5MT0dfSU5GTywgIkluc3RhbGxpbmcg YnVuZGxlICIgKyBzbgotICAgICAgICAgICAgICAgICsgIiAvICIgKyB2LCBudWxsKTsKLSAgICAg ICAgQnVuZGxlIGIgPSBjb250ZXh0Lmluc3RhbGxCdW5kbGUoYnVuZGxlTG9jYXRpb24sIGlzKTsK LSAgICAgICAgVXRpbC5zdG9yZUNoZWNrc3VtKGIsIGNoZWNrc3VtLCBjb250ZXh0KTsKLSAgICAg ICAgbW9kaWZpZWQuc2V0KHRydWUpOwotCi0gICAgICAgIC8vIFNldCBkZWZhdWx0IHN0YXJ0IGxl dmVsIGF0IGluc3RhbGwgdGltZSwgdGhlIHVzZXIgY2FuIG92ZXJyaWRlIGl0IGlmIGhlIHdhbnRz Ci0gICAgICAgIGlmIChzdGFydExldmVsICE9IDApCisgICAgICAgIGZpbmFsbHkKICAgICAgICAg ewotICAgICAgICAgICAgYi5hZGFwdChCdW5kbGVTdGFydExldmVsLmNsYXNzKS5zZXRTdGFydExl dmVsKHN0YXJ0TGV2ZWwpOworICAgICAgICAgICAgaWYgKGphciAhPSBudWxsKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIGphci5jbG9zZSgpOworICAgICAgICAgICAgfQogICAgICAg ICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gYjsKICAgICB9CiAKICAgICAvKioKZGlmZiAt LWdpdCBhL2ZpbGVpbnN0YWxsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC9maWxlaW5z dGFsbC9pbnRlcm5hbC9VdGlsLmphdmEgYi9maWxlaW5zdGFsbC9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZmVsaXgvZmlsZWluc3RhbGwvaW50ZXJuYWwvVXRpbC5qYXZhCmluZGV4IGRiOTI0ZTUu LmJjMDBjMTMgMTAwNjQ0Ci0tLSBhL2ZpbGVpbnN0YWxsL3NyYy9tYWluL2phdmEvb3JnL2FwYWNo ZS9mZWxpeC9maWxlaW5zdGFsbC9pbnRlcm5hbC9VdGlsLmphdmEKKysrIGIvZmlsZWluc3RhbGwv c3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L2ZpbGVpbnN0YWxsL2ludGVybmFsL1V0aWwu amF2YQpAQCAtMjMyLDM1ICsyMzIsNDIgQEAgcHVibGljIGNsYXNzIFV0aWwKIAogICAgIHB1Ymxp YyBzdGF0aWMgdm9pZCBqYXJEaXIoRmlsZSBkaXJlY3RvcnksIE91dHB1dFN0cmVhbSBvcykgdGhy b3dzIElPRXhjZXB0aW9uCiAgICAgewotICAgICAgICAvLyBjcmVhdGUgYSBaaXBPdXRwdXRTdHJl YW0gdG8gemlwIHRoZSBkYXRhIHRvCi0gICAgICAgIEphck91dHB1dFN0cmVhbSB6b3MgPSBuZXcg SmFyT3V0cHV0U3RyZWFtKG9zKTsKLSAgICAgICAgem9zLnNldExldmVsKERlZmxhdGVyLk5PX0NP TVBSRVNTSU9OKTsKLSAgICAgICAgU3RyaW5nIHBhdGggPSAiIjsKLSAgICAgICAgRmlsZSBtYW5G aWxlID0gbmV3IEZpbGUoZGlyZWN0b3J5LCBKYXJGaWxlLk1BTklGRVNUX05BTUUpOwotICAgICAg ICBpZiAobWFuRmlsZS5leGlzdHMoKSkKKyAgICAgICAgSmFyT3V0cHV0U3RyZWFtIGphciA9IG51 bGw7CisgICAgICAgIHRyeQogICAgICAgICB7Ci0gICAgICAgICAgICBieXRlW10gcmVhZEJ1ZmZl ciA9IG5ldyBieXRlWzgxOTJdOwotICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5l dyBGaWxlSW5wdXRTdHJlYW0obWFuRmlsZSk7Ci0gICAgICAgICAgICB0cnkKKyAgICAgICAgICAg IGphciA9IG5ldyBKYXJPdXRwdXRTdHJlYW0ob3MpOworICAgICAgICAgICAgamFyLnNldExldmVs KERlZmxhdGVyLk5PX0NPTVBSRVNTSU9OKTsKKyAgICAgICAgICAgIFN0cmluZyBwYXRoID0gIiI7 CisgICAgICAgICAgICBGaWxlIG1hbkZpbGUgPSBuZXcgRmlsZShkaXJlY3RvcnksIEphckZpbGUu TUFOSUZFU1RfTkFNRSk7CisgICAgICAgICAgICBpZiAobWFuRmlsZS5leGlzdHMoKSkKICAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgICBaaXBFbnRyeSBhbkVudHJ5ID0gbmV3IFppcEVudHJ5 KEphckZpbGUuTUFOSUZFU1RfTkFNRSk7Ci0gICAgICAgICAgICAgICAgem9zLnB1dE5leHRFbnRy eShhbkVudHJ5KTsKLSAgICAgICAgICAgICAgICBpbnQgYnl0ZXNJbiA9IGZpcy5yZWFkKHJlYWRC dWZmZXIpOwotICAgICAgICAgICAgICAgIHdoaWxlIChieXRlc0luICE9IC0xKQorICAgICAgICAg ICAgICAgIGJ5dGVbXSByZWFkQnVmZmVyID0gbmV3IGJ5dGVbODE5Ml07CisgICAgICAgICAgICAg ICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0obWFuRmlsZSk7Cisg ICAgICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg ICB6b3Mud3JpdGUocmVhZEJ1ZmZlciwgMCwgYnl0ZXNJbik7Ci0gICAgICAgICAgICAgICAgICAg IGJ5dGVzSW4gPSBmaXMucmVhZChyZWFkQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgWmlw RW50cnkgYW5FbnRyeSA9IG5ldyBaaXBFbnRyeShKYXJGaWxlLk1BTklGRVNUX05BTUUpOworICAg ICAgICAgICAgICAgICAgICB6b3MucHV0TmV4dEVudHJ5KGFuRW50cnkpOworICAgICAgICAgICAg ICAgICAgICBpbnQgYnl0ZXNJbiA9IGZpcy5yZWFkKHJlYWRCdWZmZXIpOworICAgICAgICAgICAg ICAgICAgICB3aGlsZSAoYnl0ZXNJbiAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgem9zLndyaXRlKHJlYWRCdWZmZXIsIDAsIGJ5dGVzSW4pOwor ICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNJbiA9IGZpcy5yZWFkKHJlYWRCdWZmZXIpOwor ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IGZpbmFsbHkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZpcy5jbG9z ZSgpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBqYXIuY2xvc2VFbnRyeSgp OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZmluYWxseQotICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgIGZpcy5jbG9zZSgpOworICAgICAgICAgICAgemlwRGlyKGRpcmVjdG9yeSwg amFyLCBwYXRoLCBDb2xsZWN0aW9ucy5zaW5nbGV0b24oSmFyRmlsZS5NQU5JRkVTVF9OQU1FKSk7 CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo amFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgamFyLmNsb3NlKCk7CiAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICB6b3MuY2xvc2VFbnRyeSgpOwogICAgICAgICB9Ci0gICAgICAgIHppcERp cihkaXJlY3RvcnksIHpvcywgcGF0aCwgQ29sbGVjdGlvbnMuc2luZ2xldG9uKEphckZpbGUuTUFO SUZFU1RfTkFNRSkpOwotICAgICAgICAvLyBjbG9zZSB0aGUgc3RyZWFtCi0gICAgICAgIHpvcy5j bG9zZSgpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvZnJhbWV3b3JrLnNlY3VyaXR5 L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC9mcmFtZXdvcmsvc2VjdXJpdHkvdmVyaWZp ZXIvQnVuZGxlRE5QYXJzZXIuamF2YSBiL2ZyYW1ld29yay5zZWN1cml0eS9zcmMvbWFpbi9qYXZh L29yZy9hcGFjaGUvZmVsaXgvZnJhbWV3b3JrL3NlY3VyaXR5L3ZlcmlmaWVyL0J1bmRsZUROUGFy c2VyLmphdmEKaW5kZXggYjk4NWI1MC4uYmVjNzgxNCAxMDA2NDQKLS0tIGEvZnJhbWV3b3JrLnNl Y3VyaXR5L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC9mcmFtZXdvcmsvc2VjdXJpdHkv dmVyaWZpZXIvQnVuZGxlRE5QYXJzZXIuamF2YQorKysgYi9mcmFtZXdvcmsuc2VjdXJpdHkvc3Jj L21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L2ZyYW1ld29yay9zZWN1cml0eS92ZXJpZmllci9C dW5kbGVETlBhcnNlci5qYXZhCkBAIC0yNzYsMTM0ICsyNzYsMTQxIEBAIHB1YmxpYyBmaW5hbCBj bGFzcyBCdW5kbGVETlBhcnNlcgogICAgIHsKICAgICAgICAgSmFySW5wdXRTdHJlYW0gYnVuZGxl ID0gbmV3IEphcklucHV0U3RyZWFtKGlucHV0LCB0cnVlKTsKIAotICAgICAgICBpZiAoYnVuZGxl LmdldE1hbmlmZXN0KCkgPT0gbnVsbCkKKyAgICAgICAgdHJ5IAogICAgICAgICB7Ci0gICAgICAg ICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIExpc3QgY2VydGlmaWNhdGVD aGFpbnMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAgICAgaW50IGNvdW50ID0gY2VydGlmaWNh dGVDaGFpbnMuc2l6ZSgpOwotCi0gICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5OiBqZGsxLjMgZG9l c24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hhdCBpcyBoYXBwZW5pbmcKLSAgICAgICAgLy8gaWYg YSBiYWQgc2lnIGlzIGRldGVjdGVkIG9uIGFuIGVudHJ5IC0gbGF0ZXIgamRrJ3MgZG8gc2F5IHRo YXQgdGhleQotICAgICAgICAvLyB3aWxsIHRocm93IGEgc2VjdXJpdHkgRXhjZXB0aW9uLiBUaGUg YmVsb3cgc2hvdWxkIGNhdGVyIGZvciBib3RoCi0gICAgICAgIC8vIGJlaGF2aW9ycy4KLSAgICAg ICAgZm9yIChKYXJFbnRyeSBlbnRyeSA9IGJ1bmRsZS5nZXROZXh0SmFyRW50cnkoKTsgZW50cnkg IT0gbnVsbDsgZW50cnkgPSBidW5kbGUKLSAgICAgICAgICAgIC5nZXROZXh0SmFyRW50cnkoKSkK LSAgICAgICAgewotCi0gICAgICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSB8fCAKLSAg ICAgICAgICAgICAgICAoZW50cnkuZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIk1FVEEtSU5GLyIpICYm IAotICAgICAgICAgICAgICAgIChlbnRyeS5nZXROYW1lKCkuaW5kZXhPZignLycsICJNRVRBLUlO Ri8iLmxlbmd0aCgpKSA8IDApKSkKKyAgICAgICAgICAgIGlmIChidW5kbGUuZ2V0TWFuaWZlc3Qo KSA9PSBudWxsKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBm b3IgKGJ5dGVbXSB0bXAgPSBuZXcgYnl0ZVs0MDk2XTsgYnVuZGxlLnJlYWQodG1wLCAwLCB0bXAu bGVuZ3RoKSAhPSAtMTspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg ICBMaXN0IGNlcnRpZmljYXRlQ2hhaW5zID0gbmV3IEFycmF5TGlzdCgpOwogCi0gICAgICAgICAg ICBDZXJ0aWZpY2F0ZVtdIGNlcnRpZmljYXRlcyA9IGVudHJ5LmdldENlcnRpZmljYXRlcygpOwor ICAgICAgICAgICAgaW50IGNvdW50ID0gY2VydGlmaWNhdGVDaGFpbnMuc2l6ZSgpOwogCi0gICAg ICAgICAgICAvLyBXb3JrYXJvdW5kIHN0dXBpZCBidWcgaW4gdGhlIHN1biBqZGsgMS41LnggLSBn ZXRDZXJ0aWZpY2F0ZXMoKQotICAgICAgICAgICAgLy8gcmV0dXJucyBudWxsIHRoZXJlIGV2ZW4g aWYgdGhlcmUgYXJlIHZhbGlkIGNlcnRpZmljYXRlcy4KLSAgICAgICAgICAgIC8vIFRoaXMgaXMg YSByZWdyZXNzaW9uIGJ1ZyB0aGF0IGhhcyBiZWVuIGZpeGVkIGluIDEuNi4KLSAgICAgICAgICAg IC8vIAotICAgICAgICAgICAgLy8gV2UgdXNlIHJlZmxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgd2Ug aGF2ZSBhIFNpZ25lckNlcnRQYXRoCi0gICAgICAgICAgICAvLyBmb3IgdGhlIGVudHJ5IChhdmFp bGFibGUgPj0gMS41KSBhbmQgaWYgc28gY2hlY2sgd2hldGhlcgotICAgICAgICAgICAgLy8gdGhl cmUgYXJlIHZhbGlkIGNlcnRpZmljYXRlcyAtIGRvbid0IHRyeSB0aGlzIGF0IGhvbWUuCi0gICAg ICAgICAgICBpZiAoKGNlcnRpZmljYXRlcyA9PSBudWxsKSAmJiAobV9nZXRDb2RlU2lnbmVycyAh PSBudWxsKSkKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5OiBqZGsxLjMgZG9lc24ndCBz YXkgYW55dGhpbmcgYWJvdXQgd2hhdCBpcyBoYXBwZW5pbmcKKyAgICAgICAgICAgIC8vIGlmIGEg YmFkIHNpZyBpcyBkZXRlY3RlZCBvbiBhbiBlbnRyeSAtIGxhdGVyIGpkaydzIGRvIHNheSB0aGF0 IHRoZXkKKyAgICAgICAgICAgIC8vIHdpbGwgdGhyb3cgYSBzZWN1cml0eSBFeGNlcHRpb24uIFRo ZSBiZWxvdyBzaG91bGQgY2F0ZXIgZm9yIGJvdGgKKyAgICAgICAgICAgIC8vIGJlaGF2aW9ycy4K KyAgICAgICAgICAgIGZvciAoSmFyRW50cnkgZW50cnkgPSBidW5kbGUuZ2V0TmV4dEphckVudHJ5 KCk7IGVudHJ5ICE9IG51bGw7IGVudHJ5ID0gYnVuZGxlCisgICAgICAgICAgICAgICAgLmdldE5l eHRKYXJFbnRyeSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRyeQorCisgICAg ICAgICAgICAgICAgaWYgKGVudHJ5LmlzRGlyZWN0b3J5KCkgfHwgCisgICAgICAgICAgICAgICAg ICAgIChlbnRyeS5nZXROYW1lKCkuc3RhcnRzV2l0aCgiTUVUQS1JTkYvIikgJiYgCisgICAgICAg ICAgICAgICAgICAgIChlbnRyeS5nZXROYW1lKCkuaW5kZXhPZignLycsICJNRVRBLUlORi8iLmxl bmd0aCgpKSA8IDApKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE9i amVjdFtdIHNpZ25lcnMgPSAoT2JqZWN0W10pIG1fZ2V0Q29kZVNpZ25lcnMuaW52b2tlKAotICAg ICAgICAgICAgICAgICAgICAgICAgZW50cnksIG51bGwpOworICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNp Z25lcnMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBmb3IgKGJ5dGVbXSB0bXAgPSBuZXcgYnl0 ZVs0MDk2XTsgYnVuZGxlLnJlYWQodG1wLCAwLCB0bXAubGVuZ3RoKSAhPSAtMTspCisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIENlcnRpZmlj YXRlW10gY2VydGlmaWNhdGVzID0gZW50cnkuZ2V0Q2VydGlmaWNhdGVzKCk7CisKKyAgICAgICAg ICAgICAgICAvLyBXb3JrYXJvdW5kIHN0dXBpZCBidWcgaW4gdGhlIHN1biBqZGsgMS41LnggLSBn ZXRDZXJ0aWZpY2F0ZXMoKQorICAgICAgICAgICAgICAgIC8vIHJldHVybnMgbnVsbCB0aGVyZSBl dmVuIGlmIHRoZXJlIGFyZSB2YWxpZCBjZXJ0aWZpY2F0ZXMuCisgICAgICAgICAgICAgICAgLy8g VGhpcyBpcyBhIHJlZ3Jlc3Npb24gYnVnIHRoYXQgaGFzIGJlZW4gZml4ZWQgaW4gMS42LgorICAg ICAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgICAgIC8vIFdlIHVzZSByZWZsZWN0aW9uIHRv IHNlZSB3aGV0aGVyIHdlIGhhdmUgYSBTaWduZXJDZXJ0UGF0aAorICAgICAgICAgICAgICAgIC8v IGZvciB0aGUgZW50cnkgKGF2YWlsYWJsZSA+PSAxLjUpIGFuZCBpZiBzbyBjaGVjayB3aGV0aGVy CisgICAgICAgICAgICAgICAgLy8gdGhlcmUgYXJlIHZhbGlkIGNlcnRpZmljYXRlcyAtIGRvbid0 IHRyeSB0aGlzIGF0IGhvbWUuCisgICAgICAgICAgICAgICAgaWYgKChjZXJ0aWZpY2F0ZXMgPT0g bnVsbCkgJiYgKG1fZ2V0Q29kZVNpZ25lcnMgIT0gbnVsbCkpCisgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICB0cnkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBjZXJ0Q2hhaW5zID0gbmV3IEFycmF5TGlzdCgpOworICAgICAg ICAgICAgICAgICAgICAgICAgT2JqZWN0W10gc2lnbmVycyA9IChPYmplY3RbXSkgbV9nZXRDb2Rl U2lnbmVycy5pbnZva2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnksIG51bGwp OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpZ25lcnMu bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2lnbmVycyAhPSBudWxs KQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg IE9iamVjdCBwYXRoID0gbV9nZXRTaWduZXJDZXJ0UGF0aC5pbnZva2UoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpZ25lcnNbaV0sIG51bGwpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3QgY2VydENoYWlucyA9IG5ldyBBcnJheUxpc3QoKTsKIAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNlcnRDaGFpbnMuYWRkQWxsKChMaXN0KSBtX2dldENlcnRpZmlj YXRlcy5pbnZva2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIG51bGwp KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHNpZ25lcnMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qg cGF0aCA9IG1fZ2V0U2lnbmVyQ2VydFBhdGguaW52b2tlKAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2lnbmVyc1tpXSwgbnVsbCk7CiAKLSAgICAgICAgICAgICAgICAgICAg ICAgIGNlcnRpZmljYXRlcyA9IChDZXJ0aWZpY2F0ZVtdKSBjZXJ0Q2hhaW5zCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgLnRvQXJyYXkobmV3IENlcnRpZmljYXRlW2NlcnRDaGFpbnMuc2l6 ZSgpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRDaGFpbnMuYWRkQWxs KChMaXN0KSBtX2dldENlcnRpZmljYXRlcy5pbnZva2UoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXRoLCBudWxsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVzID0gKENlcnRpZmlj YXRlW10pIGNlcnRDaGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQXJy YXkobmV3IENlcnRpZmljYXRlW2NlcnRDaGFpbnMuc2l6ZSgpXSk7CisgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0 Y2ggKEV4Y2VwdGlvbiBleCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv LyBOb3QgbXVjaCB3ZSBjYW4gZG8gLSBwcm9iYWJseSB3ZSBhcmUgbm90IG9uID49IDEuNQogICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNh dGNoIChFeGNlcHRpb24gZXgpCisKKyAgICAgICAgICAgICAgICBpZiAoKGNlcnRpZmljYXRlcyA9 PSBudWxsKSB8fCAoY2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwKSkKICAgICAgICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOwotICAgICAgICAgICAg ICAgICAgICAvLyBOb3QgbXVjaCB3ZSBjYW4gZG8gLSBwcm9iYWJseSB3ZSBhcmUgbm90IG9uID49 IDEuNQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgoY2VydGlmaWNhdGVzID09IG51bGwp IHx8IChjZXJ0aWZpY2F0ZXMubGVuZ3RoID09IDApKQotICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIExpc3Qg Y2hhaW5zID0gbmV3IEFycmF5TGlzdCgpOwogCi0gICAgICAgICAgICBMaXN0IGNoYWlucyA9IG5l dyBBcnJheUxpc3QoKTsKKyAgICAgICAgICAgICAgICBnZXRSb290Q2hhaW5zKGNlcnRpZmljYXRl cywgY2hhaW5zLCBjaGVjayk7CiAKLSAgICAgICAgICAgIGdldFJvb3RDaGFpbnMoY2VydGlmaWNh dGVzLCBjaGFpbnMsIGNoZWNrKTsKLQotICAgICAgICAgICAgaWYgKGNlcnRpZmljYXRlQ2hhaW5z LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZUNo YWlucy5hZGRBbGwoY2hhaW5zKTsKLSAgICAgICAgICAgICAgICBjb3VudCA9IGNlcnRpZmljYXRl Q2hhaW5zLnNpemUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ZXIyID0gY2VydGlmaWNhdGVD aGFpbnMuaXRlcmF0b3IoKTsgaXRlcjIKLSAgICAgICAgICAgICAgICAgICAgLmhhc05leHQoKTsp CisgICAgICAgICAgICAgICAgaWYgKGNlcnRpZmljYXRlQ2hhaW5zLmlzRW1wdHkoKSkKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlQ2hhaW5zLmFkZEFs bChjaGFpbnMpOworICAgICAgICAgICAgICAgICAgICBjb3VudCA9IGNlcnRpZmljYXRlQ2hhaW5z LnNpemUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQgPSAo WDUwOUNlcnRpZmljYXRlKSAoKExpc3QpIGl0ZXIyCi0gICAgICAgICAgICAgICAgICAgICAgICAu bmV4dCgpKS5nZXQoMCk7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZm91bmQgPSBmYWxz ZTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChJdGVyYXRvciBpdGVyMyA9IGNoYWlucy5pdGVy YXRvcigpOyBpdGVyMy5oYXNOZXh0KCk7KQorICAgICAgICAgICAgICAgICAgICBmb3IgKEl0ZXJh dG9yIGl0ZXIyID0gY2VydGlmaWNhdGVDaGFpbnMuaXRlcmF0b3IoKTsgaXRlcjIKKyAgICAgICAg ICAgICAgICAgICAgICAgIC5oYXNOZXh0KCk7KQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICBYNTA5Q2VydGlmaWNhdGUgY2VydDIgPSAoWDUwOUNlcnRpZmlj YXRlKSAoKExpc3QpIGl0ZXIzCisgICAgICAgICAgICAgICAgICAgICAgICBYNTA5Q2VydGlmaWNh dGUgY2VydCA9IChYNTA5Q2VydGlmaWNhdGUpICgoTGlzdCkgaXRlcjIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAubmV4dCgpKS5nZXQoMCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg IGlmIChjZXJ0LmdldFN1YmplY3RETigpLmVxdWFscyhjZXJ0Mi5nZXRTdWJqZWN0RE4oKSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBjZXJ0LmVxdWFscyhjZXJ0MikpCisgICAgICAg ICAgICAgICAgICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ZXIzID0gY2hhaW5zLml0ZXJhdG9yKCk7IGl0ZXIzLmhh c05leHQoKTspCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWDUwOUNlcnRpZmljYXRlIGNlcnQyID0gKFg1MDlDZXJ0aWZpY2F0ZSkgKChMaXN0 KSBpdGVyMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgpKS5nZXQoMCk7 CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VydC5nZXRTdWJqZWN0RE4oKS5l cXVhbHMoY2VydDIuZ2V0U3ViamVjdEROKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIGNlcnQuZXF1YWxzKGNlcnQyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg aWYgKCFmb3VuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcjIucmVtb3ZlKCk7CiAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBp ZiAoY2VydGlmaWNhdGVDaGFpbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkKICAgICAgICAgICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgICAgICAgICAgaXRlcjIucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAg ICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkJhZCBzaWduZXJzIik7CiAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY2VydGlmaWNhdGVDaGFpbnMu aXNFbXB0eSgpKQorICAgICAgICAgICAgTGlzdCByZXN1bHQgPSBuZXcgQXJyYXlMaXN0KCk7CisK KyAgICAgICAgICAgIGZvciAoSXRlcmF0b3IgaXRlciA9IGNlcnRpZmljYXRlQ2hhaW5zLml0ZXJh dG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp ZiAoY291bnQgPiAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdGhy b3cgbmV3IElPRXhjZXB0aW9uKCJCYWQgc2lnbmVycyIpOwotICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkQWxs KChMaXN0KSBpdGVyLm5leHQoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg ICBMaXN0IHJlc3VsdCA9IG5ldyBBcnJheUxpc3QoKTsKIAotICAgICAgICBmb3IgKEl0ZXJhdG9y IGl0ZXIgPSBjZXJ0aWZpY2F0ZUNoYWlucy5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspCisg ICAgICAgICAgICByZXR1cm4gKFg1MDlDZXJ0aWZpY2F0ZVtdKSByZXN1bHQudG9BcnJheShuZXcg WDUwOUNlcnRpZmljYXRlW3Jlc3VsdAorICAgICAgICAgICAgLnNpemUoKV0pOworICAgICAgICB9 CisgICAgICAgIGZpbmFsbHkKICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LmFkZEFsbCgo TGlzdCkgaXRlci5uZXh0KCkpOworICAgICAgICAgICAgYnVuZGxlLmNsb3NlKCkKICAgICAgICAg fQotCi0gICAgICAgIHJldHVybiAoWDUwOUNlcnRpZmljYXRlW10pIHJlc3VsdC50b0FycmF5KG5l dyBYNTA5Q2VydGlmaWNhdGVbcmVzdWx0Ci0gICAgICAgICAgICAuc2l6ZSgpXSk7CiAgICAgfQog CiAgICAgcHJpdmF0ZSBib29sZWFuIGlzUmV2b2tlZChDZXJ0aWZpY2F0ZSBjZXJ0aWZpY2F0ZSkK ZGlmZiAtLWdpdCBhL2dvZ28vY29tbWFuZC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvZmVsaXgv Z29nby9jb21tYW5kL1V0aWwuamF2YSBiL2dvZ28vY29tbWFuZC9zcmMvbWFpbi9qYXZhL29yZy9h cGFjaGUvZmVsaXgvZ29nby9jb21tYW5kL1V0aWwuamF2YQppbmRleCAxNDc1OWU5Li4yNWViMDQx IDEwMDY0NAotLS0gYS9nb2dvL2NvbW1hbmQvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4 L2dvZ28vY29tbWFuZC9VdGlsLmphdmEKKysrIGIvZ29nby9jb21tYW5kL3NyYy9tYWluL2phdmEv b3JnL2FwYWNoZS9mZWxpeC9nb2dvL2NvbW1hbmQvVXRpbC5qYXZhCkBAIC0xOTksOCArMTk5LDcg QEAgcHVibGljIGNsYXNzIFV0aWwKIAogICAgICAgICAgICAgaWYgKGV4dHJhY3QpCiAgICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgICAgaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOwot ICAgICAgICAgICAgICAgIEphcklucHV0U3RyZWFtIGppcyA9IG5ldyBKYXJJbnB1dFN0cmVhbShp cyk7CisgICAgICAgICAgICAgICAgSmFySW5wdXRTdHJlYW0gamlzID0gbmV3IEphcklucHV0U3Ry ZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZSkpOwogICAgICAgICAgICAgICAgIG91dC5wcmlu dGxuKCJFeHRyYWN0aW5nLi4uIik7CiAgICAgICAgICAgICAgICAgdW5qYXIoamlzLCBsb2NhbERp cik7CiAgICAgICAgICAgICAgICAgamlzLmNsb3NlKCk7CmRpZmYgLS1naXQgYS93ZWJjb25zb2xl L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9mZWxpeC93ZWJjb25zb2xlL2ludGVybmFsL21pc2Mv TGljZW5zZVNlcnZsZXQuamF2YSBiL3dlYmNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hl L2ZlbGl4L3dlYmNvbnNvbGUvaW50ZXJuYWwvbWlzYy9MaWNlbnNlU2VydmxldC5qYXZhCmluZGV4 IDEyY2JiMGYuLjI0ZWRjOTAgMTAwNjQ0Ci0tLSBhL3dlYmNvbnNvbGUvc3JjL21haW4vamF2YS9v cmcvYXBhY2hlL2ZlbGl4L3dlYmNvbnNvbGUvaW50ZXJuYWwvbWlzYy9MaWNlbnNlU2VydmxldC5q YXZhCisrKyBiL3dlYmNvbnNvbGUvc3JjL21haW4vamF2YS9vcmcvYXBhY2hlL2ZlbGl4L3dlYmNv bnNvbGUvaW50ZXJuYWwvbWlzYy9MaWNlbnNlU2VydmxldC5qYXZhCkBAIC0yMzQsMTAgKzIzNCwx MSBAQCBwdWJsaWMgZmluYWwgY2xhc3MgTGljZW5zZVNlcnZsZXQgZXh0ZW5kcyBTaW1wbGVXZWJD b25zb2xlUGx1Z2luIGltcGxlbWVudHMgT3NnaQogICAgICAgICAgICAgICAgIFVSTCB1cmwgPSAo IFVSTCApIGVudHJpZXMubmV4dEVsZW1lbnQoKTsKIAogICAgICAgICAgICAgICAgIElucHV0U3Ry ZWFtIGlucyA9IG51bGw7CisgICAgICAgICAgICAgICAgWmlwSW5wdXRTdHJlYW0gemluID0gbnVs bDsKICAgICAgICAgICAgICAgICB0cnkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgIGlucyA9IHVybC5vcGVuU3RyZWFtKCk7Ci0gICAgICAgICAgICAgICAgICAgIFppcElu cHV0U3RyZWFtIHppbiA9IG5ldyBaaXBJbnB1dFN0cmVhbSggaW5zICk7CisgICAgICAgICAgICAg ICAgICAgIHppbiA9IG5ldyBaaXBJbnB1dFN0cmVhbSggaW5zICk7CiAgICAgICAgICAgICAgICAg ICAgIGZvciAoIFppcEVudHJ5IHplbnRyeSA9IHppbi5nZXROZXh0RW50cnkoKTsgemVudHJ5ICE9 IG51bGw7IHplbnRyeSA9IHppbi5nZXROZXh0RW50cnkoKSApCiAgICAgICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gemVudHJ5LmdldE5hbWUo KTsKQEAgLTI2Niw2ICsyNjcsNyBAQCBwdWJsaWMgZmluYWwgY2xhc3MgTGljZW5zZVNlcnZsZXQg ZXh0ZW5kcyBTaW1wbGVXZWJDb25zb2xlUGx1Z2luIGltcGxlbWVudHMgT3NnaQogICAgICAgICAg ICAgICAgIGZpbmFsbHkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIElP VXRpbHMuY2xvc2VRdWlldGx5KCBpbnMgKTsKKyAgICAgICAgICAgICAgICAgICAgSU9VdGlscy5j bG9zZVF1aWV0bHkoIHppbiApOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgfQo= --001a114e005c670a19054847f531--