From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Evgeny Zajcev Newsgroups: gmane.emacs.devel Subject: Re: Hollow cursor under images Date: Tue, 28 Jan 2020 14:55:39 +0300 Message-ID: References: <83bm2qea01.fsf@gnu.org> <20190304223605.GA22198@breton.holly.idiocy.org> <83k15coil1.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000c34cdc059d31e76e" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="119916"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Alan Third , emacs-devel To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jan 28 12:57:42 2020 Return-path: Envelope-to: ged-emacs-devel@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 1iwPV0-000V9k-BH for ged-emacs-devel@m.gmane-mx.org; Tue, 28 Jan 2020 12:57:42 +0100 Original-Received: from localhost ([::1]:57924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iwPUz-0004eL-De for ged-emacs-devel@m.gmane-mx.org; Tue, 28 Jan 2020 06:57:41 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40638) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iwPUR-00045Y-K5 for emacs-devel@gnu.org; Tue, 28 Jan 2020 06:57:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iwPUP-0006Jm-L8 for emacs-devel@gnu.org; Tue, 28 Jan 2020 06:57:07 -0500 Original-Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]:36042) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iwPTE-0005Nn-UC; Tue, 28 Jan 2020 06:55:53 -0500 Original-Received: by mail-lf1-x132.google.com with SMTP id f24so8877151lfh.3; Tue, 28 Jan 2020 03:55:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xkjXYP77ZesF5oEcY/jWkLH61SgoGkMAl/QBMpiDpnw=; b=heNDX7+lBpywECzBA7+qWjxkDqpj00VkgJw5VPNSlwQLtZmcdecmlmNiK/plilsSG4 EtBk2z5/k7i20xlvv1Q8HMgLQLl0A8FPyA7Z2ae3/kLBXv30CL5K0IOzbAt53wuNwxxf Ms7AHzPpqylI/lCU3iHcTHsFrUEA0oUFaiUiHoRGvQwqvclsOctvBq7VZRAn2Ew4arW2 XNKFMU+0cW/+188edMoGfMC+4Rql67d2Z18roWkVoaj1iWlhk4Cz1eu/7Q/hcj+PX0zX 1UjSYVB16R9dIklAdxEb6laVsmvadFTcucZik0yZFPvTcCSt0m3iZfFJ8vfGMkos2sv4 8b1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xkjXYP77ZesF5oEcY/jWkLH61SgoGkMAl/QBMpiDpnw=; b=eVaS3CXUy4gDJ9pasgRSKHCOkd3SErw12+GZ8NAWM1JvxfZFRLOom5NzOccdW7WYSD 5ByUEs3BtIgvUJpaT9rqh6531lO8PbwGvs1Ixt/vKYf4kNGBcpi4HQAS2jO0jvceZ0Wt DPBgBDmlgmweNGtbm8cGmLPO2S9HklhoWg5HWhHb+OJc/lxVaSE5/2Qy8OVh52EwZ1Mx KhAJShCkeqzfMiBWKVLp7HmGC5S7ZIgCJHU+us1WIq3MQbcv8cggWYfiwzqbysglMoIy lkYgm5gYa7i0w6EQhno+IPkaCP90v/B19v6jc+b/me67zIsbgZBwa+JzmCiFk0QwmQRC C4rg== X-Gm-Message-State: APjAAAXe0m98OrzJoaUauURpiE1n4Hve9n9hg3E1bWIka57Z2eBYJ/Bf FZaUuD0QizKVzy88UXisWQO0sMU3rxS6JBLy1zanqg== X-Google-Smtp-Source: APXvYqzxrq5g94BjoBgbGyK2jVWfMU2NYtTo3PwE9eMAwZ4zvgTU6CIMkioK61eb/ZjlpI4vRo1oR57uwxE7e8HQ18A= X-Received: by 2002:ac2:5e6c:: with SMTP id a12mr2207762lfr.32.1580212550842; Tue, 28 Jan 2020 03:55:50 -0800 (PST) In-Reply-To: <83k15coil1.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::132 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:244697 Archived-At: --000000000000c34cdc059d31e76e Content-Type: multipart/alternative; boundary="000000000000c34cda059d31e76c" --000000000000c34cda059d31e76c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =D0=BF=D0=BD, 27 =D1=8F=D0=BD=D0=B2. 2020 =D0=B3. =D0=B2 21:33, Eli Zaretsk= ii : > > From: Evgeny Zajcev > > Date: Mon, 27 Jan 2020 15:54:56 +0300 > > Cc: Eli Zaretskii , emacs-devel > > > > This patch implements (box . WIDTH) cursor type, allowing user to defin= e > his own notion for "Large" image > > Thanks. This needs a NEWS entry and also an update for the ELisp > manual. See also a few comments below. > > > From 6406d198e9f3f5b2d93987ed0fd4fe22bd590624 Mon Sep 17 00:00:00 2001 > > From: Zajcev Evgeny > > Date: Mon, 27 Jan 2020 15:49:46 +0300 > > Subject: [PATCH] * Support for (box . WIDTH) `cursor-type' > > > > Before this commit, block cursor becomes hollow under "large" masked > > images. Notion for "large" was hardcoded to be image larger then > > 32x32 in any dimension. > > > > This patch allows user to define his own notion for "large" image, > > taking full control of block cursor look under masked images. > > > > With cursor-type equal to `box' cursor will always be block under > > masked images. This differs from former behavior for box cursor. > > To get former behavior, set `cursor-type' to (box . 32) > > Please include in the log message a ChangeLog-style list of files and > functions where you are making changes. > > > + (box . WIDTH) display a filled box cursor, but make it > > + hollow if cursor is under masked image larger then > > + WIDTH in either dimention. > ^^^^^^^^^ > "dimension" > > Also, please make it clear that WIDTH is measured in pixels. > > > +Except for (box . WIDTH) case. > > This is not a complete sentence, please clarify it. > > > + if (CONSP (arg) > > + && EQ (XCAR (arg), Qbox) > > + && RANGED_FIXNUMP (0, XCDR (arg), INT_MAX)) > > + { > > + *width =3D XFIXNUM (XCDR (arg)); > > This calls XFIXNUM no less than 3 times. I wonder if we could tweak > the code to do that only once. > > > + return FILLED_BOX_CURSOR; > > + } > > + > > if (EQ (arg, Qhollow)) > > return HOLLOW_BOX_CURSOR; > > If the condition above is not fulfilled, you then make the code do 5 > more gratuitous comparisons, before it falls back on > HOLLOW_BOX_CURSOR. It is much better to return HOLLOW_BOX_CURSOR > right away if the conditions for FILLED_BOX_CURSOR weren't satisfied, > it makes the code which implements this feature much easier to read > and understand. > I tried to fulfill all the review comments in this updated patch Thanks --=20 lg --000000000000c34cda059d31e76c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
=D0=BF=D0=BD, 27 =D1=8F=D0=BD=D0=B2. 2020= =D0=B3. =D0=B2 21:33, Eli Zaretskii <el= iz@gnu.org>:
> From: Evgeny Zajcev <lg.zevlg@gmail.com>
> Date: Mon, 27 Jan 2020 15:54:56 +0300
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel <emacs-devel@gnu.org>
>
> This patch implements (box . WIDTH) cursor type, allowing user to defi= ne his own notion for "Large" image

