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 1wXcx8-003NxE-1i for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jun 2026 10:48:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wXcx7-00Fm99-1O for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Jun 2026 10:48:01 +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 1wXcx7-00Fm91-0B for pgsql-hackers@lists.postgresql.org; Thu, 11 Jun 2026 10:48:01 +0000 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wXcx4-00000002X4w-22GG for pgsql-hackers@postgresql.org; Thu, 11 Jun 2026 10:48:00 +0000 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-84229481d44so3244766b3a.0 for ; Thu, 11 Jun 2026 03:47:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781174876; cv=none; d=google.com; s=arc-20240605; b=N9vA4FIrdawkdMvv6casgtS0iGYad108WOZYKKuXpGdQlnejMcucUGCB5Jmlt1YqO8 9x+sw1VodjR1+wmzh0JkwkRCtoyB4uZr6lVq6aaDXrdDoc3cdFm97+2F2pfqwRuXEihe +D1witRN7JZoe7a8TXXIvLt6Fupumhj9nPW3fIzwa7Rgj106PxYc/UXkz9tBi3SXdlmt sgyxL3dhhkCni8d4vw1D74mA+rGcKPAOBQ58MrffVebBSxYb/XsddHim2d65cUgp4xxf 7n/k+AvDnb1QLLJm+fh1gisV5K1XVVwcxi/LaTvL+QpsTkd/rPOd86NJX9Cx8gJBNuok hdXA== 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=Slh9sGxQMXWG3+ce7YFwdyVGOsg2LcoTk8cPT8gjsq4=; fh=v/HsH6NGAvtXOCN7nVxMq/rKLGzaa2E/qlL4URlPauk=; b=F93hqa6mOyUnmCFPe8MKk0/aEGo2u/yVDws8LVFY5Fm6A975ky+9a3B+U2/lgt0N3u /o9Rj7L9ZxnS/kyZ9dJqb/MZ1t2uS7lykOY+a2kguxBa7pBZSZnD80RMXmXJKoeI6CYO +ic9GAQ/CTMNn2LDef4unNQEA+lYD4lgd8+Yq7qcBvJyXRwrdcDLoQQz7s6VkyjD2V/U isuxpBQdr5Q9Sd4qCW7YSIYkyq4E+8xhScTgnJIAVBzRm/Cx4oVEjEZWCuULpKo2+moI 3Eg2ZRyziwcay9FKTFdzrYGSZXGYVCh/Sfk3LbH2TmFtyNPKAWc62vQilEDz2v2Nhm6o w5/Q==; 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=1781174876; x=1781779676; 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=Slh9sGxQMXWG3+ce7YFwdyVGOsg2LcoTk8cPT8gjsq4=; b=Rx4AhUz85GNhT0gKGMdzJfV9y3SnIpRrx1E54UOScAFhiI2Q44vSSjd4awom4GWq1P ypS8GXeOXTsPynGS9AffjYfJ0cYbGT4I7dlK0tTmkDiouUvsi4x5Sy/BlorNFPHHGcW3 LsZCgoJN1a3fE/bU0qwsGVMi+dQpjE/Svr0AbaOHMA3D3V4injn1T/b7mhkHbSQERtzV S6ZGKADAg4jukR+PCAOoxhMJdYbX3xBayAsA9LRSq+gQzHKT0sDwhjMZmrtJOxMDCmCb Pq1AyqKO1yd6Tgo0dI8Qg3DOWPurm5P7Cbmb8ZsKUL0BRSHER3ga1m2P2FlCj/VX6dPq sMFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781174876; x=1781779676; 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=Slh9sGxQMXWG3+ce7YFwdyVGOsg2LcoTk8cPT8gjsq4=; b=IWLkf2TMuoM8tUFe+Unx75MZ8I0H651Ls7iWYveRgUg212y1U1lOIGUp0C8UICV7gK s5jO8LUpyuR2HiHWJn2+b43GQshPCJx2wVIWYMBG/BfZBuWgXmn9QoizPIGUOFiv7wnl zzCVoBge8gm3XK9lwUv7kYdqNHBpZfE+3xWNyaQbMcBMeWby2UgtIj+ljNKrGzaACsHE qmzf54iLs3k5rntJFikArUQEZ7p/MVyyqtn5+z30B/FsS0pszYZ9IL9+AvZwHsVRCsu/ 3xfkZAo/KaUNIycIvwMYbrm80bYHi7fb4PMPoVcm+5lKDFbR2hQ5aq+XCLoBASwoxgWR a9jA== X-Forwarded-Encrypted: i=1; AFNElJ+t1sDt5h+0lQvA2+s0tRVzrx24KNatZ7zw0M9kZD2/RklywL957ncjTYHgzs0Yed3fNKp/n027LUSNaoAl@postgresql.org X-Gm-Message-State: AOJu0Yw0v4sirq33Due2GDTwULpYn3o8KNilHzbf6HOGSeMVZoRcmy7a m2/Ai6rY8Z773c3+DaUlRddkhorODTfw/QDzvi3ZJO1HrnPFjCgkoZkDTUjOcnrXzddijalS2jd mK6Sd6XLTaHClUeU5SImGSRgBaUeib+VM3nwc X-Gm-Gg: Acq92OFBevjhekiEIPZQWm+FQ+EjT6u6gXv12bTXTHOqEOqP6nuIMIkJIuT1umj+ujO hkbGe7Ig0G1q/wfgKZJornZQWzWE5WPdOGob14Tg0tVKn6Wvr9rrxEuVJUyqM4GY6qmfB94ykY8 15iJLQK2Tl/1Nyrf0KInUwBxO/iTOxF50ypPHsDSCF1XmpZ9IcGur0RtkMI9zMwnYP903KuOJoa wt+wqWoEe9d5FcTRZqNUyLzL4cga7FrJQrDFVrSri8d+82EtgILo+E3P4Iby3qRGZREeKvfwGC8 TQgVTuAkpbRCkCin5byGT+SVih1GhpCCRUm4cQtTUP19DvRGdfGIx7sv8eWNygclxcXP2k9x4Pc = X-Received: by 2002:aa7:8886:0:b0:838:1c02:2763 with SMTP id d2e1a72fcca58-843367c7f18mr2681913b3a.9.1781174876459; Thu, 11 Jun 2026 03:47:56 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amit Langote Date: Thu, 11 Jun 2026 19:47:39 +0900 X-Gm-Features: AVVi8Ccs-YjvSTtWiv6c_zRYsIk_PFAgNPxH9U3kwVrYfcCkP2aHLGMeASfEmPk Message-ID: Subject: Re: PG19 FK fast path: OOB write and missed FK checks during batched To: Junwang Zhao Cc: Ayush Tiwari , Nikolay Samokhvalov , pgsql-hackers mailing list , Andrey Borodin , Kirk Wolak Content-Type: multipart/mixed; boundary="000000000000cb79a90653f817fc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cb79a90653f817fc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 11, 2026 at 6:51=E2=80=AFPM Junwang Zhao wr= ote: > On Thu, Jun 11, 2026 at 5:05=E2=80=AFPM Amit Langote wrote: > > > > On Thu, Jun 11, 2026 at 5:18=E2=80=AFPM Junwang Zhao wrote: > > > I only reviewed and applied patch 0001 on my local machine, and it > > > successfully fixed the crash. > > > > > > One minor comment: > > > > > > + if (fpentry->flushing) > > > + { > > > + ri_FastPathCheck(riinfo, fk_rel, newslot); > > > + return; > > > + } > > > > > > Would it be worth wrapping the condition with unlikely()? It seems > > > this branch is expected to be false in most cases, not a strong > > > opinion though. > > > > Good idea. Will do. > > > > Are you planning to look at 0002? > > I just applied 0002 and ran the regression successfully. > > I have one trivial comment, subXact abort doesn't NULL the > ri_fastpath_cache, so I think the following comment of > RI_FastPathEntry should be polished accordingly by removing the > `SubXactCallback`. > > * ri_FastPathEndBatch(); on abort, ResourceOwner releases the cached > * relations and the XactCallback/SubXactCallback NULL the static cache po= inter > * to prevent any subsequent access. Thanks for the review. Yes, I missed that. I've updated the patches to address your comments and did some other polish= ing. -- Thanks, Amit Langote --000000000000cb79a90653f817fc Content-Type: application/x-patch; name="v3-0002-Confine-RI-fast-path-batching-to-the-top-transact.patch" Content-Disposition: attachment; filename="v3-0002-Confine-RI-fast-path-batching-to-the-top-transact.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq9dh3p80 RnJvbSAwMGUzZjRmZjg5YjNjNTMzODk5ZWI5OTZiZTRlOThlM2VlODJjNjNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTAgSnVuIDIwMjYgMjE6MTE6MTAgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDIvMl0gQ29uZmluZSBSSSBmYXN0LXBhdGggYmF0Y2hpbmcgdG8gdGhlIHRvcCB0cmFuc2FjdGlv bgogbGV2ZWwKClRoZSBGSyBmYXN0LXBhdGggYmF0Y2hpbmcgYWRkZWQgaW4gYjdiMjdlYjQxYTUg YnVmZmVycyByb3dzIGluIGEKdHJhbnNhY3Rpb24tbGl2ZWQgY2FjaGUgKHJpX2Zhc3RwYXRoX2Nh Y2hlKSBrZXllZCBieSBjb25zdHJhaW50IE9JRC4KUnVubmluZyB1c2VyLWRlZmluZWQgY2FzdCBh bmQgZXF1YWxpdHkgZnVuY3Rpb25zIGR1cmluZyBhIGJhdGNoIGZsdXNoLAp0b2dldGhlciB3aXRo IHRoZSBjYWNoZSdzIGxpZmV0aW1lIGFuZCBpdGVyYXRpb24sIGV4cG9zZWQgdHdvIGRlZmVjdHMK cmVhY2hhYmxlIGJ5IGFuIHVucHJpdmlsZWdlZCB0YWJsZSBvd25lci4KCkZpcnN0LCBvbiBzdWJ0 cmFuc2FjdGlvbiBhYm9ydCByaV9GYXN0UGF0aFN1YlhhY3RDYWxsYmFjayBkaXNjYXJkZWQgdGhl CmVudGlyZSBjYWNoZS4gIEFuIGVudHJ5J3MgYmF0Y2ggaG9sZHMgcm93cyBidWZmZXJlZCBieSB0 aGUgZW5jbG9zaW5nCnRyYW5zYWN0aW9uLCBub3QganVzdCB0aGUgYWJvcnRpbmcgc3VieGFjdCAt LSB0aGUgY2FjaGUgaXMga2V5ZWQgYnkKY29uc3RyYWludCwgc28gYSBzaW5nbGUgZW50cnkgY2Fu IG1peCByb3dzIGZyb20gbXVsdGlwbGUgc3VieGFjdCBsZXZlbHMuCkFuIGludGVybmFsIHN1Ynhh Y3QgYWJvcnQgZHVyaW5nIGFmdGVyLXRyaWdnZXIgZmlyaW5nIChlLmcuIGEgUEwvcGdTUUwKQkVH SU4gLi4uIEVYQ0VQVElPTiBibG9jaykgdGhlcmVmb3JlIGRyb3BwZWQgYnVmZmVyZWQgcm93cyBv ZiB0aGUgb3V0ZXIKdHJhbnNhY3Rpb24gd2l0aG91dCBydW5uaW5nIHRoZWlyIEZLIGNoZWNrcywg bGV0dGluZyBvcnBoYW4gcm93cyBjb21taXQKYmVoaW5kIGEgY29uc3RyYWludCB0aGF0IHN0aWxs IHJlcG9ydGVkIGl0c2VsZiB2YWxpZC4gIFRoZSBkaXNjYXJkIGFsc28KbGVmdCByZWxhdGlvbnMg b3BlbmVkIGJ5IHRoZSBiYXRjaCB1bmNsb3NlZCwgcHJvZHVjaW5nICJyZXNvdXJjZSB3YXMgbm90 CmNsb3NlZCIgd2FybmluZ3MuCgpTZWNvbmQsIHJpX0Zhc3RQYXRoRW5kQmF0Y2ggZmx1c2hlcyBi eSBpdGVyYXRpbmcgdGhlIGNhY2hlIHdpdGgKaGFzaF9zZXFfc2VhcmNoLiAgSWYgZmx1c2gtdGlt ZSB1c2VyIGNvZGUgaW5zZXJ0cyBpbnRvIGEgZGlmZmVyZW50CmZhc3QtcGF0aCBGSyB0YWJsZSwg YSBuZXcgZW50cnkgaXMgYWRkZWQgdG8gdGhlIGNhY2hlIG1pZC1zY2FuOyBpdCBtYXkKbGFuZCBp biBhIGJ1Y2tldCB0aGUgc2NhbiBoYXMgYWxyZWFkeSBwYXNzZWQgYW5kIG5ldmVyIGJlIHJlYWNo ZWQsIGFuZApyaV9GYXN0UGF0aFRlYXJkb3duIHRoZW4gZGVzdHJveXMgdGhlIGNhY2hlIHdpdGhv dXQgZmx1c2hpbmcgaXQsCnNpbGVudGx5IGRyb3BwaW5nIHRoYXQgY2hlY2suCgpDbGVhbmx5IHVu d2luZGluZyB0aGUgY2FjaGUgb24gc3VieGFjdCBhYm9ydCB3b3VsZCByZXF1aXJlIHRyYWNraW5n IHRoZQpvcmlnaW5hdGluZyBzdWJ4YWN0IG9mIGVhY2ggYnVmZmVyZWQgcm93LCBzaW5jZSByb3dz IGZyb20gZGlmZmVyZW50CmxldmVscyBzaGFyZSBhbiBlbnRyeSAodGhlIGNhY2hlIGlzIGtleWVk IGJ5IGNvbnN0cmFpbnQpIGFuZCBkZWZlcnJlZApjb25zdHJhaW50cyBjYW5ub3QgYmUgZmx1c2hl ZCBlYXJseSBhdCBhIHN1YnhhY3QgYm91bmRhcnkuICBSYXRoZXIgdGhhbgphZGQgdGhhdCBib29r a2VlcGluZywgY29uZmluZSBiYXRjaGluZyB0byB0aGUgdG9wIHRyYW5zYWN0aW9uIGxldmVsOiBp bgpSSV9GS2V5X2NoZWNrLCB3aGVuIEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgpID4g MSwgdXNlIHRoZQpwZXItcm93IGZhc3QgcGF0aCAocmlfRmFzdFBhdGhDaGVjaykgaW5zdGVhZCBv ZiBidWZmZXJpbmcuICBSb3dzIGNoZWNrZWQKaW5zaWRlIGEgc3VidHJhbnNhY3Rpb24gYXJlIHRo ZW4gdmVyaWZpZWQgaW1tZWRpYXRlbHkgYW5kIHJvbGwgYmFjawpjbGVhbmx5IHdpdGggdGhlaXIg c3VidHJhbnNhY3Rpb24sIGFuZCB0aGUgY2FjaGUgb25seSBldmVyIGhvbGRzCnRvcC1sZXZlbCBy b3dzLiAgV2l0aCB0aGUgY2FjaGUgY29uZmluZWQgdG8gdGhlIHRvcCBsZXZlbCwgYQpzdWJ0cmFu c2FjdGlvbiBhYm9ydCBoYXMgbm90aGluZyBvZiBpdHMgb3duIHRvIGRpc2NhcmQsIHNvCnJpX0Zh c3RQYXRoU3ViWGFjdENhbGxiYWNrIGlzIHJlbW92ZWQgYWxvbmcgd2l0aCBpdHMgcmVnaXN0cmF0 aW9uLgoKRm9yIHRoZSBzZWNvbmQgZGVmZWN0LCBhZGQgYSBjYWNoZS13aWRlIGZsYWcgKHJpX2Zh c3RwYXRoX2ZsdXNoaW5nKSBzZXQKd2hpbGUgcmlfRmFzdFBhdGhFbmRCYXRjaCBpdGVyYXRlcyB0 aGUgY2FjaGUuICBBIHJlLWVudHJhbnQgRksgY2hlY2sKYXJyaXZpbmcgd2hpbGUgdGhlIGZsYWcg aXMgc2V0IHRha2VzIHRoZSBwZXItcm93IHBhdGggcmF0aGVyIHRoYW4gYWRkaW5nCmFuIGVudHJ5 IHRvIHRoZSBjYWNoZSBiZWluZyBzY2FubmVkLCBzbyBubyBlbnRyeSBjYW4gYmUgbWlzc2VkIGFu ZCB0b3JuCmRvd24gdW5mbHVzaGVkLiAgVGhlIGZsYWcgaXMgY2xlYXJlZCBpbiBhIFBHX0ZJTkFM TFkgc28gYSBmbHVzaCB0aGF0CnRocm93cyAoYSByZXBvcnRlZCB2aW9sYXRpb24gb3IgYW4gZXJy b3IgZnJvbSB1c2VyIGNvZGUpIGRvZXMgbm90IGxlYXZlCml0IHN0dWNrLiAgQXMgZGVmZW5zaXZl IGluc3VyYW5jZSBpdCBpcyBhbHNvIGNsZWFyZWQgaW4KcmlfRmFzdFBhdGhYYWN0Q2FsbGJhY2so KSBhdCB0cmFuc2FjdGlvbiBlbmQuCgpUaGUgcGVyLXJvdyBmYXN0IHBhdGggc3RpbGwgYnlwYXNz ZXMgU1BJIGFuZCBzdGF5cyB3ZWxsIGFoZWFkIG9mIHRoZQpwcmUtMTkgU1BJLWJhc2VkIGNoZWNr LiAgQSBmdWxsZXIgZml4IHRoYXQgcHJlc2VydmVzIGJhdGNoaW5nIGFjcm9zcwpzdWJ0cmFuc2Fj dGlvbnMgLS0gd2hldGhlciBieSB0cmFja2luZyB0aGUgb3JpZ2luYXRpbmcgc3VieGFjdCBvZiBl YWNoCmJ1ZmZlcmVkIHJvdyBvciBieSBwZXItc3VieGFjdCBjYWNoZSBzdGFja3MgbWVyZ2VkIGlu dG8gdGhlIHBhcmVudCBvbgpjb21taXQgLS0gaXMgbGVmdCBmb3IgYSBmdXR1cmUgcmVsZWFzZS4K ClRoZSBzdWJ0cmFuc2FjdGlvbi1hYm9ydCBjYXNlIGlzIGNvdmVyZWQgYnkgYSBuZXcgcmVncmVz c2lvbiB0ZXN0LiAgVGhlCm1pZC1zY2FuIGNyb3NzLXRhYmxlIGNhc2UgZGVwZW5kcyBvbiBoYXNo IGJ1Y2tldCBwbGFjZW1lbnQgYW5kIHNvIGlzIG5vdApyZWxpYWJseSByZXByb2R1Y2libGUgaW4g YSBwb3J0YWJsZSB0ZXN0LCBidXQgdGhlIGZsYWcgcHJldmVudHMgaXQgYnkKY29uc3RydWN0aW9u LgoKUmVwb3J0ZWQtYnk6IE5pa29sYXkgU2Ftb2todmFsb3YgPG5pa0Bwb3N0Z3Jlcy5haT4KUmV2 aWV3ZWQtYnk6IE5pa29sYXkgU2Ftb2todmFsb3YgPG5pa0Bwb3N0Z3Jlcy5haT4KUmV2aWV3ZWQt Ynk6IEF5dXNoIFRpd2FyaSA8YXl1c2h0aXdhcmkuc2xnMDFAZ21haWwuY29tPgpEaXNjdXNzaW9u OiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTTUyN2Q5ZXhSQ2RXcmhKT25BeGtfdkFDZzdzcl95UG9h SnBfK3VDRlkwcVA4dj1hd0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgIHwgODYgKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0IHwgMjQgKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvZm9yZWlnbl9rZXkuc3FsICAgICAgfCAyMyArKysrKysKIDMgZmlsZXMg Y2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggOTE3YTU0NGMzMmIuLjA2ZTc3MjhjNDVkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMjI4LDggKzIyOCw4IEBAIHR5cGVkZWYgc3Ry dWN0IFJJX0NvbXBhcmVIYXNoRW50cnkKICAqIHJlbGF0aW9ucyBhcmUgaGVsZCBvcGVuIHdpdGgg bG9ja3MgZm9yIHRoZSB0cmFuc2FjdGlvbiBkdXJhdGlvbiwgcHJldmVudGluZwogICogcmVsY2Fj aGUgaW52YWxpZGF0aW9uLiAgVGhlIGVudHJ5IGl0c2VsZiBpcyB0b3JuIGRvd24gYXQgYmF0Y2gg ZW5kIGJ5CiAgKiByaV9GYXN0UGF0aEVuZEJhdGNoKCk7IG9uIGFib3J0LCBSZXNvdXJjZU93bmVy IHJlbGVhc2VzIHRoZSBjYWNoZWQKLSAqIHJlbGF0aW9ucyBhbmQgdGhlIFhhY3RDYWxsYmFjay9T dWJYYWN0Q2FsbGJhY2sgTlVMTCB0aGUgc3RhdGljIGNhY2hlIHBvaW50ZXIKLSAqIHRvIHByZXZl bnQgYW55IHN1YnNlcXVlbnQgYWNjZXNzLgorICogcmVsYXRpb25zIGFuZCB0aGUgWGFjdENhbGxi YWNrIE5VTExzIHRoZSBzdGF0aWMgY2FjaGUgcG9pbnRlciB0byBwcmV2ZW50CisgKiBhbnkgc3Vi c2VxdWVudCBhY2Nlc3MuCiAgKi8KIHR5cGVkZWYgc3RydWN0IFJJX0Zhc3RQYXRoRW50cnkKIHsK QEAgLTI2Nyw2ICsyNjcsNyBAQCBzdGF0aWMgZGNsaXN0X2hlYWQgcmlfY29uc3RyYWludF9jYWNo ZV92YWxpZF9saXN0OwogCiBzdGF0aWMgSFRBQiAqcmlfZmFzdHBhdGhfY2FjaGUgPSBOVUxMOwog c3RhdGljIGJvb2wgcmlfZmFzdHBhdGhfY2FsbGJhY2tfcmVnaXN0ZXJlZCA9IGZhbHNlOworc3Rh dGljIGJvb2wgcmlfZmFzdHBhdGhfZmx1c2hpbmcgPSBmYWxzZTsKIAogLyoKICAqIExvY2FsIGZ1 bmN0aW9uIHByb3RvdHlwZXMKQEAgLTQ2OSwxNCArNDcwLDMwIEBAIFJJX0ZLZXlfY2hlY2soVHJp Z2dlckRhdGEgKnRyaWdkYXRhKQogCSAqLwogCWlmIChyaV9mYXN0cGF0aF9pc19hcHBsaWNhYmxl KHJpaW5mbykpCiAJewotCQlpZiAoQWZ0ZXJUcmlnZ2VySXNBY3RpdmUoKSkKKwkJaWYgKEFmdGVy VHJpZ2dlcklzQWN0aXZlKCkgJiYKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgp ID09IDEgJiYKKwkJCSFyaV9mYXN0cGF0aF9mbHVzaGluZykKIAkJewogCQkJLyogQmF0Y2hlZCBw YXRoOiBidWZmZXIgYW5kIHByb2JlIGluIGdyb3VwcyAqLwogCQkJcmlfRmFzdFBhdGhCYXRjaEFk ZChyaWluZm8sIGZrX3JlbCwgbmV3c2xvdCk7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkvKiBBTFRF UiBUQUJMRSB2YWxpZGF0aW9uOiBwZXItcm93LCBubyBjYWNoZSAqLworCQkJLyoKKwkJCSAqIFBl ci1yb3cgcGF0aCwgdXNlZCB3aGVuIGJhdGNoaW5nIGlzIG5vdCBzYWZlIG9yIG5vdCBhcHBsaWNh YmxlOgorCQkJICoKKwkJCSAqIC0gQUxURVIgVEFCTEUgdmFsaWRhdGlvbiwgd2hlcmUgbm8gYWZ0 ZXItdHJpZ2dlciBmaXJpbmcgaXMKKwkJCSAqIGFjdGl2ZTsKKwkJCSAqCisJCQkgKiAtIGFueSBG SyBjaGVjayBpbnNpZGUgYSBzdWJ0cmFuc2FjdGlvbiwgc2luY2UgdGhlIGJhdGNoIGNhY2hlCisJ CQkgKiBpcyBjb25maW5lZCB0byB0aGUgdG9wIHRyYW5zYWN0aW9uIGxldmVsIChpdCBjYW5ub3Qg YmUgY2xlYW5seQorCQkJICogdW53b3VuZCBvbiBzdWJ4YWN0IGFib3J0KTsKKwkJCSAqCisJCQkg KiAtIGEgcmUtZW50cmFudCBjaGVjayBmcm9tIHVzZXIgY2FzdC9vcGVyYXRvciBjb2RlIHJ1bm5p bmcKKwkJCSAqIGR1cmluZyBhIGJhdGNoIGZsdXNoLCBzaW5jZSBhZGRpbmcgYSBjYWNoZSBlbnRy eSB3aGlsZQorCQkJICogcmlfRmFzdFBhdGhFbmRCYXRjaCBpcyBpdGVyYXRpbmcgdGhlIGNhY2hl IGNvdWxkIGxlYXZlIGl0CisJCQkgKiB1bmZsdXNoZWQuCisJCQkgKi8KIAkJCXJpX0Zhc3RQYXRo Q2hlY2socmlpbmZvLCBma19yZWwsIG5ld3Nsb3QpOwogCQl9CiAJCXJldHVybiBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7CkBAIC00MTgxLDE5ICs0MTk4LDQxIEBAIHJpX0Zhc3RQYXRoRW5kQmF0Y2go dm9pZCAqYXJnKQogCWlmIChyaV9mYXN0cGF0aF9jYWNoZSA9PSBOVUxMKQogCQlyZXR1cm47CiAK LQkvKiBGbHVzaCBhbnkgcGFydGlhbCBiYXRjaGVzIC0tIGNhbiB0aHJvdyBFUlJPUiAqLwotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgcmlfZmFzdHBhdGhfY2FjaGUpOwotCXdoaWxlICgoZW50cnkg PSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJLyoKKwkgKiBTZXQgYSBmbGFn IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHNjYW4gc28gdGhhdCBhbnkgRksgY2hlY2sgdHJpZ2dl cmVkCisJICogYnkgdXNlciBjYXN0IG9yIG9wZXJhdG9yIGNvZGUgZHVyaW5nIGEgZmx1c2ggdGFr ZXMgdGhlIHBlci1yb3cgcGF0aAorCSAqIGluc3RlYWQgb2YgYWRkaW5nIGEgbmV3IGVudHJ5IHRv IHRoZSBjYWNoZSB3ZSBhcmUgaXRlcmF0aW5nLiAgQSBuZXcKKwkgKiBlbnRyeSBjb3VsZCBsYW5k IGluIGFuIGFscmVhZHktc2Nhbm5lZCBidWNrZXQgYW5kIHRoZW4gYmUgdG9ybiBkb3duCisJICog dW5mbHVzaGVkIGJlbG93LgorCSAqCisJICogVGhlIGZsdXNoIGNhbiB0aHJvdyBFUlJPUiAoYSBy ZXBvcnRlZCBjb25zdHJhaW50IHZpb2xhdGlvbiwgb3IgYW4gZXJyb3IKKwkgKiBmcm9tIHRoZSB1 c2VyIGNvZGUgaXQgcnVucykuICBJbiB0aGF0IGNhc2UgcmlfRmFzdFBhdGhUZWFyZG93biBiZWxv dyBpcworCSAqIHNraXBwZWQ7IHRoZSBSZXNvdXJjZU93bmVyIGFuZCB0aGUgdHJhbnNhY3Rpb24t ZW5kIGNhbGxiYWNrIGhhbmRsZQorCSAqIHJlc291cmNlIGNsZWFudXAgb24gdGhlIGFib3J0IHBh dGguICBUaGUgUEdfRklOQUxMWSBvbmx5IHJlc2V0cyB0aGUKKwkgKiBmbGFnIGFuZCBkZWxpYmVy YXRlbHkgZG9lcyBub3QgYXR0ZW1wdCB0ZWFyZG93bi4KKwkgKi8KKwlBc3NlcnQoIXJpX2Zhc3Rw YXRoX2ZsdXNoaW5nKTsKKwlyaV9mYXN0cGF0aF9mbHVzaGluZyA9IHRydWU7CisJUEdfVFJZKCk7 CiAJewotCQlpZiAoZW50cnktPmJhdGNoX2NvdW50ID4gMCkKKwkJaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCByaV9mYXN0cGF0aF9jYWNoZSk7CisJCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCiAJCXsKLQkJCVJlbGF0aW9uCWZrX3JlbCA9IHRhYmxlX29w ZW4oZW50cnktPmZrX3JlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOwotCQkJUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbyA9IHJpX0xvYWRDb25zdHJhaW50SW5mbyhlbnRyeS0+Y29ub2lkKTsKKwkJCWlm IChlbnRyeS0+YmF0Y2hfY291bnQgPiAwKQorCQkJeworCQkJCVJlbGF0aW9uCWZrX3JlbCA9IHRh YmxlX29wZW4oZW50cnktPmZrX3JlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCVJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8gPSByaV9Mb2FkQ29uc3RyYWludEluZm8oZW50cnktPmNvbm9pZCk7 CiAKLQkJCXJpX0Zhc3RQYXRoQmF0Y2hGbHVzaChlbnRyeSwgZmtfcmVsLCByaWluZm8pOwotCQkJ dGFibGVfY2xvc2UoZmtfcmVsLCBOb0xvY2spOworCQkJCXJpX0Zhc3RQYXRoQmF0Y2hGbHVzaChl bnRyeSwgZmtfcmVsLCByaWluZm8pOworCQkJCXRhYmxlX2Nsb3NlKGZrX3JlbCwgTm9Mb2NrKTsK KwkJCX0KIAkJfQogCX0KKwlQR19GSU5BTExZKCk7CisJeworCQlyaV9mYXN0cGF0aF9mbHVzaGlu ZyA9IGZhbHNlOworCX0KKwlQR19FTkRfVFJZKCk7CiAKIAlyaV9GYXN0UGF0aFRlYXJkb3duKCk7 CiB9CkBAIC00MjQ1LDIyICs0Mjg0LDE0IEBAIHJpX0Zhc3RQYXRoWGFjdENhbGxiYWNrKFhhY3RF dmVudCBldmVudCwgdm9pZCAqYXJnKQogCSAqLwogCXJpX2Zhc3RwYXRoX2NhY2hlID0gTlVMTDsK IAlyaV9mYXN0cGF0aF9jYWxsYmFja19yZWdpc3RlcmVkID0gZmFsc2U7Ci19CiAKLXN0YXRpYyB2 b2lkCi1yaV9GYXN0UGF0aFN1YlhhY3RDYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRy YW5zYWN0aW9uSWQgbXlTdWJpZCwKLQkJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3Vi aWQsIHZvaWQgKmFyZykKLXsKLQlpZiAoZXZlbnQgPT0gU1VCWEFDVF9FVkVOVF9BQk9SVF9TVUIp Ci0JewotCQkvKgotCQkgKiBSZXNvdXJjZU93bmVyIGFscmVhZHkgcmVsZWFzZWQgcmVsYXRpb25z LiAgTlVMTCB0aGUgc3RhdGljIHBvaW50ZXJzCi0JCSAqIHNvIHRoZSBzdGlsbC1yZWdpc3RlcmVk IGJhdGNoIGNhbGxiYWNrIGJlY29tZXMgYSBuby1vcCBmb3IgdGhlIHJlc3QKLQkJICogb2YgdGhp cyB0cmFuc2FjdGlvbi4KLQkJICovCi0JCXJpX2Zhc3RwYXRoX2NhY2hlID0gTlVMTDsKLQkJcmlf ZmFzdHBhdGhfY2FsbGJhY2tfcmVnaXN0ZXJlZCA9IGZhbHNlOwotCX0KKwkvKgorCSAqIEFsc28g Y2xlYXIgdGhlIGluLWZsdXNoIGZsYWcuICByaV9GYXN0UGF0aEVuZEJhdGNoKCkgYWxyZWFkeSBj bGVhcnMgaXQKKwkgKiB2aWEgUEdfRklOQUxMWSwgc28gdGhpcyBpcyBqdXN0IGRlZmVuc2l2ZTog aXQga2VlcHMgYSBzdGFsZSBmbGFnIGZyb20KKwkgKiBzdXJ2aXZpbmcgaW50byB0aGUgbmV4dCB0 cmFuc2FjdGlvbiBzaG91bGQgYW55IGZ1dHVyZSBwYXRoIGxlYXZlIGl0CisJICogc2V0LgorCSAq LworCXJpX2Zhc3RwYXRoX2ZsdXNoaW5nID0gZmFsc2U7CiB9CiAKIC8qCkBAIC00Mjg3LDcgKzQz MTgsNiBAQCByaV9GYXN0UGF0aEdldEVudHJ5KGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8sIFJlbGF0aW9uIGZrX3JlbCkKIAkJaWYgKCFyaV9mYXN0cGF0aF94YWN0X2NhbGxiYWNrX3Jl Z2lzdGVyZWQpCiAJCXsKIAkJCVJlZ2lzdGVyWGFjdENhbGxiYWNrKHJpX0Zhc3RQYXRoWGFjdENh bGxiYWNrLCBOVUxMKTsKLQkJCVJlZ2lzdGVyU3ViWGFjdENhbGxiYWNrKHJpX0Zhc3RQYXRoU3Vi WGFjdENhbGxiYWNrLCBOVUxMKTsKIAkJCXJpX2Zhc3RwYXRoX3hhY3RfY2FsbGJhY2tfcmVnaXN0 ZXJlZCA9IHRydWU7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9mb3JlaWduX2tleS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5 Lm91dAppbmRleCBlMDhkZmY5OWYwMy4uZTE1NjMxNDRkNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZm9yZWlnbl9rZXkub3V0CkBAIC0zNzY4LDMgKzM3NjgsMjcgQEAgU0VMRUNUIGNv dW50KCopLCBtYXgoYSkgRlJPTSBmcF9yZWVudHJ5X2ZrMjsgIC0tIDY0IHJvd3MsIG1heCAxCiAo MSByb3cpCiAKIERST1AgVEFCTEUgZnBfcmVlbnRyeV9mazIsIGZwX3JlZW50cnlfcGsyOworLS0g U3VidHJhbnNhY3Rpb24gYWJvcnQgZHVyaW5nIGFmdGVyLXRyaWdnZXIgZmlyaW5nIG11c3Qgbm90 IGRyb3AgRksgY2hlY2tzCistLSBmb3Igcm93cyBidWZmZXJlZCBlYXJsaWVyIGluIHRoZSBzYW1l IHN0YXRlbWVudC4gIEJhdGNoaW5nIGlzIGNvbmZpbmVkIHRvCistLSB0aGUgdG9wIHRyYW5zYWN0 aW9uIGxldmVsIGFuZCB0aGUgYnVmZmVyZWQgYmF0Y2ggaXMgbm8gbG9uZ2VyIGRpc2NhcmRlZCBv bgorLS0gc3VieGFjdCBhYm9ydCwgc28gdGhlIHZpb2xhdGluZyByb3dzIGFyZSBkZXRlY3RlZC4K K0NSRUFURSBUQUJMRSBmcF9zdWJ4YWN0X3BrIChpZCBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJU IElOVE8gZnBfc3VieGFjdF9wayBTRUxFQ1QgZyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkg ZzsKK0NSRUFURSBUQUJMRSBmcF9zdWJ4YWN0X2ZrIChhIGludCwgdGFnIHRleHQpOworQUxURVIg VEFCTEUgZnBfc3VieGFjdF9mayBBREQgQ09OU1RSQUlOVCBmcF9zdWJ4YWN0X2ZrX2ZrZXkKKyAg ICBGT1JFSUdOIEtFWSAoYSkgUkVGRVJFTkNFUyBmcF9zdWJ4YWN0X3BrIChpZCk7CitDUkVBVEUg RlVOQ1RJT04gZnBfYWJvcnRfc3VieGFjdCgpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBn c3FsIEFTICQkCitCRUdJTgorICAgIElGIE5FVy50YWcgPSAnYm9vbScgVEhFTgorICAgICAgICBC RUdJTiBQRVJGT1JNIDEvMDsgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOIE5V TEw7IEVORDsKKyAgICBFTkQgSUY7CisgICAgUkVUVVJOIE5FVzsKK0VORCQkOworQ1JFQVRFIFRS SUdHRVIgZnBfc3VieGFjdF90cmcgQUZURVIgSU5TRVJUIE9OIGZwX3N1YnhhY3RfZmsKKyAgICBG T1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiBmcF9hYm9ydF9zdWJ4YWN0KCk7CitJTlNFUlQg SU5UTyBmcF9zdWJ4YWN0X2ZrIFZBTFVFUyAoOTk5LCAnYmFkJyksICgwLCAnYm9vbScpLCAoMSwg J29rJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgImZwX3N1YnhhY3RfZmsi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgImZwX3N1YnhhY3RfZmtfZmtleSIKK0RF VEFJTDogIEtleSAoYSk9KDk5OSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgImZwX3N1YnhhY3Rf cGsiLgorRFJPUCBUUklHR0VSIGZwX3N1YnhhY3RfdHJnIE9OIGZwX3N1YnhhY3RfZms7CitEUk9Q IEZVTkNUSU9OIGZwX2Fib3J0X3N1YnhhY3QoKTsKK0RST1AgVEFCTEUgZnBfc3VieGFjdF9maywg ZnBfc3VieGFjdF9wazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25f a2V5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbAppbmRleCA4NzM4 MTE5NGY0MS4uYWJlYjg1OTY1YjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zv cmVpZ25fa2V5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwK QEAgLTI3MjYsMyArMjcyNiwyNiBAQCBCRUdJTgogRU5EJCQ7CiBTRUxFQ1QgY291bnQoKiksIG1h eChhKSBGUk9NIGZwX3JlZW50cnlfZmsyOyAgLS0gNjQgcm93cywgbWF4IDEKIERST1AgVEFCTEUg ZnBfcmVlbnRyeV9mazIsIGZwX3JlZW50cnlfcGsyOworCistLSBTdWJ0cmFuc2FjdGlvbiBhYm9y dCBkdXJpbmcgYWZ0ZXItdHJpZ2dlciBmaXJpbmcgbXVzdCBub3QgZHJvcCBGSyBjaGVja3MKKy0t IGZvciByb3dzIGJ1ZmZlcmVkIGVhcmxpZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50LiAgQmF0Y2hp bmcgaXMgY29uZmluZWQgdG8KKy0tIHRoZSB0b3AgdHJhbnNhY3Rpb24gbGV2ZWwgYW5kIHRoZSBi dWZmZXJlZCBiYXRjaCBpcyBubyBsb25nZXIgZGlzY2FyZGVkIG9uCistLSBzdWJ4YWN0IGFib3J0 LCBzbyB0aGUgdmlvbGF0aW5nIHJvd3MgYXJlIGRldGVjdGVkLgorQ1JFQVRFIFRBQkxFIGZwX3N1 YnhhY3RfcGsgKGlkIGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBmcF9zdWJ4YWN0X3Br IFNFTEVDVCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBnOworQ1JFQVRFIFRBQkxFIGZw X3N1YnhhY3RfZmsgKGEgaW50LCB0YWcgdGV4dCk7CitBTFRFUiBUQUJMRSBmcF9zdWJ4YWN0X2Zr IEFERCBDT05TVFJBSU5UIGZwX3N1YnhhY3RfZmtfZmtleQorICAgIEZPUkVJR04gS0VZIChhKSBS RUZFUkVOQ0VTIGZwX3N1YnhhY3RfcGsgKGlkKTsKK0NSRUFURSBGVU5DVElPTiBmcF9hYm9ydF9z dWJ4YWN0KCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisg ICAgSUYgTkVXLnRhZyA9ICdib29tJyBUSEVOCisgICAgICAgIEJFR0lOIFBFUkZPUk0gMS8wOyBF WENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4gTlVMTDsgRU5EOworICAgIEVORCBJ RjsKKyAgICBSRVRVUk4gTkVXOworRU5EJCQ7CitDUkVBVEUgVFJJR0dFUiBmcF9zdWJ4YWN0X3Ry ZyBBRlRFUiBJTlNFUlQgT04gZnBfc3VieGFjdF9maworICAgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IEZVTkNUSU9OIGZwX2Fib3J0X3N1YnhhY3QoKTsKK0lOU0VSVCBJTlRPIGZwX3N1YnhhY3RfZmsg VkFMVUVTICg5OTksICdiYWQnKSwgKDAsICdib29tJyksICgxLCAnb2snKTsKK0RST1AgVFJJR0dF UiBmcF9zdWJ4YWN0X3RyZyBPTiBmcF9zdWJ4YWN0X2ZrOworRFJPUCBGVU5DVElPTiBmcF9hYm9y dF9zdWJ4YWN0KCk7CitEUk9QIFRBQkxFIGZwX3N1YnhhY3RfZmssIGZwX3N1YnhhY3RfcGs7Ci0t IAoyLjQ3LjMKCg== --000000000000cb79a90653f817fc Content-Type: application/x-patch; name="v3-0001-Fix-out-of-bounds-write-in-RI-fast-path-batch-on-.patch" Content-Disposition: attachment; filename="v3-0001-Fix-out-of-bounds-write-in-RI-fast-path-batch-on-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq9dh3pn1 RnJvbSA5YTA3OGQwZjMzMmY5NmQ4ZTE2MDQwNTU4ZGRiMjJkYWFmMTk5Nzc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTAgSnVuIDIwMjYgMjE6MDc6MDkgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMl0gRml4IG91dC1vZi1ib3VuZHMgd3JpdGUgaW4gUkkgZmFzdC1wYXRoIGJhdGNoIG9uCiBy ZS1lbnRyeQoKVGhlIEZLIGZhc3QtcGF0aCBiYXRjaGluZyBhZGRlZCBpbiBiN2IyN2ViNDFhNSB3 cm90ZSB0aGUgaW5jb21pbmcgcm93CmludG8gdGhlIGJhdGNoIGFycmF5IGJlZm9yZSBjaGVja2lu ZyB3aGV0aGVyIHRoZSBhcnJheSB3YXMgZnVsbDoKCiAgICBmcGVudHJ5LT5iYXRjaFtmcGVudHJ5 LT5iYXRjaF9jb3VudF0gPSBFeGVjQ29weVNsb3RIZWFwVHVwbGUobmV3c2xvdCk7CiAgICBmcGVu dHJ5LT5iYXRjaF9jb3VudCsrOwogICAgaWYgKGZwZW50cnktPmJhdGNoX2NvdW50ID49IFJJX0ZB U1RQQVRIX0JBVENIX1NJWkUpCiAgICAgICAgcmlfRmFzdFBhdGhCYXRjaEZsdXNoKGZwZW50cnks IGZrX3JlbCwgcmlpbmZvKTsKCmJhdGNoX2NvdW50IGlzIHJlc2V0IHRvIHplcm8gb25seSBhdCB0 aGUgZW5kIG9mIHJpX0Zhc3RQYXRoQmF0Y2hGbHVzaCgpLApzbyBpdCByZW1haW5zIGF0IFJJX0ZB U1RQQVRIX0JBVENIX1NJWkUgdGhyb3VnaG91dCBhIGZ1bGwtYmF0Y2ggZmx1c2guCkEgZmx1c2gg cnVucyB1c2VyLWRlZmluZWQgY2FzdCBmdW5jdGlvbnMgYW5kIGVxdWFsaXR5IG9wZXJhdG9yczsg aWYgdGhhdAp1c2VyIGNvZGUgcGVyZm9ybXMgRE1MIG9uIHRoZSBzYW1lIEZLIHRhYmxlLCByaV9G YXN0UGF0aEJhdGNoQWRkKCkKcmUtZW50ZXJzIHdpdGggYmF0Y2hfY291bnQgPT0gUklfRkFTVFBB VEhfQkFUQ0hfU0laRSBhbmQgd3JpdGVzIG9uZSBwYXN0CnRoZSBlbmQgb2YgdGhlIGFycmF5LCBj b3JydXB0aW5nIHRoZSBhZGphY2VudCBiYXRjaF9jb3VudCBmaWVsZC4gIFRoaXMKaXMgcmVhY2hh YmxlIGJ5IGFuIHVucHJpdmlsZWdlZCB0YWJsZSBvd25lciB2aWEgYW4gaW1wbGljaXQgY2FzdCB3 aXRoIGEKUEwvcGdTUUwgZnVuY3Rpb24gYW5kIGNhdXNlcyBhIFNJR1NFR1YgaW4gYXNzZXJ0LWVu YWJsZWQgYnVpbGRzLgoKRml4IGJ5IGJvdW5kcy1jaGVja2luZyB0aGUgd3JpdGUgaW50byB0aGUg YmF0Y2ggYXJyYXkgc28gYSByZS1lbnRyYW50CmFkZCBjYW4gbmV2ZXIgd3JpdGUgcGFzdCB0aGUg ZW5kLCBhbmQgYnkgYWRkaW5nIGEgImZsdXNoaW5nIiBmbGFnIHRvClJJX0Zhc3RQYXRoRW50cnkg dGhhdCByb3V0ZXMgcmUtZW50cmFudCByaV9GYXN0UGF0aEJhdGNoQWRkKCkgY2FsbHMgb24KYSBi dXN5IGVudHJ5IHRvIHRoZSBwZXItcm93IHBhdGggKHJpX0Zhc3RQYXRoQ2hlY2spIGluc3RlYWQg b2YgdG91Y2hpbmcKdGhlIG1pZC1mbHVzaCBiYXRjaCBhcnJheS4gIFRoZSBmbGFnIGlzIHNldCBh cm91bmQgdGhlIHByb2JlIGluCnJpX0Zhc3RQYXRoQmF0Y2hGbHVzaCgpIGFuZCBjbGVhcmVkIGlu IGEgUEdfRklOQUxMWSwgd2hpY2ggYWxzbyByZXNldHMKYmF0Y2hfY291bnQsIHNvIHRoZSBlbnRy eSBpcyBsZWZ0IGVtcHR5IGFuZCByZXVzYWJsZSBpZiBhIGZsdXNoIGVycm9yCihpbmNsdWRpbmcg YSByZXBvcnRlZCBGSyB2aW9sYXRpb24pIGlzIGNhdWdodCBieSBhIHNhdmVwb2ludC4KCkFkZCBy ZWdyZXNzaW9uIHRlc3RzIGZvciBib3RoIHRoZSByZS1lbnRyYW50IGZsdXNoIGFuZCByZXVzZSBv ZiBhbiBlbnRyeQphZnRlciBhIGZsdXNoIGVycm9yIGNhdWdodCBieSBhIHNhdmVwb2ludC4KClJl cG9ydGVkLWJ5OiBOaWtvbGF5IFNhbW9raHZhbG92IDxuaWtAcG9zdGdyZXMuYWk+ClJldmlld2Vk LWJ5OiBOaWtvbGF5IFNhbW9raHZhbG92IDxuaWtAcG9zdGdyZXMuYWk+ClJldmlld2VkLWJ5OiBB eXVzaCBUaXdhcmkgPGF5dXNodGl3YXJpLnNsZzAxQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9DQU01MjdkOWV4UkNkV3JoSk9uQXhrX3ZBQ2c3c3JfeVBvYUpwXyt1 Q0ZZMHFQOHY9YXdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlf dHJpZ2dlcnMuYyAgICAgICB8IDgwICsrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5Lm91dCB8IDU2ICsrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbCAgICAgIHwgNDYgKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCBkYzg5YzY4NjM5NC4uOTE3YTU0NGMz MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yNDksNiArMjQ5LDEyIEBA IHR5cGVkZWYgc3RydWN0IFJJX0Zhc3RQYXRoRW50cnkKIAkgKi8KIAlIZWFwVHVwbGUJYmF0Y2hb UklfRkFTVFBBVEhfQkFUQ0hfU0laRV07CiAJaW50CQkJYmF0Y2hfY291bnQ7CisKKwkvKgorCSAq IHRydWUgd2hpbGUgdGhpcyBlbnRyeSdzIGJhdGNoIGlzIGJlaW5nIGZsdXNoZWQ7IGd1YXJkcyBh Z2FpbnN0CisJICogcmUtZW50cmFudCByaV9GYXN0UGF0aEJhdGNoQWRkIGZyb20gdXNlciBjb2Rl IHJ1biBkdXJpbmcgdGhlIGZsdXNoLgorCSAqLworCWJvb2wJCWZsdXNoaW5nOwogfSBSSV9GYXN0 UGF0aEVudHJ5OwogCiAvKgpAQCAtMjg2MCwxNSArMjg2NiwzOCBAQCByaV9GYXN0UGF0aEJhdGNo QWRkKFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCVJlbGF0aW9uIGZrX3JlbCwgVHVw bGVUYWJsZVNsb3QgKm5ld3Nsb3QpCiB7CiAJUklfRmFzdFBhdGhFbnRyeSAqZnBlbnRyeSA9IHJp X0Zhc3RQYXRoR2V0RW50cnkocmlpbmZvLCBma19yZWwpOwotCU1lbW9yeUNvbnRleHQgb2xkY3h0 OwogCi0Jb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZwZW50cnktPmZsdXNoX2N4dCk7 Ci0JZnBlbnRyeS0+YmF0Y2hbZnBlbnRyeS0+YmF0Y2hfY291bnRdID0KLQkJRXhlY0NvcHlTbG90 SGVhcFR1cGxlKG5ld3Nsb3QpOwotCWZwZW50cnktPmJhdGNoX2NvdW50Kys7Ci0JTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJLyoKKwkgKiBJZiB0aGlzIGVudHJ5IGlzIGFscmVhZHkg YmVpbmcgZmx1c2hlZCwgYSBjYXN0IGZ1bmN0aW9uIG9yIGFuIG9wZXJhdG9yCisJICogaW52b2tl ZCBkdXJpbmcgdGhlIGZsdXNoIGhhcyByZS1lbnRlcmVkIHdpdGggRE1MIG9uIHRoZSBzYW1lIEZL LiAgRmFsbAorCSAqIGJhY2sgdG8gdGhlIHBlci1yb3cgcGF0aCByYXRoZXIgdGhhbiB0b3VjaGlu ZyB0aGUgYmF0Y2ggYXJyYXksIHdoaWNoIGlzCisJICogbWlkLWZsdXNoLgorCSAqLworCWlmICh1 bmxpa2VseShmcGVudHJ5LT5mbHVzaGluZykpCisJeworCQlyaV9GYXN0UGF0aENoZWNrKHJpaW5m bywgZmtfcmVsLCBuZXdzbG90KTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogQnVmZmVyIHRo ZSByb3cuICBBIGZ1bGwgYmF0Y2ggaXMgZmx1c2hlZCBiZWxvdyBhbmQgcmUtZW50cnkgaXMgaGFu ZGxlZAorCSAqIGFib3ZlLCBzbyB0aGVyZSBpcyBhbHdheXMgcm9vbSBoZXJlOyB0aGUgYm91bmRz IGNoZWNrIGp1c3QgZ3VhcmRzIHRoZQorCSAqIGFycmF5IHdyaXRlLgorCSAqLworCWlmIChmcGVu dHJ5LT5iYXRjaF9jb3VudCA8IFJJX0ZBU1RQQVRIX0JBVENIX1NJWkUpCisJeworCQlNZW1vcnlD b250ZXh0IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhmcGVudHJ5LT5mbHVzaF9jeHQp OwogCi0JaWYgKGZwZW50cnktPmJhdGNoX2NvdW50ID49IFJJX0ZBU1RQQVRIX0JBVENIX1NJWkUp CisJCWZwZW50cnktPmJhdGNoW2ZwZW50cnktPmJhdGNoX2NvdW50XSA9CisJCQlFeGVjQ29weVNs b3RIZWFwVHVwbGUobmV3c2xvdCk7CisJCWZwZW50cnktPmJhdGNoX2NvdW50Kys7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKwllbHNlCisJCWVsb2coRVJST1IsICJSSSBm YXN0LXBhdGggYmF0Y2ggdW5leHBlY3RlZGx5IGZ1bGwiKTsKKworCS8qIEZsdXNoIGFzIHNvb24g YXMgdGhlIGJhdGNoIGlzIGZ1bGwuICovCisJaWYgKGZwZW50cnktPmJhdGNoX2NvdW50ID09IFJJ X0ZBU1RQQVRIX0JBVENIX1NJWkUpCiAJCXJpX0Zhc3RQYXRoQmF0Y2hGbHVzaChmcGVudHJ5LCBm a19yZWwsIHJpaW5mbyk7CiB9CiAKQEAgLTI5NDQsMTMgKzI5NzMsMzAgQEAgcmlfRmFzdFBhdGhC YXRjaEZsdXNoKFJJX0Zhc3RQYXRoRW50cnkgKmZwZW50cnksIFJlbGF0aW9uIGZrX3JlbCwKIAl9 CiAJQXNzZXJ0KHJpaW5mby0+ZnBtZXRhKTsKIAotCS8qIFNraXAgYXJyYXkgb3ZlcmhlYWQgZm9y IHNpbmdsZS1yb3cgYmF0Y2hlcy4gKi8KLQlpZiAocmlpbmZvLT5ua2V5cyA9PSAxICYmIGZwZW50 cnktPmJhdGNoX2NvdW50ID4gMSkKLQkJdmlvbGF0aW9uX2luZGV4ID0gcmlfRmFzdFBhdGhGbHVz aEFycmF5KGZwZW50cnksIGZrX3Nsb3QsIHJpaW5mbywKLQkJCQkJCQkJCQkJCWZrX3JlbCwgc25h cHNob3QsIHNjYW5kZXNjKTsKLQllbHNlCi0JCXZpb2xhdGlvbl9pbmRleCA9IHJpX0Zhc3RQYXRo Rmx1c2hMb29wKGZwZW50cnksIGZrX3Nsb3QsIHJpaW5mbywKLQkJCQkJCQkJCQkJICAgZmtfcmVs LCBzbmFwc2hvdCwgc2NhbmRlc2MpOworCS8qCisJICogVGhlIHByb2JlIHJ1bnMgdXNlci1kZWZp bmVkIGNhc3QgYW5kIGVxdWFsaXR5IGZ1bmN0aW9ucy4gIFNldCB0aGUKKwkgKiBmbHVzaGluZyBm bGFnIGFyb3VuZCBpdCBzbyBhIHJlLWVudHJhbnQgcmlfRmFzdFBhdGhCYXRjaEFkZCBvbiB0aGlz CisJICogZW50cnkgdGFrZXMgdGhlIHBlci1yb3cgcGF0aCwgYW5kIGNsZWFyIGl0IGV2ZW4gb24g ZXJyb3Igc28gdGhlIGVudHJ5CisJICogaXMgcmV1c2FibGUgaWYgdGhlIGVycm9yIGlzIGNhdWdo dCBieSBhIHNhdmVwb2ludC4KKwkgKi8KKwlBc3NlcnQoIWZwZW50cnktPmZsdXNoaW5nKTsKKwlm cGVudHJ5LT5mbHVzaGluZyA9IHRydWU7CisJUEdfVFJZKCk7CisJeworCQkvKiBTa2lwIGFycmF5 IG92ZXJoZWFkIGZvciBzaW5nbGUtcm93IGJhdGNoZXMuICovCisJCWlmIChyaWluZm8tPm5rZXlz ID09IDEgJiYgZnBlbnRyeS0+YmF0Y2hfY291bnQgPiAxKQorCQkJdmlvbGF0aW9uX2luZGV4ID0g cmlfRmFzdFBhdGhGbHVzaEFycmF5KGZwZW50cnksIGZrX3Nsb3QsIHJpaW5mbywKKwkJCQkJCQkJ CQkJCQlma19yZWwsIHNuYXBzaG90LCBzY2FuZGVzYyk7CisJCWVsc2UKKwkJCXZpb2xhdGlvbl9p bmRleCA9IHJpX0Zhc3RQYXRoRmx1c2hMb29wKGZwZW50cnksIGZrX3Nsb3QsIHJpaW5mbywKKwkJ CQkJCQkJCQkJCSAgIGZrX3JlbCwgc25hcHNob3QsIHNjYW5kZXNjKTsKKwl9CisJUEdfRklOQUxM WSgpOworCXsKKwkJZnBlbnRyeS0+Zmx1c2hpbmcgPSBmYWxzZTsKKwkJZnBlbnRyeS0+YmF0Y2hf Y291bnQgPSAwOworCX0KKwlQR19FTkRfVFJZKCk7CiAKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KHNhdmVkX3VzZXJpZCwgc2F2ZWRfc2VjX2NvbnRleHQpOwogCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CkBAIC0yOTY2LDkgKzMwMTIsNiBAQCByaV9GYXN0UGF0aEJhdGNoRmx1c2goUklf RmFzdFBhdGhFbnRyeSAqZnBlbnRyeSwgUmVsYXRpb24gZmtfcmVsLAogCiAJTWVtb3J5Q29udGV4 dFJlc2V0KGZwZW50cnktPmZsdXNoX2N4dCk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7Ci0KLQkvKiBSZXNldC4gKi8KLQlmcGVudHJ5LT5iYXRjaF9jb3VudCA9IDA7CiB9CiAKIC8q CkBAIC00MzA3LDYgKzQzNTAsOSBAQCByaV9GYXN0UGF0aEdldEVudHJ5KGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8sIFJlbGF0aW9uIGZrX3JlbCkKIAkJCVJlZ2lzdGVyQWZ0ZXJUcmln Z2VyQmF0Y2hDYWxsYmFjayhyaV9GYXN0UGF0aEVuZEJhdGNoLCBOVUxMKTsKIAkJCXJpX2Zhc3Rw YXRoX2NhbGxiYWNrX3JlZ2lzdGVyZWQgPSB0cnVlOwogCQl9CisKKwkJZW50cnktPmZsdXNoaW5n ID0gZmFsc2U7CisJCWVudHJ5LT5iYXRjaF9jb3VudCA9IDA7CiAJfQogCiAJcmV0dXJuIGVudHJ5 OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2tleS5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fa2V5Lm91dAppbmRleCA4YjNiMjY4 ZGUwZi4uZTA4ZGZmOTlmMDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Zm9yZWlnbl9rZXkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9r ZXkub3V0CkBAIC0zNzEyLDMgKzM3MTIsNTkgQEAgSU5TRVJUIElOVE8gZnBfcGtfZHVwIFZBTFVF UyAoMSk7CiBDUkVBVEUgVEFCTEUgZnBfZmtfZHVwIChhIGludCBSRUZFUkVOQ0VTIGZwX3BrX2R1 cCk7CiBJTlNFUlQgSU5UTyBmcF9ma19kdXAgU0VMRUNUIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKTsKIERST1AgVEFCTEUgZnBfZmtfZHVwLCBmcF9wa19kdXA7CistLSBSZS1lbnRyYW50 IEZLIGZhc3QtcGF0aDogRE1MIG9uIHRoZSBzYW1lIEZLIHRhYmxlIGZyb20gYSBjYXN0IGZ1bmN0 aW9uCistLSBkdXJpbmcgYSBmdWxsLWJhdGNoIGZsdXNoIG11c3Qgbm90IGNvcnJ1cHQgdGhlIGJh dGNoIGFycmF5LgorQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfcGsgKGlkIGludCBQUklNQVJZIEtF WSk7CitJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X3BrIFZBTFVFUyAoMSksICgyKTsKK0NSRUFURSBU WVBFIGZwX3ZjaCBBUyAodiBpbnQpOworQ1JFQVRFIEZVTkNUSU9OIGZwX3ZjYXN0KGZwX3ZjaCkg UkVUVVJOUyBpbnQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBJRiAkMS52ID0g MSBUSEVOCisgICAgICAgIElOU0VSVCBJTlRPIGZwX3JlZW50cnlfZmsgVkFMVUVTIChyb3coMik6 OmZwX3ZjaCk7CisgICAgRU5EIElGOworICAgIFJFVFVSTiAkMS52OworRU5EJCQ7CitDUkVBVEUg Q0FTVCAoZnBfdmNoIEFTIGludCkgV0lUSCBGVU5DVElPTiBmcF92Y2FzdChmcF92Y2gpIEFTIElN UExJQ0lUOworQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfZmsgKGEgZnBfdmNoCisgICAgUkVGRVJF TkNFUyBmcF9yZWVudHJ5X3BrIChpZCkpOworLS0gRmlsbCBleGFjdGx5IG9uZSBiYXRjaCBzbyB0 aGUgZmx1c2ggZmlyZXM7IHRoZSBjYXN0IHJlLWVudGVycyB3aXRoIERNTAorLS0gb24gdGhlIHNh bWUgRksgYW5kIG11c3QgdGFrZSB0aGUgcGVyLXJvdyBwYXRoLgorSU5TRVJUIElOVE8gZnBfcmVl bnRyeV9mayBTRUxFQ1Qgcm93KDEpOjpmcF92Y2ggRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjQp OworU0VMRUNUIGEsIGNvdW50KCopIEZST00gZnBfcmVlbnRyeV9mayBHUk9VUCBCWSBhIE9SREVS IEJZIGE7CisgIGEgIHwgY291bnQgCistLS0tLSstLS0tLS0tCisgKDEpIHwgICAgNjQKKyAoMikg fCAgICA2NAorKDIgcm93cykKKworRFJPUCBUQUJMRSBmcF9yZWVudHJ5X2ZrLCBmcF9yZWVudHJ5 X3BrOworRFJPUCBDQVNUIChmcF92Y2ggQVMgaW50KTsKK0RST1AgRlVOQ1RJT04gZnBfdmNhc3Qo ZnBfdmNoKTsKK0RST1AgVFlQRSBmcF92Y2g7CistLSBGbHVzaCBlcnJvciBjYXVnaHQgYnkgYSBz YXZlcG9pbnQgbXVzdCBsZWF2ZSB0aGUgZW50cnkgZW1wdHkgYW5kIHJldXNhYmxlLgorQ1JFQVRF IFRBQkxFIGZwX3JlZW50cnlfcGsyIChpZCBpbnQgUFJJTUFSWSBLRVkpOworSU5TRVJUIElOVE8g ZnBfcmVlbnRyeV9wazIgVkFMVUVTICgxKTsKK0NSRUFURSBUQUJMRSBmcF9yZWVudHJ5X2ZrMiAo YSBpbnQgUkVGRVJFTkNFUyBmcF9yZWVudHJ5X3BrMiAoaWQpKTsKK0RPICQkCitCRUdJTgorICAg IC0tIEEgYmF0Y2ggY29udGFpbmluZyBhIHZpb2xhdGluZyByb3c7IHRoZSBmbHVzaCByZXBvcnRz IHRoZSB2aW9sYXRpb24uCisgICAgQkVHSU4KKyAgICAgICAgSU5TRVJUIElOVE8gZnBfcmVlbnRy eV9mazIgU0VMRUNUIENBU0UgV0hFTiBnID0gMzIgVEhFTiA5OTkgRUxTRSAxIEVORAorICAgICAg ICAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjQpIGc7CisgICAgRVhDRVBUSU9OIFdIRU4g Zm9yZWlnbl9rZXlfdmlvbGF0aW9uIFRIRU4KKyAgICAgICAgUkFJU0UgTk9USUNFICdjYXVnaHQg ZmsgdmlvbGF0aW9uJzsKKyAgICBFTkQ7CisKKyAgICAtLSBSZXVzZSB0aGUgc2FtZSBGSyB3aXRo IGEgZnVsbCBiYXRjaCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4gIFRoZQorICAgIC0tIGVudHJ5 IG11c3QgYmUgZW1wdHkgYWZ0ZXIgdGhlIGNhdWdodCB2aW9sYXRpb246IG5vIHN0YWxlIHJvd3Mg ZnJvbSB0aGUKKyAgICAtLSByb2xsZWQtYmFjayBiYXRjaCAoaW4gcGFydGljdWxhciBubyA5OTkp LCBhbmQgbm8gYXJyYXkgb3ZlcmZsb3cuCisgICAgSU5TRVJUIElOVE8gZnBfcmVlbnRyeV9mazIg U0VMRUNUIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjQpOworRU5EJCQ7CitOT1RJQ0U6ICBj YXVnaHQgZmsgdmlvbGF0aW9uCitTRUxFQ1QgY291bnQoKiksIG1heChhKSBGUk9NIGZwX3JlZW50 cnlfZmsyOyAgLS0gNjQgcm93cywgbWF4IDEKKyBjb3VudCB8IG1heCAKKy0tLS0tLS0rLS0tLS0K KyAgICA2NCB8ICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIGZwX3JlZW50cnlfZmsyLCBmcF9y ZWVudHJ5X3BrMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5 LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fa2V5LnNxbAppbmRleCA3ZWI4NmIx ODhmMC4uODczODExOTRmNDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVp Z25fa2V5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2tleS5zcWwKQEAg LTI2ODAsMyArMjY4MCw0OSBAQCBJTlNFUlQgSU5UTyBmcF9wa19kdXAgVkFMVUVTICgxKTsKIENS RUFURSBUQUJMRSBmcF9ma19kdXAgKGEgaW50IFJFRkVSRU5DRVMgZnBfcGtfZHVwKTsKIElOU0VS VCBJTlRPIGZwX2ZrX2R1cCBTRUxFQ1QgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOwog RFJPUCBUQUJMRSBmcF9ma19kdXAsIGZwX3BrX2R1cDsKKworLS0gUmUtZW50cmFudCBGSyBmYXN0 LXBhdGg6IERNTCBvbiB0aGUgc2FtZSBGSyB0YWJsZSBmcm9tIGEgY2FzdCBmdW5jdGlvbgorLS0g ZHVyaW5nIGEgZnVsbC1iYXRjaCBmbHVzaCBtdXN0IG5vdCBjb3JydXB0IHRoZSBiYXRjaCBhcnJh eS4KK0NSRUFURSBUQUJMRSBmcF9yZWVudHJ5X3BrIChpZCBpbnQgUFJJTUFSWSBLRVkpOworSU5T RVJUIElOVE8gZnBfcmVlbnRyeV9wayBWQUxVRVMgKDEpLCAoMik7CitDUkVBVEUgVFlQRSBmcF92 Y2ggQVMgKHYgaW50KTsKK0NSRUFURSBGVU5DVElPTiBmcF92Y2FzdChmcF92Y2gpIFJFVFVSTlMg aW50IExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgSUYgJDEudiA9IDEgVEhFTgor ICAgICAgICBJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X2ZrIFZBTFVFUyAocm93KDIpOjpmcF92Y2gp OworICAgIEVORCBJRjsKKyAgICBSRVRVUk4gJDEudjsKK0VORCQkOworQ1JFQVRFIENBU1QgKGZw X3ZjaCBBUyBpbnQpIFdJVEggRlVOQ1RJT04gZnBfdmNhc3QoZnBfdmNoKSBBUyBJTVBMSUNJVDsK K0NSRUFURSBUQUJMRSBmcF9yZWVudHJ5X2ZrIChhIGZwX3ZjaAorICAgIFJFRkVSRU5DRVMgZnBf cmVlbnRyeV9wayAoaWQpKTsKKy0tIEZpbGwgZXhhY3RseSBvbmUgYmF0Y2ggc28gdGhlIGZsdXNo IGZpcmVzOyB0aGUgY2FzdCByZS1lbnRlcnMgd2l0aCBETUwKKy0tIG9uIHRoZSBzYW1lIEZLIGFu ZCBtdXN0IHRha2UgdGhlIHBlci1yb3cgcGF0aC4KK0lOU0VSVCBJTlRPIGZwX3JlZW50cnlfZmsg U0VMRUNUIHJvdygxKTo6ZnBfdmNoIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY0KTsKK1NFTEVD VCBhLCBjb3VudCgqKSBGUk9NIGZwX3JlZW50cnlfZmsgR1JPVVAgQlkgYSBPUkRFUiBCWSBhOwor RFJPUCBUQUJMRSBmcF9yZWVudHJ5X2ZrLCBmcF9yZWVudHJ5X3BrOworRFJPUCBDQVNUIChmcF92 Y2ggQVMgaW50KTsKK0RST1AgRlVOQ1RJT04gZnBfdmNhc3QoZnBfdmNoKTsKK0RST1AgVFlQRSBm cF92Y2g7CisKKy0tIEZsdXNoIGVycm9yIGNhdWdodCBieSBhIHNhdmVwb2ludCBtdXN0IGxlYXZl IHRoZSBlbnRyeSBlbXB0eSBhbmQgcmV1c2FibGUuCitDUkVBVEUgVEFCTEUgZnBfcmVlbnRyeV9w azIgKGlkIGludCBQUklNQVJZIEtFWSk7CitJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X3BrMiBWQUxV RVMgKDEpOworQ1JFQVRFIFRBQkxFIGZwX3JlZW50cnlfZmsyIChhIGludCBSRUZFUkVOQ0VTIGZw X3JlZW50cnlfcGsyIChpZCkpOworRE8gJCQKK0JFR0lOCisgICAgLS0gQSBiYXRjaCBjb250YWlu aW5nIGEgdmlvbGF0aW5nIHJvdzsgdGhlIGZsdXNoIHJlcG9ydHMgdGhlIHZpb2xhdGlvbi4KKyAg ICBCRUdJTgorICAgICAgICBJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X2ZrMiBTRUxFQ1QgQ0FTRSBX SEVOIGcgPSAzMiBUSEVOIDk5OSBFTFNFIDEgRU5ECisgICAgICAgICAgICBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA2NCkgZzsKKyAgICBFWENFUFRJT04gV0hFTiBmb3JlaWduX2tleV92aW9sYXRp b24gVEhFTgorICAgICAgICBSQUlTRSBOT1RJQ0UgJ2NhdWdodCBmayB2aW9sYXRpb24nOworICAg IEVORDsKKworICAgIC0tIFJldXNlIHRoZSBzYW1lIEZLIHdpdGggYSBmdWxsIGJhdGNoIGluIHRo ZSBzYW1lIHRyYW5zYWN0aW9uLiAgVGhlCisgICAgLS0gZW50cnkgbXVzdCBiZSBlbXB0eSBhZnRl ciB0aGUgY2F1Z2h0IHZpb2xhdGlvbjogbm8gc3RhbGUgcm93cyBmcm9tIHRoZQorICAgIC0tIHJv bGxlZC1iYWNrIGJhdGNoIChpbiBwYXJ0aWN1bGFyIG5vIDk5OSksIGFuZCBubyBhcnJheSBvdmVy Zmxvdy4KKyAgICBJTlNFUlQgSU5UTyBmcF9yZWVudHJ5X2ZrMiBTRUxFQ1QgMSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2NCk7CitFTkQkJDsKK1NFTEVDVCBjb3VudCgqKSwgbWF4KGEpIEZST00g ZnBfcmVlbnRyeV9mazI7ICAtLSA2NCByb3dzLCBtYXggMQorRFJPUCBUQUJMRSBmcF9yZWVudHJ5 X2ZrMiwgZnBfcmVlbnRyeV9wazI7Ci0tIAoyLjQ3LjMKCg== --000000000000cb79a90653f817fc--