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.98.2) (envelope-from ) id 1xA807-00000002T3X-47wh for pgsql-bugs@arkaria.postgresql.org; Fri, 25 Sep 2026 15:38:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xA807-00000001QKv-0eM7 for pgsql-bugs@arkaria.postgresql.org; Fri, 25 Sep 2026 15:38:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xA806-00000001QKm-2j52 for pgsql-bugs@lists.postgresql.org; Fri, 25 Sep 2026 15:38:14 +0000 Received: from mail-vs2-x0d.google.com ([2a00:1450:4864:3a::d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xA803-00000001Dav-3ovd for pgsql-bugs@lists.postgresql.org; Fri, 25 Sep 2026 15:38:13 +0000 Received: by mail-vs2-x0d.google.com with SMTP id ada2fe7eead31-781d5f20ed1so39528137.1 for ; Fri, 25 Sep 2026 08:38:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790350691; x=1790955491; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=V6xZhnzrwZ55yd6luSSsIYq6eeylgXAzWrFtoDhTBdA=; b=G6UPjLAewnSNrLfEZ3g40oVVWeKOGJ91uUvrPtgBmCYhcUjrsP0ukOi0ODA+4AOcF2 MkRb4dUzHs/l3/tXEbeXjNhkPM43KdKJGrBdA74bqdpSbmYSheFlj/EeVswLLjeLOXVH ozqBFjr3VB+N4AZgTboaRwr7MVM0n6qkArFTDVIT2P0YRuXJlywdiaXHCt7MA3JxKhkh 7rg2XS1axuVtZqv1Pn9iLx/cvK9vnvLUQnHMIVhQAqVB+iM4uAf6zzpxUPy6MZJxcC0Z I768ziINBqh+f9pBy2x8gvk5TXIGXARAQMaH7ia+kiiQ+9+Z26NJD5wk/5sPSEgBsaO8 gZBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790350691; x=1790955491; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=V6xZhnzrwZ55yd6luSSsIYq6eeylgXAzWrFtoDhTBdA=; b=xOpllZ2vFWXS1DY/JcAM6dxWfdJLkD9pHZlntHHvQsVU8xBsXZdQJ5XcNCHLIMDsp5 TW1C+R5mC5zPup68kkyMCkWKCTW8NGQEkcV4KeBKHFn0i4GoeC+c1RI7Ipskh9nLKgH0 brjdVTgOd9yj3L50lf49tPvYAs7UYCoViWBda8xLfW3u0GCvUfd3DT/rLxRsP7F17Dyz RO04rohQWWU5aCosu66+3MJPCAF1O0ARK3CouH2/VsMot+D7uPg4SyzGF0g6V+HrvJyt d/YDvUak+AjHE9Ckzq30GCx2+XDGpQEqkmlPmgHeOVZz9C4C9f4X3V+7tJhRZrfyiIUV i2Cw== X-Gm-Message-State: AFuF++lvAeIM72v87O6a/C77qH6N7oJKmLkKAOJ3eZ6bvu02y4/umQdq KKPFKwRIgozqWtJ9G7Cx38zV7Rnzqw9wiMwCxzd9fHPdzVmdTEM6+aa1JiubHYWCGajMaQ== X-Gm-Gg: AYBFou0PmLxkkmPicvmRBnx7O0GygpR+lkJAp+6aVw77fbdItp/4ACZQA+dIl2V5gET Jluifd7s78uG0KGZ56ooftEpNBRvSn3KMrj11ZMigL63PESrMv8fw64rmL3K+XKpDGT9XmLpSVV net7FZqiPvd61ZzjYosdNv6Tk0bvAn1Pr+myk2WsT3+l73AzV0hDhcI4y6n1ltGt50jhKmE4LTs jWhGP8iQWWDQ77sjs0NYMZwaszWxfdEIraAZIuMcMnfklDRWaSCAbwBlLZuaJs+YyYKcXrzvDpG 0hKaSCFVpc+MpDZHk3o6GSXZRhdvxBfPtpq3y7eCdITqe5oVJJFmHjSl5P1bGmOd5kv3LVUbSJD md5y0RNkrPCTQARkY7Dcnf4lvCera9L4MjEZEElm2dss/XxT/jPnfQgeAafEjLeg18Tq3Tgq67z +BMVwNhjJZRRoC3EqnIgRX+QL+CrfpEtkPb/Jb4EKXw7n5ThwE22I/R5Y8Yd3tCGrK7n5YHhfwC Wd9Ag1B86mxwqCIB2ThIpCkgQRZqJuUHRgy4PMxnKdkgnJAyFaOKGmFhQXJ5739WjvsTx7FtviZ LtEtYc5VyvOVqXu230ofiMjgoEcC37IV/Q1k X-Received: by 2002:a05:6102:14a3:b0:7a7:12b0:fd03 with SMTP id ada2fe7eead31-7b0729a5e42mr940695137.0.1790350691512; Fri, 25 Sep 2026 08:38:11 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-7b2588a1551sm2013335137.5.2026.09.25.08.38.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2026 08:38:10 -0700 (PDT) From: Manu To: pgsql-bugs@lists.postgresql.org Cc: chaturvedipalak1911@gmail.com, kehan5800@gmail.com Subject: Re: BUG #19701: GIN trigram index loses rows at similarity_threshold 0 Date: Fri, 25 Sep 2026 12:38:08 -0300 Message-ID: <179035068842.432745.14403644565457508812@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3154535639257520797==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============3154535639257520797== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Palak, Thanks for the review and for the row-set comparison. On Fri, 25 Sept 2026, Palak Chaturvedi wrote: > * Insert rows after creating the GIN index, then test an empty > query at threshold zero before and after pending-list cleanup. > > * Include strict-word similarity (<<%) at zero, with stored empty > strings and NULLs. Both are in v2, attached. The new test uses a small table holding two words, two empty strings and a NULL, inserted after the GIN index is created. It runs % and <<%, with an empty and a non-empty query, before and after gin_clean_pending_list(). It then rebuilds the index as GiST and repeats the <<% queries. I added 1000 rows before the GiST build: with only five rows the index is a single leaf page, and leaf pages were already correct. Without the C changes, each of the eight GIN queries returns 0 or 1 row instead of 4, both before and after the cleanup, and the empty <<% query on GiST returns 0 instead of 1004. With them, pg_trgm's tests pass. I checked this on master (45da2c1d756) and on REL_14_STABLE, where v2 also applies cleanly. Regards, Manu --===============3154535639257520797== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Don-t-lose-rows-in-pg_trgm-index-scans-with-a-zer.patch" MIME-Version: 1.0 RnJvbSBlNGMwMjVhYzkwYTRhZjBiNzAzYWYwMjBiMWZmMDc5ZjIxYjIxNjYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51IDxtYW51ZWxyZXllc2JyYXZvQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMyBTZXAgMjAyNiAxNjoyMzoxMiAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIERv bid0IGxvc2Ugcm93cyBpbiBwZ190cmdtIGluZGV4IHNjYW5zIHdpdGggYSB6ZXJvCiBzaW1pbGFy aXR5IHRocmVzaG9sZAoKVGhlIHNpbWlsYXJpdHkgb3BlcmF0b3JzICglLCA8JSBhbmQgPDwlKSBh cmUgdHJ1ZSB3aGVuIHRoZSBzaW1pbGFyaXR5IGlzCmdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0 aGUgdGhyZXNob2xkLCBhbmQgemVybyBpcyBhIHZhbGlkIHRocmVzaG9sZCwKdW5kZXIgd2hpY2gg ZXZlcnkgcm93IG1hdGNoZXMuICBUaGUgaW5kZXhlcyBkaWQgbm90IGZvbGxvdzoKCi0gQSBHSU4g c2NhbiBvbmx5IHZpc2l0cyB0aGUgcm93cyB0aGF0IHNoYXJlIGEgdHJpZ3JhbSB3aXRoIHRoZSBx dWVyeSwKICBzbyB0aGUgcm93cyB3aXRoIG5vbmUgd2VyZSBuZXZlciByZXR1cm5lZC4gIEFzayBm b3IgYSBmdWxsIGluZGV4IHNjYW4KICB3aGVuIHRoZSB0aHJlc2hvbGQgaXMgemVybywgYXMgaXMg YWxyZWFkeSBkb25lIHdoZW4gdGhlIHF1ZXJ5IGhhcyBubwogIHRyaWdyYW1zLgoKLSBXaGVuIHRo ZSBxdWVyeSBoYXMgbm8gdHJpZ3JhbXMsIGJvdGggdGhlIEdJTiBjb25zaXN0ZW50IGZ1bmN0aW9u cyBhbmQKICB0aGUgR2lTVCBjb25zaXN0ZW50IGZ1bmN0aW9uIG9uIGludGVybmFsIHBhZ2VzIHJl amVjdGVkIGV2ZXJ5dGhpbmcsCiAgYWx0aG91Z2ggdGhlIHNpbWlsYXJpdHkgd2l0aCBzdWNoIGEg cXVlcnkgaXMgemVybywgd2hpY2ggYSB6ZXJvCiAgdGhyZXNob2xkIGFjY2VwdHMuCgpSZXBvcnRl ZC1ieTogS2UgPGtlaGFuNTgwMEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMTk3MDEtYzg2MWE2MmU3OWJmNDljZUBwb3N0Z3Jlc3FsLm9yZwotLS0KIGNvbnRyaWIv cGdfdHJnbS9leHBlY3RlZC9wZ190cmdtLm91dCB8IDE3NSArKysrKysrKysrKysrKysrKysrKysr KysrKysKIGNvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbS5zcWwgICAgICB8ICA1MSArKysrKysr KwogY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMgICAgICAgICAgIHwgIDI0ICsrKy0KIGNvbnRy aWIvcGdfdHJnbS90cmdtX2dpc3QuYyAgICAgICAgICB8ICAgNiArLQogNCBmaWxlcyBjaGFuZ2Vk LCAyNTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3RyZ20vZXhwZWN0ZWQvcGdfdHJnbS5vdXQgYi9jb250cmliL3BnX3RyZ20vZXhwZWN0ZWQv cGdfdHJnbS5vdXQKaW5kZXggNjEyNjI1ZjFmZGEuLmNjMzBhMmU2MzZhIDEwMDY0NAotLS0gYS9j b250cmliL3BnX3RyZ20vZXhwZWN0ZWQvcGdfdHJnbS5vdXQKKysrIGIvY29udHJpYi9wZ190cmdt L2V4cGVjdGVkL3BnX3RyZ20ub3V0CkBAIC01NDQ4LDMgKzU0NDgsMTc4IEBAIFNFTEVDVCBESVNU SU5DVCBjaXR5LCBzaW1pbGFyaXR5KGNpdHksICdXYXJzYXcnKSwgc2hvd19saW1pdCgpCiAgV2Fy c2F3IHwgICAgICAgICAgMSB8ICAgICAgICAwLjUKICgxIHJvdykKIAorLS0gQSB0aHJlc2hvbGQg b2YgemVybyBpcyBtZXQgYnkgZXZlcnkgcm93OiBieSB0aGUgcm93cyB0aGF0IHNoYXJlIG5vIHRy aWdyYW0KKy0tIHdpdGggdGhlIHF1ZXJ5LCBhbmQgYnkgYWxsIG9mIHRoZW0gd2hlbiB0aGUgcXVl cnkgaGFzIG5vIHRyaWdyYW1zIGF0IGFsbC4KKy0tIFRoZSBpbmRleGVzIG11c3Qgbm90IGxvc2Ug YW55IChidWcgIzE5NzAxKS4KK1NFTEVDVCBzZXRfbGltaXQoMCk7Cisgc2V0X2xpbWl0IAorLS0t LS0tLS0tLS0KKyAgICAgICAgIDAKKygxIHJvdykKKworU0VUIHBnX3RyZ20ud29yZF9zaW1pbGFy aXR5X3RocmVzaG9sZCA9IDA7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSByZXN0YXVyYW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiByZXN0YXVyYW50cworICAgICAgICAgUmVjaGVjayBDb25k OiAoY2l0eSAlICdXYXJzYXcnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIHJlc3RhdXJhbnRzX2NpdHlfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoY2l0 eSAlICdXYXJzYXcnOjp0ZXh0KQorKDUgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gcmVz dGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAw CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkg JSAnJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitTRUxFQ1QgY291bnQo KikgRlJPTSByZXN0YXVyYW50cyBXSEVSRSAnV2Fyc2F3JyA8JSBjaXR5OworIGNvdW50IAorLS0t LS0tLQorIDIwMDAwCisoMSByb3cpCisKK0RST1AgSU5ERVggcmVzdGF1cmFudHNfY2l0eV9pZHg7 CitDUkVBVEUgSU5ERVggT04gcmVzdGF1cmFudHMgVVNJTkcgZ2luKGNpdHkgZ2luX3RyZ21fb3Bz KTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRz IFdIRVJFIGNpdHkgJSAnV2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIHJlc3RhdXJhbnRzCisgICAgICAgICBSZWNoZWNrIENvbmQ6IChjaXR5ICUgJ1dhcnNh dyc6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gcmVzdGF1cmFudHNf Y2l0eV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChjaXR5ICUgJ1dhcnNhdyc6OnRl eHQpCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSByZXN0YXVyYW50cyBXSEVSRSBj aXR5ICUgJ1dhcnNhdyc7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICcnOworIGNvdW50IAor LS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJh bnRzIFdIRVJFICdXYXJzYXcnIDwlIGNpdHk7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygx IHJvdykKKworUkVTRVQgcGdfdHJnbS53b3JkX3NpbWlsYXJpdHlfdGhyZXNob2xkOworLS0gVGhl IHNhbWUgZm9yIHJvd3MgdGhhdCBhcmUgc3RpbGwgaW4gdGhlIEdJTiBwZW5kaW5nIGxpc3QsIGFu ZCBmb3Igc3RyaWN0CistLSB3b3JkIHNpbWlsYXJpdHksIHdpdGggZW1wdHkgc3RyaW5ncyBhbmQg TlVMTHMgc3RvcmVkLiAgRXZlcnkgbm9uLU5VTEwgcm93CistLSBtdXN0IGJlIHJldHVybmVkLgor U0VUIHBnX3RyZ20uc3RyaWN0X3dvcmRfc2ltaWxhcml0eV90aHJlc2hvbGQgPSAwOworU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworQ1JFQVRFIFRFTVAgVEFCTEUgdHJnbV96ZXJvICh0IHRleHQp OworQ1JFQVRFIElOREVYIHRyZ21femVyb19pZHggT04gdHJnbV96ZXJvCisgIFVTSU5HIGdpbiAo dCBnaW5fdHJnbV9vcHMpIFdJVEggKGZhc3R1cGRhdGUgPSBvbik7CitJTlNFUlQgSU5UTyB0cmdt X3plcm8gVkFMVUVTICgnV2Fyc2F3JyksICgnU3pjemVjaW4nKSwgKCcnKSwgKCcnKSwgKE5VTEwp OworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdI RVJFIHQgJSAnJzsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0cmdtX3plcm8KKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKHQgJSAnJzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiB0cmdtX3plcm9faWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAodCAlICcn Ojp0ZXh0KQorKDUgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJF IHQgJSAnJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgdCAlICdXYXJzYXcnOworIGNvdW50IAorLS0tLS0t LQorICAgICA0CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVS RSAnJyA8PCUgdDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNAorKDEgcm93KQorCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJ1dhcnNhdycgPDwlIHQ7CisgY291bnQgCist LS0tLS0tCisgICAgIDQKKygxIHJvdykKKworU0VMRUNUIGdpbl9jbGVhbl9wZW5kaW5nX2xpc3Qo J3RyZ21femVyb19pZHgnKSA+IDAgQVMgY2xlYW5lZDsKKyBjbGVhbmVkIAorLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgdCAlICcn OworIGNvdW50IAorLS0tLS0tLQorICAgICA0CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRyZ21femVybyBXSEVSRSB0ICUgJ1dhcnNhdyc7CisgY291bnQgCistLS0tLS0tCisgICAg IDQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICcnIDw8 JSB0OworIGNvdW50IAorLS0tLS0tLQorICAgICA0CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBGUk9NIHRyZ21femVybyBXSEVSRSAnV2Fyc2F3JyA8PCUgdDsKKyBjb3VudCAKKy0tLS0tLS0K KyAgICAgNAorKDEgcm93KQorCistLSBFbm91Z2ggcm93cyBmb3IgdGhlIEdpU1QgaW5kZXggdG8g aGF2ZSBpbnRlcm5hbCBwYWdlcy4KK0RST1AgSU5ERVggdHJnbV96ZXJvX2lkeDsKK0lOU0VSVCBJ TlRPIHRyZ21femVybyBTRUxFQ1QgJ1dhcnNhdycgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw MCk7CitDUkVBVEUgSU5ERVggdHJnbV96ZXJvX2lkeCBPTiB0cmdtX3plcm8gVVNJTkcgZ2lzdCAo dCBnaXN0X3RyZ21fb3BzKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHRyZ21femVybyBXSEVSRSAnJyA8PCUgdDsKKyAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiB0 cmdtX3plcm8KKyAgICAgICAgIEZpbHRlcjogKCcnOjp0ZXh0IDw8JSB0KQorICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIHRyZ21femVyb19pZHgKKyAgICAgICAgICAgICAgIEluZGV4 IENvbmQ6ICh0ICU+PiAnJzo6dGV4dCkKKyg1IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRyZ21femVybyBXSEVSRSAnJyA8PCUgdDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgMTAwNAorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJ1dhcnNhdycgPDwl IHQ7CisgY291bnQgCistLS0tLS0tCisgIDEwMDQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0cmdt X3plcm87CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIHBnX3RyZ20uc3RyaWN0X3dvcmRf c2ltaWxhcml0eV90aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vc3FsL3Bn X3RyZ20uc3FsIGIvY29udHJpYi9wZ190cmdtL3NxbC9wZ190cmdtLnNxbAppbmRleCA0OWRiODZj YWY3ZC4uMjUxNGNlNWQ3ZjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJn bS5zcWwKKysrIGIvY29udHJpYi9wZ190cmdtL3NxbC9wZ190cmdtLnNxbApAQCAtMjQ0LDMgKzI0 NCw1NCBAQCBTRUxFQ1QgRElTVElOQ1QgY2l0eSwgc2ltaWxhcml0eShjaXR5LCAnV2Fyc2F3Jyks IHNob3dfbGltaXQoKQogU0VMRUNUIHNldF9saW1pdCgwLjUpOwogU0VMRUNUIERJU1RJTkNUIGNp dHksIHNpbWlsYXJpdHkoY2l0eSwgJ1dhcnNhdycpLCBzaG93X2xpbWl0KCkKICAgRlJPTSByZXN0 YXVyYW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CisKKy0tIEEgdGhyZXNob2xkIG9mIHplcm8g aXMgbWV0IGJ5IGV2ZXJ5IHJvdzogYnkgdGhlIHJvd3MgdGhhdCBzaGFyZSBubyB0cmlncmFtCist LSB3aXRoIHRoZSBxdWVyeSwgYW5kIGJ5IGFsbCBvZiB0aGVtIHdoZW4gdGhlIHF1ZXJ5IGhhcyBu byB0cmlncmFtcyBhdCBhbGwuCistLSBUaGUgaW5kZXhlcyBtdXN0IG5vdCBsb3NlIGFueSAoYnVn ICMxOTcwMSkuCitTRUxFQ1Qgc2V0X2xpbWl0KDApOworU0VUIHBnX3RyZ20ud29yZF9zaW1pbGFy aXR5X3RocmVzaG9sZCA9IDA7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikg RlJPTSByZXN0YXVyYW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CitTRUxFQ1QgY291bnQoKikg RlJPTSByZXN0YXVyYW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CitTRUxFQ1QgY291bnQoKikg RlJPTSByZXN0YXVyYW50cyBXSEVSRSBjaXR5ICUgJyc7CitTRUxFQ1QgY291bnQoKikgRlJPTSBy ZXN0YXVyYW50cyBXSEVSRSAnV2Fyc2F3JyA8JSBjaXR5OworRFJPUCBJTkRFWCByZXN0YXVyYW50 c19jaXR5X2lkeDsKK0NSRUFURSBJTkRFWCBPTiByZXN0YXVyYW50cyBVU0lORyBnaW4oY2l0eSBn aW5fdHJnbV9vcHMpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00g cmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworU0VMRUNUIGNvdW50KCopIEZST00g cmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworU0VMRUNUIGNvdW50KCopIEZST00g cmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICcnOworU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1 cmFudHMgV0hFUkUgJ1dhcnNhdycgPCUgY2l0eTsKK1JFU0VUIHBnX3RyZ20ud29yZF9zaW1pbGFy aXR5X3RocmVzaG9sZDsKKworLS0gVGhlIHNhbWUgZm9yIHJvd3MgdGhhdCBhcmUgc3RpbGwgaW4g dGhlIEdJTiBwZW5kaW5nIGxpc3QsIGFuZCBmb3Igc3RyaWN0CistLSB3b3JkIHNpbWlsYXJpdHks IHdpdGggZW1wdHkgc3RyaW5ncyBhbmQgTlVMTHMgc3RvcmVkLiAgRXZlcnkgbm9uLU5VTEwgcm93 CistLSBtdXN0IGJlIHJldHVybmVkLgorU0VUIHBnX3RyZ20uc3RyaWN0X3dvcmRfc2ltaWxhcml0 eV90aHJlc2hvbGQgPSAwOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworQ1JFQVRFIFRFTVAg VEFCTEUgdHJnbV96ZXJvICh0IHRleHQpOworQ1JFQVRFIElOREVYIHRyZ21femVyb19pZHggT04g dHJnbV96ZXJvCisgIFVTSU5HIGdpbiAodCBnaW5fdHJnbV9vcHMpIFdJVEggKGZhc3R1cGRhdGUg PSBvbik7CitJTlNFUlQgSU5UTyB0cmdtX3plcm8gVkFMVUVTICgnV2Fyc2F3JyksICgnU3pjemVj aW4nKSwgKCcnKSwgKCcnKSwgKE5VTEwpOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFIHQgJSAnJzsKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHRyZ21femVybyBXSEVSRSB0ICUgJyc7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8g V0hFUkUgdCAlICdXYXJzYXcnOworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJF ICcnIDw8JSB0OworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICdXYXJzYXcn IDw8JSB0OworU0VMRUNUIGdpbl9jbGVhbl9wZW5kaW5nX2xpc3QoJ3RyZ21femVyb19pZHgnKSA+ IDAgQVMgY2xlYW5lZDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSB0ICUg Jyc7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgdCAlICdXYXJzYXcnOwor U0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICcnIDw8JSB0OworU0VMRUNUIGNv dW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICdXYXJzYXcnIDw8JSB0OworLS0gRW5vdWdoIHJv d3MgZm9yIHRoZSBHaVNUIGluZGV4IHRvIGhhdmUgaW50ZXJuYWwgcGFnZXMuCitEUk9QIElOREVY IHRyZ21femVyb19pZHg7CitJTlNFUlQgSU5UTyB0cmdtX3plcm8gU0VMRUNUICdXYXJzYXcnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApOworQ1JFQVRFIElOREVYIHRyZ21femVyb19pZHgg T04gdHJnbV96ZXJvIFVTSU5HIGdpc3QgKHQgZ2lzdF90cmdtX29wcyk7CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJycgPDwlIHQ7CitT RUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJycgPDwlIHQ7CitTRUxFQ1QgY291 bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJ1dhcnNhdycgPDwlIHQ7CitEUk9QIFRBQkxFIHRy Z21femVybzsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgcGdfdHJnbS5zdHJpY3Rfd29y ZF9zaW1pbGFyaXR5X3RocmVzaG9sZDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdt X2dpbi5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKaW5kZXggNTc2NmIzZTk5NTUuLjI0 M2Q1YmJlZWE5IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9naW4uYworKysgYi9j b250cmliL3BnX3RyZ20vdHJnbV9naW4uYwpAQCAtMTY1LDYgKzE2NSwxNyBAQCBnaW5fZXh0cmFj dF9xdWVyeV90cmdtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKHRyZ2xlbiA9PSAwKQogCQkqc2Vh cmNoTW9kZSA9IEdJTl9TRUFSQ0hfTU9ERV9BTEw7CiAKKwkvKgorCSAqIExpa2V3aXNlIHdoZW4g dGhlIHNpbWlsYXJpdHkgdGhyZXNob2xkIGlzIHplcm86IGV2ZXJ5IHJvdyBzYXRpc2ZpZXMgdGhl CisJICogb3BlcmF0b3IgdGhlbiwgaW5jbHVkaW5nIHRoZSByb3dzIHRoYXQgc2hhcmUgbm8gdHJp Z3JhbSB3aXRoIHRoZSBxdWVyeSwKKwkgKiB3aGljaCB0aGUgZXh0cmFjdGVkIHRyaWdyYW1zIGFs b25lIHdvdWxkIG5ldmVyIGxlYWQgdG8uCisJICovCisJaWYgKChzdHJhdGVneSA9PSBTaW1pbGFy aXR5U3RyYXRlZ3lOdW1iZXIgfHwKKwkJIHN0cmF0ZWd5ID09IFdvcmRTaW1pbGFyaXR5U3RyYXRl Z3lOdW1iZXIgfHwKKwkJIHN0cmF0ZWd5ID09IFN0cmljdFdvcmRTaW1pbGFyaXR5U3RyYXRlZ3lO dW1iZXIpICYmCisJCWluZGV4X3N0cmF0ZWd5X2dldF9saW1pdChzdHJhdGVneSkgPD0gMC4wKQor CQkqc2VhcmNoTW9kZSA9IEdJTl9TRUFSQ0hfTU9ERV9BTEw7CisKIAlQR19SRVRVUk5fUE9JTlRF UihlbnRyaWVzKTsKIH0KIApAQCAtMjE2LDggKzIyNywxMSBAQCBnaW5fdHJnbV9jb25zaXN0ZW50 KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKiBqdXN0IGJ5IGRlZmluaXRpb24gYW5kLCBjb25zZXF1 ZW50bHksIHVwcGVyIGJvdW5kIG9mCiAJCQkgKiBzaW1pbGFyaXR5IGlzIGp1c3QgYyAvIGxlbjEu CiAJCQkgKiBTbywgaW5kZXBlbmRlbnRseSBvbiBESVZVTklPTiB0aGUgdXBwZXIgYm91bmQgZm9y bXVsYSBpcyB0aGUgc2FtZS4KKwkJCSAqCisJCQkgKiBBIHF1ZXJ5IHdpdGggbm8gdHJpZ3JhbXMg aGFzIGEgc2ltaWxhcml0eSBvZiB6ZXJvIHdpdGggYW55CisJCQkgKiB2YWx1ZSwgd2hpY2ggb25s eSBhIHRocmVzaG9sZCBvZiB6ZXJvIGFjY2VwdHMuCiAJCQkgKi8KLQkJCXJlcyA9IChua2V5cyA9 PSAwKSA/IGZhbHNlIDoKKwkJCXJlcyA9IChua2V5cyA9PSAwKSA/IChubGltaXQgPD0gMC4wKSA6 CiAJCQkJKCgoKChmbG9hdDQpIG50cnVlKSAvICgoZmxvYXQ0KSBua2V5cykpKSA+PSBubGltaXQp OwogCQkJYnJlYWs7CiAJCWNhc2UgSUxpa2VTdHJhdGVneU51bWJlcjoKQEAgLTMwMiw5ICszMTYs MTEgQEAgZ2luX3RyZ21fdHJpY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJICogU2Vl IGNvbW1lbnQgaW4gZ2luX3RyZ21fY29uc2lzdGVudCgpIGFib3V0ICogdXBwZXIgYm91bmQKIAkJ CSAqIGZvcm11bGEKIAkJCSAqLwotCQkJcmVzID0gKG5rZXlzID09IDApCi0JCQkJPyBHSU5fRkFM U0UgOiAoKCgoKGZsb2F0NCkgbnRydWUpIC8gKChmbG9hdDQpIG5rZXlzKSkgPj0gbmxpbWl0KQot CQkJCQkJCSAgID8gR0lOX01BWUJFIDogR0lOX0ZBTFNFKTsKKwkJCWlmIChua2V5cyA9PSAwKQor CQkJCXJlcyA9IChubGltaXQgPD0gMC4wKSA/IEdJTl9NQVlCRSA6IEdJTl9GQUxTRTsKKwkJCWVs c2UKKwkJCQlyZXMgPSAoKCgoKGZsb2F0NCkgbnRydWUpIC8gKChmbG9hdDQpIG5rZXlzKSkgPj0g bmxpbWl0KQorCQkJCQkgICA/IEdJTl9NQVlCRSA6IEdJTl9GQUxTRSk7CiAJCQlicmVhazsKIAkJ Y2FzZSBJTGlrZVN0cmF0ZWd5TnVtYmVyOgogI2lmbmRlZiBJR05PUkVDQVNFCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3RyZ20vdHJnbV9naXN0LmMgYi9jb250cmliL3BnX3RyZ20vdHJnbV9naXN0 LmMKaW5kZXggNDJkMGI3YTVkNjUuLjBjYjY4YWM3NTdlIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3RyZ20vdHJnbV9naXN0LmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCkBAIC0z MzUsOCArMzM1LDEyIEBAIGd0cmdtX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlp bnQzMgkJY291bnQgPSBjbnRfc21sX3NpZ25fY29tbW9uKHF0cmcsIEdFVFNJR04oa2V5KSwgc2ln bGVuKTsKIAkJCQlpbnQzMgkJbGVuID0gQVJSTkVMRU0ocXRyZyk7CiAKKwkJCQkvKgorCQkJCSAq IEEgcXVlcnkgd2l0aCBubyB0cmlncmFtcyBoYXMgYSBzaW1pbGFyaXR5IG9mIHplcm8gd2l0aCBh bnkKKwkJCQkgKiB2YWx1ZSwgd2hpY2ggb25seSBhIHRocmVzaG9sZCBvZiB6ZXJvIGFjY2VwdHMu CisJCQkJICovCiAJCQkJaWYgKGxlbiA9PSAwKQotCQkJCQlyZXMgPSBmYWxzZTsKKwkJCQkJcmVz ID0gKG5saW1pdCA8PSAwLjApOwogCQkJCWVsc2UKIAkJCQkJcmVzID0gKCgoKChmbG9hdDgpIGNv dW50KSAvICgoZmxvYXQ4KSBsZW4pKSkgPj0gbmxpbWl0KTsKIAkJCX0KLS0gCjIuNTUuMAoK --===============3154535639257520797==--