From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: arthur miller Newsgroups: gmane.emacs.devel Subject: Sv: Sv: Partial wdired (edit just filename at the point) Date: Sat, 20 Mar 2021 11:23:44 +0000 Message-ID: References: , Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_004_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5399"; mail-complaints-to="usenet@ciao.gmane.io" Cc: "emacs-devel@gnu.org" To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Mar 20 12:41:33 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lNZz3-0001JI-4A for ged-emacs-devel@m.gmane-mx.org; Sat, 20 Mar 2021 12:41:33 +0100 Original-Received: from localhost ([::1]:43704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lNZz2-00005F-2d for ged-emacs-devel@m.gmane-mx.org; Sat, 20 Mar 2021 07:41:32 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lNZwT-000832-Bo for emacs-devel@gnu.org; Sat, 20 Mar 2021 07:38:53 -0400 Original-Received: from mail-oln040092071107.outbound.protection.outlook.com ([40.92.71.107]:47824 helo=EUR03-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lNZwP-00041P-KL for emacs-devel@gnu.org; Sat, 20 Mar 2021 07:38:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i0SsF5835v/lXLeZjuLkAJbSY4QYDJ+i9Di3ix+0wUWkZcvBPTVi24fwX9PUpOEU8bnTd+FZ+Vha0q4kUFH6bHFZ+k+tLCvKWGgl5EpgPhU4XVDb+M0aSMZG0m/pNBNaJoAvfi0OpnSrD/Ctn201iFJioVmoRjqlbA9Mia365NNGwkPsyunHwPxLk1115JasSQQLIAfzXeTTKl2FbYgahoiTkfaVFAIXlgPpzp+I3SgUoMTwMSMzvfKq4KQFtI0gQmSIEbOI2yrSpJyjasUejM7DxB522iED3eIIU4K/S9Nq/Uhn1u6BM5q3XqD8e4/KXwK/hEXiMFtz7W6F5UWi0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KbykhJPqFHeVk9RdRNxHpodHUQ4wEInZ0gGZ97EUVDE=; b=S/XO+DV/D8oE+VtDdmJI5An/NOYn2xoZGfiTaJ1a7+tvAofNEAZmc83DF3c+rRq98zSo4UV6ld122WpFKDAMCBjpngFaN7LnJRaRPuEfhijVL2wvu3CpTm/hfmNSi8wP89PuZ4yp37MxTGkM652Fi3YcEJpus9NEX6h/gzFdNdUulP8rJ0SsTCB/bmXZdw3W3FUWBA4d6OFWRsfwbBfxhopgXIB3ZxGTqr18cbQrNIt8KfxmJ/lC6G6IPm6eZa4ME8uK9Q1xODiyYr0ROKq+qCt5xaX8w+dfkDdqcbKCBlaFXfKNHqWBFp+YLlu6upx6sHCEoXW58bdFa6a1S4mptg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KbykhJPqFHeVk9RdRNxHpodHUQ4wEInZ0gGZ97EUVDE=; b=a+l9VtizbsBxBTesPSgL4+YB+1zXkXcrh/nyMJf7S2LIaumah9JvRC/iVZubGHCLCA6Qv5nXltw5jgpNi7AXcOjiUqshwk+Z7DClgQaISsE9M0oMTRbSGz0xFEN8IGLZ9rW9JPYEiEjPgI4PFLipDOzDSOv6kxmOLcvZIpumivUqHlgurAwzagPDSPSbf9km1xYH8Ul919Kr+vCS4SFUC4FDD6qfKAuLvx5uIdnGZi+qvQhdqBid9gIvZeggrA3BU2R5581HQ6sO7UGfdZm0+wPBLUuzfnhgTYBf+/NQtzpuQWkQg0eksJzIZONopuOWGZJ7UIbCn2Ey9AJNItldyQ== Original-Received: from VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::41) by VE1EUR03HT063.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Sat, 20 Mar 2021 11:23:44 +0000 Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com (2a01:111:e400:7e09::48) by VE1EUR03FT011.mail.protection.outlook.com (2a01:111:e400:7e09::134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18 via Frontend Transport; Sat, 20 Mar 2021 11:23:44 +0000 Original-Received: from AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::2103:e705:bc0c:5a8b]) by AM9PR09MB4977.eurprd09.prod.outlook.com ([fe80::2103:e705:bc0c:5a8b%6]) with mapi id 15.20.3955.024; Sat, 20 Mar 2021 11:23:44 +0000 Thread-Topic: Sv: Partial wdired (edit just filename at the point) Thread-Index: AQHXGpFtGHa56l/yskKJgxO4VfpsQKqLggXxgAA63JCAACQik4AA3N58 In-Reply-To: Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: yes x-incomingtopheadermarker: OriginalChecksum:FD23439FAA456C1A090048A96F5035A274E18B57DDB4A2C434F05CEA598C5FF9; UpperCasedChecksum:F4D4FC17FB47889E265B8E1C2B3EFB1C70B64B699EFA261867F14703709FC49E; SizeAsReceived:7813; Count:45 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [xT2n6+XYYo6234l7PTagrd+w1M0x8Olm] x-ms-publictraffictype: Email x-incomingheadercount: 45 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: fd86adde-d858-455d-ab3f-08d8eb929f39 x-ms-traffictypediagnostic: VE1EUR03HT063: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jBlVp8IwCG+k0jjIOTLKsbT0nnfcSx+qyOGRqWbi852T78LvfvBhG+TSaljTjB0ecHK11CZJJt+MaiVEuOfc8T1OJ437fPWKJKg34j9e8ymlCYy8WycH5Bzbyy7pskpqtYTSgl1hR/51Cdza2OaYrBzj0saqt3O7YD09Y6BnAHlx17b6hPOcl/o8dv6NGMBppXzSCqdhv1FLjl8GppwXZL2uKmv42rzUG25naw1x/M+A8vxPfmZCHNUemDNIOS/SNKSzDlGMJgwiJpbAFSuCzxM+/nOJB2Ii7eEPOw9HI2YbKK3oX31TH5xEPBPQKHnCUPyQaXuKjdNTKzyUC8uw7dMxO5XYjAKcx3i7h6Ka6zpU+8MsIfTDq0ZgCrNzLUDHS522wO1lt6l6rJZ34CVStg== x-ms-exchange-antispam-messagedata: kzmXU88jZTEl1hU+xBKQtQiL4Ylh0j8FmwA76wuJ9kEb6IjCdzcNzUphQ9H/0d9sV8fFfm8l7meTDVxeFzDtUvk1w5zDhRpB4uzxJP+uufHOmuO3pvVrjqurD5fL+ultyBow6kVw7qShwQClahWong== x-ms-exchange-transport-forked: True X-OriginatorOrg: live.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT011.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: fd86adde-d858-455d-ab3f-08d8eb929f39 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Mar 2021 11:23:44.1148 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR03HT063 Received-SPF: pass client-ip=40.92.71.107; envelope-from=arthur.miller@live.com; helo=EUR03-DB5-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:266643 Archived-At: --_004_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_ Content-Type: multipart/alternative; boundary="_000_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_" --_000_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Ok. Thanks for the guidance, I really wasn't that introduced into wdired, s= o that last explanation really helped. So here is a suggestion to one strategy: When self-insert-command is called, check if point is in column bounds for permissions. If that is case we check if the line was already processed. If= line has not been processed we call our before change function which will trigge= r processing of the line so that keymap property is properly sett. Finally we= put back the event and let Emacs do it's thing: it will check again on same eve= nt but this time there will be keymap property and wdired-set-bit will be trig= gered. (defun wdired--self-insert () (interactive) (if (wdired--point-at-perms-p) (when (not (get-text-property (line-beginning-position) 'front-sticky)) (wdired--before-change-fn (line-beginning-position) (line-end-positio= n)) (setq unread-command-events (nconc (listify-key-sequence (this-command-keys)) unread-command-events))) (call-interactively 'self-insert-command))) For it to work I had to redirect self-insert-command which manual says agai= nst, but seems to work fine here. No idea if the implementation is the most elegant thing one could come up with, and there is maybe a better way, but this one seems to work. I am not at home, so I can't make a patch, I don't have entire source here so I was just playing with my working file. I have attached it if someone w= ould be nice to test it. Can make a patch early next week if this is acceptable. ________________________________ Fr=E5n: Stefan Monnier Skickat: den 19 mars 2021 22:58 Till: arthur miller Kopia: emacs-devel@gnu.org =C4mne: Re: Sv: Partial wdired (edit just filename at the point) > Yes, of course, I had `wdired-allow-to-change-permissions' set to t; it i= s the pre-requisita. Well, I first tried it "as-is" and was quite perplexed until I saw that I needed to set `wdired-allow-to-change-permissions` before anything would have a chance of working ;-) > Ok, originally permissions flags are preprocessed before change to wdired= is > finalized. So something somewhere in > wdired setup is checking for permission bits? I think. It's simply that the way the edition of permissions works when `wdired-allow-to-change-permissions' is set to t is that wdired places a `keymap` property on those permissions. This way when you hit `x` while point is in that area, it doesn't run `self-insert-command` but `wdired-set-bit` (which edits the buffer manually with inhibit-read-only). But with the new code, that `keymap` property is not added right away, so `x` works if that line has already been processed by our `dired--before-change-fn` but not otherwise, because there's no `keymap` property yet and hence the `x` runs `self-insert-command` rather than `wdired-set-bit`. Stefan --_000_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Ok. Thanks for the guidance, I really wasn't that introduced into wdired, s= o
that last explanation really helped.

