Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Jun 2023 12:32:08 -0400
From:      Cheng Cui <cc@freebsd.org>
To:        Murali Krishnamurthy <muralik1@vmware.com>
Cc:        "Scheffenegger, Richard" <rscheff@freebsd.org>, FreeBSD Transport <freebsd-transport@freebsd.org>
Subject:   Re: FreeBSD TCP (with iperf3) comparison with Linux
Message-ID:  <CAGaXuiJEsgRXo12iVW_9C-VzT%2BF3E3CuYa-es3qJ9w8n3yrAwg@mail.gmail.com>
In-Reply-To: <PH0PR05MB100642BD041192E6B7EBDBFE1FB2AA@PH0PR05MB10064.namprd05.prod.outlook.com>
References:  <53aff274-b1a8-0730-6971-2755c7e7b688@freebsd.org> <PH0PR05MB100642BD041192E6B7EBDBFE1FB2AA@PH0PR05MB10064.namprd05.prod.outlook.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--00000000000057840405ff5b5cdc
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I used an emulation testbed from Emulab.net with Dummynet traffic shaper
adding 100ms RTT
between two nodes, the link capacity is 1Gbps and both nodes are using
freebsd13.2.

cc@s1:~ % ping -c 3 r1
PING r1-link1 (10.1.1.3): 56 data bytes
64 bytes from 10.1.1.3: icmp_seq=3D0 ttl=3D64 time=3D100.091 ms
64 bytes from 10.1.1.3: icmp_seq=3D1 ttl=3D64 time=3D99.995 ms
64 bytes from 10.1.1.3: icmp_seq=3D2 ttl=3D64 time=3D99.979 ms

--- r1-link1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev =3D 99.979/100.022/100.091/0.049 ms


cc@s1:~ % iperf3 -c r1 -t 10 -i 1 -C cubic
Connecting to host r1, port 5201
[  5] local 10.1.1.2 port 56089 connected to 10.1.1.3 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  4.19 MBytes  35.2 Mbits/sec    0   1.24 MBytes

[  5]   1.00-2.00   sec  56.5 MBytes   474 Mbits/sec    6   2.41 MBytes

[  5]   2.00-3.00   sec  58.6 MBytes   492 Mbits/sec   18   7.17 MBytes

[  5]   3.00-4.00   sec  65.6 MBytes   550 Mbits/sec   14    606 KBytes

[  5]   4.00-5.00   sec  60.8 MBytes   510 Mbits/sec   18   7.22 MBytes

[  5]   5.00-6.00   sec  62.1 MBytes   521 Mbits/sec   12   7.86 MBytes

[  5]   6.00-7.00   sec  60.9 MBytes   512 Mbits/sec   14   3.43 MBytes

[  5]   7.00-8.00   sec  62.8 MBytes   527 Mbits/sec   16    372 KBytes

[  5]   8.00-9.00   sec  59.3 MBytes   497 Mbits/sec   14   1.77 MBytes

[  5]   9.00-10.00  sec  57.0 MBytes   477 Mbits/sec   18   7.13 MBytes

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   548 MBytes   459 Mbits/sec  130             sende=
r
[  5]   0.00-10.10  sec   540 MBytes   449 Mbits/sec
 receiver

iperf Done.

cc@s1:~ % ifconfig bce4
bce4: flags=3D8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 150=
0
options=3Dc01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM=
,TSO4,VLAN_HWTSO,LINKSTATE>
ether 00:10:18:56:94:d4
inet 10.1.1.2 netmask 0xffffff00 broadcast 10.1.1.255
media: Ethernet 1000baseT <full-duplex>
status: active
nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

I believe the default values for bce tx/rx pages are 2. And I happened to
find
this problem before that when the tx queue was full, it would not enqueue
packets
and started return errors.
And this error was misunderstood by the TCP layer as retransmission.

After adding hw.bce.tx_pages=3D4 and hw.bce.rx_pages=3D4 in /boot/loader.co=
nf
and reboot:

cc@s1:~ % iperf3 -c r1 -t 10 -i 1 -C cubic
Connecting to host r1, port 5201
[  5] local 10.1.1.2 port 20478 connected to 10.1.1.3 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  4.15 MBytes  34.8 Mbits/sec    0   1.17 MBytes

[  5]   1.00-2.00   sec  83.1 MBytes   697 Mbits/sec    0   12.2 MBytes

[  5]   2.00-3.00   sec   112 MBytes   939 Mbits/sec    0   12.2 MBytes

[  5]   3.00-4.00   sec   113 MBytes   944 Mbits/sec    0   12.2 MBytes

[  5]   4.00-5.00   sec   112 MBytes   940 Mbits/sec    0   12.2 MBytes

[  5]   5.00-6.00   sec   112 MBytes   942 Mbits/sec    0   12.2 MBytes

[  5]   6.00-7.00   sec   112 MBytes   938 Mbits/sec    0   12.2 MBytes

[  5]   7.00-8.00   sec   113 MBytes   944 Mbits/sec    0   12.2 MBytes

[  5]   8.00-9.00   sec   112 MBytes   938 Mbits/sec    0   12.2 MBytes

