From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Ponce via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#69992: Minor improvement to image map transformation logic Date: Wed, 27 Mar 2024 15:21:18 +0100 Message-ID: References: <87o7b3m8ee.fsf@ushin.org> <55864577-3819-46e0-857a-cc0d0145bc2f@orange.fr> <86cyrfj0t3.fsf@gnu.org> Reply-To: David Ponce Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------EujwABafJVITOc0pgGa0LBVd" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14758"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: 69992@debbugs.gnu.org To: Eli Zaretskii , Joseph Turner Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 27 15:22:17 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1rpUAT-0003ca-6V for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 27 Mar 2024 15:22:17 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rpUAH-0006kJ-Ji; Wed, 27 Mar 2024 10:22:05 -0400 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 1rpUAF-0006jt-CD for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 10:22:03 -0400 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 1rpUAE-0001O1-Ew for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 10:22:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rpUAD-0007u5-VG for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2024 10:22:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: David Ponce Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Mar 2024 14:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69992 X-GNU-PR-Package: emacs Original-Received: via spool by 69992-submit@debbugs.gnu.org id=B69992.171154929830350 (code B ref 69992); Wed, 27 Mar 2024 14:22:01 +0000 Original-Received: (at 69992) by debbugs.gnu.org; 27 Mar 2024 14:21:38 +0000 Original-Received: from localhost ([127.0.0.1]:38026 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpU9e-0007tG-5o for submit@debbugs.gnu.org; Wed, 27 Mar 2024 10:21:38 -0400 Original-Received: from out-69.smtpout.orange.fr ([193.252.22.69]:50337 helo=msa.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rpU9Y-0007t4-Sz for 69992@debbugs.gnu.org; Wed, 27 Mar 2024 10:21:24 -0400 Original-Received: from [192.168.1.15] ([2.7.71.181]) by smtp.orange.fr with ESMTPA id pU9Wr5rGhgxDjpU9Wr0ZSW; Wed, 27 Mar 2024 15:21:19 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1711549279; bh=dhpQBcflZgLnIDNOMgtBn00jjQUSU5gtkL2O8frjwGY=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=KJCSccBPngYyKXf7knSEx920hW/zN5adBTGU/RksaEmUGNon4wRlA4G+K4msDgC22 w8Uk8+X876CYpCayw5DF686AoHY6J+rY0Pl9ABHcOr0an7Tbz+kLce57za+PLzH56h x0UgLcm4Tj40PJAUC7MYzzNJV5T8Oxl2CqJaKilK8qCcA39U7actxeI+QXqqQbuA+k Od9ukluyQTs/vxczNkRsABX/qzQVBB9GKlcpcdafekBPXH21YZ/us5e1Hc9b0oDP2R C7upXXmd4KSHGu1xM+4Uej9xcKSt4Y2asDEGQB8aIa2R6WASljtydTM4nzhZ8awAQv MIidnIlWFBLPA== X-ME-Helo: [192.168.1.15] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Wed, 27 Mar 2024 15:21:19 +0100 X-ME-IP: 2.7.71.181 Content-Language: fr, en-US In-Reply-To: <86cyrfj0t3.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:282140 Archived-At: This is a multi-part message in MIME format. --------------EujwABafJVITOc0pgGa0LBVd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 27/03/2024 13:50, Eli Zaretskii wrote: >> Date: Wed, 27 Mar 2024 12:16:11 +0100 >> From: David Ponce via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> Many thanks for this feature, which is particularly useful to >> automatically recalculate the map of computed images like SVG. >> >> To make the code faster, by avoiding multiple scans of the map for >> copy and parsing, I propose the following patch which factors most of >> the code into the functions `image--compute-map' and `image--compute >> -original-map'. I have done some tests on my side which are >> conclusive. >> >> Furthermore, I wonder if the term :base-map would not be more >> descriptive than :original-map? > > Thanks. > > Joseph, any comments or suggestions? Attached the same patch slightly cleaned up. --------------EujwABafJVITOc0pgGa0LBVd Content-Type: text/x-patch; charset=UTF-8; name="image.el-compute-map-V1.patch" Content-Disposition: attachment; filename="image.el-compute-map-V1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvaW1hZ2UuZWwgYi9saXNwL2ltYWdlLmVsCmluZGV4IDU1MzQw ZWEwM2RjLi45MmI5ZGZmMDFlMSAxMDA2NDQKLS0tIGEvbGlzcC9pbWFnZS5lbAorKysgYi9s aXNwL2ltYWdlLmVsCkBAIC0xNDI3LDEwNyArMTQyNywxNzAgQEAgaW1hZ2UtLWNvbXB1dGUt bWFwCiAgICJDb21wdXRlIG1hcCBmb3IgSU1BR0Ugc3VpdGFibGUgdG8gYmUgdXNlZCBhcyBp dHMgOm1hcCBwcm9wZXJ0eS4KIFJldHVybiBhIGNvcHkgb2YgOm9yaWdpbmFsLWltYWdlIHRy YW5zZm9ybWVkIGJhc2VkIG9uIElNQUdFJ3MgOnNjYWxlLAogOnJvdGF0aW9uLCBhbmQgOmZs aXAuICBXaGVuIElNQUdFJ3MgOm9yaWdpbmFsLW1hcCBpcyBuaWwsIHJldHVybiBuaWwuCi1X aGVuIDpyb3RhdGlvbiBpcyBub3QgYSBtdWx0aXBsZSBvZiA5MCwgcmV0dXJuIGNvcHkgb2Yg Om9yaWdpbmFsLW1hcC4iCi0gIChwY2FzZS1sZXQqICgob3JpZ2luYWwtbWFwIChpbWFnZS1w cm9wZXJ0eSBpbWFnZSA6b3JpZ2luYWwtbWFwKSkKLSAgICAgICAgICAgICAgIChtYXAgKGNv cHktdHJlZSBvcmlnaW5hbC1tYXAgdCkpCi0gICAgICAgICAgICAgICAoc2NhbGUgKG9yIChp bWFnZS1wcm9wZXJ0eSBpbWFnZSA6c2NhbGUpIDEpKQotICAgICAgICAgICAgICAgKHJvdGF0 aW9uIChvciAoaW1hZ2UtcHJvcGVydHkgaW1hZ2UgOnJvdGF0aW9uKSAwKSkKLSAgICAgICAg ICAgICAgIChmbGlwIChpbWFnZS1wcm9wZXJ0eSBpbWFnZSA6ZmxpcCkpCi0gICAgICAgICAg ICAgICAoKGFuZCBzaXplIGAoLHdpZHRoIC4gLGhlaWdodCkpIChpbWFnZS1zaXplIGltYWdl IHQpKSkKLSAgICAod2hlbiAoYW5kIDsgSGFuZGxlIG9ubHkgOTAtZGVncmVlIHJvdGF0aW9u cwotICAgICAgICAgICAoemVyb3AgKG1vZCByb3RhdGlvbiAxKSkKLSAgICAgICAgICAgKHpl cm9wICglICh0cnVuY2F0ZSByb3RhdGlvbikgOTApKSkKLSAgICAgIDs7IFNJWkUgZml0cyBN QVAgYWZ0ZXIgdHJhbnNmb3JtYXRpb25zLiAgU2NhbGUgTUFQIGJlZm9yZQotICAgICAgOzsg ZmxpcCBhbmQgcm90YXRlIG9wZXJhdGlvbnMsIHNpbmNlIGJvdGggbmVlZCBNQVAgdG8gZml0 IFNJWkUuCi0gICAgICAoaW1hZ2UtLXNjYWxlLW1hcCBtYXAgc2NhbGUpCi0gICAgICA7OyBJ biByZW5kZXJlZCBpbWFnZXMsIHJvdGF0aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGJlZm9yZSBm bGlwLgotICAgICAgKGltYWdlLS1yb3RhdGUtbWFwCi0gICAgICAgbWFwIHJvdGF0aW9uIChp ZiAob3IgKD0gOTAgcm90YXRpb24pICg9IDI3MCByb3RhdGlvbikpCi0gICAgICAgICAgICAg ICAgICAgICAgICA7OyBJZiByb3RhdGVkIMKxOTDCsCwgc3dhcCB3aWR0aCBhbmQgaGVpZ2h0 LgotICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgaGVpZ2h0IHdpZHRoKQotICAgICAg ICAgICAgICAgICAgICAgIHNpemUpKQotICAgICAgOzsgQWZ0ZXIgcm90YXRpb24sIHRoZXJl J3Mgbm8gbmVlZCB0byBzd2FwIHdpZHRoIGFuZCBoZWlnaHQuCi0gICAgICAoaW1hZ2UtLWZs aXAtbWFwIG1hcCBmbGlwIHNpemUpKQotICAgIG1hcCkpCitXaGVuIHRoZXJlIGlzIG5vIHRy YW5zZm9ybWF0aW9uLCByZXR1cm4gOm9yaWdpbmFsLW1hcC4iCisgICh3aGVuLWxldCAoKG9t YXAgKGltYWdlLXByb3BlcnR5IGltYWdlIDpvcmlnaW5hbC1tYXApKSkKKyAgICAobGV0KiAo KHNjYWxlIChsZXQgKChzIChpbWFnZS0tY3VycmVudC1zY2FsaW5nCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1h Z2UtLWltYWdlLXdpdGhvdXQtcGFyYW1ldGVycyBpbWFnZSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgKHVubGVzcyAoPSBzIDEpIHMpKSkKKyAgICAgICAgICAgKHJvdGF0ZSAobGV0ICgo ZCAoaW1hZ2UtcHJvcGVydHkgaW1hZ2UgOnJvdGF0aW9uKSkpCisgICAgICAgICAgICAgICAg ICAgICA7OyBIYW5kbGUgb25seSA5MC1kZWdyZWUgcm90YXRpb25zCisgICAgICAgICAgICAg ICAgICAgICAoYW5kIGQgKD0gMCAobW9kIGQgMSkpICg9IDAgKCUgZCA5MCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICh0cnVuY2F0ZSAobW9kIGQgMzYwKSkpKSkKKyAgICAgICAg ICAgKGZsaXAgKGltYWdlLXByb3BlcnR5IGltYWdlIDpmbGlwKSkKKyAgICAgICAgICAgKG1h cCBvbWFwKQorICAgICAgICAgICBzaXplIGZsaXAtdykKKyAgICAgICh3aGVuIChvciBzY2Fs ZSByb3RhdGUgZmxpcCkKKyAgICAgICAgKHNldHEgbWFwIG5pbAorICAgICAgICAgICAgICBz aXplIChpbWFnZS1zaXplIGltYWdlIHQpCisgICAgICAgICAgICAgIGZsaXAtdyAoY2FyIHNp emUpKQorICAgICAgICAoaWYgKG1lbXFsIHJvdGF0ZSAnKDkwIDI3MCkpCisgICAgICAgICAg ICA7OyBJZiByb3RhdGVkIMKxOTDCsCwgc3dhcCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgICAg ICAgICAgKHNldHEgc2l6ZSAoY29ucyAoY2RyIHNpemUpIChjYXIgc2l6ZSkpKSkKKyAgICAg ICAgOzsgU0laRSBmaXRzIE1BUCBhZnRlciB0cmFuc2Zvcm1hdGlvbnMuICBTY2FsZSBNQVAg YmVmb3JlIGZsaXAKKyAgICAgICAgOzsgYW5kIHJvdGF0ZSBvcGVyYXRpb25zLCBzaW5jZSBi b3RoIG5lZWQgTUFQIHRvIGZpdCBTSVpFLgorICAgICAgICAocGNhc2UtZG9saXN0IChgKCxh cmVhICxpZCAscGxpc3QpIG9tYXApCisgICAgICAgICAgKHBjYXNlLWV4aGF1c3RpdmUgYXJl YQorICAgICAgICAgICAgOzsgUmVjdGFuZ2xlIGhvdCBzcG90LgorICAgICAgICAgICAgKGAo cmVjdCAuICgoLHgwIC4gLHkwKSAuICgseDEgLiAseTEpKSkKKyAgICAgICAgICAgICAoaWYg c2NhbGUKKyAgICAgICAgICAgICAgICAgKHNldHEgeDAgKHJvdW5kICgqIHgwIHNjYWxlKSkg eTAgKHJvdW5kICgqIHkwIHNjYWxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgeDEgKHJv dW5kICgqIHgxIHNjYWxlKSkgeTEgKHJvdW5kICgqIHkxIHNjYWxlKSkpKQorICAgICAgICAg ICAgIChpZiByb3RhdGUKKyAgICAgICAgICAgICAgICAgKGxldCAoKHAwIChpbWFnZS0tcm90 YXRlLWNvb3JkIHgwIHkwIHJvdGF0ZSBzaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAg KHAxIChpbWFnZS0tcm90YXRlLWNvb3JkIHgxIHkxIHJvdGF0ZSBzaXplKSkpCisgICAgICAg ICAgICAgICAgICAgKHNldHEgeDAgKGNhciBwMCkgeTAgKGNkciBwMCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICB4MSAoY2FyIHAxKSB5MSAoY2RyIHAxKSkpKQorICAgICAgICAgICAg IChpZiBmbGlwCisgICAgICAgICAgICAgICAgIChsZXQgKCh4YSB4MCkgKHhiIHgxKSkKKyAg ICAgICAgICAgICAgICAgICAoc2V0cSB4MCAoLSBmbGlwLXcgeGIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgeDEgKC0gZmxpcC13IHhhKSkpKQorICAgICAgICAgICAgIDs7IE5vcm1h bGl6ZSByZWN0IGNvb3JkcyB0byBiZSB0b3AvbGVmdCBib3R0b20vcmlnaHQuCisgICAgICAg ICAgICAgKGlmICg+IHgwIHgxKQorICAgICAgICAgICAgICAgICAobGV0ICgocncgKGFicyAo LSB4MCB4MSkpKSkKKyAgICAgICAgICAgICAgICAgICAoc2V0cSB4MCAoLSB4MCBydykgeDEg KCsgeDEgcncpKSkpCisgICAgICAgICAgICAgKGlmICg+IHkwIHkxKQorICAgICAgICAgICAg ICAgICAobGV0ICgocmggKGFicyAoLSB5MCB5MSkpKSkKKyAgICAgICAgICAgICAgICAgICAo c2V0cSB5MCAoLSB5MCByaCkgeTEgKCsgeTEgcmgpKSkpCisgICAgICAgICAgICAgKHB1c2gg YCgocmVjdCAuICgoLHgwIC4gLHkwKSAuICgseDEgLiAseTEpKSkgLGlkICxwbGlzdCkKKyAg ICAgICAgICAgICAgICAgICBtYXApKQorICAgICAgICAgICAgOzsgQ2lyY2xlIGhvdCBzcG90 LgorICAgICAgICAgICAgKGAoY2lyY2xlIC4gKCgseDAgLiAseTApIC4gLHIpKQorICAgICAg ICAgICAgIChpZiBzY2FsZQorICAgICAgICAgICAgICAgICAoc2V0cSB4MCAocm91bmQgKCog eDAgc2NhbGUpKSB5MCAocm91bmQgKCogeTAgc2NhbGUpKQorICAgICAgICAgICAgICAgICAg ICAgICByICAocm91bmQgKCogciBzY2FsZSkpKSkKKyAgICAgICAgICAgICAoaWYgcm90YXRl CisgICAgICAgICAgICAgICAgIChsZXQgKChwMCAoaW1hZ2UtLXJvdGF0ZS1jb29yZCB4MCB5 MCByb3RhdGUgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIHgwIChjYXIgcDAp IHkwIChjZHIgcDApKSkpCisgICAgICAgICAgICAgKGlmIGZsaXAKKyAgICAgICAgICAgICAg ICAgKHNldHEgeDAgKC0gZmxpcC13IHgwKSkpCisgICAgICAgICAgICAgKHB1c2ggYCgoY2ly Y2xlIC4gKCgseDAgLiAseTApIC4gLHIpKSAsaWQgLHBsaXN0KSBtYXApKQorICAgICAgICAg ICAgOzsgUG9seSBob3Qgc3BvdC4KKyAgICAgICAgICAgIChgKHBvbHkgLiAsY29vcmRzKQor ICAgICAgICAgICAgIChzZXRxIGNvb3JkcyAoY29weS1zZXF1ZW5jZSBjb29yZHMpKQorICAg ICAgICAgICAgIChsZXQgKChpIDApIChuIChsZW5ndGggY29vcmRzKSkpCisgICAgICAgICAg ICAgICAod2hpbGUgKDwgaSBuKQorICAgICAgICAgICAgICAgICAobGV0KiAoKGogKDErIGkp KQorICAgICAgICAgICAgICAgICAgICAgICAgKHggKGFyZWYgY29vcmRzIGkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKHkgKGFyZWYgY29vcmRzIGopKSkKKyAgICAgICAgICAgICAg ICAgICAoaWYgc2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgeCAocm91bmQg KCogeCBzY2FsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgKHJvdW5kICgq IHkgc2NhbGUpKSkpCisgICAgICAgICAgICAgICAgICAgKGlmIHJvdGF0ZQorICAgICAgICAg ICAgICAgICAgICAgICAobGV0ICgocCAoaW1hZ2UtLXJvdGF0ZS1jb29yZCB4IHkgcm90YXRl IHNpemUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB4IChjYXIgcCkgeSAo Y2RyIHApKSkpCisgICAgICAgICAgICAgICAgICAgKGlmIGZsaXAKKyAgICAgICAgICAgICAg ICAgICAgICAgKHNldHEgeCAoLSBmbGlwLXcgeCkpKQorICAgICAgICAgICAgICAgICAgIChh c2V0IGNvb3JkcyBpIHgpCisgICAgICAgICAgICAgICAgICAgKGFzZXQgY29vcmRzIGogeSkp CisgICAgICAgICAgICAgICAgIChzZXRxIGkgKCsgaSAyKSkpKQorICAgICAgICAgICAgIChw dXNoIGAoKHBvbHkgLiAsY29vcmRzKSAsaWQgLHBsaXN0KSBtYXApKQorICAgICAgICAgICAg KSkpCisgICAgICBtYXApKSkKIAogKGRlZnVuIGltYWdlLS1jb21wdXRlLW9yaWdpbmFsLW1h cCAoaW1hZ2UpCiAgICJSZXR1cm4gb3JpZ2luYWwgbWFwIGZvciBJTUFHRS4KIElmIElNQUdF IGxhY2tzIDptYXAgcHJvcGVydHksIHJldHVybiBuaWwuCi1XaGVuIDpyb3RhdGlvbiBpcyBu b3QgYSBtdWx0aXBsZSBvZiA5MCwgcmV0dXJuIGNvcHkgb2YgOm1hcC4iCi0gICh3aGVuIChp bWFnZS1wcm9wZXJ0eSBpbWFnZSA6bWFwKQotICAgIChsZXQqICgoaW1hZ2UtY29weSAoY29w eS10cmVlIGltYWdlIHQpKQotICAgICAgICAgICAobWFwIChpbWFnZS1wcm9wZXJ0eSBpbWFn ZS1jb3B5IDptYXApKQotICAgICAgICAgICAoc2NhbGUgKG9yIChpbWFnZS1wcm9wZXJ0eSBp bWFnZS1jb3B5IDpzY2FsZSkgMSkpCi0gICAgICAgICAgIChyb3RhdGlvbiAob3IgKGltYWdl LXByb3BlcnR5IGltYWdlLWNvcHkgOnJvdGF0aW9uKSAwKSkKLSAgICAgICAgICAgKGZsaXAg KGltYWdlLXByb3BlcnR5IGltYWdlLWNvcHkgOmZsaXApKQotICAgICAgICAgICAoc2l6ZSAo aW1hZ2Utc2l6ZSBpbWFnZS1jb3B5IHQpKSkKLSAgICAgICh3aGVuIChhbmQgOyBIYW5kbGUg b25seSA5MC1kZWdyZWUgcm90YXRpb25zCi0gICAgICAgICAgICAgKHplcm9wIChtb2Qgcm90 YXRpb24gMSkpCi0gICAgICAgICAgICAgKHplcm9wICglICh0cnVuY2F0ZSByb3RhdGlvbikg OTApKSkKK1doZW4gdGhlcmUgaXMgbm8gdHJhbnNmb3JtYXRpb24sIHJldHVybiA6bWFwLiIK KyAgKHdoZW4tbGV0ICgobWFwIChpbWFnZS1wcm9wZXJ0eSBpbWFnZSA6bWFwKSkpCisgICAg KGxldCogKChzY2FsZSAobGV0ICgocyAoaW1hZ2UtLWN1cnJlbnQtc2NhbGluZworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGltYWdlLS1pbWFnZS13aXRob3V0LXBhcmFtZXRlcnMgaW1hZ2UpKSkpCisgICAgICAg ICAgICAgICAgICAgICh1bmxlc3MgKD0gcyAxKSBzKSkpCisgICAgICAgICAgIChyb3RhdGUg KGxldCAoKGQgKGltYWdlLXByb3BlcnR5IGltYWdlIDpyb3RhdGlvbikpKQorICAgICAgICAg ICAgICAgICAgICAgOzsgSGFuZGxlIG9ubHkgOTAtZGVncmVlIHJvdGF0aW9ucworICAgICAg ICAgICAgICAgICAgICAgKGFuZCBkICg9IDAgKG1vZCBkIDEpKSAoPSAwICglIGQgOTApKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAodHJ1bmNhdGUgKG1vZCAoLSBkKSAzNjApKSkp KQorICAgICAgICAgICAoZmxpcCAoaW1hZ2UtcHJvcGVydHkgaW1hZ2UgOmZsaXApKQorICAg ICAgICAgICAob21hcCBtYXApCisgICAgICAgICAgIHNpemUgZmxpcC13KQorICAgICAgKHdo ZW4gKG9yIHNjYWxlIHJvdGF0ZSBmbGlwKQorICAgICAgICAoc2V0cSBvbWFwIG5pbAorICAg ICAgICAgICAgICBzaXplIChpbWFnZS1zaXplIGltYWdlIHQpCisgICAgICAgICAgICAgIGZs aXAtdyAoY2FyIHNpemUpKQogICAgICAgICA7OyBJbiByZW5kZXJlZCBpbWFnZXMsIHJvdGF0 aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGJlZm9yZSBmbGlwLgogICAgICAgICA7OyBUbyB1bmRv IHRoZSB0cmFuc2Zvcm1hdGlvbiwgZmxpcCBiZWZvcmUgcm90YXRpbmcuCi0gICAgICAgIDs7 IFNJWkUgZml0cyBNQVAgYmVmb3JlIGl0IGlzIHRyYW5zZm9ybWVkIGJhY2sgdG8gT1JJR0lO QUwtTUFQLgotICAgICAgICA7OyBUaGVyZWZvcmUsIHNjYWxlIE1BUCBhZnRlciBmbGlwIGFu ZCByb3RhdGUgb3BlcmF0aW9ucywgc2luY2UKLSAgICAgICAgOzsgYm90aCBuZWVkIE1BUCB0 byBmaXQgU0laRS4KLSAgICAgICAgKGltYWdlLS1mbGlwLW1hcCBtYXAgZmxpcCBzaXplKQot ICAgICAgICAoaW1hZ2UtLXJvdGF0ZS1tYXAgbWFwICgtIHJvdGF0aW9uKSBzaXplKQotICAg ICAgICAoaW1hZ2UtLXNjYWxlLW1hcCBtYXAgKC8gMS4wIHNjYWxlKSkpCi0gICAgICBtYXAp KSkKLQotKGRlZnVuIGltYWdlLS1zY2FsZS1tYXAgKG1hcCBzY2FsZSkKLSAgIlNjYWxlIE1B UCBhY2NvcmRpbmcgdG8gU0NBTEUuCi1EZXN0cnVjdGl2ZWx5IG1vZGlmaWVzIGFuZCByZXR1 cm5zIE1BUC4iCi0gICh1bmxlc3MgKD0gMSBzY2FsZSkKLSAgICAocGNhc2UtZG9saXN0IChg KCxgKCx0eXBlIC4gLGNvb3JkcykgLF9pZCAsX3BsaXN0KSBtYXApCi0gICAgICAocGNhc2Ut ZXhoYXVzdGl2ZSB0eXBlCi0gICAgICAgICgncmVjdAotICAgICAgICAgKHNldGYgKGNhYXIg Y29vcmRzKSAocm91bmQgKCogKGNhYXIgY29vcmRzKSBzY2FsZSkpKQotICAgICAgICAgKHNl dGYgKGNkYXIgY29vcmRzKSAocm91bmQgKCogKGNkYXIgY29vcmRzKSBzY2FsZSkpKQotICAg ICAgICAgKHNldGYgKGNhZHIgY29vcmRzKSAocm91bmQgKCogKGNhZHIgY29vcmRzKSBzY2Fs ZSkpKQotICAgICAgICAgKHNldGYgKGNkZHIgY29vcmRzKSAocm91bmQgKCogKGNkZHIgY29v cmRzKSBzY2FsZSkpKSkKLSAgICAgICAgKCdjaXJjbGUKLSAgICAgICAgIChzZXRmIChjYWFy IGNvb3JkcykgKHJvdW5kICgqIChjYWFyIGNvb3Jkcykgc2NhbGUpKSkKLSAgICAgICAgIChz ZXRmIChjZGFyIGNvb3JkcykgKHJvdW5kICgqIChjZGFyIGNvb3Jkcykgc2NhbGUpKSkKLSAg ICAgICAgIChzZXRjZHIgY29vcmRzIChyb3VuZCAoKiAoY2RyIGNvb3Jkcykgc2NhbGUpKSkp Ci0gICAgICAgICgncG9seQotICAgICAgICAgKGRvdGltZXMgKGkgKGxlbmd0aCBjb29yZHMp KQotICAgICAgICAgICAoYXNldCBjb29yZHMgaQotICAgICAgICAgICAgICAgICAocm91bmQg KCogKGFyZWYgY29vcmRzIGkpIHNjYWxlKSkpKSkpKSkKLSAgbWFwKQotCi0oZGVmdW4gaW1h Z2UtLXJvdGF0ZS1tYXAgKG1hcCByb3RhdGlvbiBzaXplKQotICAiUm90YXRlIE1BUCBhY2Nv cmRpbmcgdG8gUk9UQVRJT04gYW5kIFNJWkUuCi1EZXN0cnVjdGl2ZWx5IG1vZGlmaWVzIGFu ZCByZXR1cm5zIE1BUC4iCi0gICh1bmxlc3MgKHplcm9wIHJvdGF0aW9uKQotICAgIChwY2Fz ZS1kb2xpc3QgKGAoLGAoLHR5cGUgLiAsY29vcmRzKSAsX2lkICxfcGxpc3QpIG1hcCkKLSAg ICAgIChwY2FzZS1leGhhdXN0aXZlIHR5cGUKLSAgICAgICAgKCdyZWN0Ci0gICAgICAgICAo bGV0ICggeDAgeTAgIDsgTmV3IHVwcGVyIGxlZnQgY29ybmVyCi0gICAgICAgICAgICAgICAg eDEgeTEpIDsgTmV3IGJvdHRvbSByaWdodCBjb3JuZXIKLSAgICAgICAgICAgKHBjYXNlICh0 cnVuY2F0ZSAobW9kIHJvdGF0aW9uIDM2MCkpIDsgU2V0IG5ldyBjb3JuZXJzIHRvLi4uCi0g ICAgICAgICAgICAgKDkwIDsgLi4ub2xkIGJvdHRvbSBsZWZ0IGFuZCB1cHBlciByaWdodAot ICAgICAgICAgICAgICAoc2V0cSB4MCAoY2FhciBjb29yZHMpIHkwIChjZGRyIGNvb3JkcykK LSAgICAgICAgICAgICAgICAgICAgeDEgKGNhZHIgY29vcmRzKSB5MSAoY2RhciBjb29yZHMp KSkKLSAgICAgICAgICAgICAoMTgwIDsgLi4ub2xkIGJvdHRvbSByaWdodCBhbmQgdXBwZXIg bGVmdAotICAgICAgICAgICAgICAoc2V0cSB4MCAoY2FkciBjb29yZHMpIHkwIChjZGRyIGNv b3JkcykKLSAgICAgICAgICAgICAgICAgICAgeDEgKGNhYXIgY29vcmRzKSB5MSAoY2RhciBj b29yZHMpKSkKLSAgICAgICAgICAgICAoMjcwIDsgLi4ub2xkIHVwcGVyIHJpZ2h0IGFuZCBi b3R0b20gbGVmdAotICAgICAgICAgICAgICAoc2V0cSB4MCAoY2FkciBjb29yZHMpIHkwIChj ZGFyIGNvb3JkcykKLSAgICAgICAgICAgICAgICAgICAgeDEgKGNhYXIgY29vcmRzKSB5MSAo Y2RkciBjb29yZHMpKSkpCi0gICAgICAgICAgIChzZXRjYXIgY29vcmRzIChpbWFnZS0tcm90 YXRlLWNvb3JkIHgwIHkwIHJvdGF0aW9uIHNpemUpKQotICAgICAgICAgICAoc2V0Y2RyIGNv b3JkcyAoaW1hZ2UtLXJvdGF0ZS1jb29yZCB4MSB5MSByb3RhdGlvbiBzaXplKSkpKQotICAg ICAgICAoJ2NpcmNsZQotICAgICAgICAgKHNldGNhciBjb29yZHMgKGltYWdlLS1yb3RhdGUt Y29vcmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY2FhciBjb29yZHMpIChjZGFyIGNv b3Jkcykgcm90YXRpb24gc2l6ZSkpKQotICAgICAgICAoJ3BvbHkKLSAgICAgICAgIChkb3Rp bWVzIChpIChsZW5ndGggY29vcmRzKSkKLSAgICAgICAgICAgKHdoZW4gKD0gMCAoJSBpIDIp KQotICAgICAgICAgICAgIChwY2FzZS1sZXQgKChgKCx4IC4gLHkpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIChpbWFnZS0tcm90YXRlLWNvb3JkCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAoYXJlZiBjb29yZHMgaSkgKGFyZWYgY29vcmRzICgxKyBpKSkgcm90YXRpb24g c2l6ZSkpKQotICAgICAgICAgICAgICAgKGFzZXQgY29vcmRzIGkgeCkKLSAgICAgICAgICAg ICAgIChhc2V0IGNvb3JkcyAoMSsgaSkgeSkpKSkpKSkpCi0gIG1hcCkKKyAgICAgICAgOzsg U0laRSBmaXRzIE1BUCBiZWZvcmUgaXQgaXMgdHJhbnNmb3JtZWQgYmFjayB0bworICAgICAg ICA7OyBPUklHSU5BTC1NQVAuICBUaGVyZWZvcmUsIHNjYWxlIE1BUCBhZnRlciBmbGlwIGFu ZCByb3RhdGUKKyAgICAgICAgOzsgb3BlcmF0aW9ucywgc2luY2UgYm90aCBuZWVkIE1BUCB0 byBmaXQgU0laRS4KKyAgICAgICAgKHBjYXNlLWRvbGlzdCAoYCgsYXJlYSAsaWQgLHBsaXN0 KSBtYXApCisgICAgICAgICAgKHBjYXNlLWV4aGF1c3RpdmUgYXJlYQorICAgICAgICAgICAg OzsgUmVjdGFuZ2xlIGhvdCBzcG90LgorICAgICAgICAgICAgKGAocmVjdCAuICgoLHgwIC4g LHkwKSAuICgseDEgLiAseTEpKSkKKyAgICAgICAgICAgICAoaWYgZmxpcAorICAgICAgICAg ICAgICAgICAobGV0ICgoeGEgeDApICh4YiB4MSkpCisgICAgICAgICAgICAgICAgICAgKHNl dHEgeDAgKC0gZmxpcC13IHhiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHgxICgtIGZs aXAtdyB4YSkpKSkKKyAgICAgICAgICAgICAoaWYgcm90YXRlCisgICAgICAgICAgICAgICAg IChsZXQgKChwMCAoaW1hZ2UtLXJvdGF0ZS1jb29yZCB4MCB5MCByb3RhdGUgc2l6ZSkpCisg ICAgICAgICAgICAgICAgICAgICAgIChwMSAoaW1hZ2UtLXJvdGF0ZS1jb29yZCB4MSB5MSBy b3RhdGUgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIHgwIChjYXIgcDApIHkw IChjZHIgcDApCisgICAgICAgICAgICAgICAgICAgICAgICAgeDEgKGNhciBwMSkgeTEgKGNk ciBwMSkpKSkKKyAgICAgICAgICAgICAoaWYgc2NhbGUKKyAgICAgICAgICAgICAgICAgKHNl dHEgeDAgKHJvdW5kICgvIHgwIHNjYWxlKSkgeTAgKHJvdW5kICgvIHkwIHNjYWxlKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgeDEgKHJvdW5kICgvIHgxIHNjYWxlKSkgeTEgKHJvdW5k ICgvIHkxIHNjYWxlKSkpKQorICAgICAgICAgICAgIDs7IE5vcm1hbGl6ZSByZWN0IGNvb3Jk cyB0byBiZSB0b3AvbGVmdCBib3R0b20vcmlnaHQuCisgICAgICAgICAgICAgKGlmICg+IHgw IHgxKQorICAgICAgICAgICAgICAgICAobGV0ICgocncgKGFicyAoLSB4MCB4MSkpKSkKKyAg ICAgICAgICAgICAgICAgICAoc2V0cSB4MCAoLSB4MCBydykgeDEgKCsgeDEgcncpKSkpCisg ICAgICAgICAgICAgKGlmICg+IHkwIHkxKQorICAgICAgICAgICAgICAgICAobGV0ICgocmgg KGFicyAoLSB5MCB5MSkpKSkKKyAgICAgICAgICAgICAgICAgICAoc2V0cSB5MCAoLSB5MCBy aCkgeTEgKCsgeTEgcmgpKSkpCisgICAgICAgICAgICAgKHB1c2ggYCgocmVjdCAuICgoLHgw IC4gLHkwKSAuICgseDEgLiAseTEpKSkgLGlkICxwbGlzdCkKKyAgICAgICAgICAgICAgICAg ICBvbWFwKSkKKyAgICAgICAgICAgIDs7IENpcmNsZSBob3Qgc3BvdC4KKyAgICAgICAgICAg IChgKGNpcmNsZSAuICgoLHgwIC4gLHkwKSAuICxyKSkKKyAgICAgICAgICAgICAoaWYgZmxp cAorICAgICAgICAgICAgICAgICAoc2V0cSB4MCAoLSBmbGlwLXcgeDApKSkKKyAgICAgICAg ICAgICAoaWYgcm90YXRlCisgICAgICAgICAgICAgICAgIChsZXQgKChwMCAoaW1hZ2UtLXJv dGF0ZS1jb29yZCB4MCB5MCByb3RhdGUgc2l6ZSkpKQorICAgICAgICAgICAgICAgICAgIChz ZXRxIHgwIChjYXIgcDApIHkwIChjZHIgcDApKSkpCisgICAgICAgICAgICAgKGlmIHNjYWxl CisgICAgICAgICAgICAgICAgIChzZXRxIHgwIChyb3VuZCAoLyB4MCBzY2FsZSkpIHkwIChy b3VuZCAoLyB5MCBzY2FsZSkpCisgICAgICAgICAgICAgICAgICAgICAgIHIgIChyb3VuZCAo LyByIHNjYWxlKSkpKQorICAgICAgICAgICAgIChwdXNoIGAoKGNpcmNsZSAuICgoLHgwIC4g LHkwKSAuICxyKSkgLGlkICxwbGlzdCkgb21hcCkpCisgICAgICAgICAgICA7OyBQb2x5IGhv dCBzcG90LgorICAgICAgICAgICAgKGAocG9seSAuICxjb29yZHMpCisgICAgICAgICAgICAg KHNldHEgY29vcmRzIChjb3B5LXNlcXVlbmNlIGNvb3JkcykpCisgICAgICAgICAgICAgKGxl dCAoKGkgMCkgKG4gKGxlbmd0aCBjb29yZHMpKSkKKyAgICAgICAgICAgICAgICh3aGlsZSAo PCBpIG4pCisgICAgICAgICAgICAgICAgIChsZXQqICgoaiAoMSsgaSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAoeCAoYXJlZiBjb29yZHMgaSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAoeSAoYXJlZiBjb29yZHMgaikpKQorICAgICAgICAgICAgICAgICAgIChpZiBmbGlw CisgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHggKC0gZmxpcC13IHgpKSkKKyAgICAg ICAgICAgICAgICAgICAoaWYgcm90YXRlCisgICAgICAgICAgICAgICAgICAgICAgIChsZXQg KChwIChpbWFnZS0tcm90YXRlLWNvb3JkIHggeSByb3RhdGUgc2l6ZSkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHggKGNhciBwKSB5IChjZHIgcCkpKSkKKyAgICAgICAg ICAgICAgICAgICAoaWYgc2NhbGUKKyAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgeCAo cm91bmQgKC8geCBzY2FsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgKHJv dW5kICgvIHkgc2NhbGUpKSkpCisgICAgICAgICAgICAgICAgICAgKGFzZXQgY29vcmRzIGkg eCkKKyAgICAgICAgICAgICAgICAgICAoYXNldCBjb29yZHMgaiB5KSkKKyAgICAgICAgICAg ICAgICAgKHNldHEgaSAoKyBpIDIpKSkpCisgICAgICAgICAgICAgKHB1c2ggYCgocG9seSAu ICxjb29yZHMpICxpZCAscGxpc3QpIG9tYXApKQorICAgICAgICAgICAgKSkpCisgICAgICBv bWFwKSkpCiAKIChkZWZ1biBpbWFnZS0tcm90YXRlLWNvb3JkICh4IHkgYW5nbGUgc2l6ZSkK ICAgIlJvdGF0ZSBjb29yZGluYXRlcyBYIGFuZCBZIGJ5IEFOR0xFIGluIGltYWdlIG9mIFNJ WkUuCkBAIC0xNTUzLDI3ICsxNjE2LDYgQEAgaW1hZ2UtLXJvdGF0ZS1jb29yZAogICAgICAg ICAgICAgICAgKHkxICgtIHkxKSkpCiAgICAgKGNvbnMgKHJvdW5kIHgxKSAocm91bmQgeTEp KSkpCiAKLShkZWZ1biBpbWFnZS0tZmxpcC1tYXAgKG1hcCBmbGlwIHNpemUpCi0gICJIb3Jp em9udGFsbHkgZmxpcCBNQVAgYWNjb3JkaW5nIHRvIEZMSVAgYW5kIFNJWkUuCi1EZXN0cnVj dGl2ZWx5IG1vZGlmaWVzIGFuZCByZXR1cm5zIE1BUC4iCi0gICh3aGVuIGZsaXAKLSAgICAo cGNhc2UtZG9saXN0IChgKCxgKCx0eXBlIC4gLGNvb3JkcykgLF9pZCAsX3BsaXN0KSBtYXAp Ci0gICAgICAocGNhc2UtZXhoYXVzdGl2ZSB0eXBlCi0gICAgICAgICgncmVjdAotICAgICAg ICAgKGxldCAoKHgwICgtIChjYXIgc2l6ZSkgKGNhZHIgY29vcmRzKSkpCi0gICAgICAgICAg ICAgICAoeTAgKGNkYXIgY29vcmRzKSkKLSAgICAgICAgICAgICAgICh4MSAoLSAoY2FyIHNp emUpIChjYWFyIGNvb3JkcykpKQotICAgICAgICAgICAgICAgKHkxIChjZGRyIGNvb3Jkcykp KQotICAgICAgICAgICAoc2V0Y2FyIGNvb3JkcyAoY29ucyB4MCB5MCkpCi0gICAgICAgICAg IChzZXRjZHIgY29vcmRzIChjb25zIHgxIHkxKSkpKQotICAgICAgICAoJ2NpcmNsZQotICAg ICAgICAgKHNldGYgKGNhYXIgY29vcmRzKSAoLSAoY2FyIHNpemUpIChjYWFyIGNvb3Jkcykp KSkKLSAgICAgICAgKCdwb2x5Ci0gICAgICAgICAoZG90aW1lcyAoaSAobGVuZ3RoIGNvb3Jk cykpCi0gICAgICAgICAgICh3aGVuICg9IDAgKCUgaSAyKSkKLSAgICAgICAgICAgICAoYXNl dCBjb29yZHMgaSAoLSAoY2FyIHNpemUpIChhcmVmIGNvb3JkcyBpKSkpKSkpKSkpCi0gIG1h cCkKLQogKHByb3ZpZGUgJ2ltYWdlKQogCiA7OzsgaW1hZ2UuZWwgZW5kcyBoZXJlCg== --------------EujwABafJVITOc0pgGa0LBVd--