So here is a suggestion to one strategy:

When self-insert-command is called, check if point is in column bounds for<= /div>
permissions. If that is case we check if the line was already processed. If= line
has not been processed we call our before change function which will trigge= r
processing of the line so that keymap property is properly sett. Finally we= put
back the event and let Emacs do it's thing: it will check again on same eve= nt
but this time there will be keymap property and wdired-set-bit will be trig= gered.

(defun wdired--self-insert ()
  (interactive)
  (if (wdired--point-at-perms-p)
    (when (not (get-text-property (line-beginning-position) = 'front-sticky))
      (wdired--before-change-fn (line-beginning-positio= n) (line-end-position))
      (setq unread-command-events (nconc (listify-key-s= equence
                    =                      = ; (this-command-keys))
                    =                      = ;unread-command-events)))
  (call-interactively 'self-insert-command)))

For it to work I had to redirect self-insert-command which manual says agai= nst,
but seems to work fine here.

No idea if the implementation is the most elegant thing one could come up
with, and there is maybe a better way, but this one seems to work.

I am not at home, so I can't make a patch, I don't have entire source here<= /div>
so I was just playing with my working file. I have attached it if someone w= ould
be nice to test it. Can make a patch early next week if this is acceptable.=


Fr=E5n: Stefan Monnier <= monnier@iro.umontreal.ca>
Skickat: den 19 mars 2021 22:58
Till: arthur miller <arthur.miller@live.com>
Kopia: emacs-devel@gnu.org <emacs-devel@gnu.org>
=C4mne: Re: Sv: Partial wdired (edit just filename at the point)
 
> Yes, of course, I had `wdired-allow-to-change= -permissions' set to t; it is the pre-requisita.

Well, I first tried it "as-is" and was quite perplexed until I sa= w that
I needed to set `wdired-allow-to-change-permissions` before anything
would have a chance of working ;-)

> Ok, originally permissions flags are preprocessed before change to wdi= red is
> finalized. So something somewhere in
> wdired setup is checking for permission bits? I think.

It's simply that the way the edition of permissions works when
`wdired-allow-to-change-permissions' is set to t is that wdired places
a `keymap` property on those permissions.  This way when you hit `x` while point is in that area, it doesn't run `self-insert-command` but
`wdired-set-bit` (which edits the buffer manually with
inhibit-read-only).

But with the new code, that `keymap` property is not added right away,
so `x` works if that line has already been processed by our
`dired--before-change-fn` but not otherwise, because there's no `keymap` property yet and hence the `x` runs `self-insert-command` rather than
`wdired-set-bit`.


        Stefan

--_000_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_-- --_004_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_ Content-Type: application/octet-stream; name="partial-wdired.el" Content-Description: partial-wdired.el Content-Disposition: attachment; filename="partial-wdired.el"; size=9008; creation-date="Sat, 20 Mar 2021 11:23:11 GMT"; modification-date="Sat, 20 Mar 2021 11:23:43 GMT" Content-Transfer-Encoding: base64 Ozs7IHBhcnRpYWwtd2RpcmVkLmVsIC0tLSAgLSotIGxleGljYWwtYmluZGluZzogdDsgLSotCgo7 OyBDb3B5cmlnaHQgKEMpIDIwMjAgIEFydGh1ciBNaWxsZXIKCjs7IEF1dGhvcjogQXJ0aHVyIE1p bGxlciA8YXJ0aHVyLm1pbGxlckBsaXZlLmNvbT4KOzsgS2V5d29yZHM6IAoKOzsgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCgo7OzsgQ29tbWVudGFyeToKCjs7OyBFbmFibGUgZWRpdGluZyBvZiBmaWxlIG5hbWUgYW5k IHByb3BlcnRpZXMgb25seSBhdCB0aGUgcG9pbnQuCgo7OzsgQ29kZToKCihyZXF1aXJlICd3ZGly ZWQpCgoKKGRlZnZhciB3ZGlyZWQtcGVybS1iZWcpIDs7IENvbHVtbiB3aGVyZSB0aGUgcGVybWlz c2lvbiBiaXRzIHN0YXJ0CihkZWZ2YXIgd2RpcmVkLXBlcm0tZW5kKSA7OyBDb2x1bW4gd2hlcmUg dGhlIHBlcm1pc3Npb24gYml0cyBzdG9wCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gd2RpcmVkLWNo YW5nZS10by13ZGlyZWQtbW9kZSAoKQogICJQdXQgYSBEaXJlZCBidWZmZXIgaW4gV3JpdGFibGUg RGlyZWQgKFdEaXJlZCkgbW9kZS4KXFw8d2RpcmVkLW1vZGUtbWFwPgpJbiBXRGlyZWQgbW9kZSwg eW91IGNhbiBlZGl0IHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlCmJ1ZmZlciwgdGhlIHRh cmdldCBvZiB0aGUgbGlua3MsIGFuZCB0aGUgcGVybWlzc2lvbiBiaXRzIG9mIHRoZQpmaWxlcy4g IEFmdGVyIHR5cGluZyBcXFt3ZGlyZWQtZmluaXNoLWVkaXRdLCBFbWFjcyBtb2RpZmllcyB0aGUg ZmlsZXMgYW5kCmRpcmVjdG9yaWVzIHRvIHJlZmxlY3QgeW91ciBlZGl0cy4KClNlZSBgd2RpcmVk LW1vZGUnLiIKICAoaW50ZXJhY3RpdmUpCiAgKHVubGVzcyAoZGVyaXZlZC1tb2RlLXAgJ2RpcmVk LW1vZGUpCiAgICAoZXJyb3IgIk5vdCBhIERpcmVkIGJ1ZmZlciIpKQogIChzZXRxLWxvY2FsIHdk aXJlZC1vbGQtY29udGVudAogICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nIChwb2ludC1t aW4pIChwb2ludC1tYXgpKSkKICAoc2V0cS1sb2NhbCB3ZGlyZWQtb2xkLW1hcmtzCiAgICAgICAg ICAgICAgKGRpcmVkLXJlbWVtYmVyLW1hcmtzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKICAo c2V0cS1sb2NhbCB3ZGlyZWQtb2xkLXBvaW50IChwb2ludCkpCiAgKHNldHEtbG9jYWwgd2RpcmVk LXBlcm0tYmVnIG5pbCkKICAoc2V0cS1sb2NhbCB3ZGlyZWQtcGVybS1lbmQgbmlsKQogIChzZXRx LWxvY2FsIHF1ZXJ5LXJlcGxhY2Utc2tpcC1yZWFkLW9ubHkgdCkKICAoYWRkLWZ1bmN0aW9uIDph ZnRlci13aGlsZSAobG9jYWwgJ2lzZWFyY2gtZmlsdGVyLXByZWRpY2F0ZSkKICAgICAgICAgICAg ICAgICMnd2RpcmVkLWlzZWFyY2gtZmlsdGVyLXJlYWQtb25seSkKICAodXNlLWxvY2FsLW1hcCB3 ZGlyZWQtbW9kZS1tYXApCiAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpCiAgKHNldHEgYnVmZmVy LXJlYWQtb25seSBuaWwpCiAgKGRpcmVkLXVuYWR2ZXJ0aXNlIGRlZmF1bHQtZGlyZWN0b3J5KQog IChhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAjJ3dkaXJlZC1jaGVjay1raWxsLWJ1ZmZlciBu aWwgdCkKICAoYWRkLWhvb2sgJ2JlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zICMnd2RpcmVkLS1iZWZv cmUtY2hhbmdlLWZuIG5pbCB0KQogIChhZGQtaG9vayAnYWZ0ZXItY2hhbmdlLWZ1bmN0aW9ucyAj J3dkaXJlZC0tcmVzdG9yZS1wcm9wZXJ0aWVzIG5pbCB0KQogIDs7KGFkdmljZS1hZGQgJ3NlbGYt aW5zZXJ0LWNvbW1hbmQgOmFyb3VuZCAjJ3dkaXJlZC0tc2VsZi1pbnNlcnQtYWR2aWNlKQogIChz ZXRxIG1ham9yLW1vZGUgJ3dkaXJlZC1tb2RlKQogIChzZXRxIG1vZGUtbmFtZSAiRWRpdGFibGUg RGlyZWQiKQogIChzZXRxIHJldmVydC1idWZmZXItZnVuY3Rpb24gJ3dkaXJlZC1yZXZlcnQpCiAg KHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCiAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCBuaWwp CiAgKHdkaXJlZC0tY2FsY3VsYXRlLXBlcm1pc3Npb24tY29vcmRzKQogIChkZWZpbmUta2V5IHdk aXJlZC1tb2RlLW1hcCBbcmVtYXAgc2VsZi1pbnNlcnQtY29tbWFuZF0gIyd3ZGlyZWQtLXNlbGYt aW5zZXJ0KQogIChydW4tbW9kZS1ob29rcyAnd2RpcmVkLW1vZGUtaG9vaykKICAobWVzc2FnZSAi JXMiIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cwoJCSAiUHJlc3MgXFxbd2RpcmVkLWZpbmlzaC1l ZGl0XSB3aGVuIGZpbmlzaGVkIFwKb3IgXFxbd2RpcmVkLWFib3J0LWNoYW5nZXNdIHRvIGFib3J0 IGNoYW5nZXMiKSkpCgooZGVmdW4gd2RpcmVkLS1iZWZvcmUtY2hhbmdlLWZuIChiZWcgZW5kKQog IChzYXZlLWV4Y3Vyc2lvbgogICAgOzsgbWFrZSBzdXJlIHRvIHByb2Nlc3MgYXQgbGVhc3QgZW50 aXJlIGxpbmUKICAgIChnb3RvLWNoYXIgYmVnKQogICAgKHNldHEgYmVnIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbikpCiAgICAoZ290by1jaGFyIGVuZCkKICAgIChzZXRxIGVuZCAobGluZS1lbmQt cG9zaXRpb24pKQogICAgCiAgICAod2hpbGUgKDwgYmVnIGVuZCkKICAgICAgKHVubGVzcyAoZ2V0 LXRleHQtcHJvcGVydHkgYmVnICdmcm9udC1zdGlja3kpCiAgICAgICAgKHB1dC10ZXh0LXByb3Bl cnR5IGJlZyAoMSsgYmVnKSAnZnJvbnQtc3RpY2t5IHQpCiAgICAgICAgKHdkaXJlZC0tcHJlcHJv Y2Vzcy1maWxlcyBiZWcgZW5kKQogICAgICAgICh3aGVuIHdkaXJlZC1hbGxvdy10by1jaGFuZ2Ut cGVybWlzc2lvbnMKICAgICAgICAgICh3ZGlyZWQtLXByZXByb2Nlc3MtcGVybXMgYmVnIGVuZCkp CiAgICAgICAgKHdoZW4gKGZib3VuZHAgJ21ha2Utc3ltYm9saWMtbGluaykKICAgICAgICAgICh3 ZGlyZWQtLXByZXByb2Nlc3Mtc3ltbGlua3MgYmVnIGVuZCkpKQogICAgICAoZm9yd2FyZC1saW5l KQogICAgICAoc2V0cSBiZWcgKHBvaW50KSkpCiAgICA7OyBpcyB0aGlzIGdvb2QgZW5vdWdoPyBh c3N1bWVzIG5vIGV4dHJhIHdoaXRlIGxpbmVzIGZyb20gZGlyZWQKICAgIChwdXQtdGV4dC1wcm9w ZXJ0eSAoMS0gKHBvaW50LW1heCkpIChwb2ludC1tYXgpICdyZWFkLW9ubHkgdCkpKQoKKGRlZnVu IHdkaXJlZC0tY2FsY3VsYXRlLXBlcm1pc3Npb24tY29vcmRzICgpCiAgKHNhdmUtZXhjdXJzaW9u CiAgICAobGV0IChiZWcgZW5kKQogICAgICA7OyBsZXRzIGZpbmQgb25lIGNvbHVtbiB3aXRoIHBl cm1pc3Npb25zCiAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBkaXJlZC1yZS1wZXJtcyAocG9pbnQt bWF4KSAnZW9iKQogICAgICAoc2V0cSBiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgKHNl dHEgZW5kIChtYXRjaC1lbmQgMCkpCiAgICAgIDs7ICJ0cmFuc2Zvcm0iIGJ1ZmZlciBwb3NpdGlv bnMgdG8gY29sdW1ucwogICAgICAoc2V0cS1sb2NhbCB3ZGlyZWQtcGVybS1iZWcgKC0gYmVnIChs aW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKQogICAgICAoc2V0cS1sb2NhbCB3ZGlyZWQtcGVybS1l bmQgKC0gZW5kIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkpKQoKKGRlZnVuIHdkaXJlZC0t cG9pbnQtYXQtcGVybXMtcCAoKQogICJUcnVlIGlmIHBvaW50IGlzIGluIGEgY29sdW1uIGJldHdl ZW4gcGVybWlzc2lvbiB0ZXh0IHN0YXJ0IGFuZCBlbmQuIgogIChsZXQgKChiZWcgKC0gKHBvaW50 KSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkKICAgICAgICAoZW5kICgtIChwb2ludCkgKGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpKQogICAgKGFuZCAoPj0gYmVnIHdkaXJlZC1wZXJtLWJl ZykgKDw9IGVuZCB3ZGlyZWQtcGVybS1lbmQpKSkpCgooZGVmdW4gd2RpcmVkLS1zZWxmLWluc2Vy dCAoKQogIChpbnRlcmFjdGl2ZSkKICAoaWYgKHdkaXJlZC0tcG9pbnQtYXQtcGVybXMtcCkKICAg ICh3aGVuIChub3QgKGdldC10ZXh0LXByb3BlcnR5IChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikg J2Zyb250LXN0aWNreSkpCiAgICAgICh3ZGlyZWQtLWJlZm9yZS1jaGFuZ2UtZm4gKGxpbmUtYmVn aW5uaW5nLXBvc2l0aW9uKSAobGluZS1lbmQtcG9zaXRpb24pKQogICAgICAoc2V0cSB1bnJlYWQt Y29tbWFuZC1ldmVudHMgKG5jb25jIChsaXN0aWZ5LWtleS1zZXF1ZW5jZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy1jb21tYW5kLWtleXMpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucmVhZC1jb21tYW5kLWV2ZW50cykp KQogIChjYWxsLWludGVyYWN0aXZlbHkgJ3NlbGYtaW5zZXJ0LWNvbW1hbmQpKSkKCjs7IFByb3Rl Y3QgdGhlIGJ1ZmZlciBzbyBvbmx5IHRoZSBmaWxlbmFtZXMgY2FuIGJlIGNoYW5nZWQsIGFuZCBw dXQKOzsgcHJvcGVydGllcyBzbyBmaWxlbmFtZXMgKG9sZCBhbmQgbmV3KSBjYW4gYmUgZWFzaWx5 IGZvdW5kLgooZGVmdW4gd2RpcmVkLS1wcmVwcm9jZXNzLWZpbGVzIChiZWcgZW5kKQogIChzYXZl LWV4Y3Vyc2lvbgogICAgKHdpdGgtc2lsZW50LW1vZGlmaWNhdGlvbnMKICAgICAgKGdvdG8tY2hh ciBiZWcpCiAgICAgIChsZXQgKCh1c2VkLUYgKGRpcmVkLWNoZWNrLXN3aXRjaGVzIGRpcmVkLWFj dHVhbC1zd2l0Y2hlcyAiRiIgImNsYXNzaWZ5IikpCgkgICAgZmlsZW5hbWUpCgkoc2V0cSBmaWxl bmFtZSAoZGlyZWQtZ2V0LWZpbGVuYW1lIG5pbCB0KSkKICAgICAgICAod2hlbiAoYW5kIGZpbGVu YW1lCgkJICAgKG5vdCAobWVtYmVyIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGVuYW1lKSAn KCIuIiAiLi4iKSkpKQoJICAoZGlyZWQtbW92ZS10by1maWxlbmFtZSkKCSAgOzsgVGhlIHJlYXIt bm9uc3RpY2t5IHByb3BlcnR5IGJlbG93IHNoYWxsIGVuc3VyZSB0aGF0IHRleHQgcHJlY2VkaW5n CgkgIDs7IHRoZSBmaWxlbmFtZSBjYW4ndCBiZSBtb2RpZmllZC4KCSAgKGFkZC10ZXh0LXByb3Bl cnRpZXMKCSAgICgxLSAocG9pbnQpKSAocG9pbnQpIGAob2xkLW5hbWUgLGZpbGVuYW1lIHJlYXIt bm9uc3RpY2t5IChyZWFkLW9ubHkpKSkKCSAgKHB1dC10ZXh0LXByb3BlcnR5IGJlZyAocG9pbnQp ICdyZWFkLW9ubHkgdCkKICAgICAgICAgIChkaXJlZC1tb3ZlLXRvLWVuZC1vZi1maWxlbmFtZSB0 KQoJICAocHV0LXRleHQtcHJvcGVydHkgKHBvaW50KSAoMSsgKHBvaW50KSkgJ2VuZC1uYW1lIHQp KQogICAgICAgICh3aGVuIChhbmQgdXNlZC1GIChsb29raW5nLWF0ICJbKi9AfD0+XSQiKSkgKGZv cndhcmQtY2hhcikpCiAgICAgICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAg ICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQKICAgICAgICAgICAgICAgICAgICAgIGRpcmVkLXBl cm1pc3Npb24tZmxhZ3MtcmVnZXhwIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAobG9va2lu Zy1hdCAibCIpCiAgICAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiIC0+ICIgKGxp bmUtZW5kLXBvc2l0aW9uKSB0KSkpCiAgICAgICAgICAoZ290by1jaGFyIChsaW5lLWVuZC1wb3Np dGlvbikpKSkpKSkKCjs7IFB1dCB0aGUgbmVlZGVkIHByb3BlcnRpZXMgdG8gYWxsb3cgdGhlIHVz ZXIgdG8gY2hhbmdlIGxpbmtzJyB0YXJnZXRzCihkZWZ1biB3ZGlyZWQtLXByZXByb2Nlc3Mtc3lt bGlua3MgKGJlZyBlbmQpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAod2l0aC1zaWxlbnQtbW9kaWZp Y2F0aW9ucwogICAgICAoZ290by1jaGFyIGJlZykKICAgICAgKHdoZW4gKGxvb2tpbmctYXQgZGly ZWQtcmUtc3ltKQogICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiIC0+IFxcKC4qXFwpJCIpCgko cHV0LXRleHQtcHJvcGVydHkgKDEtIChtYXRjaC1iZWdpbm5pbmcgMSkpCgkJCSAgIChtYXRjaC1i ZWdpbm5pbmcgMSkgJ29sZC1saW5rCgkJCSAgIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAx KSkKICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgKG1hdGNoLWVuZCAxKSAoMSsgKG1hdGNoLWVu ZCAxKSkgJ2VuZC1saW5rIHQpCiAgICAgICAgKHVubGVzcyB3ZGlyZWQtYWxsb3ctdG8tcmVkaXJl Y3QtbGlua3MKICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAobWF0Y2gtYmVnaW5uaW5nIDAp CgkJCSAgICAgKG1hdGNoLWVuZCAxKSAncmVhZC1vbmx5IHQpKSkpKSkKCihkZWZ1biB3ZGlyZWQt LXByZXByb2Nlc3MtcGVybXMgKGJlZyBlbmQpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAod2l0aC1z aWxlbnQtbW9kaWZpY2F0aW9ucwogICAgICAgIChzZXRxLWxvY2FsIHdkaXJlZC1jb2wtcGVybSBu aWwpCiAgICAgICAgKGdvdG8tY2hhciBiZWcpCgkgICh3aGVuIChhbmQgKG5vdCAobG9va2luZy1h dCBkaXJlZC1yZS1zeW0pKQoJCSAgICAgKHdkaXJlZC1nZXQtZmlsZW5hbWUpCgkJICAgICAocmUt c2VhcmNoLWZvcndhcmQgZGlyZWQtcmUtcGVybXMKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikgJ2VvbCkpCgkgICAgKGxldCAoKGJlZ2lu IChtYXRjaC1iZWdpbm5pbmcgMCkpCgkJICAoZW5kIChtYXRjaC1lbmQgMCkpKQoJICAgICAgKHVu bGVzcyB3ZGlyZWQtY29sLXBlcm0KCSAgICAgICAgKHNldHEgd2RpcmVkLWNvbC1wZXJtICgtIChj dXJyZW50LWNvbHVtbikgOSkpKQoJICAgICAgKGlmIChlcSB3ZGlyZWQtYWxsb3ctdG8tY2hhbmdl LXBlcm1pc3Npb25zICdhZHZhbmNlZCkKCQkgIChwcm9nbgoJCSAgICAocHV0LXRleHQtcHJvcGVy dHkgYmVnaW4gZW5kICdyZWFkLW9ubHkgbmlsKQoJCSAgICA7OyBtYWtlIGZpcnN0IHBlcm1pc3Np b24gYml0IHdyaXRhYmxlCgkJICAgIChwdXQtdGV4dC1wcm9wZXJ0eQoJCSAgICAgKDEtIGJlZ2lu KSBiZWdpbiAncmVhci1ub25zdGlja3kgJyhyZWFkLW9ubHkpKSkKCSAgICAgICAgOzsgYXZvaWQg dGhhdCBrZXltYXAgYXBwbGllcyB0byB0ZXh0IGZvbGxvd2luZyBwZXJtaXNzaW9ucwoJICAgICAg ICAoYWRkLXRleHQtcHJvcGVydGllcwoJICAgICAgICAgKDErIGJlZ2luKSBlbmQKCSAgICAgICAg IGAoa2V5bWFwICx3ZGlyZWQtcGVybS1tb2RlLW1hcCByZWFyLW5vbnN0aWNreSAoa2V5bWFwKSkp KQoJICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IGVuZCAoMSsgZW5kKSAnZW5kLXBlcm0gdCkKCSAg ICAgIChwdXQtdGV4dC1wcm9wZXJ0eQoJICAgICAgIGJlZ2luICgxKyBiZWdpbikKICAgICAgICAg ICAgICAgJ29sZC1wZXJtIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAwKSkpKSkpKQoKKGRl ZnVuIHdkaXJlZC1jaGFuZ2UtdG8tZGlyZWQtbW9kZSAoKQogICJDaGFuZ2UgdGhlIG1vZGUgYmFj ayB0byBkaXJlZC4iCiAgKG9yIChlcSBtYWpvci1tb2RlICd3ZGlyZWQtbW9kZSkKICAgICAgKGVy cm9yICJOb3QgYSBXZGlyZWQgYnVmZmVyIikpCiAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQp KQogICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMKICAgICAocG9pbnQtbWluKSAocG9pbnQtbWF4 KQogICAgICcoZnJvbnQtc3RpY2t5IG5pbCByZWFyLW5vbnN0aWNreSBuaWwgcmVhZC1vbmx5IG5p bCBrZXltYXAgbmlsKSkpCiAgKHJlbW92ZS1mdW5jdGlvbiAobG9jYWwgJ2lzZWFyY2gtZmlsdGVy LXByZWRpY2F0ZSkKICAgICAgICAgICAgICAgICAgICMnd2RpcmVkLWlzZWFyY2gtZmlsdGVyLXJl YWQtb25seSkKICAodXNlLWxvY2FsLW1hcCBkaXJlZC1tb2RlLW1hcCkKICAoZm9yY2UtbW9kZS1s aW5lLXVwZGF0ZSkKICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IHQpCiAgKHNldHEgbWFqb3ItbW9k ZSAnZGlyZWQtbW9kZSkKICAoc2V0cSBtb2RlLW5hbWUgIkRpcmVkIikKICAoZGlyZWQtYWR2ZXJ0 aXNlKQogIChyZW1vdmUtaG9vayAna2lsbC1idWZmZXItaG9vayAnd2RpcmVkLWNoZWNrLWtpbGwt YnVmZmVyIHQpCiAgKHJlbW92ZS1ob29rICdiZWZvcmUtY2hhbmdlLWZ1bmN0aW9ucyAnd2RpcmVk LS1iZWZvcmUtY2hhbmdlLWZuIHQpCiAgKHJlbW92ZS1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rp b25zICd3ZGlyZWQtLXJlc3RvcmUtcHJvcGVydGllcyB0KQogIChzZXRxLWxvY2FsIHJldmVydC1i dWZmZXItZnVuY3Rpb24gJ2RpcmVkLXJldmVydCkpCgooZGVmdW4gd2RpcmVkLWFib3J0LWNoYW5n ZXMgKCkKICAiQWJvcnQgY2hhbmdlcyBhbmQgcmV0dXJuIHRvIGRpcmVkIG1vZGUuICAiCiAgKGlu dGVyYWN0aXZlKQogIChyZW1vdmUtaG9vayAnYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMgJ3dkaXJl ZC0tYmVmb3JlLWNoYW5nZS1mbiB0KQogICh3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zCiAgICAo ZXJhc2UtYnVmZmVyKQogICAgKGluc2VydCB3ZGlyZWQtb2xkLWNvbnRlbnQpCiAgICAoZ290by1j aGFyIHdkaXJlZC1vbGQtcG9pbnQpKQogICh3ZGlyZWQtY2hhbmdlLXRvLWRpcmVkLW1vZGUpCiAg KHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCiAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCBuaWwp CiAgKG1lc3NhZ2UgIkNoYW5nZXMgYWJvcnRlZCIpKQoKKHByb3ZpZGUgJ3BhcnRpYWwtd2RpcmVk KQo= --_004_AM9PR09MB4977119233B3A63846C664C596679AM9PR09MB4977eurp_--