From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Liu Hui Newsgroups: gmane.emacs.bugs Subject: bug#68559: [PATCH] Improve Python shell completion Date: Thu, 18 Jan 2024 12:48:37 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000501cf7060f3114e5" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11657"; mail-complaints-to="usenet@ciao.gmane.io" To: 68559@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Jan 18 05:50:29 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rQKMG-0002pJ-Vf for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 18 Jan 2024 05:50:29 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQKLr-0005TN-3f; Wed, 17 Jan 2024 23:50:03 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQKLp-0005So-9T for bug-gnu-emacs@gnu.org; Wed, 17 Jan 2024 23:50:01 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQKLo-0001Om-VP for bug-gnu-emacs@gnu.org; Wed, 17 Jan 2024 23:50:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rQKLp-0004KV-Lx for bug-gnu-emacs@gnu.org; Wed, 17 Jan 2024 23:50:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Liu Hui Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 18 Jan 2024 04:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 68559 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.170555334316560 (code B ref -1); Thu, 18 Jan 2024 04:50:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 18 Jan 2024 04:49:03 +0000 Original-Received: from localhost ([127.0.0.1]:54120 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rQKKs-0004J1-Gd for submit@debbugs.gnu.org; Wed, 17 Jan 2024 23:49:03 -0500 Original-Received: from lists.gnu.org ([2001:470:142::17]:57950) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rQKKq-0004IT-98 for submit@debbugs.gnu.org; Wed, 17 Jan 2024 23:49:01 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQKKj-0005Nw-2v for bug-gnu-emacs@gnu.org; Wed, 17 Jan 2024 23:48:53 -0500 Original-Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQKKg-0001JA-9v for bug-gnu-emacs@gnu.org; Wed, 17 Jan 2024 23:48:52 -0500 Original-Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-7cdef012c0eso3430864241.2 for ; Wed, 17 Jan 2024 20:48:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705553329; x=1706158129; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=QO8EN6fRjGPmULn/7v8UyP2tmZpJNip5SwUgcZOqkMU=; b=HDoNoyoYW4XPMi0NTmGKMed4aOqNVdJIAk6IG+p3Ju/UVeYwP2IDElnIOvjPVy68ad VgbFYkYCsLt4fizvkShSTrlAwE6ERQ6yKAesZJmnaP53fA68oddF7RfmpKWoFCfgOZEQ LDiX6+0RlSWDbQLyVnQZaEFwZLQ/EKPMQ1A23/sHgDdA4hvhKr/AK2Kg0jNTjJtdmr/n tJiI+mLH4eqBIrE/ygg50WS6rX5OEqyolw3cqegu7wji8MeUTg9L7NYZ/9Kvt54lQE9B vg/iy6pbI8rF+tkhrajYnSZ/nXDTGtr7un+LAXzrnhwXxouyM8kYODbuP/AHi2UxEXny 6aZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705553329; x=1706158129; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=QO8EN6fRjGPmULn/7v8UyP2tmZpJNip5SwUgcZOqkMU=; b=kCZkFxRvNkqmAYa88Q2HnwUoDBTknTzC/RclvikIn59fPD/jTaSHGpnfZDticmGKaa ktVIJ1vrocDWNnE1xnaUFtWj4eCnWPfBDMzBwXTmslDkA/IgMYXdIniaFhZJyEXtgKqX vEXsq4xbT4f1XuC1gPjx+tt13khylMcbhx6TDQGsEriYlU18JLWiW/JSiEvSBM76cQtO r7/nXhIdjI4cj/CkuAlVg6LRqGi8HLg85agh2W6p4g30Y2r38UVk2dCP4gjDJDgJSzMd ULTr599TleOeF+4FDwxMzJ3v+oIRz2khkeb0YnIubAiof7uOYjau6XjycP1iNatMw0KV nKhQ== X-Gm-Message-State: AOJu0YyDKkA8Qw+nGT4tqtdC4GKAaCe+GjsiA81+bx4/yzuxP72UH0wC JllBPM1JCfN6cdIeJHAWsMuocu00gswl6jTMybaXPP0Dyt0Cohjh/x2g4qWCgy2OahXWO7N6CNC E6vrTsuAS7IHjb4S77WSjDbSeMrT30YPbAzY= X-Google-Smtp-Source: AGHT+IH/M1rD34wKzxSQTfJAE24AnGfkmqHKgoKn5Y63FfhKIxcNWa26O2qUNHA3/zrAvn1ahBuyiPy7pLmTpZYIaM0= X-Received: by 2002:a05:6122:a1b:b0:4b6:bc78:d6db with SMTP id 27-20020a0561220a1b00b004b6bc78d6dbmr177060vkn.31.1705553328865; Wed, 17 Jan 2024 20:48:48 -0800 (PST) Received-SPF: pass client-ip=2607:f8b0:4864:20::931; envelope-from=liuhui1610@gmail.com; helo=mail-ua1-x931.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_SBL_A=0.1 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:278418 Archived-At: --000000000000501cf7060f3114e5 Content-Type: text/plain; charset="UTF-8" Hi, Currently python-shell-completion-at-point doesn't respect the delimiter setting of readline completer and always split the text, resulting in poor completions when completers that don't need word splitting, e.g. jedi[1], is used. This patch fixes the problem. Meanwhile, this patch adds an option 'python-shell-readline-completer' to make Python shell provide better completion experience (e.g. completing function parameters, dictionary keys) by default if users are using vanilla Python interpreter with jedi or using IPython, where the completion support for IPython has been enhanced (e.g. showing type annotations and function signatures). BTW, I think it may make sense to move Python snippets to a separate file to make them easier to be maintained. Thanks. Best, [1] https://jedi.readthedocs.io/en/latest/docs/usage.html#repl-completion --000000000000501cf7060f3114e5 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Improve-Python-shell-completion.patch" Content-Disposition: attachment; filename="0001-Improve-Python-shell-completion.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lriqdb5y0 RnJvbSA2M2EwZjE3MmJjZDNhM2FjODgyZDc2Yzc3ODhjMzYzN2FjYzZhZTM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSHVpIDxsaXVodWkxNjEwQGdtYWlsLmNvbT4KRGF0ZTog VGh1LCAxOCBKYW4gMjAyNCAxMjowMDowMCArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUg UHl0aG9uIHNoZWxsIGNvbXBsZXRpb24KCiogbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsIChweXRo b24tc2hlbGwtY29tcGxldGlvbi1zZXR1cC1jb2RlKTogRml4CnRoZSBjb21wbGV0aW9uIGNvZGUg b2YgSVB5dGhvbi4gIENoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIHRvIEpTT04Kc3RyaW5nIGFuZCAu Li4KKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0aW9ucyk6IC4uLiBzaW1wbGlm eSBwYXJzaW5nLgooaW5mZXJpb3ItcHl0aG9uLW1vZGUpOiBVcGRhdGUgZG9jc3RyaW5nLgoocHl0 aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBsZXRlcik6IE5ldyBvcHRpb24uCihweXRob24tc2hlbGwt cmVhZGxpbmUtY29tcGxldGVyLWRlbGltcykKKHB5dGhvbi1zaGVsbC1yZWFkbGluZS1qZWRpLXNl dHVwLWNvZGUpCihweXRob24tc2hlbGwtcmVhZGxpbmUtaXB5dGhvbi1zZXR1cC1jb2RlKTogTmV3 IHZhcmlhYmxlcy4KKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1zZXR1cCk6IFNldHVw IGEgc3VpdGFibGUgcmVhZGxpbmUKY29tcGxldGVyIGFuZCBzZXQgdGhlIGNvbXBsZXRlciBkZWxp bWl0ZXIuCihweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZ2V0LWNvbXBsZXRpb25zKTog Q29udmVydCBvdXRwdXQKc3RyaW5nIHRvIGNvbXBsZXRpb25zIHByb3Blcmx5LgoocHl0aG9uLXNo ZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQpOiBTZW5kIHRleHQgYmVnaW5uaW5nIGZyb20gdGhlIGxp bmUKc3RhcnQgaWYgdGhlIGNvbXBsZXRpb24gYmFja2VuZCBkb2VzIG5vdCBuZWVkIHdvcmQgc3Bs aXR0aW5nLiAgUmVtb3ZlCnRoZSBkZXRlY3Rpb24gb2YgaW1wb3J0IHN0YXRlbWVudCBiZWNhdXNl IGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KQ3JlYXRlIHByb3BlciBjb21wbGV0aW9uIHRhYmxl IGJhc2VkIG9uIGNvbXBsZXRpb25zIHJldHVybmVkIGZyb20KZGlmZmVyZW50IGJhY2tlbmRzLgoK KiB0ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10ZXN0cy5lbCAocHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tbW9kdWxlKToKKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXBhcmFtZXRlcnMpOgoocHl0 aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQtamVkaS1jb21wbGV0ZXIpOgoocHl0aG9uLXNo ZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQtaXB5dGhvbik6IE5ldyB0ZXN0cy4KCiogZXRjL05FV1M6 IEFubm91bmNlIHRoZSBjaGFuZ2UuCi0tLQogZXRjL05FV1MgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDYgKwogbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsICAgICAgICAgICAgfCAyMzQg KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24t dGVzdHMuZWwgfCAgNjYgKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjU1IGluc2VydGlvbnMo KyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5k ZXggMDNiOGMzYjUxN2EuLjZmZDMzNzcyN2M1IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9l dGMvTkVXUwpAQCAtMTAyOSw2ICsxMDI5LDEyIEBAIGluc3RlYWQgb2Y6CiBUaGlzIGFsbG93cyB0 aGUgdXNlciB0byBzcGVjaWZ5IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gdGhlIG5vbgogaW50 ZXJhY3RpdmUgUHl0aG9uIGludGVycHJldGVyIHNwZWNpZmllZCBieSAncHl0aG9uLWludGVycHJl dGVyJy4KIAorKioqIE5ldyB1c2VyIG9wdGlvbiAncHl0aG9uLXNoZWxsLXJlYWRsaW5lLWNvbXBs ZXRlcicuCitUaGlzIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSByZWFkbGluZSBjb21w bGV0ZXIgdXNlZCBmb3IgUHl0aG9uCitzaGVsbCBjb21wbGV0aW9uLiAgVGhlIGRlZmF1bHQgaXMg J2F1dG8nLCB3aGljaCBtZWFucyBhIHN1aXRhYmxlCitjb21wbGV0ZXIgd2lsbCBiZSBjb25maWd1 cmVkIGF1dG9tYXRpY2FsbHkgYWNjb3JkaW5nIHRvIHRoZSBQeXRob24KK2ludGVycHJldGVyLgor CiAqKiB1c2UtcGFja2FnZQogCiArKysKZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL3B5dGhv bi5lbCBiL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5lbAppbmRleCBmZjc5OWUxZTY2Mi4uMmQ4N2Vi NTllZGUgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5lbAorKysgYi9saXNwL3By b2dtb2Rlcy9weXRob24uZWwKQEAgLTEyOCw5ICsxMjgsOSBAQAogOzsgcmVjZWl2aW5nIGVzY2Fw ZSBzZXF1ZW5jZXMgKHdpdGggc29tZSBsaW1pdGF0aW9ucywgaS5lLiBjb21wbGV0aW9uCiA7OyBp biBibG9ja3MgZG9lcyBub3Qgd29yaykuICBUaGUgY29kZSBleGVjdXRlZCBmb3IgdGhlICJmYWxs YmFjayIKIDs7IGNvbXBsZXRpb24gY2FuIGJlIGZvdW5kIGluIGBweXRob24tc2hlbGwtY29tcGxl dGlvbi1zZXR1cC1jb2RlJyBhbmQKLTs7IGBweXRob24tc2hlbGwtY29tcGxldGlvbi1zdHJpbmct Y29kZScgdmFyaWFibGVzLiAgVGhlaXIgZGVmYXVsdAotOzsgdmFsdWVzIGVuYWJsZSBjb21wbGV0 aW9uIGZvciBib3RoIENQeXRob24gYW5kIElQeXRob24sIGFuZCBwcm9iYWJseQotOzsgYW55IHJl YWRsaW5lIGJhc2VkIHNoZWxsIChpdCdzIGtub3duIHRvIHdvcmsgd2l0aCBQeVB5KS4gIElmIHlv dXIKKzs7IGBweXRob24tc2hlbGwtY29tcGxldGlvbi1nZXQtY29tcGxldGlvbnMnLiAgVGhlaXIg ZGVmYXVsdCB2YWx1ZXMKKzs7IGVuYWJsZSBjb21wbGV0aW9uIGZvciBib3RoIENQeXRob24gYW5k IElQeXRob24sIGFuZCBwcm9iYWJseSBhbnkKKzs7IHJlYWRsaW5lIGJhc2VkIHNoZWxsIChpdCdz IGtub3duIHRvIHdvcmsgd2l0aCBQeVB5KS4gIElmIHlvdXIKIDs7IFB5dGhvbiBpbnN0YWxsYXRp b24gbGFja3MgcmVhZGxpbmUgKGxpa2UgQ1B5dGhvbiBmb3IgV2luZG93cyksCiA7OyBpbnN0YWxs aW5nIHB5cmVhZGxpbmUgKFVSTCBgaHR0cHM6Ly9pcHl0aG9uLm9yZy9weXJlYWRsaW5lLmh0bWwn KQogOzsgc2hvdWxkIHN1ZmZpY2UuICBUbyB0cm91Ymxlc2hvb3Qgd2h5IHlvdSBhcmUgbm90IGdl dHRpbmcgYW55CkBAIC0zNjAxLDcgKzM2MDEsNiBAQCBpbmZlcmlvci1weXRob24tbW9kZQogYHB5 dGhvbi1zaGVsbC1wcm9tcHQtYmxvY2stcmVnZXhwJywKIGBweXRob24tc2hlbGwtZm9udC1sb2Nr LWVuYWJsZScsCiBgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAtY29kZScsCi1gcHl0aG9u LXNoZWxsLWNvbXBsZXRpb24tc3RyaW5nLWNvZGUnLAogYHB5dGhvbi1lbGRvYy1zZXR1cC1jb2Rl JywKIGBweXRob24tZmZhcC1zZXR1cC1jb2RlJyBjYW4KIGN1c3RvbWl6ZSB0aGlzIG1vZGUgZm9y IGRpZmZlcmVudCBQeXRob24gaW50ZXJwcmV0ZXJzLgpAQCAtNDMxOSw4ICs0MzE4LDkgQEAgcHl0 aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAtY29kZQogICAgIGNvbXBsZXRpb25zID0gW10KICAg ICBjb21wbGV0ZXIgPSBOb25lCiAKKyAgICBpbXBvcnQganNvbgogICAgIHRyeToKLSAgICAgICAg aW1wb3J0IHJlYWRsaW5lCisgICAgICAgIGltcG9ydCByZWFkbGluZSwgcmUKIAogICAgICAgICB0 cnk6CiAgICAgICAgICAgICBpbXBvcnQgX19idWlsdGluX18KQEAgLTQzMzEsMTYgKzQzMzEsMjkg QEAgcHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tc2V0dXAtY29kZQogCiAgICAgICAgIGlzX2lweXRo b24gPSAoJ19fSVBZVEhPTl9fJyBpbiBidWlsdGlucyBvcgogICAgICAgICAgICAgICAgICAgICAg ICdfX0lQWVRIT05fX2FjdGl2ZScgaW4gYnVpbHRpbnMpCi0gICAgICAgIHNwbGl0cyA9IHRleHQu c3BsaXQoKQotICAgICAgICBpc19tb2R1bGUgPSBzcGxpdHMgYW5kIHNwbGl0c1swXSBpbiAoJ2Zy b20nLCAnaW1wb3J0JykKLQotICAgICAgICBpZiBpc19pcHl0aG9uIGFuZCBpc19tb2R1bGU6Ci0g ICAgICAgICAgICBmcm9tIElQeXRob24uY29yZS5jb21wbGV0ZXJsaWIgaW1wb3J0IG1vZHVsZV9j b21wbGV0aW9uCi0gICAgICAgICAgICBjb21wbGV0aW9ucyA9IG1vZHVsZV9jb21wbGV0aW9uKHRl eHQuc3RyaXAoKSkKLSAgICAgICAgZWxpZiBpc19pcHl0aG9uIGFuZCAnX19JUCcgaW4gYnVpbHRp bnM6Ci0gICAgICAgICAgICBjb21wbGV0aW9ucyA9IF9fSVAuY29tcGxldGUodGV4dCkKLSAgICAg ICAgZWxpZiBpc19pcHl0aG9uIGFuZCAnZ2V0X2lweXRob24nIGluIGJ1aWx0aW5zOgotICAgICAg ICAgICAgY29tcGxldGlvbnMgPSBnZXRfaXB5dGhvbigpLkNvbXBsZXRlci5hbGxfY29tcGxldGlv bnModGV4dCkKKworICAgICAgICBpZiBpc19pcHl0aG9uIGFuZCAnZ2V0X2lweXRob24nIGluIGJ1 aWx0aW5zOgorICAgICAgICAgICAgZGVmIGZpbHRlcl9jKHByZWZpeCwgYyk6CisgICAgICAgICAg ICAgICAgaWYgcmUubWF0Y2goJ18rKGk/WzAtOV0rKT8kJywgYyk6CisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsaWYgY1swXSA9PSAnJScgYW5kIG5v dCByZS5tYXRjaCgnWyVhLXpBLVpdKyQnLCBwcmVmaXgpOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBp bXBvcnQgSVB5dGhvbgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIElQeXRo b24udmVyc2lvbl9pbmZvWzBdID49IDY6CisgICAgICAgICAgICAgICAgICAgIGZyb20gSVB5dGhv bi5jb3JlLmNvbXBsZXRlciBpbXBvcnQgcHJvdmlzaW9uYWxjb21wbGV0ZXIKKyAgICAgICAgICAg ICAgICAgICAgd2l0aCBwcm92aXNpb25hbGNvbXBsZXRlcigpOgorICAgICAgICAgICAgICAgICAg ICAgICAgY29tcGxldGlvbnMgPSBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2MudGV4 dCwgYy5zdGFydCwgYy5lbmQsIGMudHlwZSBvciAnPycsIGMuc2lnbmF0dXJlIG9yICcnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBnZXRfaXB5dGhvbigpLkNvbXBsZXRl ci5jb21wbGV0aW9ucyh0ZXh0LCBsZW4odGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIGZpbHRlcl9jKHRleHQsIGMudGV4dCldCisgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgcGFydCwgbWF0Y2hlcyA9IGdldF9pcHl0aG9uKCkuQ29tcGxldGVy LmNvbXBsZXRlKGxpbmVfYnVmZmVyPXRleHQpCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp b25zID0gW3RleHQgKyBtW2xlbihwYXJ0KTpdIGZvciBtIGluIG1hdGNoZXMgaWYgZmlsdGVyX2Mo dGV4dCwgbSldCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcwogICAg ICAgICBlbHNlOgogICAgICAgICAgICAgIyBUcnkgdG8gcmV1c2UgY3VycmVudCBjb21wbGV0ZXIu CiAgICAgICAgICAgICBjb21wbGV0ZXIgPSByZWFkbGluZS5nZXRfY29tcGxldGVyKCkKQEAgLTQz NjMsNyArNDM3Niw3IEBAIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKICAgICBm aW5hbGx5OgogICAgICAgICBpZiBnZXRhdHRyKGNvbXBsZXRlciwgJ1BZVEhPTl9FTF9XUkFQUEVE JywgRmFsc2UpOgogICAgICAgICAgICAgY29tcGxldGVyLnByaW50X21vZGUgPSBUcnVlCi0gICAg cmV0dXJuIGNvbXBsZXRpb25zIgorICAgIHJldHVybiBqc29uLmR1bXBzKGNvbXBsZXRpb25zKSIK ICAgIkNvZGUgdXNlZCB0byBzZXR1cCBjb21wbGV0aW9uIGluIGluZmVyaW9yIFB5dGhvbiBwcm9j ZXNzZXMuIgogICA6dHlwZSAnc3RyaW5nKQogCkBAIC00NDA0LDYgKzQ0MTcsNzkgQEAgcHl0aG9u LXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLXRyeS1vdXRwdXQtdGltZW91dAogICA6dmVyc2lvbiAi MjUuMSIKICAgOnR5cGUgJ2Zsb2F0KQogCisoZGVmY3VzdG9tIHB5dGhvbi1zaGVsbC1yZWFkbGlu ZS1jb21wbGV0ZXIgJ2F1dG8KKyAgIlRoZSByZWFkbGluZSBjb21wbGV0ZXIgdXNlZCBmb3IgUHl0 aG9uIHNoZWxsIGNvbXBsZXRpb24uCitJZiB0aGUgdmFsdWUgaXMgbm9uLW5pbCwgUHl0aG9uIHNo ZWxsIHdpbGwgc2V0dXAgdGhlIHJlYWRsaW5lCitjb21wbGV0ZXIgdW5sZXNzIGl0IGhhcyBiZWVu IHNldCBlbHNld2hlcmUgKGUuZy4gaW4gdGhlCitQWVRIT05TVEFSVFVQIGZpbGUpLiAgQmVsb3cg YXJlIHBvc3NpYmxlIHZhbHVlczoKKy0gYGF1dG8nOiB0aGUgY29tcGxldGVyIGlzIGRldGVybWlu ZWQgYWNjb3JkaW5nIHRvIHRoZQoraW50ZXJwcmV0ZXIuICBTcGVjaWZpY2FsbHksIHRoZSBJUHl0 aG9uIGNvbXBsZXRlciwgZGVmaW5lZCBpbgorYHB5dGhvbi1zaGVsbC1yZWFkbGluZS1pcHl0aG9u LXNldHVwLWNvZGUnLCBpcyB1c2VkIHdoZW4gdGhlCitpbnRlcnByZXRlciBpcyBpcHl0aG9uLCBv dGhlcndpc2UgdGhlIEplZGkgY29tcGxldGVyIGlzIHVzZWQuCistIGEgc3RyaW5nOiBQeXRob24g Y29kZSB0byBzZXR1cCB0aGUgcmVhZGxpbmUuIEl0IHNob3VsZCBkZWZpbmUKK3RoZSBmdW5jdGlv biBgX19QWVRIT05fRUxfc2V0dXBfcmVhZGxpbmVfY29tcGxldGVyJy4gIFNlZQorYHB5dGhvbi1z aGVsbC1yZWFkbGluZS1qZWRpLXNldHVwLWNvZGUnIGZvciByZWZlcmVuY2UuCistIGBuaWwnOiBQ eXRob24gc2hlbGwgd2lsbCBkbyBub3RoaW5nLgorCitJbiBhbnkgY2FzZSwgaWYgdGhlIGNvbXBs ZXRlciBpcyBub3Qgc2V0IHN1Y2Nlc3NmdWxseSBpbiB0aGUgZW5kLAorZmFsbGJhY2sgdG8gdGhl IGJ1aWx0LWluIHJsY29tcGxldGVyLiIKKyAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0ICA6dGFnICJB dXRvbWF0aWMiIGF1dG8pCisgICAgICAgICAgICAgICAgIChjb25zdCAgOnRhZyAiTm8gY29uZmln dXJhdGlvbiIgbmlsKQorICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcgIlB5dGhvbiBzZXR1 cCBjb2RlIikpCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZnZhciBweXRob24tc2hlbGwtcmVh ZGxpbmUtY29tcGxldGVyLWRlbGltcyBuaWwKKyAgIldvcmQgZGVsaW1pdGVycyB1c2VkIGJ5IHRo ZSByZWFkbGluZSBjb21wbGV0ZXIuCitJdCBpcyBhdXRvbWF0aWNhbGx5IHNldCBieSBQeXRob24g c2hlbGwuIikKKworKGRlZmNvbnN0IHB5dGhvbi1zaGVsbC1yZWFkbGluZS1qZWRpLXNldHVwLWNv ZGUKKyAgIgorZGVmIF9fUFlUSE9OX0VMX3NldHVwX3JlYWRsaW5lX2NvbXBsZXRlcigpOgorICAg IGZyb20gamVkaS51dGlscyBpbXBvcnQgc2V0dXBfcmVhZGxpbmUKKyAgICBzZXR1cF9yZWFkbGlu ZSgpIgorICAiQ29kZSB1c2VkIHRvIHNldHVwIHJlYWRsaW5lIGNvbXBsZXRlciB3aXRoIEplZGku IikKKworKGRlZmNvbnN0IHB5dGhvbi1zaGVsbC1yZWFkbGluZS1pcHl0aG9uLXNldHVwLWNvZGUK KyAgIgorZGVmIF9fUFlUSE9OX0VMX3NldHVwX3JlYWRsaW5lX2NvbXBsZXRlcigpOgorICAgIGlt cG9ydCByZWFkbGluZSwgcmUsIGpzb24sIElQeXRob24KKworICAgIGNsYXNzIF9faXB5dGhvbl9S TDoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHYpOgorICAgICAgICAgICAgc2VsZi52ZXJz aW9uID0gdgorCisgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgcHJlZml4LCBjKToKKyAgICAgICAg ICAgIGlmIHJlLm1hdGNoKCdfKyhpP1swLTldKyk/JCcsIGMpOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorICAgICAgICAgICAgZWxpZiBjWzBdID09ICclJyBhbmQgbm90IHJlLm1hdGNo KCdbJWEtekEtWl0rJCcsIHByZWZpeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg ICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGRlZiBjb21wbGV0ZShzZWxmLCB0ZXh0 LCBzdGF0ZSk6CisgICAgICAgICAgICBpZiBzdGF0ZSA9PSAwOgorICAgICAgICAgICAgICAgIHRy eToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJzaW9uID49IDY6CisgICAgICAgICAg ICAgICAgICAgICAgICBmcm9tIElQeXRob24uY29yZS5jb21wbGV0ZXIgaW1wb3J0IHByb3Zpc2lv bmFsY29tcGxldGVyCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHByb3Zpc2lvbmFsY29t cGxldGVyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaGVzID0gW2pz b24uZHVtcHMoWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYy50ZXh0LCBjLnN0 YXJ0LCBjLmVuZCwgYy50eXBlIG9yICc/JywgYy5zaWduYXR1cmUgb3IgJyddCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGdldF9pcHl0aG9uKCkuQ29tcGxldGVyLmNv bXBsZXRpb25zKHRleHQsIGxlbih0ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgc2VsZi5maWx0ZXIodGV4dCwgYy50ZXh0KV0pXQorICAgICAgICAgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFydCwgbWF0Y2hlcyA9IGdldF9pcHl0aG9u KCkuQ29tcGxldGVyLmNvbXBsZXRlKGxpbmVfYnVmZmVyPXRleHQpCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoZXMgPSBbdGV4dCArIG1bbGVuKHBhcnQpOl0gZm9yIG0gaW4gbWF0 Y2hlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZmls dGVyKHRleHQsIG0pXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAg ICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5tYXRjaGVzW3N0YXRlXQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXIo X19pcHl0aG9uX1JMKElQeXRob24udmVyc2lvbl9pbmZvWzBdKS5jb21wbGV0ZSkKKyAgICByZWFk bGluZS5zZXRfY29tcGxldGVyX2RlbGltcygnJykiCisgICJDb2RlIHVzZWQgdG8gc2V0dXAgcmVh ZGxpbmUgY29tcGxldGVyIGZvciBJUHl0aG9uLiIpCisKIChkZWZ2YXIgcHl0aG9uLXNoZWxsLWNv bXBsZXRpb24tbmF0aXZlLXJlZGlyZWN0LWJ1ZmZlcgogICAiICpQeXRob24gY29tcGxldGlvbnMg cmVkaXJlY3QqIgogICAiQnVmZmVyIHRvIGJlIHVzZWQgdG8gcmVkaXJlY3Qgb3V0cHV0IG9mIHJl YWRsaW5lIGNvbW1hbmRzLiIpCkBAIC00NDI3LDcgKzQ1MTMsMjAgQEAgcHl0aG9uLXNoZWxsLWNv bXBsZXRpb24tbmF0aXZlLXRyeQogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2 ZS1zZXR1cCAoKQogICAiVHJ5IHRvIHNldHVwIG5hdGl2ZSBjb21wbGV0aW9uLCByZXR1cm4gbm9u LW5pbCBvbiBzdWNjZXNzLiIKICAgKGxldCogKChwcm9jZXNzIChweXRob24tc2hlbGwtZ2V0LXBy b2Nlc3MpKQotICAgICAgICAgKG91dHB1dCAocHl0aG9uLXNoZWxsLXNlbmQtc3RyaW5nLW5vLW91 dHB1dCAiCisgICAgICAgICAoY29tcGxldGVyIChwY2FzZSBweXRob24tc2hlbGwtcmVhZGxpbmUt Y29tcGxldGVyCisgICAgICAgICAgICAgICAgICAgICAgKCdhdXRvCisgICAgICAgICAgICAgICAg ICAgICAgIChpZiAoc3RyaW5nLW1hdGNoLXAgImlweXRob25bMjNdP1xcJyIgcHl0aG9uLXNoZWxs LWludGVycHJldGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsLXJl YWRsaW5lLWlweXRob24tc2V0dXAtY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhv bi1zaGVsbC1yZWFkbGluZS1qZWRpLXNldHVwLWNvZGUpKQorICAgICAgICAgICAgICAgICAgICAg ICgocHJlZCBzdHJpbmdwKSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxldGVyKQorICAgICAg ICAgICAgICAgICAgICAgIChfICIiKSkpCisgICAgICAgICAob3V0cHV0IChweXRob24tc2hlbGwt c2VuZC1zdHJpbmctbm8tb3V0cHV0CisgICAgICAgICAgICAgICAgICAoY29uY2F0ICIKK3RyeToK KyAgICBkZWwgX19QWVRIT05fRUxfc2V0dXBfcmVhZGxpbmVfY29tcGxldGVyCitleGNlcHQ6Cisg ICAgcGFzcworIiBjb21wbGV0ZXIgIgogZGVmIF9fUFlUSE9OX0VMX25hdGl2ZV9jb21wbGV0aW9u X3NldHVwKCk6CiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgcmVhZGxpbmUKQEAgLTQ1MDMsOCAr NDYwMiwxMSBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXAKICAgICAgICAg Y29tcGxldGVyID0gcmVhZGxpbmUuZ2V0X2NvbXBsZXRlcigpCiAKICAgICAgICAgaWYgbm90IGNv bXBsZXRlcjoKLSAgICAgICAgICAgICMgVXNlZCBhcyBsYXN0IHJlc29ydCB0byBhdm9pZCBicmVh a2luZyBjdXN0b21pemF0aW9ucy4KLSAgICAgICAgICAgIGltcG9ydCBybGNvbXBsZXRlcgorICAg ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF9fUFlUSE9OX0VMX3NldHVwX3JlYWRsaW5l X2NvbXBsZXRlcigpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgIyBVc2Vk IGFzIGxhc3QgcmVzb3J0IHRvIGF2b2lkIGJyZWFraW5nIGN1c3RvbWl6YXRpb25zLgorICAgICAg ICAgICAgICAgIGltcG9ydCBybGNvbXBsZXRlcgogICAgICAgICAgICAgY29tcGxldGVyID0gcmVh ZGxpbmUuZ2V0X2NvbXBsZXRlcigpCiAKICAgICAgICAgaWYgY29tcGxldGVyIGFuZCBub3QgZ2V0 YXR0cihjb21wbGV0ZXIsICdQWVRIT05fRUxfV1JBUFBFRCcsIEZhbHNlKToKQEAgLTQ1MzksOSAr NDY0MSwxMyBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtc2V0dXAKICAgICAgICAg cHJpbnQgKCdweXRob24uZWw6IG5hdGl2ZSBjb21wbGV0aW9uIHNldHVwIGZhaWxlZCwgJXM6ICVz JwogICAgICAgICAgICAgICAgJSBzeXMuZXhjX2luZm8oKVs6Ml0pCiAKLV9fUFlUSE9OX0VMX25h dGl2ZV9jb21wbGV0aW9uX3NldHVwKCkiIHByb2Nlc3MpKSkKK19fUFlUSE9OX0VMX25hdGl2ZV9j b21wbGV0aW9uX3NldHVwKCkiKSBwcm9jZXNzKSkpCiAgICAgKHdoZW4gKHN0cmluZy1tYXRjaC1w ICJweXRob25cXC5lbDogbmF0aXZlIGNvbXBsZXRpb24gc2V0dXAgbG9hZGVkIgogICAgICAgICAg ICAgICAgICAgICAgICAgICBvdXRwdXQpCisgICAgICAoc2V0cS1sb2NhbCBweXRob24tc2hlbGwt cmVhZGxpbmUtY29tcGxldGVyLWRlbGltcworICAgICAgICAgICAgICAgICAgKHN0cmluZy10cmlt LXJpZ2h0CisgICAgICAgICAgICAgICAgICAgKHB5dGhvbi1zaGVsbC1zZW5kLXN0cmluZy1uby1v dXRwdXQKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydCByZWFkbGluZTsgcHJpbnQocmVhZGxp bmUuZ2V0X2NvbXBsZXRlcl9kZWxpbXMoKSkiKSkpCiAgICAgICAocHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tbmF0aXZlLXRyeSkpKSkKIAogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5h dGl2ZS10dXJuLW9mZiAoJm9wdGlvbmFsIG1zZykKQEAgLTQ2MDksNiArNDcxNSw4IEBAIHB5dGhv bi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1nZXQtY29tcGxldGlvbnMKICAgICAobGV0KiAoKG9y aWdpbmFsLWZpbHRlci1mbiAocHJvY2Vzcy1maWx0ZXIgcHJvY2VzcykpCiAgICAgICAgICAgIChy ZWRpcmVjdC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5hdGl2ZS1yZWRpcmVjdC1idWZmZXIpKQor ICAgICAgICAgICAoc2VwIChpZiAoc3RyaW5nPSBweXRob24tc2hlbGwtcmVhZGxpbmUtY29tcGxl dGVyLWRlbGltcyAiIikKKyAgICAgICAgICAgICAgICAgICAgIltcblxyXSsiICJbIFxmXHRcblxy XHYoKV0rIikpCiAgICAgICAgICAgICh0cmlnZ2VyICJcdCIpCiAgICAgICAgICAgIChuZXctaW5w dXQgKGNvbmNhdCBpbnB1dCB0cmlnZ2VyKSkKICAgICAgICAgICAgKGlucHV0LWxlbmd0aApAQCAt NDY1MSwyOCArNDc1OSwyNiBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtZ2V0LWNv bXBsZXRpb25zCiAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHB5dGhvbi1zaGVsbC1jb21w bGV0aW9uLW5hdGl2ZS1vdXRwdXQtdGltZW91dAogICAgICAgICAgICAgICAgICAgICAgY29taW50 LXJlZGlyZWN0LWZpbmlzaGVkLXJlZ2V4cCkKICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJh Y2t3YXJkICIwX19kdW1teV9jb21wbGV0aW9uX18iIG5pbCB0KQotICAgICAgICAgICAgICAgIChj bC1yZW1vdmUtZHVwbGljYXRlcwotICAgICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5nCi0gICAg ICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCi0gICAgICAgICAg ICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAocG9pbnQtbWluKSkKLSAgICAgICAg ICAgICAgICAgICJbIFxmXHRcblxyXHYoKV0rIiB0KQotICAgICAgICAgICAgICAgICA6dGVzdCAj J3N0cmluZz0pKSkpCisgICAgICAgICAgICAgICAgKGxldCAoKHN0ciAoYnVmZmVyLXN1YnN0cmlu Zy1uby1wcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSAocG9pbnQtbWluKSkpKQorICAgICAgICAgICAgICAgICAgKGlmIChzdHJp bmc9ICJbIiAoc3Vic3RyaW5nIHN0ciAwIDEpKQorICAgICAgICAgICAgICAgICAgICAgIChjb25k aXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHB5dGhvbi0tcGFyc2Ut anNvbi1hcnJheSBzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAodCAoY2wtcmVtb3ZlLWR1 cGxpY2F0ZXMgKHNwbGl0LXN0cmluZyBzdHIgc2VwIHQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRlc3QgIydzdHJpbmc9KSkpCisgICAgICAgICAg ICAgICAgICAgIChjbC1yZW1vdmUtZHVwbGljYXRlcyAoc3BsaXQtc3RyaW5nIHN0ciBzZXAgdCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0ZXN0ICMnc3RyaW5n PSkpKSkpKQogICAgICAgICAoc2V0LXByb2Nlc3MtZmlsdGVyIHByb2Nlc3Mgb3JpZ2luYWwtZmls dGVyLWZuKSkpKSkKIAogKGRlZnVuIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWdldC1jb21wbGV0 aW9ucyAocHJvY2VzcyBpbnB1dCkKICAgIkdldCBjb21wbGV0aW9ucyBvZiBJTlBVVCB1c2luZyBQ Uk9DRVNTLiIKICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3Mp Ci0gICAgKGxldCAoKGNvbXBsZXRpb25zCi0gICAgICAgICAgIChweXRob24tdXRpbC1zdHJpcC1z dHJpbmcKLSAgICAgICAgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0Ci0g ICAgICAgICAgICAgKGZvcm1hdAotICAgICAgICAgICAgICAiJXNcbnByaW50KCc7Jy5qb2luKF9f UFlUSE9OX0VMX2dldF9jb21wbGV0aW9ucyglcykpKSIKKyAgICAocHl0aG9uLS1wYXJzZS1qc29u LWFycmF5CisgICAgIChweXRob24tc2hlbGwtc2VuZC1zdHJpbmctbm8tb3V0cHV0CisgICAgICAo Zm9ybWF0ICIlc1xucHJpbnQoX19QWVRIT05fRUxfZ2V0X2NvbXBsZXRpb25zKCVzKSkiCiAgICAg ICAgICAgICAgIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLXNldHVwLWNvZGUKICAgICAgICAgICAg ICAgKHB5dGhvbi1zaGVsbC0tZW5jb2RlLXN0cmluZyBpbnB1dCkpCi0gICAgICAgICAgICAgcHJv Y2VzcykpKSkKLSAgICAgICh3aGVuICg+IChsZW5ndGggY29tcGxldGlvbnMpIDIpCi0gICAgICAg IChzcGxpdC1zdHJpbmcgY29tcGxldGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAiXidcXHxe XCJcXHw7XFx8JyRcXHxcIiQiIHQpKSkpKQorICAgICAgcHJvY2VzcykpKSkKIAogKGRlZnZhci1s b2NhbCBweXRob24tc2hlbGwtLWNhcGYtY2FjaGUgbmlsCiAgICJWYXJpYWJsZSB0byBzdG9yZSBj YWNoZWQgY29tcGxldGlvbnMgYW5kIGludmFsaWRhdGlvbiBrZXlzLiIpCkBAIC00Njg3LDIxICs0 NzkzLDIxIEBAIHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50CiAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgV29ya2luZyBvbiBhIHNoZWxsIGJ1ZmZlcjogdXNlIHByb21wdCBlbmQu CiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciAocHl0aG9uLXV0aWwtY29taW50LWxhc3Qt cHJvbXB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KSkpCi0gICAgICAgICAoaW1wb3J0LXN0YXRlbWVudAotICAgICAgICAgICh3aGVuIChzdHJpbmct bWF0Y2gtcAotICAgICAgICAgICAgICAgICAocnggKCogc3BhY2UpIHdvcmQtc3RhcnQgKG9yICJm cm9tIiAiaW1wb3J0Iikgd29yZC1lbmQgc3BhY2UpCi0gICAgICAgICAgICAgICAgIChidWZmZXIt c3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbGluZS1zdGFydCAocG9pbnQpKSkKLSAgICAgICAgICAg IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgbGluZS1zdGFydCAocG9pbnQpKSkpCisg ICAgICAgICAobm8tZGVsaW1zICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBw cm9jZXNzKQorICAgICAgICAgICAgICAgICAgICAgIChpZiBweXRob24tc2hlbGwtY29tcGxldGlv bi1uYXRpdmUtZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9IHB5dGhv bi1zaGVsbC1yZWFkbGluZS1jb21wbGV0ZXItZGVsaW1zICIiKQorICAgICAgICAgICAgICAgICAg ICAgICAgKHN0cmluZy1tYXRjaC1wICJpcHl0aG9uWzIzXT9cXCciIHB5dGhvbi1zaGVsbC1pbnRl cnByZXRlcikpKSkKICAgICAgICAgIChzdGFydAogICAgICAgICAgIChpZiAoPCAocG9pbnQpIGxp bmUtc3RhcnQpCiAgICAgICAgICAgICAgIChwb2ludCkKICAgICAgICAgICAgIChzYXZlLWV4Y3Vy c2lvbgotICAgICAgICAgICAgICAoaWYgKG5vdCAocmUtc2VhcmNoLWJhY2t3YXJkCi0gICAgICAg ICAgICAgICAgICAgICAgICAocHl0aG9uLXJ4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKG9y IHdoaXRlc3BhY2Ugb3Blbi1wYXJlbiBjbG9zZS1wYXJlbgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJpbmctZGVsaW1pdGVyIHNpbXBsZS1vcGVyYXRvcikpCi0gICAgICAgICAgICAg ICAgICAgICAgICBsaW5lLXN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0IDEpKQorICAg ICAgICAgICAgICAoaWYgKG9yIG5vLWRlbGltcworICAgICAgICAgICAgICAgICAgICAgIChub3Qg KHJlLXNlYXJjaC1iYWNrd2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChweXRob24t cngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHdoaXRlc3BhY2Ugb3Blbi1wYXJl biBjbG9zZS1wYXJlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLWRl bGltaXRlciBzaW1wbGUtb3BlcmF0b3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp bmUtc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0IDEpKSkKICAgICAgICAgICAg ICAgICAgIGxpbmUtc3RhcnQKICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyIChsZW5ndGgg KG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDApKSkKICAgICAgICAgICAgICAgICAocG9pbnQp KSkpKQpAQCAtNDc0MSwxOCArNDg0Nyw0NCBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1w b2ludAogICAgICAgICAgICAgICAgICAgKHQgIydweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRp dmUtZ2V0LWNvbXBsZXRpb25zKSkpKQogICAgICAgICAgKHByZXYtcHJvbXB0IChjYXIgcHl0aG9u LXNoZWxsLS1jYXBmLWNhY2hlKSkKICAgICAgICAgIChyZSAob3IgKGNhZHIgcHl0aG9uLXNoZWxs LS1jYXBmLWNhY2hlKSByZWdleHAtdW5tYXRjaGFibGUpKQotICAgICAgICAgKHByZWZpeCAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQorICAgICAgICAgKHByZWZp eCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpCisgICAgICAgICAo cHJlZml4LW9mZnNldCAwKSkKICAgICA7OyBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSwgd2UgY2hl Y2sgaWYgdGhlIHByb21wdCBwb3NpdGlvbiBvciB0aGUKICAgICA7OyBjb21wbGV0aW9uIHByZWZp eCBjaGFuZ2VkLgogICAgICh1bmxlc3MgKGFuZCAoZXF1YWwgcHJldi1wcm9tcHQgKGNhciBwcm9t cHQtYm91bmRhcmllcykpCi0gICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggcmUgcHJlZml4 KSkKKyAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCByZSBwcmVmaXgpCisgICAgICAgICAg ICAgICAgIChzZXRxIHByZWZpeC1vZmZzZXQgKC0gKGxlbmd0aCBwcmVmaXgpIChtYXRjaC1lbmQg MSkpKSkKICAgICAgIChzZXRxIHB5dGhvbi1zaGVsbC0tY2FwZi1jYWNoZQogICAgICAgICAgICAg YCgsKGNhciBwcm9tcHQtYm91bmRhcmllcykKICAgICAgICAgICAgICAgLChpZiAoc3RyaW5nLWVt cHR5LXAgcHJlZml4KQogICAgICAgICAgICAgICAgICAgIHJlZ2V4cC11bm1hdGNoYWJsZQotICAg ICAgICAgICAgICAgICAoY29uY2F0ICJcXGAiIChyZWdleHAtcXVvdGUgcHJlZml4KSAiXFwoPzpc XHN3XFx8XFxzX1xcKSpcXCciKSkKLSAgICAgICAgICAgICAgLEAoZnVuY2FsbCBjb21wbGV0aW9u LWZuIHByb2Nlc3MgKG9yIGltcG9ydC1zdGF0ZW1lbnQgcHJlZml4KSkpKSkKLSAgICAobGlzdCBz dGFydCBlbmQgKGNkZHIgcHl0aG9uLXNoZWxsLS1jYXBmLWNhY2hlKSkpKQorICAgICAgICAgICAg ICAgICAoY29uY2F0ICJcXGBcXCgiIChyZWdleHAtcXVvdGUgcHJlZml4KSAiXFwpXFwoPzpcXHN3 XFx8XFxzX1xcKSpcXCciKSkKKyAgICAgICAgICAgICAgLEAoZnVuY2FsbCBjb21wbGV0aW9uLWZu IHByb2Nlc3MgcHJlZml4KSkpKQorICAgIChsZXQgKChjYW5kcyAoY2RkciBweXRob24tc2hlbGwt LWNhcGYtY2FjaGUpKSkKKyAgICAgIChjb25kCisgICAgICAgKChzdHJpbmdwIChjYXIgY2FuZHMp KQorICAgICAgICAoaWYgbm8tZGVsaW1zCisgICAgICAgICAgICA7OyBSZWR1Y2UgY29tcGxldGlv biBjYW5kaWRhdGVzIGR1ZSB0byBsb25nIHByZWZpeC4KKyAgICAgICAgICAgIChpZi1sZXQgKChM cCAobGVuZ3RoIHByZWZpeCkpCisgICAgICAgICAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAi XFwoXFxzd1xcfFxcc19cXCkrXFwnIiBwcmVmaXgpKQorICAgICAgICAgICAgICAgICAgICAgKEwg KG1hdGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAgICAgICAgICAgKGxpc3QgKCsgc3RhcnQgTCkg ZW5kIChtYXBjYXIgKGxhbWJkYSAocykgKHN1YnN0cmluZyBzIEwpKSBjYW5kcykpCisgICAgICAg ICAgICAgIChsaXN0IGVuZCBlbmQgKG1hcGNhciAobGFtYmRhIChzKSAoc3Vic3RyaW5nIHMgTHAp KSBjYW5kcykpKQorICAgICAgICAgIChsaXN0IHN0YXJ0IGVuZCBjYW5kcykpKQorICAgICAgIDs7 IHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uKC1uYXRpdmUpLWdldC1jb21wbGV0aW9ucyBtYXkgcHJv ZHVjZQorICAgICAgIDs7IGEgbGlzdCBvZiAodGV4dCBzdGFydCBlbmQgdHlwZSBzaWduYXR1cmUp IGZvciBjb21wbGV0aW9uLgorICAgICAgIDs7IFNlZSBgcHl0aG9uLXNoZWxsLXJlYWRsaW5lLWlw eXRob24tc2V0dXAtY29kZScgYW5kCisgICAgICAgOzsgYHB5dGhvbi1zaGVsbC1jb21wbGV0aW9u LXNldHVwLWNvZGUnLgorICAgICAgICgoY29uc3AgKGNhciBjYW5kcykpCisgICAgICAgIChsaXN0 ICgrIHN0YXJ0IChudGggMSAoY2FyIGNhbmRzKSkpCisgICAgICAgICAgICAgIDs7IENhbmRpZGF0 ZXMgbWF5IGJlIGNhY2hlZCwgc28gdGhlIGVuZCBwb3NpdGlvbiBzaG91bGQKKyAgICAgICAgICAg ICAgOzsgYmUgYWRqdXN0ZWQgYWNjb3JkaW5nIHRvIGN1cnJlbnQgY29tcGxldGlvbiBwcmVmaXgu CisgICAgICAgICAgICAgICgrIHN0YXJ0IChudGggMiAoY2FyIGNhbmRzKSkgcHJlZml4LW9mZnNl dCkKKyAgICAgICAgICAgICAgY2FuZHMKKyAgICAgICAgICAgICAgOmFubm90YXRpb24tZnVuY3Rp b24KKyAgICAgICAgICAgICAgKGxhbWJkYSAoYykgKGNvbmNhdCAiICIgKG50aCAzIChhc3NvYyBj IGNhbmRzKSkpKQorICAgICAgICAgICAgICA6Y29tcGFueS1kb2NzaWcKKyAgICAgICAgICAgICAg KGxhbWJkYSAoYykgKG50aCA0IChhc3NvYyBjIGNhbmRzKSkpKSkpKSkpCiAKIChkZWZpbmUtb2Jz b2xldGUtZnVuY3Rpb24tYWxpYXMKICAgJ3B5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWNvbXBsZXRl LWF0LXBvaW50CmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvcHJvZ21vZGVzL3B5dGhvbi10ZXN0cy5l bCBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsCmluZGV4IDk3ZmZkNWZlMjBm Li45NzViYWY5ZTU3NiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVz dHMuZWwKKysrIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwKQEAgLTQ3ODcs NiArNDc4Nyw3MiBAQCBweXRob24tc2hlbGwtY29tcGxldGlvbi1hdC1wb2ludC1uYXRpdmUtMQog ICAgICAoZW5kLW9mLWxpbmUgMCkKICAgICAgKHNob3VsZC1ub3QgKG50aCAyIChweXRob24tc2hl bGwtY29tcGxldGlvbi1hdC1wb2ludCkpKSkpKQogCisoZGVmdW4gcHl0aG9uLXNoZWxsLWNvbXBs ZXRpb24tbW9kdWxlICgpCisgICJDaGVjayBpZiBtb2R1bGVzIGNhbiBiZSBjb21wbGV0ZWQgaW4g UHl0aG9uIHNoZWxsLiIKKyAgKGluc2VydCAiaW1wb3J0IGRhdGV0IikKKyAgKGNvbXBsZXRpb24t YXQtcG9pbnQpCisgIChiZWdpbm5pbmctb2YtbGluZSkKKyAgKHNob3VsZCAobG9va2luZy1hdC1w ICJpbXBvcnQgZGF0ZXRpbWUiKSkKKyAgKGtpbGwtbGluZSkKKyAgKGluc2VydCAiZnJvbSBkYXRl dCIpCisgIChjb21wbGV0aW9uLWF0LXBvaW50KQorICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgIChz aG91bGQgKGxvb2tpbmctYXQtcCAiZnJvbSBkYXRldGltZSIpKQorICAoZW5kLW9mLWxpbmUpCisg IChpbnNlcnQgIiBpbXBvcnQgdGltZWQiKQorICAoY29tcGxldGlvbi1hdC1wb2ludCkKKyAgKGJl Z2lubmluZy1vZi1saW5lKQorICAoc2hvdWxkIChsb29raW5nLWF0LXAgImZyb20gZGF0ZXRpbWUg aW1wb3J0IHRpbWVkZWx0YSIpKQorICAoa2lsbC1saW5lKSkKKworKGRlZnVuIHB5dGhvbi1zaGVs bC1jb21wbGV0aW9uLXBhcmFtZXRlcnMgKCkKKyAgIkNoZWNrIGlmIHBhcmFtZXRlcnMgY2FuIGJl IGNvbXBsZXRlZCBpbiBQeXRob24gc2hlbGwuIgorICAoaW5zZXJ0ICJpbXBvcnQgcmUiKQorICAo Y29taW50LXNlbmQtaW5wdXQpCisgIChweXRob24tdGVzdHMtc2hlbGwtd2FpdC1mb3ItcHJvbXB0 KQorICAoaW5zZXJ0ICJyZS5zcGxpdCgnYicsICdhYmMnLCBtYXhzIikKKyAgKGNvbXBsZXRpb24t YXQtcG9pbnQpCisgIChzaG91bGQgKHN0cmluZz0gInJlLnNwbGl0KCdiJywgJ2FiYycsIG1heHNw bGl0PSIKKyAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZyAobGluZS1iZWdpbm5p bmctcG9zaXRpb24pIChwb2ludCkpKSkKKyAgKGluc2VydCAiMCwgIikKKyAgKHNob3VsZCAocHl0 aG9uLXNoZWxsLWNvbXBsZXRpb24tYXQtcG9pbnQpKQorICA7OyBUZXN0IGlmIGNhY2hlIGlzIHVz ZWQuCisgIChjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAncHl0aG9uLXNoZWxsLWNvbXBsZXRp b24tZ2V0LWNvbXBsZXRpb25zKQorICAgICAgICAgICAgICdpZ25vcmUpCisgICAgICAgICAgICAo KHN5bWJvbC1mdW5jdGlvbiAncHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbmF0aXZlLWdldC1jb21w bGV0aW9ucykKKyAgICAgICAgICAgICAnaWdub3JlKSkKKyAgICAoaW5zZXJ0ICJmbGEiKQorICAg IChjb21wbGV0aW9uLWF0LXBvaW50KQorICAgIChzaG91bGQgKHN0cmluZz0gInJlLnNwbGl0KCdi JywgJ2FiYycsIG1heHNwbGl0PTAsIGZsYWdzPSIKKyAgICAgICAgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKHBvaW50KSkpKSkKKyAgKGJl Z2lubmluZy1vZi1saW5lKQorICAoa2lsbC1saW5lKSkKKworKGVydC1kZWZ0ZXN0IHB5dGhvbi1z aGVsbC1jb21wbGV0aW9uLWF0LXBvaW50LWplZGktY29tcGxldGVyICgpCisgICJDaGVjayBpZiBQ eXRob24gc2hlbGwgY29tcGxldGlvbiB3b3JrcyB3aXRoIEplZGkuIgorICAoc2tpcC11bmxlc3Mg KGV4ZWN1dGFibGUtZmluZCBweXRob24tdGVzdHMtc2hlbGwtaW50ZXJwcmV0ZXIpKQorICAocHl0 aG9uLXRlc3RzLXdpdGgtdGVtcC1idWZmZXItd2l0aC1zaGVsbAorICAgIiIKKyAgIChweXRob24t c2hlbGwtd2l0aC1zaGVsbC1idWZmZXIKKyAgICAgKHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLW5h dGl2ZS10dXJuLW9uKQorICAgICAoc2tpcC11bmxlc3MgKHN0cmluZz0gcHl0aG9uLXNoZWxsLXJl YWRsaW5lLWNvbXBsZXRlci1kZWxpbXMgIiIpKQorICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRp b24tbW9kdWxlKQorICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tcGFyYW1ldGVycykpKSkK KworKGVydC1kZWZ0ZXN0IHB5dGhvbi1zaGVsbC1jb21wbGV0aW9uLWF0LXBvaW50LWlweXRob24g KCkKKyAgIkNoZWNrIGlmIFB5dGhvbiBzaGVsbCBjb21wbGV0aW9uIHdvcmtzIGZvciBJUHl0aG9u LiIKKyAgKGxldCAoKHB5dGhvbi1zaGVsbC1pbnRlcnByZXRlciAiaXB5dGhvbiIpCisgICAgICAg IChweXRob24tc2hlbGwtaW50ZXJwcmV0ZXItYXJncyAiLWkgLS1zaW1wbGUtcHJvbXB0IikpCisg ICAgKHNraXAtdW5sZXNzIChleGVjdXRhYmxlLWZpbmQgcHl0aG9uLXNoZWxsLWludGVycHJldGVy KSkKKyAgICAocHl0aG9uLXRlc3RzLXdpdGgtdGVtcC1idWZmZXItd2l0aC1zaGVsbAorICAgICAi IgorICAgICAocHl0aG9uLXNoZWxsLXdpdGgtc2hlbGwtYnVmZmVyCisgICAgICAgKHB5dGhvbi1z aGVsbC1jb21wbGV0aW9uLW5hdGl2ZS10dXJuLW9mZikKKyAgICAgICAocHl0aG9uLXNoZWxsLWNv bXBsZXRpb24tbW9kdWxlKQorICAgICAgIChweXRob24tc2hlbGwtY29tcGxldGlvbi1wYXJhbWV0 ZXJzKQorICAgICAgIChweXRob24tc2hlbGwtY29tcGxldGlvbi1uYXRpdmUtdHVybi1vbikKKyAg ICAgICAocHl0aG9uLXNoZWxsLWNvbXBsZXRpb24tbW9kdWxlKQorICAgICAgIChweXRob24tc2hl bGwtY29tcGxldGlvbi1wYXJhbWV0ZXJzKSkpKSkKIAogDAogOzs7IFBEQiBUcmFjayBpbnRlZ3Jh dGlvbgotLSAKMi4yNS4xCgo= --000000000000501cf7060f3114e5--