Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 02 Sep 2004 01:24:34 +0800
From:      Deng XueFeng <dsnofe@msn.com>
To:        "Cyrille Lefevre" <clefevre-lists@9online.fr>
Cc:        current@freebsd.org
Subject:   Re: [BETA PATCH] VESA mode support for syscons
Message-ID:  <20040902012216.E864.DSNOFE@msn.com>
In-Reply-To: <002f01c49020$5e9df560$7890a8c0@gits.invalid>
References:  <BAY11-DAV3OkevWWGxe00021773@hotmail.com> <002f01c49020$5e9df560$7890a8c0@gits.invalid>

next in thread | previous in thread | raw e-mail | index | archive | help
--------_41360548E86503B477C0_MULTIPART_MIXED_
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit

This is the new patch.
but i haven't  test du to the limit of opt_sche.h
you can try this patch after current is not broken.
I wanna go to sleep.
so sleepy.
Zzzzzzzz...

Sincerely,
Deng XueFeng
MSN: dsnofe@msn.com
http://www.dengh.com

--------_41360548E86503B477C0_MULTIPART_MIXED_
Content-Type: application/octet-stream;
 name="freebsd-syscons-patch-0902.diff"
Content-Disposition: attachment;
 filename="freebsd-syscons-patch-0902.diff"
Content-Transfer-Encoding: base64

