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 1wWwYC-002xLP-1G for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 13:31:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wWwYB-007MMS-0P for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Jun 2026 13:31:27 +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.96) (envelope-from ) id 1wWwYA-007MMK-2T for pgsql-hackers@lists.postgresql.org; Tue, 09 Jun 2026 13:31:26 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wWwY5-000000029nR-1kmt for pgsql-hackers@postgresql.org; Tue, 09 Jun 2026 13:31:26 +0000 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2c0c379e8ffso37896035ad.3 for ; Tue, 09 Jun 2026 06:31:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781011879; cv=none; d=google.com; s=arc-20240605; b=P2teVowcq//yEkuPhd+3EglXpa5ZyfmaDxURPjSqAbecXjz1YOK/P66o3sXNfMNnYm UvK6ma02C9LACaOc2Wn2/xmKrPNc7zi+/etj1UAkg0WOg12dmgcEewjg2NTMbdA5cHBV e+dkDpjwX5gJuYlHT0wIDUBxZFdg/7oVZlFeutppMiiXDv3yPED5Za2kZBDakyMaF0N/ WQ74F0E+NCzVzB5uatLTXAfrzswBoeRu7tazlAAgGYr4w/mwJZh3BHYDWlRw1bFadZv2 d4nUHTcuHRo9OGkkAiCiaZkrclATX3KIOP6KdazD9B1IgwEhvOE5b8GiT1Bu4SiuWMsd Ms7Q== 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=0UTDBPjMo6RiiQqnvG3AGszGM4l2NhwlEElIo9ksiAM=; fh=c/W7hNCZjLN+L3G/W6nbCHoildWV8Hk0H9foDtM+dPc=; b=KJ6hXS+FQYmSPlOjW1+Ygdps4ZlWKfKqX6EUf6nGXYFxSJ/oDZCmdmfDhBEUwu6ny9 IOvjJ1NSjxkQpQPsQr6UlpftVap6BaHr+BgG+xaquTtKyhlAR2dvKUHtMzdD+MvB0beH FpIK0uP7XCk7YHJ9/FEX66KwfqwhLeuVF7cvplq4s9kRgXCxUEEPEhgs589WWELwN271 GJif7d9/8dqWjUVEN2pMeYCIJJpSar7bgzrtR1E+f1Cf5lKpyneDbb9aZG8lXJB6oInL plPnffaw6RvqwIN9MprfSxOTV4SN9PmkccgIH/ZymO9zh8EMtSWXR70rmLByZmgKhN4x B40A==; 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=1781011879; x=1781616679; 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=0UTDBPjMo6RiiQqnvG3AGszGM4l2NhwlEElIo9ksiAM=; b=JnM01FGEv7vvpa3B3zZCi3lkLegloyvSv1weHOilUnrdtB8oT4XlF43H0xjTlwpnlF bo8X75js1M7dsEANLZDW+fc8MneWm28gi5l+Jlp4tziV5NvgNTiLFoFENYeXzNu/srR+ Ji6Dxe9oSCvuypT1Q/+nplzYCMvepCKA4R40r3cHR0vJYEgePJilVlknO6NHcJkP8P5W bd1RNpzV7ef4zQy0YZVodvlo/29XERHVBGvpAuY+RtooeJDZRJ05+e3HmdvlYwTk8de9 AvIYKvo8AxOGWWkAxKfg+rokb/aLMT/Q8W9w7ksL4E78bs9uNZWBA+8g1yT9IiogYWOL ybHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781011879; x=1781616679; 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=0UTDBPjMo6RiiQqnvG3AGszGM4l2NhwlEElIo9ksiAM=; b=B5YBv4uGKiP0q0L0PS1ap/gMJE/+zU4nBhyLNSzc44vikLBZqe+daE58FNeSMWjdGS pAV8H1BIdsA8KW95meZPKbbnzaQoFDqJhWttsIQp6QEAAXDBtqFFWSNgoUoFXH8NUMr/ NNIkNdpTgKtDDm2xmNpbwgOK016JsKly8iYwha8NIdyq0ZVkAcHvXjtAH4fpWsMja92P oQKCoi+XcZBYQE8m2nxvt6AECNPB+pHkpsyMK8Di4UEoWVGH4QEEEItGRznV9b07UryA 6I5abGyJ1QXhI93vCCJ8gAK4H+8vH55yfHuqFHBvgyf5lCRhv05+8linggt2X9Yp7LnD BjqA== X-Gm-Message-State: AOJu0YwBHPGFoHmMRGDpTi3VkDmIdYqcfQgaoUpMekCjpN9T80ljBX1G W9OupaOFhWvSeEYHHdm1lCSWshmrVeNBUzjD6cKu/APCdbpQufURpfiPVx+AWyrF9PoboEZK7Qq ZCaPCVdBhN4QfmmJol5USkGK6TaMGb1o= X-Gm-Gg: Acq92OE8nZhHT53l+tVrtvjnL07Yypl4Y2J+28NjlfLw3qqR05hcGhSxxZ9mT1+Kesb 92hp3yQRK5hDAuX88LZqmQRKvSshMESoPHut5QKIqjfPAlSUPGJXxHNEOTh87YguIPsjAXjd6P4 vcifEY2C93zw0pREOu95ayF9slemRneeC3/aEeLopYgSzeNkGYZtB5MilFDhDSERDJxTTLXrMND J0vRPmg2jLra2VnO50HuxbnnSGU7ZyGYW18QzDKS3XlkfKsxEkn5UD/DdWXdjpqVrJ9xq9fn7SU FOn4mYPC35kllMj3L10f1f5ebdaTMMMS7DTMz18JehOwMa8/+X9ZxgU/CID/ODuOrDrOFZlHwCE = X-Received: by 2002:a17:903:291:b0:2bf:2243:d4ee with SMTP id d9443c01a7336-2c1e7d33343mr243897915ad.18.1781011879088; Tue, 09 Jun 2026 06:31:19 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Tue, 9 Jun 2026 22:31:01 +0900 X-Gm-Features: AVVi8CeAOgiNC0P8aV1u2QdvUVe1n_BmflT3bHjpuPhUo_7i1GaJPzcRds1lnQQ Message-ID: Subject: Re: PG19 FK fast path: OOB write and missed FK checks during batched To: Nikolay Samokhvalov Cc: pgsql-hackers mailing list , Andrey Borodin , Kirk Wolak Content-Type: multipart/mixed; boundary="00000000000064ee8e0653d22437" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000064ee8e0653d22437 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 8, 2026 at 5:18=E2=80=AFPM Amit Langote wrote: > On Sat, Jun 6, 2026 at 6:13=E2=80=AFPM Amit Langote wrote: > > Thanks for the detailed report and reproducers. I=E2=80=99ve started lo= oking into this. > > Continuing to look. Appended this to the open items list: > > https://wiki.postgresql.org/wiki/PostgreSQL_19_Open_Items#Open_Issues Thanks again, Nik, for the thorough analysis and the reproducers -- they made all three easy to confirm and pin down. Patches attached: 0001 for defect 1, 0002 for defects 2 and 3. 0001 (defect 1): check and flush before writing the row rather than after, and add a per-entry "flushing" flag so a re-entrant add on the same entry during a flush takes the per-row path instead of touching the mid-flush batch. The flag is cleared in a PG_FINALLY, which also resets batch_count, so the entry stays reusable if a flush error is caught by a savepoint. 0002 (defects 2 and 3): rather than track subxact membership per row, confine batching to the top transaction level -- in RI_FKey_check, when GetCurrentTransactionNestLevel() > 1, use the per-row path. I went this way because per-entry subxact tracking isn't enough (one entry's batch can mix rows from several levels, since the cache is keyed by constraint), and flushing at subxact boundaries doesn't work for deferred constraints. Once the cache only ever holds top-level rows, a subxact abort has nothing of its own to discard, so ri_FastPathSubXactCallback goes away -- that's what fixes your defect 2 reproducer. For defect 3, which is still reachable at the top level, the same patch adds a cache-wide flag set while ri_FastPathEndBatch iterates, so a re-entrant check during the scan takes the per-row path instead of inserting into the cache being scanned. The per-row path still bypasses SPI, so these stay well ahead of the pre-19 check in terms of performance. I'd like to recover batching across subtransactions properly in v20 but didn't want to rush it now. On defect 3, can you check whether your reproducer still commits the orphan with 0002 applied, or whether (like on my build) it now raises the violation? I'd like to be sure the bucket-placement variation you hit is actually covered. And of course any review of the patches is welcome. -- Thanks, Amit Langote --00000000000064ee8e0653d22437 Content-Type: application/octet-stream; name="v1-0001-Fix-out-of-bounds-write-in-RI-fast-path-batch-on-.patch" Content-Disposition: attachment; filename="v1-0001-Fix-out-of-bounds-write-in-RI-fast-path-batch-on-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6oahmw1 RnJvbSAwMGZhMWMxMTM3MDA5Y2Q2NGZiMDRiNzE4YzFkZTRjOGMxMzBmMDhlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgOSBKdW4gMjAyNiAxODoyNzoyNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEg MS8yXSBGaXggb3V0LW9mLWJvdW5kcyB3cml0ZSBpbiBSSSBmYXN0LXBhdGggYmF0Y2ggb24KIHJl LWVudHJ5CgpUaGUgRksgZmFzdC1wYXRoIGJhdGNoaW5nIGFkZGVkIGluIGI3YjI3ZWI0MWE1IHdy b3RlIHRoZSBpbmNvbWluZyByb3cKaW50byB0aGUgYmF0Y2ggYXJyYXkgYmVmb3JlIGNoZWNraW5n IHdoZXRoZXIgdGhlIGFycmF5IHdhcyBmdWxsOgoKICAgIGZwZW50cnktPmJhdGNoW2ZwZW50cnkt PmJhdGNoX2NvdW50XSA9IEV4ZWNDb3B5U2xvdEhlYXBUdXBsZShuZXdzbG90KTsKICAgIGZwZW50 cnktPmJhdGNoX2NvdW50Kys7CiAgICBpZiAoZnBlbnRyeS0+YmF0Y2hfY291bnQgPj0gUklfRkFT VFBBVEhfQkFUQ0hfU0laRSkKICAgICAgICByaV9GYXN0UGF0aEJhdGNoRmx1c2goZnBlbnRyeSwg ZmtfcmVsLCByaWluZm8pOwoKYmF0Y2hfY291bnQgaXMgcmVzZXQgdG8gemVybyBvbmx5IGF0IHRo ZSBlbmQgb2YgcmlfRmFzdFBhdGhCYXRjaEZsdXNoKCksCnNvIGl0IHJlbWFpbnMgYXQgUklfRkFT VFBBVEhfQkFUQ0hfU0laRSB0aHJvdWdob3V0IGEgZnVsbC1iYXRjaCBmbHVzaC4KQSBmbHVzaCBy dW5zIHVzZXItZGVmaW5lZCBjYXN0IGZ1bmN0aW9ucyBhbmQgZXF1YWxpdHkgb3BlcmF0b3JzOyBp ZiB0aGF0CnVzZXIgY29kZSBwZXJmb3JtcyBETUwgb24gdGhlIHNhbWUgRksgdGFibGUsIHJpX0Zh c3RQYXRoQmF0Y2hBZGQoKQpyZS1lbnRlcnMgd2l0aCBiYXRjaF9jb3VudCA9PSBSSV9GQVNUUEFU SF9CQVRDSF9TSVpFIGFuZCB3cml0ZXMgb25lIHBhc3QKdGhlIGVuZCBvZiB0aGUgYXJyYXksIGNv cnJ1cHRpbmcgdGhlIGFkamFjZW50IGJhdGNoX2NvdW50IGZpZWxkLiAgVGhpcwppcyByZWFjaGFi bGUgYnkgYW4gdW5wcml2aWxlZ2VkIHRhYmxlIG93bmVyIHZpYSBhbiBpbXBsaWNpdCBjYXN0IHdp dGggYQpQTC9wZ1NRTCBmdW5jdGlvbiBhbmQgY2F1c2VzIGEgU0lHU0VHViBpbiBhc3NlcnQtZW5h YmxlZCBidWlsZHMuCgpGaXggYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgYmF0Y2ggaXMgZnVsbCBh bmQgZmx1c2hpbmcgYmVmb3JlIHdyaXRpbmcKdGhlIG5ldyByb3csIGFuZCBieSBhZGRpbmcgYSAi Zmx1c2hpbmciIGZsYWcgdG8gUklfRmFzdFBhdGhFbnRyeSB0aGF0CnJvdXRlcyByZS1lbnRyYW50 IHJpX0Zhc3RQYXRoQmF0Y2hBZGQoKSBjYWxscyBvbiBhIGJ1c3kgZW50cnkgdG8gdGhlCnBlci1y b3cgcGF0aCAocmlfRmFzdFBhdGhDaGVjaykgaW5zdGVhZCBvZiB0b3VjaGluZyB0aGUgbWlkLWZs dXNoIGJhdGNoCmFycmF5LiAgVGhlIGZsYWcgaXMgc2V0IGFyb3VuZCB0aGUgcHJvYmUgaW4gcmlf RmFzdFBhdGhCYXRjaEZsdXNoKCkgYW5kCmNsZWFyZWQgaW4gYSBQR19GSU5BTExZLCB3aGljaCBh bHNvIHJlc2V0cyBiYXRjaF9jb3VudCwgc28gdGhlIGVudHJ5IGlzCmxlZnQgZW1wdHkgYW5kIHJl dXNhYmxlIGlmIGEgZmx1c2ggZXJyb3IgKGluY2x1ZGluZyBhIHJlcG9ydGVkIEZLCnZpb2xhdGlv bikgaXMgY2F1Z2h0IGJ5IGEgc2F2ZXBvaW50LgoKQWRkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJv dGggdGhlIHJlLWVudHJhbnQgZmx1c2ggYW5kIHJldXNlIG9mIGFuIGVudHJ5CmFmdGVyIGEgZmx1 c2ggZXJyb3IgY2F1Z2h0IGJ5IGEgc2F2ZXBvaW50LgoKUmVwb3J0ZWQtYnk6IE5pa29sYXkgU2Ft b2todmFsb3YgPG5pa0Bwb3N0Z3Jlcy5haT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQU01MjdkOWV4UkNkV3JoSk9uQXhrX3ZBQ2c3c3JfeVBvYUpwXyt1Q0ZZMHFQOHY9YXdAbWFp bC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAg ICB8IDU4ICsrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2ZvcmVpZ25fa2V5Lm91dCB8IDU2ICsrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbCAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrCiAz IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IGRjODljNjg2Mzk0Li40NTNiODNjZTg1ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTI0OSw2ICsyNDksMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgUklfRmFzdFBhdGhFbnRyeQogCSAqLwogCUhlYXBUdXBsZQliYXRjaFtSSV9G QVNUUEFUSF9CQVRDSF9TSVpFXTsKIAlpbnQJCQliYXRjaF9jb3VudDsKKworCS8qCisJICogdHJ1 ZSB3aGlsZSB0aGlzIGVudHJ5J3MgYmF0Y2ggaXMgYmVpbmcgZmx1c2hlZDsgZ3VhcmRzIGFnYWlu c3QKKwkgKiByZS1lbnRyYW50IHJpX0Zhc3RQYXRoQmF0Y2hBZGQgZnJvbSB1c2VyIGNvZGUgcnVu IGR1cmluZyB0aGUgZmx1c2guCisJICovCisJYm9vbAkJZmx1c2hpbmc7CiB9IFJJX0Zhc3RQYXRo RW50cnk7CiAKIC8qCkBAIC0yODYyLDE0ICsyODY4LDI2IEBAIHJpX0Zhc3RQYXRoQmF0Y2hBZGQo UklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlSSV9GYXN0UGF0aEVudHJ5ICpmcGVudHJ5ID0g cmlfRmFzdFBhdGhHZXRFbnRyeShyaWluZm8sIGZrX3JlbCk7CiAJTWVtb3J5Q29udGV4dCBvbGRj eHQ7CiAKKwkvKgorCSAqIElmIHRoaXMgZW50cnkgaXMgYWxyZWFkeSBiZWluZyBmbHVzaGVkLCBh IGNhc3QgZnVuY3Rpb24gb3IgYW4gb3BlcmF0b3IKKwkgKiBpbnZva2VkIGR1cmluZyB0aGUgZmx1 c2ggaGFzIHJlLWVudGVyZWQgd2l0aCBETUwgb24gdGhlIHNhbWUgRksuICBGYWxsCisJICogYmFj ayB0byB0aGUgcGVyLXJvdyBwYXRoIHJhdGhlciB0aGFuIHRvdWNoaW5nIHRoZSBiYXRjaCBhcnJh eSwgd2hpY2ggaXMKKwkgKiBtaWQtZmx1c2guCisJICovCisJaWYgKGZwZW50cnktPmZsdXNoaW5n KQorCXsKKwkJcmlfRmFzdFBhdGhDaGVjayhyaWluZm8sIGZrX3JlbCwgbmV3c2xvdCk7CisJCXJl dHVybjsKKwl9CisKKwlpZiAoZnBlbnRyeS0+YmF0Y2hfY291bnQgPj0gUklfRkFTVFBBVEhfQkFU Q0hfU0laRSkKKwkJcmlfRmFzdFBhdGhCYXRjaEZsdXNoKGZwZW50cnksIGZrX3JlbCwgcmlpbmZv KTsKKwogCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmcGVudHJ5LT5mbHVzaF9jeHQp OwogCWZwZW50cnktPmJhdGNoW2ZwZW50cnktPmJhdGNoX2NvdW50XSA9CiAJCUV4ZWNDb3B5U2xv dEhlYXBUdXBsZShuZXdzbG90KTsKIAlmcGVudHJ5LT5iYXRjaF9jb3VudCsrOwogCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjeHQpOwotCi0JaWYgKGZwZW50cnktPmJhdGNoX2NvdW50ID49IFJJ X0ZBU1RQQVRIX0JBVENIX1NJWkUpCi0JCXJpX0Zhc3RQYXRoQmF0Y2hGbHVzaChmcGVudHJ5LCBm a19yZWwsIHJpaW5mbyk7CiB9CiAKIC8qCkBAIC0yOTQ0LDEzICsyOTYyLDMwIEBAIHJpX0Zhc3RQ YXRoQmF0Y2hGbHVzaChSSV9GYXN0UGF0aEVudHJ5ICpmcGVudHJ5LCBSZWxhdGlvbiBma19yZWws CiAJfQogCUFzc2VydChyaWluZm8tPmZwbWV0YSk7CiAKLQkvKiBTa2lwIGFycmF5IG92ZXJoZWFk IGZvciBzaW5nbGUtcm93IGJhdGNoZXMuICovCi0JaWYgKHJpaW5mby0+bmtleXMgPT0gMSAmJiBm cGVudHJ5LT5iYXRjaF9jb3VudCA+IDEpCi0JCXZpb2xhdGlvbl9pbmRleCA9IHJpX0Zhc3RQYXRo Rmx1c2hBcnJheShmcGVudHJ5LCBma19zbG90LCByaWluZm8sCi0JCQkJCQkJCQkJCQlma19yZWws IHNuYXBzaG90LCBzY2FuZGVzYyk7Ci0JZWxzZQotCQl2aW9sYXRpb25faW5kZXggPSByaV9GYXN0 UGF0aEZsdXNoTG9vcChmcGVudHJ5LCBma19zbG90LCByaWluZm8sCi0JCQkJCQkJCQkJCSAgIGZr X3JlbCwgc25hcHNob3QsIHNjYW5kZXNjKTsKKwkvKgorCSAqIFRoZSBwcm9iZSBydW5zIHVzZXIt ZGVmaW5lZCBjYXN0IGFuZCBlcXVhbGl0eSBmdW5jdGlvbnMuICBTZXQgdGhlCisJICogZmx1c2hp bmcgZmxhZyBhcm91bmQgaXQgc28gYSByZS1lbnRyYW50IHJpX0Zhc3RQYXRoQmF0Y2hBZGQgb24g dGhpcworCSAqIGVudHJ5IHRha2VzIHRoZSBwZXItcm93IHBhdGgsIGFuZCBjbGVhciBpdCBldmVu IG9uIGVycm9yIHNvIHRoZSBlbnRyeQorCSAqIGlzIHJldXNhYmxlIGlmIHRoZSBlcnJvciBpcyBj YXVnaHQgYnkgYSBzYXZlcG9pbnQuCisJICovCisJQXNzZXJ0KCFmcGVudHJ5LT5mbHVzaGluZyk7 CisJZnBlbnRyeS0+Zmx1c2hpbmcgPSB0cnVlOworCVBHX1RSWSgpOworCXsKKwkJLyogU2tpcCBh cnJheSBvdmVyaGVhZCBmb3Igc2luZ2xlLXJvdyBiYXRjaGVzLiAqLworCQlpZiAocmlpbmZvLT5u a2V5cyA9PSAxICYmIGZwZW50cnktPmJhdGNoX2NvdW50ID4gMSkKKwkJCXZpb2xhdGlvbl9pbmRl eCA9IHJpX0Zhc3RQYXRoRmx1c2hBcnJheShmcGVudHJ5LCBma19zbG90LCByaWluZm8sCisJCQkJ CQkJCQkJCQkJZmtfcmVsLCBzbmFwc2hvdCwgc2NhbmRlc2MpOworCQllbHNlCisJCQl2aW9sYXRp b25faW5kZXggPSByaV9GYXN0UGF0aEZsdXNoTG9vcChmcGVudHJ5LCBma19zbG90LCByaWluZm8s CisJCQkJCQkJCQkJCQkgICBma19yZWwsIHNuYXBzaG90LCBzY2FuZGVzYyk7CisJfQorCVBHX0ZJ TkFMTFkoKTsKKwl7CisJCWZwZW50cnktPmZsdXNoaW5nID0gZmFsc2U7CisJCWZwZW50cnktPmJh dGNoX2NvdW50ID0gMDsKKwl9CisJUEdfRU5EX1RSWSgpOwogCiAJU2V0VXNlcklkQW5kU2VjQ29u dGV4dChzYXZlZF91c2VyaWQsIHNhdmVkX3NlY19jb250ZXh0KTsKIAlVbnJlZ2lzdGVyU25hcHNo b3Qoc25hcHNob3QpOwpAQCAtMjk2Niw5ICszMDAxLDYgQEAgcmlfRmFzdFBhdGhCYXRjaEZsdXNo KFJJX0Zhc3RQYXRoRW50cnkgKmZwZW50cnksIFJlbGF0aW9uIGZrX3JlbCwKIAogCU1lbW9yeUNv bnRleHRSZXNldChmcGVudHJ5LT5mbHVzaF9jeHQpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjeHQpOwotCi0JLyogUmVzZXQuICovCi0JZnBlbnRyeS0+YmF0Y2hfY291bnQgPSAwOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2tleS5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5Lm91dAppbmRleCA4YjNi MjY4ZGUwZi4uZmE4MGQ5YzkxNWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9yZWlnbl9rZXkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWln bl9rZXkub3V0CkBAIC0zNzEyLDMgKzM3MTIsNTkgQEAgSU5TRVJUIElOVE8gZnBfcGtfZHVwIFZB TFVFUyAoMSk7CiBDUkVBVEUgVEFCTEUgZnBfZmtfZHVwIChhIGludCBSRUZFUkVOQ0VTIGZwX3Br X2R1cCk7CiBJTlNFUlQgSU5UTyBmcF9ma19kdXAgU0VMRUNUIDEgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTAwKTsKIERST1AgVEFCTEUgZnBfZmtfZHVwLCBmcF9wa19kdXA7CistLSBSZS1lbnRy YW50IEZLIGZhc3QtcGF0aDogRE1MIG9uIHRoZSBzYW1lIEZLIHRhYmxlIGZyb20gYSBjYXN0IGZ1 bmN0aW9uCistLSBkdXJpbmcgYSBmdWxsLWJhdGNoIGZsdXNoIG11c3Qgbm90IGNvcnJ1cHQgdGhl IGJhdGNoIGFycmF5LgorQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfcGsgKGlkIGludCBQUklNQVJZ IEtFWSk7CitJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X3BrIFZBTFVFUyAoMSksICgyKTsKK0NSRUFU RSBUWVBFIGZwX3ZjaCBBUyAodiBpbnQpOworQ1JFQVRFIEZVTkNUSU9OIGZwX3ZjYXN0KGZwX3Zj aCkgUkVUVVJOUyBpbnQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBJRiAkMS52 ID0gMSBUSEVOCisgICAgICAgIElOU0VSVCBJTlRPIGZwX3JlZW50cnlfZmsgVkFMVUVTIChyb3co Mik6OmZwX3ZjaCk7CisgICAgRU5EIElGOworICAgIFJFVFVSTiAkMS52OworRU5EJCQ7CitDUkVB VEUgQ0FTVCAoZnBfdmNoIEFTIGludCkgV0lUSCBGVU5DVElPTiBmcF92Y2FzdChmcF92Y2gpIEFT IElNUExJQ0lUOworQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfZmsgKGEgZnBfdmNoCisgICAgUkVG RVJFTkNFUyBmcF9yZWVudHJ5X3BrIChpZCkpOworLS0gRmlsbCBleGFjdGx5IG9uZSBiYXRjaCBz byB0aGUgZmx1c2ggZmlyZXM7IHRoZSBjYXN0IHJlLWVudGVycyB3aXRoIERNTAorLS0gb24gdGhl IHNhbWUgRksgYW5kIG11c3QgdGFrZSB0aGUgcGVyLXJvdyBwYXRoLgorSU5TRVJUIElOVE8gZnBf cmVlbnRyeV9mayBTRUxFQ1Qgcm93KDEpOjpmcF92Y2ggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NjQpOworU0VMRUNUIGEsIGNvdW50KCopIEZST00gZnBfcmVlbnRyeV9mayBHUk9VUCBCWSBhIE9S REVSIEJZIGE7CisgIGEgIHwgY291bnQgCistLS0tLSstLS0tLS0tCisgKDEpIHwgICAgNjQKKyAo MikgfCAgICA2NAorKDIgcm93cykKKworRFJPUCBUQUJMRSBmcF9yZWVudHJ5X2ZrLCBmcF9yZWVu dHJ5X3BrOworRFJPUCBDQVNUIChmcF92Y2ggQVMgaW50KTsKK0RST1AgRlVOQ1RJT04gZnBfdmNh c3QoZnBfdmNoKTsKK0RST1AgVFlQRSBmcF92Y2g7CistLSBGbHVzaCBlcnJvciBjYXVnaHQgYnkg YSBzYXZlcG9pbnQgbXVzdCBsZWF2ZSB0aGUgZW50cnkgZW1wdHkgYW5kIHJldXNhYmxlLgorQ1JF QVRFIFRBQkxFIGZwX3JlZW50cnlfcGsyIChpZCBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJUIElO VE8gZnBfcmVlbnRyeV9wazIgVkFMVUVTICgxKTsKK0NSRUFURSBUQUJMRSBmcF9yZWVudHJ5X2Zr MiAoYSBpbnQgUkVGRVJFTkNFUyBmcF9yZWVudHJ5X3BrMiAoaWQpKTsKK0RPICQkCitCRUdJTgor ICAgIC0tIEEgYmF0Y2ggY29udGFpbmluZyBhIHZpb2xhdGluZyByb3c7IHRoZSBmbHVzaCByZXBv cnRzIHRoZSB2aW9sYXRpb24uCisgICAgQkVHSU4KKyAgICAgICAgSU5TRVJUIElOVE8gZnBfcmVl bnRyeV9mazIgU0VMRUNUIENBU0UgV0hFTiBnID0gMzIgVEhFTiA5OTkgRUxTRSAxIEVORAorICAg ICAgICAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjQpIGc7CisgICAgRVhDRVBUSU9OIFdI RU4gZm9yZWlnbl9rZXlfdmlvbGF0aW9uIFRIRU4KKyAgICAgICAgUkFJU0UgTk9USUNFICdjYXVn aHQgZmsgdmlvbGF0aW9uJzsKKyAgICBFTkQ7CisKKwktLSBSZXVzZSB0aGUgc2FtZSBGSyB3aXRo IGEgZnVsbCBiYXRjaCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4gIFRoZQorCS0tIGVudHJ5IG11 c3QgYmUgZW1wdHkgYWZ0ZXIgdGhlIGNhdWdodCB2aW9sYXRpb246IG5vIHN0YWxlIHJvd3MgZnJv bSB0aGUKKwktLSByb2xsZWQtYmFjayBiYXRjaCAoaW4gcGFydGljdWxhciBubyA5OTkpLCBhbmQg bm8gYXJyYXkgb3ZlcmZsb3cuCisgICAgSU5TRVJUIElOVE8gZnBfcmVlbnRyeV9mazIgU0VMRUNU IDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjQpOworRU5EJCQ7CitOT1RJQ0U6ICBjYXVnaHQg ZmsgdmlvbGF0aW9uCitTRUxFQ1QgY291bnQoKiksIG1heChhKSBGUk9NIGZwX3JlZW50cnlfZmsy OyAgLS0gNjQgcm93cywgbWF4IDEKKyBjb3VudCB8IG1heCAKKy0tLS0tLS0rLS0tLS0KKyAgICA2 NCB8ICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIGZwX3JlZW50cnlfZmsyLCBmcF9yZWVudHJ5 X3BrMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbAppbmRleCA3ZWI4NmIxODhmMC4u MGYyY2U4Zjc2ZjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwKQEAgLTI2ODAs MyArMjY4MCw0OSBAQCBJTlNFUlQgSU5UTyBmcF9wa19kdXAgVkFMVUVTICgxKTsKIENSRUFURSBU QUJMRSBmcF9ma19kdXAgKGEgaW50IFJFRkVSRU5DRVMgZnBfcGtfZHVwKTsKIElOU0VSVCBJTlRP IGZwX2ZrX2R1cCBTRUxFQ1QgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOwogRFJPUCBU QUJMRSBmcF9ma19kdXAsIGZwX3BrX2R1cDsKKworLS0gUmUtZW50cmFudCBGSyBmYXN0LXBhdGg6 IERNTCBvbiB0aGUgc2FtZSBGSyB0YWJsZSBmcm9tIGEgY2FzdCBmdW5jdGlvbgorLS0gZHVyaW5n IGEgZnVsbC1iYXRjaCBmbHVzaCBtdXN0IG5vdCBjb3JydXB0IHRoZSBiYXRjaCBhcnJheS4KK0NS RUFURSBUQUJMRSBmcF9yZWVudHJ5X3BrIChpZCBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJUIElO VE8gZnBfcmVlbnRyeV9wayBWQUxVRVMgKDEpLCAoMik7CitDUkVBVEUgVFlQRSBmcF92Y2ggQVMg KHYgaW50KTsKK0NSRUFURSBGVU5DVElPTiBmcF92Y2FzdChmcF92Y2gpIFJFVFVSTlMgaW50IExB TkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgSUYgJDEudiA9IDEgVEhFTgorICAgICAg ICBJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X2ZrIFZBTFVFUyAocm93KDIpOjpmcF92Y2gpOworICAg IEVORCBJRjsKKyAgICBSRVRVUk4gJDEudjsKK0VORCQkOworQ1JFQVRFIENBU1QgKGZwX3ZjaCBB UyBpbnQpIFdJVEggRlVOQ1RJT04gZnBfdmNhc3QoZnBfdmNoKSBBUyBJTVBMSUNJVDsKK0NSRUFU RSBUQUJMRSBmcF9yZWVudHJ5X2ZrIChhIGZwX3ZjaAorICAgIFJFRkVSRU5DRVMgZnBfcmVlbnRy eV9wayAoaWQpKTsKKy0tIEZpbGwgZXhhY3RseSBvbmUgYmF0Y2ggc28gdGhlIGZsdXNoIGZpcmVz OyB0aGUgY2FzdCByZS1lbnRlcnMgd2l0aCBETUwKKy0tIG9uIHRoZSBzYW1lIEZLIGFuZCBtdXN0 IHRha2UgdGhlIHBlci1yb3cgcGF0aC4KK0lOU0VSVCBJTlRPIGZwX3JlZW50cnlfZmsgU0VMRUNU IHJvdygxKTo6ZnBfdmNoIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY0KTsKK1NFTEVDVCBhLCBj b3VudCgqKSBGUk9NIGZwX3JlZW50cnlfZmsgR1JPVVAgQlkgYSBPUkRFUiBCWSBhOworRFJPUCBU QUJMRSBmcF9yZWVudHJ5X2ZrLCBmcF9yZWVudHJ5X3BrOworRFJPUCBDQVNUIChmcF92Y2ggQVMg aW50KTsKK0RST1AgRlVOQ1RJT04gZnBfdmNhc3QoZnBfdmNoKTsKK0RST1AgVFlQRSBmcF92Y2g7 CisKKy0tIEZsdXNoIGVycm9yIGNhdWdodCBieSBhIHNhdmVwb2ludCBtdXN0IGxlYXZlIHRoZSBl bnRyeSBlbXB0eSBhbmQgcmV1c2FibGUuCitDUkVBVEUgVEFCTEUgZnBfcmVlbnRyeV9wazIgKGlk IGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X3BrMiBWQUxVRVMgKDEp OworQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfZmsyIChhIGludCBSRUZFUkVOQ0VTIGZwX3JlZW50 cnlfcGsyIChpZCkpOworRE8gJCQKK0JFR0lOCisgICAgLS0gQSBiYXRjaCBjb250YWluaW5nIGEg dmlvbGF0aW5nIHJvdzsgdGhlIGZsdXNoIHJlcG9ydHMgdGhlIHZpb2xhdGlvbi4KKyAgICBCRUdJ TgorICAgICAgICBJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X2ZrMiBTRUxFQ1QgQ0FTRSBXSEVOIGcg PSAzMiBUSEVOIDk5OSBFTFNFIDEgRU5ECisgICAgICAgICAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2NCkgZzsKKyAgICBFWENFUFRJT04gV0hFTiBmb3JlaWduX2tleV92aW9sYXRpb24gVEhF TgorICAgICAgICBSQUlTRSBOT1RJQ0UgJ2NhdWdodCBmayB2aW9sYXRpb24nOworICAgIEVORDsK KworCS0tIFJldXNlIHRoZSBzYW1lIEZLIHdpdGggYSBmdWxsIGJhdGNoIGluIHRoZSBzYW1lIHRy YW5zYWN0aW9uLiAgVGhlCisJLS0gZW50cnkgbXVzdCBiZSBlbXB0eSBhZnRlciB0aGUgY2F1Z2h0 IHZpb2xhdGlvbjogbm8gc3RhbGUgcm93cyBmcm9tIHRoZQorCS0tIHJvbGxlZC1iYWNrIGJhdGNo IChpbiBwYXJ0aWN1bGFyIG5vIDk5OSksIGFuZCBubyBhcnJheSBvdmVyZmxvdy4KKyAgICBJTlNF UlQgSU5UTyBmcF9yZWVudHJ5X2ZrMiBTRUxFQ1QgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2 NCk7CitFTkQkJDsKK1NFTEVDVCBjb3VudCgqKSwgbWF4KGEpIEZST00gZnBfcmVlbnRyeV9mazI7 ICAtLSA2NCByb3dzLCBtYXggMQorRFJPUCBUQUJMRSBmcF9yZWVudHJ5X2ZrMiwgZnBfcmVlbnRy eV9wazI7Ci0tIAoyLjQ3LjMKCg== --00000000000064ee8e0653d22437 Content-Type: application/octet-stream; name="v1-0002-Confine-RI-fast-path-batching-to-the-top-transact.patch" Content-Disposition: attachment; filename="v1-0002-Confine-RI-fast-path-batching-to-the-top-transact.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq6oahmm0 RnJvbSBkMTM2YThmNWVkYzcyMzg5OWRhYWZiNTkzNzc5MzBlZTdmZWMzODM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgOSBKdW4gMjAyNiAyMjoxMTo1NCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEg Mi8yXSBDb25maW5lIFJJIGZhc3QtcGF0aCBiYXRjaGluZyB0byB0aGUgdG9wIHRyYW5zYWN0aW9u CiBsZXZlbAoKVGhlIEZLIGZhc3QtcGF0aCBiYXRjaGluZyBhZGRlZCBpbiBiN2IyN2ViNDFhNSBi dWZmZXJzIHJvd3MgaW4gYQp0cmFuc2FjdGlvbi1saXZlZCBjYWNoZSAocmlfZmFzdHBhdGhfY2Fj aGUpIGtleWVkIGJ5IGNvbnN0cmFpbnQgT0lELgpSdW5uaW5nIHVzZXItZGVmaW5lZCBjYXN0IGFu ZCBlcXVhbGl0eSBmdW5jdGlvbnMgZHVyaW5nIGEgYmF0Y2ggZmx1c2gsCnRvZ2V0aGVyIHdpdGgg dGhlIGNhY2hlJ3MgbGlmZXRpbWUgYW5kIGl0ZXJhdGlvbiwgZXhwb3NlZCB0d28gZGVmZWN0cwpy ZWFjaGFibGUgYnkgYW4gdW5wcml2aWxlZ2VkIHRhYmxlIG93bmVyLgoKRmlyc3QsIG9uIHN1YnRy YW5zYWN0aW9uIGFib3J0IHJpX0Zhc3RQYXRoU3ViWGFjdENhbGxiYWNrIGRpc2NhcmRlZCB0aGUK ZW50aXJlIGNhY2hlLiAgQW4gZW50cnkncyBiYXRjaCBob2xkcyByb3dzIGJ1ZmZlcmVkIGJ5IHRo ZSBlbmNsb3NpbmcKdHJhbnNhY3Rpb24sIG5vdCBqdXN0IHRoZSBhYm9ydGluZyBzdWJ4YWN0IC0t IHRoZSBjYWNoZSBpcyBrZXllZCBieQpjb25zdHJhaW50LCBzbyBhIHNpbmdsZSBlbnRyeSBjYW4g bWl4IHJvd3MgZnJvbSBtdWx0aXBsZSBzdWJ4YWN0IGxldmVscy4KQW4gaW50ZXJuYWwgc3VieGFj dCBhYm9ydCBkdXJpbmcgYWZ0ZXItdHJpZ2dlciBmaXJpbmcgKGUuZy4gYSBQTC9wZ1NRTApCRUdJ TiAuLi4gRVhDRVBUSU9OIGJsb2NrKSB0aGVyZWZvcmUgZHJvcHBlZCBidWZmZXJlZCByb3dzIG9m IHRoZSBvdXRlcgp0cmFuc2FjdGlvbiB3aXRob3V0IHJ1bm5pbmcgdGhlaXIgRksgY2hlY2tzLCBs ZXR0aW5nIG9ycGhhbiByb3dzIGNvbW1pdApiZWhpbmQgYSBjb25zdHJhaW50IHRoYXQgc3RpbGwg cmVwb3J0ZWQgaXRzZWxmIHZhbGlkLiAgVGhlIGRpc2NhcmQgYWxzbwpsZWZ0IHJlbGF0aW9ucyBv cGVuZWQgYnkgdGhlIGJhdGNoIHVuY2xvc2VkLCBwcm9kdWNpbmcgInJlc291cmNlIHdhcyBub3QK Y2xvc2VkIiB3YXJuaW5ncy4KClNlY29uZCwgcmlfRmFzdFBhdGhFbmRCYXRjaCBmbHVzaGVzIGJ5 IGl0ZXJhdGluZyB0aGUgY2FjaGUgd2l0aApoYXNoX3NlcV9zZWFyY2guICBJZiBmbHVzaC10aW1l IHVzZXIgY29kZSBpbnNlcnRzIGludG8gYSBkaWZmZXJlbnQKZmFzdC1wYXRoIEZLIHRhYmxlLCBh IG5ldyBlbnRyeSBpcyBhZGRlZCB0byB0aGUgY2FjaGUgbWlkLXNjYW47IGl0IG1heQpsYW5kIGlu IGEgYnVja2V0IHRoZSBzY2FuIGhhcyBhbHJlYWR5IHBhc3NlZCBhbmQgbmV2ZXIgYmUgcmVhY2hl ZCwgYW5kCnJpX0Zhc3RQYXRoVGVhcmRvd24gdGhlbiBkZXN0cm95cyB0aGUgY2FjaGUgd2l0aG91 dCBmbHVzaGluZyBpdCwKc2lsZW50bHkgZHJvcHBpbmcgdGhhdCBjaGVjay4KCkNsZWFubHkgdW53 aW5kaW5nIHRoZSBjYWNoZSBvbiBzdWJ4YWN0IGFib3J0IHdvdWxkIHJlcXVpcmUgdHJhY2tpbmcg dGhlCm9yaWdpbmF0aW5nIHN1YnhhY3Qgb2YgZWFjaCBidWZmZXJlZCByb3csIHNpbmNlIHJvd3Mg ZnJvbSBkaWZmZXJlbnQKbGV2ZWxzIHNoYXJlIGFuIGVudHJ5ICh0aGUgY2FjaGUgaXMga2V5ZWQg YnkgY29uc3RyYWludCkgYW5kIGRlZmVycmVkCmNvbnN0cmFpbnRzIGNhbm5vdCBiZSBmbHVzaGVk IGVhcmx5IGF0IGEgc3VieGFjdCBib3VuZGFyeS4gIFJhdGhlciB0aGFuCmFkZCB0aGF0IGJvb2tr ZWVwaW5nLCBjb25maW5lIGJhdGNoaW5nIHRvIHRoZSB0b3AgdHJhbnNhY3Rpb24gbGV2ZWw6IGlu ClJJX0ZLZXlfY2hlY2ssIHdoZW4gR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVzdExldmVsKCkgPiAx LCB1c2UgdGhlCnBlci1yb3cgZmFzdCBwYXRoIChyaV9GYXN0UGF0aENoZWNrKSBpbnN0ZWFkIG9m IGJ1ZmZlcmluZy4gIFJvd3MgY2hlY2tlZAppbnNpZGUgYSBzdWJ0cmFuc2FjdGlvbiBhcmUgdGhl biB2ZXJpZmllZCBpbW1lZGlhdGVseSBhbmQgcm9sbCBiYWNrCmNsZWFubHkgd2l0aCB0aGVpciBz dWJ0cmFuc2FjdGlvbiwgYW5kIHRoZSBjYWNoZSBvbmx5IGV2ZXIgaG9sZHMKdG9wLWxldmVsIHJv d3MuICBXaXRoIHRoZSBjYWNoZSBjb25maW5lZCB0byB0aGUgdG9wIGxldmVsLCBhCnN1YnRyYW5z YWN0aW9uIGFib3J0IGhhcyBub3RoaW5nIG9mIGl0cyBvd24gdG8gZGlzY2FyZCwgc28KcmlfRmFz dFBhdGhTdWJYYWN0Q2FsbGJhY2sgaXMgcmVtb3ZlZCBhbG9uZyB3aXRoIGl0cyByZWdpc3RyYXRp b24uCgpGb3IgdGhlIHNlY29uZCBkZWZlY3QsIGFkZCBhIGNhY2hlLXdpZGUgZmxhZyAocmlfZmFz dHBhdGhfZmx1c2hpbmcpIHNldAp3aGlsZSByaV9GYXN0UGF0aEVuZEJhdGNoIGl0ZXJhdGVzIHRo ZSBjYWNoZS4gIEEgcmUtZW50cmFudCBGSyBjaGVjawphcnJpdmluZyB3aGlsZSB0aGUgZmxhZyBp cyBzZXQgdGFrZXMgdGhlIHBlci1yb3cgcGF0aCByYXRoZXIgdGhhbiBhZGRpbmcKYW4gZW50cnkg dG8gdGhlIGNhY2hlIGJlaW5nIHNjYW5uZWQsIHNvIG5vIGVudHJ5IGNhbiBiZSBtaXNzZWQgYW5k IHRvcm4KZG93biB1bmZsdXNoZWQuICBUaGUgZmxhZyBpcyBjbGVhcmVkIGluIGEgUEdfRklOQUxM WSBzbyBhIGZsdXNoIHRoYXQKdGhyb3dzIChhIHJlcG9ydGVkIHZpb2xhdGlvbiBvciBhbiBlcnJv ciBmcm9tIHVzZXIgY29kZSkgZG9lcyBub3QgbGVhdmUKaXQgc3R1Y2suCgpUaGUgcGVyLXJvdyBm YXN0IHBhdGggc3RpbGwgYnlwYXNzZXMgU1BJIGFuZCBzdGF5cyB3ZWxsIGFoZWFkIG9mIHRoZQpw cmUtMTkgU1BJLWJhc2VkIGNoZWNrLiAgQSBmdWxsZXIgZml4IHRoYXQgcHJlc2VydmVzIGJhdGNo aW5nIGFjcm9zcwpzdWJ0cmFuc2FjdGlvbnMgLS0gd2hldGhlciBieSB0cmFja2luZyB0aGUgb3Jp Z2luYXRpbmcgc3VieGFjdCBvZiBlYWNoCmJ1ZmZlcmVkIHJvdyBvciBieSBwZXItc3VieGFjdCBj YWNoZSBzdGFja3MgbWVyZ2VkIGludG8gdGhlIHBhcmVudCBvbgpjb21taXQgLS0gaXMgbGVmdCBm b3IgYSBmdXR1cmUgcmVsZWFzZS4KClRoZSBzdWJ0cmFuc2FjdGlvbi1hYm9ydCBjYXNlIGlzIGNv dmVyZWQgYnkgYSBuZXcgcmVncmVzc2lvbiB0ZXN0LiAgVGhlCm1pZC1zY2FuIGNyb3NzLXRhYmxl IGNhc2UgZGVwZW5kcyBvbiBoYXNoIGJ1Y2tldCBwbGFjZW1lbnQgYW5kIHNvIGlzIG5vdApyZWxp YWJseSByZXByb2R1Y2libGUgaW4gYSBwb3J0YWJsZSB0ZXN0LCBidXQgdGhlIGZsYWcgcHJldmVu dHMgaXQgYnkKY29uc3RydWN0aW9uLgoKUmVwb3J0ZWQtYnk6IE5pa29sYXkgU2Ftb2todmFsb3Yg PG5pa0Bwb3N0Z3Jlcy5haT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQU01Mjdk OWV4UkNkV3JoSk9uQXhrX3ZBQ2c3c3JfeVBvYUpwXyt1Q0ZZMHFQOHY9YXdAbWFpbC5nbWFpbC5j b20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICB8IDc3ICsr KysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25f a2V5Lm91dCB8IDI0ICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNx bCAgICAgIHwgMjMgKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAy NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJp Z2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDQ1M2I4 M2NlODVkLi45YjQ5ZDg3Mjc5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAg LTI2Nyw2ICsyNjcsNyBAQCBzdGF0aWMgZGNsaXN0X2hlYWQgcmlfY29uc3RyYWludF9jYWNoZV92 YWxpZF9saXN0OwogCiBzdGF0aWMgSFRBQiAqcmlfZmFzdHBhdGhfY2FjaGUgPSBOVUxMOwogc3Rh dGljIGJvb2wgcmlfZmFzdHBhdGhfY2FsbGJhY2tfcmVnaXN0ZXJlZCA9IGZhbHNlOworc3RhdGlj IGJvb2wgcmlfZmFzdHBhdGhfZmx1c2hpbmcgPSBmYWxzZTsKIAogLyoKICAqIExvY2FsIGZ1bmN0 aW9uIHByb3RvdHlwZXMKQEAgLTQ2OSwxNCArNDcwLDMxIEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dl ckRhdGEgKnRyaWdkYXRhKQogCSAqLwogCWlmIChyaV9mYXN0cGF0aF9pc19hcHBsaWNhYmxlKHJp aW5mbykpCiAJewotCQlpZiAoQWZ0ZXJUcmlnZ2VySXNBY3RpdmUoKSkKKwkJaWYgKEFmdGVyVHJp Z2dlcklzQWN0aXZlKCkgJiYKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpID09 IDEgJiYKKwkJCSFyaV9mYXN0cGF0aF9mbHVzaGluZykKIAkJewogCQkJLyogQmF0Y2hlZCBwYXRo OiBidWZmZXIgYW5kIHByb2JlIGluIGdyb3VwcyAqLwogCQkJcmlfRmFzdFBhdGhCYXRjaEFkZChy aWluZm8sIGZrX3JlbCwgbmV3c2xvdCk7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkvKiBBTFRFUiBU QUJMRSB2YWxpZGF0aW9uOiBwZXItcm93LCBubyBjYWNoZSAqLworCQkJLyoKKwkJCSAqIFBlci1y b3cgcGF0aCwgdXNlZCB3aGVuIGJhdGNoaW5nIGlzIG5vdCBzYWZlIG9yIG5vdAorCQkJICogYXBw bGljYWJsZToKKwkJCSAqCisJCQkgKiAtIEFMVEVSIFRBQkxFIHZhbGlkYXRpb24sIHdoZXJlIG5v IGFmdGVyLXRyaWdnZXIgZmlyaW5nIGlzCisJCQkgKiAgIGFjdGl2ZTsKKwkJCSAqCisJCQkgKiAt IGFueSBGSyBjaGVjayBpbnNpZGUgYSBzdWJ0cmFuc2FjdGlvbiwgc2luY2UgdGhlIGJhdGNoIGNh Y2hlCisJCQkgKiAgIGlzIGNvbmZpbmVkIHRvIHRoZSB0b3AgdHJhbnNhY3Rpb24gbGV2ZWwgKGl0 IGNhbm5vdCBiZQorCQkJICogICBjbGVhbmx5IHVud291bmQgb24gc3VieGFjdCBhYm9ydCk7CisJ CQkgKgorCQkJICogLSBhIHJlLWVudHJhbnQgY2hlY2sgZnJvbSB1c2VyIGNhc3Qvb3BlcmF0b3Ig Y29kZSBydW5uaW5nCisJCQkgKiAgIGR1cmluZyBhIGJhdGNoIGZsdXNoLCBzaW5jZSBhZGRpbmcg YSBjYWNoZSBlbnRyeSB3aGlsZQorCQkJICogICByaV9GYXN0UGF0aEVuZEJhdGNoIGlzIGl0ZXJh dGluZyB0aGUgY2FjaGUgY291bGQgbGVhdmUgaXQKKwkJCSAqICAgdW5mbHVzaGVkLgorCQkJICov CiAJCQlyaV9GYXN0UGF0aENoZWNrKHJpaW5mbywgZmtfcmVsLCBuZXdzbG90KTsKIAkJfQogCQly ZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOwpAQCAtNDE3MCwxOSArNDE4OCw0MSBAQCByaV9G YXN0UGF0aEVuZEJhdGNoKHZvaWQgKmFyZykKIAlpZiAocmlfZmFzdHBhdGhfY2FjaGUgPT0gTlVM TCkKIAkJcmV0dXJuOwogCi0JLyogRmx1c2ggYW55IHBhcnRpYWwgYmF0Y2hlcyAtLSBjYW4gdGhy b3cgRVJST1IgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJpX2Zhc3RwYXRoX2NhY2hlKTsK LQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCS8q CisJICogU2V0IGEgZmxhZyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBzY2FuIHNvIHRoYXQgYW55 IEZLIGNoZWNrIHRyaWdnZXJlZAorCSAqIGJ5IHVzZXIgY2FzdCBvciBvcGVyYXRvciBjb2RlIGR1 cmluZyBhIGZsdXNoIHRha2VzIHRoZSBwZXItcm93IHBhdGgKKwkgKiBpbnN0ZWFkIG9mIGFkZGlu ZyBhIG5ldyBlbnRyeSB0byB0aGUgY2FjaGUgd2UgYXJlIGl0ZXJhdGluZy4gIEEgbmV3CisJICog ZW50cnkgY291bGQgbGFuZCBpbiBhbiBhbHJlYWR5LXNjYW5uZWQgYnVja2V0IGFuZCB0aGVuIGJl IHRvcm4gZG93bgorCSAqIHVuZmx1c2hlZCBiZWxvdy4KKwkgKgorCSAqIFRoZSBmbHVzaCBjYW4g dGhyb3cgRVJST1IgKGEgcmVwb3J0ZWQgY29uc3RyYWludCB2aW9sYXRpb24sIG9yIGFuIGVycm9y CisJICogZnJvbSB0aGUgdXNlciBjb2RlIGl0IHJ1bnMpLiAgSW4gdGhhdCBjYXNlIHJpX0Zhc3RQ YXRoVGVhcmRvd24gYmVsb3cgaXMKKwkgKiBza2lwcGVkOyB0aGUgUmVzb3VyY2VPd25lciBhbmQg dGhlIHRyYW5zYWN0aW9uLWVuZCBjYWxsYmFjayBoYW5kbGUKKwkgKiByZXNvdXJjZSBjbGVhbnVw IG9uIHRoZSBhYm9ydCBwYXRoLiAgVGhlIFBHX0ZJTkFMTFkgb25seSByZXNldHMgdGhlCisJICog ZmxhZyBhbmQgZGVsaWJlcmF0ZWx5IGRvZXMgbm90IGF0dGVtcHQgdGVhcmRvd24uCisJICovCisJ QXNzZXJ0KCFyaV9mYXN0cGF0aF9mbHVzaGluZyk7CisJcmlfZmFzdHBhdGhfZmx1c2hpbmcgPSB0 cnVlOworCVBHX1RSWSgpOwogCXsKLQkJaWYgKGVudHJ5LT5iYXRjaF9jb3VudCA+IDApCisJCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgcmlfZmFzdHBhdGhfY2FjaGUpOworCQl3aGlsZSAoKGVudHJ5 ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQogCQl7Ci0JCQlSZWxhdGlvbglm a19yZWwgPSB0YWJsZV9vcGVuKGVudHJ5LT5ma19yZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKLQkJ CVJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8gPSByaV9Mb2FkQ29uc3RyYWludEluZm8oZW50cnkt PmNvbm9pZCk7CisJCQlpZiAoZW50cnktPmJhdGNoX2NvdW50ID4gMCkKKwkJCXsKKwkJCQlSZWxh dGlvbglma19yZWwgPSB0YWJsZV9vcGVuKGVudHJ5LT5ma19yZWxpZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJCQlSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvID0gcmlfTG9hZENvbnN0cmFpbnRJbmZv KGVudHJ5LT5jb25vaWQpOwogCi0JCQlyaV9GYXN0UGF0aEJhdGNoRmx1c2goZW50cnksIGZrX3Jl bCwgcmlpbmZvKTsKLQkJCXRhYmxlX2Nsb3NlKGZrX3JlbCwgTm9Mb2NrKTsKKwkJCQlyaV9GYXN0 UGF0aEJhdGNoRmx1c2goZW50cnksIGZrX3JlbCwgcmlpbmZvKTsKKwkJCQl0YWJsZV9jbG9zZShm a19yZWwsIE5vTG9jayk7CisJCQl9CiAJCX0KIAl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJcmlf ZmFzdHBhdGhfZmx1c2hpbmcgPSBmYWxzZTsKKwl9CisJUEdfRU5EX1RSWSgpOwogCiAJcmlfRmFz dFBhdGhUZWFyZG93bigpOwogfQpAQCAtNDIzNiwyMiArNDI3Niw2IEBAIHJpX0Zhc3RQYXRoWGFj dENhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQogCXJpX2Zhc3RwYXRoX2NhbGxi YWNrX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQKLXJpX0Zhc3RQYXRoU3Vi WGFjdENhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1Ymlk LAotCQkJCQkJICAgU3ViVHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJpZCwgdm9pZCAqYXJnKQotewot CWlmIChldmVudCA9PSBTVUJYQUNUX0VWRU5UX0FCT1JUX1NVQikKLQl7Ci0JCS8qCi0JCSAqIFJl c291cmNlT3duZXIgYWxyZWFkeSByZWxlYXNlZCByZWxhdGlvbnMuICBOVUxMIHRoZSBzdGF0aWMg cG9pbnRlcnMKLQkJICogc28gdGhlIHN0aWxsLXJlZ2lzdGVyZWQgYmF0Y2ggY2FsbGJhY2sgYmVj b21lcyBhIG5vLW9wIGZvciB0aGUgcmVzdAotCQkgKiBvZiB0aGlzIHRyYW5zYWN0aW9uLgotCQkg Ki8KLQkJcmlfZmFzdHBhdGhfY2FjaGUgPSBOVUxMOwotCQlyaV9mYXN0cGF0aF9jYWxsYmFja19y ZWdpc3RlcmVkID0gZmFsc2U7Ci0JfQotfQotCiAvKgogICogcmlfRmFzdFBhdGhHZXRFbnRyeQog ICoJCUxvb2sgdXAgb3IgY3JlYXRlIGEgcGVyLWJhdGNoIGNhY2hlIGVudHJ5IGZvciB0aGUgZ2l2 ZW4gY29uc3RyYWludC4KQEAgLTQyNzYsNyArNDMwMCw2IEBAIHJpX0Zhc3RQYXRoR2V0RW50cnko Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgUmVsYXRpb24gZmtfcmVsKQogCQlpZiAo IXJpX2Zhc3RwYXRoX3hhY3RfY2FsbGJhY2tfcmVnaXN0ZXJlZCkKIAkJewogCQkJUmVnaXN0ZXJY YWN0Q2FsbGJhY2socmlfRmFzdFBhdGhYYWN0Q2FsbGJhY2ssIE5VTEwpOwotCQkJUmVnaXN0ZXJT dWJYYWN0Q2FsbGJhY2socmlfRmFzdFBhdGhTdWJYYWN0Q2FsbGJhY2ssIE5VTEwpOwogCQkJcmlf ZmFzdHBhdGhfeGFjdF9jYWxsYmFja19yZWdpc3RlcmVkID0gdHJ1ZTsKIAkJfQogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5Lm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0CmluZGV4IGZhODBkOWM5MTVmLi4zZjk5 YTRhNTljYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2tl eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2tleS5vdXQKQEAg LTM3NjgsMyArMzc2OCwyNyBAQCBTRUxFQ1QgY291bnQoKiksIG1heChhKSBGUk9NIGZwX3JlZW50 cnlfZmsyOyAgLS0gNjQgcm93cywgbWF4IDEKICgxIHJvdykKIAogRFJPUCBUQUJMRSBmcF9yZWVu dHJ5X2ZrMiwgZnBfcmVlbnRyeV9wazI7CistLSBTdWJ0cmFuc2FjdGlvbiBhYm9ydCBkdXJpbmcg YWZ0ZXItdHJpZ2dlciBmaXJpbmcgbXVzdCBub3QgZHJvcCBGSyBjaGVja3MKKy0tIGZvciByb3dz IGJ1ZmZlcmVkIGVhcmxpZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50LiAgQmF0Y2hpbmcgaXMgY29u ZmluZWQgdG8KKy0tIHRoZSB0b3AgdHJhbnNhY3Rpb24gbGV2ZWwgYW5kIHRoZSBidWZmZXJlZCBi YXRjaCBpcyBubyBsb25nZXIgZGlzY2FyZGVkIG9uCistLSBzdWJ4YWN0IGFib3J0LCBzbyB0aGUg dmlvbGF0aW5nIHJvd3MgYXJlIGRldGVjdGVkLgorQ1JFQVRFIFRBQkxFIGZwX3N1YnhhY3RfcGsg KGlkIGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBmcF9zdWJ4YWN0X3BrIFNFTEVDVCBn IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnOworQ1JFQVRFIFRBQkxFIGZwX3N1YnhhY3Rf ZmsgKGEgaW50LCB0YWcgdGV4dCk7CitBTFRFUiBUQUJMRSBmcF9zdWJ4YWN0X2ZrIEFERCBDT05T VFJBSU5UIGZwX3N1YnhhY3RfZmtfZmtleQorICAgIEZPUkVJR04gS0VZIChhKSBSRUZFUkVOQ0VT IGZwX3N1YnhhY3RfcGsgKGlkKTsKK0NSRUFURSBGVU5DVElPTiBmcF9hYm9ydF9zdWJ4YWN0KCkg UkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgSUYgTkVX LnRhZyA9ICdib29tJyBUSEVOCisgICAgICAgIEJFR0lOIFBFUkZPUk0gMS8wOyBFWENFUFRJT04g V0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4gTlVMTDsgRU5EOworICAgIEVORCBJRjsKKyAgICBS RVRVUk4gTkVXOworRU5EJCQ7CitDUkVBVEUgVFJJR0dFUiBmcF9zdWJ4YWN0X3RyZyBBRlRFUiBJ TlNFUlQgT04gZnBfc3VieGFjdF9maworICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9O IGZwX2Fib3J0X3N1YnhhY3QoKTsKK0lOU0VSVCBJTlRPIGZwX3N1YnhhY3RfZmsgVkFMVUVTICg5 OTksICdiYWQnKSwgKDAsICdib29tJyksICgxLCAnb2snKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVw ZGF0ZSBvbiB0YWJsZSAiZnBfc3VieGFjdF9mayIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAiZnBfc3VieGFjdF9ma19ma2V5IgorREVUQUlMOiAgS2V5IChhKT0oOTk5KSBpcyBub3Qg cHJlc2VudCBpbiB0YWJsZSAiZnBfc3VieGFjdF9wayIuCitEUk9QIFRSSUdHRVIgZnBfc3VieGFj dF90cmcgT04gZnBfc3VieGFjdF9mazsKK0RST1AgRlVOQ1RJT04gZnBfYWJvcnRfc3VieGFjdCgp OworRFJPUCBUQUJMRSBmcF9zdWJ4YWN0X2ZrLCBmcF9zdWJ4YWN0X3BrOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9rZXkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvZm9yZWlnbl9rZXkuc3FsCmluZGV4IDBmMmNlOGY3NmY1Li4xOGMzZTE2NmYwMiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9rZXkuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbApAQCAtMjcyNiwzICsyNzI2LDI2IEBAIEJFR0lO CiBFTkQkJDsKIFNFTEVDVCBjb3VudCgqKSwgbWF4KGEpIEZST00gZnBfcmVlbnRyeV9mazI7ICAt LSA2NCByb3dzLCBtYXggMQogRFJPUCBUQUJMRSBmcF9yZWVudHJ5X2ZrMiwgZnBfcmVlbnRyeV9w azI7CisKKy0tIFN1YnRyYW5zYWN0aW9uIGFib3J0IGR1cmluZyBhZnRlci10cmlnZ2VyIGZpcmlu ZyBtdXN0IG5vdCBkcm9wIEZLIGNoZWNrcworLS0gZm9yIHJvd3MgYnVmZmVyZWQgZWFybGllciBp biB0aGUgc2FtZSBzdGF0ZW1lbnQuICBCYXRjaGluZyBpcyBjb25maW5lZCB0bworLS0gdGhlIHRv cCB0cmFuc2FjdGlvbiBsZXZlbCBhbmQgdGhlIGJ1ZmZlcmVkIGJhdGNoIGlzIG5vIGxvbmdlciBk aXNjYXJkZWQgb24KKy0tIHN1YnhhY3QgYWJvcnQsIHNvIHRoZSB2aW9sYXRpbmcgcm93cyBhcmUg ZGV0ZWN0ZWQuCitDUkVBVEUgVEFCTEUgZnBfc3VieGFjdF9wayAoaWQgaW50IFBSSU1BUlkgS0VZ KTsKK0lOU0VSVCBJTlRPIGZwX3N1YnhhY3RfcGsgU0VMRUNUIGcgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMTApIGc7CitDUkVBVEUgVEFCTEUgZnBfc3VieGFjdF9mayAoYSBpbnQsIHRhZyB0ZXh0 KTsKK0FMVEVSIFRBQkxFIGZwX3N1YnhhY3RfZmsgQUREIENPTlNUUkFJTlQgZnBfc3VieGFjdF9m a19ma2V5CisgICAgRk9SRUlHTiBLRVkgKGEpIFJFRkVSRU5DRVMgZnBfc3VieGFjdF9wayAoaWQp OworQ1JFQVRFIEZVTkNUSU9OIGZwX2Fib3J0X3N1YnhhY3QoKSBSRVRVUk5TIHRyaWdnZXIgTEFO R1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBJRiBORVcudGFnID0gJ2Jvb20nIFRIRU4K KyAgICAgICAgQkVHSU4gUEVSRk9STSAxLzA7IEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3pl cm8gVEhFTiBOVUxMOyBFTkQ7CisgICAgRU5EIElGOworICAgIFJFVFVSTiBORVc7CitFTkQkJDsK K0NSRUFURSBUUklHR0VSIGZwX3N1YnhhY3RfdHJnIEFGVEVSIElOU0VSVCBPTiBmcF9zdWJ4YWN0 X2ZrCisgICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gZnBfYWJvcnRfc3VieGFjdCgp OworSU5TRVJUIElOVE8gZnBfc3VieGFjdF9mayBWQUxVRVMgKDk5OSwgJ2JhZCcpLCAoMCwgJ2Jv b20nKSwgKDEsICdvaycpOworRFJPUCBUUklHR0VSIGZwX3N1YnhhY3RfdHJnIE9OIGZwX3N1Ynhh Y3RfZms7CitEUk9QIEZVTkNUSU9OIGZwX2Fib3J0X3N1YnhhY3QoKTsKK0RST1AgVEFCTEUgZnBf c3VieGFjdF9maywgZnBfc3VieGFjdF9wazsKLS0gCjIuNDcuMwoK --00000000000064ee8e0653d22437--