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 1f37sR-0007WA-Ty for pgadmin-hackers@arkaria.postgresql.org; Mon, 02 Apr 2018 22:24:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1f37sM-0007LI-TL for pgadmin-hackers@arkaria.postgresql.org; Mon, 02 Apr 2018 22:24:30 +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 1f37sM-0007L2-Bk for pgadmin-hackers@lists.postgresql.org; Mon, 02 Apr 2018 22:24:30 +0000 Received: from mail-it0-x232.google.com ([2607:f8b0:4001:c0b::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1f37sH-0004i9-8a for pgadmin-hackers@postgresql.org; Mon, 02 Apr 2018 22:24:28 +0000 Received: by mail-it0-x232.google.com with SMTP id v194-v6so20207665itb.0 for ; Mon, 02 Apr 2018 15:24:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=tSZ1QoH9oyiep0PzHcwbLRhlfmSn3FlA/OLM5Qj+17A=; b=HPfp8lHI2tFLifjiJP/d2yv6jpPr2cxwGi6ccbNVwbhxxW9mdr4tIzsEoQzEghlJ0I FQjaOa0p9Kps7/2QC4rxBPkBAi/SKhAkd/io8fXDkgY23Lnt/dRaSYUel0vH/1tozm0W /a+7ehZJm4GX2jq+/4g2Clgt0IshRs1diQY/VZMbt14WQ++b1wOVI/6LP0bagUGIbHsl 3323pr4iEXQeJxNCjLHGtV4A+45WUr1XY0rhU178qrcvVy1j3zYy0eB3WPh4H/OwEI20 41j9KLUr6V4bcamC2bP+rS2DYYVR4J8119T3slA338F6ED+DOFgGw/mexNfQCFsehwDl pGCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=tSZ1QoH9oyiep0PzHcwbLRhlfmSn3FlA/OLM5Qj+17A=; b=LS9Mi30wXMf5M/Gd3Xr5uWDBBNXS+zRp476TkTLDWdS6N11jvuCrMbA0JHdimz1On9 +hkgXWuRdYFYA4u77nMCncFuAp8bbTth3xvpYW4qKuUVwE51WK5VTQOwmpDc2xv7bbZP aMZRICTSo0e2qHGoiDpnPLhE6Avfx13FEKXFZZeDoOm14oM6fo73RX3Z7kfZXiQlYdBe GxK2wR0zhQ3XPFAK6prErNIRnPq7RIdSLN37LN7EYtMHiW0z4QA0BN0h6AXTzU+amkLh ibiwuJz2RkeQr+tV9yHUXfLkbFXxMMiKpFz+ZKzBh84syZ9A1TWMKMnqXvIKxxC/tyG4 2FSg== X-Gm-Message-State: AElRT7Fjb04W6I+7YOV+jnRioR6e4GsKhJF8FfnGFhqOSr7KXDYBnUpv o0xZAx8bes3bIspnOV3YN7u5W02sHvgq2wNwXM+fvQ== X-Google-Smtp-Source: AIpwx48aasPDJL0cWeBp5CiK2y2SQCHNzCsmIHm74s5+dQBbTcV27K1/7GjPluNNkfY2jQfZ2ZNeNqUdKmvOxrvnM64= X-Received: by 2002:a24:496a:: with SMTP id z103-v6mr2605042ita.133.1522707863161; Mon, 02 Apr 2018 15:24:23 -0700 (PDT) MIME-Version: 1.0 From: Joao De Almeida Pereira Date: Mon, 02 Apr 2018 22:24:11 +0000 Message-ID: Subject: [pgadmin4][patch] #3244 Query elapse time granularity To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000481da90568e50d85" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000481da90568e50d85 Content-Type: multipart/alternative; boundary="000000000000481da60568e50d83" --000000000000481da60568e50d83 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached you can find a patch that increases the granularity of time displayed for total run time of a query. Also extracts the functionality, wraps it with tests. An addon to this patch is the extraction of the function call_render_after_poll that uses the function that calculates the time as well Thanks Joao --000000000000481da60568e50d83 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached you can find a pat= ch that increases the granularity of time displayed for total run time of a= query.
Also extracts the functionality, wraps it with tests.
An addon to this patch is the extraction of the function call_render= _after_poll=C2=A0 that uses the function that calculates the time as well


Thanks
Joao
--000000000000481da60568e50d83-- --000000000000481da90568e50d85 Content-Type: application/octet-stream; name="granularity-of-query-elapse-time.diff" Content-Disposition: attachment; filename="granularity-of-query-elapse-time.diff" Content-Transfer-Encoding: base64 Content-ID: <162886f86bc8421b23d1> X-Attachment-Id: 162886f86bc8421b23d1 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDNj ZTg2YTExLi5mOGQ4NzYwNyAxMDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93ZWIv cGFja2FnZS5qc29uCkBAIC04NCw2ICs4NCw3IEBACiAgICAgInNsaWNrZ3JpZCI6ICJnaXQraHR0 cHM6Ly9naXRodWIuY29tLzZwYWMvU2xpY2tHcmlkLmdpdCMyLjMuNyIsCiAgICAgInNuYXBzdmci OiAiXjAuNS4xIiwKICAgICAic3BlY3RydW0tY29sb3JwaWNrZXIiOiAiXjEuOC4wIiwKKyAgICAi c3ByaW50Zi1qcyI6ICJeMS4xLjEiLAogICAgICJ1bmRlcnNjb3JlIjogIl4xLjguMyIsCiAgICAg InVuZGVyc2NvcmUuc3RyaW5nIjogIl4zLjMuNCIsCiAgICAgIndhdGNoaWZ5IjogIn4zLjkuMCIs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGN1bGF0ZV9x dWVyeV9ydW5fdGltZS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsY3Vs YXRlX3F1ZXJ5X3J1bl90aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li5iOWI2YjBjNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxl ZGl0b3IvY2FsY3VsYXRlX3F1ZXJ5X3J1bl90aW1lLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K Ky8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KworaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOworCitleHBvcnQgZnVuY3Rpb24gY2FsY3Vs YXRlUXVlcnlSdW5UaW1lKHN0YXJ0VGltZSwgZW5kVGltZSkgeworICBjb25zdCB0ZW1wRW5kRGF0 ZSA9IG1vbWVudChlbmRUaW1lKTsKKyAgbGV0IG1pbGlzZWNvbmRzID0gdGVtcEVuZERhdGUuZGlm ZihzdGFydFRpbWUpOworICBsZXQgc2Vjb25kcyA9IHRlbXBFbmREYXRlLmRpZmYoc3RhcnRUaW1l LCAnc2Vjb25kcycpOworICBjb25zdCBtaW51dGVzID0gdGVtcEVuZERhdGUuZGlmZihzdGFydFRp bWUsICdtaW51dGVzJyk7CisKKyAgbGV0IHJlc3VsdCA9ICcnOworICBpZiAobWludXRlcyA+IDAp IHsKKyAgICByZXN1bHQgKz0gbWludXRlcyArICcgbWluICc7CisgICAgc2Vjb25kcyAtPSBtaW51 dGVzICogNjA7CisgIH0KKworICBpZiAoc2Vjb25kcyA+IDApIHsKKyAgICByZXN1bHQgKz0gc2Vj b25kcyArICcgc2VjcyAnOworICAgIG1pbGlzZWNvbmRzIC09IHNlY29uZHMgKiAxMDAwOworICB9 CisKKyAgaWYobWludXRlcyA8PSAwKSB7CisgICAgcmVzdWx0ICs9IG1pbGlzZWNvbmRzICsgJyBt c2VjJzsKKyAgfQorICByZXR1cm4gcmVzdWx0LnRyaW0oKTsKK30KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5qcyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbC5qcwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmQxZTM4MzYKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVy X3BvbGwuanMKQEAgLTAsMCArMSw1MiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge2NhbGN1bGF0ZVF1ZXJ5 UnVuVGltZX0gZnJvbSAnLi9jYWxjdWxhdGVfcXVlcnlfcnVuX3RpbWUnOworaW1wb3J0IGdldHRl eHQgZnJvbSAnLi4vZ2V0dGV4dCc7CitpbXBvcnQge3NwcmludGZ9IGZyb20gJ3NwcmludGYtanMn OworCitmdW5jdGlvbiBoYXNSZXN1bHRzVG9EaXNwbGF5KHJlcykgeworICByZXR1cm4gcmVzLmNv bGluZm8gIT0gbnVsbDsKK30KKworZnVuY3Rpb24gaXNRdWVyeVRvb2woc3FsRWRpdG9yKSB7Cisg IHJldHVybiBzcWxFZGl0b3IuaXNfcXVlcnlfdG9vbDsKK30KKworZnVuY3Rpb24gaXNOb3RpZmlj YXRpb25FbmFibGVkKHNxbEVkaXRvcikgeworICByZXR1cm4gc3FsRWRpdG9yLmluZm9fbm90aWZp ZXJfdGltZW91dCA+PSAwOworfQorCitleHBvcnQgZnVuY3Rpb24gY2FsbFJlbmRlckFmdGVyUG9s bChzcWxFZGl0b3IsIGFsZXJ0aWZ5LCByZXMpIHsKKyAgc3FsRWRpdG9yLnF1ZXJ5X2VuZF90aW1l ID0gbmV3IERhdGUoKTsKKyAgc3FsRWRpdG9yLnJvd3NfYWZmZWN0ZWQgPSByZXMucm93c19hZmZl Y3RlZDsKKyAgc3FsRWRpdG9yLmhhc19tb3JlX3Jvd3MgPSByZXMuaGFzX21vcmVfcm93czsKKwor ICBpZiAoaGFzUmVzdWx0c1RvRGlzcGxheShyZXMpKSB7CisgICAgc3FsRWRpdG9yLl9yZW5kZXIo cmVzKTsKKyAgfSBlbHNlIHsKKyAgICBzcWxFZGl0b3IudG90YWxfdGltZSA9IGNhbGN1bGF0ZVF1 ZXJ5UnVuVGltZSgKKyAgICAgIHNxbEVkaXRvci5xdWVyeV9zdGFydF90aW1lLAorICAgICAgc3Fs RWRpdG9yLnF1ZXJ5X2VuZF90aW1lKTsKKyAgICBjb25zdCBtc2cgPSBzcHJpbnRmKAorICAgICAg Z2V0dGV4dCgnUXVlcnkgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5IGluICVzLicpLCBzcWxFZGl0b3Iu dG90YWxfdGltZSk7CisgICAgcmVzLnJlc3VsdCArPSAnXG5cbicgKyBtc2c7CisgICAgc3FsRWRp dG9yLnVwZGF0ZV9tc2dfaGlzdG9yeSh0cnVlLCByZXMucmVzdWx0LCBmYWxzZSk7CisgICAgaWYg KGlzTm90aWZpY2F0aW9uRW5hYmxlZChzcWxFZGl0b3IpKSB7CisgICAgICBhbGVydGlmeS5zdWNj ZXNzKG1zZywgc3FsRWRpdG9yLmluZm9fbm90aWZpZXJfdGltZW91dCk7CisgICAgfQorICB9CisK KyAgaWYgKGlzUXVlcnlUb29sKHNxbEVkaXRvcikpIHsKKyAgICBzcWxFZGl0b3IuZGlzYWJsZV90 b29sX2J1dHRvbnMoZmFsc2UpOworICB9CisKKyAgc3FsRWRpdG9yLnNldElzUXVlcnlSdW5uaW5n KGZhbHNlKTsKKyAgc3FsRWRpdG9yLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmct aWNvbjpoaWRlJyk7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv c3RhdGljL2pzL3NxbGVkaXRvci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0 aWMvanMvc3FsZWRpdG9yLmpzCmluZGV4IDkyM2NjZWFkLi41NmJkYWYxYiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKQEAgLTIw LDYgKzIwLDggQEAgZGVmaW5lKCd0b29scy5xdWVyeXRvb2wnLCBbCiAgICdzb3VyY2VzL2tleWJv YXJkX3Nob3J0Y3V0cycsCiAgICdzb3VyY2VzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMn LAogICAncGdhZG1pbi5kYXRhZ3JpZCcsCisgICdzb3VyY2VzL3NxbGVkaXRvci9jYWxjdWxhdGVf cXVlcnlfcnVuX3RpbWUnLAorICAnc291cmNlcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJf cG9sbCcsCiAgICdzb3VyY2VzLy4uL2J1bmRsZS9zbGlja2dyaWQnLAogICAncGdhZG1pbi5maWxl X21hbmFnZXInLAogICAnYmFja2dyaWQuc2l6ZWFibGUuY29sdW1ucycsCkBAIC0zMiw3ICszNCw4 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICBwZ0V4cGxhaW4sIEdyaWRTZWxlY3Rv ciwgQWN0aXZlQ2VsbENhcHR1cmUsIGNsaXBib2FyZCwgY29weURhdGEsIFJhbmdlU2VsZWN0aW9u SGVscGVyLCBoYW5kbGVRdWVyeU91dHB1dEtleWJvYXJkRXZlbnQsCiAgIFhDZWxsU2VsZWN0aW9u TW9kZWwsIHNldFN0YWdlZFJvd3MsIFNxbEVkaXRvclV0aWxzLCBFeGVjdXRlUXVlcnksIHRyYW5z YWN0aW9uLAogICBIaXN0b3J5QnVuZGxlLCBxdWVyeUhpc3RvcnksIFJlYWN0LCBSZWFjdERPTSwK LSAga2V5Ym9hcmRTaG9ydGN1dHMsIHF1ZXJ5VG9vbEFjdGlvbnMsIERhdGFncmlkKSB7CisgIGtl eWJvYXJkU2hvcnRjdXRzLCBxdWVyeVRvb2xBY3Rpb25zLCBEYXRhZ3JpZCwKKyAgY2FsY3VsYXRl UXVlcnlSdW5UaW1lLCBjYWxsUmVuZGVyQWZ0ZXJQb2xsKSB7CiAgIC8qIFJldHVybiBiYWNrLCB0 aGlzIGhhcyBiZWVuIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAqLwogICBpZiAocGdBZG1pbi5TcWxF ZGl0b3IpCiAgICAgcmV0dXJuIHBnQWRtaW4uU3FsRWRpdG9yOwpAQCAtMjIyNCwzNyArMjIyNyw4 IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgLy8gVGhpcyBpcyBhIHdyYXBw ZXIgdG8gY2FsbF9yZW5kZXIgZnVuY3Rpb24KICAgICAgIC8vIFdlIG5lZWQgdGhpcyBiZWNhdXNl IHdlIGhhdmUgc2VwYXJhdGVkIGNvbHVtbnMgcm91dGUgJiByZXN1bHQgcm91dGUKICAgICAgIC8v IFdlIG5lZWQgdG8gY29tYmluZSBib3RoIHJlc3VsdCBoZXJlIGluIHdyYXBwZXIgYmVmb3JlIHJl bmRlcmluZyBncmlkCi0gICAgICBjYWxsX3JlbmRlcl9hZnRlcl9wb2xsOiBmdW5jdGlvbihyZXMp IHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZWxmLnF1ZXJ5X2VuZF90aW1l ID0gbmV3IERhdGUoKTsKLSAgICAgICAgc2VsZi5yb3dzX2FmZmVjdGVkID0gcmVzLnJvd3NfYWZm ZWN0ZWQ7Ci0gICAgICAgIHNlbGYuaGFzX21vcmVfcm93cyA9IHJlcy5oYXNfbW9yZV9yb3dzOwot Ci0gICAgICAgIC8qIElmIG5vIGNvbHVtbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaXQgbWVh bnMgcXVlcnkKLSAgICAgICAgICAgcnVucyBzdWNjZXNzZnVsbHkgd2l0aCBubyByZXN1bHQgdG8g ZGlzcGxheS4gSW4gdGhpcwotICAgICAgICAgICBjYXNlIG5vIG5lZWQgdG8gY2FsbCByZW5kZXIg ZnVuY3Rpb24uCi0gICAgICAgICAgICovCi0gICAgICAgIGlmIChyZXMuY29saW5mbyAhPSBudWxs KQotICAgICAgICAgIHNlbGYuX3JlbmRlcihyZXMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg ICAvLyBTaG93IG1lc3NhZ2UgaW4gbWVzc2FnZSBhbmQgaGlzdG9yeSB0YWIgaW4gY2FzZSBvZiBx dWVyeSB0b29sCi0gICAgICAgICAgc2VsZi50b3RhbF90aW1lID0gc2VsZi5nZXRfcXVlcnlfcnVu X3RpbWUoc2VsZi5xdWVyeV9zdGFydF90aW1lLCBzZWxmLnF1ZXJ5X2VuZF90aW1lKTsKLSAgICAg ICAgICB2YXIgbXNnID0gUyhnZXR0ZXh0KCdRdWVyeSByZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4g JXMuJykpLnNwcmludGYoc2VsZi50b3RhbF90aW1lKS52YWx1ZSgpOwotICAgICAgICAgIHJlcy5y ZXN1bHQgKz0gJ1xuXG4nICsgbXNnOwotICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5 KHRydWUsIHJlcy5yZXN1bHQsIGZhbHNlKTsKLSAgICAgICAgICAvLyBEaXNwbGF5IHRoZSBub3Rp ZmllciBpZiB0aGUgdGltZW91dCBpcyBzZXQgdG8gPj0gMAotICAgICAgICAgIGlmIChzZWxmLmlu Zm9fbm90aWZpZXJfdGltZW91dCA+PSAwKSB7Ci0gICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNz KG1zZywgc2VsZi5pbmZvX25vdGlmaWVyX3RpbWVvdXQpOwotICAgICAgICAgIH0KLSAgICAgICAg fQotCi0gICAgICAgIC8vIEVuYWJsZS9EaXNhYmxlIHF1ZXJ5IHRvb2wgYnV0dG9uIG9ubHkgaWYg aXNfcXVlcnlfdG9vbCBpcyB0cnVlLgotICAgICAgICBpZiAoc2VsZi5pc19xdWVyeV90b29sKSB7 Ci0gICAgICAgICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7Ci0gICAgICAgICAg JCgnI2J0bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICB9 Ci0gICAgICAgIGlzX3F1ZXJ5X3J1bm5pbmcgPSBmYWxzZTsKLSAgICAgICAgc2VsZi50cmlnZ2Vy KCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAgICAgY2FsbF9yZW5k ZXJfYWZ0ZXJfcG9sbDogZnVuY3Rpb24ocXVlcnlSZXN1bHQpIHsKKyAgICAgICAgY2FsbFJlbmRl ckFmdGVyUG9sbC5jYWxsUmVuZGVyQWZ0ZXJQb2xsKHRoaXMsYWxlcnRpZnkscXVlcnlSZXN1bHQp OwogICAgICAgfSwKIAogCkBAIC0yMzI5LDcgKzIzMDMsMTAgQEAgZGVmaW5lKCd0b29scy5xdWVy eXRvb2wnLCBbCiAgICAgICAgICAgICApOwogCiAgICAgICAgICAgICAvLyBTaG93IG1lc3NhZ2Ug aW4gbWVzc2FnZSBhbmQgaGlzdG9yeSB0YWIgaW4gY2FzZSBvZiBxdWVyeSB0b29sCi0gICAgICAg ICAgICBzZWxmLnRvdGFsX3RpbWUgPSBzZWxmLmdldF9xdWVyeV9ydW5fdGltZShzZWxmLnF1ZXJ5 X3N0YXJ0X3RpbWUsIHNlbGYucXVlcnlfZW5kX3RpbWUpOworICAgICAgICAgICAgc2VsZi50b3Rh bF90aW1lID0gY2FsY3VsYXRlUXVlcnlSdW5UaW1lLmNhbGN1bGF0ZVF1ZXJ5UnVuVGltZSgKKyAg ICAgICAgICAgICAgc2VsZi5xdWVyeV9zdGFydF90aW1lLAorICAgICAgICAgICAgICBzZWxmLnF1 ZXJ5X2VuZF90aW1lCisgICAgICAgICAgICApOwogICAgICAgICAgICAgdmFyIG1zZzEgPSBTKGdl dHRleHQoJ1N1Y2Nlc3NmdWxseSBydW4uIFRvdGFsIHF1ZXJ5IHJ1bnRpbWU6ICVzLicpKS5zcHJp bnRmKHNlbGYudG90YWxfdGltZSkudmFsdWUoKTsKICAgICAgICAgICAgIHZhciBtc2cyID0gUyhn ZXR0ZXh0KCclcyByb3dzIGFmZmVjdGVkLicpKS5zcHJpbnRmKHNlbGYucm93c19hZmZlY3RlZCku dmFsdWUoKTsKIApAQCAtMjU3MCwyNSArMjU0Nyw2IEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29s JywgWwogICAgICAgICB9CiAgICAgICB9LAogCi0gICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwg cmV0dXJuIHRoZSB0b3RhbCBxdWVyeSBleGVjdXRpb24gVGltZS4KLSAgICAgIGdldF9xdWVyeV9y dW5fdGltZTogZnVuY3Rpb24oc3RhcnRfdGltZSwgZW5kX3RpbWUpIHsKLSAgICAgICAgLy8gQ2Fs Y3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kcwotICAgICAgICB2YXIgZGlmZmVy ZW5jZV9tcywgbWlsaXNlY29uZHM7Ci0gICAgICAgIGRpZmZlcmVuY2VfbXMgPSBtaWxpc2Vjb25k cyA9IGVuZF90aW1lLmdldFRpbWUoKSAtIHN0YXJ0X3RpbWUuZ2V0VGltZSgpOwotICAgICAgICAv L3Rha2Ugb3V0IG1pbGxpc2Vjb25kcwotICAgICAgICBkaWZmZXJlbmNlX21zID0gZGlmZmVyZW5j ZV9tcyAvIDEwMDA7Ci0gICAgICAgIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihkaWZmZXJlbmNl X21zICUgNjApOwotICAgICAgICBkaWZmZXJlbmNlX21zID0gZGlmZmVyZW5jZV9tcyAvIDYwOwot ICAgICAgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZV9tcyAlIDYwKTsKLQot ICAgICAgICBpZiAobWludXRlcyA+IDApCi0gICAgICAgICAgcmV0dXJuIG1pbnV0ZXMgKyAnIG1p bic7Ci0gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPiAwKSB7Ci0gICAgICAgICAgcmV0dXJuIHNl Y29uZHMgKyAnIHNlY3MnOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICByZXR1cm4gbWlsaXNl Y29uZHMgKyAnIG1zZWMnOwotICAgICAgfSwKLQogICAgICAgLyogVGhpcyBmdW5jdGlvbiBpcyB1 c2VkIHRvIGNoZWNrIHdoZXRoZXIgY2VsbAogICAgICAgICogaXMgZWRpdGFibGUgb3Igbm90IGRl cGVuZGluZyBvbiBwcmltYXJ5IGtleXMKICAgICAgICAqIGFuZCBzdGFnZWRfcm93cyBmbGFnCmRp ZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9jYWxjdWxhdGVf cXVlcnlfcnVuX3RpbWVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRp dG9yL2NhbGN1bGF0ZV9xdWVyeV9ydW5fdGltZV9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5jMWVkNWM1NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGN1bGF0ZV9xdWVyeV9ydW5fdGltZV9zcGVjLmpz CkBAIC0wLDAgKzEsODIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxv cG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwor aW1wb3J0IHtjYWxjdWxhdGVRdWVyeVJ1blRpbWV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9jYWxjdWxhdGVfcXVlcnlfcnVuX3RpbWUnOworCitkZXNjcmliZSgn I2NhbGN1bGF0ZVF1ZXJ5UnVuVGltZScsICgpID0+IHsKKyAgZGVzY3JpYmUoJ3RpbWUgZGlmZmVy ZW5jZSBpcyBzbWFsbGVyIHRoZW4gMSBzZWNvbmQnLCAoKSA9PiB7CisgICAgaXQoJ2Rpc3BsYXlz IG1pbGxpc2Vjb25kcycsICgpID0+IHsKKyAgICAgIGxldCBzdGFydERhdGUgPSBtb21lbnQoewor ICAgICAgICB5ZWFyczoyMDE4LAorICAgICAgICBtb250aHM6NCwKKyAgICAgICAgZGF0ZToyLAor ICAgICAgICBob3VyczoxMCwKKyAgICAgICAgbWludXRlczozMCwKKyAgICAgICAgc2Vjb25kczoy MCwKKyAgICAgICAgbWlsbGlzZWNvbmRzOjEyM30pLnRvRGF0ZSgpOworICAgICAgbGV0IGVuZERh dGUgPSBtb21lbnQoeworICAgICAgICB5ZWFyczoyMDE4LAorICAgICAgICBtb250aHM6NCwKKyAg ICAgICAgZGF0ZToyLAorICAgICAgICBob3VyczoxMCwKKyAgICAgICAgbWludXRlczozMCwKKyAg ICAgICAgc2Vjb25kczoyMSwKKyAgICAgICAgbWlsbGlzZWNvbmRzOjcwfSkudG9EYXRlKCk7Cisg ICAgICAgIGV4cGVjdChjYWxjdWxhdGVRdWVyeVJ1blRpbWUoc3RhcnREYXRlLCBlbmREYXRlKSkK KyAgICAgICAgICAudG9FcXVhbCgnOTQ3IG1zZWMnKTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVz Y3JpYmUoJ3RpbWUgZGlmZmVyZW5jZSBpcyBzbWFsbGVyIHRoZW4gMSBtaW51dGUnLCAoKSA9PiB7 CisgICAgaXQoJ2Rpc3BsYXlzIG1pbGxpc2Vjb25kcycsICgpID0+IHsKKyAgICAgIGxldCBzdGFy dERhdGUgPSBtb21lbnQoeworICAgICAgICB5ZWFyczoyMDE4LAorICAgICAgICBtb250aHM6NCwK KyAgICAgICAgZGF0ZToyLAorICAgICAgICBob3VyczoxMCwKKyAgICAgICAgbWludXRlczozMCwK KyAgICAgICAgc2Vjb25kczoyMCwKKyAgICAgICAgbWlsbGlzZWNvbmRzOjEyM30pLnRvRGF0ZSgp OworICAgICAgbGV0IGVuZERhdGUgPSBtb21lbnQoeworICAgICAgICB5ZWFyczoyMDE4LAorICAg ICAgICBtb250aHM6NCwKKyAgICAgICAgZGF0ZToyLAorICAgICAgICBob3VyczoxMCwKKyAgICAg ICAgbWludXRlczozMSwKKyAgICAgICAgc2Vjb25kczoxNSwKKyAgICAgICAgbWlsbGlzZWNvbmRz OjcwfSkudG9EYXRlKCk7CisgICAgICAgIGV4cGVjdChjYWxjdWxhdGVRdWVyeVJ1blRpbWUoc3Rh cnREYXRlLCBlbmREYXRlKSkKKyAgICAgICAgICAudG9FcXVhbCgnNTQgc2VjcyA5NDcgbXNlYycp OworICAgIH0pOworICB9KTsKKworICBkZXNjcmliZSgndGltZSBkaWZmZXJlbmNlIGlzIGJpZ2dl ciB0aGVuIDEgbWludXRlJywgKCkgPT4geworICAgIGl0KCdkaXNwbGF5cyBtaWxsaXNlY29uZHMn LCAoKSA9PiB7CisgICAgICBsZXQgc3RhcnREYXRlID0gbW9tZW50KHsKKyAgICAgICAgeWVhcnM6 MjAxOCwKKyAgICAgICAgbW9udGhzOjQsCisgICAgICAgIGRhdGU6MiwKKyAgICAgICAgaG91cnM6 MTAsCisgICAgICAgIG1pbnV0ZXM6MzAsCisgICAgICAgIHNlY29uZHM6MjAsCisgICAgICAgIG1p bGxpc2Vjb25kczoxMjN9KS50b0RhdGUoKTsKKyAgICAgIGxldCBlbmREYXRlID0gbW9tZW50KHsK KyAgICAgICAgeWVhcnM6MjAxOCwKKyAgICAgICAgbW9udGhzOjQsCisgICAgICAgIGRhdGU6MiwK KyAgICAgICAgaG91cnM6MTAsCisgICAgICAgIG1pbnV0ZXM6NDAsCisgICAgICAgIHNlY29uZHM6 MTUsCisgICAgICAgIG1pbGxpc2Vjb25kczo3MH0pLnRvRGF0ZSgpOworICAgICAgICBleHBlY3Qo Y2FsY3VsYXRlUXVlcnlSdW5UaW1lKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpCisgICAgICAgICAgLnRv RXF1YWwoJzkgbWluIDU0IHNlY3MnKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2FmdGVyX3Bv bGxfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxfcmVu ZGVyX2FmdGVyX3BvbGxfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MC4uOWIyNTA5NTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NxbGVkaXRvci9jYWxsX3JlbmRlcl9hZnRlcl9wb2xsX3NwZWMuanMKQEAgLTAsMCArMSwyMDMg QEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8g VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisv LworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKworaW1wb3J0IHtjYWxsUmVuZGVyQWZ0ZXJQb2xsfSBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbCc7CitpbXBv cnQgbW9tZW50IGZyb20gJ21vbWVudCc7CisKK2Rlc2NyaWJlKCcjY2FsbFJlbmRlckFmdGVyUG9s bCcsICgpID0+IHsKKyAgbGV0IHNxbEVkaXRvclNweSwgcXVlcnlSZXN1bHQsIGFsZXJ0aWZ5Owor ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBsZXQgdG9kYXkgPSBtb21lbnQoJzIwMTgtMDEtMDEg MTA6MTI6MzEnKS50b0RhdGUoKTsKKyAgICBqYXNtaW5lLmNsb2NrKCkuaW5zdGFsbCgpOworICAg IGphc21pbmUuY2xvY2soKS5tb2NrRGF0ZSh0b2RheSk7CisgICAgc3FsRWRpdG9yU3B5ID0gewor ICAgICAgX3JlbmRlcjogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5fcmVuZGVyJyksCisg ICAgICBzZXRJc1F1ZXJ5UnVubmluZzogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5zZXRJ c1F1ZXJ5UnVubmluZycpLAorICAgICAgdHJpZ2dlcjogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVk aXRvci50cmlnZ2VyJyksCisgICAgICB1cGRhdGVfbXNnX2hpc3Rvcnk6IGphc21pbmUuY3JlYXRl U3B5KCdTUUxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5JyksCisgICAgICBkaXNhYmxlX3Rvb2xf YnV0dG9uczogamFzbWluZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5kaXNhYmxlX3Rvb2xfYnV0dG9u cycpLAorICAgICAgcXVlcnlfc3RhcnRfdGltZTogbmV3IERhdGUoKSwKKyAgICB9OworICAgIGFs ZXJ0aWZ5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydzdWNjZXNzJ10pOwor ICB9KTsKKworICBhZnRlckVhY2goZnVuY3Rpb24gKCkgeworICAgIGphc21pbmUuY2xvY2soKS51 bmluc3RhbGwoKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2l0IGlzIG5vdCBhIHF1ZXJ5IHRvb2wn LCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBzcWxFZGl0b3JTcHkuaXNf cXVlcnlfdG9vbCA9IGZhbHNlOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBz dWNjZXNzZnVsIGJ1dCBoYWQgbm8gcmVzdWx0IHRvIGRpc3BsYXknLCAoKSA9PiB7CisgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgcXVlcnlSZXN1bHQgPSB7CisgICAgICAgICAgcm93 c19hZmZlY3RlZDogMTAsCisgICAgICAgICAgaGFzX21vcmVfcm93czogZmFsc2UsCisgICAgICAg ICAgY29saW5mbzoge30sCisgICAgICAgIH07CisgICAgICB9KTsKKworICAgICAgaXQoJ3JlbmRl cnMgdGhlIHRoZSBlZGl0b3InLCAoKSA9PiB7CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwo c3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChz cWxFZGl0b3JTcHkuX3JlbmRlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgocXVlcnlSZXN1bHQpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdpbmZvcm0gc3FsZWRpdG9yIHRoYXQgdGhlIHF1ZXJ5IHN0 b3BwZWQgcnVubmluZycsICgpID0+IHsKKyAgICAgICAgY2FsbFJlbmRlckFmdGVyUG9sbChzcWxF ZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJlc3VsdCk7CisKKyAgICAgICAgZXhwZWN0KHNxbEVk aXRvclNweS5zZXRJc1F1ZXJ5UnVubmluZykudG9IYXZlQmVlbkNhbGxlZFdpdGgoZmFsc2UpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdoaWRlcyB0aGUgbG9hZGluZyBpY29uJywgKCkgPT4gewor ICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgYWxlcnRpZnksIHF1ZXJ5 UmVzdWx0KTsKKworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnRyaWdnZXIpLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOworICAg ICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYW5k IGhhdmUgcmVzdWx0cycsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAg ICBxdWVyeVJlc3VsdCA9IHsKKyAgICAgICAgICByb3dzX2FmZmVjdGVkOiAxMCwKKyAgICAgICAg ICBoYXNfbW9yZV9yb3dzOiBmYWxzZSwKKyAgICAgICAgICBjb2xpbmZvOiB1bmRlZmluZWQsCisg ICAgICAgICAgcmVzdWx0OiAnU29tZSByZXN1bHQnLAorICAgICAgICB9OworICAgICAgfSk7CisK KyAgICAgIGl0KCdzYXZlcyBleGVjdXRpb24gaW5mb3JtYXRpb24gaW4gdGhlIGhpc3RvcnknLCAo KSA9PiB7CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlm eSwgcXVlcnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkudXBkYXRlX21z Z19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICB0cnVlLAorICAgICAg ICAgICdTb21lIHJlc3VsdFxuXG5RdWVyeSByZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4gMCBtc2Vj LicsCisgICAgICAgICAgZmFsc2UKKyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAgICBpdCgn aW5mb3JtIHNxbGVkaXRvciB0aGF0IHRoZSBxdWVyeSBzdG9wcGVkIHJ1bm5pbmcnLCAoKSA9PiB7 CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVl cnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkuc2V0SXNRdWVyeVJ1bm5p bmcpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgn aGlkZXMgdGhlIGxvYWRpbmcgaWNvbicsICgpID0+IHsKKyAgICAgICAgY2FsbFJlbmRlckFmdGVy UG9sbChzcWxFZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJlc3VsdCk7CisKKyAgICAgICAgZXhw ZWN0KHNxbEVkaXRvclNweS50cmlnZ2VyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1z cWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmli ZSgnbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCcsICgpID0+IHsKKyAgICAgICAgaXQoJ2Rpc3Bs YXkgbm90aWZpY2F0aW9uJywgKCkgPT4geworICAgICAgICAgIHNxbEVkaXRvclNweS5pbmZvX25v dGlmaWVyX3RpbWVvdXQgPSAxMDsKKyAgICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVk aXRvclNweSwgYWxlcnRpZnksIHF1ZXJ5UmVzdWx0KTsKKworICAgICAgICAgIGV4cGVjdChhbGVy dGlmeS5zdWNjZXNzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICdRdWVyeSBy ZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4gMCBtc2VjLicsCisgICAgICAgICAgICAxMAorICAgICAg ICAgICk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2Ny aWJlKCdpdCBpcyBhIHF1ZXJ5IHRvb2wnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7 CisgICAgICBzcWxFZGl0b3JTcHkuaXNfcXVlcnlfdG9vbCA9IHRydWU7CisgICAgfSk7CisKKyAg ICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYnV0IGhhZCBubyByZXN1bHQgdG8gZGlz cGxheScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBxdWVyeVJl c3VsdCA9IHsKKyAgICAgICAgICByb3dzX2FmZmVjdGVkOiAxMCwKKyAgICAgICAgICBoYXNfbW9y ZV9yb3dzOiBmYWxzZSwKKyAgICAgICAgICBjb2xpbmZvOiB7fSwKKyAgICAgICAgfTsKKyAgICAg IH0pOworCisgICAgICBpdCgncmVuZGVycyB0aGUgdGhlIGVkaXRvcicsICgpID0+IHsKKyAgICAg ICAgY2FsbFJlbmRlckFmdGVyUG9sbChzcWxFZGl0b3JTcHksIGFsZXJ0aWZ5LCBxdWVyeVJlc3Vs dCk7CisKKyAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS5fcmVuZGVyKS50b0hhdmVCZWVuQ2Fs bGVkV2l0aChxdWVyeVJlc3VsdCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2luZm9ybSBzcWxl ZGl0b3IgdGhhdCB0aGUgcXVlcnkgc3RvcHBlZCBydW5uaW5nJywgKCkgPT4geworICAgICAgICBj YWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgYWxlcnRpZnksIHF1ZXJ5UmVzdWx0KTsK KworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnNldElzUXVlcnlSdW5uaW5nKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aChmYWxzZSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2hpZGVzIHRoZSBs b2FkaW5nIGljb24nLCAoKSA9PiB7CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRp dG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChzcWxFZGl0 b3JTcHkudHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ3BnYWRtaW4tc3FsZWRpdG9yOmxv YWRpbmctaWNvbjpoaWRlJyk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2VuYWJsZXMgc3FsZWRp dG9yIHRvb2xzIGJ1dHRvbnMnLCAoKSA9PiB7CisgICAgICAgIGNhbGxSZW5kZXJBZnRlclBvbGwo c3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQpOworCisgICAgICAgIGV4cGVjdChz cWxFZGl0b3JTcHkuZGlzYWJsZV90b29sX2J1dHRvbnMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZh bHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNj ZXNzZnVsIGFuZCBoYXZlIHJlc3VsdHMnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICAgICAgcXVlcnlSZXN1bHQgPSB7CisgICAgICAgICAgcm93c19hZmZlY3RlZDogMTAs CisgICAgICAgICAgaGFzX21vcmVfcm93czogZmFsc2UsCisgICAgICAgICAgY29saW5mbzogdW5k ZWZpbmVkLAorICAgICAgICAgIHJlc3VsdDogJ1NvbWUgcmVzdWx0JywKKyAgICAgICAgfTsKKyAg ICAgIH0pOworCisgICAgICBpdCgnc2F2ZXMgZXhlY3V0aW9uIGluZm9ybWF0aW9uIGluIHRoZSBo aXN0b3J5JywgKCkgPT4geworICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNw eSwgYWxlcnRpZnksIHF1ZXJ5UmVzdWx0KTsKKworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5 LnVwZGF0ZV9tc2dfaGlzdG9yeSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgdHJ1 ZSwKKyAgICAgICAgICAnU29tZSByZXN1bHRcblxuUXVlcnkgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5 IGluIDAgbXNlYy4nLAorICAgICAgICAgIGZhbHNlCisgICAgICAgICk7CisgICAgICB9KTsKKwor ICAgICAgaXQoJ2luZm9ybSBzcWxlZGl0b3IgdGhhdCB0aGUgcXVlcnkgc3RvcHBlZCBydW5uaW5n JywgKCkgPT4geworICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgYWxl cnRpZnksIHF1ZXJ5UmVzdWx0KTsKKworICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnNldElz UXVlcnlSdW5uaW5nKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7CisgICAgICB9KTsKKwor ICAgICAgaXQoJ2hpZGVzIHRoZSBsb2FkaW5nIGljb24nLCAoKSA9PiB7CisgICAgICAgIGNhbGxS ZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQpOworCisg ICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkudHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgo J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ2VuYWJsZXMgc3FsZWRpdG9yIHRvb2xzIGJ1dHRvbnMnLCAoKSA9PiB7CisgICAgICAg IGNhbGxSZW5kZXJBZnRlclBvbGwoc3FsRWRpdG9yU3B5LCBhbGVydGlmeSwgcXVlcnlSZXN1bHQp OworCisgICAgICAgIGV4cGVjdChzcWxFZGl0b3JTcHkuZGlzYWJsZV90b29sX2J1dHRvbnMpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlKTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgn bm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCcsICgpID0+IHsKKyAgICAgICAgaXQoJ2Rpc3BsYXkg bm90aWZpY2F0aW9uJywgKCkgPT4geworICAgICAgICAgIHNxbEVkaXRvclNweS5pbmZvX25vdGlm aWVyX3RpbWVvdXQgPSAxMDsKKyAgICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRv clNweSwgYWxlcnRpZnksIHF1ZXJ5UmVzdWx0KTsKKworICAgICAgICAgIGV4cGVjdChhbGVydGlm eS5zdWNjZXNzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICdRdWVyeSByZXR1 cm5lZCBzdWNjZXNzZnVsbHkgaW4gMCBtc2VjLicsCisgICAgICAgICAgICAxMAorICAgICAgICAg ICk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1n aXQgYS93ZWIveWFybi5sb2NrIGIvd2ViL3lhcm4ubG9jawppbmRleCA4OGVkZWIxZi4uZGE1ZTVm NjQgMTAwNjQ0Ci0tLSBhL3dlYi95YXJuLmxvY2sKKysrIGIvd2ViL3lhcm4ubG9jawpAQCAtNzQy Miw3ICs3NDIyLDcgQEAgc3ByaW50Zi1qc0AxLjEuMDoKICAgdmVyc2lvbiAiMS4xLjAiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NwcmludGYtanMvLS9zcHJpbnRm LWpzLTEuMS4wLnRneiNjZmZjYWY3MDJkYWY2NWVhMzliYjRlMGZhMmIyOTljZWMxYTFiZTQ2Igog Ci1zcHJpbnRmLWpzQF4xLjAuMzoKK3NwcmludGYtanNAXjEuMC4zLCBzcHJpbnRmLWpzQF4xLjEu MToKICAgdmVyc2lvbiAiMS4xLjEiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL3NwcmludGYtanMvLS9zcHJpbnRmLWpzLTEuMS4xLnRneiMzNmJlNzgzMjBhZmU1ODAx ZjZjZWEzZWU3OGI2ZTVhYWI5NDBlYTBjIgogCg== --000000000000481da90568e50d85--