From owner-freebsd-current@FreeBSD.ORG Wed Sep 1 17:24:37 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3FD9316A4CE for ; Wed, 1 Sep 2004 17:24:37 +0000 (GMT) Received: from hotmail.com (bay11-dav42.bay11.hotmail.com [64.4.39.72]) by mx1.FreeBSD.org (Postfix) with ESMTP id 28CDE43D2F for ; Wed, 1 Sep 2004 17:24:37 +0000 (GMT) (envelope-from dsnofe@msn.com) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Wed, 1 Sep 2004 10:24:37 -0700 Received: from 222.64.53.190 by bay11-dav42.bay11.hotmail.com with DAV; Wed, 01 Sep 2004 17:24:36 +0000 X-Originating-IP: [222.64.53.190] X-Originating-Email: [dsnofe@msn.com] X-Sender: dsnofe@msn.com Date: Thu, 02 Sep 2004 01:24:34 +0800 From: Deng XueFeng To: "Cyrille Lefevre" In-Reply-To: <002f01c49020$5e9df560$7890a8c0@gits.invalid> References: <002f01c49020$5e9df560$7890a8c0@gits.invalid> Message-Id: <20040902012216.E864.DSNOFE@msn.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_41360548E86503B477C0_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.11.02 [CN] X-OriginalArrivalTime: 01 Sep 2004 17:24:37.0085 (UTC) FILETIME=[8E3130D0:01C49048] cc: Sascha Wildner cc: current@freebsd.org Subject: Re: [BETA PATCH] VESA mode support for syscons X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Sep 2004 17:24:37 -0000 --------_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_--