From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Samuel Freilich Newsgroups: gmane.emacs.bugs Subject: bug#20774: auto-fill doesn't work properly when first-line prefix differs in adaptive-fill-mode Date: Thu, 24 Aug 2017 11:11:12 -0400 Message-ID: References: <878tibbwcv.fsf@users.sourceforge.net> <87wp5v9bsp.fsf@users.sourceforge.net> <87r2w1aew4.fsf@users.sourceforge.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a113ce37e6df23a0557813e91" X-Trace: blaine.gmane.org 1503587555 3572 195.159.176.226 (24 Aug 2017 15:12:35 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 24 Aug 2017 15:12:35 +0000 (UTC) Cc: 20774@debbugs.gnu.org To: npostavs@users.sourceforge.net Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Aug 24 17:12:30 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dktnr-0008MF-6u for geb-bug-gnu-emacs@m.gmane.org; Thu, 24 Aug 2017 17:12:15 +0200 Original-Received: from localhost ([::1]:48973 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dktnu-0006ue-U1 for geb-bug-gnu-emacs@m.gmane.org; Thu, 24 Aug 2017 11:12:18 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36325) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dktnh-0006qO-U8 for bug-gnu-emacs@gnu.org; Thu, 24 Aug 2017 11:12:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dktne-0006eR-L9 for bug-gnu-emacs@gnu.org; Thu, 24 Aug 2017 11:12:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:44335) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dktne-0006dx-DD for bug-gnu-emacs@gnu.org; Thu, 24 Aug 2017 11:12:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dktne-0002gG-00 for bug-gnu-emacs@gnu.org; Thu, 24 Aug 2017 11:12:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Samuel Freilich Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 24 Aug 2017 15:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20774 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 20774-submit@debbugs.gnu.org id=B20774.150358750210276 (code B ref 20774); Thu, 24 Aug 2017 15:12:01 +0000 Original-Received: (at 20774) by debbugs.gnu.org; 24 Aug 2017 15:11:42 +0000 Original-Received: from localhost ([127.0.0.1]:53016 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dktnJ-0002fg-Ts for submit@debbugs.gnu.org; Thu, 24 Aug 2017 11:11:42 -0400 Original-Received: from mail-oi0-f53.google.com ([209.85.218.53]:33105) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dktnH-0002fP-MX for 20774@debbugs.gnu.org; Thu, 24 Aug 2017 11:11:40 -0400 Original-Received: by mail-oi0-f53.google.com with SMTP id 193so8150802oii.0 for <20774@debbugs.gnu.org>; Thu, 24 Aug 2017 08:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=AT4yxY/nLzxVeuin5lWq4/sIvykVcYDDCYhCN0PK1E0=; b=QwQxnR0Igd0EOfx4wRW5rL3NXFIO1xlUoYRNjoVHdiPcFw04jhznDSjX04jYuzmqfO I9Bwz3mFiDbg9LzlekUjxA3l4kmlxuWSo8RAPsyr4mrrdkOoco8XjOfaUbq0N4o1evaJ /s6HdYuHCregF/vlN7hFbRMOergHXFdrhgM1NlI1MuWwiM4xEof6VkAagLAhtUG2N7QR OnfNEusD7avj7qg3LNOynSn4Nc7CO3s+9p2P9eEx6f4lRtKw7Zhbemi3hrERIP2Tbp30 FieMRuhF3V5S6tZ62D6P6vfmuwRlLeFHLaor5MuEf2N09xUGyrYR2fGNw7x5jRBM0yUZ I2Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=AT4yxY/nLzxVeuin5lWq4/sIvykVcYDDCYhCN0PK1E0=; b=T1x2ZY5D2VJRKhQIlojo1z6g3/QK6nBSnIQ7SlTQ+cRmnrAOnuTAeFCSsTVI5OSP6k 239lAEy3i81LHGyt87r+kup5tqBW/0cBx3kEmySUwzc9xYnN8SGfdjq+Non2locYj7+Z tNWybHnlze2sok4Mfcnn9pXy/sJe2LLOJp956Ces1fU14NkASOPQl+GFORsQJ193us2P t4Njn25kwLBibFshipXW5P/MuCPF84sxzB2jkp0ITUzo8xt6AbfvMdF/cS9VI9Z9vxMY Co8AU0X+jJEtPP1HhI5Sucj6K5NiGqtaxWC+/BOJeaqlOEsa3WNciUMSZ4bBCFR5JADs oEXA== X-Gm-Message-State: AHYfb5jpk8rt6PS0LYPfhlNWrHR8TAPrwmqWIAvgu1MJFoQeNzCvrxbe T3iej8N7V1bLRBvFx8oJuFAIF5V/aU3S X-Google-Smtp-Source: ADKCNb5GVopJ/MVX6L4xAwmX9X3AR7Dp6uv6x3ivLQLFV2Qi/dDWYQ2UzqPwEsiIwKpdC43Wfk06a86YW5nUnIfYwHM= X-Received: by 10.202.235.140 with SMTP id j134mr7977533oih.281.1503587493116; Thu, 24 Aug 2017 08:11:33 -0700 (PDT) Original-Received: by 10.58.43.76 with HTTP; Thu, 24 Aug 2017 08:11:12 -0700 (PDT) In-Reply-To: <87r2w1aew4.fsf@users.sourceforge.net> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:136148 Archived-At: --001a113ce37e6df23a0557813e91 Content-Type: multipart/alternative; boundary="001a113ce37e6df2370557813e8f" --001a113ce37e6df2370557813e8f Content-Type: text/plain; charset="UTF-8" You're right about string-width, since I'm counting number of columns. Fixed that. (Which required me to deal with the fact that fill-prefix can be nil.) Your understanding is correct. My fix avoids do-auto-fill breaking a line only to create a subsequent line that's as long or longer. The previous version avoided that in most cases by refusing to break a line during (or immediately after) the fill-prefix. But that failed to avoid that problem when: * It's breaking the first line of a paragraph * The prefix of that first line doesn't match the fill-prefix for the rest of the paragraph I've attached the fixed version of the patch with a hopefully-improved commit message. On Wed, Aug 23, 2017 at 10:16 PM, wrote: > Samuel Freilich writes: > > > tab-width = 4 seems consistent with how the rest of the file is > formatted. > > I didn't want to change the spacing in lines not touched by my diff. > > Hmm, somehow the code that landed in my buffer looked wrongly indented. > Something got messed up somewhere (possibly by the email system, > possibly during patch application, I've been experimenting with various > forms of automation for that), but since the indentation in your next > patch looks fine there's not really much point in worrying about it. > > > I added tests and a change description, and formatted the patch according > > to the current instructions. > > Thanks! > > > I made the patch a bit more minimal. I pruned the part that dealt with > > adaptive-fill-first-line-regexp didn't work as well as expected, since > > that didn't work as well as expected (it didn't deal with all the > > complexity possible with adaptive-fill-function). The updated version > > at least handles cases where the fill-prefix isn't shorter than the > > first-line prefix. That allowed me to simplify the code quite a bit, > > since that makes the previous logic for skipping the exact fill-prefix > > redundant, fill-move-to-break-point already handles the logic of > > trying to skip at least one word after the start position passed to > > it. Please take another look. > > Your commit message is a bit too focused on the problems of what was > there previously rather than how your new code is correct. This > description in your email is better, but I'm still struggling a bit (I'm > realizing I was probably a bit too superficial previously, there are a > lot of interacting options which makes things tricky). > > If I understand correctly, the previous code would take the fill-prefix > as non-breakable if the current line started with the fill-prefix. Your > new code takes the first N characters of the line as non-breakable > (where N is the length of fill-prefix, should this be based on > string-width instead?). Is that correct (for both adaptive-fill-mode > and otherwise)? If so, please add an explanation of why it's correct to > the commit message. If not, I hope we can elaborate the commit message > until even I can understand what's happening ;) > > (Minor commit message format nitpick: the part explaining the changes to > the function should start with "* lisp/simple.el (do-auto-fill):".) > --001a113ce37e6df2370557813e8f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
You're right about string-width, since I'm countin= g number of columns. Fixed that. (Which required me to deal with the fact t= hat fill-prefix can be nil.)

