From mboxrd@z Thu Jan 1 00:00:00 1970 From: Le Wang Subject: Re: bug#12905: 24.2.50; org: edit source block causes data loss Date: Fri, 14 Dec 2012 07:40:15 +0800 Message-ID: References: <50A62865.8010904@gmail.com> <87sj7han8a.fsf__16482.9143243425$1354894646$gmane$org@gnu.org> <87wqwnyzud.fsf__32428.3239235685$1355331429$gmane$org@bzg.ath.cx> <87bodzt201.fsf@norang.ca> <877gom7tc3.fsf@bzg.ath.cx> <876246skbt.fsf@norang.ca> <87lid262rf.fsf@norang.ca> <8738za44ss.fsf@bzg.ath.cx> <878v925aru.fsf@norang.ca> <87wqwm0yoi.fsf@bzg.ath.cx> <87mwxhyl5l.fsf@bzg.ath.cx> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d043c7d60e1c93704d0c46fc7 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:54783) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TjIO5-0005bV-AJ for emacs-orgmode@gnu.org; Thu, 13 Dec 2012 18:40:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TjIO0-0007Jd-VA for emacs-orgmode@gnu.org; Thu, 13 Dec 2012 18:40:21 -0500 Received: from mail-vc0-f169.google.com ([209.85.220.169]:53092) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TjIO0-0007J6-Nr for emacs-orgmode@gnu.org; Thu, 13 Dec 2012 18:40:16 -0500 Received: by mail-vc0-f169.google.com with SMTP id gb23so3215280vcb.0 for ; Thu, 13 Dec 2012 15:40:16 -0800 (PST) In-Reply-To: <87mwxhyl5l.fsf@bzg.ath.cx> 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-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: Bernt Hansen , emacs-orgmode@gnu.org --f46d043c7d60e1c93704d0c46fc7 Content-Type: text/plain; charset=ISO-8859-1 On Fri, Dec 14, 2012 at 12:25 AM, Bastien wrote: > I superseded the first one with my patch, and just applied the > third one. > > Can you explain the bug behind the second one? If I press C-' before on a line BEFORE "+begin_src ...", then doing comparison with ">=" with beg==nil and end==nil causes "wrong-type-argument" error. "test-org-src/point-outside-block" test case should fail, but because "wrong-type-argument" is also an error, it is passing. :( I've changed "(error ..." to raise an org-src specific error to facilitate testing. Commits rebased to master are attached. A note: I did change this line: (end (copy-marker (make-marker) t)) (make-marker) makes a temporary new marker that's never used. ;) -- Le --f46d043c7d60e1c93704d0c46fc7 Content-Type: application/octet-stream; name="0001-don-t-use-copy-marker-nil-t-for-Emacs-23-compat.patch" Content-Disposition: attachment; filename="0001-don-t-use-copy-marker-nil-t-for-Emacs-23-compat.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haoj2zvc0 RnJvbSAxYjU1ZDcxM2E2MGEzYjYxYjRhZjZiYjMxNGMwYmNmYjc4MGQzYjM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZSBXYW5nIDxsZS53YW5nQGFnd29ybGQuY29tLmF1PgpEYXRl OiBUaHUsIDEzIERlYyAyMDEyIDIzOjQwOjU5ICswODAwClN1YmplY3Q6IFtQQVRDSCAxLzVdIGRv bid0IHVzZSAoY29weS1tYXJrZXIgbmlsIHQpIGZvciBFbWFjcyAyMyBjb21wYXQKCi0tLQogbGlz cC9vcmctc3JjLmVsIHwgNCArKystCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9vcmctc3JjLmVsIGIvbGlzcC9vcmctc3Jj LmVsCmluZGV4IDE4OGY5ZDIuLjY1MTU5ODcgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLXNyYy5lbAor KysgYi9saXNwL29yZy1zcmMuZWwKQEAgLTIzMCw3ICsyMzAsOSBAQCBidWZmZXIuIgogCSAoYmVn IChtYWtlLW1hcmtlcikpCiAJIDs7IE1vdmUgbWFya2VyIHdpdGggaW5zZXJ0ZWQgdGV4dCBmb3Ig Y2FzZSB3aGVuIHNyYyBibG9jayBpcwogCSA7OyBqdXN0IG9uZSBlbXB0eSBsaW5lLCBpLmUuIGJl ZyA9PSBlbmQuCi0JIChlbmQgKGNvcHktbWFya2VyIChtYWtlLW1hcmtlcikgdCkpCisJIChlbmQg KGxldCAoKG1hcmtlciAobWFrZS1tYXJrZXIpKSkKKwkJKHNldC1tYXJrZXItaW5zZXJ0aW9uLXR5 cGUgbWFya2VyIHQpCisJCW1hcmtlcikpCiAJIChhbGxvdy13cml0ZS1iYWNrLXAgKG51bGwgY29k ZSkpCiAJIGJsb2NrLW5pbmRlbnQgdG90YWwtbmluZGVudCBvdmwgbGFuZyBsYW5nLWYgc2luZ2xl IGxmbXQgYnVmZmVyIG1zZwogCSBiZWdsaW5lIG1hcmtsaW5lIG1hcmtjb2wgbGluZSBjb2wgdHJh bnNtaXR0ZWQtdmFyaWFibGVzKQotLSAKMS43LjExLjQKCg== --f46d043c7d60e1c93704d0c46fc7 Content-Type: application/octet-stream; name="0002-fix-org-edit-src-code-invoked-outside-src-block.patch" Content-Disposition: attachment; filename="0002-fix-org-edit-src-code-invoked-outside-src-block.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haoj2zvf1 RnJvbSAyZTE5MzkxNDc2Yjc2MjYzZGNiYzBjZjczZTVlZTFkMGIyNjBkZGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZSBXYW5nIDxsZS53YW5nQGFnd29ybGQuY29tLmF1PgpEYXRl OiBUaHUsIDEzIERlYyAyMDEyIDIzOjQ2OjAwICswODAwClN1YmplY3Q6IFtQQVRDSCAyLzVdIGZp eCBvcmctZWRpdC1zcmMtY29kZSBpbnZva2VkIG91dHNpZGUgc3JjIGJsb2NrCgotLS0KIGxpc3Av b3JnLXNyYy5lbCB8IDExICsrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avb3JnLXNyYy5lbCBiL2xpc3Av b3JnLXNyYy5lbAppbmRleCA2NTE1OTg3Li45N2Y0NzNhIDEwMDY0NAotLS0gYS9saXNwL29yZy1z cmMuZWwKKysrIGIvbGlzcC9vcmctc3JjLmVsCkBAIC0yMjEsMTAgKzIyMSwxMyBAQCBidWZmZXIu IgogCSAgKGxldCogKCh0ZW1wIChvcmctZWRpdC1zcmMtZmluZC1yZWdpb24tYW5kLWxhbmcpKQog CQkgKGJlZyAobnRoIDAgdGVtcCkpCiAJCSAoZW5kIChudGggMSB0ZW1wKSkpCi0JICAgIChpZiAo Pj0gZW5kIGJlZykgdGVtcAotCSAgICAgIChnb3RvLWNoYXIgYmVnKQotCSAgICAgIChpbnNlcnQg IlxuIikKLQkgICAgICAob3JnLWVkaXQtc3JjLWZpbmQtcmVnaW9uLWFuZC1sYW5nKSkpKQorCSAg ICAoaWYgKGFuZCBiZWcgZW5kKQorCQkoaWYgKD49IGVuZCBiZWcpCisJCSAgICB0ZW1wCisJCSAg KGdvdG8tY2hhciBiZWcpCisJCSAgKGluc2VydCAiXG4iKQorCQkgIChvcmctZWRpdC1zcmMtZmlu ZC1yZWdpb24tYW5kLWxhbmcpKQorCSAgICAgIChlcnJvciAiUG9pbnQgbm90IGluIHNyYyBibG9j ay4iKSkpKQogCSAoZnVsbC1pbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvICdsaWdo dCkpCiAJIChvcmctbW9kZS1wIChkZXJpdmVkLW1vZGUtcCAnb3JnLW1vZGUpKSA7OyBkZXJpdmVk LW1vZGUtcCBpcyByZWZsZXhpdmUKIAkgKGJlZyAobWFrZS1tYXJrZXIpKQotLSAKMS43LjExLjQK Cg== --f46d043c7d60e1c93704d0c46fc7 Content-Type: application/octet-stream; name="0003-test-org-src-checks-for-org-src-generated-error.patch" Content-Disposition: attachment; filename="0003-test-org-src-checks-for-org-src-generated-error.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haoj2zvg2 RnJvbSBhNGNmNTgyNWY0OWEzMDY2NGNhOTViNjc5NDIwMGYzMmU5NDQyNGQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZSBXYW5nIDxsZS53YW5nQGFnd29ybGQuY29tLmF1PgpEYXRl OiBGcmksIDE0IERlYyAyMDEyIDA2OjUxOjMxICswODAwClN1YmplY3Q6IFtQQVRDSCAzLzVdIHRl c3Qtb3JnLXNyYyBjaGVja3MgZm9yIG9yZy1zcmMgZ2VuZXJhdGVkIGVycm9yCgotIFdlIG5lZWQg dG8gY2hlY2sgdGhlIGVycm9yIHJhaXNlZCBpcyBub3QgYSBnZW5lcmljIGVycm9yLCBidXQgdGhl IG9uZQogIHdlIGV4cGVjdCBvdXIgY29kZSB0byBnZW5lcmF0ZS4KLS0tCiB0ZXN0aW5nL2xpc3Av dGVzdC1vcmctc3JjLmVsIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9yZy1zcmMu ZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmctc3JjLmVsCmluZGV4IDgyMDVmZDEuLjY1ZDUyZDMg MTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlzcC90ZXN0LW9yZy1zcmMuZWwKKysrIGIvdGVzdGluZy9s aXNwL3Rlc3Qtb3JnLXNyYy5lbApAQCAtNTYsOSArNTYsOSBAQAogIytlbmRfc3JjCiAiCiAgICAg KGdvdG8tbGluZSAxKQotICAgIChzaG91bGQtZXJyb3IgKG9yZy1lZGl0LXNwZWNpYWwpKQorICAg IChzaG91bGQtZXJyb3IgKG9yZy1lZGl0LXNwZWNpYWwpIDp0eXBlICcob3JnLXNyYy1lcnJvcikp CiAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKLSAgICAoc2hvdWxkLWVycm9yIChvcmctZWRp dC1zcGVjaWFsKSkpKQorICAgIChzaG91bGQtZXJyb3IgKG9yZy1lZGl0LXNwZWNpYWwpIDp0eXBl ICcob3JnLXNyYy1lcnJvcikpKSkKIAogKGVydC1kZWZ0ZXN0IHRlc3Qtb3JnLXNyYy9lbXB0eS1i bG9jayAoKQogICAiRWRpdGluZyBlbXB0eSBibG9jay4iCi0tIAoxLjcuMTEuNAoK --f46d043c7d60e1c93704d0c46fc7 Content-Type: application/octet-stream; name="0004-add-org-src-error-error-condition.patch" Content-Disposition: attachment; filename="0004-add-org-src-error-error-condition.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haoj2zvh3 RnJvbSBmOGM0YmVlM2E0MjIzZDc3ZjQ0Yzk2MWM0ZWFiOWFmYTRjYjEzNDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZSBXYW5nIDxsZS53YW5nQGFnd29ybGQuY29tLmF1PgpEYXRl OiBGcmksIDE0IERlYyAyMDEyIDA2OjQ2OjE1ICswODAwClN1YmplY3Q6IFtQQVRDSCA0LzVdIGFk ZCBvcmctc3JjLWVycm9yIGVycm9yLWNvbmRpdGlvbgoKLSBUaGlzIG1ha2VzIGNvZGUgbW9yZSB0 ZXN0YWJsZSwgYmVjYXVzZSB3ZSBjYW4gZXhwZWN0IG9yZyBzcGVjaWZpYwogIGVycm9ycyBpbnN0 ZWFkIG9mIHRoZSBnZW5lcmljIGVycm9yLgotLS0KIGxpc3Avb3JnLXNyYy5lbCB8IDE1ICsrKysr KysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9vcmctc3JjLmVsIGIvbGlzcC9vcmctc3JjLmVsCmluZGV4 IDk3ZjQ3M2EuLmFkNmVjNjAgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLXNyYy5lbAorKysgYi9saXNw L29yZy1zcmMuZWwKQEAgLTE5Miw2ICsxOTIsMTEgQEAgdGhlIGV4aXN0aW5nIGVkaXQgYnVmZmVy LiIpCiAKIChkZWZ2YXIgb3JnLXNyYy1iYWJlbC1pbmZvIG5pbCkKIAorKHB1dCAnb3JnLXNyYy1l cnJvcgorICAgICAnZXJyb3ItY29uZGl0aW9ucworICAgICAnKGVycm9yIG9yZy1zcmMtZXJyb3Ip KQorKHB1dCAnb3JnLXNyYy1lcnJvciAnZXJyb3ItbWVzc2FnZSAiT3JnIFNyYyBFcnJvciIpCisK IChkZWZpbmUtbWlub3ItbW9kZSBvcmctc3JjLW1vZGUKICAgIk1pbm9yIG1vZGUgZm9yIGxhbmd1 YWdlIG1ham9yIG1vZGUgYnVmZmVycyBnZW5lcmF0ZWQgYnkgb3JnLgogVGhpcyBtaW5vciBtb2Rl IGlzIHR1cm5lZCBvbiBpbiB0d28gc2l0dWF0aW9uczoKQEAgLTIyNyw3ICsyMzIsNyBAQCBidWZm ZXIuIgogCQkgIChnb3RvLWNoYXIgYmVnKQogCQkgIChpbnNlcnQgIlxuIikKIAkJICAob3JnLWVk aXQtc3JjLWZpbmQtcmVnaW9uLWFuZC1sYW5nKSkKLQkgICAgICAoZXJyb3IgIlBvaW50IG5vdCBp biBzcmMgYmxvY2suIikpKSkKKwkgICAgICAoc2lnbmFsICdvcmctc3JjLWVycm9yICcoIlBvaW50 IG5vdCBpbiBzcmMgYmxvY2suIikpKSkpCiAJIChmdWxsLWluZm8gKG9yZy1iYWJlbC1nZXQtc3Jj LWJsb2NrLWluZm8gJ2xpZ2h0KSkKIAkgKG9yZy1tb2RlLXAgKGRlcml2ZWQtbW9kZS1wICdvcmct bW9kZSkpIDs7IGRlcml2ZWQtbW9kZS1wIGlzIHJlZmxleGl2ZQogCSAoYmVnIChtYWtlLW1hcmtl cikpCkBAIC0yODAsNyArMjg1LDcgQEAgYnVmZmVyLiIKIAkJCSAodGFibGUtcmVjb2duaXplKQog CQkJIChvcmctc2V0LWxvY2FsICdvcmctZWRpdC1zcmMtY29udGVudC1pbmRlbnRhdGlvbiAwKSkp KQogICAgICAgKHVubGVzcyAoZnVuY3Rpb25wIGxhbmctZikKLQkoZXJyb3IgIk5vIHN1Y2ggbGFu Z3VhZ2UgbW9kZTogJXMiIGxhbmctZikpCisJKHNpZ25hbCAnb3JnLXNyYy1lcnJvciAiTm8gc3Vj aCBsYW5ndWFnZSBtb2RlOiAlcyIgbGFuZy1mKSkKICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogCShp ZiAoPiAocG9pbnQpIGVuZCkgKGdvdG8tY2hhciBlbmQpKQogCShzZXRxIGxpbmUgKG9yZy1jdXJy ZW50LWxpbmUpCkBAIC0zMjIsNyArMzI3LDcgQEAgYnVmZmVyLiIKIAkgIChjb25kaXRpb24tY2Fz ZSBlCiAJICAgICAgKGZ1bmNhbGwgbGFuZy1mKQogCSAgICAoZXJyb3IKLQkgICAgIChlcnJvciAi TGFuZ3VhZ2UgbW9kZSBgJXMnIGZhaWxzIHdpdGg6ICVTIiBsYW5nLWYgKG50aCAxIGUpKSkpKQor CSAgICAgKHNpZ25hbCAnb3JnLXNyYy1lcnJvciAiTGFuZ3VhZ2UgbW9kZSBgJXMnIGZhaWxzIHdp dGg6ICVTIiBsYW5nLWYgKG50aCAxIGUpKSkpKQogCShkb2xpc3QgKHBhaXIgdHJhbnNtaXR0ZWQt dmFyaWFibGVzKQogCSAgKG9yZy1zZXQtbG9jYWwgKGNhciBwYWlyKSAoY2FkciBwYWlyKSkpCiAJ OzsgUmVtb3ZlIHByb3RlY3RpbmcgY29tbWFzIGZyb20gdmlzaWJsZSBwYXJ0IG9mIGJ1ZmZlci4K QEAgLTM1Myw3ICszNTgsNyBAQCBidWZmZXIuIgogICAobW91c2Utc2V0LXBvaW50IGUpCiAgIChs ZXQgKChidWYgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ2VkaXQtYnVmZmVyKSkpCiAgICAg KGlmIGJ1ZiAob3JnLXNyYy1zd2l0Y2gtdG8tYnVmZmVyIGJ1ZiAnY29udGludWUpCi0gICAgICAo ZXJyb3IgIlNvbWV0aGluZyBpcyB3cm9uZyBoZXJlIikpKSkKKyAgICAgIChzaWduYWwgJ29yZy1z cmMtZXJyb3IgIlNvbWV0aGluZyBpcyB3cm9uZyBoZXJlIikpKSkKIAogKGRlZnVuIG9yZy1zcmMt c3dpdGNoLXRvLWJ1ZmZlciAoYnVmZmVyIGNvbnRleHQpCiAgIChjYXNlIG9yZy1zcmMtd2luZG93 LXNldHVwCkBAIC02MzYsNyArNjQxLDcgQEAgd2l0aCBcIiwqXCIsIFwiLCMrXCIsIFwiLCwqXCIg YW5kIFwiLCwjK1wiLiIKICAgIkV4aXQgc3BlY2lhbCBlZGl0IGFuZCBwcm90ZWN0IHByb2JsZW1h dGljIGxpbmVzLiIKICAgKGludGVyYWN0aXZlKQogICAodW5sZXNzIChvcmctYm91bmQtYW5kLXRy dWUtcCBvcmctZWRpdC1zcmMtZnJvbS1vcmctbW9kZSkKLSAgICAoZXJyb3IgIlRoaXMgaXMgbm90 IGEgc3ViLWVkaXRpbmcgYnVmZmVyLCBzb21ldGhpbmcgaXMgd3JvbmciKSkKKyAgICAoc2lnbmFs ICdvcmctc3JjLWVycm9yICJUaGlzIGlzIG5vdCBhIHN1Yi1lZGl0aW5nIGJ1ZmZlciwgc29tZXRo aW5nIGlzIHdyb25nIikpCiAgICh3aWRlbikKICAgKGxldCogKChiZWcgb3JnLWVkaXQtc3JjLWJl Zy1tYXJrZXIpCiAJIChlbmQgb3JnLWVkaXQtc3JjLWVuZC1tYXJrZXIpCi0tIAoxLjcuMTEuNAoK --f46d043c7d60e1c93704d0c46fc7 Content-Type: application/octet-stream; name="0005-remove-extraneous-if-condition.patch" Content-Disposition: attachment; filename="0005-remove-extraneous-if-condition.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haoj2zvh4 RnJvbSA5NDliMmNkNGMzNzg4NzIzNDVmM2YzYTAyNmJlYjVkMWEyMjgyODhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZSBXYW5nIDxsZS53YW5nQGFnd29ybGQuY29tLmF1PgpEYXRl OiBGcmksIDE0IERlYyAyMDEyIDA3OjMxOjE1ICswODAwClN1YmplY3Q6IFtQQVRDSCA1LzVdIHJl bW92ZSBleHRyYW5lb3VzIGlmIGNvbmRpdGlvbgoKLSBXZSBzaWduYWwgb3JnLXNyYy1lcnJvciBi ZWZvcmUgZXZlciByZWFjaGluZyBoZXJlLgotLS0KIGxpc3Avb3JnLXNyYy5lbCB8IDIxMCArKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbGlzcC9vcmctc3JjLmVsIGIvbGlzcC9vcmctc3JjLmVsCmluZGV4IGFkNmVjNjAuLmQ0 NzQ3YWIgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLXNyYy5lbAorKysgYi9saXNwL29yZy1zcmMuZWwK QEAgLTI0NCwxMTMgKzI0NCwxMTEgQEAgYnVmZmVyLiIKIAkgKGFsbG93LXdyaXRlLWJhY2stcCAo bnVsbCBjb2RlKSkKIAkgYmxvY2stbmluZGVudCB0b3RhbC1uaW5kZW50IG92bCBsYW5nIGxhbmct ZiBzaW5nbGUgbGZtdCBidWZmZXIgbXNnCiAJIGJlZ2xpbmUgbWFya2xpbmUgbWFya2NvbCBsaW5l IGNvbCB0cmFuc21pdHRlZC12YXJpYWJsZXMpCi0gICAgKGlmIChub3QgaW5mbykKLQluaWwKLSAg ICAgIChzZXRxIGJlZyAobW92ZS1tYXJrZXIgYmVnIChudGggMCBpbmZvKSkKLQkgICAgZW5kICht b3ZlLW1hcmtlciBlbmQgKG50aCAxIGluZm8pKQotCSAgICBtc2cgKGlmIGFsbG93LXdyaXRlLWJh Y2stcAotCQkgICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCi0JCSAgICAgIkVkaXQsIHRoZW4g ZXhpdCB3aXRoIEMtYyAnIChDLWMgYW5kIHNpbmdsZSBxdW90ZSkiKQotCQkgICJFeGl0IHdpdGgg Qy1jICcgKEMtYyBhbmQgc2luZ2xlIHF1b3RlKSIpCi0JICAgIGNvZGUgKG9yIGNvZGUgKGJ1ZmZl ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkKLQkgICAgbGFuZyAob3IgKGNkciAo YXNzb2MgKG50aCAyIGluZm8pIG9yZy1zcmMtbGFuZy1tb2RlcykpCi0gICAgICAgICAgICAgICAg ICAgICAobnRoIDIgaW5mbykpCi0JICAgIGxhbmcgKGlmIChzeW1ib2xwIGxhbmcpIChzeW1ib2wt bmFtZSBsYW5nKSBsYW5nKQotCSAgICBzaW5nbGUgKG50aCAzIGluZm8pCi0JICAgIGJsb2NrLW5p bmRlbnQgKG50aCA1IGluZm8pCi0JICAgIGxhbmctZiAoaW50ZXJuIChjb25jYXQgbGFuZyAiLW1v ZGUiKSkKLQkgICAgYmVnbGluZSAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciBiZWcpIChvcmct Y3VycmVudC1saW5lKSkKLQkgICAgdHJhbnNtaXR0ZWQtdmFyaWFibGVzCi0JICAgIGAoKG9yZy1l ZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uCi0JICAgICAgICxvcmctZWRpdC1zcmMtY29udGVu dC1pbmRlbnRhdGlvbikKLQkgICAgICAob3JnLWVkaXQtc3JjLWZvcmNlLXNpbmdsZS1saW5lICxz aW5nbGUpCi0JICAgICAgKG9yZy1lZGl0LXNyYy1mcm9tLW9yZy1tb2RlICxvcmctbW9kZS1wKQot CSAgICAgIChvcmctZWRpdC1zcmMtYWxsb3ctd3JpdGUtYmFjay1wICxhbGxvdy13cml0ZS1iYWNr LXApCi0JICAgICAgKG9yZy1zcmMtcHJlc2VydmUtaW5kZW50YXRpb24gLG9yZy1zcmMtcHJlc2Vy dmUtaW5kZW50YXRpb24pCi0JICAgICAgKG9yZy1zcmMtYmFiZWwtaW5mbyAsKG9yZy1iYWJlbC1n ZXQtc3JjLWJsb2NrLWluZm8gJ2xpZ2h0KSkKLQkgICAgICAob3JnLWNvZGVyZWYtbGFiZWwtZm9y bWF0Ci0JICAgICAgICwob3IgKG50aCA0IGluZm8pIG9yZy1jb2RlcmVmLWxhYmVsLWZvcm1hdCkp Ci0JICAgICAgKG9yZy1lZGl0LXNyYy1iZWctbWFya2VyICxiZWcpCi0JICAgICAgKG9yZy1lZGl0 LXNyYy1lbmQtbWFya2VyICxlbmQpCi0JICAgICAgKG9yZy1lZGl0LXNyYy1ibG9jay1pbmRlbnRh dGlvbiAsYmxvY2stbmluZGVudCkpKQotICAgICAgKGlmIChhbmQgbWFyayAoPj0gbWFyayBiZWcp ICg8PSBtYXJrICgxKyBlbmQpKSkKLQkgIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIChtaW4g bWFyayBlbmQpKQotCQkJICAoc2V0cSBtYXJrbGluZSAob3JnLWN1cnJlbnQtbGluZSkKLQkJCQlt YXJrY29sIChjdXJyZW50LWNvbHVtbikpKSkKLSAgICAgIChpZiAoZXF1YWwgbGFuZy1mICd0YWJs ZS5lbC1tb2RlKQotCSAgKHNldHEgbGFuZy1mIChsYW1iZGEgKCkKLQkJCSAodGV4dC1tb2RlKQot CQkJIChpZiAob3JnLWJvdW5kLWFuZC10cnVlLXAgZmx5c3BlbGwtbW9kZSkKLQkJCSAgICAgKGZs eXNwZWxsLW1vZGUgLTEpKQotCQkJICh0YWJsZS1yZWNvZ25pemUpCi0JCQkgKG9yZy1zZXQtbG9j YWwgJ29yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uIDApKSkpCi0gICAgICAodW5sZXNz IChmdW5jdGlvbnAgbGFuZy1mKQotCShzaWduYWwgJ29yZy1zcmMtZXJyb3IgIk5vIHN1Y2ggbGFu Z3VhZ2UgbW9kZTogJXMiIGxhbmctZikpCi0gICAgICAoc2F2ZS1leGN1cnNpb24KLQkoaWYgKD4g KHBvaW50KSBlbmQpIChnb3RvLWNoYXIgZW5kKSkKLQkoc2V0cSBsaW5lIChvcmctY3VycmVudC1s aW5lKQotCSAgICAgIGNvbCAoY3VycmVudC1jb2x1bW4pKSkKLSAgICAgIChpZiAoYW5kIChzZXRx IGJ1ZmZlciAob3JnLWVkaXQtc3JjLWZpbmQtYnVmZmVyIGJlZyBlbmQpKQotCSAgICAgICAob3Ig KGVxIGNvbnRleHQgJ3NhdmUpCi0JCSAgIChpZiBvcmctc3JjLWFzay1iZWZvcmUtcmV0dXJuaW5n LXRvLWVkaXQtYnVmZmVyCi0JCSAgICAgICAoeS1vci1uLXAgIlJldHVybiB0byBleGlzdGluZyBl ZGl0IGJ1ZmZlciAoW25dIHdpbGwgcmV2ZXJ0IGNoYW5nZXMpPyAiKSB0KSkpCi0JICAob3JnLXNy Yy1zd2l0Y2gtdG8tYnVmZmVyIGJ1ZmZlciAncmV0dXJuKQotCSh3aGVuIGJ1ZmZlcgotCSAgKHdp dGgtY3VycmVudC1idWZmZXIgYnVmZmVyCi0JICAgIChpZiAoYm91bmRwICdvcmctZWRpdC1zcmMt b3ZlcmxheSkKLQkJKGRlbGV0ZS1vdmVybGF5IG9yZy1lZGl0LXNyYy1vdmVybGF5KSkpCi0JICAo a2lsbC1idWZmZXIgYnVmZmVyKSkKLQkoc2V0cSBidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIK LQkJICAgICAgKG9yIGVkaXQtYnVmZmVyLW5hbWUKLQkJCSAgKG9yZy1zcmMtY29uc3RydWN0LWVk aXQtYnVmZmVyLW5hbWUgKGJ1ZmZlci1uYW1lKSBsYW5nKSkpKQotCShzZXRxIG92bCAobWFrZS1v dmVybGF5IGJlZyBlbmQpKQotCShvdmVybGF5LXB1dCBvdmwgJ2VkaXQtYnVmZmVyIGJ1ZmZlcikK LQkob3ZlcmxheS1wdXQgb3ZsICdoZWxwLWVjaG8gIkNsaWNrIHdpdGggbW91c2UtMSB0byBzd2l0 Y2ggdG8gYnVmZmVyIGVkaXRpbmcgdGhpcyBzZWdtZW50IikKLQkob3ZlcmxheS1wdXQgb3ZsICdm YWNlICdzZWNvbmRhcnktc2VsZWN0aW9uKQotCShvdmVybGF5LXB1dCBvdmwKLQkJICAgICAna2V5 bWFwCi0JCSAgICAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCi0JCSAgICAgICAo ZGVmaW5lLWtleSBtYXAgW21vdXNlLTFdICdvcmctZWRpdC1zcmMtY29udGludWUpCi0JCSAgICAg ICBtYXApKQotCShvdmVybGF5LXB1dCBvdmwgOnJlYWQtb25seSAiTGVhdmUgbWUgYWxvbmUiKQot CShzZXRxIHRyYW5zbWl0dGVkLXZhcmlhYmxlcwotCSAgICAgIChhcHBlbmQgdHJhbnNtaXR0ZWQt dmFyaWFibGVzIGAoKG9yZy1lZGl0LXNyYy1vdmVybGF5ICxvdmwpKSkpCi0JKG9yZy1zcmMtc3dp dGNoLXRvLWJ1ZmZlciBidWZmZXIgJ2VkaXQpCi0JKGlmIChlcSBzaW5nbGUgJ21hY3JvLWRlZmlu aXRpb24pCi0JICAgIChzZXRxIGNvZGUgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXFxcXG4i ICJcbiIgY29kZSB0IHQpKSkKLQkoaW5zZXJ0IGNvZGUpCi0JKHJlbW92ZS10ZXh0LXByb3BlcnRp ZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkKLQkJCQknKGRpc3BsYXkgbmlsIGludmlzaWJsZSBu aWwgaW50YW5naWJsZSBuaWwpKQotCSh1bmxlc3MgKGNhZHIgKGFzc3EgJ29yZy1zcmMtcHJlc2Vy dmUtaW5kZW50YXRpb24gdHJhbnNtaXR0ZWQtdmFyaWFibGVzKSkKLQkgIChzZXRxIHRvdGFsLW5p bmRlbnQgKG9yIChvcmctZG8tcmVtb3ZlLWluZGVudGF0aW9uKSAwKSkpCi0JKGxldCAoKG9yZy1p bmhpYml0LXN0YXJ0dXAgdCkpCi0JICAoY29uZGl0aW9uLWNhc2UgZQotCSAgICAgIChmdW5jYWxs IGxhbmctZikKLQkgICAgKGVycm9yCi0JICAgICAoc2lnbmFsICdvcmctc3JjLWVycm9yICJMYW5n dWFnZSBtb2RlIGAlcycgZmFpbHMgd2l0aDogJVMiIGxhbmctZiAobnRoIDEgZSkpKSkpCi0JKGRv bGlzdCAocGFpciB0cmFuc21pdHRlZC12YXJpYWJsZXMpCi0JICAob3JnLXNldC1sb2NhbCAoY2Fy IHBhaXIpIChjYWRyIHBhaXIpKSkKLQk7OyBSZW1vdmUgcHJvdGVjdGluZyBjb21tYXMgZnJvbSB2 aXNpYmxlIHBhcnQgb2YgYnVmZmVyLgotCShvcmctdW5lc2NhcGUtY29kZS1pbi1yZWdpb24gKHBv aW50LW1pbikgKHBvaW50LW1heCkpCi0JKHdoZW4gbWFya2xpbmUKLQkgIChvcmctZ290by1saW5l ICgxKyAoLSBtYXJrbGluZSBiZWdsaW5lKSkpCi0JICAob3JnLW1vdmUtdG8tY29sdW1uCi0JICAg KGlmIG9yZy1zcmMtcHJlc2VydmUtaW5kZW50YXRpb24gbWFya2NvbAotCSAgICAgKG1heCAwICgt IG1hcmtjb2wgdG90YWwtbmluZGVudCkpKSkKLQkgIChwdXNoLW1hcmsgKHBvaW50KSAnbm8tbWVz c2FnZSB0KQotCSAgKHNldHEgZGVhY3RpdmF0ZS1tYXJrIG5pbCkpCi0JKG9yZy1nb3RvLWxpbmUg KDErICgtIGxpbmUgYmVnbGluZSkpKQorICAgIChzZXRxIGJlZyAobW92ZS1tYXJrZXIgYmVnIChu dGggMCBpbmZvKSkKKwkgIGVuZCAobW92ZS1tYXJrZXIgZW5kIChudGggMSBpbmZvKSkKKwkgIG1z ZyAoaWYgYWxsb3ctd3JpdGUtYmFjay1wCisJCSAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCisJ CSAgICJFZGl0LCB0aGVuIGV4aXQgd2l0aCBDLWMgJyAoQy1jIGFuZCBzaW5nbGUgcXVvdGUpIikK KwkJIkV4aXQgd2l0aCBDLWMgJyAoQy1jIGFuZCBzaW5nbGUgcXVvdGUpIikKKwkgIGNvZGUgKG9y IGNvZGUgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkKKwkgIGxhbmcg KG9yIChjZHIgKGFzc29jIChudGggMiBpbmZvKSBvcmctc3JjLWxhbmctbW9kZXMpKQorCQkgICAo bnRoIDIgaW5mbykpCisJICBsYW5nIChpZiAoc3ltYm9scCBsYW5nKSAoc3ltYm9sLW5hbWUgbGFu ZykgbGFuZykKKwkgIHNpbmdsZSAobnRoIDMgaW5mbykKKwkgIGJsb2NrLW5pbmRlbnQgKG50aCA1 IGluZm8pCisJICBsYW5nLWYgKGludGVybiAoY29uY2F0IGxhbmcgIi1tb2RlIikpCisJICBiZWds aW5lIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIGJlZykgKG9yZy1jdXJyZW50LWxpbmUpKQor CSAgdHJhbnNtaXR0ZWQtdmFyaWFibGVzCisJICBgKChvcmctZWRpdC1zcmMtY29udGVudC1pbmRl bnRhdGlvbgorCSAgICAgLG9yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uKQorCSAgICAo b3JnLWVkaXQtc3JjLWZvcmNlLXNpbmdsZS1saW5lICxzaW5nbGUpCisJICAgIChvcmctZWRpdC1z cmMtZnJvbS1vcmctbW9kZSAsb3JnLW1vZGUtcCkKKwkgICAgKG9yZy1lZGl0LXNyYy1hbGxvdy13 cml0ZS1iYWNrLXAgLGFsbG93LXdyaXRlLWJhY2stcCkKKwkgICAgKG9yZy1zcmMtcHJlc2VydmUt aW5kZW50YXRpb24gLG9yZy1zcmMtcHJlc2VydmUtaW5kZW50YXRpb24pCisJICAgIChvcmctc3Jj LWJhYmVsLWluZm8gLChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvICdsaWdodCkpCisJICAg IChvcmctY29kZXJlZi1sYWJlbC1mb3JtYXQKKwkgICAgICwob3IgKG50aCA0IGluZm8pIG9yZy1j b2RlcmVmLWxhYmVsLWZvcm1hdCkpCisJICAgIChvcmctZWRpdC1zcmMtYmVnLW1hcmtlciAsYmVn KQorCSAgICAob3JnLWVkaXQtc3JjLWVuZC1tYXJrZXIgLGVuZCkKKwkgICAgKG9yZy1lZGl0LXNy Yy1ibG9jay1pbmRlbnRhdGlvbiAsYmxvY2stbmluZGVudCkpKQorICAgIChpZiAoYW5kIG1hcmsg KD49IG1hcmsgYmVnKSAoPD0gbWFyayAoMSsgZW5kKSkpCisJKHNhdmUtZXhjdXJzaW9uIChnb3Rv LWNoYXIgKG1pbiBtYXJrIGVuZCkpCisJCQkoc2V0cSBtYXJrbGluZSAob3JnLWN1cnJlbnQtbGlu ZSkKKwkJCSAgICAgIG1hcmtjb2wgKGN1cnJlbnQtY29sdW1uKSkpKQorICAgIChpZiAoZXF1YWwg bGFuZy1mICd0YWJsZS5lbC1tb2RlKQorCShzZXRxIGxhbmctZiAobGFtYmRhICgpCisJCSAgICAg ICAodGV4dC1tb2RlKQorCQkgICAgICAgKGlmIChvcmctYm91bmQtYW5kLXRydWUtcCBmbHlzcGVs bC1tb2RlKQorCQkJICAgKGZseXNwZWxsLW1vZGUgLTEpKQorCQkgICAgICAgKHRhYmxlLXJlY29n bml6ZSkKKwkJICAgICAgIChvcmctc2V0LWxvY2FsICdvcmctZWRpdC1zcmMtY29udGVudC1pbmRl bnRhdGlvbiAwKSkpKQorICAgICh1bmxlc3MgKGZ1bmN0aW9ucCBsYW5nLWYpCisgICAgICAoc2ln bmFsICdvcmctc3JjLWVycm9yICJObyBzdWNoIGxhbmd1YWdlIG1vZGU6ICVzIiBsYW5nLWYpKQor ICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgKGlmICg+IChwb2ludCkgZW5kKSAoZ290by1jaGFy IGVuZCkpCisgICAgICAoc2V0cSBsaW5lIChvcmctY3VycmVudC1saW5lKQorCSAgICBjb2wgKGN1 cnJlbnQtY29sdW1uKSkpCisgICAgKGlmIChhbmQgKHNldHEgYnVmZmVyIChvcmctZWRpdC1zcmMt ZmluZC1idWZmZXIgYmVnIGVuZCkpCisJICAgICAob3IgKGVxIGNvbnRleHQgJ3NhdmUpCisJCSAo aWYgb3JnLXNyYy1hc2stYmVmb3JlLXJldHVybmluZy10by1lZGl0LWJ1ZmZlcgorCQkgICAgICh5 LW9yLW4tcCAiUmV0dXJuIHRvIGV4aXN0aW5nIGVkaXQgYnVmZmVyIChbbl0gd2lsbCByZXZlcnQg Y2hhbmdlcyk/ICIpIHQpKSkKKwkob3JnLXNyYy1zd2l0Y2gtdG8tYnVmZmVyIGJ1ZmZlciAncmV0 dXJuKQorICAgICAgKHdoZW4gYnVmZmVyCisJKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisJ ICAoaWYgKGJvdW5kcCAnb3JnLWVkaXQtc3JjLW92ZXJsYXkpCisJICAgICAgKGRlbGV0ZS1vdmVy bGF5IG9yZy1lZGl0LXNyYy1vdmVybGF5KSkpCisJKGtpbGwtYnVmZmVyIGJ1ZmZlcikpCisgICAg ICAoc2V0cSBidWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIKKwkJICAgIChvciBlZGl0LWJ1ZmZl ci1uYW1lCisJCQkob3JnLXNyYy1jb25zdHJ1Y3QtZWRpdC1idWZmZXItbmFtZSAoYnVmZmVyLW5h bWUpIGxhbmcpKSkpCisgICAgICAoc2V0cSBvdmwgKG1ha2Utb3ZlcmxheSBiZWcgZW5kKSkKKyAg ICAgIChvdmVybGF5LXB1dCBvdmwgJ2VkaXQtYnVmZmVyIGJ1ZmZlcikKKyAgICAgIChvdmVybGF5 LXB1dCBvdmwgJ2hlbHAtZWNobyAiQ2xpY2sgd2l0aCBtb3VzZS0xIHRvIHN3aXRjaCB0byBidWZm ZXIgZWRpdGluZyB0aGlzIHNlZ21lbnQiKQorICAgICAgKG92ZXJsYXktcHV0IG92bCAnZmFjZSAn c2Vjb25kYXJ5LXNlbGVjdGlvbikKKyAgICAgIChvdmVybGF5LXB1dCBvdmwKKwkJICAgJ2tleW1h cAorCQkgICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKKwkJICAgICAoZGVmaW5l LWtleSBtYXAgW21vdXNlLTFdICdvcmctZWRpdC1zcmMtY29udGludWUpCisJCSAgICAgbWFwKSkK KyAgICAgIChvdmVybGF5LXB1dCBvdmwgOnJlYWQtb25seSAiTGVhdmUgbWUgYWxvbmUiKQorICAg ICAgKHNldHEgdHJhbnNtaXR0ZWQtdmFyaWFibGVzCisJICAgIChhcHBlbmQgdHJhbnNtaXR0ZWQt dmFyaWFibGVzIGAoKG9yZy1lZGl0LXNyYy1vdmVybGF5ICxvdmwpKSkpCisgICAgICAob3JnLXNy Yy1zd2l0Y2gtdG8tYnVmZmVyIGJ1ZmZlciAnZWRpdCkKKyAgICAgIChpZiAoZXEgc2luZ2xlICdt YWNyby1kZWZpbml0aW9uKQorCSAgKHNldHEgY29kZSAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5n ICJcXFxcbiIgIlxuIiBjb2RlIHQgdCkpKQorICAgICAgKGluc2VydCBjb2RlKQorICAgICAgKHJl bW92ZS10ZXh0LXByb3BlcnRpZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkKKwkJCSAgICAgICco ZGlzcGxheSBuaWwgaW52aXNpYmxlIG5pbCBpbnRhbmdpYmxlIG5pbCkpCisgICAgICAodW5sZXNz IChjYWRyIChhc3NxICdvcmctc3JjLXByZXNlcnZlLWluZGVudGF0aW9uIHRyYW5zbWl0dGVkLXZh cmlhYmxlcykpCisJKHNldHEgdG90YWwtbmluZGVudCAob3IgKG9yZy1kby1yZW1vdmUtaW5kZW50 YXRpb24pIDApKSkKKyAgICAgIChsZXQgKChvcmctaW5oaWJpdC1zdGFydHVwIHQpKQorCShjb25k aXRpb24tY2FzZSBlCisJICAgIChmdW5jYWxsIGxhbmctZikKKwkgIChlcnJvcgorCSAgIChzaWdu YWwgJ29yZy1zcmMtZXJyb3IgIkxhbmd1YWdlIG1vZGUgYCVzJyBmYWlscyB3aXRoOiAlUyIgbGFu Zy1mIChudGggMSBlKSkpKSkKKyAgICAgIChkb2xpc3QgKHBhaXIgdHJhbnNtaXR0ZWQtdmFyaWFi bGVzKQorCShvcmctc2V0LWxvY2FsIChjYXIgcGFpcikgKGNhZHIgcGFpcikpKQorICAgICAgOzsg UmVtb3ZlIHByb3RlY3RpbmcgY29tbWFzIGZyb20gdmlzaWJsZSBwYXJ0IG9mIGJ1ZmZlci4KKyAg ICAgIChvcmctdW5lc2NhcGUtY29kZS1pbi1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkp CisgICAgICAod2hlbiBtYXJrbGluZQorCShvcmctZ290by1saW5lICgxKyAoLSBtYXJrbGluZSBi ZWdsaW5lKSkpCiAJKG9yZy1tb3ZlLXRvLWNvbHVtbgotCSAoaWYgb3JnLXNyYy1wcmVzZXJ2ZS1p bmRlbnRhdGlvbiBjb2wgKG1heCAwICgtIGNvbCB0b3RhbC1uaW5kZW50KSkpKQotCShvcmctc3Jj LW1vZGUpCi0JKHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCi0JKHNldHEgYnVmZmVyLWZpbGUt bmFtZSBuaWwpCi0JKGFuZCBvcmctZWRpdC1zcmMtcGVyc2lzdGVudC1tZXNzYWdlCi0JICAgICAo b3JnLXNldC1sb2NhbCAnaGVhZGVyLWxpbmUtZm9ybWF0IG1zZykpCi0JKGxldCAoKGVkaXQtcHJl cC1mdW5jIChpbnRlcm4gKGNvbmNhdCAib3JnLWJhYmVsLWVkaXQtcHJlcDoiIGxhbmcpKSkpCi0J ICAod2hlbiAoZmJvdW5kcCBlZGl0LXByZXAtZnVuYykKLQkgICAgKGZ1bmNhbGwgZWRpdC1wcmVw LWZ1bmMgZnVsbC1pbmZvKSkpKQotICAgICAgdCkpKQorCSAoaWYgb3JnLXNyYy1wcmVzZXJ2ZS1p bmRlbnRhdGlvbiBtYXJrY29sCisJICAgKG1heCAwICgtIG1hcmtjb2wgdG90YWwtbmluZGVudCkp KSkKKwkocHVzaC1tYXJrIChwb2ludCkgJ25vLW1lc3NhZ2UgdCkKKwkoc2V0cSBkZWFjdGl2YXRl LW1hcmsgbmlsKSkKKyAgICAgIChvcmctZ290by1saW5lICgxKyAoLSBsaW5lIGJlZ2xpbmUpKSkK KyAgICAgIChvcmctbW92ZS10by1jb2x1bW4KKyAgICAgICAoaWYgb3JnLXNyYy1wcmVzZXJ2ZS1p bmRlbnRhdGlvbiBjb2wgKG1heCAwICgtIGNvbCB0b3RhbC1uaW5kZW50KSkpKQorICAgICAgKG9y Zy1zcmMtbW9kZSkKKyAgICAgIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKQorICAgICAgKHNl dHEgYnVmZmVyLWZpbGUtbmFtZSBuaWwpCisgICAgICAoYW5kIG9yZy1lZGl0LXNyYy1wZXJzaXN0 ZW50LW1lc3NhZ2UKKwkgICAob3JnLXNldC1sb2NhbCAnaGVhZGVyLWxpbmUtZm9ybWF0IG1zZykp CisgICAgICAobGV0ICgoZWRpdC1wcmVwLWZ1bmMgKGludGVybiAoY29uY2F0ICJvcmctYmFiZWwt ZWRpdC1wcmVwOiIgbGFuZykpKSkKKwkod2hlbiAoZmJvdW5kcCBlZGl0LXByZXAtZnVuYykKKwkg IChmdW5jYWxsIGVkaXQtcHJlcC1mdW5jIGZ1bGwtaW5mbykpKSkKKyAgICB0KSkKIAogKGRlZnVu IG9yZy1lZGl0LXNyYy1jb250aW51ZSAoZSkKICAgIkNvbnRpbnVlIGVkaXRpbmcgc291cmNlIGJs b2Nrcy4iIDs7IEZpeG1lOiBiZSBtb3JlIGFjY3VyYXRlCi0tIAoxLjcuMTEuNAoK --f46d043c7d60e1c93704d0c46fc7--