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.94.2) (envelope-from ) id 1u7mYV-0064fm-6Y for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Apr 2025 02:43:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u7mYS-00CImy-MW for pgsql-hackers@arkaria.postgresql.org; Thu, 24 Apr 2025 02:43:13 +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.94.2) (envelope-from ) id 1u7mYS-00CImn-8H for pgsql-hackers@lists.postgresql.org; Thu, 24 Apr 2025 02:43:13 +0000 Received: from mail-vk1-xa29.google.com ([2607:f8b0:4864:20::a29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u7mYP-001hfn-1P for pgsql-hackers@lists.postgresql.org; Thu, 24 Apr 2025 02:43:12 +0000 Received: by mail-vk1-xa29.google.com with SMTP id 71dfb90a1353d-51eb1823a8eso301799e0c.3 for ; Wed, 23 Apr 2025 19:43:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745462588; x=1746067388; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=hG/q2+jL1WDiQDtNCuN77/yDnpIw2awBNk8ymyi5MfU=; b=heHHJrLqDT7mg8UcSIlZ5jTjn/OM+n6ujoZf9rV111QriSFwua7Z172j5DDVPFleHw pqHPbaFrkduP0QMy9AcaX6o5GK/odQeDq3wnoJWQDEFjOydCUv9uiNV/zDyAvQc9PZ56 wxiiZlLbvuUygKEypINDAoT2NcZxwrIo+eK0BZclnkOkVKeN7o7nreWSFluTpBLATeB5 G7Y088xWkQWcz0j7kHjGZf6lpoyA/J+Tq5WFsiKtMVNrlT68532zyIfoMg2P6woSAZ/t VcueW4XcUPX+au1ctK5SGmTMa6NitBx7MihcaEHk5Y33NZcD6cEqkhsVuBega+U/2Y5t B4EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745462588; x=1746067388; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hG/q2+jL1WDiQDtNCuN77/yDnpIw2awBNk8ymyi5MfU=; b=Rr3/m5Ib4uvMqtUk9B+1CHX+E1UUHaiUyb2QkzBqlc5w3ayYsAMxfe9lRgy/t0BqIV RAWwCpuTawA5EYXFoHNArR3+xbcuMdINbY6muZCWV1qAzGtLrFux99k/Yz06nCnK1dng ZAxGg+V8rZ1MVOJczMAuDM0MSWcR6/5EvvkyFTq7TEGlHGdkoAfZPxlZe4ZUuyJx9TWV 1tIEUBzUgpf46rcAeV91vBFQpYDBK+AdPAnkroFdwQF79YnT2fOH4wfJ1csNEfgkto4n kqvRh9RFGVfwXUbP5Yo+Q3Y+A4A41aIZDidBwdeErReM3fXTaFYm2wV2wgfaJVyBmjn/ CzSA== X-Gm-Message-State: AOJu0YxllYVX/ZagpSDXGuJAJzGD82Ohw9sLg18aznA2023aBCQFL1TO 5CNCrEjVXOIJ07yd0p23+MoV/tbJhVfRp7il9UY0uY0w+iQwjdZxgFbOpdE3c0B4m704d85nl3O C36XBABwFmgxz1Ow+jvZRSinwJx3U1DExBJI= X-Gm-Gg: ASbGncsUT1MPbtkEdDZgmKnlJEMdoyQP3FMddc3IJW8qPUKxpwYpdpCeM6LIfohqm2+ MeyHr7uA10vk1u3Zv96qIBFQNx1HXJVjokdT3ZZ/zZ+NGkOQXRHQVncgteUFZAPzoT/rH4rDgR8 aihD0l339X3P3ZSbVQVn9SULlxdV9Xbi/KkUu42LTHd1vfKWKZWML8jCp5bJ+G X-Google-Smtp-Source: AGHT+IGr7NkjnzBn6z3jGBglFRT6ebZ1ubXvH6KeL0/ERQun4r1Ub9whvcBNA1ubVsTR3NM2qTbH+7az6RCN2GF1yzU= X-Received: by 2002:a05:6122:2023:b0:50a:c70b:9453 with SMTP id 71dfb90a1353d-52a783e034dmr714856e0c.10.1745462588040; Wed, 23 Apr 2025 19:43:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Thu, 24 Apr 2025 10:42:31 +0800 X-Gm-Features: ATxdqUHRLUqCG9NmCNfe8DGA8vpMGjicmQ4W2jN5OXN6caDx_kVoc6KWY8876qo Message-ID: Subject: Re: support ALTER COLUMN SET EXPRESSION over virtual generated column with check constraint To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000087c6e606337d2d95" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000087c6e606337d2d95 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 11, 2025 at 12:17=E2=80=AFPM jian he wrote: > hi. > in summary: ATExecSetExpression, RememberAllDependentForRebuilding > will do all the work to change the generation expression, > whether it's virtual or stored. > while working on another patch, I found out this can be further simplified. Thus a new patch is attached. --00000000000087c6e606337d2d95 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-generated-column-set-expression-with-check-constraint.patch" Content-Disposition: attachment; filename="v1-0001-generated-column-set-expression-with-check-constraint.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m9urbtpk0 RnJvbSAxYTVmM2RhNTViNjI1OTExZjZlMzgxZjExZmU1NjliYmI1Y2RlODg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjQgQXByIDIwMjUgMTA6NDE6MjMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gZ2VuZXJhdGVkIGNvbHVtbiBzZXQgZXhwcmVzc2lvbiB3aXRoIGNoZWNrIGNvbnN0cmFp bnQKCmN1cnJlbnRseSwgaWYgd2UgaGF2ZSBjaGVjayBjb25zdHJhaW50cyBvdmVyIHZpcnR1YWwg Z2VuZXJhdGVkIGNvbHVtbgp0aGVuIHdlIGNhbiBub3QgY2hhbmdlIHRoZSBnZW5lcmF0aW9uIGV4 cHJlc3Npb24uCgpmb3IgZXhhbXBsZToKQ1JFQVRFIFRBQkxFIGd0ZXN0MjAgKGEgaW50LCBiIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTIChhICogMikgVklSVFVBTCBDSEVDSyAoYiA8IDUwKSk7CklO U0VSVCBJTlRPIGd0ZXN0MjAgKGEpIFZBTFVFUyAoMTApOwpBTFRFUiBUQUJMRSBndGVzdDIwIEFM VEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogMyk7IC0tZXJyb3IKCnRoaXMgcGF0 Y2ggaXMgdG8gc3VwcG9ydCBpdC4KbWFpbiBnb3RjaGEgaXMgaW4gQVRFeGVjU2V0RXhwcmVzc2lv biwKUmVtZW1iZXJBbGxEZXBlbmRlbnRGb3JSZWJ1aWxkaW5nIHdpbGwgZG8gYWxsIHRoZSB3b3Jr LgoKYWxzbyBhZGQgYSB0ZXN0IGZvciBBTFRFUiBUQUJMRSBTRVQgRVhQUkVTU0lPTiBmb3Igdmly dHVhbCBnZW5lcmF0ZWQgY29sdW1uIHdpbGwgbm90CmRvIHRhYmxlIHJld3JpdGUuCgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhIM1ZFVHI3b3JGNXJXMjlHbkRrM24xd1di T0UzV2RrSFlkM2lQR3JROUVfQUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8IDMxICsrKysrKy0tLS0tLS0tLS0tLS0KIC4u Li9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCAgICB8IDMxICsrKysrKysr KysrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAg ICB8IDE5ICsrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCAz MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDI3MDVjZjExMzMw Li5kYzRlYjE2MGY2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTg2MDEsMTggKzg2 MDEsNiBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gXCIlc1wiIGlzIG5vdCBhIGdlbmVyYXRlZCBjb2x1bW4iLAogCQkJCQkJY29s TmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAotCS8qCi0JICogVE9ETzog VGhpcyBjb3VsZCBiZSBkb25lLCBqdXN0IG5lZWQgdG8gcmVjaGVjayBhbnkgY29uc3RyYWludHMK LQkgKiBhZnRlcndhcmRzLgotCSAqLwotCWlmIChhdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX0dF TkVSQVRFRF9WSVJUVUFMICYmCi0JCXJlbC0+cmRfYXR0LT5jb25zdHIgJiYgcmVsLT5yZF9hdHQt PmNvbnN0ci0+bnVtX2NoZWNrID4gMCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiQUxURVIgVEFCTEUg LyBTRVQgRVhQUkVTU0lPTiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aXJ0dWFsIGdlbmVyYXRlZCBj b2x1bW5zIG9uIHRhYmxlcyB3aXRoIGNoZWNrIGNvbnN0cmFpbnRzIiksCi0JCQkJIGVycmRldGFp bCgiQ29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgYSB2aXJ0dWFsIGdlbmVyYXRl ZCBjb2x1bW4uIiwKLQkJCQkJCSAgIGNvbE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpKSk7Ci0KIAlpZiAoYXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVB TCAmJiBhdHRUdXAtPmF0dG5vdG51bGwpCiAJCXRhYi0+dmVyaWZ5X25ld19ub3RudWxsID0gdHJ1 ZTsKIApAQCAtODY0MiwxOCArODYzMCwxNyBAQCBBVEV4ZWNTZXRFeHByZXNzaW9uKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkgKiB0 aGlzIHJlbmRlcnMgdGhlbSBwb2ludGxlc3MuCiAJCSAqLwogCQlSZWxhdGlvbkNsZWFyTWlzc2lu ZyhyZWwpOwotCi0JCS8qIG1ha2Ugc3VyZSB3ZSBkb24ndCBjb25mbGljdCB3aXRoIGxhdGVyIGF0 dHJpYnV0ZSBtb2RpZmljYXRpb25zICovCi0JCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7Ci0K LQkJLyoKLQkJICogRmluZCBldmVyeXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGUgY29sdW1uIChj b25zdHJhaW50cywgaW5kZXhlcywKLQkJICogZXRjKSwgYW5kIHJlY29yZCBlbm91Z2ggaW5mb3Jt YXRpb24gdG8gbGV0IHVzIHJlY3JlYXRlIHRoZSBvYmplY3RzCi0JCSAqIGFmdGVyIHJld3JpdGUu Ci0JCSAqLwotCQlSZW1lbWJlckFsbERlcGVuZGVudEZvclJlYnVpbGRpbmcodGFiLCBBVF9TZXRF eHByZXNzaW9uLCByZWwsIGF0dG51bSwgY29sTmFtZSk7CiAJfQogCisJLyogbWFrZSBzdXJlIHdl IGRvbid0IGNvbmZsaWN0IHdpdGggbGF0ZXIgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMgKi8KKwlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJLyoKKwkgKiBGaW5kIGV2ZXJ5dGhpbmcgdGhh dCBkZXBlbmRzIG9uIHRoZSBjb2x1bW4gKGNvbnN0cmFpbnRzLCBpbmRleGVzLAorCSAqIGV0Yyks IGFuZCByZWNvcmQgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGxldCB1cyByZWNyZWF0ZSB0aGUgb2Jq ZWN0cy4KKwkqLworCVJlbWVtYmVyQWxsRGVwZW5kZW50Rm9yUmVidWlsZGluZyh0YWIsIEFUX1Nl dEV4cHJlc3Npb24sIHJlbCwgYXR0bnVtLCBjb2xOYW1lKTsKKwogCS8qCiAJICogRHJvcCB0aGUg ZGVwZW5kZW5jeSByZWNvcmRzIG9mIHRoZSBHRU5FUkFURUQgZXhwcmVzc2lvbiwgaW4gcGFydGlj dWxhcgogCSAqIGl0cyBJTlRFUk5BTCBkZXBlbmRlbmN5IG9uIHRoZSBjb2x1bW4sIHdoaWNoIHdv dWxkIG90aGVyd2lzZSBjYXVzZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVy YXRlZF92aXJ0dWFsLm91dAppbmRleCA2MzAwZTdjMWQ5Ni4uYWU0Y2Y1YWJmNzYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CkBAIC02MzYs MTIgKzYzNiwyMiBAQCBJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMgKDEwKTsgIC0tIG9r CiBJTlNFUlQgSU5UTyBndGVzdDIwIChhKSBWQUxVRVMgKDMwKTsgIC0tIHZpb2xhdGVzIGNvbnN0 cmFpbnQKIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gImd0ZXN0MjAiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBfYl9jaGVjayIKIERFVEFJTDogIEZhaWxpbmcgcm93IGNv bnRhaW5zICgzMCwgdmlydHVhbCkuCi1BTFRFUiBUQUJMRSBndGVzdDIwIEFMVEVSIENPTFVNTiBi IFNFVCBFWFBSRVNTSU9OIEFTIChhICogMTAwKTsgIC0tIHZpb2xhdGVzIGNvbnN0cmFpbnQgKGN1 cnJlbnRseSBub3Qgc3VwcG9ydGVkKQotRVJST1I6ICBBTFRFUiBUQUJMRSAvIFNFVCBFWFBSRVNT SU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgb24gdGFi bGVzIHdpdGggY2hlY2sgY29uc3RyYWludHMKLURFVEFJTDogIENvbHVtbiAiYiIgb2YgcmVsYXRp b24gImd0ZXN0MjAiIGlzIGEgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uLgotQUxURVIgVEFCTEUg Z3Rlc3QyMCBBTFRFUiBDT0xVTU4gYiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDMpOyAgLS0gb2sg KGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkKQotRVJST1I6ICBBTFRFUiBUQUJMRSAvIFNFVCBFWFBS RVNTSU9OIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgZ2VuZXJhdGVkIGNvbHVtbnMgb24g dGFibGVzIHdpdGggY2hlY2sgY29uc3RyYWludHMKLURFVEFJTDogIENvbHVtbiAiYiIgb2YgcmVs YXRpb24gImd0ZXN0MjAiIGlzIGEgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1uLgorQUxURVIgVEFC TEUgZ3Rlc3QyMCBBTFRFUiBDT0xVTU4gYiBTRVQgRVhQUkVTU0lPTiBBUyAoYSAqIDEwMCk7ICAt LSB2aW9sYXRlcyBjb25zdHJhaW50CitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgImd0ZXN0MjBf Yl9jaGVjayIgb2YgcmVsYXRpb24gImd0ZXN0MjAiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitB TFRFUiBUQUJMRSBndGVzdDIwIEFMVEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICog Myk7ICAtLSBvaworLS10ZXN0IG5vIHRhYmxlIHJld3JpdGUgaGFwcGVuCitBTFRFUiBUQUJMRSBn dGVzdDIwIEFMVEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogNCksIEFERCBDT0xV TU4gQyBpbnQgZGVmYXVsdCAxMTsKK1NFTEVDVCAgcGEuYXR0bnVtLHBhLmF0dG5hbWUsYXR0bWlz c2luZ3ZhbAorRlJPTSAgICBwZ19hdHRyaWJ1dGUgcGEKK0pPSU4gICAgcGdfYXR0cmRlZiBwYXR0 IE9OIHBhLmF0dHJlbGlkID0gcGF0dC5hZHJlbGlkIEFORCBwYS5hdHRudW0gPSBwYXR0LmFkbnVt CitXSEVSRSAgIHBhLmF0dHJlbGlkID0gJ2d0ZXN0MjAnOjpyZWdjbGFzcworT1JERVIgQlkgcGEu YXR0bnVtOworIGF0dG51bSB8IGF0dG5hbWUgfCBhdHRtaXNzaW5ndmFsIAorLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgMiB8IGIgICAgICAgfCAKKyAgICAgIDMgfCBj ICAgICAgIHwgezExfQorKDIgcm93cykKKwogQ1JFQVRFIFRBQkxFIGd0ZXN0MjBhIChhIGludCBQ UklNQVJZIEtFWSwgYiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAoYSAqIDIpIFZJUlRVQUwpOwog SU5TRVJUIElOVE8gZ3Rlc3QyMGEgKGEpIFZBTFVFUyAoMTApOwogSU5TRVJUIElOVE8gZ3Rlc3Qy MGEgKGEpIFZBTFVFUyAoMzApOwpAQCAtOTczLDYgKzk4MywxNSBAQCBTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gZ3Rlc3RfcGFyZW50IE9SREVSIEJZIDEsIDIsIDM7CiAgZ3Rlc3Rf Y2hpbGQzIHwgMDktMTMtMjAxNiB8ICAxIHwgIDQKICgzIHJvd3MpCiAKKy0tY2hlY2sgY29uc3Ry YWludCB3YXMgdmFsaWRhdGVkIGJhc2VkIG9uIGVhY2ggcGFydGl0aW9ucydzIGdlbmVyYXRpb24g ZXhwcmVzc2lvbgorQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50IEFERCBDT05TVFJBSU5UIGNjMSBD SEVDSyAoZjMgPCAxOSk7IC0tZXJyb3IKK0VSUk9SOiAgY2hlY2sgY29uc3RyYWludCAiY2MxIiBv ZiByZWxhdGlvbiAiZ3Rlc3RfY2hpbGQiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitBTFRFUiBU QUJMRSBndGVzdF9wYXJlbnQgQUREIENPTlNUUkFJTlQgY2MxIENIRUNLIChmMyA8IDY2KTsgLS1l cnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJjYzEiIG9mIHJlbGF0aW9uICJndGVzdF9j aGlsZDIiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitBTFRFUiBUQUJMRSBndGVzdF9wYXJlbnQg QUREIENPTlNUUkFJTlQgY2MxIENIRUNLIChmMyA8PiAzMyk7IC0tZXJyb3IKK0VSUk9SOiAgY2hl Y2sgY29uc3RyYWludCAiY2MxIiBvZiByZWxhdGlvbiAiZ3Rlc3RfY2hpbGQzIiBpcyB2aW9sYXRl ZCBieSBzb21lIHJvdworQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50IEFERCBDT05TVFJBSU5UIGNj IENIRUNLIChmMyA8IDY3KTsgLS1vaworQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50IERST1AgQ09O U1RSQUlOVCBjYzsKIC0tIGFsdGVyIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBvZiBwYXJlbnQgYW5k IGFsbCBpdHMgY2hpbGRyZW4gYWx0b2dldGhlcgogQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50IEFM VEVSIENPTFVNTiBmMyBTRVQgRVhQUkVTU0lPTiBBUyAoZjIgKiAyKTsKIFxkIGd0ZXN0X3BhcmVu dApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCmluZGV4IGI0ZWVk ZWVlMmZiLi5iMmE4ZmJjMGQ3MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2Vu ZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92 aXJ0dWFsLnNxbApAQCAtMzEyLDggKzMxMiwxNSBAQCBDUkVBVEUgVEFCTEUgZ3Rlc3QyMCAoYSBp bnQgUFJJTUFSWSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBWSVJUVQog SU5TRVJUIElOVE8gZ3Rlc3QyMCAoYSkgVkFMVUVTICgxMCk7ICAtLSBvawogSU5TRVJUIElOVE8g Z3Rlc3QyMCAoYSkgVkFMVUVTICgzMCk7ICAtLSB2aW9sYXRlcyBjb25zdHJhaW50CiAKLUFMVEVS IFRBQkxFIGd0ZXN0MjAgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEgKiAxMDAp OyAgLS0gdmlvbGF0ZXMgY29uc3RyYWludCAoY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQpCi1BTFRF UiBUQUJMRSBndGVzdDIwIEFMVEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogMyk7 ICAtLSBvayAoY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQpCitBTFRFUiBUQUJMRSBndGVzdDIwIEFM VEVSIENPTFVNTiBiIFNFVCBFWFBSRVNTSU9OIEFTIChhICogMTAwKTsgIC0tIHZpb2xhdGVzIGNv bnN0cmFpbnQKK0FMVEVSIFRBQkxFIGd0ZXN0MjAgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJ T04gQVMgKGEgKiAzKTsgIC0tIG9rCistLXRlc3Qgbm8gdGFibGUgcmV3cml0ZSBoYXBwZW4KK0FM VEVSIFRBQkxFIGd0ZXN0MjAgQUxURVIgQ09MVU1OIGIgU0VUIEVYUFJFU1NJT04gQVMgKGEgKiA0 KSwgQUREIENPTFVNTiBDIGludCBkZWZhdWx0IDExOworU0VMRUNUICBwYS5hdHRudW0scGEuYXR0 bmFtZSxhdHRtaXNzaW5ndmFsCitGUk9NICAgIHBnX2F0dHJpYnV0ZSBwYQorSk9JTiAgICBwZ19h dHRyZGVmIHBhdHQgT04gcGEuYXR0cmVsaWQgPSBwYXR0LmFkcmVsaWQgQU5EIHBhLmF0dG51bSA9 IHBhdHQuYWRudW0KK1dIRVJFICAgcGEuYXR0cmVsaWQgPSAnZ3Rlc3QyMCc6OnJlZ2NsYXNzCitP UkRFUiBCWSBwYS5hdHRudW07CiAKIENSRUFURSBUQUJMRSBndGVzdDIwYSAoYSBpbnQgUFJJTUFS WSBLRVksIGIgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGEgKiAyKSBWSVJUVUFMKTsKIElOU0VS VCBJTlRPIGd0ZXN0MjBhIChhKSBWQUxVRVMgKDEwKTsKQEAgLTUyMyw2ICs1MzAsMTQgQEAgQUxU RVIgVEFCTEUgZ3Rlc3RfY2hpbGQgQUxURVIgQ09MVU1OIGYzIFNFVCBFWFBSRVNTSU9OIEFTIChm MiAqIDEwKTsKIFxkIGd0ZXN0X2NoaWxkMwogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIGd0ZXN0X3BhcmVudCBPUkRFUiBCWSAxLCAyLCAzOwogCistLWNoZWNrIGNvbnN0cmFpbnQg d2FzIHZhbGlkYXRlZCBiYXNlZCBvbiBlYWNoIHBhcnRpdGlvbnMncyBnZW5lcmF0aW9uIGV4cHJl c3Npb24KK0FMVEVSIFRBQkxFIGd0ZXN0X3BhcmVudCBBREQgQ09OU1RSQUlOVCBjYzEgQ0hFQ0sg KGYzIDwgMTkpOyAtLWVycm9yCitBTFRFUiBUQUJMRSBndGVzdF9wYXJlbnQgQUREIENPTlNUUkFJ TlQgY2MxIENIRUNLIChmMyA8IDY2KTsgLS1lcnJvcgorQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50 IEFERCBDT05TVFJBSU5UIGNjMSBDSEVDSyAoZjMgPD4gMzMpOyAtLWVycm9yCisKK0FMVEVSIFRB QkxFIGd0ZXN0X3BhcmVudCBBREQgQ09OU1RSQUlOVCBjYyBDSEVDSyAoZjMgPCA2Nyk7IC0tb2sK K0FMVEVSIFRBQkxFIGd0ZXN0X3BhcmVudCBEUk9QIENPTlNUUkFJTlQgY2M7CisKIC0tIGFsdGVy IGdlbmVyYXRpb24gZXhwcmVzc2lvbiBvZiBwYXJlbnQgYW5kIGFsbCBpdHMgY2hpbGRyZW4gYWx0 b2dldGhlcgogQUxURVIgVEFCTEUgZ3Rlc3RfcGFyZW50IEFMVEVSIENPTFVNTiBmMyBTRVQgRVhQ UkVTU0lPTiBBUyAoZjIgKiAyKTsKIFxkIGd0ZXN0X3BhcmVudAotLSAKMi4zNC4xCgo= --00000000000087c6e606337d2d95--