From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.devel Subject: Re: line-move-visual Date: Fri, 10 Jul 2009 15:56:10 +0200 Message-ID: References: <200907092112.21879.jem@iki.fi> <87ws6hupsk.fsf@bzg.ath.cx> <87ocrtulzd.fsf@bzg.ath.cx> <87tz1lja6l.fsf@bzg.ath.cx> <83ocrsykx7.fsf@gnu.org> <87prc8lqi2.fsf@uwakimon.sk.tsukuba.ac.jp> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001636c923d7adc0c8046e5a55de X-Trace: ger.gmane.org 1247235014 15049 80.91.229.12 (10 Jul 2009 14:10:14 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 10 Jul 2009 14:10:14 +0000 (UTC) Cc: handa@m17n.org, emacs-devel@gnu.org, bastienguerry@googlemail.com, Eli Zaretskii , jem@iki.fi, Scot Becker , miles@gnu.org To: "Stephen J. Turnbull" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Jul 10 16:10:06 2009 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 1MPGnb-0006Jf-Nr for ged-emacs-devel@m.gmane.org; Fri, 10 Jul 2009 16:10:06 +0200 Original-Received: from localhost ([127.0.0.1]:44787 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPGna-0002Y4-SX for ged-emacs-devel@m.gmane.org; Fri, 10 Jul 2009 10:10:02 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MPGaN-00031f-NA for emacs-devel@gnu.org; Fri, 10 Jul 2009 09:56:23 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MPGaJ-0002xQ-Ts for emacs-devel@gnu.org; Fri, 10 Jul 2009 09:56:23 -0400 Original-Received: from [199.232.76.173] (port=48537 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPGaJ-0002xD-P6 for emacs-devel@gnu.org; Fri, 10 Jul 2009 09:56:19 -0400 Original-Received: from mail-fx0-f215.google.com ([209.85.220.215]:61971) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MPGaC-0000me-OV; Fri, 10 Jul 2009 09:56:13 -0400 Original-Received: by fxm11 with SMTP id 11so955263fxm.42 for ; Fri, 10 Jul 2009 06:56:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=yFSE//s2oDN9S2aKmIxO/JqMEhlb8adiQK1TaM7DIqA=; b=mm7SQtBA/sAvo53HPEz7lNNoKaTFOdCOHQIBMrWALOkIcWXq/kLXKKFIczNogn6iFW bvZPd0/x3INgaUYy9tAyBRFeLLNJiNiXhWk6f6ZgWspvgNOYn7gyn1/T/DpAPgeXaiIo vOLSQh1G0foEEhnMnIjLPMpDJNGRp1PcHWfyg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=CJyBV5LJZSYz1ctjD1jBLF7G1Y6e61OupKNJF/YL2Wix42+w13fejKHotb4C1se/BD G9lphQZbLI6LEtMp9qjyvlnBXAKsfh1QXus8Da2xwucRPCKUawRxKXxv0Oek3SkJi/xy GAFc3G4AoyvRSW6kYeY/N7JAeV+V1u43jkAOk= Original-Received: by 10.223.113.9 with SMTP id y9mr1072246fap.61.1247234170404; Fri, 10 Jul 2009 06:56:10 -0700 (PDT) In-Reply-To: <87prc8lqi2.fsf@uwakimon.sk.tsukuba.ac.jp> X-detected-operating-system: by monty-python.gnu.org: GNU/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:112306 Archived-At: --001636c923d7adc0c8046e5a55de Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Fri, Jul 10, 2009 at 1:35 PM, Stephen J. Turnbull wr= ote: > Eli Zaretskii writes: > > =C2=A0> We already have a feature that is close to that: > =C2=A0> > =C2=A0> =C2=A0 Options->Customize Emacs->New Options > =C2=A0> > =C2=A0> It asks for an old version, and presents a Customize buffer with = all > =C2=A0> options changed or introduced since that version. > > This is good, but the crucial feature that improves discoverability is > the ability for the user to identify changes to classic behavior, > which is not necessarily all the new options. Here is a try to structure this in a custom buffer. It is not like "skins" right now, but that could be added later. I have set some new defaults, like showing the help links underlined and making the "tabable". I think they should look and behave like that. Also I have cut out part from help-make-xrefs that someone put a common on saying ;; The following should probably be abstracted out. So I did that and suggest using that for widgets. Do "M-x customize-for-new-user" to test and tell me what you think. Please ignore that nothing in the custom buffer created works at the moment... ;-) --001636c923d7adc0c8046e5a55de Content-Type: text/plain; charset=US-ASCII; name="cus-new-user.el" Content-Disposition: attachment; filename="cus-new-user.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fwyyy8qs0 Ozs7IGN1cy1uZXctdXNlci5lbCAtLS0gQ3VzdG9taXplIHNvbWUgaW1wb3J0YW50IG9wdGlvbnMN Cjs7DQo7OyBBdXRob3I6IExlbm5hcnQgQm9yZ21hbiAobGVubmFydCBPIGJvcmdtYW4gQSBnbWFp bCBPIGNvbSkNCjs7IENyZWF0ZWQ6IDIwMDktMDctMTAgRnJpDQo7OyBWZXJzaW9uOiAwLjINCjs7 IExhc3QtVXBkYXRlZDogMjAwOS0wNy0xMCBGcmkNCjs7IFVSTDoNCjs7IEtleXdvcmRzOg0KOzsg Q29tcGF0aWJpbGl0eToNCjs7DQo7OyBGZWF0dXJlcyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGJ5 IHRoaXMgbGlicmFyeToNCjs7DQo7OyAgIE5vbmUNCjs7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7Ow0KOzs7 IENvbW1lbnRhcnk6DQo7Ow0KOzsgICAgQ3VzdG9taXplIHNpZ25pZmljYW50IG9wdGlvbnMgZm9y IHdoaWNoIGRpZmZlcmVudCB1c2VyDQo7OyAgICBlbnZpcm9ubWVudCBleHBlY3RhdGlvbnMgbWln aHQgZGljdGF0ZSBkaWZmZXJlbnQgZGVmYXVsdHMuDQo7Ow0KOzsgICAgQWZ0ZXIgYW4gaWRlYSBv ZiBTY290IEJlY2tlciBvbiBFbWFjcyBEZXZlbC4NCjs7DQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7Ow0KOzs7 IENoYW5nZSBsb2c6DQo7Ow0KOzsNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7DQo7OyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo7OyBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cw0KOzsgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMsIG9yDQo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KOzsN Cjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLA0KOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YNCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQo7OyBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuDQo7Ow0KOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCjs7IGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8NCjs7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGgNCjs7IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCjs7DQo7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7DQo7Ow0KOzs7IENvZGU6DQoNCjs7KGN1c3RvbWl6ZS1mb3ItbmV3LXVzZXIpDQo7OzsjIyNh dXRvbG9hZA0KKGRlZnVuIGN1c3RvbWl6ZS1mb3ItbmV3LXVzZXIgKCZvcHRpb25hbCBuYW1lKQ0K ICAiU2hvdyBzcGVjaWFsIGN1c3RvbWl6YXRpb24gcGFnZSBmb3IgbmV3IHVzZXIuDQoiDQogIChp bnRlcmFjdGl2ZSkNCiAgOzsoc2V0cSBkZWJ1Zy1vbi1lcnJvciB0KQ0KICA7OyhzZXRxIGJ1ZmZl ci1yZWFkLW9ubHkgdCkNCiAgKHJlcXVpcmUgJ2N1cy1lZGl0KQ0KICAobGV0ICgoaW5oaWJpdC1y ZWFkLW9ubHkgdCkNCiAgICAgICAgZmlsbC1wb3MpDQogICAgKHBvcC10by1idWZmZXIgKGN1c3Rv bS1nZXQtZnJlc2gtYnVmZmVyIChvciBuYW1lICIqQ3VzdG9taXphdGlvbnMgZm9yIE5ldyBVc2Vy cyoiKSkpDQogICAgKEN1c3RvbS1tb2RlKQ0KICAgIChlcmFzZS1idWZmZXIpDQogICAgKHNldHEg ZmlsbC1wb3MgKHBvaW50KSkNCiAgICAod2lkZ2V0LWluc2VydA0KICAgICAiQmVsb3cgYXJlIHNv bWUgY3VzdG9tIG9wdGlvbnMgdGhhdCBuZXcgdXNlcnMgb2Z0ZW4gbWF5IHdhbnQgdG8NCnR3ZWFr IHNpbmNlIHRoZXkgbWF5IG1ha2UgRW1hY3MgYSBiaXQgbW9yZSBsaWtlIHdoYXQgdGhleSBleHBl Y3QgZnJvbSB1c2luZyBvdGhlciBzb2Z0d2FyZSBpbiB0aGVpciBlbnZpcm9ubWVudC4NCg0KU2lu Y2UgRW1hY3MgcnVucyBpbiBtYW55IGVudmlyb25tZW50IGFuZCBhbiBFbWFjcyB1c2VyIG1heSB1 c2UNCnNldmVyYWwgb2YgdGhlbSBpdCBpcyBoYXJkIHRvIGRlY2lkZSBieSBkZWZhdWx0IHdoYXQg YSB1c2VyDQp3YW50cy9leHBlY3RzLiAgVGhlcmVmb3IgeW91IGFyZSBnaXZlbiB0aGUgcG9zc2li aWxpdHkgdG8gZWFzaWx5DQpkbyB0aG9zZSBjaGFuZ2VzIGhlcmUuDQoNCk5vdGUgdGhhdCB0aGlz IGlzIGp1c3QgYSBjb2xsZWN0aW9uIG9mIG5vcm1hbCBjdXN0b20gb3B0aW9ucy4NClRoZXJlIGFy ZSBubyBuZXcgb3B0aW9ucyBoZXJlLg0KDQoiKQ0KICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAo cG9pbnQpKQ0KDQogICAgOzsgTm9ybWFsIGN1c3RvbSBidWZmZXIgaGVhZGVyDQogICAgKGxldCAo KGluaXQtZmlsZSAob3IgY3VzdG9tLWZpbGUgdXNlci1pbml0LWZpbGUpKSkNCiAgICAgIDs7IElu c2VydCB2ZXJib3NlIGhlbHAgYXQgdGhlIHRvcCBvZiB0aGUgY3VzdG9tIGJ1ZmZlci4NCiAgICAg ICh3aGVuIGN1c3RvbS1idWZmZXItdmVyYm9zZS1oZWxwDQogICAgICAgICh3aWRnZXQtaW5zZXJ0 ICJFZGl0aW5nIGEgc2V0dGluZyBjaGFuZ2VzIG9ubHkgdGhlIHRleHQgaW4gdGhpcyBidWZmZXIu Ig0KICAgICAgICAgICAgICAgICAgICAgICAoaWYgaW5pdC1maWxlDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAiDQpUbyBhcHBseSB5b3VyIGNoYW5nZXMsIHVzZSB0aGUgU2F2ZSBvciBTZXQg YnV0dG9ucy4NClNhdmluZyBhIGNoYW5nZSBub3JtYWxseSB3b3JrcyBieSBlZGl0aW5nIHlvdXIg aW5pdCBmaWxlLiINCiAgICAgICAgICAgICAgICAgICAgICAgICAiDQpDdXJyZW50bHksIHRoZXNl IHNldHRpbmdzIGNhbm5vdCBiZSBzYXZlZCBmb3IgZnV0dXJlIEVtYWNzIHNlc3Npb25zLA0KcG9z c2libHkgYmVjYXVzZSB5b3Ugc3RhcnRlZCBFbWFjcyB3aXRoIGAtcScuIikNCiAgICAgICAgICAg ICAgICAgICAgICAgIlxuRm9yIGRldGFpbHMsIHNlZSAiKQ0KICAgICAgICAod2lkZ2V0LWNyZWF0 ZSAnY3VzdG9tLW1hbnVhbA0KICAgICAgICAgICAgICAgICAgICAgICA6dGFnICJTYXZpbmcgQ3Vz dG9taXphdGlvbnMiDQogICAgICAgICAgICAgICAgICAgICAgICIoZW1hY3MpU2F2aW5nIEN1c3Rv bWl6YXRpb25zIikNCiAgICAgICAgKHdpZGdldC1pbnNlcnQgIiBpbiB0aGUgIikNCiAgICAgICAg KHdpZGdldC1jcmVhdGUgJ2N1c3RvbS1tYW51YWwNCiAgICAgICAgICAgICAgICAgICAgICAgOnRh ZyAiRW1hY3MgbWFudWFsIg0KICAgICAgICAgICAgICAgICAgICAgICA6aGVscC1lY2hvICJSZWFk IHRoZSBFbWFjcyBtYW51YWwuIg0KICAgICAgICAgICAgICAgICAgICAgICAiKGVtYWNzKVRvcCIp DQogICAgICAgICh3aWRnZXQtaW5zZXJ0ICIuIikpDQogICAgICAod2lkZ2V0LWluc2VydCAiXG4i KQ0KICAgICAgOzsgVGhlIGN1c3RvbSBjb21tYW5kIGJ1dHRvbnMgYXJlIGFsc28gaW4gdGhlIHRv b2xiYXIsIHNvIGZvciBhDQogICAgICA7OyB0aW1lIHRoZXkgd2VyZSBub3QgaW5zZXJ0ZWQgaW4g dGhlIGJ1ZmZlciBpZiB0aGUgdG9vbGJhciB3YXMgaW4gdXNlLg0KICAgICAgOzsgQnV0IGl0IGNh biBiZSBhIGxpdHRsZSBjb25mdXNpbmcgZm9yIHRoZSBidWZmZXIgbGF5b3V0IHRvDQogICAgICA7 OyBjaGFuZ2UgYWNjb3JkaW5nIHRvIHdoZXRoZXIgb3Igbm9yIHRoZSB0b29sYmFyIGlzIG9uLCBu b3QgdG8NCiAgICAgIDs7IG1lbnRpb24gdGhhdCBhIGN1c3RvbSBidWZmZXIgY2FuIGluIHRoZW9y eSBiZSBjcmVhdGVkIGluIGENCiAgICAgIDs7IGZyYW1lIHdpdGggYSB0b29sYmFyLCB0aGVuIGxh dGVyIHZpZXdlZCBpbiBvbmUgd2l0aG91dC4NCiAgICAgIDs7IFNvIG5vdyB0aGUgYnV0dG9ucyBh cmUgYWx3YXlzIGluc2VydGVkIGluIHRoZSBidWZmZXIuICAoQnVnIzEzMjYpDQo7OzsgICAgKHdo ZW4gKG5vdCAoYW5kIChib3VuZC1hbmQtdHJ1ZS1wIHRvb2wtYmFyLW1vZGUpIChkaXNwbGF5LWdy YXBoaWMtcCkpKQ0KICAgICAgKGlmIGN1c3RvbS1idWZmZXItdmVyYm9zZS1oZWxwDQogICAgICAg ICAgKHdpZGdldC1pbnNlcnQgIlxuDQogT3BlcmF0ZSBvbiBhbGwgc2V0dGluZ3MgaW4gdGhpcyBi dWZmZXIgdGhhdCBhcmUgbm90IG1hcmtlZCBISURERU46XG4iKSkNCiAgICAgIChsZXQgKChidXR0 b24gKGxhbWJkYSAodGFnIGFjdGlvbiBhY3RpdmUgaGVscCBpY29uKQ0KICAgICAgICAgICAgICAg ICAgICAgICh3aWRnZXQtaW5zZXJ0ICIgIikNCiAgICAgICAgICAgICAgICAgICAgICAoaWYgKGV2 YWwgYWN0aXZlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAod2lkZ2V0LWNyZWF0ZSAncHVz aC1idXR0b24gOnRhZyB0YWcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhlbHAtZWNobyBoZWxwIDphY3Rpb24gYWN0aW9uKSkpKQ0KICAgICAgICAgICAgKGNvbW1h bmRzIGN1c3RvbS1jb21tYW5kcykpDQogICAgICAgIChhcHBseSBidXR0b24gKHBvcCBjb21tYW5k cykpIDsgU2V0IGZvciBjdXJyZW50IHNlc3Npb24NCiAgICAgICAgKGFwcGx5IGJ1dHRvbiAocG9w IGNvbW1hbmRzKSkgOyBTYXZlIGZvciBmdXR1cmUgc2Vzc2lvbnMNCiAgICAgICAgKGlmIGN1c3Rv bS1yZXNldC1idXR0b24tbWVudQ0KICAgICAgICAgICAgKHByb2duDQogICAgICAgICAgICAgICh3 aWRnZXQtaW5zZXJ0ICIgIikNCiAgICAgICAgICAgICAgKHdpZGdldC1jcmVhdGUgJ3B1c2gtYnV0 dG9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0YWcgIlJlc2V0IGJ1ZmZlciINCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmhlbHAtZWNobyAiU2hvdyBhIG1lbnUgd2l0aCBy ZXNldCBvcGVyYXRpb25zLiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1vdXNlLWRv d24tYWN0aW9uICdpZ25vcmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFjdGlvbiAn Y3VzdG9tLXJlc2V0KSkNCiAgICAgICAgICAod2lkZ2V0LWluc2VydCAiXG4iKQ0KICAgICAgICAg IChhcHBseSBidXR0b24gKHBvcCBjb21tYW5kcykpIDsgVW5kbyBlZGl0cw0KICAgICAgICAgIChh cHBseSBidXR0b24gKHBvcCBjb21tYW5kcykpIDsgUmVzZXQgdG8gc2F2ZWQNCiAgICAgICAgICAo YXBwbHkgYnV0dG9uIChwb3AgY29tbWFuZHMpKSA7IEVyYXNlIGN1c3RvbWl6YXRpb24NCiAgICAg ICAgICAod2lkZ2V0LWluc2VydCAiICAiKQ0KICAgICAgICAgIChwb3AgY29tbWFuZHMpIDsgSGVs cCAob21pdHRlZCkNCiAgICAgICAgICAoYXBwbHkgYnV0dG9uIChwb3AgY29tbWFuZHMpKSkpIDsg RXhpdA0KICAgICAgKHdpZGdldC1pbnNlcnQgIlxuXG4iKQ0KDQogICAgICA7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7DQogICAgICA7OyBFZGl0b3IgZW11bGF0b3IgbGV2ZWwNCg0KICAgICAg KHdpZGdldC1pbnNlcnQgIlxuIikNCiAgICAgIChzZXRxIGZpbGwtcG9zIChwb2ludCkpDQogICAg ICAod2lkZ2V0LWluc2VydA0KIkVtYWNzIGNhbiBlbXVsYXRlIHNvbWUgY29tbW9uIGVkaXRpbmcg YmVoYXZpb3VycyAoYW5kIHNvbWUgdW5jb21tb24gdG9vKS4NCkZvciB0aGUgbW9zdCBjb21tb24g b25lcyB5b3UgY2FuIGRlY2lkZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlbSBoZXJlOg0KIikNCiAg ICAgIChmaWxsLXJlZ2lvbiBmaWxsLXBvcyAocG9pbnQpKQ0KICAgICAgKGN1c251LW1hcmstcGFy dC1kZXNjIGZpbGwtcG9zIChwb2ludCkpDQogICAgICAod2lkZ2V0LWluc2VydCAiXG4iKQ0KDQog ICAgICA7OyBDVUEgTW9kZQ0KICAgICAgKGN1c251LWluc2VydC1vcHRpb25zICcoKGN1YS1tb2Rl IGN1c3RvbS12YXJpYWJsZSkpKQ0KDQogICAgICA7OyBWaXBlciBNb2RlDQogICAgICAod2lkZ2V0 LWluc2VydCAiXG4iKQ0KICAgICAgKHdpZGdldC1pbnNlcnQgKHByb3BlcnRpemUgIlZpcGVyIE1v ZGUiICdmYWNlICdjdXN0b20tdmFyaWFibGUtdGFnKSkNCiAgICAgICh3aWRnZXQtaW5zZXJ0ICI6 IikNCiAgICAgIChzZXRxIGZpbGwtcG9zIChwb2ludCkpDQogICAgICAod2lkZ2V0LWluc2VydCAi DQogICBWaXBlciBpcyBjdXJyZW50bHkgc2V0IHVwIGluIGEgc3BlY2lhbCB3YXksIHBsZWFzZSBz ZWUgdGhlDQogICBjb21tYW5kIGB2aXBlci1tb2RlJy4NCiIpDQogICAgICAoZmlsbC1yZWdpb24g ZmlsbC1wb3MgKHBvaW50KSkNCg0KICAgICAgKGN1c251LW1ha2UteHJlZnMpDQogICAgICApKSkN Cg0KKGRlZnVuIGN1c251LW1hcmstcGFydC1kZXNjIChiZWcgZW5kKQ0KICAobGV0ICgob3ZsICht YWtlLW92ZXJsYXkgYmVnIGVuZCkpKQ0KICAgIChvdmVybGF5LXB1dCBvdmwgJ2ZhY2UgJ2hpZ2hs aWdodCkpKQ0KDQooZGVmdW4gY3VzbnUtbWFrZS14cmVmcyAoJm9wdGlvbmFsIGJlZyBlbmQpDQog IChzYXZlLXJlc3RyaWN0aW9uDQogICAgKHdoZW4gKG9yIGJlZyBlbmQpDQogICAgICAodW5sZXNz IGJlZyAoc2V0cSBiZWcgKHBvaW50LW1pbikpKQ0KICAgICAgKHVubGVzcyBlbmQgKHNldHEgZW5k IChwb2ludC1tYXgpKSkNCiAgICAgIChuYXJyb3ctdG8tcmVnaW9uIGJlZyBlbmQpKQ0KICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpDQogICAgKGN1c251LWhlbHAtaW5zZXJ0LXhyZWZzICdjdXNu dS1oZWxwLXhyZWYtYnV0dG9uKSkpDQoNCihkZWZ1biBjdXNudS1oZWxwLXhyZWYtYnV0dG9uICht YXRjaC1udW1iZXIgdHlwZSAmcmVzdCBhcmdzKQ0KICAobGV0ICgoYmVnIChtYXRjaC1iZWdpbm5p bmcgbWF0Y2gtbnVtYmVyKSkNCiAgICAgICAgKGVuZCAobWF0Y2gtZW5kIG1hdGNoLW51bWJlcikp KQ0KICAoaWYgbmlsDQogICAgICAobGV0ICgob3ZsIChtYWtlLW92ZXJsYXkgYmVnIGVuZCkpKQ0K ICAgICAgICAob3ZlcmxheS1wdXQgb3ZsICdmYWNlICdoaWdobGlnaHQpKQ0KICAgIChsZXQgKCh0 YWcgKG1hdGNoLXN0cmluZyBtYXRjaC1udW1iZXIpKQ0KICAgICAgICAgICh3aWQtdHlwZSAoY29u ZA0KICAgICAgICAgICAgICAgICAgICAgKChlcSB0eXBlICdoZWxwLXZhcmlhYmxlKQ0KICAgICAg ICAgICAgICAgICAgICAgICd2YXJpYWJsZS1saW5rKQ0KICAgICAgICAgICAgICAgICAgICAgKChl cSB0eXBlICdoZWxwLWZ1bmN0aW9uKQ0KICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi1s aW5rKQ0KICAgICAgICAgICAgICAgICAgICAgKChlcSB0eXBlICdoZWxwLWluZm8pDQogICAgICAg ICAgICAgICAgICAgICAgJ2N1c3RvbS1tYW51YWwpDQogICAgICAgICAgICAgICAgICAgICAodCBu aWwpKSkNCiAgICAgICAgICApDQogICAgICAod2hlbiB3aWQtdHlwZQ0KICAgICAgICAoZGVsZXRl LXJlZ2lvbiBiZWcgZW5kKQ0KICAgICAgICAoYmFja3dhcmQtY2hhcikNCiAgICAgICAgOzsodGFn IGFjdGlvbiBhY3RpdmUgaGVscCBpY29uKQ0KICAgICAgICAod2lkZ2V0LWNyZWF0ZSB3aWQtdHlw ZQ0KICAgICAgICAgICAgICAgICAgICAgICA7O3RhZw0KICAgICAgICAgICAgICAgICAgICAgICA6 dGFnIHRhZw0KICAgICAgICAgICAgICAgICAgICAgICA6a2V5bWFwIGN1c3RvbS1tb2RlLWxpbmst bWFwDQogICAgICAgICAgICAgICAgICAgICAgIDpmb2xsb3ctbGluayAnbW91c2UtZmFjZQ0KICAg ICAgICAgICAgICAgICAgICAgICA6YnV0dG9uLWZhY2UgJ2N1c3RvbS1saW5rDQogICAgICAgICAg ICAgICAgICAgICAgIDptb3VzZS1mYWNlICdoaWdobGlnaHQNCiAgICAgICAgICAgICAgICAgICAg ICAgOnByZXNzZWQtZmFjZSAnaGlnaGxpZ2h0DQogICAgICAgICAgICAgICAgICAgICAgIDs7Omhl bHAtZWNobyBoZWxwDQogICAgICAgICAgICAgICAgICAgICAgICkpKSkpDQogICAgKQ0KDQo7OyBP dmVycmlkZSBkZWZhdWx0IC4uLiA7LSkNCihkZWZpbmUtd2lkZ2V0ICdkb2N1bWVudGF0aW9uLWxp bmsgJ2xpbmsNCiAgIkxpbmsgdHlwZSB1c2VkIGluIGRvY3VtZW50YXRpb24gc3RyaW5ncy4iDQog IDs7OnRhYi1vcmRlciAtMQ0KICA6aGVscC1lY2hvICJEZXNjcmliZSB0aGlzIHN5bWJvbCINCiAg OmJ1dHRvbi1mYWNlICdjdXN0b20tbGluaw0KICA6YWN0aW9uICd3aWRnZXQtZG9jdW1lbnRhdGlv bi1saW5rLWFjdGlvbikNCg0KKGRlZnVuIGN1c251LXhyZWYtbml5ICgmcmVzdCBpZ25vcmUpDQog IChtZXNzYWdlICJOb3QgaW1wbGVtZW50ZWQgeWV0IikpDQoNCihkZWZ1biBjdXNudS1kZXNjcmli ZS1mdW5jdGlvbiAod2lkICZyZXN0IGlnbm9yZSkNCiAgKGxldCAoKGZ1biAod2lkZ2V0LWdldCB3 aWQgOndoYXQpKQ0KICAgICAgICApDQogICAgKGRlc2NyaWJlLWZ1bmN0aW9uIGZ1bikpKQ0KDQoo ZGVmdW4gY3VzbnUtaGVscC1pbnNlcnQteHJlZnMgKGhlbHAteHJlZi1idXR0b24pDQogIDs7IFRo ZSBmb2xsb3dpbmcgc2hvdWxkIHByb2JhYmx5IGJlIGFic3RyYWN0ZWQgb3V0Lg0KICAodW53aW5k LXByb3RlY3QNCiAgICAgIChwcm9nbg0KICAgICAgICA7OyBJbmZvIHJlZmVyZW5jZXMNCiAgICAg ICAgKHNhdmUtZXhjdXJzaW9uDQogICAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCBo ZWxwLXhyZWYtaW5mby1yZWdleHAgbmlsIHQpDQogICAgICAgICAgICAobGV0ICgoZGF0YSAobWF0 Y2gtc3RyaW5nIDIpKSkNCiAgICAgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0YQ0KICAgICAgICAg ICAgICAgICh1bmxlc3MgKHN0cmluZy1tYXRjaCAiXihbXildKykiIGRhdGEpDQogICAgICAgICAg ICAgICAgICAoc2V0cSBkYXRhIChjb25jYXQgIihlbWFjcykiIGRhdGEpKSkpDQogICAgICAgICAg ICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gMiAnaGVscC1pbmZvIGRhdGEpKSkpDQogICAg ICAgIDs7IFVSTHMNCiAgICAgICAgKHNhdmUtZXhjdXJzaW9uDQogICAgICAgICAgKHdoaWxlIChy ZS1zZWFyY2gtZm9yd2FyZCBoZWxwLXhyZWYtdXJsLXJlZ2V4cCBuaWwgdCkNCiAgICAgICAgICAg IChsZXQgKChkYXRhIChtYXRjaC1zdHJpbmcgMSkpKQ0KICAgICAgICAgICAgICAoZnVuY2FsbCBo ZWxwLXhyZWYtYnV0dG9uIDEgJ2hlbHAtdXJsIGRhdGEpKSkpDQogICAgICAgIDs7IE11bGUgcmVs YXRlZCBrZXl3b3Jkcy4gIERvIHRoaXMgYmVmb3JlIHRyeWluZw0KICAgICAgICA7OyBgaGVscC14 cmVmLXN5bWJvbC1yZWdleHAnIGJlY2F1c2Ugc29tZSBvZiBNdWxlDQogICAgICAgIDs7IGtleXdv cmRzIGhhdmUgdmFyaWFibGUgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuDQogICAgICAgIChpZiBo ZWxwLXhyZWYtbXVsZS1yZWdleHANCiAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbg0KICAgICAg ICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIGhlbHAteHJlZi1tdWxlLXJlZ2V4cCBu aWwgdCkNCiAgICAgICAgICAgICAgICAobGV0KiAoKGRhdGEgKG1hdGNoLXN0cmluZyA3KSkNCiAg ICAgICAgICAgICAgICAgICAgICAgKHN5bSAoaW50ZXJuLXNvZnQgZGF0YSkpKQ0KICAgICAgICAg ICAgICAgICAgKGNvbmQNCiAgICAgICAgICAgICAgICAgICAoKG1hdGNoLXN0cmluZyAzKSA7IGNv ZGluZyBzeXN0ZW0NCiAgICAgICAgICAgICAgICAgICAgKGFuZCBzeW0gKGNvZGluZy1zeXN0ZW0t cCBzeW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1dHRv biA2ICdoZWxwLWNvZGluZy1zeXN0ZW0gc3ltKSkpDQogICAgICAgICAgICAgICAgICAgKChtYXRj aC1zdHJpbmcgNCkgOyBpbnB1dCBtZXRob2QNCiAgICAgICAgICAgICAgICAgICAgKGFuZCAoYXNz b2MgZGF0YSBpbnB1dC1tZXRob2QtYWxpc3QpDQogICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgaGVscC14cmVmLWJ1dHRvbiA3ICdoZWxwLWlucHV0LW1ldGhvZCBkYXRhKSkpDQogICAg ICAgICAgICAgICAgICAgKChvciAobWF0Y2gtc3RyaW5nIDUpIChtYXRjaC1zdHJpbmcgNikpIDsg Y2hhcnNldA0KICAgICAgICAgICAgICAgICAgICAoYW5kIHN5bSAoY2hhcnNldHAgc3ltKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gNyAnaGVscC1j aGFyYWN0ZXItc2V0IHN5bSkpKQ0KICAgICAgICAgICAgICAgICAgICgoYXNzb2MgZGF0YSBpbnB1 dC1tZXRob2QtYWxpc3QpDQogICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1i dXR0b24gNyAnaGVscC1jaGFyYWN0ZXItc2V0IGRhdGEpKQ0KICAgICAgICAgICAgICAgICAgICgo YW5kIHN5bSAoY29kaW5nLXN5c3RlbS1wIHN5bSkpDQogICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIGhlbHAteHJlZi1idXR0b24gNyAnaGVscC1jb2Rpbmctc3lzdGVtIHN5bSkpDQogICAgICAg ICAgICAgICAgICAgKChhbmQgc3ltIChjaGFyc2V0cCBzeW0pKQ0KICAgICAgICAgICAgICAgICAg ICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9uIDcgJ2hlbHAtY2hhcmFjdGVyLXNldCBzeW0pKSkp KSkpDQogICAgICAgIDs7IFF1b3RlZCBzeW1ib2xzDQogICAgICAgIChzYXZlLWV4Y3Vyc2lvbg0K ICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgaGVscC14cmVmLXN5bWJvbC1yZWdl eHAgbmlsIHQpDQogICAgICAgICAgICAobGV0KiAoKGRhdGEgKG1hdGNoLXN0cmluZyA4KSkNCiAg ICAgICAgICAgICAgICAgICAoc3ltIChpbnRlcm4tc29mdCBkYXRhKSkpDQogICAgICAgICAgICAg IChpZiBzeW0NCiAgICAgICAgICAgICAgICAgIChjb25kDQogICAgICAgICAgICAgICAgICAgKCht YXRjaC1zdHJpbmcgMykgIDsgYHZhcmlhYmxlJyAmYw0KICAgICAgICAgICAgICAgICAgICAoYW5k IChvciAoYm91bmRwIHN5bSkgOyBgdmFyaWFibGUnIGRvZXNuJ3QgZW5zdXJlDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBpdCdzIGFjdHVhbGx5IGJvdW5kDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQgc3ltICd2YXJpYWJsZS1kb2N1bWVudGF0aW9u KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9uIDgg J2hlbHAtdmFyaWFibGUgc3ltKSkpDQogICAgICAgICAgICAgICAgICAgKChtYXRjaC1zdHJpbmcg NCkgICA7IGBmdW5jdGlvbicgJmMNCiAgICAgICAgICAgICAgICAgICAgKGFuZCAoZmJvdW5kcCBz eW0pIDsgc2ltaWxhcmx5DQogICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14 cmVmLWJ1dHRvbiA4ICdoZWxwLWZ1bmN0aW9uIHN5bSkpKQ0KICAgICAgICAgICAgICAgICAgICgo bWF0Y2gtc3RyaW5nIDUpIDsgYGZhY2UnDQogICAgICAgICAgICAgICAgICAgIChhbmQgKGZhY2Vw IHN5bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9u IDggJ2hlbHAtZmFjZSBzeW0pKSkNCiAgICAgICAgICAgICAgICAgICAoKG1hdGNoLXN0cmluZyA2 KSkgOyBub3RoaW5nIGZvciBgc3ltYm9sJw0KICAgICAgICAgICAgICAgICAgICgobWF0Y2gtc3Ry aW5nIDcpDQo7OzsgIHRoaXMgdXNlZDoNCjs7OyAJCQkgICMnKGxhbWJkYSAoYXJnKQ0KOzs7IAkJ CSAgICAgIChsZXQgKChsb2NhdGlvbg0KOzs7IAkJCQkgICAgIChmaW5kLWZ1bmN0aW9uLW5vc2Vs ZWN0IGFyZykpKQ0KOzs7IAkJCQkocG9wLXRvLWJ1ZmZlciAoY2FyIGxvY2F0aW9uKSkNCjs7OyAJ CQkJKGdvdG8tY2hhciAoY2RyIGxvY2F0aW9uKSkpKQ0KICAgICAgICAgICAgICAgICAgICAoZnVu Y2FsbCBoZWxwLXhyZWYtYnV0dG9uIDggJ2hlbHAtZnVuY3Rpb24tZGVmIHN5bSkpDQogICAgICAg ICAgICAgICAgICAgKChhbmQNCiAgICAgICAgICAgICAgICAgICAgIChmYWNlcCBzeW0pDQogICAg ICAgICAgICAgICAgICAgICAoc2F2ZS1tYXRjaC1kYXRhIChsb29raW5nLWF0ICJbIFx0XG5dK2Zh Y2VcXFciKSkpDQogICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24g OCAnaGVscC1mYWNlIHN5bSkpDQogICAgICAgICAgICAgICAgICAgKChhbmQgKG9yIChib3VuZHAg c3ltKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0IHN5bSAndmFyaWFibGUtZG9j dW1lbnRhdGlvbikpDQogICAgICAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgc3ltKSkNCiAg ICAgICAgICAgICAgICAgICAgOzsgV2UgY2FuJ3QgaW50dWl0IHdoZXRoZXIgdG8gdXNlIHRoZQ0K ICAgICAgICAgICAgICAgICAgICA7OyB2YXJpYWJsZSBvciBmdW5jdGlvbiBkb2MgLS0gc3VwcGx5 IGJvdGguDQogICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhlbHAteHJlZi1idXR0b24gOCAn aGVscC1zeW1ib2wgc3ltKSkNCiAgICAgICAgICAgICAgICAgICAoKGFuZA0KICAgICAgICAgICAg ICAgICAgICAgKG9yIChib3VuZHAgc3ltKQ0KICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQg c3ltICd2YXJpYWJsZS1kb2N1bWVudGF0aW9uKSkNCiAgICAgICAgICAgICAgICAgICAgIChvcg0K ICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudGF0aW9uLXByb3BlcnR5DQogICAgICAgICAg ICAgICAgICAgICAgIHN5bSAndmFyaWFibGUtZG9jdW1lbnRhdGlvbikNCiAgICAgICAgICAgICAg ICAgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsDQogICAgICAgICAgICAgICAgICAgICAgICAgIChk b2N1bWVudGF0aW9uLXByb3BlcnR5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kaXJl Y3QtdmFyaWFibGUgc3ltKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlLWRv Y3VtZW50YXRpb24pDQogICAgICAgICAgICAgICAgICAgICAgICAoY3ljbGljLXZhcmlhYmxlLWlu ZGlyZWN0aW9uIG5pbCkpKSkNCiAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVm LWJ1dHRvbiA4ICdoZWxwLXZhcmlhYmxlIHN5bSkpDQogICAgICAgICAgICAgICAgICAgKChmYm91 bmRwIHN5bSkNCiAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgaGVscC14cmVmLWJ1dHRvbiA4 ICdoZWxwLWZ1bmN0aW9uIHN5bSkpKSkpKSkNCiAgICAgICAgOzsgQW4gb2J2aW91cyBjYXNlIG9m IGEga2V5IHN1YnN0aXR1dGlvbjoNCiAgICAgICAgKHNhdmUtZXhjdXJzaW9uDQogICAgICAgICAg KHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZA0KICAgICAgICAgICAgICAgICAgOzsgQXNzdW1lIGNv bW1hbmQgbmFtZSBpcyBvbmx5IHdvcmQgYW5kIHN5bWJvbA0KICAgICAgICAgICAgICAgICAgOzsg Y2hhcmFjdGVycyB0byBnZXQgdGhpbmdzIGxpa2UgYHVzZSBNLXggZm9vLT5iYXInLg0KICAgICAg ICAgICAgICAgICAgOzsgQ29tbWFuZCByZXF1aXJlZCB0byBlbmQgd2l0aCB3b3JkIGNvbnN0aXR1 ZW50DQogICAgICAgICAgICAgICAgICA7OyB0byBhdm9pZCBgLicgYXQgZW5kIG9mIGEgc2VudGVu Y2UuDQogICAgICAgICAgICAgICAgICAiXFw8TS14XFxzLStcXChcXHN3XFwoXFxzd1xcfFxcc19c XCkqXFxzd1xcKSIgbmlsIHQpDQogICAgICAgICAgICAobGV0ICgoc3ltIChpbnRlcm4tc29mdCAo bWF0Y2gtc3RyaW5nIDEpKSkpDQogICAgICAgICAgICAgIChpZiAoZmJvdW5kcCBzeW0pDQogICAg ICAgICAgICAgICAgICAoZnVuY2FsbCBoZWxwLXhyZWYtYnV0dG9uIDEgJ2hlbHAtZnVuY3Rpb24g c3ltKSkpKSkNCiAgICAgICAgOzsgTG9vayBmb3IgY29tbWFuZHMgaW4gd2hvbGUga2V5bWFwIHN1 YnN0aXR1dGlvbnM6DQogICAgICAgIChzYXZlLWV4Y3Vyc2lvbg0KICAgICAgICAgIDs7IE1ha2Ug c3VyZSB0byBmaW5kIHRoZSBmaXJzdCBrZXltYXAuDQogICAgICAgICAgKGdvdG8tY2hhciAocG9p bnQtbWluKSkNCiAgICAgICAgICA7OyBGaW5kIGEgaGVhZGVyIGFuZCB0aGUgY29sdW1uIGF0IHdo aWNoIHRoZSBjb21tYW5kDQogICAgICAgICAgOzsgbmFtZSB3aWxsIGJlIGZvdW5kLg0KDQogICAg ICAgICAgOzsgSWYgdGhlIGtleW1hcCBzdWJzdGl0dXRpb24gaXNuJ3QgdGhlIGxhc3QgdGhpbmcg aW4NCiAgICAgICAgICA7OyB0aGUgZG9jIHN0cmluZywgYW5kIGlmIHRoZXJlIGlzIGFueXRoaW5n IG9uIHRoZQ0KICAgICAgICAgIDs7IHNhbWUgbGluZSBhZnRlciBpdCwgdGhpcyBjb2RlIHdvbid0 IHJlY29nbml6ZSB0aGUgZW5kIG9mIGl0Lg0KICAgICAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZv cndhcmQgIl5rZXkgK2JpbmRpbmdcblxcKC0rICtcXCktK1xuXG4iDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuaWwgdCkNCiAgICAgICAgICAgIChsZXQgKChjb2wgKC0gKG1h dGNoLWVuZCAxKSAobWF0Y2gtYmVnaW5uaW5nIDEpKSkpDQogICAgICAgICAgICAgICh3aGlsZQ0K ICAgICAgICAgICAgICAgICAgKGFuZCAobm90IChlb2JwKSkNCiAgICAgICAgICAgICAgICAgICAg ICAgOzsgU3RvcCBhdCBhIHBhaXIgb2YgYmxhbmsgbGluZXMuDQogICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGxvb2tpbmctYXQgIlxuXFxzLSpcbiIpKSkNCiAgICAgICAgICAgICAgICA7OyBT a2lwIGEgc2luZ2xlIGJsYW5rIGxpbmUuDQogICAgICAgICAgICAgICAgKGFuZCAoZW9scCkgKGZv cndhcmQtbGluZSkpDQogICAgICAgICAgICAgICAgKGVuZC1vZi1saW5lKQ0KICAgICAgICAgICAg ICAgIChza2lwLWNoYXJzLWJhY2t3YXJkICJeIFx0XG4iKQ0KICAgICAgICAgICAgICAgIChpZiAo YW5kICg+PSAoY3VycmVudC1jb2x1bW4pIGNvbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAo bG9va2luZy1hdCAiXFwoXFxzd1xcfFxcc19cXCkrJCIpKQ0KICAgICAgICAgICAgICAgICAgICAo bGV0ICgoc3ltIChpbnRlcm4tc29mdCAobWF0Y2gtc3RyaW5nIDApKSkpDQogICAgICAgICAgICAg ICAgICAgICAgKGlmIChmYm91bmRwIHN5bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgaGVscC14cmVmLWJ1dHRvbiAwICdoZWxwLWZ1bmN0aW9uIHN5bSkpKSkNCiAgICAgICAg ICAgICAgICAoZm9yd2FyZC1saW5lKSkpKSkpDQogICAgOzsoc2V0LXN5bnRheC10YWJsZSBzdGFi KQ0KICAgICkpDQoNCihkZWZ1biBjdXNudS1pbnNlcnQtb3B0aW9ucyAob3B0aW9ucykNCiAgKGJ1 ZmZlci1kaXNhYmxlLXVuZG8pDQogIChzZXRxIGN1c3RvbS1vcHRpb25zDQoJKGlmICg9IChsZW5n dGggb3B0aW9ucykgMSkNCgkgICAgKG1hcGNhciAobGFtYmRhIChlbnRyeSkNCgkJICAgICAgKHdp ZGdldC1jcmVhdGUgKG50aCAxIGVudHJ5KQ0KCQkJCSAgICAgOmRvY3VtZW50YXRpb24tc2hvd24g dA0KCQkJCSAgICAgOmN1c3RvbS1zdGF0ZSAndW5rbm93bg0KCQkJCSAgICAgOnRhZyAoY3VzdG9t LXVubGlzcGlmeS10YWctbmFtZQ0KCQkJCQkgICAobnRoIDAgZW50cnkpKQ0KCQkJCSAgICAgOnZh bHVlIChudGggMCBlbnRyeSkpKQ0KCQkgICAgb3B0aW9ucykNCgkgIChsZXQgKChjb3VudCAwKQ0K CQkobGVuZ3RoIChsZW5ndGggb3B0aW9ucykpKQ0KCSAgICAobWFwY2FyIChsYW1iZGEgKGVudHJ5 KQ0KCQkgICAgICAocHJvZzINCgkJCSAgKG1lc3NhZ2UgIkNyZWF0aW5nIGN1c3RvbWl6YXRpb24g aXRlbXMgLi4uJTJkJSUiDQoJCQkJICAgKC8gKCogMTAwLjAgY291bnQpIGxlbmd0aCkpDQoJCQkg ICh3aWRnZXQtY3JlYXRlIChudGggMSBlbnRyeSkNCgkJCQkJIDp0YWcgKGN1c3RvbS11bmxpc3Bp ZnktdGFnLW5hbWUNCgkJCQkJICAgICAgIChudGggMCBlbnRyeSkpDQoJCQkJCSA6dmFsdWUgKG50 aCAwIGVudHJ5KSkNCgkJCShzZXRxIGNvdW50ICgxKyBjb3VudCkpDQoJCQkodW5sZXNzIChlcSAo cHJlY2VkaW5nLWNoYXIpID9cbikNCgkJCSAgKHdpZGdldC1pbnNlcnQgIlxuIikpDQoJCQkod2lk Z2V0LWluc2VydCAiXG4iKSkpDQoJCSAgICBvcHRpb25zKSkpKQ0KICAodW5sZXNzIChlcSAocHJl Y2VkaW5nLWNoYXIpID9cbikNCiAgICAod2lkZ2V0LWluc2VydCAiXG4iKSkNCiAgKQ0KDQoocHJv dmlkZSAnY3VzLW5ldy11c2VyKQ0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzs7IGN1cy1uZXctdXNlci5lbCBl bmRzIGhlcmUNCg== --001636c923d7adc0c8046e5a55de--