Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1haJsl-0003O5-QX for pgadmin-hackers@arkaria.postgresql.org; Mon, 10 Jun 2019 12:58:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1haJsk-0001dT-2Q for pgadmin-hackers@arkaria.postgresql.org; Mon, 10 Jun 2019 12:58:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1haJsj-0001UI-K2 for pgadmin-hackers@lists.postgresql.org; Mon, 10 Jun 2019 12:58:37 +0000 Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1haJsZ-0008VY-VZ for pgadmin-hackers@postgresql.org; Mon, 10 Jun 2019 12:58:36 +0000 Received: by mail-lj1-x22c.google.com with SMTP id p17so566098ljg.1 for ; Mon, 10 Jun 2019 05:58:26 -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=nsE3a5WLtsF3ZvFmfe7nSLVCTJ9TFWYGeI7pv9Dz6W0=; b=mq1m2sjF0NvbXETDe5Q752Ix2fofTV9EFV/lc9Q1mPCUA2Ze5u7V9vJdOKc4X4xvDy dEjdCPcDXnzrEfa0F5li4hDoER9WIkalg6eEtbZ5jH+f0pb1zTyzTs2RLVnqEdts4KrE g9Sj/fTZfq+bd5t64xFRtDbE+uYr9B3s7dwmfS6a2Vj+55eOYKVX+vKvUBwOqWxSxIXJ 7ZSBLrsPp0fwsIAicv+qxL/jYET46mKRbswFYoHi1afEj6KkHWXm4mtPhRB+c46uJzYI L+61oapywKWRTCNJoPLzUtQcnHuP/sdUdu+8LMkSQrrw3CH+gF9APnJEifZvcTynS7Yo F+nA== 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=nsE3a5WLtsF3ZvFmfe7nSLVCTJ9TFWYGeI7pv9Dz6W0=; b=pymscgs/i909qb9QjeZas5lnZSOtWrn5j6Div6DT+TfzalSceH6/zTN7ZTT2ZZOUtx N6kaVFa2IVhj3F4a/dmBu7yW+4JSFZNixesEkUpMihk6UzFXme5rgmYLnjVAti8vUrN0 ZJ3iAsvoJ9fI6/pRjB+nntynXEp73v6Ond6Zu0cP0cAcoD6GDojupQk6L5OOVVURrJ59 ALhai7lEu4ty3rY21IT6UZMDLlpGWfM9FVIEG8iQECQU4CENaW4mvxAPlbktt9qhC/GV CJYx0bulgR7QUyJj90gJwnUnCfKPJpIm190LT3ESqi5QJJbpp7sOq6tb4a6b2X+ga8ug 07Rg== X-Gm-Message-State: APjAAAW7YSG2+oGwYvWmmcbJJs+HL6e+abccsznIwEVReHoBGGHwJBgE 3r/keh5rjS1TDILnDJBZ6fAGWF/qwlD3rmprcKXYFg== X-Google-Smtp-Source: APXvYqzP8d1Ak6mdRxoZ4sSGTzyPLfNDB2SjEbELFwMPcccW3En8pK8eOvR7+zyagLVx4qLxYUOk1qmVE60VyJwTj5g= X-Received: by 2002:a2e:8197:: with SMTP id e23mr37397680ljg.28.1560171504834; Mon, 10 Jun 2019 05:58:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Mon, 10 Jun 2019 18:27:48 +0530 Message-ID: Subject: Re: [pgAdmin][RM4329] Initialization error when parameterised functions debugged in parallel in two separate tabs To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="00000000000055c7fc058af7bc37" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --00000000000055c7fc058af7bc37 Content-Type: multipart/alternative; boundary="00000000000055c7f9058af7bc35" --00000000000055c7f9058af7bc35 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the updated patch with fixes. On Mon, Jun 10, 2019 at 12:58 PM Akshay Joshi wrote: > Hi Aditya > > Following are the review comments: > > - "Set breakpoint" option not working, when click it throws an error. > > Fixed. > > - Create an empty function and try to debug that. It should show > proper error message. > > This seems to be a bug in the debugger itself. I'll raise a bug with simulation steps if it is. But, not sure where to raise. > > - Got the following backend error when closing the connection, please > fix this: > - File > "E:\Projects\pgadmin4\web\pgadmin\tools\debugger\__init__.py", line 2053, > in close_debugger_session > conn_id=dbg_obj['exe_conn_id']) > > Fixed. > > On Fri, Jun 7, 2019 at 12:21 PM Aditya Toshniwal < > aditya.toshniwal@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Attached is the patch for debugger improvements. The changes include: >> 1) Change the way debug info is stored in session. Removed redundant >> session related code in debugger code. All the session related handling >> done at one place. >> 2) Fixed a bug where debugger was not opening for EPAS package function. >> 3) If a package is defined without body and we try to debug a proc/func, >> the debugger opened a blank window. Changes made so that it will throw >> error as "XYZ is not defined in package body." >> >> -- >> Thanks and Regards, >> Aditya Toshniwal >> Software Engineer | EnterpriseDB India | Pune >> "Don't Complain about Heat, Plant a TREE" >> > > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --00000000000055c7f9058af7bc35 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the updated patch= with fixes.

On Mon, Jun 10, 2019 at 12:58 PM Akshay Joshi <akshay.joshi@enterprisedb.com= > wrote:
Hi=C2=A0Aditya

Following are the review com= ments:
  • "Set breakpoint" option not working, whe= n click it throws an error.
Fixed.=C2=A0
  • Create an empty function and try to debug that. It should= show proper error message.
This seems t= o be a bug in the debugger itself. I'll raise a bug with simulation ste= ps if it is. But, not sure where to raise.
  • Got the foll= owing backend error when closing the connection, please fix this:
    • <= li>=C2=A0 =C2=A0 File "E:\Projects\pgadmin4\web\pgadmin\tools\debugger= \__init__.py", line 2053, in close_debugger_session
      =C2=A0 =C2=A0 c= onn_id=3Ddbg_obj['exe_conn_id'])
Fixed.=C2=A0

= On Fri, Jun 7, 2019 at 12:21 PM Aditya Toshniwal <aditya.toshniwal@enterpris= edb.com> wrote:
Hi Ha= ckers,

Attached is the patch for debugger i= mprovements. The changes include:
1) Change the way debug info is stored in session. Removed redund= ant session related code in debugger code. All the session related handling= done at one place.
2) F= ixed a bug where debugger was not opening for EPAS package function.
<= div>3) If a package is defined without b= ody and we try to debug a proc/func, the debugger opened a blank window. Ch= anges made so that it will throw error as "XYZ is not defined in packa= ge body."

--
=
Thanks and Regards,
Aditya Toshniwal=
Software Engineer |= =C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE&quo= t;


--
=
Thanks & Regar= ds
Akshay Joshi
= Sr. Software Architect
<= /div>
EnterpriseDB Software India Private Limited
Mobile: +91 976-788-8246
<= /div>


