Houston, I think we have a problem

Mike Galbraith (efault@gmx.de)
Sun, 27 Apr 2003 12:52:49 +0200


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-28622-1051441518-0001-2
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

<SQUEAK! SQUEAK! SQUEAK!>

Hi Folks,

I don't generally squeak unless I'm pretty darn sure I see a genuine
problem. I think I see one right now, so here I am squeaking my little
lungs out ;-) Perhaps I'm being stupid, and if that's the case, someone
please apply a size 15EE boot vigorously to my tail-feathers (jump-start
brain), and I'll shut up.

The problem I see is terrible terrible semaphore starvation. It comes in
two varieties, and might apply to other locks as well [1]. Variety 1 is
owners of semaphores being sent off to the expired array, which happens
with remarkable frequency. This variant is the lesser of the two evils,
because here at least you have _some_ protection via EXPIRED_STARVING(),
even if you have interactive tasks doing round robin. The worst variant is
when you have a steady stream of tasks being upgraded to TASK_INTERACTIVE()
while someone of low/modest priority has a semaphore downed... the poor guy
can (seemingly) wait for _ages_ to get a chance to release it, and will
starve all comers in the meantime. I regularly see a SCHED_RR and
mlockall() vmstat stall for several seconds, and _sometimes_ my poor little
box goes utterly insane and stalls vmstat for over a MINUTE [2].

To reproduce this 100% of the time, simply compile virgin 2.5.68
up/preempt, reduce your ram to 128mb, and using gcc-2.95.3 as to not
overload the vm, run a make -j30 bzImage in an ext3 partition on a P3/500
single ide disk box. No, you don't really need to meet all of those
restrictions... you'll see the problem on a big hairy chested box as well,
just not as bad as I see it on my little box. The first symptom of the
problem you will notice is a complete lack of swap activity along with
highly improbable quantities of unused ram were all those hungry cc1's
getting regular CPU feedings.

If the huge increase in hold time (induced by a stream of elevated priority
tasks who may even achieve their elevated status via _one_ wakeup), is the
desired behavior now, so be it. If that's the case, someone please say so,
that I may cease and desist fighting with the dang thing. I'm having lots
of fun mind you, but testing is supposed to be mind-numbingly boring ;-)

Anyway, grep for pid:prio pair 301:-2 in the attached log to see vmstat
being nailed for over 8 seconds. Then, grep for pid:prio pair 1119:23 to
see a task holding up a parade for 7 seconds. The patch I used to generate
this log is also attached for idiot-reproachment purposes.

(um, don't anyone try running it on an SMP or NUMA beast [those folks would
surely know better, but...] as it's highly likely to explode violently)

halbaderi,

-Mike

1. I'm pretty sure it does... might really be that Heisenberg fellow
messing with me again.

2. The 100% simple and effective way to "fix" this problem for this work
load is to "just say no" to coughing up more than HZ worth of cpu time in
activate_task(). This seems perfectly obvious and correct to me... though
I'll admit it would seem much _more_ perfectly obvious and correct if
MAX_SLEEP_AVG were 11000 instead of 10000... or maybe even
40000. Whatever. I posted one X-patch that worked pretty darn well, but
nobody tried it. Not even the folks who were _griping_ about
interactivity, fairness and whatnot. How boring.

btw, what happens when kjournald yields and goes off to expired land? see
log2.txt
--=_courier-28622-1051441518-0001-2
Content-Type: text/plain; name="log.txt"; x-mac-type=42494E41; x-mac-creator=74747874; charset=iso-8859-1
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="log.txt"

