From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Colascione Newsgroups: gmane.emacs.devel Subject: New mode for cmd.exe script files (i.e., "batch files"): include in Emacs? Date: Sun, 19 Jun 2011 13:48:10 -0700 Message-ID: <4DFE608A.1050809@gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigE892D973049415F23385B494" X-Trace: dough.gmane.org 1308516535 29429 80.91.229.12 (19 Jun 2011 20:48:55 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 19 Jun 2011 20:48:55 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jun 19 22:48:48 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QYOvH-0004vN-U1 for ged-emacs-devel@m.gmane.org; Sun, 19 Jun 2011 22:48:48 +0200 Original-Received: from localhost ([::1]:47672 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYOvG-0007kf-Gj for ged-emacs-devel@m.gmane.org; Sun, 19 Jun 2011 16:48:46 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:43629) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYOus-0007jk-Qu for emacs-devel@gnu.org; Sun, 19 Jun 2011 16:48:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QYOuo-0006Br-0Z for emacs-devel@gnu.org; Sun, 19 Jun 2011 16:48:22 -0400 Original-Received: from mail-pz0-f41.google.com ([209.85.210.41]:56639) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QYOun-0006Bc-9E for emacs-devel@gnu.org; Sun, 19 Jun 2011 16:48:17 -0400 Original-Received: by pzk4 with SMTP id 4so3763585pzk.0 for ; Sun, 19 Jun 2011 13:48:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :subject:x-enigmail-version:content-type; bh=hlqQYQtgo7neiQM0GgDWGbD/1m2JRkNzvBK6uwBy3RY=; b=pO3200mRGGNbaBWHZimymSwnPIX5dKueEUrMMOmgpYBxWUPDcQOrcBhYMun7m9iyAu hO5+FCop7LyTOeoDnMh1/O4lID/Xp3j64yEalnVpd7JWd1x2HIKFuDbVk3pAWuFMp+Lu ljEsD5mBxBADaTAa6TNhJvYhnlNg8x8erf01o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :x-enigmail-version:content-type; b=Ir3CcoI4nMeqhQTyXRv9fmUXhMV2Zib8fK324qKmGCKPeJJH7dsf9fsnvVV3U+JExe CwQ3/2RwunPaMNl5wXenT/BfnaxCKtGgQtQzueZaJB+Hu/tmUC9gQ1Wq4jzc3zMzPwVw 6/L2zJkabb/NF0E4SQx3k6CXnjIpp/lahNzoI= Original-Received: by 10.68.34.74 with SMTP id x10mr1709911pbi.175.1308516495488; Sun, 19 Jun 2011 13:48:15 -0700 (PDT) Original-Received: from edith.local (c-24-18-179-193.hsd1.wa.comcast.net [24.18.179.193]) by mx.google.com with ESMTPS id v6sm2785950pbh.38.2011.06.19.13.48.13 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 19 Jun 2011 13:48:14 -0700 (PDT) User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 X-Enigmail-Version: 1.1.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.210.41 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:140683 Archived-At: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigE892D973049415F23385B494 Content-Type: multipart/mixed; boundary="------------070202000508030505060504" This is a multi-part message in MIME format. --------------070202000508030505060504 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi emacs-devel, I few months ago, I looked for modes for editing Windows (and DOS) cmd-script files ("batch files"), and not finding anything sufficiently robust, I wrote one called ntcmd-mode and put it on the wiki. Would anyone object to my sprucing it up for Emacs 24 and including it in Emacs? I've attached the latest version of the code. Thanks, Daniel Colascione --------------070202000508030505060504 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="ntcmd.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ntcmd.el" Ozs7IG50Y21kLmVsIC0tLSBtYWpvciBtb2RlIGZvciBlZGl0aW5nIGNtZCBzY3JpcHRzCjs7 IENvcHlyaWdodCAoQykgMjAxMC0yMDExIERhbmllbCBDb2xhc2Npb25lCjs7Cjs7IFRoaXMg ZmlsZSBpcyBub3QgcGFydCBvZiBHTlUgRW1hY3MuCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKOzsgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMKOzsgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lv biAzIG9yIGxhdGVyLgo7Owo7OyBBdXRob3I6ICAgRGFuaWVsIENvbGFzY2lvbmUgPGRhbi5j b2xhc2Npb25lQGdtYWlsLmNvbT4KOzsgVmVyc2lvbjogIDEuMQo7OyBLZXl3b3JkczogbGFu Z3VhZ2VzCjs7Cjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBUaGlzIGlzIGEgbW9kZSBmb3IgaGln aGxpZ2h0aW5nIGFuZCBpbmRlbnRpbmcgV2luZG93cyBjbWQgc2NyaXB0cy4KOzsgSXQgdXNl cyBhIHBhcnNlciBpbiBzZXZlcmFsIHBhc3NlcyB0byBlbnN1cmUgdGhlIGJ1ZmZlciBpcwo7 OyBpbnRlcnByZXRlZCB0aGUgd2F5IHRoYXQgY21kIHdvdWxkIHNlZSBpdC4gSXQgYWxzbyBm ZWF0dXJlcwo7OyBlbGVjdHJpYyBpbmRlbnRhdGlvbi4KOzsgCjs7IFRoZSBkZWZhdWx0IGZv bnRpZmljYXRpb24gb2YgdmFyaWFibGUgcmVmZXJlbmNlcyBpcyBiYXNpYywgYnV0Cjs7IHRo ZXJlIGFyZSBzZXZlcmFsIGZhY2VzIHRoYXQgY2FuIGJlIGFkanVzdGVkIHRvIHN1aXQgeW91 ciBmYW5jeS4KOzsKCihkZWZjb25zdCBudGNtZC1tb2RlLXZlcnNpb24gIjEuMSIgIm50Y21k IHZlcnNpb24gbnVtYmVyLiIpCgooZXZhbC13aGVuLWNvbXBpbGUKICAocmVxdWlyZSAnY2wp CiAgKHJlcXVpcmUgJ2ZvbnQtbG9jaykpCgooZGVmZ3JvdXAgbnRjbWQKICBuaWwgIk1ham9y IG1vZGUgZm9yIGVkaXRpbmcgY21kLmV4ZSBzY3JpcHRzIHNjcmlwdHMuIgogIDp0YWcgIm50 Y21kIiA6Z3JvdXAgJ2xhbmd1YWdlcykKCihkZWZjdXN0b20gbnRjbWQtaW5kZW50LWxldmVs IDQKICAiQW1vdW50IGJ5IHdoaWNoIGJhdGNoIHN1YmV4cHJlc3Npb25zIGFyZSBpbmRlbnRl ZC4iCiAgOnR5cGUgJ2ludGVnZXIKICA6Z3JvdXAgJ250Y21kKQoKKGRlZmN1c3RvbSBudGNt ZC1hdXRvLWluZGVudC1mbGFnIHQKICAiV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGluZGVu dCB3aGVuIHR5cGluZyBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLgpJZiBub24tbmlsLCB0aGUg Y2hhcmFjdGVycyBgKCcgYW5kIGApJyBhbHNvIGluZGVudCB0aGUgY3VycmVudApsaW5lIGlu IGRvcyBtb2RlLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnbnRjbWQpCgooZGVmZmFj ZSBudGNtZC1iYWNrcXVvdGUtZmFjZQogICcoKHQgKDp3ZWlnaHQgYm9sZCA6aW5oZXJpdCBk ZWZhdWx0KSkpCiAgIkZhY2UgdXNlZCB0byBoaWdobGlnaHQgYmFja3F1b3RlZCBjb21tYW5k cyBpbiBhIERPUyBgZm9yJy4iCiAgOmdyb3VwICdudGNtZCkKCihkZWZmYWNlIG50Y21kLWlt bWVkaWF0ZS12YXItcmVmLWZhY2UKICAnKCh0ICg6d2VpZ2h0IGJvbGQgOmluaGVyaXQgZGVm YXVsdCkpKQogICJGYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IGltbWVkaWF0ZWx5LWV4cGFuZGVk IHZhcmlhYmxlIHJlZmVyZW5jZXMuIgogIDpncm91cCAnbnRjbWQpCgooZGVmZmFjZSBudGNt ZC1sb29wLXZhci1yZWYtZmFjZQogICcoKHQgKDp3ZWlnaHQgYm9sZCA6aW5oZXJpdCBkZWZh dWx0KSkpCiAgIkZhY2UgdXNlZCB0byBoaWdobGlnaHQgbG9vcCB2YXJpYWJsZSByZWZlcmVu Y2VzLiIKICA6Z3JvdXAgJ250Y21kKQoKKGRlZmZhY2UgbnRjbWQtZGVsYXllZC12YXItcmVm LWZhY2UKICAnKCh0ICg6d2VpZ2h0IGJvbGQgOmluaGVyaXQgZGVmYXVsdCkpKQogICJGYWNl IHVzZWQgdG8gaGlnaGxpZ2h0IGRlbGF5LWV4cGFuZGVkIHZhcmlhYmxlIHJlZmVyZW5jZXMu Jy4iCiAgOmdyb3VwICdudGNtZCkKCjs7IFZhcmlhYmxlIHJlZmVyZW5jZXMgY29tZSBpbiB0 d28gc3R5bGVzLCB3aXRoIHR3byBkaWZmZXJlbnQgZ3JhbW1lcnMKOzsgKHN1cnByaXNlLCBz dXJwcmlzZSkuICUtdmFyaWFibGVzIGFyZSBleHBhbmRlZCBhdCBfUkVBRCBUSU1FXyBhbmQK OzsgY2FuIGNvbnRhaW4gbGl0ZXJhbGx5IF9hbnlfIGNoYXJhY3RlciBleGNlcHQgXG4gYW5k ICUuICEtdmFyaWFibGVzCjs7IGFyZSBleHBhbmRlZCBqdXN0IGJlZm9yZSBhIGNvbW1hbmQg aXMgcnVuLCBhbmQgYXJlIHJlYWQgdG8gc29tZQo7OyBleHRlbnQgYXMgYmFyZXdvcmRzLCB0 aG91Z2ggd2l0aG91dCBeLWVzY2FwaW5nLgoKOzsgSW5jb3Jwb3JhdGluZyB0aGVzZSBleHBh bnNpb24gc3R5bGVzIGludG8gb3VyIHBhcnNlciBiZWxvdyB3b3VsZCBiZQo7OyBwYWluZnVs LiBJbnN0ZWFkLCB3ZSBjaGVhdDogYmVmb3JlIHBhcnNpbmcsIHdlIHJlcGxhY2UgYWxsIHZh cmlhYmxlCjs7IHJlZmVyZW5jZXMgd2l0aCBhbiBlcXVpdmFsZW50IG51bWJlciBvZiAnWCcg Y2hhcmFjdGVycywgYW5kIGFmdGVyLAo7OyB3ZSByZXN0b3JlIGFsbCB0aGUgY2hhcmFjdGVy cyB0byB0aGVpciBvcmlnaW5hbCB2YWx1ZXMuCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNv bnN0IG50Y21kLXZhci1yZWYtJS1yeAogICAgYCg6IChncm91cCA/JSkgICAgICAgICAgICAg ICAgICAgICAgOyBvcGVuaW5nIFsxXQogICAgICAgIChncm91cCAoKyAobm90IChpbiAiJVxu IikpKSkgICAgOyBwcmltYXJ5IHZhcmlhYmxlIG5hbWUgWzJdCiAgICAgICAgKD8gIjoiCiAg ICAgICAgICAgKHwgKDogIn4iIChncm91cCAoKyAocmVnZXhwICJbMC05LC1dIikpKSkgOyBz dWJzdHJpbmcgWzNdCiAgICAgICAgICAgICAgKDogKGdyb3VwICgrIChub3QgKGluICIlXG4i KSkpKSA7IHN1YnN0aXR1dGlvbiBzcmM9WzRdCiAgICAgICAgICAgICAgICAgIj0iCiAgICAg ICAgICAgICAgICAgKGdyb3VwICgqIChub3QgKGluICIlXG4iKSkpKSkpKSA7IHJlcGxhY2Vt ZW50PVs1XQogICAgICAgIChncm91cCA/JSkpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOyBjbG9zaW5nIFs2XQogICAgIlJlZmVyZW5jZSB0byBhbiBpbW1lZGlhdGVseS1leHBh bmRlZCB2YXJpYWJsZS4iKSkKCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50Y21k LXZhci1yZWYtIS1yeC12YXJuYW1lCiAgICBgKHwgKG5vdCAoaW4gIiEmfDw+XlxuIikpCiAg ICAgICAgKDogIl4iIChub3QgKGluICIhXG4iKSkpKSkpCgooZXZhbC1hbmQtY29tcGlsZQog IChkZWZjb25zdCBudGNtZC12YXItcmVmLSEtcngKICAgIGAoOiAoZ3JvdXAgPyEpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgb3BlbmluZyBbMV0KICAgICAgICAoPyAoZ3Jv dXAgKCsgLG50Y21kLXZhci1yZWYtIS1yeC12YXJuYW1lKSkgOyBwcmltYXJ5IG5hbWUgWzJd CiAgICAgICAgICAgKD8gIjoiCiAgICAgICAgICAgICAgKHwgKDogIn4iIChncm91cCAoKyAo cmVnZXhwICJbMC05LC1dIikpKSkgOyBzdWJzdHJpbmcgWzNdCiAgICAgICAgICAgICAgICAg KDogKGdyb3VwICgrICxudGNtZC12YXItcmVmLSEtcngtdmFybmFtZSkpIDsgc3Vic3Qgc3Jj PVs0XQogICAgICAgICAgICAgICAgICAgICI9IgogICAgICAgICAgICAgICAgICAgIChncm91 cCAoKiAsbnRjbWQtdmFyLXJlZi0hLXJ4LXZhcm5hbWUpKSkpKSkgOyByZXBsIFs1XQogICAg ICAgIChncm91cCA/ISkpCiAgICAiUmVmZXJlbmNlIHRvIGEgZGVsYXllZC1leHBhbnNpb24g dmFyaWFibGUuIikpCgooZXZhbC1hbmQtY29tcGlsZQogIChkZWZjb25zdCBudGNtZC1wb3Np dGlvbmFsLXZhci1yZWYtcngKICAgIGAoOiAoZ3JvdXAgIiUiICkgICAgICAgICAgICAgICAg ICAgIDsgb3BlbmluZyBbMV0KICAgICAgICAoPyAoZ3JvdXAgIn4iKSAgICAgICAgICAgICAg ICAgIDsgc2VwYXJhdG9yIFsyXQogICAgICAgICAgIChncm91cCAoKiAoaW4gImZkcG54c2F0 eiIpKSkgOyBmbGFncyBbM10KICAgICAgICAgICAoPyAiJCIKICAgICAgICAgICAgICAoZ3Jv dXAgKCsgLG50Y21kLXZhci1yZWYtIS1yeC12YXJuYW1lKSkgOyBtYWdpY2FsIHJlZiBbNF0K ICAgICAgICAgICAgICAiOiIpKQogICAgICAgIChncm91cCAoaW4gIjAtOSIpKSAgICAgICAg ICAgICAgOyB2YXIgbmFtZSBbNV0KICAgICAgICApCiAgICAiTWF0Y2hlcyBhIHJlZmVyZW5j ZSB0byBhIG51bWVyaWMgcG9zaXRpb25hbCB2YXJpYWJsZS4iKSkKCjs7IEdvZCwgSSdkIHJh dGhlciBiZSB1c2luZyBDT0JPTC4gV2h5IGRvIHRoZSBwYXJzaW5nIHJ1bGVzIGZvciB0aGlz Cjs7IGhhdmUgdG8gYmUgc3VidGx5IGRpZmZlcmVudCBmcm9tIHRob3NlIGZvcgo7OyBudGNt ZC1wb3NpdGlvbmFsLXZhci1yZWY/CihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50 Y21kLWxvb3AtdmFyLXJlZi1yeAogICAgYCg6IChncm91cCAiJSIgKD8gIiUiKSkgICAgICAg ICAgICAgOyBvcGVuaW5nIFsxXQogICAgICAgICg/IChncm91cCAifiIpICAgICAgICAgICAg ICAgICAgOyBzZXBhcmF0b3IgWzJdCiAgICAgICAgICAgKGdyb3VwICgqIChpbiAiZmRwbnhz YXR6IikpKSA7IGZsYWdzIFszXQogICAgICAgICAgICg/ICIkIgogICAgICAgICAgICAgIChn cm91cCAoKyAsbnRjbWQtdmFyLXJlZi0hLXJ4LXZhcm5hbWUpKSA7IG1hZ2ljYWwgcmVmIFs0 XQogICAgICAgICAgICAgICI6IikpCiAgICAgICAgKGdyb3VwIChpbiAiYS16MC05IikpICAg ICAgICAgICA7IHZhciBuYW1lIFs1XQogICAgICAgICkKICAgICJNYXRjaGVzIGEgcmVmZXJl bmNlIHRvIGEgZm9yLWxvb3AgdmFyaWFibGUuIikpCgooZGVmY29uc3QgbnRjbWQtZm9udC1s b2NrLXN5bnRhY3RpYy1rZXl3b3JkcwogIGAoCiAgICA7OyBCYXNpYyBzeW50YXgKICAgICgs KGxhbWJkYSAobGltKQogICAgICAgIChsZXQgKCgqbnRjbWQtYXBwbHktc3ludGFjdGljLWhp Z2hsaWdodHMqIHQpKQogICAgICAgICAgKG50Y21kLWZvbnQtbG9jay1tYXRjaGVyIGxpbSkp KSkpKQoKKGRlZmNvbnN0IG50Y21kLWZvbnQtbG9jay1rZXl3b3JkcwogIGAoCiAgICA7OyBC YXNpYyBzeW50YXgKICAgICgsKGxhbWJkYSAobGltKQogICAgICAgIChsZXQgKCgqbnRjbWQt YXBwbHktaGlnaGxpZ2h0cyogdCkpCiAgICAgICAgICAobnRjbWQtZm9udC1sb2NrLW1hdGNo ZXIgbGltKSkpKQoKICAgIDs7IFN3aXRjaGVzIC0tLSBmcm9tIGRvcy1tb2RlLgogICAgKCJb ID1dWy0vXStcXChcXHcrXFwpIiAoMSBmb250LWxvY2stdHlwZS1mYWNlIGFwcGVuZCkpKSkK CihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50Y21kLXF1b3RlZC1zdHJpbmctcngK ICAgIGAoOiAoZ3JvdXAgIlwiIikKICAgICAgICAoZ3JvdXAgKCogKG5vdCAoaW4gIlxuXCIi KSkpKQogICAgICAgIChncm91cCAofCAiXCIiCiAgICAgICAgICAgICAgICAgICJcbiIKICAg ICAgICAgICAgICAgICAgYnVmZmVyLWVuZCkpKQogICAgIk1hdGNoZXMgYSBxdW90ZWQgc3Ry aW5nIGluIG1vc3QgY29udGV4dHM7IGdyb3VwIDEgaXMgdGhlCnN0cmluZyBiZWdpbm5pbmc7 IGdyb3VwIDIgaXMgdGhlIHN0cmluZyBpbnRlcmlvcjsgZ3JvdXAgMyBpcyB0aGUKc3RyaW5n IGVuZC4iKSkKCihkZWZjb25zdCBudGNtZC1zZXBhcmF0b3ItY2hhcmFjdGVycwogICcoP1ws ID9cOyA/XD0pCiAgIkNoYXJhY3RlcnMgdGhhdCBzZXBhcmF0ZSBET1MgY29tbWFuZCBhcmd1 bWVudHMuIGNtZCB0cmVhdHMKdGhlc2Ugc29tZXdoYXQgbGlrZSB3aGl0ZXNwYWNlLiIgKQoK KGRlZmNvbnN0IG50Y21kLXB1bmN0dWF0aW9uLWNoYXJhY3RlcnMKICBgKCxAbnRjbWQtc2Vw YXJhdG9yLWNoYXJhY3RlcnMKICAgID9cPCA/XD4gP1wmID9cfCA/XFwpKQoKOzsgYDonIGlz bid0IGEgbGVnYWwgZmlsZW5hbWUgY29uc3RpdHVlbnQsIGJ1dCB0aGF0IGRvZXNuJ3QgYWZm ZWN0IGhvdwo7OyB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBwYXJzZXMgaXQuIGAqJyBhbmQg YD8nIGFyZSB3aWxkY2FyZAo7OyBjaGFyYWN0ZXJzLCBidXQgdGhhdCBkb2Vzbid0IGFmZmVj dCBob3cgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIKOzsgcGFyc2VzIHRoZW0gZWl0aGVyLCBz aW5jZSB3aWxkY2FyZCBleHBhbnNpb24gaXNuJ3QgaGFuZGVkIGJ5IHRoZQo7OyBzaGVsbC4K KGRlZmNvbnN0IG50Y21kLWxlZ2FsLWNvbW1hbmQtY2hhcmFjdGVycwogICcoP1whID9cIyA/ XCQgP1wlID9cJyA/XCsgP1wtID9cLiA/XFsgP1xdCiAgICAgICAgP1xfID9cYCA/XHsgP1x9 ID9cfiA/XCogP1w/ID9cOiA/XEApCiAgIkNoYXJhY3RlcnMgY29tbW9ubHkgY29uc2lkZXJl ZCBieSBwYXJ0cyBvZiBjbWQuZXhlIHRvIGJlIHBhcnRzCm9mIGNvbW1hbmRzLiIpCgooZXZh bC1hbmQtY29tcGlsZQogIChkZWZjb25zdCBudGNtZC1idWlsdGluLXNlcGFyYXRvcnMKICAg ICcoP1xbID9cXSA/OiA/PSA/LCA/XDsgP1wuID88ID8+ID98ID8mID9cID9cdCkKICAgICJD aGFyYWN0ZXJzIHRoYXQgbWF5IGFwcGVhciBpbiBgbnRjbWQtbGVnYWwtY29tbWFuZC1jaGFy YWN0ZXJzJywgYnV0CnRoYXQgYXJlIG5ldmVydGhlbGVzcyBjb21tYW5kIHNlcGFyYXRvcnMg d2hlbiBmb2xsb3dpbmcgc2hlbGwKYnVpbHRpbnMuIiApKQoKKGRlZmNvbnN0IG50Y21kLW1v ZGUtc3ludGF4LXRhYmxlCiAgKGxldCAoKHRhYmxlIChtYWtlLXN5bnRheC10YWJsZSkpKQoK ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9eICAiLyIgICB0YWJsZSkKICAgIChtb2RpZnkt c3ludGF4LWVudHJ5ID9cIiAiLiIgICB0YWJsZSkKCiAgICAoZG9saXN0IChjIG50Y21kLXB1 bmN0dWF0aW9uLWNoYXJhY3RlcnMpCiAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5IGMgIi4i IHRhYmxlKSkKCiAgICAoZG9saXN0IChjIG50Y21kLWxlZ2FsLWNvbW1hbmQtY2hhcmFjdGVy cykKICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgYyAiXyIgdGFibGUpKQogICAgdGFibGUp CiAgIlN5bnRheCB0YWJsZSB1c2VkIGZvciBudGNtZC1tb2RlLiIpCgooZGVmY29uc3QgbnRj bWQtc3RyaW5nLXN5bnRheC10YWJsZQogIChsZXQgKCh0YWJsZSAobWFrZS1zeW50YXgtdGFi bGUgbnRjbWQtbW9kZS1zeW50YXgtdGFibGUpKSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5 ID9eICIuIiB0YWJsZSkKICAgIHRhYmxlKQogICJTeW50YXggdGFibGUgdXNlZCBpbnNpZGUg YSBzdHJpbmcuIikKCihkZWZ2YXIgKm50Y21kLWJhcmV3b3JkLWZhY2UqIG5pbAogICJNYXJr IGJhcmV3b3JkcyBpbiB0aGlzIGZhY2Ugd2hlbiB3ZSBtb3ZlIG92ZXIgdGhlbS4gSWYgbmls LCBkbyBub3RoaW5nLiIpCgooZGVmdmFyICpudGNtZC1iYXJld29yZC1hbGxvdy1zcGFjZSog dAogICJXaGVuIG5vbi1uaWwsIGJhcmV3b3JkcyBjYW4gaW5jbHVkZSBjb21tYW5kIHNlcGFy YXRvcnMgaWYKdGhleSdyZSBlc2NhcGVkOyB3aGVuIG5pbCwgZXZlbiBlc2NhcGVkIGNvbW1h bmQgc2VwYXJhdG9yIGNoYXJhY3RlcnMKZW5kIHRoZSBiYXJld29yZC4iKQoKKGRlZnZhciAq bnRjbWQtYXBwbHktaGlnaGxpZ2h0cyogbmlsCiAgIldoZW4gbm9uLW5pbCwgcGFyc2luZyBj b21tYW5kcyBhcHBseSBmb250LWxvY2sgaGlnaGxpZ2h0cy4iKQoKKGRlZnZhciAqbnRjbWQt YXBwbHktc3ludGFjdGljLWhpZ2hsaWdodHMqIG5pbAogICJXaGVuIG5vbi1uaWwsIHBhcnNp bmcgY29tbWFuZHMgYXBwbHkgc3ludGFjdGljIGhpZ2hsaWdodHMuIikKCihkZWZ2YXIgbnRj bWQtbW9kZS1hYmJyZXYtdGFibGUgbmlsKQooZGVmaW5lLWFiYnJldi10YWJsZSAnbnRjbWQt bW9kZS1hYmJyZXYtdGFibGUgKCkpCgooZGVmdmFyIG50Y21kLW1vZGUtbWFwCiAgKGxldCAo KG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAobWFwYyAobGFtYmRhIChrZXkpCgkg ICAgKGRlZmluZS1rZXkgbWFwIGtleSAjJ250Y21kLWluc2VydC1hbmQtaW5kZW50KSkKCSAg JygiKCIgIikiKSkKCiAgICAoZGVmaW5lLWtleSBtYXAgWz9cTS1hXSAgICAgICAnbnRjbWQt YmVnaW5uaW5nLW9mLWNtZGxpbmUpCiAgICAoZGVmaW5lLWtleSBtYXAgWz9cTS1lXSAgICAg ICAnbnRjbWQtZW5kLW9mLWNtZGxpbmUpCiAgICBtYXApKQoKKHB1dCAnbnRjbWQtc3ludGF4 LWVycm9yCiAgICAgJ2Vycm9yLWNvbmRpdGlvbnMKICAgICAnKG50Y21kLXN5bnRheC1lcnJv ciBlcnJvcikpCgoocHV0ICdudGNtZC1zeW50YXgtZXJyb3IKICAgICAnZXJyb3ItbWVzc2Fn ZSAiRE9TIHN5bnRheCBlcnJvciIpCgooZGVmdW4gbnRjbWQtcmUtc2VhcmNoLWZvcndhcmQ/ IChyZWdleHApCiAgIkxpa2UgcmUtc2VhcmNoLWZvcndhcmQsIGJ1dCBuZXZlciBmYWlsIC0t LSByZXR1cm4gbmlsCiAgaW5zdGVhZC4iCiAgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCBu aWwgdCkpCgooZGVmdW4gbnRjbWQtcmUtc2VhcmNoLWJhY2t3YXJkPyAocmVnZXhwKQogICJM aWtlIHJlLXNlYXJjaC1iYWNrd2FyZCwgYnV0IG5ldmVyIGZhaWwgLS0tIHJldHVybiBuaWwK ICBpbnN0ZWFkLiIKICAocmUtc2VhcmNoLWJhY2t3YXJkIHJlZ2V4cCBuaWwgdCkpCgooZGVm dW4gbnRjbWQtZm9yd2FyZC1zeW50YWN0aWMtd3MgKCZvcHRpb25hbCBob3Jpem9udGFsLW9u bHkpCiAgIk1vdmUgZm9yd2FyZCBvdmVyIHN5bnRhY3RpYyB3aGl0ZXNwYWNlLCBhbGxvd2lu ZyBvbmUgbGluZQpjb250aW51YXRpb24gYXQgdGhlIGVuZC4iCiAgKHNraXAtY2hhcnMtZm9y d2FyZCAiPTssIFx0IikKICAodW5sZXNzIGhvcml6b250YWwtb25seQogICAgKG50Y21kLXJl LXNlYXJjaC1mb3J3YXJkPyAocnggcG9pbnQgIl5cbiIpKSkpCgooZGVmdW4gbnRjbWQtZm9y d2FyZC1tYW5kYXRvcnktc3ludGFjdGljLXdzICgmb3B0aW9uYWwgaG9yaXpvbnRhbC1vbmx5 KQogICh1bmxlc3MgKG1lbXFsIChjaGFyLWFmdGVyKSAnKD8sID89ID9cOyA/XCA/XHQpKQog ICAgKHNpZ25hbCAnbnRjbWQtc3ludGF4LWVycm9yICcoImV4cGVjdGVkIHdoaXRlc3BhY2Ui KSkpCiAgKG50Y21kLWZvcndhcmQtc3ludGFjdGljLXdzIGhvcml6b250YWwtb25seSkpCgoo ZGVmdW4gbnRjbWQtYXBwbHktaGlnaGxpZ2h0IChoaWdobGlnaHQpCiAgKHdoZW4gKm50Y21k LWFwcGx5LWhpZ2hsaWdodHMqCiAgICAoZm9udC1sb2NrLWFwcGx5LWhpZ2hsaWdodCBoaWdo bGlnaHQpKSkKCihkZWZ1biBudGNtZC1hcHBseS1zeW50YWN0aWMtaGlnaGxpZ2h0IChoaWdo bGlnaHQpCiAgKHdoZW4gKm50Y21kLWFwcGx5LXN5bnRhY3RpYy1oaWdobGlnaHRzKgogICAg KGZvbnQtbG9jay1hcHBseS1zeW50YWN0aWMtaGlnaGxpZ2h0IGhpZ2hsaWdodCkpKQoKKGRl ZnVuIG50Y21kLWhhbmRsZS1wYXJzZS1lc2NhcGUgKCkKICAoZm9yd2FyZC1jaGFyKQoKICAo dW5sZXNzIChlb2JwKQogICAgKGZvcndhcmQtY2hhcikpCgogICh3aGVuIChlcWwgKGNoYXIt YWZ0ZXIpID9cbikKICAgIChmb3J3YXJkLWNoYXIpKSkKCihkZWZ1biBudGNtZC1oYW5kbGUt cGFyc2Utb3Blbi1wYXJlbnRoZXNpcyAoKQogIDs7ICpzaWdoKiBJdCdzIGltcG9zc2libGUg dG8gZ2V0IHRoaXMgZnVsbHkgY29ycmVjdAogIDs7IHdpdGggb25seSBsb2NhbCBrbm93bGVk Z2UuCiAgKHNldC1tYXRjaC1kYXRhIChsaXN0IChwb2ludCkgKDErIChwb2ludCkpKSkKICAo bnRjbWQtYXBwbHktc3ludGFjdGljLWhpZ2hsaWdodAogICAnKDAgIi4iKSkKCiAgOzsgWWVz LCB0aGlzIGlzIGFubm95aW5nLiBZb3Ugc2hvdWxkbid0IGJlIHVzaW5nCiAgOzsgdW5xdW90 ZWQgcGFyZW50aGVzaXMgZXhjZXB0IGFzIGNtZC5leGUgcGFyZW50aGVzaXMuCiAgKG50Y21k LWFwcGx5LWhpZ2hsaWdodAogICAnKDAgZm9udC1sb2NrLXdhcm5pbmctZmFjZSkpCiAgKGZv cndhcmQtY2hhcikpCgooZGVmdW4gbnRjbWQtZm9yd2FyZC1ub3JtYWwtY21kLWxpbmUgKCkK ICA7OyBOb3cgdGhhdCB3ZSd2ZSByZWFkIGEgY29tbWFuZCBuYW1lLCBwYXJzZSB0aGUgY29t bWFuZCBsaW5lCiAgOzsgcHJvcGVyLgogICh3aGlsZQogICAgICAocHJvZ24gKHNraXAtY2hh cnMtZm9yd2FyZCAiXigpXlwiPD4mfFxuIikKICAgICAgICAgICAgIChlY2FzZSAoY2hhci1h ZnRlcikKICAgICAgICAgICAgICAgKD9eCiAgICAgICAgICAgICAgICAobnRjbWQtaGFuZGxl LXBhcnNlLWVzY2FwZSkKICAgICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAgICAoP1wo CiAgICAgICAgICAgICAgICAobnRjbWQtaGFuZGxlLXBhcnNlLW9wZW4tcGFyZW50aGVzaXMp CiAgICAgICAgICAgICAgICB0KQoKICAgICAgICAgICAgICAgKD9cKQogICAgICAgICAgICAg ICAgOzsgV2UgY2FuJ3QgdGVsbCB3aGV0aGVyIHRoaXMgcGFyZW4gbWlnaHQgYmUgY2xvc2lu ZyBhCiAgICAgICAgICAgICAgICA7OyBjb21wb3VuZCBjb21tYW5kIC0tLSBpZiBpdCBpcywg d2Ugc2hvdWxkIGNsb3NlIHRoZQogICAgICAgICAgICAgICAgOzsgY29tbWFuZC4gSWYgaXQg aXMgbm90LCB0aGUgcGFyZW50aGVzaXMgaXMganVzdAogICAgICAgICAgICAgICAgOzsgYW5v dGhlciBjaGFyYWN0ZXIuCgogICAgICAgICAgICAgICAgOzsgSXQgc2VlbXMgbGVhc3QgYmFk IHRvIGFsd2F5cyBhc3N1bWUgdGhlIGZvcm1lcgogICAgICAgICAgICAgICAgOzsgY2FzZS4K ICAgICAgICAgICAgICAgIG5pbCkKCiAgICAgICAgICAgICAgICgoPzwgPz4pCiAgICAgICAg ICAgICAgICAod2hlbiAobnRjbWQtcmUtc2VhcmNoLWJhY2t3YXJkPwogICAgICAgICAgICAg ICAgICAgICAgIChyeCAoaW4gIiBcdCw7PSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICg/IChpbiAiMC05IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50KSkKICAg ICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhcikpCiAgICAgICAgICAgICAgICAobnRjbWQt Zm9yd2FyZC1mZG1hbmlwKQogICAgICAgICAgICAgICAgdCkKCiAgICAgICAgICAgICAgICg/ XCIKICAgICAgICAgICAgICAgIChudGNtZC1mb3J3YXJkLXF1b3RlZC1zdHJpbmcpCiAgICAg ICAgICAgICAgICB0KQoKICAgICAgICAgICAgICAgKChuaWwgPyYgP3wgP1xuKQogICAgICAg ICAgICAgICAgbmlsKSkpKQogIChudGNtZC1jb250aW51ZS1mb3J3YXJkLWNtZCkpCgooZGVm dW4gbnRjbWQtaW5kZW50LWxpbmUgKCkKICAiSW5kZW50IGN1cnJlbnQgbGluZSBhcyBiYXRj aCBzY3JpcHQiCiAgKGxldCAoKGNvbnRpbnVhdGlvbi1maXh1cCAwKQogICAgICAgIChvZmZz ZXQgKC0gKGN1cnJlbnQtY29sdW1uKSAoY3VycmVudC1pbmRlbnRhdGlvbikpKSkKICAgIChz YXZlLWV4Y3Vyc2lvbgogICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgICAgKHdoZW4g KGxvb2tpbmctYXQgIlxcXiskIikKICAgICAgICAoc2V0ZiBjb250aW51YXRpb24tZml4dXAg KC0gKG1hdGNoLWVuZCAwKSAobWF0Y2gtYmVnaW5uaW5nIDApKSkKICAgICAgICAod2l0aC1z aWxlbnQtbW9kaWZpY2F0aW9ucwogICAgICAgICAgKHJlcGxhY2UtbWF0Y2ggIiIpKSkpCiAg ICAoaW5kZW50LWxpbmUtdG8gKG50Y21kLWNhbGN1bGF0ZS1pbmRlbnQpKQogICAgKHNhdmUt ZXhjdXJzaW9uCiAgICAgIChlbmQtb2YtbGluZSAxKQogICAgICAod2l0aC1zaWxlbnQtbW9k aWZpY2F0aW9ucwogICAgICAgIChpbnNlcnQtY2hhciA/XiBjb250aW51YXRpb24tZml4dXAp KSkKICAgIChkZWNmIG9mZnNldCBjb250aW51YXRpb24tZml4dXApCiAgICAod2hlbiAoPiBv ZmZzZXQgMCkgKGZvcndhcmQtY2hhciBvZmZzZXQpKSkpCgooZGVmdW4gbnRjbWQtY3VycmVu dC1saW5lLWNvbnRpbnVlcy1wICgpCiAgKGFuZCAoZXFsIChjaGFyLWJlZm9yZSAocG9pbnQt YXQtZW9sKSkgP14pCiAgICAgICAobm90IChlcWwgKGNoYXItYmVmb3JlICgxLSAocG9pbnQt YXQtZW9sKSkpID9eKSkpKQoKKGRlZnVuIG50Y21kLWNvbW1lbnQtb3Itc3RyaW5nLXN0YXJ0 ICgpCiAgKG50aCA4IChzeW50YXgtcHBzcykpKQoKKGRlZnVuIG50Y21kLWNvbnRpbnVlZC1s aW5lLXAgKCkKICAiSXMgdGhlIGN1cnJlbnQgbGluZSBjb250aW51ZWQgZnJvbSB0aGUgcHJl dmlvdXM/IgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGVuZC1vZi1saW5lIDApCiAgICAoYW5k IChub3QgKGJvYnApKQogICAgICAgICAoZXFsIChjaGFyLWJlZm9yZSkgP14pCgogICAgICAg ICA7OyBNYWtlIHN1cmUgdGhlIHByZXZpb3VzIGxpbmUgaXNuJ3QgYSBuZXdsaW5lLQogICAg ICAgICA7OyB0ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGhhcyBhIGNsb3NpbmcgLQogICAgICAg ICAobm90IChlcWwgKGNhciAoc3ludGF4LWFmdGVyICgxLSAocG9pbnQpKSkpCiAgICAgICAg ICAgICAgICAgIDE1KSkKCiAgICAgICAgIChub3QgKGVxbCAoY2hhci1iZWZvcmUgKDEtIChw b2ludCkpKQogICAgICAgICAgICAgICAgICA/XikpKSkpCgooZGVmdW4gbnRjbWQtYmVnaW5u aW5nLW9mLWNtZGxpbmUgKCkKICAiR28gdG8gYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IGNv bW1hbmQsIHRha2luZyBpbnRvIGFjY291bnQKbGluZSBjb250aW51YXRpb25zLgoKUmV0dXJu IHQgaWYgY3VycmVudCBsaW5lIHdhcyBjb250aW51ZWQgZnJvbSBwcmV2aW91cy4iCiAgKGlu dGVyYWN0aXZlKQogIChsZXQgKChjb250aW51ZWQtcCAobnRjbWQtY29udGludWVkLWxpbmUt cCkpKQogICAgKHNraXAtc3ludGF4LWJhY2t3YXJkICItPiIpCiAgICAod2hpbGUgKG50Y21k LWNvbnRpbnVlZC1saW5lLXApCiAgICAgIChlbmQtb2YtbGluZSAwKSkKICAgIChiYWNrLXRv LWluZGVudGF0aW9uKQogICAgY29udGludWVkLXApKQoKKGRlZnVuIG50Y21kLWVuZC1vZi1j bWRsaW5lICgpCiAgIkdvIHRvIGVuZCBvZiBjdXJyZW50IGNvbW1hbmQsIHRha2luZyBpbnRv CmFjY291bnQgbGluZSBjb250aW51YXRpb25zLiBSZXR1cm4gdCBpZiB3ZSBmb2xsb3dlZAph IGNvbnRpbnVhdGlvbiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoY29udGludWVkLXApCiAg ICAoc2tpcC1zeW50YXgtZm9yd2FyZCAiLT4iKQogICAgKHdoaWxlIChhbmQgKG5vdCAoZW9i cCkpCiAgICAgICAgICAgICAgICAobnRjbWQtY3VycmVudC1saW5lLWNvbnRpbnVlcy1wKSkK ICAgICAgKHNldGYgY29udGludWVkLXAgdCkKICAgICAgKGZvcndhcmQtbGluZSAxKSkKCiAg ICAoZW5kLW9mLWxpbmUgMSkKICAgIChza2lwLXN5bnRheC1iYWNrd2FyZCAiLSIgKHBvaW50 LWF0LWJvbCkpCiAgICBjb250aW51ZWQtcCkpCgooZGVmdW4gbnRjbWQtY2FsY3VsYXRlLWlu ZGVudCAoKQogICJSZXR1cm4gYXBwcm9wcmlhdGUgaW5kZW50YXRpb24gZm9yIHRoZSBjdXJy ZW50IGxpbmUgYXMgYmF0Y2ggY29kZS4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0IChp bmhpYml0LXBvaW50LW1vdGlvbi1ob29rcwogICAgICAgICAgaW5oaWJpdC1maWVsZC10ZXh0 LW1vdGlvbgogICAgICAgICAgcmVmZXJlbmNlLXBvaW50IChpbmRlbnQgMCkpCgogICAgICA7 OyBHbyB0byBiZWdpbm5pbmcgb2YgY29tbWFuZDsgaWYgd2UgaGFkIHRvIGdldCB0aGVyZSBi eSBiYWNraW5nCiAgICAgIDs7IG92ZXIgYSBsaW5lIGNvbnRpbnVhdGlvbiwgd2Ugd2VyZSBv biBhIGNvbnRpbnVlZCBsaW5lIGFuZAogICAgICA7OyBzaG91bGQgaW5kZW50IGFub3RoZXIg bGV2ZWwuICBBIGNvbnRpbnVlZCBsaW5lJ3MgaW5kZW50YXRpb24KICAgICAgOzsgaXMgZ292 ZXJuZWQgYnkgdGhlIGxpbmUgdGhhdCBiZWdhbiB0aGUgY29tbWFuZC4KCiAgICAgIChiYWNr LXRvLWluZGVudGF0aW9uKQogICAgICAod2hlbiAobnRjbWQtY29udGludWVkLWxpbmUtcCkK ICAgICAgICAobnRjbWQtYmVnaW5uaW5nLW9mLWNtZGxpbmUpCiAgICAgICAgKGluY2YgaW5k ZW50IG50Y21kLWluZGVudC1sZXZlbCkpCgogICAgICA7OyBJZiB0aGUgbGluZSB3ZSdyZSB1 c2luZyB0byBjb21wdXRlIGluZGVudGF0aW9uIGVuZHMgd2l0aAogICAgICA7OyBjbG9zaW5n IHBhcmVudGhlc2lzLCBza2lwIG92ZXIgdGhlbSBzbyB0aGF0IHRoZSBsaW5lIGlzCiAgICAg IDs7IGRlZGVudGVkIHByb3Blcmx5LgogICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIpIikK ICAgICAgKHNldGYgcmVmZXJlbmNlLXBvaW50IChwb2ludCkpCiAgICAgIChiYWNrLXRvLWlu ZGVudGF0aW9uKQoKICAgICAgOzsgTm93IGZpbmQgdGhlIGxpbmUgcmVsYXRpdmUgdG8gd2hp Y2ggd2UnZCBsaWtlIHRvIGluZGVudCBvdXIKICAgICAgOzsgcmVmZXJlbmNlIGxpbmUuICBH byB0byBwcmV2aW91cyBub25ibGFuayBsaW5lOyB3ZSBtaWdodCBlbmQKICAgICAgOzsgdXAg YXQgYm9iLgogICAgICAobnRjbWQtYmVnaW5uaW5nLW9mLWNtZGxpbmUpCgogICAgICA7OyBT a2lwIHRoZXNlIGJlY2F1c2UgdGhlIGN1cnJlbnQgbGluZSB3YXMgYWxyZWFkeSBkZWRlbnRl ZCB0bwogICAgICA7OyBhY2NvdW50IGZvciB0aGVtLgogICAgICAoc2tpcC1jaGFycy1mb3J3 YXJkICIpIikKCiAgICAgIChpbmNmIGluZGVudCAoY3VycmVudC1pbmRlbnRhdGlvbikpCiAg ICAgIChpbmNmIGluZGVudCAoKiAobnRoIDAgKHBhcnNlLXBhcnRpYWwtc2V4cAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlZmVyZW5jZS1wb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICBudGNtZC1p bmRlbnQtbGV2ZWwpKQogICAgICAobWF4IDAgaW5kZW50KSkpKQoKKGRlZnVuIG50Y21kLWlu c2VydC1hbmQtaW5kZW50IChrZXkpCiAgIlJ1biB0aGUgY29tbWFuZCBib3VuZCB0byBLRVks IGFuZCBpbmRlbnQgaWYgbmVjZXNzYXJ5LgpJbmRlbnRhdGlvbiBkb2VzIG5vdCB0YWtlIHBs YWNlIGlmIHBvaW50IGlzIGluIGEgc3RyaW5nIG9yCmNvbW1lbnQuIgogIChpbnRlcmFjdGl2 ZSAobGlzdCAodGhpcy1jb21tYW5kLWtleXMpKSkKICAoY2FsbC1pbnRlcmFjdGl2ZWx5IChs b29rdXAta2V5IChjdXJyZW50LWdsb2JhbC1tYXApIGtleSkpCiAgKGxldCAoKHN5bnRheCAo c3ludGF4LXBwc3MpKSkKICAgICh3aGVuIChvciAoYW5kIChub3QgKG50aCA4IHN5bnRheCkp CiAgICAgICAgICAgICAgICAgICBudGNtZC1hdXRvLWluZGVudC1mbGFnKQogICAgICAgICAg ICAgIChhbmQgKG50aCA0IHN5bnRheCkKICAgICAgICAgICAgICAgICAgIChlcWwgKGN1cnJl bnQtY29sdW1uKQogICAgICAgICAgICAgICAgICAgICAgICgxKyAoY3VycmVudC1pbmRlbnRh dGlvbikpKSkpCiAgICAgIChpbmRlbnQtYWNjb3JkaW5nLXRvLW1vZGUpKSkpCgooZGVmdW4g bnRjbWQtaW5wbGFjZS1yZXBsYWNlIChyZXBsYWNlbWVudCkKICAiUmVwbGFjZSB0aGUgY2hh cmFjdGVycyBhdCBwb2ludCB3aXRoIFJFUExBQ0VNRU5UIHdpdGhvdXQgZGlzdHVyYmluZyBt YXJrZXJzLgoKTGVhdmUgcG9pbnQgYWZ0ZXIgcmVwbGFjZW1lbnQuIFRoZSBudW1iZXIgb2Yg Y2hhcmFjdGVycyByZXBsYWNlZAppcyB0aGUgbGVuZ3RoIG9mIFJFUExBQ0VNRU5ULiBUZXh0 IHByb3BlcnRpZXMgZnJvbSBSRVBMQUNFTUVOVAphcmUgdXNlZC4iCgogIChsb29wIGZvciBp IGJlbG93IChsZW5ndGggcmVwbGFjZW1lbnQpCiAgICAgICAgOzsgUmVwbGFjZSB0aGUgY2hh cmFjdGVyIGFmdGVyIHBvaW50IHdpdGggdGhlIG5leHQgY2hhcmFjdGVyCiAgICAgICAgOzsg ZnJvbSByZXBsYWNlbWVudC4gV2UgbXVzdCB3b3JyeSBhYm91dCB0d28ga2luZHMKICAgICAg ICA7OyBvZiBtYXJrZXI6IHRob3NlIHBvaW50aW5nIGF0IHBvaW50IChpbmNsdWRpbmcgKHBv aW50KSksIGFuZAogICAgICAgIDs7IHRob3NlIHBvaW50aW5nIGF0ICgxKyAocG9pbnQpKS4K ICAgICAgICA7OwogICAgICAgIDs7IE1lbnRhbGx5IHJ1biB0aHJvdWdoIHRoZSBjb2RlIGJl bG93LCBhbmQgeW91J2xsIHNlZSB0aGF0CiAgICAgICAgOzsgYm90aCBraW5kcyBvZiBtYXJr ZXIgYXJlIHByZXNlcnZlZC4KICAgICAgICA7OwogICAgICAgIGRvIChwcm9nbgogICAgICAg ICAgICAgKGZvcndhcmQtY2hhciAxKQogICAgICAgICAgICAgKGluc2VydC1iZWZvcmUtbWFy a2VycyAoYXJlZiByZXBsYWNlbWVudCBpKSkKICAgICAgICAgICAgIChzZXQtdGV4dC1wcm9w ZXJ0aWVzICgxLSAocG9pbnQpKSAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodGV4dC1wcm9wZXJ0aWVzLWF0IGkgcmVwbGFjZW1lbnQpKQogICAgICAgICAg ICAgKGJhY2t3YXJkLWNoYXIgMSkKICAgICAgICAgICAgIChkZWxldGUtY2hhciAtMSkKICAg ICAgICAgICAgIChmb3J3YXJkLWNoYXIgMSkpKSkKCihkZWZ1biBudGNtZC1hcHBseS1wbGFj ZWhvbGRlciAoYmVnaW4gZW5kICZyZXN0IGhpZ2hsaWdodHMpCiAgIlJlcGxhY2UgdGV4dCBi ZXR3ZWVuIEJFR0lOIGFuZCBFTkQgd2l0aCBhIHBsYWNlaG9sZGVyLCBzYXZpbmcKcmVzdG9y YXRpb24gaW5mb3JtYXRpb24gaW4gdGhlIHRleHQgcHJvcGVydHkgbnRjbWQtcmVzdG9yZS1p bmZvLgpMZWF2ZSBwb2ludCB1bmNoYW5nZWQuIgogIChsZXQgKChwbGFjZWhvbGRlci1zdHJp bmcgKG1ha2Utc3RyaW5nICgtIGVuZCBiZWdpbikgP1gpKSkKICAgIChwdXQtdGV4dC1wcm9w ZXJ0eSAwIDEgJ250Y21kLXJlc3RvcmUtaW5mbwogICAgICAgICAgICAgICAgICAgICAgIChs aXN0KiAoYnVmZmVyLXN1YnN0cmluZyBiZWdpbiBlbmQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChtYXRjaC1kYXRhIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhpZ2hsaWdodHMpCiAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXItc3RyaW5n KQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIChnb3RvLWNoYXIgYmVnaW4pCiAgICAgIChu dGNtZC1pbnBsYWNlLXJlcGxhY2UgcGxhY2Vob2xkZXItc3RyaW5nKSkpKQoKKGRlZnVuIG50 Y21kLXJlcGxhY2UtdmFyLXJlZnMgKCkKICAiUmVwbGFjZSBhbGwgdmFyaWFibGUgcmVmZXJl bmNlcyBpbiB0aGUgY3VycmVudCByZXN0cmljdGlvbgp3aXRoIGEgcGxhY2Vob2xkZXIsIHN0 b3JpbmcgcmVzdG9yYXRpb24gaW5mb3JtYXRpb24gaW4gdGV4dApwcm9wZXJ0aWVzLiAiCiAg KGludGVyYWN0aXZlICJyIikKCiAgOzsgUGFzcyAwOiByZXBsYWNlIHBvc2l0aW9uYWwgYXJn dW1lbnRzCiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAod2hpbGUgKG50Y21kLXJlLXNl YXJjaC1mb3J3YXJkPwogICAgICAgICAgKHJ4IChldmFsIG50Y21kLXBvc2l0aW9uYWwtdmFy LXJlZi1yeCkpKQogICAgKHVubGVzcyAoZXFsIChjaGFyLWJlZm9yZSAobWF0Y2gtYmVnaW5u aW5nIDApKSA/JSkKICAgICAgKG50Y21kLWFwcGx5LXBsYWNlaG9sZGVyCiAgICAgICAobWF0 Y2gtYmVnaW5uaW5nIDApCiAgICAgICAobWF0Y2gtZW5kIDApCiAgICAgICAnKDAgJ250Y21k LWltbWVkaWF0ZS12YXItcmVmLWZhY2UgYXBwZW5kKSkpKQogIAogIDs7IFBhc3MgMTogcmVw bGFjZSBpbW1lZGlhdGUgZXhwYW5zaW9uLiAgVHJ5IG5vdCB0byBiZSBjb25mdXNlZCBieQog IDs7IGxpbmVzIGxpa2UgdGhlc2U6CiAgOzsKICA7OyAgIGZvciAvZiAlJXAgaW4gKCVibGFo JSkgLi4uCiAgOzsgICBmb3IgL2YgJXAgaW4gKCVibGFoJSkgLi4uCiAgOzsKICA7OyBXZSBp bml0aWFsbHkgdGFrZSAiJXAgaW4gKCUiIHRvIGJlIHRoZSB2YXJpYWJsZSByZWZlcmVuY2Uu ICBXZQogIDs7IHJlamVjdCBpdCBiZWNhdXNlIHRoZSBvcGVuaW5nICUgaXMgaXRzZWxmIHBy ZWNlZGVkIGJ5IGEgJSwgc28gd2UKICA7OyBiYWNrdHJhY2sgdG8ganVzdCBiZWZvcmUgdGhl IHNlY29uZCAlIHRvIHRyeSBhZ2Fpbi4KICA7OwogIChnb3RvLWNoYXIgKHBvaW50LW1pbikp CiAgKHdoaWxlIChudGNtZC1yZS1zZWFyY2gtZm9yd2FyZD8KICAgICAgICAgIChyeCAoZXZh bCBudGNtZC12YXItcmVmLSUtcngpKSkKICAgIChjb25kCiAgICAgKChzYXZlLW1hdGNoLWRh dGEKICAgICAgICAod2hlbgogICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAg ICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgOzsg VGhlIGJlbG93IHdvdWxkIGJlIGEgaGlnaGx5IGltcHJvYmFibGUgdmFyaWFibGUgbmFtZQog ICAgICAgICAgICAgIChsb29raW5nLWF0IChyeCAiJSIgKGluICJhLXpBLVoiKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKyAoaW4gIiBcdCIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiaW4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIChp biAiIFx0IikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoIikpKQogICAgICAg ICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKSkpKQogICAgIAogICAgICgoZXFsIChjaGFy LWJlZm9yZSAobWF0Y2gtYmVnaW5uaW5nIDApKSA/JSkKICAgICAgKGdvdG8tY2hhciAobWF0 Y2gtYmVnaW5uaW5nIDYpKSkgOyBiYWNrdHJhY2sKICAgICAKICAgICAodAogICAgICAobnRj bWQtYXBwbHktcGxhY2Vob2xkZXIKICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMCkKICAgICAg IChtYXRjaC1lbmQgMCkKICAgICAgICcoMCAnbnRjbWQtaW1tZWRpYXRlLXZhci1yZWYtZmFj ZSBhcHBlbmQpKSkpKQoKICA7OyBQYXNzIDI6IHJlcGxhY2UgbG9vcCB2YXJpYWJsZXMKICAo Z290by1jaGFyIChwb2ludC1taW4pKQogICh3aGlsZSAobnRjbWQtcmUtc2VhcmNoLWZvcndh cmQ/CiAgICAgICAgICAocnggKGV2YWwgbnRjbWQtbG9vcC12YXItcmVmLXJ4KSkpCiAgICAo bnRjbWQtYXBwbHktcGxhY2Vob2xkZXIKICAgICAobWF0Y2gtYmVnaW5uaW5nIDApCiAgICAg KG1hdGNoLWVuZCAwKQogICAgICcoMCAnbnRjbWQtbG9vcC12YXItcmVmLWZhY2UgYXBwZW5k KSkpCgogIDs7IFBhc3MgMzogcmVwbGFjZSBkZWxheS1leHBhbnNpb24gdmFyaWFibGVzCiAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAod2hpbGUgKG50Y21kLXJlLXNlYXJjaC1mb3J3 YXJkPwogICAgICAgICAgKHJ4IChldmFsIG50Y21kLXZhci1yZWYtIS1yeCkpKQogICAgKHVu bGVzcwogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgKGdvdG8tY2hhciAobWF0 Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgKGxvb2tpbmctYmFjayAiXl4iKSkKICAgICAg CiAgICAgIChudGNtZC1hcHBseS1wbGFjZWhvbGRlcgogICAgICAgKG1hdGNoLWJlZ2lubmlu ZyAwKQogICAgICAgKG1hdGNoLWVuZCAwKQogICAgICAgJygwICdudGNtZC1kZWxheWVkLXZh ci1yZWYtZmFjZSBhcHBlbmQpKSkpKQoKKGRlZnVuIG50Y21kLXVuYXBwbHktcGxhY2Vob2xk ZXItYXQtcG9pbnQgKCZvcHRpb25hbCBza2lwLWhpZ2hsaWdodHMpCiAgIklmIHRoZXJlIGlz IGEgcGxhY2Vob2xkZXIgYXQgcG9pbnQsIHVuZG8gaXQuIE90aGVyd2lzZSwKZG8gbm90aGlu Zy4gTGVhdmVzIHBvaW50IHVuY2hhbmdlZC4gSWYgU0tJUC1ISUdITElHSFRTIGlzCm5vbi1u aWwsIGRvbid0IGFwcGx5IHN0b3JlZCBoaWdobGlnaHRzLiIKICAobG9vcCBmb3IgKG9yaWct c3RyaW5nCiAgICAgICAgICAgICBvcmlnLW1hdGNoLWRhdGEKICAgICAgICAgICAgIC4gaGln aGxpZ2h0cykgPSAoZ2V0LXRleHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvaW50KSAnbnRjbWQtcmVzdG9yZS1pbmZvKQogICAgICAgIHdoaWxlIG9yaWct c3RyaW5nCiAgICAgICAgZG8gKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAobnRjbWQt aW5wbGFjZS1yZXBsYWNlIG9yaWctc3RyaW5nKQogICAgICAgICAgICAgKHVubGVzcyBza2lw LWhpZ2hsaWdodHMKICAgICAgICAgICAgICAgKHNldC1tYXRjaC1kYXRhIG9yaWctbWF0Y2gt ZGF0YSkKICAgICAgICAgICAgICAgKG1hcGMgIydudGNtZC1hcHBseS1oaWdobGlnaHQgaGln aGxpZ2h0cykpKSkpCgooZGVmdW4gbnRjbWQtdW5hcHBseS1wbGFjZWhvbGRlcnMgKCkKICAi VW5kbyB0aGUgY2hhbmdlcyBkb25lIGJ5IGBudGNtZC1yZXBsYWNlLXZhci1yZWZzLWluLXJl Z2lvbicKYmV0d2VlbiBwb2ludCBhbmQgcG9pbnQtbWF4LiIKCiAgKGxvb3AKICAgdW50aWwg KGVvYnApCiAgIGRvIChudGNtZC11bmFwcGx5LXBsYWNlaG9sZGVyLWF0LXBvaW50KQogICBh bmQgZG8gKGdvdG8tY2hhciAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlCiAgICAgICAg ICAgICAgICAgICAgICAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAnbnRjbWQtcmVz dG9yZS1pbmZvCiAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAg ICAgIChwb2ludC1tYXgpKSkpKQoKKGRlZnVuIG50Y21kLWZvbnQtbG9jay1tYXRjaGVyIChs aW0pCiAgIm50Y21kIGZvbnQtbG9jayBtYXRjaGVyIHRoYXQgYWN0dWFsbHkgZG9lcyBtb3N0 IG9mIHRoZSBmb250aWZpY2F0aW9uIHdvcmsuIgogIAogIChzYXZlLWV4Y3Vyc2lvbgogICAg KHNhdmUtcmVzdHJpY3Rpb24KICAgICAgKG5hcnJvdy10by1yZWdpb24gKHBvaW50KSBsaW0p CiAgICAgICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCiAgICAgICAgKG50Y21kLXJlcGxh Y2UtdmFyLXJlZnMpKSkpCgogICh1bndpbmQtcHJvdGVjdAogICAgICAoc2F2ZS1leGN1cnNp b24KICAgICAgICAobG9vcCB3aXRoIHBvcwogICAgICAgICAgICAgIHdoaWxlICg8IChwb2lu dCkgbGltKQogICAgICAgICAgICAgIGRvIChwcm9nbgogICAgICAgICAgICAgICAgICAgKHNl dGYgcG9zIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAoY29uZGl0aW9uLWNhc2UgZXJy CiAgICAgICAgICAgICAgICAgICAgICAgKG50Y21kLWZvcndhcmQtY21kKQogICAgICAgICAg ICAgICAgICAgICAoKGVuZC1vZi1idWZmZXIgbnRjbWQtc3ludGF4LWVycm9yKQogICAgICAg ICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lIDEpKSkpKSkKCiAgICAoc2F2ZS1yZXN0cmlj dGlvbgogICAgICAobmFycm93LXRvLXJlZ2lvbiAocG9pbnQpIGxpbSkKICAgICAgKHdpdGgt c2lsZW50LW1vZGlmaWNhdGlvbnMKICAgICAgICAobnRjbWQtdW5hcHBseS1wbGFjZWhvbGRl cnMpKSkpCgogIDs7IEFsd2F5cyB0ZWxsIGZvbnQtbG9jayB3ZSd2ZSBmYWlsZWQgaW4gb3Jk ZXIgdG8gYXZvaWQgY29uZnVzaW9uLgogIG5pbCkKCihldmFsLXdoZW4tY29tcGlsZQogIChk ZWZ2YXIgZm9udC1sb2NrLWJlZykKICAoZGVmdmFyIGZvbnQtbG9jay1lbmQpKQoKKGRlZnVu IG50Y21kLWV4dGVuZC1mb250LWxvY2stcmVnaW9uICgpCiAgKGxldCAoKG9sZC1iZWcgZm9u dC1sb2NrLWJlZykKICAgICAgICAob2xkLWVuZCBmb250LWxvY2stZW5kKSkKCiAgICA7OyBF eHRlbmQgZm9udGlmaWNhdGlvbiByZWdpb24gdG8gY292ZXIgYWxsIHRoZSBsaW5lcyB0aGUg Y3VycmVudAogICAgOzsgY29tbWFuZCBzcGFjZS4gQ29tbWFuZHMgY2FuIHNwYW4gbW9yZSB0 aGFuIG9uZSBsaW5lIHdoZW4KICAgIDs7IHRoZXkncmUgY29udGludWVkOyB3ZSBkb24ndCBs b29rIGF0IGNvbXBvdW5kIGNvbW1hbmRzIGhlcmUgYW5kCiAgICA7OyBkb24ndCBuZWVkIHRv LgogICAgOzsKICAgIDs7IE1ha2Ugc3VyZSB3ZSBhbHdheXMgc25hcCBiZWdpbm5pbmcgYW5k IGVuZCB0byB0aGUgYmVnaW5uaW5nIG9mCiAgICA7OyBsaW5lcyB0byBhdm9pZCBmaWdodGlu ZyB3aXRoIG90aGVyIGZvbnQtbG9jayByZWdpb24tZXh0ZW5kaW5nCiAgICA7OyBmdW5jdGlv bnMuCiAgICA7OwogICAgOzsgTm90ZTogd2UncmUgY29uc2VydmF0aXZlIGhlcmUuIFNvbWUg b2YgdGhlc2UgXiBjaGFyYWN0ZXJzIG1pZ2h0CiAgICA7OyBub3QgcmVwcmVzZW50IHJlYWwg Y29udGludWF0aW9ucyAoZGVwZW5kaW5nIG9uIHVuY2xvc2VkIHN0cmluZwogICAgOzsgc3Rh dGUgYW5kIHN1Y2gpIGJ1dCBsZXQncyBub3QgcmVseSBvbiBzeW50YWN0aWMgZm9udGlmaWNh dGlvbgogICAgOzsgaGF2aW5nIGJlZW4gZG9uZSBoZXJlLgoKICAgIChzYXZlLWV4Y3Vyc2lv bgogICAgICAoZ290by1jaGFyIGZvbnQtbG9jay1iZWcpCiAgICAgICh3aGlsZSAoYW5kIChu b3QgKGJvYnApKQogICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAg ICAgICAgICAgICAoZW5kLW9mLWxpbmUgMCkKICAgICAgICAgICAgICAgICAgICAoZXFsIChj aGFyLWJlZm9yZSkgP14pKSkKICAgICAgICAoZm9yd2FyZC1saW5lIC0xKSkKICAgICAgKHNl dGYgZm9udC1sb2NrLWJlZyAocG9pbnQpKQoKICAgICAgKGdvdG8tY2hhciBmb250LWxvY2st ZW5kKQogICAgICAod2hpbGUgKGFuZCAobm90IChlb2JwKSkKICAgICAgICAgICAgICAgICAg KGVxbCAoY2hhci1iZWZvcmUgKHBvaW50LWF0LWVvbCkpCiAgICAgICAgICAgICAgICAgICAg ICA/XikpCiAgICAgICAgKGZvcndhcmQtbGluZSAxKSkKICAgICAgKHNldGYgZm9udC1sb2Nr LWVuZCAocG9pbnQpKSkKCiAgICAob3IgKC89IG9sZC1iZWcgZm9udC1sb2NrLWJlZykKICAg ICAgICAoLz0gb2xkLWVuZCBmb250LWxvY2stZW5kKSkpKQoKKGRlZmNvbnN0IG50Y21kLWNv bW1hbmQtcGFyc2VycyBuaWwpCgooZGVmdW4gbnRjbWQtcmVnaXN0ZXItY21kLXBhcnNlciAo cmVnZXggZnVuY3Rpb24pCiAgKGFkZC10by1saXN0ICdudGNtZC1jb21tYW5kLXBhcnNlcnMK ICAgICAgICAgICAgICAgKGNvbnMgKGNvbmNhdCAocnggcG9pbnQpIHJlZ2V4KSBmdW5jdGlv bikKICAgICAgICAgICAgICAgdCkpCgooZGVmY29uc3QgbnRjbWQtYmFyZXdvcmQtcngKICAo cnggKCsgKHwgKHN5bnRheCB3b3JkKQogICAgICAgICAgICAoc3ludGF4IHN5bWJvbCkKICAg ICAgICAgICAgKDogIl4iIG5vbmwpCiAgICAgICAgICAgICg6ICJeIiAiXG4iIGFueXRoaW5n KSkpKSkKCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50Y21kLWJhcmV3b3JkLXBh cnQtcngKICAgIGAoKyAofCAoc3ludGF4IHdvcmQpCiAgICAgICAgICAgKHN5bnRheCBzeW1i b2wpCiAgICAgICAgICAgKDogIl4iIG5vbmwpCiAgICAgICAgICAgKDogIl4iICJcbiIgYW55 dGhpbmcpKSkKICAgICJNYXRjaGVzIHBhcnQgb2YgYSBiYXJld29yZC4iKSkKCihldmFsLWFu ZC1jb21waWxlCiAgKGRlZmNvbnN0IG50Y21kLWJhcmV3b3JkLW5vc3BhY2UtcGFydC1yeAog ICAgYCg6ICgrICh8IChzeW50YXggd29yZCkKICAgICAgICAgICAgICAoc3ludGF4IHN5bWJv bCkKICAgICAgICAgICAgICAoOiAiXiIgKG5vdCAoaW4gIiw7PSBcdFxuIikpKQogICAgICAg ICAgICAgICg6ICJeIiAiXG4iIChub3QgKGluICIsOz0gXHRcbiIpKSkpKQogICAgICAgICg/ ICJeXG4iKSkKICAgICJNYXRjaGVzIHBhcnQgb2YgYSBiYXJld29yZCBpbiB0aGUgc3BhY2Vs ZXNzIHZhcmlhdGlvbi4iKSkKCihkZWZ1biBudGNtZC1mb3J3YXJkLXF1b3RlZC1zdHJpbmcg KCkKICAodW5sZXNzIChudGNtZC1yZS1zZWFyY2gtZm9yd2FyZD8KICAgICAgICAgICAocngg cG9pbnQgKGV2YWwgbnRjbWQtcXVvdGVkLXN0cmluZy1yeCkpKQogICAgKHNpZ25hbCAnbnRj bWQtc3ludGF4LWVycm9yICcoImV4cGVjdGVkIHF1b3RlZCBzdHJpbmciKSkpCiAgKG50Y21k LWFwcGx5LXN5bnRhY3RpYy1oaWdobGlnaHQKICAgYCgxICJ8IikpCiAgKG50Y21kLWFwcGx5 LXN5bnRhY3RpYy1oaWdobGlnaHQKICAgYCgyICxudGNtZC1zdHJpbmctc3ludGF4LXRhYmxl KSkKICAobnRjbWQtYXBwbHktc3ludGFjdGljLWhpZ2hsaWdodAogICBgKDMgInwiKSkKICAo d2hlbiAoZXFsIChjaGFyLWJlZm9yZSkgP1xuKQogICAgKGJhY2t3YXJkLWNoYXIpKSkKCihk ZWZ1biBudGNtZC1mb3J3YXJkLWJhcmV3b3JkLXBhcnQgKCkKICAiTW92ZSBmb3J3YXJkIG92 ZXIgcGFydCBvZiBhIHF1b3RlZCBzdHJpbmcgb3IgYSBiYXJld29yZCBhbmQKcmV0dXJuIHQs IG9yIHJldHVybiBuaWwgaWYgdGhlcmUncyBubyBiYXJld29yZCBhdCBwb2ludC4iCgogIChj b25kICgoZXFsIChjaGFyLWFmdGVyKSA/XCIpCiAgICAgICAgIChudGNtZC1mb3J3YXJkLXF1 b3RlZC1zdHJpbmcpCiAgICAgICAgIHQpCgogICAgICAgICgobnRjbWQtcmUtc2VhcmNoLWZv cndhcmQ/CiAgICAgICAgICAoaWYgKm50Y21kLWJhcmV3b3JkLWFsbG93LXNwYWNlKgogICAg ICAgICAgICAgIChyeCBwb2ludCAoZXZhbCBudGNtZC1iYXJld29yZC1wYXJ0LXJ4KSkKICAg ICAgICAgICAgKHJ4IHBvaW50IChldmFsIG50Y21kLWJhcmV3b3JkLW5vc3BhY2UtcGFydC1y eCkpKSkKCiAgICAgICAgICh3aGVuICpudGNtZC1iYXJld29yZC1mYWNlKgogICAgICAgICAg IChudGNtZC1hcHBseS1oaWdobGlnaHQKICAgICAgICAgICAgYCgwICwqbnRjbWQtYmFyZXdv cmQtZmFjZSopKSkKCiAgICAgICAgIHQpKSkKCihkZWZ1biBudGNtZC1mb3J3YXJkLWJhcmV3 b3JkICgpCiAgIk1vdmUgZm9yd2FyZCBvdmVyIGEgd29yZCBtYWRlIHVwIG9mIG9uZSBvciBt b3JlIGJhcmV3b3JkcyBhbmQKcXVvdGVkIHN0cmluZ3MuIgogICh1bmxlc3MgKG50Y21kLWZv cndhcmQtYmFyZXdvcmQtcGFydCkKICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1lcnJvciAn KCJleHBlY3RlZCBiYXJld29yZCBvciBzdHJpbmciKSkpCiAgKHdoaWxlIChudGNtZC1mb3J3 YXJkLWJhcmV3b3JkLXBhcnQpKSkKCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50 Y21kLWZkbWFuaXAtYmVnaW4tcngKICAgICcoOiAoPyAoaW4gIjAtOSIpKQogICAgICAgICh8 ICI+PiIKICAgICAgICAgICAoOiAoaW4gIjw+IikKICAgICAgICAgICAgICAoPyAiJiIgKGlu ICIwLTkiKSkpKSkpKQoKKGRlZnVuIG50Y21kLWZvcndhcmQtZmRtYW5pcCAoKQogICJNb3Zl IGZvcndhcmQgb3ZlciBhbiBJTyBtYW5pcHVsYXRpb24uIE11c3QgYmUgYXQgc29tZXRoaW5n CnRoYXQgbWF0Y2hlcyBudGNtZC1mZG1hbmlwLWJlZ2luLXJ4LiIKCiAgKHVubGVzcyAobnRj bWQtcmUtc2VhcmNoLWZvcndhcmQ/CiAgICAgICAgICAgKHJ4IHBvaW50IChldmFsIG50Y21k LWZkbWFuaXAtYmVnaW4tcngpKSkKICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1lcnJvciAn KCJleHBlY3RlZCBGRCBtYW5pcHVsYXRpb24iKSkpCgogIChudGNtZC1hcHBseS1oaWdobGln aHQKICAgJygwIGZvbnQtbG9jay1yZWZlcmVuY2UtZmFjZSkpCgogICh3aGVuIChtZW1xbCAo Y2hhci1iZWZvcmUpICcoPzwgPz4pKQogICAgKG50Y21kLWZvcndhcmQtc3ludGFjdGljLXdz IHQpCiAgICAobnRjbWQtZm9yd2FyZC1iYXJld29yZCkpKQoKOzsgbGFiZWxzCihudGNtZC1y ZWdpc3Rlci1jbWQtcGFyc2VyCiAocnggKGdyb3VwIGJvbCAiOiIpKQogIydudGNtZC1mb3J3 YXJkLWxhYmVsLWNtZCkKCihkZWZ1biBudGNtZC1mb3J3YXJkLWxhYmVsLWNtZCAoKQogIChs ZXQgKGNvbW1lbnQtbW9kZSkKICAgICh3aGVuIChlcWwgKGNoYXItYWZ0ZXIpID86KQogICAg ICAoc2V0cSBjb21tZW50LW1vZGUgdCkKICAgICAgKG50Y21kLWFwcGx5LXN5bnRhY3RpYy1o aWdobGlnaHQKICAgICAgICcoMCAiPCIpKSkKICAgIChiYWNrd2FyZC1jaGFyKQogICAgKGxv b3AgZG8gKHByb2duCiAgICAgICAgICAgICAgIChzZXQtbWF0Y2gtZGF0YSAobGlzdCAocG9p bnQpIChwb2ludC1hdC1lb2wpKSkKICAgICAgICAgICAgICAgKHVubGVzcyBjb21tZW50LW1v ZGUKICAgICAgICAgICAgICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAgICAgICAgICAg ICAgICAgICcoMCBmb250LWxvY2stcmVmZXJlbmNlLWZhY2UpKSkKICAgICAgICAgICAgICAg KGVuZC1vZi1saW5lIDEpKQogICAgICAgICAgd2hpbGUgKHdoZW4gKGVxbCAoY2hhci1iZWZv cmUpID9eKQogICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyKQogICAgICAgICAgICAg ICAgICB0KSkKCiAgICAod2hlbiBjb21tZW50LW1vZGUKICAgICAgKHNldC1tYXRjaC1kYXRh IChsaXN0IChwb2ludCkgKDErIChwb2ludCkpKSkKICAgICAgKG50Y21kLWFwcGx5LXN5bnRh Y3RpYy1oaWdobGlnaHQKICAgICAgICcoMCAiPiIpKSkpKQoKOzsgcmVtCgoobnRjbWQtcmVn aXN0ZXItY21kLXBhcnNlcgogKHJ4IChncm91cCAicmVtIikKICAgICBzeW1ib2wtZW5kKQog IydudGNtZC1mb3J3YXJkLXJlbS1jbWQpCgooZGVmdW4gbnRjbWQtZm9yd2FyZC1yZW0tY21k ICgpCiAgKG50Y21kLWFwcGx5LWhpZ2hsaWdodAogICAnKDEgZm9udC1sb2NrLWNvbW1lbnQt ZmFjZSkpCgogICh1bmxlc3MgKG1lbXFsIChjaGFyLWFmdGVyKSAnKG5pbCA/XG4pKQogICAg OzsgTWFyayB0aGUgd2hpdGVzcGFjZSBhZnRlciAicmVtIiBpbnN0ZWFkIG9mICJyZW0iIGl0 c2VsZiBzbwogICAgOzsgdGhhdCAicmVtIiByZXRhaW5zIHdvcmQgc3ludGF4IGFuZCBjYW4g YmUgZWRpdGVkIG5vcm1hbGx5LgogICAgKHNldC1tYXRjaC1kYXRhIChsaXN0IChwb2ludCkg KDErIChwb2ludCkpKSkKICAgIChudGNtZC1hcHBseS1zeW50YWN0aWMtaGlnaGxpZ2h0CiAg ICAgJygwICI8IikpCiAgICAoZm9yd2FyZC1jaGFyKQogICAgKHNraXAtY2hhcnMtZm9yd2Fy ZCAiXlxuIikKCiAgICA7OyBidWctZm9yLWJ1ZyBjb21wYXRpYmlsaXR5OiB3ZSBvbmx5IGZv bGxvdyBvbmUgbGluZQogICAgOzsgY29udGludWF0aW9uIHdoZW4gd2UncmUgaW4gY29tbWVu dC1wYXJzaW5nIG1vZGUuCiAgICAod2hlbiAoZXFsIChjaGFyLWJlZm9yZSkgP14pCiAgICAg IChmb3J3YXJkLWNoYXIpCiAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl5cbiIpKSkKCiAg KGFzc2VydCAobWVtcWwgKGNoYXItYWZ0ZXIpICcobmlsID9cbikpKQoKICAod2hlbiAoY2hh ci1hZnRlcikKICAgIDs7IENsb3NlIHRoZSBjb21tZW50IGlmIHdlJ3JlIG5vdCBhdCBFT0IK ICAgIChzZXQtbWF0Y2gtZGF0YSAobGlzdCAocG9pbnQpICgxKyAocG9pbnQpKSkpCiAgICAo bnRjbWQtYXBwbHktc3ludGFjdGljLWhpZ2hsaWdodAogICAgICcoMCAiPiIpKSkpCgo7OyBm b3IKCihudGNtZC1yZWdpc3Rlci1jbWQtcGFyc2VyCiAocnggKGdyb3VwICJmb3IiKQogICAg ICg/ICJeXG4iKQogICAgIChpbiAiIFx0LDs9IikpCiAgIydudGNtZC1mb3J3YXJkLWZvci1j bWQpCgooZGVmdW4gbnRjbWQtZm9yd2FyZC1mb3ItY21kICgpCiAgKGxldCAoYmFja3EtY2hh cnMpCgogICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAgICAnKDEgZm9udC1sb2NrLWtleXdv cmQtZmFjZSkpCgogICAobnRjbWQtZm9yd2FyZC1zeW50YWN0aWMtd3MpCgogICAod2hlbiAo ZXFsIChjaGFyLWFmdGVyKSA/LykKICAgICAoZm9yd2FyZC1jaGFyKQogICAgIChjYXNlICh1 cGNhc2UgKGNoYXItYWZ0ZXIpKQogICAgICAgKCg/RCA/TCkKICAgICAgICAoZm9yd2FyZC1j aGFyKQogICAgICAgIChudGNtZC1mb3J3YXJkLW1hbmRhdG9yeS1zeW50YWN0aWMtd3MpKQoK ICAgICAgICg/RgogICAgICAgIChmb3J3YXJkLWNoYXIpCiAgICAgICAgKG50Y21kLWZvcndh cmQtbWFuZGF0b3J5LXN5bnRhY3RpYy13cykKICAgICAgICAoc2V0cSBiYWNrcS1jaGFycyAn KD9cJykpCgogICAgICAgICh1bmxlc3MgKG9yIChlcWwgKGNoYXItYWZ0ZXIpID8lKQogICAg ICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICdudGNtZC1yZXN0 b3JlLWluZm8pKQogICAgICAgICAgKGxldCAoKG9yaWcgKHBvaW50KSkpCiAgICAgICAgICAg IChudGNtZC1mb3J3YXJkLWJhcmV3b3JkKQoKICAgICAgICAgICAgOzsgU2VlIHdoZXRoZXIg dGhlIHVzZXIgc3BlY2lmaWVkICJ1c2ViYWNrcSIKICAgICAgICAgICAgKHdoZW4gKHNhdmUt ZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KICAgICAg ICAgICAgICAgICAgICAgIChuYXJyb3ctdG8tcmVnaW9uIG9yaWcgKHBvaW50KSkKICAgICAg ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAgICAgICAg ICAgICAgICAobnRjbWQtcmUtc2VhcmNoLWZvcndhcmQ/CiAgICAgICAgICAgICAgICAgICAg ICAgKHJ4IHN5bWJvbC1zdGFydCAidXNlYmFja3EiIHN5bWJvbC1lbmQpKSkpCiAgICAgICAg ICAgICAgKHNldHEgYmFja3EtY2hhcnMgJyg/XCcgP1xgKSkpKQoKICAgICAgICAgIChudGNt ZC1mb3J3YXJkLW1hbmRhdG9yeS1zeW50YWN0aWMtd3MpKSkKCiAgICAgICAoP1IKICAgICAg ICAoZm9yd2FyZC1jaGFyKQogICAgICAgIChudGNtZC1mb3J3YXJkLW1hbmRhdG9yeS1zeW50 YWN0aWMtd3MpCiAgICAgICAgKHdoZW4gKGVxbCAoY2hhci1hZnRlcikgPyUpCiAgICAgICAg ICAoc2lnbmFsICdudGNtZC1zeW50YXgtZXJyb3IgJygiZXhwZWN0ZWQgL1IgYXJndW1lbnQi KSkpCiAgICAgICAgKG50Y21kLWZvcndhcmQtYmFyZXdvcmQpCiAgICAgICAgKG50Y21kLWZv cndhcmQtbWFuZGF0b3J5LXN5bnRhY3RpYy13cykpCgogICAgICAgKHQKICAgICAgICAoc2ln bmFsICdudGNtZC1zeW50YXgtZXJyb3IKICAgICAgICAgICAgICAgICcoImludmFsaWQgZm9y IHN3aXRjaCIpKSkpKQoKICAgOzsgV2UgbWlnaHQgaGF2ZSBhIHBsYWNlaG9sZGVyIGZyb20g YW4gZWFybGllciBmb250aWZpY2F0aW9uIHBhc3MKICAgOzsgLS0tIHVuZG8gaXQgc28gd2Ug Y2FuIGhpZ2hsaWdodCBpdCBkaWZmZXJlbnRseSBoZXJlLgogICAobnRjbWQtdW5hcHBseS1w bGFjZWhvbGRlci1hdC1wb2ludCB0KQoKICAgKHVubGVzcyAobnRjbWQtcmUtc2VhcmNoLWZv cndhcmQ/CiAgICAgICAgICAgIChyeCBwb2ludCAoZ3JvdXAgIiUiICg/ICIlIikpCiAgICAg ICAgICAgICAgICAoZ3JvdXAgKGluICJhLXoiKSkKICAgICAgICAgICAgICAgIHN5bWJvbC1l bmQpKQogICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1lcnJvcgogICAgICAgICAgICAgJygi ZXhwZWN0ZWQgbG9vcCB2YXJpYWJsZSIpKSkKICAgKG50Y21kLWFwcGx5LWhpZ2hsaWdodAog ICAgOzsgd2FybiBhYm91dCBmb3IgbG9vcHMgd2l0aCBhIHZhcmlhYmxlIHByZWZpeGVkIGJ5 IGEgc2luZ2xlICUKICAgIChpZiAoPSAxICgtIChtYXRjaC1lbmQgMSkgKG1hdGNoLWJlZ2lu bmluZyAxKSkpCiAgICAgICAgJygwIGZvbnQtbG9jay13YXJuaW5nLWZhY2UpCiAgICAgICco MiBmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKSkpCgogICAobnRjbWQtZm9yd2FyZC1t YW5kYXRvcnktc3ludGFjdGljLXdzKQoKICAgKHVubGVzcyAobnRjbWQtcmUtc2VhcmNoLWZv cndhcmQ/CiAgICAgICAgICAgIChyeCBwb2ludCAoZ3JvdXAgImluIikgc3ltYm9sLWVuZCkp CgogICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1lcnJvcgogICAgICAgICAgICAgJygiZXhw ZWN0ZWQgXCJpblwiIikpKQogICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAgICAnKDEgZm9u dC1sb2NrLWtleXdvcmQtZmFjZSkpCiAgIAogICAobnRjbWQtZm9yd2FyZC1tYW5kYXRvcnkt c3ludGFjdGljLXdzIHQpCgogICAodW5sZXNzIChlcWwgKGNoYXItYWZ0ZXIpID9cKCkKICAg ICAoc2lnbmFsICdudGNtZC1zeW50YXgtZXJyb3IgJygiZXhwZWN0ZWQgKCIpKSkKICAgKGZv cndhcmQtY2hhcikKCiAgIDs7IEhhaXJ5IC0tLSBmb3ItbG9vcCBwYXJzaW5nIGlzIHN0cmFu Z2VseSBpbXBsZW1lbnRlZC4gKEknZCBzYXkKICAgOzsgaXQncyBiYWRseSBzcGVjaWZpZWQs IGJ1dCBJIGRvbid0IHRoaW5rIGl0J3Mgc3BlY2lmaWVkIGF0IGFsbC4pCiAgIDs7CiAgIDs7 IFRoZSBpbnRlcmlvciBvZiBhIGZvci1sb29wIGlzbid0IGFueXRoaW5nIHNwZWNpYWwgZnJv bSB0aGUgcG9pbnQKICAgOzsgb2YgdmlldyBvZiB0aGUgY29tbWFuZCBfcmVhZGVyXy4gXiBh bmQgIiBoYXZlIHRoZWlyIHVzdWFsCiAgIDs7IGZ1bmN0aW9uIG9mIGVzY2FwaW5nIHNwZWNp YWwgY2hhcmFjdGVycy4KICAgOzsKICAgOzsgX0FmdGVyXyBhIGNvbW1hbmQgaXMgcmVhZCwg aG93ZXZlciwgJyBhbmQgYCBhcmUgaW50ZXJwcmV0ZWQgYnkKICAgOzsgdGhlIGZvci1sb29w IGNvbW1hbmQgc3BlY2lhbGx5IElGRiAidXNlYmFja3EiIHdhcyBnaXZlbiBpbiB0aGUKICAg Ozsgb3B0aW9ucyBhYm92ZS4gVGhlc2UgY2hhcmFjdGVycyBhcmUgb25seSBzcGVjaWFsIGlm IHRoZSBmaXJzdAogICA7OyBhbmQgb25seSAnYCcgb3IgJycnIGNvbWVzIGFmdGVyIHRoZSBv cGVuaW5nICcoJyBbb3B0aW9uYWxseQogICA7OyBwcmVjZWRlZCBieSBzeW50YWN0aWMgd2hp dGVzcGFjZV0gYW5kIHRoZSBzaW5nbGUgKHVuZXNjYXBlZCEpCiAgIDs7IGNsb3NpbmcgJ2An IG9yICcnJyBjb21lcyBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGNsb3NpbmcgJyknLgogICA7 OwogICA7OyBUaGVzZSBjaGFyYWN0ZXJzIGhhdmUgbm8gb3RoZXIgZWZmZWN0IG9uIHBhcnNp bmcgYW5kIGNhbiBiZQogICA7OyBlc2NhcGVkIG5vcm1hbGx5LgogICA7OwogICAobGV0IChi YWNrcS1zdGFydCBiYWNrcS1lbmQgYmFja3EtY2hhcikKICAgICAobnRjbWQtZm9yd2FyZC1z eW50YWN0aWMtd3MpCiAgICAgKHdoZW4gKG1lbXFsIChjaGFyLWFmdGVyKSBiYWNrcS1jaGFy cykKICAgICAgIChzZXRmIGJhY2txLXN0YXJ0IChwb2ludCkpCiAgICAgICAoc2V0ZiBiYWNr cS1jaGFyIChjaGFyLWFmdGVyKSkKICAgICAgIChmb3J3YXJkLWNoYXIpKQoKICAgICAod2hp bGUgKHByb2duCiAgICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXl4oKVwiJ2B8 Jjw+IikKICAgICAgICAgICAgICAoZWNhc2UgKGNoYXItYWZ0ZXIpCiAgICAgICAgICAgICAg ICAoP14KICAgICAgICAgICAgICAgICAobnRjbWQtaGFuZGxlLXBhcnNlLWVzY2FwZSkKICAg ICAgICAgICAgICAgICB0KQoKICAgICAgICAgICAgICAgICg/XCgKICAgICAgICAgICAgICAg IChudGNtZC1oYW5kbGUtcGFyc2Utb3Blbi1wYXJlbnRoZXNpcykKICAgICAgICAgICAgICAg IHQpCgogICAgICAgICAgICAgICAgKCg/JiA/fCA/PCA/PikKICAgICAgICAgICAgICAgICAo d2hlbiBiYWNrcS1zdGFydAogICAgICAgICAgICAgICAgICAgKHNldC1tYXRjaC1kYXRhIChs aXN0IChwb2ludCkgKDErIChwb2ludCkpKSkKICAgICAgICAgICAgICAgICAgIChudGNtZC1h cHBseS1oaWdobGlnaHQKICAgICAgICAgICAgICAgICAgICAnKDAgZm9udC1sb2NrLXdhcm5p bmctZmFjZSkpKQogICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIpCiAgICAgICAgICAg ICAgICAgdCkKCiAgICAgICAgICAgICAgICAoKG5pbCA/XCkpCiAgICAgICAgICAgICAgICAg bmlsKQoKICAgICAgICAgICAgICAgICg/XCIKICAgICAgICAgICAgICAgICAobnRjbWQtZm9y d2FyZC1xdW90ZWQtc3RyaW5nKQogICAgICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAg ICAgKCg/JyA/YCkKICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyKQogICAgICAgICAg ICAgICAgICh3aGVuIChhbmQgKGVxbCAoY2hhci1iZWZvcmUpIGJhY2txLWNoYXIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG50Y21kLWZvcndhcmQtc3ludGFjdGljLXdzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZXFsIChjaGFyLWFmdGVyKSA/XCkpKSkKICAgICAgICAg ICAgICAgICAgIChzZXRmIGJhY2txLWVuZCAocG9pbnQpKSkpKSkpCgogICAgICh3aGVuIChh bmQgYmFja3Etc3RhcnQgYmFja3EtZW5kKQogICAgICAgKHNldC1tYXRjaC1kYXRhIChsaXN0 IGJhY2txLXN0YXJ0IGJhY2txLWVuZCkpCiAgICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0 CiAgICAgICAgJygwICdudGNtZC1iYWNrcXVvdGUtZmFjZSkpKQoKICAgICAodW5sZXNzIChl b2JwKQogICAgICAgKGFzc2VydCAoZXFsIChjaGFyLWFmdGVyKSA/XCkpKQogICAgICAgKGZv cndhcmQtY2hhcikpCgogICAgIDs7IHN5bnRhY3RpYyB3cyBpcyBfb3B0aW9uYWxfIGFmdGVy IHRoZSBjbG9zaW5nICcpJyBpbiBhIGZvcgogICAgIChudGNtZC1mb3J3YXJkLXN5bnRhY3Rp Yy13cykKCiAgICAgKHVubGVzcyAobnRjbWQtcmUtc2VhcmNoLWZvcndhcmQ/IChyeCBwb2lu dCAiZG8iIHN5bWJvbC1lbmQpKQogICAgICAgKHNpZ25hbCAnbnRjbWQtc3ludGF4LWVycm9y ICcoImV4cGVjdGVkIFwiZG9cIiIpKSkKICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAg ICAgICcoMCBmb250LWxvY2sta2V5d29yZC1mYWNlKSkKICAgICAobnRjbWQtZm9yd2FyZC1t YW5kYXRvcnktc3ludGFjdGljLXdzKQoKICAgICA7OyBudGNtZC1jb250aW51ZS1mb3J3YXJk LWNtZCBpcyB0aGUgd3JvbmcgdGhpbmcgaGVyZQogICAgIChudGNtZC1mb3J3YXJkLWNtZCkp KSkKCjs7IGlmCgoobnRjbWQtcmVnaXN0ZXItY21kLXBhcnNlcgogKHJ4IChncm91cCAiaWYi KQogICAgICg/ICJeXG4iKQogICAgIChpbiAiIFx0LDs9IikpCiAjJ250Y21kLWZvcndhcmQt aWYtY21kKQoKKGRlZnVuIG50Y21kLWZvcndhcmQtaWYtY21kICgpCiAgKG50Y21kLWFwcGx5 LWhpZ2hsaWdodAogICAnKDEgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpCgogIChiYWNrd2Fy ZC1jaGFyKQoKICAod2hlbiAobnRjbWQtcmUtc2VhcmNoLWZvcndhcmQ/CiAgICAgICAgIChy eCBwb2ludAogICAgICAgICAgICAgKCsgKGluICIgXHQsOz0iKSkKICAgICAgICAgICAgICJu b3QiKSkKICAgIChudGNtZC1hcHBseS1oaWdobGlnaHQKICAgICAnKDAgZm9udC1sb2NrLWtl eXdvcmQtZmFjZSkpKQoKICAoY29uZCAoIDs7IGVycm9ybGV2ZWwvZXhpc3QvY21kZXh0dmVy c2lvbi9kZWZpbmVkCiAgICAgICAgIChudGNtZC1yZS1zZWFyY2gtZm9yd2FyZD8KICAgICAg ICAgIChyeCBwb2ludAogICAgICAgICAgICAgICgrIChpbiAiIFx0LDsiKSkKICAgICAgICAg ICAgICAoZ3JvdXAgKHwgImVycm9ybGV2ZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICJl eGlzdCIKICAgICAgICAgICAgICAgICAgICAgICAgImNtZGV4dHZlcnNpb24iCiAgICAgICAg ICAgICAgICAgICAgICAgICJkZWZpbmVkIikpCiAgICAgICAgICAgICAgKCsgKGluICIgXHQs OyIpKSkpCgogICAgICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAgICAgICAgICAnKDEg Zm9udC1sb2NrLWtleXdvcmQtZmFjZSkpCiAgICAgICAgIChsZXQgKCgqbnRjbWQtYmFyZXdv cmQtZmFjZSoKICAgICAgICAgICAgICAgIChpZiAoZXF1YWwgKGRvd25jYXNlIChtYXRjaC1z dHJpbmcgMSkpICJkZWZpbmVkIikKICAgICAgICAgICAgICAgICAgICBmb250LWxvY2stdmFy aWFibGUtbmFtZS1mYWNlKSkpCiAgICAgICAgICAgKG50Y21kLWZvcndhcmQtYmFyZXdvcmQp KSkKCiAgICAgICAgOzsgdGhlIHdlaXJkIHN5bnRheAogICAgICAgIDs7IG5vdGU6IHdlIGRv bid0IG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbAogICAgICAgIDs7IGZvciAvaQogICAg ICAgICgobGV0IChzYXctb3ApCiAgICAgICAgICAgKHdoaWxlIChwcm9nbgogICAgICAgICAg ICAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl5eXCIpXG4gXHQ7LD0iKQogICAgICAg ICAgICAgICAgICAgIChlY2FzZSAoY2hhci1hZnRlcikKICAgICAgICAgICAgICAgICAgICAg ICg/XgogICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIpCiAgICAgICAgICAg ICAgICAgICAgICAgKHVubGVzcyAoZW9scCkKICAgICAgICAgICAgICAgICAgICAgICAgIChm b3J3YXJkLWNoYXIpKQogICAgICAgICAgICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAg ICAgICAgICAgKD9cKAogICAgICAgICAgICAgICAgICAgICAgIChudGNtZC1oYW5kbGUtcGFy c2Utb3Blbi1wYXJlbnRoZXNpcykKICAgICAgICAgICAgICAgICAgICAgICB0KQogICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAoP1wiCiAgICAgICAgICAg ICAgICAgICAgICAgKG50Y21kLWZvcndhcmQtcXVvdGVkLXN0cmluZykKICAgICAgICAgICAg ICAgICAgICAgICB0KQoKICAgICAgICAgICAgICAgICAgICAgICgobmlsID9cbiA/XCkpCiAg ICAgICAgICAgICAgICAgICAgICAgKHNpZ25hbCAnbnRjbWQtc3ludGF4LWVycm9yCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJpZiBjb25kaXRpb24gZW5kZWQgZWFybHki KSkpCgogICAgICAgICAgICAgICAgICAgICAgKCg/XCA/XHQgPzogPywgPz0pCiAgICAgICAg ICAgICAgICAgICAgICAgKGNvbmQgKChhbmQgKG5vdCBzYXctb3ApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG50Y21kLXJlLXNlYXJjaC1mb3J3YXJkPwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnggcG9pbnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChncm91cCAofCAoOiAoKiAoaW4gIjssIFx0Iikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHwgIj09IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKiAoaW4gIjssIFx0IikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICg6ICgrIChpbiAiOywgXHQiKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAofCAiZXF1IiAibmVx IiAibHNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJsZXEiICJndHIiICJnZXEiKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgrIChpbiAiOywgXHQiKSkpKSkpKSkKCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGNtZC1hcHBseS1oaWdobGlnaHQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoMSBmb250LWxvY2sta2V5d29yZC1mYWNl IG5pbCB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldGYgc2F3LW9wIHQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgoYW5kIHNhdy1vcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtZW1xbCAoY2hhci1hZnRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJyg/XCggPz0gP1wsID9cOyA/XCA/XHQpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmlsKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoOm90 aGVyd2lzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkpKSkpCiAgICAgICAgICAgc2F3LW9w KSkKCiAgICAgICAgKHQKICAgICAgICAgKHNpZ25hbCAnbnRjbWQtc3ludGF4LWVycm9yCiAg ICAgICAgICAgICAgICAgJygiaW52YWxpZCBpZiIpKSkpCgogIChudGNtZC1mb3J3YXJkLXN5 bnRhY3RpYy13cykKICAobnRjbWQtZm9yd2FyZC1jbWQpKQoKOzsgZW1wdHkgY29tbWFuZAoo bnRjbWQtcmVnaXN0ZXItY21kLXBhcnNlcgogKHJ4ICJcbiIpCiAjJ250Y21kLWZvcndhcmQt ZW1wdHktY21kKQoKKGRlZnVuIG50Y21kLWZvcndhcmQtZW1wdHktY21kICgpCiAgbmlsKQoK OzsgZ2VuZXJpYyBjb21tYW5kCihudGNtZC1yZWdpc3Rlci1jbWQtcGFyc2VyCiAocnggKHwg d29yZC1ib3VuZGFyeSBub3Qtd29yZC1ib3VuZGFyeSkpIDsgYWx3YXlzIG1hdGNoZXMKICMn bnRjbWQtZm9yd2FyZC1nZW5lcmljLWNtZCkKCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNv bnN0IG50Y21kLXNwZWN1bGF0aXZlLWNvbW1hbmQtbmFtZS1yeAogICAgYCgrICh8IChzeW50 YXggd29yZCkKICAgICAgICAgICAoc3ludGF4IHN5bWJvbCkKICAgICAgICAgICAoOiAiXiIg bm9ubCkKICAgICAgICAgICAsbnRjbWQtcXVvdGVkLXN0cmluZy1yeCkpCiAgICAiTWF0Y2hl cyBhIGNvbW1hbmQgbmFtZSwgYXQgbGVhc3QgdXAgdG8gYSBsaW5lIGNvbnRpbnVhdGlvbi4i KSkKCihldmFsLWFuZC1jb21waWxlCiAgKGRlZmNvbnN0IG50Y21kLW5ldmVyLWNvbW1hbmRz CiAgICAnKCAiZm9yIiAiaWYiICJlbHNlIikKICAgICJUaGVzZSBjb21tYW5kcyBzaG91bGQg bmV2ZXIgYXBwZWFyIGFzIHJlZ3VsYXIgY29tbWFuZHMuIikpCgooZXZhbC1hbmQtY29tcGls ZQogIChkZWZjb25zdCBudGNtZC1zaGVsbC1idWlsdGlucwogICAgJygiYnJlYWsiCiAgICAg ICJjZCIKICAgICAgImNoZGlyIgogICAgICAiY2xzIgogICAgICAiY29sb3IiCiAgICAgICJj b3B5IgogICAgICAiZGF0ZSIKICAgICAgImRlbCIKICAgICAgImRpciIKICAgICAgImRpciIK ICAgICAgImVjaG8iCiAgICAgICJlbmRsb2NhbCIKICAgICAgImVyYXNlIgogICAgICAiZXhp dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgImZvciIgOyBo YW5kbGVkIHNwZWNpYWxseQogICAgICAiZnR5cGUiCiAgICAgICJnb3RvIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyAiaWYiIGhhbmRsZWQgc3BlY2lhbGx5 CiAgICAgICJtZCIKICAgICAgIm1rZGlyIgogICAgICAibW92ZSIKICAgICAgInBhdGgiCiAg ICAgICJwYXVzZSIKICAgICAgInBvcGQiCiAgICAgICJwcm9tcHQiCiAgICAgICJwdXNoZCIK ICAgICAgInJkIgogICAgICAicmVtIgogICAgICAicmVtIgogICAgICAicmVuIgogICAgICAi cmVuYW1lIgogICAgICAicm1kaXIiCiAgICAgICJzZXQiCiAgICAgICJzZXRsb2NhbCIKICAg ICAgInNoaWZ0IgogICAgICAic3RhcnQiCiAgICAgICJ0aW1lIgogICAgICAidGl0bGUiCiAg ICAgICJ0eXBlIgogICAgICAidmVyIgogICAgICAidmVyaWZ5IgogICAgICAidm9sIikKICAg ICJMaXN0IG9mIGNvbW1hbmRzIGJ1aWx0IGludG8gdGhlIHNoZWxsLiBUaGV5IGhhdmUgc2xp Z2h0bHkKZGlmZmVyZW50IHBhcnNpbmcgcnVsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0uIFNv bWUgaGF2ZSBkZWRpY2F0ZWQKY29tbWFuZCBoYW5kbGVycy4iKSkKCihkZWZ1biBudGNtZC1m b3J3YXJkLXNldC1jb21tYW5kLWJvZHkgKCkKICAiUGFyc2UgYSBET1Mgc2V0IGNvbW1hbmQu IgogIChza2lwLWNoYXJzLWZvcndhcmQgIiAiKQoKICA7OyBSZWFkIGEgdmFyaWFibGUgbmFt ZSAtLS0gYnV0IG9ubHkgaWYgd2UgaGF2ZSBhbiAnPScgc29tZXdoZXJlLgoKICAobGV0ICgo c3RhcnQgKHBvaW50KSkgdmFyLW5hbWUtcmVnaW9ucykKCiAgICAod2hpbGUgKHByb2duCiAg ICAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJeKCk9Jnw8Pl5cIlxuIikKICAgICAg ICAgICAgIChlY2FzZSAoY2hhci1hZnRlcikKICAgICAgICAgICAgICAgOzsgVGhlIHVzdWFs IGJpemFycmUgZXNjYXBlIGxvZ2ljCiAgICAgICAgICAgICAgICg/XgogICAgICAgICAgICAg ICAgKG50Y21kLWhhbmRsZS1wYXJzZS1lc2NhcGUpCiAgICAgICAgICAgICAgICB0KQoKICAg ICAgICAgICAgICAgKD9cKAogICAgICAgICAgICAgICAgKG50Y21kLWhhbmRsZS1wYXJzZS1v cGVuLXBhcmVudGhlc2lzKQogICAgICAgICAgICAgICAgdCkKCiAgICAgICAgICAgICAgICg/ XCkKICAgICAgICAgICAgICAgIDs7IFdlIGNhbid0IHRlbGwgd2hldGhlciB0aGlzIHBhcmVu IG1pZ2h0IGJlIGNsb3NpbmcgYQogICAgICAgICAgICAgICAgOzsgY29tcG91bmQgY29tbWFu ZCAtLS0gaWYgaXQgaXMsIHdlIHNob3VsZCBjbG9zZSB0aGUKICAgICAgICAgICAgICAgIDs7 IGNvbW1hbmQuIElmIGl0IGlzIG5vdCwgdGhlIHBhcmVudGhlc2lzIGlzIGp1c3QKICAgICAg ICAgICAgICAgIDs7IGFub3RoZXIgY2hhcmFjdGVyLgoKICAgICAgICAgICAgICAgIDs7IEl0 IHNlZW1zIGxlYXN0IGJhZCB0byBhbHdheXMgYXNzdW1lIHRoZSBmb3JtZXIKICAgICAgICAg ICAgICAgIDs7IGNhc2UuCiAgICAgICAgICAgICAgICBuaWwpCgoKICAgICAgICAgICAgICAg KD9cIgogICAgICAgICAgICAgICAgKG50Y21kLWZvcndhcmQtcXVvdGVkLXN0cmluZykKICAg ICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAgICA7OyBUaGUgY2hhcmFjdGVyIHdlJ3Jl IGxvb2tpbmcgZm9yCiAgICAgICAgICAgICAgICg/PQogICAgICAgICAgICAgICAgKGlmIChs b29raW5nLWF0IChyeCAiPSIgKD8gKGluICIwLTkiKSkgKGluICI8PiIpKSkKICAgICAgICAg ICAgICAgICAgICA7OyBJZiB0aGlzID0gd2lsbCBiZSBwYXJ0IG9mIGFuIElPIHJlZGlyZWN0 aW9uLAogICAgICAgICAgICAgICAgICAgIDs7IHNraXAgaXQuCiAgICAgICAgICAgICAgICAg ICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1jaGFyKQogICAgICAg ICAgICAgICAgICAgICAgdCkKCiAgICAgICAgICAgICAgICAgIDs7IE90aGVyd2lzZSwgd2Un cmUgZG9uZS4KICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3Qgc3RhcnQgKHBvaW50KSkg dmFyLW5hbWUtcmVnaW9ucykKICAgICAgICAgICAgICAgICAgbmlsKSkKCiAgICAgICAgICAg ICAgIDs7IFJlZGlyZWN0aW9ucyB0aGF0IGNhbiBhcHBlYXIgaW4gdGhlIG1pZGRsZSghKSBv ZiBhCiAgICAgICAgICAgICAgIDs7IHZhcmlhYmxlIG5hbWUsIGJ1dCB0aGF0IGFyZW4ndCBw YXJ0IG9mIGl0LgogICAgICAgICAgICAgICAoKD88ID8+KQogICAgICAgICAgICAgICAgKHdo ZW4gKG50Y21kLXJlLXNlYXJjaC1iYWNrd2FyZD8KICAgICAgICAgICAgICAgICAgICAgICAo cnggKGluICIgXHQsOz0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoPyAoaW4gIjAt OSIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludCkpCiAgICAgICAgICAgICAg ICAgIChmb3J3YXJkLWNoYXIpKQoKICAgICAgICAgICAgICAgIChwdXNoIChsaXN0IHN0YXJ0 IChwb2ludCkpIHZhci1uYW1lLXJlZ2lvbnMpCiAgICAgICAgICAgICAgICAobnRjbWQtZm9y d2FyZC1mZG1hbmlwKQogICAgICAgICAgICAgICAgKHNldGYgc3RhcnQgKHBvaW50KSkKICAg ICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAgICAoKG5pbCA/JiA/fCA/XG4pCiAgICAg ICAgICAgICAgICBuaWwpKSkpCgogICAgKHdoZW4gKGVxbCAoY2hhci1hZnRlcikgPz0pCiAg ICAgIDs7IEhpZ2hsaWdodCB0aGUgcmVnaW9ucyB3ZSBqdXN0IHJlYWQgdGhhdCBtYWtlIHVw IHRoZSB2YXJpYWJsZQogICAgICA7OyBuYW1lLgogICAgICAoZG9saXN0IChyZWdpb24gdmFy LW5hbWUtcmVnaW9ucykKICAgICAgICAoc2V0LW1hdGNoLWRhdGEgcmVnaW9uKQogICAgICAg IChmb250LWxvY2stYXBwbHktaGlnaGxpZ2h0ICcoMCBmb250LWxvY2stdmFyaWFibGUtbmFt ZS1mYWNlKSkpCgogICAgICA7OyBBbmQgbW92ZSBvbiB0byB0aGUgdmFsdWUKICAgICAgKHdo aWxlIChwcm9nbgogICAgICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXigpJnw8Pl5c IlxuIikKICAgICAgICAgICAgIChlY2FzZSAoY2hhci1hZnRlcikKCiAgICAgICAgICAgICAg ICg/XCgKICAgICAgICAgICAgICAgIChudGNtZC1oYW5kbGUtcGFyc2Utb3Blbi1wYXJlbnRo ZXNpcykKICAgICAgICAgICAgICAgIHQpCgogICAgICAgICAgICAgICAoP1wpCiAgICAgICAg ICAgICAgICA7OyBXZSBjYW4ndCB0ZWxsIHdoZXRoZXIgdGhpcyBwYXJlbiBtaWdodCBiZSBj bG9zaW5nIGEKICAgICAgICAgICAgICAgIDs7IGNvbXBvdW5kIGNvbW1hbmQgLS0tIGlmIGl0 IGlzLCB3ZSBzaG91bGQgY2xvc2UgdGhlCiAgICAgICAgICAgICAgICA7OyBjb21tYW5kLiBJ ZiBpdCBpcyBub3QsIHRoZSBwYXJlbnRoZXNpcyBpcyBqdXN0CiAgICAgICAgICAgICAgICA7 OyBhbm90aGVyIGNoYXJhY3Rlci4KCiAgICAgICAgICAgICAgICA7OyBJdCBzZWVtcyBsZWFz dCBiYWQgdG8gYWx3YXlzIGFzc3VtZSB0aGUgZm9ybWVyCiAgICAgICAgICAgICAgICA7OyBj YXNlLgogICAgICAgICAgICAgICAgbmlsKQoKICAgICAgICAgICAgICAgOzsgUXVvdGVkIHN0 cmluZwogICAgICAgICAgICAgICAoP1wiCiAgICAgICAgICAgICAgICAobnRjbWQtZm9yd2Fy ZC1xdW90ZWQtc3RyaW5nKQogICAgICAgICAgICAgICAgdCkKCiAgICAgICAgICAgICAgIDs7 IFRoZSB1c3VhbCBiaXphcnJlIGVzY2FwZSBsb2dpYwogICAgICAgICAgICAgICAoP14KICAg ICAgICAgICAgICAgIChudGNtZC1oYW5kbGUtcGFyc2UtZXNjYXBlKQogICAgICAgICAgICAg ICAgdCkKCiAgICAgICAgICAgICAgICgoPzwgPz4pCiAgICAgICAgICAgICAgICAod2hlbiAo bnRjbWQtcmUtc2VhcmNoLWJhY2t3YXJkPwogICAgICAgICAgICAgICAgICAgICAgIChyeCAo aW4gIiBcdCw7PSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICg/IChpbiAiMC05Iikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50KSkKICAgICAgICAgICAgICAgICAg KGZvcndhcmQtY2hhcikpCiAgICAgICAgICAgICAgICAobnRjbWQtZm9yd2FyZC1mZG1hbmlw KQogICAgICAgICAgICAgICAgdCkKCiAgICAgICAgICAgICAgICgobmlsID8mID98ID9cbikK ICAgICAgICAgICAgICAgIDs7IFdoYXQgb24gZWFydGguLi4/IFllcywgc2V0IGFjdHVhbGx5 IHNraXBzICJ8fCIgZm9yCiAgICAgICAgICAgICAgICA7OyBzb21lIHJlYXNvbiwgYnV0IG9u bHkgaW4gdGhlIHZhbHVlIHBhcnQuIEFjdHVhbGx5LAogICAgICAgICAgICAgICAgOzsgaXQg b21pdHMgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgInx8IiBmcm9tIHRoZQogICAgICAg ICAgICAgICAgOzsgdmFsdWUgYXNzaWduZWQgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxl LCBidXQgd2UKICAgICAgICAgICAgICAgIDs7IGRvbid0IGNhcmUgYWJvdXQgdGhhdCBoZXJl LgogICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0IChyeCAifHwiKSkKICAgICAgICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIg MikKICAgICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgIG5pbCkpKSkp KQoKICAgIChudGNtZC1jb250aW51ZS1mb3J3YXJkLWNtZCkpKQoKKGRlZnVuIG50Y21kLWZv cndhcmQtZ2VuZXJpYy1jbWQgKCkKICAiUGFyc2UgYSBnZW5lcmljIGNvbW1hbmQgbGluZSBh cyBmb3IgYW4gZXh0ZXJuYWwgY29tbWFuZC4iCgogICh3aGVuIChsb29raW5nLWF0IChyeCAo ZXZhbCBudGNtZC1mZG1hbmlwLWJlZ2luLXJ4KSkpCiAgICAobnRjbWQtZm9yd2FyZC1mZG1h bmlwKQoKICAgIDs7IFdlIGFjdHVhbGx5IHVzZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFs Z29yaXRobSBmb3IgcmVhZGluZwogICAgOzsgdGhlIGNvbW1hbmQgbmFtZSBkZXBlbmRpbmcg b24gd2hldGhlciB3ZSd2ZSBzZWVuIGFuIElPCiAgICA7OyByZWRpcmVjdGlvbi4gSSd2ZSBk ZXRlcm1pbmVkIHRoZXNlIHJ1bGVzIGVtcGVyaWNhbGx5LgoKICAgIDs7IFJlYWQgYWxsIElP IG1hbmlwdWxhdGlvbnMgKHdoaWNoIGNhbiBvbmx5IG9jY3VyIG9uIHRoZSBmaXJzdAogICAg OzsgbGluZSkuCiAgICAod2hpbGUgKHByb2duIChudGNtZC1mb3J3YXJkLXN5bnRhY3RpYy13 cyB0KQogICAgICAgICAgICAgICAgICAoYW5kIChsb29raW5nLWF0IChyeCAoZXZhbCBudGNt ZC1mZG1hbmlwLWJlZ2luLXJ4KSkpCiAgICAgICAgICAgICAgICAgICAgICAgKG50Y21kLWZv cndhcmQtZmRtYW5pcCkKICAgICAgICAgICAgICAgICAgICAgICB0KSkpCgogICAgOzsgSGVy ZSdzIHRoZSB0cmlja3kgYml0OiBzZWUgd2hldGhlciB3ZSBuZWVkIHRvIGRpc2NhcmQgdGhl IHJlc3QKICAgIDs7IG9mIHRoaXMgbGluZS4gV2UgZG8gdGhhdCBpZiB3ZSBzZWUgYSBsaW5l IGNvbnRpbnVhdGlvbiBhbmQKICAgIDs7IGhhdmVuJ3QgeWV0IGZpbmlzaGVkIHJlYWRpbmcg YSBjb21tYW5kIG5hbWUuCiAgICAobnRjbWQtZm9yd2FyZC1zeW50YWN0aWMtd3MgdCkKCiAg ICAod2hlbiAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgKG50Y21kLXJlLXNlYXJjaC1m b3J3YXJkPwogICAgICAgICAgICAgKHJ4CiAgICAgICAgICAgICAgcG9pbnQKICAgICAgICAg ICAgICAofCAiXiIKICAgICAgICAgICAgICAgICAoOiAoZ3JvdXAgKGV2YWwgbnRjbWQtc3Bl Y3VsYXRpdmUtY29tbWFuZC1uYW1lLXJ4KSkKICAgICAgICAgICAgICAgICAgICAiXiIpKSkp KQogICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0CiAgICAgICAnKDEgZm9udC1sb2NrLXdh cm5pbmctZmFjZSBuaWwgdCkpCiAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgKG50Y21k LWZvcndhcmQtc3ludGFjdGljLXdzIHQpKSkKCiAgOzsgV2UncmUgYWxsb3dlZCBvbmUgY29u dGludWF0aW9uIGJlZm9yZSB0aGUgY29tbWFuZCBuYW1lIHByb3BlcgogIDs7IGJlZ2lucy4g QW55IG1vcmUgdGhhbiB0aGF0IGlzIGFuIGVycm9yLgogIChudGNtZC1yZS1zZWFyY2gtZm9y d2FyZD8gKHJ4IHBvaW50ICJeXG4iKSkKCiAgKHdoZW4gKGxvb2tpbmctYXQgKHJ4IChpbiAi XiIgIlxuIiAiPCIgIj4iICJ8IiAiJiIpKSkKICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1l cnJvciAnKCJjYW5ub3QgYmVnaW4gY29tbWFuZCBoZXJlIikpKQoKICA7OyBOb3cgd2UgY2Fu IHJlYWQgYSBjb21tYW5kIG5hbWUgbm9ybWFsbHkuIFRoaXMgaXMganVzdCBsaWtlCiAgOzsg cmVhZGluZyBhbnkgb3RoZXIgYmFyZXdvcmQtb3Itc3RyaW5nLCBleGNlcHQgdGhhdCAqYW55 KgogIDs7IGNvbW1hbmQtdGVybWluYXRvciBvdXRzaWRlIGEgc3RyaW5nIHRlcm1pbmF0ZXMg dGhlIGNvbW1hbmQsIGV2ZW4KICA7OyBpZiBpdCdzIGVzY2FwZWQgd2l0aCBeLgogIChjb25k CiAgIDs7IDEuIFdvcmRzIHRoYXQgc2hvdWxkIG5ldmVyIGFwcGVhciBpbiB0aGlzIGNvbnRl eHQgYmVjYXVzZSB3ZQogICA7OyBoYXZlIHNlcGFyYXRlIHBhcnNlcnMgZm9yIHRoZW0uCiAg ICgobG9va2luZy1hdCAocngKICAgICAgICAgICAgICAgICAoZ3JvdXAgKGV2YWwgYCh8ICxA bnRjbWQtbmV2ZXItY29tbWFuZHMpKSkgc3ltYm9sLWVuZCkpCiAgICAobnRjbWQtYXBwbHkt aGlnaGxpZ2h0ICcoMCBmb250LWxvY2std2FybmluZy1mYWNlKSkKICAgIChzaWduYWwgJ250 Y21kLXN5bnRheC1lcnJvciBgKCJub3QgZXhwZWN0ZWQgaGVyZSIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAsKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpKSkpCgog ICA7OyAyLiBTaGVsbCBidWlsdGlucyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCBwYXJzaW5n IHJ1bGVzCiAgICgobG9va2luZy1hdCAocnggKGdyb3VwIChldmFsIGAofCAsQG50Y21kLXNo ZWxsLWJ1aWx0aW5zKSkpCiAgICAgICAgICAgICAgICAgICAgKHwgKGV2YWwgYChpbiAsQG50 Y21kLWJ1aWx0aW4tc2VwYXJhdG9ycyAiXG4iKSkKICAgICAgICAgICAgICAgICAgICAgICBi dWZmZXItZW5kKSkpCgogICAgKGNvbmQgKDs7IDJhLiBTcGVjaWFsIGNhc2UgZm9yIGVjaG8g LS0tIGJhcmUgZWNobyBpcyBhbG1vc3QgbmV2ZXIKICAgICAgICAgICA7OyB3aGF0IHlvdSB3 YW50CiAgICAgICAgICAgKG50Y21kLXJlLXNlYXJjaC1mb3J3YXJkPyAocnggcG9pbnQgKGdy b3VwICJlY2hvIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCog KGluICIgXHQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHwg KGluID9cbiA/JiA/fCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYnVmZmVyLWVuZCkpKQogICAgICAgICAgIChudGNtZC1hcHBseS1oaWdobGlnaHQgJygx IGZvbnQtbG9jay13YXJuaW5nLWZhY2UpKQogICAgICAgICAgICh1bmxlc3MgKGVvYnApCiAg ICAgICAgICAgICAoYmFja3dhcmQtY2hhcikKICAgICAgICAgICAgIChudGNtZC1jb250aW51 ZS1mb3J3YXJkLWNtZCkpKQoKICAgICAgICAgIDs7IDJiLiBTcGVjaWFsIGNhc2UgZm9yIHNl dAogICAgICAgICAgKChudGNtZC1yZS1zZWFyY2gtZm9yd2FyZD8KICAgICAgICAgICAgKHJ4 IHBvaW50IChncm91cCAic2V0IikKICAgICAgICAgICAgICAgIChub3QgKGluICJsIikpKSkK ICAgICAgICAgICAobnRjbWQtYXBwbHktaGlnaGxpZ2h0ICcoMSBmb250LWxvY2sta2V5d29y ZC1mYWNlKSkKICAgICAgICAgICAobnRjbWQtZm9yd2FyZC1zZXQtY29tbWFuZC1ib2R5KSkK CiAgICAgICAgICA7OyAyZS4gTm9ybWFsIGJ1aWx0aW4gY29tbWFuZAogICAgICAgICAgKHQK ICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgKG50Y21k LWFwcGx5LWhpZ2hsaWdodCAnKDEgZm9udC1sb2NrLWtleXdvcmQtZmFjZSkpCiAgICAgICAg ICAgKG50Y21kLWZvcndhcmQtbm9ybWFsLWNtZC1saW5lKSkpKQoKICAgOzsgMy4gU3BlY2lh bCBjYXNlIGZvciAnKCcKICAgKChlcWwgKGNoYXItYWZ0ZXIpID9cKCkKICAgIChmb3J3YXJk LWNoYXIpCiAgICAobnRjbWQtZm9yd2FyZC1zeW50YWN0aWMtd3MpCiAgICAobnRjbWQtZm9y d2FyZC1jbWQpKQoKICAgOzsgNC4gU3BlY2lhbCBjYXNlIGZvciAnKScKICAgKChlcWwgKGNo YXItYWZ0ZXIpID9cKSkKICAgIChudGNtZC1jb250aW51ZS1mb3J3YXJkLWNtZCkpCgogICA7 OyA1LiBOb24tYnVpbHQtaW4gY2FzZQogICAodAogICAgKGxldCAoKCpudGNtZC1iYXJld29y ZC1mYWNlKiAnZm9udC1sb2NrLWJ1aWx0aW4tZmFjZSkKICAgICAgICAgICpudGNtZC1iYXJl d29yZC1hbGxvdy1zcGFjZSopCiAgICAgIChudGNtZC1mb3J3YXJkLWJhcmV3b3JkKSkKICAg IChudGNtZC1mb3J3YXJkLW5vcm1hbC1jbWQtbGluZSkpKSkKCjs7IGVuZCBvZiBidWZmZXIK KG50Y21kLXJlZ2lzdGVyLWNtZC1wYXJzZXIKIChyeCBidWZmZXItZW5kKQogKGxhbWJkYSAo KSkpCgo7OyBjb21tYW5kIHBhcnNpbmcgbWFjaGluZXJ5CgooZGVmdW4gbnRjbWQtY29udGlu dWUtZm9yd2FyZC1jbWQgKCkKICAobnRjbWQtZm9yd2FyZC1zeW50YWN0aWMtd3MgdCkKCiAg KGNvbmQgKChlcWwgKGNoYXItYWZ0ZXIpID9cKSkKICAgICAgICAgKGZvcndhcmQtY2hhcikK ICAgICAgICAgKGlmIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAobnRjbWQtZm9y d2FyZC1zeW50YWN0aWMtd3MpCiAgICAgICAgICAgICAgIChsb29raW5nLWF0IChyeCAoZ3Jv dXAgICJlbHNlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg/ICJeXG4iKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluICIgXHQ9LDsiKSkpKQogICAgICAg ICAgICAgKHByb2duCiAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAxKSkK ICAgICAgICAgICAgICAgKG50Y21kLWFwcGx5LWhpZ2hsaWdodAogICAgICAgICAgICAgICAg JygxIGZvbnQtbG9jay1rZXl3b3JkLWZhY2UpKQogICAgICAgICAgICAgICAobnRjbWQtZm9y d2FyZC1jbWQpKQogICAgICAgICAgIChudGNtZC1jb250aW51ZS1mb3J3YXJkLWNtZCkpKQoK ICAgICAgICAoKG50Y21kLXJlLXNlYXJjaC1mb3J3YXJkPwogICAgICAgICAgKHJ4IHBvaW50 ICh8ICg6ICImIiAoPyAiJiIpKQogICAgICAgICAgICAgICAgICAgICAgICg6ICJ8IiAoPyAi fCIpKSkpKQogICAgICAgICAobnRjbWQtZm9yd2FyZC1jbWQpKSkKCiAgKHVubGVzcyAob3Ig KGJvbHApIChlb2xwKSkKICAgIChzaWduYWwgJ250Y21kLXN5bnRheC1lcnJvciAiY29tbWFu ZCB0ZXJtaW5hdGVkIGVhcmx5IikpKQoKKGRlZnVuIG50Y21kLWZvcndhcmQtY21kICgpCiAg IlBhcnNlIGEgc2luZ2xlIGNvbW1hbmQuIgoKICAoaW50ZXJhY3RpdmUpCgogIDs7IFNraXAg YW55IHN5bnRhY3RpY2FsbHkgaXJyZWxldmFudCBjb21tYW5kIHByZWZpeAogIChza2lwLWNo YXJzLWZvcndhcmQgIiBcdCw7PUAiKQoKICAoZnVuY2FsbAogICAobG9vcCBmb3IgKHJlIC4g ZnVuYykgaW4gbnRjbWQtY29tbWFuZC1wYXJzZXJzCiAgICAgICAgIHdoZW4gKG50Y21kLXJl LXNlYXJjaC1mb3J3YXJkPyByZSkKICAgICAgICAgcmV0dXJuIGZ1bmMpKSkKCjs7OyMjI2F1 dG9sb2FkCihkZWZpbmUtZGVyaXZlZC1tb2RlIG50Y21kLW1vZGUgbmlsICJOVC9DTUQiCiAg Ik1ham9yIG1vZGUgZm9yIGVkaXRpbmcgQ01EIHNjcmlwdHMuCgpcXHtudGNtZC1tb2RlLW1h cH0iCgogIDpncm91cCAnbnRjbWQKICA6c3ludGF4LXRhYmxlIG50Y21kLW1vZGUtc3ludGF4 LXRhYmxlCiAgOmFiYnJldi10YWJsZSBudGNtZC1tb2RlLWFiYnJldi10YWJsZQoKICAoc2V0 IChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50LXN0YXJ0KSAiQHJlbSIpCiAgKHNldCAo bWFrZS1sb2NhbC12YXJpYWJsZSAnaW1lbnUtZ2VuZXJpYy1leHByZXNzaW9uKQogICAgICAg JygobmlsICJeOlteOl0uKiIgMCkpKQoKICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdm b250LWxvY2stZGVmYXVsdHMpCiAgICAgICBgKG50Y21kLWZvbnQtbG9jay1rZXl3b3JkcyA7 IGtleXdvcmRzCiAgICAgICAgIG5pbCAgICAgICAgICAgICAgICAgICAgOyBrZXl3b3Jkcy1v bmx5CiAgICAgICAgIHQgICAgICAgICAgICAgICAgICAgICAgOyBjYXNlLWZvbGQKICAgICAg ICAgbmlsICAgICAgICAgICAgICAgICAgICA7IHN5bnRheCBtb2RpZmljYXRpb25zCiAgICAg ICAgIG5pbCAgICAgICAgICAgICAgICAgICAgOyBzeW50YXgtYmVnaW4KICAgICAgICAgKGZv bnQtbG9jay1zeW50YWN0aWMta2V5d29yZHMKICAgICAgICAgIC4gbnRjbWQtZm9udC1sb2Nr LXN5bnRhY3RpYy1rZXl3b3JkcykKICAgICAgICAgKGppdC1sb2NrLWNvbnRleHR1YWxseSAu IG5pbCkpKQoKICAoYWRkLWhvb2sgJ2ZvbnQtbG9jay1leHRlbmQtcmVnaW9uLWZ1bmN0aW9u cwogICAgIydudGNtZC1leHRlbmQtZm9udC1sb2NrLXJlZ2lvbgogICAgbmlsIHQpCgogIChz ZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzKSB0 KQogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcnNlLXNleHAtbG9va3VwLXByb3Bl cnRpZXMpIHQpCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnb3V0bGluZS1yZWdleHAp ICI6W146XSIpCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAnaW5kZW50LWxpbmUtZnVu Y3Rpb24pICMnbnRjbWQtaW5kZW50LWxpbmUpCgogIDs7IEltcG9ydGFudCB0byBmb250aWZ5 IHRoZSB3aG9sZSBidWZmZXIgc3ludGFjdGljYWxseSEgSWYgd2UgZG9uJ3QsCiAgOzsgdGhl biB3ZSBtaWdodCBoYXZlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaXRlcmFscyB0aGF0IGFyZW4n dCBtYXJrZWQKICA7OyBhcyBzdHJpbmdzLCB3aGljaCB3aWxsIHNjcmV3IHVwIHBhcnNlLXBh cnRpYWwtc2V4cCwgc2Nhbi1saXN0cywKICA7OyBldGMuIGFuZCBhbmQgcHJvZHVjZSBtYWRk ZW5pbmcgInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiIGVycm9ycy4KICA7OyBXaGVuIHdlIGF0 dGVtcHQgdG8gZmluZCB0aGUgZXJyb3IgYW5kIHNjcm9sbCB0byB0aGUgcG9ydGlvbiBvZgog IDs7IHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgcHJvYmxlbSwgSklULWxvY2sgd2lsbCBh cHBseSB0aGUKICA7OyBjb3JyZWN0IHN5bnRheCB0byB0aGUgcmVndWxhciBleHByZXNpb24g bGl0ZXJhbCBhbmQgdGhlIHByb2JsZW0KICA7OyB3aWxsIG15c3RlcmlvdXNseSBkaXNhcHBl YXIuCiAgKGZvbnQtbG9jay1zZXQtZGVmYXVsdHMpCgogIChsZXQgKGZvbnQtbG9jay1rZXl3 b3JkcykgOyBsZWF2ZXMgc3ludGFjdGljIGtleXdvcmRzIGludGFjdAogICAgKGZvbnQtbG9j ay1mb250aWZ5LWJ1ZmZlcikpKQoKKHByb3ZpZGUgJ250Y21kKQoK --------------070202000508030505060504-- --------------enigE892D973049415F23385B494 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (Darwin) iEYEARECAAYFAk3+YIwACgkQ17c2LVA10VtHJgCfQHaQxwegW9KAo09J1zXmEuT7 LGgAn3WXQsGPiobQ3jjQmoFUnLgByE1I =NJ1s -----END PGP SIGNATURE----- --------------enigE892D973049415F23385B494--