From owner-freebsd-hackers Thu Jan 30 14:47:01 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id OAA07001 for hackers-outgoing; Thu, 30 Jan 1997 14:47:01 -0800 (PST) Received: from sendero.i-connect.net ([206.190.144.100]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id OAA06946 for ; Thu, 30 Jan 1997 14:46:47 -0800 (PST) Received: (from shimon@localhost) by sendero.i-connect.net (8.8.5/8.8.4) id PAA09362; Thu, 30 Jan 1997 15:45:50 -0800 (PST) Message-ID: X-Mailer: XFMail 1.1-alpha [p0] on FreeBSD MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=XFMail.1.1-alpha.p0.FreeBSD:970130150229:7353=_" In-Reply-To: Date: Thu, 30 Jan 1997 14:49:56 -0800 (PST) Organization: iConnect Corp. From: Simon Shapiro To: Tom Samplonius Subject: Re: More 2.2-BETA goodies... Cc: hackers@freebsd.org Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk 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