NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: bin/47276: ftp(1) is not supported https



The following reply was made to PR bin/47276; it has been noted by GNATS.

From: NONAKA Kimihiro <nonakap%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: bin/47276: ftp(1) is not supported https
Date: Tue, 4 Dec 2012 13:02:24 +0900

 --e89a8f923f3aff7bb104cffeee57
 Content-Type: text/plain; charset=ISO-8859-1
 
 Hi,
 
 2012/12/4 Julian Djamil Fagir <gnrp%komkon2.de@localhost>
 
 >  > apply following patch.
 >  > (most code from libfetch)
 >
 >  are there any licencing issue with it then? I mean, there's a large portion
 >  of it and no licence text, should that be copied as well?
 
 I think as you say, should be added license notice to source too.
 I update patch.
 
 >  And: Can't you include libfetch directly and use it? We already have it in
 >  tree.
 
 non https portion is already implemented in ftp(1).
 
 Regards,
 --
 NONAKA Kimihiro
 
 --e89a8f923f3aff7bb104cffeee57
 Content-Type: application/octet-stream; name="tnftp-https-20121204.diff"
 Content-Disposition: attachment; filename="tnftp-https-20121204.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_haahdztk0
 
 ZGlmZiAtLWdpdCBhL2Rpc3RyaWIvYW1kNjQvY2Ryb21zL01ha2VmaWxlLmNkcm9tIGIvZGlzdHJp
 Yi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KaW5kZXggOTk1MDk5ZC4uYTFiNjhiNSAxMDA2
 NDQKLS0tIGEvZGlzdHJpYi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KKysrIGIvZGlzdHJp
 Yi9hbWQ2NC9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KQEAgLTU1LDYgKzU1LDEwIEBAIENEUlVOVElN
 RSs9CS4vdXNyL3NiaW4vaW5zdGFsbGJvb3QKIENEUlVOVElNRSs9CS4vdXNyL3NiaW4vd2ljb25m
 aWcKIENEUlVOVElNRSs9CS4vdXNyL3NoYXJlL21pc2MvdGVybWluZm8uY2RiCiBDRFJVTlRJTUUr
 PQkuL3Vzci9zaGFyZS9sb2NhbGUKKy5pZiAoJHtNS0NSWVBUT30gIT0gIm5vIikKK0NEUlVOVElN
 RSs9CS4vdXNyL2xpYi9saWJjcnlwdG8uc28qCitDRFJVTlRJTUUrPQkuL3Vzci9saWIvbGlic3Ns
 LnNvKgorLmVuZGlmCiAKIGltYWdlX21kX3ByZToKIAkke01LRElSfSBjZHJvbS9saWJleGVjL2Ro
 Y3BjZC1ob29rcwpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9pMzg2L2Nkcm9tcy9NYWtlZmlsZS5jZHJv
 bSBiL2Rpc3RyaWIvaTM4Ni9jZHJvbXMvTWFrZWZpbGUuY2Ryb20KaW5kZXggMzNjMTEyOS4uYTVl
 ZWRiZCAxMDA2NDQKLS0tIGEvZGlzdHJpYi9pMzg2L2Nkcm9tcy9NYWtlZmlsZS5jZHJvbQorKysg
 Yi9kaXN0cmliL2kzODYvY2Ryb21zL01ha2VmaWxlLmNkcm9tCkBAIC01NSw2ICs1NSwxMCBAQCBD
 RFJVTlRJTUUrPQkuL3Vzci9zYmluL2luc3RhbGxib290CiBDRFJVTlRJTUUrPQkuL3Vzci9zYmlu
 L3dpY29uZmlnCiBDRFJVTlRJTUUrPQkuL3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvLmNkYgogQ0RS
 VU5USU1FKz0JLi91c3Ivc2hhcmUvbG9jYWxlCisuaWYgKCR7TUtDUllQVE99ICE9ICJubyIpCitD
 RFJVTlRJTUUrPQkuL3Vzci9saWIvbGliY3J5cHRvLnNvKgorQ0RSVU5USU1FKz0JLi91c3IvbGli
 L2xpYnNzbC5zbyoKKy5lbmRpZgogCiBpbWFnZV9tZF9wcmU6CiAJJHtNS0RJUn0gY2Ryb20vbGli
 ZXhlYy9kaGNwY2QtaG9va3MKZGlmZiAtLWdpdCBhL3Jlc2N1ZS9saXN0LmNyeXB0byBiL3Jlc2N1
 ZS9saXN0LmNyeXB0bwppbmRleCAzNDVjNDQ1Li45NzljMTI3IDEwMDY0NAotLS0gYS9yZXNjdWUv
 bGlzdC5jcnlwdG8KKysrIGIvcmVzY3VlL2xpc3QuY3J5cHRvCkBAIC03LDQgKzcsNCBAQCBQUk9H
 CXNzaAkJc2xvZ2luCiBTUEVDSUFMCXNjcAlzcmNkaXIJY3J5cHRvL2V4dGVybmFsL2JzZC9vcGVu
 c3NoL2Jpbi9zY3AKIFNQRUNJQUwJc3NoCXNyY2RpcgljcnlwdG8vZXh0ZXJuYWwvYnNkL29wZW5z
 c2gvYmluL3NzaAogCi1MSUJTCS1sc3NoIC1sY3J5cHRvCitMSUJTCS1sc3NoIC1sc3NsIC1sY3J5
 cHRvCmRpZmYgLS1naXQgYS91c3IuYmluL2Z0cC9NYWtlZmlsZSBiL3Vzci5iaW4vZnRwL01ha2Vm
 aWxlCmluZGV4IGQxMTM1YWUuLmZiOTdkZGUgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vZnRwL01ha2Vm
 aWxlCisrKyBiL3Vzci5iaW4vZnRwL01ha2VmaWxlCkBAIC0xOCw2ICsxOCwxMSBAQCBDUFBGTEFH
 Uys9LUROT19FRElUQ09NUExFVEUgLUROT19BQk9VVCAtRE5PX0FVVEggLUROT19IRUxQIC1ETk9f
 U1RBVFVTIC1ETk9fREVCVQogLmVsc2UKIExEQUREKz0JLWxlZGl0IC1sdGVybWluZm8KIERQQURE
 Kz0JJHtMSUJFRElUfSAke0xJQlRFUk1JTkZPfQorLmlmICgke01LQ1JZUFRPfSAhPSAibm8iKQor
 Q1BQRkxBR1MrPSAtRFdJVEhfU1NMCitMREFERCs9IC1sc3NsIC1sY3J5cHRvCitEUEFERCs9ICR7
 TElCU1NMfSAke0xJQkNSWVBUT30KKy5lbmRpZgogLmVuZGlmCiAKIC5pZiAoIWRlZmluZWQoU01B
 TExQUk9HKSB8fCBkZWZpbmVkKFNNQUxMUFJPR19JTkVUNikpICYmICgke1VTRV9JTkVUNn0gIT0g
 Im5vIikKZGlmZiAtLWdpdCBhL3Vzci5iaW4vZnRwL2ZldGNoLmMgYi91c3IuYmluL2Z0cC9mZXRj
 aC5jCmluZGV4IDMwMDg3ZjguLmRkZDFjNzkgMTAwNjQ0Ci0tLSBhL3Vzci5iaW4vZnRwL2ZldGNo
 LmMKKysrIGIvdXNyLmJpbi9mdHAvZmV0Y2guYwpAQCAtMzIsNiArMzIsMzcgQEAKICAqIFBPU1NJ
 QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qLQorICogQ29weXJpZ2h0IChjKSAxOTk4
 LTIwMDQgRGFnLUVybGluZyBDb8OvZGFuIFNtw7hyZ3JhdgorICogQ29weXJpZ2h0IChjKSAyMDA4
 LCAyMDEwIEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdATmV0QlNELm9yZz4KKyAqIEFsbCByaWdo
 dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
 IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
 aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
 CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
 b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
 dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGlzIHBvc2l0aW9uIGFuZCB1bmNo
 YW5nZWQuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
 dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
 bi4KKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9y
 c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUg
 d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24KKyAqCisgKiBUSElTIFNP
 RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
 UyBPUgorICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
 TywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
 RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KKyAqIElOIE5PIEVW
 RU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwK
 KyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
 R0VTIChJTkNMVURJTkcsIEJVVAorICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
 QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
 RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
 CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
 QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
 UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
 RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog
 JEZyZWVCU0Q6IGNvbW1vbi5jLHYgMS41MyAyMDA3LzEyLzE5IDAwOjI2OjM2IGRlcyBFeHAgJAor
 ICovCisKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KICNpZm5kZWYgbGludAogX19SQ1NJRCgiJE5l
 dEJTRDogZmV0Y2guYyx2IDEuMTk4IDIwMTIvMDcvMDQgMDY6MDk6MzcgaXMgRXhwICQiKTsKQEAg
 LTY0LDEyICs5NSwyNCBAQCBfX1JDU0lEKCIkTmV0QlNEOiBmZXRjaC5jLHYgMS4xOTggMjAxMi8w
 Ny8wNCAwNjowOTozNyBpcyBFeHAgJCIpOwogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUg
 PHRpbWUuaD4KIAorI2lmZGVmIFdJVEhfU1NMCisjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyNp
 bmNsdWRlIDxvcGVuc3NsL2NyeXB0by5oPgorI2luY2x1ZGUgPG9wZW5zc2wveDUwOS5oPgorI2lu
 Y2x1ZGUgPG9wZW5zc2wvcGVtLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyNpbmNsdWRl
 IDxvcGVuc3NsL2Vyci5oPgorI2VuZGlmCisKICNpbmNsdWRlICJmdHBfdmFyLmgiCiAjaW5jbHVk
 ZSAidmVyc2lvbi5oIgogCiB0eXBlZGVmIGVudW0gewogCVVOS05PV05fVVJMX1Q9LTEsCiAJSFRU
 UF9VUkxfVCwKKyNpZmRlZiBXSVRIX1NTTAorCUhUVFBTX1VSTF9ULAorI2VuZGlmCiAJRlRQX1VS
 TF9ULAogCUZJTEVfVVJMX1QsCiAJQ0xBU1NJQ19VUkxfVApAQCAtMTAwLDcgKzE0Myw1NjYgQEAg
 c3RhdGljIGludAlyZWRpcmVjdF9sb29wOwogI2RlZmluZQlGSUxFX1VSTAkiZmlsZTovLyIJLyog
 ZmlsZSBVUkwgcHJlZml4ICovCiAjZGVmaW5lCUZUUF9VUkwJCSJmdHA6Ly8iCS8qIGZ0cCBVUkwg
 cHJlZml4ICovCiAjZGVmaW5lCUhUVFBfVVJMCSJodHRwOi8vIgkvKiBodHRwIFVSTCBwcmVmaXgg
 Ki8KKyNpZmRlZiBXSVRIX1NTTAorI2RlZmluZQlIVFRQU19VUkwJImh0dHBzOi8vIgkvKiBodHRw
 cyBVUkwgcHJlZml4ICovCisKKyNkZWZpbmUJSVNfSFRUUF9UWVBFKHVybHR5cGUpIFwKKwkoKCh1
 cmx0eXBlKSA9PSBIVFRQX1VSTF9UKSB8fCAoKHVybHR5cGUpID09IEhUVFBTX1VSTF9UKSkKKwor
 c3RydWN0IGZldGNoX2Nvbm5lY3QgeworCWludAkJCSBzZDsJCS8qIGZpbGUvc29ja2V0IGRlc2Ny
 aXB0b3IgKi8KKwljaGFyCQkJKmJ1ZjsJCS8qIGJ1ZmZlciAqLworCXNpemVfdAkJCSBidWZzaXpl
 OwkvKiBidWZmZXIgc2l6ZSAqLworCXNpemVfdAkJCSBidWZwb3M7CS8qIHBvc2l0aW9uIG9mIGJ1
 ZmZlciAqLworCXNpemVfdAkJCSBidWZsZW47CS8qIGxlbmd0aCBvZiBidWZmZXIgY29udGVudHMg
 Ki8KKwlzdHJ1Y3QgewkJCQkvKiBkYXRhIGNhY2hlZCBhZnRlciBhbgorCQkJCQkJICAgaW50ZXJy
 dXB0ZWQgcmVhZCAqLworCQljaGFyCSpidWY7CisJCXNpemVfdAkgc2l6ZTsKKwkJc2l6ZV90CSBw
 b3M7CisJCXNpemVfdAkgbGVuOworCX0gY2FjaGU7CisJaW50IAkJCSBpc3NvY2s7CisJaW50CQkJ
 IGlzZXJyOworCWludAkJCSBpc2VvZjsKKwlTU0wJCQkqc3NsOwkJLyogU1NMIGhhbmRsZSAqLwor
 fTsKK3R5cGVkZWYgc3RydWN0IGZldGNoX2Nvbm5lY3QgZmV0Y2hfY29ubmVjdF90OwogCisvKgor
 ICogV3JpdGUgYSB2ZWN0b3IgdG8gYSBjb25uZWN0aW9uIHcvIHRpbWVvdXQKKyAqIE5vdGU6IGNh
 biBtb2RpZnkgdGhlIGlvdmVjLgorICovCitzdGF0aWMgc3NpemVfdAorZmV0Y2hfd3JpdGV2KGZl
 dGNoX2Nvbm5lY3RfdCAqY29ubiwgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQpCit7CisJ
 c3RydWN0IHRpbWV2YWwgbm93LCB0aW1lb3V0LCBkZWx0YTsKKwlmZF9zZXQgd3JpdGVmZHM7CisJ
 c3NpemVfdCBsZW4sIHRvdGFsOworCWludCByOworCisJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJ
 RkRfWkVSTygmd3JpdGVmZHMpOworCQlnZXR0aW1lb2ZkYXkoJnRpbWVvdXQsIE5VTEwpOworCQl0
 aW1lb3V0LnR2X3NlYyArPSBxdWl0X3RpbWU7CisJfQorCisJdG90YWwgPSAwOworCXdoaWxlIChp
 b3ZjbnQgPiAwKSB7CisJCXdoaWxlIChxdWl0X3RpbWUgPiAwICYmICFGRF9JU1NFVChjb25uLT5z
 ZCwgJndyaXRlZmRzKSkgeworCQkJRkRfU0VUKGNvbm4tPnNkLCAmd3JpdGVmZHMpOworCQkJZ2V0
 dGltZW9mZGF5KCZub3csIE5VTEwpOworCQkJZGVsdGEudHZfc2VjID0gdGltZW91dC50dl9zZWMg
 LSBub3cudHZfc2VjOworCQkJZGVsdGEudHZfdXNlYyA9IHRpbWVvdXQudHZfdXNlYyAtIG5vdy50
 dl91c2VjOworCQkJaWYgKGRlbHRhLnR2X3VzZWMgPCAwKSB7CisJCQkJZGVsdGEudHZfdXNlYyAr
 PSAxMDAwMDAwOworCQkJCWRlbHRhLnR2X3NlYy0tOworCQkJfQorCQkJaWYgKGRlbHRhLnR2X3Nl
 YyA8IDApIHsKKwkJCQllcnJubyA9IEVUSU1FRE9VVDsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCX0K
 KwkJCWVycm5vID0gMDsKKwkJCXIgPSBzZWxlY3QoY29ubi0+c2QgKyAxLCBOVUxMLCAmd3JpdGVm
 ZHMsIE5VTEwsICZkZWx0YSk7CisJCQlpZiAociA9PSAtMSkgeworCQkJCWlmIChlcnJubyA9PSBF
 SU5UUikKKwkJCQkJY29udGludWU7CisJCQkJcmV0dXJuICgtMSk7CisJCQl9CisJCX0KKwkJZXJy
 bm8gPSAwOworCQlpZiAoY29ubi0+c3NsICE9IE5VTEwpCisJCQlsZW4gPSBTU0xfd3JpdGUoY29u
 bi0+c3NsLCBpb3YtPmlvdl9iYXNlLCBpb3YtPmlvdl9sZW4pOworCQllbHNlCisJCQlsZW4gPSB3
 cml0ZXYoY29ubi0+c2QsIGlvdiwgaW92Y250KTsKKwkJaWYgKGxlbiA9PSAwKSB7CisJCQkvKiB3
 ZSBjb25zaWRlciBhIHNob3J0IHdyaXRlIGEgZmFpbHVyZSAqLworCQkJLyogWFhYIHBlcmhhcHMg
 d2Ugc2hvdWxkbid0IGluIHRoZSBTU0wgY2FzZSAqLworCQkJZXJybm8gPSBFUElQRTsKKwkJCXJl
 dHVybiAoLTEpOworCQl9CisJCWlmIChsZW4gPCAwKSB7CisJCQlpZiAoZXJybm8gPT0gRUlOVFIp
 CisJCQkJY29udGludWU7CisJCQlyZXR1cm4gKC0xKTsKKwkJfQorCQl0b3RhbCArPSBsZW47CisJ
 CXdoaWxlIChpb3ZjbnQgPiAwICYmIGxlbiA+PSAoc3NpemVfdClpb3YtPmlvdl9sZW4pIHsKKwkJ
 CWxlbiAtPSBpb3YtPmlvdl9sZW47CisJCQlpb3YrKzsKKwkJCWlvdmNudC0tOworCQl9CisJCWlm
 IChpb3ZjbnQgPiAwKSB7CisJCQlpb3YtPmlvdl9sZW4gLT0gbGVuOworCQkJaW92LT5pb3ZfYmFz
 ZSA9IChjaGFyICopaW92LT5pb3ZfYmFzZSArIGxlbjsKKwkJfQorCX0KKwlyZXR1cm4gKHRvdGFs
 KTsKK30KKworLyoKKyAqIFdyaXRlIHRvIGEgY29ubmVjdGlvbiB3LyB0aW1lb3V0CisgKi8KK3N0
 YXRpYyBpbnQKK2ZldGNoX3dyaXRlKGZldGNoX2Nvbm5lY3RfdCAqY29ubiwgY29uc3QgY2hhciAq
 c3RyLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBpb3ZlYyBpb3ZbMV07CisKKwlpb3ZbMF0uaW92
 X2Jhc2UgPSAoY2hhciAqKV9fVU5DT05TVChzdHIpOworCWlvdlswXS5pb3ZfbGVuID0gbGVuOwor
 CXJldHVybiAoZmV0Y2hfd3JpdGV2KGNvbm4sIGlvdiwgMSkpOworfQorCisvKgorICogU2VuZCBh
 IGZvcm1hdHRlZCBsaW5lOyBvcHRpb25hbGx5IGVjaG8gdG8gdGVybWluYWwKKyAqLworc3RhdGlj
 IGludAorZmV0Y2hfcHJpbnRmKGZldGNoX2Nvbm5lY3RfdCAqY29ubiwgY29uc3QgY2hhciAqZm10
 LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwlzaXplX3QgbGVuOworCWNoYXIgKm1zZzsKKwlpbnQg
 cjsKKworCXZhX3N0YXJ0KGFwLCBmbXQpOworCWxlbiA9IHZhc3ByaW50ZigmbXNnLCBmbXQsIGFw
 KTsKKwl2YV9lbmQoYXApOworCisJaWYgKG1zZyA9PSBOVUxMKSB7CisJCWVycm5vID0gRU5PTUVN
 OworCQlyZXR1cm4gKC0xKTsKKwl9CisKKwlyID0gZmV0Y2hfd3JpdGUoY29ubiwgbXNnLCBsZW4p
 OworCWZyZWUobXNnKTsKKwlyZXR1cm4gKHIpOworfQorCitzdGF0aWMgaW50CitmZXRjaF9maWxl
 bm8oZmV0Y2hfY29ubmVjdF90ICpjb25uKQoreworCisJcmV0dXJuIChjb25uLT5zZCk7Cit9CisK
 K3N0YXRpYyBpbnQKK2ZldGNoX2Vycm9yKGZldGNoX2Nvbm5lY3RfdCAqY29ubikKK3sKKworCXJl
 dHVybiAoY29ubi0+aXNlcnIpOworfQorCitzdGF0aWMgdm9pZAorZmV0Y2hfY2xlYXJlcnIoZmV0
 Y2hfY29ubmVjdF90ICpjb25uKQoreworCisJY29ubi0+aXNlcnIgPSAwOworfQorCitzdGF0aWMg
 aW50CitmZXRjaF9mbHVzaChmZXRjaF9jb25uZWN0X3QgKmNvbm4pCit7CisJaW50IHY7CisKKwlp
 ZiAoY29ubi0+aXNzb2NrKSB7CisjaWZkZWYgVENQX05PUFVTSAorCQl2ID0gMDsKKwkJc2V0c29j
 a29wdChjb25uLT5zZCwgSVBQUk9UT19UQ1AsIFRDUF9OT1BVU0gsICZ2LCBzaXplb2YodikpOwor
 I2VuZGlmCisJCXYgPSAxOworCQlzZXRzb2Nrb3B0KGNvbm4tPnNkLCBJUFBST1RPX1RDUCwgVENQ
 X05PREVMQVksICZ2LCBzaXplb2YodikpOworCX0KKwlyZXR1cm4gKDApOworfQorCisvKkFSR1NV
 U0VEKi8KK3N0YXRpYyBmZXRjaF9jb25uZWN0X3QgKgorZmV0Y2hfb3Blbihjb25zdCBjaGFyICpm
 bmFtZSwgY29uc3QgY2hhciAqZm1vZGUpCit7CisJZmV0Y2hfY29ubmVjdF90ICpjb25uOworCWlu
 dCBmZDsKKworCWZkID0gb3BlbihmbmFtZSwgT19SRE9OTFkpOyAvKiBYWFg6IGZtb2RlICovCisJ
 aWYgKGZkIDwgMCkKKwkJcmV0dXJuIChOVUxMKTsKKworCWlmICgoY29ubiA9IGNhbGxvYygxLCBz
 aXplb2YoKmNvbm4pKSkgPT0gTlVMTCkgeworCQljbG9zZShmZCk7CisJCXJldHVybiAoTlVMTCk7
 CisJfQorCisJY29ubi0+c2QgPSBmZDsKKwljb25uLT5pc3NvY2sgPSAwOworCXJldHVybiAoY29u
 bik7Cit9CisKKy8qQVJHU1VTRUQqLworc3RhdGljIGZldGNoX2Nvbm5lY3RfdCAqCitmZXRjaF9m
 ZG9wZW4oaW50IHNkLCBjb25zdCBjaGFyICpmbW9kZSkKK3sKKwlmZXRjaF9jb25uZWN0X3QgKmNv
 bm47CisJaW50IG9wdCA9IDE7CisKKwlpZiAoKGNvbm4gPSBjYWxsb2MoMSwgc2l6ZW9mKCpjb25u
 KSkpID09IE5VTEwpCisJCXJldHVybiAoTlVMTCk7CisKKwljb25uLT5zZCA9IHNkOworCWNvbm4t
 Pmlzc29jayA9IDE7CisJZmNudGwoc2QsIEZfU0VURkQsIEZEX0NMT0VYRUMpOworCXNldHNvY2tv
 cHQoc2QsIFNPTF9TT0NLRVQsIFNPX05PU0lHUElQRSwgJm9wdCwgc2l6ZW9mKG9wdCkpOworI2lm
 ZGVmIFRDUF9OT1BVU0gKKwlzZXRzb2Nrb3B0KHNkLCBJUFBST1RPX1RDUCwgVENQX05PUFVTSCwg
 Jm9wdCwgc2l6ZW9mKG9wdCkpOworI2VuZGlmCisJcmV0dXJuIChjb25uKTsKK30KKworc3RhdGlj
 IGludAorZmV0Y2hfY2xvc2UoZmV0Y2hfY29ubmVjdF90ICpjb25uKQoreworCWludCBydiA9IDA7
 CisKKwlpZiAoY29ubiAhPSBOVUxMKSB7CisJCWZldGNoX2ZsdXNoKGNvbm4pOworCQlTU0xfZnJl
 ZShjb25uLT5zc2wpOworCQlydiA9IGNsb3NlKGNvbm4tPnNkKTsKKwkJaWYgKHJ2IDwgMCkgewor
 CQkJZXJybm8gPSBydjsKKwkJCXJ2ID0gRU9GOworCQl9CisJCWZyZWUoY29ubi0+Y2FjaGUuYnVm
 KTsKKwkJZnJlZShjb25uLT5idWYpOworCQlmcmVlKGNvbm4pOworCX0KKwlyZXR1cm4gKHJ2KTsK
 K30KKworI2RlZmluZSBGRVRDSF9SRUFEX1dBSVQJCS0yCisjZGVmaW5lIEZFVENIX1JFQURfRVJS
 T1IJLTEKKworc3RhdGljIHNzaXplX3QKK2ZldGNoX3NzbF9yZWFkKFNTTCAqc3NsLCB2b2lkICpi
 dWYsIHNpemVfdCBsZW4pCit7CisJc3NpemVfdCBybGVuOworCWludCBzc2xfZXJyOworCisJcmxl
 biA9IFNTTF9yZWFkKHNzbCwgYnVmLCBsZW4pOworCWlmIChybGVuIDwgMCkgeworCQlzc2xfZXJy
 ID0gU1NMX2dldF9lcnJvcihzc2wsIHJsZW4pOworCQlpZiAoc3NsX2VyciA9PSBTU0xfRVJST1Jf
 V0FOVF9SRUFEIHx8CisJCSAgICBzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1dSSVRFKSB7CisJ
 CQlyZXR1cm4gKEZFVENIX1JFQURfV0FJVCk7CisJCX0KKwkJRVJSX3ByaW50X2Vycm9yc19mcCh0
 dHlvdXQpOworCQlyZXR1cm4gKEZFVENIX1JFQURfRVJST1IpOworCX0KKwlyZXR1cm4gKHJsZW4p
 OworfQorCitzdGF0aWMgc3NpemVfdAorZmV0Y2hfbm9uc3NsX3JlYWQoaW50IHNkLCB2b2lkICpi
 dWYsIHNpemVfdCBsZW4pCit7CisJc3NpemVfdCBybGVuOworCisJcmxlbiA9IHJlYWQoc2QsIGJ1
 ZiwgbGVuKTsKKwlpZiAocmxlbiA8IDApIHsKKwkJaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
 byA9PSBFSU5UUikKKwkJCXJldHVybiAoRkVUQ0hfUkVBRF9XQUlUKTsKKwkJcmV0dXJuIChGRVRD
 SF9SRUFEX0VSUk9SKTsKKwl9CisJcmV0dXJuIChybGVuKTsKK30KKworLyoKKyAqIENhY2hlIHNv
 bWUgZGF0YSB0aGF0IHdhcyByZWFkIGZyb20gYSBzb2NrZXQgYnV0IGNhbm5vdCBiZSBpbW1lZGlh
 dGVseQorICogcmV0dXJuZWQgYmVjYXVzZSBvZiBhbiBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbC4K
 KyAqLworc3RhdGljIGludAorZmV0Y2hfY2FjaGVfZGF0YShmZXRjaF9jb25uZWN0X3QgKmNvbm4s
 IGNoYXIgKnNyYywgc2l6ZV90IG5ieXRlcykKK3sKKworCWlmIChjb25uLT5jYWNoZS5zaXplIDwg
 bmJ5dGVzKSB7CisJCWNoYXIgKnRtcCA9IHJlYWxsb2MoY29ubi0+Y2FjaGUuYnVmLCBuYnl0ZXMp
 OworCQlpZiAodG1wID09IE5VTEwpCisJCQlyZXR1cm4gKC0xKTsKKworCQljb25uLT5jYWNoZS5i
 dWYgPSB0bXA7CisJCWNvbm4tPmNhY2hlLnNpemUgPSBuYnl0ZXM7CisJfQorCisJbWVtY3B5KGNv
 bm4tPmNhY2hlLmJ1Ziwgc3JjLCBuYnl0ZXMpOworCWNvbm4tPmNhY2hlLmxlbiA9IG5ieXRlczsK
 Kwljb25uLT5jYWNoZS5wb3MgPSAwOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBzc2l6ZV90
 CitmZXRjaF9yZWFkKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgZmV0Y2hf
 Y29ubmVjdF90ICpjb25uKQoreworCXN0cnVjdCB0aW1ldmFsIG5vdywgdGltZW91dCwgZGVsdGE7
 CisJZmRfc2V0IHJlYWRmZHM7CisJc3NpemVfdCBybGVuLCB0b3RhbDsKKwlzaXplX3QgbGVuOwor
 CWNoYXIgKnN0YXJ0LCAqYnVmOworCisJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJZ2V0dGltZW9m
 ZGF5KCZ0aW1lb3V0LCBOVUxMKTsKKwkJdGltZW91dC50dl9zZWMgKz0gcXVpdF90aW1lOworCX0K
 KworCXRvdGFsID0gMDsKKwlzdGFydCA9IGJ1ZiA9IHB0cjsKKwlsZW4gPSBzaXplICogbm1lbWI7
 CisKKwlpZiAoY29ubi0+Y2FjaGUubGVuID4gMCkgeworCQkvKgorCQkgKiBUaGUgbGFzdCBpbnZv
 Y2F0aW9uIG9mIGZldGNoX3JlYWQgd2FzIGludGVycnVwdGVkIGJ5IGEKKwkJICogc2lnbmFsIGFm
 dGVyIHNvbWUgZGF0YSBoYWQgYmVlbiByZWFkIGZyb20gdGhlIHNvY2tldC4gQ29weQorCQkgKiB0
 aGUgY2FjaGVkIGRhdGEgaW50byB0aGUgc3VwcGxpZWQgYnVmZmVyIGJlZm9yZSB0cnlpbmcgdG8K
 KwkJICogcmVhZCBmcm9tIHRoZSBzb2NrZXQgYWdhaW4uCisJCSAqLworCQl0b3RhbCA9IChjb25u
 LT5jYWNoZS5sZW4gPCBsZW4pID8gY29ubi0+Y2FjaGUubGVuIDogbGVuOworCQltZW1jcHkoYnVm
 LCBjb25uLT5jYWNoZS5idWYsIHRvdGFsKTsKKworCQljb25uLT5jYWNoZS5sZW4gLT0gdG90YWw7
 CisJCWNvbm4tPmNhY2hlLnBvcyArPSB0b3RhbDsKKwkJbGVuIC09IHRvdGFsOworCQlidWYgKz0g
 dG90YWw7CisJfQorCisJd2hpbGUgKGxlbiA+IDApIHsKKwkJLyoKKwkJICogVGhlIHNvY2tldCBp
 cyBub24tYmxvY2tpbmcuICBJbnN0ZWFkIG9mIHRoZSBjYW5vbmljYWwKKwkJICogc2VsZWN0KCkg
 LT4gcmVhZCgpLCB3ZSBkbyB0aGUgZm9sbG93aW5nOgorCQkgKgorCQkgKiAxKSBjYWxsIHJlYWQo
 KSBvciBTU0xfcmVhZCgpLgorCQkgKiAyKSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgcmV0dXJuIC0x
 LgorCQkgKiAzKSBpZiB3ZSByZWNlaXZlZCBkYXRhIGJ1dCB3ZSBzdGlsbCBleHBlY3QgbW9yZSwK
 KwkJICogICAgdXBkYXRlIG91ciBjb3VudGVycyBhbmQgbG9vcC4KKwkJICogNCkgaWYgcmVhZCgp
 IG9yIFNTTF9yZWFkKCkgc2lnbmFsZWQgRU9GLCByZXR1cm4uCisJCSAqIDUpIGlmIHdlIGRpZCBu
 b3QgcmVjZWl2ZSBhbnkgZGF0YSBidXQgd2UncmUgbm90IGF0IEVPRiwKKwkJICogICAgY2FsbCBz
 ZWxlY3QoKS4KKwkJICoKKwkJICogSW4gdGhlIFNTTCBjYXNlLCB0aGlzIGlzIG5lY2Vzc2FyeSBi
 ZWNhdXNlIGlmIHdlCisJCSAqIHJlY2VpdmUgYSBjbG9zZSBub3RpZmljYXRpb24sIHdlIGhhdmUg
 dG8gY2FsbAorCQkgKiBTU0xfcmVhZCgpIG9uZSBhZGRpdGlvbmFsIHRpbWUgYWZ0ZXIgd2UndmUg
 cmVhZAorCQkgKiBldmVyeXRoaW5nIHdlIHJlY2VpdmVkLgorCQkgKgorCQkgKiBJbiB0aGUgbm9u
 LVNTTCBjYXNlLCBpdCBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSAodmVyeQorCQkgKiBzbGlnaHRs
 eSkgd2hlbiByZWFkaW5nIHNtYWxsIGFtb3VudHMgb2YgZGF0YS4KKwkJICovCisJCWlmIChjb25u
 LT5zc2wgIT0gTlVMTCkKKwkJCXJsZW4gPSBmZXRjaF9zc2xfcmVhZChjb25uLT5zc2wsIGJ1Ziwg
 bGVuKTsKKwkJZWxzZQorCQkJcmxlbiA9IGZldGNoX25vbnNzbF9yZWFkKGNvbm4tPnNkLCBidWYs
 IGxlbik7CisJCWlmIChybGVuID09IDApIHsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKHJsZW4g
 PiAwKSB7CisJCQlsZW4gLT0gcmxlbjsKKwkJCWJ1ZiArPSBybGVuOworCQkJdG90YWwgKz0gcmxl
 bjsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKHJsZW4gPT0gRkVUQ0hfUkVBRF9FUlJPUikg
 eworCQkJaWYgKGVycm5vID09IEVJTlRSKQorCQkJCWZldGNoX2NhY2hlX2RhdGEoY29ubiwgc3Rh
 cnQsIHRvdGFsKTsKKwkJCXJldHVybiAoLTEpOworCQl9CisJCUZEX1pFUk8oJnJlYWRmZHMpOwor
 CQl3aGlsZSAoIUZEX0lTU0VUKGNvbm4tPnNkLCAmcmVhZGZkcykpIHsKKwkJCUZEX1NFVChjb25u
 LT5zZCwgJnJlYWRmZHMpOworCQkJaWYgKHF1aXRfdGltZSA+IDApIHsKKwkJCQlnZXR0aW1lb2Zk
 YXkoJm5vdywgTlVMTCk7CisJCQkJaWYgKCF0aW1lcmNtcCgmdGltZW91dCwgJm5vdywgPikpIHsK
 KwkJCQkJZXJybm8gPSBFVElNRURPVVQ7CisJCQkJCXJldHVybiAoLTEpOworCQkJCX0KKwkJCQl0
 aW1lcnN1YigmdGltZW91dCwgJm5vdywgJmRlbHRhKTsKKwkJCX0KKwkJCWVycm5vID0gMDsKKwkJ
 CWlmIChzZWxlY3QoY29ubi0+c2QgKyAxLCAmcmVhZGZkcywgTlVMTCwgTlVMTCwKKwkJCQlxdWl0
 X3RpbWUgPiAwID8gJmRlbHRhIDogTlVMTCkgPCAwKSB7CisJCQkJaWYgKGVycm5vID09IEVJTlRS
 KQorCQkJCQljb250aW51ZTsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1
 cm4gKHRvdGFsKTsKK30KKworI2RlZmluZSBNSU5fQlVGX1NJWkUgMTAyNAorCisvKgorICogUmVh
 ZCBhIGxpbmUgb2YgdGV4dCBmcm9tIGEgY29ubmVjdGlvbiB3LyB0aW1lb3V0CisgKi8KK3N0YXRp
 YyBjaGFyICoKK2ZldGNoX2dldGxuKGNoYXIgKnN0ciwgaW50IHNpemUsIGZldGNoX2Nvbm5lY3Rf
 dCAqY29ubikKK3sKKwlzaXplX3QgdG1wc2l6ZTsKKwlzc2l6ZV90IGxlbjsKKwljaGFyIGM7CisK
 KwlpZiAoY29ubi0+YnVmID09IE5VTEwpIHsKKwkJaWYgKChjb25uLT5idWYgPSBtYWxsb2MoTUlO
 X0JVRl9TSVpFKSkgPT0gTlVMTCkgeworCQkJZXJybm8gPSBFTk9NRU07CisJCQljb25uLT5pc2Vy
 ciA9IDE7CisJCQlyZXR1cm4gKE5VTEwpOworCQl9CisJCWNvbm4tPmJ1ZnNpemUgPSBNSU5fQlVG
 X1NJWkU7CisJfQorCisJaWYgKGNvbm4tPmlzZXJyIHx8IGNvbm4tPmlzZW9mKQorCQlyZXR1cm4g
 KE5VTEwpOworCisJaWYgKGNvbm4tPmJ1ZmxlbiAtIGNvbm4tPmJ1ZnBvcyA+IDApCisJCWdvdG8g
 ZG9uZTsKKworCWNvbm4tPmJ1ZlswXSA9ICdcMCc7CisJY29ubi0+YnVmcG9zID0gMDsKKwljb25u
 LT5idWZsZW4gPSAwOworCWRvIHsKKwkJbGVuID0gZmV0Y2hfcmVhZCgmYywgc2l6ZW9mKGMpLCAx
 LCBjb25uKTsKKwkJaWYgKGxlbiA9PSAtMSkgeworCQkJY29ubi0+aXNlcnIgPSAxOworCQkJcmV0
 dXJuIChOVUxMKTsKKwkJfQorCQlpZiAobGVuID09IDApIHsKKwkJCWNvbm4tPmlzZW9mID0gMTsK
 KwkJCWJyZWFrOworCQl9CisJCWNvbm4tPmJ1Zltjb25uLT5idWZsZW4rK10gPSBjOworCQlpZiAo
 Y29ubi0+YnVmbGVuID09IGNvbm4tPmJ1ZnNpemUpIHsKKwkJCWNoYXIgKnRtcCA9IGNvbm4tPmJ1
 ZjsKKwkJCXRtcHNpemUgPSBjb25uLT5idWZzaXplICogMiArIDE7CisJCQlpZiAoKHRtcCA9IHJl
 YWxsb2ModG1wLCB0bXBzaXplKSkgPT0gTlVMTCkgeworCQkJCWVycm5vID0gRU5PTUVNOworCQkJ
 CWNvbm4tPmlzZXJyID0gMTsKKwkJCQlyZXR1cm4gKE5VTEwpOworCQkJfQorCQkJY29ubi0+YnVm
 ID0gdG1wOworCQkJY29ubi0+YnVmc2l6ZSA9IHRtcHNpemU7CisJCX0KKwl9IHdoaWxlIChjICE9
 ICdcbicpOworCisJaWYgKGNvbm4tPmJ1ZmxlbiA9PSAwKQorCQlyZXR1cm4gKE5VTEwpOworIGRv
 bmU6CisJdG1wc2l6ZSA9IE1JTihzaXplIC0gMSwgKGludCkoY29ubi0+YnVmbGVuIC0gY29ubi0+
 YnVmcG9zKSk7CisJbWVtY3B5KHN0ciwgY29ubi0+YnVmICsgY29ubi0+YnVmcG9zLCB0bXBzaXpl
 KTsKKwlzdHJbdG1wc2l6ZV0gPSAnXDAnOworCWNvbm4tPmJ1ZnBvcyArPSB0bXBzaXplOworCXJl
 dHVybiAoc3RyKTsKK30KKworc3RhdGljIGludAorZmV0Y2hfZ2V0bGluZShmZXRjaF9jb25uZWN0
 X3QgKmNvbm4sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKKyAgICBjb25zdCBjaGFyICoqZXJy
 b3Jtc2cpCit7CisJc2l6ZV90IGxlbjsKKwlpbnQgcnY7CisKKwlpZiAoZmV0Y2hfZ2V0bG4oYnVm
 LCBidWZsZW4sIGNvbm4pID09IE5VTEwpIHsKKwkJaWYgKGNvbm4tPmlzZW9mKSB7CS8qIEVPRiAq
 LworCQkJcnYgPSAtMjsKKwkJCWlmIChlcnJvcm1zZykKKwkJCQkqZXJyb3Jtc2cgPSAiXG5FT0Yg
 cmVjZWl2ZWQiOworCQl9IGVsc2UgewkJLyogZXJyb3IgKi8KKwkJCXJ2ID0gLTE7CisJCQlpZiAo
 ZXJyb3Jtc2cpCisJCQkJKmVycm9ybXNnID0gIkVycm9yIGVuY291bnRlcmVkIjsKKwkJfQorCQlm
 ZXRjaF9jbGVhcmVycihjb25uKTsKKwkJcmV0dXJuIChydik7CisJfQorCWxlbiA9IHN0cmxlbihi
 dWYpOworCWlmIChidWZbbGVuIC0gMV0gPT0gJ1xuJykgewkvKiBjbGVhciBhbnkgdHJhaWxpbmcg
 bmV3bGluZSAqLworCQlidWZbLS1sZW5dID0gJ1wwJzsKKwl9IGVsc2UgaWYgKGxlbiA9PSBidWZs
 ZW4gLSAxKSB7CS8qIGxpbmUgdG9vIGxvbmcgKi8KKwkJd2hpbGUgKDEpIHsKKwkJCWNoYXIgYzsK
 KwkJCXNzaXplX3QgcmxlbiA9IGZldGNoX3JlYWQoJmMsIHNpemVvZihjKSwgMSwgY29ubik7CisJ
 CQlpZiAocmxlbiA8PSAwIHx8IGMgPT0gJ1xuJykKKwkJCQlicmVhazsKKwkJfQorCQlpZiAoZXJy
 b3Jtc2cpCisJCQkqZXJyb3Jtc2cgPSAiSW5wdXQgbGluZSBpcyB0b28gbG9uZyI7CisJCWZldGNo
 X2NsZWFyZXJyKGNvbm4pOworCQlyZXR1cm4gKC0zKTsKKwl9CisJaWYgKGVycm9ybXNnKQorCQkq
 ZXJyb3Jtc2cgPSBOVUxMOworCXJldHVybiAobGVuKTsKK30KKworc3RhdGljIFNTTCAqCitmZXRj
 aF9zdGFydF9zc2woaW50IHNvY2spCit7CisJU1NMICpzc2w7CisJU1NMX0NUWCAqY3R4OworCWlu
 dCByZXQsIHNzbF9lcnI7CisKKwkvKiBJbml0IHRoZSBTU0wgbGlicmFyeSBhbmQgY29udGV4dCAq
 LworCWlmICghU1NMX2xpYnJhcnlfaW5pdCgpKXsKKwkJZnByaW50Zih0dHlvdXQsICJTU0wgbGli
 cmFyeSBpbml0IGZhaWxlZFxuIik7CisJCXJldHVybiAoTlVMTCk7CisJfQorCisJU1NMX2xvYWRf
 ZXJyb3Jfc3RyaW5ncygpOworCisJY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjIzX2NsaWVudF9tZXRo
 b2QoKSk7CisJU1NMX0NUWF9zZXRfbW9kZShjdHgsIFNTTF9NT0RFX0FVVE9fUkVUUlkpOworCisJ
 c3NsID0gU1NMX25ldyhjdHgpOworCWlmIChzc2wgPT0gTlVMTCl7CisJCWZwcmludGYodHR5b3V0
 LCAiU1NMIGNvbnRleHQgY3JlYXRpb24gZmFpbGVkXG4iKTsKKwkJU1NMX0NUWF9mcmVlKGN0eCk7
 CisJCXJldHVybiAoTlVMTCk7CisJfQorCVNTTF9zZXRfZmQoc3NsLCBzb2NrKTsKKwl3aGlsZSAo
 KHJldCA9IFNTTF9jb25uZWN0KHNzbCkpID09IC0xKSB7CisJCXNzbF9lcnIgPSBTU0xfZ2V0X2Vy
 cm9yKHNzbCwgcmV0KTsKKwkJaWYgKHNzbF9lcnIgIT0gU1NMX0VSUk9SX1dBTlRfUkVBRCAmJgor
 CQkgICAgc3NsX2VyciAhPSBTU0xfRVJST1JfV0FOVF9XUklURSkgeworCQkJRVJSX3ByaW50X2Vy
 cm9yc19mcCh0dHlvdXQpOworCQkJU1NMX2ZyZWUoc3NsKTsKKwkJCXJldHVybiAoTlVMTCk7CisJ
 CX0KKwl9CisKKwlpZiAoZnRwX2RlYnVnICYmIHZlcmJvc2UpIHsKKwkJWDUwOSAqY2VydDsKKwkJ
 WDUwOV9OQU1FICpuYW1lOworCQljaGFyICpzdHI7CisKKwkJZnByaW50Zih0dHlvdXQsICJTU0wg
 Y29ubmVjdGlvbiBlc3RhYmxpc2hlZCB1c2luZyAlc1xuIiwKKwkJICAgIFNTTF9nZXRfY2lwaGVy
 KHNzbCkpOworCQljZXJ0ID0gU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKHNzbCk7CisJCW5hbWUg
 PSBYNTA5X2dldF9zdWJqZWN0X25hbWUoY2VydCk7CisJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5l
 KG5hbWUsIDAsIDApOworCQlmcHJpbnRmKHR0eW91dCwgIkNlcnRpZmljYXRlIHN1YmplY3Q6ICVz
 XG4iLCBzdHIpOworCQlmcmVlKHN0cik7CisJCW5hbWUgPSBYNTA5X2dldF9pc3N1ZXJfbmFtZShj
 ZXJ0KTsKKwkJc3RyID0gWDUwOV9OQU1FX29uZWxpbmUobmFtZSwgMCwgMCk7CisJCWZwcmludGYo
 dHR5b3V0LCAiQ2VydGlmaWNhdGUgaXNzdWVyOiAlc1xuIiwgc3RyKTsKKwkJZnJlZShzdHIpOwor
 CX0KKworCXJldHVybiAoc3NsKTsKK30KKworI2Vsc2UJLyogIVdJVEhfU1NMICovCisjZGVmaW5l
 CUlTX0hUVFBfVFlQRSh1cmx0eXBlKQkoKHVybHR5cGUpID09IEhUVFBfVVJMX1QpCit0eXBlZGVm
 IEZJTEUgZmV0Y2hfY29ubmVjdF90OworI2RlZmluZQlmZXRjaF9wcmludGYJZnByaW50ZgorI2Rl
 ZmluZQlmZXRjaF9maWxlbm8JZmlsZW5vCisjZGVmaW5lCWZldGNoX2Vycm9yCWZlcnJvcgorI2Rl
 ZmluZQlmZXRjaF9mbHVzaAlmZmx1c2gKKyNkZWZpbmUJZmV0Y2hfb3Blbglmb3BlbgorI2RlZmlu
 ZQlmZXRjaF9mZG9wZW4JZmRvcGVuCisjZGVmaW5lCWZldGNoX2Nsb3NlCWZjbG9zZQorI2RlZmlu
 ZQlmZXRjaF9yZWFkCWZyZWFkCisjZGVmaW5lCWZldGNoX2dldGxuCWZnZXRzCisjZGVmaW5lCWZl
 dGNoX2dldGxpbmUJZ2V0X2xpbmUKKyNlbmRpZgkvKiAhV0lUSF9TU0wgKi8KIAogLyoKICAqIERl
 dGVybWluZSBpZiB0b2tlbiBpcyB0aGUgbmV4dCB3b3JkIGluIGJ1ZiAoY2FzZSBpbnNlbnNpdGl2
 ZSkuCkBAIC0zNDYsNiArOTQ4LDEzIEBAIHBhcnNlX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0
 IGNoYXIgKmRlc2MsIHVybF90ICp1dHlwZSwKIAl9IGVsc2UgaWYgKFNUUk5FUVVBTCh1cmwsIEZJ
 TEVfVVJMKSkgewogCQl1cmwgKz0gc2l6ZW9mKEZJTEVfVVJMKSAtIDE7CiAJCSp1dHlwZSA9IEZJ
 TEVfVVJMX1Q7CisjaWZkZWYgV0lUSF9TU0wKKwl9IGVsc2UgaWYgKFNUUk5FUVVBTCh1cmwsIEhU
 VFBTX1VSTCkpIHsKKwkJdXJsICs9IHNpemVvZihIVFRQU19VUkwpIC0gMTsKKwkJKnV0eXBlID0g
 SFRUUFNfVVJMX1Q7CisJCSpwb3J0bnVtID0gSFRUUFNfUE9SVDsKKwkJdHBvcnQgPSBodHRwc3Bv
 cnQ7CisjZW5kaWYKIAl9IGVsc2UgewogCQl3YXJueCgiSW52YWxpZCAlcyBgJXMnIiwgZGVzYywg
 dXJsKTsKICBjbGVhbnVwX3BhcnNlX3VybDoKQEAgLTQ5OCwxNyArMTEwNywyMSBAQCBmZXRjaF91
 cmwoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRo
 LCBjaGFyICp3d3dhdXRoKQogCWNoYXIJCQkqcHVzZXIsICpwcGFzcywgKnVzZXJhZ2VudDsKIAlv
 ZmZfdAkJCWhhc2hieXRlcywgcmFuZ2VzdGFydCwgcmFuZ2VlbmQsIGVudGl0eWxlbjsKIAlpbnQJ
 CQkoKnZvbGF0aWxlIGNsb3NlZnVuYykoRklMRSAqKTsKLQlGSUxFCQkJKnZvbGF0aWxlIGZpbjsK
 KwlmZXRjaF9jb25uZWN0X3QJCSp2b2xhdGlsZSBmaW47CiAJRklMRQkJCSp2b2xhdGlsZSBmb3V0
 OwogCXRpbWVfdAkJCW10aW1lOwogCXVybF90CQkJdXJsdHlwZTsKIAlpbl9wb3J0X3QJCXBvcnRu
 dW07CisjaWZkZWYgV0lUSF9TU0wKKwlTU0wJCQkqc3NsOworI2VuZGlmCiAKIAlEUFJJTlRGKCJm
 ZXRjaF91cmw6IGAlcycgcHJveHllbnYgYCVzJ1xuIiwgdXJsLCBTVFJvck5VTEwocHJveHllbnYp
 KTsKIAogCW9sZGludHIgPSBvbGRpbnRwID0gTlVMTDsKIAljbG9zZWZ1bmMgPSBOVUxMOwotCWZp
 biA9IGZvdXQgPSBOVUxMOworCWZpbiA9IE5VTEw7CisJZm91dCA9IE5VTEw7CiAJcyA9IC0xOwog
 CXNhdmVmaWxlID0gTlVMTDsKIAlhdXRoID0gbG9jYXRpb24gPSBtZXNzYWdlID0gTlVMTDsKQEAg
 LTUzMSw3ICsxMTQ0LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAq
 cHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCXJ2YWwgPSBmZXRj
 aF9mdHAodXJsKTsKIAkJCWdvdG8gY2xlYW51cF9mZXRjaF91cmw7CiAJCX0KLQkJaWYgKHVybHR5
 cGUgIT0gSFRUUF9VUkxfVCB8fCBvdXRmaWxlID09IE5VTEwpICB7CisJCWlmICghSVNfSFRUUF9U
 WVBFKHVybHR5cGUpIHx8IG91dGZpbGUgPT0gTlVMTCkgIHsKIAkJCXdhcm54KCJJbnZhbGlkIFVS
 TCAobm8gZmlsZSBhZnRlciBob3N0KSBgJXMnIiwgdXJsKTsKIAkJCWdvdG8gY2xlYW51cF9mZXRj
 aF91cmw7CiAJCX0KQEAgLTU3MSwxNyArMTE4NCwxNyBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAq
 dXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRo
 KQogCX0KIAlpZiAodXJsdHlwZSA9PSBGSUxFX1VSTF9UKSB7CQkvKiBmaWxlOi8vIFVSTHMgKi8K
 IAkJZGlyZWN0aW9uID0gImNvcGllZCI7Ci0JCWZpbiA9IGZvcGVuKGRlY29kZWRwYXRoLCAiciIp
 OworCQlmaW4gPSBmZXRjaF9vcGVuKGRlY29kZWRwYXRoLCAiciIpOwogCQlpZiAoZmluID09IE5V
 TEwpIHsKIAkJCXdhcm4oIkNhbid0IG9wZW4gYCVzJyIsIGRlY29kZWRwYXRoKTsKIAkJCWdvdG8g
 Y2xlYW51cF9mZXRjaF91cmw7CiAJCX0KLQkJaWYgKGZzdGF0KGZpbGVubyhmaW4pLCAmc2IpID09
 IDApIHsKKwkJaWYgKGZzdGF0KGZldGNoX2ZpbGVubyhmaW4pLCAmc2IpID09IDApIHsKIAkJCW10
 aW1lID0gc2Iuc3RfbXRpbWU7CiAJCQlmaWxlc2l6ZSA9IHNiLnN0X3NpemU7CiAJCX0KIAkJaWYg
 KHJlc3RhcnRfcG9pbnQpIHsKLQkJCWlmIChsc2VlayhmaWxlbm8oZmluKSwgcmVzdGFydF9wb2lu
 dCwgU0VFS19TRVQpIDwgMCkgeworCQkJaWYgKGxzZWVrKGZldGNoX2ZpbGVubyhmaW4pLCByZXN0
 YXJ0X3BvaW50LCBTRUVLX1NFVCkgPCAwKSB7CiAJCQkJd2FybigiQ2FuJ3Qgc2VlayB0byByZXN0
 YXJ0IGAlcyciLAogCQkJCSAgICBkZWNvZGVkcGF0aCk7CiAJCQkJZ290byBjbGVhbnVwX2ZldGNo
 X3VybDsKQEAgLTU5NCwxMiArMTIwNywxNSBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAqdXJsLCBj
 b25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRoKQogCQkJ
 CSAgICAoTExUKXJlc3RhcnRfcG9pbnQpOwogCQkJZnB1dHMoIlxuIiwgdHR5b3V0KTsKIAkJfQor
 CQlpZiAoMCA9PSByY3ZidWZfc2l6ZSkgeworCQkJcmN2YnVmX3NpemUgPSA4ICogMTAyNDsgLyog
 WFhYICovCisJCX0KIAl9IGVsc2UgewkJCQkvKiBmdHA6Ly8gb3IgaHR0cDovLyBVUkxzICovCiAJ
 CWNvbnN0IGNoYXIgKmxlYWRpbmc7CiAJCWludCBoYXNsZWFkaW5nOwogCiAJCWlmIChwcm94eWVu
 diA9PSBOVUxMKSB7Ci0JCQlpZiAodXJsdHlwZSA9PSBIVFRQX1VSTF9UKQorCQkJaWYgKElTX0hU
 VFBfVFlQRSh1cmx0eXBlKSkKIAkJCQlwcm94eWVudiA9IGdldG9wdGlvbnZhbHVlKCJodHRwX3By
 b3h5Iik7CiAJCQllbHNlIGlmICh1cmx0eXBlID09IEZUUF9VUkxfVCkKIAkJCQlwcm94eWVudiA9
 IGdldG9wdGlvbnZhbHVlKCJmdHBfcHJveHkiKTsKQEAgLTY2MCw3ICsxMjc2LDcgQEAgZmV0Y2hf
 dXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0
 aCwgY2hhciAqd3d3YXV0aCkKIAkJCQkgICAgJnBwYXRoKSA9PSAtMSkKIAkJCQkJZ290byBjbGVh
 bnVwX2ZldGNoX3VybDsKIAotCQkJCWlmICgocHVybHR5cGUgIT0gSFRUUF9VUkxfVAorCQkJCWlm
 ICgoIUlTX0hUVFBfVFlQRShwdXJsdHlwZSkKIAkJCQkgICAgICYmIHB1cmx0eXBlICE9IEZUUF9V
 UkxfVCkgfHwKIAkJCQkgICAgRU1QVFlTVFJJTkcocGhvc3QpIHx8CiAJCQkJICAgICghIEVNUFRZ
 U1RSSU5HKHBwYXRoKQpAQCAtNjkwLDYgKzEzMDYsNyBAQCBmZXRjaF91cmwoY29uc3QgY2hhciAq
 dXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBjaGFyICp3d3dhdXRo
 KQogCQkJCUZSRUVQVFIocGF0aCk7CiAJCQkJcGF0aCA9IGZ0cF9zdHJkdXAodXJsKTsKIAkJCQlG
 UkVFUFRSKHBwYXRoKTsKKwkJCQl1cmx0eXBlID0gcHVybHR5cGU7CiAJCQl9CiAJCX0gLyogISBF
 TVBUWVNUUklORyhwcm94eWVudikgKi8KIApAQCAtNzA5LDYgKzEzMjYsOSBAQCBmZXRjaF91cmwo
 Y29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlhdXRoLCBj
 aGFyICp3d3dhdXRoKQogCQkJaG9zdCA9IHJlczAtPmFpX2Nhbm9ubmFtZTsKIAogCQlzID0gLTE7
 CisjaWZkZWYgV0lUSF9TU0wKKwkJc3NsID0gTlVMTDsKKyNlbmRpZgogCQlmb3IgKHJlcyA9IHJl
 czA7IHJlczsgcmVzID0gcmVzLT5haV9uZXh0KSB7CiAJCQljaGFyCWhuYW1lW05JX01BWEhPU1Rd
 LCBzbmFtZVtOSV9NQVhTRVJWXTsKIApAQCAtNzQxLDYgKzEzNjEsMTYgQEAgZmV0Y2hfdXJsKGNv
 bnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hh
 ciAqd3d3YXV0aCkKIAkJCQljb250aW51ZTsKIAkJCX0KIAorI2lmZGVmIFdJVEhfU1NMCisJCQlp
 ZiAodXJsdHlwZSA9PSBIVFRQU19VUkxfVCkgeworCQkJCWlmICgoc3NsID0gZmV0Y2hfc3RhcnRf
 c3NsKHMpKSA9PSBOVUxMKSB7CisJCQkJCWNsb3NlKHMpOworCQkJCQlzID0gLTE7CisJCQkJCWNv
 bnRpbnVlOworCQkJCX0KKwkJCX0KKyNlbmRpZgorCiAJCQkvKiBzdWNjZXNzICovCiAJCQlicmVh
 azsKIAkJfQpAQCAtNzUwLDcgKzEzODAsMTEgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwg
 Y29uc3QgY2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJ
 CWdvdG8gY2xlYW51cF9mZXRjaF91cmw7CiAJCX0KIAotCQlmaW4gPSBmZG9wZW4ocywgInIrIik7
 CisJCWZpbiA9IGZldGNoX2Zkb3BlbihzLCAicisiKTsKKyNpZmRlZiBXSVRIX1NTTAorCQlpZiAo
 dXJsdHlwZSA9PSBIVFRQU19VUkxfVCkKKwkJCWZpbi0+c3NsID0gc3NsOworI2VuZGlmCiAJCS8q
 CiAJCSAqIENvbnN0cnVjdCBhbmQgc2VuZCB0aGUgcmVxdWVzdC4KIAkJICovCkBAIC03NjUsMTEg
 KzEzOTksMTEgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHll
 bnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCQlsZWFkaW5nID0gIiwgIjsK
 IAkJCQloYXNsZWFkaW5nKys7CiAJCQl9Ci0JCQlmcHJpbnRmKGZpbiwgIkdFVCAlcyBIVFRQLzEu
 MFxyXG4iLCBwYXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4sICJHRVQgJXMgSFRUUC8xLjBcclxu
 IiwgcGF0aCk7CiAJCQlpZiAoZmx1c2hjYWNoZSkKLQkJCQlmcHJpbnRmKGZpbiwgIlByYWdtYTog
 bm8tY2FjaGVcclxuIik7CisJCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlByYWdtYTogbm8tY2FjaGVc
 clxuIik7CiAJCX0gZWxzZSB7Ci0JCQlmcHJpbnRmKGZpbiwgIkdFVCAlcyBIVFRQLzEuMVxyXG4i
 LCBwYXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4sICJHRVQgJXMgSFRUUC8xLjFcclxuIiwgcGF0
 aCk7CiAJCQlpZiAoc3RyY2hyKGhvc3QsICc6JykpIHsKIAkJCQljaGFyICpoLCAqcDsKIApAQCAt
 NzgyLDE4ICsxNDE2LDIzIEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIg
 KnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJICAgIChwID0g
 c3RyY2hyKGgsICclJykpICE9IE5VTEwpIHsKIAkJCQkJKnAgPSAnXDAnOwogCQkJCX0KLQkJCQlm
 cHJpbnRmKGZpbiwgIkhvc3Q6IFslc10iLCBoKTsKKwkJCQlmZXRjaF9wcmludGYoZmluLCAiSG9z
 dDogWyVzXSIsIGgpOwogCQkJCWZyZWUoaCk7CiAJCQl9IGVsc2UKLQkJCQlmcHJpbnRmKGZpbiwg
 Ikhvc3Q6ICVzIiwgaG9zdCk7CisJCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIkhvc3Q6ICVzIiwgaG9z
 dCk7CisjaWZkZWYgV0lUSF9TU0wKKwkJCWlmICgodXJsdHlwZSA9PSBIVFRQX1VSTF9UICYmIHBv
 cnRudW0gIT0gSFRUUF9QT1JUKSB8fAorCQkJICAgICh1cmx0eXBlID09IEhUVFBTX1VSTF9UICYm
 IHBvcnRudW0gIT0gSFRUUFNfUE9SVCkpCisjZWxzZQogCQkJaWYgKHBvcnRudW0gIT0gSFRUUF9Q
 T1JUKQotCQkJCWZwcmludGYoZmluLCAiOiV1IiwgcG9ydG51bSk7Ci0JCQlmcHJpbnRmKGZpbiwg
 IlxyXG4iKTsKLQkJCWZwcmludGYoZmluLCAiQWNjZXB0OiAqLypcclxuIik7Ci0JCQlmcHJpbnRm
 KGZpbiwgIkNvbm5lY3Rpb246IGNsb3NlXHJcbiIpOworI2VuZGlmCisJCQkJZmV0Y2hfcHJpbnRm
 KGZpbiwgIjoldSIsIHBvcnRudW0pOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlxyXG4iKTsKKwkJ
 CWZldGNoX3ByaW50ZihmaW4sICJBY2NlcHQ6ICovKlxyXG4iKTsKKwkJCWZldGNoX3ByaW50Zihm
 aW4sICJDb25uZWN0aW9uOiBjbG9zZVxyXG4iKTsKIAkJCWlmIChyZXN0YXJ0X3BvaW50KSB7CiAJ
 CQkJZnB1dHMobGVhZGluZywgdHR5b3V0KTsKLQkJCQlmcHJpbnRmKGZpbiwgIlJhbmdlOiBieXRl
 cz0iIExMRiAiLVxyXG4iLAorCQkJCWZwcmludGYodHR5b3V0LCAiUmFuZ2U6IGJ5dGVzPSIgTExG
 ICItXHJcbiIsCiAJCQkJICAgIChMTFQpcmVzdGFydF9wb2ludCk7CiAJCQkJZnByaW50Zih0dHlv
 dXQsICJyZXN0YXJ0aW5nIGF0ICIgTExGLAogCQkJCSAgICAoTExUKXJlc3RhcnRfcG9pbnQpOwpA
 QCAtODAxLDEyICsxNDQwLDEyIEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNo
 YXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJaGFzbGVh
 ZGluZysrOwogCQkJfQogCQkJaWYgKGZsdXNoY2FjaGUpCi0JCQkJZnByaW50ZihmaW4sICJDYWNo
 ZS1Db250cm9sOiBuby1jYWNoZVxyXG4iKTsKKwkJCQlmZXRjaF9wcmludGYoZmluLCAiQ2FjaGUt
 Q29udHJvbDogbm8tY2FjaGVcclxuIik7CiAJCX0KIAkJaWYgKCh1c2VyYWdlbnQ9Z2V0ZW52KCJG
 VFBVU0VSQUdFTlQiKSkgIT0gTlVMTCkgewotCQkJZnByaW50ZihmaW4sICJVc2VyLUFnZW50OiAl
 c1xyXG4iLCB1c2VyYWdlbnQpOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlVzZXItQWdlbnQ6ICVz
 XHJcbiIsIHVzZXJhZ2VudCk7CiAJCX0gZWxzZSB7Ci0JCQlmcHJpbnRmKGZpbiwgIlVzZXItQWdl
 bnQ6ICVzLyVzXHJcbiIsCisJCQlmZXRjaF9wcmludGYoZmluLCAiVXNlci1BZ2VudDogJXMvJXNc
 clxuIiwKIAkJCSAgICBGVFBfUFJPRFVDVCwgRlRQX1ZFUlNJT04pOwogCQl9CiAJCWlmICh3d3dh
 dXRoKSB7CkBAIC04MTYsNyArMTQ1NSw3IEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNv
 bnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAJCQkJ
 bGVhZGluZyA9ICIsICI7CiAJCQkJaGFzbGVhZGluZysrOwogCQkJfQotCQkJZnByaW50ZihmaW4s
 ICJBdXRob3JpemF0aW9uOiAlc1xyXG4iLCB3d3dhdXRoKTsKKwkJCWZldGNoX3ByaW50ZihmaW4s
 ICJBdXRob3JpemF0aW9uOiAlc1xyXG4iLCB3d3dhdXRoKTsKIAkJfQogCQlpZiAocHJveHlhdXRo
 KSB7CiAJCQlpZiAodmVyYm9zZSkgewpAQCAtODI1LDE4ICsxNDY0LDE4IEBAIGZldGNoX3VybChj
 b25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNo
 YXIgKnd3d2F1dGgpCiAJCQkJbGVhZGluZyA9ICIsICI7CiAJCQkJaGFzbGVhZGluZysrOwogCQkJ
 fQotCQkJZnByaW50ZihmaW4sICJQcm94eS1BdXRob3JpemF0aW9uOiAlc1xyXG4iLCBwcm94eWF1
 dGgpOworCQkJZmV0Y2hfcHJpbnRmKGZpbiwgIlByb3h5LUF1dGhvcml6YXRpb246ICVzXHJcbiIs
 IHByb3h5YXV0aCk7CiAJCX0KIAkJaWYgKHZlcmJvc2UgJiYgaGFzbGVhZGluZykKIAkJCWZwdXRz
 KCIpXG4iLCB0dHlvdXQpOwotCQlmcHJpbnRmKGZpbiwgIlxyXG4iKTsKLQkJaWYgKGZmbHVzaChm
 aW4pID09IEVPRikgeworCQlmZXRjaF9wcmludGYoZmluLCAiXHJcbiIpOworCQlpZiAoZmV0Y2hf
 Zmx1c2goZmluKSA9PSBFT0YpIHsKIAkJCXdhcm4oIldyaXRpbmcgSFRUUCByZXF1ZXN0Iik7CiAJ
 CQlnb3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCQl9CiAKIAkJCQkvKiBSZWFkIHRoZSByZXNwb25z
 ZSAqLwotCQlsZW4gPSBnZXRfbGluZShmaW4sIGJ1Ziwgc2l6ZW9mKGJ1ZiksICZlcnJvcm1zZyk7
 CisJCWxlbiA9IGZldGNoX2dldGxpbmUoZmluLCBidWYsIHNpemVvZihidWYpLCAmZXJyb3Jtc2cp
 OwogCQlpZiAobGVuIDwgMCkgewogCQkJaWYgKCplcnJvcm1zZyA9PSAnXG4nKQogCQkJCWVycm9y
 bXNnKys7CkBAIC04NjAsNyArMTQ5OSw3IEBAIGZldGNoX3VybChjb25zdCBjaGFyICp1cmwsIGNv
 bnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1dGgpCiAKIAkJ
 CQkvKiBSZWFkIHRoZSByZXN0IG9mIHRoZSBoZWFkZXIuICovCiAJCXdoaWxlICgxKSB7Ci0JCQls
 ZW4gPSBnZXRfbGluZShmaW4sIGJ1Ziwgc2l6ZW9mKGJ1ZiksICZlcnJvcm1zZyk7CisJCQlsZW4g
 PSBmZXRjaF9nZXRsaW5lKGZpbiwgYnVmLCBzaXplb2YoYnVmKSwgJmVycm9ybXNnKTsKIAkJCWlm
 IChsZW4gPCAwKSB7CiAJCQkJaWYgKCplcnJvcm1zZyA9PSAnXG4nKQogCQkJCQllcnJvcm1zZysr
 OwpAQCAtMTE0OCw3ICsxNzg3LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3Qg
 Y2hhciAqcHJveHllbnYsIGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJbGFzdGNo
 dW5rID0gMDsKIAkJCQkJLyogcmVhZCBjaHVuay1zaXplICovCiAJCWlmIChpc2NodW5rZWQpIHsK
 LQkJCWlmIChmZ2V0cyh4ZmVyYnVmLCBidWZzaXplLCBmaW4pID09IE5VTEwpIHsKKwkJCWlmIChm
 ZXRjaF9nZXRsbih4ZmVyYnVmLCBidWZzaXplLCBmaW4pID09IE5VTEwpIHsKIAkJCQl3YXJueCgi
 VW5leHBlY3RlZCBFT0YgcmVhZGluZyBjaHVuay1zaXplIik7CiAJCQkJZ290byBjbGVhbnVwX2Zl
 dGNoX3VybDsKIAkJCX0KQEAgLTEyMDEsNyArMTg0MCw3IEBAIGZldGNoX3VybChjb25zdCBjaGFy
 ICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgsIGNoYXIgKnd3d2F1
 dGgpCiAJCQlpZiAoaXNjaHVua2VkKQogCQkJCWJ1ZnJlbSA9IE1JTihjaHVua3NpemUsIGJ1ZnJl
 bSk7CiAJCQl3aGlsZSAoYnVmcmVtID4gMCkgewotCQkJCWZsZW4gPSBmcmVhZCh4ZmVyYnVmLCBz
 aXplb2YoY2hhciksCisJCQkJZmxlbiA9IGZldGNoX3JlYWQoeGZlcmJ1Ziwgc2l6ZW9mKGNoYXIp
 LAogCQkJCSAgICBNSU4oKG9mZl90KWJ1ZnNpemUsIGJ1ZnJlbSksIGZpbik7CiAJCQkJaWYgKGZs
 ZW4gPD0gMCkKIAkJCQkJZ290byBjaHVua2RvbmU7CkBAIC0xMjQwLDcgKzE4NzksNyBAQCBmZXRj
 aF91cmwoY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpwcm94eWVudiwgY2hhciAqcHJveHlh
 dXRoLCBjaGFyICp3d3dhdXRoKQogCQkJCQkvKiByZWFkIENSTEYgYWZ0ZXIgY2h1bmsqLwogIGNo
 dW5rZG9uZToKIAkJaWYgKGlzY2h1bmtlZCkgewotCQkJaWYgKGZnZXRzKHhmZXJidWYsIGJ1ZnNp
 emUsIGZpbikgPT0gTlVMTCkgeworCQkJaWYgKGZldGNoX2dldGxuKHhmZXJidWYsIGJ1ZnNpemUs
 IGZpbikgPT0gTlVMTCkgewogCQkJCXdhcm54KCJVbmV4cGVjdGVkIEVPRiByZWFkaW5nIGNodW5r
 IENSTEYiKTsKIAkJCQlnb3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCQkJfQpAQCAtMTI2MCw3ICsx
 ODk5LDcgQEAgZmV0Y2hfdXJsKGNvbnN0IGNoYXIgKnVybCwgY29uc3QgY2hhciAqcHJveHllbnYs
 IGNoYXIgKnByb3h5YXV0aCwgY2hhciAqd3d3YXV0aCkKIAkJCSh2b2lkKXB1dGMoJyMnLCB0dHlv
 dXQpOwogCQkodm9pZClwdXRjKCdcbicsIHR0eW91dCk7CiAJfQotCWlmIChmZXJyb3IoZmluKSkg
 eworCWlmIChmZXRjaF9lcnJvcihmaW4pKSB7CiAJCXdhcm4oIlJlYWRpbmcgZmlsZSIpOwogCQln
 b3RvIGNsZWFudXBfZmV0Y2hfdXJsOwogCX0KQEAgLTEyOTcsNyArMTkzNiw3IEBAIGZldGNoX3Vy
 bChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKnByb3h5ZW52LCBjaGFyICpwcm94eWF1dGgs
 IGNoYXIgKnd3d2F1dGgpCiAJaWYgKG9sZGludHApCiAJCSh2b2lkKXhzaWduYWwoU0lHUElQRSwg
 b2xkaW50cCk7CiAJaWYgKGZpbiAhPSBOVUxMKQotCQlmY2xvc2UoZmluKTsKKwkJZmV0Y2hfY2xv
 c2UoZmluKTsKIAllbHNlIGlmIChzICE9IC0xKQogCQljbG9zZShzKTsKIAlpZiAoY2xvc2VmdW5j
 ICE9IE5VTEwgJiYgZm91dCAhPSBOVUxMKQpAQCAtMTcyOSw3ICsyMzY4LDExIEBAIGdvX2ZldGNo
 KGNvbnN0IGNoYXIgKnVybCkKIAkvKgogCSAqIENoZWNrIGZvciBmaWxlOi8vIGFuZCBodHRwOi8v
 IFVSTHMuCiAJICovCi0JaWYgKFNUUk5FUVVBTCh1cmwsIEhUVFBfVVJMKSB8fCBTVFJORVFVQUwo
 dXJsLCBGSUxFX1VSTCkpCisJaWYgKFNUUk5FUVVBTCh1cmwsIEhUVFBfVVJMKQorI2lmZGVmIFdJ
 VEhfU1NMCisJICAgIHx8IFNUUk5FUVVBTCh1cmwsIEhUVFBTX1VSTCkKKyNlbmRpZgorCSAgICB8
 fCBTVFJORVFVQUwodXJsLCBGSUxFX1VSTCkpCiAJCXJldHVybiAoZmV0Y2hfdXJsKHVybCwgTlVM
 TCwgTlVMTCwgTlVMTCkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3Vzci5iaW4vZnRwL2Z0cF92YXIu
 aCBiL3Vzci5iaW4vZnRwL2Z0cF92YXIuaAppbmRleCBkYjUwMWNmLi44MTk5Yjc4IDEwMDY0NAot
 LS0gYS91c3IuYmluL2Z0cC9mdHBfdmFyLmgKKysrIGIvdXNyLmJpbi9mdHAvZnRwX3Zhci5oCkBA
 IC0xNzcsNiArMTc3LDcgQEAgZW51bSB7CiAKICNkZWZpbmUJRlRQX1BPUlQJMjEJLyogZGVmYXVs
 dCBpZiAhIGdldHNlcnZieW5hbWUoImZ0cC90Y3AiKSAqLwogI2RlZmluZQlIVFRQX1BPUlQJODAJ
 LyogZGVmYXVsdCBpZiAhIGdldHNlcnZieW5hbWUoImh0dHAvdGNwIikgKi8KKyNkZWZpbmUJSFRU
 UFNfUE9SVAk0NDMJLyogZGVmYXVsdCBpZiAhIGdldHNlcnZieW5hbWUoImh0dHBzL3RjcCIpICov
 CiAjaWZuZGVmCUdBVEVfUE9SVAogI2RlZmluZQlHQVRFX1BPUlQJMjEJLyogZGVmYXVsdCBpZiAh
 IGdldHNlcnZieW5hbWUoImZ0cGdhdGUvdGNwIikgKi8KICNlbmRpZgpAQCAtMjczLDYgKzI3NCw5
 IEBAIEdMT0JBTAljaGFyICAgKnVzZXJuYW1lOwkvKiBuYW1lIG9mIHVzZXIgbG9nZ2VkIGluIGFz
 LiAoZHluYW1pYykgKi8KIEdMT0JBTAlzYV9mYW1pbHlfdCBmYW1pbHk7CS8qIGFkZHJlc3MgZmFt
 aWx5IHRvIHVzZSBmb3IgY29ubmVjdGlvbnMgKi8KIEdMT0JBTAljb25zdCBjaGFyICpmdHBwb3J0
 OwkvKiBwb3J0IG51bWJlciB0byB1c2UgZm9yIEZUUCBjb25uZWN0aW9ucyAqLwogR0xPQkFMCWNv
 bnN0IGNoYXIgKmh0dHBwb3J0OwkvKiBwb3J0IG51bWJlciB0byB1c2UgZm9yIEhUVFAgY29ubmVj
 dGlvbnMgKi8KKyNpZmRlZiBXSVRIX1NTTAorR0xPQkFMCWNvbnN0IGNoYXIgKmh0dHBzcG9ydDsJ
 LyogcG9ydCBudW1iZXIgdG8gdXNlIGZvciBIVFRQUyBjb25uZWN0aW9ucyAqLworI2VuZGlmCiBH
 TE9CQUwJY29uc3QgY2hhciAqZ2F0ZXBvcnQ7CS8qIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3IgZ2F0
 ZWZ0cCBjb25uZWN0aW9ucyAqLwogR0xPQkFMCXN0cnVjdCBhZGRyaW5mbyAqYmluZGFpOyAvKiBs
 b2NhbCBhZGRyZXNzIHRvIGJpbmQgYXMgKi8KIApkaWZmIC0tZ2l0IGEvdXNyLmJpbi9mdHAvbWFp
 bi5jIGIvdXNyLmJpbi9mdHAvbWFpbi5jCmluZGV4IDU4MjM0ZWUuLmMwZjY5MmIgMTAwNjQ0Ci0t
 LSBhL3Vzci5iaW4vZnRwL21haW4uYworKysgYi91c3IuYmluL2Z0cC9tYWluLmMKQEAgLTE1MCw2
 ICsxNTAsOSBAQCBtYWluKGludCB2b2xhdGlsZSBhcmdjLCBjaGFyICoqdm9sYXRpbGUgYXJndikK
 IAogCWZ0cHBvcnQgPSAiZnRwIjsKIAlodHRwcG9ydCA9ICJodHRwIjsKKyNpZmRlZiBXSVRIX1NT
 TAorCWh0dHBzcG9ydCA9ICJodHRwcyI7CisjZW5kaWYKIAlnYXRlcG9ydCA9IE5VTEw7CiAJY3Ag
 PSBnZXRlbnYoIkZUUFNFUlZFUlBPUlQiKTsKIAlpZiAoY3AgIT0gTlVMTCkKQEAgLTEwNDQsNiAr
 MTA0Nyw5IEBAIHVzYWdlKHZvaWQpCiAiICAgICAgICAgICBbW3VzZXJAXWhvc3QgW3BvcnRdXSBb
 aG9zdDpwYXRoWy9dXSBbZmlsZTovLy9maWxlXVxuIgogIiAgICAgICAgICAgW2Z0cDovL1t1c2Vy
 WzpwYXNzXUBdaG9zdFs6cG9ydF0vcGF0aFsvXV1cbiIKICIgICAgICAgICAgIFtodHRwOi8vW3Vz
 ZXJbOnBhc3NdQF1ob3N0Wzpwb3J0XS9wYXRoXSBbLi4uXVxuIgorI2lmZGVmIFdJVEhfU1NMCisi
 ICAgICAgICAgICBbaHR0cHM6Ly9bdXNlcls6cGFzc11AXWhvc3RbOnBvcnRdL3BhdGhdIFsuLi5d
 XG4iCisjZW5kaWYKICIgICAgICAgJXMgLXUgVVJMIGZpbGUgWy4uLl1cbiIsIHByb2duYW1lLCBw
 cm9nbmFtZSk7CiAJZXhpdCgxKTsKIH0K
 --e89a8f923f3aff7bb104cffeee57--
 



Home | Main Index | Thread Index | Old Index