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 1wE6oA-003gB8-33 for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Apr 2026 14:38:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wE6o8-00D33R-2n for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Apr 2026 14:38:04 +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.96) (envelope-from ) id 1wE6o8-00D33J-0x for pgsql-hackers@lists.postgresql.org; Sat, 18 Apr 2026 14:38:04 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wE6o5-00000001dNB-3orD for pgsql-hackers@lists.postgresql.org; Sat, 18 Apr 2026 14:38:03 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-b93698bb57aso313203266b.0 for ; Sat, 18 Apr 2026 07:38:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776523080; cv=none; d=google.com; s=arc-20240605; b=MfWyeNmDUQHRJvlRQjT0B5L3q1jHyRnIo9IDevezloNVS/AX5HPEP/f2FCGnmQUg2u 1ur50fc9fpW3RQ/D/Leb0HH7ME2aYoQZfJxU6cQjcxoWyDvM63JyDhzCZ0/wheEcg1Fk 3uIS3RMnUts/u8OgC8sazZjM6gk+KHa54EZNaZZZiy4Dr8pesoYAoD5eBdKpiRv422mh J0AqbJJJOZOIjikZHQlQPw/RHngxPWjPiG0g/tfbhp+HcMgqChzpMnxicMlEbj9r1H1k 5T6vVQXZ/Z/RUtyqLDQbOBPM88nHXe2zHjiaP7aAbyUYOJmQ+PMK1I4u3T2XwkeHPazx S/Tg== 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=hFaZsK2fsPVAeWe+EgVvT6BMh+DjAGQV3uInJnNOniE=; fh=fsGAlbaaOducK6FQac2AQ/bvmu66zEy5i0blHVE3wGI=; b=OWd1t9T69DBCMyUpXV0pjLUpgqL486x0KVRGrlVkFnfLPha1F5umHR0PPkq0hvh8dm Z4q9aCl6OswANfyP9BX+T5muxA707wTT7WpdN35mfA4IlqDMTscXwD/sT363xhaTjSvZ iU3rOagKwcDyPo7ImywbIhoS2QSI9mPOuNURfIB2eQbpiZE4tF4Kj5RRy4UNAATBObjN j923uHWvE75JhdfUbKFBAN10+BTqL2oggwHRQ5+2Q7bmIc6NW0DJ1L+H+1SQA80XmQNz psODXQYp86zCrTlX9dwMrMETyTJaaKLcnSloBOtFmVjLbmMIySQt+oro5sS6MH2CsCtm BbOg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776523080; x=1777127880; darn=lists.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=hFaZsK2fsPVAeWe+EgVvT6BMh+DjAGQV3uInJnNOniE=; b=BJrPbhxWGf/8/BBWT90zV9qmSLClI7lBVTmW5vG0SSN2NILgb1yZNYXEgz/1NkjWIg eRDWE3EXVF8LBoU5ztZQKmw/WE6URkBN0/HwtHWSXAhFxAnDRfTGPtr8bx2sf0kG+AGX ckq1xd4aArSeG/HSApGVIYbztp77Cykmumk1bp6HRSWjLp+cDHwojMgwuOH+9rIYltmR OPqUyvhKNaVQmKEnZLcTiwaqAHcgL5YHJJJ0oqrol1wjFz1SXCdx7J9jSukEerJ0vnLq Chftt89OlmkiK80FY0C+21Q7tzsqri9GRHsSrCek2FjhToDKIKm/S7N7W7pi0nzDUEN9 uF2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776523080; x=1777127880; 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=hFaZsK2fsPVAeWe+EgVvT6BMh+DjAGQV3uInJnNOniE=; b=nsOd5uHGUmAgEhSNnQ6Q3LgWtG1ByNw/q1l/kuovSBzbD8KLfh3+kyHjxZc+Tj6Ple gt12oO1NcdM6JjOPxbcxWMtb0dJCBRNGHBwey4ixzQS84l53vajLV/yRK6YbmZF5Ik9R f1JMiuExDCTsZIWwjkrrw42xDd+ui6OherGKTGFcuzldxkdKTzaVVy95Xw+jiwbmx2r5 wYapEjJ1oPKUVev02VaiBcLxkuqMXG2dQLSHp6P0IJzRKO+cOUsKRXlIt+Y/nfDF37aP bB9Cl2zsq2r8GrJvq52hZvOPkmqx5KmbhL2pGh0GS4gAcNDuM2a1b+5lInTSu3Lev6U4 wxWQ== X-Forwarded-Encrypted: i=1; AFNElJ9Rv04uORKGvQtYjgYCexUATvZwO+4FrNx9lmZzpXWHQpQjWpT8SAgrePhT5wx6Y9i0RpBKr723mUQ0E1Vt@lists.postgresql.org X-Gm-Message-State: AOJu0Yzvpteg44MrmyEnJl9QtGgJWRqhf37ZZ/6SVekTnZUEYCqhFraR kVsTe7lbBSx7FLPfLtGa4Wg4TQALbNr3MxIJ++SFk1L5lUTT2aSqJ9U3nXZ9iXg0wuv65mPU4zR ZMbm8b9bDp/eeSAKv4aRosHzPx3ehlXg= X-Gm-Gg: AeBDieuFBWpb9Wb4nXHwfZTLzqkHj2KelYiWbFxm+vapFIW58/Y2WnO/ficsOLjsSDN zP+ukzPk08JAZbylGQbYZTpzJey0EGWIaGn8xuqwYKZozV6Lyd/0O8zGFknL1DnjruIUwf7ccj5 NvDoCvHEKt25A9rRVXnnjw40Up8dzPdWo8RmWGgtpTDbkXOehn8oCz7CaAgrIIC30JetB9A85UC 79m/R6EVplftotuU/HqPkP6axIy4jhSbpQSSNwXVaQDQJbBzS1JnJNN/JblziH2C8mfJFaKd6QX jddKaPX7W1YwHbXAPuj7L9H+Qg8juJQIeVA2cpQPsNF2vCha X-Received: by 2002:a17:907:980d:b0:b97:6d1b:4be8 with SMTP id a640c23a62f3a-ba42063cd53mr304305466b.10.1776523079718; Sat, 18 Apr 2026 07:37:59 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Sat, 18 Apr 2026 09:37:48 -0500 X-Gm-Features: AQROBzBYJZv6tAKeLJmpKz1TqqNFnEW-vc2lmdpplquySex7dZTrX3Ehhdd0oOU Message-ID: Subject: Re: [PATCH] Fix: Partitioned parent index remains invalid after child indexes are repaired To: Michael Paquier Cc: Haibo Yan , Mohamed ALi , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001ab4d6064fbd0338" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001ab4d6064fbd0338 Content-Type: text/plain; charset="UTF-8" Hi, > Could you write a patch? It would be better to have tests with > multiple levels, at least, with a partitioned table being a leaf of > another partitioned table. I am sure you get the picture, the point > being to recurse across multiple levels. Here is the patch with tests. It adds a test for this case using multi-level partitions and ensures that the parent indexes are validated once a child index is set to valid. Also, I added the negative case where only one child index is validated to ensure that the parent indexes remain invalid. -- Sami Imseih Amazon Web Services (AWS) --0000000000001ab4d6064fbd0338 Content-Type: application/octet-stream; name="v1-0001-Allow-ALTER-INDEX-ATTACH-PARTITION-to-validate-th.patch" Content-Disposition: attachment; filename="v1-0001-Allow-ALTER-INDEX-ATTACH-PARTITION-to-validate-th.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo4fynnn0 RnJvbSBiYTdhYTRkYzA3MDhiOGNjNDMwMDI2NDUwMWRmMDU5NzA5NTM1MTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FubWltc2VpaEBnbWFpbC5jb20+CkRh dGU6IFNhdCwgMTggQXByIDIwMjYgMDU6MzY6MzggKzAwMDAKU3ViamVjdDogW1BBVENIIHYxIDEv MV0gQWxsb3cgQUxURVIgSU5ERVggQVRUQUNIIFBBUlRJVElPTiB0byB2YWxpZGF0ZSB0aGUKIHBh cmVudCBpbmRleAoKVGhpcyBjYXVzZXMgQUxURVIgSU5ERVggQVRUQUNIIFBBUlRJVElPTiB0byB2 YWxpZGF0ZSBhIHBhcmVudAppbmRleCBpbiB0aGUgY2FzZSBhbiBpbmRleCBpcyBhbHJlYWR5IGF0 dGFjaGVkIGJ1dCB0aGUgcGFyZW50CmlzIG5vdCB5ZXQgdmFsaWQuIFRoaXMgb2NjdXJzIGluIGNh c2VzIHdoZXJlIGEgcGFyZW50IGluZGV4CndhcyBjcmVhdGVkIGludmFsaWQgc3VjaCBhcyB3aXRo IENSRUFURSBJTkRFWCBPTkxZLCBidXQgd2FzCmxlZnQgaW52YWxpZCBhZnRlciBhbiBpbnZhbGlk IGNoaWxkIGluZGV4IHdhcyBhdHRhY2hlZC4gVGhpcwpsZWZ0IGEgc2l0dWF0aW9uIGluIHdoaWNo IGEgdXNlciBjYW5ub3QgYnJpbmcgdGhlIHBhcmVudCBpbmRleApiYWNrIHRvIHZhbGlkIGFmdGVy IGZpeGluZyB0aGUgY2hpbGQgaW5kZXguCgpBbiBpbnZhbGlkIHBhcmVudCBpbmRleCBpcyBtb3Jl IHRoYW4ganVzdCBhIHBhc3NpdmUgaXNzdWUsIGl0CmNhdXNlcyBPTiBDT05GTElDVCBvbiBhIHBh cnRpdGlvbmVkIHRhYmxlIGlmIHRoZSBpbnZhbGlkIHBhcmVudAppbmRleCBpcyB1c2VkIHRvIGVu Zm9yY2UgYSB1bmlxdWUgY29uc3RyYWludC4KCkRpc2N1c3Npb246IGh0dHA6Ly9wb3N0Z3IuZXMv bS9DQUduT21XcWkxRDl5Y0JnVWVPR2Y2bU9DZDJEY2YlM0Q2c0toYmY0c0hMczV4QWNLVkNNUSU0 MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAg ICAgfCAxMiArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgfCA3 MSArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhp bmcuc3FsICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTMx IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IGVlYzA5YmExZGVkLi44YjQ2ZDk1NTZlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTIxOTIxLDcgKzIxOTIxLDkgQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uSWR4KExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHBhcmVudElkeCwgUmFuZ2VWYXIgKm5hbWUpCiAKIAlPYmplY3RBZGRy ZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChwYXJ0 SWR4KSk7CiAKLQkvKiBTaWxlbnRseSBkbyBub3RoaW5nIGlmIGFscmVhZHkgaW4gdGhlIHJpZ2h0 IHN0YXRlICovCisJLyoKKwkgKiBDaGVjayBpZiB0aGUgaW5kZXggaXMgYWxyZWFkeSBhdHRhY2hl ZCB0byB0aGUgY29ycmVjdCBwYXJlbnQuCisJICovCiAJY3VyclBhcmVudCA9IHBhcnRJZHgtPnJk X3JlbC0+cmVsaXNwYXJ0aXRpb24gPwogCQlnZXRfcGFydGl0aW9uX3BhcmVudChwYXJ0SWR4SWQs IGZhbHNlKSA6IEludmFsaWRPaWQ7CiAJaWYgKGN1cnJQYXJlbnQgIT0gUmVsYXRpb25HZXRSZWxp ZChwYXJlbnRJZHgpKQpAQCAtMjIwMzAsNiArMjIwMzIsMTQgQEAgQVRFeGVjQXR0YWNoUGFydGl0 aW9uSWR4KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudElkeCwgUmFuZ2VWYXIgKm5hbWUp CiAKIAkJdmFsaWRhdGVQYXJ0aXRpb25lZEluZGV4KHBhcmVudElkeCwgcGFyZW50VGJsKTsKIAl9 CisJZWxzZSBpZiAoIXBhcmVudElkeC0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisJeworCQkvKgor CQkgKiBUaGUgaW5kZXggaXMgYXR0YWNoZWQsIGJ1dCB0aGUgcGFyZW50IGlzIHN0aWxsIGludmFs aWQ7IHNlZSBpZiBpdAorCQkgKiBjYW4gYmUgdmFsaWRhdGVkIG5vdy4KKwkJICovCisJCXZhbGlk YXRlUGFydGl0aW9uZWRJbmRleChwYXJlbnRJZHgsIHBhcmVudFRibCk7CisJfQogCiAJcmVsYXRp b25fY2xvc2UocGFyZW50VGJsLCBBY2Nlc3NTaGFyZUxvY2spOwogCS8qIGtlZXAgdGhlc2UgbG9j a3MgdGlsbCBjb21taXQgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW5kZXhpbmcub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5k ZXggZjUwODY4Y2E2YTYuLjQ3NmJjYzQ4NzhmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2luZGV4aW5nLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu ZGV4aW5nLm91dApAQCAtNTQwLDYgKzU0MCw3NyBAQCBzZWxlY3QgcmVsbmFtZSwgaW5kaXN2YWxp ZCBmcm9tIHBnX2NsYXNzIGpvaW4gcGdfaW5kZXggb24gaW5kZXhyZWxpZCA9IG9pZAogIGlkeHBh cnRfYV9pZHggICB8IHQKICgzIHJvd3MpCiAKK2Ryb3AgdGFibGUgaWR4cGFydDsKKy0tIFZlcmlm eSB0aGF0IHJlLWF0dGFjaGluZyBhbiBhbHJlYWR5LWF0dGFjaGVkIHBhcnRpdGlvbiBpbmRleCBj YW4KKy0tIHZhbGlkYXRlIHRoZSBwYXJlbnQgaW5kZXggaWYgaXQgd2FzIHN0aWxsIGludmFsaWQs IGluY2x1ZGluZworLS0gaW5kaXJlY3QgYW5jZXN0b3JzIGluIHN1YnBhcnRpdGlvbnMuCitjcmVh dGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwor Y3JlYXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJv bSAoMCkgdG8gKDEwMDApIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CitjcmVhdGUgdGFibGUgaWR4 cGFydDExIHBhcnRpdGlvbiBvZiBpZHhwYXJ0MSBmb3IgdmFsdWVzIGZyb20gKDApIHRvICg1MDAp OworLS0gY3JlYXRlIHBhcmVudCBpbmRleGVzCitjcmVhdGUgaW5kZXggb24gb25seSBpZHhwYXJ0 ICgoYS9iKSk7CitjcmVhdGUgaW5kZXggb24gb25seSBpZHhwYXJ0MSAoKGEvYikpOworLS0gZmFp bCwgbGVhdmVzIGJlaGluZCBhbiBpbnZhbGlkIGluZGV4IG9uIHRoZSBsZWFmIHBhcnRpdGlvbgor aW5zZXJ0IGludG8gaWR4cGFydDExIHZhbHVlcyAoMSwgMCk7CitjcmVhdGUgaW5kZXggY29uY3Vy cmVudGx5IG9uIGlkeHBhcnQxMSAoKGEvYikpOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCitz ZWxlY3QgcmVsbmFtZSwgaW5kaXN2YWxpZCBmcm9tIHBnX2NsYXNzIGpvaW4gcGdfaW5kZXggb24g aW5kZXhyZWxpZCA9IG9pZAorICAgd2hlcmUgcmVsbmFtZSBsaWtlICdpZHhwYXJ0JScgb3JkZXIg YnkgcmVsbmFtZTsKKyAgICAgIHJlbG5hbWUgICAgICAgfCBpbmRpc3ZhbGlkIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgaWR4cGFydDExX2V4cHJfaWR4IHwgZgorIGlkeHBh cnQxX2V4cHJfaWR4ICB8IGYKKyBpZHhwYXJ0X2V4cHJfaWR4ICAgfCBmCisoMyByb3dzKQorCist LSBhdHRhY2ggdGhlIGluZGV4ZXM7IHBhcmVudHMgc3RheSBpbnZhbGlkCithbHRlciBpbmRleCBp ZHhwYXJ0MV9leHByX2lkeCBhdHRhY2ggcGFydGl0aW9uIGlkeHBhcnQxMV9leHByX2lkeDsKK2Fs dGVyIGluZGV4IGlkeHBhcnRfZXhwcl9pZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MV9leHBy X2lkeDsKKy0tIGZpeCB0aGUgaW5kZXggb24gdGhlIGxlYWYgcGFydGl0aW9uCitkZWxldGUgZnJv bSBpZHhwYXJ0MTEgd2hlcmUgYiA9IDA7CityZWluZGV4IGluZGV4IGNvbmN1cnJlbnRseSBpZHhw YXJ0MTFfZXhwcl9pZHg7CistLSByZWF0dGFjaCB0aGUgbGVhZiBwYXJ0aXRpb24gaW5kZXg7IHBh cmVudHMgc2hvdWxkIG5vdyBiZSB2YWxpZAorYWx0ZXIgaW5kZXggaWR4cGFydDFfZXhwcl9pZHgg YXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MTFfZXhwcl9pZHg7CitzZWxlY3QgcmVsbmFtZSwgaW5k aXN2YWxpZCBmcm9tIHBnX2NsYXNzIGpvaW4gcGdfaW5kZXggb24gaW5kZXhyZWxpZCA9IG9pZAor ICAgd2hlcmUgcmVsbmFtZSBsaWtlICdpZHhwYXJ0JScgb3JkZXIgYnkgcmVsbmFtZTsKKyAgICAg IHJlbG5hbWUgICAgICAgfCBpbmRpc3ZhbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgaWR4cGFydDExX2V4cHJfaWR4IHwgdAorIGlkeHBhcnQxX2V4cHJfaWR4ICB8IHQK KyBpZHhwYXJ0X2V4cHJfaWR4ICAgfCB0CisoMyByb3dzKQorCitkcm9wIHRhYmxlIGlkeHBhcnQ7 CistLSBWZXJpZnkgdGhhdCByZS1hdHRhY2hpbmcgZG9lcyBub3QgdmFsaWRhdGUgdGhlIHBhcmVu dCB3aGVuIGFub3RoZXIKKy0tIGNoaWxkIGluZGV4IGlzIHN0aWxsIGludmFsaWQuCitjcmVhdGUg dGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOworY3Jl YXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAo MCkgdG8gKDUwMCk7CitjcmVhdGUgdGFibGUgaWR4cGFydDIgcGFydGl0aW9uIG9mIGlkeHBhcnQg Zm9yIHZhbHVlcyBmcm9tICg1MDApIHRvICgxMDAwKTsKK2NyZWF0ZSBpbmRleCBvbiBvbmx5IGlk eHBhcnQgKChhL2IpKTsKKy0tIGNyZWF0ZSBpbnZhbGlkIGluZGV4ZXMgb24gYm90aCBjaGlsZHJl bgoraW5zZXJ0IGludG8gaWR4cGFydDEgdmFsdWVzICgxLCAwKTsKK2luc2VydCBpbnRvIGlkeHBh cnQyIHZhbHVlcyAoNTAxLCAwKTsKK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFy dDEgKChhL2IpKTsKK0VSUk9SOiAgZGl2aXNpb24gYnkgemVybworY3JlYXRlIGluZGV4IGNvbmN1 cnJlbnRseSBvbiBpZHhwYXJ0MiAoKGEvYikpOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCist LSBhdHRhY2ggYm90aDsgcGFyZW50IHN0YXlzIGludmFsaWQKK2FsdGVyIGluZGV4IGlkeHBhcnRf ZXhwcl9pZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MV9leHByX2lkeDsKK2FsdGVyIGluZGV4 IGlkeHBhcnRfZXhwcl9pZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0Ml9leHByX2lkeDsKKy0t IGZpeCBvbmx5IGlkeHBhcnQxJ3MgaW5kZXgsIGxlYXZlIGlkeHBhcnQyJ3Mgc3RpbGwgaW52YWxp ZAorZGVsZXRlIGZyb20gaWR4cGFydDEgd2hlcmUgYiA9IDA7CityZWluZGV4IGluZGV4IGNvbmN1 cnJlbnRseSBpZHhwYXJ0MV9leHByX2lkeDsKKy0tIHJlLWF0dGFjaCB0aGUgZml4ZWQgY2hpbGQ7 IHBhcmVudCBzaG91bGQgc3RheSBpbnZhbGlkCithbHRlciBpbmRleCBpZHhwYXJ0X2V4cHJfaWR4 IGF0dGFjaCBwYXJ0aXRpb24gaWR4cGFydDFfZXhwcl9pZHg7CitzZWxlY3QgcmVsbmFtZSwgaW5k aXN2YWxpZCBmcm9tIHBnX2NsYXNzIGpvaW4gcGdfaW5kZXggb24gaW5kZXhyZWxpZCA9IG9pZAor ICAgd2hlcmUgcmVsbmFtZSBsaWtlICdpZHhwYXJ0JScgb3JkZXIgYnkgcmVsbmFtZTsKKyAgICAg IHJlbG5hbWUgICAgICB8IGluZGlzdmFsaWQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIGlkeHBhcnQxX2V4cHJfaWR4IHwgdAorIGlkeHBhcnQyX2V4cHJfaWR4IHwgZgorIGlk eHBhcnRfZXhwcl9pZHggIHwgZgorKDMgcm93cykKKwogZHJvcCB0YWJsZSBpZHhwYXJ0OwogLS0g dmVyaWZ5IGRlcGVuZGVuY3kgaGFuZGxpbmcgZHVyaW5nIEFMVEVSIFRBQkxFIERFVEFDSCBQQVJU SVRJT04KIGNyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChh KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAppbmRleCAxMjkxMzBkMDRkNC4uYmE1M2M1NmZk OWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKQEAgLTI0Niw2ICsyNDYsNTUgQEAgc2Vs ZWN0IHJlbG5hbWUsIGluZGlzdmFsaWQgZnJvbSBwZ19jbGFzcyBqb2luIHBnX2luZGV4IG9uIGlu ZGV4cmVsaWQgPSBvaWQKICAgIHdoZXJlIHJlbG5hbWUgbGlrZSAnaWR4cGFydCUnIG9yZGVyIGJ5 IHJlbG5hbWU7CiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAKKy0tIFZlcmlmeSB0aGF0IHJlLWF0dGFj aGluZyBhbiBhbHJlYWR5LWF0dGFjaGVkIHBhcnRpdGlvbiBpbmRleCBjYW4KKy0tIHZhbGlkYXRl IHRoZSBwYXJlbnQgaW5kZXggaWYgaXQgd2FzIHN0aWxsIGludmFsaWQsIGluY2x1ZGluZworLS0g aW5kaXJlY3QgYW5jZXN0b3JzIGluIHN1YnBhcnRpdGlvbnMuCitjcmVhdGUgdGFibGUgaWR4cGFy dCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOworY3JlYXRlIHRhYmxlIGlk eHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwMDAp IHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExIHBhcnRpdGlv biBvZiBpZHhwYXJ0MSBmb3IgdmFsdWVzIGZyb20gKDApIHRvICg1MDApOworLS0gY3JlYXRlIHBh cmVudCBpbmRleGVzCitjcmVhdGUgaW5kZXggb24gb25seSBpZHhwYXJ0ICgoYS9iKSk7CitjcmVh dGUgaW5kZXggb24gb25seSBpZHhwYXJ0MSAoKGEvYikpOworLS0gZmFpbCwgbGVhdmVzIGJlaGlu ZCBhbiBpbnZhbGlkIGluZGV4IG9uIHRoZSBsZWFmIHBhcnRpdGlvbgoraW5zZXJ0IGludG8gaWR4 cGFydDExIHZhbHVlcyAoMSwgMCk7CitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBh cnQxMSAoKGEvYikpOworc2VsZWN0IHJlbG5hbWUsIGluZGlzdmFsaWQgZnJvbSBwZ19jbGFzcyBq b2luIHBnX2luZGV4IG9uIGluZGV4cmVsaWQgPSBvaWQKKyAgIHdoZXJlIHJlbG5hbWUgbGlrZSAn aWR4cGFydCUnIG9yZGVyIGJ5IHJlbG5hbWU7CistLSBhdHRhY2ggdGhlIGluZGV4ZXM7IHBhcmVu dHMgc3RheSBpbnZhbGlkCithbHRlciBpbmRleCBpZHhwYXJ0MV9leHByX2lkeCBhdHRhY2ggcGFy dGl0aW9uIGlkeHBhcnQxMV9leHByX2lkeDsKK2FsdGVyIGluZGV4IGlkeHBhcnRfZXhwcl9pZHgg YXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MV9leHByX2lkeDsKKy0tIGZpeCB0aGUgaW5kZXggb24g dGhlIGxlYWYgcGFydGl0aW9uCitkZWxldGUgZnJvbSBpZHhwYXJ0MTEgd2hlcmUgYiA9IDA7City ZWluZGV4IGluZGV4IGNvbmN1cnJlbnRseSBpZHhwYXJ0MTFfZXhwcl9pZHg7CistLSByZWF0dGFj aCB0aGUgbGVhZiBwYXJ0aXRpb24gaW5kZXg7IHBhcmVudHMgc2hvdWxkIG5vdyBiZSB2YWxpZAor YWx0ZXIgaW5kZXggaWR4cGFydDFfZXhwcl9pZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MTFf ZXhwcl9pZHg7CitzZWxlY3QgcmVsbmFtZSwgaW5kaXN2YWxpZCBmcm9tIHBnX2NsYXNzIGpvaW4g cGdfaW5kZXggb24gaW5kZXhyZWxpZCA9IG9pZAorICAgd2hlcmUgcmVsbmFtZSBsaWtlICdpZHhw YXJ0JScgb3JkZXIgYnkgcmVsbmFtZTsKK2Ryb3AgdGFibGUgaWR4cGFydDsKKworLS0gVmVyaWZ5 IHRoYXQgcmUtYXR0YWNoaW5nIGRvZXMgbm90IHZhbGlkYXRlIHRoZSBwYXJlbnQgd2hlbiBhbm90 aGVyCistLSBjaGlsZCBpbmRleCBpcyBzdGlsbCBpbnZhbGlkLgorY3JlYXRlIHRhYmxlIGlkeHBh cnQgKGEgaW50LCBiIGludCkgcGFydGl0aW9uIGJ5IHJhbmdlIChhKTsKK2NyZWF0ZSB0YWJsZSBp ZHhwYXJ0MSBwYXJ0aXRpb24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZyb20gKDApIHRvICg1MDAp OworY3JlYXRlIHRhYmxlIGlkeHBhcnQyIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMg ZnJvbSAoNTAwKSB0byAoMTAwMCk7CitjcmVhdGUgaW5kZXggb24gb25seSBpZHhwYXJ0ICgoYS9i KSk7CistLSBjcmVhdGUgaW52YWxpZCBpbmRleGVzIG9uIGJvdGggY2hpbGRyZW4KK2luc2VydCBp bnRvIGlkeHBhcnQxIHZhbHVlcyAoMSwgMCk7CitpbnNlcnQgaW50byBpZHhwYXJ0MiB2YWx1ZXMg KDUwMSwgMCk7CitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQxICgoYS9iKSk7 CitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQyICgoYS9iKSk7CistLSBhdHRh Y2ggYm90aDsgcGFyZW50IHN0YXlzIGludmFsaWQKK2FsdGVyIGluZGV4IGlkeHBhcnRfZXhwcl9p ZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0MV9leHByX2lkeDsKK2FsdGVyIGluZGV4IGlkeHBh cnRfZXhwcl9pZHggYXR0YWNoIHBhcnRpdGlvbiBpZHhwYXJ0Ml9leHByX2lkeDsKKy0tIGZpeCBv bmx5IGlkeHBhcnQxJ3MgaW5kZXgsIGxlYXZlIGlkeHBhcnQyJ3Mgc3RpbGwgaW52YWxpZAorZGVs ZXRlIGZyb20gaWR4cGFydDEgd2hlcmUgYiA9IDA7CityZWluZGV4IGluZGV4IGNvbmN1cnJlbnRs eSBpZHhwYXJ0MV9leHByX2lkeDsKKy0tIHJlLWF0dGFjaCB0aGUgZml4ZWQgY2hpbGQ7IHBhcmVu dCBzaG91bGQgc3RheSBpbnZhbGlkCithbHRlciBpbmRleCBpZHhwYXJ0X2V4cHJfaWR4IGF0dGFj aCBwYXJ0aXRpb24gaWR4cGFydDFfZXhwcl9pZHg7CitzZWxlY3QgcmVsbmFtZSwgaW5kaXN2YWxp ZCBmcm9tIHBnX2NsYXNzIGpvaW4gcGdfaW5kZXggb24gaW5kZXhyZWxpZCA9IG9pZAorICAgd2hl cmUgcmVsbmFtZSBsaWtlICdpZHhwYXJ0JScgb3JkZXIgYnkgcmVsbmFtZTsKK2Ryb3AgdGFibGUg aWR4cGFydDsKKwogLS0gdmVyaWZ5IGRlcGVuZGVuY3kgaGFuZGxpbmcgZHVyaW5nIEFMVEVSIFRB QkxFIERFVEFDSCBQQVJUSVRJT04KIGNyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGludCkgcGFydGl0 aW9uIGJ5IHJhbmdlIChhKTsKIGNyZWF0ZSB0YWJsZSBpZHhwYXJ0MSAobGlrZSBpZHhwYXJ0KTsK LS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000001ab4d6064fbd0338--