From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id QIQ3Nr1T4GUOfQEAqHPOHw:P1 (envelope-from ) for ; Thu, 29 Feb 2024 10:51:58 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id QIQ3Nr1T4GUOfQEAqHPOHw (envelope-from ) for ; Thu, 29 Feb 2024 10:51:58 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b="h/JeMh8J"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1709200317; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=q5viuQUNlPDArwKVvuD65eC+JLOaM9QrtBA18B1G0f8=; b=uWC7Xc8JEB3nVTuN4iUpLXMg+zMVuiS2/Uc9XQyIm11sYfUuE1QMVo3uwU5XsBPgBiuJY/ 0eFc5Bi7pR+BID/+0NseIU1zRAc38i2mjHF1ZqfZgVAK5VnazHu+DDE71q2nVMtcUAKBl+ 96doAeSVbp2QuxMl6KfUy5XGzAeACv8UpcvupZgqcWtcKpn1f/Skukp+yfroVVpJhIPx3V C+rCOrRj/eJoWP6plqP+FmtBMWxx4hpYK+B69Mv571YmC8g7rMRr63zz+DSa/MlQ/XSuyJ fkV9EWnx0xmg0hpB9ZCza2Vy3ttKlXTtPiA/Lh/kabJj3oE8NspjXzln3MSLHQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b="h/JeMh8J"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Seal: i=1; s=key1; d=yhetil.org; t=1709200317; a=rsa-sha256; cv=none; b=m5Y/vr6TdR2W1xns+R8didPoaL0JBa3bgG/2IvOdP5fBVekf/GvC1xzfT0wAYUHdqTKfsx KWZlx09MKJxs0MS5dXLzCK3EYtbyFx0U7aNnQTDBDSZcMb0OidLcEpOixO2rxbukGr6kGA KtW1+gSmlIYO24h9TZ9UIuif4R0GfKdg+TUmsHzplIA+w61m7oHPypDWrKFyGQ+KDrJ9yN 4DmBGoKTW7COh8VXtLk+98CNA3psz6pNoLSiNa6/5qD0w06Tkt8Ul3R6CcYok1phqri5a2 lCNFY8q0Ww66kAvCN0zfjq3pwna4+/xibG6bMMU9BVz6LVwK+O+EQfacp6P+Xg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6DF62325E8 for ; Thu, 29 Feb 2024 10:51:57 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rfd46-00089v-Fu; Thu, 29 Feb 2024 04:50:58 -0500 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 1rfd44-00089Y-Sp for emacs-orgmode@gnu.org; Thu, 29 Feb 2024 04:50:56 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rfd3t-0002rP-Q5 for emacs-orgmode@gnu.org; Thu, 29 Feb 2024 04:50:56 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id AE7A3240101 for ; Thu, 29 Feb 2024 10:50:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1709200242; bh=hIpxK1tIFKAS06RWbmkZY5poX5KZi85SZtOcNVX3o0Y=; h=MIME-Version:Content-Type:Date:From:To:Cc:Subject:Message-ID: From; b=h/JeMh8JoVSAUzwNyDNgRkJcFzlOwH8dRCbUhNQQtBFCdd5hTPscqUdegwVBXy7w9 kJV9P2fPBnz/rmXzaZGbOO1xFtMXW+dtObooLSFX3KT9tH7x2QwuuHFvLj9jGsIFmP t4tLYP3k8lGclkQS/ccpFyl/LgsJZFWYiXO4tpc/MueJg5erznbW9rmRcUvt6neBBM 4pLMGnAywj+AR9AtHP8jcGm83dThc2bmlY+nvyFTDZhu9OM3IjE0odSdYsILGjQ0jD PeOa3WhSPskmGCTZ4A0J7Y5U4/+686lUkyegRiVhrSiMGfvF1mbXw+g4LPJVN7q2LN Jv5ccyytHHPEQ== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TlmgQ2ZL5z6tn4; Thu, 29 Feb 2024 10:50:42 +0100 (CET) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_d293acf7ab420d118a06fe17f6af12fb" Date: Thu, 29 Feb 2024 09:50:42 +0000 From: gerard.vermeulen@posteo.net To: Ihor Radchenko Cc: Emacs orgmode Subject: Re: [PATCH] org-babel-demarcate-block: split using element API In-Reply-To: <87wmqo3it5.fsf@localhost> References: <7e41f9b6e9026a404e256f33371e974c@posteo.net> <261356c53e857e0bc4b04f884366edfa@posteo.net> <87bk9uy31w.fsf@localhost> <680e4a4fccf4f3c5c8f51d8215257eff@posteo.net> <87a5p9uute.fsf@localhost> <87wmscrty4.fsf@localhost> <2c82fa1399ddaa52ebe5bb21e241fb5f@posteo.net> <87o7dll7vn.fsf@localhost> <874je4hjmr.fsf@localhost> <87frxmtasr.fsf@localhost> <87h6hzi9cy.fsf@localhost> <067f694028817e59ee3d0c49dc80dd3b@posteo.net> <87y1b8loop.fsf@localhost> <529eafb5a5274fb4e15917ce3b97d785@posteo.net> <87wmqo3it5.fsf@localhost> Message-ID: <71a7a6b51654e020f72cfa6ac07ce36b@posteo.net> Received-SPF: pass client-ip=185.67.36.66; envelope-from=gerard.vermeulen@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -9.98 X-Spam-Score: -9.98 X-Migadu-Queue-Id: 6DF62325E8 X-TUID: haS3E6rYhdUi --=_d293acf7ab420d118a06fe17f6af12fb Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 28.02.2024 12:54, Ihor Radchenko wrote: > gerard.vermeulen@posteo.net writes: > >>> You may wrap `org-indent-block' into `condition-case' to catch >>> user-errors. >> >> The caveat is not a real constraint, since Org has limited support for >> source block editing in an Org mode buffer when an >> `org-babel-edit-prep:' function signals an user-error. >> >> I show that in the attached no-user-errors-in-edit-prep.org. > > I studied the existing Org handling of various errors related to src > edit buffers and it seems that we tend to ignore them in a number of > scenarios. In particular, when major mode fails to load for any reason, > Org mode does not even throw an error, but simply displays a warning. > > So, I think that we can similarly ignore errors in edit-prep function, > demoting them to messages. > > (In addition, it does not look like electric-indent-mode triggered in > your example file by pressing handles errors gracefully either - > yet another reason not to throw errors in `org-indent-*' functions) > > Does it make sense? Your reply helped me to read the Org Babel code from a different view point. I re-discovered that `org-babel-edit-prep:sql' handles all issues gracefully while trying the block below: #+begin_src sql :engine wrong a b #+end_src That includes `org-babel-demarcate-block' splitting with the patch. I do not understand why it works and why I never see the user-error re-signalled by `org-babel-edit-prep:sql' (even as demoted message). After writing `org-babel-edit-prep:python' like: #+begin_src emacs-lisp -n :results silent (defun harm-full-edit-prep (_info) (user-error "Harm-FULL edit-prep")) (defun org-babel-edit-prep:python (info) "Imitate `org-babel-edit-prep:sql'." (condition-case nil (harm-full-edit-prep info) (user-error "Why is this harm-LESS in `org-babel-edit-prep:sql'?"))) #+end_src and trying it on the block below: #+begin_src python -i -n :results silent 11 22 #+end_src I see that this `org-babel-edit-prep:python' handles all issues like `org-babel-edit-prep:sql' (and it does not matter whether `electric-indent-mode' is disabled or enabled). I conclude (contrary to the previous commit message in the patch): In case functions called by an `org-babel-edit-prep:' function raise an user-error, this `org-babel-edit-prep:' function should re-signal the user-error like `org-babel-edit-prep:sql' does. Attached you'll find the patch with an updated commit message. Regards -- Gerard --=_d293acf7ab420d118a06fe17f6af12fb Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=0001-org-babel-demarcate-block-split-using-element-API.patch Content-Disposition: attachment; filename=0001-org-babel-demarcate-block-split-using-element-API.patch; size=18948 RnJvbSBiNTFiZTg0ZTIzOWMxMDhiZjNkNzMxZjRmMjU5YmJkNDA4ODc5MGM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJhcmQgVmVybWV1bGVuIDxnZXJhcmQudmVybWV1bGVuQHBv c3Rlby5uZXQ+CkRhdGU6IFRodSwgMTEgSmFuIDIwMjQgMjA6MjA6MDEgKzAxMDAKU3ViamVjdDog W1BBVENIXSBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrOiBzcGxpdCB1c2luZyBlbGVtZW50IEFQ SQoKKiBsaXNwL29iLWJhYmVsLmVsIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKTogTW9kaWZ5 IGEgY29weQpvZiAob3JnLWVsZW1lbnQtYXQtcG9pbnQpIHRvIHJlcGxhY2UgdGhlIG9sZCBzb3Vy Y2UgYmxvY2sgd2l0aCAyIG9yIDMKbmV3IG1vZGlmaWVkIGNvcGllcyBieSBtZWFucyBvZiBgb3Jn LWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEnLiAgVGhlIDFzdApzb3VyY2UgYmxvY2sgY29udGFpbnMg dGhlIHRleHQgZnJvbSB0aGUgYm9keSBvZiB0aGUgb2xkIGJsb2NrIGJlZm9yZQpwb2ludCBvciBy ZWdpb24sIHRoZSAybmQgYmxvY2sgY29udGFpbnMgdGhlIGJvZHkgdGV4dCBhZnRlciBwb2ludCBv cgpib2R5IHRleHQgd2l0aGluIHJlZ2lvbiwgYW5kIGluIGNhc2Ugb2YgcmVnaW9uLCB0aGUgM3Jk IGJsb2NrIGNvbnRhaW5zCnRoZSB0ZXh0IGFmdGVyIHJlZ2lvbi4gIFRoZSBjYXB0aW9uIGFuZCB0 aGUgbmFtZSBhcmUgZGVsZXRlZCBmcm9tIHRoZQoxIG9yIDIgYmxvY2tzIGJlbG93IHRoZSB1cHBl ciBzb3VyY2UgYmxvY2suICBJbmRlbnQgYWxsIGJsb2NrcwppbW1lZGlhdGVseSBhZnRlciBpbnNl cnRpb24uICBVc2UgOnBvc3QtYmxhbmsgdG8gY29udHJvbCB3aGl0ZSBsaW5lcwpiZXR3ZWVuIGlu c2VydGVkIGJsb2Nrcy4gIExlYXZlIHBvaW50IGF0IHRoZSBsYXN0IGluc2VydGVkIGJsb2NrLgpU cnlpbmcgdG8gc3BsaXQgd2hlbiBwb2ludCBvciByZWdpb24gaXMgbm90IHdpdGhpbiB0aGUgYm9k eSBvZiB0aGUgb2xkCnNvdXJjZSBibG9jayByYWlzZXMgYW4gdXNlci1lcnJvci4KKiBsaXNwL29i LWJhYmVsIChvcmctZ2V0LXNyYy1ibG9jay1pbmZvKTogYWRkIHRoZSAid2l0aGluIGJsYW5rIGxp bmVzCmFmdGVyIGEgc291cmNlIGJsb2NrIiBjb25kaXRpb24gdG8gdGhlIGRvYy1zdHJpbmcgdG8g bWF0Y2ggaXQgd2l0aCB0aGUKZG9jLXN0cmluZyBvZiBhbmQgYSBjb21tZW50IGluIGBvcmctYmFi ZWwtZGVtYXJjYXRlLWJsb2NrJy4KKiB0ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCAodGVzdC1vYi9k ZW1hcmNhdGUtYmxvY2stc3BsaXQtZHVwbGljYXRpb24pCih0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9j ay1zcGxpdC1wcmVmaXgtcG9pbnQpCih0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jay1zcGxpdC1wcmVm aXgtcmVnaW9uKQoodGVzdC1vYi9kZW1hcmNhdGUtYmxvY2stc3BsaXQtdXNlci1lcnJvcnMpCih0 ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jay13cmFwLXBvaW50KQoodGVzdC1vYi9kZW1hcmNhdGUtYmxv Y2std3JhcC1yZWdpb24pOiBOZXcgdGVzdHMgdG8gY2hlY2sgdGVzdCBjYXNlcwp0aGF0IGJyb2tl IGVhcmxpZXIgdmVyc2lvbnMgb2YgdGhpcyBwYXRjaC4KCkluIGNhc2UgZnVuY3Rpb25zIGNhbGxl ZCBieSBhbiBgb3JnLWJhYmVsLWVkaXQtcHJlcDo8TEFORz4nIGZ1bmN0aW9uCnJhaXNlIGFuIHVz ZXItZXJyb3IsIHRoaXMgYG9yZy1iYWJlbC1lZGl0LXByZXA6PExBTkc+JyBmdW5jdGlvbiBzaG91 bGQKcmUtc2lnbmFsIHRoZSB1c2VyLWVycm9yIGxpa2UgYG9yZy1iYWJlbC1lZGl0LXByZXA6c3Fs JyBkb2VzLgoKTGluazogaHR0cHM6Ly9saXN0Lm9yZ21vZGUub3JnLzdlNDFmOWI2ZTkwMjZhNDA0 ZTI1NmYzMzM3MWU5NzRjQHBvc3Rlby5uZXQvCi0tLQogbGlzcC9vYi1jb3JlLmVsICAgICAgICAg fCAgOTQgKysrKysrKysrKysrLS0tLS0KIHRlc3RpbmcvbGlzcC90ZXN0LW9iLmVsIHwgMjE5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg Mjg1IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb2It Y29yZS5lbCBiL2xpc3Avb2ItY29yZS5lbAppbmRleCBiZmVhYzI1N2IuLmUzMTEwYTNmMSAxMDA2 NDQKLS0tIGEvbGlzcC9vYi1jb3JlLmVsCisrKyBiL2xpc3Avb2ItY29yZS5lbApAQCAtNzMsMTAg KzczLDEyIEBACiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1wYXJlbnQgIm9yZy1lbGVt ZW50LWFzdCIgKG5vZGUpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtdHlwZSAib3Jn LWVsZW1lbnQtYXN0IiAobm9kZSAmb3B0aW9uYWwgYW5vbnltb3VzKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1lbGVtZW50LXR5cGUtcCAib3JnLWVsZW1lbnQtYXN0IiAobm9kZSAmb3B0aW9uYWwg dHlwZXMpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEgIm9y Zy1lbGVtZW50IiAoZGF0YSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZW50cnktZ2V0ICJvcmci IChwb20gcHJvcGVydHkgJm9wdGlvbmFsIGluaGVyaXQgbGl0ZXJhbC1uaWwpKQogKGRlY2xhcmUt ZnVuY3Rpb24gb3JnLWVzY2FwZS1jb2RlLWluLXJlZ2lvbiAib3JnLXNyYyIgKGJlZyBlbmQpKQog KGRlY2xhcmUtZnVuY3Rpb24gb3JnLWZvcndhcmQtaGVhZGluZy1zYW1lLWxldmVsICJvcmciIChh cmcgJm9wdGlvbmFsIGludmlzaWJsZS1vaykpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctaW4tY29t bWVudGVkLWhlYWRpbmctcCAib3JnIiAoJm9wdGlvbmFsIG5vLWluaGVyaXRhbmNlKSkKKyhkZWNs YXJlLWZ1bmN0aW9uIG9yZy1pbmRlbnQtYmxvY2sgIm9yZyIgKCkpCiAoZGVjbGFyZS1mdW5jdGlv biBvcmctaW5kZW50LWxpbmUgIm9yZyIgKCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbGlzdC1n ZXQtbGlzdC1lbmQgIm9yZy1saXN0IiAoaXRlbSBzdHJ1Y3QgcHJldnMpKQogKGRlY2xhcmUtZnVu Y3Rpb24gb3JnLWxpc3QtcHJldnMtYWxpc3QgIm9yZy1saXN0IiAoc3RydWN0KSkKQEAgLTcwMCw4 ICs3MDIsOSBAQCBCeSBkZWZhdWx0LCBjb25zaWRlciB0aGUgYmxvY2sgYXQgcG9pbnQuICBIb3dl dmVyLCB3aGVuIG9wdGlvbmFsCiBhcmd1bWVudCBEQVRVTSBpcyBwcm92aWRlZCwgZXh0cmFjdCBp bmZvcm1hdGlvbiBmcm9tIHRoYXQgcGFyc2VkCiBvYmplY3QgaW5zdGVhZC4KIAotUmV0dXJuIG5p bCBpZiBwb2ludCBpcyBub3Qgb24gYSBzb3VyY2UgYmxvY2suICBPdGhlcndpc2UsIHJldHVybgot YSBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBwYXR0ZXJuOgorUmV0dXJuIG5pbCBpZiBwb2ludCBp cyBub3Qgb24gYSBzb3VyY2UgYmxvY2sgKGJsYW5rIGxpbmVzIGFmdGVyIGEKK3NvdXJjZSBibG9j ayBhcmUgY29uc2lkZXJlZCBhIHBhcnQgb2YgdGhhdCBzb3VyY2UgYmxvY2spLgorT3RoZXJ3aXNl LCByZXR1cm4gYSBsaXN0IHdpdGggdGhlIGZvbGxvd2luZyBwYXR0ZXJuOgogCiAgIChsYW5ndWFn ZSBib2R5IGFyZ3VtZW50cyBzd2l0Y2hlcyBuYW1lIHN0YXJ0IGNvZGVyZWYpIgogICAobGV0KiAo KGRhdHVtIChvciBkYXR1bSAob3JnLWVsZW1lbnQtY29udGV4dCkpKQpAQCAtMjA3NSw3ICsyMDc4 LDcgQEAgV2l0aCBvcHRpb25hbCBwcmVmaXggYXJndW1lbnQgQVJHLCBqdW1wIGJhY2t3YXJkIEFS RyBtYW55IHNvdXJjZSBibG9ja3MuIgogICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5n IDUpKSkpKQogCiAoZGVmdW4gb3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAoJm9wdGlvbmFsIGFy ZykKLSAgIldyYXAgb3Igc3BsaXQgdGhlIGNvZGUgaW4gdGhlIHJlZ2lvbiBvciBvbiB0aGUgcG9p bnQuCisgICJXcmFwIG9yIHNwbGl0IHRoZSBjb2RlIGluIGFuIGFjdGl2ZSByZWdpb24gb3IgYXQg cG9pbnQuCiAKIFdpdGggcHJlZml4IGFyZ3VtZW50IEFSRywgYWxzbyBjcmVhdGUgYSBuZXcgaGVh ZGluZyBhdCBwb2ludC4KIApAQCAtMjA4NSw0MSArMjA4OCw3NiBAQCBpcyBjcmVhdGVkLiAgSW4g Ym90aCBjYXNlcyBpZiB0aGUgcmVnaW9uIGlzIGRlbWFyY2F0ZWQgYW5kIGlmIHRoZQogcmVnaW9u IGlzIG5vdCBhY3RpdmUgdGhlbiB0aGUgcG9pbnQgaXMgZGVtYXJjYXRlZC4KIAogV2hlbiBjYWxs ZWQgd2l0aGluIGJsYW5rIGxpbmVzIGFmdGVyIGEgY29kZSBibG9jaywgY3JlYXRlIGEgbmV3IGNv ZGUKLWJsb2NrIG9mIHRoZSBzYW1lIGxhbmd1YWdlIHdpdGggdGhlIHByZXZpb3VzLiIKK2Jsb2Nr IG9mIHRoZSBzYW1lIGxhbmd1YWdlIGFzIHRoZSBwcmV2aW91cy4iCiAgIChpbnRlcmFjdGl2ZSAi UCIpCiAgIChsZXQqICgoaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbyAnbm8tZXZh bCkpCiAJIChzdGFydCAob3JnLWJhYmVsLXdoZXJlLWlzLXNyYy1ibG9jay1oZWFkKSkKICAgICAg ICAgIDs7IGBzdGFydCcgd2lsbCBiZSBuaWwgd2hlbiB3aXRoaW4gc3BhY2UgbGluZXMgYWZ0ZXIg c3JjIGJsb2NrLgogCSAoYmxvY2sgKGFuZCBzdGFydCAobWF0Y2gtc3RyaW5nIDApKSkKLQkgKGhl YWRlcnMgKGFuZCBzdGFydCAobWF0Y2gtc3RyaW5nIDQpKSkKKyAgICAgICAgIChib2R5LWJlZyAo YW5kIHN0YXJ0IChtYXRjaC1iZWdpbm5pbmcgNSkpKQorICAgICAgICAgKGJvZHktZW5kIChhbmQg c3RhcnQgKG1hdGNoLWVuZCA1KSkpCiAJIChzdGFycyAoY29uY2F0IChtYWtlLXN0cmluZyAob3Ig KG9yZy1jdXJyZW50LWxldmVsKSAxKSA/KikgIiAiKSkKIAkgKHVwcGVyLWNhc2UtcCAoYW5kIGJs b2NrCiAJCQkgICAgKGxldCAoY2FzZS1mb2xkLXNlYXJjaCkKIAkJCSAgICAgIChzdHJpbmctbWF0 Y2gtcCAiI1xcK0JFR0lOX1NSQyIgYmxvY2spKSkpKQogICAgIChpZiAoYW5kIGluZm8gc3RhcnQp IDs7IEF0IHNyYyBibG9jaywgYnV0IG5vdCB3aXRoaW4gYmxhbmsgbGluZXMgYWZ0ZXIgaXQuCi0g ICAgICAgIChtYXBjCi0gICAgICAgICAobGFtYmRhIChwbGFjZSkKLSAgICAgICAgICAgKHNhdmUt ZXhjdXJzaW9uCi0gICAgICAgICAgICAgKGdvdG8tY2hhciBwbGFjZSkKLSAgICAgICAgICAgICAo bGV0ICgobGFuZyAobnRoIDAgaW5mbykpCi0gICAgICAgICAgICAgICAgICAgKGluZGVudCAobWFr ZS1zdHJpbmcgKG9yZy1jdXJyZW50LXRleHQtaW5kZW50YXRpb24pID9ccykpKQotCSAgICAgICAo d2hlbiAoc3RyaW5nLW1hdGNoICJeW1s6c3BhY2U6XV0qJCIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bGluZS1lbmQtcG9zaXRpb24pKSkKLSAgICAgICAgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gKGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKSkKLSAgICAgICAgICAg ICAgIChpbnNlcnQgKGNvbmNhdAotCQkgICAgICAgIChpZiAobG9va2luZy1hdCAiXiIpICIiICJc biIpCi0JCSAgICAgICAgaW5kZW50IChpZiB1cHBlci1jYXNlLXAgIiMrRU5EX1NSQ1xuIiAiIytl bmRfc3JjXG4iKQotCQkgICAgICAgIChpZiBhcmcgc3RhcnMgaW5kZW50KSAiXG4iCi0JCSAgICAg ICAgaW5kZW50IChpZiB1cHBlci1jYXNlLXAgIiMrQkVHSU5fU1JDICIgIiMrYmVnaW5fc3JjICIp Ci0JCSAgICAgICAgbGFuZwotCQkgICAgICAgIChpZiAoPiAobGVuZ3RoIGhlYWRlcnMpIDEpCi0J CQkgICAgKGNvbmNhdCAiICIgaGVhZGVycykgaGVhZGVycykKLQkJICAgICAgICAoaWYgKGxvb2tp bmctYXQgIltcblxyXSIpCi0JCQkgICAgIiIKLQkJCSAgKGNvbmNhdCAiXG4iIChtYWtlLXN0cmlu ZyAoY3VycmVudC1jb2x1bW4pID8gKSkpKSkpKQotCSAgIChtb3ZlLWVuZC1vZi1saW5lIDIpKQot ICAgICAgICAgKHNvcnQgKGlmIChvcmctcmVnaW9uLWFjdGl2ZS1wKSAobGlzdCAobWFyaykgKHBv aW50KSkgKGxpc3QgKHBvaW50KSkpICMnPikpCisgICAgICAgIChsZXQqICgoY29weSAob3JnLWVs ZW1lbnQtY29weSAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKSkKKyAgICAgICAgICAgICAgIChiZWZv cmUgKG9yZy1lbGVtZW50LWJlZ2luIGNvcHkpKQorICAgICAgICAgICAgICAgKGJleW9uZCAob3Jn LWVsZW1lbnQtZW5kIGNvcHkpKQorICAgICAgICAgICAgICAgKHBhcnRzCisgICAgICAgICAgICAg ICAgKGlmIChvcmctcmVnaW9uLWFjdGl2ZS1wKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBi b2R5LWJlZyAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1lbmQpIGJvZHktZW5kKQorICAgICAg ICAgICAgICAgICAgKGxpc3QgYm9keS1iZWcgKHBvaW50KSBib2R5LWVuZCkpKQorICAgICAgICAg ICAgICAgKHBhZHMgOzsgVG8gY2FsY3VsYXRlIGxlZnQtc2lkZSB3aGl0ZS1zcGFjZSBwYWRkaW5n LgorICAgICAgICAgICAgICAgIChpZiAob3JnLXJlZ2lvbi1hY3RpdmUtcCkKKyAgICAgICAgICAg ICAgICAgICAgKGxpc3QgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkKKyAgICAgICAg ICAgICAgICAgIChsaXN0IChwb2ludCkpKSkKKyAgICAgICAgICAgICAgIChuICgtIChsZW5ndGgg cGFydHMpIDIpKSA7OyAxIG9yIDIgcGFydHMgaW4gYGRvbGlzdCcgYmVsb3cuCisgICAgICAgICAg ICAgICA7OyBgcG9zdC1ibGFuaycgY2FjaGVzIHRoZSBwcm9wZXJ0eSBiZWZvcmUgc2V0dGluZyBp dCB0byAwLgorICAgICAgICAgICAgICAgKHBvc3QtYmxhbmsgKG9yZy1lbGVtZW50LXByb3BlcnR5 IDpwb3N0LWJsYW5rIGNvcHkpKSkKKyAgICAgICAgICA7OyBQb2ludCBvciByZWdpb24gYXJlIHdp dGhpbiBib2R5IHdoZW4gcGFydHMgaXMgaW4gaW5jcmVhc2luZyBvcmRlci4KKyAgICAgICAgICAo dW5sZXNzIChhcHBseSAjJzw9IHBhcnRzKQorICAgICAgICAgICAgKHVzZXItZXJyb3IgIlNlbGVj dCB3aXRoaW4gdGhlIHNvdXJjZSBibG9jayBib2R5IHRvIHNwbGl0IGl0IikpCisgICAgICAgICAg KHNldHEgcGFydHMgKG1hcGNhciAobGFtYmRhIChwKSAoYnVmZmVyLXN1YnN0cmluZyAoY2FyIHAp IChjZHIgcCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcS1tYXBuICMnY29u cyBwYXJ0cyAoY2RyIHBhcnRzKSkpKQorICAgICAgICAgIDs7IE1hcCBwb3NpdGlvbnMgdG8gY29s dW1ucyBmb3Igd2hpdGUtc3BhY2UgcGFkZGluZy4KKyAgICAgICAgICAoc2V0cSBwYWRzIChtYXBj YXIgKGxhbWJkYSAocCkgKHNhdmUtZXhjdXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYWRzKSkKKyAgICAgICAgICAocHVzaCAwIHBhZHMpIDs7IFRoZSAxc3QgcGFy dCBuZXZlciByZXF1aXJlcyB3aGl0ZS1zcGFjZSBwYWRkaW5nLgorICAgICAgICAgIChzZXRxIHBh cnRzIChtYXBjYXIgKGxhbWJkYSAocCkgKHN0cmluZy1qb2luCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKG1ha2Utc3RyaW5nIChjYXIgcCkgP1xzKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgcCkp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXEtbWFwbiAjJ2NvbnMgcGFkcyBw YXJ0cykpKQorICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZm9yZSBiZXlvbmQpCisgICAgICAg ICAgOzsgU2V0IGA6cG9zdC1ibGFuaycgdG8gMC4gIFdlIHRha2UgY2FyZSBvZiBzcGFjaW5nIGJl dHdlZW4gYmxvY2tzLgorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgY29weSA6 cG9zdC1ibGFuayAwKQorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgY29weSA6 dmFsdWUgKGNhciBwYXJ0cykpCisgICAgICAgICAgKGluc2VydCAob3JnLWVsZW1lbnQtaW50ZXJw cmV0LWRhdGEgY29weSkpCisgICAgICAgICAgOzsgYG9yZy1pbmRlbnQtYmxvY2snIG1heSBzZWUg YW5vdGhlciBgb3JnLWVsZW1lbnQnIChlLmcuIHBhcmFncmFwaCkKKyAgICAgICAgICA7OyBpbW1l ZGlhdGVseSBhZnRlciB0aGUgYmxvY2suICBFbnN1cmUgdG8gaW5kZW50IHRoZSBpbnNlcnRlZCBi bG9jaworICAgICAgICAgIDs7IGFuZCBtb3ZlIHBvaW50IHRvIGl0cyBlbmQuCisgICAgICAgICAg KG9yZy1iYWJlbC1wcmV2aW91cy1zcmMtYmxvY2sgMSkKKyAgICAgICAgICAob3JnLWluZGVudC1i bG9jaykKKyAgICAgICAgICAoZ290by1jaGFyIChvcmctZWxlbWVudC1lbmQgKG9yZy1lbGVtZW50 LWF0LXBvaW50KSkpCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9wZXJ0eSBjb3B5IDpj YXB0aW9uIG5pbCkKKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXByb3BlcnR5IGNvcHkgOm5h bWUgbmlsKQorICAgICAgICAgIDs7IEluc2VydCB0aGUgMm5kIGJsb2NrLCBhbmQgdGhlIDNyZCBi bG9jayB3aGVuIHJlZ2lvbiBpcyBhY3RpdmUuCisgICAgICAgICAgKGRvbGlzdCAocGFydCAoY2Ry IHBhcnRzKSkKKyAgICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJvcGVydHkgY29weSA6dmFs dWUgcGFydCkKKyAgICAgICAgICAgIChpbnNlcnQgKGlmIGFyZyAoY29uY2F0IHN0YXJzICJcbiIp ICJcbiIpKQorICAgICAgICAgICAgKGNsLWRlY2YgbikKKyAgICAgICAgICAgICh3aGVuICg9IG4g MCkKKyAgICAgICAgICAgICAgOzsgVXNlIGBwb3N0LWJsYW5rJyB0byByZXNldCB0aGUgcHJvcGVy dHkgb2YgdGhlIGxhc3QgYmxvY2suCisgICAgICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJv cGVydHkgY29weSA6cG9zdC1ibGFuayBwb3N0LWJsYW5rKSkKKyAgICAgICAgICAgIChpbnNlcnQg KG9yZy1lbGVtZW50LWludGVycHJldC1kYXRhIGNvcHkpKQorICAgICAgICAgICAgOzsgRW5zdXJl IHRvIGluZGVudCB0aGUgaW5zZXJ0ZWQgYmxvY2sgYW5kIG1vdmUgcG9pbnQgdG8gaXRzIGVuZC4K KyAgICAgICAgICAgIChvcmctYmFiZWwtcHJldmlvdXMtc3JjLWJsb2NrIDEpCisgICAgICAgICAg ICAob3JnLWluZGVudC1ibG9jaykKKyAgICAgICAgICAgIChnb3RvLWNoYXIgKG9yZy1lbGVtZW50 LWVuZCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKSkpCisgICAgICAgICAgOzsgTGVhdmUgcG9pbnQg YXQgdGhlIGxhc3QgaW5zZXJ0ZWQgYmxvY2suCisgICAgICAgICAgKGdvdG8tY2hhciAob3JnLWJh YmVsLXByZXZpb3VzLXNyYy1ibG9jayAxKSkpCiAgICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkK IAkgICAgKGxhbmcgKG9yIChjYXIgaW5mbykgOyBSZXVzZSBsYW5ndWFnZSBmcm9tIHByZXZpb3Vz IGJsb2NrLgogICAgICAgICAgICAgICAgICAgICAgIChjb21wbGV0aW5nLXJlYWQKZGlmZiAtLWdp dCBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKaW5k ZXggNDJjNzdjYTU2Li5jMDg4YWY3YzggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9i LmVsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9iLmVsCkBAIC0yNTQ1LDYgKzI1NDUsMjI1IEBA IGFiYwogCQkobGFtYmRhICgmcmVzdCBfKSAoZXJyb3IgIk5vIHdhcm5pbmdzIHNob3VsZCBvY2N1 ciIpKSkpCiAgICAgICAgKG9yZy1iYWJlbC1pbXBvcnQtZWxpc3AtZnJvbS1maWxlIChidWZmZXIt ZmlsZS1uYW1lKSkpKSkpCiAKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jay1z cGxpdC1kdXBsaWNhdGlvbiAoKQorICAiVGVzdCBkdXBsaWNhdGlvbiBvZiBsYW5ndWFnZSwgYm9k eSwgc3dpdGNoZXMsIGFuZCBoZWFkZXJzIGluIHNwbGl0dGluZy4iCisgIChsZXQgKChjYXB0aW9u ICIjK2NhcHRpb246IGNhcHRpb24uIikKKyAgICAgICAgKHJlZ2V4cCAocnggIiMrY2FwdGlvbjog Y2FwdGlvbi4iKSkKKyAgICAgICAgKG9yZy1hZGFwdC1pbmRlbnRhdGlvbiBuaWwpKQorICAgIChv cmctdGVzdC13aXRoLXRlbXAtdGV4dCAoZm9ybWF0ICIKKyVzCisjK2hlYWRlcjogOnZhciBlZGdl PVwiYWxzbyBkdXBsaWNhdGVkXCIKKyMraGVhZGVyOiA6d3JhcCBcInNyYyBhbnktc3BhbmlzaCAt blwiCisjK25hbWU6IE5vYm9keQorIytiZWdpbl9zcmMgYW55LWVuZ2xpc2ggLWkgLW4gOnZhciBo ZXJlPVwiZHVwbGljYXRlZFwiIDp3cmFwIFwic3JjIGFueS1lbmdsaXNoIC1uXCIKKworYWJvdmUg c3BsaXQKKzxwb2ludD4KK2JlbG93IHNwbGl0CisKKyMrZW5kX3NyYworZG8gbm90IG9yZy1pbmRl bnQtYmxvY2sgdGV4dCBoZXJlCisiIGNhcHRpb24pCisgICAgICAobGV0ICgod3JhcC12YWwgInNy YyBhbnktc3BhbmlzaCAtbiIpIGFib3ZlIGJlbG93IGF2YXJzIGJ2YXJzKQorICAgICAgICAob3Jn LWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK KyAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykgOzsgdXBwZXIgc291cmNlIGJsb2Nr CisgICAgICAgIChzZXRxIGFib3ZlIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkKKyAg ICAgICAgKHNldHEgYXZhcnMgKG9yZy1iYWJlbC0tZ2V0LXZhcnMgKG50aCAyIGFib3ZlKSkpCisg ICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spIDs7IGxvd2VyIHNvdXJjZSBibG9jawor ICAgICAgICAoc2V0cSBiZWxvdyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpCisgICAg ICAgIChzZXRxIGJ2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBiZWxvdykpKQorICAg ICAgICA7OyBkdXBsaWNhdGVkIG11bHRpLWxpbmUgaGVhZGVyIGFyZ3VtZW50czoKKyAgICAgICAg KHNob3VsZCAoc3RyaW5nPSAiYWxzbyBkdXBsaWNhdGVkIiAoY2RyIChhc3NxICdlZGdlIGF2YXJz KSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIGR1cGxpY2F0ZWQiIChjZHIgKGFz c3EgJ2VkZ2UgYnZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gd3JhcC12YWwgKGNk ciAoYXNzcSA6d3JhcCAobnRoIDIgYWJvdmUpKSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9 IHdyYXAtdmFsIChjZHIgKGFzc3EgOndyYXAgKG50aCAyIGJlbG93KSkpKSkKKyAgICAgICAgOzsg ZHVwbGljYXRlZCBsYW5ndWFnZSwgb3RoZXIgaGVhZGVyIGFyZ3VtZW50cywgYW5kIHN3aXRjaGVz OgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbnktZW5nbGlzaCIgKG50aCAwIGFib3ZlKSkp CisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1lbmdsaXNoIiAobnRoIDAgYmVsb3cpKSkK KyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYWJvdmUgc3BsaXQiIChvcmctdHJpbSAobnRoIDEg YWJvdmUpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImJlbG93IHNwbGl0IiAob3JnLXRy aW0gKG50aCAxIGJlbG93KSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJkdXBsaWNhdGVk IiAoY2RyIChhc3NxICdoZXJlIGF2YXJzKSkpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJk dXBsaWNhdGVkIiAoY2RyIChhc3NxICdoZXJlIGJ2YXJzKSkpKQorICAgICAgICAoc2hvdWxkIChz dHJpbmc9ICItaSAtbiIgKG50aCAzIGFib3ZlKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0g Ii1pIC1uIiAobnRoIDMgYmVsb3cpKSkKKyAgICAgICAgOzsgbm9uLWR1cGxpY2F0aW9uIG9mIG5h bWUgYW5kIGNhcHRpb24sIHdoaWNoIGlzIG5vdCBpbiBhYm92ZS9iZWxvdy4KKyAgICAgICAgKHNo b3VsZCAoc3RyaW5nPSAiTm9ib2R5IiAobnRoIDQgYWJvdmUpKSkKKyAgICAgICAgKHNob3VsZC1u b3QgKHN0cmluZz0gIiIgKG50aCA0IGJlbG93KSkpCisgICAgICAgIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCisgICAgICAgIChzaG91bGQgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkpCisgICAg ICAgIChzaG91bGQtbm90IChyZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgbmlsICdub2Vycm9yKSkp KSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jay1zcGxpdC1wcmVmaXgt cG9pbnQgKCkKKyAgIlRlc3QgcHJlZml4IGFyZ3VtZW50IHBvaW50IHNwbGl0dGluZy4iCisgIChs ZXQgKChvcmctYWRhcHQtaW5kZW50YXRpb24gdCkKKyAgICAgICAgKG9yZy1lZGl0LXNyYy1jb250 ZW50LWluZGVudGF0aW9uIDIpCisgICAgICAgIChvcmctc3JjLXByZXNlcnZlLWluZGVudGF0aW9u IG5pbCkKKyAgICAgICAgKG9rLWNvbCAxMSkKKyAgICAgICAgKHN0YXJzICJeXFwqXFwqXFwqXFwq XFwqXFwqXFwqXFwqXFwqXFwqIikpCisgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIKKyoq KioqKioqKiogMTAgc3RhcnMgd2l0aCBwb2ludCBiZXR3ZWVuIHR3byBsaW5lcworICAgICAgICAg ICAjK2JlZ2luX3NyYyBlbWFjcy1saXNwCisgICAgICAgICAgICAgOzsgdG8gdXBwZXIgYmxvY2sK KyAgICAgICAgICAgICA8cG9pbnQ+CisgICAgICAgICAgICAgOzsgdG8gbG93ZXIgYmxvY2sKKyAg ICAgICAgICAgIytlbmRfc3JjCisiCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAn YS1wcmVmaXgtYXJnKQorICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgIChkb2xp c3QgKHJlZ2V4cCBgKCxzdGFycworICAgICAgICAgICAgICAgICAgICAgICAgIiNcXCtiZWciICI7 OyB0byB1cHBlciBibG9jayIgIiNcXCtlbmQiCisgICAgICAgICAgICAgICAgICAgICAgICAsc3Rh cnMKKyAgICAgICAgICAgICAgICAgICAgICAgICIjXFwrYmVnIiAiOzsgdG8gbG93ZXIgYmxvY2si ICIjXFwrZW5kIikpCisgICAgICAgIChzaG91bGQgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkp CisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgKGNvbmQg KChzdHJpbmc9IHJlZ2V4cCBzdGFycykKKyAgICAgICAgICAgICAgIChzaG91bGQgKD0gMCAoY3Vy cmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgICgoc3RyaW5nLXByZWZpeC1wICI7OyIgcmVn ZXhwKQorICAgICAgICAgICAgICAgKHNob3VsZCAoPSAoKyBvay1jb2wgb3JnLWVkaXQtc3JjLWNv bnRlbnQtaW5kZW50YXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNv bHVtbikpKSkKKyAgICAgICAgICAgICAgKHQgKHNob3VsZCAoPSBvay1jb2wgKGN1cnJlbnQtY29s dW1uKSkpKSkpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LW9iL2RlbWFyY2F0ZS1ibG9jay1zcGxp dC1wcmVmaXgtcmVnaW9uICgpCisgICJUZXN0IHByZWZpeCBhcmd1bWVudCByZWdpb24gc3BsaXR0 aW5nLiIKKyAgKGxldCAoKG9yZy1hZGFwdC1pbmRlbnRhdGlvbiB0KQorICAgICAgICAob3JnLWVk aXQtc3JjLWNvbnRlbnQtaW5kZW50YXRpb24gMikKKyAgICAgICAgKG9yZy1zcmMtcHJlc2VydmUt aW5kZW50YXRpb24gbmlsKQorICAgICAgICAob2stY29sIDExKQorICAgICAgICAoc3RhcnMgIl5c XCpcXCpcXCpcXCpcXCpcXCpcXCpcXCpcXCpcXCoiKQorICAgICAgICAocGFydHMgJygidG8gdXBw ZXIgYmxvY2siICJtYXJrIHRob3NlIHdvcmRzIGFzIHJlZ2lvbiIgInRvIGxvd2VyIGJsb2NrIikp KQorICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAoZm9ybWF0ICIKKyoqKioqKioqKiogMTAg c3RhcnMgd2l0aCByZWdpb24gYmV0d2VlbiB0d28gbGluZXMKKyAgICAgICAgICAgIytoZWFkZXI6 IDp2YXIgYj1cImFsc28gc2VlblwiCisgICAgICAgICAgICMrYmVnaW5fc3JjIGFueS1sYW5ndWFn ZSAtaSAtbiA6dmFyIGE9XCJzZWVuXCIKKyAgICAgICAgICAgICAlcworICAgICAgICAgICAgIDxw b2ludD4lcworICAgICAgICAgICAgICVzCisgICAgICAgICAgICMrZW5kX3NyYworIiAobnRoIDAg cGFydHMpIChudGggMSBwYXJ0cykgKG50aCAyIHBhcnRzKSkKKyAgICAgIChsZXQgKChuIDApIGlu Zm8gdmFycykKKyAgICAgICAgKHRyYW5zaWVudC1tYXJrLW1vZGUgMSkKKyAgICAgICAgKHB1c2gt bWFyayAocG9pbnQpIHQgdCkKKyAgICAgICAgKHNlYXJjaC1mb3J3YXJkIChudGggMSBwYXJ0cykp CisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrICdhLXByZWZpeC1hcmd1bWVudCkK KyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHdoaWxlICg8IG4gKGxl bmd0aCBwYXJ0cykpCisgICAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAgICAg ICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkKKyAgICAgICAg ICAoc2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZvKSkpCisgICAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAg ICAgIChzaG91bGQgKHN0cmluZz0gKG50aCBuIHBhcnRzKSAob3JnLXRyaW0gKG50aCAxIGluZm8p KSkpCisgICAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAic2VlbiIgKGNkciAoYXNzcSAnYSB2YXJz KSkpKQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFsc28gc2VlbiIgKGNkciAoYXNzcSAn YiB2YXJzKSkpKQorICAgICAgICAgIChzaG91bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgaW5m bykpKQorICAgICAgICAgIChjbC1pbmNmIG4pKSkKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCisgICAgICAoZG9saXN0IChyZWdleHAgYCgsc3RhcnMKKyAgICAgICAgICAgICAgICAgICAg ICAgICIjXFwrYmVnIiAsKG50aCAwIHBhcnRzKSAiI1xcK2VuZCIKKyAgICAgICAgICAgICAgICAg ICAgICAgICxzdGFycworICAgICAgICAgICAgICAgICAgICAgICAgIiNcXCtiZWciICwobnRoIDEg cGFydHMpICIjXFwrZW5kIgorICAgICAgICAgICAgICAgICAgICAgICAgLHN0YXJzCisgICAgICAg ICAgICAgICAgICAgICAgICAiI1xcK2JlZyIgLChudGggMiBwYXJ0cykgIiNcXCtlbmQiKSkKKyAg ICAgICAgKHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAgICAgKGdvdG8t Y2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAgICAoY29uZCAoKHN0cmluZz0gcmVnZXhw IHN0YXJzKQorICAgICAgICAgICAgICAgKHNob3VsZCAoPSAwIChjdXJyZW50LWNvbHVtbikpKSkK KyAgICAgICAgICAgICAgKChtZW1xIHJlZ2V4cCBwYXJ0cykKKyAgICAgICAgICAgICAgIChzaG91 bGQgKD0gKCsgb2stY29sIG9yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgICh0 IChzaG91bGQgKD0gb2stY29sIChjdXJyZW50LWNvbHVtbikpKSkpKSkpKQorCisoZXJ0LWRlZnRl c3QgdGVzdC1vYi9kZW1hcmNhdGUtYmxvY2stc3BsaXQtdXNlci1lcnJvcnMgKCkKKyAgIlRlc3Qg Zm9yIGB1c2VyLWVycm9yJ3MgaW4gc3BsaXR0aW5nIgorICAobGV0ICgob3JnLWFkYXB0LWluZGVu dGF0aW9uIHQpCisgICAgICAgIChvcmctZWRpdC1zcmMtY29udGVudC1pbmRlbnRhdGlvbiAyKQor ICAgICAgICAob3JnLXNyYy1wcmVzZXJ2ZS1pbmRlbnRhdGlvbikpCisgICAgKGxldCogKChjYXB0 aW9uICIjK2NhcHRpb246IGNhcHRpb24uIikKKyAgICAgICAgICAgKHdpdGhpbi1ib2R5ICI7OyB3 aXRoaW4tYm9keSIpCisgICAgICAgICAgIChiZWxvdy1ibG9jayAiIyBiZWxvdyBibG9jayIpCisg ICAgICAgICAgICh0ZW1wbGF0ZSAgIgorJXMlcworIytiZWdpbl9zcmMgZW1hY3MtbGlzcAorCisg ICVzCisKKyMrZW5kX3NyYworCislcyVzCisiKSkKKyAgICAgIDs7IFRlc3QgcG9pbnQgYXQgY2Fw dGlvbi4KKyAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dAorICAgICAgICAgIChmb3JtYXQg dGVtcGxhdGUgIjxwb2ludD4iIGNhcHRpb24gd2l0aGluLWJvZHkgYmVsb3ctYmxvY2sgIiIpCisg ICAgICAgIChzaG91bGQtZXJyb3IgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1 c2VyLWVycm9yKSkKKyAgICAgIDs7IFRlc3QgcmVnaW9uIGZyb20gYmVsb3cgdGhlIGJsb2NrICht YXJrKSB0byB3aXRoaW4gdGhlIGJvZHkgKHBvaW50KS4KKyAgICAgIChvcmctdGVzdC13aXRoLXRl bXAtdGV4dAorICAgICAgICAgIChmb3JtYXQgdGVtcGxhdGUgIiIgY2FwdGlvbiB3aXRoaW4tYm9k eSBiZWxvdy1ibG9jayAiPHBvaW50PiIpCisgICAgICAgIDs7IFNldCBtYXJrLgorICAgICAgICAo dHJhbnNpZW50LW1hcmstbW9kZSAxKQorICAgICAgICAocHVzaC1tYXJrIChwb2ludCkgdCB0KQor ICAgICAgICA7OyBTZXQgcG9pbnQuCisgICAgICAgIChzaG91bGQgKHNlYXJjaC1iYWNrd2FyZCB3 aXRoaW4tYm9keSBuaWwgJ25vZXJyb3IpKQorICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdp bm5pbmcgMCkpCisgICAgICAgIChzaG91bGQtZXJyb3IgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxv Y2spIDp0eXBlICd1c2VyLWVycm9yKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qtb2IvZGVtYXJj YXRlLWJsb2NrLXdyYXAtcG9pbnQgKCkKKyAgIlRlc3Qgd3JhcHBpbmcgcG9pbnQgaW4gYmxhbmsg bGluZXMgYmVsb3cgYSBzb3VyY2UgYmxvY2suIgorICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQg IgorIytiZWdpbl9zcmMgYW55LWxhbmd1YWdlIC1pIC1uIDp2YXIgaGVyZT1cIm5vdCBkdXBsaWNh dGVkXCIKK3RvIHVwcGVyIGJsb2NrCisjK2VuZF9zcmMKKzxwb2ludD4KKyIKKyAgICAobGV0IChp bmZvIHZhcnMpCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykKKyAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCisgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrKQorICAg ICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpICA7OyB1cHBlciBz b3VyY2UgYmxvY2sgaW5mbworICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1nZXQtdmFycyAo bnRoIDIgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1YWdlIiAobnRo IDAgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAidG8gdXBwZXIgYmxvY2siIChvcmct dHJpbSAobnRoIDEgaW5mbykpKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIm5vdCBkdXBsaWNh dGVkIiAoY2RyIChhc3NxICdoZXJlIHZhcnMpKSkpCisgICAgICAoc2hvdWxkIChzdHJpbmc9ICIt aSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisg ICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkgOzsgbG93ZXIg c291cmNlIGJsb2NrIGluZm8KKyAgICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0tZ2V0LXZhcnMg KG50aCAyIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50 aCAwIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIiIgKG9yZy10cmltIChudGggMSBp bmZvKSkpKQorICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgIChzaG91bGQgKHN0cmluZz0g IiIgKG50aCAzIGluZm8pKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRlc3Qtb2IvZGVtYXJjYXRlLWJs b2NrLXdyYXAtcmVnaW9uICgpCisgICJUZXN0IHdyYXBwaW5nIHJlZ2lvbiBpbiBibGFuayBsaW5l cyBiZWxvdyBhIHNvdXJjZSBibG9jay4iCisgIChsZXQgKChyZWdpb24tdGV4dCAibWFyayB0aGlz IGxpbmUgYXMgcmVnaW9uIGxlYXZpbmcgcG9pbnQgaW4gYmxhbmsgbGluZXMiKSkKKyAgICAob3Jn LXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1hdCAiCisjK2JlZ2luX3NyYyBhbnktbGFuZ3VhZ2Ug LWkgLW4gOnZhciBoZXJlPVwibm90IGR1cGxpY2F0ZWRcIgordG8gdXBwZXIgYmxvY2sKKyMrZW5k X3NyYworPHBvaW50PgorJXMKKyIgcmVnaW9uLXRleHQpCisgICAgICAobGV0IChpbmZvIHZhcnMp CisgICAgICAgICh0cmFuc2llbnQtbWFyay1tb2RlIDEpCisgICAgICAgIChwdXNoLW1hcmsgKHBv aW50KSB0IHQpCisgICAgICAgIChzZWFyY2gtZm9yd2FyZCByZWdpb24tdGV4dCkKKyAgICAgICAg KGV4Y2hhbmdlLXBvaW50LWFuZC1tYXJrKQorICAgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1i bG9jaykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKG9yZy1iYWJl bC1uZXh0LXNyYy1ibG9jaykKKyAgICAgICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMt YmxvY2staW5mbykpICA7OyB1cHBlciBzb3VyY2UgYmxvY2sgaW5mbworICAgICAgICAoc2V0cSB2 YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZvKSkpCisgICAgICAgIChzaG91bGQg KHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgICAgKHNob3VsZCAo c3RyaW5nPSAidG8gdXBwZXIgYmxvY2siIChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSAibm90IGR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hlcmUgdmFy cykpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBpbmZvKSkpCisg ICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAgICAgIChzZXRxIGluZm8gKG9y Zy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKSA7OyBsb3dlciBzb3VyY2UgYmxvY2sgaW5mbwor ICAgICAgICAoc2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZvKSkpCisg ICAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAg ICAgICAgKHNob3VsZCAoc3RyaW5nPSByZWdpb24tdGV4dCAob3JnLXRyaW0gKG50aCAxIGluZm8p KSkpCisgICAgICAgIChzaG91bGQtbm90IHZhcnMpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0g IiIgKG50aCAzIGluZm8pKSkpKSkpCisKIChwcm92aWRlICd0ZXN0LW9iKQogCiA7OzsgdGVzdC1v YiBlbmRzIGhlcmUKLS0gCjIuNDIuMAoK --=_d293acf7ab420d118a06fe17f6af12fb--