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 1wDZlD-0037qu-1E for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:20:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDZlB-007nM0-1G for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:20:49 +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 1wDZlA-007nLs-2v for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 03:20:49 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDZl8-00000001PU0-2JUt for pgsql-hackers@postgresql.org; Fri, 17 Apr 2026 03:20:48 +0000 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-6058ac0ebceso151312137.2 for ; Thu, 16 Apr 2026 20:20:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776396045; cv=none; d=google.com; s=arc-20240605; b=JoI8OpyXQCt81Eujt4cgFqzaKemN58a5cm3mIwXXwt65m43U9ebRLJbN7aWoV2p7Qh EPfgwZi2JBI7YPztqs+OAiviCcRKRML7twf/ySXWXPYpGC1NArGV10xDD8I7DA/8qo6J MXQNMCv3MX9TnWJUSU+1w1DMc5xgk4OWs70FxOkAFGBh787ZZgvbB6MGlesRb/5gXLdo dg+J/RXqdLq52/EVZx4GSAbcbjSxs1b7WEcFaMlH9dlKmpXFqgt5hY/ta7fhonPCupZN f5QFwjWonpcH7MSpzvUax7Zh+y0Yg5sy93EEO93USP6bw5X85AcpD8DaEu+8/rtfu0XE A3bQ== 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=JCWWOgF5KvfEn1zRzZlA0rrxU7oXWqrhnNFanZWh19w=; fh=7SswwOEkmOKQRu8oGqyJFDyzp9rIiZ47DAbB+H08NQE=; b=Typ86JQxE5nTQaxLAG2ZHpi/CtrN2ga5+8Re9QWhQPgJnh6YuVDdD+vofM+udmOBf8 MqQgF92oY9l1KzDnQ9yhggpBV/opWjrUAssmd/MYXjkC4gDRskG2L+hv6CKu6rMuYe0W AkQVAq6eMt+x4DnphSdHyv4eiAQgljfuCueypsB2B5ttsRe9bp09HWEWCoqNEb6/tCwD 9PFC2cvscUPIo+dzORqoiKcGKvLpfLY4/pMBIIS6243A5avSDuunt5X7ZShkOgpYCFNW /D1wq3QyWQpHIkUZgk2EkZQif6v1zslZfPrdqge+jSeM+guVdWV371U0pKPl3R9x4rKw XBKA==; darn=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=1776396045; x=1777000845; 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=JCWWOgF5KvfEn1zRzZlA0rrxU7oXWqrhnNFanZWh19w=; b=lqu8tVEPg3tAQMfYW/13V+QpGPZMoskZG7hCmh9HZODzEweYQjKza0KDE4SRgpDtsR IJC1aa0oby2abqDv2ksO2YD1nHb0LtZ/6GoWwlzRNcaO2nFnTaKuMlB2SeDm3GNtY1v+ OaPJPQKP9hfdmTB0oceaMY64/CigChM9l0qxxFe69DMBj8Pfza/e7RSBQnqu51SDy4Kd tPtsMSV8+y3qDRn1wMP+X3NhkjkoWgpsrdEt5TwNNP1VUhqACBlDO9Kn3vrhiqDQu6My 8exzex3Ztm8twdOgnRCwYiFpSZETD6aNJgxHJcxFG9MSvgKVOWbCrR/5/p3yARGnmepF Mn/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776396045; x=1777000845; 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=JCWWOgF5KvfEn1zRzZlA0rrxU7oXWqrhnNFanZWh19w=; b=j1HhS0Up4jiYUW4noE74v7D+MEykACHmZR30e4GeldRtq3OZlccSaOkVnOi1CqNcJr JU8e/7QwK+IByBCp9i1JSA6tryVDoXge2ev4sQChkdPWPxtY9Fcwm0YkLmGKcWNHhdhx nBp3fCQJB2jRAuwGS8qp1G+a1Q/t8fnR6uEvJInZUBc2BK1tYVDzllWoEH2UByD/FIEx cpjDLY6vpNSv9ZDJ+bhzdonQfj2xmhtE/M+hrjfPFJZyJsm1qOASK1WDE1K/Tld/qQvR bdLuUclzlAacBE3EXJO3KqmJpKzBHRGizVk2gOCt+0zbGmpKjmyPdsjYzeAXDz3uEDkU HYzg== X-Forwarded-Encrypted: i=1; AFNElJ/J7xhCy8u5t/EzqWW4leCIC+/FO2cSNGn872Ul5Ly+X0GVTfaGJw6wNKCcPFD/XKRe+PTNyUZSC5BByJ9I@postgresql.org X-Gm-Message-State: AOJu0YxMRJYBEU9SQisb5Mu0vs3I1aD2fQABzaOBVogaYuTzXaK4Vu4V IZAY7/UUGZ7j4ex5knvE9laTj81pq2Z9mgk8+Ns2arTLzl5p6NDUpmQm+30nHaQx9WR/4pHlPAI QQ3Gfl4Jpfq00bRx8qh9FZfu1OvGaz2es40KC2FYuIA== X-Gm-Gg: AeBDievEgO6ps8MslH1WhrHX3Kmzkp1vUONuftqlAlStonl/iKlnnfYZ6YkR7BHtQWY C316S4gyz3zejCDRcAn8V1Hp9vgbRWiuW5LwST2D9T9AR+kWx2mZwqeLpVVLf7SLG8/MU6IL1+y T5FCRDt4Jkwmm9EEwvaidwz55uzEUyiw2Bp2dkc+zeaguC/W/XBmwTNwFFqrE86Z7RWjPZKQONz DJdAvrjSgpYrKOvlnMiCRo0GsbJpqsaY58z2eHc5H9I6QRLDGuVDqi2cI+4jeqIUXbyJzgsW6kv 3eGpkRNDkGL9XXDPWEtSDnI9TY4Lw/alXAHF5o0Qd7kDIPw2SF/MEO1FeIqT/ogHumhqYyJVQRz hkYm9Rnkn9mEBvnZqrEOTy9ivl/kSfaKSgEbs/haHnYLNb/LhvKpHYj5CoZSRkleoSXcQJT/b1i Hj3FTmoY91N6P3jY+4+beodpQ3mIGeb3jA66GSw3moooM= X-Received: by 2002:a05:6102:3581:b0:609:444:eda3 with SMTP id ada2fe7eead31-616f6ee96a3mr480997137.17.1776396045303; Thu, 16 Apr 2026 20:20:45 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 17 Apr 2026 11:20:08 +0800 X-Gm-Features: AQROBzDg3TjdLP9LW4HYqxYx7cmZW-9IoduU74u7PfMA_YUtF6wPHa0V_S8ifFY Message-ID: Subject: Re: DELETE/UPDATE FOR PORTION OF with rule system is not working To: Paul A Jungwirth Cc: Kirill Reshke , PostgreSQL-development , Peter Eisentraut Content-Type: multipart/mixed; boundary="00000000000042e56d064f9f6f8e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000042e56d064f9f6f8e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 16, 2026 at 6:40=E2=80=AFAM Paul A Jungwirth wrote: > > I only have two small suggestions: > > Please use '[1, 11)' syntax to match the other tests. > > Breaking these long lines would be nice. For example: > > +CREATE RULE fpo_rule1 AS ON INSERT TO fpo_rule > + DO INSTEAD UPDATE fpo_rule FOR PORTION OF f2 FROM 1 TO 4 SET f1 =3D 2; > Please check the attached v2. V1 only has DO INSTEAD rules, adding one DO ALSO rule would make the test coverage more robust. -- jian https://www.enterprisedb.com/ --00000000000042e56d064f9f6f8e Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-fix-DELETE-UPDATE-FOR-PORTION-OF-with-rules.patch" Content-Disposition: attachment; filename="v2-0001-fix-DELETE-UPDATE-FOR-PORTION-OF-with-rules.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo2cbeh60 RnJvbSAyYjliMDRjOTY2OGM5YTYxN2U5YmNlZWJlMjk1NjEzM2MyMzIzZmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMTE6MTM6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gZml4IERFTEVURS9VUERBVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBydWxlcwoKQXV0aG9y OiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJp bGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGF1bCBBIEp1 bmd3aXJ0aCA8cGpAaWxsdW1pbmF0ZWRjb21wdXRpbmcuY29tPgoKRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4SHMxSHMwMEVxc1o0TmJ1QWptWXpNempKeVAxc0FqMTJOZT1j QnNFVm1RT0FAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YyAgICAgICAgICAgICAgICB8ICA0ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9w b3J0aW9uX29mLm91dCB8IDU1ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgICAgICB8IDMzICsrKysrKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBjMGI4ODBl YzIzMy4uN2VkYmQ1YjcyMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yNTgzLDYgKzI1ODMs OCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCXsKIAkJCQlG b3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2Rl OwogCisJCQkJaWYgKFdBTEsoZm9yUG9ydGlvbk9mLT5yYW5nZVZhcikpCisJCQkJCXJldHVybiB0 cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0RnJvbSkpCiAJCQkJCXJldHVy biB0cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0VG8pKQpAQCAtMjU5MSw2 ICsyNTkzLDggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJ CXJldHVybiB0cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByKSkK IAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoZm9yUG9ydGlvbk9mLT5yYW5nZVRhcmdl dExpc3QpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfUGFy dGl0aW9uUHJ1bmVTdGVwT3A6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2Zvcl9wb3J0aW9uX29mLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRp b25fb2Yub3V0CmluZGV4IDMxZjc3MmM3MjNkLi4wYzBhMjA1YzQ0YiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKQEAgLTIwOTcsNCArMjA5Nyw1OSBA QCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIgQlkgaWQsIHZhbGlk X2F0OwogKDQgcm93cykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKy0tIFVQ REFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBSVUxFcworQ1JFQVRFIFRBQkxFIGZwb19y dWxlIChmMSBiaWdpbnQsIGYyIGludDRyYW5nZSk7CitJTlNFUlQgSU5UTyBmcG9fcnVsZSBWQUxV RVMgKDEsICdbMSwgMTEpJyk7CitDUkVBVEUgUlVMRSBmcG9fcnVsZTEgQVMgT04gSU5TRVJUIFRP IGZwb19ydWxlCisgIERPIElOU1RFQUQgVVBEQVRFIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYy IEZST00gMSBUTyA0IFNFVCBmMSA9IDI7CitJTlNFUlQgSU5UTyBmcG9fcnVsZSBWQUxVRVMgKDEs ICdbMSwgMTEpJyk7CitTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOworIGYxIHwg ICBmMiAgIAorLS0tLSstLS0tLS0tLQorICAxIHwgWzQsMTEpCisgIDIgfCBbMSw0KQorKDIgcm93 cykKKworQ1JFQVRFIFJVTEUgZnBvX3J1bGUyIEFTIE9OIElOU0VSVCBUTyBmcG9fcnVsZQorICBE TyBJTlNURUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gMSBU TyA0OworSU5TRVJUIElOVE8gZnBvX3J1bGUgVkFMVUVTICgxLCAnWzEsIDExKScpOworU0VMRUNU ICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKyBmMSB8ICAgZjIgICAKKy0tLS0rLS0tLS0t LS0KKyAgMSB8IFs0LDExKQorKDEgcm93KQorCitDUkVBVEUgUlVMRSBmcG9fcnVsZTMgQVMgT04g REVMRVRFIFRPIGZwb19ydWxlCisgIERPIElOU1RFQUQgVVBEQVRFIGZwb19ydWxlIEZPUiBQT1JU SU9OIE9GIGYyIEZST00gMSBUTyA4IFNFVCBmMSA9IDI7CitERUxFVEUgRlJPTSBmcG9fcnVsZSBG T1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gNTsKK1NFTEVDVCAqIEZST00gZnBvX3J1bGUgT1JE RVIgQlkgZjE7CisgZjEgfCAgIGYyICAgCistLS0tKy0tLS0tLS0tCisgIDEgfCBbOCwxMSkKKyAg MiB8IFs0LDgpCisoMiByb3dzKQorCitEUk9QIFJVTEUgZnBvX3J1bGUzIE9OIGZwb19ydWxlOwor Q1JFQVRFIFJVTEUgZnBvX3J1bGU0IEFTIE9OIFVQREFURSBUTyBmcG9fcnVsZQorICBETyBJTlNU RUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNiBUTyA5Owor VVBEQVRFIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNCBUTyA5IFNFVCBmMSA9IDEy OworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKyBmMSB8ICAgZjIgICAKKy0t LS0rLS0tLS0tLS0KKyAgMSB8IFs5LDExKQorICAyIHwgWzQsNikKKygyIHJvd3MpCisKK0RST1Ag UlVMRSBmcG9fcnVsZTQgT04gZnBvX3J1bGU7CitDUkVBVEUgUlVMRSBmcG9fcnVsZTUgQVMgT04g VVBEQVRFIFRPIGZwb19ydWxlCisgIERPIEFMU08gREVMRVRFIEZST00gZnBvX3J1bGUgRk9SIFBP UlRJT04gT0YgZjIgRlJPTSA0IFRPIDY7CitVUERBVEUgZnBvX3J1bGUgRk9SIFBPUlRJT04gT0Yg ZjIgRlJPTSA5IFRPIDEwIFNFVCBmMSA9IDM7CitTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVS IEJZIGYxOworIGYxIHwgICBmMiAgICAKKy0tLS0rLS0tLS0tLS0tCisgIDEgfCBbMTAsMTEpCisg IDMgfCBbOSwxMCkKKygyIHJvd3MpCisKK0RST1AgVEFCTEUgZnBvX3J1bGU7CiBSRVNFVCBkYXRl c3R5bGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKaW5kZXggZDQwNjJh Y2YxZDEuLmZkNzlhOWI3OGU3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsCkBAIC0xMzY1LDQgKzEzNjUsMzcgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZDsKIAorLS0gVVBEQVRFL0RFTEVURSBGT1IgUE9SVElPTiBPRiB3aXRoIFJVTEVzCitD UkVBVEUgVEFCTEUgZnBvX3J1bGUgKGYxIGJpZ2ludCwgZjIgaW50NHJhbmdlKTsKK0lOU0VSVCBJ TlRPIGZwb19ydWxlIFZBTFVFUyAoMSwgJ1sxLCAxMSknKTsKKworQ1JFQVRFIFJVTEUgZnBvX3J1 bGUxIEFTIE9OIElOU0VSVCBUTyBmcG9fcnVsZQorICBETyBJTlNURUFEIFVQREFURSBmcG9fcnVs ZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gNCBTRVQgZjEgPSAyOworSU5TRVJUIElOVE8g ZnBvX3J1bGUgVkFMVUVTICgxLCAnWzEsIDExKScpOworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBP UkRFUiBCWSBmMTsKKworQ1JFQVRFIFJVTEUgZnBvX3J1bGUyIEFTIE9OIElOU0VSVCBUTyBmcG9f cnVsZQorICBETyBJTlNURUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYy IEZST00gMSBUTyA0OworSU5TRVJUIElOVE8gZnBvX3J1bGUgVkFMVUVTICgxLCAnWzEsIDExKScp OworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKworQ1JFQVRFIFJVTEUgZnBv X3J1bGUzIEFTIE9OIERFTEVURSBUTyBmcG9fcnVsZQorICBETyBJTlNURUFEIFVQREFURSBmcG9f cnVsZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gOCBTRVQgZjEgPSAyOworREVMRVRFIEZS T00gZnBvX3J1bGUgRk9SIFBPUlRJT04gT0YgZjIgRlJPTSAxIFRPIDU7CitTRUxFQ1QgKiBGUk9N IGZwb19ydWxlIE9SREVSIEJZIGYxOworCitEUk9QIFJVTEUgZnBvX3J1bGUzIE9OIGZwb19ydWxl OworQ1JFQVRFIFJVTEUgZnBvX3J1bGU0IEFTIE9OIFVQREFURSBUTyBmcG9fcnVsZQorICBETyBJ TlNURUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNiBUTyA5 OworVVBEQVRFIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNCBUTyA5IFNFVCBmMSA9 IDEyOworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKworRFJPUCBSVUxFIGZw b19ydWxlNCBPTiBmcG9fcnVsZTsKK0NSRUFURSBSVUxFIGZwb19ydWxlNSBBUyBPTiBVUERBVEUg VE8gZnBvX3J1bGUKKyAgRE8gQUxTTyBERUxFVEUgRlJPTSBmcG9fcnVsZSBGT1IgUE9SVElPTiBP RiBmMiBGUk9NIDQgVE8gNjsKK1VQREFURSBmcG9fcnVsZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9N IDkgVE8gMTAgU0VUIGYxID0gMzsKK1NFTEVDVCAqIEZST00gZnBvX3J1bGUgT1JERVIgQlkgZjE7 CisKK0RST1AgVEFCTEUgZnBvX3J1bGU7CisKIFJFU0VUIGRhdGVzdHlsZTsKLS0gCjIuMzQuMQoK --00000000000042e56d064f9f6f8e--