Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f3O1G-0003Q9-C5 for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 Apr 2018 15:38:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f3O1E-0003lX-IW for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 Apr 2018 15:38:44 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1f3O1D-0003iT-R3 for pgadmin-hackers@lists.postgresql.org; Tue, 03 Apr 2018 15:38:44 +0000 Received: from mail-oi0-x22c.google.com ([2607:f8b0:4003:c06::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1f3O17-0002Z5-Bx for pgadmin-hackers@postgresql.org; Tue, 03 Apr 2018 15:38:42 +0000 Received: by mail-oi0-x22c.google.com with SMTP id q71-v6so16368291oic.6 for ; Tue, 03 Apr 2018 08:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=CSpUkf48tA+fSIq0xL4epY0rsifP38Mda1vkPfoQ8zQ=; b=h0SVJgkm22nykIY7VPpQ4CVo+rgGsgWLsbifLYbslZ8FZowlOu9ms3RgFDM9gk0J9+ ZbmP7H9HFgWACkBrV6AHI5wbf0FQVuOYq9uZ7+yYO9LfXjsXZw57VDvZ0Jsss6fhBfOJ gOY5ruhmO83eevcZHOwJV9UAfbj/kxJNn/Q9KO9B90BrChWfg93xznXEV7KI4QV8XlRR KsMw4h6yK5IAsQ0rZuUEsXVCq9FPpgUkrSrfj9+AWrmLHyu6QHbarqznZ+GJMxMA8qwq OgUWDwDIKWNBsIwTjENdO9MB9KgxRaBc7Buaqy+wKepD9pLhxGXLr+b6CTt7zoFTqlX/ RGwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=CSpUkf48tA+fSIq0xL4epY0rsifP38Mda1vkPfoQ8zQ=; b=AmMlBburAOCispGs6K9c216FZQW40rCzQ4hj4/QeGOGVDuRMNw/w6wpbZ/tHtHSXwD cexJVTGWpc8mxmCEFgaZfNjg6RM+TsY2Xi6IYx2FpcYitDJGzHY9Dvaew23RkhharaE0 3PFhq5PjQj1a/To1aJqdb/0URXGhR+fIzsNz8VzEMtNEUM2w8sDAnh6siChcVUWJ6iXm iNIcfLGd/8Eyvw7h6SLqJD7I2Uur3j6/KUx19y7kbzD6ttrmJaPnfajtqtR752NldNAk OXXmCaqhU7H58XB+SVR1oA/stzlVGKRsbaMmf0DGqP3HDr6uNHjYzQxitLIgNBEernfr 1s2w== X-Gm-Message-State: ALQs6tBiRQmO8DCp2g+fMGvMspIFKi2fX/jFITfiMg8onVtV39+Sjm6g rqsHoCGWkms7BYgSOBYCnxSepAbHCby2kjKl+Wpdjcb8 X-Google-Smtp-Source: AIpwx4+o+gZb0fWPZVuTFAVudPD+0PUTpo7joT7Fz07ah4UItHWEyr8F5nomqjDGxh0/548JnkLuaH62D4Q/HTjeA68= X-Received: by 2002:aca:c60c:: with SMTP id w12-v6mr8222349oif.192.1522769916298; Tue, 03 Apr 2018 08:38:36 -0700 (PDT) MIME-Version: 1.0 Received: by 10.138.6.138 with HTTP; Tue, 3 Apr 2018 08:38:15 -0700 (PDT) In-Reply-To: References: From: Murtuza Zabuawala Date: Tue, 3 Apr 2018 21:08:15 +0530 Message-ID: Subject: Re: [pgAdmin4][RM#3235] Code refactoring in Query tool To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000efd0790568f37fd7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000efd0790568f37fd7 Content-Type: multipart/alternative; boundary="000000000000efd0750568f37fd5" --000000000000efd0750568f37fd5 Content-Type: text/plain; charset="UTF-8" Hi Dave, PFA updated patch, I've renamed it to query_tool_http_error_handler.js & query_tool_http_error_handler_spec.js respectively. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Tue, Apr 3, 2018 at 7:43 PM, Dave Page wrote: > HI > > On Tue, Apr 3, 2018 at 12:27 PM, Murtuza Zabuawala enterprisedb.com> wrote: > >> Hi, >> >> PFA patch to extract the common code from query tool to handle ajax >> errors & connection handling, Also added unit tests around extracted code. >> > > Looks good to me, except, I wonder if we should rename > is_new_transaction_required.js/is_new_transaction_required_spec.js to > something a little more generic; maybe conn_tx_handler_funcs.js? Not sure I > like that though. > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --000000000000efd0750568f37fd5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

PFA updated patch, I've renamed it to=C2=A0query_tool_http_e= rror_handler.js &=C2=A0query_tool_http_error_handler_spec.js respective= ly.=C2=A0

=
--
Regards,
Murtuza Zabuawala
Enterpri= seDB:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL = Company

=

On Tue, Apr 3, 2018 at 7:43 PM, Dave Page <= dpage@pgadmin.org> wrote:
<= div dir=3D"ltr">HI

On Tue, Apr 3, 2018 at 12:27 PM, Murtuza Zabuawala &= lt;= murtuza.zabuawala@enterprisedb.com> wrote:
Hi,

PFA patch to extract the common code from query tool to handle = ajax errors & connection handling, Also added unit tests around extract= ed code.=C2=A0

Looks good to me= , except, I wonder if we should rename is_new_transaction_required.js/= is_new_transaction_required_spec.js to somet= hing a little more generic; maybe conn_tx_handler_funcs.js? Not sure I like= that though.


--
Dave Page
Blog:= http://pgsnake.b= logspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com=
The Enterprise PostgreSQL Company

--000000000000efd0750568f37fd5-- --000000000000efd0790568f37fd7 Content-Type: application/octet-stream; name="RM_3235_v1.diff" Content-Disposition: attachment; filename="RM_3235_v1.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jfjtuc900 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVy eS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcwpp bmRleCA5YzM2ZjI4Li44ZTIwMWZjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Nx bGVkaXRvci9leGVjdXRlX3F1ZXJ5LmpzCkBAIC0xMSw3ICsxMSw3IEBAIGltcG9ydCBnZXR0ZXh0 IGZyb20gJy4uL2dldHRleHQnOwogaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKIGltcG9ydCB1cmxf Zm9yIGZyb20gJy4uL3VybF9mb3InOwogaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJzsKLWltcG9y dCAqIGFzIHRyYW5zYWN0aW9uIGZyb20gJy4vaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkJzsK K2ltcG9ydCAqIGFzIGh0dHBFcnJvckhhbmRsZXIgZnJvbSAnLi9xdWVyeV90b29sX2h0dHBfZXJy b3JfaGFuZGxlcic7CiAKIGNsYXNzIExvYWRpbmdTY3JlZW4gewogICBjb25zdHJ1Y3RvcihzcWxF ZGl0b3IpIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCBjbGFzcyBFeGVjdXRlUXVlcnkgewogICAgICAg dGhpcy51c2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKICAgICB9CiAKLSAgICBpZiAodHJhbnNh Y3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGh0dHBNZXNzYWdlLnJlc3BvbnNlKSkg eworICAgIGlmIChodHRwRXJyb3JIYW5kbGVyLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCho dHRwTWVzc2FnZS5yZXNwb25zZSkpIHsKICAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LnNhdmVf c3RhdGUoJ2V4ZWN1dGUnLCBbdGhpcy5leHBsYWluUGxhbl0pOwogICAgICAgdGhpcy5zcWxTZXJ2 ZXJPYmplY3QuaW5pdF90cmFuc2FjdGlvbigpOwogICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkLmpzIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMDk2MTEuLjAwMDAwMDAKLS0t IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVx dWlyZWQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLwotCi1leHBvcnQgZnVuY3Rpb24gaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVp cmVkKHhocikgewotICAvKiBJZiByZXNwb25zZUpTT04gaXMgdW5kZWZpbmVkIHRoZW4gaXQgY291 bGQgYmUgb2JqZWN0IG9mCi0gICAqIGF4aW9zKFByb21pc2UgSFRUUCkgcmVzcG9uc2UsIHNvIHdl IHNob3VsZCBjaGVjayBhY2NvcmRpbmdseS4KLSAgICovCi0gIGlmICh4aHIucmVzcG9uc2VKU09O ID09PSB1bmRlZmluZWQgJiYgeGhyLmRhdGEgIT09IHVuZGVmaW5lZCkgewotICAgIHJldHVybiB4 aHIuc3RhdHVzID09PSA0MDQgJiYgeGhyLmRhdGEgJiYKLSAgICAgICAgICAgICAgeGhyLmRhdGEu aW5mbyAmJgotICAgICAgICAgICAgICB4aHIuZGF0YS5pbmZvID09PSAnREFUQUdSSURfVFJBTlNB Q1RJT05fUkVRVUlSRUQnOwotICB9Ci0KLSAgcmV0dXJuIHhoci5zdGF0dXMgPT09IDQwNCAmJiB4 aHIucmVzcG9uc2VKU09OICYmCi0gICAgeGhyLnJlc3BvbnNlSlNPTi5pbmZvICYmCi0gICAgeGhy LnJlc3BvbnNlSlNPTi5pbmZvID09PSAnREFUQUdSSURfVFJBTlNBQ1RJT05fUkVRVUlSRUQnOwot fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29s X2h0dHBfZXJyb3JfaGFuZGxlci5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3Iv cXVlcnlfdG9vbF9odHRwX2Vycm9yX2hhbmRsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjViZDJhOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9odHRwX2Vycm9yX2hhbmRsZXIuanMKQEAgLTAsMCAr MSw3NiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBnZXR0ZXh0IGZy b20gJ3NvdXJjZXMvZ2V0dGV4dCc7CisKK2V4cG9ydCBmdW5jdGlvbiBpc19uZXdfdHJhbnNhY3Rp b25fcmVxdWlyZWQoeGhyKSB7CisgIC8qIElmIHJlc3BvbnNlSlNPTiBpcyB1bmRlZmluZWQgdGhl biBpdCBjb3VsZCBiZSBvYmplY3Qgb2YKKyAgICogYXhpb3MoUHJvbWlzZSBIVFRQKSByZXNwb25z ZSwgc28gd2Ugc2hvdWxkIGNoZWNrIGFjY29yZGluZ2x5LgorICAgKi8KKyAgaWYgKHhoci5yZXNw b25zZUpTT04gPT09IHVuZGVmaW5lZCAmJiB4aHIuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CisgICAg cmV0dXJuIHhoci5zdGF0dXMgPT09IDQwNCAmJiB4aHIuZGF0YSAmJgorICAgICAgICAgICAgICB4 aHIuZGF0YS5pbmZvICYmCisgICAgICAgICAgICAgIHhoci5kYXRhLmluZm8gPT09ICdEQVRBR1JJ RF9UUkFOU0FDVElPTl9SRVFVSVJFRCc7CisgIH0KKworICByZXR1cm4geGhyLnN0YXR1cyA9PT0g NDA0ICYmIHhoci5yZXNwb25zZUpTT04gJiYKKyAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gJiYK KyAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gPT09ICdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFV SVJFRCc7Cit9CisKKy8vIEFsbG93IHVzIHRvIHJlZGlyZWN0IHRvIGxvZ2luIGRpYWxvZyBhbmQg aWYgcmVxdWlyZWQgdGhlbiByZS1pbml0aWF0ZSB0aGUgdHJhbnNhY3Rpb24KK2V4cG9ydCBmdW5j dGlvbiBoYW5kbGVMb2dpblJlcXVpcmVkQW5kVHJhbnNhY3Rpb25SZXF1aXJlZCgKKyAgcGdBZG1p biwgaGFuZGxlciwgZXhjZXB0aW9uLCBzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzLCBjaGVj a1RyYW5zYWN0aW9uCispIHsKKyAgc3RhdGVQYXJhbWV0ZXJzID0gc3RhdGVQYXJhbWV0ZXJzICYm IHN0YXRlUGFyYW1ldGVycy5sZW5ndGggPiAwID8gc3RhdGVQYXJhbWV0ZXJzIDogW107CisgIGlm IChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGV4 Y2VwdGlvbikpIHsKKyAgICBpZiAoc3RhdGVUb1NhdmUpIHsKKyAgICAgIGhhbmRsZXIuc2F2ZV9z dGF0ZShzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzKTsKKyAgICB9CisgICAgcmV0dXJuIHBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKKyAgfQorCisgIGlmKGNo ZWNrVHJhbnNhY3Rpb24gJiYgaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGV4Y2VwdGlvbikp IHsKKyAgICBpZiAoc3RhdGVUb1NhdmUpIHsKKyAgICAgIGhhbmRsZXIuc2F2ZV9zdGF0ZShzdGF0 ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzKTsKKyAgICB9CisgICAgcmV0dXJuIGhhbmRsZXIuaW5p dF90cmFuc2FjdGlvbigpOworICB9Cit9CisKKy8vIEFsbG93IHVzIHRvIGhhbmRsZSB0aGUgQUpB WCBlcnJvciBmcm9tIFF1ZXJ5IHRvb2wKK2V4cG9ydCBmdW5jdGlvbiBoYW5kbGVRdWVyeVRvb2xB amF4RXJyb3IoCisgIHBnQWRtaW4sIGhhbmRsZXIsIGV4Y2VwdGlvbiwgc3RhdGVUb1NhdmUsIHN0 YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgorKSB7CisgIGlmIChleGNlcHRpb24ucmVh ZHlTdGF0ZSA9PSAwKSB7CisgICAgcmV0dXJuIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhl IHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4n KTsKKyAgfQorCisgIGhhbmRsZUxvZ2luUmVxdWlyZWRBbmRUcmFuc2FjdGlvblJlcXVpcmVkKAor ICAgIHBnQWRtaW4sIGhhbmRsZXIsIGV4Y2VwdGlvbiwgc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1l dGVycywgY2hlY2tUcmFuc2FjdGlvbgorICApOworCisgIGxldCBtc2cgPSBleGNlcHRpb24ucmVz cG9uc2VUZXh0OworICBpZiAoZXhjZXB0aW9uLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsK KyAgICBpZihleGNlcHRpb24ucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewor ICAgICAgbXNnID0gZXhjZXB0aW9uLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKKyAgICB9CisKKyAg ICBpZihleGNlcHRpb24uc3RhdHVzID09IDUwMyAmJiBleGNlcHRpb24ucmVzcG9uc2VKU09OLmlu Zm8gIT0gdW5kZWZpbmVkICYmCisgICAgICAgIGV4Y2VwdGlvbi5yZXNwb25zZUpTT04uaW5mbyA9 PSAnQ09OTkVDVElPTl9MT1NUJykgeworICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg ICAgICAgaWYgKHN0YXRlVG9TYXZlKSB7CisgICAgICAgICAgaGFuZGxlci5zYXZlX3N0YXRlKHN0 YXRlVG9TYXZlLCBzdGF0ZVBhcmFtZXRlcnMpOworICAgICAgICB9CisgICAgICAgIGhhbmRsZXIu aGFuZGxlX2Nvbm5lY3Rpb25fbG9zdChmYWxzZSwgZXhjZXB0aW9uKTsKKyAgICAgIH0pOworICAg IH0KKyAgfQorCisgIHJldHVybiBtc2c7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4IDA0MDlhODcuLjJjMDEwNzUgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9y LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9y LmpzCkBAIC0xMyw3ICsxMyw3IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAnc291 cmNlcy9zZWxlY3Rpb24vc2V0X3N0YWdlZF9yb3dzJywKICAgJ3NvdXJjZXMvc3FsZWRpdG9yX3V0 aWxzJywKICAgJ3NvdXJjZXMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnknLAotICAnc291cmNlcy9z cWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkJywKKyAgJ3NvdXJjZXMvc3FsZWRp dG9yL3F1ZXJ5X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyJywKICAgJ3NvdXJjZXMvaGlzdG9yeS9p bmRleC5qcycsCiAgICdzb3VyY2VzLy4uL2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnknLAogICAn cmVhY3QnLCAncmVhY3QtZG9tJywKQEAgLTMzLDcgKzMzLDcgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiBdLCBmdW5jdGlvbigKICAgYmFiZWxQb2xseWZpbGwsIGdldHRleHQsIHVybF9m b3IsICQsIF8sIFMsIGFsZXJ0aWZ5LCBwZ0FkbWluLCBCYWNrYm9uZSwgY29kZW1pcnJvciwKICAg cGdFeHBsYWluLCBHcmlkU2VsZWN0b3IsIEFjdGl2ZUNlbGxDYXB0dXJlLCBjbGlwYm9hcmQsIGNv cHlEYXRhLCBSYW5nZVNlbGVjdGlvbkhlbHBlciwgaGFuZGxlUXVlcnlPdXRwdXRLZXlib2FyZEV2 ZW50LAotICBYQ2VsbFNlbGVjdGlvbk1vZGVsLCBzZXRTdGFnZWRSb3dzLCBTcWxFZGl0b3JVdGls cywgRXhlY3V0ZVF1ZXJ5LCB0cmFuc2FjdGlvbiwKKyAgWENlbGxTZWxlY3Rpb25Nb2RlbCwgc2V0 U3RhZ2VkUm93cywgU3FsRWRpdG9yVXRpbHMsIEV4ZWN1dGVRdWVyeSwgaHR0cEVycm9ySGFuZGxl ciwKICAgSGlzdG9yeUJ1bmRsZSwgcXVlcnlIaXN0b3J5LCBSZWFjdCwgUmVhY3RET00sCiAgIGtl eWJvYXJkU2hvcnRjdXRzLCBxdWVyeVRvb2xBY3Rpb25zLCBEYXRhZ3JpZCwgbW9kaWZ5QW5pbWF0 aW9uLAogICBjYWxjdWxhdGVRdWVyeVJ1blRpbWUsIGNhbGxSZW5kZXJBZnRlclBvbGwpIHsKQEAg LTQ4NiwxMiArNDg2LDkgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIGVycm9yOmZ1bmN0aW9u KGUpIHsKLSAgICAgICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50 LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIHBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3Jl cXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0X3RyYW5zYWN0 aW9uKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBodHRwRXJy b3JIYW5kbGVyLmhhbmRsZUxvZ2luUmVxdWlyZWRBbmRUcmFuc2FjdGlvblJlcXVpcmVkKAorICAg ICAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgbnVsbCwgbnVsbCwgbnVsbAorICAgICAg ICAgICAgICAgICk7CiAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB9KTsKICAgICAgICAg ICB9LmJpbmQoY3R4KSwKQEAgLTExNDIsMTYgKzExMzksMTEgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiAgICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7CiAgICAg ICAgICAgICBjYigpOwogICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRlID09 IDApIHsKLSAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLAotICAgICAg ICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykKLSAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQogCi0gICAgICAgICAgaWYgKHBnQWRtaW4u QnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAg ICAgICAgIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAg ICAgICB9CisgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlU b29sQWpheEVycm9yKAorICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgbnVsbCwgbnVsbCwg ZmFsc2UKKyAgICAgICAgICApOworICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZh bHNlLCBtc2cpOwogICAgICAgICB9LAogICAgICAgfSk7CiAgICAgfSwKQEAgLTE5MzUsMTggKzE5 MjcsMTIgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfQogICAgICAg ICB9KQogICAgICAgICAuZmFpbChmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICBpZiAocGdBZG1p bi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZCh4aHIpKSB7Ci0g ICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0g ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmKHhoci5yZXNwb25zZUpTT04gJiYKLSAg ICAgICAgICAgICAgICB4aHIucmVzcG9uc2VKU09OLnJlc3VsdCkgewotICAgICAgICAgICAgICBh bGVydGlmeS5kbGdHZXRTZXJ2ZXJQYXNzKGdldHRleHQoJ0Nvbm5lY3QgdG8gU2VydmVyJyksCi0g ICAgICAgICAgICAgICAgeGhyLnJlc3BvbnNlSlNPTi5yZXN1bHQpOwotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgYWxlcnRpZnkuZGxnR2V0U2VydmVyUGFzcyhnZXR0ZXh0KCdD b25uZWN0IHRvIFNlcnZlcicpLAotICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZVRleHQpOwot ICAgICAgICAgICAgfQotICAgICAgICAgIH0KKyAgICAgICAgICBsZXQgbXNnID0gaHR0cEVycm9y SGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgICBwZ0FkbWluLCBz ZWxmLCB4aHIsIG51bGwsIG51bGwsIGZhbHNlCisgICAgICAgICAgKTsKKyAgICAgICAgICBhbGVy dGlmeS5kbGdHZXRTZXJ2ZXJQYXNzKAorICAgICAgICAgICAgZ2V0dGV4dCgnQ29ubmVjdCB0byBT ZXJ2ZXInKSwgbXNnCisgICAgICAgICAgKTsKICAgICAgICAgfSk7CiAgICAgICB9LAogICAgICAg LyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZSBvZiBTUUxFZGl0b3JW aWV3LApAQCAtMjAwNSwyMiArMTk5MSwxMyBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsK ICAgICAgICAgICAgICAgICBzZWxmLmluaXRfZXZlbnRzKCk7CiAgICAgICAgICAgICAgIH0sCiAg ICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcXgpIHsKLSAgICAgICAgICAgICAgICB2YXIg bXNnID0gJyc7CisgICAgICAgICAgICAgICAgbGV0IG1zZyA9ICcnOwogICAgICAgICAgICAgICAg IHNlbGYuaW5pdF9ldmVudHMoKTsKIAotICAgICAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dz ZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGpxeCkpIHsKLSAgICAgICAg ICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2lu KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1zZyA9IGh0dHBFcnJvckhh bmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICAgICAgcGdBZG1p biwgc2VsZiwganF4LCBudWxsLCBudWxsLCBmYWxzZQorICAgICAgICAgICAgICAgICk7CiAKLSAg ICAgICAgICAgICAgICAvKiBFcnJvciBmcm9tIHRoZSBzZXJ2ZXIgKi8KLSAgICAgICAgICAgICAg ICBpZiAoanF4LnN0YXR1cyA9PSA0MTAgfHwganF4LnN0YXR1cyA9PSA1MDApIHsKLSAgICAgICAg ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gJC5wYXJzZUpT T04oanF4LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGRhdGEuZXJy b3Jtc2c7Ci0gICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAg ICAgIG1zZyA9IGpxeC5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5yZXBvcnRfZXJyb3IoCiAgICAg ICAgICAgICAgICAgICBTKGdldHRleHQoJ0Vycm9yIGZldGNoaW5nIFNRTCBmb3Igc2NyaXB0OiAl cy4nKSkuc3ByaW50Zihtc2cpLnZhbHVlKCkKICAgICAgICAgICAgICAgICApOwpAQCAtMjE4OSwz NyArMjE2Niw5IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0sCiAg ICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcign cGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAgICAgICAgIGlmIChl LnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9tc2dfaGlzdG9y eShmYWxzZSwKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBz ZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykK LSAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot ICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9n aW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfcnVuX3F1 ZXJ5JywgW10pOwotICAgICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu cGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9u LmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNh dmVfc3RhdGUoJ19ydW5fcXVlcnknLCBbXSk7Ci0gICAgICAgICAgICAgIHNlbGYuaW5pdF90cmFu c2FjdGlvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNw b25zZVRleHQ7Ci0gICAgICAgICAgICBpZiAoZS5yZXNwb25zZUpTT04gIT0gdW5kZWZpbmVkKSB7 Ci0gICAgICAgICAgICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkg ewotICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAg ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9u c2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICBlLnJlc3BvbnNl SlNPTi5pbmZvID09ICdDT05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGlt ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3J1 bl9xdWVyeScsIFtdKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25f bG9zdChmYWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIH0KLQorICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFu ZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAn X3J1bl9xdWVyeScsIG51bGwsIHRydWUKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgICBzZWxm LnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwgbXNnKTsKICAgICAgICAgICB9LAogICAgICAgICB9 KTsKQEAgLTI4MzAsMzggKzI3NzksMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBlcnJvcjogZnVuY3Rp b24oZSkgewotICAgICAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRlID09IDApIHsKLSAgICAgICAg ICAgICAgICBzZWxmLnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwKLSAgICAgICAgICAgICAgICAg IGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0 byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICk7Ci0gICAg ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgaWYg KHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkp IHsKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zYXZlJywgW3ZpZXcsIGNvbnRy b2xsZXIsIHNhdmVfYXNdKTsKLSAgICAgICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuVXNlck1h bmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBp Zih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAg ICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zYXZlJywgW3ZpZXcsIGNvbnRyb2xsZXIsIHNhdmVf YXNdKTsKLSAgICAgICAgICAgICAgICBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAg ICAgICAgfQotCi0gICAgICAgICAgICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAg ICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAg ICAgIGlmKGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewotICAgICAgICAg ICAgICAgICAgbXNnID0gZS5yZXNwb25zZUpTT04uZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgICAg fQotCi0gICAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09O LmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09O LmluZm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsKLSAgICAgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3Nh dmUnLCBbdmlldywgY29udHJvbGxlciwgc2F2ZV9hc10pOwotICAgICAgICAgICAgICAgICAgICBz ZWxmLmhhbmRsZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGUpOwotICAgICAgICAgICAgICAgICAg fSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAg bGV0IHN0YXRlUGFyYW1zID0gW3ZpZXcsIGNvbnRyb2xsZXIsIHNhdmVfYXNdOworICAgICAgICAg ICAgICBsZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3Io CisgICAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19zYXZlJywgc3RhdGVQYXJhbXMs IHRydWUKKyAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgc2VsZi51cGRhdGVfbXNnX2hp c3RvcnkoZmFsc2UsIG1zZyk7CiAgICAgICAgICAgICB9LAogICAgICAgICAgIH0pOwpAQCAtMzAw NywxMyArMjkyOCwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICB9 LAogICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBzZWxmLnRyaWdn ZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICBp ZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChl KSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zZWxlY3RfZmlsZV9oYW5kbGVy JywgW19lXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFn ZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBlcnJt c2cgPSAkLnBhcnNlSlNPTihlLnJlc3BvbnNlVGV4dCkuZXJyb3Jtc2c7Ci0gICAgICAgICAgICBh bGVydGlmeS5lcnJvcihlcnJtc2cpOworICAgICAgICAgICAgbGV0IHN0YXRlUGFyYW1zID0gW19l XTsKKyAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9v bEFqYXhFcnJvcigKKyAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19zZWxlY3RfZmls ZV9oYW5kbGVyJywgc3RhdGVQYXJhbXMsIGZhbHNlCisgICAgICAgICAgICApOworICAgICAgICAg ICAgYWxlcnRpZnkuZXJyb3IobXNnKTsKICAgICAgICAgICAgIC8vIGhpZGUgY3Vyc29yCiAgICAg ICAgICAgICAkYnVzeV9pY29uX2Rpdi5yZW1vdmVDbGFzcygnc2hvd19wcm9ncmVzcycpOwogICAg ICAgICAgIH0sCkBAIC0zMDU5LDE3ICsyOTc4LDExIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAg ICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUn KTsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdh X2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3Nh dmVfZmlsZV9oYW5kbGVyJywgW19lXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJy b3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg ICAgICAgIHZhciBlcnJtc2cgPSAkLnBhcnNlSlNPTihlLnJlc3BvbnNlVGV4dCkuZXJyb3Jtc2c7 Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KAotICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAg ICAgICAgICAgICAgICBhbGVydGlmeS5lcnJvcihlcnJtc2cpOwotICAgICAgICAgICAgICB9LCAx MAorICAgICAgICAgICAgbGV0IHN0YXRlUGFyYW1zID0gW19lXTsKKyAgICAgICAgICAgIGxldCBt c2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAg ICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19zYXZlX2ZpbGVfaGFuZGxlcicsIHN0YXRlUGFyYW1z LCBmYWxzZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmVycm9yKG1zZyk7 CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApAQCAtMzE2NSwzNiArMzA3OCw5 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIH0sCiAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1z cWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLQotICAgICAgICAgICAgaWYgKHBnQWRtaW4u QnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAg ICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2hvd19maWx0ZXInLCBbXSk7Ci0gICAgICAgICAg ICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0g ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2Fj dGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19zaG93 X2ZpbHRlcicsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlv bigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgbXNnOwotICAgICAgICAgICAg aWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgIG1zZyA9Ci0gICAgICAgICAg ICAgICAgZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpOwotICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgIGlm IChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICBpZihlLnJl c3BvbnNlSlNPTi5lcnJvcm1zZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgIG1z ZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICBpZihlLnN0YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1bmRl ZmluZWQgJiYKLSAgICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09O TkVDVElPTl9MT1NUJykgewotICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp IHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfc2hvd19maWx0ZXInLCBb XSk7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdChmYWxz ZSwgZSk7Ci0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJyb3JI YW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAgICAgICAgcGdBZG1pbiwg c2VsZiwgZSwgJ19zaG93X2ZpbHRlcicsIG51bGwsIHRydWUKKyAgICAgICAgICAgICk7CiAgICAg ICAgICAgICBzZXRUaW1lb3V0KAogICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdHZXQgRmlsdGVyIEVycm9yJyksIG1zZyk7 CkBAIC0zMjU1LDQyICszMTQxLDEwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAg ICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgIHNl bGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAg ICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3Jl cXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2luY2x1ZGVfZmls dGVyJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5h Z2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFu c2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAg c2VsZi5zYXZlX3N0YXRlKCdfaW5jbHVkZV9maWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJl dHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg ICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5h bGVydChnZXR0ZXh0KCdGaWx0ZXIgQnkgU2VsZWN0aW9uIEVycm9yJyksCi0gICAgICAgICAgICAg ICAgICAgIGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVj dGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICAg KTsKLSAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg ICAgICAgICAgICB2YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYg KGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAgaWYoZS5y ZXNwb25zZUpTT04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAg IG1zZyA9IGUucmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8g IT0gdW5kZWZpbmVkICYmCi0gICAgICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5m byA9PSAnQ09OTkVDVElPTl9MT1NUJykgewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2lu Y2x1ZGVfZmlsdGVyJywgW10pOwotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nv bm5lY3Rpb25fbG9zdChmYWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KGdldHRleHQoJ0ZpbHRlciBCeSBTZWxlY3Rpb24gRXJyb3InKSwgbXNnKTsKLSAg ICAgICAgICAgICAgfSwgMTAKKyAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVy LmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwg ZSwgJ19pbmNsdWRlX2ZpbHRlcicsIG51bGwsIHRydWUKICAgICAgICAgICAgICk7CisgICAgICAg ICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdGaWx0ZXIgQnkgU2VsZWN0aW9uIEVycm9yJyks IG1zZyk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApAQCAtMzM0Niw0MiAr MzIwMCwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICB9LAogICAg ICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICBpZiAocGdB ZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewot ICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19leGNsdWRlX2ZpbHRlcicsIFtdKTsKLSAg ICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9n aW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3 X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0 ZSgnX2V4Y2x1ZGVfZmlsdGVyJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0 X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNldFRpbWVvdXQo Ci0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmIChlLnJlYWR5 U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgn RmlsdGVyIEV4Y2x1ZGUgU2VsZWN0aW9uIEVycm9yJyksCi0gICAgICAgICAgICAgICAgICAgIGdl dHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0 aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICAgKTsKLSAgICAg ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg ICB2YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVzcG9u c2VKU09OICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpT T04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGUu cmVzcG9uc2VKU09OLmVycm9ybXNnOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICAgICAgaWYoZS5zdGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZp bmVkICYmCi0gICAgICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09O TkVDVElPTl9MT1NUJykgewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2V4Y2x1ZGVfZmls dGVyJywgW10pOwotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25f bG9zdChmYWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KGdldHRleHQoJ0ZpbHRlciBFeGNsdWRlIFNlbGVjdGlvbiBFcnJvcicpLCBtc2cpOwotICAgICAg ICAgICAgICB9LCAxMAorICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFu ZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAn X2V4Y2x1ZGVfZmlsdGVyJywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAg IGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0ZpbHRlciBFeGNsdWRlIFNlbGVjdGlvbiBFcnJvcicp LCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKQEAgLTM0MTYsNDIg KzMyMzgsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICAgICAgICAgfSwKICAg ICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdw Z2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgaWYgKHBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsK LSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfcmVtb3ZlX2ZpbHRlcicsIFtdKTsKLSAg ICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9n aW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3 X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0 ZSgnX3JlbW92ZV9maWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRf dHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2V0VGltZW91dCgK LSAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVhZHlT dGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdS ZW1vdmUgRmlsdGVyIEVycm9yJyksCi0gICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ05vdCBj b25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhh cyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICAg IHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgbXNnID0g ZS5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVu ZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cg IT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IGUucmVzcG9uc2VKU09O LmVycm9ybXNnOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYoZS5z dGF0dXMgPT0gNTAzICYmIGUucmVzcG9uc2VKU09OLmluZm8gIT0gdW5kZWZpbmVkICYmCi0gICAg ICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04uaW5mbyA9PSAnQ09OTkVDVElPTl9MT1NU JykgewotICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3JlbW92ZV9maWx0ZXInLCBbXSk7Ci0g ICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVjdGlvbl9sb3N0KGZhbHNlLCBl KTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnUmVt b3ZlIEZpbHRlciBFcnJvcicpLCBtc2cpOwotICAgICAgICAgICAgICB9CisgICAgICAgICAgICBs ZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAg ICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfcmVtb3ZlX2ZpbHRlcicsIG51bGwsIHRydWUK ICAgICAgICAgICAgICk7CisgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdSZW1v dmUgRmlsdGVyIEVycm9yJyksIG1zZyk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAg ICB9LApAQCAtMzQ5MSw0MiArMzI4MSwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsK ICAgICAgICAgICB9LAogICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAg ICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0g ICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dp bl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19hcHBseV9m aWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0FkbWluLkJyb3dzZXIuVXNlck1h bmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmKHRy YW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAg ICBzZWxmLnNhdmVfc3RhdGUoJ19hcHBseV9maWx0ZXInLCBbXSk7Ci0gICAgICAgICAgICAgIHJl dHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg ICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICBhbGVydGlmeS5h bGVydChnZXR0ZXh0KCdBcHBseSBGaWx0ZXIgRXJyb3InKSwKLSAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRv IHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCi0gICAgICAgICAgICAgICAgICApOwotICAg ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg ICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgICAgICBpZiAoZS5yZXNw b25zZUpTT04gIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgICBpZihlLnJlc3BvbnNl SlNPTi5lcnJvcm1zZyAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgbXNnID0g ZS5yZXNwb25zZUpTT04uZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgICBpZihlLnN0YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1bmRl ZmluZWQgJiYKLSAgICAgICAgICAgICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5pbmZvID09ICdD T05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXBwbHlfZmls dGVyJywgW10pOwotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25f bG9zdChmYWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KGdldHRleHQoJ0FwcGx5IEZpbHRlciBFcnJvcicpLCBtc2cpOwotICAgICAgICAgICAgICB9LCAx MAorICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29s QWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2FwcGx5X2ZpbHRl cicsIG51bGwsIHRydWUKICAgICAgICAgICAgICk7CisgICAgICAgICAgICBhbGVydGlmeS5hbGVy dChnZXR0ZXh0KCdBcHBseSBGaWx0ZXIgRXJyb3InKSwgbXNnKTsKICAgICAgICAgICB9LAogICAg ICAgICB9KTsKICAgICAgIH0sCkBAIC0zNjQ2LDQyICszNDA0LDEwIEBAIGRlZmluZSgndG9vbHMu cXVlcnl0b29sJywgWwogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUp IHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOmhpZGUnKTsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1l bnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9z dGF0ZSgnX3NldF9saW1pdCcsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJv d3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg ICAgICAgaWYodHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0g ICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX3NldF9saW1pdCcsIFtdKTsKLSAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2FjdGlvbigpOwotICAgICAgICAgICAgfQotCi0g ICAgICAgICAgICBzZXRUaW1lb3V0KAotICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgICAgICBpZiAoZS5yZWFkeVN0YXRlID09IDApIHsKLSAgICAgICAgICAgICAgICAgIGFs ZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NoYW5nZSBsaW1pdCBFcnJvcicpLAotICAgICAgICAgICAg ICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykKLSAgICAgICAgICAgICAgICAg ICk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICAgICAgdmFyIG1zZyA9IGUucmVzcG9uc2VUZXh0OwotICAgICAgICAgICAgICAgIGlm IChlLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAgIGlmKGUu cmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgICAgICAg ICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLSAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgIGlmKGUuc3RhdHVzID09IDUwMyAmJiBlLnJlc3BvbnNlSlNPTi5pbmZv ICE9IHVuZGVmaW5lZCAmJgotICAgICAgICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmlu Zm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19z ZXRfbGltaXQnLCBbXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfY29ubmVj dGlvbl9sb3N0KGZhbHNlLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYWxlcnRpZnku YWxlcnQoZ2V0dGV4dCgnQ2hhbmdlIGxpbWl0IEVycm9yJyksIG1zZyk7Ci0gICAgICAgICAgICAg IH0sIDEwCisgICAgICAgICAgICBsZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVy eVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfc2V0X2xp bWl0JywgbnVsbCwgdHJ1ZQogICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KGdldHRleHQoJ0NoYW5nZSBsaW1pdCBFcnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAg ICAgICAgIH0pOwogICAgICAgfSwKQEAgLTM4MDUsMjMgKzM1MzEsOSBAQCBkZWZpbmUoJ3Rvb2xz LnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewogICAgICAgICAg ICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7CiAKLSAgICAgICAgICAgIGlmIChl LnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0 KCdDYW5jZWwgUXVlcnkgRXJyb3InKSwKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCdOb3QgY29u bmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMg YmVlbiBjbG9zZWQuJykKLSAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgcmV0dXJuOwot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5h Z2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNh dmVfc3RhdGUoJ19jYW5jZWxfcXVlcnknLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9Ci0K LSAgICAgICAgICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIGlmIChl LnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQgJiYKLSAgICAgICAgICAgICAgZS5yZXNwb25zZUpT T04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNl SlNPTi5lcnJvcm1zZzsKLQorICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIu aGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBl LCAnX2NhbmNlbF9xdWVyeScsIG51bGwsIGZhbHNlCisgICAgICAgICAgICApOwogICAgICAgICAg ICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQ2FuY2VsIFF1ZXJ5IEVycm9yJyksIG1zZyk7CiAg ICAgICAgICAgfSwKICAgICAgICAgfSk7CkBAIC0zODY2LDM4ICszNTc4LDEwIEBAIGRlZmluZSgn dG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0 KCdBdXRvIFJvbGxiYWNrIEVycm9yJyksIHJlcy5kYXRhLnJlc3VsdCk7CiAgICAgICAgICAgfSwK ICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgaWYgKGUucmVhZHlT dGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0F1dG8g Um9sbGJhY2sgRXJyb3InKSwKLSAgICAgICAgICAgICAgICBnZXR0ZXh0KCdOb3QgY29ubmVjdGVk IHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBj bG9zZWQuJykKLSAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg ICAgICAgfQotCi0gICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50 LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3Rh dGUoJ19hdXRvX3JvbGxiYWNrJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5C cm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsK LSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXV0b19yb2xsYmFjaycsIFtdKTsKLSAg ICAgICAgICAgICAgc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAg ICAgICAgICAgIHZhciBtc2cgPSBlLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIGlmIChlLnJl c3BvbnNlSlNPTiAhPSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgaWYoZS5yZXNwb25zZUpT T04uZXJyb3Jtc2cgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgbXNnID0gZS5yZXNw b25zZUpTT04uZXJyb3Jtc2c7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZihl LnN0YXR1cyA9PSA1MDMgJiYgZS5yZXNwb25zZUpTT04uaW5mbyAhPSB1bmRlZmluZWQgJiYKLSAg ICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmluZm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcp IHsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg ICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXV0b19yb2xsYmFjaycsIFtdKTsKLSAgICAgICAgICAg ICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdChmYWxzZSwgZSk7Ci0gICAgICAgICAg ICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg bGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAg ICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2F1dG9fcm9sbGJhY2snLCBudWxsLCB0cnVl CisgICAgICAgICAgICApOwogICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnQXV0 byBSb2xsYmFjayBFcnJvcicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwpAQCAt MzkyNywzOCArMzYxMSw5IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAg ICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdBdXRvIENvbW1pdCBFcnJvcicpLCByZXMuZGF0 YS5yZXN1bHQpOwogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGUpIHsK LSAgICAgICAgICAgIGlmIChlLnJlYWR5U3RhdGUgPT0gMCkgewotICAgICAgICAgICAgICBhbGVy dGlmeS5hbGVydChnZXR0ZXh0KCdBdXRvIENvbW1pdCBFcnJvcicpLAotICAgICAgICAgICAgICAg IGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0 byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQotICAgICAgICAgICAgICApOwotICAgICAg ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwZ0FkbWlu LkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAg ICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0ZSgnX2F1dG9fY29tbWl0JywgW10pOwotICAgICAgICAg ICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNh Y3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfYXV0 b19jb21taXQnLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rp b24oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIG1zZyA9IGUucmVzcG9uc2VU ZXh0OwotICAgICAgICAgICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCkgewotICAg ICAgICAgICAgICBpZihlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZyAhPSB1bmRlZmluZWQpIHsKLSAg ICAgICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLSAgICAgICAgICAg ICAgfQotCi0gICAgICAgICAgICAgIGlmKGUuc3RhdHVzID09IDUwMyAmJiBlLnJlc3BvbnNlSlNP Ti5pbmZvICE9IHVuZGVmaW5lZCAmJgotICAgICAgICAgICAgICAgICAgZS5yZXNwb25zZUpTT04u aW5mbyA9PSAnQ09OTkVDVElPTl9MT1NUJykgewotICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19hdXRvX2Nv bW1pdCcsIFtdKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Nvbm5lY3Rpb25fbG9z dChmYWxzZSwgZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIH0KLQorICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxl UXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2F1 dG9fY29tbWl0JywgbnVsbCwgdHJ1ZQorICAgICAgICAgICAgKTsKICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KGdldHRleHQoJ0F1dG8gQ29tbWl0IEVycm9yJyksIG1zZyk7CiAgICAgICAgICAg fSwKICAgICAgICAgfSk7CkBAIC0zOTk1LDIxICszNjUwLDEwIEBAIGRlZmluZSgndG9vbHMucXVl cnl0b29sJywgWwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6 IGZ1bmN0aW9uKGUpIHsKLQotICAgICAgICAgICAgaWYgKHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFu YWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5z YXZlX3N0YXRlKCdfZXhwbGFpbl92ZXJib3NlJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4g cGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAg fQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhwbGFpbl92ZXJib3Nl JywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7Ci0g ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0V4cGxh aW4gb3B0aW9ucyBlcnJvcicpLAotICAgICAgICAgICAgICBnZXR0ZXh0KCdFcnJvciBvY2N1cnJl ZCB3aGlsZSBzZXR0aW5nIHZlcmJvc2Ugb3B0aW9uIGluIGV4cGxhaW4uJykKKyAgICAgICAgICAg IGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAg ICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZSwgJ19leHBsYWluX3ZlcmJvc2UnLCBudWxsLCB0 cnVlCiAgICAgICAgICAgICApOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYWxl cnRpZnkuYWxlcnQoZ2V0dGV4dCgnRXhwbGFpbiBvcHRpb25zIGVycm9yJyksIG1zZyk7CiAgICAg ICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApAQCAtNDA0NSwxOSArMzY4OSwxMCBAQCBk ZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LAog ICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBpZiAocGdBZG1pbi5C cm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAg ICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19leHBsYWluX2Nvc3RzJywgW10pOwotICAgICAgICAg ICAgICByZXR1cm4gcGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwot ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNh Y3Rpb25fcmVxdWlyZWQoZSkpIHsKLSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhw bGFpbl9jb3N0cycsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdF90cmFuc2Fj dGlvbigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0 ZXh0KCdFeHBsYWluIG9wdGlvbnMgZXJyb3InKSwKLSAgICAgICAgICAgICAgZ2V0dGV4dCgnRXJy b3Igb2NjdXJyZWQgd2hpbGUgc2V0dGluZyBjb3N0cyBvcHRpb24gaW4gZXhwbGFpbi4nKQorICAg ICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVy cm9yKAorICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2V4cGxhaW5fY29zdHMnLCBu dWxsLCB0cnVlCiAgICAgICAgICAgICApOworICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0 dGV4dCgnRXhwbGFpbiBvcHRpb25zIGVycm9yJyksIG1zZyk7CiAgICAgICAgICAgfSwKICAgICAg ICAgfSk7CiAgICAgICB9LApAQCAtNDA5MywxOSArMzcyOCwxMCBAQCBkZWZpbmUoJ3Rvb2xzLnF1 ZXJ5dG9vbCcsIFsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LAogICAgICAgICAgIGVycm9y OiBmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5h Z2VtZW50LmlzX3BnYV9sb2dpbl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNh dmVfc3RhdGUoJ19leHBsYWluX2J1ZmZlcnMnLCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBw Z0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7Ci0gICAgICAgICAgICB9 Ci0KLSAgICAgICAgICAgIGlmKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJl ZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ19leHBsYWluX2J1ZmZlcnMn LCBbXSk7Ci0gICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAg ICAgICAgICAgIH0KLQotICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnRXhwbGFp biBvcHRpb25zIGVycm9yJyksCi0gICAgICAgICAgICAgIGdldHRleHQoJ0Vycm9yIG9jY3VycmVk IHdoaWxlIHNldHRpbmcgYnVmZmVycyBvcHRpb24gaW4gZXhwbGFpbi4nKQorICAgICAgICAgICAg bGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAg ICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2V4cGxhaW5fYnVmZmVycycsIG51bGwsIHRy dWUKICAgICAgICAgICAgICk7CisgICAgICAgICAgICBhbGVydGlmeS5hbGVydChnZXR0ZXh0KCdF eHBsYWluIG9wdGlvbnMgZXJyb3InKSwgbXNnKTsKICAgICAgICAgICB9LAogICAgICAgICB9KTsK ICAgICAgIH0sCkBAIC00MTQwLDE5ICszNzY2LDEwIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCiAgICAgICAgICAgZXJyb3I6IGZ1bmN0 aW9uKGUpIHsKLSAgICAgICAgICAgIGlmIChwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu aXNfcGdhX2xvZ2luX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZV9zdGF0 ZSgnX2V4cGxhaW5fdGltaW5nJywgW10pOwotICAgICAgICAgICAgICByZXR1cm4gcGdBZG1pbi5C cm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYV9sb2dpbigpOwotICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICBpZih0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoZSkpIHsK LSAgICAgICAgICAgICAgc2VsZi5zYXZlX3N0YXRlKCdfZXhwbGFpbl90aW1pbmcnLCBbXSk7Ci0g ICAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXRfdHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAg IH0KLQotICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnRXhwbGFpbiBvcHRpb25z IGVycm9yJyksCi0gICAgICAgICAgICAgIGdldHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIHNl dHRpbmcgdGltaW5nIG9wdGlvbiBpbiBleHBsYWluLicpCisgICAgICAgICAgICBsZXQgbXNnID0g aHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgICAg IHBnQWRtaW4sIHNlbGYsIGUsICdfZXhwbGFpbl90aW1pbmcnLCBudWxsLCB0cnVlCiAgICAgICAg ICAgICApOworICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoZ2V0dGV4dCgnRXhwbGFpbiBvcHRp b25zIGVycm9yJyksIG1zZyk7CiAgICAgICAgICAgfSwKICAgICAgICAgfSk7CiAgICAgICB9LApA QCAtNDI1NCwyMSArMzg3MSwxMSBAQCBkZWZpbmUoJ3Rvb2xzLnF1ZXJ5dG9vbCcsIFsKICAgICAg ICAgICAgIH0KICAgICAgICAgICB9LAogICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihlKSB7Ci0g ICAgICAgICAgICBpZiAocGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmlzX3BnYV9sb2dp bl9yZXF1aXJlZChlKSkgewotICAgICAgICAgICAgICBzZWxmLnNhdmVfc3RhdGUoJ2dldF9wcmVm ZXJlbmNlcycsIFtdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2Vy TWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYo dHJhbnNhY3Rpb24uaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkKGUpKSB7Ci0gICAgICAgICAg ICAgIHNlbGYuc2F2ZV9zdGF0ZSgnZ2V0X3ByZWZlcmVuY2VzJywgW10pOwotICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5pbml0X3RyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg ICAgICAgIHVwZGF0ZVVJKCk7Ci0gICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAg ICAgICAgZ2V0dGV4dCgnR2V0IFByZWZlcmVuY2VzIGVycm9yJyksCi0gICAgICAgICAgICAgIGdl dHRleHQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgcXVlcnkgdG9vbCBvcHRpb25zLicp CisgICAgICAgICAgICBsZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xB amF4RXJyb3IoCisgICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdnZXRfcHJlZmVyZW5j ZXMnLCBudWxsLCB0cnVlCiAgICAgICAgICAgICApOworICAgICAgICAgICAgdXBkYXRlVUkoKTsK KyAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0dldCBQcmVmZXJlbmNlcyBlcnJv cicpLCBtc2cpOwogICAgICAgICAgIH0sCiAgICAgICAgIH0pOwogICAgICAgfSwKZGlmZiAtLWdp dCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnlfc3Bl Yy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnlf c3BlYy5qcwppbmRleCA1ZjkyZGM1Li5mNzE3NmQxIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5X3NwZWMuanMKKysrIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeV9zcGVjLmpzCkBAIC04 LDcgKzgsNyBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogaW1wb3J0ICogYXMgc3ViamVjdCBmcm9t ICdzb3VyY2VzL3NxbGVkaXRvci9leGVjdXRlX3F1ZXJ5JzsKLWltcG9ydCAqIGFzIHRyYW5zYWN0 aW9uIGZyb20gJ3NvdXJjZXMvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCc7 CitpbXBvcnQgKiBhcyBodHRwRXJyb3JIYW5kbGVyIGZyb20gJ3NvdXJjZXMvc3FsZWRpdG9yL3F1 ZXJ5X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyJzsKIGltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7 CiBpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFwdGVyJzsKIGltcG9ydCAk IGZyb20gJ2pxdWVyeSc7CkBAIC00Nyw3ICs0Nyw3IEBAIGRlc2NyaWJlKCdFeGVjdXRlUXVlcnkn LCAoKSA9PiB7CiAgICAgc3FsRWRpdG9yTW9jay50cmFuc0lkID0gMTIzOwogICAgIHNxbEVkaXRv ck1vY2sucm93c19hZmZlY3RlZCA9IDEwMDA7CiAgICAgZXhlY3V0ZVF1ZXJ5ID0gbmV3IHN1Ympl Y3QuRXhlY3V0ZVF1ZXJ5KHNxbEVkaXRvck1vY2ssIHVzZXJNYW5hZ2VtZW50TW9jayk7Ci0gICAg aXNOZXdUcmFuc2FjdGlvblJlcXVpcmVkTW9jayA9IHNweU9uKHRyYW5zYWN0aW9uLCAnaXNfbmV3 X3RyYW5zYWN0aW9uX3JlcXVpcmVkJyk7CisgICAgaXNOZXdUcmFuc2FjdGlvblJlcXVpcmVkTW9j ayA9IHNweU9uKGh0dHBFcnJvckhhbmRsZXIsICdpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQn KTsKICAgfSk7CiAKICAgYWZ0ZXJFYWNoKCgpID0+IHsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZF9zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0 aW9uX3JlcXVpcmVkX3NwZWMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZDFi YzUuLjAwMDAwMDAKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvaXNf bmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkX3NwZWMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr MCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQge2lzX25ld190 cmFuc2FjdGlvbl9yZXF1aXJlZH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvc3Fs ZWRpdG9yL2lzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCc7Ci0KLWRlc2NyaWJlKCcjaXNfbmV3 X3RyYW5zYWN0aW9uX3JlcXVpcmVkJywgKCkgPT4gewotICBkZXNjcmliZSgnd2hlbiBzdGF0dXMg aXMgbm90IDQwNCcsICgpID0+IHsKLSAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+ IHsKLSAgICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoewotICAgICAgICBz dGF0dXM6IDMwMCwKLSAgICAgIH0pKS50b0JlKGZhbHNlKTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAg ZGVzY3JpYmUoJ3doZW4gc3RhdHVzIGlzIDQwNCcsICgpID0+IHsKLSAgICBkZXNjcmliZSgnd2hl biBkYXRhIGlzIG5vdCBwcmVzZW50JywgKCkgPT4gewotICAgICAgaXQoJ3Nob3VsZCByZXR1cm4g ZmFsc2UnLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQoewotICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICB9KSkudG9CZUZhbHN5KCk7Ci0g ICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIGRhdGEgaXMgcHJlc2VudCcs ICgpID0+IHsKLSAgICAgIGRlc2NyaWJlKCd3aGVuIGluZm8gaXMgbm90IHByZXNlbnQgaW5zaWRl IGRhdGEnLCAoKSA9PiB7Ci0gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkgPT4g ewotICAgICAgICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoewotICAgICAg ICAgICAgc3RhdHVzOiA0MDQsCi0gICAgICAgICAgICBkYXRhOiB7fSwKLSAgICAgICAgICB9KSku dG9CZUZhbHN5KCk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0KLSAgICAgIGRlc2NyaWJlKCd3 aGVuIGluZm8gaXMgcHJlc2VudCBpbnNpZGUgZGF0YScsICgpID0+IHsKLSAgICAgICAgZGVzY3Jp YmUoJ3doZW4gaW5mbyB2YWx1ZSBpcyBub3QgIkRBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVE IicsICgpID0+IHsKLSAgICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+IHsK LSAgICAgICAgICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoewotICAgICAg ICAgICAgICBzdGF0dXM6IDQwNCwKLSAgICAgICAgICAgICAgZGF0YTogewotICAgICAgICAgICAg ICAgIGluZm86ICdzb21lIGluZm9ybWF0aW9uJywKLSAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgIH0pKS50b0JlKGZhbHNlKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAg ICAgZGVzY3JpYmUoJ3doZW4gaW5mbyB2YWx1ZSBpcyAiREFUQUdSSURfVFJBTlNBQ1RJT05fUkVR VUlSRUQiJywgKCkgPT4gewotICAgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkg PT4gewotICAgICAgICAgICAgZXhwZWN0KGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh7Ci0g ICAgICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICAgICAgICBkYXRhOiB7Ci0gICAgICAg ICAgICAgICAgaW5mbzogJ0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKLSAgICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgIH0pKS50b0JlKHRydWUpOwotICAgICAgICAgIH0pOwotICAg ICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9odHRwX2Vycm9yX2hh bmRsZXJfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL3F1ZXJ5 X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZmQzZjk4MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyX3NwZWMuanMK QEAgLTAsMCArMSwxOTEgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9y dCB7CisgIGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCwKKyAgaGFuZGxlUXVlcnlUb29sQWph eEVycm9yCit9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVy eV90b29sX2h0dHBfZXJyb3JfaGFuZGxlcic7CisKK2Rlc2NyaWJlKCcjaXNfbmV3X3RyYW5zYWN0 aW9uX3JlcXVpcmVkJywgKCkgPT4geworICBkZXNjcmliZSgnd2hlbiBzdGF0dXMgaXMgbm90IDQw NCcsICgpID0+IHsKKyAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+IHsKKyAgICAg IGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoeworICAgICAgICBzdGF0dXM6IDMw MCwKKyAgICAgIH0pKS50b0JlKGZhbHNlKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUo J3doZW4gc3RhdHVzIGlzIDQwNCcsICgpID0+IHsKKyAgICBkZXNjcmliZSgnd2hlbiBkYXRhIGlz IG5vdCBwcmVzZW50JywgKCkgPT4geworICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCAo KSA9PiB7CisgICAgICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoeworICAg ICAgICAgIHN0YXR1czogNDA0LAorICAgICAgICB9KSkudG9CZUZhbHN5KCk7CisgICAgICB9KTsK KyAgICB9KTsKKworICAgIGRlc2NyaWJlKCd3aGVuIGRhdGEgaXMgcHJlc2VudCcsICgpID0+IHsK KyAgICAgIGRlc2NyaWJlKCd3aGVuIGluZm8gaXMgbm90IHByZXNlbnQgaW5zaWRlIGRhdGEnLCAo KSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkgPT4geworICAgICAg ICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoeworICAgICAgICAgICAgc3Rh dHVzOiA0MDQsCisgICAgICAgICAgICBkYXRhOiB7fSwKKyAgICAgICAgICB9KSkudG9CZUZhbHN5 KCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCd3aGVuIGluZm8g aXMgcHJlc2VudCBpbnNpZGUgZGF0YScsICgpID0+IHsKKyAgICAgICAgZGVzY3JpYmUoJ3doZW4g aW5mbyB2YWx1ZSBpcyBub3QgIkRBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEIicsICgpID0+ IHsKKyAgICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgpID0+IHsKKyAgICAgICAg ICAgIGV4cGVjdChpc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQoeworICAgICAgICAgICAgICBz dGF0dXM6IDQwNCwKKyAgICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgIGluZm86 ICdzb21lIGluZm9ybWF0aW9uJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0pKS50 b0JlKGZhbHNlKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3Jp YmUoJ3doZW4gaW5mbyB2YWx1ZSBpcyAiREFUQUdSSURfVFJBTlNBQ1RJT05fUkVRVUlSRUQiJywg KCkgPT4geworICAgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkgPT4geworICAg ICAgICAgICAgZXhwZWN0KGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh7CisgICAgICAgICAg ICAgIHN0YXR1czogNDA0LAorICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAg aW5mbzogJ0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgIH0pKS50b0JlKHRydWUpOworICAgICAgICAgIH0pOworICAgICAgICB9KTsK KyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOworCisKK2Rlc2NyaWJlKCcjaGFuZGxlUXVl cnlUb29sQWpheEVycm9yJywgKCkgPT4geworICBsZXQgc3FsRWRpdG9ySGFuZGxlciwKKyAgICBl eGNlcHRpb25TcHksIHN0YXRlVG9TYXZlLAorICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFu c2FjdGlvbiwgVXNlck1hbmFnZW1lbnRNb2NrLAorICAgIHBnQnJvd3Nlck1vY2s7CisKKyAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIHN0YXRlVG9TYXZlID0gJ3Rlc3RTdGF0ZSc7CisgICAg ICBzdGF0ZVBhcmFtZXRlcnMgPSBbXTsKKyAgICAgIGNoZWNrVHJhbnNhY3Rpb24gPSBmYWxzZTsK KyAgICAgIHNxbEVkaXRvckhhbmRsZXIgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigKKyAgICAgICAg J2hhbmRsZXInLCBbJ2luaXRfdHJhbnNhY3Rpb24nLCAnc2F2ZV9zdGF0ZScsICdoYW5kbGVfY29u bmVjdGlvbl9sb3N0J10KKyAgICAgICk7CisgICAgICBleGNlcHRpb25TcHkgPSB7CisgICAgICAg IHJlYWR5U3RhdGU6IDAsCisgICAgICAgIHN0YXR1czogNDA0LAorICAgICAgICBkYXRhOiB7Cisg ICAgICAgICAgaW5mbzogJ0NPTk5FQ1RJT05fTE9TVCcsCisgICAgICAgIH0sCisgICAgICB9Owor ICAgICAgcGdCcm93c2VyTW9jayA9IHsKKyAgICAgICAgJ0Jyb3dzZXInOiB7CisgICAgICAgICAg J1VzZXJNYW5hZ2VtZW50JzogamFzbWluZS5jcmVhdGVTcHlPYmooJ1VzZXJNYW5hZ2VtZW50Jywg Wydpc19wZ2FfbG9naW5fcmVxdWlyZWQnLCAncGdhX2xvZ2luJ10pCisgICAgICAgIH0KKyAgICAg IH07CisgICAgfSk7CisKKyAgZGVzY3JpYmUoJ3doZW4gcmVhZHkgc3RhdGUgaXMgMCcsICgpID0+ IHsKKyAgICBpdCgnc2hvdWxkIHJldHVybiBjb25uZWN0aW9uJywgKCkgPT4geworICAgICAgZXhw ZWN0KAorICAgICAgICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgICAgcGdCcm93 c2VyTW9jaywgc3FsRWRpdG9ySGFuZGxlciwgZXhjZXB0aW9uU3B5LCBzdGF0ZVRvU2F2ZSwKKyAg ICAgICAgICBzdGF0ZVBhcmFtZXRlcnMsIGNoZWNrVHJhbnNhY3Rpb24KKyAgICAgICAgKQorICAg ICAgKS50b0JlKCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24g dG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJyk7CisgICAgfSk7CisgIH0pOworCisgIGRl c2NyaWJlKCd3aGVuIHRoZXJlIGlzIGFuIGFqYXggZXJyb3IgZHVlIHRvIGxvZ2luIGlzIHJlcXVp cmVkJywgKCkgPT4geworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgZXhjZXB0aW9uU3B5 LnJlYWR5U3RhdGUgPSAxOworICAgICAgZXhjZXB0aW9uU3B5LnN0YXR1cyA9IDQwMTsKKyAgICAg IGV4Y2VwdGlvblNweS5kYXRhLmluZm8gPSAnUEdBRE1JTl9MT0dJTl9SRVFVSVJFRCc7CisgICAg ICBwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNfcGdhX2xvZ2luX3JlcXVp cmVkLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgc2F2 ZSB0aGUgY3VycmVudCBzdGF0ZSBhbmQgY2FsbCBsb2dpbiBoYW5kbGVyJywgKCkgPT4geworICAg ICAgaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAorICAgICAgICBwZ0Jyb3dzZXJNb2NrLCBzcWxF ZGl0b3JIYW5kbGVyLCBleGNlcHRpb25TcHksIHN0YXRlVG9TYXZlLAorICAgICAgICBzdGF0ZVBh cmFtZXRlcnMsIGNoZWNrVHJhbnNhY3Rpb24KKyAgICAgICk7CisgICAgICBleHBlY3Qoc3FsRWRp dG9ySGFuZGxlci5zYXZlX3N0YXRlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChzdGF0ZVRvU2F2ZSwg c3RhdGVQYXJhbWV0ZXJzKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNl ck1hbmFnZW1lbnQucGdhX2xvZ2luKS50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0p OworCisgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIGFuIGFqYXggZXJyb3IgYW5kIG5ldyB0cmFu c2FjdGlvbiBpbml0aWFsaXphdGlvbiByZXF1aXJlZCcsICgpID0+IHsKKyAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgIGV4Y2VwdGlvblNweS5yZWFkeVN0YXRlID0gMTsKKyAgICAgIGV4Y2Vw dGlvblNweS5zdGF0dXMgPSA0MDQ7CisgICAgICBleGNlcHRpb25TcHkuZGF0YS5pbmZvID0gJ0RB VEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJzsKKyAgICAgIHBnQnJvd3Nlck1vY2suQnJvd3Nl ci5Vc2VyTWFuYWdlbWVudC5pc19wZ2FfbG9naW5fcmVxdWlyZWQuYW5kLnJldHVyblZhbHVlKGZh bHNlKTsKKyAgICAgIGNoZWNrVHJhbnNhY3Rpb24gPSB0cnVlOworICAgIH0pOworCisgICAgaXQo J3Nob3VsZCBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBjYWxsIGxvZ2luIGhhbmRsZXInLCAo KSA9PiB7CisgICAgICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCisgICAgICAgIHBnQnJvd3Nl ck1vY2ssIHNxbEVkaXRvckhhbmRsZXIsIGV4Y2VwdGlvblNweSwgc3RhdGVUb1NhdmUsCisgICAg ICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgorICAgICAgKTsKKyAgICAgIGV4 cGVjdChwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKS5ub3Qu dG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgZXhwZWN0KHNxbEVkaXRvckhhbmRsZXIuc2F2ZV9z dGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycyk7 CisgICAgICBleHBlY3Qoc3FsRWRpdG9ySGFuZGxlci5pbml0X3RyYW5zYWN0aW9uKS50b0hhdmVC ZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlz IGFuIGFqYXggZXJyb3IgZHVlIHRvIGRhdGFiYXNlIGNvbm5lY3Rpb24gaGFzIGJlZW4gbG9zdCcs ICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGV4Y2VwdGlvblNweS5yZWFk eVN0YXRlID0gMTsKKyAgICAgIGV4Y2VwdGlvblNweS5zdGF0dXMgPSA1MDM7CisgICAgICBleGNl cHRpb25TcHkucmVzcG9uc2VKU09OID0geworICAgICAgICAnaW5mbyc6ICdDT05ORUNUSU9OX0xP U1QnCisgICAgICB9OworICAgICAgcGdCcm93c2VyTW9jay5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50 LmlzX3BnYV9sb2dpbl9yZXF1aXJlZC5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOworICAgICAgY2hl Y2tUcmFuc2FjdGlvbiA9IGZhbHNlOworICAgIH0pOworCisgICAgaXQoJ3Nob3VsZCBzYXZlIHRo ZSBjdXJyZW50IHN0YXRlIGFuZCBjYWxsIGNvbm5lY3Rpb24gbG9zdCBoYW5kbGVyJywgKGRvbmUp ID0+IHsKKyAgICAgIGhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAgcGdCcm93c2Vy TW9jaywgc3FsRWRpdG9ySGFuZGxlciwgZXhjZXB0aW9uU3B5LCBzdGF0ZVRvU2F2ZSwKKyAgICAg ICAgc3RhdGVQYXJhbWV0ZXJzLCBjaGVja1RyYW5zYWN0aW9uCisgICAgICApOworICAgICAgZXhw ZWN0KHBnQnJvd3Nlck1vY2suQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FfbG9naW4pLm5vdC50 b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgZXhw ZWN0KHNxbEVkaXRvckhhbmRsZXIuc2F2ZV9zdGF0ZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3Rh dGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycyk7CisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JIYW5k bGVyLmhhbmRsZV9jb25uZWN0aW9uX2xvc3QpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlLCBl eGNlcHRpb25TcHkpOworICAgICAgICBkb25lKCk7CisgICAgICB9LCAwKTsKKyAgICB9KTsKKyAg fSk7CisKKyAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgYW4gYWpheCBlcnJvciBkdWUgdG8gdW5r bm93biByZWFzb24nLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBleGNl cHRpb25TcHkucmVhZHlTdGF0ZSA9IDE7CisgICAgICBleGNlcHRpb25TcHkuc3RhdHVzID0gODAz OworICAgICAgZXhjZXB0aW9uU3B5LnJlc3BvbnNlVGV4dCA9ICdhamF4IGZhaWxlZCB3aXRoIHVu a25vd24gcmVhc29uJzsKKyAgICAgIHBnQnJvd3Nlck1vY2suQnJvd3Nlci5Vc2VyTWFuYWdlbWVu dC5pc19wZ2FfbG9naW5fcmVxdWlyZWQuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKKyAgICAgIGNo ZWNrVHJhbnNhY3Rpb24gPSBmYWxzZTsKKyAgICB9KTsKKworICAgIGl0KCdzaG91bGQgcmV0dXJu IHByb3BlciBlcnJvciBtZXNzYWdlIGZyb20gYWpheCBleGNlcHRpb24nLCAoKSA9PiB7CisgICAg ICBleHBlY3QoCisgICAgICAgIGhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKKyAgICAgICAgICBw Z0Jyb3dzZXJNb2NrLCBzcWxFZGl0b3JIYW5kbGVyLCBleGNlcHRpb25TcHksIHN0YXRlVG9TYXZl LAorICAgICAgICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgorICAgICAgICAp CisgICAgICApLnRvQmUoJ2FqYXggZmFpbGVkIHdpdGggdW5rbm93biByZWFzb24nKTsKKyAgICB9 KTsKKyAgfSk7CisKK30pOwo= --000000000000efd0790568f37fd7--