NetBSD-Bugs archive

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

Re: bin/57953



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

From: Attaullah <mdattaullahansari152%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: bin/57953
Date: Thu, 16 Jan 2025 21:07:57 +0530

 --000000000000bfefb1062bd49425
 Content-Type: multipart/alternative; boundary="000000000000bfefb0062bd49423"
 
 --000000000000bfefb0062bd49423
 Content-Type: text/plain; charset="UTF-8"
 
 I have developed a getnameinfo(1) utility as requested in this PR and am
 submitting a patch for it.
 
 This patch adds a new `getnameinfo(1)` utility, similar to
 `getaddrinfo(1)`, which wraps the `getnameinfo(3)` C API. It supports
 various options for resolving IP addresses and ports to hostnames and
 service names.
 
 I have tested the utility on NetBSD 10 with IPv4 and IPv6 addresses,
 different port numbers, and various flag combinations. The patch was
 generated using `git format-patch HEAD^` and is attached to this comment.
 Thank you for your time and consideration.
 
 --000000000000bfefb0062bd49423
 Content-Type: text/html; charset="UTF-8"
 
 <div dir="ltr"><div>I have developed a getnameinfo(1) utility as requested in this PR and am submitting a patch for it.</div><div><br></div><div>This patch adds a new `getnameinfo(1)` utility, similar to `getaddrinfo(1)`, 
 which wraps the `getnameinfo(3)` C API. It supports various options for 
 resolving IP addresses and ports to hostnames and service names.</div><div><br></div><div>I have tested the utility 
 on NetBSD 10 with IPv4 and IPv6 addresses, different port numbers, and 
 various flag combinations.
 
 The patch was generated using `git format-patch HEAD^` and is attached to this comment.
 
 Thank you for your time and consideration.</div></div>
 
 --000000000000bfefb0062bd49423--
 --000000000000bfefb1062bd49425
 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-getnameinfo-utility.patch"
 Content-Disposition: attachment; 
 	filename="0001-Add-getnameinfo-utility.patch"
 Content-Transfer-Encoding: base64
 Content-ID: <f_m5zhrrg30>
 X-Attachment-Id: f_m5zhrrg30
 
 RnJvbSBlMTAyODE5YjhkOWQ4ZGU0ZmFlOWQ5Yjg3Y2E2NTE2ZTYwOTg2MmU4IE1vbiBTZXAgMTcg
 MDA6MDA6MDAgMjAwMQpGcm9tOiBhdHRhdWxsYWggPG1kYXR0YXVsbGFoYW5zYXJpMTUyQGdtYWls
 LmNvbT4KRGF0ZTogVGh1LCAxNiBKYW4gMjAyNSAyMDo0MzoyOSArMDUzMApTdWJqZWN0OiBbUEFU
 Q0hdIEFkZCBnZXRuYW1laW5mbyB1dGlsaXR5CgotLS0KIGRpc3RyaWIvc2V0cy9saXN0cy9iYXNl
 L21pICAgICAgICB8ICAgMSArCiBkaXN0cmliL3NldHMvbGlzdHMvZGVidWcvbWkgICAgICAgfCAg
 IDEgKwogZGlzdHJpYi9zZXRzL2xpc3RzL21hbi9taSAgICAgICAgIHwgICAyICsKIGRpc3RyaWIv
 c2V0cy9saXN0cy9tYW5odG1sL21pICAgICB8ICAgMSArCiB1c3IuYmluL01ha2VmaWxlICAgICAg
 ICAgICAgICAgICAgfCAgIDIgKy0KIHVzci5iaW4vZ2V0bmFtZWluZm8vTWFrZWZpbGUgICAgICB8
 ICAgOSArKwogdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby4xIHwgMTM0ICsrKysrKysr
 KysrKysrKysKIHVzci5iaW4vZ2V0bmFtZWluZm8vZ2V0bmFtZWluZm8uYyB8IDI1NCArKysrKysr
 KysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNDAzIGluc2VydGlvbnMo
 KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1c3IuYmluL2dldG5hbWVpbmZv
 L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1l
 aW5mby4xCiBjcmVhdGUgbW9kZSAxMDA2NDQgdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5m
 by5jCgpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9zZXRzL2xpc3RzL2Jhc2UvbWkgYi9kaXN0cmliL3Nl
 dHMvbGlzdHMvYmFzZS9taQppbmRleCA5MDFmYzQ3NGExNzcuLmNhZDgwY2MwZjZlMCAxMDA2NDQK
 LS0tIGEvZGlzdHJpYi9zZXRzL2xpc3RzL2Jhc2UvbWkKKysrIGIvZGlzdHJpYi9zZXRzL2xpc3Rz
 L2Jhc2UvbWkKQEAgLTYyNCw2ICs2MjQsNyBAQAogLi91c3IvYmluL2dldGNvbmYJCQkJYmFzZS11
 dGlsLWJpbgogLi91c3IvYmluL2dldGVudAkJCQliYXNlLXV0aWwtYmluCiAuL3Vzci9iaW4vZ2V0
 ZXh0YXR0cgkJCQliYXNlLXV0aWwtYmluCisuL3Vzci9iaW4vZ2V0bmFtZWluZm8JCQkJYmFzZS1u
 ZXR1dGlsLWJpbgogLi91c3IvYmluL2dldG9wdAkJCQliYXNlLXV0aWwtYmluCiAuL3Vzci9iaW4v
 Z2tlcm1pdAkJCQliYXNlLW9ic29sZXRlCQlvYnNvbGV0ZQogLi91c3IvYmluL2dyZXAJCQkJCWJh
 c2UtdXRpbC1iaW4KZGlmZiAtLWdpdCBhL2Rpc3RyaWIvc2V0cy9saXN0cy9kZWJ1Zy9taSBiL2Rp
 c3RyaWIvc2V0cy9saXN0cy9kZWJ1Zy9taQppbmRleCA2NzQ1YzVlNjM1MjkuLmVmN2JhMGY3NmE0
 ZiAxMDA2NDQKLS0tIGEvZGlzdHJpYi9zZXRzL2xpc3RzL2RlYnVnL21pCisrKyBiL2Rpc3RyaWIv
 c2V0cy9saXN0cy9kZWJ1Zy9taQpAQCAtNTgzLDYgKzU4Myw3IEBACiAuL3Vzci9saWJkYXRhL2Rl
 YnVnL3Vzci9iaW4vZ2V0Y29uZi5kZWJ1Zwljb21wLXV0aWwtZGVidWcJCWRlYnVnCiAuL3Vzci9s
 aWJkYXRhL2RlYnVnL3Vzci9iaW4vZ2V0ZW50LmRlYnVnCWNvbXAtdXRpbC1kZWJ1ZwkJZGVidWcK
 IC4vdXNyL2xpYmRhdGEvZGVidWcvdXNyL2Jpbi9nZXRleHRhdHRyLmRlYnVnCWNvbXAtdXRpbC1k
 ZWJ1ZwkJZGVidWcKKy4vdXNyL2xpYmRhdGEvZGVidWcvdXNyL2Jpbi9nZXRuYW1laW5mby5kZWJ1
 Zwljb21wLXV0aWwtZGVidWcJCWRlYnVnCiAuL3Vzci9saWJkYXRhL2RlYnVnL3Vzci9iaW4vZ2V0
 b3B0LmRlYnVnCWNvbXAtdXRpbC1kZWJ1ZwkJZGVidWcKIC4vdXNyL2xpYmRhdGEvZGVidWcvdXNy
 L2Jpbi9nZXR0ZXh0LmRlYnVnCWNvbXAtYy1kZWJ1ZwkJZGVidWcKIC4vdXNyL2xpYmRhdGEvZGVi
 dWcvdXNyL2Jpbi9na2VybWl0LmRlYnVnCWNvbXAtb2Jzb2xldGUJCWRlYnVnLG9ic29sZXRlCmRp
 ZmYgLS1naXQgYS9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pIGIvZGlzdHJpYi9zZXRzL2xpc3Rz
 L21hbi9taQppbmRleCA0NzZkOWMxNTVhMWQuLjc4ODMyNWU2ODI5OCAxMDA2NDQKLS0tIGEvZGlz
 dHJpYi9zZXRzL2xpc3RzL21hbi9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pCkBA
 IC0yMDEsNiArMjAxLDcgQEAKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2dldGVudC4wCQkJbWFuLXV0
 aWwtY2F0bWFuCQkuY2F0CiAuL3Vzci9zaGFyZS9tYW4vY2F0MS9nZXRleHRhdHRyLjAJCW1hbi11
 dGlsLWNhdG1hbgkJLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDEvZ2V0ZmFjbC4wCQkJbWFuLXV0
 aWwtY2F0bWFuCQkuY2F0CisuL3Vzci9zaGFyZS9tYW4vY2F0MS9nZXRuYW1laW5mby4wCQltYW4t
 bmV0dXRpbC1jYXRtYW4JLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDEvZ2V0b3B0LjAJCQltYW4t
 dXRpbC1jYXRtYW4JCS5jYXQKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2dldHRleHQuMAkJCW1hbi1s
 b2NhbGUtY2F0bWFuCS5jYXQKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2drZXJtaXQuMAkJCW1hbi1v
 YnNvbGV0ZQkJLmNhdCxvYnNvbGV0ZQpAQCAtMzc2Nyw2ICszNzY4LDcgQEAKIC4vdXNyL3NoYXJl
 L21hbi9tYW4xL2dldGVudC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCiAuL3Vzci9zaGFyZS9tYW4v
 bWFuMS9nZXRleHRhdHRyLjEJCW1hbi11dGlsLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21h
 bjEvZ2V0ZmFjbC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCisuL3Vzci9zaGFyZS9tYW4vbWFuMS9n
 ZXRuYW1laW5mby4xCQltYW4tbmV0dXRpbC1tYW4JCS5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW4x
 L2dldG9wdC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCiAuL3Vzci9zaGFyZS9tYW4vbWFuMS9nZXR0
 ZXh0LjEJCQltYW4tbG9jYWxlLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21hbjEvZ2tlcm1p
 dC4xCQkJbWFuLW9ic29sZXRlCQkubWFuLG9ic29sZXRlCmRpZmYgLS1naXQgYS9kaXN0cmliL3Nl
 dHMvbGlzdHMvbWFuaHRtbC9taSBiL2Rpc3RyaWIvc2V0cy9saXN0cy9tYW5odG1sL21pCmluZGV4
 IDYwOGZkYzNmNDRkMC4uMGFjYTJmNGRiMDRlIDEwMDY0NAotLS0gYS9kaXN0cmliL3NldHMvbGlz
 dHMvbWFuaHRtbC9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuaHRtbC9taQpAQCAtMTYx
 LDYgKzE2MSw3IEBACiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0ZW50Lmh0bWwJCW1hbi11dGls
 LWh0bWxtYW4JaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWwxL2dldGV4dGF0dHIuaHRtbAkJbWFu
 LXV0aWwtaHRtbG1hbglodG1sCiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0ZmFjbC5odG1sCQlt
 YW4tdXRpbC1odG1sbWFuCWh0bWwKKy4vdXNyL3NoYXJlL21hbi9odG1sMS9nZXRuYW1laW5mby5o
 dG1sCQltYW4tdXRpbC1odG1sbWFuCWh0bWwKIC4vdXNyL3NoYXJlL21hbi9odG1sMS9nZXRvcHQu
 aHRtbAkJbWFuLXV0aWwtaHRtbG1hbglodG1sCiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0dGV4
 dC5odG1sCQltYW4tbG9jYWxlLWh0bWxtYW4JaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWwxL2dr
 ZXJtaXQuaHRtbAkJbWFuLW9ic29sZXRlCQlodG1sLG9ic29sZXRlCmRpZmYgLS1naXQgYS91c3Iu
 YmluL01ha2VmaWxlIGIvdXNyLmJpbi9NYWtlZmlsZQppbmRleCAyMzBiZmQ3YTgzMGUuLjdhMWY2
 NmYyNWMzOSAxMDA2NDQKLS0tIGEvdXNyLmJpbi9NYWtlZmlsZQorKysgYi91c3IuYmluL01ha2Vm
 aWxlCkBAIC0xMiw3ICsxMiw3IEBAIFNVQkRJUj0gYWlvbWl4ZXIgYXBwbHkgYXNhIGF0IGF1ZGlv
 IGF1ZGlvY2ZnIFwKIAllamVjdCBlbGYyYW91dCBlbGYyZWNvZmYgZW52IGVycm9yIGV4cGFuZCBl
 eHRhdHRyIFwKIAlmYWxzZSBmZGZvcm1hdCBmZ2VuIGZpbmNvcmUgZmluZCBmaW5nZXIgZmxvY2sg
 Zm10IGZvbGQgZnByIGZyb20gXAogCWZzcGxpdCBmc3RhdCBmdHAgZ2NvcmUgZ2VuYXNzeW0gZ2Vu
 Y2F0IGdldGFkZHJpbmZvIGdldGNvbmYgZ2V0ZW50IFwKLQlnZXRvcHQgZ2V0dGV4dCBncHJvZiBc
 CisJZ2V0bmFtZWluZm8gZ2V0b3B0IGdldHRleHQgZ3Byb2YgXAogCWhlYWQgaGV4ZHVtcCBpY29u
 diBpZCBpbmRlbnQgaW5mb2NtcCBpbm5ldGdyIGlwY3JtIGlwY3Mgam9pbiBqb3QgXAogCWtkdW1w
 IGt0cmFjZSBrdHJ1c3MgbGFtIGxhc3QgbGFzdGNvbW0gbGRkIGxlYXZlIFwKIAlsb2NhbGUgbG9j
 YXRlIGxvY2sgbG9nZ2VyIGxvZ2luIGxvZ25hbWUgbG9vayBsb3JkZXIgbTQgXApkaWZmIC0tZ2l0
 IGEvdXNyLmJpbi9nZXRuYW1laW5mby9NYWtlZmlsZSBiL3Vzci5iaW4vZ2V0bmFtZWluZm8vTWFr
 ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZjdjYTdlYWZl
 NjEKLS0tIC9kZXYvbnVsbAorKysgYi91c3IuYmluL2dldG5hbWVpbmZvL01ha2VmaWxlCkBAIC0w
 LDAgKzEsOSBAQAorIyAkTmV0QlNEOiBNYWtlZmlsZSx2IDEuMCAyMDI1LzAxLzE2IDAzOjEzOjE0
 IGF0dGF1bGxhaCBFeHAgJAorCisuaW5jbHVkZSA8YnNkLm93bi5taz4KKworUFJPRwkJPSBnZXRu
 YW1laW5mbworCitXQVJOUwkJPSA1CisKKy5pbmNsdWRlIDxic2QucHJvZy5taz4KZGlmZiAtLWdp
 dCBhL3Vzci5iaW4vZ2V0bmFtZWluZm8vZ2V0bmFtZWluZm8uMSBiL3Vzci5iaW4vZ2V0bmFtZWlu
 Zm8vZ2V0bmFtZWluZm8uMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
 LjlhNGY5NWYxZWM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Vzci5iaW4vZ2V0bmFtZWluZm8vZ2V0
 bmFtZWluZm8uMQpAQCAtMCwwICsxLDEzNCBAQAorLlwiICROZXRCU0Q6IGdldG5hbWVpbmZvLjEs
 diAxLjAgMjAyNS8wMS8xNiAwMTo1MjozMCBhdHRhdWxsYWggRXhwICQKKy5cIgorLlwiIENvcHly
 aWdodCAoYykgMjAyNSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4KKy5cIiBBbGwgcmlnaHRz
 IHJlc2VydmVkLgorLlwiCisuXCIgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0
 ZXh0IGNvbnRyaWJ1dGVkIHRvIFRoZSBOZXRCU0QKKy5cIiBGb3VuZGF0aW9uIGJ5IEF0dGF1bGxh
 aCBBbnNhcmkuCisuXCIKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
 YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
 aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0
 OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
 YWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
 bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
 aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90
 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
 IGluIHRoZQorLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
 aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisuXCIKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBS
 T1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTCisu
 XCIgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
 RElORywgQlVUIE5PVCBMSU1JVEVECisuXCIgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
 TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy5cIiBQVVJQT1NF
 IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09O
 VFJJQlVUT1JTCisuXCIgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
 TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorLlwiIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
 SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisuXCIgU1VCU1RJ
 VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
 IEJVU0lORVNTCisuXCIgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
 RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKy5cIiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
 TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorLlwiIEFS
 SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
 IEFEVklTRUQgT0YgVEhFCisuXCIgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisuXCIKKy5E
 ZCBKYW51YXJ5IDE2LCAyMDI1CisuRHQgR0VUTkFNRUlORk8gMQorLk9zCisuU2ggTkFNRQorLk5t
 IGdldG5hbWVpbmZvCisuTmQgcmVzb2x2ZSBJUCBhZGRyZXNzZXMgYW5kIHBvcnRzIHRvIGhvc3Qg
 YW5kIHNlcnZpY2UgbmFtZXMKKy5TaCBTWU5PUFNJUworLk5tCisuT3AgRmwgNDZydWZuTkhTCisu
 T3AgRmwgcCBBciBwb3J0CisuQXIgSVAtYWRkcmVzcworLlNoIERFU0NSSVBUSU9OCitUaGUKKy5O
 bQordXRpbGl0eSByZXNvbHZlcyBJUCBhZGRyZXNzZXMgYW5kIHBvcnQgbnVtYmVycyB0byBob3N0
 bmFtZXMgYW5kIHNlcnZpY2UgbmFtZXMKK2FzIGlmIHdpdGggdGhlCisuWHIgZ2V0bmFtZWluZm8g
 MworbGlicmFyeSByb3V0aW5lIGFuZCBmb3JtYXRzIHRoZW0gdG8gc3RhbmRhcmQgb3V0cHV0Lgor
 LlBwCitUaGUgb3V0cHV0IGlzIGEgc2luZ2xlIGxpbmUgb2Ygc3BhY2Utc2VwYXJhdGVkIGZpZWxk
 czoKKy5QcAorLkRsIGhvc3RuYW1lIHNlcnZpY2UKKy5QcAorRGVwZW5kaW5nIG9uIHRoZSBmbGFn
 cyBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgbWF5IGNvbnNpc3Qgb25seSBvZiB0aGUgaG9zdG5hbWUK
 K29yIHNlcnZpY2UgbmFtZSwgb3IgdGhlaXIgbnVtZXJpYyByZXByZXNlbnRhdGlvbnMuIEJ5IGRl
 ZmF1bHQsIGJvdGggYXJlIHNob3duLgorLlBwCitBbHRob3VnaAorLk5tCittYXkgcXVlcnkgdGhl
 IEROUyBvciBvdGhlciBzb3VyY2VzIGZvciBuYW1lIHJlc29sdXRpb24gZGVwZW5kaW5nIG9uIHRo
 ZSBzeXN0ZW0ncworLlhyIG5zc3dpdGNoLmNvbmYgNQorY29uZmlndXJhdGlvbiwgaXQgaXMgbm90
 IGludGVuZGVkIHRvIHJlcGxhY2UgRE5TLXNwZWNpZmljIHRvb2xzIGxpa2UKKy5YciBkaWcgMSAu
 CisuUHAKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorLkJsIC10YWcgLXdp
 ZHRoIERzCisuSXQgRmwgNAorUmVzdHJpY3QgdGhlIGxvb2t1cCB0byBJUHY0IGFkZHJlc3NlcyBv
 bmx5LgorLkl0IEZsIDYKK1Jlc3RyaWN0IHRoZSBsb29rdXAgdG8gSVB2NiBhZGRyZXNzZXMgb25s
 eS4KKy5JdCBGbCByCitFbnN1cmUgdGhhdCBhIG5hbWUgaXMgcmV0dXJuZWQuIElmIG5vIG5hbWUg
 Y2FuIGJlIHJlc29sdmVkLCBhbiBlcnJvciBpcyByZXBvcnRlZC4gVGhpcyBpcyBlcXVpdmFsZW50
 IHRvIHRoZQorLkR2IE5JX05BTUVSRVFECitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAuCisu
 SXQgRmwgdQorVXNlIFVEUCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IFRDUC4gVGhpcyBpcyBlcXVp
 dmFsZW50IHRvIHRoZQorLkR2IE5JX0RHUkFNCitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAu
 CisuSXQgRmwgZgorU3VwcHJlc3MgdGhlIGZ1bGx5LXF1YWxpZmllZCBkb21haW4gbmFtZSAoRlFE
 TikuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUKKy5EdiBOSV9OT0ZRRE4KK2ZsYWcgaW4KKy5Y
 ciBnZXRuYW1laW5mbyAzIC4KKy5JdCBGbCBuCitEaXNwbGF5IHRoZSBudW1lcmljIGhvc3QgYWRk
 cmVzcyBpbnN0ZWFkIG9mIHJlc29sdmluZyB0byBhIGhvc3RuYW1lLiBUaGlzIGlzIGVxdWl2YWxl
 bnQgdG8gdGhlCisuRHYgTklfTlVNRVJJQ0hPU1QKK2ZsYWcgaW4KKy5YciBnZXRuYW1laW5mbyAz
 IC4KKy5JdCBGbCBOCitEaXNwbGF5IHRoZSBudW1lcmljIHNlcnZpY2UgbmFtZSBpbnN0ZWFkIG9m
 IHJlc29sdmluZyB0byBhIHNlcnZpY2UgbmFtZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZQor
 LkR2IE5JX05VTUVSSUNTRVJWCitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAuCisuSXQgRmwg
 SAorRGlzcGxheSBvbmx5IHRoZSBob3N0bmFtZSwgb21pdHRpbmcgdGhlIHNlcnZpY2UgbmFtZS4K
 Ky5JdCBGbCBTCitEaXNwbGF5IG9ubHkgdGhlIHNlcnZpY2UgbmFtZSwgb21pdHRpbmcgdGhlIGhv
 c3RuYW1lLgorLkl0IEZsIHAgQXIgcG9ydAorU3BlY2lmeSB0aGUgcG9ydCBudW1iZXIgdG8gYmUg
 dXNlZCBpbiB0aGUgbG9va3VwLgorLkVsCisuU2ggRVhJVCBTVEFUVVMKKy5FeCAtc3RkIGdldG5h
 bWVpbmZvCisuU2ggRVhBTVBMRVMKK0xvb2sgdXAgdGhlIGhvc3RuYW1lIGFuZCBzZXJ2aWNlIG5h
 bWUgZm9yIGFuIElQdjQgYWRkcmVzczoKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGluZGVudAorJCBn
 ZXRuYW1laW5mbyAtNCAtcCA4MCA5My4xODQuMjE2LjM0CitleGFtcGxlLmNvbSBodHRwCisuRWQK
 Ky5QcAorTG9vayB1cCB0aGUgbnVtZXJpYyBob3N0IGFuZCBzZXJ2aWNlIGZvciBhbiBJUHY2IGFk
 ZHJlc3M6CisuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8gLW5OIC1w
 IDQ0MyAyNjA2OjI4MDA6MjIwOjE6MjQ4OjE4OTM6MjVjODoxOTQ2CisyNjA2OjI4MDA6MjIwOjE6
 MjQ4OjE4OTM6MjVjODoxOTQ2IDQ0MworLkVkCisuUHAKK1Jlc29sdmUgYW4gYWRkcmVzcyB0byBp
 dHMgaG9zdG5hbWUgYnV0IHN1cHByZXNzIHRoZSBzZXJ2aWNlIG5hbWU6CisuQmQgLWxpdGVyYWwg
 LW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8gLUggLXAgMjIgMTkyLjAuMi4xCitleGFtcGxl
 LWhvc3QKKy5FZAorLlBwCitSZXNvbHZlIGEgaG9zdG5hbWUgYW5kIHNlcnZpY2UgZm9yIGEgVURQ
 IGNvbm5lY3Rpb246CisuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8g
 LXUgLXAgNTMgMTk4LjUxLjEwMC4yCitleGFtcGxlLWRucy1zZXJ2ZXIgZG9tYWluCisuRWQKKy5T
 aCBTRUUgQUxTTworLlhyIGRpZyAxICwKKy5YciBnZXRhZGRyaW5mbyAxICwKKy5YciBnZXRhZGRy
 aW5mbyAzICwKKy5YciBnZXRuYW1laW5mbyAzICwKKy5YciBpbmV0IDMgLAorLlhyIGhvc3RzIDUg
 LAorLlhyIG5zc3dpdGNoLmNvbmYgNQpkaWZmIC0tZ2l0IGEvdXNyLmJpbi9nZXRuYW1laW5mby9n
 ZXRuYW1laW5mby5jIGIvdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby5jCm5ldyBmaWxl
 IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWZjYzJhZjc0ZjYxCi0tLSAvZGV2L251
 bGwKKysrIGIvdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby5jCkBAIC0wLDAgKzEsMjU0
 IEBACisvKiAkTmV0QlNEOiBnZXRuYW1laW5mby5jLHYgMS4xIDIwMjUvMDEvMTYgMDI6NTM6MTkg
 YXR0YXVsbGFoIEV4cCAkICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgVGhlIE5ldEJT
 RCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
 Y29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBG
 b3VuZGF0aW9uCisgKiBieSBBdHRhdWxsYWggQW5zYXJpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
 IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
 bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
 b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
 b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
 aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
 ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
 eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
 bG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
 ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
 U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFORCBD
 T05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
 QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
 UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNV
 TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRB
 VElPTiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
 Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
 REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
 RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
 RklUUzsKKyAqIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
 IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
 IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKKyAqIE9USEVSV0lT
 RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
 RU4gSUYKKyAqIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
 CisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyNpZm5kZWYgbGludAorX19SQ1NJRCgiJE5ldEJT
 RDogZ2V0bmFtZWluZm8uYyx2IDEuMSAyMDI1LzAxLzE2IDAyOjUzOjE5IGF0dGF1bGxhaCBFeHAg
 JCIpOworI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29j
 a2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgor
 CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZXJyLmg+CisjaW5jbHVkZSA8ZXJybm8u
 aD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
 ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qCisg
 KiBnZXRuYW1laW5mbzogUmVzb2x2ZSBJUCBhZGRyZXNzZXMgYW5kIHBvcnRzIHRvIGhvc3RuYW1l
 cyBhbmQgc2VydmljZSBuYW1lcywKKyAqIHNpbWlsYXIgdG8gdGhlIGdldG5hbWVpbmZvIGZ1bmN0
 aW9uIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgorICoKKyAqIHVzYWdlOgorICogICBnZXRuYW1l
 aW5mbyBbLTQ2cnVmbk5IU10gWy1wIHBvcnRdIDxJUC1hZGRyZXNzPgorICoKKyAqICAgLTQ6IFJl
 c3RyaWN0IGxvb2t1cCB0byBJUHY0IGFkZHJlc3NlcyBvbmx5CisgKiAgIC02OiBSZXN0cmljdCBs
 b29rdXAgdG8gSVB2NiBhZGRyZXNzZXMgb25seQorICogICAtcjogRW5zdXJlIHRoYXQgdGhlIG5h
 bWUgaXMgcmV0dXJuZWQgKGVycm9yIGlmIG5vIG5hbWUgaXMgZm91bmQpCisgKiAgIC11OiBVc2Ug
 VURQIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgVENQCisgKiAgIC1mOiBTdXBwcmVzcyB0aGUgZnVs
 bHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChGUUROKQorICogICAtbjogRGlzcGxheSB0aGUgbnVt
 ZXJpYyBob3N0IGFkZHJlc3MgaW5zdGVhZCBvZiB0aGUgaG9zdG5hbWUKKyAqICAgLU46IERpc3Bs
 YXkgdGhlIG51bWVyaWMgc2VydmljZSBuYW1lIGluc3RlYWQgb2YgdGhlIHNlcnZpY2UgbmFtZQor
 ICogICAtSDogRGlzcGxheSBvbmx5IHRoZSBob3N0bmFtZSwgb21pdHRpbmcgdGhlIHNlcnZpY2Ug
 bmFtZQorICogICAtUzogRGlzcGxheSBvbmx5IHRoZSBzZXJ2aWNlIG5hbWUsIG9taXR0aW5nIHRo
 ZSBob3N0bmFtZQorICogICAtcDogU3BlY2lmeSB0aGUgcG9ydCBudW1iZXIgdG8gYmUgdXNlZCBp
 biB0aGUgbG9va3VwCisgKi8KKworCitzdGF0aWMgdm9pZAl1c2FnZSh2b2lkKSBfX2RlYWQ7Citz
 dGF0aWMgdm9pZAlwcmludF9yZXN1bHQoaW50LCBpbnQsIGNoYXIgKiwgY2hhciAqKTsKK3N0YXRp
 YyBpbnQJdmFsaWRhdGVfcG9ydChjb25zdCBjaGFyICopOworc3RhdGljIGludAlnZXRfaXBfdmVy
 c2lvbihjb25zdCBjaGFyICopOworCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor
 eworCWludCBob3N0bGVuID0gTklfTUFYSE9TVCwgc2VydmxlbiA9IE5JX01BWFNFUlY7CisJY2hh
 ciBob3N0bmFtZVtob3N0bGVuXSwgc2VydmljZVtzZXJ2bGVuXTsKKwlpbnQgaG9zdG5hbWVfb25s
 eSA9IDAsIHNlcnZpY2Vfb25seSA9IDA7CisJaW50IGZhbWlseSA9IEFGX1VOU1BFQzsKKwlpbnQg
 ZmxhZ3MgPSAwOworCWNoYXIgKmFkZHJlc3MgPSBOVUxMOyAKKwlpbnQgcG9ydCA9IDA7CisJc3Ry
 dWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcl9zdDsKKwlpbnQgYWRkcl9zdGxlbjsKKwlpbnQgY2g7
 CisJaW50IGVycm9yOworCisJc2V0cHJvZ25hbWUoYXJndlswXSk7CisKKwl3aGlsZSAoKGNoID0g
 Z2V0b3B0KGFyZ2MsIGFyZ3YsICI0NnJ1Zm5OSFNwOiIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKGNo
 KSB7CisJCWNhc2UgJzQnOgorCQkJaWYgKGZhbWlseSAhPSBBRl9VTlNQRUMpIHsKKwkJCQl3YXJu
 eCgiT3B0aW9ucyAtNCBhbmQgLTYgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKKwkJCQl1c2Fn
 ZSgpOworCQkJfQorCQkJZmFtaWx5ID0gQUZfSU5FVDsKKwkJCWJyZWFrOworCQljYXNlICc2JzoK
 KwkJCWlmIChmYW1pbHkgIT0gQUZfVU5TUEVDKSB7CisJCQkJd2FybngoIk9wdGlvbnMgLTQgYW5k
 IC02IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWZh
 bWlseSA9IEFGX0lORVQ2OworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJZmxhZ3MgfD0gTklf
 TkFNRVJFUUQ7CisJCQlicmVhazsKKwkJY2FzZSAndSc6CisJCQlmbGFncyB8PSBOSV9ER1JBTTsK
 KwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWZsYWdzIHw9IE5JX05PRlFETjsKKwkJCWJyZWFr
 OworCQljYXNlICduJzoKKwkJCWZsYWdzIHw9IE5JX05VTUVSSUNIT1NUOworCQkJYnJlYWs7CisJ
 CWNhc2UgJ04nOgorCQkJZmxhZ3MgfD0gTklfTlVNRVJJQ1NFUlY7CisJCQlicmVhazsKKwkJY2Fz
 ZSAnSCc6CisJCQlpZiAoc2VydmljZV9vbmx5KSB7CisJCQkJd2FybngoIk9wdGlvbnMgLUggYW5k
 IC1TIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWhv
 c3RuYW1lX29ubHkgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ1MnOgorCQkJaWYgKGhvc3RuYW1l
 X29ubHkpIHsKKwkJCQl3YXJueCgiT3B0aW9ucyAtSCBhbmQgLVMgY2Fubm90IGJlIHVzZWQgdG9n
 ZXRoZXIiKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJc2VydmljZV9vbmx5ID0gMTsKKwkJCWJy
 ZWFrOworCQljYXNlICdwJzoKKwkJCWlmICgocG9ydCA9IHZhbGlkYXRlX3BvcnQob3B0YXJnKSkg
 PCAwKSB7CisJCQkJd2FybngoIkludmFsaWQgcG9ydCBudW1iZXI6ICVzIiwgb3B0YXJnKTsKKwkJ
 CQl1c2FnZSgpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJz8nOgorCQlkZWZhdWx0OgorCQkJ
 dXNhZ2UoKTsKKwkJfQorCX0KKworCWFyZ2MgLT0gb3B0aW5kOworCWFyZ3YgKz0gb3B0aW5kOwor
 CisJaWYgKGFyZ2MgPT0gMCAmJiAoaG9zdG5hbWVfb25seSB8fCAoaG9zdG5hbWVfb25seSA9PSAw
 ICYmIHNlcnZpY2Vfb25seSA9PSAwKSkpIHsKKwkJd2FybngoIk5vIElQIGFkZHJlc3MgcHJvdmlk
 ZWQiKTsKKwkJdXNhZ2UoKTsKKwl9CisKKwlpZiAocG9ydCA9PSAwICYmIChzZXJ2aWNlX29ubHkg
 fHwgKGhvc3RuYW1lX29ubHkgPT0gMCAmJiBzZXJ2aWNlX29ubHkgPT0gMCkpKSB7CisJCXdhcm54
 KCJObyBwb3J0IG51bWJlciBwcm92aWRlZCIpOworCQl1c2FnZSgpOworCX0KKworCWlmIChhcmdj
 ID09IDEpIHsKKwkJYWRkcmVzcyA9IGFyZ3ZbMF07CisJCWlmIChmYW1pbHkgPT0gQUZfVU5TUEVD
 ICYmIChmYW1pbHkgPSBnZXRfaXBfdmVyc2lvbihhZGRyZXNzKSkgPCAwKSB7CisJCQl3YXJueCgi
 SW52YWxpZCBJUCBhZGRyZXNzOiAlcyIsIGFkZHJlc3MpOworCQkJdXNhZ2UoKTsKKwkJfQorCX0K
 KworCWlmIChmYW1pbHkgPT0gQUZfSU5FVCkgeworCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHJf
 aW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJmFkZHJfc3Q7CisJCWFkZHJfaW4tPnNpbl9mYW1p
 bHkgPSBmYW1pbHk7CisJCWFkZHJfaW4tPnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CisJCWlmIChp
 bmV0X3B0b24oZmFtaWx5LCBhZGRyZXNzLCAmYWRkcl9pbi0+c2luX2FkZHIpID09IDApIHsKKwkJ
 CXdhcm54KCJJbnZhbGlkIElQdjQgYWRkcmVzczogJXMiLCBhZGRyZXNzKTsKKwkJCXVzYWdlKCk7
 CisJCX0gCisKKwkJYWRkcl9zdGxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworCX0g
 ZWxzZSB7CisJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHJfaW42ID0gKHN0cnVjdCBzb2NrYWRk
 cl9pbjYgKikmYWRkcl9zdDsKKwkJYWRkcl9pbjYtPnNpbjZfZmFtaWx5ID0gZmFtaWx5OworCQlh
 ZGRyX2luNi0+c2luNl9wb3J0ID0gaHRvbnMocG9ydCk7CisJCWlmIChpbmV0X3B0b24oZmFtaWx5
 LCBhZGRyZXNzLCAmYWRkcl9pbjYtPnNpbjZfYWRkcikgPT0gMCkgeworCQkJd2FybngoIkludmFs
 aWQgSVB2NiBhZGRyZXNzOiAlcyIsIGFkZHJlc3MpOworCQkJdXNhZ2UoKTsKKwkJfQorCQlhZGRy
 X3N0bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCX0KKworCWlmIChob3N0bmFt
 ZV9vbmx5KQorCQlzZXJ2bGVuID0gMDsKKwllbHNlIGlmIChzZXJ2aWNlX29ubHkpCisJCWhvc3Rs
 ZW4gPSAwOworCisJZXJyb3IgPSBnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmFkZHJf
 c3QsIGFkZHJfc3RsZW4sIGhvc3RuYW1lLCBob3N0bGVuLCBzZXJ2aWNlLCBzZXJ2bGVuLCBmbGFn
 cyk7CisJaWYgKGVycm9yKSAKKwkJZXJyeCgxLCAiJXMiLCBnYWlfc3RyZXJyb3IoZXJyb3IpKTsK
 KworCXByaW50X3Jlc3VsdChob3N0bmFtZV9vbmx5LCBzZXJ2aWNlX29ubHksIGhvc3RuYW1lLCBz
 ZXJ2aWNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRfaXBfdmVyc2lvbihj
 b25zdCBjaGFyKiBpcF9hZGRyZXNzKQoreworCXN0cnVjdCBpbl9hZGRyIGlwdjRfYWRkcjsKKwlz
 dHJ1Y3QgaW42X2FkZHIgaXB2Nl9hZGRyOworCisJaWYgKGluZXRfcHRvbihBRl9JTkVULCBpcF9h
 ZGRyZXNzLCAmaXB2NF9hZGRyKSA9PSAxKQorCQlyZXR1cm4gQUZfSU5FVDsKKworCWlmIChpbmV0
 X3B0b24oQUZfSU5FVDYsIGlwX2FkZHJlc3MsICZpcHY2X2FkZHIpID09IDEpCisJCXJldHVybiBB
 Rl9JTkVUNjsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfcG9ydChj
 b25zdCBjaGFyICpwb3J0X3N0cikKK3sKKwljaGFyICplbmRwdHI7CisJbG9uZyBwb3J0ID0gc3Ry
 dG9sKHBvcnRfc3RyLCAmZW5kcHRyLCAxMCk7CisKKwlpZiAoKmVuZHB0ciAhPSAnXDAnIHx8IHBv
 cnQgPCAxIHx8IHBvcnQgPiA2NTUzNSkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIChpbnQpcG9y
 dDsKK30KKworc3RhdGljIHZvaWQKK3ByaW50X3Jlc3VsdChpbnQgaG9zdG5hbWVfb25seSwgaW50
 IHNlcnZpY2Vfb25seSwgY2hhciAqaG9zdG5hbWUsIGNoYXIgKnNlcnZpY2UpCit7CisJaW50IG47
 CisJaWYgKGhvc3RuYW1lX29ubHkpCisJCW4gPSBwcmludGYoIiVzXG4iLCBob3N0bmFtZSk7CisJ
 ZWxzZSBpZiAoc2VydmljZV9vbmx5KQorCQluID0gcHJpbnRmKCIlc1xuIiwgc2VydmljZSk7CisJ
 ZWxzZQorCQluID0gcHJpbnRmKCIlcyAlc1xuIiwgaG9zdG5hbWUsIHNlcnZpY2UpOworCWlmIChu
 IDwgMCkKKwkJZXJyKDEsICJwcmludGYiKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2RlYWQKK3Vz
 YWdlKHZvaWQpCit7CisJKHZvaWQpZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMiLCBnZXRwcm9n
 bmFtZSgpKTsKKwkodm9pZClmcHJpbnRmKHN0ZGVyciwgIiBbLTQ2cnVmbk5IU10gWy1wIHBvcnRd
 IDxJUC1hZGRyZXNzPlxuIik7CisJZXhpdCgxKTsKK30KLS0gCjIuNDguMAoK
 --000000000000bfefb1062bd49425--
 


Home | Main Index | Thread Index | Old Index