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 1wB6So-000joi-0n for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 07:39:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wB6Sm-00AKvb-27 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 07:39:37 +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 1wB6Sm-00AKvT-0P for pgsql-hackers@lists.postgresql.org; Fri, 10 Apr 2026 07:39:37 +0000 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wB6Sk-00000000IKq-3Q6C for pgsql-hackers@postgresql.org; Fri, 10 Apr 2026 07:39:36 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c06cb8004e8so803293a12.0 for ; Fri, 10 Apr 2026 00:39:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775806774; cv=none; d=google.com; s=arc-20240605; b=GrScvhpMSC3M4qtOqg8QQkc8lR6XiBmhUmH/8926OmFFo3sUq2zcoHotCWsegqki5i 3dMrmD8Vk2MVb0sYltZrR9tNL11wi715xULWCIyVcMZgQT43fDi4fg/B5Bjq0r7oM7R/ 6nUWdil9NLieUY9ayspgWEj8PeLpIWYlXaIMVndPp0AG5BzA4u+Jt8ukLsg6J17RgbuE OAKNLmYUAScrzqZraPjJCJG0aWZM7G78EObV+zw/4tjjaSJm2I3SL5nIQUM/rnAP6mCR /7uFrAkLOD++eMj4PriJTgWgg5iKsxYVK+Moq0vU8iTfOqwwlzMLSO/ql5D01wk+D1cV S0gg== 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=obpxip/i6l6k+KJ/NHEPcIErIHpSSUMd5xgDMFA4R+8=; fh=waB8BPg+CTizfSdYuzTPrB2oW6oF6SotDl0xBkjtUM4=; b=ir0pKCEcLgNUVuifCgWdl3fOmeHDqV47MJpm4q1VbTLll2PmJypFiPIKScQNUzmZcr BC57n0vzLtjb9WkjTpOOTdAo67eTuHR3wkv1u4Cg/ZABLk6+ZwUhACbbryvgSD/RtY/A la0YsDq7dgKFB3xUFqURKPfMr55u41pME01ud0Ok4wmc2BzRElGwFfmPtpgMCcUjSKob ObvBu7pR0MuGaYcr2zsx/c9Nq/w4Zs3J8qm70FC5SJzCybTwQKXcs+MU12H7AN/gn9aK cPIVHfiqeQ5+0Giwei4ncfi63H41bfirUs6hfodrjumPO1dn2my6kT8EAYaOu5fCSkz7 tD5w==; 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=1775806774; x=1776411574; 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=obpxip/i6l6k+KJ/NHEPcIErIHpSSUMd5xgDMFA4R+8=; b=YJQTpQ8aN2JLF32Jby4n71cCL2Tisz8X+Qf9xrkCLorp9WthuyznM+jdNj6DNOpgFj xhvIq87L6m9h6miyw99D7nEZFSK0v4C39wAklaIKC/rZsqpa0n5c2+1NPq3JsXKZrvmB my1GmOojNd6O4x8V/TUAwvAeiFNHLHPAQUMzytK0nuUIyEolCX+g8yrLv4uI6uyzTvs/ Rde8XW7aXmsk9GsaGWxhKmKNHshwiwulXi9CHajjHUt6V7wd53Nsy5FTOqfnBFTqIKvk IiJOKkwdibeJ8a4AcN16TL4GYov9W2axfKq1RpXSTeLuInSK4OCXls1VoBL18cPKTU1L gnFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775806774; x=1776411574; 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=obpxip/i6l6k+KJ/NHEPcIErIHpSSUMd5xgDMFA4R+8=; b=D+X7DuTSOWW8DTCIj4rcs92EDZsR5CCj1BIt+5q/pM9NfnV/pkWvxEypCxqzDT9y0j djLHgunwl1YPaNCU0J9DYXggzPOkJUH4UcwrFQDryPZA+szSZZ79rDgz+1eSZV5W38Sl MghSmKPVeLXCBLpf33qs5r67WiCMn5nCjXEf+1wd9hk6xDmPSSD70uCDSQOMoDaMlpMm JsqNXcJOrcMXZOyrV1eZBaqcGY+1YeqfUCjc0flVdMWjWTKfC6uZ6xQqi/pzbS54W7hC F7McLDTl0tf69KIcNmGTqQYAgXX9U7bQf3QWVCmAXxoZLfgc/0CszDfoUp4mvvgxIkj2 q/+A== X-Forwarded-Encrypted: i=1; AJvYcCXrIw3vb3M0c5J6mQN4l+p4JjdlJYGKrDFrh2gpojeZ2atXFmkvKTCPZgVC5pLD7EJ6G8GMyqYDtoVrK4xf@postgresql.org X-Gm-Message-State: AOJu0YxFqzSjcDwQhjKo4I9gGYk5grPD4F3jd0e//Hb8KZ/WDYFB5cOZ UfirJssSFahVujtScLlHaLsT6TMhbZmEOTOobzwrJw3bqWRv5DTHXwBnIqCeAoCVBz/9QGfrGz1 cIxo8+Edb/eKyZKQMD5QYmwIJ4DKeXic= X-Gm-Gg: AeBDies5sS/O4lxwQTYmdG5Y9bSXqGN/TvObHJnyd6ptHz02SRg5JAFdaG3Drnk5Nin V3hw+xMWhnagVkSWorXZdQrfuGo282qvhMPJkaN1ogoA8j8nlqNtseIZRh6lrr2YVLiGw2s63YH 4WHU+LqAC0eShUB01B/gX9QWnSxcjHo7Dy+G3IsIOKBK3/EPLhhdS9wMHuqzEsZ+24QDTXGbdUl muENSHW6TWGrSYsHkd64zkb0CzLF0tdSG4r+Bmo+0yuD1Cnj9aaabsUkdUrb5JgxIjcI2zYz7Mq +J57y+sAZcLAcsI0ABuQPVWEU8vxqOk9lRYyTO7BFubBFpeYk5JUbcrKSURnIUZS X-Received: by 2002:a05:6a20:12c5:b0:39b:ba95:b14c with SMTP id adf61e73a8af0-39fe3db4746mr2708969637.24.1775806774183; Fri, 10 Apr 2026 00:39:34 -0700 (PDT) MIME-Version: 1.0 References: <2BE661BA-D909-4093-BF78-DB9B0C099337@gmail.com> <77FA04FE-1F84-4DA1-8855-8BBFD8CC889A@gmail.com> <72AA2663-B642-4FB1-BDC2-5FAFF2D2DF15@gmail.com> <8561287B-19F1-421E-959D-99F4593CFF54@gmail.com> In-Reply-To: From: Amit Langote Date: Fri, 10 Apr 2026 16:39:16 +0900 X-Gm-Features: AQROBzAlXx_ExoC--10vne63aznaPEyPZju4sTGQb-1X4MgHpq_njLisu_nHSXA Message-ID: Subject: Re: Eliminating SPI / SQL from some RI triggers - take 3 To: Chao Li Cc: Evan Montgomery-Recht , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000f72021064f163be4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f72021064f163be4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 9, 2026 at 7:26=E2=80=AFPM Chao Li wro= te: > 0001 and 0002 look good to me. I didn=E2=80=99t review 0003 and don=E2=80= =99t intend to review it. I've now pushed 0001 (34a3078629) and 0002 (d6e96bacd3c). Here's the remaning patch to add src/test/modules/test_spi_resowner rebased against master. I'm holding off on committing the test module until I confirm the policy on new test modules during feature freeze. It's also worth discussing whether this is the right place for testing C extensions that use SPI with a dedicated resource owner, or whether that coverage belongs elsewhere. --=20 Thanks, Amit Langote --000000000000f72021064f163be4 Content-Type: application/octet-stream; name="v5-0001-Add-test-module-for-RI-fast-path-FK-checks-under-.patch" Content-Disposition: attachment; filename="v5-0001-Add-test-module-for-RI-fast-path-FK-checks-under-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnslh72o0 RnJvbSAwMWY2OTVkYjQ3NzhmY2QxZDczMGIzMTUzOTU1NjVjZmQwYzNkMzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMTAgQXByIDIwMjYgMTU6MTk6MTQgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 XSBBZGQgdGVzdCBtb2R1bGUgZm9yIFJJIGZhc3QtcGF0aCBGSyBjaGVja3MgdW5kZXIgQy1sZXZl bAogU1BJCgpBZGQgdGVzdF9zcGlfcmVzb3duZXIsIGEgdGVzdCBtb2R1bGUgcHJvdmlkaW5nIGEg U1FMLWNhbGxhYmxlIEMgZnVuY3Rpb24KdGhhdCBleGVjdXRlcyBTUUwgdmlhIFNQSSB3aXRoIGEg ZGVkaWNhdGVkIHNob3J0LWxpdmVkIHJlc291cmNlIG93bmVyLgpUaGlzIHJlcHJvZHVjZXMgdGhl IGNyYXNoIHNjZW5hcmlvIGZpeGVkIGJ5IHRoZSBwcmV2aW91cyBjb21taXQgdGhhdApjYW5ub3Qg YmUgdHJpZ2dlcmVkIGZyb20gUEwvcGdTUUwsIHNpbmNlIFBML3BnU1FMJ3MgU1BJIGNvbm5lY3Rp b24gc3BhbnMKdGhlIGVudGlyZSBmdW5jdGlvbiBjYWxsIGFuZCBpdHMgcmVzb3VyY2Ugb3duZXIg b3V0bGl2ZXMgdGhlIGJhdGNoCmNhbGxiYWNrLgoKVGhlIGNyaXRpY2FsIHRlc3QgY2FzZSBjYWxs cyBzcGlfZXhlY19zcWwoKSBmcm9tIGluc2lkZSBhbiBBRlRFUiB0cmlnZ2VyLAp3aGVyZSB0aGUg RksgY2hlY2tzIGZpcmUgdW5kZXIgYSBuZXN0ZWQgU1BJIGNvbnRleHQgd2hpbGUgdGhlIG91dGVy CnRyaWdnZXItZmlyaW5nIGxvb3AgaXMgYWN0aXZlLiAgVGhlIGRlZGljYXRlZCByZXNvdXJjZSBv d25lciBlbnN1cmVzIGl0IGlzCnJlbGVhc2VkIGJlZm9yZSB0aGUgb3V0ZXIgYmF0Y2ggY2FsbGJh Y2sgZmlyZXMsIHJlcHJvZHVjaW5nIHRoZSByZXNvdXJjZQpvd25lciBtaXNtYXRjaCB0aGF0IHBy ZXZpb3VzbHkgY2F1c2VkIGEgY3Jhc2guICBBZGRpdGlvbmFsIHRlc3QgY2FzZXMKZXhlcmNpc2Ug bXVsdGlwbGUgRksgY29uc3RyYWludHMsIEZLIHZpb2xhdGlvbnMsIGFuZCBQTC9wZ1NRTCBjYWxs aW5nIHRoZQpDIFNQSSBmdW5jdGlvbiwgbWF0Y2hpbmcgdGhlIFBvc3RHSVMgdG9Ub3BvR2VvbSgp IGNhbGwgcGF0dGVybiByZXBvcnRlZApieSBFdmFuIE1vbnRnb21lcnktUmVjaHQuCgpSZXBvcnRl ZC1ieTogRXZhbiBNb250Z29tZXJ5LVJlY2h0IDxtb250Z2VAbWlhbmV0d29ya3MubmV0PgpBdXRo b3I6IEV2YW4gTW9udGdvbWVyeS1SZWNodCA8bW9udGdlQG1pYW5ldHdvcmtzLm5ldD4KQ28tYXV0 aG9yZWQtYnk6IEFtaXQgTGFuZ290ZSA8YW1pdGxhbmdvdGUwOUBnbWFpbC5jb20+CkRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FFZzdwd2NLZjAxRm1EcUZBZi1IenVfcFluTVlTY1lf T3RpZC1wZTl1dzNCSjZncTlnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVz b24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c3BpX3Jlc293bmVyL01ha2VmaWxlICAgfCAgMjMgKysrKwogLi4uL2V4cGVjdGVkL3JpX2Zhc3Rw YXRoLm91dCAgICAgICAgICAgICAgICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKwogLi4uL21v ZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvbWVzb24uYnVpbGQgICAgIHwgIDMxICsrKysrCiAuLi4v dGVzdF9zcGlfcmVzb3duZXIvc3FsL3JpX2Zhc3RwYXRoLnNxbCAgICAgfCAxMDUgKysrKysrKysr KysrKysrKwogLi4uL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsICAgICAgICAgICAgICAgIHwg ICA5ICsrCiAuLi4vdGVzdF9zcGlfcmVzb3duZXIvdGVzdF9zcGlfcmVzb3duZXIuYyAgICAgfCAg NzAgKysrKysrKysrKysKIC4uLi90ZXN0X3NwaV9yZXNvd25lci5jb250cm9sICAgICAgICAgICAg ICAgICB8ICAgNCArCiA5IGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9NYWtlZmlsZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvZXhw ZWN0ZWQvcmlfZmFzdHBhdGgub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X3NwaV9yZXNvd25lci9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvc3FsL3JpX2Zhc3RwYXRoLnNxbAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvdGVzdF9zcGlf cmVzb3duZXItLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rl c3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmNvbnRy b2wKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9k dWxlcy9NYWtlZmlsZQppbmRleCAwYTc0YWI1Yzg2Zi4uMDE2YjMyOGM4YzUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmls ZQpAQCAtNTIsNiArNTIsNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3Rfc2htZW0gXAogCQkgIHRl c3Rfc2htX21xIFwKIAkJICB0ZXN0X3NscnUgXAorCQkgIHRlc3Rfc3BpX3Jlc293bmVyIFwKIAkJ ICB0ZXN0X3RpZHN0b3JlIFwKIAkJICB1bnNhZmVfdGVzdHMgXAogCQkgIHdvcmtlcl9zcGkgXApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVs ZXMvbWVzb24uYnVpbGQKaW5kZXggNGJjYTQyYmIzNzAuLjNjYTQ1NDA2NGQwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVz b24uYnVpbGQKQEAgLTUzLDYgKzUzLDcgQEAgc3ViZGlyKCd0ZXN0X3Nhc2xwcmVwJykKIHN1YmRp cigndGVzdF9zaG1lbScpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRpcigndGVzdF9zbHJ1 JykKK3N1YmRpcigndGVzdF9zcGlfcmVzb3duZXInKQogc3ViZGlyKCd0ZXN0X3RpZHN0b3JlJykK IHN1YmRpcigndHlwY2FjaGUnKQogc3ViZGlyKCd1bnNhZmVfdGVzdHMnKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjVhNjllM2EzYzQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9 IHRlc3Rfc3BpX3Jlc293bmVyCitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X3NwaV9y ZXNvd25lci5vCitQR0ZJTEVERVNDID0gInRlc3Rfc3BpX3Jlc293bmVyIC0gU1FMLWNhbGxhYmxl IEMgU1BJIGZ1bmN0aW9uIHVuZGVyIGEgZGVkaWNhdGVkIFJlc291cmNlT3duZXIiCisKK0VYVEVO U0lPTiA9IHRlc3Rfc3BpX3Jlc293bmVyCitEQVRBID0gdGVzdF9zcGlfcmVzb3duZXItLTEuMC5z cWwKKworUkVHUkVTUyA9IHJpX2Zhc3RwYXRoCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcg PSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVk ZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293 bmVyCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikv c3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJp Yi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3Bp X3Jlc293bmVyL2V4cGVjdGVkL3JpX2Zhc3RwYXRoLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zcGlfcmVzb3duZXIvZXhwZWN0ZWQvcmlfZmFzdHBhdGgub3V0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMzk4NGNhODkyZQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvZXhwZWN0ZWQvcmlfZmFzdHBhdGgub3V0 CkBAIC0wLDAgKzEsMTE2IEBACistLQorLS0gVGVzdCBSSSBmYXN0LXBhdGggRksgY2hlY2sgdW5k ZXIgQy1sZXZlbCBTUEkuCistLQorLS0gVGhlIFJJIGZhc3QtcGF0aCBjYWNoZXMgUEsgcmVsYXRp b24gcmVmZXJlbmNlcyBpbiByaV9GYXN0UGF0aEdldEVudHJ5KCkKKy0tIHVuZGVyIHRoZSBjdXJy ZW50IHJlc291cmNlIG93bmVyLiAgV2hlbiBGSyB0cmlnZ2VycyBmaXJlIGluc2lkZSBhCistLSBD LWxldmVsIFNQSSBjb250ZXh0IHRoYXQgY3JlYXRlcyBhIGRlZGljYXRlZCBzaG9ydC1saXZlZCBy ZXNvdXJjZSBvd25lciwKKy0tIHRob3NlIHJlZmVyZW5jZXMgbXVzdCBiZSByZWxlYXNlZCBiZWZv cmUgdGhlIGlubmVyIHJlc291cmNlIG93bmVyIGlzCistLSByZWxlYXNlZC4gIFRoZSBmaXggZW5z dXJlcyBiYXRjaCBjYWxsYmFja3MgZmlyZSBhdCB0aGUgc2FtZSBmaXJpbmcgZGVwdGgKKy0tIGF0 IHdoaWNoIHRoZXkgd2VyZSByZWdpc3RlcmVkLCB3aGlsZSB0aGUgY29ycmVzcG9uZGluZyByZXNv dXJjZSBvd25lcgorLS0gaXMgc3RpbGwgYWxpdmUuICBXaXRob3V0IHRoaXMsIHJpX0Zhc3RQYXRo VGVhcmRvd24gd291bGQgY3Jhc2ggd2l0aAorLS0gQXNzZXJ0KHJlbC0+cmRfcmVmY250ID4gMCkg aW4gaW5kZXhfY2xvc2UuCistLQorLS0gU2ltcGxlIFBML3BnU1FMIGRvZXMgbm90IHRyaWdnZXIg dGhpcyBiZWNhdXNlIGl0cyBTUEkgY29ubmVjdGlvbiBzcGFucworLS0gdGhlIGVudGlyZSBmdW5j dGlvbiBjYWxsLCBzbyBpdHMgcmVzb3VyY2Ugb3duZXIgb3V0bGl2ZXMgdGhlIGJhdGNoCistLSBj YWxsYmFjay4gIFRoZSBjcml0aWNhbCB0ZXN0IGNhc2UgcmVxdWlyZXMgYSBDIGZ1bmN0aW9uIHRo YXQgY3JlYXRlcyBhCistLSBkZWRpY2F0ZWQgc2hvcnQtbGl2ZWQgcmVzb3VyY2Ugb3duZXIgYXJv dW5kIGl0cyBTUEkgY2FsbC4KKy0tCitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc3BpX3Jlc293bmVy OworQ1JFQVRFIFRBQkxFIHJpX2ZwX3BrMSAoaWQgc2VyaWFsIFBSSU1BUlkgS0VZKTsKK0NSRUFU RSBUQUJMRSByaV9mcF9wazIgKGlkIHNlcmlhbCBQUklNQVJZIEtFWSk7CitDUkVBVEUgVEFCTEUg cmlfZnBfcGszIChpZCBzZXJpYWwgUFJJTUFSWSBLRVkpOworSU5TRVJUIElOVE8gcmlfZnBfcGsx IFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyByaV9mcF9wazIgVkFMVUVTICgxKTsKK0lOU0VSVCBJ TlRPIHJpX2ZwX3BrMyBWQUxVRVMgKDEpOworQ1JFQVRFIFRBQkxFIHJpX2ZwX2ZrICgKKyAgICBp ZCBzZXJpYWwgUFJJTUFSWSBLRVksCisgICAgYSBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazEoaWQp LAorICAgIGIgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsyKGlkKSwKKyAgICBjIGludCBSRUZFUkVO Q0VTIHJpX2ZwX3BrMyhpZCksCisgICAgZCBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazEoaWQpLAor ICAgIGUgaW50IFJFRkVSRU5DRVMgcmlfZnBfcGsyKGlkKSwKKyAgICBmIGludCBSRUZFUkVOQ0VT IHJpX2ZwX3BrMyhpZCkKKyk7CistLSBDLWxldmVsIFNQSSBJTlNFUlQ6IHRoZSBjcml0aWNhbCB0 ZXN0IGNhc2UuCitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNFUlQgSU5UTyByaV9mcF9m ayAoYSwgYiwgYywgZCwgZSwgZikgVkFMVUVTICgxLCAxLCAxLCAxLCAxLCAxKScpOworIHNwaV9l eGVjX3NxbCAKKy0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKKy0tIEFkZGl0aW9uYWwgQy1s ZXZlbCBTUEkgSU5TRVJUcyB0byBleGVyY2lzZSBiYXRjaCByZXVzZSBhY3Jvc3MgY2FsbHMuCist LSBVc2UgZGlmZmVyZW50IGNvbHVtbiBvcmRlcmluZ3MgdG8gZW5zdXJlIGVhY2ggaXMgYSBkaXN0 aW5jdCBzdGF0ZW1lbnQuCitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNFUlQgSU5UTyBy aV9mcF9mayAoZiwgZSwgZCwgYywgYiwgYSkgVkFMVUVTICgxLCAxLCAxLCAxLCAxLCAxKScpOwor IHNwaV9leGVjX3NxbCAKKy0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzcGlf ZXhlY19zcWwoCisgICAgJ0lOU0VSVCBJTlRPIHJpX2ZwX2ZrIChhLCBjLCBlLCBiLCBkLCBmKSBW QUxVRVMgKDEsIDEsIDEsIDEsIDEsIDEpJyk7Cisgc3BpX2V4ZWNfc3FsIAorLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworLS0gQy1sZXZlbCBTUEkgd2l0aCBGSyB2aW9sYXRpb246IHNob3Vs ZCBlcnJvcgorU0VMRUNUIHNwaV9leGVjX3NxbCgKKyAgICAnSU5TRVJUIElOVE8gcmlfZnBfZmsg KGEsIGIsIGMsIGQsIGUsIGYpIFZBTFVFUyAoOTk5LCAxLCAxLCAxLCAxLCAxKScpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJyaV9mcF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAicmlfZnBfZmtfYV9ma2V5IgorREVUQUlMOiAgS2V5IChhKT0oOTk5KSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAicmlfZnBfcGsxIi4KK0NPTlRFWFQ6ICBTUUwgc3RhdGVt ZW50ICJJTlNFUlQgSU5UTyByaV9mcF9mayAoYSwgYiwgYywgZCwgZSwgZikgVkFMVUVTICg5OTks IDEsIDEsIDEsIDEsIDEpIgorLS0gTmVzdGVkOiBQTC9wZ1NRTCBjYWxsaW5nIEMgU1BJIChtaW1p Y3MgUG9zdEdJUyB0b1RvcG9HZW9tIHBhdHRlcm4pCitDUkVBVEUgRlVOQ1RJT04gcGxwZ3NxbF9j YWxsc19jX3NwaSgpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorICAgIGluc19zdG10IHRl eHQgOj0gJ0lOU0VSVCBJTlRPIHJpX2ZwX2ZrIChhLCBiLCBjLCBkLCBlLCBmKSBWQUxVRVMgKDEs IDEsIDEsIDEsIDEsIDEpJzsKK0JFR0lOCisgICAgUEVSRk9STSBzcGlfZXhlY19zcWwoaW5zX3N0 bXQpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBwbHBnc3FsX2NhbGxzX2Nf c3BpKCk7CisgcGxwZ3NxbF9jYWxsc19jX3NwaSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCistLSBBRlRFUiB0cmlnZ2VyIHRoYXQgdXNlcyBDLWxldmVsIFNQSSB0byBpbnNl cnQgaW50byBhbiBGSy1yZWZlcmVuY2luZyB0YWJsZS4KKy0tIFRoZSBGSyBiYXRjaCBjYWxsYmFj ayBpcyByZWdpc3RlcmVkIGF0IHRoZSBpbm5lciBTUEkncyBxdWVyeSBsZXZlbCBhbmQKKy0tIG11 c3QgZmlyZSBiZWZvcmUgdGhlIGlubmVyIHJlc291cmNlIG93bmVyIGlzIHJlbGVhc2VkLgorQ1JF QVRFIFRBQkxFIHJpX2ZwX291dGVyIChpZCBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIFRBQkxF IHJpX2ZwX2lubmVyIChpZCBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazEoaWQpKTsKK0NSRUFURSBG VU5DVElPTiBvdXRlcl90cmlnZ2VyX3NwaV9vaygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVH SU4KKyAgICBQRVJGT1JNIHNwaV9leGVjX3NxbCgnSU5TRVJUIElOVE8gcmlfZnBfaW5uZXIgVkFM VUVTICgxKScpOworICAgIFJFVFVSTiBORVc7CitFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIG91dGVyX3RnIEFGVEVSIElOU0VSVCBPTiByaV9mcF9vdXRlcgorICAgIEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIG91dGVyX3RyaWdnZXJfc3BpX29rKCk7CistLSBG aXJlcyBvdXRlcl90Zywgd2hvc2UgUEwvcGdTUUwgYm9keSBjYWxscyBzcGlfZXhlY19zcWwoKS4g IFRoZSBDIGZ1bmN0aW9uCistLSBjcmVhdGVzIGEgZGVkaWNhdGVkIHJlc291cmNlIG93bmVyIHRo YXQgaXMgcmVsZWFzZWQgYWZ0ZXIgdGhlIEZLIGJhdGNoCistLSBjYWxsYmFjayBmaXJlcy4KK0lO U0VSVCBJTlRPIHJpX2ZwX291dGVyIFZBTFVFUyAoMSk7CitDUkVBVEUgRlVOQ1RJT04gb3V0ZXJf dHJpZ2dlcl9zcGlfZmFpbCgpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBQRVJG T1JNIHNwaV9leGVjX3NxbCgnSU5TRVJUIElOVE8gcmlfZnBfaW5uZXIgVkFMVUVTICgzKScpOwor ICAgIFJFVFVSTiBORVc7CitFTkQgJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0RST1AgVFJJR0dFUiBv dXRlcl90ZyBPTiByaV9mcF9vdXRlcjsKK0RST1AgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlf b2soKTsKK0NSRUFURSBUUklHR0VSIG91dGVyX3RnIEFGVEVSIElOU0VSVCBPTiByaV9mcF9vdXRl cgorICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIG91dGVyX3RyaWdnZXJfc3BpX2Zh aWwoKTsKKy0tICBMaWtlIGFib3ZlIGJ1dCB0aGUgaW5uZXIgaW5zZXJ0IGZhaWxzLgorSU5TRVJU IElOVE8gcmlfZnBfb3V0ZXIgVkFMVUVTICgyKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBv biB0YWJsZSAicmlfZnBfaW5uZXIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInJp X2ZwX2lubmVyX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKGlkKT0oMykgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInJpX2ZwX3BrMSIuCitDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiSU5TRVJUIElO VE8gcmlfZnBfaW5uZXIgVkFMVUVTICgzKSIKK1NRTCBzdGF0ZW1lbnQgIlNFTEVDVCBzcGlfZXhl Y19zcWwoJ0lOU0VSVCBJTlRPIHJpX2ZwX2lubmVyIFZBTFVFUyAoMyknKSIKK1BML3BnU1FMIGZ1 bmN0aW9uIG91dGVyX3RyaWdnZXJfc3BpX2ZhaWwoKSBsaW5lIDMgYXQgUEVSRk9STQorRFJPUCBU UklHR0VSIG91dGVyX3RnIE9OIHJpX2ZwX291dGVyOworRFJPUCBGVU5DVElPTiBvdXRlcl90cmln Z2VyX3NwaV9mYWlsKCk7CitEUk9QIFRBQkxFIHJpX2ZwX2lubmVyLCByaV9mcF9vdXRlcjsKKy0t IENsZWFudXAKK0RST1AgVEFCTEUgcmlfZnBfZms7CitEUk9QIFRBQkxFIHJpX2ZwX3BrMywgcmlf ZnBfcGsyLCByaV9mcF9wazE7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X3NwaV9yZXNvd25lcjsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL21lc29uLmJ1aWxkCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYmIwMjdlMDVjNwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvbWVzb24uYnVpbGQKQEAg LTAsMCArMSwzMSBAQAordGVzdF9zcGlfcmVzb3duZXJfc291cmNlcyA9IGZpbGVzKAorICAndGVz dF9zcGlfcmVzb3duZXIuYycsCispCisKK2lmIGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0 ZXN0X3NwaV9yZXNvd25lcl9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9y YywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9zcGlfcmVzb3duZXInLAorICAg ICctLUZJTEVERVNDJywgJ3Rlc3Rfc3BpX3Jlc293bmVyIC0gU1FMLWNhbGxhYmxlIEMgU1BJIGZ1 bmN0aW9uIHVuZGVyIGEgZGVkaWNhdGVkIFJlc291cmNlT3duZXInLF0pCitlbmRpZgorCit0ZXN0 X3NwaV9yZXNvd25lciA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3Rfc3BpX3Jlc293bmVyJywKKyAgdGVz dF9zcGlfcmVzb3duZXJfc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQor dGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9zcGlfcmVzb3duZXIKKwordGVzdF9pbnN0YWxsX2Rh dGEgKz0gZmlsZXMoCisgICd0ZXN0X3NwaV9yZXNvd25lci5jb250cm9sJywKKyAgJ3Rlc3Rfc3Bp X3Jlc293bmVyLS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X3Nw aV9yZXNvd25lcicsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQn OiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAncmVncmVzcyc6IHsKKyAgICAnc3FsJzog WworICAgICAgJ3JpX2Zhc3RwYXRoJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9zcWwvcmlfZmFzdHBhdGguc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci9zcWwvcmlfZmFzdHBhdGguc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMWE1NjFhMDZhYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvc3FsL3JpX2Zhc3Rw YXRoLnNxbApAQCAtMCwwICsxLDEwNSBAQAorLS0KKy0tIFRlc3QgUkkgZmFzdC1wYXRoIEZLIGNo ZWNrIHVuZGVyIEMtbGV2ZWwgU1BJLgorLS0KKy0tIFRoZSBSSSBmYXN0LXBhdGggY2FjaGVzIFBL IHJlbGF0aW9uIHJlZmVyZW5jZXMgaW4gcmlfRmFzdFBhdGhHZXRFbnRyeSgpCistLSB1bmRlciB0 aGUgY3VycmVudCByZXNvdXJjZSBvd25lci4gIFdoZW4gRksgdHJpZ2dlcnMgZmlyZSBpbnNpZGUg YQorLS0gQy1sZXZlbCBTUEkgY29udGV4dCB0aGF0IGNyZWF0ZXMgYSBkZWRpY2F0ZWQgc2hvcnQt bGl2ZWQgcmVzb3VyY2Ugb3duZXIsCistLSB0aG9zZSByZWZlcmVuY2VzIG11c3QgYmUgcmVsZWFz ZWQgYmVmb3JlIHRoZSBpbm5lciByZXNvdXJjZSBvd25lciBpcworLS0gcmVsZWFzZWQuICBUaGUg Zml4IGVuc3VyZXMgYmF0Y2ggY2FsbGJhY2tzIGZpcmUgYXQgdGhlIHNhbWUgZmlyaW5nIGRlcHRo CistLSBhdCB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZCwgd2hpbGUgdGhlIGNvcnJlc3BvbmRp bmcgcmVzb3VyY2Ugb3duZXIKKy0tIGlzIHN0aWxsIGFsaXZlLiAgV2l0aG91dCB0aGlzLCByaV9G YXN0UGF0aFRlYXJkb3duIHdvdWxkIGNyYXNoIHdpdGgKKy0tIEFzc2VydChyZWwtPnJkX3JlZmNu dCA+IDApIGluIGluZGV4X2Nsb3NlLgorLS0KKy0tIFNpbXBsZSBQTC9wZ1NRTCBkb2VzIG5vdCB0 cmlnZ2VyIHRoaXMgYmVjYXVzZSBpdHMgU1BJIGNvbm5lY3Rpb24gc3BhbnMKKy0tIHRoZSBlbnRp cmUgZnVuY3Rpb24gY2FsbCwgc28gaXRzIHJlc291cmNlIG93bmVyIG91dGxpdmVzIHRoZSBiYXRj aAorLS0gY2FsbGJhY2suICBUaGUgY3JpdGljYWwgdGVzdCBjYXNlIHJlcXVpcmVzIGEgQyBmdW5j dGlvbiB0aGF0IGNyZWF0ZXMgYQorLS0gZGVkaWNhdGVkIHNob3J0LWxpdmVkIHJlc291cmNlIG93 bmVyIGFyb3VuZCBpdHMgU1BJIGNhbGwuCistLQorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3NwaV9y ZXNvd25lcjsKKworQ1JFQVRFIFRBQkxFIHJpX2ZwX3BrMSAoaWQgc2VyaWFsIFBSSU1BUlkgS0VZ KTsKK0NSRUFURSBUQUJMRSByaV9mcF9wazIgKGlkIHNlcmlhbCBQUklNQVJZIEtFWSk7CitDUkVB VEUgVEFCTEUgcmlfZnBfcGszIChpZCBzZXJpYWwgUFJJTUFSWSBLRVkpOworSU5TRVJUIElOVE8g cmlfZnBfcGsxIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyByaV9mcF9wazIgVkFMVUVTICgxKTsK K0lOU0VSVCBJTlRPIHJpX2ZwX3BrMyBWQUxVRVMgKDEpOworCitDUkVBVEUgVEFCTEUgcmlfZnBf ZmsgKAorICAgIGlkIHNlcmlhbCBQUklNQVJZIEtFWSwKKyAgICBhIGludCBSRUZFUkVOQ0VTIHJp X2ZwX3BrMShpZCksCisgICAgYiBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazIoaWQpLAorICAgIGMg aW50IFJFRkVSRU5DRVMgcmlfZnBfcGszKGlkKSwKKyAgICBkIGludCBSRUZFUkVOQ0VTIHJpX2Zw X3BrMShpZCksCisgICAgZSBpbnQgUkVGRVJFTkNFUyByaV9mcF9wazIoaWQpLAorICAgIGYgaW50 IFJFRkVSRU5DRVMgcmlfZnBfcGszKGlkKQorKTsKKworLS0gQy1sZXZlbCBTUEkgSU5TRVJUOiB0 aGUgY3JpdGljYWwgdGVzdCBjYXNlLgorU0VMRUNUIHNwaV9leGVjX3NxbCgKKyAgICAnSU5TRVJU IElOVE8gcmlfZnBfZmsgKGEsIGIsIGMsIGQsIGUsIGYpIFZBTFVFUyAoMSwgMSwgMSwgMSwgMSwg MSknKTsKKworLS0gQWRkaXRpb25hbCBDLWxldmVsIFNQSSBJTlNFUlRzIHRvIGV4ZXJjaXNlIGJh dGNoIHJldXNlIGFjcm9zcyBjYWxscy4KKy0tIFVzZSBkaWZmZXJlbnQgY29sdW1uIG9yZGVyaW5n cyB0byBlbnN1cmUgZWFjaCBpcyBhIGRpc3RpbmN0IHN0YXRlbWVudC4KK1NFTEVDVCBzcGlfZXhl Y19zcWwoCisgICAgJ0lOU0VSVCBJTlRPIHJpX2ZwX2ZrIChmLCBlLCBkLCBjLCBiLCBhKSBWQUxV RVMgKDEsIDEsIDEsIDEsIDEsIDEpJyk7CitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNF UlQgSU5UTyByaV9mcF9mayAoYSwgYywgZSwgYiwgZCwgZikgVkFMVUVTICgxLCAxLCAxLCAxLCAx LCAxKScpOworCistLSBDLWxldmVsIFNQSSB3aXRoIEZLIHZpb2xhdGlvbjogc2hvdWxkIGVycm9y CitTRUxFQ1Qgc3BpX2V4ZWNfc3FsKAorICAgICdJTlNFUlQgSU5UTyByaV9mcF9mayAoYSwgYiwg YywgZCwgZSwgZikgVkFMVUVTICg5OTksIDEsIDEsIDEsIDEsIDEpJyk7CisKKy0tIE5lc3RlZDog UEwvcGdTUUwgY2FsbGluZyBDIFNQSSAobWltaWNzIFBvc3RHSVMgdG9Ub3BvR2VvbSBwYXR0ZXJu KQorQ1JFQVRFIEZVTkNUSU9OIHBscGdzcWxfY2FsbHNfY19zcGkoKSBSRVRVUk5TIHZvaWQgQVMg JCQKK0RFQ0xBUkUKKyAgICBpbnNfc3RtdCB0ZXh0IDo9ICdJTlNFUlQgSU5UTyByaV9mcF9mayAo YSwgYiwgYywgZCwgZSwgZikgVkFMVUVTICgxLCAxLCAxLCAxLCAxLCAxKSc7CitCRUdJTgorICAg IFBFUkZPUk0gc3BpX2V4ZWNfc3FsKGluc19zdG10KTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdz cWw7CisKK1NFTEVDVCBwbHBnc3FsX2NhbGxzX2Nfc3BpKCk7CisKKy0tIEFGVEVSIHRyaWdnZXIg dGhhdCB1c2VzIEMtbGV2ZWwgU1BJIHRvIGluc2VydCBpbnRvIGFuIEZLLXJlZmVyZW5jaW5nIHRh YmxlLgorLS0gVGhlIEZLIGJhdGNoIGNhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgYXQgdGhlIGlubmVy IFNQSSdzIHF1ZXJ5IGxldmVsIGFuZAorLS0gbXVzdCBmaXJlIGJlZm9yZSB0aGUgaW5uZXIgcmVz b3VyY2Ugb3duZXIgaXMgcmVsZWFzZWQuCitDUkVBVEUgVEFCTEUgcmlfZnBfb3V0ZXIgKGlkIGlu dCBQUklNQVJZIEtFWSk7CitDUkVBVEUgVEFCTEUgcmlfZnBfaW5uZXIgKGlkIGludCBSRUZFUkVO Q0VTIHJpX2ZwX3BrMShpZCkpOworCitDUkVBVEUgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlf b2soKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVSRk9STSBzcGlfZXhlY19z cWwoJ0lOU0VSVCBJTlRPIHJpX2ZwX2lubmVyIFZBTFVFUyAoMSknKTsKKyAgICBSRVRVUk4gTkVX OworRU5EICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIG91dGVyX3RnIEFG VEVSIElOU0VSVCBPTiByaV9mcF9vdXRlcgorICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNU SU9OIG91dGVyX3RyaWdnZXJfc3BpX29rKCk7CisKKy0tIEZpcmVzIG91dGVyX3RnLCB3aG9zZSBQ TC9wZ1NRTCBib2R5IGNhbGxzIHNwaV9leGVjX3NxbCgpLiAgVGhlIEMgZnVuY3Rpb24KKy0tIGNy ZWF0ZXMgYSBkZWRpY2F0ZWQgcmVzb3VyY2Ugb3duZXIgdGhhdCBpcyByZWxlYXNlZCBhZnRlciB0 aGUgRksgYmF0Y2gKKy0tIGNhbGxiYWNrIGZpcmVzLgorSU5TRVJUIElOVE8gcmlfZnBfb3V0ZXIg VkFMVUVTICgxKTsKKworQ1JFQVRFIEZVTkNUSU9OIG91dGVyX3RyaWdnZXJfc3BpX2ZhaWwoKSBS RVRVUk5TIHRyaWdnZXIgQVMgJCQKK0JFR0lOCisgICAgUEVSRk9STSBzcGlfZXhlY19zcWwoJ0lO U0VSVCBJTlRPIHJpX2ZwX2lubmVyIFZBTFVFUyAoMyknKTsKKyAgICBSRVRVUk4gTkVXOworRU5E ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0RST1AgVFJJR0dFUiBvdXRlcl90ZyBPTiByaV9mcF9v dXRlcjsKK0RST1AgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfb2soKTsKKworQ1JFQVRFIFRS SUdHRVIgb3V0ZXJfdGcgQUZURVIgSU5TRVJUIE9OIHJpX2ZwX291dGVyCisgICAgRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpOworCistLSAgTGlr ZSBhYm92ZSBidXQgdGhlIGlubmVyIGluc2VydCBmYWlscy4KK0lOU0VSVCBJTlRPIHJpX2ZwX291 dGVyIFZBTFVFUyAoMik7CisKK0RST1AgVFJJR0dFUiBvdXRlcl90ZyBPTiByaV9mcF9vdXRlcjsK K0RST1AgRlVOQ1RJT04gb3V0ZXJfdHJpZ2dlcl9zcGlfZmFpbCgpOworRFJPUCBUQUJMRSByaV9m cF9pbm5lciwgcmlfZnBfb3V0ZXI7CisKKy0tIENsZWFudXAKK0RST1AgVEFCTEUgcmlfZnBfZms7 CitEUk9QIFRBQkxFIHJpX2ZwX3BrMywgcmlfZnBfcGsyLCByaV9mcF9wazE7CitEUk9QIEVYVEVO U0lPTiB0ZXN0X3NwaV9yZXNvd25lcjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zcGlfcmVzb3duZXIvdGVzdF9zcGlfcmVzb3duZXItLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yOWVmNzBlZTBkYwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zcGlfcmVzb3duZXIvdGVzdF9zcGlfcmVzb3du ZXItLTEuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc3Bp X3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLS0xLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlm IHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5T SU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gdGVzdF9zcGlfcmVzb3duZXIiIHRvIGxv YWQgdGhpcyBmaWxlLiBccXVpdAorCitDUkVBVEUgRlVOQ1RJT04gc3BpX2V4ZWNfc3FsKHF1ZXJ5 IHRleHQpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnLCAnc3BpX2V4ZWNfc3Fs JworTEFOR1VBR0UgQyBTVFJJQ1Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjAzMDYxMzliNWMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci90ZXN0X3NwaV9yZXNvd25lci5jCkBAIC0wLDAgKzEs NzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rfc3BpX3Jlc293bmVyLmMKKyAq CQlTUUwtY2FsbGFibGUgQyBmdW5jdGlvbiB0aGF0IHVzZXMgU1BJIHRvIGV4ZWN1dGUgYSBxdWVy eS4KKyAqCisgKgkJVXNlZnVsIGZvciB0ZXN0aW5nIGNvZGUgcGF0aHMgdGhhdCBvbmx5IHRyaWdn ZXIgdW5kZXIgQy1sZXZlbAorICoJCVNQSSAobm90IFBML3BnU1FMKSwgc3VjaCBhcyByZXNvdXJj ZSBvd25lciBpbnRlcmFjdGlvbnMgd2l0aAorICoJCVJJIGZhc3QtcGF0aCBGSyBjaGVja3MuCisg KgorICogQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nw aV9yZXNvd25lci90ZXN0X3NwaV9yZXNvd25lci5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKworUEdfTU9EVUxFX01BR0lDOworCitQR19GVU5D VElPTl9JTkZPX1YxKHNwaV9leGVjX3NxbCk7CisKKy8qCisgKiBzcGlfZXhlY19zcWwocXVlcnkg dGV4dCkgLSBleGVjdXRlIGEgU1FMIHF1ZXJ5IHZpYSBTUEkuCisgKgorICogT3BlbnMgYSBmcmVz aCBTUEkgY29ubmVjdGlvbiwgZXhlY3V0ZXMgdGhlIHF1ZXJ5LCBhbmQgY2xvc2VzIHRoZQorICog Y29ubmVjdGlvbi4gIENyZWF0ZXMgYSBkZWRpY2F0ZWQgY2hpbGQgcmVzb3VyY2Ugb3duZXIgYXJv dW5kIHRoZQorICogU1BJX2V4ZWN1dGUgY2FsbCBhbmQgcmVsZWFzZXMgaXQgYmVmb3JlIHJldHVy bmluZywgZW5zdXJpbmcgdGhhdAorICogYW55IHJlc291cmNlcyByZWdpc3RlcmVkIHVuZGVyIGl0 IChzdWNoIGFzIHJlbGF0aW9uIHJlZmVyZW5jZXMKKyAqIG9wZW5lZCBieSBSSSBmYXN0LXBhdGgg RksgY2hlY2tzKSBhcmUgcmVsZWFzZWQgYmVmb3JlIHRoZSBvdXRlcgorICogdHJpZ2dlci1maXJp bmcgYmF0Y2ggY2FsbGJhY2sgZmlyZXMuICBUaGlzIHJlcHJvZHVjZXMgdGhlIHJlc291cmNlCisg KiBvd25lciBtaXNtYXRjaCB0aGF0IG9jY3VycyB3aXRoIEMtbGFuZ3VhZ2UgZXh0ZW5zaW9ucyBs aWtlIFBvc3RHSVMKKyAqIHRvcG9sb2d5IGZ1bmN0aW9ucywgd2hpY2ggY2Fubm90IGJlIHRyaWdn ZXJlZCBmcm9tIFBML3BnU1FMIHNpbmNlCisgKiBQTC9wZ1NRTCdzIFNQSSBjb25uZWN0aW9uIHNw YW5zIHRoZSBlbnRpcmUgZnVuY3Rpb24gY2FsbC4KKyAqLworRGF0dW0KK3NwaV9leGVjX3NxbChQ R19GVU5DVElPTl9BUkdTKQoreworCWNvbnN0IGNoYXIgKnF1ZXJ5ID0gdGV4dF90b19jc3RyaW5n KFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlpbnQJCQlyZXQ7CisJUmVzb3VyY2VPd25lciBzYXZl ID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJUmVzb3VyY2VPd25lciBjaGlsZG93bmVyID0gUmVz b3VyY2VPd25lckNyZWF0ZShzYXZlLCAidGVzdF9zcGkgaW5uZXIiKTsKKworCVNQSV9jb25uZWN0 KCk7CisKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IGNoaWxkb3duZXI7CisJcmV0ID0gU1BJX2V4 ZWN1dGUocXVlcnksIGZhbHNlLCAwKTsKKworCWlmIChyZXQgPCAwKQorCQllbG9nKEVSUk9SLCAi U1BJX2V4ZWN1dGUgZmFpbGVkOiBlcnJvciBjb2RlICVkIiwgcmV0KTsKKworCVNQSV9maW5pc2go KTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZTsKKwlSZXNvdXJjZU93bmVyUmVsZWFz ZShjaGlsZG93bmVyLAorCQkJCQkJIFJFU09VUkNFX1JFTEVBU0VfQkVGT1JFX0xPQ0tTLAorCQkJ CQkJIHRydWUsIGZhbHNlKTsKKwlSZXNvdXJjZU93bmVyUmVsZWFzZShjaGlsZG93bmVyLAorCQkJ CQkJIFJFU09VUkNFX1JFTEVBU0VfTE9DS1MsCisJCQkJCQkgdHJ1ZSwgZmFsc2UpOworCVJlc291 cmNlT3duZXJSZWxlYXNlKGNoaWxkb3duZXIsCisJCQkJCQkgUkVTT1VSQ0VfUkVMRUFTRV9BRlRF Ul9MT0NLUywKKwkJCQkJCSB0cnVlLCBmYWxzZSk7CisJUmVzb3VyY2VPd25lckRlbGV0ZShjaGls ZG93bmVyKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmNvbnRyb2wgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc3BpX3Jlc293bmVyL3Rlc3Rfc3BpX3Jlc293bmVyLmNvbnRyb2wK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxMjBhZTk0NDJmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NwaV9yZXNvd25lci90ZXN0X3Nw aV9yZXNvd25lci5jb250cm9sCkBAIC0wLDAgKzEsNCBAQAorY29tbWVudCA9ICdUZXN0IFNRTC1j YWxsYWJsZSBDIGZ1bmN0aW9uIHRoYXQgdXNlcyBTUEkgdXNpbmcgZGVkaWNhdGVkIFJlc291cmNl T3duZXInCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJk aXIvdGVzdF9zcGlfcmVzb3duZXInCityZWxvY2F0YWJsZSA9IHRydWUKLS0gCjIuNDcuMwoK --000000000000f72021064f163be4--