BBC testing from upriver downwards

perl-5.25.11 will be released on Monday March 20.  Since this will be 
the first monthly dev release to reflect the banishment of '.' from the 
default @INC, it is the first monthly release in which we can assess the 
effect of that change on CPAN.

Up until now we've mainly relied on Andreas and Slaven's CPAN tester 
reports in this regard.  But we have a problem.  We're having problems 
with cpantesters.org such that, while we rapidly get PASS/FAIL 
indicators for a given distro on a given platform on a given version of 
perl at fast-matrix.cpantesters.org, we are having big delays at getting 
the full report of a test failure at matrix.cpantesters.org.  Currently, 
'matrix' is behind 'fast-matrix' by ... more than a few days.

I know that Doug Bell++ and others are examining this problem, but I 
would like to try some modest workarounds.  What I would like to do is:

1. Compose a list of CPAN distros starting with those farthest up river, 
i.e., distros that only depend on the perl 5 core.  Within that set of 
distros I'd like to order them from most reverse dependencies to fewest. 
  Then go down river from there.

2. Get an up-to-date minicpan.

3. Use that minicpan as the source of tests of the CPAN distros.

4. Run something like a full CPAN test for perl 5.25.11 -- but be able 
to cut that off at either a certain number of distros -- e.g., the 5000 
farthest upriver -- or at a certain number of level below the core itself.
(a) I would like the location where the tests are run, the version of 
'cpan', 'cpaniminus', etc. to be completely distinct from whatever my 
"usual" procedure is on a given platform -- that so I can just blow away 
everything I've done once I'm through.

5. Capture reports of test failures so that we can identify their cause 
-- e.g., is this failure due to:

(a) no '.' by default in @INC?
(b) some other change during 5.25.x development?
(c) breakage, not yet corrected, from some change in an earlier perl 
major release?
(d) bad code in the CPAN distro?

I don't want to re-invent the wheel here.  Do we have prior art for this?

Thank you very much.
Jim Keenan
0
jkeen
3/17/2017 9:32:20 PM
perl.qa 2161 articles. 0 followers. Follow

4 Replies
9 Views

Similar Articles

[PageSpeed] 0

--001a1140a72cc22037054af76849
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

=E2=80=8B> =E2=80=8B
1. Compose a list of CPAN distros starting with those farthest up river,
i.e., distros that only depend on the perl 5 core.  Within that set of
distros I'd like to order them from most reverse dependencies to fewest.
Then go down river from there.

=E2=80=8BDavid Golden has a script for generating the CPAN river heirarchy =
-- the
last run of this that I know of (at least, it's the data I've been working
off of) is at https://gist.github.com/xdg/af7a32c5b21d45a6b255. It lists
the distributions in their position on the CPAN river, and their top 5
users (reverse dependencies).  This would be a natural place to start
testing, and determining which branches of the river have blockages (the
first instance of a no-dot-in-INC issue).  David, can you generate a fresh
copy?=E2=80=8B

=E2=80=8B=E2=80=8B
Karen Etheridge,
ether@cpan.org

--001a1140a72cc22037054af76849
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_extra"><div style=3D"font-size:small;d=
isplay:inline" class=3D"gmail_default">=E2=80=8B&gt; =E2=80=8B</div>1. Comp=
ose a list of CPAN distros starting with those farthest up river, i.e., dis=
tros that only depend on the perl 5 core.=C2=A0 Within that set of distros =
I&#39;d like to order them from most reverse dependencies to fewest.=C2=A0 =
Then go down river from there.<br><div class=3D"gmail_quote"><div><br><div =
style=3D"font-size:small;display:inline" class=3D"gmail_default">=E2=80=8BD=
avid Golden has a script for generating the CPAN river heirarchy -- the las=
t run of this that I know of (at least, it&#39;s the data I&#39;ve been wor=
king off of) is at <a href=3D"https://gist.github.com/xdg/af7a32c5b21d45a6b=
255" target=3D"_blank">https://gist.github.com/xdg/<wbr>af7a32c5b21d45a6b25=
5</a>. It lists the distributions in their position on the CPAN river, and =
their top 5 users (reverse dependencies).=C2=A0 This would be a natural pla=
ce to start testing, and determining which branches of the river have block=
ages (the first instance of a no-dot-in-INC issue).=C2=A0 David, can you ge=
nerate a fresh copy?=E2=80=8B</div></div></div><br><div style=3D"font-size:=
small" class=3D"gmail_default">=E2=80=8B=E2=80=8B<br></div><div style=3D"fo=
nt-size:small" class=3D"gmail_default">Karen Etheridge,<br></div><div style=
=3D"font-size:small" class=3D"gmail_default"><a href=3D"mailto:ether@cpan.o=
rg">ether@cpan.org</a><br></div></div></div>