Your understanding is corre= ct. My fix avoids do-auto-fill breaking a line only to create a subsequent = line that's as long or longer.

The previous ve= rsion avoided that in most cases by refusing to break a line during (or imm= ediately after) the fill-prefix. But that failed to avoid that problem when= :
* It's breaking the first line of a paragraph
* T= he prefix of that first line doesn't match the fill-prefix for the rest= of the paragraph

I've attached the fixed vers= ion of the patch with a hopefully-improved commit message.



On Wed, Aug 23, 2017 at 10:16 PM, <npostavs@users.so= urceforge.net> wrote:
Samuel Freilich <sfr= eilich@google.com> writes:

> tab-width =3D 4 seems consistent with how the rest of the file is form= atted.
> I didn't want to change the spacing in lines not touched by my dif= f.

Hmm, somehow the code that landed in my buffer looked wrongly indent= ed.
Something got messed up somewhere (possibly by the email system,
possibly during patch application, I've been experimenting with various=
forms of automation for that), but since the indentation in your next
patch looks fine there's not really much point in worrying about it.
> I added tests and a change description, and formatted the patch accord= ing
> to the current instructions.

Thanks!

> I made the patch a bit more minimal. I pruned the part that dealt with=
> adaptive-fill-first-line-regexp didn't work as well as expect= ed, since
> that didn't work as well as expected (it didn't deal with all = the
> complexity possible with adaptive-fill-function). The updated version<= br> > at least handles cases where the fill-prefix isn't shorter than th= e
> first-line prefix. That allowed me to simplify the code quite a bit, > since that makes the previous logic for skipping the exact fill-prefix=
> redundant, fill-move-to-break-point already handles the logic of
> trying to skip at least one word after the start position passed to > it. Please take another look.

