NetBSD-Bugs archive

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

Re: kern/60700: Enhancement and man page for PCF8583



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

From: Dave Tyson <dtyson%anduin.org.uk@localhost>
To: Julian Coleman <jdc%coris.org.uk@localhost>, gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/60700: Enhancement and man page for PCF8583
Date: Tue, 29 Sep 2026 20:13:22 +0100

 --=-88t/1wLz9f76B+tjY4kn
 Content-Type: text/plain; charset="UTF-8"
 Content-Transfer-Encoding: quoted-printable
 
 This is an updated patch which addresses points raised by Julian. The
 device does not contain NVRAM and so does not retain info over power
 down unless a battery is attached. The print lines now display the mode
 on the attachment line. The new man page has some updates and
 corrections.
 
 Tested on a RPI Zero 2 under NetBSD current 11.99.8=C2=A0AARCH64
 
 bsciic1 at simplebus1: Broadcom Serial Controller
 bsciic1: interrupting on icu irq 53
 iic1 at bsciic1: I2C bus
 pcfrtc0 at iic1 addr 0x50: PCF8583 Mode 0: 32768 Hz tod clock
 bsciic2 at simplebus1: Broadcom Serial Controller
 bsciic2: interrupting on icu irq 53
 iic2 at bsciic2: I2C bus
 pcfrtc1 at iic2 addr 0x51: PCF8583 Mode 2: Counter
 
 Unified patches against latest current available at
 
 https://penkett.anduin.org.uk/~dtyson/pcf8583/diffs
 
 or in attachment
 
 --=-88t/1wLz9f76B+tjY4kn
 Content-Disposition: attachment; filename="diffs"
 Content-Transfer-Encoding: base64
 Content-Type: text/x-patch; name="diffs"; charset="UTF-8"
 
 LS0tIHBjZjg1ODMuYy5vcmlnCTIwMjUtMDktMDcgMjI6NDU6MTUuMDAwMDAwMDAwICswMTAwCisr
 KyBwY2Y4NTgzLmMJMjAyNi0wOS0yOCAyMzoxNjowNC40MjM3OTE4NzMgKzAxMDAKQEAgLTQwLDYg
 KzQwLDE1IEBACiAgKgogICogVGhpcyBkcml2ZXIgaXMgcGFydGlhbGx5IGRlcml2ZWQgZnJvbSBC
 ZW4gSGFycmlzJ3MgUENGODU4MyBkcml2ZXIKICAqIGZvciBOZXRCU0QvYWNvcm4yNi4KKyAqCisg
 KiBBZGRpdGlvbmFsIGNvZGUgd3JpdHRlbiBieSBEYXZlIFR5c29uIHRvIHN1cHBvcnQgZHVhbCBh
 ZGRyZXNzaW5nIDB4NTAvMHg1MQorICogYW5kIHRvIHNlbGVjdCBjaGlwIG9wZXJhdGluZyBtb2Rl
 IHVzaW5nIG9wdGlvbmFsIGZsYWcgaW4ga2VybmVsIGNvbmZpZy4KKyAqIERlZmF1bHQgd2l0aCBu
 byBmbGFnIHNldCBvciBmbGFnIDAgaXMgZXhpc3RpbmcgdG9kIGNsb2NrIG1vZGUsIGZsYWcgMSBz
 ZXRzCisgKiA1MGh6IGlucHV0ICh0b2QgY2xvY2spLCBmbGFnIDIgc2V0cyBjb3VudGVyIG1vZGUs
 IGZsYWcgMyBzZXRzIHRlc3QgbW9kZS4KKyAqCisgKiBTZXR0aW5nIGNvdW50ZXIgbW9kZSBwcm92
 aWRlcyBhbiBlbnZzeXMgdmFyaWFibGUgbWFwcGVkIHRvIHRoZSBjb3VudGVyIGFuZAorICogZXhw
 b3NlcyBhIGh3IHN5Y3RsIHZhcmlhYmxlIHdoaWNoIGNhbiBzZXQgdG8gMSB0byB6ZXJvIHRoZSBj
 b3VudGVyIHJlZ2lzdGVycworICogYWZ0ZXIgdGhlIG5leHQgZW52c3RhdCBjYWxsLiAKICAqLwog
 CiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CkBAIC00OSw2ICs1OCw3IEBACiAjaW5jbHVkZSA8c3lz
 L3N5c3RtLmg+CiAjaW5jbHVkZSA8c3lzL2RldmljZS5oPgogI2luY2x1ZGUgPHN5cy9rZXJuZWwu
 aD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+CiAjaW5j
 bHVkZSA8c3lzL3Vpby5oPgogI2luY2x1ZGUgPHN5cy9jb25mLmg+CkBAIC01OSw2ICs2OSw3IEBA
 CiAjaW5jbHVkZSA8ZGV2L2kyYy9pMmN2YXIuaD4KICNpbmNsdWRlIDxkZXYvaTJjL3BjZjg1ODNy
 ZWcuaD4KICNpbmNsdWRlIDxkZXYvaTJjL3BjZjg1ODN2YXIuaD4KKyNpbmNsdWRlIDxkZXYvc3lz
 bW9uL3N5c21vbnZhci5oPgogCiAjaW5jbHVkZSAiaW9jb25mLmgiCiAKQEAgLTY4LDEwICs3OSwx
 NSBAQAogCWludCBzY19hZGRyZXNzOwogCWludCBzY19vcGVuOwogCXN0cnVjdCB0b2RyX2NoaXBf
 aGFuZGxlIHNjX3RvZHI7CisJc3RydWN0IHN5c21vbl9lbnZzeXMgKnNjX3NtZTsKKwllbnZzeXNf
 ZGF0YV90IHNjX2NvdW50ZXI7CisJc3RydWN0IHN5c2N0bGxvZyAqc2NfcGNmcnRjbG9nOworCWlu
 dCByZXNldF9jb3VudGVyOwogfTsKIAogc3RhdGljIGludCAgcGNmcnRjX21hdGNoKGRldmljZV90
 LCBjZmRhdGFfdCwgdm9pZCAqKTsKIHN0YXRpYyB2b2lkIHBjZnJ0Y19hdHRhY2goZGV2aWNlX3Qs
 IGRldmljZV90LCB2b2lkICopOworc3RhdGljIGludCBwY2ZydGNfc3lzY3RsX3NldHVwKHN0cnVj
 dCBwY2ZydGNfc29mdGMgKnNjKTsKIAogQ0ZBVFRBQ0hfREVDTF9ORVcocGNmcnRjLCBzaXplb2Yo
 c3RydWN0IHBjZnJ0Y19zb2Z0YyksCiAJcGNmcnRjX21hdGNoLCBwY2ZydGNfYXR0YWNoLCBOVUxM
 LCBOVUxMKTsKQEAgLTEwMiwxMyArMTE4LDE2IEBACiAJCQkgICAgICB1aW50OF90KTsKIHN0YXRp
 YyBpbnQgcGNmcnRjX2dldHRpbWUoc3RydWN0IHRvZHJfY2hpcF9oYW5kbGUgKiwgc3RydWN0IHRp
 bWV2YWwgKik7CiBzdGF0aWMgaW50IHBjZnJ0Y19zZXR0aW1lKHN0cnVjdCB0b2RyX2NoaXBfaGFu
 ZGxlICosIHN0cnVjdCB0aW1ldmFsICopOworc3RhdGljIHZvaWQgcGNmcnRjX3JlYWRjb3VudChz
 dHJ1Y3Qgc3lzbW9uX2VudnN5cyAqLCBlbnZzeXNfZGF0YV90ICopIDsKK3N0YXRpYyBpbnQgcGNm
 cnRjX3N5c2N0bF9jaGVjayhTWVNDVExGTl9BUkdTKTsKIAogaW50CiBwY2ZydGNfbWF0Y2goZGV2
 aWNlX3QgcGFyZW50LCBjZmRhdGFfdCBjZiwgdm9pZCAqYXV4KQogewogCXN0cnVjdCBpMmNfYXR0
 YWNoX2FyZ3MgKmlhID0gYXV4OwogCi0JaWYgKChpYS0+aWFfYWRkciAmIFBDRjg1ODNfQUREUk1B
 U0spID09IFBDRjg1ODNfQUREUikKKwlpZiAoKGlhLT5pYV9hZGRyICYgUENGODU4M19BRERSTUFT
 SykgPT0gUENGODU4M19BRERSIHx8CisJICAgIChpYS0+aWFfYWRkciAmIFBDRjg1ODNfQUREUk1B
 U0spID09IFBDRjg1ODNfQUREUjIpCiAJCXJldHVybiAoSTJDX01BVENIX0FERFJFU1NfT05MWSk7
 CiAKIAlyZXR1cm4gKDApOwpAQCAtMTE4LDUzICsxMzcsMTA0IEBACiBwY2ZydGNfYXR0YWNoKGRl
 dmljZV90IHBhcmVudCwgZGV2aWNlX3Qgc2VsZiwgdm9pZCAqYXV4KQogewogCXN0cnVjdCBwY2Zy
 dGNfc29mdGMgKnNjID0gZGV2aWNlX3ByaXZhdGUoc2VsZik7CisJc3RydWN0IGNmZGF0YSAqY2Yg
 PSBkZXZpY2VfY2ZkYXRhKHNlbGYpOwogCXN0cnVjdCBpMmNfYXR0YWNoX2FyZ3MgKmlhID0gYXV4
 OwotCXVpbnQ4X3QgY21kYnVmWzFdLCBjc3I7CisJdWludDhfdCBjbWRidWZbMV0sIGNzciwgbW9k
 ZTsKKwlpbnQgZXJyb3I7CiAKIAlzYy0+c2NfdGFnID0gaWEtPmlhX3RhZzsKIAlzYy0+c2NfYWRk
 cmVzcyA9IGlhLT5pYV9hZGRyOwogCXNjLT5zY19kZXYgPSBzZWxmOwogCi0JYXByaW50X25haXZl
 KCI6IFJlYWwtdGltZSBDbG9jay9OVlJBTVxuIik7Ci0JYXByaW50X25vcm1hbCgiOiBQQ0Y4NTgz
 IFJlYWwtdGltZSBDbG9jay9OVlJBTVxuIik7CisJLyogaWYgZmxhZ3Mgc2V0ICYgIXplcm8gdGhl
 biBuZWVkIHRvIGNoYW5nZSBkZXZpY2UgbW9kZSAqLwogCisJaWYgKGNmLT5jZl9mbGFncyAhPSAw
 KSB7CisJCW1vZGUgPSBjZi0+Y2ZfZmxhZ3MgPDwgNCAmIFBDRjg1ODNfQ1NSX0ZOX01BU0s7CisJ
 CWNtZGJ1ZlswXSA9IFBDRjg1ODNfUkVHX0NTUjsKKwkJaWYgKGlpY19leGVjKHNjLT5zY190YWcs
 IEkyQ19PUF9XUklURV9XSVRIX1NUT1AsIHNjLT5zY19hZGRyZXNzLAorCSAgICAJIGNtZGJ1Ziwg
 MSwgJm1vZGUsIDEsIDApICE9IDApIHsKKwkJCWFwcmludF9lcnJvcl9kZXYoc2VsZiwgInVuYWJs
 ZSB0byB3cml0ZSBDU1JcbiIpOworCQkJcmV0dXJuOworCQl9CisJfQorIAogCWNtZGJ1ZlswXSA9
 IFBDRjg1ODNfUkVHX0NTUjsKIAlpZiAoaWljX2V4ZWMoc2MtPnNjX3RhZywgSTJDX09QX1JFQURf
 V0lUSF9TVE9QLCBzYy0+c2NfYWRkcmVzcywKIAkgICAgY21kYnVmLCAxLCAmY3NyLCAxLCAwKSAh
 PSAwKSB7CiAJCWFwcmludF9lcnJvcl9kZXYoc2VsZiwgInVuYWJsZSB0byByZWFkIENTUlxuIik7
 CiAJCXJldHVybjsKIAl9Ci0JYXByaW50X25vcm1hbF9kZXYoc2MtPnNjX2RldiwgIiIpOworCiAJ
 c3dpdGNoIChjc3IgJiBQQ0Y4NTgzX0NTUl9GTl9NQVNLKSB7CiAJY2FzZSBQQ0Y4NTgzX0NTUl9G
 Tl8zMjc2OEhaOgotCQlhcHJpbnRfbm9ybWFsKCIgMzIuNzY4IGtIeiBjbG9jayIpOworCQlhcHJp
 bnRfbmFpdmUoIjogTW9kZSAwOiAzMjc2OCBIeiB0b2QgQ2xvY2siKTsKKwkJYXByaW50X25vcm1h
 bCgiOiBQQ0Y4NTgzIE1vZGUgMDogMzI3NjggSHogdG9kIENsb2NrIik7CiAJCWJyZWFrOwogCiAJ
 Y2FzZSBQQ0Y4NTgzX0NTUl9GTl81MEhaOgotCQlhcHJpbnRfbm9ybWFsKCIgNTAgSHogY2xvY2si
 KTsKKwkJYXByaW50X25haXZlKCI6IE1vZGUgMTogNTBIeiB0b2QgQ2xvY2siKTsKKwkJYXByaW50
 X25vcm1hbCgiOiBQQ0Y4NTgzIE1vZGUgMTogNTBIeiB0b2QgQ2xvY2siKTsKIAkJYnJlYWs7CiAK
 IAljYXNlIFBDRjg1ODNfQ1NSX0ZOX0VWRU5UOgotCQlhcHJpbnRfbm9ybWFsKCIgZXZlbnQgY291
 bnRlciIpOworCQlhcHJpbnRfbmFpdmUoIjogTW9kZSAyOiBDb3VudGVyIik7CisJCWFwcmludF9u
 b3JtYWwoIjogUENGODU4MyBNb2RlIDI6IENvdW50ZXIiKTsKIAkJYnJlYWs7CiAKIAljYXNlIFBD
 Rjg1ODNfQ1NSX0ZOX1RFU1Q6Ci0JCWFwcmludF9ub3JtYWwoIiB0ZXN0IG1vZGUiKTsKKwkJYXBy
 aW50X25haXZlKCI6IE1vZGUgMzogVGVzdCBtb2RlIik7CisJCWFwcmludF9ub3JtYWwoIjogUENG
 ODU4MyBNb2RlIDM6IFRlc3QgbW9kZSIpOwogCQlicmVhazsKIAl9Ci0JaWYgKGNzciAmIFBDRjg1
 ODNfQ1NSX1NUT1ApCi0JCWFwcmludF9ub3JtYWwoIiwgc3RvcHBlZCIpOwotCWlmIChjc3IgJiBQ
 Q0Y4NTgzX0NTUl9BTEFSTUVOQUJMRSkKLQkJYXByaW50X25vcm1hbCgiLCBhbGFybSBlbmFibGVk
 Iik7CiAJYXByaW50X25vcm1hbCgiXG4iKTsKIAogCXNjLT5zY19vcGVuID0gMDsKIAotCXNjLT5z
 Y190b2RyLnRvZHJfZGV2ID0gc2VsZjsKLQlzYy0+c2NfdG9kci50b2RyX2dldHRpbWUgPSBwY2Zy
 dGNfZ2V0dGltZTsKLQlzYy0+c2NfdG9kci50b2RyX3NldHRpbWUgPSBwY2ZydGNfc2V0dGltZTsK
 Kwlzd2l0Y2ggKGNzciAmIFBDRjg1ODNfQ1NSX0ZOX01BU0spIHsKKworCWNhc2UgUENGODU4M19D
 U1JfRk5fMzI3NjhIWjoKKwljYXNlIFBDRjg1ODNfQ1NSX0ZOXzUwSFo6CisJCXNjLT5zY190b2Ry
 LnRvZHJfZGV2ID0gc2VsZjsKKwkJc2MtPnNjX3RvZHIudG9kcl9nZXR0aW1lID0gcGNmcnRjX2dl
 dHRpbWU7CisJCXNjLT5zY190b2RyLnRvZHJfc2V0dGltZSA9IHBjZnJ0Y19zZXR0aW1lOworCisJ
 CXRvZHJfYXR0YWNoKCZzYy0+c2NfdG9kcik7CisJCWJyZWFrOwogCi0JdG9kcl9hdHRhY2goJnNj
 LT5zY190b2RyKTsKKwljYXNlIFBDRjg1ODNfQ1NSX0ZOX0VWRU5UOgorCQlpZiAoKHNjLT5zY19z
 bWUgPSBzeXNtb25fZW52c3lzX2NyZWF0ZSgpKSA9PSBOVUxMKSB7CisJCQlhcHJpbnRfZXJyb3Jf
 ZGV2KHNjLT5zY19kZXYsCisJCQkgICJ1bmFibGUgdG8gY3JlYXRlIHN5c21vbiBzdHJ1Y3R1cmUi
 KTsKKwkJCXNjLT5zY19zbWUgPSBOVUxMOworCQkJcmV0dXJuIDsKKwkJfQorCQlzYy0+c2NfY291
 bnRlci51bml0cz1FTlZTWVNfSU5URUdFUjsKKwkJc2MtPnNjX2NvdW50ZXIuc3RhdGU9RU5WU1lT
 X1NJTlZBTElEOworCQlzdHJsY3B5KHNjLT5zY19jb3VudGVyLmRlc2MsICJjb3VudGVyIiwKKwkJ
 IHNpemVvZihzYy0+c2NfY291bnRlci5kZXNjKSk7CisJCWlmIChzeXNtb25fZW52c3lzX3NlbnNv
 cl9hdHRhY2goc2MtPnNjX3NtZSwgJnNjLT5zY19jb3VudGVyKSkgeworCQkJc3lzbW9uX2VudnN5
 c19kZXN0cm95KHNjLT5zY19zbWUpOworCQkJcmV0dXJuOworCQl9CisJCQorCQlzYy0+c2Nfc21l
 LT5zbWVfbmFtZSA9IGRldmljZV94bmFtZShzZWxmKSA7CisJCXNjLT5zY19zbWUtPnNtZV9yZWZy
 ZXNoID0gcGNmcnRjX3JlYWRjb3VudDsKKwkJc2MtPnNjX3NtZS0+c21lX2Nvb2tpZSA9IHNjOwor
 CisJCWlmIChzeXNtb25fZW52c3lzX3JlZ2lzdGVyKHNjLT5zY19zbWUpKSB7CisJCQlzeXNtb25f
 ZW52c3lzX2Rlc3Ryb3koc2MtPnNjX3NtZSk7CisJCQlyZXR1cm47CisJCX0KKworCQkvKiBzZXR1
 cCBzeXNjdGwgZm9yIHJlc2V0dGluZyBjb3VudGVyICovCisKKwkJaWYgKChlcnJvciA9IHBjZnJ0
 Y19zeXNjdGxfc2V0dXAoc2MpKSAhPTApIHsKKwkJCWFwcmludF9lcnJvcl9kZXYoc2MtPnNjX2Rl
 diwgImNhbm5vdCBzZXR1cCBzeXNjdGwgdHJlZSAoJWQpXG4iLCBlcnJvcik7CisJCQlzeXNtb25f
 ZW52c3lzX2Rlc3Ryb3koc2MtPnNjX3NtZSk7CisJCX0KKwkJc2MtPnJlc2V0X2NvdW50ZXIgPSAw
 OworCQlicmVhayA7CisJfQogfQogCiAvKkFSR1NVU0VEKi8KQEAgLTQ5OSwzICs1NjksOTYgQEAK
 IAlpaWNfcmVsZWFzZV9idXModGFnLCAwKTsKIAlyZXR1cm4gKDApOwogfQorCitpbnQgcGNmcnRj
 X3N5c2N0bF9jaGVjayhTWVNDVExGTl9BUkdTKQoreworCXN0cnVjdCBzeXNjdGxub2RlIG5vZGU7
 CisJaW50IHQsIGVycm9yOworCisJdCA9ICooaW50ICopcm5vZGUtPnN5c2N0bF9kYXRhOworCisJ
 bm9kZSA9ICpybm9kZTsKKwlub2RlLnN5c2N0bF9kYXRhID0gJnQ7CisJZXJyb3IgPSBzeXNjdGxf
 bG9va3VwKFNZU0NUTEZOX0NBTEwoJm5vZGUpKTsKKwlpZiAoZXJyb3IgfHwgbmV3cCA9PSBOVUxM
 KQorCQlyZXR1cm4gKGVycm9yKTsKKworCWlmICh0IDwgMCB8fCB0ID4gMSkKKwkJcmV0dXJuIChF
 SU5WQUwpOworCisJKihpbnQgKilybm9kZS0+c3lzY3RsX2RhdGEgPSB0OworCXJldHVybiAwOwor
 fQorCitzdGF0aWMgaW50IHBjZnJ0Y19zeXNjdGxfc2V0dXAoc3RydWN0IHBjZnJ0Y19zb2Z0YyAq
 c2MpCit7CisJaW50IGVycm9yOworCWNvbnN0IHN0cnVjdCBzeXNjdGxub2RlICpjbm9kZTsKKwlp
 bnQgc3lzY3Rscm9vdF9udW07CisKKwlpZiAoKGVycm9yID0gc3lzY3RsX2NyZWF0ZXYoJnNjLT5z
 Y19wY2ZydGNsb2csIDAsIE5VTEwsICZjbm9kZSwKKwkJMCwgQ1RMVFlQRV9OT0RFLCBkZXZpY2Vf
 eG5hbWUoc2MtPnNjX2RldiksCisJCVNZU0NUTF9ERVNDUigicGNmcnRjIGNvdW50ZXIgcmVzZXQi
 KSwgTlVMTCwgMCwgTlVMTCwgMCwKKwkJQ1RMX0hXLCBDVExfQ1JFQVRFLCBDVExfRU9MKSkgIT0g
 MCkKKwkJcmV0dXJuIGVycm9yOworCXN5c2N0bHJvb3RfbnVtID0gY25vZGUtPnN5c2N0bF9udW07
 CisKKwlpZiAoKGVycm9yID0gc3lzY3RsX2NyZWF0ZXYoJnNjLT5zY19wY2ZydGNsb2csIDAsIE5V
 TEwsICZjbm9kZSwKKwkJQ1RMRkxBR19SRUFEV1JJVEUsIENUTFRZUEVfSU5ULCAiY291bnRlcl9y
 ZXNldCIsCisJCVNZU0NUTF9ERVNDUigiY291bnRlciByZXNldCIpLCBwY2ZydGNfc3lzY3RsX2No
 ZWNrLCAwLAorCQkmc2MtPnJlc2V0X2NvdW50ZXIsIDAsIENUTF9IVywKKwkJc3lzY3Rscm9vdF9u
 dW0sIENUTF9DUkVBVEUsIENUTF9FT0wpKSAhPSAwKQorCQlyZXR1cm4gZXJyb3I7CisJcmV0dXJu
 IDA7Cit9CisKK3N0YXRpYyB2b2lkIHBjZnJ0Y19yZWFkY291bnQoc3RydWN0IHN5c21vbl9lbnZz
 eXMgKnNtZSwgZW52c3lzX2RhdGFfdCAqZWRhdGEpCit7CisJc3RydWN0IHBjZnJ0Y19zb2Z0YyAq
 c2MgPSBzbWUtPnNtZV9jb29raWU7CisJaW50IGVyciwgaTsKKwl1aW50OF90IGJjZFszXSxjbWRi
 dWZbMV07CisJdWludDhfdCB6ZXJvPTA7CisgCisJaWYgKChlcnIgPSBpaWNfYWNxdWlyZV9idXMo
 c2MtPnNjX3RhZywgMCkpKSB7CisJCWFwcmludF9lcnJvcl9kZXYoc2MtPnNjX2RldiwKKwkJICAg
 ICJwY2ZydGNfcmVhZGNvdW50OiBmYWlsZWQgdG8gYWNxdWlyZSBJMkMgYnVzXG4iKTsKKwkJcmV0
 dXJuOworCX0KKworCWZvciAoaSA9IFBDRjg1ODNfQ09VTlRFUjA7IGkgPD0gUENGODU4M19DT1VO
 VEVSMjsgaSsrKSB7CisgICAgICAgICAgICAgICAgY21kYnVmWzBdID0gaTsKKyAgICAgICAgICAg
 ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoKGVyciA9IGlpY19leGVjKHNjLT5zY190YWcsIEky
 Q19PUF9SRUFEX1dJVEhfU1RPUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPnNj
 X2FkZHJlc3MsIGNtZGJ1ZiwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJjZFtp
 LTFdLCAxLCAwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlpY19yZWxlYXNlX2J1cyhz
 Yy0+c2NfdGFnLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcmludF9lcnJvcl9kZXYo
 c2MtPnNjX2RldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGNmcnRjX3JlYWRjb3Vu
 dDogZmFpbGVkIHRvIHJlYWQgcmVnaXN0ZXIgYXQgJXhcbiIsIGkpOworICAgICAgICAgICAgICAg
 ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorCisJZWRh
 dGEtPnZhbHVlX2N1ciA9IGJjZHRvYmluKGJjZFswXSkgKyBiY2R0b2JpbihiY2RbMV0pKjEwMCAr
 IGJjZHRvYmluKGJjZFsyXSkqMTAwMDAgOworCWVkYXRhLT5zdGF0ZSA9IEVOVlNZU19TVkFMSUQg
 OworCQorCS8qIGlmIHJlc2V0X2NvdW50ZXIgPSAxIHRoZW4gY2xlYXIgdG90YWxzICovCisKKwlp
 ZiAoc2MtPnJlc2V0X2NvdW50ZXIgIT0gMCkgeworCQlmb3IgKGkgPSBQQ0Y4NTgzX0NPVU5URVIw
 OyBpIDw9IFBDRjg1ODNfQ09VTlRFUjI7IGkrKykgeworICAgICAgICAgICAgICAgIAljbWRidWZb
 MF0gPSBpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAlpZiAoKGVyciA9IGlp
 Y19leGVjKHNjLT5zY190YWcsIEkyQ19PUF9XUklURV9XSVRIX1NUT1AsCisJCQkJCXNjLT5zY19h
 ZGRyZXNzLCBjbWRidWYsIDEsICZ6ZXJvLCAxLCAwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
 ICAgIAlpaWNfcmVsZWFzZV9idXMoc2MtPnNjX3RhZywgMCk7CisgICAgICAgICAgICAgICAgICAg
 ICAgICAJYXByaW50X2Vycm9yX2RldihzYy0+c2NfZGV2LAorCQkJCQkicGNmcnRjX3JlYWRjb3Vu
 dDogZmFpbGVkIHRvIHdyaXRlIHJlZ2lzdGVyIGF0ICV4XG4iLCBpKTsKKwkJCQlyZXR1cm47Cisg
 ICAgICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAKKwkJc2MtPnJlc2V0X2NvdW50ZXIgPSAw
 IDsKKwl9CisKKwlpaWNfcmVsZWFzZV9idXMoc2MtPnNjX3RhZywgMCk7Cit9CgotLS0gcGNmODU4
 M3JlZy5oLm9yaWcJMjAxMy0wOC0wNyAyMDozODo0NS4wMDAwMDAwMDAgKzAxMDAKKysrIHBjZjg1
 ODNyZWcuaAkyMDI2LTA5LTI4IDE0OjQzOjU4LjczMDY5NDQyMiArMDEwMApAQCAtMjIsNiArMjIs
 NyBAQAogICovCiAjZGVmaW5lIFBDRjg1ODNfQUREUk1BU0sJMHgzZmYKICNkZWZpbmUgUENGODU4
 M19BRERSCQkweDUwCisjZGVmaW5lIFBDRjg1ODNfQUREUjIJCTB4NTEKIAogI2RlZmluZSBQQ0Y4
 NTgzX1JFR19DU1IJCTB4MDAKICNkZWZpbmUgUENGODU4M19SRUdfQ0VOVEkJMHgwMQpAQCAtODYs
 NCArODcsNyBAQAogI2RlZmluZSBQQ0Y4NTgzX0FMTUNUTF9USU1FUkFMTQkJMHg0MAogI2RlZmlu
 ZSBQQ0Y4NTgzX0FMTUNUTF9BTE1JTlQJCTB4ODAKIAorI2RlZmluZSBQQ0Y4NTgzX0NPVU5URVIw
 CQkweDAxCisjZGVmaW5lIFBDRjg1ODNfQ09VTlRFUjEJCTB4MDIKKyNkZWZpbmUgUENGODU4M19D
 T1VOVEVSMgkJMHgwMwogI2VuZGlmCS8qIF9QQ0Y4NTgzUkVHX0ggKi8KCi0tLSAvZGV2L251bGwJ
 MjAyNi0wOS0yOSAxODo0MzoxMS41NjIwODk0MTIgKzAxMDAKKysrIHBjZjg1ODMuNAkyMDI2LTA5
 LTI4IDIzOjExOjQ5Ljk4MzU0MjY0NiArMDEwMApAQCAtMCwwICsxLDc5IEBACisuXCIKKy5cIiBD
 b3B5cmlnaHQgKGMpIDIwMjYgRGF2ZSBUeXNvbiA8ZHR5c29uQGFuZHVpbi5vcmcudWs+CisuXCIK
 Ky5cIiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlz
 IHNvZnR3YXJlIGZvciBhbnkKKy5cIiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVy
 ZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisuXCIgY29weXJpZ2h0IG5vdGlj
 ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKy5cIgor
 LlwiIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NM
 QUlNUyBBTEwgV0FSUkFOVElFUworLlwiIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5D
 TFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKy5cIiBNRVJDSEFOVEFCSUxJVFkgQU5E
 IEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgorLlwi
 IEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
 T1IgQU5ZIERBTUFHRVMKKy5cIiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNF
 LCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKy5cIiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
 IE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgorLlwi
 IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09G
 VFdBUkUuCisuXCIKKy5EZCBPY3RvYmVyIDEsIDIwMjYKKy5EdCBQQ0Y4NTgzCisuT3MKKy5TaCBO
 QU1FCisuTm0gcGNmODU4MworLk5kIERyaXZlciBmb3IgTlBYIFBDRjg1ODMgQ2xvY2sgYW5kIENh
 bGVuZGFyL0NvdW50ZXIvMjQwIHggOGJpdCBSQU0KK3ZpYSBJMkMgYnVzCisuU2ggU1lOT1BTSVMK
 Ky5DZCAicGNmcnRjKiBhdCBpaWM/IGFkZHIgMHg1MCIKKy5DZCAicGNmcnRjKiBhdCBpaWM/IGFk
 ZHIgMHg1MCBmbGFncyB4IgorLkNkICJwY2ZydGMqIGF0IGlpYz8gYWRkciAweDUxIgorLkNkICJw
 Y2ZydGMqIGF0IGlpYz8gYWRkciAweDUxIGZsYWdzIHgiCisuU2ggREVTQ1JJUFRJT04KK1RoZQor
 Lk5tCitkcml2ZXIgc3VwcG9ydHMgdGhlIFBDRjg1ODMgbXVsdGlmdW5jdGlvbiBjaGlwIHdoaWNo
 IGNhbiBvcGVyYXRlIGluIG9uZSBvZiBmb3VyIG1vZGVzCitkZXBlbmRpbmcgb24gdGhlIHZhbHVl
 IG9mIHRoZSBmbGFnIFtpZiBzcGVjaWZpZWRdOgorLkJsIC10YWcKKy5JdCBtb2RlIDAgLSBDbG9j
 ayAmIENhbGVuZGFyIHVzaW5nIGEgMzI3NjggaHogY3J5c3RhbC4KK1RoaXMgaXMgdGhlIGRlZmF1
 bHQgbW9kZSBpbiB0aGUgYWJzZW5jZSBvZiBhIGZsYWdzIGZpZWxkIGFuZCBpcyB0aGUgc3RhdGUg
 d2hlbiBhCitwb3dlci1vbiByZXNldCBvY2N1cnMuCisuSXQgbW9kZSAxIC0gQ2xvY2sgJiBDYWxl
 bmRhciB1c2luZyBleHRlcm5hbCA1MCBIeiBjbG9jay4KK1NpbWlsYXIgdG8gbW9kZSAwLCBidXQg
 cmVsaWVzIG9uIGFuIGV4dGVybmFsIGNsb2NrIHNvdXJjZSByYXRoZXIgdGhhbiBhIGNyeXN0YWwu
 CisuSXQgbW9kZSAyIC0gQ291bnRlciBmb3IgZXh0ZXJuYWwgaW5wdXRzLgorVGhlIGNsb2NrICYg
 Y2FsZW5kYXIgYXJlIGRpc2FibGVkIGFuZCB0aGUgZGV2aWNlIGNvdW50cyBleHRlcm5hbCBldmVu
 dHMgdXNpbmcgYSAzIGJ5dGUKK2JjZCBjb3VudGVyIFswLTk5OTk5OV0uCisuSXQgbW9kZSAzIC0g
 VGVzdCBtb2RlLgorVGhpcyBpcyB1bmRvY3VtZW50ZWQgYW5kIHVubGlrZWx5IHRvIGJlIHVzZWZ1
 bC4gCisuRWwKKy5QcAorVGhlCisuTm0KK2RyaXZlciBpcyBjb21tb25seSB1c2VkIHRvIHN1cHBv
 cnQgYSBSZWFsIFRpbWUgQ2xvY2sgdXNpbmcgYSAzMjc2OCBoeiBjcnlzdGFsIGFuZCBhIGJhY2t1
 cCBiYXR0ZXJ5LiBJdCBhbHNvIHByb3ZpZGVzIGEgc21hbGwgYW1vdW50IG9mIGJhdHRlcnkgYmFj
 a2VkIFJBTSB3aGljaCBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgZm9yIGJvb3RzdHJhcHBpbmcgYWNv
 cm4zMiBzeXN0ZW0uIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBhbiBleHRlcm5hbCA1MGh6IGNsb2Nr
 IGJ5IHN3aXRjaGluZyB0byBtb2RlIDEgLSB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCB3aXRoIGEgRXVy
 b3BlYW4gbWFpbnMgZGVyaXZlZCBzaWduYWwgYXMgdGhlIGxvbmcgdGVybSBkcmlmdCBpcyBsaWtl
 bHkgdG8gYmUgbGVzcyB0aGFuIGFuIHVuc3RhYmlsaXNlZCBjcnlzdGFsLiBBY2Nlc3MgbWV0aG9k
 cyB0byByZXRyaWV2ZSBhbmQgc2V0IGRhdGUgYW5kIHRpbWUgYXJlIHByb3ZpZGVkIHRocm91Z2gg
 dGhlCisuRW0gVE9EUgoraW50ZXJmYWNlIGRlZmluZWQgaW4KKy5YciB0b2RyIDkgLgorLlBwCitT
 d2l0Y2hpbmcgdG8gbW9kZSAyIHByb3ZpZGVzIGFjY2VzcyB0byBhIDYgZGlnaXQgQkNEIGNvdW50
 ZXIgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY291bnQgYXJiaXRhcnkgZXh0ZXJuYWwgZXZlbnRzLiBU
 aGUgZHJpdmVyIG1hcHMgdGhpcyBjb3VudGVyIHRvIGFuIGludGVnZXIgZW52c3RhdCB2YXJpYWJs
 ZSB3aGljaCBjYW4gYmUgcmVhZCB2aWEgdGhlIG5vcm1hbCBlbnZzdGF0IHN1YnN5c3RlbSBhbmQg
 YWxzbyBleHBvc2VzIGEgc3lzY3RsIHZhcmlhYmxlIHRvIGFsbG93IHRoZSBjb3VudGVyIHRvIGJl
 IHJlc2V0LgorLlNoIFNZU0NUTCBWQVJJQUJMRVMKK0luIG1vZGUgMiB0aGUgZm9sbG93aW5nCisu
 WHIgc3lzY3RsIDMKK3ZhcmlhYmxlcyBhcmUgcHJvdmlkZWQ6CisuQmwgLXRhZyAtd2lkdGggaW5k
 ZW50CisuSXQgTGkgaHcucGNmcnRjMS5jb3VudGVyX3Jlc2V0CitJZiB0aGlzIGlzIHNldCB0byAx
 IHRoZW4gdGhlIG5leHQgcmVhZCBvZiB0aGUgZW52c3RhdCBjb3VudGVyIGNhdXNlcyB0aGUgQkNE
 IGNvdW50ZXIgdG8gYmUgemVyb2VkIGFuZCByZXNldHMgdGhlIHN5c2N0bCB2YXJpYWJsZSBiYWNr
 IHRvIHplcm8uCisuU2ggU0VFIEFMU08KKy5YciB0b2RyIDkgLCAKKy5YciBlbnZzdGF0IDggLCAK
 Ky5YciBzeXNjdGwgOAorLlNoIEhJU1RPUlkKK1RoZQorLk5tCitkcml2ZXIgZmlyc3QgYXBwZWFy
 ZWQgaW4KKy5OeCAxLjAgLgorLlNoIEJVR1MKK1RoZSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0
 aGUgY2hpcCdzIGFsYXJtIGFuZCB0aW1lciBmZWF0dXJlcy4KKy5TaCBBVVRIT1JTCitUaGUKKy5O
 bQorZHJpdmVyIHdhcyB3cml0dGVuIGJ5IFN0ZXZlIEMuIFdvb2Rmb3JkIGFuZCBKYXNvbiBSLiBU
 aG9ycGUgZm9yIFdhc2FiaSBTeXN0ZW1zLCBJbmMuIGJhc2VkIG9uIEJlbiBIYXJyaXMncyBQQ0Y4
 NTgzIGRyaXZlciBmb3IgTmV0QlNEL2Fjb3JuMjYuCisuUHAKK1N1YnNlcXVlbnQgbW9kaWZpY2F0
 aW9ucyB0byBzdXBwb3J0IG90aGVyIG1vZGVzIGJ5CisuQW4gRGF2ZSBUeXNvbiBBcSBNdCBkdHlz
 b25AYW5kdWluLm9yZy51aworIAo=
 
 
 --=-88t/1wLz9f76B+tjY4kn--
 



Home | Main Index | Thread Index | Old Index