Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etzr1-0007Iq-6z for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 18:01:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1etzr0-0004lM-6V for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Mar 2018 18:01:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1etzqz-0004l9-Oo for pgsql-hackers@lists.postgresql.org; Thu, 08 Mar 2018 18:01:21 +0000 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1etzqw-0004fF-DQ for pgsql-hackers@postgresql.org; Thu, 08 Mar 2018 18:01:21 +0000 Received: by mail-wr0-x241.google.com with SMTP id m12so6556918wrm.13 for ; Thu, 08 Mar 2018 10:01:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=DZZxdlrqu5RVxxqSLz6hc7rhxGVqPXOVxTw2PSQe5Is=; b=WP05tqxmz5ZRd8hAnt82qDCVcYtg2TKihiAPxOoQEfYfw/FRw2mxAQSs/zRHyvFgaO OjbYwMOWVHEA5g937gsgKwzU04WIlMHlUo4Tdg017cXFOJyVNX2QnbCI1lldBKN8DZaf Yh3GlxHW2TXPqQ2AeHaxenuFJTy9XsPCIpjDgX3KH7o+atg/wCZer6cYJYQLyZTpRaL8 TafQPftE6pOuf0lLRakrSuTui1gC/spb9ZBCkBQ7pwtWQFruC6xAxYOfz9XL+cMkFSPM krV8nhHBLiQifX+wIIUlZ/WtbtgNs0GSBL9c2zYRjp7zEG0tbx+m8LbpHEKEu9K9pPxN iSuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=DZZxdlrqu5RVxxqSLz6hc7rhxGVqPXOVxTw2PSQe5Is=; b=B4/twWBJWhQxFyojWZBwBrXzXv8uNQarcAotAamHhMV08vqbSLds0/ObdLCN5ki9SG 0OT6iZNgUE/F4X1IA55NJUP9dUkkwm4ejn/ndp4G1wrT9dfr3zBL2oOxagfEFqspnhRG QAxhSL6K05eF3OAYb2m1iMa2KfXZCRUsjx8q3PHVNTU1xy/XRIHthlF95kjuq912C6N7 Gz1rzXKY8ni9q3Koz+BuGSVqmOXyKilFZQ7HtoPLHV/T/2LYa/xCTq4AjCoI3wvUkVHH Oxr5AMadcjspanzK6RMQgPnbLEMHsbDy2aFXPbWvzneTFv93pit+XmRexNYyoLO5YRhf zVVg== X-Gm-Message-State: APf1xPCAzt/4ztGMByhbCIrJri327REH41vcsf8sz59tkoR8ALLMBb0e Xi2fbY4uf/5ObIxGJqH3Ju8IKrzDrF1W567DdW0Crg== X-Google-Smtp-Source: AG47ELsDUzujyZXpS4CdyyQBOgFWRTNx3szCQgOCw5AIlFDo+R//sHi/aeDcxLcgLlW7ztb0/Pt/pVsQ9zDxgVPenwE= X-Received: by 10.223.157.24 with SMTP id k24mr24814531wre.273.1520532077247; Thu, 08 Mar 2018 10:01:17 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.179.65 with HTTP; Thu, 8 Mar 2018 10:00:36 -0800 (PST) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> From: Pavel Stehule Date: Thu, 8 Mar 2018 19:00:36 +0100 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: "David G. Johnston" , Pavel Luzanov Cc: Pavel Golub , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="f403043868c4560a510566ea76df" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --f403043868c4560a510566ea76df Content-Type: multipart/alternative; boundary="f403043868c4560a4c0566ea76dd" --f403043868c4560a4c0566ea76dd Content-Type: text/plain; charset="UTF-8" Hi 2018-02-07 7:34 GMT+01:00 Pavel Stehule : > Hi > > updated patch with your changes in documentation and pg_dump (initial) > support > > Main issue of this patch is storage. We can reuse local buffers used for > temp tables. But it does allocation by 8KB and it creates temp files for > every object. That is too big overhead. Storing just in session memory is > too simple - then there should be lot of new code used, when variable will > be dropped. > > I have ideas how to allow work with mix of scalar and composite types - so > it will be next step of this prototype. > > Regards > > Pavel > new update - rebased, + some initial support for composite values on right side and custom types, arrays are supported too. omega=# CREATE VARIABLE xx AS (a int, b numeric); CREATE VARIABLE omega=# LET xx = (10, 20)::xx; LET omega=# SELECT xx; +---------+ | xx | +---------+ | (10,20) | +---------+ (1 row) omega=# SELECT xx.a + xx.b; +----------+ | ?column? | +----------+ | 30 | +----------+ (1 row) omega=# \d xx schema variable "public.xx" +--------+---------+ | Column | Type | +--------+---------+ | a | integer | | b | numeric | +--------+---------+ Regards Pavel --f403043868c4560a4c0566ea76dd Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

2018-02-07 7:34 GMT+01:00 Pavel Stehule <pavel.stehule@gm= ail.com>:
Hi

updated patch with your changes in documentation and pg_dump (= initial) support

Main issue of this= patch is storage. We can reuse local buffers used for temp tables. But it = does allocation by 8KB and it creates temp files for every object. That is = too big overhead. Storing just in session memory is too simple - then there= should be lot of new code used, when variable will be dropped.

I have ideas how to allow work with mix of sca= lar and composite types - so it will be next step of this prototype.
Regards

Pavel

ne= w update - rebased, + some initial support for composite values on right si= de and custom types, arrays are supported too.

omega=3D# CREATE VARIABLE xx AS (a int, b numeri= c);
CREATE VARIABLE
omega=3D# LET xx =3D (10, 20)::xx;
LET
ome= ga=3D# SELECT xx;
+---------+
|=C2=A0=C2=A0 xx=C2=A0=C2=A0=C2=A0 |+---------+
| (10,20) |
+---------+
(1 row)

omega=3D# SELE= CT xx.a + xx.b;
+----------+
| ?column? |
+----------+
|=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 30 |
+----------+
(1 row)

omega=3D# \d xx
schema= variable "public.xx"
+--------+---------+
| Column |=C2=A0= Type=C2=A0=C2=A0 |
+--------+---------+
| a=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 | integer |
| b=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | numeric |
+---= -----+---------+


Regards

Pav= el
=C2=A0

--f403043868c4560a4c0566ea76dd-- --f403043868c4560a510566ea76df Content-Type: application/octet-stream; name=schema-variables-poc-180308-01-diff Content-Disposition: attachment; filename=schema-variables-poc-180308-01-diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_jeit9a111 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggYTBlNmQ3MDYyYi4uNTNhYThiMGU1YiAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTE4MTMsNyArMTgxMyw4IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVy YXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgPGxp dGVyYWw+bTwvbGl0ZXJhbD4gPSBtYXRlcmlhbGl6ZWQgdmlldywKICAgICAgICA8bGl0ZXJhbD5j PC9saXRlcmFsPiA9IGNvbXBvc2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ ID0gZm9yZWlnbiB0YWJsZSwKLSAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlv bmVkIHRhYmxlCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBwYXJ0aXRpb25lZCB0YWJs ZSwKKyAgICAgICA8bGl0ZXJhbD5WPC9saXRlcmFsPiA9IHNjaGVtYSB2YXJpYWJsZQogICAgICAg PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCmluZGV4IDJmNTlhZjI1YTYuLjI4OThjMTM1NzMg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMuc2dtbApAQCAtMTU4MTIsNiArMTU4MTIsODMgQEAgU0VMRUNUICogRlJPTSBwZ19sc19kaXIo Jy4nKSBXSVRIIE9SRElOQUxJVFkgQVMgdChscyxuKTsKIAogIDwvc2VjdDE+CiAKKyA8c2VjdDEg aWQ9ImZ1bmN0aW9ucy1zY2hlbWF2YXIiPgorICA8dGl0bGU+U2NoZW1hIFZhcmlhYmxlIEZ1bmN0 aW9uczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJmdW5jdGlvbnMtc2NoZW1hdmFyIj4K KyAgIDxwcmltYXJ5PlNjaGVtYSBWYXJpYWJsZSBGdW5jdGlvbnM8L3ByaW1hcnk+CisgICA8c2Vj b25kYXJ5PmZ1bmN0aW9uczwvc2Vjb25kYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8aW5kZXh0 ZXJtPgorICAgPHByaW1hcnk+Z2V0X3NjaGVtYV92YXJpYWJsZTwvcHJpbWFyeT4KKyAgPC9pbmRl eHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnNldF9zY2hlbWFfdmFyaWFibGU8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlc2UgZnVuY3Rpb25z IGFsbG93IHJlYWRpbmcgYW5kIHdyaXRpbmcgc2NoZW1hIHZhcmlhYmxlcyB2YWx1ZXMuCisgICBJ ZiB0aGUgc2NoZW1hIHZhcmlhYmxlIHJlZmVyZW5jZWQgZG9lcyBub3QgZXhpc3QgKGNyZWF0ZWQg dXNpbmcgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+KQorICAgdGhlc2UgZnVu Y3Rpb25zIHdpbGwgKGRvIHNvbWV0aGluZy4uLikuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9 ImZ1bmN0aW9ucy1zY2hlbWF2YXItdGFiIj4KKyAgIDx0aXRsZT5GdW5jdGlvbnMgZm9yIGFjY2Vz cyB0byBzY2hlbWEgdmFyaWFibGVzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5PkZ1bmN0aW9uPC9lbnRyeT4KKyAgICAg IDxlbnRyeT5Bcmd1bWVudCBUeXBlPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5SZXR1cm4gVHlwZTwv ZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD48ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZSg8cGFyYW1ldGVyPnZhcmlhYmxlPC9wYXJh bWV0ZXI+LCA8cGFyYW1ldGVyPmV4cGVjdGVkIHR5cGU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0 eXBlPmFueWVsZW1lbnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hbnllbGVt ZW50PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgUmV0dXJucyB2YWx1ZSBv ZiBzY2hlbWEgdmFyaWFibGUgY29udmVydGVkIHRvIGV4cGVjdGVkIHR5cGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxm dW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlKDxwYXJhbWV0ZXI+dmFyaWFibGU8L3BhcmFtZXRl cj4sIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4pPC9mdW5jdGlvbj48L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5yZWdjbGFzczwvdHlwZT4sIDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT52b2lkPC90eXBlPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgU2V0cyB0aGUgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxl IHRvIHZhbHVlLCBhZnRlciBjb252ZXJ0aW5nIHRoZSBpbnB1dCB0byB0aGUgY29ycmVjdCB0eXBl LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90Z3Jv dXA+CisgIDwvdGFibGU+CisgIDxwYXJhPgorICBBbiBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgVEVNUCBWQVJJQUJMRSBmb28gQVMgbnVtZXJpYzsKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCdmb28nLCAzNDUuNDQ1KTsKKyBzZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBnZXRfc2NoZW1hX3Zhcmlh YmxlKCdmb28nLCBudWxsOjpudW1lcmljKTsKKworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAzNDUuNDQ1CisoMSByb3cpCis8L3Byb2dy YW1saXN0aW5nPgorICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJmdW5jdGlv bnMtaW5mbyI+CiAgIDx0aXRsZT5TeXN0ZW0gSW5mb3JtYXRpb24gRnVuY3Rpb25zPC90aXRsZT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDIyZTY4OTMyMTEuLjFkMzRmNzJiZGQgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTk5LDYgKzk5LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVU eXBlICAgICAgICAgU1lTVEVNICJjcmVhdGVfdHlwZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVz ZXIgICAgICAgICBTWVNURU0gImNyZWF0ZV91c2VyLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlVXNl ck1hcHBpbmcgIFNZU1RFTSAiY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGNy ZWF0ZVZhcmlhYmxlICAgICBTWVNURU0gImNyZWF0ZV92YXJpYWJsZS5zZ21sIj4KIDwhRU5USVRZ IGNyZWF0ZVZpZXcgICAgICAgICBTWVNURU0gImNyZWF0ZV92aWV3LnNnbWwiPgogPCFFTlRJVFkg ZGVhbGxvY2F0ZSAgICAgICAgIFNZU1RFTSAiZGVhbGxvY2F0ZS5zZ21sIj4KIDwhRU5USVRZIGRl Y2xhcmUgICAgICAgICAgICBTWVNURU0gImRlY2xhcmUuc2dtbCI+CkBAIC0xNDcsNiArMTQ4LDcg QEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkuCiA8IUVOVElUWSBkcm9wVHlwZSAgICAgICAgICAgU1lTVEVNICJkcm9wX3R5cGUuc2dt bCI+CiA8IUVOVElUWSBkcm9wVXNlciAgICAgICAgICAgU1lTVEVNICJkcm9wX3VzZXIuc2dtbCI+ CiA8IUVOVElUWSBkcm9wVXNlck1hcHBpbmcgICAgU1lTVEVNICJkcm9wX3VzZXJfbWFwcGluZy5z Z21sIj4KKzwhRU5USVRZIGRyb3BWYXJpYWJsZSAgICAgICBTWVNURU0gImRyb3BfdmFyaWFibGUu c2dtbCI+CiA8IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dt bCI+CiA8IUVOVElUWSBlbmQgICAgICAgICAgICAgICAgU1lTVEVNICJlbmQuc2dtbCI+CiA8IUVO VElUWSBleGVjdXRlICAgICAgICAgICAgU1lTVEVNICJleGVjdXRlLnNnbWwiPgpAQCAtMTU1LDYg KzE1Nyw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRo aXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZ3JhbnQgICAgICAgICAgICAgIFNZU1RFTSAiZ3JhbnQu c2dtbCI+CiA8IUVOVElUWSBpbXBvcnRGb3JlaWduU2NoZW1hIFNZU1RFTSAiaW1wb3J0X2ZvcmVp Z25fc2NoZW1hLnNnbWwiPgogPCFFTlRJVFkgaW5zZXJ0ICAgICAgICAgICAgIFNZU1RFTSAiaW5z ZXJ0LnNnbWwiPgorPCFFTlRJVFkgbGV0ICAgICAgICAgICAgICAgIFNZU1RFTSAibGV0LnNnbWwi PgogPCFFTlRJVFkgbGlzdGVuICAgICAgICAgICAgIFNZU1RFTSAibGlzdGVuLnNnbWwiPgogPCFF TlRJVFkgbG9hZCAgICAgICAgICAgICAgIFNZU1RFTSAibG9hZC5zZ21sIj4KIDwhRU5USVRZIGxv Y2sgICAgICAgICAgICAgICBTWVNURU0gImxvY2suc2dtbCI+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wMjA1 ZTQzNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFi bGUuc2dtbApAQCAtMCwwICsxLDE0OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf dmFyaWFibGUuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5 IGlkPSJzcWwtY3JlYXRldmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWNyZWF0ZXZh cmlhYmxlIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFZBUklBQkxFPC9wcmltYXJ5PgorIDwvaW5kZXh0 ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkNSRUFURSBWQVJJQUJMRTwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+Q1JFQVRFIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVm cHVycG9zZT5kZWZpbmUgYSBuZXcgcGVybWlzc2lvbmVkIHR5cGVkIHNjaGVtYSB2YXJpYWJsZTwv cmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3Bz aXM+CitDUkVBVEUgVkFSSUFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IF0KKzwvc3lub3BzaXM+CisgPC9y ZWZzeW5vcHNpc2Rpdj4KKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGNyZWF0 ZXMgYSBuZXcgc2NoZW1hIHZhcmlhYmxlLgorICAgVGhlc2UgdmFyaWFibGVzIGFyZSBzY2FsYXIg dHlwZWQsIG5vbi10cmFuc2FjdGlvbmFsLCBhbmQsIGxpa2UgcmVsYXRpb25zLAorICAgZXhpc3Qg d2l0aGluIGEgc2NoZW1hIHdpdGggYWNjZXNzIGNvbnRyb2xsZWQgdmlhCisgICA8Y29tbWFuZD5H UkFOVDwvY29tbWFuZD4gYW5kIDxjb21tYW5kPlJFVk9LRTwvY29tbWFuZD4uCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSB2YWx1ZSBvZiBhIHNjaGVtYSB2YXJpYWJsZSBpcyBzZXNzaW9u LWxvY2FsLiBSZXRyaWV2aW5nCisgICBhIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCByZXR1cm4gTlVM TCB1bmxlc3MgaXRzIHZhbHVlIGhhcyBiZWVuIHNldAorICAgdG8gc29tZXRoaW5nIGVsc2UgaW4g dGhlIGN1cnJlbnQgc2Vzc2lvbi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmV0cmlldmFs IGlzIGRvbmUgdmlhIHRoZSA8ZnVuY3Rpb24+Z2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+ ZHVueHJpb24gb3IgdGhlIFNRTAorICAgY29tbWFuZCA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+ LiAgU2V0dGluZyBvZiB2YWx1ZXMgaXMgZG9uZSB2aWEgdGhlCisgICA8ZnVuY3Rpb24+c2V0X3Nj aGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHRoZSBTUUwgY29tbWFuZAorICAg PGNvbW1hbmQ+TEVUPC9jb21tYW5kPi4KKyAgIE5vdGFibHksIHdoaWxlIHNjaGVtYSB2YXJpYWJs ZXMgYXJlIGluIG1hbnkgd2F5cyBhIGtpbmQgb2YgdGFibGUgeW91IGNhbm5vdCB1c2UKKyAgIDxj b21tYW5kPlVQREFURTwvY29tbWFuZD4gb24gdGhlbS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgRm9yIHB1cnBvc2VzIG9mIG5hbWUgdW5pcXVlbmVzcyByZWxhdGlvbi1saWtlIG9iamVjdHMg KGUuZy4sIHRhYmxlcywgaW5kZXhlcykKKyAgIHdpdGhpbiB0aGUgc2FtZSBzY2hlbWEgYXJlIGNv bnNpZGVyZWQuICBpLmUuLCB5b3UgY2Fubm90IGdpdmUgYSB0YWJsZSBhbmQgYQorICAgc2NoZW1h IHZhcmlhYmxlIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlbSBi ZWluZyB0cmVhdGVkCisgICBsaWtlIHJlbGF0aW9ucyBmb3IgcHVycG9zZXMgb2YgPGNvbW1hbmQ+ U0VMRUNUPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JRiBOT1QgRVhJU1RTPC9saXRlcmFsPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRG8gbm90IHRocm93IGFu IGVycm9yIGlmIHRoZSBuYW1lIGFscmVhZHkgZXhpc3RzLiBBIG5vdGljZSBpcyBpc3N1ZWQgaW4g dGhpcyBjYXNlLgorICAgICAgTm90ZSB0aGF0IHR5cGUgb2YgdGhlIHZhcmlhYmxlIGlzIG5vdCBj b25zaWRlcmVkLCBub3IgY291bGQgaXQgYmUgc2luY2UgdGhlIG5hbWVzcGFjZQorICAgICAgc2Vh cmNoZWQgY29udGFpbnMgbm9uLXZhcmlhYmxlIG9iamVjdHMuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgKG9wdGlv bmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNyZWF0ZWQuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRh dGFfdHlwZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUgZGF0 YSB0eXBlIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBjcmVhdGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1hbmQ+IHRvIHJlbW92ZSBhIHZh cmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhbiBpbnRlZ2VyIHZhcmlh YmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldCB0aGlzIHZhcmlhYmxlJ3MgdmFsdWU7IHRoZW4gcmV0cmlldmUgaXQg Y29udmVydGVkIHRvIG51bWVyaWMuCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgVkFSSUFCTEUK K3Bvc3RncmVzPSMgc2VsZWN0IHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAxMCk7Cisgc2V0 X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitw b3N0Z3Jlcz0jIHNlbGVjdCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVtZXJp Yyk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg ICAgICAgICAgICAgMTAKKygxIHJvdykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8 L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+ CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5DUkVBVEUgVkFSSUFCTEU8L2NvbW1hbmQ+IGlzIGEg UG9zdGdyZVNRTCBmZWF0dXJlLgorICAgPCEtLSBUaGUgY2hvaWNlIG9mIHdvcmRpbmcgaGVyZSBz ZWVtcyB0byBiZSBsZWZ0IHRvIHBlcnNvbmFsIHByZWZlcmVuY2UuLi4gLS0+CisgIDwvcGFyYT4K KyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgor CisgIDxzaW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9 InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCmluZGV4IDZiOTA5YjcyMzIuLjM5 NTQ1M2JiYTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvZGlzY2FyZC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVT UUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotRElTQ0FS RCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVOQ0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB9CitESVNDQVJE IHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIHwgVkFSSUFCTEVT fQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC03NSw2ICs3NSwxNiBAQCBE SVNDQVJEIHsgQUxMIHwgUExBTlMgfCBTRVFVRU5DRVMgfCBURU1QT1JBUlkgfCBURU1QIH0KICAg ICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgPHRlcm0+PGxpdGVyYWw+VkFSSUFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUgdmFsdWUgb2YgYWxsIHNjaGVtYSB2YXJp YWJsZXMgdG8gTlVMTC4KKyAgICAgIDwhLS0gV2hhdCBoYXBwZW5zIHRvIHRlbXBvcmFyeSBzY2hl bWEgdmFyaWFibGVzIC0tPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPkFMTDwv bGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfdmFyaWFibGUu c2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjEzMGZkNTEwCi0t LSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKQEAg LTAsMCArMSw5MiBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwK K1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtZHJvcHZhcmlhYmxlIj4KKyAgPHByaW1h cnk+RFJPUCBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5EUk9QIFZBUklBQkxFPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9s bnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVu dHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFt ZT5EUk9QIFZBUklBQkxFPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5yZW1vdmUgYSBzY2hlbWEg dmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9wc2lzZGl2 PgorPHN5bm9wc2lzPgorRFJPUCBWQVJJQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5E Uk9QIFZBUklBQkxFPC9jb21tYW5kPiByZW1vdmVzIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgQSB2 YXJpYWJsZSBjYW4gb25seSBiZSBkcm9wcGVkIGJ5IGl0cyBvd25lciBvciBhIHN1cGVydXNlci4K KyAgIDwhLS0gdGhpcyB3b3VsZCBzdWdnZXN0IHRoYXQgd2UgbmVlZCBhbiBhbHRlciB2YXJpYWJs ZSBvd25lciB0byBjb21tYW5kIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+Cisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBh biBlcnJvciBpZiB0aGUgdmFyaWFibGUgZG9lcyBub3QgZXhpc3QuIEEgbm90aWNlIGlzIGlzc3Vl ZAorICAgICAgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNjaGVtYS1x dWFsaWZpZWQpIG9mIGEgc2NoZW1hIHZhcmlhYmxlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgor ICAgVG8gcmVtb3ZlIHRoZSBzY2hlbWEgdmFyaWFibGUgPGxpdGVyYWw+dmFyMTwvbGl0ZXJhbD46 CisKKzxwcm9ncmFtbGlzdGluZz4KK0RST1AgVkFSSUFCTEUgdmFyMTsKKzwvcHJvZ3JhbWxpc3Rp bmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2Nv bW1hbmQ+IGlzIHByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZC4KKyAgIDwhLS0gY3JlYXRl IHZhcmlhYmxlIGlzIGEgIlBvc3RncmVTUUwgZmVhdHVyZSIsCisgICAgICAgIHRoaXMgaXMgYSAi cHJvcHJpZXRhcnkgUG9zdGdyZVNRTCBjb21tYW5kIiAuLi4gLS0+CisgIDwvcGFyYT4KKyA8L3Jl ZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxz aW1wbGVsaXN0IHR5cGU9ImlubGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1j cmVhdGV2YXJpYWJsZSIvPjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAppbmRleCBmZjY0YzdhM2JhLi4wMDYzNjRlYmU1 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9ncmFudC5zZ21sCkBAIC03OSw2ICs3OSwxMiBAQCBHUkFOVCB7IFVTQUdFIHwgQUxM IFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBUWVBFIDxyZXBsYWNlYWJsZT50eXBlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9Q VElPTiBdCiAKK0dSQU5UIHsgeyBTRUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwg WyBQUklWSUxFR0VTIF0gfQorICAgIE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnZhcmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8 IEFMTCBWQVJJQUJMRVMgSU4gU0NIRU1BIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z Y2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAgIFRPIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5d IFsgV0lUSCBHUkFOVCBPUFRJT04gXQorCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmU6PC9w aHJhc2U+CiAKICAgICBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJv bGVfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC0xNjcsNiArMTczLDcgQEAgR1JBTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gVE8g PHJlcGxhY2UKICAgIGZvcmVpZ24gc2VydmVycywKICAgIGxhcmdlIG9iamVjdHMsCiAgICBzY2hl bWFzLAorICAgc2NoZW1hIHZhcmlhYmxlcywKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90 aGVyIHR5cGVzIG9mIG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQg dG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTIwNCw2ICsy MTEsOCBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAgIEZvciBzZXF1ZW5jZXMsIHRo aXMgcHJpdmlsZWdlIGFsc28gYWxsb3dzIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgPGZ1bmN0aW9u PmN1cnJ2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KICAgICAgICBGb3IgbGFyZ2Ugb2JqZWN0cywg dGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSBvYmplY3QgdG8gYmUgcmVhZC4KKyAgICAgICBGb3Ig c2NoZW1hIHZhcmlhYmxlcywgdGhpcyBwcml2aWxlZ2UgYWxsb3dzIHRoZSA8ZnVuY3Rpb24+Z2V0 X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+CisgICAgICAgdG8gcmVhZCB0aGUgdmFyaWFibGUn cyB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTIzOSw2ICsyNDgsOSBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQogICAgICAg IDxmdW5jdGlvbj5zZXR2YWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMuCiAgICAgICAgRm9yIGxhcmdl IG9iamVjdHMsIHRoaXMgcHJpdmlsZWdlIGFsbG93cyB3cml0aW5nIG9yIHRydW5jYXRpbmcgdGhl CiAgICAgICAgb2JqZWN0LgorICAgICAgIEZvciBzY2hlbWEgdmFyaWFibGVzLCB0aGlzIHByaXZp bGVnZSBhbGxvd3MgPGNvbW1hbmQ+TEVUPC9jb21tYW5kPgorICAgICAgIGFuZCA8ZnVuY3Rpb24+ c2V0X3NjaGVtYV92YXJpYWJsZTwvZnVuY3Rpb24+IHRvIG1vZGlmeSB0aGUgc2NoZW1hIHZhcmlh YmxlJ3MKKyAgICAgICB2YWx1ZS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2xldC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmU4YmYzZjZkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2xldC5zZ21sCkBAIC0wLDAgKzEsOTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNn bWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWxl dCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtbGV0Ij4KKyAgPHByaW1hcnk+TEVUPC9wcmltYXJ5 PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkxFVDwvcmVm ZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5T UUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8 cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+TEVUPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5jaGFu Z2UgYSBzY2hlbWEgdmFyaWFibGUncyB2YWx1ZTwvcmVmcHVycG9zZT4KKyA8L3JlZm5hbWVkaXY+ CisKKyA8cmVmc3lub3BzaXNkaXY+Cis8c3lub3BzaXM+CitMRVQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV92YXJpYWJsZTwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNxbF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKzwvc3lub3Bz aXM+CisgPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkRlc2NyaXB0 aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+IGNv bW1hbmQgdXBkYXRlcyB0aGUgc3BlY2lmaWVkIHNjaGVtYSB2YXJpYWJsZScgdmFsdWUuCisgIDwv cGFyYT4KKworIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJz PC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5zY2hlbWFfdmFyaWFibGU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBzY2hlbWEgdmFyaWFibGUuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+c3FsIGV4cHJlc3Npb248L2xpdGVyYWw+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBbiBTUUwgZXhwcmVzc2lv biwgdGhlIHJlc3VsdCBpcyBjYXN0IHRvIHRoZSBzY2hlbWEgdmFyaWFibGUncyB0eXBlLgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zhcmlh YmxlbGlzdD4KKworICA8cGFyYT4KKyAgIEV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVB VEUgVkFSSUFCTEUgbXl2YXIgQVMgaW50ZWdlcjsKK0xFVCBteXZhciA9IDEwOworTEVUIG15dmFy ID0gKFNFTEVDVCBzdW0odmFsKSBGUk9NIHRhYik7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgPCEtLSB0aGlzIGZlZWxzIGxpa2UgaXQgbmVlZHMgdG8g YmUgbW9yZSBzcGVjaWZpYywKKyAgICAgICAgYnV0IEkgZG9uJ3Qga25vdyBlbm91Z2ggdG8gbWFr ZSBpdCBzbyAtLT4KKyAgIDxsaXRlcmFsPkxFVDwvbGl0ZXJhbD4gZXh0ZW5kcyBzeW50YXggZGVm aW5lZCBpbiB0aGUgU1FMCisgICBzdGFuZGFyZC4gVGhlIHN0YW5kYXJkIGtub3dzIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY29tbWFuZCwKKyAgIHRoYXQgaXMgdXNlZCBmb3IgZGlmZmVyZW50IHB1 cnBvdXNlIGluIFBvc3RncmVTUUwuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNl Y3QxPgorICA8dGl0bGU+U2VlIEFsc288L3RpdGxlPgorCisgIDxzaW1wbGVsaXN0IHR5cGU9Imlu bGluZSI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl dm9rZS5zZ21sCmluZGV4IDcwMTgyMDJmMTQuLjczNzc4ZjAxZjkgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dt bApAQCAtMTA4LDYgKzEwOCwxNCBAQCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KIFJFVk9L RSBbIEFETUlOIE9QVElPTiBGT1IgXQogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yb2xlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIEZST00gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBbIENBU0NB REUgfCBSRVNUUklDVCBdCisKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQorICAgIHsgeyBT RUxFQ1QgfCBVUERBVEUgfQorICAgIFssIC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAg IE9OIHsgVkFSSUFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgICAgICB8IEFMTCBWQVJJQUJMRVMgSU4gU0NI RU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gfQorICAg IEZST00geyBbIEdST1VQIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFt ZTwvcmVwbGFjZWFibGU+IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RS SUNUIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IGQyN2ZiNDE0ZjcuLmIzZjlmZmY1MTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTEyNyw2ICsx MjcsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVhdGVVc2Vy TWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAgJmRlYWxs b2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzYsNyBAQAogICAgJmRyb3BUeXBlOwog ICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFibGU7CiAg ICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg1LDcgQEAK ICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsKKyAgICZs ZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmlu ZGV4IDA2NDg1Mzk3OTYuLjZiZDA0MGI5M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMjg0LDYg KzI4NCw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFudChib29sIGlzX2dyYW50LCBBY2xNb2Rl IGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBFOwogCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOwor CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVj dCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCkBAIC01MDYsNiArNTA5LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRT dG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19GT1JFSUdOX1NF UlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBl ICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklB QkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVy cm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hl bWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBzdG10LT5vYmp0 eXBlKTsKQEAgLTU3Niw2ICs1ODMsNyBAQCBFeGVjR3JhbnRTdG10X29pZHMoSW50ZXJuYWxHcmFu dCAqaXN0bXQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJRXhlY0dyYW50X1JlbGF0aW9uKGlzdG10 KTsKIAkJCWJyZWFrOwogCQljYXNlIE9CSkVDVF9EQVRBQkFTRToKQEAgLTY0NSw2ICs2NTMsNyBA QCBvYmplY3ROYW1lc1RvT2lkcyhPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iam5hbWVzKQog CXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgorCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFtZXMpCiAJCQl7CiAJCQkJ UmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChjZWxsKTsKQEAgLTEwMTcs NiArMTAyNiwxMCBAQCBFeGVjQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqcwogCQkJYWxsX3ByaXZpbGVnZXMg PSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiaW52 YWxpZCBwcml2aWxlZ2UgdHlwZSAlcyBmb3Igc2NoZW1hIik7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1ZBUklB QkxFOworCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSB2YXJpYWJsZSIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9n KEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGFjdGlvbi0+b2JqdHlwZSk7CkBAIC0xMjE0LDYgKzEyMjcsMTIgQEAgU2V0RGVmYXVsdEFDTChJ bnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzKQogCQkJCXRoaXNfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ b2JqdHlwZSA9IERFRkFDTE9CSl9WQVJJQUJMRTsKKwkJCWlmIChpYWNscy0+YWxsX3ByaXZzICYm IHRoaXNfcHJpdmlsZWdlcyA9PSBBQ0xfTk9fUklHSFRTKQorCQkJCXRoaXNfcHJpdmlsZWdlcyA9 IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBpYWNscy0+ b2JqdHlwZSk7CkBAIC0xNDQwLDYgKzE0NTksOSBAQCBSZW1vdmVSb2xlRnJvbU9iamVjdEFDTChP aWQgcm9sZWlkLCBPaWQgY2xhc3NpZCwgT2lkIG9iamlkKQogCQkJY2FzZSBERUZBQ0xPQkpfTkFN RVNQQUNFOgogCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfU0NIRU1BOwogCQkJCWJyZWFrOwor CQkJY2FzZSBERUZBQ0xPQkpfVkFSSUFCTEU6CisJCQkJaWFjbHMub2JqdHlwZSA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogU2hvdWxkbid0IGdldCBo ZXJlICovCiAJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVmYXVsdCBBQ0wgdHlwZTogJWQi LApAQCAtMTYxMSw4ICsxNjMzLDkgQEAgZXhwYW5kX2FsbF9jb2xfcHJpdmlsZWdlcyhPaWQgdGFi bGVfb2lkLCBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKIAkJaWYgKGN1cnJfYXR0ID09IE9iamVj dElkQXR0cmlidXRlTnVtYmVyICYmICFjbGFzc0Zvcm0tPnJlbGhhc29pZHMpCiAJCQljb250aW51 ZTsKIAotCQkvKiBWaWV3cyBkb24ndCBoYXZlIGFueSBzeXN0ZW0gY29sdW1ucyBhdCBhbGwgKi8K LQkJaWYgKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgJiYgY3Vycl9hdHQgPCAw KQorCQkvKiBWaWV3cyBhbmQgdmFyaWFibGVzIGRvbid0IGhhdmUgYW55IHN5c3RlbSBjb2x1bW5z IGF0IGFsbCAqLworCQlpZiAoKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgIHx8 IGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKSAmJgorCQkJY3Vycl9hdHQg PCAwKQogCQkJY29udGludWU7CiAKIAkJYXR0VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVN LApAQCAtMzQ1NSw2ICszNDc4LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwg T2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0g Z2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29w KCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJCQlicmVh azsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVy bWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2NSw2ICsz NTkxLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0 eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJt dXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVD VF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBz Y2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9WSUVX OgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcgJXMiKTsK IAkJCQkJCWJyZWFrOwpAQCAtMzY3OSw2ICszNzA4LDcgQEAgcGdfYWNsbWFzayhPYmplY3RUeXBl IG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKHRhYmxlX29pZCwgYXR0bnVtLCByb2xlaWQsIG1hc2ss IGhvdyk7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJ Y2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlyZXR1cm4gcGdfY2xhc3NfYWNsbWFzayh0YWJsZV9v aWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQlyZXR1 cm4gcGdfZGF0YWJhc2VfYWNsbWFzayh0YWJsZV9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggY2YzNmNlNGFkZC4uMmU4MWU2OGM0YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAg LTI5MSw2ICsyOTEsNyBAQCBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCXN3aXRj aCAocmVsa2luZCkKIAl7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfVkFS SUFCTEU6CiAJCWNhc2UgUkVMS0lORF9DT01QT1NJVEVfVFlQRToKIAkJY2FzZSBSRUxLSU5EX0ZP UkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKQEAgLTQyOCw3 ICs0MjksOCBAQCBDaGVja0F0dHJpYnV0ZU5hbWVzVHlwZXMoVHVwbGVEZXNjIHR1cGRlc2MsIGNo YXIgcmVsa2luZCwKIAkgKiBTa2lwIHRoaXMgZm9yIGEgdmlldyBvciB0eXBlIHJlbGF0aW9uLCBz aW5jZSB0aG9zZSBkb24ndCBoYXZlIHN5c3RlbQogCSAqIGF0dHJpYnV0ZXMuCiAJICovCi0JaWYg KHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVf VFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcgJiYgcmVsa2luZCAhPSBSRUxLSU5E X0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKIAl7CiAJ CWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQogCQl7CkBAIC03MTUsNyArNzE3LDggQEAgQWRk TmV3QXR0cmlidXRlVHVwbGVzKE9pZCBuZXdfcmVsX29pZCwKIAkgKiBhbGwgZm9yIGEgdmlldyBv ciB0eXBlIHJlbGF0aW9uLiAgV2UgZG9uJ3QgYm90aGVyIHdpdGggbWFraW5nIGRhdGF0eXBlCiAJ ICogZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHByZXN1bWFibHkgYWxsIHRoZXNlIHR5cGVzIGFy ZSBwaW5uZWQuCiAJICovCi0JaWYgKHJlbGtpbmQgIT0gUkVMS0lORF9WSUVXICYmIHJlbGtpbmQg IT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcg JiYgcmVsa2luZCAhPSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFICYmCisJCXJlbGtpbmQgIT0gUkVM S0lORF9WQVJJQUJMRSkKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCAoaW50KSBsZW5ndGhvZihTeXNB dHQpOyBpKyspCiAJCXsKQEAgLTEwNjcsNyArMTA3MCw5IEBAIGhlYXBfY3JlYXRlX3dpdGhfY2F0 YWxvZyhjb25zdCBjaGFyICpyZWxuYW1lLAogCWlmIChleGlzdGluZ19yZWxpZCAhPSBJbnZhbGlk T2lkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RB QkxFKSwKLQkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxu YW1lKSkpOworCQkJCSBlcnJtc2coIiVzIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQly ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUgPyAidmFyaWFibGUiIDogInJlbGF0aW9uIiwKKwkJ CQkJCXJlbG5hbWUpKSk7CiAKIAkvKgogCSAqIFNpbmNlIHdlIGFyZSBnb2luZyB0byBjcmVhdGUg YSByb3d0eXBlIGFzIHdlbGwsIGFsc28gY2hlY2sgZm9yCkBAIC0xMTA4LDcgKzExMTMsNyBAQCBo ZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJCShyZWxraW5k ID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFIHx8CiAJ CQkgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwgcmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcg fHwKIAkJCSByZWxraW5kID09IFJFTEtJTkRfQ09NUE9TSVRFX1RZUEUgfHwgcmVsa2luZCA9PSBS RUxLSU5EX0ZPUkVJR05fVEFCTEUgfHwKLQkJCSByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpKQorCQkJIHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBy ZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQl7CiAJCQlpZiAoIU9pZElzVmFsaWQoYmlu YXJ5X3VwZ3JhZGVfbmV4dF9oZWFwX3BnX2NsYXNzX29pZCkpCiAJCQkJZXJlcG9ydChFUlJPUiwK QEAgLTExNTAsNiArMTE1NSwxMCBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0X2FjbChPQkpFQ1RfU0VR VUVOQ0UsIG93bmVyaWQsCiAJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNlKTsKIAkJCQlicmVhazsK KwkJCWNhc2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWxhY2wgPSBnZXRfdXNlcl9kZWZhdWx0 X2FjbChPQkpFQ1RfVkFSSUFCTEUsIG93bmVyaWQsCisJCQkJCQkJCQkJCSAgcmVsbmFtZXNwYWNl KTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJcmVsYWNsID0gTlVMTDsKIAkJCQlicmVh azsKQEAgLTExODEsMTQgKzExOTAsMTYgQEAgaGVhcF9jcmVhdGVfd2l0aF9jYXRhbG9nKGNvbnN0 IGNoYXIgKnJlbG5hbWUsCiAJICogRGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlIGFuIGFycmF5IHR5 cGUgb3ZlciB0aGUgcmVsYXRpb24ncyByb3d0eXBlLiBXZQogCSAqIGRvIG5vdCBjcmVhdGUgYW55 IGFycmF5IHR5cGVzIGZvciBzeXN0ZW0gY2F0YWxvZ3MgKGllLCB0aG9zZSBtYWRlCiAJICogZHVy aW5nIGluaXRkYikuIFdlIGRvIG5vdCBjcmVhdGUgdGhlbSB3aGVyZSB0aGUgdXNlIG9mIGEgcmVs YXRpb24gYXMKLQkgKiBzdWNoIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbDogdG9hc3QgdGFi bGVzLCBzZXF1ZW5jZXMgYW5kIGluZGV4ZXMuCisJICogc3VjaCBpcyBhbiBpbXBsZW1lbnRhdGlv biBkZXRhaWw6IHRvYXN0IHRhYmxlcywgc2VxdWVuY2VzLCBpbmRleGVzIGFuZAorCSAqIHZhcmlh Ymxlcy4KIAkgKi8KIAlpZiAoSXNVbmRlclBvc3RtYXN0ZXIgJiYgKHJlbGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTiB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKIAkJCQkJ CQkgIHJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXIHx8CiAJCQkJCQkJICByZWxraW5kID09IFJF TEtJTkRfRk9SRUlHTl9UQUJMRSB8fAogCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX0NPTVBP U0lURV9UWVBFIHx8Ci0JCQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpKQorCQkJCQkJCSAgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJ CQkJCQkJICByZWxraW5kID09IFJFTEtJTkRfVkFSSUFCTEUpKQogCQluZXdfYXJyYXlfb2lkID0g QXNzaWduVHlwZUFycmF5T2lkKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YwppbmRleCAxMTkyOTdiMzNhLi4zZDMwYTA1YzA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j YXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYwpAQCAtNTIwLDYgKzUyMCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkic2VxdWVuY2UiLCBPQkpFQ1RfU0VRVUVOQ0UKIAl9LAorCXsKKwkJInZh cmlhYmxlIiwgT0JKRUNUX1ZBUklBQkxFCisJfSwKIAl7CiAJCSJ0b2FzdCB0YWJsZSIsIC0xCiAJ fSwJCQkJCQkJLyogdW5tYXBwZWQgKi8KQEAgLTgyNCw2ICs4MjcsNyBAQCBnZXRfb2JqZWN0X2Fk ZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9CSkVDVF9W SUVXOgogCQkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFC TEU6CisJCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCQlhZGRyZXNzID0KIAkJCQkJZ2V0X3Jl bGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCks CiAJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIGxvY2ttb2RlLApAQCAtMTI2MCw2ICsxMjY0LDE0 IEBAIGdldF9yZWxhdGlvbl9ieV9xdWFsaWZpZWRfbmFtZShPYmplY3RUeXBlIG9ianR5cGUsIExp c3QgKm9iamVjdCwKIAkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBmb3JlaWduIHRhYmxl IiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJl bGtpbmQgIT0gUkVMS0lORF9WQVJJQUJMRSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgb2JqdHlwZTogJWQiLCAoaW50KSBvYmp0eXBlKTsKIAkJCWJyZWFrOwpA QCAtMTg0OSw2ICsxODYxLDggQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpvYmpl Y3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJb2Jq dHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFSSUFC TEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOwogCQlkZWZhdWx0OgogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks CkBAIC0yMTExLDYgKzIxMjUsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05f QVJHUykKIAl7CiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9TRVFVRU5DRToK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JK RUNUX01BVFZJRVc6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgpAQCAtMjIzNSw2ICsyMjUwLDcgQEAg Y2hlY2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNU X1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6 CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCWNhc2UgT0JK RUNUX0ZPUkVJR05fVEFCTEU6CkBAIC0zMzAyLDYgKzMzMTgsMTEgQEAgZ2V0T2JqZWN0RGVzY3Jp cHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQkJCQkJCQkJCSBfKCJkZWZhdWx0 IHByaXZpbGVnZXMgb24gbmV3IHNjaGVtYXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKIAkJCQkJ CQkJCQkgR2V0VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JKX1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmZmVyLAorCQkJCQkJCQkJCSBfKCJkZWZhdWx0IHByaXZpbGVnZXMgb24gbmV3 IHNjaGVtYSB2YXJpYWJsZXMgYmVsb25naW5nIHRvIHJvbGUgJXMiKSwKKwkJCQkJCQkJCQkgR2V0 VXNlck5hbWVGcm9tSWQoZGVmYWNsLT5kZWZhY2xyb2xlLCBmYWxzZSkpOworCQkJCQkJYnJlYWs7 CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQkvKiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAkJCQkJCWFw cGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwKQEAgLTM1MDUsNiArMzUyNiwxMCBAQCBnZXRSZWxhdGlv bkRlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQpCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZmZlciwgXygic2VxdWVuY2UgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQli cmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZm ZXIsIF8oInZhcmlhYmxlICVzIiksCisJCQkJCQkJIHJlbG5hbWUpOworCQkJYnJlYWs7CiAJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oInRv YXN0IHRhYmxlICVzIiksCiAJCQkJCQkJIHJlbG5hbWUpOwpAQCAtNDgzMyw2ICs0ODU4LDEwIEBA IGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAogCQkJCQkJCQkJCQkgICAiIG9uIHNj aGVtYXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFDTE9CSl9WQVJJQUJMRToKKwkJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwKKwkJCQkJCQkJCQkJICAgIiBvbiBz Y2hlbWEgdmFyaWFibGVzIik7CisJCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQlpZiAob2JqbmFt ZSkKQEAgLTUxMjUsNiArNTE1NCw4IEBAIGdldF9yZWxraW5kX29ianR5cGUoY2hhciByZWxraW5k KQogCQkJcmV0dXJuIE9CSkVDVF9JTkRFWDsKIAkJY2FzZSBSRUxLSU5EX1NFUVVFTkNFOgogCQkJ cmV0dXJuIE9CSkVDVF9TRVFVRU5DRTsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJcmV0 dXJuIE9CSkVDVF9WQVJJQUJMRTsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6CiAJCQlyZXR1cm4gT0JK RUNUX1ZJRVc7CiAJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRl eCA0YTZjOTllMDkwLi41NzQ3MjcyYzlhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyAr MTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdncmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5v IGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQubyBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4u byBleHRlbnNpb24ubyBmb3JlaWduY21kcy5vIGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMu byBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVyYXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlw b2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFyZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRz Lm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJlbC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vi c2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFjbWRzLm8gc2NoZW1hdmFyLm8gc2VjbGFiZWwubyBz ZXF1ZW5jZS5vIHN0YXRzY21kcy5vIHN1YnNjcmlwdGlvbmNtZHMubyBcCiAJdGFibGVjbWRzLm8g dGFibGVzcGFjZS5vIHRyaWdnZXIubyB0c2VhcmNoY21kcy5vIHR5cGVjbWRzLm8gdXNlci5vIFwK IAl2YWN1dW0ubyB2YWN1dW1sYXp5Lm8gdmFyaWFibGUubyB2aWV3Lm8KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMKaW5kZXggMGQ2Mzg2NmZiMC4uZTE3NGUyNDBiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0z NDgsNiArMzQ4LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAqc3RtdCkKIAkJY2FzZSBP QkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJ R05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJcmV0dXJuIFJlbmFtZVJlbGF0 aW9uKHN0bXQpOwogCiAJCWNhc2UgT0JKRUNUX0NPTFVNTjoKQEAgLTQ3OCw2ICs0NzksNyBAQCBF eGVjQWx0ZXJPYmplY3RTY2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJ Y2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01B VFZJRVc6CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgogCQkJYWRkcmVzcyA9IEFsdGVyVGFibGVO YW1lc3BhY2Uoc3RtdCwKIAkJCQkJCQkJCQkgIG9sZFNjaGVtYUFkZHIgPyAmb2xkTnNwT2lkIDog TlVMTCk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1l bnQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYwppbmRleCAyZjJlNjliNGE4Li5m NGEzY2FlNmI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC04Myw3ICs4Myw3IEBAIENvbW1l bnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAKIAkJCS8qCiAJCQkgKiBBbGxvdyBjb21tZW50 cyBvbmx5IG9uIGNvbHVtbnMgb2YgdGFibGVzLCB2aWV3cywgbWF0ZXJpYWxpemVkCi0JCQkgKiB2 aWV3cywgY29tcG9zaXRlIHR5cGVzLCBhbmQgZm9yZWlnbiB0YWJsZXMgKHdoaWNoIGFyZSB0aGUg b25seQorCQkJICogdmlld3MsIGNvbXBvc2l0ZSB0eXBlcywgdmFyaWFibGVzIGFuZCBmb3JlaWdu IHRhYmxlcyAod2hpY2ggYXJlIHRoZSBvbmx5CiAJCQkgKiByZWxraW5kcyBmb3Igd2hpY2ggcGdf ZHVtcCB3aWxsIGR1bXAgcGVyLWNvbHVtbiBjb21tZW50cykuICBJbgogCQkJICogcGFydGljdWxh ciB3ZSB3aXNoIHRvIGRpc2FsbG93IGNvbW1lbnRzIG9uIGluZGV4IGNvbHVtbnMsCiAJCQkgKiBi ZWNhdXNlIHRoZSBuYW1pbmcgb2YgYW4gaW5kZXgncyBjb2x1bW5zIG1heSBjaGFuZ2UgYWNyb3Nz IFBHCkBAIC05NSwxMCArOTUsMTEgQEAgQ29tbWVudE9iamVjdChDb21tZW50U3RtdCAqc3RtdCkK IAkJCQlyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgogCQkJ CXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9DT01QT1NJVEVfVFlQRSAmJgog CQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFICYm Ci0JCQkJcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRSAmJgorCQkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WQVJJ QUJMRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCi0JCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcs IG1hdGVyaWFsaXplZCB2aWV3LCBjb21wb3NpdGUgdHlwZSwgb3IgZm9yZWlnbiB0YWJsZSIsCisJ CQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUsIHZpZXcsIG1hdGVyaWFsaXplZCB2 aWV3LCBjb21wb3NpdGUgdHlwZSwgc2NoZW1hIHZhcmlhYmxlIG9yIGZvcmVpZ24gdGFibGUiLAog CQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CiAJCQlicmVhazsK IAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCA0NTYyYTUxMjFkLi44YTY3OGNkNTQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC0xNDg0LDYgKzE0ODQsOSBAQCBCZWdpbkNvcHkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCiAJCUFzc2VydChxdWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CiAKKwkJ LyogRG9uJ3QgZXhwZWN0IExFVCBzdG10IGhlcmUsIGlzIG5vdCBwb3NzaWJsZSB0byBkbyB3cml0 ZSBpdCAqLworCQlBc3NlcnQocXVlcnktPmNvbW1hbmRUeXBlICE9IENNRF9MRVQpOworCiAJCS8q CiAJCSAqIFNpbWlsYXJseSB0aGUgZ3JhbW1hciBkb2Vzbid0IGVuZm9yY2UgdGhlIHByZXNlbmNl IG9mIGEgUkVUVVJOSU5HCiAJCSAqIGNsYXVzZSwgYnV0IHRoaXMgaXMgcmVxdWlyZWQgaGVyZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2Rpc2NhcmQuYwppbmRleCAzNTNlYzk5MGFmLi4zM2RiNDdlNjM0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGlzY2FyZC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5 bmMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kaXNjYXJkLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cHJlcGFyZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRp bHMvcG9ydGFsLmgiCkBAIC0yNSw3ICsyNiw3IEBACiBzdGF0aWMgdm9pZCBEaXNjYXJkQWxsKGJv b2wgaXNUb3BMZXZlbCk7CiAKIC8qCi0gKiBESVNDQVJEIHsgQUxMIHwgU0VRVUVOQ0VTIHwgVEVN UCB8IFBMQU5TIH0KKyAqIERJU0NBUkQgeyBBTEwgfCBTRVFVRU5DRVMgfCBURU1QIHwgUExBTlMg fCBWQVJJQUJMRVN9CiAgKi8KIHZvaWQKIERpc2NhcmRDb21tYW5kKERpc2NhcmRTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNj YXJkU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3Bh Y2UoKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNj aGVtYVZhcmlhYmxlc0NhY2hlKCk7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBESVNDQVJEIHRhcmdldDogJWQiLCBzdG10LT50YXJnZXQpOwog CX0KQEAgLTc1LDQgKzgwLDUgQEAgRGlzY2FyZEFsbChib29sIGlzVG9wTGV2ZWwpCiAJUmVzZXRQ bGFuQ2FjaGUoKTsKIAlSZXNldFRlbXBUYWJsZU5hbWVzcGFjZSgpOwogCVJlc2V0U2VxdWVuY2VD YWNoZXMoKTsKKwlSZXNldFNjaGVtYVZhcmlhYmxlc0NhY2hlKCk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKaW5kZXggNTQ5YzdlYTUxZC4uYzhlMmI4MjJlMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTI2LDYgKzEyNiw3IEBAIHN0YXRpYyBldmVu dF90cmlnZ2VyX3N1cHBvcnRfZGF0YSBldmVudF90cmlnZ2VyX3N1cHBvcnRbXSA9IHsKIAl7IlRF WFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZX0sCiAJeyJUWVBFIiwgdHJ1ZX0sCiAJeyJVU0VSIE1B UFBJTkciLCB0cnVlfSwKKwl7IlZBUklBQkxFIiwgdHJ1ZX0sCiAJeyJWSUVXIiwgdHJ1ZX0sCiAJ e05VTEwsIGZhbHNlfQogfTsKQEAgLTExMjQsNiArMTEyNSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfVFNURU1QTEFU RToKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgorCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCXJldHVybiB0cnVl OwogCkBAIC0yMjIyLDYgKzIyMjQsOCBAQCBzdHJpbmdpZnlfZ3JhbnRfb2JqdHlwZShPYmplY3RU eXBlIG9ianR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0UiOwogCQljYXNlIE9CSkVDVF9UWVBF OgogCQkJcmV0dXJuICJUWVBFIjsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQlyZXR1cm4g IlZBUklBQkxFIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2Ug T0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIzMDQs NiArMjMwOCw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXJl dHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFSSUFC TEVTIjsKIAkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNhc2UgT0JKRUNU X0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCA5MDBmYTc0ZTg1Li5kODBhYzk2MzAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC04OTYsNiArODk2LDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExp c3QgKmFuY2VzdG9ycywKIAkJCQljYXNlIENNRF9ERUxFVEU6CiAJCQkJCXBuYW1lID0gb3BlcmF0 aW9uID0gIkRlbGV0ZSI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJcG5h bWUgPSBvcGVyYXRpb24gPSAiTGV0IjsKKwkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoKIAkJCQkJ cG5hbWUgPSAiPz8/IjsKIAkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggYjk0 NWIxNTU2YS4uYTY5NDcxZTkyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTUxLDYgKzE1 MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURfVVBEQVRFOgogCQljYXNlIENN RF9ERUxFVEU6CisJCWNhc2UgQ01EX0xFVDoKIAkJCS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVm YXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hdmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uNDJhMmE3MjBiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NjaGVtYXZhci5jCkBAIC0wLDAgKzEsMTI3NSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogc2NoZW1hdmFyLmMKKyAqCSAgUG9zdGdyZVNRTCBzZXNzaW9uIHZhcmlhYmxlIHN1 cHBvcnQgY29kZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYXZhci5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2Rl ZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUgImNvbW1h bmRzL3NjaGVtYXZhci5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV9jb2VyY2UuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgor I2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5j bHVkZSAidXRpbHMvZGF0dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVk ZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvdHlwY2FjaGUuaCIKKworLyoKKyAqIFRoaXMgc2NoZW1hIHZhcmlhYmxlIGNhY2hl IG1peGVzIHRoZSBjYWNoZSBhbmQgc3RvcmFnZXMgYmVoYXZlLiBUaGF0IGlzIG5vdAorICogY29y cmVjdCBhbmQgaXQgaXMgcHJvYmxlbWF0aWMsIHdoZW4gdmFyaWFibGUgaXMgcmVtb3ZlZC4gVGhl IG93biBzdG9yYWdlCisgKiBiYXNlZCBvbiBzdG9yYWdlIG1hbmFnZXIgY2FuIGJlIGltcGxlbWVu dGVkLCBSZWxGaWxlTm9kZSBjYW4gYmUgZGVmaW5lZCBhbmQKKyAqIG1lY2hhbmlzbSBiYXNlZCBv biBQZW5kaW5nUmVsRGVsZXRlIHN0cnVjdCBjYW4gYmUgdXNlZC4gVGhpcyBpcyBhIGFyZ3VtZW50 CisgKiBmb3IgaW1wbGVtZW50YXRpb24gc2NoZW1hIHZhcmlhYmxlcyBiYXNlZCBvbiBwZ19jbGFz cy4KKyAqIEFsdGVybmF0aXZlIHNvbHV0aW9uIGNhbiBiZSBkZXRlY3Rpb24gb2Ygc2NoZW1hIGNo YW5nZXMgYW5kIHJlY2hlY2sgYXQgYW5kCisgKiBvZiB0cmFuc2FjdGlvbi4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgU2NoZW1hVmFyRGF0YQoreworCU9pZAkJCXZhcmlkOwkJCS8qIHBnX2NsYXNzIE9J RCBvZiB0aGlzIHNlcXVlbmNlIChoYXNoIGtleSkgKi8KKwlPaWQJCQl0eXBpZDsJCQkvKiBPSUQg b2YgdGhlIGRhdGEgdHlwZSAqLworCWludDMyCQl0eXBtb2Q7CisJaW50MTYJCXR5cGxlbjsKKwli b29sCQl0eXBieXZhbDsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbDsKKwlEYXR1bQkJ dmFsdWU7Cit9IFNjaGVtYVZhckRhdGE7CisKK3R5cGVkZWYgU2NoZW1hVmFyRGF0YSAqU2NoZW1h VmFyOworCitzdGF0aWMgSFRBQiAqc2NoZW1hdmFyaGFzaHRhYiA9IE5VTEw7CQkvKiBoYXNoIHRh YmxlIGZvciBzZXNzaW9uIHZhcmlhYmxlcyAqLworc3RhdGljIE1lbW9yeUNvbnRleHQgU2NoZW1h VmFyTWVtb3J5Q29udGV4dCA9IE5VTEw7CisKK3N0YXRpYyBEYXR1bSBkYXR1bUNhc3QoRGF0dW0g dmFsdWUsCisJCQkJCQkgIE9pZCB0YXJnZXRfdHlwaWQsIGludCB0YXJnZXRfdHlwbW9kLAorCQkJ CQkJICBPaWQgc291cmNlX3R5cGlkLCBpbnQgc291cmNlX3R5cG1vZCk7CisKK3N0YXRpYyBib29s CWZpcnN0X3RpbWUgPSB0cnVlOworc3RhdGljIGJvb2wJY2FjaGVfaXNfdmFsaWQgPSB0cnVlOwor CitzdGF0aWMgdm9pZCBJbnZhbGlkYXRlU2NoZW1hVmFyQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcs IGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKK3N0YXRpYyBEYXR1bSBnZXRfc2NoZW1h dmFyaWFibGVfdHlwaWRfdHlwbW9kKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgKnR5cGlk LCBpbnQzMiAqdHlwbW9kLCBTY2hlbWFWYXIgKnNjaGVtYXZhciwgYm9vbCBlbnN1cmVfdmFyaWFi bGUpOworCisvKiBqdXN0IG1hcmsgY2FjaGUgdG8gcmVjaGVjayAqLworc3RhdGljIHZvaWQKK0lu dmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCit7CisJLyoKKwkgKiBiZWNhdXNlIHRoaXMgY2FjaGUgaG9sZHMgdmFs dWVzIG9mIHNjaGVtYSB2YXJpYWJsZXMsIHRoZW4KKwkgKiB0aGUgY29udGVudCBjYW5ub3QgYmUg cmVtb3ZlZCBpbiB0aGlzIG1vbWVtdC4gV2Ugc2hvdWxkIHRvCisJICogd2FpdCBvbiB0cmFuc2Fj dGlvbiBlbmQuCisJICovCisJY2FjaGVfaXNfdmFsaWQgPSBmYWxzZTsKK30KKworLyoKKyAqIFdh aXQgb24gY29tbWl0IG9yIHJvbGxiYWNrIGFuZCBjbGVhbiB2YWx1ZXMgdGhhdCBtaXNzIGVudHJ5 IGluIHN5c3RlbQorICogY2F0YWxvZy4gSXQgaXMgdGVtcG9yYXJ5IHNvbHV0aW9uIChhbHRob3Vn aCBpdCBpcyB3b3JraW5nKS4gU3RvcmFnZSBtYW5hZ2VyCisgKiBiYXNlZCBzb2x1dGlvbiB3aWxs IGJlIGJldHRlciwgYnV0IGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHRoaXMgUG9DLgorICoKKyAq IHJlbW92ZXMgdW5jb21taXR0ZWQgb3IgZHJvcHBlZCBzY2hlbWEgdmFyaWFibGVzLCBzbyBldmVu dCBjYW4gYmUgaWdub3JlZC4KKyAqLworc3RhdGljIHZvaWQKK3JlY2hlY2tfc2NoZW1hX3Zhcmlh YmxlcyhYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOworCVNjaGVtYVZhcgkJdmFyOworCisJaWYgKGNhY2hlX2lzX3ZhbGlkIHx8IHNjaGVtYXZh cmhhc2h0YWIgPT0gTlVMTCB8fCAhSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCXJldHVybjsKKwor CWhhc2hfc2VxX2luaXQoJnN0YXR1cywgc2NoZW1hdmFyaGFzaHRhYik7CisKKwl3aGlsZSAoKHZh ciA9IChTY2hlbWFWYXIpIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJ CUhlYXBUdXBsZQl0cCA9IEludmFsaWRPaWQ7CisKKwkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVM T0lELCBPYmplY3RJZEdldERhdHVtKHZhci0+dmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHRwKSkKKwkJeworCQkJZWxvZyhERUJVRzEsICJ2YXJpYWJsZSAlZCBpcyByZW1vdmVkIGZy b20gY2FjaGUiLCB2YXItPnZhcmlkKTsKKworCQkJaWYgKHZhci0+ZnJlZXZhbCkKKwkJCXsKKwkJ CQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFyLT52YWx1ZSkpOworCQkJCXZhci0+ZnJlZXZhbCA9 IGZhbHNlOworCQkJfQorCisJCQlpZiAoaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJ CQkJCQkJKHZvaWQgKikgJnZhci0+dmFyaWQsCisJCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJ CQlOVUxMKSA9PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIp OworCQl9CisJCWVsc2UKKwkJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJfQorCWNhY2hlX2lzX3Zh bGlkID0gdHJ1ZTsKK30KKworLyoKKyAqIERlZmluZVNlc3Npb25WYXJpYWJsZQorICoJCQkJQ3Jl YXRlcyBhIG5ldyB2YXJpYWJsZSByZWxhdGVkIHJlbGF0aW9uCisgKi8KK09iamVjdEFkZHJlc3MK K0RlZmluZVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU2NoZW1hVmFy U3RtdCAqdmFyKQoreworCUNyZWF0ZVN0bXQgKnN0bXQgPSBtYWtlTm9kZShDcmVhdGVTdG10KTsK KwlPaWQJCQl0eXBvaWQ7CisJT2lkCQkJdmFyb2lkOworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsK Kwlib29sCQljcmVhdGVfY2FzdDsKKworCS8qCisJICogSWYgaWZfbm90X2V4aXN0cyB3YXMgZ2l2 ZW4gYW5kIGEgcmVsYXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkKKwkgKiBleGlzdHMs IGJhaWwgb3V0LiAoTm90ZTogd2UgbmVlZG4ndCBjaGVjayB0aGlzIHdoZW4gbm90IGlmX25vdF9l eGlzdHMsCisJICogYmVjYXVzZSBEZWZpbmVSZWxhdGlvbiB3aWxsIGNvbXBsYWluIGFueXdheS4p CisJICovCisJaWYgKHZhci0+aWZfbm90X2V4aXN0cykKKwl7CisJCVJhbmdlVmFyR2V0QW5kQ2hl Y2tDcmVhdGlvbk5hbWVzcGFjZSh2YXItPnZhcmlhYmxlLCBOb0xvY2ssICZ2YXJvaWQpOworCQlp ZiAoT2lkSXNWYWxpZCh2YXJvaWQpKQorCQl7CisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBc IiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQl2YXItPnZhcmlhYmxlLT5y ZWxuYW1lKSkpOworCQkJcmV0dXJuIEludmFsaWRPYmplY3RBZGRyZXNzOworCQl9CisJfQorCisJ LyoKKwkgKiBWYXJpYWJsZSBjYW4gYmUgZGVmaW5lZCBieSB0eXBlIChzY2FsYXIsIGNvbXBvc2l0 ZSkgb3IgYnkKKwkgKiBmaWVsZCBsaXN0LiBXaGVuIGlzIGRlZmluZWQgYnkgZmllbGQgbGlzdCwg d2Ugc2hvdWxkIHRvIGNyZWF0ZQorCSAqIG5ldyB0eXBlIHJlbGF0ZWQgdG8gdGhpcyB2YXJpYWJs ZS4KKwkgKi8KKwlpZiAodmFyLT50eXBlTmFtZSAhPSBOVUxMKQorCXsKKwkJT2lkCQl0eXByZWxp ZDsKKworCQlBc3NlcnQodmFyLT5maWVsZHMgPT0gTklMKTsKKworCQl0eXBvaWQgPSBMb29rdXBU eXBlTmFtZU9pZChwc3RhdGUsIHZhci0+dHlwZU5hbWUsIGZhbHNlKTsKKworCQlpZiAoZ2V0X3R5 cHR5cGUodHlwb2lkKSA9PSBUWVBUWVBFX1BTRVVETykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJp YWJsZSBjYW5ub3QgYmUgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHZhcm9pZCkpKSk7CisK KwkJdHlwcmVsaWQgPSB0eXBlaWRUeXBlUmVsaWQodHlwb2lkKTsKKworCQlpZiAoIU9pZElzVmFs aWQodHlwcmVsaWQpKQorCQl7CisJCQkvKgorCQkJICogd2hlbiB2YXJpYWJsZSB0eXBlIGlzIG5v dCBjb21wb3NpdGUgdHlwZSwgd2Ugc2hvdWxkIHRvIGNyZWF0ZQorCQkJICogYXV4IGNvbXBvc2l0 ZSB0eXBlLgorCQkJICovCisJCQlDb2x1bW5EZWYgKmNvbGRlZiA9IG1ha2VOb2RlKENvbHVtbkRl Zik7CisKKwkJCWNvbGRlZi0+aW5oY291bnQgPSAwOworCQkJY29sZGVmLT5pc19sb2NhbCA9IHRy dWU7CisJCQljb2xkZWYtPmlzX25vdF9udWxsID0gZmFsc2U7CisJCQljb2xkZWYtPmlzX2Zyb21f dHlwZSA9IGZhbHNlOworCQkJY29sZGVmLT5zdG9yYWdlID0gMDsKKwkJCWNvbGRlZi0+cmF3X2Rl ZmF1bHQgPSB2YXItPmRlZmV4cHI7CisJCQljb2xkZWYtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsK KwkJCWNvbGRlZi0+Y29sbENsYXVzZSA9IE5VTEw7CisJCQljb2xkZWYtPmNvbGxPaWQgPSBJbnZh bGlkT2lkOworCQkJY29sZGVmLT5jb25zdHJhaW50cyA9IE5JTDsKKwkJCWNvbGRlZi0+bG9jYXRp b24gPSAtMTsKKworCQkJLyogVXNlIGltcGxpdCBuYW1lIHNhbWUgbGlrZSB2YXJpYWJsZSBuYW1l ICovCisJCQljb2xkZWYtPmNvbG5hbWUgPSB2YXItPnZhcmlhYmxlLT5yZWxuYW1lOworCQkJY29s ZGVmLT50eXBlTmFtZSA9IHZhci0+dHlwZU5hbWU7CisKKwkJCXN0bXQtPnRhYmxlRWx0cyA9IGxh cHBlbmQoc3RtdC0+dGFibGVFbHRzLCBjb2xkZWYpOworCisJCQljcmVhdGVfY2FzdCA9IGZhbHNl OworCQl9CisJCWVsc2UKKwkJeworCQkJVHVwbGVEZXNjCXR1cGRlc2M7CisJCQlSZWxhdGlvbgly ZWw7CisJCQlpbnQJCQlpOworCisJCQlyZWwgPSByZWxhdGlvbl9vcGVuKHR5cHJlbGlkLCBBY2Nl c3NTaGFyZUxvY2spOworCQkJdHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25H ZXREZXNjcihyZWwpKTsKKworCQkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKysp CisJCQl7CisJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgaSk7CisKKwkJCQlpZiAoIWF0dHJTdHJ1Y3QtPmF0dGlzZHJvcHBlZCkKKwkJCQl7 CisJCQkJCUNvbHVtbkRlZiAqY29sZGVmID0gbWFrZU5vZGUoQ29sdW1uRGVmKTsKKworCQkJCQlj b2xkZWYtPmluaGNvdW50ID0gMDsKKwkJCQkJY29sZGVmLT5pc19sb2NhbCA9IHRydWU7CisJCQkJ CWNvbGRlZi0+aXNfbm90X251bGwgPSBmYWxzZTsKKwkJCQkJY29sZGVmLT5pc19mcm9tX3R5cGUg PSBmYWxzZTsKKwkJCQkJY29sZGVmLT5zdG9yYWdlID0gMDsKKwkJCQkJY29sZGVmLT5yYXdfZGVm YXVsdCA9IE5VTEw7CisJCQkJCWNvbGRlZi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCQkJCQlj b2xkZWYtPmNvbGxDbGF1c2UgPSBOVUxMOworCQkJCQljb2xkZWYtPmNvbGxPaWQgPSBJbnZhbGlk T2lkOworCQkJCQljb2xkZWYtPmNvbnN0cmFpbnRzID0gTklMOworCQkJCQljb2xkZWYtPmxvY2F0 aW9uID0gLTE7CisKKwkJCQkJY29sZGVmLT5jb2xuYW1lID0gcHN0cmR1cChOYW1lU3RyKGF0dHJT dHJ1Y3QtPmF0dG5hbWUpKTsKKwkJCQkJY29sZGVmLT50eXBlTmFtZSA9IG1ha2VUeXBlTmFtZUZy b21PaWQoYXR0clN0cnVjdC0+YXR0dHlwaWQsCisJCQkJCQkJCQkJCQkJCSAgIGF0dHJTdHJ1Y3Qt PmF0dHR5cG1vZCk7CisKKwkJCQkJc3RtdC0+dGFibGVFbHRzID0gbGFwcGVuZChzdG10LT50YWJs ZUVsdHMsIGNvbGRlZik7CisJCQkJfQorCQkJfQorCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2Mp OworCQkJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQljcmVhdGVf Y2FzdCA9IHRydWU7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KHZhci0+dHlwZU5hbWUg PT0gTlVMTCk7CisJCUFzc2VydCh2YXItPmZpZWxkcyAhPSBOSUwpOworCisJCXN0bXQtPnRhYmxl RWx0cyA9IHZhci0+ZmllbGRzOworCisJCWNyZWF0ZV9jYXN0ID0gZmFsc2U7CisJfQorCisJc3Rt dC0+cmVsYXRpb24gPSB2YXItPnZhcmlhYmxlOworCXN0bXQtPmluaFJlbGF0aW9ucyA9IE5JTDsK KwlzdG10LT5jb25zdHJhaW50cyA9IE5JTDsKKwlzdG10LT5vcHRpb25zID0gTklMOworCXN0bXQt Pm9uY29tbWl0ID0gT05DT01NSVRfTk9PUDsKKwlzdG10LT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7 CisJc3RtdC0+aWZfbm90X2V4aXN0cyA9IHZhci0+aWZfbm90X2V4aXN0czsKKworCS8qCisJICog U2NoZW1hIHZhcmlhYmxlcyB1c2VzIHJlbHR5cGUgYW5kIHJlbG9mdHlwZSBmaWVsZHMuIFRoZSBy ZWx0eXBlIGlzCisJICogY29tcG9zaXRlIGFsd2F5cyBmb3Igc2NhbGFyIGFuZCBub24gc2NhbGFy IHZhcmlhYmxlcy4gSXQgaXMgdXNlZCB3aGVuCisJICogd2UgbmVlZCBhIHZhcmlhYmxlJ3MgdHVw bGUgZGVzY3JpcHJpb24uIFdoZW4gdmFyaWFibGUgdHlwZSBpcyBjb21wb3NpdGUsCisJICogdGhl biBpcyByZWZlcmVuY2VkIHdpdGhvdXQgY2hhbmdlLiBTY2FsYXIgdmFyaWFibGUgViBpcyB0cmFu c2xhdGVkIHRvCisJICogY29tcG9zaXRlIHR5cGUgKHZfbmFtZSB2X3R5cGUpLgorCSAqIFRoZSBy ZWx0eXBlIGlzIGFsd2F5cyBjb21wb3NpdGUgLSBzZWUgY2F0YWxvZy9oZWFwLmMgQWRkTmV3UmVs YXRpb25UeXBlLAorCSAqIGJ1dCBmb3Igc2NoZW1hIHZhcmlhYmxlcyBiYXNlZCBvbiBzb21lIHR5 cGUgaXMgdGhpcyBiZWhhdmUgdW53YW50ZWQuCisJICogdmFyaWFibGUgdHlwZSBpcyBub3QgY29t cGF0aWJsZSB3aXRoIGJhc2UgdHlwZS4gU28gaW4gdGhpcyBjYXNlIGlzIGJldHRlcgorCSAqIGRl ZmluZSByZWx0eXBlIGFzIGRvbWFpbiBvZiBiYXNlIHR5cGUuIEJ1dCB0aGlzIGNoYW5nZSBicmVh ayBjb25zaXN0ZW5jeQorCSAqIG9mIHJlbHR5cGUgLSBzbyBJIGNoYW5nZWQgbm90aGluZyBhbmQg aW1wbGljaXRseSBnZW5lcmF0ZSBuZWNlc3NhcnkgY2FzdHMuCisJICovCisJc3RtdC0+b2ZUeXBl bmFtZSA9IHZhci0+dHlwZU5hbWU7CisKKwlhZGRyZXNzID0gRGVmaW5lUmVsYXRpb24oc3RtdCwg UkVMS0lORF9WQVJJQUJMRSwgSW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisJQXNzZXJ0KGFkZHJl c3Mub2JqZWN0SWQgIT0gSW52YWxpZE9pZCk7CisKKwlpZiAoY3JlYXRlX2Nhc3QpCisJeworCQlP YmplY3RBZGRyZXNzIGMxLCBjMiwgcmVmZXJlbmNlZF90MSwgcmVmZXJlbmNlZF90MjsKKwkJVHlw ZU5hbWUgKnQxID0gdmFyLT50eXBlTmFtZTsKKwkJVHlwZU5hbWUgKnQyID0gbWFrZVR5cGVOYW1l RnJvbU9pZChnZXRfcmVsX3R5cGVfaWQoYWRkcmVzcy5vYmplY3RJZCksIC0xKTsKKworCQkvKgor CQkgKiBUaGlzIGlzIHVnbHkgcGFydCAtIGJ1dCBJIHNob3VsZCB0byB0ZWFjaCBQb3N0Z3Jlcywg c28gdDEgYW5kIHQyIHR5cGVzCisJCSAqIGFyZSBjYXN0YWJsZS4gVW5mb3J0dW5hdGVsbHksIENy ZWF0ZUNhc3QgY2Fubm90IHRvIGNoYW5nZSBkZXBlbmRlbmN5LAorCQkgKiBzbyBmcmVzaCBkZXBl bmRlbmN5IHNob3VsZCBiZSByZW1vdmVkIGFuZCByZWNyZWF0ZWQgd2l0aCBERVBFTkRFTkNZX0FV VE8KKwkJICogZmxhZy4gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgc3VyZSBzbyBib3RoIHR5cGVzIGFy ZSBjb21wb3NpdGUsIHNvIG1heWJlIGxlc3MKKwkJICogdWdseSBjYW4gYmUgdXNlIHJlbHR5cGUg YXMgZG9tYWluIHR5cGUgb2YgYmFzZSB0eXBlIGluc3RlYWQgY29weS4KKwkJICovCisJCUNyZWF0 ZUNhc3RTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlQ2FzdFN0bXQpOworCisJCW4tPnNvdXJjZXR5 cGUgPSB0MTsKKwkJbi0+dGFyZ2V0dHlwZSA9IHQyOworCQluLT5mdW5jID0gTlVMTDsKKwkJbi0+ Y29udGV4dCA9IENPRVJDSU9OX0lNUExJQ0lUOworCQluLT5pbm91dCA9IHRydWU7CisKKwkJYzEg PSBDcmVhdGVDYXN0KG4pOworCisJCW4tPnNvdXJjZXR5cGUgPSB0MjsKKwkJbi0+dGFyZ2V0dHlw ZSA9IHQxOworCisJCWMyID0gQ3JlYXRlQ2FzdChuKTsKKworCQlkZWxldGVEZXBlbmRlbmN5UmVj b3Jkc0ZvcihDYXN0UmVsYXRpb25JZCwgYzEub2JqZWN0SWQsIGZhbHNlKTsKKwkJZGVsZXRlRGVw ZW5kZW5jeVJlY29yZHNGb3IoQ2FzdFJlbGF0aW9uSWQsIGMyLm9iamVjdElkLCBmYWxzZSk7CisK KwkJcmVmZXJlbmNlZF90MS5jbGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJCXJlZmVyZW5jZWRf dDEub2JqZWN0SWQgPSBnZXRfcmVsX3R5cGVfaWQoYWRkcmVzcy5vYmplY3RJZCk7CisJCXJlZmVy ZW5jZWRfdDEub2JqZWN0U3ViSWQgPSAwOworCisJCXJlZmVyZW5jZWRfdDIuY2xhc3NJZCA9IFR5 cGVSZWxhdGlvbklkOworCQlyZWZlcmVuY2VkX3QyLm9iamVjdElkID0gTG9va3VwVHlwZU5hbWVP aWQocHN0YXRlLCB2YXItPnR5cGVOYW1lLCBmYWxzZSk7CisJCXJlZmVyZW5jZWRfdDIub2JqZWN0 U3ViSWQgPSAwOworCisJCXJlY29yZERlcGVuZGVuY3lPbigmYzEsICZyZWZlcmVuY2VkX3QxLCBE RVBFTkRFTkNZX0FVVE8pOworCQlyZWNvcmREZXBlbmRlbmN5T24oJmMxLCAmcmVmZXJlbmNlZF90 MiwgREVQRU5ERU5DWV9BVVRPKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZjMiwgJnJlZmVyZW5j ZWRfdDEsIERFUEVOREVOQ1lfQVVUTyk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmYzIsICZyZWZl cmVuY2VkX3QyLCBERVBFTkRFTkNZX0FVVE8pOworCX0KKworCXJldHVybiBhZGRyZXNzOworfQor CisvKgorICogSW1wbGVtZW50YXRpb24gb2Ygc2NoZW1hdmFyIGNhY2hlLiBJdCBpcyBxdWVzdGlv biBpZiBpdCBzaG91bGQgYmUgaW4gdGhpcyBwbGFjZSwgb3IKKyAqIGl0IHNob3VsZCBiZSBzdG9y YWdlIHJlbGF0ZWQgb3IgY2FjaGUgcmVsYXRlZCBwbGFjZT8gQnV0IGZvciB0aGlzIG1vbWVudCAo UG9DKSBpdAorICogY2FuIGJlIGhlcmUuIENhY2hlIGlzIGltcGxlbWVudGVkIGFzIGhhc2ggdGFi bGUgd2l0aCBvd24gbWVtb3J5IGNvbnRleHQuCisgKi8KKworLyoKKyAqIENyZWF0ZSB0aGUgaGFz aCB0YWJsZSBmb3Igc3RvcmluZyBzY2hlbWEgdmFyaWFibGVzCisgKi8KK3N0YXRpYyB2b2lkCitj cmVhdGVfc2NoZW1hdmFyX2hhc2h0YWJsZSh2b2lkKQoreworCUhBU0hDVEwJCWN0bDsKKworCS8q IHNldCBjYWxsYmFja3MgKi8KKwlpZiAoZmlyc3RfdGltZSkKKwl7CisKKwkJQ2FjaGVSZWdpc3Rl clN5c2NhY2hlQ2FsbGJhY2soUkVMT0lELAorCQkJCQkJCQkJICBJbnZhbGlkYXRlU2NoZW1hVmFy Q2FjaGVDYWxsYmFjaywKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwkJUmVnaXN0ZXJYYWN0Q2Fs bGJhY2socmVjaGVja19zY2hlbWFfdmFyaWFibGVzLCBOVUxMKTsKKworCQlmaXJzdF90aW1lID0g ZmFsc2U7CisJfQorCisJLyogbmVlZHMgb3duIGxvbmcgbGlmZSBtZW1vcnkgY29udGV4dCAqLwor CWlmIChTY2hlbWFWYXJNZW1vcnlDb250ZXh0ID09IE5VTEwpCisJeworCQlTY2hlbWFWYXJNZW1v cnlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJ CQkJCQkJCQkJCQkic2NoZW1hIHZhcmlhYmxlcyIsCisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9T VEFSVF9TTUFMTF9TSVpFUyk7CisJfQorCisJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsK KwljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2No ZW1hVmFyRGF0YSk7CisJY3RsLmhjeHQgPSBTY2hlbWFWYXJNZW1vcnlDb250ZXh0OworCisJc2No ZW1hdmFyaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTY2hlbWEgdmFyaWFibGVzIiwgNjQsICZjdGws CisJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2Fj aGVfaXNfdmFsaWQgPSB0cnVlOworfQorCisvKgorICogRmFzdCBkcm9wIGNvbXBsZXRlIGNvbnRl bnQgb2Ygc2NoZW1hIHZhcmlhYmxlcworICovCit2b2lkCitSZXNldFNjaGVtYVZhcmlhYmxlc0Nh Y2hlKHZvaWQpCit7CisJaWYgKHNjaGVtYXZhcmhhc2h0YWIpCisJeworCQloYXNoX2Rlc3Ryb3ko c2NoZW1hdmFyaGFzaHRhYik7CisJCXNjaGVtYXZhcmhhc2h0YWIgPSBOVUxMOworCX0KKworCWlm IChTY2hlbWFWYXJNZW1vcnlDb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0UmVz ZXQoU2NoZW1hVmFyTWVtb3J5Q29udGV4dCk7CisJfQorfQorCisvKgorICogQ29weSBkYXR1bSB2 YWx1ZSB0byBzY2hlbWEgdmFyaWFibGVzIGNhY2hlIHBsYWNlCisgKi8KK3N0YXRpYyB2b2lkCitT ZXRWYWx1ZShTY2hlbWFWYXIgdmFyLAorCQkgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLAorCQkg T2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpCit7CisJLyogcmVsZWFzZSBwcmV2aW91c2x5IHN0b3Jl ZCB2YWx1ZSAqLworCWlmICh2YXItPmZyZWV2YWwpCisJeworCQlwZnJlZShEYXR1bUdldFBvaW50 ZXIodmFyLT52YWx1ZSkpOworCQl2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwl9CisKKwlpZiAoIWlz TnVsbCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJCS8qCisJCSAqIGNhc3QgdGhl IHZhbHVlIGlmIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LgorCQkgKiBFeHBlY3Rpbmc6IGN1cnJl bnQgY29udGV4dCBpcyBzaG9ydCBjb250ZXh0LgorCQkgKgorCQkgKiBRVUVTVElPTjogaG93IG11 Y2ggc2hvdWxkIGJlIHRoaXMgY2FzdCB0b2xlcmFudC9zdHJpY3Q/CisJCSAqLworCQlpZiAodmFy LT50eXBpZCAhPSB0eXBpZCB8fCB2YXItPnR5cG1vZCAhPSB0eXBtb2QpCisJCXsKKwkJCXZhbHVl ID0gZGF0dW1DYXN0KHZhbHVlLAorCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1vZCwKKwkJ CQkJCQkJdHlwaWQsIHR5cG1vZCk7CisJCX0KKworCQl2YXItPmlzbnVsbCA9IGZhbHNlOworCisJ CW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hlbWFWYXJNZW1vcnlDb250ZXh0KTsK KworCQl2YXItPnZhbHVlID0gZGF0dW1Db3B5KHZhbHVlLCB2YXItPnR5cGJ5dmFsLCB2YXItPnR5 cGxlbik7CisJCWlmICh2YXItPnZhbHVlICE9IHZhbHVlKQorCQkJdmFyLT5mcmVldmFsID0gdHJ1 ZTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisJZWxzZQorCXsKKwkJ dmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJdmFyLT5pc251bGwgPSB0cnVlOworCX0KK30KKwor LyoKKyAqIEFjY2VzcyBmdW5jdGlvbnMgdG8gc2NoZW1hIHZhcmlhYmxlcy4KKyAqLwordm9pZAor U2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJ CQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0 eXBieXZhbCkKK3sKKwlTY2hlbWFWYXIJdmFyOworCWJvb2wJCWZvdW5kOworCisJaWYgKHNjaGVt YXZhcmhhc2h0YWIgPT0gTlVMTCkKKwl7CisJCS8qIGRvbid0IGluaXQgaGFzaHRhYmxlIGZvciBO VUxMIHZhbHVlcyAqLworCQlpZiAoaXNOdWxsKQorCQkJcmV0dXJuOworCisJCWNyZWF0ZV9zY2hl bWF2YXJfaGFzaHRhYmxlKCk7CisJfQorCisJdmFyID0gKFNjaGVtYVZhcikgaGFzaF9zZWFyY2go c2NoZW1hdmFyaGFzaHRhYiwgJnZhcmlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWlmICghZm91 bmQpCisJeworCQlIZWFwVHVwbGUJdHA7CisJCUZvcm1fcGdfY2xhc3MJdmFydHVwOworCisJCXZh ci0+dmFsdWUgPSAoRGF0dW0pIDA7CisJCXZhci0+aXNudWxsID0gdHJ1ZTsKKwkJdmFyLT5mcmVl dmFsID0gZmFsc2U7CisKKwkJLyogbm93LCB0eXBlIGluZm8gZm9yIHNjaGVtYSB2YXJpYWJsZSBp cyBjb2xsZWN0ZWQgKi8KKwkJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdl dERhdHVtKHZhcmlkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxkIGZvciB2YXJpYWJsZSAldSIsIHZhcmlkKTsKKworCQl2 YXJ0dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKworCQlpZiAodmFydHVwLT5y ZWxvZnR5cGUgIT0gSW52YWxpZE9pZCkKKwkJeworCQkJT2lkCQl0eXBvaWQgPSB2YXJ0dXAtPnJl bG9mdHlwZTsKKworCQkJaWYgKGdldF90eXB0eXBlKHR5cG9pZCkgPT0gVFlQVFlQRV9DT01QT1NJ VEUpCisJCQl7CisJCQkJdmFyLT50eXBpZCA9IHZhcnR1cC0+cmVsb2Z0eXBlOworCQkJCXZhci0+ dHlwbW9kID0gLTE7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJVHVwbGVEZXNjCXR1cGRlc2M7 CisJCQkJUmVsYXRpb24JcmVsOworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJTdHJ1Y3Q7CisK KwkJCQkvKiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQkJcmVsID0gcmVsYXRpb25fb3Blbih0eXBl aWRUeXBlUmVsaWQodmFydHVwLT5yZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl0dXBk ZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdldERlc2NyKHJlbCkpOworCisJCQkJ YXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCk7CisKKwkJCQl2YXItPnR5cGlk ID0gYXR0clN0cnVjdC0+YXR0dHlwaWQ7CisJCQkJdmFyLT50eXBtb2QgPSBhdHRyU3RydWN0LT5h dHR0eXBtb2Q7CisKKwkJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJCXJlbGF0aW9uX2Ns b3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCXZh ci0+dHlwaWQgPSB2YXJ0dXAtPnJlbHR5cGU7CisJCQl2YXItPnR5cG1vZCA9IC0xOworCQl9CisK KwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCQlnZXRfdHlwbGVuYnl2YWwodmFyLT50eXBpZCwg JnZhci0+dHlwbGVuLCAmdmFyLT50eXBieXZhbCk7CisJfQorCisJU2V0VmFsdWUodmFyLCB2YWx1 ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kKTsKK30KKworCisvKgorICogUmV0dXJucyB2YXJpYWJs ZSBuYW1lCisgKi8KK2NoYXIgKgorZ2V0X3NjaGVtYXZhcl9uYW1lKE9pZCB2YXJpZCkKK3sKKwlI ZWFwVHVwbGUJCXJlbFR1cDsKKwlGb3JtX3BnX2NsYXNzCXJlbEZvcm07CisJY2hhcgkgICAqbnNw bmFtZTsKKwljaGFyCSAgICpyZWxuYW1lOworCisJcmVsVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFJF TE9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQocmVsVHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBzY2hlbWEgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJcmVsRm9ybSA9IChGb3JtX3BnX2NsYXNz KSBHRVRTVFJVQ1QocmVsVHVwKTsKKworCS8qIFF1YWxpZnkgdGhlIG5hbWUgaWYgbm90IHZpc2li bGUgaW4gc2VhcmNoIHBhdGggKi8KKwlpZiAoUmVsYXRpb25Jc1Zpc2libGUodmFyaWQpKQorCQlu c3BuYW1lID0gTlVMTDsKKwllbHNlCisJCW5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUocmVs Rm9ybS0+cmVsbmFtZXNwYWNlKTsKKworCXJlbG5hbWUgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRp Zmllcihuc3BuYW1lLCBOYW1lU3RyKHJlbEZvcm0tPnJlbG5hbWUpKTsKKworCVJlbGVhc2VTeXND YWNoZShyZWxUdXApOworCisJcmV0dXJuIHJlbG5hbWU7Cit9CisKKy8qCisgKiBTZWN1cml6ZWQg dmVyc2lvbnMgU2V0U2NoZW1hVmFyaWFibGUKKyAqLwordm9pZAorU2V0U2NoZW1hVmFyaWFibGVT ZWN1cmUoT2lkIHZhcmlkLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsCisJCQkJCQlPaWQgdHlw aWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sK KwlBY2xSZXN1bHQJCWFjbHJlc3VsdDsKKworCS8qIENoZWNrIHBlcm1pc3Npb25zICovCisJYWNs cmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfVVBEQVRF KTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcihhY2xy ZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgZ2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSk7CisKKwlT ZXRTY2hlbWFWYXJpYWJsZSh2YXJpZCwgdmFsdWUsIGlzTnVsbCwgdHlwaWQsIHR5cG1vZCwgdHlw bGVuLCB0eXBieXZhbCk7Cit9CisKKy8qCisgKiBDYXN0IGRhdHVtCisgKi8KK3N0YXRpYyBEYXR1 bQorZGF0dW1DYXN0KERhdHVtIHZhbHVlLAorCQkgIE9pZCB0YXJnZXRfdHlwaWQsIGludCB0YXJn ZXRfdHlwbW9kLAorCQkgIE9pZCBzb3VyY2VfdHlwaWQsIGludCBzb3VyY2VfdHlwbW9kKQorewor CUNvZXJjaW9uUGF0aFR5cGUgY3BhdGh0eXBlOworCU9pZAkJY2Z1bmNpZDsKKwlEYXR1bQlyZXN1 bHQgPSAoRGF0dW0pIDA7CisJYm9vbAlpc19iaW5hcnlfY2FzdCA9IGZhbHNlOworCisJaWYgKHRh cmdldF90eXBpZCAhPSBzb3VyY2VfdHlwaWQpCisJeworCQljcGF0aHR5cGUgPSBmaW5kX2NvZXJj aW9uX3BhdGh3YXkodGFyZ2V0X3R5cGlkLCBzb3VyY2VfdHlwaWQsCisJCQkJCQkJCQkJCUNPRVJD SU9OX0VYUExJQ0lULAorCQkJCQkJCQkJCQkmY2Z1bmNpZCk7CisKKwkJaWYgKGNwYXRodHlwZSA9 PSBDT0VSQ0lPTl9QQVRIX05PTkUpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgY2Fz dCBmcm9tICVzIHRvICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHNvdXJjZV90eXBpZCksCisJ CQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRfdHlwaWQpKTsKKworCQlpZiAoY3BhdGh0eXBlID09 IENPRVJDSU9OX1BBVEhfUkVMQUJFTFRZUEUpCisJCXsKKwkJCXJlc3VsdCA9IHZhbHVlOworCQkJ aXNfYmluYXJ5X2Nhc3QgPSB0cnVlOworCQl9CisJCWVsc2UgaWYgKGNwYXRodHlwZSA9PSBDT0VS Q0lPTl9QQVRIX0NPRVJDRVZJQUlPKQorCQl7CisJCQlPaWQJCW91dGZ1bmM7CisJCQlPaWQJCWlu ZnVuYzsKKwkJCU9pZAkJaW9wYXJhbTsKKwkJCWJvb2wJaXNWYXJsZW5hOworCQkJY2hhcgkqc3Ry OworCisJCQlnZXRUeXBlT3V0cHV0SW5mbyhzb3VyY2VfdHlwaWQsICZvdXRmdW5jLCAmaXNWYXJs ZW5hKTsKKwkJCXN0ciA9IE9pZE91dHB1dEZ1bmN0aW9uQ2FsbChvdXRmdW5jLCB2YWx1ZSk7CisK KwkJCWdldFR5cGVJbnB1dEluZm8odGFyZ2V0X3R5cGlkLCAmaW5mdW5jLCAmaW9wYXJhbSk7CisJ CQlyZXN1bHQgPSBPaWRJbnB1dEZ1bmN0aW9uQ2FsbChpbmZ1bmMsIHN0ciwgaW9wYXJhbSwgLTEp OworCQl9CisJCWVsc2UgaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0ZVTkMpCisJCXsK KwkJCXJlc3VsdCA9IE9pZEZ1bmN0aW9uQ2FsbDMoY2Z1bmNpZCwKKwkJCQkJCQl2YWx1ZSwKKwkJ CQkJCQlJbnQzMkdldERhdHVtKHRhcmdldF90eXBtb2QpLAorCQkJCQkJCUJvb2xHZXREYXR1bShm YWxzZSkpOworCQl9CisJfQorCWVsc2UKKwl7CisJCXJlc3VsdCA9IHZhbHVlOworCQlpc19iaW5h cnlfY2FzdCA9IHRydWU7CisJfQorCisJaWYgKHRhcmdldF90eXBtb2QgPCAxIHx8ICh0YXJnZXRf dHlwbW9kID09IHNvdXJjZV90eXBtb2QgJiYgaXNfYmluYXJ5X2Nhc3QpKQorCQlyZXR1cm4gcmVz dWx0OworCisJY3BhdGh0eXBlID0gZmluZF90eXBtb2RfY29lcmNpb25fZnVuY3Rpb24odGFyZ2V0 X3R5cGlkLCAmY2Z1bmNpZCk7CisJaWYgKGNwYXRodHlwZSA9PSBDT0VSQ0lPTl9QQVRIX0ZVTkMp CisJeworCQlyZXN1bHQgPSBPaWRGdW5jdGlvbkNhbGwzKGNmdW5jaWQsCisJCQkJCQkJCQkJCXJl c3VsdCwKKwkJCQkJCQkJCQkJSW50MzJHZXREYXR1bSh0YXJnZXRfdHlwbW9kKSwKKwkJCQkJCQkJ CQkJQm9vbEdldERhdHVtKGZhbHNlKSk7CisJfQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworRGF0 dW0KK0dldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLAorCQkJCQkJT2lk IHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwp Cit7CisJQXNzZXJ0KHZhcmlkICE9IEludmFsaWRPaWQpOworCisJaWYgKHNjaGVtYXZhcmhhc2h0 YWIgIT0gTlVMTCkKKwl7CisJCVNjaGVtYVZhcgkJdmFyOworCQlib29sCQkJZm91bmQ7CisKKwkJ dmFyID0gKFNjaGVtYVZhcikgaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJ CQkgICZ2YXJpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCisJCWlmIChmb3VuZCAmJiAhdmFyLT5p c251bGwpCisJCXsKKwkJCURhdHVtIHJlc3VsdDsKKworCQkJcmVzdWx0ID0gZGF0dW1DYXN0KHZh ci0+dmFsdWUsIHR5cGlkLCB0eXBtb2QsCisJCQkJCQkJCQl2YXItPnR5cGlkLCB2YXItPnR5cG1v ZCk7CisJCQkqaXNOdWxsID0gZmFsc2U7CisKKwkJCWlmIChyZXN1bHQgIT0gdmFyLT52YWx1ZSkK KwkJCQlyZXR1cm4gcmVzdWx0OworCQkJZWxzZQorCQkJCXJldHVybiBkYXR1bUNvcHkocmVzdWx0 LCB0eXBieXZhbCwgdHlwbGVuKTsKKwkJfQorCX0KKworCS8qCisJICogVGhpcyBpbXBsZW1lbnRh dGlvbiBpcyBzaW1wbGUsIGJlY2F1c2UgZGVmYXVsdCBleHByZXNzaW9ucworCSAqIGFyZSBub3Qg c3VwcG9ydGVkLiBXaXRoIHN1cHBvcnQgb2YgZGVmYXVsdCBleHByZXNzaW9uLCB0aGVyZQorCSAq IHNob3VsZCBiZSBpbnNlcnQgc2NoZW1hIHZhcmlhYmxlIGludG8gY2FjaGUuIE5vdCBzdXBwb3J0 ZWQgeWV0LAorCSAqIHNvIGRvIGp1c3Qgc2ltcGx5IHdvcmsuCisJICovCisJKmlzTnVsbCA9IHRy dWU7CisJcmV0dXJuIChEYXR1bSkgMDsKK30KKworLyoKKyAqIFNlY3VyaXplZCB2ZXJzaW9uIG9m IEdldFNjaGVtYVZhcmlhYmxlCisgKi8KK0RhdHVtCitHZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShP aWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwKKwkJCQkJCU9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLAor CQkJCQkJaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKQoreworCUFjbFJlc3VsdCBhY2xyZXN1 bHQ7CisKKwkvKiBDaGVjayBwZXJtaXNzaW9ucyAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2Fj bGNoZWNrKHZhcmlkLCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJaWYgKGFjbHJlc3VsdCAh PSBBQ0xDSEVDS19PSykKKwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFC TEUsIGdldF9zY2hlbWF2YXJfbmFtZSh2YXJpZCkpOworCisJcmV0dXJuIEdldFNjaGVtYVZhcmlh YmxlKHZhcmlkLCBpc051bGwsIHR5cGlkLCB0eXBtb2QsIHR5cGxlbiwgdHlwYnl2YWwpOworfQor CisvKgorICogVjEgZnVuY3Rpb24gQVBJCisgKgorICogdm9pZCBzZXRfc2NoZW1hX3ZhcmlhYmxl KHZhciByZWdjbGFzcywgdmFsdWUgYW55ZWxlbWVudCk7CisgKiBhbnllbGVtZW50IGdldF9zY2hl bWFfdmFyaWFibGUodmFyIHJlZ2NsYXNzLCBleHBlY3RlZF90eXBlIGFueWVsZW1lbnQpCisgKgor ICovCitEYXR1bQorc2V0X3NjaGVtYV92YXJpYWJsZShQR19GVU5DVElPTl9BUkdTKQoreworCU9p ZAkJdmFyaWQ7CisJRGF0dW0JdmFsdWU7CisJYm9vbAlpc051bGw7CisJT2lkCQl0eXBpZDsKKwlp bnQxNgl0eXBsZW47CisJYm9vbAl0eXBieXZhbDsKKworCWlmIChQR19BUkdJU05VTEwoMCkpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExP V0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZhbHVlIG5vdCBhbGxvd2VkIGZvciB2YXJpYWJsZSBp ZGVudGl0eSIpKSk7CisKKwl2YXJpZCA9IFBHX0dFVEFSR19PSUQoMCk7CisKKwlpZiAoIVBHX0FS R0lTTlVMTCgxKSkKKwl7CisJCXZhbHVlID0gUEdfR0VUQVJHX0RBVFVNKDEpOworCQlpc051bGwg PSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJdmFsdWUgPSAoRGF0dW0pIDA7CisJCWlzTnVsbCA9 IHRydWU7CisJfQorCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZv LCAxKTsKKwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJj b3VsZCBub3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2 YWwodHlwaWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJU2V0U2NoZW1hVmFyaWFibGVTZWN1cmUo dmFyaWQsIHZhbHVlLCBpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisKKwlQ R19SRVRVUk5fVk9JRCgpOworfQorCitEYXR1bQorZ2V0X3NjaGVtYV92YXJpYWJsZShQR19GVU5D VElPTl9BUkdTKQoreworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBsZW47 CisJYm9vbAl0eXBieXZhbDsKKwlib29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisKKwlpZiAo UEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf TlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJCQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxs b3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHkiKSkpOworCisJdmFyaWQgPSBQR19HRVRBUkdfT0lE KDApOworCisJdHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAxKTsK KwlpZiAodHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3QgZGV0ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlw aWQsICZ0eXBsZW4sICZ0eXBieXZhbCk7CisJcmVzdWx0ID0gR2V0U2NoZW1hVmFyaWFibGVTZWN1 cmUodmFyaWQsICZpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisKKwlpZiAo aXNOdWxsKQorCQlQR19SRVRVUk5fTlVMTCgpOworCWVsc2UKKwkJUEdfUkVUVVJOX0RBVFVNKHJl c3VsdCk7Cit9CisKKy8qCisgKiBBY2Nlc3MgZnVuY3Rpb25zIHRvIGZpZWxkcyBvZiBjb21wb3Np dGUgdmFyaWFibGVzCisgKi8KK3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlRmllbGQoT2lkIHZhcmlk LCBjb25zdCBjaGFyICpmaWVsZG5hbWUsCisJCQkJCQlEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGws CisJCQkJCQlPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9v bCB0eXBieXZhbCkKK3sKKworCVNjaGVtYVZhcgl2YXI7CisJRGF0dW0JCXZhcl92YWx1ZTsKKwli b29sCQl2YXJfaXNudWxsOworCU9pZAkJCXZhcl90eXBpZDsKKwlpbnQzMgkJdmFyX3R5cG1vZDsK KwlUdXBsZURlc2MJdHVwRGVzYzsKKwlGb3JtX3BnX2F0dHJpYnV0ZQlzYXR0ciA9IE5VTEw7CisJ RGF0dW0JICAgKnZhbHVlczsKKwlib29sCSAgICpudWxsczsKKwlpbnQJCQluYXR0czsKKwlIZWFw VHVwbGUJCXR1cGxlOworCWludAkJCWk7CisKKwl2YXJfdmFsdWUgPSBnZXRfc2NoZW1hdmFyaWFi bGVfdHlwaWRfdHlwbW9kKHZhcmlkLAorCQkJCQkJCQkJCQkJJnZhcl9pc251bGwsICZ2YXJfdHlw aWQsICZ2YXJfdHlwbW9kLAorCQkJCQkJCQkJCQkJJnZhciwgdHJ1ZSk7CisKKwl0dXBEZXNjID0g bG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh2YXJfdHlwaWQsIHZhcl90eXBtb2QpOworCW5hdHRzID0g dHVwRGVzYy0+bmF0dHM7CisKKwkvKgorCSAqIFdlIHNob3VsZCB0byBjaGVjayBjb3JyZWN0IGZp ZWxkIG5hbWUsIGFsdGhvdWdoIHJlc3VsdCBjYW4gYmUgTlVMTCwKKwkgKiBhbmQgdGhpcyBpbmZv cm1hdGlvbiB3aWxsIG5vdCBiZSB1c2VkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsg aSsrKQorCXsKKwkJaWYgKG5hbWVzdHJjbXAoJihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5h dHRuYW1lKSwgZmllbGRuYW1lKSA9PSAwICYmCisJCQkhVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBp KS0+YXR0aXNkcm9wcGVkKQorCQl7CisJCQlzYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVwRGVzYywg aSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmIChzYXR0ciA9PSBOVUxMKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVy cm1zZygidGhlIHZhcmlhYmxlIFwiJXNcIiBoYXMgbm90IGZpZWxkIFwiJXNcIiIsCisJCQkJCQkJ Z2V0X3NjaGVtYXZhcl9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmaWVsZG5hbWUpKSk7CisKKwkvKiBs ZWF2ZSwgd2hlbiB3ZSBkb24ndCBuZWVkIHRvIGNoYW5nZSBjb21wb3NpdGUgKi8KKwlpZiAodmFy X2lzbnVsbCAmJiBpc051bGwpCisJeworCQlGcmVlVHVwbGVEZXNjKHR1cERlc2MpOworCQlyZXR1 cm47CisJfQorCisJdmFsdWVzID0gKERhdHVtICopIHBhbGxvYzAobmF0dHMgKiBzaXplb2YoRGF0 dW0pKTsKKwludWxscyA9IChib29sICopIHBhbGxvYzAobmF0dHMgKiBzaXplb2YoYm9vbCkpOwor CisJaWYgKCF2YXJfaXNudWxsKQorCXsKKwkJSGVhcFR1cGxlSGVhZGVyIHJlYyA9IERhdHVtR2V0 SGVhcFR1cGxlSGVhZGVyKHZhcl92YWx1ZSk7CisJCUhlYXBUdXBsZURhdGEJdHVwOworCisJCS8q IEJ1aWxkIGEgdGVtcG9yYXJ5IEhlYXBUdXBsZSBjb250cm9sIHN0cnVjdHVyZSAqLworCQl0dXAu dF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bUxlbmd0aChyZWMpOworCQlJdGVtUG9pbnRl clNldEludmFsaWQoJih0dXAudF9zZWxmKSk7CisJCXR1cC50X3RhYmxlT2lkID0gSW52YWxpZE9p ZDsKKwkJdHVwLnRfZGF0YSA9IHJlYzsKKworCQloZWFwX2RlZm9ybV90dXBsZSgmdHVwLCB0dXBE ZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwl9CisJZWxzZQorCXsKKwkJZm9yIChpID0gMDsgaSA8IG5h dHRzOyBpKyspCisJCQludWxsc1tpXSA9IHRydWU7CisJfQorCisJaWYgKCFpc051bGwpCisJewor CQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gZGF0dW1DYXN0KHZhbHVlLAorCQkJCQkJCQkJ CSAgc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCSAgdHlwaWQs IHR5cG1vZCk7CisJCW51bGxzW3NhdHRyLT5hdHRudW0gLSAxXSA9IGZhbHNlOworCX0KKwllbHNl CisJeworCQl2YWx1ZXNbc2F0dHItPmF0dG51bSAtIDFdID0gKERhdHVtKSAwOworCQludWxsc1tz YXR0ci0+YXR0bnVtIC0gMV0gPSB0cnVlOworCX0KKworCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxl KHR1cERlc2MsIHZhbHVlcywgbnVsbHMpOworCVNldFZhbHVlKHZhciwKKwkJCSAgSGVhcFR1cGxl SGVhZGVyR2V0RGF0dW0oKEhlYXBUdXBsZUhlYWRlcikgdHVwbGUtPnRfZGF0YSksCisJCQkgIGZh bHNlLAorCQkJICB2YXJfdHlwaWQsIHZhcl90eXBtb2QpOworCisJaGVhcF9mcmVldHVwbGUodHVw bGUpOworCVJlbGVhc2VUdXBsZURlc2ModHVwRGVzYyk7Cit9CisKKy8qCisgKiBSZXR1cm5zIGNv bXBsZXRlIGluZm8gYWJvdXQgc3RvcmVkIHZhcmlhYmxlLiBXaGVuIHZhcmlhYmxlIGlzIG5vdAor ICogY2FjaGVkLCB0aGVuIHJldHVybnMgbnVsbCB2YWx1ZSBhbmQgcmVhZCBpbmZvIGZyb20gdHlw ZWNhY2hlLiBEb24ndAorICogdHJ5IHJlZ2lzdHJhdGUgdmFyaWFibGUuCisgKgorICogV2hlbiBy ZWdpc3RlciBpcyB0cnVlLCB0aGVuIHZhcmNhY2hlIGVudHJ5IGlzIGNyZWF0ZWQgaW1tZWRpYXRl bHkuCisgKiBXZSBzaG91bGQgbm90IHRvIGNhbGwgdHlwY2FjaGUgZnVuY3Rpb24gdHdpY2UuCisg KgorICogZ2V0X3NjaGVtYXZhcl9kYXR1bV90eXBpZF90eXBtb2QKKyAqIGdldF9zY2hlbWF2YXJf dmFyCisgKgorICogCisgKi8KK3N0YXRpYyBEYXR1bQorZ2V0X3NjaGVtYXZhcmlhYmxlX3R5cGlk X3R5cG1vZChPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwKKwkJCQkJCQkJT2lkICp0eXBpZCwgaW50 MzIgKnR5cG1vZCwKKwkJCQkJCQkJU2NoZW1hVmFyICpzY2hlbWF2YXIsCisJCQkJCQkJCWJvb2wg ZW5zdXJlX3ZhcmlhYmxlKQoreworCUhlYXBUdXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzCXZhcnR1 cDsKKwlTY2hlbWFWYXIJCXZhciA9IE5VTEw7CisJYm9vbAkJCWZvdW5kID0gZmFsc2U7CisKKwlp ZiAoZW5zdXJlX3ZhcmlhYmxlKQorCXsKKwkJQXNzZXJ0KHNjaGVtYXZhciAhPSBOVUxMKTsKKwor CQlpZiAoc2NoZW1hdmFyaGFzaHRhYiA9PSBOVUxMKQorCQkJY3JlYXRlX3NjaGVtYXZhcl9oYXNo dGFibGUoKTsKKwl9CisJZWxzZQorCQkvKiBub3Qgc3VyZSBpZiB3ZSB3aWxsIHNldCBzY2hlbWF2 YXIsIGluaXQgdG8gbnVsbCAqLworCQlpZiAoc2NoZW1hdmFyKQorCQkJKnNjaGVtYXZhciA9IE5V TEw7CisKKwlpZiAoc2NoZW1hdmFyaGFzaHRhYiAhPSBOVUxMKQorCXsKKwkJdmFyID0gKFNjaGVt YVZhcikgaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJCQkgICZ2YXJpZCwg ZW5zdXJlX3ZhcmlhYmxlID8gSEFTSF9FTlRFUiA6IEhBU0hfRklORCwgJmZvdW5kKTsKKworCQlp ZiAoc2NoZW1hdmFyICE9IE5VTEwpCisJCQkqc2NoZW1hdmFyID0gdmFyOworCisJCWlmIChmb3Vu ZCkKKwkJeworCQkJKmlzTnVsbCA9IHZhci0+aXNudWxsOworCQkJKnR5cGlkID0gdmFyLT50eXBp ZDsKKwkJCSp0eXBtb2QgPSB2YXItPnR5cG1vZDsKKworCQkJcmV0dXJuIHZhci0+dmFsdWU7CisJ CX0KKwl9CisKKwkvKgorCSAqIFNsb3dlciB3YXkKKwkgKi8KKwl0cCA9IFNlYXJjaFN5c0NhY2hl MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0odmFyaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxkIGZvciB2YXJpYWJsZSAl dSIsIHZhcmlkKTsKKworCXZhcnR1cCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOwor CisJaWYgKHZhcnR1cC0+cmVsb2Z0eXBlICE9IEludmFsaWRPaWQpCisJeworCQlPaWQJCXR5cG9p ZCA9IHZhcnR1cC0+cmVsb2Z0eXBlOworCisJCWlmIChnZXRfdHlwdHlwZSh0eXBvaWQpID09IFRZ UFRZUEVfQ09NUE9TSVRFKQorCQl7CisJCQkqdHlwaWQgPSB2YXJ0dXAtPnJlbG9mdHlwZTsKKwkJ CSp0eXBtb2QgPSAtMTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVR1cGxlRGVzYwl0dXBkZXNjOwor CQkJUmVsYXRpb24JcmVsOworCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0clN0cnVjdDsKKworCQkJ LyogZmluZCBmaXJzdCBmaWVsZCAqLworCQkJcmVsID0gcmVsYXRpb25fb3Blbih0eXBlaWRUeXBl UmVsaWQodmFydHVwLT5yZWx0eXBlKSwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCXR1cGRlc2MgPSBD cmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisKKwkJCWF0dHJTdHJ1 Y3QgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJCQkqdHlwaWQgPSBhdHRyU3RydWN0 LT5hdHR0eXBpZDsKKwkJCSp0eXBtb2QgPSBhdHRyU3RydWN0LT5hdHR0eXBtb2Q7CisKKwkJCUZy ZWVUdXBsZURlc2ModHVwZGVzYyk7CisJCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJl TG9jayk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJKnR5cGlkID0gdmFydHVwLT5yZWx0eXBlOwor CQkqdHlwbW9kID0gLTE7CisJfQorCisJaWYgKGVuc3VyZV92YXJpYWJsZSAmJiAhZm91bmQpCisJ eworCQl2YXItPnZhbHVlID0gKERhdHVtKSAwOworCQl2YXItPmlzbnVsbCA9IHRydWU7CisJCXZh ci0+ZnJlZXZhbCA9IGZhbHNlOworCQl2YXItPnR5cGlkID0gKnR5cGlkOworCQl2YXItPnR5cG1v ZCA9ICp0eXBtb2Q7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsKHZhci0+dHlwaWQsICZ2YXItPnR5cGxl biwgJnZhci0+dHlwYnl2YWwpOworCX0KKworCSppc051bGwgPSB0cnVlOworCisJUmVsZWFzZVN5 c0NhY2hlKHRwKTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKK0RhdHVtCitHZXRTY2hlbWFW YXJpYWJsZUZpZWxkKE9pZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRuYW1lLAorCQkJCQkJYm9v bCAqaXNOdWxsLAorCQkJCQkJT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0 eXBsZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJRGF0dW0JCXJlc3VsdCA9IChEYXR1bSkgMDsKKwlE YXR1bQkJdmFsdWUgPSAoRGF0dW0pIDA7CisJT2lkCQkJdmFsdWVfdHlwaWQ7CisJaW50MzIJCXZh bHVlX3R5cG1vZDsKKwlUdXBsZURlc2MJCXR1cERlc2M7CisJRm9ybV9wZ19hdHRyaWJ1dGUJc2F0 dHIgPSBOVUxMOworCWludAkJCWk7CisKKwlBc3NlcnQodmFyaWQgIT0gSW52YWxpZE9pZCk7CisK Kwl2YWx1ZSA9IGdldF9zY2hlbWF2YXJpYWJsZV90eXBpZF90eXBtb2QodmFyaWQsIGlzTnVsbCwg JnZhbHVlX3R5cGlkLCAmdmFsdWVfdHlwbW9kLCBOVUxMLCBmYWxzZSk7CisKKwl0dXBEZXNjID0g bG9va3VwX3Jvd3R5cGVfdHVwZGVzYyh2YWx1ZV90eXBpZCwgdmFsdWVfdHlwbW9kKTsKKworCS8q CisJICogV2Ugc2hvdWxkIHRvIGNoZWNrIGNvcnJlY3QgZmllbGQgbmFtZSwgYWx0aG91Z2ggcmVz dWx0IGNhbiBiZSBOVUxMLAorCSAqIGFuZCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgbm90IGJlIHVz ZWQuCisJICovCisJZm9yIChpID0gMDsgaSA8IHR1cERlc2MtPm5hdHRzOyBpKyspCisJeworCQlp ZiAobmFtZXN0cmNtcCgmKFR1cGxlRGVzY0F0dHIodHVwRGVzYywgaSktPmF0dG5hbWUpLCBmaWVs ZG5hbWUpID09IDAgJiYKKwkJCSFUdXBsZURlc2NBdHRyKHR1cERlc2MsIGkpLT5hdHRpc2Ryb3Bw ZWQpCisJCXsKKwkJCXNhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBpKTsKKwkJCWJyZWFr OworCQl9CisJfQorCisJaWYgKHNhdHRyID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJ0aGUgdmFy aWFibGUgXCIlc1wiIGhhcyBub3QgZmllbGQgXCIlc1wiIiwKKwkJCQkJCQlnZXRfc2NoZW1hdmFy X25hbWUodmFyaWQpLAorCQkJCQkJCWZpZWxkbmFtZSkpKTsKKworCS8qCisJICogVGhlb3JldGlj YWxseSwgd2UgY2hlY2sgYSBwb3NzaWJpbGl0eSB0byBjYXN0IHRvIHRhcmdldCB0eXBlIGV2ZXJ5 dGltZSwKKwkgKiBidXQgY2FuIGJlIGlnbm9yZWQsIHdoZW4gcmVzdWx0IHdpbGwgYmUgbnVsbC4K KwkgKi8KKwlpZiAoISppc051bGwpCisJeworCQlIZWFwVHVwbGVIZWFkZXIJdHVwbGU7CisJCUhl YXBUdXBsZURhdGEJdG1wdHVwOworCisJCXR1cGxlID0gRGF0dW1HZXRIZWFwVHVwbGVIZWFkZXIo dmFsdWUpOworCisJCS8qCisJCSAqIGhlYXBfZ2V0YXR0ciBuZWVkcyBhIEhlYXBUdXBsZSBub3Qg YSBiYXJlIEhlYXBUdXBsZUhlYWRlci4gIFdlIHNldCBhbGwKKwkJICogdGhlIGZpZWxkcyBpbiB0 aGUgc3RydWN0IGp1c3QgaW4gY2FzZSB1c2VyIHRyaWVzIHRvIGluc3BlY3Qgc3lzdGVtCisJCSAq IGNvbHVtbnMuCisJCSAqLworCQl0bXB0dXAudF9sZW4gPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1 bUxlbmd0aCh0dXBsZSk7CisJCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmKHRtcHR1cC50X3NlbGYp KTsKKwkJdG1wdHVwLnRfdGFibGVPaWQgPSBJbnZhbGlkT2lkOworCQl0bXB0dXAudF9kYXRhID0g dHVwbGU7CisKKwkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJnRtcHR1cCwKKwkJCQkJCQkgIHNhdHRy LT5hdHRudW0sCisJCQkJCQkJICB0dXBEZXNjLAorCQkJCQkJCSAgaXNOdWxsKTsKKworCQlpZiAo ISppc051bGwpCisJCXsKKwkJCXJlc3VsdCA9IGRhdHVtQ2FzdCh2YWx1ZSwgdHlwaWQsIHR5cG1v ZCwKKwkJCQkJCQkJc2F0dHItPmF0dHR5cGlkLCBzYXR0ci0+YXR0dHlwbW9kKTsKKworCQkJaWYg KHJlc3VsdCA9PSB2YWx1ZSkKKwkJCQlyZXN1bHQgPSBkYXR1bUNvcHkocmVzdWx0LCB0eXBieXZh bCwgdHlwbGVuKTsKKwkJfQorCX0KKworCVJlbGVhc2VUdXBsZURlc2ModHVwRGVzYyk7CisKKwly ZXR1cm4gcmVzdWx0OworfQorCit2b2lkCitTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKE9p ZCB2YXJpZCwgY29uc3QgY2hhciAqZmllbGRuYW1lLAorCQkJCQkJRGF0dW0gdmFsdWUsIGJvb2wg aXNOdWxsLAorCQkJCQkJT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJCQlpbnQxNiB0eXBs ZW4sIGJvb2wgdHlwYnl2YWwpCit7CisJQWNsUmVzdWx0CQlhY2xyZXN1bHQ7CisKKwkvKiBDaGVj ayBwZXJtaXNzaW9ucyAqLworCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHZhcmlkLCBH ZXRVc2VySWQoKSwgQUNMX1VQREFURSk7CisJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19PSykK KwkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfVkFSSUFCTEUsIGdldF9zY2hlbWF2 YXJfbmFtZSh2YXJpZCkpOworCisJU2V0U2NoZW1hVmFyaWFibGVGaWVsZCh2YXJpZCwgZmllbGRu YW1lLCB2YWx1ZSwgaXNOdWxsLCB0eXBpZCwgdHlwbW9kLCB0eXBsZW4sIHR5cGJ5dmFsKTsKK30K KworRGF0dW0KK0dldFNjaGVtYVZhcmlhYmxlRmllbGRTZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBj aGFyICpmaWVsZG5hbWUsCisJCQkJCQlib29sICppc051bGwsCisJCQkJCQlPaWQgdHlwaWQsIGlu dDMyIHR5cG1vZCwKKwkJCQkJCWludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCkKK3sKKwlBY2xS ZXN1bHQgYWNscmVzdWx0OworCisJLyoKKwkgKiBUaGVyZSBhcmUgbm90IGFueSBzcGVjaWFsIGFj Y2VzcyB0byBmaWVsZHMuIEp1c3QgY2hlY2sgYQorCSAqIGFjY2VzcyB0byB2YXJpYWJsZS4KKwkg Ki8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayh2YXJpZCwgR2V0VXNlcklkKCksIEFD TF9TRUxFQ1QpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vy cm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBnZXRfc2NoZW1hdmFyX25hbWUodmFyaWQp KTsKKworCXJldHVybiBHZXRTY2hlbWFWYXJpYWJsZUZpZWxkKHZhcmlkLCBmaWVsZG5hbWUsIGlz TnVsbCwgdHlwaWQsIHR5cG1vZCwgdHlwbGVuLCB0eXBieXZhbCk7Cit9CisKK0RhdHVtCitzZXRf c2NoZW1hX3ZhcmlhYmxlX2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQl2YXJpZDsK KwlEYXR1bQl2YWx1ZTsKKwlib29sCWlzTnVsbDsKKwlPaWQJCXR5cGlkOworCWludDE2CXR5cGxl bjsKKwlib29sCXR5cGJ5dmFsOworCWNvbnN0IGNoYXIgICAqZmllbGRuYW1lOworCisJaWYgKFBH X0FSR0lTTlVMTCgwKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05V TExfVkFMVUVfTk9UX0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93 ZWQgZm9yIHZhcmlhYmxlIGlkZW50aXR5IikpKTsKKworCXZhcmlkID0gUEdfR0VUQVJHX09JRCgw KTsKKworCWlmIChQR19BUkdJU05VTEwoMSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJCQkgZXJybXNnKCJudWxsIHZh bHVlIG5vdCBhbGxvd2VkIGZvciBmaWVsZCBuYW1lIikpKTsKKworCWZpZWxkbmFtZSA9IE5hbWVT dHIoKlBHX0dFVEFSR19OQU1FKDEpKTsKKworCWlmICghUEdfQVJHSVNOVUxMKDIpKQorCXsKKwkJ dmFsdWUgPSBQR19HRVRBUkdfREFUVU0oMik7CisJCWlzTnVsbCA9IGZhbHNlOworCX0KKwllbHNl CisJeworCQl2YWx1ZSA9IChEYXR1bSkgMDsKKwkJaXNOdWxsID0gdHJ1ZTsKKwl9CisKKwl0eXBp ZCA9IGdldF9mbl9leHByX2FyZ3R5cGUoZmNpbmZvLT5mbGluZm8sIDIpOworCWlmICh0eXBpZCA9 PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBkZXRlcm1pbmUg aW5wdXQgZGF0YSB0eXBlIikpKTsKKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnR5cGxlbiwg JnR5cGJ5dmFsKTsKKwlTZXRTY2hlbWFWYXJpYWJsZUZpZWxkU2VjdXJlKHZhcmlkLCBmaWVsZG5h bWUsIHZhbHVlLCBpc051bGwsIHR5cGlkLCAtMSwgdHlwbGVuLCB0eXBieXZhbCk7CisKKwlQR19S RVRVUk5fVk9JRCgpOworfQorCitEYXR1bQorZ2V0X3NjaGVtYV92YXJpYWJsZV9maWVsZChQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJdmFyaWQ7CisJT2lkCQl0eXBpZDsKKwlpbnQxNgl0eXBs ZW47CisJYm9vbAl0eXBieXZhbDsKKwlib29sCWlzTnVsbDsKKwlEYXR1bQlyZXN1bHQ7CisJY29u c3QgY2hhciAgICpmaWVsZG5hbWU7CisKKwlpZiAoUEdfQVJHSVNOVUxMKDApKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1RfQUxMT1dFRCksCisJ CQkJIGVycm1zZygibnVsbCB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgdmFyaWFibGUgaWRlbnRpdHki KSkpOworCisJdmFyaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKFBHX0FSR0lTTlVMTCgx KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9U X0FMTE9XRUQpLAorCQkJCSBlcnJtc2coIm51bGwgdmFsdWUgbm90IGFsbG93ZWQgZm9yIGZpZWxk IG5hbWUiKSkpOworCisJZmllbGRuYW1lID0gTmFtZVN0cigqUEdfR0VUQVJHX05BTUUoMSkpOwor CisJdHlwaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAyKTsKKwlpZiAo dHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZGV0 ZXJtaW5lIGlucHV0IGRhdGEgdHlwZSIpKSk7CisKKwlnZXRfdHlwbGVuYnl2YWwodHlwaWQsICZ0 eXBsZW4sICZ0eXBieXZhbCk7CisJcmVzdWx0ID0gR2V0U2NoZW1hVmFyaWFibGVGaWVsZFNlY3Vy ZSh2YXJpZCwgZmllbGRuYW1lLCAmaXNOdWxsLCB0eXBpZCwgLTEsIHR5cGxlbiwgdHlwYnl2YWwp OworCisJaWYgKGlzTnVsbCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwllbHNlCisJCVBHX1JFVFVS Tl9EQVRVTShyZXN1bHQpOworCisJUEdfUkVUVVJOX05VTEwoKTsKK30KKworLyoKKyAqIFJlc3Vs dHM6CisgKj0KKyAKKzEuIFRoZSBzY2hlbWEgdmFyaWFibGVzIGFyZSBzaW1pbGFyIHRvIHRlbXBv cmFyeSB0YWJsZXMgLSBidXQgdGhlIGRhdGEgYXJlIG5vdCBzYXZlZAorICAgaW4gOEtCIGJsb2Nr cywgc28gbmV3IHN0b3JhZ2UgYW5kIHNvbWUgc2ltcGxlIHN0b3JhZ2UgbWFuYWdlciBzaG91bGQg YmUgY3JlYXRlZC4gV2UKKyAgIHdvdWxkIG5vdCB0byB1c2UgbG9jYWwgYnVmZmVyIGR1ZSBhbGxv Y2F0aW9uIDhLQiBhcyBtaW5pbXVuLCBjcmVhdGluZyB0ZW1wIGZpbGUuCisKKzIuIFdlIHNob3Vs ZCB0byB3b3JrIHdpdGggdHlwbW9kLCBzbyBwZ19hdHRyaWJ1dGUgZW50cnkgc2hvdWxkIGJlIGNy ZWF0ZWQgYW55dGltZS4KKworMy4gQSByaXNrIG9mIGNvbGxpc2lvbnMgb2YgdmFyaWFibGUgYW5k IHRhYmxlIG5hbWUgd2lsbCBiZSByZWR1Y2VkLCB3aGVuIHZhcmlhYmxlcworICAgYW5kIHRhYmxl cyBjYW5ub3QgdG8gaGF2ZSBzYW1lIG5hbWUuCisKKzQuIElmIHNjaGVtYSB2YXJpYWJsZXMgYXJl IHBnX2NsYXNzIGJhc2VkLCB0aGVuIHNvbWUgY3VycmVudCBzeW50YXggaGFzIHNlbnNlCisKKyAg ICBXZSBjYW4gc3VwcG9ydCBVUERBVEUgYW5kIFNFTEVDVCBjb21tYW5kcyBvbiB2YXJpYWJsZXMu CisKKyAgICBwb3NzaWJsZSBzeW50YXhlczoKKworICAgICAgICAtLSB0aGVyZSBjYW4gYmUgYSBh bmFsb2d5IHdpdGggcmVjb3JkIGZ1bmN0aW9ucworICAgICAgICBTRUxFQ1QgdmFybmFtZTsKKyAg ICAgICAgU0VMRUNUIHZhcm5hbWUuZmllbGQ7CisgICAgICAgIFNFTEVDVCB2YXJuYW1lIEZST00g dmFybmFtZTsgLS0gd2hlbiB2YXIgaXMgc2NhbGFyLCB0aGVuIHZhcm5hbWUgaW4gdGFyZ2V0IGxp c3QgaXMgc2NhbGFyCisKKyAgICAgICAgVVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAxMDsg LS0gc2NhbGFyIHZlcnNpb24KKyAgICAgICAgVVBEQVRFIHZhcm5hbWUgU0VUIHZhcm5hbWUgPSAo eCx5LHopIC0tIGNvbXBvc2l0ZSB2ZXJzaW9uCisgICAgICAgIFVQREFURSB2YXJuYW1lIFNFVCB2 YXJuYW1lLmZpZWxkMSA9IHgsIHZhcm5hbWUuZmllbGQyID0geSwgLi4KKworICAgICAgICBMRVQg dmFybmFtZSA9IGV4cHI7CisgICAgICAgIExFVCB2YXJuYW1lLmZpZWxkMSA9IGV4cHI7CisgICAg ICAgIExFVCB2YXJuYW1lID0gKHgsIHksIHopOyAtLSBjb21wb3NpdGUgdmVyc2lvbgorCisgICBQ b3NzaWJsZQorICAgCisgICAgICAgIExFVCB2YXJuYW1lKGEsYikgPSAoc2VsZWN0ICgxMCwgMjAp IEZST00gLi4uICkKKworCis1LiBMRVQgY21kIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBDTUQgKGxp a2UgSU5TRVJULCBVUERBVEUsIERFTEVURSkgb3IgVXRpbGl0eSAobGlrZQorICAgQ3JlYXRlVGFi bGVBc1NlbGVjdCkuIFByZWZlciBmaXJzdCBvcHRpb24sIGJlY2F1c2UgdGhlcmUgY2FuIGJlIHBy ZXBhcmVkLCBjYW4gYmUKKyAgIHVzZWQgdG9nZXRoZXIgd2l0aCBFWFBMQUlOLCBldGMuCisKKyAg IEV4cGVjdGVkIGZvcm06CisgICAgIExFVCBmb28gPSAoU0VMRUNUIGlkIEZST00gYm9vIFdIRVJF IHNvbWUgPSAnaGVsbG8nKTsKKworICAgc28gcG9zc2liaWxpdHkgdG8gcnVuIEVYUExBSU4gTEVU IC4uIGhhcyBnb29kIGVub3VnaCBiZW5lZml0CisKKzYuIFdoYXQgc2hvdWxkIGJlIG1lY2hhbmlz bSBvZiBjb21wYXRpYmlsaXR5IGJldHdlZW4gYmFzZSB0eXBlIGFuZCB2YXJpYWJsZSB0eXBlPwor CisgICAgIENSRUFURSBWQVJJQUJMRSB4eCBBUyBCVAorCisgICBFeGFtcGxlOiBDUkVBVEUgVFlQ RSBjdCBBUyAoeCBpbnQsIGludCk7IENSRUFURSBWQVJJQUJMRSB2YXIgQVMgY3Q7CisgICB2YXIg dHlwZSAoaW1wbGljaXRseSBjcmVhdGVkKSBzaG91bGQgYmUgY29tcGF0aWJsZSB3aXRoIGN0IHR5 cGUsIGJlY2F1c2Ugd2Ugd2FudAorCisgICAgIExFVCB2YXIgPSAoMTAsMjApOjp2YXI7IExFVCB2 YXIgPSAoMTAsMjApOjpjdDsKKworNy4gV2hlbiBMRVQgY29tbWFuZCBhbGxvd3MgdG8gc3BlY2lm eSB0YXJnZXQgZmllbGQsIHRoZW4gdGhlcmUgaXMgcG9zc2libGUgY29sbGlzaW9uCisgICBJMS5J MiBjYW4gYmUgc2NoZW1hLnZhcmlhYmxlLCBidXQgc2hvdWxkIGJlIHZhcmlhYmxlLmZpZWxkIHRv by4gSXQgc2hvdWxkIGJlIHRlc3RlZAorICAgYW5kIGlmIGJvdGggdmFyaWFudHMgYXJlIHBvc3Np YmxlLCB0aGVuIGV4Y2VwdGlvbiBzaG91bGQgYmUgcmFpc2VkLiBMRVQgdmFyLmZpZWxkID0gZXhw cgorICAgaXMgYSBhbmFsb2d5IHRvIFVQREFURSB2YXIgU0VUIGZpZWxkID0gZXhwci4KKworCisq LwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5k ZXggNzRlMDIwYmZmYy4uM2Q2NzM4MmMxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAg LTI3Miw2ICsyNzIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm9wbXNnc3RyaW5ncyBkcm9w bXNnc3RyaW5nYXJyYXlbXSA9IHsKIAkJZ2V0dGV4dF9ub29wKCJpbmRleCBcIiVzXCIgZG9lcyBu b3QgZXhpc3QsIHNraXBwaW5nIiksCiAJCWdldHRleHRfbm9vcCgiXCIlc1wiIGlzIG5vdCBhbiBp bmRleCIpLAogCWdldHRleHRfbm9vcCgiVXNlIERST1AgSU5ERVggdG8gcmVtb3ZlIGFuIGluZGV4 LiIpfSwKKwl7UkVMS0lORF9WQVJJQUJMRSwKKwkJRVJSQ09ERV9VTkRFRklORURfVEFCTEUsCisJ CWdldHRleHRfbm9vcCgic2NoZW1hIHZhcmlhYmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIpLAor CQlnZXR0ZXh0X25vb3AoInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNr aXBwaW5nIiksCisJCWdldHRleHRfbm9vcCgiXCIlc1wiIGlzIG5vdCBhIHNjaGVtYSB2YXJpYWJs ZSIpLAorCWdldHRleHRfbm9vcCgiVXNlIERST1AgVkFSSUFCTEUgdG8gcmVtb3ZlIGEgdmFyaWFi bGUuIil9LAogCXsnXDAnLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQogfTsKIApAQCAtMTAw NjMsNiArMTAwNjksNyBAQCBBVEV4ZWNDaGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBu ZXdPd25lcklkLCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9jawogCQljYXNlIFJFTEtJTkRf TUFUVklFVzoKIAkJY2FzZSBSRUxLSU5EX0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRToKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgogCQkJLyogb2sgdG8g Y2hhbmdlIG93bmVyICovCiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX0lOREVYOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMKaW5kZXggZGI1ZmNhZmJmZS4uNWRkOThkOGRlNSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTcyMyw2ICs3MjQsNyBAQCBFeGVjSW5pdEV4cHJSZWMoRXhw ciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCXsKIAkJCQlQYXJhbQkgICAqcGFyYW0gPSAo UGFyYW0gKikgbm9kZTsKIAkJCQlQYXJhbUxpc3RJbmZvIHBhcmFtczsKKwkJCQlBY2xSZXN1bHQJ YWNscmVzdWx0OwogCiAJCQkJc3dpdGNoIChwYXJhbS0+cGFyYW1raW5kKQogCQkJCXsKQEAgLTcz MCw2ICs3MzIsMjMgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3Rh dGUsCiAJCQkJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfUEFSQU1fRVhFQzsKIAkJCQkJCXNjcmF0 Y2guZC5wYXJhbS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7CiAJCQkJCQlzY3JhdGNoLmQucGFy YW0ucGFyYW10eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKKwkJCQkJCUV4cHJFdmFsUHVzaFN0ZXAo c3RhdGUsICZzY3JhdGNoKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBBUkFNX1NDSEVNQV9W QVJJQUJMRToKKwkJCQkJCS8qIENoZWNrIHBlcm1pc3Npb24gdG8gcmVhZCBzY2hlbWEgdmFyaWFi bGUgKi8KKwkJCQkJCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKHBhcmFtLT5wYXJhbWlk LCBHZXRVc2VySWQoKSwgQUNMX1NFTEVDVCk7CisJCQkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENI RUNLX09LKQorCQkJCQkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxF LCBnZXRfc2NoZW1hdmFyX25hbWUocGFyYW0tPnBhcmFtaWQpKTsKKworCQkJCQkJc2NyYXRjaC5v cGNvZGUgPSBFRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJMRTsKKwkJCQkJCXNjcmF0Y2guZC5wYXJh bS5wYXJhbWlkID0gcGFyYW0tPnBhcmFtaWQ7CisJCQkJCQlzY3JhdGNoLmQucGFyYW0ucGFyYW10 eXBlID0gcGFyYW0tPnBhcmFtdHlwZTsKKwkJCQkJCXNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cG1v ZCA9IHBhcmFtLT5wYXJhbXR5cG1vZDsKKworCQkJCQkJZ2V0X3R5cGxlbmJ5dmFsKHBhcmFtLT5w YXJhbXR5cGUsCisJCQkJCQkJCQkJCQkmc2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwbGVuLAorCQkJ CQkJCQkJCQkJJnNjcmF0Y2guZC5wYXJhbS5wYXJhbXR5cGJ5dmFsKTsKKwogCQkJCQkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgUEFS QU1fRVhURVJOOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggNzcxYjdl Mzk0NS4uNjQyOTRlNGFjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBA IC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHBy LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCkBAIC0zNTEsNiArMzUyLDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwg RXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX1BBUkFN X0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYVEVSTiwKIAkJJiZDQVNFX0VFT1BfUEFSQU1f Q0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJMRSwKIAkJJiZDQVNF X0VFT1BfQ0FTRV9URVNUVkFMLAogCQkmJkNBU0VfRUVPUF9NQUtFX1JFQURPTkxZLAogCQkmJkNB U0VfRUVPUF9JT0NPRVJDRSwKQEAgLTEwMzMsNiArMTAzNSwyMyBAQCBFeGVjSW50ZXJwRXhwcihF eHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJ CUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJM RSkKKwkJeworCQkJRGF0dW0JZDsKKwkJCWJvb2wJaXNudWxsOworCisJCQlkID0gR2V0U2NoZW1h VmFyaWFibGUob3AtPmQucGFyYW0ucGFyYW1pZCwgJmlzbnVsbCwKKwkJCQkJCQkJCQkJCQkgIG9w LT5kLnBhcmFtLnBhcmFtdHlwZSwKKwkJCQkJCQkJCQkJCQkgIC0xLAorCQkJCQkJCQkJCQkJCSAg b3AtPmQucGFyYW0ucGFyYW10eXBsZW4sCisJCQkJCQkJCQkJCQkJICBvcC0+ZC5wYXJhbS5wYXJh bXR5cGJ5dmFsKTsKKworCQkJKm9wLT5yZXN2YWx1ZSA9IGQ7CisJCQkqb3AtPnJlc251bGwgPSBp c251bGw7CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX1BBUkFNX0NB TExCQUNLKQogCQl7CiAJCQkvKiBhbGxvdyBhbiBleHRlbnNpb24gbW9kdWxlIHRvIHN1cHBseSBh IFBBUkFNX0VYVEVSTiB2YWx1ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggOTFiYTkz OWJkYy4uZWY0NWI5ZWZiMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0yMTAsNiArMjEw LDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKQogCXsKIAkJY2FzZSBDTURfU0VM RUNUOgorCQljYXNlIENNRF9MRVQ6CiAKIAkJCS8qCiAJCQkgKiBTRUxFQ1QgRk9SIFtLRVldIFVQ REFURS9TSEFSRSBhbmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0byBtYXJrCkBAIC0xMTE5LDYgKzEx MjAsMTQgQEAgQ2hlY2tWYWxpZFJlc3VsdFJlbChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LCBDbWRUeXBlIG9wZXJhdGlvbikKIAkJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSBUT0FTVCBy ZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlc3VsdFJl bCkpKSk7CiAJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX1ZBUklBQkxFOgorCQkJLyogb25seSBM RVQgY29tbWFuZCBjYW4gY2hhbmdlIGEgdmFyaWFibGUgKi8KKwkJCWlmIChvcGVyYXRpb24gIT0g Q01EX0xFVCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHNjaGVtYSB2YXJp YWJsZSBcIiVzXCIiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZXN1bHRSZWwp KSkpOworCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9WSUVXOgogCiAJCQkvKgpAQCAtMTI4Niw2 ICsxMjk1LDEzIEBAIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5 cGUgbWFya1R5cGUpCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgbG9jayByb3dzIGluIGZvcmVpZ24g dGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK IAkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQkvKiBNdXN0IGRpc2FsbG93 IHRoaXMgYmVjYXVzZSB3ZSB0aGVyZSBhcmUgbm90IHJvd3MgKi8KKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkgZXJybXNn KCJjYW5ub3QgbG9jayByb3dzIGluIHNjaGVtYSB2YXJpYWJsZSBcIiVzXCIiLAorCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBjMzI5MjhkOWJkLi41 N2YwZGNjZTQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMzks NiArMzksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hdmFyLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u aCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNjgsNiArNjksNyBAQCBzdGF0 aWMgdm9pZCBFeGVjU2V0dXBDaGlsZFBhcmVudE1hcEZvclN1YnBsYW4oTW9kaWZ5VGFibGVTdGF0 ZSAqbXRzdGF0ZSk7CiBzdGF0aWMgVHVwbGVDb252ZXJzaW9uTWFwICp0dXBjb252X21hcF9mb3Jf c3VicGxhbihNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJaW50IHdoaWNocGxhbik7CiAK KwogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVjZWQgYnkgSU5TRVJU IG9yIFVQREFURSBtYXRjaCB0aGUKICAqIHRhcmdldCByZWxhdGlvbidzIHJvd3R5cGUKQEAgLTE1 NzYsNiArMTU3OCw4MSBAQCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLAogfQogCiAKKworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjTGV0CisgKgorICoJCUZv ciBMRVQsIHdlIGhhdmUgdG8gdXBkYXRlIHRhcmdldCB2YXJpYWJsZSwKKyAqICAgICAgUmV0dXJu cyBOVUxMLCB0aGVyZSBhcmUgbm90IFJFVFVSTklORyBjbGF1c2UuCisgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K K3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjTGV0KE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsCisJCSAgIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkgICBFU3RhdGUgKmVzdGF0ZSwKKwkJ ICAgYm9vbCBjYW5TZXRUYWcpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCVJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm87CisJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjOworCVR1cGxlRGVz Ywl0dXBkZXNjOworCWJvb2wJCWlzbnVsbCA9IHRydWU7CisJRGF0dW0JCXZhbHVlOworCUZvcm1f cGdfYXR0cmlidXRlIGF0dHIgPSBOVUxMOworCU9pZAkJCXZhcmlkOworCisJaWYgKHNsb3QgIT0g TlVMTCAmJiAhc2xvdC0+dHRzX2lzZW1wdHkpCisJeworCQl0dXBsZSA9IHNsb3QtPnR0c190dXBs ZTsKKwkJdHVwZGVzYyA9IHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3I7CisKKwkJQXNzZXJ0KHR1 cGRlc2MgIT0gTlVMTCk7CisKKwkJLyogc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlICovCisJCWlm ICh0dXBkZXNjLT5uYXR0cyAhPSAxKQorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbnVtYmVy IG9mIGF0dHJpYnV0ZXMiKTsKKworCQlhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCAwKTsK KworCQlpZiAoIXNsb3QtPnR0c19pc251bGxbMF0pCisJCXsKKwkJCWlzbnVsbCA9IGZhbHNlOwor CQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzWzBdOworCQl9CisJfQorCisJLyoKKwkgKiBOb3cs IGVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvIGlzIGVtcHR5LCBidXQgY2FuIGJlIGluaXRpYWxpemVk CisJICogdG8gc3RydWN0dXJlIG9mIHVzZWQgc2NoZW1hIHZhcmlhYmxlLgorCSAqLworCXJlc3Vs dFJlbEluZm8gPSBlc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbl9pbmZvOworCXJlc3VsdFJlbGF0 aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwl2YXJpZCA9IHJlc3Vs dFJlbGF0aW9uRGVzYy0+cmRfaWQ7CisKKwlpZiAoIWlzbnVsbCkKKwl7CisJCS8qIGV4cGVjdGlu ZyBzbyB2YXJpYWJsZSBhbmQgZXhwcmVzc2lvbiBhcmUgZXF1YWwgKi8KKwkJU2V0U2NoZW1hVmFy aWFibGUodmFyaWQsIHZhbHVlLCBpc251bGwsCisJCQkJCQkJCWF0dHItPmF0dHR5cGlkLCAtMSwK KwkJCQkJCQkJYXR0ci0+YXR0bGVuLCBhdHRyLT5hdHRieXZhbCk7CisJfQorCWVsc2UKKwl7CisJ CVNldFNjaGVtYVZhcmlhYmxlKHZhcmlkLCAoRGF0dW0pIDAsIHRydWUsCisJCQkJCQkJCSAgSW52 YWxpZE9pZCwgLTEsIC0xLCBmYWxzZSk7CisJfQorCisJaWYgKGNhblNldFRhZykKKwl7CisJCUFz c2VydChlc3RhdGUtPmVzX3Byb2Nlc3NlZCA9PSAwKTsKKwkJKGVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KSsrOworCX0KKworCXJldHVybiBOVUxMOworfQorCiAvKgogICogUHJvY2VzcyBCRUZPUkUgRUFD SCBTVEFURU1FTlQgdHJpZ2dlcnMKICAqLwpAQCAtMTYwNiw2ICsxNjgzLDkgQEAgZmlyZUJTVHJp Z2dlcnMoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkJY2FzZSBDTURfREVMRVRFOgogCQkJRXhl Y0JTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJlc3VsdFJlbEluZm8pOwogCQkJYnJl YWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHRoZXJlIGFyZSBubyB0cmlnZ2VyICovCisJCQli cmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJhdGlvbiIpOwog CQkJYnJlYWs7CkBAIC0xNjYwLDYgKzE3NDAsOSBAQCBmaXJlQVNUcmlnZ2VycyhNb2RpZnlUYWJs ZVN0YXRlICpub2RlKQogCQkJRXhlY0FTRGVsZXRlVHJpZ2dlcnMobm9kZS0+cHMuc3RhdGUsIHJl c3VsdFJlbEluZm8sCiAJCQkJCQkJCSBub2RlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUpOwogCQkJ YnJlYWs7CisJCWNhc2UgQ01EX0xFVDoKKwkJCS8qIHZhcmlhYmxlcyBoYXMgbm90IHRyaWdnZXJz ICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bmtub3duIG9wZXJh dGlvbiIpOwogCQkJYnJlYWs7CkBAIC0yMDY0LDYgKzIxNDcsOSBAQCBFeGVjTW9kaWZ5VGFibGUo UGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCQkJCSAgJm5vZGUtPm10X2VwcXN0YXRlLCBlc3RhdGUs CiAJCQkJCQkJCSAgTlVMTCwgdHJ1ZSwgbm9kZS0+Y2FuU2V0VGFnKTsKIAkJCQlicmVhazsKKwkJ CWNhc2UgQ01EX0xFVDoKKwkJCQlzbG90ID0gRXhlY0xldChub2RlLCBzbG90LCBlc3RhdGUsIG5v ZGUtPmNhblNldFRhZyk7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1Is ICJ1bmtub3duIG9wZXJhdGlvbiIpOwogCQkJCWJyZWFrOwpAQCAtMjQ1MCw2ICsyNTM2LDcgQEAg RXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9VUERBVEU6CiAJCQljYXNlIENNRF9E RUxFVEU6CisJCQljYXNlIENNRF9MRVQ6CiAJCQkJanVua19maWx0ZXJfbmVlZGVkID0gdHJ1ZTsK IAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDlmYzQ0MzFiODAuLjMx MGJjM2YyYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yNDA0LDYgKzI0MDQsOSBAQCBfU1BJX3BxdWVy eShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50 KQogCQkJZWxzZQogCQkJCXJlcyA9IFNQSV9PS19VUERBVEU7CiAJCQlicmVhazsKKwkJY2FzZSBD TURfTEVUOgorCQkJcmVzID0gU1BJX09LX1VUSUxJVFk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCXJldHVybiBTUElfRVJST1JfT1BVTktOT1dOOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5k ZXggZjg0ZGE4MDFjNi4uZjU1MDBlOGM1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMv Y29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTMwNjYs NiArMzA2NiwxNyBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJvbSkKIAly ZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10KGNvbnN0 IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExldFN0bXQp OworCisJQ09QWV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT1BZX05PREVfRklFTEQoc2VsZWN0 U3RtdCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGljIFNldE9wZXJhdGlvblN0bXQg KgogX2NvcHlTZXRPcGVyYXRpb25TdG10KGNvbnN0IFNldE9wZXJhdGlvblN0bXQgKmZyb20pCiB7 CkBAIC01MTAzLDYgKzUxMTQsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQog CQljYXNlIFRfU2VsZWN0U3RtdDoKIAkJCXJldHZhbCA9IF9jb3B5U2VsZWN0U3RtdChmcm9tKTsK IAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZhbCA9IF9jb3B5TGV0U3RtdChm cm9tKTsKKwkJCWJyZWFrOwogCQljYXNlIFRfU2V0T3BlcmF0aW9uU3RtdDoKIAkJCXJldHZhbCA9 IF9jb3B5U2V0T3BlcmF0aW9uU3RtdChmcm9tKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jCmluZGV4IGVlOGQ5MjVkYjEuLmIzNmFkOThmNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMK QEAgLTEwNjcsNiArMTA2NywxNSBAQCBfZXF1YWxTZWxlY3RTdG10KGNvbnN0IFNlbGVjdFN0bXQg KmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29s CitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNvbnN0IExldFN0bXQgKmIpCit7CisJ Q09NUEFSRV9OT0RFX0ZJRUxEKHZhcmlhYmxlKTsKKwlDT01QQVJFX05PREVfRklFTEQoc2VsZWN0 U3RtdCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wKIF9lcXVhbFNldE9wZXJh dGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwgY29uc3QgU2V0T3BlcmF0aW9uU3Rt dCAqYikKIHsKQEAgLTMyMzUsNiArMzI0NCw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJcmV0dmFsID0gX2VxdWFsU2VsZWN0 U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0U3RtdDoKKwkJCXJldHZhbCA9IF9l cXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6 CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10KGEsIGIpOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jCmluZGV4IDZjNzZjNDFlYmUuLjhkMjQ4MThjOWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25v ZGVGdW5jcy5jCkBAIC0zNDQ0LDYgKzM0NDQsMTYgQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxr ZXIoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2Fz ZSBUX0xldFN0bXQ6CisJCQl7CisJCQkJTGV0U3RtdCAqc3RtdCA9IChMZXRTdG10ICopIG5vZGU7 CisKKwkJCQlpZiAod2Fsa2VyKHN0bXQtPnZhcmlhYmxlLCBjb250ZXh0KSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQkJaWYgKHdhbGtlcihzdG10LT5zZWxlY3RTdG10LCBjb250ZXh0KSkKKwkJCQkJ cmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FfRXhwcjoKIAkJCXsKIAkJ CQlBX0V4cHIJICAgKmV4cHIgPSAoQV9FeHByICopIG5vZGU7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9jbGF1c2VzLmMKaW5kZXggYTlhMDlhZmQyYi4uYmJjNDJjOGI1MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL2NsYXVzZXMuYwpAQCAtMTI1MSwxMiArMTI1MSwxNSBAQCBtYXhfcGFyYWxsZWxf aGF6YXJkX3dhbGtlcihOb2RlICpub2RlLCBtYXhfcGFyYWxsZWxfaGF6YXJkX2NvbnRleHQgKmNv bnRleHQpCiAJICogUEFSQU1fRVhFQyBQYXJhbXMgbGlzdGVkIGluIHNhZmVfcGFyYW1faWRzLCBt ZWFuaW5nIHRoZXkgY291bGQgYmUKIAkgKiBlaXRoZXIgZ2VuZXJhdGVkIHdpdGhpbiB0aGUgd29y a2VyIG9yIGNhbiBiZSBjb21wdXRlZCBpbiBtYXN0ZXIgYW5kCiAJICogdGhlbiB0aGVpciB2YWx1 ZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSB3b3JrZXIuCisJICogUEFSQU1fU0NIRU1BX1ZBUklBQkxF IHBhcmFtcyBhcmUgbmV3ZXIgY2hhbmdlZCBieSB3b3JrZXJzLCBzbyB0aGV5IGNhbiBiZQorCSAq IHNhZmUuCiAJICovCiAJZWxzZSBpZiAoSXNBKG5vZGUsIFBhcmFtKSkKIAl7CiAJCVBhcmFtCSAg ICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBB UkFNX0VYVEVSTikKKwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJ CQlwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKIAkJCXJldHVybiBm YWxzZTsKIAogCQlpZiAocGFyYW0tPnBhcmFta2luZCAhPSBQQVJBTV9FWEVDIHx8CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwppbmRleCBjM2E5NjE3ZjY3Li5jYTI1MTdmMDY4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMK QEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJh Y2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTQyLDggKzQzLDEx IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3BhcmFtLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgorI2luY2x1 ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNldHJlZS5oIgog I2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKIAogCkBAIC01Niw2ICs2MCw3IEBAIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpOwogc3RhdGljIExpc3QgKnRy YW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCQkJ CSAgIExpc3QgKnN0bXRjb2xzLCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5vcywKIAkJCQkg ICBib29sIHN0cmlwX2luZGlyZWN0aW9uKTsKK3N0YXRpYyBRdWVyeSAqdHJhbnNmb3JtTGV0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIExldFN0bXQgKnN0bXQpOwogc3RhdGljIE9uQ29uZmxpY3RF eHByICp0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CSAgT25Db25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CiBzdGF0aWMgaW50CWNvdW50 X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwpAQCAtMjY3 LDYgKzI3Miw3IEBAIHRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJz ZVRyZWUpCiAJCWNhc2UgVF9JbnNlcnRTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJY2Fz ZSBUX0RlbGV0ZVN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJKHZvaWQpIHRlc3RfcmF3X2V4 cHJlc3Npb25fY292ZXJhZ2UocGFyc2VUcmVlLCBOVUxMKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpAQCAtMzA0LDYgKzMxMCwxMCBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqcGFyc2VUcmVlKQogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJ CQlyZXN1bHQgPSB0cmFuc2Zvcm1MZXRTdG10KHBzdGF0ZSwgKExldFN0bXQgKikgcGFyc2VUcmVl KTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogU3BlY2lhbCBjYXNlcwogCQkJICovCkBAIC0z NjYsNiArMzc2LDcgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hvdChSYXdTdG10ICpwYXJzZVRy ZWUpCiAJCWNhc2UgVF9EZWxldGVTdG10OgogCQljYXNlIFRfVXBkYXRlU3RtdDoKIAkJY2FzZSBU X1NlbGVjdFN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJcmVzdWx0ID0gdHJ1ZTsKIAkJCWJy ZWFrOwogCkBAIC0xNTQ3LDYgKzE1NTgsMjQxIEBAIHRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcmV0dXJuIHFyeTsKIH0KIAorLyoK KyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFuc2Zvcm0gYW4gTGV0IFN0YXRlbWVudAor ICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKKwlM aXN0CSAgICpleHByTGlzdCA9IE5JTDsKKwlMaXN0CSAgICpleHByTGlzdENvZXIgPSBOSUw7CisJ TGlzdAkgICAqc3ViX3J0YWJsZTsKKwlMaXN0CSAgICpzdWJfbmFtZXNwYWNlOworCVJhbmdlVGJs RW50cnkgKnJ0ZTsKKwlSYW5nZVRibFJlZiAqcnRyOworCUxpc3RDZWxsICAgKmxjOworCUFjbE1v ZGUJCXRhcmdldFBlcm1zOworCVBhcnNlU3RhdGUgKnN1Yl9wc3RhdGU7CisJUXVlcnkJICAgKnNl bGVjdFF1ZXJ5OworCWludAkJCWkgPSAwOworCisJUmVsYXRpb24JcmQ7CisJT2lkCQkJdmFydHlw aWQgPSBJbnZhbGlkT2lkOworCWludDMyCQl2YXJ0eXBtb2QgPSAtMTsKKworCS8qIFRoZXJlIGNh bid0IGJlIGFueSBvdXRlciBXSVRIIHRvIHdvcnJ5IGFib3V0ICovCisJQXNzZXJ0KHBzdGF0ZS0+ cF9jdGVuYW1lc3BhY2UgPT0gTklMKTsKKworCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfTEVUOwor CXBzdGF0ZS0+cF9pc19sZXQgPSB0cnVlOworCisJLyoKKwkgKiBJZiBhIG5vbi1uaWwgcmFuZ2V0 YWJsZS9uYW1lc3BhY2Ugd2FzIHBhc3NlZCBpbiwgYW5kIHdlIGFyZSBkb2luZworCSAqIElOU0VS VC9TRUxFQ1QsIGFycmFuZ2UgdG8gcGFzcyB0aGUgcmFuZ2V0YWJsZS9uYW1lc3BhY2UgZG93biB0 byB0aGUKKwkgKiBTRUxFQ1QuICBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB3ZSBhcmUgaW5zaWRl IGEgQ1JFQVRFIFJVTEUsIGFuZCBpbgorCSAqIHRoYXQgY2FzZSB3ZSB3YW50IHRoZSBydWxlJ3Mg T0xEIGFuZCBORVcgcnRhYmxlIGVudHJpZXMgdG8gYXBwZWFyIGFzCisJICogcGFydCBvZiB0aGUg U0VMRUNUJ3MgcnRhYmxlLCBub3QgYXMgb3V0ZXIgcmVmZXJlbmNlcyBmb3IgaXQuICAoS2x1Z2Uh KQorCSAqIFRoZSBTRUxFQ1QncyBqb2lubGlzdCBpcyBub3QgYWZmZWN0ZWQgaG93ZXZlci4gIFdl IG11c3QgZG8gdGhpcyBiZWZvcmUKKwkgKiBhZGRpbmcgdGhlIHRhcmdldCB0YWJsZSB0byB0aGUg SU5TRVJUJ3MgcnRhYmxlLgorCSAqLworCXN1Yl9ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwor CXBzdGF0ZS0+cF9ydGFibGUgPSBOSUw7CisJc3ViX25hbWVzcGFjZSA9IHBzdGF0ZS0+cF9uYW1l c3BhY2U7CisJcHN0YXRlLT5wX25hbWVzcGFjZSA9IE5JTDsKKworCXRhcmdldFBlcm1zID0gQUNM X1VQREFURTsKKwlxcnktPnJlc3VsdFJlbGF0aW9uID0gc2V0VGFyZ2V0VGFibGUocHN0YXRlLCBz dG10LT52YXJpYWJsZSwKKwkJCQkJCQkJCQkgZmFsc2UsIGZhbHNlLCB0YXJnZXRQZXJtcyk7CisK KwlyZCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisKKwl2YXJ0eXBpZCA9IHJkLT5yZF9y ZWwtPnJlbG9mdHlwZTsKKworCWlmICh2YXJ0eXBpZCAhPSBJbnZhbGlkT2lkKQorCXsKKwkJaWYg KGdldF90eXB0eXBlKHZhcnR5cGlkKSAhPSBUWVBUWVBFX0NPTVBPU0lURSkKKwkJeworCQkJVHVw bGVEZXNjCXR1cGRlc2M7CisJCQlSZWxhdGlvbglyZWw7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyU3RydWN0OworCisJCQkvKiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQlyZWwgPSByZWxhdGlv bl9vcGVuKHR5cGVpZFR5cGVSZWxpZChyZC0+cmRfcmVsLT5yZWx0eXBlKSwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJCXR1cGRlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3Io cmVsKSk7CisKKwkJCWF0dHJTdHJ1Y3QgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDApOworCisJ CQl2YXJ0eXBpZCA9IGF0dHJTdHJ1Y3QtPmF0dHR5cGlkOworCQkJdmFydHlwbW9kID0gYXR0clN0 cnVjdC0+YXR0dHlwbW9kOworCisJCQlGcmVlVHVwbGVEZXNjKHR1cGRlc2MpOworCQkJcmVsYXRp b25fY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQl9CisJCWVsc2UKKwkJeworCQkJdmFy dHlwaWQgPSByZC0+cmRfcmVsLT5yZWxvZnR5cGU7CisJCQl2YXJ0eXBtb2QgPSAtMTsKKwkJfQor CX0KKwllbHNlCisJeworCQl2YXJ0eXBpZCA9IHJkLT5yZF9yZWwtPnJlbHR5cGU7CisJCXZhcnR5 cG1vZCA9IC0xOworCX0KKworCisJLyoKKwkgKiBXZSBtYWtlIHRoZSBzdWItcHN0YXRlIGEgY2hp bGQgb2YgdGhlIG91dGVyIHBzdGF0ZSBzbyB0aGF0IGl0IGNhbgorCSAqIHNlZSBhbnkgUGFyYW0g ZGVmaW5pdGlvbnMgc3VwcGxpZWQgZnJvbSBhYm92ZS4gIFNpbmNlIHRoZSBvdXRlcgorCSAqIHBz dGF0ZSdzIHJ0YWJsZSBhbmQgbmFtZXNwYWNlIGFyZSBwcmVzZW50bHkgZW1wdHksIHRoZXJlIGFy ZSBubworCSAqIHNpZGUtZWZmZWN0cyBvZiBleHBvc2luZyBuYW1lcyB0aGUgc3ViLVNFTEVDVCBz aG91bGRuJ3QgYmUgYWJsZSB0bworCSAqIHNlZS4KKwkgKi8KKwlzdWJfcHN0YXRlID0gbWFrZV9w YXJzZXN0YXRlKHBzdGF0ZSk7CisKKwkvKgorCSAqIFByb2Nlc3MgdGhlIHNvdXJjZSBTRUxFQ1Qu CisJICoKKwkgKiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGlzIGJlIGhhbmRsZWQganVzdCBsaWtl IGEgc3RhbmRhbG9uZSBTRUxFQ1Q7CisJICogb3RoZXJ3aXNlIHRoZSBiZWhhdmlvciBvZiBTRUxF Q1Qgd2l0aGluIElOU0VSVCBtaWdodCBiZSBkaWZmZXJlbnQKKwkgKiBmcm9tIGEgc3RhbmQtYWxv bmUgU0VMRUNULiAoSW5kZWVkLCBQb3N0Z3JlcyB1cCB0aHJvdWdoIDYuNSBoYWQKKwkgKiBidWdz IG9mIGp1c3QgdGhhdCBuYXR1cmUuLi4pCisJICoKKwkgKiBUaGUgc29sZSBleGNlcHRpb24gaXMg dGhhdCB3ZSBwcmV2ZW50IHJlc29sdmluZyB1bmtub3duLXR5cGUKKwkgKiBvdXRwdXRzIGFzIFRF WFQuICBUaGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIHNpbmNlIGlmIHRoZQorCSAq IGNvbHVtbiB0eXBlIG1hdHRlcnMgc2VtYW50aWNhbGx5LCBpdCB3b3VsZCBoYXZlIGJlZW4gcmVz b2x2ZWQgdG8KKwkgKiBzb21ldGhpbmcgZWxzZSBhbnl3YXkuICBEb2luZyB0aGlzIGxldHMgdXMg cmVzb2x2ZSBzdWNoIG91dHB1dHMgYXMKKwkgKiB0aGUgdGFyZ2V0IGNvbHVtbidzIHR5cGUsIHdo aWNoIHdlIGhhbmRsZSBiZWxvdy4KKwkgKi8KKwlzdWJfcHN0YXRlLT5wX3J0YWJsZSA9IHN1Yl9y dGFibGU7CisJc3ViX3BzdGF0ZS0+cF9qb2luZXhwcnMgPSBOSUw7CS8qIHN1Yl9ydGFibGUgaGFz IG5vIGpvaW5zICovCisJc3ViX3BzdGF0ZS0+cF9uYW1lc3BhY2UgPSBzdWJfbmFtZXNwYWNlOwor CXN1Yl9wc3RhdGUtPnBfcmVzb2x2ZV91bmtub3ducyA9IGZhbHNlOworCisJc2VsZWN0UXVlcnkg PSB0cmFuc2Zvcm1TdG10KHN1Yl9wc3RhdGUsIHN0bXQtPnNlbGVjdFN0bXQpOworCisJZnJlZV9w YXJzZXN0YXRlKHN1Yl9wc3RhdGUpOworCisJLyogVGhlIGdyYW1tYXIgc2hvdWxkIGhhdmUgcHJv ZHVjZWQgYSBTRUxFQ1QgKi8KKwlpZiAoIUlzQShzZWxlY3RRdWVyeSwgUXVlcnkpIHx8CisJCXNl bGVjdFF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUKQorCQllbG9nKEVSUk9SLCAidW5l eHBlY3RlZCBub24tU0VMRUNUIGNvbW1hbmQgaW4gTEVUIC4uLiBTRUxFQ1QiKTsKKworCS8qCisJ ICogTWFrZSB0aGUgc291cmNlIGJlIGEgc3VicXVlcnkgaW4gdGhlIExFVCdzIHJhbmdldGFibGUs IGFuZCBhZGQKKwkgKiBpdCB0byB0aGUgTEVUJ3Mgam9pbmxpc3QuCisJICovCisJcnRlID0gYWRk UmFuZ2VUYWJsZUVudHJ5Rm9yU3VicXVlcnkocHN0YXRlLAorCQkJCQkJCQkJCXNlbGVjdFF1ZXJ5 LAorCQkJCQkJCQkJCW1ha2VBbGlhcygiKlNFTEVDVCoiLCBOSUwpLAorCQkJCQkJCQkJCWZhbHNl LAorCQkJCQkJCQkJCWZhbHNlKTsKKwlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJLyog YXNzdW1lIG5ldyBydGUgaXMgYXQgZW5kICovCisJcnRyLT5ydGluZGV4ID0gbGlzdF9sZW5ndGgo cHN0YXRlLT5wX3J0YWJsZSk7CisJQXNzZXJ0KHJ0ZSA9PSBydF9mZXRjaChydHItPnJ0aW5kZXgs IHBzdGF0ZS0+cF9ydGFibGUpKTsKKwlwc3RhdGUtPnBfam9pbmxpc3QgPSBsYXBwZW5kKHBzdGF0 ZS0+cF9qb2lubGlzdCwgcnRyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEdlbmVyYXRlIGFuIGV4 cHJlc3Npb24gbGlzdCBmb3IgdGhlIExFVCB0aGF0IHNlbGVjdHMgYWxsIHRoZQorCSAqIG5vbi1y ZXNqdW5rIGNvbHVtbnMgZnJvbSB0aGUgc3VicXVlcnkuICAoTEVUJ3MgdGxpc3QgbXVzdCBiZQor CSAqIHNlcGFyYXRlIGZyb20gdGhlIHN1YnF1ZXJ5J3MgdGxpc3QgYmVjYXVzZSB3ZSBtYXkgYWRk IGRhdGF0eXBlCisJICogY29lcmNpb25zLCBldGMuKQorCSAqLS0tLS0tLS0tLQorCSAqLworCWV4 cHJMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQorCXsK KwkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCQlFeHBy CSAgICpleHByOworCisJCWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKwkJaWYgKHRs ZS0+ZXhwciAmJgorCQkJKElzQSh0bGUtPmV4cHIsIENvbnN0KSB8fElzQSh0bGUtPmV4cHIsIFBh cmFtKSkgJiYKKwkJCWV4cHJUeXBlKChOb2RlICopIHRsZS0+ZXhwcikgPT0gVU5LTk9XTk9JRCkK KwkJCWV4cHIgPSB0bGUtPmV4cHI7CisJCWVsc2UKKwkJeworCQkJVmFyCQkgICAqdmFyID0gbWFr ZVZhckZyb21UYXJnZXRFbnRyeShydHItPnJ0aW5kZXgsIHRsZSk7CisKKwkJCXZhci0+bG9jYXRp b24gPSBleHByTG9jYXRpb24oKE5vZGUgKikgdGxlLT5leHByKTsKKwkJCWV4cHIgPSAoRXhwciAq KSB2YXI7CisJCX0KKwkJZXhwckxpc3QgPSBsYXBwZW5kKGV4cHJMaXN0LCBleHByKTsKKwl9CisK KwkvKgorCSAqIEJlY2F1c2UgZG9lc24ndCBzdXBwb3J0IHBhdHRlcm4gbWF0Y2hpbmcsIGRvbid0 IGFsbG93IG11bHRpY29sdW1uIHJlc3VsdAorCSAqLworCWlmIChsaXN0X2xlbmd0aChleHByTGlz dCkgIT0gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJIGVycm1zZygiZXhwcmVzc2lvbiBpcyBub3Qgc2NhbGFyIHZhbHVlIiksCisJ CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5v ZGUgKikgZXhwckxpc3QpKSkpOworCisJZXhwckxpc3RDb2VyID0gTklMOworCWZvcmVhY2gobGMs IGV4cHJMaXN0KQorCXsKKwkJTm9kZQkgICAqb3JpZ19leHByID0gKE5vZGUqKSBsZmlyc3QobGMp OworCQlPaWQJCQlleHBydHlwaWQgPSBleHByVHlwZSgoTm9kZSAqKSBvcmlnX2V4cHIpOworCQlF eHByCSAgICpleHByOworCisJCWV4cHIgPSAoRXhwciAqKQorCQkJY29lcmNlX3RvX3RhcmdldF90 eXBlKHBzdGF0ZSwKKwkJCQkJCQkJICBvcmlnX2V4cHIsIGV4cHJ0eXBpZCwKKwkJCQkJCQkJICB2 YXJ0eXBpZCwgdmFydHlwbW9kLAorCQkJCQkJCQkgIENPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJ CQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCSAgLTEpOworCisJCWlmIChleHBy ID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFU WVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGlzIG9mIHR5cGUg JXMiCisJCQkJCQkJICAiIGJ1dCBleHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh2YXJ0eXBp ZCksCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUoZXhwcnR5cGlkKSksCisJCQkJIGVycmhpbnQoIllv dSB3aWxsIG5lZWQgdG8gcmV3cml0ZSBvciBjYXN0IHRoZSBleHByZXNzaW9uLiIpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgb3JpZ19leHBy KSkpKTsKKworCQlleHByTGlzdENvZXIgPSBsYXBwZW5kKGV4cHJMaXN0Q29lciwgZXhwcik7CisJ fQorCisJLyoKKwkgKiBHZW5lcmF0ZSBxdWVyeSdzIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBjb21w dXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zLgorCSAqIEFsc28sIG1hcmsgYWxsIHRoZSB0YXJnZXQg Y29sdW1ucyBhcyBuZWVkaW5nIGluc2VydCBwZXJtaXNzaW9ucy4KKwkgKi8KKwlydGUgPSBwc3Rh dGUtPnBfdGFyZ2V0X3JhbmdldGJsZW50cnk7CisJcXJ5LT50YXJnZXRMaXN0ID0gTklMOworCWZv cmVhY2gobGMsIGV4cHJMaXN0KQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJz dChsYyk7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KGV4 cHIsCisJCQkJCQkJICBpICsgMSwKKwkJCQkJCQkgIEZpZ3VyZUNvbG5hbWUoKE5vZGUgKilleHBy KSwKKwkJCQkJCQkgIGZhbHNlKTsKKwkJcXJ5LT50YXJnZXRMaXN0ID0gbGFwcGVuZChxcnktPnRh cmdldExpc3QsIHRsZSk7CisJfQorCisJLyogZG9uZSBidWlsZGluZyB0aGUgcmFuZ2UgdGFibGUg YW5kIGpvaW50cmVlICovCisJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOworCXFyeS0+ am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKKworCXFy eS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOworCXFyeS0+aGFzU3Vi TGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisKKwlhc3NpZ25fcXVlcnlfY29sbGF0aW9u cyhwc3RhdGUsIHFyeSk7CisKKwlyZXR1cm4gcXJ5OworfQorCiAvKgogICogdHJhbnNmb3JtU2V0 T3BlcmF0aW9uU3RtdCAtCiAgKgkgIHRyYW5zZm9ybXMgYSBzZXQtb3BlcmF0aW9ucyB0cmVlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCAwNmMwM2RmZjNjLi42ZTY4NmQyNzQ1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI1 Nyw4ICsyNTcsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDb25zdHJhaW50c1NldFN0 bXQgQ29weVN0bXQgQ3JlYXRlQXNTdG10IENyZWF0ZUNhc3RTdG10CiAJCUNyZWF0ZURvbWFpblN0 bXQgQ3JlYXRlRXh0ZW5zaW9uU3RtdCBDcmVhdGVHcm91cFN0bXQgQ3JlYXRlT3BDbGFzc1N0bXQK IAkJQ3JlYXRlT3BGYW1pbHlTdG10IEFsdGVyT3BGYW1pbHlTdG10IENyZWF0ZVBMYW5nU3RtdAot CQlDcmVhdGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0 bXQgQ3JlYXRlVGFibGVTcGFjZVN0bXQKLQkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2Vy dmVyU3RtdCBDcmVhdGVGb3JlaWduVGFibGVTdG10CisJCUNyZWF0ZVNjaGVtYVN0bXQgQ3JlYXRl U2NoZW1hVmFyU3RtdCBDcmVhdGVTZXFTdG10IENyZWF0ZVN0bXQgQ3JlYXRlU3RhdHNTdG10CisJ CUNyZWF0ZVRhYmxlU3BhY2VTdG10IENyZWF0ZUZkd1N0bXQgQ3JlYXRlRm9yZWlnblNlcnZlclN0 bXQgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdAogCQlDcmVhdGVBc3NlcnRTdG10IENyZWF0ZVRyYW5z Zm9ybVN0bXQgQ3JlYXRlVHJpZ1N0bXQgQ3JlYXRlRXZlbnRUcmlnU3RtdAogCQlDcmVhdGVVc2Vy U3RtdCBDcmVhdGVVc2VyTWFwcGluZ1N0bXQgQ3JlYXRlUm9sZVN0bXQgQ3JlYXRlUG9saWN5U3Rt dAogCQlDcmVhdGVkYlN0bXQgRGVjbGFyZUN1cnNvclN0bXQgRGVmaW5lU3RtdCBEZWxldGVTdG10 IERpc2NhcmRTdG10IERvU3RtdApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJCURyb3BUcmFuc2Zvcm1TdG10CiAJCURyb3BVc2VyTWFwcGluZ1N0bXQgRXhwbGFp blN0bXQgRmV0Y2hTdG10CiAJCUdyYW50U3RtdCBHcmFudFJvbGVTdG10IEltcG9ydEZvcmVpZ25T Y2hlbWFTdG10IEluZGV4U3RtdCBJbnNlcnRTdG10Ci0JCUxpc3RlblN0bXQgTG9hZFN0bXQgTG9j a1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0bXQKKwkJTGV0U3Rt dCBMaXN0ZW5TdG10IExvYWRTdG10IExvY2tTdG10IE5vdGlmeVN0bXQgRXhwbGFpbmFibGVTdG10 IFByZXBhcmFibGVTdG10CiAJCUNyZWF0ZUZ1bmN0aW9uU3RtdCBBbHRlckZ1bmN0aW9uU3RtdCBS ZWluZGV4U3RtdCBSZW1vdmVBZ2dyU3RtdAogCQlSZW1vdmVGdW5jU3RtdCBSZW1vdmVPcGVyU3Rt dCBSZW5hbWVTdG10IFJldm9rZVN0bXQgUmV2b2tlUm9sZVN0bXQKIAkJUnVsZUFjdGlvblN0bXQg UnVsZUFjdGlvblN0bXRPckVtcHR5IFJ1bGVTdG10CkBAIC01ODMsNiArNTgzLDggQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPgkJcGFydGJvdW5kX2RhdHVtIFBhcnRpdGlv blJhbmdlRGF0dW0KICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQgcGFydGJvdW5kX2RhdHVt X2xpc3QgcmFuZ2VfZGF0dW1fbGlzdAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5kX2Vs ZW0KKyV0eXBlIDxsaXN0PglmaWVsZExpc3QKKyV0eXBlIDxub2RlPglmaWVsZERlZiBvcHRTY2hl bWFWYXJEZWZFeHByCiAKIC8qCiAgKiBOb24ta2V5d29yZCB0b2tlbiB0eXBlcy4gIFRoZXNlIGFy ZSBoYXJkLXdpcmVkIGludG8gdGhlICJmbGV4IiBsZXhlci4KQEAgLTY0OCw3ICs2NTAsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUtFWQogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBM QVNUX1AgTEFURVJBTF9QCi0JTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtF IExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCisJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBM RVQgTEVWRUwgTElLRSBMSU1JVCBMSVNURU4gTE9BRCBMT0NBTAogCUxPQ0FMVElNRSBMT0NBTFRJ TUVTVEFNUCBMT0NBVElPTiBMT0NLX1AgTE9DS0VEIExPR0dFRAogCiAJTUFQUElORyBNQVRDSCBN QVRFUklBTElaRUQgTUFYVkFMVUUgTUVUSE9EIE1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9OVEhf UCBNT1ZFCkBAIC02ODYsOCArNjg4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlVTkJP VU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05PV04gVU5MSVNU RU4gVU5MT0dHRUQKIAlVTlRJTCBVUERBVEUgVVNFUiBVU0lORwogCi0JVkFDVVVNIFZBTElEIFZB TElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcK LQlWRVJCT1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCisJVkFDVVVNIFZBTElEIFZB TElEQVRFIFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBQkxFIFZBUklBQkxF UworCVZBUklBRElDIFZBUllJTkcgVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElM RQogCiAJV0hFTiBXSEVSRSBXSElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElOIFdJVEhPVVQg V09SSyBXUkFQUEVSIFdSSVRFCiAKQEAgLTg3OCw2ICs4ODAsNyBAQCBzdG10IDoKIAkJCXwgQ3Jl YXRlUExhbmdTdG10CiAJCQl8IENyZWF0ZVNjaGVtYVN0bXQKIAkJCXwgQ3JlYXRlU2VxU3RtdAor CQkJfCBDcmVhdGVTY2hlbWFWYXJTdG10CiAJCQl8IENyZWF0ZVN0bXQKIAkJCXwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdAogCQkJfCBDcmVhdGVTdGF0c1N0bXQKQEAgLTkxOSw2ICs5MjIsNyBAQCBz dG10IDoKIAkJCXwgTGlzdGVuU3RtdAogCQkJfCBSZWZyZXNoTWF0Vmlld1N0bXQKIAkJCXwgTG9h ZFN0bXQKKwkJCXwgTGV0U3RtdAogCQkJfCBMb2NrU3RtdAogCQkJfCBOb3RpZnlTdG10CiAJCQl8 IFByZXBhcmVTdG10CkBAIC0xMzc5LDYgKzEzODMsNyBAQCBzY2hlbWFfc3RtdDoKIAkJCUNyZWF0 ZVN0bXQKIAkJCXwgSW5kZXhTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQKKwkJCXwgQ3JlYXRlU2No ZW1hVmFyU3RtdAogCQkJfCBDcmVhdGVUcmlnU3RtdAogCQkJfCBHcmFudFN0bXQKIAkJCXwgVmll d1N0bXQKQEAgLTE4MDcsNyArMTgxMiwxMiBAQCBEaXNjYXJkU3RtdDoKIAkJCQkJbi0+dGFyZ2V0 ID0gRElTQ0FSRF9TRVFVRU5DRVM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0KKwkJ CXwgRElTQ0FSRCBWQVJJQUJMRVMKKwkJCQl7CisJCQkJCURpc2NhcmRTdG10ICpuID0gbWFrZU5v ZGUoRGlzY2FyZFN0bXQpOworCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1ZBUklBQkxFUzsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJOwogCiAKQEAgLTIwMDMsNiArMjAxMywyNCBA QCBBbHRlclRhYmxlU3RtdDoKIAkJCQkJbi0+bm93YWl0ID0gJDE0OwogCQkJCQkkJCA9IChOb2Rl ICopbjsKIAkJCQl9CisJCXwJQUxURVIgVkFSSUFCTEUgcXVhbGlmaWVkX25hbWUgYWx0ZXJfdGFi bGVfY21kcworCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclRh YmxlU3RtdCk7CisJCQkJCW4tPnJlbGF0aW9uID0gJDM7CisJCQkJCW4tPmNtZHMgPSAkNDsKKwkJ CQkJbi0+cmVsa2luZCA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+bWlzc2luZ19vayA9IGZh bHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCXwJQUxURVIgVkFSSUFCTEUgSUZf UCBFWElTVFMgcXVhbGlmaWVkX25hbWUgYWx0ZXJfdGFibGVfY21kcworCQkJCXsKKwkJCQkJQWx0 ZXJUYWJsZVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlU3RtdCk7CisJCQkJCW4tPnJlbGF0 aW9uID0gJDU7CisJCQkJCW4tPmNtZHMgPSAkNjsKKwkJCQkJbi0+cmVsa2luZCA9IE9CSkVDVF9W QVJJQUJMRTsKKwkJCQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKilu OworCQkJCX0KIAkJOwogCiBhbHRlcl90YWJsZV9jbWRzOgpAQCAtNDI3NSw2ICs0MzAzLDg2IEBA IE51bWVyaWNPbmx5X2xpc3Q6CU51bWVyaWNPbmx5CQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEp OyB9CiAJCQkJfCBOdW1lcmljT25seV9saXN0ICcsJyBOdW1lcmljT25seQl7ICQkID0gbGFwcGVu ZCgkMSwgJDMpOyB9CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZ IDoKKyAqCQkJCUNSRUFURSBWQVJJQUJMRSBzZXFuYW1lIFtBU10gdHlwZQorICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCUNSRUFURSBPcHRUZW1w IFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIG9wdF9hcyBUeXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZF eHByCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl U2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52 YXJpYWJsZSA9ICQ0OworCQkJCQluLT50eXBlTmFtZSA9ICQ2OworCQkJCQluLT5kZWZleHByID0g JDc7CisJCQkJCW4tPmZpZWxkcyA9IE5VTEw7CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSBmYWxz ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBDUkVBVEUgT3B0VGVtcCBWQVJJ QUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVuYW1lIG9wdFNj aGVtYVZhckRlZkV4cHIKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVtYVZhclN0bXQgKm4gPSBtYWtl Tm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJCQkJJDctPnJlbHBlcnNpc3RlbmNlID0gJDI7 CisJCQkJCW4tPnZhcmlhYmxlID0gJDc7CisJCQkJCW4tPnR5cGVOYW1lID0gJDk7CisJCQkJCW4t PmRlZmV4cHIgPSAkMTA7CisJCQkJCW4tPmZpZWxkcyA9IE5VTEw7CisJCQkJCW4tPmlmX25vdF9l eGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IENSRUFURSBP cHRUZW1wIFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIG9wdF9hcyAnKCcgZmllbGRMaXN0ICcpJwor CQkJCXsKKwkJCQkJQ3JlYXRlU2NoZW1hVmFyU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVNjaGVt YVZhclN0bXQpOworCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAkMjsKKwkJCQkJbi0+dmFyaWFi bGUgPSAkNDsKKwkJCQkJbi0+dHlwZU5hbWUgPSBOVUxMOworCQkJCQluLT5maWVsZHMgPSAkNzsK KwkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCQl8IENSRUFURSBPcHRUZW1wIFZBUklBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZp ZWRfbmFtZSBvcHRfYXMgJygnIGZpZWxkTGlzdCAnKScKKwkJCQl7CisJCQkJCUNyZWF0ZVNjaGVt YVZhclN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJCQkJJDctPnJl bHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0gJDc7CisJCQkJCW4tPnR5cGVO YW1lID0gTlVMTDsKKwkJCQkJbi0+ZmllbGRzID0gJDEwOworCQkJCQluLT5pZl9ub3RfZXhpc3Rz ID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQk7CisKK29wdFNjaGVtYVZh ckRlZkV4cHI6IERFRkFVTFQgYl9leHByCQkJCQl7ICQkID0gJDI7IH0KKwkJCXwgLyogRU1QVFkg Ki8JCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCitmaWVsZExpc3Q6CisJCQlmaWVsZERlZgkJ CQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGZpZWxkTGlzdCAnLCcgZmllbGRE ZWYJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK2ZpZWxkRGVmOglDb2xJZCBU eXBlbmFtZSBvcHRTY2hlbWFWYXJEZWZFeHByCisJCQkJeworCQkJCQlDb2x1bW5EZWYgKm4gPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCQkJCQluLT5jb2xuYW1lID0gJDE7CisJCQkJCW4tPnR5cGVO YW1lID0gJDI7CisJCQkJCW4tPmluaGNvdW50ID0gMDsKKwkJCQkJbi0+aXNfbG9jYWwgPSB0cnVl OworCQkJCQluLT5pc19ub3RfbnVsbCA9IGZhbHNlOworCQkJCQluLT5pc19mcm9tX3R5cGUgPSBm YWxzZTsKKwkJCQkJbi0+aXNfZnJvbV9wYXJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+c3RvcmFnZSA9 IDA7CisJCQkJCW4tPnJhd19kZWZhdWx0ID0gJDM7CisJCQkJCW4tPmNvb2tlZF9kZWZhdWx0ID0g TlVMTDsKKwkJCQkJbi0+Y29sbE9pZCA9IEludmFsaWRPaWQ7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOworCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKICAqCiAgKgkJUVVFUklFUyA6CkBAIC02MzIzLDYgKzY0MzEsNyBAQCBkcm9wX3R5cGVf YW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCQl7ICQkID0gT0JKRUNU X1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIFRFTVBMQVRFCQkJCXsgJCQgPSBP QkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhUX1AgU0VBUkNIIENPTkZJR1VSQVRJT04JCQl7 ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQkJeyAk JCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8qIG9iamVjdCB0eXBlcyB0YWtpbmcgbmFt ZV9saXN0ICovCkBAIC02NTkyLDYgKzY3MDEsNyBAQCBjb21tZW50X3R5cGVfYW55X25hbWU6CiAJ CQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCXsgJCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZ OyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggUEFSU0VSCQkJCXsgJCQgPSBPQkpFQ1RfVFNQQVJTRVI7 IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFU RTsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsK IAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC02NzMwLDYgKzY4NDAsNyBAQCBz ZWN1cml0eV9sYWJlbF90eXBlX2FueV9uYW1lOgogCQkJfCBUQUJMRQkJCQkJCQkJeyAkJCA9IE9C SkVDVF9UQUJMRTsgfQogCQkJfCBWSUVXCQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZJRVc7IH0KIAkJ CXwgTUFURVJJQUxJWkVEIFZJRVcJCQkJCXsgJCQgPSBPQkpFQ1RfTUFUVklFVzsgfQorCQkJfCBW QVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0 IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC03MDU1LDYgKzcxNjYsMTQgQEAgcHJpdmlsZWdlX3Rh cmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJCQkkJCA9IG47CiAJCQkJfQorCQkJfCBWQVJJ QUJMRSBxdWFsaWZpZWRfbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFBy aXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBl ID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7 CisJCQkJCW4tPm9ianMgPSAkMjsKKwkJCQkJJCQgPSBuOworCQkJCX0KIAkJCXwgRk9SRUlHTiBE QVRBX1AgV1JBUFBFUiBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJp dlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTcxNjcsNiArNzI4Niwx NCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5vYmpzID0gJDU7CiAJCQkJCSQkID0gbjsK IAkJCQl9CisJCQl8IEFMTCBWQVJJQUJMRVMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0CisJCQkJewor CQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFy Z2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9BTExfSU5fU0NIRU1BOworCQkJ CQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmpzID0gJDU7CisJCQkJ CSQkID0gbjsKKwkJCQl9CiAJCQl8IEFMTCBGVU5DVElPTlMgSU5fUCBTQ0hFTUEgbmFtZV9saXN0 CiAJCQkJewogCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVv ZihQcml2VGFyZ2V0KSk7CkBAIC03MzQ5LDYgKzc0NzYsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3Rh cmdldDoKIAkJCXwgRlVOQ1RJT05TCQl7ICQkID0gT0JKRUNUX0ZVTkNUSU9OOyB9CiAJCQl8IFJP VVRJTkVTCQl7ICQkID0gT0JKRUNUX0ZVTkNUSU9OOyB9CiAJCQl8IFNFUVVFTkNFUwkJeyAkJCA9 IE9CSkVDVF9TRVFVRU5DRTsgfQorCQkJfCBWQVJJQUJMRVMJCXsgJCQgPSBPQkpFQ1RfVkFSSUFC TEU7IH0KIAkJCXwgVFlQRVNfUAkJeyAkJCA9IE9CSkVDVF9UWVBFOyB9CiAJCQl8IFNDSEVNQVMJ CXsgJCQgPSBPQkpFQ1RfU0NIRU1BOyB9CiAJCTsKQEAgLTg5MzcsNiArOTA2NSwyNiBAQCBSZW5h bWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgUkVOQU1FIFRP IG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsK IAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIHF1YWxpZmllZF9uYW1lIFJFTkFNRSBUTyBuYW1l CisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJCQkJ CW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPnJlbGF0aW9uID0gJDM7 CisJCQkJCW4tPnN1Ym5hbWUgPSBOVUxMOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4t Pm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBB TFRFUiBWQVJJQUJMRSBJRl9QIEVYSVNUUyBxdWFsaWZpZWRfbmFtZSBSRU5BTUUgVE8gbmFtZQor CQkJCXsKKwkJCQkJUmVuYW1lU3RtdCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQlu LT5yZW5hbWVUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5yZWxhdGlvbiA9ICQ1Owor CQkJCQluLT5zdWJuYW1lID0gTlVMTDsKKwkJCQkJbi0+bmV3bmFtZSA9ICQ4OworCQkJCQluLT5t aXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAKIG9w dF9jb2x1bW46IENPTFVNTgkJCQkJCQkJCXsgJCQgPSBDT0xVTU47IH0KQEAgLTEwNjY5LDcgKzEw ODE3LDggQEAgRXhwbGFpbmFibGVTdG10OgogCQkJfCBDcmVhdGVBc1N0bXQKIAkJCXwgQ3JlYXRl TWF0Vmlld1N0bXQKIAkJCXwgUmVmcmVzaE1hdFZpZXdTdG10Ci0JCQl8IEV4ZWN1dGVTdG10CQkJ CQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgRXhlY3V0ZVN0bXQKKwkJCXwg TGV0U3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsKIAogZXhwbGFp bl9vcHRpb25fbGlzdDoKQEAgLTEwNzI2LDcgKzEwODc1LDggQEAgUHJlcGFyYWJsZVN0bXQ6CiAJ CQlTZWxlY3RTdG10CiAJCQl8IEluc2VydFN0bXQKIAkJCXwgVXBkYXRlU3RtdAotCQkJfCBEZWxl dGVTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KKwkJCXwgRGVsZXRlU3Rt dAorCQkJfCBMZXRTdG10CQkJCQkvKiBieSBkZWZhdWx0IGFsbCBhcmUgJCQ9JDEgKi8KIAkJOwog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKQEAgLTExMTI1LDYgKzExMjc1LDMwIEBAIG9wdF9ob2xk OiAvKiBFTVBUWSAqLwkJCQkJCXsgJCQgPSAwOyB9CiAJCQl8IFdJVEhPVVQgSE9MRAkJCQkJeyAk JCA9IDA7IH0KIAkJOwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKgkJUVVFUlk6Cisg KgkJCQlMRVQgU1RBVEVNRU5UUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0xldFN0bXQ6 CUxFVCBxdWFsaWZpZWRfbmFtZSAnPScgYV9leHByCisJCQkJeworCQkJCQlMZXRTdG10ICpuID0g bWFrZU5vZGUoTGV0U3RtdCk7CisJCQkJCVNlbGVjdFN0bXQgKnNlbGVjdCA9IG1ha2VOb2RlKFNl bGVjdFN0bXQpOworCQkJCQlSZXNUYXJnZXQJKnJlcyA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisK KwkJCQkJcmVzLT5uYW1lID0gTlVMTDsKKwkJCQkJcmVzLT5pbmRpcmVjdGlvbiA9IE5JTDsKKwkJ CQkJcmVzLT52YWwgPSAoTm9kZSAqKSAkNDsKKwkJCQkJcmVzLT5sb2NhdGlvbiA9IEA0OworCQkJ CQlzZWxlY3QtPnRhcmdldExpc3QgPSBsaXN0X21ha2UxKHJlcyk7CisJCQkJCW4tPnZhcmlhYmxl ID0gJDI7CisJCQkJCW4tPnNlbGVjdFN0bXQgPSAoTm9kZSAqKSBzZWxlY3Q7CisKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAg KgkJUVVFUlk6CkBAIC0xNTA4Myw2ICsxNTI1Nyw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJ CXwgTEFSR0VfUAogCQkJfCBMQVNUX1AKIAkJCXwgTEVBS1BST09GCisJCQl8IExFVAogCQkJfCBM RVZFTAogCQkJfCBMSVNURU4KIAkJCXwgTE9BRApAQCAtMTUyMzEsNiArMTU0MDYsOCBAQCB1bnJl c2VydmVkX2tleXdvcmQ6CiAJCQl8IFZBTElEQVRFCiAJCQl8IFZBTElEQVRPUgogCQkJfCBWQUxV RV9QCisJCQl8IFZBUklBQkxFCisJCQl8IFZBUklBQkxFUwogCQkJfCBWQVJZSU5HCiAJCQl8IFZF UlNJT05fUAogCQkJfCBWSUVXCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzODVlNTRhOWI2 Li44ZjZlMjhkYThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTM3MSw3ICszNzEsNyBA QCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAK IAkJZGVmYXVsdDoKIAkJCS8qIHNob3VsZCBub3QgcmVhY2ggaGVyZSAqLwotCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGludCkgbm9kZVRhZyhleHByKSk7CisJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQgJWQiLCAoaW50KSBub2Rl VGFnKGV4cHIpLCBUX0NvbnN0KTsKIAkJCXJlc3VsdCA9IE5VTEw7CQkvKiBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCiAJCQlicmVhazsKIAl9CkBAIC01MDksNiArNTA5LDcgQEAgc3RhdGljIE5vZGUg KgogdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVm KQogewogCU5vZGUJICAgKm5vZGUgPSBOVUxMOworCU5vZGUJICAgKnZhcmlhYmxlID0gTlVMTDsK IAljaGFyCSAgICpuc3BuYW1lID0gTlVMTDsKIAljaGFyCSAgICpyZWxuYW1lID0gTlVMTDsKIAlj aGFyCSAgICpjb2xuYW1lID0gTlVMTDsKQEAgLTc0OSw2ICs3NTAsMTMzIEBAIHRyYW5zZm9ybUNv bHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCWJyZWFrOwog CX0KIAorCS8qCisJICogVHJ5IHRvIGlkZW50aWZ5IGNvbHVtbiByZWYgYXMgdmFyaWFibGUuIFBv c3NpYmxlIHZhcmlhbnRzIGFyZQorCSAqCisJICogQSAuLiB2YXJpYWJsZSBuYW1lCisJICogQS5C IC4uIHF1YWxpZmllZCB2YXJpYWJsZSBuYW1lCisJICogQS5CIC4uIHZhcmlhYmxlLmZpZWxkCisJ ICogQS5CLkMgLi4gc2NoZW1hLnZhcmlhYmxlLmZpZWxkCisJICogQS5CLkMuRCAuLiBjYXRhbG9n dWUuc2NoZW1hLnZhcmlhYmxlLmZpZWxkCisJICovCisJc3dpdGNoIChsaXN0X2xlbmd0aChjcmVm LT5maWVsZHMpKQorCXsKKwkJY2FzZSAxOgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChO b2RlICopIGxpbml0aWFsKGNyZWYtPmZpZWxkcyk7CisKKwkJCQlpZiAoSXNBKGZpZWxkMSwgU3Ry aW5nKSkKKwkJCQl7CisJCQkJCWNoYXIgKnZhcm5hbWUgID0gc3RyVmFsKGZpZWxkMSk7CisKKwkJ CQkJLyogVHJ5IHRvIGlkZW50aWZ5IGFzIGFuIHVucXVhbGlmaWVkIGNvbHVtbiAqLworCQkJCQl2 YXJpYWJsZSA9IHRvU2NoZW1hVmFyaWFibGUocHN0YXRlLAorCQkJCQkJCQkJCQkJCU5VTEwsIHZh cm5hbWUsIE5VTEwsCisJCQkJCQkJCQkJCQkJY3JlZi0+bG9jYXRpb24pOworCQkJCX0KKwkJCQli cmVhazsKKwkJCX0KKwkJY2FzZSAyOgorCQkJeworCQkJCU5vZGUJICAgKmZpZWxkMSA9IChOb2Rl ICopIGxpbml0aWFsKGNyZWYtPmZpZWxkcyk7CisJCQkJTm9kZQkgICAqZmllbGQyID0gKE5vZGUg KikgbHNlY29uZChjcmVmLT5maWVsZHMpOworCisJCQkJaWYgKElzQShmaWVsZDEsIFN0cmluZykg JiYgSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJCWNoYXIgKm5zcG5hbWUgPSBzdHJW YWwoZmllbGQxKTsKKwkJCQkJY2hhciAqdmFybmFtZSA9IHN0clZhbChmaWVsZDIpOworCisJCQkJ CS8qIFRyeSB0byBpZGVudGlmeSBhcyBhbiB1bnF1YWxpZmllZCBjb2x1bW4gKi8KKwkJCQkJdmFy aWFibGUgPSB0b1NjaGVtYVZhcmlhYmxlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQluc3BuYW1lLCB2 YXJuYW1lLCBOVUxMLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJCQl9CisJCQkJ YnJlYWs7CisJCQl9CisJCWNhc2UgMzoKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVsZDEgPSAoTm9k ZSAqKSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxkMiA9IChOb2Rl ICopIGxzZWNvbmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDMgPSAoTm9kZSAq KSBsdGhpcmQoY3JlZi0+ZmllbGRzKTsKKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJpbmcpICYm IElzQShmaWVsZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7CisJCQkJ CWNoYXIgKm5zcG5hbWUgPSBzdHJWYWwoZmllbGQxKTsKKwkJCQkJY2hhciAqdmFybmFtZSA9IHN0 clZhbChmaWVsZDIpOworCQkJCQljaGFyICpmaWVsZG5hbWUgPSBzdHJWYWwoZmllbGQzKTsKKwor CQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICovCisJCQkJ CXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJbnNwbmFt ZSwgdmFybmFtZSwgZmllbGRuYW1lLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9uKTsKKwkJ CQl9CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgNDoKKwkJCXsKKwkJCQlOb2RlCSAgICpmaWVs ZDEgPSAoTm9kZSAqKSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCQkJCU5vZGUJICAgKmZpZWxk MiA9IChOb2RlICopIGxzZWNvbmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDMg PSAoTm9kZSAqKSBsdGhpcmQoY3JlZi0+ZmllbGRzKTsKKwkJCQlOb2RlCSAgICpmaWVsZDQgPSAo Tm9kZSAqKSBsZm91cnRoKGNyZWYtPmZpZWxkcyk7CisJCQkJY2hhcgkgICAqY2F0bmFtZTsKKwor CQkJCUFzc2VydChJc0EoZmllbGQxLCBTdHJpbmcpKTsKKwkJCQljYXRuYW1lID0gc3RyVmFsKGZp ZWxkMSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNoZWNrIHRoZSBjYXRhbG9nIG5hbWUgYW5kIHRo ZW4gaWdub3JlIGl0LgorCQkJCSAqLworCQkJCWlmIChzdHJjbXAoY2F0bmFtZSwgZ2V0X2RhdGFi YXNlX25hbWUoTXlEYXRhYmFzZUlkKSkgIT0gMCkKKwkJCQl7CisJCQkJCWNyZXJyID0gQ1JFUlJf V1JPTkdfREI7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWlmIChJc0EoZmllbGQxLCBTdHJp bmcpICYmIElzQShmaWVsZDIsIFN0cmluZykgJiYgSXNBKGZpZWxkMiwgU3RyaW5nKSkKKwkJCQl7 CisJCQkJCWNoYXIgKm5zcG5hbWUgPSBzdHJWYWwoZmllbGQyKTsKKwkJCQkJY2hhciAqdmFybmFt ZSA9IHN0clZhbChmaWVsZDMpOworCQkJCQljaGFyICpmaWVsZG5hbWUgPSBzdHJWYWwoZmllbGQ0 KTsKKworCQkJCQkvKiBUcnkgdG8gaWRlbnRpZnkgYXMgYW4gdW5xdWFsaWZpZWQgY29sdW1uICov CisJCQkJCXZhcmlhYmxlID0gdG9TY2hlbWFWYXJpYWJsZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJ bnNwbmFtZSwgdmFybmFtZSwgZmllbGRuYW1lLAorCQkJCQkJCQkJCQkJCWNyZWYtPmxvY2F0aW9u KTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCWRlZmF1bHQ6CisKKwkJCS8qCisJCQkgKiBU aGVyZSBjYW4gYmUgYW5vdGhlciB2YXJpYW50cywgbW9yZSB3aGVuIGNvbXBvc2l0ZSB2YXJpYWJs ZXMKKwkJCSAqIHdpbGwgYmUgc3VwcG9ydGVkLiBDdXJyZW50bHkgb25seSBzY2FsYXJzIGFyZSBz dXBwb3J0ZWQsIHNvCisJCQkgKiB0aGVyZSBhcmUgbm90IG5lY2Vzc2FyeSB0byBzb2x2ZSBvdGhl ciBxdWVzdGlvbnMuCisJCQkgKgorCQkJICogZG8gbm90aGluZworCQkJICovCisJCQljcmVyciA9 IENSRVJSX1RPT19NQU5ZOyAvKiB0b28gbWFueSBkb3R0ZWQgbmFtZXMgKi8KKwkJCWJyZWFrOwor CX0KKworCWlmICh2YXJpYWJsZSAhPSBOVUxMKQorCXsKKwkJLyoKKwkJICogV2hlbiB3ZSBhbGxv dyB2YXJpYWJsZXMgaW4gRlJPTSBjbGF1c2UsIHRoZW4gaGVyZSBjYW4gYmUgY2hlY2ssCisJCSAq IGlmIHZhcmlhYmxlIGFuZCBub2RlIGFyZSBzYW1lLiBPciBiZXR0ZXIsIHdoZW4gbm9kZSB3aWxs IGJlCisJCSAqIHJlZmVyZW5jZWQgdG8gdmFyaWFibGUsIHRoZW4gdG9TY2hlbWFWYXJpYWJsZSB3 aWxsIG5vdCBiZSBjYWxsZWQuCisJCSAqIEJ1dCBub3csIHdlIGRvbid0IGFsbG93IHNjaGVtYSB2 YXJpYWJsZSBpbiBGUk9NIGNsYXVzZSwgc28gdGhlCisJCSAqIGNvbmZsaWN0IGlzIG5vdCBwb3Nz aWJsZS4KKwkJICovCisJCWlmIChub2RlICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1 bW4gcmVmZXJlbmNlIFwiJXNcIiBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJCU5hbWVMaXN0VG9TdHJp bmcoY3JlZi0+ZmllbGRzKSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVm LT5sb2NhdGlvbikpKTsKKworCQlub2RlID0gdmFyaWFibGU7CisJfQorCiAJLyoKIAkgKiBOb3cg Z2l2ZSB0aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywgaWYgYW55LCBhIGNoYW5jZS4gIFdlIHBh c3MgdGhlCiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNvIHRoYXQgaXQgY2FuIHRocm93IGFuIGVy cm9yIGlmIGl0IHdpc2hlcyBpbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5k ZXggMDUzYWUwMmM5Zi4uOGFiYjNhNGMyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9u LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3R5cGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgogCiAKQEAgLTEx NTAsNiArMTE1MSw3IEBAIHBhcnNlck9wZW5UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0 IFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IGxvY2ttb2RlKQogCiAJc2V0dXBfcGFyc2VyX2VycnBv c2l0aW9uX2NhbGxiYWNrKCZwY2JzdGF0ZSwgcHN0YXRlLCByZWxhdGlvbi0+bG9jYXRpb24pOwog CXJlbCA9IGhlYXBfb3BlbnJ2X2V4dGVuZGVkKHJlbGF0aW9uLCBsb2NrbW9kZSwgdHJ1ZSk7CisK IAlpZiAocmVsID09IE5VTEwpCiAJewogCQlpZiAocmVsYXRpb24tPnNjaGVtYW5hbWUpCkBAIC0x MTgwLDYgKzExODIsMjQgQEAgcGFyc2VyT3BlblRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgbG9ja21vZGUpCiAJCQkJCQkJCXJlbGF0aW9uLT5y ZWxuYW1lKSkpOwogCQl9CiAJfQorCisJLyoKKwkgKiBSRUxLSU5EX1ZBUklBQkxFIGNhbiBiZSB1 c2VkIG9ubHkgaW4gTEVUIGNvbW1hbmQuCisJICogUHJvYmFibHkgdGhpcyBjaGVjayBjYW4gYmUg ZG9uZSBlbHNld2hlcmUsIGJ1dCBoZXJlIEkKKwkgKiBoYXZlIGEgdXNlZCByZWxhdGlvbiBhbmQg cGFyc2Ugc3RhdGUgdG9nZXRoZXIgZmlyc3QgdGltZS4KKwkgKi8KKwlpZiAocmVsLT5yZF9yZWwt PnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJQUJMRSAmJiAhcHN0YXRlLT5wX2lzX2xldCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQkgZXJybXNnKCJcIiVzXCIgaXMgYW4gc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKKwlpZiAocHN0YXRlLT5wX2lzX2xldCAmJiByZWwt PnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1ZBUklBQkxFKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coIlwi JXNcIiBpcyBub3QgYW4gc2NoZW1hIHZhcmlhYmxlIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCkpKSk7CisKIAljYW5jZWxfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZw Y2JzdGF0ZSk7CiAJcmV0dXJuIHJlbDsKIH0KQEAgLTMzNjAsMyArMzM4MCwxNjUgQEAgaXNRdWVy eVVzaW5nVGVtcFJlbGF0aW9uX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQogCQkJ CQkJCQkgIGlzUXVlcnlVc2luZ1RlbXBSZWxhdGlvbl93YWxrZXIsCiAJCQkJCQkJCSAgY29udGV4 dCk7CiB9CisKK3N0YXRpYyBib29sCitpc19zY2hlbWFfdmFyaWFibGUoT2lkIG9pZCkKK3sKKwlI ZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jbGFzcwl2YXJ0dXA7CisJYm9vbAkJcmVzdWx0ID0gZmFs c2U7CisKKwkJLyogbm93LCB0eXBlIGluZm8gZm9yIHNjaGVtYSB2YXJpYWJsZSBpcyBjb2xsZWN0 ZWQgKi8KKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lk KSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJdmFydHVwID0gKEZvcm1fcGdf Y2xhc3MpIEdFVFNUUlVDVCh0cCk7CisKKwkJaWYgKHZhcnR1cC0+cmVsa2luZCA9PSBSRUxLSU5E X1ZBUklBQkxFKQorCQkJcmVzdWx0ID0gdHJ1ZTsKKworCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBUcnkgdG8gcmVwbGFjZSBDb2x1bW5S ZWYgYnkgUGFyYW0gcmVsYXRlZCB0byB2YXJpYWJsZQorICoKKyAqLworTm9kZSAqCit0b1NjaGVt YVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY2hhciAqbnNwbmFtZSwgY2hhciAqdmFybmFt ZSwgY2hhciAqZmllbGRuYW1lLCBpbnQgbG9jYXRpb24pCit7CisJT2lkCQkJdmFyaWQxLAorCQkJ CXZhcmlkMjsKKwlQYXJhbQkgICAqcGFyYW0gPSBOVUxMOworCisJdmFyaWQxID0gUmFuZ2VWYXJH ZXRSZWxpZChtYWtlUmFuZ2VWYXIobnNwbmFtZSwgdmFybmFtZSwgLTEpLCBOb0xvY2ssIHRydWUp OworCisJLyoKKwkgKiBXaGVuIHBhaXIgbnNwbmFtZSwgdmFybmFtZSBpcyBkZWZpbmVkLCB0aGVu IGlzIHBvc3NpYmxlIHNvIGl0IGlzIHZhcm5hbWUsIGZpZWxkbmFtZS4KKwkgKiBXZSB3b3VsZCB0 byBhbGxvdyByZWZlcmVuY2Ugd2l0aG91dCBuZWNlc3NhcnkgcGFyZW50aGVzaXMsIGJ1dCB3ZSBu ZWVkIHRvIGVhcmx5CisJICogZG8gZGVjaXNpb24gd2hhdCBjYXNlIGlzIHByb2Nlc3NlZC4gUmFp c2UgZXhjZXB0aW9uLCB3aGVuIHdlIGZpbmQgc29tZSBxdWFsaWZpZWQKKwkgKiB2YXJpYWJsZSBh bmQgdW5xdWFsaWZpZWQgdmFyaWFibGUgd2l0aCBuc3BuYW1lLgorCSAqLworCWlmIChuc3BuYW1l ICE9IE5VTEwgJiYgZmllbGRuYW1lID09IE5VTEwpCisJeworCQl2YXJpZDIgPSBSYW5nZVZhckdl dFJlbGlkKG1ha2VSYW5nZVZhcihOVUxMLCBuc3BuYW1lLCAtMSksIE5vTG9jaywgdHJ1ZSk7CisK KwkJaWYgKE9pZElzVmFsaWQodmFyaWQxKSAmJiBPaWRJc1ZhbGlkKHZhcmlkMikpCisJCXsKKwkJ CS8qIFRoZXJlIGlzIGNvbGxpc2lvbiAtIHNsb3cgcGFydCwgZW5zdXJlIHNvIHZhcmlkMSBhbmQg dmFyaWQyIGFyZSB2YXJpYWJsZXMgKi8KKwkJCXZhcmlkMSA9IGlzX3NjaGVtYV92YXJpYWJsZSh2 YXJpZDEpID8gdmFyaWQxIDogSW52YWxpZE9pZDsKKwkJCXZhcmlkMiA9IGlzX3NjaGVtYV92YXJp YWJsZSh2YXJpZDIpID8gdmFyaWQyIDogSW52YWxpZE9pZDsKKworCQkJaWYgKE9pZElzVmFsaWQo dmFyaWQxKSAmJiBPaWRJc1ZhbGlkKHZhcmlkMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkJIGVycm1zZygidmFyaWFi bGUgcmVmZXJlbmNlIFwiJXNcIi5cIiVzXCIgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCQkJCQkJCQkJ CSAgbnNwbmFtZSwgdmFybmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg bG9jYXRpb24pKSk7CisJCX0KKworCQlpZiAoT2lkSXNWYWxpZCh2YXJpZDIpKQorCQl7CisJCQl2 YXJpZDEgPSB2YXJpZDI7CisJCQlmaWVsZG5hbWUgPSB2YXJuYW1lOworCQl9CisJfQorCisJaWYg KE9pZElzVmFsaWQodmFyaWQxKSkKKwl7CisJCUhlYXBUdXBsZQl0cDsKKwkJRm9ybV9wZ19jbGFz cwl2YXJ0dXA7CisKKwkJCS8qIG5vdywgdHlwZSBpbmZvIGZvciBzY2hlbWEgdmFyaWFibGUgaXMg Y29sbGVjdGVkICovCisJCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXRE YXR1bSh2YXJpZDEpKTsKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCQl7CisJCQl2YXJ0 dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHRwKTsKKworCQkJaWYgKHZhcnR1cC0+cmVs a2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQorCQkJeworCQkJCXBhcmFtID0gbWFrZU5vZGUoUGFy YW0pOworCQkJCXBhcmFtLT5wYXJhbWtpbmQgPSBQQVJBTV9TQ0hFTUFfVkFSSUFCTEU7CisJCQkJ cGFyYW0tPnBhcmFtaWQgPSB2YXJpZDE7CisKKwkJCQlpZiAodmFydHVwLT5yZWxvZnR5cGUgIT0g SW52YWxpZE9pZCkKKwkJCQl7CisJCQkJCWlmIChnZXRfdHlwdHlwZSh2YXJ0dXAtPnJlbG9mdHlw ZSkgIT0gVFlQVFlQRV9DT01QT1NJVEUpCisJCQkJCXsKKwkJCQkJCVR1cGxlRGVzYyAgIHR1cGRl c2M7CisJCQkJCQlSZWxhdGlvbiAgICByZWw7CisJCQkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRy U3RydWN0OworCisJCQkJCQkvKiBmaW5kIGZpcnN0IGZpZWxkICovCisJCQkJCQlyZWwgPSByZWxh dGlvbl9vcGVuKHR5cGVpZFR5cGVSZWxpZCh2YXJ0dXAtPnJlbHR5cGUpLCBBY2Nlc3NTaGFyZUxv Y2spOworCQkJCQkJdHVwZGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkoUmVsYXRpb25HZXREZXNj cihyZWwpKTsKKworCQkJCQkJYXR0clN0cnVjdCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgMCk7 CisKKwkJCQkJCXBhcmFtLT5wYXJhbXR5cGUgPSBhdHRyU3RydWN0LT5hdHR0eXBpZDsKKwkJCQkJ CXBhcmFtLT5wYXJhbXR5cG1vZCA9IGF0dHJTdHJ1Y3QtPmF0dHR5cG1vZDsKKworCQkJCQkJRnJl ZVR1cGxlRGVzYyh0dXBkZXNjKTsKKwkJCQkJCXJlbGF0aW9uX2Nsb3NlKHJlbCwgQWNjZXNzU2hh cmVMb2NrKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCXBhcmFtLT5wYXJhbXR5 cGUgPSB2YXJ0dXAtPnJlbG9mdHlwZTsKKwkJCQkJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IC0xOwor CQkJCQl9CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCXBhcmFtLT5wYXJhbXR5cGUgPSB2 YXJ0dXAtPnJlbHR5cGU7CisJCQkJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IC0xOworCQkJCX0KKwor CQkJCXBhcmFtLT5wYXJhbWNvbGxpZCA9IGdldF90eXBjb2xsYXRpb24ocGFyYW0tPnBhcmFtdHlw ZSk7CisJCQkJcGFyYW0tPmxvY2F0aW9uID0gbG9jYXRpb247CisJCQl9CisKKwkJCVJlbGVhc2VT eXNDYWNoZSh0cCk7CisKKwkJCWlmIChmaWVsZG5hbWUgIT0gTlVMTCAmJiBwYXJhbSAhPSBOVUxM KQorCQkJeworCQkJCVR1cGxlRGVzYwkJdHVwZGVzYzsKKwkJCQlpbnQJCWk7CisKKwkJCQl0dXBk ZXNjID0gbG9va3VwX3Jvd3R5cGVfdHVwZGVzYyhwYXJhbS0+cGFyYW10eXBlLCBwYXJhbS0+cGFy YW10eXBtb2QpOworCisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPm5hdHRzOyBpKyspCisJ CQkJeworCQkJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2Ms IGkpOworCisJCQkJCWlmIChzdHJjbXAoZmllbGRuYW1lLCBOYW1lU3RyKGF0dC0+YXR0bmFtZSkp ID09IDAgJiYKKwkJCQkJCSFhdHQtPmF0dGlzZHJvcHBlZCkKKwkJCQkJeworCQkJCQkJLyogU3Vj Y2Vzcywgc28gZ2VuZXJhdGUgYSBGaWVsZFNlbGVjdCBleHByZXNzaW9uICovCisJCQkJCQlGaWVs ZFNlbGVjdCAqZnNlbGVjdCA9IG1ha2VOb2RlKEZpZWxkU2VsZWN0KTsKKworCQkJCQkJZnNlbGVj dC0+YXJnID0gKEV4cHIgKikgcGFyYW07CisJCQkJCQlmc2VsZWN0LT5maWVsZG51bSA9IGkgKyAx OworCQkJCQkJZnNlbGVjdC0+cmVzdWx0dHlwZSA9IGF0dC0+YXR0dHlwaWQ7CisJCQkJCQlmc2Vs ZWN0LT5yZXN1bHR0eXBtb2QgPSBhdHQtPmF0dHR5cG1vZDsKKwkJCQkJCS8qIHNhdmUgYXR0cmli dXRlJ3MgY29sbGF0aW9uIGZvciBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCQkJCWZzZWxlY3QtPnJl c3VsdGNvbGxpZCA9IGF0dC0+YXR0Y29sbGF0aW9uOworCisJCQkJCQlSZWxlYXNlVHVwbGVEZXNj KHR1cGRlc2MpOworCQkJCQkJcmV0dXJuIChOb2RlICopIGZzZWxlY3Q7CisJCQkJCX0KKwkJCQl9 CisKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf Q09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgY29sdW1uIFwiJXNcIiBp biB2YXJpYWJsZSAlcyIsCisJCQkJCQkJCQkJCQkJCQl2YXJuYW1lLCBuc3BuYW1lKSwKKwkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwkJCX0KKwkJfQorCX0K KworCXJldHVybiAoTm9kZSAqKSBwYXJhbTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5j CmluZGV4IDBmZDE0ZjQzYzYuLjNhMGIwNzFmNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYwpAQCAtMTA4LDYgKzEwOCw3IEBAIHR5cGVkZWYgc3RydWN0CiAJTGlzdAkgICAqdmlld3M7 CQkJLyogQ1JFQVRFIFZJRVcgaXRlbXMgKi8KIAlMaXN0CSAgICppbmRleGVzOwkJLyogQ1JFQVRF IElOREVYIGl0ZW1zICovCiAJTGlzdAkgICAqdHJpZ2dlcnM7CQkvKiBDUkVBVEUgVFJJR0dFUiBp dGVtcyAqLworCUxpc3QJICAgKnZhcmlhYmxlczsJCS8qIENSRUFURSBWQVJJQUJMRSBpdGVtcyAq LwogCUxpc3QJICAgKmdyYW50czsJCQkvKiBHUkFOVCBpdGVtcyAqLwogfSBDcmVhdGVTY2hlbWFT dG10Q29udGV4dDsKIApAQCAtMzMwOSw2ICszMzEwLDcgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1h U3RtdChDcmVhdGVTY2hlbWFTdG10ICpzdG10KQogCWN4dC52aWV3cyA9IE5JTDsKIAljeHQuaW5k ZXhlcyA9IE5JTDsKIAljeHQudHJpZ2dlcnMgPSBOSUw7CisJY3h0LnZhcmlhYmxlcyA9IE5JTDsK IAljeHQuZ3JhbnRzID0gTklMOwogCiAJLyoKQEAgLTMzNzQsNiArMzM3NiwxNCBAQCB0cmFuc2Zv cm1DcmVhdGVTY2hlbWFTdG10KENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQpCiAJCQkJfQogCQkJCWJy ZWFrOwogCisJCQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQl7CisJCQkJCUNyZWF0 ZVNjaGVtYVZhclN0bXQgKmVscCA9IChDcmVhdGVTY2hlbWFWYXJTdG10ICopIGVsZW1lbnQ7CisK KwkJCQkJc2V0U2NoZW1hTmFtZShjeHQuc2NoZW1hbmFtZSwgJmVscC0+dmFyaWFibGUtPnNjaGVt YW5hbWUpOworCQkJCQljeHQudmFyaWFibGVzID0gbGFwcGVuZChjeHQudmFyaWFibGVzLCBlbGVt ZW50KTsKKwkJCQl9CisKIAkJCWNhc2UgVF9HcmFudFN0bXQ6CiAJCQkJY3h0LmdyYW50cyA9IGxh cHBlbmQoY3h0LmdyYW50cywgZWxlbWVudCk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMKaW5kZXggNjYyNTNmYzNkMy4uNDdhOWIyMTFkOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzMzNyw3ICszMzM3LDcgQEAgUmV3cml0ZVF1ZXJ5 KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVfZXZlbnRzKQogCQkJCQkJCQkJcnRfZW50 cnlfcmVsYXRpb24sCiAJCQkJCQkJCQlwYXJzZXRyZWUtPnJlc3VsdFJlbGF0aW9uLCBOVUxMKTsK IAkJfQotCQllbHNlIGlmIChldmVudCA9PSBDTURfREVMRVRFKQorCQllbHNlIGlmIChldmVudCA9 PSBDTURfREVMRVRFIHx8IGV2ZW50ID09IENNRF9MRVQpCiAJCXsKIAkJCS8qIE5vdGhpbmcgdG8g ZG8gaGVyZSAqLwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA2NmNjNWMzNWM2Li4zNGRkYjc5YTNkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcHF1ZXJ5LmMKQEAgLTE5Myw2ICsxOTMsMTAgQEAgUHJvY2Vzc1F1ZXJ5KFBsYW5uZWRTdG10 ICpwbGFuLAogCQkJCQkJICJERUxFVEUgIiBVSU5UNjRfRk9STUFULAogCQkJCQkJIHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwogCQkJCWJyZWFrOworCQkJY2FzZSBDTURfTEVUOgor CQkJCXNucHJpbnRmKGNvbXBsZXRpb25UYWcsIENPTVBMRVRJT05fVEFHX0JVRlNJWkUsCisJCQkJ CQkgIkxFVCAiKTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJc3RyY3B5KGNvbXBsZXRp b25UYWcsICI/Pz8iKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggZjc4ZWZkZjM1OS4u ZmE2YzgzNzIyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z Y2hlbWF2YXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o IgpAQCAtMTEyLDYgKzExMyw3IEBAIENvbW1hbmRJc1JlYWRPbmx5KFBsYW5uZWRTdG10ICpwc3Rt dCkKIAkJY2FzZSBDTURfREVMRVRFOgogCQkJcmV0dXJuIGZhbHNlOwogCQljYXNlIENNRF9VVElM SVRZOgorCQljYXNlIENNRF9MRVQ6CiAJCQkvKiBGb3Igbm93LCB0cmVhdCBhbGwgdXRpbGl0eSBj b21tYW5kcyBhcyByZWFkL3dyaXRlICovCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWRlZmF1bHQ6CkBA IC0xNzcsNiArMTc5LDcgQEAgY2hlY2tfeGFjdF9yZWFkb25seShOb2RlICpwYXJzZXRyZWUpCiAJ CWNhc2UgVF9DcmVhdGVTY2hlbWFTdG10OgogCQljYXNlIFRfQ3JlYXRlU2VxU3RtdDoKIAkJY2Fz ZSBUX0NyZWF0ZVN0bXQ6CisJCWNhc2UgVF9DcmVhdGVTY2hlbWFWYXJTdG10OgogCQljYXNlIFRf Q3JlYXRlVGFibGVBc1N0bXQ6CiAJCWNhc2UgVF9SZWZyZXNoTWF0Vmlld1N0bXQ6CiAJCWNhc2Ug VF9DcmVhdGVUYWJsZVNwYWNlU3RtdDoKQEAgLTE0NzUsNiArMTQ3OCwxMCBAQCBQcm9jZXNzVXRp bGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWFkZHJlc3MgPSBBbHRlclNlcXVlbmNl KHBzdGF0ZSwgKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWUpOwogCQkJCWJyZWFrOwogCisJCQlj YXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCQlhZGRyZXNzID0gRGVmaW5lU2NoZW1hVmFy aWFibGUocHN0YXRlLCAoQ3JlYXRlU2NoZW1hVmFyU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJy ZWFrOworCiAJCQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CiAJCQkJYWRkcmVzcyA9IEV4ZWND cmVhdGVUYWJsZUFzKChDcmVhdGVUYWJsZUFzU3RtdCAqKSBwYXJzZXRyZWUsCiAJCQkJCQkJCQkJ CXF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LApAQCAtMjA0Nyw2ICsyMDU0LDkgQEAgQWx0 ZXJPYmplY3RUeXBlQ29tbWFuZFRhZyhPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNU X1NUQVRJU1RJQ19FWFQ6CiAJCQl0YWcgPSAiQUxURVIgU1RBVElTVElDUyI7CiAJCQlicmVhazsK KwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl0YWcgPSAiQUxURVIgVkFSSUFCTEUiOworCQkJ YnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQl0YWcgPSAiPz8/IjsKIAkJCWJyZWFrOwpAQCAtMjA5Niw2 ICsyMTA2LDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0g IlNFTEVDVCI7CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9ICJMRVQi OworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVy IHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCXsKQEAgLTIy NjAsNiArMjI3NCw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNh c2UgT0JKRUNUX0lOREVYOgogCQkJCQl0YWcgPSAiRFJPUCBJTkRFWCI7CiAJCQkJCWJyZWFrOwor CQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQl0YWcgPSAiRFJPUCBWQVJJQUJMRSI7CisJ CQkJCWJyZWFrOwogCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQkJCXRhZyA9ICJEUk9QIFRZUEUi OwogCQkJCQlicmVhazsKQEAgLTI1MTQsNiArMjUzMSwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5v ZGUgKnBhcnNldHJlZSkKIAkJCXRhZyA9ICJBTFRFUiBTRVFVRU5DRSI7CiAJCQlicmVhazsKIAor CQljYXNlIFRfQ3JlYXRlU2NoZW1hVmFyU3RtdDoKKwkJCXRhZyA9ICJDUkVBVEUgVkFSSUFCTEUi OworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0RvU3RtdDoKIAkJCXRhZyA9ICJETyI7CiAJCQlicmVh azsKQEAgLTI2MzEsNiArMjY1Miw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVl KQogCQkJCWNhc2UgRElTQ0FSRF9TRVFVRU5DRVM6CiAJCQkJCXRhZyA9ICJESVNDQVJEIFNFUVVF TkNFUyI7CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQkJCXRh ZyA9ICJESVNDQVJEIFZBUklBQkxFUyI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJ CXRhZyA9ICI/Pz8iOwogCQkJfQpAQCAtMjgzNSw2ICsyODU5LDkgQEAgQ3JlYXRlQ29tbWFuZFRh ZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJCWNhc2UgQ01EX0RFTEVURToKIAkJCQkJCXRhZyA9ICJE RUxFVEUiOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX0xFVDoKKwkJCQkJCXRhZyA9ICJM RVQiOworCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgQ01EX1VUSUxJVFk6CiAJCQkJCQl0YWcgPSBD cmVhdGVDb21tYW5kVGFnKHN0bXQtPnV0aWxpdHlTdG10KTsKIAkJCQkJCWJyZWFrOwpAQCAtMjk1 Myw2ICsyOTgwLDEwIEBAIEdldENvbW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQkJ bGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCWxl diA9IExPR1NUTVRfQUxMOworCQkJYnJlYWs7CisKIAkJCS8qIHV0aWxpdHkgc3RhdGVtZW50cyAt LS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJY2FzZSBUX1RyYW5zYWN0aW9uU3Rt dDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwpAQCAtMzQwNiw2ICszNDM3LDcgQEAgR2V0Q29tbWFu ZExvZ0xldmVsKE5vZGUgKnBhcnNldHJlZSkKIAkJCQlzd2l0Y2ggKHN0bXQtPmNvbW1hbmRUeXBl KQogCQkJCXsKIAkJCQkJY2FzZSBDTURfU0VMRUNUOgorCQkJCQljYXNlIENNRF9MRVQ6CiAJCQkJ CQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCQkJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvYWNsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKaW5kZXgg MGNmYzI5N2I2NS4uZmNkNjk1ODM2YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2FjbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwpAQCAtODA4LDYgKzgwOCwx MCBAQCBhY2xkZWZhdWx0KE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQpCiAJCQl3b3Js ZF9kZWZhdWx0ID0gQUNMX1VTQUdFOwogCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRT X1RZUEU7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQl3b3JsZF9kZWZh dWx0ID0gQUNMX05PX1JJR0hUUzsKKwkJCW93bmVyX2RlZmF1bHQgPSBBQ0xfQUxMX1JJR0hUU19W QVJJQUJMRTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBvYmp0eXBlOiAlZCIsIChpbnQpIG9ianR5cGUpOwogCQkJd29ybGRfZGVmYXVsdCA9IEFD TF9OT19SSUdIVFM7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYwppbmRleCBiNThlZTNjMzg3Li5mYzVkYmM0YzllIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVz cGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhci5oIgogI2luY2x1ZGUgImNvbW1v bi9rZXl3b3Jkcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgogI2luY2x1ZGUgImZ1bmNh cGkuaCIKQEAgLTM4MSw2ICszODIsNyBAQCBzdGF0aWMgdm9pZCBnZXRfdXBkYXRlX3F1ZXJ5X3Rh cmdldGxpc3RfZGVmKFF1ZXJ5ICpxdWVyeSwgTGlzdCAqdGFyZ2V0TGlzdCwKIAkJCQkJCQkJZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQlSYW5nZVRibEVudHJ5ICpydGUpOwogc3Rh dGljIHZvaWQgZ2V0X2RlbGV0ZV9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgZ2V0X2xldF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5 LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X3V0aWxpdHlfcXVl cnlfZGVmKFF1ZXJ5ICpxdWVyeSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2 b2lkIGdldF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCSAgIFR1cGxlRGVzYyByZXN1bHREZXNjKTsKQEAgLTQ5NTIsNiArNDk1 NCwxMCBAQCBnZXRfcXVlcnlfZGVmKFF1ZXJ5ICpxdWVyeSwgU3RyaW5nSW5mbyBidWYsIExpc3Qg KnBhcmVudG5hbWVzcGFjZSwKIAkJCWdldF9kZWxldGVfcXVlcnlfZGVmKHF1ZXJ5LCAmY29udGV4 dCk7CiAJCQlicmVhazsKIAorCQljYXNlIENNRF9MRVQ6CisJCQlnZXRfbGV0X3F1ZXJ5X2RlZihx dWVyeSwgJmNvbnRleHQpOworCQkJYnJlYWs7CisKIAkJY2FzZSBDTURfTk9USElORzoKIAkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiTk9USElORyIpOwogCQkJYnJlYWs7CkBAIC02MTY5 LDYgKzYxNzUsNTggQEAgZ2V0X2luc2VydF9xdWVyeV9kZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNl X2NvbnRleHQgKmNvbnRleHQpCiAJfQogfQogCisvKiAtLS0tLS0tLS0tCisgKiBnZXRfbGV0X3F1 ZXJ5X2RlZgkJCS0gUGFyc2UgYmFjayBhbiBMRVQgcGFyc2V0cmVlCisgKiAtLS0tLS0tLS0tCisg Ki8KK3N0YXRpYyB2b2lkCitnZXRfbGV0X3F1ZXJ5X2RlZihRdWVyeSAqcXVlcnksIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCkKK3sKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNvbnRleHQtPmJ1ZjsKKwlS YW5nZVRibEVudHJ5ICpzZWxlY3RfcnRlID0gTlVMTDsKKwlSYW5nZVRibEVudHJ5ICpydGU7CisJ TGlzdENlbGwgICAqbDsKKworCS8qCisJICogSWYgaXQncyBhbiBJTlNFUlQgLi4uIFNFTEVDVCBv ciBtdWx0aS1yb3cgVkFMVUVTLCB0aGVyZSB3aWxsIGJlIGEKKwkgKiBzaW5nbGUgUlRFIGZvciB0 aGUgU0VMRUNUIG9yIFZBTFVFUy4gIFBsYWluIFZBTFVFUyBoYXMgbmVpdGhlci4KKwkgKi8KKwlm b3JlYWNoKGwsIHF1ZXJ5LT5ydGFibGUpCisJeworCQlydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBs Zmlyc3QobCk7CisKKwkJaWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkpCisJCXsKKwkJ CWlmIChzZWxlY3RfcnRlKQorCQkJCWVsb2coRVJST1IsICJ0b28gbWFueSBzdWJxdWVyeSBSVEVz IGluIElOU0VSVCIpOworCQkJc2VsZWN0X3J0ZSA9IHJ0ZTsKKwkJfQorCX0KKworCS8qCisJICog U3RhcnQgdGhlIHF1ZXJ5IHdpdGggSU5TRVJUIElOVE8gcmVsbmFtZQorCSAqLworCXJ0ZSA9IHJ0 X2ZldGNoKHF1ZXJ5LT5yZXN1bHRSZWxhdGlvbiwgcXVlcnktPnJ0YWJsZSk7CisJQXNzZXJ0KHJ0 ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOworCisJaWYgKFBSRVRUWV9JTkRFTlQoY29udGV4 dCkpCisJeworCQljb250ZXh0LT5pbmRlbnRMZXZlbCArPSBQUkVUVFlJTkRFTlRfU1REOworCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJfQorCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiTEVUICVzICIsCisJCQkJCSBnZW5lcmF0ZV9yZWxhdGlvbl9uYW1lKHJ0ZS0+cmVsaWQsIE5J TCkpOworCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgPSAiKTsKKworCWlmIChzZWxlY3RfcnRl KQorCXsKKwkJLyogQWRkIHRoZSBTRUxFQ1QgKi8KKwkJZ2V0X3F1ZXJ5X2RlZihzZWxlY3RfcnRl LT5zdWJxdWVyeSwgYnVmLCBOSUwsIE5VTEwsCisJCQkJCSAgY29udGV4dC0+cHJldHR5RmxhZ3Ms IGNvbnRleHQtPndyYXBDb2x1bW4sCisJCQkJCSAgY29udGV4dC0+aW5kZW50TGV2ZWwpOworCX0K K30KIAogLyogLS0tLS0tLS0tLQogICogZ2V0X3VwZGF0ZV9xdWVyeV9kZWYJCQktIFBhcnNlIGJh Y2sgYW4gVVBEQVRFIHBhcnNldHJlZQpAQCAtNzI0NCw2ICs3MzAyLDEzIEBAIGdldF9wYXJhbWV0 ZXIoUGFyYW0gKnBhcmFtLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJZGVwYXJzZV9uYW1l c3BhY2UgKmRwbnM7CiAJTGlzdENlbGwgICAqYW5jZXN0b3JfY2VsbDsKIAorCWlmIChwYXJhbS0+ cGFyYW1raW5kID09IFBBUkFNX1NDSEVNQV9WQVJJQUJMRSkKKwl7CisJCWFwcGVuZFN0cmluZ0lu Zm8oY29udGV4dC0+YnVmLCAiJXMiLCBnZXRfc2NoZW1hdmFyX25hbWUocGFyYW0tPnBhcmFtaWQp KTsKKworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBJZiBpdCdzIGEgUEFSQU1fRVhFQyBwYXJh bWV0ZXIsIHRyeSB0byBsb2NhdGUgdGhlIGV4cHJlc3Npb24gZnJvbSB3aGljaAogCSAqIHRoZSBw YXJhbWV0ZXIgd2FzIGNvbXB1dGVkLiAgTm90ZSB0aGF0IGZhaWxpbmcgdG8gZmluZCBhIHJlZmVy ZW50IGlzbid0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmlu L3BnX2R1bXAvY29tbW9uLmMKaW5kZXggMGE3NThmMTRiZi4uOTkyN2ZmNmRmNSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24u YwpAQCAtMzI2LDcgKzMyNiw4IEBAIGZsYWdJbmhUYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzLAogCQkvKiBTb21lIGtpbmRzIG5ldmVyIGhhdmUg cGFyZW50cyAqLwogCQlpZiAodGJsaW5mb1tpXS5yZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0Ug fHwKIAkJCXRibGluZm9baV0ucmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwKLQkJCXRibGluZm9b aV0ucmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcpCisJCQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0g UkVMS0lORF9NQVRWSUVXIHx8CisJCQl0YmxpbmZvW2ldLnJlbGtpbmQgPT0gUkVMS0lORF9WQVJJ QUJMRSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qCkBAIC00NzUsNyArNDc2LDggQEAgZmxhZ0luaEF0 dHJzKER1bXBPcHRpb25zICpkb3B0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCS8qIFNvbWUga2luZHMgbmV2ZXIgaGF2ZSBwYXJlbnRzICovCiAJCWlmICh0YmluZm8tPnJl bGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8fAogCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJ TkRfVklFVyB8fAotCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfTUFUVklFVykKKwkJCXRi aW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJCXRiaW5mby0+cmVsa2luZCA9 PSBSRUxLSU5EX1ZBUklBQkxFKQogCQkJY29udGludWU7CiAKIAkJLyogRG9uJ3QgYm90aGVyIGNv bXB1dGluZyBhbnl0aGluZyBmb3Igbm9uLXRhcmdldCB0YWJsZXMsIGVpdGhlciAqLwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IGZjMjMzYTYwOGYuLmVkMWU4NGVkMWMgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM0ODAsNyArMzQ4MCw4IEBAIF9n ZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIFRvY0VudHJ5ICp0ZSwgQXJjaGl2 ZUhhbmRsZSAqQUgpCiAJCXN0cmNtcCh0eXBlLCAiU0VSVkVSIikgPT0gMCB8fAogCQlzdHJjbXAo dHlwZSwgIlBVQkxJQ0FUSU9OIikgPT0gMCB8fAogCQlzdHJjbXAodHlwZSwgIlNVQlNDUklQVElP TiIpID09IDAgfHwKLQkJc3RyY21wKHR5cGUsICJVU0VSIE1BUFBJTkciKSA9PSAwKQorCQlzdHJj bXAodHlwZSwgIlVTRVIgTUFQUElORyIpID09IDAgfHwKKwkJc3RyY21wKHR5cGUsICJWQVJJQUJM RSIpID09IDApCiAJewogCQlhcHBlbmRQUUV4cEJ1ZmZlcihidWYsICIlcyAiLCB0eXBlKTsKIAkJ aWYgKHRlLT5uYW1lc3BhY2UgJiYgKnRlLT5uYW1lc3BhY2UpCkBAIC0zNjYxLDYgKzM2NjIsNyBA QCBfcHJpbnRUb2NFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlz RGF0YSkKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlRBQkxFIikgPT0gMCB8fAogCQkJc3RyY21wKHRl LT5kZXNjLCAiVFlQRSIpID09IDAgfHwKIAkJCXN0cmNtcCh0ZS0+ZGVzYywgIlZJRVciKSA9PSAw IHx8CisJCQlzdHJjbXAodGUtPmRlc2MsICJWQVJJQUJMRSIpID09IDAgfHwKIAkJCXN0cmNtcCh0 ZS0+ZGVzYywgIk1BVEVSSUFMSVpFRCBWSUVXIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5kZXNj LCAiU0VRVUVOQ0UiKSA9PSAwIHx8CiAJCQlzdHJjbXAodGUtPmRlc2MsICJGT1JFSUdOIFRBQkxF IikgPT0gMCB8fApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNTY2Y2JmMmNkYS4uODJmOGMxODlmOCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCkBAIC0xMzI1LDEwICsxMzI1LDExIEBAIGV4cGFuZF90YWJsZV9uYW1lX3BhdHRlcm5z KEFyY2hpdmUgKmZvdXQsCiAJCQkJCQkgICJcbiAgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf bmFtZXNwYWNlIG4iCiAJCQkJCQkgICJcbiAgICAgT04gbi5vaWQgT1BFUkFUT1IocGdfY2F0YWxv Zy49KSBjLnJlbG5hbWVzcGFjZSIKIAkJCQkJCSAgIlxuV0hFUkUgYy5yZWxraW5kIE9QRVJBVE9S KHBnX2NhdGFsb2cuPSkgQU5ZIgotCQkJCQkJICAiXG4gICAgKGFycmF5WyclYycsICclYycsICcl YycsICclYycsICclYycsICclYyddKVxuIiwKKwkJCQkJCSAgIlxuICAgIChhcnJheVsnJWMnLCAn JWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMsICVjJ10pXG4iLAogCQkJCQkJICBSRUxLSU5EX1JF TEFUSU9OLCBSRUxLSU5EX1NFUVVFTkNFLCBSRUxLSU5EX1ZJRVcsCiAJCQkJCQkgIFJFTEtJTkRf TUFUVklFVywgUkVMS0lORF9GT1JFSUdOX1RBQkxFLAotCQkJCQkJICBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFKTsKKwkJCQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwKKwkJCQkJCSAg UkVMS0lORF9WQVJJQUJMRSk7CiAJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihHZXRDb25uZWN0aW9u KGZvdXQpLCBxdWVyeSwgY2VsbC0+dmFsLCB0cnVlLAogCQkJCQkJCSAgZmFsc2UsICJuLm5zcG5h bWUiLCAiYy5yZWxuYW1lIiwgTlVMTCwKIAkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX3RhYmxlX2lz X3Zpc2libGUoYy5vaWQpIik7CkBAIC0yMjU2LDYgKzIyNTcsMTAgQEAgbWFrZVRhYmxlRGF0YUlu Zm8oRHVtcE9wdGlvbnMgKmRvcHQsIFRhYmxlSW5mbyAqdGJpbmZvLCBib29sIG9pZHMpCiAJCWRv cHQtPm5vX3VubG9nZ2VkX3RhYmxlX2RhdGEpCiAJCXJldHVybjsKIAorCS8qIERvbid0IGR1bXAg ZGF0YSBvZiB2YXJpYWJsZXMgKi8KKwlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVkFS SUFCTEUpCisJCXJldHVybjsKKwogCS8qIENoZWNrIHRoYXQgdGhlIGRhdGEgaXMgbm90IGV4cGxp Y2l0bHkgZXhjbHVkZWQgKi8KIAlpZiAoc2ltcGxlX29pZF9saXN0X21lbWJlcigmdGFibGVkYXRh X2V4Y2x1ZGVfb2lkcywKIAkJCQkJCQkgICB0YmluZm8tPmRvYmouY2F0SWQub2lkKSkKQEAgLTI0 NzcsOSArMjQ4MiwxMCBAQCBndWVzc0NvbnN0cmFpbnRJbmhlcml0YW5jZShUYWJsZUluZm8gKnRi bGluZm8sIGludCBudW1UYWJsZXMpCiAJCVRhYmxlSW5mbyAqKnBhcmVudHM7CiAJCVRhYmxlSW5m byAgKnBhcmVudDsKIAotCQkvKiBTZXF1ZW5jZXMgYW5kIHZpZXdzIG5ldmVyIGhhdmUgcGFyZW50 cyAqLworCQkvKiBTZXF1ZW5jZXMsIHZhcmlhYmxlcyBhbmQgdmlld3MgbmV2ZXIgaGF2ZSBwYXJl bnRzICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8fAotCQkJ dGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBS RUxLSU5EX1ZJRVcgfHwKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1ZBUklBQkxFKQog CQkJY29udGludWU7CiAKIAkJLyogRG9uJ3QgYm90aGVyIGNvbXB1dGluZyBhbnl0aGluZyBmb3Ig bm9uLXRhcmdldCB0YWJsZXMsIGVpdGhlciAqLwpAQCAtNTk2OCw3ICs1OTc0LDcgQEAgZ2V0VGFi bGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQkJCQkJICAiKGMub2lkID0gcGlw Lm9iam9pZCAiCiAJCQkJCQkgICJBTkQgcGlwLmNsYXNzb2lkID0gJ3BnX2NsYXNzJzo6cmVnY2xh c3MgIgogCQkJCQkJICAiQU5EIHBpcC5vYmpzdWJpZCA9IDApICIKLQkJCQkJCSAgIldIRVJFIGMu cmVsa2luZCBpbiAoJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJywgJyVjJykgIgor CQkJCQkJICAiV0hFUkUgYy5yZWxraW5kIGluICgnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMn LCAnJWMnLCAnJWMnLCAnJWMnKSAiCiAJCQkJCQkgICJPUkRFUiBCWSBjLm9pZCIsCiAJCQkJCQkg IGFjbF9zdWJxdWVyeS0+ZGF0YSwKIAkJCQkJCSAgcmFjbF9zdWJxdWVyeS0+ZGF0YSwKQEAgLTU5 ODcsNyArNTk5Myw4IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykK IAkJCQkJCSAgUkVMS0lORF9SRUxBVElPTiwgUkVMS0lORF9TRVFVRU5DRSwKIAkJCQkJCSAgUkVM S0lORF9WSUVXLCBSRUxLSU5EX0NPTVBPU0lURV9UWVBFLAogCQkJCQkJICBSRUxLSU5EX01BVFZJ RVcsIFJFTEtJTkRfRk9SRUlHTl9UQUJMRSwKLQkJCQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSk7CisJCQkJCQkgIFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCisJCQkJCQkgIFJFTEtJ TkRfVkFSSUFCTEUpOwogCiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihhY2xfc3VicXVlcnkpOwogCQlk ZXN0cm95UFFFeHBCdWZmZXIocmFjbF9zdWJxdWVyeSk7CkBAIC0xNTM3MCw2ICsxNTM3NywxMSBA QCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJ c3J2bmFtZSA9IE5VTEw7CiAJCQkJZnRvcHRpb25zID0gTlVMTDsKIAkJCQlicmVhazsKKwkJCWNh c2UgUkVMS0lORF9WQVJJQUJMRToKKwkJCQlyZWx0eXBlbmFtZSA9ICJWQVJJQUJMRSI7CisJCQkJ c3J2bmFtZSA9IE5VTEw7CisJCQkJZnRvcHRpb25zID0gTlVMTDsKKwkJCQlicmVhazsKIAkJCWRl ZmF1bHQ6CiAJCQkJcmVsdHlwZW5hbWUgPSAiVEFCTEUiOwogCQkJCXNydm5hbWUgPSBOVUxMOwpA QCAtMTUzOTEsMTIgKzE1NDAzLDI4IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBU YWJsZUluZm8gKnRiaW5mbykKIAkJCQkJCSAgcmVsdHlwZW5hbWUsCiAJCQkJCQkgIHF1YWxyZWxu YW1lKTsKIAorCQkvKgorCQkgKiBCaW5hcnkgdXBncmFkZSBvZiB2YXJpYWJsZXMgc2hvdWxkIHRv IGJlIGZpeGVkIHdpdGggc3VwcG9ydAorCQkgKiBjb21wb3NpdGUgdHlwZXMsIGFuZCBzaG91bGQg YmUgdGVzdGVkIFRvRG8KKwkJICovCisJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9W QVJJQUJMRSkKKwkJeworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgQVMiKTsKKwkJCQlpZiAo dGJpbmZvLT5yZWxvZnR5cGUgIT0gTlVMTCkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiAl cyIsCisJCQkJCQkJCQkgIHRiaW5mby0+YXR0dHlwbmFtZXNbMF0pOworCQkJCWlmICh0YmluZm8t PmF0dHJkZWZzWzBdICE9IE5VTEwgJiYgdGJpbmZvLT5hdHRyZGVmc1swXS0+YWRlZl9leHByICE9 IE5VTEwpCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgREVGQVVMVCAlcyIsCisJCQkJCQkJ CQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhwcik7CisJCX0KKwogCQkvKgogCQkgKiBB dHRhY2ggdG8gdHlwZSwgaWYgcmVsb2Z0eXBlOyBleGNlcHQgaW4gY2FzZSBvZiBhIGJpbmFyeSB1 cGdyYWRlLAogCQkgKiB3ZSBkdW1wIHRoZSB0YWJsZSBub3JtYWxseSBhbmQgYXR0YWNoIGl0IHRv IHRoZSB0eXBlIGFmdGVyd2FyZC4KIAkJICovCi0JCWlmICh0YmluZm8tPnJlbG9mdHlwZSAmJiAh ZG9wdC0+YmluYXJ5X3VwZ3JhZGUpCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIE9GICVzIiwg dGJpbmZvLT5yZWxvZnR5cGUpOworCQllbHNlIGlmICh0YmluZm8tPnJlbG9mdHlwZSAmJiAhZG9w dC0+YmluYXJ5X3VwZ3JhZGUpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIE9GICVzIiwKKwkJ CQkJCQkgIHRiaW5mby0+cmVsb2Z0eXBlKTsKIAogCQkvKgogCQkgKiBJZiB0aGUgdGFibGUgaXMg YSBwYXJ0aXRpb24sIGR1bXAgaXQgYXMgc3VjaDsgZXhjZXB0IGluIHRoZSBjYXNlIG9mCkBAIC0x NTQxOSw3ICsxNTQ0Nyw4IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRiaW5mbykKIAkJCQkJCQkgIGZtdFF1YWxpZmllZER1bXBhYmxlKHBhcmVudFJlbCkpOwog CQl9CiAKLQkJaWYgKHRiaW5mby0+cmVsa2luZCAhPSBSRUxLSU5EX01BVFZJRVcpCisJCWlmICh0 YmluZm8tPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYmCisJCQkhKHRiaW5mby0+cmVsa2lu ZCA9PSBSRUxLSU5EX1ZBUklBQkxFICYmIHRiaW5mby0+cmVsb2Z0eXBlICE9IE5VTEwpKQogCQl7 CiAJCQkvKiBEdW1wIHRoZSBhdHRyaWJ1dGVzICovCiAJCQlhY3R1YWxfYXR0cyA9IDA7CkBAIC0x NTU0NSw3ICsxNTU3NCw4IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRiaW5mbykKIAkJCQkgKiBXZSBtdXN0IGhhdmUgYSBwYXJlbnRoZXNpemVkIGF0dHJpYnV0 ZSBsaXN0LCBldmVuIHRob3VnaAogCQkJCSAqIGVtcHR5LCB3aGVuIG5vdCB1c2luZyB0aGUgT0Yg VFlQRSBvciBQQVJUSVRJT04gT0Ygc3ludGF4LgogCQkJCSAqLwotCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHEsICIgKFxuKSIpOworCQkJCWlmICh0YmluZm8tPnJlbGtpbmQgIT0gUkVMS0lORF9W QVJJQUJMRSkKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiAoXG4pIik7CiAJCQl9CiAK IAkJCWlmICh0YmluZm8tPmlzcGFydGl0aW9uICYmICFkb3B0LT5iaW5hcnlfdXBncmFkZSkKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCmluZGV4IGE0ZDZkOTI2YTguLjQzYzJmNjYyZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtODQs NyArODQsNyBAQCB0eXBlZGVmIGVudW0KIAlET19QT0xJQ1ksCiAJRE9fUFVCTElDQVRJT04sCiAJ RE9fUFVCTElDQVRJT05fUkVMLAotCURPX1NVQlNDUklQVElPTgorCURPX1NVQlNDUklQVElPTiwK IH0gRHVtcGFibGVPYmplY3RUeXBlOwogCiAvKiBjb21wb25lbnQgdHlwZXMgb2YgYW4gb2JqZWN0 IHdoaWNoIGNhbiBiZSBzZWxlY3RlZCBmb3IgZHVtcGluZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAppbmRleCAxYmVhNmFlODFkLi43N2IxNjJiMzRiIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbApAQCAtNTQwNiw2ICs1NDA2LDc1IEBAIHFyL0NSRUFURSBUUkFOU0ZPUk0gRk9SIGludGVn ZXIgTEFOR1VBR0Ugc3FsIFwoRlJPTSBTUUwgV0lUSCBGVU5DVElPTiBwZ19jYXRhbG9nCiAJCQly b2xlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKIAkJCXNlY3Rpb25fcG9zdF9kYXRhICAgICAg ICA9PiAxLCB9LCB9LAogCisJJ0NSRUFURSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlJyA9PiB7CisJ CWFsbF9ydW5zICAgICA9PiAxLAorCQljYXRjaF9hbGwgICAgPT4gJ0NSRUFURSAuLi4gY29tbWFu ZHMnLAorCQljcmVhdGVfb3JkZXIgPT4gNjEsCisJCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFZB UklBQkxFIGR1bXBfdGVzdC52YXJpYWJsZSBBUyBpbnRlZ2VyOycsCisJCXJlZ2V4cCA9PiBxci9e CisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUgQVMgaW50ZWdlcjtcRS94 bSwKKwkJbGlrZSA9PiB7CisJCQliaW5hcnlfdXBncmFkZSAgICAgICAgICA9PiAxLAorCQkJY2xl YW4gICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAgID0+ IDEsCisJCQljcmVhdGVkYiAgICAgICAgICAgICAgICA9PiAxLAorCQkJZGVmYXVsdHMgICAgICAg ICAgICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSAgICAgID0+IDEsCisJCQlleGNs dWRlX3Rlc3RfdGFibGVfZGF0YSA9PiAxLAorCQkJbm9fYmxvYnMgICAgICAgICAgICAgICAgPT4g MSwKKwkJCW5vX3ByaXZzICAgICAgICAgICAgICAgID0+IDEsCisJCQlub19vd25lciAgICAgICAg ICAgICAgICA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3Rfc2NoZW1hICAgPT4gMSwKKwkJCXBnX2R1 bXBhbGxfZGJwcml2cyAgICAgID0+IDEsCisJCQlzY2hlbWFfb25seSAgICAgICAgICAgICA9PiAx LAorCQkJc2VjdGlvbl9wcmVfZGF0YSAgICAgICAgPT4gMSwKKwkJCXRlc3Rfc2NoZW1hX3BsdXNf YmxvYnMgID0+IDEsCisJCQl3aXRoX29pZHMgICAgICAgICAgICAgICA9PiAxLCB9LAorCQl1bmxp a2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBf dGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFscyAgICAgICA9PiAxLAor CQkJcGdfZHVtcGFsbF9nbG9iYWxzX2NsZWFuID0+IDEsCisJCQlyb2xlICAgICAgICAgICAgICAg ICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICAgICAgICA9PiAxLCB9LCB9LAorCisJ J0NSRUFURSBWQVJJQUJMRSB0ZXN0X3ZhcmlhYmxlIHdpdGggZmllbGQgbGlzdCcgPT4geworCQlh bGxfcnVucyAgICAgPT4gMSwKKwkJY2F0Y2hfYWxsICAgID0+ICdDUkVBVEUgLi4uIGNvbW1hbmRz JywKKwkJY3JlYXRlX29yZGVyID0+IDYxLAorCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWQVJJ QUJMRSBkdW1wX3Rlc3QudmFyaWFibGUxIEFTIChhIGludCwgYiBudW1lcmljKDEwLDIpKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFDUkVBVEUgVkFSSUFCTEUgZHVtcF90ZXN0LnZhcmlhYmxl MSBBUyAoXEUKKwkJCVxuXHMrXFFhIGludGVnZXIsXEUKKwkJCVxuXHMrXFFiIG51bWVyaWMoMTAs MilcRQorCQkJXG5cKTsKKwkJCS94bSwKKwkJbGlrZSA9PiB7CisJCQliaW5hcnlfdXBncmFkZSAg ICAgICAgICA9PiAxLAorCQkJY2xlYW4gICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWNsZWFu X2lmX2V4aXN0cyAgICAgICAgID0+IDEsCisJCQljcmVhdGVkYiAgICAgICAgICAgICAgICA9PiAx LAorCQkJZGVmYXVsdHMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJs ZSAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGVfZGF0YSA9PiAxLAorCQkJbm9fYmxv YnMgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW5vX3ByaXZzICAgICAgICAgICAgICAgID0+IDEs CisJCQlub19vd25lciAgICAgICAgICAgICAgICA9PiAxLAorCQkJb25seV9kdW1wX3Rlc3Rfc2No ZW1hICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZGJwcml2cyAgICAgID0+IDEsCisJCQlzY2hlbWFf b25seSAgICAgICAgICAgICA9PiAxLAorCQkJc2VjdGlvbl9wcmVfZGF0YSAgICAgICAgPT4gMSwK KwkJCXRlc3Rfc2NoZW1hX3BsdXNfYmxvYnMgID0+IDEsCisJCQl3aXRoX29pZHMgICAgICAgICAg ICAgICA9PiAxLCB9LAorCQl1bmxpa2UgPT4geworCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1h ID0+IDEsCisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxf Z2xvYmFscyAgICAgICA9PiAxLAorCQkJcGdfZHVtcGFsbF9nbG9iYWxzX2NsZWFuID0+IDEsCisJ CQlyb2xlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICAg ICAgICA9PiAxLCB9LCB9LAorCisKIAknQUxURVIgVklFVyB0ZXN0X3ZpZXcgU0VUIERFRkFVTFQn ID0+IHsKIAkJYWxsX3J1bnMgICAgID0+IDEsCiAJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4u LiBjb21tYW5kcycsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jIGIvc3JjL2Jp bi9wc3FsL2NvbW1hbmQuYwppbmRleCAzNTYwMzE4NzQ5Li5hZDAwMzBjMGRkIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKQEAg LTc5NCw2ICs3OTQsNyBAQCBleGVjX2NvbW1hbmRfZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQogCQkJY2FzZSAnaSc6CiAJCQlj YXNlICdzJzoKIAkJCWNhc2UgJ0UnOgorCQkJY2FzZSAnVic6CiAJCQkJc3VjY2VzcyA9IGxpc3RU YWJsZXMoJmNtZFsxXSwgcGF0dGVybiwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlICdyJzoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j IGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggMGMzYmUxZjUwNC4uYTEyMmY2ZmNiNiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTE4MjgsNiArMTgyOCwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJG b3JlaWduIHRhYmxlIFwiJXMuJXNcIiIpLAogCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25u YW1lKTsKIAkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfVkFSSUFCTEU6CisJCQlwcmludGZQUUV4 cEJ1ZmZlcigmdGl0bGUsIF8oInNjaGVtYSB2YXJpYWJsZSBcIiVzLiVzXCIiKSwKKwkJCQkJCQkg IHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFOgogCQkJaWYgKHRhYmxlaW5mby5yZWxwZXJzaXN0ZW5jZSA9PSAndScp CiAJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCB0YWJsZSBcIiVzLiVz XCIiKSwKQEAgLTM0MDEsNiArMzQwNSw3IEBAIGxpc3REYlJvbGVTZXR0aW5ncyhjb25zdCBjaGFy ICpwYXR0ZXJuLCBjb25zdCBjaGFyICpwYXR0ZXJuMikKICAqIG0gLSBtYXRlcmlhbGl6ZWQgdmll d3MKICAqIHMgLSBzZXF1ZW5jZXMKICAqIEUgLSBmb3JlaWduIHRhYmxlIChOb3RlOiBkaWZmZXJl bnQgZnJvbSAnZicsIHRoZSByZWxraW5kIHZhbHVlKQorICogViAtIHNjaGVtYSB2YXJpYWJsZQog ICogKGFueSBvcmRlciBvZiB0aGUgYWJvdmUgaXMgZmluZSkKICAqLwogYm9vbApAQCAtMzQxMiw2 ICszNDE3LDcgQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAlib29sCQlzaG93TWF0Vmlld3Mg PSBzdHJjaHIodGFidHlwZXMsICdtJykgIT0gTlVMTDsKIAlib29sCQlzaG93U2VxID0gc3RyY2hy KHRhYnR5cGVzLCAncycpICE9IE5VTEw7CiAJYm9vbAkJc2hvd0ZvcmVpZ24gPSBzdHJjaHIodGFi dHlwZXMsICdFJykgIT0gTlVMTDsKKwlib29sCQlzaG93VmFyaWFibGVzID0gc3RyY2hyKHRhYnR5 cGVzLCAnVicpICE9IE5VTEw7CiAKIAlQUUV4cEJ1ZmZlckRhdGEgYnVmOwogCVBHcmVzdWx0ICAg KnJlczsKQEAgLTM0MTksOCArMzQyNSw4IEBAIGxpc3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlw ZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJc3Rh dGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIHRydWUs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCS8qIElmIHRhYnR5cGVzIGlzIGVtcHR5 LCB3ZSBkZWZhdWx0IHRvIFxkdHZtc0UgKGJ1dCBzZWUgYWxzbyBjb21tYW5kLmMpICovCi0JaWYg KCEoc2hvd1RhYmxlcyB8fCBzaG93SW5kZXhlcyB8fCBzaG93Vmlld3MgfHwgc2hvd01hdFZpZXdz IHx8IHNob3dTZXEgfHwgc2hvd0ZvcmVpZ24pKQotCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0g c2hvd01hdFZpZXdzID0gc2hvd1NlcSA9IHNob3dGb3JlaWduID0gdHJ1ZTsKKwlpZiAoIShzaG93 VGFibGVzIHx8IHNob3dJbmRleGVzIHx8IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hv d1NlcSB8fCBzaG93Rm9yZWlnbiB8fCBzaG93VmFyaWFibGVzKSkKKwkJc2hvd1RhYmxlcyA9IHNo b3dWaWV3cyA9IHNob3dNYXRWaWV3cyA9IHNob3dTZXEgPSBzaG93Rm9yZWlnbiA9IHNob3dWYXJp YWJsZXMgPSB0cnVlOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBAIC0zNDQxLDYgKzM0 NDcsNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQkJCQkgICIgV0hFTiAiIENwcEFzU3Ry aW5nMihSRUxLSU5EX0ZPUkVJR05fVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hFTiAi IENwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiIFRIRU4gJyVzJyIKIAkJ CQkJICAiIFdIRU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkgIiBU SEVOICclcyciCisJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfVkFSSUFCTEUp ICIgVEhFTiAnJXMnIgogCQkJCQkgICIgRU5EIGFzIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19j YXRhbG9nLnBnX2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIiVzXCIiLAogCQkJCQkgIGdl dHRleHRfbm9vcCgiU2NoZW1hIiksCkBAIC0zNDU0LDYgKzM0NjEsNyBAQCBsaXN0VGFibGVzKGNv bnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJv b2wgc2hvd1N5cwogCQkJCQkgIGdldHRleHRfbm9vcCgiZm9yZWlnbiB0YWJsZSIpLAogCQkJCQkg IGdldHRleHRfbm9vcCgidGFibGUiKSwJLyogcGFydGl0aW9uZWQgdGFibGUgKi8KIAkJCQkJICBn ZXR0ZXh0X25vb3AoImluZGV4IiksCS8qIHBhcnRpdGlvbmVkIGluZGV4ICovCisJCQkJCSAgZ2V0 dGV4dF9ub29wKCJzY2hlbWEgdmFyaWFibGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlR5cGUi KSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIikpOwogCkBAIC0zNTA3LDYgKzM1MTUsOCBA QCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi J3MnLCIpOyAvKiB3YXMgUkVMS0lORF9TUEVDSUFMICovCiAJaWYgKHNob3dGb3JlaWduKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCBDcHBBc1N0cmluZzIoUkVMS0lORF9GT1JFSUdOX1RB QkxFKSAiLCIpOworCWlmIChzaG93VmFyaWFibGVzKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm YnVmLCBDcHBBc1N0cmluZzIoUkVMS0lORF9WQVJJQUJMRSkgIiwiKTsKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICInJyIpOwkvKiBkdW1teSAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsICIpXG4iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmgKaW5kZXggYTRjYzVlZmFlMC4uYzVmMTA3ZDgxNCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmgKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmgKQEAgLTYwLDcgKzYwLDcgQEAgZXh0ZXJuIGJvb2wgbGlzdFRTVGVtcGxhdGVzKGNvbnN0IGNo YXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSk7CiAvKiBcbCAqLwogZXh0ZXJuIGJvb2wgbGlzdEFs bERicyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpOwogCi0vKiBcZHQsIFxkaSwg XGRzLCBcZFMsIGV0Yy4gKi8KKy8qIFxkdCwgXGRpLCBcZHMsIFxkUywgXGR2YXIgZXRjLiAqLwog ZXh0ZXJuIGJvb2wgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAq cGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pOwogCiAvKiBcZEQgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmluZGV4 IDcwMmU3NDJhZjQuLjJkYTUwZjcyOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMK KysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHNsYXNoVXNhZ2Uo dW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCSAqIFVzZSAicHNxbCAtLWhlbHA9Y29tbWFuZHMg fCB3YyIgdG8gY291bnQgY29ycmVjdGx5LiAgSXQncyBva2F5IHRvIGNvdW50CiAJICogdGhlIFVT RV9SRUFETElORSBsaW5lIGV2ZW4gaW4gYnVpbGRzIHdpdGhvdXQgdGhhdC4KIAkgKi8KLQlvdXRw dXQgPSBQYWdlT3V0cHV0KDEyNSwgcGFnZXIgPyAmKHBzZXQucG9wdC50b3B0KSA6IE5VTEwpOwor CW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI2LCBwYWdlciA/ICYocHNldC5wb3B0LnRvcHQpIDogTlVM TCk7CiAKIAlmcHJpbnRmKG91dHB1dCwgXygiR2VuZXJhbFxuIikpOwogCWZwcmludGYob3V0cHV0 LCBfKCIgIFxcY29weXJpZ2h0ICAgICAgICAgICAgIHNob3cgUG9zdGdyZVNRTCB1c2FnZSBhbmQg ZGlzdHJpYnV0aW9uIHRlcm1zXG4iKSk7CkBAIC0yNTcsNiArMjU3LDcgQEAgc2xhc2hVc2FnZSh1 bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkVFtTK10g W1BBVFRFUk5dICAgICAgbGlzdCBkYXRhIHR5cGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8o IiAgXFxkdVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIikpOwogCWZwcmludGYob3V0 cHV0LCBfKCIgIFxcZHZbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgdmlld3NcbiIpKTsKKwlmcHJp bnRmKG91dHB1dCwgXygiICBcXGRWW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHNjaGVtYSB2YXJp YWJsZXNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR4WytdICBbUEFUVEVSTl0gICAg ICBsaXN0IGV4dGVuc2lvbnNcbiIpKTsKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGR5ICAgICBb UEFUVEVSTl0gICAgICBsaXN0IGV2ZW50IHRyaWdnZXJzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQs IF8oIiAgXFxsWytdICAgW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhYmFzZXNcbiIpKTsKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYwppbmRleCAzNDBmZWJlZGI5Li4wZTIzOWYxNTAyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCkBA IC04MDQsNiArODA0LDIyIEBAIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlz dF9vZl9zdGF0aXN0aWNzID0gewogCU5VTEwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVy eSBRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMgPSB7CisJLyogbWluX3NlcnZlcl92ZXJzaW9u ICovCisJMCwKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfY2xhc3MgYyIsCisJLyog c2VsY29uZGl0aW9uICovCisJImMucmVsa2luZCBJTiAoJ1YnKSIsCisJLyogdmlzY29uZGl0aW9u ICovCisJInBnX2NhdGFsb2cucGdfdGFibGVfaXNfdmlzaWJsZShjLm9pZCkiLAorCS8qIG5hbWVz cGFjZSAqLworCSJjLnJlbG5hbWVzcGFjZSIsCisJLyogcmVzdWx0ICovCisJInBnX2NhdGFsb2cu cXVvdGVfaWRlbnQoYy5yZWxuYW1lKSIsCisJLyogcXVhbHJlc3VsdCAqLworCU5VTEwKK307CiAK IC8qCiAgKiBRdWVyaWVzIHRvIGdldCBsaXN0cyBvZiBuYW1lcyBvZiB2YXJpb3VzIGtpbmRzIG9m IHRoaW5ncywgcG9zc2libHkKQEAgLTEyNDgsNiArMTI2NCw3IEBAIHN0YXRpYyBjb25zdCBwZ3Nx bF90aGluZ190IHdvcmRzX2FmdGVyX2NyZWF0ZVtdID0gewogCQkJCQkJCQkJCQkJCQkJCQkgKiBU QUJMRSAuLi4gKi8KIAl7IlVTRVIiLCBRdWVyeV9mb3JfbGlzdF9vZl9yb2xlcyAiIFVOSU9OIFNF TEVDVCAnTUFQUElORyBGT1InIn0sCiAJeyJVU0VSIE1BUFBJTkcgRk9SIiwgTlVMTCwgTlVMTCwg TlVMTH0sCisJeyJWQVJJQUJMRSIsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXN9 LAogCXsiVklFVyIsIE5VTEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl92aWV3c30sCiAJe05V TEx9CQkJCQkJLyogZW5kIG9mIGxpc3QgKi8KIH07CkBAIC0xNjAzLDcgKzE2MjAsNyBAQCBwc3Fs X2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkiQUJP UlQiLCAiQUxURVIiLCAiQU5BTFlaRSIsICJCRUdJTiIsICJDQUxMIiwgIkNIRUNLUE9JTlQiLCAi Q0xPU0UiLCAiQ0xVU1RFUiIsCiAJCSJDT01NRU5UIiwgIkNPTU1JVCIsICJDT1BZIiwgIkNSRUFU RSIsICJERUFMTE9DQVRFIiwgIkRFQ0xBUkUiLAogCQkiREVMRVRFIEZST00iLCAiRElTQ0FSRCIs ICJETyIsICJEUk9QIiwgIkVORCIsICJFWEVDVVRFIiwgIkVYUExBSU4iLAotCQkiRkVUQ0giLCAi R1JBTlQiLCAiSU1QT1JUIiwgIklOU0VSVCIsICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKKwkJ IkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTEVUIiwgIkxJU1RFTiIsICJM T0FEIiwgIkxPQ0siLAogCQkiTU9WRSIsICJOT1RJRlkiLCAiUFJFUEFSRSIsCiAJCSJSRUFTU0lH TiIsICJSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIiwgIlJFSU5ERVgiLCAiUkVMRUFTRSIsCiAJ CSJSRVNFVCIsICJSRVZPS0UiLCAiUk9MTEJBQ0siLApAQCAtMTYyMiw3ICsxNjM5LDcgQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxc ZEYiLCAiXFxkRmQiLCAiXFxkRnAiLCAiXFxkRnQiLCAiXFxkZyIsICJcXGRpIiwgIlxcZGwiLCAi XFxkTCIsCiAJCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwgIlxcZHAiLAogCQkiXFxk cmRzIiwgIlxcZFJzIiwgIlxcZFJwIiwgIlxcZHMiLCAiXFxkUyIsCi0JCSJcXGR0IiwgIlxcZFQi LCAiXFxkdiIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsCisJCSJcXGR0IiwgIlxcZFQiLCAiXFxk diIsICJcXGR1IiwgIlxcZHgiLCAiXFxkeSIsICJcXGR2YXIiLAogCQkiXFxlIiwgIlxcZWNobyIs ICJcXGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJCSJcXGVuZGlmIiwg IlxcZXJydmVyYm9zZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0yODMzLDYgKzI4NTAsMTQgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAll bHNlIGlmIChNYXRjaGVzNCgiQ1JFQVRFIiwgIlJPTEV8VVNFUnxHUk9VUCIsIE1hdGNoQW55LCAi SU4iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiR1JPVVAiLCAiUk9MRSIpOwogCisvKiBDUkVB VEUgVkFSSUFCTEUgLS0tIGlzIGFsbG93ZWQgaW5zaWRlIENSRUFURSBTQ0hFTUEsIHNvIHVzZSBU YWlsTWF0Y2hlcyAqLworCS8qIENvbXBsZXRlIENSRUFURSBWQVJJQUJMRSA8bmFtZT4gd2l0aCBB UyAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hB bnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCJBUyIpOworCS8qIENvbXBsZXRlIENSRUFURSBW QVJJQUJMRSA8bmFtZT4gd2l0aCBBUyB0eXBlcyovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJD UkVBVEUiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSwgIkFTIikpCisJCUNPTVBMRVRFX1dJVEhfU0NI RU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGF0eXBlcywgTlVMTCk7CisKIC8qIENSRUFU RSBWSUVXIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1h dGNoZXMgKi8KIAkvKiBDb21wbGV0ZSBDUkVBVEUgVklFVyA8bmFtZT4gd2l0aCBBUyAqLwogCWVs c2UgaWYgKFRhaWxNYXRjaGVzMygiQ1JFQVRFIiwgIlZJRVciLCBNYXRjaEFueSkpCkBAIC0yOTg4 LDYgKzMwMTMsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFy dCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNSgiRFJPUCIsICJSVUxFIiwgTWF0Y2hBbnks ICJPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiQ0FTQ0FERSIsICJSRVNU UklDVCIpOwogCisJLyogRFJPUCBWQVJJQUJMRSAqLworCWVsc2UgaWYgKE1hdGNoZXMyKCJEUk9Q IiwgIlZBUklBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9s aXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJZWxzZSBpZiAoTWF0Y2hlczMoIkRST1AiLCAiVkFS SUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkNBU0NBREUiLCAiUkVT VFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2UgaWYgKE1hdGNoZXMxKCJFWEVDVVRFIikp CiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfcHJlcGFyZWRfc3RhdGVt ZW50cyk7CkBAIC0yOTk4LDE0ICszMDI5LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICogQ29tcGxldGUgRVhQTEFJTiBbQU5BTFla RV0gW1ZFUkJPU0VdIHdpdGggbGlzdCBvZiBFWFBMQUlOLWFibGUgY29tbWFuZHMKIAkgKi8KIAll bHNlIGlmIChNYXRjaGVzMSgiRVhQTEFJTiIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxF Q1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCi0JCQkJCQkJIkFO QUxZWkUiLCAiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q4KCJTRUxFQ1QiLCAiSU5T RVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIkFOQUxZWkUiLCAi VkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRjaGVzMigiRVhQTEFJTiIsICJBTkFMWVpF IikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwg IlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiVkVSQk9TRSIpOworCQlDT01QTEVURV9XSVRI X0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFSRSIs CisJCQkJCQkJIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxzZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4i LCAiVkVSQk9TRSIpIHx8CiAJCQkgTWF0Y2hlczMoIkVYUExBSU4iLCAiQU5BTFlaRSIsICJWRVJC T1NFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRF IiwgIlVQREFURSIsICJERUNMQVJFIik7CisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVDVCIs ICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwgIkxFVCIpOwogCiAvKiBG RVRDSCAmJiBNT1ZFICovCiAJLyogQ29tcGxldGUgRkVUQ0ggd2l0aCBvbmUgb2YgRk9SV0FSRCwg QkFDS1dBUkQsIFJFTEFUSVZFICovCkBAIC0zMTE0LDYgKzMxNDUsNyBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJCQkJCQkJICAgIiBV TklPTiBTRUxFQ1QgJ0FMTCBST1VUSU5FUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ0FMTCBTRVFVRU5DRVMgSU4gU0NIRU1BJyIKIAkJCQkJCQkJCSAgICIgVU5JT04g U0VMRUNUICdBTEwgVEFCTEVTIElOIFNDSEVNQSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1Qg J0RBVEFCQVNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdET01BSU4nIgogCQkJCQkJ CQkJICAgIiBVTklPTiBTRUxFQ1QgJ0ZPUkVJR04gREFUQSBXUkFQUEVSJyIKQEAgLTMxMjcsMTQg KzMxNTksMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwg aW50IGVuZCkKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdTRVFVRU5DRSciCiAJCQkJCQkJ CQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEUnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1Qg J1RBQkxFU1BBQ0UnIgotCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RZUEUnIik7CisJCQkJ CQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciCisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVD VCAnVkFSSUFCTEUnIik7CiAJfQogCWVsc2UgaWYgKFRhaWxNYXRjaGVzNCgiR1JBTlR8UkVWT0tF IiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNSgiRlVOQ1RJ T05TIElOIFNDSEVNQSIsCisJCUNPTVBMRVRFX1dJVEhfTElTVDYoIkZVTkNUSU9OUyBJTiBTQ0hF TUEiLAogCQkJCQkJCSJQUk9DRURVUkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlJPVVRJTkVTIElO IFNDSEVNQSIsCiAJCQkJCQkJIlNFUVVFTkNFUyBJTiBTQ0hFTUEiLAotCQkJCQkJCSJUQUJMRVMg SU4gU0NIRU1BIik7CisJCQkJCQkJIlRBQkxFUyBJTiBTQ0hFTUEiLAorCQkJCQkJCSJWQVJJQUJM RVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBN YXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09NUExFVEVfV0lUSF9MSVNUMigiREFUQSBX UkFQUEVSIiwgIlNFUlZFUiIpOwogCkBAIC0zMTY0LDYgKzMxOTgsOCBAQCBwc3FsX2NvbXBsZXRp b24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2VxdWVuY2VzLCBOVUxMKTsKIAkJZWxz ZSBpZiAoVGFpbE1hdGNoZXMxKCJUQUJMRSIpKQogCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdHN2bWYsIE5VTEwpOworCQllbHNlIGlmIChUYWlsTWF0Y2hl czEoIlZBUklBQkxFIikpCisJCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3Jf bGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRBQkxF U1BBQ0UiKSkKIAkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFibGVz cGFjZXMpOwogCQllbHNlIGlmIChUYWlsTWF0Y2hlczEoIlRZUEUiKSkKQEAgLTMzMjAsNyArMzM1 Niw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBl bmQpCiAKIC8qIFBSRVBBUkUgeHggQVMgKi8KIAllbHNlIGlmIChNYXRjaGVzMygiUFJFUEFSRSIs IE1hdGNoQW55LCAiQVMiKSkKLQkJQ09NUExFVEVfV0lUSF9MSVNUNCgiU0VMRUNUIiwgIlVQREFU RSIsICJJTlNFUlQiLCAiREVMRVRFIEZST00iKTsKKwkJQ09NUExFVEVfV0lUSF9MSVNUNSgiU0VM RUNUIiwgIlVQREFURSIsICJJTlNFUlQiLCAiREVMRVRFIEZST00iLCAiTEVUIik7CiAKIC8qCiAg KiBQUkVQQVJFIFRSQU5TQUNUSU9OIGlzIG1pc3Npbmcgb24gcHVycG9zZS4gSXQncyBpbnRlbmRl ZCBmb3IgdHJhbnNhY3Rpb24KQEAgLTM1MzksNiArMzU3NSwxNCBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCWVsc2UgaWYgKFRhaWxNYXRj aGVzNCgiVVBEQVRFIiwgTWF0Y2hBbnksICJTRVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJ VEhfQ09OU1QoIj0iKTsKIAorLyogTEVUIC0tLSBjYW4gYmUgaW5zaWRlIEVYUExBSU4sIFBSRVBB UkUgZXRjICovCisJLyogSWYgcHJldi4gd29yZCBpcyBMRVQgc3VnZ2VzdCBhIGxpc3Qgb2YgdmFy aWFibGVzICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMxKCJMRVQiKSkKKwkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKKwkvKiBD b21wbGV0ZSBMRVQgPHZhcmlhYmxlPiB3aXRoICI9IiAqLworCWVsc2UgaWYgKFRhaWxNYXRjaGVz MigiTEVUIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0NPTlNUKCI9Iik7CisKIC8qIFVT RVIgTUFQUElORyAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJBTFRFUnxDUkVBVEV8RFJPUCIsICJV U0VSIiwgIk1BUFBJTkciKSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgiRk9SIik7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NsYXNzLmgKaW5kZXggMDFjZjU5ZTdhMy4uOGM1ZTdiNWE1MyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf Y2xhc3MuaApAQCAtMTY3LDYgKzE2Nyw3IEBAIERFU0NSKCIiKTsKICNkZWZpbmUJCSAgUkVMS0lO RF9GT1JFSUdOX1RBQkxFICAgJ2YnCS8qIGZvcmVpZ24gdGFibGUgKi8KICNkZWZpbmUJCSAgUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSAncCcgLyogcGFydGl0aW9uZWQgdGFibGUgKi8KICNkZWZp bmUJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCAnSScgLyogcGFydGl0aW9uZWQgaW5kZXgg Ki8KKyNkZWZpbmUJCSAgUkVMS0lORF9WQVJJQUJMRQkJICAnVicJLyogc2NoZW1hIHZhcmlhYmxl ICovCiAKICNkZWZpbmUJCSAgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UCSdwJyAvKiByZWd1bGFy IHRhYmxlICovCiAjZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VECSd1JyAvKiB1bmxv Z2dlZCBwZXJtYW5lbnQgdGFibGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfZGVmYXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaApp bmRleCAxMWIzMDYwMzdkLi4xMzIzMmQ3YTQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19kZWZhdWx0 X2FjbC5oCkBAIC03MSw1ICs3MSw2IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfZGVmYXVsdF9hY2wg KkZvcm1fcGdfZGVmYXVsdF9hY2w7CiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElPTgkJJ2YnIC8q IGZ1bmN0aW9uICovCiAjZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5cGUgKi8KICNk ZWZpbmUgREVGQUNMT0JKX05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLworI2RlZmluZSBE RUZBQ0xPQkpfVkFSSUFCTEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJCQkJCQkJLyog UEdfREVGQVVMVF9BQ0xfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaAppbmRleCAwZmRiNDJmNjM5Li5h YWQwOWFmM2M0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuaApAQCAtNTU3Myw2ICs1NTczLDE2IEBAIERF U0NSKCJsaXN0IG9mIGZpbGVzIGluIHRoZSBXQUwgZGlyZWN0b3J5Iik7CiBEQVRBKGluc2VydCBP SUQgPSA1MDI4ICggc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uIFBHTlNQIFBHVUlEIDEyIDEgMCAy Mjc2IDAgZiBmIGYgZiBmIGkgcyA0IDAgMTYgIjI2IDIzIDIzIDIyNzYiIF9udWxsXyAie2ksaSxp LHZ9IiBfbnVsbF8gX251bGxfIF9udWxsXyBzYXRpc2ZpZXNfaGFzaF9wYXJ0aXRpb24gX251bGxf IF9udWxsXyBfbnVsbF8gKSk7CiBERVNDUigiaGFzaCBwYXJ0aXRpb24gQ0hFQ0sgY29uc3RyYWlu dCIpOwogCisvKiBzY2hlbWEgdmFyaWFibGVzIGZ1bmN0aW9uIGludGVyZmFjZSAqLworREFUQShp bnNlcnQgT0lEID0gNjEyMiAoIGdldF9zY2hlbWFfdmFyaWFibGUgUEdOU1AgUEdVSUQgMTIgMSAw IDAgMCBmIGYgZiBmIGYgdiByIDIgMCAyMjgzICIyMjA1IDIyODMiIF9udWxsXyBfbnVsbF8gX251 bGxfIF9udWxsXyBfbnVsbF8gZ2V0X3NjaGVtYV92YXJpYWJsZSBfbnVsbF8gX251bGxfIF9udWxs XyApKTsKK0RFU0NSKCJyZXR1cm5zIHZhbHVlIG9mIHNjaGVtYSB2YXJpYWJsZSIpOworREFUQShp bnNlcnQgT0lEID0gNjEyMyAoIHNldF9zY2hlbWFfdmFyaWFibGUgUEdOU1AgUEdVSUQgMTIgMSAw IDAgMCBmIGYgZiBmIGYgdiByIDIgMCAyMjc4ICIyMjA1IDIyODMiIF9udWxsXyBfbnVsbF8gX251 bGxfIF9udWxsXyBfbnVsbF8gc2V0X3NjaGVtYV92YXJpYWJsZSBfbnVsbF8gX251bGxfIF9udWxs XyApKTsKK0RFU0NSKCJzZXQgdmFsdWUgb2Ygc2NoZW1hIHZhcmlhYmxlIik7CitEQVRBKGluc2Vy dCBPSUQgPSA2MTI0ICggZ2V0X3NjaGVtYV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAgMCAw IGYgZiBmIGYgZiB2IHIgMyAwIDIyODMgIjIyMDUgMTkgMjI4MyIgX251bGxfIF9udWxsXyBfbnVs bF8gX251bGxfIF9udWxsXyBnZXRfc2NoZW1hX3ZhcmlhYmxlX2ZpZWxkIF9udWxsXyBfbnVsbF8g X251bGxfICkpOworREVTQ1IoInJldHVybnMgdmFsdWUgZmllbGQgb2Ygc2NoZW1hIHZhcmlhYmxl IG9mIGNvbXBvc2l0ZSB0eXBlIik7CitEQVRBKGluc2VydCBPSUQgPSA2MTI1ICggc2V0X3NjaGVt YV92YXJpYWJsZSBQR05TUCBQR1VJRCAxMiAxIDAgMCAwIGYgZiBmIGYgZiB2IHIgMyAwIDIyNzgg IjIyMDUgMTkgMjI4MyIgX251bGxfIF9udWxsXyBfbnVsbF8gX251bGxfIF9udWxsXyBzZXRfc2No ZW1hX3ZhcmlhYmxlX2ZpZWxkIF9udWxsXyBfbnVsbF8gX251bGxfICkpOworREVTQ1IoInNldCB2 YWx1ZSBvZiBmaWVsZCBvZiBzY2hlbWEgdmFyaWFibGUgb2YgY29tcG9zaXRlIHR5cGUiKTsKKwog LyoKICAqIFN5bWJvbGljIHZhbHVlcyBmb3IgcHJva2luZCBjb2x1bW4KICAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zY2hlbWF2YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mZjA5 ODZkOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFy LmgKQEAgLTAsMCArMSwzNiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2NoZW1hdmFy LmgKKyAqCSAgcHJvdG90eXBlcyBmb3Igc2NoZW1hdmFyLmMuCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYXZhci5o CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgU0NIRU1BVkFSX0gKKyNkZWZp bmUgU0NIRU1BVkFSX0gKKworI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2lu Y2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5o IgorCitleHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRl ICpwc3RhdGUsIENyZWF0ZVNjaGVtYVZhclN0bXQgKnZhcik7CisKK2V4dGVybiB2b2lkIFJlc2V0 U2NoZW1hVmFyaWFibGVzQ2FjaGUodm9pZCk7CisKK2V4dGVybiBjaGFyICpnZXRfc2NoZW1hdmFy X25hbWUoT2lkIHZhcmlkKTsKKworZXh0ZXJuIHZvaWQgU2V0U2NoZW1hVmFyaWFibGUoT2lkIHZh cmlkLCBEYXR1bSB2YWx1ZSwgYm9vbCBpc051bGwsIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9kLCBp bnQxNiB0eXBsZW4sIGJvb2wgdHlwYnl2YWwpOworZXh0ZXJuIERhdHVtIEdldFNjaGVtYVZhcmlh YmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50 MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxl U2VjdXJlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNOdWxsLCBPaWQgdHlwaWQsIGlu dDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4dGVybiBEYXR1bSBH ZXRTY2hlbWFWYXJpYWJsZVNlY3VyZShPaWQgdmFyaWQsIGJvb2wgKmlzTnVsbCwgT2lkIHR5cGlk LCBpbnQzMiB0eXBtb2QsIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CisKK2V4dGVybiB2 b2lkIFNldFNjaGVtYVZhcmlhYmxlRmllbGQoT2lkIHZhcmlkLCBjb25zdCBjaGFyICpmaWVsZG5h bWUsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QsIGlu dDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gRGF0dW0gR2V0U2NoZW1hVmFyaWFi bGVGaWVsZChPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSwgYm9vbCAqaXNOdWxsLCBP aWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBib29sIHR5cGJ5dmFsKTsKK2V4 dGVybiB2b2lkIFNldFNjaGVtYVZhcmlhYmxlRmllbGRTZWN1cmUoT2lkIHZhcmlkLCBjb25zdCBj aGFyICpmaWVsZG5hbWUsIERhdHVtIHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIGludDE2IHR5cGxlbiwgYm9vbCB0eXBieXZhbCk7CitleHRlcm4gRGF0dW0gR2V0 U2NoZW1hVmFyaWFibGVGaWVsZFNlY3VyZShPaWQgdmFyaWQsIGNvbnN0IGNoYXIgKmZpZWxkbmFt ZSwgYm9vbCAqaXNOdWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgaW50MTYgdHlwbGVuLCBi b29sIHR5cGJ5dmFsKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggMGNhYjQzMWY2NS4uM2I0M2JhNDhlNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjRXhwci5oCkBAIC0xMzgsNiArMTM4LDcgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFs T3AKIAlFRU9QX1BBUkFNX0VYRUMsCiAJRUVPUF9QQVJBTV9FWFRFUk4sCiAJRUVPUF9QQVJBTV9D QUxMQkFDSywKKwlFRU9QX1BBUkFNX1NDSEVNQV9WQVJJQUJMRSwKIAogCS8qIHJldHVybiBDYXNl VGVzdEV4cHIgdmFsdWUgKi8KIAlFRU9QX0NBU0VfVEVTVFZBTCwKQEAgLTM0MywxMSArMzQ0LDE0 IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJVHVwbGVEZXNjCWFyZ2Rlc2M7CiAJ CX0JCQludWxsdGVzdF9yb3c7CiAKLQkJLyogZm9yIEVFT1BfUEFSQU1fRVhFQy9FWFRFUk4gKi8K KwkJLyogZm9yIEVFT1BfUEFSQU1fRVhFQy9FWFRFUk4vVkFSSUFCTEUgKi8KIAkJc3RydWN0CiAJ CXsKLQkJCWludAkJCXBhcmFtaWQ7CS8qIG51bWVyaWMgSUQgZm9yIHBhcmFtZXRlciAqLwotCQkJ T2lkCQkJcGFyYW10eXBlOwkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJCWlu dAkJCXBhcmFtaWQ7CQkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0ZXIgKi8KKwkJCU9pZAkJCXBh cmFtdHlwZTsJCS8qIE9JRCBvZiBwYXJhbWV0ZXIncyBkYXRhdHlwZSAqLworCQkJaW50MzIJCXBh cmFtdHlwbW9kOwkvKiB0eXBtb2Qgb2YgcGFyYW0gKG5vdCB1c2VkIHlldCkgKi8KKwkJCWludDE2 CQlwYXJhbXR5cGxlbjsJLyogZXhwZWN0ZWQgbGVuZ3RoICovCisJCQlib29sCQlwYXJhbXR5cGJ5 dmFsOwkvKiBpcyBwYXNzZWQgYnkgdmFsdWUgKi8KIAkJfQkJCXBhcmFtOwogCiAJCS8qIGZvciBF RU9QX1BBUkFNX0NBTExCQUNLICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA3NGIwOTRhOWMzLi4yZjQ5ODYw OTlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKQEAgLTM0NCw2ICszNDQsNyBAQCB0eXBlZGVmIGVudW0gTm9kZVRh ZwogCVRfQ3JlYXRlVGFibGVBc1N0bXQsCiAJVF9DcmVhdGVTZXFTdG10LAogCVRfQWx0ZXJTZXFT dG10LAorCVRfQ3JlYXRlU2NoZW1hVmFyU3RtdCwKIAlUX1ZhcmlhYmxlU2V0U3RtdCwKIAlUX1Zh cmlhYmxlU2hvd1N0bXQsCiAJVF9EaXNjYXJkU3RtdCwKQEAgLTQxNSw2ICs0MTYsNyBAQCB0eXBl ZGVmIGVudW0gTm9kZVRhZwogCVRfQ3JlYXRlU3RhdHNTdG10LAogCVRfQWx0ZXJDb2xsYXRpb25T dG10LAogCVRfQ2FsbFN0bXQsCisJVF9MZXRTdG10LAogCiAJLyoKIAkgKiBUQUdTIEZPUiBQQVJT RSBUUkVFIE5PREVTIChwYXJzZW5vZGVzLmgpCkBAIC02NTcsNiArNjU5LDcgQEAgdHlwZWRlZiBl bnVtIENtZFR5cGUKIAlDTURfVVBEQVRFLAkJCQkJLyogdXBkYXRlIHN0bXQgKi8KIAlDTURfSU5T RVJULAkJCQkJLyogaW5zZXJ0IHN0bXQgKi8KIAlDTURfREVMRVRFLAorCUNNRF9MRVQsCiAJQ01E X1VUSUxJVFksCQkJCS8qIGNtZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZhY3V1bSwK IAkJCQkJCQkJICogZXRjLiAqLwogCUNNRF9OT1RISU5HCQkJCQkvKiBkdW1teSBjb21tYW5kIGZv ciBpbnN0ZWFkIG5vdGhpbmcgcnVsZXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmNjY4Y2Jh ZDM0Li5jM2IwMGIwMmE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNTAzLDYgKzE1MDMs MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogCVdpdGhDbGF1c2UgKndpdGhDbGF1c2U7 CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCit0eXBlZGVmIHN0cnVjdCBMZXRT dG10Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlSYW5nZVZhciAgICp2YXJpYWJsZTsJCS8qIHJlbGF0 aW9uIHRvIGluc2VydCBpbnRvICovCisJTm9kZQkgICAqc2VsZWN0U3RtdDsJCS8qIHRoZSBzb3Vy Y2UgU0VMRUNUL1ZBTFVFUywgb3IgTlVMTCAqLworfSBMZXRTdG10OworCisKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlTZWxlY3QgU3RhdGVtZW50CiAgKgpAQCAtMTY4MCw2ICsxNjg4 LDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1RfVFNURU1QTEFURSwKIAlPQkpF Q1RfVFlQRSwKIAlPQkpFQ1RfVVNFUl9NQVBQSU5HLAorCU9CSkVDVF9WQVJJQUJMRSwKIAlPQkpF Q1RfVklFVwogfSBPYmplY3RUeXBlOwogCkBAIC0yNDkyLDYgKzI1MDEsMjAgQEAgdHlwZWRlZiBz dHJ1Y3QgQWx0ZXJTZXFTdG10CiAJYm9vbAkJbWlzc2luZ19vazsJCS8qIHNraXAgZXJyb3IgaWYg YSByb2xlIGlzIG1pc3Npbmc/ICovCiB9IEFsdGVyU2VxU3RtdDsKIAorLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoJCUNyZWF0ZSBWQVJJQUJMRSBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU2NoZW1hVmFyU3RtdAorewor CU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdmFyaWFibGU7CQkvKiB0aGUgdmFyaWFibGUg dG8gY3JlYXRlICovCisJVHlwZU5hbWUgICAqdHlwZU5hbWU7CQkvKiB0aGUgc2NhbGFyIHZhcmlh YmxlIHR5cGUgKi8KKwlOb2RlCSAgICpkZWZleHByOwkJLyogZGVmYXVsdCBleHByZXNzaW9uICov CisJTGlzdAkgICAqZmllbGRzOwkJCS8qIHRoZSBmaWVsZHMgb2YgY29tcG9zaXRlIHZhcmlhYmxl IHR5cGUgKi8KKwlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYgaXQg YWxyZWFkeSBleGlzdHM/ICovCit9IENyZWF0ZVNjaGVtYVZhclN0bXQ7CisKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUge0FnZ3JlZ2F0ZXxPcGVyYXRvcnxUeXBlfSBTdGF0 ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMjMsNyArMzI0Niw4IEBAIHR5 cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJU0NBUkRfQUxMLAogCURJU0NBUkRfUExBTlMsCiAJ RElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FSRF9URU1QCisJRElTQ0FSRF9URU1QLAorCURJU0NB UkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0cnVjdCBEaXNjYXJkU3Rt dApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCAxYjRiMGQ3NWFmLi5iMzY2NDcxOTQwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaApAQCAtMjI5LDEzICsyMjksMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3QK ICAqCQkJCW9mIHRoZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGluaydzIHN1Ykxp bmtJZCwgYW5kCiAgKgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0aGUgY29sdW1u IG51bWJlci4gIChUaGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29udmVydGVkIHRv IFBBUkFNX0VYRUMgZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fU0NIRU1BX1ZBUklB QkxFOiAgVGhlIHBhcmFtZXRlciBpcyBhIGFjY2VzcyB0byBzY2hlbWEgdmFyaWFibGUKKyAqCQkJ CXBhcmFtaWQgaG9sZHMgdmFyaWQuCiAgKi8KIHR5cGVkZWYgZW51bSBQYXJhbUtpbmQKIHsKIAlQ QVJBTV9FWFRFUk4sCiAJUEFSQU1fRVhFQywKIAlQQVJBTV9TVUJMSU5LLAotCVBBUkFNX01VTFRJ RVhQUgorCVBBUkFNX01VTFRJRVhQUiwKKwlQQVJBTV9TQ0hFTUFfVkFSSUFCTEUKIH0gUGFyYW1L aW5kOwogCiB0eXBlZGVmIHN0cnVjdCBQYXJhbQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IGNmMzIxOTdi YzMuLmRiMTFlMDg3YzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBQR19L RVlXT1JEKCJsZWFkaW5nIiwgTEVBRElORywgUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQo ImxlYWtwcm9vZiIsIExFQUtQUk9PRiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi bGVhc3QiLCBMRUFTVCwgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlZnQiLCBMRUZU LCBUWVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgibGV0IiwgTEVULCBVTlJFU0VS VkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZXZlbCIsIExFVkVMLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJsaWtlIiwgTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKIFBH X0tFWVdPUkQoImxpbWl0IiwgTElNSVQsIFJFU0VSVkVEX0tFWVdPUkQpCkBAIC00MzMsNiArNDM0 LDggQEAgUEdfS0VZV09SRCgidmFsaWRhdG9yIiwgVkFMSURBVE9SLCBVTlJFU0VSVkVEX0tFWVdP UkQpCiBQR19LRVlXT1JEKCJ2YWx1ZSIsIFZBTFVFX1AsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBH X0tFWVdPUkQoInZhbHVlcyIsIFZBTFVFUywgQ09MX05BTUVfS0VZV09SRCkKIFBHX0tFWVdPUkQo InZhcmNoYXIiLCBWQVJDSEFSLCBDT0xfTkFNRV9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFi bGUiLCBWQVJJQUJMRSwgVU5SRVNFUlZFRF9LRVlXT1JEKQorUEdfS0VZV09SRCgidmFyaWFibGVz IiwgVkFSSUFCTEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJpYWRpYyIs IFZBUklBRElDLCBSRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFyeWluZyIsIFZBUllJ TkcsIFVOUkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJCT1NFLCBU WVBFX0ZVTkNfTkFNRV9LRVlXT1JEKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX25vZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggMDIzMDU0 MzgxMC4uZDI1YzA2MTA4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC0xMzUsNiArMTM1 LDggQEAgdHlwZWRlZiBOb2RlICooKkNvZXJjZVBhcmFtSG9vaykgKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgUGFyYW0gKnBhcmFtLAogICogdG8gcHJvY2VzcyB0aGVtIGxpa2UgVVBEQVRFLiAgKE5vdGUg dGhpcyBjYW4gY2hhbmdlIGludHJhLXN0YXRlbWVudCwgZm9yCiAgKiBjYXNlcyBsaWtlIElOU0VS VCBPTiBDT05GTElDVCBVUERBVEUuKQogICoKKyAqIHBfaXNfbGV0OiB0cnVlIHRvIHByb2Nlc3Mg YXNzaWdubWVudCBleHByZXNzaW9ucyBsaWtlIExFVC4KKyAqCiAgKiBwX3dpbmRvd2RlZnM6IGxp c3Qgb2YgV2luZG93RGVmcyByZXByZXNlbnRpbmcgV0lORE9XIGFuZCBPVkVSIGNsYXVzZXMuCiAg KiBXZSBjb2xsZWN0IHRoZXNlIHdoaWxlIHRyYW5zZm9ybWluZyBleHByZXNzaW9ucyBhbmQgdGhl biB0cmFuc2Zvcm0gdGhlbQogICogYWZ0ZXJ3YXJkcyAoc28gdGhhdCBhbnkgcmVzanVuayB0bGlz dCBpdGVtcyBuZWVkZWQgZm9yIHRoZSBzb3J0L2dyb3VwCkBAIC0xODQsNiArMTg2LDcgQEAgc3Ry dWN0IFBhcnNlU3RhdGUKIAlSZWxhdGlvbglwX3RhcmdldF9yZWxhdGlvbjsJLyogSU5TRVJUL1VQ REFURS9ERUxFVEUgdGFyZ2V0IHJlbCAqLwogCVJhbmdlVGJsRW50cnkgKnBfdGFyZ2V0X3Jhbmdl dGJsZW50cnk7CS8qIHRhcmdldCByZWwncyBSVEUgKi8KIAlib29sCQlwX2lzX2luc2VydDsJLyog cHJvY2VzcyBhc3NpZ25tZW50IGxpa2UgSU5TRVJUIG5vdCBVUERBVEUgKi8KKwlib29sCQlwX2lz X2xldDsJCS8qIHByb2Nlc3MgYXNzaWdubWVudCBMRVQgc3RtdCAqLwogCUxpc3QJICAgKnBfd2lu ZG93ZGVmczsJLyogcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB3aW5kb3cgY2xhdXNlcyAqLwogCVBh cnNlRXhwcktpbmQgcF9leHByX2tpbmQ7CS8qIHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlJ3Jl IHBhcnNpbmcgKi8KIAlpbnQJCQlwX25leHRfcmVzbm87CS8qIG5leHQgdGFyZ2V0bGlzdCByZXNu byB0byBhc3NpZ24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9yZWxh dGlvbi5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKaW5kZXggYjk3OTJh Y2RhZS4uYzU0MjYzZDljYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgKQEAgLTEy OSw0ICsxMjksNiBAQCBleHRlcm4gT2lkCWF0dG51bVR5cGVJZChSZWxhdGlvbiByZCwgaW50IGF0 dGlkKTsKIGV4dGVybiBPaWQJYXR0bnVtQ29sbGF0aW9uSWQoUmVsYXRpb24gcmQsIGludCBhdHRp ZCk7CiBleHRlcm4gYm9vbCBpc1F1ZXJ5VXNpbmdUZW1wUmVsYXRpb24oUXVlcnkgKnF1ZXJ5KTsK IAorZXh0ZXJuIE5vZGUgKnRvU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjaGFy ICpuc3BuYW1lLCBjaGFyICp2YXJuYW1lLCBjaGFyICpmaWVsZG5hbWUsIGludCBsb2NhdGlvbik7 CisKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9SRUxBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9hY2wuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IGY0ZDRi ZThkMGQuLmQwNzM3YTllNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCkBAIC0xNjYsNiArMTY2LDcgQEAgdHlwZWRlZiBB cnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xfVVNBR0V8 QUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNMX0NSRUFU RSkKICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfVFlQRQkJCShBQ0xfVVNBR0UpCisjZGVmaW5lIEFD TF9BTExfUklHSFRTX1ZBUklBQkxFCQkoQUNMX1NFTEVDVHxBQ0xfVVBEQVRFKQogCiAvKiBvcGVy YXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFzayAqLwogdHlwZWRlZiBlbnVtCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5kMjJhZTQ3NTEyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApAQCAtMCwwICsxLDM2 NSBAQAorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1QIFZBUklB QkxFIHZhcjIgQVMgdGV4dDsKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKy0tIGZ1bmN0aW9u YWwgaW50ZXJmYWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworU0VMRUNUIHNl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzMpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIDMzMworKDEgcm93KQorCitTRUxF Q1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIDMzMzo6aW50ZWdlcik7Cisgc2V0X3NjaGVt YV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg Z2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworIGdldF9zY2hlbWFf dmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgMzMzCiso MSByb3cpCisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzMzMy41NSc6OnRl eHQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmlj KTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgIDMzMy41NQorKDEgcm93KQorCitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFy MScsIG51bGw6OmludCk7CisgZ2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAzMzQKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFf dmFyaWFibGUoJ3ZhcjEnLCBudWxsOjp0ZXh0KTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgMzMzLjU1CisoMSByb3cpCisKKy0tIGFjY2VzcyByaWdodHMg dGVzdAorQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3Jv bGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEn LCAnMTAwMCc6OnRleHQpOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZh cmlhYmxlIHZhcjEKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgbnVsbDo6bnVt ZXJpYyk7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFy MQorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFNFTEVDVCBPTiBWQVJJQUJMRSB2YXIxIFRP IHZhcl90ZXN0X3JvbGU7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRv IGZhaWwKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsK K0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBz aG91bGQgdG8gd29yaworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpu dW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgIDMzMy41NQorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JB TlQgVVBEQVRFIE9OIFZBUklBQkxFIHZhcjEgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRP IHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMTAwMAorKDEgcm93KQorCitTRVQgUk9M RSBUTyBERUZBVUxUOworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFyX3Rlc3Rf cm9sZTsKK0NSRUFURSBWQVJJQUJMRSB2YXIgQVMgaW50ZWdlcjsKK1NFTEVDVCBzZXRfc2NoZW1h X3ZhcmlhYmxlKCdwdWJsaWMudmFyJywgMTIzNCk7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgcHVibGljLnZhcjsKKyB2 YXIgIAorLS0tLS0tCisgMTIzNAorKDEgcm93KQorCitETyAkJAorQkVHSU4KKyAgUkFJU0UgTk9U SUNFICdwdWJsaWMudmFyIGlzID0gJScsIHB1YmxpYy52YXI7CitFTkQ7CiskJDsKK05PVElDRTog IHB1YmxpYy52YXIgaXMgPSAxMjM0CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVf dmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisgIFNFTEVDVCBwdWJsaWMudmFyOworJCQgTEFOR1VB R0Ugc3FsIFNFQ1VSSVRZIERFRklORVI7CitTRUxFQ1Qgc2VjdXJlX3ZhcigpOworIHNlY3VyZV92 YXIgCistLS0tLS0tLS0tLS0KKyAgICAgICAxMjM0CisoMSByb3cpCisKK1NFVCBST0xFIFRPIHZh cl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHB1YmxpYy52YXI7CitFUlJP UjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyCistLSBzaG91bGQg dG8gd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0t LQorICAgICAgIDEyMzQKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDAp IGcodikgV0hFUkUgdiA9IHZhcjsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZ1bmN0aW9uIFNjYW4gb24gcGdfY2F0YWxvZy5nZW5lcmF0ZV9zZXJpZXMgZworICAg T3V0cHV0OiB2CisgICBGdW5jdGlvbiBDYWxsOiBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKQorICAg RmlsdGVyOiAoZy52ID0gdmFyKQorKDQgcm93cykKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92 aWV3IEFTIFNFTEVDVCB2YXI7CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKyB2YXIg IAorLS0tLS0tCisgMTIzNAorKDEgcm93KQorCitcYyAtCistLSBzaG91bGQgdG8gd29yayBzdGls bCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsK KyB2YXIgCistLS0tLQorICAgIAorKDEgcm93KQorCitMRVQgdmFyMSA9IHBpKCk7CitTRUxFQ1Qg dmFyMTsKKyAgICAgICB2YXIxICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgMy4xNDE1OTI2 NTM1ODk3OQorKDEgcm93KQorCistLSB3ZSBjYW4gbG9vayBvbiBleGVjdXRpb24gcGxhbgorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7CisgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExldCBvbiBwdWJsaWMu dmFyMQorICAgLT4gIFJlc3VsdAorICAgICAgICAgT3V0cHV0OiAnMy4xNDE1OTI2NTM1ODk3OSc6 OmRvdWJsZSBwcmVjaXNpb24KKygzIHJvd3MpCisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BS RVBBUkUgdmFyX3BwKGludCwgbnVtZXJpYykgQVMgTEVUIHZhcjEgPSAkMSArICQyOworRVhFQ1VU RSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsKK1NFTEVDVCB2YXIxOworICAgdmFyMSAgICAKKy0tLS0t LS0tLS0tCisgMTAxLjIzNDU2CisoMSByb3cpCisKK0NSRUFURSBWQVJJQUJMRSB2YXIzIEFTIGlu dDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGluYyhpbnQpCitSRVRVUk5TIGludCBBUyAk JAorQkVHSU4KKyAgTEVUIHB1YmxpYy52YXIzID0gQ09BTEVTQ0UocHVibGljLnZhcjMgKyAkMSwg JDEpOworICBSRVRVUk4gdmFyMzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1Qg aW5jKDEpOworIGluYyAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSk7Cisg aW5jIAorLS0tLS0KKyAgIDIKKygxIHJvdykKKworU0VMRUNUIGluYygxKTsKKyBpbmMgCistLS0t LQorICAgMworKDEgcm93KQorCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs MTApOworIGluYyAKKy0tLS0tCisgICA0CisgICA1CisgICA2CisgICA3CisgICA4CisgICA5Cisg IDEwCisgIDExCisgIDEyCisgIDEzCisoMTAgcm93cykKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rf cm9sZTsKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFyMworU0VUIFJPTEUgVE8gREVGQVVMVDsK K0RST1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CitEUk9QIFZBUklBQkxFIHZhciBDQVNDQURFOwor RFJPUCBWQVJJQUJMRSB2YXIxIENBU0NBREU7CitEUk9QIFZBUklBQkxFIHZhcjMgQ0FTQ0FERTsK Ky0tIGNvbXBvc2l0ZSB2YXJpYWJsZXMKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQsIHkg aW50LCB6IG51bWVyaWMoMTAsMikpOworQ1JFQVRFIFZBUklBQkxFIHYxIEFTIHN2X3h5ejsKK0NS RUFURSBWQVJJQUJMRSB2MiBBUyAoeCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworXGQg djEKK3NjaGVtYSB2YXJpYWJsZSAicHVibGljLnYxIgorIENvbHVtbiB8ICAgICBUeXBlICAgICAg CistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyB4ICAgICAgfCBpbnRlZ2VyCisgeSAgICAgIHwg aW50ZWdlcgorIHogICAgICB8IG51bWVyaWMoMTAsMikKKworXGQgdjIKK3NjaGVtYSB2YXJpYWJs ZSAicHVibGljLnYyIgorIENvbHVtbiB8ICAgICBUeXBlICAgICAgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0KKyB4ICAgICAgfCBpbnRlZ2VyCisgeSAgICAgIHwgaW50ZWdlcgorIHogICAgICB8 IG51bWVyaWMoMTAsMikKKworLS0gZXhwbGljaXQgY2FzdGluZyBpcyBuZWNlc3NhcnkKK0xFVCB2 MSA9ICgxLDIsMy4xNCk6OnN2X3h5ejsKK0xFVCB2MiA9ICgxMCwyMCwzLjE0KjEwKTo6djI7Cist LSBzaG91bGQgdG8gd29yayB0b28gLSB0aGVyZSBhcmUgcHJlcGFyZWQgY2FzdHMKK0xFVCB2MSA9 ICgxLDIsMy4xNCk6OnYxOworU0VMRUNUIHYxOworICAgICB2MSAgICAgCistLS0tLS0tLS0tLS0K KyAoMSwyLDMuMTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAgICAgIHYyICAgICAgIAorLS0t LS0tLS0tLS0tLS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQorCitTRUxFQ1QgKHYxKS4qOwor IHggfCB5IHwgIHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIgfCAzLjE0CisoMSByb3cpCisK K1NFTEVDVCAodjIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0tLSstLS0tKy0tLS0tLS0KKyAx MCB8IDIwIHwgMzEuNDAKKygxIHJvdykKKworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3Yx JywgJ3onLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKKyBnZXRfc2NoZW1hX3ZhcmlhYmxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMy4xNAorKDEgcm93KQorCitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndjInLCAneicsIG51bGw6OmRvdWJsZSBwcmVjaXNp b24pOworIGdldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAzMS40CisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgZ2V0 X3NjaGVtYV92YXJpYWJsZSgndjEnLCAndycsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworRVJS T1I6ICB0aGUgdmFyaWFibGUgInYxIiBoYXMgbm90IGZpZWxkICJ3IgorU0VMRUNUIGdldF9zY2hl bWFfdmFyaWFibGUoJ3YyJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsKK0VSUk9SOiAg dGhlIHZhcmlhYmxlICJ2MiIgaGFzIG5vdCBmaWVsZCAidyIKK0NSRUFURSBWQVJJQUJMRSB2MyBB UyBpbnRlZ2VyOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YzJywgJ3cnLCBudWxsOjpk b3VibGUgcHJlY2lzaW9uKTsKK0VSUk9SOiAgdHlwZSBpbnRlZ2VyIGlzIG5vdCBjb21wb3NpdGUK K1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgMy4xNCAqIDIpOworIHNldF9z Y2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VM RUNUIHYxOworICAgICB2MSAgICAgCistLS0tLS0tLS0tLS0KKyAoMSwyLDYuMjgpCisoMSByb3cp CisKK1NFTEVDVCBzZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScsICd6JywgbnVsbDo6ZG91YmxlIHBy ZWNpc2lvbik7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgdjE7CisgICB2MSAgIAorLS0tLS0tLS0KKyAoMSwyLCkKKygx IHJvdykKKworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCAzLjMzMzM6OmRv dWJsZSBwcmVjaXNpb24pOworIHNldF9zY2hlbWFfdmFyaWFibGUgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3gn LCAxMDAwMC4yMik7Cisgc2V0X3NjaGVtYV92YXJpYWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgdjE7CisgICAgICAgdjEgICAgICAgCistLS0tLS0tLS0t LS0tLS0tCisgKDEwMDAwLDIsMy4zMykKKygxIHJvdykKKworU0VMRUNUIHYxLnggKyB2MS56Owor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIDEwMDAzLjMzCisoMSByb3cpCisKK1NFTEVDVCB2Mi54 ICsgdjIuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICA0MS40MAorKDEgcm93KQorCist LSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28KKy0tIHNob3Vs ZCB0byBmYWlsCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHYyLng7CitFUlJP UjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdjIKK1NFVCBST0xFIFRP IERFRkFVTFQ7CitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsKK0RST1AgVkFS SUFCTEUgdjM7CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IGFkOTQzNGZiODcuLjMzZmU3ZWU0NzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtMTExLDcgKzExMSw3IEBAIHRlc3Q6IHNlbGVjdF92aWV3cyBwb3J0YWxz X3AyIGZvcmVpZ25fa2V5IGNsdXN0ZXIgZGVwZW5kZW5jeSBndWMgYml0bWFwb3BzIGNvbWJvCiAj IE5COiB0ZW1wLnNxbCBkb2VzIGEgcmVjb25uZWN0IHdoaWNoIHRyYW5zaWVudGx5IHVzZXMgMiBj b25uZWN0aW9ucywKICMgc28ga2VlcCB0aGlzIHBhcmFsbGVsIGdyb3VwIHRvIGF0IG1vc3QgMTkg dGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIg dGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZlcnNpb24gdHJ1 bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVzIHJldHVybmlu ZyBsYXJnZW9iamVjdCB3aXRoIHhtbAordGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29w eTIgdGVtcCBkb21haW4gcmFuZ2VmdW5jcyBwcmVwYXJlIHdpdGhvdXRfb2lkIGNvbnZlcnNpb24g dHJ1bmNhdGUgYWx0ZXJfdGFibGUgc2VxdWVuY2UgcG9seW1vcnBoaXNtIHJvd3R5cGVzIHJldHVy bmluZyBsYXJnZW9iamVjdCB3aXRoIHhtbCBzY2hlbWFfdmFyaWFibGVzCiAKICMgLS0tLS0tLS0t LQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVk dWxlCmluZGV4IDI3Y2Q0OTg0NWUuLjIyYzRjYWM3Y2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc2VyaWFsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc2VyaWFsX3NjaGVk dWxlCkBAIC0xODcsMyArMTg3LDQgQEAgdGVzdDogaGFzaF9wYXJ0CiB0ZXN0OiBpbmRleGluZwog dGVzdDogZXZlbnRfdHJpZ2dlcgogdGVzdDogc3RhdHMKK3Rlc3Q6IHNjaGVtYV92YXJpYWJsZXMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc2NoZW1hX3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDIyZGQyNjU5OAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMTkyIEBA CitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUg dmFyMiBBUyB0ZXh0OworCitEUk9QIFZBUklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9u YWwgaW50ZXJmYWNlCitDUkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworU0VMRUNUIHNl dF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAzMzMpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFi bGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUo J3ZhcjEnLCAzMzM6OmludGVnZXIpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEn LCBudWxsOjpudW1lcmljKTsKKworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAn MzMzLjU1Jzo6dGV4dCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6 Om51bWVyaWMpOworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjppbnQp OworU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjp0ZXh0KTsKKworLS0g YWNjZXNzIHJpZ2h0cyB0ZXN0CisKK0NSRUFURSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK1NFVCBS T0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1Qgc2V0X3Nj aGVtYV92YXJpYWJsZSgndmFyMScsICcxMDAwJzo6dGV4dCk7CitTRUxFQ1QgZ2V0X3NjaGVtYV92 YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQgUk9MRSBUTyBERUZBVUxUOwor CitHUkFOVCBTRUxFQ1QgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQg Uk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBzZXRfc2No ZW1hX3ZhcmlhYmxlKCd2YXIxJywgJzEwMDAnOjp0ZXh0KTsKKy0tIHNob3VsZCB0byB3b3JrCitT RUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJsZSgndmFyMScsIG51bGw6Om51bWVyaWMpOworCitTRVQg Uk9MRSBUTyBERUZBVUxUOworCitHUkFOVCBVUERBVEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJf dGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8g d29yaworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCAnMTAwMCc6OnRleHQpOwor U0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3ZhcjEnLCBudWxsOjpudW1lcmljKTsKKworU0VU IFJPTEUgVE8gREVGQVVMVDsKKworUkVWT0tFIEFMTCBPTiBWQVJJQUJMRSB2YXIxIEZST00gdmFy X3Rlc3Rfcm9sZTsKKworQ1JFQVRFIFZBUklBQkxFIHZhciBBUyBpbnRlZ2VyOworCitTRUxFQ1Qg c2V0X3NjaGVtYV92YXJpYWJsZSgncHVibGljLnZhcicsIDEyMzQpOworCitTRUxFQ1QgcHVibGlj LnZhcjsKKworRE8gJCQKK0JFR0lOCisgIFJBSVNFIE5PVElDRSAncHVibGljLnZhciBpcyA9ICUn LCBwdWJsaWMudmFyOworRU5EOworJCQ7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHNl Y3VyZV92YXIoKQorUkVUVVJOUyBpbnQgQVMgJCQKKyAgU0VMRUNUIHB1YmxpYy52YXI7CiskJCBM QU5HVUFHRSBzcWwgU0VDVVJJVFkgREVGSU5FUjsKKworU0VMRUNUIHNlY3VyZV92YXIoKTsKKwor U0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBw dWJsaWMudmFyOworCistLSBzaG91bGQgdG8gd29yazsKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisK K1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUgdiA9IHZhcjsKKwor Q1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92aWV3IEFTIFNFTEVDVCB2YXI7CisKK1NFTEVDVCAqIEZS T00gc2NoZW1hX3Zhcl92aWV3OworCitcYyAtCisKKy0tIHNob3VsZCB0byB3b3JrIHN0aWxsLCBi dXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworCitM RVQgdmFyMSA9IHBpKCk7CisKK1NFTEVDVCB2YXIxOworCistLSB3ZSBjYW4gbG9vayBvbiBleGVj dXRpb24gcGxhbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBMRVQgdmFyMSA9IHBpKCk7 CisKKy0tIExFVCBjYW4gYmUgcHJlcGFyZWQKK1BSRVBBUkUgdmFyX3BwKGludCwgbnVtZXJpYykg QVMgTEVUIHZhcjEgPSAkMSArICQyOworCitFWEVDVVRFIHZhcl9wcCgxMDAsIDEuMjM0NTYpOwor CitTRUxFQ1QgdmFyMTsKKworQ1JFQVRFIFZBUklBQkxFIHZhcjMgQVMgaW50OworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBpbmMoaW50KQorUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisg IExFVCBwdWJsaWMudmFyMyA9IENPQUxFU0NFKHB1YmxpYy52YXIzICsgJDEsICQxKTsKKyAgUkVU VVJOIHZhcjM7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgaW5jKDEpOwor U0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CisKK1NFTEVDVCBpbmMoMSkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0tIHNo b3VsZCB0byBmYWlsCitMRVQgdmFyMyA9IDA7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RS T1AgVklFVyBzY2hlbWFfdmFyX3ZpZXc7CisKK0RST1AgVkFSSUFCTEUgdmFyIENBU0NBREU7CitE Uk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVNDQURFOwor CistLSBjb21wb3NpdGUgdmFyaWFibGVzCisKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAoeCBpbnQs IHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgc3ZfeHl6 OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTICh4IGludCwgeSBpbnQsIHogbnVtZXJpYygxMCwyKSk7 CisKK1xkIHYxCitcZCB2MgorCistLSBleHBsaWNpdCBjYXN0aW5nIGlzIG5lY2Vzc2FyeQorTEVU IHYxID0gKDEsMiwzLjE0KTo6c3ZfeHl6OworTEVUIHYyID0gKDEwLDIwLDMuMTQqMTApOjp2MjsK KworLS0gc2hvdWxkIHRvIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHByZXBhcmVkIGNhc3RzCitMRVQg djEgPSAoMSwyLDMuMTQpOjp2MTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNUICh2 MSkuKjsKK1NFTEVDVCAodjIpLio7CisKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MScs ICd6JywgbnVsbDo6ZG91YmxlIHByZWNpc2lvbik7CitTRUxFQ1QgZ2V0X3NjaGVtYV92YXJpYWJs ZSgndjInLCAneicsIG51bGw6OmRvdWJsZSBwcmVjaXNpb24pOworCistLSBzaG91bGQgdG8gZmFp bAorU0VMRUNUIGdldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3cnLCBudWxsOjpkb3VibGUgcHJl Y2lzaW9uKTsKK1NFTEVDVCBnZXRfc2NoZW1hX3ZhcmlhYmxlKCd2MicsICd3JywgbnVsbDo6ZG91 YmxlIHByZWNpc2lvbik7CisKK0NSRUFURSBWQVJJQUJMRSB2MyBBUyBpbnRlZ2VyOworU0VMRUNU IGdldF9zY2hlbWFfdmFyaWFibGUoJ3YzJywgJ3cnLCBudWxsOjpkb3VibGUgcHJlY2lzaW9uKTsK KworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3YxJywgJ3onLCAzLjE0ICogMik7CitTRUxF Q1QgdjE7CitTRUxFQ1Qgc2V0X3NjaGVtYV92YXJpYWJsZSgndjEnLCAneicsIG51bGw6OmRvdWJs ZSBwcmVjaXNpb24pOworU0VMRUNUIHYxOworU0VMRUNUIHNldF9zY2hlbWFfdmFyaWFibGUoJ3Yx JywgJ3onLCAzLjMzMzM6OmRvdWJsZSBwcmVjaXNpb24pOworU0VMRUNUIHNldF9zY2hlbWFfdmFy aWFibGUoJ3YxJywgJ3gnLCAxMDAwMC4yMik7CitTRUxFQ1QgdjE7CisKK1NFTEVDVCB2MS54ICsg djEuejsKK1NFTEVDVCB2Mi54ICsgdjIuejsKKworLS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVs ZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFy X3Rlc3Rfcm9sZTsKKworU0VMRUNUIHYyLng7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKKwor RFJPUCBWQVJJQUJMRSB2MTsKK0RST1AgVkFSSUFCTEUgdjI7CitEUk9QIFZBUklBQkxFIHYzOwor CitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXgg ZDQ3NjVjZTNiMC4uYjA0MDRjMjFhNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQy Myw2ICs0MjMsNyBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3RDbWQKIENyZWF0ZVJvbGVTdG10CiBD cmVhdGVTY2hlbWFTdG10CiBDcmVhdGVTY2hlbWFTdG10Q29udGV4dAorQ3JlYXRlU2NoZW1hVmFy U3RtdAogQ3JlYXRlU2VxU3RtdAogQ3JlYXRlU3RhdHNTdG10CiBDcmVhdGVTdG10Cg== --f403043868c4560a510566ea76df--