From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?B?SmFyb3PFgmF3IFJ6ZXN6w7N0a28=?= Newsgroups: gmane.emacs.devel Subject: Making debugging possible on expressions executed from ielm Date: Sat, 13 Jan 2018 10:22:25 +0100 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a113bddf45c21550562a4ebb7" X-Trace: blaine.gmane.org 1515842778 31745 195.159.176.226 (13 Jan 2018 11:26:18 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 13 Jan 2018 11:26:18 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jan 13 12:26:14 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eaJwv-0007V7-Cc for ged-emacs-devel@m.gmane.org; Sat, 13 Jan 2018 12:26:09 +0100 Original-Received: from localhost ([::1]:59097 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaJyt-0007jF-GF for ged-emacs-devel@m.gmane.org; Sat, 13 Jan 2018 06:28:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39686) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eaI1F-00016D-S8 for emacs-devel@gnu.org; Sat, 13 Jan 2018 04:22:31 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eaI1E-0004uz-1S for emacs-devel@gnu.org; Sat, 13 Jan 2018 04:22:29 -0500 Original-Received: from mail-yb0-x22e.google.com ([2607:f8b0:4002:c09::22e]:37482) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eaI1D-0004uW-No for emacs-devel@gnu.org; Sat, 13 Jan 2018 04:22:27 -0500 Original-Received: by mail-yb0-x22e.google.com with SMTP id p83so3768034yba.4 for ; Sat, 13 Jan 2018 01:22:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=KrBrH+H4eRGH/xUvWzaujomWJwfK1HbjzhAY8j9rBw8=; b=CEOgtJz/bgibS5tcqvwonZE4sHIfMrAKuS5h8vOz+Djl9doNUrsg4xTLlA/Ve5EMmx anCtty2gZiBDMnT4RiAqHNdRL4CWiBkO0MojNhw2SolFm2Spc7Dp6vyr85nw/Iv4Wi52 GgK7nWXggQnXCAGWFyCZAkIY05OnvrXf4+f43PWKjPditjTi9L0CdjfUlCDrfV/z+7Ff hmOGQxHVI7I13emiS0koiVQKLeFvgWDc5mtyvmbDO3jiSUjCS9F113y6IHIKkWqvQoo1 zZEFdGUdhW/CSeO6g0+6uxnbXV1jHy37v//CrsrCMPsBPNnOGs0o40khJTa/V0sAPdtE 1TJg== 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=KrBrH+H4eRGH/xUvWzaujomWJwfK1HbjzhAY8j9rBw8=; b=niH6CIpyLxhKhSx4Kw5brL96JehxBvJihXBIDW8jCU/ySfwLTx3xX3e27qL9s70wor YsS9MQ5iC4IP6nd8+n8t9PZEtl4CLHmF7CadqjypMSjkP1LtoBXu+ZBfAaNEAX4ELW9S Pd1e3TmZNF/04gxzLDmH7DLh80MgcCyjOeoiFs3R2YOg+3U8+nY/WB1kYGti5DnMM7XW ZCpCx4HxHYzshHWFPyjkRMWUaQNaUa8qxHUfVNOU1Am88WPz+yB8cWgb5CQidSra+jOR SWApfVqrI8w/19PRgL/rps9nkg8qHG3VEYLMZ8NsxU9zv/XVnoLc70s9bGTIW5/xrFUG plfw== X-Gm-Message-State: AKwxytd7/EeBakgwfLYCbbRturxrv6ItFiTJ8i5z9fTiwTj5frblNSXU rGTFqTVUbWmNMP7nV/j+xBiAi3gVpaJ76p+/FhFz9g== X-Google-Smtp-Source: ACJfBovwjD09KqZpCROR+EJKIOEOzedbR3COMttqEA2Z7TD2rmUhHk+cyD3Ec+W9yacx7i0Ylh4gHd+qXFOv6lEAbS8= X-Received: by 10.37.77.6 with SMTP id a6mr870988ybb.410.1515835346386; Sat, 13 Jan 2018 01:22:26 -0800 (PST) Original-Received: by 10.37.205.71 with HTTP; Sat, 13 Jan 2018 01:22:25 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4002:c09::22e X-Mailman-Approved-At: Sat, 13 Jan 2018 06:27:21 -0500 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:221921 Archived-At: --001a113bddf45c21550562a4ebb7 Content-Type: multipart/alternative; boundary="001a113bddf45c21500562a4ebb5" --001a113bddf45c21500562a4ebb5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I attach a patch for ielm.el that makes it possible to enter the debugger when executing expressions in ielm, and that makes ielm respect the debug-on-error and debug-on-exit flags. I guess that possibly the reason that was not originally done is that it is not obvious how to restore ielm to a usable state after the debugger has been entered. My patch makes use of the fact that unwind-protect unwind forms are still executed when user resumes execution from the debugger after an error. Without the patch, ielm wraps the evaluation of the expression given by the user in a condition case, and in case of an error, or exit, displays an appropriate message in its buffer, right under the evaluated expression, regardless of debug-on-error and debug-on-exit. With the patch, the message that ielm displays in its buffer will be a generic error message regardless if there was an error in the evaluated form, or a quit. However: - if debug-on-error is t, emacs will enter the debugger and show a stack trace, just like with almost any other evaluation method. When the user continues the execution from the debugger, ielm will correctly resume execution - if debug-on-error is nil, emacs will display the specific error in the minibuffer anyway Similar things are true for debug-on-quit. I think this is an improvement over the current state of affairs. Of course ideally I would like to preserve the "nice" message in ielm buffer and make the improvements I made, but emacs does not seem to make it possible to do some handling of an error and then to re-raise it while preserving the original stack trace. Cheers, Jaros=C5=82aw Rzesz=C3=B3tko --001a113bddf45c21500562a4ebb5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I attach a patch for ielm.el that makes it possible to ent= er the debugger when executing expressions in ielm, and that makes ielm res= pect the debug-on-error and debug-on-exit flags.=C2=A0