--
Adi= tya Toshniwal
Software Engineer |=C2=A0EnterpriseDB India |=C2=A0Pune
"Don't Complain a= bout Heat, Plant a TREE"
--00000000000055c7f9058af7bc35-- --00000000000055c7fc058af7bc37 Content-Type: application/octet-stream; name="RM4329_v2.patch" Content-Disposition: attachment; filename="RM4329_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwqdsv6s0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvX19pbml0X18ucHkKaW5kZXggNDRkNTVkYTguLjZkMWE4 MGI0IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRfXy5weQpAQCAtMTUsNyArMTUs NiBAQCBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUK IAotZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2sKIGZyb20gZmxhc2sgaW1wb3J0IHVybF9mb3Is IFJlc3BvbnNlLCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIHNlc3Npb24sIFwKICAgICBjdXJy ZW50X2FwcAogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0CkBAIC0zMywxMCArMzIs MTAgQEAgZnJvbSBwZ2FkbWluLnNldHRpbmdzIGltcG9ydCBnZXRfc2V0dGluZwogCiBmcm9tIGNv bmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQg ZGIsIERlYnVnZ2VyRnVuY3Rpb25Bcmd1bWVudHMKK2Zyb20gcGdhZG1pbi50b29scy5kZWJ1Z2dl ci51dGlscy5kZWJ1Z2dlcl9pbnN0YW5jZSBpbXBvcnQgRGVidWdnZXJJbnN0YW5jZQogCiAjIENv bnN0YW50cwogQVNZTkNfT0sgPSAxCi1kZWJ1Z2dlcl9jbG9zZV9zZXNzaW9uX2xvY2sgPSBMb2Nr KCkKIAogCiBjbGFzcyBEZWJ1Z2dlck1vZHVsZShQZ0FkbWluTW9kdWxlKToKQEAgLTIzNCwxNCAr MjMzLDcgQEAgY2xhc3MgRGVidWdnZXJNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgICAgIDpw YXJhbSB1c2VyOgogICAgICAgICA6cmV0dXJuOgogICAgICAgICAiIiIKLSAgICAgICAgd2l0aCBk ZWJ1Z2dlcl9jbG9zZV9zZXNzaW9uX2xvY2s6Ci0gICAgICAgICAgICBpZiAnZGVidWdnZXJEYXRh JyBpbiBzZXNzaW9uOgotICAgICAgICAgICAgICAgIGZvciB0cmFuc19pZCBpbiBzZXNzaW9uWydk ZWJ1Z2dlckRhdGEnXToKLSAgICAgICAgICAgICAgICAgICAgY2xvc2VfZGVidWdnZXJfc2Vzc2lv bih0cmFuc19pZCkKLQotICAgICAgICAgICAgICAgICMgRGVsZXRlIHRoZSBhbGwgZGVidWdnZXIg ZGF0YSBmcm9tIHNlc3Npb24gdmFyaWFibGUKLSAgICAgICAgICAgICAgICBkZWwgc2Vzc2lvblsn ZGVidWdnZXJEYXRhJ10KLSAgICAgICAgICAgICAgICBkZWwgc2Vzc2lvblsnZnVuY3Rpb25EYXRh J10KKyAgICAgICAgY2xvc2VfZGVidWdnZXJfc2Vzc2lvbihOb25lLCBjbG9zZV9hbGw9VHJ1ZSkK IAogCiBibHVlcHJpbnQgPSBEZWJ1Z2dlck1vZHVsZShNT0RVTEVfTkFNRSwgX19uYW1lX18pCkBA IC0yOTEsMjYgKzI4Myw2IEBAIGRlZiBzY3JpcHRfZGVidWdnZXJfZGlyZWN0X2pzKCk6CiAgICAg KQogCiAKLWRlZiB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwg ZGF0YSk6Ci0gICAgIiIiCi0gICAgVXBkYXRlIHRoZSBzZXNzaW9uIHZhcmlhYmxlcyByZXF1aXJl ZCBmb3IgZGVidWdnZXIgd2l0aCB0cmFuc2FjdGlvbiBJRAotICAgICIiIgotICAgIGRlYnVnZ2Vy X2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGRlYnVnZ2VyX2RhdGFbc3RyKHRy YW5zX2lkKV0gPSBkYXRhCi0KLSAgICBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXSA9IGRlYnVnZ2Vy X2RhdGEKLQotCi1kZWYgdXBkYXRlX3Nlc3Npb25fZnVuY3Rpb25fdHJhbnNhY3Rpb24odHJhbnNf aWQsIGRhdGEpOgotICAgICIiIgotICAgIFVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZXMgb2Yg ZnVuY3Rpb25zIHJlcXVpcmVkIHRvIGRlYnVnIHdpdGgKLSAgICB0cmFuc2FjdGlvbiBJRAotICAg ICIiIgotICAgIGZ1bmN0aW9uX2RhdGEgPSBzZXNzaW9uWydmdW5jdGlvbkRhdGEnXQotICAgIGZ1 bmN0aW9uX2RhdGFbc3RyKHRyYW5zX2lkKV0gPSBkYXRhCi0gICAgc2Vzc2lvblsnZnVuY3Rpb25E YXRhJ10gPSBmdW5jdGlvbl9kYXRhCi0KLQogQGJsdWVwcmludC5yb3V0ZSgKICAgICAnL2luaXQv PG5vZGVfdHlwZT4vPGludDpzaWQ+LzxpbnQ6ZGlkPi88aW50OnNjaWQ+LzxpbnQ6ZmlkPicsCiAg ICAgbWV0aG9kcz1bJ0dFVCddLCBlbmRwb2ludD0naW5pdF9mb3JfZnVuY3Rpb24nCkBAIC0zMzIs NiArMzA0LDggQEAgZGVmIGluaXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQsIGRpZCwgc2NpZCwg ZmlkLCB0cmlkPU5vbmUpOgogICAgIG5vdCByZXF1aXJlIHRoZXNlIGRhdGEgYmVjYXVzZSB1c2Vy IHdpbGwKICAgICBwcm92aWRlIGFsbCB0aGUgYXJndW1lbnRzIGFuZCBvdGhlciBmdW5jdGlvbnMg aW5mb3JtYXRpb24gdGhyb3VnaCBhbm90aGVyCiAgICAgc2Vzc2lvbiB0byBpbnZva2UgdGhlIHRh cmdldC4KKyAgICBJdCB3aWxsIGFsc28gY3JlYXRlIGEgdW5pcXVlIHRyYW5zYWN0aW9uIGlkIGFu ZCBzdG9yZSB0aGUgaW5mb3JtYXRpb24KKyAgICBpbnRvIHNlc3Npb24gdmFyaWFibGUuCiAKICAg ICBQYXJhbWV0ZXJzOgogICAgICAgICBub2RlX3R5cGUKQEAgLTQwNCwxMCArMzc4LDE5IEBAIGRl ZiBpbml0X2Z1bmN0aW9uKG5vZGVfdHlwZSwgc2lkLCBkaWQsIHNjaWQsIGZpZCwgdHJpZD1Ob25l KToKIAogICAgICMgQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gaXMgYWN0dWFsbHkgZGVidWdnYWJs ZS4uLgogICAgIGlmIHJfc2V0Wydyb3dzJ11bMF06CisgICAgICAgICMgSWYgZnVuYy9wcm9jIGlz IG5vdCBkZWZpbmVkIGluIHBhY2thZ2UgYm9keQorICAgICAgICAjIHRoZW4gaXQgaXMgbm90IGRl YnVnZ2FibGUKKyAgICAgICAgaWYgKHJfc2V0Wydyb3dzJ11bMF1bJ3BrZ25hbWUnXSBpcyBub3Qg Tm9uZSBvcgorICAgICAgICAgICAgcl9zZXRbJ3Jvd3MnXVswXVsncGtnbmFtZSddICE9ICcnKSBh bmQgXAorICAgICAgICAgICAgICAgIHJfc2V0Wydyb3dzJ11bMF1bJ3Byb3NyYyddID09ICcnOgor ICAgICAgICAgICAgcmV0X3N0YXR1cyA9IEZhbHNlCisgICAgICAgICAgICBtc2cgPSByX3NldFsn cm93cyddWzBdWyduYW1lJ10gKyAnICcgKyBcCisgICAgICAgICAgICAgICAgZ2V0dGV4dCgiaXMg bm90IGRlZmluZWQgaW4gcGFja2FnZSBib2R5LiIpCisKICAgICAgICAgIyBGdW5jdGlvbiB3aXRo IGEgY29sb24gaW4gdGhlIG5hbWUgY2Fubm90IGJlIGRlYnVnZ2VkLgogICAgICAgICAjIElmIHRo aXMgaXMgYW4gRURCIHdyYXBwZWQgZnVuY3Rpb24sIG5vIGRlYnVnZ2luZyBhbGxvd2VkCiAgICAg ICAgICMgRnVuY3Rpb24gd2l0aCByZXR1cm4gdHlwZSAidHJpZ2dlciIgY2Fubm90IGJlIGRlYnVn Z2VkLgotICAgICAgICBpZiAiOiIgaW4gcl9zZXRbJ3Jvd3MnXVswXVsnbmFtZSddOgorICAgICAg ICBlbGlmICI6IiBpbiByX3NldFsncm93cyddWzBdWyduYW1lJ106CiAgICAgICAgICAgICByZXRf c3RhdHVzID0gRmFsc2UKICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoCiAgICAgICAgICAgICAg ICAgIkZ1bmN0aW9ucyB3aXRoIGEgY29sb24gaW4gdGhlIG5hbWUgY2Fubm90IGJlIGRlYnVnZ2Vk LiIpCkBAIC00NjksMTIgKzQ1Miw2IEBAIGRlZiBpbml0X2Z1bmN0aW9uKG5vZGVfdHlwZSwgc2lk LCBkaWQsIHNjaWQsIGZpZCwgdHJpZD1Ob25lKToKICAgICAgICAgY3VycmVudF9hcHAubG9nZ2Vy LmRlYnVnKG1zZykKICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihtc2cpCiAK LSAgICAjIFN0b3JlIHRoZSBmdW5jdGlvbiBpbmZvcm1hdGlvbiBpbiBzZXNzaW9uIHZhcmlhYmxl Ci0gICAgaWYgJ2Z1bmNEYXRhJyBub3QgaW4gc2Vzc2lvbjoKLSAgICAgICAgZnVuY3Rpb25fZGF0 YSA9IGRpY3QoKQotICAgIGVsc2U6Ci0gICAgICAgIGZ1bmN0aW9uX2RhdGEgPSBzZXNzaW9uWydm dW5jRGF0YSddCi0KICAgICBkYXRhID0geyduYW1lJzogcl9zZXRbJ3Jvd3MnXVswXVsncHJvYXJn bmFtZXMnXSwKICAgICAgICAgICAgICd0eXBlJzogcl9zZXRbJ3Jvd3MnXVswXVsncHJvYXJndHlw ZW5hbWVzJ10sCiAgICAgICAgICAgICAndXNlX2RlZmF1bHQnOiByX3NldFsncm93cyddWzBdWydw cm9uYXJnZGVmYXVsdHMnXSwKQEAgLTUwMiw3ICs0NzksOSBAQCBkZWYgaW5pdF9mdW5jdGlvbihu b2RlX3R5cGUsIHNpZCwgZGlkLCBzY2lkLCBmaWQsIHRyaWQ9Tm9uZSk6CiAKICAgICByX3NldFsn cm93cyddWzBdWydyZXF1aXJlX2lucHV0J10gPSBkYXRhWydyZXF1aXJlX2lucHV0J10KIAotICAg IGZ1bmN0aW9uX2RhdGEgPSB7CisgICAgIyBDcmVhdGUgYSBkZWJ1Z2dlciBpbnN0YW5jZQorICAg IGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNlKCkKKyAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGEg PSB7CiAgICAgICAgICdvaWQnOiBmaWQsCiAgICAgICAgICduYW1lJzogcl9zZXRbJ3Jvd3MnXVsw XVsnbmFtZSddLAogICAgICAgICAnaXNfZnVuYyc6IHJfc2V0Wydyb3dzJ11bMF1bJ2lzZnVuYydd LApAQCAtNTIyLDEwICs1MDEsMTEgQEAgZGVmIGluaXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQs IGRpZCwgc2NpZCwgZmlkLCB0cmlkPU5vbmUpOgogICAgICAgICAnYXJnc192YWx1ZSc6ICcnCiAg ICAgfQogCi0gICAgc2Vzc2lvblsnZnVuY0RhdGEnXSA9IGZ1bmN0aW9uX2RhdGEKLQogICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgIGRhdGE9cl9zZXRbJ3Jvd3MnXSwKKyAg ICAgICAgZGF0YT1kaWN0KAorICAgICAgICAgICAgZGVidWdfaW5mbz1yX3NldFsncm93cyddLAor ICAgICAgICAgICAgdHJhbnNfaWQ9ZGVfaW5zdC50cmFuc19pZAorICAgICAgICApLAogICAgICAg ICBzdGF0dXM9MjAwCiAgICAgKQogCkBAIC01MzMsMTYgKzUxMywxNSBAQCBkZWYgaW5pdF9mdW5j dGlvbihub2RlX3R5cGUsIHNpZCwgZGlkLCBzY2lkLCBmaWQsIHRyaWQ9Tm9uZSk6CiBAYmx1ZXBy aW50LnJvdXRlKCcvZGlyZWN0LzxpbnQ6dHJhbnNfaWQ+JywgbWV0aG9kcz1bJ0dFVCddLCBlbmRw b2ludD0nZGlyZWN0JykKIEBsb2dpbl9yZXF1aXJlZAogZGVmIGRpcmVjdF9uZXcodHJhbnNfaWQp OgotICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQorICAgIGRlX2lu c3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQorCiAgICAgIyBSZXR1cm4gZnJvbSB0aGUg ZnVuY3Rpb24gaWYgdHJhbnNhY3Rpb24gaWQgbm90IGZvdW5kCi0gICAgaWYgc3RyKHRyYW5zX2lk KSBub3QgaW4gZGVidWdnZXJfZGF0YToKKyAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGEgaXMg Tm9uZToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzog VHJ1ZX0pCiAKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCi0KICAgICAj IGlmIGluZGlyZWN0IGRlYnVnZ2luZyBwYXNzIHZhbHVlIDAgdG8gY2xpZW50IGFuZCBmb3IgZGly ZWN0IGRlYnVnZ2luZwogICAgICMgcGFzcyBpdCB0byAxCi0gICAgZGVidWdfdHlwZSA9IDAgaWYg b2JqWydkZWJ1Z190eXBlJ10gPT0gJ2luZGlyZWN0JyBlbHNlIDEKKyAgICBkZWJ1Z190eXBlID0g MCBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RlYnVnX3R5cGUnXSA9PSAnaW5kaXJlY3QnIGVs c2UgMQogCiAgICAgIiIiCiAgICAgQW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgYXJlIG5vdCBh dXRvbWF0aWNhbGx5IEdQVSBhY2NlbGVyYXRlZCBhbmQgYnkKQEAgLTU3MiwxMiArNTUxLDExIEBA IGRlZiBkaXJlY3RfbmV3KHRyYW5zX2lkKToKIAogICAgIGZ1bmN0aW9uX2FyZ3VtZW50cyA9ICco JwogICAgIGlmICdmdW5jdGlvbkRhdGEnIGluIHNlc3Npb246Ci0gICAgICAgIHNlc3Npb25fZnVu Y3Rpb25fZGF0YSA9IHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSddW3N0cih0cmFuc19pZCldCi0gICAg ICAgIGlmICdhcmdzX25hbWUnIGluIHNlc3Npb25fZnVuY3Rpb25fZGF0YSBhbmQgXAotICAgICAg ICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXSBpcyBub3QgTm9uZSBhbmQg XAotICAgICAgICAgICAgICAgIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc19uYW1lJ10gIT0g Jyc6Ci0gICAgICAgICAgICBhcmdzX25hbWVfbGlzdCA9IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsn YXJnc19uYW1lJ10uc3BsaXQoIiwiKQotICAgICAgICAgICAgYXJnc190eXBlX2xpc3QgPSBzZXNz aW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKKyAgICAgICAgaWYgJ2Fy Z3NfbmFtZScgaW4gZGVfaW5zdC5mdW5jdGlvbl9kYXRhIGFuZCBcCisgICAgICAgICAgICBkZV9p bnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddIGlzIG5vdCBOb25lIGFuZCBcCisgICAgICAg ICAgICAgICAgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXSAhPSAnJzoKKyAgICAg ICAgICAgIGFyZ3NfbmFtZV9saXN0ID0gZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUn XS5zcGxpdCgiLCIpCisgICAgICAgICAgICBhcmdzX3R5cGVfbGlzdCA9IGRlX2luc3QuZnVuY3Rp b25fZGF0YVsnYXJnc190eXBlJ10uc3BsaXQoIiwiKQogICAgICAgICAgICAgaW5kZXggPSAwCiAg ICAgICAgICAgICBmb3IgYXJnc19uYW1lIGluIGFyZ3NfbmFtZV9saXN0OgogICAgICAgICAgICAg ICAgIGZ1bmN0aW9uX2FyZ3VtZW50cyA9ICd7fXt9IHt9LCAnLmZvcm1hdChmdW5jdGlvbl9hcmd1 bWVudHMsCkBAIC01OTIsNDAgKzU3MCw0MiBAQCBkZWYgZGlyZWN0X25ldyh0cmFuc19pZCk6CiAK ICAgICBsYXlvdXQgPSBnZXRfc2V0dGluZygnRGVidWdnZXIvTGF5b3V0JykKIAorICAgIGZ1bmN0 aW9uX25hbWVfd2l0aF9hcmd1bWVudHMgPSBcCisgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0 YVsnZnVuY3Rpb25fbmFtZSddICsgZnVuY3Rpb25fYXJndW1lbnRzCisKICAgICByZXR1cm4gcmVu ZGVyX3RlbXBsYXRlKAogICAgICAgICAiZGVidWdnZXIvZGlyZWN0Lmh0bWwiLAogICAgICAgICBf PWdldHRleHQsCi0gICAgICAgIGZ1bmN0aW9uX25hbWU9b2JqWydmdW5jdGlvbl9uYW1lJ10sCisg ICAgICAgIGZ1bmN0aW9uX25hbWU9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlvbl9uYW1l J10sCiAgICAgICAgIHVuaXF1ZUlkPXRyYW5zX2lkLAogICAgICAgICBkZWJ1Z190eXBlPWRlYnVn X3R5cGUsCiAgICAgICAgIGlzX2Rlc2t0b3BfbW9kZT1jdXJyZW50X2FwcC5QR0FETUlOX1JVTlRJ TUUsCiAgICAgICAgIGlzX2xpbnV4PWlzX2xpbnV4X3BsYXRmb3JtLAogICAgICAgICBjbGllbnRf cGxhdGZvcm09dXNlcl9hZ2VudC5wbGF0Zm9ybSwKLSAgICAgICAgZnVuY3Rpb25fbmFtZV93aXRo X2FyZ3VtZW50cz1vYmpbJ2Z1bmN0aW9uX25hbWUnXSArIGZ1bmN0aW9uX2FyZ3VtZW50cywKKyAg ICAgICAgZnVuY3Rpb25fbmFtZV93aXRoX2FyZ3VtZW50cz1mdW5jdGlvbl9uYW1lX3dpdGhfYXJn dW1lbnRzLAogICAgICAgICBsYXlvdXQ9bGF5b3V0CiAgICAgKQogCiAKIEBibHVlcHJpbnQucm91 dGUoCi0gICAgJy9pbml0aWFsaXplX3RhcmdldC88ZGVidWdfdHlwZT4vPGludDpzaWQ+LzxpbnQ6 ZGlkPi88aW50OnNjaWQ+LycKLSAgICAnPGludDpmdW5jX2lkPicsCisgICAgJy9pbml0aWFsaXpl X3RhcmdldC88ZGVidWdfdHlwZT4vPGludDp0cmFuc19pZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPi8n CisgICAgJzxpbnQ6c2NpZD4vPGludDpmdW5jX2lkPicsCiAgICAgbWV0aG9kcz1bJ0dFVCcsICdQ T1NUJ10sCiAgICAgZW5kcG9pbnQ9J2luaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicKICkK IEBibHVlcHJpbnQucm91dGUoCi0gICAgJy9pbml0aWFsaXplX3RhcmdldC88ZGVidWdfdHlwZT4v PGludDpzaWQ+LzxpbnQ6ZGlkPi88aW50OnNjaWQ+LycKLSAgICAnPGludDpmdW5jX2lkPi88aW50 OnRyaV9pZD4nLAorICAgICcvaW5pdGlhbGl6ZV90YXJnZXQvPGRlYnVnX3R5cGU+LzxpbnQ6dHJh bnNfaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4vJworICAgICc8aW50OnNjaWQ+LzxpbnQ6ZnVuY19p ZD4vPGludDp0cmlfaWQ+JywKICAgICBtZXRob2RzPVsnR0VUJywgJ1BPU1QnXSwKICAgICBlbmRw b2ludD0naW5pdGlhbGl6ZV90YXJnZXRfZm9yX3RyaWdnZXInCiApCiBAbG9naW5fcmVxdWlyZWQK LWRlZiBpbml0aWFsaXplX3RhcmdldChkZWJ1Z190eXBlLCBzaWQsIGRpZCwgc2NpZCwgZnVuY19p ZCwgdHJpX2lkPU5vbmUpOgorZGVmIGluaXRpYWxpemVfdGFyZ2V0KGRlYnVnX3R5cGUsIHRyYW5z X2lkLCBzaWQsIGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICBzY2lkLCBmdW5jX2lkLCB0cmlf aWQ9Tm9uZSk6CiAgICAgIiIiCiAgICAgaW5pdGlhbGl6ZV90YXJnZXQoZGVidWdfdHlwZSwgc2lk LCBkaWQsIHNjaWQsIGZ1bmNfaWQsIHRyaV9pZCkKIAogICAgIFRoaXMgbWV0aG9kIGlzIHJlc3Bv bnNpYmxlIGZvciBjcmVhdGluZyBhbiBhc3luY2hyb25vdXMgY29ubmVjdGlvbi4KLSAgICBJdCB3 aWxsIGFsc28gY3JlYXRlIGEgdW5pcXVlIHRyYW5zYWN0aW9uIGlkIGFuZCBzdG9yZSB0aGUgaW5m b3JtYXRpb24KLSAgICBpbnRvIHNlc3Npb24gdmFyaWFibGUuCiAKICAgICBQYXJhbWV0ZXJzOgog ICAgICAgICBkZWJ1Z190eXBlCkBAIC03MTgsMTYgKzY5OCw2IEBAIGRlZiBpbml0aWFsaXplX3Rh cmdldChkZWJ1Z190eXBlLCBzaWQsIGRpZCwgc2NpZCwgZnVuY19pZCwgdHJpX2lkPU5vbmUpOgog CiAgICAgICAgIGZ1bmNfaWQgPSB0cl9zZXRbJ3Jvd3MnXVswXVsndGdmb2lkJ10KIAotICAgICMg Q3JlYXRlIGEgdW5pcXVlIGlkIGZvciB0aGUgdHJhbnNhY3Rpb24KLSAgICB0cmFuc19pZCA9IHN0 cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKLQotICAgICMgSWYgdGhlcmUgaXMgbm8gZGVi dWdnaW5nIGluZm9ybWF0aW9uIGluIHNlc3Npb24gdmFyaWFibGUgdGhlbiBjcmVhdGUKLSAgICAj IHRoZSBzdG9yZSB0aGF0IGluZm9ybWF0aW9uCi0gICAgaWYgJ2RlYnVnZ2VyRGF0YScgbm90IGlu IHNlc3Npb246Ci0gICAgICAgIGRlYnVnZ2VyX2RhdGEgPSBkaWN0KCkKLSAgICBlbHNlOgotICAg ICAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLQogICAgIHN0YXR1 cyA9IFRydWUKIAogICAgICMgRmluZCBvdXQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIHN0b3Jl IGl0IGluIHNlc3Npb24gdmFyaWFibGVzCkBAIC03NTYsNiArNzI2LDcgQEAgZGVmIGluaXRpYWxp emVfdGFyZ2V0KGRlYnVnX3R5cGUsIHNpZCwgZGlkLCBzY2lkLCBmdW5jX2lkLCB0cmlfaWQ9Tm9u ZSk6CiAgICAgIyBBZGQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gcGdhZG1p bjQgbG9nIGZpbGUKICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZGVidWcoIkRlYnVnZ2VyIHZlcnNp b24gaXM6ICVkIiwgZGVidWdnZXJfdmVyc2lvbikKIAorICAgIGRlX2luc3QgPSBEZWJ1Z2dlcklu c3RhbmNlKHRyYW5zX2lkKQogICAgICMgV2UgbmVlZCB0byBwYXNzIHRoZSB2YWx1ZSBlbnRlcmVk IGJ5IHRoZSB1c2VyIGluIGRpYWxvZyBmb3IgZGlyZWN0CiAgICAgIyBkZWJ1Z2dpbmcsIEhlcmUg d2UgZ2V0IHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGRpcmVjdCBkZWJ1Z2dpbmcgc28gdXBkYXRlCiAg ICAgIyB0aGUgc2Vzc2lvbiB2YXJpYWJsZXMgYWNjb3JkaW5nbHksIEZvciBpbmRpcmVjdCBkZWJ1 Z2dpbmcgdXNlciB3aWxsCkBAIC03NjQsNjUgKzczNSwyNiBAQCBkZWYgaW5pdGlhbGl6ZV90YXJn ZXQoZGVidWdfdHlwZSwgc2lkLCBkaWQsIHNjaWQsIGZ1bmNfaWQsIHRyaV9pZD1Ob25lKToKICAg ICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnUE9TVCc6CiAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRz KHJlcXVlc3QudmFsdWVzWydkYXRhJ10sIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGlmIGRh dGE6Ci0gICAgICAgICAgICBkID0gc2Vzc2lvblsnZnVuY0RhdGEnXQotICAgICAgICAgICAgZFsn YXJnc192YWx1ZSddID0gZGF0YQotICAgICAgICAgICAgc2Vzc2lvblsnZnVuY0RhdGEnXSA9IGQK KyAgICAgICAgICAgIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc192YWx1ZSddID0gZGF0YQog CiAgICAgIyBVcGRhdGUgdGhlIGRlYnVnZ2VyIGRhdGEgc2Vzc2lvbiB2YXJpYWJsZQogICAgICMg SGVyZSBmcmFtZV9pZCBpcyByZXF1aXJlZCB3aGVuIHVzZXIgZGVidWcgdGhlIG11bHRpbGV2ZWwg ZnVuY3Rpb24uCiAgICAgIyBXaGVuIHVzZXIgc2VsZWN0IHRoZSBmcmFtZSBmcm9tIGNsaWVudCB3 ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgZnJhbWUKICAgICAjIGhlcmUgYW5kIHNldCB0aGUgYnJlYWtw b2ludCBpbmZvcm1hdGlvbiBvbiB0aGF0IGZ1bmN0aW9uIG9pZAotICAgIGRlYnVnZ2VyX2RhdGFb c3RyKHRyYW5zX2lkKV0gPSB7CisgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhID0gewogICAgICAg ICAnY29ubl9pZCc6IGNvbm5faWQsCiAgICAgICAgICdzZXJ2ZXJfaWQnOiBzaWQsCiAgICAgICAg ICdkYXRhYmFzZV9pZCc6IGRpZCwKICAgICAgICAgJ3NjaGVtYV9pZCc6IHNjaWQsCiAgICAgICAg ICdmdW5jdGlvbl9pZCc6IGZ1bmNfaWQsCi0gICAgICAgICdmdW5jdGlvbl9uYW1lJzogc2Vzc2lv blsnZnVuY0RhdGEnXVsnbmFtZSddLAorICAgICAgICAnZnVuY3Rpb25fbmFtZSc6IGRlX2luc3Qu ZnVuY3Rpb25fZGF0YVsnbmFtZSddLAogICAgICAgICAnZGVidWdfdHlwZSc6IGRlYnVnX3R5cGUs CiAgICAgICAgICdkZWJ1Z2dlcl92ZXJzaW9uJzogZGVidWdnZXJfdmVyc2lvbiwKICAgICAgICAg J2ZyYW1lX2lkJzogMCwKICAgICAgICAgJ3Jlc3RhcnRfZGVidWcnOiAwCiAgICAgfQogCi0gICAg IyBTdG9yZSB0aGUgZ3JpZCBkaWN0aW9uYXJ5IGludG8gdGhlIHNlc3Npb24gdmFyaWFibGUKLSAg ICBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXSA9IGRlYnVnZ2VyX2RhdGEKLQotICAgICMgVXBkYXRl IHRoZSBmdW5jdGlvbiBzZXNzaW9uICBpbmZvcm1hdGlvbiB3aXRoIHNhbWUgdHJhbnNhY3Rpb24g aWQKLSAgICBmdW5jX2RhdGEgPSBzZXNzaW9uWydmdW5jRGF0YSddCi0KLSAgICAjIFN0b3JlIHRo ZSBmdW5jdGlvbiBpbmZvcm1hdGlvbiBpbiBzZXNzaW9uIHZhcmlhYmxlCi0gICAgaWYgJ2Z1bmN0 aW9uRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgIGZ1bmN0aW9uX2RhdGEgPSBkaWN0KCkK LSAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRh J10KLQotICAgIGZ1bmN0aW9uX2RhdGFbc3RyKHRyYW5zX2lkKV0gPSB7Ci0gICAgICAgICdvaWQn OiBmdW5jX2RhdGFbJ29pZCddLAotICAgICAgICAnbmFtZSc6IGZ1bmNfZGF0YVsnbmFtZSddLAot ICAgICAgICAnaXNfZnVuYyc6IGZ1bmNfZGF0YVsnaXNfZnVuYyddLAotICAgICAgICAnaXNfcHBh c19kYXRhYmFzZSc6IGZ1bmNfZGF0YVsnaXNfcHBhc19kYXRhYmFzZSddLAotICAgICAgICAnaXNf Y2FsbGFibGUnOiBmdW5jX2RhdGFbJ2lzX2NhbGxhYmxlJ10sCi0gICAgICAgICdzY2hlbWEnOiBm dW5jX2RhdGFbJ3NjaGVtYSddLAotICAgICAgICAnbGFuZ3VhZ2UnOiBmdW5jX2RhdGFbJ2xhbmd1 YWdlJ10sCi0gICAgICAgICdyZXR1cm5fdHlwZSc6IGZ1bmNfZGF0YVsncmV0dXJuX3R5cGUnXSwK LSAgICAgICAgJ2FyZ3NfdHlwZSc6IGZ1bmNfZGF0YVsnYXJnc190eXBlJ10sCi0gICAgICAgICdh cmdzX25hbWUnOiBmdW5jX2RhdGFbJ2FyZ3NfbmFtZSddLAotICAgICAgICAnYXJnX21vZGUnOiBm dW5jX2RhdGFbJ2FyZ19tb2RlJ10sCi0gICAgICAgICd1c2VfZGVmYXVsdCc6IGZ1bmNfZGF0YVsn dXNlX2RlZmF1bHQnXSwKLSAgICAgICAgJ2RlZmF1bHRfdmFsdWUnOiBmdW5jX2RhdGFbJ2RlZmF1 bHRfdmFsdWUnXSwKLSAgICAgICAgJ3BrZ25hbWUnOiBmdW5jX2RhdGFbJ3BrZ25hbWUnXSwKLSAg ICAgICAgJ3BrZyc6IGZ1bmNfZGF0YVsncGtnJ10sCi0gICAgICAgICdyZXF1aXJlX2lucHV0Jzog ZnVuY19kYXRhWydyZXF1aXJlX2lucHV0J10sCi0gICAgICAgICdhcmdzX3ZhbHVlJzogZnVuY19k YXRhWydhcmdzX3ZhbHVlJ10KLSAgICB9Ci0KLSAgICAjIFVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJp YWJsZSBvZiBmdW5jdGlvbiBpbmZvcm1hdGlvbgotICAgIHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSdd ID0gZnVuY3Rpb25fZGF0YQotCi0gICAgIyBEZWxldGUgdGhlICdmdW5jRGF0YScgc2Vzc2lvbiB2 YXJpYWJsZXMgYXMgaXQgaXMgbm90IHVzZWQgbm93IGFzIHRhcmdldAotICAgICMgaXMgaW5pdGlh bGl6ZWQKLSAgICBkZWwgc2Vzc2lvblsnZnVuY0RhdGEnXQorICAgIGRlX2luc3QudXBkYXRlX3Nl c3Npb24oKQogCiAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzog c3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnZ2VyVHJh bnNJZCc6IHRyYW5zX2lkfSkKQEAgLTg0MywyNCArNzc1LDkgQEAgZGVmIGNsb3NlKHRyYW5zX2lk KToKICAgICAgICAgdHJhbnNfaWQKICAgICAgICAgLSB1bmlxdWUgdHJhbnNhY3Rpb24gaWQuCiAg ICAgIiIiCi0gICAgIyBBcyBkZWJ1Z2dlciBkYXRhIGlzIG5vdCBpbiBzZXNzaW9uIHRoYXQgbWVh bnMgd2UgaGF2ZSBhbHJlYWR5Ci0gICAgIyBkZWxldGVkIGFuZCBjbG9zZSB0aGUgdGFyZ2V0Ci0g ICAgaWYgJ2RlYnVnZ2VyRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IFRydWV9KQotCi0gICAgIyBSZXR1cm4gZnJv bSB0aGUgZnVuY3Rpb24gaWYgdHJhbnNhY3Rpb24gaWQgbm90IGZvdW5kCi0gICAgaWYgc3RyKHRy YW5zX2lkKSBub3QgaW4gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ106Ci0gICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IFRydWV9KQogCi0gICAgd2l0aCBkZWJ1 Z2dlcl9jbG9zZV9zZXNzaW9uX2xvY2s6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNsb3Nl X2RlYnVnZ2VyX3Nlc3Npb24odHJhbnNfaWQpCi0gICAgICAgICAgICAjIERlbGV0ZSB0aGUgZXhp c3RpbmcgZGVidWdnZXIgZGF0YSBpbiBzZXNzaW9uIHZhcmlhYmxlCi0gICAgICAgICAgICBkZWwg c2Vzc2lvblsnZGVidWdnZXJEYXRhJ11bc3RyKHRyYW5zX2lkKV0KLSAgICAgICAgICAgIGRlbCBz ZXNzaW9uWydmdW5jdGlvbkRhdGEnXVtzdHIodHJhbnNfaWQpXQotICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogVHJ1ZX0pCi0gICAgICAgIGV4Y2Vw dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQorICAgIGNsb3NlX2RlYnVnZ2VyX3Nlc3Npb24odHJhbnNfaWQp CisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogVHJ1ZX0pCiAK IAogQGJsdWVwcmludC5yb3V0ZSgKQEAgLTg3OCw4ICs3OTUsOCBAQCBkZWYgcmVzdGFydF9kZWJ1 Z2dpbmcodHJhbnNfaWQpOgogICAgICAgICAtIFRyYW5zYWN0aW9uIElECiAgICAgIiIiCiAKLSAg ICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJh bnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3Rh bmNlKHRyYW5zX2lkKQorICAgIGlmIGRlX2luc3QuZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgZGF0YT17CiAgICAg ICAgICAgICAgICAgJ3N0YXR1cyc6IEZhbHNlLApAQCAtODg5LDQ0ICs4MDYsMzkgQEAgZGVmIHJl c3RhcnRfZGVidWdnaW5nKHRyYW5zX2lkKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAK LSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNv bm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQotICAgIGNvbm4gPSBtYW5hZ2VyLmNv bm5lY3Rpb24oZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpbJ2Nvbm5faWQnXSkK KyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9t YW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3NlcnZlcl9pZCddKQorICAg IGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2Vy X2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9k YXRhWydjb25uX2lkJ10pCiAKICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgogICAgICAgICAjIFVw ZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZSAicmVzdGFydF9kZWJ1ZyIgdG8ga25vdyB0aGF0IHNh bWUKICAgICAgICAgIyBmdW5jdGlvbiBkZWJ1Z2dpbmcgaGFzIGJlZW4gcmVzdGFydGVkLiBEZWxl dGUgdGhlIGV4aXN0aW5nIGRlYnVnZ2VyCiAgICAgICAgICMgZGF0YSBpbiBzZXNzaW9uIHZhcmlh YmxlIGFuZCB1cGRhdGUgd2l0aCBuZXcgZGF0YQotICAgICAgICBpZiBvYmpbJ3Jlc3RhcnRfZGVi dWcnXSA9PSAwOgotICAgICAgICAgICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2Vy RGF0YSddCi0gICAgICAgICAgICBzZXNzaW9uX29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5z X2lkKV0KLSAgICAgICAgICAgIHNlc3Npb25fb2JqWydyZXN0YXJ0X2RlYnVnJ10gPSAxCi0gICAg ICAgICAgICB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vz c2lvbl9vYmopCi0KLSAgICAgICAgIyBTdG9yZSB0aGUgZnVuY3Rpb24gaW5mb3JtYXRpb24gaW4g c2Vzc2lvbiB2YXJpYWJsZQotICAgICAgICBpZiAnZnVuY3Rpb25EYXRhJyBub3QgaW4gc2Vzc2lv bjoKLSAgICAgICAgICAgIGZ1bmN0aW9uX2RhdGEgPSBkaWN0KCkKLSAgICAgICAgZWxzZToKLSAg ICAgICAgICAgIHNlc3Npb25fZnVuY3Rpb25fZGF0YSA9IHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSdd W3N0cih0cmFuc19pZCldCi0gICAgICAgICAgICBmdW5jdGlvbl9kYXRhID0gewotICAgICAgICAg ICAgICAgICdzZXJ2ZXJfaWQnOiBvYmpbJ3NlcnZlcl9pZCddLAotICAgICAgICAgICAgICAgICdk YXRhYmFzZV9pZCc6IG9ialsnZGF0YWJhc2VfaWQnXSwKLSAgICAgICAgICAgICAgICAnc2NoZW1h X2lkJzogb2JqWydzY2hlbWFfaWQnXSwKLSAgICAgICAgICAgICAgICAnZnVuY3Rpb25faWQnOiBv YmpbJ2Z1bmN0aW9uX2lkJ10sCi0gICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogc3RyKHRyYW5z X2lkKSwKLSAgICAgICAgICAgICAgICAncHJvYXJnbW9kZXMnOiBzZXNzaW9uX2Z1bmN0aW9uX2Rh dGFbJ2FyZ19tb2RlJ10sCi0gICAgICAgICAgICAgICAgJ3Byb2FyZ3R5cGVuYW1lcyc6IHNlc3Np b25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBlJ10sCi0gICAgICAgICAgICAgICAgJ3Byb25hcmdk ZWZhdWx0cyc6IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsndXNlX2RlZmF1bHQnXSwKLSAgICAgICAg ICAgICAgICAncHJvYXJnZGVmYXVsdHMnOiBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2RlZmF1bHRf dmFsdWUnXSwKLSAgICAgICAgICAgICAgICAncHJvYXJnbmFtZXMnOiBzZXNzaW9uX2Z1bmN0aW9u X2RhdGFbJ2FyZ3NfbmFtZSddLAotICAgICAgICAgICAgICAgICdyZXF1aXJlX2lucHV0Jzogc2Vz c2lvbl9mdW5jdGlvbl9kYXRhWydyZXF1aXJlX2lucHV0J10KLSAgICAgICAgICAgIH0KKyAgICAg ICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydyZXN0YXJ0X2RlYnVnJ10gPT0gMDoKKyAgICAg ICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsncmVzdGFydF9kZWJ1ZyddID0gMQorICAgICAg ICAgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigpCisKKyAgICAgICAgZGVfaW5zdC5mdW5jdGlv bl9kYXRhID0geworICAgICAgICAgICAgJ3NlcnZlcl9pZCc6IGRlX2luc3QuZGVidWdnZXJfZGF0 YVsnc2VydmVyX2lkJ10sCisgICAgICAgICAgICAnZGF0YWJhc2VfaWQnOiBkZV9pbnN0LmRlYnVn Z2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgICAgICAnc2NoZW1hX2lkJzogZGVfaW5z dC5kZWJ1Z2dlcl9kYXRhWydzY2hlbWFfaWQnXSwKKyAgICAgICAgICAgICdmdW5jdGlvbl9pZCc6 IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZnVuY3Rpb25faWQnXSwKKyAgICAgICAgICAgICd0cmFu c19pZCc6IHN0cih0cmFuc19pZCksCisgICAgICAgICAgICAncHJvYXJnbW9kZXMnOiBkZV9pbnN0 LmZ1bmN0aW9uX2RhdGFbJ2FyZ19tb2RlJ10sCisgICAgICAgICAgICAncHJvYXJndHlwZW5hbWVz JzogZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX3R5cGUnXSwKKyAgICAgICAgICAgICdwcm9u YXJnZGVmYXVsdHMnOiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3VzZV9kZWZhdWx0J10sCisgICAg ICAgICAgICAncHJvYXJnZGVmYXVsdHMnOiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2RlZmF1bHRf dmFsdWUnXSwKKyAgICAgICAgICAgICdwcm9hcmduYW1lcyc6IGRlX2luc3QuZnVuY3Rpb25fZGF0 YVsnYXJnc19uYW1lJ10sCisgICAgICAgICAgICAncmVxdWlyZV9pbnB1dCc6IGRlX2luc3QuZnVu Y3Rpb25fZGF0YVsncmVxdWlyZV9pbnB1dCddCisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgZGF0YT17Ci0gICAgICAgICAgICAgICAg J3N0YXR1cyc6IFRydWUsICdyZXN0YXJ0X2RlYnVnJzogVHJ1ZSwgJ3Jlc3VsdCc6IGZ1bmN0aW9u X2RhdGEKKyAgICAgICAgICAgICAgICAnc3RhdHVzJzogVHJ1ZSwgJ3Jlc3RhcnRfZGVidWcnOiBU cnVlLAorICAgICAgICAgICAgICAgICdyZXN1bHQnOiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGEKICAg ICAgICAgICAgIH0KICAgICAgICAgKQogICAgIGVsc2U6CkBAIC05MzUsOCArODQ3LDcgQEAgZGVm IHJlc3RhcnRfZGVidWdnaW5nKHRyYW5zX2lkKToKICAgICAgICAgICAgICdOb3QgY29ubmVjdGVk IHRvIHNlcnZlciBvciBjb25uZWN0aW9uIHdpdGggdGhlIHNlcnZlciBoYXMgJwogICAgICAgICAg ICAgJ2JlZW4gY2xvc2VkLicKICAgICAgICAgKQotCi0gICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVzfSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0JzogcmVzdWx0fSkKIAogCiBA Ymx1ZXByaW50LnJvdXRlKApAQCAtOTU2LDggKzg2Nyw4IEBAIGRlZiBzdGFydF9kZWJ1Z2dlcl9s aXN0ZW5lcih0cmFuc19pZCk6CiAgICAgICAgIC0gVHJhbnNhY3Rpb24gSUQKICAgICAiIiIKIAot ICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0 cmFuc19pZCkgbm90IGluIGRlYnVnZ2VyX2RhdGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5z dGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAg ICAgICAgICAgICAgICAnc3RhdHVzJzogRmFsc2UsCkBAIC05NjcsMTcgKzg3OCwxOCBAQCBkZWYg c3RhcnRfZGVidWdnZXJfbGlzdGVuZXIodHJhbnNfaWQpOgogICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgIH0KICAgICAgICAgKQotICAgIG9iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5z X2lkKV0KIAogICAgIGRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAg bWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIob2JqWydzZXJ2ZXJfaWQnXSkKLSAg ICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5f aWQ9b2JqWydjb25uX2lkJ10pCisgICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFn ZXIoZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXJ2ZXJfaWQnXSkKKyAgICBjb25uID0gbWFuYWdl ci5jb25uZWN0aW9uKAorICAgICAgICBkaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkYXRhYmFz ZV9pZCddLAorICAgICAgICBjb25uX2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnY29ubl9pZCdd KQogCiAgICAgdmVyID0gbWFuYWdlci52ZXJzaW9uCiAgICAgc2VydmVyX3R5cGUgPSBtYW5hZ2Vy LnNlcnZlcl90eXBlCiAKICAgICAjIGZpbmQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIGV4ZWN1 dGUgdGhlIHF1ZXJ5IGFjY29yZGluZ2x5Ci0gICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVnZ2Vy X3ZlcnNpb24nXQorICAgIGRiZ192ZXJzaW9uID0gZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkZWJ1 Z2dlcl92ZXJzaW9uJ10KICAgICBpZiBkYmdfdmVyc2lvbiA8PSAyOgogICAgICAgICB0ZW1wbGF0 ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92MScKICAgICBlbHNlOgpAQCAtOTg4LDk0ICs5MDAsOTEg QEAgZGVmIHN0YXJ0X2RlYnVnZ2VyX2xpc3RlbmVyKHRyYW5zX2lkKToKICAgICBpZiByZXF1ZXN0 Lm1ldGhvZCA9PSAnUE9TVCc6CiAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QudmFs dWVzWydkYXRhJ10sIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAg ICAgICBmdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRhJ10KLSAgICAgICAgICAg IHNlc3Npb25fb2JqID0gZnVuY3Rpb25fZGF0YVtzdHIodHJhbnNfaWQpXQotICAgICAgICAgICAg c2Vzc2lvbl9vYmpbJ2FyZ3NfdmFsdWUnXSA9IGRhdGEKLSAgICAgICAgICAgIHVwZGF0ZV9zZXNz aW9uX2Z1bmN0aW9uX3RyYW5zYWN0aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICAgICAg ICAgIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc192YWx1ZSddID0gZGF0YQorICAgICAgICAg ICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigpCiAKICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgog CiAgICAgICAgICMgRm9yIHRoZSBkaXJlY3QgZGVidWdnaW5nIGV4dHJhY3QgdGhlIGZ1bmN0aW9u IGFyZ3VtZW50cyB2YWx1ZXMgZnJvbQogICAgICAgICAjIHVzZXIgYW5kIHBhc3MgdG8gamluamEg dGVtcGxhdGUgdG8gY3JlYXRlIHRoZSBxdWVyeSBmb3IgZXhlY3V0aW9uLgotICAgICAgICBpZiBv YmpbJ2RlYnVnX3R5cGUnXSA9PSAnZGlyZWN0JzoKKyAgICAgICAgaWYgZGVfaW5zdC5kZWJ1Z2dl cl9kYXRhWydkZWJ1Z190eXBlJ10gPT0gJ2RpcmVjdCc6CiAgICAgICAgICAgICBzdHJfcXVlcnkg PSAnJwotICAgICAgICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rp b25EYXRhJ11bc3RyKHRyYW5zX2lkKV0KLSAgICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25f ZGF0YVsncGtnJ10gPT0gMDoKKyAgICAgICAgICAgIGlmIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsn cGtnJ10gPT0gMDoKICAgICAgICAgICAgICAgICAjIEZvcm0gdGhlIGZ1bmN0aW9uIG5hbWUgd2l0 aCBzY2hlbWEgbmFtZQogICAgICAgICAgICAgICAgIGZ1bmNfbmFtZSA9IGRyaXZlci5xdElkZW50 KAogICAgICAgICAgICAgICAgICAgICBjb25uLAotICAgICAgICAgICAgICAgICAgICBzZXNzaW9u X2Z1bmN0aW9uX2RhdGFbJ3NjaGVtYSddLAotICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2Z1 bmN0aW9uX2RhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9u X2RhdGFbJ3NjaGVtYSddLAorICAgICAgICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2Rh dGFbJ25hbWUnXQogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg ICAgICAgICAgIyBGb3JtIHRoZSBlZGIgcGFja2FnZSBmdW5jdGlvbi9wcm9jZWR1cmUgbmFtZSB3 aXRoIHNjaGVtYSBuYW1lCiAgICAgICAgICAgICAgICAgZnVuY19uYW1lID0gZHJpdmVyLnF0SWRl bnQoCi0gICAgICAgICAgICAgICAgICAgIGNvbm4sIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnc2No ZW1hJ10sCi0gICAgICAgICAgICAgICAgICAgIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsncGtnbmFt ZSddLAotICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ25hbWUnXQor ICAgICAgICAgICAgICAgICAgICBjb25uLCBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3NjaGVtYSdd LAorICAgICAgICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3BrZ25hbWUnXSwK KyAgICAgICAgICAgICAgICAgICAgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWyduYW1lJ10KICAgICAg ICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGlmIG9ialsncmVzdGFydF9kZWJ1ZyddID09IDA6 CisgICAgICAgICAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Jlc3RhcnRfZGVidWcnXSA9 PSAwOgogICAgICAgICAgICAgICAgICMgcmVuZGVyIHRoZSBTUUwgdGVtcGxhdGUgYW5kIHNlbmQg dGhlIHF1ZXJ5IHRvIHNlcnZlcgotICAgICAgICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25f ZGF0YVsnbGFuZ3VhZ2UnXSA9PSAncGxwZ3NxbCc6CisgICAgICAgICAgICAgICAgaWYgZGVfaW5z dC5mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSddID09ICdwbHBnc3FsJzoKICAgICAgICAgICAgICAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2RlYnVnX3BscGdzcWxfZXhlY3V0ZV90YXJnZXQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAg ICAgICAgcGFja2dlX29pZD1zZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ3BrZyddLAotICAgICAgICAg ICAgICAgICAgICAgICAgZnVuY3Rpb25fb2lkPW9ialsnZnVuY3Rpb25faWQnXQorICAgICAgICAg ICAgICAgICAgICAgICAgcGFja2dlX29pZD1kZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3BrZyddLAor ICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fb2lkPWRlX2luc3QuZGVidWdnZXJfZGF0 YVsnZnVuY3Rpb25faWQnXQogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAg ZWxzZToKICAgICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAg ICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnX3NwbF9leGVjdXRlX3RhcmdldC5zcWwnXSksCi0g ICAgICAgICAgICAgICAgICAgICAgICBwYWNrZ2Vfb2lkPXNlc3Npb25fZnVuY3Rpb25fZGF0YVsn cGtnJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9vaWQ9b2JqWydmdW5jdGlv bl9pZCddCisgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZ2Vfb2lkPWRlX2luc3QuZnVuY3Rp b25fZGF0YVsncGtnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9vaWQ9ZGVf aW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlvbl9pZCddCiAgICAgICAgICAgICAgICAgICAgICkK ICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKICAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKIAotICAgICAgICAgICAgaWYgc2Vz c2lvbl9mdW5jdGlvbl9kYXRhWydhcmdfbW9kZSddOgorICAgICAgICAgICAgaWYgZGVfaW5zdC5m dW5jdGlvbl9kYXRhWydhcmdfbW9kZSddOgogICAgICAgICAgICAgICAgICMgSW4gRURCQVMgOTAs IGlmIGFuIFNQTC1mdW5jdGlvbiBoYXMgYm90aCBhbiBPVVQtcGFyYW1ldGVyCiAgICAgICAgICAg ICAgICAgIyBhbmQgYSByZXR1cm4gdmFsdWUgKHdoaWNoIGlzIG5vdCBwb3NzaWJsZSBvbiBQb3N0 Z3JlU1FMCiAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UpLCB0aGUgcmV0dXJuIHZhbHVlIGlz IHRyYW5zZm9ybWVkIGludG8gYW4gZXh0cmEKICAgICAgICAgICAgICAgICAjIE9VVC1wYXJhbWV0 ZXIgbmFtZWQgIl9yZXR2YWxfIgotICAgICAgICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25f ZGF0YVsnYXJnc19uYW1lJ106Ci0gICAgICAgICAgICAgICAgICAgIGFyZ19uYW1lID0gc2Vzc2lv bl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXS5zcGxpdCgiLCIpCisgICAgICAgICAgICAgICAg aWYgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXToKKyAgICAgICAgICAgICAgICAg ICAgYXJnX25hbWUgPSBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLnNwbGl0KCIs IikKICAgICAgICAgICAgICAgICAgICAgaWYgJ19yZXR2YWxfJyBpbiBhcmdfbmFtZToKLSAgICAg ICAgICAgICAgICAgICAgICAgIGFyZ19tb2RlID0gc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdf bW9kZSddLnNwbGl0KCIsIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19tb2RlID0gZGVf aW5zdC5mdW5jdGlvbl9kYXRhWydhcmdfbW9kZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAg ICAgICAgICAgIGFyZ19tb2RlLnBvcCgpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICAgICAgICAgICAgICBhcmdfbW9kZSA9IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJn X21vZGUnXS5zcGxpdCgiLCIpCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdfbW9kZSA9IGRl X2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnX21vZGUnXS5zcGxpdCgiLCIpCiAgICAgICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXJnX21vZGUgPSBzZXNzaW9uX2Z1bmN0aW9u X2RhdGFbJ2FyZ19tb2RlJ10uc3BsaXQoIiwiKQorICAgICAgICAgICAgICAgICAgICBhcmdfbW9k ZSA9IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnX21vZGUnXS5zcGxpdCgiLCIpCiAgICAgICAg ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFyZ19tb2RlID0gWydpJ10gKiBsZW4oCi0gICAg ICAgICAgICAgICAgICAgIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBlJ10uc3BsaXQo IiwiKQorICAgICAgICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfdHlw ZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGlmIHNlc3Np b25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBlJ106Ci0gICAgICAgICAgICAgICAgaWYgc2Vzc2lv bl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXToKLSAgICAgICAgICAgICAgICAgICAgYXJnX25h bWUgPSBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLnNwbGl0KCIsIikKKyAgICAg ICAgICAgIGlmIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc190eXBlJ106CisgICAgICAgICAg ICAgICAgaWYgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXToKKyAgICAgICAgICAg ICAgICAgICAgYXJnX25hbWUgPSBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLnNw bGl0KCIsIikKICAgICAgICAgICAgICAgICAgICAgaWYgJ19yZXR2YWxfJyBpbiBhcmdfbmFtZToK LSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ190eXBlID0gc2Vzc2lvbl9mdW5jdGlvbl9kYXRh WworICAgICAgICAgICAgICAgICAgICAgICAgYXJnX3R5cGUgPSBkZV9pbnN0LmZ1bmN0aW9uX2Rh dGFbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikK ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ190eXBlLnBvcCgpCiAgICAgICAgICAgICAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdfdHlwZSA9IHNlc3Npb25fZnVu Y3Rpb25fZGF0YVsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ190eXBlID0gZGVfaW5zdC5m dW5jdGlvbl9kYXRhWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzX3R5cGUnXS5z cGxpdCgiLCIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXJn X3R5cGUgPSBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKKyAg ICAgICAgICAgICAgICAgICAgYXJnX3R5cGUgPSBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3Nf dHlwZSddLnNwbGl0KCIsIikKIAogICAgICAgICAgICAgIyBCZWxvdyBhcmUgdHdvIGRpZmZlcmVu dCB0ZW1wbGF0ZSB0byBleGVjdXRlIGFuZCBzdGFydCBleGVjdXRlcgogICAgICAgICAgICAgaWYg bWFuYWdlci5zZXJ2ZXJfdHlwZSAhPSAncGcnIGFuZCBtYW5hZ2VyLnZlcnNpb24gPCA5MDMwMDoK ICAgICAgICAgICAgICAgICBzdHJfcXVlcnkgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFsnZGVidWdnZXIvc3FsJywgJ2V4ZWN1dGVfZWRic3BsLnNxbCdd KSwKICAgICAgICAgICAgICAgICAgICAgZnVuY19uYW1lPWZ1bmNfbmFtZSwKLSAgICAgICAgICAg ICAgICAgICAgaXNfZnVuYz1zZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2lzX2Z1bmMnXSwKLSAgICAg ICAgICAgICAgICAgICAgbGFuX25hbWU9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSdd LAotICAgICAgICAgICAgICAgICAgICByZXRfdHlwZT1zZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ3Jl dHVybl90eXBlJ10sCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9c2Vzc2lvbl9mdW5jdGlvbl9k YXRhWydhcmdzX3ZhbHVlJ10sCisgICAgICAgICAgICAgICAgICAgIGlzX2Z1bmM9ZGVfaW5zdC5m dW5jdGlvbl9kYXRhWydpc19mdW5jJ10sCisgICAgICAgICAgICAgICAgICAgIGxhbl9uYW1lPWRl X2luc3QuZnVuY3Rpb25fZGF0YVsnbGFuZ3VhZ2UnXSwKKyAgICAgICAgICAgICAgICAgICAgcmV0 X3R5cGU9ZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydyZXR1cm5fdHlwZSddLAorICAgICAgICAgICAg ICAgICAgICBkYXRhPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc192YWx1ZSddLAogICAgICAg ICAgICAgICAgICAgICBhcmdfdHlwZT1hcmdfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgYXJn c19tb2RlPWFyZ19tb2RlCiAgICAgICAgICAgICAgICAgKQpAQCAtMTA4MywxMCArOTkyLDEwIEBA IGRlZiBzdGFydF9kZWJ1Z2dlcl9saXN0ZW5lcih0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAg c3RyX3F1ZXJ5ID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgICAgICAgICAiLyIuam9p bihbJ2RlYnVnZ2VyL3NxbCcsICdleGVjdXRlX3BscGdzcWwuc3FsJ10pLAogICAgICAgICAgICAg ICAgICAgICBmdW5jX25hbWU9ZnVuY19uYW1lLAotICAgICAgICAgICAgICAgICAgICBpc19mdW5j PXNlc3Npb25fZnVuY3Rpb25fZGF0YVsnaXNfZnVuYyddLAotICAgICAgICAgICAgICAgICAgICBy ZXRfdHlwZT1zZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ3JldHVybl90eXBlJ10sCi0gICAgICAgICAg ICAgICAgICAgIGRhdGE9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdzX3ZhbHVlJ10sCi0gICAg ICAgICAgICAgICAgICAgIGlzX3BwYXNfZGF0YWJhc2U9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydp c19wcGFzX2RhdGFiYXNlJ10KKyAgICAgICAgICAgICAgICAgICAgaXNfZnVuYz1kZV9pbnN0LmZ1 bmN0aW9uX2RhdGFbJ2lzX2Z1bmMnXSwKKyAgICAgICAgICAgICAgICAgICAgcmV0X3R5cGU9ZGVf aW5zdC5mdW5jdGlvbl9kYXRhWydyZXR1cm5fdHlwZSddLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc192YWx1ZSddLAorICAgICAgICAgICAgICAg ICAgICBpc19wcGFzX2RhdGFiYXNlPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsnaXNfcHBhc19kYXRh YmFzZSddCiAgICAgICAgICAgICAgICAgKQogCiAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9 IGNvbm4uZXhlY3V0ZV9hc3luYyhzdHJfcXVlcnkpCkBAIC0xMTE3LDcgKzEwMjYsNyBAQCBkZWYg c3RhcnRfZGVidWdnZXJfbGlzdGVuZXIodHJhbnNfaWQpOgogICAgICAgICAgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihb dGVtcGxhdGVfcGF0aCwgJ2FkZF9icmVha3BvaW50X2VkYi5zcWwnXSksCiAgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX2lkPWludF9zZXNzaW9uX2lkLAotICAgICAgICAgICAgICAgICAg ICAgICAgZnVuY3Rpb25fb2lkPW9ialsnZnVuY3Rpb25faWQnXQorICAgICAgICAgICAgICAgICAg ICAgICAgZnVuY3Rpb25fb2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZnVuY3Rpb25faWQnXQog ICAgICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBjb25uLmV4ZWN1dGVfZGljdChzcWwpCkBAIC0xMTI3LDcgKzEwMzYsNyBAQCBkZWYgc3RhcnRf ZGVidWdnZXJfbGlzdGVuZXIodHJhbnNfaWQpOgogICAgICAgICAgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxh dGVfcGF0aCwgJ2FkZF9icmVha3BvaW50X3BnLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAg ICAgIHNlc3Npb25faWQ9aW50X3Nlc3Npb25faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBm dW5jdGlvbl9vaWQ9b2JqWydmdW5jdGlvbl9pZCddCisgICAgICAgICAgICAgICAgICAgICAgICBm dW5jdGlvbl9vaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlvbl9pZCddCiAgICAgICAg ICAgICAgICAgICAgICkKIAogICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKQEAgLTExNDQsMTMgKzEwNTMsMTIgQEAgZGVmIHN0YXJ0X2RlYnVn Z2VyX2xpc3RlbmVyKHRyYW5zX2lkKToKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgog ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKIAotICAgICAgICAgICAgICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dl ckRhdGEnXQotICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqID0gZGVidWdnZXJfZGF0YVtzdHIo dHJhbnNfaWQpXQotICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqWydleGVfY29ubl9pZCddID0g b2JqWydjb25uX2lkJ10KLSAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsncmVzdGFydF9kZWJ1 ZyddID0gMQotICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqWydmcmFtZV9pZCddID0gMAotICAg ICAgICAgICAgICAgIHNlc3Npb25fb2JqWydzZXNzaW9uX2lkJ10gPSBpbnRfc2Vzc2lvbl9pZAot ICAgICAgICAgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2RlYnVnZ2VyX3RyYW5zYWN0aW9uKHRyYW5z X2lkLCBzZXNzaW9uX29iaikKKyAgICAgICAgICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFb J2V4ZV9jb25uX2lkJ10gPSBcCisgICAgICAgICAgICAgICAgICAgIGRlX2luc3QuZGVidWdnZXJf ZGF0YVsnY29ubl9pZCddCisgICAgICAgICAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydy ZXN0YXJ0X2RlYnVnJ10gPSAxCisgICAgICAgICAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRh WydmcmFtZV9pZCddID0gMAorICAgICAgICAgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsn c2Vzc2lvbl9pZCddID0gaW50X3Nlc3Npb25faWQKKyAgICAgICAgICAgICAgICBkZV9pbnN0LnVw ZGF0ZV9zZXNzaW9uKCkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAogICAgICAgICAgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0Jzog cmVzfQogICAgICAgICAgICAgICAgICkKQEAgLTExOTYsOCArMTEwNCw4IEBAIGRlZiBleGVjdXRl X2RlYnVnZ2VyX3F1ZXJ5KHRyYW5zX2lkLCBxdWVyeV90eXBlKToKICAgICAgICAgLSBUeXBlIG9m IHF1ZXJ5IHRvIGV4ZWN1dGUKICAgICAiIiIKIAotICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9u WydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGluIGRlYnVnZ2VyX2Rh dGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVf aW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogRmFs c2UsCkBAIC0xMjA3LDE1ICsxMTE1LDE1IEBAIGRlZiBleGVjdXRlX2RlYnVnZ2VyX3F1ZXJ5KHRy YW5zX2lkLCBxdWVyeV90eXBlKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICB9CiAg ICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAKLSAgICBt YW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rp b25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQorICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBH X0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgIGRlX2luc3QuZGVi dWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigK LSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpbJ2V4ZV9jb25uX2lk J10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisg ICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCddKQogCiAg ICAgIyBmaW5kIHRoZSBkZWJ1Z2dlciB2ZXJzaW9uIGFuZCBleGVjdXRlIHRoZSBxdWVyeSBhY2Nv cmRpbmdseQotICAgIGRiZ192ZXJzaW9uID0gb2JqWydkZWJ1Z2dlcl92ZXJzaW9uJ10KKyAgICBk YmdfdmVyc2lvbiA9IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGVidWdnZXJfdmVyc2lvbiddCiAg ICAgaWYgZGJnX3ZlcnNpb24gPD0gMjoKICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dl ci9zcWwvdjEnCiAgICAgZWxzZToKQEAgLTEyMjQsNyArMTEzMiw3IEBAIGRlZiBleGVjdXRlX2Rl YnVnZ2VyX3F1ZXJ5KHRyYW5zX2lkLCBxdWVyeV90eXBlKToKICAgICBpZiBjb25uLmNvbm5lY3Rl ZCgpOgogICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAiLyIuam9p bihbdGVtcGxhdGVfcGF0aCwgcXVlcnlfdHlwZSArICIuc3FsIl0pLAotICAgICAgICAgICAgc2Vz c2lvbl9pZD1vYmpbJ3Nlc3Npb25faWQnXQorICAgICAgICAgICAgc2Vzc2lvbl9pZD1kZV9pbnN0 LmRlYnVnZ2VyX2RhdGFbJ3Nlc3Npb25faWQnXQogICAgICAgICApCiAgICAgICAgICMgQXMgdGhl IHF1ZXJ5IHR5cGUgaXMgY29udGludWUgb3Igc3RlcF9pbnRvIG9yIHN0ZXBfb3ZlciB0aGVuIHdl CiAgICAgICAgICMgbWF5IGdldCByZXN1bHQgYWZ0ZXIgc29tZSB0aW1lIHNvIHBvbGwgdGhlIHJl c3VsdC4KQEAgLTEyMzMsMTAgKzExNDEsOSBAQCBkZWYgZXhlY3V0ZV9kZWJ1Z2dlcl9xdWVyeSh0 cmFuc19pZCwgcXVlcnlfdHlwZSk6CiAgICAgICAgIGlmIHF1ZXJ5X3R5cGUgPT0gJ2NvbnRpbnVl JyBvciBxdWVyeV90eXBlID09ICdzdGVwX2ludG8nIG9yIFwKICAgICAgICAgICAgICAgICBxdWVy eV90eXBlID09ICdzdGVwX292ZXInOgogICAgICAgICAgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBm cmFtZV9pZCB0byAwIHdoZW4gZXhlY3V0aW9uIHN0YXJ0cy4KLSAgICAgICAgICAgIGlmIG9ialsn ZnJhbWVfaWQnXSAhPSAwOgotICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqID0gZGVidWdnZXJf ZGF0YVtzdHIodHJhbnNfaWQpXQotICAgICAgICAgICAgICAgIHNlc3Npb25fb2JqWydmcmFtZV9p ZCddID0gMAotICAgICAgICAgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2RlYnVnZ2VyX3RyYW5zYWN0 aW9uKHRyYW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICAgICAgICAgIGlmIGRlX2luc3QuZGVidWdn ZXJfZGF0YVsnZnJhbWVfaWQnXSAhPSAwOgorICAgICAgICAgICAgICAgIGRlX2luc3QuZGVidWdn ZXJfZGF0YVsnZnJhbWVfaWQnXSA9IDAKKyAgICAgICAgICAgICAgICBkZV9pbnN0LnVwZGF0ZV9z ZXNzaW9uKCkKIAogICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4ZWN1dGVfYXN5 bmMoc3FsKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKQEAgLTEyODIsOCArMTE4OSw4IEBA IGRlZiBtZXNzYWdlcyh0cmFuc19pZCk6CiAgICAgICAgIC0gdW5pcXVlIHRyYW5zYWN0aW9uIGlk LgogICAgICIiIgogCi0gICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSdd Ci0gICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gZGVidWdnZXJfZGF0YToKKyAgICBkZV9pbnN0 ID0gRGVidWdnZXJJbnN0YW5jZSh0cmFuc19pZCkKKyAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2Rh dGEgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAg ICAgIGRhdGE9ewogICAgICAgICAgICAgICAgICdzdGF0dXMnOiAnTm90Q29ubmVjdGVkJywKQEAg LTEyOTMsMTEgKzEyMDAsMTIgQEAgZGVmIG1lc3NhZ2VzKHRyYW5zX2lkKToKICAgICAgICAgICAg ICAgICApCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRh W3N0cih0cmFuc19pZCldCiAKLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdf REVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQotICAg IGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9p ZD1vYmpbJ2Nvbm5faWQnXSkKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFb J3NlcnZlcl9pZCddKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCisgICAgICAgIGRp ZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgIGNvbm5faWQ9 ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydjb25uX2lkJ10pCiAKICAgICBwb3J0X251bWJlciA9ICcn CiAKQEAgLTEzNTcsOCArMTI2NSw4IEBAIGRlZiBzdGFydF9leGVjdXRpb24odHJhbnNfaWQsIHBv cnRfbnVtKToKICAgICAgICAgLSBQb3J0IG51bWJlciB0byBhdHRhY2gKICAgICAiIiIKIAotICAg IGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0cmFu c19pZCkgbm90IGluIGRlYnVnZ2VyX2RhdGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFu Y2UodHJhbnNfaWQpCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAg ICAgICAgICAgICAnc3RhdHVzJzogJ05vdENvbm5lY3RlZCcsCkBAIC0xMzY4LDE2ICsxMjc2LDE1 IEBAIGRlZiBzdGFydF9leGVjdXRpb24odHJhbnNfaWQsIHBvcnRfbnVtKToKICAgICAgICAgICAg ICAgICApCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRh W3N0cih0cmFuc19pZCldCi0KLSAgICBkYmdfdmVyc2lvbiA9IG9ialsnZGVidWdnZXJfdmVyc2lv biddCiAKICAgICAjIENyZWF0ZSBhc3luY2hyb25vdXMgY29ubmVjdGlvbiB1c2luZyByYW5kb20g Y29ubmVjdGlvbiBpZC4KICAgICBleGVfY29ubl9pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5 OTk5OTk5KSkKICAgICB0cnk6Ci0gICAgICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKAotICAgICAg ICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9p ZCddKQotICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1vYmpbJ2RhdGFiYXNl X2lkJ10sIGNvbm5faWQ9ZXhlX2Nvbm5faWQpCisgICAgICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgICAgICBkZV9p bnN0LmRlYnVnZ2VyX2RhdGFbJ3NlcnZlcl9pZCddKQorICAgICAgICBjb25uID0gbWFuYWdlci5j b25uZWN0aW9uKAorICAgICAgICAgICAgZGlkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGF0YWJh c2VfaWQnXSwKKyAgICAgICAgICAgIGNvbm5faWQ9ZXhlX2Nvbm5faWQpCiAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgogICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKIApAQCAtMTM4NiwxMyArMTI5Myw4IEBAIGRlZiBzdGFydF9leGVjdXRpb24o dHJhbnNfaWQsIHBvcnRfbnVtKToKICAgICBpZiBub3Qgc3RhdHVzOgogICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihtc2cpKQogCi0gICAgaWYgJ2RlYnVn Z2VyRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgIGRlYnVnZ2VyX2RhdGEgPSBkaWN0KCkK LSAgICBlbHNlOgotICAgICAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRh J10KLQogICAgICMgZmluZCB0aGUgZGVidWdnZXIgdmVyc2lvbiBhbmQgZXhlY3V0ZSB0aGUgcXVl cnkgYWNjb3JkaW5nbHkKLSAgICBkYmdfdmVyc2lvbiA9IG9ialsnZGVidWdnZXJfdmVyc2lvbidd CisgICAgZGJnX3ZlcnNpb24gPSBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RlYnVnZ2VyX3ZlcnNp b24nXQogICAgIGlmIGRiZ192ZXJzaW9uIDw9IDI6CiAgICAgICAgIHRlbXBsYXRlX3BhdGggPSAn ZGVidWdnZXIvc3FsL3YxJwogICAgIGVsc2U6CkBAIC0xNDA1LDEzICsxMzA3LDEzIEBAIGRlZiBz dGFydF9leGVjdXRpb24odHJhbnNfaWQsIHBvcnRfbnVtKToKICAgICBpZiBub3Qgc3RhdHVzX3Bv cnQ6CiAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzX3Bv cnQpCiAKLSAgICBzZXNzaW9uX29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KLSAg ICBzZXNzaW9uX29ialsncmVzdGFydF9kZWJ1ZyddID0gMAotICAgIHNlc3Npb25fb2JqWydmcmFt ZV9pZCddID0gMAotICAgIHNlc3Npb25fb2JqWydleGVfY29ubl9pZCddID0gZXhlX2Nvbm5faWQK LSAgICBzZXNzaW9uX29ialsnZGVidWdnZXJfdmVyc2lvbiddID0gZGJnX3ZlcnNpb24KLSAgICBz ZXNzaW9uX29ialsnc2Vzc2lvbl9pZCddID0gcmVzX3BvcnRbJ3Jvd3MnXVswXVsncGxkYmdfYXR0 YWNoX3RvX3BvcnQnXQotICAgIHVwZGF0ZV9zZXNzaW9uX2RlYnVnZ2VyX3RyYW5zYWN0aW9uKHRy YW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Jlc3RhcnRf ZGVidWcnXSA9IDAKKyAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2ZyYW1lX2lkJ10gPSAwCisg ICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCddID0gZXhlX2Nvbm5faWQKKyAg ICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RlYnVnZ2VyX3ZlcnNpb24nXSA9IGRiZ192ZXJzaW9u CisgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXNzaW9uX2lkJ10gPSBcCisgICAgICAgIHJl c19wb3J0Wydyb3dzJ11bMF1bJ3BsZGJnX2F0dGFjaF90b19wb3J0J10KKyAgICBkZV9pbnN0LnVw ZGF0ZV9zZXNzaW9uKCkKIAogICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAg IGRhdGE9ewpAQCAtMTQ0MSw4ICsxMzQzLDkgQEAgZGVmIHNldF9jbGVhcl9icmVha3BvaW50KHRy YW5zX2lkLCBsaW5lX25vLCBzZXRfdHlwZSk6CiAgICAgICAgIC0gMCAtIGNsZWFyIHRoZSBicmVh a3BvaW50LCAxIC0gc2V0IHRoZSBicmVha3BvaW50CiAgICAgIiIiCiAKLSAgICBkZWJ1Z2dlcl9k YXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJhbnNfaWQpIG5vdCBp biBkZWJ1Z2dlcl9kYXRhOgorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lk KQorCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICAg ICAnc3RhdHVzJzogRmFsc2UsCkBAIC0xNDUyLDE1ICsxMzU1LDE1IEBAIGRlZiBzZXRfY2xlYXJf YnJlYWtwb2ludCh0cmFuc19pZCwgbGluZV9ubywgc2V0X3R5cGUpOgogICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgIH0KICAgICAgICAgKQotICAgIG9iaiA9IGRlYnVnZ2VyX2RhdGFbc3Ry KHRyYW5zX2lkKV0KIAotICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKAotICAgICAgICBQR19ERUZB VUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKG9ialsnc2VydmVyX2lkJ10pCisgICAgbWFu YWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigK KyAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXJ2ZXJfaWQnXSkKICAgICBjb25uID0g bWFuYWdlci5jb25uZWN0aW9uKAotICAgICAgICBkaWQ9b2JqWydkYXRhYmFzZV9pZCddLCBjb25u X2lkPW9ialsnZXhlX2Nvbm5faWQnXSkKKyAgICAgICAgZGlkPWRlX2luc3QuZGVidWdnZXJfZGF0 YVsnZGF0YWJhc2VfaWQnXSwKKyAgICAgICAgY29ubl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFb J2V4ZV9jb25uX2lkJ10pCiAKICAgICAjIGZpbmQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIGV4 ZWN1dGUgdGhlIHF1ZXJ5IGFjY29yZGluZ2x5Ci0gICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVn Z2VyX3ZlcnNpb24nXQorICAgIGRiZ192ZXJzaW9uID0gZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydk ZWJ1Z2dlcl92ZXJzaW9uJ10KICAgICBpZiBkYmdfdmVyc2lvbiA8PSAyOgogICAgICAgICB0ZW1w bGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92MScKICAgICBlbHNlOgpAQCAtMTQ3NCw3ICsxMzc3 LDcgQEAgZGVmIHNldF9jbGVhcl9icmVha3BvaW50KHRyYW5zX2lkLCBsaW5lX25vLCBzZXRfdHlw ZSk6CiAgICAgIyBzZXNzaW9uIHZhcmlhYmxlIGFuZCBwYXNzIHRoYSBhcHByb3ByaWF0ZSBmb2lk IHRvIHNldCB0aGUgYnJlYWtwb2ludC4KICAgICBzcWxfID0gcmVuZGVyX3RlbXBsYXRlKAogICAg ICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgImdldF9zdGFja19pbmZvLnNxbCJdKSwKLSAg ICAgICAgc2Vzc2lvbl9pZD1vYmpbJ3Nlc3Npb25faWQnXQorICAgICAgICBzZXNzaW9uX2lkPWRl X2luc3QuZGVidWdnZXJfZGF0YVsnc2Vzc2lvbl9pZCddCiAgICAgKQogICAgIHN0YXR1cywgcmVz X3N0YWNrID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsXykKICAgICBpZiBub3Qgc3RhdHVzOgpAQCAt MTQ4Myw3ICsxMzg2LDcgQEAgZGVmIHNldF9jbGVhcl9icmVha3BvaW50KHRyYW5zX2lkLCBsaW5l X25vLCBzZXRfdHlwZSk6CiAgICAgIyBGb3IgbXVsdGlsZXZlbCBmdW5jdGlvbiBkZWJ1Z2dpbmcs IHdlIG5lZWQgdG8gZmV0Y2ggY3VycmVudCBzZWxlY3RlZAogICAgICMgZnJhbWUncyBmdW5jdGlv biBvaWQgZm9yIHNldHRpbmcgdGhlIGJyZWFrcG9pbnQuIEZvciBzaW5nbGUgZnVuY3Rpb24KICAg ICAjIHRoZSBmcmFtZSBpZCB3aWxsIGJlIDAuCi0gICAgZm9pZCA9IHJlc19zdGFja1sncm93cydd W29ialsnZnJhbWVfaWQnXV1bJ2Z1bmMnXQorICAgIGZvaWQgPSByZXNfc3RhY2tbJ3Jvd3MnXVtk ZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2ZyYW1lX2lkJ11dWydmdW5jJ10KIAogICAgICMgQ2hlY2sg dGhlIHJlc3VsdCBvZiB0aGUgc3RhY2sgYmVmb3JlIHNldHRpbmcgdGhlIGJyZWFrcG9pbnQKICAg ICBpZiBjb25uLmNvbm5lY3RlZCgpOgpAQCAtMTQ5NCw3ICsxMzk3LDcgQEAgZGVmIHNldF9jbGVh cl9icmVha3BvaW50KHRyYW5zX2lkLCBsaW5lX25vLCBzZXRfdHlwZSk6CiAKICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgs IHF1ZXJ5X3R5cGUgKyAiLnNxbCJdKSwKLSAgICAgICAgICAgIHNlc3Npb25faWQ9b2JqWydzZXNz aW9uX2lkJ10sCisgICAgICAgICAgICBzZXNzaW9uX2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsn c2Vzc2lvbl9pZCddLAogICAgICAgICAgICAgZm9pZD1mb2lkLCBsaW5lX251bWJlcj1saW5lX25v CiAgICAgICAgICkKIApAQCAtMTUyOCw4ICsxNDMxLDkgQEAgZGVmIGNsZWFyX2FsbF9icmVha3Bv aW50KHRyYW5zX2lkKToKICAgICAgICAgdHJhbnNfaWQKICAgICAgICAgLSBUcmFuc2FjdGlvbiBJ RAogICAgICIiIgotICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQot ICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGluIGRlYnVnZ2VyX2RhdGE6CisKKyAgICBkZV9pbnN0 ID0gRGVidWdnZXJJbnN0YW5jZSh0cmFuc19pZCkKKyAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2Rh dGEgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAg ICAgIGRhdGE9ewogICAgICAgICAgICAgICAgICdzdGF0dXMnOiBGYWxzZSwKQEAgLTE1MzksMjIg KzE0NDMsMTkgQEAgZGVmIGNsZWFyX2FsbF9icmVha3BvaW50KHRyYW5zX2lkKToKICAgICAgICAg ICAgICAgICApCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9k YXRhW3N0cih0cmFuc19pZCldCi0KLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAg UEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQor ICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21h bmFnZXIoCisgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAg Y29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigKLSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQn XSwgY29ubl9pZD1vYmpbJ2V4ZV9jb25uX2lkJ10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVn Z2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dl cl9kYXRhWydleGVfY29ubl9pZCddKQogCiAgICAgIyBmaW5kIHRoZSBkZWJ1Z2dlciB2ZXJzaW9u IGFuZCBleGVjdXRlIHRoZSBxdWVyeSBhY2NvcmRpbmdseQotICAgIGRiZ192ZXJzaW9uID0gb2Jq WydkZWJ1Z2dlcl92ZXJzaW9uJ10KKyAgICBkYmdfdmVyc2lvbiA9IGRlX2luc3QuZGVidWdnZXJf ZGF0YVsnZGVidWdnZXJfdmVyc2lvbiddCiAgICAgaWYgZGJnX3ZlcnNpb24gPD0gMjoKICAgICAg ICAgdGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dlci9zcWwvdjEnCiAgICAgZWxzZToKICAgICAgICAg dGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dlci9zcWwvdjInCiAKLSAgICBxdWVyeV90eXBlID0gJycK LQogICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6CiAgICAgICAgICMgZ2V0IHRoZSBkYXRhIHNlbnQg dGhyb3VnaCBwb3N0IGZyb20gY2xpZW50CiAgICAgICAgIGlmIHJlcXVlc3QuZm9ybVsnYnJlYWtw b2ludF9saXN0J106CkBAIC0xNTYyLDggKzE0NjMsOSBAQCBkZWYgY2xlYXJfYWxsX2JyZWFrcG9p bnQodHJhbnNfaWQpOgogICAgICAgICAgICAgZm9yIGxpbmVfbm8gaW4gbGluZV9udW1iZXJzOgog ICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICAgICAg ICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICJjbGVhcl9icmVha3BvaW50LnNxbCJdKSwKLSAg ICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pZD1vYmpbJ3Nlc3Npb25faWQnXSwKLSAgICAgICAg ICAgICAgICAgICAgZm9pZD1vYmpbJ2Z1bmN0aW9uX2lkJ10sIGxpbmVfbnVtYmVyPWxpbmVfbm8K KyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Nl c3Npb25faWQnXSwKKyAgICAgICAgICAgICAgICAgICAgZm9pZD1kZV9pbnN0LmRlYnVnZ2VyX2Rh dGFbJ2Z1bmN0aW9uX2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyPWxpbmVf bm8KICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9 IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKQEAgLTE1OTcsOCArMTQ5OSw5IEBAIGRlZiBkZXBvc2l0 X3BhcmFtZXRlcl92YWx1ZSh0cmFuc19pZCk6CiAgICAgICAgIHRyYW5zX2lkCiAgICAgICAgIC0g VHJhbnNhY3Rpb24gSUQKICAgICAiIiIKLSAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVi dWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJhbnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgor CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVfaW5z dC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogRmFsc2Us CkBAIC0xNjA2LDIyICsxNTA5LDE5IEBAIGRlZiBkZXBvc2l0X3BhcmFtZXRlcl92YWx1ZSh0cmFu c19pZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIHNlcnZl ciBoYXMgYmVlbiBjbG9zZWQuJykKICAgICAgICAgICAgIH0KICAgICAgICAgKQotICAgIG9iaiA9 IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KLQotICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVy KAotICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKG9ialsnc2Vy dmVyX2lkJ10pCisgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNv bm5lY3Rpb25fbWFuYWdlcigKKyAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXJ2ZXJf aWQnXSkKICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKAotICAgICAgICBkaWQ9b2JqWydk YXRhYmFzZV9pZCddLCBjb25uX2lkPW9ialsnZXhlX2Nvbm5faWQnXSkKKyAgICAgICAgZGlkPWRl X2luc3QuZGVidWdnZXJfZGF0YVsnZGF0YWJhc2VfaWQnXSwKKyAgICAgICAgY29ubl9pZD1kZV9p bnN0LmRlYnVnZ2VyX2RhdGFbJ2V4ZV9jb25uX2lkJ10pCiAKICAgICAjIGZpbmQgdGhlIGRlYnVn Z2VyIHZlcnNpb24gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5IGFjY29yZGluZ2x5Ci0gICAgZGJnX3Zl cnNpb24gPSBvYmpbJ2RlYnVnZ2VyX3ZlcnNpb24nXQorICAgIGRiZ192ZXJzaW9uID0gZGVfaW5z dC5kZWJ1Z2dlcl9kYXRhWydkZWJ1Z2dlcl92ZXJzaW9uJ10KICAgICBpZiBkYmdfdmVyc2lvbiA8 PSAyOgogICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92MScKICAgICBlbHNl OgogICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92MicKIAotICAgIHF1ZXJ5 X3R5cGUgPSAnJwotCiAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKICAgICAgICAgIyBnZXQgdGhl IGRhdGEgc2VudCB0aHJvdWdoIHBvc3QgZnJvbSBjbGllbnQKICAgICAgICAgZGF0YSA9IGpzb24u bG9hZHMocmVxdWVzdC52YWx1ZXNbJ2RhdGEnXSwgZW5jb2Rpbmc9J3V0Zi04JykKQEAgLTE2Mjks NyArMTUyOSw3IEBAIGRlZiBkZXBvc2l0X3BhcmFtZXRlcl92YWx1ZSh0cmFuc19pZCk6CiAgICAg ICAgIGlmIGRhdGE6CiAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAg ICAgICAgICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICJkZXBvc2l0X3ZhbHVlLnNxbCJdKSwK LSAgICAgICAgICAgICAgICBzZXNzaW9uX2lkPW9ialsnc2Vzc2lvbl9pZCddLAorICAgICAgICAg ICAgICAgIHNlc3Npb25faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXNzaW9uX2lkJ10sCiAg ICAgICAgICAgICAgICAgdmFyX25hbWU9ZGF0YVswXVsnbmFtZSddLCBsaW5lX251bWJlcj0tMSwK ICAgICAgICAgICAgICAgICB2YWw9ZGF0YVswXVsndmFsdWUnXQogICAgICAgICAgICAgKQpAQCAt MTY3OCw4ICsxNTc4LDggQEAgZGVmIHNlbGVjdF9mcmFtZSh0cmFuc19pZCwgZnJhbWVfaWQpOgog ICAgICAgICBmcmFtZV9pZAogICAgICAgICAtIEZyYW1lIGlkIHNlbGVjdGVkCiAgICAgIiIiCi0g ICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0gICAgaWYgc3RyKHRy YW5zX2lkKSBub3QgaW4gZGVidWdnZXJfZGF0YToKKyAgICBkZV9pbnN0ID0gRGVidWdnZXJJbnN0 YW5jZSh0cmFuc19pZCkKKyAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGEgaXMgTm9uZToKICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAgIGRhdGE9ewogICAg ICAgICAgICAgICAgICdzdGF0dXMnOiBGYWxzZSwKQEAgLTE2ODksMjggKzE1ODksMjcgQEAgZGVm IHNlbGVjdF9mcmFtZSh0cmFuc19pZCwgZnJhbWVfaWQpOgogICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgIH0KICAgICAgICAgKQotICAgIG9iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5z X2lkKV0KIAotICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKAotICAgICAgICBQR19ERUZBVUxUX0RS SVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKG9ialsnc2VydmVyX2lkJ10pCisgICAgbWFuYWdlciA9 IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcigKKyAgICAg ICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXJ2ZXJfaWQnXSkKICAgICBjb25uID0gbWFuYWdl ci5jb25uZWN0aW9uKAotICAgICAgICBkaWQ9b2JqWydkYXRhYmFzZV9pZCddLCBjb25uX2lkPW9i alsnZXhlX2Nvbm5faWQnXSkKKyAgICAgICAgZGlkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGF0 YWJhc2VfaWQnXSwKKyAgICAgICAgY29ubl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2V4ZV9j b25uX2lkJ10pCiAKICAgICAjIGZpbmQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIGV4ZWN1dGUg dGhlIHF1ZXJ5IGFjY29yZGluZ2x5Ci0gICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVnZ2VyX3Zl cnNpb24nXQorICAgIGRiZ192ZXJzaW9uID0gZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkZWJ1Z2dl cl92ZXJzaW9uJ10KICAgICBpZiBkYmdfdmVyc2lvbiA8PSAyOgogICAgICAgICB0ZW1wbGF0ZV9w YXRoID0gJ2RlYnVnZ2VyL3NxbC92MScKICAgICBlbHNlOgogICAgICAgICB0ZW1wbGF0ZV9wYXRo ID0gJ2RlYnVnZ2VyL3NxbC92MicKIAotICAgIHNlc3Npb25fb2JqID0gZGVidWdnZXJfZGF0YVtz dHIodHJhbnNfaWQpXQotICAgIHNlc3Npb25fb2JqWydmcmFtZV9pZCddID0gZnJhbWVfaWQKLSAg ICB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vzc2lvbl9v YmopCisgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmcmFtZV9pZCddID0gZnJhbWVfaWQKKyAg ICBkZV9pbnN0LnVwZGF0ZV9zZXNzaW9uKCkKIAogICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6CiAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgICAgICIvIi5qb2luKFt0ZW1w bGF0ZV9wYXRoLCAic2VsZWN0X2ZyYW1lLnNxbCJdKSwKLSAgICAgICAgICAgIHNlc3Npb25faWQ9 b2JqWydzZXNzaW9uX2lkJ10sCisgICAgICAgICAgICBzZXNzaW9uX2lkPWRlX2luc3QuZGVidWdn ZXJfZGF0YVsnc2Vzc2lvbl9pZCddLAogICAgICAgICAgICAgZnJhbWVfaWQ9ZnJhbWVfaWQKICAg ICAgICAgKQogCkBAIC0xOTUwLDggKzE4NDksOCBAQCBkZWYgcG9sbF9lbmRfZXhlY3V0aW9uX3Jl c3VsdCh0cmFuc19pZCk6CiAgICAgICAgIC0gdW5pcXVlIHRyYW5zYWN0aW9uIGlkLgogICAgICIi IgogCi0gICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0gICAgaWYg c3RyKHRyYW5zX2lkKSBub3QgaW4gZGVidWdnZXJfZGF0YToKKyAgICBkZV9pbnN0ID0gRGVidWdn ZXJJbnN0YW5jZSh0cmFuc19pZCkKKyAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGEgaXMgTm9u ZToKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAgIGRhdGE9 eydzdGF0dXMnOiAnTm90Q29ubmVjdGVkJywKICAgICAgICAgICAgICAgICAgICdyZXN1bHQnOiBn ZXR0ZXh0KApAQCAtMTk1OSwxMSArMTg1OCwxMiBAQCBkZWYgcG9sbF9lbmRfZXhlY3V0aW9uX3Jl c3VsdCh0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgICAgICAgJ3NlcnZlciBoYXMgYmVlbiBj bG9zZWQuJykKICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgKQotICAgIG9iaiA9IGRlYnVn Z2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KIAotICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKAotICAg ICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKG9ialsnc2VydmVyX2lk J10pCi0gICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9b2JqWydkYXRhYmFzZV9pZCdd LCBjb25uX2lkPW9ialsnY29ubl9pZCddKQorICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RF RkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgIGRlX2luc3QuZGVidWdn ZXJfZGF0YVsnc2VydmVyX2lkJ10pCisgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigKKyAg ICAgICAgZGlkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGF0YWJhc2VfaWQnXSwKKyAgICAgICAg Y29ubl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2Nvbm5faWQnXSkKIAogICAgIGlmIGNvbm4u Y29ubmVjdGVkKCk6CiAgICAgICAgIHN0YXR1c21zZyA9IGNvbm4uc3RhdHVzX21lc3NhZ2UoKQpA QCAtMTk4MCwxMSArMTg4MCwxMCBAQCBkZWYgcG9sbF9lbmRfZXhlY3V0aW9uX3Jlc3VsdCh0cmFu c19pZCk6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgKQogCi0gICAgICAgIHNlc3Np b25fZnVuY3Rpb25fZGF0YSA9IHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSddW3N0cih0cmFuc19pZCld CiAgICAgICAgIGlmIHN0YXR1cyA9PSBBU1lOQ19PSyBhbmQgXAotICAgICAgICAgICAgbm90IHNl c3Npb25fZnVuY3Rpb25fZGF0YVsnaXNfZnVuYyddIGFuZFwKLSAgICAgICAgICAgIChzZXNzaW9u X2Z1bmN0aW9uX2RhdGFbJ2xhbmd1YWdlJ10gPT0gJ2VkYnNwbCcgb3IKLSAgICAgICAgICAgICAg ICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2xhbmd1YWdlJ10gPT0gJ3BscGdzcWwnKToKKyAgICAg ICAgICAgIG5vdCBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2lzX2Z1bmMnXSBhbmRcCisgICAgICAg ICAgICAoZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSddID09ICdlZGJzcGwnIG9yCisg ICAgICAgICAgICAgICAgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSddID09ICdwbHBn c3FsJyk6CiAgICAgICAgICAgICBzdGF0dXMgPSAnU3VjY2VzcycKICAgICAgICAgICAgIGFkZGl0 aW9uYWxfbXNncyA9IGNvbm4ubWVzc2FnZXMoKQogICAgICAgICAgICAgaWYgbGVuKGFkZGl0aW9u YWxfbXNncykgPiAwOgpAQCAtMjA3Nyw4ICsxOTc2LDggQEAgZGVmIHBvbGxfcmVzdWx0KHRyYW5z X2lkKToKICAgICAgICAgLSB1bmlxdWUgdHJhbnNhY3Rpb24gaWQuCiAgICAgIiIiCiAKLSAgICBk ZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJhbnNf aWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNl KHRyYW5zX2lkKQorICAgIGlmIGRlX2luc3QuZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgZGF0YT17CiAgICAgICAg ICAgICAgICAgJ3N0YXR1cyc6ICdOb3RDb25uZWN0ZWQnLApAQCAtMjA4NiwxMiArMTk4NSwxMiBA QCBkZWYgcG9sbF9yZXN1bHQodHJhbnNfaWQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICd3aXRoIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCiAgICAgICAgICAgICB9 CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAKLSAg ICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5l Y3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQorICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgIGRlX2luc3Qu ZGVidWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlv bigKLSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpbJ2V4ZV9jb25u X2lkJ10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10s CisgICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCddKQog CiAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25u LnBvbGwoKQpAQCAtMjExNyw3ICsyMDE2LDcgQEAgZGVmIHBvbGxfcmVzdWx0KHRyYW5zX2lkKToK ICAgICApCiAKIAotZGVmIGNsb3NlX2RlYnVnZ2VyX3Nlc3Npb24odHJhbnNfaWQpOgorZGVmIGNs b3NlX2RlYnVnZ2VyX3Nlc3Npb24oX3RyYW5zX2lkLCBjbG9zZV9hbGw9RmFsc2UpOgogICAgICIi IgogICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjYW5jZWwgdGhlIGRlYnVnZ2VyIHRyYW5z YWN0aW9uIGFuZAogICAgIHJlbGVhc2UgdGhlIGNvbm5lY3Rpb24uCkBAIC0yMTI1LDIxICsyMDI0 LDQxIEBAIGRlZiBjbG9zZV9kZWJ1Z2dlcl9zZXNzaW9uKHRyYW5zX2lkKToKICAgICA6cGFyYW0g dHJhbnNfaWQ6IFRyYW5zYWN0aW9uIGlkCiAgICAgOnJldHVybjoKICAgICAiIiIKLSAgICBkYmdf b2JqID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ11bc3RyKHRyYW5zX2lkKV0KIAotICAgIG1hbmFn ZXIgPSBnZXRfZHJpdmVyKAotICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9t YW5hZ2VyKGRiZ19vYmpbJ3NlcnZlcl9pZCddKQorICAgIGlmIGNsb3NlX2FsbDoKKyAgICAgICAg dHJhbnNfaWRzID0gRGVidWdnZXJJbnN0YW5jZS5nZXRfdHJhbnNfaWRzKCkKKyAgICBlbHNlOgor ICAgICAgICB0cmFuc19pZHMgPSBbX3RyYW5zX2lkXQogCi0gICAgaWYgbWFuYWdlciBpcyBub3Qg Tm9uZToKLSAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigKLSAgICAgICAgICAgIGRp ZD1kYmdfb2JqWydkYXRhYmFzZV9pZCddLCBjb25uX2lkPWRiZ19vYmpbJ2Nvbm5faWQnXSkKLSAg ICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIGNvbm4uY2FuY2VsX3RyYW5z YWN0aW9uKGRiZ19vYmpbJ2Nvbm5faWQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRiZ19vYmpbJ2RhdGFiYXNlX2lkJ10pCi0gICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNv bm5lY3Rpb24oCi0gICAgICAgICAgICBkaWQ9ZGJnX29ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9p ZD1kYmdfb2JqWydleGVfY29ubl9pZCddKQotICAgICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgot ICAgICAgICAgICAgY29ubi5jYW5jZWxfdHJhbnNhY3Rpb24oZGJnX29ialsnZXhlX2Nvbm5faWQn XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiZ19vYmpbJ2RhdGFiYXNl X2lkJ10pCi0gICAgICAgIG1hbmFnZXIucmVsZWFzZShjb25uX2lkPWRiZ19vYmpbJ2Nvbm5faWQn XSkKLSAgICAgICAgbWFuYWdlci5yZWxlYXNlKGNvbm5faWQ9ZGJnX29ialsnZXhlX2Nvbm5faWQn XSkKKyAgICBmb3IgdHJhbnNfaWQgaW4gdHJhbnNfaWRzOgorICAgICAgICBkZV9pbnN0ID0gRGVi dWdnZXJJbnN0YW5jZSh0cmFuc19pZCkKKyAgICAgICAgZGJnX29iaiA9IGRlX2luc3QuZGVidWdn ZXJfZGF0YQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGRiZ19vYmogaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpLlwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9tYW5hZ2VyKGRiZ19vYmpbJ3Nl cnZlcl9pZCddKQorCisgICAgICAgICAgICAgICAgaWYgbWFuYWdlciBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgICAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigKKyAgICAgICAgICAg ICAgICAgICAgICAgIGRpZD1kYmdfb2JqWydkYXRhYmFzZV9pZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgY29ubl9pZD1kYmdfb2JqWydjb25uX2lkJ10pCisgICAgICAgICAgICAgICAgICAg IGlmIGNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb25uLmNhbmNl bF90cmFuc2FjdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYmdfb2JqWydjb25u X2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJnX29ialsnZGF0YWJhc2VfaWQn XSkKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZWxlYXNlKGNvbm5faWQ9ZGJnX29ialsn Y29ubl9pZCddKQorCisgICAgICAgICAgICAgICAgICAgIGlmICdleGVfY29ubl9pZCcgaW4gZGJn X29iajoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkPWRiZ19vYmpbJ2RhdGFiYXNlX2lkJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1kYmdfb2JqWydleGVfY29ubl9p ZCddKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uLmNhbmNlbF90cmFuc2FjdGlvbigKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJnX29ialsnZXhlX2Nvbm5faWQnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJnX29ialsnZGF0YWJhc2VfaWQnXSkKKyAgICAgICAg ICAgICAgICAgICAgICAgIG1hbmFnZXIucmVsZWFzZShjb25uX2lkPWRiZ19vYmpbJ2V4ZV9jb25u X2lkJ10pCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgXzoKKyAgICAgICAgICAgIHJhaXNl CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZV9pbnN0LmNsZWFyKCkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlci5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlci5qcwppbmRleCAyZWUx ZDU1Yy4uYTIxNDliZjEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0 YXRpYy9qcy9kZWJ1Z2dlci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0 aWMvanMvZGVidWdnZXIuanMKQEAgLTMxMyw4ICszMTMsOCBAQCBkZWZpbmUoWwogICAgICAgICB1 cmw6IF91cmwsCiAgICAgICAgIGNhY2hlOiBmYWxzZSwKICAgICAgIH0pCi0gICAgICAgIC5kb25l KGZ1bmN0aW9uKCkgewotICAgICAgICAgIHNlbGYuc3RhcnRfZ2xvYmFsX2RlYnVnZ2VyKCk7Cisg ICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgIHNlbGYuc3RhcnRfZ2xvYmFs X2RlYnVnZ2VyKGFyZ3MsIGl0ZW0sIHJlcy5kYXRhLnRyYW5zX2lkKTsKICAgICAgICAgfSkKICAg ICAgICAgLmZhaWwoZnVuY3Rpb24oeGhyKSB7CiAgICAgICAgICAgdHJ5IHsKQEAgLTMyOSw3ICsz MjksNyBAQCBkZWZpbmUoWwogICAgIH0sCiAKICAgICAvL0NhbGxiYWNrIGZ1bmN0aW9uIHdoZW4g dXNlciBzdGFydCB0aGUgaW5kaXJlY3QgZGVidWdnaW5nICggTGlzdGVuIHRvIGFub3RoZXIgc2Vz c2lvbiB0byBpbnZva2UgdGhlIHRhcmdldCApCi0gICAgc3RhcnRfZ2xvYmFsX2RlYnVnZ2VyOiBm dW5jdGlvbihhcmdzLCBpdGVtKSB7CisgICAgc3RhcnRfZ2xvYmFsX2RlYnVnZ2VyOiBmdW5jdGlv bihhcmdzLCBpdGVtLCB0cmFuc19pZCkgewogICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGFyZ2V0 IGFuZCBjcmVhdGUgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gYW5kIHVuaXF1ZSB0cmFuc2FjdGlv biBJRAogICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKICAgICAgICAgaSA9IGl0ZW0gfHwg dC5zZWxlY3RlZCgpLApAQCAtMzQzLDQ4ICszNDMsMzMgQEAgZGVmaW5lKFsKICAgICAgIHZhciB0 cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKSwKICAg ICAgICAgYmFzZVVybDsKIAotICAgICAgaWYgKGQuX3R5cGUgPT0gJ2Z1bmN0aW9uJykgeworICAg ICAgaWYgKGQuX3R5cGUgPT0gJ2Z1bmN0aW9uJyB8fCBkLl90eXBlID09ICdlZGJmdW5jJykgewog ICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcigKICAgICAgICAgICAnZGVidWdnZXIuaW5pdGlhbGl6 ZV90YXJnZXRfZm9yX2Z1bmN0aW9uJywgewogICAgICAgICAgICAgJ2RlYnVnX3R5cGUnOiAnaW5k aXJlY3QnLAorICAgICAgICAgICAgJ3RyYW5zX2lkJzogdHJhbnNfaWQsCiAgICAgICAgICAgICAn c2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5k YXRhYmFzZS5faWQsCiAgICAgICAgICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCi0g ICAgICAgICAgICAnZnVuY19pZCc6IHRyZWVJbmZvLmZ1bmN0aW9uLl9pZCwKKyAgICAgICAgICAg ICdmdW5jX2lkJzogZGVidWdnZXJVdGlscy5nZXRGdW5jdGlvbklkKHRyZWVJbmZvKSwKICAgICAg ICAgICB9CiAgICAgICAgICk7Ci0gICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3Byb2NlZHVy ZScpIHsKKyAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAncHJvY2VkdXJlJyB8fCBkLl90eXBl ID09ICdlZGJwcm9jJykgewogICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcigKICAgICAgICAgICAn ZGVidWdnZXIuaW5pdGlhbGl6ZV90YXJnZXRfZm9yX2Z1bmN0aW9uJywgewogICAgICAgICAgICAg J2RlYnVnX3R5cGUnOiAnaW5kaXJlY3QnLAorICAgICAgICAgICAgJ3RyYW5zX2lkJzogdHJhbnNf aWQsCiAgICAgICAgICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKICAgICAgICAgICAg ICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQsCiAgICAgICAgICAgICAnc2NpZCc6IHRyZWVJ bmZvLnNjaGVtYS5faWQsCiAgICAgICAgICAgICAnZnVuY19pZCc6IGRlYnVnZ2VyVXRpbHMuZ2V0 UHJvY2VkdXJlSWQodHJlZUluZm8pLAogICAgICAgICAgIH0KICAgICAgICAgKTsKLSAgICAgIH0g ZWxzZSBpZiAoZC5fdHlwZSA9PSAnZWRiZnVuYycpIHsKLSAgICAgICAgLy8gR2V0IHRoZSBleGlz dGluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIGF2YWlsYWJsZSBmcm9tIHNxbGl0ZSBkYXRhYmFzZQot ICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcignZGVidWdnZXIuaW5pdGlhbGl6ZV90YXJnZXRfZm9y X2Z1bmN0aW9uJywgewotICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2luZGlyZWN0JywKLSAgICAg ICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAnZGlkJzogdHJlZUlu Zm8uZGF0YWJhc2UuX2lkLAotICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2NoZW1hLl9pZCwK LSAgICAgICAgICAnZnVuY19pZCc6IHRyZWVJbmZvLmVkYmZ1bmMuX2lkLAotICAgICAgICB9KTsK LSAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAnZWRicHJvYycpIHsKLSAgICAgICAgLy8gR2V0 IHRoZSBleGlzdGluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIGF2YWlsYWJsZSBmcm9tIHNxbGl0ZSBk YXRhYmFzZQotICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcignZGVidWdnZXIuaW5pdGlhbGl6ZV90 YXJnZXRfZm9yX2Z1bmN0aW9uJywgewotICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2luZGlyZWN0 JywKLSAgICAgICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKLSAgICAgICAgICAnZGlk JzogdHJlZUluZm8uZGF0YWJhc2UuX2lkLAotICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2No ZW1hLl9pZCwKLSAgICAgICAgICAnZnVuY19pZCc6IHRyZWVJbmZvLmVkYnByb2MuX2lkLAotICAg ICAgICB9KTsKICAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAndHJpZ2dlcl9mdW5jdGlvbicp IHsKICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoCiAgICAgICAgICAgJ2RlYnVnZ2VyLmluaXRp YWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsKICAgICAgICAgICAgICdkZWJ1Z190eXBlJzog J2luZGlyZWN0JywKKyAgICAgICAgICAgICd0cmFuc19pZCc6IHRyYW5zX2lkLAogICAgICAgICAg ICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCiAgICAgICAgICAgICAnZGlkJzogdHJlZUlu Zm8uZGF0YWJhc2UuX2lkLAogICAgICAgICAgICAgJ3NjaWQnOiB0cmVlSW5mby5zY2hlbWEuX2lk LApAQCAtMzk1LDYgKzM4MCw3IEBAIGRlZmluZShbCiAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9y KAogICAgICAgICAgICdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfdHJpZ2dlcicsIHsK ICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2luZGlyZWN0JywKKyAgICAgICAgICAgICd0cmFu c19pZCc6IHRyYW5zX2lkLAogICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQs CiAgICAgICAgICAgICAnZGlkJzogdHJlZUluZm8uZGF0YWJhc2UuX2lkLAogICAgICAgICAgICAg J3NjaWQnOiB0cmVlSW5mby5zY2hlbWEuX2lkLApAQCAtNDA2LDYgKzM5Miw3IEBAIGRlZmluZShb CiAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKAogICAgICAgICAgICdkZWJ1Z2dlci5pbml0aWFs aXplX3RhcmdldF9mb3JfdHJpZ2dlcicsIHsKICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2lu ZGlyZWN0JywKKyAgICAgICAgICAgICd0cmFuc19pZCc6IHRyYW5zX2lkLAogICAgICAgICAgICAg J3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCiAgICAgICAgICAgICAnZGlkJzogdHJlZUluZm8u ZGF0YWJhc2UuX2lkLAogICAgICAgICAgICAgJ3NjaWQnOiB0cmVlSW5mby5zY2hlbWEuX2lkLApA QCAtNDkxLDkgKzQ3OCwxMSBAQCBkZWZpbmUoWwogICAgICAgfSkKICAgICAgICAgLmRvbmUoZnVu Y3Rpb24ocmVzKSB7CiAKKyAgICAgICAgICBsZXQgZGVidWdfaW5mbyA9IHJlcy5kYXRhLmRlYnVn X2luZm8sCisgICAgICAgICAgICB0cmFuc19pZCA9IHJlcy5kYXRhLnRyYW5zX2lkOwogICAgICAg ICAgIC8vIE9wZW4gQWxlcnRpZnkgdGhlIGRpYWxvZyB0byB0YWtlIHRoZSBpbnB1dCBhcmd1bWVu dHMgZnJvbSB1c2VyIGlmIGZ1bmN0aW9uIGhhdmluZyBpbnB1dCBhcmd1bWVudHMKLSAgICAgICAg ICBpZiAocmVzLmRhdGFbMF1bJ3JlcXVpcmVfaW5wdXQnXSkgewotICAgICAgICAgICAgZ2V0X2Z1 bmN0aW9uX2FyZ3VtZW50cyhyZXMuZGF0YVswXSwgMCwgaXNfZWRiX3Byb2MpOworICAgICAgICAg IGlmIChkZWJ1Z19pbmZvWzBdWydyZXF1aXJlX2lucHV0J10pIHsKKyAgICAgICAgICAgIGdldF9m dW5jdGlvbl9hcmd1bWVudHMoZGVidWdfaW5mb1swXSwgMCwgaXNfZWRiX3Byb2MsIHRyYW5zX2lk KTsKICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHRhcmdl dCBhbmQgY3JlYXRlIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uIGFuZCB1bmlxdWUgdHJhbnNhY3Rp b24gSUQKICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0 aW9ucyB0aGVuIHdlIHNob3VsZCBub3QgYXNrIGZvciBmb3IgZnVuY3Rpb24gYXJndW1lbnRzIGFu ZApAQCAtNTA5LDIwICs0OTgsMjIgQEAgZGVmaW5lKFsKICAgICAgICAgICAgIHZhciB0cmVlSW5m byA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKSwKICAgICAgICAg ICAgICAgYmFzZVVybDsKIAotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2Z1bmN0aW9uJykg eworICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2Z1bmN0aW9uJyB8fCBkLl90eXBlID09ICdl ZGJmdW5jJykgewogICAgICAgICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcigKICAgICAgICAgICAg ICAgICAnZGVidWdnZXIuaW5pdGlhbGl6ZV90YXJnZXRfZm9yX2Z1bmN0aW9uJywgewogICAgICAg ICAgICAgICAgICAgJ2RlYnVnX3R5cGUnOiAnZGlyZWN0JywKKyAgICAgICAgICAgICAgICAgICd0 cmFuc19pZCc6IHRyYW5zX2lkLAogICAgICAgICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNl cnZlci5faWQsCiAgICAgICAgICAgICAgICAgICAnZGlkJzogdHJlZUluZm8uZGF0YWJhc2UuX2lk LAogICAgICAgICAgICAgICAgICAgJ3NjaWQnOiB0cmVlSW5mby5zY2hlbWEuX2lkLAotICAgICAg ICAgICAgICAgICAgJ2Z1bmNfaWQnOiB0cmVlSW5mby5mdW5jdGlvbi5faWQsCisgICAgICAgICAg ICAgICAgICAnZnVuY19pZCc6IGRlYnVnZ2VyVXRpbHMuZ2V0RnVuY3Rpb25JZCh0cmVlSW5mbyks CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgIH0gZWxzZSBpZihkLl90eXBlID09ICdwcm9jZWR1cmUnIHx8IGQuX3R5 cGUgPT0gJ2VkYnByb2MnKSB7CiAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKAogICAg ICAgICAgICAgICAgICdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7 CiAgICAgICAgICAgICAgICAgICAnZGVidWdfdHlwZSc6ICdkaXJlY3QnLAorICAgICAgICAgICAg ICAgICAgJ3RyYW5zX2lkJzogdHJhbnNfaWQsCiAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJl ZUluZm8uc2VydmVyLl9pZCwKICAgICAgICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5kYXRh YmFzZS5faWQsCiAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQs CkBAIC01MzUsMTAgKzUyNiwxMCBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICB1cmw6IGJhc2VV cmwsCiAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsCiAgICAgICAgICAgICB9KQotICAgICAg ICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgLmRvbmUoZnVuY3Rp b24oKSB7CiAKICAgICAgICAgICAgICAgICB2YXIgdXJsID0gdXJsX2ZvcignZGVidWdnZXIuZGly ZWN0JywgewotICAgICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogcmVzLmRhdGEuZGVidWdnZXJU cmFuc0lkLAorICAgICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogdHJhbnNfaWQsCiAgICAgICAg ICAgICAgICAgfSk7CiAKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5wcmVmZXJlbmNlcy5kZWJ1 Z2dlcl9uZXdfYnJvd3Nlcl90YWIpIHsKQEAgLTU2Myw3ICs1NTQsNyBAQCBkZWZpbmUoWwogICAg ICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgUGFuZWwgQ2xvc2VkIGV2ZW50CiAgICAgICAgICAg ICAgICAgICBwYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5DTE9TRUQsIGZ1bmN0aW9uKCkgewogICAg ICAgICAgICAgICAgICAgICB2YXIgY2xvc2VVcmwgPSB1cmxfZm9yKCdkZWJ1Z2dlci5jbG9zZScs IHsKLSAgICAgICAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiByZXMuZGF0YS5kZWJ1Z2dlclRy YW5zSWQsCisgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogdHJhbnNfaWQsCiAgICAg ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAg ICAgICAgICAgICAgICAgIHVybDogY2xvc2VVcmwsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXJfdWkuanMgYi93ZWIvcGdhZG1pbi90b29s cy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXJfdWkuanMKaW5kZXggNDZkMzRlZWQuLmYwNWEy MmRjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVi dWdnZXJfdWkuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2Rl YnVnZ2VyX3VpLmpzCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBkZWZpbmUoWwogICAgIH0KICAgfTsK IAotICB2YXIgcmVzID0gZnVuY3Rpb24oZGVidWdfaW5mbywgcmVzdGFydF9kZWJ1ZywgaXNfZWRi X3Byb2MpIHsKKyAgdmFyIHJlcyA9IGZ1bmN0aW9uKGRlYnVnX2luZm8sIHJlc3RhcnRfZGVidWcs IGlzX2VkYl9wcm9jLCB0cmFuc19pZCkgewogICAgIGlmICghQWxlcnRpZnkuZGVidWdnZXJJbnB1 dEFyZ3NEaWFsb2cpIHsKICAgICAgIEFsZXJ0aWZ5LmRpYWxvZygnZGVidWdnZXJJbnB1dEFyZ3NE aWFsb2cnLCBmdW5jdGlvbiBmYWN0b3J5KCkgewogICAgICAgICByZXR1cm4gewotICAgICAgICAg IG1haW46IGZ1bmN0aW9uKHRpdGxlLCBkZWJ1Z19pbmZvLCByZXN0YXJ0X2RlYnVnLCBpc19lZGJf cHJvYykgeworICAgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlLCBkZWJ1Z19pbmZvLCByZXN0 YXJ0X2RlYnVnLCBpc19lZGJfcHJvYywgdHJhbnNfaWQpIHsKICAgICAgICAgICAgIHRoaXMucHJl ZmVyZW5jZXMgPSB3aW5kb3cudG9wLnBnQWRtaW4uQnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9y X21vZHVsZSgnZGVidWdnZXInKTsKICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxl KTsKIApAQCAtMTc1LDYgKzE3NSw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICAvLyBvdGhlciBm dW5jdGlvbnMgb3RoZXIgdGhhbiBtYWluIGZ1bmN0aW9uLgogICAgICAgICAgICAgdGhpcy5zZXQo J2RlYnVnX2luZm8nLCBkZWJ1Z19pbmZvKTsKICAgICAgICAgICAgIHRoaXMuc2V0KCdyZXN0YXJ0 X2RlYnVnJywgcmVzdGFydF9kZWJ1Zyk7CisgICAgICAgICAgICB0aGlzLnNldCgndHJhbnNfaWQn LCB0cmFuc19pZCk7CiAKICAgICAgICAgICAgIC8vIFZhcmlhYmxlcyB0byBzdG9yZSB0aGUgZGF0 YSBzZW50IGZyb20gc3FsaXRlIGRhdGFiYXNlCiAgICAgICAgICAgICB2YXIgZnVuY19hcmdzX2Rh dGEgPSB0aGlzLmZ1bmNfYXJnc19kYXRhID0gW107CkBAIC01NzksNiArNTgwLDcgQEAgZGVmaW5l KFsKICAgICAgICAgICBzZXR0aW5nczogewogICAgICAgICAgICAgZGVidWdfaW5mbzogdW5kZWZp bmVkLAogICAgICAgICAgICAgcmVzdGFydF9kZWJ1ZzogdW5kZWZpbmVkLAorICAgICAgICAgICAg dHJhbnNfaWQ6IHVuZGVmaW5lZCwKICAgICAgICAgICB9LAogICAgICAgICAgIHNldHVwOiBmdW5j dGlvbigpIHsKICAgICAgICAgICAgIHJldHVybiB7CkBAIC03MDYsNiArNzA4LDcgQEAgZGVmaW5l KFsKICAgICAgICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAg ICAgICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcignZGVidWdnZXIuaW5pdGlhbGl6ZV90YXJnZXRf Zm9yX2Z1bmN0aW9uJywgewogICAgICAgICAgICAgICAgICAgICAnZGVidWdfdHlwZSc6ICdkaXJl Y3QnLAorICAgICAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiBzZWxmLnNldHRpbmcoJ3RyYW5z X2lkJyksCiAgICAgICAgICAgICAgICAgICAgICdzaWQnOiB0cmVlSW5mby5zZXJ2ZXIuX2lkLAog ICAgICAgICAgICAgICAgICAgICAnZGlkJzogdHJlZUluZm8uZGF0YWJhc2UuX2lkLAogICAgICAg ICAgICAgICAgICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCkBAIC03MTQsNiArNzE3 LDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3By b2NlZHVyZScpIHsKICAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdkZWJ1Z2dl ci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7CiAgICAgICAgICAgICAgICAgICAg ICdkZWJ1Z190eXBlJzogJ2RpcmVjdCcsCisgICAgICAgICAgICAgICAgICAgICd0cmFuc19pZCc6 IHNlbGYuc2V0dGluZygndHJhbnNfaWQnKSwKICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHRy ZWVJbmZvLnNlcnZlci5faWQsCiAgICAgICAgICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5k YXRhYmFzZS5faWQsCiAgICAgICAgICAgICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2NoZW1h Ll9pZCwKQEAgLTcyMiw2ICs3MjYsNyBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAoZC5fdHlwZSA9PSAnZWRiZnVuYycpIHsKICAgICAgICAgICAgICAgICAgIGJhc2VVcmwg PSB1cmxfZm9yKCdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7CiAg ICAgICAgICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2RpcmVjdCcsCisgICAgICAgICAgICAg ICAgICAgICd0cmFuc19pZCc6IHNlbGYuc2V0dGluZygndHJhbnNfaWQnKSwKICAgICAgICAgICAg ICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCiAgICAgICAgICAgICAgICAgICAg ICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQsCiAgICAgICAgICAgICAgICAgICAgICdzY2lk JzogdHJlZUluZm8uc2NoZW1hLl9pZCwKQEAgLTczMCw2ICs3MzUsNyBAQCBkZWZpbmUoWwogICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAnZWRicHJvYycpIHsKICAgICAgICAg ICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9m b3JfZnVuY3Rpb24nLCB7CiAgICAgICAgICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2RpcmVj dCcsCisgICAgICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYuc2V0dGluZygndHJhbnNf aWQnKSwKICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCiAg ICAgICAgICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQsCiAgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2NoZW1hLl9pZCwKQEAgLTg4NSw3ICs4OTEs MTIgQEAgZGVmaW5lKFsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGUuYnV0dG9u LnRleHQgPT09IGdldHRleHQoJ0NhbmNlbCcpKSB7Ci0gICAgICAgICAgICAgIC8vY2xvc2UgdGhl IGRpYWxvZy4uLgorICAgICAgICAgICAgICAvKiBDbGVhciB0aGUgdHJhbnMgaWQgKi8KKyAgICAg ICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAorICAg ICAgICAgICAgICAgIHVybDogdXJsX2ZvcignZGVidWdnZXIuY2xvc2UnLCB7J3RyYW5zX2lkJzog dGhpcy5zZXR0aW5nKCd0cmFuc19pZCcpfSksCisgICAgICAgICAgICAgIH0pOworCiAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9LApAQCAtOTU5 LDcgKzk3MCw3IEBAIGRlZmluZShbCiAgICAgfQogCiAgICAgQWxlcnRpZnkuZGVidWdnZXJJbnB1 dEFyZ3NEaWFsb2coCi0gICAgICBnZXR0ZXh0KCdEZWJ1Z2dlcicpLCBkZWJ1Z19pbmZvLCByZXN0 YXJ0X2RlYnVnLCBpc19lZGJfcHJvYworICAgICAgZ2V0dGV4dCgnRGVidWdnZXInKSwgZGVidWdf aW5mbywgcmVzdGFydF9kZWJ1ZywgaXNfZWRiX3Byb2MsIHRyYW5zX2lkCiAgICAgKS5yZXNpemVU byhwZ0Jyb3dzZXIuc3RkVy5tZCxwZ0Jyb3dzZXIuc3RkSC5tZCk7CiAKICAgfTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5q cyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5q cwppbmRleCBhMzUyOWQ4NC4uMjgyYWNiMDEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5qcworKysgYi93ZWIvcGdhZG1pbi90 b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXJfdXRpbHMuanMKQEAgLTE4LDYgKzE4LDE4 IEBAIGZ1bmN0aW9uIHNldEZvY3VzVG9EZWJ1Z2dlckVkaXRvcihlZGl0b3IsIGNvbW1hbmQpIHsK ICAgfQogfQogCitmdW5jdGlvbiBnZXRGdW5jdGlvbklkKHRyZWVJbmZvT2JqZWN0KSB7CisgIGxl dCBvYmplY3RJZDsKKyAgaWYodHJlZUluZm9PYmplY3QpIHsKKyAgICBpZiAodHJlZUluZm9PYmpl Y3QuZnVuY3Rpb24gJiYgdHJlZUluZm9PYmplY3QuZnVuY3Rpb24uX2lkKSB7CisgICAgICBvYmpl Y3RJZCA9IHRyZWVJbmZvT2JqZWN0LmZ1bmN0aW9uLl9pZDsKKyAgICB9IGVsc2UgaWYgKHRyZWVJ bmZvT2JqZWN0LmVkYmZ1bmMgJiYgdHJlZUluZm9PYmplY3QuZWRiZnVuYy5faWQpIHsKKyAgICAg IG9iamVjdElkID0gdHJlZUluZm9PYmplY3QuZWRiZnVuYy5faWQ7CisgICAgfQorICB9CisgIHJl dHVybiBvYmplY3RJZDsKK30KKwogZnVuY3Rpb24gZ2V0UHJvY2VkdXJlSWQodHJlZUluZm9PYmpl Y3QpIHsKICAgbGV0IG9iamVjdElkOwogICBpZih0cmVlSW5mb09iamVjdCkgewpAQCAtMzIsNSAr NDQsNiBAQCBmdW5jdGlvbiBnZXRQcm9jZWR1cmVJZCh0cmVlSW5mb09iamVjdCkgewogCiBtb2R1 bGUuZXhwb3J0cyA9IHsKICAgc2V0Rm9jdXNUb0RlYnVnZ2VyRWRpdG9yOiBzZXRGb2N1c1RvRGVi dWdnZXJFZGl0b3IsCisgIGdldEZ1bmN0aW9uSWQ6IGdldEZ1bmN0aW9uSWQsCiAgIGdldFByb2Nl ZHVyZUlkOiBnZXRQcm9jZWR1cmVJZCwKIH07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9kZWJ1Z2dlci91dGlscy9kZWJ1Z2dlcl9pbnN0YW5jZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xz L2RlYnVnZ2VyL3V0aWxzL2RlYnVnZ2VyX2luc3RhbmNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5kMTYwMjFlMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2RlYnVnZ2VyL3V0aWxzL2RlYnVnZ2VyX2luc3RhbmNlLnB5CkBAIC0wLDAgKzEsNzIg QEAKK2Zyb20gZmxhc2sgaW1wb3J0IHNlc3Npb24KK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBMb2Nr CitpbXBvcnQgcmFuZG9tCisKK2RlYnVnZ2VyX3Nlc3Npb25zX2xvY2sgPSBMb2NrKCkKKworCitj bGFzcyBEZWJ1Z2dlckluc3RhbmNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc19pZD1O b25lKToKKyAgICAgICAgaWYgdHJhbnNfaWQgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Ry YW5zX2lkID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgc2VsZi5fdHJhbnNfaWQgPSB0cmFuc19pZAorCisgICAgICAgIHNlbGYuX2Z1 bmN0aW9uX2RhdGEgPSBOb25lCisgICAgICAgIHNlbGYuX2RlYnVnZ2VyX2RhdGEgPSBOb25lCisg ICAgICAgIHNlbGYubG9hZF9mcm9tX3Nlc3Npb24oKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm IHRyYW5zX2lkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgdHJhbnNfaWQgYmUgcmVhZG9u bHkgd2l0aCBubyBzZXR0ZXIKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl90cmFu c19pZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZ1bmN0aW9uX2RhdGEoc2VsZik6CisgICAg ICAgIHJldHVybiBzZWxmLl9mdW5jdGlvbl9kYXRhCisKKyAgICBAZnVuY3Rpb25fZGF0YS5zZXR0 ZXIKKyAgICBkZWYgZnVuY3Rpb25fZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fZnVu Y3Rpb25fZGF0YSA9IGRhdGEKKyAgICAgICAgc2VsZi51cGRhdGVfc2Vzc2lvbigpCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgZGVidWdnZXJfZGF0YShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl bGYuX2RlYnVnZ2VyX2RhdGEKKworICAgIEBkZWJ1Z2dlcl9kYXRhLnNldHRlcgorICAgIGRlZiBk ZWJ1Z2dlcl9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9kZWJ1Z2dlcl9kYXRhID0g ZGF0YQorICAgICAgICBzZWxmLnVwZGF0ZV9zZXNzaW9uKCkKKworICAgIEBzdGF0aWNtZXRob2QK KyAgICBkZWYgZ2V0X3RyYW5zX2lkcygpOgorICAgICAgICBpZiAnX19kZWJ1Z2dlcl9zZXNzaW9u cycgaW4gc2Vzc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBbdHJhbnNfaWQgZm9yIHRyYW5zX2lk IGluIHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lvbnMnXV0KKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIGxvYWRfZnJvbV9zZXNzaW9uKHNlbGYpOgorICAg ICAgICBpZiAnX19kZWJ1Z2dlcl9zZXNzaW9ucycgaW4gc2Vzc2lvbjoKKyAgICAgICAgICAgIGlm IHN0cihzZWxmLnRyYW5zX2lkKSBpbiBzZXNzaW9uWydfX2RlYnVnZ2VyX3Nlc3Npb25zJ106Cisg ICAgICAgICAgICAgICAgdHJhbnNfZGF0YSA9IHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lvbnMn XVtzdHIoc2VsZi50cmFuc19pZCldCisgICAgICAgICAgICAgICAgc2VsZi5mdW5jdGlvbl9kYXRh ID0gdHJhbnNfZGF0YS5nZXQoJ2Z1bmN0aW9uX2RhdGEnLCBOb25lKQorICAgICAgICAgICAgICAg IHNlbGYuZGVidWdnZXJfZGF0YSA9IHRyYW5zX2RhdGEuZ2V0KCdkZWJ1Z2dlcl9kYXRhJywgTm9u ZSkKKworICAgIGRlZiB1cGRhdGVfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBkZWJ1Z2dl cl9zZXNzaW9uc19sb2NrOgorICAgICAgICAgICAgaWYgJ19fZGVidWdnZXJfc2Vzc2lvbnMnIG5v dCBpbiBzZXNzaW9uOgorICAgICAgICAgICAgICAgIHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lv bnMnXSA9IGRpY3QoKQorCisgICAgICAgICAgICBzZXNzaW9uWydfX2RlYnVnZ2VyX3Nlc3Npb25z J11bc3RyKHNlbGYudHJhbnNfaWQpXSA9IGRpY3QoCisgICAgICAgICAgICAgICAgZnVuY3Rpb25f ZGF0YT1zZWxmLmZ1bmN0aW9uX2RhdGEsCisgICAgICAgICAgICAgICAgZGVidWdnZXJfZGF0YT1z ZWxmLmRlYnVnZ2VyX2RhdGEKKyAgICAgICAgICAgICkKKworICAgIGRlZiBjbGVhcihzZWxmKToK KyAgICAgICAgd2l0aCBkZWJ1Z2dlcl9zZXNzaW9uc19sb2NrOgorICAgICAgICAgICAgaWYgJ19f ZGVidWdnZXJfc2Vzc2lvbnMnIGluIHNlc3Npb246CisgICAgICAgICAgICAgICAgaWYgc3RyKHNl bGYudHJhbnNfaWQpIGluIHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lvbnMnXToKKyAgICAgICAg ICAgICAgICAgICAgc2Vzc2lvblsnX19kZWJ1Z2dlcl9zZXNzaW9ucyddLnBvcChzdHIoc2VsZi50 cmFuc19pZCkpCg== --00000000000055c7fc058af7bc37--