--001a1140a72cc22037054af76849--
0
perl
3/18/2017 1:42:38 AM
On 03/17/2017 09:42 PM, Karen Etheridge wrote:
> ​> ​
> 1. Compose a list of CPAN distros starting with those farthest up river,
> i.e., distros that only depend on the perl 5 core.  Within that set of
> distros I'd like to order them from most reverse dependencies to
> fewest.  Then go down river from there.
>
> ​David Golden has a script for generating the CPAN river heirarchy --
> the last run of this that I know of (at least, it's the data I've been
> working off of) is at https://gist.github.com/xdg/af7a32c5b21d45a6b255
> <https://gist.github.com/xdg/af7a32c5b21d45a6b255>. It lists the
> distributions in their position on the CPAN river, and their top 5 users
> (reverse dependencies).  This would be a natural place to start testing,
> and determining which branches of the river have blockages (the first
> instance of a no-dot-in-INC issue).  David, can you generate a fresh copy?​
>

Karen, thanks for that link.  Actually, just using the first 1000 or so 
distros in that gist as is would suffice for now.

We now have a perl-5.25.11 tarball which contains 
no-dot-by-default-in-@INC.  So we have a real (dev) release with which 
to begin testing CPAN distros.

The next question is:  How can I set up a reporting apparatus such that 
when a distro fails I can retain the complete test run/output on disk 
for inspection?

I ask this because it's my impression that CPAN::Reporter sends the 
report off to Metabase but does not retain it locally.  I could use 
CPAN::Visit::Mini::Simple but then I have to wade through immense log files.

Thank you very much.
Jim Keenan
0
jkeen
3/21/2017 1:32:34 AM
--Apple-Mail=_3F288D22-0E71-4E7B-A3D8-B124770BCCC3
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

