From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: ken Newsgroups: gmane.emacs.help Subject: bug in url.el Date: Mon, 17 Mar 2014 12:40:43 -0400 Message-ID: <5327258B.2040203@mousecar.com> Reply-To: gebser@mousecar.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020806030804010901000103" X-Trace: ger.gmane.org 1395074551 26617 80.91.229.3 (17 Mar 2014 16:42:31 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 17 Mar 2014 16:42:31 +0000 (UTC) To: GNU Emacs List Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Mar 17 17:42:40 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WPacZ-0007PA-Gs for geh-help-gnu-emacs@m.gmane.org; Mon, 17 Mar 2014 17:42:39 +0100 Original-Received: from localhost ([::1]:59077 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WPacZ-0007Bh-1E for geh-help-gnu-emacs@m.gmane.org; Mon, 17 Mar 2014 12:42:39 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40835) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WPacH-00079R-UD for help-gnu-emacs@gnu.org; Mon, 17 Mar 2014 12:42:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WPacC-0005mI-Sx for help-gnu-emacs@gnu.org; Mon, 17 Mar 2014 12:42:21 -0400 Original-Received: from mout.perfora.net ([74.208.4.194]:51131) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WPacC-0005m8-Lc for help-gnu-emacs@gnu.org; Mon, 17 Mar 2014 12:42:16 -0400 Original-Received: from dellap.mousecar.net (clev-static1-cs17.static.dslohio.net [66.219.160.17]) by mrelay.perfora.net (node=mrus4) with ESMTP (Nemesis) id 0M0Q2H-1XHQ6j2rjZ-00v3At; Mon, 17 Mar 2014 12:42:15 -0400 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 X-Provags-ID: V02:K0:LnkNwgtV+qMwFGrmLjJW18R2JalYPYM5QtX6h+Rmv3E BFAFW7MPpm8NXWkocei6mOmEwVMyP3ayeY0ExdtviIr2dKJjFS 7xyc+C87rQLUFxmWT2m4RF0FTevd663iJQyqwCDo3KLIOqTnyg B4G78dYPSMnRmXISWmQiucoHt61ea81tuugwx22ZRMLrsQMYDH DyKYgamhm7Oqunel6Y0GmGagE4ETudD6ovWqf+RnKiTbZ2yoDn iiD9M+bJwVi/ifFEbmzUrU6jTFEUE4oPCfz+dwfO17HDQbHwRI rAeCD8UaO31ZLYkMgRFyFxYAFYFRVRTF+ORBFE/nvQRJ6oyjGz pnHWQPgoSO6mXOdxJa+3lI6lFwKUnH3WPIo4QyUlF X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 74.208.4.194 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:96562 Archived-At: This is a multi-part message in MIME format. --------------020806030804010901000103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Some code developed a few years ago which worked fine up to my last upgrade of emacs now errors out with: Debugger entered--Lisp error: (void-variable url-passwd-entry-func) (cond (url-passwd-entry-func nil) ((fboundp ...) (setq url-passwd-entry-func ...)) ((or ... ...) (if ... ...) (setq url-passwd-entry-func ...)) ((or ... ...) (setq url-passwd-entry-func ...)) (t (url-warn ... "(url-setup): Can't determine how to read passwords, winging it."))) (if url-setup-done nil (mailcap-parse-mailcaps) (mailcap-parse-mimetypes) (url-register-auth-scheme "basic" nil 4) (url-register-auth-scheme "digest" nil 7) (setq url-cookie-file (or url-cookie-file ...)) (setq url-history-file (or url-history-file ...)) (url-history-parse-history) (url-history-setup-save-timer) (url-cookie-setup-save-timer) (url-cookie-parse-file url-cookie-file) (let (...) (if noproxy ...)) (cond (url-passwd-entry-func nil) (... ...) (... ... ...) (... ...) (t ...)) (url-setup-privacy-info) (run-hooks (quote url-load-hook)) (setq url-setup-done t)) (unless url-setup-done (mailcap-parse-mailcaps) (mailcap-parse-mimetypes) (url-register-auth-scheme "basic" nil 4) (url-register-auth-scheme "digest" nil 7) (setq url-cookie-file (or url-cookie-file ...)) (setq url-history-file (or url-history-file ...)) (url-history-parse-history) (url-history-setup-save-timer) (url-cookie-setup-save-timer) (url-cookie-parse-file url-cookie-file) (let (...) (if noproxy ...)) (cond (url-passwd-entry-func nil) (... ...) (... ... ...) (... ...) (t ...)) (url-setup-privacy-info) (run-hooks (quote url-load-hook)) (setq url-setup-done t)) url-do-setup() url-retrieve(".... See url.el attached. The URL my code is trying to fetch requires no password, so that's the first odd thing. Why should the function fail for lack of something which isn't needed? Whatever password configuration the function is requiring should be required only when the situation requires it, yes? So I'd think that portion of the code should be moved out from url-do-setup and called only when needed, i.e., only when the URL requires a userid and password. The same function makes mention of 'user defaults' but gives not a hint as to how the user is to set such defaults. It would seem to be a good idea for this information to be provided somewhere so that regular users can set their defaults without having to reverse engineer the code to see what's being asked for. Finally, what could I easily and expediently do to work around this bug? My first thought would be to put some statements and/or assign some variables in the user defaults file, whatever and wherever that is and in whatever format this function would accept. But other workarounds might be better... who knows? tia. --------------020806030804010901000103 Content-Type: text/plain; charset=UTF-8; name="url.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="url.el" Ozs7IHVybC5lbCAtLS0gVW5pZm9ybSBSZXNvdXJjZSBMb2NhdG9yIHJldHJpZXZhbCB0b29s DQo7OyBBdXRob3I6IEJpbGwgUGVycnkgPHdtcGVycnlAZ251Lm9yZz4NCjs7IFZlcnNpb246 ICRSZXZpc2lvbjogMS4xNSAkDQo7OyBLZXl3b3JkczogY29tbSwgZGF0YSwgcHJvY2Vzc2Vz LCBoeXBlcm1lZGlhDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7OyBDb3B5cmln aHQgKGMpIDE5OTMgLSAxOTk2IGJ5IFdpbGxpYW0gTS4gUGVycnkgPHdtcGVycnlAY3MuaW5k aWFuYS5lZHU+DQo7OzsgQ29weXJpZ2h0IChjKSAxOTk2LCA5NywgOTgsIDk5LCAyMDAxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KOzs7DQo7OzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR05VIEVtYWNzLg0KOzs7DQo7OzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCjs7OyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQ0KOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCjs7OyBhbnkgbGF0ZXIgdmVyc2lvbi4NCjs7Ow0K Ozs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLA0KOzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo7OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KOzs7IEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo7OzsNCjs7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQ0KOzs7IGFsb25nIHdpdGggR05VIEVtYWNzOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElm IG5vdCwgd3JpdGUgdG8gdGhlDQo7OzsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsDQo7OzsgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQoNCjs7IFJlZ2lzdGVyZWQg VVJJIHNjaGVtZXM6IGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvdXJpLXNjaGVt ZXMNCg0KKGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbCkpDQo7OyBEb24ndCByZXF1 aXJlIENMIGF0IHJ1bnRpbWUgaWYgd2UgY2FuIGF2b2lkIGl0IChFbWFjcyAyMSkuDQo7OyBP dGhlcndpc2Ugd2UgbmVlZCBpdCBmb3IgaGFzaGluZyBmdW5jdGlvbnMuICBgcHV0aGFzaCcg d2FzIG5ldmVyDQo7OyBkZWZpbmVkIGluIHRoZSBFbWFjcyAyMCBjbC5lbCBmb3Igc29tZSBy ZWFzb24uDQooaWYgKGZib3VuZHAgJ3B1dGhhc2gpDQogICAgbmlsCQkJCQk7IGludGVybmFs IG9yIENMIGlzIGxvYWRlZA0KICAoZGVmYWxpYXMgJ3B1dGhhc2ggJ2NsLXB1dGhhc2gpDQog IChhdXRvbG9hZCAnY2wtcHV0aGFzaCAiY2wiKQ0KICAoYXV0b2xvYWQgJ2dldGhhc2ggImNs IikNCiAgKGF1dG9sb2FkICdtYXBoYXNoICJjbCIpDQogIChhdXRvbG9hZCAnbWFrZS1oYXNo LXRhYmxlICJjbCIpKQ0KDQooZXZhbC13aGVuLWNvbXBpbGUNCiAgKHJlcXVpcmUgJ21tLWRl Y29kZSkNCiAgKHJlcXVpcmUgJ21tLXZpZXcpKQ0KDQoocmVxdWlyZSAnbWFpbGNhcCkNCihy ZXF1aXJlICd1cmwtdmFycykNCihyZXF1aXJlICd1cmwtY29va2llKQ0KKHJlcXVpcmUgJ3Vy bC1oaXN0b3J5KQ0KKHJlcXVpcmUgJ3VybC1leHBhbmQpDQoocmVxdWlyZSAndXJsLXByaXZh Y3kpDQoocmVxdWlyZSAndXJsLW1ldGhvZHMpDQoocmVxdWlyZSAndXJsLXByb3h5KQ0KKHJl cXVpcmUgJ3VybC1wYXJzZSkNCihyZXF1aXJlICd1cmwtdXRpbCkNCg0KOzsgRml4bWU6IGN1 c3RvbWl6ZT8gY29udmVydC1zdGFuZGFyZC1maWxlbmFtZT8gDQo7OzsjIyNhdXRvbG9hZA0K KGRlZnZhciB1cmwtY29uZmlndXJhdGlvbi1kaXJlY3RvcnkgIn4vLnVybCIpDQoNCihkZWZ1 biB1cmwtZG8tc2V0dXAgKCkNCiAgIlNldHVwIHRoZSB1cmwgcGFja2FnZS4NClRoaXMgaXMg dG8gYXZvaWQgY29uZmxpY3Qgd2l0aCB1c2VyIHNldHRpbmdzIGlmIFVSTCBpcyBkdW1wZWQg d2l0aA0KRW1hY3MuIg0KICAodW5sZXNzIHVybC1zZXR1cC1kb25lDQoNCiAgICA7OyBNYWtl IE9TLzIgaGFwcHkNCiAgICA7OyhwdXNoICcoImh0dHAiICI4MCIpIHRjcC1iaW5hcnktcHJv Y2Vzcy1pbnB1dC1zZXJ2aWNlcykNCg0KICAgIChtYWlsY2FwLXBhcnNlLW1haWxjYXBzKQ0K ICAgIChtYWlsY2FwLXBhcnNlLW1pbWV0eXBlcykNCiAgICANCiAgICA7OyBSZWdpc3RlciBh bGwgdGhlIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMgd2UgY2FuIGhhbmRsZQ0KICAgICh1cmwt cmVnaXN0ZXItYXV0aC1zY2hlbWUgImJhc2ljIiBuaWwgNCkNCiAgICAodXJsLXJlZ2lzdGVy LWF1dGgtc2NoZW1lICJkaWdlc3QiIG5pbCA3KQ0KDQogICAgKHNldHEgdXJsLWNvb2tpZS1m aWxlDQoJICAob3IgdXJsLWNvb2tpZS1maWxlDQoJICAgICAgKGV4cGFuZC1maWxlLW5hbWUg ImNvb2tpZXMiIHVybC1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSkpKQ0KICAgIA0KICAgIChz ZXRxIHVybC1oaXN0b3J5LWZpbGUNCgkgIChvciB1cmwtaGlzdG9yeS1maWxlDQoJICAgICAg KGV4cGFuZC1maWxlLW5hbWUgImhpc3RvcnkiIHVybC1jb25maWd1cmF0aW9uLWRpcmVjdG9y eSkpKQ0KICANCiAgICA7OyBQYXJzZSB0aGUgZ2xvYmFsIGhpc3RvcnkgZmlsZSBpZiBpdCBl eGlzdHMsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQNCiAgICA7OyBmb3IgVVJMIGNvbXBsZXRp b24sIGV0Yy4NCiAgICAodXJsLWhpc3RvcnktcGFyc2UtaGlzdG9yeSkNCiAgICAodXJsLWhp c3Rvcnktc2V0dXAtc2F2ZS10aW1lcikNCg0KICAgIDs7IERpdHRvIGZvciBjb29raWVzDQog ICAgKHVybC1jb29raWUtc2V0dXAtc2F2ZS10aW1lcikNCiAgICAodXJsLWNvb2tpZS1wYXJz ZS1maWxlIHVybC1jb29raWUtZmlsZSkNCg0KICAgIDs7IFJlYWQgaW4gcHJveHkgZ2F0ZXdh eXMNCiAgICAobGV0ICgobm9wcm94eSAoYW5kIChub3QgKGFzc29jICJub19wcm94eSIgdXJs LXByb3h5LXNlcnZpY2VzKSkNCgkJCShvciAoZ2V0ZW52ICJOT19QUk9YWSIpDQoJCQkgICAg KGdldGVudiAibm9fUFJPWFkiKQ0KCQkJICAgIChnZXRlbnYgIm5vX3Byb3h5IikpKSkpDQog ICAgICAoaWYgbm9wcm94eQ0KCSAgKHNldHEgdXJsLXByb3h5LXNlcnZpY2VzDQoJCShjb25z IChjb25zICJub19wcm94eSINCgkJCSAgICAoY29uY2F0ICJcXCgiDQoJCQkJICAgIChtYXBj b25jYXQNCgkJCQkgICAgIChsYW1iZGEgKHgpDQoJCQkJICAgICAgIChjb25kDQoJCQkJCSgo PSB4ID8sKSAiXFx8IikNCgkJCQkJKCg9IHggPyApICIiKQ0KCQkJCQkoKD0geCA/LikgKHJl Z2V4cC1xdW90ZSAiLiIpKQ0KCQkJCQkoKD0geCA/KikgIi4qIikNCgkJCQkJKCg9IHggPz8p ICIuIikNCgkJCQkJKHQgKGNoYXItdG8tc3RyaW5nIHgpKSkpDQoJCQkJICAgICBub3Byb3h5 ICIiKSAiXFwpIikpDQoJCSAgICAgIHVybC1wcm94eS1zZXJ2aWNlcykpKSkNCg0KICAgIDs7 IFNldCB0aGUgcGFzc3dvcmQgZW50cnkgZnVudGlvbiBiYXNlZCBvbiB1c2VyIGRlZmF1bHRz IG9yIGd1ZXNzDQogICAgOzsgYmFzZWQgb24gd2hpY2ggcmVtb3RlLWZpbGUtYWNjZXNzIHBh Y2thZ2UgdGhleSBhcmUgdXNpbmcuDQogICAgKGNvbmQNCiAgICAgKHVybC1wYXNzd2QtZW50 cnktZnVuYyBuaWwpCTsgQWxyZWFkeSBiZWVuIHNldA0KICAgICAoKGZib3VuZHAgJ3JlYWQt cGFzc3dkKQkJOyBVc2Ugc2VjdXJlIHBhc3N3b3JkIGlmIGF2YWlsYWJsZQ0KICAgICAgKHNl dHEgdXJsLXBhc3N3ZC1lbnRyeS1mdW5jICdyZWFkLXBhc3N3ZCkpDQogICAgICgob3IgKGZl YXR1cmVwICdlZnMpCQk7IFVzaW5nIEVGUw0KCSAgKGZlYXR1cmVwICdlZnMtYXV0bykpCQk7 IG9yIGF1dG9sb2FkaW5nIGVmcw0KICAgICAgKGlmIChub3QgKGZib3VuZHAgJ3JlYWQtcGFz c3dkKSkNCgkgIChhdXRvbG9hZCAncmVhZC1wYXNzd2QgInBhc3N3ZCIgIlJlYWQgaW4gYSBw YXNzd29yZCIgbmlsKSkNCiAgICAgIChzZXRxIHVybC1wYXNzd2QtZW50cnktZnVuYyAncmVh ZC1wYXNzd2QpKQ0KICAgICAoKG9yIChmZWF0dXJlcCAnYW5nZS1mdHApCQk7IFVzaW5nIGFu Z2UtZnRwDQoJICAoYW5kIChib3VuZHAgJ2ZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0KQ0KCSAg ICAgICAobm90IChmZWF0dXJlcCAneGVtYWNzKSkpKSA7ID8/DQogICAgICAoc2V0cSB1cmwt cGFzc3dkLWVudHJ5LWZ1bmMgJ2FuZ2UtZnRwLXJlYWQtcGFzc3dkKSkNCiAgICAgKHQNCiAg ICAgICh1cmwtd2Fybg0KICAgICAgICdzZWN1cml0eQ0KICAgICAgICIodXJsLXNldHVwKTog Q2FuJ3QgZGV0ZXJtaW5lIGhvdyB0byByZWFkIHBhc3N3b3Jkcywgd2luZ2luZyBpdC4iKSkp DQogIA0KICAgICh1cmwtc2V0dXAtcHJpdmFjeS1pbmZvKQ0KICAgIChydW4taG9va3MgJ3Vy bC1sb2FkLWhvb2spDQogICAgKHNldHEgdXJsLXNldHVwLWRvbmUgdCkpKQ0KDQo7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7OzsgUmV0cmlldmFsIGZ1bmN0aW9ucw0KOzs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KKGRlZnVuIHVybC1yZXRyaWV2ZSAodXJsIGNhbGxiYWNrICZv cHRpb25hbCBjYmFyZ3MpDQogICJSZXRyaWV2ZSBVUkwgYXN5bmNocm9ub3VzbHkgYW5kIGNh bGwgQ0FMTEJBQ0sgd2l0aCBDQkFSR1Mgd2hlbiBmaW5pc2hlZC4NClRoZSBjYWxsYmFjayBp cyBjYWxsZWQgd2hlbiB0aGUgb2JqZWN0IGhhcyBiZWVuIGNvbXBsZXRlbHkgcmV0cmlldmVk LCB3aXRoDQp0aGUgY3VycmVudCBidWZmZXIgY29udGFpbmluZyB0aGUgb2JqZWN0LCBhbmQg YW55IE1JTUUgaGVhZGVycyBhc3NvY2lhdGVkDQp3aXRoIGl0LiAgVVJMIGlzIGVpdGhlciBh IHN0cmluZyBvciBhIHBhcnNlZCBVUkwuDQoNClJldHVybiB0aGUgYnVmZmVyIFVSTCB3aWxs IGxvYWQgaW50bywgb3IgbmlsIGlmIHRoZSBwcm9jZXNzIGhhcw0KYWxyZWFkeSBjb21wbGV0 ZWQuIg0KICAodXJsLWRvLXNldHVwKQ0KICAodXJsLWdjLWRlYWQtYnVmZmVycykNCiAgKGlm IChzdHJpbmdwIHVybCkNCiAgICAgICAoc2V0LXRleHQtcHJvcGVydGllcyAwIChsZW5ndGgg dXJsKSBuaWwgdXJsKSkNCiAgKGlmIChub3QgKHZlY3RvcnAgdXJsKSkNCiAgICAgIChzZXRx IHVybCAodXJsLWdlbmVyaWMtcGFyc2UtdXJsIHVybCkpKQ0KICAoaWYgKG5vdCAoZnVuY3Rp b25wIGNhbGxiYWNrKSkNCiAgICAgIChlcnJvciAiTXVzdCBwcm92aWRlIGEgY2FsbGJhY2sg ZnVuY3Rpb24gdG8gdXJsLXJldHJpZXZlIikpDQogICh1bmxlc3MgKHVybC10eXBlIHVybCkN CiAgICAoZXJyb3IgIkJhZCB1cmw6ICVzIiAodXJsLXJlY3JlYXRlLXVybCB1cmwpKSkNCiAg KGxldCAoKGxvYWRlciAodXJsLXNjaGVtZS1nZXQtcHJvcGVydHkgKHVybC10eXBlIHVybCkg J2xvYWRlcikpDQoJKHVybC11c2luZy1wcm94eSAoaWYgKHVybC1ob3N0IHVybCkNCgkJCSAg ICAgKHVybC1maW5kLXByb3h5LWZvci11cmwgdXJsICh1cmwtaG9zdCB1cmwpKSkpDQoJKGJ1 ZmZlciBuaWwpDQoJKGFzeW5jaCAodXJsLXNjaGVtZS1nZXQtcHJvcGVydHkgKHVybC10eXBl IHVybCkgJ2FzeW5jaHJvbm91cy1wKSkpDQogICAgKGlmIHVybC11c2luZy1wcm94eQ0KCShz ZXRxIGFzeW5jaCB0DQoJICAgICAgbG9hZGVyICd1cmwtcHJveHkpKQ0KICAgIChpZiBhc3lu Y2gNCgkoc2V0cSBidWZmZXIgKGZ1bmNhbGwgbG9hZGVyIHVybCBjYWxsYmFjayBjYmFyZ3Mp KQ0KICAgICAgKHNldHEgYnVmZmVyIChmdW5jYWxsIGxvYWRlciB1cmwpKQ0KICAgICAgKGlm IGJ1ZmZlcg0KCSAgKHNhdmUtZXhjdXJzaW9uDQoJICAgIChzZXQtYnVmZmVyIGJ1ZmZlcikN CgkgICAgKGFwcGx5IGNhbGxiYWNrIGNiYXJncykpKSkNCiAgICAodXJsLWhpc3RvcnktdXBk YXRlLXVybCB1cmwgKGN1cnJlbnQtdGltZSkpDQogICAgYnVmZmVyKSkNCg0KKGRlZnVuIHVy bC1yZXRyaWV2ZS1zeW5jaHJvbm91c2x5ICh1cmwpDQogICJSZXRyaWV2ZSBVUkwgc3luY2hy b25vdXNseS4NClJldHVybiB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEsIG9yIG5p bCBpZiB0aGVyZSBhcmUgbm8gZGF0YQ0KYXNzb2NpYXRlZCB3aXRoIGl0ICh0aGUgY2FzZSBm b3IgZGlyZWQsIGluZm8sIG9yIG1haWx0byBVUkxzIHRoYXQgbmVlZA0Kbm8gZnVydGhlciBw cm9jZXNzaW5nKS4gIFVSTCBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYSBwYXJzZWQgVVJMLiIN CiAgKHVybC1kby1zZXR1cCkNCg0KICAobGV4aWNhbC1sZXQgKChyZXRyaWV2YWwtZG9uZSBu aWwpDQoJCShhc3luY2gtYnVmZmVyIG5pbCkpDQogICAgKHNldHEgYXN5bmNoLWJ1ZmZlcg0K CSAgKHVybC1yZXRyaWV2ZSB1cmwgKGxhbWJkYSAoJnJlc3QgaWdub3JlZCkNCgkJCSAgICAg ICh1cmwtZGVidWcgJ3JldHJpZXZhbCAiU3luY2hyb25vdXMgZmV0Y2hpbmcgZG9uZSAoJVMp IiAoY3VycmVudC1idWZmZXIpKQ0KCQkJICAgICAgKHNldHEgcmV0cmlldmFsLWRvbmUgdA0K CQkJCSAgICBhc3luY2gtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkpDQogICAgKGlmIChu b3QgYXN5bmNoLWJ1ZmZlcikNCgk7OyBXZSBkbyBub3QgbmVlZCB0byBkbyBhbnl0aGluZywg aXQgd2FzIGEgbWFpbHRvIG9yIHNvbWV0aGluZw0KCTs7IHNpbWlsYXIgdGhhdCB0YWtlcyBw cm9jZXNzaW5nIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiB0aGUgVVJMDQoJOzsgcGFja2FnZS4N CgluaWwNCiAgICAgICh3aGlsZSAobm90IHJldHJpZXZhbC1kb25lKQ0KCSh1cmwtZGVidWcg J3JldHJpZXZhbCAiU3Bpbm5pbmcgaW4gdXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHk6ICVT ICglUykiDQoJCSAgIHJldHJpZXZhbC1kb25lIGFzeW5jaC1idWZmZXIpDQoJOzsgUXVvdGgg bW9ubmllcjoNCgk7OyBJdCB0dXJucyBvdXQgdGhhdCB0aGUgcHJvYmxlbSBzZWVtcyB0byBi ZSB0aGF0IHRoZSAoc2l0LWZvcg0KCTs7IDAuMSkgYmVsb3cgZG9lc24ndCBhY3R1YWxseSBw cm9jZXNzIHRoZSBkYXRhOiBpbnN0ZWFkIGl0DQoJOzsgcmV0dXJucyBpbW1lZGlhdGVseSBi ZWNhdXNlIHRoZXJlIGlzIGtleWJvYXJkIGlucHV0DQoJOzsgd2FpdGluZywgc28gd2UgZW5k IHVwIHNwaW5uaW5nIGVuZGxlc3NseSB3YWl0aW5nIGZvciB0aGUNCgk7OyBwcm9jZXNzIHRv IGZpbmlzaCB3aGlsZSBub3QgbGV0dGluZyBpdCBmaW5pc2guDQoNCgk7OyBIb3dldmVyLCBy YW1hbiBjbGFpbXMgdGhhdCBpdCBibG9ja3MgRW1hY3Mgd2l0aCBFbWFjc3BlYWsNCgk7OyBm b3IgdW5leHBsYWluZWQgcmVhc29ucy4gIFB1dCBiYWNrIGZvciBoaXMgYmVuZWZpdCB1bnRp bA0KCTs7IHNvbWVvbmUgY2FuIHVuZGVyc3RhbmQgaXQuDQoJOzsgKHNsZWVwLWZvciAwLjEp DQoJKHNpdC1mb3IgMC4xKSkNCiAgICAgIGFzeW5jaC1idWZmZXIpKSkNCg0KKGRlZnVuIHVy bC1tbS1jYWxsYmFjayAoJnJlc3QgaWdub3JlZCkNCiAgKGxldCAoKGhhbmRsZSAobW0tZGlz c2VjdC1idWZmZXIgdCkpKQ0KICAgIChzYXZlLWV4Y3Vyc2lvbg0KICAgICAgKHVybC1tYXJr LWJ1ZmZlci1hcy1kZWFkIChjdXJyZW50LWJ1ZmZlcikpDQogICAgICAoc2V0LWJ1ZmZlciAo Z2VuZXJhdGUtbmV3LWJ1ZmZlciAodXJsLXJlY3JlYXRlLXVybCB1cmwtY3VycmVudC1vYmpl Y3QpKSkNCiAgICAgIChpZiAoZXEgKG1tLWRpc3BsYXktcGFydCBoYW5kbGUpICdleHRlcm5h bCkNCgkgIChwcm9nbg0KCSAgICAoc2V0LXByb2Nlc3Mtc2VudGluZWwNCgkgICAgIDs7IEZp eG1lOiB0aGlzIHNob3VsZG4ndCBoYXZlIHRvIGtub3cgdGhlIGZvcm0gb2YgdGhlDQoJICAg ICA7OyB1bmRpc3BsYXllciBwcm9kdWNlZCBieSBgbW0tZGlzcGxheS1wYXJ0Jy4NCgkgICAg IChnZXQtYnVmZmVyLXByb2Nlc3MgKGNkciAobW0taGFuZGxlLXVuZGlzcGxheWVyIGhhbmRs ZSkpKQ0KCSAgICAgYChsYW1iZGEgKHByb2MgZXZlbnQpDQoJCShtbS1kZXN0cm95LXBhcnRz IChxdW90ZSAsaGFuZGxlKSkpKQ0KCSAgICAobWVzc2FnZSAiVmlld2luZyBleHRlcm5hbGx5 IikNCgkgICAgKGtpbGwtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKQ0KCShkaXNwbGF5LWJ1 ZmZlciAoY3VycmVudC1idWZmZXIpKQ0KCShtbS1kZXN0cm95LXBhcnRzIGhhbmRsZSkpKSkp DQoNCihkZWZ1biB1cmwtbW0tdXJsICh1cmwpDQogICJSZXRyaWV2ZSBVUkwgYW5kIHBhc3Mg dG8gdGhlIGFwcHJvcHJpYXRlIHZpZXdpbmcgYXBwbGljYXRpb24uIg0KICAocmVxdWlyZSAn bW0tZGVjb2RlKQ0KICAocmVxdWlyZSAnbW0tdmlldykNCiAgKHVybC1yZXRyaWV2ZSB1cmwg J3VybC1tbS1jYWxsYmFjayBuaWwpKQ0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7DQo7 OzsgTWlzY2VsbGFuZW91cw0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KKGRlZnZhciB1 cmwtZGVhZC1idWZmZXItbGlzdCBuaWwpDQoNCihkZWZ1biB1cmwtbWFyay1idWZmZXItYXMt ZGVhZCAoYnVmZikNCiAgKHB1c2ggYnVmZiB1cmwtZGVhZC1idWZmZXItbGlzdCkpDQoNCihk ZWZ1biB1cmwtZ2MtZGVhZC1idWZmZXJzICgpDQogIChsZXQgKChidWZmKSkNCiAgICAod2hp bGUgKHNldHEgYnVmZiAocG9wIHVybC1kZWFkLWJ1ZmZlci1saXN0KSkNCiAgICAgIChpZiAo YnVmZmVyLWxpdmUtcCBidWZmKQ0KCSAgKGtpbGwtYnVmZmVyIGJ1ZmYpKSkpKQ0KDQooY29u ZA0KICgoZmJvdW5kcCAnZGlzcGxheS13YXJuaW5nKQ0KICAoZGVmYWxpYXMgJ3VybC13YXJu ICdkaXNwbGF5LXdhcm5pbmcpKQ0KICgoZmJvdW5kcCAnd2FybikNCiAgKGRlZnVuIHVybC13 YXJuIChjbGFzcyBtZXNzYWdlICZvcHRpb25hbCBsZXZlbCkNCiAgICAod2FybiAiKCVzLyVz KSAlcyIgY2xhc3MgKG9yIGxldmVsICd3YXJuaW5nKSBtZXNzYWdlKSkpDQogKHQNCiAgKGRl ZnVuIHVybC13YXJuIChjbGFzcyBtZXNzYWdlICZvcHRpb25hbCBsZXZlbCkNCiAgICAoc2F2 ZS1leGN1cnNpb24NCiAgICAgIChzZXQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKlVS TC1XQVJOSU5HUyoiKSkNCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpDQogICAgICAo c2F2ZS1leGN1cnNpb24NCgkoaW5zZXJ0IChmb3JtYXQgIiglcy8lcykgJXNcbiIgY2xhc3Mg KG9yIGxldmVsICd3YXJuaW5nKSBtZXNzYWdlKSkpDQogICAgICAoZGlzcGxheS1idWZmZXIg KGN1cnJlbnQtYnVmZmVyKSkpKSkpDQoNCihwcm92aWRlICd1cmwpDQoNCjs7OyB1cmwuZWwg ZW5kcyBoZXJlDQo= --------------020806030804010901000103--