From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Wales Subject: Re: org for blogger Date: Sat, 1 Sep 2012 08:24:07 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8fb1eee0e4781c04c8a57f8c Return-path: Received: from eggs.gnu.org ([208.118.235.92]:45972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7pYP-0006iE-Lt for emacs-orgmode@gnu.org; Sat, 01 Sep 2012 11:24:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T7pYO-000083-IK for emacs-orgmode@gnu.org; Sat, 01 Sep 2012 11:24:09 -0400 Received: from mail-ob0-f169.google.com ([209.85.214.169]:35955) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7pYO-00007y-98 for emacs-orgmode@gnu.org; Sat, 01 Sep 2012 11:24:08 -0400 Received: by obhx4 with SMTP id x4so8257864obh.0 for ; Sat, 01 Sep 2012 08:24:07 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Rustom Mody Cc: emacs-orgmode --e89a8fb1eee0e4781c04c8a57f8c Content-Type: text/plain; charset=UTF-8 On 8/31/12, Rustom Mody wrote: > Great Samuel! > Anything I can do to help? Dunno. :) Here is the new code (with dependencies not included as mentioned). Most of it, including the command you asked for, might work without them. No guarantees. An old version is in the thread "[O] exporting HTML - content only", with Tamas Papp and others. Alexandre, a few small things are needed to produce a blog to my standards: H level fix, diff with live, footnote CSS fix, exact and fast word count, emdash, section separator, jump page marker, colored boxes with padding and margin, Blogger editor settings, org-export-with-*, etc. If the defaults work for you, there is no need to use anything like this. It was written over years a few minutes at a time. Again, it was written for me. FWIW, HTH. Samuel -- The Kafka Pandemic: http://thekafkapandemic.blogspot.com --e89a8fb1eee0e4781c04c8a57f8c Content-Type: application/octet-stream; name="alpha-org-export.el" Content-Disposition: attachment; filename="alpha-org-export.el" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 Ozs7Cjs7O215IC9wdWJsaWMvIGNvZGUgZm9yIG9yZy1tb2RlIGV4cG9ydAo7OzsKOzs7dGhpcyBp cyBtZWFudCBmb3IgbXlzZWxmIGFuZCBpcyBpbiBzbG93ICh5ZWFycykgdHJhbnNpdGlvbiB0bwo7 OztiZSB1c2VmdWwgZm9yIG90aGVycy4gIHBsZWFzZSB1c2Ugd2hhdCB5b3UgbGlrZS4gIGl0IG1p Z2h0Cjs7O2hhdmUgZGVwZW5kZW5jaWVzLCBidXQgc29tZSB0aGluZ3MgbWlnaHQgd29yayB3aXRo b3V0IHRob3NlLgo7OzsKOzs7bG9hZGluZyBpcyBpbnRlbmRlZCB0byBiZSBtb3N0bHkgc2lkZS1l ZmZlY3QtZnJlZS4gIHNldAo7OzthbHBoYS1hbHBoYS1wIHRvIG5vbi1uaWwgYmVmb3JlIGxvYWRp bmcgaWYgeW91IHdhbnQgdG8gdHJ5IGFsbAo7OztvZiBteSBzZXR0aW5ncy4KOzs7Cjs7O2xvYWQg YWZ0ZXIgbG9hZGluZyBvcmcKOzs7Cjs7O3NlZSBhbHBoYS1vcmctZXhwb3J0LW1hcCBmb3Igc29t ZSBiaW5kaW5ncwo7OzsKOzs7Y29udGFpbnMgdmFyaW91cyB0aGluZ3MsIHN1Y2ggYXMKOzs7ICBh biBIVE1MIHN1YnRyZWUgZXhwb3J0ZXIKOzs7ICAgIHdvcmtzIHdpdGggQmxvZ2dlcgo7OzsgICAg d2l0aCBsZXZlbCBhZGp1c3RtZW50Cjs7OyAgICB3aXRoIEVtYWNzIGFuZCBleHRlcm5hbCBwcmV2 aWV3ZXJzCjs7OyAgZGlmZiBIVE1MIG91dHB1dCB3aXRoIGxpdmUgdmVyc2lvbiAoPC0gbmVhdGVz dCBmZWF0dXJlKQo7OzsgIGFuIGV4YWN0IHdvcmQgY291bnRlcgo7OzsgIG15IHNlY3Rpb24gc2Vw YXJhdG9ycyBhbmQgZW1kYXNoCjs7OwoKOzs7Cjs7O0NvcHlyaWdodCAoQykgMjAxMC0yMDEyICBT YW11ZWwgV2FsZXMKOzs7ICB3aXRoIHNvbWUgY29kZSB3cml0dGVuIGVhcmxpZXIgYnV0IG5vdCBy ZWxlYXNlZAo7OzsKOzs7VGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcgo7Ozttb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo7OztwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywKOzs7b3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KOzs7Cjs7O1RoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OztidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OztNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7O0dOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCjs7Owo7OztZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKOzs7TGljZW5zZSBh bG9uZyB3aXRoIEVtYWNzLiAgSWYgbm90LCBzZWUKOzs7PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+Lgo7OzsKCjs7O2ZvciBtb3JlIHNvdXJjZSBjb2RlIHNlZSBvcmcgYW5kIGdyZXAgZm9y IGJlZ2luX3NyYyBlbWFjcy1saXNwIGthCgo7OzsgICAgOzsgZGVsZXRlIHN1cGVyZmx1b3VzIGJs YW5rIGxpbmVzIChpcyB0aGVyZSBhIGJldHRlciB3YXk/KQo7OzsgICAgKGdvdG8tY2hhciAocG9p bnQtbWluKSkKOzs7ICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxuXG4rIiBuaWwgdCkK Ozs7ICAgICAgKHByZXZpb3VzLWxpbmUpCjs7OyAgICAgIChkZWxldGUtYmxhbmstbGluZXMpKSkp CgooZGVmdmFyIGFscGhhLW9yZy1leHBvcnQtbWFwCiAgKG1ha2Utc3BhcnNlLWtleW1hcCAiYWxw aGEgb3JnIGV4cG9ydCBtYXAiKSkKKGRlZmluZS1rZXkgb3JnLW1vZGUtbWFwIChrYmQgIkMtYyBo IikgYWxwaGEtb3JnLWV4cG9ydC1tYXApCihkZWZpbmUta2V5IGFscGhhLW9yZy1leHBvcnQtbWFw ICJhIiAKICAnYWxwaGEtb3JnLWV4cG9ydC1hcy1hc2NpaS10by1idWZmZXIpCihkZWZpbmUta2V5 IGFscGhhLW9yZy1leHBvcnQtbWFwICJjIiAnYWxwaGEtb3JnLXdjKQooZGVmaW5lLWtleSBhbHBo YS1vcmctZXhwb3J0LW1hcCAiZCIgJ2FscGhhLW9yZy1ibG9nLWRpZmYpCihkZWZpbmUta2V5IGFs cGhhLW9yZy1leHBvcnQtbWFwICJlIiAnYWxwaGEtb3JnLWJsb2ctc3VidHJlZS1leHRlcm5hbCkK KGRlZmluZS1rZXkgYWxwaGEtb3JnLWV4cG9ydC1tYXAgImgiICdhbHBoYS1vcmctYmxvZy1zdWJ0 cmVlKQooZGVmaW5lLWtleSBhbHBoYS1vcmctZXhwb3J0LW1hcCAidyIgJ2FscGhhLW9yZy1ibG9n LXN1YnRyZWUtdzNtKQoKKGRlZmNvbnN0IGFscGhhLW9yZy1ibG9nLWh0bWwtYnVmZmVyICJhbHBo YS1vcmctYmxvZy5odG1sIikKOztsb2FkIHRoaXMgYWZ0ZXIgbG9hZGluZyBvcmcKKGRlZnVuKiBh bHBoYS1vcmctYmxvZy1zdWJ0cmVlICgma2V5IG5vY29weSkKICAiQ29weSB0aGUgc3VidHJlZSwg Y29udmVydGVkIHRvIEhUTUwsIGZvciBwYXN0aW5nIGludG8gQmxvZ2dlcgphcyBhIGJsb2cgcG9z dC4gIElmIHRoZXJlIGlzIGFuIGFjdGl2ZSByZWdpb24sIHVzZSB0aGF0IGluc3RlYWQuCgpUaGlz IGFsc28gd29ya3MgZ2VuZXJpY2FsbHksIGJlY2F1c2UgQmxvZ2dlciB1c2VzIGEgc3Vic2V0IG9m CkhUTUwuICBTbyBpdCBjb3VsZCByZWFsbHkgYmUgY2FsbGVkIGBhbHBoYS1vcmctZXhwb3J0LXN1 YnRyZWUnLgoKTm8gb3RoZXIgc29mdHdhcmUgbmVlZHMgdG8gYmUgaW5zdGFsbGVkLiAgTm8gdGVt cG9yYXJ5IGZpbGUgaXMKY3JlYXRlZC4gIE5vIGZpbGUgaXMgY3JlYXRlZC4KCkZvciBhbiBleGFt cGxlIG9mIHRoaXMgY29kZSBpbiBhY3Rpb24sIHNlZQpodHRwOi8vdGhla2Fma2FwYW5kZW1pYy5i bG9nc3BvdC5jb20vIC4KCj09PQoKWW91IGhhdmUgdG8gdHVybiBvZmYgQmxvZ2dlcidzIGNvbnZl cnNpb24gb2YgbmV3bGluZSB0byBiciB0YWdzCmluIHNldHRpbmdzIGFuZCBpbiB0aGUgbmV3IEJs b2dnZXIgcG9zdCBlZGl0b3IgKHRoZSBvbGQgZWRpdG9ycwpkbyBub3QgaGF2ZSB0aGF0IG9wdGlv bikgYW5kIGluIHRoZSBCbG9nZ2VyIHBhZ2VzIGVkaXRvciAoaWYgeW91CnVzZSBwYWdlcykuICBU aGlzIG1ha2VzIEJsb2dnZXIgbW9yZSBjb21wYXRpYmxlLiAgRXh0cmEgYmxhbmsKbGluZXMgYXJl IG5vcm1hbGx5IGlnbm9yZWQgaW4gSFRNTCAodzNtIGFuZCBGaXJlZm94IG9uIC5odG1sKSwgc28K aXQgbWFrZXMgc2Vuc2UgdG8gbWFrZSBCbG9nZ2VyIGlnbm9yZSB0aGVtIGluc3RlYWQgb2YgY29u dmVydGluZwp0aGVtLiAgT3JnIHNvbWV0aW1lcyBsZWF2ZXMgZXh0cmEgYmxhbmsgbGluZXMsIHNv IGl0IG1ha2VzIGEKZGlmZmVyZW5jZS4KClRoZSBIVE1MIGNvZGUgaXMgbGVmdCBpbiBhIGJ1ZmZl ciB0aGF0IGlzIG9uZSBidWZmZXIgYXdheSBpbiB0aGUKYnVmZmVyIHJpbmcuICBUbyBkaXNwbGF5 IGl0IGluIGEgYnJvd3NlciwgdXNlIE0teApicm93c2UtdXJsLW9mLWJ1ZmZlciBvciBzaW1pbGFy LCBidXQgeW91IGNhbiBhbHNvIHVzZSBteSB3cmFwcGVycwp0aGF0IGRvIGl0IGRpcmVjdGx5IGZv ciB5b3UuCgo9PT0KClRoZSB0b3AgbGV2ZWwgaGVhZGxpbmUgYnkgZGVmYXVsdCBpcyBub3QgZXhw b3J0ZWQsIGJlY2F1c2UKQmxvZ2dlciBhbHJlYWR5IGhhcyBhIHRpdGxlLiAgRm9yIGJvdGggcG9z dHMgYW5kIHBhZ2VzLCBCbG9nZ2VyJ3MKdGl0bGUgZmllbGQgZm9ybXMgdGhlIFVSTCBhbmQgaXMg dGhlcmVmb3JlIG1hbnVhbGx5IGVudGVyZWQuCgo9PT0KCk9yZyB2YXJpYWJsZXM6CgpZb3UgY2Fu IGNvbnRyb2wgd2hhdCBnZXRzIGV4cG9ydGVkIHdpdGggb3JnLWV4cG9ydC13aXRoLSouICBGb3Ig YQpibG9nLCB5b3UgYWxtb3N0IGFsd2F5cyB3YW50IHRvIHNldCBtb3N0IG9mIHRob3NlIHZhcmlh YmxlcyB0bwpuaWwuICBCdXQganVzdCBpbiBjYXNlIHlvdSB3YW50IHRvIGNvbnRyb2wgZXhwb3J0 IHdpdGggdGhlbSwKL3RoaXMgY29tbWFuZCB3aWxsIG5vdCBtYWtlIHRob3NlIGNob2ljZXMgZm9y IHlvdS8uICBJIGFsc28gZmluZAp0aGF0IChzZXRmIG9yZy1leHBvcnQtaGVhZGxpbmUtbGV2ZWxz IDEwKSBpcyB1c2VmdWwuCgo9PT0KCkFkdmFuY2VkOgoKV2l0aCBub24taW50ZXJhY3RpdmUga2V5 d29yZCBOT0NPUFksIGRvbid0IHNhdmUgdGhlIG91dHB1dCBpbgp0aGUga2lsbCByaW5nLgoKPT09 CgpJIHVzZSBCbG9nZ2VyLmNvbSBmb3IgaG9zdGVkIGJsb2dnaW5nIGluc3RlYWQgb2YgV29yZHBy ZXNzLmNvbQpiZWNhdXNlIEdvb2dsZSBoYXMgYSBiZXR0ZXIgYXR0aXR1ZGUgdG93YXJkIGFjY2Vz c2liaWxpdHkuCiIKICAoaW50ZXJhY3RpdmUpCgo7OzsgOnRpdGxlOiBpcyBhbHNvIHVzZWZ1bCBp ZiB5b3Ugd2FudCB0byB0cnkgYSBkaWZmZXJlbnQgc3RyYXRlZ3kuCjs7OyBJIGRpZCB0aGlzIGZv ciBteSBmaXJzdCBibG9nIHBvc3QuICBZb3UgY2FuIGNoYW5nZSB3aGV0aGVyIHRvCjs7OyBpbmNs dWRlIHRpdGxlIGZpZWxkcyBpbiBCbG9nZ2VyIHNldHRpbmdzLiAgWW91IGNhbiBvbmx5IGRvIHRo aXMKOzs7IGZvciBwb3N0cy4gIFR1cm5pbmcgb2ZmIHRpdGxlcyBoYXMgb25lIGNvbnZlbmllbmNl OiB5b3UgZG9uJ3QKOzs7IGhhdmUgdG8gZW50ZXIgdGhlbSBtYW51YWxseS4gIEl0IGFsc28gaGFz IHR3byBkcmF3YmFja3M6ICgxKQo7OzsgcGVvcGxlIHdobyBsaW5rIHRvIHlvdXIgcG9zdCBieSBj b3B5aW5nIHRoYXQgbGluayBjYW5ub3QgZG8KOzs7IHNvICh0aGV5IGNhbiBnZXQgaXQgZnJvbSBv dGhlciBwbGFjZXMsIGluY2x1ZGluZyB0aGUgVVJMIGJhciBhbmQKOzs7IEFyY2hpdmVzIGluIHRo ZSBzaWRlYmFyKSBhbmQgKDIpIHRoZSBVUkwgZ2V0cyBmb3JtZWQgYSBsaXRsZQo7OzsgZnVubmls eS4gIE9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIHNwZWNpYWwgcmVhc29uLgoKOzs7IHRvZG8g bGlzdAo7OzsgICAKOzs7ID09PSBtYWlsMmJsb2dnZXIgPT09Cjs7OyAKOzs7IG1haWwyYmxvZ2dl ciBpcyBhbiBpbnRyaWd1aW5nIG9wdGlvbi4gIEF2b2lkcyB0aGUgd2ViIGVudGlyZWx5Lgo7OzsK Ozs7IEkgdHJpZWQgdXNpbmcgbWFpbDJibG9nZ2VyLCBidXQgdGhlIEhUTUwgZ290IHBvc3RlZC4g IFRoZXJlIG1pZ2h0Cjs7OyBiZSBhIHdheSB0byBmaXggdGhpcy4gIEhvdyBkbyB5b3UgZG8gYW4g SFRNTCBlbWFpbCBpbiBhIGZvcm1hdAo7OzsgdGhhdCBnZXRzIHJlY29nbml6ZWQgYXMgSFRNTD8K Ozs7IAo7OzsgV2Ugd2FudCB0byB1c2UgcmF3IHByb2dyYW1tYXRpYyBlbWFpbCwgc3VjaCBhcyBz ZW50IHVzaW5nIG1zbXRwCjs7OyBvciB0aGUgYnVpbHQtaW4gRW1hY3MgY2xpZW50Lgo7OzsgCjs7 OyBQYXRjaCB3ZWxjb21lLgo7OzsgCjs7OyA9PT0KOzs7IAo7OzsgQWxzbywgZXhwb3J0IHdob2xl IGJsb2cgYmVmb3JlIGVhY2ggcG9zdCBmb3IgZ2l0LiAgUmVxdWlyZXMgcG9zdAo7OzsgbWV0aG9k IG1heWJlLiAgSG93IHRvIGRvIHRoYXQ/Cjs7OyAKOzs7IEFsc28sIGNoZWNrIGZvciBmaXhtZXMu ICAoT3Igb3JnIGNvdWxkIGNoZWNrIGZvciBmaXhtZXMgYmVmb3JlCjs7OyBhbGwgZXhwb3J0LiAg SXMgdGhlcmUgYSBob29rPykKOzs7Cjs7OyBBbHNvLCByZW1pbmQgeW91IHRvIGV4dHJhY3QgYmln IGNodW5rcyBvZiBjb21tZW50cyBmb3IKOzs7IHBvc3NpYmxlIG9odGVyIGJsb2cgZW50cmllcy4K Ozs7Cjs7OyAvQWxzbywgcmVtaW5kIHlvdSB0byBtYWtlIHN1cmUgYWxsIGxpbmtzIHdvcmsgYW5k IHJldmlldwo7OzsgZm9ybWF0dGluZy8uCjs7OwogIAogIDs7c2F5IGFib3V0IHRvIHB1Ymxpc2gg ZWRpdGluZyBvciBhYm91dCB0byBwdWJsaXNoIHBvc3QuICB3aXRoCiAgOzttYWlsMmJsb2dnZXIg b3Igd2VibG9nZ2VyLmVsIG9yIGF0b20sIHdlIGNhbiBhdXRvbWF0ZSB0aGlzCiAgOzthbmQgYXNz dW1lIHB1Ymxpc2guCiAgCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2F2ZS13aW5kb3ctZXhjdXJz aW9uCiAgICAgIDs7CiAgICAgIDs7aGVhZGxpbmUgbGV2ZWxzOgogICAgICA7OwogICAgICA7O29y ZyBjb252ZXJ0cyBoZWFkbGluZXMgdG8gaHRtbCBoIG51bWJlcnMgYWNjb3JkaW5nIHRvIHRoZQog ICAgICA7O2xldmVsIGluIHRoZSBvcmcgZmlsZSwgbm90IHRoZSBsZXZlbCBpbiB0aGUgcmVnaW9u LgogICAgICA7OwogICAgICA7O2hlcmUgd2UgZG8gaXQgbXkgd2F5LgogICAgICA7OwogICAgICA7 O3RvcCAxIG1lYW5zIHRoYXQgdGhlIHZlcnkgdG9wIGxldmVsIGluIHlvdXIgb3JnIHN1YnRyZWUK ICAgICAgOztpcyBoMS4gIGl0IGlzIGxhcmdlLiAgdGhlIHNlY29uZCBsZXZlbCBpbiBvcmcgaXMg aDIgYW5kCiAgICAgIDs7c28gb24uICB0aGlzIGlzIHRydWUgd2hldGhlciB5b3UgdXNlIHRoZSA6 dGl0bGU6IHRhZyBvcgogICAgICA7O25vdC4gIChpIGRvIG5vdCB1c2UgaXQuKQogICAgICA7Owog ICAgICA7O2Jlc3QgdG8gc2V0IHRvcCB0byBiZSB3aGF0IHRoZSB0aXRsZSBpcyBzZXQgdG8gaW4K ICAgICAgOztibG9nZ2VyICh1bmxlc3MgeW91IHdhbnQgdG8gc2tpcCBhbiBoIGxldmVsKS4KICAg ICAgOzsKICAgICAgOztibG9nZ2VyIGRvZXMgbm90IGZvcm1hdCBoMiBib2xkIG9uIGZpcmVmb3gg aW4gdGhlCiAgICAgIDs7d2F0ZXJtYXJrIHRlbXBsYXRlLiAgc28gaDMgbG9va3MgYmlnZ2VyIHRo YW4gaDIuCiAgICAgIDs7cmVtb3ZpbmcgdGhlIGgyIGNzcyBpbiBlZGl0IGh0bWwgc2VlbXMgdG8g Zml4IHRoaW5ncy4KICAgICAgOzsKICAgICAgOztmaXhpbmcgaDIgaW4gdGhlIHRlbXBsYXRlIGlz IHN0aWxsIHVzZWZ1bCBldmVuIGlmIHdlCiAgICAgIDs7ZG9uJ3QgdXNlIGl0IGZvciBoZWFkbGlu ZXMuICBpbiB0aGUgd2F0ZXJtYXJrIHRlbXBsYXRlIGl0CiAgICAgIDs7YWZmZWN0cyBnYWRnZXQg dGl0bGUgZm9udCwgd2hpY2ggaXMgaW1vIGEgYnVnIGluCiAgICAgIDs7d2F0ZXJtYXJrLiAgaXQg bWlnaHQgYWZmZWN0IGgzIHNvbWVob3cuCiAgICAgIDs7CiAgICAgIDs7Zm9vdG5vdGUgaGVhZGVy IGluIG9yZyBhbHNvIHVzZXMgaDIuICBpIHRoaW5rIGl0IGlzCiAgICAgIDs7aGFyZGNvZGVkLiAg aXQgd291bGQgYmUgYmV0dGVyIGZvciBvdXIgcHVycG9zZXMgaWYgaXQKICAgICAgOzt3ZXJlIGNv bmZpZ3VyYWJsZS4gIHdlIHdhbnQgaXQgdG8gYmUgdGhlIHNhbWUgbGV2ZWwgYXMKICAgICAgOztv dXIgbm9uLXRpdGxlIHRvcCBsZXZlbCwgd2hpY2ggaXMgaDMgPSBzZWNvbmQgbGV2ZWwgaW4KICAg ICAgOztvcmcuICBoZXJlIHdlIHdvdWxkIHNldCBpdHMgaCBsZXZlbCB0byB0b3AgKyAxLiAgZml4 bWUKICAgICAgOzttYWtlIGEgZmVhdHVyZSByZXF1ZXN0LgogICAgICA7OwogICAgICA7O2F0IHRv cCAyLCB5b3UgY2FuIHNpbXBseSB1c2UgdGhlIG9yZyB2YXJpYWJsZSB0byBzZXQgdG9wCiAgICAg IDs7aGxldmVsLiAgc28gdG9wIGlzIGEgY29uc3RhbnQgaGVyZSBhbmQgY2FuIGJlIGlnbm9yZWQg b3IKICAgICAgOztoYXJkY29kZWQuCiAgICAgIChsZXQgKCh0b3AgMikpCiAgICAgICAgKHVubGVz cyAob3JnLXJlZ2lvbi1hY3RpdmUtcCkKICAgICAgICAgIChvdXRsaW5lLW1hcmstc3VidHJlZSkp CiAgICAgICAgKHVubGVzcyAobWVtYmVyICJ0aXRsZSIgKG9yZy1nZXQtdGFncykpCiAgICAgICAg ICAoZm9yd2FyZC1saW5lIDEpKQogICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyCiAgICAgICAgIChs ZXQgKChvcmctZXhwb3J0LWh0bWwtdG9wbGV2ZWwtaGxldmVsCiAgICAgICAgICAgICAgICA7O2Fk anVzdCBoIGxldmVsLiAgZml4bWUgd2UgY2FuIGhhcmRjb2RlIHRvcCB0byAxCiAgICAgICAgICAg ICAgICA7O2hlcmUuCiAgICAgICAgICAgICAgICAoKyB0b3AgLTEgKC0gb3JnLWV4cG9ydC1odG1s LXRvcGxldmVsLWhsZXZlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmctcmVkdWNl ZC1sZXZlbCAob3JnLWN1cnJlbnQtbGV2ZWwpKSkpKQogICAgICAgICAgICAgICAob3JnLWV4cG9y dC1oZWFkbGluZS1sZXZlbHMKICAgICAgICAgICAgICAgIDs7YWRqdXN0IHRoZSBwb2ludCBhdCB3 aGljaCBoZWFkbGluZXMgYmVjb21lIGxpc3QKICAgICAgICAgICAgICAgIDs7aXRlbXMuICBvcmcg ZG9lcyB0aGlzIGJ5IGZpbGUgaW5zdGVhZCBvZgogICAgICAgICAgICAgICAgOztyZWdpb24uCiAg ICAgICAgICAgICAgICAoKyAtMQogICAgICAgICAgICAgICAgICAgb3JnLWV4cG9ydC1oZWFkbGlu ZS1sZXZlbHMKICAgICAgICAgICAgICAgICAgIChvcmctcmVkdWNlZC1sZXZlbCAob3JnLWN1cnJl bnQtbGV2ZWwpKSkpCiAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgIDs7dGhlIHVzZXIg Y2FuIHNldCB2YXJpYWJsZXMgZm9yIHRoZSBjb21tb24gY2FzZS4KICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgOzt0byBub3QgZXhwb3J0IGFueXRoaW5nIHdpdGggYSBub24tYmxhbmsg dG9kbyBrdywKICAgICAgICAgICAgICAgOztzZXQgb3JnLWV4cG9ydC13aXRoLXRhc2tzIHRvIG5p bC4gIGkgZG8gdGhpcy4KICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgOztub3RlOiBw cmlvcml0eSBtdXN0IGJlIGFmdGVyIHRvZG8ga3cgZm9yIGV4cG9ydAogICAgICAgICAgICAgICA7 O2FscmVhZHkgbmlsIG9yZy1leHBvcnQtd2l0aC1wcmlvcml0eQogICAgICAgICAgICAgICApCiAg ICAgICAgICAgCiAgICAgICAgICAgOzt3ZSBkbyBvdXIgb3duIGNvcHlpbmcuICBmaXhtZSBob3dl dmVyLCB3ZSBkbyBub3QKICAgICAgICAgICA7O2N1cnJlbnRseSB3cmFwIHdpdGggYW55dGhpbmcg dGhhdCB3ZSB3YW50IHRvIGNvcHksCiAgICAgICAgICAgOztzbyBpbiBwcmluY2lwbGUgd2UgY2Fu IGRlY2lkZSB0byBjb3B5IG9yIG5vdCBoZXJlLAogICAgICAgICAgIDs7YW5kIG5vdCBkbyBhIGNv cHkgYmVsb3cuCiAgICAgICAgICAgOzsobGV0ICgob3JnLWV4cG9ydC1jb3B5LXRvLWtpbGwtcmlu ZyAobm90IG5vY29weSkpKQogICAgICAgICAgIChsZXQgKChvcmctZXhwb3J0LWNvcHktdG8ta2ls bC1yaW5nKSkKICAgICAgICAgICAgIChvcmctZXhwb3J0LXJlZ2lvbi1hcy1odG1sIChyZWdpb24t YmVnaW5uaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2lv bi1lbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7O3NlZW1zIHRvIGVyYXNlLCB3aGljaCB3 ZSB3YW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0LWJ1ZmZl ci1jcmVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7O3RoaXMg c2hvdWxkIHdvcmsgaWYgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7O2lzIGEgKmJ1ZmZlciogYnV0IHNvbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7O21pZ2h0IHByZWZlciBodG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzttb2RlLiAgdGhpcyBkb2VzIG5vdAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7c2F2ZSB0byBhIGZpbGUgdW5sZXNzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzt5b3UgZG8uCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyhvciBidWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhbHBoYS1vcmctYmxvZy1odG1sLWJ1ZmZlcikpKSkpCiAgICAgICAgCiAgICAgICAgOztv cmcgZG9lc24ndCBzZWVtIHRvIGluY2x1ZGUgYSBuZXdsaW5lIGF0IHRoZSBlbmQuICB0aGlzCiAg ICAgICAgOztpcyB1c2VmdWwgZm9yIGRpZmZpbmcgbGl2ZSB3aXRoIG9yZyBjbGVhbmx5LgogICAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAg IAogICAgICAgIDs7KG1lc3NhZ2UgImtpbGwgcmluZyAlcyIgKGxlbmd0aCAoZmlyc3Qga2lsbC1y aW5nKSkpCiAgICAgICAgCiAgICAgICAgKHVubGVzcyBub2NvcHkKICAgICAgICAgIDs7KG1lc3Nh Z2UgIkNvcHlpbmcgdG8ga2lsbCByaW5nIikKICAgICAgICAgIChraWxsLXJpbmctc2F2ZSAocG9p bnQtbWluKSAocG9pbnQtbWF4KSkpKQogICAgICAoc2V0cSBoZWFkZXItbGluZS1mb3JtYXQgImh0 bWwgb3V0cHV0IikKICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgOztyZXR1cm4g dGhpcyBmb3IgcHJvZ3JhbW1hdGljIHVzZQogICAgICAoY3VycmVudC1idWZmZXIpKSkKICA7Oyhz ZXRxIGRlYWN0aXZhdGUtbWFyayB0KQogICkKCihkZWZ1biBhbHBoYS1vcmctYmxvZy1zdWJ0cmVl LXczbSAoKQogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoYnJvd3NlLXVybC1icm93c2VyLWZ1bmN0 aW9uICdhbHBoYS13M20tYnJvd3NlLXVybCkpCiAgICAoYnJvd3NlLXVybC1vZi1idWZmZXIgKGFs cGhhLW9yZy1ibG9nLXN1YnRyZWUgOm5vY29weSB0KSkpKQogIDs7dzNtIHNjcmV3cyB1cCBidWZm ZXIgbGlzdCBvcmRlcmluZy4gIGR1bm5vIGhvdyB0byBmaXggdGhhdAogIDs7ZXhjZXB0IGxpa2Ug dGhpcy4KICA7OyhzYXZlLXdpbmRvdy1leGN1cnNpb24gKHN3aXRjaC10by1idWZmZXIgYikpKSkK KGRlZmNvbnN0IGFscGhhLW9yZy1ibG9nLXRlc3Qtd2lkdGggIjU3MHB4IgogICJUaGUgd2lkdGgg b2YgeW91ciBibG9nIGNvbHVtbiBmb3IgdGVzdGluZy4iKQo7OyhzZXRmIGFscGhhLW9yZy1ibG9n LXRlc3Qtd2lkdGgtc3R5bGUgdCkKOzsoc2V0ZiBhbHBoYS1vcmctYmxvZy10ZXN0LXdpZHRoLXN0 eWxlIG5pbCkKKGRlZnZhciBhbHBoYS1vcmctYmxvZy10ZXN0LXdpZHRoLXN0eWxlIHQpCihkZWZ1 biBhbHBoYS1vcmctYmxvZy1zdWJ0cmVlLWV4dGVybmFsICgpCiAgIkZvcmNlIGV4dGVybmFsIGJy b3dzZXIuCgpTZXQgd2lkdGggdG8gdGVzdCBhIHJlbGF0aXZlbHkgbmFycm93IGNvbHVtbi4KCkN1 cnJlbnRseSBvbmx5IHdvcmtzIG9uIE9TWC4iCjs7OyBUaGlzIGlzIHNvIHRoYXQgeW91IGNhbiB0 ZXN0IGluIGEgYnJvd3NlciB0byBlbXVsYXRlIHRoZQo7OzsgY29sdW1uIHNpemUgeW91IHVzZSBp biB5b3VyIGJsb2cuICBJdCBpcyBub3QgZm9yIGV4cG9ydCB0bwo7OzsgeW91ciBmaW5hbCBwcm9k dWN0LgogIChpbnRlcmFjdGl2ZSkKICAoc2F2ZS13aW5kb3ctZXhjdXJzaW9uCiAgICAoc3dpdGNo LXRvLWJ1ZmZlciAoYWxwaGEtb3JnLWJsb2ctc3VidHJlZSA6bm9jb3B5IHQpKQogIAogICAgOztt YWtlIGEgbmFycm93IGNvbHVtbiBmb3IgdGVzdGluZwogICAgKGdvdG8tY2hhciAocG9pbnQtbWlu KSkKICAgICh3aGVuIGFscGhhLW9yZy1ibG9nLXRlc3Qtd2lkdGgtc3R5bGUKICAgICAgOztmaXgg Zm9vdG5vdGVzIGJ5IGFkZGluZyBhIGhlYWRlciBvciBwcmVhbWJsZSBvciB3aGF0ZXZlci4KICAg ICAgOzt3ZSBjYW4gbW92ZSB0aGlzIGhlYWQgc2VjdGlvbiB0byB0aGUgYmxvZyBleHBvcnQgaWYg d2UKICAgICAgOzt3YW50LCBqdXN0IGhhdmUgdG8gYmUgY2FyZWZ1bCBhcyB0aGVyZSBtaWdodCBh bHJlYWR5IGJlIGEKICAgICAgOztoZWFkIHNlY3Rpb24uICBvayB0byBkbz8KICAgICAgOzsKICAg ICAgOztidXQgdGhpcyBzcGVjaWZpY2FsbHkgaXMgYSBub24tY2Fub25pY2FsIGNvcHkgZm9yCiAg ICAgIDs7dGVzdGluZy4KICAgICAgKGluc2VydCAiCjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj4K PCEtLS8qLS0+PCFbQ0RBVEFbLyo+PCEtLSovCnN1cCB7CiAgZm9udC1zaXplOiAxZXg7CiAgdmVy dGljYWwtYWxpZ246IHN1cGVyOwogIGxpbmUtaGVpZ2h0OiAwOwp9Ci8qXV0+Ki8tLT4KPC9zdHls ZT4KIgogICAgICAgICAgICAgICkpCiAgICA7OyhpbnNlcnQgKGZvcm1hdCAiPGRpdiBzdHlsZT1c ImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogI2ViZGViMjsgd2lkdGg6ICVzO1wiPlxu XG4iCiAgICAoaW5zZXJ0IChmb3JtYXQgIjxkaXYgc3R5bGU9XCJ3aWR0aDogJXM7XCI+XG5cbiIK ICAgICAgICAgICAgICAgICAgICBhbHBoYS1vcmctYmxvZy10ZXN0LXdpZHRoKSkKICAgIChnb3Rv LWNoYXIgKHBvaW50LW1heCkpCiAgICAoaW5zZXJ0ICJcblxuPC9kaXY+XG4iKQogICAgOztkb2Vz IGV4dGVybmFsIChicm93c2UtdXJsLW9mLWJ1ZmZlcikKICAgIChsZXQgKChicm93c2UtdXJsLWJy b3dzZXItZnVuY3Rpb24KICAgICAgICAgICA7OycoKCIuIiAuIGhva2EtdzNtLWJyb3dzZS11cmwt bmV3LXRhYi1uZXctYW5kLWdvKSkpKQogICAgICAgICAgIDs7JygoIi4iIC4gYWxwaGEtdzNtLWJy b3dzZS11cmwpKSkpCiAgICAgICAgICAgJygoIi4iIC4gYnJvd3NlLXVybC1kZWZhdWx0LW1hY29z eC1icm93c2VyKSkpKQogICAgICAoYnJvd3NlLXVybC1vZi1idWZmZXIpKSkpCgo7OzsgKGRlZnVu IGFscGhhLXRlc3Qtb3ZlcmxheSAoKQo7OzsgICAoaW50ZXJhY3RpdmUpCjs7OyAgIChsZXQgKChv IChtYWtlLW92ZXJsYXkgKHBvaW50KSAoKyAocG9pbnQpIDYpKSkpCjs7OyAgICAgKG92ZXJsYXkt cHV0IG8gJ2Rpc3BsYXkgKHByb3BlcnRpemUgInRlc3QgMSIgJ2ZhY2UgJ2RpZmYtYWRkZWQpKQo7 OzsgICAgIChwdXNoIG8gYWxwaGEtdGVzdC1vdmVybGF5cykpKQo7OzsgKGRlZnZhciBhbHBoYS10 ZXN0LW92ZXJsYXlzICgpKQoKKGRlZnVuIGFscGhhLW9yZy13YyAoKQogICJSdW4gd2MoMSkgb24g dGhlIGZvcm1hdHRlZCBzdWJ0cmVlIG9yIGFjdGl2ZSByZWdpb24uICBJdCBpcwpmb3JtYXR0ZWQg dXNpbmcgdzNtLCBzbyB0aGUgd29yZCBjb3VudCBpcyBleGFjdC4KCkhvcml6b250YWwgcnVsZXMg YXJlIGNvdW50ZWQgYXMgd29yZHMsIGJlY2F1c2UgdzNtICsgd2Mgc2F5IHRoZXkKYXJlLiIKICAo aW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2F2ZS13aW5kb3ctZXhjdXJzaW9u CiAgICAgIDs7OmJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIip3YyoiKQogICAgICAoc3dpdGNoLXRv LWJ1ZmZlciAoYWxwaGEtb3JnLWJsb2ctc3VidHJlZSA6bm9jb3B5IHQpKQogICAgICAoc2V0cSBo ZWFkZXItbGluZS1mb3JtYXQKICAgICAgICAgICAgInRlbXBvcmFyeSBmb3JtYXR0ZWQgb3V0cHV0 IGZvciB3YyAobm90IGh0bWwpIikKICAgICAgKHczbS1yZWdpb24gMSAoYnVmZmVyLXNpemUpKQog ICAgICA7OyhjYWxsLWludGVyYWN0aXZlbHkgJ2Jyb3dzZS11cmwtb2YtYnVmZmVyKQogICAgICAo c2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkgIndjIikKICAg ICAgOztmb3Igb25jZSB3ZSBkb24ndCB3YW50IHRvIGtlZXAgdGhpcyBhcm91bmQgaW4gdGhlIGJ1 ZmZlcgogICAgICA7O2xpc3QsIHNvIHdlIHVzZSAnbm9yZWNvcmQuCiAgICAgIChzd2l0Y2gtdG8t YnVmZmVyICIqU2hlbGwgQ29tbWFuZCBPdXRwdXQqIiAnbm9yZWNvcmQpCiAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1pbikpCiAgICAgIDs7dGhlIHVybAogICAgICAoZm9yd2FyZC13b3JkIDEpCiAg ICAgIDs7bWFyay13b3JkCiAgICAgIDs7c3RyaW5nLXRvLW51bWJlciAoYnVmZmVyLXN1YnN0cmlu ZyAocmVnaW9uLWJlZ2lubmluZyAuLi4KICAgICAgOzsocHJvZzEgLi4uIChidXJ5LWJ1ZmZlcikK ICAgICAgKHJlYWQgKGN1cnJlbnQtYnVmZmVyKSkpKSkKCihkZWZ1biBhbHBoYS1vcmctYmxvZy1k aWZmICgpCiAgIkNvbXBhcmUgdGhlIGN1cnJlbnQgc3VidHJlZSB0byBpdHMgbGl2ZSB2ZXJzaW9u LgoKVGhpcyBpcyBmb3IgQmxvZ2dlciBibG9ncywgYnV0IHdpdGggYSBtb2RpZmljYXRpb24gdG8g Z2VuZXJhbGl6ZQp0aGUgZXh0cmFjdGlvbiwgaXQgY2FuIHdvcmsgZm9yIGFueSB3ZWIgcGFnZS4K ClRoZSB0cmljayBpcyB0byBleHRyYWN0IHRoZSBwb3N0IGZyb20gdGhlIGxpdmUgdmVyc2lvbi4g IFRoaXMKbWlnaHQgb3IgbWlnaHQgbm90IHdvcmsgd2l0aCB5b3VyIGJsb2cgdGVtcGxhdGUuCiIK ICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChwcm9wZXJ0eSAiTGl2ZS1VUkwiKQogICAgICAgICAo dXJsIChvciAoYWxwaGEtb3JnLWVudHJ5LWdldCBwcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAg KGxldCAoKGdpdmVuIChyZWFkLXN0cmluZyAiTGl2ZSBVUkw6ICIpKSkKICAgICAgICAgICAgICAg ICAgICAob3JnLXNldC1wcm9wZXJ0eSBwcm9wZXJ0eSBnaXZlbikKICAgICAgICAgICAgICAgICAg ICBnaXZlbikpKQogICAgICAgICAobGl2ZSAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAg ICA7O2ZpeG1lCiAgICAgICAgICAgICAgICAgKGFscGhhLXVybCB1cmwpCiAgICAgICAgICAgICAg ICAgOztzb21lIGlzc3VlIHdpdGggZWJ1ZmZlcnMsIGNhbid0IGRlYnVnLiAgdGhpcwogICAgICAg ICAgICAgICAgIDs7c2hvdWxkbid0IHRlY2huaWNhbGx5IGJlIG5lY2Vzc2FyeSBhbmQgaXMgbW9v dAogICAgICAgICAgICAgICAgIDs7YmVjYXVzZSBhbHBoYS1kaWZmLWJ1ZmZlcnMgaXMgc3VwZXJp b3IgdG8KICAgICAgICAgICAgICAgICA7O2VidWZmZXJzIGhlcmUgYW55d2F5LgogICAgICAgICAg ICAgICAgIDs7KGZ1bmRhbWVudGFsLW1vZGUpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAgICA7O2V4dHJhY3Qg KGFjdHVhbGx5IG5hcnJvdyB0bykgdGhlIHBvc3QgaXRzZWxmLgogICAgICAgICAgICAgICAgIChu YXJyb3ctdG8tcmVnaW9uCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgIChzZWFyY2gtZm9yd2FyZAogICAgICAgICAgICAgICAgICAgICAiPGRpdiBjbGFzcz0ncG9z dC1ib2R5IGVudHJ5LWNvbnRlbnQnIikKICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5l IDEpCiAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgKHByb2du CiAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1mb3J3YXJkCiAgICAgICAgICAgICAgICAgICAg IDs7Zml4bWUgdGhpcyBpcyB0b28gbm9uc3BlY2lmaWMuICBpcyB0aGVyZSBhCiAgICAgICAgICAg ICAgICAgICAgIDs7d2F5IHRvIGZpbmQgdGhlIG1hdGNoaW5nIC9kaXY/CiAgICAgICAgICAgICAg ICAgICAgICI8ZGl2IHN0eWxlPSdjbGVhcjogYm90aDsnPjwvZGl2PiIpCiAgICAgICAgICAgICAg ICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgICAgICAgICAgIChwb2ludCkpKQog ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIDs7dGhlcmUgaXMgYSBzdHJhbmdlIHBy b2JsZW0gd2l0aCBeTSBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgOzt3aGVuIHlvdSBkbCB5 b3VyIGJsb2cgc29tZXRpbWVzLiAgaSBkb24ndCBrbm93CiAgICAgICAgICAgICAgICAgOzt3aHkg aXQgaW5zZXJ0cyB0aG9zZS4gIHNob3VsZG4ndCBpdCBkbwogICAgICAgICAgICAgICAgIDs7ZXZl cnl0aGluZyB0aGUgdW5peCB3YXkgaWYgeW91IGFyZSB1c2luZyB1bml4PwogICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgOzthbHBoYS1jbGVhbmRpZmYgc29sdmVzIHRoZSBwcm9i bGVtLCBidXQgaXQKICAgICAgICAgICAgICAgICA7O2xvb2tzIG5pY2VyIGluIGVkaWZmIHRvIHJl bW92ZSB0aGVtCiAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAg ICAgICAgICAgICAod2hpbGUgKHNlYXJjaC1mb3J3YXJkICINIiBuaWwgdCkKICAgICAgICAgICAg ICAgICAgIChyZXBsYWNlLW1hdGNoICIiIG5pbCB0KSkKICAgICAgICAgICAgICAgICAocmVuYW1l LWJ1ZmZlciAiIGxpdmUgYmxvZyIgdCkpKQogICAgICAgICAob3JnIChzYXZlLWV4Y3Vyc2lvbgog ICAgICAgICAgICAgICAgKHN3aXRjaC10by1idWZmZXIgKGFscGhhLW9yZy1ibG9nLXN1YnRyZWUg Om5vY29weSB0KSkKICAgICAgICAgICAgICAgIDs7YWdhaW4gd2l0aCB0aGlzCiAgICAgICAgICAg ICAgICA7OyhmdW5kYW1lbnRhbC1tb2RlKQogICAgICAgICAgICAgICAgKHJlbmFtZS1idWZmZXIg IiBvcmcgYmxvZyIgdCkpKSkKICAgIChhbHBoYS1kaWZmLWJ1ZmZlcnMgbGl2ZSBvcmcpKSkKCjs7 Owo7Ozt0aGlzIG1pZ2h0IGJlIHJlbGV2YW50IHRvIG15IDpoZWFkZXItaWdub3JlOiBhbmQKOzs7 OmhlYWRlci1ibGFuazogaWRlYSwgd2hpY2ggbGV0cyB5b3UgaW5zZXJ0IGhlYWRlcnMgdGhhdCBk b24ndAo7OztleHBvcnQgKGJ1dCB0aGUgYm9keSBleHBvcnRzKSAoaSBhbHNvIHdhbnQgaHlwaGVu cyBpbiB0YWdzKToKOzs7Cjs7OyBmcm9tIHN1dmF5dSwgYnV0IG1vZGlmaWVkCjs7OyAKOzs7IChh ZGQtaG9vayAnb3JnLWV4cG9ydC1wcmVwcm9jZXNzLWhvb2sgJ215LW9yZy1leHBvcnQtcHJlcHJv Y2Vzcy1ob29rKQo7OzsgKGRlZnVuIG15LW9yZy1leHBvcnQtcHJlcHJvY2Vzcy1ob29rICgpCjs7 OyAgIk15IGJhY2tlbmQgc3BlY2lmaWMgZXhwb3J0IHByZXByb2Nlc3MgaG9vay4iCjs7OyAgKHNh dmUtZXhjdXJzaW9uCjs7OyAgICAoaWYgKGVxIG9yZy1leHBvcnQtY3VycmVudC1iYWNrZW5kICds YXRleCkKOzs7ICAgICAgICAobGV0KiAoKHRhZyAiaWdub3JlaGVhZGluZyIpKSAgICAgICAgIDsg VGhhbmtzIHRvIE5pY2sgZm9yIHRoaXMKOzs7ICAgICAgICAgIChvcmctbWFwLWVudHJpZXMgKGxh bWJkYSAoKQo7OzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChw b2ludC1hdC1ib2wpIChwb2ludC1hdC1lb2wpKSkKOzs7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiOiIgdGFnICI6IikpKSkpCgo7Oztmb3IgbmV3IGV4cG9ydGVyOgo7OzsgIytC RUdJTl9TUkMgZW1hY3MtbGlzcAo7OzsgKGRlZnVuIG15LWUtbGF0ZXgtaGVhZGxpbmUgKGhlYWRs aW5lIGNvbnRlbnRzIGluZm8pCjs7OyAgKGlmIChtZW1iZXIgImlnbm9yZWhlYWRpbmciIChvcmct ZWxlbWVudC1wcm9wZXJ0eSA6dGFncyBoZWFkbGluZSkpIGNvbnRlbnRzCjs7OyAgICAob3JnLWUt bGF0ZXgtaGVhZGxpbmUgaGVhZGxpbmUgY29udGVudHMgaW5mbykpKQo7OzsgIytFTkRfU1JDCjs7 OyAKOzs7IFRoZW4geW91IGNhbiBlaXRoZXIgaW5zdGFsbCBpdCBpbiB0aGUgY3VycmVudCBgZS1s YXRleCcgYmFjay1lbmQ6Cjs7OyAKOzs7ICMrQkVHSU5fU1JDIGVtYWNzLWxpc3AKOzs7IChhZGQt dG8tbGlzdCAnb3JnLWUtbGF0ZXgtdHJhbnNsYXRlLXRhYmxlICcoaGVhZGxpbmUgLiBteS1lLWxh dGV4LWhlYWRsaW5lKSkKOzs7ICMrRU5EX1NSQwo7OzsgCjs7OyBPciB5b3UgY2FuIGRlZmluZSB5 b3VyIG93biBiYWNrLWVuZCBmb3IgdGhpcyBwdXJwb3NlOgo7OzsgCjs7OyAjK0JFR0lOX1NSQyBl bWFjcy1saXNwCjs7OyAob3JnLWV4cG9ydC1kZWZpbmUtZGVyaXZlZC1iYWNrZW5kIGRpc3NlcnRh dGlvbiBlLWxhdGV4Cjs7OyAgOnRyYW5zbGF0ZS1hbGlzdCAoKHRlbXBsYXRlIC4gbXktZS1sYXRl eC1oZWFkbGluZSkpKQo7OzsgCjs7OyAoZGVmdW4gb3JnLWRpc3NlcnRhdGlvbi1leHBvcnQtdG8t cGRmCjs7OyAgKCZvcHRpb25hbCBzdWJ0cmVlcCB2aXNpYmxlLW9ubHkgYm9keS1vbmx5IGV4dC1w bGlzdCBwdWItZGlyKQo7OzsgIChpbnRlcmFjdGl2ZSkKOzs7ICAob3JnLWUtbGF0ZXgtY29tcGls ZQo7OzsgICAobGV0ICgob3V0ZmlsZSAob3JnLWV4cG9ydC1vdXRwdXQtZmlsZS1uYW1lICIudGV4 IiBzdWJ0cmVlcCBwdWItZGlyKSkpCjs7OyAgICAgKG9yZy1leHBvcnQtdG8tZmlsZQo7OzsgICAg ICAnZGlzc2VydGF0aW9uIG91dGZpbGUgc3VidHJlZXAgdmlzaWJsZS1vbmx5IGJvZHktb25seSBl eHQtcGxpc3QpKSkpCjs7OyAjK0VORF9TUkMKOzs7IC0tbmljCgood2hlbiAoPSBlbWFjcy1tYWpv ci12ZXJzaW9uIDIyKQogIDs7dGhpcyBpcyByZWRlZmluaXRpb24uICBmaXhtZS4gIGl0IGlzIGZv ciAyMiBiYWNrY29tcGF0aWJpbGl0eQogIDs7Zm9yIGV4cG9ydC4KICAoZGVmY3VzdG9tIHNlbGVj dC1hY3RpdmUtcmVnaW9ucyBuaWwKICAgICJJZiBub24tbmlsLCBhbiBhY3RpdmUgcmVnaW9uIGF1 dG9tYXRpY2FsbHkgYmVjb21lcyB0aGUgd2luZG93IHNlbGVjdGlvbi4iCiAgICA6dHlwZSAnYm9v bGVhbgogICAgOmdyb3VwICdraWxsaW5nCiAgICA6dmVyc2lvbiAiMjMuMSIpCgogIChkZWZ1biBh Y3RpdmF0ZS1tYXJrICgpCiAgICAiQWN0aXZhdGUgdGhlIG1hcmsuIgogICAgKHdoZW4gKG1hcmsg dCkKICAgICAgKHNldHEgbWFyay1hY3RpdmUgdCkKICAgICAgKHVubGVzcyB0cmFuc2llbnQtbWFy ay1tb2RlCiAgICAgICAgKHNldHEgdHJhbnNpZW50LW1hcmstbW9kZSAnbGFtYmRhKSkKICAgICAg KHdoZW4gKGFuZCBzZWxlY3QtYWN0aXZlLXJlZ2lvbnMKICAgICAgICAgICAgICAgICAoZGlzcGxh eS1zZWxlY3Rpb25zLXApKQogICAgICAgICh4LXNldC1zZWxlY3Rpb24gJ1BSSU1BUlkgKGN1cnJl bnQtYnVmZmVyKSkpKSkpCgooZGVmdW4gYWxwaGEtb3JnLWV4cG9ydC1hcy1hc2NpaS10by1idWZm ZXIgKCkKICAiRml4IGEgZmV3IHRoaW5ncy4iCiAgKGludGVyYWN0aXZlKQogIChvcmctbWFyay1z dWJ0cmVlKQogIChvcmctZXhwb3J0LWFzLWFzY2lpLXRvLWJ1ZmZlciBuaWwpCiAgOztuZWVkIHRv IGRvIHRoaXMgaW4gdGhlIGJ1ZmZlciAoZGVhY3RpdmF0ZS1tYXJrKQogIAogIDs7IChnb3RvLWNo YXIgKHBvaW50LW1pbikpCiAgOzsgKGluc2VydCAiPT09IHJlbWVtYmVyIHRvIGNoZWNrIGZvciBj b21tZW50cyIpCiAgCiAgOzsgb3IgdXNlIHRoZSBob29rCiAgKGFscGhhLXJlcGxhY2UtcmUgIl4g ICIgIiIpCiAgOztmb3IgcHJvcG9ydGlvbmFsIGZvbnRzCiAgKGFscGhhLXJlcGxhY2UtcmUgIl49 PT09PSokIiAiPT09PT1cbiIpCiAgOztmb3IgbW9ub3NwYWNlIGZvbnRzCjs7OyAgIChhbHBoYS1y ZXBsYWNlLXJlICJePT09PT0qJCIgIlxcJlxuIikKICAoZGVsZXRlLW90aGVyLXdpbmRvd3MpKQoK Cjs7IGZyb20gbWFpbGluZyBsaXN0Ogo7OyAKOzsgIytiZWdpbl9zcmMgZW1hY3MtbGlzcAo7OyAo ZGVmdW4gbXktZmx1c2gtb2xkLWNvbW1lbnQtc3ludGF4IChiYWNrZW5kKQo7OyAgICh3aGlsZSAo cmUtc2VhcmNoLWZvcndhcmQgIl4jW14gXHQrXSIgbmlsIHQpCjs7ICAgICAod2hlbiAobWVtcSAo b3JnLWVsZW1lbnQtdHlwZSAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKQo7OyAgICAgICAgICAgICAg ICAgJyhwYXJhZ3JhcGggdmVyc2UtYmxvY2spKQo7OyAgICAgICAoZGVsZXRlLXJlZ2lvbiAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pCjs7ICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoZm9y d2FyZC1saW5lKSAocG9pbnQpKSkpKSkKOzsgCjs7IChhZGQtaG9vayAnb3JnLWV4cG9ydC1iZWZv cmUtcGFyc2luZy1ob29rICdteS1mbHVzaC1vbGQtY29tbWVudC1zeW50YXgpCjs7ICMrZW5kX3Ny Ywo7OyAKOzsgbW9kaWZpZWQgZnJvbSBtYWlsaW5nIGxpc3QKKGRlZnVuIG15LW9sZC1jb21tZW50 LXN5bnRheC13YXJuaW5nICgmb3B0aW9uYWwgYmFja2VuZCkKICAobWVzc2FnZSAiY2hlY2tpbmcg Zm9yIG9sZC1zdHlsZSBjb21tZW50cyIpCiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAod2hl biAocmUtc2VhcmNoLWZvcndhcmQgIl4jW14gXHQrXSIgbmlsIHQpCiAgICAob3IgKHllcy1vci1u by1wICJPbGQtc3R5bGUgY29tbWVudCBzeW50YXguICBTdGlsbCBwcm9jZWVkPyAiKQogICAgICAg IChlcnJvciAiRXhwb3J0IGFib3J0ZWQiKSkpKQoKKGRlZnVuIGFscGhhLW9yZy1leHBvcnQtc2V0 dGluZ3MtLW5ldy1leHBvcnRlciAoKQogIDs7bWFrZSBuZXcgZXhwb3J0ZXIgYXZhaWxhYmxlIC0t IG5vdCBjdXJyZW50bHkgdXNpbmcgdGhvdWdoCiAgOzsocmVxdWlyZSAnb3JnLWV4cG9ydCkKICAo ZXZhbC1hZnRlci1sb2FkICdvcmctZXhwb3J0CiAgICAnKHByb2duCiAgICAgIChhZGQtaG9vayAn b3JnLWV4cG9ydC1iZWZvcmUtcGFyc2luZy1ob29rICdteS1vbGQtY29tbWVudC1zeW50YXgtd2Fy bmluZykKICAgICAgCiAgICAgIDs7dGhpcyBmaXhlcyBpbnRlcnByZXRhdGlvbiBvZiA9PT0sIGJ1 dCB3aWxsIGFsc28gdW5mb3J0dW5hdGVseQogICAgICA7O2NoYW5nZSB+IGVtcGhhc2lzIHRvID0g LS0gY291bGQganVzdCBkbyB0aGUgc3RyaW5nIGl0c2VsZiwgYnV0CiAgICAgIDs7dGhlbiBpdCB3 b3VsZCByZW1vdmUgdGhlIGVxdWFscyBzaWducy4KICAgICAgOzsKICAgICAgOzt3aGF0IGkgd291 bGQgbGlrZSBpcyBmb3IgaXQgdG8gbGVhdmUgdGhlIGVxdWFscyBzaWducyBpbiwKICAgICAgOzt3 aXRob3V0IGNoYW5naW5nIH4KICAgICAgKHNldGYgb3JnLWUtYXNjaWktdmVyYmF0aW0tZm9ybWF0 ICI9JXM9IikKOzs7IChkZWZ1biBvcmctZS1hc2NpaS12ZXJiYXRpbSAodmVyYmF0aW0gY29udGVu dHMgaW5mbykKOzs7ICAiUmV0dXJuIGEgVkVSQkFUSU0gb2JqZWN0IGZyb20gT3JnIHRvIEFTQ0lJ Lgo7OzsgQ09OVEVOVFMgaXMgbmlsLiAgSU5GTyBpcyBhIHBsaXN0IGhvbGRpbmcgY29udGV4dHVh bAo7OzsgaW5mb3JtYXRpb24uIgo7OzsgIChsZXQgKChtYXJrZXIgKG9yZy1lbGVtZW50LWdldC1w cm9wZXJ0eSA6bWFya2VyIHZlcmJhdGltKSkKOzs7ICAgICAgICAodmFsdWUgKG9yZy1lbGVtZW50 LWdldC1wcm9wZXJ0eSA6dmFsdWUgdmVyYmF0aW0pKSkKOzs7ICAgIChjb25jYXQgbWFya2VyIHZh bHVlIG1hcmtlcikpKQogICAgICAoc2V0ZiBvcmctZS1hc2NpaS1pbm5lci1tYXJnaW4gMCkKICAg ICAgOzsoc2V0ZiBvcmctZXhwb3J0LXNob3ctdGVtcG9yYXJ5LWV4cG9ydC1idWZmZXIgbmlsKQog ICAgICA7OyhzZXRmIG9yZy1leHBvcnQtc2hvdy10ZW1wb3JhcnktZXhwb3J0LWJ1ZmZlciB0KQog ICAgICA7OyhzZXRmIG9yZy1lLWFzY2lpLXF1b3RlLW1hcmdpbiA0KQogICAgICA7O2ZpbGwtY29s dW1uCiAgICAgIChzZXRmIG9yZy1lLWFzY2lpLXRleHQtd2lkdGggYWxwaGEtZmlsbC1jb2x1bW4t bGV0dGVyKQo7OzsgKHNldGYgb3JnLWUtYXNjaWktdGV4dC13aWR0aCA5OTk5OSkKICAgICAgOztz dXBwb3NlZGx5IHRoaXMgbWFrZXMgbGlzdHMgc2V0IG9mZiBieSAyIGluIG5ldyBleHBvcnRlcgog ICAgICAoYWRkLXRvLWxpc3QgJ29yZy1leHBvcnQtZmlsdGVyLXBsYWluLWxpc3QtZnVuY3Rpb25z CiAgICAgICAobGFtYmRhIChwbGFpbi1saXN0IGJhY2stZW5kKQogICAgICAgICAoaWYgKG5vdCAo ZXEgYmFjay1lbmQgJ2UtYXNjaWkpKQogICAgICAgICAgICAgcGxhaW4tbGlzdAogICAgICAgICAg ICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXiIgIiAgIiBwbGFpbi1saXN0KSkpKSkpKQo7 OzsgWW91IG1heSB3YW50IHRvIHRlc3QgdGhpcyBhZHZpY2UsIHdoaWNoIHdpbGwgY29udmVydCBh IHRhYmxlCjs7OyB0byB0c3YgaWYgIiMrYXR0cl9hc2NpaTogdHN2IiBpcyBzZXQgYWJvdmUgdGhl IHRhYmxlLiAgLS0KOztkb2VzIG5vdCB3b3JrIC0tIGluZmluaXRlIGxvb3AKOzs7IChkZWZhZHZp Y2Ugb3JnLWUtYXNjaWktdGFibGUgKGFyb3VuZCB0YWJsZS10c3YpCjs7OyAgIChpZiAob3IgKG5v dCAobWVtYmVyICJ0c3YiCjs7OyAgICAgICAgICAgICAgICAgICAgICAgIChvcmctZWxlbWVudC1n ZXQtcHJvcGVydHkgOmF0dHJfYXNjaWkgdGFibGUpKSkKOzs7ICAgICAgICAgICAoZXEgKG9yZy1l bGVtZW50LWdldC1wcm9wZXJ0eSA6dHlwZSB0YWJsZSkgJ3RhYmxlLmVsKSkKOzs7ICAgICAgIGFk LWRvLWl0Cjs7OyAgICAgKHNldHEgYWQtcmV0dXJuLXZhbHVlCjs7OyAgICAgICAgICAgKG9yZ3Ri bC10by10c3YKOzs7ICAgICAgICAgICAgKG9yZy10YWJsZS10by1saXNwCjs7OyAgICAgICAgICAg ICAob3JnLWVsZW1lbnQtZ2V0LXByb3BlcnR5IDpyYXctdGFibGUgdGFibGUpKSBuaWwpKSkpCgoo ZGVmdW4gYWxwaGEtb3JnLWV4cG9ydC1zZXR0aW5ncyAoKQogIChhZGQtaG9vayAnb3JnLWV4cG9y dC1wcmVwcm9jZXNzLWhvb2sgJ215LW9sZC1jb21tZW50LXN5bnRheC13YXJuaW5nKQoKICA7Oyhz ZXRxIG9yZy1leHBvcnQtc2hvdy10ZW1wb3JhcnktZXhwb3J0LWJ1ZmZlciBuaWwpCgogIDs7ZG9l cyB0aGlzIG5lZWQgbG9hZGluZyBhZnRlciBvcmctZXhwPwogIChzZXRmIG9yZy1leHBvcnQtaW5p dGlhbC1zY29wZSAnc3VidHJlZSkKCiAgOzsKICA7O3NlY3Rpb24gc2VwYXJhdG9yIGFuZCBlbnRp dGllcwogIDs7CgogIDs7bWFrZSBjaGFuZ2VzIHRoYXQgYWxsb3cgZXhwb3J0IHRvIGFzY2lpIGFu ZCBodG1sIGZyb20gdGhlIHNhbWUKICA7O2RvY3VtZW50IGxvb2sgZ29vZC4KICA7OwogIDs7dGhp cyB2YXJpYWJsZSBpcyBvbmx5IGh0bWwgc28gc2hvdWxkIGJlIHZlcnkgbGltaXRlZCB0byBqdXN0 CiAgOzt0aGUgc3R1ZmYgaSBuZWVkIGluIG9yZGluYXJ5IGFzY2lpIHRvIGJlY29tZSBzcGVjaWFs IGluIGh0bWwuCiAgOztmaXhtZSAvaWYgeW91IHVzZSBsYXRleCB0aGVuIGZpeCBpdCB0aGUgc2Ft ZSB3YXkvLiAgZHVubm8gd2hhdAogIDs7dmFyaWFibGUuICBoYXZlIHRvIGFzayBvbiBtbC4gIG9y IG1heWJlIGl0IHJldmVyc2UgbWF0Y2hlcyB3aXRoCiAgOztlbnRpdGllcyAuCiAgOzsKICA7O3Ro ZSBwb2ludCBpcyBjb252ZW5pZW5jZSAtLSBub3QgaGF2aW5nIHRvIHVzZSBcZW50aXR5CiAgOzso b3JnLWVudGl0aWVzKS4gIGkgZG9uJ3Qga25vdyB3aHkgdGhpcyBkb2Vzbid0IGp1c3QgdHJhbnNs YXRlCiAgOztpbnRvIGVudGl0eSBpbnN0ZWFkLgogIDs7CiAgOztpIHRoaW5rIGkgd2FudCB0byB0 dXJuIG9mZiAtLS0gYW5kIHJlbW92ZSBkdXBsaWNhdGVzIGhlcmUuCiAgOzttb3N0IHRoaW5ncyBz aG91bGQgYmUgYmFja2VuZC1pbmRlcGVuZGVudCBcZW50aXRpZXMuCiAgOzsKICA7O2UuZy4ganVz dCB1c2UgXG5kYXNoIGZvciBhc2NpaSBhbmQgaHRtbCBhbmQgbGF0ZXgKICA7OwogIDs7SWYgeW91 IG5lZWQgc3VjaCBhIHN5bWJvbCBpbnNpZGUgYSB3b3JkLCB0ZXJtaW5hdGUgaXQgbGlrZQogIDs7 dGhpczogYFxBYWN1dGV7fXN0b3InLiAgLS0gbm90IG15IHN0eWxlIGJ1dCBwb3NzaWJsZQogIChz ZXRmIG9yZy1leHBvcnQtaHRtbC1zcGVjaWFsLXN0cmluZy1yZWdleHBzCiAgICAgICAgYCgKICAg ICAgICAgIDs7cmVtb3ZlIHRoaXMgY29tbWVudCB3aGVuIGZpeCBtYWNyb3MuCiAgICAgICAgICA7 OwogICAgICAgICAgOztvcmcgcmVtb3ZlcyB0aGUgd2hvbGUgbGluZSBhcyBhIGNvbW1lbnQgaWYK ICAgICAgICAgIDs7IythbHBoYS1pbWFnZTogLS0gd2hpY2ggaG9vayB0byB1c2U/ICBjYW4gaXQg c3RpbGwgYmUKICAgICAgICAgIDs7ZG9uZSBiZWZvcmUgbWFjcm9zIGlmIHNvPwogICAgICAgICAg OzsKICAgICAgICAgIDs7aWRlYWwgaGVyZSBpcyAkW2ltYWdlIC4uLl0gYnV0IGNhbm5vdCByZWFs bHkgcGFyc2UKICAgICAgICAgIDs7CiAgICAgICAgICA7O3RoaXMgc2hvdWxkIG5vdCBiZSBpbnNp ZGUgYSBwYXJhZ3JhcGgga2EuICB3aWxsIG5lZWQgdG8KICAgICAgICAgIDs7dXNlIGEgaG9vayBp bnN0ZWFkIGthLgogICAgICAgICAgOzsKICAgICAgICAgIDs7dGhpcyBhY3R1YWxseSBmYWlscy4g IGJlY2F1c2UgbGluayBleHBhbnNpb24gaXMgZG9uZQogICAgICAgICAgOztzb21laG93IGJlZm9y ZSB0aGlzPyAgYW5kIGlzIHRoZXJlZm9yZSBubyBsb25nZXIgb24gdGhlCiAgICAgICAgICA7O2xp bmU/ICBpIGd1ZXNzIGkgaGF2ZSB0byBmaWxlIGJ1ZyByZXBvcnQgb24gbWFjcm9zIGFuZAogICAg ICAgICAgOzt1c2UgbWFjcm9zIGluc3RlYWQgb3IgZG8gdGhpcyBpbiBzb21lIGhvb2suCjs7OyAg ICAgICAgICgiXj09PSB4eXp6eSBpbWFnZSBcXCguKlxcKSQiIC4KOzs7ICAgICAgICAgICIKOzs7 IDxkaXYgXAo7OzsgY2xhc3M9XCJzZXBhcmF0b3JcIiBcCjs7OyBzdHlsZT1cIndpZHRoOiA0MDBw eDsgY2xlYXI6IGJvdGg7IHRleHQtYWxpZ246IGNlbnRlcjtcIj4KOzs7IFxcMQo7OzsgPC9kaXY+ IFwKOzs7ICIpCiAgICAgICAgCiAgICAgICAgICA7O25lZWQgLS0tIGJlZm9yZSAtLSBiZWNhdXNl IGVsc2UgaXQgd2lsbCBiZSBpbnRlcnByZXRlZAogICAgICAgICAgOzthcyAtLS4KICAgICAgICAg IDs7CiAgICAgICAgICA7O2xpa2V3aXNlIHdpdGggXi0tLS0tIGlmIC0tIG9yIC0tLSBhbGxvdyBu ZXdsaW5lLgogICAgICAgICAgOzsKICAgICAgICAgIDs7aSBtaWdodCBhbGxvdyBuZXdsaW5lIGFm dGVyIC0tIG9yIC0tLS4KICAgICAgICAgIDs7CiAgICAgICAgICA7O2lmIGkgZG8sIGl0IGNhdXNl cyBpc3N1ZXMgd2l0aCAtLS0tLSBhbmQgb2Jzb2xldGUgLS0tCiAgICAgICAgICA7O3NlY3Rpb24g c2VwYXJhdG9ycywgYnV0IGRvZXMgbm90IGFsbG93IC0tJCBhZnRlciBhCiAgICAgICAgICA7O3F1 b3RlIChpLmUuIHRvIHF1b3RlIHlvdSBoYXZlIHRvIHNheSB3aG8geW91IGFyZQogICAgICAgICAg OztxdW90aW5nIGV2ZW4gaWYgaXQgaXMgb2J2aW91cykuCiAgICAgICAgICA7OwogICAgICAgICAg Ozt3b3JrYXJvdW5kIGlzIHB1dHRpbmcgLS0tLS0gaGVyZSBleHBsaWNpdGx5IGlmIGFsbG93CiAg ICAgICAgICA7O25ld2xpbmUsIGFuZCBzcGFjZSBhdCBlb2wgaWYgbm90IGFsbG93IG5ld2xpbmUu CiAgICAgICAgICA7OwogICAgICAgICAgOztmaXhtZSBpIG1pZ2h0IHdhbnQgdG8gZXhjbHVkZSAt IGluIGZyb250IG9mIHRoZXNlIHNvCiAgICAgICAgICA7O3RoYXQgbG9uZyBzdHJldGNoZXMgb2Yg LS0gLS0tIC0tLS0gLS0tLS0gLS0tLS0tIGRvIG5vdAogICAgICAgICAgOztnZXQgdHJhbnNsYXRl ZC4KICAgICAgICAgIDs7CiAgICAgICAgICA7O3VubGlrZSBvcmcgXi0tLS0tLCB0aGlzIGVuZHMg dXAgc3Vycm91bmRlZCB3aXRoIDxwPgogICAgICAgICAgKCJeLS0tLS0kIiAuICI8aHIvPiIpICAg ICAgICAgO3NlZSBhbHNvID09PSBiZWxvdwogICAgICAgICAgKCItLS1cXChbXi1dXFx8JFxcKSIg LiAiJm1kYXNoO1xcMSIpCiAgICAgICAgICA7O2RvIGkgd2FudCBub24tZ3JlZWR5IGhlcmU/ICBp ZiBzbyA/ICBhZnRlciB0aGUgXFwpLgo7OzsgICAgICAgICgiXlxcKC4rXFwpLS0tXFwoW14tXVxc fCRcXCkiIC4gIlxcMSZtZGFzaDtcXDIiKQoKICAgICAgICAgIDs7YWxwaGEgLS0gZm9yIG1kYXNo LiAgYWxzbyBpIGFsbG93IG5ld2xpbmUgbm93CiAgICAgICAgICA7OwogICAgICAgICAgOzsgL3Ro aXMgd2lsbCBzY3JldyB1cCBzb21lIHRoaW5ncyAoYXMgd2lsbCB0aGUgZGVmYXVsdCkvCiAgICAg ICAgICA7O2ZvciBleGFtcGxlLCBAPCEtLSBtb3JlIC0tPgogICAgICAgICAgKCItLVxcKFteLV1c XHwkXFwpIiAuICImbWRhc2g7XFwxIikKICAgICAgICAgIDs7YWxwaGEgc2VwYXJhdG9yCiAgICAg ICAgICA7OwogICAgICAgICAgOzthbHRlcm5hdGl2ZTogbWFrZSBhIGhlYWRsaW5lIGZvciBldmVy eSBzZWN0aW9uIGFuZCBkbwogICAgICAgICAgOzs6aGVhZGVyc2VjdGlvbjoKICAgICAgICAgIDs7 CiAgICAgICAgICA7O2ZpeG1lIGNvbnNpZGVyID09PSBvciB+LS0tfiB3aGljaCBhcmUgYXNjaWkK ICAgICAgICAgIDs7PT09IGlzIG15IHRyYWRlbWFyayBpbiBhc2NpaQogICAgICAgICAgOztcbWRh c2hcbWRhc2hcbWRhc2ggaXMgbG9uZyBhbmQgbG9va3Mgbm9uLWNlbnRlcmVkCiAgICAgICAgICAo Il49PT0kIiAuCiAgICAgICAgICAgOztodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRf c3RhbmRhcmRfc3R5bGUuYXNwCiAgICAgICAgICAgOztzYXlzIDsgaXMgYSBzZXBhcmF0b3IgYnV0 IGluIGNzcyBpdCBpcyBhIHRlcm1pbmF0b3IuCiAgICAgICAgICAgOzsKICAgICAgICAgICA7O2kg dGhpbmsgbm8gOyBpbiB0aGUgdGFnIGFuZCBubyB0cmFpbGluZyA7IGluIHRoZSBzdHlsZQogICAg ICAgICAgICI8aHIgd2lkdGg9XCIxMCVcIiBzdHlsZT1cIndpZHRoOjEwJTtjb2xvcjojMDAwO2Jh Y2tncm91bmQtY29sb3I6IzAwMDtoZWlnaHQ6MXB4O2JvcmRlcjpub25lXCIgLz4iKQo7OzsgICAg ICAgICAgIjxociB3aWR0aD1cIjEwJVwiOyBzdHlsZT1cIndpZHRoOjEwJTtjb2xvcjojMDAwO2Jh Y2tncm91bmQtY29sb3I6IzAwMDtoZWlnaHQ6MXB4O2JvcmRlcjpub25lO1wiIC8+IikKICAgICAg ICAgIDs7dGhpcyBjYW4gYmUgZGl2LCBwLCBvciBzcGFuLiAgdGhlIHB1cnBvc2UgaXMgcm91Z2hs eQogICAgICAgICAgOztlcXVpZGlzdGFudCBmcm9tIGFsbCAzIGNvbmNlcHRzLiAgaG93ZXZlciwg aXQgaXNuJ3QgYQogICAgICAgICAgOztwYXJhZ3JhcGgsIHNvIGkgc3RyaWtlIHAgb2ZmLiAgaXQg aGFzIG5vIG5lYXJieSB0ZXh0IHNvCiAgICAgICAgICA7O2kgc3RyaWtlIHNwYW4gb2ZmLgogICAg ICAgICAgOzsKOzs7ICAgICAgICAgIDs7Zml4bWUgZm9udC13ZWlnaHQgbm90d29yawo7OzsgICAg ICAgICAgIjxkaXYgZm9udC13ZWlnaHQ6ZGltOyBhbGlnbj1cImNlbnRlclwiPlxcXFwtLVxcXFwt LVxcXFwtLTwvZGl2PiIpCjs7OyAgICAgICAgICAiPGRpdiBmb250LXdlaWdodDpkaW07IGFsaWdu PVwiY2VudGVyXCI+XFxcXC0tXFxcXC0tXFxcXC0tPC9kaXY+IikKOzs7ICAgICAgICAgKCJePT09 JCIgLiAiPGRpdiBhbGlnbj1cImNlbnRlclwiPi0tLS0tLS0tLTwvZGl2PiIpCiAgICAgICAgICAs QG9yZy1leHBvcnQtaHRtbC1zcGVjaWFsLXN0cmluZy1yZWdleHBzKSkKCiAgKHNldHEgb3JnLWV4 cG9ydC1lbWFpbC1pbmZvIG5pbCkKICAoc2V0cSBvcmctZXhwb3J0LWF1dGhvci1pbmZvIG5pbCkK ICAoc2V0cSBvcmctZXhwb3J0LWNyZWF0b3ItaW5mbyBuaWwpCiAgOztmaXhtZSBjb25maXJtIHRo YXQgdGhpcyBkb2VzIG5vdCB3b3JrIGluIGJsb2dnZXIuICBpZiBpdAogIDs7ZG9lcywgdGhlbiB3 ZSBjYW4gZXhwb3J0IGEgc3R5bGUsIHdoaWNoIGlzIGEgaHVnZSB3aW4uICBzZWUKICA7O215IG1h aWxpbmcgbGlzdCBtZXNzYWdlcyBvbiB0aGUgdG9waWMuCiAgOzsKICA7O2FjdHVhbGx5IGl0IGRv ZXMgbm90IGV4cG9ydCBhbnl3YXkgdW5sZXNzIHlvdSBjYWxsIHVzaW5nIGMtYwogIDs7Yy1lIEgu ICBzbyBpZiBpIHdhbnQgdGhpcyBpIGhhdmUgdG8gY2hhbmdlIGV4cG9ydCB0byBub3QgZG8KICA7 O2JvZHkgb25seSBvciBzb21ldGhpbmcuCiAgOzsKICA7O2J1dCBpdCBkb2VzIHdvcmsgaW4gYmxv Z2dlciBzZWVtaW5nbHkgYXQgbGVhc3QgZm9yIHByZXZpZXcuCiAgOztzbyBpIGNhbiB1c2Ugc3R5 bGVzPyAgYnV0IGl0IGFjdHVhbGx5IG1vdmVzIHRoZSB0aXRsZSBvZiB0aGUKICA7O3dob2xlIGJs b2cgb3ZlciB0byB0aGUgY2VudGVyLgogIDs7Cjs7OyAoc2V0cSBvcmctZXhwb3J0LWh0bWwtcHJl YW1ibGUgdCkKICAoc2V0cSBvcmctZXhwb3J0LWh0bWwtcHJlYW1ibGUgbmlsKQogIChzZXRxIG9y Zy1leHBvcnQtaHRtbC1wb3N0YW1ibGUgbmlsKQoKICAoc2V0ZiBvcmctZXhwb3J0LWhlYWRsaW5l LWxldmVscyAxMCkKCiAgOztpIGhhdmUgbm90IHlldCBmaWd1cmVkIG91dCBob3cgaSB3YW50IGlu bGluZSB0YXNrcyB0byB3b3JrCiAgKHNldGYgb3JnLWlubGluZXRhc2stZXhwb3J0IG5pbCkKCiAg OztidHcgaXQgd291bGQgYmUgbmljZSBmb3IgYmxvZ3MgaWYgd2UgY291bGQgcHV0IHRvYyBhdCB0 aGUgZW5kCiAgOztvZiB0aGUgZG9jdW1lbnQKICA7OwogIDs7Zml4bWUgbWFrZSB0aGlzIGludGVy YWN0aXZlCjs7OyAoc2V0ZiBvcmctZXhwb3J0LXdpdGgtdG9jIHQpCiAgKHNldGYgb3JnLWV4cG9y dC13aXRoLXRvYyBuaWwpCiAgOztpZiBpIGRvIGV4cG9ydCB0b2MgYW5kIGhhdmUgdHMgaW4gdGhl IGhlYWRsaW5lLCBpIHdhbnQgdGhlIHRzCiAgKHNldGYgb3JnLWV4cG9ydC1yZW1vdmUtdGltZXN0 YW1wcy1mcm9tLXRvYyBuaWwpCiAgOzt0aGlzIGxvb2tzIGludGVyZXN0aW5nLCBidXQgaG93IGRv IHlvdSB0ZWxsIHRoZSB1c2VyIGhvdyB0bwogIDs7Z3JhYiB0aGUgYW5jaG9yPyAgaG93IGRvIHlv dSBldmVuIGdyYWIgaXQgeW91cnNlbGY/CiAgOzsKICA7O3RvYyBpcyB0aGUgb25seSByZWFsIHdh eSAtLSB1bmxlc3MgeW91IG1ha2UgdGhpcyBhZGRpdGlvbmFsbHkKICA7O3R1cm4gaGVhZGxpbmVz IGludG8gbGlua3MgdG8gdGhlbXNlbHZlcy4gIHdoaWNoIHdvdWxkIGJlCiAgOztncmVhdC4KICA7 OwogIDs7YXBwYXJlbnRseSB0aGlzIGRlZmF1bHRzIHRvIHRydWUuCiAgOzsKICA7O29yZy1leHBv cnQtaHRtbC1oZWFkbGluZS1hbmNob3ItZm9ybWF0CgogIChzZXRmIG9yZy1leHBvcnQtd2l0aC10 YWdzIG5pbCkKICA7O2kgcHJlZmVyIHRoaXMgdG8gdGhlIG5vZXhwb3J0IHRhZyBiZWNhdXNlIG5v ZXhwb3J0IHNldHMgb3RoZXIKICA7O3RyZWVzIHRvIGV4cG9ydCBieSBkZWZhdWx0IHdpdGggcG9z c2libHkgY29uZnVzaW5nIHNlbWFudGljcy4KICAoc2V0ZiBvcmctZXhwb3J0LXdpdGgtdGFza3Mg bmlsKSAgICAgIDt0aGUgZW50aXJlIHN1YnRyZWUKCiAgOztzdHVmZiB3aGVyZSB0aGUgZGVmYXVs dCBpcyBvayBvciBpbiBwcmFjdGljZSBvazoKICA7O2RlZmF1bHQgKHNldGYgb3JnLWV4cG9ydC13 aXRoLXRpbWVzdGFtcHMgdCkKICA7OyhzZXRmIG9yZy1leHBvcnQtd2l0aC10b2RvLWtleXdvcmRz IG5pbCkgO21vb3QgaWYgbm8gdGFza3MKICA7O2RlZmF1bHQgaXMgd3JvbmcsIGRvZXMgbm90IHNl ZW0gdG8gd29yayBpbiBodG1sLCBpIGRvIG5vdCBuZWVkCiAgOztpdCBpbiBodG1sLiAgc28gaXQg d29ya3MgZmluZS4KICA7OwogIDs7dGhlIHJlYXNvbiBpdCBkb2VzIG5vdCB3b3JrIGlzIHRoYXQg aXQgb25seSB3b3JrcyBpZiB5b3UgZXhwb3J0CiAgOzt1c2luZyBjLWMgYy1lIEEgYW5kIHNpbWls YXIuCiAgOztvcmctZXhwb3J0LXdpdGgtc2VjdGlvbi1udW1iZXJzCgogIDs7dHJ5IHRoaXMgYm90 aCB3YXlzCiAgOzsoc2V0ZiBvcmctZXhwb3J0LWFzY2lpLWxpbmtzLXRvLW5vdGVzIG5pbCkKCiAg Ozt0aGlzIGlzIHBlcmhhcHMgdGhlIG1vc3QgZXJyb3ItcHJvbmUgZXhwb3J0IGZlYXR1cmUuCiAg Ozt1bmRlcnNjb3JlcyBhcmUgY29tbW9uIChidXQgSSBhbHdheXMgcHJlZmVyIGh5cGhlbnMpCiAg KHNldGYgb3JnLWV4cG9ydC13aXRoLXN1Yi1zdXBlcnNjcmlwdHMgbmlsKQoKICA7O2kgZG9uJ3Qg dXNlIHN0cmlrZS10aHJvdWdoCiAgOzt3aGVyZSBpcyByZW1vdmUtZnJvbS1saXN0PwogIChzZXRm IG9yZy1lbXBoYXNpcy1hbGlzdAogICAgICAgIChyZW1vdmUqICIrIiBvcmctZW1waGFzaXMtYWxp c3QKICAgICAgICAgICAgICAgICA6a2V5ICMnY2FyCiAgICAgICAgICAgICAgICAgOnRlc3QgIydl cXVhbCkpKQoKKHdoZW4gKGJvdW5kLWFuZC10cnVlLXAgYWxwaGEtYWxwaGEtcCkKICAoYWxwaGEt b3JnLWV4cG9ydC1zZXR0aW5ncy0tbmV3LWV4cG9ydGVyKQogIChhbHBoYS1vcmctZXhwb3J0LXNl dHRpbmdzKSkKCgoocHJvdmlkZSAnYWxwaGEtb3JnLWV4cG9ydCkK --e89a8fb1eee0e4781c04c8a57f8c--