From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ramin Honary Newsgroups: gmane.lisp.guile.bugs Subject: bug#74454: Bug fix: Emacs Lisp parser Date: Thu, 21 Nov 2024 07:34:41 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000006912a90627674d36" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23774"; mail-complaints-to="usenet@ciao.gmane.io" To: 74454@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Thu Nov 21 08:55:23 2024 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tE227-00060C-EQ for guile-bugs@m.gmane-mx.org; Thu, 21 Nov 2024 08:55:23 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tE21p-0001TN-CR; Thu, 21 Nov 2024 02:55:05 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tE21m-0001S4-En for bug-guile@gnu.org; Thu, 21 Nov 2024 02:55:02 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tE21m-0003ZT-50 for bug-guile@gnu.org; Thu, 21 Nov 2024 02:55:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=Date:From:MIME-Version:To:Subject; bh=IPlXGJm7rvtKIniL2AFa85gIOI2150PmXvlfnYrrAf0=; b=gEQN6phpG5uq32tkbElP484OMCcQH1++aSUzZXjvRnE6CpDBZ18GrETw1W7E5deGDsqDlMcQnfdbcHkpZdG/QPmtbeIZ/fkeVpih8k9Fy0MQ44pv1pYhURXflHCBHklSWLM0kZ4DIZ6XkfHJQlgxy4LFrm4YMXikrc7guzqZ2KvCs8SNAmL4ie9ljtdJEPXB6NWxUX6UC+yMB+jrlSSH8N+h2qMnscGDGX4DBQIg55OPTh2DjUJFfVyzSJBNmNngEUyawYW8KHGp2e8Kunx2WohA7OzS+yH4zCvTW81RZxijjuXFw9yKQsoGclnBewtxl2Ruju82AEKeZ17hcBixuQ==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tE21l-00045K-V8 for bug-guile@gnu.org; Thu, 21 Nov 2024 02:55:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ramin Honary Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Thu, 21 Nov 2024 07:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 74454 X-GNU-PR-Package: guile X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.173217568515661 (code B ref -1); Thu, 21 Nov 2024 07:55:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 21 Nov 2024 07:54:45 +0000 Original-Received: from localhost ([127.0.0.1]:48969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tE21U-00044T-Rt for submit@debbugs.gnu.org; Thu, 21 Nov 2024 02:54:45 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:42358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tE1iZ-0003AN-1F for submit@debbugs.gnu.org; Thu, 21 Nov 2024 02:35:12 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tE1iO-00078v-7I for bug-guile@gnu.org; Thu, 21 Nov 2024 02:35:02 -0500 Original-Received: from mail-ua1-x935.google.com ([2607:f8b0:4864:20::935]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tE1iJ-0007Ct-K1 for bug-guile@gnu.org; Thu, 21 Nov 2024 02:34:59 -0500 Original-Received: by mail-ua1-x935.google.com with SMTP id a1e0cc1a2514c-855eeff6448so321720241.0 for ; Wed, 20 Nov 2024 23:34:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732174494; x=1732779294; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=IPlXGJm7rvtKIniL2AFa85gIOI2150PmXvlfnYrrAf0=; b=LXiYHk3vi1cXJiV2EYNK3S+9sLbvPaKYefs9nCAbC8/F42cvDU5maUylMQheE7Ffqd yU6ux7hzaYkiU2bfCFShB8HLsG3+LxLz8kyYdlyHLDyYZWwDZbVrIZwrb+k/USmXVVeE ezD7YIsvQd6bGcGcqmDXkIgAjbZt1EuBG2U3d6xXiQ46JV52msIf7CIcBy/I4FVGbPTY zOdnyJ4Uk0jy1DNbGnv2ulH1OcaHx4gtJEfJYp3vsTnHIE5f1EXgzdRc+iJkD9vPeB1f xroRtc5rOAxKN/tJ6JTnH0CA26fOxYNZKUgquVON++sowWQVVmVokUb/BN+6cvBLjMS3 TGKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732174494; x=1732779294; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=IPlXGJm7rvtKIniL2AFa85gIOI2150PmXvlfnYrrAf0=; b=VjbAiEVfg6YJyLsGdFmpiF7OhBHNdBNhoK4XJOCAhsPOEFObP8gUPecbmnW9pV0pnt rRXqXTyQGuqFJve+VhyHs+0ztZStPBodSsDjWTvFUAby2+hGQXMZhDq3we1/TsdA4Fh6 KCIpDGQuAGRl/KznmsWqdRKrUdqnsTmXX7rj7vxOeQfg6n6jYG2M6zh85DkMwB5TI3/r WnV+IwHNrLWYh4zPvqP+72WvoosCzOJicFbW+2bTZe6HEf7a3K8VdMRzgU1nuI0r9Z2c TmVoISdhF0GcsebvY3PZ8LEZmggVYfPM8J1Yt6ua9dplJpA1vNhlIN+7Ua2C/fv3DNHd ogsA== X-Gm-Message-State: AOJu0YzenVCJO088A3dcIyKaDqtfFHzGK8/FpwuNPllzzbhN6CQaInsf Ldbd2asVEMq50S7KalZfKIj5qx78yZSoYJKevumCIJsQ2hDls4vXX1vb2fdBoY8USnan9D1CFRB r6XhMzoZ3Nd9kw8lf0/KXXqdcJi+YUSzg X-Gm-Gg: ASbGnct+oJRGPTcBrkYmUH8ZcBEs4MlJ5ooIB8RgqFkTIP21v3xeTlyv+t8GvAHcG3c fmNT3L/BcZIse+l4Cc+0PMy6qHeC8DOSZ X-Google-Smtp-Source: AGHT+IFEq0L9o10lI5+7o9fKrfBW7sSgp2WeLFIbLgv/g8ZDebrOlCACfN7wjCmhZ6/Ql+Bbk1L9KPG5yD28mAqpNds= X-Received: by 2002:a05:6102:2c11:b0:4ad:4f13:e860 with SMTP id ada2fe7eead31-4adaf45eebfmr6740910137.8.1732174494094; Wed, 20 Nov 2024 23:34:54 -0800 (PST) Received-SPF: pass client-ip=2607:f8b0:4864:20::935; envelope-from=ramin.honary@gmail.com; helo=mail-ua1-x935.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 21 Nov 2024 02:54:43 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.bugs:11104 Archived-At: --0000000000006912a90627674d36 Content-Type: text/plain; charset="UTF-8" Hello Guile developers: I originally sent this to the guile-devel list but someone kindly explained that I should send it here. I have made a small bug fix for the Emacs Lisp parser in the (language elisp) module. - I fixed a simple bug in the lexer that decodes the carat encoding for control characters (for example "^@" translates to #\null), - and I implemented octal digit decoding in the lexer. I have tested these changes against Emacs Lisp code from the GNU Emacs source code. I can confirm that files like "subr.el" can be fully parsed to list data structures in Scheme now. Here is a simple test program that parses "subr.el" from GNU Emacs: (use-modules ((language elisp parser) #:select (read-elisp))) (define (file-read-all-forms filepath) (call-with-port (open-input-file filepath) (lambda (port) (let loop ((forms-list '())) (let ((form (read-elisp port))) (cond ((eof-object? form) (reverse forms-list)) (else (loop (cons form forms-list))) )))))) (define path-to-test-el "/home/ramin/src/emacs-29.4/li sp/subr.el") (define (main) (for-each (lambda (form) (display form) (newline)) (file-read-all-forms path-to-test-el))) Before applying my patch, the above test program fails with: ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure integer->char: Argument 1 out of range: 67108955 After applying my patch, the whole file parses successfully. Regards, -- Ramin Honary (ActivityPub: @ramin_hal9001@fe.disroot.org) --0000000000006912a90627674d36 Content-Type: text/x-patch; charset="US-ASCII"; name="2024-11-20_ramin-honary_improve-elisp-parser.patch" Content-Disposition: attachment; filename="2024-11-20_ramin-honary_improve-elisp-parser.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3qzxznk0 RnJvbSBiZTM0YzNlZGE4N2U3YjJhMzY5ZGU2NDEyYjBhNDJhMGE1MzgxOWEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYW1pbiBIb25hcnkgPHJhbWluQHRyb3BpYy1pc2xlLmhvbmFy eS5ob21lPgpEYXRlOiBXZWQsIDIwIE5vdiAyMDI0IDEzOjMyOjExICswOTAwClN1YmplY3Q6IFtQ QVRDSF0gY2hhbmdlIHRvIHRoZSBFbWFjcyBMaXNwIHBhcnNlciBpbiB0aGUgKGxhbmd1YWdlIGVs aXNwKSBtb2R1bGUKCiAgLSBJIGZpeGVkIGEgc2ltcGxlIGJ1ZyBpbiB0aGUgbGV4ZXIgdGhhdCBk ZWNvZGVzIHRoZSBjYXJhdCBlbmNvZGluZwogICAgZm9yIGNvbnRyb2wgY2hhcmFjdGVycyAoZm9y IGV4YW1wbGUgIl5AIiB0cmFuc2xhdGVzIHRvICNcbnVsbCksCgogIC0gYW5kIEkgaW1wbGVtZW50 ZWQgb2N0YWwgZGlnaXQgZGVjb2RpbmcgaW4gdGhlIGxleGVyLgoKICBJIGhhdmUgdGVzdGVkIHRo ZXNlIGNoYW5nZXMgYWdhaW5zdCBFbWFjcyBMaXNwIGNvZGUgZnJvbSB0aGUgR05VIEVtYWNzCiAg c291cmNlIGNvZGUuIEkgY2FuIGNvbmZpcm0gdGhhdCBmaWxlcyBsaWtlICJzdWJyLmVsIiBjYW4g YmUKICBmdWxseSBwYXJzZWQgdG8gbGlzdCBkYXRhIHN0cnVjdHVyZXMgaW4gU2NoZW1lIG5vdy4K LS0tCiBtb2R1bGUvbGFuZ3VhZ2UvZWxpc3AvbGV4ZXIuc2NtICB8IDEzMyArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tCiBtb2R1bGUvbGFuZ3VhZ2UvZWxpc3AvcGFyc2VyLnNjbSB8ICAy MSArKystLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2xhbmd1YWdlL2VsaXNwL2xleGVyLnNjbSBiL21vZHVs ZS9sYW5ndWFnZS9lbGlzcC9sZXhlci5zY20KaW5kZXggNWEwZTZiMy4uYmFhMGZlYyAxMDA2NDQK LS0tIGEvbW9kdWxlL2xhbmd1YWdlL2VsaXNwL2xleGVyLnNjbQorKysgYi9tb2R1bGUvbGFuZ3Vh Z2UvZWxpc3AvbGV4ZXIuc2NtCkBAIC0yMCw2ICsyMCw4IEBACiAKIChkZWZpbmUtbW9kdWxlIChs YW5ndWFnZSBlbGlzcCBsZXhlcikKICAgIzp1c2UtbW9kdWxlIChpY2UtOSByZWdleCkKKyAgIzp1 c2UtbW9kdWxlICgoc2NoZW1lIGJhc2UpCisgICAgICAgICAgICAgICAgIzpzZWxlY3QgKGV4YWN0 IGVvZi1vYmplY3QpKQogICAjOmV4cG9ydCAoZ2V0LWxleGVyIGdldC1sZXhlci8xKSkKIAogOzs7 IFRoaXMgaXMgdGhlIGxleGljYWwgYW5hbHl6ZXIgZm9yIHRoZSBlbGlzcCByZWFkZXIuICBJdCBp cwpAQCAtMzcsNiArMzksMTcgQEAKIAogOzs7IFJlcG9ydCBhbiBlcnJvciBmcm9tIHRoZSBsZXhl ciAodGhhdCBpcywgaW52YWxpZCBpbnB1dCBnaXZlbikuCiAKKworOzsgUmUtZGVmaW5pbmcgc29t ZSBzeW1ib2xzIGhlcmUgdG8gbWFrZSB0aGlzIGNvZGUgbW9yZSBSN1JTIGNvbXBsaWFudAorOzsg YW5kIGVhc2llciB0byBwb3J0IHRvIG90aGVyIFNjaGVtZSBpbXBsZW1lbnRhdGlvbnMuIChpY2Ut OSByZWdleCkgYXJlCis7OyB0aGUgb25seSBub24tc3RhbmRhcmQgZmVhdHVyZSB1c2VkIGhlcmUg bm93LgorCisoZGVmaW5lIG1ha2Utc3ltYm9sIHN0cmluZy0+c3ltYm9sKQorICAgOzsgXiBub3Qg c3VyZSBpZiB0aGVzZSBkbyB0aGUgZXhhY3Qgc2FtZSB0aGluZywgc28gcmVuYW1pbmcgdGhlCisg ICA7OyAgICJtYWtlLXN5bWJvbCIgcHJvY2VkdXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUgc28gaXQg Y2FuIGJlIGVhc2lseQorICAgOzsgICByZXN0b3JlZCBsYXRlciBieSBjb21tZW50aW5nIG91dCB0 aGlzIGRlZmluaXRpb24uCisKKwogKGRlZmluZSAobGV4ZXItZXJyb3IgcG9ydCBtc2cgLiBhcmdz KQogICAoYXBwbHkgZXJyb3IgbXNnIGFyZ3MpKQogCkBAIC02OCwxNCArODEsMTQgQEAKIDs7OyBo YW5kbGVkIGFzIHN1Y2gsIGFuZCBpbiBlbGlzcCBDLT8gaXMgdGhlIGRlbGV0ZSBjaGFyYWN0ZXIg Zm9yCiA7OzsgaGlzdG9yaWNhbCByZWFzb25zLiAgT3RoZXJ3aXNlLCB3ZSBzZXQgYml0IDI2Lgog CisoZGVmaW5lIHxpbnQ/fCAoY2hhci0+aW50ZWdlciAjXD8pKQorKGRlZmluZSB8aW50QHwgKGNo YXItPmludGVnZXIgI1xAKSkKKwogKGRlZmluZSAoYWRkLWNvbnRyb2wgY2hyKQotICAobGV0ICgo cmVhbCAocmVhbC1jaGFyYWN0ZXIgY2hyKSkpCi0gICAgKGlmIChjaGFyLWFscGhhYmV0aWM/IHJl YWwpCi0gICAgICAgICgtIChjaGFyLT5pbnRlZ2VyIChjaGFyLXVwY2FzZSByZWFsKSkgKGNoYXIt PmludGVnZXIgI1xAKSkKLSAgICAgICAgKGNhc2UgcmVhbAotICAgICAgICAgICgoI1w/KSAxMjcp Ci0gICAgICAgICAgKCgjXEApIDApCi0gICAgICAgICAgKGVsc2UgKHNldC1jaGFyLWJpdCBjaHIg MjYpKSkpKSkKKyAgKGNvbmQKKyAgICgoPSAgY2hyIHxpbnQ/fCkgMTI3KQorICAgKCg+PSBjaHIg fGludEB8KQorICAgICgtIChjaGFyLT5pbnRlZ2VyIChjaGFyLXVwY2FzZSAoaW50ZWdlci0+Y2hh ciBjaHIpKSkgfGludEB8KSkpKQogCiA7OzsgUGFyc2UgYSBjaGFyY29kZSBnaXZlbiBpbiBzb21l IGJhc2UsIGJhc2ljYWxseSBvY3RhbCBvciBoZXhhZGVjaW1hbAogOzs7IGFyZSBuZWVkZWQuICBB IHJlcXVlc3RlZCBudW1iZXIgb2YgZGlnaXRzIGNhbiBiZSBnaXZlbiAoI2YgbWVhbnMgaXQKQEAg LTExMCw3ICsxMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlk IGRpZ2l0IGluIGVzY2FwZS1jb2RlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh c2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIpKQotICAgICAgICAgICAgICAo aXRlcmF0ZSAoKyAoKiByZXN1bHQgYmFzZSkgdmFsdWUpICgxKyBwcm9jZGlncykpKSkpKSkKKyAg ICAgICAgICAgICAgKGl0ZXJhdGUgKCsgKCogcmVzdWx0IGJhc2UpIHZhbHVlKSAoKyAxIHByb2Nk aWdzKSkpKSkpKQogCiA7OzsgUmVhZCBhIGNoYXJhY3RlciBhbmQgcHJvY2VzcyBlc2NhcGUtc2Vx dWVuY2VzIHdoZW4gbmVjZXNzYXJ5LiAgVGhlCiA7Ozsgc3BlY2lhbCBpbi1zdHJpbmcgYXJndW1l bnQgZGVmaW5lcyBpZiB0aGlzIGNoYXJhY3RlciBpcyBwYXJ0IG9mIGEKQEAgLTE5Nyw2ICsyMTAs NjcgQEAKIAogKGRlZmluZSBuby1lc2NhcGUtcHVuY3R1YXRpb24gKHN0cmluZy0+Y2hhci1zZXQg Ii0rPSovX34hQCQlXiY6PD57fT8uIikpCiAKKyhkZWZpbmUgKHNpZ25kaWdpdD8gYykKKyAgKG9y IChjaGFyPT8gYyAjXCspIChjaGFyPT8gYyAjXC0pKSkKKworKGRlZmluZSAob2N0ZGlnaXQ/IGMp CisgIDs7IGFzc3VtZXMgeW91IGFscmVhZHkgY2hlY2tlZCB0aGF0IGMgaXMgZ3JlYXRlci9lcXVh bCB0byAjXDAuCisgIChjaGFyPD0/IGMgI1w3KSkKKworKGRlZmluZSAoaGV4ZGlnaXQ/IGMpCisg IDs7IGFzc3VtZXMgeW91IGFscmVhZHkgY2hlY2tlZCB0aGF0IGMgaXMgbm90IGFuIG9jdGRpZ2l0 CisgIChvciAoY2hhcjw9PyBjICNcOSkKKyAgICAgIChhbmQgKGNoYXI+PT8gYyAjXEEpIChjaGFy PD0/IGMgI1xGKSkKKyAgICAgIChhbmQgKGNoYXI+PT8gYyAjXGEpIChjaGFyPD0/IGMgI1xmKSkp KQorCisoZGVmaW5lIChnZXQtbnVtYmVyLW90aGVyLWJhc2UgaW5pdC1jaGFyIHBvcnQpCisgIChs ZXQqKChzaWduIChyZWFkLWNoYXIgcG9ydCkpCisgICAgICAgIChpbml0LXN0YWNrIChsaXN0IHNp Z24gaW5pdC1jaGFyICNcIykpCisgICAgICAgIChiYWQtdG9rZW4KKyAgICAgICAgIChsYW1iZGEg KG1zZyBjaGFycykKKyAgICAgICAgICAgKGVycm9yIChpZiBtc2cgbXNnICJpbnZhbGlkIGludGVn ZXIgbGl0ZXJhbCIpCisgICAgICAgICAgICAobGlzdC0+c3RyaW5nIChyZXZlcnNlIGNoYXJzKSkK KyAgICAgICAgICAgICM6bGluZSAocG9ydC1saW5lIHBvcnQpCisgICAgICAgICAgICAjOmNvbHVt biAocG9ydC1jb2x1bW4gcG9ydCkpKSkKKyAgICAgICAgKGZpbmlzaAorICAgICAgICAgKGxhbWJk YSAoc3RhY2sgaGFzLWhleGRpZ2l0KQorICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgKChh bmQgKGNoYXI9PyBpbml0LWNoYXIgI1xvKSBoYXMtaGV4ZGlnaXQpCisgICAgICAgICAgICAgKGJh ZC10b2tlbiAiaW52YWxpZCBvY3RhbCBpbnRlZ2VyIGxpdGVyYWwiIHN0YWNrKSkKKyAgICAgICAg ICAgIChlbHNlCisgICAgICAgICAgICAgKGxldCooKHN0ciAobGlzdC0+c3RyaW5nIChyZXZlcnNl IHN0YWNrKSkpCisgICAgICAgICAgICAgICAgICAgKGludCAoc3RyaW5nLT5udW1iZXIgc3RyKSkp CisgICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgIChpbnQgKGNvbnMgJ2ludGVn ZXIgaW50KSkKKyAgICAgICAgICAgICAgICAoZWxzZSAoZXJyb3IgImludmFsaWQgaW50ZWdlciBs aXRlcmFsIiBzdHIpKSkpKQorICAgICAgICAgICAgKSkpCisgICAgICAgICkKKyAgICAoZGVmaW5l IChpdGVyYXRlIHN0YWNrIGhhcy1oZXhkaWdpdCkKKyAgICAgIChsZXQgKChjIChyZWFkLWNoYXIg cG9ydCkpKQorICAgICAgICAoY29uZAorICAgICAgICAgKChlb2Ytb2JqZWN0PyBjKSAoZmluaXNo IHN0YWNrIGhhcy1oZXhkaWdpdCkpCisgICAgICAgICAoZWxzZQorICAgICAgICAgIChjb25kCisg ICAgICAgICAgICgoY2hhcj49PyBjICNcMCkKKyAgICAgICAgICAgIChjb25kCisgICAgICAgICAg ICAgKChvY3RkaWdpdD8gYykgKGl0ZXJhdGUgKGNvbnMgYyBzdGFjaykgaGFzLWhleGRpZ2l0KSkK KyAgICAgICAgICAgICAoKGhleGRpZ2l0PyBjKSAoaXRlcmF0ZSAoY29ucyBjIHN0YWNrKSAjdCkp CisgICAgICAgICAgICAgKChjaGFyLWFscGhhYmV0aWM/IGMpIChiYWQtdG9rZW4gI2YgKHJldmVy c2Ugc3RhY2spKSkKKyAgICAgICAgICAgICAoZWxzZSAodW5yZWFkLWNoYXIgYyBwb3J0KSAoZmlu aXNoIHN0YWNrIGhhcy1oZXhkaWdpdCkpKSkKKyAgICAgICAgICAgKGVsc2UgKHVucmVhZC1jaGFy IGMgcG9ydCkgKGZpbmlzaCBzdGFjayBoYXMtaGV4ZGlnaXQpKSkpCisgICAgICAgICApKSkKKyAg ICAoY29uZAorICAgICAoKGVvZi1vYmplY3Q/IHNpZ24pIChiYWQtdG9rZW4gI2YgaW5pdC1zdGFj aykpCisgICAgICgoc2lnbmRpZ2l0PyBzaWduKSAoaXRlcmF0ZSBpbml0LXN0YWNrICNmKSkKKyAg ICAgKChjaGFyPj0/IHNpZ24gI1wwKQorICAgICAgKGNvbmQKKyAgICAgICAoKGVvZi1vYmplY3Q/ IHNpZ24pIChiYWQtdG9rZW4gI2YgaW5pdC1zdGFjaykpCisgICAgICAgKChvY3RkaWdpdD8gc2ln bikgKGl0ZXJhdGUgaW5pdC1zdGFjayAjZikpCisgICAgICAgKChoZXhkaWdpdD8gc2lnbikgKGl0 ZXJhdGUgaW5pdC1zdGFjayAjdCkpCisgICAgICAgKGVsc2UgKGJhZC10b2tlbiAjZiBpbml0LXN0 YWNrKSkpKQorICAgICAoZWxzZSAoYmFkLXRva2VuICNmIGluaXQtc3RhY2spKSkKKyAgICAgKSkK KwogKGRlZmluZSAoZ2V0LXN5bWJvbC1vci1udW1iZXIgcG9ydCkKICAgKGxldCBpdGVyYXRlICgo cmVzdWx0LWNoYXJzICcoKSkKICAgICAgICAgICAgICAgICAoaGFkLWVzY2FwZSAjZikpCkBAIC0y NjQsOCArMzM4LDggQEAKICAgKGxldCogKChyZXR1cm4gKGxldCAoKGZpbGUgKGlmIChmaWxlLXBv cnQ/IHBvcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9ydC1maWxlbmFt ZSBwb3J0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2YpKQotICAgICAgICAg ICAgICAgICAgICAgICAobGluZSAoMSsgKHBvcnQtbGluZSBwb3J0KSkpCi0gICAgICAgICAgICAg ICAgICAgICAgIChjb2x1bW4gKDErIChwb3J0LWNvbHVtbiBwb3J0KSkpKQorICAgICAgICAgICAg ICAgICAgICAgICAobGluZSAoKyAxIChwb3J0LWxpbmUgcG9ydCkpKQorICAgICAgICAgICAgICAg ICAgICAgICAoY29sdW1uICgrIDEgKHBvcnQtY29sdW1uIHBvcnQpKSkpCiAgICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAodG9rZW4gdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAobGV0ICgo b2JqIChjb25zIHRva2VuIHZhbHVlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtc291 cmNlLXByb3BlcnR5ISBvYmogJ2ZpbGVuYW1lIGZpbGUpCkBAIC0zMjUsOSArMzk5LDIxIEBACiAg ICAgICAgICAgICAgICAgICAgIChlbHNlCiAgICAgICAgICAgICAgICAgICAgICAodW5yZWFkLWNo YXIgZXNjYXBlZCBwb3J0KQogICAgICAgICAgICAgICAgICAgICAgKHVucmVhZC1jaGFyIGN1ciBw b3J0KQotICAgICAgICAgICAgICAgICAgICAgKGl0ZXJhdGUKLSAgICAgICAgICAgICAgICAgICAg ICAoY29ucyAoaW50ZWdlci0+Y2hhciAoZ2V0LWNoYXJhY3RlciBwb3J0ICN0KSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXN1bHQtY2hhcnMpKSkpKSkKKyAgICAgICAgICAgICAgICAg ICAgIChsZXQgKChjIChnZXQtY2hhcmFjdGVyIHBvcnQgI3QpKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICgoPiBjICN4MTBGRkZGKQorICAg ICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiYmFkIGNoYXJhY3RlciIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIzpjaGFyIGMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIzpjdXIg Y3VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICM6ZXNjYXBlZCBlc2NhcGVkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICM6ZmlsZSAocG9ydC1maWxlbmFtZSBwb3J0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAjOmxpbmUgKHBvcnQtbGluZSBwb3J0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAjOmNvbHVtbiAocG9ydC1jb2x1bW4gcG9ydCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIzphZnRlciAobGlzdC0+c3RyaW5nIChyZXZlcnNlIHJlc3VsdC1jaGFycykpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIChlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg KGl0ZXJhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGludGVnZXItPmNoYXIg YykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LWNoYXJzKSkpKSkpKSkp CiAgICAgICAgICAgICAgICAoZWxzZSAoaXRlcmF0ZSAoY29ucyBjdXIgcmVzdWx0LWNoYXJzKSkp KSkpKQogICAgICAgICAoKCNcIykKICAgICAgICAgIChsZXQgKChjIChyZWFkLWNoYXIgcG9ydCkp KQpAQCAtMzQyLDcgKzQyOCwxOCBAQAogICAgICAgICAgICAgIChjYWxsLXdpdGgtdmFsdWVzCiAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGdldC1zeW1ib2wtb3ItbnVtYmVyIHBvcnQpKQog ICAgICAgICAgICAgICAgKGxhbWJkYSAodHlwZSBzdHIpCi0gICAgICAgICAgICAgICAgIChyZXR1 cm4gJ3N5bWJvbCAobWFrZS1zeW1ib2wgc3RyKSkpKSkpKSkKKyAgICAgICAgICAgICAgICAgKHJl dHVybiAnc3ltYm9sIChtYWtlLXN5bWJvbCBzdHIpKSkpKQorICAgICAgICAgICAgKCgjXG8gI1xP KSA7O29jdGFsIGxpdGVyYWwKKyAgICAgICAgICAgICAobGV0ICgodG9rZW4gKGdldC1udW1iZXIt b3RoZXItYmFzZSAjXG8gcG9ydCkpKQorICAgICAgICAgICAgICAgKHJldHVybiAoY2FyIHRva2Vu KSAoY2RyIHRva2VuKSkpKQorICAgICAgICAgICAgKCgjXHggI1xYKSA7O2hleGFkZWNpbWFsIGxp dGVyYWwKKyAgICAgICAgICAgICAobGV0ICgodG9rZW4gKGdldC1udW1iZXItb3RoZXItYmFzZSAj XHggcG9ydCkpKQorICAgICAgICAgICAgICAgKHJldHVybiAoY2FyIHRva2VuKSAoY2RyIHRva2Vu KSkpKQorICAgICAgICAgICAgKGVsc2UKKyAgICAgICAgICAgICAobGV0ICgobGluZSAocG9ydC1s aW5lIHBvcnQpKQorICAgICAgICAgICAgICAgICAgIChjb2wgKHBvcnQtY29sdW1uIHBvcnQpKSkK KyAgICAgICAgICAgICAgIChlcnJvciAidW5rbm93biB0b2tlbiIgYyAjOmxpbmUgbGluZSAjOmNv bHVtbiBjb2wpKSkKKyAgICAgICAgICAgICkpKQogICAgICAgICA7OyBQYXJlbnRoZXNlcyBhbmQg b3RoZXIgc3BlY2lhbC1tZWFuaW5nIHNpbmdsZSBjaGFyYWN0ZXJzLgogICAgICAgICAoKCNcKCkg KHJldHVybiAncGFyZW4tb3BlbiAjZikpCiAgICAgICAgICgoI1wpKSAocmV0dXJuICdwYXJlbi1j bG9zZSAjZikpCkBAIC0zODYsNyArNDgzLDcgQEAKICAgICAgICAgICAgICAgICA7OyBpbnRlZ2Vy IQogICAgICAgICAgICAgICAgIChyZXR1cm4KICAgICAgICAgICAgICAgICAgJ2ludGVnZXIKLSAg ICAgICAgICAgICAgICAgKGxldCAoKG51bSAoaW5leGFjdC0+ZXhhY3QgKHN0cmluZy0+bnVtYmVy IHN0cikpKSkKKyAgICAgICAgICAgICAgICAgKGxldCAoKG51bSAoZXhhY3QgKHN0cmluZy0+bnVt YmVyIHN0cikpKSkKICAgICAgICAgICAgICAgICAgICAoaWYgKG5vdCAoaW50ZWdlcj8gbnVtKSkK ICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yICJleHBlY3RlZCBpbnRlZ2VyIiBzdHIgbnVt KSkKICAgICAgICAgICAgICAgICAgICBudW0pKSkKQEAgLTQxNSwxNCArNTEyLDE0IEBACiAgICAg ICAgIChwYXJlbi1sZXZlbCAwKSkKICAgICAobGFtYmRhICgpCiAgICAgICAoaWYgZmluaXNoZWQK LSAgICAgICAgICAoY29ucyAnZW9mICgoQCAoaWNlLTkgYmluYXJ5LXBvcnRzKSBlb2Ytb2JqZWN0 KSkpCisgICAgICAgICAgKGNvbnMgJ2VvZiBlb2Ytb2JqZWN0KQogICAgICAgICAgIChsZXQgKChu ZXh0IChsZXgpKQogICAgICAgICAgICAgICAgIChxdW90YXRpb24gI2YpKQogICAgICAgICAgICAg KGNhc2UgKGNhciBuZXh0KQogICAgICAgICAgICAgICAoKHBhcmVuLW9wZW4gc3F1YXJlLW9wZW4p Ci0gICAgICAgICAgICAgICAoc2V0ISBwYXJlbi1sZXZlbCAoMSsgcGFyZW4tbGV2ZWwpKSkKKyAg ICAgICAgICAgICAgIChzZXQhIHBhcmVuLWxldmVsICgrIDEgcGFyZW4tbGV2ZWwpKSkKICAgICAg ICAgICAgICAgKChwYXJlbi1jbG9zZSBzcXVhcmUtY2xvc2UpCi0gICAgICAgICAgICAgICAoc2V0 ISBwYXJlbi1sZXZlbCAoMS0gcGFyZW4tbGV2ZWwpKSkKKyAgICAgICAgICAgICAgIChzZXQhIHBh cmVuLWxldmVsICgtIHBhcmVuLWxldmVsIDEpKSkKICAgICAgICAgICAgICAgKChxdW90ZSBiYWNr cXVvdGUgdW5xdW90ZSB1bnF1b3RlLXNwbGljaW5nIGNpcmN1bGFyLWRlZikKICAgICAgICAgICAg ICAgIChzZXQhIHF1b3RhdGlvbiAjdCkpKQogICAgICAgICAgICAgKGlmIChhbmQgKG5vdCBxdW90 YXRpb24pICg8PSBwYXJlbi1sZXZlbCAwKSkKZGlmZiAtLWdpdCBhL21vZHVsZS9sYW5ndWFnZS9l bGlzcC9wYXJzZXIuc2NtIGIvbW9kdWxlL2xhbmd1YWdlL2VsaXNwL3BhcnNlci5zY20KaW5kZXgg YTdhZWZmMC4uNGU0Zjc3MCAxMDA2NDQKLS0tIGEvbW9kdWxlL2xhbmd1YWdlL2VsaXNwL3BhcnNl ci5zY20KKysrIGIvbW9kdWxlL2xhbmd1YWdlL2VsaXNwL3BhcnNlci5zY20KQEAgLTIwLDggKzIw LDExIEBACiAKIChkZWZpbmUtbW9kdWxlIChsYW5ndWFnZSBlbGlzcCBwYXJzZXIpCiAgICM6dXNl LW1vZHVsZSAobGFuZ3VhZ2UgZWxpc3AgbGV4ZXIpCisgICM6dXNlLW1vZHVsZSAoKHNyZmkgc3Jm aS02OSkKKyAgICAgICAgICAgICAgICAjOnNlbGVjdCAoaGFzaC10YWJsZS1yZWYgaGFzaC10YWJs ZS1zZXQhKSkKICAgIzpleHBvcnQgKHJlYWQtZWxpc3ApKQogCisKIDs7OyBUaGUgcGFyc2VyIChy ZWFkZXIpIGZvciBlbGlzcCBleHByZXNzaW9ucy4KIDs7OwogOzs7IEl0IGlzIGhhbmQtd3JpdHRl biAoanVzdCBhcyB0aGUgbGV4ZXIgaXMpIGluc3RlYWQgb2YgdXNpbmcgc29tZQpAQCAtNDcsNyAr NTAsNyBAQAogOzs7IG9uZSBjYWxsIHRvIHJlYWQtZWxpc3AgKGJ1dCBub3Qgb25seSB0aGUgY3Vy cmVudGx5IHBhcnNlZAogOzs7IGV4cHJlc3Npb24hKS4KIAotKGRlZmluZSBjaXJjdWxhci1kZWZp bml0aW9ucyAobWFrZS1mbHVpZCkpCisoZGVmaW5lIGNpcmN1bGFyLWRlZmluaXRpb25zIChtYWtl LXBhcmFtZXRlciAjZikpCiAKIChkZWZpbmUgKG1ha2UtY2lyY3VsYXItZGVmaW5pdGlvbnMpCiAg IChtYWtlLWhhc2gtdGFibGUpKQpAQCAtNTYsNyArNTksNyBAQAogICAoaWYgKG5vdCAoZXE/IChj YXIgdG9rZW4pICdjaXJjdWxhci1yZWYpKQogICAgICAgKGVycm9yICJpbnZhbGlkIHRva2VuIGZv ciBjaXJjdWxhci1yZWYiIHRva2VuKSkKICAgKGxldCogKChpZCAoY2RyIHRva2VuKSkKLSAgICAg ICAgICh2YWx1ZSAoaGFzaHEtcmVmIChmbHVpZC1yZWYgY2lyY3VsYXItZGVmaW5pdGlvbnMpIGlk KSkpCisgICAgICAgICAodmFsdWUgKGhhc2gtdGFibGUtcmVmIChjaXJjdWxhci1kZWZpbml0aW9u cykgaWQpKSkKICAgICAoaWYgdmFsdWUKICAgICAgICAgdmFsdWUKICAgICAgICAgKHBhcnNlLWVy cm9yIHRva2VuICJ1bmRlZmluZWQgY2lyY3VsYXIgcmVmZXJlbmNlIiBpZCkpKSkKQEAgLTY5LDEy ICs3MiwxMiBAQAogICAoaWYgKG5vdCAoZXE/IChjYXIgdG9rZW4pICdjaXJjdWxhci1kZWYpKQog ICAgICAgKGVycm9yICJpbnZhbGlkIHRva2VuIGZvciBjaXJjdWxhci1kZWZpbmUhIiB0b2tlbikp CiAgIChsZXQgKCh2YWx1ZSAjZikKLSAgICAgICAgKHRhYmxlIChmbHVpZC1yZWYgY2lyY3VsYXIt ZGVmaW5pdGlvbnMpKQorICAgICAgICAodGFibGUgKGNpcmN1bGFyLWRlZmluaXRpb25zKSkKICAg ICAgICAgKGlkIChjZHIgdG9rZW4pKSkKLSAgICAoaGFzaHEtc2V0ISB0YWJsZSBpZCAoZGVsYXkg dmFsdWUpKQorICAgIChoYXNoLXRhYmxlLXNldCEgdGFibGUgaWQgKGRlbGF5IHZhbHVlKSkKICAg ICAobGFtYmRhIChyZWFsLXZhbHVlKQogICAgICAgKHNldCEgdmFsdWUgcmVhbC12YWx1ZSkKLSAg ICAgIChoYXNocS1zZXQhIHRhYmxlIGlkIHJlYWwtdmFsdWUpKSkpCisgICAgICAoaGFzaC10YWJs ZS1zZXQhIHRhYmxlIGlkIHJlYWwtdmFsdWUpKSkpCiAKIDs7OyBXb3JrIHRocm91Z2ggYSBwYXJz ZWQgZGF0YSBzdHJ1Y3R1cmUgYW5kIGZvcmNlIHRoZSBwcm9taXNlcyB0aGVyZS4KIDs7OyBBZnRl ciBhIHByb21pc2UgaXMgZm9yY2VkLCB0aGUgcmVzdWx0aW5nIHZhbHVlIG11c3Qgbm90IGJlIHJl Y3Vyc2VkCkBAIC0xMDEsNyArMTA0LDcgQEAKICAgICAgICAgICAgICAgKGlmIChwcm9taXNlPyBl bCkKICAgICAgICAgICAgICAgICAgICh2ZWN0b3Itc2V0ISBkYXRhIGkgKGZvcmNlIGVsKSkKICAg ICAgICAgICAgICAgICAgIChmb3JjZS1wcm9taXNlcyEgZWwpKQotICAgICAgICAgICAgICAoaXRl cmF0ZSAoMSsgaSkpKSkpKSkKKyAgICAgICAgICAgICAgKGl0ZXJhdGUgKCsgMSBpKSkpKSkpKQog ICAgOzsgRWxzZSBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUuCiAgICApKQogCkBAIC0xMjEsNyAr MTI0LDkgQEAKICAgICAgICAgICAgICAgI2YpCiAgICAgICAgICAgKGJlZ2luCiAgICAgICAgICAg ICAoaWYgKG5vdCBsb29rLWFoZWFkKQotICAgICAgICAgICAgICAgIChzZXQhIGxvb2stYWhlYWQg KGxleCkpKQorICAgICAgICAgICAgICAgIChsZXQgKChuZXh0IChsZXgpKSkKKyAgICAgICAgICAg ICAgICAgIChzZXQhIGxvb2stYWhlYWQgbmV4dCkKKyAgICAgICAgICAgICAgICAgIG5leHQpKQog ICAgICAgICAgICAgKGNhc2UgYWN0aW9uCiAgICAgICAgICAgICAgICgocGVlaykgbG9vay1haGVh ZCkKICAgICAgICAgICAgICAgKChnZXQpCkBAIC0yMTEsNyArMjE2LDcgQEAKIDs7OyBkZWZpbmUg YSBjaXJjdWxhci1kZWZpbml0aW9ucyBkYXRhIHN0cnVjdHVyZSB0byB1c2UuCiAKIChkZWZpbmUg KHJlYWQtZWxpc3AgcG9ydCkKLSAgKHdpdGgtZmx1aWRzICgoY2lyY3VsYXItZGVmaW5pdGlvbnMg KG1ha2UtY2lyY3VsYXItZGVmaW5pdGlvbnMpKSkKKyAgKHBhcmFtZXRlcml6ZSAoKGNpcmN1bGFy LWRlZmluaXRpb25zIChtYWtlLWNpcmN1bGFyLWRlZmluaXRpb25zKSkpCiAgICAgKGxldCogKChs ZXhlciAoZ2V0LWxleGVyIHBvcnQpKQogICAgICAgICAgICAobGV4YnVmIChtYWtlLWxleGVyLWJ1 ZmZlciBsZXhlcikpCiAgICAgICAgICAgIChuZXh0IChsZXhidWYgJ3BlZWspKSkKLS0gCjIuMzku NQoK --0000000000006912a90627674d36--