Your commit message is a bit too focused on the problems of what was=
there previously rather than how your new code is correct.=C2=A0 This
description in your email is better, but I'm still struggling a bit (I&= #39;m
realizing I was probably a bit too superficial previously, there are a
lot of interacting options which makes things tricky).

If I understand correctly, the previous code would take the fill-prefix
as non-breakable if the current line started with the fill-prefix.=C2=A0 Yo= ur
new code takes the first N characters of the line as non-breakable
(where N is the length of fill-prefix, should this be based on
string-width instead?).=C2=A0 Is that correct (for both adaptive-fill-mode<= br> and otherwise)?=C2=A0 If so, please add an explanation of why it's corr= ect to
the commit message.=C2=A0 If not, I hope we can elaborate the commit messag= e
until even I can understand what's happening ;)

(Minor commit message format nitpick: the part explaining the changes to the function should start with "* lisp/simple.el (do-auto-fill):"= .)

--001a113ce37e6df2370557813e8f-- --001a113ce37e6df23a0557813e91 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Do-not-split-line-before-width-of-fill-prefix.patch" Content-Disposition: attachment; filename="0002-Do-not-split-line-before-width-of-fill-prefix.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j6ql3ptr0 RnJvbSA0MmRhMWQ4MDM2N2I3NTE5YjAwNDczMjhhMzdkODQ1ZTc4YWFhMTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW11ZWwgRnJlaWxpY2ggPHNmcmVpbGljaEBnb29nbGUuY29t PgpEYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDEzOjQwOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0g RG8gbm90IHNwbGl0IGxpbmUgYmVmb3JlIHdpZHRoIG9mIGZpbGwtcHJlZml4CgpXaGVuIGF1dG8t ZmlsbGluZyBhIHBhcmFncmFwaCwgZG9uJ3Qgc3BsaXQgYSBsaW5lIGJlZm9yZSB0aGUgd2lkdGgg b2YgdGhlCmZpbGwtcHJlZml4LCBjcmVhdGluZyBhIHN1YnNlcXVlbnQgbGluZSB0aGF0IGlzIGFz IGxvbmcgb3IgbG9uZ2VyIChCdWcjMjA3NzQpLgoqIGxpc3Avc2ltcGxlLmVsIChkby1hdXRvLWZp bGwpOiBPbmx5IGNvbnNpZGVyIGJyZWFrLXBvaW50cyB0aGF0IGFyZSBsYXRlciBpbgp0aGUgbGlu ZSB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgZmlsbC1wcmVmaXguIFRoaXMgaXMgYSBtb3JlIGdlbmVy YWwgc29sdXRpb24KdGhhbiB0aGUgcHJldmlvdXMgbG9naWMsIHdoaWNoIG9ubHkgc2tpcHBlZCBv dmVyIHRoZSBleGFjdCBmaWxsLXByZWZpeC4gVGhlCmZpbGwtcHJlZml4IGRvZXNuJ3QgbmVjZXNz YXJpbHkgbWF0Y2ggdGhlIHByZWZpeCBvZiB0aGUgZmlyc3QgbGluZSBvZiBhCnBhcmFncmFwaCBp biBhZGFwdGl2ZS1maWxsLW1vZGUuCi0tLQogbGlzcC9zaW1wbGUuZWwgICAgICAgICAgICB8IDI5 ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB0ZXN0L2xpc3Avc2ltcGxlLXRlc3RzLmVs IHwgMTEgKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9zaW1wbGUuZWwgYi9saXNwL3NpbXBsZS5l bAppbmRleCAwNzI3MjNjZDY0Li4xNWM3ZjFmOTM1IDEwMDY0NAotLS0gYS9saXNwL3NpbXBsZS5l bAorKysgYi9saXNwL3NpbXBsZS5lbApAQCAtNzE0OCwxOCArNzE0OCwyMCBAQCBkby1hdXRvLWZp bGwKIAkgICAgICAgKHNldHEgZmlsbC1wcmVmaXggcHJlZml4KSkpKQogCiAgICAgICAod2hpbGUg KGFuZCAobm90IGdpdmUtdXApICg+IChjdXJyZW50LWNvbHVtbikgZmMpKQotCTs7IERldGVybWlu ZSB3aGVyZSB0byBzcGxpdCB0aGUgbGluZS4KLQkobGV0KiAoYWZ0ZXItcHJlZml4Ci0JICAgICAg IChmaWxsLXBvaW50Ci0JCShzYXZlLWV4Y3Vyc2lvbgotCQkgIChiZWdpbm5pbmctb2YtbGluZSkK LQkJICAoc2V0cSBhZnRlci1wcmVmaXggKHBvaW50KSkKLQkJICAoYW5kIGZpbGwtcHJlZml4Ci0J CSAgICAgICAobG9va2luZy1hdCAocmVnZXhwLXF1b3RlIGZpbGwtcHJlZml4KSkKLQkJICAgICAg IChzZXRxIGFmdGVyLXByZWZpeCAobWF0Y2gtZW5kIDApKSkKLQkJICAobW92ZS10by1jb2x1bW4g KDErIGZjKSkKLQkJICAoZmlsbC1tb3ZlLXRvLWJyZWFrLXBvaW50IGFmdGVyLXByZWZpeCkKLQkJ ICAocG9pbnQpKSkpCisgICAgICAgIDs7IERldGVybWluZSB3aGVyZSB0byBzcGxpdCB0aGUgbGlu ZS4KKyAgICAgICAgKGxldCAoKGZpbGwtcG9pbnQKKyAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vy c2lvbgorICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCisgICAgICAgICAgICAg ICAgIChsZXQgKChsaW5lLXN0YXJ0IChwb2ludCkpKQorICAgICAgICAgICAgICAgICAgICAobW92 ZS10by1jb2x1bW4gKDErIGZjKSkKKyAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3Qgc3BsaXQg ZWFybGllciBpbiB0aGUgbGluZSB0aGFuIHRoZSBsZW5ndGggb2YgdGhlCisgICAgICAgICAgICAg ICAgICAgIDs7IGZpbGwgcHJlZml4LCBzaW5jZSB0aGUgcmVzdWx0aW5nIGxpbmUgd291bGQgYmUg bG9uZ2VyLgorICAgICAgICAgICAgICAgICAgICAoZmlsbC1tb3ZlLXRvLWJyZWFrLXBvaW50Cisg ICAgICAgICAgICAgICAgICAgICAoaWYgZmlsbC1wcmVmaXgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAobWluIChsaW5lLWVuZC1wb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgrIGxpbmUtc3RhcnQgKHN0cmluZy13aWR0aCBmaWxsLXByZWZpeCkpKQorICAgICAgICAg ICAgICAgICAgICAgICBsaW5lLXN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgKHBvaW50KSkp KSkKIAogCSAgOzsgU2VlIHdoZXRoZXIgdGhlIHBsYWNlIHdlIGZvdW5kIGlzIGFueSBnb29kLgog CSAgKGlmIChzYXZlLWV4Y3Vyc2lvbgpAQCAtNzE2Nyw5ICs3MTY5LDYgQEAgZG8tYXV0by1maWxs CiAJCShvciAoYm9scCkKIAkJICAgIDs7IFRoZXJlIGlzIG5vIHVzZSBicmVha2luZyBhdCBlbmQg b2YgbGluZS4KIAkJICAgIChzYXZlLWV4Y3Vyc2lvbiAoc2tpcC1jaGFycy1mb3J3YXJkICIgIikg KGVvbHApKQotCQkgICAgOzsgSXQgaXMgZnV0aWxlIHRvIHNwbGl0IGF0IHRoZSBlbmQgb2YgdGhl IHByZWZpeAotCQkgICAgOzsgc2luY2Ugd2Ugd291bGQganVzdCBpbnNlcnQgdGhlIHByZWZpeCBh Z2Fpbi4KLQkJICAgIChhbmQgYWZ0ZXItcHJlZml4ICg8PSAocG9pbnQpIGFmdGVyLXByZWZpeCkp CiAJCSAgICA7OyBEb24ndCBzcGxpdCByaWdodCBhZnRlciBhIGNvbW1lbnQgc3RhcnRlcgogCQkg ICAgOzsgc2luY2Ugd2Ugd291bGQganVzdCBtYWtlIGFub3RoZXIgY29tbWVudCBzdGFydGVyLgog CQkgICAgKGFuZCBjb21tZW50LXN0YXJ0LXNraXAKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9zaW1w bGUtdGVzdHMuZWwgYi90ZXN0L2xpc3Avc2ltcGxlLXRlc3RzLmVsCmluZGV4IGFkN2FlZTFkYjEu LmM3MzMwZTQwMzQgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9zaW1wbGUtdGVzdHMuZWwKKysrIGIv dGVzdC9saXNwL3NpbXBsZS10ZXN0cy5lbApAQCAtNDk3LDUgKzQ5NywxNiBAQCBzaW1wbGUtdGVz dC11bmRvLXdpdGgtc3dpdGNoZWQtYnVmZmVyCiAgICAgICAoc2hvdWxkIChlcXVhbCAobGluZS1u dW1iZXItYXQtcG9zIDUpIDMpKQogICAgICAgKHNob3VsZCAoZXF1YWwgKGxpbmUtbnVtYmVyLWF0 LXBvcyA3KSA0KSkpKSkKIAorKGVydC1kZWZ0ZXN0IGF1dG8tZmlsbC1tb2RlLW5vLWJyZWFrLWJl Zm9yZS1sZW5ndGgtb2YtZmlsbC1wcmVmaXggKCkKKyAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAo c2V0cS1sb2NhbCBmaWxsLXByZWZpeCAiICAgIikKKyAgICAoc2V0LWZpbGwtY29sdW1uIDUpCisg ICAgOzsgU2hvdWxkbid0IGJyZWFrIGFmdGVyICdmb28nICgzIGNoYXJhY3RlcnMpIHdoZW4gdGhl IG5leHQKKyAgICA7OyBsaW5lIGlzIGluZGVudGVkID49IHRvIHRoYXQsIHRoYXQgd291ZGxuJ3Qg cmVzdWx0IGluIHNob3J0ZXIKKyAgICA7OyBsaW5lcy4KKyAgICAoaW5zZXJ0ICJmb28gYmFyIikK KyAgICAoZG8tYXV0by1maWxsKQorICAgIChzaG91bGQgKHN0cmluZy1lcXVhbCAoYnVmZmVyLXN0 cmluZykgImZvbyBiYXIiKSkpKQorCiAocHJvdmlkZSAnc2ltcGxlLXRlc3QpCiA7Ozsgc2ltcGxl LXRlc3QuZWwgZW5kcyBoZXJlCi0tIAoyLjE0LjEuMzQyLmc2NDkwNTI1YzU0LWdvb2cKCg== --001a113ce37e6df23a0557813e91--