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 1vutzN-00C4UX-0h for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 15:06:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vutzM-001SSA-0Y for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Feb 2026 15:06: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 1vutzL-001SS1-2U for pgsql-hackers@lists.postgresql.org; Tue, 24 Feb 2026 15:06:15 +0000 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vutzI-000000014Oq-0zhJ for pgsql-hackers@postgresql.org; Tue, 24 Feb 2026 15:06:15 +0000 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-7982c3b7dfcso35287527b3.0 for ; Tue, 24 Feb 2026 07:06:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771945571; cv=none; d=google.com; s=arc-20240605; b=EUkkgENKCmcHxx2BZxSyd5oaAP46gO8l6WwLahTLwQUW8n/M7U+bwcxK66og/JzQIE w/ru7VOQF3rskCSd2EktmSt0fLCOHC228aZCVxz7pvM0S06omZdvQVzCmeql7D1doM5g vu86VhWqnXAG0f16MafJ9wawTi2qiq+E3tDo0lxtqlRGtB4Sgeup2UMvgGuCSsNUgBAH FnzmPE6kteLoz7GzthF14xUh4Q3z37ihGxH1QNaEAlHmPcB+iNL8nIzwNU5NMWqwT3JZ uEv1AmePMelLsoD9Fl+EAV6ZNTSOBYwn6TjeJFROPv3m9zT+1BXL0/DTSCl77bxerjal VXRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ap6ksy83BkigsNFySv7LyEIv15HuIt9Xu/Zc/c7CN7A=; fh=Tccc45CwlcCAjWMSlPu2uE3opNnkOZKIL99ph2vFnLI=; b=Som8lo3H+qrnB6WBAv5TRx/y4guXxBj/hmQVi8y21Kp+us2JYedV9d8rjMZW/qdEGr pbgfWGRZSRJE5Ze8Rl46CM/lNrTZSvnqsqPewSCbl+h2y+cIe7WuO6e/Zr/1mdSgdR75 JnCarGCDlE6Qzuv30ydAWb9fwZbLdiqx3wxVgLMTtR0aCVTBSSiogJtnVQON3w09KIJM qO6mpd8gXL0Aa2DPSrQZidbXwm0OVPBHijs6Tq/rGAlkDT6rSFiuLJ+sYmHefO0RdaXT BnqJxmN3folIflX3IZOFL5CUaXb4QSKeo5XU4QbWbqPNxsfzWEXp5uvtQbvl6hG2OCQB qcug==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1771945571; x=1772550371; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ap6ksy83BkigsNFySv7LyEIv15HuIt9Xu/Zc/c7CN7A=; b=Khe50W0+ESlUBET3taR9nzQGDBDxa0jUXGN4pJIck5l2SrMMQmIvlvmZoqkXSEdMNb OETg3kKV8IE0tfnwGuU3zKi1rie1mokG40i8blifwYzJFsMDAPIP6KZi9VVoGcCdpkkU 2YJiOhO5OJcAbphSfR2xv1bEeokTWjfDH+a2aY8C4u1A71NsbO1KjZPZTP3/TkM1JeCz +5atSOydSOXWWd4u9iN+Q5Syw2RaaV+qka63g7pPzvNeteWua1bdYhSXh7JcJQZua8MB 5hTr3YLkDMe9PwJjZ7nANSUQdwmwpQGWjAw1v0+zXdf0v5gw3KOT+t2LuYVePOuspmtT Zu4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771945571; x=1772550371; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ap6ksy83BkigsNFySv7LyEIv15HuIt9Xu/Zc/c7CN7A=; b=PrH+ftUT+uLx+d/Lph5whHzdQJZfibJxHG0Lg0zg+Fk0Zhi5Ew3tIpy8SFXo67Ectc +T9Osgd0C+C8fVsdFR+FtCZEZzPICnYP05yxeiQziTXhoM4m2UXuO30H7cvHH7x0M1Jf zgUHc0Q8nnBR6IONvUpmh+CZPE1lQBdUaDDDUoKhPlzTrAGm97fNnbGk8vdcqRo2+2KB hG1/oEp8eMc6kLhKwUyBxZA/XRFuQbRLZxislv/iWcdHT4+W2tCShVJ9ExS0X9EaHBYr iEPyTZimi6NG7qCXrcygAKUPcdFr37nqKD6AvIwm3O0DqyF7Q6ao0jKaZVwQsFes5D9/ /61g== X-Gm-Message-State: AOJu0YxgXc3+N+urQyQ6HQIgcGC2BLSZX6Tric8KifEDiQtZd4jNGJKe n8DZgSsiLSeDp6sZzaCYzzMhIw5vyugPhd0CtW9E1gCd0fg/xuX6MKc9z8yP2p6MYHekbitn5iE +dlBcBHcrPcBz5xVyxBP+EGkQP63BE6OG/MCuv45SP9zeLBots/o5NRk= X-Gm-Gg: ATEYQzwYKehr6M/PBmv5FCbtHLoI26fQ1Sgnj4iv2M/yJi6X4m00J1opM6iH8NvWsGJ JffJrf9TbcK5z2bGMC247YQZcYigWzGuIJmV8k3KIz0v9NehwTqjq3QADgeXIoRxHivmcBa58qa Bxwda/mmnRia8kq6zoxS8o7iyVTY1GouNBzbTi1UiB8m9jVA9zX++3beys4O+xhzQANUupTX6zB z1FAG+4dxf85icEQg5HDUt/45k8+XiU67ZmbjUPsjMVYUhM0Np9ILN/hx2+uNgQToLWFYoqXRAa zW+UEU2AuRzZr3LTsdoYAJmLBdQug0LeGGtdOQXaRNtJyW7jJU5n574HS+Xpx+2KbKT1xA== X-Received: by 2002:a05:690e:1288:b0:64a:e1de:e830 with SMTP id 956f58d0204a3-64c786d10b8mr11351829d50.16.1771945570944; Tue, 24 Feb 2026 07:06:10 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aleksander Alekseev Date: Tue, 24 Feb 2026 18:05:59 +0300 X-Gm-Features: AaiRm53RJPZ0hkuv-Fbjrb-T14W15W_8QzZF3Hd3EvIx8Xf8VYWNPSBgttohMtQ Message-ID: Subject: Re: [PATCH] Refactor *_abbrev_convert() functions To: PostgreSQL Development Cc: John Naylor Content-Type: multipart/mixed; boundary="00000000000051aa19064b933abb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000051aa19064b933abb Content-Type: text/plain; charset="UTF-8" Hi, > Thanks again. > > > I think it makes sense to squash 0001 and 0003 together, then 0002 and > > 0004 together. > > [...] > > 0005 doesn't buy us as much in readability since the two lines no longer match. > > Makes sense. > > > For the first, we should probably combine in the upper half when using > > a 64-bit hash, like this: > > We could do it if you insist but I'm convinced this is redundant. In a > good hash upper 32 bits are as evenly distributed as lower ones so > this combining doesn't buy us much. This may even cause more > collisions, for values that didn't have them initially. > > > Further cleanup possible now that we have 64-bit datums: MAC addresses > > are always 6 bytes, so abbreviation is no longer relevant -- datum1 is > > authoritative. That's in scope for the thread subject but also a > > bigger patch, but maybe someone would like to pick it up for PG20. > > I will pick it up and submit as a separate patch a bit later. 0002 had a wrong commit message due to a mistake during squashing. Here is a corrected patch. -- Best regards, Aleksander Alekseev --00000000000051aa19064b933abb Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Disposition: attachment; filename="v4-0002-Avoid-unnecessary-type-casting-when-using-hash_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm0qme261 RnJvbSAxNzYxY2NiYjNjNDQ4YThkYjg4YWViZjM5YzQ0MDNhNWE3NmIxZGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMyBGZWIgMjAyNiAxNjo0NToxMCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjQgMi8yXSBBdm9pZCB1bm5lY2Vzc2FyeSB0eXBlIGNhc3Rpbmcgd2hlbiB1c2luZyBo YXNoX2FueSgpCgpoYXNoX2FueSgpIGlzIG1lcmVseSBhIHdyYXBwZXIgZm9yIGhhc2hfYnl0ZXMo KS4gQ2FsbCBpdCBkaXJlY3RseSB3aGVuIHBvc3NpYmxlCmluIG9yZGVyIHRvIGF2b2lkIHVubmVj ZXNzYXJ5IHR5cGUgY2FzdGluZy4KCkFkZGl0aW9uYWxseSwgaW1wcm92ZSB0aGUgY29tbWVudCBm b3IgYWRkSHlwZXJMb2dMb2coKS5QcmV2aW91c2x5IHRoZSBjb21tZW50CnN1Z2dlc3RlZCB0byB1 c2UgaGFzaF9hbnkoKSB3aGljaCByZXR1cm4gdmFsdWUgaXMgRGF0dW0uIFNpbmNlIHRoZSBhcmd1 bWVudCBvZgphZGRIeXBlckxvZ0xvZygpIGlzIHVpbnQzMiwgcmVjb21tZW5kaW5nIGhhc2hfYnl0 ZXMoKSBpcyBtb3JlIGFwcHJvcHJpYXRlLgoKQXV0aG9yOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxh bGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClN1Z2dlc3RlZC1ieTogSm9obiBOYXlsb3IgPGpvaG5j bmF5bG9ybHNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSm9obiBOYXlsb3IgPGpvaG5jbmF5bG9y bHNAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSjdjNlRNUGhE UlFNbWtVSFB2OG9PSzk3QjFtUjhOUlM2MURnanBkYVpVUEF3YWVaUSU0MG1haWwuZ21haWwuY29t Ci0tLQogY29udHJpYi9sdHJlZS9sdHJlZV9vcC5jICAgICAgICAgICAgICAgICAgIHwgMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jIHwgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMgICAgfCA0ICsrLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICB8IDggKysrKy0tLS0KIHNyYy9iYWNr ZW5kL2xpYi9oeXBlcmxvZ2xvZy5jICAgICAgICAgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL25v ZGVzL2JpdG1hcHNldC5jICAgICAgICAgICAgICB8IDQgKystLQogc3JjL2JhY2tlbmQvdHNlYXJj aC90c190eXBhbmFseXplLmMgICAgICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv Ynl0ZWEuYyAgICAgICAgICAgICAgfCA0ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u Yl9naW4uYyAgICAgICAgICB8IDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGls LmMgICAgICAgICB8IDQgKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEuYyAgICAg ICAgICAgIHwgNCArKy0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyAgICAg ICAgfCA4ICsrKystLS0tCiAxMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2x0cmVlL2x0cmVlX29wLmMgYi9jb250 cmliL2x0cmVlL2x0cmVlX29wLmMKaW5kZXggYzFmYzc3ZmM4MDQuLmE5YTFiY2UwODYxIDEwMDY0 NAotLS0gYS9jb250cmliL2x0cmVlL2x0cmVlX29wLmMKKysrIGIvY29udHJpYi9sdHJlZS9sdHJl ZV9vcC5jCkBAIC0xNDQsNyArMTQ0LDcgQEAgaGFzaF9sdHJlZShQR19GVU5DVElPTl9BUkdTKQog CiAJd2hpbGUgKGFuID4gMCkKIAl7Ci0JCXVpbnQzMgkJbGV2ZWxIYXNoID0gRGF0dW1HZXRVSW50 MzIoaGFzaF9hbnkoKHVuc2lnbmVkIGNoYXIgKikgYWwtPm5hbWUsIGFsLT5sZW4pKTsKKwkJdWlu dDMyCQlsZXZlbEhhc2ggPSBoYXNoX2J5dGVzKCh1bnNpZ25lZCBjaGFyICopIGFsLT5uYW1lLCBh bC0+bGVuKTsKIAogCQkvKgogCQkgKiBDb21iaW5lIGhhc2ggdmFsdWVzIG9mIHN1Y2Nlc3NpdmUg ZWxlbWVudHMgYnkgbXVsdGlwbHlpbmcgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1w bGUvYmVybm91bGxpLmMKaW5kZXggN2Q4NTYwNDY0YzguLmY3NjhkNDAxNDNlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvYmVybm91bGxpLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL2Jlcm5vdWxsaS5jCkBAIC0yMTQsOCArMjE0LDggQEAg YmVybm91bGxpX25leHRzYW1wbGV0dXBsZShTYW1wbGVTY2FuU3RhdGUgKm5vZGUsCiAKIAkJaGFz aGlucHV0WzFdID0gdHVwb2Zmc2V0OwogCi0JCWhhc2ggPSBEYXR1bUdldFVJbnQzMihoYXNoX2Fu eSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBoYXNoaW5wdXQsCi0JCQkJCQkJCQkgICAoaW50KSBz aXplb2YoaGFzaGlucHV0KSkpOworCQloYXNoID0gaGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQg Y2hhciAqKSBoYXNoaW5wdXQsCisJCQkJCQkgIChpbnQpIHNpemVvZihoYXNoaW5wdXQpKTsKIAkJ aWYgKGhhc2ggPCBzYW1wbGVyLT5jdXRvZmYpCiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGVzYW1wbGUvc3lzdGVtLmMKaW5kZXggYTJiOWJhOGVlYTkuLmRlMTNkZDhjYWI5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGVzYW1wbGUvc3lzdGVtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlc2FtcGxlL3N5c3RlbS5jCkBAIC0yMDIsOCArMjAyLDgg QEAgc3lzdGVtX25leHRzYW1wbGVibG9jayhTYW1wbGVTY2FuU3RhdGUgKm5vZGUsIEJsb2NrTnVt YmVyIG5ibG9ja3MpCiAKIAkJaGFzaGlucHV0WzBdID0gbmV4dGJsb2NrOwogCi0JCWhhc2ggPSBE YXR1bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBoYXNoaW5wdXQs Ci0JCQkJCQkJCQkgICAoaW50KSBzaXplb2YoaGFzaGlucHV0KSkpOworCQloYXNoID0gaGFzaF9i eXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBoYXNoaW5wdXQsCisJCQkJCQkgIChpbnQpIHNp emVvZihoYXNoaW5wdXQpKTsKIAkJaWYgKGhhc2ggPCBzYW1wbGVyLT5jdXRvZmYpCiAJCQlicmVh azsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCAzMTUyNzBkZGIxMS4uYWVlODQ1MjE4ZTkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYwpAQCAtNjUyLDggKzY1Miw4IEBAIGdsb2JhbENoYW5uZWxUYWJsZUhh c2goY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qgc2l6ZSwgdm9pZCAqYXJnKQogCWRzaGFzaF9oYXNo IGg7CiAKIAloID0gbXVybXVyaGFzaDMyKGstPmRib2lkKTsKLQloIF49IGhhc2hfYW55KChjb25z dCB1bnNpZ25lZCBjaGFyICopIGstPmNoYW5uZWwsCi0JCQkJICBzdHJubGVuKGstPmNoYW5uZWws IE5BTUVEQVRBTEVOKSk7CisJaCBePSBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICop IGstPmNoYW5uZWwsCisJCQkJICAgIHN0cm5sZW4oay0+Y2hhbm5lbCwgTkFNRURBVEFMRU4pKTsK IAogCXJldHVybiBoOwogfQpAQCAtMzI0NCw4ICszMjQ0LDggQEAgbm90aWZpY2F0aW9uX2hhc2go Y29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiAKIAlBc3NlcnQoa2V5c2l6ZSA9PSBzaXpl b2YoTm90aWZpY2F0aW9uICopKTsKIAkvKiBXZSBkb24ndCBib3RoZXIgdG8gaW5jbHVkZSB0aGUg cGF5bG9hZCdzIHRyYWlsaW5nIG51bGwgaW4gdGhlIGhhc2ggKi8KLQlyZXR1cm4gRGF0dW1HZXRV SW50MzIoaGFzaF9hbnkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgay0+ZGF0YSwKLQkJCQkJCQkJ ICAgay0+Y2hhbm5lbF9sZW4gKyBrLT5wYXlsb2FkX2xlbiArIDEpKTsKKwlyZXR1cm4gaGFzaF9i eXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5kYXRhLAorCQkJCQkgIGstPmNoYW5uZWxf bGVuICsgay0+cGF5bG9hZF9sZW4gKyAxKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYi9oeXBlcmxvZ2xvZy5jIGIvc3JjL2JhY2tlbmQvbGliL2h5cGVybG9nbG9nLmMKaW5k ZXggYzc0ZjExMjE3ZWYuLjJiODJmZjEyYjJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWIv aHlwZXJsb2dsb2cuYworKysgYi9zcmMvYmFja2VuZC9saWIvaHlwZXJsb2dsb2cuYwpAQCAtMTU4 LDcgKzE1OCw3IEBAIGZyZWVIeXBlckxvZ0xvZyhoeXBlckxvZ0xvZ1N0YXRlICpjU3RhdGUpCiAg KiBBZGRzIGVsZW1lbnQgdG8gdGhlIGVzdGltYXRvciwgZnJvbSBjYWxsZXItc3VwcGxpZWQgaGFz aC4KICAqCiAgKiBJdCBpcyBjcml0aWNhbCB0aGF0IHRoZSBoYXNoIHZhbHVlIHBhc3NlZCBiZSBh biBhY3R1YWwgaGFzaCB2YWx1ZSwgdHlwaWNhbGx5Ci0gKiBnZW5lcmF0ZWQgdXNpbmcgaGFzaF9h bnkoKS4gIFRoZSBhbGdvcml0aG0gcmVsaWVzIG9uIGEgc3BlY2lmaWMgYml0LXBhdHRlcm4KKyAq IGdlbmVyYXRlZCB1c2luZyBoYXNoX2J5dGVzKCkuICBUaGUgYWxnb3JpdGhtIHJlbGllcyBvbiBh IHNwZWNpZmljIGJpdC1wYXR0ZXJuCiAgKiBvYnNlcnZhYmxlIGluIGNvbmp1bmN0aW9uIHdpdGgg c3RvY2hhc3RpYyBhdmVyYWdpbmcuICBUaGVyZSBtdXN0IGJlIGEKICAqIHVuaWZvcm0gZGlzdHJp YnV0aW9uIG9mIGJpdHMgaW4gaGFzaCB2YWx1ZXMgZm9yIGVhY2ggZGlzdGluY3Qgb3JpZ2luYWwg dmFsdWUKICAqIG9ic2VydmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvYml0bWFw c2V0LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9iaXRtYXBzZXQuYwppbmRleCA3ODZmMzQzYjNjOS4u NjhiYjkzNjg5OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL2JpdG1hcHNldC5jCkBAIC0xNDA1LDggKzE0MDUsOCBAQCBi bXNfaGFzaF92YWx1ZShjb25zdCBCaXRtYXBzZXQgKmEpCiAKIAlpZiAoYSA9PSBOVUxMKQogCQly ZXR1cm4gMDsJCQkJLyogQWxsIGVtcHR5IHNldHMgaGFzaCB0byAwICovCi0JcmV0dXJuIERhdHVt R2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBjaGFyICopIGEtPndvcmRzLAotCQkJ CQkJCQkgICBhLT5ud29yZHMgKiBzaXplb2YoYml0bWFwd29yZCkpKTsKKwlyZXR1cm4gaGFzaF9i eXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBhLT53b3JkcywKKwkJCQkJICBhLT5ud29yZHMg KiBzaXplb2YoYml0bWFwd29yZCkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5 emUuYwppbmRleCA0OGVlMDUwZTM3Zi4uNmNhOGVhZDM5ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNf dHlwYW5hbHl6ZS5jCkBAIC00OTYsOCArNDk2LDggQEAgbGV4ZW1lX2hhc2goY29uc3Qgdm9pZCAq a2V5LCBTaXplIGtleXNpemUpCiB7CiAJY29uc3QgTGV4ZW1lSGFzaEtleSAqbCA9IChjb25zdCBM ZXhlbWVIYXNoS2V5ICopIGtleTsKIAotCXJldHVybiBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgo Y29uc3QgdW5zaWduZWQgY2hhciAqKSBsLT5sZXhlbWUsCi0JCQkJCQkJCSAgIGwtPmxlbmd0aCkp OworCXJldHVybiBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGwtPmxleGVtZSwK KwkJCQkJICBsLT5sZW5ndGgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2J5dGVhLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYwppbmRleCBmMzJi ZDIzZDAzYy4uMWUyNTVmMDA1NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9i eXRlYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jCkBAIC0xMTA2LDggKzEx MDYsOCBAQCBieXRlYV9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQg c3N1cCkKIAkgKiBpbiBvcmRlciB0byBjb21wZW5zYXRlIGZvciBjYXNlcyB3aGVyZSBkaWZmZXJl bmNlcyBhcmUgcGFzdAogCSAqIFBHX0NBQ0hFX0xJTkVfU0laRSBieXRlcywgc28gYXMgdG8gbGlt aXQgdGhlIG92ZXJoZWFkIG9mIGhhc2hpbmcuCiAJICovCi0JaGFzaCA9IERhdHVtR2V0VUludDMy KGhhc2hfYW55KCh1bnNpZ25lZCBjaGFyICopIGF1dGhvcml0YXRpdmVfZGF0YSwKLQkJCQkJCQkJ ICAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9TSVpFKSkpOworCWhhc2ggPSBoYXNoX2J5dGVzKCh1 bnNpZ25lZCBjaGFyICopIGF1dGhvcml0YXRpdmVfZGF0YSwKKwkJCQkJICBNaW4obGVuLCBQR19D QUNIRV9MSU5FX1NJWkUpKTsKIAogCWlmIChsZW4gPiBQR19DQUNIRV9MSU5FX1NJWkUpCiAJCWhh c2ggXj0gbXVybXVyaGFzaDMyKCh1aW50MzIpIGxlbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmJfZ2luLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmJfZ2lu LmMKaW5kZXggZDcyYTY0NDFjNWUuLmY1ZGJkNTU4OWQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbmJfZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i X2dpbi5jCkBAIC0xMzMzLDcgKzEzMzMsNyBAQCBtYWtlX3RleHRfa2V5KGNoYXIgZmxhZywgY29u c3QgY2hhciAqc3RyLCBpbnQgbGVuKQogCXsKIAkJdWludDMyCQloYXNodmFsOwogCi0JCWhhc2h2 YWwgPSBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzdHIs IGxlbikpOworCQloYXNodmFsID0gaGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBz dHIsIGxlbik7CiAJCXNucHJpbnRmKGhhc2hidWYsIHNpemVvZihoYXNoYnVmKSwgIiUwOHgiLCBo YXNodmFsKTsKIAkJc3RyID0gaGFzaGJ1ZjsKIAkJbGVuID0gODsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9qc29uYl91dGlsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmJfdXRpbC5jCmluZGV4IDkxZmI5ZWEwOWJmLi45MWJmZjlmZGEzYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iX3V0aWwuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbmJfdXRpbC5jCkBAIC0xNDUxLDggKzE0NTEsOCBAQCBKc29uYkhhc2hTY2FsYXJWYWx1 ZShjb25zdCBKc29uYlZhbHVlICpzY2FsYXJWYWwsIHVpbnQzMiAqaGFzaCkKIAkJCXRtcCA9IDB4 MDE7CiAJCQlicmVhazsKIAkJY2FzZSBqYnZTdHJpbmc6Ci0JCQl0bXAgPSBEYXR1bUdldFVJbnQz MihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcu dmFsLAotCQkJCQkJCQkJCSAgc2NhbGFyVmFsLT52YWwuc3RyaW5nLmxlbikpOworCQkJdG1wID0g aGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcu dmFsLAorCQkJCQkJCSBzY2FsYXJWYWwtPnZhbC5zdHJpbmcubGVuKTsKIAkJCWJyZWFrOwogCQlj YXNlIGpidk51bWVyaWM6CiAJCQkvKiBNdXN0IGhhc2ggZXF1YWwgbnVtZXJpY3MgdG8gZXF1YWwg aGFzaCBjb2RlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXggZWEzZDRkY2YxOGIuLjMw NTQ1OTA0MTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTIxNTEsOCArMjE1MSw4IEBA IHZhcnN0cl9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkK IAkgKiBpbiBvcmRlciB0byBjb21wZW5zYXRlIGZvciBjYXNlcyB3aGVyZSBkaWZmZXJlbmNlcyBh cmUgcGFzdAogCSAqIFBHX0NBQ0hFX0xJTkVfU0laRSBieXRlcywgc28gYXMgdG8gbGltaXQgdGhl IG92ZXJoZWFkIG9mIGhhc2hpbmcuCiAJICovCi0JaGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hf YW55KCh1bnNpZ25lZCBjaGFyICopIGF1dGhvcml0YXRpdmVfZGF0YSwKLQkJCQkJCQkJICAgTWlu KGxlbiwgUEdfQ0FDSEVfTElORV9TSVpFKSkpOworCWhhc2ggPSBoYXNoX2J5dGVzKCh1bnNpZ25l ZCBjaGFyICopIGF1dGhvcml0YXRpdmVfZGF0YSwKKwkJCQkJICBNaW4obGVuLCBQR19DQUNIRV9M SU5FX1NJWkUpKTsKIAogCWlmIChsZW4gPiBQR19DQUNIRV9MSU5FX1NJWkUpCiAJCWhhc2ggXj0g bXVybXVyaGFzaDMyKCh1aW50MzIpIGxlbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9mdW5jY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5j CmluZGV4IDcwMWMyOTRiODhkLi42OGJiZjBiOTcxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVu Y2NhY2hlLmMKQEAgLTg5LDEzICs4OSwxMyBAQCBjZnVuY19oYXNoKGNvbnN0IHZvaWQgKmtleSwg U2l6ZSBrZXlzaXplKQogCiAJQXNzZXJ0KGtleXNpemUgPT0gc2l6ZW9mKENhY2hlZEZ1bmN0aW9u SGFzaEtleSkpOwogCS8qIEhhc2ggYWxsIHRoZSBmaXhlZCBmaWVsZHMgZXhjZXB0IGNhbGxSZXN1 bHRUeXBlICovCi0JaCA9IERhdHVtR2V0VUludDMyKGhhc2hfYW55KChjb25zdCB1bnNpZ25lZCBj aGFyICopIGssCi0JCQkJCQkJCW9mZnNldG9mKENhY2hlZEZ1bmN0aW9uSGFzaEtleSwgY2FsbFJl c3VsdFR5cGUpKSk7CisJaCA9IGhhc2hfYnl0ZXMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgaywK KwkJCQkgICBvZmZzZXRvZihDYWNoZWRGdW5jdGlvbkhhc2hLZXksIGNhbGxSZXN1bHRUeXBlKSk7 CiAJLyogSW5jb3Jwb3JhdGUgaW5wdXQgYXJndW1lbnQgdHlwZXMgKi8KIAlpZiAoay0+bmFyZ3Mg PiAwKQogCQloID0gaGFzaF9jb21iaW5lKGgsCi0JCQkJCQkgRGF0dW1HZXRVSW50MzIoaGFzaF9h bnkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgay0+YXJndHlwZXMsCi0JCQkJCQkJCQkJCQkgay0+ bmFyZ3MgKiBzaXplb2YoT2lkKSkpKTsKKwkJCQkJCSBoYXNoX2J5dGVzKChjb25zdCB1bnNpZ25l ZCBjaGFyICopIGstPmFyZ3R5cGVzLAorCQkJCQkJCQkJay0+bmFyZ3MgKiBzaXplb2YoT2lkKSkp OwogCS8qIEluY29ycG9yYXRlIGNhbGxSZXN1bHRUeXBlIGlmIHByZXNlbnQgKi8KIAlpZiAoay0+ Y2FsbFJlc3VsdFR5cGUpCiAJCWggPSBoYXNoX2NvbWJpbmUoaCwgaGFzaFJvd1R5cGUoay0+Y2Fs bFJlc3VsdFR5cGUpKTsKLS0gCjIuNDMuMAoK --00000000000051aa19064b933abb Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-Simplify-abbreviated-key-hashing-using-murmurhash.patch" Content-Disposition: attachment; filename="v4-0001-Simplify-abbreviated-key-hashing-using-murmurhash.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm0qme210 RnJvbSAzY2Q2MjVkMmQ0MjU1NDExMWIzNGQ3MGQwODIwZjY4YzdlYzVkYjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IFR1ZSwgMTMgSmFuIDIwMjYgMTQ6NTE6MjEgKzAzMDAKU3ViamVjdDog W1BBVENIIHY0IDEvMl0gU2ltcGxpZnkgYWJicmV2aWF0ZWQga2V5IGhhc2hpbmcgdXNpbmcgbXVy bXVyaGFzaDY0KCkKCk5vdyB3aGVuIGFsbCBEYXR1bXMgYXJlIDY0LWJpdCB2YWx1ZXMgd2UgY2Fu IHNpbXBsaWZ5IHRoZSBjb2RlIGJ5IHVzaW5nCm11cm11cmhhc2g2NCgpIGluICpfYWJicmV2X2Nv bnZlcnQoKSBmdW5jdGlvbnMuIEFsc28gcmVwbGFjZSBoYXNoX3VpbnQzMigpCndpdGggbXVybXVy aGFzaDMyKCkgaW4gYSBmZXcgb3RoZXIgcGxhY2VzIGZvciBjb25zaXN0ZW5jeS4KCkF1dGhvcjog QWxla3NhbmRlciBBbGVrc2VldiA8YWxla3NhbmRlckB0aWdlcmRhdGEuY29tPgpTdWdnZXN0ZWQt Ynk6IEpvaG4gTmF5bG9yIDxqb2huY25heWxvcmxzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEpv aG4gTmF5bG9yIDxqb2huY25heWxvcmxzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUo3YzZUTVBoRFJRTW1rVUhQdjhvT0s5N0IxbVI4TlJTNjFEZ2pwZGFaVVBB d2FlWlElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMg ICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ieXRlYS5jICAgfCAgOSArKy0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYyAgICAgfCAxMSArKystLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L25ldHdvcmsuYyB8ICA2ICstLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L251bWVyaWMuYyB8ICA1ICstLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdXVp ZC5jICAgIHwgIDYgKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jIHwgIDkg KystLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDY1N2M1OTE2MThkLi4zMTUyNzBkZGIxMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9hc3luYy5jCkBAIC02NTEsOSArNjUxLDkgQEAgZ2xvYmFsQ2hhbm5lbFRhYmxlSGFz aChjb25zdCB2b2lkICprZXksIHNpemVfdCBzaXplLCB2b2lkICphcmcpCiAJY29uc3QgR2xvYmFs Q2hhbm5lbEtleSAqayA9IChjb25zdCBHbG9iYWxDaGFubmVsS2V5ICopIGtleTsKIAlkc2hhc2hf aGFzaCBoOwogCi0JaCA9IERhdHVtR2V0VUludDMyKGhhc2hfdWludDMyKGstPmRib2lkKSk7Ci0J aCBePSBEYXR1bUdldFVJbnQzMihoYXNoX2FueSgoY29uc3QgdW5zaWduZWQgY2hhciAqKSBrLT5j aGFubmVsLAotCQkJCQkJCQkgc3RybmxlbihrLT5jaGFubmVsLCBOQU1FREFUQUxFTikpKTsKKwlo ID0gbXVybXVyaGFzaDMyKGstPmRib2lkKTsKKwloIF49IGhhc2hfYW55KChjb25zdCB1bnNpZ25l ZCBjaGFyICopIGstPmNoYW5uZWwsCisJCQkJICBzdHJubGVuKGstPmNoYW5uZWwsIE5BTUVEQVRB TEVOKSk7CiAKIAlyZXR1cm4gaDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ieXRlYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2J5dGVhLmMKaW5kZXggZmQ3NjYyZDQx ZWUuLmYzMmJkMjNkMDNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYnl0ZWEuYwpAQCAtMTExMCwxNyArMTExMCwx MiBAQCBieXRlYV9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1 cCkKIAkJCQkJCQkJICAgTWluKGxlbiwgUEdfQ0FDSEVfTElORV9TSVpFKSkpOwogCiAJaWYgKGxl biA+IFBHX0NBQ0hFX0xJTkVfU0laRSkKLQkJaGFzaCBePSBEYXR1bUdldFVJbnQzMihoYXNoX3Vp bnQzMigodWludDMyKSBsZW4pKTsKKwkJaGFzaCBePSBtdXJtdXJoYXNoMzIoKHVpbnQzMikgbGVu KTsKIAogCWFkZEh5cGVyTG9nTG9nKCZic3MtPmZ1bGxfY2FyZCwgaGFzaCk7CiAKIAkvKiBIYXNo IGFiYnJldmlhdGVkIGtleSAqLwotCXsKLQkJdWludDMyCQl0bXA7Ci0KLQkJdG1wID0gRGF0dW1H ZXRVSW50MzIocmVzKSBeICh1aW50MzIpIChEYXR1bUdldFVJbnQ2NChyZXMpID4+IDMyKTsKLQkJ aGFzaCA9IERhdHVtR2V0VUludDMyKGhhc2hfdWludDMyKHRtcCkpOwotCX0KKwloYXNoID0gKHVp bnQzMikgbXVybXVyaGFzaDY0KERhdHVtR2V0VUludDY0KHJlcykpOwogCiAJYWRkSHlwZXJMb2dM b2coJmJzcy0+YWJicl9jYXJkLCBoYXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L21hYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5jCmluZGV4IGYxNDY3NWRl YTQwLi4wNjU4ODQ2ZjI3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21hYy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tYWMuYwpAQCAtNDkyLDE3ICs0OTIsMTIgQEAg bWFjYWRkcl9hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwgU29ydFN1cHBvcnQgc3N1cCkK IAl1c3MtPmlucHV0X2NvdW50ICs9IDE7CiAKIAkvKgotCSAqIENhcmRpbmFsaXR5IGVzdGltYXRp b24uIFRoZSBlc3RpbWF0ZSB1c2VzIHVpbnQzMiwgc28gWE9SIHRoZSB0d28gMzItYml0Ci0JICog aGFsdmVzIHRvZ2V0aGVyIHRvIHByb2R1Y2Ugc2xpZ2h0bHkgbW9yZSBlbnRyb3B5LiBUaGUgdHdv IHplcm9lZCBieXRlcwotCSAqIHdvbid0IGhhdmUgYW55IHByYWN0aWNhbCBpbXBhY3Qgb24gdGhp cyBvcGVyYXRpb24uCisJICogQ2FyZGluYWxpdHkgZXN0aW1hdGlvbi4gVGhlIGVzdGltYXRlIHVz ZXMgdWludDMyLCBzbyB3ZSBoYXNoIHRoZSBmdWxsCisJICogNjQtYml0IHZhbHVlIGFuZCB0YWtl IHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSByZXN1bHQuCiAJICovCiAJaWYgKHVzcy0+ZXN0aW1h dGluZykKIAl7Ci0JCXVpbnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykg XiAodWludDMyKSAoRGF0dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0KLQkJYWRkSHlwZXJMb2dM b2coJnVzcy0+YWJicl9jYXJkLCBEYXR1bUdldFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJ CWFkZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KERh dHVtR2V0VUludDY0KHJlcykpKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L25ldHdvcmsuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKaW5k ZXggM2EyMDAyMDk3ZGQuLmMyMjZhZjVjYTgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbmV0d29yay5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9uZXR3b3JrLmMKQEAg LTczOSwxMSArNzM5LDcgQEAgbmV0d29ya19hYmJyZXZfY29udmVydChEYXR1bSBvcmlnaW5hbCwg U29ydFN1cHBvcnQgc3N1cCkKIAkvKiBIYXNoIGFiYnJldmlhdGVkIGtleSAqLwogCWlmICh1c3Mt PmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcDsKLQotCQl0bXAgPSBEYXR1bUdldFVJbnQz MihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJlcykgPj4gMzIpOwotCi0JCWFkZEh5 cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIodG1w KSkpOworCQlhZGRIeXBlckxvZ0xvZygmdXNzLT5hYmJyX2NhcmQsICh1aW50MzIpIG11cm11cmhh c2g2NChEYXR1bUdldFVJbnQ2NChyZXMpKSk7CiAJfQogCiAJcmV0dXJuIHJlczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtZXJpYy5jCmluZGV4IGQyNWI4YWQ1MDVkLi5iYmUyNTgxZjBiNyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtZXJpYy5jCkBAIC0yMzk3LDEwICsyMzk3LDcgQEAgbnVtZXJpY19hYmJyZXZfY29udmVy dF92YXIoY29uc3QgTnVtZXJpY1ZhciAqdmFyLCBOdW1lcmljU29ydFN1cHBvcnQgKm5zcykKIAog CWlmIChuc3MtPmVzdGltYXRpbmcpCiAJewotCQl1aW50MzIJCXRtcCA9ICgodWludDMyKSByZXN1 bHQKLQkJCQkJCSAgIF4gKHVpbnQzMikgKCh1aW50NjQpIHJlc3VsdCA+PiAzMikpOwotCi0JCWFk ZEh5cGVyTG9nTG9nKCZuc3MtPmFiYnJfY2FyZCwgRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIo dG1wKSkpOworCQlhZGRIeXBlckxvZ0xvZygmbnNzLT5hYmJyX2NhcmQsICh1aW50MzIpIG11cm11 cmhhc2g2NChyZXN1bHQpKTsKIAl9CiAKIAlyZXR1cm4gTnVtZXJpY0FiYnJldkdldERhdHVtKHJl c3VsdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3V1aWQuYwppbmRleCA2ZWUzNzUyYWM3OC4uODg4ODAyYzMwMTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3V1aWQuYwpAQCAtMzk2LDExICszOTYsNyBAQCB1dWlkX2FiYnJldl9jb252ZXJ0 KERhdHVtIG9yaWdpbmFsLCBTb3J0U3VwcG9ydCBzc3VwKQogCiAJaWYgKHVzcy0+ZXN0aW1hdGlu ZykKIAl7Ci0JCXVpbnQzMgkJdG1wOwotCi0JCXRtcCA9IERhdHVtR2V0VUludDMyKHJlcykgXiAo dWludDMyKSAoRGF0dW1HZXRVSW50NjQocmVzKSA+PiAzMik7Ci0KLQkJYWRkSHlwZXJMb2dMb2co JnVzcy0+YWJicl9jYXJkLCBEYXR1bUdldFVJbnQzMihoYXNoX3VpbnQzMih0bXApKSk7CisJCWFk ZEh5cGVyTG9nTG9nKCZ1c3MtPmFiYnJfY2FyZCwgKHVpbnQzMikgbXVybXVyaGFzaDY0KERhdHVt R2V0VUludDY0KHJlcykpKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3ZhcmxlbmEuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKaW5kZXgg N2NhZjcwMGZkNjEuLmVhM2Q0ZGNmMThiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMKQEAgLTIx NTUsMTcgKzIxNTUsMTIgQEAgdmFyc3RyX2FiYnJldl9jb252ZXJ0KERhdHVtIG9yaWdpbmFsLCBT b3J0U3VwcG9ydCBzc3VwKQogCQkJCQkJCQkgICBNaW4obGVuLCBQR19DQUNIRV9MSU5FX1NJWkUp KSk7CiAKIAlpZiAobGVuID4gUEdfQ0FDSEVfTElORV9TSVpFKQotCQloYXNoIF49IERhdHVtR2V0 VUludDMyKGhhc2hfdWludDMyKCh1aW50MzIpIGxlbikpOworCQloYXNoIF49IG11cm11cmhhc2gz MigodWludDMyKSBsZW4pOwogCiAJYWRkSHlwZXJMb2dMb2coJnNzcy0+ZnVsbF9jYXJkLCBoYXNo KTsKIAogCS8qIEhhc2ggYWJicmV2aWF0ZWQga2V5ICovCi0JewotCQl1aW50MzIJCXRtcDsKLQot CQl0bXAgPSBEYXR1bUdldFVJbnQzMihyZXMpIF4gKHVpbnQzMikgKERhdHVtR2V0VUludDY0KHJl cykgPj4gMzIpOwotCQloYXNoID0gRGF0dW1HZXRVSW50MzIoaGFzaF91aW50MzIodG1wKSk7Ci0J fQorCWhhc2ggPSAodWludDMyKSBtdXJtdXJoYXNoNjQoRGF0dW1HZXRVSW50NjQocmVzKSk7CiAK IAlhZGRIeXBlckxvZ0xvZygmc3NzLT5hYmJyX2NhcmQsIGhhc2gpOwogCi0tIAoyLjQzLjAKCg== --00000000000051aa19064b933abb--