From nobody Sun Dec 08 17:41:05 2024 X-Original-To: freebsd-current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Y5sjp17Z7z5gwXD for ; Sun, 08 Dec 2024 17:41:18 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Y5sjn23Mlz40vh for ; Sun, 8 Dec 2024 17:41:17 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2eeb4d643a5so3289771a91.3 for ; Sun, 08 Dec 2024 09:41:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20230601.gappssmtp.com; s=20230601; t=1733679676; x=1734284476; darn=freebsd.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=caM9jb9ruwkc2qYsw4n2bW0n+Hy4J9SbuOFk+U/0N6I=; b=wyu5+1snb9m+ZlyiOlEWEWz2rSnnymS0Y8Y4I85NYzmIE99JelBciHx2d74/KLet7H 8UjlhUA3auxK1hg8+nKQV4f9Xjm/3ahpvsxXxI2kdhkjP2lXZ83i+gqCKUBvdY8CMCKH K3qRn6I0vuVwiUtaQWWXZfzx1nbjGHLNI1Xgd9LT07JSpBorF8oDG2/+FAZmnCbPrmej j76eotWv2hXezz6rIbnUWvhQPwffFwiEVcSIwNwgkctJPHq/v8oy9rHE/5eRd/k5cK9+ zRJOZ7N0MXfK/g6h8OeuSBwHcwysyzLoV2P+heWxSWrlGCbW14cLSeXjj7rh1mlzB1kX huqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733679676; x=1734284476; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=caM9jb9ruwkc2qYsw4n2bW0n+Hy4J9SbuOFk+U/0N6I=; b=Et3KpODtvQY5hUTAHYkY/kffT5drZIq3j0cyDOa9XKjT00Mnboi2kz9ejYaI49JqHk EBdAJKPr8z+9V84/QARgXSDZfha8wTx/kzd66D60PmsIX+KmPD/Z/3cdq0Q/ygaYtNKb U62elB11gC049PLfkxReexpXNOAJ8XJo86veZXyaojd/yHyiqhdKFZW1uuhJOo2JH+Pd NsgedGR+Ihy2AcDw3WwTwJaWb7N5+0rygFZsWJc5ls3dWA8fT2N/0UwO4FtnQcflVx4V PiDYRkG8nyaSHPMWso5yyPSwu43ITZMQQSMbY+oR2q3C6l/oq5LCWVDgBjKcnjkzimVx 3XYQ== X-Forwarded-Encrypted: i=1; AJvYcCVnjixIE9bFzLDD/wLLn2s+pTAxdIH8o/F6f3H2uj0m1gtyqGjg6Poy2PN9zsWRb/h1+PIXgaDpTSHDpbu4xCk=@freebsd.org X-Gm-Message-State: AOJu0YxxPxEMzDlH034VLoQNedYO8Yqjnvv80Lxzwm3mnX7GUben9cr5 E10ET6j9FiIhCopLAc0vfrfQmWZtlbB8sOCtT75kOi6fyj3NAhsX9bUd3dtO85HwdTwwPYI80ef GaS6unJDI9AZR0r9LJdUAIXaomOKHOCIUIxWKOA== X-Gm-Gg: ASbGncv9gDzswBtyO30VxYUuU4r36OnC9ufvQQfVqmGY5GAdweI8q37EgDHFQBwzuOs JvFJUOmm+BsnDVxUqSghYY/SRXquyqVU= X-Google-Smtp-Source: AGHT+IFP7UJYkE65s1X7rNXdycBoIN5qXxFtjHlVDoI8JMhafe3CmvTlti39TUEr+zYKgEz1T7Zs4B8MH1+c6UXKDr4= X-Received: by 2002:a17:90b:4c04:b0:2ee:fdf3:390d with SMTP id 98e67ed59e1d1-2ef6ab06a5amr13293608a91.31.1733679676001; Sun, 08 Dec 2024 09:41:16 -0800 (PST) List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org MIME-Version: 1.0 References: <4L_wVuJx1yIMEv85fQKvrJp8QiaTK4Fe_TvymIq0vcdwdHqa06Ys4lqAM8aHb-kefxPiIZW7kxT8qI7hmv4bLngKUlzIWfBVzDcaz4VRIPY=@proton.me> In-Reply-To: <4L_wVuJx1yIMEv85fQKvrJp8QiaTK4Fe_TvymIq0vcdwdHqa06Ys4lqAM8aHb-kefxPiIZW7kxT8qI7hmv4bLngKUlzIWfBVzDcaz4VRIPY=@proton.me> From: Warner Losh Date: Sun, 8 Dec 2024 10:41:05 -0700 Message-ID: Subject: Re: Long time outdated jemalloc To: Minsoo Choo Cc: cglogic , FreeBSD CURRENT Content-Type: multipart/alternative; boundary="0000000000003e31c50628c5c16a" X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] X-Rspamd-Queue-Id: 4Y5sjn23Mlz40vh X-Spamd-Bar: ---- --0000000000003e31c50628c5c16a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Great! I'll take a look at that, as well as do the merge the typical way (which only takes a few minutes now that I've bootstrapped things). I'll compare the two to see what diffs there might be (to act as a cross check for both methods). I'll then build a copy of the Netflix firmware with the change and put it on a couple machines and see if they can handle the load and if there are any performance regressions. I don't expect any, since malloc typically doesn't appear in the flame graphs as "visible", but you never know. So, once that's done, and I expect it to be done this week, I'll push it into main with both the proper vendor branch merge commits as well as an acknowledgement for this pull request and your work to move it forward (I'm just verifying the typical process will produce the same results and the typical process doesn't take a long time, etc). Warner On Sun, Dec 8, 2024 at 9:03=E2=80=AFAM Minsoo Choo wrote: > I resolved merge conflict by rebasing main. What's next? > > https://github.com/freebsd/freebsd-src/pull/1337 > On Sunday, December 1st, 2024 at 2:05 AM, Warner Losh > wrote: > > (sorry to follow up to my own email and topposting) > > I got the vendor branch bootstrapped: I created vendor/jemalloc and tagge= d > vendor/jemalloc/5.2.1, > and created a merge commit from that branch to main. I had to tweak the > FREEBSD-Xlist a little.I've not updated the other two FREEBSD-* files, bu= t > the steps were > documented in the commit messages (the vendor branch one is especially > long and > likely should migrate into the developer handbook). FREEBSD-update is > basically > a shell script to do the same thing that git subtree merge does, though > I'm sure some > tweaks could help the next time (if there is a next time, jemalloc > upstream seems to > have slowed way down of late). > > Next up,I'll create 5.3.0 import on the vendor branch, do the merge and > start testing (it will be > Minsoo's pull request, rebased, with any conflicts resolved and merge > commit recorded). > But that will have to be tomorrow or more likely during the work week. I'= m > too tired tonight > to get it right at the moment. > > And a special thanks to emaste for giving bz the right recipe for doing > the subtree merge > w/o git subtree for his work on the linux wifi drivers in the tree. > > Warner > > On Sat, Nov 30, 2024 at 9:38=E2=80=AFPM Warner Losh wrot= e: > >> Yea, I need to get a copy of jemalloc 5.3.0 and 5.2.1 to try to >> 'bootstrap' the vendor branch. >> Then I need to bootstrap it... >> >> I just did the same with edk2 (which had a vendor branch, but hadn't bee= n >> updated since svn times). >> However, jemalloc doesn't have a vendor branch yet, so I'll have to >> create that, but I'll start with the >> current version rather than doing full history... So I'll start there. >> I also just did awk and lua, so once I have things bootstrapped, I'll be >> able to add 5.3.0 and then layer Minsoo's on >> top of that and then start testing it somehow. >> >> Malloc makes me nervous to touch, honestly, but I'll give it a go and >> test boot on my system and >> maybe see if we can survive a workload at work w/o regressions... But I >> can't do a full test with lots >> of machines until after the first of the year (though I can do a couple >> for a few days before then). >> >> So my next step is to bootstrap the vendor branch... I'll give that a tr= y >> tonight. >> >> Warner >> >> On Sat, Nov 30, 2024 at 8:26=E2=80=AFPM Minsoo Choo >> wrote: >> >>> I have already submitted PR on github ( >>> https://github.com/freebsd/freebsd-src/pull/1337) and phabricator ( >>> https://reviews.freebsd.org/D41421). I don't have access (commit bit) >>> to freebsd git repo, so there is nothing I can do at this point since >>> vendor import and landing patches requires commit bit. >>> On Saturday, November 30th, 2024 at 1:42 PM, cglogic < >>> cglogic@protonmail.com> wrote: >>> >>> I see, it happens. >>> Maybe another committer will volunteer to do the update. >>> I hope it will make its way into 15.0 release. >>> >>> Thanks. >>> On Friday, November 29th, 2024 at 9:38 PM, Warner Losh >>> wrote: >>> >>> I've been swamped. we need to bootstrap the vendor branch, and the way >>> prior updates were done >>> isn't so great. >>> >>> Warner >>> >>> On Mon, Nov 25, 2024 at 2:21=E2=80=AFAM cglogic wrote: >>> >>>> Hello guys, >>>> >>>> How the update of jemalloc is going? It's November now. >>>> >>>> Thanks. >>>> On Monday, July 22nd, 2024 at 7:02 PM, Minsoo Choo < >>>> minsoochoo0122@proton.me> wrote: >>>> >>>> First, sorry for late response. >>>> >>>> cglogic, thank you for bringing up this issue again since I nearly >>>> forgot that this issue was still open. >>>> >>>> Warner, as I can't access to my FreeBSD instance until the end of >>>> August, but I can still edit and push the code through my Arm Mac. Thi= s >>>> means that I can't test the updated code on my machine, but I can join= the >>>> review process and listen to change proposals. >>>> >>>> I'll open a Github PR in a few hours. (The phabricator review will sta= y >>>> opened just in case) >>>> On Monday, July 22nd, 2024 at 5:08 AM, Warner Losh >>>> wrote: >>>> >>>> >>>> >>>> On Sun, Jul 21, 2024 at 2:03=E2=80=AFPM cglogic wrote: >>>> >>>>> >>>>> On Sunday, July 21st, 2024 at 6:54 AM, Warner Losh >>>>> wrote: >>>>> >>>>> >>>>> >>>>> On Sat, Jul 20, 2024 at 1:59=E2=80=AFAM cglogic >>>>> wrote: >>>>> >>>>>> Hello FreeBSD community, >>>>>> >>>>>> After Jason Evans stepped aside from maintaining jemalloc in >>>>>> FreeBSD, it's not updating in time anymore. >>>>>> Version 5.3.0 was released May 6, 2022 and FreeBSD still not >>>>>> imported it into the tree. >>>>>> >>>>>> There is a pending review https://reviews.freebsd.org/D41421 from Au= g >>>>>> 11, 2023. >>>>>> I'm successfully running FreeBSD/amd64 system with D41421 applied fo= r >>>>>> 8 months, as well as many other people. >>>>>> >>>>>> Can it be reviewed and committed to CURRENT? >>>>>> Or, if there is no committers willing to do it, can commit bit be >>>>>> given to submitter or another person willing to do this? >>>>>> >>>>>> It's very disappointing when users spend their time to fill such gap= s >>>>>> and their efforts just ignored by the developers. >>>>>> Every year FreeBSD Community Survey asking about user experience in >>>>>> contributing to FreeBSD. >>>>>> Here you can see an example of such contributing. >>>>>> >>>>>> >>>>> First, thank you for being persistent and continuing to bring it up. >>>>> It's important to do that to make sure this (and your many other) >>>>> contribution doesn't fall on the floor. >>>>> >>>>> And to be fair, we're only 3 months since the last update. Still, >>>>> quite a bit longer than you should have to wait, but not nearly the y= ear >>>>> the original date suggests. >>>>> >>>>> And this is a perfect storm of "how the project is bad at accepting >>>>> contributions": >>>>> (1) The original submission was close to the 14 branch creation time. >>>>> This meant that we weren't well prepared to look at it since it is su= ch an >>>>> invasive change (at least on its surface). It also slowed the initial >>>>> response... >>>>> (2) There was a number of back and forth requests for changes, which >>>>> took time to sort out... >>>>> (3) The size of this is huge, well beyond the capacity of Phabricator >>>>> to review accurately... >>>>> (4) It's a vendor import. That means we can't just drop the >>>>> Phabricator review into the tree... >>>>> (5) It's phabricator: this is a great tool for developers, but we hav= e >>>>> a terrible track record of using it for intake from new contributors.= We >>>>> don't have any oversight at all over this tool, at there's at best te= pid >>>>> and luke warm attempts to look for drop balls. >>>>> >>>>> All of these things are a terrible experience. I can only apologize. >>>>> These days, we might steer this towards github, but the 'vendor impor= t' >>>>> means you really need someone on the inside, or you need to be on the >>>>> inside to make that work. >>>>> >>>>> So, how to move forward? Well, I'd like to propose the following: >>>>> (1) submit all the other Phabricator reviews you have open (they are >>>>> mostly good, or close to good) to github. Github is being actively ma= naged >>>>> and will make it faster to get things it. It's a much better tool for= new >>>>> contributors (and even frequent contributors of smallish things). >>>>> (2) I should do an vendor import of 5.3.0 from github, and do the >>>>> merge to a branch and push that to github. You can then layer on your >>>>> changes and those can be reviewed more closely as a pull request agai= nst >>>>> the branch I push. I suspect that most of the issues are sorted out a= lready >>>>> (3) I'll land it via that route... >>>>> >>>>> And, if the sum of the other pull requests and this are good (and I >>>>> suspect they will be), then we can talk about commit bits and such. >>>>> >>>>> It's experiences like this which is why I'm trying to stand up github >>>>> pull requests as a reliable way to get things and and the best place = to >>>>> send people... >>>>> >>>>> Thanks again for persisting, and also for expressing this criticism >>>>> that we (hopefully) can use to make it better. >>>>> >>>>> Warner >>>>> >>>>> >>>>> Hello. >>>>> >>>>> I'm not the author of D41421. Just applied the patch to test it 8 >>>>> months ago. And recently discovered that it's still not committed. >>>>> I can't copy your message to Phabricator because don't have an >>>>> account. Please, if you have time, help the author in D41421. >>>>> >>>> >>>> Ah yes. I've been in touch with the author for other things, and >>>> somehow thought it was you.... I'll reach out to him via other means..= . >>>> >>>> Warner >>>> >>>> >>>> >>>> >>> >>> > --0000000000003e31c50628c5c16a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Great! I'll take a look at that, as well as do the mer= ge the typical way (which only takes a few minutes now that I've bootst= rapped things). I'll compare the two to see what diffs there might be (= to act as a cross check for both methods). I'll then build a copy of th= e Netflix firmware with the change and put it on a couple machines and see = if they can handle the load and if there are any performance regressions. I= don't expect any, since malloc typically doesn't appear in the fla= me graphs as "visible", but you never know.

So= , once that's done, and I expect it to be done this week, I'll push= it into main with both the proper=C2=A0vendor branch merge commits as well= as an acknowledgement for this pull request and your work to move it forwa= rd (I'm just verifying the typical process will produce the same result= s and the typical process doesn't take a long time, etc).
Warner

On Sun, Dec 8, 2024 at 9:03= =E2=80=AFAM Minsoo Choo <min= soochoo0122@proton.me> wrote:
I resolved merge conflict by rebasing main. What&= #39;s next?

On Sunday, December 1st, 2024 at 2:05 AM, Warner Losh <imp@bsdimp.com> wrote:<= br>
(sorry to follow up to my own= email and topposting)

I got the vendo= r branch bootstrapped: I created vendor/jemalloc and tagged vendor/jemalloc= /5.2.1,
and created a merge commit from that branch to main. I ha= d to tweak the
FREEBSD-Xlist a little.I've not updated the ot= her two FREEBSD-* files, but the steps were
documented in the com= mit messages (the vendor branch one is especially long and
likely= should migrate into the developer handbook). FREEBSD-update is basically
a shell script to do the same thing that git subtree merge does, t= hough I'm sure some
tweaks could help the next time (if there= is a next time, jemalloc upstream seems to
have slowed way down = of late).

Next up,I'll create 5.3.0 import on = the vendor branch, do the merge and start testing (it will be
Min= soo's pull request, rebased, with any conflicts resolved and merge comm= it recorded).
But that will have to be tomorrow or more likely du= ring the work week. I'm too tired tonight
to get it right at = the moment.

And a special thanks to emaste for giv= ing bz the right recipe for doing the subtree merge
w/o git subtr= ee for his work on the linux wifi drivers in the tree.

=
Warner

On Sat, Nov 30, 2024 at 9:38=E2=80=AFPM Warner Losh <imp@bsdimp.com> wrote:
Yea, I need to get a copy of jemalloc= 5.3.0 and 5.2.1 to try to 'bootstrap' the vendor branch.
Then = I need to bootstrap it...

I just did the same with= edk2 (which had a vendor branch, but hadn't been updated since svn tim= es).
However, jemalloc doesn't have a vendor branch yet, so I= 'll have to create that, but I'll start with the
current = version rather than doing full history... So I'll start there.
I also just did awk and lua, so once I have things bootstrapped, I'l= l be able to add 5.3.0 and then layer Minsoo's on
top of tha= t and then start testing it somehow.

Malloc makes = me nervous to touch, honestly, but I'll give it a go and test boot on m= y system and
maybe see if we can survive a workload at work w/o r= egressions... But I can't do a full test with lots
of mac= hines until after the first of the year (though I can do a couple for a few= days before then).

So my next step is to bootstra= p the vendor branch... I'll give that a try tonight.

Warner

On Sat, Nov 30, 2024 at 8:26=E2=80=AFPM Minsoo Choo <= minsoochoo0122@proton.me> wrote:
I have already submitted PR on github (https://github.com/freebsd/freebsd-src/pull/1337) and phabricator (https://reviews.free= bsd.org/D41421). I don't have access (commit bit) to freebsd= git repo, so there is nothing I can do at this point since vendor import a= nd landing patches requires commit bit.
On Saturday, November 30th, 2024 at 1:42 PM, cglogic <cglogic@protonmail.com> wrote:
I se= e, it happens.
Maybe another committer will volunteer to do the update.I hope it will make its way into 15.0 release.

= Thanks.
On Friday, November 29th, 2024 at 9:38 PM, Warner Losh <imp@bsdimp.com> wrote:
I've been swamped. we need to bootstrap th= e vendor branch, and the way prior updates were done
isn't so great= .

Warner

On Mon, Nov 25, 2024 at 2:21=E2=80= =AFAM cglogic <cglogic@protonmail.com> wrot= e:
Hello guys,

How the update of jemalloc is go= ing? It's November now.

Thanks.
On Monday, July 22nd, 2024 at 7:02 PM, Minsoo Choo <minsoochoo0122@proton.me> wrote:
Firs= t, sorry for late response.

cglogic, thank you for bringing up this issue again since I near= ly forgot that this issue was still open.

Warner, as I can't access to my FreeBSD instan= ce until the end of August, but I can still edit and push the code through = my Arm Mac. This means that I can't test the updated code on my machine= , but I can join the review process and listen to change proposals.

I'll open a Github P= R in a few hours. (The phabricator review will stay opened just in case)
On Monday, July 22nd, 2024 at 5:08 AM, Warner Losh <imp@bsdimp.com> wrote:


On Sun, Jul 21, 2024 at 2= :03=E2=80=AFPM cglogic <cglogic@protonmail.com= > wrote:

On Sunday, July 21st, 2024 at 6:54 AM, Warner Losh <imp@bsdimp.com> wrote:


On Sat, Jul 20, 2024 at 1= :59=E2=80=AFAM cglogic <cglogic@protonmail.com= > wrote:
Hello FreeBSD community,

After Jason Evans stepped aside from = maintaining jemalloc in FreeBSD, it's not updating in time anymore.
Version 5.3.0 was released = May 6, 2022 and FreeBSD still not imported it into the tree.

There is a pending review https://reviews.freebsd.org/D41421 from Aug 11, 2023.
I'm succes= sfully running FreeBSD/amd64 system with D41421 applied for 8 months, as we= ll as many other people.

= Can it be reviewed and committed to CURRENT?
Or, if there is no committe= rs willing to do it, can commit bit be given to submitter or another person= willing to do this?
=
It's very disappointing when users spend their time to fi= ll such gaps and their efforts just ignored by the developers.
Every year FreeBSD Community Survey asking about user experience in contr= ibuting to FreeBSD.
Here you can see an example of su= ch contributing.


Firs= t, thank you for being persistent and continuing to bring it up. It's i= mportant to do that to make sure this (and your many other) contribution do= esn't fall on the floor.

And to be fair, w= e're only 3 months since the last update. Still, quite a bit longer tha= n you should have to wait, but not nearly the year the original date sugges= ts.

And this is a perfect storm of "how t= he project is bad at accepting contributions":
(1) The origi= nal submission was close to the 14 branch creation time. This meant that we= weren't well prepared to look at it since it is such an invasive chang= e (at least on its surface). It also slowed the initial response...
(2) There was a number of back and forth requests for changes, which= took time to sort out...
(3) The size of this is huge, well beyo= nd the capacity of Phabricator to review accurately...
(4) It'= ;s a vendor import. That means we can't just drop the Phabricator revie= w into the tree...
(5) It's phabricator: this is a great tool= for developers, but we have a terrible track record of using it for intake= from new contributors. We don't have any oversight at all over this to= ol, at there's at best tepid and luke warm attempts to look for drop ba= lls.

All of these things are a terrible experience= . I can only apologize. These days, we might steer this towards github, but= the 'vendor import' means you really need someone on the inside, o= r you need to be on the inside to make that work.

= So, how to move forward? Well, I'd like to propose the following:
=
(1) submit all the other Phabricator reviews you have open (they are m= ostly good, or close to good) to github. Github is being actively managed a= nd will make it faster to get things it. It's a much better tool for ne= w contributors (and even frequent contributors of smallish things).
(2) I should do an vendor import of 5.3.0 from github, and do the merge = to a branch and push that to github. You can then layer on your changes and= those can be reviewed more closely as a pull request against the branch I = push. I suspect that most of the issues are sorted out already
(3) I'll land it via that route...

And, if = the sum of the other pull requests and this are good (and I suspect they wi= ll be), then we can talk about commit bits and such.

It's experiences like this which is why I'm trying to stand up g= ithub pull requests as a reliable way to get things and and the best place = to send people...

Thanks again for persistin= g, and also for expressing this criticism that we (hopefully) can use to ma= ke it better.

Warner

Hello.

I'm not the author of = D41421. Just applied the patch to test it 8 months ago. And recently = discovered that it's still not committed.
I can't copy your message to Phabricator becaus= e don't have an account. Please, if you have time, help the auth= or in D41421.

Ah yes. I've been i= n touch with the author for other things, and somehow thought it was you...= . I'll reach out to him via other means...

Wa= rner





--0000000000003e31c50628c5c16a--