From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Tue, 13 Jun 2017 15:45:35 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> <877f0grrc1.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1141156c4ed2dc0551d95455" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34172) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dKo0v-00043E-UB for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dKo0u-0001AW-Eh for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:53 -0400 Received: from mail-lf0-x235.google.com ([2a00:1450:4010:c07::235]:36793) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dKo0t-00018W-G4 for emacs-orgmode@gnu.org; Tue, 13 Jun 2017 11:45:52 -0400 Received: by mail-lf0-x235.google.com with SMTP id o83so75039079lff.3 for ; Tue, 13 Jun 2017 08:45:49 -0700 (PDT) In-Reply-To: <877f0grrc1.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --001a1141156c4ed2dc0551d95455 Content-Type: multipart/alternative; boundary="001a1141156c4ed2d60551d95453" --001a1141156c4ed2d60551d95453 Content-Type: text/plain; charset="UTF-8" Hi Nicolas, Thanks for one more round of detailed feedback. I have attached the revised patch. On Tue, Jun 13, 2017 at 8:43 AM Nicolas Goaziou wrote: > It should be something like > > * lisp/org.el (org--file-cache): New variable > (org-reset-file-cache): > (org-file-url-p): New function. > (org-mode-restart): Use new function. > > The purpose is to know in what commit the function was introduced, not > what it does. > OK. Done. > The last sentence is not correct. C-c C-c on any settings line resets > the cache, not specifically on "#+SETUPFILE". > I have rephrased it. > I'm worried about this test, and some other below. They require a proper > internet access. Makes sense.. While this feature does need internet access, running 'make test' shouldn't. > Couldn't we fake `url-retrieve-synchronously' using > `cl-letf' so as to produce a buffer with appropriate contents and return > it? Something (untested) like > > (should > (string= > "foo" > (let ((buffer (generate-new-buffer "test-ox"))) > (unwind-protect > (cl-letf (((symbol-function 'url-retrieve-synchronously) > (lambda (&rest _) > (with-current-buffer buffer (insert "HTTP 200 > OK\n\nfoo")) > buffer))) > (org-file-contents "http://whatever")) > (kill-buffer buffer))))) > Thanks. I have used that snippet at applicable places. -- Kaushal Modi --001a1141156c4ed2d60551d95453 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Nicolas,

=
Thanks for one more round of detailed feedback.

I have attached the revised patch.

On Tue, Jun 13, 2017 at 8:43 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wrote:
It should be something like

=C2=A0 * lisp/org.el (org--file-cache): New variable
=C2=A0 (org-reset-file-cache):
=C2=A0 (org-file-url-p): New function.
=C2=A0 (org-mode-restart): Use new function.

The purpose is to know in what commit the function was introduced, not
what it does.

OK. Done.
=C2= =A0
The last sentence is not correct. C= -c C-c on any settings line resets
the cache, not specifically on "#+SETUPFILE".

I have rephrased it.=C2=A0
=C2=A0
I'm worried about this test, and some other below= . They require a proper
internet access.

