From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Herbert Euler" Newsgroups: gmane.emacs.devel Subject: A prototype of intelligent replace for Emacs Date: Sun, 29 Apr 2007 16:32:58 +0800 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_7cee_1da6_3243" X-Trace: sea.gmane.org 1177835592 27925 80.91.229.12 (29 Apr 2007 08:33:12 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 29 Apr 2007 08:33:12 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Apr 29 10:33:10 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Hi4qD-0003gV-8T for ged-emacs-devel@m.gmane.org; Sun, 29 Apr 2007 10:33:10 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hi4wF-000833-Lm for ged-emacs-devel@m.gmane.org; Sun, 29 Apr 2007 04:39:23 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Hi4wB-0007zA-46 for emacs-devel@gnu.org; Sun, 29 Apr 2007 04:39:19 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Hi4wA-0007x9-0k for emacs-devel@gnu.org; Sun, 29 Apr 2007 04:39:18 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hi4w9-0007wg-Qt for emacs-devel@gnu.org; Sun, 29 Apr 2007 04:39:17 -0400 Original-Received: from bay0-omc2-s16.bay0.hotmail.com ([65.54.246.152]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Hi4q5-0001yA-0r for emacs-devel@gnu.org; Sun, 29 Apr 2007 04:33:02 -0400 Original-Received: from hotmail.com ([65.55.154.83]) by bay0-omc2-s16.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668); Sun, 29 Apr 2007 01:32:59 -0700 Original-Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Sun, 29 Apr 2007 01:32:59 -0700 Original-Received: from 65.55.154.123 by by143fd.bay143.hotmail.msn.com with HTTP; Sun, 29 Apr 2007 08:32:58 GMT X-Originating-IP: [216.145.54.7] X-Originating-Email: [herberteuler@hotmail.com] X-Sender: herberteuler@hotmail.com X-OriginalArrivalTime: 29 Apr 2007 08:32:59.0670 (UTC) FILETIME=[FE8B6B60:01C78A38] X-detected-kernel: Windows 2000 SP4, XP SP1+ X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:70358 Archived-At: This is a multi-part message in MIME format. ------=_NextPart_000_7cee_1da6_3243 Content-Type: text/plain; format=flowed I saw the following entry in etc/TODO some days ago: ** Implement intelligent search/replace, going beyond query-replace (see http://graphics.csail.mit.edu/~rcm/chi04.pdf). I thought I could work on it when reading that. After a few days' working, I get a prototype. I should have discussed it in this list, but I found difficulties talking about my thought in English, so the only way to describe it clearly for me is to write such a prototype. I apologize for this. The prototype is attached in this message. It is merely a prototype, so many features, such as documents, mouse operation supports, more precise classifications and so on, are not present in it. However, it works well (at least in my opinion) with keyboard. To start with it, first load the attached file. To replace text intelligently, execute M-x ireplace. It will ask for a piece of text. Another window will be opened to show all classified matches of text in the buffer that M-x ireplace is executed in, and the cursor will be moved into this window automatically. I call this buffer the "ireplace" buffer. The ireplace buffer contains many classes, classified with some method. Each of the classes itself contains many "blocks". Classes and blocks are showed in alternate color, respectively, to help the user distinguish them. The user can mark several classes and/or blocks, and then replace text of marked classes and/or blocks with another text. Then, the user may mark and replace again. In the ireplace buffer, the user can: - Type n and p to move through blocks; - Type M-n and M-p to move through classes; - Type RET to follow the block, or open/fold a class; - Type m to mark or de-mark blocks or classes; - Type r to mark blocks reversely; - Type M-r to mark classes reversely; - Type x to perform the replace; - Type q to close the ireplace buffer. Please try out the prototype. As I said, there are many features missed in the prototype: - User interface re-design; - Mouse operations; - Console support; - More commands; - More precise classifying algorithm, for many mainstream major modes; - Documents and comments in source code; - Coordination in details; - Code improvement; - Emacs convension commits, and perhaps other things. These are because that I am not sure about them. Please give me suggestions on those things, I will improve the prototype. When it becomes stable/mature, I would like to contribute it into Emacs. Thanks. Regards, Guanpeng Xu _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ ------=_NextPart_000_7cee_1da6_3243 Content-Type: application/octet-stream; name="ireplace.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ireplace.el" Ozs7IGlyZXBsYWNlLmVsIC0tLSBpbnRlbGxpZ2VudCByZXBsYWNlIGZvciBF bWFjcw0KDQo7OyBDb3B5cmlnaHQgKEMpIDIwMDcgR3VhbnBlbmcgWHUuDQoN Cjs7IE1haW50YWluZXI6IEd1YW5wZW5nIFh1IDxoZXJiZXJ0ZXVsZXJAaG90 bWFpbC5jb20+DQo7OyBLZXl3b3JkczogaW50ZWxsaWdlbnQgcmVwbGFjZQ0K DQo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgR05VIEVtYWNzLg0KDQo7 OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KOzsgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkNCjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCjs7IGFueSBsYXRl ciB2ZXJzaW9uLg0KDQo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCjs7IGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mDQo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQo7OyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQo7OyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQ0KOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUNCjs7 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g U3RyZWV0LCBGaWZ0aCBGbG9vciwNCjs7IEJvc3RvbiwgTUEgMDIxMTAtMTMw MSwgVVNBLg0KDQo7OzsgQ29tbWVudGFyeToNCg0KOzs7IENvZGU6DQoNCjs7 IFZhcmlhYmxlIGRlZmluaXRpb25zLg0KDQooZGVmdmFyIGlyZXBsYWNlLWZl YXR1cmUtc3BlY3MgbmlsDQogICJTcGVjaWZpY2F0aW9uIGZvciBjb21wdXRp bmcsIGNvbXBhcmluZyBhbmQgZGlzcGxheWluZyBmZWF0dXJlcy4iKQ0KKG1h a2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdpcmVwbGFjZS1mZWF0dXJlLXNw ZWNzKQ0KDQooZGVmdmFyIGlyZXBsYWNlLWNsYXNzZXMgbmlsDQogICJBbGwg b2YgdGhlIGNsYXNzZXMgaW4gYnVmZmVyIGBpcmVwbGFjZS1vcmlnaW5hbC1i dWZmZXInLiIpDQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ2lyZXBs YWNlLWNsYXNzZXMpDQoNCihkZWZ2YXIgaXJlcGxhY2Utb2xkLXdpbmRvdy1j b25maWd1cmF0aW9uIG5pbA0KICAiVGhlIG9sZCB3aW5kb3cgY29uZmlndXJh dGlvbi4iKQ0KDQooZGVmdmFyIGlyZXBsYWNlLW9yaWdpbmFsLWJ1ZmZlciBu aWwNCiAgIlRoZSBvcmlnaW5hbCBidWZmZXIgaW4gd2hpY2ggdGhlIFxcW2ly ZXBsYWNlXSBjb21tYW5kIHdhcyBpbnZva2VkLiIpDQoobWFrZS12YXJpYWJs ZS1idWZmZXItbG9jYWwgJ2lyZXBsYWNlLW9yaWdpbmFsLWJ1ZmZlcikNCg0K KGRlZnZhciBpcmVwbGFjZS1vcmlnaW5hbC1idWZmZXItdGljayBuaWwNCiAg IlRoZSB0aWNrIGZvciB0aGUgb3JpZ2luYWwgYnVmZmVyLg0KU2VlIGFsc28g YGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrJy4iKQ0KKG1ha2UtdmFyaWFi bGUtYnVmZmVyLWxvY2FsICdpcmVwbGFjZS1vcmlnaW5hbC1idWZmZXItdGlj aykNCg0KKGRlZnZhciBpcmVwbGFjZS1zZWFyY2hlZC10ZXh0IG5pbA0KICAi VGhlIHRleHQgc2VhcmNoZWQgcHJldmlvdXNseS4iKQ0KKG1ha2UtdmFyaWFi bGUtYnVmZmVyLWxvY2FsICdpcmVwbGFjZS1zZWFyY2hlZC10ZXh0KQ0KDA0K OzsgVGhlIGNvcmUgY2xhc3NpZnlpbmcgYWxnb3JpdGhtLg0KDQooZGVmdW4g aXJlcGxhY2UtY2xhc3NpZnktbWF0Y2hlcyAoZmVhdHVyZS1zcGVjcw0KCQkJ CSAgc3RyaW5nIGJvdW5kIG5vZXJyb3IgdXNlLXJlZ2V4cCkNCiAgKGxldCAo KG1hdGNoZXMgKGlyZXBsYWNlLWZpbmQtYWxsLW1hdGNoZXMgc3RyaW5nIGJv dW5kDQoJCQkJCSAgICBub2Vycm9yIHVzZS1yZWdleHApKQ0KCWJsb2Nrcw0K CXNlbWktY2xhc3Nlcw0KCW5ldy1zZW1pLWNsYXNzZXMNCgljbGFzc2VzKQ0K ICAgIDs7IENvbXB1dGUgZmVhdHVyZXMgZm9yIGVhY2ggZm91bmQgbWF0Y2gg dG8gY3JlYXRlIGJsb2NrcyBmb3IgdGhlDQogICAgOzsgbWF0Y2hlcy4NCiAg ICAoZG9saXN0IChtYXRjaCBtYXRjaGVzKQ0KICAgICAgKGxldCAoZmVhdHVy ZXMpDQoJKGRvbGlzdCAoc3BlYyBmZWF0dXJlLXNwZWNzKQ0KCSAgKHNldHEg ZmVhdHVyZXMNCgkJKGNvbnMgKHNhdmUtbWF0Y2gtZGF0YQ0KCQkJKGZ1bmNh bGwgKGlyZXBsYWNlLXNwZWMtZmVhdHVyZS1jb21wdXRpbmctZnVuY3Rpb24g c3BlYykNCgkJCQkgbWF0Y2gpKQ0KCQkgICAgICBmZWF0dXJlcykpKQ0KCTs7 IFBlcmhhcHMgd2UgY2FuIGF2b2lkIG1ha2luZyBhIGJsb2NrIGhlcmUgaW4g c29tZSBjYXNlcy4NCgkoc2V0cSBibG9ja3MgKGNvbnMgKGlyZXBsYWNlLW1h a2UtYmxvY2sgbWF0Y2gNCgkJCQkJCShucmV2ZXJzZSBmZWF0dXJlcykNCgkJ CQkJCW5pbCkNCgkJCSAgIGJsb2NrcykpKSkNCiAgICA7OyBDbGFzc2lmeSB0 aGUgYmxvY2tzLg0KICAgIChzZXRxIHNlbWktY2xhc3NlcyAobGlzdCBibG9j a3MpKQ0KICAgIChkb3RpbWVzIChpIChsZW5ndGggZmVhdHVyZS1zcGVjcykp DQogICAgICAobGV0KiAoKHNwZWMgKG50aCBpIGZlYXR1cmUtc3BlY3MpKQ0K CSAgICAgKGxlc3MtdGhhbiAoaXJlcGxhY2Utc3BlYy1mZWF0dXJlLWNvbXBh cmluZy1mdW5jdGlvbiBzcGVjKSkpDQoJKGRvbGlzdCAoc2VtaS1jbGFzcyBz ZW1pLWNsYXNzZXMpDQoJICAobGV0ICh0aGlzLXNlbWktY2xhc3MNCgkJbGFz dC1mZWF0dXJlKQ0KCSAgICAoc2V0cSBzZW1pLWNsYXNzDQoJCSAgKHNvcnQg c2VtaS1jbGFzcw0KCQkJKGxhbWJkYSAoYjEgYjIpDQoJCQkgIChmdW5jYWxs IGxlc3MtdGhhbg0KCQkJCSAgIChudGggaSAoaXJlcGxhY2UtYmxvY2stZmVh dHVyZXMgYjEpKQ0KCQkJCSAgIChudGggaSAoaXJlcGxhY2UtYmxvY2stZmVh dHVyZXMgYjIpKSkpKSkNCgkgICAgKGRvbGlzdCAoYmxvY2sgc2VtaS1jbGFz cykNCgkgICAgICAobGV0ICgoZmVhdHVyZSAobnRoIGkgKGlyZXBsYWNlLWJs b2NrLWZlYXR1cmVzIGJsb2NrKSkpKQ0KCQkoY29uZCAoKG51bGwgbGFzdC1m ZWF0dXJlKQ0KCQkgICAgICAgKHNldHEgdGhpcy1zZW1pLWNsYXNzIChsaXN0 IGJsb2NrKQ0KCQkJICAgICBsYXN0LWZlYXR1cmUgZmVhdHVyZSkpDQoJCSAg ICAgICgobm90IChvciAoZnVuY2FsbCBsZXNzLXRoYW4gbGFzdC1mZWF0dXJl IGZlYXR1cmUpDQoJCQkJKGZ1bmNhbGwgbGVzcy10aGFuIGZlYXR1cmUgbGFz dC1mZWF0dXJlKSkpDQoJCSAgICAgICAoc2V0cSB0aGlzLXNlbWktY2xhc3Mg KGNvbnMgYmxvY2sgdGhpcy1zZW1pLWNsYXNzKSkpDQoJCSAgICAgICh0DQoJ CSAgICAgICAoc2V0cSBuZXctc2VtaS1jbGFzc2VzIChjb25zIHRoaXMtc2Vt aS1jbGFzcw0KCQkJCQkJICAgIG5ldy1zZW1pLWNsYXNzZXMpDQoJCQkgICAg IHRoaXMtc2VtaS1jbGFzcyAobGlzdCBibG9jaykNCgkJCSAgICAgbGFzdC1m ZWF0dXJlIGZlYXR1cmUpKSkpKQ0KCSAgICAoaWYgdGhpcy1zZW1pLWNsYXNz DQoJCShzZXRxIG5ldy1zZW1pLWNsYXNzZXMgKGNvbnMgdGhpcy1zZW1pLWNs YXNzDQoJCQkJCSAgICAgbmV3LXNlbWktY2xhc3NlcykpKSkpDQoJKHNldHEg c2VtaS1jbGFzc2VzIG5ldy1zZW1pLWNsYXNzZXMpKSkNCiAgICAoZG9saXN0 IChzZW1pLWNsYXNzIHNlbWktY2xhc3NlcykNCiAgICAgIChzZXRxIGNsYXNz ZXMgKGNvbnMgKGlyZXBsYWNlLW1ha2UtY2xhc3Mgc2VtaS1jbGFzcyBuaWwp DQoJCQkgIGNsYXNzZXMpKSkNCiAgICBjbGFzc2VzKSkNCg0KKGRlZnVuIGly ZXBsYWNlLWZpbmQtYWxsLW1hdGNoZXMgKHN0cmluZyBib3VuZCBub2Vycm9y IHVzZS1yZWdleHApDQogIChsZXQgKChzZWFyY2gtZnVuYyAoaWYgdXNlLXJl Z2V4cA0KCQkJICdyZS1zZWFyY2gtZm9yd2FyZA0KCQkgICAgICAgJ3NlYXJj aC1mb3J3YXJkKSkNCgltYXRjaGVzKQ0KICAgIChzYXZlLW1hdGNoLWRhdGEN CiAgICAgIChzYXZlLWV4Y3Vyc2lvbg0KCShnb3RvLWNoYXIgKHBvaW50LW1p bikpDQoJKHdoaWxlIChmdW5jYWxsIHNlYXJjaC1mdW5jIHN0cmluZyBib3Vu ZCBub2Vycm9yKQ0KCSAgKHNldHEgbWF0Y2hlcyAoY29ucyAobWF0Y2gtZGF0 YSkgbWF0Y2hlcykpKSkpDQogICAgbWF0Y2hlcykpDQoMDQo7OyBGZWF0dXJl czogY29tcHV0YXRpb24sIGNvbXBhcmlzb24gYW5kIGRpc3BsYXkuDQoNCihk ZWZ1biBpcmVwbGFjZS1jb21wdXRlLXRleHQtbW9kZS1mZWF0dXJlIChtYXRj aCkNCiAgKGxldCAoc3RhcnQgZW5kKQ0KICAgIChzZXQtbWF0Y2gtZGF0YSBt YXRjaCkNCiAgICAoc2F2ZS1leGN1cnNpb24NCiAgICAgIChnb3RvLWNoYXIg KG1hdGNoLWJlZ2lubmluZyAwKSkNCiAgICAgIChmb3J3YXJkLXdvcmQgMSkN CiAgICAgIChiYWNrd2FyZC13b3JkIDEpDQogICAgICAoc2V0cSBzdGFydCAo cG9pbnQpKQ0KICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQ0KICAg ICAgKGJhY2t3YXJkLXdvcmQgMSkNCiAgICAgIChmb3J3YXJkLXdvcmQgMSkN CiAgICAgIChzZXRxIGVuZCAocG9pbnQpKSkNCiAgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQ0KDQooZGVmdW4gaXJl cGxhY2UtY29tcGFyZS10ZXh0LW1vZGUtZmVhdHVyZXMgKHMxIHMyKQ0KICAo c3RyaW5nPCBzMSBzMikpDQoNCihkZWZ1biBpcmVwbGFjZS1kaXNwbGF5LXRl eHQtbW9kZS1mZWF0dXJlIChmZWF0dXJlKQ0KICBmZWF0dXJlKQ0KDQooZGVm dmFyIGlyZXBsYWNlLXRleHQtbW9kZS1zcGVjDQogIChsaXN0ICdpcmVwbGFj ZS1jb21wdXRlLXRleHQtbW9kZS1mZWF0dXJlDQoJJ2lyZXBsYWNlLWNvbXBh cmUtdGV4dC1tb2RlLWZlYXR1cmVzDQoJJ2lyZXBsYWNlLWRpc3BsYXktdGV4 dC1tb2RlLWZlYXR1cmUpKQ0KDQooZGVmdW4gaXJlcGxhY2Utc3BlYy1mZWF0 dXJlLWNvbXB1dGluZy1mdW5jdGlvbiAoc3BlYykNCiAgKG50aCAwIHNwZWMp KQ0KDQooZGVmdW4gaXJlcGxhY2Utc3BlYy1mZWF0dXJlLWNvbXBhcmluZy1m dW5jdGlvbiAoc3BlYykNCiAgKG50aCAxIHNwZWMpKQ0KDQooZGVmdW4gaXJl cGxhY2Utc3BlYy1mZWF0dXJlLWRpc3BsYXlpbmctZnVuY3Rpb24gKHNwZWMp DQogIChudGggMiBzcGVjKSkNCgwNCjs7IEJsb2NrIHJlbGF0ZWQgZnVuY3Rp b25zLg0KDQooZGVmdW4gaXJlcGxhY2UtbWFrZS1ibG9jayAobWF0Y2ggZmVh dHVyZXMgbWFya2VkKQ0KICAobGlzdCBtYXRjaCBmZWF0dXJlcyBtYXJrZWQp KQ0KDQooZGVmdW4gaXJlcGxhY2UtYmxvY2stbWF0Y2ggKGJsb2NrKQ0KICAo bnRoIDAgYmxvY2spKQ0KDQooZGVmdW4gaXJlcGxhY2UtYmxvY2stZmVhdHVy ZXMgKGJsb2NrKQ0KICAobnRoIDEgYmxvY2spKQ0KDQooZGVmdW4gaXJlcGxh Y2UtYmxvY2stbWFya2VkIChibG9jaykNCiAgKG50aCAyIGJsb2NrKSkNCg0K KGRlZnVuIGlyZXBsYWNlLXNldC1ibG9jay1tYXJrZWQgKGJsb2NrIG1hcmtl ZCkNCiAgKHNldGNhciAobnRoY2RyIDIgYmxvY2spIG1hcmtlZCkpDQoNCihk ZWZ1biBpcmVwbGFjZS1pbnRlcm5hbC10b2dnbGUtYmxvY2stbWFya2VkIChj bGFzcyBibG9jaykNCiAgKGxldCAobWFya2VkDQoJbWFya2VkLXJlbW92ZWQp DQogICAgOzsgRG8gd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIEJMT0NLIGlz IGluIENMQVNTPw0KICAgIChpcmVwbGFjZS1zZXQtYmxvY2stbWFya2VkIGJs b2NrDQoJCQkgICAgICAgKG5vdCAoaXJlcGxhY2UtYmxvY2stbWFya2VkIGJs b2NrKSkpDQogICAgKHNldHEgbWFya2VkIChtYXBjYXIgJ2lyZXBsYWNlLWJs b2NrLW1hcmtlZA0KCQkJICAoaXJlcGxhY2UtY2xhc3MtYmxvY2tzIGNsYXNz KSkNCgkgIG1hcmtlZC1yZW1vdmVkIChyZW1vdmUgbmlsIG1hcmtlZCkpDQog ICAgKGNvbmQgKChlcXVhbCBtYXJrZWQgbWFya2VkLXJlbW92ZWQpDQoJICAg KGlyZXBsYWNlLXNldC1jbGFzcy1tYXJrZWQgY2xhc3MgdCkpDQoJICAoKG51 bGwgbWFya2VkLXJlbW92ZWQpDQoJICAgKGlyZXBsYWNlLXNldC1jbGFzcy1t YXJrZWQgY2xhc3MgbmlsKSkNCgkgICh0DQoJICAgKGlyZXBsYWNlLXNldC1j bGFzcy1tYXJrZWQgY2xhc3MgJ3BhcnRpYWwpKSkpKQ0KDA0KOzsgQ2xhc3Mg cmVsYXRlZCBmdW5jdGlvbnMuDQoNCihkZWZ1biBpcmVwbGFjZS1tYWtlLWNs YXNzIChibG9ja3MgbWFya2VkKQ0KICAobGlzdCBibG9ja3MgbWFya2VkKSkN Cg0KKGRlZnVuIGlyZXBsYWNlLWNsYXNzLWJsb2NrcyAoY2xhc3MpDQogIChu dGggMCBjbGFzcykpDQoNCihkZWZ1biBpcmVwbGFjZS1jbGFzcy1tYXJrZWQg KGNsYXNzKQ0KICAobnRoIDEgY2xhc3MpKQ0KDQooZGVmdW4gaXJlcGxhY2Ut c2V0LWNsYXNzLW1hcmtlZCAoY2xhc3MgbWFya2VkKQ0KICAoc2V0Y2FyIChu dGhjZHIgMSBjbGFzcykgbWFya2VkKSkNCg0KKGRlZnVuIGlyZXBsYWNlLWlu dGVybmFsLXRvZ2dsZS1jbGFzcy1tYXJrZWQgKGNsYXNzKQ0KICAobGV0ICgo bWFya2VkIChpcmVwbGFjZS1jbGFzcy1tYXJrZWQgY2xhc3MpKSkNCiAgICAo c2V0cSBtYXJrZWQgKGlmIChlcSBtYXJrZWQgJ3BhcnRpYWwpDQoJCSAgICAg dA0KCQkgICAobm90IG1hcmtlZCkpKQ0KICAgIChkb2xpc3QgKGJsb2NrIChp cmVwbGFjZS1jbGFzcy1ibG9ja3MgY2xhc3MpKQ0KICAgICAgKGlyZXBsYWNl LXNldC1ibG9jay1tYXJrZWQgYmxvY2sgbWFya2VkKSkNCiAgICAoaXJlcGxh Y2Utc2V0LWNsYXNzLW1hcmtlZCBjbGFzcyBtYXJrZWQpKSkNCgwNCjs7IERp c3BsYXkgcmVsYXRlZCBzdHVmZi4NCg0KKGRlZmZhY2UgaXJlcGxhY2UtbWF0 Y2gNCiAgJygoKChjbGFzcyBjb2xvcikpDQogICAgICg6YmFja2dyb3VuZCAi eWVsbG93IikpKQ0KICAiRmFjZSBmb3IgaGlnaGxpZ2h0aW5nIG1hdGNoZXMg aW4gdGhlIG9yaWdpbmFsIGJ1ZmZlci4iDQogIDpncm91cCAnaXJlcGxhY2Up DQoNCihkZWZmYWNlIGlyZXBsYWNlLW1hdGNoLW1hcmtlZA0KICAnKCgoKGNs YXNzIGNvbG9yKSkNCiAgICAgKDpiYWNrZ3JvdW5kICJyZWQiKSkpDQogICJG YWNlIGZvciBoaWdobGlnaHRpbmcgbWFya2VkIG1hdGNoZXMgaW4gdGhlIG9y aWdpbmFsIGJ1ZmZlci4iDQogIDpncm91cCAnaXJlcGxhY2UpDQoNCihkZWZm YWNlIGlyZXBsYWNlLWNsYXNzLWhlYWRlci0xDQogICcoKCgoY2xhc3MgY29s b3IpKQ0KICAgICAoOmJhY2tncm91bmQgInB1cnBsZTEiIDpmb3JlZ3JvdW5k ICJ3aGl0ZSIpKSkNCiAgIkZhY2UgZm9yIG5vbi1tYXJrZWQgY2xhc3MgaGVh ZGVyIGxpbmUsIHR5cGUgSS4iDQogIDpncm91cCAnaXJlcGxhY2UpDQoNCihk ZWZmYWNlIGlyZXBsYWNlLWNsYXNzLWhlYWRlci0xLXBhcnRpYWxseS1tYXJr ZWQNCiAgJygoKChjbGFzcyBjb2xvcikpDQogICAgICg6YmFja2dyb3VuZCAi cHVycGxlMyIgOmZvcmVncm91bmQgIndoaXRlIikpKQ0KICAiRmFjZSBmb3Ig cGFydGlhbGx5IG1hcmtlZCBjbGFzcyBoZWFkZXIgbGluZSwgdHlwZSBJLiIN CiAgOmdyb3VwICdpcmVwbGFjZSkNCg0KKGRlZmZhY2UgaXJlcGxhY2UtY2xh c3MtaGVhZGVyLTEtbWFya2VkDQogICcoKCgoY2xhc3MgY29sb3IpKQ0KICAg ICAoOmJhY2tncm91bmQgInB1cnBsZTQiIDpmb3JlZ3JvdW5kICJ3aGl0ZSIp KSkNCiAgIkZhY2UgZm9yIG1hcmtlZCBjbGFzcyBoZWFkZXIgbGluZSwgdHlw ZSBJLiINCiAgOmdyb3VwICdpcmVwbGFjZSkNCg0KKGRlZmZhY2UgaXJlcGxh Y2UtY2xhc3MtaGVhZGVyLTINCiAgJygoKChjbGFzcyBjb2xvcikpDQogICAg ICg6YmFja2dyb3VuZCAiUm95YWxCbHVlMSIgOmZvcmVncm91bmQgIndoaXRl IikpKQ0KICAiRmFjZSBmb3Igbm9uLW1hcmtlZCBjbGFzcyBoZWFkZXIgbGlu ZSwgdHlwZSBJSS4iDQogIDpncm91cCAnaXJlcGxhY2UpDQoNCihkZWZmYWNl IGlyZXBsYWNlLWNsYXNzLWhlYWRlci0yLXBhcnRpYWxseS1tYXJrZWQNCiAg JygoKChjbGFzcyBjb2xvcikpDQogICAgICg6YmFja2dyb3VuZCAiUm95YWxC bHVlMyIgOmZvcmVncm91bmQgIndoaXRlIikpKQ0KICAiRmFjZSBmb3IgcGFy dGlhbGx5IG1hcmtlZCBjbGFzcyBoZWFkZXIgbGluZSwgdHlwZSBJSS4iDQog IDpncm91cCAnaXJlcGxhY2UpDQoNCihkZWZmYWNlIGlyZXBsYWNlLWNsYXNz LWhlYWRlci0yLW1hcmtlZA0KICAnKCgoKGNsYXNzIGNvbG9yKSkNCiAgICAg KDpiYWNrZ3JvdW5kICJSb3lhbEJsdWU0IiA6Zm9yZWdyb3VuZCAid2hpdGUi KSkpDQogICJGYWNlIGZvciBtYXJrZWQgY2xhc3MgaGVhZGVyIGxpbmUsIHR5 cGUgSUkuIg0KICA6Z3JvdXAgJ2lyZXBsYWNlKQ0KDQooZGVmZmFjZSBpcmVw bGFjZS1ibG9jay0xDQogICcoKCgoY2xhc3MgY29sb3IpKQ0KICAgICAoOmJh Y2tncm91bmQgIndoaXRlIikpKQ0KICAiRmFjZSBmb3Igbm9uLW1hcmtlZCBi bG9jaywgdHlwZSBJLiINCiAgOmdyb3VwICdpcmVwbGFjZSkNCg0KKGRlZmZh Y2UgaXJlcGxhY2UtYmxvY2stMS1tYXJrZWQNCiAgJygoKChjbGFzcyBjb2xv cikpDQogICAgICg6YmFja2dyb3VuZCAiZ3JheTY2IikpKQ0KICAiRmFjZSBm b3IgbWFya2VkIGJsb2NrLCB0eXBlIEkuIg0KICA6Z3JvdXAgJ2lyZXBsYWNl KQ0KDQooZGVmZmFjZSBpcmVwbGFjZS1ibG9jay0yDQogICcoKCgoY2xhc3Mg Y29sb3IpKQ0KICAgICAoOmJhY2tncm91bmQgImdyYXk4NyIpKSkNCiAgIkZh Y2UgZm9yIG5vbi1tYXJrZWQgYmxvY2ssIHR5cGUgSUkuIg0KICA6Z3JvdXAg J2lyZXBsYWNlKQ0KDQooZGVmZmFjZSBpcmVwbGFjZS1ibG9jay0yLW1hcmtl ZA0KICAnKCgoKGNsYXNzIGNvbG9yKSkNCiAgICAgKDpiYWNrZ3JvdW5kICJn cmF5NTAiKSkpDQogICJGYWNlIGZvciBtYXJrZWQgYmxvY2ssIHR5cGUgSUku Ig0KICA6Z3JvdXAgJ2lyZXBsYWNlKQ0KDQooZGVmdW4gaXJlcGxhY2UtZ2V0 LWJ1ZmZlciAoKQ0KICAoZ2V0LWJ1ZmZlci1jcmVhdGUgKGNvbmNhdCAiaXJl cGxhY2UtIiAoYnVmZmVyLW5hbWUpKSkpDQoNCihkZWZ1biBpcmVwbGFjZS10 ZXh0LWluZm8gKGJsb2NrKQ0KICAobGV0KiAoKG1hdGNoIChpcmVwbGFjZS1i bG9jay1tYXRjaCBibG9jaykpDQoJIChidWZmZXIgKG1hcmtlci1idWZmZXIg KGNhciBtYXRjaCkpKQ0KCSAoYXJvdW5kLWxpbmVzLWFtb3VudCAyKSkNCiAg ICAoaWYgKG51bGwgYnVmZmVyKQ0KCShzaWduYWwgJ2lyZXBsYWNlLW9yaWdp bmFsLWJ1ZmZlci1raWxsZWQgKGN1cnJlbnQtYnVmZmVyKSkpDQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgYnVmZmVyDQogICAgICAoc2F2ZS1tYXRjaC1k YXRhDQoJKHNldC1tYXRjaC1kYXRhIG1hdGNoKQ0KCShsZXQqIChjb250aW51 ZS1tb3ZpbmcNCgkgICAgICAgKHN0YXJ0IChzYXZlLWV4Y3Vyc2lvbg0KCQkJ KGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQ0KCQkJKHNldHEgY29u dGludWUtbW92aW5nIHQpDQoJCQkoZG90aW1lcyAoaSBhcm91bmQtbGluZXMt YW1vdW50KQ0KCQkJICAoaWYgY29udGludWUtbW92aW5nDQoJCQkgICAgICAo Zm9yd2FyZC1saW5lIC0xKSkNCgkJCSAgKHVubGVzcyAoPCAobGluZS1iZWdp bm5pbmctcG9zaXRpb24pDQoJCQkJICAgICAobGluZS1lbmQtcG9zaXRpb24p KQ0KCQkJICAgIChmb3J3YXJkLWxpbmUgMSkNCgkJCSAgICAoc2V0cSBjb250 aW51ZS1tb3ZpbmcgbmlsKSkpDQoJCQkobGluZS1iZWdpbm5pbmctcG9zaXRp b24pKSkNCgkgICAgICAgKGVuZCAoc2F2ZS1leGN1cnNpb24NCgkJICAgICAg KGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKQ0KCQkgICAgICAoc2V0cSBjb250 aW51ZS1tb3ZpbmcgdCkNCgkJICAgICAgKGRvdGltZXMgKGkgYXJvdW5kLWxp bmVzLWFtb3VudCkNCgkJCShpZiBjb250aW51ZS1tb3ZpbmcNCgkJCSAgICAo Zm9yd2FyZC1saW5lIDEpKQ0KCQkJKHVubGVzcyAoPCAobGluZS1iZWdpbm5p bmctcG9zaXRpb24pDQoJCQkJICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkNCgkJ CSAgKGZvcndhcmQtbGluZSAtMSkNCgkJCSAgKHNldHEgY29udGludWUtbW92 aW5nIG5pbCkpKQ0KCQkgICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkNCgkg ICAgICAgdGV4dA0KCSAgICAgICBvdmVybGF5LXN0YXJ0DQoJICAgICAgIG92 ZXJsYXktZW5kKQ0KCSAgKGZvbnQtbG9jay1mb250aWZ5LXJlZ2lvbiBzdGFy dCBlbmQpDQoJICAoc2V0LW1hdGNoLWRhdGEgbWF0Y2gpDQoJICAoc2V0cSB0 ZXh0IChidWZmZXItc3Vic3RyaW5nIHN0YXJ0IGVuZCkNCgkJb3ZlcmxheS1z dGFydCAoLSAobWF0Y2gtYmVnaW5uaW5nIDApIHN0YXJ0KQ0KCQlvdmVybGF5 LWVuZCAoKyBvdmVybGF5LXN0YXJ0DQoJCQkgICAgICAgKC0gKG1hdGNoLWVu ZCAwKSAobWF0Y2gtYmVnaW5uaW5nIDApKSkpDQoJICAobGlzdCB0ZXh0IG92 ZXJsYXktc3RhcnQgb3ZlcmxheS1lbmQpKSkpKSkNCg0KKGRlZnVuIGlyZXBs YWNlLW1ha2UtY2lyY3VsYXItbGlzdCAoYSBiKQ0KICAobGV0ICgobDEgKGxp c3QgYSkpDQoJKGwyIChsaXN0IGIpKSkNCiAgICAoc2V0Y2RyIGwxIGwyKQ0K ICAgIChzZXRjZHIgbDIgbDEpDQogICAgbDEpKQ0KDQooZGVmdW4gaXJlcGxh Y2Utc2V0dXAtaXJlcGxhY2UtYnVmZmVyIChvcmlnaW5hbC1idWZmZXINCgkJ CQkgICAgICAgYnVmZmVyDQoJCQkJICAgICAgIGZlYXR1cmUtc3BlY3MNCgkJ CQkgICAgICAgdGV4dA0KCQkJCSAgICAgICBjbGFzc2VzDQoJCQkJICAgICAg ICZvcHRpb25hbCB3aW5kb3ctY29uZmlndXJhdGlvbikNCiAgKGxldCAoKHRp Y2sgKGJ1ZmZlci1jaGFycy1tb2RpZmllZC10aWNrKSkNCgljbGFzcy1zdGFy dA0KCShjbGFzcy1mYWNlcyAoaXJlcGxhY2UtbWFrZS1jaXJjdWxhci1saXN0 ICdpcmVwbGFjZS1jbGFzcy1oZWFkZXItMQ0KCQkJCQkJICAnaXJlcGxhY2Ut Y2xhc3MtaGVhZGVyLTIpKQ0KCShibG9jay1mYWNlcyAoaXJlcGxhY2UtbWFr ZS1jaXJjdWxhci1saXN0ICdpcmVwbGFjZS1ibG9jay0xDQoJCQkJCQkgJ2ly ZXBsYWNlLWJsb2NrLTIpKQ0KCShjdXJyZW50IDApDQoJKHRvdGFsIChsZW5n dGggY2xhc3NlcykpKQ0KICAgIChpZiB3aW5kb3ctY29uZmlndXJhdGlvbg0K CShzZXRxIGlyZXBsYWNlLW9sZC13aW5kb3ctY29uZmlndXJhdGlvbiB3aW5k b3ctY29uZmlndXJhdGlvbikpDQogICAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmZmVyDQogICAgICAoaXJlcGxhY2UtbW9kZSkNCiAgICAgIChzZXRxIGJ1 ZmZlci1yZWFkLW9ubHkgbmlsKQ0KICAgICAgOzsgU2V0dXAgYnVmZmVyIGxv Y2FsIHZhcmlhYmxlcy4NCiAgICAgIChzZXRxIGlyZXBsYWNlLWZlYXR1cmUt c3BlY3MgZmVhdHVyZS1zcGVjcw0KCSAgICBpcmVwbGFjZS1jbGFzc2VzIGNs YXNzZXMNCgkgICAgaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyIG9yaWdpbmFs LWJ1ZmZlcg0KCSAgICBpcmVwbGFjZS1vcmlnaW5hbC1idWZmZXItdGljayB0 aWNrDQoJICAgIGlyZXBsYWNlLXNlYXJjaGVkLXRleHQgdGV4dCkNCiAgICAg IDs7IEluc2VydCBpcmVwbGFjZSBpbmZvcm1hdGlvbi4NCiAgICAgIChlcmFz ZS1idWZmZXIpDQogICAgICAoZG9saXN0IChjbGFzcyBpcmVwbGFjZS1jbGFz c2VzKQ0KCShzZXRxIGN1cnJlbnQgKDErIGN1cnJlbnQpDQoJICAgICAgY2xh c3Mtc3RhcnQgKHBvaW50KSkNCgk7OyBJbnNlcnQgY2xhc3MgaGVhZGVyIGxp bmUuDQoJKGluc2VydCAoZm9ybWF0ICJbQ2xhc3MgJWQgb2YgJWRdICIgY3Vy cmVudCB0b3RhbCkpDQoJKGRvdGltZXMgKGkgKGxlbmd0aCBpcmVwbGFjZS1m ZWF0dXJlLXNwZWNzKSkNCgkgIChsZXQqICgoc3BlYyAobnRoIGkgaXJlcGxh Y2UtZmVhdHVyZS1zcGVjcykpDQoJCSAoZGlzcGxheS1mdW5jIChpcmVwbGFj ZS1zcGVjLWZlYXR1cmUtZGlzcGxheWluZy1mdW5jdGlvbiBzcGVjKSkNCgkJ IChibG9jayAoY2FyIChpcmVwbGFjZS1jbGFzcy1ibG9ja3MgY2xhc3MpKSkN CgkJIChmZWF0dXJlIChudGggaSAoaXJlcGxhY2UtYmxvY2stZmVhdHVyZXMg YmxvY2spKSkpDQoJICAgIChpZiAoPiBpIDApDQoJCShpbnNlcnQgIiwgIikp DQoJICAgIChpbnNlcnQgKGZ1bmNhbGwgZGlzcGxheS1mdW5jIGZlYXR1cmUp KSkpDQoJKGFkZC10ZXh0LXByb3BlcnRpZXMgY2xhc3Mtc3RhcnQgKHBvaW50 KQ0KCQkJICAgICBgKGZhY2UgLChjYXIgY2xhc3MtZmFjZXMpIGlyZXBsYWNl LXNob3ctYm9keSBvbg0KCQkJCSAgICBrZXltYXAgLGlyZXBsYWNlLWhlYWRl ci1saW5lLW1hcCkpDQoJKHNldHEgY2xhc3MtZmFjZXMgKGNkciBjbGFzcy1m YWNlcykpDQoJOzsgSW5zZXJ0IGNsYXNzIGJvZHkuDQoJKGRvbGlzdCAoYmxv Y2sgKGlyZXBsYWNlLWNsYXNzLWJsb2NrcyBjbGFzcykpDQoJICAobGV0KiAo KHRleHQtaW5mbyAoaXJlcGxhY2UtdGV4dC1pbmZvIGJsb2NrKSkNCgkJICh0 ZXh0IChudGggMCB0ZXh0LWluZm8pKQ0KCQkgYmxvY2stc3RhcnQNCgkJIG1h dGNoLW92ZXJsYXkNCgkJIChtYXRjaC1vdmVybGF5LXN0YXJ0IChudGggMSB0 ZXh0LWluZm8pKQ0KCQkgKG1hdGNoLW92ZXJsYXktZW5kIChudGggMiB0ZXh0 LWluZm8pKQ0KCQkgYmxvY2stb3ZlcmxheSkNCgkgICAgKGluc2VydCA/XG4p DQoJICAgIChzZXRxIGJsb2NrLXN0YXJ0IChwb2ludCkpDQoJICAgIChpbnNl cnQgdGV4dCkNCgkgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMgYmxvY2stc3Rh cnQgKHBvaW50KQ0KCQkJCSBgKGlyZXBsYWNlLWJsb2NrICxibG9jaykpDQoJ ICAgIChzZXRxIGJsb2NrLW92ZXJsYXkgKG1ha2Utb3ZlcmxheSBibG9jay1z dGFydCAocG9pbnQpKSkNCgkgICAgKG92ZXJsYXktcHV0IGJsb2NrLW92ZXJs YXkgJ2lyZXBsYWNlLW92ZXJsYXkgJ2Jsb2NrKQ0KCSAgICAob3ZlcmxheS1w dXQgYmxvY2stb3ZlcmxheSAncHJpb3JpdHkgMjUpDQoJICAgIChvdmVybGF5 LXB1dCBibG9jay1vdmVybGF5ICdmYWNlIChjYXIgYmxvY2stZmFjZXMpKQ0K CSAgICAoc2V0cSBtYXRjaC1vdmVybGF5IChtYWtlLW92ZXJsYXkgKCsgYmxv Y2stc3RhcnQgbWF0Y2gtb3ZlcmxheS1zdGFydCkNCgkJCQkJICAgICAgKCsg YmxvY2stc3RhcnQgbWF0Y2gtb3ZlcmxheS1lbmQpKSkNCgkgICAgKG92ZXJs YXktcHV0IG1hdGNoLW92ZXJsYXkgJ2lyZXBsYWNlLW92ZXJsYXkgJ21hdGNo KQ0KCSAgICAob3ZlcmxheS1wdXQgbWF0Y2gtb3ZlcmxheSAncHJpb3JpdHkg NTApDQoJICAgIChvdmVybGF5LXB1dCBtYXRjaC1vdmVybGF5ICdmYWNlICdp cmVwbGFjZS1tYXRjaCkNCgkgICAgKHNldHEgYmxvY2stZmFjZXMgKGNkciBi bG9jay1mYWNlcykpKSkNCgkoYWRkLXRleHQtcHJvcGVydGllcyBjbGFzcy1z dGFydCAocG9pbnQpIGAoaXJlcGxhY2UtY2xhc3MgLGNsYXNzKSkNCgkoaW5z ZXJ0ID9cbikpDQogICAgICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IHQpDQog ICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKSkpKQ0KDQooZGVmdW4gaXJl cGxhY2UtdGV4dC1wcm9wZXJ0eS1mb3ItY3VycmVudC1saW5lIChwcm9wDQoJ CQkJCQllcnJvci1zeW1ib2wNCgkJCQkJCSZvcHRpb25hbCBpZ25vcmUtZXJy b3IpDQogIChsZXQgKCh2YWwgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkg cHJvcCkpKQ0KICAgIChpZiB2YWwNCgl2YWwNCiAgICAgIChpZiAoYm9icCkN CgkgICh1bmxlc3MgaWdub3JlLWVycm9yDQoJICAgIChzaWduYWwgZXJyb3It c3ltYm9sIChjdXJyZW50LWJ1ZmZlcikpKQ0KCShnZXQtY2hhci1wcm9wZXJ0 eSAoMS0gKHBvaW50KSkgcHJvcCkpKSkpDQoNCihkZWZ1biBpcmVwbGFjZS10 ZXh0LXByb3BlcnR5LWNsYXNzICgmb3B0aW9uYWwgaWdub3JlLWVycm9yKQ0K ICAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1mb3ItY3VycmVudC1saW5lICdp cmVwbGFjZS1jbGFzcw0KCQkJCQkgICAnaXJlcGxhY2Utbm8tY2xhc3Nlcw0K CQkJCQkgICBpZ25vcmUtZXJyb3IpKQ0KDQooZGVmdW4gaXJlcGxhY2UtdGV4 dC1wcm9wZXJ0eS1ibG9jayAoJm9wdGlvbmFsIGlnbm9yZS1lcnJvcikNCiAg KGlyZXBsYWNlLXRleHQtcHJvcGVydHktZm9yLWN1cnJlbnQtbGluZSAnaXJl cGxhY2UtYmxvY2sNCgkJCQkJICAgJ2lyZXBsYWNlLW5vLWJsb2Nrcw0KCQkJ CQkgICBpZ25vcmUtZXJyb3IpKQ0KDQooZGVmdW4gaXJlcGxhY2UtdGV4dC1w cm9wZXJ0eS1zaG93LWJvZHkgKCZvcHRpb25hbCBpZ25vcmUtZXJyb3IpDQog IChpcmVwbGFjZS10ZXh0LXByb3BlcnR5LWZvci1jdXJyZW50LWxpbmUgJ2ly ZXBsYWNlLXNob3ctYm9keQ0KCQkJCQkgICAnaXJlcGxhY2Utbm8tY2xhc3Nl cw0KCQkJCQkgICBpZ25vcmUtZXJyb3IpKQ0KDQooZGVmdW4gaXJlcGxhY2Ut dGV4dC1wcm9wZXJ0eS1mYWNlICgmb3B0aW9uYWwgaWdub3JlLWVycm9yKQ0K ICAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1mb3ItY3VycmVudC1saW5lICdm YWNlDQoJCQkJCSAgICdpcmVwbGFjZS1uby1jbGFzc2VzDQoJCQkJCSAgIGln bm9yZS1lcnJvcikpDQoNCihkZWZ1biBpcmVwbGFjZS1nZXQtb3ZlcmxheSAo dHlwZSkNCiAgKGxldCAoKG92ZXJsYXlzIChvdmVybGF5cy1hdCAocG9pbnQp KSkNCglkZXNpcmVkKQ0KICAgIChkb2xpc3QgKG92ZXJsYXkgb3ZlcmxheXMp DQogICAgICAoaWYgKGVxIChvdmVybGF5LWdldCBvdmVybGF5ICdpcmVwbGFj ZS1vdmVybGF5KSB0eXBlKQ0KCSAgKHNldHEgZGVzaXJlZCBvdmVybGF5KSkp DQogICAgZGVzaXJlZCkpDQoNCihkZWZ1biBpcmVwbGFjZS1yZW1vdmUtYWxs LW92ZXJsYXlzICh0eXBlKQ0KICAocmVtb3ZlLW92ZXJsYXlzIChwb2ludC1t aW4pIChwb2ludC1tYXgpICdpcmVwbGFjZS1vdmVybGF5IHR5cGUpKQ0KDQoo ZGVmdW4gaXJlcGxhY2Utc2V0dXAtb3ZlcmxheXMtaW4tb3JpZ2luYWwtYnVm ZmVyICgpDQogICh3aGVuIChidWZmZXItbGl2ZS1wIGlyZXBsYWNlLW9yaWdp bmFsLWJ1ZmZlcikNCiAgICAoc2F2ZS1tYXRjaC1kYXRhDQogICAgICAobGV0 ICgoY2xhc3NlcyBpcmVwbGFjZS1jbGFzc2VzKSkNCgkod2l0aC1jdXJyZW50 LWJ1ZmZlciBpcmVwbGFjZS1vcmlnaW5hbC1idWZmZXINCgkgIChpcmVwbGFj ZS1yZW1vdmUtYWxsLW92ZXJsYXlzICdtYXRjaCkNCgkgIChkb2xpc3QgKGNs YXNzIGNsYXNzZXMpDQoJICAgIChkb2xpc3QgKGJsb2NrIChpcmVwbGFjZS1j bGFzcy1ibG9ja3MgY2xhc3MpKQ0KCSAgICAgIChzZXQtbWF0Y2gtZGF0YSAo aXJlcGxhY2UtYmxvY2stbWF0Y2ggYmxvY2spKQ0KCSAgICAgIChsZXQqICgo c3RhcnQgKG1hdGNoLWJlZ2lubmluZyAwKSkNCgkJICAgICAoZW5kIChtYXRj aC1lbmQgMCkpDQoJCSAgICAgKHN0YXRlIChpcmVwbGFjZS1ibG9jay1tYXJr ZWQgYmxvY2spKQ0KCQkgICAgIChvdmVybGF5IChtYWtlLW92ZXJsYXkgc3Rh cnQgZW5kKSkpDQoJCShvdmVybGF5LXB1dCBvdmVybGF5ICdpcmVwbGFjZS1v dmVybGF5ICdtYXRjaCkNCgkJKG92ZXJsYXktcHV0IG92ZXJsYXkNCgkJCSAg ICAgJ2ZhY2UNCgkJCSAgICAgKGlyZXBsYWNlLWNvbXB1dGUtZmFjZSAnaXJl cGxhY2UtbWF0Y2gNCgkJCQkJCSAgICBzdGF0ZSkpKSkpKSkpKSkNCg0KKGRl ZnVuIGlyZXBsYWNlLWhlYWRlci1saW5lLWVuZC1wb3NpdGlvbiAoKQ0KICAo c2F2ZS1leGN1cnNpb24NCiAgICAoaXJlcGxhY2UtYmVnaW5uaW5nLW9mLWNs YXNzKQ0KICAgIChpZiAobnVsbCAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1z aG93LWJvZHkpKQ0KCShzaWduYWwgJ2lyZXBsYWNlLW5vdC1vbi1oZWFkZXIt bGluZSAocG9pbnQpKQ0KICAgICAgKHNhdmUtZXhjdXJzaW9uDQoJKGlyZXBs YWNlLWJlZ2lubmluZy1vZi1jbGFzcykNCgkobmV4dC1zaW5nbGUtcHJvcGVy dHktY2hhbmdlIChwb2ludCkgJ2lyZXBsYWNlLXNob3ctYm9keSkpKSkpDQoN CihkZWZ1biBpcmVwbGFjZS1jbGFzcy1iZWdpbm5pbmctcG9zaXRpb24gKCkN CiAgKHNhdmUtZXhjdXJzaW9uDQogICAgKGlyZXBsYWNlLWVuZC1vZi1jbGFz cykNCiAgICAocHJldmlvdXMtc2luZ2xlLWNoYXItcHJvcGVydHktY2hhbmdl IChwb2ludCkgJ2lyZXBsYWNlLWNsYXNzKSkpDQoNCihkZWZ1biBpcmVwbGFj ZS1jbGFzcy1lbmQtcG9zaXRpb24gKCkNCiAgKGxldCAoKGNsYXNzIChpcmVw bGFjZS10ZXh0LXByb3BlcnR5LWNsYXNzKSkpDQogICAgKHNhdmUtZXhjdXJz aW9uDQogICAgICAoaWYgKG51bGwgY2xhc3MpDQoJICA7OyBUaGlzIGNhbiBi ZSBvbmx5IGF0IHRoZSBlbmQgb2YgYnVmZmVyLCBzaW5jZQ0KCSAgOzsgYGly ZXBsYWNlLXRleHQtcHJvcGVydHktZm9yLWN1cnJlbnQtbGluZScsIHdoaWNo IGlzDQoJICA7OyBjYWxsZWQgYnkgYGlyZXBsYWNlLXRleHQtcHJvcGVydHkt Y2xhc3MnLCB3aWxsIHNpZ25hbCBhbg0KCSAgOzsgZXJyb3IgaW4gb3RoZXIg Y2FzZXMuDQoJICAocHJvZ24gKGJhY2t3YXJkLWNoYXIpDQoJCSAocG9pbnQp KQ0KCShpZiAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnaXJlcGxhY2Ut Y2xhc3MpDQoJICAgIChuZXh0LXNpbmdsZS1jaGFyLXByb3BlcnR5LWNoYW5n ZSAocG9pbnQpICdpcmVwbGFjZS1jbGFzcykNCgkgIChwb2ludCkpKSkpKQ0K DQooZGVmdW4gaXJlcGxhY2UtYmxvY2stYmVnaW5uaW5nLXBvc2l0aW9uICgp DQogIChzYXZlLWV4Y3Vyc2lvbg0KICAgIChpcmVwbGFjZS1lbmQtb2YtYmxv Y2spDQogICAgKHByZXZpb3VzLXNpbmdsZS1jaGFyLXByb3BlcnR5LWNoYW5n ZSAocG9pbnQpICdpcmVwbGFjZS1ibG9jaykpKQ0KDQooZGVmdW4gaXJlcGxh Y2UtYmxvY2stZW5kLXBvc2l0aW9uICgpDQogIChsZXQgKChjbGFzcyAoaXJl cGxhY2UtdGV4dC1wcm9wZXJ0eS1jbGFzcykpDQoJKGJsb2NrIChpcmVwbGFj ZS10ZXh0LXByb3BlcnR5LWJsb2NrICdpZ25vcmUtZXJyb3IpKSkNCiAgICAo c2F2ZS1leGN1cnNpb24NCiAgICAgIChpZiAobnVsbCBjbGFzcykNCgkgIDs7 IFRoaXMgY2FuIGJlIG9ubHkgYXQgdGhlIGVuZCBvZiBidWZmZXIsIHNpbmNl DQoJICA7OyBgaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1mb3ItY3VycmVudC1s aW5lJywgd2hpY2ggaXMNCgkgIDs7IGNhbGxlZCBieSBgaXJlcGxhY2UtdGV4 dC1wcm9wZXJ0eS1ibG9jaycgYW5kDQoJICA7OyBgaXJlcGxhY2UtdGV4dC1w cm9wZXJ0eS1jbGFzcycsIHdpbGwgc2lnbmFsIGFuIGVycm9yIGluDQoJICA7 OyBvdGhlciBjYXNlcy4NCgkgIChwcm9nbiAoYmFja3dhcmQtY2hhcikNCgkJ IChwb2ludCkpDQoJKGlmIChudWxsIGJsb2NrKQ0KCSAgICAoc2lnbmFsICdp cmVwbGFjZS1ub3Qtb24tYmxvY2sgKHBvaW50KSkpDQoJKGlmIChnZXQtY2hh ci1wcm9wZXJ0eSAocG9pbnQpICdpcmVwbGFjZS1ibG9jaykNCgkgICAgKG5l eHQtc2luZ2xlLWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkgJ2lyZXBs YWNlLWJsb2NrKQ0KCSAgKHBvaW50KSkpKSkpDQoNCihkZWZ1biBpcmVwbGFj ZS1jb21wdXRlLWZhY2UgKGZhY2Ugc3RhdGUpDQogIChsZXQgKChuYW1lIChy ZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIlxcKC1wYXJ0aWFsbHlcXCk/LW1h cmtlZCQiDQoJCQkJCSIiDQoJCQkJCShzeW1ib2wtbmFtZSBmYWNlKSkpKQ0K ICAgIChjb25kICgoZXEgc3RhdGUgJ3BhcnRpYWwpDQoJICAgKGludGVybiAo Y29uY2F0IG5hbWUgIi1wYXJ0aWFsbHktbWFya2VkIikpKQ0KCSAgKHN0YXRl DQoJICAgKGludGVybiAoY29uY2F0IG5hbWUgIi1tYXJrZWQiKSkpDQoJICAo dA0KCSAgIChpbnRlcm4gbmFtZSkpKSkpDQoNCihkZWZ1biBpcmVwbGFjZS11 cGRhdGUtY2xhc3MtZGlzcGxheSAoY2xhc3MgJm9wdGlvbmFsIHNob3ctYm9k eSkNCiAgOzsgVXBkYXRlIGRpc3BsYXkgZm9yIENMQVNTIGluIHRoZSBpcmVw bGFjZSBidWZmZXIuDQogIChzYXZlLWV4Y3Vyc2lvbg0KICAgIChpcmVwbGFj ZS1iZWdpbm5pbmctb2YtY2xhc3MpDQogICAgKGxldCogKChjbGFzcy1zdGF0 ZSAoaXJlcGxhY2UtY2xhc3MtbWFya2VkIGNsYXNzKSkNCgkgICAoaGVhZGVy LWxpbmUtZmFjZSAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1mYWNlKSkNCgkg ICAoYm9keS1pbnZpc2libGUgKGlyZXBsYWNlLXRleHQtcHJvcGVydHktc2hv dy1ib2R5KSkNCgkgICAoc2hvdy1ib2R5IChpZiBzaG93LWJvZHkNCgkJCSAg c2hvdy1ib2R5DQoJCQkoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1zaG93LWJv ZHkpKSkNCgkgICBidWZmZXItcmVhZC1vbmx5KQ0KICAgICAgKGFkZC10ZXh0 LXByb3BlcnRpZXMgKGlyZXBsYWNlLWNsYXNzLWJlZ2lubmluZy1wb3NpdGlv bikNCgkJCSAgIChpcmVwbGFjZS1oZWFkZXItbGluZS1lbmQtcG9zaXRpb24p DQoJCQkgICBgKGZhY2UNCgkJCSAgICAgLChpcmVwbGFjZS1jb21wdXRlLWZh Y2UgaGVhZGVyLWxpbmUtZmFjZQ0KCQkJCQkJICAgICBjbGFzcy1zdGF0ZSkp KQ0KICAgICAgKGRvdGltZXMgKGkgKGxlbmd0aCAoaXJlcGxhY2UtY2xhc3Mt YmxvY2tzIGNsYXNzKSkpDQoJKGlyZXBsYWNlLW5leHQtYmxvY2spDQoJKGxl dCogKChibG9jayAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1ibG9jaykpDQoJ ICAgICAgIChibG9jay1zdGF0ZSAoaXJlcGxhY2UtYmxvY2stbWFya2VkIGJs b2NrKSkNCgkgICAgICAgKG92ZXJsYXkgKGlyZXBsYWNlLWdldC1vdmVybGF5 ICdibG9jaykpDQoJICAgICAgIChibG9jay1mYWNlIChvdmVybGF5LWdldCBv dmVybGF5ICdmYWNlKSkpDQoJICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFj ZSAoaXJlcGxhY2UtY29tcHV0ZS1mYWNlIGJsb2NrLWZhY2UNCgkJCQkJCQkg ICAgYmxvY2stc3RhdGUpKSkpDQogICAgICAoY29uZCAoKGVxIHNob3ctYm9k eSAnb24pDQoJICAgICAoc2V0cSBib2R5LWludmlzaWJsZSBuaWwpKQ0KCSAg ICAoKGVxIHNob3ctYm9keSAnb2ZmKQ0KCSAgICAgKHNldHEgYm9keS1pbnZp c2libGUgdCkpKQ0KICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMgKGlyZXBs YWNlLWhlYWRlci1saW5lLWVuZC1wb3NpdGlvbikNCgkJCSAgIChpcmVwbGFj ZS1jbGFzcy1lbmQtcG9zaXRpb24pDQoJCQkgICBgKGludmlzaWJsZSAsYm9k eS1pbnZpc2libGUpKQ0KICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMgKGly ZXBsYWNlLWNsYXNzLWJlZ2lubmluZy1wb3NpdGlvbikNCgkJCSAgIChpcmVw bGFjZS1oZWFkZXItbGluZS1lbmQtcG9zaXRpb24pDQoJCQkgICBgKGlyZXBs YWNlLXNob3ctYm9keSAsc2hvdy1ib2R5KSkpKQ0KICA7OyBVcGRhdGUgZGlz cGxheSBmb3IgQ0xBU1MgaW4gdGhlIG9yaWdpbmFsIGJ1ZmZlci4NCiAgKHdo ZW4gKGJ1ZmZlci1saXZlLXAgaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyKQ0K ICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGlyZXBsYWNlLW9yaWdpbmFsLWJ1 ZmZlcg0KICAgICAgKHNhdmUtbWF0Y2gtZGF0YQ0KCShzYXZlLWV4Y3Vyc2lv bg0KCSAgKGRvbGlzdCAoYmxvY2sgKGlyZXBsYWNlLWNsYXNzLWJsb2NrcyBj bGFzcykpDQoJICAgIChzZXQtbWF0Y2gtZGF0YSAoaXJlcGxhY2UtYmxvY2st bWF0Y2ggYmxvY2spKQ0KCSAgICAobGV0ICgoc3RhcnQgKG1hdGNoLWJlZ2lu bmluZyAwKSkNCgkJICAoc3RhdGUgKGlyZXBsYWNlLWJsb2NrLW1hcmtlZCBi bG9jaykpDQoJCSAgb3ZlcmxheSkNCgkgICAgICAoZ290by1jaGFyIHN0YXJ0 KQ0KCSAgICAgIChzZXRxIG92ZXJsYXkgKGlyZXBsYWNlLWdldC1vdmVybGF5 ICdtYXRjaCkpDQoJICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkNCgkJCSAg ICdmYWNlDQoJCQkgICAoaXJlcGxhY2UtY29tcHV0ZS1mYWNlICdpcmVwbGFj ZS1tYXRjaCBzdGF0ZSkpKSkpKSkpKQ0KDQooZGVmdW4gaXJlcGxhY2UtcmVm cmVzaCAoKQ0KICAoc2F2ZS1leGN1cnNpb24NCiAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQ0KICAgIChpcmVwbGFjZS1iZWdpbm5pbmctb2YtY2xhc3Mp DQogICAgKGRvbGlzdCAoY2xhc3MgaXJlcGxhY2UtY2xhc3NlcykNCiAgICAg IChpcmVwbGFjZS11cGRhdGUtY2xhc3MtZGlzcGxheSBjbGFzcykNCiAgICAg IChpcmVwbGFjZS1uZXh0LWNsYXNzKSkpKQ0KDA0KOzsgSXJlcGxhY2UgZXJy b3JzLg0KDQoobGV0ICgoaXJlcGxhY2UtZXJyb3JzICcoKGlyZXBsYWNlLW5v LWJsb2Nrcw0KCQkJICAuICJObyBibG9ja3MgaW4gY3VycmVudCBidWZmZXIi KQ0KCQkJIChpcmVwbGFjZS1ub3Qtb24tYmxvY2sNCgkJCSAgLiAiUG9pbnQg aXMgbm90IG9uIGEgYmxvY2siKQ0KCQkJIChpcmVwbGFjZS1ub3Qtb24taGVh ZGVyLWxpbmUNCgkJCSAgLiAiUG9pbnQgaXMgbm90IG9uIGhlYWRlciBsaW5l IG9mIGEgY2xhc3MiKQ0KCQkJIChpcmVwbGFjZS1uby1jbGFzc2VzDQoJCQkg IC4gIk5vIGNsYXNzZXMgaW4gY3VycmVudCBidWZmZXIiKQ0KCQkJIChpcmVw bGFjZS1vcmlnaW5hbC1idWZmZXIta2lsbGVkDQoJCQkgIC4gIlRoZSBvcmln aW5hbCBidWZmZXIgaGFzIGJlZW4ga2lsbGVkIikpKSkNCiAgKGRvbGlzdCAo c3BlYyBpcmVwbGFjZS1lcnJvcnMpDQogICAgKGxldCAoKHN5bWJvbCAoY2Fy IHNwZWMpKQ0KCSAgKG1lc3NhZ2UgKGNkciBzcGVjKSkpDQogICAgICAocHV0 IHN5bWJvbCAnZXJyb3ItY29uZGl0aW9ucyBgKGVycm9yIGlyZXBsYWNlLWVy cm9ycyAsc3ltYm9sKSkNCiAgICAgIChwdXQgc3ltYm9sICdlcnJvci1tZXNz YWdlIG1lc3NhZ2UpKSkpDQoMDQo7OyBJcmVwbGFjZSBtYWpvciBtb2RlIGFu ZCB1c2VyIG9wZXJhdGlvbnMuDQoNCihkZWZ2YXIgaXJlcGxhY2UtbW9kZS1t YXANCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpDQogICAg KHN1cHByZXNzLWtleW1hcCBtYXAgdCkNCiAgICAoZGVmaW5lLWtleSBtYXAg Wz9cQy1tXSAnaXJlcGxhY2UtZm9sbG93LWJsb2NrKQ0KICAgIChkZWZpbmUt a2V5IG1hcCBbP21dICdpcmVwbGFjZS10b2dnbGUtYmxvY2stbWFya2VkKQ0K ICAgIChkZWZpbmUta2V5IG1hcCBbP25dICdpcmVwbGFjZS1uZXh0LWJsb2Nr KQ0KICAgIChkZWZpbmUta2V5IG1hcCBbP3BdICdpcmVwbGFjZS1wcmV2aW91 cy1ibG9jaykNCiAgICAoZGVmaW5lLWtleSBtYXAgWz9xXSAnaXJlcGxhY2Ut cXVpdCkNCiAgICAoZGVmaW5lLWtleSBtYXAgWz9yXSAnaXJlcGxhY2UtbWFy ay1ibG9ja3MtcmV2ZXJzZWx5KQ0KICAgIChkZWZpbmUta2V5IG1hcCBbP3hd ICdpcmVwbGFjZS1wZXJmb3JtLXJlcGxhY2UpDQogICAgKGRlZmluZS1rZXkg bWFwIFs/XE0tbl0gJ2lyZXBsYWNlLW5leHQtY2xhc3MpDQogICAgKGRlZmlu ZS1rZXkgbWFwIFs/XE0tcF0gJ2lyZXBsYWNlLXByZXZpb3VzLWNsYXNzKQ0K ICAgIChkZWZpbmUta2V5IG1hcCBbP1xNLXJdICdpcmVwbGFjZS1tYXJrLWNs YXNzZXMtcmV2ZXJzZWx5KQ0KICAgIG1hcCkNCiAgIktleW1hcCBmb3IgYGly ZXBsYWNlLW1vZGUnLiIpDQoNCihkZWZ2YXIgaXJlcGxhY2UtaGVhZGVyLWxp bmUtbWFwDQogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQ0K ICAgIChzdXBwcmVzcy1rZXltYXAgbWFwIHQpDQogICAgKGRlZmluZS1rZXkg bWFwIFs/bV0gJ2lyZXBsYWNlLXRvZ2dsZS1jbGFzcy1tYXJrZWQpDQogICAg KGRlZmluZS1rZXkgbWFwIFs/XE0tbV0gJ2lyZXBsYWNlLXRvZ2dsZS1jbGFz cy1tYXJrZWQpDQogICAgKGRlZmluZS1rZXkgbWFwIFs/XEMtbV0gJ2lyZXBs YWNlLXRvZ2dsZS1jbGFzcy1ib2R5KQ0KICAgIChkZWZpbmUta2V5IG1hcCBb P1xNLVxDLW1dICdpcmVwbGFjZS10b2dnbGUtY2xhc3MtYm9keSkNCiAgICBt YXApDQogICJLZXltYXAgZm9yIGBpcmVwbGFjZS1tb2RlJywgb24gY2xhc3Mg aGVhZGVyIGxpbmUuIikNCg0KKGRlZmluZS1kZXJpdmVkLW1vZGUgaXJlcGxh Y2UtbW9kZSBuaWwgIkludGVsbGlnZW50LVJlcGxhY2UiDQogICJNYWpvciBt b2RlIGZvciBpbnRlbGxpZ2VudCByZXBsYWNlLg0KXFx7aXJlcGxhY2UtbW9k ZS1tYXB9Ig0KICA6c3ludGF4LXRhYmxlIG5pbA0KICA6YWJicmV2LXRhYmxl IG5pbA0KICA6Z3JvdXAgJ2lyZXBsYWNlDQogIChtYWtlLWxvY2FsLXZhcmlh YmxlICdwcmUtY29tbWFuZC1ob29rKQ0KICAoYWRkLWhvb2sgJ3ByZS1jb21t YW5kLWhvb2sgJ2lyZXBsYWNlLXN5bmNocm9uaXplLXdpdGgtb3JpZ2luYWwt YnVmZmVyKQ0KICAobWFrZS1sb2NhbC12YXJpYWJsZSAncG9zdC1jb21tYW5k LWhvb2spDQogIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2lyZXBs YWNlLXVwZGF0ZS1vcmlnaW5hbC1idWZmZXItcG9zaXRpb24pKQ0KDQooZGVm dW4gaXJlcGxhY2Utc3luY2hyb25pemUtd2l0aC1vcmlnaW5hbC1idWZmZXIg KCkNCiAgKGxldCAoKGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQ0KCXRpY2sp DQogICAgKGlmIChidWZmZXItbGl2ZS1wIGlyZXBsYWNlLW9yaWdpbmFsLWJ1 ZmZlcikNCgkocHJvZ24NCgkgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGlyZXBs YWNlLW9yaWdpbmFsLWJ1ZmZlcg0KCSAgICAoc2V0cSB0aWNrIChidWZmZXIt Y2hhcnMtbW9kaWZpZWQtdGljaykpKQ0KCSAgKGlmIChub3QgKGVxdWFsIHRp Y2sgaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyLXRpY2spKQ0KCSAgICAgIChw cm9nbg0KCQkobWVzc2FnZSAiVGhlIG9yaWdpbmFsIGJ1ZmZlciBoYXMgYmVl biBjaGFuZ2VkLCB1cGRhdGluZyBtYXRjaGVzLi4uIikNCgkJKGxldCAoKHRl eHQgaXJlcGxhY2Utc2VhcmNoZWQtdGV4dCkpDQoJCSAgKHdpdGgtY3VycmVu dC1idWZmZXIgaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyDQoJCSAgICAobGV0 KiAoKGZlYXR1cmUtc3BlY3MgKGxpc3QgaXJlcGxhY2UtdGV4dC1tb2RlLXNw ZWMpKQ0KCQkJICAgKGNsYXNzZXMgKGlyZXBsYWNlLWNsYXNzaWZ5LW1hdGNo ZXMgZmVhdHVyZS1zcGVjcw0KCQkJCQkJCSAgICAgICB0ZXh0IG5pbCB0IG5p bCkpKQ0KCQkgICAgICAoaWYgKG51bGwgY2xhc3NlcykNCgkJCSAgKG1lc3Nh Z2UNCgkJCSAgIChmb3JtYXQgIlRleHQgYCVzJyBkb2VzIG5vdCBleGlzdCBp biBidWZmZXIgYCVzJyBhbnkgbW9yZSINCgkJCQkgICB0ZXh0IChidWZmZXIt bmFtZSkpKQ0KCQkJKGlyZXBsYWNlLXNldHVwLWlyZXBsYWNlLWJ1ZmZlciAo Y3VycmVudC1idWZmZXIpDQoJCQkJCQkJYnVmZmVyDQoJCQkJCQkJZmVhdHVy ZS1zcGVjcw0KCQkJCQkJCXRleHQNCgkJCQkJCQljbGFzc2VzKSkpKSkNCgkJ KGlyZXBsYWNlLXNldHVwLW92ZXJsYXlzLWluLW9yaWdpbmFsLWJ1ZmZlcikN CgkJKG1lc3NhZ2UgIlRoZSBvcmlnaW5hbCBidWZmZXIgaGFzIGJlZW4gY2hh bmdlZCwgdXBkYXRpbmcgbWF0Y2hlcy4uLiBkb25lIikpDQoJICAgIChpcmVw bGFjZS1zZXR1cC1vdmVybGF5cy1pbi1vcmlnaW5hbC1idWZmZXIpKSkNCiAg ICAgIChtZXNzYWdlICJUaGUgb3JpZ2luYWwgYnVmZmVyIGhhcyBiZWVuIGtp bGxlZCIpKSkpDQoNCihkZWZ1biBpcmVwbGFjZS11cGRhdGUtb3JpZ2luYWwt YnVmZmVyLXBvc2l0aW9uICgpDQogIChsZXQgKChibG9jayAoaXJlcGxhY2Ut dGV4dC1wcm9wZXJ0eS1ibG9jayAnaWdub3JlLWVycm9yKSkpDQogICAgKHdo ZW4gYmxvY2sNCiAgICAgIChsZXQqICgobWFya2VyIChjYXIgKGlyZXBsYWNl LWJsb2NrLW1hdGNoIGJsb2NrKSkpDQoJICAgICAoYnVmZmVyIChtYXJrZXIt YnVmZmVyIG1hcmtlcikpDQoJICAgICAocG9zIChtYXJrZXItcG9zaXRpb24g bWFya2VyKSkpDQoJKHdoZW4gYnVmZmVyDQoJICAobGV0ICgoaXJlcGxhY2Ut YnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQ0KCSAgICAocG9wLXRvLWJ1ZmZl ciBidWZmZXIpDQoJICAgIChnb3RvLWNoYXIgcG9zKQ0KCSAgICAocG9wLXRv LWJ1ZmZlciBpcmVwbGFjZS1idWZmZXIpKSkpKSkpDQoNCihkZWZ1biBpcmVw bGFjZS10b2dnbGUtY2xhc3Mtc3RhdHVzIChzd2l0Y2gpDQogIChsZXQgKChj bGFzcyAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1jbGFzcykpDQoJKHNob3ct Ym9keSAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1zaG93LWJvZHkpKSkNCiAg ICAoaWYgKG9yIChudWxsIGNsYXNzKQ0KCSAgICAobnVsbCBzaG93LWJvZHkp KQ0KCShzaWduYWwgJ2lyZXBsYWNlLW5vdC1vbi1oZWFkZXItbGluZSAocG9p bnQpKSkNCiAgICAoY29uZCAoKGVxIHN3aXRjaCAnc2hvdy1ib2R5KQ0KCSAg IChzZXRxIHNob3ctYm9keSAoaWYgKGVxIHNob3ctYm9keSAnb24pDQoJCQkg ICAgICAgJ29mZg0KCQkJICAgICAnb24pKSkNCgkgICgoZXEgc3dpdGNoICdt YXJrZWQpDQoJICAgKGlyZXBsYWNlLWludGVybmFsLXRvZ2dsZS1jbGFzcy1t YXJrZWQgY2xhc3MpKSkNCiAgICAoaXJlcGxhY2UtdXBkYXRlLWNsYXNzLWRp c3BsYXkgY2xhc3Mgc2hvdy1ib2R5KSkpDQoNCihkZWZ1biBpcmVwbGFjZS10 b2dnbGUtY2xhc3MtYm9keSAoKQ0KICAoaW50ZXJhY3RpdmUpDQogIChpcmVw bGFjZS10b2dnbGUtY2xhc3Mtc3RhdHVzICdzaG93LWJvZHkpKQ0KDQooZGVm dW4gaXJlcGxhY2UtdG9nZ2xlLWNsYXNzLW1hcmtlZCAoKQ0KICAoaW50ZXJh Y3RpdmUpDQogIChpcmVwbGFjZS10b2dnbGUtY2xhc3Mtc3RhdHVzICdtYXJr ZWQpKQ0KDQooZGVmdW4gaXJlcGxhY2UtdG9nZ2xlLWJsb2NrLW1hcmtlZCAo KQ0KICAoaW50ZXJhY3RpdmUpDQogIChsZXQgKChjbGFzcyAoaXJlcGxhY2Ut dGV4dC1wcm9wZXJ0eS1jbGFzcykpDQoJKGJsb2NrIChpcmVwbGFjZS10ZXh0 LXByb3BlcnR5LWJsb2NrICdpZ25vcmUtZXJyb3IpKSkNCiAgICAoaWYgKG9y IChudWxsIGNsYXNzKQ0KCSAgICAobnVsbCBibG9jaykpDQoJKHNpZ25hbCAn aXJlcGxhY2Utbm90LW9uLWJsb2NrIChwb2ludCkpKQ0KICAgIChpcmVwbGFj ZS1pbnRlcm5hbC10b2dnbGUtYmxvY2stbWFya2VkIGNsYXNzIGJsb2NrKQ0K ICAgIChpcmVwbGFjZS11cGRhdGUtY2xhc3MtZGlzcGxheSBjbGFzcykpKQ0K DQooZGVmdW4gaXJlcGxhY2UtbWFyay1jbGFzc2VzLXJldmVyc2VseSAoKQ0K ICAoaW50ZXJhY3RpdmUpDQogIChkb2xpc3QgKGNsYXNzIGlyZXBsYWNlLWNs YXNzZXMpDQogICAgKHVubGVzcyAoZXEgKGlyZXBsYWNlLWNsYXNzLW1hcmtl ZCBjbGFzcykgJ3BhcnRpYWwpDQogICAgICAoaXJlcGxhY2UtaW50ZXJuYWwt dG9nZ2xlLWNsYXNzLW1hcmtlZCBjbGFzcykpKQ0KICAoaXJlcGxhY2UtcmVm cmVzaCkpDQoNCihkZWZ1biBpcmVwbGFjZS1tYXJrLWJsb2Nrcy1yZXZlcnNl bHkgKCkNCiAgKGludGVyYWN0aXZlKQ0KICAobGV0ICgoY2xhc3MgKGlyZXBs YWNlLXRleHQtcHJvcGVydHktY2xhc3MpKSkNCiAgICAoZG9saXN0IChibG9j ayAoaXJlcGxhY2UtY2xhc3MtYmxvY2tzIGNsYXNzKSkNCiAgICAgIChpcmVw bGFjZS1pbnRlcm5hbC10b2dnbGUtYmxvY2stbWFya2VkIGNsYXNzIGJsb2Nr KSkNCiAgICAoaXJlcGxhY2UtdXBkYXRlLWNsYXNzLWRpc3BsYXkgY2xhc3Mp KSkNCg0KKGRlZnVuIGlyZXBsYWNlLWZvbGxvdy1ibG9jayAoKQ0KICAoaW50 ZXJhY3RpdmUpDQogIChsZXQgKChibG9jayAoaXJlcGxhY2UtdGV4dC1wcm9w ZXJ0eS1ibG9jaykpKQ0KICAgIChpZiAobnVsbCBibG9jaykNCgkoc2lnbmFs ICdpcmVwbGFjZS1ub3Qtb24tYmxvY2sgKHBvaW50KSkpDQogICAgKGxldCog KChtYXJrZXIgKGNhciAoaXJlcGxhY2UtYmxvY2stbWF0Y2ggYmxvY2spKSkN CgkgICAoYnVmZmVyIChtYXJrZXItYnVmZmVyIG1hcmtlcikpDQoJICAgKHBv cyAobWFya2VyLXBvc2l0aW9uIG1hcmtlcikpKQ0KICAgICAgKGlmIChudWxs IGJ1ZmZlcikNCgkgIChzaWduYWwgJ2lyZXBsYWNlLW9yaWdpbmFsLWJ1ZmZl ci1raWxsZWQgKGN1cnJlbnQtYnVmZmVyKSkpDQogICAgICAocG9wLXRvLWJ1 ZmZlciBidWZmZXIpDQogICAgICAoZ290by1jaGFyIHBvcykpKSkNCg0KKGRl ZnVuIGlyZXBsYWNlLXBlcmZvcm0tcmVwbGFjZSAobmV3dGV4dA0KCQkJCSAm b3B0aW9uYWwgZml4ZWRjYXNlIGxpdGVyYWwgc3RyaW5nIHN1YmV4cCkNCiAg KGludGVyYWN0aXZlDQogICAocHJvZ24NCiAgICAgKGlmIChub3QgKGJ1ZmZl ci1saXZlLXAgaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyKSkNCgkgKHNpZ25h bCAnaXJlcGxhY2Utb3JpZ2luYWwtYnVmZmVyLWtpbGxlZCAoY3VycmVudC1i dWZmZXIpKSkNCiAgICAgKGxpc3QgKHJlYWQtc3RyaW5nICJSZXBsYWNlIHRl eHQgb2YgbWFya2VkIGNsYXNzZXMvYmxvY2tzIHdpdGg6ICIpKSkpDQogIChs ZXQgKChjbGFzc2VzIGlyZXBsYWNlLWNsYXNzZXMpDQoJbmV3LWNsYXNzZXMp DQogICAgKHdpdGgtY3VycmVudC1idWZmZXIgaXJlcGxhY2Utb3JpZ2luYWwt YnVmZmVyDQogICAgICAoc2F2ZS1tYXRjaC1kYXRhDQoJKHNhdmUtZXhjdXJz aW9uDQoJICAoZG9saXN0IChjbGFzcyBjbGFzc2VzKQ0KCSAgICAobGV0ICgo YmxvY2tzIChpcmVwbGFjZS1jbGFzcy1ibG9ja3MgY2xhc3MpKQ0KCQkgIG5l dy1ibG9ja3MpDQoJICAgICAgKGRvbGlzdCAoYmxvY2sgYmxvY2tzKQ0KCQko aWYgKGlyZXBsYWNlLWJsb2NrLW1hcmtlZCBibG9jaykNCgkJICAgIChsZXQg KChtYXRjaCAoaXJlcGxhY2UtYmxvY2stbWF0Y2ggYmxvY2spKQ0KCQkJICBv dmVybGF5KQ0KCQkgICAgICAoc2V0LW1hdGNoLWRhdGEgbWF0Y2gpDQoJCSAg ICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkNCgkJICAgICAg KHNldHEgb3ZlcmxheSAoaXJlcGxhY2UtZ2V0LW92ZXJsYXkgJ21hdGNoKSkN CgkJICAgICAgKGRlbGV0ZS1vdmVybGF5IG92ZXJsYXkpDQoJCSAgICAgIChy ZXBsYWNlLW1hdGNoIG5ld3RleHQgZml4ZWRjYXNlIGxpdGVyYWwgc3RyaW5n IHN1YmV4cCkpDQoJCSAgKHNldHEgbmV3LWJsb2NrcyAoY29ucyBibG9jayBu ZXctYmxvY2tzKSkpKQ0KCSAgICAgIChpZiBuZXctYmxvY2tzDQoJCSAgKHNl dHEgbmV3LWNsYXNzZXMgKGNvbnMgKGlyZXBsYWNlLW1ha2UtY2xhc3MgbmV3 LWJsb2NrcyBuaWwpDQoJCQkJCSAgbmV3LWNsYXNzZXMpKSkpKSkpKQ0KICAg IChpcmVwbGFjZS1zZXR1cC1pcmVwbGFjZS1idWZmZXIgaXJlcGxhY2Utb3Jp Z2luYWwtYnVmZmVyDQoJCQkJICAgIChjdXJyZW50LWJ1ZmZlcikNCgkJCQkg ICAgaXJlcGxhY2UtZmVhdHVyZS1zcGVjcw0KCQkJCSAgICBpcmVwbGFjZS1z ZWFyY2hlZC10ZXh0DQoJCQkJICAgIG5ldy1jbGFzc2VzKSkpDQoNCihkZWZ1 biBpcmVwbGFjZSAodGV4dCkNCiAgKGludGVyYWN0aXZlIChsaXN0IChyZWFk LXN0cmluZyAiVGV4dCBmb3IgcmVwbGFjaW5nOiAiKSkpDQogIChsZXQqICgo ZmVhdHVyZS1zcGVjcyAobGlzdCBpcmVwbGFjZS10ZXh0LW1vZGUtc3BlYykp DQoJIChjbGFzc2VzIChpcmVwbGFjZS1jbGFzc2lmeS1tYXRjaGVzIGZlYXR1 cmUtc3BlY3MgdGV4dCBuaWwgdCBuaWwpKSkNCiAgICAoaWYgKG51bGwgY2xh c3NlcykNCgkobWVzc2FnZSAoZm9ybWF0ICJUZXh0IGAlcycgZG9lcyBub3Qg ZXhpc3QgaW4gY3VycmVudCBidWZmZXIiIHRleHQpKQ0KICAgICAgKGxldCAo KGJ1ZmZlciAoaXJlcGxhY2UtZ2V0LWJ1ZmZlcikpKQ0KCShpcmVwbGFjZS1z ZXR1cC1pcmVwbGFjZS1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKQ0KCQkJCQli dWZmZXINCgkJCQkJZmVhdHVyZS1zcGVjcw0KCQkJCQl0ZXh0DQoJCQkJCWNs YXNzZXMNCgkJCQkJKGN1cnJlbnQtd2luZG93LWNvbmZpZ3VyYXRpb24pKQ0K CShkZWxldGUtb3RoZXItd2luZG93cykNCgkoc3BsaXQtd2luZG93LXZlcnRp Y2FsbHkpDQoJKG90aGVyLXdpbmRvdyAxKQ0KCShzd2l0Y2gtdG8tYnVmZmVy IGJ1ZmZlcikNCgkoaXJlcGxhY2Utc2V0dXAtb3ZlcmxheXMtaW4tb3JpZ2lu YWwtYnVmZmVyKQ0KCShtZXNzYWdlIChmb3JtYXQgIkZvdW5kICVkIGNsYXNz ZXMgdG90YWxseSINCgkJCSAobGVuZ3RoIGlyZXBsYWNlLWNsYXNzZXMpKSkp KSkpDQoNCihkZWZ1biBpcmVwbGFjZS1xdWl0ICgpDQogIChpbnRlcmFjdGl2 ZSkNCiAgKGlmIChidWZmZXItbGl2ZS1wIGlyZXBsYWNlLW9yaWdpbmFsLWJ1 ZmZlcikNCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGlyZXBsYWNlLW9y aWdpbmFsLWJ1ZmZlcg0KCShpcmVwbGFjZS1yZW1vdmUtYWxsLW92ZXJsYXlz ICdtYXRjaCkpKQ0KICAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIGlyZXBs YWNlLW9sZC13aW5kb3ctY29uZmlndXJhdGlvbikNCiAgKG1lc3NhZ2UgIiIp KQ0KDQooZGVmdW4gaXJlcGxhY2UtYmVnaW5uaW5nLW9mLWNsYXNzICgpDQog IChpbnRlcmFjdGl2ZSkNCiAgKGdvdG8tY2hhciAoaXJlcGxhY2UtY2xhc3Mt YmVnaW5uaW5nLXBvc2l0aW9uKSkpDQoNCihkZWZ1biBpcmVwbGFjZS1lbmQt b2YtY2xhc3MgKCkNCiAgKGludGVyYWN0aXZlKQ0KICAoZ290by1jaGFyIChp cmVwbGFjZS1jbGFzcy1lbmQtcG9zaXRpb24pKSkNCg0KKGRlZnVuIGlyZXBs YWNlLWJlZ2lubmluZy1vZi1ibG9jayAoKQ0KICAoaW50ZXJhY3RpdmUpDQog IChnb3RvLWNoYXIgKGlyZXBsYWNlLWJsb2NrLWJlZ2lubmluZy1wb3NpdGlv bikpKQ0KDQooZGVmdW4gaXJlcGxhY2UtZW5kLW9mLWJsb2NrICgpDQogIChp bnRlcmFjdGl2ZSkNCiAgKGdvdG8tY2hhciAoaXJlcGxhY2UtYmxvY2stZW5k LXBvc2l0aW9uKSkpDQoNCihkZWZ1biBpcmVwbGFjZS1wcmV2aW91cy1jbGFz cyAoKQ0KICAoaW50ZXJhY3RpdmUpDQogIChsZXQgKChvbi1oZWFkZXItbGlu ZSAoaXJlcGxhY2UtdGV4dC1wcm9wZXJ0eS1zaG93LWJvZHkpKSkNCiAgICAo aXJlcGxhY2UtYmVnaW5uaW5nLW9mLWNsYXNzKQ0KICAgICh3aGVuIChhbmQg b24taGVhZGVyLWxpbmUNCgkgICAgICAgKG5vdCAoYm9icCkpKQ0KICAgICAg KGJhY2t3YXJkLWNoYXIpDQogICAgICAoaXJlcGxhY2UtYmVnaW5uaW5nLW9m LWNsYXNzKSkpKQ0KDQooZGVmdW4gaXJlcGxhY2UtbmV4dC1jbGFzcyAoKQ0K ICAoaW50ZXJhY3RpdmUpDQogIChpcmVwbGFjZS1lbmQtb2YtY2xhc3MpDQog ICh3aGVuIChub3QgKGVvYnApKQ0KICAgIChmb3J3YXJkLWNoYXIpDQogICAg KGlyZXBsYWNlLWVuZC1vZi1jbGFzcykpDQogIChpcmVwbGFjZS1iZWdpbm5p bmctb2YtY2xhc3MpKQ0KDQooZGVmdW4gaXJlcGxhY2UtcHJldmlvdXMtYmxv Y2stMSAoKQ0KICAobGV0IChkby1ub3QtbW92ZS1hZ2FpbikNCiAgICAoY29u ZGl0aW9uLWNhc2UgbmlsDQoJKGlyZXBsYWNlLWJlZ2lubmluZy1vZi1ibG9j aykNCiAgICAgIChpcmVwbGFjZS1ub3Qtb24tYmxvY2sNCiAgICAgICAoaXJl cGxhY2UtYmVnaW5uaW5nLW9mLWNsYXNzKQ0KICAgICAgIChpZiAoYm9icCkN CgkgICA7OyBQb2ludCB3YXMgb24gaGVhZGVyIGxpbmUgb2YgdGhlIGZpcnN0 IGNsYXNzIGluIGN1cnJlbnQNCgkgICA7OyBidWZmZXIuDQoJICAgKGdvdG8t Y2hhciAoMSsgKGlyZXBsYWNlLWhlYWRlci1saW5lLWVuZC1wb3NpdGlvbikp KQ0KCSA7OyBQb2ludCB3YXMgb24gaGVhZGVyIGxpbmUgb2Ygc29tZSBjbGFz cyBidXQgdGhlIGZpcnN0IG9uZQ0KCSA7OyBpbiBjdXJyZW50IGJ1ZmZlci4N CgkgKGlyZXBsYWNlLXByZXZpb3VzLWNsYXNzKQ0KCSAoaXJlcGxhY2UtZW5k LW9mLWNsYXNzKQ0KCSAoaXJlcGxhY2UtYmVnaW5uaW5nLW9mLWJsb2NrKSkN CiAgICAgICAoc2V0cSBkby1ub3QtbW92ZS1hZ2FpbiB0KSkNCiAgICAgIChl cnJvcg0KICAgICAgIChzaWduYWwgJ2lyZXBsYWNlLW5vLWJsb2NrcyAoY3Vy cmVudC1idWZmZXIpKSkpDQogICAgZG8tbm90LW1vdmUtYWdhaW4pKQ0KDQoo ZGVmdW4gaXJlcGxhY2UtcHJldmlvdXMtYmxvY2sgKCkNCiAgKGludGVyYWN0 aXZlKQ0KICAobGV0ICgoZG8tbm90LW1vdmUtYWdhaW4gKGlyZXBsYWNlLXBy ZXZpb3VzLWJsb2NrLTEpKSkNCiAgICAodW5sZXNzIGRvLW5vdC1tb3ZlLWFn YWluDQogICAgICAoYmFja3dhcmQtY2hhcikNCiAgICAgIChpcmVwbGFjZS1w cmV2aW91cy1ibG9jay0xKSkpKQ0KDQooZGVmdW4gaXJlcGxhY2UtbmV4dC1i bG9jayAoKQ0KICAoaW50ZXJhY3RpdmUpDQogIChjb25kaXRpb24tY2FzZSBu aWwNCiAgICAgIChwcm9nbg0KCShpcmVwbGFjZS1lbmQtb2YtYmxvY2spDQoJ KGZvcndhcmQtY2hhcikNCgkoaXJlcGxhY2UtZW5kLW9mLWJsb2NrKQ0KCShp cmVwbGFjZS1iZWdpbm5pbmctb2YtYmxvY2spKQ0KICAgIChpcmVwbGFjZS1u b3Qtb24tYmxvY2sNCiAgICAgOzsgUG9pbnQgd2FzIHByZXZpb3VzbHkgb24g Y2xhc3MgaGVhZGVyIGxpbmUuDQogICAgIChnb3RvLWNoYXIgKDErIChpcmVw bGFjZS1oZWFkZXItbGluZS1lbmQtcG9zaXRpb24pKSkpDQogICAgKGVycm9y DQogICAgIChzaWduYWwgJ2lyZXBsYWNlLW5vLWJsb2NrcyAoY3VycmVudC1i dWZmZXIpKSkpKQ0KDA0KKHByb3ZpZGUgJ2lyZXBsYWNlKQ0KDQo7OzsgaXJl cGxhY2UuZWwgZW5kcyBoZXJl ------=_NextPart_000_7cee_1da6_3243 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ------=_NextPart_000_7cee_1da6_3243--