Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vpA6l-002N1r-0b for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Feb 2026 19:06:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vpA6j-008SRI-2u for pgsql-hackers@arkaria.postgresql.org; Sun, 08 Feb 2026 19:06:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vpA6j-008SRA-1P for pgsql-hackers@lists.postgresql.org; Sun, 08 Feb 2026 19:06:09 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vpA6g-00000001hg2-1KoX for pgsql-hackers@lists.postgresql.org; Sun, 08 Feb 2026 19:06:08 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-65939428896so5447404a12.1 for ; Sun, 08 Feb 2026 11:06:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1770577559; x=1771182359; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:message-id:date:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=r+/iMUqp/1mxuvApv6XfFhMyh+b7lbYv0srF4sd0g8A=; b=GwdT/vwiGMWZ19FG7piRjTnPiJ0qgdyA4f3h1dN6Y17xb8PTJn2sgddKT5zIFihIdS 1OvQAaR+GYu7GOJqz/Iqn/ySW0ZMeDdPyez6xCsI/A4x4lg+xmXzV+nY4kzIwYWyz7Cf 2hivos08V0dLN9Fz+m4zK8luD7wCcYgq18Dxi7gCROEWK2mcaufkYpURKIWCq4xWkim+ jGWKyECE2KiTYtW1doz9GYosz0p5kt+mK1NNmEveCEOKRAyADzBrPBMojEtG8XUKndKx NALz66/GVv9esA3rPOSp7F8oc4YwGc9ycx8+ZcnQuTxPrBigNGpgI6wcSr35G/ejbyDk 82Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770577559; x=1771182359; h=in-reply-to:references:from:to:subject:message-id:date:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=r+/iMUqp/1mxuvApv6XfFhMyh+b7lbYv0srF4sd0g8A=; b=RN9Uq/882zSo+zJ7tHwkRLSn/AHYgHoKWq9NOBVYi/v6UWYIXtARPzrXnB0kFED5bM QOvZf2X0tuQUQ51k0bJLDX7lBLxkPw/clDaV+UB5Q2LrjUZynyd6chVZTV+NWt7y50Ya iSLFtkdblEj1XD1V4r4eyFuBI3ugrZ3hE7Gk5KTdLafbiA8p7Equa81zHFLW0uB6RcJQ O0PQ1xCxYTLoLsqw8O4yeK42hgezC/hAxxq7zYCBk+4zWVtzo8m1d1xULTSbwF4tNzUS VdiXdzPQvZKsYYuFPdihrtrXczJmG0WOTDHAkya99djMrRT+5hq/4Owrf5NT2SqXUObp gc4g== X-Gm-Message-State: AOJu0Yw45dZd7dEj5IsxTEzjMamMXpURZEo4x2YYqQb8MMDTdZxfdPM5 BZcyrL/xEe/lDhtJsT0tQ4G9oPRSM8d8PJeG0Or9ROEFB1nIuzYkobT8Yw0fJVUMKKe6ngkCW11 oMURI X-Gm-Gg: AZuq6aJ2YCQSTiIYNiJFaTzvz2QCeiBmRrj6vnWWXCpGAm7IM/BnVTtSqzxA3gjY2cR zlE9pogSaL/yd8tI76M0avIumUo1COS7vqArOUWIKJHVpadTXB1Poc0daXyGxSaFY9j1YXxU8rd kBK9YFvGxsnfDVI+AxToyFjvAiCwiGuiv5PL8mSJ92Z3ZNkO3fqE++wxKLSH2pmUPkIxFzXTeKk qzs9jZ0D0QK3PfC0mOp+gZ+8Iik4WRTWg5XJ8m5UqPY1UTgBXrKciAHI/7wPZBWJQfW7ZLTGO56 zO2BgK1cIqB5kwFUh7Bh7/OCTAz8TX7KAE1qMjTb3ozTXm3LCC0Clt6Pr/qOmxpUxbDZm/hUT21 mBeEJwJkcmbCktTGathRCSo1lrkFHDdeJfyDfi2USM8tlBYnQPNXj+irbV7gYkOv5oZW3uaz91L Ks/323Qf07SqaPtXgt5PNT7QMerNQRob0oYKs= X-Received: by 2002:a05:6402:5216:b0:659:4853:5382 with SMTP id 4fb4d7f45d1cf-6598419d355mr4289440a12.32.1770577558600; Sun, 08 Feb 2026 11:05:58 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-65983eaa44dsm2237463a12.7.2026.02.08.11.05.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 08 Feb 2026 11:05:57 -0800 (PST) Content-Type: multipart/mixed; boundary=92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263 Mime-Version: 1.0 Date: Sun, 08 Feb 2026 20:05:57 +0100 Message-Id: Subject: Re: Don't use the deprecated and insecure PQcancel in our frontend tools anymore To: "PostgreSQL Hackers" , "Alvaro Herrera" , "Jacob Champion" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263 Content-Type: multipart/alternative; boundary=30963d97c5d3e767d2369d9653599b7088cb50346e252a2ba27d0363a7fb --30963d97c5d3e767d2369d9653599b7088cb50346e252a2ba27d0363a7fb Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sun Dec 14, 2025 at 3:40 PM CET, Jelte Fennema-Nio wrote: > A bunch of frontend tools, including psql, still used PQcancel to send > cancel requests to the server. That function is insecure, because it > does not use encryption to send the cancel request. This starts using > the new cancellation APIs (introduced in 61461a300) for all these > frontend tools.=20 Small update. Split up the fe_utils and pg_dump changes into separate commits, to make patches easier to review. Also use non-blocking writes to the self-pipe from the signal handler to avoid potential deadlocks (extremely unlikely for such blocks to occur, but better safe than sorry). --30963d97c5d3e767d2369d9653599b7088cb50346e252a2ba27d0363a7fb-- --92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0001-Move-Windows-pthread-compatibility-functions-to-s.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0001-Move-Windows-pthread-compatibility-functions-to-s.patch RnJvbSBiMGU0Y2RkZjY1ZTgxZmEwZmI4YjliZjY5ZDk0NDU5NTk4YTIxNGZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDE4OjE4OjEzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MyAxLzNdIE1vdmUgV2luZG93cyBwdGhyZWFkIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zIHRvCiBz cmMvcG9ydAoKVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiBhIGZvbGxvdy11cCBjb21taXQgd2hp Y2ggd2lsbCBzdGFydCB0byB1c2UKdGhlc2UgZnVuY3Rpb25zIGluIG1vcmUgcGxhY2VzIHRoYW4g anVzdCBsaWJwcS4KLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgIHwgMSAtCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZCAgICAgICAgICAgICAg IHwgMiArLQogc3JjL3BvcnQvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDEgKwogc3JjL3tpbnRlcmZhY2VzL2xpYnBxID0+IHBvcnR9L3B0aHJlYWQtd2luMzIuYyB8IDQg KystLQogNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBy ZW5hbWUgc3JjL3tpbnRlcmZhY2VzL2xpYnBxID0+IHBvcnR9L3B0aHJlYWQtd2luMzIuYyAoOTQl KQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4MTRlNjRh OTY3ZS4uOThlNzkzODQ3ZjkgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1 cmUuYWMKQEAgLTE5MzIsNiArMTkzMiw3IEBAIGlmIHRlc3QgIiRQT1JUTkFNRSIgPSAid2luMzIi OyB0aGVuCiAgIEFDX0xJQk9CSihkaXJtb2QpCiAgIEFDX0xJQk9CSihraWxsKQogICBBQ19MSUJP Qkoob3BlbikKKyAgQUNfTElCT0JKKHB0aHJlYWQtd2luMzIpCiAgIEFDX0xJQk9CSihzeXN0ZW0p CiAgIEFDX0xJQk9CSih3aW4zMmNvbW1vbikKICAgQUNfTElCT0JKKHdpbjMyZGxvcGVuKQpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9NYWtlZmlsZQppbmRleCBiZjRiYWE5MjkxNy4uZjIxMTk2NTY5NTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L01ha2VmaWxlCkBAIC03NSw3ICs3NSw2IEBAIGVuZGlmCiAKIGlmZXEgKCQoUE9SVE5BTUUpLCB3 aW4zMikKIE9CSlMgKz0gXAotCXB0aHJlYWQtd2luMzIubyBcCiAJd2luMzIubwogZW5kaWYKIApk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9tZXNvbi5idWlsZAppbmRleCBjNWVjZDljM2E4Ny4uOWM3OGYwNDhlYzAgMTAw NjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRl cmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCkBAIC0yMCw3ICsyMCw3IEBAIGxpYnBxX3NvdXJjZXMg PSBmaWxlcygKIGxpYnBxX3NvX3NvdXJjZXMgPSBbXSAjIGZvciBzaGFyZWQgbGliLCBpbiBhZGRp dGlvbiB0byB0aGUgYWJvdmUKIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCi0gIGxpYnBx X3NvdXJjZXMgKz0gZmlsZXMoJ3B0aHJlYWQtd2luMzIuYycsICd3aW4zMi5jJykKKyAgbGlicHFf c291cmNlcyArPSBmaWxlcygnd2luMzIuYycpCiAgIGxpYnBxX3NvX3NvdXJjZXMgKz0gcmNfbGli X2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCiAgICAgJy0tTkFNRScsICds aWJwcScsCiAgICAgJy0tRklMRURFU0MnLCAnUG9zdGdyZVNRTCBBY2Nlc3MgTGlicmFyeScsXSkK ZGlmZiAtLWdpdCBhL3NyYy9wb3J0L21lc29uLmJ1aWxkIGIvc3JjL3BvcnQvbWVzb24uYnVpbGQK aW5kZXggZDdkNGU3MDViODkuLmQ3NWY5ZjkxYjkyIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9tZXNv bi5idWlsZAorKysgYi9zcmMvcG9ydC9tZXNvbi5idWlsZApAQCAtMzEsNiArMzEsNyBAQCBpZiBo b3N0X3N5c3RlbSA9PSAnd2luZG93cycKICAgICAnZGlybW9kLmMnLAogICAgICdraWxsLmMnLAog ICAgICdvcGVuLmMnLAorICAgICdwdGhyZWFkLXdpbjMyLmMnLAogICAgICdzeXN0ZW0uYycsCiAg ICAgJ3dpbjMyY29tbW9uLmMnLAogICAgICd3aW4zMmRsb3Blbi5jJywKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL3B0aHJlYWQtd2luMzIuYyBiL3NyYy9wb3J0L3B0aHJlYWQtd2lu MzIuYwpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBzcmMvaW50ZXJmYWNlcy9saWJw cS9wdGhyZWFkLXdpbjMyLmMKcmVuYW1lIHRvIHNyYy9wb3J0L3B0aHJlYWQtd2luMzIuYwppbmRl eCBjZjY2Mjg0ZjAwNy4uNDhkNjhiNjkzYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL3B0aHJlYWQtd2luMzIuYworKysgYi9zcmMvcG9ydC9wdGhyZWFkLXdpbjMyLmMKQEAgLTUs MTIgKzUsMTIgQEAKICoKICogQ29weXJpZ2h0IChjKSAyMDA0LTIwMjYsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCiAqIElERU5USUZJQ0FUSU9OCi0qCXNyYy9pbnRlcmZhY2Vz L2xpYnBxL3B0aHJlYWQtd2luMzIuYworKglzcmMvcG9ydC9wdGhyZWFkLXdpbjMyLmMKICoKICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAqLwogCi0jaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKyNpbmNsdWRl ICJjLmgiCiAKICNpbmNsdWRlICJwdGhyZWFkLXdpbjMyLmgiCiAKCmJhc2UtY29tbWl0OiAxZWIw OWVkNjNhOGQ4MDYzZGM2YmI3NWM4ZjMxZWM1NjRiZjM1MjUwCi0tIAoyLjUyLjAKCg== --92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0002-Don-t-use-deprecated-and-insecure-PQcancel-psql-a.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0002-Don-t-use-deprecated-and-insecure-PQcancel-psql-a.patch RnJvbSA0MDE3Mzc4YmVlZDcyMDIxY2NiOTIxNjVjYWUyMjY1M2VjYWMyN2ZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTYXQsIDEzIERlYyAyMDI1IDEzOjA1OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MyAyLzNdIERvbid0IHVzZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZSBQUWNhbmNlbCBwc3FsIGFu ZAogb3RoZXIgdG9vbHMgYW55bW9yZQoKQWxsIG9mIG91ciBmcm9udGVuZCB0b29scyB0aGF0IHVz ZWQgb3VyIGZlX3V0aWxzIHRvIGNhbmNlbCBxdWVyaWVzLAppbmNsdWRpbmcgcHNxbCwgc3RpbGwg dXNlZCBQUWNhbmNlbCB0byBzZW5kIGNhbmNlbCByZXF1ZXN0cyB0byB0aGUKc2VydmVyLiBUaGF0 IGZ1bmN0aW9uIGlzIGluc2VjdXJlLCBiZWNhdXNlIGl0IGRvZXMgbm90IHVzZSBlbmNyeXB0aW9u IHRvCnNlbmQgdGhlIGNhbmNlbCByZXF1ZXN0LiBUaGlzIHN0YXJ0cyB1c2luZyB0aGUgbmV3IGNh bmNlbGxhdGlvbiBBUElzCihpbnRyb2R1Y2VkIGluIDYxNDYxYTMwMCkgZm9yIGFsbCB0aGVzZSBm cm9udGVuZCB0b29scy4gVGhlc2UgQVBJcyB1c2UKdGhlIHNhbWUgZW5jcnlwdGlvbiBzZXR0aW5n cyBhcyB0aGUgY29ubmVjdGlvbiB0aGF0J3MgYmVpbmcgY2FuY2VsbGVkLgpTaW5jZSB0aGVzZSBB UElzIGFyZSBub3Qgc2lnbmFsLXNhZmUgdGhpcyByZXF1aXJlZCBhIHJlZmFjdG9yIHRvIG5vdApz ZW5kIHRoZSBjYW5jZWwgcmVxdWVzdCBpbiBhIHNpZ25hbCBoYW5kbGVyIGFueW1vcmUsIGJ1dCBp bnN0ZWFkIHVzaW5nIGEKZGVkaWNhdGVkIHRocmVhZC4gU2ltaWxhciBsb2dpYyB3YXMgYWxyZWFk eSB1c2VkIGZvciBXaW5kb3dzIGFueXdheSwgc28KdGhpcyBhbHNvIGhhcyB0aGUgYmVuZWZpdCB0 aGF0IGl0IG1ha2VzIHRoZSBjYW5jZWwgbG9naWMgbW9yZSB1bmlmb3JtCmFjcm9zcyBvdXIgc3Vw cG9ydGVkIHBsYXRmb3Jtcy4KClRoZSBjYWxscyB0byBQUWNhbmNlbCBpbiBwZ19kdW1wIGFyZSBz dGlsbCBrZXB0IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4KYSBsYXRlciBjb21taXQuIFRoZSByZWFz b24gZm9yIHRoYXQgaXMgdGhhdCB0aGF0IGNvZGUgZG9lcyBub3QgdXNlCnRoZSBoZWxwZXJzIGZy b20gZmVfdXRpbHMgdG8gY2FuY2VsIHF1ZXJpZXMsIGFuZCBpbnN0ZWFkIGltcGxlbWVudHMgaXRz Cm93biBsb2dpYy4KLS0tCiBtZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9mZV91 dGlscy9NYWtlZmlsZSB8ICAgMiArLQogc3JjL2ZlX3V0aWxzL2NhbmNlbC5jIHwgMzE3ICsrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAy MDIgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21lc29uLmJ1 aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggZGY5MDdiNjJkYTMuLmIxNGJjMTU1YTMxIDEwMDY0NAot LS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMzM4MSw3ICszMzgxLDcgQEAg ZnJvbnRlbmRfY29kZSA9IGRlY2xhcmVfZGVwZW5kZW5jeSgKICAgaW5jbHVkZV9kaXJlY3Rvcmll czogW3Bvc3RncmVzX2luY10sCiAgIGxpbmtfd2l0aDogW2ZlX3V0aWxzLCBjb21tb25fc3RhdGlj LCBwZ3BvcnRfc3RhdGljXSwKICAgc291cmNlczogZ2VuZXJhdGVkX2hlYWRlcnNfc3RhbXAsCi0g IGRlcGVuZGVuY2llczogW29zX2RlcHMsIGxpYmludGxdLAorICBkZXBlbmRlbmNpZXM6IFtvc19k ZXBzLCBsaWJpbnRsLCB0aHJlYWRfZGVwXSwKICkKIAogYmFja2VuZF9ib3RoX2RlcHMgKz0gWwpk aWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL01ha2VmaWxlIGIvc3JjL2ZlX3V0aWxzL01ha2VmaWxl CmluZGV4IGNiZmJmOTNhYzY5Li44MDlhYjIxY2MwYyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxz L01ha2VmaWxlCisrKyBiL3NyYy9mZV91dGlscy9NYWtlZmlsZQpAQCAtMTcsNyArMTcsNyBAQCBz dWJkaXIgPSBzcmMvZmVfdXRpbHMKIHRvcF9idWlsZGRpciA9IC4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKLW92ZXJyaWRlIENQUEZMQUdTIDo9IC1E RlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZMQUdT IDo9IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYy9wb3J0 ICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCiAJYXJjaGl2ZS5vIFwKZGlmZiAtLWdpdCBhL3NyYy9m ZV91dGlscy9jYW5jZWwuYyBiL3NyYy9mZV91dGlscy9jYW5jZWwuYwppbmRleCBlNmI3NTQzOWY1 Ni4uNGM1OTMzZTI1MTMgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9jYW5jZWwuYworKysgYi9z cmMvZmVfdXRpbHMvY2FuY2VsLmMKQEAgLTE2LDkgKzE2LDIxIEBACiAKICNpbmNsdWRlICJwb3N0 Z3Jlc19mZS5oIgogCisjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAK KyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKKyNpZmRlZiBXSU4z MgorI2luY2x1ZGUgInB0aHJlYWQtd2luMzIuaCIKKyNlbHNlCisjaW5jbHVkZSA8cHRocmVhZC5o PgorI2VuZGlmCisKICNpbmNsdWRlICJjb21tb24vY29ubmVjdC5oIgorI2luY2x1ZGUgImNvbW1v bi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY2FuY2VsLmgiCiAjaW5jbHVkZSAiZmVf dXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKQEAgLTM2LDExICs0OCwyMiBAQAogCQkodm9pZCkgcmNf OyBcCiAJfSB3aGlsZSAoMCkKIAorCisvKgorICogQ2FuY2VsIGNvbm5lY3Rpb24gdGhhdCBzaG91 bGQgYmUgdXNlZCB0byBzZW5kIGNhbmNlbCByZXF1ZXN0cy4KKyAqLworc3RhdGljIFBHY2FuY2Vs Q29ubiAqY2FuY2VsQ29ubiA9IE5VTEw7CisKIC8qCi0gKiBDb250YWlucyBhbGwgdGhlIGluZm9y bWF0aW9uIG5lZWRlZCB0byBjYW5jZWwgYSBxdWVyeSBpc3N1ZWQgZnJvbQotICogYSBkYXRhYmFz ZSBjb25uZWN0aW9uIHRvIHRoZSBiYWNrZW5kLgorICogR2VuZXJhdGlvbiBjb3VudGVyIGZvciBj YW5jZWxDb25uLiBJbmNyZW1lbnRlZCBlYWNoIHRpbWUgY2FuY2VsQ29ubiBpcworICogY2hhbmdl ZC4gVXNlZCB0byBkZXRlY3QgaWYgY2FuY2VsQ29ubiB3YXMgcmVwbGFjZWQgd2hpbGUgd2Ugd2Vy ZSB1c2luZyBpdC4KICAqLwotc3RhdGljIFBHY2FuY2VsICp2b2xhdGlsZSBjYW5jZWxDb25uID0g TlVMTDsKK3N0YXRpYyB1aW50NjQgY2FuY2VsQ29ubkdlbmVyYXRpb24gPSAwOworCisvKgorICog TXV0ZXggcHJvdGVjdGluZyBjYW5jZWxDb25uIGFuZCBjYW5jZWxDb25uR2VuZXJhdGlvbi4KKyAq Lworc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBjYW5jZWxDb25uTG9jayA9IFBUSFJFQURfTVVURVhf SU5JVElBTElaRVI7CiAKIC8qCiAgKiBQcmVkZXRlcm1pbmVkIGxvY2FsaXplZCBlcnJvciBzdHJp bmdzIC0tLSBuZWVkZWQgdG8gYXZvaWQgdHJ5aW5nCkBAIC01OCwxODYgKzgxLDI0NiBAQCBzdGF0 aWMgY29uc3QgY2hhciAqY2FuY2VsX25vdF9zZW50X21zZyA9IE5VTEw7CiAgKi8KIHZvbGF0aWxl IHNpZ19hdG9taWNfdCBDYW5jZWxSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotI2lmZGVmIFdJTjMyCi1z dGF0aWMgQ1JJVElDQUxfU0VDVElPTiBjYW5jZWxDb25uTG9jazsKLSNlbmRpZgotCiAvKgogICog QWRkaXRpb25hbCBjYWxsYmFjayBmb3IgY2FuY2VsbGF0aW9ucy4KICAqLwogc3RhdGljIHZvaWQg KCpjYW5jZWxfY2FsbGJhY2spICh2b2lkKSA9IE5VTEw7CiAKKyNpZm5kZWYgV0lOMzIKKy8qCisg KiBPbiBVbml4LCB3ZSB1c2UgdGhlIHNlbGYtcGlwZSB0cmljayB0byB3YWtlIHVwIHRoZSBjYW5j ZWwgdGhyZWFkIGZyb20gdGhlCisgKiBzaWduYWwgaGFuZGxlci4KKyAqLworc3RhdGljIGludAlj YW5jZWxfcGlwZVsyXSA9IHstMSwgLTF9Oworc3RhdGljIHB0aHJlYWRfdCBjYW5jZWxfdGhyZWFk OworI2VuZGlmCisKIAogLyoKLSAqIFNldENhbmNlbENvbm4KLSAqCi0gKiBTZXQgY2FuY2VsQ29u biB0byBwb2ludCB0byB0aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9uLgorICogU2VuZCBh IGNhbmNlbCByZXF1ZXN0IHRvIHRoZSBjb25uZWN0aW9uLCBpZiBvbmUgaXMgc2V0LgogICovCi12 b2lkCi1TZXRDYW5jZWxDb25uKFBHY29ubiAqY29ubikKK3N0YXRpYyB2b2lkCitTZW5kQ2FuY2Vs UmVxdWVzdCh2b2lkKQogewotCVBHY2FuY2VsICAgKm9sZENhbmNlbENvbm47CisJUEdjYW5jZWxD b25uICpjYzsKKwl1aW50NjQJCWdlbmVyYXRpb247CisJYm9vbAkJcHV0Q29ubmVjdGlvbkJhY2sg PSBmYWxzZTsKKworCS8qCisJICogV2UgdGFrZSB0aGUgY2FuY2VsIGNvbm5lY3Rpb24gb3V0IG9m IHRoZSBnbG9iYWwuIFRoaXMgZW5zdXJlcyB0aGF0CisJICogUmVzZXRDYW5jZWxDb25uIG9yIFNl dENhbmNlbENvbm4gd29uJ3QgZnJlZSBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KKwkgKi8KKwlw dGhyZWFkX211dGV4X2xvY2soJmNhbmNlbENvbm5Mb2NrKTsKKwljYyA9IGNhbmNlbENvbm47CisJ Z2VuZXJhdGlvbiA9IGNhbmNlbENvbm5HZW5lcmF0aW9uOworCWNhbmNlbENvbm4gPSBOVUxMOwor CXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjYW5jZWxDb25uTG9jayk7CiAKLSNpZmRlZiBXSU4zMgot CUVudGVyQ3JpdGljYWxTZWN0aW9uKCZjYW5jZWxDb25uTG9jayk7Ci0jZW5kaWYKKwlpZiAoY2Mg PT0gTlVMTCkKKwkJcmV0dXJuOwogCi0JLyogRnJlZSB0aGUgb2xkIG9uZSBpZiB3ZSBoYXZlIG9u ZSAqLwotCW9sZENhbmNlbENvbm4gPSBjYW5jZWxDb25uOworCXdyaXRlX3N0ZGVycihjYW5jZWxf c2VudF9tc2cpOwogCi0JLyogYmUgc3VyZSBoYW5kbGVfc2lnaW50IGRvZXNuJ3QgdXNlIHBvaW50 ZXIgd2hpbGUgZnJlZWluZyAqLwotCWNhbmNlbENvbm4gPSBOVUxMOworCWlmICghUFFjYW5jZWxC bG9ja2luZyhjYykpCisJeworCQljaGFyCSAgICplcnJtc2cgPSBQUWNhbmNlbEVycm9yTWVzc2Fn ZShjYyk7CiAKLQlpZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxMKQotCQlQUWZyZWVDYW5jZWwob2xk Q2FuY2VsQ29ubik7CisJCXdyaXRlX3N0ZGVycihjYW5jZWxfbm90X3NlbnRfbXNnKTsKKwkJaWYg KGVycm1zZykKKwkJCXdyaXRlX3N0ZGVycihlcnJtc2cpOworCX0KKwkvKiBSZXNldCBmb3IgcG9z c2libGUgcmV1c2UgKi8KKwlQUWNhbmNlbFJlc2V0KGNjKTsKKworCS8qCisJICogUHV0IHRoZSBj YW5jZWwgY29ubmVjdGlvbiBiYWNrIGlmIGl0IHdhc24ndCByZXBsYWNlZCB3aGlsZSB3ZSB3ZXJl CisJICogdXNpbmcgaXQuCisJICovCisJcHRocmVhZF9tdXRleF9sb2NrKCZjYW5jZWxDb25uTG9j ayk7CisJaWYgKGNhbmNlbENvbm5HZW5lcmF0aW9uID09IGdlbmVyYXRpb24pCisJeworCQkvKiBH ZW5lcmF0aW9uIHVuY2hhbmdlZCwgcHV0IGl0IGJhY2sgZm9yIHJldXNlICovCisJCWNhbmNlbENv bm4gPSBjYzsKKwkJcHV0Q29ubmVjdGlvbkJhY2sgPSB0cnVlOworCX0KKwlwdGhyZWFkX211dGV4 X3VubG9jaygmY2FuY2VsQ29ubkxvY2spOwogCi0JY2FuY2VsQ29ubiA9IFBRZ2V0Q2FuY2VsKGNv bm4pOworCS8qIElmIGl0IHdhcyByZXBsYWNlZCwgd2UgZnJlZSBpdCwgYmVjYXVzZSB3ZSB3ZXJl IHRoZSBsYXN0IHVzZXIgKi8KKwlpZiAoIXB1dENvbm5lY3Rpb25CYWNrKQorCQlQUWNhbmNlbEZp bmlzaChjYyk7Cit9CiAKLSNpZmRlZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZjYW5j ZWxDb25uTG9jayk7Ci0jZW5kaWYKKworLyoKKyAqIEhlbHBlciB0byByZXBsYWNlIGNhbmNlbENv bm4gd2l0aCBhIG5ldyB2YWx1ZS4KKyAqLworc3RhdGljIHZvaWQKK1NldENhbmNlbENvbm5JbnRl cm5hbChQR2NhbmNlbENvbm4gKm5ld0NhbmNlbENvbm4pCit7CisJUEdjYW5jZWxDb25uICpvbGRD YW5jZWxDb25uOworCisJcHRocmVhZF9tdXRleF9sb2NrKCZjYW5jZWxDb25uTG9jayk7CisJb2xk Q2FuY2VsQ29ubiA9IGNhbmNlbENvbm47CisJY2FuY2VsQ29ubiA9IG5ld0NhbmNlbENvbm47CisJ Y2FuY2VsQ29ubkdlbmVyYXRpb24rKzsKKwlwdGhyZWFkX211dGV4X3VubG9jaygmY2FuY2VsQ29u bkxvY2spOworCisJaWYgKG9sZENhbmNlbENvbm4gIT0gTlVMTCkKKwkJUFFjYW5jZWxGaW5pc2go b2xkQ2FuY2VsQ29ubik7Cit9CisKKy8qCisgKiBTZXRDYW5jZWxDb25uCisgKgorICogU2V0IGNh bmNlbENvbm4gdG8gcG9pbnQgdG8gYSBjYW5jZWwgY29ubmVjdGlvbiBmb3IgdGhlIGdpdmVuIGRh dGFiYXNlCisgKiBjb25uZWN0aW9uLiBUaGlzIGNyZWF0ZXMgYSBuZXcgUEdjYW5jZWxDb25uIHRo YXQgY2FuIGJlIHVzZWQgdG8gc2VuZAorICogY2FuY2VsIHJlcXVlc3RzLgorICovCit2b2lkCitT ZXRDYW5jZWxDb25uKFBHY29ubiAqY29ubikKK3sKKwlTZXRDYW5jZWxDb25uSW50ZXJuYWwoUFFj YW5jZWxDcmVhdGUoY29ubikpOwogfQogCiAvKgogICogUmVzZXRDYW5jZWxDb25uCiAgKgotICog RnJlZSB0aGUgY3VycmVudCBjYW5jZWwgY29ubmVjdGlvbiwgaWYgYW55LCBhbmQgc2V0IHRvIE5V TEwuCisgKiBDbGVhciBjYW5jZWxDb25uLCBwcmV2ZW50aW5nIGFueSBwZW5kaW5nIGNhbmNlbCBm cm9tIGJlaW5nIHNlbnQuCiAgKi8KIHZvaWQKIFJlc2V0Q2FuY2VsQ29ubih2b2lkKQogewotCVBH Y2FuY2VsICAgKm9sZENhbmNlbENvbm47CisJU2V0Q2FuY2VsQ29ubkludGVybmFsKE5VTEwpOwor fQogCi0jaWZkZWYgV0lOMzIKLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29ubkxvY2sp OwotI2VuZGlmCiAKLQlvbGRDYW5jZWxDb25uID0gY2FuY2VsQ29ubjsKKyNpZmRlZiBXSU4zMgor LyoKKyAqIENvbnNvbGUgY29udHJvbCBoYW5kbGVyIGZvciBXaW5kb3dzLgorICoKKyAqIFRoaXMg cnVucyBpbiBhIHNlcGFyYXRlIHRocmVhZCBjcmVhdGVkIGJ5IHRoZSBPUywgc28gd2UgY2FuIHNh ZmVseSBjYWxsCisgKiB0aGUgYmxvY2tpbmcgY2FuY2VsIEFQSSBkaXJlY3RseS4KKyAqLworc3Rh dGljIEJPT0wgV0lOQVBJCitjb25zb2xlSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQoreworCWlm IChkd0N0cmxUeXBlID09IENUUkxfQ19FVkVOVCB8fAorCQlkd0N0cmxUeXBlID09IENUUkxfQlJF QUtfRVZFTlQpCisJeworCQlDYW5jZWxSZXF1ZXN0ZWQgPSB0cnVlOwogCi0JLyogYmUgc3VyZSBo YW5kbGVfc2lnaW50IGRvZXNuJ3QgdXNlIHBvaW50ZXIgd2hpbGUgZnJlZWluZyAqLwotCWNhbmNl bENvbm4gPSBOVUxMOworCQlpZiAoY2FuY2VsX2NhbGxiYWNrICE9IE5VTEwpCisJCQljYW5jZWxf Y2FsbGJhY2soKTsKIAotCWlmIChvbGRDYW5jZWxDb25uICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNl bChvbGRDYW5jZWxDb25uKTsKKwkJU2VuZENhbmNlbFJlcXVlc3QoKTsKIAotI2lmZGVmIFdJTjMy Ci0JTGVhdmVDcml0aWNhbFNlY3Rpb24oJmNhbmNlbENvbm5Mb2NrKTsKLSNlbmRpZgorCQlyZXR1 cm4gVFJVRTsKKwl9CisJZWxzZQorCQkvKiBSZXR1cm4gRkFMU0UgZm9yIGFueSBzaWduYWxzIG5v dCBiZWluZyBoYW5kbGVkICovCisJCXJldHVybiBGQUxTRTsKIH0KIAorI2Vsc2UJCQkJCQkJLyog IVdJTjMyICovCiAKIC8qCi0gKiBDb2RlIHRvIHN1cHBvcnQgcXVlcnkgY2FuY2VsbGF0aW9uCi0g KgotICogTm90ZSB0aGF0IHNlbmRpbmcgdGhlIGNhbmNlbCBkaXJlY3RseSBmcm9tIHRoZSBzaWdu YWwgaGFuZGxlciBpcyBzYWZlCi0gKiBiZWNhdXNlIFBRY2FuY2VsKCkgaXMgd3JpdHRlbiB0byBt YWtlIGl0IHNvLiAgV2UgdXNlIHdyaXRlKCkgdG8gcmVwb3J0Ci0gKiB0byBzdGRlcnIgYmVjYXVz ZSBpdCdzIGJldHRlciB0byB1c2Ugc2ltcGxlIGZhY2lsaXRpZXMgaW4gYSBzaWduYWwKLSAqIGhh bmRsZXIuCi0gKgotICogT24gV2luZG93cywgdGhlIHNpZ25hbCBjYW5jZWxpbmcgaGFwcGVucyBv biBhIHNlcGFyYXRlIHRocmVhZCwgYmVjYXVzZQotICogdGhhdCdzIGhvdyBTZXRDb25zb2xlQ3Ry bEhhbmRsZXIgd29ya3MuICBUaGUgUFFjYW5jZWwgZnVuY3Rpb24gaXMgc2FmZQotICogZm9yIHRo aXMgKHVubGlrZSBQUXJlcXVlc3RDYW5jZWwpLiAgSG93ZXZlciwgYSBDUklUSUNBTF9TRUNUSU9O IGlzIHJlcXVpcmVkCi0gKiB0byBwcm90ZWN0IHRoZSBQR2NhbmNlbCBzdHJ1Y3R1cmUgYWdhaW5z dCBiZWluZyBjaGFuZ2VkIHdoaWxlIHRoZSBzaWduYWwKLSAqIHRocmVhZCBpcyB1c2luZyBpdC4K KyAqIENhbmNlbCB0aHJlYWQgbWFpbiBmdW5jdGlvbi4gV2FpdHMgZm9yIHRoZSBzaWduYWwgaGFu ZGxlciB0byB3cml0ZSB0byB0aGUKKyAqIHBpcGUsIHRoZW4gc2VuZHMgYSBjYW5jZWwgcmVxdWVz dC4KICAqLworc3RhdGljIHZvaWQgKgorY2FuY2VsX3RocmVhZF9tYWluKHZvaWQgKmFyZykKK3sK Kwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJYnVmWzE2XTsKKwkJc3NpemVfdAkJcmM7CiAKLSNpZm5k ZWYgV0lOMzIKKwkJLyogV2FpdCBmb3Igc2lnbmFsIGhhbmRsZXIgdG8gd2FrZSB1cyB1cCAqLwor CQlyYyA9IHJlYWQoY2FuY2VsX3BpcGVbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQlpZiAocmMg PD0gMCkKKwkJeworCQkJaWYgKGVycm5vID09IEVJTlRSKQorCQkJCWNvbnRpbnVlOworCQkJLyog UGlwZSBjbG9zZWQgb3IgZXJyb3IgLSBleGl0IHRocmVhZCAqLworCQkJYnJlYWs7CisJCX0KKwor CQlTZW5kQ2FuY2VsUmVxdWVzdCgpOworCX0KKworCXJldHVybiBOVUxMOworfQogCiAvKgotICog aGFuZGxlX3NpZ2ludAotICoKLSAqIEhhbmRsZSBpbnRlcnJ1cHQgc2lnbmFscyBieSBjYW5jZWxp bmcgdGhlIGN1cnJlbnQgY29tbWFuZCwgaWYgY2FuY2VsQ29ubgotICogaXMgc2V0LgorICogU2ln bmFsIGhhbmRsZXIgZm9yIFNJR0lOVC4gU2V0cyBDYW5jZWxSZXF1ZXN0ZWQgYW5kIHdha2VzIHVw IHRoZSBjYW5jZWwKKyAqIHRocmVhZCBieSB3cml0aW5nIHRvIHRoZSBwaXBlLgogICovCiBzdGF0 aWMgdm9pZAogaGFuZGxlX3NpZ2ludChTSUdOQUxfQVJHUykKIHsKLQljaGFyCQllcnJidWZbMjU2 XTsKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisJY2hhcgkJYyA9IDE7CiAKIAlDYW5jZWxS ZXF1ZXN0ZWQgPSB0cnVlOwogCiAJaWYgKGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQogCQljYW5j ZWxfY2FsbGJhY2soKTsKIAotCS8qIFNlbmQgUXVlcnlDYW5jZWwgaWYgd2UgYXJlIHByb2Nlc3Np bmcgYSBkYXRhYmFzZSBxdWVyeSAqLwotCWlmIChjYW5jZWxDb25uICE9IE5VTEwpCi0JewotCQlp ZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSkpCi0JCXsKLQkJ CXdyaXRlX3N0ZGVycihjYW5jZWxfc2VudF9tc2cpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJd3Jp dGVfc3RkZXJyKGNhbmNlbF9ub3Rfc2VudF9tc2cpOwotCQkJd3JpdGVfc3RkZXJyKGVycmJ1Zik7 Ci0JCX0KLQl9CisJLyogV2FrZSB1cCB0aGUgY2FuY2VsIHRocmVhZCAtIHdyaXRlKCkgaXMgYXN5 bmMtc2lnbmFsLXNhZmUgKi8KKwlpZiAoY2FuY2VsX3BpcGVbMV0gPj0gMCkKKwkJKHZvaWQpIHdy aXRlKGNhbmNlbF9waXBlWzFdLCAmYywgMSk7CisKKwllcnJubyA9IHNhdmVfZXJybm87CiB9CiAK KyNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLworCisKIC8qCiAgKiBzZXR1cF9jYW5jZWxfaGFuZGxl cgogICoKLSAqIFJlZ2lzdGVyIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjYWxsYmFjayBmb3IgU0lHSU5U LgorICogU2V0IHVwIGhhbmRsZXIgZm9yIFNJR0lOVCAoVW5peCkgb3IgY29uc29sZSBldmVudHMg KFdpbmRvd3MpIHRvIHNlbmQgYQorICogY2FuY2VsIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gQWxz byBzZXRzIHVwIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzZW5kCisgKiBjYW5jZWwgcmVxdWVzdHMg YXN5bmNocm9ub3VzbHkuCiAgKi8KIHZvaWQKIHNldHVwX2NhbmNlbF9oYW5kbGVyKHZvaWQgKCpx dWVyeV9jYW5jZWxfY2FsbGJhY2spICh2b2lkKSkKIHsKIAljYW5jZWxfY2FsbGJhY2sgPSBxdWVy eV9jYW5jZWxfY2FsbGJhY2s7Ci0JY2FuY2VsX3NlbnRfbXNnID0gXygiQ2FuY2VsIHJlcXVlc3Qg c2VudFxuIik7CisJY2FuY2VsX3NlbnRfbXNnID0gXygiU2VuZGluZyBjYW5jZWwgcmVxdWVzdFxu Iik7CiAJY2FuY2VsX25vdF9zZW50X21zZyA9IF8oIkNvdWxkIG5vdCBzZW5kIGNhbmNlbCByZXF1 ZXN0OiAiKTsKIAotCXBxc2lnbmFsKFNJR0lOVCwgaGFuZGxlX3NpZ2ludCk7Ci19CisjaWZkZWYg V0lOMzIKKwlTZXRDb25zb2xlQ3RybEhhbmRsZXIoY29uc29sZUhhbmRsZXIsIFRSVUUpOworI2Vs c2UKIAotI2Vsc2UJCQkJCQkJLyogV0lOMzIgKi8KKwkvKgorCSAqIFNldCB1cCB0aGUgc2VsZi1w aXBlIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gc2lnbmFsIGhhbmRsZXIgYW5kCisJICogY2Fu Y2VsIHRocmVhZC4gV2UgdXNlIGEgcGlwZSBiZWNhdXNlIHdyaXRlKCkgaXMgYXN5bmMtc2lnbmFs LXNhZmUuCisJICovCisJaWYgKHBpcGUoY2FuY2VsX3BpcGUpIDwgMCkKKwl7CisJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGNyZWF0ZSBwaXBlIGZvciBjYW5jZWw6ICVtIik7CisJCWV4aXQoMSk7 CisJfQogCi1zdGF0aWMgQk9PTCBXSU5BUEkKLWNvbnNvbGVIYW5kbGVyKERXT1JEIGR3Q3RybFR5 cGUpCi17Ci0JY2hhcgkJZXJyYnVmWzI1Nl07CisJLyoKKwkgKiBNYWtlIHRoZSB3cml0ZSBlbmQg bm9uLWJsb2NraW5nLCBzbyB0aGF0IHRoZSBzaWduYWwgaGFuZGxlciB3b24ndCBibG9jaworCSAq IGlmIHRoZSBwaXBlIGJ1ZmZlciBpcyBmdWxsICh3aGljaCBpcyB2ZXJ5IHVubGlrZWx5IGluIHBy YWN0aWNlIGJ1dAorCSAqIHBvc3NpYmxlIGluIHRoZW9yeSkuCisJICovCisJZmNudGwoY2FuY2Vs X3BpcGVbMV0sIEZfU0VURkwsIE9fTk9OQkxPQ0spOwogCi0JaWYgKGR3Q3RybFR5cGUgPT0gQ1RS TF9DX0VWRU5UIHx8Ci0JCWR3Q3RybFR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkKIAl7Ci0JCUNh bmNlbFJlcXVlc3RlZCA9IHRydWU7Ci0KLQkJaWYgKGNhbmNlbF9jYWxsYmFjayAhPSBOVUxMKQot CQkJY2FuY2VsX2NhbGxiYWNrKCk7CisJCWludAkJCXJjID0gcHRocmVhZF9jcmVhdGUoJmNhbmNl bF90aHJlYWQsIE5VTEwsIGNhbmNlbF90aHJlYWRfbWFpbiwgTlVMTCk7CiAKLQkJLyogU2VuZCBR dWVyeUNhbmNlbCBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBhIGRhdGFiYXNlIHF1ZXJ5ICovCi0JCUVu dGVyQ3JpdGljYWxTZWN0aW9uKCZjYW5jZWxDb25uTG9jayk7Ci0JCWlmIChjYW5jZWxDb25uICE9 IE5VTEwpCisJCWlmIChyYyAhPSAwKQogCQl7Ci0JCQlpZiAoUFFjYW5jZWwoY2FuY2VsQ29ubiwg ZXJyYnVmLCBzaXplb2YoZXJyYnVmKSkpCi0JCQl7Ci0JCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9z ZW50X21zZyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJd3JpdGVfc3RkZXJyKGNhbmNlbF9u b3Rfc2VudF9tc2cpOwotCQkJCXdyaXRlX3N0ZGVycihlcnJidWYpOwotCQkJfQorCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGNhbmNlbCB0aHJlYWQ6ICVzIiwgc3RyZXJyb3IocmMp KTsKKwkJCWV4aXQoMSk7CiAJCX0KLQotCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmY2FuY2VsQ29u bkxvY2spOwotCi0JCXJldHVybiBUUlVFOwogCX0KLQllbHNlCi0JCS8qIFJldHVybiBGQUxTRSBm b3IgYW55IHNpZ25hbHMgbm90IGJlaW5nIGhhbmRsZWQgKi8KLQkJcmV0dXJuIEZBTFNFOwotfQog Ci12b2lkCi1zZXR1cF9jYW5jZWxfaGFuZGxlcih2b2lkICgqY2FsbGJhY2spICh2b2lkKSkKLXsK LQljYW5jZWxfY2FsbGJhY2sgPSBjYWxsYmFjazsKLQljYW5jZWxfc2VudF9tc2cgPSBfKCJDYW5j ZWwgcmVxdWVzdCBzZW50XG4iKTsKLQljYW5jZWxfbm90X3NlbnRfbXNnID0gXygiQ291bGQgbm90 IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICIpOwotCi0JSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbigm Y2FuY2VsQ29ubkxvY2spOwotCi0JU2V0Q29uc29sZUN0cmxIYW5kbGVyKGNvbnNvbGVIYW5kbGVy LCBUUlVFKTsKKwlwcXNpZ25hbChTSUdJTlQsIGhhbmRsZV9zaWdpbnQpOworI2VuZGlmCiB9Ci0K LSNlbmRpZgkJCQkJCQkvKiBXSU4zMiAqLwotLSAKMi41Mi4wCgo= --92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0003-pg_dump-Don-t-use-the-deprecated-and-insecure-PQc.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0003-pg_dump-Don-t-use-the-deprecated-and-insecure-PQc.patch RnJvbSAyY2U0ZjQ1MWI0ZDU1MTZkMjhmYjlmZmJkZmJkODJlMzE1N2I0NDhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDggRmViIDIwMjYgMTk6MDA6MTIgKzAxMDAKU3ViamVjdDogW1BBVENIIHYz IDMvM10gcGdfZHVtcDogRG9uJ3QgdXNlIHRoZSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZQogUFFj YW5jZWwKCnBnX2R1bXAgc3RpbGwgdXNlZCBQUWNhbmNlbCB0byBzZW5kIGNhbmNlbCByZXF1ZXN0 cyB0byB0aGUgc2VydmVyIHdoZW4KdGhlIGR1bXAgd2FzIGNhbmNlbGxlZC4gVGhhdCBsaWJwcSBm dW5jdGlvbiBpcyBpbnNlY3VyZSwgYmVjYXVzZSBpdCBkb2VzCm5vdCB1c2UgZW5jcnlwdGlvbiB0 byBzZW5kIHRoZSBjYW5jZWwgcmVxdWVzdC4gVGhpcyBjb21taXQgc3RhcnRzIHVzaW5nIHRoZSBu ZXcKY2FuY2VsbGF0aW9uIEFQSXMgKGludHJvZHVjZWQgaW4gNjE0NjFhMzAwKSBpbiBwZ19kdW1w LiBUaGVzZSBBUElzIHVzZQp0aGUgc2FtZSBlbmNyeXB0aW9uIHNldHRpbmdzIGFzIHRoZSBjb25u ZWN0aW9uIHRoYXQncyBiZWluZyBjYW5jZWxsZWQuClNpbmNlIHRoZXNlIEFQSXMgYXJlIG5vdCBz aWduYWwtc2FmZSB0aGlzIHJlcXVpcmVkIGEgcmVmYWN0b3IgdG8gbm90CnNlbmQgdGhlIGNhbmNl bCByZXF1ZXN0IGluIGEgc2lnbmFsIGhhbmRsZXIgYW55bW9yZSwgYnV0IGluc3RlYWQgdXNpbmcg YQpkZWRpY2F0ZWQgdGhyZWFkLiBXaW5kb3dzIHdhcyBhbHJlYWR5IGRvaW5nIHRoYXQgdG9vLCBz byBub3cgdGhlIHBhdGhzCmNhbiBzaGFyZSBzb21lIGNvZGUuIFRoZXJlJ3Mgc3RpbGwgcXVpdGUg YSBiaXQgb2YgYmVoYXZpb3VyYWwgZGlmZmVyZW5jZQp0aG91Z2gsIGJlY2F1c2UgdGhlIHBnX2R1 bXAgaXMgdXNpbmcgdGhyZWFkcyBmb3IgcGFyYWxsZWxpc20gb24gV2luZG93cywKYnV0IHByb2Nl c3NlcyBvbiBVbml4ZXMuCi0tLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDIgKwog c3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMgICAgICAgICAgIHwgNDAzICsrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICAy ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggfCAgIDggKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYyAgICAgICB8ICAgNyArLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMjEgaW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQppbmRleCA3OTA3 M2IwYTBlYS4uZjc2MzQ2YzRmNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmls ZQorKysgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTIxLDcgKzIxLDcgQEAgZXhwb3J0 IExaNAogZXhwb3J0IFpTVEQKIGV4cG9ydCB3aXRoX2ljdQogCi1vdmVycmlkZSBDUFBGTEFHUyA6 PSAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQorb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkk KGxpYnBxX3NyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYy9wb3J0ICQoQ1BQRkxBR1MpCiBMREZM QUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGls cyAkKGxpYnBxX3BncG9ydCkKIAogT0JKUyA9IFwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWlsZAppbmRleCA3OWJkNTAz Njg0MS4uZWI1NWQ3YTUwY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9tZXNvbi5idWls ZAorKysgYi9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQKQEAgLTIyLDYgKzIyLDggQEAgcGdf ZHVtcF9jb21tb25fc291cmNlcyA9IGZpbGVzKAogcGdfZHVtcF9jb21tb24gPSBzdGF0aWNfbGli cmFyeSgnbGlicGdkdW1wX2NvbW1vbicsCiAgIHBnX2R1bXBfY29tbW9uX3NvdXJjZXMsCiAgIGNf cGNoOiBwY2hfcG9zdGdyZXNfZmVfaCwKKyAgIyBwb3J0IG5lZWRzIHRvIGJlIGluIGluY2x1ZGUg cGF0aCBkdWUgdG8gcHRocmVhZC13aW4zMi5oCisgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFsnLi4v Li4vcG9ydCddLAogICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsaWJwcSwgbHo0LCB6 bGliLCB6c3RkXSwKICAga3dhcmdzOiBpbnRlcm5hbF9saWJfYXJncywKICkKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMK aW5kZXggZGRhZjA4ZmFhMzAuLjIyZWQ0MTlmODRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGFyYWxsZWwuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYwpAQCAtNTgsOCAr NTgsMTIgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNs dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbHNlCisjaW5jbHVkZSAicHRo cmVhZC13aW4zMi5oIgogI2VuZGlmCiAKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2lu Y2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgInBhcmFsbGVsLmgiCiAj aW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCkBAIC0xNjcsNiArMTcxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgRHVtcFNpZ25hbEluZm9ybWF0aW9uCiAJQXJjaGl2ZUhhbmRsZSAqbXlBSDsJCS8qIGRh dGFiYXNlIGNvbm5lY3Rpb24gdG8gaXNzdWUgY2FuY2VsIGZvciAqLwogCVBhcmFsbGVsU3RhdGUg KnBzdGF0ZTsJCS8qIHBhcmFsbGVsIHN0YXRlLCBpZiBhbnkgKi8KIAlib29sCQloYW5kbGVyX3Nl dDsJLyogc2lnbmFsIGhhbmRsZXIgc2V0IHVwIGluIHRoaXMgcHJvY2Vzcz8gKi8KKwlib29sCQlj YW5jZWxfcmVxdWVzdGVkOwkvKiBjYW5jZWwgcmVxdWVzdGVkIHZpYSBzaWduYWw/ICovCiAjaWZu ZGVmIFdJTjMyCiAJYm9vbAkJYW1fd29ya2VyOwkJLyogYW0gSSBhIHdvcmtlciBwcm9jZXNzPyAq LwogI2VuZGlmCkBAIC0xNzQsOCArMTc5LDE4IEBAIHR5cGVkZWYgc3RydWN0IER1bXBTaWduYWxJ bmZvcm1hdGlvbgogCiBzdGF0aWMgdm9sYXRpbGUgRHVtcFNpZ25hbEluZm9ybWF0aW9uIHNpZ25h bF9pbmZvOwogCi0jaWZkZWYgV0lOMzIKLXN0YXRpYyBDUklUSUNBTF9TRUNUSU9OIHNpZ25hbF9p bmZvX2xvY2s7CisvKgorICogTXV0ZXggcHJvdGVjdGluZyBzaWduYWxfaW5mbyBkdXJpbmcgY2Fu Y2VsIG9wZXJhdGlvbnMuCisgKi8KK3N0YXRpYyBwdGhyZWFkX211dGV4X3Qgc2lnbmFsX2luZm9f bG9jazsKKworI2lmbmRlZiBXSU4zMgorLyoKKyAqIE9uIFVuaXgsIHdlIHVzZSB0aGUgc2VsZi1w aXBlIHRyaWNrIHRvIHdha2UgdXAgdGhlIGNhbmNlbCB0aHJlYWQgZnJvbSB0aGUKKyAqIHNpZ25h bCBoYW5kbGVyLgorICovCitzdGF0aWMgaW50CWNhbmNlbF9waXBlWzJdID0gey0xLCAtMX07Citz dGF0aWMgcHRocmVhZF90IGNhbmNlbF90aHJlYWQ7CiAjZW5kaWYKIAogLyoKQEAgLTIwOSw2ICsy MjQsNyBAQCBzdGF0aWMgdm9pZCBXYWl0Rm9yVGVybWluYXRpbmdXb3JrZXJzKFBhcmFsbGVsU3Rh dGUgKnBzdGF0ZSk7CiBzdGF0aWMgdm9pZCBzZXRfY2FuY2VsX2hhbmRsZXIodm9pZCk7CiBzdGF0 aWMgdm9pZCBzZXRfY2FuY2VsX3BzdGF0ZShQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGlj IHZvaWQgc2V0X2NhbmNlbF9zbG90X2FyY2hpdmUoUGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZl SGFuZGxlICpBSCk7CitzdGF0aWMgdm9pZCBTdG9wV29ya2Vycyh2b2lkKTsKIHN0YXRpYyB2b2lk IFJ1bldvcmtlcihBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTbG90ICpzbG90KTsKIHN0YXRp YyBpbnQJR2V0SWRsZVdvcmtlcihQYXJhbGxlbFN0YXRlICpwc3RhdGUpOwogc3RhdGljIGJvb2wg SGFzRXZlcnlXb3JrZXJUZXJtaW5hdGVkKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSk7CkBAIC00MTAs MzIgKzQyNiw5IEBAIFNodXRkb3duV29ya2Vyc0hhcmQoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKQog CS8qCiAJICogRm9yY2UgZWFybHkgdGVybWluYXRpb24gb2YgYW55IGNvbW1hbmRzIGN1cnJlbnRs eSBpbiBwcm9ncmVzcy4KIAkgKi8KLSNpZm5kZWYgV0lOMzIKLQkvKiBPbiBub24tV2luZG93cywg c2VuZCBTSUdURVJNIHRvIGVhY2ggd29ya2VyIHByb2Nlc3MuICovCi0JZm9yIChpID0gMDsgaSA8 IHBzdGF0ZS0+bnVtV29ya2VyczsgaSsrKQotCXsKLQkJcGlkX3QJCXBpZCA9IHBzdGF0ZS0+cGFy YWxsZWxTbG90W2ldLnBpZDsKLQotCQlpZiAocGlkICE9IDApCi0JCQlraWxsKHBpZCwgU0lHVEVS TSk7Ci0JfQotI2Vsc2UKLQotCS8qCi0JICogT24gV2luZG93cywgc2VuZCBxdWVyeSBjYW5jZWxz IGRpcmVjdGx5IHRvIHRoZSB3b3JrZXJzJyBiYWNrZW5kcy4gIFVzZQotCSAqIGEgY3JpdGljYWwg c2VjdGlvbiB0byBlbnN1cmUgd29ya2VyIHRocmVhZHMgZG9uJ3QgY2hhbmdlIHN0YXRlLgotCSAq LwotCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLQlmb3IgKGkgPSAw OyBpIDwgcHN0YXRlLT5udW1Xb3JrZXJzOyBpKyspCi0JewotCQlBcmNoaXZlSGFuZGxlICpBSCA9 IHBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLkFIOwotCQljaGFyCQllcnJidWZbMV07Ci0KLQkJaWYg KEFIICE9IE5VTEwgJiYgQUgtPmNvbm5DYW5jZWwgIT0gTlVMTCkKLQkJCSh2b2lkKSBQUWNhbmNl bChBSC0+Y29ubkNhbmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7Ci0JfQotCUxlYXZlQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgorCXB0aHJlYWRfbXV0ZXhf bG9jaygmc2lnbmFsX2luZm9fbG9jayk7CisJU3RvcFdvcmtlcnMoKTsKKwlwdGhyZWFkX211dGV4 X3VubG9jaygmc2lnbmFsX2luZm9fbG9jayk7CiAKIAkvKiBOb3cgd2FpdCBmb3IgdGhlbSB0byB0 ZXJtaW5hdGUuICovCiAJV2FpdEZvclRlcm1pbmF0aW5nV29ya2Vycyhwc3RhdGUpOwpAQCAtNTE5 LDc0ICs1MTIsNTQgQEAgV2FpdEZvclRlcm1pbmF0aW5nV29ya2VycyhQYXJhbGxlbFN0YXRlICpw c3RhdGUpCiAgKiBjb3VsZCBsZWF2ZSBhIFNRTCBjb21tYW5kIChlLmcuLCBDUkVBVEUgSU5ERVgg b24gYSBsYXJnZSB0YWJsZSkgcnVubmluZwogICogZm9yIGEgbG9uZyB0aW1lLiAgSW5zdGVhZCwg d2UgdHJ5IHRvIHNlbmQgYSBjYW5jZWwgcmVxdWVzdCBhbmQgdGhlbiBkaWUuCiAgKiBwZ19kdW1w IHByb2JhYmx5IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdGhpcywgYnV0IHdlIG1pZ2h0IGFzIHdlbGwg dXNlIGl0Ci0gKiB0aGVyZSB0b28uICBOb3RlIHRoYXQgc2VuZGluZyB0aGUgY2FuY2VsIGRpcmVj dGx5IGZyb20gdGhlIHNpZ25hbCBoYW5kbGVyCi0gKiBpcyBzYWZlIGJlY2F1c2UgUFFjYW5jZWwo KSBpcyB3cml0dGVuIHRvIG1ha2UgaXQgc28uCisgKiB0aGVyZSB0b28uCiAgKgotICogSW4gcGFy YWxsZWwgb3BlcmF0aW9uIG9uIFVuaXgsIGVhY2ggcHJvY2VzcyBpcyByZXNwb25zaWJsZSBmb3Ig Y2FuY2VsaW5nCi0gKiBpdHMgb3duIGNvbm5lY3Rpb24gKHRoaXMgbXVzdCBiZSBzbyBiZWNhdXNl IG5vYm9keSBlbHNlIGhhcyBhY2Nlc3MgdG8gaXQpLgotICogRnVydGhlcm1vcmUsIHRoZSBsZWFk ZXIgcHJvY2VzcyBzaG91bGQgYXR0ZW1wdCB0byBmb3J3YXJkIGl0cyBzaWduYWwgdG8KLSAqIGVh Y2ggY2hpbGQuICBJbiBzaW1wbGUgbWFudWFsIHVzZSBvZiBwZ19kdW1wL3BnX3Jlc3RvcmUsIGZv cndhcmRpbmcgaXNuJ3QKLSAqIG5lZWRlZCBiZWNhdXNlIHR5cGluZyBjb250cm9sLUMgYXQgdGhl IGNvbnNvbGUgd291bGQgZGVsaXZlciBTSUdJTlQgdG8KLSAqIGV2ZXJ5IG1lbWJlciBvZiB0aGUg dGVybWluYWwgcHJvY2VzcyBncm91cCAtLS0gYnV0IGluIG90aGVyIHNjZW5hcmlvcyBpdAotICog bWlnaHQgYmUgdGhhdCBvbmx5IHRoZSBsZWFkZXIgZ2V0cyBzaWduYWxlZC4KKyAqIE9uIFVuaXgs IHRoZSBzaWduYWwgaGFuZGxlciB3YWtlcyB1cCBhIGRlZGljYXRlZCBjYW5jZWwgdGhyZWFkIHZp YSBhCisgKiBzZWxmLXBpcGUsIHdoaWNoIHRoZW4gc2VuZHMgdGhlIGNhbmNlbCBhbmQgY2FsbHMg X2V4aXQoKS4gIFRoaXMgdGhyZWFkIGFsc28KKyAqIGZvcndhcmRzIHRoZSBzaWduYWwgdG8gZWFj aCBjaGlsZCBzbyB0aGV5IGNhbiBhbHNvIGNhbmNlbCB0aGVpciBxdWVyaWVzLiBJbgorICogc2lt cGxlIG1hbnVhbCB1c2Ugb2YgcGdfZHVtcC9wZ19yZXN0b3JlLCBmb3J3YXJkaW5nIGlzbid0IG5l ZWRlZCBiZWNhdXNlCisgKiB0eXBpbmcgY29udHJvbC1DIGF0IHRoZSBjb25zb2xlIHdvdWxkIGRl bGl2ZXIgU0lHSU5UIHRvIGV2ZXJ5IG1lbWJlciBvZiB0aGUKKyAqIHRlcm1pbmFsIHByb2Nlc3Mg Z3JvdXAgLS0tIGJ1dCBpbiBvdGhlciBzY2VuYXJpb3MgaXQgbWlnaHQgYmUgdGhhdCBvbmx5IHRo ZQorICogbGVhZGVyIGdldHMgc2lnbmFsZWQuCiAgKgogICogT24gV2luZG93cywgdGhlIGNhbmNl bCBoYW5kbGVyIHJ1bnMgaW4gYSBzZXBhcmF0ZSB0aHJlYWQsIGJlY2F1c2UgdGhhdCdzCiAgKiBo b3cgU2V0Q29uc29sZUN0cmxIYW5kbGVyIHdvcmtzLiAgV2UgbWFrZSBpdCBzdG9wIHdvcmtlciB0 aHJlYWRzLCBzZW5kCiAgKiBjYW5jZWxzIG9uIGFsbCBhY3RpdmUgY29ubmVjdGlvbnMsIGFuZCB0 aGVuIHJldHVybiBGQUxTRSwgd2hpY2ggd2lsbCBhbGxvdwogICogdGhlIHByb2Nlc3MgdG8gZGll LiAgRm9yIHNhZmV0eSdzIHNha2UsIHdlIHVzZSBhIGNyaXRpY2FsIHNlY3Rpb24gdG8KLSAqIHBy b3RlY3QgdGhlIFBHY2FuY2VsIHN0cnVjdHVyZXMgYWdhaW5zdCBiZWluZyBjaGFuZ2VkIHdoaWxl IHRoZSBzaWduYWwKKyAqIHByb3RlY3QgdGhlIFBHY2FuY2VsQ29ubiBzdHJ1Y3R1cmVzIGFnYWlu c3QgYmVpbmcgY2hhbmdlZCB3aGlsZSB0aGUgc2lnbmFsCiAgKiB0aHJlYWQgcnVucy4KICAqLwog Ci0jaWZuZGVmIFdJTjMyCi0KIC8qCi0gKiBTaWduYWwgaGFuZGxlciAoVW5peCBvbmx5KQorICog Q2FuY2VsIGFsbCBhY3RpdmUgcXVlcmllcyBhbmQgcHJpbnQgdGVybWluYXRpb24gbWVzc2FnZS4K ICAqLwogc3RhdGljIHZvaWQKLXNpZ1Rlcm1IYW5kbGVyKFNJR05BTF9BUkdTKQorQ2FuY2VsQmFj a2VuZHModm9pZCkKIHsKLQlpbnQJCQlpOwotCWNoYXIJCWVycmJ1ZlsxXTsKKwlwdGhyZWFkX211 dGV4X2xvY2soJnNpZ25hbF9pbmZvX2xvY2spOwogCi0JLyoKLQkgKiBTb21lIHBsYXRmb3JtcyBh bGxvdyBkZWxpdmVyeSBvZiBuZXcgc2lnbmFscyB0byBpbnRlcnJ1cHQgYW4gYWN0aXZlCi0JICog c2lnbmFsIGhhbmRsZXIuICBUaGF0IGNvdWxkIG11Y2sgdXAgb3VyIGF0dGVtcHQgdG8gc2VuZCBQ UWNhbmNlbCwgc28KLQkgKiBkaXNhYmxlIHRoZSBzaWduYWxzIHRoYXQgc2V0X2NhbmNlbF9oYW5k bGVyIGVuYWJsZWQuCi0JICovCi0JcHFzaWduYWwoU0lHSU5ULCBTSUdfSUdOKTsKLQlwcXNpZ25h bChTSUdURVJNLCBTSUdfSUdOKTsKLQlwcXNpZ25hbChTSUdRVUlULCBTSUdfSUdOKTsKKwlzaWdu YWxfaW5mby5jYW5jZWxfcmVxdWVzdGVkID0gdHJ1ZTsKIAogCS8qCi0JICogSWYgd2UncmUgaW4g dGhlIGxlYWRlciwgZm9yd2FyZCBzaWduYWwgdG8gYWxsIHdvcmtlcnMuICAoSXQgc2VlbXMgYmVz dAotCSAqIHRvIGRvIHRoaXMgYmVmb3JlIFBRY2FuY2VsOyBraWxsaW5nIHRoZSBsZWFkZXIgdHJh bnNhY3Rpb24gd2lsbCByZXN1bHQKLQkgKiBpbiBpbnZhbGlkLXNuYXBzaG90IGVycm9ycyBmcm9t IGFjdGl2ZSB3b3JrZXJzLCB3aGljaCBtYXliZSB3ZSBjYW4KLQkgKiBxdWlldCBieSBraWxsaW5n IHdvcmtlcnMgZmlyc3QuKSAgSWdub3JlIGFueSBlcnJvcnMuCisJICogU3RvcCB3b3JrZXJzIGZp cnN0IHRvIGF2b2lkIGludmFsaWQtc25hcHNob3QgZXJyb3JzIGlmIHRoZSBsZWFkZXIKKwkgKiBj YW5jZWxzIGJlZm9yZSB3b3JrZXJzLgogCSAqLwotCWlmIChzaWduYWxfaW5mby5wc3RhdGUgIT0g TlVMTCkKLQl7Ci0JCWZvciAoaSA9IDA7IGkgPCBzaWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtl cnM7IGkrKykKLQkJewotCQkJcGlkX3QJCXBpZCA9IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxs ZWxTbG90W2ldLnBpZDsKKwlTdG9wV29ya2VycygpOwogCi0JCQlpZiAocGlkICE9IDApCi0JCQkJ a2lsbChwaWQsIFNJR1RFUk0pOwotCQl9Ci0JfQorCWlmIChzaWduYWxfaW5mby5teUFIICE9IE5V TEwgJiYgc2lnbmFsX2luZm8ubXlBSC0+Y2FuY2VsQ29ubiAhPSBOVUxMKQorCQkodm9pZCkgUFFj YW5jZWxCbG9ja2luZyhzaWduYWxfaW5mby5teUFILT5jYW5jZWxDb25uKTsKIAotCS8qCi0JICog U2VuZCBRdWVyeUNhbmNlbCBpZiB3ZSBoYXZlIGEgY29ubmVjdGlvbiB0byBzZW5kIHRvLiAgSWdu b3JlIGVycm9ycywKLQkgKiB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBkbyBhYm91dCB0aGVtIGFu eXdheS4KLQkgKi8KLQlpZiAoc2lnbmFsX2luZm8ubXlBSCAhPSBOVUxMICYmIHNpZ25hbF9pbmZv Lm15QUgtPmNvbm5DYW5jZWwgIT0gTlVMTCkKLQkJKHZvaWQpIFBRY2FuY2VsKHNpZ25hbF9pbmZv Lm15QUgtPmNvbm5DYW5jZWwsIGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZikpOworCXB0aHJlYWRfbXV0 ZXhfdW5sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIAogCS8qCi0JICogUmVwb3J0IHdlJ3JlIHF1 aXR0aW5nLCB1c2luZyBub3RoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB3cml0ZSgyKS4KLQkg KiBXaGVuIGluIHBhcmFsbGVsIG9wZXJhdGlvbiwgb25seSB0aGUgbGVhZGVyIHByb2Nlc3Mgc2hv dWxkIGRvIHRoaXMuCisJICogUHJpbnQgdGVybWluYXRpb24gbWVzc2FnZS4gSW4gcGFyYWxsZWwg b3BlcmF0aW9uLCBvbmx5IHRoZSBsZWFkZXIKKwkgKiBzaG91bGQgcHJpbnQgdGhpcy4gT24gV2lu ZG93cywgd29ya2VycyBhcmUgdGhyZWFkcyBpbiB0aGUgc2FtZSBwcm9jZXNzCisJICogYW5kIHRo ZSBjb25zb2xlIGhhbmRsZXIgb25seSBydW5zIGluIHRoZSBsZWFkZXIgY29udGV4dCwgc28gd2Ug Y2FuCisJICogYWx3YXlzIHByaW50IGl0LgogCSAqLworI2lmbmRlZiBXSU4zMgogCWlmICghc2ln bmFsX2luZm8uYW1fd29ya2VyKQorI2VuZGlmCiAJewogCQlpZiAocHJvZ25hbWUpCiAJCXsKQEAg LTU5NSwxNzIgKzU2OCwyMDUgQEAgc2lnVGVybUhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCX0KIAkJ d3JpdGVfc3RkZXJyKCJ0ZXJtaW5hdGVkIGJ5IHVzZXJcbiIpOwogCX0KLQotCS8qCi0JICogQW5k IGRpZSwgdXNpbmcgX2V4aXQoKSBub3QgZXhpdCgpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsIGlu dm9rZSBhdGV4aXQKLQkgKiBoYW5kbGVycyB0aGF0IGNhbiBmYWlsIGlmIHdlIGludGVycnVwdGVk IHJlbGF0ZWQgY29kZS4KLQkgKi8KLQlfZXhpdCgxKTsKIH0KIAogLyoKLSAqIEVuYWJsZSBjYW5j ZWwgaW50ZXJydXB0IGhhbmRsZXIsIGlmIG5vdCBhbHJlYWR5IGRvbmUuCisgKiBTdG9wIGFsbCB3 b3JrZXIgcHJvY2Vzc2VzL3RocmVhZHMuCisgKgorICogT24gVW5peCwgc2VuZCBTSUdURVJNIHRv IGVhY2ggd29ya2VyIHByb2Nlc3M7IHRoZWlyIHNpZ25hbCBoYW5kbGVycyB3aWxsCisgKiBzZW5k IGNhbmNlbCByZXF1ZXN0cyB0byB0aGVpciBiYWNrZW5kcy4KKyAqCisgKiBPbiBXaW5kb3dzLCB3 b3JrZXJzIGFyZSB0aHJlYWRzIGluIHRoZSBzYW1lIHByb2Nlc3MsIHNvIHdlIHNlbmQgY2FuY2Vs CisgKiByZXF1ZXN0cyBkaXJlY3RseSB0byB0aGVpciBiYWNrZW5kcy4KKyAqCisgKiBDYWxsZXIg bXVzdCBob2xkIHNpZ25hbF9pbmZvX2xvY2suCiAgKi8KIHN0YXRpYyB2b2lkCi1zZXRfY2FuY2Vs X2hhbmRsZXIodm9pZCkKK1N0b3BXb3JrZXJzKHZvaWQpCiB7Ci0JLyoKLQkgKiBXaGVuIGZvcmtp bmcsIHNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0IHdpbGwgcHJvcGFnYXRlIGludG8gdGhlIG5ldwot CSAqIHByb2Nlc3MsIGJ1dCB0aGF0J3MgZmluZSBiZWNhdXNlIHRoZSBzaWduYWwgaGFuZGxlciBz dGF0ZSBkb2VzIHRvby4KLQkgKi8KLQlpZiAoIXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0KQorCWlu dAkJCWk7CisKKwlpZiAoc2lnbmFsX2luZm8ucHN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwor CWZvciAoaSA9IDA7IGkgPCBzaWduYWxfaW5mby5wc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKIAl7 Ci0JCXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0ID0gdHJ1ZTsKKyNpZm5kZWYgV0lOMzIKKwkJcGlk X3QJCXBpZCA9IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLnBpZDsKKworCQlp ZiAocGlkICE9IDApCisJCQlraWxsKHBpZCwgU0lHVEVSTSk7CisjZWxzZQorCQlBcmNoaXZlSGFu ZGxlICpBSCA9IHNpZ25hbF9pbmZvLnBzdGF0ZS0+cGFyYWxsZWxTbG90W2ldLkFIOwogCi0JCXBx c2lnbmFsKFNJR0lOVCwgc2lnVGVybUhhbmRsZXIpOwotCQlwcXNpZ25hbChTSUdURVJNLCBzaWdU ZXJtSGFuZGxlcik7Ci0JCXBxc2lnbmFsKFNJR1FVSVQsIHNpZ1Rlcm1IYW5kbGVyKTsKKwkJaWYg KEFIICE9IE5VTEwgJiYgQUgtPmNhbmNlbENvbm4gIT0gTlVMTCkKKwkJCSh2b2lkKSBQUWNhbmNl bEJsb2NraW5nKEFILT5jYW5jZWxDb25uKTsKKyNlbmRpZgogCX0KIH0KIAotI2Vsc2UJCQkJCQkJ LyogV0lOMzIgKi8KKyNpZmRlZiBXSU4zMgogCiAvKgogICogQ29uc29sZSBpbnRlcnJ1cHQgaGFu ZGxlciAtLS0gcnVucyBpbiBhIG5ld2x5LXN0YXJ0ZWQgdGhyZWFkLgogICoKLSAqIEFmdGVyIHN0 b3BwaW5nIG90aGVyIHRocmVhZHMgYW5kIHNlbmRpbmcgY2FuY2VsIHJlcXVlc3RzIG9uIGFsbCBv cGVuCi0gKiBjb25uZWN0aW9ucywgd2UgcmV0dXJuIEZBTFNFIHdoaWNoIHdpbGwgYWxsb3cgdGhl IGRlZmF1bHQgRXhpdFByb2Nlc3MoKQotICogYWN0aW9uIHRvIGJlIHRha2VuLgorICogU2VuZCBj YW5jZWwgcmVxdWVzdHMgb24gYWxsIG9wZW4gY29ubmVjdGlvbnMgYW5kIHJldHVybiBGQUxTRSB0 byBhbGxvdworICogdGhlIGRlZmF1bHQgRXhpdFByb2Nlc3MoKSBhY3Rpb24gdG8gdGVybWluYXRl IHRoZSBwcm9jZXNzLgogICovCiBzdGF0aWMgQk9PTCBXSU5BUEkKIGNvbnNvbGVIYW5kbGVyKERX T1JEIGR3Q3RybFR5cGUpCiB7Ci0JaW50CQkJaTsKLQljaGFyCQllcnJidWZbMV07Ci0KIAlpZiAo ZHdDdHJsVHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwKIAkJZHdDdHJsVHlwZSA9PSBDVFJMX0JSRUFL X0VWRU5UKQogCXsKLQkJLyogQ3JpdGljYWwgc2VjdGlvbiBwcmV2ZW50cyBjaGFuZ2luZyBkYXRh IHdlIGxvb2sgYXQgaGVyZSAqLwotCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmc2lnbmFsX2luZm9f bG9jayk7CisJCUNhbmNlbEJhY2tlbmRzKCk7CisJfQogCi0JCS8qCi0JCSAqIElmIGluIHBhcmFs bGVsIG1vZGUsIHN0b3Agd29ya2VyIHRocmVhZHMgYW5kIHNlbmQgUXVlcnlDYW5jZWwgdG8KLQkJ ICogdGhlaXIgY29ubmVjdGVkIGJhY2tlbmRzLiAgVGhlIG1haW4gcG9pbnQgb2Ygc3RvcHBpbmcg dGhlIHdvcmtlcgotCQkgKiB0aHJlYWRzIGlzIHRvIGtlZXAgdGhlbSBmcm9tIHJlcG9ydGluZyB0 aGUgcXVlcnkgY2FuY2VscyBhcyBlcnJvcnMsCi0JCSAqIHdoaWNoIHdvdWxkIGNsdXR0ZXIgdGhl IHVzZXIncyBzY3JlZW4uICBXZSBuZWVkbid0IHN0b3AgdGhlIGxlYWRlcgotCQkgKiB0aHJlYWQg c2luY2UgaXQgd29uJ3QgYmUgZG9pbmcgbXVjaCBhbnl3YXkuICBEbyB0aGlzIGJlZm9yZQotCQkg KiBjYW5jZWxpbmcgdGhlIG1haW4gdHJhbnNhY3Rpb24sIGVsc2Ugd2UgbWlnaHQgZ2V0IGludmFs aWQtc25hcHNob3QKLQkJICogZXJyb3JzIHJlcG9ydGVkIGJlZm9yZSB3ZSBjYW4gc3RvcCB0aGUg d29ya2Vycy4gIElnbm9yZSBlcnJvcnMsCi0JCSAqIHRoZXJlJ3Mgbm90IG11Y2ggd2UgY2FuIGRv IGFib3V0IHRoZW0gYW55d2F5LgotCQkgKi8KLQkJaWYgKHNpZ25hbF9pbmZvLnBzdGF0ZSAhPSBO VUxMKQorCS8qIEFsd2F5cyByZXR1cm4gRkFMU0UgdG8gYWxsb3cgc2lnbmFsIGhhbmRsaW5nIHRv IGNvbnRpbnVlICovCisJcmV0dXJuIEZBTFNFOworfQorCisjZWxzZQkJCQkJCQkvKiAhV0lOMzIg Ki8KKworLyoKKyAqIENhbmNlbCB0aHJlYWQgbWFpbiBmdW5jdGlvbi4gV2FpdHMgZm9yIHRoZSBz aWduYWwgaGFuZGxlciB0byB3cml0ZSB0byB0aGUKKyAqIHBpcGUsIHRoZW4gY2FuY2VscyBiYWNr ZW5kcyBhbmQgY2FsbHMgX2V4aXQoKS4KKyAqLworc3RhdGljIHZvaWQgKgorY2FuY2VsX3RocmVh ZF9tYWluKHZvaWQgKmFyZykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJYnVmWzE2XTsKKwkJ c3NpemVfdAkJcmM7CisKKwkJLyogV2FpdCBmb3Igc2lnbmFsIGhhbmRsZXIgdG8gd2FrZSB1cyB1 cCAqLworCQlyYyA9IHJlYWQoY2FuY2VsX3BpcGVbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQlp ZiAocmMgPD0gMCkKIAkJewotCQkJZm9yIChpID0gMDsgaSA8IHNpZ25hbF9pbmZvLnBzdGF0ZS0+ bnVtV29ya2VyczsgaSsrKQotCQkJewotCQkJCVBhcmFsbGVsU2xvdCAqc2xvdCA9ICYoc2lnbmFs X2luZm8ucHN0YXRlLT5wYXJhbGxlbFNsb3RbaV0pOwotCQkJCUFyY2hpdmVIYW5kbGUgKkFIID0g c2xvdC0+QUg7Ci0JCQkJSEFORExFCQloVGhyZWFkID0gKEhBTkRMRSkgc2xvdC0+aFRocmVhZDsK LQotCQkJCS8qCi0JCQkJICogVXNpbmcgVGVybWluYXRlVGhyZWFkIGhlcmUgbWF5IGxlYXZlIHNv bWUgcmVzb3VyY2VzIGxlYWtlZCwKLQkJCQkgKiBidXQgaXQgZG9lc24ndCBtYXR0ZXIgc2luY2Ug d2UncmUgYWJvdXQgdG8gZW5kIHRoZSB3aG9sZQotCQkJCSAqIHByb2Nlc3MuCi0JCQkJICovCi0J CQkJaWYgKGhUaHJlYWQgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0JCQkJCVRlcm1pbmF0ZVRo cmVhZChoVGhyZWFkLCAwKTsKLQotCQkJCWlmIChBSCAhPSBOVUxMICYmIEFILT5jb25uQ2FuY2Vs ICE9IE5VTEwpCi0JCQkJCSh2b2lkKSBQUWNhbmNlbChBSC0+Y29ubkNhbmNlbCwgZXJyYnVmLCBz aXplb2YoZXJyYnVmKSk7Ci0JCQl9CisJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJY29udGlu dWU7CisJCQkvKiBQaXBlIGNsb3NlZCBvciBlcnJvciAtIGV4aXQgdGhyZWFkICovCisJCQlicmVh azsKIAkJfQogCi0JCS8qCi0JCSAqIFNlbmQgUXVlcnlDYW5jZWwgdG8gbGVhZGVyIGNvbm5lY3Rp b24sIGlmIGVuYWJsZWQuICBJZ25vcmUgZXJyb3JzLAotCQkgKiB0aGVyZSdzIG5vdCBtdWNoIHdl IGNhbiBkbyBhYm91dCB0aGVtIGFueXdheS4KLQkJICovCi0JCWlmIChzaWduYWxfaW5mby5teUFI ICE9IE5VTEwgJiYgc2lnbmFsX2luZm8ubXlBSC0+Y29ubkNhbmNlbCAhPSBOVUxMKQotCQkJKHZv aWQpIFBRY2FuY2VsKHNpZ25hbF9pbmZvLm15QUgtPmNvbm5DYW5jZWwsCi0JCQkJCQkJZXJyYnVm LCBzaXplb2YoZXJyYnVmKSk7Ci0KLQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZv X2xvY2spOworCQlDYW5jZWxCYWNrZW5kcygpOwogCiAJCS8qCi0JCSAqIFJlcG9ydCB3ZSdyZSBx dWl0dGluZywgdXNpbmcgbm90aGluZyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KLQkJICogd3JpdGUo MikuICAoV2UgbWlnaHQgYmUgYWJsZSB0byBnZXQgYXdheSB3aXRoIHVzaW5nIHBnX2xvZ18qKCkK LQkJICogaGVyZSwgYnV0IHNpbmNlIHdlIHRlcm1pbmF0ZWQgb3RoZXIgdGhyZWFkcyB1bmNsZWFu bHkgYWJvdmUsIGl0Ci0JCSAqIHNlZW1zIGJldHRlciB0byBhc3N1bWUgYXMgbGl0dGxlIGFzIHBv c3NpYmxlLikKKwkJICogQW5kIGRpZSwgdXNpbmcgX2V4aXQoKSBub3QgZXhpdCgpIGJlY2F1c2Ug dGhlIGxhdHRlciB3aWxsIGludm9rZQorCQkgKiBhdGV4aXQgaGFuZGxlcnMgdGhhdCBjYW4gZmFp bCBpZiB3ZSBpbnRlcnJ1cHRlZCByZWxhdGVkIGNvZGUuCiAJCSAqLwotCQlpZiAocHJvZ25hbWUp Ci0JCXsKLQkJCXdyaXRlX3N0ZGVycihwcm9nbmFtZSk7Ci0JCQl3cml0ZV9zdGRlcnIoIjogIik7 Ci0JCX0KLQkJd3JpdGVfc3RkZXJyKCJ0ZXJtaW5hdGVkIGJ5IHVzZXJcbiIpOworCQlfZXhpdCgx KTsKIAl9CiAKLQkvKiBBbHdheXMgcmV0dXJuIEZBTFNFIHRvIGFsbG93IHNpZ25hbCBoYW5kbGlu ZyB0byBjb250aW51ZSAqLwotCXJldHVybiBGQUxTRTsKKwlyZXR1cm4gTlVMTDsKIH0KIAorLyoK KyAqIFNpZ25hbCBoYW5kbGVyIChVbml4IG9ubHkpLiAgV2FrZXMgdXAgdGhlIGNhbmNlbCB0aHJl YWQgYnkgd3JpdGluZyB0byB0aGUKKyAqIHBpcGUuCisgKi8KK3N0YXRpYyB2b2lkCitzaWdUZXJt SGFuZGxlcihTSUdOQUxfQVJHUykKK3sKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisJY2hh cgkJYyA9IDE7CisKKwkvKiBXYWtlIHVwIHRoZSBjYW5jZWwgdGhyZWFkIC0gd3JpdGUoKSBpcyBh c3luYy1zaWduYWwtc2FmZSAqLworCWlmIChjYW5jZWxfcGlwZVsxXSA+PSAwKQorCQkodm9pZCkg d3JpdGUoY2FuY2VsX3BpcGVbMV0sICZjLCAxKTsKKworCWVycm5vID0gc2F2ZV9lcnJubzsKK30K KworI2VuZGlmCQkJCQkJCS8qIFdJTjMyICovCisKIC8qCiAgKiBFbmFibGUgY2FuY2VsIGludGVy cnVwdCBoYW5kbGVyLCBpZiBub3QgYWxyZWFkeSBkb25lLgogICovCiBzdGF0aWMgdm9pZAogc2V0 X2NhbmNlbF9oYW5kbGVyKHZvaWQpCiB7Ci0JaWYgKCFzaWduYWxfaW5mby5oYW5kbGVyX3NldCkK KwlpZiAoc2lnbmFsX2luZm8uaGFuZGxlcl9zZXQpCisJCXJldHVybjsKKworCXNpZ25hbF9pbmZv LmhhbmRsZXJfc2V0ID0gdHJ1ZTsKKworCXB0aHJlYWRfbXV0ZXhfaW5pdCgmc2lnbmFsX2luZm9f bG9jaywgTlVMTCk7CisKKyNpZmRlZiBXSU4zMgorCVNldENvbnNvbGVDdHJsSGFuZGxlcihjb25z b2xlSGFuZGxlciwgVFJVRSk7CisjZWxzZQorCisJLyoKKwkgKiBTZXQgdXAgdGhlIHNlbGYtcGlw ZSBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHNpZ25hbCBoYW5kbGVyIGFuZAorCSAqIGNhbmNl bCB0aHJlYWQuICBXZSB1c2UgYSBwaXBlIGJlY2F1c2Ugd3JpdGUoKSBpcyBhc3luYy1zaWduYWwt c2FmZS4KKwkgKi8KKwlpZiAocGlwZShjYW5jZWxfcGlwZSkgPCAwKQogCXsKLQkJc2lnbmFsX2lu Zm8uaGFuZGxlcl9zZXQgPSB0cnVlOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUg cGlwZSBmb3IgY2FuY2VsOiAlbSIpOworCQlleGl0KDEpOworCX0KIAotCQlJbml0aWFsaXplQ3Jp dGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKKwkvKgorCSAqIE1ha2UgdGhlIHdyaXRl IGVuZCBub24tYmxvY2tpbmcsIHNvIHRoYXQgdGhlIHNpZ25hbCBoYW5kbGVyIHdvbid0IGJsb2Nr CisJICogaWYgdGhlIHBpcGUgYnVmZmVyIGlzIGZ1bGwgKHdoaWNoIGlzIHZlcnkgdW5saWtlbHkg aW4gcHJhY3RpY2UgYnV0CisJICogcG9zc2libGUgaW4gdGhlb3J5KS4KKwkgKi8KKwlmY250bChj YW5jZWxfcGlwZVsxXSwgRl9TRVRGTCwgT19OT05CTE9DSyk7CiAKLQkJU2V0Q29uc29sZUN0cmxI YW5kbGVyKGNvbnNvbGVIYW5kbGVyLCBUUlVFKTsKKwl7CisJCWludAkJCXJjID0gcHRocmVhZF9j cmVhdGUoJmNhbmNlbF90aHJlYWQsIE5VTEwsIGNhbmNlbF90aHJlYWRfbWFpbiwgTlVMTCk7CisK KwkJaWYgKHJjICE9IDApCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBj YW5jZWwgdGhyZWFkOiAlcyIsIHN0cmVycm9yKHJjKSk7CisJCQlleGl0KDEpOworCQl9CiAJfQot fQogCi0jZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KKwlwcXNpZ25hbChTSUdJTlQsIHNpZ1Rlcm1I YW5kbGVyKTsKKwlwcXNpZ25hbChTSUdURVJNLCBzaWdUZXJtSGFuZGxlcik7CisJcHFzaWduYWwo U0lHUVVJVCwgc2lnVGVybUhhbmRsZXIpOworI2VuZGlmCit9CiAKIAogLyoKICAqIHNldF9hcmNo aXZlX2NhbmNlbF9pbmZvCiAgKgotICogRmlsbCBBSC0+Y29ubkNhbmNlbCB3aXRoIGNhbmNlbGxh dGlvbiBpbmZvIGZvciB0aGUgc3BlY2lmaWVkIGRhdGFiYXNlCisgKiBGaWxsIEFILT5jYW5jZWxD b25uIHdpdGggY2FuY2VsbGF0aW9uIGluZm8gZm9yIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UKICAq IGNvbm5lY3Rpb247IG9yIGNsZWFyIGl0IGlmIGNvbm4gaXMgTlVMTC4KICAqLwogdm9pZAogc2V0 X2FyY2hpdmVfY2FuY2VsX2luZm8oQXJjaGl2ZUhhbmRsZSAqQUgsIFBHY29ubiAqY29ubikKIHsK LQlQR2NhbmNlbCAgICpvbGRDb25uQ2FuY2VsOworCVBHY2FuY2VsQ29ubiAqb2xkQ2FuY2VsQ29u bjsKIAogCS8qCi0JICogQWN0aXZhdGUgdGhlIGludGVycnVwdCBoYW5kbGVyIGlmIHdlIGRpZG4n dCB5ZXQgaW4gdGhpcyBwcm9jZXNzLiAgT24KLQkgKiBXaW5kb3dzLCB0aGlzIGFsc28gaW5pdGlh bGl6ZXMgc2lnbmFsX2luZm9fbG9jazsgdGhlcmVmb3JlIGl0J3MKLQkgKiBpbXBvcnRhbnQgdGhh dCB0aGlzIGhhcHBlbiBhdCBsZWFzdCBvbmNlIGJlZm9yZSB3ZSBmb3JrIG9mZiBhbnkKLQkgKiB0 aHJlYWRzLgorCSAqIEFjdGl2YXRlIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpZiB3ZSBkaWRuJ3Qg eWV0IGluIHRoaXMgcHJvY2Vzcy4gIFRoaXMKKwkgKiBhbHNvIGluaXRpYWxpemVzIHNpZ25hbF9p bmZvX2xvY2s7IHRoZXJlZm9yZSBpdCdzIGltcG9ydGFudCB0aGF0IHRoaXMKKwkgKiBoYXBwZW4g YXQgbGVhc3Qgb25jZSBiZWZvcmUgd2UgZm9yayBvZmYgYW55IHRocmVhZHMuCiAJICovCiAJc2V0 X2NhbmNlbF9oYW5kbGVyKCk7CiAKIAkvKgotCSAqIE9uIFVuaXgsIHdlIGFzc3VtZSB0aGF0IHN0 b3JpbmcgYSBwb2ludGVyIHZhbHVlIGlzIGF0b21pYyB3aXRoIHJlc3BlY3QKLQkgKiB0byBhbnkg cG9zc2libGUgc2lnbmFsIGludGVycnVwdC4gIE9uIFdpbmRvd3MsIHVzZSBhIGNyaXRpY2FsIHNl Y3Rpb24uCisJICogVXNlIG11dGV4IHRvIHByZXZlbnQgdGhlIGNhbmNlbCBoYW5kbGVyIGZyb20g dXNpbmcgdGhlIHBvaW50ZXIgd2hpbGUKKwkgKiB3ZSdyZSBjaGFuZ2luZyBpdC4KIAkgKi8KLQot I2lmZGVmIFdJTjMyCi0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJnNpZ25hbF9pbmZvX2xvY2spOwot I2VuZGlmCisJcHRocmVhZF9tdXRleF9sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIAogCS8qIEZy ZWUgdGhlIG9sZCBvbmUgaWYgd2UgaGF2ZSBvbmUgKi8KLQlvbGRDb25uQ2FuY2VsID0gQUgtPmNv bm5DYW5jZWw7CisJb2xkQ2FuY2VsQ29ubiA9IEFILT5jYW5jZWxDb25uOwogCS8qIGJlIHN1cmUg aW50ZXJydXB0IGhhbmRsZXIgZG9lc24ndCB1c2UgcG9pbnRlciB3aGlsZSBmcmVlaW5nICovCi0J QUgtPmNvbm5DYW5jZWwgPSBOVUxMOworCUFILT5jYW5jZWxDb25uID0gTlVMTDsKIAotCWlmIChv bGRDb25uQ2FuY2VsICE9IE5VTEwpCi0JCVBRZnJlZUNhbmNlbChvbGRDb25uQ2FuY2VsKTsKKwlp ZiAob2xkQ2FuY2VsQ29ubiAhPSBOVUxMKQorCQlQUWNhbmNlbEZpbmlzaChvbGRDYW5jZWxDb25u KTsKIAogCS8qIFNldCB0aGUgbmV3IG9uZSBpZiBzcGVjaWZpZWQgKi8KIAlpZiAoY29ubikKLQkJ QUgtPmNvbm5DYW5jZWwgPSBQUWdldENhbmNlbChjb25uKTsKKwkJQUgtPmNhbmNlbENvbm4gPSBQ UWNhbmNlbENyZWF0ZShjb25uKTsKIAogCS8qCiAJICogT24gVW5peCwgdGhlcmUncyBvbmx5IGV2 ZXIgb25lIGFjdGl2ZSBBcmNoaXZlSGFuZGxlIHBlciBwcm9jZXNzLCBzbyB3ZQpAQCAtNzc2LDQ5 ICs3ODIsMzUgQEAgc2V0X2FyY2hpdmVfY2FuY2VsX2luZm8oQXJjaGl2ZUhhbmRsZSAqQUgsIFBH Y29ubiAqY29ubikKIAkJc2lnbmFsX2luZm8ubXlBSCA9IEFIOwogI2VuZGlmCiAKLSNpZmRlZiBX SU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgor CXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIH0KIAogLyoKICAqIHNl dF9jYW5jZWxfcHN0YXRlCiAgKgogICogU2V0IHNpZ25hbF9pbmZvLnBzdGF0ZSB0byBwb2ludCB0 byB0aGUgc3BlY2lmaWVkIFBhcmFsbGVsU3RhdGUsIGlmIGFueS4KLSAqIFdlIG5lZWQgdGhpcyBt YWlubHkgdG8gaGF2ZSBhbiBpbnRlcmxvY2sgYWdhaW5zdCBXaW5kb3dzIHNpZ25hbCB0aHJlYWQu CisgKiBXZSBuZWVkIHRoaXMgbWFpbmx5IHRvIGhhdmUgYW4gaW50ZXJsb2NrIGFnYWluc3QgdGhl IGNhbmNlbCBoYW5kbGVyIHRocmVhZC4KICAqLwogc3RhdGljIHZvaWQKIHNldF9jYW5jZWxfcHN0 YXRlKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSkKIHsKLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGlj YWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsKLSNlbmRpZgotCisJcHRocmVhZF9tdXRleF9s b2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIAlzaWduYWxfaW5mby5wc3RhdGUgPSBwc3RhdGU7Ci0K LSNpZmRlZiBXSU4zMgotCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5mb19sb2NrKTsK LSNlbmRpZgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzaWduYWxfaW5mb19sb2NrKTsKIH0KIAog LyoKICAqIHNldF9jYW5jZWxfc2xvdF9hcmNoaXZlCiAgKgogICogU2V0IFBhcmFsbGVsU2xvdCdz IEFIIGZpZWxkIHRvIHBvaW50IHRvIHRoZSBzcGVjaWZpZWQgYXJjaGl2ZSwgaWYgYW55LgotICog V2UgbmVlZCB0aGlzIG1haW5seSB0byBoYXZlIGFuIGludGVybG9jayBhZ2FpbnN0IFdpbmRvd3Mg c2lnbmFsIHRocmVhZC4KKyAqIFdlIG5lZWQgdGhpcyBtYWlubHkgdG8gaGF2ZSBhbiBpbnRlcmxv Y2sgYWdhaW5zdCB0aGUgY2FuY2VsIGhhbmRsZXIgdGhyZWFkLgogICovCiBzdGF0aWMgdm9pZAog c2V0X2NhbmNlbF9zbG90X2FyY2hpdmUoUGFyYWxsZWxTbG90ICpzbG90LCBBcmNoaXZlSGFuZGxl ICpBSCkKIHsKLSNpZmRlZiBXSU4zMgotCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZzaWduYWxfaW5m b19sb2NrKTsKLSNlbmRpZgotCisJcHRocmVhZF9tdXRleF9sb2NrKCZzaWduYWxfaW5mb19sb2Nr KTsKIAlzbG90LT5BSCA9IEFIOwotCi0jaWZkZWYgV0lOMzIKLQlMZWF2ZUNyaXRpY2FsU2VjdGlv bigmc2lnbmFsX2luZm9fbG9jayk7Ci0jZW5kaWYKKwlwdGhyZWFkX211dGV4X3VubG9jaygmc2ln bmFsX2luZm9fbG9jayk7CiB9CiAKIApAQCAtOTMzLDcgKzkyNSw3IEBAIFBhcmFsbGVsQmFja3Vw U3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkvKgogCSAqIFRlbXBvcmFyaWx5IGRpc2FibGUg cXVlcnkgY2FuY2VsbGF0aW9uIG9uIHRoZSBsZWFkZXIgY29ubmVjdGlvbi4gIFRoaXMKLQkgKiBl bnN1cmVzIHRoYXQgY2hpbGQgcHJvY2Vzc2VzIHdvbid0IGluaGVyaXQgdmFsaWQgQUgtPmNvbm5D YW5jZWwKKwkgKiBlbnN1cmVzIHRoYXQgY2hpbGQgcHJvY2Vzc2VzIHdvbid0IGluaGVyaXQgdmFs aWQgQUgtPmNhbmNlbENvbm4KIAkgKiBzZXR0aW5ncyBhbmQgdGh1cyB3b24ndCB0cnkgdG8gaXNz dWUgY2FuY2VscyBhZ2FpbnN0IHRoZSBsZWFkZXIncwogCSAqIGNvbm5lY3Rpb24uICBObyBoYXJt IGlzIGRvbmUgaWYgd2UgZmFpbCB3aGlsZSBpdCdzIGRpc2FibGVkLCBiZWNhdXNlCiAJICogdGhl IGxlYWRlciBjb25uZWN0aW9uIGlzIGlkbGUgYXQgdGhpcyBwb2ludCBhbnl3YXkuCkBAIC05OTEs NiArOTgzLDE3IEBAIFBhcmFsbGVsQmFja3VwU3RhcnQoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCQkv KiBpbnN0cnVjdCBzaWduYWwgaGFuZGxlciB0aGF0IHdlJ3JlIGluIGEgd29ya2VyIG5vdyAqLwog CQkJc2lnbmFsX2luZm8uYW1fd29ya2VyID0gdHJ1ZTsKIAorCQkJLyoKKwkJCSAqIFJlc2V0IGNh bmNlbCBoYW5kbGVyIHN0YXRlIHNvIHRoYXQgdGhlIHdvcmtlciB3aWxsIHNldCB1cCBpdHMKKwkJ CSAqIG93biBjYW5jZWwgdGhyZWFkIHdoZW4gaXQgY2FsbHMgc2V0X2FyY2hpdmVfY2FuY2VsX2lu Zm8oKS4KKwkJCSAqIFRocmVhZHMgZG9uJ3Qgc3Vydml2ZSBmb3JrKCksIHNvIHdlIGNhbid0IHVz ZSB0aGUgbGVhZGVyJ3MuCisJCQkgKiBBbHNvIGNsb3NlIHRoZSBpbmhlcml0ZWQgcGlwZSBmZHMu CisJCQkgKi8KKwkJCXNpZ25hbF9pbmZvLmhhbmRsZXJfc2V0ID0gZmFsc2U7CisJCQljbG9zZShj YW5jZWxfcGlwZVswXSk7CisJCQljbG9zZShjYW5jZWxfcGlwZVsxXSk7CisJCQljYW5jZWxfcGlw ZVswXSA9IGNhbmNlbF9waXBlWzFdID0gLTE7CisKIAkJCS8qIGNsb3NlIHJlYWQgZW5kIG9mIFdv cmtlciAtPiBMZWFkZXIgKi8KIAkJCWNsb3Nlc29ja2V0KHBpcGVXTVtQSVBFX1JFQURdKTsKIAkJ CS8qIGNsb3NlIHdyaXRlIGVuZCBvZiBMZWFkZXIgLT4gV29ya2VyICovCkBAIC0xNDA3LDggKzE0 MTAsMTggQEAgTGlzdGVuVG9Xb3JrZXJzKEFyY2hpdmVIYW5kbGUgKkFILCBQYXJhbGxlbFN0YXRl ICpwc3RhdGUsIGJvb2wgZG9fd2FpdCkKIAogCWlmICghbXNnKQogCXsKLQkJLyogSWYgZG9fd2Fp dCBpcyB0cnVlLCB3ZSBtdXN0IGhhdmUgZGV0ZWN0ZWQgRU9GIG9uIHNvbWUgc29ja2V0ICovCi0J CWlmIChkb193YWl0KQorCQkvKgorCQkgKiBJZiBkb193YWl0IGlzIHRydWUsIHdlIG11c3QgaGF2 ZSBkZXRlY3RlZCBFT0Ygb24gc29tZSBzb2NrZXQuIElmCisJCSAqIGl0J3MgZHVlIHRvIGEgY2Fu Y2VsIHJlcXVlc3QsIHRoYXQncyBleHBlY3RlZCwgb3RoZXJ3aXNlIGl0J3MgYQorCQkgKiBwcm9i bGVtLgorCQkgKi8KKwkJYm9vbAkJY2FuY2VsX3JlcXVlc3RlZDsKKworCQlwdGhyZWFkX211dGV4 X2xvY2soJnNpZ25hbF9pbmZvX2xvY2spOworCQljYW5jZWxfcmVxdWVzdGVkID0gc2lnbmFsX2lu Zm8uY2FuY2VsX3JlcXVlc3RlZDsKKwkJcHRocmVhZF9tdXRleF91bmxvY2soJnNpZ25hbF9pbmZv X2xvY2spOworCisJCWlmIChkb193YWl0ICYmICFjYW5jZWxfcmVxdWVzdGVkKQogCQkJcGdfZmF0 YWwoImEgd29ya2VyIHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHkiKTsKIAkJcmV0dXJuIGZhbHNl OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCAzNWQzYTA3OTE1ZC4u NzI2NzJlNGViMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTUxNjAs NyArNTE2MCw3IEBAIENsb25lQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAogCS8qIFRoZSBj bG9uZSB3aWxsIGhhdmUgaXRzIG93biBjb25uZWN0aW9uLCBzbyBkaXNyZWdhcmQgY29ubmVjdGlv biBzdGF0ZSAqLwogCWNsb25lLT5jb25uZWN0aW9uID0gTlVMTDsKLQljbG9uZS0+Y29ubkNhbmNl bCA9IE5VTEw7CisJY2xvbmUtPmNhbmNlbENvbm4gPSBOVUxMOwogCWNsb25lLT5jdXJyVXNlciA9 IE5VTEw7CiAJY2xvbmUtPmN1cnJTY2hlbWEgPSBOVUxMOwogCWNsb25lLT5jdXJyVGFibGVBbSA9 IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKaW5kZXggMzI1YjUzZmM5YmQu LjFmNjVkZDQ3NjRiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCkBAIC0yODgs OCArMjg4LDEyIEBAIHN0cnVjdCBfYXJjaGl2ZUhhbmRsZQogCWNoYXIJICAgKnNhdmVkUGFzc3dv cmQ7CS8qIHBhc3N3b3JkIGZvciByb3B0LT51c2VybmFtZSwgaWYga25vd24gKi8KIAljaGFyCSAg ICp1c2Vfcm9sZTsKIAlQR2Nvbm4JICAgKmNvbm5lY3Rpb247Ci0JLyogSWYgY29ubkNhbmNlbCBp c24ndCBOVUxMLCBTSUdJTlQgaGFuZGxlciB3aWxsIHNlbmQgYSBjYW5jZWwgKi8KLQlQR2NhbmNl bCAgICp2b2xhdGlsZSBjb25uQ2FuY2VsOworCisJLyoKKwkgKiBJZiBjYW5jZWxDb25uIGlzbid0 IE5VTEwsIFNJR0lOVCBoYW5kbGVyIHdpbGwgdHJpZ2dlciB0aGUgY2FuY2VsIHRocmVhZAorCSAq IHRvIHNlbmQgYSBjYW5jZWwuCisJICovCisJUEdjYW5jZWxDb25uICpjYW5jZWxDb25uOwogCiAJ aW50CQkJY29ubmVjdFRvREI7CS8qIEZsYWcgdG8gaW5kaWNhdGUgaWYgZGlyZWN0IERCIGNvbm5l Y3Rpb24gaXMKIAkJCQkJCQkJICogcmVxdWlyZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfZGIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYwppbmRl eCA1YzM0OTI3OWJlYi4uMGNjMjlhOGFhNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfZGIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMKQEAgLTg0 LDcgKzg0LDcgQEAgUmVjb25uZWN0VG9TZXJ2ZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmRibmFtZSkKIAogCS8qCiAJICogTm90ZTogd2Ugd2FudCB0byBlc3RhYmxpc2ggdGhlIG5l dyBjb25uZWN0aW9uLCBhbmQgaW4gcGFydGljdWxhciB1cGRhdGUKLQkgKiBBcmNoaXZlSGFuZGxl J3MgY29ubkNhbmNlbCwgYmVmb3JlIGNsb3Npbmcgb2xkIGNvbm5lY3Rpb24uICBPdGhlcndpc2UK KwkgKiBBcmNoaXZlSGFuZGxlJ3MgY2FuY2VsQ29ubiwgYmVmb3JlIGNsb3Npbmcgb2xkIGNvbm5l Y3Rpb24uICBPdGhlcndpc2UKIAkgKiBhbiBpbGwtdGltZWQgU0lHSU5UIGNvdWxkIHRyeSB0byBh Y2Nlc3MgYSBkZWFkIGNvbm5lY3Rpb24uCiAJICovCiAJQUgtPmNvbm5lY3Rpb24gPSBOVUxMOwkJ LyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNlQWh4ICovCkBAIC0xNjQsMTIg KzE2NCwxMSBAQCB2b2lkCiBEaXNjb25uZWN0RGF0YWJhc2UoQXJjaGl2ZSAqQUhYKQogewogCUFy Y2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhYOwotCWNoYXIJCWVycmJ1Zlsx XTsKIAogCWlmICghQUgtPmNvbm5lY3Rpb24pCiAJCXJldHVybjsKIAotCWlmIChBSC0+Y29ubkNh bmNlbCkKKwlpZiAoQUgtPmNhbmNlbENvbm4pCiAJewogCQkvKgogCQkgKiBJZiB3ZSBoYXZlIGFu IGFjdGl2ZSBxdWVyeSwgc2VuZCBhIGNhbmNlbCBiZWZvcmUgY2xvc2luZywgaWdub3JpbmcKQEAg LTE3Nyw3ICsxNzYsNyBAQCBEaXNjb25uZWN0RGF0YWJhc2UoQXJjaGl2ZSAqQUhYKQogCQkgKiBo ZWxwZnVsIGR1cmluZyBwZ19mYXRhbCgpLgogCQkgKi8KIAkJaWYgKFBRdHJhbnNhY3Rpb25TdGF0 dXMoQUgtPmNvbm5lY3Rpb24pID09IFBRVFJBTlNfQUNUSVZFKQotCQkJKHZvaWQpIFBRY2FuY2Vs KEFILT5jb25uQ2FuY2VsLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKKwkJCSh2b2lkKSBQUWNh bmNlbEJsb2NraW5nKEFILT5jYW5jZWxDb25uKTsKIAogCQkvKgogCQkgKiBQcmV2ZW50IHNpZ25h bCBoYW5kbGVyIGZyb20gc2VuZGluZyBhIGNhbmNlbCBhZnRlciB0aGlzLgotLSAKMi41Mi4wCgo= --92b74d1ae4eb705129b2613fd37c16c2b782f0c2426edfc81c26d9030263--