[  5]   9.00-10.00  sec   113 MBytes   947 Mbits/sec    0   12.2 MBytes

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   985 MBytes   826 Mbits/sec    0             sende=
r
[  5]   0.00-10.11  sec   982 MBytes   815 Mbits/sec
 receiver

iperf Done.

Best Regards,
Cheng Cui


On Fri, Jun 30, 2023 at 12:26=E2=80=AFPM Murali Krishnamurthy <muralik1@vmw=
are.com>
wrote:

> Richard,
>
>
>
> Appreciate the useful inputs you have shared so far. Will try to figure
> out regarding packet drops.
>
>
>
> Regarding HyStart, I see even BSD code base has support for this. May I
> know by when can we see that in an release, if not already available ?
>
>
>
> Regarding this point : *=E2=80=9C**Switching to other cc modules may give=
 some
> more insights. But again, I suspect that momentary (microsecond) burstine=
ss
> of BSD may be causing this significantly higher loss rate.**=E2=80=9D*
>
> Is there some info somewhere where I can understand more on this in detai=
l?
>
>
>
> Regards
>
> Murali
>
>
>
>
>
> On 30/06/23, 9:35 PM, "owner-freebsd-transport@freebsd.org" <
> owner-freebsd-transport@freebsd.org> wrote:
>
>
>
> Hi Murali,
>
>
>
> > Q. Since you mention two hypervisors - what is the phyiscal network
> topology in between these two servers? What theoretical link rates would =
be
> attainable?
>
> >
>
> > Here is the topology
>
> >
>
> > Iperf end points are on 2 different hypervisors.
>
> >
>
> >  =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=
=94=E2=80=94=E2=80=94=E2=80=94        =E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=
=80=94=E2=80=94=E2=80=94=E2=80=94
> =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94                =E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94-=E2=80=94
>
> > | Linux VM1 |      |  BSD 13 VM
> 1  |
> |  Linux VM2  |                |  BSD 13 VM 2  |
>
> > |___________|      |_ ____ ____ ___
> |                                                                        =
          |___________
> |                |_ ____ ____ ___ |
>
> > |          |
> |
> |                                   |
>
> >
> |                          |
> |                                   |
>
> >
> =E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94            =
                                                                      =E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=
=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94
>
> > |           ESX Hypervisor 1          |           10G link connected vi=
a
> L2 Switch                      |           ESX Hypervisor  2            |
>
> > |
> |=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=
=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94
> |                                                |
>
> > |=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=
=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94
> |
> |=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=
=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94=E2=80=94|
>
> >
>
> >
>
> > Nic is of 10G capacity on both ESX server and it has below config.
>
>
>
>
>
> So, when both VMs run on the same Hypervisor, maybe with another VM to
> simulate the 100ms delay, can you attain a lossless baseline scenario?
>
>
>
>
>
> > BDP for 16MB Socket buffer: 16 MB * (1000 ms * 100ms latency) * 8 bits/
> 1024 =3D 1.25 Gbps
>
> >
>
> > So theoretically we should see close to 1.25Gbps of Bitrate and we see
> Linux reaching close to this number.
>
>
>
> Under no loss, yes.
>
>
>
>
>
> > But BSD is not able to do that.
>
> >
>
> >
>
> > Q. Did you run iperf3? Did the transmitting endpoint report any
> retransmissions between Linux or FBSD hosts?
>
> >
>
> > Yes, we used iper3. I see Linux doing less number retransmissions
> compared to BSD.
>
> > On BSD, the best performance was around 600 Mbps bitrate and the number
> of retransmissions for this number seen is around 32K
>
> > On Linux, the best performance was around 1.15 Gbps bitrate and the
> number of retransmissions for this number seen is only 2K.
>
> > So as you pointed the number of retransmissions in BSD could be the rea=
l
> issue here.
>
>
>
> There are other cc modules available; but I believe one major deviation i=
s
> that Linux can perform mechanisms like hystart; ACKing every packet when
> the client detects slow start; perform pacing to achieve more uniform
> packet transmissions.
>
>
>
> I think the next step would be to find out, at which queue those packet
> discards are coming from (external switch? delay generator? Vswitch? Eth
> stack inside the VM?)
>
>
>
> Or alternatively, provide your ESX hypervisors with vastly more link
> speed, to rule out any L2 induced packet drops - provided your delay
> generator is not the source when momentarily overloaded.
>
>
>
> > Is there a way to reduce this packet loss by fine tuning some parameter=
s
> w.r.t ring buffer or any other areas?
>
>
>
> Finding where these arise (looking at queue and port counters) would be
> the next step. But this is not really my specific area of expertise beyon=
d
> the high level, vendor independent observations.
>
>
>
> Switching to other cc modules may give some more insights. But again, I
> suspect that momentary (microsecond) burstiness of BSD may be causing thi=
s
> significantly higher loss rate.
>
>
>
> TCP RACK would be another option. That stack has pacing, more fine-graine=
d
> timing, the RACK loss recovery mechanisms etc. Maybe that helps reduce th=
e
> observed packet drops by iperf, and consequently, yield a higher overall
> throuhgput.
>
>
>
>
>
>
>
>
>