Makes sense.. While this = feature does need internet access, running 'make test' shouldn'= t.
=C2=A0
Couldn't we fak= e `url-retrieve-synchronously' using
`cl-letf' so as to produce a buffer with appropriate contents and retur= n
it? Something (untested) like

=C2=A0 (should
=C2=A0 =C2=A0(string=3D
=C2=A0 =C2=A0 "foo"
=C2=A0 =C2=A0 (let ((buffer (generate-new-buffer "test-ox")))
=C2=A0 =C2=A0 =C2=A0 (unwind-protect
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cl-letf (((symbol-function 'url-ret= rieve-synchronously)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(lambda (&rest _)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(with-current-buffer buffer (insert "HTTP 200 OK\n\nfoo"= ;))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0buffer)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (org-file-contents "http://whatever"))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (kill-buffer buffer)))))
<= /div>
--001a1141156c4ed2d60551d95453-- --001a1141156c4ed2dc0551d95455 Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15ca22025b9ce4967311> X-Attachment-Id: 15ca22025b9ce4967311 RnJvbSAxZTkyZjVlZDM5NTQxYTQ3M2YyOTViNDE0ZThjODlmNmIwMzkwZjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTMgSnVuIDIwMTcgMTE6NDE6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB bGxvdyBvcmctZmlsZS1jb250ZW50cyB0byBmZXRjaCBmaWxlIGNvbnRlbnRzIGZyb20gYSBVUkwK CiogbGlzcC9vcmcuZWwgKG9yZy0tZmlsZS1jYWNoZSk6IE5ldyB2YXJpYWJsZS4KKG9yZy1yZXNl dC1maWxlLWNhY2hlKToKKG9yZy1maWxlLXVybC1wKTogTmV3IGZ1bmN0aW9uLgoob3JnLW1vZGUt cmVzdGFydCk6IFVzZSBuZXcgZnVuY3Rpb24uCgoqIGxpc3Avb3JnLmVsIChvcmctZmlsZS1jb250 ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3VtZW50IHRvIGJlIGEKVVJMLiAgSWYgdGhlIFVSTCBj b250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQsIHJldHVybiB0aGUgY2FjaGUKY29udGVudHMsIGVs c2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJldHVybiBjb250ZW50cyBvZiB0aGF0LiAgVGhlCmZp bGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQgZWFjaCB0aW1lIGl0IGlzIGRvd25sb2FkZWQuICBB ZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQgTk9DQUNIRS4gIElmIHRoaXMgaXMgbm9uLW5pbCwg dGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRlZCBhZnJlc2guICBVc2UgYG9yZy0tZmlsZS1jYWNo ZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoqIGxpc3Avb3JnLmVsIChvcmctZWRpdC1zcGVjaWFs KTogRG8gbm90IGFsbG93IGVkaXRpbmcgdGhlICJmaWxlIiBpZiBhClVSTCBpcyBzcGVjaWZpZWQg Zm9yIHRoZSAiIytTRVRVUEZJTEUiLgoKKiBsaXNwL294LmVsIChvcmctZXhwb3J0LS1saXN0LWJv dW5kLXZhcmlhYmxlcykKKG9yZy1leHBvcnQtLXByZXBhcmUtZmlsZS1jb250ZW50cyk6CiogbGlz cC9vcmctbWFjcm8uZWwgKG9yZy1tYWNyby0tY29sbGVjdC1tYWNyb3MpIDogQWRhcHQgdG8gdGhl CnBvc3NpYmlsaXR5IHRoYXQgdGhlIGlucHV0IHRvIGBvcmctZmlsZS1jb250ZW50cycgY2FuIGJl IGEgVVJMIHRvby4KCiogZG9jL29yZy50ZXhpIChFeHBvcnQgc2V0dGluZ3MsIEluLWJ1ZmZlciBz ZXR0aW5ncykKKFRoZSB2ZXJ5IGJ1c3kgQy1jIEMtYyBrZXkpOiBNZW50aW9uIHRoYXQgIytTRVRV UEZJTEUga2V5d29yZCBjYW4gbm93CnRha2UgYSBVUkwgYXMgYSB2YWx1ZSwgYW5kIHRoYXQgQy1j IEMtYyBvbiB0aGUgIytTRVRVUEZJTEUgbGluZSB3aWxsCmNsZWFyIHRoZSBvcmcgZmlsZSBjYWNo ZS4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsICh0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50 cy11cmwpCih0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy1maWxlKTogQWRkIHRlc3RzIGZvciBv cmctZmlsZS1jb250ZW50cy4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwgKHRlc3Qtb3JnLWV4 cG9ydC9nZXQtaW5idWZmZXItb3B0aW9ucyk6IEFkZAp0ZXN0IGZvciByZWFkaW5nIHNldHVwZmls ZSBzcGVjaWZpZWQgdmlhIGEgVVJMLgotLS0KIGRvYy9vcmcudGV4aSAgICAgICAgICAgICB8IDM4 ICsrKysrKysrKysrKystLS0tLS0tLS0tLQogZXRjL09SRy1ORVdTICAgICAgICAgICAgIHwgMTIg KysrKysrKy0KIGxpc3Avb3JnLW1hY3JvLmVsICAgICAgICB8IDIyICsrKysrKysrLS0tLS0tCiBs aXNwL29yZy5lbCAgICAgICAgICAgICAgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQogbGlzcC9veC5lbCAgICAgICAgICAgICAgIHwgMzggKysrKysr KysrKysrKystLS0tLS0tLS0tCiB0ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgfCA3NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RpbmcvbGlzcC90 ZXN0LW94LmVsICB8IDMyICsrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAy MzggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL29yZy50 ZXhpIGIvZG9jL29yZy50ZXhpCmluZGV4IDgzMDE2MjgyY2EuLjM2ZDZhYTdhYTMgMTAwNjQ0Ci0t LSBhL2RvYy9vcmcudGV4aQorKysgYi9kb2Mvb3JnLnRleGkKQEAgLTEwNDA2LDE0ICsxMDQwNiwx NCBAQCBvdmVycmlkZSBvcHRpb25zIHNldCBhdCBhIG1vcmUgZ2VuZXJhbCBsZXZlbC4KIAogQGNp bmRleCAjK1NFVFVQRklMRQogSW4tYnVmZmVyIHNldHRpbmdzIG1heSBhcHBlYXIgYW55d2hlcmUg aW4gdGhlIGZpbGUsIGVpdGhlciBkaXJlY3RseSBvcgotaW5kaXJlY3RseSB0aHJvdWdoIGEgZmls ZSBpbmNsdWRlZCB1c2luZyBAc2FtcHsjK1NFVFVQRklMRTogZmlsZW5hbWV9IHN5bnRheC4KLU9w dGlvbiBrZXl3b3JkIHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBi ZSBpbnNlcnRlZCBmcm9tCi10aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0 IGRpc3BhdGNoZXJ9KSB1c2luZyB0aGUgQGNvZGV7SW5zZXJ0Ci10ZW1wbGF0ZX0gY29tbWFuZCBi eSBwcmVzc2luZyBAa2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzIGluZGl2aWR1YWxseSwKLWEg Z29vZCB3YXkgdG8gbWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZSBA Y29kZXsjK30gYW5kIHRoZW4KLXRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55 IGRlc2t0b3BzIGludGVyY2VwdCBAa2Jke00tVEFCfSB0bwotc3dpdGNoIHdpbmRvd3MuICBVc2Ug QGtiZHtDLU0taX0gb3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fSBpbnN0ZWFkLn0gZm9yCi1j b21wbGV0aW9uLgoraW5kaXJlY3RseSB0aHJvdWdoIGEgZmlsZSBpbmNsdWRlZCB1c2luZyBAc2Ft cHsjK1NFVFVQRklMRTogZmlsZW5hbWUgb3IgVVJMfQorc3ludGF4LiAgT3B0aW9uIGtleXdvcmQg c2V0cyB0YWlsb3JlZCB0byBhIHBhcnRpY3VsYXIgYmFjay1lbmQgY2FuIGJlCitpbnNlcnRlZCBm cm9tIHRoZSBleHBvcnQgZGlzcGF0Y2hlciAoQHB4cmVme1RoZSBleHBvcnQgZGlzcGF0Y2hlcn0p IHVzaW5nIHRoZQorQGNvZGV7SW5zZXJ0IHRlbXBsYXRlfSBjb21tYW5kIGJ5IHByZXNzaW5nIEBr ZXl7I30uICBUbyBpbnNlcnQga2V5d29yZHMKK2luZGl2aWR1YWxseSwgYSBnb29kIHdheSB0byBt YWtlIHN1cmUgdGhlIGtleXdvcmQgaXMgY29ycmVjdCBpcyB0byB0eXBlCitAY29kZXsjK30gYW5k IHRoZW4gdG8gdXNlIEBrYmR7TS1Aa2V5e1RBQn19QGZvb3Rub3Rle01hbnkgZGVza3RvcHMgaW50 ZXJjZXB0CitAa2Jke00tVEFCfSB0byBzd2l0Y2ggd2luZG93cy4gIFVzZSBAa2Jke0MtTS1pfSBv ciBAa2Jke0BrZXl7RVNDfSBAa2V5e1RBQn19CitpbnN0ZWFkLn0gZm9yIGNvbXBsZXRpb24uCiAK IFRoZSBleHBvcnQga2V5d29yZHMgYXZhaWxhYmxlIGZvciBldmVyeSBiYWNrLWVuZCwgYW5kIHRo ZWlyIGVxdWl2YWxlbnQgZ2xvYmFsCiB2YXJpYWJsZXMsIGluY2x1ZGU6CkBAIC0xNzE3NCwxNCAr MTcxNzQsMTYgQEAgaGF2ZSBhIGxvd2VyIEFTQ0lJIG51bWJlciB0aGFuIHRoZSBsb3dlc3QgcHJp b3JpdHkuCiBUaGlzIGxpbmUgc2V0cyBhIGRlZmF1bHQgaW5oZXJpdGFuY2UgdmFsdWUgZm9yIGVu dHJpZXMgaW4gdGhlIGN1cnJlbnQKIGJ1ZmZlciwgbW9zdCB1c2VmdWwgZm9yIHNwZWNpZnlpbmcg dGhlIGFsbG93ZWQgdmFsdWVzIG9mIGEgcHJvcGVydHkuCiBAY2luZGV4ICMrU0VUVVBGSUxFCi1A aXRlbSAjK1NFVFVQRklMRTogZmlsZQotVGhlIHNldHVwIGZpbGUgaXMgZm9yIGFkZGl0aW9uYWwg aW4tYnVmZmVyIHNldHRpbmdzLiAgT3JnIGxvYWRzIHRoaXMgZmlsZSBhbmQKLXBhcnNlcyBpdCBm b3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbiBPcmcgb3BlbnMgdGhlIG1haW4gZmlsZS4g IEBrYmR7Qy1jCi1DLWN9IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwgYWxzbyBwYXJzZSBhbmQg bG9hZC4gIE9yZyBhbHNvIHBhcnNlcyBhbmQKLWxvYWRzIHRoZSBmaWxlIGR1cmluZyBub3JtYWwg ZXhwb3J0aW5nIHByb2Nlc3MuICBPcmcgcGFyc2VzIHRoZSBjb250ZW50cyBvZgotdGhpcyBmaWxl IGFzIGlmIGl0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIg T3JnIGZpbGUuCi1UbyB2aXNpdCB0aGUgZmlsZSwgQGtiZHtDLWMgJ30gd2hpbGUgdGhlIGN1cnNv ciBpcyBvbiB0aGUgbGluZSB3aXRoIHRoZSBmaWxlCi1uYW1lLgorQGl0ZW0gIytTRVRVUEZJTEU6 IGZpbGUgb3IgVVJMCitUaGUgc2V0dXAgZmlsZSBvciBhIFVSTCBwb2ludGluZyB0byBzdWNoIGZp bGUgaXMgZm9yIGFkZGl0aW9uYWwgaW4tYnVmZmVyCitzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlz IGZpbGUgYW5kIHBhcnNlcyBpdCBmb3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbgorT3Jn IG9wZW5zIHRoZSBtYWluIGZpbGUuICBJZiBVUkwgaXMgc3BlY2lmaWVkLCB0aGUgY29udGVudHMg YXJlIGRvd25sb2FkZWQKK2FuZCBzdG9yZWQgaW4gYSB0ZW1wb3JhcnkgZmlsZSBjYWNoZS4gIEBr YmR7Qy1jIEMtY30gb24gdGhlIHNldHRpbmdzIGxpbmUKK3dpbGwgcGFyc2UgYW5kIGxvYWQgdGhl IGZpbGUsIGFuZCBhbHNvIHJlc2V0IHRoZSB0ZW1wb3JhcnkgZmlsZSBjYWNoZS4gIE9yZworYWxz byBwYXJzZXMgYW5kIGxvYWRzIHRoZSBkb2N1bWVudCBkdXJpbmcgbm9ybWFsIGV4cG9ydGluZyBw cm9jZXNzLiAgT3JnCitwYXJzZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQgYXMgaWYg aXQgd2FzIGluY2x1ZGVkIGluIHRoZSBidWZmZXIuICBJdAorY2FuIGJlIGFub3RoZXIgT3JnIGZp bGUuICBUbyB2aXNpdCB0aGUgZmlsZSAobm90IGEgVVJMKSwgQGtiZHtDLWMgJ30gd2hpbGUKK3Ro ZSBjdXJzb3IgaXMgb24gdGhlIGxpbmUgd2l0aCB0aGUgZmlsZSBuYW1lLgogQGl0ZW0gIytTVEFS VFVQOgogQGNpbmRleCAjK1NUQVJUVVAKIFN0YXJ0dXAgb3B0aW9ucyBPcmcgdXNlcyB3aGVuIGZp cnN0IHZpc2l0aW5nIGEgZmlsZS4KQEAgLTE3NDIyLDcgKzE3NDI0LDkgQEAgSWYgYW55IGhpZ2hs aWdodHMgc2hvd24gaW4gdGhlIGJ1ZmZlciBmcm9tIHRoZSBjcmVhdGlvbiBvZiBhIHNwYXJzZSB0 cmVlLCBvcgogZnJvbSBjbG9jayBkaXNwbGF5LCByZW1vdmUgc3VjaCBoaWdobGlnaHRzLgogQGl0 ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWFsIEBjb2RleyMrS0VZV09S RH0gbGluZXMsIHNjYW4gdGhlCi1idWZmZXIgZm9yIHRoZXNlIGxpbmVzIGFuZCB1cGRhdGUgdGhl IGluZm9ybWF0aW9uLgorYnVmZmVyIGZvciB0aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZv cm1hdGlvbi4gIEFsc28gcmVzZXQgdGhlIE9yZyBmaWxlCitjYWNoZSB1c2VkIHRvIHRlbXBvcmFy eSBzdG9yZSB0aGUgY29udGVudHMgb2YgVVJMcyB1c2VkIGFzIHZhbHVlcyBmb3IKK2tleXdvcmRz IGxpa2UgQGNvZGV7IytTRVRVUEZJTEV9LgogQGl0ZW0KIElmIHRoZSBjdXJzb3IgaXMgaW5zaWRl IGEgdGFibGUsIHJlYWxpZ24gdGhlIHRhYmxlLiAgVGhlIHRhYmxlIHJlYWxpZ25zIGV2ZW4KIGlm IGF1dG9tYXRpYyB0YWJsZSBlZGl0b3IgaXMgdHVybmVkIG9mZi4KZGlmZiAtLWdpdCBhL2V0Yy9P UkctTkVXUyBiL2V0Yy9PUkctTkVXUwppbmRleCBlYjBlMTFjNGFhLi44Mzk3MmQ0ZTk0IDEwMDY0 NAotLS0gYS9ldGMvT1JHLU5FV1MKKysrIGIvZXRjL09SRy1ORVdTCkBAIC0yMDMsNyArMjAzLDcg QEAgbWFudWFsIGZvciBkZXRhaWxzLgogKioqKiBBZGQgZ2xvYmFsIG1hY3JvcyB0aHJvdWdoIH5v cmctZXhwb3J0LWdsb2JhbC1tYWNyb3N+CiBXaXRoIHRoaXMgdmFyaWFibGUsIG9uZSBjYW4gZGVm aW5lIG1hY3JvcyBhdmFpbGFibGUgZm9yIGFsbCBkb2N1bWVudHMuCiAqKioqIE5ldyBrZXl3b3Jk IH4jK0VYUE9SVF9GSUxFX05BTUV+Ci1TaW1pcmFscnkgdG8gfjpFWFBPUlRfRklMRV9OQU1FOn4g cHJvcGVydHksIHRoaXMga2V5d29yZCBhbGxvd3MgdGhlCitTaW1pbGFybHkgdG8gfjpFWFBPUlRf RklMRV9OQU1FOn4gcHJvcGVydHksIHRoaXMga2V5d29yZCBhbGxvd3MgdGhlCiB1c2VyIHRvIHNw ZWNpZnkgdGhlIG5hbWUgb2YgdGhlIG91dHB1dCBmaWxlIHVwb24gZXhwb3J0aW5nIHRoZQogZG9j dW1lbnQuICBUaGlzIGFsc28gaGFzIGFuIGVmZmVjdCBvbiBwdWJsaXNoaW5nLgogKioqKiBIb3Jp em9udGFsIHJ1bGVzIGFyZSBubyBsb25nZXIgaWdub3JlZCBpbiBMYVRlWCB0YWJsZSBtYXRoIG1v ZGUKQEAgLTI0MCw2ICsyNDAsMTYgQEAgd2hpY2ggY2F1c2VzIHJlZmlsZSB0YXJnZXRzIHRvIGJl IHByZWZpeGVkIHdpdGggdGhlIGJ1ZmZlcuKAmXMKIG5hbWUuIFRoaXMgaXMgcGFydGljdWxhcmx5 IHVzZWZ1bCB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogfnVuaXF1aWZ5LmVsfi4KIAor KioqIH5vcmctZmlsZS1jb250ZW50c34gbm93IGFsbG93cyB0aGUgRklMRSBhcmd1bWVudCB0byBi ZSBhIFVSTC4KK1RoaXMgYWxsb3dzIH4jK1NFVFVQRklMRTp+IHRvIGFjY2VwdCBhIFVSTCBpbnN0 ZWFkIG9mIGEgbG9jYWwgZmlsZQorcGF0aC4gIFRoZSBVUkwgY29udGVudHMgYXJlIGF1dG8tZG93 bmxvYWRlZCBhbmQgc2F2ZWQgdG8gYSB0ZW1wb3JhcnkKK2NhY2hlIH5vcmctLWZpbGUtY2FjaGV+ LiAgQSBuZXcgb3B0aW9uYWwgYXJndW1lbnQgfk5PQ0FDSEV+IGlzIGFkZGVkCit0byB+b3JnLWZp bGUtY29udGVudHN+LgorCisqKiogfm9yZy1tb2RlLXJlc3RhcnR+IG5vdyByZXNldHMgdGhlIG5l d2x5IGFkZGVkIH5vcmctLWZpbGUtY2FjaGV+LgorVXNpbmcgfkMtYyBDLWN+IG9uIGFueSBrZXl3 b3JkIChsaWtlIH4jK1NFVFVQRklMRX4pIHdpbGwgcmVzZXQgdGhlCit0aGF0IGZpbGUgY2FjaGUu CisKICoqIFJlbW92ZWQgZnVuY3Rpb25zCiAKICoqKiBPcmcgVGltZWxpbmUKZGlmZiAtLWdpdCBh L2xpc3Avb3JnLW1hY3JvLmVsIGIvbGlzcC9vcmctbWFjcm8uZWwKaW5kZXggNjc1OGQzMWYwNi4u ODI4YzVlOWUzZCAxMDA2NDQKLS0tIGEvbGlzcC9vcmctbWFjcm8uZWwKKysrIGIvbGlzcC9vcmct bWFjcm8uZWwKQEAgLTU1LDcgKzU1LDggQEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50 LW1hY3JvLXBhcnNlciAib3JnLWVsZW1lbnQiICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVs ZW1lbnQtcHJvcGVydHkgIm9yZy1lbGVtZW50IiAocHJvcGVydHkgZWxlbWVudCkpCiAoZGVjbGFy ZS1mdW5jdGlvbiBvcmctZWxlbWVudC10eXBlICJvcmctZWxlbWVudCIgKGVsZW1lbnQpKQotKGRl Y2xhcmUtZnVuY3Rpb24gb3JnLWZpbGUtY29udGVudHMgIm9yZyIgKGZpbGUgJm9wdGlvbmFsIG5v ZXJyb3IpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWZpbGUtY29udGVudHMgIm9yZyIgKGZpbGUg Jm9wdGlvbmFsIG5vZXJyb3Igbm9jYWNoZSkpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZmlsZS11 cmwtcCAib3JnIiAoZmlsZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctaW4tY29tbWVudGVkLWhl YWRpbmctcCAib3JnIiAoJm9wdGlvbmFsIG5vLWluaGVyaXRhbmNlKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1tb2RlICJvcmciICgpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMtYmFja2VuZCAidmMt aG9va3MiIChmKSkKQEAgLTEwMiwxNiArMTAzLDIxIEBAIFJldHVybiBhbiBhbGlzdCBjb250YWlu aW5nIGFsbCBtYWNybyB0ZW1wbGF0ZXMgZm91bmQuIgogCQkJCSAoaWYgb2xkLWNlbGwgKHNldGNk ciBvbGQtY2VsbCB0ZW1wbGF0ZSkKIAkJCQkgICAocHVzaCAoY29ucyBuYW1lIHRlbXBsYXRlKSB0 ZW1wbGF0ZXMpKSkpCiAJCQkgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJICAgKGxldCAoKGZp bGUgKGV4cGFuZC1maWxlLW5hbWUKLQkJCQkJKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwi IiB2YWwpKSkpCi0JCQkgICAgICh1bmxlc3MgKG1lbWJlciBmaWxlIGZpbGVzKQorCQkJICAgKGxl dCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiAob3JnLXRyaW0gdmFsKSkp CisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICh1cmkgKGlm IHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkp CisJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKwkJCSAgICAgKHVubGVz cyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCSAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBm aWxlKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgKHNldHEgZGVmYXVsdC1kaXJl Y3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkpKQogCQkJCSAob3JnLW1vZGUp Ci0JCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIGZpbGUgJ25vZXJyb3IpKQorCQkJCSAo aW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAoc2V0cSB0ZW1w bGF0ZXMKLQkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgZmlsZSBmaWxl cykKKwkJCQkgICAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgKGNvbnMgdXJpIGZpbGVzKQog CQkJCQkJdGVtcGxhdGVzKSkpKSkpKSkpKSkKIAkJdGVtcGxhdGVzKSkpKQogICAgIChmdW5jYWxs IGNvbGxlY3QtbWFjcm9zIG5pbCBuaWwpKSkKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLmVsIGIvbGlz cC9vcmcuZWwKaW5kZXggMjEwMWVjN2QxMy4uMTkxOTkwZGI3NSAxMDA2NDQKLS0tIGEvbGlzcC9v cmcuZWwKKysrIGIvbGlzcC9vcmcuZWwKQEAgLTE4MSw2ICsxODEsOCBAQCBTdGFycyBhcmUgcHV0 IGluIGdyb3VwIDEgYW5kIHRoZSB0cmltbWVkIGJvZHkgaW4gZ3JvdXAgMi4iKQogKGRlY2xhcmUt ZnVuY3Rpb24gb3JnLWV4cG9ydC1nZXQtZW52aXJvbm1lbnQgIm94IiAoJm9wdGlvbmFsIGJhY2tl bmQgc3VidHJlZXAgZXh0LXBsaXN0KSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1sYXRleC1tYWtl LXByZWFtYmxlICJveC1sYXRleCIgKGluZm8gJm9wdGlvbmFsIHRlbXBsYXRlIHNuaXBwZXQ/KSkK IAorKGRlZnZhciBmZmFwLXVybC1yZWdleHApCQk7U2lsZW5jZSBieXRlLWNvbXBpbGVyCisKIChk ZWZzdWJzdCBvcmctdW5pcXVpZnkgKGxpc3QpCiAgICJOb24tZGVzdHJ1Y3RpdmVseSByZW1vdmUg ZHVwbGljYXRlIGVsZW1lbnRzIGZyb20gTElTVC4iCiAgIChsZXQgKChyZXMgKGNvcHktc2VxdWVu Y2UgbGlzdCkpKSAoZGVsZXRlLWR1cHMgcmVzKSkpCkBAIC01MjgwLDE3ICs1MjgyLDYyIEBAIGEg c3RyaW5nLCBzdW1tYXJpemluZyBUQUdTLCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4iCiAJICAgKHNl dHEgY3VycmVudC1ncm91cCAobGlzdCB0YWcpKSkpCiAJKF8gbmlsKSkpKSkKIAotKGRlZnVuIG9y Zy1maWxlLWNvbnRlbnRzIChmaWxlICZvcHRpb25hbCBub2Vycm9yKQotICAiUmV0dXJuIHRoZSBj b250ZW50cyBvZiBGSUxFLCBhcyBhIHN0cmluZy4iCi0gIChpZiAoYW5kIGZpbGUgKGZpbGUtcmVh ZGFibGUtcCBmaWxlKSkKKyhkZWZ2YXIgb3JnLS1maWxlLWNhY2hlIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgIydlcXVhbCkKKyAgIkhhc2ggdGFibGUgdG8gc3RvcmUgY29udGVudHMgb2YgZmlsZXMg cmVmZXJlbmNlZCB2aWEgYSBVUkwuCitUaGlzIGlzIHRoZSBjYWNoZSBvZiBmaWxlIFVSTHMgcmVh ZCB1c2luZyBgb3JnLWZpbGUtY29udGVudHMnLiIpCisKKyhkZWZ1biBvcmctcmVzZXQtZmlsZS1j YWNoZSAoKQorICAiUmVzZXQgdGhlIGNhY2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgYnkgYG9yZy1m aWxlLWNvbnRlbnRzJy4iCisgIChjbHJoYXNoIG9yZy0tZmlsZS1jYWNoZSkpCisKKyhkZWZ1biBv cmctZmlsZS11cmwtcCAoZmlsZSkKKyAgIk5vbi1uaWwgaWYgRklMRSBpcyBhIFVSTC4iCisgIChy ZXF1aXJlICdmZmFwKQorICAoc3RyaW5nLW1hdGNoLXAgZmZhcC11cmwtcmVnZXhwIGZpbGUpKQor CisoZGVmdW4gb3JnLWZpbGUtY29udGVudHMgKGZpbGUgJm9wdGlvbmFsIG5vZXJyb3Igbm9jYWNo ZSkKKyAgIlJldHVybiB0aGUgY29udGVudHMgb2YgRklMRSwgYXMgYSBzdHJpbmcuCisKK0ZJTEUg Y2FuIGJlIGEgZmlsZSBuYW1lIG9yIFVSTC4KKworSWYgRklMRSBpcyBhIFVSTCwgZG93bmxvYWQg dGhlIGNvbnRlbnRzLiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUKK2FscmVhZHkgY2FjaGVkIGlu IHRoZSBgb3JnLS1maWxlLWNhY2hlJyBoYXNoIHRhYmxlLCB0aGUgZG93bmxvYWQgc3RlcAoraXMg c2tpcHBlZC4KKworSWYgTk9FUlJPUiBpcyBub24tbmlsLCBpZ25vcmUgdGhlIGVycm9yIHdoZW4g dW5hYmxlIHRvIHJlYWQgdGhlIEZJTEUKK2Zyb20gZmlsZSBvciBVUkwuCisKK0lmIE5PQ0FDSEUg aXMgbm9uLW5pbCwgZG8gYSBmcmVzaCBmZXRjaCBvZiBGSUxFIGV2ZW4gaWYgY2FjaGVkIHZlcnNp b24KK2lzIGF2YWlsYWJsZS4gIFRoaXMgb3B0aW9uIGFwcGxpZXMgb25seSBpZiBGSUxFIGlzIGEg VVJMLiIKKyAgKGxldCogKChpcy11cmwgKG9yZy1maWxlLXVybC1wIGZpbGUpKQorICAgICAgICAg KGNhY2hlIChhbmQgaXMtdXJsCisgICAgICAgICAgICAgICAgICAgICAobm90IG5vY2FjaGUpCisg ICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCBmaWxlIG9yZy0tZmlsZS1jYWNoZSkpKSkKKyAg ICAoY29uZAorICAgICAoY2FjaGUpCisgICAgIChpcy11cmwKKyAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyICh1cmwtcmV0cmlldmUtc3luY2hyb25vdXNseSBmaWxlKQorCShnb3RvLWNoYXIgKHBv aW50LW1pbikpCisJOzsgTW92ZSBwb2ludCB0byBhZnRlciB0aGUgdXJsLXJldHJpZXZlIGhlYWRl ci4KKwkoc2VhcmNoLWZvcndhcmQgIlxuXG4iIG5pbCA6bW92ZSkKKwk7OyBTZWFyY2ggZm9yIHRo ZSBzdWNjZXNzIGNvZGUgb25seSBpbiB0aGUgdXJsLXJldHJpZXZlIGhlYWRlci4KKwkoaWYgKHNh dmUtZXhjdXJzaW9uIChyZS1zZWFyY2gtYmFja3dhcmQgIkhUVFAuKlxccy0rMjAwXFxzLU9LIiBu aWwgOm5vZXJyb3IpKQorCSAgICA7OyBVcGRhdGUgdGhlIGNhY2hlIGBvcmctLWZpbGUtY2FjaGUn IGFuZCByZXR1cm4gY29udGVudHMuCisJICAgIChwdXRoYXNoIGZpbGUKKwkJICAgICAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKHBvaW50LW1heCkpCisJCSAgICAgb3Jn LS1maWxlLWNhY2hlKQorCSAgKGZ1bmNhbGwgKGlmIG5vZXJyb3IgIydtZXNzYWdlICMndXNlci1l cnJvcikKKwkJICAgIlVuYWJsZSB0byBmZXRjaCBmaWxlIGZyb20gJVMiCisJCSAgIGZpbGUpKSkp CisgICAgICh0CiAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCShpbnNlcnQtZmlsZS1jb250ZW50 cyBmaWxlKQotCShidWZmZXItc3RyaW5nKSkKLSAgICAoZnVuY2FsbCAoaWYgbm9lcnJvciAnbWVz c2FnZSAnZXJyb3IpCi0JICAgICAiQ2Fubm90IHJlYWQgZmlsZSBcIiVzXCIlcyIKLQkgICAgIGZp bGUKLQkgICAgIChsZXQgKChmcm9tIChidWZmZXItZmlsZS1uYW1lIChidWZmZXItYmFzZS1idWZm ZXIpKSkpCi0JICAgICAgIChpZiBmcm9tIChjb25jYXQgIiAocmVmZXJlbmNlZCBpbiBmaWxlIFwi IiBmcm9tICJcIikiKSAiIikpKSkpCisgICAgICAgIChjb25kaXRpb24tY2FzZSBlcnIKKwkgICAg KHByb2duCisJICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCisJICAgICAgKGJ1ZmZl ci1zdHJpbmcpKQorCSAgKGZpbGUtZXJyb3IKKyAgICAgICAgICAgKGZ1bmNhbGwgKGlmIG5vZXJy b3IgIydtZXNzYWdlICMndXNlci1lcnJvcikKKwkJICAgIChlcnJvci1tZXNzYWdlLXN0cmluZyBl cnIpKSkpKSkpKSkKIAogKGRlZnVuIG9yZy1leHRyYWN0LWxvZy1zdGF0ZS1zZXR0aW5ncyAoeCkK ICAgIkV4dHJhY3QgdGhlIGxvZyBzdGF0ZSBzZXR0aW5nIGZyb20gYSBUT0RPIGtleXdvcmQgc3Ry aW5nLgpAQCAtMjA2ODcsNyArMjA3MzQsOSBAQCBPdGhlcndpc2UsIHJldHVybiBhIHVzZXIgZXJy b3IuIgogCSAgICAoZm9ybWF0ICJbWyVzXV0iCiAJCSAgICAoZXhwYW5kLWZpbGUtbmFtZQogCQkg ICAgIChsZXQgKCh2YWx1ZSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOnZhbHVlIGVsZW1lbnQpKSkK LQkJICAgICAgIChjb25kICgobm90IChvcmctc3RyaW5nLW53LXAgdmFsdWUpKQorCQkgICAgICAg KGNvbmQgKChvcmctZmlsZS11cmwtcCB2YWx1ZSkKKwkJCSAgICAgICh1c2VyLWVycm9yICJUaGUg ZmlsZSBpcyBzcGVjaWZpZWQgYXMgYSBVUkwsIGNhbm5vdCBiZSBlZGl0ZWQiKSkKKwkJCSAgICAg KChub3QgKG9yZy1zdHJpbmctbnctcCB2YWx1ZSkpCiAJCQkgICAgICAodXNlci1lcnJvciAiTm8g ZmlsZSB0byBlZGl0IikpCiAJCQkgICAgICgoc3RyaW5nLW1hdGNoICJcXGBcIlxcKC4qP1xcKVwi IiB2YWx1ZSkKIAkJCSAgICAgIChtYXRjaC1zdHJpbmcgMSB2YWx1ZSkpCkBAIC0yMDk1MSw3ICsy MTAwMCw4IEBAIFVzZSBgXFxbb3JnLWVkaXQtc3BlY2lhbF0nIHRvIGVkaXQgdGFibGUuZWwgdGFi bGVzIikpCiAgICAgKGZ1bmNhbGwgbWFqb3ItbW9kZSkKICAgICAoaGFjay1sb2NhbC12YXJpYWJs ZXMpCiAgICAgKHdoZW4gKGFuZCBpbmRlbnQtc3RhdHVzIChub3QgKGJvdW5kLWFuZC10cnVlLXAg b3JnLWluZGVudC1tb2RlKSkpCi0gICAgICAob3JnLWluZGVudC1tb2RlIC0xKSkpCisgICAgICAo b3JnLWluZGVudC1tb2RlIC0xKSkKKyAgICAob3JnLXJlc2V0LWZpbGUtY2FjaGUpKQogICAobWVz c2FnZSAiJXMgcmVzdGFydGVkIiBtYWpvci1tb2RlKSkKIAogKGRlZnVuIG9yZy1raWxsLW5vdGUt b3Itc2hvdy1icmFuY2hlcyAoKQpkaWZmIC0tZ2l0IGEvbGlzcC9veC5lbCBiL2xpc3Avb3guZWwK aW5kZXggNTNkMzViYmE4Zi4uM2I3OTNhMDBmMiAxMDA2NDQKLS0tIGEvbGlzcC9veC5lbAorKysg Yi9saXNwL294LmVsCkBAIC0xNDk5LDE3ICsxNDk5LDIwIEBAIEFzc3VtZSBidWZmZXIgaXMgaW4g T3JnIG1vZGUuICBOYXJyb3dpbmcsIGlmIGFueSwgaXMgaWdub3JlZC4iCiAJCQkgKGNvbmQKIAkJ CSAgOzsgT3B0aW9ucyBpbiBgb3JnLWV4cG9ydC1zcGVjaWFsLWtleXdvcmRzJy4KIAkJCSAgKChl cXVhbCBrZXkgIlNFVFVQRklMRSIpCi0JCQkgICAobGV0ICgoZmlsZQotCQkJCSAgKGV4cGFuZC1m aWxlLW5hbWUKLQkJCQkgICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJp bSB2YWwpKSkpKQorCQkJICAgKGxldCogKCh1cmkgKG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIg IlwiIiAob3JnLXRyaW0gdmFsKSkpCisJCQkJICAodXJpLWlzLXVybCAob3JnLWZpbGUtdXJsLXAg dXJpKSkKKwkJCQkgICh1cmkgKGlmIHVyaS1pcy11cmwKKwkJCQkJICAgdXJpCisJCQkJCSAoZXhw YW5kLWZpbGUtbmFtZSB1cmkpKSkpCiAJCQkgICAgIDs7IEF2b2lkIGNpcmN1bGFyIGRlcGVuZGVu Y2llcy4KLQkJCSAgICAgKHVubGVzcyAobWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAgICh1bmxl c3MgKG1lbWJlciB1cmkgZmlsZXMpCiAJCQkgICAgICAgKHdpdGgtdGVtcC1idWZmZXIKLQkJCQkg KHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKLQkJCQkgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxl KSkKLQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJ ICh1bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5CisJCQkJ CSAoZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkpKSkKKwkJCQkgKGluc2VydCAob3JnLWZpbGUtY29u dGVudHMgdXJpICdub2Vycm9yKSkKIAkJCQkgKGxldCAoKG9yZy1pbmhpYml0LXN0YXJ0dXAgdCkp IChvcmctbW9kZSkpCi0JCQkJIChmdW5jYWxsIGdldC1vcHRpb25zIChjb25zIGZpbGUgZmlsZXMp KSkpKSkKKwkJCQkgKGZ1bmNhbGwgZ2V0LW9wdGlvbnMgKGNvbnMgdXJpIGZpbGVzKSkpKSkpCiAJ CQkgICgoZXF1YWwga2V5ICJPUFRJT05TIikKIAkJCSAgIChzZXRxIHBsaXN0CiAJCQkJIChvcmct Y29tYmluZS1wbGlzdHMKQEAgLTE2NDcsMTcgKzE2NTAsMjIgQEAgYW4gYWxpc3Qgd2hlcmUgYXNz b2NpYXRpb25zIGFyZSAoVkFSSUFCTEUtTkFNRSBWQUxVRSkuIgogCQkJCSAgICAgICJCSU5EIikK IAkJCSAgICAgICAocHVzaCAocmVhZCAoZm9ybWF0ICIoJXMpIiB2YWwpKSBhbGlzdCkKIAkJCSAg ICAgOzsgRW50ZXIgc2V0dXAgZmlsZS4KLQkJCSAgICAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxl LW5hbWUKLQkJCQkJICAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkKLQkJ CSAgICAgICAodW5sZXNzIChtZW1iZXIgZmlsZSBmaWxlcykKKwkJCSAgICAgKGxldCogKCh1cmkg KG9yZy11bmJyYWNrZXQtc3RyaW5nICJcIiIgIlwiIiB2YWwpKQorCQkJCSAgICAodXJpLWlzLXVy bCAob3JnLWZpbGUtdXJsLXAgdXJpKSkKKwkJCQkgICAgKHVyaSAoaWYgdXJpLWlzLXVybAorCQkJ CQkgICAgIHVyaQorCQkJCQkgICAoZXhwYW5kLWZpbGUtbmFtZSB1cmkpKSkpCisJCQkgICAgICAg OzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCQkJICAgICAgICh1bmxlc3MgKG1lbWJl ciB1cmkgZmlsZXMpCiAJCQkJICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJICAgKHNldHEgZGVmYXVs dC1kaXJlY3RvcnkKLQkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJCSAgICh1 bmxlc3MgdXJpLWlzLXVybAorCQkJCSAgICAgKHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkJ ICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgdXJpKSkpCiAJCQkJICAgKGxldCAoKG9yZy1pbmhpYml0 LXN0YXJ0dXAgdCkpIChvcmctbW9kZSkpCi0JCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVu dHMgZmlsZSAnbm9lcnJvcikpCisJCQkJICAgKGluc2VydCAob3JnLWZpbGUtY29udGVudHMgdXJp ICdub2Vycm9yKSkKIAkJCQkgICAoc2V0cSBhbGlzdAogCQkJCQkgKGZ1bmNhbGwgY29sbGVjdC1i aW5kCi0JCQkJCQkgIChjb25zIGZpbGUgZmlsZXMpCisJCQkJCQkgIChjb25zIHVyaSBmaWxlcykK IAkJCQkJCSAgYWxpc3QpKSkpKSkpKSkpCiAJCSAgIGFsaXN0KSkpKSkKICAgICAgIDs7IFJldHVy biB2YWx1ZSBpbiBhcHByb3ByaWF0ZSBvcmRlciBvZiBhcHBlYXJhbmNlLgpkaWZmIC0tZ2l0IGEv dGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsCmluZGV4 IGU1NWVlMDc3YjguLjM1Njc0YmFmNGEgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9y Zy5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKQEAgLTY0OTgsNiArNjQ5OCw4MSBA QCBQYXJhZ3JhcGg8cG9pbnQ+IgogICAgICAob3JnLXNob3ctc2V0LXZpc2liaWxpdHkgJ21pbmlt YWwpCiAgICAgIChvcmctaW52aXNpYmxlLXAyKSkpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1vcmcv b3JnLWZpbGUtY29udGVudHMtZmlsZSAoKQorICAiVGVzdCBgb3JnLWZpbGUtY29udGVudHMnIHdp dGggYSBmaWxlIGFzIGlucHV0LiIKKyAgKHNob3VsZAorICAgKHN0cmluZz0gIiMrQklORDogdmFy aWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytTRUxFQ1Rf VEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiIChvcmctZmlsZS1jb250ZW50 cyAoZXhwYW5kLWZpbGUtbmFtZSAic2V0dXBmaWxlMy5vcmciCisJCQkJICAgICAgIChjb25jYXQg b3JnLXRlc3QtZGlyICJleGFtcGxlcy8iKSkpKSkKKyAgCisgIChsZXQgKChpbnZhbGlkLWZpbGUg InRoaXMtZmlsZS1tdXN0LW5vdC1leGlzdCIpKQorICAgIDs7IFRocm93IGVycm9yIHdoZW4gdHJ5 aW5nIHRvIGFjY2VzcyBhbiBpbnZhbGlkIGZpbGUuCisgICAgKHNob3VsZC1lcnJvcgorICAgICAo b3JnLWZpbGUtY29udGVudHMgaW52YWxpZC1maWxlKSkKKyAgICA7OyBUcnkgdG8gYWNjZXNzIGFu IGludmFsaWQgZmlsZSwgYnV0IGRvIG5vdCB0aHJvdyBhbiBlcnJvci4KKyAgICAoc2hvdWxkCisg ICAgIChzdHJpbmctbWF0Y2gtcCAiXFxgT3BlbmluZyBpbnB1dCBmaWxlOiBObyBzdWNoIGZpbGUg b3IgZGlyZWN0b3J5IgorCQkgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLWZpbGUgOm5v ZXJyb3IpKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1vcmcvb3JnLWZpbGUtY29udGVudHMtdXJs ICgpCisgICJUZXN0IGBvcmctZmlsZS1jb250ZW50cycgd2l0aCBhIFVSTCBhcyBpbnB1dC4iCisg IChzaG91bGQKKyAgIChzdHJpbmc9ICJmb28iCisJICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRl LW5ldy1idWZmZXIgInVybC1yZXRyaWV2ZS1vdXRwdXQiKSkpCisJICAgICAgKHVud2luZC1wcm90 ZWN0CisJCSAgOzsgU2ltdWxhdGUgc3VjY2Vzc2Z1bCByZXRyaWV2YWwgb2YgYSBVUkwuCisJCSAg KGNsLWxldGYgKCgoc3ltYm9sLWZ1bmN0aW9uICd1cmwtcmV0cmlldmUtc3luY2hyb25vdXNseSkK KwkJCSAgICAgKGxhbWJkYSAoJnJlc3RfKQorCQkJICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IGJ1ZmZlcgorCQkJCSAoaW5zZXJ0ICJIVFRQLzEuMSAyMDAgT0tcblxuZm9vIikpCisJCQkgICAg ICAgYnVmZmVyKSkpCisJCSAgICAob3JnLWZpbGUtY29udGVudHMgImh0dHA6Ly9zb21lLXZhbGlk LXVybCIpKQorCQkoa2lsbC1idWZmZXIgYnVmZmVyKSkpKSkKKworICAobGV0ICgoaW52YWxpZC11 cmwgImh0dHA6Ly90aGlzLXVybC1tdXN0LW5vdC1leGlzdCIpKQorICAgIDs7IFRocm93IGVycm9y IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBhbiBpbnZhbGlkIFVSTC4KKyAgICAoc2hvdWxkLWVycm9y CisgICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgInVybC1yZXRyaWV2ZS1v dXRwdXQiKSkpCisgICAgICAgKHVud2luZC1wcm90ZWN0CisJICAgOzsgU2ltdWxhdGUgdW5zdWNj ZXNzZnVsIHJldHJpZXZhbCBvZiBhIFVSTC4KKwkgICAoY2wtbGV0ZiAoKChzeW1ib2wtZnVuY3Rp b24gJ3VybC1yZXRyaWV2ZS1zeW5jaHJvbm91c2x5KQorCQkgICAgICAobGFtYmRhICgmcmVzdF8p CisJCQkod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKKwkJCSAgKGluc2VydCAiSFRUUC8xLjEg NDA0IE5vdCBmb3VuZFxuXG5kb2VzIG5vdCBtYXR0ZXIiKSkKKwkJCWJ1ZmZlcikpKQorCSAgICAg KG9yZy1maWxlLWNvbnRlbnRzIGludmFsaWQtdXJsKSkKKwkgKGtpbGwtYnVmZmVyIGJ1ZmZlcikp KSkKKyAgICA7OyBUcnkgdG8gYWNjZXNzIGFuIGludmFsaWQgVVJMLCBidXQgZG8gbm90IHRocm93 IGFuIGVycm9yLgorICAgIChzaG91bGQtZXJyb3IKKyAgICAgKGxldCAoKGJ1ZmZlciAoZ2VuZXJh dGUtbmV3LWJ1ZmZlciAidXJsLXJldHJpZXZlLW91dHB1dCIpKSkKKyAgICAgICAodW53aW5kLXBy b3RlY3QKKwkgICA7OyBTaW11bGF0ZSB1bnN1Y2Nlc3NmdWwgcmV0cmlldmFsIG9mIGEgVVJMLgor CSAgIChjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAndXJsLXJldHJpZXZlLXN5bmNocm9ub3Vz bHkpCisJCSAgICAgIChsYW1iZGEgKCZyZXN0XykKKwkJCSh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1 ZmZlcgorCQkJICAoaW5zZXJ0ICJIVFRQLzEuMSA0MDQgTm90IGZvdW5kXG5cbmRvZXMgbm90IG1h dHRlciIpKQorCQkJYnVmZmVyKSkpCisJICAgICAob3JnLWZpbGUtY29udGVudHMgaW52YWxpZC11 cmwpKQorCSAoa2lsbC1idWZmZXIgYnVmZmVyKSkpKQorICAgIChzaG91bGQKKyAgICAgKHN0cmlu Zz0KKyAgICAgIChmb3JtYXQgIlVuYWJsZSB0byBmZXRjaCBmaWxlIGZyb20gXCIlc1wiIiBpbnZh bGlkLXVybCkKKyAgICAgIChsZXQgKChidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgInVybC1y ZXRyaWV2ZS1vdXRwdXQiKSkpCisJKHVud2luZC1wcm90ZWN0CisJICAgIDs7IFNpbXVsYXRlIHVu c3VjY2Vzc2Z1bCByZXRyaWV2YWwgb2YgYSBVUkwuCisJICAgIChjbC1sZXRmICgoKHN5bWJvbC1m dW5jdGlvbiAndXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHkpCisJCSAgICAgICAobGFtYmRhICgm cmVzdF8pCisJCQkgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisJCQkgICAoaW5zZXJ0ICJI VFRQLzEuMSA0MDQgTm90IGZvdW5kXG5cbmRvZXMgbm90IG1hdHRlciIpKQorCQkJIGJ1ZmZlcikp KQorCSAgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLXVybCA6bm9lcnJvcikpCisJICAo a2lsbC1idWZmZXIgYnVmZmVyKSkpKSkpKQorCiAKIChwcm92aWRlICd0ZXN0LW9yZykKIApkaWZm IC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb3guZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1veC5l bAppbmRleCA2OWE3NzhiYmIzLi43MmI2YzhjY2QxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2xpc3Av dGVzdC1veC5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1veC5lbApAQCAtMjMyLDYgKzIzMiwz OCBAQCBudW06MiA8OmFjdGl2ZSIpKSkKIAkJb3JnLXRlc3QtZGlyKQogICAgICAgKG9yZy1leHBv cnQtLWdldC1pbmJ1ZmZlci1vcHRpb25zKSkKICAgICAnKDpsYW5ndWFnZSAiZnIiIDpzZWxlY3Qt dGFncyAoImEiICJiIiAiYyIpIDp0aXRsZSAoImEgYiBjIikpKSkKKyAgOzsgT3B0aW9ucyBzZXQg dGhyb3VnaCBTRVRVUEZJTEUgc3BlY2lmaWVkIHVzaW5nIGEgVVJMLgorICAobGV0ICgoYnVmZmVy IChnZW5lcmF0ZS1uZXctYnVmZmVyICJ1cmwtcmV0cmlldmUtb3V0cHV0IikpKQorICAgICh1bndp bmQtcHJvdGVjdAorCTs7IFNpbXVsYXRlIHN1Y2Nlc3NmdWwgcmV0cmlldmFsIG9mIGEgc2V0dXBm aWxlIGZyb20gVVJMLgorCShjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAndXJsLXJldHJpZXZl LXN5bmNocm9ub3VzbHkpCisJCSAgIChsYW1iZGEgKCZyZXN0XykKKwkJICAgICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWZmZXIKKwkJICAgICAgIChpbnNlcnQgIkhUVFAvMS4xIDIwMCBPSworCisj IENvbnRlbnRzIG9mIGh0dHA6Ly9saW5rLXRvLW15LXNldHVwZmlsZS5vcmcKKyMrQklORDogdmFy aWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytTRUxFQ1Rf VEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiKSkKKwkJICAgICBidWZmZXIp KSkKKwkgIChzaG91bGQKKwkgICAoZXF1YWwKKwkgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0 CisJCSIjK0RFU0NSSVBUSU9OOiBsMQorIytMQU5HVUFHRTogZXMKKyMrU0VMRUNUX1RBR1M6IGEK KyMrVElUTEU6IGEKKyMrU0VUVVBGSUxFOiBcImh0dHA6Ly9saW5rLXRvLW15LXNldHVwZmlsZS5v cmdcIgorIytMQU5HVUFHRTogZnIKKyMrU0VMRUNUX1RBR1M6IGMKKyMrVElUTEU6IGMiCisJICAg ICAgKG9yZy1leHBvcnQtLWdldC1pbmJ1ZmZlci1vcHRpb25zKSkKKwkgICAgJyg6bGFuZ3VhZ2Ug ImZyIiA6c2VsZWN0LXRhZ3MgKCJhIiAiYiIgImMiKSA6dGl0bGUgKCJhIGIgYyIpKSkpKQorICAg ICAgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpKQogICA7OyBNb3JlIHRoYW4gb25lIHByb3BlcnR5IGNh biByZWZlciB0byB0aGUgc2FtZSBidWZmZXIga2V5d29yZC4KICAgKHNob3VsZAogICAgKGVxdWFs ICcoOmsyICJ2YWx1ZSIgOmsxICJ2YWx1ZSIpCi0tIAoyLjEzLjAKCg== --001a1141156c4ed2dc0551d95455--