From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "David De La Harpe Golden" Newsgroups: gmane.emacs.devel Subject: Re: Suggestion: A fringe indicator that shows the last/first line before scrolling Date: Sat, 1 Mar 2008 03:28:46 +0000 Message-ID: <8e24944a0802291928j4544932fqdcbf2f2b52cd4a08@mail.gmail.com> References: <8763w9mhdm.fsf@member.fsf.org> <47C6F9A5.5050406@gmail.com> <8e24944a0802281018v6804526yad1bd02191ede989@mail.gmail.com> <47C6FE9F.1060800@gmail.com> <8e24944a0802281518x19bcbfd5ndf2ce1ca55a77dc@mail.gmail.com> <8e24944a0802281850l28ab99fcrc92f02d0399630aa@mail.gmail.com> <8e24944a0802290957i12765c67y8433cae9e8a8f242@mail.gmail.com> <8e24944a0802291304m281c72efx9e00a8923ace862a@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21367_30271461.1204342126646" X-Trace: ger.gmane.org 1204342141 23571 80.91.229.12 (1 Mar 2008 03:29:01 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 1 Mar 2008 03:29:01 +0000 (UTC) Cc: David O'Toole , "Lennart Borgman \(gmail\)" , emacs-devel@gnu.org To: "Stefan Monnier" , "Tassilo Horn" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Mar 01 04:29:26 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JVIPd-0007zZ-At for ged-emacs-devel@m.gmane.org; Sat, 01 Mar 2008 04:29:25 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JVIP6-0003UF-PW for ged-emacs-devel@m.gmane.org; Fri, 29 Feb 2008 22:28:52 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JVIP2-0003RU-Pg for emacs-devel@gnu.org; Fri, 29 Feb 2008 22:28:48 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JVIP2-0003Q0-5R for emacs-devel@gnu.org; Fri, 29 Feb 2008 22:28:48 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JVIP2-0003Pm-2z for emacs-devel@gnu.org; Fri, 29 Feb 2008 22:28:48 -0500 Original-Received: from wf-out-1314.google.com ([209.85.200.174]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JVIP1-000305-HC for emacs-devel@gnu.org; Fri, 29 Feb 2008 22:28:47 -0500 Original-Received: by wf-out-1314.google.com with SMTP id 29so4819418wff.24 for ; Fri, 29 Feb 2008 19:28:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; bh=kHeJjIWgteAzgTsPKFLbADCUZCNdt6ywrHtvRbXI6G0=; b=JaZe8EeGbRBQCs0cqtEgUfNWa6y9CCxhKPnVmOFCwkzqZkH6Logc+1TIOwdRjvll5EA3Ug/9A4rkjuOrAgNA0maiohfCzq2qVf0bd/8nYoUkvm+E1domRzmNz5JgTEBYfUyWI5rp4QhtCqWfY5KbDb1UYOtwOXLqMtIpmIZnIY4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=ZVGtHA8+psj1U/XjDIJ2uqaag82l2u0bZi1hsul7Ejoqkm3Y4qrTBs9aTywMVog1J30DfXu1+PphVyI+Q7GpVmn91WsmUv6F5y+/17nmpPfSArgqzG2mpzonyTVaef6YBVaHhXzllqlf+JXceQINlnOApgs6VUNoSl/K7kDsG10= Original-Received: by 10.142.107.1 with SMTP id f1mr2097073wfc.10.1204342126662; Fri, 29 Feb 2008 19:28:46 -0800 (PST) Original-Received: by 10.142.111.4 with HTTP; Fri, 29 Feb 2008 19:28:46 -0800 (PST) In-Reply-To: <8e24944a0802291304m281c72efx9e00a8923ace862a@mail.gmail.com> X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:90949 Archived-At: ------=_Part_21367_30271461.1204342126646 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Version 3... "not perfect, but nice enough to use" *** Changes: Added explicit copyright+license comment in case that's an issue. Separate overlay per window. Tracked in weak hash table as it seemed as easy to do it that way. Still just uses two global idle timers, so all the timings of changes are linked . Doesn't seem to matter much for just this show-old-window-pos functionality though - the fringe marks are only intended to be transiently displayed for a couple of seconds as a visual aid anyway, and doesn't really matter much if they linger for slightly off the stated time. Note if you pause too long in the middle of a "scroll gesture" (i.e. sequence of consecutive scrolling commands), then the fringe marks will disappear and restart from where you paused. This is a good reason why this is just not the way to do Martin's scroll-restore point-tracking functionality, of course, but could even be considered a feature rather than a bug in this context. Added a customizable list of commands that warp the old position overlay, the default means that the page-scrolling marks reappear each individual page scroll, which is probably what people want for page-by-page scrolling. This actually warps all the old pos overlays, not just the overlays in the window(s) associated with the command, but again doesn't seem to matter much given transience of the effect. *** still issue: nongui terminals and gui terminals without fringes could use alternate highlighting strategies I guess. Not sure what alternate highlighting strategies are sensible, anything other than fringes seems kinda ugly. ------=_Part_21367_30271461.1204342126646 Content-Type: text/x-emacs-lisp; name=show-old-window-pos.el Content-Transfer-Encoding: base64 X-Attachment-Id: f_fd9m4n9d Content-Disposition: attachment; filename=show-old-window-pos.el Ozs7IHNob3ctb2xkLXdpbmRvdy1wb3MuZWwgLS0tIFNob3cgb2xkIHdpbmRvdyBwb3NpdGlvbiBi cmllZmx5IGFmdGVyIGl0IGNoYW5nZXMuCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDggRGF2aWQgRGUg TGEgSGFycGUgR29sZGVuCgo7OyBBdXRob3I6IERhdmlkIERlIExhIEhhcnBlIEdvbGRlbiA8ZGF2 aWQuZGVsYWhhcnBlLmdvbGRlbkBnbWFpbC5jb20+Cjs7IFZlcnNpb246IDMKOzsgS2V5d29yZHM6 IHNjcm9sbGluZwoKOzsgc2hvdy1vbGQtd2luZG93LXBvcy5lbCBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCAKOzsgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIAo7OyBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiAKOzsgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBzaG93 LW9sZC13aW5kb3ctcG9zLmVsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSAKOzsgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eQo7OyBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCjs7OyBD b21tZW50YXJ5OgoKOzsgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGZyaW5nZSBtYXJrcyB0aGF0IHNo b3cgd2hlcmUgaW4gdGhlIGJ1ZmZlciAKOzsgdGhlIHdpbmRvdyB1c2VkIHRvIGJlIHNob3dpbmcg Zm9yIGEgY291cGxlIG9mICBzZWNvbmRzIHdoZW4gdGhlIAo7OyB3aW5kb3cgcG9zaXRpb24gY2hh bmdlcyB0aHJvdWdoIHNjcm9sbGluZyBldGMuCgo7OyBUaGlzIGlzIGRvbmUgdmlhIHRpbWVycywg YW5kIGlzIG9uIGEgImJlc3QgZWZmb3J0IiBiYXNpcyBvbmx5LgoKOzs7IENvZGU6CgooZGVmZ3Jv dXAgc2hvdy1vbGQtd2luZG93LXBvcyBuaWwKICAiSW5kaWNhdGUgKGluIHRoZSBmcmluZ2UpIHRo ZSBvbGQgd2luZG93IHBvc2l0aW9uIGZvciBhIGJpdCB3aGVuIHNjcm9sbGluZy4iCiAgOnZlcnNp b24gIjIzLjEiCiAgOmdyb3VwICd3aW5kb3dzKQoKKGRlZmZhY2Ugc2hvdy1vbGQtd2luZG93LXBv cy1mcmluZ2UgCiAgJygodCAoOmZvcmVncm91bmQgImRhcmtjeWFuIikpKQogICJGYWNlIGZvciBv bGQgd2luZG93IHBvc2l0aW9uIGZyaW5nZSBtYXJrLiIKICA6Z3JvdXAgJ3Nob3ctb2xkLXdpbmRv dy1wb3MKICA6dmVyc2lvbiAiMjMuMSIpCgooZGVmY3VzdG9tIHNob3ctb2xkLXdpbmRvdy1wb3Mt bGluZ2VyLXRpbWUgMgogICJIb3cgbG9uZyB0aGUgZnJpbmdlIG1hcmtzIHNob3dpbmcgb2xkIHdp bmRvdyBwb3NpdGlvbiBzaG91bGQgYmUgdmlzaWJsZSBmb3IuIgogIDp0eXBlICdpbnRlZ2VyCiAg Omdyb3VwICdzaG93LW9sZC13aW5kb3ctcG9zCiAgOnZlcnNpb24gIjIzLjEiKQoKCihkZWZjdXN0 b20gc2hvdy1vbGQtd2luZG93LXBvcy1lYWNoLXRpbWUtY29tbWFuZHMKICAnKHNjcm9sbC11cCBz Y3JvbGwtZG93biBzY3JvbGwtb3RoZXItd2luZG93IHNjcm9sbC1vdGhlci13aW5kb3ctZG93bikK ICAiV2hhdCBjb21tYW5kcyBzaG91bGQgYWx3YXlzIHNob3cgdGhlIGltbWVkaWF0ZWx5IHByZWNl ZGluZyBvbGQgd2luZG93IHBvc2l0aW9uLgpUeXBpY2FsbHksIG9uZSB3b3VsZCB3YW50IG9ubHkg Y29tbWFuZHMgdGhhdCBjYXVzZSBsYXJnZSBzY3JvbGxzIApvciBvdGhlciB3aW5kb3cgY2hhbmdl cyBsaXN0ZWQgaGVyZS4iCiAgOnR5cGUgJyhyZXBlYXQgc3ltYm9sKQogIDpncm91cCAnc2hvdy1v bGQtd2luZG93LXBvcwogIDp2ZXJzaW9uICIyMy4xIikKCihkZWZ2YXIgc2hvdy1vbGQtd2luZG93 LXBvcy1vdmVybGF5cyAobWFrZS1oYXNoLXRhYmxlIDp3ZWFrbmVzcyAna2V5KSkKCihkZWZ1biBz aG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzLWVuc3VyZS1oYXNoLXRhYmxlICgpCiAgKHVubGVz cyAoaGFzaC10YWJsZS1wIHNob3ctb2xkLXdpbmRvdy1wb3Mtb3ZlcmxheXMpCiAgICAoc2V0cSBz aG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzIChtYWtlLWhhc2gtdGFibGUgOndlYWtuZXNzICdr ZXkpKSkpCgooZGVmdW4gc2hvdy1vbGQtd2luZG93LXBvcy1hZGQtb3ZlcmxheSAod2luZG93KQog IChzaG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzLWVuc3VyZS1oYXNoLXRhYmxlKQogIChsZXQg KChvdmVybGF5IChtYWtlLW92ZXJsYXkgCgkJICAod2luZG93LXN0YXJ0IHdpbmRvdykgCgkJICAo LSAod2luZG93LWVuZCB3aW5kb3cpIDEpIAoJCSAgKHdpbmRvdy1idWZmZXIgd2luZG93KSkpKQog ICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpbmRvdyB3aW5kb3cpCiAgICAocHV0aGFzaCB3aW5k b3cgb3ZlcmxheSBzaG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzKSkpCgooZGVmdW4gc2hvdy1v bGQtd2luZG93LXBvcy1vdmVybGF5cy1zaG93aGlkZSAoKQogIChzaG93LW9sZC13aW5kb3ctcG9z LW92ZXJsYXlzLWVuc3VyZS1oYXNoLXRhYmxlKQogIChtYXBjYXIgKGxhbWJkYSAodmlzaWJsZS1m cmFtZSkKCSAgICAobWFwY2FyIAoJICAgICAobGFtYmRhICh3aW5kb3cpCgkgICAgICAgKGxldCAo KG9sZC1wb3Mtb3ZlcmxheQoJCSAgICAgIChnZXRoYXNoIHdpbmRvdyBzaG93LW9sZC13aW5kb3ct cG9zLW92ZXJsYXlzKSkpCgkJICh1bmxlc3Mgb2xkLXBvcy1vdmVybGF5CgkJICAgKHNob3ctb2xk LXdpbmRvdy1wb3MtYWRkLW92ZXJsYXkgd2luZG93KSkKCQkgKGlmIChlcXVhbCAod2luZG93LXN0 YXJ0IHdpbmRvdykgCgkJCSAgICAob3ZlcmxheS1zdGFydCBvbGQtcG9zLW92ZXJsYXkpKQoJCSAg ICAgKG92ZXJsYXktcHV0IG9sZC1wb3Mtb3ZlcmxheSAnYmVmb3JlLXN0cmluZyBuaWwpCgkJICAg KG92ZXJsYXktcHV0IAoJCSAgICBvbGQtcG9zLW92ZXJsYXkgJ2JlZm9yZS1zdHJpbmcgCgkJICAg IChjb25jYXQKCQkgICAgIChwcm9wZXJ0aXplICJbIiAnZGlzcGxheSAKCQkJCSAobGlzdCAnbGVm dC1mcmluZ2UgJ3RvcC1sZWZ0LWFuZ2xlIAoJCQkJICAgICAgICdzaG93LW9sZC13aW5kb3ctcG9z LWZyaW5nZSkpCgkJICAgICAocHJvcGVydGl6ZSAiWyIgJ2Rpc3BsYXkgCgkJCQkgKGxpc3QgJ3Jp Z2h0LWZyaW5nZSAndG9wLXJpZ2h0LWFuZ2xlIAoJCQkJICAgICAgICdzaG93LW9sZC13aW5kb3ct cG9zLWZyaW5nZSkpKSkpCgkJIChpZiAoZXF1YWwgKC0gKHdpbmRvdy1lbmQgd2luZG93KSAxKSAK CQkJICAgIChvdmVybGF5LWVuZCBvbGQtcG9zLW92ZXJsYXkpKQoJCSAgICAgKG92ZXJsYXktcHV0 IG9sZC1wb3Mtb3ZlcmxheSAnYWZ0ZXItc3RyaW5nIG5pbCkKCQkgICAob3ZlcmxheS1wdXQgCgkJ ICAgIG9sZC1wb3Mtb3ZlcmxheSAnYWZ0ZXItc3RyaW5nIAoJCSAgICAoY29uY2F0CgkJICAgICAo cHJvcGVydGl6ZSAiXSIgJ2Rpc3BsYXkgCgkJCQkgKGxpc3QgJ2xlZnQtZnJpbmdlICdib3R0b20t bGVmdC1hbmdsZSAKCQkJCSAgICAgICAnc2hvdy1vbGQtd2luZG93LXBvcy1mcmluZ2UpKQoJCSAg ICAgKHByb3BlcnRpemUgIl0iICdkaXNwbGF5IAoJCQkJIChsaXN0ICdyaWdodC1mcmluZ2UgCgkJ CQkgICAgICAgJ2JvdHRvbS1yaWdodC1hbmdsZQoJCQkJICAgICAgICdzaG93LW9sZC13aW5kb3ct cG9zLWZyaW5nZSkpKSkpKSkKCSAgICAgKHdpbmRvdy1saXN0IHZpc2libGUtZnJhbWUpKSkKCSAg KHZpc2libGUtZnJhbWUtbGlzdCkpKQoKKGRlZnVuIHNob3ctb2xkLXdpbmRvdy1wb3Mtb3Zlcmxh eXMtdXBkYXRlLXBvcyAoKQogIChzaG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzLWVuc3VyZS1o YXNoLXRhYmxlKQogIChtYXBjYXIgKGxhbWJkYSAodmlzaWJsZS1mcmFtZSkgCgkgICAgKG1hcGNh ciAobGFtYmRhICh3aW5kb3cpIAoJCSAgICAgIChsZXQgKChvbGQtcG9zLW92ZXJsYXkgCgkJCSAg ICAgKGdldGhhc2ggd2luZG93IHNob3ctb2xkLXdpbmRvdy1wb3Mtb3ZlcmxheXMpKSkKCQkJKGlm IG9sZC1wb3Mtb3ZlcmxheQoJCQkgICAgKG1vdmUtb3ZlcmxheSBvbGQtcG9zLW92ZXJsYXkKCQkJ CQkgICh3aW5kb3ctc3RhcnQgd2luZG93KQoJCQkJCSAgKC0gKHdpbmRvdy1lbmQgd2luZG93KSAx KQoJCQkJCSAgKHdpbmRvdy1idWZmZXIgd2luZG93KSkKCQkJICAoc2hvdy1vbGQtd2luZG93LXBv cy1hZGQtb3ZlcmxheSB3aW5kb3cpKSkpCgkJICAgICh3aW5kb3ctbGlzdCB2aXNpYmxlLWZyYW1l KSkpCgkgICh2aXNpYmxlLWZyYW1lLWxpc3QpKQogIChzaG93LW9sZC13aW5kb3ctcG9zLW92ZXJs YXlzLXNob3doaWRlKQogIChyZWRpc3BsYXkpKQoKCSAgICAgCihkZWZ1biBzaG93LW9sZC13aW5k b3ctcG9zLW1heWJlLXJlc2V0LW9sZC1wb3MgKCkKICAiUHJlLWNvbW1hbmQtaG9vayB0aGF0IHJl c2V0cyB0aGUgb2xkIHdpbmRvdyBwb3MgYmVmb3JlIGNlcnRhaW4gY29tbWFuZHMuIgogICh3aGVu IChtZW1xIHRoaXMtY29tbWFuZCBzaG93LW9sZC13aW5kb3ctcG9zLWVhY2gtdGltZS1jb21tYW5k cykKICAgIChzaG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzLXVwZGF0ZS1wb3MpKSkKCgooZGVm aW5lLW1pbm9yLW1vZGUgc2hvdy1vbGQtd2luZG93LXBvcy1tb2RlCiAgIlRvZ2dsZSBzaG93LW9s ZC13aW5kb3ctcG9zLW1vZGUuCgpJbiBzaG93LW9sZC13aW5kb3ctcG9zLW1vZGUsIGlmIHRoZSBm cmluZ2VzIGFyZSBwcmVzZW50LCBmcmluZ2UKbWFya3Mgd2lsbCBzaG93IHRoZSBwb3NpdGlvbiB0 aGUgb2xkIHdpbmRvdyB3YXMgc2hvd2luZyBpbiBpdHMKYnVmZmVyIGZvciBgc2hvdy1vbGQtd2lu ZG93LXBvcy1saW5nZXItdGltZScgc2Vjb25kcyB3aGVuIHRoZSAKd2luZG93IGNoYW5nZXMgcG9z aXRpb24uIgoKICA6Z2xvYmFsIHQKICA6Z3JvdXAgJ3Nob3ctb2xkLXdpbmRvdy1wb3MKICA6aW5p dC12YWx1ZSBuaWwKICA6bGluayAnKGVtYWNzLWNvbW1lbnRhcnktbGluayAic2hvdy1vbGQtd2lu ZG93LXBvcy5lbCIpCiAgKGlmIHNob3ctb2xkLXdpbmRvdy1wb3MtbW9kZQogICAgICAocHJvZ24K CShhZGQtaG9vayAncHJlLWNvbW1hbmQtaG9vayAnc2hvdy1vbGQtd2luZG93LXBvcy1tYXliZS1y ZXNldC1vbGQtcG9zKQoJKHJ1bi13aXRoLWlkbGUtdGltZXIgMCB0ICdzaG93LW9sZC13aW5kb3ct cG9zLW92ZXJsYXlzLXNob3doaWRlKQoJKHJ1bi13aXRoLWlkbGUtdGltZXIgc2hvdy1vbGQtd2lu ZG93LXBvcy1saW5nZXItdGltZQoJCQkgICAgIHQgJ3Nob3ctb2xkLXdpbmRvdy1wb3Mtb3Zlcmxh eXMtdXBkYXRlLXBvcykpCiAgICAoY2FuY2VsLWZ1bmN0aW9uLXRpbWVycyAnc2hvdy1vbGQtd2lu ZG93LXBvcy1vdmVybGF5cy1zaG93aGlkZSkKICAgIChjYW5jZWwtZnVuY3Rpb24tdGltZXJzICdz aG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzLXVwZGF0ZS1wb3MpCiAgICAocmVtb3ZlLWhvb2sg J3ByZS1jb21tYW5kLWhvb2sgJ3Nob3ctb2xkLXdpbmRvdy1wb3MtbWF5YmUtcmVzZXQtb2xkLXBv cykKICAgIDs7IEV4cGxpY2l0bHkgZGVsZXRlIG92ZXJsYXlzLgogICAgKG1hcGhhc2ggKGxhbWJk YSAoa2V5IHZhbCkKCSAgICAgICAoaWYgKG92ZXJsYXlwIHZhbCkKCQkgICAoZGVsZXRlLW92ZXJs YXkgdmFsKSkpCgkgICAgIHNob3ctb2xkLXdpbmRvdy1wb3Mtb3ZlcmxheXMpCiAgICAoc2V0cSBz aG93LW9sZC13aW5kb3ctcG9zLW92ZXJsYXlzIG5pbCkpKQoKKHByb3ZpZGUgJ3Nob3ctb2xkLXdp bmRvdy1wb3MpCgo7Ozsgc2hvdy1vbGQtd2luZG93LXBvcy5lbCBlbmRzIGhlcmUK ------=_Part_21367_30271461.1204342126646--