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 1rArr9-008W6S-9f for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Dec 2023 13:22:27 +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 1rArr6-009TLJ-Dn for pgsql-hackers@arkaria.postgresql.org; Wed, 06 Dec 2023 13:22:24 +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.94.2) (envelope-from ) id 1rArr5-009TLA-S4 for pgsql-hackers@lists.postgresql.org; Wed, 06 Dec 2023 13:22:24 +0000 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rArr2-0095F5-EO for pgsql-hackers@lists.postgresql.org; Wed, 06 Dec 2023 13:22:22 +0000 Received: by mail-ot1-x32b.google.com with SMTP id 46e09a7af769-6d9a1a2fb22so2069737a34.0 for ; Wed, 06 Dec 2023 05:22:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701868939; x=1702473739; 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=gYpUN/iMxY7rxiqTzXA1vUGOMOLyyv928/d+wnihxv8=; b=G74qP9EXNs29EgIGB1Rwiju/G4cWy8XLpu3SY8NZTwScsuj/UbqDBjBPJ+q0y4ymV+ OVc6tn4G//RbBD5wbuyZB6dz4I6jsA7hK4Vhc1DQq+J9UbdJi+M9c1aP8Y1ERNFSiTup dEpbIXX2MCsQMrJymtyRifrRcK4rKjgnsjigPXEeSEAiPPDLwnqchh6bhenZpT4i3Oud riv5YIR83AKlGvwaz3ote7B9oUakmc0O7+aEZEANCH8zrblsaCR91rlfoWSl49vszPR6 nTDUqCdAqZ2Vifge8wWs7oWSHQ+hA49b8XLU/Abr4Mum89yjfer0M7urk4BOw9KsKfB2 SMNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701868939; x=1702473739; h=cc: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=gYpUN/iMxY7rxiqTzXA1vUGOMOLyyv928/d+wnihxv8=; b=AgMJz1HqenIBJP3GMfLPdNmyb3Ir1rtRlwwTxaeTd3s0Yt9+yAsyKjEKp/CjRYoSez t/wLCGLlmOnv7oxtn3vSiEaDiFK743RbYM5OmesddyswEd0Z5PNvhEYzz4ZdsyCWidWU gC3drdIycRgK6ubgH/6iTEigii+KxzwznfmyoQLKLHqYct7dY8brIpsHcUVWBmOvL48G ppS7YeY2n0YAqzwvbT1qkjb53ZsVlI4IijfxiybT+Ju531u46zkPsWwpvBoSgwrcSqVb UXmJkCe9uJbSgu2g7062dJkJMGPs+6a3o97JM8VAv0/rpPf7hupC1Tj91ndaewn1nioq Ji+A== X-Gm-Message-State: AOJu0Yz0ysB4orV1xiC7GajBdz8S9kPI6ZMzHqots+86UDFhkiA0zBKC MK7lX2ha73YQ3IGs4VjcrB3yqnqq0eFCTnG7MD2ED6YrpZoQQcLv X-Google-Smtp-Source: AGHT+IECwyvRH7sVEaGbz2yGKGVt3USFo0zVp1lx4BYCWDBxMdR9FqDTE1ECkhZEd8GVMQiGchRudeLsp0Zxv/ASDL8= X-Received: by 2002:a05:6830:1b70:b0:6d8:77ba:1226 with SMTP id d16-20020a0568301b7000b006d877ba1226mr824038ote.63.1701868939398; Wed, 06 Dec 2023 05:22:19 -0800 (PST) MIME-Version: 1.0 References: <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> In-Reply-To: From: jian he Date: Wed, 6 Dec 2023 21:22:07 +0800 Message-ID: Subject: Re: SQL:2011 application time To: Paul Jungwirth Cc: Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000096f747060bd73dfa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000096f747060bd73dfa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Dec 3, 2023 at 2:11=E2=80=AFAM Paul Jungwirth wrote: > > v19 patch series attached, rebased to a11c9c42ea. > this TODO: * TODO: It sounds like FOR PORTION OF might need to do something here too? based on comments on ExprContext. I refactor a bit, and solved this TODO. tring to the following TODO: // TODO: Need to save context->mtstate->mt_transition_capture? (See comment on ExecInsert) but failed. I also attached the trial, and also added the related test. You can also use the test to check portion update with insert trigger with "referencing old table as old_table new table as new_table" situation. --00000000000096f747060bd73dfa Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-set eval targetrange in per-output-tuple context.patch" Content-Disposition: attachment; filename="v1-0001-set eval targetrange in per-output-tuple context.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lptsawcz0 RnJvbSA4Yzk3ZGI5MzkxOTAwZDc2NmRiOTk4MzRjMjNjNWU0YjYwY2FkZjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwZ2FkZGljdCA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29t PgpEYXRlOiBUdWUsIDUgRGVjIDIwMjMgMTc6NTk6NDMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gc2V0IGV2YWwgdGFyZ2V0cmFuZ2UgaW4gcGVyLW91dHB1dC10dXBsZSBleHByY29udGV4 dAoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyB8IDUgKy0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDg4ZWRhMDEyLi5mZTU3ZTU5MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTM3ODAsNyArMzc4MCw2IEBA IEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJICogUmVzZXQgcGVyLXR1cGxl IG1lbW9yeSBjb250ZXh0IHVzZWQgZm9yIHByb2Nlc3Npbmcgb24gY29uZmxpY3QgYW5kCiAJCSAq IHJldHVybmluZyBjbGF1c2VzLCB0byBmcmVlIGFueSBleHByZXNzaW9uIGV2YWx1YXRpb24gc3Rv cmFnZQogCQkgKiBhbGxvY2F0ZWQgaW4gdGhlIHByZXZpb3VzIGN5Y2xlLgotCQkgKiBUT0RPOiBJ dCBzb3VuZHMgbGlrZSBGT1IgUE9SVElPTiBPRiBtaWdodCBuZWVkIHRvIGRvIHNvbWV0aGluZyBo ZXJlIHRvbz8KIAkJICovCiAJCWlmIChwc3RhdGUtPnBzX0V4cHJDb250ZXh0KQogCQkJUmVzZXRF eHByQ29udGV4dChwc3RhdGUtPnBzX0V4cHJDb250ZXh0KTsKQEAgLTQ0NzIsOSArNDQ3MSw3IEBA IEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQlmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5m b3JQb3J0aW9uT2Y7CiAKIAkJLyogRXZhbCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0ICovCi0J CWlmIChtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dCA9PSBOVUxMKQotCQkJRXhlY0Fzc2lnbkV4 cHJDb250ZXh0KGVzdGF0ZSwgJm10c3RhdGUtPnBzKTsKLQkJZWNvbnRleHQgPSBtdHN0YXRlLT5w cy5wc19FeHByQ29udGV4dDsKKwkJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVz dGF0ZSk7CiAKIAkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChFeHByICopIGZvclBvcnRp b25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CiAJCXRhcmdldFJhbmdlID0gRXhlY0V2YWxFeHBy KGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051bGwpOwotLSAKMi4zNC4xCgo= --00000000000096f747060bd73dfa Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-trying-to-save-mt_transition_capture-while-ExecIn.patch" Content-Disposition: attachment; filename="v1-0001-trying-to-save-mt_transition_capture-while-ExecIn.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lptsbd9d1 RnJvbSBjZGEyZjgzMjRlZjkyMGM4MDcwMDhlMjc2M2Y5N2M2NTAzYzE3YTk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBwZ2FkZGljdCA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29t PgpEYXRlOiBXZWQsIDYgRGVjIDIwMjMgMjA6NTg6MDggKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gdHJ5aW5nIHRvIHNhdmUgbXRfdHJhbnNpdGlvbl9jYXB0dXJlIHdoaWxlIEV4ZWNJbnNl cnQKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgfCAy MSArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgfCA4 MCArKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25f b2Yuc3FsICAgICAgfCA3MiArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTcx IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYwppbmRleCBmZTU3ZTU5Mi4uYzlkMTRkYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xNjcsNyArMTY3LDggQEAgc3RhdGljIGJvb2wgRXhlY01l cmdlTWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiBzdGF0aWMgdm9pZCBFeGVj TWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJYm9vbCBjYW5TZXRUYWcpOwotCitz dGF0aWMgdm9pZAorRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShNb2RpZnlUYWJsZVN0 YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CgogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0 dXBsZXMgdG8gYmUgcHJvZHVjZWQgYnkgSU5TRVJUIG1hdGNoIHRoZQpAQCAtMTI1OSw3ICsxMjYw LDcgQEAgRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsCiAJVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUyID0gZnBvU3RhdGUtPmZwX0xlZnRv dmVyMjsKIAlIZWFwVHVwbGUgb2xkdHVwbGUgPSBOVUxMOwogCWJvb2wgc2hvdWxkRnJlZSA9IGZh bHNlOwotCisJaW50CQlpOwkvKiBvcmlnaW5hbCBjbWQgdHlwZSAqLwogCS8qCiAJICogR2V0IHRo ZSByYW5nZSBvZiB0aGUgb2xkIHByZS1VUERBVEUvREVMRVRFIHR1cGxlLAogCSAqIHNvIHdlIGNh biBpbnRlcnNlY3QgaXQgd2l0aCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0CkBAIC0xMzEyLDYg KzEzMTMsNyBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwKIAkgKiBUT0RPOiBSZWFsbHk/IFdoYXQgaWYgeW91IHVwZGF0ZSB0aGUgcGFydGl0 aW9uIGtleT8KIAkgKi8KCisJaQk9IGNvbnRleHQtPm10c3RhdGUtPm9wZXJhdGlvbjsKIAlpZiAo IVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJhbmdlVHlwZTEpKQogCXsKIAkJb2xkdHVwbGUgPSBFeGVj RmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKQEAg LTEzMjAsNiArMTMyMiwxMCBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxl Q29udGV4dCAqY29udGV4dCwKIAkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1 cGxlMSwgZm9yUG9ydGlvbk9mLCB0eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUxKTsKIAkJRXhl Y01hdGVyaWFsaXplU2xvdChsZWZ0b3ZlclR1cGxlMSk7CgorCQljb250ZXh0LT5tdHN0YXRlLT5v cGVyYXRpb24gPSBDTURfSU5TRVJUOworCQljb250ZXh0LT5tdHN0YXRlLT5tdF90cmFuc2l0aW9u X2NhcHR1cmUgPSBOVUxMOworCQlFeGVjU2V0dXBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKGNvbnRl eHQtPm10c3RhdGUsIGVzdGF0ZSk7CisKIAkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQt Pm10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNl cnQpCiAJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJUdXBsZTEs IG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CiAJfQpAQCAtMTM0MCwxMCArMTM0NiwyMSBA QCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwK IAkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwgZm9yUG9ydGlvbk9m LCB0eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUyKTsKIAkJRXhlY01hdGVyaWFsaXplU2xvdChs ZWZ0b3ZlclR1cGxlMik7CgorCQljb250ZXh0LT5tdHN0YXRlLT5vcGVyYXRpb24gPSBDTURfSU5T RVJUOworCQljb250ZXh0LT5tdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmUgPSBOVUxMOwor CQlFeGVjU2V0dXBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKGNvbnRleHQtPm10c3RhdGUsIGVzdGF0 ZSk7CisKIAkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQtPm10c3RhdGUtPm10X3RyYW5z aXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNlcnQpCiAJCUV4ZWNJbnNlcnQo Y29udGV4dCwgcmVzdWx0UmVsSW5mbywgbGVmdG92ZXJUdXBsZTIsIG5vZGUtPmNhblNldFRhZywg TlVMTCwgTlVMTCk7CiAJfQoKKwlpZiAoIVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJhbmdlVHlwZTIp IHx8ICFSYW5nZUlzRW1wdHkobGVmdG92ZXJSYW5nZVR5cGUxKSkKKwl7CisJCS8qIGlmIGFueSBv ZiB0aGUgYWJvdmUgYnJhbmNoIGV4ZWN1dGVkIHRoZW4gKi8KKwkJY29udGV4dC0+bXRzdGF0ZS0+ b3BlcmF0aW9uID0gaTsKKwkJY29udGV4dC0+bXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJl ID0gTlVMTDsKKwkJRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShjb250ZXh0LT5tdHN0 YXRlLCBlc3RhdGUpOworCX0KIAlpZiAoc2hvdWxkRnJlZSkKIAkJaGVhcF9mcmVldHVwbGUob2xk dHVwbGUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9y dGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91 dAppbmRleCA2NGY3YmM3ZS4uMDQyMDJhYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC00NDEsMyArNDQxLDgzIEBAIFNFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwoKIERST1AgVEFCTEUg Zm9yX3BvcnRpb25fb2ZfdGVzdDI7CiBEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CitEUk9QIFRBQkxF IElGIEVYSVNUUyBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9u X29mX3Rlc3QgKGlkIGludDRyYW5nZSx2YWxpZF9hdCBkYXRlcmFuZ2UsIG5hbWUgdGV4dCk7CitJ TlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJ1syMDE4LTAx LTAxLDIwMjAtMDEtMDEpJywgJ29uZScpOworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gZHVt cF90cmlnZ2VyKCkgcmV0dXJucyB0cmlnZ2VyIGxhbmd1YWdlIHBscGdzcWwgYXMKKyQkCisJQkVH SU4KKyAgICByYWlzZSBub3RpY2UgJ1RHX09QID0gJScsIFRHX09QOworCUlGIFRHX09QID0gJ0lO U0VSVCcgdGhlbgorCQlyYWlzZSBub3RpY2UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCAlLCBuZXcg dGFibGUgPSAlJywKKwkJCQkJVEdfTkFNRSwgVEdfTEVWRUwsCisJCQkJCShzZWxlY3Qgc3RyaW5n X2FnZyhuZXdfdGFibGU6OnRleHQsICcsICcgb3JkZXIgYnkgaWQpIGZyb20gbmV3X3RhYmxlKTsK KyAgICBFTFNJRiBUR19PUCA9ICdVUERBVEUnIHRoZW4KKwkJcmFpc2Ugbm90aWNlICd0cmlnZ2Vy ID0gJSwgVEdfTEVWRUwgJSwgb2xkIHRhYmxlID0gJSwgbmV3IHRhYmxlID0gJScsCisJCQkJCVRH X05BTUUsIFRHX0xFVkVMLAorCQkJCQkoc2VsZWN0IHN0cmluZ19hZ2cob2xkX3RhYmxlOjp0ZXh0 LCAnLCAnIG9yZGVyIGJ5IGlkKSBmcm9tIG9sZF90YWJsZSksCisJCQkJCShzZWxlY3Qgc3RyaW5n X2FnZyhuZXdfdGFibGU6OnRleHQsICcsICcgb3JkZXIgYnkgaWQpIGZyb20gbmV3X3RhYmxlKTsK KyAgICBFTFNJRiBUR19PUCA9ICdERUxFVEUnIHRoZW4KKwkJCXJhaXNlIG5vdGljZSAndHJpZ2dl ciA9ICUsVEdfTEVWRUwgJSwgb2xkIHRhYmxlID0gJScsCisJCQkJCVRHX05BTUUsIFRHX0xFVkVM LAorCQkJCQkoc2VsZWN0IHN0cmluZ19hZ2cob2xkX3RhYmxlOjp0ZXh0LCAnLCAnIG9yZGVyIGJ5 IGlkKSBmcm9tIG9sZF90YWJsZSk7CisJRU5EIElGOworICAgIFJFVFVSTiBOVUxMOworCUVORDsK KyQkOworY3JlYXRlIG9yIHJlcGxhY2UgdHJpZ2dlciBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2Vy dF90cmlnCithZnRlciBpbnNlcnQgb24gZm9yX3BvcnRpb25fb2ZfdGVzdAorcmVmZXJlbmNpbmcg bmV3IHRhYmxlIGFzIG5ld190YWJsZQorZm9yIGVhY2ggcm93IGV4ZWN1dGUgcHJvY2VkdXJlIGR1 bXBfdHJpZ2dlcigpOworY3JlYXRlIG9yIHJlcGxhY2UgdHJpZ2dlciBmb3JfcG9ydGlvbl9vZl90 ZXN0X2luc2VydF90cmlnX3N0bXQKK2FmdGVyIGluc2VydCBvbiBmb3JfcG9ydGlvbl9vZl90ZXN0 CityZWZlcmVuY2luZyBuZXcgdGFibGUgYXMgbmV3X3RhYmxlCitmb3IgZWFjaCBzdGF0ZW1lbnQg ZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF90cmlnZ2VyKCk7CitjcmVhdGUgb3IgcmVwbGFjZSB0cmln Z2VyIGZvcl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcKK2FmdGVyIHVwZGF0ZSBvbiBmb3Jf cG9ydGlvbl9vZl90ZXN0CityZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3RhYmxlIG5ldyB0 YWJsZSBhcyBuZXdfdGFibGUKK2ZvciBlYWNoIHJvdyBleGVjdXRlIHByb2NlZHVyZSBkdW1wX3Ry aWdnZXIoKTsKK2NyZWF0ZSBvciByZXBsYWNlIHRyaWdnZXIgZm9yX3BvcnRpb25fb2ZfdGVzdF91 cGRhdGVfdHJpZ19zdG10CithZnRlciB1cGRhdGUgb24gZm9yX3BvcnRpb25fb2ZfdGVzdAorcmVm ZXJlbmNpbmcgb2xkIHRhYmxlIGFzIG9sZF90YWJsZSBuZXcgdGFibGUgYXMgbmV3X3RhYmxlCitm b3IgZWFjaCBzdGF0ZW1lbnQgZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF90cmlnZ2VyKCk7CitjcmVh dGUgb3IgcmVwbGFjZSB0cmlnZ2VyIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsX3RyaWcKK2FmdGVy IGRlbGV0ZSBvbiBmb3JfcG9ydGlvbl9vZl90ZXN0CityZWZlcmVuY2luZyBvbGQgdGFibGUgYXMg b2xkX3RhYmxlCitmb3IgZWFjaCByb3cgZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF90cmlnZ2VyKCk7 CitjcmVhdGUgb3IgcmVwbGFjZSB0cmlnZ2VyIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVsX3RyaWdf c3RtdAorYWZ0ZXIgZGVsZXRlIG9uIGZvcl9wb3J0aW9uX29mX3Rlc3QKK3JlZmVyZW5jaW5nIG9s ZCB0YWJsZSBhcyBvbGRfdGFibGUKK2ZvciBlYWNoIHN0YXRlbWVudCBleGVjdXRlIHByb2NlZHVy ZSBkdW1wX3RyaWdnZXIoKTsKK2JlZ2luOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQKKwlGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScg U0VUIG5hbWUgPSAnMjAxOC0wMS0xNV90b18yMDE5LTAxLTAxJzsKK05PVElDRTogIFRHX09QID0g SU5TRVJUCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJp ZywgVEdfTEVWRUwgUk9XLCBuZXcgdGFibGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMTUt MjAxOCkiLG9uZSksICgiWzEsMikiLCJbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSIsb25lKQorTk9U SUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90 ZXN0X2luc2VydF90cmlnLCBUR19MRVZFTCBST1csIG5ldyB0YWJsZSA9ICgiWzEsMikiLCJbMDEt MDEtMjAxOCwwMS0xNS0yMDE4KSIsb25lKSwgKCJbMSwyKSIsIlswMS0wMS0yMDE5LDAxLTAxLTIw MjApIixvbmUpCitOT1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZv cl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcsIFRHX0xFVkVMIFJPVywgb2xkIHRhYmxlID0g KCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpLCBuZXcgdGFibGUgPSAoIlsx LDIpIiwiWzAxLTE1LTIwMTgsMDEtMDEtMjAxOSkiLDIwMTgtMDEtMTVfdG9fMjAxOS0wMS0wMSkK K05PVElDRTogIFRHX09QID0gVVBEQVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25f b2ZfdGVzdF91cGRhdGVfdHJpZ19zdG10LCBUR19MRVZFTCBTVEFURU1FTlQsIG9sZCB0YWJsZSA9 ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKSwgbmV3IHRhYmxlID0gKCJb MSwyKSIsIlswMS0xNS0yMDE4LDAxLTAxLTIwMTkpIiwyMDE4LTAxLTE1X3RvXzIwMTktMDEtMDEp Cityb2xsYmFjazsKK2JlZ2luOworZGVsZXRlIGZyb20gZm9yX3BvcnRpb25fb2ZfdGVzdCBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDEtMjEnOworTk9USUNFOiAg VEdfT1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2lu c2VydF90cmlnLCBUR19MRVZFTCBST1csIG5ldyB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMjEtMjAx OCwwMS0wMS0yMDIwKSIsb25lKQorTk9USUNFOiAgVEdfT1AgPSBERUxFVEUKK05PVElDRTogIHRy aWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2RlbF90cmlnLFRHX0xFVkVMIFJPVywgb2xkIHRh YmxlID0gKCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitOT1RJQ0U6ICBU R19PUCA9IERFTEVURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVs X3RyaWdfc3RtdCxUR19MRVZFTCBTVEFURU1FTlQsIG9sZCB0YWJsZSA9ICgiWzEsMikiLCJbMDEt MDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKQorcm9sbGJhY2s7CitiZWdpbjsKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0CisJRlJPTSBOVUxMIFRPICcy MDE4LTAxLTAyJyBTRVQgbmFtZSA9ICdOVUxMX3RvXzIwMTgtMDEtMDEnOworTk9USUNFOiAgVEdf T1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2Vy dF90cmlnLCBUR19MRVZFTCBST1csIG5ldyB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMDItMjAxOCww MS0wMS0yMDIwKSIsb25lKQorTk9USUNFOiAgVEdfT1AgPSBVUERBVEUKK05PVElDRTogIHRyaWdn ZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X3VwZGF0ZV90cmlnLCBUR19MRVZFTCBST1csIG9sZCB0 YWJsZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKSwgbmV3IHRhYmxl ID0gKCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAyLTIwMTgpIixOVUxMX3RvXzIwMTgtMDEtMDEp CitOT1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0aW9u X29mX3Rlc3RfdXBkYXRlX3RyaWdfc3RtdCwgVEdfTEVWRUwgU1RBVEVNRU5ULCBvbGQgdGFibGUg PSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIG5ldyB0YWJsZSA9ICgi WzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSIsTlVMTF90b18yMDE4LTAxLTAxKQorcm9s bGJhY2s7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBmb3JfcG9ydGlvbl9vZl90ZXN0OwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCmluZGV4IDY3N2I4ZTM4Li5lODY4MTljNCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMzQxLDMgKzM0MSw3 NSBAQCBTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKCiBEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOwogRFJPUCBUWVBFIG15ZGF0 ZXJhbmdlOworCitEUk9QIFRBQkxFIElGIEVYSVNUUyBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKGlkIGludDRyYW5nZSx2YWxpZF9hdCBkYXRl cmFuZ2UsIG5hbWUgdGV4dCk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVF UyAoJ1sxLDFdJywgJ1syMDE4LTAxLTAxLDIwMjAtMDEtMDEpJywgJ29uZScpOworCitjcmVhdGUg b3IgcmVwbGFjZSBmdW5jdGlvbiBkdW1wX3RyaWdnZXIoKSByZXR1cm5zIHRyaWdnZXIgbGFuZ3Vh Z2UgcGxwZ3NxbCBhcworJCQKKwlCRUdJTgorICAgIHJhaXNlIG5vdGljZSAnVEdfT1AgPSAlJywg VEdfT1A7CisJSUYgVEdfT1AgPSAnSU5TRVJUJyB0aGVuCisJCXJhaXNlIG5vdGljZSAndHJpZ2dl ciA9ICUsIFRHX0xFVkVMICUsIG5ldyB0YWJsZSA9ICUnLAorCQkJCQlUR19OQU1FLCBUR19MRVZF TCwKKwkJCQkJKHNlbGVjdCBzdHJpbmdfYWdnKG5ld190YWJsZTo6dGV4dCwgJywgJyBvcmRlciBi eSBpZCkgZnJvbSBuZXdfdGFibGUpOworICAgIEVMU0lGIFRHX09QID0gJ1VQREFURScgdGhlbgor CQlyYWlzZSBub3RpY2UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCAlLCBvbGQgdGFibGUgPSAlLCBu ZXcgdGFibGUgPSAlJywKKwkJCQkJVEdfTkFNRSwgVEdfTEVWRUwsCisJCQkJCShzZWxlY3Qgc3Ry aW5nX2FnZyhvbGRfdGFibGU6OnRleHQsICcsICcgb3JkZXIgYnkgaWQpIGZyb20gb2xkX3RhYmxl KSwKKwkJCQkJKHNlbGVjdCBzdHJpbmdfYWdnKG5ld190YWJsZTo6dGV4dCwgJywgJyBvcmRlciBi eSBpZCkgZnJvbSBuZXdfdGFibGUpOworICAgIEVMU0lGIFRHX09QID0gJ0RFTEVURScgdGhlbgor CQkJcmFpc2Ugbm90aWNlICd0cmlnZ2VyID0gJSxUR19MRVZFTCAlLCBvbGQgdGFibGUgPSAlJywK KwkJCQkJVEdfTkFNRSwgVEdfTEVWRUwsCisJCQkJCShzZWxlY3Qgc3RyaW5nX2FnZyhvbGRfdGFi bGU6OnRleHQsICcsICcgb3JkZXIgYnkgaWQpIGZyb20gb2xkX3RhYmxlKTsKKwlFTkQgSUY7Cisg ICAgUkVUVVJOIE5VTEw7CisJRU5EOworJCQ7CisKK2NyZWF0ZSBvciByZXBsYWNlIHRyaWdnZXIg Zm9yX3BvcnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJpZworYWZ0ZXIgaW5zZXJ0IG9uIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK3JlZmVyZW5jaW5nIG5ldyB0YWJsZSBhcyBuZXdfdGFibGUKK2ZvciBlYWNo IHJvdyBleGVjdXRlIHByb2NlZHVyZSBkdW1wX3RyaWdnZXIoKTsKKworY3JlYXRlIG9yIHJlcGxh Y2UgdHJpZ2dlciBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnX3N0bXQKK2FmdGVyIGlu c2VydCBvbiBmb3JfcG9ydGlvbl9vZl90ZXN0CityZWZlcmVuY2luZyBuZXcgdGFibGUgYXMgbmV3 X3RhYmxlCitmb3IgZWFjaCBzdGF0ZW1lbnQgZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF90cmlnZ2Vy KCk7CisKK2NyZWF0ZSBvciByZXBsYWNlIHRyaWdnZXIgZm9yX3BvcnRpb25fb2ZfdGVzdF91cGRh dGVfdHJpZworYWZ0ZXIgdXBkYXRlIG9uIGZvcl9wb3J0aW9uX29mX3Rlc3QKK3JlZmVyZW5jaW5n IG9sZCB0YWJsZSBhcyBvbGRfdGFibGUgbmV3IHRhYmxlIGFzIG5ld190YWJsZQorZm9yIGVhY2gg cm93IGV4ZWN1dGUgcHJvY2VkdXJlIGR1bXBfdHJpZ2dlcigpOworCitjcmVhdGUgb3IgcmVwbGFj ZSB0cmlnZ2VyIGZvcl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWdfc3RtdAorYWZ0ZXIgdXBk YXRlIG9uIGZvcl9wb3J0aW9uX29mX3Rlc3QKK3JlZmVyZW5jaW5nIG9sZCB0YWJsZSBhcyBvbGRf dGFibGUgbmV3IHRhYmxlIGFzIG5ld190YWJsZQorZm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUg cHJvY2VkdXJlIGR1bXBfdHJpZ2dlcigpOworCitjcmVhdGUgb3IgcmVwbGFjZSB0cmlnZ2VyIGZv cl9wb3J0aW9uX29mX3Rlc3RfZGVsX3RyaWcKK2FmdGVyIGRlbGV0ZSBvbiBmb3JfcG9ydGlvbl9v Zl90ZXN0CityZWZlcmVuY2luZyBvbGQgdGFibGUgYXMgb2xkX3RhYmxlCitmb3IgZWFjaCByb3cg ZXhlY3V0ZSBwcm9jZWR1cmUgZHVtcF90cmlnZ2VyKCk7CisKK2NyZWF0ZSBvciByZXBsYWNlIHRy aWdnZXIgZm9yX3BvcnRpb25fb2ZfdGVzdF9kZWxfdHJpZ19zdG10CithZnRlciBkZWxldGUgb24g Zm9yX3BvcnRpb25fb2ZfdGVzdAorcmVmZXJlbmNpbmcgb2xkIHRhYmxlIGFzIG9sZF90YWJsZQor Zm9yIGVhY2ggc3RhdGVtZW50IGV4ZWN1dGUgcHJvY2VkdXJlIGR1bXBfdHJpZ2dlcigpOworCiti ZWdpbjsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisJRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnIFNFVCBuYW1lID0gJzIwMTgtMDEt MTVfdG9fMjAxOS0wMS0wMSc7Cityb2xsYmFjazsKKworYmVnaW47CitkZWxldGUgZnJvbSBmb3Jf cG9ydGlvbl9vZl90ZXN0IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAx OC0wMS0yMSc7Cityb2xsYmFjazsKKworYmVnaW47CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorCUZST00gTlVMTCBUTyAnMjAxOC0wMS0wMicgU0VU IG5hbWUgPSAnTlVMTF90b18yMDE4LTAxLTAxJzsKK3JvbGxiYWNrOworCitEUk9QIFRBQkxFIElG IEVYSVNUUyBmb3JfcG9ydGlvbl9vZl90ZXN0OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK LS0KMi4zNC4xCgo= --00000000000096f747060bd73dfa--