NetBSD Problem Report #40954
From dholland@eecs.harvard.edu Wed Mar 4 06:10:33 2009
Return-Path: <dholland@eecs.harvard.edu>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
by www.NetBSD.org (Postfix) with ESMTP id 14F0763BAB8
for <gnats-bugs@gnats.NetBSD.org>; Wed, 4 Mar 2009 06:10:33 +0000 (UTC)
Message-Id: <20090304060817.A779CF897@tanaqui.eecs.harvard.edu>
Date: Wed, 4 Mar 2009 01:08:17 -0500 (EST)
From: dholland@eecs.harvard.edu
Reply-To: dholland@eecs.harvard.edu
To: gnats-bugs@gnats.NetBSD.org
Subject: lang/smlnj broken with 64-bit time_t
X-Send-Pr-Version: 3.95
>Number: 40954
>Category: pkg
>Synopsis: lang/smlnj broken with 64-bit time_t
>Confidential: no
>Severity: critical
>Priority: low
>Responsible: pkg-manager
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Mar 04 06:15:00 +0000 2009
>Closed-Date: Thu Apr 14 22:21:58 +0000 2016
>Last-Modified: Thu Apr 14 22:21:58 +0000 2016
>Originator: David A. Holland
>Release: NetBSD 5.99.7 (20090209) pkgsrc 20090213
>Organization:
>Environment:
System: NetBSD tanaqui 5.99.7 NetBSD 5.99.7 (TANAQUI) #24: Mon Feb 9 11:19:51 EST 2009 root@tanaqui:/usr/src/sys/arch/i386/compile/TANAQUI i386
Architecture: i386
Machine: i386
>Description:
smlnj blows up during the build with uncaught time exceptions.
Needless to say, the build then doesn't actually stop on error but
keeps sputtering along for a while. smlnj seems to have a really
particularly Special build system.
At least part of the problem is that they apparently saw fit to make
up their own private time structure and pass it to gettimeofday().
>How-To-Repeat:
make
>Fix:
Find someone who cares enough to wade into it?
The following might be taken as a starting point, but doesn't by any
means fully fix the problem, or fix all the problems, or something
like that.
--- src/runtime/gc/gc-stats.h.orig 2009-03-03 18:23:38.000000000 -0500
+++ src/runtime/gc/gc-stats.h 2009-03-03 18:25:04.000000000 -0500
@@ -16,6 +16,7 @@ extern void ReportVM (ml_state_t *msp, i
#define START_GC_PAUSE(HEAP) { \
if (StatsOn) { \
+ struct timeval tv; \
heap_t *__heap = (HEAP); \
stat_rec_t *__p = &(StatsBuf[NStatsRecs]); \
Unsigned32_t __n = (Addr_t)(msp->ml_allocPtr) - \
@@ -23,7 +24,10 @@ extern void ReportVM (ml_state_t *msp, i
CNTR_INCR(&(__heap->numAlloc), __n); \
__p->allocCnt = __heap->numAlloc; \
__p->numGens = 0; \
- gettimeofday(&(__p->startTime), NIL(struct timezone *)); \
+ gettimeofday(&tv, NIL(struct timezone *)); \
+ /* XXX breaks in 2038 */ \
+ __p->startTime.seconds = tv.tv_sec; \
+ __p->startTime.uSeconds = tv.tv_usec; \
} \
}
@@ -34,8 +38,11 @@ extern void ReportVM (ml_state_t *msp, i
#define STOP_GC_PAUSE() { \
if (StatsOn) { \
- gettimeofday(&(StatsBuf[NStatsRecs].stopTime), \
- NIL(struct timezone *)); \
+ struct timeval tv; \
+ gettimeofday(&tv, NIL(struct timezone *)); \
+ /* XXX breaks in 2038 */ \
+ StatsBuf[NStatsRecs].stopTime.seconds = tv.tv_sec; \
+ StatsBuf[NStatsRecs].stopTime.uSeconds = tv.tv_usec; \
STATS_FINISH(); \
} \
}
--- src/runtime/gc/init-gc.c.orig 2009-03-03 18:15:36.000000000 -0500
+++ src/runtime/gc/init-gc.c 2009-03-03 18:17:03.000000000 -0500
@@ -218,12 +218,16 @@ void InitHeap (ml_state_t *msp, bool_t i
#if defined(COLLECT_STATS)
if (StatsFD > 0) {
stat_hdr_t hdr;
+ struct timeval tv;
CNTR_ZERO(&(heap->numAlloc));
hdr.mask = STATMASK_ALLOC|STATMASK_NGENS|STATMASK_START|STATMASK_STOP;
hdr.isNewRuntime = 1;
hdr.allocSzB = params->allocSz;
hdr.numGens = params->numGens;
- gettimeofday (&(hdr.startTime), NIL(struct timezone *));
+ gettimeofday (&tv, NIL(struct timezone *));
+ /* XXX breaks in 2038 */
+ hdr.startTime.seconds = tv.tv_sec;
+ hdr.startTime.uSeconds = tv.tv_usec;
write (StatsFD, (char *)&hdr, sizeof(stat_hdr_t));
}
#endif
>Release-Note:
>Audit-Trail:
From: Christopher Richards <richards@CS.Princeton.EDU>
To: gnats-bugs@netbsd.org
Cc: "Jeremy C. Reed" <reed@reedmedia.net>
Subject: Re: pkg/40954
Date: Wed, 11 Mar 2009 18:34:00 -0400
--000e0cd22960d1938a0464df7606
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
The attached patch solves the lang/smlnj build failure under 64-bit
time_t, by way of updating the package from version 110.42 (vintage
2002) to 110.69, the most recent "working" version. In SML/NJ
parlance, the "working" version is the stable release, and the
"stable" version is the haunted-mansion, nobody-goes-there release. I
could not begin to summarize the six years of changes this update
entails.
This new version survives the build and appears to function correctly
(as tested on NetBSD/xen, -current as of 2009-03-06), but the runtime
still assumes a 32-bit time_t, and will still lose beginning in 2038.
The patch is relative to ${PKGSRCDIR}, and should be applied with
"patch -E ...".
Best,
Chris
--000e0cd22960d1938a0464df7606
Content-Type: application/octet-stream; name="lang-smlnj.diff"
Content-Disposition: attachment; filename="lang-smlnj.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fs6l4gi70
ZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9yaWcvTWFrZWZpbGUgbGFuZy9zbWxuai9NYWtl
ZmlsZQotLS0gbGFuZy9zbWxuai5vcmlnL01ha2VmaWxlCTIwMDgtMDUtMjUgMjI6MTM6MjEuMDAw
MDAwMDAwIC0wNDAwCisrKyBsYW5nL3NtbG5qL01ha2VmaWxlCTIwMDktMDMtMTEgMTY6NTc6MzQu
MDAwMDAwMDAwIC0wNDAwCkBAIC0zLDExICszLDggQEAKIAogRElTVE5BTUU9CWJvb3QuJHtCT1h9
LXVuaXgKIFBLR05BTUU9CXNtbG5qLSR7U01MX1ZFUlNJT059Ci1QS0dSRVZJU0lPTj0JMwogQ0FU
RUdPUklFUz0JbGFuZwotTUFTVEVSX1NJVEVTPQlmdHA6Ly9mbGludC5jcy55YWxlLmVkdS9wdWIv
c21sbmovd29ya2luZy8ke1NNTF9WRVJTSU9OfS8gXAotCQlodHRwOi8vc21sbmouY3MudWNoaWNh
Z28uZWR1L2Rpc3Qvd29ya2luZy8ke1NNTF9WRVJTSU9OfS8gXAotCQlmdHA6Ly9mbGludC5jcy55
YWxlLmVkdS9wdWIvc21sbmovd29ya2luZy8ke1NNTF9WRVJTSU9OfS8KK01BU1RFUl9TSVRFUz0J
aHR0cDovL3NtbG5qLmNzLnVjaGljYWdvLmVkdS9kaXN0L3dvcmtpbmcvJHtTTUxfVkVSU0lPTn0v
CiBESVNURklMRVM9CU1MUklTQy50Z3oJCQlcCiAJCWJvb3QuJHtCT1h9LXVuaXgudGd6CQlcCiAJ
CWNraXQudGd6CQkJXApAQCAtMTYsMjggKzEzLDI3IEBACiAJCWNvbXBpbGVyLnRnegkJCVwKIAkJ
Y29uZmlnLnRnegkJCVwKIAkJZVhlbmUudGd6CQkJXAorCQloZWFwMmFzbS50Z3oJCQlcCiAJCW1s
LWJ1cmcudGd6CQkJXAogCQltbC1sZXgudGd6CQkJXAotCQltbC1ubGZmaS1saWIudGd6CQlcCi0J
CW1sLW5sZmZpZ2VuLnRnegkJCVwKKwkJbWwtbHB0LnRnegkJCVwKIAkJbWwteWFjYy50Z3oJCQlc
CisJCW5sZmZpLnRnegkJCVwKKwkJcGdyYXBoLnRnegkJCVwKIAkJcnVudGltZS50Z3oJCQlcCisJ
CXNtbG5qLWMudGd6CQkJXAogCQlzbWxuai1saWIudGd6CQkJXAotCQlzeXN0ZW0udGd6CisJCXN5
c3RlbS50Z3oJCQlcCisJCXRyYWNlLWRlYnVnLXByb2ZpbGUudGd6CiAKIE1BSU5UQUlORVI9CXJp
Y2hhcmRzK25ldGJzZEBDUy5QcmluY2V0b24uRURVCiBIT01FUEFHRT0JaHR0cDovL3d3dy5zbWxu
ai5vcmcvaW5kZXguaHRtbAogQ09NTUVOVD0JUG9wdWxhciBmdW5jdGlvbmFsIGxhbmd1YWdlIGZy
b20gQmVsbCBMYWJzCiAKLVNNTF9WRVJTSU9OPQkxMTAuNDIKK1NNTF9WRVJTSU9OPQkxMTAuNjkK
IAogUEtHX0RFU1RESVJfU1VQUE9SVD0JdXNlci1kZXN0ZGlyCiAKLSMgT3RoZXIgbWlycm9yIHNp
dGVzIHRoYXQgZ2VuZXJhbGx5IGNhcnJ5IG9ubHkgcmVsZWFzZWQgdmVyc2lvbnMgb2YgU01MCi0j
IAlmdHA6Ly9yb2Rpbi5zdGFuZm9yZC5lZHUvcHViL3NtbG5qL3JlbGVhc2UvCi0jIAlmdHA6Ly9m
dHAuY2wuY2FtLmFjLnVrL01JUlJPUkVEL3NtbG5qL3JlbGVhc2UvCi0jIAlmdHA6Ly9mdHAubnR1
YS5nci9wdWIvbGFuZy9zbWxuai9yZWxlYXNlLwotCiBXUktTUkM9CQkke1dSS0RJUn0KIERJU1Rf
U1VCRElSPQlzbWxuai0ke1NNTF9WRVJTSU9OfQogVVNFX1RPT0xTKz0JZ21ha2UgcGF4CkBAIC00
Niw5ICs0Miw3IEBACiBDT05GTElDVFM9CXNtbC1uai1bMC05XSoKIAogU01MX0JBU0U9CSR7UFJF
RklYfS9saWIvc21sbmoKLVNNTF9MSUJESVI9CSR7U01MX0JBU0V9L2xpYgotU01MX0JJTkRJUj0J
JHtTTUxfQkFTRX0vYmluCi1TTUxfU0NSSVBUUz0JX2xpbmstc21sIF9ydW4tc21sIF9tbC1idWls
ZCBfbWwtbWFrZWRlcGVuZAorU01MX1NDUklQVFM9CV9oZWFwMmV4ZWMgX2xpbmstc21sIF9tbC1i
dWlsZCBfbWwtbWFrZWRlcGVuZCBfcnVuLXNtbAogCiAuaW5jbHVkZSAiLi4vLi4vbGFuZy9zbWxu
ai9NYWtlZmlsZS5jb21tb24iCiAKQEAgLTU2LDcgKzUwLDcgQEAKIAogIyBjcmVhdGUgcGFyZW50
IGRpcmVjdG9yeSBmb3IgdGhlIHJ1bnRpbWUgc3lzdGVtCiBwcmUtZXh0cmFjdDoKLQkke01LRElS
fSAke1dSS0RJUn0vc3JjIHx8ICR7VFJVRX0KKwkke01LRElSfSAke1dSS0RJUn0vYmFzZSB8fCAk
e1RSVUV9CiAKICMgbWFrZSBpdCBlYXNpZXIgdG8gcGF0Y2ggdGhlIHJ1bnRpbWUgc3lzdGVtCiBk
by1leHRyYWN0OgpAQCAtNjUsNyArNTksNyBAQAogCQljZCAke1dSS0RJUn07ICR7RVhUUkFDVF9D
TUR9CiAJJHtfUEtHX1NJTEVOVH0ke19QS0dfREVCVUd9CQkJCQlcCiAJZXh0cmFjdF9maWxlPSIk
e19ESVNURElSfS9ydW50aW1lLnRneiI7IGV4cG9ydCBleHRyYWN0X2ZpbGU7CVwKLQkJY2QgJHtX
UktESVJ9L3NyYzsgJHtFWFRSQUNUX0NNRH0KKwkJY2QgJHtXUktESVJ9L2Jhc2U7ICR7RVhUUkFD
VF9DTUR9CiAKICMgbWFrZSBzeW1saW5rcyB0byB0aGUgZGlzdCBmaWxlcwogcG9zdC1leHRyYWN0
OgpAQCAtODAsNyArNzQsNyBAQAogCQkke1NFRH0gLWUgJ3N8QFNNTF9CQVNFQHwke1NNTF9CQVNF
fXxnJwlcCiAJCQk8ICIkJHtmfS50bXAiID4gIiQke2Z9IjsJXAogCWRvbmU7CQkJCQkJXAotCWNk
ICR7V1JLRElSfS9zcmMvcnVudGltZS9vYmpzOwkJCVwKKwljZCAke1dSS0RJUn0vYmFzZS9ydW50
aW1lL29ianM7CQkJXAogCWZvciBmIGluICo7IGRvCQkJCQlcCiAJCSR7Q1B9ICIkJHtmfSIgIiQk
e2Z9LnRtcCI7CQlcCiAJCSR7U0VEfSAtZSAnc3xAQ0ZMQUdTQHwke0NGTEFHU318ZycJXApkaWZm
IC14IENWUyAtdXJOIGxhbmcvc21sbmoub3JpZy9NYWtlZmlsZS5jb21tb24gbGFuZy9zbWxuai9N
YWtlZmlsZS5jb21tb24KLS0tIGxhbmcvc21sbmoub3JpZy9NYWtlZmlsZS5jb21tb24JMjAwOC0w
NC0xMiAxODo0MzowMi4wMDAwMDAwMDAgLTA0MDAKKysrIGxhbmcvc21sbmovTWFrZWZpbGUuY29t
bW9uCTIwMDktMDMtMTEgMTY6NTY6NDQuMDAwMDAwMDAwIC0wNDAwCkBAIC0xLDQgKzEsNSBAQAog
IyAkTmV0QlNEOiBNYWtlZmlsZS5jb21tb24sdiAxLjggMjAwOC8wNC8xMiAyMjo0MzowMiBqbGFt
IEV4cCAkCisjIHVzZWQgYnkgbGFuZy9zbWxuai9NYWtlZmlsZQogCiAjIHNtbG5qIGFsc28gc3Vw
cG9ydHMgaHBwYSwgc3BhcmMsIHBwYywgbWxyaXNjICYgYWxwaGEKICMgcGtnIHN1cHBvcnQgZm9y
IHRob3NlIHBsYXRmb3JtcywgYW5kIHNheSwgc29sYXJpcy14ODYKZGlmZiAteCBDVlMgLXVyTiBs
YW5nL3NtbG5qLm9yaWcvUExJU1QgbGFuZy9zbWxuai9QTElTVAotLS0gbGFuZy9zbWxuai5vcmln
L1BMSVNUCTIwMDgtMDQtMTIgMTg6NDM6MDMuMDAwMDAwMDAwIC0wNDAwCisrKyBsYW5nL3NtbG5q
L1BMSVNUCTIwMDktMDMtMTEgMTc6MjI6MTAuMDAwMDAwMDAwIC0wNDAwCkBAIC0xLDI2MiArMSwz
MzMgQEAKLUBjb21tZW50ICROZXRCU0Q6IFBMSVNULHYgMS41IDIwMDgvMDQvMTIgMjI6NDM6MDMg
amxhbSBFeHAgJAorQGNvbW1lbnQgJE5ldEJTRCQKK2Jpbi9oZWFwMmFzbQorYmluL2hlYXAyZXhl
YworYmluL21sLWFudGxyCiBiaW4vbWwtYnVpbGQKIGJpbi9tbC1idXJnCiBiaW4vbWwtbGV4CiBi
aW4vbWwtbWFrZWRlcGVuZAogJHtQTElTVC5ubGZmaX1iaW4vbWwtbmxmZmlnZW4KK2Jpbi9tbC11
bGV4CiBiaW4vbWwteWFjYwogYmluL25vd2hlcmUKIGJpbi9zbWwKIGxpYi9zbWxuai9iaW4vLmFy
Y2gtbi1vcHN5cworbGliL3NtbG5qL2Jpbi8uaGVhcC9oZWFwMmFzbS4ke0JPWH0tJHtPU30KK2xp
Yi9zbWxuai9iaW4vLmhlYXAvbWwtYW50bHIuJHtCT1h9LSR7T1N9CiBsaWIvc21sbmovYmluLy5o
ZWFwL21sLWJ1cmcuJHtCT1h9LSR7T1N9CiBsaWIvc21sbmovYmluLy5oZWFwL21sLWxleC4ke0JP
WH0tJHtPU30KICR7UExJU1QubmxmZml9bGliL3NtbG5qL2Jpbi8uaGVhcC9tbC1ubGZmaWdlbi4k
e0JPWH0tJHtPU30KK2xpYi9zbWxuai9iaW4vLmhlYXAvbWwtdWxleC4ke0JPWH0tJHtPU30KIGxp
Yi9zbWxuai9iaW4vLmhlYXAvbWwteWFjYy4ke0JPWH0tJHtPU30KIGxpYi9zbWxuai9iaW4vLmhl
YXAvbm93aGVyZS4ke0JPWH0tJHtPU30KIGxpYi9zbWxuai9iaW4vLmhlYXAvc21sLiR7Qk9YfS0k
e09TfQogbGliL3NtbG5qL2Jpbi8ubGluay1zbWwKIGxpYi9zbWxuai9iaW4vLnJ1bi1zbWwKIGxp
Yi9zbWxuai9iaW4vLnJ1bi9ydW4uJHtCT1h9LSR7TE9XRVJfT1BTWVN9CitsaWIvc21sbmovYmlu
L2hlYXAyYXNtCitsaWIvc21sbmovYmluL2hlYXAyZXhlYworbGliL3NtbG5qL2Jpbi9tbC1hbnRs
cgogbGliL3NtbG5qL2Jpbi9tbC1idWlsZAogbGliL3NtbG5qL2Jpbi9tbC1idXJnCiBsaWIvc21s
bmovYmluL21sLWxleAogbGliL3NtbG5qL2Jpbi9tbC1tYWtlZGVwZW5kCiAke1BMSVNULm5sZmZp
fWxpYi9zbWxuai9iaW4vbWwtbmxmZmlnZW4KK2xpYi9zbWxuai9iaW4vbWwtdWxleAogbGliL3Nt
bG5qL2Jpbi9tbC15YWNjCiBsaWIvc21sbmovYmluL25vd2hlcmUKIGxpYi9zbWxuai9iaW4vc21s
Ci1saWIvc21sbmovbGliL1NNTE5KLU1MUklTQy9DTS8ke0JPWH0tdW5peC9BTFBIQS5jbQotbGli
L3NtbG5qL2xpYi9TTUxOSi1NTFJJU0MvQ00vJHtCT1h9LXVuaXgvQ29udHJvbC5jbQotbGliL3Nt
bG5qL2xpYi9TTUxOSi1NTFJJU0MvQ00vJHtCT1h9LXVuaXgvR3JhcGhzLmNtCi1saWIvc21sbmov
bGliL1NNTE5KLU1MUklTQy9DTS8ke0JPWH0tdW5peC9IUFBBLmNtCi1saWIvc21sbmovbGliL1NN
TE5KLU1MUklTQy9DTS8ke0JPWH0tdW5peC9JQTMyLmNtCi1saWIvc21sbmovbGliL1NNTE5KLU1M
UklTQy9DTS8ke0JPWH0tdW5peC9MaWIuY20KLWxpYi9zbWxuai9saWIvU01MTkotTUxSSVNDL0NN
LyR7Qk9YfS11bml4L01MUklTQy5jbQotbGliL3NtbG5qL2xpYi9TTUxOSi1NTFJJU0MvQ00vJHtC
T1h9LXVuaXgvTUxUUkVFLmNtCi1saWIvc21sbmovbGliL1NNTE5KLU1MUklTQy9DTS8ke0JPWH0t
dW5peC9QUEMuY20KLWxpYi9zbWxuai9saWIvU01MTkotTUxSSVNDL0NNLyR7Qk9YfS11bml4L1NQ
QVJDLmNtCi1saWIvc21sbmovbGliL1NNTE5KLU1MUklTQy9DTS8ke0JPWH0tdW5peC9WaXN1YWwu
Y20KLWxpYi9zbWxuai9saWIvYmFzaXMuY20vQ00vJHtCT1h9LXVuaXgvYmFzaXMuY20KLWxpYi9z
bWxuai9saWIvYnVyZy1leHQuY20vQ00vJHtCT1h9LXVuaXgvYnVyZy1leHQuY20KLSR7UExJU1Qu
bmxmZml9bGliL3NtbG5qL2xpYi9jL0NNLyR7Qk9YfS11bml4L2MuY20KLSR7UExJU1QubmxmZml9
bGliL3NtbG5qL2xpYi9jL2ludGVybmFscy9DTS8ke0JPWH0tdW5peC9jLWludC5jbQotJHtQTElT
VC5ubGZmaX1saWIvc21sbmovbGliL2MvbWVtb3J5L0NNLyR7Qk9YfS11bml4L21lbW9yeS5jbQot
bGliL3NtbG5qL2xpYi9ja2l0LWxpYi5jbS9DTS8ke0JPWH0tdW5peC9ja2l0LWxpYi5jbQotbGli
L3NtbG5qL2xpYi9jbWwtbGliL0NNLyR7Qk9YfS11bml4L3NtbG5qLWxpYi5jbQotbGliL3NtbG5q
L2xpYi9jbWwtbGliL0NNLyR7Qk9YfS11bml4L3RyYWNlLWNtbC5jbQotbGliL3NtbG5qL2xpYi9j
bWwvQ00vJHtCT1h9LXVuaXgvYmFzaXMuY20KLWxpYi9zbWxuai9saWIvY21sL0NNLyR7Qk9YfS11
bml4L2NtbC1pbnRlcm5hbC5jbQotbGliL3NtbG5qL2xpYi9jbWwvQ00vJHtCT1h9LXVuaXgvY21s
LmNtCi1saWIvc21sbmovbGliL2NtbC9DTS8ke0JPWH0tdW5peC9jb3JlLWNtbC5jbQotbGliL3Nt
bG5qL2xpYi9jb250cm9scy1saWIuY20vQ00vJHtCT1h9LXVuaXgvY29udHJvbHMtbGliLmNtCi1s
aWIvc21sbmovbGliL2Rpci10b29sLmNtL0NNLyR7Qk9YfS11bml4L2Rpci10b29sLmNtCi1saWIv
c21sbmovbGliL2VYZW5lLmNtL0NNLyR7Qk9YfS11bml4L2VYZW5lLmNtCi1saWIvc21sbmovbGli
L2dybS1leHQuY20vQ00vJHtCT1h9LXVuaXgvZ3JtLWV4dC5jbQotbGliL3NtbG5qL2xpYi9oYXNo
LWNvbnMtbGliLmNtL0NNLyR7Qk9YfS11bml4L2hhc2gtY29ucy1saWIuY20KLWxpYi9zbWxuai9s
aWIvaHRtbC1saWIuY20vQ00vJHtCT1h9LXVuaXgvaHRtbC1saWIuY20KLWxpYi9zbWxuai9saWIv
aW5ldC1saWIuY20vQ00vJHtCT1h9LXVuaXgvaW5ldC1saWIuY20KLWxpYi9zbWxuai9saWIvbGV4
LWV4dC5jbS9DTS8ke0JPWH0tdW5peC9sZXgtZXh0LmNtCi1saWIvc21sbmovbGliL21ha2UtdG9v
bC5jbS9DTS8ke0JPWH0tdW5peC9tYWtlLXRvb2wuY20KLWxpYi9zbWxuai9saWIvbWwteWFjYy1s
aWIuY20vQ00vJHtCT1h9LXVuaXgvbWwteWFjYy1saWIuY20KLWxpYi9zbWxuai9saWIvbWxidXJn
LXRvb2wuY20vQ00vJHtCT1h9LXVuaXgvbWxidXJnLXRvb2wuY20KLWxpYi9zbWxuai9saWIvbWxs
ZXgtdG9vbC5jbS9DTS8ke0JPWH0tdW5peC9tbGxleC10b29sLmNtCi1saWIvc21sbmovbGliL21s
cmlzYy10b29scy9DTS8ke0JPWH0tdW5peC9tYXRjaC1jb21waWxlci5jbQotbGliL3NtbG5qL2xp
Yi9tbHJpc2MtdG9vbHMvQ00vJHtCT1h9LXVuaXgvcGFyc2VyLmNtCi1saWIvc21sbmovbGliL21s
cmlzYy10b29scy9DTS8ke0JPWH0tdW5peC9wcC5jbQotbGliL3NtbG5qL2xpYi9tbHJpc2MtdG9v
bHMvQ00vJHtCT1h9LXVuaXgvcHJlYy1wYXJzZXIuY20KLWxpYi9zbWxuai9saWIvbWxyaXNjLXRv
b2xzL0NNLyR7Qk9YfS11bml4L3NtbC1hc3QuY20KLWxpYi9zbWxuai9saWIvbWxyaXNjLXRvb2xz
L0NNLyR7Qk9YfS11bml4L3NvdXJjZS1tYXAuY20KLWxpYi9zbWxuai9saWIvbWx5YWNjLXRvb2wu
Y20vQ00vJHtCT1h9LXVuaXgvbWx5YWNjLXRvb2wuY20KLWxpYi9zbWxuai9saWIvbm93ZWItdG9v
bC5jbS9DTS8ke0JPWH0tdW5peC9ub3dlYi10b29sLmNtCi1saWIvc21sbmovbGliL253LWV4dC5j
bS9DTS8ke0JPWH0tdW5peC9udy1leHQuY20KK2xpYi9zbWxuai9saWIvU01MTkotQkFTSVMvLmNt
LyR7Qk9YfS11bml4L2Jhc2lzLmNtCitsaWIvc21sbmovbGliL1NNTE5KLUxJQi9Db250cm9scy8u
Y20vJHtCT1h9LXVuaXgvY29udHJvbHMtbGliLmNtCitsaWIvc21sbmovbGliL1NNTE5KLUxJQi9I
VE1MLy5jbS8ke0JPWH0tdW5peC9odG1sLWxpYi5jbQorbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIv
UFAvLmNtLyR7Qk9YfS11bml4L3BwLWxpYi5jbQorbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIvVXRp
bC8uY20vJHtCT1h9LXVuaXgvc21sbmotbGliLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MLVlB
Q0MtTElCLy5jbS8ke0JPWH0tdW5peC9tbC15YWNjLWxpYi5jbQorbGliL3NtbG5qL2xpYi9TTUxO
Si1NTFJJU0MvLmNtLyR7Qk9YfS11bml4L0FMUEhBLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1M
UklTQy8uY20vJHtCT1h9LXVuaXgvQU1ENjQtUGVlcGhvbGUuY20KK2xpYi9zbWxuai9saWIvU01M
TkotTUxSSVNDLy5jbS8ke0JPWH0tdW5peC9BTUQ2NC5jbQorbGliL3NtbG5qL2xpYi9TTUxOSi1N
TFJJU0MvLmNtLyR7Qk9YfS11bml4L0NDYWxsLVZhcmFyZy5jbQorbGliL3NtbG5qL2xpYi9TTUxO
Si1NTFJJU0MvLmNtLyR7Qk9YfS11bml4L0NDYWxsLXNwYXJjLmNtCitsaWIvc21sbmovbGliL1NN
TE5KLU1MUklTQy8uY20vJHtCT1h9LXVuaXgvQ0NhbGwteDg2LTY0LmNtCitsaWIvc21sbmovbGli
L1NNTE5KLU1MUklTQy8uY20vJHtCT1h9LXVuaXgvQ0NhbGwteDg2LmNtCitsaWIvc21sbmovbGli
L1NNTE5KLU1MUklTQy8uY20vJHtCT1h9LXVuaXgvQ0NhbGwuY20KK2xpYi9zbWxuai9saWIvU01M
TkotTUxSSVNDLy5jbS8ke0JPWH0tdW5peC9Db250cm9sLmNtCitsaWIvc21sbmovbGliL1NNTE5K
LU1MUklTQy8uY20vJHtCT1h9LXVuaXgvR3JhcGhzLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1M
UklTQy8uY20vJHtCT1h9LXVuaXgvSFBQQS5jbQorbGliL3NtbG5qL2xpYi9TTUxOSi1NTFJJU0Mv
LmNtLyR7Qk9YfS11bml4L0lBMzItUGVlcGhvbGUuY20KK2xpYi9zbWxuai9saWIvU01MTkotTUxS
SVNDLy5jbS8ke0JPWH0tdW5peC9JQTMyLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8u
Y20vJHtCT1h9LXVuaXgvTGliLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8uY20vJHtC
T1h9LXVuaXgvTUxSSVNDLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8uY20vJHtCT1h9
LXVuaXgvTUxUUkVFLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8uY20vJHtCT1h9LXVu
aXgvUFBDLmNtCitsaWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8uY20vJHtCT1h9LXVuaXgvUGVl
cGhvbGUuY20KK2xpYi9zbWxuai9saWIvU01MTkotTUxSSVNDLy5jbS8ke0JPWH0tdW5peC9SQS5j
bQorbGliL3NtbG5qL2xpYi9TTUxOSi1NTFJJU0MvLmNtLyR7Qk9YfS11bml4L1NQQVJDLmNtCits
aWIvc21sbmovbGliL1NNTE5KLU1MUklTQy8uY20vJHtCT1h9LXVuaXgvU3RhZ2VkQWxsb2MuY20K
K2xpYi9zbWxuai9saWIvU01MTkotTUxSSVNDLy5jbS8ke0JPWH0tdW5peC9WaXN1YWwuY20KK2xp
Yi9zbWxuai9saWIvYnVyZy1leHQuY20vLmNtLyR7Qk9YfS11bml4L2J1cmctZXh0LmNtCiske1BM
SVNULm5sZmZpfWxpYi9zbWxuai9saWIvYy8uY20vJHtCT1h9LXVuaXgvYy5jbQorJHtQTElTVC5u
bGZmaX1saWIvc21sbmovbGliL2MvaW50ZXJuYWxzLy5jbS8ke0JPWH0tdW5peC9jLWludC5jbQor
JHtQTElTVC5ubGZmaX1saWIvc21sbmovbGliL2MvbWVtb3J5Ly5jbS8ke0JPWH0tdW5peC9tZW1v
cnkuY20KK2xpYi9zbWxuai9saWIvY2tpdC1saWIuY20vLmNtLyR7Qk9YfS11bml4L2NraXQtbGli
LmNtCitsaWIvc21sbmovbGliL2NtbC1saWIvLmNtLyR7Qk9YfS11bml4L3NtbG5qLWxpYi5jbQor
bGliL3NtbG5qL2xpYi9jbWwtbGliLy5jbS8ke0JPWH0tdW5peC90cmFjZS1jbWwuY20KK2xpYi9z
bWxuai9saWIvY21sLy5jbS8ke0JPWH0tdW5peC9iYXNpcy5jbQorbGliL3NtbG5qL2xpYi9jbWwv
LmNtLyR7Qk9YfS11bml4L2NtbC1pbnRlcm5hbC5jbQorbGliL3NtbG5qL2xpYi9jbWwvLmNtLyR7
Qk9YfS11bml4L2NtbC5jbQorbGliL3NtbG5qL2xpYi9jbWwvLmNtLyR7Qk9YfS11bml4L2NvcmUt
Y21sLmNtCitsaWIvc21sbmovbGliL2Rpci10b29sLmNtLy5jbS8ke0JPWH0tdW5peC9kaXItdG9v
bC5jbQorbGliL3NtbG5qL2xpYi9lWGVuZS5jbS8uY20vJHtCT1h9LXVuaXgvZVhlbmUuY20KK2xp
Yi9zbWxuai9saWIvZ3JtLWV4dC5jbS8uY20vJHtCT1h9LXVuaXgvZ3JtLWV4dC5jbQorbGliL3Nt
bG5qL2xpYi9oYXNoLWNvbnMtbGliLmNtLy5jbS8ke0JPWH0tdW5peC9oYXNoLWNvbnMtbGliLmNt
CitsaWIvc21sbmovbGliL2luZXQtbGliLmNtLy5jbS8ke0JPWH0tdW5peC9pbmV0LWxpYi5jbQor
bGliL3NtbG5qL2xpYi9qc29uLWxpYi5jbS8uY20vJHtCT1h9LXVuaXgvanNvbi1saWIuY20KK2xp
Yi9zbWxuai9saWIvbGV4LWV4dC5jbS8uY20vJHtCT1h9LXVuaXgvbGV4LWV4dC5jbQorbGliL3Nt
bG5qL2xpYi9tYWtlLXRvb2wuY20vLmNtLyR7Qk9YfS11bml4L21ha2UtdG9vbC5jbQorbGliL3Nt
bG5qL2xpYi9tbC1hbnRsci10b29sLmNtLy5jbS8ke0JPWH0tdW5peC9tbC1hbnRsci10b29sLmNt
CitsaWIvc21sbmovbGliL21sLWxwdC1saWIuY20vLmNtLyR7Qk9YfS11bml4L21sLWxwdC1saWIu
Y20KK2xpYi9zbWxuai9saWIvbWwtdWxleC10b29sLmNtLy5jbS8ke0JPWH0tdW5peC9tbC11bGV4
LXRvb2wuY20KK2xpYi9zbWxuai9saWIvbWxidXJnLXRvb2wuY20vLmNtLyR7Qk9YfS11bml4L21s
YnVyZy10b29sLmNtCitsaWIvc21sbmovbGliL21sbGV4LXRvb2wuY20vLmNtLyR7Qk9YfS11bml4
L21sbGV4LXRvb2wuY20KK2xpYi9zbWxuai9saWIvbWxyaXNjLXRvb2xzLy5jbS8ke0JPWH0tdW5p
eC9tYXRjaC1jb21waWxlci5jbQorbGliL3NtbG5qL2xpYi9tbHJpc2MtdG9vbHMvLmNtLyR7Qk9Y
fS11bml4L3BhcnNlci5jbQorbGliL3NtbG5qL2xpYi9tbHJpc2MtdG9vbHMvLmNtLyR7Qk9YfS11
bml4L3BwLmNtCitsaWIvc21sbmovbGliL21scmlzYy10b29scy8uY20vJHtCT1h9LXVuaXgvcHJl
Yy1wYXJzZXIuY20KK2xpYi9zbWxuai9saWIvbWxyaXNjLXRvb2xzLy5jbS8ke0JPWH0tdW5peC9z
bWwtYXN0LmNtCitsaWIvc21sbmovbGliL21scmlzYy10b29scy8uY20vJHtCT1h9LXVuaXgvc291
cmNlLW1hcC5jbQorbGliL3NtbG5qL2xpYi9tbHlhY2MtdG9vbC5jbS8uY20vJHtCT1h9LXVuaXgv
bWx5YWNjLXRvb2wuY20KK2xpYi9zbWxuai9saWIvbm93ZWItdG9vbC5jbS8uY20vJHtCT1h9LXVu
aXgvbm93ZWItdG9vbC5jbQorbGliL3NtbG5qL2xpYi9udy1leHQuY20vLmNtLyR7Qk9YfS11bml4
L253LWV4dC5jbQogbGliL3NtbG5qL2xpYi9wYXRoY29uZmlnCi1saWIvc21sbmovbGliL3BncmFw
aC11dGlsLmNtL0NNLyR7Qk9YfS11bml4L3BncmFwaC11dGlsLmNtCi1saWIvc21sbmovbGliL3Bn
cmFwaC5jbS9DTS8ke0JPWH0tdW5peC9wZ3JhcGguY20KLWxpYi9zbWxuai9saWIvcGlja2xlLWxp
Yi5jbS9DTS8ke0JPWH0tdW5peC9waWNrbGUtbGliLmNtCi1saWIvc21sbmovbGliL3BwLWxpYi5j
bS9DTS8ke0JPWH0tdW5peC9wcC1saWIuY20KLWxpYi9zbWxuai9saWIvcmVhY3RpdmUtbGliLmNt
L0NNLyR7Qk9YfS11bml4L3JlYWN0aXZlLWxpYi5jbQotbGliL3NtbG5qL2xpYi9yZWdleHAtbGli
LmNtL0NNLyR7Qk9YfS11bml4L3JlZ2V4cC1saWIuY20KLWxpYi9zbWxuai9saWIvc2hlbGwtdG9v
bC5jbS9DTS8ke0JPWH0tdW5peC9zaGVsbC10b29sLmNtCi1saWIvc21sbmovbGliL3NtbG5qLWxp
Yi5jbS9DTS8ke0JPWH0tdW5peC9zbWxuai1saWIuY20KLWxpYi9zbWxuai9saWIvc21sbmovQ00v
JHtCT1h9LXVuaXgvY20uY20KLWxpYi9zbWxuai9saWIvc21sbmovQ00vJHtCT1h9LXVuaXgvY21i
LmNtCi1saWIvc21sbmovbGliL3NtbG5qL0NNLyR7Qk9YfS11bml4L2NvbXBpbGVyLmNtCi1saWIv
c21sbmovbGliL3NtbG5qL01MUklTQy9DTS8ke0JPWH0tdW5peC9BTFBIQS5jbQotbGliL3NtbG5q
L2xpYi9zbWxuai9NTFJJU0MvQ00vJHtCT1h9LXVuaXgvQ29udHJvbC5jbQotbGliL3NtbG5qL2xp
Yi9zbWxuai9NTFJJU0MvQ00vJHtCT1h9LXVuaXgvR3JhcGhzLmNtCi1saWIvc21sbmovbGliL3Nt
bG5qL01MUklTQy9DTS8ke0JPWH0tdW5peC9IUFBBLmNtCi1saWIvc21sbmovbGliL3NtbG5qL01M
UklTQy9DTS8ke0JPWH0tdW5peC9JQTMyLmNtCi1saWIvc21sbmovbGliL3NtbG5qL01MUklTQy9D
TS8ke0JPWH0tdW5peC9MaWIuY20KLWxpYi9zbWxuai9saWIvc21sbmovTUxSSVNDL0NNLyR7Qk9Y
fS11bml4L01MUklTQy5jbQotbGliL3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvQ00vJHtCT1h9LXVu
aXgvTUxUUkVFLmNtCi1saWIvc21sbmovbGliL3NtbG5qL01MUklTQy9DTS8ke0JPWH0tdW5peC9Q
UEMuY20KLWxpYi9zbWxuai9saWIvc21sbmovTUxSSVNDL0NNLyR7Qk9YfS11bml4L1NQQVJDLmNt
Ci1saWIvc21sbmovbGliL3NtbG5qL01MUklTQy9DTS8ke0JPWH0tdW5peC9WaXN1YWwuY20KLWxp
Yi9zbWxuai9saWIvc21sbmovY20vQ00vJHtCT1h9LXVuaXgvY20uY20KLWxpYi9zbWxuai9saWIv
c21sbmovY20vQ00vJHtCT1h9LXVuaXgvdG9vbHMuY20KLWxpYi9zbWxuai9saWIvc21sbmovY21i
L0NNLyR7Qk9YfS11bml4L2FscGhhMzItdW5peC5jbQotbGliL3NtbG5qL2xpYi9zbWxuai9jbWIv
Q00vJHtCT1h9LXVuaXgvY3VycmVudC5jbQotbGliL3NtbG5qL2xpYi9zbWxuai9jbWIvQ00vJHtC
T1h9LXVuaXgvaHBwYS11bml4LmNtCi1saWIvc21sbmovbGliL3NtbG5qL2NtYi9DTS8ke0JPWH0t
dW5peC9wcGMtbWFjb3MuY20KLWxpYi9zbWxuai9saWIvc21sbmovY21iL0NNLyR7Qk9YfS11bml4
L3BwYy11bml4LmNtCi1saWIvc21sbmovbGliL3NtbG5qL2NtYi9DTS8ke0JPWH0tdW5peC9zcGFy
Yy11bml4LmNtCi1saWIvc21sbmovbGliL3NtbG5qL2NtYi9DTS8ke0JPWH0tdW5peC94ODYtdW5p
eC5jbQotbGliL3NtbG5qL2xpYi9zbWxuai9jbWIvQ00vJHtCT1h9LXVuaXgveDg2LXdpbjMyLmNt
Ci1saWIvc21sbmovbGliL3NtbG5qL2NvbXBpbGVyL0NNLyR7Qk9YfS11bml4L2FsbC5jbQotbGli
L3NtbG5qL2xpYi9zbWxuai9jb21waWxlci9DTS8ke0JPWH0tdW5peC9hbHBoYTMyLmNtCi1saWIv
c21sbmovbGliL3NtbG5qL2NvbXBpbGVyL0NNLyR7Qk9YfS11bml4L2NvbXBpbGVyLmNtCi1saWIv
c21sbmovbGliL3NtbG5qL2NvbXBpbGVyL0NNLyR7Qk9YfS11bml4L2N1cnJlbnQuY20KLWxpYi9z
bWxuai9saWIvc21sbmovY29tcGlsZXIvQ00vJHtCT1h9LXVuaXgvaHBwYS5jbQotbGliL3NtbG5q
L2xpYi9zbWxuai9jb21waWxlci9DTS8ke0JPWH0tdW5peC9taW5pbWFsLW9ubHkuY20KLWxpYi9z
bWxuai9saWIvc21sbmovY29tcGlsZXIvQ00vJHtCT1h9LXVuaXgvbWluaW1hbC5jbQotbGliL3Nt
bG5qL2xpYi9zbWxuai9jb21waWxlci9DTS8ke0JPWH0tdW5peC9wcGMuY20KLWxpYi9zbWxuai9s
aWIvc21sbmovY29tcGlsZXIvQ00vJHtCT1h9LXVuaXgvc3BhcmMuY20KLWxpYi9zbWxuai9saWIv
c21sbmovY29tcGlsZXIvQ00vJHtCT1h9LXVuaXgveDg2LmNtCi1saWIvc21sbmovbGliL3NtbG5q
L2luaXQvQ00vJHtCT1h9LXVuaXgvaW5pdC5jbWkKLWxpYi9zbWxuai9saWIvc21sbmovaW50ZXJu
YWwvQ00vJHtCT1h9LXVuaXgvY20tbGliLmNtCi1saWIvc21sbmovbGliL3NtbG5qL2ludGVybmFs
L0NNLyR7Qk9YfS11bml4L2NtLXNpZy1saWIuY20KLWxpYi9zbWxuai9saWIvc21sbmovaW50ZXJu
YWwvQ00vJHtCT1h9LXVuaXgvY20wLmNtCi1saWIvc21sbmovbGliL3NtbG5qL2ludGVybmFsL0NN
LyR7Qk9YfS11bml4L2ludHN5cy5jbQotbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbC9DTS8k
e0JPWH0tdW5peC9zcmNwYXRoLWxpYi5jbQotbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wL0NN
LyR7Qk9YfS11bml4L2FscGhhMzIuY20KLWxpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC9DTS8k
e0JPWH0tdW5peC9iYXNpY3MuY20KLWxpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC9DTS8ke0JP
WH0tdW5peC9jb3JlLmNtCi1saWIvc21sbmovbGliL3NtbG5qL3Zpc2NvbXAvQ00vJHtCT1h9LXVu
aXgvZGVidWdwcm9mLmNtCi1saWIvc21sbmovbGliL3NtbG5qL3Zpc2NvbXAvQ00vJHtCT1h9LXVu
aXgvZWxhYmRhdGEuY20KLWxpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC9DTS8ke0JPWH0tdW5p
eC9lbGFib3JhdGUuY20KLWxpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC9DTS8ke0JPWH0tdW5p
eC9leGVjdXRlLmNtCi1saWIvc21sbmovbGliL3NtbG5qL3Zpc2NvbXAvQ00vJHtCT1h9LXVuaXgv
aHBwYS5jbQotbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wL0NNLyR7Qk9YfS11bml4L3BhcnNl
ci5jbQotbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wL0NNLyR7Qk9YfS11bml4L3BwYy5jbQot
bGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wL0NNLyR7Qk9YfS11bml4L3NwYXJjLmNtCi1saWIv
c21sbmovbGliL3NtbG5qL3Zpc2NvbXAvQ00vJHtCT1h9LXVuaXgveDg2LmNtCi1saWIvc21sbmov
bGliL3VuaXgtbGliLmNtL0NNLyR7Qk9YfS11bml4L3VuaXgtbGliLmNtCi1AZGlycm0gbGliL3Nt
bG5qL2xpYi91bml4LWxpYi5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIv
dW5peC1saWIuY20vQ00KK2xpYi9zbWxuai9saWIvcGdyYXBoLXV0aWwuY20vLmNtLyR7Qk9YfS11
bml4L3BncmFwaC11dGlsLmNtCitsaWIvc21sbmovbGliL3BncmFwaC5jbS8uY20vJHtCT1h9LXVu
aXgvcGdyYXBoLmNtCitsaWIvc21sbmovbGliL3BpY2tsZS1saWIuY20vLmNtLyR7Qk9YfS11bml4
L3BpY2tsZS1saWIuY20KK2xpYi9zbWxuai9saWIvcmVhY3RpdmUtbGliLmNtLy5jbS8ke0JPWH0t
dW5peC9yZWFjdGl2ZS1saWIuY20KK2xpYi9zbWxuai9saWIvcmVnZXhwLWxpYi5jbS8uY20vJHtC
T1h9LXVuaXgvcmVnZXhwLWxpYi5jbQorbGliL3NtbG5qL2xpYi9zaGVsbC10b29sLmNtLy5jbS8k
e0JPWH0tdW5peC9zaGVsbC10b29sLmNtCitsaWIvc21sbmovbGliL3NtbG5qLXRkcC8uY20vJHtC
T1h9LXVuaXgvYmFjay10cmFjZS5jbQorbGliL3NtbG5qL2xpYi9zbWxuai10ZHAvLmNtLyR7Qk9Y
fS11bml4L2NvdmVyYWdlLmNtCitsaWIvc21sbmovbGliL3NtbG5qLXRkcC8uY20vJHtCT1h9LXVu
aXgvcGx1Z2lucy5jbQorbGliL3NtbG5qL2xpYi9zbWxuai8uY20vJHtCT1h9LXVuaXgvY20uY20K
K2xpYi9zbWxuai9saWIvc21sbmovLmNtLyR7Qk9YfS11bml4L2NtYi5jbQorbGliL3NtbG5qL2xp
Yi9zbWxuai8uY20vJHtCT1h9LXVuaXgvY29tcGlsZXIuY20KK2xpYi9zbWxuai9saWIvc21sbmov
LmNtLyR7Qk9YfS11bml4L2luc3RhbGxlci5jbQorbGliL3NtbG5qL2xpYi9zbWxuai8uY20vJHtC
T1h9LXVuaXgvbGlicmFyeS1pbnN0YWxsLmNtCitsaWIvc21sbmovbGliL3NtbG5qL01MUklTQy8u
Y20vJHtCT1h9LXVuaXgvQUxQSEEuY20KK2xpYi9zbWxuai9saWIvc21sbmovTUxSSVNDLy5jbS8k
e0JPWH0tdW5peC9BTUQ2NC5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9Y
fS11bml4L0NvbnRyb2wuY20KK2xpYi9zbWxuai9saWIvc21sbmovTUxSSVNDLy5jbS8ke0JPWH0t
dW5peC9HcmFwaHMuY20KK2xpYi9zbWxuai9saWIvc21sbmovTUxSSVNDLy5jbS8ke0JPWH0tdW5p
eC9IUFBBLmNtCitsaWIvc21sbmovbGliL3NtbG5qL01MUklTQy8uY20vJHtCT1h9LXVuaXgvSUEz
Mi5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9YfS11bml4L0xpYi5jbQor
bGliL3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9YfS11bml4L01MUklTQy5jbQorbGli
L3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9YfS11bml4L01MVFJFRS5jbQorbGliL3Nt
bG5qL2xpYi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9YfS11bml4L1BQQy5jbQorbGliL3NtbG5qL2xp
Yi9zbWxuai9NTFJJU0MvLmNtLyR7Qk9YfS11bml4L1NQQVJDLmNtCitsaWIvc21sbmovbGliL3Nt
bG5qL01MUklTQy8uY20vJHtCT1h9LXVuaXgvVmlzdWFsLmNtCitsaWIvc21sbmovbGliL3NtbG5q
L2Jhc2lzLy5jbS8ke0JPWH0tdW5peC9iYXNpcy5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9jbS8u
Y20vJHtCT1h9LXVuaXgvY20uY20KK2xpYi9zbWxuai9saWIvc21sbmovY20vLmNtLyR7Qk9YfS11
bml4L3Rvb2xzLmNtCitsaWIvc21sbmovbGliL3NtbG5qL2NtYi8uY20vJHtCT1h9LXVuaXgvYWxw
aGEzMi11bml4LmNtCitsaWIvc21sbmovbGliL3NtbG5qL2NtYi8uY20vJHtCT1h9LXVuaXgvYW1k
NjQtdW5peC5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9jbWIvLmNtLyR7Qk9YfS11bml4L2N1cnJl
bnQuY20KK2xpYi9zbWxuai9saWIvc21sbmovY21iLy5jbS8ke0JPWH0tdW5peC9ocHBhLXVuaXgu
Y20KK2xpYi9zbWxuai9saWIvc21sbmovY21iLy5jbS8ke0JPWH0tdW5peC9wcGMtbWFjb3MuY20K
K2xpYi9zbWxuai9saWIvc21sbmovY21iLy5jbS8ke0JPWH0tdW5peC9wcGMtdW5peC5jbQorbGli
L3NtbG5qL2xpYi9zbWxuai9jbWIvLmNtLyR7Qk9YfS11bml4L3NwYXJjLXVuaXguY20KK2xpYi9z
bWxuai9saWIvc21sbmovY21iLy5jbS8ke0JPWH0tdW5peC94ODYtdW5peC5jbQorbGliL3NtbG5q
L2xpYi9zbWxuai9jbWIvLmNtLyR7Qk9YfS11bml4L3g4Ni13aW4zMi5jbQorbGliL3NtbG5qL2xp
Yi9zbWxuai9jb21waWxlci8uY20vJHtCT1h9LXVuaXgvYWxsLmNtCitsaWIvc21sbmovbGliL3Nt
bG5qL2NvbXBpbGVyLy5jbS8ke0JPWH0tdW5peC9hbHBoYTMyLmNtCitsaWIvc21sbmovbGliL3Nt
bG5qL2NvbXBpbGVyLy5jbS8ke0JPWH0tdW5peC9hbWQ2NC5jbQorbGliL3NtbG5qL2xpYi9zbWxu
ai9jb21waWxlci8uY20vJHtCT1h9LXVuaXgvY29tcGlsZXIuY20KK2xpYi9zbWxuai9saWIvc21s
bmovY29tcGlsZXIvLmNtLyR7Qk9YfS11bml4L2N1cnJlbnQuY20KK2xpYi9zbWxuai9saWIvc21s
bmovY29tcGlsZXIvLmNtLyR7Qk9YfS11bml4L2hwcGEuY20KK2xpYi9zbWxuai9saWIvc21sbmov
Y29tcGlsZXIvLmNtLyR7Qk9YfS11bml4L21pbmltYWwtb25seS5jbQorbGliL3NtbG5qL2xpYi9z
bWxuai9jb21waWxlci8uY20vJHtCT1h9LXVuaXgvbWluaW1hbC5jbQorbGliL3NtbG5qL2xpYi9z
bWxuai9jb21waWxlci8uY20vJHtCT1h9LXVuaXgvcHBjLmNtCitsaWIvc21sbmovbGliL3NtbG5q
L2NvbXBpbGVyLy5jbS8ke0JPWH0tdW5peC9zcGFyYy5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9j
b21waWxlci8uY20vJHtCT1h9LXVuaXgveDg2LmNtCitsaWIvc21sbmovbGliL3NtbG5qL2luaXQv
LmNtLyR7Qk9YfS11bml4L2luaXQuY21pCitsaWIvc21sbmovbGliL3NtbG5qL2luc3RhbGxlci8u
Y20vJHtCT1h9LXVuaXgvdXRpbC5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbC8uY20v
JHtCT1h9LXVuaXgvY20tbGliLmNtCitsaWIvc21sbmovbGliL3NtbG5qL2ludGVybmFsLy5jbS8k
e0JPWH0tdW5peC9jbS1zaWctbGliLmNtCitsaWIvc21sbmovbGliL3NtbG5qL2ludGVybmFsLy5j
bS8ke0JPWH0tdW5peC9jbTAuY20KK2xpYi9zbWxuai9saWIvc21sbmovaW50ZXJuYWwvLmNtLyR7
Qk9YfS11bml4L2ludHN5cy5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbC8uY20vJHtC
T1h9LXVuaXgvc21sbmotdmVyc2lvbi5jbQorbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbC8u
Y20vJHtCT1h9LXVuaXgvc3JjcGF0aC1saWIuY20KK2xpYi9zbWxuai9saWIvc21sbmovbWwteWFj
Yy8uY20vJHtCT1h9LXVuaXgvbWwteWFjYy1saWIuY20KK2xpYi9zbWxuai9saWIvc21sbmovc21s
bmotbGliLy5jbS8ke0JPWH0tdW5peC9jb250cm9scy1saWIuY20KK2xpYi9zbWxuai9saWIvc21s
bmovc21sbmotbGliLy5jbS8ke0JPWH0tdW5peC9odG1sLWxpYi5jbQorbGliL3NtbG5qL2xpYi9z
bWxuai9zbWxuai1saWIvLmNtLyR7Qk9YfS11bml4L3BwLWxpYi5jbQorbGliL3NtbG5qL2xpYi9z
bWxuai9zbWxuai1saWIvLmNtLyR7Qk9YfS11bml4L3NtbG5qLWxpYi5jbQorbGliL3NtbG5qL2xp
Yi9zbWxuai92aXNjb21wLy5jbS8ke0JPWH0tdW5peC9hbHBoYTMyLmNtCitsaWIvc21sbmovbGli
L3NtbG5qL3Zpc2NvbXAvLmNtLyR7Qk9YfS11bml4L2FtZDY0LmNtCitsaWIvc21sbmovbGliL3Nt
bG5qL3Zpc2NvbXAvLmNtLyR7Qk9YfS11bml4L2Jhc2ljcy5jbQorbGliL3NtbG5qL2xpYi9zbWxu
ai92aXNjb21wLy5jbS8ke0JPWH0tdW5peC9jb3JlLmNtCitsaWIvc21sbmovbGliL3NtbG5qL3Zp
c2NvbXAvLmNtLyR7Qk9YfS11bml4L2RlYnVncHJvZi5jbQorbGliL3NtbG5qL2xpYi9zbWxuai92
aXNjb21wLy5jbS8ke0JPWH0tdW5peC9lbGFiZGF0YS5jbQorbGliL3NtbG5qL2xpYi9zbWxuai92
aXNjb21wLy5jbS8ke0JPWH0tdW5peC9lbGFib3JhdGUuY20KK2xpYi9zbWxuai9saWIvc21sbmov
dmlzY29tcC8uY20vJHtCT1h9LXVuaXgvZXhlY3V0ZS5jbQorbGliL3NtbG5qL2xpYi9zbWxuai92
aXNjb21wLy5jbS8ke0JPWH0tdW5peC9ocHBhLmNtCitsaWIvc21sbmovbGliL3NtbG5qL3Zpc2Nv
bXAvLmNtLyR7Qk9YfS11bml4L3BhcnNlci5jbQorbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21w
Ly5jbS8ke0JPWH0tdW5peC9wcGMuY20KK2xpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC8uY20v
JHtCT1h9LXVuaXgvc3BhcmMuY20KK2xpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC8uY20vJHtC
T1h9LXVuaXgveDg2LmNtCitsaWIvc21sbmovbGliL3VuaXgtbGliLmNtLy5jbS8ke0JPWH0tdW5p
eC91bml4LWxpYi5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvdW5peC1saWIuY20vLmNtLyR7Qk9Y
fS11bml4CitAZGlycm0gbGliL3NtbG5qL2xpYi91bml4LWxpYi5jbS8uY20KIEBkaXJybSBsaWIv
c21sbmovbGliL3VuaXgtbGliLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21w
L0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wL0NNCitA
ZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai92aXNjb21wLy5jbS8ke0JPWH0tdW5peAorQGRpcnJt
IGxpYi9zbWxuai9saWIvc21sbmovdmlzY29tcC8uY20KIEBkaXJybSBsaWIvc21sbmovbGliL3Nt
bG5qL3Zpc2NvbXAKLUBkaXJybSBsaWIvc21sbmovbGliL3NtbG5qL2ludGVybmFsL0NNLyR7Qk9Y
fS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbC9DTQorQGRpcnJtIGxp
Yi9zbWxuai9saWIvc21sbmovc21sbmotbGliLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9z
bWxuai9saWIvc21sbmovc21sbmotbGliLy5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmov
c21sbmotbGliCitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9tbC15YWNjLy5jbS8ke0JPWH0t
dW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovbWwteWFjYy8uY20KK0BkaXJybSBsaWIv
c21sbmovbGliL3NtbG5qL21sLXlhY2MKK0BkaXJybSBsaWIvc21sbmovbGliL3NtbG5qL2ludGVy
bmFsLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovaW50ZXJuYWwv
LmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9pbnRlcm5hbAotQGRpcnJtIGxpYi9zbWxu
ai9saWIvc21sbmovaW5pdC9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvc21s
bmovaW5pdC9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovaW5zdGFsbGVyLy5jbS8ke0JP
WH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovaW5zdGFsbGVyLy5jbQorQGRpcnJt
IGxpYi9zbWxuai9saWIvc21sbmovaW5zdGFsbGVyCitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxu
ai9pbml0Ly5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovaW5pdC8u
Y20KIEBkaXJybSBsaWIvc21sbmovbGliL3NtbG5qL2luaXQKLUBkaXJybSBsaWIvc21sbmovbGli
L3NtbG5qL2NvbXBpbGVyL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxu
ai9jb21waWxlci9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovY29tcGlsZXIvLmNtLyR7
Qk9YfS11bml4CitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9jb21waWxlci8uY20KIEBkaXJy
bSBsaWIvc21sbmovbGliL3NtbG5qL2NvbXBpbGVyCi1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxu
ai9jbWIvQ00vJHtCT1h9LXVuaXgKLUBkaXJybSBsaWIvc21sbmovbGliL3NtbG5qL2NtYi9DTQor
QGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovY21iLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxp
Yi9zbWxuai9saWIvc21sbmovY21iLy5jbQogQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovY21i
Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxp
Yi9zbWxuai9saWIvc21sbmovY20vQ00KK0BkaXJybSBsaWIvc21sbmovbGliL3NtbG5qL2NtLy5j
bS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovY20vLmNtCiBAZGlycm0g
bGliL3NtbG5qL2xpYi9zbWxuai9jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovTUxSSVND
L0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9NTFJJU0MvQ00KK0Bk
aXJybSBsaWIvc21sbmovbGliL3NtbG5qL2Jhc2lzLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxp
Yi9zbWxuai9saWIvc21sbmovYmFzaXMvLmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9i
YXNpcworQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovTUxSSVNDLy5jbS8ke0JPWH0tdW5peAor
QGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovTUxSSVNDLy5jbQogQGRpcnJtIGxpYi9zbWxuai9s
aWIvc21sbmovTUxSSVNDCi1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai9DTS8ke0JPWH0tdW5p
eAotQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmovQ00KLUBkaXJybSBsaWIvc21sbmovbGliL3Nt
bG5qLWxpYi5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmotbGli
LmNtL0NNCi1AZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai1saWIuY20KK0BkaXJybSBsaWIvc21s
bmovbGliL3NtbG5qLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc21sbmov
LmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxuai10ZHAvLmNtLyR7Qk9YfS11bml4CitAZGly
cm0gbGliL3NtbG5qL2xpYi9zbWxuai10ZHAvLmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9zbWxu
ai10ZHAKIEBkaXJybSBsaWIvc21sbmovbGliL3NtbG5qCi1AZGlycm0gbGliL3NtbG5qL2xpYi9z
aGVsbC10b29sLmNtL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9zaGVsbC10
b29sLmNtL0NNCitAZGlycm0gbGliL3NtbG5qL2xpYi9zaGVsbC10b29sLmNtLy5jbS8ke0JPWH0t
dW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvc2hlbGwtdG9vbC5jbS8uY20KIEBkaXJybSBsaWIv
c21sbmovbGliL3NoZWxsLXRvb2wuY20KLUBkaXJybSBsaWIvc21sbmovbGliL3JlZ2V4cC1saWIu
Y20vQ00vJHtCT1h9LXVuaXgKLUBkaXJybSBsaWIvc21sbmovbGliL3JlZ2V4cC1saWIuY20vQ00K
K0BkaXJybSBsaWIvc21sbmovbGliL3JlZ2V4cC1saWIuY20vLmNtLyR7Qk9YfS11bml4CitAZGly
cm0gbGliL3NtbG5qL2xpYi9yZWdleHAtbGliLmNtLy5jbQogQGRpcnJtIGxpYi9zbWxuai9saWIv
cmVnZXhwLWxpYi5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvcmVhY3RpdmUtbGliLmNtL0NNLyR7
Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9yZWFjdGl2ZS1saWIuY20vQ00KK0BkaXJy
bSBsaWIvc21sbmovbGliL3JlYWN0aXZlLWxpYi5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBs
aWIvc21sbmovbGliL3JlYWN0aXZlLWxpYi5jbS8uY20KIEBkaXJybSBsaWIvc21sbmovbGliL3Jl
YWN0aXZlLWxpYi5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvcHAtbGliLmNtL0NNLyR7Qk9YfS11
bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9wcC1saWIuY20vQ00KLUBkaXJybSBsaWIvc21sbmov
bGliL3BwLWxpYi5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvcGlja2xlLWxpYi5jbS9DTS8ke0JP
WH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvcGlja2xlLWxpYi5jbS9DTQorQGRpcnJtIGxp
Yi9zbWxuai9saWIvcGlja2xlLWxpYi5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21s
bmovbGliL3BpY2tsZS1saWIuY20vLmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9waWNrbGUtbGli
LmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9wZ3JhcGguY20vQ00vJHtCT1h9LXVuaXgKLUBkaXJy
bSBsaWIvc21sbmovbGliL3BncmFwaC5jbS9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvcGdyYXBo
LmNtLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvcGdyYXBoLmNtLy5jbQog
QGRpcnJtIGxpYi9zbWxuai9saWIvcGdyYXBoLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9wZ3Jh
cGgtdXRpbC5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvcGdyYXBoLXV0
aWwuY20vQ00KK0BkaXJybSBsaWIvc21sbmovbGliL3BncmFwaC11dGlsLmNtLy5jbS8ke0JPWH0t
dW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvcGdyYXBoLXV0aWwuY20vLmNtCiBAZGlycm0gbGli
L3NtbG5qL2xpYi9wZ3JhcGgtdXRpbC5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvbnctZXh0LmNt
L0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9udy1leHQuY20vQ00KK0BkaXJy
bSBsaWIvc21sbmovbGliL253LWV4dC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21s
bmovbGliL253LWV4dC5jbS8uY20KIEBkaXJybSBsaWIvc21sbmovbGliL253LWV4dC5jbQotQGRp
cnJtIGxpYi9zbWxuai9saWIvbm93ZWItdG9vbC5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxp
Yi9zbWxuai9saWIvbm93ZWItdG9vbC5jbS9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvbm93ZWIt
dG9vbC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL25vd2ViLXRvb2wu
Y20vLmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9ub3dlYi10b29sLmNtCi1AZGlycm0gbGliL3Nt
bG5qL2xpYi9tbHlhY2MtdG9vbC5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9s
aWIvbWx5YWNjLXRvb2wuY20vQ00KK0BkaXJybSBsaWIvc21sbmovbGliL21seWFjYy10b29sLmNt
Ly5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvbWx5YWNjLXRvb2wuY20vLmNt
CiBAZGlycm0gbGliL3NtbG5qL2xpYi9tbHlhY2MtdG9vbC5jbQotQGRpcnJtIGxpYi9zbWxuai9s
aWIvbWxyaXNjLXRvb2xzL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9tbHJp
c2MtdG9vbHMvQ00KK0BkaXJybSBsaWIvc21sbmovbGliL21scmlzYy10b29scy8uY20vJHtCT1h9
LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL21scmlzYy10b29scy8uY20KIEBkaXJybSBsaWIv
c21sbmovbGliL21scmlzYy10b29scwotQGRpcnJtIGxpYi9zbWxuai9saWIvbWxsZXgtdG9vbC5j
bS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvbWxsZXgtdG9vbC5jbS9DTQor
QGRpcnJtIGxpYi9zbWxuai9saWIvbWxsZXgtdG9vbC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJy
bSBsaWIvc21sbmovbGliL21sbGV4LXRvb2wuY20vLmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9t
bGxleC10b29sLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9tbGJ1cmctdG9vbC5jbS9DTS8ke0JP
WH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvbWxidXJnLXRvb2wuY20vQ00KK0BkaXJybSBs
aWIvc21sbmovbGliL21sYnVyZy10b29sLmNtLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9z
bWxuai9saWIvbWxidXJnLXRvb2wuY20vLmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9tbGJ1cmct
dG9vbC5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvbWwteWFjYy1saWIuY20vQ00vJHtCT1h9LXVu
aXgKLUBkaXJybSBsaWIvc21sbmovbGliL21sLXlhY2MtbGliLmNtL0NNCi1AZGlycm0gbGliL3Nt
bG5qL2xpYi9tbC15YWNjLWxpYi5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvbWFrZS10b29sLmNt
L0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9tYWtlLXRvb2wuY20vQ00KK0Bk
aXJybSBsaWIvc21sbmovbGliL21sLXVsZXgtdG9vbC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJy
bSBsaWIvc21sbmovbGliL21sLXVsZXgtdG9vbC5jbS8uY20KK0BkaXJybSBsaWIvc21sbmovbGli
L21sLXVsZXgtdG9vbC5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvbWwtbHB0LWxpYi5jbS8uY20v
JHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL21sLWxwdC1saWIuY20vLmNtCitAZGly
cm0gbGliL3NtbG5qL2xpYi9tbC1scHQtbGliLmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9tbC1h
bnRsci10b29sLmNtLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvbWwtYW50
bHItdG9vbC5jbS8uY20KK0BkaXJybSBsaWIvc21sbmovbGliL21sLWFudGxyLXRvb2wuY20KK0Bk
aXJybSBsaWIvc21sbmovbGliL21ha2UtdG9vbC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBs
aWIvc21sbmovbGliL21ha2UtdG9vbC5jbS8uY20KIEBkaXJybSBsaWIvc21sbmovbGliL21ha2Ut
dG9vbC5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvbGV4LWV4dC5jbS9DTS8ke0JPWH0tdW5peAot
QGRpcnJtIGxpYi9zbWxuai9saWIvbGV4LWV4dC5jbS9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIv
bGV4LWV4dC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL2xleC1leHQu
Y20vLmNtCiBAZGlycm0gbGliL3NtbG5qL2xpYi9sZXgtZXh0LmNtCi1AZGlycm0gbGliL3NtbG5q
L2xpYi9pbmV0LWxpYi5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvaW5l
dC1saWIuY20vQ00KK0BkaXJybSBsaWIvc21sbmovbGliL2pzb24tbGliLmNtLy5jbS8ke0JPWH0t
dW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvanNvbi1saWIuY20vLmNtCitAZGlycm0gbGliL3Nt
bG5qL2xpYi9qc29uLWxpYi5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvaW5ldC1saWIuY20vLmNt
LyR7Qk9YfS11bml4CitAZGlycm0gbGliL3NtbG5qL2xpYi9pbmV0LWxpYi5jbS8uY20KIEBkaXJy
bSBsaWIvc21sbmovbGliL2luZXQtbGliLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9odG1sLWxp
Yi5jbS9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvaHRtbC1saWIuY20vQ00K
LUBkaXJybSBsaWIvc21sbmovbGliL2h0bWwtbGliLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9o
YXNoLWNvbnMtbGliLmNtL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9oYXNo
LWNvbnMtbGliLmNtL0NNCitAZGlycm0gbGliL3NtbG5qL2xpYi9oYXNoLWNvbnMtbGliLmNtLy5j
bS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvaGFzaC1jb25zLWxpYi5jbS8uY20K
IEBkaXJybSBsaWIvc21sbmovbGliL2hhc2gtY29ucy1saWIuY20KLUBkaXJybSBsaWIvc21sbmov
bGliL2dybS1leHQuY20vQ00vJHtCT1h9LXVuaXgKLUBkaXJybSBsaWIvc21sbmovbGliL2dybS1l
eHQuY20vQ00KK0BkaXJybSBsaWIvc21sbmovbGliL2dybS1leHQuY20vLmNtLyR7Qk9YfS11bml4
CitAZGlycm0gbGliL3NtbG5qL2xpYi9ncm0tZXh0LmNtLy5jbQogQGRpcnJtIGxpYi9zbWxuai9s
aWIvZ3JtLWV4dC5jbQotQGRpcnJtIGxpYi9zbWxuai9saWIvZVhlbmUuY20vQ00vJHtCT1h9LXVu
aXgKLUBkaXJybSBsaWIvc21sbmovbGliL2VYZW5lLmNtL0NNCitAZGlycm0gbGliL3NtbG5qL2xp
Yi9lWGVuZS5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL2VYZW5lLmNt
Ly5jbQogQGRpcnJtIGxpYi9zbWxuai9saWIvZVhlbmUuY20KLUBkaXJybSBsaWIvc21sbmovbGli
L2Rpci10b29sLmNtL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9kaXItdG9v
bC5jbS9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvZGlyLXRvb2wuY20vLmNtLyR7Qk9YfS11bml4
CitAZGlycm0gbGliL3NtbG5qL2xpYi9kaXItdG9vbC5jbS8uY20KIEBkaXJybSBsaWIvc21sbmov
bGliL2Rpci10b29sLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9jb250cm9scy1saWIuY20vQ00v
JHtCT1h9LXVuaXgKLUBkaXJybSBsaWIvc21sbmovbGliL2NvbnRyb2xzLWxpYi5jbS9DTQotQGRp
cnJtIGxpYi9zbWxuai9saWIvY29udHJvbHMtbGliLmNtCi1AZGlycm0gbGliL3NtbG5qL2xpYi9j
bWwvQ00vJHtCT1h9LXVuaXgKLUBkaXJybSBsaWIvc21sbmovbGliL2NtbC9DTQotQGRpcnJtIGxp
Yi9zbWxuai9saWIvY21sLWxpYi9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIv
Y21sLWxpYi9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvY21sLy5jbS8ke0JPWH0tdW5peAorQGRp
cnJtIGxpYi9zbWxuai9saWIvY21sLy5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvY21sLWxpYi8u
Y20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL2NtbC1saWIvLmNtCiBAZGlycm0g
bGliL3NtbG5qL2xpYi9jbWwtbGliCiBAZGlycm0gbGliL3NtbG5qL2xpYi9jbWwKLUBkaXJybSBs
aWIvc21sbmovbGliL2NraXQtbGliLmNtL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5q
L2xpYi9ja2l0LWxpYi5jbS9DTQorQGRpcnJtIGxpYi9zbWxuai9saWIvY2tpdC1saWIuY20vLmNt
LyR7Qk9YfS11bml4CitAZGlycm0gbGliL3NtbG5qL2xpYi9ja2l0LWxpYi5jbS8uY20KIEBkaXJy
bSBsaWIvc21sbmovbGliL2NraXQtbGliLmNtCi0ke1BMSVNULm5sZmZpfUBkaXJybSBsaWIvc21s
bmovbGliL2MvbWVtb3J5L0NNLyR7Qk9YfS11bml4Ci0ke1BMSVNULm5sZmZpfUBkaXJybSBsaWIv
c21sbmovbGliL2MvbWVtb3J5L0NNCiske1BMSVNULm5sZmZpfUBkaXJybSBsaWIvc21sbmovbGli
L2MvbWVtb3J5Ly5jbS8ke0JPWH0tdW5peAorJHtQTElTVC5ubGZmaX1AZGlycm0gbGliL3NtbG5q
L2xpYi9jL21lbW9yeS8uY20KICR7UExJU1QubmxmZml9QGRpcnJtIGxpYi9zbWxuai9saWIvYy9t
ZW1vcnkKLSR7UExJU1QubmxmZml9QGRpcnJtIGxpYi9zbWxuai9saWIvYy9pbnRlcm5hbHMvQ00v
JHtCT1h9LXVuaXgKLSR7UExJU1QubmxmZml9QGRpcnJtIGxpYi9zbWxuai9saWIvYy9pbnRlcm5h
bHMvQ00KKyR7UExJU1QubmxmZml9QGRpcnJtIGxpYi9zbWxuai9saWIvYy9pbnRlcm5hbHMvLmNt
LyR7Qk9YfS11bml4Ciske1BMSVNULm5sZmZpfUBkaXJybSBsaWIvc21sbmovbGliL2MvaW50ZXJu
YWxzLy5jbQogJHtQTElTVC5ubGZmaX1AZGlycm0gbGliL3NtbG5qL2xpYi9jL2ludGVybmFscwot
JHtQTElTVC5ubGZmaX1AZGlycm0gbGliL3NtbG5qL2xpYi9jL0NNLyR7Qk9YfS11bml4Ci0ke1BM
SVNULm5sZmZpfUBkaXJybSBsaWIvc21sbmovbGliL2MvQ00KKyR7UExJU1QubmxmZml9QGRpcnJt
IGxpYi9zbWxuai9saWIvYy8uY20vJHtCT1h9LXVuaXgKKyR7UExJU1QubmxmZml9QGRpcnJtIGxp
Yi9zbWxuai9saWIvYy8uY20KICR7UExJU1QubmxmZml9QGRpcnJtIGxpYi9zbWxuai9saWIvYwot
QGRpcnJtIGxpYi9zbWxuai9saWIvYnVyZy1leHQuY20vQ00vJHtCT1h9LXVuaXgKLUBkaXJybSBs
aWIvc21sbmovbGliL2J1cmctZXh0LmNtL0NNCitAZGlycm0gbGliL3NtbG5qL2xpYi9idXJnLWV4
dC5jbS8uY20vJHtCT1h9LXVuaXgKK0BkaXJybSBsaWIvc21sbmovbGliL2J1cmctZXh0LmNtLy5j
bQogQGRpcnJtIGxpYi9zbWxuai9saWIvYnVyZy1leHQuY20KLUBkaXJybSBsaWIvc21sbmovbGli
L2Jhc2lzLmNtL0NNLyR7Qk9YfS11bml4Ci1AZGlycm0gbGliL3NtbG5qL2xpYi9iYXNpcy5jbS9D
TQotQGRpcnJtIGxpYi9zbWxuai9saWIvYmFzaXMuY20KLUBkaXJybSBsaWIvc21sbmovbGliL1NN
TE5KLU1MUklTQy9DTS8ke0JPWH0tdW5peAotQGRpcnJtIGxpYi9zbWxuai9saWIvU01MTkotTUxS
SVNDL0NNCitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1NTFJJU0MvLmNtLyR7Qk9YfS11bml4
CitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1NTFJJU0MvLmNtCiBAZGlycm0gbGliL3NtbG5q
L2xpYi9TTUxOSi1NTFJJU0MKK0BkaXJybSBsaWIvc21sbmovbGliL1NNTE5KLU1MLVlBQ0MtTElC
Ly5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvU01MTkotTUwtWUFDQy1MSUIv
LmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1NTC1ZQUNDLUxJQgorQGRpcnJtIGxpYi9z
bWxuai9saWIvU01MTkotTElCL1V0aWwvLmNtLyR7Qk9YfS11bml4CitAZGlycm0gbGliL3NtbG5q
L2xpYi9TTUxOSi1MSUIvVXRpbC8uY20KK0BkaXJybSBsaWIvc21sbmovbGliL1NNTE5KLUxJQi9V
dGlsCitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIvUFAvLmNtLyR7Qk9YfS11bml4CitA
ZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIvUFAvLmNtCitAZGlycm0gbGliL3NtbG5qL2xp
Yi9TTUxOSi1MSUIvUFAKK0BkaXJybSBsaWIvc21sbmovbGliL1NNTE5KLUxJQi9IVE1MLy5jbS8k
e0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvU01MTkotTElCL0hUTUwvLmNtCitAZGly
cm0gbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIvSFRNTAorQGRpcnJtIGxpYi9zbWxuai9saWIvU01M
TkotTElCL0NvbnRyb2xzLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvU01M
TkotTElCL0NvbnRyb2xzLy5jbQorQGRpcnJtIGxpYi9zbWxuai9saWIvU01MTkotTElCL0NvbnRy
b2xzCitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1MSUIKK0BkaXJybSBsaWIvc21sbmovbGli
L1NNTE5KLUJBU0lTLy5jbS8ke0JPWH0tdW5peAorQGRpcnJtIGxpYi9zbWxuai9saWIvU01MTkot
QkFTSVMvLmNtCitAZGlycm0gbGliL3NtbG5qL2xpYi9TTUxOSi1CQVNJUwogQGRpcnJtIGxpYi9z
bWxuai9saWIKIEBkaXJybSBsaWIvc21sbmovYmluLy5ydW4KIEBkaXJybSBsaWIvc21sbmovYmlu
Ly5oZWFwCmRpZmYgLXggQ1ZTIC11ck4gbGFuZy9zbWxuai5vcmlnL2Rpc3RpbmZvIGxhbmcvc21s
bmovZGlzdGluZm8KLS0tIGxhbmcvc21sbmoub3JpZy9kaXN0aW5mbwkyMDA3LTAxLTE5IDA4OjA5
OjI1LjAwMDAwMDAwMCAtMDUwMAorKysgbGFuZy9zbWxuai9kaXN0aW5mbwkyMDA5LTAzLTExIDE0
OjUzOjI2LjAwMDAwMDAwMCAtMDQwMApAQCAtMSw3NCArMSw4MCBAQAogJE5ldEJTRDogZGlzdGlu
Zm8sdiAxLjExIDIwMDcvMDEvMTkgMTM6MDk6MjUgZG1jbWFoaWxsIEV4cCAkCiAKLVNIQTEgKHNt
bG5qLTExMC40Mi9NTFJJU0MudGd6KSA9IDU1MDU1ZWQwNmY3ZGQyZWYxNzhlZjM2NWMwMThmMGYz
OGY3NDA1MjgKLVJNRDE2MCAoc21sbmotMTEwLjQyL01MUklTQy50Z3opID0gNDBhZWJlMWNiZjk3
NWUwOThiZGY1MTE1ZmQxM2I0MjhlODQ1MTk1YQotU2l6ZSAoc21sbmotMTEwLjQyL01MUklTQy50
Z3opID0gMTE3MzE4NyBieXRlcwotU0hBMSAoc21sbmotMTEwLjQyL2Jvb3QucHBjLXVuaXgudGd6
KSA9IDUwYzEyZDEyM2NiYjk1MzI4M2NjMDEzMDhiZGE5NGJhNmEwMDRmMTAKLVJNRDE2MCAoc21s
bmotMTEwLjQyL2Jvb3QucHBjLXVuaXgudGd6KSA9IGI0YzJiODY4MzAyNGYyZTM3N2RjMTMxZWIz
NzcxOTBjNDk4MDgxMjIKLVNpemUgKHNtbG5qLTExMC40Mi9ib290LnBwYy11bml4LnRneikgPSA1
MDYzOTQ1IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvYm9vdC5zcGFyYy11bml4LnRneikgPSBk
OTAzNjFlOGRlNjgzYmRlOWYyY2U3NmQ1YTNmZGMwYjliY2Y3YjFmCi1STUQxNjAgKHNtbG5qLTEx
MC40Mi9ib290LnNwYXJjLXVuaXgudGd6KSA9IDliMmM0NGU2OWVlNDZlMjRiNTEzNTg5MzlhM2U4
YjQ5NGU2YmNlNTMKLVNpemUgKHNtbG5qLTExMC40Mi9ib290LnNwYXJjLXVuaXgudGd6KSA9IDUy
MTY4MTMgYnl0ZXMKLVNIQTEgKHNtbG5qLTExMC40Mi9ib290Lng4Ni11bml4LnRneikgPSA3ZTg1
YjI1NDU5ODg2MTc5YmUwYmNiOTQ5Y2Q0ODlmNjJjMGE1NDI0Ci1STUQxNjAgKHNtbG5qLTExMC40
Mi9ib290Lng4Ni11bml4LnRneikgPSAyYWY2MmU4MTk2ZGU2ZTdkYTAzY2ZkYTEwZDQ3OTliZjdh
NTYxODhlCi1TaXplIChzbWxuai0xMTAuNDIvYm9vdC54ODYtdW5peC50Z3opID0gNTE0NzAyNSBi
eXRlcwotU0hBMSAoc21sbmotMTEwLjQyL2NraXQudGd6KSA9IGY0NzU5OWRmMDE0YzljNmRjZDAy
YzBiZmNjMGZhZDVkMTQwOTQ1MWIKLVJNRDE2MCAoc21sbmotMTEwLjQyL2NraXQudGd6KSA9IDg3
YzczN2NmMDMyZjE4YzQzODEyOTdlZTg5NWYwN2M4MWY0YmQ1ZDMKLVNpemUgKHNtbG5qLTExMC40
Mi9ja2l0LnRneikgPSAxNjgwMDAgYnl0ZXMKLVNIQTEgKHNtbG5qLTExMC40Mi9jbS50Z3opID0g
YzEwMjEzMWU5NzRlOTE0MjZiYWIxY2MzMDAwNWY4ZTAyZjc2MjJiNgotUk1EMTYwIChzbWxuai0x
MTAuNDIvY20udGd6KSA9IGU4MGY2ODgwNWMzM2ZmOThkMjEzOWNkZWYwNGRmMTc5NjcwMTE0YzAK
LVNpemUgKHNtbG5qLTExMC40Mi9jbS50Z3opID0gMjAyNjMzIGJ5dGVzCi1TSEExIChzbWxuai0x
MTAuNDIvY21sLnRneikgPSA2MWYyMDExNjAzMmQyODRhMGQyZWVjZDVmMTRkZTUzNzhmZjRlYTZk
Ci1STUQxNjAgKHNtbG5qLTExMC40Mi9jbWwudGd6KSA9IGYzNzIxNDVjMTQ0NDgxNGRlMjE4NWQ1
MmNmNDIyYTVkYzdkOWNlNzAKLVNpemUgKHNtbG5qLTExMC40Mi9jbWwudGd6KSA9IDEyODQ4NSBi
eXRlcwotU0hBMSAoc21sbmotMTEwLjQyL2NvbXBpbGVyLnRneikgPSBmYmRlMjk1OWUwNWMwNDMz
MzEzMTQ1MGQxNTJhNmFjNTg5MGIyODY3Ci1STUQxNjAgKHNtbG5qLTExMC40Mi9jb21waWxlci50
Z3opID0gMDBhZjRhZDUzODJjOTNlNTlhMWE2NmQzYzljY2U1ZDEzYThjMTAyYwotU2l6ZSAoc21s
bmotMTEwLjQyL2NvbXBpbGVyLnRneikgPSA3MDQ2NjkgYnl0ZXMKLVNIQTEgKHNtbG5qLTExMC40
Mi9jb25maWcudGd6KSA9IGY3YzFiNzUwMTljMjc0ODcyZDU5OWI5ZjVhNDJjZTBlZTE5MjZjMjQK
LVJNRDE2MCAoc21sbmotMTEwLjQyL2NvbmZpZy50Z3opID0gMGNjZDgyNGRlYmI5NmRiMjdmNDE5
ODIwZjk4MTM1MjQyNDAxZjZhZgotU2l6ZSAoc21sbmotMTEwLjQyL2NvbmZpZy50Z3opID0gMTM2
NjAgYnl0ZXMKLVNIQTEgKHNtbG5qLTExMC40Mi9lWGVuZS50Z3opID0gZTIxMzUzOTMwODA0NzYz
NmRhMzRhODJmYmNjN2Q1OWE4ZjAzZWE3YQotUk1EMTYwIChzbWxuai0xMTAuNDIvZVhlbmUudGd6
KSA9IDVlYjFhMjUyNzEyNjU4N2Y0Yzg5NGFlN2U5YzIzZDhjNDIwOTUzOWMKLVNpemUgKHNtbG5q
LTExMC40Mi9lWGVuZS50Z3opID0gNjk1NDMxIGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvbWwt
YnVyZy50Z3opID0gOGM2OWZkNTFmN2ViODZiOTQxODgzZmE3YzMwOWI3ZTU0YmFmMjhlYQotUk1E
MTYwIChzbWxuai0xMTAuNDIvbWwtYnVyZy50Z3opID0gZDA1ZWVlMTRkZTU0NDNkOWEzYjQzNGVh
MGUzNWQ5MWM2MWFlYTc0MAotU2l6ZSAoc21sbmotMTEwLjQyL21sLWJ1cmcudGd6KSA9IDMxNjk2
IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvbWwtbGV4LnRneikgPSA1MjQ3MTRmOTVjZDAxNGU1
NTYyNGU5ZDFiMjcwYTc3MTAwZjI4Y2QxCi1STUQxNjAgKHNtbG5qLTExMC40Mi9tbC1sZXgudGd6
KSA9IDZlODMwYTFiNTA1MDNlYmZlOGY3NDI5Y2I2ZTY2NzRmZTNhMTc4MDUKLVNpemUgKHNtbG5q
LTExMC40Mi9tbC1sZXgudGd6KSA9IDMyMTA4IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvbWwt
bmxmZmktbGliLnRneikgPSA1MjIyY2NkYzFkOTczNzM2MGEwY2U2MGIwNTEzN2I0NzYyODJlOWYz
Ci1STUQxNjAgKHNtbG5qLTExMC40Mi9tbC1ubGZmaS1saWIudGd6KSA9IDgyMWM0NDE2NDI5YTcx
MzM3Yzc2NzYwOTNiZjM2MjVlMjZkYjE3NjEKLVNpemUgKHNtbG5qLTExMC40Mi9tbC1ubGZmaS1s
aWIudGd6KSA9IDMzNjQ1IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvbWwtbmxmZmlnZW4udGd6
KSA9IGQzZTBlMDY0ZGZkMGZkM2MxMmJkYTcyZTA5ODIyNGViZWExODBhNmEKLVJNRDE2MCAoc21s
bmotMTEwLjQyL21sLW5sZmZpZ2VuLnRneikgPSBlNWU3YTNmYmUwM2FhZTE0MTc2NWRlOWI4ZTQ0
OTVlNzk2ZTMyZWM3Ci1TaXplIChzbWxuai0xMTAuNDIvbWwtbmxmZmlnZW4udGd6KSA9IDI4ODM2
IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIvbWwteWFjYy50Z3opID0gZmY0YTA3NzA5OWE2Zjhk
MmJiOGIzMmE2NGM5ZWY0NWU4OTM1ODM0NgotUk1EMTYwIChzbWxuai0xMTAuNDIvbWwteWFjYy50
Z3opID0gNWQ5NzY3ZTUzZjYyYTJmYmNiMjcyOTY5NzkwMzRmNTg1Mjc0YTQzMAotU2l6ZSAoc21s
bmotMTEwLjQyL21sLXlhY2MudGd6KSA9IDk1NjA4IGJ5dGVzCi1TSEExIChzbWxuai0xMTAuNDIv
cnVudGltZS50Z3opID0gOTEzYjJjNGNhM2VkZWEyZmQ3ZmNjMDljNDgyNjY1ZmI5MmU1ZjU0MAot
Uk1EMTYwIChzbWxuai0xMTAuNDIvcnVudGltZS50Z3opID0gOGNlMDQ3OTI0NWIxNzY3ODk3MWU2
YWYxYTU3OThlMzU4NTU5ZDE3YwotU2l6ZSAoc21sbmotMTEwLjQyL3J1bnRpbWUudGd6KSA9IDMx
MzA1NyBieXRlcwotU0hBMSAoc21sbmotMTEwLjQyL3NtbG5qLWxpYi50Z3opID0gYzQ4YThlMTlk
NGExNDc5OWQ3NTk2Y2U4OTZmNGEyMDQwZmUxYzJiZgotUk1EMTYwIChzbWxuai0xMTAuNDIvc21s
bmotbGliLnRneikgPSBjNDAzZTkyMDZlYjkzOWUwNGU4OGU5YTM3Y2E3OTdiYmQzNDFlZjI3Ci1T
aXplIChzbWxuai0xMTAuNDIvc21sbmotbGliLnRneikgPSAyNTEyMzAgYnl0ZXMKLVNIQTEgKHNt
bG5qLTExMC40Mi9zeXN0ZW0udGd6KSA9IDBiOWY2MTA1MmE2NDEzYWMxZDM5MWE2YjdkZGY5MDM4
NzVkMTkyZmYKLVJNRDE2MCAoc21sbmotMTEwLjQyL3N5c3RlbS50Z3opID0gNWY5Y2JkZDUwZTQ3
MTYwZjMxOTBkMDgxODlmN2IxZjM1YmY2NDZjOQotU2l6ZSAoc21sbmotMTEwLjQyL3N5c3RlbS50
Z3opID0gMTc3NTQ4IGJ5dGVzCi1TSEExIChwYXRjaC1hYSkgPSAzNzBmYzk0NDYyZjYwZmNmMWIy
OGRkYWQyMjY2MzExYjE5ZDkyZWNhCi1TSEExIChwYXRjaC1hYikgPSAzZDU5NDZiMmQ3MmRlZTI1
NTE1OWFmZTZmYjI1MjQwZjhmYTdlMzA2Ci1TSEExIChwYXRjaC1hYykgPSA3YjNlYTgzN2RiMjYw
NTQyZDE0NzdjY2JlMGRiYTI0YzZhZmJjMWUyCi1TSEExIChwYXRjaC1hZCkgPSBhNDA2YmRlMmY2
ZjdlMmQ5M2Q2NTIxMzViOTRhZWZkNGI3YWNhNDk0Ci1TSEExIChwYXRjaC1hZSkgPSA1Nzk2NDAx
NDE4ZmQ5MWE3OTVmZGZlNzUwNjBjZjY1NGRkMzE1YWMxCi1TSEExIChwYXRjaC1hZikgPSBhMmI3
NWE3MzA5Mzk4YjY4Njk5OTVjYjQ2YWVlZGMxNDE2NzAwZGE0Ci1TSEExIChwYXRjaC1hZykgPSBk
YWU5Yzg5Y2NjN2FkYTk2YmQzYWM0YjJiYWUxZGE2NDI3OTAyZmI0Ci1TSEExIChwYXRjaC1haCkg
PSA0ZDFmODYxY2YxODQyNGRiMThmYmNkMTlmZDJlMTIzYjlhMGE1MjQ3Ci1TSEExIChwYXRjaC1h
aSkgPSBkZmI0NWIyYzdkNTliY2Q5MjMwZWRiMzBkNWRmZmZkNGRhYjU3ODJlCi1TSEExIChwYXRj
aC1haikgPSAyNGJiYjY1YjAyZTk3YmVjNzY3M2RjY2JmMDdmY2U5ODUzYzk0OTg0Ci1TSEExIChw
YXRjaC1haykgPSA1NTczOGMxMGU1YWRjNmI5OWQ5MDlhNzg0ZjI1NmIyNGUyNTA5OTBlCi1TSEEx
IChwYXRjaC1hbCkgPSA4Mjg0MmU4NjYyNjcwMzM2ZTEzNGYxMmUwODUxZDVmNjE0MTMyMTFkCi1T
SEExIChwYXRjaC1hbSkgPSAwNmQ4Y2IxNDUyMTdjNDZhZGE0NDBlMGQzZTc0MjBlYTk5NjUxMDY0
Ci1TSEExIChwYXRjaC1hbikgPSBkNmUxYTc1ZDVmYjY4NDIzY2UzMTgxNjIyZGU5MTljMjMzN2Ri
MmU3Ci1TSEExIChwYXRjaC1hbykgPSAxYzY2MDI0YzU5NDkyNjkyOTFjYmY2ZjgxNWJhZjYxNjJk
YjQ3ZDMxCi1TSEExIChwYXRjaC1hcCkgPSA4ZTllMjg1NDhiNGU1OGRlNjhhMTE5ODJhMzU1YTAx
MGVhOTZhYTI5Ci1TSEExIChwYXRjaC1hcSkgPSA3ZDA3MzRiNzZkNzc4ZDdmNTg0ZDJlNzBkMzI1
ZmQ3MmU2NTU0YjAxCi1TSEExIChwYXRjaC1hcikgPSA3ZTBiY2FkNjFlY2RjMzliYjBmYzAzOGVh
MDI5MjFkNjgzYmE4NjQ4CitTSEExIChzbWxuai0xMTAuNjkvTUxSSVNDLnRneikgPSA3NzA5MWEx
ZDEzMzZjMjJjNjU2ZTg1YTJkZWQ0MjQwZDk2ZmIxYWVjCitSTUQxNjAgKHNtbG5qLTExMC42OS9N
TFJJU0MudGd6KSA9IDE0YzFiNWFjNmQ1MDkzNjJhYTZkNWRhOTUxZjc5NGMzZDc4M2ViNjAKK1Np
emUgKHNtbG5qLTExMC42OS9NTFJJU0MudGd6KSA9IDE0MzUwMDEgYnl0ZXMKK1NIQTEgKHNtbG5q
LTExMC42OS9ib290Lng4Ni11bml4LnRneikgPSBmNjE2N2RiYmFkM2I5ZDVjMzZjOGMwNDYyMWI1
Y2E5NjZjODgzNmFlCitSTUQxNjAgKHNtbG5qLTExMC42OS9ib290Lng4Ni11bml4LnRneikgPSBm
ZDNlNGMzM2EwNjg2NWY4MjVlYTk4OTQyODExZDNmYzIzMTJhYTI3CitTaXplIChzbWxuai0xMTAu
NjkvYm9vdC54ODYtdW5peC50Z3opID0gNTg0NzAyNyBieXRlcworU0hBMSAoc21sbmotMTEwLjY5
L2NraXQudGd6KSA9IGQwNGM5NTMwODk5NmQ0NDIwNWM5ZjBkMmNmZDRmNWMwMjg4ZTQ2NTgKK1JN
RDE2MCAoc21sbmotMTEwLjY5L2NraXQudGd6KSA9IGU4OTk3ZThkMDZlYmI3OTYzNTVlMWMxZGU1
NTgwMWZkODFjOTFiODYKK1NpemUgKHNtbG5qLTExMC42OS9ja2l0LnRneikgPSAxOTk0MDYgYnl0
ZXMKK1NIQTEgKHNtbG5qLTExMC42OS9jbS50Z3opID0gYzEzM2EzMTZlODNjMTI4MTg0ZmY5NzZl
MTUzMTY0NDJlZDQxMTcyNgorUk1EMTYwIChzbWxuai0xMTAuNjkvY20udGd6KSA9IDlmNTE2MDhi
ZjZmMzE1NDEzMTk1NGRkMTU1YjBlMjEyYmE1NjhiMmYKK1NpemUgKHNtbG5qLTExMC42OS9jbS50
Z3opID0gMjAyMjkyIGJ5dGVzCitTSEExIChzbWxuai0xMTAuNjkvY21sLnRneikgPSA0MDc4ZWI2
ZDEzMDczMjNiMGQ2N2I1MWIxYTg2NDgxMzE0MTkzN2M5CitSTUQxNjAgKHNtbG5qLTExMC42OS9j
bWwudGd6KSA9IDc2YWY0OGI3ZmU0NmFkM2JiYzdlNjUxNDQyZDAzZjlmMDE3OWFjNWUKK1NpemUg
KHNtbG5qLTExMC42OS9jbWwudGd6KSA9IDEwNDcwOSBieXRlcworU0hBMSAoc21sbmotMTEwLjY5
L2NvbXBpbGVyLnRneikgPSBlMTllMjA4ODc0NDkwMTQ5MDM1ZWY3YmUzNTIxMzEwZDg4NzcxNWQz
CitSTUQxNjAgKHNtbG5qLTExMC42OS9jb21waWxlci50Z3opID0gNTdiMTQ5YjhhZWE4MjkwZmYy
YWNhYTg5YmQ5MDAwMTI4NDJmNjlkZgorU2l6ZSAoc21sbmotMTEwLjY5L2NvbXBpbGVyLnRneikg
PSA4MjQ4NzQgYnl0ZXMKK1NIQTEgKHNtbG5qLTExMC42OS9jb25maWcudGd6KSA9IDYyMzIzZmM1
MTVmMjJhNTY4MmJiMjZjY2U0ZTZmYWZiODFmZDhkZjgKK1JNRDE2MCAoc21sbmotMTEwLjY5L2Nv
bmZpZy50Z3opID0gMGE3MGQ3N2FiZDNiOTc0MzM3NWJjYTg2Y2MwMWEwMDcyNmFjNDY5OAorU2l6
ZSAoc21sbmotMTEwLjY5L2NvbmZpZy50Z3opID0gNTA0MTY5IGJ5dGVzCitTSEExIChzbWxuai0x
MTAuNjkvZVhlbmUudGd6KSA9IDU1ZjFjZDc5NDRiNzMyZmI1ZmFlNzY5NDFmZDc3ZjQ0N2E4MDc1
NWMKK1JNRDE2MCAoc21sbmotMTEwLjY5L2VYZW5lLnRneikgPSBlYWQyN2MzZTUyNTk1NWIxYmE2
NDk3OWRkYWNjYjhhYTMzNmNjM2M2CitTaXplIChzbWxuai0xMTAuNjkvZVhlbmUudGd6KSA9IDcx
NDU4NyBieXRlcworU0hBMSAoc21sbmotMTEwLjY5L2hlYXAyYXNtLnRneikgPSA5YTI1MDc3ZGFk
N2Y2NWU3ODU1MTVlYzg1MDg4MGE1MmMyZWUyZTQxCitSTUQxNjAgKHNtbG5qLTExMC42OS9oZWFw
MmFzbS50Z3opID0gMjNlN2JhZDc4ZjExZTI4NGQ1YWVkYWY2ZDM5OTIzNGNkOGRmNzMxYgorU2l6
ZSAoc21sbmotMTEwLjY5L2hlYXAyYXNtLnRneikgPSAxMzI3IGJ5dGVzCitTSEExIChzbWxuai0x
MTAuNjkvbWwtYnVyZy50Z3opID0gZjNhMjUyMGNkMTY2NGY0NzI4YjAzYjM5Y2Y2MGEyNjU4M2Vl
NzNlZAorUk1EMTYwIChzbWxuai0xMTAuNjkvbWwtYnVyZy50Z3opID0gNTM4OTJhMWU2MmQzMGQx
NjYzNzRjZWQxM2Q0OGJlNDliNDRkZWJjMgorU2l6ZSAoc21sbmotMTEwLjY5L21sLWJ1cmcudGd6
KSA9IDM2NjcwIGJ5dGVzCitTSEExIChzbWxuai0xMTAuNjkvbWwtbGV4LnRneikgPSA4ZTdkMzM4
ZDNjYzAzYzMwMDllZmVlMjRhZTEwYWY2ZDQ0ODgzYWFlCitSTUQxNjAgKHNtbG5qLTExMC42OS9t
bC1sZXgudGd6KSA9IDFhMjMwMjE2Yjk0NTgyNzgxODJhMjhkMzQxMmQwZmI3YzhlY2Y4MWEKK1Np
emUgKHNtbG5qLTExMC42OS9tbC1sZXgudGd6KSA9IDMzMDYxIGJ5dGVzCitTSEExIChzbWxuai0x
MTAuNjkvbWwtbHB0LnRneikgPSBhNTQzMGUzOTAwZjcwMTE3NzU5YWRkZTg0ODFjZDIyYjczYjFj
NjFiCitSTUQxNjAgKHNtbG5qLTExMC42OS9tbC1scHQudGd6KSA9IGE2NzUzMGE5MjMwYTRkOTZh
ZTY3YjY0MmZkMDRhMjhmOWY2Y2E3YjcKK1NpemUgKHNtbG5qLTExMC42OS9tbC1scHQudGd6KSA9
IDI1NzQxNyBieXRlcworU0hBMSAoc21sbmotMTEwLjY5L21sLXlhY2MudGd6KSA9IGQ4Y2Y0NGQ0
ZTgxMzE3NGNhOTM5OGI3OTI2N2RmYzUzOTcwNTI5ZDAKK1JNRDE2MCAoc21sbmotMTEwLjY5L21s
LXlhY2MudGd6KSA9IDUzYjcxZDNkNmEwZGEyN2VmZDU4NGMwNDNlZGQyMjNkYTMyYmVjM2MKK1Np
emUgKHNtbG5qLTExMC42OS9tbC15YWNjLnRneikgPSAxMDIwMjUgYnl0ZXMKK1NIQTEgKHNtbG5q
LTExMC42OS9ubGZmaS50Z3opID0gNDg0NzI3YTFkZjg5OWU2Mjg5ZjQyMWRjYTYwNzY0NmZjMjc3
ZDdhOQorUk1EMTYwIChzbWxuai0xMTAuNjkvbmxmZmkudGd6KSA9IDFkMmIyY2Q0NjY3ZGRkNjYy
MGFjNjVkMTQ4N2E3MjE4NzNkYjI4ZWEKK1NpemUgKHNtbG5qLTExMC42OS9ubGZmaS50Z3opID0g
NzUxNzYgYnl0ZXMKK1NIQTEgKHNtbG5qLTExMC42OS9wZ3JhcGgudGd6KSA9IDcxN2Y1Yjg1YzFm
OWIzMzFkZjg0OTVhNTNiNmE2MzVmYWY1NWMzODYKK1JNRDE2MCAoc21sbmotMTEwLjY5L3BncmFw
aC50Z3opID0gZjZlYjYxZmUzNDA5M2Q0MjcwMjk1M2E1NDZhM2VlN2VlMmZlNTY0NAorU2l6ZSAo
c21sbmotMTEwLjY5L3BncmFwaC50Z3opID0gNTQ1MyBieXRlcworU0hBMSAoc21sbmotMTEwLjY5
L3J1bnRpbWUudGd6KSA9IGMwMGUwODkyNTgwYjg1YTFkYjZlZTI4NWM0MjgxZjdmNWNiNzQwZGEK
K1JNRDE2MCAoc21sbmotMTEwLjY5L3J1bnRpbWUudGd6KSA9IDUyYTZiODEyZjU2ZDNmOTdlZTEx
ZTUzM2E3ZDY1MDAzZGRlYTk3Y2MKK1NpemUgKHNtbG5qLTExMC42OS9ydW50aW1lLnRneikgPSAz
MzM4ODcgYnl0ZXMKK1NIQTEgKHNtbG5qLTExMC42OS9zbWxuai1jLnRneikgPSBhMGMzMmYyNWZk
N2EzZjFiZjIzYjU4NGZjYmFiZjk5YzViNDZmNWNhCitSTUQxNjAgKHNtbG5qLTExMC42OS9zbWxu
ai1jLnRneikgPSBkZGY3NGZjZGRhYzNkMzJhMmRhNGMwNDFjYjVlMjllY2MyYmM2ZTUxCitTaXpl
IChzbWxuai0xMTAuNjkvc21sbmotYy50Z3opID0gMTA2MjcgYnl0ZXMKK1NIQTEgKHNtbG5qLTEx
MC42OS9zbWxuai1saWIudGd6KSA9IDAwNGQ3MDgyYjFiZWEzNmNlOGFjNDEyZjcwYmM3Zjc2NGYz
NjI2MjgKK1JNRDE2MCAoc21sbmotMTEwLjY5L3NtbG5qLWxpYi50Z3opID0gNjBiNGZmYmM2MWJh
MTM5ZWFjOWRkZjBkYWZkMWEyN2VmYTQ0MjQzZAorU2l6ZSAoc21sbmotMTEwLjY5L3NtbG5qLWxp
Yi50Z3opID0gMjU3NTE5IGJ5dGVzCitTSEExIChzbWxuai0xMTAuNjkvc3lzdGVtLnRneikgPSAz
Njk5OTg1ODY0NmRhM2Q5MThmNjI2MzBlYTQxMjZlNTJjYmQ5NjkzCitSTUQxNjAgKHNtbG5qLTEx
MC42OS9zeXN0ZW0udGd6KSA9IGFhZDY1ZDQyODg4ZTZjNTk0MDEwMTNiYzBmMTIyMWNlYTA3YTUy
ZGQKK1NpemUgKHNtbG5qLTExMC42OS9zeXN0ZW0udGd6KSA9IDIzOTk1MyBieXRlcworU0hBMSAo
c21sbmotMTEwLjY5L3RyYWNlLWRlYnVnLXByb2ZpbGUudGd6KSA9IDkyNTc0MGZhZGUzZGZkZTQy
MDY4YjY1ZDNmM2ZiMWFmYTNiNDcxNTkKK1JNRDE2MCAoc21sbmotMTEwLjY5L3RyYWNlLWRlYnVn
LXByb2ZpbGUudGd6KSA9IGM3MGMxNGIzYjljMDY0NmViMDBkY2M4MmZmNWNhYjU4N2M1Y2E3ZDYK
K1NpemUgKHNtbG5qLTExMC42OS90cmFjZS1kZWJ1Zy1wcm9maWxlLnRneikgPSAzOTM3IGJ5dGVz
CitTSEExIChwYXRjaC1hYikgPSAxNzhiODgwODcwMmIyZmE1NTdlZWRmZjM4NzkwMmZjZTA4MTkz
ZDkwCitTSEExIChwYXRjaC1hYykgPSBmMGNhYTAzZTMwZTE2NTI4MzM4NjkxNGMyODA1OTg5Njdj
YTBjMDBkCitTSEExIChwYXRjaC1hZCkgPSBkNjhiY2U0NmZlOTVhMWZjZDBkYTk0M2I2YTFlYmEx
YzlmMDU5MDYxCitTSEExIChwYXRjaC1hZSkgPSBmNzM2M2RhMWYxNzgxMGE4ZGJlZmIyODhlN2Ri
OTc0NWEyYjBjZDU4CitTSEExIChwYXRjaC1hZikgPSBhMmUzNDNiMTJlMzdkOTRjZmI0OTFiMTYx
YjNiMWJhMmQ5ZjQ5MjkxCitTSEExIChwYXRjaC1hZykgPSA1MTlmNDQ0OTc3YjkyNjgyNTlmZWE4
NjExMWUzYmUwYzA0MWU1ZDAwCitTSEExIChwYXRjaC1haCkgPSA4ZmZjMWUzYWEzZjI0OTU2ZGNm
ZmUzMWUyZTVlNjU4MTVmYzFjMDg1CitTSEExIChwYXRjaC1haSkgPSBhNTkxNmQ2ZGE0YWUzMWRh
NDkxMmMzYTRmOWRmNjAxYWJkNDJkZGNlCitTSEExIChwYXRjaC1haikgPSA4OWM4YmQ1MTBhNGJi
NThiOWM5ZDIzYjNiNGI5OTUxZjRmZmI1NGNkCitTSEExIChwYXRjaC1haykgPSA1NzFhNTA5OGQ3
MTVhMGFiODc4OTcyZjk3NDhlYzA1MTlmOWU5MmVmCitTSEExIChwYXRjaC1hbCkgPSBmNDdhNmU1
NjdhNTUzZDZlNjYyOTIxZWI3YzJkNWQ3ZDM0ZjU2YjJkCitTSEExIChwYXRjaC1hbSkgPSBhNjg3
ZDE3NjRkN2MxYWExYmU5ZGQ5ZGIyOThhMjgwNzIzODQ2NTE0CitTSEExIChwYXRjaC1hbikgPSA4
MzY4MTM0NjUzYmYxNzQ4NThjOGYxZWE2Nzg4ZDI4YTZjYWFhMTA1CitTSEExIChwYXRjaC1hbykg
PSBkNDU5MDJmOTc2NmUwYTgyM2Q4YjEyZDkwOWY3ODJiNGJiNjUxY2I0CitTSEExIChwYXRjaC1h
cCkgPSBkNDFmNTcyZTU2ODczZGZlMWI1OGJmMWI3YjM1MGQ3NzhmYWJmNmQ1CitTSEExIChwYXRj
aC1hcSkgPSBkZjFjODg5MmE4MzZhZDQ2MGFmYTA0MjgxZjhkZjMzOTUyNGNiZDllCitTSEExIChw
YXRjaC1hcikgPSAwMzE3M2RjNjM2MTBiNmYxY2YwYWEzOWUyZmJiODY0OTIyYTEyYzNmCitTSEEx
IChwYXRjaC1hcykgPSBlMWU2ZmQwY2NlM2ExYzIxZjNjZWFiZGQwNzIwY2I3ZmU2Njg4MTI2CmRp
ZmYgLXggQ1ZTIC11ck4gbGFuZy9zbWxuai5vcmlnL2ZpbGVzL3RhcmdldHMgbGFuZy9zbWxuai9m
aWxlcy90YXJnZXRzCi0tLSBsYW5nL3NtbG5qLm9yaWcvZmlsZXMvdGFyZ2V0cwkyMDAzLTA3LTAx
IDE5OjEwOjM0LjAwMDAwMDAwMCAtMDQwMAorKysgbGFuZy9zbWxuai9maWxlcy90YXJnZXRzCTIw
MDktMDMtMTEgMTM6MTI6MDMuMDAwMDAwMDAwIC0wNDAwCkBAIC0xLDExICsxLDE5IEBACi1yZXF1
ZXN0IG1sLXlhY2MKK3JlcXVlc3QgbWwtdWxleAorcmVxdWVzdCBtbC11bGV4LW1sbGV4LXRvb2wK
IHJlcXVlc3QgbWwtbGV4CityZXF1ZXN0IG1sLWxleC1sZXgtZXh0CityZXF1ZXN0IG1sLXlhY2MK
K3JlcXVlc3QgbWwteWFjYy1ncm0tZXh0CityZXF1ZXN0IG1sLWFudGxyCityZXF1ZXN0IG1sLWxw
dC1saWIKIHJlcXVlc3QgbWwtYnVyZwogcmVxdWVzdCBzbWxuai1saWIKIHJlcXVlc3QgcGdyYXBo
LXV0aWwKK3JlcXVlc3QgdGRwLXV0aWwKIHJlcXVlc3QgY21sCiByZXF1ZXN0IGNtbC1saWIKIHJl
cXVlc3QgZVhlbmUKK3JlcXVlc3QgbWxyaXNjCiByZXF1ZXN0IGNraXQKICNpZiAhZGVmaW5lZChf
X3Bvd2VycGNfXykKIHJlcXVlc3QgbWwtbmxmZmktbGliCkBAIC0xMywzICsyMSw0IEBACiAjZW5k
aWYKIHJlcXVlc3QgbWxyaXNjLXRvb2xzCiByZXF1ZXN0IG5vd2hlcmUKK3JlcXVlc3QgaGVhcDJh
c20KZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRjaC1hYSBsYW5n
L3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWEKLS0tIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNo
LWFhCTIwMDQtMDYtMDYgMDA6Mzg6MjkuMDAwMDAwMDAwIC0wNDAwCisrKyBsYW5nL3NtbG5qL3Bh
dGNoZXMvcGF0Y2gtYWEJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKQEAgLTEs
NzEgKzAsMCBAQAotJE5ldEJTRDogcGF0Y2gtYWEsdiAxLjQgMjAwNC8wNi8wNiAwNDozODoyOSBz
bmogRXhwICQKLQotLS0tIGNvbmZpZy90YXJnZXRzLm9yaWcJVGh1IE9jdCAxMCAxMjowMjoxMCAy
MDAyCi0rKysgY29uZmlnL3RhcmdldHMKLUBAIC00MSw3ICs0MSw3IEBAIHJlcXVlc3QgbWwtbGV4
Ci0gCi0gIyBidWlsZCBNTC1CdXJnCi0gIwotLSNyZXF1ZXN0IG1sLWJ1cmcKLStyZXF1ZXN0IG1s
LWJ1cmcKLSAKLSAjIHByZS1jb21waWxlIGFuZCBpbnN0YWxsIHRoZSByZW1haW5pbmcgY29tcG9u
ZW50cyBvZiB0aGUgU01ML05KIGxpYnJhcnkKLSAjIChldmVyeXRoaW5nIGV4Y2VwdCBzbWxuai1s
aWIuY20sIGFrYSBVdGlsLCBpdHNlbGYpCi1AQCAtNTAsNyArNTAsNyBAQCByZXF1ZXN0IHNtbG5q
LWxpYgotIAotICMgcHJlLWNvbXBpbGUgYW5kIGluc3RhbGwgQ00gInBvcnRhYmxlIGdyYXBoIiB1
dGlsaXR5IGxpYnJhcnkKLSAjCi0tI3JlcXVlc3QgcGdyYXBoLXV0aWwKLStyZXF1ZXN0IHBncmFw
aC11dGlsCi0gCi0gIyBwcmUtY29tcGlsZSBhbmQgaW5zdGFsbCBDb25jdXJyZW50IE1MLCB3aGlj
aCBpcyBhIGxpYnJhcnkgZm9yIG1lc3NhZ2UtcGFzc2luZwotICMgY29uY3VycmVuY3kuCi1AQCAt
NjUsMTIgKzY1LDEyIEBAIHJlcXVlc3QgY21sLWxpYgotICMgcHJlLWNvbXBpbGUgYW5kIGluc3Rh
bGwgZVhlbmUsIHdoaWNoIGlzIGEgbGlicmFyeSBmb3IgWC1XaW5kb3dzIHByb2dyYW1taW5nLgot
ICMgRVhlbmUgcmVxdWlyZXMgQ01MLgotICMKLS0jcmVxdWVzdCBlWGVuZQotK3JlcXVlc3QgZVhl
bmUKLSAKLSAjIHByZS1jb21waWxlIGFuZCBpbnN0YWxsIHRoZSBDLUtpdCwgd2hpY2ggaXMgYSBs
aWJyYXJ5IGZvciBwYXJzaW5nIGFuZAotICMgdHlwZS1jaGVja2luZyBDIHByb2dyYW1zCi0gIwot
LSNyZXF1ZXN0IGNraXQKLStyZXF1ZXN0IGNraXQKLSAKLSAjIHByZS1jb21waWxlIGFuZCBpbnN0
YWxsIHRoZSBNTC1OTEZGSSBMaWJyYXJ5LCB3aGljaCBpcyB0aGUgY29yZSBvZgotICMgYSBuZXcg
Zm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgKHdoZXJlICJmb3JlaWduIiBmdW5jdGlvbnMgYXJl
Ci1AQCAtNzksNyArNzksNyBAQCByZXF1ZXN0IGNtbC1saWIKLSAjIHRoZSBuZXcgRkZJLgotICMg
VGhpcyBwcmV2aWV3IHJlbGVhc2UgY3VycmVudGx5IHdvcmtzIG9ubHkgdW5kZXIgWDg2L0xpbnV4
LgotICMKLS0jcmVxdWVzdCBtbC1ubGZmaS1saWIKLStyZXF1ZXN0IG1sLW5sZmZpLWxpYgotIAot
ICMgYnVpbGQgTUwtTkxGRkktR2VuLCBhIHByb2dyYW0gZ2VuZXJhdG9yIHRvb2wgdXNlZCBpbiBj
b25qdW5jdGlvbiB3aXRoCi0gIyB0aGUgbmV3ICJOTEZGSSIgZm9yZWlnbiBmdW5jdGlvbiBpbnRl
cmZhY2UuICBUaGUgdG9vbCBnZW5lcmF0ZXMgTUwKLUBAIC04NywxMyArODcsMTMgQEAgcmVxdWVz
dCBjbWwtbGliCi0gIyAoUmVxdWlyZXMgY2tpdCEpCi0gIyBUaGlzIHByZXZpZXcgcmVsZWFzZSBj
dXJyZW50bHkgd29ya3Mgb25seSB1bmRlciBYODYvTGludXguCi0gIwotLSNyZXF1ZXN0IG1sLW5s
ZmZpZ2VuCi0rcmVxdWVzdCBtbC1ubGZmaWdlbgotIAotICMgcHJlLWNvbXBpbGUgYW5kIGluc3Rh
bGwgdGhlIE1MUklTQyBUb29scyBsaWJyYXJ5LgotICMgVGhpcyBsaWJyYXJ5IGlzIGZvciBwYXJz
aW5nIGFuZCBwcmV0dHkgcHJpbnRpbmcgU01MIGNvZGUuCi0gIyBJdCdzIHVzZWQgYnkgdmFyaW91
cyBNTFJJU0MgY29kZSBnZW5lcmF0b3IgZ2VuZXJhdG9yLgotICMKLS0jcmVxdWVzdCBtbHJpc2Mt
dG9vbHMKLStyZXF1ZXN0IG1scmlzYy10b29scwotIAotICMgQnVpbGQgYW5kIGluc3RhbGwgdGhl
ICdub3doZXJlJyBwcm9ncmFtIHRyYW5zbGF0b3IuCi0gIyBUaGlzIHRvb2wgdHJhbnNsYXRlcyBw
cm9ncmFtcyB3aXRoIGNvbmRpdGlvbmFsIHBhdHRlcm5zICh3aGVyZSBjbGF1c2VzKSAKLUBAIC0x
MDEsNyArMTAxLDcgQEAgcmVxdWVzdCBjbWwtbGliCi0gIyAoYmFkKSBkb2N1bWVudGF0aW9uLgot
ICMgKFJlcXVpcmVzIHRoZSBtbHJpc2MtdG9vbHMgbGlicmFyeSEpCi0gIwotLSNyZXF1ZXN0IG5v
d2hlcmUKLStyZXF1ZXN0IG5vd2hlcmUKLSAKLSAjIE5vdGU6IGF1dG9sb2FkaW5nIGlzIGFsd2F5
cyBlbmFibGVkLgotICMgICBJbiBvcmRlciB0byBjdXN0b21pemUgd2hhdCBpcyBiZWluZyBwcmUt
cmVnaXN0ZXJlZCBmb3IgYXV0b2xvYWRpbmcKZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9y
aWcvcGF0Y2hlcy9wYXRjaC1hYiBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWIKLS0tIGxhbmcv
c21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFiCTIwMDMtMDctMDEgMTk6MTk6MTMuMDAwMDAwMDAw
IC0wNDAwCisrKyBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWIJMjAwOS0wMy0xMSAxNDozMjox
Ny4wMDAwMDAwMDAgLTA0MDAKQEAgLTEsNyArMSw3IEBACiAkTmV0QlNEOiBwYXRjaC1hYix2IDEu
MiAyMDAzLzA3LzAxIDIzOjE5OjEzIGp0YiBFeHAgJAogCi0tLS0gL2Rldi9udWxsCi0rKysgc3Jj
L3J1bnRpbWUvb2Jqcy9tay5wcGMtbmV0YnNkCistLS0gYmFzZS9ydW50aW1lL29ianMvbWsucHBj
LW5ldGJzZC5vcmlnCTIwMDktMDMtMTEgMTM6MjE6MTEuMDAwMDAwMDAwIC0wNDAwCisrKysgYmFz
ZS9ydW50aW1lL29ianMvbWsucHBjLW5ldGJzZAogQEAgLTAsMCArMSwyNCBAQAogKyMgbWsucHBj
LW5ldGJzZAogKyMKZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRj
aC1hYyBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWMKLS0tIGxhbmcvc21sbmoub3JpZy9wYXRj
aGVzL3BhdGNoLWFjCTIwMDMtMDctMDEgMTk6MTk6MTQuMDAwMDAwMDAwIC0wNDAwCisrKyBsYW5n
L3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWMJMjAwOS0wMy0xMSAxNDozMjoxNy4wMDAwMDAwMDAgLTA0
MDAKQEAgLTEsMTcgKzEsMTkgQEAKLSROZXRCU0Q6IHBhdGNoLWFjLHYgMS4zIDIwMDMvMDcvMDEg
MjM6MTk6MTQganRiIEV4cCAkCiskTmV0QlNEJAogCi0tLS0gY29uZmlnL19hcmNoLW4tb3BzeXMu
b3JpZworLS0tIGNvbmZpZy9fYXJjaC1uLW9wc3lzLm9yaWcJMjAwOC0wOC0xMyAxNDozNzo1OS4w
MDAwMDAwMDAgLTA0MDAKICsrKyBjb25maWcvX2FyY2gtbi1vcHN5cwotQEAgLTEwNiwxMSArMTA2
LDEzIEBACitAQCAtMTE5LDEyICsxMTksMTMgQEAgY2FzZSBgdW5hbWUgLXNgIGluCiAgICBOZXRC
U0QpCi0gICAgIE9QU1lTPW5ldGJzZAorICAgICBjYXNlIGB1bmFtZSAtcmAgaW4KKyAgICAgICAy
KikgT1BTWVM9bmV0YnNkMjs7CistICAgICAgMyopIE9QU1lTPW5ldGJzZDs7CistICAgICAgKikg
ZXhpdCAxOzsKKysgICAgICAqKSBPUFNZUz1uZXRic2Q7OworICAgICBlc2FjCiAgICAgIEhFQVBf
T1BTWVM9YnNkCiAtICAgIGNhc2UgYHVuYW1lIC1tYCBpbgogKyAgICBjYXNlIGB1bmFtZSAtcGAg
aW4KLSAgICAgICBpMzg2KSBBUkNIPXg4Njs7Ci0gICAgICAgaTQ4NikgQVJDSD14ODY7OwotICAg
ICAgIGk1ODYpIEFSQ0g9eDg2OzsKLSAgICAgICBpNjg2KSBBUkNIPXg4Njs7CisgICAgICAgKjg2
KSBBUkNIPXg4Njs7CiArICAgICAgcG93ZXJwYykgQVJDSD1wcGM7OwogKyAgICAgIHNwYXJjKSBB
UkNIPXNwYXJjOzsKICAgICAgICAqKSBleGl0IDE7OwpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21s
bmoub3JpZy9wYXRjaGVzL3BhdGNoLWFkIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hZAotLS0g
bGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYWQJMjAwMy0wNy0wMSAxOToxOToxNC4wMDAw
MDAwMDAgLTA0MDAKKysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hZAkyMDA5LTAzLTExIDE0
OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApAQCAtMSw3ICsxLDcgQEAKICROZXRCU0Q6IHBhdGNoLWFk
LHYgMS4zIDIwMDMvMDcvMDEgMjM6MTk6MTQganRiIEV4cCAkCiAKLS0tLSBzcmMvcnVudGltZS9p
bmNsdWRlL2FzbS1iYXNlLmgub3JpZwotKysrIHNyYy9ydW50aW1lL2luY2x1ZGUvYXNtLWJhc2Uu
aAorLS0tIGJhc2UvcnVudGltZS9pbmNsdWRlL2FzbS1iYXNlLmgub3JpZwkyMDA4LTEyLTA1IDEy
OjU3OjM5LjAwMDAwMDAwMCAtMDUwMAorKysrIGJhc2UvcnVudGltZS9pbmNsdWRlL2FzbS1iYXNl
LmgKIEBAIC0zNiw2ICszNiwxMSBAQAogICMgICAgZGVmaW5lIF9BU00KICAjICAgIGluY2x1ZGUg
PHN5cy9zdGFjay5oPgpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3Bh
dGNoLWFlIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hZQotLS0gbGFuZy9zbWxuai5vcmlnL3Bh
dGNoZXMvcGF0Y2gtYWUJMjAwMy0wMy0yMSAxNzoyMDo1Ni4wMDAwMDAwMDAgLTA1MDAKKysrIGxh
bmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hZQkyMDA5LTAzLTExIDE0OjMyOjE3LjAwMDAwMDAwMCAt
MDQwMApAQCAtMSw4ICsxLDggQEAKICROZXRCU0Q6IHBhdGNoLWFlLHYgMS4xLjEuMSAyMDAzLzAz
LzIxIDIyOjIwOjU2IHdpeiBFeHAgJAogCi0tLS0gc3JjL3J1bnRpbWUvbWFjaC1kZXAvU1BBUkMu
cHJpbS5hc20ub3JpZwlGcmkgSnVuIDE1IDE1OjA1OjE5IDIwMDEKLSsrKyBzcmMvcnVudGltZS9t
YWNoLWRlcC9TUEFSQy5wcmltLmFzbQotQEAgLTMwNyw3ICszMDcsNyBAQCBwZW5kaW5nX3NpZ3M6
CS8qIHRoZXJlIGFyZSBwZW5kaW5nIHNpZ25hCistLS0gYmFzZS9ydW50aW1lL21hY2gtZGVwL1NQ
QVJDLnByaW0uYXNtLm9yaWcJMjAwOC0wMi0yOSAxODowOTowNS4wMDAwMDAwMDAgLTA1MDAKKysr
KyBiYXNlL3J1bnRpbWUvbWFjaC1kZXAvU1BBUkMucHJpbS5hc20KK0BAIC0zMDgsNyArMzA4LDcg
QEAgcGVuZGluZ19zaWdzOgkvKiB0aGVyZSBhcmUgcGVuZGluZyBzaWduYQogIAltb3YJQUxMT0NQ
VFIsTElNSVRQVFIJICAgIC8qIChkZWxheSBzbG90KSAqLwogIAogIApAQCAtMTEsNyArMTEsNyBA
QAogIC8qIFplcm9MaW1pdFB0cjoKICAgKgogICAqIFplcm8gdGhlIGhlYXAgbGltaXQgcG9pbnRl
ciBzbyB0aGF0IGEgdHJhcCB3aWxsIGJlIGdlbmVyYXRlZCBvbiB0aGUgbmV4dCBsaW1pdAotQEAg
LTYyMiwxMyArNjIyLDYyIEBAIF9tbF9tdWw6CitAQCAtNjIzLDEzICs2MjMsNjIgQEAgX21sX211
bDoKICAJbW92CSVnMSwlbDEJCQkgIC8qIHNhdmUgJWcxIHdoaWNoIG1heSBnZXQgdHJhc2hlZCAq
LwogIAltb3YJJWcyLCVsMgogIAltb3YJJWczLCVsMwpAQCAtNzQsNyArNzQsNyBAQAogIAlyZXN0
b3JlICVvMCwwLCVvMgkJICAvKiByZXN1bHQgaW4gJW8yIChkZWxheSBzbG90KSAqLwogIAlyZXRs
CiAgCW5vcAotQEAgLTY0Miw3ICs2OTEsMTUgQEAgX21sX211bDoKK0BAIC02NDMsNyArNjkyLDE1
IEBAIF9tbF9tdWw6CiAgICogbG9jYWxzIG9mIHRoZSBuZXcgd2luZG93LCBzaW5jZSAuZGl2IGlz
IGEgbGVhZiByb3V0aW5lLgogICAqLwogIF9tbF9kaXY6CkBAIC05MSw3ICs5MSw3IEBACiAgCWFk
ZGNjCSVpMywlZzAsJW8xCQkvKiAlbzEgaXMgZGl2aXNvciAoYW5kIGNoZWNrIGZvciB6ZXJvKSAq
LwogIAliegkxZgogIAkJCQkgICAgLyogc2F2ZSAlZzEsICVnMiBhbmQgJWczICh1c2luZyBuZXcg
d2luZG93KSAqLwotQEAgLTY1MCw5ICs3MDcsMzAgQEAgX21sX2RpdjoKK0BAIC02NTEsOSArNzA4
LDMwIEBAIF9tbF9kaXY6CiAgCW1vdgklZzEsJWwxCQkJLyogKGRlbGF5IHNsb3QpICovCiAgCW1v
dgklZzIsJWwyCiAgCW1vdgklZzMsJWwzCkBAIC0xMjIsNyArMTIyLDcgQEAKICAJbW92CSVsMywl
ZzMKICAJbW92CSVsMiwlZzIKICAJbW92CSVsMSwlZzEKLUBAIC02NzksMTEgKzc1NywyNCBAQCBf
bWxfdW11bDoKK0BAIC02ODAsMTEgKzc1OCwyNCBAQCBfbWxfdW11bDoKICAJbW92CSVnMiwlbDIK
ICAJbW92CSVnMywlbDMKICAJbW92CSVpMiwlbzAKQEAgLTE0Nyw3ICsxNDcsNyBAQAogIAlyZXQK
ICAJcmVzdG9yZSAlbzAsMCwlbzIJCSAgLyogcmVzdWx0IGluICVvMiAoZGVsYXkgc2xvdCkgKi8K
ICAKLUBAIC02OTQsNyArNzg1LDEyIEBAIF9tbF91bXVsOgorQEAgLTY5NSw3ICs3ODYsMTIgQEAg
X21sX3VtdWw6CiAgICogbG9jYWxzIG9mIHRoZSBuZXcgd2luZG93LCBzaW5jZSAuZGl2IGlzIGEg
bGVhZiByb3V0aW5lLgogICAqLwogIF9tbF91ZGl2OgpAQCAtMTYxLDcgKzE2MSw3IEBACiAgCWFk
ZGNjCSVpMywlZzAsJW8xCQkvKiAlbzEgaXMgZGl2aXNvciAoYW5kIGNoZWNrIGZvciB6ZXJvKSAq
LwogIAliegkxZgogIAkJCQkgICAgLyogc2F2ZSAlZzEsICVnMiBhbmQgJWczICh1c2luZyBuZXcg
d2luZG93KSAqLwotQEAgLTcwMiw5ICs3OTgsMjMgQEAgX21sX3VkaXY6CitAQCAtNzAzLDkgKzc5
OSwyMyBAQCBfbWxfdWRpdjoKICAJbW92CSVnMSwlbDEJCQkvKiAoZGVsYXkgc2xvdCkgKi8KICAJ
bW92CSVnMiwlbDIKICAJbW92CSVnMywlbDMKZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9y
aWcvcGF0Y2hlcy9wYXRjaC1hZiBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWYKLS0tIGxhbmcv
c21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFmCTIwMDYtMDMtMjggMTY6MzU6MjcuMDAwMDAwMDAw
IC0wNTAwCisrKyBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWYJMjAwOS0wMy0xMSAxNDozMjox
Ny4wMDAwMDAwMDAgLTA0MDAKQEAgLTEsOCArMSw4IEBACi0kTmV0QlNEOiBwYXRjaC1hZix2IDEu
NCAyMDA2LzAzLzI4IDIxOjM1OjI3IGdhdmFuIEV4cCAkCiskTmV0QlNEJAogCi0tLS0gc3JjL3J1
bnRpbWUvbWFjaC1kZXAvc2lnbmFsLXN5c2RlcC5oLm9yaWcJMjAwMi0xMC0xMCAxOToyMDowNC4w
MDAwMDAwMDAgKzAxMDAKLSsrKyBzcmMvcnVudGltZS9tYWNoLWRlcC9zaWduYWwtc3lzZGVwLmgK
LUBAIC0xNDcsNyArMTQ3LDcgQEAgZXh0ZXJuIHZvaWQgU2V0RlNSKGludCk7CistLS0gYmFzZS9y
dW50aW1lL21hY2gtZGVwL3NpZ25hbC1zeXNkZXAuaC5vcmlnCTIwMDgtMTItMDUgMTI6NTc6Mzku
MDAwMDAwMDAwIC0wNTAwCisrKysgYmFzZS9ydW50aW1lL21hY2gtZGVwL3NpZ25hbC1zeXNkZXAu
aAorQEAgLTE3MSw3ICsxNzEsNyBAQCBleHRlcm4gdm9pZCBTZXRGU1IoaW50KTsKICAgIC8qIGRp
c2FibGUgYWxsIEZQIGV4Y2VwdGlvbnMgKi8KICAjICBkZWZpbmUgU0lHX0luaXRGUEUoKSAgICBT
ZXRGU1IoMCkKICAKQEAgLTExLDY2ICsxMSw2OSBAQAogICAgICAvKiogU1BBUkMsIFNVTk9TICoq
LwogICMgICAgZGVmaW5lIFVTRV9aRVJPX0xJTUlUX1BUUl9GTgogICMgICAgZGVmaW5lIFNJR19G
QVVMVDEJCVNJR0ZQRQotQEAgLTMxOCw2ICszMTgsMTkgQEAgZXh0ZXJuIHZvaWQgU2V0RlNSKCk7
Ci0gCi0gIyAgICBkZWZpbmUgU0lHX0ZsYWdzICAgICAgICAgICAwCitAQCAtMzQwLDYgKzM0MCwy
MSBAQCBleHRlcm4gdm9pZCBTZXRGU1IoKTsKKyAjICAgIGRlZmluZSBTSUdfUmVzZXRGUEUoc2Nw
KSAgICAgICAgICAgeyAoc2NwKS0+cmVncy0+Z3ByW1BUX0ZQU0NSXSA9IDB4MDsgfQorICAgICAg
dHlwZWRlZiB2b2lkIFNpZ1JldHVybl90OwogIAogKyMgIGVsaWYgKGRlZmluZWQoVEFSR0VUX1BQ
QykgJiYgZGVmaW5lZChPUFNZU19ORVRCU0QpKQogKyAgICAvKiBQUEMsIE5ldEJTRCAqLwogKwot
KyMgICAgZGVmaW5lIFNJR19GQVVMVDEgICAgICAgICAgU0lHVFJBUAorKyMgICAgZGVmaW5lIFNJ
R19GQVVMVDEJCVNJR1RSQVAKICsKLSsjICAgIGRlZmluZSBJTlRfRElWWkVSTyhzLCBjKSAgICAg
ICAgICAgKChzKSA9PSBTSUdUUkFQKQotKyMgICAgZGVmaW5lIElOVF9PVkZMVyhzLCBjKSAgICAg
ICAgICAgICAoKHMpID09IFNJR1RSQVApCi0rIyAgICBkZWZpbmUgU0lHX0dldFBDKHNjcCkgICAg
ICAgICAgICAgICgoc2NwKS0+c2NfZnJhbWUuc3JyMCkKLSsjICAgIGRlZmluZSBTSUdfU2V0UEMo
c2NwLCBhZGRyKSAgICAgICAgeyAoc2NwKS0+c2NfZnJhbWUuc3JyMCA9IChsb25nKShhZGRyKTsg
fQotKyMgICAgZGVmaW5lIFNJR19aZXJvTGltaXRQdHIoc2NwKSAgICAgICB7ICgoc2NwKS0+c2Nf
ZnJhbWUuZml4cmVnWzE1XSA9IDApOyB9IC8qIGxpbWl0cHRyID0gMTUgKHNlZSBzcmMvcnVudGlt
ZS9tYWNoLWRlcC9QUEMucHJpbS5hc20pICovCi0rIyAgICBkZWZpbmUgU0lHX0dldENvZGUoaW5m
byxzY3ApICAgICAgIChpbmZvKQorKyMgICAgZGVmaW5lIElOVF9ESVZaRVJPKHMsIGMpCQkoKHMp
ID09IFNJR1RSQVApCisrIyAgICBkZWZpbmUgSU5UX09WRkxXKHMsIGMpCQkoKHMpID09IFNJR1RS
QVApCisrIyAgICBkZWZpbmUgU0lHX0dldFBDKHNjcCkJCSgoc2NwKS0+c2NfZnJhbWUuc3JyMCkK
KysjICAgIGRlZmluZSBTSUdfU2V0UEMoc2NwLCBhZGRyKQl7IChzY3ApLT5zY19mcmFtZS5zcnIw
ID0gKGxvbmcpKGFkZHIpOyB9CisrICAgICAvKiBsaW1pdHB0ciA9IDE1IChzZWUgYmFzZS9ydW50
aW1lL21hY2gtZGVwL1BQQy5wcmltLmFzbSkgKi8KKysjICAgIGRlZmluZSBTSUdfWmVyb0xpbWl0
UHRyKHNjcCkJeyAoKHNjcCktPnNjX2ZyYW1lLmZpeHJlZ1sxNV0gPSAwKTsgfQorKyMgICAgZGVm
aW5lIFNJR19HZXRDb2RlKGluZm8sc2NwKQkoaW5mbykKICsgICAgIHR5cGVkZWYgdm9pZCBTaWdS
ZXR1cm5fdDsKICsKLSAKKysKICAjICBlbmRpZiAvKiBIT1NUX1JTNjAwMC9IT1NUX1BQQyAqLwog
IAotQEAgLTQ2MywzNSArNDc2LDE1IEBAIGV4dGVybiBBZGRyX3QgKk1MX1g4NkZyYW1lOyAgIC8q
IHVzZWQgdG8KKyAjZWxpZiBkZWZpbmVkKEhPU1RfSFBQQSkKK0BAIC00NTIsMzAgKzQ2NywyNCBA
QCBleHRlcm4gQWRkcl90ICpNTF9YODZGcmFtZTsJCS8qIHVzZWQgdG8gCiAgCi0gIyAgZWxpZiBk
ZWZpbmVkKE9QU1lTX05FVEJTRCkKLSAgICAgLyoqIHg4NiwgTmV0QlNEICoqLwotLS8qIE5ldEJT
RCAoaW5jbHVkaW5nIHZlcnNpb25zIDEuMCBhbmQgMS4xKSBnZW5lcmF0ZXMgU0lHQlVTIHJhdGhl
cgotLSAgIHRoYW4gU0lHRlBFIGZvciBvdmVyZmxvd3MuICBUaGUgcmVhbCBmaXggaXMgYSB0cml2
aWFsIGNoYW5nZSB0bwotLSAgIGtlcm5lbCBzb3VyY2VzLCB3aGljaCBoYXMgYWxyZWFkeSBiZWVu
IHJlcG9ydGVkIChOZXRCU0QgaW50ZXJuYWwKLS0gICBwcm9ibGVtIGlkZW50aWZpY2F0aW9uICJw
b3J0LWkzODYvMTgzMyIpLiAKLS0KLS0gICBJZiB5b3Ugd2FudCB0byBmaXggdGhpcyBvbiB5b3Vy
IE5ldEJTRCBzeXN0ZW0uICBFZGl0IG1hY2hkZXAuYyBpbgotLSAgIGRpcmVjdG9yeSAvc3lzL2Fy
Y2gvaTM4Ni9pMzg2LCBhbmQgZmluZCB0aGUgbGluZQotLQotLSAgICAgICAgc2V0Z2F0ZSgmaWR0
WyAgNF0sICZJRFRWRUMob2ZsKSwgICAgIDAsIFNEVF9TWVMzODZUR1QsIFNFTF9LUEwpOwotLQot
LSAgIENoYW5nZSBTRUxfS1BMIHRvIFNFTF9VUEwuICBXaXRoIFNFTF9LUEwsIHRoZSBpbnQgb3Zl
cmZsb3cgdHJhcCBpcwotLSAgIG5vdCBhY2Nlc3NpYmxlIGF0IHVzZXIgbGV2ZWwsIGFuZCBhIHBy
b3RlY3Rpb24gZmF1bHQgb2NjdXJzIGluc3RlYWQKLS0gICAodGh1cyB0aGUgc2VnIGZhdWx0KS4g
IFNFTF9VUEwgd2lsbCBhbGxvdyB1c2VyIHByb2Nlc3NlcyB0byBnZW5lcmF0ZQotLSAgIHRoaXMg
dHJhcC4KLS0KLS0gICBGb3IgdGhlIGNoYW5nZSB0byB0YWtlIGVmZmVjdCwgcmVjb21waWxlIHlv
dXIga2VybmVsLCBpbnN0YWxsIGl0Ci0tICAgYW5kIHJlYm9vdC4gKi8KLS0jICAgIGRlZmluZSBT
SUdfRkFVTFQxCQlTSUdGUEUKKyAgICAgIHR5cGVkZWYgdm9pZCBTaWdSZXR1cm5fdDsKKyAKKy0j
ICBlbGlmIGRlZmluZWQoT1BTWVNfTkVUQlNEMikKKy0gICAgLyoqIHg4NiwgTmV0QlNEICh2ZXJz
aW9uIDIueCkgKiovCisrIyAgZWxpZiAoZGVmaW5lZChPUFNZU19ORVRCU0QyKSB8fCBkZWZpbmVk
KE9QU1lTX05FVEJTRCkpCisrICAgIC8qKiB4ODYsIE5ldEJTRCAqKi8KKyAjICAgIGRlZmluZSBT
SUdfRkFVTFQxCQlTSUdGUEUKIC0jICAgIGRlZmluZSBTSUdfRkFVTFQyCQlTSUdCVVMKIC0jICAg
IGRlZmluZSBJTlRfRElWWkVSTyhzLCBjKQkwCiAtIyAgICBkZWZpbmUgSU5UX09WRkxXKHMsIGMp
CSgoKHMpID09IFNJR0ZQRSkgfHwgKChzKSA9PSBTSUdCVVMpKQotLQorKyMgICAgZGVmaW5lIElO
VF9ESVZaRVJPKHMsIGMpCSgocykgPT0gU0lHRlBFKQorKyMgICAgZGVmaW5lIElOVF9PVkZMVyhz
LCBjKQkoKHMpID09IFNJR0ZQRSkKKyAKIC0jICAgIGRlZmluZSBTSUdfR2V0Q29kZShpbmZvLCBz
Y3ApCShpbmZvKQogLSMgICAgZGVmaW5lIFNJR19HZXRQQyhzY3ApCQkoKHNjcCktPnNjX3BjKQog
LSMgICAgZGVmaW5lIFNJR19TZXRQQyhzY3AsIGFkZHIpCXsgKHNjcCktPnNjX3BjID0gKGxvbmcp
KGFkZHIpOyB9Ci0rIyAgICBkZWZpbmUgU0lHX0ZBVUxUMQkJCVNJR0ZQRQotKyMgICAgZGVmaW5l
IElOVF9ESVZaRVJPKHMsIGMpCQkoKHMpID09IFNJR0ZQRSkKLSsjICAgIGRlZmluZSBJTlRfT1ZG
TFcocywgYykJCSgocykgPT0gU0lHRlBFKQotKworLSMgICAgZGVmaW5lIFNJR19aZXJvTGltaXRQ
dHIoc2NwKQl7IE1MX1g4NkZyYW1lW0xJTUlUUFRSX1g4Nk9GRlNFVF0gPSAwOyB9CiArIyAgICBk
ZWZpbmUgU0lHX0dldENvZGUoaW5mbywgc2NwKQkoMCkKLSsjICAgIGRlZmluZSBTSUdfR2V0UEMo
c2NwKQkJKChzY3ApLT51Y19tY29udGV4dC5fX2dyZWdzW19SRUdfRUlQXSkKLSsjICAgIGRlZmlu
ZSBTSUdfU2V0UEMoc2NwLCBhZGRyKQl7KHNjcCktPnVjX21jb250ZXh0Ll9fZ3JlZ3NbX1JFR19F
SVBdID0gKGxvbmcpKGFkZHIpOyB9Ci0gIyAgICBkZWZpbmUgU0lHX1plcm9MaW1pdFB0cihzY3Ap
CXsgTUxfWDg2RnJhbWVbTElNSVRQVFJfWDg2T0ZGU0VUXSA9IDA7IH0KICAKIC0gICAgIHR5cGVk
ZWYgdm9pZCBTaWdSZXR1cm5fdDsKLS0KLSAjICBlbGlmIGRlZmluZWQoT1BTWVNfU09MQVJJUykK
LSAgICAgIC8qKiB4ODYsIFNvbGFyaXMgKi8KKysjICAgIGlmIGRlZmluZWQoT1BTWVNfTkVUQlNE
MikKKysjICAgICAgZGVmaW5lIFNJR19HZXRQQyhzY3ApCQkoKHNjcCktPnNjX3BjKQorKyMgICAg
ICBkZWZpbmUgU0lHX1NldFBDKHNjcCwgYWRkcikJeyAoc2NwKS0+c2NfcGMgPSAobG9uZykoYWRk
cik7IH0KKysgICAgICAgdHlwZWRlZiB2b2lkIFNpZ1JldHVybl90OworIAorLSMgIGVsaWYgZGVm
aW5lZChPUFNZU19ORVRCU0QpCistICAgIC8qKiB4ODYsIE5ldEJTRCAodmVyc2lvbiAzLngpICoq
LworLSMgICAgZGVmaW5lIFNJR19GQVVMVDEJCVNJR0ZQRQorLSMgICAgZGVmaW5lIFNJR19GQVVM
VDIJCVNJR0JVUworLSMgICAgZGVmaW5lIElOVF9ESVZaRVJPKHMsIGMpCTAKKy0jICAgIGRlZmlu
ZSBJTlRfT1ZGTFcocywgYykJKCgocykgPT0gU0lHRlBFKSB8fCAoKHMpID09IFNJR0JVUykpCisr
IyAgICBlbGlmIGRlZmluZWQoT1BTWVNfTkVUQlNEKQorKyMgICAgICBkZWZpbmUgU0lHX0dldFBD
KHNjcCkJCShfVUNfTUFDSElORV9QQyhzY3ApKQorKyMgICAgICBkZWZpbmUgU0lHX1NldFBDKHNj
cCwgYWRkcikJeyBfVUNfTUFDSElORV9TRVRfUEMoc2NwLCAoKGxvbmcpIChhZGRyKSkpOyB9Cisr
IyAgICBlbmRpZgorIAorLSMgICAgZGVmaW5lIFNJR19HZXRDb2RlKGluZm8sIHNjcCkJKGluZm8p
CistIyAgICBkZWZpbmUgU0lHX0dldFBDKHNjcCkJCShfVUNfTUFDSElORV9QQyhzY3ApKQorLSMg
ICAgZGVmaW5lIFNJR19TZXRQQyhzY3AsIGFkZHIpCXsgX1VDX01BQ0hJTkVfU0VUX1BDKHNjcCwg
KChsb25nKSAoYWRkcikpKTsgfQorICMgICAgZGVmaW5lIFNJR19aZXJvTGltaXRQdHIoc2NwKQl7
IE1MX1g4NkZyYW1lW0xJTUlUUFRSX1g4Nk9GRlNFVF0gPSAwOyB9CiAgCisgIyAgZWxpZiBkZWZp
bmVkKE9QU1lTX09QRU5CU0QpCmRpZmYgLXggQ1ZTIC11ck4gbGFuZy9zbWxuai5vcmlnL3BhdGNo
ZXMvcGF0Y2gtYWcgbGFuZy9zbWxuai9wYXRjaGVzL3BhdGNoLWFnCi0tLSBsYW5nL3NtbG5qLm9y
aWcvcGF0Y2hlcy9wYXRjaC1hZwkyMDAzLTAzLTIxIDE3OjU0OjM5LjAwMDAwMDAwMCAtMDUwMAor
KysgbGFuZy9zbWxuai9wYXRjaGVzL3BhdGNoLWFnCTIwMDktMDMtMTEgMTQ6MzI6MTcuMDAwMDAw
MDAwIC0wNDAwCkBAIC0xLDcgKzEsNyBAQAogJE5ldEJTRDogcGF0Y2gtYWcsdiAxLjIgMjAwMy8w
My8yMSAyMjo1NDozOSB3aXogRXhwICQKIAotLS0tIHNyYy9ydW50aW1lL29ianMvbWsuc3BhcmMt
bmV0YnNkLm9yaWcJVGh1IFNlcCAxOSAwMzo1NDowMSAyMDAyCi0rKysgc3JjL3J1bnRpbWUvb2Jq
cy9tay5zcGFyYy1uZXRic2QKKy0tLSBiYXNlL3J1bnRpbWUvb2Jqcy9tay5zcGFyYy1uZXRic2Qu
b3JpZwkyMDA5LTAzLTExIDEzOjIxOjExLjAwMDAwMDAwMCAtMDQwMAorKysrIGJhc2UvcnVudGlt
ZS9vYmpzL21rLnNwYXJjLW5ldGJzZAogQEAgLTAsMCArMSwyNCBAQAogKyMgbWsuc3BhcmMtbmV0
YnNkCiArIwpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFo
IGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1haAotLS0gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMv
cGF0Y2gtYWgJMjAwMy0wMy0yMSAxNzo1NDo0MC4wMDAwMDAwMDAgLTA1MDAKKysrIGxhbmcvc21s
bmovcGF0Y2hlcy9wYXRjaC1haAkyMDA5LTAzLTExIDE0OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApA
QCAtMSw2ICsxLDYgQEAKLSROZXRCU0Q6IHBhdGNoLWFoLHYgMS4xIDIwMDMvMDMvMjEgMjI6NTQ6
NDAgd2l6IEV4cCAkCiskTmV0QlNEJAogCi0tLS0gY29uZmlnL19saW5rLXNtbC5vcmlnCVRodSBP
Y3QgMTcgMDI6NDQ6MzIgMjAwMgorLS0tIGNvbmZpZy9fbGluay1zbWwub3JpZwkyMDA1LTAxLTAz
IDE2OjEzOjE2LjAwMDAwMDAwMCAtMDUwMAogKysrIGNvbmZpZy9fbGluay1zbWwKIEBAIC0xNyw2
ICsxNyw3IEBAIHVuc2V0IEVOVgogICMKQEAgLTksNCArOSw0IEBACiArU01MTkpfSE9NRT0iJHtT
TUxOSl9IT01FOi1AU01MX0JBU0VAfSIKICAKICAjIHRoZSBwYXRoIG9mIHRoZSBkaXJlY3Rvcnkg
aW4gd2hpY2ggZXhlY3V0YWJsZXMgKGxpa2UgdGhpcyBmaWxlKSBhcmUga2VwdC4KLSBpZiBbIHgk
e1NNTE5KX0hPTUV9ID0geCBdIDsgdGhlbgorIGlmIFsgeCIkU01MTkpfSE9NRSIgPSB4IF0gOyB0
aGVuCmRpZmYgLXggQ1ZTIC11ck4gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYWkgbGFu
Zy9zbWxuai9wYXRjaGVzL3BhdGNoLWFpCi0tLSBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRj
aC1haQkyMDAzLTAzLTIxIDE3OjU0OjQwLjAwMDAwMDAwMCAtMDUwMAorKysgbGFuZy9zbWxuai9w
YXRjaGVzL3BhdGNoLWFpCTIwMDktMDMtMTEgMTQ6MzI6MTcuMDAwMDAwMDAwIC0wNDAwCkBAIC0x
LDYgKzEsNiBAQAotJE5ldEJTRDogcGF0Y2gtYWksdiAxLjEgMjAwMy8wMy8yMSAyMjo1NDo0MCB3
aXogRXhwICQKKyROZXRCU0QkCiAKLS0tLSBjb25maWcvX21sLWJ1aWxkLm9yaWcJVGh1IE9jdCAx
NyAwMjo0NDozMiAyMDAyCistLS0gY29uZmlnL19tbC1idWlsZC5vcmlnCTIwMDctMDItMTIgMTY6
MDU6MjcuMDAwMDAwMDAwIC0wNTAwCiArKysgY29uZmlnL19tbC1idWlsZAogQEAgLTEsNSArMSw3
IEBACiAgIyFAU0hFTExACkBAIC04LDUgKzgsNSBAQAogK1NNTE5KX0hPTUU9IiR7U01MTkpfSE9N
RTotQFNNTF9CQVNFQH0iCiArCiAgaWYgWyB4JHtTTUxOSl9IT01FfSA9IHggXSA7IHRoZW4KLSAg
ICAgQklOX0RJUj1AQklORElSQAotIGVsc2UKKyAgICAgQklOX0RJUj0iQEJJTkRJUkAiCisgICAg
IExJQl9ESVI9IkBMSUJESVJAIgpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21sbmoub3JpZy9wYXRj
aGVzL3BhdGNoLWFqIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hagotLS0gbGFuZy9zbWxuai5v
cmlnL3BhdGNoZXMvcGF0Y2gtYWoJMjAwMy0wMy0yMSAxNzo1NDo0MS4wMDAwMDAwMDAgLTA1MDAK
KysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hagkyMDA5LTAzLTExIDE0OjMyOjE3LjAwMDAw
MDAwMCAtMDQwMApAQCAtMSw2ICsxLDYgQEAKLSROZXRCU0Q6IHBhdGNoLWFqLHYgMS4xIDIwMDMv
MDMvMjEgMjI6NTQ6NDEgd2l6IEV4cCAkCiskTmV0QlNEJAogCi0tLS0gY29uZmlnL19tbC1tYWtl
ZGVwZW5kLm9yaWcJVGh1IE9jdCAxNyAwMjo0NDozMiAyMDAyCistLS0gY29uZmlnL19tbC1tYWtl
ZGVwZW5kLm9yaWcJMjAwOC0wMy0yNyAxNToyMzowOS4wMDAwMDAwMDAgLTA0MDAKICsrKyBjb25m
aWcvX21sLW1ha2VkZXBlbmQKIEBAIC0xLDUgKzEsNyBAQAogICMhQFNIRUxMQApAQCAtOCw1ICs4
LDUgQEAKICtTTUxOSl9IT01FPSIke1NNTE5KX0hPTUU6LUBTTUxfQkFTRUB9IgogKwogIGlmIFsg
eCR7U01MTkpfSE9NRX0gPSB4IF0gOyB0aGVuCi0gICAgIEJJTl9ESVI9QEJJTkRJUkAKKyAgICAg
QklOX0RJUj0iQEJJTkRJUkAiCiAgZWxzZQpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21sbmoub3Jp
Zy9wYXRjaGVzL3BhdGNoLWFrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hawotLS0gbGFuZy9z
bWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYWsJMjAwMy0wMy0yMSAxNzo1NDo0MS4wMDAwMDAwMDAg
LTA1MDAKKysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hawkyMDA5LTAzLTExIDE0OjMyOjE3
LjAwMDAwMDAwMCAtMDQwMApAQCAtMSw2ICsxLDYgQEAKLSROZXRCU0Q6IHBhdGNoLWFrLHYgMS4x
IDIwMDMvMDMvMjEgMjI6NTQ6NDEgd2l6IEV4cCAkCiskTmV0QlNEJAogCi0tLS0gY29uZmlnL19y
dW4tc21sLm9yaWcJVGh1IE9jdCAxNyAwMjo0NDozMiAyMDAyCistLS0gY29uZmlnL19ydW4tc21s
Lm9yaWcJMjAwNC0xMi0xNyAxNjoxMjoyMy4wMDAwMDAwMDAgLTA1MDAKICsrKyBjb25maWcvX3J1
bi1zbWwKIEBAIC0xOSw2ICsxOSw3IEBAIHVuc2V0IEVOVgogICMKQEAgLTgsNSArOCw1IEBACiAg
IwogK1NNTE5KX0hPTUU9IiR7U01MTkpfSE9NRTotQFNNTF9CQVNFQH0iCiAgCi0gIyB0aGUgcGF0
aCBvZiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGV4ZWN1dGFibGVzIChsaWtlIHRoaXMgZmlsZSkg
YXJlIGtlcHQuCi0gaWYgWyB4JHtTTUxOSl9IT01FfSA9IHggXSA7IHRoZW4KKyAjIE9uIGN5Z3dp
biwgbWFrZSBzdXJlIFNNTE5KX0hPTUUgaXMgZ2l2ZW4gYSBQT1NJWC1zdHlsZSBwYXRobmFtZS4K
KyBpZiBbIHgiJFNNTE5KX0hPTUUiICE9IHggXSA7IHRoZW4KZGlmZiAteCBDVlMgLXVyTiBsYW5n
L3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRjaC1hbCBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWwK
LS0tIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFsCTIwMDQtMDYtMDYgMDA6Mzg6Mjku
MDAwMDAwMDAwIC0wNDAwCisrKyBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYWwJMjAwOS0wMy0x
MSAxNDozMjoxNy4wMDAwMDAwMDAgLTA0MDAKQEAgLTEsMTUgKzEsMTMgQEAKLSROZXRCU0Q6IHBh
dGNoLWFsLHYgMS4zIDIwMDQvMDYvMDYgMDQ6Mzg6Mjkgc25qIEV4cCAkCiskTmV0QlNEJAogCi0t
LS0gc3JjL3J1bnRpbWUvb2Jqcy9tay54ODYtbmV0YnNkLm9yaWcJMjAwMC0xMS0wNiAxMzo0MTow
NC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBzcmMvcnVudGltZS9vYmpzL21rLng4Ni1uZXRic2QJMjAw
NC0wNi0wNSAyMToxNjowMy4wMDAwMDAwMDAgLTA3MDAKLUBAIC05LDggKzksOCBAQCBNQUtFID0J
CWdtYWtlCistLS0gYmFzZS9ydW50aW1lL29ianMvbWsueDg2LW5ldGJzZC5vcmlnCTIwMDYtMDIt
MTAgMTc6MTQ6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysgYmFzZS9ydW50aW1lL29ianMvbWsueDg2
LW5ldGJzZAorQEAgLTksNyArOSw3IEBAIE1BS0UgPQkJZ21ha2UKICAKICBBUkZMQUdTID0JVHJj
dgogIENDID0JCWdjYyAtYW5zaQogLUNGTEFHUyA9CS1PMgotLUNQUCA9CQlnY2MgLXggYyAtRSAt
UCAtYW5zaQogK0NGTEFHUyA9CUBDRkxBR1NACi0rQ1BQID0JCWdjYyAteCBhc3NlbWJsZXItd2l0
aC1jcHAgLUUgLVAKKyBDUFAgPQkJZ2NjIC14IGFzc2VtYmxlci13aXRoLWNwcCAtRSAtUAogICND
UFAgPQkJL3Vzci9iaW4vY3BwIC1QCiAgCi0gWE9CSlMgPQpkaWZmIC14IENWUyAtdXJOIGxhbmcv
c21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFtIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hbQot
LS0gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYW0JMjAwMy0wMy0yMSAxNzo1NDo0Mi4w
MDAwMDAwMDAgLTA1MDAKKysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hbQkyMDA5LTAzLTEx
IDE0OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApAQCAtMSw3ICsxLDcgQEAKICROZXRCU0Q6IHBhdGNo
LWFtLHYgMS4xIDIwMDMvMDMvMjEgMjI6NTQ6NDIgd2l6IEV4cCAkCiAKLS0tLSBzcmMvcnVudGlt
ZS9vYmpzL21rLnNwYXJjLXNvbGFyaXMub3JpZwlGcmkgSnVuIDE1IDE1OjA1OjE5IDIwMDEKLSsr
KyBzcmMvcnVudGltZS9vYmpzL21rLnNwYXJjLXNvbGFyaXMKKy0tLSBiYXNlL3J1bnRpbWUvb2Jq
cy9tay5zcGFyYy1zb2xhcmlzLm9yaWcJMjAwMS0wNi0xNSAxNTowNToxOS4wMDAwMDAwMDAgLTA0
MDAKKysrKyBiYXNlL3J1bnRpbWUvb2Jqcy9tay5zcGFyYy1zb2xhcmlzCiBAQCAtOCw3ICs4LDcg
QEAgQVMgPQkJL3Vzci9jY3MvYmluL2FzCiAgQVIgPQkJL3Vzci9jY3MvYmluL2FyCiAgR0NDID0J
CWdjYwpkaWZmIC14IENWUyAtdXJOIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFuIGxh
bmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hbgotLS0gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0
Y2gtYW4JMjAwMy0wMy0yMSAxNzo1NDo0My4wMDAwMDAwMDAgLTA1MDAKKysrIGxhbmcvc21sbmov
cGF0Y2hlcy9wYXRjaC1hbgkyMDA5LTAzLTExIDE0OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApAQCAt
MSw3ICsxLDcgQEAKICROZXRCU0Q6IHBhdGNoLWFuLHYgMS4xIDIwMDMvMDMvMjEgMjI6NTQ6NDMg
d2l6IEV4cCAkCiAKLS0tLSBzcmMvcnVudGltZS9vYmpzL21rLnNwYXJjLXN1bm9zLm9yaWcJVGh1
IEp1biAgMSAxNDozMzo1MiAyMDAwCi0rKysgc3JjL3J1bnRpbWUvb2Jqcy9tay5zcGFyYy1zdW5v
cworLS0tIGJhc2UvcnVudGltZS9vYmpzL21rLnNwYXJjLXN1bm9zLm9yaWcJMjAwMC0wNi0wMSAx
NDozNDowMy4wMDAwMDAwMDAgLTA0MDAKKysrKyBiYXNlL3J1bnRpbWUvb2Jqcy9tay5zcGFyYy1z
dW5vcwogQEAgLTQsNyArNCw3IEBACiAgU0hFTEwJCT0gL2Jpbi9zaAogIApkaWZmIC14IENWUyAt
dXJOIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFvIGxhbmcvc21sbmovcGF0Y2hlcy9w
YXRjaC1hbwotLS0gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYW8JMjAwMy0wNy0wMSAx
OToxOToxNC4wMDAwMDAwMDAgLTA0MDAKKysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hbwky
MDA5LTAzLTExIDE0OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApAQCAtMSw4ICsxLDggQEAKICROZXRC
U0Q6IHBhdGNoLWFvLHYgMS4yIDIwMDMvMDcvMDEgMjM6MTk6MTQganRiIEV4cCAkCiAKLS0tLSBz
cmMvcnVudGltZS9rZXJuZWwvYm9vdC5jLm9yaWcKLSsrKyBzcmMvcnVudGltZS9rZXJuZWwvYm9v
dC5jCi1AQCAtMTI0LDcgKzEyNCw3IEBACistLS0gYmFzZS9ydW50aW1lL2tlcm5lbC9ib290LmMu
b3JpZwkyMDA1LTExLTAyIDE3OjI0OjM5LjAwMDAwMDAwMCAtMDUwMAorKysrIGJhc2UvcnVudGlt
ZS9rZXJuZWwvYm9vdC5jCitAQCAtMTMwLDcgKzEzMCw3IEBAIFBWVCBtbF92YWxfdCBCdWlsZEZp
bGVMaXN0IChtbF9zdGF0ZV90ICoKICAgICAgbWxfdmFsX3QJZmlsZUxpc3Q7CiAgIyBkZWZpbmUg
U0laRV9CVUZfTEVOCTEyOAkvKiB0aGlzIHNob3VsZCBiZSBwbGVudHkgZm9yIHR3byBudW1iZXJz
ICovCiAgICAgIGNoYXIgICAgICAgIHNpemVCdWZbU0laRV9CVUZfTEVOXTsKZGlmZiAteCBDVlMg
LXVyTiBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRjaC1hcCBsYW5nL3NtbG5qL3BhdGNoZXMv
cGF0Y2gtYXAKLS0tIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFwCTIwMDMtMDctMDEg
MTk6MTk6MTQuMDAwMDAwMDAwIC0wNDAwCisrKyBsYW5nL3NtbG5qL3BhdGNoZXMvcGF0Y2gtYXAJ
MjAwOS0wMy0xMSAxNDozMjoxNy4wMDAwMDAwMDAgLTA0MDAKQEAgLTEsNyArMSw3IEBACiAkTmV0
QlNEOiBwYXRjaC1hcCx2IDEuMiAyMDAzLzA3LzAxIDIzOjE5OjE0IGp0YiBFeHAgJAogCi0tLS0g
c3JjL3J1bnRpbWUvaW5jbHVkZS9jYWNoZS1mbHVzaC5oLm9yaWcKLSsrKyBzcmMvcnVudGltZS9p
bmNsdWRlL2NhY2hlLWZsdXNoLmgKKy0tLSBiYXNlL3J1bnRpbWUvaW5jbHVkZS9jYWNoZS1mbHVz
aC5oLm9yaWcJMjAwMS0wNC0yMCAwOToyNjo0Ni4wMDAwMDAwMDAgLTA0MDAKKysrKyBiYXNlL3J1
bnRpbWUvaW5jbHVkZS9jYWNoZS1mbHVzaC5oCiBAQCAtNDAsNyArNDAsNyBAQAogIGV4dGVybiBG
bHVzaElDYWNoZSAodm9pZCAqYWRkciwgaW50IG5ieXRlcyk7CiAgCmRpZmYgLXggQ1ZTIC11ck4g
bGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYXEgbGFuZy9zbWxuai9wYXRjaGVzL3BhdGNo
LWFxCi0tLSBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRjaC1hcQkyMDAzLTA3LTAxIDE5OjE5
OjE0LjAwMDAwMDAwMCAtMDQwMAorKysgbGFuZy9zbWxuai9wYXRjaGVzL3BhdGNoLWFxCTIwMDkt
MDMtMTEgMTQ6MzI6MTcuMDAwMDAwMDAwIC0wNDAwCkBAIC0xLDggKzEsOCBAQAogJE5ldEJTRDog
cGF0Y2gtYXEsdiAxLjIgMjAwMy8wNy8wMSAyMzoxOToxNCBqdGIgRXhwICQKIAotLS0tIHNyYy9y
dW50aW1lL21hY2gtZGVwL1BQQy5wcmltLmFzbS5vcmlnCi0rKysgc3JjL3J1bnRpbWUvbWFjaC1k
ZXAvUFBDLnByaW0uYXNtCi1AQCAtODEzLDcgKzgxMyw3IEBACistLS0gYmFzZS9ydW50aW1lL21h
Y2gtZGVwL1BQQy5wcmltLmFzbS5vcmlnCTIwMDUtMDUtMDMgMTM6MjY6NDkuMDAwMDAwMDAwIC0w
NDAwCisrKysgYmFzZS9ydW50aW1lL21hY2gtZGVwL1BQQy5wcmltLmFzbQorQEAgLTg0Niw3ICs4
NDYsNyBAQCBDRU5UUlkoUmVzdG9yZUZQUmVncykKICAJbGZkCWYzMSwgMTM2KHIzKQogIAlibHIK
ICAKZGlmZiAteCBDVlMgLXVyTiBsYW5nL3NtbG5qLm9yaWcvcGF0Y2hlcy9wYXRjaC1hciBsYW5n
L3NtbG5qL3BhdGNoZXMvcGF0Y2gtYXIKLS0tIGxhbmcvc21sbmoub3JpZy9wYXRjaGVzL3BhdGNo
LWFyCTIwMDYtMDMtMjggMTY6MzU6MjcuMDAwMDAwMDAwIC0wNTAwCisrKyBsYW5nL3NtbG5qL3Bh
dGNoZXMvcGF0Y2gtYXIJMjAwOS0wMy0xMSAxNDozMjoxNy4wMDAwMDAwMDAgLTA0MDAKQEAgLTEs
OSArMSw5IEBACi0kTmV0QlNEOiBwYXRjaC1hcix2IDEuMSAyMDA2LzAzLzI4IDIxOjM1OjI3IGdh
dmFuIEV4cCAkCiskTmV0QlNEJAogCi0tLS0gc3JjL3J1bnRpbWUvaW5jbHVkZS9tbC11bml4ZGVw
Lmgub3JpZwkyMDAyLTEwLTEyIDAyOjAzOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIHNyYy9ydW50
aW1lL2luY2x1ZGUvbWwtdW5peGRlcC5oCi1AQCAtMzA5LDE0ICszMDksMTQgQEAgZXh0ZXJuIGNo
YXIgICAgICpzeXNfZXJybGlzdFtdOwotICNlbGlmIGRlZmluZWQoT1BTWVNfTkVUQlNEKQorLS0t
IGJhc2UvcnVudGltZS9pbmNsdWRlL21sLXVuaXhkZXAuaC5vcmlnCTIwMDgtMTItMDUgMTI6NTc6
MzkuMDAwMDAwMDAwIC0wNTAwCisrKysgYmFzZS9ydW50aW1lL2luY2x1ZGUvbWwtdW5peGRlcC5o
CitAQCAtMzIzLDcgKzMyMyw3IEBAIGV4dGVybiBjaGFyICAgICAqc3lzX2Vycmxpc3RbXTsKKyAj
ZWxpZiBkZWZpbmVkKE9QU1lTX05FVEJTRCkgLyogdmVyc2lvbiAzLnggKi8KICAjICBkZWZpbmUg
T1NfTkFNRQkiQlNEIgogICMgIGRlZmluZSBIQVNfUE9TSVhfTElCUkFSSUVTCiAtIyAgZGVmaW5l
IEhBU19CU0RfU0lHUwpAQCAtMTEsMTEgKzExLDMgQEAKICAjICBkZWZpbmUgSEFTX0dFVFJVU0FH
RQogICMgIGRlZmluZSBIQVNfU0VUSVRJTUVSCiAgIyAgZGVmaW5lIEhBU19NTUFQCi0gIyAgZGVm
aW5lIEhBU19TRUxFQ1QKLSAjICBkZWZpbmUgSEFTX1NDQUxCTgotICMgIGRlZmluZSBIQVNfSUxP
R0IKLS0jICBkZWZpbmUgSEFTX1NJR0NPTlRFWFQKLSsjICBkZWZpbmUgSEFTX1VDT05URVhUCi0g
IyAgZGVmaW5lIEhBU19TVFJFUlJPUgotIAotICNlbmRpZgpkaWZmIC14IENWUyAtdXJOIGxhbmcv
c21sbmoub3JpZy9wYXRjaGVzL3BhdGNoLWFzIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hcwot
LS0gbGFuZy9zbWxuai5vcmlnL3BhdGNoZXMvcGF0Y2gtYXMJMTk2OS0xMi0zMSAxOTowMDowMC4w
MDAwMDAwMDAgLTA1MDAKKysrIGxhbmcvc21sbmovcGF0Y2hlcy9wYXRjaC1hcwkyMDA5LTAzLTEx
IDE0OjMyOjE3LjAwMDAwMDAwMCAtMDQwMApAQCAtMCwwICsxLDEyIEBACiskTmV0QlNEJAorCist
LS0gY29uZmlnL19oZWFwMmV4ZWMub3JpZwkyMDA2LTA0LTIwIDExOjI4OjUzLjAwMDAwMDAwMCAt
MDQwMAorKysrIGNvbmZpZy9faGVhcDJleGVjCitAQCAtMSw1ICsxLDcgQEAKKyAjIUBTSEVMTEAK
KyAKKytTTUxOSl9IT01FPSIke1NNTE5KX0hPTUU6LUBTTUxfQkFTRUB9IgorKworIENNRD1gYmFz
ZW5hbWUgIiQwImAKKyAKKyB1c2FnZSgpIHsK
--000e0cd22960d1938a0464df7606--
From: Christopher Richards <richards@CS.Princeton.EDU>
To: Christopher Richards <richards@cs.princeton.edu>
Cc: gnats-bugs@netbsd.org, "Jeremy C. Reed" <reed@reedmedia.net>
Subject: Re: pkg/40954
Date: Wed, 11 Mar 2009 18:47:36 -0400
My apologies for the base64. I'm resending the patch in-line.
Chris
diff -x CVS -urN lang/smlnj.orig/Makefile lang/smlnj/Makefile
--- lang/smlnj.orig/Makefile 2008-05-25 22:13:21.000000000 -0400
+++ lang/smlnj/Makefile 2009-03-11 16:57:34.000000000 -0400
@@ -3,11 +3,8 @@
DISTNAME= boot.${BOX}-unix
PKGNAME= smlnj-${SML_VERSION}
-PKGREVISION= 3
CATEGORIES= lang
-MASTER_SITES= ftp://flint.cs.yale.edu/pub/smlnj/working/${SML_VERSION}/ \
- http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/ \
- ftp://flint.cs.yale.edu/pub/smlnj/working/${SML_VERSION}/
+MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/
DISTFILES= MLRISC.tgz \
boot.${BOX}-unix.tgz \
ckit.tgz \
@@ -16,28 +13,27 @@
compiler.tgz \
config.tgz \
eXene.tgz \
+ heap2asm.tgz \
ml-burg.tgz \
ml-lex.tgz \
- ml-nlffi-lib.tgz \
- ml-nlffigen.tgz \
+ ml-lpt.tgz \
ml-yacc.tgz \
+ nlffi.tgz \
+ pgraph.tgz \
runtime.tgz \
+ smlnj-c.tgz \
smlnj-lib.tgz \
- system.tgz
+ system.tgz \
+ trace-debug-profile.tgz
MAINTAINER= richards+netbsd@CS.Princeton.EDU
HOMEPAGE= http://www.smlnj.org/index.html
COMMENT= Popular functional language from Bell Labs
-SML_VERSION= 110.42
+SML_VERSION= 110.69
PKG_DESTDIR_SUPPORT= user-destdir
-# Other mirror sites that generally carry only released versions of SML
-# ftp://rodin.stanford.edu/pub/smlnj/release/
-# ftp://ftp.cl.cam.ac.uk/MIRRORED/smlnj/release/
-# ftp://ftp.ntua.gr/pub/lang/smlnj/release/
-
WRKSRC= ${WRKDIR}
DIST_SUBDIR= smlnj-${SML_VERSION}
USE_TOOLS+= gmake pax
@@ -46,9 +42,7 @@
CONFLICTS= sml-nj-[0-9]*
SML_BASE= ${PREFIX}/lib/smlnj
-SML_LIBDIR= ${SML_BASE}/lib
-SML_BINDIR= ${SML_BASE}/bin
-SML_SCRIPTS= _link-sml _run-sml _ml-build _ml-makedepend
+SML_SCRIPTS= _heap2exec _link-sml _ml-build _ml-makedepend _run-sml
.include "../../lang/smlnj/Makefile.common"
@@ -56,7 +50,7 @@
# create parent directory for the runtime system
pre-extract:
- ${MKDIR} ${WRKDIR}/src || ${TRUE}
+ ${MKDIR} ${WRKDIR}/base || ${TRUE}
# make it easier to patch the runtime system
do-extract:
@@ -65,7 +59,7 @@
cd ${WRKDIR}; ${EXTRACT_CMD}
${_PKG_SILENT}${_PKG_DEBUG} \
extract_file="${_DISTDIR}/runtime.tgz"; export extract_file; \
- cd ${WRKDIR}/src; ${EXTRACT_CMD}
+ cd ${WRKDIR}/base; ${EXTRACT_CMD}
# make symlinks to the dist files
post-extract:
@@ -80,7 +74,7 @@
${SED} -e 's|@SML_BASE@|${SML_BASE}|g' \
< "$${f}.tmp" > "$${f}"; \
done; \
- cd ${WRKDIR}/src/runtime/objs; \
+ cd ${WRKDIR}/base/runtime/objs; \
for f in *; do \
${CP} "$${f}" "$${f}.tmp"; \
${SED} -e 's|@CFLAGS@|${CFLAGS}|g' \
diff -x CVS -urN lang/smlnj.orig/Makefile.common lang/smlnj/Makefile.common
--- lang/smlnj.orig/Makefile.common 2008-04-12 18:43:02.000000000 -0400
+++ lang/smlnj/Makefile.common 2009-03-11 16:56:44.000000000 -0400
@@ -1,4 +1,5 @@
# $NetBSD: Makefile.common,v 1.8 2008/04/12 22:43:02 jlam Exp $
+# used by lang/smlnj/Makefile
# smlnj also supports hppa, sparc, ppc, mlrisc & alpha
# pkg support for those platforms, and say, solaris-x86
diff -x CVS -urN lang/smlnj.orig/PLIST lang/smlnj/PLIST
--- lang/smlnj.orig/PLIST 2008-04-12 18:43:03.000000000 -0400
+++ lang/smlnj/PLIST 2009-03-11 17:22:10.000000000 -0400
@@ -1,262 +1,333 @@
-@comment $NetBSD: PLIST,v 1.5 2008/04/12 22:43:03 jlam Exp $
+@comment $NetBSD$
+bin/heap2asm
+bin/heap2exec
+bin/ml-antlr
bin/ml-build
bin/ml-burg
bin/ml-lex
bin/ml-makedepend
${PLIST.nlffi}bin/ml-nlffigen
+bin/ml-ulex
bin/ml-yacc
bin/nowhere
bin/sml
lib/smlnj/bin/.arch-n-opsys
+lib/smlnj/bin/.heap/heap2asm.${BOX}-${OS}
+lib/smlnj/bin/.heap/ml-antlr.${BOX}-${OS}
lib/smlnj/bin/.heap/ml-burg.${BOX}-${OS}
lib/smlnj/bin/.heap/ml-lex.${BOX}-${OS}
${PLIST.nlffi}lib/smlnj/bin/.heap/ml-nlffigen.${BOX}-${OS}
+lib/smlnj/bin/.heap/ml-ulex.${BOX}-${OS}
lib/smlnj/bin/.heap/ml-yacc.${BOX}-${OS}
lib/smlnj/bin/.heap/nowhere.${BOX}-${OS}
lib/smlnj/bin/.heap/sml.${BOX}-${OS}
lib/smlnj/bin/.link-sml
lib/smlnj/bin/.run-sml
lib/smlnj/bin/.run/run.${BOX}-${LOWER_OPSYS}
+lib/smlnj/bin/heap2asm
+lib/smlnj/bin/heap2exec
+lib/smlnj/bin/ml-antlr
lib/smlnj/bin/ml-build
lib/smlnj/bin/ml-burg
lib/smlnj/bin/ml-lex
lib/smlnj/bin/ml-makedepend
${PLIST.nlffi}lib/smlnj/bin/ml-nlffigen
+lib/smlnj/bin/ml-ulex
lib/smlnj/bin/ml-yacc
lib/smlnj/bin/nowhere
lib/smlnj/bin/sml
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/ALPHA.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/Control.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/Graphs.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/HPPA.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/IA32.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/Lib.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/MLRISC.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/MLTREE.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/PPC.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/SPARC.cm
-lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix/Visual.cm
-lib/smlnj/lib/basis.cm/CM/${BOX}-unix/basis.cm
-lib/smlnj/lib/burg-ext.cm/CM/${BOX}-unix/burg-ext.cm
-${PLIST.nlffi}lib/smlnj/lib/c/CM/${BOX}-unix/c.cm
-${PLIST.nlffi}lib/smlnj/lib/c/internals/CM/${BOX}-unix/c-int.cm
-${PLIST.nlffi}lib/smlnj/lib/c/memory/CM/${BOX}-unix/memory.cm
-lib/smlnj/lib/ckit-lib.cm/CM/${BOX}-unix/ckit-lib.cm
-lib/smlnj/lib/cml-lib/CM/${BOX}-unix/smlnj-lib.cm
-lib/smlnj/lib/cml-lib/CM/${BOX}-unix/trace-cml.cm
-lib/smlnj/lib/cml/CM/${BOX}-unix/basis.cm
-lib/smlnj/lib/cml/CM/${BOX}-unix/cml-internal.cm
-lib/smlnj/lib/cml/CM/${BOX}-unix/cml.cm
-lib/smlnj/lib/cml/CM/${BOX}-unix/core-cml.cm
-lib/smlnj/lib/controls-lib.cm/CM/${BOX}-unix/controls-lib.cm
-lib/smlnj/lib/dir-tool.cm/CM/${BOX}-unix/dir-tool.cm
-lib/smlnj/lib/eXene.cm/CM/${BOX}-unix/eXene.cm
-lib/smlnj/lib/grm-ext.cm/CM/${BOX}-unix/grm-ext.cm
-lib/smlnj/lib/hash-cons-lib.cm/CM/${BOX}-unix/hash-cons-lib.cm
-lib/smlnj/lib/html-lib.cm/CM/${BOX}-unix/html-lib.cm
-lib/smlnj/lib/inet-lib.cm/CM/${BOX}-unix/inet-lib.cm
-lib/smlnj/lib/lex-ext.cm/CM/${BOX}-unix/lex-ext.cm
-lib/smlnj/lib/make-tool.cm/CM/${BOX}-unix/make-tool.cm
-lib/smlnj/lib/ml-yacc-lib.cm/CM/${BOX}-unix/ml-yacc-lib.cm
-lib/smlnj/lib/mlburg-tool.cm/CM/${BOX}-unix/mlburg-tool.cm
-lib/smlnj/lib/mllex-tool.cm/CM/${BOX}-unix/mllex-tool.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/match-compiler.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/parser.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/pp.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/prec-parser.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/sml-ast.cm
-lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix/source-map.cm
-lib/smlnj/lib/mlyacc-tool.cm/CM/${BOX}-unix/mlyacc-tool.cm
-lib/smlnj/lib/noweb-tool.cm/CM/${BOX}-unix/noweb-tool.cm
-lib/smlnj/lib/nw-ext.cm/CM/${BOX}-unix/nw-ext.cm
+lib/smlnj/lib/SMLNJ-BASIS/.cm/${BOX}-unix/basis.cm
+lib/smlnj/lib/SMLNJ-LIB/Controls/.cm/${BOX}-unix/controls-lib.cm
+lib/smlnj/lib/SMLNJ-LIB/HTML/.cm/${BOX}-unix/html-lib.cm
+lib/smlnj/lib/SMLNJ-LIB/PP/.cm/${BOX}-unix/pp-lib.cm
+lib/smlnj/lib/SMLNJ-LIB/Util/.cm/${BOX}-unix/smlnj-lib.cm
+lib/smlnj/lib/SMLNJ-ML-YACC-LIB/.cm/${BOX}-unix/ml-yacc-lib.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/ALPHA.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/AMD64-Peephole.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/AMD64.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/CCall-Vararg.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/CCall-sparc.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/CCall-x86-64.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/CCall-x86.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/CCall.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/Control.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/Graphs.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/HPPA.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/IA32-Peephole.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/IA32.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/Lib.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/MLRISC.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/MLTREE.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/PPC.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/Peephole.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/RA.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/SPARC.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/StagedAlloc.cm
+lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix/Visual.cm
+lib/smlnj/lib/burg-ext.cm/.cm/${BOX}-unix/burg-ext.cm
+${PLIST.nlffi}lib/smlnj/lib/c/.cm/${BOX}-unix/c.cm
+${PLIST.nlffi}lib/smlnj/lib/c/internals/.cm/${BOX}-unix/c-int.cm
+${PLIST.nlffi}lib/smlnj/lib/c/memory/.cm/${BOX}-unix/memory.cm
+lib/smlnj/lib/ckit-lib.cm/.cm/${BOX}-unix/ckit-lib.cm
+lib/smlnj/lib/cml-lib/.cm/${BOX}-unix/smlnj-lib.cm
+lib/smlnj/lib/cml-lib/.cm/${BOX}-unix/trace-cml.cm
+lib/smlnj/lib/cml/.cm/${BOX}-unix/basis.cm
+lib/smlnj/lib/cml/.cm/${BOX}-unix/cml-internal.cm
+lib/smlnj/lib/cml/.cm/${BOX}-unix/cml.cm
+lib/smlnj/lib/cml/.cm/${BOX}-unix/core-cml.cm
+lib/smlnj/lib/dir-tool.cm/.cm/${BOX}-unix/dir-tool.cm
+lib/smlnj/lib/eXene.cm/.cm/${BOX}-unix/eXene.cm
+lib/smlnj/lib/grm-ext.cm/.cm/${BOX}-unix/grm-ext.cm
+lib/smlnj/lib/hash-cons-lib.cm/.cm/${BOX}-unix/hash-cons-lib.cm
+lib/smlnj/lib/inet-lib.cm/.cm/${BOX}-unix/inet-lib.cm
+lib/smlnj/lib/json-lib.cm/.cm/${BOX}-unix/json-lib.cm
+lib/smlnj/lib/lex-ext.cm/.cm/${BOX}-unix/lex-ext.cm
+lib/smlnj/lib/make-tool.cm/.cm/${BOX}-unix/make-tool.cm
+lib/smlnj/lib/ml-antlr-tool.cm/.cm/${BOX}-unix/ml-antlr-tool.cm
+lib/smlnj/lib/ml-lpt-lib.cm/.cm/${BOX}-unix/ml-lpt-lib.cm
+lib/smlnj/lib/ml-ulex-tool.cm/.cm/${BOX}-unix/ml-ulex-tool.cm
+lib/smlnj/lib/mlburg-tool.cm/.cm/${BOX}-unix/mlburg-tool.cm
+lib/smlnj/lib/mllex-tool.cm/.cm/${BOX}-unix/mllex-tool.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/match-compiler.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/parser.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/pp.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/prec-parser.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/sml-ast.cm
+lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix/source-map.cm
+lib/smlnj/lib/mlyacc-tool.cm/.cm/${BOX}-unix/mlyacc-tool.cm
+lib/smlnj/lib/noweb-tool.cm/.cm/${BOX}-unix/noweb-tool.cm
+lib/smlnj/lib/nw-ext.cm/.cm/${BOX}-unix/nw-ext.cm
lib/smlnj/lib/pathconfig
-lib/smlnj/lib/pgraph-util.cm/CM/${BOX}-unix/pgraph-util.cm
-lib/smlnj/lib/pgraph.cm/CM/${BOX}-unix/pgraph.cm
-lib/smlnj/lib/pickle-lib.cm/CM/${BOX}-unix/pickle-lib.cm
-lib/smlnj/lib/pp-lib.cm/CM/${BOX}-unix/pp-lib.cm
-lib/smlnj/lib/reactive-lib.cm/CM/${BOX}-unix/reactive-lib.cm
-lib/smlnj/lib/regexp-lib.cm/CM/${BOX}-unix/regexp-lib.cm
-lib/smlnj/lib/shell-tool.cm/CM/${BOX}-unix/shell-tool.cm
-lib/smlnj/lib/smlnj-lib.cm/CM/${BOX}-unix/smlnj-lib.cm
-lib/smlnj/lib/smlnj/CM/${BOX}-unix/cm.cm
-lib/smlnj/lib/smlnj/CM/${BOX}-unix/cmb.cm
-lib/smlnj/lib/smlnj/CM/${BOX}-unix/compiler.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/ALPHA.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/Control.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/Graphs.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/HPPA.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/IA32.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/Lib.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/MLRISC.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/MLTREE.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/PPC.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/SPARC.cm
-lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix/Visual.cm
-lib/smlnj/lib/smlnj/cm/CM/${BOX}-unix/cm.cm
-lib/smlnj/lib/smlnj/cm/CM/${BOX}-unix/tools.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/alpha32-unix.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/current.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/hppa-unix.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/ppc-macos.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/ppc-unix.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/sparc-unix.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/x86-unix.cm
-lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix/x86-win32.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/all.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/alpha32.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/compiler.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/current.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/hppa.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/minimal-only.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/minimal.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/ppc.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/sparc.cm
-lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix/x86.cm
-lib/smlnj/lib/smlnj/init/CM/${BOX}-unix/init.cmi
-lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix/cm-lib.cm
-lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix/cm-sig-lib.cm
-lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix/cm0.cm
-lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix/intsys.cm
-lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix/srcpath-lib.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/alpha32.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/basics.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/core.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/debugprof.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/elabdata.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/elaborate.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/execute.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/hppa.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/parser.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/ppc.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/sparc.cm
-lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix/x86.cm
-lib/smlnj/lib/unix-lib.cm/CM/${BOX}-unix/unix-lib.cm
-@dirrm lib/smlnj/lib/unix-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/unix-lib.cm/CM
+lib/smlnj/lib/pgraph-util.cm/.cm/${BOX}-unix/pgraph-util.cm
+lib/smlnj/lib/pgraph.cm/.cm/${BOX}-unix/pgraph.cm
+lib/smlnj/lib/pickle-lib.cm/.cm/${BOX}-unix/pickle-lib.cm
+lib/smlnj/lib/reactive-lib.cm/.cm/${BOX}-unix/reactive-lib.cm
+lib/smlnj/lib/regexp-lib.cm/.cm/${BOX}-unix/regexp-lib.cm
+lib/smlnj/lib/shell-tool.cm/.cm/${BOX}-unix/shell-tool.cm
+lib/smlnj/lib/smlnj-tdp/.cm/${BOX}-unix/back-trace.cm
+lib/smlnj/lib/smlnj-tdp/.cm/${BOX}-unix/coverage.cm
+lib/smlnj/lib/smlnj-tdp/.cm/${BOX}-unix/plugins.cm
+lib/smlnj/lib/smlnj/.cm/${BOX}-unix/cm.cm
+lib/smlnj/lib/smlnj/.cm/${BOX}-unix/cmb.cm
+lib/smlnj/lib/smlnj/.cm/${BOX}-unix/compiler.cm
+lib/smlnj/lib/smlnj/.cm/${BOX}-unix/installer.cm
+lib/smlnj/lib/smlnj/.cm/${BOX}-unix/library-install.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/ALPHA.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/AMD64.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/Control.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/Graphs.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/HPPA.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/IA32.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/Lib.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/MLRISC.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/MLTREE.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/PPC.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/SPARC.cm
+lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix/Visual.cm
+lib/smlnj/lib/smlnj/basis/.cm/${BOX}-unix/basis.cm
+lib/smlnj/lib/smlnj/cm/.cm/${BOX}-unix/cm.cm
+lib/smlnj/lib/smlnj/cm/.cm/${BOX}-unix/tools.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/alpha32-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/amd64-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/current.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/hppa-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/ppc-macos.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/ppc-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/sparc-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/x86-unix.cm
+lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix/x86-win32.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/all.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/alpha32.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/amd64.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/compiler.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/current.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/hppa.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/minimal-only.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/minimal.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/ppc.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/sparc.cm
+lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix/x86.cm
+lib/smlnj/lib/smlnj/init/.cm/${BOX}-unix/init.cmi
+lib/smlnj/lib/smlnj/installer/.cm/${BOX}-unix/util.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/cm-lib.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/cm-sig-lib.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/cm0.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/intsys.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/smlnj-version.cm
+lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix/srcpath-lib.cm
+lib/smlnj/lib/smlnj/ml-yacc/.cm/${BOX}-unix/ml-yacc-lib.cm
+lib/smlnj/lib/smlnj/smlnj-lib/.cm/${BOX}-unix/controls-lib.cm
+lib/smlnj/lib/smlnj/smlnj-lib/.cm/${BOX}-unix/html-lib.cm
+lib/smlnj/lib/smlnj/smlnj-lib/.cm/${BOX}-unix/pp-lib.cm
+lib/smlnj/lib/smlnj/smlnj-lib/.cm/${BOX}-unix/smlnj-lib.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/alpha32.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/amd64.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/basics.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/core.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/debugprof.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/elabdata.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/elaborate.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/execute.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/hppa.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/parser.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/ppc.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/sparc.cm
+lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix/x86.cm
+lib/smlnj/lib/unix-lib.cm/.cm/${BOX}-unix/unix-lib.cm
+@dirrm lib/smlnj/lib/unix-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/unix-lib.cm/.cm
@dirrm lib/smlnj/lib/unix-lib.cm
-@dirrm lib/smlnj/lib/smlnj/viscomp/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/viscomp/CM
+@dirrm lib/smlnj/lib/smlnj/viscomp/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/viscomp/.cm
@dirrm lib/smlnj/lib/smlnj/viscomp
-@dirrm lib/smlnj/lib/smlnj/internal/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/internal/CM
+@dirrm lib/smlnj/lib/smlnj/smlnj-lib/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/smlnj-lib/.cm
+@dirrm lib/smlnj/lib/smlnj/smlnj-lib
+@dirrm lib/smlnj/lib/smlnj/ml-yacc/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/ml-yacc/.cm
+@dirrm lib/smlnj/lib/smlnj/ml-yacc
+@dirrm lib/smlnj/lib/smlnj/internal/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/internal/.cm
@dirrm lib/smlnj/lib/smlnj/internal
-@dirrm lib/smlnj/lib/smlnj/init/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/init/CM
+@dirrm lib/smlnj/lib/smlnj/installer/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/installer/.cm
+@dirrm lib/smlnj/lib/smlnj/installer
+@dirrm lib/smlnj/lib/smlnj/init/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/init/.cm
@dirrm lib/smlnj/lib/smlnj/init
-@dirrm lib/smlnj/lib/smlnj/compiler/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/compiler/CM
+@dirrm lib/smlnj/lib/smlnj/compiler/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/compiler/.cm
@dirrm lib/smlnj/lib/smlnj/compiler
-@dirrm lib/smlnj/lib/smlnj/cmb/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/cmb/CM
+@dirrm lib/smlnj/lib/smlnj/cmb/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/cmb/.cm
@dirrm lib/smlnj/lib/smlnj/cmb
-@dirrm lib/smlnj/lib/smlnj/cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/cm/CM
+@dirrm lib/smlnj/lib/smlnj/cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/cm/.cm
@dirrm lib/smlnj/lib/smlnj/cm
-@dirrm lib/smlnj/lib/smlnj/MLRISC/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/MLRISC/CM
+@dirrm lib/smlnj/lib/smlnj/basis/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/basis/.cm
+@dirrm lib/smlnj/lib/smlnj/basis
+@dirrm lib/smlnj/lib/smlnj/MLRISC/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/MLRISC/.cm
@dirrm lib/smlnj/lib/smlnj/MLRISC
-@dirrm lib/smlnj/lib/smlnj/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj/CM
-@dirrm lib/smlnj/lib/smlnj-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/smlnj-lib.cm/CM
-@dirrm lib/smlnj/lib/smlnj-lib.cm
+@dirrm lib/smlnj/lib/smlnj/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj/.cm
+@dirrm lib/smlnj/lib/smlnj-tdp/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/smlnj-tdp/.cm
+@dirrm lib/smlnj/lib/smlnj-tdp
@dirrm lib/smlnj/lib/smlnj
-@dirrm lib/smlnj/lib/shell-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/shell-tool.cm/CM
+@dirrm lib/smlnj/lib/shell-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/shell-tool.cm/.cm
@dirrm lib/smlnj/lib/shell-tool.cm
-@dirrm lib/smlnj/lib/regexp-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/regexp-lib.cm/CM
+@dirrm lib/smlnj/lib/regexp-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/regexp-lib.cm/.cm
@dirrm lib/smlnj/lib/regexp-lib.cm
-@dirrm lib/smlnj/lib/reactive-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/reactive-lib.cm/CM
+@dirrm lib/smlnj/lib/reactive-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/reactive-lib.cm/.cm
@dirrm lib/smlnj/lib/reactive-lib.cm
-@dirrm lib/smlnj/lib/pp-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/pp-lib.cm/CM
-@dirrm lib/smlnj/lib/pp-lib.cm
-@dirrm lib/smlnj/lib/pickle-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/pickle-lib.cm/CM
+@dirrm lib/smlnj/lib/pickle-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/pickle-lib.cm/.cm
@dirrm lib/smlnj/lib/pickle-lib.cm
-@dirrm lib/smlnj/lib/pgraph.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/pgraph.cm/CM
+@dirrm lib/smlnj/lib/pgraph.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/pgraph.cm/.cm
@dirrm lib/smlnj/lib/pgraph.cm
-@dirrm lib/smlnj/lib/pgraph-util.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/pgraph-util.cm/CM
+@dirrm lib/smlnj/lib/pgraph-util.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/pgraph-util.cm/.cm
@dirrm lib/smlnj/lib/pgraph-util.cm
-@dirrm lib/smlnj/lib/nw-ext.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/nw-ext.cm/CM
+@dirrm lib/smlnj/lib/nw-ext.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/nw-ext.cm/.cm
@dirrm lib/smlnj/lib/nw-ext.cm
-@dirrm lib/smlnj/lib/noweb-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/noweb-tool.cm/CM
+@dirrm lib/smlnj/lib/noweb-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/noweb-tool.cm/.cm
@dirrm lib/smlnj/lib/noweb-tool.cm
-@dirrm lib/smlnj/lib/mlyacc-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/mlyacc-tool.cm/CM
+@dirrm lib/smlnj/lib/mlyacc-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/mlyacc-tool.cm/.cm
@dirrm lib/smlnj/lib/mlyacc-tool.cm
-@dirrm lib/smlnj/lib/mlrisc-tools/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/mlrisc-tools/CM
+@dirrm lib/smlnj/lib/mlrisc-tools/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/mlrisc-tools/.cm
@dirrm lib/smlnj/lib/mlrisc-tools
-@dirrm lib/smlnj/lib/mllex-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/mllex-tool.cm/CM
+@dirrm lib/smlnj/lib/mllex-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/mllex-tool.cm/.cm
@dirrm lib/smlnj/lib/mllex-tool.cm
-@dirrm lib/smlnj/lib/mlburg-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/mlburg-tool.cm/CM
+@dirrm lib/smlnj/lib/mlburg-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/mlburg-tool.cm/.cm
@dirrm lib/smlnj/lib/mlburg-tool.cm
-@dirrm lib/smlnj/lib/ml-yacc-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/ml-yacc-lib.cm/CM
-@dirrm lib/smlnj/lib/ml-yacc-lib.cm
-@dirrm lib/smlnj/lib/make-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/make-tool.cm/CM
+@dirrm lib/smlnj/lib/ml-ulex-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/ml-ulex-tool.cm/.cm
+@dirrm lib/smlnj/lib/ml-ulex-tool.cm
+@dirrm lib/smlnj/lib/ml-lpt-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/ml-lpt-lib.cm/.cm
+@dirrm lib/smlnj/lib/ml-lpt-lib.cm
+@dirrm lib/smlnj/lib/ml-antlr-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/ml-antlr-tool.cm/.cm
+@dirrm lib/smlnj/lib/ml-antlr-tool.cm
+@dirrm lib/smlnj/lib/make-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/make-tool.cm/.cm
@dirrm lib/smlnj/lib/make-tool.cm
-@dirrm lib/smlnj/lib/lex-ext.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/lex-ext.cm/CM
+@dirrm lib/smlnj/lib/lex-ext.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/lex-ext.cm/.cm
@dirrm lib/smlnj/lib/lex-ext.cm
-@dirrm lib/smlnj/lib/inet-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/inet-lib.cm/CM
+@dirrm lib/smlnj/lib/json-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/json-lib.cm/.cm
+@dirrm lib/smlnj/lib/json-lib.cm
+@dirrm lib/smlnj/lib/inet-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/inet-lib.cm/.cm
@dirrm lib/smlnj/lib/inet-lib.cm
-@dirrm lib/smlnj/lib/html-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/html-lib.cm/CM
-@dirrm lib/smlnj/lib/html-lib.cm
-@dirrm lib/smlnj/lib/hash-cons-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/hash-cons-lib.cm/CM
+@dirrm lib/smlnj/lib/hash-cons-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/hash-cons-lib.cm/.cm
@dirrm lib/smlnj/lib/hash-cons-lib.cm
-@dirrm lib/smlnj/lib/grm-ext.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/grm-ext.cm/CM
+@dirrm lib/smlnj/lib/grm-ext.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/grm-ext.cm/.cm
@dirrm lib/smlnj/lib/grm-ext.cm
-@dirrm lib/smlnj/lib/eXene.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/eXene.cm/CM
+@dirrm lib/smlnj/lib/eXene.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/eXene.cm/.cm
@dirrm lib/smlnj/lib/eXene.cm
-@dirrm lib/smlnj/lib/dir-tool.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/dir-tool.cm/CM
+@dirrm lib/smlnj/lib/dir-tool.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/dir-tool.cm/.cm
@dirrm lib/smlnj/lib/dir-tool.cm
-@dirrm lib/smlnj/lib/controls-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/controls-lib.cm/CM
-@dirrm lib/smlnj/lib/controls-lib.cm
-@dirrm lib/smlnj/lib/cml/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/cml/CM
-@dirrm lib/smlnj/lib/cml-lib/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/cml-lib/CM
+@dirrm lib/smlnj/lib/cml/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/cml/.cm
+@dirrm lib/smlnj/lib/cml-lib/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/cml-lib/.cm
@dirrm lib/smlnj/lib/cml-lib
@dirrm lib/smlnj/lib/cml
-@dirrm lib/smlnj/lib/ckit-lib.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/ckit-lib.cm/CM
+@dirrm lib/smlnj/lib/ckit-lib.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/ckit-lib.cm/.cm
@dirrm lib/smlnj/lib/ckit-lib.cm
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/memory/CM/${BOX}-unix
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/memory/CM
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/memory/.cm/${BOX}-unix
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/memory/.cm
${PLIST.nlffi}@dirrm lib/smlnj/lib/c/memory
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/internals/CM/${BOX}-unix
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/internals/CM
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/internals/.cm/${BOX}-unix
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/internals/.cm
${PLIST.nlffi}@dirrm lib/smlnj/lib/c/internals
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/CM/${BOX}-unix
-${PLIST.nlffi}@dirrm lib/smlnj/lib/c/CM
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/.cm/${BOX}-unix
+${PLIST.nlffi}@dirrm lib/smlnj/lib/c/.cm
${PLIST.nlffi}@dirrm lib/smlnj/lib/c
-@dirrm lib/smlnj/lib/burg-ext.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/burg-ext.cm/CM
+@dirrm lib/smlnj/lib/burg-ext.cm/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/burg-ext.cm/.cm
@dirrm lib/smlnj/lib/burg-ext.cm
-@dirrm lib/smlnj/lib/basis.cm/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/basis.cm/CM
-@dirrm lib/smlnj/lib/basis.cm
-@dirrm lib/smlnj/lib/SMLNJ-MLRISC/CM/${BOX}-unix
-@dirrm lib/smlnj/lib/SMLNJ-MLRISC/CM
+@dirrm lib/smlnj/lib/SMLNJ-MLRISC/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-MLRISC/.cm
@dirrm lib/smlnj/lib/SMLNJ-MLRISC
+@dirrm lib/smlnj/lib/SMLNJ-ML-YACC-LIB/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-ML-YACC-LIB/.cm
+@dirrm lib/smlnj/lib/SMLNJ-ML-YACC-LIB
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Util/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Util/.cm
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Util
+@dirrm lib/smlnj/lib/SMLNJ-LIB/PP/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-LIB/PP/.cm
+@dirrm lib/smlnj/lib/SMLNJ-LIB/PP
+@dirrm lib/smlnj/lib/SMLNJ-LIB/HTML/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-LIB/HTML/.cm
+@dirrm lib/smlnj/lib/SMLNJ-LIB/HTML
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Controls/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Controls/.cm
+@dirrm lib/smlnj/lib/SMLNJ-LIB/Controls
+@dirrm lib/smlnj/lib/SMLNJ-LIB
+@dirrm lib/smlnj/lib/SMLNJ-BASIS/.cm/${BOX}-unix
+@dirrm lib/smlnj/lib/SMLNJ-BASIS/.cm
+@dirrm lib/smlnj/lib/SMLNJ-BASIS
@dirrm lib/smlnj/lib
@dirrm lib/smlnj/bin/.run
@dirrm lib/smlnj/bin/.heap
diff -x CVS -urN lang/smlnj.orig/distinfo lang/smlnj/distinfo
--- lang/smlnj.orig/distinfo 2007-01-19 08:09:25.000000000 -0500
+++ lang/smlnj/distinfo 2009-03-11 14:53:26.000000000 -0400
@@ -1,74 +1,80 @@
$NetBSD: distinfo,v 1.11 2007/01/19 13:09:25 dmcmahill Exp $
-SHA1 (smlnj-110.42/MLRISC.tgz) = 55055ed06f7dd2ef178ef365c018f0f38f740528
-RMD160 (smlnj-110.42/MLRISC.tgz) = 40aebe1cbf975e098bdf5115fd13b428e845195a
-Size (smlnj-110.42/MLRISC.tgz) = 1173187 bytes
-SHA1 (smlnj-110.42/boot.ppc-unix.tgz) =
50c12d123cbb953283cc01308bda94ba6a004f10
-RMD160 (smlnj-110.42/boot.ppc-unix.tgz) =
b4c2b8683024f2e377dc131eb377190c49808122
-Size (smlnj-110.42/boot.ppc-unix.tgz) = 5063945 bytes
-SHA1 (smlnj-110.42/boot.sparc-unix.tgz) =
d90361e8de683bde9f2ce76d5a3fdc0b9bcf7b1f
-RMD160 (smlnj-110.42/boot.sparc-unix.tgz) =
9b2c44e69ee46e24b51358939a3e8b494e6bce53
-Size (smlnj-110.42/boot.sparc-unix.tgz) = 5216813 bytes
-SHA1 (smlnj-110.42/boot.x86-unix.tgz) =
7e85b25459886179be0bcb949cd489f62c0a5424
-RMD160 (smlnj-110.42/boot.x86-unix.tgz) =
2af62e8196de6e7da03cfda10d4799bf7a56188e
-Size (smlnj-110.42/boot.x86-unix.tgz) = 5147025 bytes
-SHA1 (smlnj-110.42/ckit.tgz) = f47599df014c9c6dcd02c0bfcc0fad5d1409451b
-RMD160 (smlnj-110.42/ckit.tgz) = 87c737cf032f18c4381297ee895f07c81f4bd5d3
-Size (smlnj-110.42/ckit.tgz) = 168000 bytes
-SHA1 (smlnj-110.42/cm.tgz) = c102131e974e91426bab1cc30005f8e02f7622b6
-RMD160 (smlnj-110.42/cm.tgz) = e80f68805c33ff98d2139cdef04df179670114c0
-Size (smlnj-110.42/cm.tgz) = 202633 bytes
-SHA1 (smlnj-110.42/cml.tgz) = 61f20116032d284a0d2eecd5f14de5378ff4ea6d
-RMD160 (smlnj-110.42/cml.tgz) = f372145c1444814de2185d52cf422a5dc7d9ce70
-Size (smlnj-110.42/cml.tgz) = 128485 bytes
-SHA1 (smlnj-110.42/compiler.tgz) = fbde2959e05c04333131450d152a6ac5890b2867
-RMD160 (smlnj-110.42/compiler.tgz) = 00af4ad5382c93e59a1a66d3c9cce5d13a8c102c
-Size (smlnj-110.42/compiler.tgz) = 704669 bytes
-SHA1 (smlnj-110.42/config.tgz) = f7c1b75019c274872d599b9f5a42ce0ee1926c24
-RMD160 (smlnj-110.42/config.tgz) = 0ccd824debb96db27f419820f98135242401f6af
-Size (smlnj-110.42/config.tgz) = 13660 bytes
-SHA1 (smlnj-110.42/eXene.tgz) = e213539308047636da34a82fbcc7d59a8f03ea7a
-RMD160 (smlnj-110.42/eXene.tgz) = 5eb1a2527126587f4c894ae7e9c23d8c4209539c
-Size (smlnj-110.42/eXene.tgz) = 695431 bytes
-SHA1 (smlnj-110.42/ml-burg.tgz) = 8c69fd51f7eb86b941883fa7c309b7e54baf28ea
-RMD160 (smlnj-110.42/ml-burg.tgz) = d05eee14de5443d9a3b434ea0e35d91c61aea740
-Size (smlnj-110.42/ml-burg.tgz) = 31696 bytes
-SHA1 (smlnj-110.42/ml-lex.tgz) = 524714f95cd014e55624e9d1b270a77100f28cd1
-RMD160 (smlnj-110.42/ml-lex.tgz) = 6e830a1b50503ebfe8f7429cb6e6674fe3a17805
-Size (smlnj-110.42/ml-lex.tgz) = 32108 bytes
-SHA1 (smlnj-110.42/ml-nlffi-lib.tgz) = 5222ccdc1d9737360a0ce60b05137b476282e9f3
-RMD160 (smlnj-110.42/ml-nlffi-lib.tgz) =
821c4416429a71337c7676093bf3625e26db1761
-Size (smlnj-110.42/ml-nlffi-lib.tgz) = 33645 bytes
-SHA1 (smlnj-110.42/ml-nlffigen.tgz) = d3e0e064dfd0fd3c12bda72e098224ebea180a6a
-RMD160 (smlnj-110.42/ml-nlffigen.tgz) =
e5e7a3fbe03aae141765de9b8e4495e796e32ec7
-Size (smlnj-110.42/ml-nlffigen.tgz) = 28836 bytes
-SHA1 (smlnj-110.42/ml-yacc.tgz) = ff4a077099a6f8d2bb8b32a64c9ef45e89358346
-RMD160 (smlnj-110.42/ml-yacc.tgz) = 5d9767e53f62a2fbcb27296979034f585274a430
-Size (smlnj-110.42/ml-yacc.tgz) = 95608 bytes
-SHA1 (smlnj-110.42/runtime.tgz) = 913b2c4ca3edea2fd7fcc09c482665fb92e5f540
-RMD160 (smlnj-110.42/runtime.tgz) = 8ce0479245b17678971e6af1a5798e358559d17c
-Size (smlnj-110.42/runtime.tgz) = 313057 bytes
-SHA1 (smlnj-110.42/smlnj-lib.tgz) = c48a8e19d4a14799d7596ce896f4a2040fe1c2bf
-RMD160 (smlnj-110.42/smlnj-lib.tgz) = c403e9206eb939e04e88e9a37ca797bbd341ef27
-Size (smlnj-110.42/smlnj-lib.tgz) = 251230 bytes
-SHA1 (smlnj-110.42/system.tgz) = 0b9f61052a6413ac1d391a6b7ddf903875d192ff
-RMD160 (smlnj-110.42/system.tgz) = 5f9cbdd50e47160f3190d08189f7b1f35bf646c9
-Size (smlnj-110.42/system.tgz) = 177548 bytes
-SHA1 (patch-aa) = 370fc94462f60fcf1b28ddad2266311b19d92eca
-SHA1 (patch-ab) = 3d5946b2d72dee255159afe6fb25240f8fa7e306
-SHA1 (patch-ac) = 7b3ea837db260542d1477ccbe0dba24c6afbc1e2
-SHA1 (patch-ad) = a406bde2f6f7e2d93d652135b94aefd4b7aca494
-SHA1 (patch-ae) = 5796401418fd91a795fdfe75060cf654dd315ac1
-SHA1 (patch-af) = a2b75a7309398b6869995cb46aeedc1416700da4
-SHA1 (patch-ag) = dae9c89ccc7ada96bd3ac4b2bae1da6427902fb4
-SHA1 (patch-ah) = 4d1f861cf18424db18fbcd19fd2e123b9a0a5247
-SHA1 (patch-ai) = dfb45b2c7d59bcd9230edb30d5dfffd4dab5782e
-SHA1 (patch-aj) = 24bbb65b02e97bec7673dccbf07fce9853c94984
-SHA1 (patch-ak) = 55738c10e5adc6b99d909a784f256b24e250990e
-SHA1 (patch-al) = 82842e8662670336e134f12e0851d5f61413211d
-SHA1 (patch-am) = 06d8cb145217c46ada440e0d3e7420ea99651064
-SHA1 (patch-an) = d6e1a75d5fb68423ce3181622de919c2337db2e7
-SHA1 (patch-ao) = 1c66024c5949269291cbf6f815baf6162db47d31
-SHA1 (patch-ap) = 8e9e28548b4e58de68a11982a355a010ea96aa29
-SHA1 (patch-aq) = 7d0734b76d778d7f584d2e70d325fd72e6554b01
-SHA1 (patch-ar) = 7e0bcad61ecdc39bb0fc038ea02921d683ba8648
+SHA1 (smlnj-110.69/MLRISC.tgz) = 77091a1d1336c22c656e85a2ded4240d96fb1aec
+RMD160 (smlnj-110.69/MLRISC.tgz) = 14c1b5ac6d509362aa6d5da951f794c3d783eb60
+Size (smlnj-110.69/MLRISC.tgz) = 1435001 bytes
+SHA1 (smlnj-110.69/boot.x86-unix.tgz) =
f6167dbbad3b9d5c36c8c04621b5ca966c8836ae
+RMD160 (smlnj-110.69/boot.x86-unix.tgz) =
fd3e4c33a06865f825ea98942811d3fc2312aa27
+Size (smlnj-110.69/boot.x86-unix.tgz) = 5847027 bytes
+SHA1 (smlnj-110.69/ckit.tgz) = d04c95308996d44205c9f0d2cfd4f5c0288e4658
+RMD160 (smlnj-110.69/ckit.tgz) = e8997e8d06ebb796355e1c1de55801fd81c91b86
+Size (smlnj-110.69/ckit.tgz) = 199406 bytes
+SHA1 (smlnj-110.69/cm.tgz) = c133a316e83c128184ff976e15316442ed411726
+RMD160 (smlnj-110.69/cm.tgz) = 9f51608bf6f3154131954dd155b0e212ba568b2f
+Size (smlnj-110.69/cm.tgz) = 202292 bytes
+SHA1 (smlnj-110.69/cml.tgz) = 4078eb6d1307323b0d67b51b1a864813141937c9
+RMD160 (smlnj-110.69/cml.tgz) = 76af48b7fe46ad3bbc7e651442d03f9f0179ac5e
+Size (smlnj-110.69/cml.tgz) = 104709 bytes
+SHA1 (smlnj-110.69/compiler.tgz) = e19e208874490149035ef7be3521310d887715d3
+RMD160 (smlnj-110.69/compiler.tgz) = 57b149b8aea8290ff2acaa89bd900012842f69df
+Size (smlnj-110.69/compiler.tgz) = 824874 bytes
+SHA1 (smlnj-110.69/config.tgz) = 62323fc515f22a5682bb26cce4e6fafb81fd8df8
+RMD160 (smlnj-110.69/config.tgz) = 0a70d77abd3b9743375bca86cc01a00726ac4698
+Size (smlnj-110.69/config.tgz) = 504169 bytes
+SHA1 (smlnj-110.69/eXene.tgz) = 55f1cd7944b732fb5fae76941fd77f447a80755c
+RMD160 (smlnj-110.69/eXene.tgz) = ead27c3e525955b1ba64979ddaccb8aa336cc3c6
+Size (smlnj-110.69/eXene.tgz) = 714587 bytes
+SHA1 (smlnj-110.69/heap2asm.tgz) = 9a25077dad7f65e785515ec850880a52c2ee2e41
+RMD160 (smlnj-110.69/heap2asm.tgz) = 23e7bad78f11e284d5aedaf6d399234cd8df731b
+Size (smlnj-110.69/heap2asm.tgz) = 1327 bytes
+SHA1 (smlnj-110.69/ml-burg.tgz) = f3a2520cd1664f4728b03b39cf60a26583ee73ed
+RMD160 (smlnj-110.69/ml-burg.tgz) = 53892a1e62d30d166374ced13d48be49b44debc2
+Size (smlnj-110.69/ml-burg.tgz) = 36670 bytes
+SHA1 (smlnj-110.69/ml-lex.tgz) = 8e7d338d3cc03c3009efee24ae10af6d44883aae
+RMD160 (smlnj-110.69/ml-lex.tgz) = 1a230216b9458278182a28d3412d0fb7c8ecf81a
+Size (smlnj-110.69/ml-lex.tgz) = 33061 bytes
+SHA1 (smlnj-110.69/ml-lpt.tgz) = a5430e3900f70117759adde8481cd22b73b1c61b
+RMD160 (smlnj-110.69/ml-lpt.tgz) = a67530a9230a4d96ae67b642fd04a28f9f6ca7b7
+Size (smlnj-110.69/ml-lpt.tgz) = 257417 bytes
+SHA1 (smlnj-110.69/ml-yacc.tgz) = d8cf44d4e813174ca9398b79267dfc53970529d0
+RMD160 (smlnj-110.69/ml-yacc.tgz) = 53b71d3d6a0da27efd584c043edd223da32bec3c
+Size (smlnj-110.69/ml-yacc.tgz) = 102025 bytes
+SHA1 (smlnj-110.69/nlffi.tgz) = 484727a1df899e6289f421dca607646fc277d7a9
+RMD160 (smlnj-110.69/nlffi.tgz) = 1d2b2cd4667ddd6620ac65d1487a721873db28ea
+Size (smlnj-110.69/nlffi.tgz) = 75176 bytes
+SHA1 (smlnj-110.69/pgraph.tgz) = 717f5b85c1f9b331df8495a53b6a635faf55c386
+RMD160 (smlnj-110.69/pgraph.tgz) = f6eb61fe34093d42702953a546a3ee7ee2fe5644
+Size (smlnj-110.69/pgraph.tgz) = 5453 bytes
+SHA1 (smlnj-110.69/runtime.tgz) = c00e0892580b85a1db6ee285c4281f7f5cb740da
+RMD160 (smlnj-110.69/runtime.tgz) = 52a6b812f56d3f97ee11e533a7d65003ddea97cc
+Size (smlnj-110.69/runtime.tgz) = 333887 bytes
+SHA1 (smlnj-110.69/smlnj-c.tgz) = a0c32f25fd7a3f1bf23b584fcbabf99c5b46f5ca
+RMD160 (smlnj-110.69/smlnj-c.tgz) = ddf74fcddac3d32a2da4c041cb5e29ecc2bc6e51
+Size (smlnj-110.69/smlnj-c.tgz) = 10627 bytes
+SHA1 (smlnj-110.69/smlnj-lib.tgz) = 004d7082b1bea36ce8ac412f70bc7f764f362628
+RMD160 (smlnj-110.69/smlnj-lib.tgz) = 60b4ffbc61ba139eac9ddf0dafd1a27efa44243d
+Size (smlnj-110.69/smlnj-lib.tgz) = 257519 bytes
+SHA1 (smlnj-110.69/system.tgz) = 36999858646da3d918f62630ea4126e52cbd9693
+RMD160 (smlnj-110.69/system.tgz) = aad65d42888e6c59401013bc0f1221cea07a52dd
+Size (smlnj-110.69/system.tgz) = 239953 bytes
+SHA1 (smlnj-110.69/trace-debug-profile.tgz) =
925740fade3dfde42068b65d3f3fb1afa3b47159
+RMD160 (smlnj-110.69/trace-debug-profile.tgz) =
c70c14b3b9c0646eb00dcc82ff5cab587c5ca7d6
+Size (smlnj-110.69/trace-debug-profile.tgz) = 3937 bytes
+SHA1 (patch-ab) = 178b8808702b2fa557eedff387902fce08193d90
+SHA1 (patch-ac) = f0caa03e30e165283386914c280598967ca0c00d
+SHA1 (patch-ad) = d68bce46fe95a1fcd0da943b6a1eba1c9f059061
+SHA1 (patch-ae) = f7363da1f17810a8dbefb288e7db9745a2b0cd58
+SHA1 (patch-af) = a2e343b12e37d94cfb491b161b3b1ba2d9f49291
+SHA1 (patch-ag) = 519f444977b9268259fea86111e3be0c041e5d00
+SHA1 (patch-ah) = 8ffc1e3aa3f24956dcffe31e2e5e65815fc1c085
+SHA1 (patch-ai) = a5916d6da4ae31da4912c3a4f9df601abd42ddce
+SHA1 (patch-aj) = 89c8bd510a4bb58b9c9d23b3b4b9951f4ffb54cd
+SHA1 (patch-ak) = 571a5098d715a0ab878972f9748ec0519f9e92ef
+SHA1 (patch-al) = f47a6e567a553d6e662921eb7c2d5d7d34f56b2d
+SHA1 (patch-am) = a687d1764d7c1aa1be9dd9db298a280723846514
+SHA1 (patch-an) = 8368134653bf174858c8f1ea6788d28a6caaa105
+SHA1 (patch-ao) = d45902f9766e0a823d8b12d909f782b4bb651cb4
+SHA1 (patch-ap) = d41f572e56873dfe1b58bf1b7b350d778fabf6d5
+SHA1 (patch-aq) = df1c8892a836ad460afa04281f8df339524cbd9e
+SHA1 (patch-ar) = 03173dc63610b6f1cf0aa39e2fbb864922a12c3f
+SHA1 (patch-as) = e1e6fd0cce3a1c21f3ceabdd0720cb7fe6688126
diff -x CVS -urN lang/smlnj.orig/files/targets lang/smlnj/files/targets
--- lang/smlnj.orig/files/targets 2003-07-01 19:10:34.000000000 -0400
+++ lang/smlnj/files/targets 2009-03-11 13:12:03.000000000 -0400
@@ -1,11 +1,19 @@
-request ml-yacc
+request ml-ulex
+request ml-ulex-mllex-tool
request ml-lex
+request ml-lex-lex-ext
+request ml-yacc
+request ml-yacc-grm-ext
+request ml-antlr
+request ml-lpt-lib
request ml-burg
request smlnj-lib
request pgraph-util
+request tdp-util
request cml
request cml-lib
request eXene
+request mlrisc
request ckit
#if !defined(__powerpc__)
request ml-nlffi-lib
@@ -13,3 +21,4 @@
#endif
request mlrisc-tools
request nowhere
+request heap2asm
diff -x CVS -urN lang/smlnj.orig/patches/patch-aa lang/smlnj/patches/patch-aa
--- lang/smlnj.orig/patches/patch-aa 2004-06-06 00:38:29.000000000 -0400
+++ lang/smlnj/patches/patch-aa 1969-12-31 19:00:00.000000000 -0500
@@ -1,71 +0,0 @@
-$NetBSD: patch-aa,v 1.4 2004/06/06 04:38:29 snj Exp $
-
---- config/targets.orig Thu Oct 10 12:02:10 2002
-+++ config/targets
-@@ -41,7 +41,7 @@ request ml-lex
-
- # build ML-Burg
- #
--#request ml-burg
-+request ml-burg
-
- # pre-compile and install the remaining components of the SML/NJ library
- # (everything except smlnj-lib.cm, aka Util, itself)
-@@ -50,7 +50,7 @@ request smlnj-lib
-
- # pre-compile and install CM "portable graph" utility library
- #
--#request pgraph-util
-+request pgraph-util
-
- # pre-compile and install Concurrent ML, which is a library for
message-passing
- # concurrency.
-@@ -65,12 +65,12 @@ request cml-lib
- # pre-compile and install eXene, which is a library for X-Windows programming.
- # EXene requires CML.
- #
--#request eXene
-+request eXene
-
- # pre-compile and install the C-Kit, which is a library for parsing and
- # type-checking C programs
- #
--#request ckit
-+request ckit
-
- # pre-compile and install the ML-NLFFI Library, which is the core of
- # a new foreign function interface (where "foreign" functions are
-@@ -79,7 +79,7 @@ request cml-lib
- # the new FFI.
- # This preview release currently works only under X86/Linux.
- #
--#request ml-nlffi-lib
-+request ml-nlffi-lib
-
- # build ML-NLFFI-Gen, a program generator tool used in conjunction with
- # the new "NLFFI" foreign function interface. The tool generates ML
-@@ -87,13 +87,13 @@ request cml-lib
- # (Requires ckit!)
- # This preview release currently works only under X86/Linux.
- #
--#request ml-nlffigen
-+request ml-nlffigen
-
- # pre-compile and install the MLRISC Tools library.
- # This library is for parsing and pretty printing SML code.
- # It's used by various MLRISC code generator generator.
- #
--#request mlrisc-tools
-+request mlrisc-tools
-
- # Build and install the 'nowhere' program translator.
- # This tool translates programs with conditional patterns (where clauses)
-@@ -101,7 +101,7 @@ request cml-lib
- # (bad) documentation.
- # (Requires the mlrisc-tools library!)
- #
--#request nowhere
-+request nowhere
-
- # Note: autoloading is always enabled.
- # In order to customize what is being pre-registered for autoloading
diff -x CVS -urN lang/smlnj.orig/patches/patch-ab lang/smlnj/patches/patch-ab
--- lang/smlnj.orig/patches/patch-ab 2003-07-01 19:19:13.000000000 -0400
+++ lang/smlnj/patches/patch-ab 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-ab,v 1.2 2003/07/01 23:19:13 jtb Exp $
---- /dev/null
-+++ src/runtime/objs/mk.ppc-netbsd
+--- base/runtime/objs/mk.ppc-netbsd.orig 2009-03-11 13:21:11.000000000 -0400
++++ base/runtime/objs/mk.ppc-netbsd
@@ -0,0 +1,24 @@
+# mk.ppc-netbsd
+#
diff -x CVS -urN lang/smlnj.orig/patches/patch-ac lang/smlnj/patches/patch-ac
--- lang/smlnj.orig/patches/patch-ac 2003-07-01 19:19:14.000000000 -0400
+++ lang/smlnj/patches/patch-ac 2009-03-11 14:32:17.000000000 -0400
@@ -1,17 +1,19 @@
-$NetBSD: patch-ac,v 1.3 2003/07/01 23:19:14 jtb Exp $
+$NetBSD$
---- config/_arch-n-opsys.orig
+--- config/_arch-n-opsys.orig 2008-08-13 14:37:59.000000000 -0400
+++ config/_arch-n-opsys
-@@ -106,11 +106,13 @@
+@@ -119,12 +119,13 @@ case `uname -s` in
NetBSD)
- OPSYS=netbsd
+ case `uname -r` in
+ 2*) OPSYS=netbsd2;;
+- 3*) OPSYS=netbsd;;
+- *) exit 1;;
++ *) OPSYS=netbsd;;
+ esac
HEAP_OPSYS=bsd
- case `uname -m` in
+ case `uname -p` in
- i386) ARCH=x86;;
- i486) ARCH=x86;;
- i586) ARCH=x86;;
- i686) ARCH=x86;;
+ *86) ARCH=x86;;
+ powerpc) ARCH=ppc;;
+ sparc) ARCH=sparc;;
*) exit 1;;
diff -x CVS -urN lang/smlnj.orig/patches/patch-ad lang/smlnj/patches/patch-ad
--- lang/smlnj.orig/patches/patch-ad 2003-07-01 19:19:14.000000000 -0400
+++ lang/smlnj/patches/patch-ad 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-ad,v 1.3 2003/07/01 23:19:14 jtb Exp $
---- src/runtime/include/asm-base.h.orig
-+++ src/runtime/include/asm-base.h
+--- base/runtime/include/asm-base.h.orig 2008-12-05 12:57:39.000000000 -0500
++++ base/runtime/include/asm-base.h
@@ -36,6 +36,11 @@
# define _ASM
# include <sys/stack.h>
diff -x CVS -urN lang/smlnj.orig/patches/patch-ae lang/smlnj/patches/patch-ae
--- lang/smlnj.orig/patches/patch-ae 2003-03-21 17:20:56.000000000 -0500
+++ lang/smlnj/patches/patch-ae 2009-03-11 14:32:17.000000000 -0400
@@ -1,8 +1,8 @@
$NetBSD: patch-ae,v 1.1.1.1 2003/03/21 22:20:56 wiz Exp $
---- src/runtime/mach-dep/SPARC.prim.asm.orig Fri Jun 15 15:05:19 2001
-+++ src/runtime/mach-dep/SPARC.prim.asm
-@@ -307,7 +307,7 @@ pending_sigs: /* there are pending signa
+--- base/runtime/mach-dep/SPARC.prim.asm.orig 2008-02-29
18:09:05.000000000 -0500
++++ base/runtime/mach-dep/SPARC.prim.asm
+@@ -308,7 +308,7 @@ pending_sigs: /* there are pending signa
mov ALLOCPTR,LIMITPTR /* (delay slot) */
@@ -11,7 +11,7 @@
/* ZeroLimitPtr:
*
* Zero the heap limit pointer so that a trap will be generated on
the next limit
-@@ -622,13 +622,62 @@ _ml_mul:
+@@ -623,13 +623,62 @@ _ml_mul:
mov %g1,%l1 /* save %g1 which may get trashed */
mov %g2,%l2
mov %g3,%l3
@@ -74,7 +74,7 @@
restore %o0,0,%o2 /* result in %o2 (delay slot) */
retl
nop
-@@ -642,7 +691,15 @@ _ml_mul:
+@@ -643,7 +692,15 @@ _ml_mul:
* locals of the new window, since .div is a leaf routine.
*/
_ml_div:
@@ -91,7 +91,7 @@
addcc %i3,%g0,%o1 /* %o1 is divisor (and check for zero) */
bz 1f
/* save %g1, %g2 and %g3 (using new window) */
-@@ -650,9 +707,30 @@ _ml_div:
+@@ -651,9 +708,30 @@ _ml_div:
mov %g1,%l1 /* (delay slot) */
mov %g2,%l2
mov %g3,%l3
@@ -122,7 +122,7 @@
mov %l3,%g3
mov %l2,%g2
mov %l1,%g1
-@@ -679,11 +757,24 @@ _ml_umul:
+@@ -680,11 +758,24 @@ _ml_umul:
mov %g2,%l2
mov %g3,%l3
mov %i2,%o0
@@ -147,7 +147,7 @@
ret
restore %o0,0,%o2 /* result in %o2 (delay slot) */
-@@ -694,7 +785,12 @@ _ml_umul:
+@@ -695,7 +786,12 @@ _ml_umul:
* locals of the new window, since .div is a leaf routine.
*/
_ml_udiv:
@@ -161,7 +161,7 @@
addcc %i3,%g0,%o1 /* %o1 is divisor (and check for zero) */
bz 1f
/* save %g1, %g2 and %g3 (using new window) */
-@@ -702,9 +798,23 @@ _ml_udiv:
+@@ -703,9 +799,23 @@ _ml_udiv:
mov %g1,%l1 /* (delay slot) */
mov %g2,%l2
mov %g3,%l3
diff -x CVS -urN lang/smlnj.orig/patches/patch-af lang/smlnj/patches/patch-af
--- lang/smlnj.orig/patches/patch-af 2006-03-28 16:35:27.000000000 -0500
+++ lang/smlnj/patches/patch-af 2009-03-11 14:32:17.000000000 -0400
@@ -1,8 +1,8 @@
-$NetBSD: patch-af,v 1.4 2006/03/28 21:35:27 gavan Exp $
+$NetBSD$
---- src/runtime/mach-dep/signal-sysdep.h.orig 2002-10-10
19:20:04.000000000 +0100
-+++ src/runtime/mach-dep/signal-sysdep.h
-@@ -147,7 +147,7 @@ extern void SetFSR(int);
+--- base/runtime/mach-dep/signal-sysdep.h.orig 2008-12-05
12:57:39.000000000 -0500
++++ base/runtime/mach-dep/signal-sysdep.h
+@@ -171,7 +171,7 @@ extern void SetFSR(int);
/* disable all FP exceptions */
# define SIG_InitFPE() SetFSR(0)
@@ -11,66 +11,69 @@
/** SPARC, SUNOS **/
# define USE_ZERO_LIMIT_PTR_FN
# define SIG_FAULT1 SIGFPE
-@@ -318,6 +318,19 @@ extern void SetFSR();
-
- # define SIG_Flags 0
+@@ -340,6 +340,21 @@ extern void SetFSR();
+ # define SIG_ResetFPE(scp) { (scp)->regs->gpr[PT_FPSCR] = 0x0; }
+ typedef void SigReturn_t;
+# elif (defined(TARGET_PPC) && defined(OPSYS_NETBSD))
+ /* PPC, NetBSD */
+
-+# define SIG_FAULT1 SIGTRAP
++# define SIG_FAULT1 SIGTRAP
+
-+# define INT_DIVZERO(s, c) ((s) == SIGTRAP)
-+# define INT_OVFLW(s, c) ((s) == SIGTRAP)
-+# define SIG_GetPC(scp) ((scp)->sc_frame.srr0)
-+# define SIG_SetPC(scp, addr) { (scp)->sc_frame.srr0 =
(long)(addr); }
-+# define SIG_ZeroLimitPtr(scp) {
((scp)->sc_frame.fixreg[15] = 0); } /* limitptr = 15 (see
src/runtime/mach-dep/PPC.prim.asm) */
-+# define SIG_GetCode(info,scp) (info)
++# define INT_DIVZERO(s, c) ((s) == SIGTRAP)
++# define INT_OVFLW(s, c) ((s) == SIGTRAP)
++# define SIG_GetPC(scp) ((scp)->sc_frame.srr0)
++# define SIG_SetPC(scp, addr) { (scp)->sc_frame.srr0 = (long)(addr); }
++ /* limitptr = 15 (see base/runtime/mach-dep/PPC.prim.asm) */
++# define SIG_ZeroLimitPtr(scp) { ((scp)->sc_frame.fixreg[15] = 0); }
++# define SIG_GetCode(info,scp) (info)
+ typedef void SigReturn_t;
+
-
++
# endif /* HOST_RS6000/HOST_PPC */
-@@ -463,35 +476,15 @@ extern Addr_t *ML_X86Frame; /* used to
+ #elif defined(HOST_HPPA)
+@@ -452,30 +467,24 @@ extern Addr_t *ML_X86Frame; /* used to
- # elif defined(OPSYS_NETBSD)
- /** x86, NetBSD **/
--/* NetBSD (including versions 1.0 and 1.1) generates SIGBUS rather
-- than SIGFPE for overflows. The real fix is a trivial change to
-- kernel sources, which has already been reported (NetBSD internal
-- problem identification "port-i386/1833").
--
-- If you want to fix this on your NetBSD system. Edit machdep.c in
-- directory /sys/arch/i386/i386, and find the line
--
-- setgate(&idt[ 4], &IDTVEC(ofl), 0, SDT_SYS386TGT, SEL_KPL);
--
-- Change SEL_KPL to SEL_UPL. With SEL_KPL, the int overflow trap is
-- not accessible at user level, and a protection fault occurs instead
-- (thus the seg fault). SEL_UPL will allow user processes to generate
-- this trap.
--
-- For the change to take effect, recompile your kernel, install it
-- and reboot. */
--# define SIG_FAULT1 SIGFPE
+ typedef void SigReturn_t;
+
+-# elif defined(OPSYS_NETBSD2)
+- /** x86, NetBSD (version 2.x) **/
++# elif (defined(OPSYS_NETBSD2) || defined(OPSYS_NETBSD))
++ /** x86, NetBSD **/
+ # define SIG_FAULT1 SIGFPE
-# define SIG_FAULT2 SIGBUS
-# define INT_DIVZERO(s, c) 0
-# define INT_OVFLW(s, c) (((s) == SIGFPE) || ((s) == SIGBUS))
--
++# define INT_DIVZERO(s, c) ((s) == SIGFPE)
++# define INT_OVFLW(s, c) ((s) == SIGFPE)
+
-# define SIG_GetCode(info, scp) (info)
-# define SIG_GetPC(scp) ((scp)->sc_pc)
-# define SIG_SetPC(scp, addr) { (scp)->sc_pc = (long)(addr); }
-+# define SIG_FAULT1 SIGFPE
-+# define INT_DIVZERO(s, c) ((s) == SIGFPE)
-+# define INT_OVFLW(s, c) ((s) == SIGFPE)
-+
+-# define SIG_ZeroLimitPtr(scp) { ML_X86Frame[LIMITPTR_X86OFFSET] = 0; }
+# define SIG_GetCode(info, scp) (0)
-+# define SIG_GetPC(scp) ((scp)->uc_mcontext.__gregs[_REG_EIP])
-+# define SIG_SetPC(scp,
addr) {(scp)->uc_mcontext.__gregs[_REG_EIP] = (long)(addr); }
- # define SIG_ZeroLimitPtr(scp) { ML_X86Frame[LIMITPTR_X86OFFSET] = 0; }
- typedef void SigReturn_t;
--
- # elif defined(OPSYS_SOLARIS)
- /** x86, Solaris */
++# if defined(OPSYS_NETBSD2)
++# define SIG_GetPC(scp) ((scp)->sc_pc)
++# define SIG_SetPC(scp, addr) { (scp)->sc_pc = (long)(addr); }
++ typedef void SigReturn_t;
+
+-# elif defined(OPSYS_NETBSD)
+- /** x86, NetBSD (version 3.x) **/
+-# define SIG_FAULT1 SIGFPE
+-# define SIG_FAULT2 SIGBUS
+-# define INT_DIVZERO(s, c) 0
+-# define INT_OVFLW(s, c) (((s) == SIGFPE) || ((s) == SIGBUS))
++# elif defined(OPSYS_NETBSD)
++# define SIG_GetPC(scp) (_UC_MACHINE_PC(scp))
++# define SIG_SetPC(scp, addr) { _UC_MACHINE_SET_PC(scp, ((long)
(addr))); }
++# endif
+
+-# define SIG_GetCode(info, scp) (info)
+-# define SIG_GetPC(scp) (_UC_MACHINE_PC(scp))
+-# define SIG_SetPC(scp, addr) { _UC_MACHINE_SET_PC(scp, ((long) (addr))); }
+ # define SIG_ZeroLimitPtr(scp) { ML_X86Frame[LIMITPTR_X86OFFSET] = 0; }
+ # elif defined(OPSYS_OPENBSD)
diff -x CVS -urN lang/smlnj.orig/patches/patch-ag lang/smlnj/patches/patch-ag
--- lang/smlnj.orig/patches/patch-ag 2003-03-21 17:54:39.000000000 -0500
+++ lang/smlnj/patches/patch-ag 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-ag,v 1.2 2003/03/21 22:54:39 wiz Exp $
---- src/runtime/objs/mk.sparc-netbsd.orig Thu Sep 19 03:54:01 2002
-+++ src/runtime/objs/mk.sparc-netbsd
+--- base/runtime/objs/mk.sparc-netbsd.orig 2009-03-11 13:21:11.000000000 -0400
++++ base/runtime/objs/mk.sparc-netbsd
@@ -0,0 +1,24 @@
+# mk.sparc-netbsd
+#
diff -x CVS -urN lang/smlnj.orig/patches/patch-ah lang/smlnj/patches/patch-ah
--- lang/smlnj.orig/patches/patch-ah 2003-03-21 17:54:40.000000000 -0500
+++ lang/smlnj/patches/patch-ah 2009-03-11 14:32:17.000000000 -0400
@@ -1,6 +1,6 @@
-$NetBSD: patch-ah,v 1.1 2003/03/21 22:54:40 wiz Exp $
+$NetBSD$
---- config/_link-sml.orig Thu Oct 17 02:44:32 2002
+--- config/_link-sml.orig 2005-01-03 16:13:16.000000000 -0500
+++ config/_link-sml
@@ -17,6 +17,7 @@ unset ENV
#
@@ -9,4 +9,4 @@
+SMLNJ_HOME="${SMLNJ_HOME:-@SML_BASE@}"
# the path of the directory in which executables (like this file) are kept.
- if [ x${SMLNJ_HOME} = x ] ; then
+ if [ x"$SMLNJ_HOME" = x ] ; then
diff -x CVS -urN lang/smlnj.orig/patches/patch-ai lang/smlnj/patches/patch-ai
--- lang/smlnj.orig/patches/patch-ai 2003-03-21 17:54:40.000000000 -0500
+++ lang/smlnj/patches/patch-ai 2009-03-11 14:32:17.000000000 -0400
@@ -1,6 +1,6 @@
-$NetBSD: patch-ai,v 1.1 2003/03/21 22:54:40 wiz Exp $
+$NetBSD$
---- config/_ml-build.orig Thu Oct 17 02:44:32 2002
+--- config/_ml-build.orig 2007-02-12 16:05:27.000000000 -0500
+++ config/_ml-build
@@ -1,5 +1,7 @@
#!@SHELL@
@@ -8,5 +8,5 @@
+SMLNJ_HOME="${SMLNJ_HOME:-@SML_BASE@}"
+
if [ x${SMLNJ_HOME} = x ] ; then
- BIN_DIR=@BINDIR@
- else
+ BIN_DIR="@BINDIR@"
+ LIB_DIR="@LIBDIR@"
diff -x CVS -urN lang/smlnj.orig/patches/patch-aj lang/smlnj/patches/patch-aj
--- lang/smlnj.orig/patches/patch-aj 2003-03-21 17:54:41.000000000 -0500
+++ lang/smlnj/patches/patch-aj 2009-03-11 14:32:17.000000000 -0400
@@ -1,6 +1,6 @@
-$NetBSD: patch-aj,v 1.1 2003/03/21 22:54:41 wiz Exp $
+$NetBSD$
---- config/_ml-makedepend.orig Thu Oct 17 02:44:32 2002
+--- config/_ml-makedepend.orig 2008-03-27 15:23:09.000000000 -0400
+++ config/_ml-makedepend
@@ -1,5 +1,7 @@
#!@SHELL@
@@ -8,5 +8,5 @@
+SMLNJ_HOME="${SMLNJ_HOME:-@SML_BASE@}"
+
if [ x${SMLNJ_HOME} = x ] ; then
- BIN_DIR=@BINDIR@
+ BIN_DIR="@BINDIR@"
else
diff -x CVS -urN lang/smlnj.orig/patches/patch-ak lang/smlnj/patches/patch-ak
--- lang/smlnj.orig/patches/patch-ak 2003-03-21 17:54:41.000000000 -0500
+++ lang/smlnj/patches/patch-ak 2009-03-11 14:32:17.000000000 -0400
@@ -1,6 +1,6 @@
-$NetBSD: patch-ak,v 1.1 2003/03/21 22:54:41 wiz Exp $
+$NetBSD$
---- config/_run-sml.orig Thu Oct 17 02:44:32 2002
+--- config/_run-sml.orig 2004-12-17 16:12:23.000000000 -0500
+++ config/_run-sml
@@ -19,6 +19,7 @@ unset ENV
#
@@ -8,5 +8,5 @@
#
+SMLNJ_HOME="${SMLNJ_HOME:-@SML_BASE@}"
- # the path of the directory in which executables (like this file) are kept.
- if [ x${SMLNJ_HOME} = x ] ; then
+ # On cygwin, make sure SMLNJ_HOME is given a POSIX-style pathname.
+ if [ x"$SMLNJ_HOME" != x ] ; then
diff -x CVS -urN lang/smlnj.orig/patches/patch-al lang/smlnj/patches/patch-al
--- lang/smlnj.orig/patches/patch-al 2004-06-06 00:38:29.000000000 -0400
+++ lang/smlnj/patches/patch-al 2009-03-11 14:32:17.000000000 -0400
@@ -1,15 +1,13 @@
-$NetBSD: patch-al,v 1.3 2004/06/06 04:38:29 snj Exp $
+$NetBSD$
---- src/runtime/objs/mk.x86-netbsd.orig 2000-11-06 13:41:04.000000000 -0800
-+++ src/runtime/objs/mk.x86-netbsd 2004-06-05 21:16:03.000000000 -0700
-@@ -9,8 +9,8 @@ MAKE = gmake
+--- base/runtime/objs/mk.x86-netbsd.orig 2006-02-10 17:14:59.000000000 -0500
++++ base/runtime/objs/mk.x86-netbsd
+@@ -9,7 +9,7 @@ MAKE = gmake
ARFLAGS = Trcv
CC = gcc -ansi
-CFLAGS = -O2
--CPP = gcc -x c -E -P -ansi
+CFLAGS = @CFLAGS@
-+CPP = gcc -x assembler-with-cpp -E -P
+ CPP = gcc -x assembler-with-cpp -E -P
#CPP = /usr/bin/cpp -P
- XOBJS =
diff -x CVS -urN lang/smlnj.orig/patches/patch-am lang/smlnj/patches/patch-am
--- lang/smlnj.orig/patches/patch-am 2003-03-21 17:54:42.000000000 -0500
+++ lang/smlnj/patches/patch-am 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-am,v 1.1 2003/03/21 22:54:42 wiz Exp $
---- src/runtime/objs/mk.sparc-solaris.orig Fri Jun 15 15:05:19 2001
-+++ src/runtime/objs/mk.sparc-solaris
+--- base/runtime/objs/mk.sparc-solaris.orig 2001-06-15 15:05:19.000000000 -0400
++++ base/runtime/objs/mk.sparc-solaris
@@ -8,7 +8,7 @@ AS = /usr/ccs/bin/as
AR = /usr/ccs/bin/ar
GCC = gcc
diff -x CVS -urN lang/smlnj.orig/patches/patch-an lang/smlnj/patches/patch-an
--- lang/smlnj.orig/patches/patch-an 2003-03-21 17:54:43.000000000 -0500
+++ lang/smlnj/patches/patch-an 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-an,v 1.1 2003/03/21 22:54:43 wiz Exp $
---- src/runtime/objs/mk.sparc-sunos.orig Thu Jun 1 14:33:52 2000
-+++ src/runtime/objs/mk.sparc-sunos
+--- base/runtime/objs/mk.sparc-sunos.orig 2000-06-01 14:34:03.000000000 -0400
++++ base/runtime/objs/mk.sparc-sunos
@@ -4,7 +4,7 @@
SHELL = /bin/sh
diff -x CVS -urN lang/smlnj.orig/patches/patch-ao lang/smlnj/patches/patch-ao
--- lang/smlnj.orig/patches/patch-ao 2003-07-01 19:19:14.000000000 -0400
+++ lang/smlnj/patches/patch-ao 2009-03-11 14:32:17.000000000 -0400
@@ -1,8 +1,8 @@
$NetBSD: patch-ao,v 1.2 2003/07/01 23:19:14 jtb Exp $
---- src/runtime/kernel/boot.c.orig
-+++ src/runtime/kernel/boot.c
-@@ -124,7 +124,7 @@
+--- base/runtime/kernel/boot.c.orig 2005-11-02 17:24:39.000000000 -0500
++++ base/runtime/kernel/boot.c
+@@ -130,7 +130,7 @@ PVT ml_val_t BuildFileList (ml_state_t *
ml_val_t fileList;
# define SIZE_BUF_LEN 128 /* this should be plenty for two numbers */
char sizeBuf[SIZE_BUF_LEN];
diff -x CVS -urN lang/smlnj.orig/patches/patch-ap lang/smlnj/patches/patch-ap
--- lang/smlnj.orig/patches/patch-ap 2003-07-01 19:19:14.000000000 -0400
+++ lang/smlnj/patches/patch-ap 2009-03-11 14:32:17.000000000 -0400
@@ -1,7 +1,7 @@
$NetBSD: patch-ap,v 1.2 2003/07/01 23:19:14 jtb Exp $
---- src/runtime/include/cache-flush.h.orig
-+++ src/runtime/include/cache-flush.h
+--- base/runtime/include/cache-flush.h.orig 2001-04-20 09:26:46.000000000 -0400
++++ base/runtime/include/cache-flush.h
@@ -40,7 +40,7 @@
extern FlushICache (void *addr, int nbytes);
diff -x CVS -urN lang/smlnj.orig/patches/patch-aq lang/smlnj/patches/patch-aq
--- lang/smlnj.orig/patches/patch-aq 2003-07-01 19:19:14.000000000 -0400
+++ lang/smlnj/patches/patch-aq 2009-03-11 14:32:17.000000000 -0400
@@ -1,8 +1,8 @@
$NetBSD: patch-aq,v 1.2 2003/07/01 23:19:14 jtb Exp $
---- src/runtime/mach-dep/PPC.prim.asm.orig
-+++ src/runtime/mach-dep/PPC.prim.asm
-@@ -813,7 +813,7 @@
+--- base/runtime/mach-dep/PPC.prim.asm.orig 2005-05-03 13:26:49.000000000 -0400
++++ base/runtime/mach-dep/PPC.prim.asm
+@@ -846,7 +846,7 @@ CENTRY(RestoreFPRegs)
lfd f31, 136(r3)
blr
diff -x CVS -urN lang/smlnj.orig/patches/patch-ar lang/smlnj/patches/patch-ar
--- lang/smlnj.orig/patches/patch-ar 2006-03-28 16:35:27.000000000 -0500
+++ lang/smlnj/patches/patch-ar 2009-03-11 14:32:17.000000000 -0400
@@ -1,9 +1,9 @@
-$NetBSD: patch-ar,v 1.1 2006/03/28 21:35:27 gavan Exp $
+$NetBSD$
---- src/runtime/include/ml-unixdep.h.orig 2002-10-12 02:03:50.000000000 +0100
-+++ src/runtime/include/ml-unixdep.h
-@@ -309,14 +309,14 @@ extern char *sys_errlist[];
- #elif defined(OPSYS_NETBSD)
+--- base/runtime/include/ml-unixdep.h.orig 2008-12-05 12:57:39.000000000 -0500
++++ base/runtime/include/ml-unixdep.h
+@@ -323,7 +323,7 @@ extern char *sys_errlist[];
+ #elif defined(OPSYS_NETBSD) /* version 3.x */
# define OS_NAME "BSD"
# define HAS_POSIX_LIBRARIES
-# define HAS_BSD_SIGS
@@ -11,11 +11,3 @@
# define HAS_GETRUSAGE
# define HAS_SETITIMER
# define HAS_MMAP
- # define HAS_SELECT
- # define HAS_SCALBN
- # define HAS_ILOGB
--# define HAS_SIGCONTEXT
-+# define HAS_UCONTEXT
- # define HAS_STRERROR
-
- #endif
diff -x CVS -urN lang/smlnj.orig/patches/patch-as lang/smlnj/patches/patch-as
--- lang/smlnj.orig/patches/patch-as 1969-12-31 19:00:00.000000000 -0500
+++ lang/smlnj/patches/patch-as 2009-03-11 14:32:17.000000000 -0400
@@ -0,0 +1,12 @@
+$NetBSD$
+
+--- config/_heap2exec.orig 2006-04-20 11:28:53.000000000 -0400
++++ config/_heap2exec
+@@ -1,5 +1,7 @@
+ #!@SHELL@
+
++SMLNJ_HOME="${SMLNJ_HOME:-@SML_BASE@}"
++
+ CMD=`basename "$0"`
+
+ usage() {
From: Christopher Richards <richards@CS.Princeton.EDU>
To: asau@netbsd.org
Cc: gnats-bugs@gnats.netbsd.org
Subject: Re: pkg/40954 lang/smlnj broken with 64-bit time_t
Date: Mon, 23 Mar 2009 21:52:43 -0400
Hi, I noticed your recent commit message mentioning that SML/NJ 110.69
was in WIP. Would you mind reviewing the patch I submitted (at
<http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=40954>) which
also brings the package up to 110.69? It's possible one or the other
is sufficient to close the PR.
Thanks,
Chris
From: David Holland <dholland-pbugs@netbsd.org>
To: Christopher Richards <richards@CS.Princeton.EDU>
Cc: gnats-bugs@netbsd.org
Subject: Re: pkg/40954: lang/smlnj broken with 64-bit time_t
Date: Sat, 19 Sep 2009 09:24:43 +0000
On Wed, Mar 11, 2009 at 10:35:01PM +0000, Christopher Richards wrote:
> The attached patch solves the lang/smlnj build failure under 64-bit
> time_t, by way of updating the package from version 110.42 (vintage
> 2002) to 110.69, the most recent "working" version. In SML/NJ
> parlance, the "working" version is the stable release, and the
> "stable" version is the haunted-mansion, nobody-goes-there release. I
> could not begin to summarize the six years of changes this update
> entails.
>
> This new version survives the build and appears to function correctly
> (as tested on NetBSD/xen, -current as of 2009-03-06), but the runtime
> still assumes a 32-bit time_t, and will still lose beginning in 2038.
So I finally got around to trying it (sorry it took so long...) and it
builds and installs ok, given the modernization of removing @dirrm
from the PLIST.
But, it breaks lang/twelf. The compile thereof gives
src/timing/timing.sml:83.26-84.38 Error: operator and operand don't
agree [tycon mismatch]
operator domain: {gc:Time.time, sys:Time.time, usr:Time.time} *
{gc:Time.time, sys:Time.time, usr:Time.time}
operand: {gc:Time.time, sys:Time.time, usr:Time.time} *
{sys:Time.time, usr:Time.time}
in expression:
plus (CPUTime,evalCPUTime)
val it = false : bool
stdIn:6.45-6.58 Error: unbound structure: Server in path Server.server
The build doesn't stop, but twelf-server doesn't get (fully?)
installed, resulting in this behavior at runtime:
/usr/pkg/bin/sml: Fatal error -- unable to open heap image
"/usr/pkg/lib/twelf/bin/.heap/twelf-server"
Config.read sources.cfg
Process twelf-server exited abnormally with code 1
Do you know how to go about fixing this? Since twelf is the only thing
in pkgsrc that uses smlnj, I'm a bit reluctant to commit the update
without fixing it as well.
(It would also be nice sometime to set up a proper buildlink3 for
smlnj instead of using a Makefile.common, but that's not entirely
trivial and not really a priority.)
--
David A. Holland
dholland@netbsd.org
From: David Holland <dholland@eecs.harvard.edu>
To: gnats-bugs@NetBSD.org, richards@cs.princeton.edu
Cc:
Subject: Re: pkg/40954: lang/smlnj broken with 64-bit time_t
Date: Mon, 21 Sep 2009 19:19:39 -0400
ok, so I tried twelf 1.5R1, and it doesn't compile either, but in a
different way:
[compiling (sources.cm):src/frontend/(sources.cm):../flit/(sources.cm):flit.sml]
src/flit/flit.sml:4.26-4.38 Error: unbound structure: Pack32Little
src/flit/flit.sml:2.3-10.36 Error: unmatched structure specification: Pack
val it = false : bool
stdIn:6.37-6.48 Error: unbound structure: Timing in path Timing.init
stdIn:6.14-6.27 Error: unbound structure: Twelf in path Twelf.version
(It also doesn't stop on error.)
--
- David A. Holland / dholland@eecs.harvard.edu
State-Changed-From-To: open->feedback
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Sun, 21 Feb 2010 16:24:09 +0000
State-Changed-Why:
smlnj is now at 110.72, which should fix this bug. Correct?
State-Changed-From-To: feedback->open
State-Changed-By: asau@NetBSD.org
State-Changed-When: Sun, 21 Feb 2010 16:32:54 +0000
State-Changed-Why:
Almost nothing was changed in the recent release.
"We're working on it."(tm)
From: David Holland <dholland@eecs.harvard.edu>
To: gnats-bugs@NetBSD.org
Cc: wiz@NetBSD.org
Subject: Re: pkg/40954 (lang/smlnj broken with 64-bit time_t)
Date: Mon, 22 Feb 2010 13:53:02 -0500
On Sun, Feb 21, 2010 at 04:24:10PM +0000, wiz@NetBSD.org wrote:
> smlnj is now at 110.72, which should fix this bug. Correct?
Does twelf build now? That was the remaining issue.
--
- David A. Holland / dholland@eecs.harvard.edu
From: Thomas Klausner <wiz@NetBSD.org>
To: David Holland <dholland@eecs.harvard.edu>
Cc: gnats-bugs@NetBSD.org
Subject: Re: pkg/40954 (lang/smlnj broken with 64-bit time_t)
Date: Mon, 22 Feb 2010 23:01:25 +0100
On Mon, Feb 22, 2010 at 01:53:02PM -0500, David Holland wrote:
> On Sun, Feb 21, 2010 at 04:24:10PM +0000, wiz@NetBSD.org wrote:
> > smlnj is now at 110.72, which should fix this bug. Correct?
>
> Does twelf build now? That was the remaining issue.
Sorry, don't know, only have 64bit platforms where it's masked.
asau seems to think nothing has changed, so I'll trust him on that.
Thomas
State-Changed-From-To: open->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 29 Dec 2014 08:34:26 +0000
State-Changed-Why:
smlnj got more or less fixed, and I no longer care about twelf.
State-Changed-From-To: closed->open
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Thu, 14 Apr 2016 13:06:31 +0000
State-Changed-Why:
these patches are still needed after all (plus one more)
(and that's just a starting point)
From: "David A. Holland" <dholland@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/40954 CVS commit: pkgsrc/lang/smlnj
Date: Thu, 14 Apr 2016 21:58:22 +0000
Module Name: pkgsrc
Committed By: dholland
Date: Thu Apr 14 21:58:22 UTC 2016
Modified Files:
pkgsrc/lang/smlnj: Makefile distinfo
Added Files:
pkgsrc/lang/smlnj/patches: patch-base_runtime_gc_gc-stats.h
patch-base_runtime_gc_init-gc.c
patch-base_runtime_kernel_unix-timers.c
patch-base_runtime_mach-dep_unix-prof.c
patch-src_runtime_gc_gc-stats.h patch-src_runtime_gc_init-gc.c
patch-src_runtime_kernel_unix-timers.c
patch-src_runtime_mach-dep_unix-prof.c
Log Message:
Use struct timeval instead of blithely assuming that some private
struct declaration is always bit compatible with it. (Because it
isn't.) My patches from PR 40954 circa 2009, which it turns out is
still relevant even after the last couple updates. (Just for some
reason it had stopped crashing.)
This does not make smlnj build for me, but it gets further than it
used to.
To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 pkgsrc/lang/smlnj/Makefile
cvs rdiff -u -r1.16 -r1.17 pkgsrc/lang/smlnj/distinfo
cvs rdiff -u -r0 -r1.1 \
pkgsrc/lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h \
pkgsrc/lang/smlnj/patches/patch-base_runtime_gc_init-gc.c \
pkgsrc/lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c \
pkgsrc/lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c \
pkgsrc/lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h \
pkgsrc/lang/smlnj/patches/patch-src_runtime_gc_init-gc.c \
pkgsrc/lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c \
pkgsrc/lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Thu, 14 Apr 2016 22:21:58 +0000
State-Changed-Why:
committed
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.