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 1vlk54-003KGK-1H for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 08:42:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vlk51-003mnY-1s for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jan 2026 08:42:16 +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 1vlk51-003mnP-0f for pgsql-hackers@lists.postgresql.org; Fri, 30 Jan 2026 08:42:16 +0000 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vlk4y-00000000AKY-40uG for pgsql-hackers@postgresql.org; Fri, 30 Jan 2026 08:42:15 +0000 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-4359a16a400so1558426f8f.1 for ; Fri, 30 Jan 2026 00:42:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769762532; x=1770367332; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=4fWiqsA7PrBetvGSkezY9B0cNbPtYygdsLz31L440MM=; b=muVwgMrCsFfwSxp6ONKoWkG3Bf7A4D+UsmFQWyCFqJsgL2jH4qG/SlYQgbpuobfkPI SPve+qA94y4WE6P1zed0dVrg/z9gf9DereYWvmcpTchV6XChgrlp/xyAt9x2vesdjVDG 1UflBCgeiaFxr5z2Vk5WlRyZDS0fhAkkdsKzS/AsrW8As8eJl1dPn5yipzT/uX992rQI XKo8lwkMSuSNl/SVRjvS/ZuMXGhjUMds0EUHpziIudlYFcA8Kz60nwCl0ad6APcCL4s/ zCzidhXuLmX4NjyvFZMoM4xsqPtsugx0/0O/YUUGlDnVADZ/vqaHqh7eM+a2l26Q/tXu v04w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769762532; x=1770367332; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=4fWiqsA7PrBetvGSkezY9B0cNbPtYygdsLz31L440MM=; b=q3xYIFv8qRCbOJHfXG2fvVMZzvsYGhA8R2LRV/U5AJ4SMh2fFfXYq4tVtkuPusnSP3 YBjl21HdUyIeBeszxyrAqR9OivLl4pnly8SzrrC78+Qw/3cB5BZRzyY8JFTOiSdxupp7 pcQxUqJG6t4VDlh49FqY2rlIneNnusFbWsZBFGwJWJU3fstaJCkrPOHb94uUfFzq6768 JbGIGEe91Fy5w24T53QZOdUalCyBYNbM51YpjVm9P0bCCo2Z51mza6v6TfAqKmCdJYwJ ExLM/ZAe5Xo1xBXLfkt9wq2tvHpfi4LRntXRZzQej0XrEo6kvd+A57xZR7CVL5DL1sOW E3gA== X-Gm-Message-State: AOJu0YxEqUFIg4UrqFXahU5laid2+JUnptGbhDLgXmEsoPgvjLqFOEmH NYsue98LQIBdW/dELB+Kp2YdxZ/y2grgT2STLoh3UOVxaCadsugWoKZd X-Gm-Gg: AZuq6aJ8MVBxoQNqKK+o+woNEPSbiKHN6waHhVnAQIK+6WrIizeVFczZ10MgSXqW47R JiMhMr8cU0zVM6IO+P/CUquW4jnLmKkJocmo1dMBQFdnHHh0geFcFrcj+xy7Xl4gXNXSg/cvuxp fonARDyi6yAA3RheiRwbcfEuFB/f5Zv2zyhU7e6zmze7OIGERTcBsvwr7haFnbLSF9q/k0f5K6O om0vB3oBjRWcKC3rtgUjRc0lj7YU0AkYfWc7z6M9DTwvIjVyZTJAuaTomEpSCaAun9MWaRlbpR6 5Q3ExKRqKWpr/c6dm/8AyCA/MPDosIshwfTU1ZaETzwnCBpFuMeyoBZ0g0e56/efWRCB37V8f8N TSK0vzMxdVI6/W75ZTztYmW6mBt7h6jxIphVfmn14xYwlPKeo1lPowfiLAXhTmYNCeSA0/ikfsd 1INdU7CYlibbw= X-Received: by 2002:a05:6000:2892:b0:435:9882:234e with SMTP id ffacd0b85a97d-435f3ad85d7mr2423968f8f.59.1769762531245; Fri, 30 Jan 2026 00:42:11 -0800 (PST) Received: from [192.168.2.32] ([165.225.27.6]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e1353ac2sm22036368f8f.38.2026.01.30.00.42.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Jan 2026 00:42:10 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Y8k01kj64Fi0ElB30WzbDPTC" Message-ID: <6f983adb-fd5d-4e0e-8400-513fbea304e0@gmail.com> Date: Fri, 30 Jan 2026 09:42:08 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Use correct collation in pg_trgm To: Alexander Korotkov , Zsolt Parragi Cc: pgsql-hackers , Heikki Linnakangas , Kirill Reshke References: <1981b5f0-7d06-4911-a231-23bbb6bf504c@gmail.com> Content-Language: en-US From: David Geier In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Y8k01kj64Fi0ElB30WzbDPTC Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Attached is v3 of the patch with the following changes: On 26.01.2026 14:33, Alexander Korotkov wrote: >> Updated patch looks good, I only noticed two minor things: >> >> * the new test should have a newline at the end of the file Done. >> * and probably a conditional skip based on locale availability, the >> citext_utf8.sql test case does something similar Done, the same way collate.icu.utf8.sql does it. This test also uses the Turkish collation tr-x-icu. > I wonder about existing indexes, which already use default collation > not column collation. Should we add a release note saying they might > be obsolete? Alternatively, given we now have opclass options, we may > add a new opclass option defining whether to use column collation > (must be false for existing indexes). I think adding a release note is fine. We discussed this in [1] already and there's precedence for doing it this way. See [2]. Looking at [3], it seems like we don't include release notes in bug fix commits but rather collect them retroactively before cutting the release. The file doc/src/sgml/release-19.sgml is also still completely empty on master. -- David Geier [1] https://www.postgresql.org/message-id/CAEze2WiUL9idZBbuUN%2BMuWqr6DcPr_-C91E9MTx%3DH62Xx5fHaQ%40mail.gmail.com [2] https://www.postgresql.org/docs/18/release-18.html#RELEASE-18-MIGRATION [3] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=fb1a18810f0 --------------Y8k01kj64Fi0ElB30WzbDPTC Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Use-correct-collation-for-finding-word-boundaries.patch" Content-Disposition: attachment; filename*0="v3-0002-Use-correct-collation-for-finding-word-boundaries.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5MzAwYjFmMzEyNDU1MTQzOTQwNTAxNGE2NTkzMjlmZjYzZjBhZmE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyMyBKYW4gMjAyNiAxNTozOTowNiArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjMgMi8yXSBVc2UgY29ycmVjdCBjb2xsYXRpb24gZm9yIGZpbmRpbmcgd29yZCBib3Vu ZGFyaWVzCgpwZ190cmdtIGZpbmRzIGFsbCB3b3JkcyBpbiB0aGUgaW5wdXQgc3RyaW5nIGFu ZCBjcmVhdGVzIHRyaWdyYW1zIGZvcgp0aGVtLiBXb3JkIGNoYXJhY3RlcnMgYXJlIGFscGhh LW51bWVyaWMgY2hhcmFjdGVycy4gV2hhdCBxdWFsaWZpZXMgYXMKYWxwaGEtbnVtZXJpYyBj aGFyYWN0ZXIgZGVwZW5kcyBvbiB0aGUgY29sbGF0aW9uLiBQcmV2aW91c2x5LCBwZ190cmdt CmFsd2F5cyB1c2VkIHRoZSBkZWZhdWx0IGNvbGxhdGlvbi4gTm93IHRoZSBzcGVjaWZpZWQg Y29sbGF0aW9uIGlzIHVzZWQKaW5zdGVhZC4KLS0tCiAuLi4vcGdfdHJnbS9leHBlY3RlZC9w Z190cmdtX2NvbGxhdGlvbi5vdXQgICAgfCAxMyArKysrKysrKysrKysKIGNvbnRyaWIvcGdf dHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsICAgICB8ICA1ICsrKysrCiBjb250cmli L3BnX3RyZ20vdHJnbS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIGNv bnRyaWIvcGdfdHJnbS90cmdtX29wLmMgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysr KysrKystLS0tLS0tLS0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBzcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xvY2FsZS5oICAg ICAgICAgICAgICAgfCAgOSArKysrKysrLQogNyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRp b25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20v ZXhwZWN0ZWQvcGdfdHJnbV9jb2xsYXRpb24ub3V0IGIvY29udHJpYi9wZ190cmdtL2V4cGVj dGVkL3BnX3RyZ21fY29sbGF0aW9uLm91dAppbmRleCA0NzJjZTg2NzY2NS4uMGNjNTNlZGQ4 MjEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS9leHBlY3RlZC9wZ190cmdtX2NvbGxh dGlvbi5vdXQKKysrIGIvY29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ21fY29sbGF0 aW9uLm91dApAQCAtNDEsMyArNDEsMTYgQEAgU0VMRUNUIHNpbWlsYXJpdHkoJ8Sxc3RhbmJ1 bCcgQ09MTEFURSAiQyIsICdJU1RBTkJVTCcgQ09MTEFURSAiQyIpOwogIDAuNTQ1NDU0NTYK ICgxIHJvdykKIAorLS0gVGVzdCB0aGF0IHdvcmQgYm91bmRhcnkgaWRlbnRpZmljYXRpb24g dXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCitTRUxFQ1Qgc2hvd190cmdtKCdoZWxsb8SxdGVz dEl3b3JsZMSwY29kZScgQ09MTEFURSAidHIteC1pY3UiKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd190cmdtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7MHg4ZmMwYTIsMHg5M2RmYmYsMHgxYmY0M2Ms IiAgaCIsIiBoZSIsMHgyMmQ0NGYsMHg0Mzk4ZmYsY29kLCJkZSAiLGRpYyxlbGwsZXN0LGhl bCxpY28sbGRpLGxsbyxvZGUsb3JsLDB4NzFiOGY1LHJsZCx0ZXMsd29yfQorKDEgcm93KQor CitTRUxFQ1Qgc2hvd190cmdtKCdoZWxsb8SxdGVzdEl3b3JsZMSwY29kZScgQ09MTEFURSAi QyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaG93X3RyZ20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHsiICBjIiwiICBoIiwiICB0IiwiIGNvIiwiIGhlIiwiIHRlIixjb2Qs ImRlICIsZWxsLGVzdCxoZWwsaXdvLCJsZCAiLGxsbywibG8gIixvZGUsb3JsLHJsZCxzdGks dGVzLHRpdyx3b3J9CisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS9z cWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsIGIvY29udHJpYi9wZ190cmdtL3NxbC9wZ190cmdt X2NvbGxhdGlvbi5zcWwKaW5kZXggMTI4Yzk3Y2ViNTQuLmY1MGQ2NzE4NWM3IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbAorKysgYi9j b250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbApAQCAtMjEsMyArMjEs OCBAQCBTRUxFQ1Qgc2hvd190cmdtKCdJU1RBTkJVTCcgQ09MTEFURSAiQyIpOwogCiBTRUxF Q1Qgc2ltaWxhcml0eSgnxLFzdGFuYnVsJyBDT0xMQVRFICJ0ci14LWljdSIsICdJU1RBTkJV TCcgQ09MTEFURSAidHIteC1pY3UiKTsKIFNFTEVDVCBzaW1pbGFyaXR5KCfEsXN0YW5idWwn IENPTExBVEUgIkMiLCAnSVNUQU5CVUwnIENPTExBVEUgIkMiKTsKKworLS0gVGVzdCB0aGF0 IHdvcmQgYm91bmRhcnkgaWRlbnRpZmljYXRpb24gdXNlcyBzcGVjaWZpZWQgY29sbGF0aW9u CisKK1NFTEVDVCBzaG93X3RyZ20oJ2hlbGxvxLF0ZXN0SXdvcmxkxLBjb2RlJyBDT0xMQVRF ICJ0ci14LWljdSIpOworU0VMRUNUIHNob3dfdHJnbSgnaGVsbG/EsXRlc3RJd29ybGTEsGNv ZGUnIENPTExBVEUgIkMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3RyZ20vdHJnbS5oIGIvY29udHJpYi9wZ190cmdtL3RyZ20uaApp bmRleCAxNDdlZWZhYTNjNi4uNmYwZTBhMjA3ODkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdf dHJnbS90cmdtLmgKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ20uaApAQCAtNDcsOSArNDcs OSBAQCB0eXBlZGVmIGNoYXIgdHJnbVszXTsKIH0gd2hpbGUoMCkKIGV4dGVybiBpbnQJKCpD TVBUUkdNKSAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CiAKLSNkZWZpbmUgSVNX T1JEQ0hSKGMpCSh0X2lzYWxudW0oYykpCi0jZGVmaW5lIElTUFJJTlRBQkxFQ0hBUihhKQko IGlzYXNjaWkoICoodW5zaWduZWQgY2hhciopKGEpICkgJiYgKGlzYWxudW0oICoodW5zaWdu ZWQgY2hhciopKGEpICkgfHwgKih1bnNpZ25lZCBjaGFyKikoYSk9PScgJykgKQotI2RlZmlu ZSBJU1BSSU5UQUJMRVRSR00odCkJKCBJU1BSSU5UQUJMRUNIQVIoICgoY2hhciopKHQpKSAp ICYmIElTUFJJTlRBQkxFQ0hBUiggKChjaGFyKikodCkpKzEgKSAmJiBJU1BSSU5UQUJMRUNI QVIoICgoY2hhciopKHQpKSsyICkgKQorI2RlZmluZSBJU1dPUkRDSFIoYywgY29sbGF0aW9u KQkodF9pc2FsbnVtX2NvbGxhdGlvbihjLCBjb2xsYXRpb24pKQorI2RlZmluZSBJU1BSSU5U QUJMRUNIQVIoYSkJCSggaXNhc2NpaSggKih1bnNpZ25lZCBjaGFyKikoYSkgKSAmJiAoaXNh bG51bSggKih1bnNpZ25lZCBjaGFyKikoYSkgKSB8fCAqKHVuc2lnbmVkIGNoYXIqKShhKT09 JyAnKSApCisjZGVmaW5lIElTUFJJTlRBQkxFVFJHTSh0KQkJKCBJU1BSSU5UQUJMRUNIQVIo ICgoY2hhciopKHQpKSApICYmIElTUFJJTlRBQkxFQ0hBUiggKChjaGFyKikodCkpKzEgKSAm JiBJU1BSSU5UQUJMRUNIQVIoICgoY2hhciopKHQpKSsyICkgKQogCiAjZGVmaW5lIElTRVND QVBFQ0hBUih4KSAoKih4KSA9PSAnXFwnKQkvKiBXaWxkY2FyZCBlc2NhcGUgY2hhcmFjdGVy ICovCiAjZGVmaW5lIElTV0lMRENBUkRDSEFSKHgpICgqKHgpID09ICdfJyB8fCAqKHgpID09 ICclJykJLyogV2lsZGNhcmQKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29w LmMgYi9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCmluZGV4IGQ0Yzc1Y2FlZmY5Li4zOTll NmEyNmYzNCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYworKysgYi9j b250cmliL3BnX3RyZ20vdHJnbV9vcC5jCkBAIC0yMjAsMTEgKzIyMCwxMSBAQCBjb21wX3Ry Z20oY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIGVuZHdvcmQgcG9pbnRzIHRv IHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgd29yZAogICovCiBzdGF0aWMgY2hhciAqCi1maW5kX3dv cmQoY2hhciAqc3RyLCBpbnQgbGVuc3RyLCBjaGFyICoqZW5kd29yZCwgaW50ICpjaGFybGVu KQorZmluZF93b3JkKGNoYXIgKnN0ciwgaW50IGxlbnN0ciwgY2hhciAqKmVuZHdvcmQsIGlu dCAqY2hhcmxlbiwgT2lkIGNvbGxhdGlvbikKIHsKIAljaGFyCSAgICpiZWdpbndvcmQgPSBz dHI7CiAKLQl3aGlsZSAoYmVnaW53b3JkIC0gc3RyIDwgbGVuc3RyICYmICFJU1dPUkRDSFIo YmVnaW53b3JkKSkKKwl3aGlsZSAoYmVnaW53b3JkIC0gc3RyIDwgbGVuc3RyICYmICFJU1dP UkRDSFIoYmVnaW53b3JkLCBjb2xsYXRpb24pKQogCQliZWdpbndvcmQgKz0gcGdfbWJsZW4o YmVnaW53b3JkKTsKIAogCWlmIChiZWdpbndvcmQgLSBzdHIgPj0gbGVuc3RyKQpAQCAtMjMy LDcgKzIzMiw3IEBAIGZpbmRfd29yZChjaGFyICpzdHIsIGludCBsZW5zdHIsIGNoYXIgKipl bmR3b3JkLCBpbnQgKmNoYXJsZW4pCiAKIAkqZW5kd29yZCA9IGJlZ2lud29yZDsKIAkqY2hh cmxlbiA9IDA7Ci0Jd2hpbGUgKCplbmR3b3JkIC0gc3RyIDwgbGVuc3RyICYmIElTV09SRENI UigqZW5kd29yZCkpCisJd2hpbGUgKCplbmR3b3JkIC0gc3RyIDwgbGVuc3RyICYmIElTV09S RENIUigqZW5kd29yZCwgY29sbGF0aW9uKSkKIAl7CiAJCSplbmR3b3JkICs9IHBnX21ibGVu KCplbmR3b3JkKTsKIAkJKCpjaGFybGVuKSsrOwpAQCAtMzQ5LDcgKzM0OSw3IEBAIGdlbmVy YXRlX3RyZ21fb25seSh0cmdtICp0cmcsIGNoYXIgKnN0ciwgaW50IHNsZW4sIE9pZCBjb2xs YXRpb24sIFRyZ21Cb3VuZCAqYm91CiAJfQogCiAJZXdvcmQgPSBzdHI7Ci0Jd2hpbGUgKChi d29yZCA9IGZpbmRfd29yZChld29yZCwgc2xlbiAtIChld29yZCAtIHN0ciksICZld29yZCwg JmNoYXJsZW4pKSAhPSBOVUxMKQorCXdoaWxlICgoYndvcmQgPSBmaW5kX3dvcmQoZXdvcmQs IHNsZW4gLSAoZXdvcmQgLSBzdHIpLCAmZXdvcmQsICZjaGFybGVuLCBjb2xsYXRpb24pKSAh PSBOVUxMKQogCXsKICNpZmRlZiBJR05PUkVDQVNFCiAJCWJ3b3JkID0gc3RyX3RvbG93ZXIo YndvcmQsIGV3b3JkIC0gYndvcmQsIGNvbGxhdGlvbik7CkBAIC03NzEsNyArNzcxLDggQEAg Y2FsY193b3JkX3NpbWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNsZW4xLCBjaGFyICpzdHIy LCBpbnQgc2xlbjIsCiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICoKIGdldF93aWxkY2FyZF9w YXJ0KGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbnN0ciwKLQkJCQkgIGNoYXIgKmJ1ZiwgaW50 ICpieXRlbGVuLCBpbnQgKmNoYXJsZW4pCisJCQkJICBjaGFyICpidWYsIGludCAqYnl0ZWxl biwgaW50ICpjaGFybGVuLAorCQkJCSAgT2lkIGNvbGxhdGlvbikKIHsKIAljb25zdCBjaGFy ICpiZWdpbndvcmQgPSBzdHI7CiAJY29uc3QgY2hhciAqZW5kd29yZDsKQEAgLTc5MSw3ICs3 OTIsNyBAQCBnZXRfd2lsZGNhcmRfcGFydChjb25zdCBjaGFyICpzdHIsIGludCBsZW5zdHIs CiAJewogCQlpZiAoaW5fZXNjYXBlKQogCQl7Ci0JCQlpZiAoSVNXT1JEQ0hSKGJlZ2lud29y ZCkpCisJCQlpZiAoSVNXT1JEQ0hSKGJlZ2lud29yZCwgY29sbGF0aW9uKSkKIAkJCQlicmVh azsKIAkJCWluX2VzY2FwZSA9IGZhbHNlOwogCQkJaW5fbGVhZGluZ193aWxkY2FyZF9tZXRh ID0gZmFsc2U7CkBAIC04MDIsNyArODAzLDcgQEAgZ2V0X3dpbGRjYXJkX3BhcnQoY29uc3Qg Y2hhciAqc3RyLCBpbnQgbGVuc3RyLAogCQkJCWluX2VzY2FwZSA9IHRydWU7CiAJCQllbHNl IGlmIChJU1dJTERDQVJEQ0hBUihiZWdpbndvcmQpKQogCQkJCWluX2xlYWRpbmdfd2lsZGNh cmRfbWV0YSA9IHRydWU7Ci0JCQllbHNlIGlmIChJU1dPUkRDSFIoYmVnaW53b3JkKSkKKwkJ CWVsc2UgaWYgKElTV09SRENIUihiZWdpbndvcmQsIGNvbGxhdGlvbikpCiAJCQkJYnJlYWs7 CiAJCQllbHNlCiAJCQkJaW5fbGVhZGluZ193aWxkY2FyZF9tZXRhID0gZmFsc2U7CkBAIC04 NDUsNyArODQ2LDcgQEAgZ2V0X3dpbGRjYXJkX3BhcnQoY29uc3QgY2hhciAqc3RyLCBpbnQg bGVuc3RyLAogCQljbGVuID0gcGdfbWJsZW4oZW5kd29yZCk7CiAJCWlmIChpbl9lc2NhcGUp CiAJCXsKLQkJCWlmIChJU1dPUkRDSFIoZW5kd29yZCkpCisJCQlpZiAoSVNXT1JEQ0hSKGVu ZHdvcmQsIGNvbGxhdGlvbikpCiAJCQl7CiAJCQkJbWVtY3B5KHMsIGVuZHdvcmQsIGNsZW4p OwogCQkJCSgqY2hhcmxlbikrKzsKQEAgLTg3Myw3ICs4NzQsNyBAQCBnZXRfd2lsZGNhcmRf cGFydChjb25zdCBjaGFyICpzdHIsIGludCBsZW5zdHIsCiAJCQkJaW5fdHJhaWxpbmdfd2ls ZGNhcmRfbWV0YSA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9Ci0JCQllbHNlIGlmIChJU1dP UkRDSFIoZW5kd29yZCkpCisJCQllbHNlIGlmIChJU1dPUkRDSFIoZW5kd29yZCwgY29sbGF0 aW9uKSkKIAkJCXsKIAkJCQltZW1jcHkocywgZW5kd29yZCwgY2xlbik7CiAJCQkJKCpjaGFy bGVuKSsrOwpAQCAtOTQ1LDcgKzk0Niw3IEBAIGdlbmVyYXRlX3dpbGRjYXJkX3RyZ20oY29u c3QgY2hhciAqc3RyLCBpbnQgc2xlbiwgT2lkIGNvbGxhdGlvbikKIAkgKi8KIAlld29yZCA9 IHN0cjsKIAl3aGlsZSAoKGV3b3JkID0gZ2V0X3dpbGRjYXJkX3BhcnQoZXdvcmQsIHNsZW4g LSAoZXdvcmQgLSBzdHIpLAotCQkJCQkJCQkJICBidWYsICZieXRlbGVuLCAmY2hhcmxlbikp ICE9IE5VTEwpCisJCQkJCQkJCQkgIGJ1ZiwgJmJ5dGVsZW4sICZjaGFybGVuLCBjb2xsYXRp b24pKSAhPSBOVUxMKQogCXsKICNpZmRlZiBJR05PUkVDQVNFCiAJCWJ1ZjIgPSBzdHJfdG9s b3dlcihidWYsIGJ5dGVsZW4sIGNvbGxhdGlvbik7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCmlu ZGV4IGNkZDA0ZmEwMWFkLi5hODlkYmUxODgwYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMK QEAgLTgxMCw3ICs4MTAsNyBAQCBnZXRDb2xvckluZm8ocmVnZXhfdCAqcmVnZXgsIFRyZ21O RkEgKnRyZ21ORkEsIE9pZCBjb2xsYXRpb24pCiAKIAkJCWlmICghY29udmVydFBnV2NoYXIo Y2hhcnNbal0sICZjLCBjb2xsYXRpb24pKQogCQkJCWNvbnRpbnVlOwkJLyogb2sgdG8gaWdu b3JlIGl0IGFsdG9nZXRoZXIgKi8KLQkJCWlmIChJU1dPUkRDSFIoYy5ieXRlcykpCisJCQlp ZiAoSVNXT1JEQ0hSKGMuYnl0ZXMsIGNvbGxhdGlvbikpCiAJCQkJY29sb3JJbmZvLT53b3Jk Q2hhcnNbY29sb3JJbmZvLT53b3JkQ2hhcnNDb3VudCsrXSA9IGM7CiAJCQllbHNlCiAJCQkJ Y29sb3JJbmZvLT5jb250YWluc05vbldvcmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdHNlYXJjaC90c19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfbG9j YWxlLmMKaW5kZXggMWU5OGYzMjE5NTcuLjNjYWFkMmU1YzJhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gv dHNfbG9jYWxlLmMKQEAgLTM3LDcgKzM3LDcgQEAgdF9pc2FscGhhKGNvbnN0IGNoYXIgKnB0 cikKIH0KIAogaW50Ci10X2lzYWxudW0oY29uc3QgY2hhciAqcHRyKQordF9pc2FsbnVtX2Nv bGxhdGlvbihjb25zdCBjaGFyICpwdHIsIE9pZCBjb2xsYXRpb24pCiB7CiAJcGdfd2NoYXIJ d3N0cltXQ19CVUZfTEVOXTsKIAlpbnQJCQl3bGVuIHBnX2F0dHJpYnV0ZV91bnVzZWQoKTsK QEAgLTQ2LDcgKzQ2LDcgQEAgdF9pc2FsbnVtKGNvbnN0IGNoYXIgKnB0cikKIAlBc3NlcnQo d2xlbiA8PSAxKTsKIAogCS8qIHBhc3Mgc2luZ2xlIGNoYXJhY3Rlciwgb3IgTlVMIGlmIGVt cHR5ICovCi0JcmV0dXJuIHBnX2lzd2FsbnVtKHdzdHJbMF0sIHBnX2RhdGFiYXNlX2xvY2Fs ZSgpKTsKKwlyZXR1cm4gcGdfaXN3YWxudW0od3N0clswXSwgcGdfbmV3bG9jYWxlX2Zyb21f Y29sbGF0aW9uKGNvbGxhdGlvbikpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3RzZWFyY2gvdHNfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xvY2FsZS5o CmluZGV4IGNlYTQxN2E5MWI1Li5iMWEyYTQ1ZWQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdHNlYXJjaC90c19sb2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xv Y2FsZS5oCkBAIC0xOCw2ICsxOCw3IEBACiAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xs YXRpb24uaCIKICNpbmNsdWRlICJ1dGlscy9wZ19sb2NhbGUuaCIKIAogLyogd29ya2luZyBz dGF0ZSBmb3IgdHNlYXJjaF9yZWFkbGluZSAoc2hvdWxkIGJlIGEgbG9jYWwgdmFyIGluIGNh bGxlcikgKi8KQEAgLTQwLDcgKzQxLDEzIEBAIHR5cGVkZWYgc3RydWN0CiAjZGVmaW5lIENP UFlDSEFSKGQscykJbWVtY3B5KGQsIHMsIHBnX21ibGVuKHMpKQogCiBleHRlcm4gaW50CXRf aXNhbHBoYShjb25zdCBjaGFyICpwdHIpOwotZXh0ZXJuIGludAl0X2lzYWxudW0oY29uc3Qg Y2hhciAqcHRyKTsKK2V4dGVybiBpbnQJdF9pc2FsbnVtX2NvbGxhdGlvbihjb25zdCBjaGFy ICpwdHIsIE9pZCBjb2xsYXRpb24pOworCitzdGF0aWMgaW5saW5lIGludAordF9pc2FsbnVt KGNvbnN0IGNoYXIgKnB0cikKK3sKKwlyZXR1cm4gdF9pc2FsbnVtX2NvbGxhdGlvbihwdHIs IERFRkFVTFRfQ09MTEFUSU9OX09JRCk7Cit9CiAKIGV4dGVybiBib29sIHRzZWFyY2hfcmVh ZGxpbmVfYmVnaW4odHNlYXJjaF9yZWFkbGluZV9zdGF0ZSAqc3RwLAogCQkJCQkJCQkgICBj b25zdCBjaGFyICpmaWxlbmFtZSk7Ci0tIAoyLjUxLjAKCg== --------------Y8k01kj64Fi0ElB30WzbDPTC Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Use-correct-collation-for-lowercasing.patch" Content-Disposition: attachment; filename="v3-0001-Use-correct-collation-for-lowercasing.patch" Content-Transfer-Encoding: base64 RnJvbSBlMjM0ZDUxM2FiYzIyMTQ2MjBlMDRkZTQzZDViMmQ0OThkZTY1ZjE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMSBKYW4gMjAyNiAxNDo1NDoyOCArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjMgMS8yXSBVc2UgY29ycmVjdCBjb2xsYXRpb24gZm9yIGxvd2VyY2FzaW5nCgpwZ190 cmdtIGNvbnZlcnRzIHRoZSBpbnB1dCB3b3JkcyB0byBsb3dlcmNhc2UgYmVmb3JlIGV4dHJh Y3RpbmcgdGhlCnRyaWdyYW1zLiBUaGUgbG93ZXJjYXNlIGNvbnZlcnNpb24gZGVwZW5kcyBv biB0aGUgY29sbGF0aW9uLiBQcmV2aW91c2x5LApwZ190cmdtIGFsd2F5cyB1c2VkIHRoZSBk ZWZhdWx0IGNvbGxhdGlvbi4gTm93LCB0aGUgc3BlY2lmaWVkIGNvbGxhdGlvbgppcyB1c2Vk IGluc3RlYWQuCi0tLQogY29udHJpYi9wZ190cmdtL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIC4uLi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ21fY29sbGF0aW9u Lm91dCAgICB8IDQzICsrKysrKysrKysrKysKIGNvbnRyaWIvcGdfdHJnbS9tZXNvbi5idWls ZCAgICAgICAgICAgICAgICAgICB8ICAxICsKIGNvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJn bV9jb2xsYXRpb24uc3FsICAgICB8IDIzICsrKysrKysKIGNvbnRyaWIvcGdfdHJnbS90cmdt LmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBjb250cmliL3BnX3RyZ20vdHJn bV9naW4uYyAgICAgICAgICAgICAgICAgICAgfCAgNyArKy0KIGNvbnRyaWIvcGdfdHJnbS90 cmdtX2dpc3QuYyAgICAgICAgICAgICAgICAgICB8IDEwICsrLS0KIGNvbnRyaWIvcGdfdHJn bS90cmdtX29wLmMgICAgICAgICAgICAgICAgICAgICB8IDYwICsrKysrKysrKystLS0tLS0t LS0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAgICAgICAgICB8IDIw ICsrKy0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfdHJnbS9leHBlY3RlZC9w Z190cmdtX2NvbGxhdGlvbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3Ry Z20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf dHJnbS9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfdHJnbS9NYWtlZmlsZQppbmRleCAxZmJkYzll YzFlZi4uMTQ1MGYyYWFlYTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS9NYWtlZmls ZQorKysgYi9jb250cmliL3BnX3RyZ20vTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDcgQEAgREFU QSA9IHBnX3RyZ20tLTEuNS0tMS42LnNxbCBwZ190cmdtLS0xLjQtLTEuNS5zcWwgcGdfdHJn bS0tMS4zLS0xLjQuc3FsIFwKIAlwZ190cmdtLS0xLjAtLTEuMS5zcWwKIFBHRklMRURFU0Mg PSAicGdfdHJnbSAtIHRyaWdyYW0gbWF0Y2hpbmciCiAKLVJFR1JFU1MgPSBwZ190cmdtIHBn X3dvcmRfdHJnbSBwZ19zdHJpY3Rfd29yZF90cmdtCitSRUdSRVNTID0gcGdfdHJnbSBwZ193 b3JkX3RyZ20gcGdfc3RyaWN0X3dvcmRfdHJnbSBwZ190cmdtX2NvbGxhdGlvbgogCiBpZmRl ZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3RyZ20vZXhwZWN0ZWQvcGdfdHJnbV9jb2xsYXRpb24ub3V0IGIvY29udHJpYi9wZ190 cmdtL2V4cGVjdGVkL3BnX3RyZ21fY29sbGF0aW9uLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNDcyY2U4Njc2NjUKLS0tIC9kZXYvbnVsbAorKysgYi9j b250cmliL3BnX3RyZ20vZXhwZWN0ZWQvcGdfdHJnbV9jb2xsYXRpb24ub3V0CkBAIC0wLDAg KzEsNDMgQEAKKy8qCisgKiBUaGlzIHRlc3QgaXMgZm9yIElDVSBjb2xsYXRpb25zLgorICov CisvKiBza2lwIHRlc3QgaWYgbm90IFVURjggc2VydmVyIGVuY29kaW5nIG9yIG5vIElDVSBj b2xsYXRpb25zIGluc3RhbGxlZCAqLworU0VMRUNUIGdldGRhdGFiYXNlZW5jb2RpbmcoKSA8 PiAnVVRGOCcgT1IKKyAgICAgICAoU0VMRUNUIGNvdW50KCopIEZST00gcGdfY29sbGF0aW9u IFdIRVJFIGNvbGxwcm92aWRlciA9ICdpJyBBTkQgY29sbG5hbWUgPD4gJ3VuaWNvZGUnKSA9 IDAKKyAgICAgICBBUyBza2lwX3Rlc3QgXGdzZXQKK1xpZiA6c2tpcF90ZXN0CitccXVpdAor XGVuZGlmCistLSBUZXN0IHRoYXQgbG93ZXJjYXNlIGNvbnZlcnNpb24gb2YgdHJpZ3JhbXMg dXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCitDUkVBVEUgVEFCTEUgdGVzdChjb2wgVEVYVCBD T0xMQVRFICJ0ci14LWljdSIpOworSU5TRVJUIElOVE8gdGVzdCBWQUxVRVMgKCdJU1RBTkJV TCcpOworU0VMRUNUIHNob3dfdHJnbShjb2wpIEZST00gdGVzdDsKKyAgICAgICAgICAgICAg ICAgICAgICAgc2hvd190cmdtICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsweGYz MWUxYSwweGZlNTgxZCwweDNlZmQzMCxhbmIsYnVsLG5idSxzdGEsdGFuLCJ1bCAifQorKDEg cm93KQorCitTRUxFQ1Qgc2hvd190cmdtKCdJU1RBTkJVTCcgQ09MTEFURSAidHIteC1pY3Ui KTsKKyAgICAgICAgICAgICAgICAgICAgICAgc2hvd190cmdtICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHsweGYzMWUxYSwweGZlNTgxZCwweDNlZmQzMCxhbmIsYnVsLG5idSxz dGEsdGFuLCJ1bCAifQorKDEgcm93KQorCitTRUxFQ1Qgc2hvd190cmdtKCdJU1RBTkJVTCcg Q09MTEFURSAiQyIpOworICAgICAgICAgICAgICAgICAgc2hvd190cmdtICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyB7IiAgaSIsIiBpcyIsYW5iLGJ1bCxpc3QsbmJ1LHN0YSx0YW4sInVsICJ9CisoMSByb3cp CisKK1NFTEVDVCBzaW1pbGFyaXR5KCfEsXN0YW5idWwnIENPTExBVEUgInRyLXgtaWN1Iiwg J0lTVEFOQlVMJyBDT0xMQVRFICJ0ci14LWljdSIpOworIHNpbWlsYXJpdHkgCistLS0tLS0t LS0tLS0KKyAgICAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBzaW1pbGFyaXR5KCfEsXN0 YW5idWwnIENPTExBVEUgIkMiLCAnSVNUQU5CVUwnIENPTExBVEUgIkMiKTsKKyBzaW1pbGFy aXR5IAorLS0tLS0tLS0tLS0tCisgMC41NDU0NTQ1NgorKDEgcm93KQorCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3RyZ20vbWVzb24uYnVpbGQgYi9jb250cmliL3BnX3RyZ20vbWVzb24u YnVpbGQKaW5kZXggM2NjMjk5ZDVlYWEuLjk1ZDI4MDZkZGE2IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3RyZ20vbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi9wZ190cmdtL21lc29uLmJ1 aWxkCkBAIC00MSw2ICs0MSw3IEBAIHRlc3RzICs9IHsKICAgICAgICdwZ190cmdtJywKICAg ICAgICdwZ193b3JkX3RyZ20nLAogICAgICAgJ3BnX3N0cmljdF93b3JkX3RyZ20nLAorICAg ICAgJ3BnX3RyZ21fY29sbGF0aW9uJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ190cmdtL3NxbC9wZ190cmdtX2NvbGxhdGlvbi5zcWwgYi9jb250cmliL3Bn X3RyZ20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMTI4Yzk3Y2ViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb250 cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbApAQCAtMCwwICsxLDIzIEBA CisvKgorICogVGhpcyB0ZXN0IGlzIGZvciBJQ1UgY29sbGF0aW9ucy4KKyAqLworCisvKiBz a2lwIHRlc3QgaWYgbm90IFVURjggc2VydmVyIGVuY29kaW5nIG9yIG5vIElDVSBjb2xsYXRp b25zIGluc3RhbGxlZCAqLworU0VMRUNUIGdldGRhdGFiYXNlZW5jb2RpbmcoKSA8PiAnVVRG OCcgT1IKKyAgICAgICAoU0VMRUNUIGNvdW50KCopIEZST00gcGdfY29sbGF0aW9uIFdIRVJF IGNvbGxwcm92aWRlciA9ICdpJyBBTkQgY29sbG5hbWUgPD4gJ3VuaWNvZGUnKSA9IDAKKyAg ICAgICBBUyBza2lwX3Rlc3QgXGdzZXQKK1xpZiA6c2tpcF90ZXN0CitccXVpdAorXGVuZGlm CisKKy0tIFRlc3QgdGhhdCBsb3dlcmNhc2UgY29udmVyc2lvbiBvZiB0cmlncmFtcyB1c2Vz IHNwZWNpZmllZCBjb2xsYXRpb24KKworQ1JFQVRFIFRBQkxFIHRlc3QoY29sIFRFWFQgQ09M TEFURSAidHIteC1pY3UiKTsKK0lOU0VSVCBJTlRPIHRlc3QgVkFMVUVTICgnSVNUQU5CVUwn KTsKK1NFTEVDVCBzaG93X3RyZ20oY29sKSBGUk9NIHRlc3Q7CitTRUxFQ1Qgc2hvd190cmdt KCdJU1RBTkJVTCcgQ09MTEFURSAidHIteC1pY3UiKTsKKworU0VMRUNUIHNob3dfdHJnbSgn SVNUQU5CVUwnIENPTExBVEUgIkMiKTsKKworU0VMRUNUIHNpbWlsYXJpdHkoJ8Sxc3RhbmJ1 bCcgQ09MTEFURSAidHIteC1pY3UiLCAnSVNUQU5CVUwnIENPTExBVEUgInRyLXgtaWN1Iik7 CitTRUxFQ1Qgc2ltaWxhcml0eSgnxLFzdGFuYnVsJyBDT0xMQVRFICJDIiwgJ0lTVEFOQlVM JyBDT0xMQVRFICJDIik7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vdHJnbS5oIGIv Y29udHJpYi9wZ190cmdtL3RyZ20uaAppbmRleCBjYTAxNzU4NTM2OS4uMTQ3ZWVmYWEzYzYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtLmgKKysrIGIvY29udHJpYi9wZ190 cmdtL3RyZ20uaApAQCAtMTE5LDggKzExOSw4IEBAIGV4dGVybiBkb3VibGUgc3RyaWN0X3dv cmRfc2ltaWxhcml0eV90aHJlc2hvbGQ7CiBleHRlcm4gZG91YmxlIGluZGV4X3N0cmF0ZWd5 X2dldF9saW1pdChTdHJhdGVneU51bWJlciBzdHJhdGVneSk7CiBleHRlcm4gdWludDMyIHRy Z20yaW50KHRyZ20gKnB0cik7CiBleHRlcm4gdm9pZCBjb21wYWN0X3RyaWdyYW0odHJnbSAq dHB0ciwgY2hhciAqc3RyLCBpbnQgYnl0ZWxlbik7Ci1leHRlcm4gVFJHTSAqZ2VuZXJhdGVf dHJnbShjaGFyICpzdHIsIGludCBzbGVuKTsKLWV4dGVybiBUUkdNICpnZW5lcmF0ZV93aWxk Y2FyZF90cmdtKGNvbnN0IGNoYXIgKnN0ciwgaW50IHNsZW4pOworZXh0ZXJuIFRSR00gKmdl bmVyYXRlX3RyZ20oY2hhciAqc3RyLCBpbnQgc2xlbiwgT2lkIGNvbGxhdGlvbik7CitleHRl cm4gVFJHTSAqZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBz bGVuLCBPaWQgY29sbGF0aW9uKTsKIGV4dGVybiBmbG9hdDQgY250X3NtbChUUkdNICp0cmcx LCBUUkdNICp0cmcyLCBib29sIGluZXhhY3QpOwogZXh0ZXJuIGJvb2wgdHJnbV9jb250YWlu ZWRfYnkoVFJHTSAqdHJnMSwgVFJHTSAqdHJnMik7CiBleHRlcm4gYm9vbCAqdHJnbV9wcmVz ZW5jZV9tYXAoVFJHTSAqcXVlcnksIFRSR00gKmtleSk7CmRpZmYgLS1naXQgYS9jb250cmli L3BnX3RyZ20vdHJnbV9naW4uYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCmluZGV4 IDAxNGJiM2M4NDhjLi4xMjVlNzFjYTIzYSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdt L3RyZ21fZ2luLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKQEAgLTQyLDcg KzQyLDcgQEAgZ2luX2V4dHJhY3RfdmFsdWVfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCiAJ Km5lbnRyaWVzID0gMDsKIAotCXRyZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlkodmFs KSwgVkFSU0laRV9BTllfRVhIRFIodmFsKSk7CisJdHJnID0gZ2VuZXJhdGVfdHJnbShWQVJE QVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FOWV9FWEhEUih2YWwpLCBQR19HRVRfQ09MTEFUSU9O KCkpOwogCXRyZ2xlbiA9IEFSUk5FTEVNKHRyZyk7CiAKIAlpZiAodHJnbGVuID4gMCkKQEAg LTkzLDcgKzkzLDcgQEAgZ2luX2V4dHJhY3RfcXVlcnlfdHJnbShQR19GVU5DVElPTl9BUkdT KQogCQljYXNlIFdvcmRTaW1pbGFyaXR5U3RyYXRlZ3lOdW1iZXI6CiAJCWNhc2UgU3RyaWN0 V29yZFNpbWlsYXJpdHlTdHJhdGVneU51bWJlcjoKIAkJY2FzZSBFcXVhbFN0cmF0ZWd5TnVt YmVyOgotCQkJdHJnID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpF X0FOWV9FWEhEUih2YWwpKTsKKwkJCXRyZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlko dmFsKSwgVkFSU0laRV9BTllfRVhIRFIodmFsKSwgUEdfR0VUX0NPTExBVElPTigpKTsKIAkJ CWJyZWFrOwogCQljYXNlIElMaWtlU3RyYXRlZ3lOdW1iZXI6CiAjaWZuZGVmIElHTk9SRUNB U0UKQEAgLTEwNyw3ICsxMDcsOCBAQCBnaW5fZXh0cmFjdF9xdWVyeV90cmdtKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkgKiBwb3RlbnRpYWxseS1tYXRjaGluZyBzdHJpbmcgbXVzdCBpbmNs dWRlLgogCQkJICovCiAJCQl0cmcgPSBnZW5lcmF0ZV93aWxkY2FyZF90cmdtKFZBUkRBVEFf QU5ZKHZhbCksCi0JCQkJCQkJCQkJIFZBUlNJWkVfQU5ZX0VYSERSKHZhbCkpOworCQkJCQkJ CQkJCSBWQVJTSVpFX0FOWV9FWEhEUih2YWwpLAorCQkJCQkJCQkJCSBQR19HRVRfQ09MTEFU SU9OKCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgUmVnRXhwSUNhc2VTdHJhdGVneU51bWJlcjoK ICNpZm5kZWYgSUdOT1JFQ0FTRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21f Z2lzdC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCmluZGV4IDJmMGQ2MTk4NWE1 Li4yMmNjMmE2ZjdiMSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5j CisrKyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYwpAQCAtMTIzLDcgKzEyMyw3IEBA IGd0cmdtX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVRSR00JICAgKnJlczsKIAkJ dGV4dAkgICAqdmFsID0gRGF0dW1HZXRUZXh0UFAoZW50cnktPmtleSk7CiAKLQkJcmVzID0g Z2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FOWV9FWEhEUih2YWwp KTsKKwkJcmVzID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FO WV9FWEhEUih2YWwpLCBQR19HRVRfQ09MTEFUSU9OKCkpOwogCQlyZXR2YWwgPSBwYWxsb2Nf b2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdl dERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCkBAIC0yNDIs NyArMjQyLDggQEAgZ3RyZ21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJY2Fz ZSBTdHJpY3RXb3JkU2ltaWxhcml0eVN0cmF0ZWd5TnVtYmVyOgogCQkJY2FzZSBFcXVhbFN0 cmF0ZWd5TnVtYmVyOgogCQkJCXF0cmcgPSBnZW5lcmF0ZV90cmdtKFZBUkRBVEEocXVlcnkp LAotCQkJCQkJCQkJIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaKTsKKwkJCQkJCQkJCSBxdWVyeXNp emUgLSBWQVJIRFJTWiwKKwkJCQkJCQkJCSBQR19HRVRfQ09MTEFUSU9OKCkpOwogCQkJCWJy ZWFrOwogCQkJY2FzZSBJTGlrZVN0cmF0ZWd5TnVtYmVyOgogI2lmbmRlZiBJR05PUkVDQVNF CkBAIC0yNTEsNyArMjUyLDggQEAgZ3RyZ21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdT KQogCQkJCS8qIEZBTEwgVEhSVSAqLwogCQkJY2FzZSBMaWtlU3RyYXRlZ3lOdW1iZXI6CiAJ CQkJcXRyZyA9IGdlbmVyYXRlX3dpbGRjYXJkX3RyZ20oVkFSREFUQShxdWVyeSksCi0JCQkJ CQkJCQkJCSAgcXVlcnlzaXplIC0gVkFSSERSU1opOworCQkJCQkJCQkJCQkgIHF1ZXJ5c2l6 ZSAtIFZBUkhEUlNaLAorCQkJCQkJCQkJCQkgIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIFJlZ0V4cElDYXNlU3RyYXRlZ3lOdW1iZXI6CiAjaWZuZGVmIElH Tk9SRUNBU0UKQEAgLTQ3NSw3ICs0NzcsNyBAQCBndHJnbV9kaXN0YW5jZShQR19GVU5DVElP Tl9BUkdTKQogCXsKIAkJY2hhcgkgICAqbmV3Y2FjaGU7CiAKLQkJcXRyZyA9IGdlbmVyYXRl X3RyZ20oVkFSREFUQShxdWVyeSksIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaKTsKKwkJcXRyZyA9 IGdlbmVyYXRlX3RyZ20oVkFSREFUQShxdWVyeSksIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaLCBQ R19HRVRfQ09MTEFUSU9OKCkpOwogCiAJCW5ld2NhY2hlID0gTWVtb3J5Q29udGV4dEFsbG9j KGZjaW5mby0+ZmxpbmZvLT5mbl9tY3h0LAogCQkJCQkJCQkJICBNQVhBTElHTihxdWVyeXNp emUpICsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgYi9jb250cmli L3BnX3RyZ20vdHJnbV9vcC5jCmluZGV4IDgxMTgyYTE1ZTA3Li5kNGM3NWNhZWZmOSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYworKysgYi9jb250cmliL3BnX3Ry Z20vdHJnbV9vcC5jCkBAIC0zMjQsNyArMzI0LDcgQEAgbWFrZV90cmlncmFtcyh0cmdtICp0 cHRyLCBjaGFyICpzdHIsIGludCBieXRlbGVuLCBpbnQgY2hhcmxlbikKICAqIFJldHVybnMg bGVuZ3RoIG9mIHRoZSBnZW5lcmF0ZWQgYXJyYXkuCiAgKi8KIHN0YXRpYyBpbnQKLWdlbmVy YXRlX3RyZ21fb25seSh0cmdtICp0cmcsIGNoYXIgKnN0ciwgaW50IHNsZW4sIFRyZ21Cb3Vu ZCAqYm91bmRzKQorZ2VuZXJhdGVfdHJnbV9vbmx5KHRyZ20gKnRyZywgY2hhciAqc3RyLCBp bnQgc2xlbiwgT2lkIGNvbGxhdGlvbiwgVHJnbUJvdW5kICpib3VuZHMpCiB7CiAJdHJnbQkg ICAqdHB0cjsKIAljaGFyCSAgICpidWY7CkBAIC0zNTIsNyArMzUyLDcgQEAgZ2VuZXJhdGVf dHJnbV9vbmx5KHRyZ20gKnRyZywgY2hhciAqc3RyLCBpbnQgc2xlbiwgVHJnbUJvdW5kICpi b3VuZHMpCiAJd2hpbGUgKChid29yZCA9IGZpbmRfd29yZChld29yZCwgc2xlbiAtIChld29y ZCAtIHN0ciksICZld29yZCwgJmNoYXJsZW4pKSAhPSBOVUxMKQogCXsKICNpZmRlZiBJR05P UkVDQVNFCi0JCWJ3b3JkID0gc3RyX3RvbG93ZXIoYndvcmQsIGV3b3JkIC0gYndvcmQsIERF RkFVTFRfQ09MTEFUSU9OX09JRCk7CisJCWJ3b3JkID0gc3RyX3RvbG93ZXIoYndvcmQsIGV3 b3JkIC0gYndvcmQsIGNvbGxhdGlvbik7CiAJCWJ5dGVsZW4gPSBzdHJsZW4oYndvcmQpOwog I2Vsc2UKIAkJYnl0ZWxlbiA9IGV3b3JkIC0gYndvcmQ7CkBAIC00MDUsNyArNDA1LDcgQEAg cHJvdGVjdF9vdXRfb2ZfbWVtKGludCBzbGVuKQogICogUmV0dXJucyB0aGUgc29ydGVkIGFy cmF5IG9mIHVuaXF1ZSB0cmlncmFtcy4KICAqLwogVFJHTSAqCi1nZW5lcmF0ZV90cmdtKGNo YXIgKnN0ciwgaW50IHNsZW4pCitnZW5lcmF0ZV90cmdtKGNoYXIgKnN0ciwgaW50IHNsZW4s IE9pZCBjb2xsYXRpb24pCiB7CiAJVFJHTQkgICAqdHJnOwogCWludAkJCWxlbjsKQEAgLTQx NSw3ICs0MTUsNyBAQCBnZW5lcmF0ZV90cmdtKGNoYXIgKnN0ciwgaW50IHNsZW4pCiAJdHJn ID0gKFRSR00gKikgcGFsbG9jKFRSR01IRFJTSVpFICsgc2l6ZW9mKHRyZ20pICogKHNsZW4g LyAyICsgMSkgKiAzKTsKIAl0cmctPmZsYWcgPSBBUlJLRVk7CiAKLQlsZW4gPSBnZW5lcmF0 ZV90cmdtX29ubHkoR0VUQVJSKHRyZyksIHN0ciwgc2xlbiwgTlVMTCk7CisJbGVuID0gZ2Vu ZXJhdGVfdHJnbV9vbmx5KEdFVEFSUih0cmcpLCBzdHIsIHNsZW4sIGNvbGxhdGlvbiwgTlVM TCk7CiAJU0VUX1ZBUlNJWkUodHJnLCBDQUxDR1RTSVpFKEFSUktFWSwgbGVuKSk7CiAKIAlp ZiAobGVuID09IDApCkBAIC02NzEsNyArNjcxLDcgQEAgaXRlcmF0ZV93b3JkX3NpbWlsYXJp dHkoaW50ICp0cmcyaW5kZXhlcywKICAqLwogc3RhdGljIGZsb2F0NAogY2FsY193b3JkX3Np bWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNsZW4xLCBjaGFyICpzdHIyLCBpbnQgc2xlbjIs Ci0JCQkJCSB1aW50OCBmbGFncykKKwkJCQkJIHVpbnQ4IGZsYWdzLCBPaWQgY29sbGF0aW9u KQogewogCWJvb2wJICAgKmZvdW5kOwogCXBvc190cmdtICAgKnB0cmc7CkBAIC02OTcsOCAr Njk3LDggQEAgY2FsY193b3JkX3NpbWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNsZW4xLCBj aGFyICpzdHIyLCBpbnQgc2xlbjIsCiAJZWxzZQogCQlib3VuZHMgPSBOVUxMOwogCi0JbGVu MSA9IGdlbmVyYXRlX3RyZ21fb25seSh0cmcxLCBzdHIxLCBzbGVuMSwgTlVMTCk7Ci0JbGVu MiA9IGdlbmVyYXRlX3RyZ21fb25seSh0cmcyLCBzdHIyLCBzbGVuMiwgYm91bmRzKTsKKwls ZW4xID0gZ2VuZXJhdGVfdHJnbV9vbmx5KHRyZzEsIHN0cjEsIHNsZW4xLCBjb2xsYXRpb24s IE5VTEwpOworCWxlbjIgPSBnZW5lcmF0ZV90cmdtX29ubHkodHJnMiwgc3RyMiwgc2xlbjIs IGNvbGxhdGlvbiwgYm91bmRzKTsKIAogCXB0cmcgPSBtYWtlX3Bvc2l0aW9uYWxfdHJnbSh0 cmcxLCBsZW4xLCB0cmcyLCBsZW4yKTsKIAlsZW4gPSBsZW4xICsgbGVuMjsKQEAgLTkxNSw3 ICs5MTUsNyBAQCBnZXRfd2lsZGNhcmRfcGFydChjb25zdCBjaGFyICpzdHIsIGludCBsZW5z dHIsCiAgKiAiIGEiLCAiYmNkIiB3b3VsZCBiZSBleHRyYWN0ZWQuCiAgKi8KIFRSR00gKgot Z2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBzbGVuKQorZ2Vu ZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBzbGVuLCBPaWQgY29s bGF0aW9uKQogewogCVRSR00JICAgKnRyZzsKIAljaGFyCSAgICpidWYsCkBAIC05NDgsNyAr OTQ4LDcgQEAgZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBz bGVuKQogCQkJCQkJCQkJICBidWYsICZieXRlbGVuLCAmY2hhcmxlbikpICE9IE5VTEwpCiAJ ewogI2lmZGVmIElHTk9SRUNBU0UKLQkJYnVmMiA9IHN0cl90b2xvd2VyKGJ1ZiwgYnl0ZWxl biwgREVGQVVMVF9DT0xMQVRJT05fT0lEKTsKKwkJYnVmMiA9IHN0cl90b2xvd2VyKGJ1Ziwg Ynl0ZWxlbiwgY29sbGF0aW9uKTsKIAkJYnl0ZWxlbiA9IHN0cmxlbihidWYyKTsKICNlbHNl CiAJCWJ1ZjIgPSBidWY7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBzaG93X3RyZ20oUEdfRlVO Q1RJT05fQVJHUykKIAl0cmdtCSAgICpwdHI7CiAJaW50CQkJaTsKIAotCXRyZyA9IGdlbmVy YXRlX3RyZ20oVkFSREFUQV9BTlkoaW4pLCBWQVJTSVpFX0FOWV9FWEhEUihpbikpOworCXRy ZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlkoaW4pLCBWQVJTSVpFX0FOWV9FWEhEUihp biksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAJZCA9IHBhbGxvY19hcnJheShEYXR1bSwgMSAr IEFSUk5FTEVNKHRyZykpOwogCiAJZm9yIChpID0gMCwgcHRyID0gR0VUQVJSKHRyZyk7IGkg PCBBUlJORUxFTSh0cmcpOyBpKyssIHB0cisrKQpAQCAtMTE3NCw4ICsxMTc0LDggQEAgc2lt aWxhcml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJICAgKnRyZzI7CiAJZmxvYXQ0CQlyZXM7 CiAKLQl0cmcxID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjEpKTsKLQl0cmcyID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWShpbjIp LCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpKTsKKwl0cmcxID0gZ2VuZXJhdGVfdHJnbShWQVJE QVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLCBQR19HRVRfQ09MTEFUSU9O KCkpOworCXRyZzIgPSBnZW5lcmF0ZV90cmdtKFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVf QU5ZX0VYSERSKGluMiksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlyZXMgPSBjbnRfc21s KHRyZzEsIHRyZzIsIGZhbHNlKTsKIApAQCAtMTE5Niw3ICsxMTk2LDcgQEAgd29yZF9zaW1p bGFyaXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0 eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLAogCQkJCQkJCSAg IFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCi0JCQkJCQkJICAg MCk7CisJCQkJCQkJICAgMCwgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVfSUZf Q09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTIxMiw3ICsx MjEyLDcgQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eShQR19GVU5DVElPTl9BUkdTKQogCiAJ cmVzID0gY2FsY193b3JkX3NpbWlsYXJpdHkoVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9B TllfRVhIRFIoaW4xKSwKIAkJCQkJCQkgICBWQVJEQVRBX0FOWShpbjIpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjIpLAotCQkJCQkJCSAgIFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QpOworCQkJ CQkJCSAgIFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QsIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAK IAlQR19GUkVFX0lGX0NPUFkoaW4xLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsK QEAgLTEyMjIsOSArMTIyMiwxMCBAQCBzdHJpY3Rfd29yZF9zaW1pbGFyaXR5KFBHX0ZVTkNU SU9OX0FSR1MpCiBEYXR1bQogc2ltaWxhcml0eV9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JZmxvYXQ0CQlyZXMgPSBEYXR1bUdldEZsb2F0NChEaXJlY3RGdW5jdGlvbkNhbGwyKHNp bWlsYXJpdHksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMCksCi0JCQkJCQkJ CQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKKwlmbG9hdDQJCXJlcyA9IERhdHVtR2V0 RmxvYXQ0KERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHNpbWlsYXJpdHksCisJCQkJCQkJCQkJ CQkJCQkgUEdfR0VUX0NPTExBVElPTigpLAorCQkJCQkJCQkJCQkJCQkJIFBHX0dFVEFSR19E QVRVTSgwKSwKKwkJCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKIAogCVBH X1JFVFVSTl9GTE9BVDQoMS4wIC0gcmVzKTsKIH0KQEAgLTEyMzIsOSArMTIzMywxMCBAQCBz aW1pbGFyaXR5X2Rpc3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBzaW1pbGFyaXR5X29w KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JZmxvYXQ0CQlyZXMgPSBEYXR1bUdldEZsb2F0NChE aXJlY3RGdW5jdGlvbkNhbGwyKHNpbWlsYXJpdHksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRB UkdfREFUVU0oMCksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKKwlm bG9hdDQJCXJlcyA9IERhdHVtR2V0RmxvYXQ0KERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHNp bWlsYXJpdHksCisJCQkJCQkJCQkJCQkJCQkgUEdfR0VUX0NPTExBVElPTigpLAorCQkJCQkJ CQkJCQkJCQkJIFBHX0dFVEFSR19EQVRVTSgwKSwKKwkJCQkJCQkJCQkJCQkJCSBQR19HRVRB UkdfREFUVU0oMSkpKTsKIAogCVBHX1JFVFVSTl9CT09MKHJlcyA+PSBzaW1pbGFyaXR5X3Ro cmVzaG9sZCk7CiB9CkBAIC0xMjQ4LDcgKzEyNTAsNyBAQCB3b3JkX3NpbWlsYXJpdHlfb3Ao UEdfRlVOQ1RJT05fQVJHUykKIAogCXJlcyA9IGNhbGNfd29yZF9zaW1pbGFyaXR5KFZBUkRB VEFfQU5ZKGluMSksIFZBUlNJWkVfQU5ZX0VYSERSKGluMSksCiAJCQkJCQkJICAgVkFSREFU QV9BTlkoaW4yKSwgVkFSU0laRV9BTllfRVhIRFIoaW4yKSwKLQkJCQkJCQkgICBXT1JEX1NJ TUlMQVJJVFlfQ0hFQ0tfT05MWSk7CisJCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX0NIRUNL X09OTFksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlQR19GUkVFX0lGX0NPUFkoaW4xLCAw KTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsKQEAgLTEyNjQsNyArMTI2Niw3IEBAIHdv cmRfc2ltaWxhcml0eV9jb21tdXRhdG9yX29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMg PSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FOWShpbjIpLCBWQVJTSVpFX0FOWV9F WEhEUihpbjIpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5ZKGluMSksIFZBUlNJWkVfQU5ZX0VY SERSKGluMSksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX0NIRUNLX09OTFkpOworCQkJ CQkJCSAgIFdPUkRfU0lNSUxBUklUWV9DSEVDS19PTkxZLCBQR19HRVRfQ09MTEFUSU9OKCkp OwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwgMCk7CiAJUEdfRlJFRV9JRl9DT1BZKGluMiwg MSk7CkBAIC0xMjgwLDcgKzEyODIsNyBAQCB3b3JkX3NpbWlsYXJpdHlfZGlzdF9vcChQR19G VU5DVElPTl9BUkdTKQogCiAJcmVzID0gY2FsY193b3JkX3NpbWlsYXJpdHkoVkFSREFUQV9B TlkoaW4xKSwgVkFSU0laRV9BTllfRVhIRFIoaW4xKSwKIAkJCQkJCQkgICBWQVJEQVRBX0FO WShpbjIpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpLAotCQkJCQkJCSAgIDApOworCQkJCQkJ CSAgIDAsIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlQR19GUkVFX0lGX0NPUFkoaW4xLCAw KTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsKQEAgLTEyOTYsNyArMTI5OCw3IEBAIHdv cmRfc2ltaWxhcml0eV9kaXN0X2NvbW11dGF0b3Jfb3AoUEdfRlVOQ1RJT05fQVJHUykKIAog CXJlcyA9IGNhbGNfd29yZF9zaW1pbGFyaXR5KFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVf QU5ZX0VYSERSKGluMiksCiAJCQkJCQkJICAgVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9B TllfRVhIRFIoaW4xKSwKLQkJCQkJCQkgICAwKTsKKwkJCQkJCQkgICAwLCBQR19HRVRfQ09M TEFUSU9OKCkpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwgMCk7CiAJUEdfRlJFRV9JRl9D T1BZKGluMiwgMSk7CkBAIC0xMzEyLDcgKzEzMTQsOCBAQCBzdHJpY3Rfd29yZF9zaW1pbGFy aXR5X29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0 eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLAogCQkJCQkJCSAg IFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCi0JCQkJCQkJICAg V09SRF9TSU1JTEFSSVRZX0NIRUNLX09OTFkgfCBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsK KwkJCQkJCQkgICBXT1JEX1NJTUlMQVJJVFlfQ0hFQ0tfT05MWSB8IFdPUkRfU0lNSUxBUklU WV9TVFJJQ1QsCisJCQkJCQkJICAgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVf SUZfQ09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTMyOCw3 ICsxMzMxLDggQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eV9jb21tdXRhdG9yX29wKFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FO WShpbjIpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5Z KGluMSksIFZBUlNJWkVfQU5ZX0VYSERSKGluMSksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFS SVRZX0NIRUNLX09OTFkgfCBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsKKwkJCQkJCQkgICBX T1JEX1NJTUlMQVJJVFlfQ0hFQ0tfT05MWSB8IFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QsCisJ CQkJCQkJICAgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbjEs IDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTM0NCw3ICsxMzQ4LDcgQEAg c3RyaWN0X3dvcmRfc2ltaWxhcml0eV9kaXN0X29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAly ZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjEpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5Z X0VYSERSKGluMiksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX1NUUklDVCk7CisJCQkJ CQkJICAgV09SRF9TSU1JTEFSSVRZX1NUUklDVCwgUEdfR0VUX0NPTExBVElPTigpKTsKIAog CVBHX0ZSRUVfSUZfQ09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpA QCAtMTM2MCw3ICsxMzY0LDcgQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eV9kaXN0X2NvbW11 dGF0b3Jfb3AoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlcyA9IGNhbGNfd29yZF9zaW1pbGFy aXR5KFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCiAJCQkJCQkJ ICAgVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9BTllfRVhIRFIoaW4xKSwKLQkJCQkJCQkg ICBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsKKwkJCQkJCQkgICBXT1JEX1NJTUlMQVJJVFlf U1RSSUNULCBQR19HRVRfQ09MTEFUSU9OKCkpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwg MCk7CiAJUEdfRlJFRV9JRl9DT1BZKGluMiwgMSk7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCmlu ZGV4IDFkMWI1ZmUzMDRkLi5jZGQwNGZhMDFhZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMK QEAgLTQ3OSwxMSArNDc5LDExIEBAIHR5cGVkZWYgc3RydWN0CiAKIC8qIHByb3RvdHlwZXMg Zm9yIHByaXZhdGUgZnVuY3Rpb25zICovCiBzdGF0aWMgVFJHTSAqY3JlYXRlVHJnbU5GQUlu dGVybmFsKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKLQkJCQkJ CQkJICAgTWVtb3J5Q29udGV4dCByY29udGV4dCk7CisJCQkJCQkJCSAgIE1lbW9yeUNvbnRl eHQgcmNvbnRleHQsIE9pZCBjb2xsYXRpb24pOwogc3RhdGljIHZvaWQgUkVfY29tcGlsZShy ZWdleF90ICpyZWdleCwgdGV4dCAqdGV4dF9yZSwKIAkJCQkJICAgaW50IGNmbGFncywgT2lk IGNvbGxhdGlvbik7Ci1zdGF0aWMgdm9pZCBnZXRDb2xvckluZm8ocmVnZXhfdCAqcmVnZXgs IFRyZ21ORkEgKnRyZ21ORkEpOwotc3RhdGljIGJvb2wgY29udmVydFBnV2NoYXIocGdfd2No YXIgYywgdHJnbV9tYl9jaGFyICpyZXN1bHQpOworc3RhdGljIHZvaWQgZ2V0Q29sb3JJbmZv KHJlZ2V4X3QgKnJlZ2V4LCBUcmdtTkZBICp0cmdtTkZBLCBPaWQgY29sbGF0aW9uKTsKK3N0 YXRpYyBib29sIGNvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21fbWJfY2hhciAqcmVz dWx0LCBPaWQgY29sbGF0aW9uKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUdyYXBoKFRyZ21O RkEgKnRyZ21ORkEpOwogc3RhdGljIHZvaWQgcHJvY2Vzc1N0YXRlKFRyZ21ORkEgKnRyZ21O RkEsIFRyZ21TdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgYWRkS2V5KFRyZ21ORkEgKnRy Z21ORkEsIFRyZ21TdGF0ZSAqc3RhdGUsIFRyZ21TdGF0ZUtleSAqa2V5KTsKQEAgLTU1MSw3 ICs1NTEsNyBAQCBjcmVhdGVUcmdtTkZBKHRleHQgKnRleHRfcmUsIE9pZCBjb2xsYXRpb24s CiAJCQkgICBSRUdfQURWQU5DRUQgfCBSRUdfTk9TVUIsIGNvbGxhdGlvbik7CiAjZW5kaWYK IAotCXRyZyA9IGNyZWF0ZVRyZ21ORkFJbnRlcm5hbCgmcmVnZXgsIGdyYXBoLCByY29udGV4 dCk7CisJdHJnID0gY3JlYXRlVHJnbU5GQUludGVybmFsKCZyZWdleCwgZ3JhcGgsIHJjb250 ZXh0LCBjb2xsYXRpb24pOwogCiAJLyogQ2xlYW4gdXAgYWxsIHRoZSBjcnVmdCB3ZSBjcmVh dGVkIChpbmNsdWRpbmcgcmVnZXgpICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOwpAQCAtNTY1LDcgKzU2NSw3IEBAIGNyZWF0ZVRyZ21ORkEodGV4dCAqdGV4dF9y ZSwgT2lkIGNvbGxhdGlvbiwKICAqLwogc3RhdGljIFRSR00gKgogY3JlYXRlVHJnbU5GQUlu dGVybmFsKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKLQkJCQkJ ICBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQorCQkJCQkgIE1lbW9yeUNvbnRleHQgcmNvbnRl eHQsIE9pZCBjb2xsYXRpb24pCiB7CiAJVFJHTQkgICAqdHJnOwogCVRyZ21ORkEJCXRyZ21O RkE7CkBAIC01NzMsNyArNTczLDcgQEAgY3JlYXRlVHJnbU5GQUludGVybmFsKHJlZ2V4X3Qg KnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKIAl0cmdtTkZBLnJlZ2V4ID0gcmVn ZXg7CiAKIAkvKiBDb2xsZWN0IGNvbG9yIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlZ2V4ICov Ci0JZ2V0Q29sb3JJbmZvKHJlZ2V4LCAmdHJnbU5GQSk7CisJZ2V0Q29sb3JJbmZvKHJlZ2V4 LCAmdHJnbU5GQSwgY29sbGF0aW9uKTsKIAogI2lmZGVmIFRSR01fUkVHRVhQX0RFQlVHCiAJ cHJpbnRTb3VyY2VORkEocmVnZXgsIHRyZ21ORkEuY29sb3JJbmZvLCB0cmdtTkZBLm5jb2xv cnMpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIFJFX2NvbXBpbGUocmVnZXhfdCAqcmVnZXgsIHRl eHQgKnRleHRfcmUsIGludCBjZmxhZ3MsIE9pZCBjb2xsYXRpb24pCiAgKiBGaWxsIFRyZ21D b2xvckluZm8gc3RydWN0dXJlIGZvciBlYWNoIGNvbG9yIHVzaW5nIHJlZ2V4IGV4cG9ydCBm dW5jdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1nZXRDb2xvckluZm8ocmVnZXhfdCAqcmVn ZXgsIFRyZ21ORkEgKnRyZ21ORkEpCitnZXRDb2xvckluZm8ocmVnZXhfdCAqcmVnZXgsIFRy Z21ORkEgKnRyZ21ORkEsIE9pZCBjb2xsYXRpb24pCiB7CiAJaW50CQkJY29sb3JzQ291bnQg PSBwZ19yZWdfZ2V0bnVtY29sb3JzKHJlZ2V4KTsKIAlpbnQJCQlpOwpAQCAtODA4LDcgKzgw OCw3IEBAIGdldENvbG9ySW5mbyhyZWdleF90ICpyZWdleCwgVHJnbU5GQSAqdHJnbU5GQSkK IAkJewogCQkJdHJnbV9tYl9jaGFyIGM7CiAKLQkJCWlmICghY29udmVydFBnV2NoYXIoY2hh cnNbal0sICZjKSkKKwkJCWlmICghY29udmVydFBnV2NoYXIoY2hhcnNbal0sICZjLCBjb2xs YXRpb24pKQogCQkJCWNvbnRpbnVlOwkJLyogb2sgdG8gaWdub3JlIGl0IGFsdG9nZXRoZXIg Ki8KIAkJCWlmIChJU1dPUkRDSFIoYy5ieXRlcykpCiAJCQkJY29sb3JJbmZvLT53b3JkQ2hh cnNbY29sb3JJbmZvLT53b3JkQ2hhcnNDb3VudCsrXSA9IGM7CkBAIC04MjUsNyArODI1LDcg QEAgZ2V0Q29sb3JJbmZvKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtTkZBICp0cmdtTkZBKQogICog UmV0dXJucyBmYWxzZSBpZiB0aGUgY2hhcmFjdGVyIHNob3VsZCBiZSBpZ25vcmVkIGNvbXBs ZXRlbHkuCiAgKi8KIHN0YXRpYyBib29sCi1jb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0 cmdtX21iX2NoYXIgKnJlc3VsdCkKK2NvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21f bWJfY2hhciAqcmVzdWx0LCBPaWQgY29sbGF0aW9uKQogewogCS8qICJzIiBoYXMgZW5vdWdo IHNwYWNlIGZvciBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgYW5kIGEgdHJhaWxpbmcgTlVMICov CiAJY2hhcgkJc1tNQVhfTVVMVElCWVRFX0NIQVJfTEVOICsgMV07CkBAIC04NTcsNyArODU3 LDcgQEAgY29udmVydFBnV2NoYXIocGdfd2NoYXIgYywgdHJnbV9tYl9jaGFyICpyZXN1bHQp CiAJICovCiAjaWZkZWYgSUdOT1JFQ0FTRQogCXsKLQkJY2hhcgkgICAqbG93ZXJDYXNlZCA9 IHN0cl90b2xvd2VyKHMsIHN0cmxlbihzKSwgREVGQVVMVF9DT0xMQVRJT05fT0lEKTsKKwkJ Y2hhcgkgICAqbG93ZXJDYXNlZCA9IHN0cl90b2xvd2VyKHMsIHN0cmxlbihzKSwgY29sbGF0 aW9uKTsKIAogCQlpZiAoc3RyY21wKGxvd2VyQ2FzZWQsIHMpICE9IDApCiAJCXsKLS0gCjIu NTEuMAoK --------------Y8k01kj64Fi0ElB30WzbDPTC--