I= guess that possibly the reason that was not originally done is that it is = not obvious how to restore ielm to a usable state after the debugger has be= en entered. My patch makes use of the fact that unwind-protect unwind forms= are still executed when user resumes execution from the debugger after an = error.

Without the patch, ielm wraps the= evaluation of the expression given by the user in a condition case, and in= case of an error, or exit, displays an appropriate message in its buffer, = right under the evaluated expression, regardless of debug-on-error and debu= g-on-exit.=C2=A0

With the patch, the message that = ielm displays in its buffer will be a generic error message=C2=A0 regardles= s if there was an error in the evaluated form, or a quit. However:

- if debug-on-error is t, emacs will enter the debugger an= d show a stack trace, just like with almost any other evaluation method. Wh= en the user continues the execution from the debugger, ielm will correctly = resume execution

- if debug-on-error is nil, emacs= will display the specific error in the minibuffer anyway

Similar things are true for debug-on-quit.

I think this is an improvement over the current state of affairs. Of cours= e ideally I would like to preserve the "nice" message in ielm buf= fer and make the improvements I made, but emacs does not seem to make it po= ssible to do some handling of an error and then to re-raise it while preser= ving the original stack trace.

Cheers,
J= aros=C5=82aw Rzesz=C3=B3tko


= --001a113bddf45c21500562a4ebb5-- --001a113bddf45c21550562a4ebb7 Content-Type: text/x-patch; charset="US-ASCII"; name="ielm-debug-on-error.el.patch" Content-Disposition: attachment; filename="ielm-debug-on-error.el.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jcd4x1hk0 ZGlmZiAtLWdpdCBhL2xpc3AvaWVsbS5lbCBiL2xpc3AvaWVsbS5lbAppbmRleCBmYjI4NWU4MGY2 Li4xM2JiNDY5M2NkIDEwMDY0NAotLS0gYS9saXNwL2llbG0uZWwKKysrIGIvbGlzcC9pZWxtLmVs CkBAIC0zNTMsMTEzICszNTMsMTE3IEBAIG5vbmVtcHR5LCB0aGVuIGZsdXNoZXMgdGhlIGJ1ZmZl ci4iCiAgICAgICAgIChvdXRwdXQgIiIpICAgICAgICAgICAgICAgICAgOyByZXN1bHQgdG8gZGlz cGxheQogICAgICAgICAod2J1ZiBpZWxtLXdvcmtpbmctYnVmZmVyKSAgIDsgY3VycmVudCBidWZm ZXIgYWZ0ZXIgZXZhbHVhdGlvbgogICAgICAgICAocG1hcmsgKGllbG0tcG0pKSkKLSAgICAodW5s ZXNzIChpZWxtLWlzLXdoaXRlc3BhY2Utb3ItY29tbWVudCBzdHJpbmcpCi0gICAgICAoY29uZGl0 aW9uLWNhc2UgZXJyCi0gICAgICAgICAgKGxldCAoKHJvdXQgKHJlYWQtZnJvbS1zdHJpbmcgc3Ry aW5nKSkpCi0gICAgICAgICAgICAoc2V0cSBmb3JtIChjYXIgcm91dCkKLSAgICAgICAgICAgICAg ICAgIHBvcyAoY2RyIHJvdXQpKSkKLSAgICAgICAgKGVycm9yIChzZXRxIHJlc3VsdCAoZXJyb3It bWVzc2FnZS1zdHJpbmcgZXJyKSkKLSAgICAgICAgICAgICAgIChzZXRxIGVycm9yLXR5cGUgIlJl YWQgZXJyb3IiKSkpCi0gICAgICAodW5sZXNzIGVycm9yLXR5cGUKLSAgICAgICAgOzsgTWFrZSBz dXJlIHdvcmtpbmcgYnVmZmVyIGhhcyBub3QgYmVlbiBraWxsZWQKLSAgICAgICAgKGlmIChub3Qg KGJ1ZmZlci1uYW1lIGllbG0td29ya2luZy1idWZmZXIpKQotICAgICAgICAgICAgKHNldHEgcmVz dWx0ICJXb3JraW5nIGJ1ZmZlciBoYXMgYmVlbiBraWxsZWQiCi0gICAgICAgICAgICAgICAgICBl cnJvci10eXBlICJJRUxNIEVycm9yIgotICAgICAgICAgICAgICAgICAgd2J1ZiAoY3VycmVudC1i dWZmZXIpKQotICAgICAgICAgIChpZiAoaWVsbS1pcy13aGl0ZXNwYWNlLW9yLWNvbW1lbnQgKHN1 YnN0cmluZyBzdHJpbmcgcG9zKSkKLSAgICAgICAgICAgICAgOzsgVG8gY29ycmVjdGx5IGhhbmRs ZSB0aGUgaWVsbS1sb2NhbCB2YXJpYWJsZXMgKiwKLSAgICAgICAgICAgICAgOzsgKiogYW5kICoq Kiwgd2UgbmVlZCBhIHRlbXBvcmFyeSBidWZmZXIgdG8gYmUKLSAgICAgICAgICAgICAgOzsgY3Vy cmVudCBhdCBlbnRyeSB0byB0aGUgaW5uZXIgb2YgdGhlIG5leHQgdHdvIGxldAotICAgICAgICAg ICAgICA7OyBmb3Jtcy4gIFdlIG5lZWQgYW5vdGhlciB0ZW1wb3JhcnkgYnVmZmVyIHRvIGV4aXQK LSAgICAgICAgICAgICAgOzsgdGhhdCBzYW1lIGxldC4gIFRvIGF2b2lkIHByb2JsZW1zLCBuZWl0 aGVyIG9mCi0gICAgICAgICAgICAgIDs7IHRoZXNlIGJ1ZmZlcnMgc2hvdWxkIGJlIGFsaXZlIGR1 cmluZyB0aGUKLSAgICAgICAgICAgICAgOzsgZXZhbHVhdGlvbiBvZiBmb3JtLgotICAgICAgICAg ICAgICAobGV0KiAoKCoxICopCi0gICAgICAgICAgICAgICAgICAgICAoKjIgKiopCi0gICAgICAg ICAgICAgICAgICAgICAoKjMgKioqKQotICAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZS1wcm9j ZXNzIChpZWxtLXByb2Nlc3MpKQotICAgICAgICAgICAgICAgICAgICAgKG9sZC1zdGFuZGFyZC1v dXRwdXQgc3RhbmRhcmQtb3V0cHV0KQotICAgICAgICAgICAgICAgICAgICAgbmV3LXN0YW5kYXJk LW91dHB1dAotICAgICAgICAgICAgICAgICAgICAgaWVsbS10ZW1wLWJ1ZmZlcikKLSAgICAgICAg ICAgICAgICAoc2V0LW1hdGNoLWRhdGEgaWVsbS1tYXRjaC1kYXRhKQotICAgICAgICAgICAgICAg IChzYXZlLWV4Y3Vyc2lvbgotICAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLSAg ICAgICAgICAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlIGVycgotICAgICAgICAgICAgICAgICAg ICAgICAgKHVud2luZC1wcm90ZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgVGhl IG5leHQgbGV0IGZvcm0gY3JlYXRlcyBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgYmluZGluZ3MgZm9yICosICoqIGFuZCAqKiouICBCdXQKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyB0aGVzZSBkZWZhdWx0IGJpbmRpbmdzIGFyZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGlkZW50aWNhbCB0byB0aGUgaWVsbS1sb2NhbAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IGJpbmRpbmdzLiAgSGVuY2UsIGR1cmluZyB0aGUKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyBldmFsdWF0aW9uIG9mIGZvcm0sIHRoZQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IGllbG0tbG9jYWwgdmFsdWVzIGFyZSBnb2luZyB0byBiZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVzZWQgaW4gYWxsIGJ1ZmZlcnMgZXhjZXB0 IGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG90aGVyIGllbG0gYnVmZmVycywg d2hpY2ggb3ZlcnJpZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGVtLiAgTm9y bWFsbHksIHRoZSB2YXJpYWJsZXMgKjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg KjIgYW5kICozIGFsc28gaGF2ZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg OzsgYmluZGluZ3MsIHdoaWNoIGFyZSBub3Qgb3ZlcnJpZGRlbi4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGV0ICgoKiAqMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKiogKjIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoqKiAqMykpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgc3RhbmRhcmQtb3V0cHV0IHQp Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIG5ldy1zdGFuZGFyZC1vdXRw dXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGllbG0tc3RhbmRhcmQt b3V0cHV0LWltcGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2 ZS1wcm9jZXNzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgc3RhbmRh cmQtb3V0cHV0IG5ldy1zdGFuZGFyZC1vdXRwdXQpKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGtpbGwtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0LWJ1ZmZlciB3YnVmKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHNldHEgcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZh bCBmb3JtIGxleGljYWwtYmluZGluZykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2V0cSB3YnVmIChjdXJyZW50LWJ1ZmZlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGllbG0tdGVtcC1idWZmZXIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiICpp ZWxtLXRlbXAqIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlciBp ZWxtLXRlbXAtYnVmZmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gaWVsbS10 ZW1wLWJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBpZWxt LXRlbXAtYnVmZmVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIG5ldy1z dGFuZGFyZC1vdXRwdXQgc3RhbmRhcmQtb3V0cHV0KQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZ25vcmUtZXJyb3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBzdGFuZGFyZC1vdXRwdXQgdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYg c3RhbmRhcmQtb3V0cHV0IG9sZC1zdGFuZGFyZC1vdXRwdXQpKSkKLSAgICAgICAgICAgICAgICAg ICAgICAoZXJyb3IgKHNldHEgcmVzdWx0IChlcnJvci1tZXNzYWdlLXN0cmluZyBlcnIpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBlcnJvci10eXBlICJFdmFsIGVycm9yIikp Ci0gICAgICAgICAgICAgICAgICAgICAgKHF1aXQgKHNldHEgcmVzdWx0ICJRdWl0IGR1cmluZyBl dmFsdWF0aW9uIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBlcnJvci10eXBl ICJFdmFsIGVycm9yIikpKSkpCi0gICAgICAgICAgICAgICAgKHNldHEgaWVsbS1tYXRjaC1kYXRh IChtYXRjaC1kYXRhKSkpCi0gICAgICAgICAgICAoc2V0cSBlcnJvci10eXBlICJJRUxNIGVycm9y IikKLSAgICAgICAgICAgIChzZXRxIHJlc3VsdCAiTW9yZSB0aGFuIG9uZSBzZXhwIGluIGlucHV0 IikpKSkKLQotICAgICAgOzsgSWYgdGhlIGV2YWwgY2hhbmdlZCB0aGUgY3VycmVudCBidWZmZXIs IG1lbnRpb24gaXQgaGVyZQotICAgICAgKHVubGVzcyAoZXEgd2J1ZiBpZWxtLXdvcmtpbmctYnVm ZmVyKQotICAgICAgICAobWVzc2FnZSAiY3VycmVudCBidWZmZXIgaXMgbm93OiAlcyIgd2J1ZikK LSAgICAgICAgKHNldHEgaWVsbS13b3JraW5nLWJ1ZmZlciB3YnVmKSkKLQotICAgICAgKGdvdG8t Y2hhciBwbWFyaykKLSAgICAgICh1bmxlc3MgZXJyb3ItdHlwZQotICAgICAgICAoY29uZGl0aW9u LWNhc2UgbmlsCi0gICAgICAgICAgICA7OyBTZWxmLXJlZmVyZW50aWFsIG9iamVjdHMgY2F1c2Ug bG9vcHMgaW4gdGhlIHByaW50ZXIsIHNvCi0gICAgICAgICAgICA7OyB0cmFwIHF1aXRzIGhlcmUu IE1heSBhcyB3ZWxsIGRvIGVycm9ycywgdG9vCi0gICAgICAgICAgICAodW5sZXNzIGZvci1lZmZl Y3QKLSAgICAgICAgICAgICAgKHNldHEgb3V0cHV0IChjb25jYXQgb3V0cHV0IChwcC10by1zdHJp bmcgcmVzdWx0KQotCQkJCSAgIChsZXQgKChzdHIgKGV2YWwtZXhwcmVzc2lvbi1wcmludC1mb3Jt YXQgcmVzdWx0KSkpCi0JCQkJICAgICAoaWYgc3RyIChwcm9wZXJ0aXplIHN0ciAnZm9udC1sb2Nr LWZhY2UgJ3NoYWRvdykpKSkpKQotICAgICAgICAgIChlcnJvciAoc2V0cSBlcnJvci10eXBlICJJ RUxNIEVycm9yIikKLSAgICAgICAgICAgICAgICAgKHNldHEgcmVzdWx0ICJFcnJvciBkdXJpbmcg cHJldHR5LXByaW50aW5nIChidWcgaW4gcHApIikpCi0gICAgICAgICAgKHF1aXQgIChzZXRxIGVy cm9yLXR5cGUgIklFTE0gRXJyb3IiKQotICAgICAgICAgICAgICAgICAoc2V0cSByZXN1bHQgIlF1 aXQgZHVyaW5nIHByZXR0eS1wcmludGluZyIpKSkpCi0gICAgICAoaWYgZXJyb3ItdHlwZQorICAg ICh1bndpbmQtcHJvdGVjdAorICAgICAgICAocHJvZ24KKyAgICAgICAgICAodW5sZXNzIChpZWxt LWlzLXdoaXRlc3BhY2Utb3ItY29tbWVudCBzdHJpbmcpCisgICAgICAgICAgICAoY29uZGl0aW9u LWNhc2UgZXJyCisgICAgICAgICAgICAgICAgKGxldCAoKHJvdXQgKHJlYWQtZnJvbS1zdHJpbmcg c3RyaW5nKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBmb3JtIChjYXIgcm91dCkKKyAgICAg ICAgICAgICAgICAgICAgICAgIHBvcyAoY2RyIHJvdXQpKSkKKyAgICAgICAgICAgICAgKGVycm9y IChzZXRxIHJlc3VsdCAoZXJyb3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkKKyAgICAgICAgICAgICAg ICAgICAgIChzZXRxIGVycm9yLXR5cGUgIlJlYWQgZXJyb3IiKSkpCisgICAgICAgICAgICAodW5s ZXNzIGVycm9yLXR5cGUKKyAgICAgICAgICAgICAgOzsgTWFrZSBzdXJlIHdvcmtpbmcgYnVmZmVy IGhhcyBub3QgYmVlbiBraWxsZWQKKyAgICAgICAgICAgICAgKGlmIChub3QgKGJ1ZmZlci1uYW1l IGllbG0td29ya2luZy1idWZmZXIpKQorICAgICAgICAgICAgICAgICAgKHNldHEgcmVzdWx0ICJX b3JraW5nIGJ1ZmZlciBoYXMgYmVlbiBraWxsZWQiCisgICAgICAgICAgICAgICAgICAgICAgICBl cnJvci10eXBlICJJRUxNIEVycm9yIgorICAgICAgICAgICAgICAgICAgICAgICAgd2J1ZiAoY3Vy cmVudC1idWZmZXIpKQorICAgICAgICAgICAgICAgIChpZiAoaWVsbS1pcy13aGl0ZXNwYWNlLW9y LWNvbW1lbnQgKHN1YnN0cmluZyBzdHJpbmcgcG9zKSkKKyAgICAgICAgICAgICAgICAgICAgOzsg VG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgaWVsbS1sb2NhbCB2YXJpYWJsZXMgKiwKKyAgICAgICAg ICAgICAgICAgICAgOzsgKiogYW5kICoqKiwgd2UgbmVlZCBhIHRlbXBvcmFyeSBidWZmZXIgdG8g YmUKKyAgICAgICAgICAgICAgICAgICAgOzsgY3VycmVudCBhdCBlbnRyeSB0byB0aGUgaW5uZXIg b2YgdGhlIG5leHQgdHdvIGxldAorICAgICAgICAgICAgICAgICAgICA7OyBmb3Jtcy4gIFdlIG5l ZWQgYW5vdGhlciB0ZW1wb3JhcnkgYnVmZmVyIHRvIGV4aXQKKyAgICAgICAgICAgICAgICAgICAg OzsgdGhhdCBzYW1lIGxldC4gIFRvIGF2b2lkIHByb2JsZW1zLCBuZWl0aGVyIG9mCisgICAgICAg ICAgICAgICAgICAgIDs7IHRoZXNlIGJ1ZmZlcnMgc2hvdWxkIGJlIGFsaXZlIGR1cmluZyB0aGUK KyAgICAgICAgICAgICAgICAgICAgOzsgZXZhbHVhdGlvbiBvZiBmb3JtLgorICAgICAgICAgICAg ICAgICAgICAobGV0KiAoKCoxICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKjIgKiop CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKjMgKioqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGFjdGl2ZS1wcm9jZXNzIChpZWxtLXByb2Nlc3MpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG9sZC1zdGFuZGFyZC1vdXRwdXQgc3RhbmRhcmQtb3V0cHV0KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmV3LXN0YW5kYXJkLW91dHB1dAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWVsbS10ZW1wLWJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAoc2V0 LW1hdGNoLWRhdGEgaWVsbS1tYXRjaC1kYXRhKQorICAgICAgICAgICAgICAgICAgICAgIChzYXZl LWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBUaGUgbmV4dCBsZXQgZm9ybSBjcmVhdGVzIGRlZmF1bHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGJpbmRpbmdzIGZvciAqLCAqKiBhbmQgKioqLiAg QnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGVzZSBkZWZhdWx0IGJpbmRp bmdzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgaWRlbnRpY2FsIHRvIHRo ZSBpZWxtLWxvY2FsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBiaW5kaW5ncy4g IEhlbmNlLCBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmFs dWF0aW9uIG9mIGZvcm0sIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgaWVs bS1sb2NhbCB2YWx1ZXMgYXJlIGdvaW5nIHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyB1c2VkIGluIGFsbCBidWZmZXJzIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IG90aGVyIGllbG0gYnVmZmVycywgd2hpY2ggb3ZlcnJpZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRoZW0uICBOb3JtYWxseSwgdGhlIHZhcmlhYmxl cyAqMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICoyIGFuZCAqMyBhbHNvIGhh dmUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYmluZGluZ3MsIHdo aWNoIGFyZSBub3Qgb3ZlcnJpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs ZXQgKCgqICoxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoqICoyKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoqKiAqMykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHJlc3VsdCBuaWwpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh3aGVuIChlcSBzdGFuZGFyZC1vdXRwdXQgdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0ZiBuZXctc3RhbmRhcmQtb3V0cHV0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGllbG0tc3RhbmRhcmQtb3V0cHV0LWlt cGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLXByb2Nl c3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIHN0YW5kYXJkLW91 dHB1dCBuZXctc3RhbmRhcmQtb3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGtpbGwtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXQtYnVmZmVyIHdidWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IFdpbGwgaW1tZWRpYXRlbHkgZ2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IG92ZXJ3cml0dGVuLCBidXQgb25seSBpZiBldmFsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDs7IGRvZXMgbm90IHRocm93IGFuIGVycm9yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIGVycm9yLXR5cGUgIkV2YWwgZXJyb3IiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGV2YWwgZm9ybSBsZXhpY2FsLWJpbmRpbmcpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBlcnJvci10eXBlIG5pbCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgd2J1ZiAoY3VycmVudC1idWZmZXIpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWVsbS10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiAqaWVsbS10ZW1wKiIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlciBpZWxtLXRlbXAtYnVmZmVyKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiBpZWxtLXRlbXAtYnVmZmVyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoa2lsbC1idWZmZXIgaWVsbS10ZW1wLWJ1ZmZlcikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKGVxIG5ldy1zdGFuZGFyZC1vdXRwdXQgc3RhbmRh cmQtb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlnbm9yZS1lcnJvcnMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3RhbmRhcmQtb3V0cHV0 IHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgc3RhbmRhcmQtb3V0cHV0 IG9sZC1zdGFuZGFyZC1vdXRwdXQpKSkpKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGll bG0tbWF0Y2gtZGF0YSAobWF0Y2gtZGF0YSkpKQorICAgICAgICAgICAgICAgICAgKHNldHEgZXJy b3ItdHlwZSAiSUVMTSBlcnJvciIpCisgICAgICAgICAgICAgICAgICAoc2V0cSByZXN1bHQgIk1v cmUgdGhhbiBvbmUgc2V4cCBpbiBpbnB1dCIpKSkpCisKKyAgICAgICAgICAgIDs7IElmIHRoZSBl dmFsIGNoYW5nZWQgdGhlIGN1cnJlbnQgYnVmZmVyLCBtZW50aW9uIGl0IGhlcmUKKyAgICAgICAg ICAgICh1bmxlc3MgKGVxIHdidWYgaWVsbS13b3JraW5nLWJ1ZmZlcikKKyAgICAgICAgICAgICAg KG1lc3NhZ2UgImN1cnJlbnQgYnVmZmVyIGlzIG5vdzogJXMiIHdidWYpCisgICAgICAgICAgICAg IChzZXRxIGllbG0td29ya2luZy1idWZmZXIgd2J1ZikpCisKKyAgICAgICAgICAgIChnb3RvLWNo YXIgcG1hcmspCisgICAgICAgICAgICAodW5sZXNzIGVycm9yLXR5cGUKKyAgICAgICAgICAgICAg KGNvbmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgICAgOzsgU2VsZi1yZWZlcmVudGlh bCBvYmplY3RzIGNhdXNlIGxvb3BzIGluIHRoZSBwcmludGVyLCBzbworICAgICAgICAgICAgICAg ICAgOzsgdHJhcCBxdWl0cyBoZXJlLiBNYXkgYXMgd2VsbCBkbyBlcnJvcnMsIHRvbworICAgICAg ICAgICAgICAgICAgKHVubGVzcyBmb3ItZWZmZWN0CisgICAgICAgICAgICAgICAgICAgIChzZXRx IG91dHB1dCAoY29uY2F0IG91dHB1dCAocHAtdG8tc3RyaW5nIHJlc3VsdCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHN0ciAoZXZhbC1leHByZXNzaW9u LXByaW50LWZvcm1hdCByZXN1bHQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgc3RyIChwcm9wZXJ0aXplIHN0ciAnZm9udC1sb2NrLWZhY2UgJ3NoYWRv dykpKSkpKQorICAgICAgICAgICAgICAgIChlcnJvciAoc2V0cSBlcnJvci10eXBlICJJRUxNIEVy cm9yIikKKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgcmVzdWx0ICJFcnJvciBkdXJpbmcg cHJldHR5LXByaW50aW5nIChidWcgaW4gcHApIikpCisgICAgICAgICAgICAgICAgKHF1aXQgIChz ZXRxIGVycm9yLXR5cGUgIklFTE0gRXJyb3IiKQorICAgICAgICAgICAgICAgICAgICAgICAoc2V0 cSByZXN1bHQgIlF1aXQgZHVyaW5nIHByZXR0eS1wcmludGluZyIpKSkpKSkKICAgICAgICAgICAo cHJvZ24KLSAgICAgICAgICAgICh3aGVuIGllbG0tbm9pc3kgKGRpbmcpKQotICAgICAgICAgICAg KHNldHEgb3V0cHV0IChjb25jYXQgb3V0cHV0ICIqKiogIiBlcnJvci10eXBlICIgKioqICAiKSkK LSAgICAgICAgICAgIChzZXRxIG91dHB1dCAoY29uY2F0IG91dHB1dCByZXN1bHQpKSkKLSAgICAg ICAgOzsgVGhlcmUgd2FzIG5vIGVycm9yLCBzbyBzaGlmdCB0aGUgKioqIHZhbHVlcwotICAgICAg ICAoc2V0cSAqKiogKiopCi0gICAgICAgIChzZXRxICoqICopCi0gICAgICAgIChzZXRxICogcmVz dWx0KSkKLSAgICAgICh3aGVuIChvciAobm90IGZvci1lZmZlY3QpIChub3QgKGVxdWFsIG91dHB1 dCAiIikpKQotICAgICAgICAoc2V0cSBvdXRwdXQgKGNvbmNhdCBvdXRwdXQgIlxuIikpKSkKLSAg ICAoc2V0cSBvdXRwdXQgKGNvbmNhdCBvdXRwdXQgaWVsbS1wcm9tcHQtaW50ZXJuYWwpKQotICAg IChjb21pbnQtb3V0cHV0LWZpbHRlciAoaWVsbS1wcm9jZXNzKSBvdXRwdXQpKSkKKyAgICAgICAg ICAgIChpZiBlcnJvci10eXBlCisgICAgICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAg ICAgICAod2hlbiBpZWxtLW5vaXN5IChkaW5nKSkKKyAgICAgICAgICAgICAgICAgIChzZXRxIG91 dHB1dCAoY29uY2F0IG91dHB1dCAiKioqICIgZXJyb3ItdHlwZSAiICoqKiAgIikpCisgICAgICAg ICAgICAgICAgICAoc2V0cSBvdXRwdXQgKGNvbmNhdCBvdXRwdXQgcmVzdWx0KSkpCisgICAgICAg ICAgICAgIDs7IFRoZXJlIHdhcyBubyBlcnJvciwgc28gc2hpZnQgdGhlICoqKiB2YWx1ZXMKKyAg ICAgICAgICAgICAgKHNldHEgKioqICoqKQorICAgICAgICAgICAgICAoc2V0cSAqKiAqKQorICAg ICAgICAgICAgICAoc2V0cSAqIHJlc3VsdCkpCisgICAgICAgICAgICAod2hlbiAob3IgKG5vdCBm b3ItZWZmZWN0KSAobm90IChlcXVhbCBvdXRwdXQgIiIpKSkKKyAgICAgICAgICAgICAgKHNldHEg b3V0cHV0IChjb25jYXQgb3V0cHV0ICJcbiIpKSkpCisgICAgICAgICAgKHNldHEgb3V0cHV0IChj b25jYXQgb3V0cHV0IGllbG0tcHJvbXB0LWludGVybmFsKSkKKyAgICAgICAgICAoY29taW50LW91 dHB1dC1maWx0ZXIgKGllbG0tcHJvY2Vzcykgb3V0cHV0KSkpKQogCiA7OzsgUHJvY2VzcyBhbmQg bWFya2VyIHV0aWxpdGllcwogCkBAIC01MTcsOSArNTIxLDYgQEAgY2F1c2VzIG91dHB1dCB0byBi ZSBkaXJlY3RlZCB0byB0aGUgaWVsbSBidWZmZXIuCiBzZXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUg ZHVyaW5nIGV2YWx1YXRpb24uICBZb3UgY2FuIHVzZSAocHJpbmMKIFZBTFVFKSBvciAocHAgVkFM VUUpIHRvIHdyaXRlIHRvIHRoZSBpZWxtIGJ1ZmZlci4KIAotRXhwcmVzc2lvbnMgZXZhbHVhdGVk IGJ5IElFTE0gYXJlIG5vdCBzdWJqZWN0IHRvIGBkZWJ1Zy1vbi1xdWl0JyBvcgotYGRlYnVnLW9u LWVycm9yJy4KLQogVGhlIGJlaGF2aW9yIG9mIElFTE0gbWF5IGJlIGN1c3RvbWl6ZWQgd2l0aCB0 aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKICogVG8gc3RvcCBiZWVwaW5nIG9uIGVycm9yLCBzZXQg YGllbG0tbm9pc3knIHRvIG5pbC4KICogSWYgeW91IGRvbid0IGxpa2UgdGhlIHByb21wdCwgeW91 IGNhbiBjaGFuZ2UgaXQgYnkgc2V0dGluZyBgaWVsbS1wcm9tcHQnLgo= --001a113bddf45c21550562a4ebb7--