From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Kangas Newsgroups: gmane.emacs.devel Subject: Consistent face for keys in *Help* and `substitute-command-keys' Date: Tue, 23 Feb 2021 19:40:07 -0600 Message-ID: References: <87h7m5iagw.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000798c4605bc0b1d35" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="15004"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Feb 24 02:42:10 2021 Return-path: Envelope-to: ged-emacs-devel@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 1lEjBp-0003my-LF for ged-emacs-devel@m.gmane-mx.org; Wed, 24 Feb 2021 02:42:09 +0100 Original-Received: from localhost ([::1]:57822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lEjBo-0004Ae-N8 for ged-emacs-devel@m.gmane-mx.org; Tue, 23 Feb 2021 20:42:08 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46122) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lEj9y-00032q-3J for emacs-devel@gnu.org; Tue, 23 Feb 2021 20:40:16 -0500 Original-Received: from mail-pj1-f53.google.com ([209.85.216.53]:53464) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lEj9u-0000FO-Ph for emacs-devel@gnu.org; Tue, 23 Feb 2021 20:40:13 -0500 Original-Received: by mail-pj1-f53.google.com with SMTP id c19so208833pjq.3 for ; Tue, 23 Feb 2021 17:40:09 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=px2ikOOfRZLxrlcpARPV31iFbdkrhyE2Hq5hxal2hRs=; b=IGrK/lPkTAWue+M8Cv56/pEuA2vy/zqT0wHb7H4IqXsVN1+UtusjLzX0KyAneX6+WC mlcuhljPTMMCQnyWPpo/3L98m9PkIZGWbyPlfNUi4TAnyf93siPw/L0M0+HrtmNFeZw+ BpdUcLXqAx8HvtGp+jPRFM2C3D5Rrmv+HLWpouRsWsdI8lPjB2q3NIYldIAy2lMEWpCN t77BjrBR+1cvW+WzzpB/038nTkGEjo2GvjZp6TCQohhxRfXTJEJLZQlqjXikeg+KDfxE C/c9961ZVRmaKJB3EbFrq5L4vugwYi2Oh6az5DMfaNul16YRja2lpN6m/QoK4vgyzUbn LLOA== X-Gm-Message-State: AOAM532IRexMhI/1Lj9r0sR2054BhUuo3NBGOpY9Z2WcRevR+fbNJuDP c7Y6gKfdqbXQLmR9mxQ2YhTjBvm0tPWPFCQtQDg= X-Google-Smtp-Source: ABdhPJyhvj+3Cav68fFhZhnPqUFaA2nnKMchp6vF5qzbpAjeqSQ7c3qcq02jS8JaV62VgmlvznduN7qv/aaI0DYSwMY= X-Received: by 2002:a17:902:ec8a:b029:e3:efa6:4f4 with SMTP id x10-20020a170902ec8ab02900e3efa604f4mr14718087plg.39.1614130808700; Tue, 23 Feb 2021 17:40:08 -0800 (PST) Original-Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Tue, 23 Feb 2021 19:40:07 -0600 In-Reply-To: <87h7m5iagw.fsf@gnus.org> Received-SPF: pass client-ip=209.85.216.53; envelope-from=stefankangas@gmail.com; helo=mail-pj1-f53.google.com X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:265559 Archived-At: --000000000000798c4605bc0b1d35 Content-Type: text/plain; charset="UTF-8" Lars Ingebrigtsen writes: > Stefan Kangas writes: > >> One of the usability complaints I've heard is that `help-for-help' >> (`C-h C-h') could be better organized. I also think some colors could >> really help in making it easier to navigate. > [...] > > Is using font locking the best option here, though? What about just > inserting the text with the text properties already applied? OK, so here's what I came up with so far. The first step was to insert the keybindings with the new face. But rather than doing that in just `help-for-help', and perhaps improve other things later, I realized that it is better to decide on a consistent look for keybindings in _all_ help commands. This means introducing a new face `help-key-binding' and then using that any time we output a keybinding for use in the help system. But going even further than that, I realized it would be very useful if this face applies to any key in any message we output, by convention. This would be a useful improvement in consistency, in the same way it helps to consistently use `C-' to mean the Control modifier. It makes it easier for users to see that, hey, this text is different in the same way that other keybindings have been, so it must also be referring to a keybinding. So I have made `substitute-command-keys' add this face unconditionally to keys. Having looked over the 430 matches for s-c-k in our tree, I couldn't find any location where we would not benefit from this consistency. On the contrary, it would be quite nice to see that the same face used in *Help* also shows up in messages such as these: "Use \\[shadow-copy-files] to update shadows." "Press \\[wdired-finish-edit] when finished or \\[wdired-abort-changes] ..." "\\[scroll-up] scrolls up, \\[scroll-down] scrolls down, ..." Please find attached a patch. It is a little bit rough around the edges still so needs polishing up and documentation. For testing, try e.g. `C-h C-h', `C-h C-h', `C-h C-c', or even `C-s C-h ?'. Thoughts welcome. --000000000000798c4605bc0b1d35 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-Colorize-keybindings-in-help.patch" Content-Disposition: attachment; filename="0001-Colorize-keybindings-in-help.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: bd5ba6ff74b8d85e_0.1 RnJvbSBiN2MyZGIwMmY0NmE0NGZhYzMxN2E2YzgxZWZhMDAxZWNmZWE5M2EwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gS2FuZ2FzIDxzdGVmYW5AbWFyeGlzdC5zZT4KRGF0 ZTogV2VkLCAyNCBGZWIgMjAyMSAwMToxODoxMyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIENvbG9y aXplIGtleWJpbmRpbmdzIGluIGhlbHAKCi0tLQogbGlzcC9mYWNlcy5lbCAgICAgIHwgICA0ICsK IGxpc3AvaGVscC1mbnMuZWwgICB8ICAxNyArKy0tCiBsaXNwL2hlbHAtbWFjcm8uZWwgfCAyMjYg KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaXNwL2hlbHAu ZWwgICAgICAgfCAxMjAgKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBsaXNwL2lzZWFyY2guZWwg ICAgfCAgIDggKy0KIHNyYy9rZXltYXAuYyAgICAgICB8ICAxMyArKy0KIDYgZmlsZXMgY2hhbmdl ZCwgMjA4IGluc2VydGlvbnMoKyksIDE4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNw L2ZhY2VzLmVsIGIvbGlzcC9mYWNlcy5lbAppbmRleCA5MGYxMWJiZTNiLi5kNmJhYjVlNzMyIDEw MDY0NAotLS0gYS9saXNwL2ZhY2VzLmVsCisrKyBiL2xpc3AvZmFjZXMuZWwKQEAgLTI4MTUsNiAr MjgxNSwxMCBAQCBoZWxwLWFyZ3VtZW50LW5hbWUKICAgIkZhY2UgdG8gaGlnaGxpZ2h0IGFyZ3Vt ZW50IG5hbWVzIGluICpIZWxwKiBidWZmZXJzLiIKICAgOmdyb3VwICdoZWxwKQogCisoZGVmZmFj ZSBoZWxwLWtleS1iaW5kaW5nICcoKHQgOndlaWdodCBzZW1pLWJvbGQgOmZvcmVncm91bmQgIkZv cmVzdEdyZWVuIikpCisgICJGYWNlIGZvciBrZXliaW5kaW5ncyBpbiAqSGVscCogYnVmZmVycy4i CisgIDpncm91cCAnaGVscCkKKwogKGRlZmZhY2UgZ2x5cGhsZXNzLWNoYXIKICAgJygoKCh0eXBl IHR0eSkpIDppbmhlcml0IHVuZGVybGluZSkKICAgICAoKCh0eXBlIHBjKSkgOmluaGVyaXQgZXNj YXBlLWdseXBoKQpkaWZmIC0tZ2l0IGEvbGlzcC9oZWxwLWZucy5lbCBiL2xpc3AvaGVscC1mbnMu ZWwKaW5kZXggNzI0NDY5NTA5NC4uODI3N2JiZGFkMSAxMDA2NDQKLS0tIGEvbGlzcC9oZWxwLWZu cy5lbAorKysgYi9saXNwL2hlbHAtZm5zLmVsCkBAIC00NjYsMTIgKzQ2NiwxNSBAQCBoZWxwLWZu cy0ta2V5LWJpbmRpbmdzCiAgICAgICAgICAgICAgIDs7IElmIGxvdHMgb2Ygb3JkaW5hcnkgdGV4 dCBjaGFyYWN0ZXJzIHJ1biB0aGlzIGNvbW1hbmQsCiAgICAgICAgICAgICAgIDs7IGRvbid0IG1l bnRpb24gdGhlbSBvbmUgYnkgb25lLgogICAgICAgICAgICAgICAoaWYgKDwgKGxlbmd0aCBub24t bW9kaWZpZWQta2V5cykgMTApCi0gICAgICAgICAgICAgICAgICAocHJpbmMgKG1hcGNvbmNhdCAj J2tleS1kZXNjcmlwdGlvbiBrZXlzICIsICIpKQorICAgICAgICAgICAgICAgICAgKHdpdGgtY3Vy cmVudC1idWZmZXIgc3RhbmRhcmQtb3V0cHV0CisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQg KG1hcGNvbmNhdCAjJ2hlbHAtLWtleS1kZXNjcmlwdGlvbi1mb250aWZpZWQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgIiwgIikpKQogICAgICAgICAgICAgICAg IChkb2xpc3QgKGtleSBub24tbW9kaWZpZWQta2V5cykKICAgICAgICAgICAgICAgICAgIChzZXRx IGtleXMgKGRlbHEga2V5IGtleXMpKSkKICAgICAgICAgICAgICAgICAoaWYga2V5cwogICAgICAg ICAgICAgICAgICAgICAocHJvZ24KLSAgICAgICAgICAgICAgICAgICAgICAocHJpbmMgKG1hcGNv bmNhdCAjJ2tleS1kZXNjcmlwdGlvbiBrZXlzICIsICIpKQorICAgICAgICAgICAgICAgICAgICAg IChwcmluYyAobWFwY29uY2F0ICMnaGVscC0ta2V5LWRlc2NyaXB0aW9uLWZvbnRpZmllZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXMgIiwgIikpCiAgICAgICAg ICAgICAgICAgICAgICAgKHByaW5jICIsIGFuZCBtYW55IG9yZGluYXJ5IHRleHQgY2hhcmFjdGVy cyIpKQogICAgICAgICAgICAgICAgICAgKHByaW5jICJtYW55IG9yZGluYXJ5IHRleHQgY2hhcmFj dGVycyIpKSkpCiAgICAgICAgICAgICAod2hlbiAob3IgcmVtYXBwZWQga2V5cyBub24tbW9kaWZp ZWQta2V5cykKQEAgLTE4MjUsMTAgKzE4MjgsMTIgQEAgZGVzY3JpYmUtbW9kZQogCSAgICAgIChz YXZlLWV4Y3Vyc2lvbgogCQkocmUtc2VhcmNoLWJhY2t3YXJkIChzdWJzdGl0dXRlLWNvbW1hbmQt a2V5cyAiYFxcKFteYCddK1xcKSciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmlsIHQpCi0JCShoZWxwLXhyZWYtYnV0dG9uIDEgJ2hlbHAtZnVuY3Rpb24tZGVmIG1vZGUg ZmlsZS1uYW1lKSkpKSkKLQkocHJpbmMgIjpcbiIpCi0JKHByaW5jIChoZWxwLXNwbGl0LWZ1bmRv YyAoZG9jdW1lbnRhdGlvbiBtYWpvci1tb2RlKSBuaWwgJ2RvYykpCi0gICAgICAgIChwcmluYyAo aGVscC1mbnMtLWxpc3QtbG9jYWwtY29tbWFuZHMpKSkpKQorICAgICAgICAgICAgICAgIChoZWxw LXhyZWYtYnV0dG9uIDEgJ2hlbHAtZnVuY3Rpb24tZGVmIG1vZGUgZmlsZS1uYW1lKSkpKSkKKyAg ICAgICAgKGxldCAoKGZ1bmRvYyAoaGVscC1zcGxpdC1mdW5kb2MgKGRvY3VtZW50YXRpb24gbWFq b3ItbW9kZSkgbmlsICdkb2MpKSkKKyAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGFu ZGFyZC1vdXRwdXQKKyAgICAgICAgICAgIChpbnNlcnQgIjpcbiIpCisgICAgICAgICAgICAoaW5z ZXJ0IGZ1bmRvYykKKyAgICAgICAgICAgIChpbnNlcnQgKGhlbHAtZm5zLS1saXN0LWxvY2FsLWNv bW1hbmRzKSkpKSkpKQogICA7OyBGb3IgdGhlIHNha2Ugb2YgSUVMTSBhbmQgbWF5YmUgb3RoZXJz CiAgIG5pbCkKIApkaWZmIC0tZ2l0IGEvbGlzcC9oZWxwLW1hY3JvLmVsIGIvbGlzcC9oZWxwLW1h Y3JvLmVsCmluZGV4IDc5MWIxMGE4NzguLjRiYjVlMDA5MDYgMTAwNjQ0Ci0tLSBhL2xpc3AvaGVs cC1tYWNyby5lbAorKysgYi9saXNwL2hlbHAtbWFjcm8uZWwKQEAgLTkyLDExOSArOTIsMTE5IEBA IG1ha2UtaGVscC1zY3JlZW4KIHdpdGggdGhlIGtleSBzZXF1ZW5jZSB0aGF0IGludm9rZWQgRk5B TUUuCiBXaGVuIEZOQU1FIGZpbmFsbHkgZG9lcyBnZXQgYSBjb21tYW5kLCBpdCBleGVjdXRlcyB0 aGF0IGNvbW1hbmQKIGFuZCB0aGVuIHJldHVybnMuIgotICAobGV0ICgoZG9jLWZuIChpbnRlcm4g KGNvbmNhdCAoc3ltYm9sLW5hbWUgZm5hbWUpICItZG9jIikpKSkKLSAgICBgKHByb2duCi0gICAg ICAgKGRlZnVuICxkb2MtZm4gKCkgLGhlbHAtdGV4dCBuaWwpCi0gICAgICAgKGRlZnVuICxmbmFt ZSAoKQotCSAiSGVscCBjb21tYW5kLiIKLQkgKGludGVyYWN0aXZlKQotCSAobGV0ICgobGluZS1w cm9tcHQKLQkJKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICxoZWxwLWxpbmUpKSkKLQkgICAod2hl biB0aHJlZS1zdGVwLWhlbHAKLQkgICAgIChtZXNzYWdlICIlcyIgbGluZS1wcm9tcHQpKQotCSAg IChsZXQqICgoaGVscC1zY3JlZW4gKGRvY3VtZW50YXRpb24gKHF1b3RlICxkb2MtZm4pKSkKLQkJ ICA7OyBXZSBiaW5kIG92ZXJyaWRpbmctbG9jYWwtbWFwIGZvciB2ZXJ5IHNtYWxsCi0JCSAgOzsg c2VjdGlvbnMsICpleGNsdWRpbmcqIHdoZXJlIHdlIHN3aXRjaCBidWZmZXJzCi0JCSAgOzsgYW5k IHdoZXJlIHdlIGV4ZWN1dGUgdGhlIGNob3NlbiBoZWxwIGNvbW1hbmQuCi0JCSAgKGxvY2FsLW1h cCAobWFrZS1zcGFyc2Uta2V5bWFwKSkKLQkJICAobmV3LW1pbm9yLW1vZGUtbWFwLWFsaXN0IG1p bm9yLW1vZGUtbWFwLWFsaXN0KQotCQkgIChwcmV2LWZyYW1lIChzZWxlY3RlZC1mcmFtZSkpCi0J CSAgY29uZmlnIG5ldy1mcmFtZSBrZXkgY2hhcikKLQkgICAgICh3aGVuIChzdHJpbmctbWF0Y2gg IiVUSElTLUtFWSUiIGhlbHAtc2NyZWVuKQotCSAgICAgICAoc2V0cSBoZWxwLXNjcmVlbgotCQkg ICAgIChyZXBsYWNlLW1hdGNoIChrZXktZGVzY3JpcHRpb24KLQkJCQkgICAgIChzdWJzdHJpbmcg KHRoaXMtY29tbWFuZC1rZXlzKSAwIC0xKSkKLQkJCQkgICAgdCB0IGhlbHAtc2NyZWVuKSkpCi0J ICAgICAodW53aW5kLXByb3RlY3QKLQkJIChsZXQgKChtaW5vci1tb2RlLW1hcC1hbGlzdCBuaWwp KQotCQkgICAoc2V0Y2RyIGxvY2FsLW1hcCAsaGVscGVkLW1hcCkKLQkJICAgKGRlZmluZS1rZXkg bG9jYWwtbWFwIFt0XSAndW5kZWZpbmVkKQotCQkgICA7OyBNYWtlIHRoZSBzY3JvbGwgYmFyIGtl ZXAgd29ya2luZyBub3JtYWxseS4KLQkJICAgKGRlZmluZS1rZXkgbG9jYWwtbWFwIFt2ZXJ0aWNh bC1zY3JvbGwtYmFyXQotCQkgICAgIChsb29rdXAta2V5IGdsb2JhbC1tYXAgW3ZlcnRpY2FsLXNj cm9sbC1iYXJdKSkKLQkJICAgKGlmIHRocmVlLXN0ZXAtaGVscAotCQkgICAgICAgKHByb2duCi0J CQkgKHNldHEga2V5IChsZXQgKChvdmVycmlkaW5nLWxvY2FsLW1hcCBsb2NhbC1tYXApKQotCQkJ CSAgICAgKHJlYWQta2V5LXNlcXVlbmNlIG5pbCkpKQotCQkJIDs7IE1ha2UgdGhlIEhFTFAga2V5 IHRyYW5zbGF0ZSB0byBDLWguCi0JCQkgKGlmIChsb29rdXAta2V5IGZ1bmN0aW9uLWtleS1tYXAg a2V5KQotCQkJICAgICAoc2V0cSBrZXkgKGxvb2t1cC1rZXkgZnVuY3Rpb24ta2V5LW1hcCBrZXkp KSkKLQkJCSAoc2V0cSBjaGFyIChhcmVmIGtleSAwKSkpCi0JCSAgICAgKHNldHEgY2hhciA/Pykp Ci0JCSAgICh3aGVuIChvciAoZXEgY2hhciA/PykgKGVxIGNoYXIgaGVscC1jaGFyKQotCQkJICAg ICAobWVtcSBjaGFyIGhlbHAtZXZlbnQtbGlzdCkpCi0JCSAgICAgKHNldHEgY29uZmlnIChjdXJy ZW50LXdpbmRvdy1jb25maWd1cmF0aW9uKSkKLQkJICAgICAocG9wLXRvLWJ1ZmZlciAiICpNZXRh aGVscCoiIG5pbCB0KQotCQkgICAgIChhbmQgKGZib3VuZHAgJ21ha2UtZnJhbWUpCi0JCQkgIChu b3QgKGVxICh3aW5kb3ctZnJhbWUpCi0JCQkJICAgcHJldi1mcmFtZSkpCi0JCQkgIChzZXRxIG5l dy1mcmFtZSAod2luZG93LWZyYW1lKQotCQkJCWNvbmZpZyBuaWwpKQotCQkgICAgIChzZXRxIGJ1 ZmZlci1yZWFkLW9ubHkgbmlsKQotCQkgICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkK LQkJICAgICAgIChlcmFzZS1idWZmZXIpCi0JCSAgICAgICAoaW5zZXJ0IGhlbHAtc2NyZWVuKSkK LQkJICAgICAobGV0ICgobWlub3ItbW9kZS1tYXAtYWxpc3QgbmV3LW1pbm9yLW1vZGUtbWFwLWFs aXN0KSkKLQkJICAgICAgIChoZWxwLW1vZGUpCi0JCSAgICAgICAoc2V0cSBuZXctbWlub3ItbW9k ZS1tYXAtYWxpc3QgbWlub3ItbW9kZS1tYXAtYWxpc3QpKQotCQkgICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCi0JCSAgICAgKHdoaWxlIChvciAobWVtcSBjaGFyIChhcHBlbmQgaGVscC1ldmVu dC1saXN0Ci0JCQkJCQkgICAoY29ucyBoZWxwLWNoYXIgJyg/PyA/XEMtdiA/XHMgP1wxNzcgZGVs ZXRlIGJhY2tzcGFjZSB2ZXJ0aWNhbC1zY3JvbGwtYmFyID9cTS12KSkpKQotCQkJCShlcSAoY2Fy LXNhZmUgY2hhcikgJ3N3aXRjaC1mcmFtZSkKLQkJCQkoZXF1YWwga2V5ICJcTS12IikpCi0JCSAg ICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCi0JCQkgICAoY29uZAotCQkJICAgICgoZXEgKGNhci1z YWZlIGNoYXIpICdzd2l0Y2gtZnJhbWUpCi0JCQkgICAgIChoYW5kbGUtc3dpdGNoLWZyYW1lIGNo YXIpKQotCQkJICAgICgobWVtcSBjaGFyICcoP1xDLXYgP1xzKSkKLQkJCSAgICAgKHNjcm9sbC11 cCkpCi0JCQkgICAgKChvciAobWVtcSBjaGFyICcoP1wxNzcgP1xNLXYgZGVsZXRlIGJhY2tzcGFj ZSkpCi0JCQkJIChlcXVhbCBrZXkgIlxNLXYiKSkKLQkJCSAgICAgKHNjcm9sbC1kb3duKSkpCi0J CQkgKGVycm9yIG5pbCkpCi0JCSAgICAgICAobGV0ICgoY3Vyc29yLWluLWVjaG8tYXJlYSB0KQot CQkJICAgICAob3ZlcnJpZGluZy1sb2NhbC1tYXAgbG9jYWwtbWFwKSkKLQkJCSAoc2V0cSBrZXkg KHJlYWQta2V5LXNlcXVlbmNlCi0JCQkJICAgIChmb3JtYXQgIlR5cGUgb25lIG9mIHRoZSBvcHRp b25zIGxpc3RlZCVzOiAiCi0JCQkJCSAgICAoaWYgKHBvcy12aXNpYmxlLWluLXdpbmRvdy1wCi0J CQkJCQkgKHBvaW50LW1heCkpCi0JCQkJCQkiIiAiLCBvciBTUEFDRSBvciBERUwgdG8gc2Nyb2xs IikpKQotCQkJICAgICAgIGNoYXIgKGFyZWYga2V5IDApKSkKLQotCQkgICAgICAgOzsgSWYgdGhp cyBpcyBhIHNjcm9sbCBiYXIgY29tbWFuZCwganVzdCBydW4gaXQuCi0JCSAgICAgICAod2hlbiAo ZXEgY2hhciAndmVydGljYWwtc2Nyb2xsLWJhcikKLQkJCSAoY29tbWFuZC1leGVjdXRlIChsb29r dXAta2V5IGxvY2FsLW1hcCBrZXkpIG5pbCBrZXkpKSkpCi0JCSAgIDs7IFdlIGRvbid0IG5lZWQg dGhlIHByb21wdCBhbnkgbW9yZS4KLQkJICAgKG1lc3NhZ2UgIiIpCi0JCSAgIDs7IE1vdXNlIGNs aWNrcyBhcmUgbm90IHBhcnQgb2YgdGhlIGhlbHAgZmVhdHVyZSwKLQkJICAgOzsgc28gcmVleGVj dXRlIHRoZW0gaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50LgotCQkgICAoaWYgKGxpc3RwIGNo YXIpCi0JCSAgICAgICAoc2V0cSB1bnJlYWQtY29tbWFuZC1ldmVudHMKLQkJCSAgICAgKGNvbnMg Y2hhciB1bnJlYWQtY29tbWFuZC1ldmVudHMpCi0JCQkgICAgIGNvbmZpZyBuaWwpCi0JCSAgICAg KGxldCAoKGRlZm4gKGxvb2t1cC1rZXkgbG9jYWwtbWFwIGtleSkpKQotCQkgICAgICAgKGlmIGRl Zm4KLQkJCSAgIChwcm9nbgotCQkJICAgICAod2hlbiBjb25maWcKLQkJCSAgICAgICAoc2V0LXdp bmRvdy1jb25maWd1cmF0aW9uIGNvbmZpZykKLQkJCSAgICAgICAoc2V0cSBjb25maWcgbmlsKSkK LQkJCSAgICAgOzsgVGVtcG9yYXJpbHkgcmViaW5kIGBtaW5vci1tb2RlLW1hcC1hbGlzdCcKLQkJ CSAgICAgOzsgdG8gYG5ldy1taW5vci1tb2RlLW1hcC1hbGlzdCcgKEJ1ZyMxMDQ1NCkuCi0JCQkg ICAgIChsZXQgKChtaW5vci1tb2RlLW1hcC1hbGlzdCBuZXctbWlub3ItbW9kZS1tYXAtYWxpc3Qp KQotCQkJICAgICAgIDs7IGBkZWZuJyBtdXN0IG1ha2Ugc3VyZSB0aGF0IGl0cyBmcmFtZSBpcwot CQkJICAgICAgIDs7IHNlbGVjdGVkLCBzbyB3ZSB3b24ndCBpY29uaWZ5IGl0IGJlbG93LgotCQkJ ICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgZGVmbikpCi0JCQkgICAgICh3aGVuIG5ldy1mcmFt ZQotCQkJICAgICAgIDs7IERvIG5vdCBpY29uaWZ5IHRoZSBzZWxlY3RlZCBmcmFtZS4KLQkJCSAg ICAgICAodW5sZXNzIChlcSBuZXctZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkKLQkJCQkgKGljb25p ZnktZnJhbWUgbmV3LWZyYW1lKSkKLQkJCSAgICAgICAoc2V0cSBuZXctZnJhbWUgbmlsKSkpCi0J CQkgKGRpbmcpKSkpKQotCSAgICAgICAod2hlbiBjb25maWcKLQkJIChzZXQtd2luZG93LWNvbmZp Z3VyYXRpb24gY29uZmlnKSkKLQkgICAgICAgKHdoZW4gbmV3LWZyYW1lCi0JCSAoaWNvbmlmeS1m cmFtZSBuZXctZnJhbWUpKQotCSAgICAgICAoc2V0cSBtaW5vci1tb2RlLW1hcC1hbGlzdCBuZXct bWlub3ItbW9kZS1tYXAtYWxpc3QpKSkpKSkpKQorICBgKGRlZnVuICxmbmFtZSAoKQorICAgICAi SGVscCBjb21tYW5kLiIKKyAgICAgKGludGVyYWN0aXZlKQorICAgICAobGV0ICgobGluZS1wcm9t cHQKKyAgICAgICAgICAgIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyAsaGVscC1saW5lKSkpCisg ICAgICAgKHdoZW4gdGhyZWUtc3RlcC1oZWxwCisgICAgICAgICAobWVzc2FnZSAiJXMiIGxpbmUt cHJvbXB0KSkKKyAgICAgICAobGV0KiAoKGhlbHAtc2NyZWVuICxoZWxwLXRleHQpCisgICAgICAg ICAgICAgIDs7IFdlIGJpbmQgb3ZlcnJpZGluZy1sb2NhbC1tYXAgZm9yIHZlcnkgc21hbGwKKyAg ICAgICAgICAgICAgOzsgc2VjdGlvbnMsICpleGNsdWRpbmcqIHdoZXJlIHdlIHN3aXRjaCBidWZm ZXJzCisgICAgICAgICAgICAgIDs7IGFuZCB3aGVyZSB3ZSBleGVjdXRlIHRoZSBjaG9zZW4gaGVs cCBjb21tYW5kLgorICAgICAgICAgICAgICAobG9jYWwtbWFwIChtYWtlLXNwYXJzZS1rZXltYXAp KQorICAgICAgICAgICAgICAobmV3LW1pbm9yLW1vZGUtbWFwLWFsaXN0IG1pbm9yLW1vZGUtbWFw LWFsaXN0KQorICAgICAgICAgICAgICAocHJldi1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorICAg ICAgICAgICAgICBjb25maWcgbmV3LWZyYW1lIGtleSBjaGFyKQorICAgICAgICAgKHdoZW4gKHN0 cmluZy1tYXRjaCAiJVRISVMtS0VZJSIgaGVscC1zY3JlZW4pCisgICAgICAgICAgIChzZXRxIGhl bHAtc2NyZWVuCisgICAgICAgICAgICAgICAgIChyZXBsYWNlLW1hdGNoIChwcm9wZXJ0aXplCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5LWRlc2NyaXB0aW9uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyAodGhpcy1jb21tYW5kLWtleXMp IDAgLTEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtbG9jay1mYWNl ICdoZWxwLWtleS1iaW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFj ZSAnaGVscC1rZXktYmluZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCB0 IGhlbHAtc2NyZWVuKSkpCisgICAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgICAo bGV0ICgobWlub3ItbW9kZS1tYXAtYWxpc3QgbmlsKSkKKyAgICAgICAgICAgICAgIChzZXRjZHIg bG9jYWwtbWFwICxoZWxwZWQtbWFwKQorICAgICAgICAgICAgICAgKGRlZmluZS1rZXkgbG9jYWwt bWFwIFt0XSAndW5kZWZpbmVkKQorICAgICAgICAgICAgICAgOzsgTWFrZSB0aGUgc2Nyb2xsIGJh ciBrZWVwIHdvcmtpbmcgbm9ybWFsbHkuCisgICAgICAgICAgICAgICAoZGVmaW5lLWtleSBsb2Nh bC1tYXAgW3ZlcnRpY2FsLXNjcm9sbC1iYXJdCisgICAgICAgICAgICAgICAgIChsb29rdXAta2V5 IGdsb2JhbC1tYXAgW3ZlcnRpY2FsLXNjcm9sbC1iYXJdKSkKKyAgICAgICAgICAgICAgIChpZiB0 aHJlZS1zdGVwLWhlbHAKKyAgICAgICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAg ICAgICAgIChzZXRxIGtleSAobGV0ICgob3ZlcnJpZGluZy1sb2NhbC1tYXAgbG9jYWwtbWFwKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkLWtleS1zZXF1ZW5jZSBuaWwp KSkKKyAgICAgICAgICAgICAgICAgICAgIDs7IE1ha2UgdGhlIEhFTFAga2V5IHRyYW5zbGF0ZSB0 byBDLWguCisgICAgICAgICAgICAgICAgICAgICAoaWYgKGxvb2t1cC1rZXkgZnVuY3Rpb24ta2V5 LW1hcCBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEga2V5IChsb29rdXAta2V5 IGZ1bmN0aW9uLWtleS1tYXAga2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAoc2V0cSBjaGFy IChhcmVmIGtleSAwKSkpCisgICAgICAgICAgICAgICAgIChzZXRxIGNoYXIgPz8pKQorICAgICAg ICAgICAgICAgKHdoZW4gKG9yIChlcSBjaGFyID8/KSAoZXEgY2hhciBoZWxwLWNoYXIpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKG1lbXEgY2hhciBoZWxwLWV2ZW50LWxpc3QpKQorICAgICAg ICAgICAgICAgICAoc2V0cSBjb25maWcgKGN1cnJlbnQtd2luZG93LWNvbmZpZ3VyYXRpb24pKQor ICAgICAgICAgICAgICAgICAocG9wLXRvLWJ1ZmZlciAiICpNZXRhaGVscCoiIG5pbCB0KQorICAg ICAgICAgICAgICAgICAoYW5kIChmYm91bmRwICdtYWtlLWZyYW1lKQorICAgICAgICAgICAgICAg ICAgICAgIChub3QgKGVxICh3aW5kb3ctZnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJldi1mcmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbmV3LWZyYW1l ICh3aW5kb3ctZnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnIG5pbCkp CisgICAgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQorICAgICAgICAg ICAgICAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCisgICAgICAgICAgICAgICAgICAg KGVyYXNlLWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IChzdWJzdGl0dXRlLWNv bW1hbmQta2V5cyBoZWxwLXNjcmVlbikpKQorICAgICAgICAgICAgICAgICAobGV0ICgobWlub3It bW9kZS1tYXAtYWxpc3QgbmV3LW1pbm9yLW1vZGUtbWFwLWFsaXN0KSkKKyAgICAgICAgICAgICAg ICAgICAoaGVscC1tb2RlKQorICAgICAgICAgICAgICAgICAgIChzZXRxIG5ldy1taW5vci1tb2Rl LW1hcC1hbGlzdCBtaW5vci1tb2RlLW1hcC1hbGlzdCkpCisgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAgICh3aGlsZSAob3IgKG1lbXEgY2hh ciAoYXBwZW5kIGhlbHAtZXZlbnQtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29ucyBoZWxwLWNoYXIgJyg/PyA/XEMtdiA/XHMgP1wxNzcgZGVs ZXRlIGJhY2tzcGFjZSB2ZXJ0aWNhbC1zY3JvbGwtYmFyID9cTS12KSkpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlcSAoY2FyLXNhZmUgY2hhcikgJ3N3aXRjaC1mcmFtZSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwga2V5ICJcTS12IikpCisgICAgICAgICAgICAg ICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAoY29uZAor ICAgICAgICAgICAgICAgICAgICAgICAgKChlcSAoY2FyLXNhZmUgY2hhcikgJ3N3aXRjaC1mcmFt ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlLXN3aXRjaC1mcmFtZSBjaGFyKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICgobWVtcSBjaGFyICcoP1xDLXYgP1xzKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsLXVwKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICgob3IgKG1lbXEgY2hhciAnKD9cMTc3ID9cTS12IGRlbGV0ZSBiYWNrc3BhY2UpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwga2V5ICJcTS12IikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKHNjcm9sbC1kb3duKSkpCisgICAgICAgICAgICAgICAgICAgICAoZXJyb3Ig bmlsKSkKKyAgICAgICAgICAgICAgICAgICAobGV0ICgoY3Vyc29yLWluLWVjaG8tYXJlYSB0KQor ICAgICAgICAgICAgICAgICAgICAgICAgIChvdmVycmlkaW5nLWxvY2FsLW1hcCBsb2NhbC1tYXAp KQorICAgICAgICAgICAgICAgICAgICAgKHNldHEga2V5IChyZWFkLWtleS1zZXF1ZW5jZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJUeXBlIG9uZSBvZiB0aGUgb3B0 aW9ucyBsaXN0ZWQlczogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChpZiAocG9zLXZpc2libGUtaW4td2luZG93LXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwb2ludC1tYXgpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiIiAiLCBvciBTUEFDRSBvciBERUwgdG8gc2Nyb2xsIikpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAoYXJlZiBrZXkgMCkpKQorCisgICAgICAg ICAgICAgICAgICAgOzsgSWYgdGhpcyBpcyBhIHNjcm9sbCBiYXIgY29tbWFuZCwganVzdCBydW4g aXQuCisgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIGNoYXIgJ3ZlcnRpY2FsLXNjcm9sbC1i YXIpCisgICAgICAgICAgICAgICAgICAgICAoY29tbWFuZC1leGVjdXRlIChsb29rdXAta2V5IGxv Y2FsLW1hcCBrZXkpIG5pbCBrZXkpKSkpCisgICAgICAgICAgICAgICA7OyBXZSBkb24ndCBuZWVk IHRoZSBwcm9tcHQgYW55IG1vcmUuCisgICAgICAgICAgICAgICAobWVzc2FnZSAiIikKKyAgICAg ICAgICAgICAgIDs7IE1vdXNlIGNsaWNrcyBhcmUgbm90IHBhcnQgb2YgdGhlIGhlbHAgZmVhdHVy ZSwKKyAgICAgICAgICAgICAgIDs7IHNvIHJlZXhlY3V0ZSB0aGVtIGluIHRoZSBzdGFuZGFyZCBl bnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgIChpZiAobGlzdHAgY2hhcikKKyAgICAgICAgICAg ICAgICAgICAoc2V0cSB1bnJlYWQtY29tbWFuZC1ldmVudHMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoY29ucyBjaGFyIHVucmVhZC1jb21tYW5kLWV2ZW50cykKKyAgICAgICAgICAgICAgICAg ICAgICAgICBjb25maWcgbmlsKQorICAgICAgICAgICAgICAgICAobGV0ICgoZGVmbiAobG9va3Vw LWtleSBsb2NhbC1tYXAga2V5KSkpCisgICAgICAgICAgICAgICAgICAgKGlmIGRlZm4KKyAgICAg ICAgICAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g Y29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LXdpbmRvdy1jb25maWd1cmF0 aW9uIGNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGNvbmZpZyBuaWwp KQorICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRlbXBvcmFyaWx5IHJlYmluZCBgbWlub3It bW9kZS1tYXAtYWxpc3QnCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdG8gYG5ldy1taW5v ci1tb2RlLW1hcC1hbGlzdCcgKEJ1ZyMxMDQ1NCkuCisgICAgICAgICAgICAgICAgICAgICAgICAg KGxldCAoKG1pbm9yLW1vZGUtbWFwLWFsaXN0IG5ldy1taW5vci1tb2RlLW1hcC1hbGlzdCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBgZGVmbicgbXVzdCBtYWtlIHN1cmUgdGhhdCBp dHMgZnJhbWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNlbGVjdGVkLCBzbyB3 ZSB3b24ndCBpY29uaWZ5IGl0IGJlbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNh bGwtaW50ZXJhY3RpdmVseSBkZWZuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiBu ZXctZnJhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IERvIG5vdCBpY29uaWZ5IHRo ZSBzZWxlY3RlZCBmcmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVx IG5ldy1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWNvbmlmeS1mcmFtZSBuZXctZnJhbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgbmV3LWZyYW1lIG5pbCkpKQorICAgICAgICAgICAgICAgICAgICAgKGRpbmcpKSkpKQor ICAgICAgICAgICAod2hlbiBjb25maWcKKyAgICAgICAgICAgICAoc2V0LXdpbmRvdy1jb25maWd1 cmF0aW9uIGNvbmZpZykpCisgICAgICAgICAgICh3aGVuIG5ldy1mcmFtZQorICAgICAgICAgICAg IChpY29uaWZ5LWZyYW1lIG5ldy1mcmFtZSkpCisgICAgICAgICAgIChzZXRxIG1pbm9yLW1vZGUt bWFwLWFsaXN0IG5ldy1taW5vci1tb2RlLW1hcC1hbGlzdCkpKSkpKQogCiAocHJvdmlkZSAnaGVs cC1tYWNybykKIApkaWZmIC0tZ2l0IGEvbGlzcC9oZWxwLmVsIGIvbGlzcC9oZWxwLmVsCmluZGV4 IDA4NGU5NDE1NDkuLjAyNDdmMDg3MDYgMTAwNjQ0Ci0tLSBhL2xpc3AvaGVscC5lbAorKysgYi9s aXNwL2hlbHAuZWwKQEAgLTEwNCw4ICsxMDQsOCBAQCBoZWxwLW1hcAogICAgIChkZWZpbmUta2V5 IG1hcCAiUiIgJ2luZm8tZGlzcGxheS1tYW51YWwpCiAgICAgKGRlZmluZS1rZXkgbWFwICJzIiAn ZGVzY3JpYmUtc3ludGF4KQogICAgIChkZWZpbmUta2V5IG1hcCAidCIgJ2hlbHAtd2l0aC10dXRv cmlhbCkKLSAgICAoZGVmaW5lLWtleSBtYXAgInciICd3aGVyZS1pcykKICAgICAoZGVmaW5lLWtl eSBtYXAgInYiICdkZXNjcmliZS12YXJpYWJsZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgInciICd3 aGVyZS1pcykKICAgICAoZGVmaW5lLWtleSBtYXAgInEiICdoZWxwLXF1aXQpCiAgICAgbWFwKQog ICAiS2V5bWFwIGZvciBjaGFyYWN0ZXJzIGZvbGxvd2luZyB0aGUgSGVscCBrZXkuIikKQEAgLTE5 OSw1MiArMTk5LDUyIEBAICdoZWxwLWZvci1oZWxwCiAgICJZb3UgaGF2ZSB0eXBlZCAlVEhJUy1L RVklLCB0aGUgaGVscCBjaGFyYWN0ZXIuICBUeXBlIGEgSGVscCBvcHRpb246CiBcKFVzZSBTUEMg b3IgREVMIHRvIHNjcm9sbCB0aHJvdWdoIHRoaXMgdGV4dC4gIFR5cGUgXFw8aGVscC1tYXA+XFxb aGVscC1xdWl0XSB0byBleGl0IHRoZSBIZWxwIGNvbW1hbmQuKQogCi1hIFBBVFRFUk4gICBTaG93 IGNvbW1hbmRzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgUEFUVEVSTiAoYSBsaXN0IG9mIHdvcmRz CitcXFthcHJvcG9zLWNvbW1hbmRdIFBBVFRFUk4gICBTaG93IGNvbW1hbmRzIHdob3NlIG5hbWUg bWF0Y2hlcyB0aGUgUEFUVEVSTiAoYSBsaXN0IG9mIHdvcmRzCiAgICAgICAgICAgICAgIG9yIGEg cmVnZXhwKS4gIFNlZSBhbHNvIHRoZSBgYXByb3BvcycgY29tbWFuZC4KLWIgICAgICAgICAgIERp c3BsYXkgYWxsIGtleSBiaW5kaW5ncy4KLWMgS0VZUyAgICAgIERpc3BsYXkgdGhlIGNvbW1hbmQg bmFtZSBydW4gYnkgdGhlIGdpdmVuIGtleSBzZXF1ZW5jZS4KLUMgQ09ESU5HICAgIERlc2NyaWJl IHRoZSBnaXZlbiBjb2Rpbmcgc3lzdGVtLCBvciBSRVQgZm9yIGN1cnJlbnQgb25lcy4KLWQgUEFU VEVSTiAgIFNob3cgYSBsaXN0IG9mIGZ1bmN0aW9ucywgdmFyaWFibGVzLCBhbmQgb3RoZXIgaXRl bXMgd2hvc2UKK1xcW2Rlc2NyaWJlLWJpbmRpbmdzXSAgICAgICAgICAgRGlzcGxheSBhbGwga2V5 IGJpbmRpbmdzLgorXFxbZGVzY3JpYmUta2V5LWJyaWVmbHldIEtFWVMgICAgICBEaXNwbGF5IHRo ZSBjb21tYW5kIG5hbWUgcnVuIGJ5IHRoZSBnaXZlbiBrZXkgc2VxdWVuY2UuCitcXFtkZXNjcmli ZS1jb2Rpbmctc3lzdGVtXSBDT0RJTkcgICAgRGVzY3JpYmUgdGhlIGdpdmVuIGNvZGluZyBzeXN0 ZW0sIG9yIFJFVCBmb3IgY3VycmVudCBvbmVzLgorXFxbYXByb3Bvcy1kb2N1bWVudGF0aW9uXSBQ QVRURVJOICAgU2hvdyBhIGxpc3Qgb2YgZnVuY3Rpb25zLCB2YXJpYWJsZXMsIGFuZCBvdGhlciBp dGVtcyB3aG9zZQogICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIG1hdGNoZXMgdGhlIFBBVFRF Uk4gKGEgbGlzdCBvZiB3b3JkcyBvciBhIHJlZ2V4cCkuCi1lICAgICAgICAgICBHbyB0byB0aGUg Kk1lc3NhZ2VzKiBidWZmZXIgd2hpY2ggbG9ncyBlY2hvLWFyZWEgbWVzc2FnZXMuCi1mIEZVTkNU SU9OICBEaXNwbGF5IGRvY3VtZW50YXRpb24gZm9yIHRoZSBnaXZlbiBmdW5jdGlvbi4KLUYgQ09N TUFORCAgIFNob3cgdGhlIEVtYWNzIG1hbnVhbCdzIHNlY3Rpb24gdGhhdCBkZXNjcmliZXMgdGhl IGNvbW1hbmQuCi1nICAgICAgICAgICBEaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBHTlUg cHJvamVjdC4KLWggICAgICAgICAgIERpc3BsYXkgdGhlIEhFTExPIGZpbGUgd2hpY2ggaWxsdXN0 cmF0ZXMgdmFyaW91cyBzY3JpcHRzLgotaSAgICAgICAgICAgU3RhcnQgdGhlIEluZm8gZG9jdW1l bnRhdGlvbiByZWFkZXI6IHJlYWQgaW5jbHVkZWQgbWFudWFscy4KLUkgTUVUSE9EICAgIERlc2Ny aWJlIGEgc3BlY2lmaWMgaW5wdXQgbWV0aG9kLCBvciBSRVQgZm9yIGN1cnJlbnQuCi1rIEtFWVMg ICAgICBEaXNwbGF5IHRoZSBmdWxsIGRvY3VtZW50YXRpb24gZm9yIHRoZSBrZXkgc2VxdWVuY2Uu Ci1LIEtFWVMgICAgICBTaG93IHRoZSBFbWFjcyBtYW51YWwncyBzZWN0aW9uIGZvciB0aGUgY29t bWFuZCBib3VuZCB0byBLRVlTLgotbCAgICAgICAgICAgU2hvdyBsYXN0IDMwMCBpbnB1dCBrZXlz dHJva2VzIChsb3NzYWdlKS4KLUwgTEFORy1FTlYgIERlc2NyaWJlcyBhIHNwZWNpZmljIGxhbmd1 YWdlIGVudmlyb25tZW50LCBvciBSRVQgZm9yIGN1cnJlbnQuCi1tICAgICAgICAgICBEaXNwbGF5 IGRvY3VtZW50YXRpb24gb2YgY3VycmVudCBtaW5vciBtb2RlcyBhbmQgY3VycmVudCBtYWpvciBt b2RlLAotICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlaXIgc3BlY2lhbCBjb21tYW5kcy4KLW4g ICAgICAgICAgIERpc3BsYXkgbmV3cyBvZiByZWNlbnQgRW1hY3MgY2hhbmdlcy4KLW8gU1lNQk9M ICAgIERpc3BsYXkgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHZhcmlhYmxlJ3MgZG9jdW1lbnRhdGlv biBhbmQgdmFsdWUuCi1wIFRPUElDICAgICBGaW5kIHBhY2thZ2VzIG1hdGNoaW5nIGEgZ2l2ZW4g dG9waWMga2V5d29yZC4KLVAgUEFDS0FHRSAgIERlc2NyaWJlIHRoZSBnaXZlbiBFbWFjcyBMaXNw IHBhY2thZ2UuCi1yICAgICAgICAgICBEaXNwbGF5IHRoZSBFbWFjcyBtYW51YWwgaW4gSW5mbyBt b2RlLgotUiAgICAgICAgICAgUHJvbXB0IGZvciBhIG1hbnVhbCBhbmQgdGhlbiBkaXNwbGF5IGl0 IGluIEluZm8gbW9kZS4KLXMgICAgICAgICAgIERpc3BsYXkgY29udGVudHMgb2YgY3VycmVudCBz eW50YXggdGFibGUsIHBsdXMgZXhwbGFuYXRpb25zLgotUyBTWU1CT0wgICAgU2hvdyB0aGUgc2Vj dGlvbiBmb3IgdGhlIGdpdmVuIHN5bWJvbCBpbiB0aGUgSW5mbyBtYW51YWwKK1xcW3ZpZXctZWNo by1hcmVhLW1lc3NhZ2VzXSAgICAgICAgICAgR28gdG8gdGhlICpNZXNzYWdlcyogYnVmZmVyIHdo aWNoIGxvZ3MgZWNoby1hcmVhIG1lc3NhZ2VzLgorXFxbZGVzY3JpYmUtZnVuY3Rpb25dIEZVTkNU SU9OICBEaXNwbGF5IGRvY3VtZW50YXRpb24gZm9yIHRoZSBnaXZlbiBmdW5jdGlvbi4KK1xcW0lu Zm8tZ290by1lbWFjcy1jb21tYW5kLW5vZGVdIENPTU1BTkQgICBTaG93IHRoZSBFbWFjcyBtYW51 YWwncyBzZWN0aW9uIHRoYXQgZGVzY3JpYmVzIHRoZSBjb21tYW5kLgorXFxbZGVzY3JpYmUtZ251 LXByb2plY3RdICAgICAgICAgICBEaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBHTlUgcHJv amVjdC4KK1xcW3ZpZXctaGVsbG8tZmlsZV0gICAgICAgICAgIERpc3BsYXkgdGhlIEhFTExPIGZp bGUgd2hpY2ggaWxsdXN0cmF0ZXMgdmFyaW91cyBzY3JpcHRzLgorXFxbaW5mb10gICAgICAgICAg IFN0YXJ0IHRoZSBJbmZvIGRvY3VtZW50YXRpb24gcmVhZGVyOiByZWFkIGluY2x1ZGVkIG1hbnVh bHMuCitcXFtkZXNjcmliZS1pbnB1dC1tZXRob2RdIE1FVEhPRCAgICBEZXNjcmliZSBhIHNwZWNp ZmljIGlucHV0IG1ldGhvZCwgb3IgUkVUIGZvciBjdXJyZW50LgorXFxbZGVzY3JpYmUta2V5XSBL RVlTICAgICAgRGlzcGxheSB0aGUgZnVsbCBkb2N1bWVudGF0aW9uIGZvciB0aGUga2V5IHNlcXVl bmNlLgorXFxbSW5mby1nb3RvLWVtYWNzLWtleS1jb21tYW5kLW5vZGVdIEtFWVMgICAgICBTaG93 IHRoZSBFbWFjcyBtYW51YWwncyBzZWN0aW9uIGZvciB0aGUgY29tbWFuZCBib3VuZCB0byBLRVlT LgorXFxbdmlldy1sb3NzYWdlXSAgICAgICAgICAgU2hvdyBsYXN0IDMwMCBpbnB1dCBrZXlzdHJv a2VzIChsb3NzYWdlKS4KK1xcW2Rlc2NyaWJlLWxhbmd1YWdlLWVudmlyb25tZW50XSBMQU5HLUVO ViAgRGVzY3JpYmVzIGEgc3BlY2lmaWMgbGFuZ3VhZ2UgZW52aXJvbm1lbnQsIG9yIFJFVCBmb3Ig Y3VycmVudC4KK1xcW2Rlc2NyaWJlLW1vZGVdICAgICAgICAgICBEaXNwbGF5IGRvY3VtZW50YXRp b24gb2YgY3VycmVudCBtaW5vciBtb2RlcyBhbmQgY3VycmVudCBtYWpvciBtb2RlLAorICAgICAg ICAgICAgIGluY2x1ZGluZyB0aGVpciBzcGVjaWFsIGNvbW1hbmRzLgorXFxbdmlldy1lbWFjcy1u ZXdzXSAgICAgICAgICAgRGlzcGxheSBuZXdzIG9mIHJlY2VudCBFbWFjcyBjaGFuZ2VzLgorXFxb ZGVzY3JpYmUtc3ltYm9sXSBTWU1CT0wgICAgRGlzcGxheSB0aGUgZ2l2ZW4gZnVuY3Rpb24gb3Ig dmFyaWFibGUncyBkb2N1bWVudGF0aW9uIGFuZCB2YWx1ZS4KK1xcW2ZpbmRlci1ieS1rZXl3b3Jk XSBUT1BJQyAgICAgRmluZCBwYWNrYWdlcyBtYXRjaGluZyBhIGdpdmVuIHRvcGljIGtleXdvcmQu CitcXFtkZXNjcmliZS1wYWNrYWdlXSBQQUNLQUdFICAgRGVzY3JpYmUgdGhlIGdpdmVuIEVtYWNz IExpc3AgcGFja2FnZS4KK1xcW2luZm8tZW1hY3MtbWFudWFsXSAgICAgICAgICAgRGlzcGxheSB0 aGUgRW1hY3MgbWFudWFsIGluIEluZm8gbW9kZS4KK1xcW2luZm8tZGlzcGxheS1tYW51YWxdICAg ICAgICAgICBQcm9tcHQgZm9yIGEgbWFudWFsIGFuZCB0aGVuIGRpc3BsYXkgaXQgaW4gSW5mbyBt b2RlLgorXFxbZGVzY3JpYmUtc3ludGF4XSAgICAgICAgICAgRGlzcGxheSBjb250ZW50cyBvZiBj dXJyZW50IHN5bnRheCB0YWJsZSwgcGx1cyBleHBsYW5hdGlvbnMuCitcXFtpbmZvLWxvb2t1cC1z eW1ib2xdIFNZTUJPTCAgICBTaG93IHRoZSBzZWN0aW9uIGZvciB0aGUgZ2l2ZW4gc3ltYm9sIGlu IHRoZSBJbmZvIG1hbnVhbAogICAgICAgICAgICAgICBmb3IgdGhlIHByb2dyYW1taW5nIGxhbmd1 YWdlIHVzZWQgaW4gdGhpcyBidWZmZXIuCi10ICAgICAgICAgICBTdGFydCB0aGUgRW1hY3MgbGVh cm4tYnktZG9pbmcgdHV0b3JpYWwuCi12IFZBUklBQkxFICBEaXNwbGF5IHRoZSBnaXZlbiB2YXJp YWJsZSdzIGRvY3VtZW50YXRpb24gYW5kIHZhbHVlLgotdyBDT01NQU5EICAgRGlzcGxheSB3aGlj aCBrZXlzdHJva2VzIGludm9rZSB0aGUgZ2l2ZW4gY29tbWFuZCAod2hlcmUtaXMpLgotLiAgICAg ICAgICAgRGlzcGxheSBhbnkgYXZhaWxhYmxlIGxvY2FsIGhlbHAgYXQgcG9pbnQgaW4gdGhlIGVj aG8gYXJlYS4KLQotQy1hICAgICAgICAgSW5mb3JtYXRpb24gYWJvdXQgRW1hY3MuCi1DLWMgICAg ICAgICBFbWFjcyBjb3B5aW5nIHBlcm1pc3Npb24gKEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl KS4KLUMtZCAgICAgICAgIEluc3RydWN0aW9ucyBmb3IgZGVidWdnaW5nIEdOVSBFbWFjcy4KLUMt ZSAgICAgICAgIEV4dGVybmFsIHBhY2thZ2VzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBFbWFjcy4K LUMtZiAgICAgICAgIEVtYWNzIEZBUS4KK1xcW2hlbHAtd2l0aC10dXRvcmlhbF0gICAgICAgICAg IFN0YXJ0IHRoZSBFbWFjcyBsZWFybi1ieS1kb2luZyB0dXRvcmlhbC4KK1xcW2Rlc2NyaWJlLXZh cmlhYmxlXSBWQVJJQUJMRSAgRGlzcGxheSB0aGUgZ2l2ZW4gdmFyaWFibGUncyBkb2N1bWVudGF0 aW9uIGFuZCB2YWx1ZS4KK1xcW3doZXJlLWlzXSBDT01NQU5EICAgRGlzcGxheSB3aGljaCBrZXlz dHJva2VzIGludm9rZSB0aGUgZ2l2ZW4gY29tbWFuZCAod2hlcmUtaXMpLgorXFxbZGlzcGxheS1s b2NhbC1oZWxwXSAgICAgICAgICAgRGlzcGxheSBhbnkgYXZhaWxhYmxlIGxvY2FsIGhlbHAgYXQg cG9pbnQgaW4gdGhlIGVjaG8gYXJlYS4KKworXFxbYWJvdXQtZW1hY3NdICAgICAgICAgSW5mb3Jt YXRpb24gYWJvdXQgRW1hY3MuCitcXFtkZXNjcmliZS1jb3B5aW5nXSAgICAgICAgIEVtYWNzIGNv cHlpbmcgcGVybWlzc2lvbiAoR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpLgorXFxbdmlldy1l bWFjcy1kZWJ1Z2dpbmddICAgICAgICAgSW5zdHJ1Y3Rpb25zIGZvciBkZWJ1Z2dpbmcgR05VIEVt YWNzLgorXFxbdmlldy1leHRlcm5hbC1wYWNrYWdlc10gICAgICAgICBFeHRlcm5hbCBwYWNrYWdl cyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgRW1hY3MuCitcXFt2aWV3LWVtYWNzLUZBUV0gICAgICAg ICBFbWFjcyBGQVEuCiBDLW0gICAgICAgICBIb3cgdG8gb3JkZXIgcHJpbnRlZCBFbWFjcyBtYW51 YWxzLgogQy1uICAgICAgICAgTmV3cyBvZiByZWNlbnQgRW1hY3MgY2hhbmdlcy4KLUMtbyAgICAg ICAgIEVtYWNzIG9yZGVyaW5nIGFuZCBkaXN0cmlidXRpb24gaW5mb3JtYXRpb24uCi1DLXAgICAg ICAgICBJbmZvIGFib3V0IGtub3duIEVtYWNzIHByb2JsZW1zLgotQy1zICAgICAgICAgU2VhcmNo IGZvcndhcmQgXCJoZWxwIHdpbmRvd1wiLgotQy10ICAgICAgICAgRW1hY3MgVE9ETyBsaXN0Lgot Qy13ICAgICAgICAgSW5mb3JtYXRpb24gb24gYWJzZW5jZSBvZiB3YXJyYW50eSBmb3IgR05VIEVt YWNzLiIKK1xcW2Rlc2NyaWJlLWRpc3RyaWJ1dGlvbl0gICAgICAgICBFbWFjcyBvcmRlcmluZyBh bmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLgorXFxbdmlldy1lbWFjcy1wcm9ibGVtc10gICAg ICAgICBJbmZvIGFib3V0IGtub3duIEVtYWNzIHByb2JsZW1zLgorXFxbc2VhcmNoLWZvcndhcmQt aGVscC1mb3ItaGVscF0gICAgICAgICBTZWFyY2ggZm9yd2FyZCBcImhlbHAgd2luZG93XCIuCitc XFt2aWV3LWVtYWNzLXRvZG9dICAgICAgICAgRW1hY3MgVE9ETyBsaXN0LgorXFxbZGVzY3JpYmUt bm8td2FycmFudHldICAgICAgICAgSW5mb3JtYXRpb24gb24gYWJzZW5jZSBvZiB3YXJyYW50eSBm b3IgR05VIEVtYWNzLiIKICAgaGVscC1tYXApCiAKIAwKQEAgLTQ5Miw2ICs0OTIsMTUgQEAgdmll dy1sb3NzYWdlCiAMCiA7OyBLZXkgYmluZGluZ3MKIAorKGRlZnVuIGhlbHAtLWtleS1kZXNjcmlw dGlvbi1mb250aWZpZWQgKGtleXMgJm9wdGlvbmFsIHByZWZpeCkKKyAgIkxpa2UgYGtleS1kZXNj cmlwdGlvbicgYnV0IGFkZCBmYWNlIGZvciBcIipIZWxwKlwiIGJ1ZmZlcnMuIgorICA7OyBXZSBh ZGQgYm90aCB0aGUgYGZvbnQtbG9jay1mYWNlJyBhbmQgYGZhY2UnIHByb3BlcnRpZXMgaGVyZSwg YXMgdGhpcworICA7OyBzZWVtcyB0byBiZSB0aGUgb25seSB3YXkgdG8gZ2V0IHRoaXMgdG8gd29y ayByZWxpYWJseSBpbiBhbnkKKyAgOzsgYnVmZmVyLgorICAocHJvcGVydGl6ZSAoa2V5LWRlc2Ny aXB0aW9uIGtleXMgcHJlZml4KQorICAgICAgICAgICAgICAnZm9udC1sb2NrLWZhY2UgJ2hlbHAt a2V5LWJpbmRpbmcKKyAgICAgICAgICAgICAgJ2ZhY2UgJ2hlbHAta2V5LWJpbmRpbmcpKQorCiAo ZGVmdW4gZGVzY3JpYmUtYmluZGluZ3MgKCZvcHRpb25hbCBwcmVmaXggYnVmZmVyKQogICAiRGlz cGxheSBhIGJ1ZmZlciBzaG93aW5nIGEgbGlzdCBvZiBhbGwgZGVmaW5lZCBrZXlzLCBhbmQgdGhl aXIgZGVmaW5pdGlvbnMuCiBUaGUga2V5cyBhcmUgZGlzcGxheWVkIGluIG9yZGVyIG9mIHByZWNl ZGVuY2UuCkBAIC01MTEsNyArNTIwLDYgQEAgZGVzY3JpYmUtYmluZGluZ3MKICAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciAoaGVscC1idWZmZXIpCiAgICAgICAoZGVzY3JpYmUtYnVmZmVyLWJpbmRp bmdzIGJ1ZmZlciBwcmVmaXgpKSkpCiAKLTs7IFRoaXMgZnVuY3Rpb24gdXNlZCB0byBiZSBpbiBr ZXltYXAuYy4KIChkZWZ1biBkZXNjcmliZS1iaW5kaW5ncy1pbnRlcm5hbCAoJm9wdGlvbmFsIG1l bnVzIHByZWZpeCkKICAgIlNob3cgYSBsaXN0IG9mIGFsbCBkZWZpbmVkIGtleXMsIGFuZCB0aGVp ciBkZWZpbml0aW9ucy4KIFdlIHB1dCB0aGF0IGxpc3QgaW4gYSBidWZmZXIsIGFuZCBkaXNwbGF5 IHRoZSBidWZmZXIuCkBAIC01NTksNyArNTY3LDggQEAgd2hlcmUtaXMKICAgICAgIChsZXQqICgo cmVtYXBwZWQgKGNvbW1hbmQtcmVtYXBwaW5nIHN5bWJvbCkpCiAJICAgICAoa2V5cyAod2hlcmUt aXMtaW50ZXJuYWwKIAkJICAgIHN5bWJvbCBvdmVycmlkaW5nLWxvY2FsLW1hcCBuaWwgbmlsIHJl bWFwcGVkKSkKLQkgICAgIChrZXlzIChtYXBjb25jYXQgJ2tleS1kZXNjcmlwdGlvbiBrZXlzICIs ICIpKQorICAgICAgICAgICAgIChrZXlzIChtYXBjb25jYXQgIydoZWxwLS1rZXktZGVzY3JpcHRp b24tZm9udGlmaWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzICIsICIpKQog CSAgICAgc3RyaW5nKQogCShzZXRxIHN0cmluZwogCSAgICAgIChpZiBpbnNlcnQKQEAgLTU4Nywx MSArNTk2LDExIEBAIHdoZXJlLWlzCiAgIG5pbCkKIAogKGRlZnVuIGhlbHAta2V5LWRlc2NyaXB0 aW9uIChrZXkgdW50cmFuc2xhdGVkKQotICAobGV0ICgoc3RyaW5nIChrZXktZGVzY3JpcHRpb24g a2V5KSkpCisgIChsZXQgKChzdHJpbmcgKGhlbHAtLWtleS1kZXNjcmlwdGlvbi1mb250aWZpZWQg a2V5KSkpCiAgICAgKGlmIChvciAobm90IHVudHJhbnNsYXRlZCkKIAkgICAgKGFuZCAoZXEgKGFy ZWYgdW50cmFuc2xhdGVkIDApID9cZSkgKG5vdCAoZXEgKGFyZWYga2V5IDApID9cZSkpKSkKIAlz dHJpbmcKLSAgICAgIChsZXQgKChvdGhlcnN0cmluZyAoa2V5LWRlc2NyaXB0aW9uIHVudHJhbnNs YXRlZCkpKQorICAgICAgKGxldCAoKG90aGVyc3RyaW5nIChoZWxwLS1rZXktZGVzY3JpcHRpb24t Zm9udGlmaWVkIHVudHJhbnNsYXRlZCkpKQogCShpZiAoZXF1YWwgc3RyaW5nIG90aGVyc3RyaW5n KQogCSAgICBzdHJpbmcKIAkgIChmb3JtYXQgIiVzICh0cmFuc2xhdGVkIGZyb20gJXMpIiBzdHJp bmcgb3RoZXJzdHJpbmcpKSkpKSkKQEAgLTEwNTMsMTIgKzEwNjIsMTQgQEAgc3Vic3RpdHV0ZS1j b21tYW5kLWtleXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZXJlLWlzLWlu dGVybmFsIGZ1biBrZXltYXAgdCkpKSkKICAgICAgICAgICAgICAgICAgIChpZiAobm90IGtleSkK ICAgICAgICAgICAgICAgICAgICAgICA7OyBGdW5jdGlvbiBpcyBub3Qgb24gYW55IGtleS4KLSAg ICAgICAgICAgICAgICAgICAgICAocHJvZ24gKGluc2VydCAiTS14ICIpCisgICAgICAgICAgICAg ICAgICAgICAgKHByb2duIChpbnNlcnQgKHByb3BlcnRpemUgIk0teCAiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtbG9jay1mYWNlICdoZWxw LWtleS1iaW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2ZhY2UgJ2hlbHAta2V5LWJpbmRpbmcpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyICgrIGVuZC1wb2ludCAzKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGRlbGV0ZS1jaGFyIDEpKQogICAgICAgICAgICAgICAgICAgICA7OyBGdW5jdGlvbiBp cyBvbiBhIGtleS4KICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1jaGFyICgtIGVuZC1wb2lu dCAocG9pbnQpKSkKLSAgICAgICAgICAgICAgICAgICAgKGluc2VydCAoa2V5LWRlc2NyaXB0aW9u IGtleSkpKSkpCisgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKGhlbHAtLWtleS1kZXNjcmlw dGlvbi1mb250aWZpZWQga2V5KSkpKSkKICAgICAgICAgICAgICAgIDs7IDFELiBce2Zvb30gaXMg cmVwbGFjZWQgd2l0aCBhIHN1bW1hcnkgb2YgdGhlIGtleW1hcAogICAgICAgICAgICAgICAgOzsg ICAgICAgICAgICAoc3ltYm9sLXZhbHVlIGZvbykuCiAgICAgICAgICAgICAgICA7OyAgICAgXDxm b28+IGp1c3Qgc2V0cyB0aGUga2V5bWFwIHVzZWQgZm9yIFxbY21kXS4KQEAgLTExNzIsNyArMTE4 Myw3IEBAIGRlc2NyaWJlLW1hcC10cmVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25j YXQgdGl0bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcHJlZml4CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgIiBTdGFydGluZyBX aXRoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5 LWRlc2NyaXB0aW9uIHByZWZpeCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChoZWxwLS1rZXktZGVzY3JpcHRpb24tZm9udGlmaWVkIHByZWZpeCkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6XG4iKSkKICAgICAgICAgICAgICAg ICAgICAgICAia2V5ICAgICAgICAgICAgIGJpbmRpbmdcbiIKICAgICAgICAgICAgICAgICAgICAg ICAiLS0tICAgICAgICAgICAgIC0tLS0tLS1cbiIpKSkKQEAgLTEyNDQsNyArMTI1NSw4IEBAIGhl bHAtLWRlc2NyaWJlLXRyYW5zbGF0aW9uCiAgIChjb25kICgoc3ltYm9scCBkZWZpbml0aW9uKQog ICAgICAgICAgKGluc2VydCAoc3ltYm9sLW5hbWUgZGVmaW5pdGlvbikgIlxuIikpCiAgICAgICAg ICgob3IgKHN0cmluZ3AgZGVmaW5pdGlvbikgKHZlY3RvcnAgZGVmaW5pdGlvbikpCi0gICAgICAg ICAoaW5zZXJ0IChrZXktZGVzY3JpcHRpb24gZGVmaW5pdGlvbiBuaWwpICJcbiIpKQorICAgICAg ICAgKGluc2VydCAoaGVscC0ta2V5LWRlc2NyaXB0aW9uLWZvbnRpZmllZCBkZWZpbml0aW9uIG5p bCkKKyAgICAgICAgICAgICAgICAgIlxuIikpCiAgICAgICAgICgoa2V5bWFwcCBkZWZpbml0aW9u KQogICAgICAgICAgKGluc2VydCAiUHJlZml4IENvbW1hbmRcbiIpKQogICAgICAgICAodCAoaW5z ZXJ0ICI/P1xuIikpKSkKQEAgLTEzNTEsOSArMTM2Myw5IEBAIGRlc2NyaWJlLW1hcAogICAgICAg ICAgICAgICAoc2V0cSBlbmQgKGNhYXIgdmVjdCkpKSkKICAgICAgICAgICA7OyBOb3cgU1RBUlQg Li4gRU5EIGlzIHRoZSByYW5nZSB0byBkZXNjcmliZSBuZXh0LgogICAgICAgICAgIDs7IEluc2Vy dCB0aGUgc3RyaW5nIHRvIGRlc2NyaWJlIHRoZSBldmVudCBTVEFSVC4KLSAgICAgICAgICAoaW5z ZXJ0IChrZXktZGVzY3JpcHRpb24gKHZlY3RvciBzdGFydCkgcHJlZml4KSkKKyAgICAgICAgICAo aW5zZXJ0IChoZWxwLS1rZXktZGVzY3JpcHRpb24tZm9udGlmaWVkICh2ZWN0b3Igc3RhcnQpIHBy ZWZpeCkpCiAgICAgICAgICAgKHdoZW4gKG5vdCAoZXEgc3RhcnQgZW5kKSkKLSAgICAgICAgICAg IChpbnNlcnQgIiAuLiAiIChrZXktZGVzY3JpcHRpb24gKHZlY3RvciBlbmQpIHByZWZpeCkpKQor ICAgICAgICAgICAgKGluc2VydCAiIC4uICIgKGhlbHAtLWtleS1kZXNjcmlwdGlvbi1mb250aWZp ZWQgKHZlY3RvciBlbmQpIHByZWZpeCkpKQogICAgICAgICAgIDs7IFByaW50IGEgZGVzY3JpcHRp b24gb2YgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBjaGFyYWN0ZXIuCiAgICAgICAgICAgOzsgQ2Fs bGVkIGZ1bmN0aW9uIHdpbGwgdGFrZSBjYXJlIG9mIHNwYWNpbmcgb3V0IGZhciBlbm91Z2gKICAg ICAgICAgICA7OyBmb3IgYWxpZ25tZW50IHB1cnBvc2VzLgpAQCAtMTQyMCw3ICsxNDMyLDcgQEAg ZGVzY3JpYmUtbWFwCiA7OyAgICAgICAgICAgICAoc2V0cSBmaXJzdCBuaWwpKQogOzsgICAgICAg ICAgICh3aGVuIChhbmQgcHJlZml4ICg+IChsZW5ndGggcHJlZml4KSAwKSkKIDs7ICAgICAgICAg ICAgIChpbnNlcnQgKGZvcm1hdCAiJXMiIHByZWZpeCkpKQotOzsgICAgICAgICAgIChpbnNlcnQg KGtleS1kZXNjcmlwdGlvbiAodmVjdG9yIHN0YXJ0LWlkeCkgcHJlZml4KSkKKzs7ICAgICAgICAg ICAoaW5zZXJ0IChoZWxwLS1rZXktZGVzY3JpcHRpb24tZm9udGlmaWVkICh2ZWN0b3Igc3RhcnQt aWR4KSBwcmVmaXgpKQogOzsgICAgICAgICAgIDs7IEZpbmQgYWxsIGNvbnNlY3V0aXZlIGNoYXJh Y3RlcnMgb3Igcm93cyB0aGF0IGhhdmUgdGhlCiA7OyAgICAgICAgICAgOzsgc2FtZSBkZWZpbml0 aW9uLgogOzsgICAgICAgICAgICh3aGlsZSAoZXF1YWwgKGtleW1hcC0tZ2V0LWtleWVsdCAoYXJl ZiB2ZWN0b3IgKDErIGlkeCkpIG5pbCkKQEAgLTE0MzMsNyArMTQ0NSw3IEBAIGRlc2NyaWJlLW1h cAogOzsgICAgICAgICAgICAgKGluc2VydCAiIC4uICIpCiA7OyAgICAgICAgICAgICAod2hlbiAo YW5kIHByZWZpeCAoPiAobGVuZ3RoIHByZWZpeCkgMCkpCiA7OyAgICAgICAgICAgICAgIChpbnNl cnQgKGZvcm1hdCAiJXMiIHByZWZpeCkpKQotOzsgICAgICAgICAgICAgKGluc2VydCAoa2V5LWRl c2NyaXB0aW9uICh2ZWN0b3IgaWR4KSBwcmVmaXgpKSkKKzs7ICAgICAgICAgICAgIChpbnNlcnQg KGhlbHAtLWtleS1kZXNjcmlwdGlvbi1mb250aWZpZWQgKHZlY3RvciBpZHgpIHByZWZpeCkpKQog OzsgICAgICAgICAgIChpZiB0cmFuc2wKIDs7ICAgICAgICAgICAgICAgKGhlbHAtLWRlc2NyaWJl LXRyYW5zbGF0aW9uIGRlZmluaXRpb24pCiA7OyAgICAgICAgICAgICAoaGVscC0tZGVzY3JpYmUt Y29tbWFuZCBkZWZpbml0aW9uKSkKZGlmZiAtLWdpdCBhL2xpc3AvaXNlYXJjaC5lbCBiL2xpc3Av aXNlYXJjaC5lbAppbmRleCA4MjY2YzRiN2EwLi5iNjkxNjczYzlmIDEwMDY0NAotLS0gYS9saXNw L2lzZWFyY2guZWwKKysrIGIvbGlzcC9pc2VhcmNoLmVsCkBAIC00NjAsMTEgKzQ2MCwxMSBAQCBp c2VhcmNoLWhlbHAtbWFwCiAobWFrZS1oZWxwLXNjcmVlbiBpc2VhcmNoLWhlbHAtZm9yLWhlbHAt aW50ZXJuYWwKICAgKHB1cmVjb3B5ICJUeXBlIGEgaGVscCBvcHRpb246IFtia21dIG9yID8iKQog ICAiWW91IGhhdmUgdHlwZWQgJVRISVMtS0VZJSwgdGhlIGhlbHAgY2hhcmFjdGVyLiAgVHlwZSBh IEhlbHAgb3B0aW9uOgotXChUeXBlIFxcPGhlbHAtbWFwPlxcW2hlbHAtcXVpdF0gdG8gZXhpdCB0 aGUgSGVscCBjb21tYW5kLikKK1woVHlwZSBcXDxpc2VhcmNoLWhlbHAtbWFwPlxcW2hlbHAtcXVp dF0gdG8gZXhpdCB0aGUgSGVscCBjb21tYW5kLikKIAotYiAgICAgICAgICAgRGlzcGxheSBhbGwg SXNlYXJjaCBrZXkgYmluZGluZ3MuCi1rIEtFWVMgICAgICBEaXNwbGF5IGZ1bGwgZG9jdW1lbnRh dGlvbiBvZiBJc2VhcmNoIGtleSBzZXF1ZW5jZS4KLW0gICAgICAgICAgIERpc3BsYXkgZG9jdW1l bnRhdGlvbiBvZiBJc2VhcmNoIG1vZGUuCitcXFtpc2VhcmNoLWRlc2NyaWJlLWJpbmRpbmdzXSAg ICAgICAgICAgRGlzcGxheSBhbGwgSXNlYXJjaCBrZXkgYmluZGluZ3MuCitcXFtpc2VhcmNoLWRl c2NyaWJlLWtleV0gS0VZUyAgICAgIERpc3BsYXkgZnVsbCBkb2N1bWVudGF0aW9uIG9mIElzZWFy Y2gga2V5IHNlcXVlbmNlLgorXFxbaXNlYXJjaC1kZXNjcmliZS1tb2RlXSAgICAgICAgICAgRGlz cGxheSBkb2N1bWVudGF0aW9uIG9mIElzZWFyY2ggbW9kZS4KIAogWW91IGNhbid0IHR5cGUgaGVy ZSBvdGhlciBoZWxwIGtleXMgYXZhaWxhYmxlIGluIHRoZSBnbG9iYWwgaGVscCBtYXAsCiBidXQg b3V0c2lkZSBvZiB0aGlzIGhlbHAgd2luZG93IHdoZW4geW91IHR5cGUgdGhlbSBpbiBJc2VhcmNo IG1vZGUsCmRpZmYgLS1naXQgYS9zcmMva2V5bWFwLmMgYi9zcmMva2V5bWFwLmMKaW5kZXggNzgy OTMxZmFkZi4uOGRmMDM3YmZmYyAxMDA2NDQKLS0tIGEvc3JjL2tleW1hcC5jCisrKyBiL3NyYy9r ZXltYXAuYwpAQCAtMzAyMSw3ICszMDIxLDEwIEBAIGRlc2NyaWJlX3ZlY3RvciAoTGlzcF9PYmpl Y3QgdmVjdG9yLCBMaXNwX09iamVjdCBwcmVmaXgsIExpc3BfT2JqZWN0IGFyZ3MsCiAgICAgICBp ZiAoIU5JTFAgKGVsdF9wcmVmaXgpKQogCWluc2VydDEgKGVsdF9wcmVmaXgpOwogCi0gICAgICBp bnNlcnQxIChGa2V5X2Rlc2NyaXB0aW9uIChrbHVkZ2UsIHByZWZpeCkpOworICAgICAgTGlzcF9P YmplY3QgZGVzYyA9IEZrZXlfZGVzY3JpcHRpb24gKGtsdWRnZSwgcHJlZml4KTsKKyAgICAgIGlm IChrZXltYXBfcCkKKwlkZXNjID0gQ0FMTE4gKEZwcm9wZXJ0aXplLCBkZXNjLCBRZm9udF9sb2Nr X2ZhY2UsIFFoZWxwX2tleV9iaW5kaW5nKTsKKyAgICAgIGluc2VydDEgKGRlc2MpOwogCiAgICAg ICAvKiBGaW5kIGFsbCBjb25zZWN1dGl2ZSBjaGFyYWN0ZXJzIG9yIHJvd3MgdGhhdCBoYXZlIHRo ZSBzYW1lCiAJIGRlZmluaXRpb24uICBCdXQsIGlmIFZFQ1RPUiBpcyBhIGNoYXItdGFibGUsIHdl IGhhZCBiZXR0ZXIKQEAgLTMwNzEsNyArMzA3NCwxMCBAQCBkZXNjcmliZV92ZWN0b3IgKExpc3Bf T2JqZWN0IHZlY3RvciwgTGlzcF9PYmplY3QgcHJlZml4LCBMaXNwX09iamVjdCBhcmdzLAogCSAg aWYgKCFOSUxQIChlbHRfcHJlZml4KSkKIAkgICAgaW5zZXJ0MSAoZWx0X3ByZWZpeCk7CiAKLQkg IGluc2VydDEgKEZrZXlfZGVzY3JpcHRpb24gKGtsdWRnZSwgcHJlZml4KSk7CisJICBMaXNwX09i amVjdCBkZXNjID0gRmtleV9kZXNjcmlwdGlvbiAoa2x1ZGdlLCBwcmVmaXgpOworCSAgaWYgKGtl eW1hcF9wKQorCSAgICBkZXNjID0gQ0FMTE4gKEZwcm9wZXJ0aXplLCBkZXNjLCBRZm9udF9sb2Nr X2ZhY2UsIFFoZWxwX2tleV9iaW5kaW5nKTsKKwkgIGluc2VydDEgKGRlc2MpOwogCX0KIAogICAg ICAgLyogUHJpbnQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIGNoYXJh Y3Rlci4KQEAgLTMxMDcsNyArMzExMyw4IEBAIHN5bXNfb2Zfa2V5bWFwICh2b2lkKQogewogICBE RUZTWU0gKFFrZXltYXAsICJrZXltYXAiKTsKICAgREVGU1lNIChRZGVzY3JpYmVfbWFwX3RyZWUs ICJkZXNjcmliZS1tYXAtdHJlZSIpOwotCisgIERFRlNZTSAoUWZvbnRfbG9ja19mYWNlLCAiZm9u dC1sb2NrLWZhY2UiKTsKKyAgREVGU1lNIChRaGVscF9rZXlfYmluZGluZywgImhlbHAta2V5LWJp bmRpbmciKTsKICAgREVGU1lNIChRa2V5bWFwX2Nhbm9uaWNhbGl6ZSwgImtleW1hcC1jYW5vbmlj YWxpemUiKTsKIAogICAvKiBOb3cgd2UgYXJlIHJlYWR5IHRvIHNldCB1cCB0aGlzIHByb3BlcnR5 LCBzbyB3ZSBjYW4KLS0gCjIuMzAuMAoK --000000000000798c4605bc0b1d35--