Re: Piping/Printing message looks odd TODO
Glenn Spell <[email protected]> Fri, 1 Apr 2016 16:14:23 -0400
| Newsgroups | gmane.network.tin.user |
|---|---|
| Organization | the aerie |
| Message-ID | <[email protected]> |
T24gMjYgTWFyIDIwMTYgYXJvdW5kICA2OjA1QU0gKC0wNDAwKSBVcnMgVXJzIEphbsOfZW4gd3Jv dGU6Cj4gT24gRnJpLCBNYXIgMjUsIDIwMTYgYXQgMDE6NTU6MDNQTSAtMDQwMCwgR2xlbm4gU3Bl bGwgd3JvdGU6Cj4gPiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhpcyBhbmQgdGVsbCBtZSB3aGF0 IHknYWxsIHRoaW5rOgo+IAo+IE90aGVyd2lzZSBpdCBsb29rcyBvayB0byBtZSAoYnV0IEkgZGlk bid0IHRlc3QgaXQgYW55d2hlcmUgZXhjZXB0Cj4gaTY4Ni1wYy1saW51eC1nbnUgJiBuY3Vyc2Vz dyAoNi4wLjIwMTYwMzE5KSkuCgpUaGFua3MgZm9yIGFwcGx5aW5nIHRoZSBwYXRjaCBmb3IgdGhl IDIuMy4zIHJlbGVhc2UuCgpJdCB3YXMgc3RpbGwgYSB3b3JrIGluIHByb2dyZXNzLiAgSSd2ZSBm aW5pc2hlZCBpdCBub3csIGFuZCBJJ20Kc2F0aXNmaWVkIHdpdGggaXQuICBJJ3ZlIHRlc3RlZCBp dCBvbiBOZXRCU0Qgd2l0aCBuY3Vyc2VzdyBhbmQKd2l0aCB0ZXJtY2FwLiAgQnV0IEknZCBzdGls bCBhcHByZWNpYXRlIHlvdXIgY29tbWVudHMuCgpJIGNvbXBsZXRlZCBzZXR0aW5nIHRoZSBjbWRf bGluZSB2YXIgdG8gRkFMU0UgZm9yIGFsbCBzdGRvdXQKbWVzc2FnZXMuICBJIHJldmVydGVkIHNv bWUgY29kZSBmcm9tIHRoZSBwcmV2aW91cyBwYXRjaCB0aGF0CndvdWxkbid0IHdvcmsgd2VsbCBp biBzb21lIGVkZ2UgY2FzZXMuICBJJ3ZlIHJlLWVuYWJsZWQgdGhlCnByb2dyZXNzIG1ldGVyIGZv ciBmZWVkaW5nIGFydGljbGVzLCBjYWxsaW5nIHNob3dfcHJvZ3Jlc3MoKQpkaXJlY3RseSBhbmQg cmV3b3JraW5nIHRoZSBwcm9ncmVzc19tZXNnIHZhciBpbiBmZWVkLmMuICBJCmFkZGVkIGNvbW1h bmQgdG8gdGhlIG5ldyBwaXBlZCB0byBtZXNzYWdlLiAgSSd2ZSBwcmV2ZW50ZWQgdGhlCnByb2dy ZXNzIG1ldGVyIGZyb20gcnVubmluZyBiYWNrd2FyZHMuICBJIGZpbmlzaGVkIHJld29ya2luZwp0 aGUgc2NyZWVuIHJlZHJhd3MgaW4gZmVlZC5jLgoKSWYgdGhpcyBpcyBzYXRpc2ZhY3RvcnkgcGxl YXNlIGFwcGx5IHRoaXMgcGF0Y2ggdG8gMi4zLjMuCgpQbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhp czoKCgpJbmRleDogc3JjL2ZlZWQuYwotLS0gdGluLTIuMy4zLm9yaWcvc3JjL2ZlZWQuYwkyMDE2 LTAzLTI2IDA5OjQ0OjA4LjAwMDAwMDAwMCArMDAwMAorKysgdGluLTIuMy4zL3NyYy9mZWVkLmMJ MjAxNi0wNC0wMSAxNzozNzoxOS4wMDAwMDAwMDAgKzAwMDAKQEAgLTQwMCw3ICs0MDAsNyBAQCBw cmludF9zYXZlX3N1bW1hcnkoCiAJCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIF8odHh0X3Nh dmVkX3RvX3JhbmdlKSwKIAkJCXdoYXQsIGZpcnN0LCBsYXN0KTsKIAotCXdhaXRfbWVzc2FnZSgo dGlucmMuYmVnaW5uZXJfbGV2ZWwpID8gMiA6IDEsIGJ1Zik7CisJd2FpdF9tZXNzYWdlKCh0aW5y Yy5iZWdpbm5lcl9sZXZlbCkgPyA0IDogMiwgYnVmKTsKIAogCXJldHVybjsKIH0KQEAgLTQ1NCwx NyArNDU0LDE5IEBAIGZlZWRfYXJ0aWNsZSgKIAkJCXByb2dyZXNzX21lc2cgPSBmbXRfc3RyaW5n KCIlcyAoJWQvJWQpIiwgXyh0eHRfc2F2aW5nKSwgY291bnRlci0+dG90YWwsIGNvdW50ZXItPm1h eCk7CiAJCQlicmVhazsKIAl9CisJaWYgKHByb2dyZXNzX21lc2cgIT0gTlVMTCkgeworCQlzaG93 X3Byb2dyZXNzKHByb2dyZXNzX21lc2csIGNvdW50ZXItPnRvdGFsLCBjb3VudGVyLT5tYXgpOwor CQlmcmVlKHByb2dyZXNzX21lc2cpOworCQlwcm9ncmVzc19tZXNnID0gTlVMTDsKKwl9CiAKIAlp ZiAodXNlX2N1cnJlbnQpCiAJCW9wZW5hcnRwdHIgPSAmcGdhcnQ7CQkJLyogVXNlIGFydCBhbHJl YWR5IG9wZW4gaW4gcGFnZXIgKi8KIAllbHNlIHsKLQkJaWYgKGFydF9vcGVuKEZBTFNFLCAmYXJ0 c1thcnRdLCBncm91cCwgb3BlbmFydHB0ciwgVFJVRSwgcHJvZ3Jlc3NfbWVzZykgPCAwKSB7CisJ CWlmIChhcnRfb3BlbihGQUxTRSwgJmFydHNbYXJ0XSwgZ3JvdXAsIG9wZW5hcnRwdHIsIEZBTFNF LCBOVUxMKSA8IDApCiAJCQkvKiBVc2VyIGFib3J0IG9yIGFuIGVycm9yICovCi0JCQlGcmVlSWZO ZWVkZWQocHJvZ3Jlc3NfbWVzZyk7CiAJCQlyZXR1cm4gRkFMU0U7Ci0JCX0KIAl9Ci0JRnJlZUlm TmVlZGVkKHByb2dyZXNzX21lc2cpOwogCiAJc3dpdGNoIChmdW5jdGlvbikgewogCQljYXNlIEZF RURfTUFJTDoKQEAgLTY2Niw3ICs2NjgsNiBAQCBmZWVkX2FydGljbGVzKAogCQkvKiBTZXR1cCBw cmludGluZyAtIGdldCBwcmludCBjb21tYW5kIGxpbmUgKi8KIAkJY2FzZSBGRUVEX1BSSU5UOgog CQkJc25wcmludGYob3V0cGF0aCwgc2l6ZW9mKG91dHBhdGgpLCAiJXMgJXMiLCB0aW5yYy5wcmlu dGVyLCBSRURJUkVDVF9PVVRQVVQpOwotCQkJcmVkcmF3X3NjcmVlbiA9IFRSVUU7CiAJCQlicmVh azsKICNlbmRpZiAvKiAhRElTQUJMRV9QUklOVElORyAqLwogCkBAIC04NDQsNiArODQ1LDcgQEAg ZmVlZF9hcnRpY2xlcygKIAkJCQl9CiAJCQl9CiAJCQl1bnRhZ19hbGxfYXJ0aWNsZXMoKTsJLyog VE9ETzogdGhpcyB3aWxsIHVudGFnIGV2ZW4gb24gcGFydGlhbCBmYWlsdXJlICovCisJCQlyZWRy YXdfc2NyZWVuID0gVFJVRTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgRkVFRF9IT1Q6CQkvKiBob3Qg KGF1dG8tc2VsZWN0ZWQpIGFydGljbGVzICovCkBAIC05MjcsNyArOTI5LDcgQEAgZ290X2VwaXBl X3doaWxlX3BpcGluZzoKIAkJCVJhdyhUUlVFKTsKIAkJCUluaXRXaW4oKTsKICMJZW5kaWYgLyog VVNFX0NVUlNFUyAqLwotCQkJY3Vycm1lbnUtPnJlZHJhdygpOworCQkJcHJvbXB0X2NvbnRpbnVl KCk7CiAjCWlmbmRlZiBVU0VfQ1VSU0VTCiAJCQlSYXcoVFJVRSk7CiAJCQlJbml0V2luKCk7CkBA IC05NDIsNyArOTQ0LDEwIEBAIGdvdF9lcGlwZV93aGlsZV9waXBpbmc6CiAJCQkJYnJlYWs7CiAJ CQl9CiAKLQkJCWN1cnJtZW51LT5yZWRyYXcoKTsKKwkJCWlmIChyZWRyYXdfc2NyZWVuKSB7CisJ CQkJY3Vycm1lbnUtPnJlZHJhdygpOworCQkJCXJlZHJhd19zY3JlZW4gPSBGQUxTRTsKKwkJCX0K IAkJCXByaW50X3NhdmVfc3VtbWFyeShmZWVkX3R5cGUsIGNvdW50ZXIudG90YWwpOwogCQkJaWYg KHBwcm9jX2Z1bmMgIT0gUE9TVFBST0NFU1NfTk8pIHsKIAkJCQl0X2Jvb2wgZGVsZXRlX3Bvc3Rf cHJvYyA9IEZBTFNFOwpAQCAtOTg3LDggKzk5MiwxMCBAQCBnb3RfZXBpcGVfd2hpbGVfcGlwaW5n OgogCQkJCWNsZWFyX21lc3NhZ2UoKTsKIAkJfQogCX0gZWxzZSB7Ci0JCWlmIChyZWRyYXdfc2Ny ZWVuKQorCQlpZiAocmVkcmF3X3NjcmVlbikgewogCQkJY3Vycm1lbnUtPnJlZHJhdygpOworCQkJ cmVkcmF3X3NjcmVlbiA9IEZBTFNFOworCQl9CiAJfQogCiAJLyoKQEAgLTEwMjUsNyArMTAzMiw3 IEBAIGdvdF9lcGlwZV93aGlsZV9waXBpbmc6CiAKICNpZm5kZWYgRE9OVF9IQVZFX1BJUElORwog CQljYXNlIEZFRURfUElQRTogCi0JCQlpbmZvX21lc3NhZ2UoXyh0eHRfYXJ0aWNsZXNfcGlwZWQp LCBjb3VudGVyLnN1Y2Nlc3MsIFBMVVJBTChjb3VudGVyLnN1Y2Nlc3MsIHR4dF9hcnRpY2xlKSk7 CisJCQlpbmZvX21lc3NhZ2UoXyh0eHRfYXJ0aWNsZXNfcGlwZWQpLCBjb3VudGVyLnN1Y2Nlc3Ms IFBMVVJBTChjb3VudGVyLnN1Y2Nlc3MsIHR4dF9hcnRpY2xlKSwgdGlucmMuZGVmYXVsdF9waXBl X2NvbW1hbmQpOwogCQkJYnJlYWs7CiAjZW5kaWYgLyogIURPTlRfSEFWRV9QSVBJTkcgKi8KIApJ bmRleDogc3JjL2xhbmcuYwotLS0gdGluLTIuMy4zLm9yaWcvc3JjL2xhbmcuYwkyMDE2LTAzLTI2 IDA5OjQ0OjA4LjAwMDAwMDAwMCArMDAwMAorKysgdGluLTIuMy4zL3NyYy9sYW5nLmMJMjAxNi0w NC0wMSAxNzozNzoyMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTExNDUsNyArMTE0NSw3IEBAIFRpbiB3 aWxsIHRyeSB0byB1c2UgWEhEUiBYUkVGIGluc3RlYWQgKHMKICNlbmRpZiAvKiAhRElTQUJMRV9Q UklOVElORyAqLwogCiAjaWZuZGVmIERPTlRfSEFWRV9QSVBJTkcKLQljb25zdGV4dCB0eHRfYXJ0 aWNsZXNfcGlwZWRbXSA9IE5fKCIlZCAlcyBwaXBlZCIpOworCWNvbnN0ZXh0IHR4dF9hcnRpY2xl c19waXBlZFtdID0gTl8oIiVkICVzIHBpcGVkIHRvIFwiJXNcIiIpOwogCWNvbnN0ZXh0IHR4dF9o ZWxwX2dsb2JhbF9waXBlW10gPSBOXygicGlwZSBhcnRpY2xlL3RocmVhZC9ob3QvcGF0dGVybi90 YWdnZWQgYXJ0aWNsZXMgaW50byBjb21tYW5kIik7CiAJY29uc3RleHQgdHh0X25vX2NvbW1hbmRb XSA9IE5fKCJObyBjb21tYW5kIik7CiAJY29uc3RleHQgdHh0X3BpcGVbXSA9IE5fKCJQaXBlIik7 CkluZGV4OiBzcmMvc2NyZWVuLmMKLS0tIHRpbi0yLjMuMy5vcmlnL3NyYy9zY3JlZW4uYwkyMDE2 LTAzLTI2IDA5OjU2OjMzLjAwMDAwMDAwMCArMDAwMAorKysgdGluLTIuMy4zL3NyYy9zY3JlZW4u YwkyMDE2LTA0LTAxIDE3OjM3OjIwLjAwMDAwMDAwMCArMDAwMApAQCAtOTcsOCArOTcsMTEgQEAg aW5mb19tZXNzYWdlKAogCS4uLikKIHsKIAljaGFyICpidWY7CisJdF9ib29sIHNhdmVfY21kX2xp bmUgPSBjbWRfbGluZTsKIAl2YV9saXN0IGFwOwogCisJY21kX2xpbmUgPSBGQUxTRTsKKwogCXZh X3N0YXJ0KGFwLCBmbXQpOwogCiAJY2xlYXJfbWVzc2FnZSgpOwpAQCAtMTE2LDYgKzExOSw4IEBA IGluZm9fbWVzc2FnZSgKIAlzdG93X2N1cnNvcigpOwogCiAJdmFfZW5kKGFwKTsKKworCWNtZF9s aW5lID0gc2F2ZV9jbWRfbGluZTsKIH0KIAogCkBAIC0xMjksOCArMTM0LDExIEBAIHdhaXRfbWVz c2FnZSgKIAkuLi4pCiB7CiAJY2hhciAqYnVmOworCXRfYm9vbCBzYXZlX2NtZF9saW5lID0gY21k X2xpbmU7CiAJdmFfbGlzdCBhcDsKIAorCWNtZF9saW5lID0gRkFMU0U7CisKIAl2YV9zdGFydChh cCwgZm10KTsKIAogCWNsZWFyX21lc3NhZ2UoKTsKQEAgLTE1MSw2ICsxNTksOCBAQCB3YWl0X21l c3NhZ2UoCiAJKHZvaWQpIHNsZWVwKHNkZWxheSk7CiAvKgljbGVhcl9tZXNzYWdlKCk7IHdvdWxk IGJlIG5pY2UsIGJ1dCB0aW4gZG9lc24ndCBleHBlY3QgdGhpcyB5ZXQgKi8KIAl2YV9lbmQoYXAp OworCisJY21kX2xpbmUgPSBzYXZlX2NtZF9saW5lOwogfQogCiAKQEAgLTQ2NSwxMSArNDc1LDEx IEBAIHNob3dfcHJvZ3Jlc3MoCiAJc3RhdGljIGludCBsYXN0X3JhdGlvOwogCXN0YXRpYyB0X2Fy dG51bSBsYXN0X3RvdGFsOwogCXN0YXRpYyB0aW1lX3QgbGFzdF91cGRhdGU7Ci0JdF9ib29sIGZl ZWRpbmcgPSBGQUxTRTsKIAl0X2Jvb2wgc2F2ZV9jbWRfbGluZSA9IGNtZF9saW5lOwogI2lmIGRl ZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfR0VUVElNRU9GREFZKQog CXN0YXRpYyB0X2FydG51bSBsYXN0X2NvdW50OwogCXN0YXRpYyBpbnQgYXZlcmFnZTsKKwlzdGF0 aWMgaW50IGxhc3RfYXZlcmFnZTsKIAlzdGF0aWMgaW50IHNhbXBsZXM7CiAJc3RhdGljIGludCBz dW07CiAJY2hhciAqZGlzcGxheV9mb3JtYXQ7CkBAIC00ODUsMTA0ICs0OTUsODggQEAgc2hvd19w cm9ncmVzcygKIAogCWNtZF9saW5lID0gRkFMU0U7CiAKLQkvKgotCSAqIHJhdGlvIGFuZCB0aW1l IHJlbWFpbmluZyBhcmUgdW5zdGFibGUgd2hlbiBmZWVkaW5nOwotCSAqIGlmIGZlZWRpbmcgYXJ0 aWNsZXMsIGRvbid0IHByaW50IHJhdGlvIG9yIHRpbWUgcmVtYWluaW5nCi0JICovCi0JaWYgKAot I2lmbmRlZiBET05UX0hBVkVfUElQSU5HCi0JKCFzdHJuY21wKHR4dCwgXyh0eHRfcGlwaW5nKSwg c3RybGVuKF8odHh0X3BpcGluZykpKSkgfHwKLSNlbmRpZiAvKiBET05UX0hBVkVfUElQSU5HICov Ci0jaWZuZGVmIERJU0FCTEVfUFJJTlRJTkcKLQkoIXN0cm5jbXAodHh0LCBfKHR4dF9wcmludGlu ZyksIHN0cmxlbihfKHR4dF9wcmludGluZykpKSkgfHwgCi0jZW5kaWYgLyogRElTQUJMRV9QUklO VElORyAqLwotCSghc3RybmNtcCh0eHQsIF8odHh0X3NhdmluZyksIHN0cmxlbihfKHR4dF9zYXZp bmcpKSkpKQotCQlmZWVkaW5nID0gVFJVRTsKLQotCWlmICghZmVlZGluZykgewotCQkvKiBJZiB0 aGlzIGlzIGEgbmV3IHByb2dyZXNzIG1ldGVyLCBzdGFydCByZWNhbGN1bGF0aW5nICovCi0JCWlm ICgobGFzdF90eHQgIT0gdHh0KSB8fCAobGFzdF90b3RhbCAhPSB0b3RhbCkpIHsKLQkJCWxhc3Rf cmF0aW8gPSAtMTsKLQkJCWxhc3RfZGlzcGxheVswXSA9ICdcMCc7Ci0JCQlsYXN0X3VwZGF0ZSA9 IHRpbWUoTlVMTCkgLSAyOwotCQl9CisJLyogSWYgdGhpcyBpcyBhIG5ldyBwcm9ncmVzcyBtZXRl ciwgc3RhcnQgcmVjYWxjdWxhdGluZyAqLworCWlmICgobGFzdF90eHQgIT0gdHh0KSB8fCAobGFz dF90b3RhbCAhPSB0b3RhbCkpIHsKKwkJbGFzdF9yYXRpbyA9IC0xOworCQlsYXN0X2Rpc3BsYXlb MF0gPSAnXDAnOworCQlsYXN0X3VwZGF0ZSA9IHRpbWUoTlVMTCkgLSAyOworCX0KIAotCQljdXJy X3RpbWUgPSB0aW1lKE5VTEwpOwotCQlyYXRpbyA9IChpbnQpICgoY291bnQgKiAxMDApIC8gdG90 YWwpOwotCQlpZiAoKHJhdGlvID09IGxhc3RfcmF0aW8pICYmIChjdXJyX3RpbWUgLSBsYXN0X3Vw ZGF0ZSA8IDIpKQotCQkJLyoKLQkJCSAqIHJldHVybiBpZiByYXRpbyBkaWQgbm90IGNoYW5nZSBh bmQgbGVzcyB0aGFuIDEtMiBzZWNvbmRzIHNpbmNlIGxhc3QKLQkJCSAqIHVwZGF0ZSB0byByZWR1 Y2Ugb3V0cHV0Ci0JCQkgKi8KLQkJCXJldHVybjsKKwljdXJyX3RpbWUgPSB0aW1lKE5VTEwpOwor CXJhdGlvID0gKGludCkgKChjb3VudCAqIDEwMCkgLyB0b3RhbCk7CisJaWYgKChyYXRpbyA9PSBs YXN0X3JhdGlvKSAmJiAoY3Vycl90aW1lIC0gbGFzdF91cGRhdGUgPCAyKSkKKwkJLyoKKwkJICog cmV0dXJuIGlmIHJhdGlvIGRpZCBub3QgY2hhbmdlIGFuZCBsZXNzIHRoYW4gMS0yIHNlY29uZHMg c2luY2UgbGFzdAorCQkgKiB1cGRhdGUgdG8gcmVkdWNlIG91dHB1dAorCQkgKi8KKwkJcmV0dXJu OwogCi0JCWxhc3RfdXBkYXRlID0gY3Vycl90aW1lOworCWxhc3RfdXBkYXRlID0gY3Vycl90aW1l OwogCiAjaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIHx8IGRlZmluZWQoSEFWRV9HRVRU SU1FT0ZEQVkpCi0JCWRpc3BsYXlfZm9ybWF0ID0gbXlfbWFsbG9jKHN0cmxlbihESVNQTEFZX0ZN VCkgKyBzdHJsZW4oXyh0eHRfcmVtYWluaW5nKSkgKyAxKTsKLQkJc3RyY3B5KGRpc3BsYXlfZm9y bWF0LCBESVNQTEFZX0ZNVCk7CisJZGlzcGxheV9mb3JtYXQgPSBteV9tYWxsb2Moc3RybGVuKERJ U1BMQVlfRk1UKSArIHN0cmxlbihfKHR4dF9yZW1haW5pbmcpKSArIDEpOworCXN0cmNweShkaXNw bGF5X2Zvcm1hdCwgRElTUExBWV9GTVQpOwogCi0JCWlmIChsYXN0X3JhdGlvID09IC0xKSB7Ci0J CQkvKiBEb24ndCBwcmludCBhICJ0aW1lIHJlbWFpbmluZyIgdGhpcyB0aW1lICovCi0JCQlzbnBy aW50ZihkaXNwbGF5LCBzaXplb2YoZGlzcGxheSksIGRpc3BsYXlfZm9ybWF0LCB0eHQsIHJhdGlv KTsKKwlpZiAobGFzdF9yYXRpbyA9PSAtMSkgeworCQkvKiBEb24ndCBwcmludCBhICJ0aW1lIHJl bWFpbmluZyIgdGhpcyB0aW1lICovCisJCXNucHJpbnRmKGRpc3BsYXksIHNpemVvZihkaXNwbGF5 KSwgZGlzcGxheV9mb3JtYXQsIHR4dCwgcmF0aW8pOwogCi0JCQkvKiBSZXNldCB0aGUgdmFyaWFi bGVzICovCi0JCQlzdW0gPSBhdmVyYWdlID0gc2FtcGxlcyA9IDA7CisJCS8qIFJlc2V0IHRoZSB2 YXJpYWJsZXMgKi8KKwkJc3VtID0gYXZlcmFnZSA9IHNhbXBsZXMgPSAwOworCX0gZWxzZSB7CisJ CS8qIEdldCB0aGUgY3VycmVudCB0aW1lICovCisJCXRpbl9nZXR0aW1lKCZ0aGlzX3RpbWUpOwor CQl0aW1lX2RpZmYgPSAodGhpc190aW1lLnR2X3NlYyAtIGxhc3RfdGltZS50dl9zZWMpICogMTAw MDAwMDsKKwkJdGltZV9kaWZmICs9ICgodGhpc190aW1lLnR2X25zZWMgLSBsYXN0X3RpbWUudHZf bnNlYykgLyAxMDAwKTsKKwkJY291bnRfZGlmZiA9IChjb3VudCAtIGxhc3RfY291bnQpOworCisJ CWlmICghY291bnRfZGlmZikgLyogYXZvaWQgZGl2IGJ5IHplcm8gKi8KKwkJCWNvdW50X2RpZmYr KzsKKworCQkvKgorCQkgKiBDYWxjdWxhdGUgYSBydW5uaW5nIGF2ZXJhZ2UgYmFzZWQgb24gdGhl IGxhc3QgMjAgc2FtcGxlcy4gRm9yIHRoZQorCQkgKiBmaXJzdCAxOSBzYW1wbGVzIGp1c3QgYWRk IGFsbCBhbmQgZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2Ygc2FtcGxlcy4KKwkJICogRnJvbSB0aGUg MjB0aCBzYW1wbGUgb24gdXNlIG9ubHkgdGhlIGxhc3QgMjAgc2FtcGxlcyB0byBjYWxjdWxhdGUK KwkJICogdGhlIHJ1bm5pbmcgYXZlcmF2ZS4gVG8gbWFrZSB0aGluZ3MgZWFzaWVyIHdlIGRvbid0 IHdhbnQgdG8gc3RvcmUKKwkJICogYW5kIGtlZXAgdHJhY2sgb2YgYWxsIG9mIHRoZW0sIHNvIHdl IGFzc3VtZSB0aGF0IHRoZSBmaXJzdCBzYW1wbGUKKwkJICogd2FzIGNsb3NlIHRvIHRoZSBjdXJy ZW50IGF2ZXJhZ2UgYW5kIHN1YnRyYWN0IGl0IGZyb20gc3VtLiBUaGVuLAorCQkgKiB0aGUgbmV3 IHNhbXBsZSBpcyBhZGRlZCB0byB0aGUgc3VtIGFuZCB0aGUgc3VtIGlzIGRpdmlkZWQgYnkgMjAg dG8KKwkJICogZ2V0IHRoZSBuZXcgYXZlcmFnZS4KKwkJICovCisJCWlmIChzYW1wbGVzID09IDIw KSB7CisJCQlzdW0gLT0gYXZlcmFnZTsKKwkJCXN1bSArPSAodGltZV9kaWZmIC8gY291bnRfZGlm Zik7CisJCQlhdmVyYWdlID0gc3VtIC8gMjA7CiAJCX0gZWxzZSB7Ci0JCQkvKiBHZXQgdGhlIGN1 cnJlbnQgdGltZSAqLwotCQkJdGluX2dldHRpbWUoJnRoaXNfdGltZSk7Ci0JCQl0aW1lX2RpZmYg PSAodGhpc190aW1lLnR2X3NlYyAtIGxhc3RfdGltZS50dl9zZWMpICogMTAwMDAwMDsKLQkJCXRp bWVfZGlmZiArPSAoKHRoaXNfdGltZS50dl9uc2VjIC0gbGFzdF90aW1lLnR2X25zZWMpIC8gMTAw MCk7Ci0JCQljb3VudF9kaWZmID0gKGNvdW50IC0gbGFzdF9jb3VudCk7Ci0KLQkJCWlmICghY291 bnRfZGlmZikgLyogYXZvaWQgZGl2IGJ5IHplcm8gKi8KLQkJCQljb3VudF9kaWZmKys7Ci0KLQkJ CS8qCi0JCQkgKiBDYWxjdWxhdGUgYSBydW5uaW5nIGF2ZXJhZ2UgYmFzZWQgb24gdGhlIGxhc3Qg MjAgc2FtcGxlcy4gRm9yIHRoZQotCQkJICogZmlyc3QgMTkgc2FtcGxlcyBqdXN0IGFkZCBhbGwg YW5kIGRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIHNhbXBsZXMuCi0JCQkgKiBGcm9tIHRoZSAyMHRo IHNhbXBsZSBvbiB1c2Ugb25seSB0aGUgbGFzdCAyMCBzYW1wbGVzIHRvIGNhbGN1bGF0ZQotCQkJ ICogdGhlIHJ1bm5pbmcgYXZlcmF2ZS4gVG8gbWFrZSB0aGluZ3MgZWFzaWVyIHdlIGRvbid0IHdh bnQgdG8gc3RvcmUKLQkJCSAqIGFuZCBrZWVwIHRyYWNrIG9mIGFsbCBvZiB0aGVtLCBzbyB3ZSBh c3N1bWUgdGhhdCB0aGUgZmlyc3Qgc2FtcGxlCi0JCQkgKiB3YXMgY2xvc2UgdG8gdGhlIGN1cnJl bnQgYXZlcmFnZSBhbmQgc3VidHJhY3QgaXQgZnJvbSBzdW0uIFRoZW4sCi0JCQkgKiB0aGUgbmV3 IHNhbXBsZSBpcyBhZGRlZCB0byB0aGUgc3VtIGFuZCB0aGUgc3VtIGlzIGRpdmlkZWQgYnkgMjAg dG8KLQkJCSAqIGdldCB0aGUgbmV3IGF2ZXJhZ2UuCi0JCQkgKi8KLQkJCWlmIChzYW1wbGVzID09 IDIwKSB7Ci0JCQkJc3VtIC09IGF2ZXJhZ2U7Ci0JCQkJc3VtICs9ICh0aW1lX2RpZmYgLyBjb3Vu dF9kaWZmKTsKLQkJCQlhdmVyYWdlID0gc3VtIC8gMjA7Ci0JCQl9IGVsc2UgewotCQkJCXN1bSAr PSAodGltZV9kaWZmIC8gY291bnRfZGlmZik7Ci0JCQkJYXZlcmFnZSA9IHN1bSAvICsrc2FtcGxl czsKLQkJCX0KKwkJCXN1bSArPSAodGltZV9kaWZmIC8gY291bnRfZGlmZik7CisJCQlhdmVyYWdl ID0gc3VtIC8gKytzYW1wbGVzOworCQl9CiAKLQkJCWlmIChhdmVyYWdlID49IDEwMDAwMDApCi0J CQkJc2Vjc19sZWZ0ID0gKHRvdGFsIC0gY291bnQpICogKGF2ZXJhZ2UgLyAxMDAwMDAwKTsKLQkJ CWVsc2UKLQkJCQlzZWNzX2xlZnQgPSAoKHRvdGFsIC0gY291bnQpICogYXZlcmFnZSkgLyAxMDAw MDAwOworCQkvKiBEb24ndCBhbGxvdyBwcm9ncmVzcyBtZXRlciB0byBydW4gYmFja3dhcmRzICov CisJCWlmIChhdmVyYWdlIDwgbGFzdF9hdmVyYWdlKQorCQkJYXZlcmFnZSA9IGxhc3RfYXZlcmFn ZTsKKwkJZWxzZSBpZiAoYXZlcmFnZSA+IGxhc3RfYXZlcmFnZSkKKwkJCWxhc3RfYXZlcmFnZSA9 IGF2ZXJhZ2U7CiAKLQkJCWlmIChzZWNzX2xlZnQgPCAwKQotCQkJCXNlY3NfbGVmdCA9IDA7CisJ CWlmIChhdmVyYWdlID49IDEwMDAwMDApCisJCQlzZWNzX2xlZnQgPSAodG90YWwgLSBjb3VudCkg KiAoYXZlcmFnZSAvIDEwMDAwMDApOworCQllbHNlCisJCQlzZWNzX2xlZnQgPSAoKHRvdGFsIC0g Y291bnQpICogYXZlcmFnZSkgLyAxMDAwMDAwOwogCi0JCQlzdHJjYXQoZGlzcGxheV9mb3JtYXQs IF8odHh0X3JlbWFpbmluZykpOwotCQkJc25wcmludGYoZGlzcGxheSwgc2l6ZW9mKGRpc3BsYXkp LCBkaXNwbGF5X2Zvcm1hdCwgdHh0LCByYXRpbywgc2Vjc19sZWZ0IC8gNjAsIHNlY3NfbGVmdCAl IDYwKTsKLQkJfQotCQlmcmVlKGRpc3BsYXlfZm9ybWF0KTsKKwkJaWYgKHNlY3NfbGVmdCA8IDAp CisJCQlzZWNzX2xlZnQgPSAwOworCisJCXN0cmNhdChkaXNwbGF5X2Zvcm1hdCwgXyh0eHRfcmVt YWluaW5nKSk7CisJCXNucHJpbnRmKGRpc3BsYXksIHNpemVvZihkaXNwbGF5KSwgZGlzcGxheV9m b3JtYXQsIHR4dCwgcmF0aW8sIHNlY3NfbGVmdCAvIDYwLCBzZWNzX2xlZnQgJSA2MCk7CisJfQor CWZyZWUoZGlzcGxheV9mb3JtYXQpOwogCi0JCWxhc3RfY291bnQgPSBjb3VudDsKLQkJdGluX2dl dHRpbWUoJmxhc3RfdGltZSk7CisJbGFzdF9jb3VudCA9IGNvdW50OworCXRpbl9nZXR0aW1lKCZs YXN0X3RpbWUpOwogI2Vsc2UKLQkJc25wcmludGYoZGlzcGxheSwgc2l6ZW9mKGRpc3BsYXkpLCAi JXMgJTNkJSUiLCB0eHQsIHJhdGlvKTsKKwlzbnByaW50ZihkaXNwbGF5LCBzaXplb2YoZGlzcGxh eSksICIlcyAlM2QlJSIsIHR4dCwgcmF0aW8pOwogI2VuZGlmIC8qIEhBVkVfQ0xPQ0tfR0VUVElN RSB8fCBIQVZFX0dFVFRJTUVPRkRBWSAqLwogCi0JCWxhc3RfdHh0ID0gdHh0OwotCQlsYXN0X3Rv dGFsID0gdG90YWw7Ci0JCWxhc3RfcmF0aW8gPSByYXRpbzsKLQotCX0gZWxzZQotCQlzbnByaW50 ZihkaXNwbGF5LCBzaXplb2YoZGlzcGxheSksICIlcyIsIHR4dCk7Ci0KIAkvKiBPbmx5IGRpc3Bs YXkgdGV4dCBpZiBpdCBjaGFuZ2VkIGZyb20gbGFzdCB0aW1lICovCiAJaWYgKHN0cmNtcChkaXNw bGF5LCBsYXN0X2Rpc3BsYXkpKSB7CiAJCWNoYXIgKnRtcDsKQEAgLTYxMCw1ICs2MDQsOSBAQCBz aG93X3Byb2dyZXNzKAogCQlTVFJDUFkobGFzdF9kaXNwbGF5LCBkaXNwbGF5KTsKIAl9CiAKKwls YXN0X3R4dCA9IHR4dDsKKwlsYXN0X3RvdGFsID0gdG90YWw7CisJbGFzdF9yYXRpbyA9IHJhdGlv OworCiAJY21kX2xpbmUgPSBzYXZlX2NtZF9saW5lOwogfQoKClRoYW5rcywKR2xlbm4KCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwp0aW4tdXNlcnMgbWFp bGluZyBsaXN0CnRpbi11c2Vyc0B0aW4ub3JnCmh0dHA6Ly9saXN0cy50aW4ub3JnL2NnaS1iaW4v bWFpbG1hbi9saXN0aW5mby90aW4tdXNlcnMK