> =E2=80=8B> =E2=80=8B1. Compose a list of CPAN distros starting with =
those farthest up river, i.e., distros that only depend on the perl 5 =
core.  Within that set of distros I'd like to order them from most =
reverse dependencies to fewest.  Then go down river from there.
>=20
> =E2=80=8BDavid Golden has a script for generating the CPAN river =
heirarchy -- the last run of this that I know of (at least, it's the =
data I've been working off of) is at =
https://gist.github.com/xdg/af7a32c5b21d45a6b255 =
<https://gist.github.com/xdg/af7a32c5b21d45a6b255>. It lists the =
distributions in their position on the CPAN river, and their top 5 users =
(reverse dependencies).  This would be a natural place to start testing, =
and determining which branches of the river have blockages (the first =
instance of a no-dot-in-INC issue).  David, can you generate a fresh =
copy?=E2=80=8B

I am generating the river data roughly weekly. You can get it from here:

	http://neilb.org/river-of-cpan.json.gz =
<http://neilb.org/river-of-cpan.json.gz>

The file is a big array of hashes, one hash per distribution. Here=E2=80=99=
s an example, for Try-Tiny:

	{
	    "dist" : "Try-Tiny=E2=80=9D,
	    "total" : 13045,
	    "bucket" : 5,
	    "immediate" : 1077
	},

The keys are:
=E2=80=9Cimmediate=E2=80=9D is the number of directly dependent CPAN =
distributions.
=E2=80=9Ctotal=E2=80=9D is the total number of dists dependent on it.
=E2=80=9Cbucket=E2=80=9D chunks the river: bucket 5 is dists with 10k or =
more total dependents. Bucket 4 is 1k up to 9999, and so on until bucket =
0, which is dists that have no dependents.

At the moment there are 56 dists in bucket 5 (=E2=80=9Cthe head of the =
river=E2=80=9D).

This file is being imported into MetaCPAN. For example, for Try-Tiny, =
have a look at:

	https://fastapi.metacpan.org/distribution/Try-Tiny =
<https://fastapi.metacpan.org/distribution/Try-Tiny>

At the moment this is being generated as a by-product of my scripts that =
run the PRC, generate the adoption list, etc. I=E2=80=99m currently =
working on a stand-alone generator for this data, which I=E2=80=99m =
hoping to have complete by PTS, so I can work on productising it with =
Leo Lapworth.

Neil



--Apple-Mail=_3F288D22-0E71-4E7B-A3D8-B124770BCCC3
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D""><div><blockquote type=3D"cite" class=3D""><div class=3D""><div =
dir=3D"ltr" class=3D""><div class=3D"gmail_extra"><div =
style=3D"font-size:small;display:inline" class=3D"gmail_default">=E2=80=8B=
&gt; =E2=80=8B</div>1. Compose a list of CPAN distros starting with =
those farthest up river, i.e., distros that only depend on the perl 5 =
core.&nbsp; Within that set of distros I'd like to order them from most =
reverse dependencies to fewest.&nbsp; Then go down river from there.<br =
class=3D""><div class=3D"gmail_quote"><div class=3D""><br class=3D""><div =
style=3D"font-size:small;display:inline" class=3D"gmail_default">=E2=80=8B=
David Golden has a script for generating the CPAN river heirarchy -- the =
last run of this that I know of (at least, it's the data I've been =
working off of) is at <a =
href=3D"https://gist.github.com/xdg/af7a32c5b21d45a6b255" =
target=3D"_blank" class=3D"">https://gist.github.com/xdg/<wbr =
class=3D"">af7a32c5b21d45a6b255</a>. It lists the distributions in their =
position on the CPAN river, and their top 5 users (reverse =
dependencies).&nbsp; This would be a natural place to start testing, and =
determining which branches of the river have blockages (the first =
instance of a no-dot-in-INC issue).&nbsp; David, can you generate a =
fresh copy?=E2=80=8B</div></div></div></div></div></div></blockquote></div=
><br class=3D""><div class=3D"">I am generating the river data roughly =
weekly. You can get it from here:</div><div class=3D""><br =
class=3D""></div><div class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><a =
href=3D"http://neilb.org/river-of-cpan.json.gz" =
class=3D"">http://neilb.org/river-of-cpan.json.gz</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">The file is a big array =
of hashes, one hash per distribution. Here=E2=80=99s an example, for =
Try-Tiny:</div><div class=3D""><br class=3D""></div><div class=3D""><font =
face=3D"Courier New" style=3D"font-size: 14px;" class=3D""><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>{</font></div><div class=3D""><font face=3D"Courier New" =
style=3D"font-size: 14px;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>&nbsp; &nbsp;&nbsp;"dist" : =
"Try-Tiny=E2=80=9D,</font></div><div class=3D""><font face=3D"Courier =
New" style=3D"font-size: 14px;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>&nbsp; &nbsp;&nbsp;"total" : =
13045,</font></div><div class=3D""><font face=3D"Courier New" =
style=3D"font-size: 14px;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>&nbsp; &nbsp;&nbsp;"bucket" : =
5,</font></div><div class=3D""><font face=3D"Courier New" =
style=3D"font-size: 14px;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>&nbsp; &nbsp;&nbsp;"immediate" : =
1077</font></div><div class=3D""><font face=3D"Courier New" =
style=3D"font-size: 14px;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>},</font></div><div class=3D""><br =
class=3D""></div><div class=3D"">The keys are:</div><div class=3D""><ul =
class=3D"MailOutline"><li class=3D"">=E2=80=9Cimmediate=E2=80=9D is the =
number of directly dependent CPAN distributions.</li><li =
class=3D"">=E2=80=9Ctotal=E2=80=9D is the total number of dists =
dependent on it.</li><li class=3D"">=E2=80=9Cbucket=E2=80=9D chunks the =
river: bucket 5 is dists with 10k or more total dependents. Bucket 4 is =
1k up to 9999, and so on until bucket 0, which is dists that have no =
dependents.</li></ul></div><div class=3D""><br class=3D""></div><div =
class=3D"">At the moment there are 56 dists in bucket 5 (=E2=80=9Cthe =
head of the river=E2=80=9D).</div><div class=3D""><br =
class=3D""></div><div class=3D"">This file is being imported into =
MetaCPAN. For example, for Try-Tiny, have a look at:</div><div =
class=3D""><br class=3D""></div><div class=3D""><span =
class=3D"Apple-tab-span" style=3D"white-space:pre">	</span><a =
href=3D"https://fastapi.metacpan.org/distribution/Try-Tiny" =
class=3D"">https://fastapi.metacpan.org/distribution/Try-Tiny</a></div><di=
v class=3D""><br class=3D""></div><div class=3D"">At the moment this is =
being generated as a by-product of my scripts that run the PRC, generate =
the adoption list, etc. I=E2=80=99m currently working on a stand-alone =
generator for this data, which I=E2=80=99m hoping to have complete by =
PTS, so I can work on productising it with Leo Lapworth.</div><div =
class=3D""><br class=3D""></div><div class=3D"">Neil</div><div =
class=3D""><br class=3D""></div><div class=3D""><br =
class=3D""></div></body></html>=

--Apple-Mail=_3F288D22-0E71-4E7B-A3D8-B124770BCCC3--
0
neil
3/21/2017 9:26:28 AM
--Apple-Mail=_502B9B88-7F64-4686-B868-32174622F866
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_8BEABE1E-E25E-4FB4-9C70-A9F9D97E4ABA"


--Apple-Mail=_8BEABE1E-E25E-4FB4-9C70-A9F9D97E4ABA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On Mar 17, 2017, at 4:32 PM, James E Keenan <jkeen@verizon.net> wrote:
>=20
> perl-5.25.11 will be released on Monday March 20.  Since this will be =
the first monthly dev release to reflect the banishment of '.' from the =
default @INC, it is the first monthly release in which we can assess the =
effect of that change on CPAN.
>=20
> Up until now we've mainly relied on Andreas and Slaven's CPAN tester =
reports in this regard.  But we have a problem.  We're having problems =
with cpantesters.org such that, while we rapidly get PASS/FAIL =
indicators for a given distro on a given platform on a given version of =
perl at fast-matrix.cpantesters.org, we are having big delays at getting =
the full report of a test failure at matrix.cpantesters.org.  Currently, =
'matrix' is behind 'fast-matrix' by ... more than a few days.
>=20
> I know that Doug Bell++ and others are examining this problem, but I =
would like to try some modest workarounds.  What I would like to do is:
>=20
> 1. Compose a list of CPAN distros starting with those farthest up =
river, i.e., distros that only depend on the perl 5 core.  Within that =
set of distros I'd like to order them from most reverse dependencies to =
fewest.  Then go down river from there.
>=20
> 2. Get an up-to-date minicpan.
>=20
> 3. Use that minicpan as the source of tests of the CPAN distros.
>=20
> 4. Run something like a full CPAN test for perl 5.25.11 -- but be able =
to cut that off at either a certain number of distros -- e.g., the 5000 =
farthest upriver -- or at a certain number of level below the core =
itself.
> (a) I would like the location where the tests are run, the version of =
'cpan', 'cpaniminus', etc. to be completely distinct from whatever my =
"usual" procedure is on a given platform -- that so I can just blow away =
everything I've done once I'm through.
>=20
> 5. Capture reports of test failures so that we can identify their =
cause -- e.g., is this failure due to:
>=20

I don't know if this would be helpful, but I've been tracking all of the =
modules I've been reporting here. Feel free to scribble there if you =
like so we don't duplicate effort and reports.

https://github.com/toddr/perl/issues/14 =
<https://github.com/toddr/perl/issues/14>

Todd


--Apple-Mail=_8BEABE1E-E25E-4FB4-9C70-A9F9D97E4ABA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" =
class=3D""><br class=3D""><div><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Mar 17, 2017, at 4:32 PM, James E Keenan &lt;<a =
href=3D"mailto:jkeen@verizon.net" class=3D"">jkeen@verizon.net</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D"">perl-5.25.11 will be released on Monday March 20. &nbsp;Since =
this will be the first monthly dev release to reflect the banishment of =
'.' from the default @INC, it is the first monthly release in which we =
can assess the effect of that change on CPAN.<br class=3D""><br =
class=3D"">Up until now we've mainly relied on Andreas and Slaven's CPAN =
tester reports in this regard. &nbsp;But we have a problem. &nbsp;We're =
having problems with <a href=3D"http://cpantesters.org" =
class=3D"">cpantesters.org</a> such that, while we rapidly get PASS/FAIL =
indicators for a given distro on a given platform on a given version of =
perl at <a href=3D"http://fast-matrix.cpantesters.org" =
class=3D"">fast-matrix.cpantesters.org</a>, we are having big delays at =
getting the full report of a test failure at <a =
href=3D"http://matrix.cpantesters.org" =
class=3D"">matrix.cpantesters.org</a>. &nbsp;Currently, 'matrix' is =
behind 'fast-matrix' by ... more than a few days.<br class=3D""><br =
class=3D"">I know that Doug Bell++ and others are examining this =
problem, but I would like to try some modest workarounds. &nbsp;What I =
would like to do is:<br class=3D""><br class=3D"">1. Compose a list of =
CPAN distros starting with those farthest up river, i.e., distros that =
only depend on the perl 5 core. &nbsp;Within that set of distros I'd =
like to order them from most reverse dependencies to fewest. &nbsp;Then =
go down river from there.<br class=3D""><br class=3D"">2. Get an =
up-to-date minicpan.<br class=3D""><br class=3D"">3. Use that minicpan =
as the source of tests of the CPAN distros.<br class=3D""><br =
class=3D"">4. Run something like a full CPAN test for perl 5.25.11 -- =
but be able to cut that off at either a certain number of distros -- =
e.g., the 5000 farthest upriver -- or at a certain number of level below =
the core itself.<br class=3D"">(a) I would like the location where the =
tests are run, the version of 'cpan', 'cpaniminus', etc. to be =
completely distinct from whatever my "usual" procedure is on a given =
platform -- that so I can just blow away everything I've done once I'm =
through.<br class=3D""><br class=3D"">5. Capture reports of test =
failures so that we can identify their cause -- e.g., is this failure =
due to:<br class=3D""><br class=3D""></div></div></blockquote><br =
class=3D""></div><div>I don't know if this would be helpful, but I've =
been tracking all of the modules I've been reporting here. Feel free to =
scribble there if you like so we don't duplicate effort and =
reports.</div><div><br class=3D""></div><div><a =
href=3D"https://github.com/toddr/perl/issues/14" =
class=3D"">https://github.com/toddr/perl/issues/14</a></div><div =
class=3D""><br class=3D""></div><div class=3D"">Todd</div><div =
class=3D""><br class=3D""></div></body></html>=

--Apple-Mail=_8BEABE1E-E25E-4FB4-9C70-A9F9D97E4ABA--

--Apple-Mail=_502B9B88-7F64-4686-B868-32174622F866
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJ7jCCBK8w
ggOXoAMCAQICEQDgI8sVEoNTia1hbnpUZ2shMA0GCSqGSIb3DQEBCwUAMG8xCzAJBgNVBAYTAlNF
MRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5l
dHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3QwHhcNMTQxMjIyMDAwMDAw
WhcNMjAwNTMwMTA0ODM4WjCBmzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hl
c3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxQTA/BgNV
BAMTOENPTU9ETyBTSEEtMjU2IENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWls
IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAibEN2npTGU5wUh28VqYGJre4SeCW
51Gr8fBaE0kVo7SMG2C8elFCp3mMpCLfF2FOkdV2IwoU00oCf7YdCYBupQQ92bq7Fv6hh6kuQ1JD
FnyvMlDIpk9a6QjYz5MlnHuI6DBk5qT4VoD9KiQUMxeZrETlaYujRgZLwjPU6UCfBrCxrJNAubUI
kzqcKlOjENs9IGE8VQOO2U52JQIhKfqjfHF2T+7hX4Hp+1SA28N7NVK3hN4iPSwwLTF/Wb1SN7Az
aS1D6/rWpfGXd2dRjNnuJ+u8pQc4doykqTj/34z1A6xJvsr3c5k6DzKrnJU6Ez0ORjpXdGFQvsZA
P8vk4p+iIQIDAQABo4IBFzCCARMwHwYDVR0jBBgwFoAUrb2YejS0Jvf6xCZU7wO94CTLVBowHQYD
VR0OBBYEFJJha4LhoqCqT+xn8cKj97SAAMHsMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAG
AQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAw
RAYDVR0fBD0wOzA5oDegNYYzaHR0cDovL2NybC51c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJu
YWxDQVJvb3QuY3JsMDUGCCsGAQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNl
cnRydXN0LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAGypurFXBOquIxdjtzVXzqmthK8AJECOZD8Vm
am+x9bS1d14PAmEA330F/hKzpICAAPz7HVtqcgIKQbwFusFY1SbC6tVNhPv+gpjPWBvjImOcUvi7
BTarfVil3qs7Y+Xa1XPv7OD7e+Kj//BCI5zKto1NPuRLGAOyqC3U2LtCS5BphRDbpjc06HvgARCl
nMo6x59PiDRuimXQGoq7qdzKyjbR9PzCZCk1r9axp3ER0gNDsY8+muyeMlP0dpLKhjQHuSzK5hxK
2JkNwYbikJL7WkJqIyEQ6WXH9dW7fuqMhSACYurROgcsWcWZM/I4ieW26RZ6H3kU9koQGib6fIr7
mzCCBTcwggQfoAMCAQICEFqfByjLUeuvrntkEQDjeFUwDQYJKoZIhvcNAQELBQAwgZsxCzAJBgNV
BAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAY
BgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQg
QXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTAeFw0xNzAyMDIwMDAwMDBaFw0xODAy
MDIyMzU5NTlaMCExHzAdBgkqhkiG9w0BCQEWEHRvZGRyQGNwYW5lbC5uZXQwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCYYvj69schz61JbDrv17YWSc12e/pa34DNMehovIhPTylKDU36
CHsZQHX4R+AeMVAnZhVdkeO7e5BXArUwLTtQr7o4Da2uYEPnPth9AZpFBZQlJZ7inSDob7fIFKhs
OmiqtK2wT3/3RBSIJvtwlg1BmCnWa05JHnuybVIegHf2uvnlYR+pHQllN+KFG0Pasks+Eo2lO+5c
l5W/fbUSY+lcHZf0WoE4Abv/MEkPfiacuySpJadXfEQxEWwglQjv2qWNMuf6pTWElXNsFCoRbNZp
u5qVHdMwxV2azI9rGpRj6EfBgXDaQvDbJFIVCv0/JRSWj6jdlxyUW29XINYidbO/AgMBAAGjggHu
MIIB6jAfBgNVHSMEGDAWgBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAdBgNVHQ4EFgQUNgv8Ie5OhV7G
e9y9VQzmDfBsfNQwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwIAYDVR0lBBkwFwYIKwYB
BQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQEAwIFIDBGBgNVHSAEPzA9MDsGDCsGAQQB
sjEBAgEBATArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21vZG8ubmV0L0NQUzBdBgNV
HR8EVjBUMFKgUKBOhkxodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9TSEEyNTZDbGllbnRB
dXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGQBggrBgEFBQcBAQSBgzCBgDBYBggr
BgEFBQcwAoZMaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPU0hBMjU2Q2xpZW50QXV0aGVu
dGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29t
b2RvY2EuY29tMBsGA1UdEQQUMBKBEHRvZGRyQGNwYW5lbC5uZXQwDQYJKoZIhvcNAQELBQADggEB
ADZ/Wcb9bxQjk3gf1VCP3S+2zPF0LAL+m8ZZbRa4BAVsUiJSu0qqPWjbqOMxHqC7HyRcMiz5pHCf
CIOoxDBAN0+cSnNoD6C2JnUs+29elG8WxCcSoiRTrAQk6EhU6fstyyRw7km8uTUjXponD61oMTmJ
npwmlwbUwSOMkZfiinaK9RyEYcl7OyFN5xi+HuzeL07LGr9/tEt1oJNR2V9qqLS8oTasEaLdnh+Y
t3/p6RVng6iLstW8Ma2AaLVY31Mcr+3/E4ISchFccH5L6KMPSyC33Gs9MDa68Ht54dfucH4X6fQq
lGesvUKKFhKe3XeR4PLTXyYL7LgxqwJEU/rpIWMxggPDMIIDvwIBATCBsDCBmzELMAkGA1UEBhMC
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
ChMRQ09NT0RPIENBIExpbWl0ZWQxQTA/BgNVBAMTOENPTU9ETyBTSEEtMjU2IENsaWVudCBBdXRo
ZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhBanwcoy1Hrr657ZBEA43hVMAkGBSsOAwIa
BQCgggHnMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MDMyMTE2
MTc1OVowIwYJKoZIhvcNAQkEMRYEFJAvXsoGzFBCGpyG8kDQd8zQJKlSMIHBBgkrBgEEAYI3EAQx
gbMwgbAwgZsxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNV
BAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8g
U0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIQWp8HKMtR
66+ue2QRAON4VTCBwwYLKoZIhvcNAQkQAgsxgbOggbAwgZsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBD
QSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRpb24g
YW5kIFNlY3VyZSBFbWFpbCBDQQIQWp8HKMtR66+ue2QRAON4VTANBgkqhkiG9w0BAQEFAASCAQAw
62SfmtchjD8HkvSnKchVCTJ5vnynJtBrR2yrgbMQS7/jmolYmcMyZPfoWTi0iR82rAsKlobzZacv
uVx9oMk1asxz05a+bbkCEckb+HliYRd9rRKLQxYx22t0fvVimFIJcGvbnzKK1Mm0fRzugfzvJOP1
38pxbbsJ0QAnjnUhuUrI1aDHktdtIMQ4JO8zMyo6hrssDjxNWwQUVokahtK7IB8+5ZxokWYr2wFQ
M4x3NrE2wbWR4mTDJMkgMziyz9SyQ/4oZMUk7rsqxtX6gCiBFrLfV86XbNkjey26WBoksnreUxlq
5LUzsp0oDL7eCtHdlJ3lQyWP80rxI5lRdgWqAAAAAAAA
--Apple-Mail=_502B9B88-7F64-4686-B868-32174622F866--
0
toddr
3/21/2017 4:17:58 PM
Reply: