Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jan 1997 14:49:56 -0800 (PST)
From:      Simon Shapiro <Shimon@i-Connect.Net>
To:        Tom Samplonius <tom@sdf.com>
Cc:        hackers@freebsd.org
Subject:   Re: More 2.2-BETA goodies...
Message-ID:  <XFMail.970130154550.Shimon@i-Connect.Net>
In-Reply-To: <Pine.NEB.3.94.970129035230.18719A-100000@misery.sdf.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format
--_=XFMail.1.1-alpha.p0.FreeBSD:970130150229:7353=_
Content-Type: text/plain; charset=iso-8859-8


Hi Tom Samplonius;  On 29-Jan-97 you wrote: 
> 
> On Wed, 29 Jan 1997, Simon Shapiro wrote:
> 
> ...
> > If there is interest, I can post it.  It runs on Slowlaris 2.5.1, linux
2.x
> > and FreeBSD 9of courcse).  We prefer it to others because it does true
> ...
> 
>   I'm interested.  I've been looking for something to test transactional
> limits of SCSI controllers and drives.  Problems with tagged command
> queuing, etc don't show up until you have a very high number of
> transactions per second.
> 
>   On an other note, have you tried turning AHC_TAGENABLE and/or
> AHC_SCBPAGING_ENABLE on?  AHC_TAGENABLE is pretty reliable if your drives
> support it.  SCSPAGING needs some work yet, I think.

Thanx.  I am sure many will be interested.  I am saving this note myself.
We are working, as many of you have learned by now :-) on writing a FreeBSD
driver for the DPT controllers as we need some unique features in these
(expensive) controllers.  I say ``expensive'' as our initial work will only
apply to the high-end adapters.

Here is st.c, AKA rs.c.  (st was known as rs for many, many years.  I found
/usr/local/bin/rs upon installing FreeBSD.  It does something totally 
different.

If this program has any apeal, I can contribute it to the FreeBSD project.
How?  I know to change the copyright message...

Anyway, no man page for now, but basically, you give it a filename to
work on, a size is optional. and what kind of a mess you want it to create.
A cute addision is that it finds the size of raw partitions very quickly
(stat(2) does not) and -S will tell you what it found.

It does reads by default, but can do read-modify-write or write-only.
Random seek is the default behavior, but you can cause it to seek
sequentially.

It tries to report ``net'' times.  I found that different Unixes report 
times(2) very differently.  Slowlaris, for example, appears to discount
(part of?) ``blocked-on-i/o'' time.

It misses calendar ``wall clock'' time but ``date;st -....;date'' does the
same.

There is a million options.  see the source and the -h option.

It needs no makefile.  Just compile it.

Simon

--_=XFMail.1.1-alpha.p0.FreeBSD:970130150229:7353=_
Content-Disposition: attachment; filename="st.c"
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name=st.c; SizeOnDisk=25120

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgICAgIENv
cHlyaWdodCAoYykgMTk5MC0xOTk1IGJ5IFNpbW9uIHNoYXBpcm8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoKICogICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
CiAqICAgICAgIFRISVMgSVMgVU5QVUJMSVNIRUQgUFJPUFJJRVRBUlkgU09VUkNFIENPREUgT0Yg
ICAgICAgICAgICAgICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICBTaW1vbiBz
aGFwaXJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqCiAqICAgICAgIFRoZSBjb3B5cmlnaHQgbm90aWNlIGFib3ZlIGRvZXMgbm90
IGV2aWRlbmNlIGFueSAgICAgICAgICAgICAgICAgICAgICoKICogICAgICAgYWN0dWFsIG9yIGlu
dGVuZGVkIHB1YmxpY2F0aW9uIG9mIHN1Y2ggc291cmNlIGNvZGUuICAgICAgICAgICAgICAgICAg
KgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICogIHJzOiAgICAgICAgUmFu
ZG9tIGFuZCBTZXF1ZW50aWFsIFNlZWsgcmVhZCB0ZXN0IHByb2dyYW0gICAgICAgICAgICAgICAg
ICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICBhcmd1bWVudHM6IC1mIGZpbGVfbmFtZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICogICAg
ICAgICAgICAgLXAgbm9fb2ZfcGFzc2VzIChkZWZhdWx0ID0gMCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAtciByZWNvcmRfc2l6ZSAoZGVmYXVsdCA9
IDQwOTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgICAgICAgICAgIC1z
IGZpbGVfc2l6ZSAoZGVmYXVsdCA9IDAgJiBtZWFucyBhdXRvLWRldGVjdCkgICAgICAgICAgICAg
ICAgICoKICogICAgICAgICAgICAgLVIgbm9fcmVjb3JkcyAoZGVmYXVsdCA9IGZpbGVfc2l6ZSAv
IHJlY29yZF9zaXplKSAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAtdiBGaWxlIHN5c3Rl
bSBpcyB2ZXJ5LCB2ZXJ5IGZhc3QgKFJBTSBkaXNrKSAgICAgICAgICAgICAgICAgICAqCiAqICAg
ICAgICAgICAgIC1sIFVzZSBsb2NrZigyKSB0byBsb2NrIHRoZSByZWNvcmRzLiAgRG8gTk9UIHNs
ZWVwIG9uIGJ1c3kgICAgICoKICogICAgICAgICAgICAgLUwgVXNlIGxvY2tmIGJ1dCBzbGVlcCBp
ZiBidXN5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAt
byBVc2UgT19TWU5DL2ZzeW5jIHRvIGd1YXJhbnRlZSBzeW5jaHJvbm91cyB3cml0ZXMgICAgICAg
ICAgICAqCiAqICAgICAgICAgICAgIC1PIHJlY29yZHMgdG8gc3luY2hyb25pemUgcmVjb3JkcyBl
dmVyeSBzbyBvZnRlbiAoZnN5bmMgb25seSkgICoKICogICAgICAgICAgICAgLXEgRG8gc2VxdWVu
dGlhbCBhY2Nlc3MgaW5zdGVhZCBvZiByYW5kb20gICAgICAgICAgICAgICAgICAgICAgKgogKiAg
ICAgICAgICAgICAtUSBEbyBub3QgZXhwbGljaXRseSBsc2VlayBpbiBzZXF1ZW50aWFsIG1vZGUg
ICAgICAgICAgICAgICAgICAqCiAqICAgICAgICAgICAgIC1XIEVuYWJsZSB3cml0ZXMgKC13IHdp
bGwgbm90IG9wZXJhdGUgd2l0aG91dCB0aGlzIGBgc2FmZXR5JycgICoKICogICAgICAgICAgICAg
LXcgUnxXOnBhdHRlcm4gV3JpdGUgb3B0aW9uczogIHIgbWVhbnMgcmVhZCB0aGVuIHdyaXRlLCAg
ICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzpw
YXR0ZXJuIG1lYW5zIGZpbGwgdGhlIGJ1ZmZlciAqCiAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwYXR0ZXJuIChoZXggbm8uKSoKICog
ICAgICAgICAgICAgLXggZGVidWcgbW9kZSBvbiAoZGVmYXVsdCA9IG9mZikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAtUyBSZXBvcnQgZmlsZSBzaXplICho
YW5keSBmb3IgcmF3IGRldmljZXMpICAgICAgICAgICAgICAgICAgICAqCiAqICAgICAgICAgICAg
IC1tIFJlcG9ydCB0aW1lICBpbiBtaWxsaXNlY29uZHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoKICogICAgICAgICAgICAgLU0gUmVwb3J0IHJlc3VsdCBpbiBtZWdhYnl0ZXMvc2Vj
b25kIE11dGV4IHdpdGggLUkgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAtSSBSZXBvcnQg
bnVtYmVyIG9mIEkvTyBvcGVyYXRpb25zIHBlciBzZWNvbmQgICAgICAgICAgICAgICAgICAqCiAq
ICAgICAgICAgICAgIC1WIEdpdmUgdmlzdWFsIHByb2dyZXNzIGluZGljYXRpb24gKGRvdCBwZXIg
cmVjb3JkKSAgICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgcmV0dXJuczog
ICAwIGFuZCBubyBvZiBjbG9jayB0aWNrcyBwYXNzZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICogIGNhdmVhdHM6ICAgT25lIHBhc3Mg
cGVyIGNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgog
KiAgICAgICAgICAgICBXaWVyZCByZWNvcmQgc2l6ZXMgd2lsbCByZXN1bHQgaW4gc3ViLW9wdGlt
YWwgcmVzdWx0cyBvbiBtb3N0ICAqCiAqICAgICAgICAgICAgIHN5c3RlbXMgKHdpZXJkIGlzIHdo
ZXJlIHJlY29yZF9zaXplICUgTkJQU0MgKDUxMikgIT0gMCkgICAgICAgICoKICogICAgICAgICAg
ICAgSWYgZmlsZV9zaXplICUgcmVjb3JkX3NpemUgIT0gMCB3ZSBtYWtlIGl0IHNvICh0cnVuY2F0
ZSkgICAgICAgKgogKiAgICAgICAgICAgICBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgb3Ig
dG9vIHNob3J0IHdlIGZhaWwhICAgICAgICAgICAgICAqCiAqICAgICAgICAgICAgIFdlIGRvIG5v
dCBjaGVjayBmb3IgaG9sZXMgaW4gZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK
ICogICAgICAgICAgICAgV2UgcGFzcyB0aHJvdWdoIChpZ25vcmUpIHN5bWJvbGljIGxpbmtzICAg
ICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICBSdW5uaW5nIG9uIG5vbi1yYW5k
b20tc2Vla2luZyBjaGFyYWN0ZXIgc3BlY2lhbCBjYW4gbWFrZSBsaWZlICAqCiAqICAgICAgICAg
ICAgIGV4Y2l0aW5nIDotKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoKICogICAgICAgICAgICAgTWFrZXMgZmlsZV9zaXplL3JlY29yZF9zaXplIHJl
YWRzIHBlciBwYXNzICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICBpZiB2ZXJ5
X2Zhc3QgKC12KSBpcyBvbiwgd2UgdGltZSB0aGUgd2hvbGUgaXR0ZXJhdGlvbiwgbm90ICAgICAq
CiAqICAgICAgICAgICAgIGp1c3QgdGhlIHJlYWQgcG9ydGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICoKICogICAgICAgICAgICAgSW4gY2hvb3NpbmcgZm9ybWF0
LCBNYi9zZWMgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIG1zYyAgICAgICAgKgogKiAgICAgICAg
ICAgICBJZiBtYl9wZXJfc2VjLCB0aGVuIHJlY29yZCBzaXplIG11c3QgYmUgYSBmcmFjdGlvbiBv
ZiAxTWIgICAgICAqCiAqICAgICAgICAgICAgIElmIE1iL1NlYywgZG8gbm90IGxldCBmaWxlX3Np
emUgKiBwYXNzZXMgKHRvdGFsIGJ5dGVzIHJlYWQpICAgICoKICogICAgICAgICAgICAgZXhjY2Vl
ZCAyR0IgKDB4N2ZmZmZmZmYpIG9yIHJlcG9ydGVkIHJlc3VsdHMgd2lsbCBiZSBmdW5ueSAgICAg
KgogKiAgICAgICAgICAgICBCb3RoIGEgdmFsaWQgLXcgKHNlZSBiZWxvdykgYW5kIC1XIG11c3Qg
ZXhpc3QgdG8gZW5hYmxlIHdyaXRlcy4qCiAqICAgICAgICAgICAgIC13IHc6cGF0dGVybiBhc3N1
bWVzIHRoYXQgcGF0dGVybiBpcyBhIHVsb25nLiAgICAgICAgICAgICAgICAgICoKICogICAgICAg
ICAgICAgV3JpdGUgb3B0aW9ucyBkbyBOT1Qgd29yayB3aXRoIC1RIChza2lwIHNlZWtpbmcpLiAg
ICAgICAgICAgICAgKgogKiAgICAgICAgICAgICBSYW5kb20gc2VlayBtb2RlIChkZWZhdWx0KSBk
b2VzIG5vdCBndWFyYW50ZWUgdGhhdCBhbGwgcmVjb3JkcyAqCiAqICAgICAgICAgICAgIHdpbGwg
YmUgYWNjZXNzZWQuICBUaGVyZSB3aWxsIGJlIGFzIG1hbnkgYWNjZXNzZXMgYXMgdGhlcmUgYXJl
ICoKICogICAgICAgICAgICAgYmxvY2tzIGluIHRoZSBmaWxlLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCgojaWRlbnQgIiRIZWFkZXI6IC91c3Ivc3JjL2xvY2FsL3JzL1JDUy9z
dC5jLHYgMS41IDE5OTcvMDEvMTQgMDA6NTQ6MjUgU2hpbW9uUiBFeHAgU2hpbW9uUiAkIgoKI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgojaWZkZWYgX19GcmVlQlNEX18KI2luY2x1ZGUgPGxpbWl0cy5o
PgojZW5kaWYKI2luY2x1ZGUgPHZhbHVlcy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRl
IDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxzeXMvdGltZXMuaD4K
I2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4K
I2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+
CgojaWZkZWYgX19GcmVlQlNEX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwojZGVmaW5l
IEZfTE9DSyAgICAgICAgICAgIExPQ0tfU0gKI2RlZmluZSBGX1RMT0NLICAgICAgICAgICBMT0NL
X05CCiNkZWZpbmUgRl9VTE9DSyAgICAgICAgICAgTE9DS19VTgojZGVmaW5lIE9fU1lOQyAgICAg
ICAgICAgIDAKI2luY2x1ZGUgPHN5cy9maWxlLmg+CiNlbmRpZgoKI2lmbmRlZiBPRkZfTUFYCiNk
ZWZpbmUgT0ZGX01BWCAgICAgICAgICAgTE9OR19NQVgKI2VuZGlmCgojZGVmaW5lICBET19XUklU
RVMgICAgICAgIDB4MTEKCiNkZWZpbmUgIFZFUlNJT04gICAgICAgICAgIlJhbmRvbSBTZWVrZXIg
VmVyc2lvbiAkUmV2aXNpb246IDEuNSAkXG4iCiNkZWZpbmUgIFZBTElEX09QVElPTlMgICAgIk86
UjpvUXFWU01tdnhmOnI6czpwOld3OklsTCIKCiNkZWZpbmUgIFVTQUdFICAgICAgICAgICAgIlwK
VXNhZ2U6IHJzIC1mIGZpbGVfbmFtZSBbb3B0aW9ucy4uLl1cblwKT3B0aW9uczogIC1wIG5vX29m
X3Bhc3NlcyAoZGVmYXVsdCA9IDEpXG5cCiAgICAgICAgICAtciByZWNvcmRfc2l6ZSAgKGRlZmF1
bHQgPSA0MDk2KVxuXAogICAgICAgICAgLXMgZmlsZV9zaXplICAgIChkZWZhdWx0ID0gMCAmIG1l
YW5zIGF1dG8tZGV0ZWN0KVxuXAogICAgICAgICAgLVIgbm9fcmVjb3JkcyAgIChkZWZhdWx0ID0g
ZmlsZV9zaXplIC8gcmVjb3JkX3NpemUpXG5cCiAgICAgICAgICAtcSAgICAgICAgICAgICAgUGVy
Zm9ybSBzZVFlbnRpYWwgYWNjZXNzLCBpbnN0ZWFkIG9mIHJhbmRvbVxuXAogICAgICAgICAgLVEg
ICAgICAgICAgICAgIERvIG5vdCBleHBsaWNpdGx5IHNlZWsgaW4gc2VxdWVudGlhbCBtb2RlXG5c
CiAgICAgICAgICAtdiAgICAgICAgICAgICAgRmlsZSBzeXN0ZW0gaXMgdmVyeSwgdmVyeSBmYXN0
IChSQU0gZGlzaylcblwKICAgICAgICAgIC1sICAgICAgICAgICAgICBVc2Ugbm9uLWJsb2NraW5n
IGxvY2tmKDIpL2Zsb2NrKDIpXG5cCiAgICAgICAgICAtTCAgICAgICAgICAgICAgVXNlIGJsb2Nr
aW5nIGxvY2tmKDIpL2Zsb2NrKClcblwKICAgICAgICAgIC1vICAgICAgICAgICAgICBGb3JjZSBz
eW5jaHJvbml6ZWQgd3JpdGVzIChMaW51eCBvbmx5PylcblwKICAgICAgICAgIC1XICAgICAgICAg
ICAgICBFbmFibGUgd3JpdGVzXG5cCiAgICAgICAgICAtdyBSfFc6cGF0dGVybiAgRG8gcmVhZC10
aGVuLXdyaXRlIG9yIHdyaXRlLCBoZXggcGF0dGVyblxuXAogICAgICAgICAgLVMgICAgICAgICAg
ICAgIFJlcG9ydCBmaWxlIHNpemUgKGhhbmR5IGZvciByYXcgZGV2aWNlcylcblwKICAgICAgICAg
IC1tICAgICAgICAgICAgICBSZXBvcnQgdGltZSAgaW4gbWlsbGlzZWNvbmRzXG5cCiAgICAgICAg
ICAtTXxJICAgICAgICAgICAgUmVwb3J0IHJlc3VsdCBpbiBtZWdhYnl0ZXMgb3IgSS9PLW9wcyBz
cGVyIC9zZWNvbmRcblwKICAgICAgICAgIC14ICAgICAgICAgICAgICBkZWJ1ZyBtb2RlIG9uIChk
ZWZhdWx0ID0gb2ZmKVxuXAogICAgICAgICAgLVYgICAgICAgICAgICAgIEdpdmUgdmlzdWFsIGlu
ZGljYXRpb24gb2YgcHJvZ3Jlc1xuIgojZGVmaW5lICBTVEFUX0ZBSUxFRF9NU0cgInJzOiBGYWls
ZWQgdG8gb2J0YWluIHN0YXR1cyBvZiAlcyIKI2RlZmluZSAgTk9UX1ZBTElEICAgICAgICJOViIK
I2RlZmluZSAgQ0FOTk9UX09QRU5fREVWICAicnM6IENhbm5vdCBPUEVOICVzIChSL08pIGZvciBz
aXppbmciCiNkZWZpbmUgIENBTk5PVF9TRUVLX0RFViAgInJzOiBDYW5ub3QgU0VFSyAlcyBmb3Ig
c2l6aW5nIgoKI2RlZmluZSAgUkVDT1JEX1NJWkUgICAgICA0MDk2CiNkZWZpbmUgIFBBU1NFUyAg
ICAgICAgICAgMQoKLyogRXhpdCBzdGF0dXMgdmFsdWVzICovCgojaWZuZGVmIEJBRF9PUFRJT04K
I2RlZmluZSAgQkFEX09QVElPTiAgICAgICAxCiNlbmRpZgoKI2RlZmluZSAgU1RBVF9GQUlMRUQg
ICAgICAyCiNkZWZpbmUgIEJBRF9GSUxFX1RZUEUgICAgMwojZGVmaW5lICBNQUxMT0NfRkFJTEVE
ICAgIDQKI2RlZmluZSAgT1BFTl9GQUlMRUQgICAgICA1CiNkZWZpbmUgIExTRUVLX0ZBSUxFRCAg
ICAgNgojZGVmaW5lICBSRUFEX0ZBSUxFRCAgICAgIDcKI2RlZmluZSAgQ0xPU0VfRkFJTEVEICAg
ICA4CgojZGVmaW5lICBNRUdBQllURSAgICAgICAgICgxMDI0ICogMTAyNCkKCnN0YXRpYyBpbnQg
aXNfZGlzayhtb2RlX3QgbW9kZV93b3JkKQp7CiAgc3dpdGNoICggbW9kZV93b3JkICYgU19JRk1U
ICkKICB7CiAgICBjYXNlIFNfSUZDSFI6CiAgICBjYXNlIFNfSUZCTEs6CiAgICAgIHJldHVybigx
KTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybigwKTsKICB9Cn0KCnN0YXRpYyBpbnQgaW52YWxp
ZF9maWxlKG1vZGVfdCBtb2RlX3dvcmQpCnsKICBzd2l0Y2ggKCBtb2RlX3dvcmQgJiBTX0lGTVQg
KQogIHsKICAgIGNhc2UgU19JRklGTzoKICAgIC8qIGNhc2UgU19JRkNIUjogKi8KICAgIGNhc2Ug
U19JRkRJUjoKICAgICAgcmV0dXJuKDEpOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuKDApOwog
IH0KfQoKc3RhdGljIGludCBzZWVrX2VuZHBvaW50KGludCBmZCwgc2l6ZV90IG9mZnNldCkKewog
IGNoYXIgIHJlc3VsdFsxXTsKCiAgaW50ICAgcmVhZF9yZXN1bHQ7CgogIGlmICggbHNlZWsoZmQs
IG9mZnNldCwgU0VFS19TRVQpID09IC0xICkKICAgIHJldHVybigtMSk7CgogIHJlYWRfcmVzdWx0
ID0gcmVhZChmZCwgKHZvaWQgKilyZXN1bHQsIDEpOwoKICBzd2l0Y2ggKCByZWFkX3Jlc3VsdCAp
CiAgewogICAgY2FzZSAtMToKICAgICAgcmV0dXJuKC0yKTsKICAgIGNhc2UgMToKICAgICAgcmV0
dXJuKDApOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuKDEpOwogIH0KfQoKaW50Cm1haW4oYXJn
YywgYXJndikKICBpbnQgICAgICBhcmdjOwogIGNoYXIgICAqKmFyZ3Y7CnsKICAvKiBFeHRlcm5h
bCBmdW5jdGlvbnMgKi8KCiAgZXh0ZXJuICBjaGFyICAgICAqb3B0YXJnOwoKICAvKiBMb2NhbCBW
YXJpYWJsZXMgKi8KCiAgICAgICAgICBpbnQgICAgICAgYmFkX29wdGlvbiAgICAgICAgPSAwLAog
ICAgICAgICAgICAgICAgICAgIG5keCwKICAgICAgICAgICAgICAgICAgICBwYXNzZXMgICAgICAg
ICAgICA9IFBBU1NFUywKICAgICAgICAgICAgICAgICAgICBkZXZpY2VfZmQgICAgICAgICA9IC0x
LAogICAgICAgICAgICAgICAgICAgIGRlYnVnX29uICAgICAgICAgID0gMCwKICAgICAgICAgICAg
ICAgICAgICB2ZXJ5X2Zhc3QgICAgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgbWlsbGlz
ZWNvbmRzICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgIG1iX3Blcl9zZWMgICAgICAgID0g
MCwKICAgICAgICAgICAgICAgICAgICBpb19wZXJfc2VjICAgICAgICA9IDAsCiAgICAgICAgICAg
ICAgICAgICAgdGVsbF9maWxlX3NpemUgICAgPSAwLAogICAgICAgICAgICAgICAgICAgIHZpc3Vh
bF9wcm9ncmVzcyAgID0gMCwKICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsX2FjY2VzcyA9
IDAsCiAgICAgICAgICAgICAgICAgICAgZG9fbHNlZWsgICAgICAgICAgPSAxLAogICAgICAgICAg
ICAgICAgICAgIGRvX2xvY2tmICAgICAgICAgID0gMCwKICAgICAgICAgICAgICAgICAgICBibG9j
a2luZ19sb2NrICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgZG9fd3JpdGVzICAgICAgICAg
PSAwLAogICAgICAgICAgICAgICAgICAgIHJlYWRfdGhlbl93cml0ZSAgID0gMCwKICAgICAgICAg
ICAgICAgICAgICBlbmFibGVfd3JpdGVzICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgZG9f
b19zeW5jICAgICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgIHJlY3NfcGVyX2ZzeW5jICAg
ID0gMDsKCiAgICAgICAgICAgdWxvbmcgICAgd3JpdGVfcGF0dGVybiAgICAgPSAwOwoKCiAgICAg
ICAgICAgc2l6ZV90ICAgcmVjb3JkX3NpemUgICAgICAgPSBSRUNPUkRfU0laRSwKICAgICAgICAg
ICAgICAgICAgICBmaWxlX3NpemUgICAgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgcmVj
b3JkcywKICAgICAgICAgICAgICAgICAgICBub19vZl9yZWFkcyAgICAgICA9IDA7CgogICAgICAg
ICAgY2hhciAgICAgKmZpbGVfbmFtZSAgICAgICAgID0gTlVMTCwKICAgICAgICAgICAgICAgICAg
ICpidWZmZXI7CgogIHN0cnVjdCAgdG1zICAgICAgIHRpbWVzX3N0cnVjdDsKCiAgY2xvY2tfdCAg
ICAgICAgICAgc3RhcnRfdGltZSAgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgZmluaXNo
X3RpbWUgICAgICA9IDAsCiAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRfdGltZSA9IDA7
CgogIHN0cnVjdCAgc3RhdCAgICAgIHN0YXR1c19idWZmZXI7CgogIC8qIFBhcnNlIGNvbW1hbmQg
bGluZSAqLwogIGlmICggYXJnYyA9PSAxICkKICAgICsrYmFkX29wdGlvbjsKICBlbHNlCiAgewog
ICAgd2hpbGUgKCAobmR4ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFZBTElEX09QVElPTlMpKSAhPSAt
MSkKICAgIHsKICAgICAgc3dpdGNoIChuZHgpCiAgICAgIHsKICAgICAgICBjYXNlICdvJzoKICAg
ICAgICAgICsrZG9fb19zeW5jOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnTyc6CiAg
ICAgICAgICByZWNzX3Blcl9mc3luYyA9IGF0b2kob3B0YXJnKTsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgZW5hYmxlX3dyaXRlcyA9IDB4MDE7CiAgICAgICAg
ICBicmVhazsKICAgICAgICBjYXNlICd3JzoKICAgICAgICAgIHN3aXRjaCAoIG9wdGFyZ1swXSAp
CiAgICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgJ1InOgogICAgICAgICAgICAgICsrcmVhZF90
aGVuX3dyaXRlOwogICAgICAgICAgICAgIGRvX3dyaXRlcyAgICAgICA9IDE7CiAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgICAgIGlmICggb3B0YXJn
WzFdID09ICc6JyApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd3JpdGVfcGF0dGVy
biAgID0gb3B0YXJnWzJdOwogICAgICAgICAgICAgICAgZG9fd3JpdGVzICAgICAgID0gMHgxMDsK
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIGRvX3dyaXRlcyA9IDA7CiAgICAgICAgICAgICAgICArK2JhZF9vcHRpb247CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICsrYmFkX29wdGlvbjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
IH0KCiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdRJzoKICAgICAgICAgIGRvX2xzZWVr
ID0gMDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3EnOgogICAgICAgICAgKytzZXF1
ZW50aWFsX2FjY2VzczsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1YnOgogICAgICAg
ICAgKyt2aXN1YWxfcHJvZ3Jlc3M7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdTJzoK
ICAgICAgICAgICsrdGVsbF9maWxlX3NpemU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
ICdNJzoKICAgICAgICAgICsrbWJfcGVyX3NlYzsKICAgICAgICAgIGlvX3Blcl9zZWMgPSAwOwog
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbCc6CiAgICAgICAgICArK2RvX2xvY2tmOwog
ICAgICAgICAgYmxvY2tpbmdfbG9jayA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
ICdMJzoKICAgICAgICAgICsrZG9fbG9ja2Y7CiAgICAgICAgICArK2Jsb2NraW5nX2xvY2s7CiAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdJJzoKICAgICAgICAgICsraW9fcGVyX3NlYzsK
ICAgICAgICAgIG1iX3Blcl9zZWMgPSAwOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn
bSc6CiAgICAgICAgICArK21pbGxpc2Vjb25kczsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgJ3YnOgogICAgICAgICAgKyt2ZXJ5X2Zhc3Q7CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlICd4JzoKICAgICAgICAgICsrZGVidWdfb247CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlICdmJzoKICAgICAgICAgIGZpbGVfbmFtZSA9IG9wdGFyZzsKICAgICAgICAgIGlmICggKGZp
bGVfbmFtZSA9PSBOVUxMKSB8fCAhZmlsZV9uYW1lICkKICAgICAgICAgICAgKytiYWRfb3B0aW9u
OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICBub19vZl9yZWFk
cyA9IChpbnQpIHN0cnRvdWwob3B0YXJnLCAoY2hhciAqKilOVUxMLCAwKTsKICAgICAgICAgIGlm
ICggIW5vX29mX3JlYWRzICkKICAgICAgICAgICAgKytiYWRfb3B0aW9uOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICBmaWxlX3NpemUgPSAoaW50KSBzdHJ0b3Vs
KG9wdGFyZywgKGNoYXIgKiopTlVMTCwgMCk7CiAgICAgICAgICBpZiAoICFmaWxlX3NpemUgKQog
ICAgICAgICAgICArK2JhZF9vcHRpb247CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdy
JzoKICAgICAgICAgIHJlY29yZF9zaXplID0gKGludCkgc3RydG91bChvcHRhcmcsIChjaGFyICoq
KU5VTEwsIDApOwogICAgICAgICAgaWYgKCAhcmVjb3JkX3NpemUgKQogICAgICAgICAgICArK2Jh
ZF9vcHRpb247CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdwJzoKICAgICAgICAgIHBh
c3NlcyA9IChpbnQpIHN0cnRvdWwob3B0YXJnLCAoY2hhciAqKilOVUxMLCAwKTsKICAgICAgICAg
IGlmICggIHBhc3NlcyA8IDEgKQogICAgICAgICAgICArK2JhZF9vcHRpb247CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlICc/JzoKICAgICAgICAgICsrYmFkX29wdGlvbjsKICAgICAgICAg
IGJyZWFrOwogICAgICB9CiAgICAgIGlmICggYmFkX29wdGlvbiApCiAgICAgICAgYnJlYWs7CiAg
ICB9CiAgIH0KCiAgaWYgKCByZWNzX3Blcl9mc3luYyAmJiAhIGRvX29fc3luYyApCiAgewogICAg
KHZvaWQpZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAgICIlcyBPb29wczogIEZvciBz
eW5jcm9ub3VzIFdSSVRFIG9wZXJhdGlvbnMsIHNwZWNpZnkgYm90aCAtbyBhbmQgLU8hXG4iLAog
ICAgICAgICAgICAgICAgICBhcmd2WzBdKTsKICAgIGV4aXQoQkFEX09QVElPTik7CiAgfQoKICAv
KiBWZXJpZnkgKGNhcmVmdWxseSEpIHRoYXQgd2UgcmVsbHkgd2FudCB0byB3cml0ZSBhbnl0aGlu
ZyAqLwogIGlmICggKGRvX3dyaXRlcyAmJiAhIGVuYWJsZV93cml0ZXMpIHx8IChlbmFibGVfd3Jp
dGVzICYmICFkb193cml0ZXMpICkKICB7CiAgICAodm9pZClmcHJpbnRmKHN0ZGVyciwKICAgICAg
ICAgICAgICAgICAgIiVzIE9vb3BzOiAgRm9yIFdSSVRFIG9wZXJhdGlvbnMsIHNwZWNpZnkgYm90
aCAtVyBhbmQgLXchXG4iLAogICAgICAgICAgICAgICAgICBhcmd2WzBdKTsKICAgIGV4aXQoQkFE
X09QVElPTik7CiAgfQogIGVsc2UKICAgIGRvX3dyaXRlcyB8PSBlbmFibGVfd3JpdGVzOwoKICBp
ZiAoICFlbmFibGVfd3JpdGVzICkKICAgIHJlYWRfdGhlbl93cml0ZSA9IDA7CgogIC8qIGxzZWVr
IGNhbiBiZSBkaXNhYmxlZCBvbmx5IGluIHNlcXVlbnRpYWwgUkVBRC1vbmx5IG1vZGUgKi8KICBp
ZiAoICFzZXF1ZW50aWFsX2FjY2VzcyApCiAgICArK2RvX2xzZWVrOwoKICBpZiAoIGVuYWJsZV93
cml0ZXMgJiYgIWRvX2xzZWVrICkKICB7CiAgICAodm9pZCkgZnByaW50ZihzdGRlcnIsICIlcyBj
YW5ub3QgYWNjZXB0IC1XIGFuZCAtUSB0b2dldGhlciFcbiIsIGFyZ3ZbMF0pOwogICAgZXhpdChC
QURfT1BUSU9OKTsKICB9CgogIGlmICggZGVidWdfb24gKQogICAgKHZvaWQpIGZwcmludGYoc3Rk
ZXJyLCBWRVJTSU9OKTsKICBpZiAoIGJhZF9vcHRpb24gfHwKICAgICAgICFmaWxlX25hbWUgIHx8
CiAgICAgICAhcmVjb3JkX3NpemUgfHwKICAgICAgICggKGZpbGVfc2l6ZSE9IDApICYmICggZmls
ZV9zaXplIDwgcmVjb3JkX3NpemUpKQogICAgICkKICB7CiAgICAodm9pZCkgZnByaW50ZihzdGRv
dXQsIFVTQUdFKTsKICAgIGV4aXQoQkFEX09QVElPTik7CiAgfQoKICBpZiAoIHN0YXQoZmlsZV9u
YW1lLCAmc3RhdHVzX2J1ZmZlcikgKQogIHsKICAgIHBlcnJvcigiRmFpbGVkIHRvIG9idGFpbiBz
dGF0dXMgb2YgcmVxdWVzdGVkIGZpbGUhIik7CiAgICBleGl0ICggU1RBVF9GQUlMRUQgKTsKICB9
CgogIGlmICggaW52YWxpZF9maWxlKHN0YXR1c19idWZmZXIuc3RfbW9kZSkgKQogIHsKICAgIHBl
cnJvcigiQ2Fubm90IHBlcmZvcm0gcmFuZG9tIHNlZWtzIG9uIHRoaXMgdHlwZSBvZiBhIGZpbGUh
Iik7CiAgICBleGl0ICggQkFEX0ZJTEVfVFlQRSApOwogIH0KCiAgLyogaWYgZmlsZSBzaXplIGlz
IG5vdCBrbm93biB5ZXQsIGZpbmQgaXQgb3V0ICovCiAgaWYgKCAhZmlsZV9zaXplICkKICB7CiAg
ICBpZiAoIGRlYnVnX29uICkKICAgICAgKHZvaWQpZnByaW50ZihzdGRlcnIsICJbJXM6JWRdOiBG
aWxlX3NpemUgaXMgdW5rbm93bi4uLlxuIiwKICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywg
X19MSU5FX18pOwoKICAgIGlmICggaXNfZGlzayhzdGF0dXNfYnVmZmVyLnN0X21vZGUpICkKICAg
IHsKICAgICAgaWYgKCBkZWJ1Z19vbiApCiAgICAgICAgKHZvaWQpZnByaW50ZihzdGRlcnIsICJb
JXM6JWRdOiBBcHBlYXJzIHRvIGJlIGEgZGlzay4uLlxuIiwKICAgICAgICAgICAgICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXyk7CgogICAgICAvKiB0aGVyZSBpcyBubyBrbm93biBVbml4IHN5
c3RlbSBjYWxsIHRvIHJlcG9ydCBzaXplIG9mIGEgZGV2aWNlLi4uCiAgICAgICAqIFNvIHdlIHdp
bGwgb3BlbiBpdCBhbmQgZmluZCAodGhlIGhhcmQgd2F5ICkgaXRzIHNpemUKICAgICAgICovCiAg
ICAgIGlmICggKGRldmljZV9mZCA9IG9wZW4oZmlsZV9uYW1lLCBPX1JET05MWSkpID09IC0xICkK
ICAgICAgewogICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIG9wZW4gcmVxdWVzdGVkIGZpbGUiKTsK
ICAgICAgICBleGl0KCBPUEVOX0ZBSUxFRCApOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewog
ICAgICAgIC8qIEZvciBsYWNrIG9mIGJldHRlciB3YXkgb2YgZmluZGluZyBhIGRldmljZSBzaXpl
LAogICAgICAgICAqIGRvIGEgYmluYXJ5IHNlYXJjaC4uLgoKICAgICAgICAgKiBzZXQgdG9wIG1h
cmsKICAgICAgICAgKiBzZXQgYm90dG9tIG1hcmsKCiAgICAgICAgICogdHJ5IGhhbGYgd2F5Lgog
ICAgICAgICAqIGlmIGZhaWxlZCB0b3AgbWFyayA9IGhhbGYgd2F5CiAgICAgICAgICogZWxzZSBi
b3R0b20gPSBoYWxmIHdheS4KCiAgICAgICAgICogcmVwZWF0IHVudGlsIHRvcCAtIGJvdHRvbSA8
PSAxCiAgICAgICAgICovCgogICAgICAgIHJlZ2lzdGVyIHNpemVfdCB0b3Bfc2l6ZSAgICA9IExP
TkdfTUFYLAogICAgICAgICAgICAgICAgICAgICAgICBib3R0b21fc2l6ZSA9IDAsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbGZfc2l6ZSAgID0gMDsKCiAgICAgICAgbmR4ICAgICAgICAgPSAw
OwoKICAgICAgICBkbwogICAgICAgIHsKICAgICAgICAgIGhhbGZfc2l6ZSA9IGJvdHRvbV9zaXpl
ICsgKHRvcF9zaXplIC0gYm90dG9tX3NpemUpIC8gMjsKICAgICAgICAgIHN3aXRjaCAoIHNlZWtf
ZW5kcG9pbnQoZGV2aWNlX2ZkLCBoYWxmX3NpemUpICkKICAgICAgICAgIHsKICAgICAgICAgICAg
Y2FzZSAtMToKICAgICAgICAgICAgICBwZXJyb3IoImxzZWVrKDIpIGZhaWxlZCB3aGlsZSBzZWFy
Y2hpbmcgZmlsZSBzaXplISIpOwogICAgICAgICAgICAgIHJldHVybiggTFNFRUtfRkFJTEVEICk7
CiAgICAgICAgICAgIGNhc2UgLTI6CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICB0
b3Bfc2l6ZSA9IGhhbGZfc2l6ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2Fz
ZSAwOgogICAgICAgICAgICAgIGJvdHRvbV9zaXplID0gaGFsZl9zaXplOwogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgfQoKICAgICAgICAgICsrbmR4OwogICAgICAgIH0KICAgICAgICB3
aGlsZSAoICh0b3Bfc2l6ZSAtIGJvdHRvbV9zaXplKSA+IDEgKTsKCiAgICAgICAgZmlsZV9zaXpl
ID0gKHNpemVfdCl0b3Bfc2l6ZTsKCiAgICAgICAgaWYgKCBkZWJ1Z19vbiApCiAgICAgICAgICAo
dm9pZClmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIlslczolZF06IERp
c2sgc2l6ZSBvZiAldWwgZGV0ZXJtaW5lZCBpbiAlZCBwYXNzZXNcbiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgZmlsZV9zaXplLCBuZHgpOwogICAgICB9Cgog
ICAgICAodm9pZCkgY2xvc2UoZGV2aWNlX2ZkKTsKICAgICAgZGV2aWNlX2ZkID0gLTE7CgogICAg
fQogICAgZWxzZQogICAgewogICAgICBmaWxlX3NpemUgPSAoc2l6ZV90KXN0YXR1c19idWZmZXIu
c3Rfc2l6ZTsKCiAgICAgIGlmICggZGVidWdfb24gKQogICAgICAgICh2b2lkKWZwcmludGYoc3Rk
ZXJyLAogICAgICAgICAgICAgICAgICAgICAgIlslczolZF06IE8vUyByZXBvcnRlZCBkaXNrIHNp
emUgb2YgJXVcbiIsCiAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIGZp
bGVfc2l6ZSk7CiAgICB9CiAgfQoKICBpZiAoIHRlbGxfZmlsZV9zaXplICkKICB7CiAgICBpZiAo
IG1iX3Blcl9zZWMgKQogICAgewogICAgICAodm9pZCkgZnByaW50ZihzdGRvdXQsICJBY3R1YWwg
U2l6ZSA9ICV1LiUwMnVNQiwgIiwKICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplIC8gKDEw
MjQgKiAxMDI0KSwKICAgICAgICAgICAgICAgICAgICAgKGZpbGVfc2l6ZSAlICgxMDI0ICogMTAy
NCkgLyAxMDAwMCkpOwogICAgfQogICAgZWxzZQogICAgICAodm9pZCkgZnByaW50ZihzdGRvdXQs
ICJBY3R1YWwgU2l6ZSA9ICV1LCAiLCBmaWxlX3NpemUpOwogIH0KCiAgLyogUm91bmQgZmlsZSBz
aXplIGRvd24gdG8gY29tcGxldGUgbnVtYmVyIG9mIHJlY29yZHMgKi8KICBmaWxlX3NpemUgPSBy
ZWNvcmRfc2l6ZSAqICggZmlsZV9zaXplIC8gcmVjb3JkX3NpemUpOwoKICBpZiAoIHRlbGxfZmls
ZV9zaXplICkKICB7CiAgICBpZiAoIG1iX3Blcl9zZWMgKQogICAgICAodm9pZCkgZnByaW50Zihz
dGRvdXQsICJVc2VkIFNpemUgPSAldS4lMDJ1TUJcbiIsCiAgICAgICAgICAgICAgICAgICAgIGZp
bGVfc2l6ZSAvIE1FR0FCWVRFLAogICAgICAgICAgICAgICAgICAgICAoZmlsZV9zaXplICUgTUVH
QUJZVEUgLyAxMDAwMCkpOwogICAgZWxzZQogICAgICAodm9pZCkgZnByaW50ZihzdGRvdXQsICJV
c2VkIFNpemUgPSAldVxuIiwgZmlsZV9zaXplKTsKICB9CgogIGlmICggZGVidWdfb24gKQogICAg
KHZvaWQpZnByaW50ZihzdGRlcnIsICJbJXM6JWRdOiBGaWxlX3NpemUgaXMgJXVcbiIsCiAgICAg
ICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgZmlsZV9zaXplKTsKCiAgLyogQWxsb2Nh
dGUgbWVtb3J5IGZvciB0aGUgaW5wdXQgYnVmZmVyICovCiAgaWYgKCAoYnVmZmVyID0gbWFsbG9j
KHJlY29yZF9zaXplKSkgPT0gTlVMTCApCiAgewogICAgcGVycm9yKCJDYW5ub3QgYWxsb2NhdGUg
YnVmZmVyIGZvciByZWFkIG9wZXJhdGlvbnMiKTsKICAgIGV4aXQgKCBNQUxMT0NfRkFJTEVEICk7
CiAgfQoKICBpZiAoIGRlYnVnX29uICkKICAgICh2b2lkKWZwcmludGYoc3RkZXJyLAogICAgICAg
ICAgICAgICAgICAiWyVzOiVkXTogQWxsb2NhdGVkICVkIGJ5dGVzIG9mIGJ1ZmZlciBzcGFjZVxu
IiwKICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCByZWNvcmRfc2l6ZSk7Cgog
IC8qIHRoZXJlIGlzIGEgbGliYyB0aGluZyB0aGF0IGRvZXMgdGhhdC4gIFdoYXQncyBpdHMgbmFt
ZT8gKi8KICBpZiAoIGRvX3dyaXRlcyA9PSBET19XUklURVMgKQogIHsKICAgICh2b2lkKW1lbXNl
dCgodm9pZCAqKWJ1ZmZlciwgd3JpdGVfcGF0dGVybiwgcmVjb3JkX3NpemUpOwogIH0KCiAgLyog
SWYgbmVjZXNzYXJ5LCBvcGVuIHRoZSBmaWxlICovCiAgaWYgKCBkZXZpY2VfZmQgPT0gLTEgKQog
IHsKICAgIGludCBtb2RlOwoKICAgIGlmICggZW5hYmxlX3dyaXRlcyApCiAgICB7CiAgICAgIG1v
ZGUgPSBPX1JEV1I7CiAgICAgIGlmICggZG9fb19zeW5jICkKICAgICAgewogICAgICAgIG1vZGUg
fD0gT19TWU5DOwogICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIG1vZGUgPSBPX1JE
T05MWTsKICAgIH0KCiAgICBpZiAoIChkZXZpY2VfZmQgPSBvcGVuKGZpbGVfbmFtZSwgbW9kZSkp
ID09IC0xICkKICAgIHsKICAgICAgcGVycm9yKCJGYWlsZWQgdG8gb3BlbiByZXF1ZXN0ZWQgZmls
ZSIpOwogICAgICByZXR1cm4oIE9QRU5fRkFJTEVEICk7CiAgICB9CgogICAgaWYgKCBkZWJ1Z19v
biApCiAgICAgICh2b2lkKWZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICJbJXM6
JWRdOiBPcGVuZWQgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElORV9f
LCBmaWxlX25hbWUpOwoKICB9CgogIC8qIFdlIHNldCB0aGlzIG9uZSBsYXRlLCB0byBsZXQgYWxs
IG90aGVyIGNvbXB1dGF0aW9uIGJlIGRvbmUgZmlyc3QgKi8KICByZWNvcmRzID0gZmlsZV9zaXpl
IC8gcmVjb3JkX3NpemU7CiAgaWYgKCAhbm9fb2ZfcmVhZHMgKQogIHsKICAgIG5vX29mX3JlYWRz
ID0gcmVjb3JkczsKICB9CgogIC8qIGxvb3AgYXMgbXVjaCBhcyBuZWNlc3NhcnkgKi8KICBmb3Ig
KG5keCA9IDA7IG5keCA8IHBhc3NlczsgbmR4KysgKQogIHsKICAgIHJlZ2lzdGVyIGludCByZWFk
X25vICA9IDAsCiAgICAgICAgICAgICAgICAgZnN5bmNfbm8gPSAwOwoKICAgIC8qIEluaXRpYWxp
emUgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLCBvbmNlIHBlciBpdGVyYXRpb24gKi8KICAg
IGlmICggIXNlcXVlbnRpYWxfYWNjZXNzICkKICAgICAgc3JhbmQoKGxvbmcpdGltZSgodGltZV90
ICopMCkpOwoKICAgIGlmICggZGVidWdfb24gKQogICAgICAodm9pZClmcHJpbnRmKHN0ZGVyciwK
ICAgICAgICAgICAgICAgICAgICAiWyVzOiVkXTogUGFzcyAlZFxuIiwKICAgICAgICAgICAgICAg
ICAgICBfX0ZJTEVfXywgX19MSU5FX18sIG5keCk7CgogICAgaWYgKCB2aXN1YWxfcHJvZ3Jlc3Mg
KQogICAgICAodm9pZCkgZnByaW50ZihzdGRvdXQsICJcbiVkOiAiLCBuZHgpOwoKICAgIGlmICgg
dmVyeV9mYXN0ICkKICAgICAgc3RhcnRfdGltZSAgPSB0aW1lcygmdGltZXNfc3RydWN0KTsKCiAg
ICAvKiBMc2VlayBpbml0aWFsbHkgaWYgbm8gc2Vla3Mgd2FudGVkICovCiAgICBpZiAoICFkb19s
c2VlayApCiAgICB7CiAgICAgIGlmICggbHNlZWsoZGV2aWNlX2ZkLCAwLCBTRUVLX1NFVCkgPT0g
LTEgKQogICAgICAgIHBlcnJvcigiRmFpbGVkIHRvIHByZS1zZWVrIik7CgogICAgICBpZiAoIGRl
YnVnX29uICkKICAgICAgICAodm9pZClmcHJpbnRmKHN0ZGVyciwgIlslczolZF06IFByZS1zZWVr
ZWQgdG8gcmVjb3JkIDBcbiIsCiAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5F
X18pOwogICAgfQoKICAgIGZvciAoIHJlYWRfbm8gPSAwOyByZWFkX25vIDwgbm9fb2ZfcmVhZHM7
IHJlYWRfbm8rKyApCiAgICB7CiAgICAgIHJlZ2lzdGVyICBzaXplX3QgICByZWNvcmRfbm8gICAg
PSAwOwogICAgICByZWdpc3RlciAgc2l6ZV90ICAgb2Zmc2V0ICAgICAgID0gMDsKICAgICAgcmVn
aXN0ZXIgIHNzaXplX3QgIHJlYWRfcmVzdWx0ICA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB3cml0ZV9yZXN1bHQgPSAwOwoKICAgICAgaWYgKCBzZXF1ZW50aWFsX2FjY2VzcyApCiAgICAg
IHsKICAgICAgICBpZiAoIGRvX2xzZWVrICkKICAgICAgICAgIHJlY29yZF9ubyA9IHJlYWRfbm87
CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgc3NpemVfdCByYW5kb20gPSBscmFu
ZDQ4KCk7CgogICAgICAgIHJlY29yZF9ubyA9IHJhbmRvbSAlIHJlY29yZHM7CgogICAgICAgIGlm
ICggZGVidWdfb24gKQogICAgICAgICAgKHZvaWQpZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICJbJXMuJWRdOiByYW5kb20gPSAldSwgcmVhZHMgPSAldSwgcmVjb3JkX25v
ID0gJXVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgcmFu
ZG9tLCByZWNvcmRzLCByZWNvcmRfbm8pOwogICAgICB9CgogICAgICBpZiAoIGRvX2xzZWVrICkK
ICAgICAgewogICAgICAgIG9mZnNldCA9IHJlY29yZF9ubyAqIHJlY29yZF9zaXplOwoKICAgICAg
ICBpZiAoIGxzZWVrKGRldmljZV9mZCwgb2Zmc2V0LCBTRUVLX1NFVCkgPT0gLTEgKQogICAgICAg
IHsKICAgICAgICAgICAgcGVycm9yKHNlcXVlbnRpYWxfYWNjZXNzID8gIkZhaWxlZCB0byBzZWVr
IGluIFNlcXVlbnRpYWwgbW9kZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogIkZhaWxlZCB0byBzZWVrIGluIFJhbmRvbSBtb2RlIik7CiAgICAgICAgICAgIGV4aXQgKExT
RUVLX0ZBSUxFRCApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBkZWJ1Z19vbiApCiAgICAgICAg
ICAodm9pZClmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgIlslczolZF06
IEFjY2VzcyAlZCBzZWVrZWQgdG8gcmVjb3JkICV1IG9mICV1XG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIHJlYWRfbm8sIHJlY29yZF9ubywgbm9fb2ZfcmVh
ZHMpOwogICAgICAgIGVsc2UKICAgICAgICAgIGlmICggdmlzdWFsX3Byb2dyZXNzICkKICAgICAg
ICAgICAgKHZvaWQpIGZwdXRjKCcuJywgc3Rkb3V0KTsKICAgICAgfQoKICAgICAgaWYgKCBkb19s
b2NrZiApCiAgICAgIHsKICAgICAgICBpbnQgbG9ja19tb2RlOwoKICAgICAgICBpZiAoIGJsb2Nr
aW5nX2xvY2sgKQogICAgICAgICAgbG9ja19tb2RlID0gRl9MT0NLOwogICAgICAgIGVsc2UKICAg
ICAgICAgIGxvY2tfbW9kZSA9IEZfVExPQ0s7CgojaWZkZWYgX19GcmVlQlNEX18KICAgICAgICBp
ZiAoIGZsb2NrKGRldmljZV9mZCwgbG9ja19tb2RlKSA9PSAtMSApCiNlbHNlCiAgICAgICAgaWYg
KCBsb2NrZihkZXZpY2VfZmQsIGxvY2tfbW9kZSwgcmVjb3JkX3NpemUpID09IC0xICkKI2VuZGlm
CiAgICAgICAgewojaWZkZWYgX19GcmVlQlNEX18KICAgICAgICAgIGlmICggKGVycm5vID09IEVX
T1VMREJMT0NLKSAmJiAobG9ja19tb2RlID09IEZfVExPQ0spICkKI2Vsc2UKICAgICAgICAgIGlm
ICggKGVycm5vID09IEVBR0FJTikgJiYgKGxvY2tfbW9kZSA9PSBGX1RMT0NLKSApCiNlbmRpZgog
ICAgICAgICAgewogICAgICAgICAgICBpZiAoIGRlYnVnX29uICkKICAgICAgICAgICAgewogICAg
ICAgICAgICAgICh2b2lkKWZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlslczolZF06IFJlY29yZCAlZCBpcyBhbHJlYWR5IGxvY2tlZFxuIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgcmVjb3JkX25vKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoIHZp
c3VhbF9wcm9ncmVzcyApCiAgICAgICAgICAgICAgICAodm9pZCkgZnB1dGMoJ0wnLCBzdGRvdXQp
OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAodm9p
ZCkgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgRVJS
T1I6ICBGYWlsZWQgdG8gbG9jayByZWNvcmQgJWQgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3ZbMF0sIHJlY29yZF9ubywgZXJybm8pOwogICAgICAgICAgICAgICAg
ZXhpdCgxKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAg
ICB9CiAgICAgIH0KCiAgICAgIGlmICggdmlzdWFsX3Byb2dyZXNzICkKICAgICAgICAodm9pZCkg
ZnB1dGMoJy4nLCBzdGRvdXQpOwoKICAgICAgLyogVGFrZSBhIHRpbWUgc3RhbXAuCiAgICAgICAq
IFdlIGRvIG5vdCBjaGVjayByZXR1cm4gdmFsdWUgYXMgaXQgY2FuIG9ubHkgZmFpbCBpZiB0aGUK
ICAgICAgICogcG9pbnRlciBpcyBpbnZhbGlkLi4uCiAgICAgICAqLwoKICAgICAgaWYgKCAhdmVy
eV9mYXN0ICkKICAgICAgICBzdGFydF90aW1lICA9IHRpbWVzKCZ0aW1lc19zdHJ1Y3QpOwoKICAg
ICAgaWYgKCBkb193cml0ZXMgPT0gRE9fV1JJVEVTICkKICAgICAgewogICAgICAgIHdyaXRlX3Jl
c3VsdCA9IHdyaXRlKGRldmljZV9mZCwgKHZvaWQgKilidWZmZXIsIHJlY29yZF9zaXplKTsKICAg
ICAgICBpZiAoIHdyaXRlX3Jlc3VsdCAhPSByZWNvcmRfc2l6ZSkKICAgICAgICB7CiAgICAgICAg
ICAod3JpdGVfcmVzdWx0ID09IChNQVhJTlQpKQogICAgICAgICAgICA/IHBlcnJvcigiV3JpdGUg
b3BlcmF0aW9uIGZhaWxlZDogIikKICAgICAgICAgICAgOiAodm9pZClmcHJpbnRmKHN0ZGVyciwg
IiVzIFNob3J0IFdyaXRlIVxuIiwgYXJndlswXSk7CgogICAgICAgICAgaWYgKCBkb19sb2NrZiAp
CiNpZmRlZiBfX0ZyZWVCU0RfXwogICAgICAgICAgICAodm9pZCkgZmxvY2soZGV2aWNlX2ZkLCBG
X1VMT0NLKTsKI2Vsc2UKICAgICAgICAgICAgKHZvaWQpIGxvY2tmKGRldmljZV9mZCwgRl9VTE9D
SywgcmVjb3JkX3NpemUpOwojZW5kaWYKCiAgICAgICAgICBnb3RvIGFicnVwdF9lbmQ7CiAgICAg
ICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBpZiAoIHJlY3NfcGVyX2ZzeW5j
ICkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCArK2ZzeW5jX25vID09IHJlY3NfcGVyX2Zz
eW5jICkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGZzeW5jX25vID0gMDsKICAgICAgICAg
ICAgICBpZiAoIGZzeW5jKGRldmljZV9mZCkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgIHBlcnJvcigiRmFpbGVkIHRvIHN5bmNocm9uaXplIHdyaXRlcyIpOwogICAgICAgICAgICAg
ICAgZ290byBhYnJ1cHRfZW5kOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZWFkX3Jl
c3VsdCA9IChzc2l6ZV90KXJlYWQoZGV2aWNlX2ZkLCAodm9pZCAqKWJ1ZmZlciwgcmVjb3JkX3Np
emUpOwogICAgICAgIGlmICggcmVhZF9yZXN1bHQgIT0gcmVjb3JkX3NpemUpCiAgICAgICAgewog
ICAgICAgICAgICBpZiAocmVhZF9yZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgcGVycm9yKCJS
ZWFkIG9wZXJhdGlvbiBmYWlsZWQ6ICIpOwogICAgICAgICAgICBlbHNlICh2b2lkKWZwcmludGYo
c3RkZXJyLCAiJXMgU2hvcnQgUmVhZCAoJWQpIVxuIiwgYXJndlswXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlYWRfcmVzdWx0KTsKICAgICAgICAgICAgZ290byBhYnJ1cHRfZW5k
OwogICAgICAgIH0KCiAgICAgICAgaWYgKCByZWFkX3RoZW5fd3JpdGUgKQogICAgICAgIHsKICAg
ICAgICAgIGlmICggbHNlZWsoZGV2aWNlX2ZkLCBvZmZzZXQsIFNFRUtfU0VUKSA9PSAtMSApCiAg
ICAgICAgICB7CiAgICAgICAgICAgIHBlcnJvcihzZXF1ZW50aWFsX2FjY2VzcyA/ICJGYWlsZWQg
dG8gcmUtc2VlayBpbiBTZXF1ZW50aWFsIG1vZGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJGYWlsZWQgdG8gcmUtc2VlayBpbiBSYW5kb20gbW9kZSIpOwogICAgICAg
ICAgICBleGl0IChMU0VFS19GQUlMRUQgKTsKICAgICAgICAgIH0KICAgICAgICAgIHdyaXRlX3Jl
c3VsdCA9IHdyaXRlKGRldmljZV9mZCwgKHZvaWQgKilidWZmZXIsIHJlY29yZF9zaXplKTsKICAg
ICAgICAgIGlmICggd3JpdGVfcmVzdWx0ICE9IHJlY29yZF9zaXplKQogICAgICAgICAgewogICAg
ICAgICAgICAod3JpdGVfcmVzdWx0ID09IC0xKQogICAgICAgICAgICAgID8gcGVycm9yKCJSZS1X
cml0ZSBvcGVyYXRpb24gZmFpbGVkOiAiKQogICAgICAgICAgICAgIDogKHZvaWQpZnByaW50Zihz
dGRlcnIsICIlcyBTaG9ydCBSZS1Xcml0ZSAoJWQpIVxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJndlswXSwgd3JpdGVfcmVzdWx0KTsKICAgICAgICAgICAgZ290byBhYnJ1cHRf
ZW5kOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKI2lmZGVmIF9fRnJlZUJTRF9fCiAg
ICAgICh2b2lkKWZsb2NrKGRldmljZV9mZCwgRl9VTE9DSyk7CiNlbHNlCiAgICAgICh2b2lkKWxv
Y2tmKGRldmljZV9mZCwgRl9VTE9DSywgcmVjb3JkX3NpemUpOwojZW5kaWYKCiAgICAgIGlmICgg
IXZlcnlfZmFzdCApCiAgICAgICAgZmluaXNoX3RpbWUgPSB0aW1lcygmdGltZXNfc3RydWN0KTsK
ICAgICAgCiAgICAgIGlmICggIXZlcnlfZmFzdCApCiAgICAgICAgYWNjdW11bGF0ZWRfdGltZSAr
PSAoZmluaXNoX3RpbWUgLSBzdGFydF90aW1lKTsKCiAgICAgIGlmICggIXZlcnlfZmFzdCAmJiBk
ZWJ1Z19vbiApCiAgICAgICAgKHZvaWQpZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAg
ICAgICAiWyVzOiVkXTogRG9uZSBpbiAlbHUgdGlja3MsIHRvdGFsIGlzICVsdSB0aWNrc1xuIiwK
ICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywKICAgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaF90aW1lIC0gc3RhcnRfdGltZSwgYWNjdW11bGF0ZWRfdGltZSk7CgoKICAg
IH0KCiAgICBpZiAoIHZlcnlfZmFzdCApCiAgICB7CiAgICAgIGZpbmlzaF90aW1lID0gdGltZXMo
JnRpbWVzX3N0cnVjdCk7CiAgICAgIGFjY3VtdWxhdGVkX3RpbWUgKz0gKGZpbmlzaF90aW1lIC0g
c3RhcnRfdGltZSk7CiAgICB9CiAgfQoKYWJydXB0X2VuZDoKCiAgaWYgKCBhY2N1bXVsYXRlZF90
aW1lID09IDAgKQogICAgZXhpdCgxKTsKCiAgaWYgKHZpc3VhbF9wcm9ncmVzcyApCiAgICAodm9p
ZCkgZnB1dGMoJ1xuJywgc3Rkb3V0KTsKCiAgaWYgKCBtYl9wZXJfc2VjICkKICB7CiAgICBkb3Vi
bGUgYnl0ZXNfcGVyX3RpYyA9IChkb3VibGUpZmlsZV9zaXplICogKGRvdWJsZSlwYXNzZXMgLyAo
ZG91YmxlKWFjY3VtdWxhdGVkX3RpbWU7CgogICAgKHZvaWQpIGZwcmludGYoc3Rkb3V0LCAiJS4y
ZlxuIiwgYnl0ZXNfcGVyX3RpYyk7CiAgfQogIGVsc2UgaWYgKCBpb19wZXJfc2VjICkKICB7CiAg
ICBkb3VibGUgcmVzdWx0ID0gKGRvdWJsZSlDTEtfVENLICogKGRvdWJsZSlmaWxlX3NpemUgKiAo
ZG91YmxlKXBhc3NlcyBcCiAgICAgICAgICAgICAgICAgICAgLyAoZG91YmxlKXJlY29yZF9zaXpl
IC8gKGRvdWJsZSlhY2N1bXVsYXRlZF90aW1lOwogICAgKHZvaWQpIGZwcmludGYoc3Rkb3V0LCAi
JS4yZlxuIixyZXN1bHQpOwoKICB9CiAgZWxzZSBpZiAoIG1pbGxpc2Vjb25kcyApCiAgewogICAg
ZG91YmxlIHJlc3VsdCA9IChkb3VibGUpYWNjdW11bGF0ZWRfdGltZSAqIChkb3VibGUpMTAwMCAv
IChkb3VibGUpQ0xLX1RDSzsKICAgICh2b2lkKSBmcHJpbnRmKHN0ZG91dCwgIiUuMmZcbiIsIHJl
c3VsdCk7CiAgfQogIGVsc2UKICB7CiAgICAodm9pZCkgZnByaW50ZihzdGRvdXQsICIlbHVcbiIs
IGFjY3VtdWxhdGVkX3RpbWUpOwogIH0KICByZXR1cm4oMCk7Cn0KCg==

--_=XFMail.1.1-alpha.p0.FreeBSD:970130150229:7353=_--
End of MIME message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.970130154550.Shimon>