MTEzMToxOCBzdGFydmVkIDUgc2VjcyBieSAxMTE5OjIzIHdobyBsYXN0IHJhbiA1MTUyIHRpY2tz
IGFnby4Kc2ggICAgICAgICAgICBSIEM1RDk1RTEwIDkyNzU4MTg4ICAxMTE5ICAgMTExOCAgICAg
ICAgICAgICAgICAgICAgIChOT1RMQikKQ2FsbCBUcmFjZToKIFs8YzAxMTY3N2E+XSBpb19zY2hl
ZHVsZSsweGUvMHgxOAogWzxjMDE0M2JlZT5dIF9fd2FpdF9vbl9idWZmZXIrMHhhMi8weGJjCiBb
PGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4MC8weDM4CiBbPGMwMTE2ZTM0
Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4MC8weDM4CiBbPGMwMTQ0YzgzPl0gX19icmVh
ZF9zbG93KzB4NzMvMHg5NAogWzxjMDE0NGViZT5dIF9fYnJlYWQrMHgyYS8weDM0CiBbPGMwMTc3
YzMxPl0gZXh0M19nZXRfaW5vZGVfbG9jKzB4ZTEvMHgxNDAKIFs8YzAxNzg2MTk+XSBleHQzX3Jl
c2VydmVfaW5vZGVfd3JpdGUrMHgxZC8weDk0CiBbPGMwMTc4NmFhPl0gZXh0M19tYXJrX2lub2Rl
X2RpcnR5KzB4MWEvMHgzNAogWzxjMDE3NGY3ND5dIGV4dDNfbmV3X2lub2RlKzB4NzE0LzB4N2Yw
CiBbPGMwMTdhYzk1Pl0gZXh0M19jcmVhdGUrMHg4ZC8weDE4MAogWzxjMDE0ZjQ2YT5dIHZmc19j
cmVhdGUrMHhhZS8weGQ0CiBbPGMwMTRmODJkPl0gb3Blbl9uYW1laSsweDFhZC8weDRhOAogWzxj
MDE0MjA3Mz5dIGZpbHBfb3BlbisweDNiLzB4NWMKIFs8YzAxNDI0OWI+XSBzeXNfb3BlbisweDM3
LzB4NzAKIFs8YzAxMDhjYmY+XSBzeXNjYWxsX2NhbGwrMHg3LzB4YgoKc2VtYXBob3JlIGRvd25l
ZCBhdCBmcy9uYW1laS5jOjEyNDkuCgoxMTMyOjE4IHN0YXJ2ZWQgNSBzZWNzIGJ5IDExMTk6MjMg
d2hvIGxhc3QgcmFuIDUxNzggdGlja3MgYWdvLgpzaCAgICAgICAgICAgIFIgQzVEOTVFMTAgOTI3
NTgxODggIDExMTkgICAxMTE4ICAgICAgICAgICAgICAgICAgICAgKE5PVExCKQpDYWxsIFRyYWNl
OgogWzxjMDExNjc3YT5dIGlvX3NjaGVkdWxlKzB4ZS8weDE4CiBbPGMwMTQzYmVlPl0gX193YWl0
X29uX2J1ZmZlcisweGEyLzB4YmMKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rp
b24rMHgwLzB4MzgKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4
MzgKIFs8YzAxNDRjODM+XSBfX2JyZWFkX3Nsb3crMHg3My8weDk0CiBbPGMwMTQ0ZWJlPl0gX19i
cmVhZCsweDJhLzB4MzQKIFs8YzAxNzdjMzE+XSBleHQzX2dldF9pbm9kZV9sb2MrMHhlMS8weDE0
MAogWzxjMDE3ODYxOT5dIGV4dDNfcmVzZXJ2ZV9pbm9kZV93cml0ZSsweDFkLzB4OTQKIFs8YzAx
Nzg2YWE+XSBleHQzX21hcmtfaW5vZGVfZGlydHkrMHgxYS8weDM0CiBbPGMwMTc0Zjc0Pl0gZXh0
M19uZXdfaW5vZGUrMHg3MTQvMHg3ZjAKIFs8YzAxN2FjOTU+XSBleHQzX2NyZWF0ZSsweDhkLzB4
MTgwCiBbPGMwMTRmNDZhPl0gdmZzX2NyZWF0ZSsweGFlLzB4ZDQKIFs8YzAxNGY4MmQ+XSBvcGVu
X25hbWVpKzB4MWFkLzB4NGE4CiBbPGMwMTQyMDczPl0gZmlscF9vcGVuKzB4M2IvMHg1YwogWzxj
MDE0MjQ5Yj5dIHN5c19vcGVuKzB4MzcvMHg3MAogWzxjMDEwOGNiZj5dIHN5c2NhbGxfY2FsbCsw
eDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0IGZzL25hbWVpLmM6MTI0OS4KCjEwOTM6MTggc3Rh
cnZlZCA1IHNlY3MgYnkgMTExOToyMyB3aG8gbGFzdCByYW4gNTIwNCB0aWNrcyBhZ28uCnNoICAg
ICAgICAgICAgUiBDNUQ5NUUxMCA5Mjc1ODE4OCAgMTExOSAgIDExMTggICAgICAgICAgICAgICAg
ICAgICAoTk9UTEIpCkNhbGwgVHJhY2U6CiBbPGMwMTE2NzdhPl0gaW9fc2NoZWR1bGUrMHhlLzB4
MTgKIFs8YzAxNDNiZWU+XSBfX3dhaXRfb25fYnVmZmVyKzB4YTIvMHhiYwogWzxjMDExNmUzND5d
IGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgzOAogWzxjMDExNmUzND5dIGF1dG9yZW1v
dmVfd2FrZV9mdW5jdGlvbisweDAvMHgzOAogWzxjMDE0NGM4Mz5dIF9fYnJlYWRfc2xvdysweDcz
LzB4OTQKIFs8YzAxNDRlYmU+XSBfX2JyZWFkKzB4MmEvMHgzNAogWzxjMDE3N2MzMT5dIGV4dDNf
Z2V0X2lub2RlX2xvYysweGUxLzB4MTQwCiBbPGMwMTc4NjE5Pl0gZXh0M19yZXNlcnZlX2lub2Rl
X3dyaXRlKzB4MWQvMHg5NAogWzxjMDE3ODZhYT5dIGV4dDNfbWFya19pbm9kZV9kaXJ0eSsweDFh
LzB4MzQKIFs8YzAxNzRmNzQ+XSBleHQzX25ld19pbm9kZSsweDcxNC8weDdmMAogWzxjMDE3YWM5
NT5dIGV4dDNfY3JlYXRlKzB4OGQvMHgxODAKIFs8YzAxNGY0NmE+XSB2ZnNfY3JlYXRlKzB4YWUv
MHhkNAogWzxjMDE0ZjgyZD5dIG9wZW5fbmFtZWkrMHgxYWQvMHg0YTgKIFs8YzAxNDIwNzM+XSBm
aWxwX29wZW4rMHgzYi8weDVjCiBbPGMwMTQyNDliPl0gc3lzX29wZW4rMHgzNy8weDcwCiBbPGMw
MTA4Y2JmPl0gc3lzY2FsbF9jYWxsKzB4Ny8weGIKCnNlbWFwaG9yZSBkb3duZWQgYXQgZnMvbmFt
ZWkuYzoxMjQ5LgoKMTA2NzoxOCBzdGFydmVkIDUgc2VjcyBieSAxMTE5OjIzIHdobyBsYXN0IHJh
biA1MjMwIHRpY2tzIGFnby4Kc2ggICAgICAgICAgICBSIEM1RDk1RTEwIDkyNzU4MTg4ICAxMTE5
ICAgMTExOCAgICAgICAgICAgICAgICAgICAgIChOT1RMQikKQ2FsbCBUcmFjZToKIFs8YzAxMTY3
N2E+XSBpb19zY2hlZHVsZSsweGUvMHgxOAogWzxjMDE0M2JlZT5dIF9fd2FpdF9vbl9idWZmZXIr
MHhhMi8weGJjCiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4MC8weDM4
CiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4MC8weDM4CiBbPGMwMTQ0
YzgzPl0gX19icmVhZF9zbG93KzB4NzMvMHg5NAogWzxjMDE0NGViZT5dIF9fYnJlYWQrMHgyYS8w
eDM0CiBbPGMwMTc3YzMxPl0gZXh0M19nZXRfaW5vZGVfbG9jKzB4ZTEvMHgxNDAKIFs8YzAxNzg2
MTk+XSBleHQzX3Jlc2VydmVfaW5vZGVfd3JpdGUrMHgxZC8weDk0CiBbPGMwMTc4NmFhPl0gZXh0
M19tYXJrX2lub2RlX2RpcnR5KzB4MWEvMHgzNAogWzxjMDE3NGY3ND5dIGV4dDNfbmV3X2lub2Rl
KzB4NzE0LzB4N2YwCiBbPGMwMTdhYzk1Pl0gZXh0M19jcmVhdGUrMHg4ZC8weDE4MAogWzxjMDE0
ZjQ2YT5dIHZmc19jcmVhdGUrMHhhZS8weGQ0CiBbPGMwMTRmODJkPl0gb3Blbl9uYW1laSsweDFh
ZC8weDRhOAogWzxjMDE0MjA3Mz5dIGZpbHBfb3BlbisweDNiLzB4NWMKIFs8YzAxNDI0OWI+XSBz
eXNfb3BlbisweDM3LzB4NzAKIFs8YzAxMDhjYmY+XSBzeXNjYWxsX2NhbGwrMHg3LzB4YgoKc2Vt
YXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgoxMTQyOjIyIHN0YXJ2ZWQgMSBzZWNz
IGJ5IDExMzM6MjMgd2hvIGxhc3QgcmFuIDU2MTMgdGlja3MgYWdvLgpzZW1hcGhvcmUgZG93bmVk
IGF0IGZzL25hbWVpLmM6MTI0OS4KCjM5NjoxNSBzdGFydmVkIDIgc2VjcyBieSAxMTE5OjIzIHdo
byBsYXN0IHJhbiA1NzY3IHRpY2tzIGFnby4Kc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5j
OjEyNDkuCgoxMTM5OjIxIHN0YXJ2ZWQgMiBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDU3
NjcgdGlja3MgYWdvLgpzZW1hcGhvcmUgZG93bmVkIGF0IGZzL25hbWVpLmM6MTI0OS4KCjMwMTot
MiBzdGFydmVkIDMgc2VjcyBieSAxMTM3OjIxIHdobyBsYXN0IHJhbiAzNjY3IHRpY2tzIGFnby4K
c2VtYXBob3JlIGRvd25lZCBhdCBhcmNoL2kzODYva2VybmVsL3N5c19pMzg2LmM6NTguCgoxMDc5
OjE2IHN0YXJ2ZWQgNiBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDYxNTUgdGlja3MgYWdv
LgpzaCAgICAgICAgICAgIFIgQzVEOTVFMTAgOTI3NTgxODggIDExMTkgICAxMTE4ICAgICAgICAg
ICAgICAgICAgICAgKE5PVExCKQpDYWxsIFRyYWNlOgogWzxjMDExNjc3YT5dIGlvX3NjaGVkdWxl
KzB4ZS8weDE4CiBbPGMwMTQzYmVlPl0gX193YWl0X29uX2J1ZmZlcisweGEyLzB4YmMKIFs8YzAx
MTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxMTZlMzQ+XSBh
dXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxNDRjODM+XSBfX2JyZWFkX3Ns
b3crMHg3My8weDk0CiBbPGMwMTQ0ZWJlPl0gX19icmVhZCsweDJhLzB4MzQKIFs8YzAxNzdjMzE+
XSBleHQzX2dldF9pbm9kZV9sb2MrMHhlMS8weDE0MAogWzxjMDE3ODYxOT5dIGV4dDNfcmVzZXJ2
ZV9pbm9kZV93cml0ZSsweDFkLzB4OTQKIFs8YzAxNzg2YWE+XSBleHQzX21hcmtfaW5vZGVfZGly
dHkrMHgxYS8weDM0CiBbPGMwMTc0Zjc0Pl0gZXh0M19uZXdfaW5vZGUrMHg3MTQvMHg3ZjAKIFs8
YzAxN2FjOTU+XSBleHQzX2NyZWF0ZSsweDhkLzB4MTgwCiBbPGMwMTRmNDZhPl0gdmZzX2NyZWF0
ZSsweGFlLzB4ZDQKIFs8YzAxNGY4MmQ+XSBvcGVuX25hbWVpKzB4MWFkLzB4NGE4CiBbPGMwMTQy
MDczPl0gZmlscF9vcGVuKzB4M2IvMHg1YwogWzxjMDE0MjQ5Yj5dIHN5c19vcGVuKzB4MzcvMHg3
MAogWzxjMDEwOGNiZj5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0
IGZzL25hbWVpLmM6MTI0OS4KCjExMzE6MTcgc3RhcnZlZCA2IHNlY3MgYnkgMTExOToyMyB3aG8g
bGFzdCByYW4gNjE4MSB0aWNrcyBhZ28uCnNoICAgICAgICAgICAgUiBDNUQ5NUUxMCA5Mjc1ODE4
OCAgMTExOSAgIDExMTggICAgICAgICAgICAgICAgICAgICAoTk9UTEIpCkNhbGwgVHJhY2U6CiBb
PGMwMTE2NzdhPl0gaW9fc2NoZWR1bGUrMHhlLzB4MTgKIFs8YzAxNDNiZWU+XSBfX3dhaXRfb25f
YnVmZmVyKzB4YTIvMHhiYwogWzxjMDExNmUzND5dIGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisw
eDAvMHgzOAogWzxjMDExNmUzND5dIGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgzOAog
WzxjMDE0NGM4Mz5dIF9fYnJlYWRfc2xvdysweDczLzB4OTQKIFs8YzAxNDRlYmU+XSBfX2JyZWFk
KzB4MmEvMHgzNAogWzxjMDE3N2MzMT5dIGV4dDNfZ2V0X2lub2RlX2xvYysweGUxLzB4MTQwCiBb
PGMwMTc4NjE5Pl0gZXh0M19yZXNlcnZlX2lub2RlX3dyaXRlKzB4MWQvMHg5NAogWzxjMDE3ODZh
YT5dIGV4dDNfbWFya19pbm9kZV9kaXJ0eSsweDFhLzB4MzQKIFs8YzAxNzRmNzQ+XSBleHQzX25l
d19pbm9kZSsweDcxNC8weDdmMAogWzxjMDE3YWM5NT5dIGV4dDNfY3JlYXRlKzB4OGQvMHgxODAK
IFs8YzAxNGY0NmE+XSB2ZnNfY3JlYXRlKzB4YWUvMHhkNAogWzxjMDE0ZjgyZD5dIG9wZW5fbmFt
ZWkrMHgxYWQvMHg0YTgKIFs8YzAxNDIwNzM+XSA8Nz4xMTMyOjE3IHN0YXJ2ZWQgNiBzZWNzIGJ5
IDExMTk6MjMgd2hvIGxhc3QgcmFuIDYyMDUgdGlja3MgYWdvLgpzaCAgICAgICAgICAgIFIgQzVE
OTVFMTAgOTI3NTgxODggIDExMTkgICAxMTE4ICAgICAgICAgICAgICAgICAgICAgKE5PVExCKQpD
YWxsIFRyYWNlOgogWzxjMDExNjc3YT5dIGlvX3NjaGVkdWxlKzB4ZS8weDE4CiBbPGMwMTQzYmVl
Pl0gX193YWl0X29uX2J1ZmZlcisweGEyLzB4YmMKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dh
a2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rp
b24rMHgwLzB4MzgKIFs8YzAxNDRjODM+XSBfX2JyZWFkX3Nsb3crMHg3My8weDk0CiBbPGMwMTQ0
ZWJlPl0gX19icmVhZCsweDJhLzB4MzQKIFs8YzAxNzdjMzE+XSBleHQzX2dldF9pbm9kZV9sb2Mr
MHhlMS8weDE0MAogWzxjMDE3ODYxOT5dIGV4dDNfcmVzZXJ2ZV9pbm9kZV93cml0ZSsweDFkLzB4
OTQKIFs8YzAxNzg2YWE+XSBleHQzX21hcmtfaW5vZGVfZGlydHkrMHgxYS8weDM0CiBbPGMwMTc0
Zjc0Pl0gZXh0M19uZXdfaW5vZGUrMHg3MTQvMHg3ZjAKIFs8YzAxN2FjOTU+XSBleHQzX2NyZWF0
ZSsweDhkLzB4MTgwCiBbPGMwMTRmNDZhPl0gdmZzX2NyZWF0ZSsweGFlLzB4ZDQKZmlscF9vcGVu
KzB4M2IvMHg1YwogWzxjMDE0MjQ5Yj5dIHN5c19vcGVuKzB4MzcvMHg3MAogWzxjMDEwOGNiZj5d
IHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0IGZzL25hbWVpLmM6MTI0
OS4KCiBbPGMwMTRmODJkPl0gb3Blbl9uYW1laSsweDFhZC8weDRhOAogWzxjMDE0MjA3Mz5dIGZp
bHBfb3BlbisweDNiLzB4NWMKIFs8YzAxNDI0OWI+XSBzeXNfb3BlbisweDM3LzB4NzAKIFs8YzAx
MDhjYmY+XSBzeXNjYWxsX2NhbGwrMHg3LzB4YgoKc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1l
aS5jOjEyNDkuCgoxMDkzOjE3IHN0YXJ2ZWQgNiBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFu
IDYyMzMgdGlja3MgYWdvLgpzaCAgICAgICAgICAgIFIgQzVEOTVFMTAgOTI3NTgxODggIDExMTkg
ICAxMTE4ICAgICAgICAgICAgICAgICAgICAgKE5PVExCKQpDYWxsIFRyYWNlOgogWzxjMDExNjc3
YT5dIGlvX3NjaGVkdWxlKzB4ZS8weDE4CiBbPGMwMTQzYmVlPl0gX193YWl0X29uX2J1ZmZlcisw
eGEyLzB4YmMKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgK
IFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxNDRj
ODM+XSBfX2JyZWFkX3Nsb3crMHg3My8weDk0CiBbPGMwMTQ0ZWJlPl0gX19icmVhZCsweDJhLzB4
MzQKIFs8YzAxNzdjMzE+XSBleHQzX2dldF9pbm9kZV9sb2MrMHhlMS8weDE0MAogWzxjMDE3ODYx
OT5dIGV4dDNfcmVzZXJ2ZV9pbm9kZV93cml0ZSsweDFkLzB4OTQKIFs8YzAxNzg2YWE+XSBleHQz
X21hcmtfaW5vZGVfZGlydHkrMHgxYS8weDM0CiBbPGMwMTc0Zjc0Pl0gZXh0M19uZXdfaW5vZGUr
MHg3MTQvMHg3ZjAKIFs8YzAxN2FjOTU+XSBleHQzX2NyZWF0ZSsweDhkLzB4MTgwCiBbPGMwMTRm
NDZhPl0gdmZzX2NyZWF0ZSsweGFlLzB4ZDQKIFs8YzAxNGY4MmQ+XSBvcGVuX25hbWVpKzB4MWFk
LzB4NGE4CiBbPGMwMTQyMDczPl0gZmlscF9vcGVuKzB4M2IvMHg1YwogWzxjMDE0MjQ5Yj5dIHN5
c19vcGVuKzB4MzcvMHg3MAogWzxjMDEwOGNiZj5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1h
cGhvcmUgZG93bmVkIGF0IGZzL25hbWVpLmM6MTI0OS4KCjEwNjc6MTcgc3RhcnZlZCA2IHNlY3Mg
YnkgMTExOToyMyB3aG8gbGFzdCByYW4gNjI1OSB0aWNrcyBhZ28uCnNoICAgICAgICAgICAgUiBD
NUQ5NUUxMCA5Mjc1ODE4OCAgMTExOSAgIDExMTggICAgICAgICAgICAgICAgICAgICAoTk9UTEIp
CkNhbGwgVHJhY2U6CiBbPGMwMTE2NzdhPl0gaW9fc2NoZWR1bGUrMHhlLzB4MTgKIFs8YzAxNDNi
ZWU+XSBfX3dhaXRfb25fYnVmZmVyKzB4YTIvMHhiYwogWzxjMDExNmUzND5dIGF1dG9yZW1vdmVf
d2FrZV9mdW5jdGlvbisweDAvMHgzOAogWzxjMDExNmUzND5dIGF1dG9yZW1vdmVfd2FrZV9mdW5j
dGlvbisweDAvMHgzOAogWzxjMDE0NGM4Mz5dIF9fYnJlYWRfc2xvdysweDczLzB4OTQKIFs8YzAx
NDRlYmU+XSBfX2JyZWFkKzB4MmEvMHgzNAogWzxjMDE3N2MzMT5dIGV4dDNfZ2V0X2lub2RlX2xv
YysweGUxLzB4MTQwCiBbPGMwMTc4NjE5Pl0gZXh0M19yZXNlcnZlX2lub2RlX3dyaXRlKzB4MWQv
MHg5NAogWzxjMDE3ODZhYT5dIGV4dDNfbWFya19pbm9kZV9kaXJ0eSsweDFhLzB4MzQKIFs8YzAx
NzRmNzQ+XSBleHQzX25ld19pbm9kZSsweDcxNC8weDdmMAogWzxjMDE3YWM5NT5dIGV4dDNfY3Jl
YXRlKzB4OGQvMHgxODAKIFs8YzAxNGY0NmE+XSB2ZnNfY3JlYXRlKzB4YWUvMHhkNAogWzxjMDE0
ZjgyZD5dIG9wZW5fbmFtZWkrMHgxYWQvMHg0YTgKIFs8YzAxNDIwNzM+XSBmaWxwX29wZW4rMHgz
Yi8weDVjCiBbPGMwMTQyNDliPl0gc3lzX29wZW4rMHgzNy8weDcwCiBbPGMwMTA4Y2JmPl0gc3lz
Y2FsbF9jYWxsKzB4Ny8weGIKCnNlbWFwaG9yZSBkb3duZWQgYXQgZnMvbmFtZWkuYzoxMjQ5LgoK
MTE0MjoyMSBzdGFydmVkIDIgc2VjcyBieSAxMTMzOjIzIHdobyBsYXN0IHJhbiA2NzA4IHRpY2tz
IGFnby4Kc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgozOTY6MTUgc3RhcnZl
ZCAzIHNlY3MgYnkgMTExOToyMyB3aG8gbGFzdCByYW4gNjc3MyB0aWNrcyBhZ28uCnNlbWFwaG9y
ZSBkb3duZWQgYXQgZnMvbmFtZWkuYzoxMjQ5LgoKMTEzOToyMCBzdGFydmVkIDMgc2VjcyBieSAx
MTE5OjIzIHdobyBsYXN0IHJhbiA2NzczIHRpY2tzIGFnby4Kc2VtYXBob3JlIGRvd25lZCBhdCBm
cy9uYW1laS5jOjEyNDkuCgozMDE6LTIgc3RhcnZlZCA0IHNlY3MgYnkgMTEzNzoyMSB3aG8gbGFz
dCByYW4gNDY2NyB0aWNrcyBhZ28uCnNlbWFwaG9yZSBkb3duZWQgYXQgYXJjaC9pMzg2L2tlcm5l
bC9zeXNfaTM4Ni5jOjU4LgoKMTA3OToxNSBzdGFydmVkIDcgc2VjcyBieSAxMTE5OjIzIHdobyBs
YXN0IHJhbiA3MTgxIHRpY2tzIGFnby4Kc2ggICAgICAgICAgICBSIEM1RDk1RTEwIDkyNzU4MTg4
ICAxMTE5ICAgMTExOCAgICAgICAgICAgICAgICAgICAgIChOT1RMQikKQ2FsbCBUcmFjZToKIFs8
YzAxMTY3N2E+XSBpb19zY2hlZHVsZSsweGUvMHgxOAogWzxjMDE0M2JlZT5dIF9fd2FpdF9vbl9i
dWZmZXIrMHhhMi8weGJjCiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4
MC8weDM4CiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9uKzB4MC8weDM4CiBb
PGMwMTQ0YzgzPl0gX19icmVhZF9zbG93KzB4NzMvMHg5NAogWzxjMDE0NGViZT5dIF9fYnJlYWQr
MHgyYS8weDM0CiBbPGMwMTc3YzMxPl0gZXh0M19nZXRfaW5vZGVfbG9jKzB4ZTEvMHgxNDAKIFs8
YzAxNzg2MTk+XSBleHQzX3Jlc2VydmVfaW5vZGVfd3JpdGUrMHgxZC8weDk0CiBbPGMwMTc4NmFh
Pl0gZXh0M19tYXJrX2lub2RlX2RpcnR5KzB4MWEvMHgzNAogWzxjMDE3NGY3ND5dIGV4dDNfbmV3
X2lub2RlKzB4NzE0LzB4N2YwCiBbPGMwMTdhYzk1Pl0gZXh0M19jcmVhdGUrMHg4ZC8weDE4MAog
WzxjMDE0ZjQ2YT5dIHZmc19jcmVhdGUrMHhhZS8weGQ0CiBbPGMwMTRmODJkPl0gb3Blbl9uYW1l
aSsweDFhZC8weDRhOAogWzxjMDE0MjA3Mz5dIGZpbHBfb3BlbisweDNiLzB4NWMKIFs8YzAxNDI0
OWI+XSBzeXNfb3BlbisweDM3LzB4NzAKIFs8YzAxMDhjYmY+XSBzeXNjYWxsX2NhbGwrMHg3LzB4
YgoKc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgoxMTMxOjE2IHN0YXJ2ZWQg
NyBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDcyMjggdGlja3MgYWdvLgpzaCAgICAgICAg
ICAgIFIgQzVEOTVFMTAgOTI3NTgxODggIDExMTkgICAxMTE4ICAgICAgICAgICAgICAgICAgICAg
KE5PVExCKQpDYWxsIFRyYWNlOgogWzxjMDExNjc3YT5dIGlvX3NjaGVkdWxlKzB4ZS8weDE4CiBb
PGMwMTQzYmVlPl0gX193YWl0X29uX2J1ZmZlcisweGEyLzB4YmMKIFs8YzAxMTZlMzQ+XSBhdXRv
cmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxMTZlMzQ+XSBhdXRvcmVtb3ZlX3dh
a2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxNDRjODM+XSBfX2JyZWFkX3Nsb3crMHg3My8weDk0
CiBbPGMwMTQ0ZWJlPl0gX19icmVhZCsweDJhLzB4MzQKIFs8YzAxNzdjMzE+XSBleHQzX2dldF9p
bm9kZV9sb2MrMHhlMS8weDE0MAogWzxjMDE3ODYxOT5dIGV4dDNfcmVzZXJ2ZV9pbm9kZV93cml0
ZSsweDFkLzB4OTQKIFs8YzAxNzg2YWE+XSBleHQzX21hcmtfaW5vZGVfZGlydHkrMHgxYS8weDM0
CiBbPGMwMTc0Zjc0Pl0gZXh0M19uZXdfaW5vZGUrMHg3MTQvMHg3ZjAKIFs8YzAxN2FjOTU+XSBl
eHQzX2NyZWF0ZSsweDhkLzB4MTgwCiBbPGMwMTRmNDZhPl0gdmZzX2NyZWF0ZSsweGFlLzB4ZDQK
IFs8YzAxNGY4MmQ+XSBvcGVuX25hbWVpKzB4MWFkLzB4NGE4CiBbPGMwMTQyMDczPl0gZmlscF9v
cGVuKzB4M2IvMHg1YwogWzxjMDE0MjQ5Yj5dIHN5c19vcGVuKzB4MzcvMHg3MAogWzxjMDEwOGNi
Zj5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0IGZzL25hbWVpLmM6
MTI0OS4KCjExMzI6MTYgc3RhcnZlZCA3IHNlY3MgYnkgMTExOToyMyB3aG8gbGFzdCByYW4gNzI1
NCB0aWNrcyBhZ28uCnNoICAgICAgICAgICAgUiBDNUQ5NUUxMCA5Mjc1ODE4OCAgMTExOSAgIDEx
MTggICAgICAgICAgICAgICAgICAgICAoTk9UTEIpCkNhbGwgVHJhY2U6CiBbPGMwMTE2NzdhPl0g
aW9fc2NoZWR1bGUrMHhlLzB4MTgKIFs8YzAxNDNiZWU+XSBfX3dhaXRfb25fYnVmZmVyKzB4YTIv
MHhiYwogWzxjMDExNmUzND5dIGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgzOAogWzxj
MDExNmUzND5dIGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgzOAogWzxjMDE0NGM4Mz5d
IF9fYnJlYWRfc2xvdysweDczLzB4OTQKIFs8YzAxNDRlYmU+XSBfX2JyZWFkKzB4MmEvMHgzNAog
WzxjMDE3N2MzMT5dIGV4dDNfZ2V0X2lub2RlX2xvYysweGUxLzB4MTQwCiBbPGMwMTc4NjE5Pl0g
ZXh0M19yZXNlcnZlX2lub2RlX3dyaXRlKzB4MWQvMHg5NAogWzxjMDE3ODZhYT5dIGV4dDNfbWFy
a19pbm9kZV9kaXJ0eSsweDFhLzB4MzQKIFs8YzAxNzRmNzQ+XSBleHQzX25ld19pbm9kZSsweDcx
NC8weDdmMAogWzxjMDE3YWM5NT5dIGV4dDNfY3JlYXRlKzB4OGQvMHgxODAKIFs8YzAxNGY0NmE+
XSB2ZnNfY3JlYXRlKzB4YWUvMHhkNAogWzxjMDE0ZjgyZD5dIG9wZW5fbmFtZWkrMHgxYWQvMHg0
YTgKIFs8YzAxNDIwNzM+XSBmaWxwX29wZW4rMHgzYi8weDVjCiBbPGMwMTQyNDliPl0gc3lzX29w
ZW4rMHgzNy8weDcwCiBbPGMwMTA4Y2JmPl0gc3lzY2FsbF9jYWxsKzB4Ny8weGIKCnNlbWFwaG9y
ZSBkb3duZWQgYXQgZnMvbmFtZWkuYzoxMjQ5LgoKMTA5MzoxNiBzdGFydmVkIDcgc2VjcyBieSAx
MTE5OjIzIHdobyBsYXN0IHJhbiA3MjgxIHRpY2tzIGFnby4Kc2ggICAgICAgICAgICBSIEM1RDk1
RTEwIDkyNzU4MTg4ICAxMTE5ICAgMTExOCAgICAgICAgICAgICAgICAgICAgIChOT1RMQikKQ2Fs
bCBUcmFjZToKIFs8YzAxMTY3N2E+XSBpb19zY2hlZHVsZSsweGUvMHgxOAogWzxjMDE0M2JlZT5d
IF9fd2FpdF9vbl9idWZmZXIrMHhhMi8weGJjCiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtl
X2Z1bmN0aW9uKzB4MC8weDM4CiBbPGMwMTE2ZTM0Pl0gYXV0b3JlbW92ZV93YWtlX2Z1bmN0aW9u
KzB4MC8weDM4CiBbPGMwMTQ0YzgzPl0gX19icmVhZF9zbG93KzB4NzMvMHg5NAogWzxjMDE0NGVi
ZT5dIF9fYnJlYWQrMHgyYS8weDM0CiBbPGMwMTc3YzMxPl0gZXh0M19nZXRfaW5vZGVfbG9jKzB4
ZTEvMHgxNDAKIFs8YzAxNzg2MTk+XSBleHQzX3Jlc2VydmVfaW5vZGVfd3JpdGUrMHgxZC8weDk0
CiBbPGMwMTc4NmFhPl0gZXh0M19tYXJrX2lub2RlX2RpcnR5KzB4MWEvMHgzNAogWzxjMDE3NGY3
ND5dIGV4dDNfbmV3X2lub2RlKzB4NzE0LzB4N2YwCiBbPGMwMTdhYzk1Pl0gZXh0M19jcmVhdGUr
MHg4ZC8weDE4MAogWzxjMDE0ZjQ2YT5dIHZmc19jcmVhdGUrMHhhZS8weGQ0CiBbPGMwMTRmODJk
Pl0gb3Blbl9uYW1laSsweDFhZC8weDRhOAogWzxjMDE0MjA3Mz5dIGZpbHBfb3BlbisweDNiLzB4
NWMKIFs8YzAxNDI0OWI+XSBzeXNfb3BlbisweDM3LzB4NzAKIFs8YzAxMDhjYmY+XSBzeXNjYWxs
X2NhbGwrMHg3LzB4YgoKc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgoxMDY3
OjE2IHN0YXJ2ZWQgNyBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDczMDcgdGlja3MgYWdv
LgpzaCAgICAgICAgICAgIFIgQzVEOTVFMTAgOTI3NTgxODggIDExMTkgICAxMTE4ICAgICAgICAg
ICAgICAgICAgICAgKE5PVExCKQpDYWxsIFRyYWNlOgogWzxjMDExNjc3YT5dIGlvX3NjaGVkdWxl
KzB4ZS8weDE4CiBbPGMwMTQzYmVlPl0gX193YWl0X29uX2J1ZmZlcisweGEyLzB4YmMKIFs8YzAx
MTZlMzQ+XSBhdXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxMTZlMzQ+XSBh
dXRvcmVtb3ZlX3dha2VfZnVuY3Rpb24rMHgwLzB4MzgKIFs8YzAxNDRjODM+XSBfX2JyZWFkX3Ns
b3crMHg3My8weDk0CiBbPGMwMTQ0ZWJlPl0gX19icmVhZCsweDJhLzB4MzQKIFs8YzAxNzdjMzE+
XSBleHQzX2dldF9pbm9kZV9sb2MrMHhlMS8weDE0MAogWzxjMDE3ODYxOT5dIGV4dDNfcmVzZXJ2
ZV9pbm9kZV93cml0ZSsweDFkLzB4OTQKIFs8YzAxNzg2YWE+XSBleHQzX21hcmtfaW5vZGVfZGly
dHkrMHgxYS8weDM0CiBbPGMwMTc0Zjc0Pl0gZXh0M19uZXdfaW5vZGUrMHg3MTQvMHg3ZjAKIFs8
YzAxN2FjOTU+XSBleHQzX2NyZWF0ZSsweDhkLzB4MTgwCiBbPGMwMTRmNDZhPl0gdmZzX2NyZWF0
ZSsweGFlLzB4ZDQKIFs8YzAxNGY4MmQ+XSBvcGVuX25hbWVpKzB4MWFkLzB4NGE4CiBbPGMwMTQy
MDczPl0gZmlscF9vcGVuKzB4M2IvMHg1YwogWzxjMDE0MjQ5Yj5dIHN5c19vcGVuKzB4MzcvMHg3
MAogWzxjMDEwOGNiZj5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0
IGZzL25hbWVpLmM6MTI0OS4KCjExNDI6MjAgc3RhcnZlZCAzIHNlY3MgYnkgMTEzMzoyMyB3aG8g
bGFzdCByYW4gNzcxNiB0aWNrcyBhZ28uCnNlbWFwaG9yZSBkb3duZWQgYXQgZnMvbmFtZWkuYzox
MjQ5LgoKMzk2OjE1IHN0YXJ2ZWQgNCBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDI4IHRp
Y2tzIGFnby4Kc2VtYXBob3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgoxMTM5OjE5IHN0
YXJ2ZWQgNCBzZWNzIGJ5IDExMTk6MjMgd2hvIGxhc3QgcmFuIDQyIHRpY2tzIGFnby4Kc2VtYXBo
b3JlIGRvd25lZCBhdCBmcy9uYW1laS5jOjEyNDkuCgozMDE6LTIgc3RhcnZlZCA1IHNlY3MgYnkg
MTEzNzoyMSB3aG8gbGFzdCByYW4gNTY2NyB0aWNrcyBhZ28uCnNoICAgICAgICAgICAgUiAwMDAw
MDA3MyAxNTQ2NDAwICAxMTM3ICAgIDM5NiAgICAgICAgICAgICAgICAxMDkwIChOT1RMQikKQ2Fs
bCBUcmFjZToKIFs8YzAxMDhjMDk+XSBuZWVkX3Jlc2NoZWQrMHgyNy8weDMyCiBbPGMwMTMwMDdi
Pl0gX19zZXRfcGFnZV9kaXJ0eV9idWZmZXJzKzB4ZDMvMHgxMTQKIFs8YzAxMzgzMTQ+XSBkb19t
bWFwX3Bnb2ZmKzB4MTRjLzB4NjA4CiBbPGMwMTM5NzM1Pl0gbXByb3RlY3RfZml4dXArMHgxMTkv
MHgxMzQKIFs8YzAxMGUwMTE+XSBvbGRfbW1hcCsweDExNS8weDE2NAogWzxjMDEwOGNiZj5dIHN5
c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0IGFyY2gvaTM4Ni9rZXJuZWwv
c3lzX2kzODYuYzo1OC4KCjMwMTotMiBzdGFydmVkIDYgc2VjcyBieSAxMTM3OjIxIHdobyBsYXN0
IHJhbiA2NjcyIHRpY2tzIGFnby4Kc2ggICAgICAgICAgICBSIDAwMDAwMDczIDE1NDY0MDAgIDEx
MzcgICAgMzk2ICAgICAgICAgICAgICAgIDEwOTAgKE5PVExCKQpDYWxsIFRyYWNlOgogWzxjMDEw
OGMwOT5dIG5lZWRfcmVzY2hlZCsweDI3LzB4MzIKIFs8YzAxMzAwN2I+XSBfX3NldF9wYWdlX2Rp
cnR5X2J1ZmZlcnMrMHhkMy8weDExNAogWzxjMDEzODMxND5dIGRvX21tYXBfcGdvZmYrMHgxNGMv
MHg2MDgKIFs8YzAxMzk3MzU+XSBtcHJvdGVjdF9maXh1cCsweDExOS8weDEzNAogWzxjMDEwZTAx
MT5dIG9sZF9tbWFwKzB4MTE1LzB4MTY0CiBbPGMwMTA4Y2JmPl0gc3lzY2FsbF9jYWxsKzB4Ny8w
eGIKCnNlbWFwaG9yZSBkb3duZWQgYXQgYXJjaC9pMzg2L2tlcm5lbC9zeXNfaTM4Ni5jOjU4LgoK
MzAxOi0yIHN0YXJ2ZWQgNyBzZWNzIGJ5IDExMzc6MjEgd2hvIGxhc3QgcmFuIDc2NzcgdGlja3Mg
YWdvLgpzaCAgICAgICAgICAgIFIgMDAwMDAwNzMgMTU0NjQwMCAgMTEzNyAgICAzOTYgICAgICAg
ICAgICAgICAgMTA5MCAoTk9UTEIpCkNhbGwgVHJhY2U6CiBbPGMwMTA4YzA5Pl0gbmVlZF9yZXNj
aGVkKzB4MjcvMHgzMgogWzxjMDEzMDA3Yj5dIF9fc2V0X3BhZ2VfZGlydHlfYnVmZmVycysweGQz
LzB4MTE0CiBbPGMwMTM4MzE0Pl0gZG9fbW1hcF9wZ29mZisweDE0Yy8weDYwOAogWzxjMDEzOTcz
NT5dIG1wcm90ZWN0X2ZpeHVwKzB4MTE5LzB4MTM0CiBbPGMwMTBlMDExPl0gb2xkX21tYXArMHgx
MTUvMHgxNjQKIFs8YzAxMDhjYmY+XSBzeXNjYWxsX2NhbGwrMHg3LzB4YgoKc2VtYXBob3JlIGRv
d25lZCBhdCBhcmNoL2kzODYva2VybmVsL3N5c19pMzg2LmM6NTguCgozMDE6LTIgc3RhcnZlZCA4
IHNlY3MgYnkgMTEzNzoyMSB3aG8gbGFzdCByYW4gODY4MiB0aWNrcyBhZ28uCnNoICAgICAgICAg
ICAgUiAwMDAwMDA3MyAxNTQ2NDAwICAxMTM3ICAgIDM5NiAgICAgICAgICAgICAgICAxMDkwIChO
T1RMQikKQ2FsbCBUcmFjZToKIFs8YzAxMDhjMDk+XSBuZWVkX3Jlc2NoZWQrMHgyNy8weDMyCiBb
PGMwMTMwMDdiPl0gX19zZXRfcGFnZV9kaXJ0eV9idWZmZXJzKzB4ZDMvMHgxMTQKIFs8YzAxMzgz
MTQ+XSBkb19tbWFwX3Bnb2ZmKzB4MTRjLzB4NjA4CiBbPGMwMTM5NzM1Pl0gbXByb3RlY3RfZml4
dXArMHgxMTkvMHgxMzQKIFs8YzAxMGUwMTE+XSBvbGRfbW1hcCsweDExNS8weDE2NAogWzxjMDEw
OGNiZj5dIHN5c2NhbGxfY2FsbCsweDcvMHhiCgpzZW1hcGhvcmUgZG93bmVkIGF0IGFyY2gvaTM4
Ni9rZXJuZWwvc3lzX2kzODYuYzo1OC4KCg==
--=_courier-28622-1051441518-0001-2
Content-Type: application/octet-stream; name="diag.diff"; x-mac-type=42494E41; x-mac-creator=5843454C
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="diag.diff"

