Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kMopw-0001Sh-MB for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Sep 2020 08:48:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kMopP-0000ep-Gd for pgadmin-hackers@arkaria.postgresql.org; Mon, 28 Sep 2020 08:48:11 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kMopO-0000dn-Jd for pgadmin-hackers@lists.postgresql.org; Mon, 28 Sep 2020 08:48:11 +0000 Received: from mail-lf1-x143.google.com ([2a00:1450:4864:20::143]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kMopG-0000S9-FI for pgadmin-hackers@postgresql.org; Mon, 28 Sep 2020 08:48:09 +0000 Received: by mail-lf1-x143.google.com with SMTP id u8so342497lff.1 for ; Mon, 28 Sep 2020 01:48:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vdWz9U2lPfLWUgdRg0i/xrEYt3Igtoh1+b1166Gbm9s=; b=hi0JO/txMtvgN3vmaqMNGe/47Y7etrDx5QtJTtsBrty9u2q9/NdgXUuPGPvDBeHku2 KNktEYKmtqGCkqV8115sXhSYm6BGEcpvBGe9wM+6j/PsZeVMlkEuYCDZ268u8pEqLTcU O0mwIMxKfnPmnbDTdIs7xrx0n1+y0YIuhg3pKv6gHna1+spDrk+S1Jz/+tvCL0Lr0AGV IUNRvwJZfyxa2GJ1QJnp9Ugm77G8z5z9h86z6LyU+AoH3pWQWekKjKlZg+FYlENnDEkT bRRyj7CcUVvRj9Y+XpXrx7UWGLtRWmdASyY0esQ429HIOLnY21xnWFXJ3MATw/GLeu9R /Usg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vdWz9U2lPfLWUgdRg0i/xrEYt3Igtoh1+b1166Gbm9s=; b=jbbYXLYRhEyt6C863S8LXo37BXpykiF2hTNCMivu8tzEZZ/ZsB42/sPjgkat+dbaEH jZf4fnODa1r12jYKRkcS9Mz3wFF/YjTGJV6iZGMoJ7S4Ui1lBZeB9KkoaZLsbuts0R3D u1vVAlQAS+AeIFkNFwh77VExy+rcK1REZkWTD+2QbmckSQYgTh6YZ0HLwJ8AR6ONcrrz S3B0KH2cMdE9MFGv6jYw7kZazUKUcMgov7UQ2ChjLN+OEyH4p3ifpNrlpi/zRhmbIaHj MhqLZwLfNxrrI0+1Mp4gQwnh8atw0K6V4Pn5ByKnq229XLGXA69l23+8rilIoLoFqc9r Ru/A== X-Gm-Message-State: AOAM533H+c7S+s0n+NXIeElHwzpy0VXOudlvYRW0ggHmpYrurxdxrdgD d/vI7+7RhBLZztdpgBsefROLwo/Ajeslv+/vqwp2iaVV0cxcRpBxHYG9VfA2wK5/sle17Y9MYGc 6VB7kbDS0CC4PRqwLdFkkdTYbDIqqoTkbeGVWvsHWYf9Z3gHDktPQ8j76HWWzJ1o28t5UZ9TrFk dzqeiv0VWlOXFMERcxeQuKmp39prWN9tSyc60tUkbdO24OjLfqQVuGNp5eQg== X-Google-Smtp-Source: ABdhPJyOU90JnX+MDhJkHREiP7NDYJ/+vGduln+ySEw9noAdxNnJ52hVK9S4oZtCqNiPxw+s4kotT59piFHUCjYPwVk= X-Received: by 2002:a05:6512:1090:: with SMTP id j16mr102248lfg.3.1601282879924; Mon, 28 Sep 2020 01:47:59 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Mon, 28 Sep 2020 14:17:55 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 1402 - Macro support like pgAdmin3 To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000003ec7a405b05bb9c0" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000003ec7a405b05bb9c0 Content-Type: multipart/related; boundary="0000000000003ec7a305b05bb9bf" --0000000000003ec7a305b05bb9bf Content-Type: multipart/alternative; boundary="0000000000003ec7a105b05bb9be" --0000000000003ec7a105b05bb9be Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached updated patch. Thanks, Khushboo On Wed, Sep 23, 2020 at 5:42 PM Akshay Joshi wrote: > Hi Khushboo > > Following are the GUI review comments: > > - If we provide anyone value either Name or SQL it throws Alertify > error message with 'name' or 'SQL'. The error message should be correct. > > [image: Name_Error.png] > Fixed. > > - We should not enable the 'Save' button if the value of Name or SQL > is not entered by the user. Either both values should be there or both > should be blank. > > Fixed. > > - Click on anywhere inside the empty cell where the clear row icon is > not visible, it pops up the message to clear the row which is already > empty. > > [image: Clear_Row.png] > Fixed. > > - Save any macro and then open the "Manage Macros..." dialog again > click on the SQL control for the existing macro, cursor is not at the > appropriate place. > > [image: CodeMirror_Error.png] > Fixed. > > - Macros are not working for multiple users. Create some macro from > User1 and then log in using User2, macros created by User1 are visible to > User2 and when I try to update it is not updating. > > Fixed. > > On Mon, Sep 21, 2020 at 2:19 PM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached patch for RM 1402 - Macro support like pgAdmin3. >> >> Thanks, >> Khushboo >> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Sr. Software Architect* > *EDB Postgres * > > *Mobile: +91 976-788-8246* > --0000000000003ec7a105b05bb9be Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the at= tached updated patch.

Thanks,
Khushboo

On Wed, Sep 23, 2020 at 5:42 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
=
Hi= =C2=A0Khushboo

Following are the GUI review comments:
  • If we provide anyone value=C2=A0either=C2=A0Name or SQL it throws= Alertify error message with 'name' or 'SQL'. The error mes= sage should be correct.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<= img src=3D"cid:ii_kffcbhyx0" alt=3D"Name_Error.png" width=3D"202" height=3D= "35" style=3D"margin-right: 0px;">
F= ixed.=C2=A0
  • We should not enable the 'Save' button i= f the value of Name or SQL is not entered by the user. Either both values s= hould be there or both should be blank.
Fixed.=C2=A0
  • Click on anywhere inside the empty ce= ll where the clear row icon is not visible, it pops up=C2=A0the message to = clear the row which is already empty.=C2=A0
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A03D"Clear_Row.png"=
<= /div>
Fixed.=C2=A0
  • Save an= y macro and then open the "Manage Macros..." dialog again click o= n the SQL control for the existing macro, cursor is not at the appropriate = place.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A03D"CodeMirror_Error.png"
=
Fixed.=C2=A0
  • Macros are not working for mult= iple users. Create some macro from User1 and then log in using User2, macro= s created by User1 are visible=C2=A0to User2 and when I try to update it is= not updating.
Fixed.=C2=A0

On Mon, Sep 21, 2020 at 2:19= PM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,
Please find the attached patch for RM 1402 - Macro support lik= e pgAdmin3.

Thanks,
Khushboo
<= br>


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Sr. Software Ar= chitect
EDB Postgres=
Mobile: +91 976-788-8246

--0000000000003ec7a105b05bb9be-- --0000000000003ec7a305b05bb9bf Content-Type: image/png; name="Name_Error.png" Content-Disposition: inline; filename="Name_Error.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_kffcbhyx0 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 9jXud9hfe4BxoLwJaZre1NMsala2pLd0HBx9sK01sPXAr8N+3X7I5lDNYePDy45Qj5Qe6T9acrT3 mPRY9/Gc4w/bJrfdPjHuxNWTY0+2n4o5dea3yN9OnGafPnom6MyhswFnD57zO9d83ud80wXvCwd+ 9/79QLtPe9NF34stl/wvtXaM6jhyOeTy8SvhV367yr16/lrctY7rKddv3phwQ3lTcPPprfxbL/4o +qPv9tw7hDvld/XvVt6zuFf3L5d/7Vb6KA/fD79/4UHSg9sP+Q+fPZI/+thZ+pj+uPKJ9ZP6p55P D3VFdl36c/yfnc+kz/q6y/4y+Kv2ufPz/X+H/n2hZ1xP5wvZi/6XS16Zvdr+euTrtt6E3ntvCt70 vS1/Z/Zux3u/96c/pH140jftI+lj1SeXT62fYz7f6S/o75fyZDz1VgCDDc3OBuDldgDo6QAwLsH9 w3jNOU8tiOZsqkbgP2HNWVAtPgA0wptqu845BsAe2BznQm7YVFv15FCAenkNNq3Is708NVw0eOIh vOvvf2UJAKkVgE+y/v6+9f39n7bCYG8BcGyq5nypEiI8G2wKVaFrplkD/gfl3/5mf27cNipMAAAC C2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczpt ZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0 dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMu YWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3Rp ZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjE8L3RpZmY6Q29t cHJlc3Npb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+ CiAgICAgICAgIDx0aWZmOlBob3RvbWV0cmljSW50ZXJwcmV0YXRpb24+MjwvdGlmZjpQaG90b21l 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 --0000000000003ec7a305b05bb9bf Content-Type: image/png; name="Clear_Row.png" Content-Disposition: inline; filename="Clear_Row.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_kffcd3sp1 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 9jXud9hfe4BxoLwJaZre1NMsala2pLd0HBx9sK01sPXAr8N+3X7I5lDNYePDy45Qj5Qe6T9acrT3 mPRY9/Gc4w/bJrfdPjHuxNWTY0+2n4o5dea3yN9OnGafPnom6MyhswFnD57zO9d83ud80wXvCwd+ 9/79QLtPe9NF34stl/wvtXaM6jhyOeTy8SvhV367yr16/lrctY7rKddv3phwQ3lTcPPprfxbL/4o +qPv9tw7hDvld/XvVt6zuFf3L5d/7Vb6KA/fD79/4UHSg9sP+Q+fPZI/+thZ+pj+uPKJ9ZP6p55P D3VFdl36c/yfnc+kz/q6y/4y+Kv2ufPz/X+H/n2hZ1xP5wvZi/6XS16Zvdr+euTrtt6E3ntvCt70 vS1/Z/Zux3u/96c/pH140jftI+lj1SeXT62fYz7f6S/o75fyZDz1VgCDDc3OBuDldgDo6QAwLsH9 w3jNOU8tiOZsqkbgP2HNWVAtPgA0wptqu845BsAe2BznQm7YVFv15FCAenkNNq3Is708NVw0eOIh vOvvf2UJAKkVgE+y/v6+9f39n7bCYG8BcGyq5nypEiI8G2wKVaFrplkD/gfl3/5mf27cNipMAAAA CXBIWXMAABYlAAAWJQFJUiTwAAACBGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRh eC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1s bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQ aXhlbFlEaW1lbnNpb24+Mzk4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6 UGl4ZWxYRGltZW5zaW9uPjI0MDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDx0aWZm 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 wlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjA mimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOA CayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAz BJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcE NEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+ RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa 7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAms osF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASY wCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBF gAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUE VASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhc RkBFgAmsosF+RkAzBJjAmimMxWUEVASYwCoa7GcENEOACayZwlhcRkBFgAmsosF+RkAzBJjAmimM xWUEVASYwCoa7GcENEOACayZwlhcRkBFwDFv4TK3cNQ2v5V6n/2MACOgAQJcA2ugJBaREfCHwP8D CDoOGWzFLzwAAAAASUVORK5CYII= --0000000000003ec7a305b05bb9bf Content-Type: image/png; name="CodeMirror_Error.png" Content-Disposition: inline; filename="CodeMirror_Error.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_kffcenaw2 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 9jXud9hfe4BxoLwJaZre1NMsala2pLd0HBx9sK01sPXAr8N+3X7I5lDNYePDy45Qj5Qe6T9acrT3 mPRY9/Gc4w/bJrfdPjHuxNWTY0+2n4o5dea3yN9OnGafPnom6MyhswFnD57zO9d83ud80wXvCwd+ 9/79QLtPe9NF34stl/wvtXaM6jhyOeTy8SvhV367yr16/lrctY7rKddv3phwQ3lTcPPprfxbL/4o +qPv9tw7hDvld/XvVt6zuFf3L5d/7Vb6KA/fD79/4UHSg9sP+Q+fPZI/+thZ+pj+uPKJ9ZP6p55P D3VFdl36c/yfnc+kz/q6y/4y+Kv2ufPz/X+H/n2hZ1xP5wvZi/6XS16Zvdr+euTrtt6E3ntvCt70 vS1/Z/Zux3u/96c/pH140jftI+lj1SeXT62fYz7f6S/o75fyZDz1VgCDDc3OBuDldgDo6QAwLsH9 w3jNOU8tiOZsqkbgP2HNWVAtPgA0wptqu845BsAe2BznQm7YVFv15FCAenkNNq3Is708NVw0eOIh vOvvf2UJAKkVgE+y/v6+9f39n7bCYG8BcGyq5nypEiI8G2wKVaFrplkD/gfl3/5mf27cNipMAAAA CXBIWXMAABYlAAAWJQFJUiTwAAACBWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0 YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8 cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRh eC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4 bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1s bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQ aXhlbFlEaW1lbnNpb24+Mjk0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6 UGl4ZWxYRGltZW5zaW9uPjE4MDI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8dGlm 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 9OxKS11dXUyYMCHOO++8OPjgg7c6L2147LHH4oILLohVq1Zl+wcNGhTPPPPMNo+1kQCB6hV4ZeHf s8p39O/8rDlb/j8w41+65rlZvcJqXiyB008/PV588cW444474sgjjyxWscohQIAAAQIECBAgQIAA AQIEKlTgqvuXZzU788AtHV965jq+FFqWLH290O4O9+25R+E/Zt74fgccPQo7pHQAAQIdCTz77LMd HdJq//Dhw+OGG27ItqV5mlasWBEHHXRQ9O5deMi+NGdh6oGRlhRMzp8/Pxu6bdSoUR2e29jYGCmY XLBgQdZzce+9987K8YMAAQIECJRbYPbs2VlIeNxxxwkJy43vegQIECBAgAABAgQIECBAgEArAUFh Kw4rBAiUWyCFfOnV2aVfv36d/nK1V69eWa/Fzl7L8QQIECBAoFgCd955Z1x66aWR/h277LLLilWs cggQIECAAAECBAgQIECAAAECOyQgKNwhNicRIECAAAECBAgQ6JzAF7/4xXjooYciDX998803x6GH Htq5AhxNgAABAgQIECBAgAABAgQIECiygKCwyKCKI0CAAAECBAgQILAtgcMPPzwOPPDAmDJlSgwc OHBbh9hGgAABAgQIECBAgAABAgQIECirgKCwrNwuRoAAAQIECBAg0F0Fzj///O7adO0mQIAAAQIE CBAgQIAAAQIEKlSgR4XWS7UIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECihgKCwhLiKJkCA AAECBAgQIECAAAECBAgQIECAAAECBAgQIFCpAoLCSr0z6kWAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECghAKCwhLiKpoAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBApQoICiv1zqgXAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAgRIKCApLiKtoAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB ApUqICis1DujXgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRKKCAoLCGuogkQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAhUqoCgsFLvjHoRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQKKGA oLCEuIomUG6BTZs3l/uSrkeAAIGKEfAMrJhboSIECBAgQIAAAQIECBAgQIAAAQJVIiAorJIbpZoE Cgr06JntfufdDQUPs5MAAQK1LND8DHz/mVjLbdU2AgQIECBAgAABAgQIECBAgAABAsUQEBQWQ1EZ BLpYYHN9r6wGTWve7eKauDwBAgS6TiD/DMw/E7uuJq5MgAABAgQIECBAgAABAgQIECBAoDoEBIXV cZ/UkkBBgc29emf717/zdqxZu77gsXYSIECgFgXSsy89A9OSfybWYju1iQABAgQIECBAgAABAgQI ECBAgEAxBQSFxdRUFoEuEtjcsyH3xfgu2dXfWP6msLCL7oPLEiDQNQIpJEzPvrSkZ2F6JloIECBA gAABAgQIECBAgAABAgQIEOhYoL7jQxxBgEA1CGzapV/02LQx6t7LfWH++opo2rVvDOzXJ3bt0xA9 6uqqoQnqSIAAge0W2LR5c6Q5CdNwo809CXPDMKdnoYUAAQIECBAgQIAAAQIECBAgQIAAge0TEBRu n5OjCFSFwKa+A6PH2jVRt35t9sX5G+8Pw1cVlVdJAgQI7IRA6kkoJNwJQKcSIECAAAECBAgQIECA AAECBAh0SwFBYbe87RpdywLpi/K63JyFdevXZb0LI9fL0EKAAIGaFOjRMzbnehGmOQkNN1qTd1ij CBAgQIAAAQIECBAgQIAAAQIESiwgKCwxsOIJdIVANmfhLubo6gp71yRAgAABAgQIECBAgAABAgQI ECBAgAABAtUi0KNaKqqeBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgUT0BQWDxLJREgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBCoGgFBYdXcKhUlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgUDwBQWHxLJVEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoGoEBIVVc6tUlAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgEDxBASFxbNUEgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGq ERAUVs2tUlECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECxRMQFBbPUkkECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIEqkZAUFg1t0pFCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBRPQFBY PEslESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKgaAUFh1dwqFSVAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBQPAFBYfEslUSAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgagQEhVVzq1SU AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQPEEBIXFs1QSAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAgaoREBRWza1SUQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLFExAUFs9SSQQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgSqRkBQWDW3SkUJECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIFE9AUFg8SyURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqBoBQWHV3CoVJUCAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIFA8AUFh8SyVRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBq BASFVXOrVJQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA8QQEhcWzVBIBAgQIECBAgAABAgQI ECBAgAABAgQIECBAgEA3Epg6dWqkV7UugsJqvXPqTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg 0GUC1RwQ5tHq82/8JkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgY4F8SDh58uRobGzs+IQK PUKPwgq9MapFgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQeQK1EhImWUFh5X2+1IgAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQKACBWopJEy8gsIK/JCpEgECBAgQIECAAAECBAgQIECAAAECBAgQ IECAQGUJ1FpImHQFhZX1GVMbAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBChOoxZAwEQsKK+yD pjoECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKVI1CrIWESFhRWzudMTQgQIECAAAECBAgQIECA AAECBAgQIECAAAECBCpIoKOQMO3PH1NB1d7uqggKt5vKgQQIECBAgAABAgQIECBAgAABAgQIECBA gAABAt1FIB8ATp48ORobG7dqdn7/VjuqaEN9FdVVVQkQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAiUXCAfAnYUEra3v+QVLNIF9CgsEqRiCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEql+gu4SE 6U4JCqv/86oFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECRRDoTiFh4hIUFuFDowgCBAgQIECA AAECBAgQIECAAAECBAgQIECAAIHqFuhuIWG6W4LC6v7Mqj0BAgQIECBAgAABAgQIECBAgAABAgQI ECBAgEARBG666aaslMbGxm2W1tH+bZ5U4RsFhRV+g1SPAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECgPAL5MLC9q3W0v73zKnW7oLBS74x6ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECihgKCw hLiKJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFCpAoLCSr0z6kWAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECghAKCwhLiKpoAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBApQoICiv1zqgX AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRIKCApLiKtoAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABApUqUF+pFVMvAgQIECBAgECpBa66f3mpL6F8AgQIECBAgAABAgQIECBAgAABAhUroEdh xd4aFSNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQOoF2exR+4RszS3fVLiz5lkvPzK5eq+3r QlqXLoGAz2sJUBVJgACBnED++frZq27lQYAAAQIECBAgQIAAAQIECBAgQKBsAme+n1OV7YIdXEiP wg6A7CZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQiwJ1c+b+eXNuiZEjhrdq35i9R7Rar5WV Vxb+PWtKrbavVu6TdmwR8Hn1SSBAgEBpBDxfS+OqVAIECBAgQIAAAQIECBAgQIAAgcIC+e+lejY0 FDxwydLXC+7vaOeeewwreMjGDRuy/XoUFmSykwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBt CggKa/O+ahUBAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBggKCwoI8dhIgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBCoTQFBYW3eV60iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUFBAUFiQ x04CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECtSkgKKzN+6pVBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAoKCAoL8thJgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDYF6muzWVpFoHsL rFu3Pt56e228++76eO+992Lz5u7tofUECNSeQF1dRH19ffTp0yv6990levfuVXuN1CICBAgQIECA AAECBAgQIECAAAECJRYQFJYYWPEEyi2wfGVTvPXWO+W+rOsRIECgrALpDyA2bHgve6VnXv/+u8bu uw0sax1cjAABAgQIECBAgAABAgQIECBAgEC1CwgKq/0Oqj+BFgJLX18Za9euy7YMHNA3+uZ62fRq qI+61PXGQoAAgRoS2JxLCtfngsK3c72nm1a/nf2BxHvvbYw9hu1WQ63UFAIECBAgQIAAAQIECBAg QIAAAQKlFRAUltZX6QTKJpB6EqaQsL6+ZwwbOjh692oo27VdiAABAuUWSH8AkZ5z6ZX+KOL1N1Zl z8D0LNSzsNx3w/UIECBAgAABAgQIECBAgAABAgSqVeD/AeTj6M+JW3bIAAAAAElFTkSuQmCC --0000000000003ec7a305b05bb9bf-- --0000000000003ec7a405b05bb9c0 Content-Type: application/octet-stream; name="RM_1402_v1.patch" Content-Disposition: attachment; filename="RM_1402_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kfmaghgn3 ZGlmZiAtLWdpdCBhL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zLzM5ODY5N2RjOTU1MF8ucHkgYi93 ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy8zOTg2OTdkYzk1NTBfLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMC4uYzk2NTFmNTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL21p Z3JhdGlvbnMvdmVyc2lvbnMvMzk4Njk3ZGM5NTUwXy5weQpAQCAtMCwwICsxLDU2IEBACisKKyIi ImVtcHR5IG1lc3NhZ2UKKworUmV2aXNpb24gSUQ6IDM5ODY5N2RjOTU1MAorUmV2aXNlczogYTA5 MWM5NjExZDIwCitDcmVhdGUgRGF0ZTogMjAyMC0wOS0wNyAxNToxNzo1OS40NzM4NzkKKworIiIi Citmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiCisKKyMgcmV2aXNpb24gaWRlbnRpZmllcnMs IHVzZWQgYnkgQWxlbWJpYy4KK3JldmlzaW9uID0gJzM5ODY5N2RjOTU1MCcKK2Rvd25fcmV2aXNp b24gPSAnYTA5MWM5NjExZDIwJworYnJhbmNoX2xhYmVscyA9IE5vbmUKK2RlcGVuZHNfb24gPSBO b25lCisKKworZGVmIHVwZ3JhZGUoKToKKyAgICBkYi5lbmdpbmUuZXhlY3V0ZSgiIiIKKyAgICAg ICAgQ1JFQVRFIFRBQkxFIG1hY3JvcyAoCisgICAgICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxM LAorICAgICAgICAgICAgYWx0IEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBjb250cm9s IEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBrZXkJVkFSQ0hBUigxMjgpIE5PVCBOVUxM LAorICAgICAgICAgICAga2V5X2NvZGUgSU5URUdFUiBOT1QgTlVMTCwKKyAgICAgICAgICAgIFBS SU1BUlkgS0VZKGlkKQorICAgICAgICApOworICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVj dXRlKCIiIgorICAgICAgICBDUkVBVEUgVEFCTEUgdXNlcl9tYWNyb3MgKAorICAgICAgICAgICAg bWlkIElOVEVHRVIgTk9UIE5VTEwsCisgICAgICAgICAgICB1aWQgSU5URUdFUiBOT1QgTlVMTCwK KyAgICAgICAgICAgIG5hbWUgVkFSQ0hBUigxMDI0KSBOT1QgTlVMTCwKKyAgICAgICAgICAgIHNx bAlURVhUIE5PVCBOVUxMLAorICAgICAgICAgICAgUFJJTUFSWSBLRVkobWlkLCB1aWQpLAorICAg ICAgICAgICAgRk9SRUlHTiBLRVkobWlkKSBSRUZFUkVOQ0VTIG1hY3JvcyAoaWQpLAorICAgICAg ICAgICAgRk9SRUlHTiBLRVkodWlkKSBSRUZFUkVOQ0VTIHVzZXIgKGlkKQorICAgICAgICApOwor ICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBJTlNFUlQgSU5U TyBtYWNyb3MgKGlkLCBhbHQsIGNvbnRyb2wsIGtleSwga2V5X2NvZGUpIFZBTFVFUyAoMSwgZmFs c2UsIHRydWUsICcxJywgNDkpLAorICAgICAgICAoMiwgZmFsc2UsIHRydWUsICcyJywgNTApLCAo MywgZmFsc2UsIHRydWUsICczJywgNTEpLCAoNCwgZmFsc2UsIHRydWUsICc0JywgNTIpLAorICAg ICAgICAoNSwgZmFsc2UsIHRydWUsICc1JywgNTMpLCAoNiwgZmFsc2UsIHRydWUsICc2JywgNTQp LCAoNywgZmFsc2UsIHRydWUsICc3JywgNTUpLAorICAgICAgICAoOCwgZmFsc2UsIHRydWUsICc4 JywgNTYpLCAoOSwgZmFsc2UsIHRydWUsICc5JywgNTcpLCAoMTAsIGZhbHNlLCB0cnVlLCAnMCcs IDQ4KSwKKyAgICAgICAgKDExLCB0cnVlLCBmYWxzZSwgJ0YxJywgMTEyKSwgKDEyLCB0cnVlLCBm YWxzZSwgJ0YyJywgMTEzKSwgKDEzLCB0cnVlLCBmYWxzZSwgJ0YzJywgMTE0KSwKKyAgICAgICAg KDE0LCB0cnVlLCBmYWxzZSwgJ0Y0JywgMTE1KSwgKDE1LCB0cnVlLCBmYWxzZSwgJ0Y1JywgMTE2 KSwgKDE2LCB0cnVlLCBmYWxzZSwgJ0Y2JywgMTE3KSwKKyAgICAgICAgKDE3LCB0cnVlLCBmYWxz ZSwgJ0Y3JywgMTE4KSwgKDE4LCB0cnVlLCBmYWxzZSwgJ0Y4JywgMTE5KSwgKDE5LCB0cnVlLCBm YWxzZSwgJ0Y5JywgMTIwKSwKKyAgICAgICAgKDIwLCB0cnVlLCBmYWxzZSwgJ0YxMCcsIDEyMSks ICgyMSwgdHJ1ZSwgZmFsc2UsICdGMTEnLCAxMjIpLCAoMjIsIHRydWUsIGZhbHNlLCAnRjEyJywg MTIzKTsKKyAgICAiIiIpCisKKworZGVmIGRvd25ncmFkZSgpOgorICAgICMgcGdBZG1pbiBvbmx5 IHVwZ3JhZGVzLCBkb3duZ3JhZGUgbm90IGltcGxlbWVudGVkLgorICAgIHBhc3MKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vbW9kZWwvX19p bml0X18ucHkKaW5kZXggYjMzYWRjMDYyLi40MjVjOWU2NDkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL21vZGVsL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5 CkBAIC0yOSw3ICsyOSw3IEBAIGZyb20gZmxhc2tfc3FsYWxjaGVteSBpbXBvcnQgU1FMQWxjaGVt eQogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotU0NIRU1BX1ZFUlNJT04gPSAyNgorU0NIRU1BX1ZF UlNJT04gPSAyNwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwpAQCAtMzkxLDMgKzM5MSwyNiBAQCBj bGFzcyBTaGFyZWRTZXJ2ZXIoZGIuTW9kZWwpOgogICAgIHR1bm5lbF9pZGVudGl0eV9maWxlID0g ZGIuQ29sdW1uKGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCiAgICAgdHVubmVsX3Bhc3N3 b3JkID0gZGIuQ29sdW1uKGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCiAgICAgc2hhcmVk ID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4oKSwgbnVsbGFibGU9RmFsc2UpCisKKworY2xhc3MgTWFj cm9zKGRiLk1vZGVsKToKKyAgICAiIiJEZWZpbmUgYSBwYXJ0aWN1bGFyIG1hY3JvLiIiIgorICAg IF9fdGFibGVuYW1lX18gPSAnbWFjcm9zJworICAgIGlkID0gZGIuQ29sdW1uKGRiLkludGVnZXIs IHByaW1hcnlfa2V5PVRydWUpCisgICAgYWx0ID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4oKSwgbnVs bGFibGU9RmFsc2UpCisgICAgY29udHJvbCA9IGRiLkNvbHVtbihkYi5Cb29sZWFuKCksIG51bGxh YmxlPUZhbHNlKQorICAgIGtleSA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMzIpLCBudWxsYWJsZT1G YWxzZSkKKyAgICBrZXlfY29kZSA9IGRiLkNvbHVtbihkYi5JbnRlZ2VyLCBudWxsYWJsZT1GYWxz ZSkKKworCitjbGFzcyBVc2VyTWFjcm9zKGRiLk1vZGVsKToKKyAgICAiIiJEZWZpbmUgdGhlIG1h Y3JvIGZvciBhIHBhcnRpY3VsYXIgdXNlci4iIiIKKyAgICBfX3RhYmxlbmFtZV9fID0gJ3VzZXJf bWFjcm9zJworICAgIG1pZCA9IGRiLkNvbHVtbigKKyAgICAgICAgZGIuSW50ZWdlciwgZGIuRm9y ZWlnbktleSgnbWFjcm9zLmlkJyksIHByaW1hcnlfa2V5PVRydWUKKyAgICApCisgICAgdWlkID0g ZGIuQ29sdW1uKAorICAgICAgICBkYi5JbnRlZ2VyLCBkYi5Gb3JlaWduS2V5KCd1c2VyLmlkJyks IHByaW1hcnlfa2V5PVRydWUKKyAgICApCisgICAgbmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmco MTAyNCksIG51bGxhYmxlPUZhbHNlKQorICAgIHNxbCA9IGRiLkNvbHVtbihkYi5UZXh0KCksIG51 bGxhYmxlPUZhbHNlKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tncmlk LnBnYWRtaW4uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2dyaWQucGdhZG1pbi5qcwpp bmRleCBlNDE3ZGM3OGQuLmRlZjljMThmNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tncmlkLnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tn cmlkLnBnYWRtaW4uanMKQEAgLTksMTAgKzksMTAgQEAKIAogZGVmaW5lKFsKICAgJ3NvdXJjZXMv Z2V0dGV4dCcsICd1bmRlcnNjb3JlJywgJ2pxdWVyeScsICdiYWNrYm9uZScsICdiYWNrZm9ybScs ICdiYWNrZ3JpZCcsICdhbGVydGlmeScsCi0gICdtb21lbnQnLCAnYmlnbnVtYmVyJywgJ3NvdXJj ZXMvdXRpbHMnLCAnc291cmNlcy9rZXlib2FyZF9zaG9ydGN1dHMnLCAnc291cmNlcy9zZWxlY3Qy L2NvbmZpZ3VyZV9zaG93X29uX3Njcm9sbCcsCisgICdtb21lbnQnLCAnYmlnbnVtYmVyJywgJ2Nv ZGVtaXJyb3InLCAnc291cmNlcy91dGlscycsICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycs ICdzb3VyY2VzL3NlbGVjdDIvY29uZmlndXJlX3Nob3dfb25fc2Nyb2xsJywKICAgJ2Jvb3RzdHJh cC5kYXRldGltZXBpY2tlcicsICdiYWNrZ3JpZC5maWx0ZXInLCAnYm9vdHN0cmFwLnRvZ2dsZScs CiBdLCBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgXywgJCwgQmFja2JvbmUsIEJhY2tmb3JtLCBCYWNr Z3JpZCwgQWxlcnRpZnksIG1vbWVudCwgQmlnTnVtYmVyLAorICBnZXR0ZXh0LCBfLCAkLCBCYWNr Ym9uZSwgQmFja2Zvcm0sIEJhY2tncmlkLCBBbGVydGlmeSwgbW9tZW50LCBCaWdOdW1iZXIsIENv ZGVNaXJyb3IsCiAgIGNvbW1vblV0aWxzLCBrZXlib2FyZFNob3J0Y3V0cywgY29uZmlndXJlX3No b3dfb25fc2Nyb2xsCiApIHsKICAgLyoKQEAgLTQ0LDcgKzQ0LDcgQEAgZGVmaW5lKFsKICAgXy5l eHRlbmQoQmFja2dyaWQuSW5wdXRDZWxsRWRpdG9yLnByb3RvdHlwZS5ldmVudHMsIHsKICAgICAn a2V5ZG93bic6IGZ1bmN0aW9uKGUpIHsKICAgICAgIGxldCBwcmVmZXJlbmNlcyA9IHBnQnJvd3Nl ci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOwotICAgICAgaWYoa2V5Ym9h cmRTaG9ydGN1dHMudmFsaWRhdGVTaG9ydGN1dEtleXMocHJlZmVyZW5jZXMuYWRkX2dyaWRfcm93 LGUpKSB7CisgICAgICBpZihwcmVmZXJlbmNlcyAmJiBrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0 ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZSkpIHsKICAgICAgICAgcGdC cm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5iaW5kQWRkR3JpZFJvdygpOwogICAgICAgfSBlbHNl IHsKICAgICAgICAgQmFja2dyaWQuSW5wdXRDZWxsRWRpdG9yLnByb3RvdHlwZS5zYXZlT3JDYW5j ZWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKQEAgLTMyNCw3ICszMjQsNyBAQCBkZWZpbmUoWwog ICAgICAgICBldmVudHM6IHsKICAgICAgICAgICAna2V5ZG93bic6IGZ1bmN0aW9uIChldmVudCkg ewogICAgICAgICAgICAgbGV0IHByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNl c19mb3JfbW9kdWxlKCdicm93c2VyJyk7Ci0gICAgICAgICAgICBpZihrZXlib2FyZFNob3J0Y3V0 cy52YWxpZGF0ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZXZlbnQpKSB7 CisgICAgICAgICAgICBpZihwcmVmZXJlbmNlcyAmJiBrZXlib2FyZFNob3J0Y3V0cy52YWxpZGF0 ZVNob3J0Y3V0S2V5cyhwcmVmZXJlbmNlcy5hZGRfZ3JpZF9yb3csZXZlbnQpKSB7CiAgICAgICAg ICAgICAgIHBnQnJvd3Nlci5rZXlib2FyZE5hdmlnYXRpb24uYmluZEFkZEdyaWRSb3coKTsKICAg ICAgICAgICAgIH0KICAgICAgICAgICB9LApAQCAtNjA2LDYgKzYwNiw5NiBAQCBkZWZpbmUoWwog ICAgIH0sCiAgIH0pOwogCisKKyAgQmFja2dyaWQuRXh0ZW5zaW9uLkNsZWFyQ2VsbCA9IEJhY2tn cmlkLkNlbGwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogXy5kZWZhdWx0cyh7CisgICAgICBkZWZh dWx0Q2xlYXJNc2c6IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBjbGVhciB0aGlz IHJvdz8nKSwKKyAgICAgIGRlZmF1bHRDbGVhclRpdGxlOiBnZXR0ZXh0KCdDbGVhciBSb3cnKSwK KyAgICB9LCBCYWNrZ3JpZC5DZWxsLnByb3RvdHlwZS5kZWZhdWx0cyksCisKKyAgICAvKiogQHBy b3BlcnR5ICovCisgICAgY2xhc3NOYW1lOiAnY2xlYXItY2VsbCcsCisgICAgZXZlbnRzOiB7Cisg ICAgICAnY2xpY2snOiAnY2xlYXJSb3cnLAorICAgIH0sCisgICAgY2xlYXJSb3c6IGZ1bmN0aW9u KGUpIHsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIGlmIChfLmlzRW1wdHkoZS5j dXJyZW50VGFyZ2V0LmlubmVySFRNTCkpIHJldHVybiBmYWxzZTsKKyAgICAgIHZhciB0aGF0ID0g dGhpczsKKyAgICAgIC8vIFdlIHdpbGwgY2hlY2sgaWYgcm93IGlzIGRlbGV0YWJsZSBvciBub3QK KworICAgICAgdmFyIGNsZWFyX21zZyA9ICFfLmlzVW5kZWZpbmVkKHRoaXMuY29sdW1uLmdldCgn Y3VzdG9tQ2xlYXJNc2cnKSkgPworICAgICAgICB0aGlzLmNvbHVtbi5nZXQoJ2N1c3RvbUNsZWFy TXNnJykgOiB0aGF0LmRlZmF1bHRzLmRlZmF1bHRDbGVhck1zZzsKKyAgICAgIHZhciBjbGVhcl90 aXRsZSA9ICFfLmlzVW5kZWZpbmVkKHRoaXMuY29sdW1uLmdldCgnY3VzdG9tQ2xlYXJUaXRsZScp KSA/CisgICAgICAgIHRoaXMuY29sdW1uLmdldCgnY3VzdG9tQ2xlYXJUaXRsZScpIDogdGhhdC5k ZWZhdWx0cy5kZWZhdWx0Q2xlYXJUaXRsZTsKKyAgICAgIEFsZXJ0aWZ5LmNvbmZpcm0oCisgICAg ICAgIGNsZWFyX3RpdGxlLAorICAgICAgICBjbGVhcl9tc2csCisgICAgICAgIGZ1bmN0aW9uKCkg eworICAgICAgICAgIHRoYXQubW9kZWwuc2V0KCduYW1lJywgbnVsbCk7CisgICAgICAgICAgdGhh dC5tb2RlbC5zZXQoJ3NxbCcsIG51bGwpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbigp IHsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgKTsKKworICAgIH0s CisgICAgZXhpdEVkaXRNb2RlOiBmdW5jdGlvbigpIHsKKyAgICAgIHRoaXMuJGVsLnJlbW92ZUNs YXNzKCdlZGl0b3InKTsKKyAgICB9LAorICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgeworICAg ICAgQmFja2dyaWQuQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVu dHMpOworICAgIH0sCisgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgIHZhciBzZWxmID0g dGhpczsKKyAgICAgIHRoaXMuJGVsLmVtcHR5KCk7CisgICAgICAkKHRoaXMuJGVsKS5hdHRyKCd0 YWJpbmRleCcsIDApOworICAgICAgaWYgKHRoaXMubW9kZWwuZ2V0KCduYW1lJykgIT09IG51bGwg JiYgdGhpcy5tb2RlbC5nZXQoJ3NxbCcpICE9PSBudWxsKQorICAgICAgICB0aGlzLiRlbC5odG1s KCc8aSBhcmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnQ2xlYXIgcm93JykgKyAnIiBjbGFzcz1cJ2Zh IGZhLWVyYXNlclwnIHRpdGxlPVwnJyArIGdldHRleHQoJ0NsZWFyIHJvdycpICsgJ1wnPjwvaT4n KTsKKyAgICAgIC8vIExpc3RlbiBmb3IgVGFiL1NoaWZ0LVRhYiBrZXkKKyAgICAgIHRoaXMuJGVs Lm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgeworICAgICAgICAvLyB3aXRoIGtleWJvYXJkIG5h dmlnYXRpb24gb24gc3BhY2Uga2V5LCBtYXJrIHJvdyBmb3IgZGVsZXRpb24KKyAgICAgICAgaWYg KGUua2V5Q29kZSA9PSAzMikgeworICAgICAgICAgIHNlbGYuJGVsLmNsaWNrKCk7CisgICAgICAg IH0KKyAgICAgICAgdmFyIGdvdG9DZWxsOworICAgICAgICBpZiAoZS5rZXlDb2RlID09IDkgfHwg ZS5rZXlDb2RlID09IDE2KSB7CisgICAgICAgICAgLy8gZ28gdG8gTmV4dCBDZWxsICYgaWYgU2hp ZnQgaXMgYWxzbyBwcmVzc2VkIGdvIHRvIFByZXZpb3VzIENlbGwKKyAgICAgICAgICBnb3RvQ2Vs bCA9IGUuc2hpZnRLZXkgPyBzZWxmLiRlbC5wcmV2KCkgOiBzZWxmLiRlbC5uZXh0KCk7CisgICAg ICAgIH0KKworICAgICAgICBpZiAoZ290b0NlbGwpIHsKKyAgICAgICAgICBsZXQgY29tbWFuZCA9 IG5ldyBCYWNrZ3JpZC5Db21tYW5kKHsKKyAgICAgICAgICAgIGtleTogJ1RhYicsCisgICAgICAg ICAgICBrZXlDb2RlOiA5LAorICAgICAgICAgICAgd2hpY2g6IDksCisgICAgICAgICAgICBzaGlm dEtleTogZS5zaGlmdEtleSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KGZ1 bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIEVkaXRhYmxlIENlbGwKKyAg ICAgICAgICAgIGlmIChnb3RvQ2VsbC5oYXNDbGFzcygnZWRpdGFibGUnKSkgeworICAgICAgICAg ICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9u KCk7CisgICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcignYmFja2dyaWQ6ZWRpdGVkJywg c2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICBzZWxmLmNvbHVtbiwgY29tbWFuZCk7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBo YXZlIE5vbi1FZGl0YWJsZSBDZWxsCisgICAgICAgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcign YmFja2dyaWQ6ZWRpdGVkJywgc2VsZi5tb2RlbCwKKyAgICAgICAgICAgICAgICBzZWxmLmNvbHVt biwgY29tbWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwgMjApOworICAgICAgICB9 CisgICAgICB9KTsKKworCisgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7CisgICAgICByZXR1 cm4gdGhpczsKKyAgICB9LAorICB9KTsKKworCiAgIEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21I ZWFkZXJDZWxsID0gQmFja2dyaWQuSGVhZGVyQ2VsbC5leHRlbmQoewogICAgIGluaXRpYWxpemU6 IGZ1bmN0aW9uKCkgewogICAgICAgLy8gSGVyZSwgd2Ugd2lsbCBhZGQgY3VzdG9tIGNsYXNzZXMg dG8gaGVhZGVyIGNlbGwKQEAgLTIwODEsNiArMjE3MSw4NCBAQCBkZWZpbmUoWwogICAgIH0sCiAg IH0pOwogCisgIEJhY2tncmlkLkV4dGVuc2lvbi5TcWxDZWxsID0gQmFja2dyaWQuRXh0ZW5zaW9u LlRleHRhcmVhQ2VsbC5leHRlbmQoeworICAgIGNsYXNzTmFtZTogJ3NxbC1jZWxsJywKKyAgICBk ZWZhdWx0czogeworICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAorICAgIH0sCisgICAgdGVtcGxh dGU6IF8udGVtcGxhdGUoWworICAgICAgJzxkaXYgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEt cGxhY2VtZW50PSJ0b3AiIGRhdGEtaHRtbD0idHJ1ZSIgdGl0bGU9IjwlLSB2YWwgJT4iPjx0ZXh0 YXJlYSBhcmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnU1FMJykgKyciICsgc3R5bGU9ImRpc3BsYXk6 IG5vbmU7Ij48JS0gdmFsICU+PC90ZXh0YXJlYT48ZGl2PicsCisgICAgXS5qb2luKCdcbicpKSwK KworICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICBsZXQgc2VsZiA9IHRoaXMsCisgICAg ICAgIGNvbCA9IF8uZGVmYXVsdHModGhpcy5jb2x1bW4udG9KU09OKCksIHRoaXMuZGVmYXVsdHMp LAorICAgICAgICBtb2RlbCA9IHRoaXMubW9kZWwsCisgICAgICAgIGNvbHVtbiA9IHRoaXMuY29s dW1uLAorICAgICAgICBjb2x1bW5OYW1lID0gdGhpcy5jb2x1bW4uZ2V0KCduYW1lJyksCisgICAg ICAgIGVkaXRhYmxlID0gQmFja2dyaWQuY2FsbEJ5TmVlZChjb2wuZWRpdGFibGUsIGNvbHVtbiwg bW9kZWwpOworCisgICAgICBpZiAodGhpcy5zcWxDZWxsKSB7CisgICAgICAgIHRoaXMuc3FsQ2Vs bC50b1RleHRBcmVhKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLnNxbENlbGw7CisgICAgICAgIHRo aXMuc3FsQ2VsbCA9IG51bGw7CisgICAgICB9CisKKyAgICAgIHRoaXMuJGVsLmVtcHR5KCk7Cisg ICAgICB0aGlzLiRlbC5hcHBlbmQodGhpcy50ZW1wbGF0ZSh7CisgICAgICAgIHZhbDp0aGlzLmZv cm1hdHRlci5mcm9tUmF3KG1vZGVsLmdldChjb2x1bW5OYW1lKSwgbW9kZWwpLAorICAgICAgfSkK KyAgICAgICk7CisgICAgICB0aGlzLiRlbC5hZGRDbGFzcyhjb2x1bW5OYW1lKTsKKyAgICAgIHRo aXMudXBkYXRlU3RhdGVDbGFzc2VzTWF5YmUoKTsKKyAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMo KTsKKworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2VsZi5zcWxDZWxs ID0gQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoCisgICAgICAgICAgKHNlbGYuJGVsLmZpbmQoJ3Rl eHRhcmVhJylbMF0pLCB7CisgICAgICAgICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKKyAgICAg ICAgICAgIHJlYWRPbmx5OiAhZWRpdGFibGUsCisgICAgICAgICAgICBzaW5nbGVDdXJzb3JIZWln aHRQZXJMaW5lOiB0cnVlLAorICAgICAgICAgICAgc2NyZWVuUmVhZGVyTGFiZWw6IGNvbHVtbk5h bWUsCisgICAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgcmV0dXJuIHRoaXM7CisgICAg fSwKKyAgICBlbnRlckVkaXRNb2RlOiBmdW5jdGlvbiAoKSB7CisgICAgICBpZiAoIXRoaXMuJGVs Lmhhc0NsYXNzKCdlZGl0b3InKSkgdGhpcy4kZWwuYWRkQ2xhc3MoJ2VkaXRvcicpOworICAgICAg dGhpcy5zcWxDZWxsLmZvY3VzKCk7CisgICAgICB0aGlzLnNxbENlbGwub24oJ2JsdXInLCB0aGlz LmV4aXRFZGl0TW9kZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorICAgIGV4aXRFZGl0TW9kZTogZnVu Y3Rpb24gKCkgeworICAgICAgdGhpcy4kZWwucmVtb3ZlQ2xhc3MoJ2VkaXRvcicpOworICAgICAg dGhpcy5zYXZlT3JDYW5jZWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICB9LAorICAgIHNh dmVPckNhbmNlbDogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsOwor ICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uOworICAgICAgaWYgKHRoaXMuc3FsQ2VsbCkg eworICAgICAgICB2YXIgdmFsID0gdGhpcy5zcWxDZWxsLmdldFRleHRBcmVhKCkudmFsdWU7Cisg ICAgICAgIHZhciBuZXdWYWx1ZSA9IHRoaXMuc3FsQ2VsbC5nZXRWYWx1ZSgpOworICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZChuZXdWYWx1ZSkpIHsKKyAgICAgICAgICBtb2RlbC50cmlnZ2VyKCdi YWNrZ3JpZDplcnJvcicsIG1vZGVsLCBjb2x1bW4sIHZhbCk7CisgICAgICAgIH0KKyAgICAgICAg ZWxzZSB7CisgICAgICAgICAgbW9kZWwuc2V0KGNvbHVtbi5nZXQoJ25hbWUnKSwgbmV3VmFsdWUp OworICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICByZW1vdmU6IGZ1bmN0aW9uKCkgewor ICAgICAgaWYgKHRoaXMuc3FsQ2VsbCkgeworICAgICAgICAkKHRoaXMuJGVsLmZpbmQoJ1tkYXRh LXRvZ2dsZT0idG9vbHRpcCJdJykpLnRvb2x0aXAoJ2Rpc3Bvc2UnKTsKKyAgICAgICAgdGhpcy5z cWxDZWxsLnRvVGV4dEFyZWEoKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuc3FsQ2VsbDsKKyAgICAg ICAgdGhpcy5zcWxDZWxsID0gbnVsbDsKKyAgICAgIH0KKyAgICAgIHJldHVybiBCYWNrZ3JpZC5F eHRlbnNpb24uVGV4dGFyZWFDZWxsLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKyAgICB9LAorICB9KTsKKwogICByZXR1cm4gQmFja2dyaWQ7CiAKIH0pOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9ydGN1dHMuanMKaW5kZXggZjAyODUxNzIwLi5h YmRhOGQ4ZjIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9rZXlib2FyZF9zaG9y dGN1dHMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2tleWJvYXJkX3Nob3J0Y3V0cy5q cwpAQCAtMzI0LDE1ICszMjQsMzggQEAgZnVuY3Rpb24ga2V5Ym9hcmRTaG9ydGN1dHNRdWVyeVRv b2woCiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CisgIH0gZWxzZSB7CisgICAgLy8gTWFjcm9z CisgICAgbGV0IG1hY3JvSWQgPSB0aGlzLnZhbGlkYXRlTWFjcm9zKHNxbEVkaXRvckNvbnRyb2xs ZXIsIGV2ZW50KTsKKworICAgIGlmICAobWFjcm9JZCAhPT0gZmFsc2UpIHsKKyAgICAgIHRoaXMu X3N0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTsKKyAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhl Y3V0ZU1hY3JvKHNxbEVkaXRvckNvbnRyb2xsZXIsIG1hY3JvSWQpOworICAgIH0KICAgfQogCiAg IHJldHVybiBwYW5lbF90eXBlOwogfQogCitmdW5jdGlvbiB2YWxpZGF0ZU1hY3JvcyhzcWxFZGl0 b3JDb250cm9sbGVyLCBldmVudCkgeworICBsZXQga2V5Q29kZSA9IGV2ZW50LndoaWNoIHx8IGV2 ZW50LmtleUNvZGU7CisKKyAgbGV0IG1hY3JvID0gc3FsRWRpdG9yQ29udHJvbGxlci5tYWNyb3Mu ZmlsdGVyKG1jID0+CisgICAgbWMuYWx0ID09IGV2ZW50LmFsdEtleSAmJgorICAgIG1jLmNvbnRy b2wgID09IGV2ZW50LmN0cmxLZXkgJiYKKyAgICBtYy5rZXlfY29kZSA9PSBrZXlDb2RlKTsKKwor ICBpZiAobWFjcm8ubGVuZ3RoID09IDEpIHsKKyAgICByZXR1cm4gbWFjcm9bMF0uaWQ7CisgIH0K KworICByZXR1cm4gZmFsc2U7Cit9CisKIGV4cG9ydCB7CiAgIGtleWJvYXJkU2hvcnRjdXRzRGVi dWdnZXIgYXMgcHJvY2Vzc0V2ZW50RGVidWdnZXIsCiAgIGtleWJvYXJkU2hvcnRjdXRzUXVlcnlU b29sIGFzIHByb2Nlc3NFdmVudFF1ZXJ5VG9vbCwKLSAgZm9jdXNEb2NrZXJQYW5lbCwgdmFsaWRh dGVTaG9ydGN1dEtleXMsCisgIGZvY3VzRG9ja2VyUGFuZWwsIHZhbGlkYXRlU2hvcnRjdXRLZXlz LCB2YWxpZGF0ZU1hY3JvcywKICAgX3N0b3BFdmVudFByb3BhZ2F0aW9uLCBpc01hYywgaXNLZXlD dHJsQWx0LCBpc0tleUFsdFNoaWZ0LCBpc0tleUN0cmxTaGlmdCwKICAgaXNLZXlDdHJsQWx0U2hp ZnQsIGlzQWx0U2hpZnRCb3RoLCBpc0N0cmxTaGlmdEJvdGgsIGlzQ3RybEFsdEJvdGgsCiAgIHNo b3J0Y3V0X2tleSwgc2hvcnRjdXRfdGl0bGUsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZSwKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbWFjcm8uanMgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL21hY3JvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uYjc2MTAwMmZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NxbGVkaXRvci9tYWNyby5qcwpAQCAtMCwwICsxLDMyNSBAQAorLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor Ly8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0IHVybF9mb3Ig ZnJvbSAnc291cmNlcy91cmxfZm9yJzsKK2ltcG9ydCAkIGZyb20gJ2pxdWVyeSc7CitpbXBvcnQg QWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsKK2ltcG9ydCBwZ0FkbWluIGZyb20g J3NvdXJjZXMvcGdhZG1pbic7CitpbXBvcnQgQmFja2Zvcm0gZnJvbSAncGdhZG1pbi5iYWNrZm9y bSc7CitpbXBvcnQgbWFjcm9Nb2RlbCBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9tYWNyb19tb2Rl bCc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOworCitsZXQgTWFjcm9EaWFsb2cgPSB7Cisg ICdkaWFsb2cnOiBmdW5jdGlvbihoYW5kbGVyKSB7CisgICAgbGV0IHRpdGxlID0gZ2V0dGV4dCgn TWFuYWdlIE1hY3JvcycpOworCisgICAgLy8gQ2hlY2sgdGhlIGFsZXJ0aWZ5IGRpYWxvZyBhbHJl YWR5IGxvYWRlZCB0aGVuIGRlbGV0ZSBpdCB0byBjbGVhcgorICAgIC8vIHRoZSBjYWNoZQorICAg IGlmIChBbGVydGlmeS5tYWNyb0RpYWxvZykgeworICAgICAgZGVsZXRlIEFsZXJ0aWZ5Lm1hY3Jv RGlhbG9nOworICAgIH0KKworICAgIC8vIENyZWF0ZSBEaWFsb2cKKyAgICBBbGVydGlmeS5kaWFs b2coJ21hY3JvRGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgpIHsKKyAgICAgIGxldCAkY29udGFp bmVyID0gJCgnPGRpdiBjbGFzcz1cJ21hY3JvX2RpYWxvZ1wnPjwvZGl2PicpOworICAgICAgcmV0 dXJuIHsKKyAgICAgICAgbWFpbjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgdGhpcy5zZXQoJ3Rp dGxlJywgJzxpIGNsYXNzPSJmYSBmYS1zY3JvbGwgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0 cnVlIiByb2xlPSJpbWciPjwvaT4gJyArIGdldHRleHQoJ01hbmFnZSBNYWNyb3MnKSk7CisgICAg ICAgIH0sCisgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICB0aGlzLmVsZW1l bnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQoMCkpOworICAgICAgICAgIEFs ZXJ0aWZ5LnBnRGlhbG9nQnVpbGQuYXBwbHkodGhpcyk7CisgICAgICAgIH0sCisgICAgICAgIHNl dHVwOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgYnV0dG9u czogW3sKKyAgICAgICAgICAgICAgdGV4dDogJycsCisgICAgICAgICAgICAgIGtleTogMTEyLAor ICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnktaWNvbiBwdWxsLWxlZnQg ZmEgZmEtcXVlc3Rpb24gcGctYWxlcnRpZnktaWNvbi1idXR0b24nLAorICAgICAgICAgICAgICBh dHRyczogeworICAgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCisgICAgICAgICAg ICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0hl bHAnKSwKKyAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGdldHRleHQoJ0hlbHAnKSwKKyAg ICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeworICAgICAgICAgICAg ICAgICAgJ2ZpbGVuYW1lJzogJ3F1ZXJ5dG9vbC5odG1sJywKKyAgICAgICAgICAgICAgICB9KSwK KyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sIHsKKyAgICAgICAgICAgICAgdGV4dDog Z2V0dGV4dCgnQ2FuY2VsJyksCisgICAgICAgICAgICAgIGtleTogMjcsCisgICAgICAgICAgICAg IGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1 dHRvbicsCisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCisgICAgICAg ICAgICB9LCB7CisgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ1NhdmUnKSwKKyAgICAgICAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLXNhdmUgcGctYWxlcnRpZnkt YnV0dG9uJywKKyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnb2snLAorICAgICAgICAg ICAgfV0sCisgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlhbG9nCisgICAgICAgICAg ICBvcHRpb25zOiB7CisgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKKyAgICAgICAgICAgICAg Ly9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29udHJvbC4KKyAgICAgICAgICAg ICAgcGFkZGluZzogITEsCisgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKKyAgICAgICAgICAg ICAgbW9kZWw6IDAsCisgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAgICAgICAg ICAgbWF4aW1pemFibGU6IHRydWUsCisgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKKyAg ICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCisgICAgICAgICAgICAgIG1vZGFs OiBmYWxzZSwKKyAgICAgICAgICAgICAgYXV0b1Jlc2V0OiBmYWxzZSwKKyAgICAgICAgICAgIH0s CisgICAgICAgICAgfTsKKyAgICAgICAgfSwKKyAgICAgICAgaG9va3M6IHsKKyAgICAgICAgLy8g dHJpZ2dlcmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKKyAgICAgICAgICBvbmNsb3NlOiBm dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnZpZXcpIHsKKyAgICAgICAgICAgICAg dGhpcy5tYWNyb0NvbGxlY3Rpb25Nb2RlbC5zdG9wU2Vzc2lvbigpOworICAgICAgICAgICAgICB0 aGlzLnZpZXcubW9kZWwuc3RvcFNlc3Npb24oKTsKKyAgICAgICAgICAgICAgdGhpcy52aWV3LnJl bW92ZSh7CisgICAgICAgICAgICAgICAgZGF0YTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBpbnRl cm5hbDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzaWxlbnQ6IHRydWUsCisgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgfQorICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICAgIHBy ZXBhcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAgICAg ICAkY29udGFpbmVyLmh0bWwoJycpOworICAgICAgICAgIC8vIFN0YXR1cyBiYXIKKyAgICAgICAg ICB0aGlzLnN0YXR1c0JhciA9ICQoCisgICAgICAgICAgICAnPGRpdiBjbGFzcz1cJ3BnLXByb3At c3RhdHVzLWJhciBwZy1lbC14cy0xMiBkLW5vbmVcJz4nICsKKyAgICAgICAgICAnICA8ZGl2IGNs YXNzPSJlcnJvci1pbi1mb290ZXIiPiAnICsKKyAgICAgICAgICAnICAgIDxkaXYgY2xhc3M9ImQt ZmxleCBweC0yIHB5LTEiPiAnICsKKyAgICAgICAgICAnICAgICAgPGRpdiBjbGFzcz0icHItMiI+ ICcgKworICAgICAgICAgICcgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1leGNsYW1hdGlvbi10cmlh bmdsZSB0ZXh0LWRhbmdlciIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gJyArCisgICAgICAgICAg JyAgICAgIDwvZGl2PiAnICsKKyAgICAgICAgICAnICAgICAgPGRpdiBjbGFzcz0iYWxlcnQtdGV4 dCIgcm9sZT0iYWxlcnQiPjwvZGl2PiAnICsKKyAgICAgICAgICAnICAgIDwvZGl2PiAnICsKKyAg ICAgICAgICAnICA8L2Rpdj4gJyArCisgICAgICAgICAgJzwvZGl2PicpLmFwcGVuZFRvKCRjb250 YWluZXIpOworCisgICAgICAgICAgLy8gVG8gc2hvdyBwcm9ncmVzcyBvbiBmaWx0ZXIgU2F2aW5n L1VwZGF0aW5nIG9uIEFKQVgKKyAgICAgICAgICB0aGlzLnNob3dGaWx0ZXJQcm9ncmVzcyA9ICQo CisgICAgICAgICAgICBgPGRpdiBpZD0ic2hvd19maWx0ZXJfcHJvZ3Jlc3MiIGNsYXNzPSJwZy1z cC1jb250YWluZXIgc3FsLWVkaXRvci1idXN5LWZldGNoaW5nIGQtbm9uZSI+CisgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9InBnLXNwLWNvbnRlbnQiPgorICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3AtaWNvbiBzcWwtZWRpdG9yLWJ1c3kt aWNvbiI+PC9kaXY+PC9kaXY+CisgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxk aXYgY2xhc3M9ImNvbC0xMiBwZy1zcC10ZXh0IHNxbC1lZGl0b3ItYnVzeS10ZXh0Ij5gICsgZ2V0 dGV4dCgnTG9hZGluZyBkYXRhLi4uJykgKyBgPC9kaXY+PC9kaXY+CisgICAgICAgICAgICAgIDwv ZGl2PgorICAgICAgICAgIDwvZGl2PmAKKyAgICAgICAgICApLmFwcGVuZFRvKCRjb250YWluZXIp OworCisgICAgICAgICAgc2VsZi5tYWNyb0NvbGxlY3Rpb25Nb2RlbCA9IG1hY3JvTW9kZWwoaGFu ZGxlci50cmFuc0lkKTsKKworICAgICAgICAgIGxldCBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0 ZVZpZXdTY2hlbWEoCisgICAgICAgICAgICBudWxsLCBzZWxmLm1hY3JvQ29sbGVjdGlvbk1vZGVs LCAnZWRpdCcsIG51bGwsIG51bGwsIHRydWUKKyAgICAgICAgICApOworCisgICAgICAgICAgbGV0 IE1hbmFnZU1hY3JvRGlhbG9nID0gQmFja2Zvcm0uRGlhbG9nLmV4dGVuZCh7CisgICAgICAgICAg ICB0ZW1wbGF0ZTogeworICAgICAgICAgICAgICAncGFuZWwnOiBfLnRlbXBsYXRlKAorICAgICAg ICAgICAgICAgICc8ZGl2IHJvbGU9InRhYnBhbmVsIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJ0YWIt cGFuZSA8JT1sYWJlbCU+IDwlPXRhYlBhbmVsQ29kZUNsYXNzJT4gcGctZWwtc20tMTIgcGctZWwt bWQtMTIgcGctZWwtbGctMTIgcGctZWwtMTIgZmFkZSIgaWQ9IjwlPWNJZCU+Ij48L2Rpdj4nCisg ICAgICAgICAgICAgICksCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgcmVuZGVyOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7CisKKyAgICAgICAgICAgICAg dmFyICBtID0gdGhpcy5tb2RlbCwKKyAgICAgICAgICAgICAgICBjb250cm9scyA9IHRoaXMuY29u dHJvbHMsCisgICAgICAgICAgICAgICAgdG1wbHMgPSB0aGlzLnRlbXBsYXRlLAorICAgICAgICAg ICAgICAgIGRpYWxvZ19vYmogPSB0aGlzLAorICAgICAgICAgICAgICAgIGlkeCA9ICh0aGlzLnRh YkluZGV4ICogMTAwKSwKKyAgICAgICAgICAgICAgICBldmFsRiA9IGZ1bmN0aW9uKGYsIGQsIG1v ZGVsKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gKF8uaXNGdW5jdGlvbihmKSA/ICEhZi5h cHBseShkLCBbbW9kZWxdKSA6ICEhZik7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg ICAgICB0aGlzLiRlbAorICAgICAgICAgICAgICAgIC5lbXB0eSgpCisgICAgICAgICAgICAgICAg LmF0dHIoJ3JvbGUnLCAndGFicGFuZWwnKQorICAgICAgICAgICAgICAgIC5hdHRyKCdjbGFzcycs IF8ucmVzdWx0KHRoaXMsICd0YWJQYW5lbENsYXNzTmFtZScpKTsKKyAgICAgICAgICAgICAgbS5w YW5lbEVsID0gdGhpcy4kZWw7CisKKyAgICAgICAgICAgICAgdmFyIHRhYkNvbnRlbnQgPSAkKCc8 ZGl2IGNsYXNzPSJ0YWItY29udGVudCBwZy1lbC1zbS0xMiBwZy1lbC1tZC0xMiBwZy1lbC1sZy0x MiBwZy1lbC0xMiBtYWNyby10YWIiPjwvZGl2PicpCisgICAgICAgICAgICAgICAgLmFwcGVuZFRv KHRoaXMuJGVsKTsKKworICAgICAgICAgICAgICBfLmVhY2godGhpcy5zY2hlbWEsIGZ1bmN0aW9u KG8pIHsKKyAgICAgICAgICAgICAgICBpZHgrKzsKKyAgICAgICAgICAgICAgICBpZiAoIW8udmVy c2lvbl9jb21wYXRpYmxlIHx8ICFldmFsRihvLnZpc2libGUsIG8sIG0pKSB7CisgICAgICAgICAg ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBl bCA9ICQoKHRtcGxzWydwYW5lbCddKShfLmV4dGVuZChvLCB7CisgICAgICAgICAgICAgICAgICAn dGFiSW5kZXgnOiBpZHgsCisgICAgICAgICAgICAgICAgICAndGFiUGFuZWxDb2RlQ2xhc3MnOiBv LnRhYlBhbmVsQ29kZUNsYXNzID8gby50YWJQYW5lbENvZGVDbGFzcyA6ICcnLAorICAgICAgICAg ICAgICAgIH0pKSkKKyAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyh0YWJDb250ZW50KQorICAg ICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzZScpLmFkZENsYXNzKCdjb2xsYXBz ZScpOworCisgICAgICAgICAgICAgICAgby5maWVsZHMuZWFjaChmdW5jdGlvbihmKSB7CisgICAg ICAgICAgICAgICAgICB2YXIgY250ciA9IG5ldyhmLmdldCgnY29udHJvbCcpKSh7CisgICAgICAg ICAgICAgICAgICAgIGZpZWxkOiBmLAorICAgICAgICAgICAgICAgICAgICBtb2RlbDogbSwKKyAg ICAgICAgICAgICAgICAgICAgZGlhbG9nOiBkaWFsb2dfb2JqLAorICAgICAgICAgICAgICAgICAg ICB0YWJJbmRleDogaWR4LAorICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg ICBlbC5hcHBlbmQoY250ci5yZW5kZXIoKS4kZWwpOworICAgICAgICAgICAgICAgICAgY29udHJv bHMucHVzaChjbnRyKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgfSk7CisK KyAgICAgICAgICAgICAgdGFiQ29udGVudC5maW5kKCcudGFiLXBhbmUnKS5maXJzdCgpLmFkZENs YXNzKCdhY3RpdmUgc2hvdycpOworCisgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAg ICAgICAgfSwKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGxldCB2aWV3ID0gc2VsZi52aWV3 ID0gbmV3IE1hbmFnZU1hY3JvRGlhbG9nKHsKKyAgICAgICAgICAgIGVsOiAnPGRpdj48L2Rpdj4n LAorICAgICAgICAgICAgbW9kZWw6IHNlbGYubWFjcm9Db2xsZWN0aW9uTW9kZWwsCisgICAgICAg ICAgICBzY2hlbWE6IGZpZWxkcywKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIHNlbGYubWFj cm9Db2xsZWN0aW9uTW9kZWwuZmV0Y2goeworICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24o KSB7CisKKyAgICAgICAgICAgICAgLy8gV2UgZ290IHRoZSBsYXRlc3QgYXR0cmlidXRlcyBvZiB0 aGUgb2JqZWN0LiBSZW5kZXIgdGhlIHZpZXcKKyAgICAgICAgICAgICAgLy8gbm93LgorICAgICAg ICAgICAgICAkY29udGFpbmVyLmFwcGVuZChzZWxmLnZpZXcucmVuZGVyKCkuJGVsKTsKKworICAg ICAgICAgICAgICAvLyBFbmFibGUvZGlzYWJsZSBzYXZlIGJ1dHRvbiBhbmQgc2hvdy9oaWRlIHN0 YXR1c2JhciBiYXNlZCBvbiBzZXNzaW9uCisgICAgICAgICAgICAgIHNlbGYudmlldy5saXN0ZW5U byhzZWxmLnZpZXcubW9kZWwsICdwZ2FkbWluLXNlc3Npb246c3RhcnQnLCBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgICAgICBzZWxmLnZpZXcubGlzdGVuVG8oc2VsZi52aWV3Lm1vZGVsLCAncGdh ZG1pbi1zZXNzaW9uOmludmFsaWQnLCBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdHVzQmFyLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTsKKyAgICAgICAgICAgICAgICAg ICQoc2VsZi5zdGF0dXNCYXIuZmluZCgnLmFsZXJ0LXRleHQnKSkuaHRtbChtc2cpOworICAgICAg ICAgICAgICAgICAgLy8gRGlzYWJsZSBPa2F5IGJ1dHRvbgorICAgICAgICAgICAgICAgICAgc2Vs Zi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAg ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICB2aWV3Lmxpc3RlblRvKHNlbGYudmlldy5t b2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0dXNCYXIuYWRkQ2xhc3MoJ2Qtbm9uZScpOworICAgICAgICAgICAgICAg ICAgJChzZWxmLnN0YXR1c0Jhci5maW5kKCcuYWxlcnQtdGV4dCcpKS5odG1sKCcnKTsKKyAgICAg ICAgICAgICAgICAgIC8vIEVuYWJsZSBPa2F5IGJ1dHRvbgorICAgICAgICAgICAgICAgICAgc2Vs Zi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICB2aWV3Lmxp c3RlblRvKHNlbGYudmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjpzdG9wJywgZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICAgdmlldy5zdG9wTGlzdGVuaW5nKHNlbGYudmlldy5tb2RlbCwg J3BnYWRtaW4tc2Vzc2lvbjppbnZhbGlkJyk7CisgICAgICAgICAgICAgICAgdmlldy5zdG9wTGlz dGVuaW5nKHNlbGYudmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcpOworICAgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBTdGFydHMgbW9uaXRvcmluZyBjaGFuZ2Vz IHRvIG1vZGVsCisgICAgICAgICAgICAgIHNlbGYudmlldy5tb2RlbC5zdGFydE5ld1Nlc3Npb24o KTsKKworICAgICAgICAgICAgfX0pOworCisgICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHku Y2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlh bG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCisgICAgICAgICAgKTsKKworCisKKyAgICAg ICAgfSwKKyAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1 dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKKyAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9u KGUpIHsKKyAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisKKyAgICAgICAgICBpZiAoZS5idXR0 b24uZWxlbWVudC5uYW1lID09ICdkaWFsb2dfaGVscCcpIHsKKyAgICAgICAgICAgIGUuY2FuY2Vs ID0gdHJ1ZTsKKyAgICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5l bGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCd1cmwnKSwKKyAgICAg ICAgICAgICAgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfSBl bHNlIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnb2snKSB7CisgICAgICAgICAg ICBlLmNhbmNlbCA9IHRydWU7IC8vIERvIG5vdCBjbG9zZSBkaWFsb2cKKworICAgICAgICAgICAg bGV0IGRhdGEgPSBzZWxmLnZpZXcubW9kZWwuZ2V0KCdtYWNybycpLnRvSlNPTih0cnVlKTsKKwor ICAgICAgICAgICAgaWYgKGRhdGEgPT0gdW5kZWZpbmVkIHx8IGRhdGEgPT0gbnVsbCkgeworICAg ICAgICAgICAgICBzZWxmLmNsb3NlKCk7CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgYXhpb3MucHV0KAorICAgICAgICAgICAgICB1cmxfZm9yKCdz cWxlZGl0b3Iuc2V0X21hY3JvcycsIHsKKyAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiBoYW5k bGVyLnRyYW5zSWQsCisgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgICBkYXRhCisgICAg ICAgICAgICApLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeworICAgICAgICAgICAgLy8gSGlkZSBQ cm9ncmVzcyAuLi4KKyAgICAgICAgICAgICAgJCgKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dG aWx0ZXJQcm9ncmVzc1swXQorICAgICAgICAgICAgICApLmFkZENsYXNzKCdkLW5vbmUnKTsKKwor ICAgICAgICAgICAgICBsZXQgbWFjcm9SZXNwb25zZSA9IHJlc3VsdDsKKworICAgICAgICAgICAg ICBpZiAobWFjcm9SZXNwb25zZS5zdGF0dXMpIHsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0 KAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIC8v IFVwZGF0ZSBNYWNybyBNZW51CisgICAgICAgICAgICAgICAgICAgIGxldCBtYWNyb3MgPSBzZWxm LnZpZXcubW9kZWwuZ2V0KCdtYWNybycpLnRvSlNPTigpLmZpbHRlcihtID0+IG0ubmFtZSAhPT0g dW5kZWZpbmVkIHx8IG0ubmFtZSAhPT0gbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRs ZXIubWFjcm9zID0gbWFjcm9zOworICAgICAgICAgICAgICAgICAgICB2YXIgc3RyID0gYAorICAg ICAgICAgICAgICAgICAgICAgIDxsaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xh c3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4tbWFuYWdlLW1hY3JvcyIgaHJlZj0iIyIgdGFiaW5k ZXg9IjAiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IE1hbmFnZSBNYWNy b3MuLi4gPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAg ICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bk b3duLWRpdmlkZXIiPjwvbGk+YDsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNoKG1hY3Jvcywg ZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChtLm5hbWUpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0ciArPSBgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAg PGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0gYnRuLW1hY3JvIiBkYXRhLW1hY3JvLWlkPSJgKyBtLmlk ICtgIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHNwYW4+YCArIG0ubmFtZSArIGA8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHNwYW4+IChgICsgbS5rZXlfbGFiZWwgKyBgKSA8L3NwYW4+CisgICAgICAgICAgICAgICAgICAg ICAgICA8L2E+CisgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+YDsKKyAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAg ICQoJC5maW5kKCdkaXYuYnRuLWdyb3VwLm1yLTEudXNlcl9tYWNyb3MgdWwuZHJvcGRvd24tbWVu dScpKS5odG1sKCQoc3RyKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpOyAv LyBDbG9zZSB0aGUgZGlhbG9nIG5vdworICAgICAgICAgICAgICAgICAgICBBbGVydGlmeS5zdWNj ZXNzKGdldHRleHQoJ01hY3JvIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5JykpOworICAgICAgICAgICAg ICAgICAgfSwgMTAKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgICAgIEFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAgICAgICAgZ2V0dGV4 dCgnVmFsaWRhdGlvbiBFcnJvcicpLAorICAgICAgICAgICAgICAgICAgbWFjcm9SZXNwb25zZS5y ZXN1bHQKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgLy8gSGlkZSBQcm9ncmVz cyAuLi4KKyAgICAgICAgICAgICAgJCgKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dGaWx0ZXJQ cm9ncmVzc1swXQorICAgICAgICAgICAgICApLmFkZENsYXNzKCdkLW5vbmUnKTsKKworICAgICAg ICAgICAgICBzZXRUaW1lb3V0KAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICAgICAgQWxlcnRpZnkuZXJyb3IoZXJyb3IucmVzcG9uc2UuZGF0YS5lcnJvcm1zZyk7 CisgICAgICAgICAgICAgICAgfSwgMTAKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0p OworCisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKTsKKyAgICAg ICAgICB9CisgICAgICAgIH0sCisgICAgICB9OworICAgIH0pOworCisgICAgQWxlcnRpZnkubWFj cm9EaWFsb2codGl0bGUpLnJlc2l6ZVRvKHBnQWRtaW4uQnJvd3Nlci5zdGRXLmNhbGMocGdBZG1p bi5Ccm93c2VyLnN0ZFcubGcpLAorICAgICAgcGdBZG1pbi5Ccm93c2VyLnN0ZEguY2FsYyhwZ0Fk bWluLkJyb3dzZXIuc3RkSC5sZykpOworICB9LAorfTsKKworbW9kdWxlLmV4cG9ydHMgPSBNYWNy b0RpYWxvZzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbWFj cm9fbW9kZWwuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL21hY3JvX21vZGVs LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYzg3NGRlZDRkCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9tYWNyb19tb2Rl bC5qcwpAQCAtMCwwICsxLDIyNCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3Vy Y2VzL2dldHRleHQnOworaW1wb3J0IHBnQWRtaW4gZnJvbSAnc291cmNlcy9wZ2FkbWluJzsKK2lt cG9ydCBCYWNrZm9ybSBmcm9tICdwZ2FkbWluLmJhY2tmb3JtJzsKK2ltcG9ydCBCYWNrZ3JpZCBm cm9tICdwZ2FkbWluLmJhY2tncmlkJzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJs X2Zvcic7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworaW1wb3J0IF8gZnJvbSAndW5kZXJzY29y ZSc7CitpbXBvcnQgQWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsKKworZXhwb3J0 IGRlZmF1bHQgZnVuY3Rpb24gbWFjcm9Nb2RlbCh0cmFuc0lkKSB7CisKKyAgbGV0IE1hY3JvTW9k ZWwgPSBwZ0FkbWluLkJyb3dzZXIuRGF0YU1vZGVsLmV4dGVuZCh7CisgICAgaWRBdHRyaWJ1dGU6 ICdpZCcsCisgICAgZGVmYXVsdHM6IHsKKyAgICAgIGlkOiB1bmRlZmluZWQsCisgICAgICBrZXk6 IHVuZGVmaW5lZCwKKyAgICAgIG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIHNxbDogdW5kZWZpbmVk LAorICAgICAga2V5X2xhYmVsOiB1bmRlZmluZWQsCisgICAgfSwKKyAgICBzY2hlbWE6IFt7Cisg ICAgICBpZDogJ2tleV9sYWJlbCcsCisgICAgICBuYW1lOiAna2V5X2xhYmVsJywKKyAgICAgIGxh YmVsOiBnZXR0ZXh0KCdLZXknKSwKKyAgICAgIHR5cGU6ICd0ZXh0JywKKyAgICAgIGNlbGw6ICdz dHJpbmcnLAorICAgICAgZWRpdGFibGU6IGZhbHNlLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6 ICd3aWR0aF9wZXJjZW50XzEwJywKKyAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lv bi5DdXN0b21IZWFkZXJDZWxsLAorICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgIH0sIHsKKyAg ICAgIGlkOiAnbmFtZScsCisgICAgICBuYW1lOiAnbmFtZScsCisgICAgICBsYWJlbDogZ2V0dGV4 dCgnTmFtZScpLAorICAgICAgY2VsbDogJ3N0cmluZycsCisgICAgICB0eXBlOiAndGV4dCcsCisg ICAgICBlZGl0YWJsZTogdHJ1ZSwKKyAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVy Y2VudF8yMCcsCisgICAgICBoZWFkZXJDZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uQ3VzdG9tSGVh ZGVyQ2VsbCwKKyAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICB9LCB7CisgICAgICBpZDogJ3Nx bCcsCisgICAgICBuYW1lOiAnc3FsJywKKyAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTUUwnKSwKKyAg ICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5TcWxDZWxsLAorICAgICAgdHlwZTogJ211bHRp bGluZScsCisgICAgICBjb250cm9sOiBCYWNrZm9ybS5TcWxDb2RlQ29udHJvbCwKKyAgICAgIGVk aXRhYmxlOiB0cnVlLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50Xzcw JywKKyAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxs LAorICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgIH0sCisgICAgXSwKKyAgICB2YWxpZGF0ZTog ZnVuY3Rpb24oKSB7CisgICAgICBsZXQgbXNnID0gbnVsbDsKKyAgICAgIHRoaXMuZXJyb3JNb2Rl bC5jbGVhcigpOworICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLmdldCgnbmFtZScpKSAmJiAgIShf LmlzRW1wdHkodGhpcy5nZXQoJ3NxbCcpKSkpIHsKKyAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxl YXNlIGVudGVyIG1hY3JvIG5hbWUuJyk7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25h bWUnLCBtc2cpOworICAgICAgICByZXR1cm4gbXNnOworICAgICAgfSBlbHNlIGlmIChfLmlzRW1w dHkodGhpcy5nZXQoJ3NxbCcpKSAmJiAgIShfLmlzRW1wdHkodGhpcy5nZXQoJ25hbWUnKSkpKSB7 CisgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBlbnRlciBtYWNybyBzcWwuJyk7CisgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NxbCcsIG1zZyk7CisgICAgICAgIHJldHVybiBtc2c7 CisgICAgICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorICB9KTsKKworICBsZXQgTWFj cm9Db2xsZWN0aW9uTW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuRGF0YU1vZGVsLmV4dGVuZCh7Cisg ICAgZGVmYXVsdHM6IHsKKyAgICAgIG1hY3JvOiB1bmRlZmluZWQsCisgICAgfSwKKyAgICB1cmxS b290OiB1cmxfZm9yKCdzcWxlZGl0b3IuZ2V0X21hY3JvcycsIHsndHJhbnNfaWQnOiB0cmFuc0lk fSksCisgICAgc2NoZW1hOiBbeworICAgICAgaWQ6ICdtYWNybycsCisgICAgICBuYW1lOiAnbWFj cm8nLAorICAgICAgbGFiZWw6IGdldHRleHQoJ01hY3JvcycpLAorICAgICAgbW9kZWw6IE1hY3Jv TW9kZWwsCisgICAgICBlZGl0YWJsZTogdHJ1ZSwKKyAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywK KyAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN1Yk5vZGVDb2xsZWN0aW9uQ29udHJvbC5leHRlbmQo eworICAgICAgICBzaG93R3JpZENvbnRyb2w6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICB2 YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICBncmlkQm9keSA9ICQoJzxkaXYgY2xhc3M9XCdw Z2FkbWluLWNvbnRyb2wtZ3JvdXAgYmFja2dyaWQgZm9ybS1ncm91cCBwZy1lbC0xMiBvYmplY3Qg c3Vibm9kZVwnPjwvZGl2PicpOworCisgICAgICAgICAgdmFyIHN1Ym5vZGUgPSBkYXRhLnN1Ym5v ZGUuc2NoZW1hID8gZGF0YS5zdWJub2RlIDogZGF0YS5zdWJub2RlLnByb3RvdHlwZSwKKyAgICAg ICAgICAgIGdyaWRTY2hlbWEgPSBCYWNrZm9ybS5nZW5lcmF0ZUdyaWRDb2x1bW5zRnJvbU1vZGVs KAorICAgICAgICAgICAgICBkYXRhLm5vZGVfaW5mbywgc3Vibm9kZSwgdGhpcy5maWVsZC5nZXQo J21vZGUnKSwgZGF0YS5jb2x1bW5zLCBkYXRhLnNjaGVtYV9ub2RlCisgICAgICAgICAgICApOwor CisgICAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3RpbmcgZ3JpZCBpZiBhbnkgKGluIGNhc2Ugb2Yg cmUtcmVuZGVyKQorICAgICAgICAgIGlmIChzZWxmLmdyaWQpIHsKKyAgICAgICAgICAgIHNlbGYu Z3JpZC5yZW1vdmUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBTZXQgdmlzaWJpbGl0 eSBvZiBBZGQgYnV0dG9uCisgICAgICAgICAgaWYgKGRhdGEuZGlzYWJsZWQgfHwgZGF0YS5jYW5B ZGQgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICQoZ3JpZEJvZHkpLmZpbmQoJ2J1dHRvbi5hZGQn KS5yZW1vdmUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBJbnNlcnQgQ2xlYXIgQ2Vs bCBpbnRvIEdyaWQKKyAgICAgICAgICBncmlkU2NoZW1hLmNvbHVtbnMudW5zaGlmdCh7CisgICAg ICAgICAgICBuYW1lOiAncGctYmFja2Zvcm0tY2xlYXInLAorICAgICAgICAgICAgbGFiZWw6ICc8 aSBhcmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnQ2xlYXIgcm93JykgKyAnIiBjbGFzcz0iZmEgZmEt ZXJhc2VyIiB0aXRsZT0iJyArIGdldHRleHQoJ0NsZWFyIHJvdycpICsgJyI+PC9pPicsCisgICAg ICAgICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uQ2xlYXJDZWxsLAorICAgICAgICAgICAg ZWRpdGFibGU6IGZhbHNlLAorICAgICAgICAgICAgY2VsbF9wcmlvcml0eTogLTEsCisgICAgICAg ICAgICBzb3J0YWJsZTogZmFsc2UsCisgICAgICAgICAgICBoZWFkZXJDZWxsOiBCYWNrZ3JpZC5F eHRlbnNpb24uQ3VzdG9tSGVhZGVyQ2VsbC5leHRlbmQoeworICAgICAgICAgICAgICBjbGFzc05h bWU6ICdoZWFkZXItaWNvbi1jZWxsJywKKyAgICAgICAgICAgICAgZXZlbnRzOiB7CisgICAgICAg ICAgICAgICAgJ2NsaWNrJzogJ2NsZWFyckFsbCcsCisgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgIGNsZWFyckFsbDogZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGUucHJldmVu dERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICB2YXIgdGhhdCA9IHRoaXM7CisgICAgICAgICAg ICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiByb3cgaXMgZGVsZXRhYmxlIG9yIG5vdAorCisgICAg ICAgICAgICAgICAgQWxlcnRpZnkuY29uZmlybSgKKyAgICAgICAgICAgICAgICAgIGdldHRleHQo J0NsZWFyIEFsbCBSb3dzJyksCisgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdBcmUgeW91IHN1 cmUgeW91IHdpc2ggdG8gY2xlYXIgYWxsIHJvd3M/JyksCisgICAgICAgICAgICAgICAgICBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHRoYXQuY29sbGVjdGlvbi50b0pT T04oKSwgZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICAgICAgICAgIHRoYXQuY29sbGVjdGlv bi5nZXQobS5pZCkuc2V0KHsnbmFtZSc6IG51bGwsICdzcWwnOiBudWxsfSk7CisgICAgICAgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIGZ1 bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRoaXMuJGVsLmVtcHR5 KCk7CisgICAgICAgICAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uOworICAgICAgICAg ICAgICAgIHZhciBsYWJlbCA9ICQoJzxidXR0b24gdHlwZT0iYnV0dG9uIiB0aXRsZT0iJyArIGdl dHRleHQoJ0NsZWFyIHJvdycpICsgJyIgYXJpYS1sYWJlbD0iQ2xlYXIgcm93IiBhcmlhLWV4cGFu ZGVkPSJmYWxzZSIgdGFiaW5kZXg9IjAiPicpLmh0bWwoY29sdW1uLmdldCgnbGFiZWwnKSkuYXBw ZW5kKCc8c3BhbiBjbGFzcz1cJ3NvcnQtY2FyZXRcJyBhcmlhLWhpZGRlbj1cJ3RydWVcJz48L3Nw YW4+Jyk7CisKKyAgICAgICAgICAgICAgICB0aGlzLiRlbC5hcHBlbmQobGFiZWwpOworICAgICAg ICAgICAgICAgIHRoaXMuJGVsLmFkZENsYXNzKGNvbHVtbi5nZXQoJ25hbWUnKSk7CisgICAgICAg ICAgICAgICAgdGhpcy4kZWwuYWRkQ2xhc3MoY29sdW1uLmdldCgnZGlyZWN0aW9uJykpOworICAg ICAgICAgICAgICAgIHRoaXMuJGVsLmF0dHIoJ3JvbGUnLCAnY29sdW1uaGVhZGVyJyk7CisgICAg ICAgICAgICAgICAgdGhpcy4kZWwuYXR0cignYXJpYS1sYWJlbCcsICdjb2x1bW5oZWFkZXInKTsK KyAgICAgICAgICAgICAgICB0aGlzLiRlbC5hdHRyKCdhbHQnLCAnY29sdW1uaGVhZGVyJyk7Cisg ICAgICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZUV2ZW50cygpOworICAgICAgICAgICAgICAgIHJl dHVybiB0aGlzOworCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9KSwKKyAgICAgICAg ICB9KTsKKworCisgICAgICAgICAgdmFyIGNvbGxlY3Rpb24gPSBzZWxmLm1vZGVsLmdldChkYXRh Lm5hbWUpOworCisgICAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7CisgICAgICAgICAgICBjb2xs ZWN0aW9uID0gbmV3KHBnQWRtaW4uQnJvd3Nlci5Ob2RlLkNvbGxlY3Rpb24pKG51bGwsIHsKKyAg ICAgICAgICAgICAgaGFuZGxlcjogc2VsZi5tb2RlbC5oYW5kbGVyIHx8IHNlbGYubW9kZWwsCisg ICAgICAgICAgICAgIG1vZGVsOiBkYXRhLm1vZGVsLAorICAgICAgICAgICAgICB0b3A6IHNlbGYu bW9kZWwudG9wIHx8IHNlbGYubW9kZWwsCisgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKKyAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgc2VsZi5tb2RlbC5zZXQoZGF0YS5uYW1lLCBjb2xs ZWN0aW9uLCB7CisgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKKyAgICAgICAgICAgIH0pOwor ICAgICAgICAgIH0KKworICAgICAgICAgIHZhciBjZWxsRWRpdGluZyA9IGZ1bmN0aW9uKGFyZ3Mp IHsKKyAgICAgICAgICAgIHZhciBjdHggPSB0aGlzLAorICAgICAgICAgICAgICBjZWxsID0gYXJn c1swXTsKKyAgICAgICAgICAgIC8vIFNlYXJjaCBmb3IgYW55IG90aGVyIHJvd3Mgd2hpY2ggYXJl IG9wZW4uCisgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24obSkgeworICAgICAgICAgICAg ICAvLyBDaGVjayBpZiByb3cgd2hpY2ggd2UgYXJlIGFib3V0IHRvIGNsb3NlIGlzIG5vdCBjdXJy ZW50IHJvdy4KKyAgICAgICAgICAgICAgaWYgKGNlbGwubW9kZWwgIT0gbSkgeworICAgICAgICAg ICAgICAgIHZhciBpZHggPSBjdHguaW5kZXhPZihtKTsKKyAgICAgICAgICAgICAgICBpZiAoaWR4 ID4gLTEpIHsKKyAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBncmlkLmJvZHkucm93c1tpZHhd LAorICAgICAgICAgICAgICAgICAgICByb3dFZGl0Q2VsbCA9IHJvdy4kZWwuZmluZCgnLnN1Ym5v ZGUtZWRpdC1pbi1wcm9jZXNzJykucGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAvLyBPbmx5 IGNsb3NlIHJvdyBpZiBpdCdzIG9wZW4uCisgICAgICAgICAgICAgICAgICBpZiAocm93RWRpdENl bGwubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgRXZl bnQoJ2NsaWNrJyk7CisgICAgICAgICAgICAgICAgICAgIHJvd0VkaXRDZWxsWzBdLmRpc3BhdGNo RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgfTsKKyAgICAgICAgICAv LyBMaXN0ZW4gZm9yIGFueSByb3cgd2hpY2ggaXMgYWJvdXQgdG8gZW50ZXIgaW4gZWRpdCBtb2Rl LgorICAgICAgICAgIGNvbGxlY3Rpb24ub24oJ2VudGVyaW5nRWRpdE1vZGUnLCBjZWxsRWRpdGlu ZywgY29sbGVjdGlvbik7CisKKyAgICAgICAgICAvLyBJbml0aWFsaXplIGEgbmV3IEdyaWQgaW5z dGFuY2UKKyAgICAgICAgICB2YXIgZ3JpZCA9IHNlbGYuZ3JpZCA9IG5ldyBCYWNrZ3JpZC5Hcmlk KHsKKyAgICAgICAgICAgIGNvbHVtbnM6IGdyaWRTY2hlbWEuY29sdW1ucywKKyAgICAgICAgICAg IGNvbGxlY3Rpb246IGNvbGxlY3Rpb24sCisgICAgICAgICAgICByb3c6IHRoaXMucm93LAorICAg ICAgICAgICAgY2xhc3NOYW1lOiAnYmFja2dyaWQgdGFibGUgcHJlc2VudGF0aW9uIHRhYmxlLWJv cmRlcmVkIHRhYmxlLW5vb3V0ZXItYm9yZGVyIHRhYmxlLWhvdmVyJywKKyAgICAgICAgICB9KTsK KworICAgICAgICAgIC8vIFJlbmRlciBzdWJOb2RlIGdyaWQKKyAgICAgICAgICB2YXIgc3ViTm9k ZUdyaWQgPSBncmlkLnJlbmRlcigpLiRlbDsKKworICAgICAgICAgIHZhciAkZGlhbG9nID0gZ3Jp ZEJvZHkuYXBwZW5kKHN1Yk5vZGVHcmlkKTsKKworICAgICAgICAgIHJldHVybiAkZGlhbG9nOwor ICAgICAgICB9LAorICAgICAgfSksCisgICAgICBjb2x1bW5zOiBbJ2tleV9sYWJlbCcsICduYW1l JywgJ3NxbCddLAorICAgICAgdmlzaWJsZTogdHJ1ZSwKKyAgICB9XSwKKyAgICB2YWxpZGF0ZTog ZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorICB9KTsKKworICBsZXQg bW9kZWwgPSBuZXcgTWFjcm9Db2xsZWN0aW9uTW9kZWwoKTsKKyAgcmV0dXJuIG1vZGVsOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2Fj dGlvbnMuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0 aW9ucy5qcwppbmRleCA5ODI5N2NmMTguLjgxOTM3MDU4YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKQEAgLTM5LDYg KzM5LDExIEBAIGxldCBxdWVyeVRvb2xBY3Rpb25zID0gewogICAgICQoJy5zcWwtZWRpdG9yLW1l c3NhZ2UnKS5odG1sKCcnKTsKICAgfSwKIAorICBleGVjdXRlTWFjcm86IGZ1bmN0aW9uIChzcWxF ZGl0b3JDb250cm9sbGVyLCBNYWNyb0lkKSB7CisgICAgdGhpcy5fY2xlYXJNZXNzYWdlVGFiKCk7 CisgICAgc3FsRWRpdG9yQ29udHJvbGxlci5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9x dWVyeShudWxsLCBmYWxzZSwgTWFjcm9JZCk7CisgIH0sCisKICAgZXhlY3V0ZVF1ZXJ5OiBmdW5j dGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewogICAgIHRoaXMuX2NsZWFyTWVzc2FnZVRhYigp OwogICAgIHNxbEVkaXRvckNvbnRyb2xsZXIuY2hlY2tfZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVf cXVlcnkoKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19iYWNrZ3JpZC5v dmVycmlkZXMuc2NzcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19iYWNrZ3JpZC5vdmVycmlk ZXMuc2NzcwppbmRleCA0ZmMxZjVmMTkuLjM1ODQwY2ZhZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL3Njc3MvX2JhY2tncmlkLm92ZXJyaWRlcy5zY3NzCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9zY3NzL19iYWNrZ3JpZC5vdmVycmlkZXMuc2NzcwpAQCAtMzU5LDMgKzM1OSwzMSBA QCB0YWJsZSB0ciB0aCBidXR0b24gewogICAgICB9CiAgICB9CiB9CisKKy5iYWNrZ3JpZCAuc3Fs LWNlbGwgLkNvZGVNaXJyb3Itc2Nyb2xsIHsKKyAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50 OworfQorCisuYmFja2dyaWQgLnNxbC1jZWxsIC5jbS1zLWRlZmF1bHQgeworICBoZWlnaHQ6IDUw cHggIWltcG9ydGFudDsKK30KKworLmJhY2tncmlkIC5zcWwtY2VsbCAuQ29kZU1pcnJvci1oc2Ny b2xsYmFyID4gZGl2IHsKKyAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKK30KKworLmJhY2tncmlk IC5zcWwtY2VsbCAuQ29kZU1pcnJvci1oc2Nyb2xsYmFyIHsKKyAgb3ZlcmZsb3cteDogaGlkZGVu ICFpbXBvcnRhbnQ7Cit9CisKKy5iYWNrZ3JpZCAuc3FsLWNlbGwgLkNvZGVNaXJyb3ItdnNjcm9s bGJhciB7CisgIG92ZXJmbG93LXk6IGhpZGRlbiAhaW1wb3J0YW50OworfQorCisuYmFja2dyaWQg LnNxbC1jZWxsIC5Db2RlTWlycm9yLXNpemVyIHsKKyAgcGFkZGluZy1ib3R0b206IDAgIWltcG9y dGFudDsKK30KKworLmJhY2tncmlkIC5zcWwtY2VsbCAuQ29kZU1pcnJvci1zY3JvbGxiYXItZmls bGVyIHsKKyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9kYXRh Z3JpZC9fX2luaXRfXy5weQppbmRleCBmNWZjNzhjNGYuLjFiZDg0MWYyMCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKQEAgLTMzLDYgKzMzLDcgQEAgZnJvbSBwZ2FkbWlu LnNldHRpbmdzIGltcG9ydCBnZXRfc2V0dGluZwogZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMg aW1wb3J0IHVuZGVyc2NvcmVfdW5lc2NhcGUKIGZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24g aW1wb3J0IE9iamVjdEdvbmUKIGZyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IE1J TUVUWVBFX0FQUF9KUworZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5tYWNyb3Mg aW1wb3J0IGdldF91c2VyX21hY3JvcwogCiBNT0RVTEVfTkFNRSA9ICdkYXRhZ3JpZCcKIApAQCAt Mjc0LDYgKzI3NSw4IEBAIGRlZiBwYW5lbCh0cmFuc19pZCk6CiAKICAgICBsYXlvdXQgPSBnZXRf c2V0dGluZygnU1FMRWRpdG9yL0xheW91dCcpCiAKKyAgICBtYWNyb3MgPSBnZXRfdXNlcl9tYWNy b3MoKQorCiAgICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgImRhdGFncmlkL2lu ZGV4Lmh0bWwiLAogICAgICAgICBfPWdldHRleHQsCkBAIC0yODYsNiArMjg5LDcgQEAgZGVmIHBh bmVsKHRyYW5zX2lkKToKICAgICAgICAgYmdjb2xvcj1iZ2NvbG9yLAogICAgICAgICBmZ2NvbG9y PWZnY29sb3IsCiAgICAgICAgIGxheW91dD1sYXlvdXQsCisgICAgICAgIG1hY3Jvcz1tYWNyb3MK ICAgICApCiAKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxh dGVzL2RhdGFncmlkL2luZGV4Lmh0bWwgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1w bGF0ZXMvZGF0YWdyaWQvaW5kZXguaHRtbAppbmRleCAwOTdhNDJlOTEuLmEwZWViYzhjZiAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2lu ZGV4Lmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFn cmlkL2luZGV4Lmh0bWwKQEAgLTM3Nyw2ICszNzcsMzEgQEAKICAgICAgICAgICAgICAgICAgICAg PGkgY2xhc3M9ImZhIGZhLWRvd25sb2FkIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIg cm9sZT0iaW1nIj48L2k+CiAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICA8 L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBtci0xIHVzZXJfbWFjcm9z IiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4KKyAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4tbWFjcm8tZHJvcGRvd24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRu LXByaW1hcnktaWNvbiBkcm9wZG93bi10b2dnbGUiCisgICAgICAgICAgICAgICAgICAgICAgICBk YXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9 ImZhbHNlIgorICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ie3sgXygnTWFjcm9z JykgfX0iIHRpdGxlPSJ7eyBfKCdNYWNyb3MnKSB9fSIgdGFiaW5kZXg9IjAiPgorICAgICAgICAg ICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2Nyb2xsIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRl bj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+CisgICAgICAgICAgICAgICAgPC9idXR0b24+CisgICAg ICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KKyAgICAgICAgICAgICAgICAg ICAgPGxpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0i IGlkPSJidG4tbWFuYWdlLW1hY3JvcyIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBfKCdNYW5hZ2UgTWFjcm9zLi4uJykgfX0gPC9z cGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgICAgICAgICA8 L2xpPgorICAgICAgICAgICAgICAgICAgICB7JSBpZiBtYWNyb3N8bGVuZ3RoID4gMCAlfQorICAg ICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+CisgICAg ICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgICAgIHslIGZvciBp IGluIG1hY3JvcyAlfQorICAgICAgICAgICAgICAgICAgICA8bGk+CisgICAgICAgICAgICAgICAg ICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSBidG4tbWFjcm8iIGRhdGEtbWFjcm8taWQ9 Int7IGkuaWQgfX0iIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8c3Bhbj4ge3sgXyhpLm5hbWUpIH19IDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8c3Bhbj4gKHt7IGkua2V5X2xhYmVsIH19KSA8L3NwYW4+CisgICAgICAgICAg ICAgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAg ICAgICAgICAgIHslIGVuZGZvciAlfQorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAg ICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAKICAgICAgICAgPGRpdiBjbGFzcz0iY29ubmVjdGlv bl9zdGF0dXNfd3JhcHBlciBkLWZsZXgiPgpAQCAtNDU5LDcgKzQ4NCw4IEBAIHJlcXVpcmUoWydz b3VyY2VzL2dlbmVyYXRlZC9icm93c2VyX25vZGVzJywgJ3NvdXJjZXMvZ2VuZXJhdGVkL2NvZGVt aXJyb3InLCAnc291CiAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXIuc3RhcnQoCiAgICAgICAg ICAgICB7eyB1bmlxdWVJZCB9fSwKICAgICAgICAgICAgIHt7IHVybF9wYXJhbXN8c2FmZX19LAot ICAgICAgICAgICAgJ3t7IGxheW91dHxzYWZlIH19JworICAgICAgICAgICAgJ3t7IGxheW91dHxz YWZlIH19JywKKyAgICAgICAgICAgIHt7IG1hY3Jvc3xzYWZlIH19CiAgICAgICAgICk7CiAKICAg ICAgICAgLy8gSWYgb3BlbmluZyBmcm9tIHNjaGVtYSBkaWZmLCBzZXQgdGhlIGdlbmVyYXRlZCBz Y3JpcHQgdG8gdGhlIFNRTCBFZGl0b3IKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRf Xy5weQppbmRleCBjNjJiYzdjYmMuLjlkMDkwM2IyNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9fX2luaXRfXy5weQpAQCAtMzIsNyArMzIsNyBAQCBmcm9tIHBnYWRtaW4udG9vbHMuc3Fs ZWRpdG9yLnV0aWxzLnVwZGF0ZV9zZXNzaW9uX2dyaWRfdHJhbnNhY3Rpb24gaW1wb3J0IFwKIGZy b20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdBZG1pbk1vZHVsZQogZnJvbSBwZ2FkbWluLnV0aWxz IGltcG9ydCBnZXRfc3RvcmFnZV9kaXJlY3RvcnkKIGZyb20gcGdhZG1pbi51dGlscy5hamF4IGlt cG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIGJhZF9yZXF1ZXN0LCBcCi0gICAgc3VjY2Vzc19yZXR1 cm4sIGludGVybmFsX3NlcnZlcl9lcnJvcgorICAgIHN1Y2Nlc3NfcmV0dXJuLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZQogZnJvbSBwZ2FkbWlu LnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgogZnJvbSBwZ2FkbWluLnV0aWxzLm1lbnUg aW1wb3J0IE1lbnVJdGVtCiBmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9ydCBDb25u ZWN0aW9uTG9zdCwgU1NIVHVubmVsQ29ubmVjdGlvbkxvc3QsXApAQCAtNDYsNiArNDYsOCBAQCBm cm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0aWxzLmZpbHRlcl9kaWFsb2cgaW1wb3J0IEZp bHRlckRpYWxvZwogZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci51dGlscy5xdWVyeV9oaXN0 b3J5IGltcG9ydCBRdWVyeUhpc3RvcnkKIGZyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1w b3J0IE1JTUVUWVBFX0FQUF9KUywgU0VSVkVSX0NPTk5FQ1RJT05fQ0xPU0VELFwKICAgICBFUlJP Ul9NU0dfVFJBTlNfSURfTk9UX0ZPVU5ECitmcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yLnV0 aWxzLm1hY3JvcyBpbXBvcnQgZ2V0X21hY3JvcyxcCisgICAgZ2V0X3VzZXJfbWFjcm9zLCBzZXRf bWFjcm9zCiAKIE1PRFVMRV9OQU1FID0gJ3NxbGVkaXRvcicKIApAQCAtMTA5LDYgKzExMSw5IEBA IGNsYXNzIFNxbEVkaXRvck1vZHVsZShQZ0FkbWluTW9kdWxlKToKICAgICAgICAgICAgICdzcWxl ZGl0b3IuZ2V0X3F1ZXJ5X2hpc3RvcnknLAogICAgICAgICAgICAgJ3NxbGVkaXRvci5hZGRfcXVl cnlfaGlzdG9yeScsCiAgICAgICAgICAgICAnc3FsZWRpdG9yLmNsZWFyX3F1ZXJ5X2hpc3Rvcnkn LAorICAgICAgICAgICAgJ3NxbGVkaXRvci5nZXRfbWFjcm8nLAorICAgICAgICAgICAgJ3NxbGVk aXRvci5nZXRfbWFjcm9zJywKKyAgICAgICAgICAgICdzcWxlZGl0b3Iuc2V0X21hY3JvcycKICAg ICAgICAgXQogCiAgICAgZGVmIHJlZ2lzdGVyX3ByZWZlcmVuY2VzKHNlbGYpOgpAQCAtMTU0Nywz ICsxNTUyLDQ2IEBAIGRlZiBnZXRfcXVlcnlfaGlzdG9yeSh0cmFuc19pZCk6CiAgICAgICAgIGNo ZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKIAogICAgIHJldHVybiBRdWVyeUhpc3Rv cnkuZ2V0KGN1cnJlbnRfdXNlci5pZCwgdHJhbnNfb2JqLnNpZCwgY29ubi5kYikKKworCitAYmx1 ZXByaW50LnJvdXRlKAorICAgICcvZ2V0X21hY3Jvcy88aW50OnRyYW5zX2lkPicsCisgICAgbWV0 aG9kcz1bIkdFVCJdLCBlbmRwb2ludD0nZ2V0X21hY3JvcycKKykKK0BibHVlcHJpbnQucm91dGUo CisgICAgJy9nZXRfbWFjcm9zLzxpbnQ6bWFjcm9faWQ+LzxpbnQ6dHJhbnNfaWQ+JywKKyAgICBt ZXRob2RzPVsiR0VUIl0sIGVuZHBvaW50PSdnZXRfbWFjcm8nCispCitAbG9naW5fcmVxdWlyZWQK K2RlZiBtYWNyb3ModHJhbnNfaWQsIG1hY3JvX2lkPU5vbmUsIGpzb25fcmVzcD1UcnVlKToKKyAg ICAiIiIKKyAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdldCBhbGwgdGhlIGNvbHVtbnMgZm9y IGRhdGEgc29ydGluZyBkaWFsb2cuCisKKyAgICBBcmdzOgorICAgICAgICB0cmFuc19pZDogdW5p cXVlIHRyYW5zYWN0aW9uIGlkCisgICAgICAgIG1hY3JvX2lkOiBNYWNybyBpZAorICAgICIiIgor CisgICAgc3RhdHVzLCBlcnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYiA9IFwK KyAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lkKQorCisgICAgcmV0dXJu IGdldF9tYWNyb3MobWFjcm9faWQsIGpzb25fcmVzcCkKKworCitAYmx1ZXByaW50LnJvdXRlKAor ICAgICcvc2V0X21hY3Jvcy88aW50OnRyYW5zX2lkPicsCisgICAgbWV0aG9kcz1bIlBVVCJdLCBl bmRwb2ludD0nc2V0X21hY3JvcycKKykKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHVwZGF0ZV9tYWNy b3ModHJhbnNfaWQpOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IGFs bCB0aGUgY29sdW1ucyBmb3IgZGF0YSBzb3J0aW5nIGRpYWxvZy4KKworICAgIEFyZ3M6CisgICAg ICAgIHRyYW5zX2lkOiB1bmlxdWUgdHJhbnNhY3Rpb24gaWQKKyAgICAiIiIKKworICAgIHN0YXR1 cywgZXJyb3JfbXNnLCBjb25uLCB0cmFuc19vYmosIHNlc3Npb25fb2IgPSBcCisgICAgICAgIGNo ZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkKKworICAgIHJldHVybiBzZXRfbWFjcm9z KCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3Nx bGVkaXRvci5jc3MgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxl ZGl0b3IuY3NzCmluZGV4IDAwNTQzZmY2OS4uYzI4MWQ1MzdlIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2Nzcy9zcWxlZGl0b3IuY3NzCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKQEAgLTM5NSwz ICszOTUsMzIgQEAgaW5wdXQuZWRpdG9yLWNoZWNrYm94OmZvY3VzIHsKIC5oaWRlLXZlcnRpY2Fs LXNjcm9sbGJhciB7CiAgIG92ZXJmbG93LXk6IGhpZGRlbjsKIH0KKworCisvKiAgTWFjcm9zICov CisKKy5tYWNyby10YWIgeworICB0b3A6IDBweCAhaW1wb3J0YW50OworfQorCisubWFjcm8tdGFi IC50YWItcGFuZSB7CisgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50OworfQorCisubWFjcm9fZGlh bG9nIC5Db2RlTWlycm9yIHsKKyAgb3ZlcmZsb3cteTogYXV0bzsKKyAgcmVzaXplOiB2ZXJ0aWNh bDsKK30KKy5tYWNyb19kaWFsb2cgLnNxbC1jZWxsID4gZGl2IHsKKyAgb3ZlcmZsb3cteTogYXV0 bzsKKyAgcmVzaXplOiB2ZXJ0aWNhbDsKK30KKworLm1hY3JvX2RpYWxvZyAuQ29kZU1pcnJvci1j dXJzb3IgeworICAgIHdpZHRoOiAxcHggIWltcG9ydGFudDsKKyAgICBoZWlnaHQ6IDE4cHggIWlt cG9ydGFudDsKK30KKworLm1hY3JvX2RpYWxvZyAgLnBnLXByb3Atc3RhdHVzLWJhciB7CisgIHot aW5kZXg6IDE7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMv anMvc3FsZWRpdG9yLmpzCmluZGV4IGRkZDlhZDcwMS4uMjAzZTNhNTczIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcworKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcwpAQCAtNDMs NiArNDMsNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgJ3Rvb2xzL2RhdGFncmlk L3N0YXRpYy9qcy9kYXRhZ3JpZF9wYW5lbF90aXRsZScsCiAgICdzb3VyY2VzL3dpbmRvdycsCiAg ICdzb3VyY2VzL2lzX25hdGl2ZScsCisgICdzb3VyY2VzL3NxbGVkaXRvci9tYWNybycsCiAgICdz b3VyY2VzLy4uL2J1bmRsZS9zbGlja2dyaWQnLAogICAncGdhZG1pbi5maWxlX21hbmFnZXInLAog ICAnc2xpY2sucGdhZG1pbi5mb3JtYXR0ZXJzJywKQEAgLTU3LDcgKzU4LDcgQEAgZGVmaW5lKCd0 b29scy5xdWVyeXRvb2wnLCBbCiAgIEdlb21ldHJ5Vmlld2VyLCBoaXN0b3J5Q29sbCwgcXVlcnlI aXN0LCBxdWVyeVNvdXJjZXMsCiAgIGtleWJvYXJkU2hvcnRjdXRzLCBxdWVyeVRvb2xBY3Rpb25z LCBxdWVyeVRvb2xOb3RpZmljYXRpb25zLCBEYXRhZ3JpZCwKICAgbW9kaWZ5QW5pbWF0aW9uLCBj YWxjdWxhdGVRdWVyeVJ1blRpbWUsIGNhbGxSZW5kZXJBZnRlclBvbGwsIHF1ZXJ5VG9vbFByZWYs IHF1ZXJ5VHhuU3RhdHVzLCBjc3JmVG9rZW4sIHBhbmVsVGl0bGVGdW5jLAotICBwZ1dpbmRvdywg aXNOYXRpdmUpIHsKKyAgcGdXaW5kb3csIGlzTmF0aXZlLCBNYWNyb0hhbmRsZXIpIHsKICAgLyog UmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiBvbmNlICovCiAgIGlm IChwZ0FkbWluLlNxbEVkaXRvcikKICAgICByZXR1cm4gcGdBZG1pbi5TcWxFZGl0b3I7CkBAIC0x NDksNiArMTUwLDkgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAvLyBUcmFu c2FjdGlvbiBjb250cm9sCiAgICAgICAnY2xpY2sgI2J0bi1jb21taXQnOiAnb25fY29tbWl0X3Ry YW5zYWN0aW9uJywKICAgICAgICdjbGljayAjYnRuLXJvbGxiYWNrJzogJ29uX3JvbGxiYWNrX3Ry YW5zYWN0aW9uJywKKyAgICAgIC8vIE1hbmFnZSBNYWNyb3MKKyAgICAgICdjbGljayAjYnRuLW1h bmFnZS1tYWNyb3MnOiAnb25fbWFuYWdlX21hY3JvcycsCisgICAgICAnY2xpY2sgLmJ0bi1tYWNy byc6ICdvbl9leGVjdXRlX21hY3JvJywKICAgICB9LAogCiAgICAgcmVmbGVjdFByZWZlcmVuY2Vz OiBmdW5jdGlvbigpIHsKQEAgLTIwMzgsOCArMjA0MiwzMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5 dG9vbCcsIFsKIAogICAgICAgcXVlcnlUb29sQWN0aW9ucy5leGVjdXRlUm9sbGJhY2sodGhpcy5o YW5kbGVyKTsKICAgICB9LAorCisgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIG1hbmFnZSBt YWNyb3MgYnV0dG9uIGNsaWNrLgorICAgIG9uX21hbmFnZV9tYWNyb3M6IGZ1bmN0aW9uKCkgewor ICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICAvLyBUcmlnZ2VyIHRoZSBzaG93X2ZpbHRl ciBzaWduYWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKKyAgICAgIHNlbGYuaGFu ZGxlci50cmlnZ2VyKAorICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOm1hbmFnZV9t YWNyb3MnLAorICAgICAgICBzZWxmLAorICAgICAgICBzZWxmLmhhbmRsZXIKKyAgICAgICk7Cisg ICAgfSwKKworICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBtYW5hZ2UgbWFjcm9zIGJ1dHRv biBjbGljay4KKyAgICBvbl9leGVjdXRlX21hY3JvOiBmdW5jdGlvbihlKSB7CisgICAgICBsZXQg bWFjcm9JZCA9ICQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKCdtYWNyby1pZCcpOworICAgICAgdGhp cy5oYW5kbGVyLmhpc3RvcnlfcXVlcnlfc291cmNlID0gUXVlcnlTb3VyY2VzLkVYRUNVVEU7Cisg ICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVNYWNybyh0aGlzLmhhbmRsZXIsIG1hY3JvSWQp OworICAgIH0sCisKICAgfSk7CiAKKworCiAgIC8qIERlZmluaW5nIGNvbnRyb2xsZXIgY2xhc3Mg Zm9yIGRhdGEgZ3JpZCwgd2hpY2ggYWN0dWFsbHkKICAgICogcGVyZm9ybSB0aGUgb3BlcmF0aW9u cyBsaWtlIGV4ZWN1dGluZyB0aGUgc3FsIHF1ZXJ5LCBwb2xsIHRoZSByZXN1bHQsCiAgICAqIHJl bmRlciB0aGUgZGF0YSBpbiB0aGUgZ3JpZCwgU2F2ZS9SZWZyZXNoIHRoZSBkYXRhIGV0Yy4uLgpA QCAtMjMwOCw3ICsyMzM0LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAg KiBjYWxsIHRoZSByZW5kZXIgbWV0aG9kIG9mIHRoZSBncmlkIHZpZXcgdG8gcmVuZGVyIHRoZSBz bGlja2dyaWQKICAgICAgICAqIGhlYWRlciBhbmQgbG9hZGluZyBpY29uIGFuZCBzdGFydCBleGVj dXRpb24gb2YgdGhlIHNxbCBxdWVyeS4KICAgICAgICAqLwotICAgICAgc3RhcnQ6IGZ1bmN0aW9u KHRyYW5zSWQsIHVybF9wYXJhbXMsIGxheW91dCkgeworICAgICAgc3RhcnQ6IGZ1bmN0aW9uKHRy YW5zSWQsIHVybF9wYXJhbXMsIGxheW91dCwgbWFjcm9zKSB7CiAgICAgICAgIHZhciBzZWxmID0g dGhpczsKIAogICAgICAgICBzZWxmLmlzX3F1ZXJ5X3Rvb2wgPSB1cmxfcGFyYW1zLmlzX3F1ZXJ5 X3Rvb2w9PT0ndHJ1ZSc/dHJ1ZTpmYWxzZTsKQEAgLTIzMzMsNiArMjM1OSw3IEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIGxheW91dDogbGF5b3V0LAogICAgICAgICB9 KTsKICAgICAgICAgc2VsZi50cmFuc0lkID0gc2VsZi5ncmlkVmlldy50cmFuc0lkID0gdHJhbnNJ ZDsKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxmLmdyaWRWaWV3Lm1hY3JvcyA9IG1hY3JvczsK IAogICAgICAgICBzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZSA9IHVuZGVmaW5lZDsKIApAQCAt MjQ3NCwxMiArMjUwMSwxNCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAg c2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6dW5pbmRlbnRfc2VsZWN0ZWRfY29kZScsIHNlbGYu X3VuaW5kZW50X3NlbGVjdGVkX2NvZGUsIHNlbGYpOwogICAgICAgICAvLyBGb3JtYXQKICAgICAg ICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6Zm9ybWF0X3NxbCcsIHNlbGYuX2Zvcm1hdF9z cWwsIHNlbGYpOworICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246bWFu YWdlX21hY3JvcycsIHNlbGYuX21hbmFnZV9tYWNyb3MsIHNlbGYpOworICAgICAgICBzZWxmLm9u KCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246ZXhlY3V0ZV9tYWNybycsIHNlbGYuX2V4ZWN1dGVf bWFjcm8sIHNlbGYpOwogCiAgICAgICAgIHdpbmRvdy5wYXJlbnQuJCh3aW5kb3cucGFyZW50LmRv Y3VtZW50KS5vbigncGdhZG1pbi1zcWxlZGl0b3I6cm93cy1jb3BpZWQnLCBzZWxmLl9jb3BpZWRf aW5fb3RoZXJfc2Vzc2lvbik7CiAgICAgICB9LAogCiAgICAgICAvLyBDaGVja3MgaWYgdGhlcmUg aXMgYW55IGRpcnR5IGRhdGEgaW4gdGhlIGdyaWQgYmVmb3JlIGV4ZWN1dGluZyBhIHF1ZXJ5Ci0g ICAgICBjaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVyeTogZnVuY3Rpb24oZXhwbGFp bl9wcmVmaXg9bnVsbCwgc2hvdWxkUmVjb25uZWN0PWZhbHNlKSB7CisgICAgICBjaGVja19kYXRh X2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVyeTogZnVuY3Rpb24oZXhwbGFpbl9wcmVmaXg9bnVsbCwg c2hvdWxkUmVjb25uZWN0PWZhbHNlLCBtYWNyb0lkPXVuZGVmaW5lZCkgewogICAgICAgICB2YXIg c2VsZiA9IHRoaXM7CiAKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgZ3JpZCBoYXMgYW55 IGNoYW5nZXMgYmVmb3JlIHJ1bm5pbmcgcXVlcnkKQEAgLTI0OTIsNyArMjUyMSwxMCBAQCBkZWZp bmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgIGdldHRleHQoJ1RoZSBkYXRhIGhh cyBiZWVuIG1vZGlmaWVkLCBidXQgbm90IHNhdmVkLiBBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8g ZGlzY2FyZCB0aGUgY2hhbmdlcz8nKSwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAg ICAgICAgICAvLyBUaGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIHNhdmUsIGp1c3QgY29udGludWUK LSAgICAgICAgICAgICAgaWYoc2VsZi5pc19xdWVyeV90b29sKSB7CisgICAgICAgICAgICAgIGlm IChtYWNyb0lkICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9leGVjdXRl X21hY3JvX3F1ZXJ5KGV4cGxhaW5fcHJlZml4LCBzaG91bGRSZWNvbm5lY3QsIG1hY3JvSWQpOwor ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGVsc2UgaWYoc2VsZi5pc19xdWVyeV90b29s KSB7CiAgICAgICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9zcWxfcXVlcnkoZXhwbGFpbl9wcmVm aXgsIHNob3VsZFJlY29ubmVjdCk7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgZWxz ZSB7CkBAIC0yNTA4LDcgKzI1NDAsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAg ICAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ05vJyksCiAgICAgICAgICAgfSk7CiAgICAgICAg IH0gZWxzZSB7Ci0gICAgICAgICAgaWYoc2VsZi5pc19xdWVyeV90b29sKSB7CisgICAgICAgICAg aWYgKG1hY3JvSWQgIT09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9t YWNyb19xdWVyeShleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0LCBtYWNyb0lkKTsKKyAg ICAgICAgICB9CisgICAgICAgICAgZWxzZSBpZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKICAgICAg ICAgICAgIHNlbGYuX2V4ZWN1dGVfc3FsX3F1ZXJ5KGV4cGxhaW5fcHJlZml4LCBzaG91bGRSZWNv bm5lY3QpOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIHsKQEAgLTI2MDIsNiArMjYzNywz NyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICB9KTsKICAgICAgIH0s CiAKKyAgICAgIC8vIEV4ZWN1dGVzIHNxbCBxdWVyeSAgZm9yIG1hY3JvaW4gdGhlIGVkaXRvciBp biBRdWVyeSBUb29sIG1vZGUKKyAgICAgIF9leGVjdXRlX21hY3JvX3F1ZXJ5OiBmdW5jdGlvbihl eHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0LCBtYWNyb0lkKSB7CisgICAgICAgIHZhciBz ZWxmID0gdGhpczsKKworICAgICAgICBzZWxmLmhhc19tb3JlX3Jvd3MgPSBmYWxzZTsKKyAgICAg ICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFsc2U7CisKKyAgICAgICAgJC5hamF4KHsKKyAgICAg ICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5nZXRfbWFjcm8nLCB7J21hY3JvX2lkJzogbWFj cm9JZCwgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkfSksCisgICAgICAgICAgbWV0aG9kOiAnR0VU JywKKyAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAorICAgICAgICAg IGRhdGFUeXBlOiAnanNvbicsCisgICAgICAgIH0pCisgICAgICAgICAgLmRvbmUoZnVuY3Rpb24o cmVzKSB7CisgICAgICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICAgIC8vIFJlcGxhY2Ug dGhlIHBsYWNlIGhvbGRlcgorICAgICAgICAgICAgICBsZXQgcXVlcnkgPSByZXMuc3FsLnJlcGxh Y2VBbGwoJyRTRUxFQ1RJT04kJywgc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRTZWxl Y3Rpb24oKSk7CisKKyAgICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVF1ZXJ5ID0gbmV3IEV4ZWN1 dGVRdWVyeS5FeGVjdXRlUXVlcnkoc2VsZiwgcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50 KTsKKyAgICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LnBvbGwgPSBwZ0Jyb3dzZXIub3ZlcnJpZGVf YWN0aXZpdHlfZXZlbnRfZGVjb3JhdG9yKGV4ZWN1dGVRdWVyeS5wb2xsKS5iaW5kKGV4ZWN1dGVR dWVyeSk7CisgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKHF1ZXJ5LCBleHBsYWlu X3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgIC8vIExldCBpdCBiZSBmb3Igbm93CisgICAgICAgICAgICB9CisgICAgICAgICAgfSkK KyAgICAgICAgICAuZmFpbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAvKiBmYWlsdXJlIHNob3Vs ZCBub3QgYmUgaWdub3JlZCAqLworICAgICAgICAgIH0pOworCisgICAgICB9LAorCiAgICAgICAv LyBFeGVjdXRlcyBzcWwgcXVlcnkgaW4gdGhlIGVkaXRvciBpbiBRdWVyeSBUb29sIG1vZGUKICAg ICAgIF9leGVjdXRlX3NxbF9xdWVyeTogZnVuY3Rpb24oZXhwbGFpbl9wcmVmaXgsIHNob3VsZFJl Y29ubmVjdCkgewogICAgICAgICB2YXIgc2VsZiA9IHRoaXMsIHNxbCA9ICcnOwpAQCAtMzk2OCw2 ICs0MDM0LDcgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICQoJyNidG4t ZmlsZS1tZW51LWRyb3Bkb3duJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKICAg ICAgICAgJCgnI2J0bi1maW5kJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKICAg ICAgICAgJCgnI2J0bi1maW5kLW1lbnUtZHJvcGRvd24nKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVf ZGlzYWJsZWQpOworICAgICAgICAkKCcjYnRuLW1hY3JvLWRyb3Bkb3duJykucHJvcCgnZGlzYWJs ZWQnLCBtb2RlX2Rpc2FibGVkKTsKIAogICAgICAgICBpZiAodGhpcy5pc19xdWVyeV90b29sKSB7 CiAKQEAgLTQzNzUsNiArNDQ0MiwyNCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAg ICAgICAgICB9KTsKICAgICAgIH0sCiAKKyAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBvcGVu IHRoZSBtYW5hZ2UgbWFjcm8gZGlhbG9nCisgICAgICBfbWFuYWdlX21hY3JvczogZnVuY3Rpb24o KSB7CisgICAgICAgIGxldCBzZWxmID0gdGhpczsKKworICAgICAgICAvKiBXaGVuIHNlcnZlciBp cyBkaXNjb25uZWN0ZWQgYW5kIGNvbm5lY3RlZCwgY29ubmVjdGlvbiBpcyBsb3N0LAorICAgICAg ICAgKiBUbyByZWNvbm5lY3QgcGFzcyB0cnVlCisgICAgICAgICAqLworICAgICAgICBNYWNyb0hh bmRsZXIuZGlhbG9nKHNlbGYpOworICAgICAgfSwKKworICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3 aWxsIG9wZW4gdGhlIG1hbmFnZSBtYWNybyBkaWFsb2cKKyAgICAgIF9leGVjdXRlX21hY3JvOiBm dW5jdGlvbigpIHsKKworICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVNYWNybyh0aGlz LmhhbmRsZXIpOworCisgICAgICB9LAorCisKICAgICAgIGlzUXVlcnlSdW5uaW5nOiBmdW5jdGlv bigpIHsKICAgICAgICAgcmV0dXJuIGlzX3F1ZXJ5X3J1bm5pbmc7CiAgICAgICB9LApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfbWFjcm9zLnB5IGIv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfbWFjcm9zLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uY2JjNDNlZGVjCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfbWFjcm9zLnB5CkBAIC0w LDAgKzEsMTI1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQganNvbgorCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3Rz IGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQg cGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9y dCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitpbXBvcnQgcmFuZG9tCisKKworY2xhc3MgVGVzdE1hY3Jv cyhCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCB0ZXN0IHRoZSBx dWVyeSB0b29sIHBvbGxpbmcuICIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdHZXQg YWxsIG1hY3JvcycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHVybD0nZ2V0X21hY3Jv cycsCisgICAgICAgICAgICAgbWV0aG9kPSdnZXQnCisgICAgICAgICApKSwKKyAgICAgICAgKCdT ZXQgTWFjcm9zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgdXJsPSdzZXRfbWFjcm9z JywKKyAgICAgICAgICAgICBtZXRob2Q9J3B1dCcsCisgICAgICAgICAgICAgb3BlcmF0aW9uPSd1 cGRhdGUnLAorICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAnY2hhbmdlZCc6 IFsKKyAgICAgICAgICAgICAgICAgICAgIHsnaWQnOiAxLAorICAgICAgICAgICAgICAgICAgICAg ICduYW1lJzogJ1Rlc3QgTWFjcm8gMScsCisgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6ICdT RUxFQ1QgMTsnCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg IHsnaWQnOiAyLAorICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ1Rlc3QgTWFjcm8gMics CisgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6ICdTRUxFQ1QgMjsnCisgICAgICAgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsnaWQnOiAzLAorICAgICAgICAgICAg ICAgICAgICAgICduYW1lJzogJ1Rlc3QgTWFjcm8gMycsCisgICAgICAgICAgICAgICAgICAgICAg J3NxbCc6ICdTRUxFQ1QgMzsnCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgICAgXQorICAgICAgICAgICAgIH0KKyAgICAgICAgICkpLAorICAgICAgICAoJ0NsZWFyIE1h Y3JvcycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHVybD0nc2V0X21hY3JvcycsCisg ICAgICAgICAgICAgbWV0aG9kPSdwdXQnLAorICAgICAgICAgICAgIG9wZXJhdGlvbj0nY2xlYXIn LAorICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAnY2hhbmdlZCc6IFsKKyAg ICAgICAgICAgICAgICAgICAgIHsnaWQnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICduYW1l JzogJycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6ICcnCisgICAgICAgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsnaWQnOiAyLAorICAgICAgICAgICAgICAg ICAgICAgICduYW1lJzogJycsCisgICAgICAgICAgICAgICAgICAgICAgJ3NxbCc6ICcnCisgICAg ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsnaWQnOiAzLAorICAg ICAgICAgICAgICAgICAgICAgICduYW1lJzogJycsCisgICAgICAgICAgICAgICAgICAgICAgJ3Nx bCc6ICcnCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgXQorICAg ICAgICAgICAgIH0KKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIG1lc3NhZ2VzIHJldHVybiBieSBx dWVyeSB0b29sIHBvbGxpbmcuICIiIgorICAgICAgICBkYXRhYmFzZV9pbmZvID0gcGFyZW50X25v ZGVfZGljdFsiZGF0YWJhc2UiXVstMV0KKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBkYXRhYmFz ZV9pbmZvWyJzZXJ2ZXJfaWQiXQorCisgICAgICAgIHNlbGYuZGJfaWQgPSBkYXRhYmFzZV9pbmZv WyJkYl9pZCJdCisgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJh c2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pZCkKKyAgICAgICAgaWYgbm90IGRiX2Nv blsiaW5mbyJdID09ICJEYXRhYmFzZSBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLiIpCisKKyAgICAgICAg IyBJbml0aWFsaXplIHF1ZXJ5IHRvb2wKKyAgICAgICAgc2VsZi50cmFuc19pZCA9IHN0cihyYW5k b20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFs aXplL3F1ZXJ5X3Rvb2wvezB9L3sxfS97Mn0vezN9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxm LnRyYW5zX2lkLCB1dGlscy5TRVJWRVJfR1JPVVAsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lk KQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QodXJsKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisKKyAgICBkZWYgcnVuVGVz dChzZWxmKToKKyAgICAgICAgdXJsID0gJy9zcWxlZGl0b3IvezB9L3sxfScuZm9ybWF0KHNlbGYu dXJsLCBzZWxmLnRyYW5zX2lkKQorCisgICAgICAgIGlmIHNlbGYubWV0aG9kID09ICdnZXQnOgor ICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsKQorICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgICAgICAg ICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgn KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3BvbnNlX2RhdGFbJ21hY3Jv J10pLCAyMikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucHV0KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyhzZWxmLmRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgICAgICAgICBmb3IgbSBpbiBzZWxm LmRhdGFbJ2NoYW5nZWQnXToKKyAgICAgICAgICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9nZXRf bWFjcm9zL3swfS97MX0nLmZvcm1hdChtWydpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHJhbnNfaWQpCisgICAg ICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsKQorCisgICAgICAgICAg ICAgICAgaWYgc2VsZi5vcGVyYXRpb24gPT0gJ2NsZWFyJzoKKyAgICAgICAgICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgNDEwKQorICAgICAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uu c3RhdHVzX2NvZGUsIDIwMCkKKworICAgICAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRhID0g anNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZV9kYXRhWyduYW1lJ10sIG1bJ25hbWUnXSkK KyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZV9kYXRhWydzcWwn XSwgbVsnc3FsJ10pCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgRGlzY29u bmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRh YmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9tYWNyb3MucHkgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdXRpbHMvbWFjcm9zLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uNTk3ZDVmOTk2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3V0aWxzL21hY3Jvcy5weQpAQCAtMCwwICsxLDE4OSBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiSGFuZGxlIE1hY3JvcyBmb3IgU1FMIEVkaXRvci4iIiIKKworaW1w b3J0IHNpbXBsZWpzb24gYXMganNvbgorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0 Citmcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcCwgcmVxdWVzdAorZnJvbSBmbGFza19zZWN1 cml0eSBpbXBvcnQgbG9naW5fcmVxdWlyZWQsIGN1cnJlbnRfdXNlcgorZnJvbSBwZ2FkbWluLnV0 aWxzLmFqYXggaW1wb3J0IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSxcCisgICAgbWFr ZV9qc29uX3Jlc3BvbnNlCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiLCBNYWNyb3MsIFVz ZXJNYWNyb3MKK2Zyb20gc3FsYWxjaGVteSBpbXBvcnQgYW5kXworCisKK2RlZiBnZXRfbWFjcm9z KG1hY3JvX2lkLCBqc29uX3Jlc3ApOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQg dG8gZ2V0IGFsbCB0aGUgbWFjcm9zL3NwZWNpZmljIG1hY3JvLgorICAgIDpwYXJhbSBtYWNyb19p ZDogTWFjcm8gSUQKKyAgICA6cGFyYW0ganNvbl9yZXNwOiBTZXQgVHJ1ZSB0byByZXR1cm4ganNv biByZXNwb25zZQorICAgICIiIgorICAgIGlmIG1hY3JvX2lkOgorICAgICAgICBtYWNybyA9IFVz ZXJNYWNyb3MucXVlcnkuZmlsdGVyX2J5KG1pZD1tYWNyb19pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aWQ9Y3VycmVudF91c2VyLmlkKS5maXJzdCgpCisg ICAgICAgIGlmIG1hY3JvIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoIk1hY3JvIG5vdCBmb3Vu ZC4iKQorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9eydpZCc6IG1hY3JvLm1pZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBtYWNyby5uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAnc3FsJzogbWFjcm8uc3FsfSwKKyAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICApCisgICAgZWxzZToKKyAgICAgICAgbWFjcm9zID0gZGIuc2Vz c2lvbi5xdWVyeShNYWNyb3MuaWQsIE1hY3Jvcy5hbHQsIE1hY3Jvcy5jb250cm9sLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcy5rZXksIE1hY3Jvcy5rZXlfY29kZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyTWFjcm9zLm5hbWUsIFVzZXJN YWNyb3Muc3FsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5vdXRlcmpvaW4o CisgICAgICAgICAgICBVc2VyTWFjcm9zLCBhbmRfKE1hY3Jvcy5pZCA9PSBVc2VyTWFjcm9zLm1p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlck1hY3Jvcy51aWQgPT0gY3VycmVu dF91c2VyLmlkKSkuYWxsKCkKKworICAgICAgICBkYXRhID0gW10KKworICAgICAgICBmb3IgbSBp biBtYWNyb3M6CisgICAgICAgICAgICBrZXlfbGFiZWwgPSAnQ3RybCArICcgKyBtWzNdIGlmIG1b Ml0gaXMgVHJ1ZSBlbHNlICdBbHQgKyAnICsgbVszXQorICAgICAgICAgICAgZGF0YS5hcHBlbmQo eydpZCc6IG1bMF0sICdhbHQnOiBtWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICdjb250 cm9sJzogbVsyXSwgJ2tleSc6IG1bM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2tleV9j b2RlJzogbVs0XSwgJ25hbWUnOiBtWzVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzcWwn OiBtWzZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICdrZXlfbGFiZWwnOiBrZXlfbGFiZWx9 KQorCisgICAgICAgIGlmIG5vdCBqc29uX3Jlc3A6CisgICAgICAgICAgICByZXR1cm4gZGF0YQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9eydt YWNybyc6IGRhdGF9LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKworZGVm IGdldF91c2VyX21hY3JvcygpOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8g Z2V0IGFsbCB0aGUgdXNlciBtYWNyb3MuCisgICAgIiIiCisKKyAgICBtYWNyb3MgPSBkYi5zZXNz aW9uLnF1ZXJ5KFVzZXJNYWNyb3MubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE1hY3Jvcy5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcy5hbHQsIE1h Y3Jvcy5jb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zLmtleSwg TWFjcm9zLmtleV9jb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLm91dGVyam9p bigKKyAgICAgICAgTWFjcm9zLCBVc2VyTWFjcm9zLm1pZCA9PSBNYWNyb3MuaWQpLmZpbHRlcigK KyAgICAgICAgVXNlck1hY3Jvcy51aWQgPT0gY3VycmVudF91c2VyLmlkKS5vcmRlcl9ieShVc2Vy TWFjcm9zLm5hbWUpLmFsbCgpCisKKyAgICBkYXRhID0gW10KKworICAgIGZvciBtIGluIG1hY3Jv czoKKyAgICAgICAga2V5X2xhYmVsID0gJ0N0cmwgKyAnICsgbVs0XSBpZiBtWzNdIGlzIFRydWUg ZWxzZSAnQWx0ICsgJyArIG1bNF0KKyAgICAgICAgZGF0YS5hcHBlbmQoeyduYW1lJzogbVswXSwg J2lkJzogbVsxXSwgJ2tleSc6IG1bNF0sCisgICAgICAgICAgICAgICAgICAgICAna2V5X2xhYmVs Jzoga2V5X2xhYmVsLCAnYWx0JzogMSBpZiBtWzJdIGVsc2UgMCwKKyAgICAgICAgICAgICAgICAg ICAgICdjb250cm9sJzogMSBpZiBtWzNdIGVsc2UgMCwgJ2tleV9jb2RlJzogbVs1XX0pCisKKyAg ICByZXR1cm4gZGF0YQorCisKK2RlZiBzZXRfbWFjcm9zKCk6CisgICAgIiIiCisgICAgVGhpcyBt ZXRob2QgaXMgdXNlZCB0byB1cGRhdGUgdGhlIHVzZXIgZGVmaW5lZCBtYWNyb3MuCisgICAgIiIi CisKKyAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9h ZHMoCisgICAgICAgIHJlcXVlc3QuZGF0YSwgZW5jb2Rpbmc9J3V0Zi04JworICAgICkKKworICAg IGlmICdjaGFuZ2VkJyBub3QgaW4gZGF0YToKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgIGluZm89Z2V0dGV4dCgn Tm90aGluZyB0byB1cGRhdGUuJykKKyAgICAgICAgKQorCisgICAgZm9yIG0gaW4gZGF0YVsnY2hh bmdlZCddOgorICAgICAgICBpZiBtWydpZCddOgorICAgICAgICAgICAgbWFjcm8gPSBVc2VyTWFj cm9zLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAgICAgICAgICB1aWQ9Y3VycmVudF91c2VyLmlk LAorICAgICAgICAgICAgICAgIG1pZD1tWydpZCddKS5maXJzdCgpCisgICAgICAgICAgICBpZiBt YWNybzoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHVwZGF0ZV9tYWNybyhtLCBtYWNy bykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBjcmVh dGVfbWFjcm8obSkKKworICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9 NDEwLCBzdWNjZXNzPTAsIGVycm9ybXNnPW1zZworICAgICAgICAgICAgICAgICkKKyAgICByZXR1 cm4gYWpheF9yZXNwb25zZShzdGF0dXM9MjAwKQorCisKK2RlZiBjcmVhdGVfbWFjcm8obWFjcm8p OgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIHRoZSB1c2VyIGRl ZmluZWQgbWFjcm9zLgorICAgIDpwYXJhbSBtYWNybzogbWFjcm8KKyAgICAiIiIKKworICAgIHJl cXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICduYW1lJywKKyAgICAgICAgJ3NxbCcKKyAgICBdCisg ICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICBpZiBhcmcgbm90IGluIG1hY3Jv OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICJD b3VsZCBub3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyICh7fSkuIikuZm9ybWF0KGFyZykK KworICAgIHRyeToKKyAgICAgICAgbmV3X21hY3JvID0gVXNlck1hY3JvcygKKyAgICAgICAgICAg IHVpZD1jdXJyZW50X3VzZXIuaWQsCisgICAgICAgICAgICBtaWQ9bWFjcm9bJ2lkJ10sCisgICAg ICAgICAgICBuYW1lPW1hY3JvWyduYW1lJ10sCisgICAgICAgICAgICBzcWw9bWFjcm9bJ3NxbCdd CisgICAgICAgICkKKyAgICAgICAgZGIuc2Vzc2lvbi5hZGQobmV3X21hY3JvKQorICAgICAgICBk Yi5zZXNzaW9uLmNvbW1pdCgpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBk Yi5zZXNzaW9uLnJvbGxiYWNrKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBzdHIoZSkKKworICAg IHJldHVybiBUcnVlLCBOb25lCisKKworZGVmIHVwZGF0ZV9tYWNybyhkYXRhLCBtYWNybyk6Cisg ICAgIiIiCisgICAgVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjbGVhci91cGRhdGUgdGhlIHVzZXIg ZGVmaW5lZCBtYWNyb3MuCisgICAgOnBhcmFtIGRhdGE6IHVwZGF0ZWQgbWFjcm8gZGF0YQorICAg IDpwYXJhbSBtYWNybzogbWFjcm8KKyAgICAiIiIKKworICAgIG5hbWUgPSBnZXRhdHRyKGRhdGEs ICduYW1lJywgTm9uZSkKKyAgICBzcWwgPSBnZXRhdHRyKGRhdGEsICdzcWwnLCBOb25lKQorCisg ICAgaWYgbmFtZSBvciBzcWwgYW5kIG1hY3JvLnNxbCBhbmQgbmFtZSBpcyBOb25lOgorICAgICAg ICByZXR1cm4gRmFsc2UsIGdldHRleHQoCisgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGhl IHJlcXVpcmVkIHBhcmFtZXRlciAobmFtZSkuIikKKyAgICBlbGlmIG5hbWUgb3Igc3FsIGFuZCBt YWNyby5uYW1lIGFuZCBzcWwgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0 KAorICAgICAgICAgICAgIkNvdWxkIG5vdCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKHNx bCkuIikKKworICAgIHRyeToKKyAgICAgICAgaWYgbmFtZSBvciBzcWw6CisgICAgICAgICAgICBp ZiBuYW1lOgorICAgICAgICAgICAgICAgIG1hY3JvLm5hbWUgPSBuYW1lCisgICAgICAgICAgICBp ZiBzcWw6CisgICAgICAgICAgICAgICAgbWFjcm8uc3FsID0gc3FsCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBkYi5zZXNzaW9uLmRlbGV0ZShtYWNybykKKworICAgICAgICBkYi5zZXNzaW9u LmNvbW1pdCgpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBkYi5zZXNzaW9u LnJvbGxiYWNrKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBzdHIoZSkKKworICAgIHJldHVybiBU cnVlLCBOb25lCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRv ci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv c3FsZWRpdG9yL2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzCmluZGV4IGM4NDE1YTA4OS4uMDQz NjViZjQ4IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9r ZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NxbGVkaXRvci9rZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTgsNyArMTgsOCBAQCBk ZXNjcmliZSgndGhlIGtleWJvYXJkIHNob3J0Y3V0cycsICgpID0+IHsKICAgICBGN19LRVkgPSAx MTgsCiAgICAgRjhfS0VZID0gMTE5LAogICAgIFBFUklPRF9LRVkgPSAxOTAsCi0gICAgRldEX1NM QVNIX0tFWSA9IDE5MTsKKyAgICBGV0RfU0xBU0hfS0VZID0gMTkxLAorICAgIEMxX0tFWSA9IDQ5 OwogCiAgIGxldCBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBldmVudCwgcXVlcnlUb29sQWN0aW9u c1NweTsKICAgYmVmb3JlRWFjaCgoKSA9PiB7CkBAIC0xMjAsNiArMTIxLDE5IEBAIGRlc2NyaWJl KCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewogICAgICAgfSwKICAgICB9OwogCisg ICAgc3FsRWRpdG9yQ29udHJvbGxlclNweS5tYWNyb3MgPSBbCisgICAgICB7CisgICAgICAgIGFs dDogZmFsc2UsCisgICAgICAgIGNvbnRyb2w6IHRydWUsCisgICAgICAgIGlkOiAxLAorICAgICAg ICBrZXk6ICcxJywKKyAgICAgICAga2V5X2NvZGU6IEMxX0tFWSwKKyAgICAgICAga2V5X2xhYmVs OiAnQ3RybCArIDEnLAorICAgICAgICBuYW1lOiAnQzEnLAorICAgICAgICBzcWw6ICdTZWxlY3Qg MTsnLAorICAgICAgfSwKKyAgICBdOworCiAgICAgcXVlcnlUb29sQWN0aW9uc1NweSA9IGphc21p bmUuY3JlYXRlU3B5T2JqKHF1ZXJ5VG9vbEFjdGlvbnMsIFsKICAgICAgICdleHBsYWluQW5hbHl6 ZScsCiAgICAgICAnZXhwbGFpbicsCkBAIC0xMzEsNiArMTQ1LDcgQEAgZGVzY3JpYmUoJ3RoZSBr ZXlib2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgICAgICAnZXhlY3V0ZUNvbW1pdCcsCiAgICAg ICAnZXhlY3V0ZVJvbGxiYWNrJywKICAgICAgICdzYXZlRGF0YUNoYW5nZXMnLAorICAgICAgJ2V4 ZWN1dGVNYWNybycsCiAgICAgXSk7CiAgIH0pOwogCkBAIC02NjcsNiArNjgyLDQ3IEBAIGRlc2Ny aWJlKCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewogICAgIH0pOwogICB9KTsKIAor ICBkZXNjcmliZSgnTWFjcm8gQ3RybCArIDEnLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJ3doZW4g dGhlcmUgaXMgbm90IGEgcXVlcnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4geworICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGV2ZW50LndoaWNoID0gQzFfS0VZOworICAgICAgICBl dmVudC5hbHRLZXkgPSBmYWxzZTsKKyAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSBmYWxzZTsKKyAg ICAgICAgZXZlbnQuY3RybEtleSA9IHRydWU7CisKKyAgICAgICAga2V5Ym9hcmRTaG9ydGN1dHMu cHJvY2Vzc0V2ZW50UXVlcnlUb29sKAorICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHks IHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50CisgICAgICAgICk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ3Nob3VsZCBleGVjdXRlIHRoZSBtYWNybycsICgpID0+IHsKKyAgICAgICAgZXhwZWN0 KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuZXhlY3V0ZU1hY3JvKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChz cWxFZGl0b3JDb250cm9sbGVyU3B5LAorICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHku bWFjcm9zWzBdLmlkKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2hvdWxkIHN0b3AgZXZlbnQg cHJvcGFnYXRpb24nLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChldmVudC5wcmV2ZW50RGVmYXVs dCkudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmli ZSgnd2hlbiB0aGUgcXVlcnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4geworICAgICAgaXQo J2RvZXMgbm90aGluZycsICgpID0+IHsKKyAgICAgICAgZXZlbnQua2V5Q29kZSA9IEMxX0tFWTsK KyAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFsc2U7CisgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID0g ZmFsc2U7CisgICAgICAgIGV2ZW50LmN0cmxLZXkgPSB0cnVlOworCisgICAgICAgIHNxbEVkaXRv ckNvbnRyb2xsZXJTcHkuaXNRdWVyeVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOworCisg ICAgICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKKyAgICAgICAg ICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAorICAg ICAgICApOworCisgICAgICAgIGV4cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LmV4ZWN1dGVNYWNy bykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKKwog ICBmdW5jdGlvbiBleHBlY3RFdmVudFByb3BhZ2F0aW9uVG9TdG9wKCkgewogICAgIGRlc2NyaWJl KCdzdG9wcyBhbGwgZXZlbnQgcHJvcG9nYXRpb24nLCAoKSA9PiB7CiAK --0000000000003ec7a405b05bb9c0--