cgfour patch

foo bar <[email protected]> Wed, 22 Apr 2026 15:31:00 -0400
Newsgroups gmane.os.netbsd.ports.sparc
Message-ID <CAOddDr4gRxTw1qMbnc9JK6-dT4gW9RFFuexXBA1YuXe=J4g5LQ@mail.gmail.com>
--0000000000000a17c906501193fc
Content-Type: text/plain; charset="UTF-8"

Hello all

Attached below is a patch to fix bugs and add wsdisplay support to the
cgfour driver. This is mostly the same as what was discussed on this
list last year. I've tested this patch on two cgfour now, 501-1248-05
rev 50 and 501-1248-09 rev 50.

--0000000000000a17c906501193fc
Content-Type: application/octet-stream; name=cgfour_p3
Content-Disposition: attachment; filename=cgfour_p3
Content-Transfer-Encoding: base64
Content-ID: <f_moag4br60>
X-Attachment-Id: f_moag4br60

SW5kZXg6IHN5cy9kZXYvc3VuL3Bmb3VycmVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jv
b3Qvc3JjL3N5cy9kZXYvc3VuL3Bmb3VycmVnLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC11IC1yMS40IHBmb3VycmVnLmgKLS0tIHN5cy9kZXYvc3VuL3Bmb3VycmVnLmgJMjggQXBy
IDIwMDggMjA6MjM6NTggLTAwMDAJMS40CisrKyBzeXMvZGV2L3N1bi9wZm91cnJlZy5oCTIyIEFw
ciAyMDI2IDE5OjA5OjMzIC0wMDAwCkBAIC02MSwxMiArNjEsMTYgQEAKIC8qIE9mZnNldCBvZiBi
d3R3byBmcmFtZWJ1ZmZlciBmcm9tIHBmb3VyIHJlZ2lzdGVyICovCiAjZGVmaW5lIFBGT1VSX0JX
X09GRgkJMHgwMDEwMDAwMAogCi0vKiBPZmZzZXRzIGZvciBjb2xvciBmcmFtZWJ1ZmZlcnMgKi8K
Ky8qIE9mZnNldHMgZm9yIGNvbG9yIGZyYW1lYnVmZmVycyAKKyAqIFRoZSBQUk9NIGdpdmVzIHVz
IHRoZSBvZmZzZXQgZm9yIHRoZSBwZm91ciByZWdpc3RlcnMKKyAqIHdoaWNoIGFyZSBhdCAweDMw
MDAwMCBpbiB0aGUgcGZvdXIgYWRkcmVzcyBzcGFjZQorICogdGhlc2Ugb2Zmc2V0cyBhcmUgcmVs
ZXRpdmUgdG8gdGhhdAorICovCiAjZGVmaW5lIFBGT1VSX0NPTE9SX09GRl9PVkVSTEFZCTB4MDAx
MDAwMDAKICNkZWZpbmUgUEZPVVJfQ09MT1JfT0ZGX0VOQUJMRQkweDAwMzAwMDAwCiAjZGVmaW5l
IFBGT1VSX0NPTE9SX09GRl9DT0xPUgkweDAwNTAwMDAwCiAjZGVmaW5lIFBGT1VSX0NPTE9SX09G
Rl9FTkQJMHgwMDcwMDAwMAotI2RlZmluZSBQRk9VUl9DT0xPUl9PRkZfQ01BUAkweGZmZjAwMDAw
CS8qICgtMHgwMDEwMDAwMCkgKi8KKyNkZWZpbmUgUEZPVVJfQ09MT1JfT0ZGX0NNQVAJKC0weDAw
MTAwMDAwKQogCiAjZGVmaW5lIFBGT1VSX1JFR19ESUFHCQkweDgwCiAjZGVmaW5lIFBGT1VSX1JF
R19SRUFEQkFDS0NMUgkweDQwCkluZGV4OiBzeXMvYXJjaC9zcGFyYy9jb25mL2ZpbGVzLnNwYXJj
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvYXJjaC9zcGFyYy9jb25mL2Zp
bGVzLnNwYXJjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2NApkaWZmIC11IC1yMS4xNjQgZmls
ZXMuc3BhcmMKLS0tIHN5cy9hcmNoL3NwYXJjL2NvbmYvZmlsZXMuc3BhcmMJMjYgT2N0IDIwMjMg
MTA6NDE6MDMgLTAwMDAJMS4xNjQKKysrIHN5cy9hcmNoL3NwYXJjL2NvbmYvZmlsZXMuc3BhcmMJ
MjIgQXByIDIwMjYgMTk6MDk6MzMgLTAwMDAKQEAgLTI0NSw3ICsyNDUsNyBAQAogYXR0YWNoIGNn
dHdvIGF0IHZtZQogZmlsZQlhcmNoL3NwYXJjL2Rldi9jZ3R3by5jCQljZ3R3byBuZWVkcy1mbGFn
CiAKLWRldmljZSBjZ2ZvdXI6IGJ0X2RhYywgZmIsIHJhc29wczgsIHBmb3VyCitkZXZpY2UgY2dm
b3VyOiBidF9kYWMsIGZiLCBwZm91ciwgcmFzb3BzOCwgd3NlbXVsZGlzcGxheWRldiwgdmNvbnMg
CiBhdHRhY2ggY2dmb3VyIGF0IG9iaW8KIGZpbGUJYXJjaC9zcGFyYy9kZXYvY2dmb3VyLmMJCWNn
Zm91ciBuZWVkcy1mbGFnCiAKSW5kZXg6IHN5cy9hcmNoL3NwYXJjL2Rldi9jZ2ZvdXIuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2FyY2gvc3BhcmMvZGV2L2NnZm91ci5j
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxCmRpZmYgLXUgLXIxLjUxIGNnZm91ci5jCi0tLSBz
eXMvYXJjaC9zcGFyYy9kZXYvY2dmb3VyLmMJMjAgRGVjIDIwMjMgMDU6MzM6MTggLTAwMDAJMS41
MQorKysgc3lzL2FyY2gvc3BhcmMvZGV2L2NnZm91ci5jCTIyIEFwciAyMDI2IDE5OjA5OjMzIC0w
MDAwCkBAIC0xMDEsNiArMTAxLDggQEAKICAqIFhYWCBzaG91bGQgZGVmZXIgY29sb3JtYXAgdXBk
YXRlcyB0byB2ZXJ0aWNhbCByZXRyYWNlIGludGVycnVwdHMKICAqLwogCisjaW5jbHVkZSAid3Nk
aXNwbGF5LmgiCisKICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KIF9fS0VSTkVMX1JDU0lEKDAsICIk
TmV0QlNEOiBjZ2ZvdXIuYyx2IDEuNTEgMjAyMy8xMi8yMCAwNTozMzoxOCB0aG9ycGVqIEV4cCAk
Iik7CiAKQEAgLTEyMiw2ICsxMjQsMTggQEAKICNpbmNsdWRlIDxkZXYvc3VuL2J0dmFyLmg+CiAj
aW5jbHVkZSA8ZGV2L3N1bi9wZm91cnJlZy5oPgogCisjaWYgTldTRElTUExBWSA+IDAKKyNpbmNs
dWRlIDxkZXYvd3Njb25zL3dzY29uc2lvLmg+CisjaW5jbHVkZSA8ZGV2L3dzY29ucy93c2Rpc3Bs
YXlfdmNvbnN2YXIuaD4KKyNpbmNsdWRlIDxkZXYvd3Nmb250L3dzZm9udC5oPgorI2luY2x1ZGUg
PGRldi9yYXNvcHMvcmFzb3BzLmg+CisKKyNpbmNsdWRlICJvcHRfd3NlbXVsLmgiCisjZW5kaWYK
KworI2RlZmluZSBDR0ZPVVJfT1ZFUkxBWV9TSVpFICAgIDB4MjAwMDAKKyNkZWZpbmUgQ0dGT1VS
X1JBTV9TSVpFICAgICAgICAgICAgICAgIDB4MTAwMDAwICAgICAgICAvKiBBbGwgb3VyIGNnZm91
cidzIGFyZSAxTUIgKi8KKwogLyogcGVyLWRpc3BsYXkgdmFyaWFibGVzICovCiBzdHJ1Y3QgY2dm
b3VyX3NvZnRjIHsKIAlzdHJ1Y3QgZmJkZXZpY2UJc2NfZmI7CQkvKiBmcmFtZSBidWZmZXIgZGV2
aWNlICovCkBAIC0xMjksNiArMTQzLDE1IEBACiAJYnVzX2FkZHJfdAlzY19wYWRkcjsJLyogcGh5
cyBhZGRyZXNzIGZvciBkZXZpY2UgbW1hcCgpICovCiAKIAl2b2xhdGlsZSBzdHJ1Y3QgZmJjb250
cm9sICpzY19mYmM7CS8qIEJyb29rdHJlZSByZWdpc3RlcnMgKi8KKyNpZiBOV1NESVNQTEFZID4g
MAorICAgICAgIHVpbnQzMl90IHNjX3dpZHRoOworICAgICAgIHVpbnQzMl90IHNjX2hlaWdodDsg
ICAgICAgICAgICAgLyogZGlzcGxheSB3aWR0aCAvIGhlaWdodCAqLworICAgICAgIHVpbnQzMl90
IHNjX3N0cmlkZTsKKyAgICAgICBpbnQgc2NfbW9kZTsKKyAgICAgICBzdHJ1Y3QgdmNvbnNfZGF0
YSBzY192ZDsKKyAgICAgICBjaGFyICpzY19vdmVybGF5OworICAgICAgIGNoYXIgKnNjX2VuYWJs
ZTsKKyNlbmRpZgogCXVuaW9uIGJ0X2NtYXAJc2NfY21hcDsJLyogQnJvb2t0cmVlIGNvbG9yIG1h
cCAqLwogfTsKIApAQCAtMTc2LDggKzE5OSw1MCBAQAogc3RhdGljIHZvaWQgY2dmb3VybG9hZGNt
YXAoc3RydWN0IGNnZm91cl9zb2Z0YyAqLCBpbnQsIGludCk7CiBzdGF0aWMgaW50IGNnZm91cl9n
ZXRfdmlkZW8oc3RydWN0IGNnZm91cl9zb2Z0YyAqKTsKIHN0YXRpYyB2b2lkIGNnZm91cl9zZXRf
dmlkZW8oc3RydWN0IGNnZm91cl9zb2Z0YyAqLCBpbnQpOwotI2VuZGlmCiAKKyNpZiBOV1NESVNQ
TEFZID4gMAorc3RhdGljIHZvaWQgY2dmb3VyX3NldHVwX3BhbGV0dGUoc3RydWN0IGNnZm91cl9z
b2Z0YyAqKTsKKworc3RydWN0IHdzc2NyZWVuX2Rlc2NyIGNnZm91cl9kZWZhdWx0c2NyZWVuID0g
eworICAgICAgICJzdGQiLAorICAgICAgIDAsIDAsICAgLyogd2lsbCBiZSBmaWxsZWQgaW4gLS0g
WFhYIHNob3VsZG4ndCwgaXQncyBnbG9iYWwgKi8KKyAgICAgICBOVUxMLCAgIC8qIHRleHRvcHMg
Ki8KKyAgICAgICA4LCAxNiwgIC8qIGZvbnQgd2lkdGgvaGVpZ2h0ICovCisgICAgICAgV1NTQ1JF
RU5fV1NDT0xPUlMsICAgICAgLyogY2FwYWJpbGl0aWVzICovCisgICAgICAgTlVMTCAgICAvKiBt
b2RlY29va2llICovCit9OworCitzdGF0aWMgaW50IGNnZm91cl9pb2N0bCh2b2lkICosIHZvaWQg
KiwgdV9sb25nLCB2b2lkICosIGludCwgc3RydWN0IGx3cCAqKTsKK3N0YXRpYyBwYWRkcl90IGNn
Zm91cl9tbWFwKHZvaWQgKiwgdm9pZCAqLCBvZmZfdCwgaW50KTsKK3N0YXRpYyB2b2lkIGNnZm91
cl9pbml0X3NjcmVlbih2b2lkICosIHN0cnVjdCB2Y29uc19zY3JlZW4gKiwgaW50LCBsb25nICop
Oworc3RhdGljIHZvaWQgY2dmb3VyX2NsZWFyX3NjcmVlbihzdHJ1Y3QgY2dmb3VyX3NvZnRjICos
IGludCk7CisKK3N0YXRpYyBpbnQgY2dmb3VyX3B1dGNtYXAoc3RydWN0IGNnZm91cl9zb2Z0YyAq
LCBzdHJ1Y3Qgd3NkaXNwbGF5X2NtYXAgKik7CitzdGF0aWMgaW50IGNnZm91cl9nZXRjbWFwKHN0
cnVjdCBjZ2ZvdXJfc29mdGMgKiwgc3RydWN0IHdzZGlzcGxheV9jbWFwICopOworCitzdHJ1Y3Qg
d3NkaXNwbGF5X2FjY2Vzc29wcyBjZ2ZvdXJfYWNjZXNzb3BzID0geworICAgICAgIC5pb2N0bCA9
IGNnZm91cl9pb2N0bCwKKyAgICAgICAubW1hcCA9IGNnZm91cl9tbWFwLAorICAgICAgIC5hbGxv
Y19zY3JlZW4gPSBOVUxMLAorICAgICAgIC5mcmVlX3NjcmVlbiA9IE5VTEwsCisgICAgICAgLnNo
b3dfc2NyZWVuID0gTlVMTCwKKyAgICAgICAubG9hZF9mb250ID0gTlVMTCwKKyAgICAgICAucG9s
bGMgPSBOVUxMLAorICAgICAgIC5zY3JvbGwgPSBOVUxMCit9OworCitjb25zdCBzdHJ1Y3Qgd3Nz
Y3JlZW5fZGVzY3IgKl9jZ2ZvdXJfc2NybGlzdFtdID0geworICAgICAgICZjZ2ZvdXJfZGVmYXVs
dHNjcmVlbgorfTsKKworc3RydWN0IHdzc2NyZWVuX2xpc3QgY2dmb3VyX3NjcmVlbmxpc3QgPSB7
CisgICAgICAgLm5zY3JlZW5zID0gc2l6ZW9mKF9jZ2ZvdXJfc2NybGlzdCkgLyBzaXplb2Yoc3Ry
dWN0IHdzc2NyZWVuX2Rlc2NyICopLAorICAgICAgIC5zY3JlZW5zID0gX2NnZm91cl9zY3JsaXN0
Cit9OworCitzdGF0aWMgc3RydWN0IHZjb25zX3NjcmVlbiBjZ2ZvdXJfY29uc29sZV9zY3JlZW47
CisjZW5kaWYgLyogTldTRElTUExBWSA+IDAgKi8KKyNlbmRpZiAvKiBTVU40ICovCiAvKgogICog
TWF0Y2ggYSBjZ2ZvdXIuCiAgKi8KQEAgLTIxOCw4ICsyODMsMTIgQEAKIAlidXNfc3BhY2VfaGFu
ZGxlX3QgYmg7CiAJdm9sYXRpbGUgc3RydWN0IGJ0X3JlZ3MgKmJ0OwogCXN0cnVjdCBmYmRldmlj
ZSAqZmIgPSAmc2MtPnNjX2ZiOwotCWludCByYW1zaXplLCBpLCBpc2NvbnNvbGU7Ci0KKwlpbnQg
aSwgaXNjb25zb2xlOworI2lmIE5XU0RJU1BMQVkgPiAwCisgICAgICAgc3RydWN0IHdzZW11bGRp
c3BsYXlkZXZfYXR0YWNoX2FyZ3Mgd3NlbXVsX2FhOworICAgICAgIHN0cnVjdCByYXNvcHNfaW5m
byAqcmkgPSAmY2dmb3VyX2NvbnNvbGVfc2NyZWVuLnNjcl9yaTsKKyAgICAgICB1bnNpZ25lZCBs
b25nIGRlZmF0dHIgPSAwOworI2VuZGlmCiAJc2MtPnNjX2J1c3RhZyA9IG9iYS0+b2JhX2J1c3Rh
ZzsKIAlzYy0+c2NfcGFkZHIgPSAoYnVzX2FkZHJfdClvYmEtPm9iYV9wYWRkcjsKIApAQCAtMjQw
LDEzICszMDksMTIgQEAKIAlmYi0+ZmJfZmxhZ3MgPSBkZXZpY2VfY2ZkYXRhKHNlbGYpLT5jZl9m
bGFncyAmIEZCX1VTRVJNQVNLOwogCWZiLT5mYl9mbGFncyB8PSBGQl9QRk9VUjsKIAotCXJhbXNp
emUgPSBQRk9VUl9DT0xPUl9PRkZfRU5EIC0gUEZPVVJfQ09MT1JfT0ZGX09WRVJMQVk7CiAKIAlm
Yi0+ZmJfdHlwZS5mYl9kZXB0aCA9IDg7CiAJZmJfc2V0c2l6ZV9lZXByb20oZmIsIGZiLT5mYl90
eXBlLmZiX2RlcHRoLCAxMTUyLCA5MDApOwogCiAJZmItPmZiX3R5cGUuZmJfY21zaXplID0gMjU2
OwotCWZiLT5mYl90eXBlLmZiX3NpemUgPSByYW1zaXplOworCWZiLT5mYl90eXBlLmZiX3NpemUg
PSBDR0ZPVVJfUkFNX1NJWkU7CiAJcHJpbnRmKCI6IGNnZm91ci9wNCwgJWQgeCAlZCIsCiAJCWZi
LT5mYl90eXBlLmZiX3dpZHRoLCBmYi0+ZmJfdHlwZS5mYl9oZWlnaHQpOwogCkBAIC0yNjMsMjgg
KzMzMSw0NyBAQAogCQkJaXNjb25zb2xlID0gZmJfaXNfY29uc29sZSgwKTsKIAl9CiAKLSNpZiAw
Ci0JLyoKLQkgKiBXZSBkb24ndCBkbyBhbnkgb2YgdGhlIGNvbnNvbGUgaGFuZGxpbmcgaGVyZS4g
IEluc3RlYWQsCi0JICogd2UgbGV0IHRoZSBid3R3byBkcml2ZXIgcGljayB1cCB0aGUgb3Zlcmxh
eSBwbGFuZSBhbmQKLQkgKiB1c2UgaXQgaW5zdGVhZC4gIFJjb25zb2xlIHNob3VsZCBoYXZlIGJl
dHRlciBwZXJmb3JtYW5jZQotCSAqIHdpdGggdGhlIDEtYml0IGRlcHRoLgotCSAqCS0tIEphc29u
IFIuIFRob3JwZSA8dGhvcnBlakBOZXRCU0Qub3JnPgotCSAqLwotCiAJLyoKIAkgKiBXaGVuIHRo
ZSBST00gaGFzIG1hcHBlZCBpbiBhIGNnZm91ciBkaXNwbGF5LCB0aGUgYWRkcmVzcwogCSAqIG1h
cHMgb25seSB0aGUgdmlkZW8gUkFNLCBzbyBpbiBhbnkgY2FzZSB3ZSBoYXZlIHRvIG1hcCB0aGUK
LQkgKiByZWdpc3RlcnMgb3Vyc2VsdmVzLiAgV2Ugb25seSBuZWVkIHRoZSB2aWRlbyBSQU0gaWYg
d2UgYXJlCi0JICogZ29pbmcgdG8gcHJpbnQgY2hhcmFjdGVycyB2aWEgcmNvbnNvbGUuCisJICog
cmVnaXN0ZXJzIG91cnNlbHZlcy4KIAkgKi8KIAogCWlmIChpc2NvbnNvbGUpIHsKLQkJLyogWFhY
IHRoaXMgaXMga2luZCBvZiBhIHdhc3RlICovCi0JCWZiLT5mYl9waXhlbHMgPSBtYXBpb2Rldihj
YS0+Y2FfcmEucmFfcmVnLAotCQkJCQkgUEZPVVJfQ09MT1JfT0ZGX09WRVJMQVksIHJhbXNpemUp
OwotCX0KLSNlbmRpZgorICAgICAgICAgICAgICAgLyogTWFwIHRoZSBmcmFtZWJ1ZmZlcnMuICov
CisgICAgICAgICAgICAgICBpZiAoYnVzX3NwYWNlX21hcChvYmEtPm9iYV9idXN0YWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmEtPm9iYV9wYWRkciArIFBGT1VSX0NPTE9SX09GRl9P
VkVSTEFZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dGT1VSX09WRVJMQVlfU0laRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVU19TUEFDRV9NQVBfTElORUFSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmJoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiJXM6IGNhbm5vdCBtYXAgb3ZlcmxheSBwbGFuZVxuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBzYy0+c2Nfb3ZlcmxheSA9IChjaGFy
ICopYmg7CisKKyAgICAgICAgICAgICAgIGlmIChidXNfc3BhY2VfbWFwKG9iYS0+b2JhX2J1c3Rh
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iYS0+b2JhX3BhZGRyICsgUEZPVVJfQ09M
T1JfT0ZGX0VOQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENHRk9VUl9PVkVSTEFZ
X1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCVVNfU1BBQ0VfTUFQX0xJTkVBUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaCkgIT0gMCkgeworICAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIiVzOiBjYW5ub3QgbWFwIGVuYWJsZSBwbGFuZVxuIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIHNjLT5zY19l
bmFibGUgID0gKGNoYXIgKiliaDsKKworICAgICAgICAgICAgICAgaWYgKGJ1c19zcGFjZV9tYXAo
b2JhLT5vYmFfYnVzdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JhLT5vYmFfcGFk
ZHIgKyBQRk9VUl9DT0xPUl9PRkZfQ09MT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBD
R0ZPVVJfUkFNX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCVVNfU1BBQ0VfTUFQ
X0xJTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZiaCkgIT0gMCkgeworICAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIiVzOiBjYW5ub3QgbWFwIHBpeGVsc1xuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZV94bmFtZShzZWxmKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGZiLT5m
Yl9waXhlbHMgPSAoY2hhciAqKWJoOworICAgICAgICB9CiAKIAkvKiBNYXAgdGhlIEJyb29rdHJl
ZS4gKi8KIAlpZiAoYnVzX3NwYWNlX21hcChvYmEtPm9iYV9idXN0YWcsCkBAIC0zMDYsMTQgKzM5
Myw5IEBACiAKIAlCVF9JTklUKGJ0LCAyNCk7CiAKLSNpZiAwCS8qIFNlZSBhYm92ZS4gKi8KIAlp
ZiAoaXNjb25zb2xlKSB7CiAJCXByaW50ZigiIChjb25zb2xlKVxuIik7Ci0jaWYgZGVmaW5lZChS
QVNURVJDT05TT0xFKSAmJiAwCS8qIFhYWCBiZWVuIHRvbGQgaXQgZG9lc24ndCB3b3JrIHdlbGwu
ICovCi0JCWZicmNvbnNfaW5pdChmYik7Ci0jZW5kaWYKIAl9IGVsc2UKLSNlbmRpZiAvKiAwICov
CiAJCXByaW50ZigiXG4iKTsKIAogCS8qCkBAIC0zMjEsNiArNDAzLDUwIEBACiAJICogdG8gbm90
aWNlIGlmIHdlJ3JlIHRoZSBjb25zb2xlIGZyYW1lYnVmZmVyLgogCSAqLwogCWZiX2F0dGFjaChm
YiwgaXNjb25zb2xlKTsKKworI2lmIE5XU0RJU1BMQVkgPiAwCisgICAgICAgc2MtPnNjX3dpZHRo
ID0gZmItPmZiX3R5cGUuZmJfd2lkdGg7CisgICAgICAgc2MtPnNjX3N0cmlkZSA9IGZiLT5mYl90
eXBlLmZiX3dpZHRoOworICAgICAgIHNjLT5zY19oZWlnaHQgPSBmYi0+ZmJfdHlwZS5mYl9oZWln
aHQ7CisKKyAgICAgICAvKiBzZXR1cCByYXNvcHMgYW5kIHNvIG9uIGZvciB3c2Rpc3BsYXkgKi8K
KyAgICAgICBzYy0+c2NfbW9kZSA9IFdTRElTUExBWUlPX01PREVfRU1VTDsKKworICAgICAgIHZj
b25zX2luaXQoJnNjLT5zY192ZCwgc2MsICZjZ2ZvdXJfZGVmYXVsdHNjcmVlbiwgJmNnZm91cl9h
Y2Nlc3NvcHMpOworICAgICAgIHNjLT5zY192ZC5pbml0X3NjcmVlbiA9IGNnZm91cl9pbml0X3Nj
cmVlbjsKKworICAgICAgIGlmIChpc2NvbnNvbGUpIHsKKyAgICAgICAgICAgICAgIC8qIHdlIG1l
c3Mgd2l0aCBjZ2ZvdXJfY29uc29sZV9zY3JlZW4gb25seSBvbmNlICovCisgICAgICAgICAgICAg
ICB2Y29uc19pbml0X3NjcmVlbigmc2MtPnNjX3ZkLCAmY2dmb3VyX2NvbnNvbGVfc2NyZWVuLCAx
LAorICAgICAgICAgICAgICAgICAgICZkZWZhdHRyKTsKKyAgICAgICAgICAgICAgIGNnZm91cl9j
bGVhcl9zY3JlZW4oc2MsIChkZWZhdHRyID4+IDE2KSAmIDB4ZmYpOworICAgICAgICAgICAgICAg
Y2dmb3VyX2NvbnNvbGVfc2NyZWVuLnNjcl9mbGFncyB8PSBWQ09OU19TQ1JFRU5fSVNfU1RBVElD
OworCisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi50ZXh0b3BzID0gJnJpLT5y
aV9vcHM7CisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi5jYXBhYmlsaXRpZXMg
PSByaS0+cmlfY2FwczsKKyAgICAgICAgICAgICAgIGNnZm91cl9kZWZhdWx0c2NyZWVuLm5yb3dz
ID0gcmktPnJpX3Jvd3M7CisgICAgICAgICAgICAgICBjZ2ZvdXJfZGVmYXVsdHNjcmVlbi5uY29s
cyA9IHJpLT5yaV9jb2xzOworICAgICAgICAgICAgICAgU0NSRUVOX1ZJU0lCTEUoJmNnZm91cl9j
b25zb2xlX3NjcmVlbik7CisgICAgICAgICAgICAgICBzYy0+c2NfdmQuYWN0aXZlID0gJmNnZm91
cl9jb25zb2xlX3NjcmVlbjsKKyAgICAgICAgICAgICAgIHdzZGlzcGxheV9jbmF0dGFjaCgmY2dm
b3VyX2RlZmF1bHRzY3JlZW4sIHJpLCAwLCAwLCBkZWZhdHRyKTsKKyAgICAgICAgICAgICAgIHZj
b25zX3JlcGxheV9tc2didWYoJmNnZm91cl9jb25zb2xlX3NjcmVlbik7CisgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgKiB3ZSdyZSBub3QgdGhlIGNv
bnNvbGUgc28gd2UganVzdCBjbGVhciB0aGUgc2NyZWVuIGFuZCBkb24ndAorICAgICAgICAgICAg
ICAgICogc2V0IHVwIGFueSBzb3J0IG9mIHRleHQgZGlzcGxheQorICAgICAgICAgICAgICAgICov
CisgICAgICAgfQorCisgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBjb2xvciBtYXAu
ICovCisgICAgICAgY2dmb3VyX3NldHVwX3BhbGV0dGUoc2MpOworCisgICAgICAgd3NlbXVsX2Fh
LnNjcmRhdGEgPSAmY2dmb3VyX3NjcmVlbmxpc3Q7CisgICAgICAgd3NlbXVsX2FhLmNvbnNvbGUg
PSBpc2NvbnNvbGU7CisgICAgICAgd3NlbXVsX2FhLmFjY2Vzc29wcyA9ICZjZ2ZvdXJfYWNjZXNz
b3BzOworICAgICAgIHdzZW11bF9hYS5hY2Nlc3Njb29raWUgPSAmc2MtPnNjX3ZkOworICAgICAg
IGNvbmZpZ19mb3VuZChzZWxmLCAmd3NlbXVsX2FhLCB3c2VtdWxkaXNwbGF5ZGV2cHJpbnQsCisg
ICAgICAgICAgIENGQVJHU19OT05FKTsKKyNlbmRpZiAvKiBOV1NESVNQTEFZID4gMCAqLwogI2Vu
ZGlmIC8qIFNVTjQgKi8KIH0KIApAQCAtNTAzLDQgKzYyOSwxOTkgQEAKIAkJYnQtPmJ0X2NtYXAg
PSBpIDw8IDI0OwogCX0KIH0KKworI2lmIE5XU0RJU1BMQVkgPiAwCitzdGF0aWMgdm9pZAorY2dm
b3VyX3NldHVwX3BhbGV0dGUoc3RydWN0IGNnZm91cl9zb2Z0YyAqc2MpCit7CisgICAgICAgaW50
IGksIGo7CisKKyAgICAgICBqID0gMDsKKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKysp
IHsKKyAgICAgICAgICAgICAgIHNjLT5zY19jbWFwLmNtX21hcFtpXVswXSA9IHJhc29wc19jbWFw
W2pdOworICAgICAgICAgICAgICAgaisrOworICAgICAgICAgICAgICAgc2MtPnNjX2NtYXAuY21f
bWFwW2ldWzFdID0gcmFzb3BzX2NtYXBbal07CisgICAgICAgICAgICAgICBqKys7CisgICAgICAg
ICAgICAgICBzYy0+c2NfY21hcC5jbV9tYXBbaV1bMl0gPSByYXNvcHNfY21hcFtqXTsKKyAgICAg
ICAgICAgICAgIGorKzsKKyAgICAgICB9CisgICAgICAgY2dmb3VybG9hZGNtYXAoc2MsIDAsIDI1
Nik7Cit9CisKK3N0YXRpYyBpbnQKK2NnZm91cl9pb2N0bCh2b2lkICp2LCB2b2lkICp2cywgdV9s
b25nIGNtZCwgdm9pZCAqZGF0YSwgaW50IGZsYWcsCisgICAgc3RydWN0IGx3cCAqbCkKK3sKKyAg
ICAgICAvKiB3ZSdsbCBwcm9iYWJseSBuZWVkIHRvIGFkZCBtb3JlIHN0dWZmIGhlcmUgKi8KKyAg
ICAgICBzdHJ1Y3QgdmNvbnNfZGF0YSAqdmQgPSB2OworICAgICAgIHN0cnVjdCBjZ2ZvdXJfc29m
dGMgKnNjID0gdmQtPmNvb2tpZTsKKyAgICAgICBzdHJ1Y3Qgd3NkaXNwbGF5X2ZiaW5mbyAqd2Rm
OworICAgICAgIHN0cnVjdCB2Y29uc19zY3JlZW4gKm1zID0gc2MtPnNjX3ZkLmFjdGl2ZTsKKyAg
ICAgICBzdHJ1Y3QgcmFzb3BzX2luZm8gKnJpID0gJm1zLT5zY3Jfcmk7CisgICAgICAgc3dpdGNo
IChjbWQpIHsKKyAgICAgICAgICAgICAgIGNhc2UgV1NESVNQTEFZSU9fR1RZUEU6CisgICAgICAg
ICAgICAgICAgICAgICAgICoodV9pbnQgKilkYXRhID0gV1NESVNQTEFZX1RZUEVfU1VOVENYOyAv
KiBYWFggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAg
ICBjYXNlIFdTRElTUExBWUlPX0dJTkZPOgorICAgICAgICAgICAgICAgICAgICAgICB3ZGYgPSAo
dm9pZCAqKWRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgIHdkZi0+aGVpZ2h0ID0gcmktPnJp
X2hlaWdodDsKKyAgICAgICAgICAgICAgICAgICAgICAgd2RmLT53aWR0aCA9IHJpLT5yaV93aWR0
aDsKKyAgICAgICAgICAgICAgICAgICAgICAgd2RmLT5kZXB0aCA9IDg7CisgICAgICAgICAgICAg
ICAgICAgICAgIHdkZi0+Y21zaXplID0gMjU2OworICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKworICAgICAgICAgICAgICAgY2FzZSBXU0RJU1BMQVlJT19HRVRDTUFQOgorICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY2dmb3VyX2dldGNtYXAoc2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RydWN0IHdzZGlzcGxheV9jbWFwICopZGF0YSk7CisgICAgICAgICAg
ICAgICBjYXNlIFdTRElTUExBWUlPX1BVVENNQVA6CisgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjZ2ZvdXJfcHV0Y21hcChzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1
Y3Qgd3NkaXNwbGF5X2NtYXAgKilkYXRhKTsKKworICAgICAgICAgICAgICAgY2FzZSBXU0RJU1BM
QVlJT19TTU9ERToKKyAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBuZXdfbW9kZSA9ICooaW50ICopZGF0YTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChuZXdfbW9kZSAhPSBzYy0+c2NfbW9kZSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPnNjX21vZGUgPSBuZXdfbW9kZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdfbW9kZSA9PSBX
U0RJU1BMQVlJT19NT0RFX0VNVUwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2dmb3VyX3NldHVwX3BhbGV0dGUoc2MpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZ2ZvdXJfY2xlYXJfc2NyZWVuKHNjLCAw
eGZmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNv
bnNfcmVkcmF3X3NjcmVlbihtcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
ICAgY2FzZSBXU0RJU1BMQVlJT19HRVRfRkJJTkZPOgorICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdzZGlzcGxheWlvX2ZiaW5m
byAqZmJpID0gZGF0YTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3
c2Rpc3BsYXlpb19nZXRfZmJpbmZvKCZtcy0+c2NyX3JpLCBmYmkpOworICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgfQorICAgICAgIHJldHVybiBFUEFTU1RIUk9VR0g7Cit9CisKK3N0
YXRpYyBwYWRkcl90CitjZ2ZvdXJfbW1hcCh2b2lkICp2LCB2b2lkICp2cywgb2ZmX3Qgb2Zmc2V0
LCBpbnQgcHJvdCkKK3sKKyAgICAgICBzdHJ1Y3QgdmNvbnNfZGF0YSAqdmQgPSB2OworICAgICAg
IHN0cnVjdCBjZ2ZvdXJfc29mdGMgKnNjID0gdmQtPmNvb2tpZTsKKyAgICAgICBwYWRkcl90IGNv
b2tpZSA9IC0xOworCisgICAgICAgc3dpdGNoIChzYy0+c2NfbW9kZSkgeworICAgICAgIGNhc2Ug
V1NESVNQTEFZSU9fTU9ERV9EVU1CRkI6CisgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IDAg
JiYgb2Zmc2V0IDw9IHNjLT5zY19mYi5mYl90eXBlLmZiX3NpemUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29va2llID0gYnVzX3NwYWNlX21tYXAoc2MtPnNjX2J1c3RhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNjLT5zY19wYWRkciwgUEZPVVJfQ09MT1JfT0ZGX0NPTE9SICsg
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdCwgQlVTX1NQQUNFX01BUF9M
SU5FQVIpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgIH0KKworICAgICAgIHJldHVy
biBjb29raWU7Cit9CisKK3N0YXRpYyBpbnQKK2NnZm91cl9wdXRjbWFwKHN0cnVjdCBjZ2ZvdXJf
c29mdGMgKnNjLCBzdHJ1Y3Qgd3NkaXNwbGF5X2NtYXAgKmNtKQoreworICAgICAgIHVfaW50IGlu
ZGV4ID0gY20tPmluZGV4OworICAgICAgIHVfaW50IGNvdW50ID0gY20tPmNvdW50OworICAgICAg
IGludCBlcnJvcixpOworICAgICAgIGlmIChpbmRleCA+PSAyNTYgfHwgY291bnQgPiAyNTYgfHwg
aW5kZXggKyBjb3VudCA+IDI1NikKKyAgICAgICAgICAgICAgIHJldHVybiBFSU5WQUw7CisKKyAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICB7CisgICAgICAgICAgICAg
ICBlcnJvciA9IGNvcHlpbigmY20tPnJlZFtpXSwKKyAgICAgICAgICAgICAgICAgICAmc2MtPnNj
X2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMF0sIDEpOworICAgICAgICAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICAgICBl
cnJvciA9IGNvcHlpbigmY20tPmdyZWVuW2ldLAorICAgICAgICAgICAgICAgICAgICZzYy0+c2Nf
Y21hcC5jbV9tYXBbaW5kZXggKyBpXVsxXSwKKyAgICAgICAgICAgICAgICAgICAxKTsKKyAgICAg
ICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9y
OworICAgICAgICAgICAgICAgZXJyb3IgPSBjb3B5aW4oJmNtLT5ibHVlW2ldLAorICAgICAgICAg
ICAgICAgICAgICZzYy0+c2NfY21hcC5jbV9tYXBbaW5kZXggKyBpXVsyXSwgMSk7CisgICAgICAg
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
KyAgICAgICB9CisgICAgICAgY2dmb3VybG9hZGNtYXAoc2MsIGluZGV4LCBjb3VudCk7CisKKyAg
ICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY2dmb3VyX2dldGNtYXAoc3RydWN0IGNn
Zm91cl9zb2Z0YyAqc2MsIHN0cnVjdCB3c2Rpc3BsYXlfY21hcCAqY20pCit7CisgICAgICAgdV9p
bnQgaW5kZXggPSBjbS0+aW5kZXg7CisgICAgICAgdV9pbnQgY291bnQgPSBjbS0+Y291bnQ7Cisg
ICAgICAgaW50IGVycm9yLGk7CisKKyAgICAgICBpZiAoaW5kZXggPj0gMjU2IHx8IGNvdW50ID4g
MjU2IHx8IGluZGV4ICsgY291bnQgPiAyNTYpCisgICAgICAgICAgICAgICByZXR1cm4gRUlOVkFM
OworCisgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgeworICAgICAg
ICAgICAgICAgZXJyb3IgPSBjb3B5b3V0KCZzYy0+c2NfY21hcC5jbV9tYXBbaW5kZXggKyBpXVsw
XSwKKyAgICAgICAgICAgICAgICAgICAmY20tPnJlZFtpXSwgMSk7CisgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg
ICAgICAgIGVycm9yID0gY29weW91dCgmc2MtPnNjX2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMV0s
CisgICAgICAgICAgICAgICAgICAgJmNtLT5ncmVlbltpXSwgMSk7CisgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg
ICAgICAgIGVycm9yID0gY29weW91dCgmc2MtPnNjX2NtYXAuY21fbWFwW2luZGV4ICsgaV1bMl0s
CisgICAgICAgICAgICAgICAgICAgJmNtLT5ibHVlW2ldLCAxKTsKKyAgICAgICAgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgIH0K
KworICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorY2dmb3VyX2luaXRfc2NyZWVu
KHZvaWQgKmNvb2tpZSwgc3RydWN0IHZjb25zX3NjcmVlbiAqc2NyLAorICAgIGludCBleGlzdGlu
ZywgbG9uZyAqZGVmYXR0cikKK3sKKyAgICAgICBzdHJ1Y3QgY2dmb3VyX3NvZnRjICpzYyA9IGNv
b2tpZTsKKyAgICAgICBzdHJ1Y3QgcmFzb3BzX2luZm8gKnJpID0gJnNjci0+c2NyX3JpOworCisg
ICAgICAgc2NyLT5zY3JfZmxhZ3MgfD0gVkNPTlNfRE9OVF9SRUFEOworCisgICAgICAgcmktPnJp
X2RlcHRoID0gODsKKyAgICAgICByaS0+cmlfd2lkdGggPSBzYy0+c2Nfd2lkdGg7CisgICAgICAg
cmktPnJpX2hlaWdodCA9IHNjLT5zY19oZWlnaHQ7CisgICAgICAgcmktPnJpX3N0cmlkZSA9IHNj
LT5zY19zdHJpZGU7CisgICAgICAgcmktPnJpX2ZsZyA9IFJJX0NFTlRFUjsKKworICAgICAgIHJp
LT5yaV9iaXRzID0gc2MtPnNjX2ZiLmZiX3BpeGVsczsKKworICAgICAgIHJhc29wc19pbml0KHJp
LCAwLCAwKTsKKyAgICAgICByaS0+cmlfY2FwcyA9IFdTU0NSRUVOX1dTQ09MT1JTIHwgV1NTQ1JF
RU5fUkVWRVJTRTsKKyAgICAgICByYXNvcHNfcmVjb25maWcocmksIHNjLT5zY19oZWlnaHQgLyBy
aS0+cmlfZm9udC0+Zm9udGhlaWdodCwKKyAgICAgICAgICAgc2MtPnNjX3dpZHRoIC8gcmktPnJp
X2ZvbnQtPmZvbnR3aWR0aCk7CisKKyAgICAgICByaS0+cmlfaHcgPSBzY3I7Cit9CisKK3N0YXRp
YyB2b2lkCitjZ2ZvdXJfY2xlYXJfc2NyZWVuKHN0cnVjdCBjZ2ZvdXJfc29mdGMgKnNjLCBpbnQg
YmcpCit7CisgICAgICAgY2hhciAqYml0czsKKworICAgICAgIC8qIFdlIGNhbiB3cml0ZSBhIG1h
eGltdW0gb2YgNCBieXRlcyBhdCBhIHRpbWUgdG8gdGhlIGZyYW1lYnVmZmVyLiAqLworICAgICAg
IGZvciAoYml0cyA9IChjaGFyICopc2MtPnNjX2VuYWJsZTsKKyAgICAgICAgICAgYml0cyA8IChj
aGFyICopc2MtPnNjX2VuYWJsZSArIENHRk9VUl9PVkVSTEFZX1NJWkU7CisgICAgICAgICAgIGJp
dHMgKz0gNCkKKyAgICAgICAgICAgICAgIG1lbXNldChiaXRzLCAgMHgwMCwgNCk7CisKKyAgICAg
ICBmb3IgKGJpdHMgPSAoY2hhciAqKXNjLT5zY19mYi5mYl9waXhlbHM7CisgICAgICAgICAgIGJp
dHMgPCAoY2hhciAqKXNjLT5zY19mYi5mYl9waXhlbHMgKyBzYy0+c2Nfc3RyaWRlICogc2MtPnNj
X2hlaWdodDsKKyAgICAgICAgICAgYml0cyArPSA0KQorICAgICAgICAgICAgICAgbWVtc2V0KGJp
dHMsIGJnLCA0KTsKK30KKyNlbmRpZiAvKiBOV1NESVNQTEFZID4gMCAqLwogI2VuZGlmIC8qIFNV
TjQgKi8K
--0000000000000a17c906501193fc--