LS0tIC4vbGliL3J3c2VtLmMub3JnCU1vbiBGZWIgMTAgMTk6Mzc6NTcgMjAwMworKysgLi9saWIv
cndzZW0uYwlTdW4gQXByIDI3IDA2OjU2OjQxIDIwMDMKQEAgLTE1LDYgKzE1LDggQEAKICNkZWZp
bmUgUldTRU1fV0FJVElOR19GT1JfV1JJVEUJMHgwMDAwMDAwMgogfTsKIAorZXh0ZXJuIHZvaWQg
c2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKKwogI2lmIFJXU0VNX0RFQlVHCiAj
dW5kZWYgcndzZW10cmFjZQogdm9pZCByd3NlbXRyYWNlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSwgY29uc3QgY2hhciAqc3RyKQpAQCAtMTI2LDYgKzEyOCw3IEBACiB7CiAJc3RydWN0IHRhc2tf
c3RydWN0ICp0c2sgPSBjdXJyZW50OwogCXNpZ25lZCBsb25nIGNvdW50OworCWludCB0aWNrcyA9
IDA7CiAKIAlzZXRfdGFza19zdGF0ZSh0c2ssVEFTS19VTklOVEVSUlVQVElCTEUpOwogCkBAIC0x
NTAsNyArMTUzLDE3IEBACiAJZm9yICg7OykgewogCQlpZiAoIXdhaXRlci0+ZmxhZ3MpCiAJCQli
cmVhazsKLQkJc2NoZWR1bGUoKTsKKwkJaWYgKCFzY2hlZHVsZV90aW1lb3V0KDEwMDApICYmIHNl
bS0+b3duZXIpIHsKKwkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrID0gKHN0cnVjdCB0YXNrX3N0
cnVjdCAqKSBzZW0tPm93bmVyOworCQkJdGlja3MgKz0gMTAwMDsKKwkJCXByaW50ayhLRVJOX0RF
QlVHICIlZDolZCBzdGFydmVkICVkIHNlY3MgYnkgJWQ6JWQgd2hvIGxhc3QgcmFuICVsdSB0aWNr
cyBhZ28uXG4iLAorCQkJCWN1cnJlbnQtPnBpZCwgY3VycmVudC0+cHJpbyAtIDEwMCwgdGlja3Mv
SFosIHRzay0+cGlkLAorCQkJCXRzay0+cHJpbyAtIDEwMCwgamlmZmllcyAtIHRzay0+bGFzdF9y
dW4pOworCQkJaWYgKHRpY2tzID49IDUwMDApCisJCQkJc2hvd190YXNrKHNlbS0+b3duZXIpOwor
CQkJcHJpbnRrKEtFUk5fREVCVUcgInNlbWFwaG9yZSBkb3duZWQgYXQgJXM6JWQuXG5cbiIsCisJ
CQkJCXNlbS0+ZmlsZSwgc2VtLT5saW5lKTsKKwkJfQogCQlzZXRfdGFza19zdGF0ZSh0c2ssIFRB
U0tfVU5JTlRFUlJVUFRJQkxFKTsKIAl9CiAKLS0tIC4vYXJjaC9pMzg2L2tlcm5lbC9zZW1hcGhv
cmUuYy5vcmcJTW9uIEZlYiAxMCAxOTozODoyOCAyMDAzCisrKyAuL2FyY2gvaTM4Ni9rZXJuZWwv
c2VtYXBob3JlLmMJU3VuIEFwciAyNyAwNjoyOToyNyAyMDAzCkBAIC01OCw2ICs1OCw3IEBACiAJ
c3RydWN0IHRhc2tfc3RydWN0ICp0c2sgPSBjdXJyZW50OwogCURFQ0xBUkVfV0FJVFFVRVVFKHdh
aXQsIHRzayk7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgdGlja3MgPSAwOwogCiAJdHNr
LT5zdGF0ZSA9IFRBU0tfVU5JTlRFUlJVUFRJQkxFOwogCXNwaW5fbG9ja19pcnFzYXZlKCZzZW0t
PndhaXQubG9jaywgZmxhZ3MpOwpAQCAtNzksNyArODAsMTcgQEAKIAkJc2VtLT5zbGVlcGVycyA9
IDE7CS8qIHVzIC0gc2VlIC0xIGFib3ZlICovCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNl
bS0+d2FpdC5sb2NrLCBmbGFncyk7CiAKLQkJc2NoZWR1bGUoKTsKKwkJaWYgKCFzY2hlZHVsZV90
aW1lb3V0KDEwMDApICYmIHNlbS0+b3duZXIpIHsKKwkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr
ID0gKHN0cnVjdCB0YXNrX3N0cnVjdCAqKSBzZW0tPm93bmVyOworCQkJdGlja3MgKz0gMTAwMDsK
KwkJCXByaW50ayhLRVJOX0RFQlVHICIlZDolZCBzdGFydmVkICVkIHNlY3MgYnkgJWQ6JWQgd2hv
IGxhc3QgcmFuICVsdSB0aWNrcyBhZ28uXG4iLAorCQkJCWN1cnJlbnQtPnBpZCwgY3VycmVudC0+
cHJpbyAtIDEwMCwgdGlja3MvSFosIHRzay0+cGlkLAorCQkJCXRzay0+cHJpbyAtIDEwMCwgamlm
ZmllcyAtIHRzay0+bGFzdF9ydW4pOworCQkJaWYgKHRpY2tzID49IDUwMDApCisJCQkJc2hvd190
YXNrKHNlbS0+b3duZXIpOworCQkJcHJpbnRrKEtFUk5fREVCVUcgInNlbWFwaG9yZSBkb3duZWQg
YXQgJXM6JWQuXG5cbiIsCisJCQkJCXNlbS0+ZmlsZSwgc2VtLT5saW5lKTsKKwkJfQogCiAJCXNw
aW5fbG9ja19pcnFzYXZlKCZzZW0tPndhaXQubG9jaywgZmxhZ3MpOwogCQl0c2stPnN0YXRlID0g
VEFTS19VTklOVEVSUlVQVElCTEU7CkBAIC05Niw2ICsxMDcsNyBAQAogCXN0cnVjdCB0YXNrX3N0
cnVjdCAqdHNrID0gY3VycmVudDsKIAlERUNMQVJFX1dBSVRRVUVVRSh3YWl0LCB0c2spOwogCXVu
c2lnbmVkIGxvbmcgZmxhZ3M7CisJaW50IHRpY2tzID0gMDsKIAogCXRzay0+c3RhdGUgPSBUQVNL
X0lOVEVSUlVQVElCTEU7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNlbS0+d2FpdC5sb2NrLCBmbGFn
cyk7CkBAIC0xMzIsNyArMTQ0LDE3IEBACiAJCXNlbS0+c2xlZXBlcnMgPSAxOwkvKiB1cyAtIHNl
ZSAtMSBhYm92ZSAqLwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzZW0tPndhaXQubG9jaywg
ZmxhZ3MpOwogCi0JCXNjaGVkdWxlKCk7CisJCWlmICghc2NoZWR1bGVfdGltZW91dCgxMDAwKSAm
JiBzZW0tPm93bmVyKSB7CisJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IChzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKikgc2VtLT5vd25lcjsKKwkJCXRpY2tzICs9IDEwMDA7CisJCQlwcmludGsoS0VS
Tl9ERUJVRyAiJWQ6JWQgc3RhcnZlZCAlZCBzZWNzIGJ5ICVkOiVkIHdobyBsYXN0IHJhbiAlbHUg
dGlja3MgYWdvLlxuIiwKKwkJCQljdXJyZW50LT5waWQsIGN1cnJlbnQtPnByaW8gLSAxMDAsIHRp
Y2tzL0haLCB0c2stPnBpZCwKKwkJCQl0c2stPnByaW8gLSAxMDAsIGppZmZpZXMgLSB0c2stPmxh
c3RfcnVuKTsKKwkJCWlmICh0aWNrcyA+PSA1MDAwKQorCQkJCXNob3dfdGFzayhzZW0tPm93bmVy
KTsKKwkJCXByaW50ayhLRVJOX0RFQlVHICJzZW1hcGhvcmUgZG93bmVkIGF0ICVzOiVkLlxuXG4i
LAorCQkJCQlzZW0tPmZpbGUsIHNlbS0+bGluZSk7CisJCX0KIAogCQlzcGluX2xvY2tfaXJxc2F2
ZSgmc2VtLT53YWl0LmxvY2ssIGZsYWdzKTsKIAkJdHNrLT5zdGF0ZSA9IFRBU0tfSU5URVJSVVBU
SUJMRTsKLS0tIC4vaW5jbHVkZS9saW51eC9mcy5oLm9yZwlGcmkgQXByIDI1IDExOjM1OjI1IDIw
MDMKKysrIC4vaW5jbHVkZS9saW51eC9mcy5oCUZyaSBBcHIgMjUgMTI6Mjk6MDMgMjAwMwpAQCAt
MTksNiArMTksNyBAQAogI2luY2x1ZGUgPGxpbnV4L2NhY2hlLmg+CiAjaW5jbHVkZSA8bGludXgv
cmFkaXgtdHJlZS5oPgogI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKyNpbmNsdWRlIDxsaW51
eC9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KIAogc3RydWN0IGlvdmVjOwotLS0g
Li9pbmNsdWRlL2xpbnV4L3J3c2VtLmgub3JnCU1vbiBGZWIgMTAgMTk6Mzg6MTcgMjAwMworKysg
Li9pbmNsdWRlL2xpbnV4L3J3c2VtLmgJRnJpIEFwciAyNSAwNzo1NToxNSAyMDAzCkBAIC0zOCwx
OCArMzgsMjYgQEAKIC8qCiAgKiBsb2NrIGZvciByZWFkaW5nCiAgKi8KLXN0YXRpYyBpbmxpbmUg
dm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQorc3RhdGljIGlubGluZSB2
b2lkIF9kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQogewogCW1pZ2h0X3NsZWVw
KCk7CiAJcndzZW10cmFjZShzZW0sIkVudGVyaW5nIGRvd25fcmVhZCIpOwogCV9fZG93bl9yZWFk
KHNlbSk7CiAJcndzZW10cmFjZShzZW0sIkxlYXZpbmcgZG93bl9yZWFkIik7CiB9CisjZGVmaW5l
IGRvd25fcmVhZChzZW0pICAgICBcCitkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisJX2Rv
d25fcmVhZCgoc2VtKSk7ICAgICAgXAorCWN1cnJlbnQtPnNlbV9jb3VudCsrOyAgIFwKKwkoc2Vt
KS0+b3duZXIgPSBjdXJyZW50OyBcCisJKHNlbSktPmZpbGUgPSBfX0ZJTEVfXzsgXAorCShzZW0p
LT5saW5lID0gX19MSU5FX187IFwKK30gd2hpbGUoMCk7CiAKIC8qCiAgKiB0cnlsb2NrIGZvciBy
ZWFkaW5nIC0tIHJldHVybnMgMSBpZiBzdWNjZXNzZnVsLCAwIGlmIGNvbnRlbnRpb24KICAqLwot
c3RhdGljIGlubGluZSBpbnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAq
c2VtKQorc3RhdGljIGlubGluZSBpbnQgX2Rvd25fcmVhZF90cnlsb2NrKHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkKIHsKIAlpbnQgcmV0OwogCXJ3c2VtdHJhY2Uoc2VtLCJFbnRlcmluZyBkb3du
X3JlYWRfdHJ5bG9jayIpOwpAQCAtNTcsMjIgKzY1LDQxIEBACiAJcndzZW10cmFjZShzZW0sIkxl
YXZpbmcgZG93bl9yZWFkX3RyeWxvY2siKTsKIAlyZXR1cm4gcmV0OwogfQorI2RlZmluZSBkb3du
X3JlYWRfdHJ5bG9jayhzZW0pICAgICAgICAgIFwKKyh7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisJaW50IF9yZXQgPV9kb3duX3JlYWRfdHJ5bG9jaygoc2VtKSk7IFwK
KwlpZiAoX3JldCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQljdXJyZW50LT5zZW1f
Y291bnQrKzsgICAgICAgICAgICAgXAorCQkoc2VtKS0+b3duZXIgPSBjdXJyZW50OyAgICAgICAg
ICAgXAorCQkoc2VtKS0+ZmlsZSA9IF9fRklMRV9fOyAgICAgICAgICAgXAorCQkoc2VtKS0+bGlu
ZSA9IF9fTElORV9fOyAgICAgICAgICAgXAorCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisJX3JldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30pCiAK
IC8qCiAgKiBsb2NrIGZvciB3cml0aW5nCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dy
aXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfZG93bl93
cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCiB7CiAJbWlnaHRfc2xlZXAoKTsKIAlyd3Nl
bXRyYWNlKHNlbSwiRW50ZXJpbmcgZG93bl93cml0ZSIpOwogCV9fZG93bl93cml0ZShzZW0pOwog
CXJ3c2VtdHJhY2Uoc2VtLCJMZWF2aW5nIGRvd25fd3JpdGUiKTsKIH0KKyNkZWZpbmUgZG93bl93
cml0ZShzZW0pICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKwlfZG93bl93cml0
ZSgoc2VtKSk7ICAgICBcCisJY3VycmVudC0+c2VtX2NvdW50Kys7ICAgXAorCShzZW0pLT5vd25l
ciA9IGN1cnJlbnQ7IFwKKwkoc2VtKS0+ZmlsZSA9IF9fRklMRV9fOyBcCisJKHNlbSktPmxpbmUg
PSBfX0xJTkVfXzsgXAorfSB3aGlsZSAoMCk7CiAKIC8qCiAgKiB0cnlsb2NrIGZvciB3cml0aW5n
IC0tIHJldHVybnMgMSBpZiBzdWNjZXNzZnVsLCAwIGlmIGNvbnRlbnRpb24KICAqLwotc3RhdGlj
IGlubGluZSBpbnQgZG93bl93cml0ZV90cnlsb2NrKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkK
K3N0YXRpYyBpbmxpbmUgaW50IF9kb3duX3dyaXRlX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9y
ZSAqc2VtKQogewogCWludCByZXQ7CiAJcndzZW10cmFjZShzZW0sIkVudGVyaW5nIGRvd25fd3Jp
dGVfdHJ5bG9jayIpOwpAQCAtODAsMjYgKzEwNyw0OSBAQAogCXJ3c2VtdHJhY2Uoc2VtLCJMZWF2
aW5nIGRvd25fd3JpdGVfdHJ5bG9jayIpOwogCXJldHVybiByZXQ7CiB9CisjZGVmaW5lIGRvd25f
d3JpdGVfdHJ5bG9jayhzZW0pICAgICAgICAgICBcCisoeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisJaW50IF9yZXQgPSBfZG93bl93cml0ZV90cnlsb2NrKChzZW0p
KTsgXAorCWlmIChfcmV0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJY3VycmVu
dC0+c2VtX2NvdW50Kys7ICAgICAgICAgICAgICAgXAorCQkoc2VtKS0+b3duZXIgPSBjdXJyZW50
OyAgICAgICAgICAgICBcCisJCShzZW0pLT5maWxlID0gX19GSUxFX187ICAgICAgICAgICAgIFwK
KwkJKHNlbSktPmxpbmUgPSBfX0xJTkVfXzsgICAgICAgICAgICAgXAorCX0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlfcmV0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCit9KQogCiAvKgogICogcmVsZWFzZSBhIHJlYWQgbG9jawogICovCi1zdGF0
aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCitzdGF0aWMg
aW5saW5lIHZvaWQgX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQogewogCXJ3c2Vt
dHJhY2Uoc2VtLCJFbnRlcmluZyB1cF9yZWFkIik7CiAJX191cF9yZWFkKHNlbSk7CiAJcndzZW10
cmFjZShzZW0sIkxlYXZpbmcgdXBfcmVhZCIpOwogfQorI2RlZmluZSB1cF9yZWFkKHNlbSkgICAg
ICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorCWN1cnJlbnQtPnNlbV9jb3VudC0t
OyAgIFwKKwkoc2VtKS0+b3duZXIgPSBOVUxMOyAgICBcCisJX3VwX3JlYWQoKHNlbSkpOyAgICAg
ICAgXAorfSB3aGlsZSgwKTsKIAogLyoKICAqIHJlbGVhc2UgYSB3cml0ZSBsb2NrCiAgKi8KLXN0
YXRpYyBpbmxpbmUgdm9pZCB1cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCitzdGF0
aWMgaW5saW5lIHZvaWQgX3VwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKIHsKIAly
d3NlbXRyYWNlKHNlbSwiRW50ZXJpbmcgdXBfd3JpdGUiKTsKIAlfX3VwX3dyaXRlKHNlbSk7CiAJ
cndzZW10cmFjZShzZW0sIkxlYXZpbmcgdXBfd3JpdGUiKTsKIH0KKyNkZWZpbmUgdXBfd3JpdGUo
c2VtKSAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwljdXJyZW50
LT5zZW1fY291bnQtLTsgICAgICBcCisJKHNlbSktPm93bmVyID0gTlVMTDsgICAgICAgXAorCV91
cF93cml0ZSgoc2VtKSk7ICAgICAgICAgIFwKK30gd2hpbGUoMCk7CiAKIC8qCiAgKiBkb3duZ3Jh
ZGUgd3JpdGUgbG9jayB0byByZWFkIGxvY2sKLS0tIC4vaW5jbHVkZS9saW51eC9zY2hlZC5oLm9y
ZwlGcmkgQXByIDI1IDA2OjI0OjMzIDIwMDMKKysrIC4vaW5jbHVkZS9saW51eC9zY2hlZC5oCUZy
aSBBcHIgMjUgMDc6NTk6NTAgMjAwMwpAQCAtMTY3LDYgKzE2Nyw3IEBACiAjZGVmaW5lCU1BWF9T
Q0hFRFVMRV9USU1FT1VUCUxPTkdfTUFYCiBleHRlcm4gc2lnbmVkIGxvbmcgRkFTVENBTEwoc2No
ZWR1bGVfdGltZW91dChzaWduZWQgbG9uZyB0aW1lb3V0KSk7CiBhc21saW5rYWdlIHZvaWQgc2No
ZWR1bGUodm9pZCk7CitleHRlcm4gdm9pZCBzaG93X3Rhc2sodGFza190ICpwKTsKIAogc3RydWN0
IG5hbWVzcGFjZTsKIApAQCAtMzIyLDYgKzMyMyw3IEBACiAJdW5zaWduZWQgbG9uZyBwdHJhY2U7
CiAKIAlpbnQgbG9ja19kZXB0aDsJCS8qIExvY2sgZGVwdGggKi8KKwlpbnQgc2VtX2NvdW50OwkJ
LyogTlIgc2VtYXBob3JlcyBoZWxkICovCiAKIAlpbnQgcHJpbywgc3RhdGljX3ByaW87CiAJc3Ry
dWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKLS0tIC4vaW5jbHVkZS9hc20taTM4Ni9yd3NlbS5oLm9y
ZwlGcmkgQXByIDI1IDA2OjIyOjE5IDIwMDMKKysrIC4vaW5jbHVkZS9hc20taTM4Ni9yd3NlbS5o
CUZyaSBBcHIgMjUgMDc6NTY6NTcgMjAwMwpAQCAtNjQsNiArNjQsOSBAQAogI2lmIFJXU0VNX0RF
QlVHCiAJaW50CQkJZGVidWc7CiAjZW5kaWYKKwl2b2lkCQkJKm93bmVyOworCWNoYXIJCQkqZmls
ZTsKKwlpbnQJCQlsaW5lOwogfTsKIAogLyoKLS0tIC4vaW5jbHVkZS9hc20taTM4Ni9zZW1hcGhv
cmUuaC5vcmcJRnJpIEFwciAyNSAxMDo1MDo0NiAyMDAzCisrKyAuL2luY2x1ZGUvYXNtLWkzODYv
c2VtYXBob3JlLmgJRnJpIEFwciAyNSAxMTo1NzoyOCAyMDAzCkBAIC00OCw2ICs0OCw5IEBACiAj
aWZkZWYgV0FJVFFVRVVFX0RFQlVHCiAJbG9uZyBfX21hZ2ljOwogI2VuZGlmCisJdm9pZAkJCSpv
d25lcjsKKwljaGFyCQkJKmZpbGU7CisJaW50CQkJbGluZTsKIH07CiAKICNpZmRlZiBXQUlUUVVF
VUVfREVCVUcKQEAgLTExMSw3ICsxMTQsNyBAQAogICogIl9fZG93bl9mYWlsZWQiIGlzIGEgc3Bl
Y2lhbCBhc20gaGFuZGxlciB0aGF0IGNhbGxzIHRoZSBDCiAgKiByb3V0aW5lIHRoYXQgYWN0dWFs
bHkgd2FpdHMuIFNlZSBhcmNoL2kzODYva2VybmVsL3NlbWFwaG9yZS5jCiAgKi8KLXN0YXRpYyBp
bmxpbmUgdm9pZCBkb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCitzdGF0aWMgaW5saW5lIHZv
aWQgX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKIHsKICNpZmRlZiBXQUlUUVVFVUVfREVC
VUcKIAlDSEVDS19NQUdJQyhzZW0tPl9fbWFnaWMpOwpAQCAtMTMwLDEyICsxMzMsMjAgQEAKIAkJ
OiJjIiAoc2VtKQogCQk6Im1lbW9yeSIpOwogfQorI2RlZmluZSBkb3duKHNlbSkgICAgICAgICAg
XAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorCV9kb3duKChzZW0pKTsgICAgICAgICAg
IFwKKwljdXJyZW50LT5zZW1fY291bnQrKzsgICBcCisJKHNlbSktPm93bmVyID0gY3VycmVudDsg
XAorCShzZW0pLT5maWxlID0gX19GSUxFX187IFwKKwkoc2VtKS0+bGluZSA9IF9fTElORV9fOyBc
Cit9IHdoaWxlICgwKTsKIAogLyoKICAqIEludGVycnVwdGlibGUgdHJ5IHRvIGFjcXVpcmUgYSBz
ZW1hcGhvcmUuICBJZiB3ZSBvYnRhaW5lZAogICogaXQsIHJldHVybiB6ZXJvLiAgSWYgd2Ugd2Vy
ZSBpbnRlcnJ1cHRlZCwgcmV0dXJucyAtRUlOVFIKICAqLwotc3RhdGljIGlubGluZSBpbnQgZG93
bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCitzdGF0aWMgaW5saW5lIGlu
dCBfZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCiB7CiAJaW50IHJl
c3VsdDsKIApAQCAtMTU4LDEyICsxNjksMjMgQEAKIAkJOiJtZW1vcnkiKTsKIAlyZXR1cm4gcmVz
dWx0OwogfQorI2RlZmluZSBkb3duX2ludGVycnVwdGlibGUoc2VtKSAgICAgICAgICAgXAorKHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWludCBfcmV0ID0gX2Rv
d25faW50ZXJydXB0aWJsZSgoc2VtKSk7IFwKKwlpZiAoIV9yZXQpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisJCShzZW0pLT5vd25lciA9IGN1cnJlbnQ7ICAgICAgICAgICAgIFwKKwkJ
Y3VycmVudC0+c2VtX2NvdW50Kys7ICAgICAgICAgICAgICAgXAorCQkoc2VtKS0+ZmlsZSA9IF9f
RklMRV9fOyAgICAgICAgICAgICBcCisJCShzZW0pLT5saW5lID0gX19MSU5FX187ICAgICAgICAg
ICAgIFwKKwl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJX3JldDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSkKIAogLyoKICAqIE5vbi1ibG9j
a2luZ2x5IGF0dGVtcHQgdG8gZG93bigpIGEgc2VtYXBob3JlLgogICogUmV0dXJucyB6ZXJvIGlm
IHdlIGFjcXVpcmVkIGl0CiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGRvd25fdHJ5bG9jayhzdHJ1
Y3Qgc2VtYXBob3JlICogc2VtKQorc3RhdGljIGlubGluZSBpbnQgX2Rvd25fdHJ5bG9jayhzdHJ1
Y3Qgc2VtYXBob3JlICogc2VtKQogewogCWludCByZXN1bHQ7CiAKQEAgLTE4Niw2ICsyMDgsMTcg
QEAKIAkJOiJtZW1vcnkiKTsKIAlyZXR1cm4gcmVzdWx0OwogfQorI2RlZmluZSBkb3duX3RyeWxv
Y2soc2VtKSAgICAgICAgICAgXAorKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorCWludCBfcmV0ID0gX2Rvd25fdHJ5bG9jaygoc2VtKSk7IFwKKwlpZiAoIV9yZXQpIHsgICAg
ICAgICAgICAgICAgICAgICBcCisJCShzZW0pLT5vd25lciA9IGN1cnJlbnQ7ICAgICAgIFwKKwkJ
Y3VycmVudC0+c2VtX2NvdW50Kys7ICAgICAgICAgXAorCQkoc2VtKS0+ZmlsZSA9IF9fRklMRV9f
OyAgICAgICBcCisJCShzZW0pLT5saW5lID0gX19MSU5FX187ICAgICAgIFwKKwl9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisJX3JldDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorfSkKIAogLyoKICAqIE5vdGUhIFRoaXMgaXMgc3VidGxlLiBXZSBqdW1wIHRvIHdha2Ug
cGVvcGxlIHVwIG9ubHkgaWYKQEAgLTE5Myw3ICsyMjYsNyBAQAogICogVGhlIGRlZmF1bHQgY2Fz
ZSAobm8gY29udGVudGlvbikgd2lsbCByZXN1bHQgaW4gTk8KICAqIGp1bXBzIGZvciBib3RoIGRv
d24oKSBhbmQgdXAoKS4KICAqLwotc3RhdGljIGlubGluZSB2b2lkIHVwKHN0cnVjdCBzZW1hcGhv
cmUgKiBzZW0pCitzdGF0aWMgaW5saW5lIHZvaWQgX3VwKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
CiB7CiAjaWZkZWYgV0FJVFFVRVVFX0RFQlVHCiAJQ0hFQ0tfTUFHSUMoc2VtLT5fX21hZ2ljKTsK
QEAgLTIxMiw2ICsyNDUsMTIgQEAKIAkJOiJjIiAoc2VtKQogCQk6Im1lbW9yeSIpOwogfQorI2Rl
ZmluZSB1cChzZW0pICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICBcCisJY3Vy
cmVudC0+c2VtX2NvdW50LS07IFwKKwkoc2VtKS0+b3duZXIgPSBOVUxMOyAgXAorCV91cCgoc2Vt
KSk7ICAgICAgICAgICBcCit9IHdoaWxlICgwKTsKIAogI2VuZGlmCiAjZW5kaWYKLS0tIC4vZnMv
ZmF0L21pc2MuYy5vcmcJRnJpIEFwciAyNSAxMjoyNDoxOSAyMDAzCisrKyAuL2ZzL2ZhdC9taXNj
LmMJRnJpIEFwciAyNSAxMjoyNDozMyAyMDAzCkBAIC02LDYgKzYsNyBAQAogICoJCSBhbmQgZGF0
ZV9kb3MydW5peCBmb3IgZGF0ZT09MCBieSBJZ29yIFpoYmFub3YoYnNnQHVuaXlhci5hYy5ydSkK
ICAqLwogCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9mcy5oPgog
I2luY2x1ZGUgPGxpbnV4L21zZG9zX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvYnVmZmVyX2hlYWQu
aD4KLS0tIC4va2VybmVsL2ZvcmsuYy5vcmcJRnJpIEFwciAyNSAwNjoyNDozNCAyMDAzCisrKyAu
L2tlcm5lbC9mb3JrLmMJRnJpIEFwciAyNSAwNzo0MTozNSAyMDAzCkBAIC04NTQsNiArODU0LDcg
QEAKIAlwLT5jdXRpbWUgPSBwLT5jc3RpbWUgPSAwOwogCXAtPmFycmF5ID0gTlVMTDsKIAlwLT5s
b2NrX2RlcHRoID0gLTE7CQkvKiAtMSA9IG5vIGxvY2sgKi8KKwlwLT5zZW1fY291bnQgPSAwOwog
CXAtPnN0YXJ0X3RpbWUgPSBnZXRfamlmZmllc182NCgpOwogCXAtPnNlY3VyaXR5ID0gTlVMTDsK
IAotLS0gLi9rZXJuZWwvcHJpbnRrLmMub3JnCUZyaSBBcHIgMjUgMDY6MjQ6MzQgMjAwMworKysg
Li9rZXJuZWwvcHJpbnRrLmMJRnJpIEFwciAyNSAwODowNDoyOSAyMDAzCkBAIC01MTAsOCArNTEw
LDEwIEBACiAJY29uc29sZV9tYXlfc2NoZWR1bGUgPSAwOwogCXVwKCZjb25zb2xlX3NlbSk7CiAJ
c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9nYnVmX2xvY2ssIGZsYWdzKTsKKyNpZiAwCiAJaWYg
KHdha2Vfa2xvZ2QgJiYgIW9vcHNfaW5fcHJvZ3Jlc3MgJiYgd2FpdHF1ZXVlX2FjdGl2ZSgmbG9n
X3dhaXQpKQogCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmxvZ193YWl0KTsKKyNlbmRpZgogfQog
CiAvKiogY29uc29sZV9jb25kaXRpb25hbF9zY2hlZHVsZSAtIHlpZWxkIHRoZSBDUFUgaWYgcmVx
dWlyZWQKLS0tIC4va2VybmVsL3NjaGVkLmMub3JnCUZyaSBBcHIgMjUgMDY6MjQ6MzQgMjAwMwor
KysgLi9rZXJuZWwvc2NoZWQuYwlTdW4gQXByIDI3IDA3OjAwOjA0IDIwMDMKQEAgLTc1LDYgKzc1
LDggQEAKICNkZWZpbmUgU1RBUlZBVElPTl9MSU1JVAkoMTAqSFopCiAjZGVmaW5lIE5PREVfVEhS
RVNIT0xECQkxMjUKIAorI2RlZmluZSBUSU1FU0xJQ0VfR1JBTlVMQVJJVFkJKEhaLzIwID86IDEp
CisKIC8qCiAgKiBJZiBhIHRhc2sgaXMgJ2ludGVyYWN0aXZlJyB0aGVuIHdlIHJlaW5zZXJ0IGl0
IGluIHRoZSBhY3RpdmUKICAqIGFycmF5IGFmdGVyIGl0IGhhcyBleHBpcmVkIGl0cyBjdXJyZW50
IHRpbWVzbGljZS4gKGl0IHdpbGwgbm90CkBAIC0xMjQ4LDYgKzEyNTAsMjcgQEAKIAkJCWVucXVl
dWVfdGFzayhwLCBycS0+ZXhwaXJlZCk7CiAJCX0gZWxzZQogCQkJZW5xdWV1ZV90YXNrKHAsIHJx
LT5hY3RpdmUpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIFByZXZlbnQgYSB0b28gbG9uZyB0aW1l
c2xpY2UgYWxsb3dpbmcgYSB0YXNrIHRvIG1vbm9wb2xpemUKKwkJICogdGhlIENQVS4gV2UgZG8g
dGhpcyBieSBzcGxpdHRpbmcgdXAgdGhlIHRpbWVzbGljZSBpbnRvCisJCSAqIHNtYWxsZXIgcGll
Y2VzLgorCQkgKgorCQkgKiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhlIHRhc2sncyB0aW1l
c2xpY2VzIGV4cGlyZSBvcgorCQkgKiBnZXQgbG9zdCBpbiBhbnkgd2F5LCB0aGV5IGp1c3QgbWln
aHQgYmUgcHJlZW1wdGVkIGJ5CisJCSAqIGFub3RoZXIgdGFzayBvZiBlcXVhbCBwcmlvcml0eS4g
KG9uZSB3aXRoIGhpZ2hlcgorCQkgKiBwcmlvcml0eSB3b3VsZCBoYXZlIHByZWVtcHRlZCB0aGlz
IHRhc2sgYWxyZWFkeS4pIFdlCisJCSAqIHJlcXVldWUgdGhpcyB0YXNrIHRvIHRoZSBlbmQgb2Yg
dGhlIGxpc3Qgb24gdGhpcyBwcmlvcml0eQorCQkgKiBsZXZlbCwgd2hpY2ggaXMgaW4gZXNzZW5j
ZSBhIHJvdW5kLXJvYmluIG9mIHRhc2tzIHdpdGgKKwkJICogZXF1YWwgcHJpb3JpdHkuCisJCSAq
LworCQlpZiAoMCAmJiAhKHAtPnRpbWVfc2xpY2UgJSBUSU1FU0xJQ0VfR1JBTlVMQVJJVFkpICYm
CisJCQkgICAgICAgCQkocC0+YXJyYXkgPT0gcnEtPmFjdGl2ZSkpIHsKKwkJCWRlcXVldWVfdGFz
ayhwLCBycS0+YWN0aXZlKTsKKwkJCXNldF90c2tfbmVlZF9yZXNjaGVkKHApOworCQkJcC0+cHJp
byA9IGVmZmVjdGl2ZV9wcmlvKHApOworCQkJZW5xdWV1ZV90YXNrKHAsIHJxLT5hY3RpdmUpOwor
CQl9CiAJfQogb3V0OgogCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7CkBAIC0xOTkzLDYgKzIwMTYs
MTAgQEAKIAlpZiAobGlrZWx5KCFydF90YXNrKGN1cnJlbnQpKSkgewogCQlkZXF1ZXVlX3Rhc2so
Y3VycmVudCwgYXJyYXkpOwogCQllbnF1ZXVlX3Rhc2soY3VycmVudCwgcnEtPmV4cGlyZWQpOwor
CQlpZiAoY3VycmVudC0+c2VtX2NvdW50KSB7CisJCQlwcmludGsoS0VSTl9ERUJVRyAiJWQgeWll
bGRlZCBob2xkaW5nIHNlbS5cbiIsIGN1cnJlbnQtPnBpZCk7CisJCQlzaG93X3Rhc2soY3VycmVu
dCk7CisJCX0KIAl9IGVsc2UgewogCQlsaXN0X2RlbCgmY3VycmVudC0+cnVuX2xpc3QpOwogCQls
aXN0X2FkZF90YWlsKCZjdXJyZW50LT5ydW5fbGlzdCwgYXJyYXktPnF1ZXVlICsgY3VycmVudC0+
cHJpbyk7CkBAIC0yMTU1LDcgKzIxODIsNyBAQAogCXJldHVybiBsaXN0X2VudHJ5KHAtPnNpYmxp
bmcubmV4dCxzdHJ1Y3QgdGFza19zdHJ1Y3Qsc2libGluZyk7CiB9CiAKLXN0YXRpYyB2b2lkIHNo
b3dfdGFzayh0YXNrX3QgKiBwKQordm9pZCBzaG93X3Rhc2sodGFza190ICogcCkKIHsKIAl1bnNp
Z25lZCBsb25nIGZyZWUgPSAwOwogCXRhc2tfdCAqcmVsYXRpdmU7Ci0tLSAuL2tlcm5lbC9rc3lt
cy5jLm9yZwlGcmkgQXByIDI1IDA2OjI0OjM0IDIwMDMKKysrIC4va2VybmVsL2tzeW1zLmMJRnJp
IEFwciAyNSAwNzo0OTowMiAyMDAzCkBAIC00NjYsNiArNDY2LDcgQEAKIEVYUE9SVF9TWU1CT0wo
aW50ZXJydXB0aWJsZV9zbGVlcF9vbik7CiBFWFBPUlRfU1lNQk9MKGludGVycnVwdGlibGVfc2xl
ZXBfb25fdGltZW91dCk7CiBFWFBPUlRfU1lNQk9MKHNjaGVkdWxlKTsKK0VYUE9SVF9TWU1CT0wo
c2hvd190YXNrKTsKICNpZmRlZiBDT05GSUdfUFJFRU1QVAogRVhQT1JUX1NZTUJPTChwcmVlbXB0
X3NjaGVkdWxlKTsKICNlbmRpZgo=
--=_courier-28622-1051441518-0001-2
Content-Type: text/plain; name="log2.txt"; x-mac-type=42494E41; x-mac-creator=74747874; charset=iso-8859-1
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="log2.txt"