--00000000000057840405ff5b5cdc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+SSB1c2VkIGFuIGVtdWxhdGlvbiB0ZXN0YmVkIGZyb20gRW11bGFiLm5l
dCB3aXRoIER1bW15bmV0IHRyYWZmaWMgc2hhcGVyIGFkZGluZyAxMDBtcyBSVFQ8YnI+YmV0d2Vl
biB0d28gbm9kZXMsIHRoZSBsaW5rIGNhcGFjaXR5IGlzIDFHYnBzIGFuZCBib3RoIG5vZGVzIGFy
ZSB1c2luZyBmcmVlYnNkMTMuMi48YnI+PGJyPmNjQHMxOn4gJSBwaW5nIC1jIDMgcjE8YnI+UElO
RyByMS1saW5rMSAoMTAuMS4xLjMpOiA1NiBkYXRhIGJ5dGVzPGJyPjY0IGJ5dGVzIGZyb20gPGEg
aHJlZj0iaHR0cDovLzEwLjEuMS4zIj4xMC4xLjEuMzwvYT46IGljbXBfc2VxPTAgdHRsPTY0IHRp
bWU9MTAwLjA5MSBtczxicj42NCBieXRlcyBmcm9tIDxhIGhyZWY9Imh0dHA6Ly8xMC4xLjEuMyI+
MTAuMS4xLjM8L2E+OiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTk5Ljk5NSBtczxicj42NCBieXRl
cyBmcm9tIDxhIGhyZWY9Imh0dHA6Ly8xMC4xLjEuMyI+MTAuMS4xLjM8L2E+OiBpY21wX3NlcT0y
IHR0bD02NCB0aW1lPTk5Ljk3OSBtczxicj48YnI+LS0tIHIxLWxpbmsxIHBpbmcgc3RhdGlzdGlj
cyAtLS08YnI+MyBwYWNrZXRzIHRyYW5zbWl0dGVkLCAzIHBhY2tldHMgcmVjZWl2ZWQsIDAuMCUg
cGFja2V0IGxvc3M8YnI+cm91bmQtdHJpcCBtaW4vYXZnL21heC9zdGRkZXYgPSA5OS45NzkvMTAw
LjAyMi8xMDAuMDkxLzAuMDQ5IG1zPGJyPjxicj48YnI+Y2NAczE6fiAlIGlwZXJmMyAtYyByMSAt
dCAxMCAtaSAxIC1DIGN1YmljPGJyPkNvbm5lY3RpbmcgdG8gaG9zdCByMSwgcG9ydCA1MjAxPGJy
PlsgwqA1XSBsb2NhbCAxMC4xLjEuMiBwb3J0IDU2MDg5IGNvbm5lY3RlZCB0byAxMC4xLjEuMyBw
b3J0IDUyMDE8YnI+WyBJRF0gSW50ZXJ2YWwgwqAgwqAgwqAgwqAgwqAgVHJhbnNmZXIgwqAgwqAg
Qml0cmF0ZSDCoCDCoCDCoCDCoCBSZXRyIMKgQ3duZDxicj5bIMKgNV0gwqAgMC4wMC0xLjAwIMKg
IHNlYyDCoDQuMTkgTUJ5dGVzIMKgMzUuMiBNYml0cy9zZWMgwqAgwqAwIMKgIDEuMjQgTUJ5dGVz
IMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgMS4wMC0yLjAwIMKgIHNlYyDCoDU2LjUgTUJ5dGVzIMKg
IDQ3NCBNYml0cy9zZWMgwqAgwqA2IMKgIDIuNDEgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0g
wqAgMi4wMC0zLjAwIMKgIHNlYyDCoDU4LjYgTUJ5dGVzIMKgIDQ5MiBNYml0cy9zZWMgwqAgMTgg
wqAgNy4xNyBNQnl0ZXMgwqAgwqAgwqAgPGJyPlsgwqA1XSDCoCAzLjAwLTQuMDAgwqAgc2VjIMKg
NjUuNiBNQnl0ZXMgwqAgNTUwIE1iaXRzL3NlYyDCoCAxNCDCoCDCoDYwNiBLQnl0ZXMgwqAgwqAg
wqAgPGJyPlsgwqA1XSDCoCA0LjAwLTUuMDAgwqAgc2VjIMKgNjAuOCBNQnl0ZXMgwqAgNTEwIE1i
aXRzL3NlYyDCoCAxOCDCoCA3LjIyIE1CeXRlcyDCoCDCoCDCoCA8YnI+WyDCoDVdIMKgIDUuMDAt
Ni4wMCDCoCBzZWMgwqA2Mi4xIE1CeXRlcyDCoCA1MjEgTWJpdHMvc2VjIMKgIDEyIMKgIDcuODYg
TUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgNi4wMC03LjAwIMKgIHNlYyDCoDYwLjkgTUJ5
dGVzIMKgIDUxMiBNYml0cy9zZWMgwqAgMTQgwqAgMy40MyBNQnl0ZXMgwqAgwqAgwqAgPGJyPlsg
wqA1XSDCoCA3LjAwLTguMDAgwqAgc2VjIMKgNjIuOCBNQnl0ZXMgwqAgNTI3IE1iaXRzL3NlYyDC
oCAxNiDCoCDCoDM3MiBLQnl0ZXMgwqAgwqAgwqAgPGJyPlsgwqA1XSDCoCA4LjAwLTkuMDAgwqAg
c2VjIMKgNTkuMyBNQnl0ZXMgwqAgNDk3IE1iaXRzL3NlYyDCoCAxNCDCoCAxLjc3IE1CeXRlcyDC
oCDCoCDCoCA8YnI+WyDCoDVdIMKgIDkuMDAtMTAuMDAgwqBzZWMgwqA1Ny4wIE1CeXRlcyDCoCA0
NzcgTWJpdHMvc2VjIMKgIDE4IMKgIDcuMTMgTUJ5dGVzIMKgIMKgIMKgIDxicj4tIC0gLSAtIC0g
LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtPGJyPlsgSURdIEludGVydmFs
IMKgIMKgIMKgIMKgIMKgIFRyYW5zZmVyIMKgIMKgIEJpdHJhdGUgwqAgwqAgwqAgwqAgUmV0cjxi
cj5bIMKgNV0gwqAgMC4wMC0xMC4wMCDCoHNlYyDCoCA1NDggTUJ5dGVzIMKgIDQ1OSBNYml0cy9z
ZWMgwqAxMzAgwqAgwqAgwqAgwqAgwqAgwqAgc2VuZGVyPGJyPlsgwqA1XSDCoCAwLjAwLTEwLjEw
IMKgc2VjIMKgIDU0MCBNQnl0ZXMgwqAgNDQ5IE1iaXRzL3NlYyDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoHJlY2VpdmVyPGJyPjxicj5pcGVyZiBEb25lLjxicj48YnI+Y2NAczE6fiAlIGlmY29u
ZmlnIGJjZTQ8YnI+YmNlNDogZmxhZ3M9ODg0MyZsdDtVUCxCUk9BRENBU1QsUlVOTklORyxTSU1Q
TEVYLE1VTFRJQ0FTVCZndDsgbWV0cmljIDAgbXR1IDE1MDA8YnI+CW9wdGlvbnM9YzAxYmImbHQ7
UlhDU1VNLFRYQ1NVTSxWTEFOX01UVSxWTEFOX0hXVEFHR0lORyxKVU1CT19NVFUsVkxBTl9IV0NT
VU0sVFNPNCxWTEFOX0hXVFNPLExJTktTVEFURSZndDs8YnI+CWV0aGVyIDAwOjEwOjE4OjU2Ojk0
OmQ0PGJyPglpbmV0IDEwLjEuMS4yIG5ldG1hc2sgMHhmZmZmZmYwMCBicm9hZGNhc3QgMTAuMS4x
LjI1NTxicj4JbWVkaWE6IEV0aGVybmV0IDEwMDBiYXNlVCAmbHQ7ZnVsbC1kdXBsZXgmZ3Q7PGJy
PglzdGF0dXM6IGFjdGl2ZTxicj4JbmQ2IG9wdGlvbnM9MjkmbHQ7UEVSRk9STU5VRCxJRkRJU0FC
TEVELEFVVE9fTElOS0xPQ0FMJmd0Ozxicj48YnI+SSBiZWxpZXZlIHRoZSBkZWZhdWx0IHZhbHVl
cyBmb3IgYmNlIHR4L3J4IHBhZ2VzIGFyZSAyLiBBbmQgSSBoYXBwZW5lZCB0byBmaW5kPGJyPnRo
aXMgcHJvYmxlbSBiZWZvcmUgdGhhdCB3aGVuIHRoZSB0eCBxdWV1ZSB3YXMgZnVsbCwgaXQgd291
bGQgbm90IGVucXVldWUgcGFja2V0czxicj5hbmQgc3RhcnRlZCByZXR1cm4gZXJyb3JzLjxicj5B
bmQgdGhpcyBlcnJvciB3YXMgbWlzdW5kZXJzdG9vZCBieSB0aGUgVENQIGxheWVyIGFzIHJldHJh
bnNtaXNzaW9uLjxicj48YnI+QWZ0ZXIgYWRkaW5nIGh3LmJjZS50eF9wYWdlcz00IGFuZCBody5i
Y2UucnhfcGFnZXM9NCBpbiAvYm9vdC9sb2FkZXIuY29uZiBhbmQgcmVib290Ojxicj48YnI+Y2NA
czE6fiAlIGlwZXJmMyAtYyByMSAtdCAxMCAtaSAxIC1DIGN1YmljPGJyPkNvbm5lY3RpbmcgdG8g
aG9zdCByMSwgcG9ydCA1MjAxPGJyPlsgwqA1XSBsb2NhbCAxMC4xLjEuMiBwb3J0IDIwNDc4IGNv
bm5lY3RlZCB0byAxMC4xLjEuMyBwb3J0IDUyMDE8YnI+WyBJRF0gSW50ZXJ2YWwgwqAgwqAgwqAg
wqAgwqAgVHJhbnNmZXIgwqAgwqAgQml0cmF0ZSDCoCDCoCDCoCDCoCBSZXRyIMKgQ3duZDxicj5b
IMKgNV0gwqAgMC4wMC0xLjAwIMKgIHNlYyDCoDQuMTUgTUJ5dGVzIMKgMzQuOCBNYml0cy9zZWMg
wqAgwqAwIMKgIDEuMTcgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgMS4wMC0yLjAwIMKg
IHNlYyDCoDgzLjEgTUJ5dGVzIMKgIDY5NyBNYml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVz
IMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgMi4wMC0zLjAwIMKgIHNlYyDCoCAxMTIgTUJ5dGVzIMKg
IDkzOSBNYml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0g
wqAgMy4wMC00LjAwIMKgIHNlYyDCoCAxMTMgTUJ5dGVzIMKgIDk0NCBNYml0cy9zZWMgwqAgwqAw
IMKgIDEyLjIgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgNC4wMC01LjAwIMKgIHNlYyDC
oCAxMTIgTUJ5dGVzIMKgIDk0MCBNYml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVzIMKgIMKg
IMKgIDxicj5bIMKgNV0gwqAgNS4wMC02LjAwIMKgIHNlYyDCoCAxMTIgTUJ5dGVzIMKgIDk0MiBN
Yml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgNi4w
MC03LjAwIMKgIHNlYyDCoCAxMTIgTUJ5dGVzIMKgIDkzOCBNYml0cy9zZWMgwqAgwqAwIMKgIDEy
LjIgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgNy4wMC04LjAwIMKgIHNlYyDCoCAxMTMg
TUJ5dGVzIMKgIDk0NCBNYml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVzIMKgIMKgIMKgIDxi
cj5bIMKgNV0gwqAgOC4wMC05LjAwIMKgIHNlYyDCoCAxMTIgTUJ5dGVzIMKgIDkzOCBNYml0cy9z
ZWMgwqAgwqAwIMKgIDEyLjIgTUJ5dGVzIMKgIMKgIMKgIDxicj5bIMKgNV0gwqAgOS4wMC0xMC4w
MCDCoHNlYyDCoCAxMTMgTUJ5dGVzIMKgIDk0NyBNYml0cy9zZWMgwqAgwqAwIMKgIDEyLjIgTUJ5
dGVzIMKgIMKgIMKgIDxicj4tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g
LSAtIC0gLSAtPGJyPlsgSURdIEludGVydmFsIMKgIMKgIMKgIMKgIMKgIFRyYW5zZmVyIMKgIMKg
IEJpdHJhdGUgwqAgwqAgwqAgwqAgUmV0cjxicj5bIMKgNV0gwqAgMC4wMC0xMC4wMCDCoHNlYyDC
oCA5ODUgTUJ5dGVzIMKgIDgyNiBNYml0cy9zZWMgwqAgwqAwIMKgIMKgIMKgIMKgIMKgIMKgIHNl
bmRlcjxicj5bIMKgNV0gwqAgMC4wMC0xMC4xMSDCoHNlYyDCoCA5ODIgTUJ5dGVzIMKgIDgxNSBN
Yml0cy9zZWMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZWNlaXZlcjxicj48YnI+aXBlcmYg
RG9uZS48ZGl2PjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiIGRhdGEtc21h
cnRtYWlsPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PGJyPjwvZGl2PkJl
c3QgUmVnYXJkcyw8ZGl2PkNoZW5nIEN1aTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxicj48L2Rp
dj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFp
bF9hdHRyIj5PbiBGcmksIEp1biAzMCwgMjAyMyBhdCAxMjoyNuKAr1BNIE11cmFsaSBLcmlzaG5h
bXVydGh5ICZsdDs8YSBocmVmPSJtYWlsdG86bXVyYWxpazFAdm13YXJlLmNvbSI+bXVyYWxpazFA
dm13YXJlLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21h
aWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4
IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBjbGFzcz0ibXNn
NzI3Njc4OTg1Nzg1NDI4NDgzMiI+DQoNCg0KDQoNCg0KPGRpdiBzdHlsZT0ib3ZlcmZsb3ctd3Jh
cDogYnJlYWstd29yZDsiIGxhbmc9IkVOLUlOIj4NCjxkaXYgY2xhc3M9Im1fLTg5MzUxNjA5MzAz
MjkzMzM4NTdXb3JkU2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+UmljaGFy
ZCw8dT48L3U+PHU+PC91Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bhbj48
dT48L3U+wqA8dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuPkFw
cHJlY2lhdGUgdGhlIHVzZWZ1bCBpbnB1dHMgeW91IGhhdmUgc2hhcmVkIHNvIGZhci4gV2lsbCB0
cnkgdG8gZmlndXJlIG91dCByZWdhcmRpbmcgcGFja2V0IGRyb3BzLjx1PjwvdT48dT48L3U+PC9z
cGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuPjx1PjwvdT7CoDx1PjwvdT48L3Nw
YW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+UmVnYXJkaW5nIEh5U3RhcnQsIEkg
c2VlIGV2ZW4gQlNEIGNvZGUgYmFzZSBoYXMgc3VwcG9ydCBmb3IgdGhpcy4gTWF5IEkga25vdyBi
eSB3aGVuIGNhbiB3ZSBzZWUgdGhhdCBpbiBhbiByZWxlYXNlLCBpZiBub3QgYWxyZWFkeSBhdmFp
bGFibGUgPzx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz
cGFuPjx1PjwvdT7CoDx1PjwvdT48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw
YW4+UmVnYXJkaW5nIHRoaXMgcG9pbnQgOg0KPGk+4oCcPC9pPjwvc3Bhbj48aT5Td2l0Y2hpbmcg
dG8gb3RoZXIgY2MgbW9kdWxlcyBtYXkgZ2l2ZSBzb21lIG1vcmUgaW5zaWdodHMuIEJ1dCBhZ2Fp
biwgSSBzdXNwZWN0IHRoYXQgbW9tZW50YXJ5IChtaWNyb3NlY29uZCkgYnVyc3RpbmVzcyBvZiBC
U0QgbWF5IGJlIGNhdXNpbmcgdGhpcyBzaWduaWZpY2FudGx5IGhpZ2hlciBsb3NzIHJhdGUuPC9p
PjxpPjxzcGFuPuKAnTwvc3Bhbj48L2k+PHNwYW4+PHU+PC91Pjx1PjwvdT48L3NwYW4+PC9wPg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+SXMgdGhlcmUgc29tZSBpbmZvIHNvbWV3aGVyZSB3
aGVyZSBJIGNhbiB1bmRlcnN0YW5kIG1vcmUgb24gdGhpcyBpbiBkZXRhaWw/PC9zcGFuPjx1Pjwv
dT48dT48L3U+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+PHU+PC91PsKgPHU+PC91
Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bhbj5SZWdhcmRzPHU+PC91Pjx1
PjwvdT48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+TXVyYWxpPHU+PC91
Pjx1PjwvdT48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4+PHU+PC91PsKg
PHU+PC91Pjwvc3Bhbj48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bhbj48dT48L3U+wqA8
dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90
dG9tOjEycHQiPk9uIDMwLzA2LzIzLCA5OjM1IFBNLCAmcXVvdDs8YSBocmVmPSJtYWlsdG86b3du
ZXItZnJlZWJzZC10cmFuc3BvcnRAZnJlZWJzZC5vcmciIHRhcmdldD0iX2JsYW5rIj5vd25lci1m
cmVlYnNkLXRyYW5zcG9ydEBmcmVlYnNkLm9yZzwvYT4mcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0
bzpvd25lci1mcmVlYnNkLXRyYW5zcG9ydEBmcmVlYnNkLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPm93
bmVyLWZyZWVic2QtdHJhbnNwb3J0QGZyZWVic2Qub3JnPC9hPiZndDsgd3JvdGU6PHU+PC91Pjx1
PjwvdT48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91Pjwv
cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPkhpIE11cmFsaSw8dT48L3U+
PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7C
oDx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IFEu
IFNpbmNlIHlvdSBtZW50aW9uIHR3byBoeXBlcnZpc29ycyAtIHdoYXQgaXMgdGhlIHBoeWlzY2Fs
IG5ldHdvcmsgdG9wb2xvZ3kgaW4gYmV0d2VlbiB0aGVzZSB0d28gc2VydmVycz8gV2hhdCB0aGVv
cmV0aWNhbCBsaW5rIHJhdGVzIHdvdWxkIGJlIGF0dGFpbmFibGU/PHU+PC91Pjx1PjwvdT48L3A+
DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7wqDCoDx1PjwvdT48dT48
L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyBIZXJlIGlz
IHRoZSB0b3BvbG9neTx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+Jmd0OyA8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPiZndDsgSXBlcmYgZW5kIHBvaW50cyBhcmUgb24gMiBkaWZmZXJlbnQg
aHlwZXJ2aXNvcnMuIDx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9
Ik1zb05vcm1hbCI+Jmd0OyA8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPiZndDvCoMKg4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU
wqDCoMKgwqDCoMKgwqDCoOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKA
lOKAlOKAlMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg4oCU
4oCU4oCU4oCU4oCU4oCUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDigJTigJTigJTi
gJTigJTigJQt4oCUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPHU+PC91Pjx1PjwvdT48L3A+DQo8
L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IHwgTGludXggVk0xIHzCoMKg
wqDCoMKgwqB8wqDCoEJTRCAxMyBWTSAxwqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgTGludXggVk0ywqDCoHzCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoHzCoMKgQlNEIDEzIFZNIDLCoMKgfDx1PjwvdT48dT48L3U+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyB8X19fX19fX19fX198wqDCoMKg
wqDCoMKgfF8gX19fXyBfX19fIF9fXyB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqB8X19fX19fX19fX18gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgfF8gX19fXyBfX19fIF9fXyB8PHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IHzCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8PHU+PC91Pjx1PjwvdT48
L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7wqDCoMKgwqDCoMKg
wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHw8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt
YWwiPiZndDsg4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDigJTigJTigJTi
gJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJTigJQ8dT48L3U+PHU+PC91PjwvcD4NCjwv
ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZndDsgfMKgwqDCoMKgwqDCoMKgwqDC
oMKgIEVTWCBIeXBlcnZpc29yIDHCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqDCoMKgwqDCoMKg
wqDCoCAxMEcgbGluayBjb25uZWN0ZWQgdmlhIEwyIFN3aXRjaMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIEVTWCBIeXBlcnZp
c29ywqDCoDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8PHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rp
dj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IHzCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB84oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU
4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgfDx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyB84oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU
4oCU4oCU4oCU4oCUIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCB84oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCUfDx1Pjwv
dT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyA8
dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZn
dDsgPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs
Ij4mZ3Q7IE5pYyBpcyBvZiAxMEcgY2FwYWNpdHkgb24gYm90aCBFU1ggc2VydmVyIGFuZCBpdCBo
YXMgYmVsb3cgY29uZmlnLjx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs
YXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj
bGFzcz0iTXNvTm9ybWFsIj5Tbywgd2hlbiBib3RoIFZNcyBydW4gb24gdGhlIHNhbWUgSHlwZXJ2
aXNvciwgbWF5YmUgd2l0aCBhbm90aGVyIFZNIHRvIHNpbXVsYXRlIHRoZSAxMDBtcyBkZWxheSwg
Y2FuIHlvdSBhdHRhaW4gYSBsb3NzbGVzcyBiYXNlbGluZSBzY2VuYXJpbz88dT48L3U+PHU+PC91
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1Pjwv
dT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48
L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyBCRFAgZm9y
IDE2TUIgU29ja2V0IGJ1ZmZlcjogMTYgTUIgKiAoMTAwMCBtcyAqIDEwMG1zIGxhdGVuY3kpICog
OCBiaXRzLyAxMDI0ID0gMS4yNSBHYnBzPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IDx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyBTbyB0aGVvcmV0aWNhbGx5IHdlIHNob3Vs
ZCBzZWUgY2xvc2UgdG8gMS4yNUdicHMgb2YgQml0cmF0ZSBhbmQgd2Ugc2VlIExpbnV4IHJlYWNo
aW5nIGNsb3NlIHRvIHRoaXMgbnVtYmVyLjx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2
Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPlVuZGVyIG5vIGxvc3MsIHllcy48dT48L3U+PHU+PC91
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1Pjwv
dT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48
L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyBCdXQgQlNE
IGlzIG5vdCBhYmxlIHRvIGRvIHRoYXQuPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+
DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IDx1PjwvdT48dT48L3U+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyA8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2
Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZndDsgUS4gRGlkIHlvdSBydW4gaXBlcmYz
PyBEaWQgdGhlIHRyYW5zbWl0dGluZyBlbmRwb2ludCByZXBvcnQgYW55IHJldHJhbnNtaXNzaW9u
cyBiZXR3ZWVuIExpbnV4IG9yIEZCU0QgaG9zdHM/PHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IDx1PjwvdT48dT48L3U+PC9wPg0KPC9k
aXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+Jmd0OyBZZXMsIHdlIHVzZWQgaXBlcjMu
IEkgc2VlIExpbnV4IGRvaW5nIGxlc3MgbnVtYmVyIHJldHJhbnNtaXNzaW9ucyBjb21wYXJlZCB0
byBCU0QuDQo8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29O
b3JtYWwiPiZndDsgT24gQlNELCB0aGUgYmVzdCBwZXJmb3JtYW5jZSB3YXMgYXJvdW5kIDYwMCBN
YnBzIGJpdHJhdGUgYW5kIHRoZSBudW1iZXIgb2YgcmV0cmFuc21pc3Npb25zIGZvciB0aGlzIG51
bWJlciBzZWVuIGlzIGFyb3VuZCAzMks8dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4N
CjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZndDsgT24gTGludXgsIHRoZSBiZXN0IHBlcmZvcm1hbmNl
IHdhcyBhcm91bmQgMS4xNSBHYnBzIGJpdHJhdGUgYW5kIHRoZSBudW1iZXIgb2YgcmV0cmFuc21p
c3Npb25zIGZvciB0aGlzIG51bWJlciBzZWVuIGlzIG9ubHkgMksuDQo8dT48L3U+PHU+PC91Pjwv
cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPiZndDsgU28gYXMgeW91IHBv
aW50ZWQgdGhlIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMgaW4gQlNEIGNvdWxkIGJlIHRoZSBy
ZWFsIGlzc3VlIGhlcmUuPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xh
c3M9Ik1zb05vcm1hbCI+VGhlcmUgYXJlIG90aGVyIGNjIG1vZHVsZXMgYXZhaWxhYmxlOyBidXQg
SSBiZWxpZXZlIG9uZSBtYWpvciBkZXZpYXRpb24gaXMgdGhhdCBMaW51eCBjYW4gcGVyZm9ybSBt
ZWNoYW5pc21zIGxpa2UgaHlzdGFydDsgQUNLaW5nIGV2ZXJ5IHBhY2tldCB3aGVuIHRoZSBjbGll
bnQgZGV0ZWN0cyBzbG93IHN0YXJ0OyBwZXJmb3JtIHBhY2luZyB0byBhY2hpZXZlIG1vcmUgdW5p
Zm9ybSBwYWNrZXQgdHJhbnNtaXNzaW9ucy48dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRp
dj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5JIHRoaW5rIHRoZSBuZXh0IHN0ZXAgd291bGQgYmUg
dG8gZmluZCBvdXQsIGF0IHdoaWNoIHF1ZXVlIHRob3NlIHBhY2tldCBkaXNjYXJkcyBhcmUgY29t
aW5nIGZyb20gKGV4dGVybmFsIHN3aXRjaD8gZGVsYXkgZ2VuZXJhdG9yPyBWc3dpdGNoPyBFdGgg
c3RhY2sgaW5zaWRlIHRoZSBWTT8pPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+T3IgYWx0ZXJuYXRpdmVseSwgcHJvdmlkZSB5b3VyIEVTWCBo
eXBlcnZpc29ycyB3aXRoIHZhc3RseSBtb3JlIGxpbmsgc3BlZWQsIHRvIHJ1bGUgb3V0IGFueSBM
MiBpbmR1Y2VkIHBhY2tldCBkcm9wcyAtIHByb3ZpZGVkIHlvdXIgZGVsYXkgZ2VuZXJhdG9yIGlz
IG5vdCB0aGUgc291cmNlIHdoZW4gbW9tZW50YXJpbHkgb3ZlcmxvYWRlZC48dT48L3U+PHU+PC91
PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1Pjwv
dT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj4mZ3Q7IElzIHRoZXJl
IGEgd2F5IHRvIHJlZHVjZSB0aGlzIHBhY2tldCBsb3NzIGJ5IGZpbmUgdHVuaW5nIHNvbWUgcGFy
YW1ldGVycyB3LnIudCByaW5nIGJ1ZmZlciBvciBhbnkgb3RoZXIgYXJlYXM/DQo8dT48L3U+PHU+
PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1
PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj5GaW5kaW5nIHdo
ZXJlIHRoZXNlIGFyaXNlIChsb29raW5nIGF0IHF1ZXVlIGFuZCBwb3J0IGNvdW50ZXJzKSB3b3Vs
ZCBiZSB0aGUgbmV4dCBzdGVwLiBCdXQgdGhpcyBpcyBub3QgcmVhbGx5IG15IHNwZWNpZmljIGFy
ZWEgb2YgZXhwZXJ0aXNlIGJleW9uZCB0aGUgaGlnaCBsZXZlbCwgdmVuZG9yIGluZGVwZW5kZW50
IG9ic2VydmF0aW9ucy48dT48L3U+PHU+PC91PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNz
PSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFz
cz0iTXNvTm9ybWFsIj5Td2l0Y2hpbmcgdG8gb3RoZXIgY2MgbW9kdWxlcyBtYXkgZ2l2ZSBzb21l
IG1vcmUgaW5zaWdodHMuIEJ1dCBhZ2FpbiwgSSBzdXNwZWN0IHRoYXQgbW9tZW50YXJ5IChtaWNy
b3NlY29uZCkgYnVyc3RpbmVzcyBvZiBCU0QgbWF5IGJlIGNhdXNpbmcgdGhpcyBzaWduaWZpY2Fu
dGx5IGhpZ2hlciBsb3NzIHJhdGUuPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8
cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K
PHAgY2xhc3M9Ik1zb05vcm1hbCI+VENQIFJBQ0sgd291bGQgYmUgYW5vdGhlciBvcHRpb24uIFRo
YXQgc3RhY2sgaGFzIHBhY2luZywgbW9yZSBmaW5lLWdyYWluZWQgdGltaW5nLCB0aGUgUkFDSyBs
b3NzIHJlY292ZXJ5IG1lY2hhbmlzbXMgZXRjLiBNYXliZSB0aGF0IGhlbHBzIHJlZHVjZSB0aGUg
b2JzZXJ2ZWQgcGFja2V0IGRyb3BzIGJ5IGlwZXJmLCBhbmQgY29uc2VxdWVudGx5LCB5aWVsZCBh
IGhpZ2hlciBvdmVyYWxsIHRocm91aGdwdXQuPHU+PC91Pjx1PjwvdT48L3A+DQo8L2Rpdj4NCjxk
aXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPC9kaXY+DQo8
ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHU+PC91PsKgPHU+PC91PjwvcD4NCjwvZGl2Pg0K
PGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjx1PjwvdT7CoDx1PjwvdT48L3A+DQo8L2Rpdj4N
CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48dT48L3U+wqA8dT48L3U+PC9wPg0KPC9kaXY+
DQo8L2Rpdj4NCjwvZGl2Pg0KDQo8L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+DQo=
--00000000000057840405ff5b5cdc--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGaXuiJEsgRXo12iVW_9C-VzT%2BF3E3CuYa-es3qJ9w8n3yrAwg>