From mboxrd@z Thu Jan 1 00:00:00 1970 From: dieter@schoen.or.at Subject: Re: ob-lua.el Date: Fri, 9 May 2014 20:26:49 +0000 (GMT) Message-ID: <10493aa.dd867f2eeab70f315adbc3ac0113988b@afterlogic.edis.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_mailrelay-6023-1399667210-0001-2" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WirNh-0004EU-3V for emacs-orgmode@gnu.org; Fri, 09 May 2014 16:27:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WirNb-0001RN-Lu for emacs-orgmode@gnu.org; Fri, 09 May 2014 16:26:57 -0400 Received: from postrelay205.edis.at ([91.227.204.205]:33949) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WirNb-0001RF-30 for emacs-orgmode@gnu.org; Fri, 09 May 2014 16:26:51 -0400 Received: from mailrelay.edis.at (postrelay205.edis.at [91.227.204.205]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by postrelay205.edis.at (Postfix) with ESMTPS id 5E28D2002076 for ; Fri, 9 May 2014 22:26:50 +0200 (CEST) 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: emacs-orgmode@gnu.org This is a MIME-formatted message. If you see this text it means that your E-mail software does not support MIME-formatted messages. --=_mailrelay-6023-1399667210-0001-2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable now with attachments, i hope.... >---- Original Message ---- >From: Dieter Schoen >To: emacs-orgmode@gnu.org >Sent: Fri, May 9, 2014, 10:23 PM >Subject: Re: [O] ob-lua.el > >At Wed, 07 May 2014 00:46:03 +0200, >Bastien wrote: >> >> Hi Dieter, >> >> dieter@schoen.or.at writes: >> >> > for a project I need to tangle lua files (including parameters and >> > tables), >> > and there seems to be no ob-lua.el (yet). >> > >> > so I shamelessly copied ob-python.el and adapted it to my needs. >> > right now it can tangle lua, also with simple or table parameters. >> > >> > if anybody is interested, I can upload it. >> >> Yes, please do! >> >> > before that, it should maybe be completed, and also pass some gener= ic >> > tangle test, I think. >> > I have shortly looked at testing/examples/ob-shell-test.org. Is a >> > test like this suitable? >> >> I suggest to look at testing/lisp/test-ob-shell.el. >> > >sorry for the delay, I had to fix some quoting.. > >here is what i have already. it is not yet ERT tested, only manually. >ob-lua.el is capable to tangle code which uses tables with one, two or= many >columns. >i have not yet done any code executing tests. > >first, here is my test harness: > >#+NAME: simple-table >| simple one | >| two | >| three | > >is converted into > > sim=3D{{"simple one"}, {"two"}, {"three"}} > > >#+NAME: assoc-table >| name | value | >|---------+-------| >| colour | blue | >| weather | fine | > >this is converted into > > mapv=3D{{"colour", "blue"}, {"weather", "fine"}} > >i copied this behaviour (an associative map) from ob-shell.el > >#+NAME: big-table >| name | value | remark | >|-------------+--------+--------| >| tool | emacs | cool | >| environment | debian | fair | > >and finally, > > big=3D{{"tool", "emacs", "cool"}, {"environment", "debian", "fair"}= } > > ><#part type=3D"text/x-org" filename=3D"/home/dieter/git/org/code-export= er.org" disposition=3Dattachment> ><#/part> > >and ob-lua.el > ><#part type=3D"application/emacs-lisp" filename=3D"/home/dieter/.emacs.= d/elpa/org-20140505/ob-lua.el" disposition=3Dattachment> ><#/part> > >as i am quite new to emacs/org, i will be thankful for any feedback. > >kind regards, >dieter --=_mailrelay-6023-1399667210-0001-2 Content-Type: application/octet-stream; name="code-exporter.org" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="code-exporter.org" KiBzaGVsbCBzY3JpcHQKCiMrTkFNRTogc2ltcGxlLXRhYmxlCnwgc2ltcGxlIG9uZSB8Cnwg dHdvICAgICAgICB8CnwgdGhyZWUgICAgICB8CgoKCiMrTkFNRTogYXNzb2MtdGFibGUKfCBu YW1lICAgIHwgdmFsdWUgfAp8LS0tLS0tLS0tKy0tLS0tLS18CnwgY29sb3VyICB8IGJsdWUg IHwKfCB3ZWF0aGVyIHwgZmluZSAgfAoKIytOQU1FOiBiaWctdGFibGUKfCBuYW1lICAgICAg ICB8IHZhbHVlICB8IHJlbWFyayB8CnwtLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t fAp8IHRvb2wgICAgICAgIHwgZW1hY3MgIHwgY29vbCAgIHwKfCBlbnZpcm9ubWVudCB8IGRl YmlhbiB8IGZhaXIgICB8CgoqIHRoZSBjb2RlIGJsb2NrcwoqKiBsdWEKIytIRUFERVI6IDp2 YXIgV0hBVD1zaW1wbGUtdGFibGVbMSwwXSBWQUw9c2ltcGxlLXRhYmxlWzIsMF0KIytIRUFE RVI6IDp2YXIgIHNpbT1zaW1wbGUtdGFibGUKIytIRUFERVI6IDp2YXIgIG1hcHY9YXNzb2Mt dGFibGUKIytIRUFERVI6IDp2YXIgIGJpZz1iaWctdGFibGUKIytCRUdJTl9TUkMgbHVhIDpl eHBvcnRzIGNvZGUgOnRhbmdsZSB5ZXMKICAtLSB0aGlzIGp1c3QgY29udGFpbnMgdGhlIGZ1 bmN0aW9uIHRhYmxlX3ByaW50CiAgLS0gY29waWVkIGZyb20gaHR0cDovL2x1YS11c2Vycy5v cmcvd2lraS9UYWJsZVNlcmlhbGl6YXRpb24KICAtLQogIGRvZmlsZSAidGVzdC1sdWEtbGli Lmx1YSIKCiAgcHJpbnQoIldIQVQ9IixXSEFUKQogIHByaW50KCJWQUw9IixWQUwpCgogIHBy aW50KCJzaW0gdGFibGUiKQogIHRhYmxlX3ByaW50KHNpbSkKICBwcmludCgibWFwdiB0YWJs ZSIpCiAgdGFibGVfcHJpbnQobWFwdikKICBwcmludCgiYmlnIHRhYmxlIikKICB0YWJsZV9w cmludChiaWcpCiMrRU5EX1NSQwoKKiogZm9yIGNvbXBhcmlzb24sIHB5dGhvbgojK0hFQURF UjogOnZhciBXSEFUPXNpbXBsZS10YWJsZVsxLDBdIFZBTD1zaW1wbGUtdGFibGVbMiwwXQoj K0hFQURFUjogOnZhciAgc2ltPXNpbXBsZS10YWJsZQojK0hFQURFUjogOnZhciAgbWFwdj1h c3NvYy10YWJsZQojK0hFQURFUjogOnZhciAgYmlnPWJpZy10YWJsZQojK0JFR0lOX1NSQyBw eXRob24gOmV4cG9ydHMgY29kZSA6dGFuZ2xlIHllcwogIHByaW50IFdIQVQsICI9IiwgVkFM CgogIHByaW50ICJzaW1wbGUiLCBzaW0KICBwcmludCAibWFwdiAgIiwgbWFwdgogIHByaW50 ICJiaWcgICAiLCBiaWcKCiMrRU5EX1NSQwoKCg== --=_mailrelay-6023-1399667210-0001-2 Content-Type: application/octet-stream; name="ob-lua.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ob-lua.el" Ozs7IG9iLWx1YS5lbCAtLS0gb3JnLWJhYmVsIGZ1bmN0aW9ucyBmb3IgbHVhIGV2YWx1YXRp b24KCjs7IENvcHlyaWdodCAoQykgMjAwOS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgoKOzsgQXV0aG9yczogRXJpYyBTY2h1bHRlCjs7CSBEYW4gRGF2aXNvbgo7OyBL ZXl3b3JkczogbGl0ZXJhdGUgcHJvZ3JhbW1pbmcsIHJlcHJvZHVjaWJsZSByZXNlYXJjaAo7 OyBIb21lcGFnZTogaHR0cDovL29yZ21vZGUub3JnCgo7OyBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHTlUgRW1hY3MuCgo7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo7OyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKOzsgR05V IEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggR05V IEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoK Ozs7IENvbW1lbnRhcnk6Cgo7OyBPcmctQmFiZWwgc3VwcG9ydCBmb3IgZXZhbHVhdGluZyBs dWEgc291cmNlIGNvZGUuCgo7OzsgQ29kZToKKHJlcXVpcmUgJ29iKQooZXZhbC13aGVuLWNv bXBpbGUgKHJlcXVpcmUgJ2NsKSkKCihkZWNsYXJlLWZ1bmN0aW9uIG9yZy1yZW1vdmUtaW5k ZW50YXRpb24gIm9yZyIgKQooZGVjbGFyZS1mdW5jdGlvbiBsdWEtc2hlbGwgImV4dDpsdWEt bW9kZSIgKCZvcHRpb25hbCBhcmdwcm9tcHQpKQooZGVjbGFyZS1mdW5jdGlvbiBsdWEtdG9n Z2xlLXNoZWxscyAiZXh0Omx1YS1tb2RlIiAoYXJnKSkKKGRlY2xhcmUtZnVuY3Rpb24gcnVu LWx1YSAiZXh0Omx1YSIgKGNtZCAmb3B0aW9uYWwgZGVkaWNhdGVkIHNob3cpKQoKKGRlZnZh ciBvcmctYmFiZWwtdGFuZ2xlLWxhbmctZXh0cykKKGFkZC10by1saXN0ICdvcmctYmFiZWwt dGFuZ2xlLWxhbmctZXh0cyAnKCJsdWEiIC4gImx1YSIpKQoKKGRlZnZhciBvcmctYmFiZWwt ZGVmYXVsdC1oZWFkZXItYXJnczpsdWEgJygpKQoKKGRlZmN1c3RvbSBvcmctYmFiZWwtbHVh LWNvbW1hbmQgImx1YSIKICAiTmFtZSBvZiB0aGUgY29tbWFuZCBmb3IgZXhlY3V0aW5nIEx1 YSBjb2RlLiIKICA6dmVyc2lvbiAiMjQuNCIKICA6cGFja2FnZS12ZXJzaW9uICcoT3JnIC4g IjguMCIpCiAgOmdyb3VwICdvcmctYmFiZWwKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3Rv bSBvcmctYmFiZWwtbHVhLW1vZGUKICAoaWYgKG9yIChmZWF0dXJlcCAneGVtYWNzKSAoZmVh dHVyZXAgJ2x1YS1tb2RlKSkgJ2x1YS1tb2RlICdsdWEpCiAgIlByZWZlcnJlZCBsdWEgbW9k ZSBmb3IgdXNlIGluIHJ1bm5pbmcgbHVhIGludGVyYWN0aXZlbHkuClRoaXMgd2lsbCB0eXBp Y2FsbHkgYmUgZWl0aGVyICdsdWEgb3IgJ2x1YS1tb2RlLiIKICA6Z3JvdXAgJ29yZy1iYWJl bAogIDp2ZXJzaW9uICIyNC40IgogIDpwYWNrYWdlLXZlcnNpb24gJyhPcmcgLiAiOC4wIikK ICA6dHlwZSAnc3ltYm9sKQoKKGRlZnZhciBvcmctc3JjLXByZXNlcnZlLWluZGVudGF0aW9u KQoKKGRlZmN1c3RvbSBvcmctYmFiZWwtbHVhLWhsaW5lLXRvICJOb25lIgogICJSZXBsYWNl IGhsaW5lcyBpbiBpbmNvbWluZyB0YWJsZXMgd2l0aCB0aGlzIHdoZW4gdHJhbnNsYXRpbmcg dG8gbHVhLiIKICA6Z3JvdXAgJ29yZy1iYWJlbAogIDp2ZXJzaW9uICIyNC40IgogIDpwYWNr YWdlLXZlcnNpb24gJyhPcmcgLiAiOC4wIikKICA6dHlwZSAnc3RyaW5nKQoKKGRlZmN1c3Rv bSBvcmctYmFiZWwtbHVhLU5vbmUtdG8gJ2hsaW5lCiAgIlJlcGxhY2UgJ05vbmUnIGluIGx1 YSB0YWJsZXMgd2l0aCB0aGlzIGJlZm9yZSByZXR1cm5pbmcuIgogIDpncm91cCAnb3JnLWJh YmVsCiAgOnZlcnNpb24gIjI0LjQiCiAgOnBhY2thZ2UtdmVyc2lvbiAnKE9yZyAuICI4LjAi KQogIDp0eXBlICdzeW1ib2wpCgooZGVmdW4gb3JnLWJhYmVsLWV4ZWN1dGU6bHVhIChib2R5 IHBhcmFtcykKICAiRXhlY3V0ZSBhIGJsb2NrIG9mIEx1YSBjb2RlIHdpdGggQmFiZWwuClRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2sn LiIKICAobGV0KiAoKHNlc3Npb24gKG9yZy1iYWJlbC1sdWEtaW5pdGlhdGUtc2Vzc2lvbgoJ CSAgIChjZHIgKGFzc29jIDpzZXNzaW9uIHBhcmFtcykpKSkKICAgICAgICAgKHJlc3VsdC1w YXJhbXMgKGNkciAoYXNzb2MgOnJlc3VsdC1wYXJhbXMgcGFyYW1zKSkpCiAgICAgICAgIChy ZXN1bHQtdHlwZSAoY2RyIChhc3NvYyA6cmVzdWx0LXR5cGUgcGFyYW1zKSkpCgkgKHJldHVy bi12YWwgKHdoZW4gKGFuZCAoZXEgcmVzdWx0LXR5cGUgJ3ZhbHVlKSAobm90IHNlc3Npb24p KQoJCSAgICAgICAoY2RyIChhc3NvYyA6cmV0dXJuIHBhcmFtcykpKSkKCSAocHJlYW1ibGUg KGNkciAoYXNzb2MgOnByZWFtYmxlIHBhcmFtcykpKQogICAgICAgICAoZnVsbC1ib2R5Cgkg IChvcmctYmFiZWwtZXhwYW5kLWJvZHk6Z2VuZXJpYwoJICAgKGNvbmNhdCBib2R5IChpZiBy ZXR1cm4tdmFsIChmb3JtYXQgIlxucmV0dXJuICVzIiByZXR1cm4tdmFsKSAiIikpCgkgICBw YXJhbXMgKG9yZy1iYWJlbC12YXJpYWJsZS1hc3NpZ25tZW50czpsdWEgcGFyYW1zKSkpCiAg ICAgICAgIChyZXN1bHQgKG9yZy1iYWJlbC1sdWEtZXZhbHVhdGUKCQkgIHNlc3Npb24gZnVs bC1ib2R5IHJlc3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgcHJlYW1ibGUpKSkKICAgIChvcmct YmFiZWwtcmVhc3NlbWJsZS10YWJsZQogICAgIHJlc3VsdAogICAgIChvcmctYmFiZWwtcGlj ay1uYW1lIChjZHIgKGFzc29jIDpjb2xuYW1lLW5hbWVzIHBhcmFtcykpCgkJCSAgKGNkciAo YXNzb2MgOmNvbG5hbWVzIHBhcmFtcykpKQogICAgIChvcmctYmFiZWwtcGljay1uYW1lIChj ZHIgKGFzc29jIDpyb3duYW1lLW5hbWVzIHBhcmFtcykpCgkJCSAgKGNkciAoYXNzb2MgOnJv d25hbWVzIHBhcmFtcykpKSkpKQoKKGRlZnVuIG9yZy1iYWJlbC1wcmVwLXNlc3Npb246bHVh IChzZXNzaW9uIHBhcmFtcykKICAiUHJlcGFyZSBTRVNTSU9OIGFjY29yZGluZyB0byB0aGUg aGVhZGVyIGFyZ3VtZW50cyBpbiBQQVJBTVMuClZBUlMgY29udGFpbnMgcmVzb2x2ZWQgdmFy aWFibGUgcmVmZXJlbmNlcyIKICAobGV0KiAoKHNlc3Npb24gKG9yZy1iYWJlbC1sdWEtaW5p dGlhdGUtc2Vzc2lvbiBzZXNzaW9uKSkKCSAodmFyLWxpbmVzCgkgIChvcmctYmFiZWwtdmFy aWFibGUtYXNzaWdubWVudHM6bHVhIHBhcmFtcykpKQogICAgKG9yZy1iYWJlbC1jb21pbnQt aW4tYnVmZmVyIHNlc3Npb24KICAgICAgKG1hcGMgKGxhbWJkYSAodmFyKQogICAgICAgICAg ICAgIChlbmQtb2YtbGluZSAxKSAoaW5zZXJ0IHZhcikgKGNvbWludC1zZW5kLWlucHV0KQog ICAgICAgICAgICAgIChvcmctYmFiZWwtY29taW50LXdhaXQtZm9yLW91dHB1dCBzZXNzaW9u KSkgdmFyLWxpbmVzKSkKICAgIHNlc3Npb24pKQoKKGRlZnVuIG9yZy1iYWJlbC1sb2FkLXNl c3Npb246bHVhIChzZXNzaW9uIGJvZHkgcGFyYW1zKQogICJMb2FkIEJPRFkgaW50byBTRVNT SU9OLiIKICAoc2F2ZS13aW5kb3ctZXhjdXJzaW9uCiAgICAobGV0ICgoYnVmZmVyIChvcmct YmFiZWwtcHJlcC1zZXNzaW9uOmx1YSBzZXNzaW9uIHBhcmFtcykpKQogICAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAgICAoZ290by1jaGFyIChwcm9jZXNzLW1hcmsg KGdldC1idWZmZXItcHJvY2VzcyAoY3VycmVudC1idWZmZXIpKSkpCiAgICAgICAgKGluc2Vy dCAob3JnLWJhYmVsLWNob21wIGJvZHkpKSkKICAgICAgYnVmZmVyKSkpCgo7OyBoZWxwZXIg ZnVuY3Rpb25zCgooZGVmdW4gb3JnLWJhYmVsLXZhcmlhYmxlLWFzc2lnbm1lbnRzOmx1YSAo cGFyYW1zKQogICJSZXR1cm4gYSBsaXN0IG9mIEx1YSBzdGF0ZW1lbnRzIGFzc2lnbmluZyB0 aGUgYmxvY2sncyB2YXJpYWJsZXMuIgogIChtYXBjYXIKICAgKGxhbWJkYSAocGFpcikKICAg ICAoZm9ybWF0ICIlcz0lcyIKCSAgICAgKGNhciBwYWlyKQoJICAgICAob3JnLWJhYmVsLWx1 YS12YXItdG8tbHVhIChjZHIgcGFpcikpKSkKICAgKG1hcGNhciAjJ2NkciAob3JnLWJhYmVs LWdldC1oZWFkZXIgcGFyYW1zIDp2YXIpKSkpCgooZGVmdW4gb3JnLWJhYmVsLWx1YS12YXIt dG8tbHVhICh2YXIpCiAgIkNvbnZlcnQgYW4gZWxpc3AgdmFsdWUgdG8gYSBsdWEgdmFyaWFi bGUuCkNvbnZlcnQgYW4gZWxpc3AgdmFsdWUsIFZBUiwgaW50byBhIHN0cmluZyBvZiBsdWEg c291cmNlIGNvZGUKc3BlY2lmeWluZyBhIHZhcmlhYmxlIG9mIHRoZSBzYW1lIHZhbHVlLiIK ICAoaWYgKGxpc3RwIHZhcikKICAgICAgKGlmIChhbmQgKD0gMSAobGVuZ3RoIHZhcikpIChu b3QgKGxpc3RwIChjYXIgdmFyKSkpKQogICAgICAgICAgKG9yZy1iYWJlbC1sdWEtdmFyLXRv LWx1YSAoY2FyIHZhcikpCiAgICAgICAgKGlmIChhbmQKICAgICAgICAgICAgICg9IDIgKGxl bmd0aCB2YXIpKQogICAgICAgICAgICAgKG5vdCAobGlzdHAgKGNhciB2YXIpKSkpCiAgICAg ICAgICAgIChjb25jYXQKICAgICAgICAgICAgIChzdWJzdHJpbmctbm8tcHJvcGVydGllcyAo Y2FyIHZhcikpCiAgICAgICAgICAgICAiPSIKICAgICAgICAgICAgIChvcmctYmFiZWwtbHVh LXZhci10by1sdWEgKGNkciB2YXIpKSkKICAgICAgICAgIChjb25jYXQgInsiIChtYXBjb25j YXQgIydvcmctYmFiZWwtbHVhLXZhci10by1sdWEgdmFyICIsICIpICJ9IikpKQogICAgKGlm IChlcXVhbCB2YXIgJ2hsaW5lKQogICAgICAgIG9yZy1iYWJlbC1sdWEtaGxpbmUtdG8KICAg ICAgKGZvcm1hdAogICAgICAgKGlmIChhbmQgKHN0cmluZ3AgdmFyKSAoc3RyaW5nLW1hdGNo ICJbXG5ccl0iIHZhcikpICJcIlwiJVNcIlwiIiAiJVMiKQogICAgICAgKGlmIChzdHJpbmdw IHZhcikgKHN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHZhcikgdmFyKSkpKSkKCihkZWZ1biBv cmctYmFiZWwtbHVhLXRhYmxlLW9yLXN0cmluZyAocmVzdWx0cykKICAiQ29udmVydCBSRVNV TFRTIGludG8gYW4gYXBwcm9wcmlhdGUgZWxpc3AgdmFsdWUuCklmIHRoZSByZXN1bHRzIGxv b2sgbGlrZSBhIGxpc3Qgb3IgdHVwbGUsIHRoZW4gY29udmVydCB0aGVtIGludG8gYW4KRW1h Y3MtbGlzcCB0YWJsZSwgb3RoZXJ3aXNlIHJldHVybiB0aGUgcmVzdWx0cyBhcyBhIHN0cmlu Zy4iCiAgKGxldCAoKHJlcyAob3JnLWJhYmVsLXNjcmlwdC1lc2NhcGUgcmVzdWx0cykpKQog ICAgKGlmIChsaXN0cCByZXMpCiAgICAgICAgKG1hcGNhciAobGFtYmRhIChlbCkgKGlmIChl cXVhbCBlbCAnTm9uZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1iYWJlbC1s dWEtTm9uZS10byBlbCkpCiAgICAgICAgICAgICAgICByZXMpCiAgICAgIHJlcykpKQoKKGRl ZnZhciBvcmctYmFiZWwtbHVhLWJ1ZmZlcnMgJygoOmRlZmF1bHQgLiAiKkx1YSoiKSkpCgoo ZGVmdW4gb3JnLWJhYmVsLWx1YS1zZXNzaW9uLWJ1ZmZlciAoc2Vzc2lvbikKICAiUmV0dXJu IHRoZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIFNFU1NJT04uIgogIChjZHIgKGFzc29jIHNl c3Npb24gb3JnLWJhYmVsLWx1YS1idWZmZXJzKSkpCgooZGVmdW4gb3JnLWJhYmVsLWx1YS13 aXRoLWVhcm11ZmZzIChzZXNzaW9uKQogIChsZXQgKChuYW1lIChpZiAoc3RyaW5ncCBzZXNz aW9uKSBzZXNzaW9uIChmb3JtYXQgIiVzIiBzZXNzaW9uKSkpKQogICAgKGlmIChhbmQgKHN0 cmluZz0gIioiIChzdWJzdHJpbmcgbmFtZSAwIDEpKQoJICAgICAoc3RyaW5nPSAiKiIgKHN1 YnN0cmluZyBuYW1lICgtIChsZW5ndGggbmFtZSkgMSkpKSkKCW5hbWUKICAgICAgKGZvcm1h dCAiKiVzKiIgbmFtZSkpKSkKCihkZWZ1biBvcmctYmFiZWwtbHVhLXdpdGhvdXQtZWFybXVm ZnMgKHNlc3Npb24pCiAgKGxldCAoKG5hbWUgKGlmIChzdHJpbmdwIHNlc3Npb24pIHNlc3Np b24gKGZvcm1hdCAiJXMiIHNlc3Npb24pKSkpCiAgICAoaWYgKGFuZCAoc3RyaW5nPSAiKiIg KHN1YnN0cmluZyBuYW1lIDAgMSkpCgkgICAgIChzdHJpbmc9ICIqIiAoc3Vic3RyaW5nIG5h bWUgKC0gKGxlbmd0aCBuYW1lKSAxKSkpKQoJKHN1YnN0cmluZyBuYW1lIDEgKC0gKGxlbmd0 aCBuYW1lKSAxKSkKICAgICAgbmFtZSkpKQoKKGRlZnZhciBsdWEtZGVmYXVsdC1pbnRlcnBy ZXRlcikKKGRlZnZhciBsdWEtd2hpY2gtYnVmbmFtZSkKKGRlZnZhciBsdWEtc2hlbGwtYnVm ZmVyLW5hbWUpCihkZWZ1biBvcmctYmFiZWwtbHVhLWluaXRpYXRlLXNlc3Npb24tYnkta2V5 ICgmb3B0aW9uYWwgc2Vzc2lvbikKICAiSW5pdGlhdGUgYSBsdWEgc2Vzc2lvbi4KSWYgdGhl cmUgaXMgbm90IGEgY3VycmVudCBpbmZlcmlvci1wcm9jZXNzLWJ1ZmZlciBpbiBTRVNTSU9O CnRoZW4gY3JlYXRlLiAgUmV0dXJuIHRoZSBpbml0aWFsaXplZCBzZXNzaW9uLiIKICAocmVx dWlyZSBvcmctYmFiZWwtbHVhLW1vZGUpCiAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAg KGxldCogKChzZXNzaW9uIChpZiBzZXNzaW9uIChpbnRlcm4gc2Vzc2lvbikgOmRlZmF1bHQp KQogICAgICAgICAgIChsdWEtYnVmZmVyIChvcmctYmFiZWwtbHVhLXNlc3Npb24tYnVmZmVy IHNlc3Npb24pKQoJICAgKGNtZCAoaWYgKG1lbWJlciBzeXN0ZW0tdHlwZSAnKGN5Z3dpbiB3 aW5kb3dzLW50IG1zLWRvcykpCgkJICAgIChjb25jYXQgb3JnLWJhYmVsLWx1YS1jb21tYW5k ICIgLWkiKQoJCSAgb3JnLWJhYmVsLWx1YS1jb21tYW5kKSkpCiAgICAgIChjb25kCiAgICAg ICAoKGFuZCAoZXEgJ2x1YSBvcmctYmFiZWwtbHVhLW1vZGUpCgkgICAgIChmYm91bmRwICdy dW4tbHVhKSkgOyBsdWEuZWwKCShpZiAobm90ICh2ZXJzaW9uPCAiMjQuMSIgZW1hY3MtdmVy c2lvbikpCgkgICAgKHJ1bi1sdWEgY21kKQoJICAodW5sZXNzIGx1YS1idWZmZXIKCSAgICAo c2V0cSBsdWEtYnVmZmVyIChvcmctYmFiZWwtbHVhLXdpdGgtZWFybXVmZnMgc2Vzc2lvbikp KQoJICAobGV0ICgobHVhLXNoZWxsLWJ1ZmZlci1uYW1lCgkJIChvcmctYmFiZWwtbHVhLXdp dGhvdXQtZWFybXVmZnMgbHVhLWJ1ZmZlcikpKQoJICAgIChydW4tbHVhIGNtZCkpKSkKICAg ICAgICgoYW5kIChlcSAnbHVhLW1vZGUgb3JnLWJhYmVsLWx1YS1tb2RlKQoJICAgICAoZmJv dW5kcCAnbHVhLXNoZWxsKSkgOyBsdWEtbW9kZS5lbAoJOzsgTWFrZSBzdXJlIHRoYXQgbHVh LXdoaWNoLWJ1Zm5hbWUgaXMgaW5pdGlhbGl6ZWQsIGFzIG90aGVyd2lzZQoJOzsgaXQgd2ls bCBiZSBvdmVyd3JpdHRlbiB0aGUgZmlyc3QgdGltZSBhIEx1YSBidWZmZXIgaXMKCTs7IGNy ZWF0ZWQuCgkobHVhLXRvZ2dsZS1zaGVsbHMgbHVhLWRlZmF1bHQtaW50ZXJwcmV0ZXIpCgk7 OyBgbHVhLXNoZWxsJyBjcmVhdGVzIGEgYnVmZmVyIHdob3NlIG5hbWUgaXMgdGhlIHZhbHVl IG9mCgk7OyBgbHVhLXdoaWNoLWJ1Zm5hbWUnIHdpdGggJyoncyBhdCB0aGUgYmVnaW5uaW5n IGFuZCBlbmQKCShsZXQqICgoYnVmbmFtZSAoaWYgKGFuZCBsdWEtYnVmZmVyIChidWZmZXIt bGl2ZS1wIGx1YS1idWZmZXIpKQoJCQkgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyA7 OyB6YXAgc3Vycm91bmRpbmcgKgoJCQkgICAgICJeXFwqXFwoW14qXStcXClcXCokIiAiXFwx IiBsdWEtYnVmZmVyKQoJCQkgIChjb25jYXQgIkx1YS0iIChzeW1ib2wtbmFtZSBzZXNzaW9u KSkpKQoJICAgICAgIChsdWEtd2hpY2gtYnVmbmFtZSBidWZuYW1lKSkKCSAgKGx1YS1zaGVs bCkKCSAgKHNldHEgbHVhLWJ1ZmZlciAob3JnLWJhYmVsLWx1YS13aXRoLWVhcm11ZmZzIGJ1 Zm5hbWUpKSkpCiAgICAgICAodAoJKGVycm9yICJObyBmdW5jdGlvbiBhdmFpbGFibGUgZm9y IHJ1bm5pbmcgYW4gaW5mZXJpb3IgTHVhIikpKQogICAgICAoc2V0cSBvcmctYmFiZWwtbHVh LWJ1ZmZlcnMKCSAgICAoY29ucyAoY29ucyBzZXNzaW9uIGx1YS1idWZmZXIpCgkJICAoYXNz cS1kZWxldGUtYWxsIHNlc3Npb24gb3JnLWJhYmVsLWx1YS1idWZmZXJzKSkpCiAgICAgIHNl c3Npb24pKSkKCihkZWZ1biBvcmctYmFiZWwtbHVhLWluaXRpYXRlLXNlc3Npb24gKCZvcHRp b25hbCBzZXNzaW9uIHBhcmFtcykKICAiQ3JlYXRlIGEgc2Vzc2lvbiBuYW1lZCBTRVNTSU9O IGFjY29yZGluZyB0byBQQVJBTVMuIgogICh1bmxlc3MgKHN0cmluZz0gc2Vzc2lvbiAibm9u ZSIpCiAgICAob3JnLWJhYmVsLWx1YS1zZXNzaW9uLWJ1ZmZlcgogICAgIChvcmctYmFiZWwt bHVhLWluaXRpYXRlLXNlc3Npb24tYnkta2V5IHNlc3Npb24pKSkpCgooZGVmdmFyIG9yZy1i YWJlbC1sdWEtZW9lLWluZGljYXRvciAiJ29yZ19iYWJlbF9sdWFfZW9lJyIKICAiQSBzdHJp bmcgdG8gaW5kaWNhdGUgdGhhdCBldmFsdWF0aW9uIGhhcyBjb21wbGV0ZWQuIikKKGRlZnZh ciBvcmctYmFiZWwtbHVhLXdyYXBwZXItbWV0aG9kCiAgIgpkZWYgbWFpbigpOgolcwoKb3Bl bignJXMnLCAndycpLndyaXRlKCBzdHIobWFpbigpKSApIikKKGRlZnZhciBvcmctYmFiZWwt bHVhLXBwLXdyYXBwZXItbWV0aG9kCiAgIgppbXBvcnQgcHByaW50CmRlZiBtYWluKCk6CiVz CgpvcGVuKCclcycsICd3Jykud3JpdGUoIHBwcmludC5wZm9ybWF0KG1haW4oKSkgKSIpCgoo ZGVmdW4gb3JnLWJhYmVsLWx1YS1ldmFsdWF0ZQogIChzZXNzaW9uIGJvZHkgJm9wdGlvbmFs IHJlc3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgcHJlYW1ibGUpCiAgIkV2YWx1YXRlIEJPRFkg YXMgTHVhIGNvZGUuIgogIChpZiBzZXNzaW9uCiAgICAgIChvcmctYmFiZWwtbHVhLWV2YWx1 YXRlLXNlc3Npb24KICAgICAgIHNlc3Npb24gYm9keSByZXN1bHQtdHlwZSByZXN1bHQtcGFy YW1zKQogICAgKG9yZy1iYWJlbC1sdWEtZXZhbHVhdGUtZXh0ZXJuYWwtcHJvY2VzcwogICAg IGJvZHkgcmVzdWx0LXR5cGUgcmVzdWx0LXBhcmFtcyBwcmVhbWJsZSkpKQoKKGRlZnVuIG9y Zy1iYWJlbC1sdWEtZXZhbHVhdGUtZXh0ZXJuYWwtcHJvY2VzcwogIChib2R5ICZvcHRpb25h bCByZXN1bHQtdHlwZSByZXN1bHQtcGFyYW1zIHByZWFtYmxlKQogICJFdmFsdWF0ZSBCT0RZ IGluIGV4dGVybmFsIGx1YSBwcm9jZXNzLgpJZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ291dHB1 dCB0aGVuIHJldHVybiBzdGFuZGFyZCBvdXRwdXQgYXMgYQpzdHJpbmcuICBJZiBSRVNVTFQt VFlQRSBlcXVhbHMgJ3ZhbHVlIHRoZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKbGFzdCBz dGF0ZW1lbnQgaW4gQk9EWSwgYXMgZWxpc3AuIgogIChsZXQgKChyYXcKICAgICAgICAgKGNh c2UgcmVzdWx0LXR5cGUKICAgICAgICAgICAob3V0cHV0IChvcmctYmFiZWwtZXZhbCBvcmct YmFiZWwtbHVhLWNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29uY2F0IChpZiBwcmVhbWJsZSAoY29uY2F0IHByZWFtYmxlICJcbiIpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpKQogICAgICAgICAgICh2 YWx1ZSAobGV0ICgodG1wLWZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgImx1YS0iKSkpCiAg ICAgICAgICAgICAgICAgICAgKG9yZy1iYWJlbC1ldmFsCiAgICAgICAgICAgICAgICAgICAg IG9yZy1iYWJlbC1sdWEtY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAoY29uY2F0CiAg ICAgICAgICAgICAgICAgICAgICAoaWYgcHJlYW1ibGUgKGNvbmNhdCBwcmVhbWJsZSAiXG4i KSAiIikKICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQKICAgICAgICAgICAgICAgICAg ICAgICAoaWYgKG1lbWJlciAicHAiIHJlc3VsdC1wYXJhbXMpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9yZy1iYWJlbC1sdWEtcHAtd3JhcHBlci1tZXRob2QKICAgICAgICAgICAg ICAgICAgICAgICAgIG9yZy1iYWJlbC1sdWEtd3JhcHBlci1tZXRob2QpCiAgICAgICAgICAg ICAgICAgICAgICAgKG1hcGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRh IChsaW5lKSAoZm9ybWF0ICJcdCVzIiBsaW5lKSkKICAgICAgICAgICAgICAgICAgICAgICAg KHNwbGl0LXN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1yZW1vdmUtaW5k ZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLXRyaW0gYm9k eSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAiW1xyXG5dIikgIlxuIikKICAgICAgICAg ICAgICAgICAgICAgICAob3JnLWJhYmVsLXByb2Nlc3MtZmlsZS1uYW1lIHRtcC1maWxlICdu b3F1b3RlKSkpKQogICAgICAgICAgICAgICAgICAgIChvcmctYmFiZWwtZXZhbC1yZWFkLWZp bGUgdG1wLWZpbGUpKSkpKSkKICAgIChvcmctYmFiZWwtcmVzdWx0LWNvbmQgcmVzdWx0LXBh cmFtcwogICAgICByYXcKICAgICAgKG9yZy1iYWJlbC1sdWEtdGFibGUtb3Itc3RyaW5nIChv cmctYmFiZWwtdHJpbSByYXcpKSkpKQoKKGRlZnVuIG9yZy1iYWJlbC1sdWEtZXZhbHVhdGUt c2Vzc2lvbgogICAgKHNlc3Npb24gYm9keSAmb3B0aW9uYWwgcmVzdWx0LXR5cGUgcmVzdWx0 LXBhcmFtcykKICAiUGFzcyBCT0RZIHRvIHRoZSBMdWEgcHJvY2VzcyBpbiBTRVNTSU9OLgpJ ZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ291dHB1dCB0aGVuIHJldHVybiBzdGFuZGFyZCBvdXRw dXQgYXMgYQpzdHJpbmcuICBJZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ3ZhbHVlIHRoZW4gcmV0 dXJuIHRoZSB2YWx1ZSBvZiB0aGUKbGFzdCBzdGF0ZW1lbnQgaW4gQk9EWSwgYXMgZWxpc3Au IgogIChsZXQqICgoc2VuZC13YWl0IChsYW1iZGEgKCkgKGNvbWludC1zZW5kLWlucHV0IG5p bCB0KSAoc2xlZXAtZm9yIDAgNSkpKQoJIChkdW1wLWxhc3QtdmFsdWUKCSAgKGxhbWJkYQoJ ICAgICh0bXAtZmlsZSBwcCkKCSAgICAobWFwYwoJICAgICAobGFtYmRhIChzdGF0ZW1lbnQp IChpbnNlcnQgc3RhdGVtZW50KSAoZnVuY2FsbCBzZW5kLXdhaXQpKQoJICAgICAoaWYgcHAK CQkgKGxpc3QKCQkgICJpbXBvcnQgcHByaW50IgoJCSAgKGZvcm1hdCAib3BlbignJXMnLCAn dycpLndyaXRlKHBwcmludC5wZm9ybWF0KF8pKSIKCQkJICAob3JnLWJhYmVsLXByb2Nlc3Mt ZmlsZS1uYW1lIHRtcC1maWxlICdub3F1b3RlKSkpCgkgICAgICAgKGxpc3QgKGZvcm1hdCAi b3BlbignJXMnLCAndycpLndyaXRlKHN0cihfKSkiCgkJCSAgICAgKG9yZy1iYWJlbC1wcm9j ZXNzLWZpbGUtbmFtZSB0bXAtZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vcXVvdGUpKSkpKSkpCgkgKGlucHV0LWJv ZHkgKGxhbWJkYSAoYm9keSkKCQkgICAgICAgKG1hcGMgKGxhbWJkYSAobGluZSkgKGluc2Vy dCBsaW5lKSAoZnVuY2FsbCBzZW5kLXdhaXQpKQoJCQkgICAgIChzcGxpdC1zdHJpbmcgYm9k eSAiW1xyXG5dIikpCgkJICAgICAgIChmdW5jYWxsIHNlbmQtd2FpdCkpKQogICAgICAgICAo cmVzdWx0cwogICAgICAgICAgKGNhc2UgcmVzdWx0LXR5cGUKICAgICAgICAgICAgKG91dHB1 dAogICAgICAgICAgICAgKG1hcGNvbmNhdAogICAgICAgICAgICAgICMnb3JnLWJhYmVsLXRy aW0KICAgICAgICAgICAgICAoYnV0bGFzdAogICAgICAgICAgICAgICAob3JnLWJhYmVsLWNv bWludC13aXRoLW91dHB1dAogICAgICAgICAgICAgICAgICAgKHNlc3Npb24gb3JnLWJhYmVs LWx1YS1lb2UtaW5kaWNhdG9yIHQgYm9keSkKICAgICAgICAgICAgICAgICAoZnVuY2FsbCBp bnB1dC1ib2R5IGJvZHkpCiAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc2VuZC13YWl0KSAo ZnVuY2FsbCBzZW5kLXdhaXQpCiAgICAgICAgICAgICAgICAgKGluc2VydCBvcmctYmFiZWwt bHVhLWVvZS1pbmRpY2F0b3IpCiAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc2VuZC13YWl0 KSkKICAgICAgICAgICAgICAgMikgIlxuIikpCiAgICAgICAgICAgICh2YWx1ZQogICAgICAg ICAgICAgKGxldCAoKHRtcC1maWxlIChvcmctYmFiZWwtdGVtcC1maWxlICJsdWEtIikpKQog ICAgICAgICAgICAgICAob3JnLWJhYmVsLWNvbWludC13aXRoLW91dHB1dAogICAgICAgICAg ICAgICAgICAgKHNlc3Npb24gb3JnLWJhYmVsLWx1YS1lb2UtaW5kaWNhdG9yIG5pbCBib2R5 KQogICAgICAgICAgICAgICAgIChsZXQgKChjb21pbnQtcHJvY2Vzcy1lY2hvZXMgbmlsKSkK ICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGlucHV0LWJvZHkgYm9keSkKICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIGR1bXAtbGFzdC12YWx1ZSB0bXAtZmlsZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1lbWJlciAicHAiIHJlc3VsdC1wYXJhbXMpKQogICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgc2VuZC13YWl0KSAoZnVuY2FsbCBzZW5kLXdhaXQpCiAg ICAgICAgICAgICAgICAgICAoaW5zZXJ0IG9yZy1iYWJlbC1sdWEtZW9lLWluZGljYXRvcikK ICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHNlbmQtd2FpdCkpKQogICAgICAgICAgICAg ICAob3JnLWJhYmVsLWV2YWwtcmVhZC1maWxlIHRtcC1maWxlKSkpKSkpCiAgICAodW5sZXNz IChzdHJpbmc9IChzdWJzdHJpbmcgb3JnLWJhYmVsLWx1YS1lb2UtaW5kaWNhdG9yIDEgLTEp IHJlc3VsdHMpCiAgICAgIChvcmctYmFiZWwtcmVzdWx0LWNvbmQgcmVzdWx0LXBhcmFtcwoJ cmVzdWx0cwogICAgICAgIChvcmctYmFiZWwtbHVhLXRhYmxlLW9yLXN0cmluZyByZXN1bHRz KSkpKSkKCihkZWZ1biBvcmctYmFiZWwtbHVhLXJlYWQtc3RyaW5nIChzdHJpbmcpCiAgIlN0 cmlwICdzIGZyb20gYXJvdW5kIEx1YSBzdHJpbmcuIgogIChpZiAoc3RyaW5nLW1hdGNoICJe J1xcKFteXDAwMF0rXFwpJyQiIHN0cmluZykKICAgICAgKG1hdGNoLXN0cmluZyAxIHN0cmlu ZykKICAgIHN0cmluZykpCgoocHJvdmlkZSAnb2ItbHVhKQoKCgo7Ozsgb2ItbHVhLmVsIGVu ZHMgaGVyZQo= --=_mailrelay-6023-1399667210-0001-2--