MjkgeWllbGRlZCBob2xkaW5nIHNlbS4Ka2pvdXJuYWxkICAgICBSIGN1cnJlbnQgIDQxODI3NDE0
NzYgICAgMjkgICAgICAxICAgICAgICAgICAxMjMgICAgMjggKEwtVExCKQpDYWxsIFRyYWNlOgog
WzxjMDEzNDhlOT5dIHNocmlua19jYWNoZSsweDIyOS8weDI4NAogWzxjMDExOTg1YT5dIHJlbGVh
c2VfY29uc29sZV9zZW0rMHg0ZS8weGEwCiBbPGMwMTE5NzdmPl0gcHJpbnRrKzB4MTQ3LzB4MTc4
CiBbPGMwMTE5NzdmPl0gcHJpbnRrKzB4MTQ3LzB4MTc4CiBbPGMwMTJiYjllPl0gX19wcmludF9z
eW1ib2wrMHgxMDYvMHgxMTMKIFs8YzAxMmJiOWU+XSBfX3ByaW50X3N5bWJvbCsweDEwNi8weDEx
MwogWzxjMDEyYmI5ZT5dIF9fcHJpbnRfc3ltYm9sKzB4MTA2LzB4MTEzCiBbPGMwMTI3MjhiPl0g
a2VybmVsX3RleHRfYWRkcmVzcysweDJmLzB4M2IKIFs8YzAxMDkyYWM+XSBzaG93X3RyYWNlKzB4
M2MvMHg4YwogWzxjMDEwOTMxYT5dIHNob3dfdHJhY2VfdGFzaysweDFlLzB4MjQKIFs8YzAxMTZm
MjM+XSBzaG93X3Rhc2srMHgxY2IvMHgxZDQKIFs8YzAxMTZiNDU+XSBzeXNfc2NoZWRfeWllbGQr
MHg5NS8weGU0CiBbPGMwMTE2YmM3Pl0geWllbGQrMHgxNy8weDFjCiBbPGMwMTJmYjA4Pl0gX19h
bGxvY19wYWdlcysweDIxOC8weDI1NAogWzxjMDEyYzgxMD5dIGZpbmRfb3JfY3JlYXRlX3BhZ2Ur
MHgzYy8weGFjCiBbPGMwMTQ1Njk5Pl0gZ3Jvd19kZXZfcGFnZSsweDIxLzB4MTI4CiBbPGMwMTQ1
ODMxPl0gX19nZXRibGtfc2xvdysweDkxLzB4ZmMKIFs8YzAxNDViZTI+XSBfX2dldGJsaysweDJl
LzB4MzgKIFs8YzAxODdiYjk+XSBqb3VybmFsX2dldF9kZXNjcmlwdG9yX2J1ZmZlcisweDM1LzB4
NTQKIFs8YzAxODRjYjk+XSBqb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbisweDY3NS8weDEyNTMK
IFs8YzAxMTVlYTI+XSBzY2hlZHVsZSsweDI4ZS8weDMzOAogWzxjMDE4NzU0Nz5dIGtqb3VybmFs
ZCsweGZmLzB4MWU4CiBbPGMwMTg3NDQ4Pl0ga2pvdXJuYWxkKzB4MC8weDFlOAogWzxjMDE4NzQz
MD5dIGNvbW1pdF90aW1lb3V0KzB4MC8weDEwCiBbPGMwMTA3MTExPl0ga2VybmVsX3RocmVhZF9o
ZWxwZXIrMHg1LzB4YwoKMjkgeWllbGRlZCBob2xkaW5nIHNlbS4Ka2pvdXJuYWxkICAgICBSIGN1
cnJlbnQgIDQxODI3NDE0NzYgICAgMjkgICAgICAxICAgICAgICAgICAxMjMgICAgMjggKEwtVExC
KQpDYWxsIFRyYWNlOgogWzxjMDEwOTMxYT5dIHNob3dfdHJhY2VfdGFzaysweDFlLzB4MjQKIFs8
YzAxMTZmMjM+XSBzaG93X3Rhc2srMHgxY2IvMHgxZDQKIFs8YzAxMTZiNDU+XSBzeXNfc2NoZWRf
eWllbGQrMHg5NS8weGU0CiBbPGMwMTE2YmM3Pl0geWllbGQrMHgxNy8weDFjCiBbPGMwMTJmYjA4
Pl0gX19hbGxvY19wYWdlcysweDIxOC8weDI1NAogWzxjMDEyYzgxMD5dIGZpbmRfb3JfY3JlYXRl
X3BhZ2UrMHgzYy8weGFjCiBbPGMwMTQ1Njk5Pl0gZ3Jvd19kZXZfcGFnZSsweDIxLzB4MTI4CiBb
PGMwMTQ1ODMxPl0gX19nZXRibGtfc2xvdysweDkxLzB4ZmMKIFs8YzAxNDViZTI+XSBfX2dldGJs
aysweDJlLzB4MzgKIFs8YzAxODdiYjk+XSBqb3VybmFsX2dldF9kZXNjcmlwdG9yX2J1ZmZlcisw
eDM1LzB4NTQKIFs8YzAxODRjYjk+XSBqb3VybmFsX2NvbW1pdF90cmFuc2FjdGlvbisweDY3NS8w
eDEyNTMKIFs8YzAxMTVlYTI+XSBzY2hlZHVsZSsweDI4ZS8weDMzOAogWzxjMDE4NzU0Nz5dIGtq
b3VybmFsZCsweGZmLzB4MWU4CiBbPGMwMTg3NDQ4Pl0ga2pvdXJuYWxkKzB4MC8weDFlOAogWzxj
MDE4NzQzMD5dIGNvbW1pdF90aW1lb3V0KzB4MC8weDEwCiBbPGMwMTA3MTExPl0ga2VybmVsX3Ro
cmVhZF9oZWxwZXIrMHg1LzB4YwoK
--=_courier-28622-1051441518-0001-2--