Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fxpgz-0005Ol-02 for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Sep 2018 08:31:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fxpgw-0002DF-Il for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Sep 2018 08:31:06 +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 1fxpgw-0002Co-1s for pgsql-hackers@lists.postgresql.org; Thu, 06 Sep 2018 08:31:06 +0000 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fxpgd-0005Dt-3z for pgsql-hackers@lists.postgresql.org; Thu, 06 Sep 2018 08:31:04 +0000 Received: by mail-wr1-x441.google.com with SMTP id v16-v6so10363845wro.11 for ; Thu, 06 Sep 2018 01:30:46 -0700 (PDT) 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=YSw5ef2pU6AXqOceqd0SvjUklQCJJxG1DabOKMlCC84=; b=sZhfuLIatEB/7stABM1O3PtbEY/eF61gm12qpiahjfDdGelYu7dE06Swjcj9R5tb9Q JvqbzaCpQzti67q4igPVIr8qxdYdg6u15eAlLma8Pe/SbOEhNMbp2WgDo5xt9wB/OgOl D8JoNOqVDfPGjfjvDtyL4mZCk+6ywAC0ot6x0RPQ0bsQjWs+Gi7Wzu2fZiuBItqFus0T jRuPP1Ys1xKJ+z/HO4UzuZau40TCCXGEl3rBxDVmxehwmBZujBkfEgj0HcbUQL9ECwbu jdG80hrQHkzYYStIaVY1U78+HmlRreadmIlOHYg2APkHDGIwgg9El68a4OwttbC6+/ag l/wQ== 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=YSw5ef2pU6AXqOceqd0SvjUklQCJJxG1DabOKMlCC84=; b=i5d/1ZeQ4OLJHdGjS4/Oqx1Qsrv9zPx3/IVlkTSjE/O32qS2uQHQcKM4TIrDf1L/wa V50VdPOMq/RBvQF8EDUDC85MmGEdosy2VLSr1xsZlfHunvi44ln/H3yh+X8bKhkOSYl7 NsLUriwAKFSBZI7OfMGLl+wnbc7cM5fzTc2sOwTBttC7iCUfc4a/3A6k3hWtHY2Gkm+8 OEWoYNXsisXc1GDLVLU3ZSKH5xTHNjEoXGL5YLwr7UeUIf7Eup/68oA8JTbcuNuDpz2j wZlYBoHNyqo2AbjGVhB6gp/cnFSmdb5BHus4Fc0dLw3HBOVwPEllnoANkORM5QUizvTU Zojw== X-Gm-Message-State: APzg51CvHvIIwW/zD4XSTEA714yeV4xfD79Xch228bpvPCWHf/DUppKN F23MQM8DLMDCH/ejJ3s56D5ekiWrD/jaaTfSBnY= X-Google-Smtp-Source: ANB0VdZNdmg8tQKufJVH4tCpbxDPZWrhnY1nqA3xRo/4PqMODwhQzHL9J1zBaEJAJsl3G4SE4zQWMLLe7L9plh8pnEQ= X-Received: by 2002:adf:ff82:: with SMTP id j2-v6mr1288855wrr.165.1536222645508; Thu, 06 Sep 2018 01:30:45 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:adf:978e:0:0:0:0:0 with HTTP; Thu, 6 Sep 2018 01:30:04 -0700 (PDT) In-Reply-To: References: <623395617.20171113141500@gf.microolap.com> <28924bcc-9242-9798-e4e8-9d83cea3fef6@dalibo.com> From: Pavel Stehule Date: Thu, 6 Sep 2018 10:30:04 +0200 Message-ID: Subject: Re: [HACKERS] proposal: schema variables To: Dean Rasheed Cc: Fabien COELHO , Gilles Darold , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000001512a605752fb562" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000001512a605752fb562 Content-Type: multipart/alternative; boundary="0000000000001512a405752fb560" --0000000000001512a405752fb560 Content-Type: text/plain; charset="UTF-8" Hi here is updated patch - I wrote some transactional support I am not sure how these new features are understandable and if these features does it better or not. There are possibility to reset to default value when a) any transaction is finished - the scope of value is limited by transaction CREATE VARIABLE foo int ON TRANSACTION END RESET; b) when transaction finished by rollback CREATE VARIABLE foo int ON ROLLBACK RESET Now, when I am thinking about it, the @b is simple, but not too practical - when some fails, then we lost a value (any transaction inside session can fails). The @a has sense - the behave is global value (what is not possible in Postgres now), but this value is destroyed by any unhandled exceptions, and it cleaned on transaction end. The @b is just for information and for discussion, but I'll remove it - because it is obscure. The open question is syntax. PostgreSQL has already ON COMMIT xxx . It is little bit unclean, because it has semantic "on transaction end", but if I didn't implement @b, then ON COMMIT syntax can be used. Regards Pavel --0000000000001512a405752fb560 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

here is updated patch - I= wrote some transactional support

I am not sure ho= w these new features are understandable and if these features does it bette= r or not.

There are possibility to reset to defaul= t value when

a) any transaction is finished - the = scope of value is limited by transaction

CREATE VA= RIABLE foo int ON TRANSACTION END RESET;

b) when t= ransaction finished by rollback

CREATE VARIABLE fo= o int ON ROLLBACK RESET

Now, when I am thinking ab= out it, the @b is simple, but not too practical - when some fails, then we = lost a value (any transaction inside session can fails). The @a has sense -= the behave is global value (what is not possible in Postgres now), but thi= s value is destroyed by any unhandled exceptions, and it cleaned on transac= tion end. The @b is just for information and for discussion, but I'll r= emove it - because it is obscure.

The open qu= estion is syntax. PostgreSQL has already ON COMMIT xxx . It is little bit u= nclean, because it has semantic "on transaction end", but if I di= dn't implement @b, then ON COMMIT syntax can be used.

Regards

Pavel


--0000000000001512a405752fb560-- --0000000000001512a605752fb562 Content-Type: text/x-patch; charset="US-ASCII"; name="schema-variables-180906-01.patch" Content-Disposition: attachment; filename="schema-variables-180906-01.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jlqar99x0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggMDE3OWRlZWEyZS4uOGJiNDc4ZjVmZCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTM1OSw2ICszNTksMTEgQEAKICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLXVzZXItbWFwcGluZyI+PHN0cnVjdG5hbWU+cGdfdXNlcl9tYXBwaW5nPC9zdHJ1Y3RuYW1l PjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5Pm1hcHBpbmdzIG9mIHVzZXJzIHRvIGZvcmVp Z24gc2VydmVyczwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy12YXJpYWJsZSI+PHN0cnVjdG5hbWU+cGdfdmFy aWFibGU8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+c2NoZW1hIHZh cmlhYmxlczwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4K ICAgPC90YWJsZT4KQEAgLTExMzAzLDQgKzExMzA4LDEyMyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKIAogIDwvc2VjdDE+CiAKKyA8 c2VjdDEgaWQ9ImNhdGFsb2ctcGctdmFyaWFibGUiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf dmFyaWFibGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFs b2ctcGctdmFyaWFibGUiPgorICAgPHByaW1hcnk+cGdfdmFyaWFibGU8L3ByaW1hcnk+CisgIDwv aW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHRhYmxlIDxzdHJ1Y3RuYW1lPnBnX3Zhcmlh YmxlPC9zdHJ1Y3RuYW1lPiBob2xkcyBtZXRhZGF0YQorICAgb2Ygc2NoZW1hIHZhcmlhYmxlcy4K KyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ192aWV3czwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAg PHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pk5hbWU8L2VudHJ5PgorICAgICAgPGVu dHJ5PlR5cGU8L2VudHJ5PgorICAgICAgPGVudHJ5PlJlZmVyZW5jZXM8L2VudHJ5PgorICAgICAg PGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9pZDwvc3Ry dWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlJvdyBpZGVudGlmaWVyIChoaWRk ZW4gYXR0cmlidXRlOyBtdXN0IGJlIGV4cGxpY2l0bHkgc2VsZWN0ZWQpPC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFybmFtZTwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5uYW1lPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzY2hl bWEgdmFyaWFibGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxzdHJ1Y3RmaWVsZD52YXJuYW1lc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxzdHJ1Y3RuYW1lPnBnX25hbWVz cGFjZTwvc3RydWN0bmFtZT48L2xpbms+Lm9pZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBPSUQgb2YgdGhlIG5hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIHRoaXMg dmFyaWFibGUKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PHR5cGU+b2lkPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1 Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIE9JRCBvZiB0aGUgZGF0YSB0eXBlIG9mIHRoaXMgdmFyaWFibGUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVs ZD52YXJ0eXBtb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+aW50 NDwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnZhcnR5cG1vZDwvc3RydWN0ZmllbGQ+IHJlY29yZHMgdHlwZS1z cGVjaWZpYyBkYXRhCisgICAgICAgc3VwcGxpZWQgYXQgdGFibGUgY3JlYXRpb24gdGltZSAoZm9y IGV4YW1wbGUsIHRoZSBtYXhpbXVtCisgICAgICAgbGVuZ3RoIG9mIGEgPHR5cGU+dmFyY2hhcjwv dHlwZT4gY29sdW1uKS4gIEl0IGlzIHBhc3NlZCB0bworICAgICAgIHR5cGUtc3BlY2lmaWMgaW5w dXQgZnVuY3Rpb25zIGFuZCBsZW5ndGggY29lcmNpb24gZnVuY3Rpb25zLgorICAgICAgIFRoZSB2 YWx1ZSB3aWxsIGdlbmVyYWxseSBiZSAtMSBmb3IgdHlwZXMgdGhhdCBkbyBub3QgbmVlZCA8c3Ry dWN0ZmllbGQ+dmFydHlwbW9kPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YXJvd25lcjwv c3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhp ZCI+PHN0cnVjdG5hbWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4ub2lkPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+T3duZXIgb2YgdGhlIHZhcmlhYmxlPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyY29s bGF0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlw ZT48L2VudHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ct cGctY29sbGF0aW9uIj48c3RydWN0bmFtZT5wZ19jb2xsYXRpb248L3N0cnVjdG5hbWU+PC9saW5r Pi5vaWQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgZGVmaW5l ZCBjb2xsYXRpb24gb2YgdGhlIHZhcmlhYmxlLCBvciB6ZXJvIGlmIHRoZSB2YXJpYWJsZSBpcwor ICAgICAgIG5vdCBvZiBhIGNvbGxhdGFibGUgZGF0YSB0eXBlLgorICAgICAgPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyb25j b21taXRyZXNldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5ib29s PC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAg ICAgICBXaGVuIGl0IGlzIHRydWUsIHRoZW4gY29udGVudCBvZiB2YXJpYWJsZSBpcyB0aHJvd24g b24gdHJhbnNhY3Rpb24gZW5kLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFyZGVmZXhwcjwvc3RydWN0ZmllbGQ+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PlRoZSBpbnRlcm5hbCByZXByZXNl bnRhdGlvbiBvZiB0aGUgdmFyaWFibGUgZGVmYXVsdCB2YWx1ZTwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhcmFjbDwvc3RydWN0 ZmllbGQ+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5hY2xpdGVtW108L3R5cGU+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIEFjY2VzcyBw cml2aWxlZ2VzOyBzZWUKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtZ3JhbnQiLz4gYW5kCisg ICAgICAgPHhyZWYgbGlua2VuZD0ic3FsLXJldm9rZSIvPgorICAgICAgIGZvciBkZXRhaWxzCisg ICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+Cisg IDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCmlu ZGV4IGM4MWM4N2VmNDEuLjA2MzFjOWVkNTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKQEAgLTQ3 LDYgKzQ3LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4g dGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBhbHRlclR5cGUgICAgICAgICAgU1lTVEVNICJhbHRl cl90eXBlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJVc2VyICAgICAgICAgIFNZU1RFTSAiYWx0ZXJf dXNlci5zZ21sIj4KIDwhRU5USVRZIGFsdGVyVXNlck1hcHBpbmcgICBTWVNURU0gImFsdGVyX3Vz ZXJfbWFwcGluZy5zZ21sIj4KKzwhRU5USVRZIGFsdGVyVmFyaWFibGUgICAgICBTWVNURU0gImFs dGVyX3ZhcmlhYmxlLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJWaWV3ICAgICAgICAgIFNZU1RFTSAi YWx0ZXJfdmlldy5zZ21sIj4KIDwhRU5USVRZIGFuYWx5emUgICAgICAgICAgICBTWVNURU0gImFu YWx5emUuc2dtbCI+CiA8IUVOVElUWSBiZWdpbiAgICAgICAgICAgICAgU1lTVEVNICJiZWdpbi5z Z21sIj4KQEAgLTk5LDYgKzEwMCw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291 cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgY3JlYXRlVHlwZSAgICAgICAg IFNZU1RFTSAiY3JlYXRlX3R5cGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVVc2VyICAgICAgICAg U1lTVEVNICJjcmVhdGVfdXNlci5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVVzZXJNYXBwaW5nICBT WVNURU0gImNyZWF0ZV91c2VyX21hcHBpbmcuc2dtbCI+Cis8IUVOVElUWSBjcmVhdGVWYXJpYWJs ZSAgICAgU1lTVEVNICJjcmVhdGVfdmFyaWFibGUuc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVWaWV3 ICAgICAgICAgU1lTVEVNICJjcmVhdGVfdmlldy5zZ21sIj4KIDwhRU5USVRZIGRlYWxsb2NhdGUg ICAgICAgICBTWVNURU0gImRlYWxsb2NhdGUuc2dtbCI+CiA8IUVOVElUWSBkZWNsYXJlICAgICAg ICAgICAgU1lTVEVNICJkZWNsYXJlLnNnbWwiPgpAQCAtMTQ4LDYgKzE1MCw3IEBAIENvbXBsZXRl IGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFF TlRJVFkgZHJvcFVzZXIgICAgICAgICAgIFNZU1RFTSAiZHJvcF91c2VyLnNnbWwiPgogPCFFTlRJ VFkgZHJvcFVzZXJNYXBwaW5nICAgIFNZU1RFTSAiZHJvcF91c2VyX21hcHBpbmcuc2dtbCI+CiA8 IUVOVElUWSBkcm9wVmlldyAgICAgICAgICAgU1lTVEVNICJkcm9wX3ZpZXcuc2dtbCI+Cis8IUVO VElUWSBkcm9wVmFyaWFibGUgICAgICAgU1lTVEVNICJkcm9wX3ZhcmlhYmxlLnNnbWwiPgogPCFF TlRJVFkgZW5kICAgICAgICAgICAgICAgIFNZU1RFTSAiZW5kLnNnbWwiPgogPCFFTlRJVFkgZXhl Y3V0ZSAgICAgICAgICAgIFNZU1RFTSAiZXhlY3V0ZS5zZ21sIj4KIDwhRU5USVRZIGV4cGxhaW4g ICAgICAgICAgICBTWVNURU0gImV4cGxhaW4uc2dtbCI+CkBAIC0xNTUsNiArMTU4LDcgQEAgQ29t cGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3Rvcnku CiA8IUVOVElUWSBncmFudCAgICAgICAgICAgICAgU1lTVEVNICJncmFudC5zZ21sIj4KIDwhRU5U SVRZIGltcG9ydEZvcmVpZ25TY2hlbWEgU1lTVEVNICJpbXBvcnRfZm9yZWlnbl9zY2hlbWEuc2dt bCI+CiA8IUVOVElUWSBpbnNlcnQgICAgICAgICAgICAgU1lTVEVNICJpbnNlcnQuc2dtbCI+Cis8 IUVOVElUWSBsZXQgICAgICAgICAgICAgICAgU1lTVEVNICJsZXQuc2dtbCI+CiA8IUVOVElUWSBs aXN0ZW4gICAgICAgICAgICAgU1lTVEVNICJsaXN0ZW4uc2dtbCI+CiA8IUVOVElUWSBsb2FkICAg ICAgICAgICAgICAgU1lTVEVNICJsb2FkLnNnbWwiPgogPCFFTlRJVFkgbG9jayAgICAgICAgICAg ICAgIFNZU1RFTSAibG9jay5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdmFyaWFibGUuc2dtbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42Mzc2YWM3MTZiCi0tLSAvZGV2 L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl92YXJpYWJsZS5zZ21sCkBAIC0wLDAg KzEsMTcwIEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3ZhcmlhYmxlLnNnbWwKK1Bv c3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWFsdGVydmFy aWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWFsdGVydmFyaWFibGUiPgorICA8cHJpbWFy eT5BTFRFUiBWQVJJQUJMRTwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgor ICA8cmVmZW50cnl0aXRsZT5BTFRFUiBWQVJJQUJMRTwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZv bG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1l bnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5h bWU+QUxURVIgVkFSSUFCTEU8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPgorICAgY2hhbmdlIHRo ZSBkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUKKyAgPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRp dj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0FMVEVSIFZBUklBQkxFIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gT1dORVIgVE8geyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4gfCBD VVJSRU5UX1VTRVIgfCBTRVNTSU9OX1VTRVIgfQorQUxURVIgVkFSSUFCTEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT4KK0FMVEVSIFZBUklB QkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VU IFNDSEVNQSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVwbGFj ZWFibGU+Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+Cisg IDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5BTFRF UiBWQVJJQUJMRTwvY29tbWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhbiBleGlzdGlu ZyB2YXJpYWJsZS4KKyAgIFRoZXJlIGFyZSBzZXZlcmFsIHN1YmZvcm1zOgorCisgIDx2YXJpYWJs ZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPk9XTkVSPC9saXRl cmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3Jt IGNoYW5nZXMgdGhlIG93bmVyIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5SRU5BTUU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gY2hhbmdlcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFi bGUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJh bD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBt b3ZlcyB0aGUgdmFyaWFibGUgaW50byBhbm90aGVyIHNjaGVtYS4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IG11c3Qgb3duIHRoZSB2YXJpYWJsZSB0byB1c2Ug PGNvbW1hbmQ+QUxURVIgVkFSSUFCTEU8L2NvbW1hbmQ+LgorICAgVG8gY2hhbmdlIHRoZSBzY2hl bWEgb2YgYSB2YXJpYWJsZSwgeW91IG11c3QgYWxzbyBoYXZlCisgICA8bGl0ZXJhbD5DUkVBVEU8 L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgbmV3IHNjaGVtYS4KKyAgIFRvIGFsdGVyIHRoZSBv d25lciwgeW91IG11c3QgYWxzbyBiZSBhIGRpcmVjdCBvciBpbmRpcmVjdCBtZW1iZXIgb2YgdGhl IG5ldworICAgb3duaW5nIHJvbGUsIGFuZCB0aGF0IHJvbGUgbXVzdCBoYXZlIDxsaXRlcmFsPkNS RUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uCisgICB0aGUgdmFyaWFibGUncyBzY2hlbWEuICAo VGhlc2UgcmVzdHJpY3Rpb25zIGVuZm9yY2UgdGhhdCBhbHRlcmluZyB0aGUgb3duZXIKKyAgIGRv ZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNvdWxkbid0IGRvIGJ5IGRyb3BwaW5nIGFuZCByZWNyZWF0 aW5nIHRoZSB2YXJpYWJsZS4KKyAgIEhvd2V2ZXIsIGEgc3VwZXJ1c2VyIGNhbiBhbHRlciBvd25l cnNoaXAgb2YgYW55IHR5cGUgYW55d2F5LikKKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8 cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAg PHZhcmlhYmxlbGlzdD4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuYW1lIChwb3NzaWJseSBzY2hl bWEtcXVhbGlmaWVkKSBvZiBhbiBleGlzdGluZyB2YXJpYWJsZSB0bworICAgICAgICBhbHRlci4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHZhcmlhYmxlLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB1c2VyIG5hbWUgb2YgdGhlIG5ldyBvd25lciBv ZiB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1hPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBuZXcgc2NoZW1h IGZvciB0aGUgdmFyaWFibGUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAg ICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgICA8L3BhcmE+CisgIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAg PHBhcmE+CisgICBUbyByZW5hbWUgYSB2YXJpYWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVS IFZBUklBQkxFIGZvbyBSRU5BTUUgVE8gYm9vOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVG8gY2hhbmdlIHRoZSBvd25lciBvZiB0aGUgdmFyaWFibGUgPGxp dGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+am9lPC9saXRlcmFsPjoKKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFZBUklBQkxFIGJvbyBPV05FUiBUTyBqb2U7Cis8L3Byb2dyYW1s aXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUbyBjaGFuZ2UgdGhlIHNjaGVtYSBv ZiB0aGUgdmFyaWFibGUgPGxpdGVyYWw+Ym9vPC9saXRlcmFsPgorICAgdG8gPGxpdGVyYWw+cHJp dmF0ZTwvbGl0ZXJhbD46Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBWQVJJQUJMRSBib28gU0VU IFNDSEVNQSBwcml2YXRlOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorIDwvcmVmc2Vj dDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8 cGFyYT4KKyAgIFRoaXMgY29tbWFuIGlzIGEgUG9zdGdyZVNRTCBleHRlbnNpb24uCisgIDwvcGFy YT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwtYWx0ZXJ2YXJpYWJsZS1zZWUt YWxzbyI+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0i aW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+ PC9tZW1iZXI+CisgICA8bWVtYmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48 L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdmFyaWFibGUuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMWJmMTI3ZWNjZAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKQEAgLTAsMCArMSwxNDUgQEAKKzwhLS0KK2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3ZhcmlhYmxlLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgor LS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIj4KKyA8aW5kZXh0ZXJtIHpv bmU9InNxbC1jcmVhdGV2YXJpYWJsZSI+CisgIDxwcmltYXJ5PkNSRUFURSBWQVJJQUJMRTwvcHJp bWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5DUkVB VEUgVkFSSUFCTEU8L3JlZmVudHJ5dGl0bGU+CisgIDxtYW52b2xudW0+NzwvbWFudm9sbnVtPgor ICA8cmVmbWlzY2luZm8+U1FMIC0gTGFuZ3VhZ2UgU3RhdGVtZW50czwvcmVmbWlzY2luZm8+Cisg PC9yZWZtZXRhPgorCisgPHJlZm5hbWVkaXY+CisgIDxyZWZuYW1lPkNSRUFURSBWQVJJQUJMRTwv cmVmbmFtZT4KKyAgPHJlZnB1cnBvc2U+ZGVmaW5lIGEgbmV3IHBlcm1pc3Npb25lZCB0eXBlZCBz Y2hlbWEgdmFyaWFibGU8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisgPHJlZnN5bm9w c2lzZGl2PgorPHN5bm9wc2lzPgorQ1JFQVRFIFZBUklBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gWyBBUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBdIFsg Q09MTEFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sbGF0aW9uPC9yZXBsYWNl YWJsZT4gXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorIDxyZWZzZWN0MT4KKyAg PHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFU RSBWQVJJQUJMRTwvY29tbWFuZD4gY3JlYXRlcyBhIG5ldyBzY2hlbWEgdmFyaWFibGUuCisgICBU aGVzZSB2YXJpYWJsZXMgYXJlIHNjYWxhciB0eXBlZCwgbm9uLXRyYW5zYWN0aW9uYWwsIGFuZCwg bGlrZSByZWxhdGlvbnMsCisgICBleGlzdCB3aXRoaW4gYSBzY2hlbWEgd2l0aCBhY2Nlc3MgY29u dHJvbGxlZCB2aWEKKyAgIDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+UkVW T0tFPC9jb21tYW5kPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlIHZhbHVlIG9mIGEg c2NoZW1hIHZhcmlhYmxlIGlzIHNlc3Npb24tbG9jYWwuIFJldHJpZXZpbmcKKyAgIGEgdmFyaWFi bGUncyB2YWx1ZSB3aWxsIHJldHVybiBOVUxMIHVubGVzcyBpdHMgdmFsdWUgaGFzIGJlZW4gc2V0 CisgICB0byBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY3VycmVudCBzZXNzaW9uLgorICA8L3BhcmE+ CisKKyAgPHBhcmE+CisgICBSZXRyaWV2YWwgaXMgZG9uZSB2aWEgdGhlIDxmdW5jdGlvbj5nZXRf c2NoZW1hX3ZhcmlhYmxlPC9mdW5jdGlvbj5kdW54cmlvbiBvciB0aGUgU1FMCisgICBjb21tYW5k IDxjb21tYW5kPlNFTEVDVDwvY29tbWFuZD4uICBTZXR0aW5nIG9mIHZhbHVlcyBpcyBkb25lIHZp YSB0aGUKKyAgIDxmdW5jdGlvbj5zZXRfc2NoZW1hX3ZhcmlhYmxlPC9mdW5jdGlvbj4gZnVuY3Rp b24gb3IgdGhlIFNRTCBjb21tYW5kCisgICA8Y29tbWFuZD5MRVQ8L2NvbW1hbmQ+LgorICAgTm90 YWJseSwgd2hpbGUgc2NoZW1hIHZhcmlhYmxlcyBhcmUgaW4gbWFueSB3YXlzIGEga2luZCBvZiB0 YWJsZSB5b3UgY2Fubm90IHVzZQorICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiBvbiB0aGVt LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBGb3IgcHVycG9zZXMgb2YgbmFtZSB1bmlxdWVu ZXNzIHJlbGF0aW9uLWxpa2Ugb2JqZWN0cyAoZS5nLiwgdGFibGVzLCBpbmRleGVzKQorICAgd2l0 aGluIHRoZSBzYW1lIHNjaGVtYSBhcmUgY29uc2lkZXJlZC4gIGkuZS4sIHlvdSBjYW5ub3QgZ2l2 ZSBhIHRhYmxlIGFuZCBhCisgICBzY2hlbWEgdmFyaWFibGUgdGhlIHNhbWUgbmFtZS4gIFRoaXMg aXMgYSBjb25zZXF1ZW5jZSBvZiB0aGVtIGJlaW5nIHRyZWF0ZWQKKyAgIGxpa2UgcmVsYXRpb25z IGZvciBwdXJwb3NlcyBvZiA8Y29tbWFuZD5TRUxFQ1Q8L2NvbW1hbmQ+LgorICA8L3BhcmE+Cisg PC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgor CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFs PklGIE5PVCBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIG5hbWUgYWxyZWFkeSBleGlz dHMuIEEgbm90aWNlIGlzIGlzc3VlZCBpbiB0aGlzIGNhc2UuCisgICAgICBOb3RlIHRoYXQgdHlw ZSBvZiB0aGUgdmFyaWFibGUgaXMgbm90IGNvbnNpZGVyZWQsIG5vciBjb3VsZCBpdCBiZSBzaW5j ZSB0aGUgbmFtZXNwYWNlCisgICAgICBzZWFyY2hlZCBjb250YWlucyBub24tdmFyaWFibGUgb2Jq ZWN0cy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiB0aGUg dmFyaWFibGUgdG8gYmUgY3JlYXRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIChvcHRpb25hbGx5IHNj aGVtYS1xdWFsaWZpZWQpIG9mIHRoZSBkYXRhIHR5cGUgb2YgdGhlIHZhcmlhYmxlIHRvIGJlIGNy ZWF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+Q09MTEFURSA8cmVwbGFj ZWFibGU+Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgPGxpdGVyYWw+Q09MTEFURTwvbGl0ZXJhbD4g Y2xhdXNlIGFzc2lnbnMgYSBjb2xsYXRpb24gdG8KKyAgICAgIHRoZSB2YXJpYWJsZSAod2hpY2gg bXVzdCBiZSBvZiBhIGNvbGxhdGFibGUgZGF0YSB0eXBlKS4KKyAgICAgIElmIG5vdCBzcGVjaWZp ZWQsIHRoZSB2YXJpYWJsZSBkYXRhIHR5cGUncyBkZWZhdWx0IGNvbGxhdGlvbiBpcyB1c2VkLgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3Zh cmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90ZXM8 L3RpdGxlPgorCisgIDxwYXJhPgorICAgVXNlIDxjb21tYW5kPkRST1AgVkFSSUFCTEU8L2NvbW1h bmQ+IHRvIHJlbW92ZSBhIHZhcmlhYmxlLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxy ZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIENyZWF0 ZSBhbiBpbnRlZ2VyIHZhcmlhYmxlIDxsaXRlcmFsPnZhcjE8L2xpdGVyYWw+OgorPHByb2dyYW1s aXN0aW5nPgorQ1JFQVRFIFZBUklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK1NFTEVDVCB2YXIxOwor PC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0 MT4KKyAgPHRpdGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1h bmQ+Q1JFQVRFIFZBUklBQkxFPC9jb21tYW5kPiBpcyBhIFBvc3RncmVTUUwgZmVhdHVyZS4KKyAg IDwhLS0gVGhlIGNob2ljZSBvZiB3b3JkaW5nIGhlcmUgc2VlbXMgdG8gYmUgbGVmdCB0byBwZXJz b25hbCBwcmVmZXJlbmNlLi4uIC0tPgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZz ZWN0MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJp bmxpbmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwv bWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcHZhcmlhYmxlIi8+PC9t ZW1iZXI+CisgIDwvc2ltcGxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kaXNjYXJkLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVm L2Rpc2NhcmQuc2dtbAppbmRleCA2YjkwOWI3MjMyLi5kODNhZDgxMWZkIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2Rpc2NhcmQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Rpc2Nh cmQuc2dtbApAQCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxy ZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KLURJU0NBUkQgeyBBTEwgfCBQTEFOUyB8IFNFUVVF TkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQorRElTQ0FSRCB7IEFMTCB8IFBMQU5TIHwgU0VRVUVO Q0VTIHwgVEVNUE9SQVJZIHwgVEVNUCB8IFZBUklBQkxFUyB9CiA8L3N5bm9wc2lzPgogIDwvcmVm c3lub3BzaXNkaXY+CiAKQEAgLTc1LDYgKzc1LDE3IEBAIERJU0NBUkQgeyBBTEwgfCBQTEFOUyB8 IFNFUVVFTkNFUyB8IFRFTVBPUkFSWSB8IFRFTVAgfQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WQVJJ QUJMRVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBSZXNldHMgdGhlIHZhbHVlIG9mIGFsbCBzY2hlbWEgdmFyaWFibGVzLiBXaGVuIHZhcmlhYmxl cworICAgICAgd2lsbCBiZSB1c2VkIGxhdGVyLCB0aGVuIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWdh aW4gdG8KKyAgICAgIE5VTEwgb3IgZGVmYXVsdCB2YWx1ZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8 dGVybT48bGl0ZXJhbD5BTEw8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF92YXJpYWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9kcm9wX3ZhcmlhYmxlLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uYzFjMWEyYmQ2NwotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZHJv cF92YXJpYWJsZS5zZ21sCkBAIC0wLDAgKzEsOTMgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYv ZHJvcF92YXJpYWJsZS5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVm ZW50cnkgaWQ9InNxbC1kcm9wdmFyaWFibGUiPgorIDxpbmRleHRlcm0gem9uZT0ic3FsLWRyb3B2 YXJpYWJsZSI+CisgIDxwcmltYXJ5PkRST1AgVkFSSUFCTEU8L3ByaW1hcnk+CisgPC9pbmRleHRl cm0+CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+RFJPUCBWQVJJQUJMRTwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+RFJPUCBWQVJJQUJMRTwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+cmVtb3ZlIGEgc2NoZW1hIHZhcmlhYmxlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4K KworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgVkFSSUFCTEUgWyBJRiBFWElT VFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lz ZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxw YXJhPgorICAgPGNvbW1hbmQ+RFJPUCBWQVJJQUJMRTwvY29tbWFuZD4gcmVtb3ZlcyBhIHNjaGVt YSB2YXJpYWJsZS4KKyAgIEEgdmFyaWFibGUgY2FuIG9ubHkgYmUgZHJvcHBlZCBieSBpdHMgb3du ZXIgb3IgYSBzdXBlcnVzZXIuCisgICA8IS0tIHRoaXMgd291bGQgc3VnZ2VzdCB0aGF0IHdlIG5l ZWQgYW4gYWx0ZXIgdmFyaWFibGUgb3duZXIgdG8gY29tbWFuZCAtLT4KKyAgPC9wYXJhPgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5J RiBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBEbyBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0 LiBBIG5vdGljZSBpcyBpc3N1ZWQKKyAgICAgIGluIHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAo b3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJs ZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90 aXRsZT4KKworICA8cGFyYT4KKyAgIFRvIHJlbW92ZSB0aGUgc2NoZW1hIHZhcmlhYmxlIDxsaXRl cmFsPnZhcjE8L2xpdGVyYWw+OgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIFZBUklBQkxFIHZh cjE7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFu ZD5EUk9QIFZBUklBQkxFPC9jb21tYW5kPiBpcyBwcm9wcmlldGFyeSBQb3N0Z3JlU1FMIGNvbW1h bmQuCisgICA8IS0tIGNyZWF0ZSB2YXJpYWJsZSBpcyBhICJQb3N0Z3JlU1FMIGZlYXR1cmUiLAor ICAgICAgICB0aGlzIGlzIGEgInByb3ByaWV0YXJ5IFBvc3RncmVTUUwgY29tbWFuZCIgLi4uIC0t PgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlNlZSBB bHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxpbmUiPgorICAgPG1lbWJlcj48 eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXJ2YXJpYWJsZSIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48 eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVs aXN0PgorIDwvcmVmc2VjdDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2dyYW50LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2dyYW50LnNnbWwKaW5kZXggZmY2 NGM3YTNiYS4uYTgzOTIwYTdhMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbApAQCAtNzksNiArNzksMTAgQEAg R1JBTlQgeyBVU0FHRSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgT04gVFlQRSA8cmVwbGFj ZWFibGU+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFRPIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li5dIFsgV0lUSCBHUkFOVCBPUFRJT04gXQogCitHUkFOVCB7IFJFQUQgfCBXUklURSB8IEFMTCBb IFBSSVZJTEVHRVMgXSB9CisgICAgT04gVkFSSUFCTEUgPHJlcGxhY2VhYmxlPnZhcmlhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisgICAgVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIIEdS QU5UIE9QVElPTiBdCisKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFzZT4KIAog ICAgIFsgR1JPVVAgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9uYW1lPC9y ZXBsYWNlYWJsZT4KQEAgLTE2Nyw2ICsxNzEsNyBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQog ICAgZm9yZWlnbiBzZXJ2ZXJzLAogICAgbGFyZ2Ugb2JqZWN0cywKICAgIHNjaGVtYXMsCisgICBz Y2hlbWEgdmFyaWFibGUKICAgIG9yIHRhYmxlc3BhY2VzLgogICAgRm9yIG90aGVyIHR5cGVzIG9m IG9iamVjdHMsIHRoZSBkZWZhdWx0IHByaXZpbGVnZXMKICAgIGdyYW50ZWQgdG8gPGxpdGVyYWw+ UFVCTElDPC9saXRlcmFsPiBhcmUgYXMgZm9sbG93czoKQEAgLTM4NSw2ICszOTAsMjQgQEAgR1JB TlQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLl0gVE8gPHJlcGxhY2UKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlJFQUQ8L2xpdGVy YWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBBbGxvd3Mg dG8gcmVhZCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRl bT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJt PjxsaXRlcmFsPldSSVRFPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAg PHBhcmE+CisgICAgICAgQWxsb3dzIHRvIHNldCBhIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgIDwv cGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJs aXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxsaXRlcmFsPkFMTCBQUklWSUxFR0VTPC9saXRlcmFsPjwv dGVybT4KICAgICAgPGxpc3RpdGVtPgpAQCAtNTUwLDYgKzU3Myw4IEBAIHJvbGVuYW1lPXh4eHgg LS0gcHJpdmlsZWdlcyBncmFudGVkIHRvIGEgcm9sZQogICAgICAgICAgICAgQyAtLSBDUkVBVEUK ICAgICAgICAgICAgIGMgLS0gQ09OTkVDVAogICAgICAgICAgICAgVCAtLSBURU1QT1JBUlkKKyAg ICAgICAgICAgIFMgLS0gUkVBRAorICAgICAgICAgICAgdyAtLSBXUklURQogICAgICAgYXJ3ZER4 dCAtLSBBTEwgUFJJVklMRUdFUyAoZm9yIHRhYmxlcywgdmFyaWVzIGZvciBvdGhlciBvYmplY3Rz KQogICAgICAgICAgICAgKiAtLSBncmFudCBvcHRpb24gZm9yIHByZWNlZGluZyBwcml2aWxlZ2UK IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvbGV0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZThiZjNm NmRkNAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvbGV0LnNnbWwKQEAgLTAs MCArMSw5MCBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9sZXQuc2dtbAorUG9zdGdyZVNRTCBk b2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtbGV0Ij4KKyA8aW5kZXh0ZXJt IHpvbmU9InNxbC1sZXQiPgorICA8cHJpbWFyeT5MRVQ8L3ByaW1hcnk+CisgPC9pbmRleHRlcm0+ CisKKyA8cmVmbWV0YT4KKyAgPHJlZmVudHJ5dGl0bGU+TEVUPC9yZWZlbnRyeXRpdGxlPgorICA8 bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0 YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8 cmVmbmFtZT5MRVQ8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPmNoYW5nZSBhIHNjaGVtYSB2YXJp YWJsZSdzIHZhbHVlPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNp c2Rpdj4KKzxzeW5vcHNpcz4KK0xFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2No ZW1hX3ZhcmlhYmxlPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c3FsX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9w c2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisg IDxwYXJhPgorICAgVGhlIDxjb21tYW5kPkxFVDwvY29tbWFuZD4gY29tbWFuZCB1cGRhdGVzIHRo ZSBzcGVjaWZpZWQgc2NoZW1hIHZhcmlhYmxlJyB2YWx1ZS4KKyAgPC9wYXJhPgorCisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgIDx2 YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPnNjaGVt YV92YXJpYWJsZTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSBuYW1lIG9mIHNjaGVtYSB2YXJpYWJsZS4KKyAgICAgPC9wYXJhPgorICAgIDwv bGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5zcWwgZXhwcmVzc2lvbjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFuIFNRTCBleHByZXNzaW9uLCB0aGUgcmVzdWx0IGlz IGNhc3QgdG8gdGhlIHNjaGVtYSB2YXJpYWJsZSdzIHR5cGUuCisgICAgIDwvcGFyYT4KKyAgICA8 L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorCisgIDxw YXJhPgorICAgRXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBWQVJJQUJMRSBteXZh ciBBUyBpbnRlZ2VyOworTEVUIG15dmFyID0gMTA7CitMRVQgbXl2YXIgPSAoU0VMRUNUIHN1bSh2 YWwpIEZST00gdGFiKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBh cmE+CisgICA8IS0tIHRoaXMgZmVlbHMgbGlrZSBpdCBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmlj LAorICAgICAgICBidXQgSSBkb24ndCBrbm93IGVub3VnaCB0byBtYWtlIGl0IHNvIC0tPgorICAg PGxpdGVyYWw+TEVUPC9saXRlcmFsPiBleHRlbmRzIHN5bnRheCBkZWZpbmVkIGluIHRoZSBTUUwK KyAgIHN0YW5kYXJkLiBUaGUgc3RhbmRhcmQga25vd3MgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBj b21tYW5kLAorICAgdGhhdCBpcyB1c2VkIGZvciBkaWZmZXJlbnQgcHVycG91c2UgaW4gUG9zdGdy ZVNRTC4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5T ZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1i ZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXZhcmlhYmxlIi8+PC9tZW1iZXI+CisgICA8bWVt YmVyPjx4cmVmIGxpbmtlbmQ9InNxbC1kcm9wdmFyaWFibGUiLz48L21lbWJlcj4KKyAgPC9zaW1w bGVsaXN0PgorIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9yZXZva2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNnbWwKaW5kZXgg NTMxN2Y4Y2NiYS4uODQzNWUwNTk1NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZXZv a2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCkBAIC0xMDgsNiArMTA4 LDEyIEBAIFJFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1IgXQogUkVWT0tFIFsgQURNSU4gT1BUSU9O IEZPUiBdCiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLl0gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9s ZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0K KworUkVWT0tFIFsgR1JBTlQgT1BUSU9OIEZPUiBdCisgICAgeyB7IFJFQUQgfCBXUklURSB9IFss IC4uLl0gfCBBTEwgWyBQUklWSUxFR0VTIF0gfQorICAgIE9OIFZBUklBQkxFIDxyZXBsYWNlYWJs ZT52YXJpYWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQorICAgIEZST00geyBbIEdST1VQ IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+ IHwgUFVCTElDIH0gWywgLi4uXQorICAgIFsgQ0FTQ0FERSB8IFJFU1RSSUNUIF0KIDwvc3lub3Bz aXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZmVy ZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmluZGV4IGRiNGY0MTY3ZTMu LjVmYjgyZGY1MWUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTc1LDYgKzc1LDcgQEAKICAgICZhbHRl clR5cGU7CiAgICAmYWx0ZXJVc2VyOwogICAgJmFsdGVyVXNlck1hcHBpbmc7CisgICAmYWx0ZXJW YXJpYWJsZTsKICAgICZhbHRlclZpZXc7CiAgICAmYW5hbHl6ZTsKICAgICZiZWdpbjsKQEAgLTEy Nyw2ICsxMjgsNyBAQAogICAgJmNyZWF0ZVR5cGU7CiAgICAmY3JlYXRlVXNlcjsKICAgICZjcmVh dGVVc2VyTWFwcGluZzsKKyAgICZjcmVhdGVWYXJpYWJsZTsKICAgICZjcmVhdGVWaWV3OwogICAg JmRlYWxsb2NhdGU7CiAgICAmZGVjbGFyZTsKQEAgLTE3NSw2ICsxNzcsNyBAQAogICAgJmRyb3BU eXBlOwogICAgJmRyb3BVc2VyOwogICAgJmRyb3BVc2VyTWFwcGluZzsKKyAgICZkcm9wVmFyaWFi bGU7CiAgICAmZHJvcFZpZXc7CiAgICAmZW5kOwogICAgJmV4ZWN1dGU7CkBAIC0xODMsNiArMTg2 LDcgQEAKICAgICZncmFudDsKICAgICZpbXBvcnRGb3JlaWduU2NoZW1hOwogICAgJmluc2VydDsK KyAgICZsZXQ7CiAgICAmbGlzdGVuOwogICAgJmxvYWQ7CiAgICAmbG9jazsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYwppbmRleCBjZDgyNzBkNWZiLi5mM2FhOWQ2YzhmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1l c3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjb21tYW5k cy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgpAQCAtMTk5Niw2ICsxOTk3LDcgQEAgQ29tbWl0VHJh bnNhY3Rpb24odm9pZCkKIAkgKiBjdXJzb3JzLCB0byBhdm9pZCBkYW5nbGluZy1yZWZlcmVuY2Ug cHJvYmxlbXMpCiAJICovCiAJUHJlQ29tbWl0X29uX2NvbW1pdF9hY3Rpb25zKCk7CisJU2NoZW1h VmFyaWFibGVQcmVDb21taXRfb25fY29tbWl0X2FjdGlvbnMoKTsKIAogCS8qIGNsb3NlIGxhcmdl IG9iamVjdHMgYmVmb3JlIGxvd2VyLWxldmVsIGNsZWFudXAgKi8KIAlBdEVPWGFjdF9MYXJnZU9i amVjdCh0cnVlKTsKQEAgLTIxMjEsNiArMjEyMyw3IEBAIENvbW1pdFRyYW5zYWN0aW9uKHZvaWQp CiAJQXRFT1hhY3RfR1VDKHRydWUsIDEpOwogCUF0RU9YYWN0X1NQSSh0cnVlKTsKIAlBdEVPWGFj dF9vbl9jb21taXRfYWN0aW9ucyh0cnVlKTsKKwlBdEVPWGFjdF9TY2hlbWFWYXJpYWJsZXNfb25f Y29tbWl0X2FjdGlvbnModHJ1ZSk7CiAJQXRFT1hhY3RfTmFtZXNwYWNlKHRydWUsIGlzX3BhcmFs bGVsX3dvcmtlcik7CiAJQXRFT1hhY3RfU01ncigpOwogCUF0RU9YYWN0X0ZpbGVzKHRydWUpOwpA QCAtMjYwMSw2ICsyNjA0LDcgQEAgQWJvcnRUcmFuc2FjdGlvbih2b2lkKQogCQlBdEVPWGFjdF9H VUMoZmFsc2UsIDEpOwogCQlBdEVPWGFjdF9TUEkoZmFsc2UpOwogCQlBdEVPWGFjdF9vbl9jb21t aXRfYWN0aW9ucyhmYWxzZSk7CisJCUF0RU9YYWN0X1NjaGVtYVZhcmlhYmxlc19vbl9jb21taXRf YWN0aW9ucyhmYWxzZSk7CiAJCUF0RU9YYWN0X05hbWVzcGFjZShmYWxzZSwgaXNfcGFyYWxsZWxf d29ya2VyKTsKIAkJQXRFT1hhY3RfU01ncigpOwogCQlBdEVPWGFjdF9GaWxlcyhmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9NYWtlZmlsZQppbmRleCAwODY1MjQwZjExLi4xZjdjNGQxMjIzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFr ZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgT0JKUyA9IGNhdGFsb2cubyBkZXBlbmRlbmN5Lm8gaGVh cC5vIGluZGV4Lm8gaW5kZXhpbmcubyBuYW1lc3BhY2UubyBhY2xjaGsubyBcCiAgICAgICAgcGdf ZGVwZW5kLm8gcGdfZW51bS5vIHBnX2luaGVyaXRzLm8gcGdfbGFyZ2VvYmplY3QubyBwZ19uYW1l c3BhY2UubyBcCiAgICAgICAgcGdfb3BlcmF0b3IubyBwZ19wcm9jLm8gcGdfcHVibGljYXRpb24u byBwZ19yYW5nZS5vIFwKIAkgICBwZ19kYl9yb2xlX3NldHRpbmcubyBwZ19zaGRlcGVuZC5vIHBn X3N1YnNjcmlwdGlvbi5vIHBnX3R5cGUubyBcCi0JICAgc3RvcmFnZS5vIHRvYXN0aW5nLm8KKwkg ICBwZ192YXJpYWJsZS5vIHN0b3JhZ2UubyB0b2FzdGluZy5vCiAKIEJLSUZJTEVTID0gcG9zdGdy ZXMuYmtpIHBvc3RncmVzLmRlc2NyaXB0aW9uIHBvc3RncmVzLnNoZGVzY3JpcHRpb24KIApAQCAt NDYsNyArNDYsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX2RlZmF1bHRfYWNsLmggcGdf aW5pdF9wcml2cy5oIHBnX3NlY2xhYmVsLmggcGdfc2hzZWNsYWJlbC5oIFwKIAlwZ19jb2xsYXRp b24uaCBwZ19wYXJ0aXRpb25lZF90YWJsZS5oIHBnX3JhbmdlLmggcGdfdHJhbnNmb3JtLmggXAog CXBnX3NlcXVlbmNlLmggcGdfcHVibGljYXRpb24uaCBwZ19wdWJsaWNhdGlvbl9yZWwuaCBwZ19z dWJzY3JpcHRpb24uaCBcCi0JcGdfc3Vic2NyaXB0aW9uX3JlbC5oCisJcGdfc3Vic2NyaXB0aW9u X3JlbC5oIHBnX3ZhcmlhYmxlLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9HX0hF QURFUlM6JS5oPSVfZC5oKSBzY2hlbWFwZy5oCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDU3OGU0 YzY1OTIuLjg2OTE3ZTE1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hr LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtNTcsNiArNTcsNyBAQAog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfcGFyc2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 c190ZW1wbGF0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJhbnNmb3JtLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMu aCIKICNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvZXh0ZW5zaW9uLmgiCkBAIC0xMTIsNiArMTEzLDcgQEAgc3RhdGljIHZvaWQgRXhlY0dyYW50 X0xhcmdlb2JqZWN0KEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMgdm9pZCBFeGVj R3JhbnRfTmFtZXNwYWNlKEludGVybmFsR3JhbnQgKmdyYW50U3RtdCk7CiBzdGF0aWMgdm9pZCBF eGVjR3JhbnRfVGFibGVzcGFjZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogc3RhdGljIHZv aWQgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqZ3JhbnRTdG10KTsKK3N0YXRpYyB2b2lk IEV4ZWNHcmFudF9WYXJpYWJsZShJbnRlcm5hbEdyYW50ICpncmFudFN0bXQpOwogCiBzdGF0aWMg dm9pZCBTZXREZWZhdWx0QUNMc0luU2NoZW1hcyhJbnRlcm5hbERlZmF1bHRBQ0wgKmlhY2xzLCBM aXN0ICpuc3BuYW1lcyk7CiBzdGF0aWMgdm9pZCBTZXREZWZhdWx0QUNMKEludGVybmFsRGVmYXVs dEFDTCAqaWFjbHMpOwpAQCAtMjg0LDYgKzI4Niw5IEBAIHJlc3RyaWN0X2FuZF9jaGVja19ncmFu dChib29sIGlzX2dyYW50LCBBY2xNb2RlIGF2YWlsX2dvcHRpb25zLCBib29sIGFsbF9wcml2cywK IAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJCXdob2xlX21hc2sgPSBBQ0xfQUxMX1JJR0hUU19UWVBF OwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJd2hvbGVfbWFzayA9IEFD TF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90 IHJlYWNoZWQsIGJ1dCBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MDcsNiArNTEyLDEwIEBA IEV4ZWN1dGVHcmFudFN0bXQoR3JhbnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBB Q0xfQUxMX1JJR0hUU19GT1JFSUdOX1NFUlZFUjsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29w KCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBmb3JlaWduIHNlcnZlciIpOwogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxM X1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHBy aXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFibGUiKTsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBHcmFudFN0bXQub2JqdHlwZTogJWQi LAogCQkJCSAoaW50KSBzdG10LT5vYmp0eXBlKTsKQEAgLTYwOSw2ICs2MTgsOSBAQCBFeGVjR3Jh bnRTdG10X29pZHMoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJCWNhc2UgT0JKRUNUX1RBQkxFU1BB Q0U6CiAJCQlFeGVjR3JhbnRfVGFibGVzcGFjZShpc3RtdCk7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlFeGVjR3JhbnRfVmFyaWFibGUoaXN0bXQpOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0 eXBlOiAlZCIsCiAJCQkJIChpbnQpIGlzdG10LT5vYmp0eXBlKTsKQEAgLTc2OCw2ICs3ODAsMTYg QEAgb2JqZWN0TmFtZXNUb09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpvYmpuYW1lcykK IAkJCQlvYmplY3RzID0gbGFwcGVuZF9vaWQob2JqZWN0cywgc3J2aWQpOwogCQkJfQogCQkJYnJl YWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJZm9yZWFjaChjZWxsLCBvYmpuYW1lcykK KwkJCXsKKwkJCQlSYW5nZVZhciAgICp2YXJ2YXIgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGNlbGwp OworCQkJCU9pZAkJCXJlbE9pZDsKKworCQkJCXJlbE9pZCA9IGxvb2t1cF92YXJpYWJsZSh2YXJ2 YXItPnNjaGVtYW5hbWUsIHZhcnZhci0+cmVsbmFtZSwgZmFsc2UpOworCQkJCW9iamVjdHMgPSBs YXBwZW5kX29pZChvYmplY3RzLCByZWxPaWQpOworCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJ CQkJIChpbnQpIG9ianR5cGUpOwpAQCAtODU1LDYgKzg3NywzMSBAQCBvYmplY3RzSW5TY2hlbWFU b09pZHMoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpuc3BuYW1lcykKIAkJCQkJaGVhcF9jbG9z ZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpF Q1RfVkFSSUFCTEU6CisJCQkJeworCQkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJCVJlbGF0aW9u CXJlbDsKKwkJCQkJSGVhcFNjYW5EZXNjIHNjYW47CisJCQkJCUhlYXBUdXBsZQl0dXBsZTsKKwor CQkJCQlTY2FuS2V5SW5pdCgma2V5LAorCQkJCQkJCQlBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWVz cGFjZSwKKwkJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQkJCQlP YmplY3RJZEdldERhdHVtKG5hbWVzcGFjZUlkKSk7CisKKwkJCQkJcmVsID0gaGVhcF9vcGVuKFZh cmlhYmxlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJc2NhbiA9IGhlYXBfYmVn aW5zY2FuX2NhdGFsb2cocmVsLCAxLCAma2V5KTsKKworCQkJCQl3aGlsZSAoKHR1cGxlID0gaGVh cF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwkJCQkJewor CQkJCQkJb2JqZWN0cyA9IGxhcHBlbmRfb2lkKG9iamVjdHMsIEhlYXBUdXBsZUdldE9pZCh0dXBs ZSkpOworCQkJCQl9CisKKwkJCQkJaGVhcF9lbmRzY2FuKHNjYW4pOworCQkJCQloZWFwX2Nsb3Nl KHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6 CiAJCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KIAkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCkBAIC0xMDE4LDYgKzEwNjUsMTAgQEAgRXhlY0Fs dGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJEZWZhdWx0 UHJpdmlsZWdlc1N0bXQgKnMKIAkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfU0NI RU1BOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUg JXMgZm9yIHNjaGVtYSIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJ YWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJQUJMRTsKKwkJCWVycm9ybXNnID0g Z2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBzY2hlbWEgdmFyaWFi bGUiKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBHcmFudFN0bXQub2JqdHlwZTogJWQiLAogCQkJCSAoaW50KSBhY3Rpb24tPm9ianR5cGUpOwpA QCAtMTIxNSw2ICsxMjY2LDEyIEBAIFNldERlZmF1bHRBQ0woSW50ZXJuYWxEZWZhdWx0QUNMICpp YWNscykKIAkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19TQ0hFTUE7CiAJCQli cmVhazsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCW9ianR5cGUgPSBERUZBQ0xPQkpf VkFSSUFCTEU7CisJCQlpZiAoaWFjbHMtPmFsbF9wcml2cyAmJiB0aGlzX3ByaXZpbGVnZXMgPT0g QUNMX05PX1JJR0hUUykKKwkJCQl0aGlzX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19WQVJJ QUJMRTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIG9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgaWFjbHMtPm9ianR5cGUpOwpAQCAtMTQ0MSw2 ICsxNDk4LDkgQEAgUmVtb3ZlUm9sZUZyb21PYmplY3RBQ0woT2lkIHJvbGVpZCwgT2lkIGNsYXNz aWQsIE9pZCBvYmppZCkKIAkJCWNhc2UgREVGQUNMT0JKX05BTUVTUEFDRToKIAkJCQlpYWNscy5v Ymp0eXBlID0gT0JKRUNUX1NDSEVNQTsKIAkJCQlicmVhazsKKwkJCWNhc2UgREVGQUNMT0JKX1ZB UklBQkxFOgorCQkJCWlhY2xzLm9ianR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJYnJlYWs7 CiAJCQlkZWZhdWx0OgogCQkJCS8qIFNob3VsZG4ndCBnZXQgaGVyZSAqLwogCQkJCWVsb2coRVJS T1IsICJ1bmV4cGVjdGVkIGRlZmF1bHQgQUNMIHR5cGU6ICVkIiwKQEAgLTMyNjYsNiArMzMyNiwx MjkgQEAgRXhlY0dyYW50X1R5cGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCiAJaGVhcF9jbG9zZShy ZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkCitFeGVjR3JhbnRf VmFyaWFibGUoSW50ZXJuYWxHcmFudCAqaXN0bXQpCit7CisJUmVsYXRpb24JcmVsYXRpb247CisJ TGlzdENlbGwgICAqY2VsbDsKKworCWlmIChpc3RtdC0+YWxsX3ByaXZzICYmIGlzdG10LT5wcml2 aWxlZ2VzID09IEFDTF9OT19SSUdIVFMpCisJCWlzdG10LT5wcml2aWxlZ2VzID0gQUNMX0FMTF9S SUdIVFNfVkFSSUFCTEU7CisKKwlyZWxhdGlvbiA9IGhlYXBfb3BlbihWYXJpYWJsZVJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJZm9yZWFjaChjZWxsLCBpc3RtdC0+b2JqZWN0cykK Kwl7CisJCU9pZAkJCXZhcklkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJRm9ybV9wZ192YXJpYWJs ZSBwZ192YXJpYWJsZV90dXBsZTsKKwkJRGF0dW0JCWFjbERhdHVtOworCQlib29sCQlpc051bGw7 CisJCUFjbE1vZGUJCWF2YWlsX2dvcHRpb25zOworCQlBY2xNb2RlCQl0aGlzX3ByaXZpbGVnZXM7 CisJCUFjbAkJICAgKm9sZF9hY2w7CisJCUFjbAkJICAgKm5ld19hY2w7CisJCU9pZAkJCWdyYW50 b3JJZDsKKwkJT2lkCQkJb3duZXJJZDsKKwkJSGVhcFR1cGxlCXR1cGxlOworCQlIZWFwVHVwbGUJ bmV3dHVwbGU7CisJCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfdmFyaWFibGVdOworCQlib29sCQlu dWxsc1tOYXR0c19wZ192YXJpYWJsZV07CisJCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3Zhcmlh YmxlXTsKKwkJaW50CQkJbm9sZG1lbWJlcnM7CisJCWludAkJCW5uZXdtZW1iZXJzOworCQlPaWQJ CSAgICpvbGRtZW1iZXJzOworCQlPaWQJCSAgICpuZXdtZW1iZXJzOworCisJCXR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcklkKSk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3Igc2NoZW1hIHZhcmlhYmxlcyAldSIsIHZhcklkKTsKKworCQlwZ192YXJpYWJs ZV90dXBsZSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCS8qCisJ CSAqIEdldCBvd25lciBJRCBhbmQgd29ya2luZyBjb3B5IG9mIGV4aXN0aW5nIEFDTC4gSWYgdGhl cmUncyBubyBBQ0wsCisJCSAqIHN1YnN0aXR1dGUgdGhlIHByb3BlciBkZWZhdWx0LgorCQkgKi8K KwkJb3duZXJJZCA9IHBnX3ZhcmlhYmxlX3R1cGxlLT52YXJvd25lcjsKKwkJYWNsRGF0dW0gPSBT eXNDYWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsIHR1cGxlLCBBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFj bCwKKwkJCQkJCQkJICAgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCXsKKwkJCW9sZF9hY2wg PSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJZCk7CisJCQkvKiBUaGVyZSBhcmUg bm8gb2xkIG1lbWJlciByb2xlcyBhY2NvcmRpbmcgdG8gdGhlIGNhdGFsb2dzICovCisJCQlub2xk bWVtYmVycyA9IDA7CisJCQlvbGRtZW1iZXJzID0gTlVMTDsKKwkJfQorCQllbHNlCisJCXsKKwkJ CW9sZF9hY2wgPSBEYXR1bUdldEFjbFBDb3B5KGFjbERhdHVtKTsKKwkJCS8qIEdldCB0aGUgcm9s ZXMgbWVudGlvbmVkIGluIHRoZSBleGlzdGluZyBBQ0wgKi8KKwkJCW5vbGRtZW1iZXJzID0gYWNs bWVtYmVycyhvbGRfYWNsLCAmb2xkbWVtYmVycyk7CisJCX0KKworCQkvKiBEZXRlcm1pbmUgSUQg dG8gZG8gdGhlIGdyYW50IGFzLCBhbmQgYXZhaWxhYmxlIGdyYW50IG9wdGlvbnMgKi8KKwkJc2Vs ZWN0X2Jlc3RfZ3JhbnRvcihHZXRVc2VySWQoKSwgaXN0bXQtPnByaXZpbGVnZXMsCisJCQkJCQkJ b2xkX2FjbCwgb3duZXJJZCwKKwkJCQkJCQkmZ3JhbnRvcklkLCAmYXZhaWxfZ29wdGlvbnMpOwor CisJCS8qCisJCSAqIFJlc3RyaWN0IHRoZSBwcml2aWxlZ2VzIHRvIHdoYXQgd2UgY2FuIGFjdHVh bGx5IGdyYW50LCBhbmQgZW1pdCB0aGUKKwkJICogc3RhbmRhcmRzLW1hbmRhdGVkIHdhcm5pbmcg YW5kIGVycm9yIG1lc3NhZ2VzLgorCQkgKi8KKwkJdGhpc19wcml2aWxlZ2VzID0KKwkJCXJlc3Ry aWN0X2FuZF9jaGVja19ncmFudChpc3RtdC0+aXNfZ3JhbnQsIGF2YWlsX2dvcHRpb25zLAorCQkJ CQkJCQkJIGlzdG10LT5hbGxfcHJpdnMsIGlzdG10LT5wcml2aWxlZ2VzLAorCQkJCQkJCQkJIHZh cklkLCBncmFudG9ySWQsIE9CSkVDVF9WQVJJQUJMRSwKKwkJCQkJCQkJCSBOYW1lU3RyKHBnX3Zh cmlhYmxlX3R1cGxlLT52YXJuYW1lKSwKKwkJCQkJCQkJCSAwLCBOVUxMKTsKKworCQkvKgorCQkg KiBHZW5lcmF0ZSBuZXcgQUNMLgorCQkgKi8KKwkJbmV3X2FjbCA9IG1lcmdlX2FjbF93aXRoX2dy YW50KG9sZF9hY2wsIGlzdG10LT5pc19ncmFudCwKKwkJCQkJCQkJCSAgIGlzdG10LT5ncmFudF9v cHRpb24sIGlzdG10LT5iZWhhdmlvciwKKwkJCQkJCQkJCSAgIGlzdG10LT5ncmFudGVlcywgdGhp c19wcml2aWxlZ2VzLAorCQkJCQkJCQkJICAgZ3JhbnRvcklkLCBvd25lcklkKTsKKworCQkvKgor CQkgKiBXZSBuZWVkIHRoZSBtZW1iZXJzIG9mIGJvdGggb2xkIGFuZCBuZXcgQUNMcyBzbyB3ZSBj YW4gY29ycmVjdCB0aGUKKwkJICogc2hhcmVkIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24uCisJCSAq LworCQlubmV3bWVtYmVycyA9IGFjbG1lbWJlcnMobmV3X2FjbCwgJm5ld21lbWJlcnMpOworCisJ CS8qIGZpbmlzaGVkIGJ1aWxkaW5nIG5ldyBBQ0wgdmFsdWUsIG5vdyBpbnNlcnQgaXQgKi8KKwkJ TWVtU2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCQlNZW1TZXQobnVsbHMsIGZhbHNl LCBzaXplb2YobnVsbHMpKTsKKwkJTWVtU2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxh Y2VzKSk7CisKKwkJcmVwbGFjZXNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7 CisJCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCAtIDFdID0gUG9pbnRlckdldERhdHVt KG5ld19hY2wpOworCisJCW5ld3R1cGxlID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwbGUsIFJlbGF0 aW9uR2V0RGVzY3IocmVsYXRpb24pLCB2YWx1ZXMsCisJCQkJCQkJCQkgbnVsbHMsIHJlcGxhY2Vz KTsKKworCQlDYXRhbG9nVHVwbGVVcGRhdGUocmVsYXRpb24sICZuZXd0dXBsZS0+dF9zZWxmLCBu ZXd0dXBsZSk7CisKKwkJLyogVXBkYXRlIGluaXRpYWwgcHJpdmlsZWdlcyBmb3IgZXh0ZW5zaW9u cyAqLworCQlyZWNvcmRFeHRlbnNpb25Jbml0UHJpdih2YXJJZCwgVmFyaWFibGVSZWxhdGlvbklk LCAwLCBuZXdfYWNsKTsKKworCQkvKiBVcGRhdGUgdGhlIHNoYXJlZCBkZXBlbmRlbmN5IEFDTCBp bmZvICovCisJCXVwZGF0ZUFjbERlcGVuZGVuY2llcyhWYXJpYWJsZVJlbGF0aW9uSWQsIHZhcklk LCAwLAorCQkJCQkJCSAgb3duZXJJZCwKKwkJCQkJCQkgIG5vbGRtZW1iZXJzLCBvbGRtZW1iZXJz LAorCQkJCQkJCSAgbm5ld21lbWJlcnMsIG5ld21lbWJlcnMpOworCisJCVJlbGVhc2VTeXNDYWNo ZSh0dXBsZSk7CisKKwkJcGZyZWUobmV3X2FjbCk7CisKKwkJLyogcHJldmVudCBlcnJvciB3aGVu IHByb2Nlc3NpbmcgZHVwbGljYXRlIG9iamVjdHMgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1l bnQoKTsKKwl9CisKKwloZWFwX2Nsb3NlKHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30K KwogCiBzdGF0aWMgQWNsTW9kZQogc3RyaW5nX3RvX3ByaXZpbGVnZShjb25zdCBjaGFyICpwcml2 bmFtZSkKQEAgLTMyOTgsNiArMzQ4MSwxMCBAQCBzdHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0IGNo YXIgKnByaXZuYW1lKQogCQlyZXR1cm4gQUNMX0NPTk5FQ1Q7CiAJaWYgKHN0cmNtcChwcml2bmFt ZSwgInJ1bGUiKSA9PSAwKQogCQlyZXR1cm4gMDsJCQkJLyogaWdub3JlIG9sZCBSVUxFIHByaXZp bGVnZXMgKi8KKwlpZiAoc3RyY21wKHByaXZuYW1lLCAicmVhZCIpID09IDApCisJCXJldHVybiBB Q0xfUkVBRDsKKwlpZiAoc3RyY21wKHByaXZuYW1lLCAid3JpdGUiKSA9PSAwKQorCQlyZXR1cm4g QUNMX1dSSVRFOwogCWVyZXBvcnQoRVJST1IsCiAJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCiAJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlIHR5cGUgXCIlc1wiIiwg cHJpdm5hbWUpKSk7CkBAIC0zMzMzLDYgKzM1MjAsMTAgQEAgcHJpdmlsZWdlX3RvX3N0cmluZyhB Y2xNb2RlIHByaXZpbGVnZSkKIAkJCXJldHVybiAiVEVNUCI7CiAJCWNhc2UgQUNMX0NPTk5FQ1Q6 CiAJCQlyZXR1cm4gIkNPTk5FQ1QiOworCQljYXNlIEFDTF9SRUFEOgorCQkJcmV0dXJuICJSRUFE IjsKKwkJY2FzZSBBQ0xfV1JJVEU6CisJCQlyZXR1cm4gIldSSVRFIjsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcHJpdmlsZWdlOiAlZCIsIChpbnQpIHByaXZpbGVn ZSk7CiAJfQpAQCAtMzQ1Niw2ICszNjQ3LDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFj bGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJ bXNnID0gZ2V0dGV4dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3IgdHlwZSAlcyIpOwogCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1ZBUklBQkxFOgorCQkJCQkJbXNnID0gZ2V0dGV4 dF9ub29wKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1hIHZhcmlhYmxlICVzIik7CisJCQkJ CQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9v cCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHZpZXcgJXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzU2 Niw2ICszNzYwLDkgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlw ZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9UWVBFOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9u b29wKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25l ciBvZiBzY2hlbWEgdmFyaWFibGUgJXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVD VF9WSUVXOgogCQkJCQkJbXNnID0gZ2V0dGV4dF9ub29wKCJtdXN0IGJlIG93bmVyIG9mIHZpZXcg JXMiKTsKIAkJCQkJCWJyZWFrOwpAQCAtMzcxMCw2ICszOTA3LDggQEAgcGdfYWNsbWFzayhPYmpl Y3RUeXBlIG9ianR5cGUsIE9pZCB0YWJsZV9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9s ZWlkLAogCQkJcmV0dXJuIEFDTF9OT19SSUdIVFM7CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQly ZXR1cm4gcGdfdHlwZV9hY2xtYXNrKHRhYmxlX29pZCwgcm9sZWlkLCBtYXNrLCBob3cpOworCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiBwZ192YXJpYWJsZV9hY2xtYXNrKHRhYmxl X29pZCwgcm9sZWlkLCBtYXNrLCBob3cpOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBvYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG9ianR5cGUpOwpAQCAtNDQ5OSw2 ICs0Njk4LDY3IEBAIHBnX3R5cGVfYWNsbWFzayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFj bE1vZGUgbWFzaywgQWNsTWFza0hvdyBob3cpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAq IEV4cG9ydGVkIHJvdXRpbmUgZm9yIGV4YW1pbmluZyBhIHVzZXIncyBwcml2aWxlZ2VzIGZvciBh IHZhcmlhYmxlLgorICovCitBY2xNb2RlCitwZ192YXJpYWJsZV9hY2xtYXNrKE9pZCB2YXJfb2lk LCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KQoreworCUFjbE1vZGUJ CXJlc3VsdDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCWFjbERhdHVtOworCWJvb2wJCWlz TnVsbDsKKwlBY2wJCSAgICphY2w7CisJT2lkCQkJb3duZXJJZDsKKworCUZvcm1fcGdfdmFyaWFi bGUgdmFyRm9ybTsKKworCS8qIEJ5cGFzcyBwZXJtaXNzaW9uIGNoZWNrcyBmb3Igc3VwZXJ1c2Vy cyAqLworCWlmIChzdXBlcnVzZXJfYXJnKHJvbGVpZCkpCisJCXJldHVybiBtYXNrOworCisJLyoK KwkgKiBNdXN0IGdldCB0aGUgdHlwZSdzIHR1cGxlIGZyb20gcGdfdHlwZQorCSAqLworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcl9vaWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygidmFyaWFi bGUgd2l0aCBPSUQgJXUgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJdmFyX29pZCkpKTsKKwl2YXJG b3JtID0gKEZvcm1fcGdfdmFyaWFibGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgorCSAqIE5v dyBnZXQgdGhlIHR5cGUncyBvd25lciBhbmQgQUNMIGZyb20gdGhlIHR1cGxlCisJICovCisJb3du ZXJJZCA9IHZhckZvcm0tPnZhcm93bmVyOworCisJYWNsRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo VkFSSUFCTEVPSUQsIHR1cGxlLAorCQkJCQkJCSAgIEFudW1fcGdfdmFyaWFibGVfdmFyYWNsLCAm aXNOdWxsKTsKKwlpZiAoaXNOdWxsKQorCXsKKwkJLyogTm8gQUNMLCBzbyBidWlsZCBkZWZhdWx0 IEFDTCAqLworCQlhY2wgPSBhY2xkZWZhdWx0KE9CSkVDVF9WQVJJQUJMRSwgb3duZXJJZCk7CisJ CWFjbERhdHVtID0gKERhdHVtKSAwOworCX0KKwllbHNlCisJeworCQkvKiBkZXRvYXN0IHJlbCdz IEFDTCBpZiBuZWNlc3NhcnkgKi8KKwkJYWNsID0gRGF0dW1HZXRBY2xQKGFjbERhdHVtKTsKKwl9 CisKKwlyZXN1bHQgPSBhY2xtYXNrKGFjbCwgcm9sZWlkLCBvd25lcklkLCBtYXNrLCBob3cpOwor CisJLyogaWYgd2UgaGF2ZSBhIGRldG9hc3RlZCBjb3B5LCBmcmVlIGl0ICovCisJaWYgKGFjbCAm JiAoUG9pbnRlcikgYWNsICE9IERhdHVtR2V0UG9pbnRlcihhY2xEYXR1bSkpCisJCXBmcmVlKGFj bCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwor CiAvKgogICogRXhwb3J0ZWQgcm91dGluZSBmb3IgY2hlY2tpbmcgYSB1c2VyJ3MgYWNjZXNzIHBy aXZpbGVnZXMgdG8gYSBjb2x1bW4KICAqCkBAIC00NzQ0LDYgKzUwMDQsMTggQEAgcGdfdHlwZV9h Y2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSkKIAkJcmV0dXJu IEFDTENIRUNLX05PX1BSSVY7CiB9CiAKKy8qCisgKiBFeHBvcnRlZCByb3V0aW5lIGZvciBjaGVj a2luZyBhIHVzZXIncyBhY2Nlc3MgcHJpdmlsZWdlcyB0byBhIHZhcmlhYmxlCisgKi8KK0FjbFJl c3VsdAorcGdfdmFyaWFibGVfYWNsY2hlY2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xN b2RlIG1vZGUpCit7CisJaWYgKHBnX3ZhcmlhYmxlX2FjbG1hc2sodHlwZV9vaWQsIHJvbGVpZCwg bW9kZSwgQUNMTUFTS19BTlkpICE9IDApCisJCXJldHVybiBBQ0xDSEVDS19PSzsKKwllbHNlCisJ CXJldHVybiBBQ0xDSEVDS19OT19QUklWOworfQorCiAvKgogICogT3duZXJzaGlwIGNoZWNrIGZv ciBhIHJlbGF0aW9uIChzcGVjaWZpZWQgYnkgT0lEKS4KICAqLwpAQCAtNTM2MSw2ICs1NjMzLDMz IEBAIHBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hlY2soT2lkIHN0YXRfb2lkLCBPaWQgcm9s ZWlkKQogCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQpOwogfQogCisv KgorICogT3duZXJzaGlwIGNoZWNrIGZvciBhIHNjaGVtYSB2YXJpYWJsZXMgKHNwZWNpZmllZCBi eSBPSUQpLgorICovCitib29sCitwZ192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBkYl9vaWQsIE9p ZCByb2xlaWQpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCU9pZAkJCW93bmVySWQ7CisKKwkvKiBT dXBlcnVzZXJzIGJ5cGFzcyBhbGwgcGVybWlzc2lvbiBjaGVja2luZy4gKi8KKwlpZiAoc3VwZXJ1 c2VyX2FyZyhyb2xlaWQpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKGRiX29pZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfREFUQUJBU0UpLAorCQkJCSBlcnJtc2coInZhcmlhYmxlIHdpdGggT0lEICV1 IGRvZXMgbm90IGV4aXN0IiwgZGJfb2lkKSkpOworCisJb3duZXJJZCA9ICgoRm9ybV9wZ192YXJp YWJsZSkgR0VUU1RSVUNUKHR1cGxlKSktPnZhcm93bmVyOworCisJUmVsZWFzZVN5c0NhY2hlKHR1 cGxlKTsKKworCXJldHVybiBoYXNfcHJpdnNfb2Zfcm9sZShyb2xlaWQsIG93bmVySWQpOworfQor CisKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHNwZWNpZmllZCByb2xlIGhhcyBDUkVBVEVST0xFIHBy aXZpbGVnZSAob3IgaXMgYSBzdXBlcnVzZXIpCiAgKgpAQCAtNTQ4Niw2ICs1Nzg1LDEwIEBAIGdl dF91c2VyX2RlZmF1bHRfYWNsKE9iamVjdFR5cGUgb2JqdHlwZSwgT2lkIG93bmVySWQsIE9pZCBu c3Bfb2lkKQogCQkJZGVmYWNsb2JqdHlwZSA9IERFRkFDTE9CSl9OQU1FU1BBQ0U7CiAJCQlicmVh azsKIAorCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCWRlZmFjbG9ianR5cGUgPSBERUZBQ0xP QkpfVkFSSUFCTEU7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIE5VTEw7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCA0ZjFkMzY1MzU3Li43ODJkZGIxNjU1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfdHNfdGVtcGxhdGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgpAQCAt NjcsNiArNjgsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1hY21k cy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvc2VjbGFiZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKQEAgLTEyODAsNiArMTI4MiwxMCBAQCBkb0RlbGV0aW9u KGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJRHJvcFRyYW5zZm9y bUJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19WQVJJ QUJMRToKKwkJCVJlbW92ZVZhcmlhYmxlQnlJZChvYmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFr OworCiAJCQkvKgogCQkJICogVGhlc2UgZ2xvYmFsIG9iamVjdCB0eXBlcyBhcmUgbm90IHN1cHBv cnRlZCBoZXJlLgogCQkJICovCkBAIC0yNTM3LDYgKzI1NDMsOSBAQCBnZXRPYmplY3RDbGFzcyhj b25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAKIAkJY2FzZSBUcmFuc2Zvcm1SZWxhdGlvbklk OgogCQkJcmV0dXJuIE9DTEFTU19UUkFOU0ZPUk07CisKKwkJY2FzZSBWYXJpYWJsZVJlbGF0aW9u SWQ6CisJCQlyZXR1cm4gT0NMQVNTX1ZBUklBQkxFOwogCX0KIAogCS8qIHNob3VsZG4ndCBnZXQg aGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKaW5kZXggNWQxM2U2YTNkNy4uNDUzZWMxYzVh MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ190c19wYXJzZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192 YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMuaCIKICNpbmNsdWRlICJm dW5jYXBpLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTc1NSw2ICs3NTYsNzEgQEAg UmVsYXRpb25Jc1Zpc2libGUoT2lkIHJlbGlkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgor ICogVmFyaWFibGVJc1Zpc2libGUKKyAqCQlEZXRlcm1pbmUgd2hldGhlciBhIHZhcmlhYmxlIChp ZGVudGlmaWVkIGJ5IE9JRCkgaXMgdmlzaWJsZSBpbiB0aGUKKyAqCQljdXJyZW50IHNlYXJjaCBw YXRoLiAgVmlzaWJsZSBtZWFucyAid291bGQgYmUgZm91bmQgYnkgc2VhcmNoaW5nCisgKgkJZm9y IHRoZSB1bnF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIi4KKyAqLworYm9vbAorVmFyaWFibGVJc1Zp c2libGUoT2lkIHZhcmlkKQoreworCUhlYXBUdXBsZQl2YXJ0dXA7CisJRm9ybV9wZ192YXJpYWJs ZSB2YXJmb3JtOworCU9pZAkJCXZhcm5hbWVzcGFjZTsKKwlib29sCQl2aXNpYmxlOworCisJdmFy dHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlk KSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHZhcnR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJdmFyZm9y bSA9IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodmFydHVwKTsKKworCXJlY29tcHV0ZU5h bWVzcGFjZVBhdGgoKTsKKworCS8qCisJICogUXVpY2sgY2hlY2s6IGlmIGl0IGFpbid0IGluIHRo ZSBwYXRoIGF0IGFsbCwgaXQgYWluJ3QgdmlzaWJsZS4gSXRlbXMgaW4KKwkgKiB0aGUgc3lzdGVt IG5hbWVzcGFjZSBhcmUgc3VyZWx5IGluIHRoZSBwYXRoIGFuZCBzbyB3ZSBuZWVkbid0IGV2ZW4g ZG8KKwkgKiBsaXN0X21lbWJlcl9vaWQoKSBmb3IgdGhlbS4KKwkgKi8KKwl2YXJuYW1lc3BhY2Ug PSB2YXJmb3JtLT52YXJuYW1lc3BhY2U7CisJaWYgKHZhcm5hbWVzcGFjZSAhPSBQR19DQVRBTE9H X05BTUVTUEFDRSAmJgorCQkhbGlzdF9tZW1iZXJfb2lkKGFjdGl2ZVNlYXJjaFBhdGgsIHZhcm5h bWVzcGFjZSkpCisJCXZpc2libGUgPSBmYWxzZTsKKwllbHNlCisJeworCQkvKgorCQkgKiBJZiBp dCBpcyBpbiB0aGUgcGF0aCwgaXQgbWlnaHQgc3RpbGwgbm90IGJlIHZpc2libGU7IGl0IGNvdWxk IGJlCisJCSAqIGhpZGRlbiBieSBhbm90aGVyIHJlbGF0aW9uIG9mIHRoZSBzYW1lIG5hbWUgZWFy bGllciBpbiB0aGUgcGF0aC4gU28KKwkJICogd2UgbXVzdCBkbyBhIHNsb3cgY2hlY2sgZm9yIGNv bmZsaWN0aW5nIHJlbGF0aW9ucy4KKwkJICovCisJCWNoYXIJICAgKnZhcm5hbWUgPSBOYW1lU3Ry KHZhcmZvcm0tPnZhcm5hbWUpOworCQlMaXN0Q2VsbCAgICpsOworCisJCXZpc2libGUgPSBmYWxz ZTsKKwkJZm9yZWFjaChsLCBhY3RpdmVTZWFyY2hQYXRoKQorCQl7CisJCQlPaWQJCQluYW1lc3Bh Y2VJZCA9IGxmaXJzdF9vaWQobCk7CisKKwkJCWlmIChuYW1lc3BhY2VJZCA9PSB2YXJuYW1lc3Bh Y2UpCisJCQl7CisJCQkJLyogRm91bmQgaXQgZmlyc3QgaW4gcGF0aCAqLworCQkJCXZpc2libGUg PSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKE9pZElzVmFsaWQoZ2V0X3Zhcm5hbWVf dmFyaWQodmFybmFtZSwgbmFtZXNwYWNlSWQpKSkKKwkJCXsKKwkJCQkvKiBGb3VuZCBzb21ldGhp bmcgZWxzZSBmaXJzdCBpbiBwYXRoICovCisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwlS ZWxlYXNlU3lzQ2FjaGUodmFydHVwKTsKKworCXJldHVybiB2aXNpYmxlOworfQorCisKIAogLyoK ICAqIFR5cGVuYW1lR2V0VHlwaWQKQEAgLTI3NzYsNiArMjg0MiwyMDIgQEAgVFNDb25maWdJc1Zp c2libGUoT2lkIGNmZ2lkKQogCXJldHVybiB2aXNpYmxlOwogfQogCisvKgorICogV2hlbiB3ZSBr bm93IGEgdmFyaWFibGUgbmFtZSwgdGhlbiB3ZSBjYW4gZmluZCB2YXJpYWJsZSBzaW1wbHkKKyAq LworT2lkCitsb29rdXBfdmFyaWFibGUoY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAq dmFybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCU9pZAkJCW5hbWVzcGFjZUlkOworCU9pZAkJ CXZhcm9pZAkJPSBJbnZhbGlkT2lkOworCUxpc3RDZWxsICAgKmw7CisKKwlpZiAobnNwbmFtZSkK Kwl7CisJCW5hbWVzcGFjZUlkID0gTG9va3VwRXhwbGljaXROYW1lc3BhY2UobnNwbmFtZSwgbWlz c2luZ19vayk7CisJCWlmICghT2lkSXNWYWxpZChuYW1lc3BhY2VJZCkpCisJCQlyZXR1cm4gSW52 YWxpZE9pZDsKKworCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLAor CQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bSh2YXJuYW1lKSwKKwkJCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKG5hbWVzcGFjZUlkKSk7CisJfQorCWVsc2UKKwl7CisJCS8qIHNlYXJjaCBmb3IgaXQg aW4gc2VhcmNoIHBhdGggKi8KKwkJcmVjb21wdXRlTmFtZXNwYWNlUGF0aCgpOworCisJCWZvcmVh Y2gobCwgYWN0aXZlU2VhcmNoUGF0aCkKKwkJeworCQkJbmFtZXNwYWNlSWQgPSBsZmlyc3Rfb2lk KGwpOworCisJCQl2YXJvaWQgPSBHZXRTeXNDYWNoZU9pZDIoVkFSSUFCTEVOQU1FTlNQLAorCQkJ CQkJCQkJICBQb2ludGVyR2V0RGF0dW0odmFybmFtZSksCisJCQkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0obmFtZXNwYWNlSWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQodmFyb2lkKSkKKwkJCQli cmVhazsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCh2YXJvaWQpICYmICFtaXNzaW5nX29r KQorCXsKKwkJaWYgKG5zcG5hbWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIu XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJbnNwbmFtZSwgdmFybmFtZSkpKTsKKwkJ ZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf T0JKRUNUKSwKKwkJCQkJIGVycm1zZygidmFyaWFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK KwkJCQkJCQkJdmFybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdmFyb2lkOworfQorCitMaXN0ICoK K05hbWVzRnJvbUxpc3QoTGlzdCAqbmFtZXMpCit7CisJTGlzdENlbGwgKmw7CisJTGlzdAkqcmVz dWx0ID0gTklMOworCisJZm9yZWFjaChsLCBuYW1lcykKKwl7CisJCU5vZGUgKm4gPSBsZmlyc3Qo bCk7CisKKwkJaWYgKElzQShuLCBTdHJpbmcpKQorCQl7CisJCQlyZXN1bHQgPSBsYXBwZW5kKHJl c3VsdCwgbik7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJlc3VsdDsK K30KKworLyoKKyAqIGlkZW50aWZ5X3ZhcmlhYmxlCisgKgorICogUmV0dXJucyBvaWQgb2Ygbm90 IGFtYmlnb251b3VzIHZhcmlhYmxlIHNwZWNpZmllZCBieSBxdWFsaWZpZWQgcGF0aAorICogb3Ig SW52YWxpZE9pZC4gV2hlbiB0aGUgcGF0aCBpcyBhbWJpZ29udW91cywgdGhlbiBub3RfdW5pcSBm bGFnIGlzCisgKiBpcyB0cnVlLgorICovCitPaWQKK2lkZW50aWZ5X3ZhcmlhYmxlKExpc3QgKm5h bWVzLCBjaGFyICoqYXR0cm5hbWUsIGJvb2wgKm5vdF91bmlxKQoreworCWNoYXIgICAqYSA9IE5V TEw7CisJY2hhciAgICpiID0gTlVMTDsKKwljaGFyICAgKmMgPSBOVUxMOworCWNoYXIgICAqZCA9 IE5VTEw7CisJT2lkCQl2YXJvaWRfd2l0aG91dF9hdHRyOworCU9pZAkJdmFyb2lkX3dpdGhfYXR0 cjsKKworCSpub3RfdW5pcSA9IGZhbHNlOworCisJc3dpdGNoIChsaXN0X2xlbmd0aChuYW1lcykp CisJeworCQljYXNlIDE6CisJCQlhID0gc3RyVmFsKGxpbml0aWFsKG5hbWVzKSk7CisJCQlyZXR1 cm4gbG9va3VwX3ZhcmlhYmxlKE5VTEwsIGEsIHRydWUpOworCisJCWNhc2UgMjoKKwkJCWEgPSBz dHJWYWwobGluaXRpYWwobmFtZXMpKTsKKwkJCWIgPSBzdHJWYWwobHNlY29uZChuYW1lcykpOwor CisJCQkvKgorCQkJICogYS5iIGNhbiBtZWFuICJzY2hlbWEiLiJ2YXJpYWJsZSIgb3IgInZhcmlh YmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52 YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBmbGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRp b25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJdmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1 cF92YXJpYWJsZShhLCBiLCB0cnVlKTsKKwkJCXZhcm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFy aWFibGUoTlVMTCwgYSwgdHJ1ZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0 X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhfYXR0cikpCisJCQl7CisJCQkJKm5vdF91 bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9pZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9p ZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJCQl7CisJCQkJKmF0dHJuYW1lID0gTlVM TDsKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQkqYXR0cm5hbWUgPSBiOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOworCQkJfQor CQkJYnJlYWs7CisKKwkJY2FzZSAzOgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1lcykpOwor CQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGlyZChuYW1l cykpOworCisJCQkvKgorCQkJICogYS5iLmMgY2FuIG1lYW4gImNhdGFsb2ciLiJzY2hlbWEiLiJ2 YXJpYWJsZSIgb3IgInNjaGVtYSIuInZhcmlhYmxlIi4iZmllbGQiLAorCQkJICogQ2hlY2sgYm90 aCB2YXJpYW50cywgYW5kIHJldHVybnMgSW52YWxpZE9pZCB3aXRoIG5vdF91bmlxCisJCQkgKiBm bGFnLCB3aGVuIGJvdGggaW50ZXJwcmV0YXRpb25zIGFyZSBwb3NzaWJsZS4KKwkJCSAqLworCQkJ dmFyb2lkX3dpdGhvdXRfYXR0ciA9IGxvb2t1cF92YXJpYWJsZShiLCBjLCB0cnVlKTsKKwkJCXZh cm9pZF93aXRoX2F0dHIgPSBsb29rdXBfdmFyaWFibGUoYSwgYiwgdHJ1ZSk7CisKKwkJCWlmIChP aWRJc1ZhbGlkKHZhcm9pZF93aXRob3V0X2F0dHIpICYmIE9pZElzVmFsaWQodmFyb2lkX3dpdGhf YXR0cikpCisJCQl7CisJCQkJKm5vdF91bmlxID0gdHJ1ZTsKKwkJCQlyZXR1cm4gSW52YWxpZE9p ZDsKKwkJCX0KKwkJCWVsc2UgaWYgKE9pZElzVmFsaWQodmFyb2lkX3dpdGhvdXRfYXR0cikpCisJ CQl7CisJCQkJKmF0dHJuYW1lID0gTlVMTDsKKworCQkJCS8qCisJCQkJICogV2UgaW4gdGhpcyBj YXNlIGEgImEiIGlzIHVzZWQgYXMgY2F0YWxvZyBuYW1lLCBjaGVjayBpdC4KKwkJCQkgKi8KKwkJ CQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkpICE9IDApCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMgYXJl IG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQkJTmFtZUxpc3RUb1N0cmluZyhuYW1lcykp KSk7CisKKwkJCQlyZXR1cm4gdmFyb2lkX3dpdGhvdXRfYXR0cjsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQkqYXR0cm5hbWUgPSBjOworCQkJCXJldHVybiB2YXJvaWRfd2l0aF9hdHRyOworCQkJ fQorCQkJYnJlYWs7CisKKwkJY2FzZSA0OgorCQkJYSA9IHN0clZhbChsaW5pdGlhbChuYW1lcykp OworCQkJYiA9IHN0clZhbChsc2Vjb25kKG5hbWVzKSk7CisJCQljID0gc3RyVmFsKGx0aGlyZChu YW1lcykpOworCQkJZCA9IHN0clZhbChsZm91cnRoKG5hbWVzKSk7CisKKwkJCS8qCisJCQkgKiBX ZSBpbiB0aGlzIGNhc2UgYSAiYSIgaXMgdXNlZCBhcyBjYXRhbG9nIG5hbWUsIGNoZWNrIGl0Lgor CQkJICovCisJCQlpZiAoc3RyY21wKGEsIGdldF9kYXRhYmFzZV9uYW1lKE15RGF0YWJhc2VJZCkp ICE9IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNyb3NzLWRhdGFiYXNlIHJlZmVyZW5j ZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogJXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5h bWVzKSkpKTsKKworCQkJKmF0dHJuYW1lID0gZDsKKwkJCXJldHVybiBsb29rdXBfdmFyaWFibGUo YiwgYywgdHJ1ZSk7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygiaW1wcm9wZXIgcXVhbGlm aWVkIG5hbWUgKHRvbyBtYW55IGRvdHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQlOYW1lTGlzdFRv U3RyaW5nKG5hbWVzKSkpKTsKKwkJCWJyZWFrOworCX0KK30KIAogLyoKICAqIERlY29uc3RydWN0 UXVhbGlmaWVkTmFtZQpAQCAtNDQ5MCwzICs0NzUyLDE0IEBAIHBnX2lzX290aGVyX3RlbXBfc2No ZW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChpc090aGVyVGVtcE5hbWVz cGFjZShvaWQpKTsKIH0KKworRGF0dW0KK3BnX3ZhcmlhYmxlX2lzX3Zpc2libGUoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlPaWQJCQlvaWQgPSBQR19HRVRBUkdfT0lEKDApOworCisJaWYgKCFTZWFy Y2hTeXNDYWNoZUV4aXN0czEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0RGF0dW0ob2lkKSkpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CisKKwlQR19SRVRVUk5fQk9PTChWYXJpYWJsZUlzVmlzaWJsZShv aWQpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggN2RiOTQyZGNiYS4u Y2MzZDQxNWU2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNz LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKQEAgLTU4LDYgKzU4 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21t YW5kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2V2ZW50X3RyaWdnZXIuaCIKQEAgLTQ4OSw2ICs0OTAsMTggQEAgc3RhdGljIGNvbnN0IE9iamVj dFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJSW52YWxpZEF0dHJOdW1iZXIsCQkv KiBubyBBQ0wgKHNhbWUgYXMgcmVsYXRpb24pICovCiAJCU9CSkVDVF9TVEFUSVNUSUNfRVhULAog CQl0cnVlCisJfSwKKwl7CisJCVZhcmlhYmxlUmVsYXRpb25JZCwKKwkJVmFyaWFibGVPYmplY3RJ bmRleElkLAorCQlWQVJJQUJMRU9JRCwKKwkJVkFSSUFCTEVOQU1FTlNQLAorCQlBbnVtX3BnX3Zh cmlhYmxlX3Zhcm5hbWUsCisJCUFudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlLAorCQlBbnVt X3BnX3ZhcmlhYmxlX3Zhcm93bmVyLAorCQlBbnVtX3BnX3ZhcmlhYmxlX3ZhcmFjbCwKKwkJT0JK RUNUX1ZBUklBQkxFLAorCQl0cnVlCiAJfQogfTsKIApAQCAtNzE0LDYgKzcyNywxMCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCS8qIE9CSkVDVF9TVEFUSVNUSUNfRVhU ICovCiAJewogCQkic3RhdGlzdGljcyBvYmplY3QiLCBPQkpFQ1RfU1RBVElTVElDX0VYVAorCX0s CisJLyogT0NMQVNTX1ZBUklBQkxFICovCisJeworCQkic2NoZW1hIHZhcmlhYmxlIiwgT0JKRUNU X1ZBUklBQkxFCiAJfQogfTsKIApAQCAtNzM5LDYgKzc1Niw3IEBAIHN0YXRpYyBPYmplY3RBZGRy ZXNzIGdldF9vYmplY3RfYWRkcmVzc19hdHRyZGVmKE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJ CSAgIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2Fk ZHJlc3NfdHlwZShPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCQlUeXBlTmFtZSAqdHlwZW5hbWUs IGJvb2wgbWlzc2luZ19vayk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBnZXRfb2JqZWN0X2FkZHJl c3NfdmFyaWFibGUoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVj dEFkZHJlc3MgZ2V0X29iamVjdF9hZGRyZXNzX29wY2YoT2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0 ICpvYmplY3QsCiAJCQkJCQlib29sIG1pc3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3Mg Z2V0X29iamVjdF9hZGRyZXNzX29wZl9tZW1iZXIoT2JqZWN0VHlwZSBvYmp0eXBlLApAQCAtOTk2 LDYgKzEwMTQsMTAgQEAgZ2V0X29iamVjdF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9k ZSAqb2JqZWN0LAogCQkJCQkJCQkJCQkJCQkJIG1pc3Npbmdfb2spOwogCQkJCWFkZHJlc3Mub2Jq ZWN0U3ViSWQgPSAwOwogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CisJCQkJ YWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzc192YXJpYWJsZShjYXN0Tm9kZShMaXN0LCBvYmpl Y3QpLCBtaXNzaW5nX29rKTsKKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJCQkJLyog cGxhY2F0ZSBjb21waWxlciwgaW4gY2FzZSBpdCB0aGlua3MgZWxvZyBtaWdodCByZXR1cm4gKi8K QEAgLTE4NDgsMTYgKzE4NzAsMjAgQEAgZ2V0X29iamVjdF9hZGRyZXNzX2RlZmFjbChMaXN0ICpv YmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBERUZBQ0xPQkpfTkFNRVNQQUNFOgogCQkJ b2JqdHlwZV9zdHIgPSAic2NoZW1hcyI7CiAJCQlicmVhazsKKwkJY2FzZSBERUZBQ0xPQkpfVkFS SUFCTEU6CisJCQlvYmp0eXBlX3N0ciA9ICJ2YXJpYWJsZXMiOworCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIGRlZmF1bHQgQUNMIG9i amVjdCB0eXBlIFwiJWNcIiIsIG9ianR5cGUpLAotCQkJCQkgZXJyaGludCgiVmFsaWQgb2JqZWN0 IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLCBcIiVjXCIsIFwiJWNcIi4iLAorCQkJ CQkgZXJyaGludCgiVmFsaWQgb2JqZWN0IHR5cGVzIGFyZSBcIiVjXCIsIFwiJWNcIiwgXCIlY1wi LCBcIiVjXCIsIFwiJWNcIiwgXCIlY1wiLiIsCiAJCQkJCQkJIERFRkFDTE9CSl9SRUxBVElPTiwK IAkJCQkJCQkgREVGQUNMT0JKX1NFUVVFTkNFLAogCQkJCQkJCSBERUZBQ0xPQkpfRlVOQ1RJT04s CiAJCQkJCQkJIERFRkFDTE9CSl9UWVBFLAotCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFKSkp OworCQkJCQkJCSBERUZBQ0xPQkpfTkFNRVNQQUNFLAorCQkJCQkJCSBERUZBQ0xPQkpfVkFSSUFC TEUpKSk7CiAJfQogCiAJLyoKQEAgLTE5NDIsNiArMTk2OCwyNCBAQCB0ZXh0YXJyYXlfdG9fc3Ry dmFsdWVsaXN0KEFycmF5VHlwZSAqYXJyKQogCXJldHVybiBsaXN0OwogfQogCisvKgorICogRmlu ZCB0aGUgT2JqZWN0QWRkcmVzcyBmb3IgYSB0eXBlIG9yIGRvbWFpbgorICovCitzdGF0aWMgT2Jq ZWN0QWRkcmVzcworZ2V0X29iamVjdF9hZGRyZXNzX3ZhcmlhYmxlKExpc3QgKm9iamVjdCwgYm9v bCBtaXNzaW5nX29rKQoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljaGFyCSAgICpuc3Bu YW1lID0gTlVMTDsKKwljaGFyCSAgICp2YXJuYW1lID0gTlVMTDsKKworCU9iamVjdEFkZHJlc3NT ZXQoYWRkcmVzcywgVmFyaWFibGVSZWxhdGlvbklkLCBJbnZhbGlkT2lkKTsKKworCURlY29uc3Ry dWN0UXVhbGlmaWVkTmFtZShvYmplY3QsICZuc3BuYW1lLCAmdmFybmFtZSk7CisJYWRkcmVzcy5v YmplY3RJZCA9IGxvb2t1cF92YXJpYWJsZShuc3BuYW1lLCB2YXJuYW1lLCBtaXNzaW5nX29rKTsK KworCXJldHVybiBhZGRyZXNzOworfQorCiAvKgogICogU1FMLWNhbGxhYmxlIHZlcnNpb24gb2Yg Z2V0X29iamVjdF9hZGRyZXNzCiAgKi8KQEAgLTIxMzEsNiArMjE3NSw3IEBAIHBnX2dldF9vYmpl Y3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5U OgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKKwkJY2Fz ZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKIAkJCWJyZWFr OwogCQljYXNlIE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgpAQCAtMjQxNSw2ICsyNDYwLDExIEBAIGNo ZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmpl Y3RBZGRyZXNzIGFkZHJlc3MsCiAJCQlpZiAoIXBnX3N0YXRpc3RpY3Nfb2JqZWN0X293bmVyY2hl Y2soYWRkcmVzcy5vYmplY3RJZCwgcm9sZWlkKSkKIAkJCQlhY2xjaGVja19lcnJvcl90eXBlKEFD TENIRUNLX05PVF9PV05FUiwgYWRkcmVzcy5vYmplY3RJZCk7CiAJCQlicmVhazsKKwkJY2FzZSBP QkpFQ1RfVkFSSUFCTEU6CisJCQlpZiAoIXBnX3ZhcmlhYmxlX293bmVyY2hlY2soYWRkcmVzcy5v YmplY3RJZCwgcm9sZWlkKSkKKwkJCQlhY2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIs IG9ianR5cGUsCisJCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhjYXN0Tm9kZShMaXN0LCBvYmpl Y3QpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgb2JqZWN0IHR5cGU6ICVkIiwKIAkJCQkgKGludCkgb2JqdHlwZSk7CkBAIC0zMTU3LDYgKzMy MDcsMzIgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0 KQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgorCQkJeworCQkJ CWNoYXIJICAgKm5zcG5hbWU7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3BnX3Zhcmlh YmxlCXZhcmZvcm07CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9i amVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2No ZW1hIHZhcmlhYmxlICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKworCQkJCXZhcmZv cm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlpZiAoVmFyaWFi bGVJc1Zpc2libGUob2JqZWN0LT5vYmplY3RJZCkpCisJCQkJCW5zcG5hbWUgPSBOVUxMOworCQkJ CWVsc2UKKwkJCQkJbnNwbmFtZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh2YXJmb3JtLT52YXJuYW1l c3BhY2UpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJzY2hlbWEgdmFyaWFi bGUgJXMiKSwKKwkJCQkJCQkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsCisJ CQkJCQkJCQkJCQkJCQlOYW1lU3RyKHZhcmZvcm0tPnZhcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNl U3lzQ2FjaGUodHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19UU1BBUlNF UjoKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwOwpAQCAtMzQyMiw2ICszNDk4LDE2IEBAIGdldE9i amVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCQkJCQkJCQkg XygiZGVmYXVsdCBwcml2aWxlZ2VzIG9uIG5ldyBzY2hlbWFzIGJlbG9uZ2luZyB0byByb2xlICVz IiksCiAJCQkJCQkJCQkJIHJvbGVuYW1lKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIERFRkFD TE9CSl9WQVJJQUJMRToKKwkJCQkJCWlmIChuc3BuYW1lKQorCQkJCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcgdmFy aWFibGVzIGJlbG9uZ2luZyB0byByb2xlICVzIGluIHNjaGVtYSAlcyIpLAorCQkJCQkJCQkJCQkg cm9sZW5hbWUsIG5zcG5hbWUpOworCQkJCQkJZWxzZQorCQkJCQkJCWFwcGVuZFN0cmluZ0luZm8o JmJ1ZmZlciwKKwkJCQkJCQkJCQkJIF8oImRlZmF1bHQgcHJpdmlsZWdlcyBvbiBuZXcgdmFyaWFi bGVzIGJlbG9uZ2luZyB0byByb2xlICVzIiksCisJCQkJCQkJCQkJCSByb2xlbmFtZSk7CisJCQkJ CQlicmVhazsKIAkJCQkJZGVmYXVsdDoKIAkJCQkJCS8qIHNob3VsZG4ndCBnZXQgaGVyZSAqLwog CQkJCQkJaWYgKG5zcG5hbWUpCkBAIC00MDcwLDYgKzQxNTYsMTAgQEAgZ2V0T2JqZWN0VHlwZURl c2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgInRyYW5zZm9ybSIpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQ0xB U1NfVkFSSUFCTEU6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJzY2hlbWEg dmFyaWFibGUiKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUncyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZTsgd2Ugd2FudCB0aGUKIAkJCSAqIGNvbXBpbGVyIHRv IHdhcm4gaWYgYSBuZXcgT0NMQVNTIGhhc24ndCBiZWVuIGhhbmRsZWQgYWJvdmUuCkBAIC00OTYy LDYgKzUwNTIsMTAgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QsCiAJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsCiAJCQkJCQkJ CQkJCSAgICIgb24gc2NoZW1hcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgREVGQUNMT0JK X1ZBUklBQkxFOgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLAorCQkJCQkJ CQkJCQkgICAiIG9uIHZhcmlhYmxlcyIpOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJaWYg KG9iam5hbWUpCkBAIC01MTIxLDYgKzUyMTUsMzMgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhj b25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCiAJCQl9CiAJCQlicmVhazsKIAorCQljYXNlIE9D TEFTU19WQVJJQUJMRToKKwkJCXsKKwkJCQljaGFyCSAgICpzY2hlbWE7CisJCQkJY2hhcgkgICAq dmFybmFtZTsKKwkJCQlIZWFwVHVwbGUJdHVwOworCQkJCUZvcm1fcGdfdmFyaWFibGUJdmFyZm9y bTsKKworCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShWQVJJQUJMRU9JRCwgT2JqZWN0SWRHZXRE YXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkp CisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgdmFyaWFi bGUgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJdmFyZm9ybSA9IChGb3Jt X3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCXNjaGVtYSA9IGdldF9uYW1lc3Bh Y2VfbmFtZV9vcl90ZW1wKHZhcmZvcm0tPnZhcm5hbWVzcGFjZSk7CisJCQkJdmFybmFtZSA9IE5h bWVTdHIodmFyZm9ybS0+dmFybmFtZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIs ICIlcyIsCisJCQkJCQkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKHNjaGVtYSwgdmFybmFt ZSkpOworCisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGlzdF9tYWtlMihzY2hl bWEsIHZhcm5hbWUpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJYnJlYWs7CisJ CQl9CisKIAkJCS8qCiAJCQkgKiBUaGVyZSdzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlOyB3ZSB3YW50IHRoZQogCQkJICogY29tcGlsZXIgdG8gd2FybiBpZiBhIG5ldyBPQ0xB U1MgaGFzbid0IGJlZW4gaGFuZGxlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfdmFyaWFibGUuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43OTU0M2JiZDRkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ192YXJpYWJsZS5jCkBAIC0wLDAgKzEs MzU4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ192YXJpYWJsZS5jCisgKgkJc2No ZW1hIHZhcmlhYmxlcworICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJCXNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdmFyaWFibGUuYwor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAibWlzY2FkbWluLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9kZXBlbmRlbmN5Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX25hbWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfdmFyaWFibGUuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJp YWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3By aW1ub2Rlcy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2Fy cmF5LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3Bn X2xzbi5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisKK3N0YXRpYyBWYXJpYWJsZUVPWEFjdGlvbkNvZGVzCit0b19lb3hhY3Rpb25fY29kZShW YXJpYWJsZUVPWEFjdGlvbiBhY3Rpb24pCit7CisJc3dpdGNoIChhY3Rpb24pCisJeworCQljYXNl IFZBUklBQkxFX0VPWF9OT09QOgorCQkJcmV0dXJuIFZBUklBQkxFX0VPWF9DT0RFX05PT1A7CisK KwkJY2FzZSBWQVJJQUJMRV9FT1hfRFJPUDoKKwkJCXJldHVybiBWQVJJQUJMRV9FT1hfQ09ERV9E Uk9QOworCisJCWNhc2UgVkFSSUFCTEVfRU9YX1JFU0VUOgorCQkJcmV0dXJuIFZBUklBQkxFX0VP WF9DT0RFX1JFU0VUOworCisJCWNhc2UgVkFSSUFCTEVfRU9YX1JPTExCQUNLX1JFU0VUOgorCQkJ cmV0dXJuIFZBUklBQkxFX0VPWF9DT0RFX1JPTExCQUNLX1JFU0VUOworCisJCWRlZmF1bHQ6CisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBhY3Rpb24iKTsKKwl9CisKK30KKworc3RhdGljIFZh cmlhYmxlRU9YQWN0aW9uCit0b19lb3hhY3Rpb24oVmFyaWFibGVFT1hBY3Rpb25Db2RlcyBjb2Rl KQoreworCXN3aXRjaCAoY29kZSkKKwl7CisJCWNhc2UgVkFSSUFCTEVfRU9YX0NPREVfTk9PUDoK KwkJCXJldHVybiBWQVJJQUJMRV9FT1hfTk9PUDsKKworCQljYXNlIFZBUklBQkxFX0VPWF9DT0RF X0RST1A6CisJCQlyZXR1cm4gVkFSSUFCTEVfRU9YX0RST1A7CisKKwkJY2FzZSBWQVJJQUJMRV9F T1hfQ09ERV9SRVNFVDoKKwkJCXJldHVybiBWQVJJQUJMRV9FT1hfUkVTRVQ7CisKKwkJY2FzZSBW QVJJQUJMRV9FT1hfQ09ERV9ST0xMQkFDS19SRVNFVDoKKwkJCXJldHVybiBWQVJJQUJMRV9FT1hf Uk9MTEJBQ0tfUkVTRVQ7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVk IGNvZGUiKTsKKwl9Cit9CisKKy8qCisgKiBSZXR1cm5zIG5hbWUgb2Ygc2NoZW1hIHZhcmlhYmxl LiBXaGVuIHZhcmlhYmxlIGlzIG5vdCBvbiBwYXRoLAorICogdGhlbiB0aGUgbmFtZSBpcyBxdWFs aWZpZWQuCisgKi8KK2NoYXIgKgorc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKE9pZCB2YXJpZCkK K3sKKwlIZWFwVHVwbGUJdHVwOworCUZvcm1fcGdfdmFyaWFibGUgdmFyZm9ybTsKKwljaGFyICAg KnZhcm5hbWU7CisJY2hhciAgICpuc3BuYW1lOworCWNoYXIgICAqcmVzdWx0OworCisJdHVwID0g U2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3Bn X3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3RyKHZhcmZvcm0t PnZhcm5hbWUpOworCisJaWYgKFZhcmlhYmxlSXNWaXNpYmxlKHZhcmlkKSkKKwkJbnNwbmFtZSA9 IE5VTEw7CisJZWxzZQorCQluc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKHZhcmZvcm0tPnZh cm5hbWVzcGFjZSk7CisKKwlyZXN1bHQgPSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3Bu YW1lLCB2YXJuYW1lKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCisJcmV0dXJuIHJlc3Vs dDsKK30KKworLyoKKyAqIFJldHVybnMgdmFybmFtZSBmaWVsZCBvZiBwZ192YXJpYWJsZQorICov CitjaGFyICoKK2dldF9zY2hlbWFfdmFyaWFibGVfbmFtZShPaWQgdmFyaWQpCit7CisJSGVhcFR1 cGxlCXR1cDsKKwlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm07CisJY2hhciAgICp2YXJuYW1lOwor CisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZh cmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9 IChGb3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhcm5hbWUgPSBOYW1lU3Ry KHZhcmZvcm0tPnZhcm5hbWUpOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4g dmFybmFtZTsKK30KKworLyoKKyAqIFJldHVybnMgdHlwZSwgdHlwbW9kIG9mIHNjaGVtYSB2YXJp YWJsZQorICovCit2b2lkCitnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZChP aWQgdmFyaWQsIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIE9pZCAqY29sbGlkKQoreworCUhl YXBUdXBsZQl0dXA7CisJRm9ybV9wZ192YXJpYWJsZSB2YXJmb3JtOworCisJdHVwID0gU2VhcmNo U3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFyaWQpOworCisJdmFyZm9ybSA9IChGb3JtX3BnX3Zhcmlh YmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCSp0eXBpZCA9IHZhcmZvcm0tPnZhcnR5cGU7CisJKnR5 cG1vZCA9IHZhcmZvcm0tPnZhcnR5cG1vZDsKKwkqY29sbGlkID0gdmFyZm9ybS0+dmFyY29sbGF0 aW9uOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBG ZXRjaCBhbGwgZmllbGRzIG9mIHNjaGVtYSB2YXJpYWJsZSBmcm9tIHRoZSBzeXNjYWNoZS4KKyAq LworVmFyaWFibGUgKgorR2V0VmFyaWFibGUoT2lkIHZhcmlkLCBib29sIG1pc3Npbmdfb2spCit7 CisJSGVhcFR1cGxlCXR1cDsKKwlWYXJpYWJsZSAqdmFyOworCUZvcm1fcGdfdmFyaWFibGUgdmFy Zm9ybTsKKwlEYXR1bQkJYWNsRGF0dW07CisJRGF0dW0JCWRlZmV4cHJEYXR1bTsKKwlib29sCQlp c251bGw7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoVkFSSUFCTEVPSUQsIE9iamVjdElkR2V0 RGF0dW0odmFyaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCXsKKwkJaWYg KG1pc3Npbmdfb2spCisJCQlyZXR1cm4gTlVMTDsKKworCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgdmFyaWFibGUgJXUiLCB2YXJpZCk7CisJfQorCisJdmFyZm9ybSA9IChG b3JtX3BnX3ZhcmlhYmxlKSBHRVRTVFJVQ1QodHVwKTsKKworCXZhciA9IChWYXJpYWJsZSAqKSBw YWxsb2Moc2l6ZW9mKFZhcmlhYmxlKSk7CisJdmFyLT5vaWQgPSB2YXJpZDsKKwl2YXItPm5hbWUg PSBwc3RyZHVwKE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpOworCXZhci0+bmFtZXNwYWNlID0g dmFyZm9ybS0+dmFybmFtZXNwYWNlOworCXZhci0+dHlwaWQgPSB2YXJmb3JtLT52YXJ0eXBlOwor CXZhci0+dHlwbW9kID0gdmFyZm9ybS0+dmFydHlwbW9kOworCXZhci0+b3duZXIgPSB2YXJmb3Jt LT52YXJvd25lcjsKKwl2YXItPmNvbGxhdGlvbiA9IHZhcmZvcm0tPnZhcmNvbGxhdGlvbjsKKwl2 YXItPmVveGFjdGlvbiA9IHRvX2VveGFjdGlvbih2YXJmb3JtLT52YXJlb3hhY3Rpb24pOworCisJ LyogR2V0IGRlZmV4cHIgKi8KKwlkZWZleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoVkFSSUFC TEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFyaWFibGVfdmFyZGVmZXhwciwK KwkJCQkJCQkmaXNudWxsKTsKKworCWlmICghaXNudWxsKQorCQl2YXItPmRlZmV4cHIgPSBzdHJp bmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkZWZleHByRGF0dW0pKTsKKwllbHNlCisJCXZh ci0+ZGVmZXhwciA9IE5VTEw7CisKKwkvKiBHZXQgdmFyYWNsICovCisJYWNsRGF0dW0gPSBTeXND YWNoZUdldEF0dHIoVkFSSUFCTEVPSUQsCisJCQkJCQkJdHVwLAorCQkJCQkJCUFudW1fcGdfdmFy aWFibGVfdmFyYWNsLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQorCQl2YXItPmFj bCA9IERhdHVtR2V0QWNsUENvcHkoYWNsRGF0dW0pOworCWVsc2UKKwkJdmFyLT5hY2wgPSBOVUxM OworCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisKKwlyZXR1cm4gdmFyOworfQorCitPYmplY3RB ZGRyZXNzCitWYXJpYWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJICAgT2lkIHZh ck5hbWVzcGFjZSwKKwkJCSAgIE9pZCB2YXJUeXBlLAorCQkJICAgaW50MzIgdmFyVHlwbW9kLAor CQkJICAgT2lkIHZhck93bmVyLAorCQkJICAgT2lkIHZhckNvbGxhdGlvbiwKKwkJCSAgIE5vZGUg KnZhckRlZmV4cHIsCisJCQkgICBWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb24sCisJCQkgICBi b29sIGlmX25vdF9leGlzdHMpCit7CisJQWNsCQkgICAqdmFyYWNsOworCU5hbWVEYXRhCXZhcm5h bWU7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfdmFyaWFibGVdOworCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfdmFyaWFibGVdOworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwLAorCQkJCW9s ZHR1cDsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlPYmplY3RBZGRyZXNzCW15c2VsZiwKKwkJCQkJ cmVmZXJlbmNlZDsKKwlPaWQJCQlyZXR2YWw7CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkg PCBOYXR0c19wZ192YXJpYWJsZTsgaSsrKQorCXsKKwkJbnVsbHNbaV0gPSBmYWxzZTsKKwkJdmFs dWVzW2ldID0gKERhdHVtKSAwOworCX0KKworCW5hbWVzdHJjcHkoJnZhcm5hbWUsIHZhck5hbWUp OworCXZhbHVlc1tBbnVtX3BnX3ZhcmlhYmxlX3Zhcm5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgm dmFybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFybmFtZXNwYWNlIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSk7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVf dmFydHlwZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2YXJUeXBlKTsKKwl2YWx1ZXNbQW51bV9w Z192YXJpYWJsZV92YXJ0eXBtb2QgLSAxXSA9IEludDMyR2V0RGF0dW0odmFyVHlwbW9kKTsKKwl2 YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bSh2 YXJPd25lcik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVfdmFyY29sbGF0aW9uIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKHZhckNvbGxhdGlvbik7CisJdmFsdWVzW0FudW1fcGdfdmFyaWFibGVf dmFyZW94YWN0aW9uIC0gMV0gPSBDaGFyR2V0RGF0dW0oKGNoYXIpIHRvX2VveGFjdGlvbl9jb2Rl KGVveGFjdGlvbikpOworCS8qIHByb2FjbCB3aWxsIGJlIGRldGVybWluZWQgbGF0ZXIgKi8KKwor CWlmICh2YXJEZWZleHByKQorCQl2YWx1ZXNbQW51bV9wZ192YXJpYWJsZV92YXJkZWZleHByIC0g MV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyh2YXJEZWZleHByKSk7CisJZWxz ZQorCQludWxsc1tBbnVtX3BnX3ZhcmlhYmxlX3ZhcmRlZmV4cHIgLSAxXSA9IHRydWU7CisKKwly ZWwgPSBoZWFwX29wZW4oVmFyaWFibGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0 dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCisJb2xkdHVwID0gU2VhcmNoU3lzQ2Fj aGUyKFZBUklBQkxFTkFNRU5TUCwKKwkJCQkJCQkgUG9pbnRlckdldERhdHVtKHZhck5hbWUpLAor CQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHZhck5hbWVzcGFjZSkpOworCisJaWYgKEhlYXBUdXBs ZUlzVmFsaWQob2xkdHVwKSkKKwl7CisJCWlmIChpZl9ub3RfZXhpc3RzKQorCQkJZXJlcG9ydChO T1RJQ0UsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCSBl cnJtc2coInNjaGVtYSB2YXJpYWJsZSBcIiVzXCIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwK KwkJCQkJCQl2YXJOYW1lKSkpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJzY2hlbWEgdmFy aWFibGUgXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwKKwkJCQkJCQl2YXJOYW1lKSkpOworCisJCWhl YXBfZnJlZXR1cGxlKG9sZHR1cCk7CisJCWhlYXBfY2xvc2UocmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCQlyZXR1cm4gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJfQorCisJdmFyYWNsID0gZ2V0 X3VzZXJfZGVmYXVsdF9hY2woT0JKRUNUX1ZBUklBQkxFLCB2YXJPd25lciwKKwkJCQkJCQkJICB2 YXJOYW1lc3BhY2UpOworCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCQl2YWx1ZXNbQW51bV9wZ192 YXJpYWJsZV92YXJhY2wgLSAxXSA9IFBvaW50ZXJHZXREYXR1bSh2YXJhY2wpOworCWVsc2UKKwkJ bnVsbHNbQW51bV9wZ192YXJpYWJsZV92YXJhY2wgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFw X2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxlSW5zZXJ0 KHJlbCwgdHVwKTsKKworCXJldHZhbCA9IEhlYXBUdXBsZUdldE9pZCh0dXApOworCisJbXlzZWxm LmNsYXNzSWQgPSBWYXJpYWJsZVJlbGF0aW9uSWQ7CisJbXlzZWxmLm9iamVjdElkID0gcmV0dmFs OworCW15c2VsZi5vYmplY3RTdWJJZCA9IDA7CisKKwkvKiBkZXBlbmRlbmN5IG9uIG5hbWVzcGFj ZSAqLworCXJlZmVyZW5jZWQuY2xhc3NJZCA9IE5hbWVzcGFjZVJlbGF0aW9uSWQ7CisJcmVmZXJl bmNlZC5vYmplY3RJZCA9IHZhck5hbWVzcGFjZTsKKwlyZWZlcmVuY2VkLm9iamVjdFN1YklkID0g MDsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lf Tk9STUFMKTsKKworCS8qIGRlcGVuZGVuY3kgb24gdXNlZCB0eXBlICovCisJcmVmZXJlbmNlZC5j bGFzc0lkID0gVHlwZVJlbGF0aW9uSWQ7CisJcmVmZXJlbmNlZC5vYmplY3RJZCA9IHZhclR5cGU7 CisJcmVmZXJlbmNlZC5vYmplY3RTdWJJZCA9IDA7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKiBkZXBlbmRlbmN5IG9u IGFueSByb2xlcyBtZW50aW9uZWQgaW4gQUNMICovCisJaWYgKHZhcmFjbCAhPSBOVUxMKQorCXsK KwkJaW50CQkJbm5ld21lbWJlcnM7CisJCU9pZAkJICAgKm5ld21lbWJlcnM7CisKKwkJbm5ld21l bWJlcnMgPSBhY2xtZW1iZXJzKHZhcmFjbCwgJm5ld21lbWJlcnMpOworCQl1cGRhdGVBY2xEZXBl bmRlbmNpZXMoVmFyaWFibGVSZWxhdGlvbklkLCByZXR2YWwsIDAsCisJCQkJCQkJICB2YXJPd25l ciwKKwkJCQkJCQkgIDAsIE5VTEwsCisJCQkJCQkJICBubmV3bWVtYmVycywgbmV3bWVtYmVycyk7 CisJfQorCisJLyogZGVwZW5kZW5jeSBvbiBleHRlbnNpb24gKi8KKwlyZWNvcmREZXBlbmRlbmN5 T25DdXJyZW50RXh0ZW5zaW9uKCZteXNlbGYsIGZhbHNlKTsKKworCS8qIHJlZ2lzdGVyIG9uIGNv bW1pdCBhY3Rpb24gaWYgaXQgaXMgbmVjZXNzYXJ5ICovCisJcmVnaXN0ZXJfdmFyaWFibGVfb25f Y29tbWl0X2FjdGlvbihteXNlbGYub2JqZWN0SWQsIGVveGFjdGlvbik7CisKKwloZWFwX2ZyZWV0 dXBsZSh0dXApOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgZnVuY3Rpb24gKi8K KwlJbnZva2VPYmplY3RQb3N0Q3JlYXRlSG9vayhWYXJpYWJsZVJlbGF0aW9uSWQsIHJldHZhbCwg MCk7CisKKwloZWFwX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gbXlz ZWxmOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCA0YTZjOTllMDkwLi4yY2I1YjExNzJkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtMTgsNyArMTgsNyBAQCBPQkpTID0gYW1jbWRzLm8gYWdn cmVnYXRlY21kcy5vIGFsdGVyLm8gYW5hbHl6ZS5vIGFzeW5jLm8gY2x1c3Rlci5vIGNvbW1lbnQu byBcCiAJZXZlbnRfdHJpZ2dlci5vIGV4cGxhaW4ubyBleHRlbnNpb24ubyBmb3JlaWduY21kcy5v IGZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBsb2NrY21kcy5vIG1hdHZpZXcubyBvcGVy YXRvcmNtZHMubyBvcGNsYXNzY21kcy5vIFwKIAlwb2xpY3kubyBwb3J0YWxjbWRzLm8gcHJlcGFy ZS5vIHByb2NsYW5nLm8gcHVibGljYXRpb25jbWRzLm8gXAotCXNjaGVtYWNtZHMubyBzZWNsYWJl bC5vIHNlcXVlbmNlLm8gc3RhdHNjbWRzLm8gc3Vic2NyaXB0aW9uY21kcy5vIFwKKwlzY2hlbWFj bWRzLm8gc2VjbGFiZWwubyBzZXF1ZW5jZS5vIHNjaGVtYXZhcmlhYmxlLm8gc3RhdHNjbWRzLm8g c3Vic2NyaXB0aW9uY21kcy5vIFwKIAl0YWJsZWNtZHMubyB0YWJsZXNwYWNlLm8gdHJpZ2dlci5v IHRzZWFyY2hjbWRzLm8gdHlwZWNtZHMubyB1c2VyLm8gXAogCXZhY3V1bS5vIHZhY3V1bWxhenku byB2YXJpYWJsZS5vIHZpZXcubwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9h bHRlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBlZmYzMjVjYzdkLi5h OWQ1ZTVlMGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBFeGVjUmVu YW1lU3RtdChSZW5hbWVTdG10ICpzdG10KQogCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgogCQlj YXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfU1VCU0NSSVBUSU9OOgorCQlj YXNlIE9CSkVDVF9WQVJJQUJMRToKIAkJCXsKIAkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CiAJ CQkJUmVsYXRpb24JY2F0YWxvZzsKQEAgLTUwNCw2ICs1MDUsNyBAQCBFeGVjQWx0ZXJPYmplY3RT Y2hlbWFTdG10KEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqc3RtdCwKIAkJY2FzZSBPQkpFQ1RfVFNE SUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKIAkJY2FzZSBPQkpFQ1RfVFNURU1Q TEFURToKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24JY2F0YWxv ZzsKIAkJCQlSZWxhdGlvbglyZWxhdGlvbjsKQEAgLTU5NCw2ICs1OTYsNyBAQCBBbHRlck9iamVj dE5hbWVzcGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwKIAkJY2Fz ZSBPQ0xBU1NfVFNESUNUOgogCQljYXNlIE9DTEFTU19UU1RFTVBMQVRFOgogCQljYXNlIE9DTEFT U19UU0NPTkZJRzoKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQl7CiAJCQkJUmVsYXRpb24J Y2F0YWxvZzsKIApAQCAtODUyLDYgKzg1NSw3IEBAIEV4ZWNBbHRlck93bmVyU3RtdChBbHRlck93 bmVyU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKIAkJY2FzZSBPQkpFQ1Rf VFNESUNUSU9OQVJZOgogCQljYXNlIE9CSkVDVF9UU0NPTkZJR1VSQVRJT046CisJCWNhc2UgT0JK RUNUX1ZBUklBQkxFOgogCQkJewogCQkJCVJlbGF0aW9uCWNhdGFsb2c7CiAJCQkJUmVsYXRpb24J cmVsYXRpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9kaXNjYXJkLmMKaW5kZXggMDFhOTk5YzJhYy4uZmVjMjQ5NWU5 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGlzY2FyZC5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2Rpc2NhcmQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNv bW1hbmRzL2Rpc2NhcmQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL3BvcnRhbC5oIgog CkBAIC00OCw2ICs0OSwxMCBAQCBEaXNjYXJkQ29tbWFuZChEaXNjYXJkU3RtdCAqc3RtdCwgYm9v bCBpc1RvcExldmVsKQogCQkJUmVzZXRUZW1wVGFibGVOYW1lc3BhY2UoKTsKIAkJCWJyZWFrOwog CisJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQlSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUo KTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IERJU0NBUkQgdGFyZ2V0OiAlZCIsIHN0bXQtPnRhcmdldCk7CiAJfQpAQCAtNzUsNCArODAsNSBA QCBEaXNjYXJkQWxsKGJvb2wgaXNUb3BMZXZlbCkKIAlSZXNldFBsYW5DYWNoZSgpOwogCVJlc2V0 VGVtcFRhYmxlTmFtZXNwYWNlKCk7CiAJUmVzZXRTZXF1ZW5jZUNhY2hlcygpOworCVJlc2V0U2No ZW1hVmFyaWFibGVDYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmlu ZGV4IGVlY2M4NWQxNGUuLjQyNmRmMjQ2YjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmln Z2VyLmMKQEAgLTEyNiw2ICsxMjYsNyBAQCBzdGF0aWMgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0X2Rh dGEgZXZlbnRfdHJpZ2dlcl9zdXBwb3J0W10gPSB7CiAJeyJURVhUIFNFQVJDSCBURU1QTEFURSIs IHRydWV9LAogCXsiVFlQRSIsIHRydWV9LAogCXsiVVNFUiBNQVBQSU5HIiwgdHJ1ZX0sCisJeyJW QVJJQUJMRSIsIHRydWV9LAogCXsiVklFVyIsIHRydWV9LAogCXtOVUxMLCBmYWxzZX0KIH07CkBA IC0yOTcsNyArMjk4LDggQEAgY2hlY2tfZGRsX3RhZyhjb25zdCBjaGFyICp0YWcpCiAJCXBnX3N0 cmNhc2VjbXAodGFnLCAiUkVWT0tFIikgPT0gMCB8fAogCQlwZ19zdHJjYXNlY21wKHRhZywgIkRS T1AgT1dORUQiKSA9PSAwIHx8CiAJCXBnX3N0cmNhc2VjbXAodGFnLCAiSU1QT1JUIEZPUkVJR04g U0NIRU1BIikgPT0gMCB8fAotCQlwZ19zdHJjYXNlY21wKHRhZywgIlNFQ1VSSVRZIExBQkVMIikg PT0gMCkKKwkJcGdfc3RyY2FzZWNtcCh0YWcsICJTRUNVUklUWSBMQUJFTCIpID09IDAgfHwKKwkJ cGdfc3RyY2FzZWNtcCh0YWcsICJDUkVBVEUgVkFSSUFCTEUiKSA9PSAwKQogCQlyZXR1cm4gRVZF TlRfVFJJR0dFUl9DT01NQU5EX1RBR19PSzsKIAogCS8qCkBAIC0xMTQ2LDYgKzExNDgsNyBAQCBF dmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYnR5cGUpCiAJCWNhc2Ug T0JKRUNUX1RTVEVNUExBVEU6CiAJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCWNhc2UgT0JKRUNUX1VT RVJfTUFQUElORzoKKwkJY2FzZSBPQkpFQ1RfVkFSSUFCTEU6CiAJCWNhc2UgT0JKRUNUX1ZJRVc6 CiAJCQlyZXR1cm4gdHJ1ZTsKIApAQCAtMTIwOSw2ICsxMjEyLDcgQEAgRXZlbnRUcmlnZ2VyU3Vw cG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfUFVC TElDQVRJT05fUkVMOgogCQljYXNlIE9DTEFTU19TVUJTQ1JJUFRJT046CiAJCWNhc2UgT0NMQVNT X1RSQU5TRk9STToKKwkJY2FzZSBPQ0xBU1NfVkFSSUFCTEU6CiAJCQlyZXR1cm4gdHJ1ZTsKIAog CQkJLyoKQEAgLTIyNDQsNiArMjI0OCw4IEBAIHN0cmluZ2lmeV9ncmFudF9vYmp0eXBlKE9iamVj dFR5cGUgb2JqdHlwZSkKIAkJCXJldHVybiAiVEFCTEVTUEFDRSI7CiAJCWNhc2UgT0JKRUNUX1RZ UEU6CiAJCQlyZXR1cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVy biAiVkFSSUFCTEUiOwogCQkJLyogdGhlc2UgY3VycmVudGx5IGFyZW4ndCB1c2VkICovCiAJCWNh c2UgT0JKRUNUX0FDQ0VTU19NRVRIT0Q6CiAJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKQEAgLTIz MjYsNiArMjMzMiw4IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9i anR5cGUpCiAJCQlyZXR1cm4gIlRBQkxFU1BBQ0VTIjsKIAkJY2FzZSBPQkpFQ1RfVFlQRToKIAkJ CXJldHVybiAiVFlQRVMiOworCQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXJldHVybiAiVkFS SUFCTEVTIjsKIAkJCS8qIHRoZXNlIGN1cnJlbnRseSBhcmVuJ3QgdXNlZCAqLwogCQljYXNlIE9C SkVDVF9BQ0NFU1NfTUVUSE9EOgogCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w cmVwYXJlLmMKaW5kZXggYjk0NWIxNTU2YS4uZWI4YzA4YmFmMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwpAQCAtMTUxLDYgKzE1MSw3IEBAIFByZXBhcmVRdWVyeShQcmVwYXJlU3RtdCAqc3RtdCwg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCWNhc2UgQ01EX0lOU0VSVDoKIAkJY2FzZSBDTURf VVBEQVRFOgogCQljYXNlIENNRF9ERUxFVEU6CisJCWNhc2UgQ01EX1BMQU5fVVRJTElUWToKIAkJ CS8qIE9LICovCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2 YXJpYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNlZjU3Njgy NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5jCkBAIC0wLDAgKzEsNjkxIEBACisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nl c3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJj YXRhbG9nL2RlcGVuZGVuY3kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Nj aGVtYXZhcmlhYmxlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRl ICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgorI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rl cy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2NvZXJjZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgor I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBPTiBDT01NSVQgYWN0aW9uIGxpc3QK KyAqLwordHlwZWRlZiBzdHJ1Y3QgT25Db21taXRJdGVtCit7CisJT2lkCQkJdmFyaWQ7CQkJLyog cmVsaWQgb2YgcmVsYXRpb24gKi8KKwlWYXJpYWJsZUVPWEFjdGlvbiBlb3hhY3Rpb247CS8qIHdo YXQgdG8gZG8gYXQgZW5kIG9mIHhhY3QgKi8KKwlib29sCQlkZWxldGVkOwkJLyogdHJ1ZSwgd2hl biB2YXJpZCBzaG91bGQgYmUgZGVsZXRlZCAqLworCWJvb2wJCWNvbmRpdGlvbmFsX3Jlc2V0OyAv KiB3aGVuIGlzIHRydWUsIHRoZW4gdmFyaWFibGUgaXMgcmVzZXRlZCBvbiByb2xsYmFjayAqLwor fSBPbkNvbW1pdEl0ZW07CisKK3N0YXRpYyBMaXN0ICpvbl9jb21taXRzID0gTklMOworCisvKgor ICogVGhlIGNvbnRlbnQgb2YgdmFyaWFibGVzIGlzIG5vdCB0cmFuc2FjdGlvbmFsLiBEdWUgdGhp cyBmYWN0IHRoZQorICogaW1wbGVtZW50YXRpb24gb2YgRFJPUCBjYW4gYmUgc2ltcGxlLCBiZWNh dXNlIGFsdGhvdWdoIERST1AgVkFSSUFCTEUKKyAqIGNhbiBiZSByZXZlcnRlZCwgdGhlIGNvbnRl bnQgb2YgdmFyaWFibGUgY2FuIGJlIGxvc3QuIEluIHRoaXMgZXhhbXBsZSwKKyAqIERST1AgVkFS SUFCTEUgaXMgc2FtZSBsaWtlIHJlc2V0IHZhcmlhYmxlLgorICovCisKK3R5cGVkZWYgc3RydWN0 IFNjaGVtYVZhcmlhYmxlRGF0YQoreworCU9pZAkJCXZhcmlkOwkJCS8qIHBnX3ZhcmlhYmxlIE9J RCBvZiB0aGlzIHNlcXVlbmNlIChoYXNoIGtleSkgKi8KKwlPaWQJCQl0eXBpZDsJCQkvKiBPSUQg b2YgdGhlIGRhdGEgdHlwZSAqLworCWludDMyCQl0eXBtb2Q7CisJaW50MTYJCXR5cGxlbjsKKwli b29sCQl0eXBieXZhbDsKKwlib29sCQlpc251bGw7CisJYm9vbAkJZnJlZXZhbDsKKwlEYXR1bQkJ dmFsdWU7CisJYm9vbAkJaXNfcm93dHlwZTsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSBpcyBjb21w b3NpdGUgKi8KKwlib29sCQlpc192YWxpZDsJCS8qIHRydWUgd2hlbiB2YXJpYWJsZSB3YXMgc3Vj Y2Vzc2Z1bHkgaW5pdGlhbGl6ZWQgKi8KK30gU2NoZW1hVmFyaWFibGVEYXRhOworCit0eXBlZGVm IFNjaGVtYVZhcmlhYmxlRGF0YSAqU2NoZW1hVmFyaWFibGU7CisKK3N0YXRpYyBIVEFCICpzY2hl bWF2YXJoYXNodGFiID0gTlVMTDsJCS8qIGhhc2ggdGFibGUgZm9yIHNlc3Npb24gdmFyaWFibGVz ICovCitzdGF0aWMgTWVtb3J5Q29udGV4dCBTY2hlbWFWYXJpYWJsZU1lbW9yeUNvbnRleHQgPSBO VUxMOworCitzdGF0aWMgYm9vbCBmaXJzdF90aW1lID0gdHJ1ZTsKK3N0YXRpYyB2b2lkIGNyZWF0 ZV9zY2hlbWF2YXJfaGFzaHRhYmxlKHZvaWQpOworc3RhdGljIGJvb2wgY2xlYW5fY2FjaGVfcmVx ID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIGNsZWFuX2NhY2hlKHZvaWQpOworc3RhdGljIHZvaWQg Zm9yY2VfY2xlYW5fY2FjaGUoWGFjdEV2ZW50IGV2ZW50LCB2b2lkICphcmcpOworc3RhdGljIHZv aWQgcmVtb3ZlX3ZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKE9pZCB2YXJpZCk7CisKKworLyoK KyAqIFNhdmUgaW5mbyBhYm91dCBuY2Vzc2l0eSB0byBjbGVhbiBoYXNoIHRhYmxlLCBiZWNhdXNl IHNvbWUKKyAqIHNjaGVtYSB2YXJpYWJsZSB3YXMgZHJvcHBlZC4gRG9uJ3QgZG8gaGVyZSBtb3Jl LCByZWNoZWNrCisgKiBuZWVkcyB0byBiZSBpbiB0cmFuc2FjdGlvbiBzdGF0ZS4KKyAqLworc3Rh dGljIHZvaWQKK0ludmFsaWRhdGVTY2hlbWFWYXJDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50 IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJaWYgKGNhY2hlaWQgIT0gVkFSSUFCTEVP SUQpCisJCXJldHVybjsKKworCWNsZWFuX2NhY2hlX3JlcSA9IHRydWU7Cit9CisKK3N0YXRpYyB2 b2lkCitmb3JjZV9jbGVhbl9jYWNoZShYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKK3sKKwkv KgorCSAqIHNob3VsZCBjb250aW51ZSBvbmx5IGluIHRyYW5zYWN0aW9uIHRpbWUsIHdoZW4KKwkg KiBzeXNjYWNoZSBpcyBhdmFpbGFibGUuCisJICovCisJaWYgKGNsZWFuX2NhY2hlX3JlcSAmJiBJ c1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCWNsZWFuX2NhY2hlKCk7CisJCWNsZWFuX2NhY2hl X3JlcSA9IGZhbHNlOworCX0KK30KKworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlKHZvaWQpCit7 CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlTY2hlbWFWYXJpYWJsZQkJdmFyOworCisJaWYg KCFzY2hlbWF2YXJoYXNodGFiKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMs IHNjaGVtYXZhcmhhc2h0YWIpOworCisJLyoKKwkgKiBFdmVyeSB2YWxpZCB2YXJpYWJsZSBoYXZl IHRvIGhhdmUgZW50cnkgaW4gc3lzdGVtCisJICogY2F0YWxvZy4gUmVtb3ZlZCBpZiB0aGVyZSBp cyBub3RoaW5nLgorCSAqLworCXdoaWxlICgodmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3Nl cV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQlIZWFwVHVwbGUJdHAgPSBJbnZhbGlk T2lkOworCisJCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERh dHVtKHZhci0+dmFyaWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJeworCQkJ ZWxvZyhERUJVRzEsICJ2YXJpYWJsZSAlZCBpcyByZW1vdmVkIGZyb20gY2FjaGUiLCB2YXItPnZh cmlkKTsKKworCQkJaWYgKHZhci0+ZnJlZXZhbCkKKwkJCXsKKwkJCQlwZnJlZShEYXR1bUdldFBv aW50ZXIodmFyLT52YWx1ZSkpOworCQkJCXZhci0+ZnJlZXZhbCA9IGZhbHNlOworCQkJfQorCisJ CQlpZiAoaGFzaF9zZWFyY2goc2NoZW1hdmFyaGFzaHRhYiwKKwkJCQkJCQkJKHZvaWQgKikgJnZh ci0+dmFyaWQsCisJCQkJCQkJCUhBU0hfUkVNT1ZFLAorCQkJCQkJCQlOVUxMKSA9PSBOVUxMKQor CQkJCWVsb2coREVCVUcxLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwkJfQorCQllbHNlCisJ CQlSZWxlYXNlU3lzQ2FjaGUodHApOworCX0KK30KKworLyoKKyAqIENsZWFuIHZhcmlhYmxlIGRl ZmluZWQgYnkgdmFyaWQKKyAqLworc3RhdGljIHZvaWQKK2NsZWFuX2NhY2hlX3ZhcmlkKE9pZCB2 YXJpZCkKK3sKKwlTY2hlbWFWYXJpYWJsZQlzdmFyOworCWJvb2wJCQlmb3VuZDsKKworCWlmICgh c2NoZW1hdmFyaGFzaHRhYikKKwkJcmV0dXJuOworCisJaWYgKHNjaGVtYXZhcmhhc2h0YWIgPT0g TlVMTCkKKwkJY3JlYXRlX3NjaGVtYXZhcl9oYXNodGFibGUoKTsKKworCXN2YXIgPSAoU2NoZW1h VmFyaWFibGUpIGhhc2hfc2VhcmNoKHNjaGVtYXZhcmhhc2h0YWIsICZ2YXJpZCwKKwkJCQkJCQkJ CQkJICBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogY2xlYW4gY29u dGVudCwgaWYgaXQgaXMgbmVjZXNzYXJ5ICovCisJCWlmIChzdmFyLT5mcmVldmFsKQorCQkJcGZy ZWUoRGF0dW1HZXRQb2ludGVyKHN2YXItPnZhbHVlKSk7CisKKwkJaWYgKGhhc2hfc2VhcmNoKHNj aGVtYXZhcmhhc2h0YWIsCisJCQkJCQkJKHZvaWQgKikgJnN2YXItPnZhcmlkLAorCQkJCQkJCUhB U0hfUkVNT1ZFLAorCQkJCQkJCU5VTEwpID09IE5VTEwpCisJCQllbG9nKERFQlVHMSwgImhhc2gg dGFibGUgY29ycnVwdGVkIik7CisKKwkJcmVtb3ZlX3ZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25z KHZhcmlkKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIHN0b3Jp bmcgc2NoZW1hIHZhcmlhYmxlcworICovCitzdGF0aWMgdm9pZAorY3JlYXRlX3NjaGVtYXZhcl9o YXNodGFibGUodm9pZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisKKwkvKiBzZXQgY2FsbGJhY2tzICov CisJaWYgKGZpcnN0X3RpbWUpCisJeworCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhW QVJJQUJMRU9JRCwKKwkJCQkJCQkJCSAgSW52YWxpZGF0ZVNjaGVtYVZhckNhY2hlQ2FsbGJhY2ss CisJCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkJUmVnaXN0ZXJYYWN0Q2FsbGJhY2soZm9yY2Vf Y2xlYW5fY2FjaGUsIE5VTEwpOworCisJCWZpcnN0X3RpbWUgPSBmYWxzZTsKKwl9CisKKwkvKiBu ZWVkcyBvd24gbG9uZyBsaWZlIG1lbW9yeSBjb250ZXh0ICovCisJaWYgKFNjaGVtYVZhcmlhYmxl TWVtb3J5Q29udGV4dCA9PSBOVUxMKQorCXsKKwkJU2NoZW1hVmFyaWFibGVNZW1vcnlDb250ZXh0 ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCQkJ CQkic2NoZW1hIHZhcmlhYmxlcyIsCisJCQkJCQkJCQkJCQkJCQlBTExPQ1NFVF9TVEFSVF9TTUFM TF9TSVpFUyk7CisJfQorCisJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwljdGwua2V5 c2l6ZSA9IHNpemVvZihPaWQpOworCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2NoZW1hVmFyaWFi bGVEYXRhKTsKKwljdGwuaGN4dCA9IFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dDsKKworCXNj aGVtYXZhcmhhc2h0YWIgPSBoYXNoX2NyZWF0ZSgiU2NoZW1hIHZhcmlhYmxlcyIsIDY0LCAmY3Rs LAorCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworfQor CisvKgorICogRmFzdCBkcm9wIGNvbXBsZXRlIGNvbnRlbnQgb2Ygc2NoZW1hIHZhcmlhYmxlcwor ICovCit2b2lkCitSZXNldFNjaGVtYVZhcmlhYmxlQ2FjaGUodm9pZCkKK3sKKwlpZiAoc2NoZW1h dmFyaGFzaHRhYikKKwl7CisJCWhhc2hfZGVzdHJveShzY2hlbWF2YXJoYXNodGFiKTsKKwkJc2No ZW1hdmFyaGFzaHRhYiA9IE5VTEw7CisJfQorCisJaWYgKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29u dGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KFNjaGVtYVZhcmlhYmxlTWVt b3J5Q29udGV4dCk7CisJfQorfQorCisvKgorICogRHJvcCB2YXJpYWJsZSBieSBPSUQKKyAqLwor dm9pZAorUmVtb3ZlVmFyaWFibGVCeUlkKE9pZCB2YXJpZCkKK3sKKwlSZWxhdGlvbglyZWw7CisJ SGVhcFR1cGxlCXR1cDsKKworCXJlbCA9IGhlYXBfb3BlbihWYXJpYWJsZVJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBP YmplY3RJZEdldERhdHVtKHZhcmlkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHZhcmlhYmxlICV1IiwgdmFy aWQpOworCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHJlbCwgJnR1cC0+dF9zZWxmKTsKKworCVJlbGVh c2VTeXNDYWNoZSh0dXApOworCisJaGVhcF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CisJLyogcmVtb3ZlIHZhcmlhYmxlIGZyb20gb25fY29tbWl0cyBsaXN0ICovCisJcmVtb3ZlX3Zh cmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKHZhcmlkKTsKK30KKworLyoKKyAqIENyZWF0ZXMgbmV3 IHZhcmlhYmxlIC0gZW50cnkgaW4gcGdfY2F0YWxvZy5wZ192YXJpYWJsZSB0YWJsZQorICovCitP YmplY3RBZGRyZXNzCitEZWZpbmVTY2hlbWFWYXJpYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVNjaGVtYVZhclN0bXQgKnN0bXQpCit7CisJT2lkCQkJbmFtZXNwYWNlaWQ7CisJQWNsUmVz dWx0CWFjbHJlc3VsdDsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXZh cm93bmVyID0gR2V0VXNlcklkKCk7CisJT2lkCQkJY29sbGF0aW9uOworCU9pZAkJCXR5cGNvbGxh dGlvbjsKKwlPYmplY3RBZGRyZXNzIHZhcmlhYmxlOworCisJTm9kZQkgICAqY29va2VkX2RlZmF1 bHQgPSBOVUxMOworCisJLyoKKwkgKiBDaGVjayBjb25zaXN0ZW5jeSBvZiBhcmd1bWVudHMKKwkg Ki8KKwlpZiAoc3RtdC0+ZW94YWN0aW9uID09IFZBUklBQkxFX0VPWF9EUk9QCisJCQkmJiBzdG10 LT52YXJpYWJsZS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLAorCQkJCSBlcnJtc2coIk9OIENPTU1JVCBEUk9QIGNhbiBvbmx5IGJlIHVzZWQgb24gdGVt cG9yYXJ5IHZhcmlhYmxlcyIpKSk7CisKKwluYW1lc3BhY2VpZCA9CisJCVJhbmdlVmFyR2V0QW5k Q2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzdG10LT52YXJpYWJsZSwgTm9Mb2NrLCBOVUxMKTsKKwor CXR5cGVuYW1lVHlwZUlkQW5kTW9kKHBzdGF0ZSwgc3RtdC0+dHlwZU5hbWUsICZ0eXBpZCwgJnR5 cG1vZCk7CisJdHlwY29sbGF0aW9uID0gZ2V0X3R5cGNvbGxhdGlvbih0eXBpZCk7CisKKwlhY2xy ZXN1bHQgPSBwZ190eXBlX2FjbGNoZWNrKHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsK KwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlhY2xjaGVja19lcnJvcl90eXBlKGFj bHJlc3VsdCwgdHlwaWQpOworCisJaWYgKHN0bXQtPmNvbGxDbGF1c2UpCisJCWNvbGxhdGlvbiA9 IExvb2t1cENvbGxhdGlvbihwc3RhdGUsCisJCQkJCQkJCQlzdG10LT5jb2xsQ2xhdXNlLT5jb2xs bmFtZSwKKwkJCQkJCQkJCXN0bXQtPmNvbGxDbGF1c2UtPmxvY2F0aW9uKTsKKwllbHNlCisJCWNv bGxhdGlvbiA9IHR5cGNvbGxhdGlvbjs7CisKKwkvKiBDb21wbGFpbiBpZiBDT0xMQVRFIGlzIGFw cGxpZWQgdG8gYW4gdW5jb2xsYXRhYmxlIHR5cGUgKi8KKwlpZiAoT2lkSXNWYWxpZChjb2xsYXRp b24pICYmICFPaWRJc1ZhbGlkKHR5cGNvbGxhdGlvbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiY29sbGF0 aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2Jl KHR5cGlkKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmNvbGxDbGF1 c2UtPmxvY2F0aW9uKSkpOworCisJaWYgKHN0bXQtPmRlZmV4cHIpCisJeworCQljb29rZWRfZGVm YXVsdCA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBzdG10LT5kZWZleHByLAorCQkJCQkJCQkJCUVY UFJfS0lORF9WQVJJQUJMRV9ERUZBVUxUKTsKKworCQljb29rZWRfZGVmYXVsdCA9IGNvZXJjZV90 b19zcGVjaWZpY190eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCSBjb29rZWRfZGVmYXVsdCwgdHlw aWQsICJERUZBVUxUIik7CisJCWFzc2lnbl9leHByX2NvbGxhdGlvbnMocHN0YXRlLCBjb29rZWRf ZGVmYXVsdCk7CisJfQorCisJcmV0dXJuIFZhcmlhYmxlQ3JlYXRlKHN0bXQtPnZhcmlhYmxlLT5y ZWxuYW1lLAorCQkJCQkJICBuYW1lc3BhY2VpZCwKKwkJCQkJCSAgdHlwaWQsCisJCQkJCQkgIHR5 cG1vZCwKKwkJCQkJCSAgdmFyb3duZXIsCisJCQkJCQkgIGNvbGxhdGlvbiwKKwkJCQkJCSAgY29v a2VkX2RlZmF1bHQsCisJCQkJCQkgIHN0bXQtPmVveGFjdGlvbiwKKwkJCQkJCSAgc3RtdC0+aWZf bm90X2V4aXN0cyk7CisKKwlyZXR1cm4gdmFyaWFibGU7Cit9CisKKy8qCisgKiBUcnkgdG8gc2Vh cmNoIHZhbHVlIGluIGhhc2ggdGFibGUuIElmIGRvZXNuJ3QKKyAqIGV4aXN0cyBpbnNlcnQgaXQg KGFuZCBjYWxjdWxhdGUgZGVmZXhwciBpZiBleGlzdHMuCisgKi8KK3N0YXRpYyBTY2hlbWFWYXJp YWJsZQorUHJlcGFyZVNjaGVtYVZhcmlhYmxlRm9yUmVhZGluZyhPaWQgdmFyaWQpCit7CisJU2No ZW1hVmFyaWFibGUJc3ZhcjsKKwlWYXJpYWJsZQkqdmFyOworCWJvb2wJCQlmb3VuZDsKKworCWlm IChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRhYmxl KCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJoYXNo dGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoIWZv dW5kKQorCXsKKwkJdmFyID0gR2V0VmFyaWFibGUodmFyaWQsIGZhbHNlKTsKKwkJZ2V0X3R5cGxl bmJ5dmFsKHZhci0+dHlwaWQsICZzdmFyLT50eXBsZW4sICZzdmFyLT50eXBieXZhbCk7CisKKwkJ c3Zhci0+dmFyaWQgPSB2YXJpZDsKKwkJc3Zhci0+dHlwaWQgPSB2YXItPnR5cGlkOworCQlzdmFy LT50eXBtb2QgPSB2YXItPnR5cG1vZDsKKwkJc3Zhci0+aXNudWxsID0gdHJ1ZTsKKwkJc3Zhci0+ ZnJlZXZhbCA9IGZhbHNlOworCQlzdmFyLT52YWx1ZSA9IChEYXR1bSkgMDsKKwkJc3Zhci0+aXNf cm93dHlwZSA9IHR5cGVfaXNfcm93dHlwZSh2YXItPnR5cGlkKTsKKworCQkvKiB3aGVuIHdlIGRv bid0IG5lZWQgY2FsY3VsYXRlIGRlZmV4cHIsIHZhbHVlIGlzIHZhbGlkIGFscmVhZHkgKi8KKwkJ c3Zhci0+aXNfdmFsaWQgPSB2YXItPmRlZmV4cHIgPyBmYWxzZSA6IHRydWU7CisKKwkJaWYgKHZh ci0+ZW94YWN0aW9uICE9IFZBUklBQkxFX0VPWF9OT09QKQorCQkJcmVnaXN0ZXJfdmFyaWFibGVf b25fY29tbWl0X2FjdGlvbih2YXJpZCwgdmFyLT5lb3hhY3Rpb24pOworCX0KKwllbHNlIGlmICgh c3Zhci0+aXNfdmFsaWQpCisJeworCQkvKiB3ZSBuZWVkIHZhciB0byByZWNhbGN1bGF0ZSBkZWZl eHByICovCisJCXZhciA9IEdldFZhcmlhYmxlKHZhcmlkLCBmYWxzZSk7CisJfQorCWVsc2UKKwkJ Lyogd2UgZG9uJ3QgbmVlZCB0byBnbyB0byBzeXMgY2FjaGUgKi8KKwkJdmFyID0gTlVMTDsKKwor CS8qCisJICogSW5pdGlhbGl6ZSB2YXJpYWJsZSB3aGVuIGl0IGlzIG5lY2Vzc2FyeS4gSXQgaXMg ZnJlc2gKKwkgKiBvciBsYXN0IGluaXRpYWxpemF0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1bGwuCisJ ICovCisJaWYgKHZhciAhPSBOVUxMICYmIHZhci0+ZGVmZXhwciAmJiAhc3Zhci0+aXNfdmFsaWQp CisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQgPSBOVUxMOworCisJCURhdHVtCSAgIHZh bHVlID0gKERhdHVtKSAwOworCQlib29sCSAgIG51bGw7CisJCUVTdGF0ZQkgICAqZXN0YXRlID0g TlVMTDsKKwkJRXhwcgkgICAqZGVmZXhwcjsKKwkJRXhwclN0YXRlICAqZGVmZXhwcnM7CisKKwkJ LyogUHJlcGFyZSBkZWZhdWx0IGV4cHIgKi8KKwkJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0 ZSgpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVl cnlfY3h0KTsKKworCQlkZWZleHByID0gZXhwcmVzc2lvbl9wbGFubmVyKChFeHByICopIHZhci0+ ZGVmZXhwcik7CisJCWRlZmV4cHJzID0gRXhlY0luaXRFeHByKGRlZmV4cHIsIE5VTEwpOworCQl2 YWx1ZSA9IEV4ZWNFdmFsRXhwclN3aXRjaENvbnRleHQoZGVmZXhwcnMsIEdldFBlclR1cGxlRXhw ckNvbnRleHQoZXN0YXRlKSwgJm51bGwpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTY2hl bWFWYXJpYWJsZU1lbW9yeUNvbnRleHQpOworCisJCWlmICghbnVsbCkKKwkJeworCQkJc3Zhci0+ dmFsdWUgPSBkYXR1bUNvcHkodmFsdWUsIHN2YXItPnR5cGJ5dmFsLCBzdmFyLT50eXBsZW4pOwor CQkJc3Zhci0+ZnJlZXZhbCA9IHN2YXItPnZhbHVlICE9IHZhbHVlOworCQkJc3Zhci0+aXNudWxs ID0gZmFsc2U7CisJCQlzdmFyLT5pc192YWxpZCA9IHRydWU7CisJCX0KKwkJZWxzZQorCQl7CisJ CQlzdmFyLT5pc251bGwgPSB0cnVlOworCQkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOworCQl9CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJCUZyZWVFeGVjdXRvclN0 YXRlKGVzdGF0ZSk7CisJfQorCisJaWYgKCFzdmFyLT5pc192YWxpZCkKKwkJZWxvZyhFUlJPUiwg InRoZSBjb250ZW50IG9mIHZhcmlhYmxlIGlzIG5vdCB2YWxpZCIpOworCisJcmV0dXJuIHN2YXI7 Cit9CisKKy8qCisgKiBSZXR1cm5zIGNvbnRlbnQgb2YgdmFyaWFibGUuIFdlIGV4cGV4dCBzZWN1 cmVkIGFjY2VzcyBub3cuCisgKiBTZWN1cmUgY2hlY2sgc2hvdWxkIGJlIGRvbmUgYmVmb3JlLgor ICovCitEYXR1bQorR2V0U2NoZW1hVmFyaWFibGUoT2lkIHZhcmlkLCBib29sICppc051bGwsIE9p ZCBleHBlY3RlZF90eXBpZCwgYm9vbCBjb3B5KQoreworCVNjaGVtYVZhcmlhYmxlCXN2YXI7CisJ RGF0dW0JCQl2YWx1ZTsKKwlib29sCQkJaXNudWxsOworCisJc3ZhciA9IFByZXBhcmVTY2hlbWFW YXJpYWJsZUZvclJlYWRpbmcodmFyaWQpOworCUFzc2VydChzdmFyICE9IE5VTEwpOworCisJaWYg KGV4cGVjdGVkX3R5cGlkICE9IHN2YXItPnR5cGlkKQorCQllbG9nKEVSUk9SLCAidHlwZSBvZiB2 YXJpYWJsZSBcIiVzXCIgaXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQiLAorCQkJCSAgIHNjaGVt YV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCkpOworCisJdmFsdWUgPSBzdmFyLT52YWx1ZTsKKwlp c251bGwgPSBzdmFyLT5pc251bGw7CisKKwkqaXNOdWxsID0gaXNudWxsOworCisJaWYgKCFpc251 bGwgJiYgY29weSkKKwkJcmV0dXJuIGRhdHVtQ29weSh2YWx1ZSwgc3Zhci0+dHlwYnl2YWwsIHN2 YXItPnR5cGxlbik7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKKy8qCisgKiBXcml0ZSB2YWx1ZSB0 byB2YXJpYWJsZS4gV2UgZXhwZWN0IHNlY3VyZWQgYWNjZXNzIGluIHRoaXMgbW9tZW50LgorICog SW4gdGhpcyB0aW1lLCB3ZSByZWNoZWNrIHN5c2NoYWNoZSBhYm91dCB1c2VkIHR5cGUuCisgKi8K K3ZvaWQKK1NldFNjaGVtYVZhcmlhYmxlKE9pZCB2YXJpZCwgRGF0dW0gdmFsdWUsIGJvb2wgaXNO dWxsLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRl eHQgPSBOVUxMOworCisJU2NoZW1hVmFyaWFibGUgc3ZhcjsKKwlPaWQJCQl2YXJfdHlwaWQ7CisJ aW50MzIJCXZhcl90eXBtb2Q7CisJT2lkCQkJdmFyX2NvbGxpZDsKKwlib29sCQlmb3VuZDsKKwor CWlmIChzY2hlbWF2YXJoYXNodGFiID09IE5VTEwpCisJCWNyZWF0ZV9zY2hlbWF2YXJfaGFzaHRh YmxlKCk7CisKKwlzdmFyID0gKFNjaGVtYVZhcmlhYmxlKSBoYXNoX3NlYXJjaChzY2hlbWF2YXJo YXNodGFiLCAmdmFyaWQsCisJCQkJCQkJCQkJCSAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKworCWdl dF9zY2hlbWFfdmFyaWFibGVfdHlwZV90eXBtb2RfY29sbGlkKHZhcmlkLAorCQkJCQkJCQkJCSAg ICZ2YXJfdHlwaWQsCisJCQkJCQkJCQkJICAgJnZhcl90eXBtb2QsCisJCQkJCQkJCQkJICAgJnZh cl9jb2xsaWQpOworCisJLyogY2hlY2sgdHlwZXMgZmlyc3QgKi8KKwlpZiAodmFyX3R5cGlkICE9 IHR5cGlkKQorCQllbG9nKEVSUk9SLCAidHlwZSBvZiBleHByZXNzaW9uIGlzIGRpZmZlcmVudCB0 aGFuIHNjaGVtYSB2YXJpYWJsZSB0eXBlIik7CisKKwlpZiAoZm91bmQpCisJeworCQkvKiByZWxl YXNlIGN1cnJlbnQgY29udGVudCBmaXJzdCAqLworCQlpZiAoc3Zhci0+ZnJlZXZhbCkKKwkJewor CQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKHN2YXItPnZhbHVlKSk7CisJCQlzdmFyLT52YWx1ZSA9 IChEYXR1bSkgMDsKKwkJCXN2YXItPmlzbnVsbCA9IHRydWU7CisJCQlzdmFyLT5mcmVldmFsID0g ZmFsc2U7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJVmFyaWFibGUgKnZhciA9IEdldFZhcmlhYmxl KHZhcmlkLCBmYWxzZSk7CisKKwkJcmVnaXN0ZXJfdmFyaWFibGVfb25fY29tbWl0X2FjdGlvbih2 YXJpZCwgdmFyLT5lb3hhY3Rpb24pOworCX0KKworCWdldF90eXBsZW5ieXZhbCh0eXBpZCwgJnN2 YXItPnR5cGxlbiwgJnN2YXItPnR5cGJ5dmFsKTsKKworCXN2YXItPnZhcmlkID0gdmFyaWQ7CisJ c3Zhci0+dHlwaWQgPSB0eXBpZDsKKwlzdmFyLT50eXBtb2QgPSB0eXBtb2Q7CisKKwlzdmFyLT5p c251bGwgPSB0cnVlOworCXN2YXItPmZyZWV2YWwgPSBmYWxzZTsKKwlzdmFyLT52YWx1ZSA9IChE YXR1bSkgMDsKKworCXN2YXItPmlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodHlwaWQpOwor CXN2YXItPmlzX3ZhbGlkID0gZmFsc2U7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKFNjaGVtYVZhcmlhYmxlTWVtb3J5Q29udGV4dCk7CisKKwlpZiAoIWlzTnVsbCkKKwl7 CisJCXN2YXItPnZhbHVlID0gZGF0dW1Db3B5KHZhbHVlLCBzdmFyLT50eXBieXZhbCwgc3Zhci0+ dHlwbGVuKTsKKwkJc3Zhci0+ZnJlZXZhbCA9IHN2YXItPnZhbHVlICE9IHZhbHVlOworCQlzdmFy LT5pc251bGwgPSBmYWxzZTsKKwkJc3Zhci0+aXNfdmFsaWQgPSB0cnVlOworCX0KKwllbHNlCisJ eworCQlzdmFyLT5pc251bGwgPSB0cnVlOworCQlzdmFyLT5pc192YWxpZCA9IHRydWU7CisJfQor CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworfQorCit2b2lkCitkb0xldFN0 bXQoUGxhbm5lZFN0bXQgKnBzdG10LAorCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkgIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQor eworCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOworCURlc3RSZWNlaXZlciAqZGVzdDsKKworCVB1c2hD b3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOworCisJLyogQ3JlYXRlIGRlc3QgcmVjZWl2ZXIgZm9yIExFVCAqLworCWRl c3QgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdFZhcmlhYmxlKTsKKworCVNldFZhcmlhYmxlRGVz dFJlY2VpdmVyUGFyYW1zKGRlc3QsIHBzdG10LT5yZXN1bHRWYXJpYWJsZSk7CisKKwkvKiBDcmVh dGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KKwlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocHN0bXQsIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFw c2hvdCgpLAorCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJCWRlc3QsIHBh cmFtcywgcXVlcnlFbnYsIDApOworCisJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOworCUV4 ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDJMLCB0cnVlKTsKKwlF eGVjdXRvckZpbmlzaChxdWVyeURlc2MpOworCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisKKwlG cmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworfQorCisv KgorICogUmVnaXN0ZXIgYSBuZXdseS1jcmVhdGVkIHJlbGF0aW9uJ3MgT04gQ09NTUlUIGFjdGlv bi4KKyAqLwordm9pZAorcmVnaXN0ZXJfdmFyaWFibGVfb25fY29tbWl0X2FjdGlvbihPaWQgdmFy aWQsIFZhcmlhYmxlRU9YQWN0aW9uIGFjdGlvbikKK3sKKwlPbkNvbW1pdEl0ZW0gKm9jOworCU1l bW9yeUNvbnRleHQgb2xkY3h0OworCisJLyoKKwkgKiBXZSBuZWVkbid0IGJvdGhlciByZWdpc3Rl cmluZyB0aGUgcmVsYXRpb24gdW5sZXNzIHRoZXJlIGlzIGFuIE9OIENPTU1JVAorCSAqIGFjdGlv biB3ZSBuZWVkIHRvIHRha2UuCisJICovCisJaWYgKGFjdGlvbiA9PSBWQVJJQUJMRV9FT1hfTk9P UCkKKwkJcmV0dXJuOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVt b3J5Q29udGV4dCk7CisKKwlvYyA9IChPbkNvbW1pdEl0ZW0gKikgcGFsbG9jKHNpemVvZihPbkNv bW1pdEl0ZW0pKTsKKwlvYy0+dmFyaWQgPSB2YXJpZDsKKwlvYy0+ZW94YWN0aW9uID0gYWN0aW9u OworCW9jLT5kZWxldGVkID0gZmFsc2U7CisKKwlvbl9jb21taXRzID0gbGNvbnMob2MsIG9uX2Nv bW1pdHMpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBS ZW1vdmUgdmFyaWFibGUgZnJvbSBvbl9jb21taXRzIGFjdGlvbgorICovCitzdGF0aWMgdm9pZAor cmVtb3ZlX3ZhcmlhYmxlX29uX2NvbW1pdF9hY3Rpb25zKE9pZCB2YXJpZCkKK3sKKwlMaXN0Q2Vs bAkgICAqbDsKKworCWZvcmVhY2gobCwgb25fY29tbWl0cykKKwl7CisJCU9uQ29tbWl0SXRlbSAq b2MgPSAoT25Db21taXRJdGVtICopIGxmaXJzdChsKTsKKworCQlpZiAob2MtPnZhcmlkID09IHZh cmlkKQorCQl7CisJCQlvYy0+ZGVsZXRlZCA9IHRydWU7CisJCX0KKwl9Cit9CisKKy8qCisgKiBQ ZXJmb3JtIFZBUklBQkxFIE9OIENPTU1JVCBhY3Rpb24KKyAqLwordm9pZAorU2NoZW1hVmFyaWFi bGVQcmVDb21taXRfb25fY29tbWl0X2FjdGlvbnModm9pZCkKK3sKKwlMaXN0Q2VsbAkgICAqbDsK KworCWZvcmVhY2gobCwgb25fY29tbWl0cykKKwl7CisJCU9uQ29tbWl0SXRlbSAqb2MgPSAoT25D b21taXRJdGVtICopIGxmaXJzdChsKTsKKworCQlzd2l0Y2ggKG9jLT5lb3hhY3Rpb24pCisJCXsK KwkJCWNhc2UgVkFSSUFCTEVfRU9YX05PT1A6CisJCQljYXNlIFZBUklBQkxFX0VPWF9ST0xMQkFD S19SRVNFVDoKKwkJCQkvKiBEbyBub3RoaW5nICovCisJCQkJYnJlYWs7CisJCQljYXNlIFZBUklB QkxFX0VPWF9SRVNFVDoKKwkJCQljbGVhbl9jYWNoZV92YXJpZChvYy0+dmFyaWQpOworCQkJCWJy ZWFrOworCQkJY2FzZSBWQVJJQUJMRV9FT1hfRFJPUDoKKwkJCQl7CisJCQkJCU9iamVjdEFkZHJl c3Mgb2JqZWN0OworCisJCQkJCW9iamVjdC5jbGFzc0lkID0gVmFyaWFibGVSZWxhdGlvbklkOwor CQkJCQlvYmplY3Qub2JqZWN0SWQgPSBvYy0+dmFyaWQ7CisJCQkJCW9iamVjdC5vYmplY3RTdWJJ ZCA9IDA7CisKKwkJCQkJLyoKKwkJCQkJICogU2luY2UgdGhpcyBpcyBhbiBhdXRvbWF0aWMgZHJv cCwgcmF0aGVyIHRoYW4gb25lCisJCQkJCSAqIGRpcmVjdGx5IGluaXRpYXRlZCBieSB0aGUgdXNl ciwgd2UgcGFzcyB0aGUKKwkJCQkJICogUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCBmbGFnLgor CQkJCQkgKi8KKwkJCQkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsCisJCQkJCQkJCQlEUk9QX0NB U0NBREUsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCQkJCQlicmVhazsKKwkJCQl9CQkK KwkJfQorCX0KK30KKworLyoKKyAqIFBvc3QtY29tbWl0IG9yIHBvc3QtYWJvcnQgY2xlYW51cCBm b3IgT04gQ09NTUlUIG1hbmFnZW1lbnQuCisgKi8KK3ZvaWQKK0F0RU9YYWN0X1NjaGVtYVZhcmlh Ymxlc19vbl9jb21taXRfYWN0aW9ucyhib29sIGlzQ29tbWl0KQoreworCUxpc3RDZWxsICAgKmN1 cl9pdGVtOworCUxpc3RDZWxsICAgKnByZXZfaXRlbTsKKworCXByZXZfaXRlbSA9IE5VTEw7CisJ Y3VyX2l0ZW0gPSBsaXN0X2hlYWQob25fY29tbWl0cyk7CisKKwl3aGlsZSAoY3VyX2l0ZW0gIT0g TlVMTCkKKwl7CisJCU9uQ29tbWl0SXRlbSAqb2MgPSAoT25Db21taXRJdGVtICopIGxmaXJzdChj dXJfaXRlbSk7CisKKwkJaWYgKG9jLT5lb3hhY3Rpb24gPT0gVkFSSUFCTEVfRU9YX1JPTExCQUNL X1JFU0VUICYmICFpc0NvbW1pdCkKKwkJCWNsZWFuX2NhY2hlX3ZhcmlkKG9jLT52YXJpZCk7CisK KwkJaWYgKG9jLT5kZWxldGVkKQorCQl7CisJCQkvKiBjdXJfaXRlbSBtdXN0IGJlIHJlbW92ZWQg Ki8KKwkJCW9uX2NvbW1pdHMgPSBsaXN0X2RlbGV0ZV9jZWxsKG9uX2NvbW1pdHMsIGN1cl9pdGVt LCBwcmV2X2l0ZW0pOworCQkJcGZyZWUob2MpOworCQkJaWYgKHByZXZfaXRlbSkKKwkJCQljdXJf aXRlbSA9IGxuZXh0KHByZXZfaXRlbSk7CisJCQllbHNlCisJCQkJY3VyX2l0ZW0gPSBsaXN0X2hl YWQob25fY29tbWl0cyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlwcmV2X2l0ZW0gPSBjdXJfaXRl bTsKKwkJCWN1cl9pdGVtID0gbG5leHQocHJldl9pdGVtKTsKKwkJfQorCX0KK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKaW5kZXggZjllODNjMjQ1Ni4uZDlkZDIzZTVkNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTk2NTUsNiArOTY1NSw3IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlw ZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWNhc2UgT0NMQVNTX1BV QkxJQ0FUSU9OX1JFTDoKIAkJCWNhc2UgT0NMQVNTX1NVQlNDUklQVElPTjoKIAkJCWNhc2UgT0NM QVNTX1RSQU5TRk9STToKKwkJCWNhc2UgT0NMQVNTX1ZBUklBQkxFOgogCiAJCQkJLyoKIAkJCQkg KiBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZXNlIHNvcnRzIG9mIG9iamVjdHMgdG8gZGVwZW5k IG9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL01ha2VmaWxlCmluZGV4IGNjMDk4OTVmYTUuLmVlOGZmN2RhOWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL01ha2VmaWxlCkBAIC0yOSw2ICsyOSw2IEBAIE9CSlMgPSBleGVjQW1pLm8gZXhlY0N1 cnJlbnQubyBleGVjRXhwci5vIGV4ZWNFeHBySW50ZXJwLm8gXAogICAgICAgIG5vZGVDdGVzY2Fu Lm8gbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4ubyBub2RlV29ya3RhYmxlc2Nhbi5vIFwKICAgICAg ICBub2RlR3JvdXAubyBub2RlU3VicGxhbi5vIG5vZGVTdWJxdWVyeXNjYW4ubyBub2RlVGlkc2Nh bi5vIFwKICAgICAgICBub2RlRm9yZWlnbnNjYW4ubyBub2RlV2luZG93QWdnLm8gdHN0b3JlUmVj ZWl2ZXIubyB0cXVldWUubyBzcGkubyBcCi0gICAgICAgbm9kZVRhYmxlRnVuY3NjYW4ubworICAg ICAgIG5vZGVUYWJsZUZ1bmNzY2FuLm8gc3ZhcmlhYmxlUmVjZWl2ZXIubwogCiBpbmNsdWRlICQo dG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpp bmRleCBlMjg0ZmQ3MWQ3Li5iYjliZjUzZTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAg LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9vYmplY3RhY2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNF eHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5j YXBpLmgiCkBAIC03MjcsNiArNzI4LDcgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4 cHJTdGF0ZSAqc3RhdGUsCiAJCQl7CiAJCQkJUGFyYW0JICAgKnBhcmFtID0gKFBhcmFtICopIG5v ZGU7CiAJCQkJUGFyYW1MaXN0SW5mbyBwYXJhbXM7CisJCQkJQWNsUmVzdWx0CWFjbHJlc3VsdDsK IAogCQkJCXN3aXRjaCAocGFyYW0tPnBhcmFta2luZCkKIAkJCQl7CkBAIC03MzYsNiArNzM4LDI4 IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJ c2NyYXRjaC5kLnBhcmFtLnBhcmFtdHlwZSA9IHBhcmFtLT5wYXJhbXR5cGU7CiAJCQkJCQlFeHBy RXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CiAJCQkJCQlicmVhazsKKworCQkJCQljYXNl IFBBUkFNX1ZBUklBQkxFOgorCisJCQkJCQkvKiBDaGVjayBwZXJtaXNzaW9uIHRvIHJlYWQgc2No ZW1hIHZhcmlhYmxlICovCisJCQkJCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayhw YXJhbS0+cGFyYW1pZCwgR2V0VXNlcklkKCksIEFDTF9SRUFEKTsKKwkJCQkJCWlmIChhY2xyZXN1 bHQgIT0gQUNMQ0hFQ0tfT0spCisJCQkJCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpF Q1RfVkFSSUFCTEUsCisJCQkJCQkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZShwYXJhbS0+ cGFyYW1pZCkpOworCisJCQkJCQkvKgorCQkJCQkJICogVXNpbmcgdmFyb2lkIGFzIHBhcmFtaWQg aXMgbm90IHByYWN0aWNhbC4gQmV0dGVyIHRvIHJlY291bnQKKwkJCQkJCSAqIHVzZWQgc2NoZW1h IHZhcmlhYmxlcyBmcm9tIHplcm8sIGFuZCBsYXRlciB0byB1c2UgcGFyYW1pZCBsaWtlCisJCQkJ CQkgKiBvZmZzZXQuCisJCQkJCQkgKi8KKwkJCQkJCXNjcmF0Y2gub3Bjb2RlID0gRUVPUF9QQVJB TV9WQVJJQUJMRTsKKwkJCQkJCXNjcmF0Y2guZC52cGFyYW0ucGFyYW1pZCA9IHN0YXRlLT5udmFy aWFibGVzKys7CisJCQkJCQlzY3JhdGNoLmQudnBhcmFtLnZhcm9pZCA9IHBhcmFtLT5wYXJhbWlk OworCQkJCQkJc2NyYXRjaC5kLnZwYXJhbS5wYXJhbXR5cGUgPSBwYXJhbS0+cGFyYW10eXBlOwor CisJCQkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJCQlicmVhazsK KwogCQkJCQljYXNlIFBBUkFNX0VYVEVSTjoKIAogCQkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwckludGVycC5jCmluZGV4IDlkNmUyNWFhZTUuLjQ0NjJkY2M5NTIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy90dXB0b2FzdGVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zY2hlbWF2YXJpYWJs ZS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNFeHByLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Iv bm9kZVN1YnBsYW4uaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0zNTEsNiArMzUyLDcgQEAg RXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBi b29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX1BBUkFNX0VYRUMsCiAJCSYmQ0FTRV9FRU9QX1BB UkFNX0VYVEVSTiwKIAkJJiZDQVNFX0VFT1BfUEFSQU1fQ0FMTEJBQ0ssCisJCSYmQ0FTRV9FRU9Q X1BBUkFNX1ZBUklBQkxFLAogCQkmJkNBU0VfRUVPUF9DQVNFX1RFU1RWQUwsCiAJCSYmQ0FTRV9F RU9QX01BS0VfUkVBRE9OTFksCiAJCSYmQ0FTRV9FRU9QX0lPQ09FUkNFLApAQCAtMTAwNyw2ICsx MDA5LDEzIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICpl Y29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNF KEVFT1BfUEFSQU1fVkFSSUFCTEUpCisJCXsKKwkJCS8qIGl1dCBvZiBsaW5lIGltcGxlbWVudGF0 aW9uOyB0b28gbGFyZ2UgKi8KKwkJCUV4ZWNFdmFsUGFyYW1WYXJpYWJsZShzdGF0ZSwgb3AsIGVj b250ZXh0KTsKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0NBU0VfVEVT VFZBTCkKIAkJewogCQkJLyoKQEAgLTIzMjMsNiArMjMzMiw3OSBAQCBFeGVjRXZhbFBhcmFtRXh0 ZXJuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29u dGV4dCkKIAkJCSBlcnJtc2coIm5vIHZhbHVlIGZvdW5kIGZvciBwYXJhbWV0ZXIgJWQiLCBwYXJh bUlkKSkpOwogfQogCisvKgorICogRXZhbHVhdGUgYSBQQVJBTV9WQVJJQUJMRSBwYXJhbWV0ZXIK KyAqLwordm9pZAorRXhlY0V2YWxQYXJhbVZhcmlhYmxlKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJF dmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlFU3RhdGUgKmVzdGF0ZSA9 IGVjb250ZXh0LT5lY3h0X2VzdGF0ZTsKKworCS8qCisJICogV2Ugc2hvdWxkIHRvIGVuc3VyZSBz dGFibGUgYmVoYXZlIG9mIHNjaGVtYSB2YXJpYWJsZXMgaW4gcXVlcmllcy4gSXQgaXMKKwkgKiBp bXBvcnRhbnQsIGJlY2F1c2Ugb3B0aW1pemVyIHVzZXMgdGhlc2UgdmFsdWVzIGFzIHN0YWJsZSwg bGlrZSBleHRlcm4KKwkgKiBwYXJhbWV0ZXJzLCB3aGF0IGlzIG5pY2UsIGJlY2F1c2UgcXVlcmll cyBhcmUgb3B0aW1pemVkIHdlbGwuIFNvLCBkb24ndAorCSAqIHRyeSB0byBhY2Nlc3MgdmFyaWFi bGVzIGRpcmVjdGx5LCB1c2UgdGhpcyBxdWVyeSB2YXJpYWJsZSBjYWNoZS4KKwkgKiBUaGlzIGNh Y2hlIGNhbm5vdCBiZSB1c2VkIHdoZW4gRVN0YXRlIGlzIHNoYXJlZCAtIFBMcGdTUUwgZGlkIGl0 IGZvcgorCSAqIHNpbXBsZSBleHByZXNzaW9ucy4KKwkgKi8KKwlpZiAoZXN0YXRlICYmICFlc3Rh dGUtPmVzX3NoYXJlZCkKKwl7CisJCWludAkJcGFyYW1pZCA9IG9wLT5kLnZwYXJhbS5wYXJhbWlk OworCisJCWlmIChlc3RhdGUtPmVzX252YXJpYWJsZXMgPT0gMCkKKwkJeworCQkJTWVtb3J5Q29u dGV4dAlvbGRfY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVjb250ZXh0LT5lY3h0X3Blcl9x dWVyeV9tZW1vcnkpOworCisJCQkvKiBpbml0aWFsaXplIGVzdGF0ZSBzY2hlbWEgdmFyaWFibGUg Y2FjaGUgKi8KKworCQkJZXN0YXRlLT5lc19udmFyaWFibGVzID0gc3RhdGUtPm52YXJpYWJsZXM7 CisJCQllc3RhdGUtPmVzX3Zhcm51bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIHN0YXRlLT5u dmFyaWFibGVzKTsKKwkJCWVzdGF0ZS0+ZXNfdmFydHlwZXMgPSBwYWxsb2MwKHNpemVvZihPaWQp ICogc3RhdGUtPm52YXJpYWJsZXMpOworCQkJZXN0YXRlLT5lc192YXJ2YWx1ZXMgPSBwYWxsb2Mo c2l6ZW9mKERhdHVtKSAqIHN0YXRlLT5udmFyaWFibGVzKTsKKworCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZF9jeHQpOworCQl9CisKKwkJQXNzZXJ0KGVzdGF0ZS0+ZXNfbnZhcmlhYmxlcyA9 PSBzdGF0ZS0+bnZhcmlhYmxlcyk7CisJCUFzc2VydChlc3RhdGUtPmVzX252YXJpYWJsZXMgPiBw YXJhbWlkKTsKKworCQlpZiAoIU9pZElzVmFsaWQoZXN0YXRlLT5lc192YXJ0eXBlc1twYXJhbWlk XSkpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQJb2xkX2N4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhlY29udGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5KTsKKworCQkJLyogY29weSB2YXJpYWJs ZSB0byBlc3RhdGUgc2NoZW1hIHZhcmlhYmxlIGNhY2hlICovCisJCQllc3RhdGUtPmVzX3ZhcnZh bHVlc1twYXJhbWlkXSA9CisJCQkJCQkJCQkJR2V0U2NoZW1hVmFyaWFibGUob3AtPmQudnBhcmFt LnZhcm9pZCwKKwkJCQkJCQkJCQkJCQkJICAmZXN0YXRlLT5lc192YXJudWxsc1twYXJhbWlkXSwK KwkJCQkJCQkJCQkJCQkJICBvcC0+ZC52cGFyYW0ucGFyYW10eXBlLAorCQkJCQkJCQkJCQkJCQkg IHRydWUpOworCQkJZXN0YXRlLT5lc192YXJ0eXBlc1twYXJhbWlkXSA9IG9wLT5kLnZwYXJhbS5w YXJhbXR5cGU7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKKwkJfQorCisJ CUFzc2VydChPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfdmFydHlwZXNbcGFyYW1pZF0pKTsKKworCQkq b3AtPnJlc3ZhbHVlID0gZXN0YXRlLT5lc192YXJ2YWx1ZXNbcGFyYW1pZF07CisJCSpvcC0+cmVz bnVsbCA9IGVzdGF0ZS0+ZXNfdmFybnVsbHNbcGFyYW1pZF07CisJfQorCWVsc2UKKwl7CisJCURh dHVtCQlkOworCQlib29sCQlpc251bGw7CisKKwkJLyogcmVhZCBjb250ZW50IG9mIHZhcmlhYmxl IGRpcmVjdGx5ICovCisJCWQgPSBHZXRTY2hlbWFWYXJpYWJsZShvcC0+ZC52cGFyYW0udmFyb2lk LAorCQkJCQkJCSAgJmlzbnVsbCwKKwkJCQkJCQkgIG9wLT5kLnZwYXJhbS5wYXJhbXR5cGUsCisJ CQkJCQkJICBmYWxzZSk7CisKKwkJKm9wLT5yZXN2YWx1ZSA9IGQ7CisJCSpvcC0+cmVzbnVsbCA9 IGlzbnVsbDsKKwl9Cit9CisKIC8qCiAgKiBFdmFsdWF0ZSBhIFNRTFZhbHVlRnVuY3Rpb24gZXhw cmVzc2lvbi4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYzU4M2UwMjBhMC4uNzk3 YzFmNDNiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC00Myw5ICs0MywxMSBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192 YXJpYWJsZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21t YW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2RlYnVnLmgiCisjaW5jbHVk ZSAiZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zkd2Fw aS5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBA IC0yMDQsMTIgKzIwNiwxOCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqLwogCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBxdWVyeURl c2MtPnF1ZXJ5RW52OwogCisJLyoKKwkgKiBSZXN1bHQgY2FuIGJlIHN0b3JlZCBpbiBzY2hlbWEg dmFyaWFibGUuCisJICovCisJZXN0YXRlLT5lc19yZXN1bHRfdmFyaWFibGUgPSBxdWVyeURlc2Mt PnBsYW5uZWRzdG10LT5yZXN1bHRWYXJpYWJsZTsKKwogCS8qCiAJICogSWYgbm9uLXJlYWQtb25s eSBxdWVyeSwgc2V0IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgb3V0cHV0IHR1cGxlcyB3aXRoCiAJ ICovCiAJc3dpdGNoIChxdWVyeURlc2MtPm9wZXJhdGlvbikKIAl7CiAJCWNhc2UgQ01EX1NFTEVD VDoKKwkJY2FzZSBDTURfUExBTl9VVElMSVRZOgogCiAJCQkvKgogCQkJICogU0VMRUNUIEZPUiBb S0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQgdG8gbWFyawpAQCAtMzQ1 LDYgKzM1Myw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAog CWVzdGF0ZS0+ZXNfbGFzdG9pZCA9IEludmFsaWRPaWQ7CiAKIAlzZW5kVHVwbGVzID0gKG9wZXJh dGlvbiA9PSBDTURfU0VMRUNUIHx8CisJCQkJICBPaWRJc1ZhbGlkKGVzdGF0ZS0+ZXNfcmVzdWx0 X3ZhcmlhYmxlKSB8fAogCQkJCSAgcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aGFzUmV0dXJuaW5n KTsKIAogCWlmIChzZW5kVHVwbGVzKQpAQCAtOTI0LDYgKzkzMywxNyBAQCBJbml0UGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJZXN0YXRlLT5lc19udW1fcm9vdF9yZXN1 bHRfcmVsYXRpb25zID0gMDsKIAl9CiAKKwlpZiAoT2lkSXNWYWxpZChlc3RhdGUtPmVzX3Jlc3Vs dF92YXJpYWJsZSkpCisJeworCQlBY2xSZXN1bHQJYWNscmVzdWx0OworCQlPaWQJCQl2YXJpZCA9 IGVzdGF0ZS0+ZXNfcmVzdWx0X3ZhcmlhYmxlOworCisJCS8qIEVuc3VyZSB0aGlzIHZhcmlhYmxl IGlzIHdyaXRlYWJsZSAqLworCQlhY2xyZXN1bHQgPSBwZ192YXJpYWJsZV9hY2xjaGVjayh2YXJp ZCwgR2V0VXNlcklkKCksIEFDTF9XUklURSk7CisJCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tf T0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9WQVJJQUJMRSwgc2NoZW1h X3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSk7CisJfQorCiAJLyoKIAkgKiBTaW1pbGFybHksIHdl IGhhdmUgdG8gbG9jayByZWxhdGlvbnMgc2VsZWN0ZWQgRk9SIFtLRVldIFVQREFURS9TSEFSRQog CSAqIGJlZm9yZSB3ZSBpbml0aWFsaXplIHRoZSBwbGFuIHRyZWUsIGVsc2Ugd2UnZCBiZSByaXNr aW5nIGxvY2sgdXBncmFkZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDViM2VhZWM4 MGIuLmVjYTc4MDU1MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xMDIsNiArMTAy LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwg ZmllbGRzIG9mIHRoZSBFeGVjdXRvciBTdGF0ZSBzdHJ1Y3R1cmUKIAkgKi8KKwllc3RhdGUtPmVz X3NoYXJlZCA9IGZhbHNlOwogCWVzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJl Y3Rpb247CiAJZXN0YXRlLT5lc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsJLyogY2FsbGVy IG11c3QgaW5pdGlhbGl6ZSB0aGlzICovCiAJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90 ID0gSW52YWxpZFNuYXBzaG90OwkvKiBubyBjcm9zc2NoZWNrICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi4wZWFjNGI1ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv c3ZhcmlhYmxlUmVjZWl2ZXIuYwpAQCAtMCwwICsxLDE0NSBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoJICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBE ZXN0UmVjZWl2ZXIgdGhhdCBzdG9yZXMgdGhlIHJlc3VsdCB2YWx1ZSBpbgorICoJICBhIHNjaGVt YSB2YXJpYWJsZS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAxOCwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2 ZXIuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL3R1cHRvYXN0ZXIuaCIKKyNpbmNsdWRlICJleGVjdXRvci9z dmFyaWFibGVSZWNlaXZlci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYXZhcmlhYmxlLmgi CisKK3R5cGVkZWYgc3RydWN0Cit7CisJRGVzdFJlY2VpdmVyIHB1YjsKKwlPaWQJCXZhcmlkOwor CU9pZAkJdHlwaWQ7CisJaW50MzIJdHlwbW9kOworCWludAkJdHlwbGVuOworCWludAkJc2xvdF9v ZmZzZXQ7CisJaW50CQlyb3dzOworfSBzdmFyaWFibGVTdGF0ZTsKKworCisvKgorICogUHJlcGFy ZSB0byByZWNlaXZlIHR1cGxlcyBmcm9tIGV4ZWN1dG9yLgorICovCitzdGF0aWMgdm9pZAorc3Zh cmlhYmxlU3RhcnR1cFJlY2VpdmVyKERlc3RSZWNlaXZlciAqc2VsZiwgaW50IG9wZXJhdGlvbiwg VHVwbGVEZXNjIHR5cGVpbmZvKQoreworCXN2YXJpYWJsZVN0YXRlICpteVN0YXRlID0gKHN2YXJp YWJsZVN0YXRlICopIHNlbGY7CisJaW50CQkJbmF0dHMgPSB0eXBlaW5mby0+bmF0dHM7CisJaW50 CQkJb3V0Y29scyA9IDA7CisJaW50CQkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsr KQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHlwZWluZm8s IGkpOworCisJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlpZiAo KytvdXRjb2xzID4gMSkKKwkJCWVsb2coRVJST1IsICJzdmFyaWFibGUgRGVzdFJlY2VpdmVyIGNh biB0YWtlIG9ubHkgb25lIGF0dHJpYnV0ZSIpOworCisJCW15U3RhdGUtPnR5cGlkID0gYXR0ci0+ YXR0dHlwaWQ7CisJCW15U3RhdGUtPnR5cG1vZCA9IGF0dHItPmF0dHR5cG1vZDsKKwkJbXlTdGF0 ZS0+dHlwbGVuID0gYXR0ci0+YXR0bGVuOworCQlteVN0YXRlLT5zbG90X29mZnNldCA9IGk7CisJ fQorCisJbXlTdGF0ZS0+cm93cyA9IDA7Cit9CisKKy8qCisgKiBSZWNlaXZlIGEgdHVwbGUgZnJv bSB0aGUgZXhlY3V0b3IgYW5kIHN0b3JlIGl0IGluIHNjaGVtYSB2YXJpYWJsZS4KKyAqLworc3Rh dGljIGJvb2wKK3N2YXJpYWJsZVJlY2VpdmVTbG90KFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0 UmVjZWl2ZXIgKnNlbGYpCit7CisJc3ZhcmlhYmxlU3RhdGUgKm15U3RhdGUgPSAoc3ZhcmlhYmxl U3RhdGUgKikgc2VsZjsKKwlEYXR1bQkJdmFsdWU7CisJYm9vbAkJaXNudWxsOworCWJvb2wJCWZy ZWV2YWwgPSBmYWxzZTsKKworCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25z dHJ1Y3RlZCAqLworCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CisKKwl2YWx1ZSA9IHNsb3QtPnR0 c192YWx1ZXNbbXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCWlzbnVsbCA9IHNsb3QtPnR0c19pc251 bGxbbXlTdGF0ZS0+c2xvdF9vZmZzZXRdOworCisJaWYgKG15U3RhdGUtPnR5cGxlbiA9PSAtMSAm JiAhaXNudWxsICYmIFZBUkFUVF9JU19FWFRFUk5BTChEYXR1bUdldFBvaW50ZXIodmFsdWUpKSkK Kwl7CisJCXZhbHVlID0gUG9pbnRlckdldERhdHVtKGhlYXBfdHVwbGVfZmV0Y2hfYXR0cigoc3Ry dWN0IHZhcmxlbmEgKikKKwkJCQkJCQkJCQkJCQlEYXR1bUdldFBvaW50ZXIodmFsdWUpKSk7CisJ CWZyZWV2YWwgPSB0cnVlOworCX0KKworCVNldFNjaGVtYVZhcmlhYmxlKG15U3RhdGUtPnZhcmlk LCB2YWx1ZSwgaXNudWxsLCBteVN0YXRlLT50eXBpZCwgbXlTdGF0ZS0+dHlwbW9kKTsKKworCWlm IChmcmVldmFsKQorCQlwZnJlZShEYXR1bUdldFBvaW50ZXIodmFsdWUpKTsKKworCXJldHVybiB0 cnVlOworfQorCisvKgorICogQ2xlYW4gdXAgYXQgZW5kIG9mIGFuIGV4ZWN1dG9yIHJ1bgorICov CitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlU2h1dGRvd25SZWNlaXZlcihEZXN0UmVjZWl2ZXIgKnNl bGYpCit7CisJLyogRG8gbm90aGluZyAqLworfQorCisvKgorICogRGVzdHJveSByZWNlaXZlciB3 aGVuIGRvbmUgd2l0aCBpdAorICovCitzdGF0aWMgdm9pZAorc3ZhcmlhYmxlRGVzdHJveVJlY2Vp dmVyKERlc3RSZWNlaXZlciAqc2VsZikKK3sKKwlwZnJlZShzZWxmKTsKK30KKworLyoKKyAqIElu aXRpYWxseSBjcmVhdGUgYSBEZXN0UmVjZWl2ZXIgb2JqZWN0LgorICovCitEZXN0UmVjZWl2ZXIg KgorQ3JlYXRlVmFyaWFibGVEZXN0UmVjZWl2ZXIodm9pZCkKK3sKKwlzdmFyaWFibGVTdGF0ZSAq c2VsZiA9IChzdmFyaWFibGVTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihzdmFyaWFibGVTdGF0ZSkp OworCisJc2VsZi0+cHViLnJlY2VpdmVTbG90ID0gc3ZhcmlhYmxlUmVjZWl2ZVNsb3Q7CisJc2Vs Zi0+cHViLnJTdGFydHVwID0gc3ZhcmlhYmxlU3RhcnR1cFJlY2VpdmVyOworCXNlbGYtPnB1Yi5y U2h1dGRvd24gPSBzdmFyaWFibGVTaHV0ZG93blJlY2VpdmVyOworCXNlbGYtPnB1Yi5yRGVzdHJv eSA9IHN2YXJpYWJsZURlc3Ryb3lSZWNlaXZlcjsKKwlzZWxmLT5wdWIubXlkZXN0ID0gRGVzdFZh cmlhYmxlOworCisJLyogcHJpdmF0ZSBmaWVsZHMgd2lsbCBiZSBzZXQgYnkgU2V0VmFyaWFibGVE ZXN0UmVjZWl2ZXJQYXJhbXMgKi8KKworCXJldHVybiAoRGVzdFJlY2VpdmVyICopIHNlbGY7Cit9 CisKKy8qCisgKiBTZXQgcGFyYW1ldGVycyBmb3IgYSBWYXJpYWJsZURlc3RSZWNlaXZlcgorICov Cit2b2lkCitTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0UmVjZWl2ZXIgKnNlbGYs IE9pZCB2YXJpZCkKK3sKKwlzdmFyaWFibGVTdGF0ZSAqbXlTdGF0ZSA9IChzdmFyaWFibGVTdGF0 ZSAqKSBzZWxmOworCisJQXNzZXJ0KG15U3RhdGUtPnB1Yi5teWRlc3QgPT0gRGVzdFZhcmlhYmxl KTsKKwlBc3NlcnQoT2lkSXNWYWxpZCh2YXJpZCkpOworCisJbXlTdGF0ZS0+dmFyaWQgPSB2YXJp ZDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKaW5kZXggN2M4MjIwY2Y2NS4uZmNhYTJkYjUxYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv bm9kZXMvY29weWZ1bmNzLmMKQEAgLTkzLDYgKzkzLDcgQEAgX2NvcHlQbGFubmVkU3RtdChjb25z dCBQbGFubmVkU3RtdCAqZnJvbSkKIAlDT1BZX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsK IAlDT1BZX05PREVfRklFTEQobm9ubGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJQ09QWV9OT0RFX0ZJ RUxEKHJvb3RSZXN1bHRSZWxhdGlvbnMpOworCUNPUFlfU0NBTEFSX0ZJRUxEKHJlc3VsdFZhcmlh YmxlKTsKIAlDT1BZX05PREVfRklFTEQoc3VicGxhbnMpOwogCUNPUFlfQklUTUFQU0VUX0ZJRUxE KHJld2luZFBsYW5JRHMpOwogCUNPUFlfTk9ERV9GSUVMRChyb3dNYXJrcyk7CkBAIC0zMDAwLDYg KzMwMDEsNyBAQCBfY29weVF1ZXJ5KGNvbnN0IFF1ZXJ5ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJ RUxEKGNhblNldFRhZyk7CiAJQ09QWV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsKIAlDT1BZX1ND QUxBUl9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09QWV9TQ0FMQVJfRklFTEQocmVzdWx0VmFy aWFibGUpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwogCUNPUFlfU0NBTEFSX0ZJRUxE KGhhc1dpbmRvd0Z1bmNzKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChoYXNUYXJnZXRTUkZzKTsKQEAg LTMxMTgsNiArMzEyMCwxOCBAQCBfY29weVNlbGVjdFN0bXQoY29uc3QgU2VsZWN0U3RtdCAqZnJv bSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIExldFN0bXQgKgorX2NvcHlMZXRTdG10 KGNvbnN0IExldFN0bXQgKmZyb20pCit7CisJTGV0U3RtdCAqbmV3bm9kZSA9IG1ha2VOb2RlKExl dFN0bXQpOworCisJQ09QWV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09QWV9OT0RFX0ZJRUxEKHNl bGVjdFN0bXQpOworCUNPUFlfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOworCisJcmV0dXJuIG5l d25vZGU7Cit9CisKIHN0YXRpYyBTZXRPcGVyYXRpb25TdG10ICoKIF9jb3B5U2V0T3BlcmF0aW9u U3RtdChjb25zdCBTZXRPcGVyYXRpb25TdG10ICpmcm9tKQogewpAQCAtNTE2Niw2ICs1MTgwLDkg QEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6 CiAJCQlyZXR2YWwgPSBfY29weVNlbGVjdFN0bXQoZnJvbSk7CiAJCQlicmVhazsKKwkJY2FzZSBU X0xldFN0bXQ6CisJCQlyZXR2YWwgPSBfY29weUxldFN0bXQoZnJvbSk7CisJCQlicmVhazsKIAkJ Y2FzZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfY29weVNldE9wZXJhdGlvblN0 bXQoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFs ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAzNzhmMmZhY2I4 Li4zZWM0NzJlMTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC05NDksNiArOTQ5LDcgQEAg X2VxdWFsUXVlcnkoY29uc3QgUXVlcnkgKmEsIGNvbnN0IFF1ZXJ5ICpiKQogCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGNhblNldFRhZyk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHV0aWxpdHlTdG10KTsK IAlDT01QQVJFX1NDQUxBUl9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJQ09NUEFSRV9TQ0FMQVJf RklFTEQocmVzdWx0VmFyaWFibGUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc0FnZ3MpOwog CUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGhhc1dpbmRvd0Z1bmNzKTsKIAlDT01QQVJFX1NDQUxBUl9G SUVMRChoYXNUYXJnZXRTUkZzKTsKQEAgLTEwNTcsNiArMTA1OCwxNiBAQCBfZXF1YWxTZWxlY3RT dG10KGNvbnN0IFNlbGVjdFN0bXQgKmEsIGNvbnN0IFNlbGVjdFN0bXQgKmIpCiAJcmV0dXJuIHRy dWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxMZXRTdG10KGNvbnN0IExldFN0bXQgKmEsIGNv bnN0IExldFN0bXQgKmIpCit7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJQ09NUEFS RV9OT0RFX0ZJRUxEKHNlbGVjdFN0bXQpOworCisJcmV0dXJuIHRydWU7Cit9CisKKwogc3RhdGlj IGJvb2wKIF9lcXVhbFNldE9wZXJhdGlvblN0bXQoY29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYSwg Y29uc3QgU2V0T3BlcmF0aW9uU3RtdCAqYikKIHsKQEAgLTMyMjUsNiArMzIzNiw5IEBAIGVxdWFs KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9TZWxlY3RTdG10OgogCQkJ cmV0dmFsID0gX2VxdWFsU2VsZWN0U3RtdChhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfTGV0 U3RtdDoKKwkJCXJldHZhbCA9IF9lcXVhbExldFN0bXQoYSwgYik7CisJCQlicmVhazsKIAkJY2Fz ZSBUX1NldE9wZXJhdGlvblN0bXQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxTZXRPcGVyYXRpb25TdG10 KGEsIGIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBiNWFmOTA0YzE4Li5hMzJl MDFhZTRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTI3OCw2ICsyNzgsNyBAQCBfb3V0UGxhbm5l ZFN0bXQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFBsYW5uZWRTdG10ICpub2RlKQogCVdSSVRFX05P REVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlXUklURV9OT0RFX0ZJRUxEKG5vbmxlYWZSZXN1 bHRSZWxhdGlvbnMpOwogCVdSSVRFX05PREVfRklFTEQocm9vdFJlc3VsdFJlbGF0aW9ucyk7CisJ V1JJVEVfT0lEX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlXUklURV9OT0RFX0ZJRUxEKHN1YnBs YW5zKTsKIAlXUklURV9CSVRNQVBTRVRfRklFTEQocmV3aW5kUGxhbklEcyk7CiAJV1JJVEVfTk9E RV9GSUVMRChyb3dNYXJrcyk7CkBAIC0yNzk0LDYgKzI3OTUsMTYgQEAgX291dFNlbGVjdFN0bXQo U3RyaW5nSW5mbyBzdHIsIGNvbnN0IFNlbGVjdFN0bXQgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVM RChyYXJnKTsKIH0KIAorc3RhdGljIHZvaWQKK19vdXRMZXRTdG10KFN0cmluZ0luZm8gc3RyLCBj b25zdCBMZXRTdG10ICpub2RlKQoreworCVdSSVRFX05PREVfVFlQRSgiTEVUIik7CisKKwlXUklU RV9OT0RFX0ZJRUxEKHRhcmdldCk7CisJV1JJVEVfTk9ERV9GSUVMRChzZWxlY3RTdG10KTsKKwlX UklURV9MT0NBVElPTl9GSUVMRChsb2NhdGlvbik7Cit9CisKIHN0YXRpYyB2b2lkCiBfb3V0RnVu Y0NhbGwoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEZ1bmNDYWxsICpub2RlKQogewpAQCAtMjk3Miw2 ICsyOTgzLDcgQEAgX291dFF1ZXJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBRdWVyeSAqbm9kZSkK IAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgOnV0aWxpdHlTdG10IDw+Iik7CiAKIAlX UklURV9JTlRfRklFTEQocmVzdWx0UmVsYXRpb24pOworCVdSSVRFX0lOVF9GSUVMRChyZXN1bHRW YXJpYWJsZSk7CiAJV1JJVEVfQk9PTF9GSUVMRChoYXNBZ2dzKTsKIAlXUklURV9CT09MX0ZJRUxE KGhhc1dpbmRvd0Z1bmNzKTsKIAlXUklURV9CT09MX0ZJRUxEKGhhc1RhcmdldFNSRnMpOwpAQCAt NDE5Miw2ICs0MjA0LDkgQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9pZCAqb2Jq KQogCQkJY2FzZSBUX1NlbGVjdFN0bXQ6CiAJCQkJX291dFNlbGVjdFN0bXQoc3RyLCBvYmopOwog CQkJCWJyZWFrOworCQkJY2FzZSBUX0xldFN0bXQ6CisJCQkJX291dExldFN0bXQoc3RyLCBvYmop OworCQkJCWJyZWFrOwogCQkJY2FzZSBUX0NvbHVtbkRlZjoKIAkJCQlfb3V0Q29sdW1uRGVmKHN0 ciwgb2JqKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggMzI1NDUyNDIyMy4u NDQ1NDMyNzU0OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBfcmVh ZFF1ZXJ5KHZvaWQpCiAJUkVBRF9CT09MX0ZJRUxEKGNhblNldFRhZyk7CiAJUkVBRF9OT0RFX0ZJ RUxEKHV0aWxpdHlTdG10KTsKIAlSRUFEX0lOVF9GSUVMRChyZXN1bHRSZWxhdGlvbik7CisJUkVB RF9JTlRfRklFTEQocmVzdWx0VmFyaWFibGUpOwogCVJFQURfQk9PTF9GSUVMRChoYXNBZ2dzKTsK IAlSRUFEX0JPT0xfRklFTEQoaGFzV2luZG93RnVuY3MpOwogCVJFQURfQk9PTF9GSUVMRChoYXNU YXJnZXRTUkZzKTsKQEAgLTE0ODUsNiArMTQ4Niw3IEBAIF9yZWFkUGxhbm5lZFN0bXQodm9pZCkK IAlSRUFEX05PREVfRklFTEQocmVzdWx0UmVsYXRpb25zKTsKIAlSRUFEX05PREVfRklFTEQobm9u bGVhZlJlc3VsdFJlbGF0aW9ucyk7CiAJUkVBRF9OT0RFX0ZJRUxEKHJvb3RSZXN1bHRSZWxhdGlv bnMpOworCVJFQURfT0lEX0ZJRUxEKHJlc3VsdFZhcmlhYmxlKTsKIAlSRUFEX05PREVfRklFTEQo c3VicGxhbnMpOwogCVJFQURfQklUTUFQU0VUX0ZJRUxEKHJld2luZFBsYW5JRHMpOwogCVJFQURf Tk9ERV9GSUVMRChyb3dNYXJrcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5k ZXggOTZiZjA2MDFhOC4uNDU3M2E4OGYzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYwpAQCAtMzM1LDcgKzMzNSw4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBp bnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKIAkgKi8KIAlpZiAo KGN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1BBUkFMTEVMX09LKSAhPSAwICYmCiAJCUlzVW5k ZXJQb3N0bWFzdGVyICYmCi0JCXBhcnNlLT5jb21tYW5kVHlwZSA9PSBDTURfU0VMRUNUICYmCisJ CShwYXJzZS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCB8fAorCQkgcGFyc2UtPmNvbW1hbmRU eXBlID09IENNRF9QTEFOX1VUSUxJVFkpICYmCiAJCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RFICYm CiAJCW1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPiAwICYmCiAJCSFJc1BhcmFsbGVs V29ya2VyKCkgJiYKQEAgLTM1Miw2ICszNTMsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpw YXJzZSwgaW50IGN1cnNvck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCiAJCWds b2ItPnBhcmFsbGVsTW9kZU9LID0gZmFsc2U7CiAJfQogCisKKwogCS8qCiAJICogZ2xvYi0+cGFy YWxsZWxNb2RlTmVlZGVkIGlzIG5vcm1hbGx5IHNldCB0byBmYWxzZSBoZXJlIGFuZCBjaGFuZ2Vk IHRvCiAJICogdHJ1ZSBkdXJpbmcgcGxhbiBjcmVhdGlvbiBpZiBhIEdhdGhlciBvciBHYXRoZXIg TWVyZ2UgcGxhbiBpcyBhY3R1YWxseQpAQCAtNTIxLDYgKzUyNCw3IEBAIHN0YW5kYXJkX3BsYW5u ZXIoUXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBh cmFtcykKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsK IAlyZXN1bHQtPm5vbmxlYWZSZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5ub25sZWFmUmVzdWx0UmVs YXRpb25zOwogCXJlc3VsdC0+cm9vdFJlc3VsdFJlbGF0aW9ucyA9IGdsb2ItPnJvb3RSZXN1bHRS ZWxhdGlvbnM7CisJcmVzdWx0LT5yZXN1bHRWYXJpYWJsZSA9IHBhcnNlLT5yZXN1bHRWYXJpYWJs ZTsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQ bGFuSURzID0gZ2xvYi0+cmV3aW5kUGxhbklEczsKIAlyZXN1bHQtPnJvd01hcmtzID0gZ2xvYi0+ ZmluYWxyb3dtYXJrczsKQEAgLTIxNzMsNyArMjE3Nyw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxh bm5lckluZm8gKnJvb3QsIGJvb2wgaW5oZXJpdGFuY2VfdXBkYXRlLAogCQkgKiBJZiB0aGlzIGlz IGFuIElOU0VSVC9VUERBVEUvREVMRVRFLCBhbmQgd2UncmUgbm90IGJlaW5nIGNhbGxlZCBmcm9t CiAJCSAqIGluaGVyaXRhbmNlX3BsYW5uZXIsIGFkZCB0aGUgTW9kaWZ5VGFibGUgbm9kZS4KIAkJ ICovCi0JCWlmIChwYXJzZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1NFTEVDVCAmJiAhaW5oZXJpdGFu Y2VfdXBkYXRlKQorCQlpZiAocGFyc2UtPmNvbW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgJiYgcGFy c2UtPmNvbW1hbmRUeXBlICE9IENNRF9QTEFOX1VUSUxJVFkgJiYgIWluaGVyaXRhbmNlX3VwZGF0 ZSkKIAkJewogCQkJTGlzdAkgICAqd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJCQlMaXN0CSAgICpy ZXR1cm5pbmdMaXN0czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3By ZXB0bGlzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRsaXN0LmMKaW5kZXgg ODYwM2ZlZWYyYi4uMjkyM2UzZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3ByZXAvcHJlcHRsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHRs aXN0LmMKQEAgLTcxLDYgKzcxLDcgQEAgcHJlcHJvY2Vzc190YXJnZXRsaXN0KFBsYW5uZXJJbmZv ICpyb290KQogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCWludAkJCXJlc3Vs dF9yZWxhdGlvbiA9IHBhcnNlLT5yZXN1bHRSZWxhdGlvbjsKKwlpbnQJCQlyZXN1bHRfdmFyaWFi bGUgPSBwYXJzZS0+cmVzdWx0VmFyaWFibGU7CiAJTGlzdAkgICAqcmFuZ2VfdGFibGUgPSBwYXJz ZS0+cnRhYmxlOwogCUNtZFR5cGUJCWNvbW1hbmRfdHlwZSA9IHBhcnNlLT5jb21tYW5kVHlwZTsK IAlSYW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlID0gTlVMTDsKQEAgLTk2LDYgKzk3LDEwIEBAIHBy ZXByb2Nlc3NfdGFyZ2V0bGlzdChQbGFubmVySW5mbyAqcm9vdCkKIAogCQl0YXJnZXRfcmVsYXRp b24gPSBoZWFwX29wZW4odGFyZ2V0X3J0ZS0+cmVsaWQsIE5vTG9jayk7CiAJfQorCWVsc2UgaWYg KHJlc3VsdF92YXJpYWJsZSkKKwl7CisJCUFzc2VydChjb21tYW5kX3R5cGUgPT0gQ01EX1BMQU5f VVRJTElUWSk7CisJfQogCWVsc2UKIAkJQXNzZXJ0KGNvbW1hbmRfdHlwZSA9PSBDTURfU0VMRUNU KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGVlNmY0Y2RmNGQuLmYy MzJjNmNmZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTEyNjgsNyAr MTI2OCw4IEBAIG1heF9wYXJhbGxlbF9oYXphcmRfd2Fsa2VyKE5vZGUgKm5vZGUsIG1heF9wYXJh bGxlbF9oYXphcmRfY29udGV4dCAqY29udGV4dCkKIAl7CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQ YXJhbSAqKSBub2RlOwogCi0JCWlmIChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX0VYVEVSTikK KwkJaWYgKHBhcmFtLT5wYXJhbWtpbmQgPT0gUEFSQU1fRVhURVJOIHx8CisJCQlwYXJhbS0+cGFy YW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCWlmIChwYXJh bS0+cGFyYW1raW5kICE9IFBBUkFNX0VYRUMgfHwKQEAgLTQ4MTMsNyArNDgxNCw3IEBAIHN1YnN0 aXR1dGVfYWN0dWFsX3BhcmFtZXRlcnNfbXV0YXRvcihOb2RlICpub2RlLAogewogCWlmIChub2Rl ID09IE5VTEwpCiAJCXJldHVybiBOVUxMOwotCWlmIChJc0Eobm9kZSwgUGFyYW0pKQorCWlmIChJ c0Eobm9kZSwgUGFyYW0pICYmICgoUGFyYW0gKikgbm9kZSktPnBhcmFta2luZCAhPSBQQVJBTV9W QVJJQUJMRSkKIAl7CiAJCVBhcmFtCSAgICpwYXJhbSA9IChQYXJhbSAqKSBub2RlOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggODM2OWUzYWQ2Mi4uZmMwY2YzNGM3ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAg Z2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRzKFBsYW5uZXJJbmZvICpyb290LAogCSAqIGRlc2NyaXB0 b3IsIGluc3RlYWQgb2YgY29uc3RyYWludCBleGNsdXNpb24gd2hpY2ggaXMgZHJpdmVuIGJ5IHRo ZQogCSAqIGluZGl2aWR1YWwgcGFydGl0aW9uJ3MgcGFydGl0aW9uIGNvbnN0cmFpbnQuCiAJICov Ci0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiByb290LT5wYXJzZS0+Y29tbWFuZFR5 cGUgIT0gQ01EX1NFTEVDVCkKKwlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIHJvb3Qt PnBhcnNlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VMRUNUICYmIHJvb3QtPnBhcnNlLT5jb21tYW5k VHlwZSAhPSBDTURfUExBTl9VVElMSVRZKQogCXsKIAkJTGlzdAkgICAqcGNxdWFsID0gUmVsYXRp b25HZXRQYXJ0aXRpb25RdWFsKHJlbGF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggYzYw MWI2ZDQwZC4uOGE3MjRmZTNiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yNSw3ICsyNSwxMCBA QAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgor I2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ192YXJpYWJsZS5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3NjaGVtYXZhcmlhYmxlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9k ZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCkBAIC00NCw2ICs0 Nyw4IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtNzgsNiArODMsOCBAQCBzdGF0aWMgUXVlcnkgKnRy YW5zZm9ybUNyZWF0ZVRhYmxlQXNTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgIENy ZWF0ZVRhYmxlQXNTdG10ICpzdG10KTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ2FsbFN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSAgQ2FsbFN0bXQgKnN0bXQpOworc3RhdGljIFF1ZXJ5 ICp0cmFuc2Zvcm1MZXRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkgIExldFN0bXQgKnN0 bXQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJzZVN0YXRlICpwc3Rh dGUsIFF1ZXJ5ICpxcnksCiAJCQkJCSAgIExvY2tpbmdDbGF1c2UgKmxjLCBib29sIHB1c2hlZERv d24pOwogI2lmZGVmIFJBV19FWFBSRVNTSU9OX0NPVkVSQUdFX1RFU1QKQEAgLTI2Nyw2ICsyNzQs NyBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKQog CQljYXNlIFRfSW5zZXJ0U3RtdDoKIAkJY2FzZSBUX1VwZGF0ZVN0bXQ6CiAJCWNhc2UgVF9EZWxl dGVTdG10OgorCQljYXNlIFRfTGV0U3RtdDoKIAkJCSh2b2lkKSB0ZXN0X3Jhd19leHByZXNzaW9u X2NvdmVyYWdlKHBhcnNlVHJlZSwgTlVMTCk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTMy Nyw2ICszMzUsMTEgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBh cnNlVHJlZSkKIAkJCQkJCQkJCSAgIChDYWxsU3RtdCAqKSBwYXJzZVRyZWUpOwogCQkJYnJlYWs7 CiAKKwkJY2FzZSBUX0xldFN0bXQ6CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1MZXRTdG10KHBzdGF0 ZSwKKwkJCQkJCQkJCSAgKExldFN0bXQgKikgcGFyc2VUcmVlKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAKIAkJCS8qCkBAIC0zNjcsNiArMzgwLDcgQEAgYW5hbHl6ZV9yZXF1aXJlc19zbmFw c2hvdChSYXdTdG10ICpwYXJzZVRyZWUpCiAJCWNhc2UgVF9EZWxldGVTdG10OgogCQljYXNlIFRf VXBkYXRlU3RtdDoKIAkJY2FzZSBUX1NlbGVjdFN0bXQ6CisJCWNhc2UgVF9MZXRTdG10OgogCQkJ cmVzdWx0ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCkBAIC0xNTY3LDYgKzE1ODEsMjA0IEBAIHRyYW5z Zm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJ cmV0dXJuIHFyeTsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybUxldFN0bXQgLQorICoJICB0cmFuc2Zv cm0gYW4gTGV0IFN0YXRlbWVudAorICovCitzdGF0aWMgUXVlcnkgKgordHJhbnNmb3JtTGV0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIExldFN0bXQgKnN0bXQpCit7CisJUXVlcnkJICAgKnFyeSA9 IG1ha2VOb2RlKFF1ZXJ5KTsKKwlMaXN0CSAgICpleHByTGlzdCA9IE5JTDsKKwlMaXN0CSAgICpl eHByTGlzdENvZXIgPSBOSUw7CisJTGlzdAkgICAqaW5kaXJlY3Rpb24gPSBOSUw7CisJTGlzdENl bGwgICAqbGM7CisJUXVlcnkJICAgKnNlbGVjdFF1ZXJ5OworCWludAkJCWkgPSAwOworCisJT2lk CQkJdmFyaWQ7CisKKwlQYXJzZUV4cHJLaW5kIHN2X2V4cHJfa2luZDsKKwljaGFyCSAgICphdHRy bmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKKwlib29sCQlpc19yb3d0eXBlOworCU9p ZAkJCXR5cGlkOworCWludDMyCQl0eXBtb2Q7CisJT2lkCQkJY29sbGlkOworCisJQWNsUmVzdWx0 CWFjbHJlc3VsdDsKKwlMaXN0CSAgICpuYW1lcyA9IE5VTEw7CisJaW50CQkJaW5kaXJlY3Rpb25f c3RhcnQ7CisKKwlzdl9leHByX2tpbmQgPSBwc3RhdGUtPnBfZXhwcl9raW5kOworCXBzdGF0ZS0+ cF9leHByX2tpbmQgPSBFWFBSX0tJTkRfTEVUOworCisJLyogVGhlcmUgY2FuJ3QgYmUgYW55IG91 dGVyIFdJVEggdG8gd29ycnkgYWJvdXQgKi8KKwlBc3NlcnQocHN0YXRlLT5wX2N0ZW5hbWVzcGFj ZSA9PSBOSUwpOworCisJLyogRXhlYyB0aGlzIGNvbW1hbmQgYXMgdXRpbGl0eSAqLworCXFyeS0+ Y29tbWFuZFR5cGUgPSBDTURfUExBTl9VVElMSVRZOworCXFyeS0+dXRpbGl0eVN0bXQgPSAoTm9k ZSAqKSBzdG10OworCisJbmFtZXMgPSBOYW1lc0Zyb21MaXN0KHN0bXQtPnRhcmdldCk7CisKKwl2 YXJpZCA9IGlkZW50aWZ5X3ZhcmlhYmxlKG5hbWVzLCAmYXR0cm5hbWUsICZub3RfdW5pcXVlKTsK KwlpZiAobm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJtc2coInRhcmdldCBcIiVzXCIgb2YgTEVU IGNvbW1hbmQgaXMgYW1iaWd1b3VzIiwKKwkJCQkJCU5hbWVMaXN0VG9TdHJpbmcobmFtZXMpKSwK KwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7CisKKwlp ZiAoIU9pZElzVmFsaWQodmFyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInNjaGVtYSB2YXJpYWJs ZSBcIiVzXCIgZG9lc24ndCBleGlzdHMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKG5hbWVz KSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3RtdC0+bG9jYXRpb24pKSk7 CisKKwlxcnktPnJlc3VsdFZhcmlhYmxlID0gdmFyaWQ7CisKKwlnZXRfc2NoZW1hX3ZhcmlhYmxl X3R5cGVfdHlwbW9kX2NvbGxpZCh2YXJpZCwgJnR5cGlkLCAmdHlwbW9kLCAmY29sbGlkKTsKKwor CWlzX3Jvd3R5cGUgPSB0eXBlX2lzX3Jvd3R5cGUodHlwaWQpOworCisJaWYgKGF0dHJuYW1lICYm ICFpc19yb3d0eXBlKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfV1JP TkdfT0JKRUNUX1RZUEUpLAorCQkJCSBlcnJtc2coInRhcmdldCB2YXJpYWJsZSBcIiVzXCIgaXMg bm90IHJvdyB0eXBlIiwKKwkJCQkJCXNjaGVtYV92YXJpYWJsZV9nZXRfbmFtZSh2YXJpZCkpLAor CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHN0bXQtPmxvY2F0aW9uKSkpOworCisJYWNs cmVzdWx0ID0gcGdfdmFyaWFibGVfYWNsY2hlY2sodmFyaWQsIEdldFVzZXJJZCgpLCBBQ0xfV1JJ VEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX1ZBUklBQkxFLCBOYW1lTGlzdFRvU3RyaW5nKG5hbWVzKSk7CisKKwlz ZWxlY3RRdWVyeSA9IHRyYW5zZm9ybVN0bXQocHN0YXRlLCBzdG10LT5zZWxlY3RTdG10KTsKKwor CS8qIFRoZSBncmFtbWFyIHNob3VsZCBoYXZlIHByb2R1Y2VkIGEgU0VMRUNUICovCisJaWYgKCFJ c0Eoc2VsZWN0UXVlcnksIFF1ZXJ5KSB8fAorCQlzZWxlY3RRdWVyeS0+Y29tbWFuZFR5cGUgIT0g Q01EX1NFTEVDVCkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgbm9uLVNFTEVDVCBjb21tYW5k IGluIExFVCAuLi4gU0VMRUNUIik7CisKKwkvKi0tLS0tLS0tLS0KKwkgKiBHZW5lcmF0ZSBhbiBl eHByZXNzaW9uIGxpc3QgZm9yIHRoZSBMRVQgdGhhdCBzZWxlY3RzIGFsbCB0aGUKKwkgKiBub24t cmVzanVuayBjb2x1bW5zIGZyb20gdGhlIHN1YnF1ZXJ5LgorCSAqLS0tLS0tLS0tLQorCSAqLwor CWV4cHJMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIHNlbGVjdFF1ZXJ5LT50YXJnZXRMaXN0KQor CXsKKwkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOworCisJ CWlmICh0bGUtPnJlc2p1bmspCisJCQljb250aW51ZTsKKworCQlleHByTGlzdCA9IGxhcHBlbmQo ZXhwckxpc3QsIHRsZS0+ZXhwcik7CisJfQorCisJLyoKKwkgKiBCZWNhdXNlIGRvZXNuJ3Qgc3Vw cG9ydCBwYXR0ZXJuIG1hdGNoaW5nLCBkb24ndCBhbGxvdyBtdWx0aWNvbHVtbiByZXN1bHQKKwkg Ki8KKwlpZiAobGlzdF9sZW5ndGgoZXhwckxpc3QpICE9IDEpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImV4cHJlc3Np b24gaXMgbm90IHNjYWxhciB2YWx1ZSIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LAorCQkJCQkJCQkJZXhwckxvY2F0aW9uKChOb2RlICopIGV4cHJMaXN0KSkpKTsKKworCWluZGly ZWN0aW9uX3N0YXJ0ID0gbGlzdF9sZW5ndGgobmFtZXMpIC0gKGF0dHJuYW1lID8gMSA6IDApOwor CWluZGlyZWN0aW9uID0gbGlzdF9jb3B5X3RhaWwoc3RtdC0+dGFyZ2V0LCBpbmRpcmVjdGlvbl9z dGFydCk7CisKKwlleHByTGlzdENvZXIgPSBOSUw7CisJZm9yZWFjaChsYywgZXhwckxpc3QpCisJ eworCQlOb2RlCSAgICpvcmlnX2V4cHIgPSAoTm9kZSopIGxmaXJzdChsYyk7CisJCU9pZAkJCWV4 cHJ0eXBpZCA9IGV4cHJUeXBlKChOb2RlICopIG9yaWdfZXhwcik7CisJCVBhcmFtICpwYXJhbSA9 IG1ha2VOb2RlKFBhcmFtKTsKKwkJRXhwcgkgICAqZXhwciA9IE5VTEw7CisKKwkJcGFyYW0tPnBh cmFta2luZCA9IFBBUkFNX1ZBUklBQkxFOworCQlwYXJhbS0+cGFyYW1pZCA9IHZhcmlkOworCQlw YXJhbS0+cGFyYW10eXBlID0gdHlwaWQ7CisJCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1vZDsK KworCQlpZiAoaW5kaXJlY3Rpb24gIT0gTlVMTCkKKwkJeworCQkJYm9vbAkJdGFyZ2V0SXNBcnJh eTsKKwkJCWNoYXIJICAgICp0YXJnZXROYW1lOworCisJCQl0YXJnZXROYW1lID0gYXR0cm5hbWUg IT0gTlVMTCA/IGF0dHJuYW1lIDogZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKHZhcmlkKTsKKwkJ CXRhcmdldElzQXJyYXkgPSBPaWRJc1ZhbGlkKGdldF9lbGVtZW50X3R5cGUodHlwaWQpKTsKKwor CQkJZXhwciA9IChFeHByICopCisJCQkJCXRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihw c3RhdGUsCisJCQkJCQkJCQkJCQkoTm9kZSAqKSBwYXJhbSwKKwkJCQkJCQkJCQkJCXRhcmdldE5h bWUsCisJCQkJCQkJCQkJCQl0YXJnZXRJc0FycmF5LAorCQkJCQkJCQkJCQkJdHlwaWQsCisJCQkJ CQkJCQkJCQl0eXBtb2QsCisJCQkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkJbGlz dF9oZWFkKGluZGlyZWN0aW9uKSwKKwkJCQkJCQkJCQkJCShOb2RlICopIG9yaWdfZXhwciwKKwkJ CQkJCQkJCQkJCXN0bXQtPmxvY2F0aW9uKTsKKwkJfQorCQllbHNlCisJCQlleHByID0gKEV4cHIg KikKKwkJCQkJY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJKE5vZGUg Kikgb3JpZ19leHByLAorCQkJCQkJCQkJCQlleHBydHlwaWQsCisJCQkJCQkJCQkJCXR5cGlkLCB0 eXBtb2QsCisJCQkJCQkJCQkJCUNPRVJDSU9OX0FTU0lHTk1FTlQsCisJCQkJCQkJCQkJCUNPRVJD RV9JTVBMSUNJVF9DQVNULAorCQkJCQkJCQkJCQlzdG10LT5sb2NhdGlvbik7CisKKwkJaWYgKGV4 cHIgPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJ2YXJpYWJsZSBcIiVzXCIgaXMgb2YgdHlw ZSAlcywiCisJCQkJCQkJICAiIGJ1dCBleHByZXNzaW9uIGlzIG9mIHR5cGUgJXMiLAorCQkJCQkJ c2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1lKHZhcmlkKSwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZSh0 eXBpZCksCisJCQkJCQkgIGZvcm1hdF90eXBlX2JlKGV4cHJ0eXBpZCkpLAorCQkJCSBlcnJoaW50 KCJZb3Ugd2lsbCBuZWVkIHRvIHJld3JpdGUgb3IgY2FzdCB0aGUgZXhwcmVzc2lvbi4iKSwKKwkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG9yaWdf ZXhwcikpKSk7CisKKwkJZXhwckxpc3RDb2VyID0gbGFwcGVuZChleHByTGlzdENvZXIsIGV4cHIp OworCX0KKworCS8qCisJICogR2VuZXJhdGUgcXVlcnkncyB0YXJnZXQgbGlzdCB1c2luZyB0aGUg Y29tcHV0ZWQgbGlzdCBvZiBleHByZXNzaW9ucy4KKwkgKiBBbHNvLCBtYXJrIGFsbCB0aGUgdGFy Z2V0IGNvbHVtbnMgYXMgbmVlZGluZyBpbnNlcnQgcGVybWlzc2lvbnMuCisJICovCisJcXJ5LT50 YXJnZXRMaXN0ID0gTklMOworCWZvcmVhY2gobGMsIGV4cHJMaXN0Q29lcikKKwl7CisJCUV4cHIJ ICAgKmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJ CXRsZSA9IG1ha2VUYXJnZXRFbnRyeShleHByLAorCQkJCQkJCSAgaSArIDEsCisJCQkJCQkJICBG aWd1cmVDb2xuYW1lKChOb2RlICopZXhwciksCisJCQkJCQkJICBmYWxzZSk7CisJCXFyeS0+dGFy Z2V0TGlzdCA9IGxhcHBlbmQocXJ5LT50YXJnZXRMaXN0LCB0bGUpOworCX0KKworCS8qIGRvbmUg YnVpbGRpbmcgdGhlIHJhbmdlIHRhYmxlIGFuZCBqb2ludHJlZSAqLworCXFyeS0+cnRhYmxlID0g cHN0YXRlLT5wX3J0YWJsZTsKKwlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+ cF9qb2lubGlzdCwgTlVMTCk7CisKKwlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFz VGFyZ2V0U1JGczsKKwlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOwor CisJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOworCisJcHN0YXRlLT5wX2V4 cHJfa2luZCA9IHN2X2V4cHJfa2luZDsKKworCXJldHVybiBxcnk7Cit9CisKKwogLyoKICAqIHRy YW5zZm9ybVNldE9wZXJhdGlvblN0bXQgLQogICoJICB0cmFuc2Zvcm1zIGEgc2V0LW9wZXJhdGlv bnMgdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNGJkMjIyM2YyNi4uMGY5ZDY3NTA2YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CkBAIC0yMTEsNiArMjExLDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlKb2luVHlw ZQkJCWp0eXBlOwogCURyb3BCZWhhdmlvcgkJZGJlaGF2aW9yOwogCU9uQ29tbWl0QWN0aW9uCQlv bmNvbW1pdDsKKwlWYXJpYWJsZUVPWEFjdGlvbglvbmVveGFjdGlvbjsKIAlMaXN0CQkJCSpsaXN0 OwogCU5vZGUJCQkJKm5vZGU7CiAJVmFsdWUJCQkJKnZhbHVlOwpAQCAtMjU3LDggKzI1OCw4IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNvbnN0cmFpbnRzU2V0U3RtdCBDb3B5U3RtdCBD cmVhdGVBc1N0bXQgQ3JlYXRlQ2FzdFN0bXQKIAkJQ3JlYXRlRG9tYWluU3RtdCBDcmVhdGVFeHRl bnNpb25TdG10IENyZWF0ZUdyb3VwU3RtdCBDcmVhdGVPcENsYXNzU3RtdAogCQlDcmVhdGVPcEZh bWlseVN0bXQgQWx0ZXJPcEZhbWlseVN0bXQgQ3JlYXRlUExhbmdTdG10Ci0JCUNyZWF0ZVNjaGVt YVN0bXQgQ3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJs ZVNwYWNlU3RtdAotCQlDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0 ZUZvcmVpZ25UYWJsZVN0bXQKKwkJQ3JlYXRlU2NoZW1hU3RtdCBDcmVhdGVTY2hlbWFWYXJTdG10 IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQKKwkJQ3JlYXRlVGFibGVT cGFjZVN0bXQgQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3RtdCBDcmVhdGVGb3Jl aWduVGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydFN0bXQgQ3JlYXRlVHJhbnNmb3JtU3RtdCBDcmVh dGVUcmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10CiAJCUNyZWF0ZVVzZXJTdG10IENyZWF0ZVVz ZXJNYXBwaW5nU3RtdCBDcmVhdGVSb2xlU3RtdCBDcmVhdGVQb2xpY3lTdG10CiAJCUNyZWF0ZWRi U3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBEZWZpbmVTdG10IERlbGV0ZVN0bXQgRGlzY2FyZFN0bXQg RG9TdG10CkBAIC0yNjgsNyArMjY5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJRHJv cFRyYW5zZm9ybVN0bXQKIAkJRHJvcFVzZXJNYXBwaW5nU3RtdCBFeHBsYWluU3RtdCBGZXRjaFN0 bXQKIAkJR3JhbnRTdG10IEdyYW50Um9sZVN0bXQgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQgSW5k ZXhTdG10IEluc2VydFN0bXQKLQkJTGlzdGVuU3RtdCBMb2FkU3RtdCBMb2NrU3RtdCBOb3RpZnlT dG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdAorCQlMZXRTdG10IExpc3RlblN0bXQg TG9hZFN0bXQgTG9ja1N0bXQgTm90aWZ5U3RtdCBFeHBsYWluYWJsZVN0bXQgUHJlcGFyYWJsZVN0 bXQKIAkJQ3JlYXRlRnVuY3Rpb25TdG10IEFsdGVyRnVuY3Rpb25TdG10IFJlaW5kZXhTdG10IFJl bW92ZUFnZ3JTdG10CiAJCVJlbW92ZUZ1bmNTdG10IFJlbW92ZU9wZXJTdG10IFJlbmFtZVN0bXQg UmV2b2tlU3RtdCBSZXZva2VSb2xlU3RtdAogCQlSdWxlQWN0aW9uU3RtdCBSdWxlQWN0aW9uU3Rt dE9yRW1wdHkgUnVsZVN0bXQKQEAgLTQwMCw2ICs0MDEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJlbmNpbmcKIAkJCQlwdWJs aWNhdGlvbl9uYW1lX2xpc3QKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3Jl bGF0aW9uX2xpc3QKKwkJCQlsZXRfdGFyZ2V0CiAKICV0eXBlIDxsaXN0Pglncm91cF9ieV9saXN0 CiAldHlwZSA8bm9kZT4JZ3JvdXBfYnlfaXRlbSBlbXB0eV9ncm91cGluZ19zZXQgcm9sbHVwX2Ns YXVzZSBjdWJlX2NsYXVzZQpAQCAtNDIyLDYgKzQyNCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAldHlwZSA8aXZhbD4JIE9wdFRlbXAKICV0eXBlIDxpdmFsPgkgT3B0Tm9Mb2cKICV0eXBl IDxvbmNvbW1pdD4gT25Db21taXRPcHRpb24KKyV0eXBlIDxvbmVveGFjdGlvbj4gT25FT1hBY3Rp b25PcHRpb24KIAogJXR5cGUgPGl2YWw+CWZvcl9sb2NraW5nX3N0cmVuZ3RoCiAldHlwZSA8bm9k ZT4JZm9yX2xvY2tpbmdfaXRlbQpAQCAtNTg0LDYgKzU4Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAldHlwZSA8bm9kZT4JCXBhcnRib3VuZF9kYXR1bSBQYXJ0aXRpb25SYW5nZURhdHVt CiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kIHBhcnRib3VuZF9kYXR1bV9saXN0IHJhbmdl X2RhdHVtX2xpc3QKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCisldHlwZSA8 bm9kZT4JCW9wdFNjaGVtYVZhckRlZkV4cHIKIAogLyoKICAqIE5vbi1rZXl3b3JkIHRva2VuIHR5 cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxleGVyLgpAQCAtNjQ5 LDcgKzY1Myw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJS0VZCiAKIAlMQUJFTCBMQU5H VUFHRSBMQVJHRV9QIExBU1RfUCBMQVRFUkFMX1AKLQlMRUFESU5HIExFQUtQUk9PRiBMRUFTVCBM RUZUIExFVkVMIExJS0UgTElNSVQgTElTVEVOIExPQUQgTE9DQUwKKwlMRUFESU5HIExFQUtQUk9P RiBMRUFTVCBMRUZUIExFVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCiAJTE9D QUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExPQ0tfUCBMT0NLRUQgTE9HR0VECiAKIAlN QVBQSU5HIE1BVENIIE1BVEVSSUFMSVpFRCBNQVhWQUxVRSBNRVRIT0QgTUlOVVRFX1AgTUlOVkFM VUUgTU9ERSBNT05USF9QIE1PVkUKQEAgLTY4Nyw4ICs2OTEsOCBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCVVOQk9VTkRFRCBVTkNPTU1JVFRFRCBVTkVOQ1JZUFRFRCBVTklPTiBVTklRVUUg VU5LTk9XTiBVTkxJU1RFTiBVTkxPR0dFRAogCVVOVElMIFVQREFURSBVU0VSIFVTSU5HCiAKLQlW QUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFS SUFESUMgVkFSWUlORwotCVZFUkJPU0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKKwlW QUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURBVE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFS SUFCTEUgVkFSSUFCTEVTCisJVkFSSUFESUMgVkFSWUlORyBWRVJCT1NFIFZFUlNJT05fUCBWSUVX IFZJRVdTIFZPTEFUSUxFCiAKIAlXSEVOIFdIRVJFIFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBX SVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJVEUKIApAQCAtODc4LDYgKzg4Miw3IEBAIHN0 bXQgOgogCQkJfCBDcmVhdGVQb2xpY3lTdG10CiAJCQl8IENyZWF0ZVBMYW5nU3RtdAogCQkJfCBD cmVhdGVTY2hlbWFTdG10CisJCQl8IENyZWF0ZVNjaGVtYVZhclN0bXQKIAkJCXwgQ3JlYXRlU2Vx U3RtdAogCQkJfCBDcmVhdGVTdG10CiAJCQl8IENyZWF0ZVN1YnNjcmlwdGlvblN0bXQKQEAgLTkx Nyw2ICs5MjIsNyBAQCBzdG10IDoKIAkJCXwgSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQKIAkJCXwg SW5kZXhTdG10CiAJCQl8IEluc2VydFN0bXQKKwkJCXwgTGV0U3RtdAogCQkJfCBMaXN0ZW5TdG10 CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBMb2FkU3RtdApAQCAtMTgwOCw3ICsxODE0 LDEyIEBAIERpc2NhcmRTdG10OgogCQkJCQluLT50YXJnZXQgPSBESVNDQVJEX1NFUVVFTkNFUzsK IAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQorCQkJfCBESVNDQVJEIFZBUklBQkxFUwor CQkJCXsKKwkJCQkJRGlzY2FyZFN0bXQgKm4gPSBtYWtlTm9kZShEaXNjYXJkU3RtdCk7CisJCQkJ CW4tPnRhcmdldCA9IERJU0NBUkRfVkFSSUFCTEVTOworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQogCQk7CiAKIApAQCAtNDQ3OSw2ICs0NDkwLDQ5IEBAIGNyZWF0ZV9leHRlbnNpb25fb3B0 X2l0ZW06CiAJCQkJfQogCQk7CiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqCQlRVUVS WSA6CisgKgkJCQlDUkVBVEUgVkFSSUFCTEUgdmFybmFtZSBbQVNdIHR5cGUKKyAqCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKK0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQlDUkVBVEUgT3B0VGVt cCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZSBvcHRfYXMgVHlwZW5hbWUgb3B0X2NvbGxhdGVfY2xh dXNlIG9wdFNjaGVtYVZhckRlZkV4cHIgT25FT1hBY3Rpb25PcHRpb24KKwkJCQl7CisJCQkJCUNy ZWF0ZVNjaGVtYVZhclN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVTY2hlbWFWYXJTdG10KTsKKwkJ CQkJJDQtPnJlbHBlcnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPnZhcmlhYmxlID0gJDQ7CisJCQkJ CW4tPnR5cGVOYW1lID0gJDY7CisJCQkJCW4tPmNvbGxDbGF1c2UgPSAkNzsKKwkJCQkJbi0+ZGVm ZXhwciA9ICQ4OworCQkJCQluLT5lb3hhY3Rpb24gPSAkOTsKKwkJCQkJbi0+aWZfbm90X2V4aXN0 cyA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDUkVBVEUgT3B0 VGVtcCBWQVJJQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25hbWUgb3B0X2FzIFR5cGVu YW1lIG9wdF9jb2xsYXRlX2NsYXVzZSBvcHRTY2hlbWFWYXJEZWZFeHByIE9uRU9YQWN0aW9uT3B0 aW9uCisJCQkJeworCQkJCQlDcmVhdGVTY2hlbWFWYXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRl U2NoZW1hVmFyU3RtdCk7CisJCQkJCSQ3LT5yZWxwZXJzaXN0ZW5jZSA9ICQyOworCQkJCQluLT52 YXJpYWJsZSA9ICQ3OworCQkJCQluLT50eXBlTmFtZSA9ICQ5OworCQkJCQluLT5jb2xsQ2xhdXNl ID0gJDEwOworCQkJCQluLT5kZWZleHByID0gJDExOworCQkJCQluLT5lb3hhY3Rpb24gPSAkMTI7 CisJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopIG47CisJ CQkJfQorCQk7CisKK29wdFNjaGVtYVZhckRlZkV4cHI6IERFRkFVTFQgYl9leHByCQkJCQkJCXsg JCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLwkJCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsK KworT25FT1hBY3Rpb25PcHRpb246ICBPTiBUUkFOU0FDVElPTiBFTkRfUCBEUk9QCQl7ICQkID0g VkFSSUFCTEVfRU9YX0RST1A7IH0KKwkJCXwgT04gVFJBTlNBQ1RJT04gRU5EX1AgUkVTRVQJCQl7 ICQkID0gVkFSSUFCTEVfRU9YX1JFU0VUOyB9CisJCQl8IE9OIFJPTExCQUNLIFJFU0VUCQkJCQl7 ICQkID0gVkFSSUFCTEVfRU9YX1JPTExCQUNLX1JFU0VUOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJ CQl7ICQkID0gVkFSSUFCTEVfRU9YX05PT1A7IH0KKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAg KgogICogQUxURVIgRVhURU5TSU9OIG5hbWUgVVBEQVRFIFsgVE8gdmVyc2lvbiBdCkBAIC02MzQw LDYgKzYzOTQsNyBAQCBkcm9wX3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElD VElPTkFSWQkJCQl7ICQkID0gT0JKRUNUX1RTRElDVElPTkFSWTsgfQogCQkJfCBURVhUX1AgU0VB UkNIIFRFTVBMQVRFCQkJCXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQogCQkJfCBURVhUX1Ag U0VBUkNIIENPTkZJR1VSQVRJT04JCQl7ICQkID0gT0JKRUNUX1RTQ09ORklHVVJBVElPTjsgfQor CQkJfCBWQVJJQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9WQVJJQUJMRTsgfQogCQk7CiAKIC8q IG9iamVjdCB0eXBlcyB0YWtpbmcgbmFtZV9saXN0ICovCkBAIC02NjA5LDYgKzY2NjQsNyBAQCBj b21tZW50X3R5cGVfYW55X25hbWU6CiAJCQl8IFRFWFRfUCBTRUFSQ0ggRElDVElPTkFSWQkJCXsg JCQgPSBPQkpFQ1RfVFNESUNUSU9OQVJZOyB9CiAJCQl8IFRFWFRfUCBTRUFSQ0ggUEFSU0VSCQkJ CXsgJCQgPSBPQkpFQ1RfVFNQQVJTRVI7IH0KIAkJCXwgVEVYVF9QIFNFQVJDSCBURU1QTEFURQkJ CXsgJCQgPSBPQkpFQ1RfVFNURU1QTEFURTsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0g T0JKRUNUX1ZBUklBQkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICov CkBAIC02NzQ3LDYgKzY4MDMsNyBAQCBzZWN1cml0eV9sYWJlbF90eXBlX2FueV9uYW1lOgogCQkJ fCBUQUJMRQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9UQUJMRTsgfQogCQkJfCBWSUVXCQkJCQkJCQl7 ICQkID0gT0JKRUNUX1ZJRVc7IH0KIAkJCXwgTUFURVJJQUxJWkVEIFZJRVcJCQkJCXsgJCQgPSBP QkpFQ1RfTUFUVklFVzsgfQorCQkJfCBWQVJJQUJMRQkJCQkJCQl7ICQkID0gT0JKRUNUX1ZBUklB QkxFOyB9CiAJCTsKIAogLyogb2JqZWN0IHR5cGVzIHRha2luZyBuYW1lICovCkBAIC03MTY4LDYg KzcyMjUsMTQgQEAgcHJpdmlsZWdlX3RhcmdldDoKIAkJCQkJbi0+b2JqcyA9ICQyOwogCQkJCQkk JCA9IG47CiAJCQkJfQorCQkJfCBWQVJJQUJMRSBxdWFsaWZpZWRfbmFtZV9saXN0CisJCQkJewor CQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQgKikgcGFsbG9jKHNpemVvZihQcml2VGFy Z2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9i anR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9ianMgPSAkMjsKKwkJCQkJJCQgPSBu OworCQkJCX0KIAkJCXwgQUxMIFRBQkxFUyBJTl9QIFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7CiAJ CQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRhcmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJn ZXQpKTsKQEAgLTcyMDgsNiArNzI3MywxNCBAQCBwcml2aWxlZ2VfdGFyZ2V0OgogCQkJCQluLT5v YmpzID0gJDU7CiAJCQkJCSQkID0gbjsKIAkJCQl9CisJCQl8IEFMTCBWQVJJQUJMRVMgSU5fUCBT Q0hFTUEgbmFtZV9saXN0CisJCQkJeworCQkJCQlQcml2VGFyZ2V0ICpuID0gKFByaXZUYXJnZXQg KikgcGFsbG9jKHNpemVvZihQcml2VGFyZ2V0KSk7CisJCQkJCW4tPnRhcmd0eXBlID0gQUNMX1RB UkdFVF9BTExfSU5fU0NIRU1BOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1ZBUklBQkxFOwor CQkJCQluLT5vYmpzID0gJDU7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJCTsKIAogCkBAIC03MzY4 LDYgKzc0NDEsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoKIAkJCXwgU0VRVUVOQ0VTCQl7 ICQkID0gT0JKRUNUX1NFUVVFTkNFOyB9CiAJCQl8IFRZUEVTX1AJCXsgJCQgPSBPQkpFQ1RfVFlQ RTsgfQogCQkJfCBTQ0hFTUFTCQl7ICQkID0gT0JKRUNUX1NDSEVNQTsgfQorCQkJfCBWQVJJQUJM RVMJCXsgJCQgPSBPQkpFQ1RfVkFSSUFCTEU7IH0KIAkJOwogCiAKQEAgLTg5NjQsNiArOTAzOCwy NSBAQCBSZW5hbWVTdG10OiBBTFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMg UkVOQU1FIFRPIG5hbWUKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChO b2RlICopbjsKIAkJCQl9CisJCQl8IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFJFTkFNRSBUTyBu YW1lCisJCQkJeworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisJ CQkJCW4tPnJlbmFtZVR5cGUgPSBPQkpFQ1RfVkFSSUFCTEU7CisJCQkJCW4tPm9iamVjdCA9IChO b2RlICopICQzOworCQkJCQluLT5uZXduYW1lID0gJDY7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBm YWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBBTFRFUiBWQVJJQUJMRSBJ Rl9QIEVYSVNUUyBhbnlfbmFtZSBSRU5BTUUgVE8gbmFtZQorCQkJCXsKKwkJCQkJUmVuYW1lU3Rt dCAqbiA9IG1ha2VOb2RlKFJlbmFtZVN0bXQpOworCQkJCQluLT5yZW5hbWVUeXBlID0gT0JKRUNU X1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNTsKKwkJCQkJbi0+bmV3bmFt ZSA9ICQ4OworCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47 CisJCQkJfQorCiAJCTsKIAogb3B0X2NvbHVtbjogQ09MVU1OCQkJCQkJCQkJeyAkJCA9IENPTFVN TjsgfQpAQCAtOTI4Miw2ICs5Mzc1LDI1IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJ bi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9CisJCQl8 IEFMVEVSIFZBUklBQkxFIGFueV9uYW1lIFNFVCBTQ0hFTUEgbmFtZQorCQkJCXsKKwkJCQkJQWx0 ZXJPYmplY3RTY2hlbWFTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmplY3RTY2hlbWFTdG10KTsK KwkJCQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJCQkJbi0+b2JqZWN0ID0g KE5vZGUgKikgJDM7CisJCQkJCW4tPm5ld3NjaGVtYSA9ICQ2OworCQkJCQluLT5taXNzaW5nX29r ID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxURVIgVkFSSUFC TEUgSUZfUCBFWElTVFMgYW55X25hbWUgU0VUIFNDSEVNQSBuYW1lCisJCQkJeworCQkJCQlBbHRl ck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRlck9iamVjdFNjaGVtYVN0bXQpOwor CQkJCQluLT5vYmplY3RUeXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAo Tm9kZSAqKSAkNTsKKwkJCQkJbi0+bmV3c2NoZW1hID0gJDg7CisJCQkJCW4tPm1pc3Npbmdfb2sg PSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisKIAkJOwogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKQEAgLTk1MTcsNiArOTYyOSwxNCBAQCBBbHRlck93bmVyU3RtdDogQUxURVIg QUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9XTkVSIFRPIFJvbGVTcGVjCiAJCQkJ CW4tPm5ld293bmVyID0gJDY7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KKwkJCXwgQUxU RVIgVkFSSUFCTEUgYW55X25hbWUgT1dORVIgVE8gUm9sZVNwZWMKKwkJCQl7CisJCQkJCUFsdGVy T3duZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPd25lclN0bXQpOworCQkJCQluLT5vYmplY3RU eXBlID0gT0JKRUNUX1ZBUklBQkxFOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkMzsKKwkJ CQkJbi0+bmV3b3duZXIgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQk7CiAK IApAQCAtMTA2OTgsNiArMTA4MTgsNyBAQCBFeHBsYWluYWJsZVN0bXQ6CiAJCQl8IENyZWF0ZU1h dFZpZXdTdG10CiAJCQl8IFJlZnJlc2hNYXRWaWV3U3RtdAogCQkJfCBFeGVjdXRlU3RtdAkJCQkJ LyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCisJCQl8IExldFN0bXQKIAkJOwogCiBleHBs YWluX29wdGlvbl9saXN0OgpAQCAtMTA3NTUsNiArMTA4NzYsNyBAQCBQcmVwYXJhYmxlU3RtdDoK IAkJCXwgSW5zZXJ0U3RtdAogCQkJfCBVcGRhdGVTdG10CiAJCQl8IERlbGV0ZVN0bXQJCQkJCS8q IGJ5IGRlZmF1bHQgYWxsIGFyZSAkJD0kMSAqLworCQkJfCBMZXRTdG10CiAJCTsKIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCkBAIC0xMTE1Myw2ICsxMTI3NSw0NCBAQCBvcHRfaG9sZDogLyogRU1Q VFkgKi8JCQkJCQl7ICQkID0gMDsgfQogCQkJfCBXSVRIT1VUIEhPTEQJCQkJCXsgJCQgPSAwOyB9 CiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJTEVU IFNUQVRFTUVOVFMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitMZXRTdG10OglMRVQgbGV0 X3RhcmdldCAnPScgYV9leHByCisJCQkJeworCQkJCQlMZXRTdG10ICpuID0gbWFrZU5vZGUoTGV0 U3RtdCk7CisJCQkJCVNlbGVjdFN0bXQgKnNlbGVjdCA9IG1ha2VOb2RlKFNlbGVjdFN0bXQpOwor CQkJCQlSZXNUYXJnZXQJKnJlcyA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisKKwkJCQkJbi0+dGFy Z2V0ID0gJDI7CisKKwkJCQkJLyogQ3JlYXRlIHRhcmdldCBsaXN0IGZvciBpbXBsaWNpdCBxdWVy eSAqLworCQkJCQlyZXMtPm5hbWUgPSBOVUxMOworCQkJCQlyZXMtPmluZGlyZWN0aW9uID0gTklM OworCQkJCQlyZXMtPnZhbCA9IChOb2RlICopICQ0OworCQkJCQlyZXMtPmxvY2F0aW9uID0gQDQ7 CisKKwkJCQkJc2VsZWN0LT50YXJnZXRMaXN0ID0gbGlzdF9tYWtlMShyZXMpOworCQkJCQluLT5z ZWxlY3RTdG10ID0gKE5vZGUgKikgc2VsZWN0OworCisJCQkJCW4tPmxvY2F0aW9uID0gQDI7CisK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitsZXRfdGFyZ2V0OgorCQkJQ29s SWQgb3B0X2luZGlyZWN0aW9uCisJCQkJeworCQkJCQkkJCA9IGxpc3RfbWFrZTEobWFrZVN0cmlu ZygkMSkpOworCQkJCQlpZiAoJDIpCisJCQkJCQkgICQkID0gbGlzdF9jb25jYXQoJCQsCisJCQkJ CQkJCQkJICAgY2hlY2tfaW5kaXJlY3Rpb24oJDIsIHl5c2Nhbm5lcikpOworCQkJCX0KKwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAgKgogICoJCVFVRVJZOgpAQCAtMTUxMzIsNiArMTUyOTIsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IExBUkdFX1AKIAkJCXwgTEFTVF9QCiAJCQl8IExF QUtQUk9PRgorCQkJfCBMRVQKIAkJCXwgTEVWRUwKIAkJCXwgTElTVEVOCiAJCQl8IExPQUQKQEAg LTE1MjgwLDYgKzE1NDQxLDggQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBWQUxJREFURQog CQkJfCBWQUxJREFUT1IKIAkJCXwgVkFMVUVfUAorCQkJfCBWQVJJQUJMRQorCQkJfCBWQVJJQUJM RVMKIAkJCXwgVkFSWUlORwogCQkJfCBWRVJTSU9OX1AKIAkJCXwgVklFVwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jCmluZGV4IDYxNzI3ZTFkNzEuLjY4MjM2MTJmYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdn LmMKQEAgLTM0OSw2ICszNDksNyBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJCUFzc2VydChmYWxzZSk7CQkvKiBjYW4n dCBoYXBwZW4gKi8KIAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9PVEhFUjoKKwkJY2FzZSBF WFBSX0tJTkRfTEVUOgogCiAJCQkvKgogCQkJICogQWNjZXB0IGFnZ3JlZ2F0ZS9ncm91cGluZyBo ZXJlOyBjYWxsZXIgbXVzdCB0aHJvdyBlcnJvciBpZgpAQCAtNDY1LDYgKzQ2Niw3IEBAIGNoZWNr X2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHBy KQogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NPTFVNTl9ERUZBVUxUOgogCQljYXNlIEVY UFJfS0lORF9GVU5DVElPTl9ERUZBVUxUOgorCQljYXNlIEVYUFJfS0lORF9WQVJJQUJMRV9ERUZB VUxUOgogCiAJCQlpZiAoaXNBZ2cpCiAJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBh cmUgbm90IGFsbG93ZWQgaW4gREVGQVVMVCBleHByZXNzaW9ucyIpOwpAQCAtODc5LDYgKzg4MSw3 IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVu YyAqd2Z1bmMsCiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJ CWNhc2UgRVhQUl9LSU5EX0ZVTkNUSU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklB QkxFX0RFRkFVTFQ6CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBERUZBVUxUIGV4cHJlc3Npb25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRf SU5ERVhfRVhQUkVTU0lPTjoKQEAgLTkwMiw2ICs5MDUsOCBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5j Q2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJf S0lORF9DQUxMX0FSR1VNRU5UOgogCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gQ0FMTCBhcmd1bWVudHMiKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lO RF9MRVQ6CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBM RVQgc3RhdGVtZW50Iik7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5v IGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmlu ZGV4IDM4NWU1NGE5YjYuLmNjNjE0YjM5MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAt MTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg Im5vZGVzL21ha2VmdW5jcy5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2Rh dGUuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3ht bC5oIgogCiAKQEAgLTExNiw2ICsxMTgsOSBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtWG1sU2Vy aWFsaXplKFBhcnNlU3RhdGUgKnBzdGF0ZSwgWG1sU2VyaWFsaXplICp4cyk7CiBzdGF0aWMgTm9k ZSAqdHJhbnNmb3JtQm9vbGVhblRlc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBCb29sZWFuVGVzdCAq Yik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ3VycmVudE9mRXhwcihQYXJzZVN0YXRlICpwc3Rh dGUsIEN1cnJlbnRPZkV4cHIgKmNleHByKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Db2x1bW5S ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpOworc3RhdGljIE5vZGUgKm1h a2VQYXJhbVNjaGVtYVZhcmlhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCSAgT2lkIHZh cmlkLCBPaWQgdHlwaWQsIGludDMyIHR5cG1vZCwgT2lkIGNvbGxpZCwKKwkJCQkJCSAgY2hhciAq YXR0cm5hbWUsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hvbGVSb3dS ZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRibEVudHJ5ICpydGUsCiAJCQkJCSBpbnQgbG9j YXRpb24pOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQV9JbmRpcmVjdGlvbiAqaW5kKTsKQEAgLTUxMiw2ICs1MTcsMTAgQEAgdHJhbnNmb3Jt Q29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCWNoYXIJICAg Km5zcG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKnJlbG5hbWUgPSBOVUxMOwogCWNoYXIJICAgKmNv bG5hbWUgPSBOVUxMOworCU9pZAkJCXZhcmlkID0gSW52YWxpZE9pZDsKKwljaGFyCSAgICphdHRy bmFtZSA9IE5VTEw7CisJYm9vbAkJbm90X3VuaXF1ZTsKKwogCVJhbmdlVGJsRW50cnkgKnJ0ZTsK IAlpbnQJCQlsZXZlbHNfdXA7CiAJZW51bQpAQCAtNzQ5LDYgKzc1OCwxNSBAQCB0cmFuc2Zvcm1D b2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQlicmVhazsK IAl9CiAKKwl2YXJpZCA9IGlkZW50aWZ5X3ZhcmlhYmxlKGNyZWYtPmZpZWxkcywgJmF0dHJuYW1l LCAmbm90X3VuaXF1ZSk7CisKKwlpZiAobm90X3VuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0FNQklHVU9VU19QQVJBTUVURVIpLAorCQkJCSBlcnJtc2coInNj aGVtYSB2YXJpYWJsZSByZWZlcmVuY2UgXCIlc1wiIGlzIGFtYmlndW91cyIsCisJCQkJCQlOYW1l TGlzdFRvU3RyaW5nKGNyZWYtPmZpZWxkcykpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwogCS8qCiAJICogTm93IGdpdmUgdGhlIFBvc3RQYXJz ZUNvbHVtblJlZkhvb2ssIGlmIGFueSwgYSBjaGFuY2UuICBXZSBwYXNzIHRoZQogCSAqIHRyYW5z bGF0aW9uLXNvLWZhciBzbyB0aGF0IGl0IGNhbiB0aHJvdyBhbiBlcnJvciBpZiBpdCB3aXNoZXMg aW4gdGhlCkBAIC03NzMsNiArNzkxLDcyIEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRl ICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGNyZWYtPmxvY2F0aW9uKSkpOwogCX0KIAorCWlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwl7 CisJCU9pZAkJdHlwaWQ7CisJCWludDMyCXR5cG1vZDsKKwkJT2lkCQljb2xsaWQ7CisKKwkJZ2V0 X3NjaGVtYV92YXJpYWJsZV90eXBlX3R5cG1vZF9jb2xsaWQodmFyaWQsICZ0eXBpZCwgJnR5cG1v ZCwgJmNvbGxpZCk7CisKKwkJaWYgKG5vZGUgIT0gTlVMTCkKKwkJeworCQkJLyoKKwkJCSAqIHNv bWUgY29sbGlzaW9uIGNhbiBiZSBzb2x2ZWQgc2ltcGx5IGhlcmUgdG8gcmVkdWNlIGVycm9ycwor CQkJICogYmFzZWQgb24gc2ltcGx5IGV4aXN0ZW5jZSBvZiBzb21lIHZhcmlhYmxlcy4gT2Z0ZW4g ZXJyb3IKKwkJCSAqIGNhbiBiZSB1c2luZyBhbGlhcyBzYW1lIGxpa2UgdmFyaWFibGUgbmFtZS4g SW4gdGhpcyBjYXNlLAorCQkJICogd2hlbiB3ZSBmb3VuZCBjb2x1bW4gcmVmZXJlbmNlLCBhbmQg d2UgZm91bmQgcmVmZXJlbmNlIHRvCisJCQkgKiBwb3NzaWJsZSBjb21wb3NpdGUgdmFyaWFibGUs IGJ1dCB0aGUgdmFyaWFibGUgaXMgbm90IGNvbXBvc2l0ZSwKKwkJCSAqIHRoZW4gd2UgY2FuIGln bm9yZSB0aGUgdmFyaWFibGUgYXMgc2ltcGx5IGltcHJvcGVyLCBhbmQgd2UKKwkJCSAqIHVzZSBj b2x1bW4gcmVmZXJlbmNlIG9ubHkuCisJCQkgKi8KKwkJCWlmIChhdHRybmFtZSkKKwkJCXsKKwkJ CQlpZiAodHlwZV9pc19yb3d0eXBlKHR5cGlkKSkKKwkJCQl7CisJCQkJCVR1cGxlRGVzYwkJdHVw ZGVzYzsKKwkJCQkJYm9vbAkJCWZvdW5kID0gZmFsc2U7CisJCQkJCWludAkJCWk7CisKKwkJCQkJ Lyogc2xvdyBwYXJ0LCBJIGhvcGUgaXQgd2lsbCBub3QgYmUgdG8gb2Z0ZW4gKi8KKwkJCQkJdHVw ZGVzYyA9IGxvb2t1cF9yb3d0eXBlX3R1cGRlc2ModHlwaWQsIHR5cG1vZCk7CisJCQkJCWZvciAo aSA9IDA7IGkgPCB0dXBkZXNjLT5uYXR0czsgaSsrKQorCQkJCQl7CisJCQkJCQlpZiAobmFtZXN0 cmNtcCgmKFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSktPmF0dG5hbWUpLCBhdHRybmFtZSkgPT0g MCAmJgorCQkJCQkJCQkhVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKS0+YXR0aXNkcm9wcGVkKQor CQkJCQkJeworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJ CQkJfQorCisJCQkJCUZyZWVUdXBsZURlc2ModHVwZGVzYyk7CisKKwkJCQkJLyogdGhlcmUgYXJl IG5vdCBjb21wb3NpdGUgdmFyaWFibGUgd2l0aCB0aGlzIGZpZWxkICovCisJCQkJCWlmICghZm91 bmQpCisJCQkJCQl2YXJpZCA9IEludmFsaWRPaWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJLyog dGhlcmUgYXJlIG5vdCBjb21wb3NpdGUgdmFyaWFibGUgd2l0aCB0aGlzIG5hbWUgKi8KKwkJCQkJ dmFyaWQgPSBJbnZhbGlkT2lkOworCQkJfQorCisJCQkvKiBSYWlzZSBlcnJvciBpZiB2YXJpZCBp cyBzdGlsbCB2YWxpZC4gSXQgc2hvdWxkIGJlIHJlYWxseSBhbWlnb251b3VzICovCisJCQlpZiAo T2lkSXNWYWxpZCh2YXJpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfQU1CSUdVT1VTX0NPTFVNTiksCisJCQkJCQkgZXJybXNnKCJjb2x1bW4gcmVmZXJlbmNl IFwiJXNcIiBpcyBhbWJpZ3VvdXMiLAorCQkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGNyZWYtPmZp ZWxkcykpLAorCQkJCQkJIGVycmRldGFpbCgiVGhlIHF1YWxpZmllZCBpZGVudGlmaWVyIGNhbiBi ZSBjb2x1bW4gcmVmZXJlbmNlIG9yIHNjaGVtYSB2YXJpYWJsZSByZWZlcmVuY2UiKSwKKwkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwkJfQorCisJ CWlmIChPaWRJc1ZhbGlkKHZhcmlkKSkKKwkJCW5vZGUgPSBtYWtlUGFyYW1TY2hlbWFWYXJpYWJs ZShwc3RhdGUsCisJCQkJCQkJCQkJCXZhcmlkLCB0eXBpZCwgdHlwbW9kLCBjb2xsaWQsCisJCQkJ CQkJCQkJCWF0dHJuYW1lLCBjcmVmLT5sb2NhdGlvbik7CisJfQorCiAJLyoKIAkgKiBUaHJvdyBl cnJvciBpZiBubyB0cmFuc2xhdGlvbiBmb3VuZC4KIAkgKi8KQEAgLTgwNyw2ICs4OTEsNjAgQEAg dHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmKQog CXJldHVybiBub2RlOwogfQogCisvKgorICogR2VuZXJhdGUgcGFyYW0gdmFyaWFibGUgZm9yIHJl ZmVyZW5jZSB0byBzY2hlbWEgdmFyaWFibGUKKyAqLworc3RhdGljIE5vZGUgKgorbWFrZVBhcmFt U2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBPaWQgdmFyaWQsIE9pZCB0eXBpZCwg aW50MzIgdHlwbW9kLCBPaWQgY29sbGlkLCBjaGFyICphdHRybmFtZSwgaW50IGxvY2F0aW9uKQor eworCVBhcmFtCSAgICpwYXJhbTsKKworCXBhcmFtID0gbWFrZU5vZGUoUGFyYW0pOworCisJcGFy YW0tPnBhcmFta2luZCA9IFBBUkFNX1ZBUklBQkxFOworCXBhcmFtLT5wYXJhbWlkID0gdmFyaWQ7 CisJcGFyYW0tPnBhcmFtdHlwZSA9IHR5cGlkOworCXBhcmFtLT5wYXJhbXR5cG1vZCA9IHR5cG1v ZDsKKwlwYXJhbS0+cGFyYW1jb2xsaWQgPSBjb2xsaWQ7CisKKwlpZiAoYXR0cm5hbWUgIT0gTlVM TCkKKwl7CisJCVR1cGxlRGVzYwkJdHVwZGVzYzsKKwkJaW50CQlpOworCisJCXR1cGRlc2MgPSBs b29rdXBfcm93dHlwZV90dXBkZXNjKHR5cGlkLCB0eXBtb2QpOworCisJCWZvciAoaSA9IDA7IGkg PCB0dXBkZXNjLT5uYXR0czsgaSsrKQorCQl7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBU dXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpOworCisJCQlpZiAoc3RyY21wKGF0dHJuYW1lLCBOYW1l U3RyKGF0dC0+YXR0bmFtZSkpID09IDAgJiYKKwkJCQkhYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQl7 CisJCQkJLyogU3VjY2Vzcywgc28gZ2VuZXJhdGUgYSBGaWVsZFNlbGVjdCBleHByZXNzaW9uICov CisJCQkJRmllbGRTZWxlY3QgKmZzZWxlY3QgPSBtYWtlTm9kZShGaWVsZFNlbGVjdCk7CisKKwkJ CQlmc2VsZWN0LT5hcmcgPSAoRXhwciAqKSBwYXJhbTsKKwkJCQlmc2VsZWN0LT5maWVsZG51bSA9 IGkgKyAxOworCQkJCWZzZWxlY3QtPnJlc3VsdHR5cGUgPSBhdHQtPmF0dHR5cGlkOworCQkJCWZz ZWxlY3QtPnJlc3VsdHR5cG1vZCA9IGF0dC0+YXR0dHlwbW9kOworCQkJCS8qIHNhdmUgYXR0cmli dXRlJ3MgY29sbGF0aW9uIGZvciBwYXJzZV9jb2xsYXRlLmMgKi8KKwkJCQlmc2VsZWN0LT5yZXN1 bHRjb2xsaWQgPSBhdHQtPmF0dGNvbGxhdGlvbjsKKworCQkJCVJlbGVhc2VUdXBsZURlc2ModHVw ZGVzYyk7CisJCQkJcmV0dXJuIChOb2RlICopIGZzZWxlY3Q7CisJCQl9CisJCX0KKworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJ IGVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGNvbHVtbiBcIiVzXCIgaW4gdmFyaWFibGUiLCBh dHRybmFtZSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOwor CX0KKworCXJldHVybiAoTm9kZSAqKSBwYXJhbTsKK30KKwogc3RhdGljIE5vZGUgKgogdHJhbnNm b3JtUGFyYW1SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJhbVJlZiAqcHJlZikKIHsKQEAgLTE4 MTgsNiArMTk1Niw3IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJM aW5rICpzdWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9SRVRVUk5JTkc6CiAJCWNhc2UgRVhQUl9L SU5EX1ZBTFVFUzoKIAkJY2FzZSBFWFBSX0tJTkRfVkFMVUVTX1NJTkdMRToKKwkJY2FzZSBFWFBS X0tJTkRfTEVUOgogCQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAJCWNhc2UgRVhQUl9LSU5EX0NI RUNLX0NPTlNUUkFJTlQ6CkBAIC0xODI2LDYgKzE5NjUsNyBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBh cnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJCWJyZWFrOwogCQljYXNlIEVY UFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBSX0tJTkRfRlVOQ1RJT05fREVGQVVM VDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVMVDoKIAkJCWVyciA9IF8oImNhbm5v dCB1c2Ugc3VicXVlcnkgaW4gREVGQVVMVCBleHByZXNzaW9uIik7CiAJCQlicmVhazsKIAkJY2Fz ZSBFWFBSX0tJTkRfSU5ERVhfRVhQUkVTU0lPTjoKQEAgLTM0NjAsNiArMzYwMCw3IEBAIFBhcnNl RXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1cm4gIkNIRUNLIjsK IAkJY2FzZSBFWFBSX0tJTkRfQ09MVU1OX0RFRkFVTFQ6CiAJCWNhc2UgRVhQUl9LSU5EX0ZVTkNU SU9OX0RFRkFVTFQ6CisJCWNhc2UgRVhQUl9LSU5EX1ZBUklBQkxFX0RFRkFVTFQ6CiAJCQlyZXR1 cm4gIkRFRkFVTFQiOwogCQljYXNlIEVYUFJfS0lORF9JTkRFWF9FWFBSRVNTSU9OOgogCQkJcmV0 dXJuICJpbmRleCBleHByZXNzaW9uIjsKQEAgLTM0NzUsNiArMzYxNiw4IEBAIFBhcnNlRXhwcktp bmROYW1lKFBhcnNlRXhwcktpbmQgZXhwcktpbmQpCiAJCQlyZXR1cm4gIlBBUlRJVElPTiBCWSI7 CiAJCWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQlyZXR1cm4gIkNBTEwiOworCQlj YXNlIEVYUFJfS0lORF9MRVQ6CisJCQlyZXR1cm4gIkxFVCI7CiAKIAkJCS8qCiAJCQkgKiBUaGVy ZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IDQ0MjU3MTU0YjguLmIyYzk5MDBlMDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjM0Nyw2ICsyMzQ3LDcgQEAgY2hlY2tfc3JmX2NhbGxfcGxh Y2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikK IAkJCWJyZWFrOwogCQljYXNlIEVYUFJfS0lORF9DT0xVTU5fREVGQVVMVDoKIAkJY2FzZSBFWFBS X0tJTkRfRlVOQ1RJT05fREVGQVVMVDoKKwkJY2FzZSBFWFBSX0tJTkRfVkFSSUFCTEVfREVGQVVM VDoKIAkJCWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBp biBERUZBVUxUIGV4cHJlc3Npb25zIik7CiAJCQlicmVhazsKIAkJY2FzZSBFWFBSX0tJTkRfSU5E RVhfRVhQUkVTU0lPTjoKQEAgLTIzNzAsNiArMjM3MSw5IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNl bWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJ CWNhc2UgRVhQUl9LSU5EX0NBTExfQVJHVU1FTlQ6CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5n IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FMTCBhcmd1bWVudHMiKTsKIAkJCWJyZWFr OworCQljYXNlIEVYUFJfS0lORF9MRVQ6CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gQ0FMTCBhcmd1bWVudHMiKTsKKwkJCWJyZWFrOwogCiAJ CQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUs IHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0 LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggNDkzMmU1ODAyMi4u YzYwZmUwMTFmNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtMzUsMTYgKzM1LDYg QEAKIAogc3RhdGljIHZvaWQgbWFya1RhcmdldExpc3RPcmlnaW4oUGFyc2VTdGF0ZSAqcHN0YXRl LCBUYXJnZXRFbnRyeSAqdGxlLAogCQkJCQkgVmFyICp2YXIsIGludCBsZXZlbHN1cCk7Ci1zdGF0 aWMgTm9kZSAqdHJhbnNmb3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKLQkJCQkJCQkgICBOb2RlICpiYXNlbm9kZSwKLQkJCQkJCQkgICBjb25zdCBjaGFyICp0YXJn ZXROYW1lLAotCQkJCQkJCSAgIGJvb2wgdGFyZ2V0SXNBcnJheSwKLQkJCQkJCQkgICBPaWQgdGFy Z2V0VHlwZUlkLAotCQkJCQkJCSAgIGludDMyIHRhcmdldFR5cE1vZCwKLQkJCQkJCQkgICBPaWQg dGFyZ2V0Q29sbGF0aW9uLAotCQkJCQkJCSAgIExpc3RDZWxsICppbmRpcmVjdGlvbiwKLQkJCQkJ CQkgICBOb2RlICpyaHMsCi0JCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Bc3NpZ25tZW50U3Vic2NyaXB0cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJ ICBOb2RlICpiYXNlbm9kZSwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnRhcmdldE5hbWUsCkBAIC02 NzIsNyArNjYyLDcgQEAgdXBkYXRlVGFyZ2V0TGlzdEVudHJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwK ICAqIG1pZ2h0IHdhbnQgdG8gZGVjb3JhdGUgaW5kaXJlY3Rpb24gY2VsbHMgd2l0aCB0aGVpciBv d24gbG9jYXRpb24gaW5mbywKICAqIGluIHdoaWNoIGNhc2UgdGhlIGxvY2F0aW9uIGFyZ3VtZW50 IGNvdWxkIHByb2JhYmx5IGJlIGRyb3BwZWQuKQogICovCi1zdGF0aWMgTm9kZSAqCitOb2RlICoK IHRyYW5zZm9ybUFzc2lnbm1lbnRJbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ CQkJICAgTm9kZSAqYmFzZW5vZGUsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqdGFyZ2V0TmFtZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCBkODMwNTY5NjQxLi5jMjdhZWNl ZGI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zMzU5LDcgKzMzNTks NyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMp CiAJICogZ2V0IGV4ZWN1dGVkLiAgQWxzbywgdXRpbGl0aWVzIGFyZW4ndCByZXdyaXR0ZW4gYXQg YWxsIChkbyB3ZSBzdGlsbAogCSAqIG5lZWQgdGhhdCBjaGVjaz8pCiAJICovCi0JaWYgKGV2ZW50 ICE9IENNRF9TRUxFQ1QgJiYgZXZlbnQgIT0gQ01EX1VUSUxJVFkpCisJaWYgKGV2ZW50ICE9IENN RF9TRUxFQ1QgJiYgZXZlbnQgIT0gQ01EX1VUSUxJVFkgJiYgZXZlbnQgIT0gQ01EX1BMQU5fVVRJ TElUWSkKIAl7CiAJCWludAkJCXJlc3VsdF9yZWxhdGlvbjsKIAkJUmFuZ2VUYmxFbnRyeSAqcnRf ZW50cnk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jvd3NlY3VyaXR5LmMKaW5kZXggNjFlZjM5NmQ4YS4uNmEwNjhh Zjc5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yb3dzZWN1cml0eS5jCisrKyBi L3NyYy9iYWNrZW5kL3Jld3JpdGUvcm93c2VjdXJpdHkuYwpAQCAtMjEyLDcgKzIxMiw3IEBAIGdl dF9yb3dfc2VjdXJpdHlfcG9saWNpZXMoUXVlcnkgKnJvb3QsIFJhbmdlVGJsRW50cnkgKnJ0ZSwg aW50IHJ0X2luZGV4LAogCX0KIAogCS8qCi0JICogRm9yIFNFTEVDVCwgVVBEQVRFIGFuZCBERUxF VEUsIGFkZCBzZWN1cml0eSBxdWFscyB0byBlbmZvcmNlIHRoZSBVU0lORworCSAqIEZvciBTRUxF Q1QsIExFVCwgVVBEQVRFIGFuZCBERUxFVEUsIGFkZCBzZWN1cml0eSBxdWFscyB0byBlbmZvcmNl IHRoZSBVU0lORwogCSAqIHBvbGljaWVzLiAgVGhlc2Ugc2VjdXJpdHkgcXVhbHMgY29udHJvbCBh Y2Nlc3MgdG8gZXhpc3RpbmcgdGFibGUgcm93cy4KIAkgKiBSZXN0cmljdGl2ZSBwb2xpY2llcyBh cmUgY29tYmluZWQgdG9nZXRoZXIgdXNpbmcgQU5ELCBhbmQgcGVybWlzc2l2ZQogCSAqIHBvbGlj aWVzIGFyZSBjb21iaW5lZCB0b2dldGhlciB1c2luZyBPUi4KQEAgLTIyMiw2ICsyMjIsNyBAQCBn ZXRfcm93X3NlY3VyaXR5X3BvbGljaWVzKFF1ZXJ5ICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUs IGludCBydF9pbmRleCwKIAkJCQkJCQkgICZyZXN0cmljdGl2ZV9wb2xpY2llcyk7CiAKIAlpZiAo Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCB8fAorCQljb21tYW5kVHlwZSA9PSBDTURfUExBTl9V VElMSVRZIHx8CiAJCWNvbW1hbmRUeXBlID09IENNRF9VUERBVEUgfHwKIAkJY29tbWFuZFR5cGUg PT0gQ01EX0RFTEVURSkKIAkJYWRkX3NlY3VyaXR5X3F1YWxzKHJ0X2luZGV4LApAQCAtNDIzLDYg KzQyNCw3IEBAIGdldF9wb2xpY2llc19mb3JfcmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIENt ZFR5cGUgY21kLCBPaWQgdXNlcl9pZCwKIAkJCXN3aXRjaCAoY21kKQogCQkJewogCQkJCWNhc2Ug Q01EX1NFTEVDVDoKKwkJCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAJCQkJCWlmIChwb2xpY3kt PnBvbGNtZCA9PSBBQ0xfU0VMRUNUX0NIUikKIAkJCQkJCWNtZF9tYXRjaGVzID0gdHJ1ZTsKIAkJ CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL2Rlc3QuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvZGVzdC5jCmluZGV4IGM5NWE0ZDUxOWQuLjQ3ZmIwZjM4YjEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvZGVzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvZGVzdC5jCkBA IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZnVuY3Rpb25zLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvdHF1ZXVlLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIu aCIKKyNpbmNsdWRlICJleGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oIgogI2luY2x1ZGUgImxp YnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJ1dGls cy9wb3J0YWwuaCIKQEAgLTE0Myw2ICsxNDQsOSBAQCBDcmVhdGVEZXN0UmVjZWl2ZXIoQ29tbWFu ZERlc3QgZGVzdCkKIAogCQljYXNlIERlc3RUdXBsZVF1ZXVlOgogCQkJcmV0dXJuIENyZWF0ZVR1 cGxlUXVldWVEZXN0UmVjZWl2ZXIoTlVMTCk7CisKKwkJY2FzZSBEZXN0VmFyaWFibGU6CisJCQly ZXR1cm4gQ3JlYXRlVmFyaWFibGVEZXN0UmVjZWl2ZXIoKTsKIAl9CiAKIAkvKiBzaG91bGQgbmV2 ZXIgZ2V0IGhlcmUgKi8KQEAgLTE3OCw2ICsxODIsNyBAQCBFbmRDb21tYW5kKGNvbnN0IGNoYXIg KmNvbW1hbmRUYWcsIENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNRTEZ1bmN0aW9uOgog CQljYXNlIERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CisJCWNhc2Ug RGVzdFZhcmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpAQCAtMjIyLDYgKzIyNyw3IEBAIE51bGxD b21tYW5kKENvbW1hbmREZXN0IGRlc3QpCiAJCWNhc2UgRGVzdFNRTEZ1bmN0aW9uOgogCQljYXNl IERlc3RUcmFuc2llbnRSZWw6CiAJCWNhc2UgRGVzdFR1cGxlUXVldWU6CisJCWNhc2UgRGVzdFZh cmlhYmxlOgogCQkJYnJlYWs7CiAJfQogfQpAQCAtMjY4LDYgKzI3NCw3IEBAIFJlYWR5Rm9yUXVl cnkoQ29tbWFuZERlc3QgZGVzdCkKIAkJY2FzZSBEZXN0U1FMRnVuY3Rpb246CiAJCWNhc2UgRGVz dFRyYW5zaWVudFJlbDoKIAkJY2FzZSBEZXN0VHVwbGVRdWV1ZToKKwkJY2FzZSBEZXN0VmFyaWFi bGU6CiAJCQlicmVhazsKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IGI1ODA0ZjY0YWQuLjM1MTk5 ZmQwZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY29tbWFu ZHMvcHJvY2xhbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zY2hlbWFjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvc2NoZW1h dmFyaWFibGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o IgpAQCAtMzQ0LDcgKzM0NSw3IEBAIFByb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwK IAkJCSAgIGNoYXIgKmNvbXBsZXRpb25UYWcpCiB7CiAJQXNzZXJ0KElzQShwc3RtdCwgUGxhbm5l ZFN0bXQpKTsKLQlBc3NlcnQocHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKTsKKwlB c3NlcnQocHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZIHx8IHBzdG10LT5jb21tYW5k VHlwZSA9PSBDTURfUExBTl9VVElMSVRZKTsKIAlBc3NlcnQocXVlcnlTdHJpbmcgIT0gTlVMTCk7 CS8qIHJlcXVpcmVkIGFzIG9mIDguNCAqLwogCiAJLyoKQEAgLTkxNSw2ICs5MTYsMTQgQEAgc3Rh bmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCWJyZWFrOwogCQkJ fQogCisJCWNhc2UgVF9MZXRTdG10OgorCQkJeworCQkJCWRvTGV0U3RtdChwc3RtdCwgcGFyYW1z LCBxdWVyeUVudiwgcXVlcnlTdHJpbmcpOworCQkJCWlmIChjb21wbGV0aW9uVGFnKQorCQkJCQlz dHJjcHkoY29tcGxldGlvblRhZywgIkxFVCIpOworCQkJfQorCQkJYnJlYWs7CisKIAkJZGVmYXVs dDoKIAkJCS8qIEFsbCBvdGhlciBzdGF0ZW1lbnQgdHlwZXMgaGF2ZSBldmVudCB0cmlnZ2VyIHN1 cHBvcnQgKi8KIAkJCVByb2Nlc3NVdGlsaXR5U2xvdyhwc3RhdGUsIHBzdG10LCBxdWVyeVN0cmlu ZywKQEAgLTEyMjEsNiArMTIzMCwxMCBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCX0KIAkJCQlicmVhazsKIAorCQkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0 bXQ6CisJCQkJYWRkcmVzcyA9IERlZmluZVNjaGVtYVZhcmlhYmxlKHBzdGF0ZSwgKENyZWF0ZVNj aGVtYVZhclN0bXQgKikgcGFyc2V0cmVlKTsKKwkJCQlicmVhazsKKwogCQkJCS8qCiAJCQkJICog KioqKioqKioqKioqKiBvYmplY3QgY3JlYXRpb24gLyBkZXN0cnVjdGlvbiAqKioqKioqKioqKioq KgogCQkJCSAqLwpAQCAtMjA1NSw2ICsyMDY4LDkgQEAgQWx0ZXJPYmplY3RUeXBlQ29tbWFuZFRh ZyhPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19FWFQ6CiAJCQl0 YWcgPSAiQUxURVIgU1RBVElTVElDUyI7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfVkFSSUFC TEU6CisJCQl0YWcgPSAiQUxURVIgVkFSSUFCTEUiOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQl0YWcgPSAiPz8/IjsKIAkJCWJyZWFrOwpAQCAtMjEwNCw2ICsyMTIwLDEwIEBAIENyZWF0ZUNv bW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gIlNFTEVDVCI7CiAJCQlicmVhazsK IAorCQljYXNlIFRfTGV0U3RtdDoKKwkJCXRhZyA9ICJMRVQiOworCQkJYnJlYWs7CisKIAkJCS8q IHV0aWxpdHkgc3RhdGVtZW50cyAtLS0gc2FtZSB3aGV0aGVyIHJhdyBvciBjb29rZWQgKi8KIAkJ Y2FzZSBUX1RyYW5zYWN0aW9uU3RtdDoKIAkJCXsKQEAgLTIzNTgsNiArMjM3OCw5IEBAIENyZWF0 ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19F WFQ6CiAJCQkJCXRhZyA9ICJEUk9QIFNUQVRJU1RJQ1MiOwogCQkJCQlicmVhazsKKwkJCQljYXNl IE9CSkVDVF9WQVJJQUJMRToKKwkJCQkJdGFnID0gIkRST1AgVkFSSUFCTEUiOworCQkJCQlicmVh azsKIAkJCQlkZWZhdWx0OgogCQkJCQl0YWcgPSAiPz8/IjsKIAkJCX0KQEAgLTI2MzksNiArMjY2 Miw5IEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJCWNhc2UgRElTQ0FS RF9TRVFVRU5DRVM6CiAJCQkJCXRhZyA9ICJESVNDQVJEIFNFUVVFTkNFUyI7CiAJCQkJCWJyZWFr OworCQkJCWNhc2UgRElTQ0FSRF9WQVJJQUJMRVM6CisJCQkJCXRhZyA9ICJESVNDQVJEIFZBUklB QkxFUyI7CisJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCXRhZyA9ICI/Pz8iOwogCQkJ fQpAQCAtMjg0NCw2ICsyODcwLDcgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUp CiAJCQkJCQl0YWcgPSAiREVMRVRFIjsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIENNRF9VVElM SVRZOgorCQkJCQljYXNlIENNRF9QTEFOX1VUSUxJVFk6CiAJCQkJCQl0YWcgPSBDcmVhdGVDb21t YW5kVGFnKHN0bXQtPnV0aWxpdHlTdG10KTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgpA QCAtMjkxNSw2ICsyOTQyLDEwIEBAIENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQog CQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0NyZWF0ZVNjaGVtYVZhclN0bXQ6CisJCQl0YWcg PSAiQ1JFQVRFIFZBUklBQkxFIjsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKFdB Uk5JTkcsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG5vZGVUYWco cGFyc2V0cmVlKSk7CkBAIC0yOTYxLDYgKzI5OTIsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVsKE5v ZGUgKnBhcnNldHJlZSkKIAkJCQlsZXYgPSBMT0dTVE1UX0FMTDsKIAkJCWJyZWFrOwogCisJCWNh c2UgVF9MZXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQkJLyog dXRpbGl0eSBzdGF0ZW1lbnRzIC0tLSBzYW1lIHdoZXRoZXIgcmF3IG9yIGNvb2tlZCAqLwogCQlj YXNlIFRfVHJhbnNhY3Rpb25TdG10OgogCQkJbGV2ID0gTE9HU1RNVF9BTEw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNs LmMKaW5kZXggYTQ1ZTA5M2RlNy4uOTUyYzBkOTYyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2FjbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwpAQCAtMzE1 LDYgKzMxNSwxMiBAQCBhY2xwYXJzZShjb25zdCBjaGFyICpzLCBBY2xJdGVtICphaXApCiAJCQlj YXNlIEFDTF9DT05ORUNUX0NIUjoKIAkJCQlyZWFkID0gQUNMX0NPTk5FQ1Q7CiAJCQkJYnJlYWs7 CisJCQljYXNlIEFDTF9SRUFEX0NIUjoKKwkJCQlyZWFkID0gQUNMX1JFQUQ7CisJCQkJYnJlYWs7 CisJCQljYXNlIEFDTF9XUklURV9DSFI6CisJCQkJcmVhZCA9IEFDTF9XUklURTsKKwkJCQlicmVh azsKIAkJCWNhc2UgJ1InOgkJCS8qIGlnbm9yZSBvbGQgUlVMRSBwcml2aWxlZ2VzICovCiAJCQkJ cmVhZCA9IDA7CiAJCQkJYnJlYWs7CkBAIC04MDgsNiArODE0LDEwIEBAIGFjbGRlZmF1bHQoT2Jq ZWN0VHlwZSBvYmp0eXBlLCBPaWQgb3duZXJJZCkKIAkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfVVNB R0U7CiAJCQlvd25lcl9kZWZhdWx0ID0gQUNMX0FMTF9SSUdIVFNfVFlQRTsKIAkJCWJyZWFrOwor CQljYXNlIE9CSkVDVF9WQVJJQUJMRToKKwkJCXdvcmxkX2RlZmF1bHQgPSBBQ0xfTk9fUklHSFRT OworCQkJb3duZXJfZGVmYXVsdCA9IEFDTF9BTExfUklHSFRTX1ZBUklBQkxFOworCQkJYnJlYWs7 CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9ianR5cGU6ICVkIiwg KGludCkgb2JqdHlwZSk7CiAJCQl3b3JsZF9kZWZhdWx0ID0gQUNMX05PX1JJR0hUUzsJLyoga2Vl cCBjb21waWxlciBxdWlldCAqLwpAQCAtOTAzLDYgKzkxMyw5IEBAIGFjbGRlZmF1bHRfc3FsKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgJ1QnOgogCQkJb2JqdHlwZSA9IE9CSkVDVF9UWVBFOwog CQkJYnJlYWs7CisJCWNhc2UgJ1YnOgorCQkJb2JqdHlwZSA9IE9CSkVDVF9WQVJJQUJMRTsKKwkJ CWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmp0eXBl IGFiYnJldmlhdGlvbjogJWMiLCBvYmp0eXBlYyk7CiAJfQpAQCAtMTYyNyw2ICsxNjQwLDEwIEBA IGNvbnZlcnRfcHJpdl9zdHJpbmcodGV4dCAqcHJpdl90eXBlX3RleHQpCiAJCXJldHVybiBBQ0xf Q09OTkVDVDsKIAlpZiAocGdfc3RyY2FzZWNtcChwcml2X3R5cGUsICJSVUxFIikgPT0gMCkKIAkJ cmV0dXJuIDA7CQkJCS8qIGlnbm9yZSBvbGQgUlVMRSBwcml2aWxlZ2VzICovCisJaWYgKHBnX3N0 cmNhc2VjbXAocHJpdl90eXBlLCAiUkVBRCIpID09IDApCisJCXJldHVybiBBQ0xfUkVBRDsKKwlp ZiAocGdfc3RyY2FzZWNtcChwcml2X3R5cGUsICJXUklURSIpID09IDApCisJCXJldHVybiBBQ0xf V1JJVEU7CiAKIAllcmVwb3J0KEVSUk9SLAogCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCkBAIC0xNzIxLDYgKzE3MzgsMTAgQEAgY29udmVydF9hY2xyaWdodF90 b19zdHJpbmcoaW50IGFjbHJpZ2h0KQogCQkJcmV0dXJuICJURU1QT1JBUlkiOwogCQljYXNlIEFD TF9DT05ORUNUOgogCQkJcmV0dXJuICJDT05ORUNUIjsKKwkJY2FzZSBBQ0xfUkVBRDoKKwkJCXJl dHVybiAiUkVBRCI7CisJCWNhc2UgQUNMX1dSSVRFOgorCQkJcmV0dXJuICJXUklURSI7CiAJCWRl ZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFjbHJpZ2h0OiAlZCIsIGFjbHJp Z2h0KTsKIAkJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDVj Y2UzZjEyNDIuLjdjZGI0MDk1MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM4 LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1v bi9rZXl3b3Jkcy5oIgpAQCAtNzM5NSw2ICs3Mzk2LDE0IEBAIGdldF9wYXJhbWV0ZXIoUGFyYW0g KnBhcmFtLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCXJldHVybjsKIAl9CiAKKwkvKiB0 cmFuc2xhdGUgcGFyYW1pZCB0byBvcmlnaW5hbCBzY2hlbWEgdmFyaWFibGUgbmFtZSAqLworCWlm IChwYXJhbS0+cGFyYW1raW5kID09IFBBUkFNX1ZBUklBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5n SW5mbyhjb250ZXh0LT5idWYsICIlcyIsCisJCQkJCQkJc2NoZW1hX3ZhcmlhYmxlX2dldF9uYW1l KHBhcmFtLT5wYXJhbWlkKSk7CisJCXJldHVybjsKKwl9CisKIAkvKgogCSAqIE5vdCBQQVJBTV9F WEVDLCBvciBjb3VsZG4ndCBmaW5kIHJlZmVyZW50OiBqdXN0IHByaW50ICROLgogCSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBiYmE1OTVhZDFkLi44NThhNmRkNGJlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMTY5MSw2ICsxNjkxLDE4IEBAIGdl dF9yZWxuYW1lX3JlbGlkKGNvbnN0IGNoYXIgKnJlbG5hbWUsIE9pZCByZWxuYW1lc3BhY2UpCiAJ CQkJCQkgICBPYmplY3RJZEdldERhdHVtKHJlbG5hbWVzcGFjZSkpOwogfQogCisvKgorICogZ2V0 X3Zhcm5hbWVfdmFyaWQKKyAqCQlHaXZlbiBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgdmFyaWFibGUs IGxvb2sgdXAgdGhlIE9JRC4KKyAqLworT2lkCitnZXRfdmFybmFtZV92YXJpZChjb25zdCBjaGFy ICp2YXJuYW1lLCBPaWQgdmFybmFtZXNwYWNlKQoreworCXJldHVybiBHZXRTeXNDYWNoZU9pZDIo VkFSSUFCTEVOQU1FTlNQLAorCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHZhcm5hbWUpLAorCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bSh2YXJuYW1lc3BhY2UpKTsKK30KKwogI2lmZGVmIE5PVF9V U0VECiAvKgogICogZ2V0X3JlbG5hdHRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYwppbmRl eCAyYjM4MTc4MmEzLi4zNWRjMzJmNjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMK QEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21h cHBpbmcuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9z eXNjYWNoZS5oIgpAQCAtOTY4LDYgKzk2OSwyOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hl ZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJCTAKIAkJfSwKIAkJMgorCX0sCisJe1ZhcmlhYmxlUmVs YXRpb25JZCwJCQkvKiBWQVJJQUJMRU5BTUVOU1AgKi8KKwkJVmFyaWFibGVOYW1lTnNwSW5kZXhJ ZCwKKwkJMiwKKwkJeworCQkJQW51bV9wZ192YXJpYWJsZV92YXJuYW1lLAorCQkJQW51bV9wZ192 YXJpYWJsZV92YXJuYW1lc3BhY2UsCisJCQkwLAorCQkJMAorCQl9LAorCQk4CisJfSwKKwl7VmFy aWFibGVSZWxhdGlvbklkLAkJCS8qIFZBUklBQkxFT0lEICovCisJCVZhcmlhYmxlT2JqZWN0SW5k ZXhJZCwKKwkJMSwKKwkJeworCQkJT2JqZWN0SWRBdHRyaWJ1dGVOdW1iZXIsCisJCQkwLAorCQkJ MCwKKwkJCTAKKwkJfSwKKwkJOAogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9jb21tb24uYyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwppbmRleCA5YjU4NjlhZGQ4Li5j NGU0ZDEwYzZhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL2NvbW1vbi5jCkBAIC0yOTYsNiArMjk2LDEwIEBAIGdldFNjaGVtYURhdGEo QXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXNQdHIpCiAJCXdyaXRlX21zZyhOVUxMLCAicmVh ZGluZyBzdWJzY3JpcHRpb25zXG4iKTsKIAlnZXRTdWJzY3JpcHRpb25zKGZvdXQpOwogCisJaWYg KGdfdmVyYm9zZSkKKwkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHZhcmlhYmxlc1xuIik7CisJ Z2V0VmFyaWFibGVzKGZvdXQpOworCiAJKm51bVRhYmxlc1B0ciA9IG51bVRhYmxlczsKIAlyZXR1 cm4gdGJsaW5mbzsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCAzNmUz MzgzYjg1Li41OGQxNWFmN2IxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBA IC0zNDY1LDYgKzM0NjUsNyBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVm LCBUb2NFbnRyeSAqdGUsIEFyY2hpdmVIYW5kbGUgKkFIKQogCQlzdHJjbXAodHlwZSwgIlRFWFQg U0VBUkNIIERJQ1RJT05BUlkiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiVEVYVCBTRUFSQ0gg Q09ORklHVVJBVElPTiIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJTVEFUSVNUSUNTIikgPT0g MCB8fAorCQlzdHJjbXAodHlwZSwgIlZBUklBQkxFIikgPT0gMCB8fAogCS8qIG5vbi1zY2hlbWEt c3BlY2lmaWVkIG9iamVjdHMgKi8KIAkJc3RyY21wKHR5cGUsICJEQVRBQkFTRSIpID09IDAgfHwK IAkJc3RyY21wKHR5cGUsICJQUk9DRURVUkFMIExBTkdVQUdFIikgPT0gMCB8fApAQCAtMzY2NCw3 ICszNjY1LDggQEAgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSwgYm9vbCBpc0RhdGEpCiAJCQlzdHJjbXAodGUtPmRlc2MsICJTRVJWRVIiKSA9PSAwIHx8CiAJ CQlzdHJjbXAodGUtPmRlc2MsICJTVEFUSVNUSUNTIikgPT0gMCB8fAogCQkJc3RyY21wKHRlLT5k ZXNjLCAiUFVCTElDQVRJT04iKSA9PSAwIHx8Ci0JCQlzdHJjbXAodGUtPmRlc2MsICJTVUJTQ1JJ UFRJT04iKSA9PSAwKQorCQkJc3RyY21wKHRlLT5kZXNjLCAiU1VCU0NSSVBUSU9OIikgPT0gMCB8 fAorCQkJc3RyY21wKHRlLT5kZXNjLCAiVkFSSUFCTEUiKSA9PSAwKQogCQl7CiAJCQlQUUV4cEJ1 ZmZlciB0ZW1wID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZjBlYTgz ZTZhOS4uZGQ1ZjM4ZTMyNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGlj IHZvaWQgZHVtcFBvbGljeShBcmNoaXZlICpmb3V0LCBQb2xpY3lJbmZvICpwb2xpbmZvKTsKIHN0 YXRpYyB2b2lkIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBQdWJsaWNhdGlvbkluZm8g KnB1YmluZm8pOwogc3RhdGljIHZvaWQgZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91 dCwgUHVibGljYXRpb25SZWxJbmZvICpwdWJyaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wU3Vic2Ny aXB0aW9uKEFyY2hpdmUgKmZvdXQsIFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pOworc3RhdGlj IHZvaWQgZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQsIFZhcmlhYmxlSW5mbyAqdmFyaW5mbyk7 CiBzdGF0aWMgdm9pZCBkdW1wRGF0YWJhc2UoQXJjaGl2ZSAqQUgpOwogc3RhdGljIHZvaWQgZHVt cERhdGFiYXNlQ29uZmlnKEFyY2hpdmUgKkFILCBQUUV4cEJ1ZmZlciBvdXRidWYsCiAJCQkJICAg Y29uc3QgY2hhciAqZGJuYW1lLCBPaWQgZGJvaWQpOwpAQCAtNDIyNCw2ICs0MjI1LDIyMiBAQCBk dW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8p CiAJZnJlZShxc3VibmFtZSk7CiB9CiAKKy8qCisgKiBnZXRWYXJpYWJsZXMKKyAqCSAgZ2V0IGlu Zm9ybWF0aW9uIGFib3V0IHZhcmlhYmxlcworICovCit2b2lkCitnZXRWYXJpYWJsZXMoQXJjaGl2 ZSAqZm91dCkKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisJUFFFeHBCdWZm ZXIgcXVlcnk7CisJUFFFeHBCdWZmZXIgYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIo KTsKKwlQUUV4cEJ1ZmZlciByYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQ UUV4cEJ1ZmZlciBpbml0X2FjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJUFFF eHBCdWZmZXIgaW5pdF9yYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlQR3Jl c3VsdCAgICpyZXM7CisJVmFyaWFibGVJbmZvICp2YXJpbmZvOworCWludAkJCWlfdGFibGVvaWQ7 CisJaW50CQkJaV9vaWQ7CisJaW50CQkJaV92YXJuYW1lOworCWludAkJCWlfdmFybmFtZXNwYWNl OworCWludAkJCWlfdmFydHlwZTsKKwlpbnQJCQlpX3ZhcnR5cG5hbWU7CisJaW50CQkJaV92YXJk ZWZleHByOworCWludAkJCWlfcm9sbmFtZTsKKwlpbnQJCQlpX3ZhcmFjbDsKKwlpbnQJCQlpX3J2 YXJhY2w7CisJaW50CQkJaV9pbml0dmFyYWNsOworCWludAkJCWlfaW5pdHJ2YXJhY2w7CisJaW50 CQkJaV92YXJlb3hhY3Rpb247CisJaW50CQkJaSwKKwkJCQludHVwczsKKworCWlmIChmb3V0LT5y ZW1vdGVWZXJzaW9uIDw9IDExMDAwMCkKKwkJcmV0dXJuOworCisJYWNsX3N1YnF1ZXJ5ID0gY3Jl YXRlUFFFeHBCdWZmZXIoKTsKKwlyYWNsX3N1YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK Kwlpbml0X2FjbF9zdWJxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisJaW5pdF9yYWNsX3N1 YnF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCWJ1aWxkQUNMUXVlcmllcyhhY2xfc3Vi cXVlcnksIHJhY2xfc3VicXVlcnksIGluaXRfYWNsX3N1YnF1ZXJ5LAorCQkJCQlpbml0X3JhY2xf c3VicXVlcnksICJ2LnZhcmFjbCIsICJ2LnZhcm93bmVyIiwgIidWJyIsCisJCQkJCWRvcHQtPmJp bmFyeV91cGdyYWRlKTsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXJlc2V0 UFFFeHBCdWZmZXIocXVlcnkpOworCisJLyogR2V0IHRoZSB2YXJpYWJsZXMgaW4gY3VycmVudCBk YXRhYmFzZS4gKi8KKwlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAgIlNFTEVDVCB2 LnRhYmxlb2lkLCB2Lm9pZCwgdi52YXJuYW1lLCAiCisJCQkJCQkgICJ2LnZhcmVveGFjdGlvbiwg IgorCQkJCQkJICAidi52YXJuYW1lc3BhY2UsICIKKwkJCQkJCSAgIiglcyB2YXJvd25lcikgQVMg cm9sbmFtZSwgIgorCQkJCQkJICAiJXMgYXMgdmFyYWNsLCAiCisJCQkJCQkgICIlcyBhcyBydmFy YWNsLCAiCisJCQkJCQkgICIlcyBhcyBpbml0dmFyYWNsLCAiCisJCQkJCQkgICIlcyBhcyBpbml0 cnZhcmFjbCwgIgorCQkJCQkJICAidi52YXJ0eXBlLCAiCisJCQkJCQkgICJwZ19jYXRhbG9nLmZv cm1hdF90eXBlKHYudmFydHlwZSwgdi52YXJ0eXBtb2QpIGFzIHZhcnR5cG5hbWUsICIKKwkJCQkJ CSAgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIodi52YXJkZWZleHByLDApIGFzIHZhcmRlZmV4cHIg IgorCQkJCQkJICAiRlJPTSBwZ192YXJpYWJsZSB2ICIKKwkJCQkJCSAgIkxFRlQgSk9JTiBwZ19p bml0X3ByaXZzIHBpcCAiCisJCQkJCQkgICJPTiAodi5vaWQgPSBwaXAub2Jqb2lkICIKKwkJCQkJ CSAgIkFORCBwaXAuY2xhc3NvaWQgPSAncGdfdmFyaWFibGUnOjpyZWdjbGFzcyAiCisJCQkJCQkg ICJBTkQgcGlwLm9ianN1YmlkID0gMCkiLAorCQkJCQkJICB1c2VybmFtZV9zdWJxdWVyeSwKKwkJ CQkJCSAgYWNsX3N1YnF1ZXJ5LT5kYXRhLAorCQkJCQkJICByYWNsX3N1YnF1ZXJ5LT5kYXRhLAor CQkJCQkJICBpbml0X2FjbF9zdWJxdWVyeS0+ZGF0YSwKKwkJCQkJCSAgaW5pdF9yYWNsX3N1YnF1 ZXJ5LT5kYXRhKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihhY2xfc3VicXVlcnkpOworCWRlc3Ry b3lQUUV4cEJ1ZmZlcihyYWNsX3N1YnF1ZXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIoaW5pdF9h Y2xfc3VicXVlcnkpOworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihpbml0X3JhY2xfc3VicXVlcnkpOwor CisJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNf T0spOworCisJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKKworCWlfdGFibGVvaWQgPSBQUWZudW1i ZXIocmVzLCAidGFibGVvaWQiKTsKKwlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKKwlp X3Zhcm5hbWUgPSBQUWZudW1iZXIocmVzLCAidmFybmFtZSIpOworCWlfdmFybmFtZXNwYWNlID0g UFFmbnVtYmVyKHJlcywgInZhcm5hbWVzcGFjZSIpOworCWlfcm9sbmFtZSA9IFBRZm51bWJlcihy ZXMsICJyb2xuYW1lIik7CisJaV92YXJ0eXBlID0gUFFmbnVtYmVyKHJlcywgInZhcnR5cGUiKTsK KwlpX3ZhcnR5cG5hbWUgPSBQUWZudW1iZXIocmVzLCAidmFydHlwbmFtZSIpOworCWlfdmFyZW94 YWN0aW9uID0gUFFmbnVtYmVyKHJlcywgInZhcmVveGFjdGlvbiIpOworCWlfdmFyZGVmZXhwciA9 IFBRZm51bWJlcihyZXMsICJ2YXJkZWZleHByIik7CisJaV92YXJhY2wgPSBQUWZudW1iZXIocmVz LCAidmFyYWNsIik7CisJaV9ydmFyYWNsID0gUFFmbnVtYmVyKHJlcywgInJ2YXJhY2wiKTsKKwlp X2luaXR2YXJhY2wgPSBQUWZudW1iZXIocmVzLCAiaW5pdHZhcmFjbCIpOworCWlfaW5pdHJ2YXJh Y2wgPSBQUWZudW1iZXIocmVzLCAiaW5pdHJ2YXJhY2wiKTsKKworCXZhcmluZm8gPSBwZ19tYWxs b2MobnR1cHMgKiBzaXplb2YoVmFyaWFibGVJbmZvKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnR1 cHM7IGkrKykKKwl7CisJCVR5cGVJbmZvCSAgICp2dHlwZTsKKworCQl2YXJpbmZvW2ldLmRvYmou b2JqVHlwZSA9IERPX1ZBUklBQkxFOworCQl2YXJpbmZvW2ldLmRvYmouY2F0SWQudGFibGVvaWQg PQorCQkJYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3RhYmxlb2lkKSk7CisJCXZhcmluZm9b aV0uZG9iai5jYXRJZC5vaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfb2lkKSk7CisJ CUFzc2lnbkR1bXBJZCgmdmFyaW5mb1tpXS5kb2JqKTsKKwkJdmFyaW5mb1tpXS5kb2JqLm5hbWUg PSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFybmFtZSkpOworCQl2YXJpbmZvW2ld LmRvYmoubmFtZXNwYWNlID0KKwkJCWZpbmROYW1lc3BhY2UoZm91dCwKKwkJCQkJCSAgYXRvb2lk KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3Zhcm5hbWVzcGFjZSkpKTsKKworCQl2YXJpbmZvW2ldLnJv bG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcm9sbmFtZSkpOworCQl2YXJp bmZvW2ldLnZhcnR5cGUgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlfdmFydHlwZSkpOwor CQl2YXJpbmZvW2ldLnZhcnR5cG5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf dmFydHlwbmFtZSkpOworCisJCXZhcmluZm9baV0udmFyZW94YWN0aW9uID0gcGdfc3RyZHVwKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3ZhcmVveGFjdGlvbikpOworCisJCXZhcmluZm9baV0udmFyYWNs ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3ZhcmFjbCkpOworCQl2YXJpbmZvW2ld LnJ2YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcnZhcmFjbCkpOworCQl2 YXJpbmZvW2ldLmluaXR2YXJhY2wgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfaW5p dHZhcmFjbCkpOworCQl2YXJpbmZvW2ldLmluaXRydmFyYWNsID0gcGdfc3RyZHVwKFBRZ2V0dmFs dWUocmVzLCBpLCBpX2luaXRydmFyYWNsKSk7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2Fu dCB0byBkdW1wIGl0ICovCisJCXNlbGVjdER1bXBhYmxlT2JqZWN0KCYodmFyaW5mb1tpXS5kb2Jq KSwgZm91dCk7CisKKwkJLyogRG8gbm90IHRyeSB0byBkdW1wIEFDTCBpZiBubyBBQ0wgZXhpc3Rz LiAqLworCQlpZiAoUFFnZXRpc251bGwocmVzLCBpLCBpX3ZhcmFjbCkgJiYgUFFnZXRpc251bGwo cmVzLCBpLCBpX3J2YXJhY2wpICYmCisJCQlQUWdldGlzbnVsbChyZXMsIGksIGlfaW5pdHZhcmFj bCkgJiYKKwkJCVBRZ2V0aXNudWxsKHJlcywgaSwgaV9pbml0cnZhcmFjbCkpCisJCQl2YXJpbmZv W2ldLmRvYmouZHVtcCAmPSB+RFVNUF9DT01QT05FTlRfQUNMOworCisJCWlmIChQUWdldGlzbnVs bChyZXMsIGksIGlfdmFyZGVmZXhwcikpCisJCQl2YXJpbmZvW2ldLnZhcmRlZmV4cHIgPSBOVUxM OworCQllbHNlCisJCQl2YXJpbmZvW2ldLnZhcmRlZmV4cHIgPSBwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfdmFyZGVmZXhwcikpOworCisJCWlmIChzdHJsZW4odmFyaW5mb1tpXS5yb2xu YW1lKSA9PSAwKQorCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBvd25lciBvZiB2YXJpYWJs ZSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQkJCQkgIHZhcmluZm9baV0uZG9i ai5uYW1lKTsKKworCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KKwkJ c2VsZWN0RHVtcGFibGVPYmplY3QoJih2YXJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKworCQl2dHlw ZSA9IGZpbmRUeXBlQnlPaWQodmFyaW5mb1tpXS52YXJ0eXBlKTsKKwkJYWRkT2JqZWN0RGVwZW5k ZW5jeSgmdmFyaW5mb1tpXS5kb2JqLCB2dHlwZS0+ZG9iai5kdW1wSWQpOworCX0KKwlQUWNsZWFy KHJlcyk7CisKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCisvKgorICogZHVtcFZh cmlhYmxlCisgKgkgIGR1bXAgdGhlIGRlZmluaXRpb24gb2YgdGhlIGdpdmVuIHZhcmlhYmxlcwor ICovCitzdGF0aWMgdm9pZAorZHVtcFZhcmlhYmxlKEFyY2hpdmUgKmZvdXQsIFZhcmlhYmxlSW5m byAqdmFyaW5mbykKK3sKKwlEdW1wT3B0aW9ucyAqZG9wdCA9IGZvdXQtPmRvcHQ7CisKKwlQUUV4 cEJ1ZmZlciBkZWxxOworCVBRRXhwQnVmZmVyIHF1ZXJ5OworCWNvbnN0IGNoYXIJICAgKnZhcm5h bWU7CisJY29uc3QgY2hhcgkgICAqdmFydHlwbmFtZTsKKwljb25zdCBjaGFyCSAgICp2YXJkZWZl eHByOworCWNvbnN0IGNoYXIJICAgKnZhcmVveGFjdGlvbjsKKworCS8qIFNraXAgaWYgbm90IHRv IGJlIGR1bXBlZCAqLworCWlmICghdmFyaW5mby0+ZG9iai5kdW1wIHx8IGRvcHQtPmRhdGFPbmx5 KQorCQlyZXR1cm47CisKKwlkZWxxID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlxdWVyeSA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwl2YXJuYW1lID0gZm10UXVhbGlmaWVkRHVtcGFibGUodmFy aW5mbyk7CisJdmFydHlwbmFtZSA9IHZhcmluZm8tPnZhcnR5cG5hbWU7CisJdmFyZGVmZXhwciA9 IHZhcmluZm8tPnZhcmRlZmV4cHI7CisJdmFyZW94YWN0aW9uID0gdmFyaW5mby0+dmFyZW94YWN0 aW9uOworCisJYXBwZW5kUFFFeHBCdWZmZXIoZGVscSwgIkRST1AgVkFSSUFCTEUgJXM7XG4iLAor CQkJCQkgIHZhcm5hbWUpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgVkFS SUFCTEUgJXMgQVMgJXMiLAorCQkJCQkgIHZhcm5hbWUsIHZhcnR5cG5hbWUpOworCisJaWYgKHZh cmRlZmV4cHIpCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIERFRkFVTFQgJXMiLAorCQkJ CQkJICB2YXJkZWZleHByKTsKKworCWlmIChzdHJjbXAodmFyZW94YWN0aW9uLCAiZCIpID09IDAp CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiIE9OIFRSQU5TQUNUSU9OIEVORCBEUk9QIik7 CisJZWxzZSBpZiAoc3RyY21wKHZhcmVveGFjdGlvbiwgInIiKSA9PSAwKQorCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIiBPTiBUUkFOU0FDVElPTiBFTkQgUkVTRVQiKTsKKwlpZiAoc3RyY21w KHZhcmVveGFjdGlvbiwgIlIiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiBP TiBST0xMQkFDSyBSRVNFVCIpOworCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICI7XG4iKTsK KworCUFyY2hpdmVFbnRyeShmb3V0LCB2YXJpbmZvLT5kb2JqLmNhdElkLCB2YXJpbmZvLT5kb2Jq LmR1bXBJZCwKKwkJCQkgdmFyaW5mby0+ZG9iai5uYW1lLAorCQkJCSBOVUxMLAorCQkJCSBOVUxM LAorCQkJCSB2YXJpbmZvLT5yb2xuYW1lLCBmYWxzZSwKKwkJCQkgIlZBUklBQkxFIiwgU0VDVElP Tl9QUkVfREFUQSwKKwkJCQkgcXVlcnktPmRhdGEsIGRlbHEtPmRhdGEsIE5VTEwsCisJCQkJIE5V TEwsIDAsCisJCQkJIE5VTEwsIE5VTEwpOworCisJaWYgKHZhcmluZm8tPmRvYmouZHVtcCAmIERV TVBfQ09NUE9ORU5UX0NPTU1FTlQpCisJCWR1bXBDb21tZW50KGZvdXQsICJWQVJJQUJMRSIsIHZh cm5hbWUsCisJCQkJCU5VTEwsIHZhcmluZm8tPnJvbG5hbWUsCisJCQkJCXZhcmluZm8tPmRvYmou Y2F0SWQsIDAsIHZhcmluZm8tPmRvYmouZHVtcElkKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihk ZWxxKTsKKwlkZXN0cm95UFFFeHBCdWZmZXIocXVlcnkpOworfQorCiBzdGF0aWMgdm9pZAogYmlu YXJ5X3VwZ3JhZGVfc2V0X3R5cGVfb2lkc19ieV90eXBlX29pZChBcmNoaXZlICpmb3V0LAogCQkJ CQkJCQkJCSBQUUV4cEJ1ZmZlciB1cGdyYWRlX2J1ZmZlciwKQEAgLTk3OTEsNiArMTAwMDgsOSBA QCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmop CiAJCWNhc2UgRE9fU1VCU0NSSVBUSU9OOgogCQkJZHVtcFN1YnNjcmlwdGlvbihmb3V0LCAoU3Vi c2NyaXB0aW9uSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1ZBUklBQkxFOgor CQkJZHVtcFZhcmlhYmxlKGZvdXQsIChWYXJpYWJsZUluZm8gKikgZG9iaik7CisJCQlicmVhazsK IAkJY2FzZSBET19QUkVfREFUQV9CT1VOREFSWToKIAkJY2FzZSBET19QT1NUX0RBVEFfQk9VTkRB Ulk6CiAJCQkvKiBuZXZlciBkdW1wZWQsIG5vdGhpbmcgdG8gZG8gKi8KQEAgLTE3ODc3LDYgKzE4 MDk3LDcgQEAgYWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2Jqcywg aW50IG51bU9ianMsCiAJCQljYXNlIERPX09QRkFNSUxZOgogCQkJY2FzZSBET19DT0xMQVRJT046 CiAJCQljYXNlIERPX0NPTlZFUlNJT046CisJCQljYXNlIERPX1ZBUklBQkxFOgogCQkJY2FzZSBE T19UQUJMRToKIAkJCWNhc2UgRE9fQVRUUkRFRjoKIAkJCWNhc2UgRE9fUFJPQ0xBTkc6CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaAppbmRleCAxNDQ4MDA1ZjMwLi41NDcxZTY2N2ZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTg0LDcg Kzg0LDggQEAgdHlwZWRlZiBlbnVtCiAJRE9fUE9MSUNZLAogCURPX1BVQkxJQ0FUSU9OLAogCURP X1BVQkxJQ0FUSU9OX1JFTCwKLQlET19TVUJTQ1JJUFRJT04KKwlET19TVUJTQ1JJUFRJT04sCisJ RE9fVkFSSUFCTEUKIH0gRHVtcGFibGVPYmplY3RUeXBlOwogCiAvKiBjb21wb25lbnQgdHlwZXMg b2YgYW4gb2JqZWN0IHdoaWNoIGNhbiBiZSBzZWxlY3RlZCBmb3IgZHVtcGluZyAqLwpAQCAtNjI1 LDYgKzYyNiwyMyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWNoYXIJICAg KnN1YnB1YmxpY2F0aW9uczsKIH0gU3Vic2NyaXB0aW9uSW5mbzsKIAorLyoKKyAqIFRoZSBWYXJp YWJsZUluZm8gc3RydWN0IGlzIHVzZWQgdG8gcmVwcmVzZW50IHNjaGVtYSB2YXJpYWJsZXMKKyAq LwordHlwZWRlZiBzdHJ1Y3QgX1ZhcmlhYmxlSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7 CisJT2lkCQkJdmFydHlwZTsKKwljaGFyCSAgICp2YXJ0eXBuYW1lOworCWNoYXIJICAgKnJvbG5h bWU7CQkvKiBuYW1lIG9mIG93bmVyLCBvciBlbXB0eSBzdHJpbmcgKi8KKwljaGFyCSAgICp2YXJl b3hhY3Rpb247CisJY2hhcgkgICAqdmFyZGVmZXhwcjsKKwljaGFyCSAgICp2YXJhY2w7CisJY2hh cgkgICAqcnZhcmFjbDsKKwljaGFyCSAgICppbml0dmFyYWNsOworCWNoYXIJICAgKmluaXRydmFy YWNsOworfSBWYXJpYWJsZUluZm87CisKIC8qCiAgKiBXZSBidWlsZCBhbiBhcnJheSBvZiB0aGVz ZSB3aXRoIGFuIGVudHJ5IGZvciBlYWNoIG9iamVjdCB0aGF0IGlzIGFuCiAgKiBleHRlbnNpb24g bWVtYmVyIGFjY29yZGluZyB0byBwZ19kZXBlbmQuCkBAIC03MjUsNSArNzQzLDYgQEAgZXh0ZXJu IHZvaWQgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQpOwogZXh0ZXJuIHZvaWQgZ2V0UHVi bGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwKIAkJCQkJ IGludCBudW1UYWJsZXMpOwogZXh0ZXJuIHZvaWQgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpm b3V0KTsKK2V4dGVybiB2b2lkIGdldFZhcmlhYmxlcyhBcmNoaXZlICpmb3V0KTsKIAogI2VuZGlm CQkJCQkJCS8qIFBHX0RVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IDYyMjdhOGZk MjYuLjk2OWEwMjE3NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTE0NzcsNiArMTQ3Nywx MCBAQCBkZXNjcmliZUR1bXBhYmxlT2JqZWN0KER1bXBhYmxlT2JqZWN0ICpvYmosIGNoYXIgKmJ1 ZiwgaW50IGJ1ZnNpemUpCiAJCQkJCSAiUE9TVC1EQVRBIEJPVU5EQVJZICAoSUQgJWQpIiwKIAkJ CQkJIG9iai0+ZHVtcElkKTsKIAkJCXJldHVybjsKKwkJY2FzZSBET19WQVJJQUJMRToKKwkJCXNu cHJpbnRmKGJ1ZiwgYnVmc2l6ZSwKKwkJCQkJICJWQVJJQUJMRSAlcyAgKElEICVkIE9JRCAldSki LAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOwogCX0KIAkv KiBzaG91bGRuJ3QgZ2V0IGhlcmUgKi8KIAlzbnByaW50ZihidWYsIGJ1ZnNpemUsCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCmluZGV4IGVjNzUxYTdjMjMuLjJhNjc3NjZlZDQgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90 LzAwMl9wZ19kdW1wLnBsCkBAIC0yNjAxLDYgKzI2MDEsMzggQEAgbXkgJXRlc3RzID0gKAogCQl9 LAogCX0sCiAKKwknQ1JFQVRFIFZBUklBQkxFIHRlc3RfdmFyaWFibGUnID0+IHsKKwkJYWxsX3J1 bnMgICAgID0+IDEsCisJCWNhdGNoX2FsbCAgICA9PiAnQ1JFQVRFIC4uLiBjb21tYW5kcycsCisJ CWNyZWF0ZV9vcmRlciA9PiA2MSwKKwkJY3JlYXRlX3NxbCAgID0+ICdDUkVBVEUgVkFSSUFCTEUg ZHVtcF90ZXN0LnZhcmlhYmxlIEFTIGludGVnZXIgREVGQVVMVCAwOycsCisJCXJlZ2V4cCA9PiBx ci9eCisJCQlcUUNSRUFURSBWQVJJQUJMRSBkdW1wX3Rlc3QudmFyaWFibGUgQVMgaW50ZWdlciBE RUZBVUxUIDA7XEUveG0sCisJCWxpa2UgPT4geworCQkJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAg PT4gMSwKKwkJCWNsZWFuICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQljbGVhbl9pZl9leGlz dHMgICAgICAgICA9PiAxLAorCQkJY3JlYXRlZGIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCWRl ZmF1bHRzICAgICAgICAgICAgICAgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICA9 PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxlX2RhdGEgPT4gMSwKKwkJCW5vX2Jsb2JzICAgICAg ICAgICAgICAgID0+IDEsCisJCQlub19wcml2cyAgICAgICAgICAgICAgICA9PiAxLAorCQkJbm9f b3duZXIgICAgICAgICAgICAgICAgPT4gMSwKKwkJCW9ubHlfZHVtcF90ZXN0X3NjaGVtYSAgID0+ IDEsCisJCQlwZ19kdW1wYWxsX2RicHJpdnMgICAgICA9PiAxLAorCQkJc2NoZW1hX29ubHkgICAg ICAgICAgICAgPT4gMSwKKwkJCXNlY3Rpb25fcHJlX2RhdGEgICAgICAgID0+IDEsCisJCQl0ZXN0 X3NjaGVtYV9wbHVzX2Jsb2JzICA9PiAxLAorCQkJd2l0aF9vaWRzICAgICAgICAgICAgICAgPT4g MSwgfSwKKwkJdW5saWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAor CQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlwZ19kdW1wYWxsX2dsb2JhbHMg ICAgICAgPT4gMSwKKwkJCXBnX2R1bXBhbGxfZ2xvYmFsc19jbGVhbiA9PiAxLAorCQkJcm9sZSAg ICAgICAgICAgICAgICAgICAgID0+IDEsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgICAgICAgPT4g MSwgfSwgfSwKKwogCSdDUkVBVEUgVklFVyB0ZXN0X3ZpZXcnID0+IHsKIAkJY3JlYXRlX29yZGVy ID0+IDYxLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBWSUVXIGR1bXBfdGVzdC50ZXN0X3Zp ZXcKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmluL3BzcWwvY29t bWFuZC5jCmluZGV4IDViNGQ1NGE0NDIuLjczYTc1MmZkN2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwpAQCAtODUzLDYgKzg1 Myw5IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3Rp dmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJYnJl YWs7CisJCQljYXNlICdWJzoJCQkvKiBWYXJpYWJsZXMgKi8KKwkJCQlzdWNjZXNzID0gbGlzdFZh cmlhYmxlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCWJyZWFrOwogCQkJY2FzZSAneCc6 CQkJLyogRXh0ZW5zaW9ucyAqLwogCQkJCWlmIChzaG93X3ZlcmJvc2UpCiAJCQkJCXN1Y2Nlc3Mg PSBsaXN0RXh0ZW5zaW9uQ29udGVudHMocGF0dGVybik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDRjYTBkYjFkMGMu LjdhNjUwYWYxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC00MTk4LDYgKzQxOTgsODUgQEAgbGlzdFNjaGVtYXMo Y29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXN0ZW0pCiAJcmV0 dXJuIHRydWU7CiB9CiAKKy8qCisgKiBcZFYKKyAqCisgKiBsaXN0VmFyaWFibGVzKCkKKyAqLwor Ym9vbAorbGlzdFZhcmlhYmxlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCit7 CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJpbnRRdWVyeU9w dCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1u c1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsK KworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCSAgIlNFTEVDVCBuLm5zcG5hbWUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHYudmFybmFt ZSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5mb3JtYXRfdHlwZSh2LnZhcnR5 cGUsIHYudmFydHlwbW9kKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19n ZXRfdXNlcmJ5aWQodi52YXJvd25lcikgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIodi52YXJkZWZleHByLCAwKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg Q0FTRSB2LnZhcmVveGFjdGlvblxuIgorCQkJCQkgICIgICAgV0hFTiAnZCcgVEhFTiAnT04gVFJB TlNBQ1RJT04gRU5EIERST1AnXG4iCisJCQkJCSAgIiAgICBXSEVOICdyJyBUSEVOICdPTiBUUkFO U0FDVElPTiBFTkQgUkVTRVQnXG4iCisJCQkJCSAgIiAgICBXSEVOICdSJyBUSEVOICdPTiBST0xM QkFDSyBSRVNFVCcgRU5EIGFzIFwiJXNcIiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEi KSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlR5 cGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJEZWZhdWx0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJUcmFuc2FjdGlvbiBlbmQgYWN0aW9u IikpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCSAiXG5GUk9NIHBnX2Nh dGFsb2cucGdfdmFyaWFibGUgdiIKKwkJCQkJCSAiXG4gICAgIExFRlQgSk9JTiBwZ19jYXRhbG9n LnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gdi52YXJuYW1lc3BhY2UiKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICJcbldIRVJFIHRydWVcbiIpOworCWlmICghcGF0dGVybikKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiAgICAgIEFORCBuLm5zcG5hbWUgPD4gJ3BnX2Nh dGFsb2cnXG4iCisJCQkJCQkJICIgICAgICBBTkQgbi5uc3BuYW1lIDw+ICdpbmZvcm1hdGlvbl9z Y2hlbWEnXG4iKTsKKworCXByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRiLCAmYnVmLCBwYXR0 ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCSAgIm4ubnNwbmFtZSIsICJ2LnZhcm5hbWUiLCBOVUxM LAorCQkJCQkJICAicGdfY2F0YWxvZy5wZ192YXJpYWJsZV9pc192aXNpYmxlKHYub2lkKSIpOwor CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDEsMjsiKTsKKworCXJlcyA9 IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMp CisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogTW9zdCBmdW5jdGlvbnMgaW4gdGhpcyBmaWxl IGFyZSBjb250ZW50IHRvIHByaW50IGFuIGVtcHR5IHRhYmxlIHdoZW4KKwkgKiB0aGVyZSBhcmUg bm8gbWF0Y2hpbmcgb2JqZWN0cy4gIFdlIGludGVudGlvbmFsbHkgZGV2aWF0ZSBmcm9tIHRoYXQK KwkgKiBoZXJlLCBidXQgb25seSBpbiAhcXVpZXQgbW9kZSwgZm9yIGhpc3RvcmljYWwgcmVhc29u cy4KKwkgKi8KKwlpZiAoUFFudHVwbGVzKHJlcykgPT0gMCAmJiAhcHNldC5xdWlldCkKKwl7CisJ CWlmIChwYXR0ZXJuKQorCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBzY2hlbWEgdmFy aWFibGUgbmFtZWQgXCIlc1wiLlxuIiwKKwkJCQkJICAgcGF0dGVybik7CisJCWVsc2UKKwkJCXBz cWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2NoZW1hIHZhcmlhYmxlcy5cbiIpOworCX0KKwll bHNlCisJeworCQlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCQlteW9wdC50aXRsZSA9IF8oIkxp c3Qgb2YgdmFyaWFibGVzIik7CisJCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVlOworCQlt eW9wdC50cmFuc2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCQlteW9wdC5uX3Ry YW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJCXByaW50 UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsK Kwl9CisKKwlQUWNsZWFyKHJlcyk7CisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKiBcZEZwCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaCBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5oCmluZGV4IGE0Y2M1ZWZhZTAuLmVjYzRlM2E1MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5oCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5oCkBAIC02Myw2ICs2Myw5 IEBAIGV4dGVybiBib29sIGxpc3RBbGxEYnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlKTsKIC8qIFxkdCwgXGRpLCBcZHMsIFxkUywgZXRjLiAqLwogZXh0ZXJuIGJvb2wgbGlzdFRh Ymxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJi b3NlLCBib29sIHNob3dTeXN0ZW0pOwogCisvKiBcZFYgKi8KK2V4dGVybiBib29sIGxpc3RWYXJp YWJsZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2YXJib3NlKTsKKwogLyogXGREICovCiBl eHRlcm4gYm9vbCBsaXN0RG9tYWlucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Us IGJvb2wgc2hvd1N5c3RlbSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9z cmMvYmluL3BzcWwvaGVscC5jCmluZGV4IDMxNjAzMGQzNTguLmFkY2MzNmNiNmUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMTY3 LDcgKzE2Nyw3IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCSAqIFVz ZSAicHNxbCAtLWhlbHA9Y29tbWFuZHMgfCB3YyIgdG8gY291bnQgY29ycmVjdGx5LiAgSXQncyBv a2F5IHRvIGNvdW50CiAJICogdGhlIFVTRV9SRUFETElORSBsaW5lIGV2ZW4gaW4gYnVpbGRzIHdp dGhvdXQgdGhhdC4KIAkgKi8KLQlvdXRwdXQgPSBQYWdlT3V0cHV0KDEyNSwgcGFnZXIgPyAmKHBz ZXQucG9wdC50b3B0KSA6IE5VTEwpOworCW91dHB1dCA9IFBhZ2VPdXRwdXQoMTI2LCBwYWdlciA/ ICYocHNldC5wb3B0LnRvcHQpIDogTlVMTCk7CiAKIAlmcHJpbnRmKG91dHB1dCwgXygiR2VuZXJh bFxuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcY29weXJpZ2h0ICAgICAgICAgICAgIHNo b3cgUG9zdGdyZVNRTCB1c2FnZSBhbmQgZGlzdHJpYnV0aW9uIHRlcm1zXG4iKSk7CkBAIC0yNTcs NiArMjU3LDcgQEAgc2xhc2hVc2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJZnByaW50 ZihvdXRwdXQsIF8oIiAgXFxkVFtTK10gW1BBVFRFUk5dICAgICAgbGlzdCBkYXRhIHR5cGVzXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkdVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCBy b2xlc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZHZbUytdIFtQQVRURVJOXSAgICAg IGxpc3Qgdmlld3NcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRWICAgICBbUEFUVEVS Tl0gICAgICBsaXN0IHZhcmlhYmxlc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZHhb K10gIFtQQVRURVJOXSAgICAgIGxpc3QgZXh0ZW5zaW9uc1xuIikpOwogCWZwcmludGYob3V0cHV0 LCBfKCIgIFxcZHkgICAgIFtQQVRURVJOXSAgICAgIGxpc3QgZXZlbnQgdHJpZ2dlcnNcbiIpKTsK IAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGxbK10gICBbUEFUVEVSTl0gICAgICBsaXN0IGRhdGFi YXNlc1xuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IGJiNjk2ZjhlZTkuLmE3NTgzODEwZTggMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMKQEAgLTgwNSw2ICs4MDUsMjIgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1 ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3N0YXRpc3RpY3MgPSB7CiAJTlVMTAogfTsKIAorc3RhdGlj IGNvbnN0IFNjaGVtYVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcyA9IHsKKwkvKiBt aW5fc2VydmVyX3ZlcnNpb24gKi8KKwkwLAorCS8qIGNhdG5hbWUgKi8KKwkicGdfY2F0YWxvZy5w Z192YXJpYWJsZSB2IiwKKwkvKiBzZWxjb25kaXRpb24gKi8KKwlOVUxMLAorCS8qIHZpc2NvbmRp dGlvbiAqLworCSJwZ19jYXRhbG9nLnBnX3ZhcmlhYmxlX2lzX3Zpc2libGUodi5vaWQpIiwKKwkv KiBuYW1lc3BhY2UgKi8KKwkidi52YXJuYW1lc3BhY2UiLAorCS8qIHJlc3VsdCAqLworCSJwZ19j YXRhbG9nLnF1b3RlX2lkZW50KHYudmFybmFtZSkiLAorCS8qIHF1YWxyZXN1bHQgKi8KKwlOVUxM Cit9OwogCiAvKgogICogUXVlcmllcyB0byBnZXQgbGlzdHMgb2YgbmFtZXMgb2YgdmFyaW91cyBr aW5kcyBvZiB0aGluZ3MsIHBvc3NpYmx5CkBAIC0xMjQ5LDYgKzEyNjUsNyBAQCBzdGF0aWMgY29u c3QgcGdzcWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAkJCQkJCQkJCQkJCQkJ CQkJICogVEFCTEUgLi4uICovCiAJeyJVU0VSIiwgUXVlcnlfZm9yX2xpc3Rfb2Zfcm9sZXMgIiBV TklPTiBTRUxFQ1QgJ01BUFBJTkcgRk9SJyJ9LAogCXsiVVNFUiBNQVBQSU5HIEZPUiIsIE5VTEws IE5VTEwsIE5VTEx9LAorCXsiVkFSSUFCTEUiLCBOVUxMLCBOVUxMLCAmUXVlcnlfZm9yX2xpc3Rf b2ZfdmFyaWFibGVzfSwKIAl7IlZJRVciLCBOVUxMLCBOVUxMLCAmUXVlcnlfZm9yX2xpc3Rfb2Zf dmlld3N9LAogCXtOVUxMfQkJCQkJCS8qIGVuZCBvZiBsaXN0ICovCiB9OwpAQCAtMTYwNCw3ICsx NjIxLDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50 IGVuZCkKIAkJIkFCT1JUIiwgIkFMVEVSIiwgIkFOQUxZWkUiLCAiQkVHSU4iLCAiQ0FMTCIsICJD SEVDS1BPSU5UIiwgIkNMT1NFIiwgIkNMVVNURVIiLAogCQkiQ09NTUVOVCIsICJDT01NSVQiLCAi Q09QWSIsICJDUkVBVEUiLCAiREVBTExPQ0FURSIsICJERUNMQVJFIiwKIAkJIkRFTEVURSBGUk9N IiwgIkRJU0NBUkQiLCAiRE8iLCAiRFJPUCIsICJFTkQiLCAiRVhFQ1VURSIsICJFWFBMQUlOIiwK LQkJIkZFVENIIiwgIkdSQU5UIiwgIklNUE9SVCIsICJJTlNFUlQiLCAiTElTVEVOIiwgIkxPQUQi LCAiTE9DSyIsCisJCSJGRVRDSCIsICJHUkFOVCIsICJJTVBPUlQiLCAiSU5TRVJUIiwgIkxFVCIs ICJMSVNURU4iLCAiTE9BRCIsICJMT0NLIiwKIAkJIk1PVkUiLCAiTk9USUZZIiwgIlBSRVBBUkUi LAogCQkiUkVBU1NJR04iLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsICJSRUlOREVYIiwg IlJFTEVBU0UiLAogCQkiUkVTRVQiLCAiUkVWT0tFIiwgIlJPTExCQUNLIiwKQEAgLTE2MjEsOSAr MTYzOCw5IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJCSJcXGQiLCAiXFxkYSIsICJcXGRBIiwgIlxcZGIiLCAiXFxkYyIsICJcXGRDIiwg IlxcZGQiLCAiXFxkZHAiLCAiXFxkRCIsCiAJCSJcXGRlcyIsICJcXGRldCIsICJcXGRldSIsICJc XGRldyIsICJcXGRFIiwgIlxcZGYiLAogCQkiXFxkRiIsICJcXGRGZCIsICJcXGRGcCIsICJcXGRG dCIsICJcXGRnIiwgIlxcZGkiLCAiXFxkbCIsICJcXGRMIiwKLQkJIlxcZG0iLCAiXFxkbiIsICJc XGRvIiwgIlxcZE8iLCAiXFxkcCIsCisJCSJcXGRtIiwgIlxcZG4iLCAiXFxkbyIsICJcXGRPIiwg IlxcZHAiCiAJCSJcXGRyZHMiLCAiXFxkUnMiLCAiXFxkUnAiLCAiXFxkcyIsICJcXGRTIiwKLQkJ IlxcZHQiLCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxkeCIsICJcXGR5IiwKKwkJIlxcZHQi LCAiXFxkVCIsICJcXGR2IiwgIlxcZHUiLCAiXFxkeCIsICJcXGR5IiwgIlxcZFYiLAogCQkiXFxl IiwgIlxcZWNobyIsICJcXGVmIiwgIlxcZWxpZiIsICJcXGVsc2UiLCAiXFxlbmNvZGluZyIsCiAJ CSJcXGVuZGlmIiwgIlxcZXJydmVyYm9zZSIsICJcXGV2IiwKIAkJIlxcZiIsCkBAIC0xOTg4LDYg KzIwMDUsOSBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2FsdGVyX3N5 c3RlbV9zZXRfdmFycyk7CiAJZWxzZSBpZiAoTWF0Y2hlczQoIkFMVEVSIiwgIlNZU1RFTSIsICJT RVQiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIlRPIik7CisJLyogQUxURVIg VkFSSUFCTEUgPG5hbWU+ICovCisJZWxzZSBpZiAoTWF0Y2hlczMoIkFMVEVSIiwgIlZBUklBQkxF IiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIX0xJU1QzKCJPV05FUiBUTyIsICJSRU5BTUUg VE8iLCAiU0VUIFNDSEVNQSIpOwogCS8qIEFMVEVSIFZJRVcgPG5hbWU+ICovCiAJZWxzZSBpZiAo TWF0Y2hlczMoIkFMVEVSIiwgIlZJRVciLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEhfTElT VDQoIkFMVEVSIENPTFVNTiIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLApAQCAtMjgzNyw2ICsy ODU3LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlczQoIkNSRUFURSIsICJST0xFfFVTRVJ8R1JPVVAiLCBN YXRjaEFueSwgIklOIikpCiAJCUNPTVBMRVRFX1dJVEhfTElTVDIoIkdST1VQIiwgIlJPTEUiKTsK IAorLyogQ1JFQVRFIFZBUklBQkxFIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1B LCBzbyB1c2UgVGFpbE1hdGNoZXMgKi8KKwkvKiBDb21wbGV0ZSBDUkVBVEUgVkFSSUFCTEUgPG5h bWU+IHdpdGggQVMgKi8KKwllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWQVJJQUJM RSIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSF9DT05TVCgiQVMiKTsKKwkvKiBDb21wbGV0 ZSBDUkVBVEUgVkFSSUFCTEUgPG5hbWU+IHdpdGggQVMgdHlwZXMqLworCWVsc2UgaWYgKFRhaWxN YXRjaGVzNCgiQ1JFQVRFIiwgIlZBUklBQkxFIiwgTWF0Y2hBbnksICJBUyIpKQorCQlDT01QTEVU RV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9kYXRhdHlwZXMsIE5VTEwpOwor CiAvKiBDUkVBVEUgVklFVyAtLS0gaXMgYWxsb3dlZCBpbnNpZGUgQ1JFQVRFIFNDSEVNQSwgc28g dXNlIFRhaWxNYXRjaGVzICovCiAJLyogQ29tcGxldGUgQ1JFQVRFIFZJRVcgPG5hbWU+IHdpdGgg QVMgKi8KIAllbHNlIGlmIChUYWlsTWF0Y2hlczMoIkNSRUFURSIsICJWSUVXIiwgTWF0Y2hBbnkp KQpAQCAtMjg5MCw3ICsyOTE4LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAogLyogRElTQ0FSRCAqLwogCWVsc2UgaWYgKE1hdGNoZXMx KCJESVNDQVJEIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDQoIkFMTCIsICJQTEFOUyIsICJTRVFV RU5DRVMiLCAiVEVNUCIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJBTEwiLCAiUExBTlMiLCAi U0VRVUVOQ0VTIiwgIlRFTVAiLCAiVkFSSUFCTEVTIik7CiAKIC8qIERPICovCiAJZWxzZSBpZiAo TWF0Y2hlczEoIkRPIikpCkBAIC0yOTkyLDYgKzMwMjAsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNv bnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzNSgi RFJPUCIsICJSVUxFIiwgTWF0Y2hBbnksICJPTiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lU SF9MSVNUMigiQ0FTQ0FERSIsICJSRVNUUklDVCIpOwogCisJLyogRFJPUCBWQVJJQUJMRSAqLwor CWVsc2UgaWYgKE1hdGNoZXMyKCJEUk9QIiwgIlZBUklBQkxFIikpCisJCUNPTVBMRVRFX1dJVEhf U0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3ZhcmlhYmxlcywgTlVMTCk7CisJZWxzZSBp ZiAoTWF0Y2hlczMoIkRST1AiLCAiVkFSSUFCTEUiLCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJ VEhfTElTVDIoIkNBU0NBREUiLCAiUkVTVFJJQ1QiKTsKKwogLyogRVhFQ1VURSAqLwogCWVsc2Ug aWYgKE1hdGNoZXMxKCJFWEVDVVRFIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9y X2xpc3Rfb2ZfcHJlcGFyZWRfc3RhdGVtZW50cyk7CkBAIC0zMDAyLDE0ICszMDM2LDE0IEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJICog Q29tcGxldGUgRVhQTEFJTiBbQU5BTFlaRV0gW1ZFUkJPU0VdIHdpdGggbGlzdCBvZiBFWFBMQUlO LWFibGUgY29tbWFuZHMKIAkgKi8KIAllbHNlIGlmIChNYXRjaGVzMSgiRVhQTEFJTiIpKQotCQlD T01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUi LCAiREVDTEFSRSIsCi0JCQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIpOworCQlDT01QTEVURV9X SVRIX0xJU1Q4KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVURSIsICJVUERBVEUiLCAiREVDTEFS RSIsCisJCQkJCQkJIkFOQUxZWkUiLCAiVkVSQk9TRSIsICJMRVQiKTsKIAllbHNlIGlmIChNYXRj aGVzMigiRVhQTEFJTiIsICJBTkFMWVpFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDYoIlNFTEVD VCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIiwKLQkJCQkJCQkiVkVS Qk9TRSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q3KCJTRUxFQ1QiLCAiSU5TRVJUIiwgIkRFTEVU RSIsICJVUERBVEUiLCAiREVDTEFSRSIsCisJCQkJCQkJIlZFUkJPU0UiLCAiTEVUIik7CiAJZWxz ZSBpZiAoTWF0Y2hlczIoIkVYUExBSU4iLCAiVkVSQk9TRSIpIHx8CiAJCQkgTWF0Y2hlczMoIkVY UExBSU4iLCAiQU5BTFlaRSIsICJWRVJCT1NFIikpCi0JCUNPTVBMRVRFX1dJVEhfTElTVDUoIlNF TEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJERUNMQVJFIik7CisJCUNPTVBM RVRFX1dJVEhfTElTVDYoIlNFTEVDVCIsICJJTlNFUlQiLCAiREVMRVRFIiwgIlVQREFURSIsICJE RUNMQVJFIiwgIkxFVCIpOwogCiAvKiBGRVRDSCAmJiBNT1ZFICovCiAJLyogQ29tcGxldGUgRkVU Q0ggd2l0aCBvbmUgb2YgRk9SV0FSRCwgQkFDS1dBUkQsIFJFTEFUSVZFICovCkBAIC0zMTE4LDYg KzMxNTIsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBST1VUSU5FUyBJTiBTQ0hF TUEnIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0FMTCBTRVFVRU5DRVMgSU4gU0NIRU1B JyIKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VMRUNUICdBTEwgVEFCTEVTIElOIFNDSEVNQSciCisJ CQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnQUxMIFZBUklBQkxFUyBJTiBTQ0hFTUEnIgogCQkJ CQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0RBVEFCQVNFJyIKIAkJCQkJCQkJCSAgICIgVU5JT04g U0VMRUNUICdET01BSU4nIgogCQkJCQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ0ZPUkVJR04gREFU QSBXUkFQUEVSJyIKQEAgLTMxMzEsMTQgKzMxNjYsMTYgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0 IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJCQkJCQkJCSAgICIgVU5JT04gU0VM RUNUICdTRVFVRU5DRSciCiAJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVEFCTEUnIgogCQkJ CQkJCQkJICAgIiBVTklPTiBTRUxFQ1QgJ1RBQkxFU1BBQ0UnIgotCQkJCQkJCQkJICAgIiBVTklP TiBTRUxFQ1QgJ1RZUEUnIik7CisJCQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVFlQRSciCisJ CQkJCQkJCQkgICAiIFVOSU9OIFNFTEVDVCAnVkFSSUFCTEUnIik7CiAJfQogCWVsc2UgaWYgKFRh aWxNYXRjaGVzNCgiR1JBTlR8UkVWT0tFIiwgTWF0Y2hBbnksICJPTiIsICJBTEwiKSkKLQkJQ09N UExFVEVfV0lUSF9MSVNUNSgiRlVOQ1RJT05TIElOIFNDSEVNQSIsCisJCUNPTVBMRVRFX1dJVEhf TElTVDYoIkZVTkNUSU9OUyBJTiBTQ0hFTUEiLAogCQkJCQkJCSJQUk9DRURVUkVTIElOIFNDSEVN QSIsCiAJCQkJCQkJIlJPVVRJTkVTIElOIFNDSEVNQSIsCiAJCQkJCQkJIlNFUVVFTkNFUyBJTiBT Q0hFTUEiLAotCQkJCQkJCSJUQUJMRVMgSU4gU0NIRU1BIik7CisJCQkJCQkJIlRBQkxFUyBJTiBT Q0hFTUEiLAorCQkJCQkJCSJWQVJJQUJMRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAoVGFpbE1h dGNoZXM0KCJHUkFOVHxSRVZPS0UiLCBNYXRjaEFueSwgIk9OIiwgIkZPUkVJR04iKSkKIAkJQ09N UExFVEVfV0lUSF9MSVNUMigiREFUQSBXUkFQUEVSIiwgIlNFUlZFUiIpOwogCkBAIC0zMTcyLDYg KzMyMDksOCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBp bnQgZW5kKQogCQkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXNw YWNlcyk7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzMSgiVFlQRSIpKQogCQkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfZGF0YXR5cGVzLCBOVUxMKTsKKwkJZWxz ZSBpZiAoVGFpbE1hdGNoZXMxKCJWQVJJQUJMRSIpKQorCQkJQ09NUExFVEVfV0lUSF9TQ0hFTUFf UVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdmFyaWFibGVzLCBOVUxMKTsKIAkJZWxzZSBpZiAoVGFp bE1hdGNoZXM0KCJHUkFOVCIsIE1hdGNoQW55LCBNYXRjaEFueSwgTWF0Y2hBbnkpKQogCQkJQ09N UExFVEVfV0lUSF9DT05TVCgiVE8iKTsKIAkJZWxzZQpAQCAtMzMyNCw3ICszMzYzLDcgQEAgcHNx bF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAogLyog UFJFUEFSRSB4eCBBUyAqLwogCWVsc2UgaWYgKE1hdGNoZXMzKCJQUkVQQVJFIiwgTWF0Y2hBbnks ICJBUyIpKQotCQlDT01QTEVURV9XSVRIX0xJU1Q0KCJTRUxFQ1QiLCAiVVBEQVRFIiwgIklOU0VS VCIsICJERUxFVEUgRlJPTSIpOworCQlDT01QTEVURV9XSVRIX0xJU1Q1KCJTRUxFQ1QiLCAiVVBE QVRFIiwgIklOU0VSVCIsICJERUxFVEUgRlJPTSIsICJMRVQiKTsKIAogLyoKICAqIFBSRVBBUkUg VFJBTlNBQ1RJT04gaXMgbWlzc2luZyBvbiBwdXJwb3NlLiBJdCdzIGludGVuZGVkIGZvciB0cmFu c2FjdGlvbgpAQCAtMzU0Nyw2ICszNTg2LDE0IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFy ICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoVGFpbE1hdGNoZXM0KCJVUERB VEUiLCBNYXRjaEFueSwgIlNFVCIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lUSF9DT05TVCgi PSIpOwogCisvKiBMRVQgLS0tIGNhbiBiZSBpbnNpZGUgRVhQTEFJTiwgUFJFUEFSRSBldGMgKi8K KwkvKiBJZiBwcmV2LiB3b3JkIGlzIExFVCBzdWdnZXN0IGEgbGlzdCBvZiB2YXJpYWJsZXMgKi8K KwllbHNlIGlmIChUYWlsTWF0Y2hlczEoIkxFVCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl92YXJpYWJsZXMsIE5VTEwpOworCS8qIENvbXBsZXRlIExF VCA8dmFyaWFibGU+IHdpdGggIj0iICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMyKCJMRVQiLCBN YXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEhfQ09OU1QoIj0iKTsKKwogLyogVVNFUiBNQVBQSU5H ICovCiAJZWxzZSBpZiAoTWF0Y2hlczMoIkFMVEVSfENSRUFURXxEUk9QIiwgIlVTRVIiLCAiTUFQ UElORyIpKQogCQlDT01QTEVURV9XSVRIX0NPTlNUKCJGT1IiKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmgKaW5kZXggNDZjMjcxYTQ2Yy4uM2UzOGEwNWU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmgKQEAgLTE4MCw3ICsxODAsOCBAQCB0eXBlZGVmIGVudW0gT2JqZWN0Q2xhc3MKIAlPQ0xB U1NfUFVCTElDQVRJT04sCQkJLyogcGdfcHVibGljYXRpb24gKi8KIAlPQ0xBU1NfUFVCTElDQVRJ T05fUkVMLAkJLyogcGdfcHVibGljYXRpb25fcmVsICovCiAJT0NMQVNTX1NVQlNDUklQVElPTiwJ CS8qIHBnX3N1YnNjcmlwdGlvbiAqLwotCU9DTEFTU19UUkFOU0ZPUk0JCQkvKiBwZ190cmFuc2Zv cm0gKi8KKwlPQ0xBU1NfVFJBTlNGT1JNLAkJCS8qIHBnX3RyYW5zZm9ybSAqLworCU9DTEFTU19W QVJJQUJMRQkJCQkvKiBwZ192YXJpYWJsZSAqLwogfSBPYmplY3RDbGFzczsKIAogI2RlZmluZSBM QVNUX09DTEFTUwkJT0NMQVNTX1RSQU5TRk9STQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleGluZy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleGluZy5oCmluZGV4IDI1 NGZiZWYxZjcuLjY3ZWQwNGYzNTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXhpbmcuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4aW5nLmgKQEAgLTM2MCw0ICsz NjAsMTAgQEAgREVDTEFSRV9VTklRVUVfSU5ERVgocGdfc3Vic2NyaXB0aW9uX3N1Ym5hbWVfaW5k ZXgsIDYxMTUsIG9uIHBnX3N1YnNjcmlwdGlvbiB1c2kKIERFQ0xBUkVfVU5JUVVFX0lOREVYKHBn X3N1YnNjcmlwdGlvbl9yZWxfc3JyZWxpZF9zcnN1YmlkX2luZGV4LCA2MTE3LCBvbiBwZ19zdWJz Y3JpcHRpb25fcmVsIHVzaW5nIGJ0cmVlKHNycmVsaWQgb2lkX29wcywgc3JzdWJpZCBvaWRfb3Bz KSk7CiAjZGVmaW5lIFN1YnNjcmlwdGlvblJlbFNycmVsaWRTcnN1YmlkSW5kZXhJZCA2MTE3CiAK K0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3ZhcmlhYmxlX29pZF9pbmRleCwgNDI4OCwgb24gcGdf dmFyaWFibGUgdXNpbmcgYnRyZWUob2lkIG9pZF9vcHMpKTsKKyNkZWZpbmUgVmFyaWFibGVPYmpl Y3RJbmRleElkIDQyODgKKworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfdmFyaWFibGVfdmFybmFt ZV9uc3BfaW5kZXgsIDQyODksIG9uIHBnX3ZhcmlhYmxlIHVzaW5nIGJ0cmVlKHZhcm5hbWUgbmFt ZV9vcHMsIHZhcm5hbWVzcGFjZSBvaWRfb3BzKSk7CisjZGVmaW5lIFZhcmlhYmxlTmFtZU5zcElu ZGV4SWQgIDQyODkKKwogI2VuZGlmCQkJCQkJCS8qIElOREVYSU5HX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL25h bWVzcGFjZS5oCmluZGV4IDBlMjAyMzcyZDUuLjg4MTIwNzViMmUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9uYW1l c3BhY2UuaApAQCAtNzUsMTAgKzc1LDEzIEBAIGV4dGVybiBPaWQgUmFuZ2VWYXJHZXRBbmRDaGVj a0NyZWF0aW9uTmFtZXNwYWNlKFJhbmdlVmFyICpuZXdSZWxhdGlvbiwKIGV4dGVybiB2b2lkIFJh bmdlVmFyQWRqdXN0UmVsYXRpb25QZXJzaXN0ZW5jZShSYW5nZVZhciAqbmV3UmVsYXRpb24sIE9p ZCBuc3BpZCk7CiBleHRlcm4gT2lkCVJlbG5hbWVHZXRSZWxpZChjb25zdCBjaGFyICpyZWxuYW1l KTsKIGV4dGVybiBib29sIFJlbGF0aW9uSXNWaXNpYmxlKE9pZCByZWxpZCk7CitleHRlcm4gYm9v bCBWYXJpYWJsZUlzVmlzaWJsZShPaWQgcmVsaWQpOwogCiBleHRlcm4gT2lkCVR5cGVuYW1lR2V0 VHlwaWQoY29uc3QgY2hhciAqdHlwbmFtZSk7CiBleHRlcm4gYm9vbCBUeXBlSXNWaXNpYmxlKE9p ZCB0eXBpZCk7CiAKK2V4dGVybiBib29sIFZhcmlhYmxlSXNWaXNpYmxlKE9pZCB2YXJpZCk7CisK IGV4dGVybiBGdW5jQ2FuZGlkYXRlTGlzdCBGdW5jbmFtZUdldENhbmRpZGF0ZXMoTGlzdCAqbmFt ZXMsCiAJCQkJCSAgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywKIAkJCQkJICBib29sIGV4cGFu ZF92YXJpYWRpYywKQEAgLTE0Niw2ICsxNDksMTAgQEAgZXh0ZXJuIHZvaWQgU2V0VGVtcE5hbWVz cGFjZVN0YXRlKE9pZCB0ZW1wTmFtZXNwYWNlSWQsCiAJCQkJCSAgT2lkIHRlbXBUb2FzdE5hbWVz cGFjZUlkKTsKIGV4dGVybiB2b2lkIFJlc2V0VGVtcFRhYmxlTmFtZXNwYWNlKHZvaWQpOwogCitl eHRlcm4gTGlzdCAqTmFtZXNGcm9tTGlzdChMaXN0ICpuYW1lcyk7CitleHRlcm4gT2lkIGxvb2t1 cF92YXJpYWJsZShjb25zdCBjaGFyICpuc3BuYW1lLCBjb25zdCBjaGFyICp2YXJuYW1lLCBib29s IG1pc3Npbmdfb2spOworZXh0ZXJuIE9pZCBpZGVudGlmeV92YXJpYWJsZShMaXN0ICpuYW1lcywg Y2hhciAqKmF0dHJuYW1lLCBib29sICpub3RfdW5pcSk7CisKIGV4dGVybiBPdmVycmlkZVNlYXJj aFBhdGggKkdldE92ZXJyaWRlU2VhcmNoUGF0aChNZW1vcnlDb250ZXh0IGNvbnRleHQpOwogZXh0 ZXJuIE92ZXJyaWRlU2VhcmNoUGF0aCAqQ29weU92ZXJyaWRlU2VhcmNoUGF0aChPdmVycmlkZVNl YXJjaFBhdGggKnBhdGgpOwogZXh0ZXJuIGJvb2wgT3ZlcnJpZGVTZWFyY2hQYXRoTWF0Y2hlc0N1 cnJlbnQoT3ZlcnJpZGVTZWFyY2hQYXRoICpwYXRoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZGVmYXVsdF9hY2wuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZGVmYXVs dF9hY2wuaAppbmRleCBhZWU0OWZkYjZkLi5mODRlYTIxYzY4IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2RlZmF1bHRfYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19kZWZhdWx0X2FjbC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfZGVm YXVsdF9hY2wgKkZvcm1fcGdfZGVmYXVsdF9hY2w7CiAjZGVmaW5lIERFRkFDTE9CSl9GVU5DVElP TgkJJ2YnIC8qIGZ1bmN0aW9uICovCiAjZGVmaW5lIERFRkFDTE9CSl9UWVBFCQkJJ1QnIC8qIHR5 cGUgKi8KICNkZWZpbmUgREVGQUNMT0JKX05BTUVTUEFDRQkJJ24nIC8qIG5hbWVzcGFjZSAqLwor I2RlZmluZSBERUZBQ0xPQkpfVkFSSUFCTEUJCSdWJyAvKiB2YXJpYWJsZSAqLwogCiAjZW5kaWYJ CQkJCQkJLyogRVhQT1NFX1RPX0NMSUVOVF9DT0RFICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IGExNDY1MTAxMGYuLjYxY2JlNjU4MDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApA QCAtNTk2MSw2ICs1OTYxLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfY29sbGF0aW9uX2lzX3Zpc2li bGUnLCBwcm9jb3N0ID0+ICcxMCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcmV0dHlwZSA9 PiAnYm9vbCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX2NvbGxhdGlv bl9pc192aXNpYmxlJyB9LAoreyBvaWQgPT4gJzQxODcnLCBkZXNjciA9PiAnaXMgc2NoZW1hIHZh cmlhYmxlIHZpc2libGUgaW4gc2VhcmNoIHBhdGg/JywKKyAgcHJvbmFtZSA9PiAncGdfdmFyaWFi bGVfaXNfdmlzaWJsZScsIHByb2Nvc3QgPT4gJzEwJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBw cm9yZXR0eXBlID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdf dmFyaWFibGVfaXNfdmlzaWJsZScgfSwKIAogeyBvaWQgPT4gJzI4NTQnLCBkZXNjciA9PiAnZ2V0 IE9JRCBvZiBjdXJyZW50IHNlc3Npb25cJ3MgdGVtcCBzY2hlbWEsIGlmIGFueScsCiAgIHByb25h bWUgPT4gJ3BnX215X3RlbXBfc2NoZW1hJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxl bCA9PiAncicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3ZhcmlhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uMWUwYWU2ZGE1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfdmFyaWFibGUuaApAQCAtMCwwICsxLDEwMiBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogcGdfdmFyaWFibGUuaAorICoJICBkZWZpbml0aW9uIG9mIHNjaGVtYSB2 YXJpYWJsZXMgc3lzdGVtIGNhdGFsb2cgKHBnX3ZhcmlhYmxlcykKKyAqCisgKgorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdmFy aWFibGUuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0 aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1ZBUklBQkxFX0gKKyNkZWZpbmUgUEdfVkFS SUFCTEVfSAorCisjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9n L29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3ZhcmlhYmxlX2QuaCIKKyNp bmNsdWRlICJ1dGlscy9hY2wuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX3Zhcmlh YmxlIGRlZmluaXRpb24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlwZWRlZiBzdHJ1Y3Qg Rm9ybURhdGFfcGdfdmFyaWFibGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhw Z192YXJpYWJsZSw0Mjg3LFZhcmlhYmxlUmVsYXRpb25JZCkKK3sKKwlOYW1lRGF0YQl2YXJuYW1l OwkJLyogdmFyaWFibGUgbmFtZSAqLworCU9pZAkJCXZhcm5hbWVzcGFjZTsJLyogT0lEIG9mIG5h bWVzcGFjZSBjb250YWluaW5nIHZhcmlhYmxlIGNsYXNzICovCisJT2lkCQkJdmFydHlwZTsJCS8q IE9JRCBvZiBlbnRyeSBpbiBwZ190eXBlIGZvciB2YXJpYWJsZSdzIHR5cGUgKi8KKwlpbnQzMgkJ dmFydHlwbW9kOwkJCS8qIHR5cG1vZGUgZm9yIHZhcmlhYmxlJ3MgdHlwZSAqLworCU9pZAkJCXZh cm93bmVyOwkJLyogY2xhc3Mgb3duZXIgKi8KKwlPaWQJCQl2YXJjb2xsYXRpb247CS8qIHZhcmlh YmxlIGNvbGxhdGlvbiAqLworCWNoYXIJCXZhcmVveGFjdGlvbjsJLyogYWN0aW9uIG9uIHRyYW5z YWN0aW9uIGVuZCAqLworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5n dGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIGxpc3Qgb2YgZXhwcmVzc2lvbiB0cmVlcyBm b3IgdmFyaWFibGUgZGVmYXVsdCAoTlVMTCBpZiBub25lKSAqLworCXBnX25vZGVfdHJlZSB2YXJk ZWZleHByIEJLSV9ERUZBVUxUKF9udWxsXyk7CisKKwlhY2xpdGVtCQl2YXJhY2xbMV0gQktJX0RF RkFVTFQoX251bGxfKTsJCS8qIGFjY2VzcyBwZXJtaXNzaW9ucyAqLworCisjZW5kaWYKK30gRm9y bURhdGFfcGdfdmFyaWFibGU7CisKK3R5cGVkZWYgZW51bSBWYXJpYWJsZUVPWEFjdGlvbkNvZGVz Cit7CisJVkFSSUFCTEVfRU9YX0NPREVfTk9PUCA9ICduJywJCQkvKiBOT09QICovCisJVkFSSUFC TEVfRU9YX0NPREVfRFJPUCA9ICdkJywJCQkvKiBPTiBUUkFOU0FDVElPTiBFTkQgRFJPUCAqLwor CVZBUklBQkxFX0VPWF9DT0RFX1JFU0VUID0gJ3InLAkJCS8qIE9OIFRSQU5TQUNUSU9OIEVORCBS RVNFVCAqLworCVZBUklBQkxFX0VPWF9DT0RFX1JPTExCQUNLX1JFU0VUID0gJ1InCS8qIE9OIFJP TExCQUNLIFJFU0VUICovCit9IFZhcmlhYmxlRU9YQWN0aW9uQ29kZXM7CisKKy8qIC0tLS0tLS0t LS0tLS0tLS0KKyAqCQlGb3JtX3BnX3ZhcmlhYmxlIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0 byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBnX3ZhcmlhYmxlIHJlbGF0aW9uLgor ICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3ZhcmlhYmxlICpG b3JtX3BnX3ZhcmlhYmxlOworCit0eXBlZGVmIHN0cnVjdCBWYXJpYWJsZQoreworCU9pZAkJb2lk OworCWNoYXIgICAqbmFtZTsKKwlPaWQJCW5hbWVzcGFjZTsKKwlPaWQJCXR5cGlkOworCWludDMy CXR5cG1vZDsKKwlPaWQJCW93bmVyOworCU9pZAkJY29sbGF0aW9uOworCVZhcmlhYmxlRU9YQWN0 aW9uIGVveGFjdGlvbjsKKwlOb2RlICAgKmRlZmV4cHI7CisJQWNsCSAgICphY2w7Cit9IFZhcmlh YmxlOworCisvKiByZXR1cm5zIGZpZWxkcyBmcm9tIHBnX3ZhcmlhYmxlIHRhYmxlICovCitleHRl cm4gY2hhciAqZ2V0X3NjaGVtYV92YXJpYWJsZV9uYW1lKE9pZCB2YXJpZCk7CitleHRlcm4gdm9p ZCBnZXRfc2NoZW1hX3ZhcmlhYmxlX3R5cGVfdHlwbW9kX2NvbGxpZChPaWQgdmFyaWQsCisJCQkJ CQkJCQkJCQkgICBPaWQgKnR5cGlkLAorCQkJCQkJCQkJCQkJICAgaW50MzIgKnR5cG1vZCwKKwkJ CQkJCQkJCQkJCSAgIE9pZCAqY29sbGlkKTsKKworLyogcmV0dXJucyBuYW1lIG9mIHZhcmlhYmxl IGJhc2VkIG9uIGN1cnJlbnQgc2VhcmNoIHBhdGggKi8KK2V4dGVybiBjaGFyICpzY2hlbWFfdmFy aWFibGVfZ2V0X25hbWUoT2lkIHZhcmlkKTsKKworZXh0ZXJuIFZhcmlhYmxlICpHZXRWYXJpYWJs ZShPaWQgdmFyaWQsIGJvb2wgbWlzc2luZ19vayk7CitleHRlcm4gT2JqZWN0QWRkcmVzcyBWYXJp YWJsZUNyZWF0ZShjb25zdCBjaGFyICp2YXJOYW1lLAorCQkJCQkJCQkJICAgT2lkIHZhck5hbWVz cGFjZSwKKwkJCQkJCQkJCSAgIE9pZCB2YXJUeXBlLAorCQkJCQkJCQkJICAgaW50MzIgdmFyVHlw bW9kLAorCQkJCQkJCQkJICAgT2lkIHZhck93bmVyLAorCQkJCQkJCQkJICAgT2lkIHZhckNvbGxh dGlvbiwKKwkJCQkJCQkJCSAgIE5vZGUgKnZhckRlZmV4cHIsCisJCQkJCQkJCQkgICBWYXJpYWJs ZUVPWEFjdGlvbiBlb3hhY3Rpb24sCisJCQkJCQkJCQkgICBib29sIGlmX25vdF9leGlzdHMpOwor CisKKyNlbmRpZgkJCQkJCQkvKiBQR19WQVJJQUJMRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2No ZW1hdmFyaWFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iN2U4 MjIxOTY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hdmFy aWFibGUuaApAQCAtMCwwICsxLDM5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzY2hl bWF2YXJpYWJsZS5oCisgKgkgIHByb3RvdHlwZXMgZm9yIHNjaGVtYXZhcmlhYmxlLmMuCisgKgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDE4LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9j b21tYW5kcy9zY2hlbWF2YXJpYWJsZS5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwor I2lmbmRlZiBTQ0hFTUFWQVJJQUJMRV9ICisjZGVmaW5lIFNDSEVNQVZBUklBQkxFX0gKKworI2lu Y2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdmFy aWFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJz ZW5vZGVzLmgiCisjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCisjaW5jbHVkZSAidXRpbHMv cXVlcnllbnZpcm9ubWVudC5oIgorCitleHRlcm4gdm9pZCBSZXNldFNjaGVtYVZhcmlhYmxlQ2Fj aGUodm9pZCk7CisKK2V4dGVybiB2b2lkIFJlbW92ZVZhcmlhYmxlQnlJZChPaWQgdmFyaWQpOwor ZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2NoZW1hVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVTY2hlbWFWYXJTdG10ICpzdG10KTsKKworZXh0ZXJuIERhdHVtIEdldFNjaGVt YVZhcmlhYmxlKE9pZCB2YXJpZCwgYm9vbCAqaXNOdWxsLCBPaWQgZXhwZWN0ZWRfdHlwaWQsIGJv b2wgY29weSk7CitleHRlcm4gdm9pZCBTZXRTY2hlbWFWYXJpYWJsZShPaWQgdmFyaWQsIERhdHVt IHZhbHVlLCBib29sIGlzTnVsbCwgT2lkIHR5cGlkLCBpbnQzMiB0eXBtb2QpOworCitleHRlcm4g dm9pZCBkb0xldFN0bXQoUGxhbm5lZFN0bXQgKnBzdG10LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKTsKKwor ZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfdmFyaWFibGVfb25fY29tbWl0X2FjdGlvbihPaWQgdmFyaWQs IFZhcmlhYmxlRU9YQWN0aW9uIGFjdGlvbik7CitleHRlcm4gdm9pZCBTY2hlbWFWYXJpYWJsZVBy ZUNvbW1pdF9vbl9jb21taXRfYWN0aW9ucyh2b2lkKTsKK2V4dGVybiB2b2lkIEF0RU9YYWN0X1Nj aGVtYVZhcmlhYmxlc19vbl9jb21taXRfYWN0aW9ucyhib29sIGlzQ29tbWl0KTsKKworI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBmN2IxZjc3NjE2Li40ZmRjZWI2Y2VlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIGVudW0gRXhw ckV2YWxPcAogCUVFT1BfUEFSQU1fRVhFQywKIAlFRU9QX1BBUkFNX0VYVEVSTiwKIAlFRU9QX1BB UkFNX0NBTExCQUNLLAorCUVFT1BfUEFSQU1fVkFSSUFCTEUsCiAKIAkvKiByZXR1cm4gQ2FzZVRl c3RFeHByIHZhbHVlICovCiAJRUVPUF9DQVNFX1RFU1RWQUwsCkBAIC0zNDQsMTMgKzM0NSwyMiBA QCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCVR1cGxlRGVzYwlhcmdkZXNjOwogCQl9 CQkJbnVsbHRlc3Rfcm93OwogCi0JCS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOICovCisJ CS8qIGZvciBFRU9QX1BBUkFNX0VYRUMvRVhURVJOL1ZBUklBQkxFICovCiAJCXN0cnVjdAogCQl7 Ci0JCQlpbnQJCQlwYXJhbWlkOwkvKiBudW1lcmljIElEIGZvciBwYXJhbWV0ZXIgKi8KLQkJCU9p ZAkJCXBhcmFtdHlwZTsJLyogT0lEIG9mIHBhcmFtZXRlcidzIGRhdGF0eXBlICovCisJCQlpbnQJ CQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCisJCQlPaWQJCQlwYXJh bXR5cGU7CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KIAkJfQkJCXBhcmFtOwog CisJCS8qIGZvciBFRU9QX1BBUkFNX1ZBUklBQkxFICovCisJCXN0cnVjdAorCQl7CisJCQlpbnQJ CQlwYXJhbWlkOwkJLyogbnVtZXJpYyBJRCBmb3IgcGFyYW1ldGVyICovCisJCQlPaWQJCQl2YXJv aWQ7CQkJLyogT0lEIG9mIGFzc2lnbmVkIHZhcmlhYmxlICovCisJCQlPaWQJCQlwYXJhbXR5cGU7 CQkvKiBPSUQgb2YgcGFyYW1ldGVyJ3MgZGF0YXR5cGUgKi8KKwkJfQkJCXZwYXJhbTsKKworCiAJ CS8qIGZvciBFRU9QX1BBUkFNX0NBTExCQUNLICovCiAJCXN0cnVjdAogCQl7CkBAIC03MDAsNiAr NzEwLDggQEAgZXh0ZXJuIHZvaWQgRXhlY0V2YWxQYXJhbUV4ZWMoRXhwclN0YXRlICpzdGF0ZSwg RXhwckV2YWxTdGVwICpvcCwKIGV4dGVybiB2b2lkIEV4ZWNFdmFsUGFyYW1FeGVjUGFyYW1zKEJp dG1hcHNldCAqcGFyYW1zLCBFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFBh cmFtRXh0ZXJuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCUV4cHJD b250ZXh0ICplY29udGV4dCk7CitleHRlcm4gdm9pZCBFeGVjRXZhbFBhcmFtVmFyaWFibGUoRXhw clN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJRXhwckNvbnRleHQgKmVjb250 ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsU1FMVmFsdWVGdW5jdGlvbihFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsQ3VycmVudE9mRXhw cihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNF dmFsTmV4dFZhbHVlRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3N2YXJpYWJsZVJlY2VpdmVyLmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjhjODExNzcwMWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9zdmFyaWFibGVSZWNlaXZlci5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN2YXJpYWJsZVJlY2VpdmVyLmgKKyAqCSAgcHJvdG90eXBl cyBmb3Igc3ZhcmlhYmxlUmVjZWl2ZXIuYworICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivc3ZhcmlhYmxlUmVjZWl2ZXIu aAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgU1ZBUklBQkxFX1JFQ0VJ VkVSX0gKKyNkZWZpbmUgU1ZBUklBQkxFX1JFQ0VJVkVSX0gKKworI2luY2x1ZGUgInRjb3AvZGVz dC5oIgorCisKK2V4dGVybiBEZXN0UmVjZWl2ZXIgKkNyZWF0ZVZhcmlhYmxlRGVzdFJlY2VpdmVy KHZvaWQpOworCitleHRlcm4gdm9pZCBTZXRWYXJpYWJsZURlc3RSZWNlaXZlclBhcmFtcyhEZXN0 UmVjZWl2ZXIgKnNlbGYsIE9pZCB2YXJpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBTVkFSSUFCTEVf UkVDRUlWRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjODMwZjE0MWIxLi5lZmRiNTFj YmZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHR5cGVkZWYgc3Ry dWN0IEV4cHJTdGF0ZQogCWludAkJCXN0ZXBzX2xlbjsJCS8qIG51bWJlciBvZiBzdGVwcyBjdXJy ZW50bHkgKi8KIAlpbnQJCQlzdGVwc19hbGxvYzsJLyogYWxsb2NhdGVkIGxlbmd0aCBvZiBzdGVw cyBhcnJheSAqLwogCisJaW50CQkJbnZhcmlhYmxlczsJCS8qIG51bWJlciBvZiB1c2VkIHZhcmlh YmxlcyAqLworCiAJc3RydWN0IFBsYW5TdGF0ZSAqcGFyZW50OwkvKiBwYXJlbnQgUGxhblN0YXRl IG5vZGUsIGlmIGFueSAqLwogCVBhcmFtTGlzdEluZm8gZXh0X3BhcmFtczsJLyogZm9yIGNvbXBp bGluZyBQQVJBTV9FWFRFUk4gbm9kZXMgKi8KIApAQCAtNDczLDYgKzQ3NSw3IEBAIHR5cGVkZWYg c3RydWN0IFJlc3VsdFJlbEluZm8KIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogewogCU5vZGVUYWcJ CXR5cGU7CisJYm9vbAkJZXNfc2hhcmVkOwkJLyogcGxwZ3NxbCB1c2VzIHNoYXJlIGVzdGF0ZSAq LwogCiAJLyogQmFzaWMgc3RhdGUgZm9yIGFsbCBxdWVyeSB0eXBlczogKi8KIAlTY2FuRGlyZWN0 aW9uIGVzX2RpcmVjdGlvbjsgLyogY3VycmVudCBzY2FuIGRpcmVjdGlvbiAqLwpAQCAtNTY1LDYg KzU2OCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkvKiBUaGUgcGVyLXF1ZXJ5IHNoYXJl ZCBtZW1vcnkgYXJlYSB0byB1c2UgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbi4gKi8KIAlzdHJ1Y3Qg ZHNhX2FyZWEgKmVzX3F1ZXJ5X2RzYTsKIAorCWludAkJCWVzX3Jlc3VsdF92YXJpYWJsZTsJLyog T2lkIG9mIHRhcmdldCB2YXJpYWJsZSAqLworCisJLyogcXVlcnkgc2NoZW1hIHZhcmlhYmxlIGNh Y2hlICovCisJaW50CQkJZXNfbnZhcmlhYmxlczsKKwlib29sCSAgICplc192YXJudWxsczsKKwlP aWQJCSAgICplc192YXJ0eXBlczsKKwlEYXR1bQkgICAqZXNfdmFydmFsdWVzOworCiAJLyoKIAkg KiBKSVQgaW5mb3JtYXRpb24uIGVzX2ppdF9mbGFncyBpbmRpY2F0ZXMgd2hldGhlciBKSVQgc2hv dWxkIGJlIHBlcmZvcm1lZAogCSAqIGFuZCB3aXRoIHdoaWNoIG9wdGlvbnMuICBlc19qaXQgaXMg Y3JlYXRlZCBvbi1kZW1hbmQgd2hlbiBKSVRpbmcgaXMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmluZGV4IDY5N2QzZDdh NWYuLmRkN2ZkOGVkNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMzQ4LDYgKzM0OCw3IEBAIHR5cGVkZWYg ZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVUYWJsZUFzU3RtdCwKIAlUX0NyZWF0ZVNlcVN0bXQsCiAJ VF9BbHRlclNlcVN0bXQsCisJVF9DcmVhdGVTY2hlbWFWYXJTdG10LAogCVRfVmFyaWFibGVTZXRT dG10LAogCVRfVmFyaWFibGVTaG93U3RtdCwKIAlUX0Rpc2NhcmRTdG10LApAQCAtNDE5LDYgKzQy MCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9DcmVhdGVTdGF0c1N0bXQsCiAJVF9BbHRl ckNvbGxhdGlvblN0bXQsCiAJVF9DYWxsU3RtdCwKKwlUX0xldFN0bXQsCiAKIAkvKgogCSAqIFRB R1MgRk9SIFBBUlNFIFRSRUUgTk9ERVMgKHBhcnNlbm9kZXMuaCkKQEAgLTY2Myw2ICs2NjUsNyBA QCB0eXBlZGVmIGVudW0gQ21kVHlwZQogCUNNRF9ERUxFVEUsCiAJQ01EX1VUSUxJVFksCQkJCS8q IGNtZHMgbGlrZSBjcmVhdGUsIGRlc3Ryb3ksIGNvcHksIHZhY3V1bSwKIAkJCQkJCQkJICogZXRj LiAqLworCUNNRF9QTEFOX1VUSUxJVFksCQkJLyogb25seSBsZXQgc3RtdCBub3csIHJlcXVpcmVz IHBsYW5uaW5nICovCiAJQ01EX05PVEhJTkcJCQkJCS8qIGR1bW15IGNvbW1hbmQgZm9yIGluc3Rl YWQgbm90aGluZyBydWxlcwogCQkJCQkJCQkgKiB3aXRoIHF1YWwgKi8KIH0gQ21kVHlwZTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwN2FiMWEzZGRlLi4yOGE4MTgzMzdkIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC04NCw3ICs4NCw5IEBAIHR5cGVkZWYgdWludDMyIEFjbE1vZGU7CQkJ LyogYSBiaXRtYXNrIG9mIHByaXZpbGVnZSBiaXRzICovCiAjZGVmaW5lIEFDTF9DUkVBVEUJCSgx PDw5KQkvKiBmb3IgbmFtZXNwYWNlcyBhbmQgZGF0YWJhc2VzICovCiAjZGVmaW5lIEFDTF9DUkVB VEVfVEVNUCAoMTw8MTApIC8qIGZvciBkYXRhYmFzZXMgKi8KICNkZWZpbmUgQUNMX0NPTk5FQ1QJ CSgxPDwxMSkgLyogZm9yIGRhdGFiYXNlcyAqLwotI2RlZmluZSBOX0FDTF9SSUdIVFMJMTIJCS8q IDEgcGx1cyB0aGUgbGFzdCAxPDx4ICovCisjZGVmaW5lIEFDTF9SRUFECQkoMTw8MTIpIC8qIGZv ciB2YXJpYWJsZXMgKi8KKyNkZWZpbmUgQUNMX1dSSVRFCQkoMTw8MTMpIC8qIGZvciB2YXJpYWJs ZXMgKi8KKyNkZWZpbmUgTl9BQ0xfUklHSFRTCTE0CQkvKiAxIHBsdXMgdGhlIGxhc3QgMTw8eCAq LwogI2RlZmluZSBBQ0xfTk9fUklHSFRTCTAKIC8qIEN1cnJlbnRseSwgU0VMRUNUIC4uLiBGT1Ig W0tFWV0gVVBEQVRFL1NIQVJFIHJlcXVpcmVzIFVQREFURSBwcml2aWxlZ2VzICovCiAjZGVmaW5l IEFDTF9TRUxFQ1RfRk9SX1VQREFURQlBQ0xfVVBEQVRFCkBAIC0xMjEsNiArMTIzLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUXVlcnkKIAogCWludAkJCXJlc3VsdFJlbGF0aW9uOyAvKiBydGFibGUgaW5k ZXggb2YgdGFyZ2V0IHJlbGF0aW9uIGZvcgogCQkJCQkJCQkgKiBJTlNFUlQvVVBEQVRFL0RFTEVU RTsgMCBmb3IgU0VMRUNUICovCisJaW50CQkJcmVzdWx0VmFyaWFibGU7CS8qIE9pZCBvZiB0YXJn ZXQgdmFyaWFibGUgb3IgMCAqLwogCiAJYm9vbAkJaGFzQWdnczsJCS8qIGhhcyBhZ2dyZWdhdGVz IGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNXaW5kb3dGdW5jczsgLyogaGFz IHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MDUsNiArMTUwOCwxOCBAQCB0eXBl ZGVmIHN0cnVjdCBVcGRhdGVTdG10CiAJV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEgg Y2xhdXNlICovCiB9IFVwZGF0ZVN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CQlMZXQgU3RhdGVtZW50CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYg c3RydWN0IExldFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnRhcmdldDsJCQkv KiB0YXJnZXQgdmFyaWFibGUgKi8KKwlOb2RlCSAgICpzZWxlY3RTdG10OwkJLyogc291cmNlIGV4 cHJlc3Npb24gKi8KKwlpbnQJCQlsb2NhdGlvbjsKK30gTGV0U3RtdDsKKwogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoJCVNlbGVjdCBTdGF0ZW1lbnQKICAqCkBAIC0xNjgyLDYgKzE2OTcs NyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9UU1RFTVBMQVRFLAogCU9CSkVD VF9UWVBFLAogCU9CSkVDVF9VU0VSX01BUFBJTkcsCisJT0JKRUNUX1ZBUklBQkxFLAogCU9CSkVD VF9WSUVXCiB9IE9iamVjdFR5cGU7CiAKQEAgLTI0OTcsNiArMjUxMywyMSBAQCB0eXBlZGVmIHN0 cnVjdCBBbHRlclNlcVN0bXQKIAlib29sCQltaXNzaW5nX29rOwkJLyogc2tpcCBlcnJvciBpZiBh IHJvbGUgaXMgbWlzc2luZz8gKi8KIH0gQWx0ZXJTZXFTdG10OwogCisvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgkJe0NyZWF0ZXxBbHRlcn0gVkFSSUFCTEUgU3RhdGVtZW50CisgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZVNjaGVtYVZhclN0 bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnZhcmlhYmxlOwkJLyogdGhlIHZh cmlhYmxlIHRvIGNyZWF0ZSAqLworCVR5cGVOYW1lICAgKnR5cGVOYW1lOwkJLyogdGhlIHR5cGUg b2YgdmFyaWFibGUgKi8KKwlDb2xsYXRlQ2xhdXNlICpjb2xsQ2xhdXNlOworCU5vZGUJICAgKmRl ZmV4cHI7CQkvKiBkZWZhdWx0IGV4cHJlc3Npb24gKi8KKwlWYXJpYWJsZUVPWEFjdGlvbiBlb3hh Y3Rpb247CS8qIG9uIGNvbW1pdCBhY3Rpb24gKi8KKwlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBk byBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzICovCit9IENyZWF0ZVNjaGVtYVZhclN0bXQ7 CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlDcmVhdGUge0FnZ3JlZ2F0ZXxPcGVy YXRvcnxUeXBlfSBTdGF0ZW1lbnQKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMzgs NyArMzI2OSw4IEBAIHR5cGVkZWYgZW51bSBEaXNjYXJkTW9kZQogCURJU0NBUkRfQUxMLAogCURJ U0NBUkRfUExBTlMsCiAJRElTQ0FSRF9TRVFVRU5DRVMsCi0JRElTQ0FSRF9URU1QCisJRElTQ0FS RF9URU1QLAorCURJU0NBUkRfVkFSSUFCTEVTCiB9IERpc2NhcmRNb2RlOwogCiB0eXBlZGVmIHN0 cnVjdCBEaXNjYXJkU3RtdApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCA3YzJhYmJkMDNhLi4yNTg4 ZjE0NTVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQbGFubmVkU3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAKLQlDbWRUeXBlCQljb21tYW5k VHlwZTsJLyogc2VsZWN0fGluc2VydHx1cGRhdGV8ZGVsZXRlfHV0aWxpdHkgKi8KKwlDbWRUeXBl CQljb21tYW5kVHlwZTsJLyogc2VsZWN0fGxldHxpbnNlcnR8dXBkYXRlfGRlbGV0ZXx1dGlsaXR5 ICovCiAKIAl1aW50NjQJCXF1ZXJ5SWQ7CQkvKiBxdWVyeSBpZGVudGlmaWVyIChjb3BpZWQgZnJv bSBRdWVyeSkgKi8KIApAQCAtODEsNiArODEsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3Rt dAogCSAqLwogCUxpc3QJICAgKnJvb3RSZXN1bHRSZWxhdGlvbnM7CiAKKwkvKiBPaWQgb2YgdGFy Z2V0IHZhcmlhYmxlIGZvciBMRVQgY29tbWFuZCAqLworCU9pZAkJCXJlc3VsdFZhcmlhYmxlOwor CiAJTGlzdAkgICAqc3VicGxhbnM7CQkvKiBQbGFuIHRyZWVzIGZvciBTdWJQbGFuIGV4cHJlc3Np b25zOyBub3RlCiAJCQkJCQkJCSAqIHRoYXQgc29tZSBjb3VsZCBiZSBOVUxMICovCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggMWI0YjBkNzVhZi4uZDNiZGViYWM5OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5v ZGVzLmgKQEAgLTQzLDE1ICs0MywyNiBAQCB0eXBlZGVmIHN0cnVjdCBBbGlhcwogCUxpc3QJICAg KmNvbG5hbWVzOwkJLyogb3B0aW9uYWwgbGlzdCBvZiBjb2x1bW4gYWxpYXNlcyAqLwogfSBBbGlh czsKIAotLyogV2hhdCB0byBkbyBhdCBjb21taXQgdGltZSBmb3IgdGVtcG9yYXJ5IHJlbGF0aW9u cyAqLworLyoKKyAqIFdoYXQgdG8gZG8gYXQgY29tbWl0IHRpbWUgZm9yIHRlbXBvcmFyeSByZWxh dGlvbnMgb3IKKyAqIHBlcnNpc3RlbnQvdGVtcG9yYXJ5IHZhcmlhYmxlLgorICovCiB0eXBlZGVm IGVudW0gT25Db21taXRBY3Rpb24KIHsKIAlPTkNPTU1JVF9OT09QLAkJCQkvKiBObyBPTiBDT01N SVQgY2xhdXNlIChkbyBub3RoaW5nKSAqLwogCU9OQ09NTUlUX1BSRVNFUlZFX1JPV1MsCQkvKiBP TiBDT01NSVQgUFJFU0VSVkUgUk9XUyAoZG8gbm90aGluZykgKi8KIAlPTkNPTU1JVF9ERUxFVEVf Uk9XUywJCS8qIE9OIENPTU1JVCBERUxFVEUgUk9XUyAqLwotCU9OQ09NTUlUX0RST1AJCQkJLyog T04gQ09NTUlUIERST1AgKi8KKwlPTkNPTU1JVF9EUk9QLAkJCQkvKiBPTiBDT01NSVQgRFJPUCAq LwogfSBPbkNvbW1pdEFjdGlvbjsKIAordHlwZWRlZiBlbnVtIFZhcmlhYmxlRU9YQWN0aW9uCit7 CisJVkFSSUFCTEVfRU9YX05PT1AsCQkJLyogRG8gbm90aGluZyAqLworCVZBUklBQkxFX0VPWF9E Uk9QLAkJCS8qIE9OIFRSQU5TQUNUSU9OIEVORCBEUk9QICovCisJVkFSSUFCTEVfRU9YX1JFU0VU LAkJCS8qIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVCAqLworCVZBUklBQkxFX0VPWF9ST0xMQkFD S19SRVNFVAkvKiBPTiBST0xMQkFDSyBSRVNFVCAqLworfSBWYXJpYWJsZUVPWEFjdGlvbjsKKwog LyoKICAqIFJhbmdlVmFyIC0gcmFuZ2UgdmFyaWFibGUsIHVzZWQgaW4gRlJPTSBjbGF1c2VzCiAg KgpAQCAtMjI5LDEzICsyNDAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3QKICAqCQkJCW9mIHRo ZSBgcGFyYW1pZCcgZmllbGQgY29udGFpbiB0aGUgU3ViTGluaydzIHN1YkxpbmtJZCwgYW5kCiAg KgkJCQl0aGUgbG93LW9yZGVyIDE2IGJpdHMgY29udGFpbiB0aGUgY29sdW1uIG51bWJlci4gIChU aGlzIHR5cGUKICAqCQkJCW9mIFBhcmFtIGlzIGFsc28gY29udmVydGVkIHRvIFBBUkFNX0VYRUMg ZHVyaW5nIHBsYW5uaW5nLikKKyAqCisgKgkJUEFSQU1fVkFSSUFCTEU6ICBUaGUgcGFyYW1ldGVy IGlzIGEgYWNjZXNzIHRvIHNjaGVtYSB2YXJpYWJsZQorICoJCQkJcGFyYW1pZCBob2xkcyB2YXJp ZC4KICAqLwogdHlwZWRlZiBlbnVtIFBhcmFtS2luZAogewogCVBBUkFNX0VYVEVSTiwKIAlQQVJB TV9FWEVDLAogCVBBUkFNX1NVQkxJTkssCi0JUEFSQU1fTVVMVElFWFBSCisJUEFSQU1fTVVMVElF WFBSLAorCVBBUkFNX1ZBUklBQkxFCiB9IFBhcmFtS2luZDsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFy YW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaAppbmRleCAyM2RiNDAxNDdiLi5kM2VkM2Y0ZDBmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3 bGlzdC5oCkBAIC0yMzEsNiArMjMxLDcgQEAgUEdfS0VZV09SRCgibGVhZGluZyIsIExFQURJTkcs IFJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsZWFrcHJvb2YiLCBMRUFLUFJPT0YsIFVO UkVTRVJWRURfS0VZV09SRCkKIFBHX0tFWVdPUkQoImxlYXN0IiwgTEVBU1QsIENPTF9OQU1FX0tF WVdPUkQpCiBQR19LRVlXT1JEKCJsZWZ0IiwgTEVGVCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkK K1BHX0tFWVdPUkQoImxldCIsIExFVCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgi bGV2ZWwiLCBMRVZFTCwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgibGlrZSIsIExJ S0UsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJsaW1pdCIsIExJTUlULCBS RVNFUlZFRF9LRVlXT1JEKQpAQCAtNDM0LDYgKzQzNSw4IEBAIFBHX0tFWVdPUkQoInZhbGlkYXRv ciIsIFZBTElEQVRPUiwgVU5SRVNFUlZFRF9LRVlXT1JEKQogUEdfS0VZV09SRCgidmFsdWUiLCBW QUxVRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YWx1ZXMiLCBWQUxVRVMs IENPTF9OQU1FX0tFWVdPUkQpCiBQR19LRVlXT1JEKCJ2YXJjaGFyIiwgVkFSQ0hBUiwgQ09MX05B TUVfS0VZV09SRCkKK1BHX0tFWVdPUkQoInZhcmlhYmxlIiwgVkFSSUFCTEUsIFVOUkVTRVJWRURf S0VZV09SRCkKK1BHX0tFWVdPUkQoInZhcmlhYmxlcyIsIFZBUklBQkxFUywgVU5SRVNFUlZFRF9L RVlXT1JEKQogUEdfS0VZV09SRCgidmFyaWFkaWMiLCBWQVJJQURJQywgUkVTRVJWRURfS0VZV09S RCkKIFBHX0tFWVdPUkQoInZhcnlpbmciLCBWQVJZSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQpCiBQ R19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9w YXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDAyMzA1NDM4MTAuLmY3YzJlNjdmMzMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaApAQCAtNjksNyArNjksOSBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHBy S2luZAogCUVYUFJfS0lORF9UUklHR0VSX1dIRU4sCQkvKiBXSEVOIGNvbmRpdGlvbiBpbiBDUkVB VEUgVFJJR0dFUiAqLwogCUVYUFJfS0lORF9QT0xJQ1ksCQkJLyogVVNJTkcgb3IgV0lUSCBDSEVD SyBleHByIGluIHBvbGljeSAqLwogCUVYUFJfS0lORF9QQVJUSVRJT05fRVhQUkVTU0lPTiwgLyog UEFSVElUSU9OIEJZIGV4cHJlc3Npb24gKi8KLQlFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVAkJLyog cHJvY2VkdXJlIGFyZ3VtZW50IGluIENBTEwgKi8KKwlFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVCwJ CS8qIHByb2NlZHVyZSBhcmd1bWVudCBpbiBDQUxMICovCisJRVhQUl9LSU5EX1ZBUklBQkxFX0RF RkFVTFQsCS8qIGRlZmF1bHQgdmFsdWUgZm9yIHNjaGVtYSB2YXJpYWJsZSAqLworCUVYUFJfS0lO RF9MRVQJCQkJLyogTEVUIGFzc2lnbm1lbnQgKHNob3VsZCBiZSBzYW1lIGxpa2UgVVBEQVRFKSAq LwogfSBQYXJzZUV4cHJLaW5kOwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV90YXJnZXQuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV90YXJnZXQuaAppbmRleCBl YzZlMGMxMDJmLi4xZWUxOTllZDhmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfdGFyZ2V0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3RhcmdldC5oCkBAIC0z Miw2ICszMiwxNiBAQCBleHRlcm4gRXhwciAqdHJhbnNmb3JtQXNzaWduZWRFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgRXhwciAqZXhwciwKIAkJCQkJICBpbnQgYXR0cm5vLAogCQkJCQkgIExpc3Qg KmluZGlyZWN0aW9uLAogCQkJCQkgIGludCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqdHJhbnNm b3JtQXNzaWdubWVudEluZGlyZWN0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkgICBO b2RlICpiYXNlbm9kZSwKKwkJCQkJCQkgICBjb25zdCBjaGFyICp0YXJnZXROYW1lLAorCQkJCQkJ CSAgIGJvb2wgdGFyZ2V0SXNBcnJheSwKKwkJCQkJCQkgICBPaWQgdGFyZ2V0VHlwZUlkLAorCQkJ CQkJCSAgIGludDMyIHRhcmdldFR5cE1vZCwKKwkJCQkJCQkgICBPaWQgdGFyZ2V0Q29sbGF0aW9u LAorCQkJCQkJCSAgIExpc3RDZWxsICppbmRpcmVjdGlvbiwKKwkJCQkJCQkgICBOb2RlICpyaHMs CisJCQkJCQkJICAgaW50IGxvY2F0aW9uKTsKIGV4dGVybiB2b2lkIHVwZGF0ZVRhcmdldExpc3RF bnRyeShQYXJzZVN0YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiAJCQkJCSAgY2hhciAq Y29sbmFtZSwgaW50IGF0dHJubywKIAkJCQkJICBMaXN0ICppbmRpcmVjdGlvbiwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKaW5k ZXggODJmMGYyZTc0MS4uYzQ5YjY1MzU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9k ZXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXN0LmgKQEAgLTk2LDcgKzk2LDggQEAgdHlw ZWRlZiBlbnVtCiAJRGVzdENvcHlPdXQsCQkJCS8qIHJlc3VsdHMgc2VudCB0byBDT1BZIFRPIGNv ZGUgKi8KIAlEZXN0U1FMRnVuY3Rpb24sCQkJLyogcmVzdWx0cyBzZW50IHRvIFNRTC1sYW5ndWFn ZSBmdW5jIG1nciAqLwogCURlc3RUcmFuc2llbnRSZWwsCQkJLyogcmVzdWx0cyBzZW50IHRvIHRy YW5zaWVudCByZWxhdGlvbiAqLwotCURlc3RUdXBsZVF1ZXVlCQkJCS8qIHJlc3VsdHMgc2VudCB0 byB0dXBsZSBxdWV1ZSAqLworCURlc3RUdXBsZVF1ZXVlLAkJCQkvKiByZXN1bHRzIHNlbnQgdG8g dHVwbGUgcXVldWUgKi8KKwlEZXN0VmFyaWFibGUJCQkJLyogcmVzdWx0cyBzZW50cyB0byBzY2hl bWEgdmFyaWFibGUgKi8KIH0gQ29tbWFuZERlc3Q7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNs LmgKaW5kZXggZjRkNGJlOGQwZC4uYzYyNGQ4ZGQwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKQEAgLTE0Nyw5ICsxNDcs MTEgQEAgdHlwZWRlZiBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBBQ0xfQ1JFQVRFX0NIUgkJCSdD JwogI2RlZmluZSBBQ0xfQ1JFQVRFX1RFTVBfQ0hSCQknVCcKICNkZWZpbmUgQUNMX0NPTk5FQ1Rf Q0hSCQkJJ2MnCisjZGVmaW5lIEFDTF9SRUFEX0NIUgkJCSdTJyAvKiAnUicgaXMgb2NjdXBhdGVk IGJ5IG9sZCBSVUxFIHByaXYgKi8KKyNkZWZpbmUgQUNMX1dSSVRFX0NIUgkJCSdXJwogCiAvKiBz dHJpbmcgaG9sZGluZyBhbGwgcHJpdmlsZWdlIGNvZGUgY2hhcnMsIGluIG9yZGVyIGJ5IGJpdG1h c2sgcG9zaXRpb24gKi8KLSNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfU1RSCSJhcndkRHh0WFVDVGMi CisjZGVmaW5lIEFDTF9BTExfUklHSFRTX1NUUgkiYXJ3ZER4dFhVQ1RjU1ciCiAKIC8qCiAgKiBC aXRtYXNrcyBkZWZpbmluZyAiYWxsIHJpZ2h0cyIgZm9yIGVhY2ggc3VwcG9ydGVkIG9iamVjdCB0 eXBlCkBAIC0xNjYsNiArMTY4LDcgQEAgdHlwZWRlZiBBcnJheVR5cGUgQWNsOwogI2RlZmluZSBB Q0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xfVVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNM X0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdI VFNfVFlQRQkJCShBQ0xfVVNBR0UpCisjZGVmaW5lIEFDTF9BTExfUklHSFRTX1ZBUklBQkxFCQko QUNMX1JFQUR8QUNMX1dSSVRFKQogCiAvKiBvcGVyYXRpb24gY29kZXMgZm9yIHBnXypfYWNsbWFz ayAqLwogdHlwZWRlZiBlbnVtCkBAIC0yNTMsNiArMjU2LDggQEAgZXh0ZXJuIEFjbE1vZGUgcGdf Zm9yZWlnbl9zZXJ2ZXJfYWNsbWFzayhPaWQgc3J2X29pZCwgT2lkIHJvbGVpZCwKIAkJCQkJCSAg QWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhvdyk7CiBleHRlcm4gQWNsTW9kZSBwZ190eXBlX2Fj bG1hc2soT2lkIHR5cGVfb2lkLCBPaWQgcm9sZWlkLAogCQkJCUFjbE1vZGUgbWFzaywgQWNsTWFz a0hvdyBob3cpOworZXh0ZXJuIEFjbE1vZGUgcGdfdmFyaWFibGVfYWNsbWFzayhPaWQgdmFyX29p ZCwgT2lkIHJvbGVpZCwKKwkJCQlBY2xNb2RlIG1hc2ssIEFjbE1hc2tIb3cgaG93KTsKIAogZXh0 ZXJuIEFjbFJlc3VsdCBwZ19hdHRyaWJ1dGVfYWNsY2hlY2soT2lkIHRhYmxlX29pZCwgQXR0ck51 bWJlciBhdHRudW0sCiAJCQkJCSAgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKQEAgLTI2OSw2 ICsyNzQsNyBAQCBleHRlcm4gQWNsUmVzdWx0IHBnX3RhYmxlc3BhY2VfYWNsY2hlY2soT2lkIHNw Y19vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7CiBleHRlcm4gQWNsUmVzdWx0IHBnX2Zv cmVpZ25fZGF0YV93cmFwcGVyX2FjbGNoZWNrKE9pZCBmZHdfb2lkLCBPaWQgcm9sZWlkLCBBY2xN b2RlIG1vZGUpOwogZXh0ZXJuIEFjbFJlc3VsdCBwZ19mb3JlaWduX3NlcnZlcl9hY2xjaGVjayhP aWQgc3J2X29pZCwgT2lkIHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIGV4dGVybiBBY2xSZXN1bHQg cGdfdHlwZV9hY2xjaGVjayhPaWQgdHlwZV9vaWQsIE9pZCByb2xlaWQsIEFjbE1vZGUgbW9kZSk7 CitleHRlcm4gQWNsUmVzdWx0IHBnX3ZhcmlhYmxlX2FjbGNoZWNrKE9pZCB0eXBlX29pZCwgT2lk IHJvbGVpZCwgQWNsTW9kZSBtb2RlKTsKIAogZXh0ZXJuIHZvaWQgYWNsY2hlY2tfZXJyb3IoQWNs UmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJICAgY29uc3QgY2hhciAqb2Jq ZWN0bmFtZSk7CkBAIC0zMDUsNiArMzExLDcgQEAgZXh0ZXJuIGJvb2wgcGdfZXh0ZW5zaW9uX293 bmVyY2hlY2soT2lkIGV4dF9vaWQsIE9pZCByb2xlaWQpOwogZXh0ZXJuIGJvb2wgcGdfcHVibGlj YXRpb25fb3duZXJjaGVjayhPaWQgcHViX29pZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBw Z19zdWJzY3JpcHRpb25fb3duZXJjaGVjayhPaWQgc3ViX29pZCwgT2lkIHJvbGVpZCk7CiBleHRl cm4gYm9vbCBwZ19zdGF0aXN0aWNzX29iamVjdF9vd25lcmNoZWNrKE9pZCBzdGF0X29pZCwgT2lk IHJvbGVpZCk7CitleHRlcm4gYm9vbCBwZ192YXJpYWJsZV9vd25lcmNoZWNrKE9pZCBzdGF0X29p ZCwgT2lkIHJvbGVpZCk7CiBleHRlcm4gYm9vbCBoYXNfY3JlYXRlcm9sZV9wcml2aWxlZ2UoT2lk IHJvbGVpZCk7CiBleHRlcm4gYm9vbCBoYXNfYnlwYXNzcmxzX3ByaXZpbGVnZShPaWQgcm9sZWlk KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBlNTVlYTQwMzViLi5jYjNmNGFhY2E5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaApAQCAtMTIyLDYgKzEyMiw3IEBAIGV4dGVybiBib29sIGdldF9mdW5j X2xlYWtwcm9vZihPaWQgZnVuY2lkKTsKIGV4dGVybiBmbG9hdDQgZ2V0X2Z1bmNfY29zdChPaWQg ZnVuY2lkKTsKIGV4dGVybiBmbG9hdDQgZ2V0X2Z1bmNfcm93cyhPaWQgZnVuY2lkKTsKIGV4dGVy biBPaWQJZ2V0X3JlbG5hbWVfcmVsaWQoY29uc3QgY2hhciAqcmVsbmFtZSwgT2lkIHJlbG5hbWVz cGFjZSk7CitleHRlcm4gT2lkIGdldF92YXJuYW1lX3ZhcmlkKGNvbnN0IGNoYXIgKnZhcm5hbWUs IE9pZCB2YXJuYW1lc3BhY2UpOwogZXh0ZXJuIGNoYXIgKmdldF9yZWxfbmFtZShPaWQgcmVsaWQp OwogZXh0ZXJuIE9pZAlnZXRfcmVsX25hbWVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAln ZXRfcmVsX3R5cGVfaWQoT2lkIHJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L3N5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDRmMzMzNTg2 ZWUuLjQ1MzY5OWJlM2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAtMTA3LDkgKzEwNywxMSBAQCBl bnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVRZUEVOQU1FTlNQLAogCVRZUEVPSUQsCiAJVVNFUk1B UFBJTkdPSUQsCi0JVVNFUk1BUFBJTkdVU0VSU0VSVkVSCisJVVNFUk1BUFBJTkdVU0VSU0VSVkVS LAorCVZBUklBQkxFTkFNRU5TUCwKKwlWQVJJQUJMRU9JRAogCi0jZGVmaW5lIFN5c0NhY2hlU2l6 ZSAoVVNFUk1BUFBJTkdVU0VSU0VSVkVSICsgMSkKKyNkZWZpbmUgU3lzQ2FjaGVTaXplIChWQVJJ QUJMRU9JRCArIDEpCiB9OwogCiBleHRlcm4gdm9pZCBJbml0Q2F0YWxvZ0NhY2hlKHZvaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3Fs L3NyYy9wbF9leGVjLmMKaW5kZXggMzgwZDFkZThmNC4uYWM3MWRkN2Q3YSAxMDA2NDQKLS0tIGEv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxf ZXhlYy5jCkBAIC04MDQ5LDYgKzgwNDksNyBAQCBwbHBnc3FsX2NyZWF0ZV9lY29udGV4dChQTHBn U1FMX2V4ZWNzdGF0ZSAqZXN0YXRlKQogCQl7CiAJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAJCQlzaGFyZWRfc2ltcGxlX2V2YWxf ZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCQkJc2hhcmVkX3NpbXBsZV9ldmFsX2Vz dGF0ZS0+ZXNfc2hhcmVkID0gdHJ1ZTsKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKIAkJfQogCQllc3RhdGUtPnNpbXBsZV9ldmFsX2VzdGF0ZSA9IHNoYXJlZF9zaW1wbGVf ZXZhbF9lc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfaGFuZGxlci5j IGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2hhbmRsZXIuYwppbmRleCA3ZDM2NDdhMTJkLi43ZjE4 M2Q0ZjFiIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfaGFuZGxlci5jCisrKyBi L3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9oYW5kbGVyLmMKQEAgLTMzMiw2ICszMzIsNyBAQCBwbHBn c3FsX2lubGluZV9oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBDcmVhdGUgYSBwcml2 YXRlIEVTdGF0ZSBmb3Igc2ltcGxlLWV4cHJlc3Npb24gZXhlY3V0aW9uICovCiAJc2ltcGxlX2V2 YWxfZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCXNpbXBsZV9ldmFsX2VzdGF0ZS0+ ZXNfc2hhcmVkID0gdHJ1ZTsKIAogCS8qIEFuZCBydW4gdGhlIGZ1bmN0aW9uICovCiAJUEdfVFJZ KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2Nfc2FuaXR5Lm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5pdHkub3V0CmluZGV4IDJkMzUy MmI1MDAuLjQ4Mjg2ZjhlMWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv bWlzY19zYW5pdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19zYW5p dHkub3V0CkBAIC0xMDUsNSArMTA1LDcgQEAgT1JERVIgQlkgMSwgMjsKICBwZ19pbmRleCAgICAg ICAgICAgICAgICB8IGluZHByZWQgICAgICAgfCBwZ19ub2RlX3RyZWUKICBwZ19sYXJnZW9iamVj dCAgICAgICAgICB8IGRhdGEgICAgICAgICAgfCBieXRlYQogIHBnX2xhcmdlb2JqZWN0X21ldGFk YXRhIHwgbG9tYWNsICAgICAgICB8IGFjbGl0ZW1bXQotKDExIHJvd3MpCisgcGdfdmFyaWFibGUg ICAgICAgICAgICAgfCB2YXJhY2wgICAgICAgIHwgYWNsaXRlbVtdCisgcGdfdmFyaWFibGUgICAg ICAgICAgICAgfCB2YXJkZWZleHByICAgIHwgcGdfbm9kZV90cmVlCisoMTMgcm93cykKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CmluZGV4IDBhYTUzNTc5MTcu Ljg0OGIwNDFhNGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5 X2NoZWNrLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5v dXQKQEAgLTE2Myw2ICsxNjMsNyBAQCBwZ190c19wYXJzZXJ8dAogcGdfdHNfdGVtcGxhdGV8dAog cGdfdHlwZXx0CiBwZ191c2VyX21hcHBpbmd8dAorcGdfdmFyaWFibGV8dAogcG9pbnRfdGJsfHQK IHBvbHlnb25fdGJsfHQKIHF1YWRfYm94X3RibHx0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3NjaGVtYV92YXJpYWJsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi5kMzhiMGE2ODZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zY2hlbWFfdmFyaWFibGVzLm91dApAQCAtMCwwICsxLDQyOCBAQAorQ1JFQVRFIFZB UklBQkxFIHZhcjEgQVMgaW50ZWdlcjsKK0NSRUFURSBURU1QIFZBUklBQkxFIHZhcjIgQVMgdGV4 dDsKK0RST1AgVkFSSUFCTEUgdmFyMSwgdmFyMjsKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlCitD UkVBVEUgVkFSSUFCTEUgdmFyMSBBUyBudW1lcmljOworQ1JFQVRFIFJPTEUgdmFyX3Rlc3Rfcm9s ZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNU IHZhcjE7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdmFy MQorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0dSQU5UIFJFQUQgT04gVkFSSUFCTEUgdmFyMSBUTyB2 YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCB0byBm YWlsCitMRVQgdmFyMSA9IDEwOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2NoZW1h IHZhcmlhYmxlIHZhcjEKKy0tIHNob3VsZCB0byB3b3JrCitTRUxFQ1QgdmFyMTsKKyB2YXIxIAor LS0tLS0tCisgICAgIAorKDEgcm93KQorCitTRVQgUk9MRSBUTyBERUZBVUxUOworR1JBTlQgV1JJ VEUgT04gVkFSSUFCTEUgdmFyMSBUTyB2YXJfdGVzdF9yb2xlOworU0VUIFJPTEUgVE8gdmFyX3Rl c3Rfcm9sZTsKKy0tIHNob3VsZCB0byB3b3JrCitMRVQgdmFyMSA9IDMzMzsKK1NFVCBST0xFIFRP IERFRkFVTFQ7CitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xl OworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gc2VjdXJlX3ZhcigpCitSRVRVUk5TIGludCBB UyAkJAorICBTRUxFQ1QgcHVibGljLnZhcjE6OmludDsKKyQkIExBTkdVQUdFIHNxbCBTRUNVUklU WSBERUZJTkVSOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKyBzZWN1cmVfdmFyIAorLS0tLS0tLS0t LS0tCisgICAgICAgIDMzMworKDEgcm93KQorCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOwor LS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCBwdWJsaWMudmFyMTsKK0VSUk9SOiAgcGVybWlzc2lv biBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIxCistLSBzaG91bGQgdG8gd29yazsKK1NF TEVDVCBzZWN1cmVfdmFyKCk7Cisgc2VjdXJlX3ZhciAKKy0tLS0tLS0tLS0tLQorICAgICAgICAz MzMKKygxIHJvdykKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKK0VYUExBSU4gKFZFUkJPU0UsIENP U1RTIE9GRikgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGcodikgV0hFUkUg diA9IHZhcjE7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGdW5j dGlvbiBTY2FuIG9uIHBnX2NhdGFsb2cuZ2VuZXJhdGVfc2VyaWVzIGcKKyAgIE91dHB1dDogdgor ICAgRnVuY3Rpb24gQ2FsbDogZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkKKyAgIEZpbHRlcjogKChn LnYpOjpudW1lcmljID0gdmFyMSkKKyg0IHJvd3MpCisKK0NSRUFURSBWSUVXIHNjaGVtYV92YXJf dmlldyBBUyBTRUxFQ1QgdmFyMTsKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3OworIHZh cjEgCistLS0tLS0KKyAgMzMzCisoMSByb3cpCisKK1xjIC0KKy0tIHNob3VsZCB0byB3b3JrIHN0 aWxsLCBidXQgdmFyIHdpbGwgYmUgZW1wdHkKK1NFTEVDVCAqIEZST00gc2NoZW1hX3Zhcl92aWV3 OworIHZhcjEgCistLS0tLS0KKyAgICAgCisoMSByb3cpCisKK0xFVCB2YXIxID0gcGkoKTsKK1NF TEVDVCB2YXIxOworICAgICAgIHZhcjEgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAzLjE0 MTU5MjY1MzU4OTc5CisoMSByb3cpCisKKy0tIHdlIGNhbiBsb29rIG9uIGV4ZWN1dGlvbiBwbGFu CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIExFVCB2YXIxID0gcGkoKTsKKyAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSZXN1 bHQKKyAgIE91dHB1dDogMy4xNDE1OTI2NTM1ODk3OQorKDIgcm93cykKKworLS0gTEVUIGNhbiBi ZSBwcmVwYXJlZAorUFJFUEFSRSB2YXJfcHAoaW50LCBudW1lcmljKSBBUyBMRVQgdmFyMSA9ICQx ICsgJDI7CitFWEVDVVRFIHZhcl9wcCgxMDAsIDEuMjM0NTYpOworU0VMRUNUIHZhcjE7CisgICB2 YXIxICAgIAorLS0tLS0tLS0tLS0KKyAxMDEuMjM0NTYKKygxIHJvdykKKworQ1JFQVRFIFZBUklB QkxFIHZhcjMgQVMgaW50OworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaW5jKGludCkKK1JF VFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVibGljLnZhcjMgPSBDT0FMRVNDRShwdWJs aWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKK1NFTEVDVCBpbmMoMSk7CisgaW5jIAorLS0tLS0KKyAgIDEKKygxIHJvdykKKworU0VM RUNUIGluYygxKTsKKyBpbmMgCistLS0tLQorICAgMgorKDEgcm93KQorCitTRUxFQ1QgaW5jKDEp OworIGluYyAKKy0tLS0tCisgICAzCisoMSByb3cpCisKK1NFTEVDVCBpbmMoMSkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMCk7CisgaW5jIAorLS0tLS0KKyAgIDQKKyAgIDUKKyAgIDYKKyAgIDcK KyAgIDgKKyAgIDkKKyAgMTAKKyAgMTEKKyAgMTIKKyAgMTMKKygxMCByb3dzKQorCitTRVQgUk9M RSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hvdWxkIHRvIGZhaWwKK0xFVCB2YXIzID0gMDsKK0VS Uk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJpYWJsZSB2YXIzCitTRVQgUk9M RSBUTyBERUZBVUxUOworRFJPUCBWSUVXIHNjaGVtYV92YXJfdmlldzsKK0RST1AgVkFSSUFCTEUg dmFyMSBDQVNDQURFOworRFJPUCBWQVJJQUJMRSB2YXIzIENBU0NBREU7CistLSBjb21wb3NpdGUg dmFyaWFibGVzCitDUkVBVEUgVFlQRSBzdl94eXogQVMgKHggaW50LCB5IGludCwgeiBudW1lcmlj KDEwLDIpKTsKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBzdl94eXo7CitDUkVBVEUgVkFSSUFCTEUg djIgQVMgc3ZfeHl6OworXGQgdjEKK1xkIHYyCitMRVQgdjEgPSAoMSwyLDMuMTQpOworTEVUIHYy ID0gKDEwLDIwLDMuMTQqMTApOworLS0gc2hvdWxkIHRvIHdvcmsgdG9vIC0gdGhlcmUgYXJlIHBy ZXBhcmVkIGNhc3RzCitMRVQgdjEgPSAoMSwyLDMuMTQpOworU0VMRUNUIHYxOworICAgICB2MSAg ICAgCistLS0tLS0tLS0tLS0KKyAoMSwyLDMuMTQpCisoMSByb3cpCisKK1NFTEVDVCB2MjsKKyAg ICAgIHYyICAgICAgIAorLS0tLS0tLS0tLS0tLS0tCisgKDEwLDIwLDMxLjQwKQorKDEgcm93KQor CitTRUxFQ1QgKHYxKS4qOworIHggfCB5IHwgIHogICAKKy0tLSstLS0rLS0tLS0tCisgMSB8IDIg fCAzLjE0CisoMSByb3cpCisKK1NFTEVDVCAodjIpLio7CisgeCAgfCB5ICB8ICAgeiAgIAorLS0t LSstLS0tKy0tLS0tLS0KKyAxMCB8IDIwIHwgMzEuNDAKKygxIHJvdykKKworU0VMRUNUIHYxLngg KyB2MS56OworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICA0LjE0CisoMSByb3cpCisKK1NF TEVDVCB2Mi54ICsgdjIuejsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICA0MS40MAorKDEg cm93KQorCistLSBhY2Nlc3MgdG8gY29tcG9zaXRlIGZpZWxkcyBzaG91bGQgYmUgc2FmZSB0b28K Ky0tIHNob3VsZCB0byBmYWlsCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNUIHYy Lng7CitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyaWFibGUgdjIKK1NF VCBST0xFIFRPIERFRkFVTFQ7CitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBWQVJJQUJMRSB2MjsK K0RST1AgUk9MRSB2YXJfdGVzdF9yb2xlOworLS0gc2NhbGFyIHZhcmlhYmxlcyBzaG91bGQgbm90 IGJlIGluIGNvbmZsaWN0IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZBUklBQkxFIHZh cnggQVMgdGV4dDsKK1NFTEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2YXJ4IFdIRVJF IHZhcngucmVsbmFtZSA9ICdwZ19jbGFzcyc7CisgcmVsbmFtZSAgCistLS0tLS0tLS0tCisgcGdf Y2xhc3MKKygxIHJvdykKKworLS0gc2hvdWxkIHRvIGZhaWwKK1NFTEVDVCB2YXJ4Lnh4eDsKK0VS Uk9SOiAgdHlwZSB0ZXh0IGlzIG5vdCBjb21wb3NpdGUKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBk YXRlZCB1bmRlciBSTyB0cmFuc2FjdGlvbgorQkVHSU47CitTRVQgVFJBTlNBQ1RJT04gUkVBRCBP TkxZOworTEVUIHZhcnggPSAnaGVsbG8nOworQ09NTUlUOworU0VMRUNUIHZhcng7CisgdmFyeCAg CistLS0tLS0tCisgaGVsbG8KKygxIHJvdykKKworRFJPUCBWQVJJQUJMRSB2YXJ4OworQ1JFQVRF IFRZUEUgdDEgQVMgKGEgaW50LCBiIG51bWVyaWMsIGMgdGV4dCk7CitDUkVBVEUgVkFSSUFCTEUg djEgQVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7CitTRUxFQ1QgdjE7CisgICAg ICAgICAgICAgdjEgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KDEsMy4xNDE1OTI2NTM1ODk3OSxoZWxsbykKKygxIHJvdykKKworTEVUIHYxLmIgPSAxMC4yMjIy OworU0VMRUNUIHYxOworICAgICAgICB2MSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor ICgxLDEwLjIyMjIsaGVsbG8pCisoMSByb3cpCisKKy0tIHNob3VsZCB0byBmYWlsCitMRVQgdjEu eCA9IDEwOworRVJST1I6ICBjYW5ub3QgYXNzaWduIHRvIGZpZWxkICJ4IiBvZiBjb2x1bW4gIngi IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCBjb2x1bW4gaW4gZGF0YSB0eXBlIHQxCitMSU5FIDE6 IExFVCB2MS54ID0gMTA7CisgICAgICAgICAgICBeCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBU WVBFIHQxOworLS0gYXJyYXlzIGFyZSBzdXBwb3J0ZWQKK0NSRUFURSBWQVJJQUJMRSB2YTEgQVMg bnVtZXJpY1tdOworTEVUIHZhMSA9IEFSUkFZWzEuMSwyLjFdOworTEVUIHZhMVsxXSA9IDEwLjE7 CitTRUxFQ1QgdmExOworICAgIHZhMSAgICAgCistLS0tLS0tLS0tLS0KKyB7MTAuMSwyLjF9Ciso MSByb3cpCisKK0NSRUFURSBUWVBFIHRhMiBBUyAoYSBudW1lcmljLCBiIG51bWVyaWNbXSk7CitD UkVBVEUgVkFSSUFCTEUgdmEyIEFTIHRhMjsKK0xFVCB2YTIgPSAoMTAuMSwgQVJSQVlbMC4wLCAw LjBdKTsKK0xFVCB2YTIuYSA9IDEwLjI7CitTRUxFQ1QgdmEyOworICAgICAgICB2YTIgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEwLjIsInswLjAsMC4wfSIpCisoMSByb3cpCisK K0xFVCB2YTIuYlsxXSA9IDEwLjM7CitTRUxFQ1QgdmEyOworICAgICAgICAgdmEyICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMTAuMiwiezEwLjMsMC4wfSIpCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJMRSB2YTI7CitEUk9QIFRZUEUgdGEyOwor LS0gZGVmYXVsdCB2YWx1ZXMKK0NSRUFURSBWQVJJQUJMRSB2MSBBUyBudW1lcmljIERFRkFVTFQg cGkoKTsKK0xFVCB2MSA9IHYxICogMjsKK1NFTEVDVCB2MTsKKyAgICAgICAgdjEgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tCisgNi4yODMxODUzMDcxNzk1OAorKDEgcm93KQorCitDUkVBVEUg VFlQRSB0MiBBUyAoYSBudW1lcmljLCBiIHRleHQpOworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHQy IERFRkFVTFQgKE5VTEwsICdIZWxsbycpOworTEVUIHB1YmxpYy52Mi5hID0gcGkoKTsKK1NFTEVD VCB2MjsKKyAgICAgICAgICAgIHYyICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICgzLjE0MTU5MjY1MzU4OTc5LEhlbGxvKQorKDEgcm93KQorCistLSBzaG91ZGwgZmFp bCBkdWUgZGVwZW5kZW5jeQorRFJPUCBUWVBFIHQyOworRVJST1I6ICBjYW5ub3QgZHJvcCB0eXBl IHQyIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHNjaGVtYSB2 YXJpYWJsZSB2MiBkZXBlbmRzIG9uIHR5cGUgdDIKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FE RSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCistLSBzaG91bGQgYmUgb2sKK0RS T1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxFIHYyOworLS0gdGVzdHMgb2YgYWx0ZXJzCitD UkVBVEUgU0NIRU1BIHZhcl9zY2hlbWExOworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMjsKK0NS RUFURSBWQVJJQUJMRSB2YXJfc2NoZW1hMS52YXIxIEFTIGludGVnZXI7CitMRVQgdmFyX3NjaGVt YTEudmFyMSA9IDEwMDA7CitTRUxFQ1QgdmFyX3NjaGVtYTEudmFyMTsKKyB2YXIxIAorLS0tLS0t CisgMTAwMAorKDEgcm93KQorCitBTFRFUiBWQVJJQUJMRSB2YXJfc2NoZW1hMS52YXIxIFNFVCBT Q0hFTUEgdmFyX3NjaGVtYTI7CitTRUxFQ1QgdmFyX3NjaGVtYTIudmFyMTsKKyB2YXIxIAorLS0t LS0tCisgMTAwMAorKDEgcm93KQorCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworQUxURVIg VkFSSUFCTEUgdmFyX3NjaGVtYTIudmFyMSBPV05FUiBUTyB2YXJfdGVzdF9yb2xlOworU0VUIFJP TEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKy0tIHNob3VsZCBmYWlsLCBubyBhY2Nlc3MgdG8gc2NoZW1h IHZhcl9zY2hlbWEyLnZhcgorU0VMRUNUIHZhcl9zY2hlbWEyLnZhcjE7CitFUlJPUjogIHBlcm1p c3Npb24gZGVuaWVkIGZvciBzY2hlbWEgdmFyX3NjaGVtYTIKK0RST1AgVkFSSUFCTEUgdmFyX3Nj aGVtYTIudmFyMTsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHNjaGVtYSB2YXJfc2No ZW1hMgorU0VUIFJPTEUgVE8gREVGQVVMVDsKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZh cjEgU0VUIFNDSEVNQSBwdWJsaWM7CitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworU0VMRUNU IHB1YmxpYy52YXIxOworIHZhcjEgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK0FMVEVSIFZB UklBQkxFIHB1YmxpYy52YXIxIFJFTkFNRSBUTyB2YXIxX3JlbmFtZWQ7CitTRUxFQ1QgcHVibGlj LnZhcjFfcmVuYW1lZDsKKyB2YXIxX3JlbmFtZWQgCistLS0tLS0tLS0tLS0tLQorICAgICAgICAg MTAwMAorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHB1YmxpYy52YXIxX3JlbmFtZWQ7CitTRVQg Uk9MRSBUTyBERUZBVUx0OworRFJPUCBST0xFIHZhcl90ZXN0X3JvbGU7CitDUkVBVEUgVkFSSUFC TEUgeHggQVMgdGV4dCBERUZBVUxUICdoZWxsbyc7CitTRUxFQ1QgeHgsIHVwcGVyKHh4KTsKKyAg eHggICB8IHVwcGVyIAorLS0tLS0tLSstLS0tLS0tCisgaGVsbG8gfCBIRUxMTworKDEgcm93KQor CitMRVQgeHggPSAnSGknOworU0VMRUNUIHh4OworIHh4IAorLS0tLQorIEhpCisoMSByb3cpCisK K0RST1AgVkFSSUFCTEUgeHg7CistLSB1c2luZyBzcGVjaWFsIGJlaGF2ZSB0aGF0IGRlcGVuZHMg b24gdHJhbnNhY3Rpb25zCitDUkVBVEUgVkFSSUFCTEUgdDEgQVMgaW50IERFRkFVTFQgLTEgT04g VFJBTlNBQ1RJT04gRU5EIFJFU0VUOworQkVHSU47CisgIFNFTEVDVCB0MTsKKyB0MSAKKy0tLS0K KyAtMQorKDEgcm93KQorCisgIExFVCB0MSA9IDEwMDsKKyAgU0VMRUNUIHQxOworIHQxICAKKy0t LS0tCisgMTAwCisoMSByb3cpCisKK0NPTU1JVDsKK1NFTEVDVCB0MTsKKyB0MSAKKy0tLS0KKyAt MQorKDEgcm93KQorCitEUk9QIFZBUklBQkxFIHQxOworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGlu dCBERUZBVUxUIC0xIE9OIFJPTExCQUNLIFJFU0VUOworQkVHSU47CisgIFNFTEVDVCB0MTsKKyB0 MSAKKy0tLS0KKyAtMQorKDEgcm93KQorCisgIExFVCB0MSA9IDEwMDsKKyAgU0VMRUNUIHQxOwor IHQxICAKKy0tLS0tCisgMTAwCisoMSByb3cpCisKK0NPTU1JVDsKK1NFTEVDVCB0MTsKKyB0MSAg CistLS0tLQorIDEwMAorKDEgcm93KQorCitCRUdJTjsKKyAgTEVUIHQxID0gMTAwMDsKKyAgU0VM RUNUIHQxOworICB0MSAgCistLS0tLS0KKyAxMDAwCisoMSByb3cpCisKK1JPTExCQUNLOworU0VM RUNUIHQxOworIHQxIAorLS0tLQorIC0xCisoMSByb3cpCisKK0RST1AgVkFSSUFCTEUgdDE7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxNmY5NzljOGQ5Li45YmYzNzliODdiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTExMSw3ICsxMTEsNyBAQCB0ZXN0OiBz ZWxlY3Rfdmlld3MgcG9ydGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3Vj IGJpdG1hcG9wcyBjb21ibwogIyBOQjogdGVtcC5zcWwgZG9lcyBhIHJlY29ubmVjdCB3aGljaCB0 cmFuc2llbnRseSB1c2VzIDIgY29ubmVjdGlvbnMsCiAjIHNvIGtlZXAgdGhpcyBwYXJhbGxlbCBn cm91cCB0byBhdCBtb3N0IDE5IHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBsYW5jYWNoZSBs aW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRob3V0 X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3JwaGlz bSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwKK3Rlc3Q6IHBsYW5jYWNo ZSBsaW1pdCBwbHBnc3FsIGNvcHkyIHRlbXAgZG9tYWluIHJhbmdlZnVuY3MgcHJlcGFyZSB3aXRo b3V0X29pZCBjb252ZXJzaW9uIHRydW5jYXRlIGFsdGVyX3RhYmxlIHNlcXVlbmNlIHBvbHltb3Jw aGlzbSByb3d0eXBlcyByZXR1cm5pbmcgbGFyZ2VvYmplY3Qgd2l0aCB4bWwgc2NoZW1hX3Zhcmlh YmxlcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zZXJpYWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9y ZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQppbmRleCA0MjYzMmJlNjc1Li40MmJmNGVjYjNmIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NlcmlhbF9zY2hlZHVsZQpAQCAtMTkxLDMgKzE5MSw0IEBAIHRlc3Q6IHBhcnRpdGlv bl9hZ2dyZWdhdGUKIHRlc3Q6IGV2ZW50X3RyaWdnZXIKIHRlc3Q6IGZhc3RfZGVmYXVsdAogdGVz dDogc3RhdHMKK3Rlc3Q6IHNjaGVtYV92YXJpYWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3NjaGVtYV92YXJpYWJsZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc2No ZW1hX3ZhcmlhYmxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u NDM1MGVmODkzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NjaGVt YV92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsMjkwIEBACitDUkVBVEUgVkFSSUFCTEUgdmFyMSBB UyBpbnRlZ2VyOworQ1JFQVRFIFRFTVAgVkFSSUFCTEUgdmFyMiBBUyB0ZXh0OworCitEUk9QIFZB UklBQkxFIHZhcjEsIHZhcjI7CisKKy0tIGZ1bmN0aW9uYWwgaW50ZXJmYWNlCitDUkVBVEUgVkFS SUFCTEUgdmFyMSBBUyBudW1lcmljOworCitDUkVBVEUgUk9MRSB2YXJfdGVzdF9yb2xlOworCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorU0VMRUNUIHZh cjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFJFQUQgT04gVkFSSUFCTEUgdmFy MSBUTyB2YXJfdGVzdF9yb2xlOworCitTRVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworLS0gc2hv dWxkIHRvIGZhaWwKK0xFVCB2YXIxID0gMTA7CistLSBzaG91bGQgdG8gd29yaworU0VMRUNUIHZh cjE7CisKK1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0dSQU5UIFdSSVRFIE9OIFZBUklBQkxFIHZh cjEgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworLS0g c2hvdWxkIHRvIHdvcmsKK0xFVCB2YXIxID0gMzMzOworCitTRVQgUk9MRSBUTyBERUZBVUxUOwor CitSRVZPS0UgQUxMIE9OIFZBUklBQkxFIHZhcjEgRlJPTSB2YXJfdGVzdF9yb2xlOworCitDUkVB VEUgT1IgUkVQTEFDRSBGVU5DVElPTiBzZWN1cmVfdmFyKCkKK1JFVFVSTlMgaW50IEFTICQkCisg IFNFTEVDVCBwdWJsaWMudmFyMTo6aW50OworJCQgTEFOR1VBR0Ugc3FsIFNFQ1VSSVRZIERFRklO RVI7CisKK1NFTEVDVCBzZWN1cmVfdmFyKCk7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7 CisKKy0tIHNob3VsZCB0byBmYWlsCitTRUxFQ1QgcHVibGljLnZhcjE7CisKKy0tIHNob3VsZCB0 byB3b3JrOworU0VMRUNUIHNlY3VyZV92YXIoKTsKKworU0VUIFJPTEUgVE8gREVGQVVMVDsKKwor RVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLDEwMCkgZyh2KSBXSEVSRSB2ID0gdmFyMTsKKworQ1JFQVRFIFZJRVcgc2NoZW1hX3Zhcl92 aWV3IEFTIFNFTEVDVCB2YXIxOworCitTRUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKwor XGMgLQorCistLSBzaG91bGQgdG8gd29yayBzdGlsbCwgYnV0IHZhciB3aWxsIGJlIGVtcHR5CitT RUxFQ1QgKiBGUk9NIHNjaGVtYV92YXJfdmlldzsKKworTEVUIHZhcjEgPSBwaSgpOworCitTRUxF Q1QgdmFyMTsKKworLS0gd2UgY2FuIGxvb2sgb24gZXhlY3V0aW9uIHBsYW4KK0VYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgTEVUIHZhcjEgPSBwaSgpOworCistLSBMRVQgY2FuIGJlIHByZXBh cmVkCitQUkVQQVJFIHZhcl9wcChpbnQsIG51bWVyaWMpIEFTIExFVCB2YXIxID0gJDEgKyAkMjsK KworRVhFQ1VURSB2YXJfcHAoMTAwLCAxLjIzNDU2KTsKKworU0VMRUNUIHZhcjE7CisKK0NSRUFU RSBWQVJJQUJMRSB2YXIzIEFTIGludDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaW5j KGludCkKK1JFVFVSTlMgaW50IEFTICQkCitCRUdJTgorICBMRVQgcHVibGljLnZhcjMgPSBDT0FM RVNDRShwdWJsaWMudmFyMyArICQxLCAkMSk7CisgIFJFVFVSTiB2YXIzOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIGluYygxKTsKK1NFTEVDVCBpbmMoMSk7CitTRUxFQ1Qg aW5jKDEpOworCitTRUxFQ1QgaW5jKDEpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApOworCitT RVQgUk9MRSBUTyB2YXJfdGVzdF9yb2xlOworCistLSBzaG91bGQgdG8gZmFpbAorTEVUIHZhcjMg PSAwOworCitTRVQgUk9MRSBUTyBERUZBVUxUOworCitEUk9QIFZJRVcgc2NoZW1hX3Zhcl92aWV3 OworCitEUk9QIFZBUklBQkxFIHZhcjEgQ0FTQ0FERTsKK0RST1AgVkFSSUFCTEUgdmFyMyBDQVND QURFOworCistLSBjb21wb3NpdGUgdmFyaWFibGVzCisKK0NSRUFURSBUWVBFIHN2X3h5eiBBUyAo eCBpbnQsIHkgaW50LCB6IG51bWVyaWMoMTAsMikpOworCitDUkVBVEUgVkFSSUFCTEUgdjEgQVMg c3ZfeHl6OworQ1JFQVRFIFZBUklBQkxFIHYyIEFTIHN2X3h5ejsKKworXGQgdjEKK1xkIHYyCisK K0xFVCB2MSA9ICgxLDIsMy4xNCk7CitMRVQgdjIgPSAoMTAsMjAsMy4xNCoxMCk7CisKKy0tIHNo b3VsZCB0byB3b3JrIHRvbyAtIHRoZXJlIGFyZSBwcmVwYXJlZCBjYXN0cworTEVUIHYxID0gKDEs MiwzLjE0KTsKKworU0VMRUNUIHYxOworU0VMRUNUIHYyOworU0VMRUNUICh2MSkuKjsKK1NFTEVD VCAodjIpLio7CisKK1NFTEVDVCB2MS54ICsgdjEuejsKK1NFTEVDVCB2Mi54ICsgdjIuejsKKwor LS0gYWNjZXNzIHRvIGNvbXBvc2l0ZSBmaWVsZHMgc2hvdWxkIGJlIHNhZmUgdG9vCistLSBzaG91 bGQgdG8gZmFpbAorU0VUIFJPTEUgVE8gdmFyX3Rlc3Rfcm9sZTsKKworU0VMRUNUIHYyLng7CisK K1NFVCBST0xFIFRPIERFRkFVTFQ7CisKK0RST1AgVkFSSUFCTEUgdjE7CitEUk9QIFZBUklBQkxF IHYyOworCitEUk9QIFJPTEUgdmFyX3Rlc3Rfcm9sZTsKKworLS0gc2NhbGFyIHZhcmlhYmxlcyBz aG91bGQgbm90IGJlIGluIGNvbmZsaWN0IHdpdGggcXVhbGlmaWVkIGNvbHVtbgorQ1JFQVRFIFZB UklBQkxFIHZhcnggQVMgdGV4dDsKK1NFTEVDVCB2YXJ4LnJlbG5hbWUgRlJPTSBwZ19jbGFzcyB2 YXJ4IFdIRVJFIHZhcngucmVsbmFtZSA9ICdwZ19jbGFzcyc7CisKKy0tIHNob3VsZCB0byBmYWls CitTRUxFQ1QgdmFyeC54eHg7CisKKy0tIHZhcmlhYmxlcyBjYW4gYmUgdXBkYXRlZCB1bmRlciBS TyB0cmFuc2FjdGlvbgorCitCRUdJTjsKK1NFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFk7CitMRVQg dmFyeCA9ICdoZWxsbyc7CitDT01NSVQ7CisKK1NFTEVDVCB2YXJ4OworCitEUk9QIFZBUklBQkxF IHZhcng7CisKK0NSRUFURSBUWVBFIHQxIEFTIChhIGludCwgYiBudW1lcmljLCBjIHRleHQpOwor CitDUkVBVEUgVkFSSUFCTEUgdjEgQVMgdDE7CitMRVQgdjEgPSAoMSwgcGkoKSwgJ2hlbGxvJyk7 CitTRUxFQ1QgdjE7CitMRVQgdjEuYiA9IDEwLjIyMjI7CitTRUxFQ1QgdjE7CisKKy0tIHNob3Vs ZCB0byBmYWlsCitMRVQgdjEueCA9IDEwOworCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBUWVBF IHQxOworCistLSBhcnJheXMgYXJlIHN1cHBvcnRlZAorQ1JFQVRFIFZBUklBQkxFIHZhMSBBUyBu dW1lcmljW107CitMRVQgdmExID0gQVJSQVlbMS4xLDIuMV07CitMRVQgdmExWzFdID0gMTAuMTsK K1NFTEVDVCB2YTE7CisKK0NSRUFURSBUWVBFIHRhMiBBUyAoYSBudW1lcmljLCBiIG51bWVyaWNb XSk7CitDUkVBVEUgVkFSSUFCTEUgdmEyIEFTIHRhMjsKK0xFVCB2YTIgPSAoMTAuMSwgQVJSQVlb MC4wLCAwLjBdKTsKK0xFVCB2YTIuYSA9IDEwLjI7CitTRUxFQ1QgdmEyOworTEVUIHZhMi5iWzFd ID0gMTAuMzsKK1NFTEVDVCB2YTI7CisKK0RST1AgVkFSSUFCTEUgdmExOworRFJPUCBWQVJJQUJM RSB2YTI7CitEUk9QIFRZUEUgdGEyOworCistLSBkZWZhdWx0IHZhbHVlcworQ1JFQVRFIFZBUklB QkxFIHYxIEFTIG51bWVyaWMgREVGQVVMVCBwaSgpOworTEVUIHYxID0gdjEgKiAyOworU0VMRUNU IHYxOworCitDUkVBVEUgVFlQRSB0MiBBUyAoYSBudW1lcmljLCBiIHRleHQpOworQ1JFQVRFIFZB UklBQkxFIHYyIEFTIHQyIERFRkFVTFQgKE5VTEwsICdIZWxsbycpOworTEVUIHB1YmxpYy52Mi5h ID0gcGkoKTsKK1NFTEVDVCB2MjsKKworLS0gc2hvdWRsIGZhaWwgZHVlIGRlcGVuZGVuY3kKK0RS T1AgVFlQRSB0MjsKKworLS0gc2hvdWxkIGJlIG9rCitEUk9QIFZBUklBQkxFIHYxOworRFJPUCBW QVJJQUJMRSB2MjsKKworLS0gdGVzdHMgb2YgYWx0ZXJzCitDUkVBVEUgU0NIRU1BIHZhcl9zY2hl bWExOworQ1JFQVRFIFNDSEVNQSB2YXJfc2NoZW1hMjsKKworQ1JFQVRFIFZBUklBQkxFIHZhcl9z Y2hlbWExLnZhcjEgQVMgaW50ZWdlcjsKK0xFVCB2YXJfc2NoZW1hMS52YXIxID0gMTAwMDsKK1NF TEVDVCB2YXJfc2NoZW1hMS52YXIxOworQUxURVIgVkFSSUFCTEUgdmFyX3NjaGVtYTEudmFyMSBT RVQgU0NIRU1BIHZhcl9zY2hlbWEyOworU0VMRUNUIHZhcl9zY2hlbWEyLnZhcjE7CisKK0NSRUFU RSBST0xFIHZhcl90ZXN0X3JvbGU7CisKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEg T1dORVIgVE8gdmFyX3Rlc3Rfcm9sZTsKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CisKKy0t IHNob3VsZCBmYWlsLCBubyBhY2Nlc3MgdG8gc2NoZW1hIHZhcl9zY2hlbWEyLnZhcgorU0VMRUNU IHZhcl9zY2hlbWEyLnZhcjE7CitEUk9QIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjE7CisKK1NF VCBST0xFIFRPIERFRkFVTFQ7CisKK0FMVEVSIFZBUklBQkxFIHZhcl9zY2hlbWEyLnZhcjEgU0VU IFNDSEVNQSBwdWJsaWM7CisKK1NFVCBST0xFIFRPIHZhcl90ZXN0X3JvbGU7CitTRUxFQ1QgcHVi bGljLnZhcjE7CisKK0FMVEVSIFZBUklBQkxFIHB1YmxpYy52YXIxIFJFTkFNRSBUTyB2YXIxX3Jl bmFtZWQ7CisKK1NFTEVDVCBwdWJsaWMudmFyMV9yZW5hbWVkOworCitEUk9QIFZBUklBQkxFIHB1 YmxpYy52YXIxX3JlbmFtZWQ7CisKK1NFVCBST0xFIFRPIERFRkFVTHQ7CisKK0RST1AgUk9MRSB2 YXJfdGVzdF9yb2xlOworCitDUkVBVEUgVkFSSUFCTEUgeHggQVMgdGV4dCBERUZBVUxUICdoZWxs byc7CisKK1NFTEVDVCB4eCwgdXBwZXIoeHgpOworCitMRVQgeHggPSAnSGknOworCitTRUxFQ1Qg eHg7CisKK0RST1AgVkFSSUFCTEUgeHg7CisKKy0tIHVzaW5nIHNwZWNpYWwgYmVoYXZlIHRoYXQg ZGVwZW5kcyBvbiB0cmFuc2FjdGlvbnMKKworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGludCBERUZB VUxUIC0xIE9OIFRSQU5TQUNUSU9OIEVORCBSRVNFVDsKKworQkVHSU47CisgIFNFTEVDVCB0MTsK KyAgTEVUIHQxID0gMTAwOworICBTRUxFQ1QgdDE7CitDT01NSVQ7CisKK1NFTEVDVCB0MTsKKwor RFJPUCBWQVJJQUJMRSB0MTsKKworQ1JFQVRFIFZBUklBQkxFIHQxIEFTIGludCBERUZBVUxUIC0x IE9OIFJPTExCQUNLIFJFU0VUOworCitCRUdJTjsKKyAgU0VMRUNUIHQxOworICBMRVQgdDEgPSAx MDA7CisgIFNFTEVDVCB0MTsKK0NPTU1JVDsKKworU0VMRUNUIHQxOworCitCRUdJTjsKKyAgTEVU IHQxID0gMTAwMDsKKyAgU0VMRUNUIHQxOworUk9MTEJBQ0s7CisKK1NFTEVDVCB0MTsKKworRFJP UCBWQVJJQUJMRSB0MTsK --0000000000001512a605752fb562--