PyBmcmVlYnNkLXN5c2NvbnMtcGF0Y2gtMDkwMi5kaWZmCj8gbmV3LmRpZmYKPyBzeXNjb25zLmRp
ZmYKSW5kZXg6IHNjdmVzYWN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3Jj
L3N5cy9kZXYvc3lzY29ucy9zY3Zlc2FjdGwuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMApk
aWZmIC11IC1yMS4yMCBzY3Zlc2FjdGwuYwotLS0gc2N2ZXNhY3RsLmMJMTYgSnVuIDIwMDQgMDk6
NDY6NTggLTAwMDAJMS4yMAorKysgc2N2ZXNhY3RsLmMJMSBTZXAgMjAwNCAxNzowNDoxNSAtMDAw
MApAQCAtMiw2ICsyLDkgQEAKICAqIENvcHlyaWdodCAoYykgMTk5OCBLYXp1dGFrYSBZT0tPVEEg
PHlva290YUB6b2RpYWMubWVjaC51dHN1bm9taXlhLXUuYWMuanA+CiAgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKKyAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJp
YnV0ZWQgdG8gVGhlIERyYWdvbkZseSBQcm9qZWN0CisgKiBieSBTYXNjaGEgV2lsZG5lciA8c2F3
QG9ubGluZS5kZT4KKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoK
QEAgLTEwNSw2ICsxMDgsMTcgQEAKIAkJCXJldHVybiBFTk9ERVY7CiAJCW1vZGUgPSAoY21kICYg
MHhmZikgKyBNX1ZFU0FfQkFTRTsKIAkJcmV0dXJuIHNjX3NldF9ncmFwaGljc19tb2RlKHNjcCwg
dHAsIG1vZGUpOworCWRlZmF1bHQ6CisJCWlmIChJT0NHUk9VUChjbWQpID09ICdWJykgeworCQkJ
aWYgKCEoc2NwLT5zYy0+YWRwLT52YV9mbGFncyAmIFZfQURQX01PREVDSEFOR0UpKQorCQkJCXJl
dHVybiBFTk9ERVY7CisKKwkJCW1vZGUgPSAoY21kICYgMHhmZikgKyBNX1ZFU0FfQkFTRTsKKwor
CQkJaWYgKChtb2RlID4gTV9WRVNBX0ZVTExfMTI4MCkgJiYKKwkJCSAgICAobW9kZSA8IE1fVkVT
QV9NT0RFX01BWCkpCisJCQkJcmV0dXJuIHNjX3NldF9ncmFwaGljc19tb2RlKHNjcCwgdHAsIG1v
ZGUpOworCQl9CiAJfQogCiAJaWYgKHByZXZfdXNlcl9pb2N0bCkKSW5kZXg6IHNjdmdhcm5kci5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9kZXYvc3lzY29ucy9zY3Zn
YXJuZHIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpkaWZmIC11IC1yMS4xNSBzY3ZnYXJu
ZHIuYwotLS0gc2N2Z2FybmRyLmMJMzAgTWF5IDIwMDQgMjA6MDg6NDIgLTAwMDAJMS4xNQorKysg
c2N2Z2FybmRyLmMJMSBTZXAgMjAwNCAxNzowNDoxNiAtMDAwMApAQCAtMiw2ICsyLDkgQEAKICAq
IENvcHlyaWdodCAoYykgMTk5OSBLYXp1dGFrYSBZT0tPVEEgPHlva290YUB6b2RpYWMubWVjaC51
dHN1bm9taXlhLXUuYWMuanA+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKKyAqIFRoaXMg
Y29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhlIERyYWdvbkZs
eSBQcm9qZWN0CisgKiBieSBTYXNjaGEgV2lsZG5lciA8c2F3QG9ubGluZS5kZT4KKyAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKQEAgLTYzLDE1ICs2NiwyMiBAQAog
I2VuZGlmCiAKICNpZmRlZiBTQ19QSVhFTF9NT0RFCi1zdGF0aWMgdnJfY2xlYXJfdAkJdmdhX3B4
bGNsZWFyOwotc3RhdGljIHZyX2RyYXdfYm9yZGVyX3QJCXZnYV9weGxib3JkZXI7CitzdGF0aWMg
dnJfaW5pdF90CQl2Z2Ffcm5kcmluaXQ7CitzdGF0aWMgdnJfY2xlYXJfdAkJdmdhX3B4bGNsZWFy
X2RpcmVjdDsKK3N0YXRpYyB2cl9jbGVhcl90CQl2Z2FfcHhsY2xlYXJfcGxhbmFyOworc3RhdGlj
IHZyX2RyYXdfYm9yZGVyX3QJCXZnYV9weGxib3JkZXJfZGlyZWN0Oworc3RhdGljIHZyX2RyYXdf
Ym9yZGVyX3QJCXZnYV9weGxib3JkZXJfcGxhbmFyOwogc3RhdGljIHZyX2RyYXdfdAkJdmdhX2Vn
YWRyYXc7Ci1zdGF0aWMgdnJfZHJhd190CQl2Z2FfdmdhZHJhdzsKK3N0YXRpYyB2cl9kcmF3X3QJ
CXZnYV92Z2FkcmF3X2RpcmVjdDsKK3N0YXRpYyB2cl9kcmF3X3QJCXZnYV92Z2FkcmF3X3BsYW5h
cjsKIHN0YXRpYyB2cl9zZXRfY3Vyc29yX3QJCXZnYV9weGxjdXJzb3Jfc2hhcGU7Ci1zdGF0aWMg
dnJfZHJhd19jdXJzb3JfdAkJdmdhX3B4bGN1cnNvcjsKLXN0YXRpYyB2cl9ibGlua19jdXJzb3Jf
dAl2Z2FfcHhsYmxpbms7CitzdGF0aWMgdnJfZHJhd19jdXJzb3JfdAkJdmdhX3B4bGN1cnNvcl9k
aXJlY3Q7CitzdGF0aWMgdnJfZHJhd19jdXJzb3JfdAkJdmdhX3B4bGN1cnNvcl9wbGFuYXI7Citz
dGF0aWMgdnJfYmxpbmtfY3Vyc29yX3QJdmdhX3B4bGJsaW5rX2RpcmVjdDsKK3N0YXRpYyB2cl9i
bGlua19jdXJzb3JfdAl2Z2FfcHhsYmxpbmtfcGxhbmFyOwogI2lmbmRlZiBTQ19OT19DVVRQQVNU
RQotc3RhdGljIHZyX2RyYXdfbW91c2VfdAkJdmdhX3B4bG1vdXNlOworc3RhdGljIHZyX2RyYXdf
bW91c2VfdAkJdmdhX3B4bG1vdXNlX2RpcmVjdDsKK3N0YXRpYyB2cl9kcmF3X21vdXNlX3QJCXZn
YV9weGxtb3VzZV9wbGFuYXI7CiAjZWxzZQogI2RlZmluZSB2Z2FfcHhsbW91c2UJCSh2cl9kcmF3
X21vdXNlX3QgKil2Z2Ffbm9wCiAjZW5kaWYKQEAgLTg0LDYgKzk0LDcgQEAKIHN0YXRpYyB2b2lk
CQkJdmdhX25vcChzY3Jfc3RhdCAqc2NwLCAuLi4pOwogCiBzdGF0aWMgc2Nfcm5kcl9zd190IHR4
dHJuZHJzdyA9IHsKKwkodnJfaW5pdF90ICopdmdhX25vcCwKIAl2Z2FfdHh0Y2xlYXIsCiAJdmdh
X3R4dGJvcmRlciwKIAl2Z2FfdHh0ZHJhdywJCkBAIC0xMDAsMzIgKzExMSwzNSBAQAogCiAjaWZk
ZWYgU0NfUElYRUxfTU9ERQogc3RhdGljIHNjX3JuZHJfc3dfdCBlZ2FybmRyc3cgPSB7Ci0Jdmdh
X3B4bGNsZWFyLAotCXZnYV9weGxib3JkZXIsCisJKHZyX2luaXRfdCAqKXZnYV9ub3AsCisJdmdh
X3B4bGNsZWFyX3BsYW5hciwKKwl2Z2FfcHhsYm9yZGVyX3BsYW5hciwKIAl2Z2FfZWdhZHJhdywK
IAl2Z2FfcHhsY3Vyc29yX3NoYXBlLAotCXZnYV9weGxjdXJzb3IsCi0JdmdhX3B4bGJsaW5rLAor
CXZnYV9weGxjdXJzb3JfcGxhbmFyLAorCXZnYV9weGxibGlua19wbGFuYXIsCiAJKHZyX3NldF9t
b3VzZV90ICopdmdhX25vcCwKLQl2Z2FfcHhsbW91c2UsCisJdmdhX3B4bG1vdXNlX3BsYW5hciwK
IH07CiBSRU5ERVJFUihlZ2EsIFBJWEVMX01PREUsIGVnYXJuZHJzdywgdmdhX3NldCk7CiAKIHN0
YXRpYyBzY19ybmRyX3N3X3Qgdmdhcm5kcnN3ID0gewotCXZnYV9weGxjbGVhciwKLQl2Z2FfcHhs
Ym9yZGVyLAotCXZnYV92Z2FkcmF3LAorCXZnYV9ybmRyaW5pdCwKKwkodnJfY2xlYXJfdCAqKXZn
YV9ub3AsCisJKHZyX2RyYXdfYm9yZGVyX3QgKil2Z2Ffbm9wLAorCSh2cl9kcmF3X3QgKil2Z2Ff
bm9wLAogCXZnYV9weGxjdXJzb3Jfc2hhcGUsCi0JdmdhX3B4bGN1cnNvciwKLQl2Z2FfcHhsYmxp
bmssCisJKHZyX2RyYXdfY3Vyc29yX3QgKil2Z2Ffbm9wLAorCSh2cl9ibGlua19jdXJzb3JfdCAq
KXZnYV9ub3AsCiAJKHZyX3NldF9tb3VzZV90ICopdmdhX25vcCwKLQl2Z2FfcHhsbW91c2UsCisJ
KHZyX2RyYXdfbW91c2VfdCAqKXZnYV9ub3AsCiB9OwogUkVOREVSRVIodmdhLCBQSVhFTF9NT0RF
LCB2Z2FybmRyc3csIHZnYV9zZXQpOwogI2VuZGlmIC8qIFNDX1BJWEVMX01PREUgKi8KIAogI2lm
bmRlZiBTQ19OT19NT0RFX0NIQU5HRQogc3RhdGljIHNjX3JuZHJfc3dfdCBncnJuZHJzdyA9IHsK
KwkodnJfaW5pdF90ICopdmdhX25vcCwKIAkodnJfY2xlYXJfdCAqKXZnYV9ub3AsCiAJdmdhX2dy
Ym9yZGVyLAogCSh2cl9kcmF3X3QgKil2Z2Ffbm9wLApAQCAtMTU1LDYgKzE2OSw1NCBAQAogI2Vu
ZGlmCiAjZW5kaWYKIAorI2lmZGVmIFNDX1BJWEVMX01PREUKKyNkZWZpbmUJVklERU9fTUVNT1JZ
X1BPUyhzY3AsIHBvcywgeCkgCQkJCQlcCisJc2NwLT5zYy0+YWRwLT52YV93aW5kb3cgKwkJCQkJ
XAorCXggKiBzY3AtPnhvZmYgKwkJCQkJCQlcCisJc2NwLT55b2ZmICogc2NwLT5mb250X3NpemUg
KiBzY3AtPnNjLT5hZHAtPnZhX2xpbmVfd2lkdGggKwlcCisJeCAqIChwb3MgJSBzY3AtPnhzaXpl
KSArCQkJCQlcCisJc2NwLT5mb250X3NpemUgKiBzY3AtPnNjLT5hZHAtPnZhX2xpbmVfd2lkdGgg
KiAocG9zIC8gc2NwLT54c2l6ZSkKKworI2RlZmluZQl2Z2FfZHJhd3B4bChwb3MsIGNvbG9yKQkJ
CQkJCVwKKwlzd2l0Y2ggKHNjcC0+c2MtPmFkcC0+dmFfaW5mby52aV9kZXB0aCkgewkJCVwKKwkJ
Y2FzZSAzMjoJCQkJCQlcCisJCWNhc2UgMjQ6CQkJCQkJXAorCQkJd3JpdGVsKHBvcywgdmdhX3Bh
bGV0dGUzMltjb2xvcl0pOwkJXAorCQkJYnJlYWs7CQkJCQkJXAorCQljYXNlIDE2OgkJCQkJCVwK
KwkJCWlmIChzY3AtPnNjLT5hZHAtPnZhX2luZm8udmlfcGl4ZWxfZnNpemVzWzFdID09IDUpXAor
CQkJCXdyaXRldyhwb3MsIHZnYV9wYWxldHRlMTVbY29sb3JdKTsJXAorCQkJZWxzZQkJCQkJCVwK
KwkJCQl3cml0ZXcocG9zLCB2Z2FfcGFsZXR0ZTE2W2NvbG9yXSk7CVwKKwkJCWJyZWFrOwkJCQkJ
CVwKKwkJY2FzZSAxNToJCQkJCQlcCisJCQl3cml0ZXcocG9zLCB2Z2FfcGFsZXR0ZTE1W2NvbG9y
XSk7CQlcCisJCQlicmVhazsJCQkJCQlcCisJCX0KKwkKK3N0YXRpYyB1aW50MzJfdCB2Z2FfcGFs
ZXR0ZTMyWzE2XSA9IHsKKwkweDAwMDAwMCwgMHgwMDAwYWQsIDB4MDBhZDAwLCAweDAwYWRhZCwK
KwkweGFkMDAwMCwgMHhhZDAwYWQsIDB4YWQ1MjAwLCAweGFkYWRhZCwKKwkweDUyNTI1MiwgMHg1
MjUyZmYsIDB4NTJmZjUyLCAweDUyZmZmZiwKKwkweGZmNTI1MiwgMHhmZjUyZmYsIDB4ZmZmZjUy
LCAweGZmZmZmZgorfTsKKworc3RhdGljIHVpbnQxNl90IHZnYV9wYWxldHRlMTZbMTZdID0gewor
CTB4MDAwMCwgMHgwMDE2LCAweDA1NjAsIDB4MDU3NiwgMHhiMDAwLCAweGIwMTYsIDB4YjJhMCwg
MHhiNTc2LAorCTB4NTJhYSwgMHg1MmJmLCAweDU3ZWEsIDB4NTdmZiwgMHhmYWFhLCAweGZhYmYs
IDB4ZmZlYSwgMHhmZmZmCit9OworCitzdGF0aWMgdWludDE2X3QgdmdhX3BhbGV0dGUxNVsxNl0g
PSB7CisJMHgwMDAwLCAweDAwMTYsIDB4MDJjMCwgMHgwMmQ2LCAweDU4MDAsIDB4NTgxNiwgMHg1
OTQwLCAweDVhZDYsCisJMHgyOTRhLCAweDI5NWYsIDB4MmJlYSwgMHgyYmZmLCAweDdkNGEsIDB4
N2Q1ZiwgMHg3ZmVhLCAweDdmZmYKK307CisKKyNpZm5kZWYgU0NfTk9fQ1VUUEFTVEUKK3N0YXRp
YyB1aW50MzJfdCBtb3VzZV9idWYzMlsyNTZdOworc3RhdGljIHVpbnQxNl90IG1vdXNlX2J1ZjE2
WzI1Nl07CisjZW5kaWYKKyNlbmRpZgorCiBzdGF0aWMgdm9pZAogdmdhX25vcChzY3Jfc3RhdCAq
c2NwLCAuLi4pCiB7CkBAIC00MzEsNyArNDkzLDQ5IEBACiAvKiBwaXhlbCAocmFzdGVyIHRleHQp
IG1vZGUgcmVuZGVyZXIgKi8KIAogc3RhdGljIHZvaWQKLXZnYV9weGxjbGVhcihzY3Jfc3RhdCAq
c2NwLCBpbnQgYywgaW50IGF0dHIpCit2Z2Ffcm5kcmluaXQoc2NyX3N0YXQgKnNjcCkKK3sKKwlp
ZiAoc2NwLT5zYy0+YWRwLT52YV9pbmZvLnZpX21lbV9tb2RlbCA9PSBWX0lORk9fTU1fUExBTkFS
KSB7CisJCXNjcC0+cm5kci0+Y2xlYXIgPSB2Z2FfcHhsY2xlYXJfcGxhbmFyOworCQlzY3AtPnJu
ZHItPmRyYXdfYm9yZGVyID0gdmdhX3B4bGJvcmRlcl9wbGFuYXI7CisJCXNjcC0+cm5kci0+ZHJh
dyA9IHZnYV92Z2FkcmF3X3BsYW5hcjsKKwkJc2NwLT5ybmRyLT5kcmF3X2N1cnNvciA9IHZnYV9w
eGxjdXJzb3JfcGxhbmFyOworCQlzY3AtPnJuZHItPmJsaW5rX2N1cnNvciA9IHZnYV9weGxibGlu
a19wbGFuYXI7CisJCXNjcC0+cm5kci0+ZHJhd19tb3VzZSA9IHZnYV9weGxtb3VzZV9wbGFuYXI7
CisJfSBlbHNlIGlmIChzY3AtPnNjLT5hZHAtPnZhX2luZm8udmlfbWVtX21vZGVsID09IFZfSU5G
T19NTV9ESVJFQ1QpIHsKKwkJc2NwLT5ybmRyLT5jbGVhciA9IHZnYV9weGxjbGVhcl9kaXJlY3Q7
CisJCXNjcC0+cm5kci0+ZHJhd19ib3JkZXIgPSB2Z2FfcHhsYm9yZGVyX2RpcmVjdDsKKwkJc2Nw
LT5ybmRyLT5kcmF3ID0gdmdhX3ZnYWRyYXdfZGlyZWN0OworCQlzY3AtPnJuZHItPmRyYXdfY3Vy
c29yID0gdmdhX3B4bGN1cnNvcl9kaXJlY3Q7CisJCXNjcC0+cm5kci0+YmxpbmtfY3Vyc29yID0g
dmdhX3B4bGJsaW5rX2RpcmVjdDsKKwkJc2NwLT5ybmRyLT5kcmF3X21vdXNlID0gdmdhX3B4bG1v
dXNlX2RpcmVjdDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit2Z2FfcHhsY2xlYXJfZGlyZWN0KHNj
cl9zdGF0ICpzY3AsIGludCBjLCBpbnQgYXR0cikKK3sKKwl2bV9vZmZzZXRfdCBwOworCWludCBs
aW5lX3dpZHRoOworCWludCBwaXhlbF9zaXplOworCWludCBsaW5lczsKKwlpbnQgaTsKKworCWxp
bmVfd2lkdGggPSBzY3AtPnNjLT5hZHAtPnZhX2xpbmVfd2lkdGg7CisJcGl4ZWxfc2l6ZSA9IHNj
cC0+c2MtPmFkcC0+dmFfaW5mby52aV9waXhlbF9zaXplOworCWxpbmVzID0gc2NwLT55c2l6ZSAq
IHNjcC0+Zm9udF9zaXplOyAKKwlwID0gc2NwLT5zYy0+YWRwLT52YV93aW5kb3cgKworCSAgICBs
aW5lX3dpZHRoICogc2NwLT55b2ZmICogc2NwLT5mb250X3NpemUgKworCSAgICBzY3AtPnhvZmYg
KiA4ICogcGl4ZWxfc2l6ZTsKKworCWZvciAoaSA9IDA7IGkgPCBsaW5lczsgKytpKSB7CisJCWJ6
ZXJvX2lvKCh2b2lkICopcCwgc2NwLT54c2l6ZSAqIDggKiBwaXhlbF9zaXplKTsKKwkJcCArPSBs
aW5lX3dpZHRoOworCX0KK30KKworc3RhdGljIHZvaWQKK3ZnYV9weGxjbGVhcl9wbGFuYXIoc2Ny
X3N0YXQgKnNjcCwgaW50IGMsIGludCBhdHRyKQogewogCXZtX29mZnNldF90IHA7CiAJaW50IGxp
bmVfd2lkdGg7CkBAIC00NTcsNyArNTYxLDY0IEBACiB9CiAKIHN0YXRpYyB2b2lkCi12Z2FfcHhs
Ym9yZGVyKHNjcl9zdGF0ICpzY3AsIGludCBjb2xvcikKK3ZnYV9weGxib3JkZXJfZGlyZWN0KHNj
cl9zdGF0ICpzY3AsIGludCBjb2xvcikKK3sKKwl2bV9vZmZzZXRfdCBzOworCXZtX29mZnNldF90
IGU7CisJdm1fb2Zmc2V0X3QgZjsKKwlpbnQgbGluZV93aWR0aDsKKwlpbnQgcGl4ZWxfc2l6ZTsK
KwlpbnQgeDsKKwlpbnQgeTsKKwlpbnQgaTsKKworCWxpbmVfd2lkdGggPSBzY3AtPnNjLT5hZHAt
PnZhX2xpbmVfd2lkdGg7CisJcGl4ZWxfc2l6ZSA9IHNjcC0+c2MtPmFkcC0+dmFfaW5mby52aV9w
aXhlbF9zaXplOworCisJaWYgKHNjcC0+eW9mZiA+IDApIHsKKwkJcyA9IHNjcC0+c2MtPmFkcC0+
dmFfd2luZG93OworCQllID0gcyArIGxpbmVfd2lkdGggKiBzY3AtPnlvZmYgKiBzY3AtPmZvbnRf
c2l6ZTsKKworCQlmb3IgKGYgPSBzOyBmIDwgZTsgZiArPSBwaXhlbF9zaXplKQorCQkJdmdhX2Ry
YXdweGwoZiwgY29sb3IpOworCX0KKworCXkgPSAoc2NwLT55b2ZmICsgc2NwLT55c2l6ZSkgKiBz
Y3AtPmZvbnRfc2l6ZTsKKworCWlmIChzY3AtPnlwaXhlbCA+IHkpIHsKKwkJcyA9IHNjcC0+c2Mt
PmFkcC0+dmFfd2luZG93ICsgbGluZV93aWR0aCAqIHk7CisJCWUgPSBzICsgbGluZV93aWR0aCAq
IChzY3AtPnlwaXhlbCAtIHkpOworCisJCWZvciAoZiA9IHM7IGYgPCBlOyBmICs9IHBpeGVsX3Np
emUpCisJCQl2Z2FfZHJhd3B4bChmLCBjb2xvcik7CisJfQorCisJeSA9IHNjcC0+eW9mZiAqIHNj
cC0+Zm9udF9zaXplOworCXggPSBzY3AtPnhwaXhlbCAvIDggLSBzY3AtPnhvZmYgLSBzY3AtPnhz
aXplOworCisJZm9yIChpID0gMDsgaSA8IHNjcC0+eXNpemUgKiBzY3AtPmZvbnRfc2l6ZTsgKytp
KSB7CisJCWlmIChzY3AtPnhvZmYgPiAwKSB7CisJCQlzID0gc2NwLT5zYy0+YWRwLT52YV93aW5k
b3cgKyBsaW5lX3dpZHRoICogKHkgKyBpKTsKKwkJCWUgPSBzICsgc2NwLT54b2ZmICogOCAqIHBp
eGVsX3NpemU7CisKKwkJCWZvciAoZiA9IHM7IGYgPCBlOyBmICs9IHBpeGVsX3NpemUpCisJCQkJ
dmdhX2RyYXdweGwoZiwgY29sb3IpOworCQl9CisKKwkJaWYgKHggPiAwKSB7CisJCQlzID0gc2Nw
LT5zYy0+YWRwLT52YV93aW5kb3cgKyBsaW5lX3dpZHRoICogKHkgKyBpKSArCisJCQkgICAgc2Nw
LT54b2ZmICogOCAqIHBpeGVsX3NpemUgKworCQkJICAgIHNjcC0+eHNpemUgKiA4ICogcGl4ZWxf
c2l6ZTsKKwkJCWUgPSBzICsgeCAqIDggKiBwaXhlbF9zaXplOworCisJCQlmb3IgKGYgPSBzOyBm
IDwgZTsgZiArPSBwaXhlbF9zaXplKQorCQkJCXZnYV9kcmF3cHhsKGYsIGNvbG9yKTsKKwkJfQor
CX0KK30KKworc3RhdGljIHZvaWQKK3ZnYV9weGxib3JkZXJfcGxhbmFyKHNjcl9zdGF0ICpzY3As
IGludCBjb2xvcikKIHsKIAl2bV9vZmZzZXRfdCBwOwogCWludCBsaW5lX3dpZHRoOwpAQCAtNTA2
LDExICs2NjcsOCBAQAogCXVfY2hhciBjOwogCiAJbGluZV93aWR0aCA9IHNjcC0+c2MtPmFkcC0+
dmFfbGluZV93aWR0aDsKLQlkID0gc2NwLT5zYy0+YWRwLT52YV93aW5kb3cKLQkJKyBzY3AtPnhv
ZmYgCi0JCSsgc2NwLT55b2ZmKnNjcC0+Zm9udF9zaXplKmxpbmVfd2lkdGggCi0JCSsgKGZyb20l
c2NwLT54c2l6ZSkgCi0JCSsgc2NwLT5mb250X3NpemUqbGluZV93aWR0aCooZnJvbS9zY3AtPnhz
aXplKTsKKworCWQgPSBWSURFT19NRU1PUllfUE9TKHNjcCwgZnJvbSwgMSk7CiAKIAlvdXR3KEdE
Q0lEWCwgMHgwMDA1KTsJCS8qIHJlYWQgbW9kZSAwLCB3cml0ZSBtb2RlIDAgKi8KIAlvdXR3KEdE
Q0lEWCwgMHgwMDAzKTsJCS8qIGRhdGEgcm90YXRlL2Z1bmN0aW9uIHNlbGVjdCAqLwpAQCAtNTU0
LDggKzcxMiw1OCBAQAogCW91dHcoR0RDSURYLCAweGZmMDgpOwkJLyogYml0IG1hc2sgKi8KIH0K
IAotc3RhdGljIHZvaWQgCi12Z2FfdmdhZHJhdyhzY3Jfc3RhdCAqc2NwLCBpbnQgZnJvbSwgaW50
IGNvdW50LCBpbnQgZmxpcCkKK3N0YXRpYyB2b2lkCit2Z2FfdmdhZHJhd19kaXJlY3Qoc2NyX3N0
YXQgKnNjcCwgaW50IGZyb20sIGludCBjb3VudCwgaW50IGZsaXApCit7CisJdm1fb2Zmc2V0X3Qg
ZCA9IDA7CisJdm1fb2Zmc2V0X3QgZTsKKwl1X2NoYXIgKmY7CisJdV9zaG9ydCBjb2wxLCBjb2wy
LCBjb2xvcjsKKwlpbnQgbGluZV93aWR0aCwgcGl4ZWxfc2l6ZTsKKwlpbnQgaSwgaiwgazsKKwlp
bnQgYTsKKworCWxpbmVfd2lkdGggPSBzY3AtPnNjLT5hZHAtPnZhX2xpbmVfd2lkdGg7CisJcGl4
ZWxfc2l6ZSA9IHNjcC0+c2MtPmFkcC0+dmFfaW5mby52aV9waXhlbF9zaXplOworCisJZCA9IFZJ
REVPX01FTU9SWV9QT1Moc2NwLCBmcm9tLCA4ICogcGl4ZWxfc2l6ZSk7CisKKwlpZiAoZnJvbSAr
IGNvdW50ID4gc2NwLT54c2l6ZSAqIHNjcC0+eXNpemUpCisJCWNvdW50ID0gc2NwLT54c2l6ZSAq
IHNjcC0+eXNpemUgLSBmcm9tOworCisJZm9yIChpID0gZnJvbTsgY291bnQtLSA+IDA7ICsraSkg
eworCQlhID0gc2NfdnRiX2dldGEoJnNjcC0+dnRiLCBpKTsKKworCQlpZiAoZmxpcCkgeworCQkJ
Y29sMSA9ICgoKGEgJiAweDcwMDApID4+IDQpIHwgKGEgJiAweDA4MDApKSA+PiA4OworCQkJY29s
MiA9ICgoKGEgJiAweDgwMDApID4+IDQpIHwgKGEgJiAweDA3MDApKSA+PiA4OworCQl9IGVsc2Ug
eworCQkJY29sMSA9IChhICYgMHgwZjAwKSA+PiA4OworCQkJY29sMiA9IChhICYgMHhmMDAwKSA+
PiAxMjsKKwkJfQorCisJCWUgPSBkOworCQlmID0gJihzY3AtPmZvbnRbc2NfdnRiX2dldGMoJnNj
cC0+dnRiLCBpKSAqIHNjcC0+Zm9udF9zaXplXSk7CisKKwkJZm9yIChqID0gMDsgaiA8IHNjcC0+
Zm9udF9zaXplOyArK2osICsrZikgeworCQkJZm9yIChrID0gMDsgayA8IDg7ICsraykgeworCQkJ
CWNvbG9yID0gKmYgJiAoMSA8PCAoNyAtIGspKSA/IGNvbDEgOiBjb2wyOworCQkJCXZnYV9kcmF3
cHhsKGUgKyBwaXhlbF9zaXplICogaywgY29sb3IpOworCQkJfQorCisJCQllICs9IGxpbmVfd2lk
dGg7CisJCX0KKworCQlkICs9IDggKiBwaXhlbF9zaXplOworCisJCWlmICgoaSAlIHNjcC0+eHNp
emUpID09IHNjcC0+eHNpemUgLSAxKQorCQkJZCArPSBzY3AtPnhvZmYgKiAxNiAqIHBpeGVsX3Np
emUgKworCQkJICAgICAoc2NwLT5mb250X3NpemUgLSAxKSAqIGxpbmVfd2lkdGg7CisJfQorfQor
CitzdGF0aWMgdm9pZAordmdhX3ZnYWRyYXdfcGxhbmFyKHNjcl9zdGF0ICpzY3AsIGludCBmcm9t
LCBpbnQgY291bnQsIGludCBmbGlwKQogewogCXZtX29mZnNldF90IGQ7CiAJdm1fb2Zmc2V0X3Qg
ZTsKQEAgLTU2NywxMiArNzc1LDkgQEAKIAlpbnQgYTsKIAl1X2NoYXIgYzsKIAorCWQgPSBWSURF
T19NRU1PUllfUE9TKHNjcCwgZnJvbSwgMSk7CisKIAlsaW5lX3dpZHRoID0gc2NwLT5zYy0+YWRw
LT52YV9saW5lX3dpZHRoOwotCWQgPSBzY3AtPnNjLT5hZHAtPnZhX3dpbmRvdwotCQkrIHNjcC0+
eG9mZiAKLQkJKyBzY3AtPnlvZmYqc2NwLT5mb250X3NpemUqbGluZV93aWR0aCAKLQkJKyAoZnJv
bSVzY3AtPnhzaXplKSAKLQkJKyBzY3AtPmZvbnRfc2l6ZSpsaW5lX3dpZHRoKihmcm9tL3NjcC0+
eHNpemUpOwogCiAJb3V0dyhHRENJRFgsIDB4MDMwNSk7CQkvKiByZWFkIG1vZGUgMCwgd3JpdGUg
bW9kZSAzICovCiAJb3V0dyhHRENJRFgsIDB4MDAwMyk7CQkvKiBkYXRhIHJvdGF0ZS9mdW5jdGlv
biBzZWxlY3QgKi8KQEAgLTYzMCw3ICs4MzUsNDkgQEAKIH0KIAogc3RhdGljIHZvaWQgCi1kcmF3
X3B4bGN1cnNvcihzY3Jfc3RhdCAqc2NwLCBpbnQgYXQsIGludCBvbiwgaW50IGZsaXApCitkcmF3
X3B4bGN1cnNvcl9kaXJlY3Qoc2NyX3N0YXQgKnNjcCwgaW50IGF0LCBpbnQgb24sIGludCBmbGlw
KQoreworCXZtX29mZnNldF90IGQgPSAwOworCXVfY2hhciAqZjsKKwlpbnQgbGluZV93aWR0aCwg
cGl4ZWxfc2l6ZTsKKwlpbnQgaGVpZ2h0OworCWludCBjb2wxLCBjb2wyLCBjb2xvcjsKKwlpbnQg
YTsKKwlpbnQgaSwgajsKKworCWxpbmVfd2lkdGggPSBzY3AtPnNjLT5hZHAtPnZhX2xpbmVfd2lk
dGg7CisJcGl4ZWxfc2l6ZSA9IHNjcC0+c2MtPmFkcC0+dmFfaW5mby52aV9waXhlbF9zaXplOwor
CisJZCA9IFZJREVPX01FTU9SWV9QT1Moc2NwLCBhdCwgOCAqIHBpeGVsX3NpemUpICsKKwkgICAg
KHNjcC0+Zm9udF9zaXplIC0gc2NwLT5jdXJzX2F0dHIuYmFzZSAtIDEpICogbGluZV93aWR0aDsK
KworCWEgPSBzY192dGJfZ2V0YSgmc2NwLT52dGIsIGF0KTsKKworCWlmIChmbGlwKSB7CisJCWNv
bDEgPSAoKG9uKSA/IChhICYgMHgwZjAwKSA6ICgoYSAmIDB4ZjAwMCkgPj4gNCkpID4+IDg7CisJ
CWNvbDIgPSAoKG9uKSA/ICgoYSAmIDB4ZjAwMCkgPj4gNCkgOiAoYSAmIDB4MGYwMCkpID4+IDg7
CisJfSBlbHNlIHsKKwkJY29sMSA9ICgob24pID8gKChhICYgMHhmMDAwKSA+PiA0KSA6IChhICYg
MHgwZjAwKSkgPj4gODsKKwkJY29sMiA9ICgob24pID8gKGEgJiAweDBmMDApIDogKChhICYgMHhm
MDAwKSA+PiA0KSkgPj4gODsKKwl9CisKKwlmID0gJihzY3AtPmZvbnRbc2NfdnRiX2dldGMoJnNj
cC0+dnRiLCBhdCkgKiBzY3AtPmZvbnRfc2l6ZSArCisJICAgICAgc2NwLT5mb250X3NpemUgLSBz
Y3AtPmN1cnNfYXR0ci5iYXNlIC0gMV0pOworCisJaGVpZ2h0ID0gaW1pbihzY3AtPmN1cnNfYXR0
ci5oZWlnaHQsIHNjcC0+Zm9udF9zaXplKTsKKworCWZvciAoaSA9IDA7IGkgPCBoZWlnaHQ7ICsr
aSwgLS1mKSB7CisJCWZvciAoaiA9IDA7IGogPCA4OyArK2opIHsKKwkJCWNvbG9yID0gKmYgJiAo
MSA8PCAoNyAtIGopKSA/IGNvbDEgOiBjb2wyOworCQkJdmdhX2RyYXdweGwoZCArIHBpeGVsX3Np
emUgKiBqLCBjb2xvcik7CisJCX0KKworCQlkIC09IGxpbmVfd2lkdGg7CisJfQorfQorCitzdGF0
aWMgdm9pZCAKK2RyYXdfcHhsY3Vyc29yX3BsYW5hcihzY3Jfc3RhdCAqc2NwLCBpbnQgYXQsIGlu
dCBvbiwgaW50IGZsaXApCiB7CiAJdm1fb2Zmc2V0X3QgZDsKIAl1X2NoYXIgKmY7CkBAIC02NDIs
MTIgKzg4OSw5IEBACiAJdV9jaGFyIGM7CiAKIAlsaW5lX3dpZHRoID0gc2NwLT5zYy0+YWRwLT52
YV9saW5lX3dpZHRoOwotCWQgPSBzY3AtPnNjLT5hZHAtPnZhX3dpbmRvdwotCQkrIHNjcC0+eG9m
ZiAKLQkJKyBzY3AtPnlvZmYqc2NwLT5mb250X3NpemUqbGluZV93aWR0aCAKLQkJKyAoYXQlc2Nw
LT54c2l6ZSkgCi0JCSsgc2NwLT5mb250X3NpemUqbGluZV93aWR0aCooYXQvc2NwLT54c2l6ZSkK
LQkJKyAoc2NwLT5mb250X3NpemUgLSBzY3AtPmN1cnNfYXR0ci5iYXNlIC0gMSkqbGluZV93aWR0
aDsKKworCWQgPSBWSURFT19NRU1PUllfUE9TKHNjcCwgYXQsIDEpICsKKwkgICAgKHNjcC0+Zm9u
dF9zaXplIC0gc2NwLT5jdXJzX2F0dHIuYmFzZSAtIDEpICogbGluZV93aWR0aDsKIAogCW91dHco
R0RDSURYLCAweDAwMDUpOwkJLyogcmVhZCBtb2RlIDAsIHdyaXRlIG1vZGUgMCAqLwogCW91dHco
R0RDSURYLCAweDAwMDMpOwkJLyogZGF0YSByb3RhdGUvZnVuY3Rpb24gc2VsZWN0ICovCkBAIC02
ODQsNyArOTI4LDM1IEBACiBzdGF0aWMgaW50IHB4bGJsaW5rcmF0ZSA9IDA7CiAKIHN0YXRpYyB2
b2lkIAotdmdhX3B4bGN1cnNvcihzY3Jfc3RhdCAqc2NwLCBpbnQgYXQsIGludCBibGluaywgaW50
IG9uLCBpbnQgZmxpcCkKK3ZnYV9weGxjdXJzb3JfZGlyZWN0KHNjcl9zdGF0ICpzY3AsIGludCBh
dCwgaW50IGJsaW5rLCBpbnQgb24sIGludCBmbGlwKQoreworCWlmIChzY3AtPmN1cnNfYXR0ci5o
ZWlnaHQgPD0gMCkJLyogdGhlIHRleHQgY3Vyc29yIGlzIGRpc2FibGVkICovCisJCXJldHVybjsK
KworCWlmIChvbikgeworCQlpZiAoIWJsaW5rKSB7CisJCQlzY3AtPnN0YXR1cyB8PSBWUl9DVVJT
T1JfT047CisJCQlkcmF3X3B4bGN1cnNvcl9kaXJlY3Qoc2NwLCBhdCwgb24sIGZsaXApOworCQl9
IGVsc2UgaWYgKCsrcHhsYmxpbmtyYXRlICYgNCkgeworCQkJcHhsYmxpbmtyYXRlID0gMDsKKwkJ
CXNjcC0+c3RhdHVzIF49IFZSX0NVUlNPUl9PTjsKKwkJCWRyYXdfcHhsY3Vyc29yX2RpcmVjdChz
Y3AsIGF0LAorCQkJCQkgICAgICBzY3AtPnN0YXR1cyAmIFZSX0NVUlNPUl9PTiwKKwkJCQkJICAg
ICAgZmxpcCk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoc2NwLT5zdGF0dXMgJiBWUl9DVVJTT1Jf
T04pCisJCQlkcmF3X3B4bGN1cnNvcl9kaXJlY3Qoc2NwLCBhdCwgb24sIGZsaXApOworCQlzY3At
PnN0YXR1cyAmPSB+VlJfQ1VSU09SX09OOworCX0KKwlpZiAoYmxpbmspCisJCXNjcC0+c3RhdHVz
IHw9IFZSX0NVUlNPUl9CTElOSzsKKwllbHNlCisJCXNjcC0+c3RhdHVzICY9IH5WUl9DVVJTT1Jf
QkxJTks7Cit9CisKK3N0YXRpYyB2b2lkIAordmdhX3B4bGN1cnNvcl9wbGFuYXIoc2NyX3N0YXQg
KnNjcCwgaW50IGF0LCBpbnQgYmxpbmssIGludCBvbiwgaW50IGZsaXApCiB7CiAJaWYgKHNjcC0+
Y3Vyc19hdHRyLmhlaWdodCA8PSAwKQkvKiB0aGUgdGV4dCBjdXJzb3IgaXMgZGlzYWJsZWQgKi8K
IAkJcmV0dXJuOwpAQCAtNjkyLDE3ICs5NjQsMTcgQEAKIAlpZiAob24pIHsKIAkJaWYgKCFibGlu
aykgewogCQkJc2NwLT5zdGF0dXMgfD0gVlJfQ1VSU09SX09OOwotCQkJZHJhd19weGxjdXJzb3Io
c2NwLCBhdCwgb24sIGZsaXApOworCQkJZHJhd19weGxjdXJzb3JfcGxhbmFyKHNjcCwgYXQsIG9u
LCBmbGlwKTsKIAkJfSBlbHNlIGlmICgrK3B4bGJsaW5rcmF0ZSAmIDQpIHsKIAkJCXB4bGJsaW5r
cmF0ZSA9IDA7CiAJCQlzY3AtPnN0YXR1cyBePSBWUl9DVVJTT1JfT047Ci0JCQlkcmF3X3B4bGN1
cnNvcihzY3AsIGF0LAotCQkJCSAgICAgICBzY3AtPnN0YXR1cyAmIFZSX0NVUlNPUl9PTiwKLQkJ
CQkgICAgICAgZmxpcCk7CisJCQlkcmF3X3B4bGN1cnNvcl9wbGFuYXIoc2NwLCBhdCwKKwkJCQkJ
ICAgICAgc2NwLT5zdGF0dXMgJiBWUl9DVVJTT1JfT04sCisJCQkJCSAgICAgIGZsaXApOwogCQl9
CiAJfSBlbHNlIHsKIAkJaWYgKHNjcC0+c3RhdHVzICYgVlJfQ1VSU09SX09OKQotCQkJZHJhd19w
eGxjdXJzb3Ioc2NwLCBhdCwgb24sIGZsaXApOworCQkJZHJhd19weGxjdXJzb3JfcGxhbmFyKHNj
cCwgYXQsIG9uLCBmbGlwKTsKIAkJc2NwLT5zdGF0dXMgJj0gflZSX0NVUlNPUl9PTjsKIAl9CiAJ
aWYgKGJsaW5rKQpAQCAtNzEyLDcgKzk4NCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi12Z2FfcHhs
Ymxpbmsoc2NyX3N0YXQgKnNjcCwgaW50IGF0LCBpbnQgZmxpcCkKK3ZnYV9weGxibGlua19kaXJl
Y3Qoc2NyX3N0YXQgKnNjcCwgaW50IGF0LCBpbnQgZmxpcCkKIHsKIAlpZiAoIShzY3AtPnN0YXR1
cyAmIFZSX0NVUlNPUl9CTElOSykpCiAJCXJldHVybjsKQEAgLTcyMCwxMyArOTkyLDI1IEBACiAJ
CXJldHVybjsKIAlweGxibGlua3JhdGUgPSAwOwogCXNjcC0+c3RhdHVzIF49IFZSX0NVUlNPUl9P
TjsKLQlkcmF3X3B4bGN1cnNvcihzY3AsIGF0LCBzY3AtPnN0YXR1cyAmIFZSX0NVUlNPUl9PTiwg
ZmxpcCk7CisJZHJhd19weGxjdXJzb3JfZGlyZWN0KHNjcCwgYXQsIHNjcC0+c3RhdHVzICYgVlJf
Q1VSU09SX09OLCBmbGlwKTsKK30KKworc3RhdGljIHZvaWQKK3ZnYV9weGxibGlua19wbGFuYXIo
c2NyX3N0YXQgKnNjcCwgaW50IGF0LCBpbnQgZmxpcCkKK3sKKwlpZiAoIShzY3AtPnN0YXR1cyAm
IFZSX0NVUlNPUl9CTElOSykpCisJCXJldHVybjsKKwlpZiAoISgrK3B4bGJsaW5rcmF0ZSAmIDQp
KQorCQlyZXR1cm47CisJcHhsYmxpbmtyYXRlID0gMDsKKwlzY3AtPnN0YXR1cyBePSBWUl9DVVJT
T1JfT047CisJZHJhd19weGxjdXJzb3JfcGxhbmFyKHNjcCwgYXQsIHNjcC0+c3RhdHVzICYgVlJf
Q1VSU09SX09OLCBmbGlwKTsKIH0KIAogI2lmbmRlZiBTQ19OT19DVVRQQVNURQogCiBzdGF0aWMg
dm9pZAotZHJhd19weGxtb3VzZShzY3Jfc3RhdCAqc2NwLCBpbnQgeCwgaW50IHkpCitkcmF3X3B4
bG1vdXNlX3BsYW5hcihzY3Jfc3RhdCAqc2NwLCBpbnQgeCwgaW50IHkpCiB7CiAJdm1fb2Zmc2V0
X3QgcDsKIAlpbnQgbGluZV93aWR0aDsKQEAgLTgwMSw3ICsxMDg1LDcgQEAKIH0KIAogc3RhdGlj
IHZvaWQKLXJlbW92ZV9weGxtb3VzZShzY3Jfc3RhdCAqc2NwLCBpbnQgeCwgaW50IHkpCityZW1v
dmVfcHhsbW91c2VfcGxhbmFyKHNjcl9zdGF0ICpzY3AsIGludCB4LCBpbnQgeSkKIHsKIAl2bV9v
ZmZzZXRfdCBwOwogCWludCBjb2wsIHJvdzsKQEAgLTg1OCwxMiArMTE0MiwxMDEgQEAKIH0KIAog
c3RhdGljIHZvaWQgCi12Z2FfcHhsbW91c2Uoc2NyX3N0YXQgKnNjcCwgaW50IHgsIGludCB5LCBp
bnQgb24pCit2Z2FfcHhsbW91c2VfZGlyZWN0KHNjcl9zdGF0ICpzY3AsIGludCB4LCBpbnQgeSwg
aW50IG9uKQoreworCXZtX29mZnNldF90IHA7CisJaW50IGxpbmVfd2lkdGgsIHBpeGVsX3NpemU7
CisJaW50IHhlbmQsIHllbmQ7CisJc3RhdGljIGludCB4X29sZCA9IDAsIHhlbmRfb2xkID0gMDsK
KwlzdGF0aWMgaW50IHlfb2xkID0gMCwgeWVuZF9vbGQgPSAwOworCWludCBpLCBqOworCXVpbnQz
Ml90ICp1MzI7CisJdWludDE2X3QgKnUxNjsKKwlpbnQgYnBwOworCisJaWYgKCFvbikKKwkJcmV0
dXJuOworCisJYnBwID0gc2NwLT5zYy0+YWRwLT52YV9pbmZvLnZpX2RlcHRoOworCisJaWYgKChi
cHAgPT0gMTYpICYmIChzY3AtPnNjLT5hZHAtPnZhX2luZm8udmlfcGl4ZWxfZnNpemVzWzFdID09
IDUpKQorCQlicHAgPSAxNTsKKworCWxpbmVfd2lkdGggPSBzY3AtPnNjLT5hZHAtPnZhX2xpbmVf
d2lkdGg7CisJcGl4ZWxfc2l6ZSA9IHNjcC0+c2MtPmFkcC0+dmFfaW5mby52aV9waXhlbF9zaXpl
OworCisJeGVuZCA9IGltaW4oeCArIDE2LCBzY3AtPnhwaXhlbCk7CisJeWVuZCA9IGltaW4oeSAr
IDE2LCBzY3AtPnlwaXhlbCk7CisKKwlwID0gc2NwLT5zYy0+YWRwLT52YV93aW5kb3cgKyB5X29s
ZCAqIGxpbmVfd2lkdGggKyB4X29sZCAqIHBpeGVsX3NpemU7CisKKwlmb3IgKGkgPSAwOyBpIDwg
KHllbmRfb2xkIC0geV9vbGQpOyBpKyspIHsKKwkJZm9yIChqID0gKHhlbmRfb2xkIC0geF9vbGQg
LSAxKTsgaiA+PSAwOyBqLS0pIHsKKwkJCXN3aXRjaCAoYnBwKSB7CisJCQljYXNlIDMyOgorCQkJ
CXUzMiA9ICh1aW50MzJfdCopKHAgKyBqICogcGl4ZWxfc2l6ZSk7CisJCQkJd3JpdGVsKHUzMiwg
bW91c2VfYnVmMzJbaSAqIDE2ICsgal0pOworCQkJCWJyZWFrOworCQkJY2FzZSAxNjoKKwkJCQkv
KiBGQUxMVEhST1VHSCAqLworCQkJY2FzZSAxNToKKwkJCQl1MTYgPSAodWludDE2X3QqKShwICsg
aiAqIHBpeGVsX3NpemUpOworCQkJCXdyaXRldyh1MTYsIG1vdXNlX2J1ZjE2W2kgKiAxNiArIGpd
KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCXAgKz0gbGluZV93aWR0aDsKKwl9CisKKwlw
ID0gc2NwLT5zYy0+YWRwLT52YV93aW5kb3cgKyB5ICogbGluZV93aWR0aCArIHggKiBwaXhlbF9z
aXplOworCisJZm9yIChpID0gMDsgaSA8ICh5ZW5kIC0geSk7IGkrKykgeworCQlmb3IgKGogPSAo
eGVuZCAtIHggLSAxKTsgaiA+PSAwOyBqLS0pIHsKKwkJCXN3aXRjaCAoYnBwKSB7CisJCQljYXNl
IDMyOgorCQkJCXUzMiA9ICh1aW50MzJfdCopKHAgKyBqICogcGl4ZWxfc2l6ZSk7CisJCQkJbW91
c2VfYnVmMzJbaSAqIDE2ICsgal0gPSAqdTMyOworCQkJCWlmIChtb3VzZV9vcl9tYXNrW2ldICYg
KDEgPDwgKDE1IC0gaikpKQorCQkJCQl3cml0ZWwodTMyLCB2Z2FfcGFsZXR0ZTMyWzE1XSk7CisJ
CQkJZWxzZSBpZiAobW91c2VfYW5kX21hc2tbaV0gJiAoMSA8PCAoMTUgLSBqKSkpCisJCQkJCXdy
aXRlbCh1MzIsIDApOworCQkJCWJyZWFrOworCQkJY2FzZSAxNjoKKwkJCQl1MTYgPSAodWludDE2
X3QqKShwICsgaiAqIHBpeGVsX3NpemUpOworCQkJCW1vdXNlX2J1ZjE2W2kgKiAxNiArIGpdID0g
KnUxNjsKKwkJCQlpZiAobW91c2Vfb3JfbWFza1tpXSAmICgxIDw8ICgxNSAtIGopKSkKKwkJCQkJ
d3JpdGV3KHUxNiwgdmdhX3BhbGV0dGUxNlsxNV0pOworCQkJCWVsc2UgaWYgKG1vdXNlX2FuZF9t
YXNrW2ldICYgKDEgPDwgKDE1IC0gaikpKQorCQkJCQl3cml0ZXcodTE2LCAwKTsKKwkJCQlicmVh
azsKKwkJCWNhc2UgMTU6CisJCQkJdTE2ID0gKHVpbnQxNl90KikocCAgKyBqICogcGl4ZWxfc2l6
ZSk7CisJCQkJbW91c2VfYnVmMTZbaSAqIDE2ICsgal0gPSAqdTE2OworCQkJCWlmIChtb3VzZV9v
cl9tYXNrW2ldICYgKDEgPDwgKDE1IC0gaikpKQorCQkJCQl3cml0ZXcodTE2LCB2Z2FfcGFsZXR0
ZTE1WzE1XSk7CisJCQkJZWxzZSBpZiAobW91c2VfYW5kX21hc2tbaV0gJiAoMSA8PCAoMTUgLSBq
KSkpCisJCQkJCXdyaXRldyh1MTYsIDApOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJcCAr
PSBsaW5lX3dpZHRoOworCX0KKworCXhfb2xkID0geDsKKwl5X29sZCA9IHk7CisJeGVuZF9vbGQg
PSB4ZW5kOworCXllbmRfb2xkID0geWVuZDsKK30KKworc3RhdGljIHZvaWQgCit2Z2FfcHhsbW91
c2VfcGxhbmFyKHNjcl9zdGF0ICpzY3AsIGludCB4LCBpbnQgeSwgaW50IG9uKQogewogCWlmIChv
bikKLQkJZHJhd19weGxtb3VzZShzY3AsIHgsIHkpOworCQlkcmF3X3B4bG1vdXNlX3BsYW5hcihz
Y3AsIHgsIHkpOwogCWVsc2UKLQkJcmVtb3ZlX3B4bG1vdXNlKHNjcCwgeCwgeSk7CisJCXJlbW92
ZV9weGxtb3VzZV9wbGFuYXIoc2NwLCB4LCB5KTsKIH0KIAogI2VuZGlmIC8qIFNDX05PX0NVVFBB
U1RFICovCkluZGV4OiBzY3ZpZGN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMv
c3JjL3N5cy9kZXYvc3lzY29ucy9zY3ZpZGN0bC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMy
CmRpZmYgLXUgLXIxLjMyIHNjdmlkY3RsLmMKLS0tIHNjdmlkY3RsLmMJMTMgSnVsIDIwMDQgMTY6
MDY6MTkgLTAwMDAJMS4zMgorKysgc2N2aWRjdGwuYwkxIFNlcCAyMDA0IDE3OjA0OjE2IC0wMDAw
CkBAIC0yLDYgKzIsOSBAQAogICogQ29weXJpZ2h0IChjKSAxOTk4IEthenV0YWthIFlPS09UQSA8
eW9rb3RhQHpvZGlhYy5tZWNoLnV0c3Vub21peWEtdS5hYy5qcD4KICAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgorICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0d2FyZSBjb250cmli
dXRlZCB0byBUaGUgRHJhZ29uRmx5IFByb2plY3QKKyAqIGJ5IFNhc2NoYSBXaWxkbmVyIDxzYXdA
b25saW5lLmRlPgorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCiAgKiBhcmUgbWV0OgpA
QCAtMzY3LDE2ICszNzAsMjkgQEAKICAgICBpZiAoKGluZm8udmlfd2lkdGggPCB4c2l6ZSo4KSB8
fCAoaW5mby52aV9oZWlnaHQgPCB5c2l6ZSpmb250c2l6ZSkpCiAJcmV0dXJuIEVJTlZBTDsKIAot
ICAgIC8qIG9ubHkgMTYgY29sb3IsIDQgcGxhbmUgbW9kZXMgYXJlIHN1cHBvcnRlZCBYWFggKi8K
LSAgICBpZiAoKGluZm8udmlfZGVwdGggIT0gNCkgfHwgKGluZm8udmlfcGxhbmVzICE9IDQpKQot
CXJldHVybiBFTk9ERVY7Ci0KICAgICAvKgotICAgICAqIHNldF9waXhlbF9tb2RlKCkgY3VycmVu
dGx5IGRvZXMgbm90IHN1cHBvcnQgdmlkZW8gbW9kZXMgd2hvc2UKLSAgICAgKiBtZW1vcnkgc2l6
ZSBpcyBsYXJnZXIgdGhhbiA2NEsuIEJlY2F1c2Ugc3VjaCBtb2RlcyByZXF1aXJlCi0gICAgICog
YmFuayBzd2l0Y2hpbmcgdG8gYWNjZXNzIHRoZSBlbnRpcmUgc2NyZWVuLiBYWFgKKyAgICAgKiBX
ZSBjdXJyZW50bHkgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGdyYXBoaWMgbW9kZXM6CisgICAgICoK
KyAgICAgKiAtIDQgYnBwIHBsYW5hciBtb2RlcyB3aG9zZSBtZW1vcnkgc2l6ZSBkb2VzIG5vdCBl
eGNlZWQgNjRLCisgICAgICogLSAxNSwgMTYsIDI0IGFuZCAzMiBicHAgbGluZWFyIG1vZGVzCiAg
ICAgICovCi0gICAgaWYgKGluZm8udmlfd2lkdGgqaW5mby52aV9oZWlnaHQvOCA+IGluZm8udmlf
d2luZG93X3NpemUpCisKKyAgICBpZiAoaW5mby52aV9tZW1fbW9kZWwgPT0gVl9JTkZPX01NX1BM
QU5BUikgeworCWlmIChpbmZvLnZpX3BsYW5lcyAhPSA0KQorCSAgICByZXR1cm4gRU5PREVWOwor
CisJLyoKKwkgKiBBIG1lbW9yeSBzaXplID42NEsgcmVxdWlyZXMgYmFuayBzd2l0Y2hpbmcgdG8g
YWNjZXNzIHRoZSBlbnRpcmUKKwkgKiBzY3JlZW4uIFhYWAorCSAqLworCisJaWYgKGluZm8udmlf
d2lkdGggKiBpbmZvLnZpX2hlaWdodCAvIDggPiBpbmZvLnZpX3dpbmRvd19zaXplKQorCSAgICBy
ZXR1cm4gRU5PREVWOworICAgIH0gZWxzZSBpZiAoaW5mby52aV9tZW1fbW9kZWwgPT0gVl9JTkZP
X01NX0RJUkVDVCkgeworCWlmICgoaW5mby52aV9kZXB0aCAhPSAxNSkgJiYgKGluZm8udmlfZGVw
dGggIT0gMTYpICYmCisJICAgIChpbmZvLnZpX2RlcHRoICE9IDI0KSAmJiAoaW5mby52aV9kZXB0
aCAhPSAzMikpCisJICAgIHJldHVybiBFTk9ERVY7CisgICAgfSBlbHNlCiAJcmV0dXJuIEVOT0RF
VjsKIAogICAgIC8qIHN0b3Agc2NyZWVuIHNhdmVyLCBldGMgKi8KSW5kZXg6IHN5c2NvbnMuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZGV2L3N5c2NvbnMvc3lzY29u
cy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQyNwpkaWZmIC11IC1yMS40Mjcgc3lzY29ucy5j
Ci0tLSBzeXNjb25zLmMJNSBBdWcgMjAwNCAyMzo1NDowNCAtMDAwMAkxLjQyNworKysgc3lzY29u
cy5jCTEgU2VwIDIwMDQgMTc6MDQ6MTggLTAwMDAKQEAgLTIsNiArMiw5IEBACiAgKiBDb3B5cmln
aHQgKGMpIDE5OTItMTk5OCBT+HJlbiBTY2htaWR0CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKKyAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8g
VGhlIERyYWdvbkZseSBQcm9qZWN0CisgKiBieSBTYXNjaGEgV2lsZG5lciA8c2F3QG9ubGluZS5k
ZT4KKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogICogYXJlIG1ldDoKQEAgLTMwMzYs
NiArMzAzOSw3IEBACiAgICAgaWYgKHN3ID09IHNjcC0+dHN3KSB7CiAJZXJyb3IgPSAoKnN3LT50
ZV9pbml0KShzY3AsICZzY3AtPnRzLCBTQ19URV9XQVJNX0lOSVQpOwogCXNjcC0+cm5kciA9IHJu
ZHI7CisJc2NwLT5ybmRyLT5pbml0KHNjcCk7CiAJc2NfY2xlYXJfc2NyZWVuKHNjcCk7CiAJLyog
YXNzZXJ0KGVycm9yID09IDApOyAqLwogCXJldHVybiBlcnJvcjsKQEAgLTMwNTYsNiArMzA2MCw3
IEBACiAgICAgc2NwLT50c3cgPSBzdzsKICAgICBzY3AtPnRzID0gcDsKICAgICBzY3AtPnJuZHIg
PSBybmRyOworICAgIHNjcC0+cm5kci0+aW5pdChzY3ApOwogCiAgICAgLyogWFhYICovCiAgICAg
KCpzdy0+dGVfZGVmYXVsdF9hdHRyKShzY3AsIHVzZXJfZGVmYXVsdC5zdGRfY29sb3IsIHVzZXJf
ZGVmYXVsdC5yZXZfY29sb3IpOwpAQCAtMzQxNCw2ICszNDE5LDcgQEAKIAogICAgIC8qIHNldHVw
IHZpZGVvIGhhcmR3YXJlIGZvciB0aGUgZ2l2ZW4gbW9kZSAqLwogICAgICgqdmlkc3dbc2NwLT5z
Yy0+YWRhcHRlcl0tPnNldF9tb2RlKShzY3AtPnNjLT5hZHAsIHNjcC0+bW9kZSk7CisgICAgc2Nw
LT5ybmRyLT5pbml0KHNjcCk7CiAjaWZuZGVmIF9fc3BhcmM2NF9fCiAgICAgc2NfdnRiX2luaXQo
JnNjcC0+c2NyLCBWVEJfRlJBTUVCVUZGRVIsIHNjcC0+eHNpemUsIHNjcC0+eXNpemUsCiAJCSh2
b2lkICopc2NwLT5zYy0+YWRwLT52YV93aW5kb3csIEZBTFNFKTsKSW5kZXg6IHN5c2NvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvZGV2L3N5c2NvbnMvc3lzY29u
cy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgwCmRpZmYgLXUgLXIxLjgwIHN5c2NvbnMuaAot
LS0gc3lzY29ucy5oCTI4IEp1bCAyMDA0IDA2OjI5OjAyIC0wMDAwCTEuODAKKysrIHN5c2NvbnMu
aAkxIFNlcCAyMDA0IDE3OjA0OjE4IC0wMDAwCkBAIC0xLDYgKzEsOCBAQAogLyotCiAgKiBDb3B5
cmlnaHQgKGMpIDE5OTUtMTk5OCBT+HJlbiBTY2htaWR0CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogVGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0d2FyZSBjb250cmlidXRlZCB0byBU
aGUgRHJhZ29uRmx5IFByb2plY3QKKyAqIGJ5IFNhc2NoYSBXaWxkbmVyIDxzYXdAb25saW5lLmRl
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MDUsNiArNDA3LDcgQEAKIAkJ
ICAgICAgIFNJX1NVQl9EUklWRVJTLCBTSV9PUkRFUl9NSURETEUpCiAKIC8qIHJlbmRlcmVyIGZ1
bmN0aW9uIHRhYmxlICovCit0eXBlZGVmIHZvaWQJdnJfaW5pdF90KHNjcl9zdGF0ICpzY3ApOwog
dHlwZWRlZiB2b2lkCXZyX2NsZWFyX3Qoc2NyX3N0YXQgKnNjcCwgaW50IGMsIGludCBhdHRyKTsK
IHR5cGVkZWYgdm9pZAl2cl9kcmF3X2JvcmRlcl90KHNjcl9zdGF0ICpzY3AsIGludCBjb2xvcik7
CiB0eXBlZGVmIHZvaWQJdnJfZHJhd190KHNjcl9zdGF0ICpzY3AsIGludCBmcm9tLCBpbnQgY291
bnQsIGludCBmbGlwKTsKQEAgLTQxNiw2ICs0MTksNyBAQAogdHlwZWRlZiB2b2lkCXZyX2RyYXdf
bW91c2VfdChzY3Jfc3RhdCAqc2NwLCBpbnQgeCwgaW50IHksIGludCBvbik7CiAKIHR5cGVkZWYg
c3RydWN0IHNjX3JuZHJfc3cgeworCXZyX2luaXRfdAkJKmluaXQ7CiAJdnJfY2xlYXJfdAkJKmNs
ZWFyOwogCXZyX2RyYXdfYm9yZGVyX3QJKmRyYXdfYm9yZGVyOwogCXZyX2RyYXdfdAkJKmRyYXc7
Cg==

--------_41360548E86503B477C0_MULTIPART_MIXED_--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040902012216.E864.DSNOFE>