Thanks.=C2=A0 This needs a NEWS entry and also an update for the ELisp
manual.=C2=A0 See also a few comments below.

> From 6406d198e9f3f5b2d93987ed0fd4fe22bd590624 Mon Sep 17 00:00:00 2001=
> From: Zajcev Evgeny <zevlg@yandex.ru>
> Date: Mon, 27 Jan 2020 15:49:46 +0300
> Subject: [PATCH] * Support for (box . WIDTH) `cursor-type'
>
> Before this commit, block cursor becomes hollow under "large"= ; masked
> images.=C2=A0 Notion for "large" was hardcoded to be image l= arger then
> 32x32 in any dimension.
>
> This patch allows user to define his own notion for "large" = image,
> taking full control of block cursor look under masked images.
>
> With cursor-type equal to `box' cursor will always be block under<= br> > masked images.=C2=A0 This differs from former behavior for box cursor.=
> To get former behavior, set `cursor-type' to (box . 32)

Please include in the log message a ChangeLog-style list of files and
functions where you are making changes.

> +=C2=A0 (box . WIDTH)=C2=A0 =C2=A0display a filled box cursor, but mak= e it
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 hollow= if cursor is under masked image larger then
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 WIDTH = in either dimention.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^^^^^^^^^
"dimension"

Also, please make it clear that WIDTH is measured in pixels.

> +Except for (box . WIDTH) case.

This is not a complete sentence, please clarify it.

> +=C2=A0 if (CONSP (arg)
> +=C2=A0 =C2=A0 =C2=A0 && EQ (XCAR (arg), Qbox)
> +=C2=A0 =C2=A0 =C2=A0 && RANGED_FIXNUMP (0, XCDR (arg), INT_MA= X))
> +=C2=A0 =C2=A0 {
> +=C2=A0 =C2=A0 =C2=A0 *width =3D XFIXNUM (XCDR (arg));

This calls XFIXNUM no less than 3 times.=C2=A0 I wonder if we could tweak the code to do that only once.

> +=C2=A0 =C2=A0 =C2=A0 return FILLED_BOX_CURSOR;
> +=C2=A0 =C2=A0 }
> +
>=C2=A0 =C2=A0 if (EQ (arg, Qhollow))
>=C2=A0 =C2=A0 =C2=A0 return HOLLOW_BOX_CURSOR;

If the condition above is not fulfilled, you then make the code do 5
more gratuitous comparisons, before it falls back on
HOLLOW_BOX_CURSOR.=C2=A0 It is much better to return HOLLOW_BOX_CURSOR
right away if the conditions for FILLED_BOX_CURSOR weren't satisfied, it makes the code which implements this feature much easier to read
and understand.

I tried to fulfill all the review= comments in this updated patch

Thanks
<= br>
--
lg
--000000000000c34cda059d31e76c-- --000000000000c34cdc059d31e76e Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Support-for-box-.-WIDTH-cursor-type.patch" Content-Disposition: attachment; filename="0001-Support-for-box-.-WIDTH-cursor-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k5xtp9vc0 RnJvbSBkNGI3NGI1NmQ3ZmIzZmExYWM0OGQ1MDQ5YjE4YWMxMjZlODAwZDYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaYWpjZXYgRXZnZW55IDx6ZXZsZ0B5YW5kZXgucnU+CkRhdGU6 IE1vbiwgMjcgSmFuIDIwMjAgMTU6NDk6NDYgKzAzMDAKU3ViamVjdDogW1BBVENIXSBTdXBwb3J0 IGZvciAoYm94IC4gV0lEVEgpIGBjdXJzb3ItdHlwZScKCiogYnVmZmVyLmMgKGN1cnNvci10eXBl KTogQWRkIGNvbW1lbnRhcnkgYWJvdXQgKGJveCAuIFdJRFRIKQogIGN1cnNvci10eXBlCgoqIHhk aXNwLmMgKGdldF9zcGVjaWZpZWRfY3Vyc29yX3R5cGUpOiBDaGVjayBmb3IgYGN1cnNvci10eXBl JyBpbiBmb3JtCiAgKGJveCAuIFdJRFRIKQoKKiB4ZGlzcC5jIChnZXRfd2luZG93X2N1cnNvcl90 eXBlKTogQ2hlY2sgbWFza2VkIGltYWdlIHNpemUgZm9yCiAgKGJveCAuIFdJRFRIKSBjdXJzb3It dHlwZS4KCiogZG9jL2VtYWNzL2Rpc3BsYXkudGV4aSwgZG9jL2VtYWNzL2Rpc3BsYXkudGV4aTog QWRkIGRlc2NyaXB0aW9uCiAgZm9yIChib3ggLiBXSURUSCkgYGN1cnNvci10eXBlJwoKKiBldGMv TkVXUzogQWRkIG5vdGUgYWJvdXQgKGJveCAuIFdJRFRIKSBgY3Vyc29yLXR5cGUnCi0tLQogZG9j L2VtYWNzL2Rpc3BsYXkudGV4aSAgfCAgMiArKwogZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkgfCAg MyArKysKIGV0Yy9ORVdTICAgICAgICAgICAgICAgIHwgIDUgKysrKysKIHNyYy9idWZmZXIuYyAg ICAgICAgICAgIHwgIDUgKysrKysKIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgMjggKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCsp LCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvZGlzcGxheS50ZXhpIGIv ZG9jL2VtYWNzL2Rpc3BsYXkudGV4aQppbmRleCBjYjM3ZWY0Li5iYmZhOTM4IDEwMDY0NAotLS0g YS9kb2MvZW1hY3MvZGlzcGxheS50ZXhpCisrKyBiL2RvYy9lbWFjcy9kaXNwbGF5LnRleGkKQEAg LTE2NDcsNiArMTY0Nyw4IEBAIEN1cnNvciBEaXNwbGF5CiB0aGUgdGV4dCBzaG93biB1bmRlciB0 aGUgY3Vyc29yIGlzIGRyYXduIHVzaW5nIHRoZSBmcmFtZSdzIGJhY2tncm91bmQKIGNvbG9yLikg IFRvIGNoYW5nZSBpdHMgc2hhcGUsIGN1c3RvbWl6ZSB0aGUgYnVmZmVyLWxvY2FsIHZhcmlhYmxl CiBAY29kZXtjdXJzb3ItdHlwZX07IHBvc3NpYmxlIHZhbHVlcyBhcmUgQGNvZGV7Ym94fSAodGhl IGRlZmF1bHQpLAorQGNvZGV7KGJveCAuIEB2YXJ7d2lkdGh9KX0gKGJveCBjdXJzb3IgYmVjb21p bmcgYSBob2xsb3cgYm94IHVuZGVyCittYXNrZWQgaW1hZ2VzIGxhcmdlciB0aGFuIEB2YXJ7d2lk dGh9IGluIGVpdGhlciBkaW1lbnNpb24pLAogQGNvZGV7aG9sbG93fSAoYSBob2xsb3cgYm94KSwg QGNvZGV7YmFyfSAoYSB2ZXJ0aWNhbCBiYXIpLCBAY29kZXsoYmFyCiAuIEB2YXJ7bn0pfSAoYSB2 ZXJ0aWNhbCBiYXIgQHZhcntufSBwaXhlbHMgd2lkZSksIEBjb2Rle2hiYXJ9IChhCiBob3Jpem9u dGFsIGJhciksIEBjb2RleyhoYmFyIC4gQHZhcntufSl9IChhIGhvcml6b250YWwgYmFyIEB2YXJ7 bn0KZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2ZyYW1lcy50ZXhpIGIvZG9jL2xpc3ByZWYvZnJh bWVzLnRleGkKaW5kZXggODFhM2RjNi4uNjdhNDk5OCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYv ZnJhbWVzLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkKQEAgLTIyMTksNiArMjIx OSw5IEBAIEN1cnNvciBQYXJhbWV0ZXJzCiBAdGFibGUgQGNvZGUKIEBpdGVtIGJveAogRGlzcGxh eSBhIGZpbGxlZCBib3guICAoVGhpcyBpcyB0aGUgZGVmYXVsdC4pCitAaXRlbSAoYm94IC4gQHZh cnt3aWR0aH0pCitEaXNwbGF5IGEgZmlsbGVkIGJveC4gIEhvd2V2ZXIsIGRpc3BsYXkgaXQgYXMg YSBob2xsb3cgYm94IGlmIHBvaW50IGlzCit1bmRlciBtYXNrZWQgaW1hZ2UgbGFyZ2VyIHRoYW4g QHZhcnt3aWR0aH0gaW4gZWl0aGVyIGRpbWVuc2lvbi4KIEBpdGVtIGhvbGxvdwogRGlzcGxheSBh IGhvbGxvdyBib3guCiBAaXRlbSBuaWwKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MK aW5kZXggZGQzMzk1MC4uOWNjMGIxZiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05F V1MKQEAgLTMwLDYgKzMwLDExIEBAIGFwcGxpZXMsIGFuZCBwbGVhc2UgYWxzbyB1cGRhdGUgZG9j c3RyaW5ncyBhcyBuZWVkZWQuCiAMCiAqIENoYW5nZXMgaW4gRW1hY3MgMjguMQogCisqKiBTdXBw b3J0IGZvciBgKGJveCAuIFdJRFRIKScgY3Vyc29yLXR5cGUuICBCeSBkZWZhdWx0LCBgYm94JyBj dXJzb3IKK2Fsd2F5cyBoYXMgYSBmaWxsZWQgYm94IHNoYXBlLiAgVW5sZXNzIHlvdSBzcGVjaWZ5 IGN1cnNvci10eXBlIHRvIGJlCitgKGJveCAuIFdJRFRIKScuICBJbiBzdWNoIGNhc2UsIGN1cnNv ciBiZWNvbWVzIGEgaG9sbG93IGJveCBpZiB0aGUKK3BvaW50IGlzIHVuZGVyIG1hc2tlZCBpbWFn ZSBsYXJnZXIgdGhhbiBgV0lEVEgnIGluIGFueSBkaW1lbnNpb24uCisKIAwKICogRWRpdGluZyBD aGFuZ2VzIGluIEVtYWNzIDI4LjEKIApkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1 ZmZlci5jCmluZGV4IDgwZWFhOTcuLmE0OTBkNWYgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYwor KysgYi9zcmMvYnVmZmVyLmMKQEAgLTYyNDcsNiArNjI0Nyw5IEBAIGZyb20gKGFicyBQT1NJVElP TikuICBJZiBQT1NJVElPTiBpcyBwb3NpdGl2ZSwgcG9pbnQgd2FzIGF0IHRoZSBmcm9udAogICB0 ICAgICAgICAgICAgICAgdXNlIHRoZSBjdXJzb3Igc3BlY2lmaWVkIGZvciB0aGUgZnJhbWUKICAg bmlsICAgICAgICAgICAgIGRvbid0IGRpc3BsYXkgYSBjdXJzb3IKICAgYm94ICAgICAgICAgICAg IGRpc3BsYXkgYSBmaWxsZWQgYm94IGN1cnNvcgorICAoYm94IC4gV0lEVEgpICAgZGlzcGxheSBh IGZpbGxlZCBib3ggY3Vyc29yLCBidXQgbWFrZSBpdAorICAgICAgICAgICAgICAgICAgaG9sbG93 IGlmIGN1cnNvciBpcyB1bmRlciBtYXNrZWQgaW1hZ2UgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAg ICAgICAgIFdJRFRIIHBpeGVscyBpbiBlaXRoZXIgZGltZW5zaW9uLgogICBob2xsb3cgICAgICAg ICAgZGlzcGxheSBhIGhvbGxvdyBib3ggY3Vyc29yCiAgIGJhciAgICAgICAgICAgICBkaXNwbGF5 IGEgdmVydGljYWwgYmFyIGN1cnNvciB3aXRoIGRlZmF1bHQgd2lkdGgKICAgKGJhciAuIFdJRFRI KSAgIGRpc3BsYXkgYSB2ZXJ0aWNhbCBiYXIgY3Vyc29yIHdpdGggd2lkdGggV0lEVEgKQEAgLTYy NTUsNiArNjI1OCw4IEBAIGZyb20gKGFicyBQT1NJVElPTikuICBJZiBQT1NJVElPTiBpcyBwb3Np dGl2ZSwgcG9pbnQgd2FzIGF0IHRoZSBmcm9udAogICBBTllUSElORyBFTFNFICAgZGlzcGxheSBh IGhvbGxvdyBib3ggY3Vyc29yCiAKIFdJRFRIIGFuZCBIRUlHSFQgY2FuJ3QgZXhjZWVkIHRoZSBm cmFtZSdzIGNhbm9uaWNhbCBjaGFyYWN0ZXIgc2l6ZS4KK0V4Y2VwdCBmb3IgKGJveCAuIFdJRFRI KSBjYXNlLCB3aGVyZSBXSURUSCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYQorbWFza2VkIGltYWdl LCBub3QgdGhlIHNpemUgb2YgdGhlIGN1cnNvci4KIAogV2hlbiB0aGUgYnVmZmVyIGlzIGRpc3Bs YXllZCBpbiBhIG5vbi1zZWxlY3RlZCB3aW5kb3csIHRoZQogY3Vyc29yJ3MgYXBwZWFyYW5jZSBp cyBpbnN0ZWFkIGNvbnRyb2xsZWQgYnkgdGhlIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9zcmMveGRp c3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IDMwODBmODkuLmViMmJmMWMgMTAwNjQ0Ci0tLSBhL3Ny Yy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBAIC0zMDY5MiwxNCArMzA2OTIsNiBAQCBnZXRf c3BlY2lmaWVkX2N1cnNvcl90eXBlIChMaXNwX09iamVjdCBhcmcsIGludCAqd2lkdGgpCiAgICAg ICByZXR1cm4gQkFSX0NVUlNPUjsKICAgICB9CiAKLSAgaWYgKENPTlNQIChhcmcpCi0gICAgICAm JiBFUSAoWENBUiAoYXJnKSwgUWJhcikKLSAgICAgICYmIFJBTkdFRF9GSVhOVU1QICgwLCBYQ0RS IChhcmcpLCBJTlRfTUFYKSkKLSAgICB7Ci0gICAgICAqd2lkdGggPSBYRklYTlVNIChYQ0RSIChh cmcpKTsKLSAgICAgIHJldHVybiBCQVJfQ1VSU09SOwotICAgIH0KLQogICBpZiAoRVEgKGFyZywg UWhiYXIpKQogICAgIHsKICAgICAgICp3aWR0aCA9IDI7CkBAIC0zMDcwNywxMSArMzA2OTksMTYg QEAgZ2V0X3NwZWNpZmllZF9jdXJzb3JfdHlwZSAoTGlzcF9PYmplY3QgYXJnLCBpbnQgKndpZHRo KQogICAgIH0KIAogICBpZiAoQ09OU1AgKGFyZykKLSAgICAgICYmIEVRIChYQ0FSIChhcmcpLCBR aGJhcikKICAgICAgICYmIFJBTkdFRF9GSVhOVU1QICgwLCBYQ0RSIChhcmcpLCBJTlRfTUFYKSkK ICAgICB7CiAgICAgICAqd2lkdGggPSBYRklYTlVNIChYQ0RSIChhcmcpKTsKLSAgICAgIHJldHVy biBIQkFSX0NVUlNPUjsKKworICAgICAgaWYgKEVRIChYQ0FSIChhcmcpLCBRYm94KSkKKyAgICAg ICAgICByZXR1cm4gRklMTEVEX0JPWF9DVVJTT1I7CisgICAgICBlbHNlIGlmIChFUSAoWENBUiAo YXJnKSwgUWJhcikpCisgICAgICAgICAgcmV0dXJuIEJBUl9DVVJTT1I7CisgICAgICBlbHNlIGlm IChFUSAoWENBUiAoYXJnKSwgUWhiYXIpKQorICAgICAgICAgIHJldHVybiBIQkFSX0NVUlNPUjsK ICAgICB9CiAKICAgLyogVHJlYXQgYW55dGhpbmcgdW5rbm93biBhcyAiaG9sbG93IGJveCBjdXJz b3IiLgpAQCAtMzA4NDksMTIgKzMwODQ2LDE1IEBAIGdldF93aW5kb3dfY3Vyc29yX3R5cGUgKHN0 cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaCAqZ2x5cGgsIGludCAqd2lkdGgsCiAJICAgICAg c3RydWN0IGltYWdlICppbWcgPSBJTUFHRV9PUFRfRlJPTV9JRCAoZiwgZ2x5cGgtPnUuaW1nX2lk KTsKIAkgICAgICBpZiAoaW1nICE9IE5VTEwgJiYgSU1BR0VQIChpbWctPnNwZWMpKQogCQl7Ci0J CSAgLyogQXJiaXRyYXJpbHksIGludGVycHJldCAiTGFyZ2UiIGFzID4zMngzMiBhbmQgPk54Tgor CQkgIC8qIEludGVycHJldCAibGFyZ2UiIGFzID5XSURUSHhXSURUSCBhbmQgPk54TgorICAgICAg ICAgICAgICAgICAgICAgd2hlcmUgV0lEVEggaXMgdGhlIHZhbHVlIGZyb20gY3Vyc29yLXR5cGUg aW4gZm9ybSAoYm94IC4gV0lEVEgpLAogCQkgICAgIHdoZXJlIE4gPSBzaXplIG9mIGRlZmF1bHQg ZnJhbWUgZm9udCBzaXplLgotCQkgICAgIFRoaXMgc2hvdWxkIGNvdmVyIG1vc3Qgb2YgdGhlICJ0 aW55IiBpY29ucyBwZW9wbGUgbWF5IHVzZS4gICovCisgICAgICAgICAgICAgICAgICAgICBTbywg c2V0dGluZyBjdXJzb3ItdHlwZSB0byAoYm94IC4gMzIpIHNob3VsZCBjb3ZlciBtb3N0IG9mCisg ICAgICAgICAgICAgICAgICAgICB0aGUgInRpbnkiIGljb25zIHBlb3BsZSBtYXkgdXNlLiAgKi8K IAkJICBpZiAoIWltZy0+bWFzawotCQkgICAgICB8fCBpbWctPndpZHRoID4gbWF4ICgzMiwgV0lO RE9XX0ZSQU1FX0NPTFVNTl9XSURUSCAodykpCi0JCSAgICAgIHx8IGltZy0+aGVpZ2h0ID4gbWF4 ICgzMiwgV0lORE9XX0ZSQU1FX0xJTkVfSEVJR0hUICh3KSkpCisgICAgICAgICAgICAgICAgICAg ICAgfHwgKENPTlNQIChCVkFSIChiLCBjdXJzb3JfdHlwZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICYmIGltZy0+d2lkdGggPiBtYXggKCp3aWR0aCwgV0lORE9XX0ZSQU1FX0NPTFVNTl9X SURUSCAodykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGltZy0+aGVpZ2h0ID4gbWF4 ICgqd2lkdGgsIFdJTkRPV19GUkFNRV9MSU5FX0hFSUdIVCAodykpKSkKIAkJICAgIGN1cnNvcl90 eXBlID0gSE9MTE9XX0JPWF9DVVJTT1I7CiAJCX0KIAkgICAgfQotLSAKMi43LjQKCg== --000000000000c34cdc059d31e76e--