From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: "francisco.colaco@gmail.com" Newsgroups: gmane.emacs.devel Subject: Re: xdg-directories.el Date: Tue, 6 Sep 2016 23:37:57 +0100 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e014934ace91671053bde720b X-Trace: blaine.gmane.org 1473201573 32560 195.159.176.226 (6 Sep 2016 22:39:33 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 6 Sep 2016 22:39:33 +0000 (UTC) Cc: Emacs developers To: Noam Postavsky Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Sep 07 00:39:29 2016 Return-path: Envelope-to: ged-emacs-devel@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 1bhP1a-0007Q5-UG for ged-emacs-devel@m.gmane.org; Wed, 07 Sep 2016 00:39:27 +0200 Original-Received: from localhost ([::1]:36579 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhP1T-0001Tp-LX for ged-emacs-devel@m.gmane.org; Tue, 06 Sep 2016 18:39:19 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhP0G-0000cE-Fz for emacs-devel@gnu.org; Tue, 06 Sep 2016 18:38:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bhP0D-0005z7-AZ for emacs-devel@gnu.org; Tue, 06 Sep 2016 18:38:03 -0400 Original-Received: from mail-wm0-x22a.google.com ([2a00:1450:400c:c09::22a]:37522) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bhP0C-0005z0-VD for emacs-devel@gnu.org; Tue, 06 Sep 2016 18:38:01 -0400 Original-Received: by mail-wm0-x22a.google.com with SMTP id w12so931580wmf.0 for ; Tue, 06 Sep 2016 15:38:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=c7wMhUY8LSEtGE/x6gNNPx24FsVNyb1PrIWYbeNZGlA=; b=JHhkl7nJb2lqrLqJgo9yw/xvMoFHdEgU0QurkaZpFbSU4mXQqy1Tps1mO5euAewfAP /F1zi/zq795RFW4tp5ye4G8Qi5DN6qOquehe9GB/zB8xM6fY8uIOdA6vig0H/QVvcqo8 kSXq+2gn3bi71GIHKnEn4qdR9IQIM/e4tyYKqdDxfbMUvB6iUajltmyYZPZR1x5DcNEW 3j/aPVjILZymgdZYipLmHLz/KPs6UH8J/hDVMv0HpwyisPzL6MXhW6hl4IE3qjRAzvMx efQ8s7kxz0VfnH4pPyApPknwDrzN/GW1TBn84+8uCJgkWa4WN2xqqjWhEYqrtQR+4Xhy +w6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=c7wMhUY8LSEtGE/x6gNNPx24FsVNyb1PrIWYbeNZGlA=; b=F1B2BXklvuyaIyQNhL5jbeUHqI/fIE+oAipE2KGDdn1BXPt0Vym2uxK0MEDXfob/To 33aGABeL9YgYyeJZ0/tchcMLLeMrsyzumT+MuiPLiWDF8SHcxt/JeYYezJMhnl4cXg8Y FLae8ITa8aPw1tcYOmjt0DX9O2ALAU6ExjM+lXd7FdW4RYuY9rAwF9zb452XK9X81w/o hpnOrB1uTEqdjyS9VMtITFBWtIRjFl4VWhig/JiD0Jl8n+hpxrkhoko3UVIIjno6Ujz3 9u7YPQIxur2n6FxcHd9QyX5TCi/Gfan46wACzOf/dz1TS0N76Dg9TgO92c3M8qwzZfvX I+TA== X-Gm-Message-State: AE9vXwPBHwhDCS69Iv0J+4LLZlZqTsibspM2CTxUAiWm3AVqrYlgn3kV9TSF6LWyyRIVJVx98fhBajG53RGuOA== X-Received: by 10.194.238.170 with SMTP id vl10mr43838841wjc.18.1473201480190; Tue, 06 Sep 2016 15:38:00 -0700 (PDT) Original-Received: by 10.28.30.140 with HTTP; Tue, 6 Sep 2016 15:37:57 -0700 (PDT) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::22a X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:207232 Archived-At: --089e014934ace91671053bde720b Content-Type: multipart/alternative; boundary=089e014934ace91669053bde7209 --089e014934ace91669053bde7209 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Noam, You were right about the bug. When I created the user-emacs--dir libraries, which contained by default the subdirectory "emacs", I forgot to take it from the xdg-get-user-file. Needless to say, I have only remembered of creating the user-emacs--dir variables right before I commited. I have been using the library for months without a flaw. So the bug is now corrected. Thanks for the heads up. About the stability of the specification: according to the XDG Web site, the last version of the specification dates from 2010. That is six years of no modifications. Seems to be pretty stable now. Maybe it is time for Emacs to start the adoption of the XDG Base Dir Spec and separate the files= . A .emacs.d/init.el could be a fallback for user-init-file, as .emacs is today. Also, maybe in Windows the xdg--dir variables could take other values and not the defaults I hardwired. As Windows is really not what I use, the package is pending suggestions of improvement. As to the API, should the locate-user-emacs--file be renamed? locate-user-emacs-file has the NEW-NAME OLD-NAME parameters, and creates unconditionally the directory when OLD-NAME is not passed. Francisco Cola=C3=A7o 2016-09-06 22:49 GMT+01:00 Noam Postavsky : > Last time this was proposed > (https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D583) there was some > skepticism about the stability of such standards. > > On Tue, Sep 6, 2016 at 11:24 AM, francisco.colaco@gmail.com > wrote: > >> (locate-user-emacs-config-file "init.el") > >> "/home/francisco.colaco/.config/emacs/emacs/init.el" > [...] > > ~/.config/emacs/init.el (the result of "(locate-user-emacs-config-file > > "init.el") > > Is the double emacs/emacs/ in the first case a typo? > --089e014934ace91669053bde7209 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Noam,

You were right about the bug.= =C2=A0 When I created the user-emacs-<domain>-dir libraries, which co= ntained by default the subdirectory "emacs", I forgot to take it = from the xdg-get-user-file.=C2=A0 Needless to say, I have only remembered o= f creating the user-emacs-<domain>-dir variables right before I commi= ted.=C2=A0 I have been using the library for months without a flaw.

=
So the bug is now corrected.=C2=A0 Thanks for the heads up.
<= br>
About the stability of the specification: according to the XD= G Web site, the last version of the specification dates from 2010.=C2=A0 Th= at is six years of no modifications.=C2=A0 Seems to be pretty stable now.= =C2=A0 Maybe it is time for Emacs to start the adoption of the XDG Base Dir= Spec and separate the files.

A .emacs.d/init.el could be= a fallback for user-init-file, as .emacs is today.=C2=A0 Also, maybe in Wi= ndows the xdg-<domain>-dir variables could take other values and not = the defaults I hardwired.=C2=A0 As Windows is really not what I use, the pa= ckage is pending suggestions of improvement.

A= s to the API, should the locate-user-emacs-<domain>-file be renamed?= =C2=A0 locate-user-emacs-file has the NEW-NAME OLD-NAME parameters, and cre= ates unconditionally the directory when OLD-NAME is not passed.

=C2=A0 Francisco Cola=C3=A7o

2016-09-06 22:49 GMT+01:00 Noa= m Postavsky <npostavs@users.sourceforge.net>:
Last time this was proposed
(https://debbugs.gnu.org/cgi/bugreport.cgi?b= ug=3D583) there was some
skepticism about the stability of such standards.

On Tue, Sep 6, 2016 at 11:24 AM, francisco.colaco@gmail.com
<francisco.colaco@gmail.co= m> wrote:
>> (locate-user-emacs-config-file "init.el")
>> "/home/francisco.colaco/.config/emacs/emacs/init.el"= ;
[...]
> ~/.config/emacs/init.el (the result of "(locate-= user-emacs-config-file
> "init.el")

Is the double emacs/emacs/ in the first case a typo?

--089e014934ace91669053bde7209-- --089e014934ace91671053bde720b Content-Type: text/x-emacs-lisp; charset=UTF-8; name="xdg-directories.el" Content-Disposition: attachment; filename="xdg-directories.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iss1q5w50 Ozs7IHhkZy1kaXJlY3Rvcmllcy5lbCAtLS0gWERHIGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9uCgo7 OyBDb3B5cmlnaHQgKEMpIDIwMTYgIEZyYW5jaXNjbyBNaWd1ZWwgQ29sYcOnbwoKOzsgQXV0aG9y OiBGcmFuY2lzY28gTWlndWVsIENvbGHDp28gPGZyYW5jaXNjby5jb2xhY29AZ21haWwuY29tPgo7 OyBLZXl3b3JkczogWERHLCBkaXJlY3RvcnksIGNhY2hlLCBjb25maWcKCjs7OyBDb21tZW50YXJ5 Ogo7OzsKOzs7IFhERy1ESVJFQ1RPUklFUyBjb250YWlucyBmdW5jdGlvbnMgdG8gbG9jYXRlIHVz ZXIgRW1hY3MgZmlsZXMsIGluCjs7OyBhY2NvcmRhbmNlIHRvIHRoZSBYREcgQmFzZSBEaXJlY3Rv cnkgU3BlY2lmaWNhdGlvbi4KOzs7Cjs7OyBUaGVyZSBhcmUgZGlmZmVyZW50IGRvbWFpbnMgdG8g dGhlIGZpbGVzLCBhcyB0aGV5IGFyZSBicm9rZW4gaW50bwo7OzsgY29uZmlnLCBkYXRhLCBjYWNo ZSBhbmQgcnVudGltZS4gIFdlIGFkdmlzZSB0aGUgdXNlcnMgb2YgdGhpcwo7OzsgcGFja2FnZSB0 byBsb29rIGF0IHRoZSBhZm9yZW1lbnRpb25lZCBzcGVjaWZpY2F0aW9uIHRvIGxlYXJuIHRoZQo7 OzsgZGlmZmVyZW5jZXMgb2YgdGhlIGRvbWFpbnMuCjs7Owo7OzsgVGhlIGxvY2F0ZS0qIGZ1bmN0 aW9ucyBhcmUgdG8gYmUgdXNlZCBieSBwYWNrYWdlIHdyaXRlcnMuICBVc2VyCjs7OyBFbWFjcyBj b25maWd1cmF0aW9uLCBkYXRhIGFuZCBjYWNoZSBmaWxlcyBjYW4gdGhlbiBiZSBzZWdyZWdhdGVk Cjs7OyBpbnRvIHRoZWlyIG93biBkaXJlY3RvcmllcywgbWFraW5nIGl0IHNpbXBsZSB0byBtaWdy YXRlCjs7OyBjb25maWd1cmF0aW9ucyBhbW9uZyBzZXZlcmFsIG1hY2hpbmVzIC0tLSBzaW5jZSB0 aGUgZmlsZXMgdGhhdCBhcmUKOzs7IHVubmVjZXNzYXJ5LCBiZWluZyBjYWNoZWQgZmlsZXMsIGNv dWxkIGVhc2lseSBub3QgYmUgdHJhbnNtaXR0ZWQuCjs7Owo7OzsgVGhpcyBwYWNrYWdlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKOzs7IHZlcnNpb24g My4wIG9yLCBhdCB5b3VyIGNob2ljZSwgYWJvdmUuICBPbmUgbWF5IHJlYWQgdGhlIEdOVQo7Ozsg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhdCB0aGUgR05VIFdlYiBzaXRlLCBhdCBodHRwOi8vd3d3 LmdudS5vcmcKOzs7Cgo7OzsgQ29kZToKCihyZXF1aXJlICdzKQoKCihkZWZncm91cCB4ZGctZGly ZWN0b3JpZXMKICAgICgpCiAgIlhERyBEaXJlY3RvcnkgU3BlY2lmaWNhdGlvbiIKICA6Z3JvdXAg J2Vudmlyb25tZW50CiAgOmxpbmsgJyhlbWFjcy1saWJyYXJ5LWxpbmsgInhkZy1kaXJlY3Rvcmll cyIpKQoKCihkZWZ1biB4ZGctZ2V0LXBhdGggKGRvbWFpbiAmb3B0aW9uYWwgcGF0aCkKICAiUmV0 dXJuIHRoZSBkaXJlY3RvcnkgYXQgRE9NQUlOLCB3aXRoIGFuIG9wdGlvbmFsIFBBVEggcmVsYXRp dmUgdG8gaXQuIgogIChsZXQgKChkaXIgKHMtY2hvbXAgKHNoZWxsLWNvbW1hbmQtdG8tc3RyaW5n IChjb25jYXQgInhkZy11c2VyLWRpciAiIGRvbWFpbikpKSkpCiAgICAoaWYgcGF0aAogICAgICAg IChleHBhbmQtZmlsZS1uYW1lIHBhdGggZGlyKQogICAgICAgIGRpcikpKQoKCihkZWZjdXN0b20g eGRnLWRhdGEtaG9tZQogIChvciAoZ2V0ZW52ICJYREdfREFUQV9IT01FIikgKGV4cGFuZC1maWxl LW5hbWUgIn4vLmxvY2FsL3NoYXJlIikpCiAgIlRoZSBiYXNlIGRpcmVjdG9yeSByZWxhdGl2ZSB0 byB3aGljaCB1c2VyIHNwZWNpZmljIGRhdGEgZmlsZXMKICBzaG91bGQgYmUgc3RvcmVkLiIKICA6 Z3JvdXAgJ3hkZy1kaXJlY3RvcmllcwogIDp0eXBlICdkaXJlY3RvcnkpCgoKKGRlZmN1c3RvbSB4 ZGctY29uZmlnLWhvbWUKICAob3IgKGdldGVudiAiWERHX0NPTkZJR19IT01FIikgKGV4cGFuZC1m aWxlLW5hbWUgIn4vLmNvbmZpZyIpKQogICJUaGUgYmFzZSBkaXJlY3RvcnkgcmVsYXRpdmUgdG8g d2hpY2ggdXNlciBzcGVjaWZpYwogIGNvbmZpZ3VyYXRpb24gZmlsZXMgc2hvdWxkIGJlIHN0b3Jl ZC4iCiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5KQoKCihkZWZj dXN0b20geGRnLWNhY2hlLWhvbWUKICAob3IgKGdldGVudiAiWERHX0NBQ0hFX0hPTUUiKSAoZXhw YW5kLWZpbGUtbmFtZSAifi8uY2FjaGUiKSkKICAiVGhlIGJhc2UgZGlyZWN0b3J5IHJlbGF0aXZl IHRvIHdoaWNoIHVzZXIgc3BlY2lmaWMKICBub24tZXNzZW50aWFsIGRhdGEgZmlsZXMgc2hvdWxk IGJlIHN0b3JlZC4iCiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5 KQoKCihkZWZjdXN0b20geGRnLXJ1bnRpbWUtZGlyCiAgKGdldGVudiAiWERHX1JVTlRJTUVfRElS IikKICAiVGhlIGRpcmVjdG9yeSB3aGVyZSBmaWxlcyB0aGF0IHBlcnRhaW4gb25seSB0byB0aGlz IHNlc3Npb24KICBhcmUgc3RvcmVkLiAgVGhlc2UgZmlsZXMgY2FuIGJlIGVyYXNlZCB3aGVuIHRo ZSBhcHBsaWNhdGlvbiBxdWl0cwogIG9yIHRoZSB1c2VyIGxvZ3Mgb3V0LiIKICA6Z3JvdXAgJ3hk Zy1kaXJlY3RvcmllcwogIDp0eXBlICdkaXJlY3RvcnkpCgoKKGRlZmN1c3RvbSB1c2VyLWVtYWNz LWRhdGEtaG9tZQogIChleHBhbmQtZmlsZS1uYW1lICJlbWFjcyIgeGRnLWRhdGEtaG9tZSkKICAi VGhlIGJhc2UgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHdoaWNoIHVzZXIgRW1hY3Mgc3BlY2lmaWMg ZGF0YQogIGZpbGVzIHNob3VsZCBiZSBzdG9yZWQuIgogIDpncm91cCAneGRnLWRpcmVjdG9yaWVz CiAgOnR5cGUgJ2RpcmVjdG9yeSkKCgooZGVmY3VzdG9tIHVzZXItZW1hY3MtY29uZmlnLWhvbWUK ICAoZXhwYW5kLWZpbGUtbmFtZSAiZW1hY3MiIHhkZy1jb25maWctaG9tZSkKICAiVGhlIGJhc2Ug ZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHdoaWNoIHVzZXIgRW1hY3Mgc3BlY2lmaWMKICBjb25maWd1 cmF0aW9uIGZpbGVzIHNob3VsZCBiZSBzdG9yZWQuIgogIDpncm91cCAneGRnLWRpcmVjdG9yaWVz CiAgOnR5cGUgJ2RpcmVjdG9yeSkKCgooZGVmY3VzdG9tIHVzZXItZW1hY3MtY2FjaGUtaG9tZQog IChleHBhbmQtZmlsZS1uYW1lICJlbWFjcyIgeGRnLWNhY2hlLWhvbWUpCiAgIlRoZSBiYXNlIGRp cmVjdG9yeSByZWxhdGl2ZSB0byB3aGljaCB1c2VyIEVtYWNzIHNwZWNpZmljCiAgbm9uLWVzc2Vu dGlhbCBkYXRhIGZpbGVzIHNob3VsZCBiZSBzdG9yZWQuIgogIDpncm91cCAneGRnLWRpcmVjdG9y aWVzCiAgOnR5cGUgJ2RpcmVjdG9yeSkKCgooZGVmY3VzdG9tIHVzZXItZW1hY3MtcnVudGltZS1k aXIKICAoZXhwYW5kLWZpbGUtbmFtZSAiZW1hY3MiIHhkZy1ydW50aW1lLWRpcikKICAiVGhlIGRp cmVjdG9yeSB3aGVyZSBFbWFjcyBmaWxlcyB0aGF0IHBlcnRhaW4gb25seSB0byB0aGlzIHNlc3Np b24KICBhcmUgc3RvcmVkLiAgVGhlc2UgZmlsZXMgY2FuIGJlIGVyYXNlZCB3aGVuIHRoZSBhcHBs aWNhdGlvbiBxdWl0cwogIG9yIHRoZSB1c2VyIGxvZ3Mgb3V0LiIKICA6Z3JvdXAgJ3hkZy1kaXJl Y3RvcmllcwogIDp0eXBlICdkaXJlY3RvcnkpCgoKKGRlZmN1c3RvbSB1c2VyLWRlc2t0b3AtZGly ZWN0b3J5CiAgKHhkZy1nZXQtcGF0aCAiREVTS1RPUCIpCiAgIlRoZSBkZXNrdG9wIGRpcmVjdG9y eS4iCiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5KQoKCihkZWZj dXN0b20gdXNlci1kb3dubG9hZC1kaXJlY3RvcnkKICAoeGRnLWdldC1wYXRoICJET1dOTE9BRCIp CiAgIlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVzZXIgc3RvcmVzIGhpcyBkb3dubG9hZGVkIGZp bGVzIGJ5IGRlZmF1bHQuIgogIDpncm91cCAneGRnLWRpcmVjdG9yaWVzCiAgOnR5cGUgJ2RpcmVj dG9yeSkKCgooZGVmY3VzdG9tIHVzZXItdGVtcGxhdGVzLWRpcmVjdG9yeQogICh4ZGctZ2V0LXBh dGggIlRFTVBMQVRFUyIpCiAgIlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVzZXIgc3RvcmVzIGhp cyB0ZW1wbGF0ZXMuIgogIDpncm91cCAneGRnLWRpcmVjdG9yaWVzCiAgOnR5cGUgJ2RpcmVjdG9y eSkKCgooZGVmY3VzdG9tIHVzZXItcHVibGljLXNoYXJlLWRpcmVjdG9yeQogICh4ZGctZ2V0LXBh dGggIlBVQkxJQ1NIQVJFIikKICAiVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdXNlciBzdG9yZXMg aGlzIHNoYXJlZCBmaWxlcy4iCiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGly ZWN0b3J5KQoKCihkZWZjdXN0b20gdXNlci1kb2N1bWVudHMtZGlyZWN0b3J5CiAgKHhkZy1nZXQt cGF0aCAiRE9DVU1FTlRTIikKICAiVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdXNlciBzdG9yZXMg aGlzIGRvY3VtZW50cy4iCiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0 b3J5KQoKCihkZWZjdXN0b20gdXNlci1tdXNpYy1kaXJlY3RvcnkKICAoeGRnLWdldC1wYXRoICJN VVNJQyIpCiAgIlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVzZXIgc3RvcmVzIGhpcyBtdXNpYy4i CiAgOmdyb3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5KQoKCihkZWZjdXN0 b20gdXNlci1waWN0dXJlcy1kaXJlY3RvcnkKICAoeGRnLWdldC1wYXRoICJQSUNUVVJFUyIpCiAg IlRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVzZXIgc3RvcmVzIGhpcyBwaWN0dXJlcy4iCiAgOmdy b3VwICd4ZGctZGlyZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5KQoKCihkZWZjdXN0b20gdXNl ci12aWRlb3MtZGlyZWN0b3J5CiAgKHhkZy1nZXQtcGF0aCAiVklERU9TIikKICAiVGhlIGRpcmVj dG9yeSB3aGVyZSB0aGUgdXNlciBzdG9yZXMgaGlzIHZpZGVvcy4iCiAgOmdyb3VwICd4ZGctZGly ZWN0b3JpZXMKICA6dHlwZSAnZGlyZWN0b3J5KQoKCihkZWZ1biB4ZGctZ2V0LXVzZXItZmlsZSAo ZmlsZW5hbWUgZGlyZWN0b3J5ICZvcHRpb25hbCBjcmVhdGUtcGFyZW50LWRpcnMpCiAgIkxvY2F0 ZSBGSUxFTkFNRSB1bmRlciBESVJFQ1RPUlksIHdoZXJ0aGVyIGl0IGV4aXN0cyBvciBub3QuCgpJ ZiBDUkVBVEUtUEFSRU5ULURJUlMgaXMgVCwgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBhcmUgY3Jl YXRlZC4KClJldHVybnMgdGhlIGNvbXBsZXRlIGZpbGUgcGF0aCwgc28gaXQgY2FuIGJlIGNoYWlu ZWQuIgogIChsZXQgKChmaWxlIChleHBhbmQtZmlsZS1uYW1lIGZpbGVuYW1lIGRpcmVjdG9yeSkp KQogICAgOzsgQ3JlYXRlIGFueSBwYXJlbnQgZGlyZWN0b3JpZXMsIGlmIHNvIHJlcXVlc3RlZC4K ICAgIChpZiBjcmVhdGUtcGFyZW50LWRpcnMKICAgICAgKHVubGVzcyAoZmlsZS1leGlzdHMtcCBk aXJlY3RvcnkpCiAgICAgICAgKG1ha2UtZGlyZWN0b3J5IGRpcmVjdG9yeSB0KSkpCiAgICA7OyBS ZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgd2l0aCB0aGUgZ2l2ZW4gcGF0aC4KICAgIGZpbGUp KQoKCihkZWZ1biBsb2NhdGUtdXNlci1lbWFjcy1jYWNoZS1maWxlIChmaWxlbmFtZSAmb3B0aW9u YWwgY3JlYXRlLXBhcmVudC1kaXJzKQogICJMb2NhdGUgYSBjYWNoZSBmaWxlIG5hbWVkIEZJTEVO QU1FLgoKVGhlIGZpbGUgbWF5IGV4aXN0IG9yIG5vdCB1bmRlciB0aGUgdXNlciBFbWFjcyBjYWNo ZSBkaXIgKHVuZGVyClhERy1DQUNIRS1IT01FL2VtYWNzKS4gIFRoZSBwYXRoIG9mIHRoZSBmaWxl IGlzIHJldHVybmVkCnJlZ2FyZGxlc3Mgb2YgaXQncyBleGlzdGVuY2UuCgpJZiBDUkVBVEUtUEFS RU5ULURJUlMgaXMgdCwgdGhlbiB0aGUgZGlyZWN0b3J5IGFuZCBpdHMgcGFyZW50CmRpcnMgd2ls bCBiZSBjcmVhdGVkIGluIGNhc2UgdGhleSBhcmUgbm90IGZvdW5kLiIKICAoeGRnLWdldC11c2Vy LWZpbGUgZmlsZW5hbWUgdXNlci1lbWFjcy1jYWNoZS1ob21lIGNyZWF0ZS1wYXJlbnQtZGlycykp CgoKKGRlZnVuIGxvY2F0ZS11c2VyLWVtYWNzLWNvbmZpZy1maWxlIChmaWxlbmFtZSAmb3B0aW9u YWwgY3JlYXRlLXBhcmVudC1kaXJzKQogICJMb2NhdGUgYSBjb25maWcgZmlsZSBuYW1lZCBGSUxF TkFNRS4KClRoZSBmaWxlIG1heSBleGlzdCBvciBub3QgdW5kZXIgdGhlIHVzZXIgRW1hY3MgY29u ZmlnIGRpciAodW5kZXIKWERHLUNPTkZJRy1IT01FL2VtYWNzKS4gIFRoZSBwYXRoIG9mIHRoZSBm aWxlIGlzIHJldHVybmVkCnJlZ2FyZGxlc3Mgb2YgaXQncyBleGlzdGVuY2UuCgpJZiBDUkVBVEUt UEFSRU5ULURJUlMgaXMgdCwgdGhlbiB0aGUgZGlyZWN0b3J5IGFuZCBpdHMgcGFyZW50CmRpcnMg d2lsbCBiZSBjcmVhdGVkIGluIGNhc2UgdGhleSBhcmUgbm90IGZvdW5kLiIKICAoeGRnLWdldC11 c2VyLWZpbGUgZmlsZW5hbWUgdXNlci1lbWFjcy1jb25maWctaG9tZSBjcmVhdGUtcGFyZW50LWRp cnMpKQoKCihkZWZ1biBsb2NhdGUtdXNlci1lbWFjcy1kYXRhLWZpbGUgKGZpbGVuYW1lICZvcHRp b25hbCBjcmVhdGUtcGFyZW50LWRpcnMpCiAgIkxvY2F0ZSBhIGRhdGEgZmlsZSBuYW1lZCBGSUxF TkFNRS4KClRoZSBmaWxlIG1heSBleGlzdCBvciBub3QgdW5kZXIgdGhlIHVzZXIgRW1hY3MgZGF0 YSBkaXIgKHVuZGVyClhERy1EQVRBLUhPTUUvZW1hY3MpLiAgVGhlIHBhdGggb2YgdGhlIGZpbGUg aXMgcmV0dXJuZWQKcmVnYXJkbGVzcyBvZiBpdCdzIGV4aXN0ZW5jZS4KCklmIENSRUFURS1QQVJF TlQtRElSUyBpcyB0LCB0aGVuIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBwYXJlbnQKZGlycyB3aWxs IGJlIGNyZWF0ZWQgaW4gY2FzZSB0aGV5IGFyZSBub3QgZm91bmQuIgogICh4ZGctZ2V0LXVzZXIt ZmlsZSBmaWxlbmFtZSB1c2VyLWVtYWNzLWRhdGEtaG9tZSBjcmVhdGUtcGFyZW50LWRpcnMpKQoK CihkZWZ1biBsb2NhdGUtdXNlci1lbWFjcy1ydW50aW1lLWZpbGUgKGZpbGVuYW1lICZvcHRpb25h bCBjcmVhdGUtcGFyZW50LWRpcnMpCiAgIkxvY2F0ZSBhIHJ1bnRpbWUgZmlsZSBuYW1lZCBGSUxF TkFNRS4KClRoZSBmaWxlIG1heSBleGlzdCBvciBub3QgdW5kZXIgdGhlIHVzZXIgRW1hY3MgcnVu dGltZSBkaXIgKHVuZGVyClhERy1SVU5USU1FLURJUi9lbWFjcykuICBUaGUgcGF0aCBvZiB0aGUg ZmlsZSBpcyByZXR1cm5lZApyZWdhcmRsZXNzIG9mIGl0J3MgZXhpc3RlbmNlLgoKSWYgQ1JFQVRF LVBBUkVOVC1ESVJTIGlzIHQsIHRoZW4gdGhlIGRpcmVjdG9yeSBhbmQgaXRzIHBhcmVudApkaXJz IHdpbGwgYmUgY3JlYXRlZCBpbiBjYXNlIHRoZXkgYXJlIG5vdCBmb3VuZC4iCiAgKHhkZy1nZXQt dXNlci1maWxlIGZpbGVuYW1lIHVzZXItZW1hY3MtcnVudGltZS1kaXIgY3JlYXRlLXBhcmVudC1k aXJzKSkKCgooZGVmdW4gbG9jYXRlLXVzZXItZG9jdW1lbnQtZmlsZSAoZmlsZW5hbWUpCiAgIkxv Y2F0ZSBhIGRvY3VtZW50IGZpbGUgbmFtZWQgRklMRU5BTUUuCgpUaGUgZmlsZSBtYXkgZXhpc3Qg b3Igbm90IHVuZGVyIHRoZSB1c2VyIEVtYWNzIGRvY3VtZW50cwpkaXIgKHdoaWNoIGlzIHByZWRl dGVybWluZWQgYnkgdGhpcyBwYWNrYWdlIHVzaW5nIG9wZXJhdGluZwpzeXN0ZW0gdG9vbHMgb3Is IGlmIGZvdW5kIGxhY2tpbmcsIHNlbnNpYmxlIGRlZmF1bHRzKS4gIFRoZSBwYXRoCm9mIHRoZSBm aWxlIGlzIHJldHVybmVkIHJlZ2FyZGxlc3Mgb2YgaXQncyBleGlzdGVuY2UuCgpJZiBDUkVBVEUt UEFSRU5ULURJUlMgaXMgdCwgdGhlbiB0aGUgZGlyZWN0b3J5IGFuZCBpdHMgcGFyZW50CmRpcnMg d2lsbCBiZSBjcmVhdGVkIGluIGNhc2UgdGhleSBhcmUgbm90IGZvdW5kLiIKICAoZXhwYW5kLWZp bGUtbmFtZSBmaWxlbmFtZSB1c2VyLWRvY3VtZW50cy1kaXJlY3RvcnkpKQoKCihwcm92aWRlICd4 ZGctZGlyZWN0b3JpZXMpCjs7OyB4ZGctZGlyZWN0b3JpZXMuZWwgZW5kcyBoZXJlCg== --089e014934ace91671053bde720b--