From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Amirouche Boubekki Newsgroups: gmane.lisp.guile.bugs Subject: bug#33229: n-for-each-par-map crash guile 2.2.4 Date: Thu, 01 Nov 2018 19:21:33 +0100 Message-ID: <7792057ccb0e44c9e0e150d84dd86824@hypermove.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_0775f9c1b32a3b2b43980b5fcaf9ffc4" X-Trace: blaine.gmane.org 1541096470 22509 195.159.176.226 (1 Nov 2018 18:21:10 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 1 Nov 2018 18:21:10 +0000 (UTC) User-Agent: Roundcube Webmail/1.1.2 To: 33229@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Thu Nov 01 19:21:06 2018 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIHab-0005ki-Bh for guile-bugs@m.gmane.org; Thu, 01 Nov 2018 19:21:05 +0100 Original-Received: from localhost ([::1]:43455 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIHch-0007UK-So for guile-bugs@m.gmane.org; Thu, 01 Nov 2018 14:23:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54608) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIHcX-0007Mc-Sd for bug-guile@gnu.org; Thu, 01 Nov 2018 14:23:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIHcU-00059K-Kr for bug-guile@gnu.org; Thu, 01 Nov 2018 14:23:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:54503) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gIHcU-00059E-F7 for bug-guile@gnu.org; Thu, 01 Nov 2018 14:23:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gIHcU-0008JI-8s for bug-guile@gnu.org; Thu, 01 Nov 2018 14:23:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Amirouche Boubekki Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Thu, 01 Nov 2018 18:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 33229 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.154109652331860 (code B ref -1); Thu, 01 Nov 2018 18:23:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 1 Nov 2018 18:22:03 +0000 Original-Received: from localhost ([127.0.0.1]:58761 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIHbX-0008Hn-BY for submit@debbugs.gnu.org; Thu, 01 Nov 2018 14:22:03 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:44784) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIHbV-0008HK-Sx for submit@debbugs.gnu.org; Thu, 01 Nov 2018 14:22:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIHbP-0003hx-8A for submit@debbugs.gnu.org; Thu, 01 Nov 2018 14:21:56 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:40376) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIHbP-0003hZ-0K for submit@debbugs.gnu.org; Thu, 01 Nov 2018 14:21:55 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIHbN-0006Cq-9j for bug-guile@gnu.org; Thu, 01 Nov 2018 14:21:54 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIHbK-0003fI-06 for bug-guile@gnu.org; Thu, 01 Nov 2018 14:21:53 -0400 Original-Received: from relay5-d.mail.gandi.net ([217.70.183.197]:54637) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIHbH-0003Xf-Q6 for bug-guile@gnu.org; Thu, 01 Nov 2018 14:21:48 -0400 Original-Received: from webmail.gandi.net (webmail1.sd4.0x35.net [10.200.201.1]) (Authenticated sender: amirouche@hypermove.net) by relay5-d.mail.gandi.net (Postfix) with ESMTPA id EA5831C0002 for ; Thu, 1 Nov 2018 18:21:33 +0000 (UTC) X-Sender: amirouche@hypermove.net X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:9255 Archived-At: --=_0775f9c1b32a3b2b43980b5fcaf9ffc4 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On my machine with 4 procs the following program crash after a while: (define-module (hn)) (use-modules (srfi srfi-1)) (use-modules (ice-9 receive)) (use-modules (ice-9 threads)) (use-modules (ice-9 iconv)) (use-modules (web client)) (use-modules (json)) (define (max-id) (receive (response body) (http-get "https://hacker-news.firebaseio.com/v0/maxitem.json") (string->number (bytevector->string body "utf-8")))) (define (download uid) (catch #t (lambda () (let* ((uid (1+ uid)) (url "https://hacker-news.firebaseio.com/v0/item/~a.json") (url (format #f url uid))) (cons uid (json-string->scm (call-with-values (lambda () (http-get url)) (lambda (response body) (bytevector->string body "utf-8"))))))) (lambda _ '()))) (define (store pair) (if (null? pair) (format #t "X\n") (let ((port (open-file "hn.scm" "a"))) (format #t "~a\n" (car pair)) (write (cdr pair) port) (close port)))) (define (dump) (n-for-each-par-map 32 store download (reverse (iota (max-id))))) (dump) I attached to the program with its dependency json.scm. Mark asked for this report at https://lists.gnu.org/archive/html/guile-devel/2018-07/msg00017.html I will try guile 3.0 and report back. --=_0775f9c1b32a3b2b43980b5fcaf9ffc4 Content-Transfer-Encoding: base64 Content-Type: application/x-elc; name=main.scm Content-Disposition: attachment; filename=main.scm; size=1094 CihkZWZpbmUtbW9kdWxlIChobikpCgoodXNlLW1vZHVsZXMgKHNyZmkgc3JmaS0xKSkKKHVzZS1t b2R1bGVzIChpY2UtOSByZWNlaXZlKSkKKHVzZS1tb2R1bGVzIChpY2UtOSB0aHJlYWRzKSkKKHVz ZS1tb2R1bGVzIChpY2UtOSBpY29udikpCih1c2UtbW9kdWxlcyAod2ViIGNsaWVudCkpCih1c2Ut bW9kdWxlcyAoanNvbikpCgoKKGRlZmluZSAobWF4LWlkKQogIChyZWNlaXZlIChyZXNwb25zZSBi b2R5KSAoaHR0cC1nZXQgImh0dHBzOi8vaGFja2VyLW5ld3MuZmlyZWJhc2Vpby5jb20vdjAvbWF4 aXRlbS5qc29uIikKICAgICAgICAgICAoc3RyaW5nLT5udW1iZXIgKGJ5dGV2ZWN0b3ItPnN0cmlu ZyBib2R5ICJ1dGYtOCIpKSkpCgooZGVmaW5lIChkb3dubG9hZCB1aWQpCiAgKGNhdGNoICN0CiAg ICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAobGV0KiAoKHVpZCAoMSsgdWlkKSkKICAgICAg ICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9oYWNrZXItbmV3cy5maXJlYmFzZWlvLmNvbS92MC9p dGVtL35hLmpzb24iKQogICAgICAgICAgICAgKHVybCAoZm9ybWF0ICNmIHVybCB1aWQpKSkKICAg ICAgICAoY29ucyB1aWQKICAgICAgICAgICAgICAoanNvbi1zdHJpbmctPnNjbQogICAgICAgICAg ICAgICAoY2FsbC13aXRoLXZhbHVlcyAobGFtYmRhICgpIChodHRwLWdldCB1cmwpKQogICAgICAg ICAgICAgICAgIChsYW1iZGEgKHJlc3BvbnNlIGJvZHkpCiAgICAgICAgICAgICAgICAgICAoYnl0 ZXZlY3Rvci0+c3RyaW5nIGJvZHkgInV0Zi04IikpKSkpKSkKICAgIChsYW1iZGEgXyAnKCkpKSkK CihkZWZpbmUgKHN0b3JlIHBhaXIpCiAgKGlmIChudWxsPyBwYWlyKQogICAgICAoZm9ybWF0ICN0 ICJYXG4iKQogICAgICAobGV0ICgocG9ydCAob3Blbi1maWxlICJobi5zY20iICJhIikpKQogICAg ICAgIChmb3JtYXQgI3QgIn5hXG4iIChjYXIgcGFpcikpCiAgICAgICAgKHdyaXRlIChjZHIgcGFp cikgcG9ydCkKICAgICAgICAoY2xvc2UgcG9ydCkpKSkKCihkZWZpbmUgKGR1bXApCiAgKG4tZm9y LWVhY2gtcGFyLW1hcCAzMiBzdG9yZSBkb3dubG9hZCAocmV2ZXJzZSAoaW90YSAobWF4LWlkKSkp KSkKCihkdW1wKQo= --=_0775f9c1b32a3b2b43980b5fcaf9ffc4 Content-Transfer-Encoding: base64 Content-Type: text/plain; name=json.scm Content-Disposition: attachment; filename=json.scm; size=10962 Ozs7OyBqc29uLnNjbSAtLS0gSlNPTiByZWFkZXIvd3JpdGVyCjs7OzsgQ29weXJpZ2h0IChDKSAy MDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgo7Ozs7Cjs7OzsgVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo7Ozs7IG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK Ozs7OyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIKOzs7OyB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCjs7OzsKOzs7OyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzs7OyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7Ozs7IE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCjs7OzsgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KOzs7Owo7Ozs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKOzs7OyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5 OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCjs7OzsgRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQo7Ozs7CgooZGVmaW5lLW1vZHVsZSAoanNvbikKICAjOnVzZS1tb2R1bGUgKGljZS05IG1h dGNoKQogICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgIzpleHBvcnQgKHJlYWQtanNvbiB3 cml0ZS1qc29uKSkKCjs7Owo7OzsgUmVhZGVyCjs7OwoKKGRlZmluZSAoanNvbi1lcnJvciBwb3J0 KQogICh0aHJvdyAnanNvbi1lcnJvciBwb3J0KSkKCihkZWZpbmUgKGFzc2VydC1jaGFyIHBvcnQg Y2hhcikKICAiUmVhZCBhIGNoYXJhY3RlciBmcm9tIFBPUlQgYW5kIHRocm93IGFuIGludmFsaWQg SlNPTiBlcnJvciBpZiB0aGUKY2hhcmFjdGVyIGlzIG5vdCBDSEFSLiIKICAodW5sZXNzIChlcXY/ IChyZWFkLWNoYXIgcG9ydCkgY2hhcikKICAgIChqc29uLWVycm9yIHBvcnQpKSkKCihkZWZpbmUg KHdoaXRlc3BhY2U/IGNoYXIpCiAgIlJldHVybiAjdCBpZiBDSEFSIGlzIGEgd2hpdGVzcGFjZSBj aGFyYWN0ZXIuIgogIChjaGFyLXNldC1jb250YWlucz8gY2hhci1zZXQ6d2hpdGVzcGFjZSBjaGFy KSkKCihkZWZpbmUgKGNvbnN1bWUtd2hpdGVzcGFjZSBwb3J0KQogICJEaXNjYXJkIGNoYXJhY3Rl cnMgZnJvbSBQT1JUIHVudGlsIGEgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzCmVuY291bnRl cmVkLi4iCiAgKG1hdGNoIChwZWVrLWNoYXIgcG9ydCkKICAgICgoPyBlb2Ytb2JqZWN0PykgKnVu c3BlY2lmaWVkKikKICAgICgoPyB3aGl0ZXNwYWNlPykKICAgICAocmVhZC1jaGFyIHBvcnQpCiAg ICAgKGNvbnN1bWUtd2hpdGVzcGFjZSBwb3J0KSkKICAgIChfICp1bnNwZWNpZmllZCopKSkKCihk ZWZpbmUgKG1ha2Uta2V5d29yZC1yZWFkZXIga2V5d29yZCB2YWx1ZSkKICAiUGFyc2UgdGhlIGtl eXdvcmQgc3ltYm9sIEtFWVdPUkQgYXMgVkFMVUUuIgogIChsZXQgKChzdHIgKHN5bWJvbC0+c3Ry aW5nIGtleXdvcmQpKSkKICAgIChsYW1iZGEgKHBvcnQpCiAgICAgIChsZXQgbG9vcCAoKGkgMCkp CiAgICAgICAgKGNvbmQKICAgICAgICAgKCg9IGkgKHN0cmluZy1sZW5ndGggc3RyKSkgdmFsdWUp CiAgICAgICAgICgoZXF2PyAoc3RyaW5nLXJlZiBzdHIgaSkgKHJlYWQtY2hhciBwb3J0KSkKICAg ICAgICAgIChsb29wICgxKyBpKSkpCiAgICAgICAgIChlbHNlIChqc29uLWVycm9yIHBvcnQpKSkp KSkpCgooZGVmaW5lIHJlYWQtdHJ1ZSAobWFrZS1rZXl3b3JkLXJlYWRlciAndHJ1ZSAjdCkpCihk ZWZpbmUgcmVhZC1mYWxzZSAobWFrZS1rZXl3b3JkLXJlYWRlciAnZmFsc2UgI2YpKQooZGVmaW5l IHJlYWQtbnVsbCAobWFrZS1rZXl3b3JkLXJlYWRlciAnbnVsbCAjbmlsKSkKCihkZWZpbmUgKHJl YWQtaGV4LWRpZ2l0IHBvcnQpCiAgIlJlYWQgYSBoZXhhZGVjaW1hbCBkaWdpdCBmcm9tIFBPUlQu IgogIChtYXRjaCAocmVhZC1jaGFyIHBvcnQpCiAgICAoI1wwIDApCiAgICAoI1wxIDEpCiAgICAo I1wyIDIpCiAgICAoI1wzIDMpCiAgICAoI1w0IDQpCiAgICAoI1w1IDUpCiAgICAoI1w2IDYpCiAg ICAoI1w3IDcpCiAgICAoI1w4IDgpCiAgICAoI1w5IDkpCiAgICAoKG9yICNcQSAjXGEpIDEwKQog ICAgKChvciAjXEIgI1xiKSAxMSkKICAgICgob3IgI1xDICNcYykgMTIpCiAgICAoKG9yICNcRCAj XGQpIDEzKQogICAgKChvciAjXEUgI1xlKSAxNCkKICAgICgob3IgI1xGICNcZikgMTUpCiAgICAo XyAoanNvbi1lcnJvciBwb3J0KSkpKQoKKGRlZmluZSAocmVhZC11dGYxNi1jaGFyYWN0ZXIgcG9y dCkKICAiUmVhZCBhIGhleGFkZWNpbWFsIGVuY29kZWQgVVRGLTE2IGNoYXJhY3RlciBmcm9tIFBP UlQuIgogIChpbnRlZ2VyLT5jaGFyCiAgICgrICgqIChyZWFkLWhleC1kaWdpdCBwb3J0KSAoZXhw dCAxNiAzKSkKICAgICAgKCogKHJlYWQtaGV4LWRpZ2l0IHBvcnQpIChleHB0IDE2IDIpKQogICAg ICAoKiAocmVhZC1oZXgtZGlnaXQgcG9ydCkgMTYpCiAgICAgIChyZWFkLWhleC1kaWdpdCBwb3J0 KSkpKQoKKGRlZmluZSAocmVhZC1lc2NhcGUtY2hhcmFjdGVyIHBvcnQpCiAgIlJlYWQgZXNjYXBl IGNoYXJhY3RlciBmcm9tIFBPUlQuIgogIChtYXRjaCAocmVhZC1jaGFyIHBvcnQpCiAgICAoI1wi ICNcIikKICAgICgjXFwgI1xcKQogICAgKCNcLyAjXC8pCiAgICAoI1xiICNcYmFja3NwYWNlKQog ICAgKCNcZiAjXHBhZ2UpCiAgICAoI1xuICNcbmV3bGluZSkKICAgICgjXHIgI1xyZXR1cm4pCiAg ICAoI1x0ICNcdGFiKQogICAgKCNcdSAocmVhZC11dGYxNi1jaGFyYWN0ZXIgcG9ydCkpCiAgICAo XyAoanNvbi1lcnJvciBwb3J0KSkpKQoKKGRlZmluZSAocmVhZC1zdHJpbmcgcG9ydCkKICAiUmVh ZCBhIEpTT04gZW5jb2RlZCBzdHJpbmcgZnJvbSBQT1JULiIKICAoYXNzZXJ0LWNoYXIgcG9ydCAj XCIpCiAgKGxldCBsb29wICgocmVzdWx0ICcoKSkpCiAgICAobWF0Y2ggKHJlYWQtY2hhciBwb3J0 KQogICAgICAoKD8gZW9mLW9iamVjdD8pIChqc29uLWVycm9yIHBvcnQpKQogICAgICAoI1wiIChs aXN0LT5zdHJpbmcgKHJldmVyc2UgcmVzdWx0KSkpCiAgICAgICgjXFwgKGxvb3AgKGNvbnMgKHJl YWQtZXNjYXBlLWNoYXJhY3RlciBwb3J0KSByZXN1bHQpKSkKICAgICAgKGNoYXIgKGxvb3AgKGNv bnMgY2hhciByZXN1bHQpKSkpKSkKCihkZWZpbmUgY2hhci1zZXQ6anNvbi1kaWdpdAogIChjaGFy LXNldCAjXDAgI1wxICNcMiAjXDMgI1w0ICNcNSAjXDYgI1w3ICNcOCAjXDkpKQoKKGRlZmluZSAo ZGlnaXQ/IGNoYXIpCiAgKGNoYXItc2V0LWNvbnRhaW5zPyBjaGFyLXNldDpqc29uLWRpZ2l0IGNo YXIpKQoKKGRlZmluZSAocmVhZC1kaWdpdCBwb3J0KQogICJSZWFkIGEgZGlnaXQgMC05IGZyb20g UE9SVC4iCiAgKG1hdGNoIChyZWFkLWNoYXIgcG9ydCkKICAgICgjXDAgMCkKICAgICgjXDEgMSkK ICAgICgjXDIgMikKICAgICgjXDMgMykKICAgICgjXDQgNCkKICAgICgjXDUgNSkKICAgICgjXDYg NikKICAgICgjXDcgNykKICAgICgjXDggOCkKICAgICgjXDkgOSkKICAgIChlbHNlIChqc29uLWVy cm9yIHBvcnQpKSkpCgooZGVmaW5lIChyZWFkLWRpZ2l0cyBwb3J0KQogICJSZWFkIGEgc2VxdWVu Y2Ugb2YgZGlnaXRzIGZyb20gUE9SVC4iCiAgKGxldCBsb29wICgocmVzdWx0ICcoKSkpCiAgICAo bWF0Y2ggKHBlZWstY2hhciBwb3J0KQogICAgICAoKD8gZW9mLW9iamVjdD8pCiAgICAgICAocmV2 ZXJzZSByZXN1bHQpKQogICAgICAoKD8gZGlnaXQ/KQogICAgICAgKGxvb3AgKGNvbnMgKHJlYWQt ZGlnaXQgcG9ydCkgcmVzdWx0KSkpCiAgICAgIChlbHNlIChyZXZlcnNlIHJlc3VsdCkpKSkpCgoo ZGVmaW5lIChyZWFkLXplcm9lcyBwb3J0KQogICJSZWFkIGEgc2VxdWVuY2Ugb2YgemVyb2VzIGZy b20gUE9SVC4iCiAgKGxldCBsb29wICgocmVzdWx0ICcoKSkpCiAgICAobWF0Y2ggKHBlZWstY2hh ciBwb3J0KQogICAgICAoKD8gZW9mLW9iamVjdD8pCiAgICAgICByZXN1bHQpCiAgICAgICgjXDAK ICAgICAgIChyZWFkLWNoYXIgcG9ydCkKICAgICAgIChsb29wIChjb25zIDAgcmVzdWx0KSkpCiAg ICAgIChlbHNlIHJlc3VsdCkpKSkKCihkZWZpbmUgKGxpc3QtPmludGVnZXIgZGlnaXRzKQogICJD b252ZXJ0IHRoZSBsaXN0IERJR0lUUyB0byBhbiBpbnRlZ2VyLiIKICAobGV0IGxvb3AgKChpICgx LSAobGVuZ3RoIGRpZ2l0cykpKQogICAgICAgICAgICAgKHJlc3VsdCAwKQogICAgICAgICAgICAg KGRpZ2l0cyBkaWdpdHMpKQogICAgKG1hdGNoIGRpZ2l0cwogICAgICAoKCkgcmVzdWx0KQogICAg ICAoKG4gLiB0YWlsKQogICAgICAgKGxvb3AgKDEtIGkpCiAgICAgICAgICAgICAoKyByZXN1bHQg KCogbiAoZXhwdCAxMCBpKSkpCiAgICAgICAgICAgICB0YWlsKSkpKSkKCihkZWZpbmUgKHJlYWQt cG9zaXRpdmUtaW50ZWdlciBwb3J0KQogICJSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciB3aXRoIG5v IGxlYWRpbmcgemVyb2VzIGZyb20gUE9SVC4iCiAgKG1hdGNoIChyZWFkLWRpZ2l0cyBwb3J0KQog ICAgKCgwIC4gXykKICAgICAoanNvbi1lcnJvciBwb3J0KSkgOyBubyBsZWFkaW5nIHplcm9lcyBh bGxvd2VkCiAgICAoKGRpZ2l0cyAuLi4pCiAgICAgKGxpc3QtPmludGVnZXIgZGlnaXRzKSkpKQoK KGRlZmluZSAocmVhZC1leHBvbmVudCBwb3J0KQogICJSZWFkIGV4cG9uZW50IGZyb20gUE9SVC4i CiAgKGRlZmluZSAocmVhZC1leHB0KQogICAgKGxpc3QtPmludGVnZXIgKHJlYWQtZGlnaXRzIHBv cnQpKSkKCiAgKHVubGVzcyAobWVtdiAocmVhZC1jaGFyIHBvcnQpICcoI1xlICNcRSkpCiAgICAo anNvbi1lcnJvciBwb3J0KSkKCiAgKG1hdGNoIChwZWVrLWNoYXIgcG9ydCkKICAgICgoPyBlb2Yt b2JqZWN0PykKICAgICAoanNvbi1lcnJvciBwb3J0KSkKICAgICgjXC0KICAgICAocmVhZC1jaGFy IHBvcnQpCiAgICAgKC0gKHJlYWQtZXhwdCkpKQogICAgKCNcKwogICAgIChyZWFkLWNoYXIgcG9y dCkKICAgICAocmVhZC1leHB0KSkKICAgICgoPyBkaWdpdD8pCiAgICAgKHJlYWQtZXhwdCkpCiAg ICAoXyAoanNvbi1lcnJvciBwb3J0KSkpKQoKKGRlZmluZSAocmVhZC1mcmFjdGlvbiBwb3J0KQog ICJSZWFkIGZyYWN0aW9uYWwgbnVtYmVyIHBhcnQgZnJvbSBQT1JUIGFzIGFuIGluZXhhY3QgbnVt YmVyLiIKICAobGV0KiAoKGRpZ2l0cyAgICAgIChyZWFkLWRpZ2l0cyBwb3J0KSkKICAgICAgICAg KG51bWVyYXRvciAgIChsaXN0LT5pbnRlZ2VyIGRpZ2l0cykpCiAgICAgICAgIChkZW5vbWVuYXRv ciAoZXhwdCAxMCAobGVuZ3RoIGRpZ2l0cykpKSkKICAgICgvIG51bWVyYXRvciBkZW5vbWVuYXRv cikpKQoKKGRlZmluZSAocmVhZC1wb3NpdGl2ZS1udW1iZXIgcG9ydCkKICAiUmVhZCBhIHBvc2l0 aXZlIG51bWJlciBmcm9tIFBPUlQuIgogIChsZXQqICgoaW50ZWdlciAobWF0Y2ggKHBlZWstY2hh ciBwb3J0KQogICAgICAgICAgICAgICAgICAgICgoPyBlb2Ytb2JqZWN0PykKICAgICAgICAgICAg ICAgICAgICAgKGpzb24tZXJyb3IgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgKCNcMAogICAg ICAgICAgICAgICAgICAgICAocmVhZC1jaGFyIHBvcnQpCiAgICAgICAgICAgICAgICAgICAgIDAp CiAgICAgICAgICAgICAgICAgICAgKCg/IGRpZ2l0PykKICAgICAgICAgICAgICAgICAgICAgKHJl YWQtcG9zaXRpdmUtaW50ZWdlciBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAoXyAoanNvbi1l cnJvciBwb3J0KSkpKQogICAgICAgICAoZnJhY3Rpb24gKG1hdGNoIChwZWVrLWNoYXIgcG9ydCkK ICAgICAgICAgICAgICAgICAgICAgKCNcLgogICAgICAgICAgICAgICAgICAgICAgKHJlYWQtY2hh ciBwb3J0KQogICAgICAgICAgICAgICAgICAgICAgKHJlYWQtZnJhY3Rpb24gcG9ydCkpCiAgICAg ICAgICAgICAgICAgICAgIChfIDApKSkKICAgICAgICAgKGV4cG9uZW50IChtYXRjaCAocGVlay1j aGFyIHBvcnQpCiAgICAgICAgICAgICAgICAgICAgICgob3IgI1xlICNcRSkKICAgICAgICAgICAg ICAgICAgICAgIChyZWFkLWV4cG9uZW50IHBvcnQpKQogICAgICAgICAgICAgICAgICAgICAoXyAw KSkpCiAgICAgICAgIChuICgqICgrIGludGVnZXIgZnJhY3Rpb24pIChleHB0IDEwIGV4cG9uZW50 KSkpKQoKICAgIDs7IEtlZXAgaW50ZWdlcnMgYXMgZXhhY3QgbnVtYmVycywgYnV0IGNvbnZlcnQg bnVtYmVycyBlbmNvZGVkIGFzCiAgICA7OyBmbG9hdGluZyBwb2ludCBudW1iZXJzIHRvIGFuIGlu ZXhhY3QgcmVwcmVzZW50YXRpb24uCiAgICAoaWYgKHplcm8/IGZyYWN0aW9uKQogICAgICAgIG4K ICAgICAgICAoZXhhY3QtPmluZXhhY3QgbikpKSkKCihkZWZpbmUgKHJlYWQtbnVtYmVyIHBvcnQp CiAgIlJlYWQgYSBudW1iZXIgZnJvbSBQT1JUIgogIChtYXRjaCAocGVlay1jaGFyIHBvcnQpCiAg ICAoKD8gZW9mLW9iamVjdD8pCiAgICAgKGpzb24tZXJyb3IgcG9ydCkpCiAgICAoI1wtCiAgICAg KHJlYWQtY2hhciBwb3J0KQogICAgICgtIChyZWFkLXBvc2l0aXZlLW51bWJlciBwb3J0KSkpCiAg ICAoKD8gZGlnaXQ/KQogICAgIChyZWFkLXBvc2l0aXZlLW51bWJlciBwb3J0KSkKICAgIChfIChq c29uLWVycm9yIHBvcnQpKSkpCgooZGVmaW5lIChyZWFkLW9iamVjdCBwb3J0KQogICJSZWFkIGtl eS92YWx1ZSBtYXAgZnJvbSBQT1JULiIKICAoZGVmaW5lIChyZWFkLWtleSt2YWx1ZS1wYWlyKQog ICAgKGxldCAoKGtleSAocmVhZC1zdHJpbmcgcG9ydCkpKQogICAgICAoY29uc3VtZS13aGl0ZXNw YWNlIHBvcnQpCiAgICAgIChhc3NlcnQtY2hhciBwb3J0ICNcOikKICAgICAgKGNvbnN1bWUtd2hp dGVzcGFjZSBwb3J0KQogICAgICAobGV0ICgodmFsdWUgKHJlYWQtdmFsdWUgcG9ydCkpKQogICAg ICAgIChjb25zIGtleSB2YWx1ZSkpKSkKCiAgKGFzc2VydC1jaGFyIHBvcnQgI1x7KQogIChjb25z dW1lLXdoaXRlc3BhY2UgcG9ydCkKCiAgKGlmIChlcXY/ICNcfSAocGVlay1jaGFyIHBvcnQpKQog ICAgICAoYmVnaW4KICAgICAgICAocmVhZC1jaGFyIHBvcnQpCiAgICAgICAgJyhAKSkgOyBlbXB0 eSBvYmplY3QKICAgICAgKGxldCBsb29wICgocmVzdWx0IChsaXN0IChyZWFkLWtleSt2YWx1ZS1w YWlyKSkpKQogICAgICAgIChjb25zdW1lLXdoaXRlc3BhY2UgcG9ydCkKICAgICAgICAobWF0Y2gg KHBlZWstY2hhciBwb3J0KQogICAgICAgICAgKCNcLCA7IHJlYWQgYW5vdGhlciB2YWx1ZQogICAg ICAgICAgIChyZWFkLWNoYXIgcG9ydCkKICAgICAgICAgICAoY29uc3VtZS13aGl0ZXNwYWNlIHBv cnQpCiAgICAgICAgICAgKGxvb3AgKGNvbnMgKHJlYWQta2V5K3ZhbHVlLXBhaXIpIHJlc3VsdCkp KQogICAgICAgICAgKCNcfSA7IGVuZCBvZiBvYmplY3QKICAgICAgICAgICAocmVhZC1jaGFyIHBv cnQpCiAgICAgICAgICAgKGNvbnMgJ0AgKHJldmVyc2UgcmVzdWx0KSkpCiAgICAgICAgICAoXyAo anNvbi1lcnJvciBwb3J0KSkpKSkpCgooZGVmaW5lIChyZWFkLWFycmF5IHBvcnQpCiAgIlJlYWQg YXJyYXkgZnJvbSBQT1JULiIKICAoYXNzZXJ0LWNoYXIgcG9ydCAjXFspCiAgKGNvbnN1bWUtd2hp dGVzcGFjZSBwb3J0KQoKICAoaWYgKGVxdj8gI1xdIChwZWVrLWNoYXIgcG9ydCkpCiAgICAgIChi ZWdpbgogICAgICAgIChyZWFkLWNoYXIgcG9ydCkKICAgICAgICAnKCkpIDsgZW1wdHkgYXJyYXkK ICAgICAgKGxldCBsb29wICgocmVzdWx0IChsaXN0IChyZWFkLXZhbHVlIHBvcnQpKSkpCiAgICAg ICAgKGNvbnN1bWUtd2hpdGVzcGFjZSBwb3J0KQogICAgICAgIChtYXRjaCAocGVlay1jaGFyIHBv cnQpCiAgICAgICAgICAoI1wsIDsgcmVhZCBhbm90aGVyIHZhbHVlCiAgICAgICAgICAgKHJlYWQt Y2hhciBwb3J0KQogICAgICAgICAgIChjb25zdW1lLXdoaXRlc3BhY2UgcG9ydCkKICAgICAgICAg ICAobG9vcCAoY29ucyAocmVhZC12YWx1ZSBwb3J0KSByZXN1bHQpKSkKICAgICAgICAgICgjXF0g OyBlbmQgb2YgYXJyYXkKICAgICAgICAgICAocmVhZC1jaGFyIHBvcnQpCiAgICAgICAgICAgKHJl dmVyc2UgcmVzdWx0KSkKICAgICAgICAgIChfIChqc29uLWVycm9yIHBvcnQpKSkpKSkKCihkZWZp bmUgKHJlYWQtdmFsdWUgcG9ydCkKICAiUmVhZCBhIEpTT04gdmFsdWUgZnJvbSBQT1JULiIKICAo Y29uc3VtZS13aGl0ZXNwYWNlIHBvcnQpCiAgKG1hdGNoIChwZWVrLWNoYXIgcG9ydCkKICAgICgo PyBlb2Ytb2JqZWN0PykgKGpzb24tZXJyb3IgcG9ydCkpCiAgICAoI1wiIChyZWFkLXN0cmluZyBw b3J0KSkKICAgICgjXHsgKHJlYWQtb2JqZWN0IHBvcnQpKQogICAgKCNcWyAocmVhZC1hcnJheSBw b3J0KSkKICAgICgjXHQgKHJlYWQtdHJ1ZSBwb3J0KSkKICAgICgjXGYgKHJlYWQtZmFsc2UgcG9y dCkpCiAgICAoI1xuIChyZWFkLW51bGwgcG9ydCkpCiAgICAoKG9yICNcLSAoPyBkaWdpdD8pKQog ICAgIChyZWFkLW51bWJlciBwb3J0KSkKICAgIChfIChqc29uLWVycm9yIHBvcnQpKSkpCgooZGVm aW5lIChyZWFkLWpzb24gcG9ydCkKICAiUmVhZCBKU09OIHRleHQgZnJvbSBwb3J0IGFuZCByZXR1 cm4gYW4gcy1leHByZXNzaW9uIHJlcHJlc2VudGF0aW9uLiIKICAobGV0ICgocmVzdWx0IChyZWFk LXZhbHVlIHBvcnQpKSkKICAgIChjb25zdW1lLXdoaXRlc3BhY2UgcG9ydCkKICAgICh1bmxlc3Mg KGVvZi1vYmplY3Q/IChwZWVrLWNoYXIgcG9ydCkpCiAgICAgIChqc29uLWVycm9yIHBvcnQpKQog ICAgcmVzdWx0KSkKCihkZWZpbmUtcHVibGljIChqc29uLXN0cmluZy0+c2NtIHN0cmluZykKICAo Y2FsbC13aXRoLWlucHV0LXN0cmluZyBzdHJpbmcKICAgIChsYW1iZGEgKHBvcnQpCiAgICAgIChy ZWFkLWpzb24gcG9ydCkpKSkKCgwKOzs7Cjs7OyBXcml0ZXIKOzs7CgooZGVmaW5lICh3cml0ZS1z dHJpbmcgc3RyIHBvcnQpCiAgIldyaXRlIFNUUiB0byBQT1JUIGluIEpTT04gc3RyaW5nIGZvcm1h dC4iCiAgKGRlZmluZSAoZXNjYXBlLWNoYXIgY2hhcikKICAgIChkaXNwbGF5IChtYXRjaCBjaGFy CiAgICAgICAgICAgICAgICgjXCIgIlxcXCIiKQogICAgICAgICAgICAgICAoI1xcICJcXFxcIikK ICAgICAgICAgICAgICAgKCNcLyAiXFwvIikKICAgICAgICAgICAgICAgKCNcYmFja3NwYWNlICJc XGIiKQogICAgICAgICAgICAgICAoI1xwYWdlICJcXGYiKQogICAgICAgICAgICAgICAoI1xuZXds aW5lICJcXG4iKQogICAgICAgICAgICAgICAoI1xyZXR1cm4gIlxcciIpCiAgICAgICAgICAgICAg ICgjXHRhYiAiXFx0IikKICAgICAgICAgICAgICAgKF8gY2hhcikpCiAgICAgICAgICAgICBwb3J0 KSkKCiAgKGRpc3BsYXkgIlwiIiBwb3J0KQogIChzdHJpbmctZm9yLWVhY2ggZXNjYXBlLWNoYXIg c3RyKQogIChkaXNwbGF5ICJcIiIgcG9ydCkpCgooZGVmaW5lICh3cml0ZS1vYmplY3QgYWxpc3Qg cG9ydCkKICAiV3JpdGUgQUxJU1QgdG8gUE9SVCBpbiBKU09OIG9iamVjdCBmb3JtYXQuIgogIDs7 IEtleXMgbWF5IGJlIHN0cmluZ3Mgb3Igc3ltYm9scy4KICAoZGVmaW5lIGtleS0+c3RyaW5nCiAg ICAobWF0Y2gtbGFtYmRhCiAgICAgKCg/IHN0cmluZz8ga2V5KSBrZXkpCiAgICAgKCg/IHN5bWJv bD8ga2V5KSAoc3ltYm9sLT5zdHJpbmcga2V5KSkpKQoKICAoZGVmaW5lICh3cml0ZS1wYWlyIHBh aXIpCiAgICAobWF0Y2ggcGFpcgogICAgICAoKGtleSAuIHZhbHVlKQogICAgICAgKHdyaXRlLXN0 cmluZyAoa2V5LT5zdHJpbmcga2V5KSBwb3J0KQogICAgICAgKGRpc3BsYXkgIjoiIHBvcnQpCiAg ICAgICAod3JpdGUtanNvbiB2YWx1ZSBwb3J0KSkpKQoKICAoZGlzcGxheSAieyIgcG9ydCkKICAo bWF0Y2ggYWxpc3QKICAgICgoKSAjZikKICAgICgoZnJvbnQgLi4uIGVuZCkKICAgICAoZm9yLWVh Y2ggKGxhbWJkYSAocGFpcikKICAgICAgICAgICAgICAgICAod3JpdGUtcGFpciBwYWlyKQogICAg ICAgICAgICAgICAgIChkaXNwbGF5ICIsIiBwb3J0KSkKICAgICAgICAgIGZyb250KQogICAgICh3 cml0ZS1wYWlyIGVuZCkpKQogIChkaXNwbGF5ICJ9IiBwb3J0KSkKCihkZWZpbmUgKHdyaXRlLWFy cmF5IGxzdCBwb3J0KQogICJXcml0ZSBMU1QgdG8gUE9SVCBpbiBKU09OIGFycmF5IGZvcm1hdC4i CiAgKGRpc3BsYXkgIlsiIHBvcnQpCiAgKG1hdGNoIGxzdAogICAgKCgpICNmKQogICAgKChmcm9u dCAuLi4gZW5kKQogICAgIChmb3ItZWFjaCAobGFtYmRhICh2YWwpCiAgICAgICAgICAgICAgICAg KHdyaXRlLWpzb24gdmFsIHBvcnQpCiAgICAgICAgICAgICAgICAgKGRpc3BsYXkgIiwiIHBvcnQp KQogICAgICAgICAgICAgICBmcm9udCkKICAgICAod3JpdGUtanNvbiBlbmQgcG9ydCkpKQogIChk aXNwbGF5ICJdIiBwb3J0KSkKCihkZWZpbmUgKHdyaXRlLWpzb24gZXhwIHBvcnQpCiAgIldyaXRl IEVYUCB0byBQT1JUIGluIEpTT04gZm9ybWF0LiIKICAobWF0Y2ggZXhwCiAgICAoI3QgKGRpc3Bs YXkgInRydWUiIHBvcnQpKQogICAgKCNmIChkaXNwbGF5ICJmYWxzZSIgcG9ydCkpCiAgICA7OyBE aWZmZXJlbnRpYXRlICNuaWwgZnJvbSAnKCkuCiAgICAoKGFuZCAoPyBib29sZWFuPyApICNuaWwp IChkaXNwbGF5ICJudWxsIiBwb3J0KSkKICAgICgoPyBzdHJpbmc/IHMpICh3cml0ZS1zdHJpbmcg cyBwb3J0KSkKICAgICgoPyByZWFsPyBuKSAoZGlzcGxheSBuIHBvcnQpKQogICAgKCgnQCAuIGFs aXN0KSAod3JpdGUtb2JqZWN0IGFsaXN0IHBvcnQpKQogICAgKCh2YWxzIC4uLikgKHdyaXRlLWFy cmF5IHZhbHMgcG9ydCkpKSkK --=_0775f9c1b32a3b2b43980b5fcaf9ffc4--