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 1wVPut-001wiq-0i for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 08:28:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVPus-00AzSz-0I for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Jun 2026 08:28:34 +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 1wVPur-00AzSp-14 for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 08:28:33 +0000 Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVPuo-00000001Cta-2tTB for pgsql-hackers@lists.postgresql.org; Fri, 05 Jun 2026 08:28:32 +0000 Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-396775c2720so15295081fa.2 for ; Fri, 05 Jun 2026 01:28:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780648107; cv=none; d=google.com; s=arc-20240605; b=QGWfE/KAip+Ll2pZUFsKnebnQcwyHKqWifizm2wP7avjch2ar2RtR9FIMHwjwgQCeG g2lt27LoXUHWINvfwl3Bu9PhY59CUtyCV2/jp/NO61Fr4pmkAGS0toaOREKx4yeOEJPe +1QGNkTI5r5QD9uuo+Y5Xfpiaqxif7fkLKl1UbfLFLoUpOzJplDkSmPf2R9o2hwaKu3Y upMJpxEoz1WwZwwP/p0cTaGkRjcHh22r1+GY/HKTVQb7AFwJkKDyFVRT39gI0BACVXXA g8RbSZK47gdIj8pAwS6cj3G78WLbeYQ8YtexdWoLv5Xn5QJul2EYbt6I9hZeH15S0Z4p Fgtg== 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=kDE/7a8BlcQEb+dKdvobmFH46sGhFEKfm1szgt35dJM=; fh=HRpcbdPjviRxw7hCIBo5usJbhiC+UcVLGOPlRi67RTM=; b=CdkP3ia93dnze1e8FiSN3b3Kzfk8La6/ycdpeWHASBHLOweJGDRbxYeDoRSfxAwCPf yfaahUf7k5aDiwF13ENf2yV6l8RtCYTTpe+r/rijAqw+INNmXjGxU6fA8Jl9xoQD33uQ DLZHK0R247nnQRuxe8GbXS4u7XD8qnlHQm4oCehQkdyvB35kbh0cnWJecWiSPF1dYRkx glsbjbOWPUXZBMLZgJG8okLkBFdd2cD6T7C9UaD+t0JgQDQzVYlEGl2QvYvjBOG8OJ7X HAdzFY1vAAExWWtmeuaInSiddIOCVX4XaQZVO5GDQpGRA/xmoue/nTjTCai1AHvfQBBR hWZw==; darn=lists.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=1780648107; x=1781252907; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kDE/7a8BlcQEb+dKdvobmFH46sGhFEKfm1szgt35dJM=; b=g6LqONLNr6/7lLN8psVwX652EuNan2bzmN1K6ygjooI958O3ZVPS0En2a7NKv+xHVZ IxRQtrOox7Kq31Be77ivLMaQq/MDlXNowE8IgaikFVh/8J9XRN6n/uLZSk/SHStkN0ba VMmQ9veLJWxRS6Pe1NmqGYpZDY6PA07oKDEDEw8y2CYh2JIjY4+YUtUyG5/oRfLtD8KP 1yFYMder4+iYUJEmXjehXXwC+8LCJwCQpiT3CmUtX2Jz68FBJP0ChXNqt2Vnxy7YoneW u3lSSr5CcWMQW6znre42pHcZq8QHGnh+wsF7w5UxuwTkBqtrflenlU3AtztF2pCo/scr FXNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780648107; x=1781252907; 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=kDE/7a8BlcQEb+dKdvobmFH46sGhFEKfm1szgt35dJM=; b=OHt+N9Lx/Bc+K+mfg6nykHOvq9ICkZ8xb+0Q2yQusaUyoVdU7fAOdgJw2/QaqdR28V 54l1qPmEtSNDJznMtW/vot7JZXlQZ+h+T823rBuhXN/mNJp9+UiTTl9FQ5E8fbSt1yVG pDEDoxxwnVSSVCoa5OXZr468bev0lKeMwQTemH1gtDWGWpVlThLN9lmdPez/f1SzOPA1 KBMoUFSSXF1z0ZA5zc99LsubUK+DiKjOs5YZKP0gwM4Q2SfPgIWfDxpDF9oDG7Lcdyn7 Z3kE4jZUae2pAcDPCm57flClNR7j+JQqrSIe+d2G18ld1ZhvkN2rzjcK0zZJcE31BdrM kgVQ== X-Forwarded-Encrypted: i=1; AFNElJ/WPFBaSqA8xQmNnnIvIJjLv8LQ3387ui7Nn6vtMTsayX66XzEQlq++CXv8H9B/eI/a8ong20soIM5vzHkK@lists.postgresql.org X-Gm-Message-State: AOJu0Yzp6Y2tg/eQN9yV/ufUSDDDIsuBWRfWw0B9CpuTkEcJVxCrO79q Jq/uFtssHpJihLqJNrN60SI1anKwnf/VjIgp2mk07CMufVZpibePXAPaMZUaN7KSAut1IvJcg2M /tRwZt+P1nt7T3WQ/hMk+Iu65R3meQ7c= X-Gm-Gg: Acq92OETR9fKTreUXw9TnIOK1Yhv7AFZb9lPvepdEZ/0MBMg8ImmezQsiR8WEqY66xr eBnCG3YonwuH9titpRGU6jbZjWsT1RX0T8qTwjW+M4gowwavhTS7OTYYcESVwCncNPgAGH9KfFd 4ChkX02UQmfHho3wqfIYZDWOFvLQ1OwMwtEVmRTBI55+76LhhZB4rl+OusOs5GnyO+OCn/MEf5V eisbcLIUyXsXabfmxuOfLt61kbBr8vsl2eqQjFwym8OPvON5F+RRkc9BRYTE5SKqfjYVhFoEB/A 7NImydj0zvP0c+KLwQv7NZUx6Xxbyo/js6Qw+0rn97Ln+ZhjjsgY489bxjfPKXRwS37cbhZHWQo +j9uQVm2wKCAbkJI= X-Received: by 2002:a05:651c:144c:b0:396:76f9:ac7c with SMTP id 38308e7fff4ca-396d07d3844mr6281331fa.1.1780648107110; Fri, 05 Jun 2026 01:28:27 -0700 (PDT) MIME-Version: 1.0 References: <202602032236.3kvssyb3duyu@alvherre.pgsql> In-Reply-To: <202602032236.3kvssyb3duyu@alvherre.pgsql> From: Matthias van de Meent Date: Fri, 5 Jun 2026 10:28:12 +0200 X-Gm-Features: AVVi8Cfya1u_wXuSlBMcaupt5Pi67yciLB-hDiaTFdXa-dXBYAZUHpm3g_xgJTE Message-ID: Subject: Re: [SP-]GiST IOS visibility bug (was: Why doens't GiST require super-exclusive lock) To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Heikki Linnakangas , Peter Geoghegan , PostgreSQL Hackers , Michail Nikolaev Content-Type: multipart/mixed; boundary="000000000000e5181606537d7169" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e5181606537d7169 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 3 Feb 2026 at 23:39, =C3=81lvaro Herrera wro= te: > > On 2025-Apr-25, Matthias van de Meent wrote: > > > Hi, > > > > In the original thread [0] we established that GIST and SP-GiST > > support index-only scans, but don't have sufficient interlocking to > > prevent dead tuples from being revived for their scan by vacuum. > > Hello, > > This commitfest entry > https://commitfest.postgresql.org/patch/5721/ > is stale. I would have brought it forward because it's tagged as a bug > fix, but the patches look a bit intimidating to consider it a > backpatchable bug fix. So, what's the status here? Sorry for the delay. I've finally gotten back to this patch, as it's the simpler option vs the patch in the original thread, even if it may have a higher performance impact for GIST and SP-GIST IOS scans. Attached is v02, which is a simple rebase with some language and wrapping changes in comments, as well as some fixes for assert-enabled builds. Kind regards, Matthias van de Meent Databricks (https://www.databricks.com) --000000000000e5181606537d7169 Content-Type: application/octet-stream; name="v02-0002-GIST-Fix-visibility-issues-in-IOS.patch" Content-Disposition: attachment; filename="v02-0002-GIST-Fix-visibility-issues-in-IOS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0nnidu2 RnJvbSBkZWMwZWViODRiNzc4MGM0ZGU3NDE3NmJhMjVjMzA1MTM0ZTdiNDM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgQXByIDIwMjUgMTY6MTQ6MjYgKzAyMDAKU3Vi amVjdDogW1BBVENIIHYwMiAyLzRdIEdJU1Q6IEZpeCB2aXNpYmlsaXR5IGlzc3VlcyBpbiBJT1MK ClByZXZpb3VzbHksIEdJU1QgSU9TIGNvdWxkIGJ1ZmZlciB0dXBsZXMgZnJvbSBwYWdlcyB3aGls ZSBWQUNVVU0gY2FtZQphbG9uZyBhbmQgY2xlYW5lZCB1cCBhbiBBTExfREVBRCB0dXBsZSwgbWFy a2luZyB0aGUgdHVwbGUncyBwYWdlCkFMTF9WSVNJQkxFIGFnYWluIGFuZCBtYWtpbmcgSU9TIG1p c3Rha2VubHkgYmVsaWV2ZSB0aGUgdHVwbGUgaXMgaW5kZWVkCnZpc2libGUuCgpXaXRoIHRoaXMg Y29tbWl0LCBidWZmZXIgcGlucyBub3cgY29uZmxpY3Qgd2l0aCBHSVNUIHZhY3V1bSwgYW5kIHdl IG5vdwpkbyB2aXNpYmlsaXR5IGNoZWNrcyBvbiBoZWFwIGl0ZW1zIHJldHVybmVkIGZyb20gaW5k ZXggcGFnZXMgd2hpbGUgd2UKaG9sZCB0aGUgcGluLCBzbyB0aGF0IHRoZSBJT1MgaW5mcmFzdHJ1 Y3R1cmUga25vd3MgdG8gcmVjaGVjayB0aGUgaGVhcApwYWdlIGV2ZW4gaWYgdGhhdCBoZWFwIHBh Z2UgaGFzIGJlY29tZSBBTExfVklTSUJMRSBhZnRlciB3ZSByZWxlYXNlZAp0aGUgaW5kZXggcGFn ZS4KCklkZWEgZnJvbSBIZWlra2kgTGlubmFrYW5nYXMKCkJhY2twYXRjaC10aHJvdWdoOiAxNAot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyAgICB8IDM2ICsrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RzY2FuLmMgICB8 IDE0ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFjdXVtLmMgfCAg NiArKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oICAgIHwgIDUgKysrKwog NCBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3RnZXQuYwppbmRleCA0ZDdjMTAwZDczNy4uMjBhOWNjMjI0MDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKQEAgLTQ3MSw4ICs0NzEsOSBAQCBnaXN0U2NhblBhZ2Uo SW5kZXhTY2FuRGVzYyBzY2FuLCBHSVNUU2VhcmNoSXRlbSAqcGFnZUl0ZW0sCiAJCQlzby0+cGFn ZURhdGFbc28tPm5QYWdlRGF0YV0ub2ZmbnVtID0gaTsKIAogCQkJLyoKLQkJCSAqIEluIGFuIGlu ZGV4LW9ubHkgc2NhbiwgYWxzbyBmZXRjaCB0aGUgZGF0YSBmcm9tIHRoZSB0dXBsZS4gIFRoZQot CQkJICogcmVjb25zdHJ1Y3RlZCB0dXBsZXMgYXJlIHN0b3JlZCBpbiBwYWdlRGF0YUN4dC4KKwkJ CSAqIEluIGFuIGluZGV4LW9ubHkgc2NhbiwgYWxzbyBmZXRjaCB0aGUgZGF0YSBmcm9tIHRoZSB0 dXBsZSBhbmQKKwkJCSAqIGl0cyB2aXNpYmlsaXR5IHN0YXRlLiAgVGhlIHJlY29uc3RydWN0ZWQg dHVwbGVzIGFyZSBzdG9yZWQgaW4KKwkJCSAqIHBhZ2VEYXRhQ3h0LgogCQkJICovCiAJCQlpZiAo c2Nhbi0+eHNfd2FudF9pdHVwKQogCQkJewpAQCAtNDgwLDYgKzQ4MSwxMCBAQCBnaXN0U2NhblBh Z2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBHSVNUU2VhcmNoSXRlbSAqcGFnZUl0ZW0sCiAJCQkJc28t PnBhZ2VEYXRhW3NvLT5uUGFnZURhdGFdLnJlY29udHVwID0KIAkJCQkJZ2lzdEZldGNoVHVwbGUo Z2lzdHN0YXRlLCByLCBpdCk7CiAJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisK KwkJCQlzby0+cGFnZURhdGFbc28tPm5QYWdlRGF0YV0udmlzcmVjaGVjayA9CisJCQkJCXRhYmxl X2luZGV4X3Zpc2NoZWNrX3R1cGxlKHNjYW4tPmhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkJICAg JnNvLT52bWJ1ZiwgJml0LT50X3RpZCk7CiAJCQl9CiAJCQlzby0+blBhZ2VEYXRhKys7CiAJCX0K QEAgLTUwNywxMCArNTEyLDE2IEBAIGdpc3RTY2FuUGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEdJ U1RTZWFyY2hJdGVtICpwYWdlSXRlbSwKIAkJCQlpdGVtLT5kYXRhLmhlYXAucmVjaGVja0Rpc3Rh bmNlcyA9IHJlY2hlY2tfZGlzdGFuY2VzOwogCiAJCQkJLyoKLQkJCQkgKiBJbiBhbiBpbmRleC1v bmx5IHNjYW4sIGFsc28gZmV0Y2ggdGhlIGRhdGEgZnJvbSB0aGUgdHVwbGUuCisJCQkJICogSW4g YW4gaW5kZXgtb25seSBzY2FuLCBhbHNvIGZldGNoIHRoZSBkYXRhIGZyb20gdGhlIHR1cGxlCisJ CQkJICogYW5kIGl0cyB2aXNpYmlsaXR5IHN0YXRlLgogCQkJCSAqLwogCQkJCWlmIChzY2FuLT54 c193YW50X2l0dXApCisJCQkJewogCQkJCQlpdGVtLT5kYXRhLmhlYXAucmVjb250dXAgPSBnaXN0 RmV0Y2hUdXBsZShnaXN0c3RhdGUsIHIsIGl0KTsKKwkJCQkJaXRlbS0+ZGF0YS5oZWFwLnZpc3Jl Y2hlY2sgPQorCQkJCQkJdGFibGVfaW5kZXhfdmlzY2hlY2tfdHVwbGUoc2Nhbi0+aGVhcFJlbGF0 aW9uLAorCQkJCQkJCQkJCQkJICAgJnNvLT52bWJ1ZiwgJml0LT50X3RpZCk7CisJCQkJfQogCQkJ fQogCQkJZWxzZQogCQkJewpAQCAtNTk1LDkgKzYwNiwxNiBAQCBnZXROZXh0TmVhcmVzdChJbmRl eFNjYW5EZXNjIHNjYW4pCiAJCQkJCQkJCQkJCQkgaXRlbS0+ZGlzdGFuY2VzLAogCQkJCQkJCQkJ CQkJIGl0ZW0tPmRhdGEuaGVhcC5yZWNoZWNrRGlzdGFuY2VzKTsKIAotCQkJLyogaW4gYW4gaW5k ZXgtb25seSBzY2FuLCBhbHNvIHJldHVybiB0aGUgcmVjb25zdHJ1Y3RlZCB0dXBsZS4gKi8KKwkJ CS8qCisJCQkgKiBJbiBhbiBpbmRleC1vbmx5IHNjYW4sIGFsc28gcmV0dXJuIHRoZSByZWNvbnN0 cnVjdGVkIHR1cGxlIGFuZAorCQkJICogdGhlIHZpc2liaWxpdHkgY2hlY2sgd2UgZGlkIHdoZW4g d2Ugc3RpbGwgaGFkIGEgcGluIG9uIHRoZQorCQkJICogaW5kZXggcGFnZS4KKwkJCSAqLwogCQkJ aWYgKHNjYW4tPnhzX3dhbnRfaXR1cCkKKwkJCXsKIAkJCQlzY2FuLT54c19oaXR1cCA9IGl0ZW0t PmRhdGEuaGVhcC5yZWNvbnR1cDsKKwkJCQlzY2FuLT54c192aXNyZWNoZWNrID0gaXRlbS0+ZGF0 YS5oZWFwLnZpc3JlY2hlY2s7CisJCQl9CiAJCQlyZXMgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAg LTY4Miw5ICs3MDAsMTcgQEAgZ2lzdGdldHR1cGxlKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXIpCiAJCQkJc2Nhbi0+eHNfaGVhcHRpZCA9IHNvLT5wYWdlRGF0YVtzby0+Y3Vy UGFnZURhdGFdLmhlYXBQdHI7CiAJCQkJc2Nhbi0+eHNfcmVjaGVjayA9IHNvLT5wYWdlRGF0YVtz by0+Y3VyUGFnZURhdGFdLnJlY2hlY2s7CiAKLQkJCQkvKiBpbiBhbiBpbmRleC1vbmx5IHNjYW4s IGFsc28gcmV0dXJuIHRoZSByZWNvbnN0cnVjdGVkIHR1cGxlICovCisJCQkJLyoKKwkJCQkgKiBJ biBhbiBpbmRleC1vbmx5IHNjYW4sIGFsc28gcmV0dXJuIHRoZSByZWNvbnN0cnVjdGVkIHR1cGxl CisJCQkJICogYW5kIHRoZSB2aXNpYmlsaXR5IGNoZWNrIHdlIGRpZCB3aGVuIHdlIHN0aWxsIGhh ZCBhIHBpbiBvbgorCQkJCSAqIHRoZSBpbmRleCBwYWdlLgorCQkJCSAqLwogCQkJCWlmIChzY2Fu LT54c193YW50X2l0dXApCisJCQkJewogCQkJCQlzY2FuLT54c19oaXR1cCA9IHNvLT5wYWdlRGF0 YVtzby0+Y3VyUGFnZURhdGFdLnJlY29udHVwOworCQkJCQlzY2FuLT54c192aXNyZWNoZWNrID0K KwkJCQkJCXNvLT5wYWdlRGF0YVtzby0+Y3VyUGFnZURhdGFdLnZpc3JlY2hlY2s7CisJCQkJfQog CiAJCQkJc28tPmN1clBhZ2VEYXRhKys7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RzY2FuLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nhbi5jCmlu ZGV4IGM2NWY5M2FiZGFlLi43MGI1OTNmMjg5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0c2Nh bi5jCkBAIC0zNDAsNiArMzQwLDEzIEBAIGdpc3RyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBT Y2FuS2V5IGtleSwgaW50IG5rZXlzLAogCQkJcGZyZWUoZm5fZXh0cmFzKTsKIAl9CiAKKwkvKiBy ZWxlYXNlIHJlc291cmNlcyB1c2VkIGluIGluZGV4LW9ubHkgc2NhbnMgKi8KKwlpZiAoQnVmZmVy SXNWYWxpZChzby0+dm1idWYpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihzby0+dm1idWYpOworCQlz by0+dm1idWYgPSBJbnZhbGlkQnVmZmVyOworCX0KKwogCS8qIGFueSBwcmV2aW91cyB4c19oaXR1 cCB3aWxsIGhhdmUgYmVlbiBwZnJlZSdkIGluIGNvbnRleHQgcmVzZXRzIGFib3ZlICovCiAJc2Nh bi0+eHNfaGl0dXAgPSBOVUxMOwogfQpAQCAtMzQ5LDYgKzM1NiwxMyBAQCBnaXN0ZW5kc2NhbihJ bmRleFNjYW5EZXNjIHNjYW4pCiB7CiAJR0lTVFNjYW5PcGFxdWUgc28gPSAoR0lTVFNjYW5PcGFx dWUpIHNjYW4tPm9wYXF1ZTsKIAorCS8qIHJlbGVhc2UgcmVzb3VyY2VzIHVzZWQgaW4gaW5kZXgt b25seSBzY2FucyAqLworCWlmIChCdWZmZXJJc1ZhbGlkKHNvLT52bWJ1ZikpCisJeworCQlSZWxl YXNlQnVmZmVyKHNvLT52bWJ1Zik7CisJCXNvLT52bWJ1ZiA9IEludmFsaWRCdWZmZXI7CisJfQor CiAJLyoKIAkgKiBmcmVlR0lTVHN0YXRlIGlzIGVub3VnaCB0byBjbGVhbiB1cCBldmVyeXRoaW5n IG1hZGUgYnkgZ2lzdGJlZ2luc2NhbiwKIAkgKiBhcyB3ZWxsIGFzIHRoZSBxdWV1ZUN4dCBpZiB0 aGVyZSBpcyBhIHNlcGFyYXRlIGNvbnRleHQgZm9yIGl0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dHZhY3V1bS5jCmluZGV4IDY4NmEwNDE4MDU0Li4xYjlhY2VjNTY1NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWN1dW0uYwpAQCAtMzI2LDEwICszMjYsMTAgQEAgcmVzdGFydDoKIAlyZWN1 cnNlX3RvID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCiAJLyoKLQkgKiBXZSBhcmUgbm90IGdvaW5n IHRvIHN0YXkgaGVyZSBmb3IgYSBsb25nIHRpbWUsIGFnZ3Jlc3NpdmVseSBncmFiIGFuCi0JICog ZXhjbHVzaXZlIGxvY2suCisJICogV2UgYXJlIG5vdCBnb2luZyB0byBzdGF5IGhlcmUgZm9yIGEg bG9uZyB0aW1lLCBhZ2dyZXNzaXZlbHkgZ3JhYiBhCisJICogY2xlYW51cCBsb2NrLgogCSAqLwot CUxvY2tCdWZmZXIoYnVmZmVyLCBHSVNUX0VYQ0xVU0lWRSk7CisJTG9ja0J1ZmZlckZvckNsZWFu dXAoYnVmZmVyKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCiAJaWYgKGdpc3RQ YWdlUmVjeWNsYWJsZShwYWdlKSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 X3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAppbmRleCA0NDUx NGYxY2I4ZC4uYjkwMDJmMGYwYmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTIy LDYgKzIyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRlICJ1dGls cy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAidGFibGVh bS5oIgogCiAvKgogICogTWF4aW11bSBudW1iZXIgb2YgImhhbHZlcyIgYSBwYWdlIGNhbiBiZSBz cGxpdCBpbnRvIGluIG9uZSBvcGVyYXRpb24uCkBAIC0xMjQsNiArMTI1LDggQEAgdHlwZWRlZiBz dHJ1Y3QgR0lTVFNlYXJjaEhlYXBJdGVtCiAJCQkJCQkJCSAqIGluZGV4LW9ubHkgc2NhbnMgKi8K IAlPZmZzZXROdW1iZXIgb2ZmbnVtOwkJLyogdHJhY2sgb2Zmc2V0IGluIHBhZ2UgdG8gbWFyayB0 dXBsZSBhcwogCQkJCQkJCQkgKiBMUF9ERUFEICovCisJdWludDgJCXZpc3JlY2hlY2s7CQkvKiBD YWNoZWQgdmlzaWJpbGl0eSBjaGVjayByZXN1bHQgZm9yIHRoaXMKKwkJCQkJCQkJICogaGVhcCBw b2ludGVyLiAqLwogfSBHSVNUU2VhcmNoSGVhcEl0ZW07CiAKIC8qIFVudmlzaXRlZCBpdGVtLCBl aXRoZXIgaW5kZXggcGFnZSBvciBoZWFwIHR1cGxlICovCkBAIC0xNzYsNiArMTc5LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgR0lTVFNjYW5PcGFxdWVEYXRhCiAJT2Zmc2V0TnVtYmVyIGN1clBhZ2VEYXRh OwkvKiBuZXh0IGl0ZW0gdG8gcmV0dXJuICovCiAJTWVtb3J5Q29udGV4dCBwYWdlRGF0YUN4dDsJ LyogY29udGV4dCBob2xkaW5nIHRoZSBmZXRjaGVkIHR1cGxlcywgZm9yCiAJCQkJCQkJCSAqIGlu ZGV4LW9ubHkgc2NhbnMgKi8KKwkvKiBpbmZvIHVzZWQgYnkgSW5kZXgtT25seSBTY2FucyAqLwor CUJ1ZmZlcgkJdm1idWY7CQkJLyogcmV1c2FibGUgYnVmZmVyIGZvciBJT1MnIHZtIGxvb2t1cHMg Ki8KIH0gR0lTVFNjYW5PcGFxdWVEYXRhOwogCiB0eXBlZGVmIEdJU1RTY2FuT3BhcXVlRGF0YSAq R0lTVFNjYW5PcGFxdWU7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000e5181606537d7169 Content-Type: application/octet-stream; name="v02-0001-Expose-visibility-checking-shim-for-index-usage.patch" Content-Disposition: attachment; filename="v02-0001-Expose-visibility-checking-shim-for-index-usage.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0nnidv3 RnJvbSAwNjU3MjBkMWU2YWQzMWRkNGIwOTJmM2NlYjEwYzZhODgyMDA2ODNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgQXByIDIwMjUgMTQ6NTc6MDYgKzAyMDAKU3Vi amVjdDogW1BBVENIIHYwMiAxLzRdIEV4cG9zZSB2aXNpYmlsaXR5IGNoZWNraW5nIHNoaW0gZm9y IGluZGV4IHVzYWdlCgpUaGlzIHdpbGwgYmUgdGhlIGJhY2tib25lIG9mIGEgZml4IGZvciB2aXNp YmlsaXR5IGlzc3VlcyBpbiBnaXN0IGFuZApzcC1naXN0J3MgaW5kZXgtb25seSBzY2FuIGNvZGUg aW4gbGF0ZXIgY29tbWl0cy4KClRoZSBpc3N1ZSB0byBiZSBzb2x2ZWQgaXMgaW5kZXggc2NhbnMg Y2FjaGluZyB0dXBsZXMgaW4gbWVtb3J5IHRoYXQKYXJlIGJlaW5nIHJlbW92ZWQgYnkgYSBjb25j dXJyZW50bHkgcnVubmluZyB2YWN1dW07IHRvIHRoZSBwb2ludCB0aGF0CnRoZSBWQUNVVU0gcHJv Y2VzcyBoYXMgcmVtb3ZlZCB0aGUgdHVwbGUgYW5kIG1hcmtlZCBpdHMgcGFnZSBhcwpBTExfVklT SUJMRSBieSB0aGUgdGltZSB0aGUgSU9TIGNvZGUgcmV0dXJucyB0aGF0IHR1cGxlIHRocm91Z2gK YW1nZXR0dXBsZS4KCldoaWxlIHRoZSBzdHJ1Y3R1cmUgb2YgSW5kZXhTY2FuRGVzYyBpcyB1cGRh dGVkLCB0aGlzIG5ldyBmaWVsZCBpcwpsb2NhdGVkIGluIGFuIGFsaWdubWVudCBnYXAsIHRodXMg bWFraW5nIHRoaXMgbmV3IGZpZWxkIHNhZmUgdG8gdXNlLgoKQmFja3BhdGNoLXRocm91Z2g6IDE0 Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICB8ICA2ICsrCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIHwgODYgKysrKysrKysrKysr KysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgIHwg ODEgKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCAg ICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAg ICAgfCA1MyArKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9pbmRleGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IDc5 NjdlOTM5ODQ3Li5kNGI0NTc4MDNkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCkBA IC02MDYsNiArNjA2LDEyIEBAIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2Nhbiwg U2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQg YSBzbmFwc2hvdCBpcyBwdXNoZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChSZWNlbnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHhzX3Zpc3JlY2hlY2ss IHNvIHdlIGRvbid0IGNvbmZ1c2UgdGhlIG5leHQgdHVwbGUncyB2aXNpYmlsaXR5CisJICogc3Rh dGUgd2l0aCB0aGF0IG9mIHRoZSBwcmV2aW91cy4KKwkgKi8KKwlzY2FuLT54c192aXNyZWNoZWNr ID0gVE1WQ19VbmNoZWNrZWQ7CisKIAkvKgogCSAqIFRoZSBBTSdzIGFtZ2V0dHVwbGUgcHJvYyBm aW5kcyB0aGUgbmV4dCBpbmRleCBlbnRyeSBtYXRjaGluZyB0aGUgc2NhbgogCSAqIGtleXMsIGFu ZCBwdXRzIHRoZSBUSUQgaW50byBzY2FuLT54c19oZWFwdGlkLiAgSXQgc2hvdWxkIGFsc28gc2V0 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCBkNTIwMTJlOGE2 OS4uNTBkYzk2ODI5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwpAQCAtMTI0LDEzICsxMjQsMTYgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUg Km5vZGUpCiAJd2hpbGUgKCh0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2FuZGVzYywgZGlyZWN0 aW9uKSkgIT0gTlVMTCkKIAl7CiAJCWJvb2wJCXR1cGxlX2Zyb21faGVhcCA9IGZhbHNlOworCQlU TVZDX1Jlc3VsdCB2aXNjaGVjayA9IHNjYW5kZXNjLT54c192aXNyZWNoZWNrOwogCiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyoKIAkJICogV2UgY2FuIHNraXAgdGhlIGhlYXAgZmV0 Y2ggaWYgdGhlIFRJRCByZWZlcmVuY2VzIGEgaGVhcCBwYWdlIG9uCiAJCSAqIHdoaWNoIGFsbCB0 dXBsZXMgYXJlIGtub3duIHZpc2libGUgdG8gZXZlcnlib2R5LiAgSW4gYW55IGNhc2UsCi0JCSAq IHdlJ2xsIHVzZSB0aGUgaW5kZXggdHVwbGUgbm90IHRoZSBoZWFwIHR1cGxlIGFzIHRoZSBkYXRh IHNvdXJjZS4KKwkJICogd2UnbGwgdXNlIHRoZSBpbmRleCB0dXBsZSBub3QgdGhlIGhlYXAgdHVw bGUgYXMgdGhlIGRhdGEgc291cmNlLiBXZQorCQkgKiBjYW4gc2tpcCB0aGUgVk0gbG9va3VwIGlm IHRoZSBpbmRleCBoYXMgYWxyZWFkeSBpc3N1ZWQgdGhhdCBWTQorCQkgKiBsb29rdXAsIGluZGlj YXRlZCBieSBhIG5vbi1VbmNoZWNrZWQgdmFsdWUgaW4geHNfdmlzcmVjaGVjay4KIAkJICoKIAkJ ICogTm90ZSBvbiBNZW1vcnkgT3JkZXJpbmcgRWZmZWN0czogdmlzaWJpbGl0eW1hcF9nZXRfc3Rh dHVzIGRvZXMgbm90CiAJCSAqIGxvY2sgdGhlIHZpc2liaWxpdHkgbWFwIGJ1ZmZlciwgYW5kIHRo ZXJlZm9yZSB0aGUgcmVzdWx0IHdlIHJlYWQKQEAgLTE2MCwzNyArMTYzLDYyIEBAIEluZGV4T25s eU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkgKgogCQkgKiBJdCdzIHdvcnRoIGdv aW5nIHRocm91Z2ggdGhpcyBjb21wbGV4aXR5IHRvIGF2b2lkIG5lZWRpbmcgdG8gbG9jawogCQkg KiB0aGUgVk0gYnVmZmVyLCB3aGljaCBjb3VsZCBjYXVzZSBzaWduaWZpY2FudCBjb250ZW50aW9u LgorCQkgKgorCQkgKiBUaGUgaW5kZXggZG9pbmcgdGhlc2UgY2hlY2tzIGZvciB1cyBkb2Vzbid0 IG1hdGVyaWFsbHkgY2hhbmdlIHRoZXNlCisJCSAqIGNvbnNpZGVyYXRpb25zLgogCQkgKi8KLQkJ aWYgKCFWTV9BTExfVklTSUJMRShzY2FuZGVzYy0+aGVhcFJlbGF0aW9uLAotCQkJCQkJCUl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKSwKLQkJCQkJCQkmbm9kZS0+aW9zc19WTUJ1ZmZlcikp Ci0JCXsKLQkJCS8qCi0JCQkgKiBSYXRzLCB3ZSBoYXZlIHRvIHZpc2l0IHRoZSBoZWFwIHRvIGNo ZWNrIHZpc2liaWxpdHkuCi0JCQkgKi8KLQkJCUluc3RyQ291bnRUdXBsZXMyKG5vZGUsIDEpOwot CQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkp Ci0JCQkJY29udGludWU7CQkvKiBubyB2aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRy eSAqLworCQlpZiAodmlzY2hlY2sgPT0gVE1WQ19VbmNoZWNrZWQpCisJCQl2aXNjaGVjayA9IHRh YmxlX2luZGV4X3Zpc2NoZWNrX3R1cGxlKHNjYW5kZXNjLT5oZWFwUmVsYXRpb24sCisJCQkJCQkJ CQkJCQkgICZub2RlLT5pb3NzX1ZNQnVmZmVyLAorCQkJCQkJCQkJCQkJICB0aWQpOwogCi0JCQlF eGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CisJCUFzc2VydCh2aXNjaGVjayAh PSBUTVZDX1VuY2hlY2tlZCk7CiAKLQkJCS8qCi0JCQkgKiBPbmx5IE1WQ0Mgc25hcHNob3RzIGFy ZSBzdXBwb3J0ZWQgaGVyZSwgc28gdGhlcmUgc2hvdWxkIGJlIG5vCi0JCQkgKiBuZWVkIHRvIGtl ZXAgZm9sbG93aW5nIHRoZSBIT1QgY2hhaW4gb25jZSBhIHZpc2libGUgZW50cnkgaGFzCi0JCQkg KiBiZWVuIGZvdW5kLiAgSWYgd2UgZGlkIHdhbnQgdG8gYWxsb3cgdGhhdCwgd2UnZCBuZWVkIHRv IGtlZXAKLQkJCSAqIG1vcmUgc3RhdGUgdG8gcmVtZW1iZXIgbm90IHRvIGNhbGwgaW5kZXhfZ2V0 bmV4dF90aWQgbmV4dCB0aW1lLgotCQkJICovCi0JCQlpZiAoc2NhbmRlc2MtPnhzX2hlYXBfY29u dGludWUpCi0JCQkJZWxvZyhFUlJPUiwgIm5vbi1NVkNDIHNuYXBzaG90cyBhcmUgbm90IHN1cHBv cnRlZCBpbiBpbmRleC1vbmx5IHNjYW5zIik7Ci0KLQkJCS8qCi0JCQkgKiBOb3RlOiBhdCB0aGlz IHBvaW50IHdlIGFyZSBob2xkaW5nIGEgcGluIG9uIHRoZSBoZWFwIHBhZ2UsIGFzCi0JCQkgKiBy ZWNvcmRlZCBpbiBzY2FuZGVzYy0+eHNfY2J1Zi4gIFdlIGNvdWxkIHJlbGVhc2UgdGhhdCBwaW4g bm93LAotCQkJICogYnV0IGl0J3Mgbm90IGNsZWFyIHdoZXRoZXIgaXQncyBhIHdpbiB0byBkbyBz by4gIFRoZSBuZXh0IGluZGV4Ci0JCQkgKiBlbnRyeSBtaWdodCByZXF1aXJlIGEgdmlzaXQgdG8g dGhlIHNhbWUgaGVhcCBwYWdlLgotCQkJICovCi0KLQkJCXR1cGxlX2Zyb21faGVhcCA9IHRydWU7 CisJCXN3aXRjaCAodmlzY2hlY2spCisJCXsKKwkJCWNhc2UgVE1WQ19VbmNoZWNrZWQ6CisJCQkJ ZWxvZyhFUlJPUiwgIkZhaWxlZCB0byBjaGVjayB2aXNpYmlsaXR5IGZvciB0dXBsZSIpOworCisJ CQkJLyoKKwkJCQkgKiBJbiBjYXNlIG9mIGNvbXBpbGVycyB0aGF0IGRvbid0IHVuZGVydGFuZCB0 aGF0IGVsb2coRVJST1IpCisJCQkJICogZG9lbnMndCBleGl0LCBidXQgd2hpY2ggZG8gaGF2ZSBh IGZ1bmN0aW9uYWwKKwkJCQkgKiAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoIHdhcm5pbmc6CisJCQkJ ICovCisJCQkJLyogZmFsbHRocm91Z2ggKi8KKwkJCWNhc2UgVE1WQ19NYXliZVZpc2libGU6CisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBSYXRzLCB3ZSBoYXZlIHRvIHZpc2l0IHRoZSBoZWFwIHRv IGNoZWNrIHZpc2liaWxpdHkuCisJCQkJCSAqLworCQkJCQlJbnN0ckNvdW50VHVwbGVzMihub2Rl LCAxKTsKKwkJCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBub2RlLT5pb3NzX1Rh YmxlU2xvdCkpCisJCQkJCQljb250aW51ZTsJLyogbm8gdmlzaWJsZSB0dXBsZSwgdHJ5IG5leHQg aW5kZXggZW50cnkgKi8KKworCQkJCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xv dCk7CisKKwkJCQkJLyoKKwkJCQkJICogT25seSBNVkNDIHNuYXBzaG90cyBhcmUgc3VwcG9ydGVk IGhlcmUsIHNvIHRoZXJlIHNob3VsZAorCQkJCQkgKiBiZSBubyBuZWVkIHRvIGtlZXAgZm9sbG93 aW5nIHRoZSBIT1QgY2hhaW4gb25jZSBhCisJCQkJCSAqIHZpc2libGUgZW50cnkgaGFzIGJlZW4g Zm91bmQuICBJZiB3ZSBkaWQgd2FudCB0byBhbGxvdworCQkJCQkgKiB0aGF0LCB3ZSdkIG5lZWQg dG8ga2VlcCBtb3JlIHN0YXRlIHRvIHJlbWVtYmVyIG5vdCB0bworCQkJCQkgKiBjYWxsIGluZGV4 X2dldG5leHRfdGlkIG5leHQgdGltZS4KKwkJCQkJICovCisJCQkJCWlmIChzY2FuZGVzYy0+eHNf aGVhcF9jb250aW51ZSkKKwkJCQkJCWVsb2coRVJST1IsICJub24tTVZDQyBzbmFwc2hvdHMgYXJl IG5vdCBzdXBwb3J0ZWQgaW4gaW5kZXgtb25seSBzY2FucyIpOworCisJCQkJCS8qCisJCQkJCSAq IE5vdGU6IGF0IHRoaXMgcG9pbnQgd2UgYXJlIGhvbGRpbmcgYSBwaW4gb24gdGhlIGhlYXAKKwkJ CQkJICogcGFnZSwgYXMgcmVjb3JkZWQgaW4gc2NhbmRlc2MtPnhzX2NidWYuICBXZSBjb3VsZAor CQkJCQkgKiByZWxlYXNlIHRoYXQgcGluIG5vdywgYnV0IGl0J3Mgbm90IGNsZWFyIHdoZXRoZXIg aXQncyBhCisJCQkJCSAqIHdpbiB0byBkbyBzby4gVGhlIG5leHQgaW5kZXggZW50cnkgbWlnaHQg cmVxdWlyZSBhCisJCQkJCSAqIHZpc2l0IHRvIHRoZSBzYW1lIGhlYXAgcGFnZS4KKwkJCQkJICov CisKKwkJCQkJdHVwbGVfZnJvbV9oZWFwID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJ Y2FzZSBUTVZDX1Zpc2libGU6CisJCQkJYnJlYWs7CiAJCX0KIAogCQkvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYwppbmRleCBiOTQ0OWI0NTc0YS4uYzMwYTIyZTU2NDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9zZWxmdW5jcy5jCkBAIC03MTk1LDQ5ICs3MTk1LDcxIEBAIGdldF9hY3R1YWxfdmFyaWFibGVf ZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJlbCwKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkg c2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2Fu KGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKKwlpbmRleF9zY2FuLT54c192aXNy ZWNoZWNrID0gVE1WQ19VbmNoZWNrZWQ7CiAKIAkvKiBGZXRjaCBmaXJzdC9uZXh0IHR1cGxlIGlu IHNwZWNpZmllZCBkaXJlY3Rpb24gKi8KIAl3aGlsZSAoKHRpZCA9IGluZGV4X2dldG5leHRfdGlk KGluZGV4X3NjYW4sIGluZGV4c2NhbmRpcikpICE9IE5VTEwpCiAJewogCQlCbG9ja051bWJlciBi bG9jayA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKTsKKwkJVE1WQ19SZXN1bHQgdmlz cmVzID0gaW5kZXhfc2Nhbi0+eHNfdmlzcmVjaGVjazsKIAotCQlpZiAoIVZNX0FMTF9WSVNJQkxF KGhlYXBSZWwsCi0JCQkJCQkJYmxvY2ssCi0JCQkJCQkJJnZtYnVmZmVyKSkKKwkJaWYgKHZpc3Jl cyA9PSBUTVZDX1VuY2hlY2tlZCkKKwkJCXZpc3JlcyA9IHRhYmxlX2luZGV4X3Zpc2NoZWNrX3R1 cGxlKGhlYXBSZWwsICZ2bWJ1ZmZlciwgdGlkKTsKKworCQlBc3NlcnQodmlzcmVzICE9IFRNVkNf VW5jaGVja2VkKTsKKworCQlzd2l0Y2ggKHZpc3JlcykKIAkJewotCQkJLyogUmF0cywgd2UgaGF2 ZSB0byB2aXNpdCB0aGUgaGVhcCB0byBjaGVjayB2aXNpYmlsaXR5ICovCi0JCQlpZiAoIWluZGV4 X2ZldGNoX2hlYXAoaW5kZXhfc2NhbiwgdGFibGVzbG90KSkKLQkJCXsKKwkJCWNhc2UgVE1WQ19V bmNoZWNrZWQ6CisJCQkJZWxvZyhFUlJPUiwgIkZhaWxlZCB0byBjaGVjayB2aXNpYmlsaXR5IGZv ciB0dXBsZSIpOworCiAJCQkJLyoKLQkJCQkgKiBObyB2aXNpYmxlIHR1cGxlIGZvciB0aGlzIGlu ZGV4IGVudHJ5LCBzbyB3ZSBuZWVkIHRvCi0JCQkJICogYWR2YW5jZSB0byB0aGUgbmV4dCBlbnRy eS4gIEJlZm9yZSBkb2luZyBzbywgY291bnQgaGVhcAotCQkJCSAqIHBhZ2UgZmV0Y2hlcyBhbmQg Z2l2ZSB1cCBpZiB3ZSd2ZSBkb25lIHRvbyBtYW55LgotCQkJCSAqCi0JCQkJICogV2UgZG9uJ3Qg Y2hhcmdlIGEgcGFnZSBmZXRjaCBpZiB0aGlzIGlzIHRoZSBzYW1lIGhlYXAgcGFnZQotCQkJCSAq IGFzIHRoZSBwcmV2aW91cyB0dXBsZS4gIFRoaXMgaXMgb24gdGhlIGNvbnNlcnZhdGl2ZSBzaWRl LAotCQkJCSAqIHNpbmNlIG90aGVyIHJlY2VudGx5LWFjY2Vzc2VkIHBhZ2VzIGFyZSBwcm9iYWJs eSBzdGlsbCBpbgotCQkJCSAqIGJ1ZmZlcnMgdG9vOyBidXQgaXQncyBnb29kIGVub3VnaCBmb3Ig dGhpcyBoZXVyaXN0aWMuCisJCQkJICogSW4gY2FzZSBvZiBjb21waWxlcnMgdGhhdCBkb24ndCB1 bmRlcnRhbmQgdGhhdCBlbG9nKEVSUk9SKQorCQkJCSAqIGRvZW5zJ3QgZXhpdCwgYW5kIHdoaWNo IGhhdmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaDoKIAkJCQkgKi8KKwkJCQkvKiBmYWxsdGhyb3Vn aCAqLworCQkJY2FzZSBUTVZDX01heWJlVmlzaWJsZToKKwkJCQl7CisJCQkJCS8qIFJhdHMsIHdl IGhhdmUgdG8gdmlzaXQgdGhlIGhlYXAgdG8gY2hlY2sgdmlzaWJpbGl0eSAqLworCQkJCQlpZiAo IWluZGV4X2ZldGNoX2hlYXAoaW5kZXhfc2NhbiwgdGFibGVzbG90KSkKKwkJCQkJeworCQkJCQkJ LyoKKwkJCQkJCSAqIE5vIHZpc2libGUgdHVwbGUgZm9yIHRoaXMgaW5kZXggZW50cnksIHNvIHdl IG5lZWQKKwkJCQkJCSAqIHRvIGFkdmFuY2UgdG8gdGhlIG5leHQgZW50cnkuICBCZWZvcmUgZG9p bmcgc28sCisJCQkJCQkgKiBjb3VudCBoZWFwIHBhZ2UgZmV0Y2hlcyBhbmQgZ2l2ZSB1cCBpZiB3 ZSd2ZSBkb25lCisJCQkJCQkgKiB0b28gbWFueS4KKwkJCQkJCSAqCisJCQkJCQkgKiBXZSBkb24n dCBjaGFyZ2UgYSBwYWdlIGZldGNoIGlmIHRoaXMgaXMgdGhlIHNhbWUKKwkJCQkJCSAqIGhlYXAg cGFnZSBhcyB0aGUgcHJldmlvdXMgdHVwbGUuICBUaGlzIGlzIG9uIHRoZQorCQkJCQkJICogY29u c2VydmF0aXZlIHNpZGUsIHNpbmNlIG90aGVyIHJlY2VudGx5LWFjY2Vzc2VkCisJCQkJCQkgKiBw YWdlcyBhcmUgcHJvYmFibHkgc3RpbGwgaW4gYnVmZmVycyB0b287IGJ1dCBpdCdzCisJCQkJCQkg KiBnb29kIGVub3VnaCBmb3IgdGhpcyBoZXVyaXN0aWMuCisJCQkJCQkgKi8KICNkZWZpbmUgVklT SVRFRF9QQUdFU19MSU1JVCAxMDAKIAotCQkJCWlmIChibG9jayAhPSBsYXN0X2hlYXBfYmxvY2sp Ci0JCQkJewotCQkJCQlsYXN0X2hlYXBfYmxvY2sgPSBibG9jazsKLQkJCQkJbl92aXNpdGVkX2hl YXBfcGFnZXMrKzsKLQkJCQkJaWYgKG5fdmlzaXRlZF9oZWFwX3BhZ2VzID4gVklTSVRFRF9QQUdF U19MSU1JVCkKLQkJCQkJCWJyZWFrOwotCQkJCX0KKwkJCQkJCWlmIChibG9jayAhPSBsYXN0X2hl YXBfYmxvY2spCisJCQkJCQl7CisJCQkJCQkJbGFzdF9oZWFwX2Jsb2NrID0gYmxvY2s7CisJCQkJ CQkJbl92aXNpdGVkX2hlYXBfcGFnZXMrKzsKKwkJCQkJCQlpZiAobl92aXNpdGVkX2hlYXBfcGFn ZXMgPiBWSVNJVEVEX1BBR0VTX0xJTUlUKQorCQkJCQkJCQlnb3RvIGV4aXRfbG9vcDsKKwkJCQkJ CX0KIAotCQkJCWNvbnRpbnVlOwkJLyogbm8gdmlzaWJsZSB0dXBsZSwgdHJ5IG5leHQgaW5kZXgg ZW50cnkgKi8KLQkJCX0KKwkJCQkJCWNvbnRpbnVlOwkvKiBubyB2aXNpYmxlIHR1cGxlLCB0cnkg bmV4dCBpbmRleCBlbnRyeSAqLworCQkJCQl9CiAKLQkJCS8qIFdlIGRvbid0IGFjdHVhbGx5IG5l ZWQgdGhlIGhlYXAgdHVwbGUgZm9yIGFueXRoaW5nICovCi0JCQlFeGVjQ2xlYXJUdXBsZSh0YWJs ZXNsb3QpOworCQkJCQkvKiBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSBoZWFwIHR1cGxlIGZv ciBhbnl0aGluZyAqLworCQkJCQlFeGVjQ2xlYXJUdXBsZSh0YWJsZXNsb3QpOwogCi0JCQkvKgot CQkJICogV2UgZG9uJ3QgY2FyZSB3aGV0aGVyIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZSB2aXNpYmxl IHR1cGxlIGluCi0JCQkgKiB0aGUgSE9UIGNoYWluOyBpZiBhbnkgYXJlIHZpc2libGUsIHRoYXQn cyBnb29kIGVub3VnaC4KLQkJCSAqLworCQkJCQkvKgorCQkJCQkgKiBXZSBkb24ndCBjYXJlIHdo ZXRoZXIgdGhlcmUncyBtb3JlIHRoYW4gb25lIHZpc2libGUKKwkJCQkJICogdHVwbGUgaW4gdGhl IEhPVCBjaGFpbjsgaWYgYW55IGFyZSB2aXNpYmxlLCB0aGF0J3MgZ29vZAorCQkJCQkgKiBlbm91 Z2guCisJCQkJCSAqLworCQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNlIFRNVkNfVmlzaWJsZToK KwkJCQlicmVhazsKIAkJfQogCiAJCS8qCkBAIC03MjcwLDYgKzcyOTIsNyBAQCBnZXRfYWN0dWFs X3ZhcmlhYmxlX2VuZHBvaW50KFJlbGF0aW9uIGhlYXBSZWwsCiAJCWhhdmVfZGF0YSA9IHRydWU7 CiAJCWJyZWFrOwogCX0KK2V4aXRfbG9vcDoKIAogCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVm ZmVyKQogCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IDJl YTA2YTY3YTYzLi5hMmM5NjExMTYxNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Jl bHNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBAIC0xODgsNiArMTg4 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAlJbmRleEZldGNoVGFibGVE YXRhICp4c19oZWFwZmV0Y2g7CiAKIAlib29sCQl4c19yZWNoZWNrOwkJLyogVCBtZWFucyBzY2Fu IGtleXMgbXVzdCBiZSByZWNoZWNrZWQgKi8KKwl1aW50OAkJeHNfdmlzcmVjaGVjazsJLyogVE1W Q19SZXN1bHQ7IHNlZSB0YWJsZWFtLmggKi8KIAogCS8qCiAJICogV2hlbiBmZXRjaGluZyB3aXRo IGFuIG9yZGVyaW5nIG9wZXJhdG9yLCB0aGUgdmFsdWVzIG9mIHRoZSBPUkRFUiBCWQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKaW5kZXggZjJjMzY2OTZiY2EuLjc3YTkxZGYyMmUzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKKyNpbmNs dWRlICJ2aXNpYmlsaXR5bWFwLmgiCiAKIAogI2RlZmluZSBERUZBVUxUX1RBQkxFX0FDQ0VTU19N RVRIT0QJImhlYXAiCkBAIC0yNzYsNiArMjc3LDI4IEBAIHR5cGVkZWYgc3RydWN0IFRNX0luZGV4 RGVsZXRlT3AKIAlUTV9JbmRleFN0YXR1cyAqc3RhdHVzOwogfSBUTV9JbmRleERlbGV0ZU9wOwog CisvKgorICogT3V0cHV0IG9mIHRhYmxlX2luZGV4X3Zpc2NoZWNrX3R1cGxlKCkKKyAqCisgKiBJ bmRleC1vbmx5IHNjYW5zIG5lZWQgdG8ga25vdyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgYXNzb2Np YXRlZCB0YWJsZSB0dXBsZXMKKyAqIGJlZm9yZSB0aGV5IGNhbiByZXR1cm4gdGhlIGluZGV4IHR1 cGxlLiAgSWYgdGhlIGluZGV4IHR1cGxlIGlzIGtub3duIHRvIGJlCisgKiB2aXNpYmxlIHdpdGgg YSBjaGVhcCBjaGVjaywgd2UgY2FuIHJldHVybiBpdCBkaXJlY3RseSB3aXRob3V0IHJlcXVlc3Rp bmcKKyAqIHRoZSB2aXNpYmlsaXR5IGluZm8gZnJvbSB0aGUgdGFibGUgQU0gZGlyZWN0bHkuCisg KgorICogVGhpcyBBTSBBUEkgZXhwb3NlcyBhIGNoZWFwIHZpc2liaWxpdHkgY2hlY2tpbmcgQVBJ IHRvIGluZGV4ZXMsIGFsbG93aW5nCisgKiB0aGVzZSBpbmRleGVzIHRvIGNoZWNrIG11bHRpcGxl IHR1cGxlcyB3b3J0aCBvZiB2aXNpYmlsaXR5IGluZm8gYXQgb25jZSwKKyAqIGFuZCBhbGxvd2lu ZyB0aGUgQU0gdG8gc3RvcmUgdGhlc2UgY2hlY2tzLCBpbXByb3ZpbmcgdGhlIHBpbm5pbmcgZXJn b25vbWljcworICogb2YgaW5kZXggQU1zIGJ5IGFsbG93aW5nIGEgc2NhbiB0byBjYWNoZSBpbmRl eCB0dXBsZXMgaW4gbWVtb3J5IHdpdGhvdXQKKyAqIGhvbGRpbmcgcGlucyBvbiB0aG9zZSBpbmRl eCB0dXBsZXMnIHBhZ2VzIHVudGlsIHRoZSBpbmRleCB0dXBsZXMgd2VyZQorICogcmV0dXJuZWQu CisgKi8KK3R5cGVkZWYgZW51bSBUTVZDX1Jlc3VsdAoreworCVRNVkNfVW5jaGVja2VkLAorCVRN VkNfTWF5YmVWaXNpYmxlLAorCVRNVkNfVmlzaWJsZSwKK30JCQlUTVZDX1Jlc3VsdDsKKwogLyoK ICAqICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIHRhYmxlX3R1cGxlX2luc2VydC4gIEFjY2VzcyBt ZXRob2RzIG1heSBkZWZpbmUKICAqIHRoZWlyIG93biBiaXRzIGZvciBpbnRlcm5hbCB1c2UsIGFz IGxvbmcgYXMgdGhleSBkb24ndCBjb2xsaWRlIHdpdGggdGhlc2UuCkBAIC0xNDE0LDYgKzE0Mzcs MzYgQEAgdGFibGVfaW5kZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsIFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2RlbGV0ZV90 dXBsZXMocmVsLCBkZWxzdGF0ZSk7CiB9CiAKKy8qCisgKiBEZXRlcm1pbmUgcm91Z2ggdmlzaWJp bGl0eSBpbmZvcm1hdGlvbiBvZiBpbmRleCB0dXBsZXMgYmFzZWQgb24gZWFjaCBUSUQuCisgKgor ICogRGV0ZXJtaW5lcyB3aGljaCBlbnRyaWVzIGZyb20gaW5kZXggQU0gY2FsbGVyJ3MgVE1fSW5k ZXhWaXNpYmlsaXR5Q2hlY2tPcAorICogc3RhdGUgcG9pbnQgdG8gVE1WQ19WSVNJQkxFIG9yIFRN VkNfTUFZQkVfVklTSUJMRSB0YWJsZSB0dXBsZXMsIGF0IGxvdyBJTworICogb3ZlcmhlYWQuICBG b3IgdGhlIGhlYXAgQU0sIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBlZmZlY3RpdmVseSBhIHdyYXBw ZXIKKyAqIGFyb3VuZCBWTV9BTExfRlJPWkVOLgorICoKKyAqIE9uIHJldHVybiwgYWxsIFRNX1Zp c0NoZWNrcyBpbmRpY2F0ZWQgYnkgY2hlY2tvcC0+Y2hlY2t0aWRzIHdpbGwgaGF2ZSBiZWVuCisg KiB1cGRhdGVkIHdpdGggdGhlIGNvcnJlY3QgdmlzaWJpbGl0eSBzdGF0dXMuCisgKgorICogTm90 ZSB0aGF0IHRoZXJlIGlzIG5vIHZhbHVlIGZvciAiZGVmaW5pdGVseSBkZWFkIiB0dXBsZXMsIGFz IHRoZSBIZWFwIEFNCisgKiBkb2Vzbid0IGhhdmUgYW4gZWZmaWNpZW50IG1ldGhvZCB0byBkZXRl cm1pbmUgdGhhdCBhIHR1cGxlIGlzIGRlYWQgdG8gYWxsCisgKiB1c2VycywgYXMgaXQgd291bGQg aGF2ZSB0byBnbyBpbnRvIHRoZSBoZWFwLiAgSWYgYW5kIHdoZW4gQU1zIGFyZSBidWlsdAorICog dGhhdCB3b3VsZCBzdXBwb3J0IFZNIGNoZWNrcyB3aXRoIGFuIGVxdWl2YWxlbnQgdG8gVk1fQUxM X0RFQUQgdGhpcworICogZGVjaXNpb24gY2FuIGJlIHJlY29uc2lkZXJlZC4KKyAqLworc3RhdGlj IGlubGluZSBUTVZDX1Jlc3VsdAordGFibGVfaW5kZXhfdmlzY2hlY2tfdHVwbGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgKnZtYnVmZmVyLCBJdGVtUG9pbnRlciB0aWQpCit7CisJQmxvY2tOdW1iZXIg Ymxrbm8gPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyTm9DaGVjayh0aWQpOworCVRNVkNfUmVz dWx0IHJlczsKKworCWlmIChWTV9BTExfVklTSUJMRShyZWwsIGJsa25vLCB2bWJ1ZmZlcikpCisJ CXJlcyA9IFRNVkNfVmlzaWJsZTsKKwllbHNlCisJCXJlcyA9IFRNVkNfTWF5YmVWaXNpYmxlOwor CisJcmV0dXJuIHJlczsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogIEZ1bmN0aW9u cyBmb3IgbWFuaXB1bGF0aW9ucyBvZiBwaHlzaWNhbCB0dXBsZXMuCi0tIAoyLjUwLjEgKEFwcGxl IEdpdC0xNTUpCgo= --000000000000e5181606537d7169 Content-Type: application/octet-stream; name="v02-0003-SP-GIST-Fix-visibility-issues-in-IOS.patch" Content-Disposition: attachment; filename="v02-0003-SP-GIST-Fix-visibility-issues-in-IOS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0nnidr1 RnJvbSA5YzNjZGVjZWZiOTgxYmYzZGNhM2EzZTU3ZjdmMDIwOTAxNTczNjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjUgQXByIDIwMjUgMTc6Mjk6NDIgKzAyMDAKU3Vi amVjdDogW1BBVENIIHYwMiAzLzRdIFNQLUdJU1Q6IEZpeCB2aXNpYmlsaXR5IGlzc3VlcyBpbiBJ T1MKClByZXZpb3VzbHksIFNQLUdJU1QgSU9TIGNvdWxkIGJ1ZmZlciB0dXBsZXMgZnJvbSBwYWdl cyB3aGlsZSBWQUNVVU0gY2FtZQphbG9uZyBhbmQgY2xlYW5lZCB1cCBhbiBBTExfREVBRCB0dXBs ZSwgbWFya2luZyB0aGUgdHVwbGUncyBwYWdlCkFMTF9WSVNJQkxFIGFnYWluIGFuZCBtYWtpbmcg SU9TIG1pc3Rha2VubHkgYmVsaWV2ZSB0aGUgdHVwbGUgaXMgaW5kZWVkCnZpc2libGUuCgpXaXRo IHRoaXMgY29tbWl0LCBidWZmZXIgcGlucyBub3cgY29uZmxpY3Qgd2l0aCBTUC1HSVNUIHZhY3V1 bSwgYW5kIHdlIG5vdwpkbyB2aXNpYmlsaXR5IGNoZWNrcyBvbiBoZWFwIGl0ZW1zIHJldHVybmVk IGZyb20gaW5kZXggcGFnZXMgd2hpbGUgd2UKaG9sZCB0aGUgcGluLCBzbyB0aGF0IHRoZSBJT1Mg aW5mcmFzdHJ1Y3R1cmUga25vd3MgdG8gcmVjaGVjayB0aGUgaGVhcApwYWdlIGV2ZW4gaWYgdGhh dCBoZWFwIHBhZ2UgaGFzIGJlY29tZSBBTExfVklTSUJMRSBhZnRlciB3ZSByZWxlYXNlZCB0aGUK aW5kZXggcGFnZS4KCklkZWEgZnJvbSBIZWlra2kgTGlubmFrYW5nYXMKCkJhY2twYXRjaC10aHJv dWdoOiAxNAotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jICAgfCA3MyAr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ2lzdF9wcml2YXRlLmggICB8 ICA1ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bnc2Nhbi5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdzY2FuLmMKaW5kZXggMmNjNWYwNmY1ZDcuLjQ1NWQ1 ODdkZmRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3NjYW4uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3NjYW4uYwpAQCAtMzEsNyArMzEsOCBA QAogdHlwZWRlZiB2b2lkICgqc3RvcmVSZXNfZnVuYykgKFNwR2lzdFNjYW5PcGFxdWUgc28sIEl0 ZW1Qb2ludGVyIGhlYXBQdHIsCiAJCQkJCQkJICAgRGF0dW0gbGVhZlZhbHVlLCBib29sIGlzTnVs bCwKIAkJCQkJCQkgICBTcEdpc3RMZWFmVHVwbGUgbGVhZlR1cGxlLCBib29sIHJlY2hlY2ssCi0J CQkJCQkJICAgYm9vbCByZWNoZWNrRGlzdGFuY2VzLCBkb3VibGUgKmRpc3RhbmNlcyk7CisJCQkJ CQkJICAgYm9vbCByZWNoZWNrRGlzdGFuY2VzLCBkb3VibGUgKmRpc3RhbmNlcywKKwkJCQkJCQkg ICBUTVZDX1Jlc3VsdCB2aXNjaGVjayk7CiAKIC8qCiAgKiBQYWlyaW5nIGhlYXAgY29tcGFyaXNv biBmdW5jdGlvbiBmb3IgdGhlIFNwR2lzdFNlYXJjaEl0ZW0gcXVldWUuCkBAIC0xNDMsNiArMTQ0 LDcgQEAgc3BnQWRkU3RhcnRJdGVtKFNwR2lzdFNjYW5PcGFxdWUgc28sIGJvb2wgaXNudWxsKQog CXN0YXJ0RW50cnktPnRyYXZlcnNhbFZhbHVlID0gTlVMTDsKIAlzdGFydEVudHJ5LT5yZWNoZWNr ID0gZmFsc2U7CiAJc3RhcnRFbnRyeS0+cmVjaGVja0Rpc3RhbmNlcyA9IGZhbHNlOworCXN0YXJ0 RW50cnktPnZpc3JlY2hlY2sgPSBUTVZDX1VuY2hlY2tlZDsKIAogCXNwZ0FkZFNlYXJjaEl0ZW1U b1F1ZXVlKHNvLCBzdGFydEVudHJ5KTsKIH0KQEAgLTE5MCw2ICsxOTIsMTEgQEAgcmVzZXRTcEdp c3RTY2FuT3BhcXVlKFNwR2lzdFNjYW5PcGFxdWUgc28pCiAKIAkJZm9yIChpID0gMDsgaSA8IHNv LT5uUHRyczsgaSsrKQogCQkJcGZyZWUoc28tPnJlY29uVHVwc1tpXSk7CisKKwkJaWYgKEJ1ZmZl cklzVmFsaWQoc28tPnZtYnVmKSkKKwkJCVJlbGVhc2VCdWZmZXIoc28tPnZtYnVmKTsKKworCQlz by0+dm1idWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAlzby0+aVB0ciA9IHNvLT5uUHRycyA9IDA7 CiB9CkBAIC0zODEsNiArMzg4LDEzIEBAIHNwZ3Jlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNj YW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKIAlpZiAoc2NhbmtleSAmJiBzY2FuLT5udW1i ZXJPZktleXMgPiAwKQogCQltZW1jcHkoc2Nhbi0+a2V5RGF0YSwgc2NhbmtleSwgc2Nhbi0+bnVt YmVyT2ZLZXlzICogc2l6ZW9mKFNjYW5LZXlEYXRhKSk7CiAKKwkvKiBwcmVwYXJlIGluZGV4LW9u bHkgc2NhbiByZXF1aXJlbWVudHMgKi8KKwlpZiAoc2Nhbi0+eHNfd2FudF9pdHVwKQorCXsKKwkJ aWYgKHNvLT52aXNyZWNoZWNrID09IE5VTEwpCisJCQlzby0+dmlzcmVjaGVjayA9IHBhbGxvYyhN YXhJbmRleFR1cGxlc1BlclBhZ2UpOworCX0KKwogCS8qIGluaXRpYWxpemUgb3JkZXItYnkgZGF0 YSBpZiBuZWVkZWQgKi8KIAlpZiAob3JkZXJieXMgJiYgc2Nhbi0+bnVtYmVyT2ZPcmRlckJ5cyA+ IDApCiAJewpAQCAtNDQ4LDYgKzQ2Miw5IEBAIHNwZ2VuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu KQogCQlwZnJlZShzY2FuLT54c19vcmRlcmJ5bnVsbHMpOwogCX0KIAorCWlmIChCdWZmZXJJc1Zh bGlkKHNvLT52bWJ1ZikpCisJCVJlbGVhc2VCdWZmZXIoc28tPnZtYnVmKTsKKwogCXBmcmVlKHNv KTsKIH0KIApAQCAtNDk3LDYgKzUxNCw3IEBAIHNwZ05ld0hlYXBJdGVtKFNwR2lzdFNjYW5PcGFx dWUgc28sIGludCBsZXZlbCwgU3BHaXN0TGVhZlR1cGxlIGxlYWZUdXBsZSwKIAlpdGVtLT5pc0xl YWYgPSB0cnVlOwogCWl0ZW0tPnJlY2hlY2sgPSByZWNoZWNrOwogCWl0ZW0tPnJlY2hlY2tEaXN0 YW5jZXMgPSByZWNoZWNrRGlzdGFuY2VzOworCWl0ZW0tPnZpc3JlY2hlY2sgPSBUTVZDX1VuY2hl Y2tlZDsKIAogCXJldHVybiBpdGVtOwogfQpAQCAtNTEwLDcgKzUyOCw4IEBAIHNwZ05ld0hlYXBJ dGVtKFNwR2lzdFNjYW5PcGFxdWUgc28sIGludCBsZXZlbCwgU3BHaXN0TGVhZlR1cGxlIGxlYWZU dXBsZSwKIHN0YXRpYyBib29sCiBzcGdMZWFmVGVzdChTcEdpc3RTY2FuT3BhcXVlIHNvLCBTcEdp c3RTZWFyY2hJdGVtICppdGVtLAogCQkJU3BHaXN0TGVhZlR1cGxlIGxlYWZUdXBsZSwgYm9vbCBp c251bGwsCi0JCQlib29sICpyZXBvcnRlZFNvbWUsIHN0b3JlUmVzX2Z1bmMgc3RvcmVSZXMpCisJ CQlib29sICpyZXBvcnRlZFNvbWUsIHN0b3JlUmVzX2Z1bmMgc3RvcmVSZXMsCisJCQlSZWxhdGlv biB0YWJsZVJlbCkKIHsKIAlEYXR1bQkJbGVhZlZhbHVlOwogCWRvdWJsZQkgICAqZGlzdGFuY2Vz OwpAQCAtNTY2LDYgKzU4NSwxNSBAQCBzcGdMZWFmVGVzdChTcEdpc3RTY2FuT3BhcXVlIHNvLCBT cEdpc3RTZWFyY2hJdGVtICppdGVtLAogCiAJaWYgKHJlc3VsdCkKIAl7CisJCVRNVkNfUmVzdWx0 IHZpc2NoZWNrID0gVE1WQ19VbmNoZWNrZWQ7CisKKwkJaWYgKHNvLT53YW50X2l0dXApCisJCXsK KwkJCUFzc2VydChpdGVtICE9IE5VTEwpOworCQkJdmlzY2hlY2sgPSB0YWJsZV9pbmRleF92aXNj aGVja190dXBsZSh0YWJsZVJlbCwgJnNvLT52bWJ1ZiwKKwkJCQkJCQkJCQkJCSAgJml0ZW0tPmhl YXBQdHIpOworCQl9CisKIAkJLyogaXRlbSBwYXNzZXMgdGhlIHNjYW5rZXlzICovCiAJCWlmIChz by0+bnVtYmVyT2ZOb25OdWxsT3JkZXJCeXMgPiAwKQogCQl7CkBAIC01NzksNiArNjA3LDggQEAg c3BnTGVhZlRlc3QoU3BHaXN0U2Nhbk9wYXF1ZSBzbywgU3BHaXN0U2VhcmNoSXRlbSAqaXRlbSwK IAkJCQkJCQkJCQkJCQkJaXNudWxsLAogCQkJCQkJCQkJCQkJCQlkaXN0YW5jZXMpOwogCisJCQlo ZWFwSXRlbS0+dmlzcmVjaGVjayA9IHZpc2NoZWNrOworCiAJCQlzcGdBZGRTZWFyY2hJdGVtVG9R dWV1ZShzbywgaGVhcEl0ZW0pOwogCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3h0KTsK QEAgLTU4OCw3ICs2MTgsNyBAQCBzcGdMZWFmVGVzdChTcEdpc3RTY2FuT3BhcXVlIHNvLCBTcEdp c3RTZWFyY2hJdGVtICppdGVtLAogCQkJLyogbm9uLW9yZGVyZWQgc2Nhbiwgc28gcmVwb3J0IHRo ZSBpdGVtIHJpZ2h0IGF3YXkgKi8KIAkJCUFzc2VydCghcmVjaGVja0Rpc3RhbmNlcyk7CiAJCQlz dG9yZVJlcyhzbywgJmxlYWZUdXBsZS0+aGVhcFB0ciwgbGVhZlZhbHVlLCBpc251bGwsCi0JCQkJ CSBsZWFmVHVwbGUsIHJlY2hlY2ssIGZhbHNlLCBOVUxMKTsKKwkJCQkJIGxlYWZUdXBsZSwgcmVj aGVjaywgZmFsc2UsIE5VTEwsIHZpc2NoZWNrKTsKIAkJCSpyZXBvcnRlZFNvbWUgPSB0cnVlOwog CQl9CiAJfQpAQCAtNzYwLDcgKzc5MCw4IEBAIHNwZ1Rlc3RMZWFmVHVwbGUoU3BHaXN0U2Nhbk9w YXF1ZSBzbywKIAkJCQkgUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2Zmc2V0LAogCQkJCSBib29s IGlzbnVsbCwgYm9vbCBpc3Jvb3QsCiAJCQkJIGJvb2wgKnJlcG9ydGVkU29tZSwKLQkJCQkgc3Rv cmVSZXNfZnVuYyBzdG9yZVJlcykKKwkJCQkgc3RvcmVSZXNfZnVuYyBzdG9yZVJlcywKKwkJCQkg UmVsYXRpb24gdGFibGVyZWwpCiB7CiAJU3BHaXN0TGVhZlR1cGxlIGxlYWZUdXBsZSA9IChTcEdp c3RMZWFmVHVwbGUpCiAJCVBhZ2VHZXRJdGVtKHBhZ2UsIFBhZ2VHZXRJdGVtSWQocGFnZSwgb2Zm c2V0KSk7CkBAIC03OTYsNyArODI3LDggQEAgc3BnVGVzdExlYWZUdXBsZShTcEdpc3RTY2FuT3Bh cXVlIHNvLAogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZCgmbGVhZlR1cGxlLT5oZWFwUHRy KSk7CiAKLQlzcGdMZWFmVGVzdChzbywgaXRlbSwgbGVhZlR1cGxlLCBpc251bGwsIHJlcG9ydGVk U29tZSwgc3RvcmVSZXMpOworCXNwZ0xlYWZUZXN0KHNvLCBpdGVtLCBsZWFmVHVwbGUsIGlzbnVs bCwgcmVwb3J0ZWRTb21lLCBzdG9yZVJlcywKKwkJCQl0YWJsZXJlbCk7CiAKIAlyZXR1cm4gU0dM VF9HRVRfTkVYVE9GRlNFVChsZWFmVHVwbGUpOwogfQpAQCAtODA5LDggKzg0MSw4IEBAIHNwZ1Rl c3RMZWFmVHVwbGUoU3BHaXN0U2Nhbk9wYXF1ZSBzbywKICAqIG5leHQgcGFnZSBib3VuZGFyeSBv bmNlIHdlIGhhdmUgcmVwb3J0ZWQgYXQgbGVhc3Qgb25lIHR1cGxlLgogICovCiBzdGF0aWMgdm9p ZAotc3BnV2FsayhSZWxhdGlvbiBpbmRleCwgU3BHaXN0U2Nhbk9wYXF1ZSBzbywgYm9vbCBzY2Fu V2hvbGVJbmRleCwKLQkJc3RvcmVSZXNfZnVuYyBzdG9yZVJlcykKK3NwZ1dhbGsoUmVsYXRpb24g aW5kZXgsIFJlbGF0aW9uIHRhYmxlLCBTcEdpc3RTY2FuT3BhcXVlIHNvLAorCQlib29sIHNjYW5X aG9sZUluZGV4LCBzdG9yZVJlc19mdW5jIHN0b3JlUmVzKQogewogCUJ1ZmZlcgkJYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKIAlib29sCQlyZXBvcnRlZFNvbWUgPSBmYWxzZTsKQEAgLTgzMiw3ICs4 NjQsOCBAQCByZWRpcmVjdDoKIAkJCUFzc2VydChzby0+bnVtYmVyT2ZOb25OdWxsT3JkZXJCeXMg PiAwKTsKIAkJCXN0b3JlUmVzKHNvLCAmaXRlbS0+aGVhcFB0ciwgaXRlbS0+dmFsdWUsIGl0ZW0t PmlzTnVsbCwKIAkJCQkJIGl0ZW0tPmxlYWZUdXBsZSwgaXRlbS0+cmVjaGVjaywKLQkJCQkJIGl0 ZW0tPnJlY2hlY2tEaXN0YW5jZXMsIGl0ZW0tPmRpc3RhbmNlcyk7CisJCQkJCSBpdGVtLT5yZWNo ZWNrRGlzdGFuY2VzLCBpdGVtLT5kaXN0YW5jZXMsCisJCQkJCSBpdGVtLT52aXNyZWNoZWNrKTsK IAkJCXJlcG9ydGVkU29tZSA9IHRydWU7CiAJCX0KIAkJZWxzZQpAQCAtODcxLDcgKzkwNCw4IEBA IHJlZGlyZWN0OgogCQkJCQlmb3IgKG9mZnNldCA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBvZmZzZXQg PD0gbWF4OyBvZmZzZXQrKykKIAkJCQkJCSh2b2lkKSBzcGdUZXN0TGVhZlR1cGxlKHNvLCBpdGVt LCBwYWdlLCBvZmZzZXQsCiAJCQkJCQkJCQkJCQlpc251bGwsIHRydWUsCi0JCQkJCQkJCQkJCQkm cmVwb3J0ZWRTb21lLCBzdG9yZVJlcyk7CisJCQkJCQkJCQkJCQkmcmVwb3J0ZWRTb21lLCBzdG9y ZVJlcywKKwkJCQkJCQkJCQkJCXRhYmxlKTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKQEAgLTg4 MSw3ICs5MTUsOCBAQCByZWRpcmVjdDoKIAkJCQkJCUFzc2VydChvZmZzZXQgPj0gRmlyc3RPZmZz ZXROdW1iZXIgJiYgb2Zmc2V0IDw9IG1heCk7CiAJCQkJCQlvZmZzZXQgPSBzcGdUZXN0TGVhZlR1 cGxlKHNvLCBpdGVtLCBwYWdlLCBvZmZzZXQsCiAJCQkJCQkJCQkJCQkgIGlzbnVsbCwgZmFsc2Us Ci0JCQkJCQkJCQkJCQkgICZyZXBvcnRlZFNvbWUsIHN0b3JlUmVzKTsKKwkJCQkJCQkJCQkJCSAg JnJlcG9ydGVkU29tZSwgc3RvcmVSZXMsCisJCQkJCQkJCQkJCQkgIHRhYmxlKTsKIAkJCQkJCWlm IChvZmZzZXQgPT0gU3BHaXN0UmVkaXJlY3RPZmZzZXROdW1iZXIpCiAJCQkJCQkJZ290byByZWRp cmVjdDsKIAkJCQkJfQpAQCAtOTI2LDcgKzk2MSw4IEBAIHN0YXRpYyB2b2lkCiBzdG9yZUJpdG1h cChTcEdpc3RTY2FuT3BhcXVlIHNvLCBJdGVtUG9pbnRlciBoZWFwUHRyLAogCQkJRGF0dW0gbGVh ZlZhbHVlLCBib29sIGlzbnVsbCwKIAkJCVNwR2lzdExlYWZUdXBsZSBsZWFmVHVwbGUsIGJvb2wg cmVjaGVjaywKLQkJCWJvb2wgcmVjaGVja0Rpc3RhbmNlcywgZG91YmxlICpkaXN0YW5jZXMpCisJ CQlib29sIHJlY2hlY2tEaXN0YW5jZXMsIGRvdWJsZSAqZGlzdGFuY2VzLAorCQkJVE1WQ19SZXN1 bHQgdmlzY2hlY2spCiB7CiAJQXNzZXJ0KCFyZWNoZWNrRGlzdGFuY2VzICYmICFkaXN0YW5jZXMp OwogCXRibV9hZGRfdHVwbGVzKHNvLT50Ym0sIGhlYXBQdHIsIDEsIHJlY2hlY2spOwpAQCAtOTQ0 LDcgKzk4MCw3IEBAIHNwZ2dldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1hcCAq dGJtKQogCXNvLT50Ym0gPSB0Ym07CiAJc28tPm50aWRzID0gMDsKIAotCXNwZ1dhbGsoc2Nhbi0+ aW5kZXhSZWxhdGlvbiwgc28sIHRydWUsIHN0b3JlQml0bWFwKTsKKwlzcGdXYWxrKHNjYW4tPmlu ZGV4UmVsYXRpb24sIHNjYW4tPmhlYXBSZWxhdGlvbiwgc28sIHRydWUsIHN0b3JlQml0bWFwKTsK IAogCXJldHVybiBzby0+bnRpZHM7CiB9CkBAIC05NTQsNyArOTkwLDggQEAgc3RhdGljIHZvaWQK IHN0b3JlR2V0dHVwbGUoU3BHaXN0U2Nhbk9wYXF1ZSBzbywgSXRlbVBvaW50ZXIgaGVhcFB0ciwK IAkJCSAgRGF0dW0gbGVhZlZhbHVlLCBib29sIGlzbnVsbCwKIAkJCSAgU3BHaXN0TGVhZlR1cGxl IGxlYWZUdXBsZSwgYm9vbCByZWNoZWNrLAotCQkJICBib29sIHJlY2hlY2tEaXN0YW5jZXMsIGRv dWJsZSAqbm9uTnVsbERpc3RhbmNlcykKKwkJCSAgYm9vbCByZWNoZWNrRGlzdGFuY2VzLCBkb3Vi bGUgKm5vbk51bGxEaXN0YW5jZXMsCisJCQkgIFRNVkNfUmVzdWx0IHZpc2NoZWNrKQogewogCUFz c2VydChzby0+blB0cnMgPCBNYXhJbmRleFR1cGxlc1BlclBhZ2UpOwogCXNvLT5oZWFwUHRyc1tz by0+blB0cnNdID0gKmhlYXBQdHI7CkBAIC0xMDEzLDYgKzEwNTAsOCBAQCBzdG9yZUdldHR1cGxl KFNwR2lzdFNjYW5PcGFxdWUgc28sIEl0ZW1Qb2ludGVyIGhlYXBQdHIsCiAJCXNvLT5yZWNvblR1 cHNbc28tPm5QdHJzXSA9IGhlYXBfZm9ybV90dXBsZShzby0+cmVjb25UdXBEZXNjLAogCQkJCQkJ CQkJCQkJICAgbGVhZkRhdHVtcywKIAkJCQkJCQkJCQkJCSAgIGxlYWZJc251bGxzKTsKKworCQlz by0+dmlzcmVjaGVja1tzby0+blB0cnNdID0gdmlzY2hlY2s7CiAJfQogCXNvLT5uUHRycysrOwog fQpAQCAtMTAzNyw2ICsxMDc2LDExIEBAIHNwZ2dldHR1cGxlKEluZGV4U2NhbkRlc2Mgc2Nhbiwg U2NhbkRpcmVjdGlvbiBkaXIpCiAJCQlzY2FuLT54c19yZWNoZWNrID0gc28tPnJlY2hlY2tbc28t PmlQdHJdOwogCQkJc2Nhbi0+eHNfaGl0dXAgPSBzby0+cmVjb25UdXBzW3NvLT5pUHRyXTsKIAor CQkJaWYgKHNvLT53YW50X2l0dXApCisJCQkJc2Nhbi0+eHNfdmlzcmVjaGVjayA9IHNvLT52aXNy ZWNoZWNrW3NvLT5pUHRyXTsKKworCQkJQXNzZXJ0KCFzY2FuLT54c193YW50X2l0dXAgfHwgc2Nh bi0+eHNfdmlzcmVjaGVjayAhPSBUTVZDX1VuY2hlY2tlZCk7CisKIAkJCWlmIChzby0+bnVtYmVy T2ZPcmRlckJ5cyA+IDApCiAJCQkJaW5kZXhfc3RvcmVfZmxvYXQ4X29yZGVyYnlfZGlzdGFuY2Vz KHNjYW4sIHNvLT5vcmRlckJ5VHlwZXMsCiAJCQkJCQkJCQkJCQkJIHNvLT5kaXN0YW5jZXNbc28t PmlQdHJdLApAQCAtMTA2NSw3ICsxMTA5LDggQEAgc3BnZ2V0dHVwbGUoSW5kZXhTY2FuRGVzYyBz Y2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJfQogCQlzby0+aVB0ciA9IHNvLT5uUHRycyA9IDA7 CiAKLQkJc3BnV2FsayhzY2FuLT5pbmRleFJlbGF0aW9uLCBzbywgZmFsc2UsIHN0b3JlR2V0dHVw bGUpOworCQlzcGdXYWxrKHNjYW4tPmluZGV4UmVsYXRpb24sIHNjYW4tPmhlYXBSZWxhdGlvbiwg c28sIGZhbHNlLAorCQkJCXN0b3JlR2V0dHVwbGUpOwogCiAJCWlmIChzby0+blB0cnMgPT0gMCkK IAkJCWJyZWFrOwkJCQkvKiBtdXN0IGhhdmUgY29tcGxldGVkIHNjYW4gKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IGM0NjFmOGRjMDJkLi40OWYyMTU1OTA5NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC02MjUsNyArNjI1LDcgQEAgc3Bn dmFjdXVtcGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcywgQnVmZmVyIGJ1ZmZlcikKIAlCbG9j a051bWJlciBibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CiAJUGFnZQkJcGFn ZTsKIAotCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCUxvY2tC dWZmZXJGb3JDbGVhbnVwKGJ1ZmZlcik7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsK IAogCWlmIChQYWdlSXNOZXcocGFnZSkpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv c3BnaXN0X3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oCmlu ZGV4IGVjNmQ2ZjVmNzRkLi5mMjhlODk2NTkzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3NwZ2lzdF9wcml2YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ2lzdF9wcml2 YXRlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1 ZGUgInV0aWxzL2dlb19kZWNscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCisjaW5j bHVkZSAidGFibGVhbS5oIgogCiAKIHR5cGVkZWYgc3RydWN0IFNwR2lzdE9wdGlvbnMKQEAgLTE3 NSw2ICsxNzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBTcEdpc3RTZWFyY2hJdGVtCiAJYm9vbAkJaXNM ZWFmOwkJCS8qIFNlYXJjaEl0ZW0gaXMgaGVhcCBpdGVtICovCiAJYm9vbAkJcmVjaGVjazsJCS8q IHF1YWwgcmVjaGVjayBpcyBuZWVkZWQgKi8KIAlib29sCQlyZWNoZWNrRGlzdGFuY2VzOwkvKiBk aXN0YW5jZSByZWNoZWNrIGlzIG5lZWRlZCAqLworCXVpbnQ4CQl2aXNyZWNoZWNrOwkJLyogSU9T OiBUTVZDX1Jlc3VsdCBvZiBjb250YWluZWQgaGVhcCB0dXBsZSAqLwogCiAJLyogYXJyYXkgd2l0 aCBudW1iZXJPZk9yZGVyQnlzIGVudHJpZXMgKi8KIAlkb3VibGUJCWRpc3RhbmNlc1tGTEVYSUJM RV9BUlJBWV9NRU1CRVJdOwpAQCAtMjIzLDYgKzIyNSw3IEBAIHR5cGVkZWYgc3RydWN0IFNwR2lz dFNjYW5PcGFxdWVEYXRhCiAKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIG9ubHkgdXNlZCBpbiBhbWdl dHR1cGxlIHNjYW5zOiAqLwogCWJvb2wJCXdhbnRfaXR1cDsJCS8qIGFyZSB3ZSByZWNvbnN0cnVj dGluZyB0dXBsZXM/ICovCisJQnVmZmVyCQl2bWJ1ZjsJCQkvKiBJT1M6IHVzZWQgZm9yIHRhYmxl X2luZGV4X3Zpc2NoZWNrX3R1cGxlcyAqLwogCVR1cGxlRGVzYwlyZWNvblR1cERlc2M7CS8qIGlm IHNvLCBkZXNjcmlwdG9yIGZvciByZWNvbnN0cnVjdGVkIHR1cGxlcyAqLwogCWludAkJCW5QdHJz OwkJCS8qIG51bWJlciBvZiBUSURzIGZvdW5kIG9uIGN1cnJlbnQgcGFnZSAqLwogCWludAkJCWlQ dHI7CQkJLyogaW5kZXggZm9yIHNjYW5uaW5nIHRocm91Z2ggc2FtZSAqLwpAQCAtMjMxLDYgKzIz NCw4IEBAIHR5cGVkZWYgc3RydWN0IFNwR2lzdFNjYW5PcGFxdWVEYXRhCiAJYm9vbAkJcmVjaGVj a0Rpc3RhbmNlc1tNYXhJbmRleFR1cGxlc1BlclBhZ2VdOwkvKiBkaXN0YW5jZSByZWNoZWNrCiAJ CQkJCQkJCQkJCQkJCQkgKiBmbGFncyAqLwogCUhlYXBUdXBsZQlyZWNvblR1cHNbTWF4SW5kZXhU dXBsZXNQZXJQYWdlXTsJLyogcmVjb25zdHJ1Y3RlZCB0dXBsZXMgKi8KKwkvKiBzdXBwb3J0IGZv ciBJT1MgKi8KKwl1aW50OAkgICAqdmlzcmVjaGVjazsJCS8qIElPUyB2aXMgY2hlY2sgcmVzdWx0 cywgY291bnRlZCBieSBuUHRycyAqLwogCiAJLyogZGlzdGFuY2VzIChmb3IgcmVjaGVjaykgKi8K IAlJbmRleE9yZGVyQnlEaXN0YW5jZSAqZGlzdGFuY2VzW01heEluZGV4VHVwbGVzUGVyUGFnZV07 Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --000000000000e5181606537d7169 Content-Type: application/octet-stream; name="v02-0004-Test-for-IOS-Vacuum-race-conditions-in-index-AMs.patch" Content-Disposition: attachment; filename="v02-0004-Test-for-IOS-Vacuum-race-conditions-in-index-AMs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mq0nnidm0 RnJvbSA4N2JiOWM3NjdiN2U4NzI5YTIxNTAwYWU5ODRiOWJiMDAzYTczYTUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjEgTWFyIDIwMjUgMTY6NDE6MzEgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYwMiA0LzRdIFRlc3QgZm9yIElPUy9WYWN1dW0gcmFjZSBjb25kaXRpb25z IGluIGluZGV4IEFNcwoKQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdGhhdCBkZW1vbnN0cmF0ZSB3cm9u ZyByZXN1bHRzIGNhbiBvY2N1ciB3aXRoIGluZGV4LW9ubHkKc2NhbnMgaW4gR2lTVCBhbmQgU1At R2lTVCBpbmRleGVzIHdoZW4gZW5jb3VudGVyaW5nIHR1cGxlcyBiZWluZyByZW1vdmVkIGJ5IGEK Y29uY3VycmVudCBWQUNVVU0gb3BlcmF0aW9uLgoKV2l0aCB0aGVzZSB0ZXN0cyB0aGUgaW5kZXgg QU1zIGFyZSBhbHNvIGV4cGVjdGVkIHRvIG5vdCBibG9jayBWQUNVVU0gZXZlbiB3aGVuCnRoZXkn cmUgdXNlZCBpbnNpZGUgYSBjdXJzb3IuCgpSZXBvcnRlZC1ieTogUGV0ZXIgR2VvZ2hlZ2FuIDxw Z0Bib3d0LmllPgpDby1hdXRob3JlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1 cm0rcG9zdGdyZXNAZ21haWwuY29tPgpDby1hdXRob3JlZC1ieTogUGV0ZXIgR2VvZ2hlZ2FuIDxw Z0Bib3d0LmllPgpDby1hdXRob3JlZC1ieTogTWljaGFpbCBOaWtvbGFldiA8bWljaGFpbC5uaWtv bGFldkBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQU50 dTBvaTBya1IlMkJGc2d5TFhuR1otdVcyOTUwLXVyQXBBV0xoeS0lMkJWMVdKRCUzRF9aWEElNDBt YWlsLmdtYWlsLmNvbQotLS0KIC4uLi9leHBlY3RlZC9pbmRleC1vbmx5LXNjYW4tZ2lzdC12YWN1 dW0ub3V0ICB8ICA1MyArKysrKysrKysKIC4uLi9pbmRleC1vbmx5LXNjYW4tc3BnaXN0LXZhY3V1 bS5vdXQgICAgICAgICB8ICA1MyArKysrKysrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUgICAgICAgICB8ICAgMiArCiAuLi4vc3BlY3MvaW5kZXgtb25seS1zY2FuLWdp c3QtdmFjdXVtLnNwZWMgICAgfCAxMTIgKysrKysrKysrKysrKysrKysrCiAuLi4vc3BlY3MvaW5k ZXgtb25seS1zY2FuLXNwZ2lzdC12YWN1dW0uc3BlYyAgfCAxMTIgKysrKysrKysrKysrKysrKysr CiA1IGZpbGVzIGNoYW5nZWQsIDMzMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LW9ubHktc2Nhbi1naXN0LXZhY3V1bS5v dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgt b25seS1zY2FuLXNwZ2lzdC12YWN1dW0ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL2luZGV4LW9ubHktc2Nhbi1naXN0LXZhY3V1bS5zcGVjCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2luZGV4LW9ubHktc2Nhbi1zcGdp c3QtdmFjdXVtLnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv aW5kZXgtb25seS1zY2FuLWdpc3QtdmFjdXVtLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1vbmx5LXNjYW4tZ2lzdC12YWN1dW0ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5iN2MwMmVlOTUyOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1vbmx5LXNjYW4tZ2lzdC12YWN1dW0ub3V0CkBA IC0wLDAgKzEsNTMgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMl9tb2QgczFfYmVnaW4gczFfcHJlcGFyZV9zb3J0ZWQgczFfZmV0 Y2hfMSBzMl92YWN1dW0gczFfZmV0Y2hfYWxsIHMxX2NvbW1pdAorc3RlcCBzMl9tb2Q6IAorICBE RUxFVEUgRlJPTSBpb3NfbmVlZHNfY2xlYW51cF9sb2NrIFdIRVJFIGEgIT0gcG9pbnQgJygxLDEp JzsKKworc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3ByZXBhcmVfc29ydGVkOiAKKwlE RUNMQVJFIGZvbyBOTyBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgYSA8LT4gcG9pbnQgJygwLDAp JyBhcyB4IEZST00gaW9zX25lZWRzX2NsZWFudXBfbG9jayBPUkRFUiBCWSBhIDwtPiBwb2ludCAn KDAsMCknOworCitzdGVwIHMxX2ZldGNoXzE6IAorCUZFVENIIEZST00gZm9vOworCisgICAgICAg ICAgICAgICAgIHgKKy0tLS0tLS0tLS0tLS0tLS0tLQorMS40MTQyMTM1NjIzNzMwOTUxCisoMSBy b3cpCisKK3N0ZXAgczJfdmFjdXVtOiBWQUNVVU0gKFRSVU5DQVRFIGZhbHNlKSBpb3NfbmVlZHNf Y2xlYW51cF9sb2NrOworc3RlcCBzMV9mZXRjaF9hbGw6IAorCUZFVENIIEFMTCBGUk9NIGZvbzsK KworeAorLQorKDAgcm93cykKKworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMyX21vZCBzMV9iZWdpbiBzMV9wcmVwYXJlX3Vuc29ydGVkIHMxX2ZldGNo XzEgczJfdmFjdXVtIHMxX2ZldGNoX2FsbCBzMV9jb21taXQKK3N0ZXAgczJfbW9kOiAKKyAgREVM RVRFIEZST00gaW9zX25lZWRzX2NsZWFudXBfbG9jayBXSEVSRSBhICE9IHBvaW50ICcoMSwxKSc7 CisKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV9wcmVwYXJlX3Vuc29ydGVkOiAKKwlE RUNMQVJFIGZvbyBOTyBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgYSBGUk9NIGlvc19uZWVkc19j bGVhbnVwX2xvY2sgV0hFUkUgYm94ICcoKC0xMDAsLTEwMCksKDEwMCwxMDApKScgQD4gYTsKKwor c3RlcCBzMV9mZXRjaF8xOiAKKwlGRVRDSCBGUk9NIGZvbzsKKworYSAgICAKKy0tLS0tCisoMSwx KQorKDEgcm93KQorCitzdGVwIHMyX3ZhY3V1bTogVkFDVVVNIChUUlVOQ0FURSBmYWxzZSkgaW9z X25lZWRzX2NsZWFudXBfbG9jazsKK3N0ZXAgczFfZmV0Y2hfYWxsOiAKKwlGRVRDSCBBTEwgRlJP TSBmb287CisKK2EKKy0KKygwIHJvd3MpCisKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgtb25seS1zY2FuLXNwZ2lz dC12YWN1dW0ub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LW9ubHktc2Nh bi1zcGdpc3QtdmFjdXVtLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYjdjMDJlZTk1MjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvaW5kZXgtb25seS1zY2FuLXNwZ2lzdC12YWN1dW0ub3V0CkBAIC0wLDAgKzEsNTMgQEAK K1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBzMl9tb2QgczFfYmVnaW4gczFfcHJlcGFyZV9zb3J0ZWQgczFfZmV0Y2hfMSBzMl92YWN1dW0g czFfZmV0Y2hfYWxsIHMxX2NvbW1pdAorc3RlcCBzMl9tb2Q6IAorICBERUxFVEUgRlJPTSBpb3Nf bmVlZHNfY2xlYW51cF9sb2NrIFdIRVJFIGEgIT0gcG9pbnQgJygxLDEpJzsKKworc3RlcCBzMV9i ZWdpbjogQkVHSU47CitzdGVwIHMxX3ByZXBhcmVfc29ydGVkOiAKKwlERUNMQVJFIGZvbyBOTyBT Q1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgYSA8LT4gcG9pbnQgJygwLDApJyBhcyB4IEZST00gaW9z X25lZWRzX2NsZWFudXBfbG9jayBPUkRFUiBCWSBhIDwtPiBwb2ludCAnKDAsMCknOworCitzdGVw IHMxX2ZldGNoXzE6IAorCUZFVENIIEZST00gZm9vOworCisgICAgICAgICAgICAgICAgIHgKKy0t LS0tLS0tLS0tLS0tLS0tLQorMS40MTQyMTM1NjIzNzMwOTUxCisoMSByb3cpCisKK3N0ZXAgczJf dmFjdXVtOiBWQUNVVU0gKFRSVU5DQVRFIGZhbHNlKSBpb3NfbmVlZHNfY2xlYW51cF9sb2NrOwor c3RlcCBzMV9mZXRjaF9hbGw6IAorCUZFVENIIEFMTCBGUk9NIGZvbzsKKworeAorLQorKDAgcm93 cykKKworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMy X21vZCBzMV9iZWdpbiBzMV9wcmVwYXJlX3Vuc29ydGVkIHMxX2ZldGNoXzEgczJfdmFjdXVtIHMx X2ZldGNoX2FsbCBzMV9jb21taXQKK3N0ZXAgczJfbW9kOiAKKyAgREVMRVRFIEZST00gaW9zX25l ZWRzX2NsZWFudXBfbG9jayBXSEVSRSBhICE9IHBvaW50ICcoMSwxKSc7CisKK3N0ZXAgczFfYmVn aW46IEJFR0lOOworc3RlcCBzMV9wcmVwYXJlX3Vuc29ydGVkOiAKKwlERUNMQVJFIGZvbyBOTyBT Q1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgYSBGUk9NIGlvc19uZWVkc19jbGVhbnVwX2xvY2sgV0hF UkUgYm94ICcoKC0xMDAsLTEwMCksKDEwMCwxMDApKScgQD4gYTsKKworc3RlcCBzMV9mZXRjaF8x OiAKKwlGRVRDSCBGUk9NIGZvbzsKKworYSAgICAKKy0tLS0tCisoMSwxKQorKDEgcm93KQorCitz dGVwIHMyX3ZhY3V1bTogVkFDVVVNIChUUlVOQ0FURSBmYWxzZSkgaW9zX25lZWRzX2NsZWFudXBf bG9jazsKK3N0ZXAgczFfZmV0Y2hfYWxsOiAKKwlGRVRDSCBBTEwgRlJPTSBmb287CisKK2EKKy0K KygwIHJvd3MpCisKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xh dGlvbl9zY2hlZHVsZQppbmRleCAxNWMzM2ZhZDRjNS4uNzg5NjlmMWNmNzMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAtMTgsNiArMTgsOCBAQCB0ZXN0OiB0d28taWRz CiB0ZXN0OiBtdWx0aXBsZS1yb3ctdmVyc2lvbnMKIHRlc3Q6IGluZGV4LW9ubHktc2NhbgogdGVz dDogaW5kZXgtb25seS1iaXRtYXBzY2FuCit0ZXN0OiBpbmRleC1vbmx5LXNjYW4tZ2lzdC12YWN1 dW0KK3Rlc3Q6IGluZGV4LW9ubHktc2Nhbi1zcGdpc3QtdmFjdXVtCiB0ZXN0OiBwcmVkaWNhdGUt bG9jay1ob3QtdHVwbGUKIHRlc3Q6IHVwZGF0ZS1jb25mbGljdC1vdXQKIHRlc3Q6IGRlYWRsb2Nr LXNpbXBsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2luZGV4LW9ubHkt c2Nhbi1naXN0LXZhY3V1bS5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2luZGV4LW9u bHktc2Nhbi1naXN0LXZhY3V1bS5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45ZDI0MWIyNTkyMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9pbmRleC1vbmx5LXNjYW4tZ2lzdC12YWN1dW0uc3BlYwpAQCAtMCwwICsxLDExMiBA QAorIyBpbmRleC1vbmx5LXNjYW4gdGVzdCBzaG93aW5nIHdyb25nIHJlc3VsdHMgd2l0aCBHaVNU CisjCitzZXR1cAoreworCS0tIGJ5IHVzaW5nIGEgbG93IGZpbGxmYWN0b3IgYW5kIGEgd2lkZSB0 dXBsZSB3ZSBjYW4gZ2V0IG11bHRpcGxlIGJsb2NrcworCS0tIHdpdGgganVzdCBmZXcgcm93cwor CUNSRUFURSBUQUJMRSBpb3NfbmVlZHNfY2xlYW51cF9sb2NrIChhIHBvaW50IE5PVCBOVUxMLCBi IGludCBub3QgbnVsbCwgcGFkIGNoYXIoMTAyNCkgZGVmYXVsdCAnJykKKwlXSVRIIChBVVRPVkFD VVVNX0VOQUJMRUQgPSBmYWxzZSwgRklMTEZBQ1RPUiA9IDEwKTsKKworCUlOU0VSVCBJTlRPIGlv c19uZWVkc19jbGVhbnVwX2xvY2sgU0VMRUNUIHBvaW50KGcuaSwgZy5pKSwgZy5pIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwKSBnKGkpOworCisJQ1JFQVRFIElOREVYIGlvc19zcGdpc3RfYSBP TiBpb3NfbmVlZHNfY2xlYW51cF9sb2NrIFVTSU5HIGdpc3QoYSk7Cit9CitzZXR1cAoreworCVZB Q1VVTSAoQU5BTFlaRSkgaW9zX25lZWRzX2NsZWFudXBfbG9jazsKK30KKwordGVhcmRvd24KK3sK KwlEUk9QIFRBQkxFIGlvc19uZWVkc19jbGVhbnVwX2xvY2s7Cit9CisKKworc2Vzc2lvbiBzMQor CisjIEZvcmNlIGFuIGluZGV4LW9ubHkgc2Nhbiwgd2hlcmUgcG9zc2libGU6CitzZXR1cCB7CisJ U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gZmFsc2U7CisJU0VUIGVuYWJsZV9pbmRleG9ubHlzY2Fu ID0gdHJ1ZTsKKwlTRVQgZW5hYmxlX2luZGV4c2NhbiA9IHRydWU7Cit9CisKK3N0ZXAgczFfYmVn aW4geyBCRUdJTjsgfQorc3RlcCBzMV9jb21taXQgeyBDT01NSVQ7IH0KKworc3RlcCBzMV9wcmVw YXJlX3NvcnRlZCB7CisJREVDTEFSRSBmb28gTk8gU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUIGEg PC0+IHBvaW50ICcoMCwwKScgYXMgeCBGUk9NIGlvc19uZWVkc19jbGVhbnVwX2xvY2sgT1JERVIg QlkgYSA8LT4gcG9pbnQgJygwLDApJzsKK30KKworc3RlcCBzMV9wcmVwYXJlX3Vuc29ydGVkIHsK KwlERUNMQVJFIGZvbyBOTyBTQ1JPTEwgQ1VSU09SIEZPUiBTRUxFQ1QgYSBGUk9NIGlvc19uZWVk c19jbGVhbnVwX2xvY2sgV0hFUkUgYm94ICcoKC0xMDAsLTEwMCksKDEwMCwxMDApKScgQD4gYTsK K30KKworc3RlcCBzMV9mZXRjaF8xIHsKKwlGRVRDSCBGUk9NIGZvbzsKK30KKworc3RlcCBzMV9m ZXRjaF9hbGwgeworCUZFVENIIEFMTCBGUk9NIGZvbzsKK30KKworCitzZXNzaW9uIHMyCisKKyMg RG9uJ3QgZGVsZXRlIHJvdyAxIHNvIHdlIGhhdmUgYSByb3cgZm9yIHRoZSBjdXJzb3IgdG8gInJl c3QiIG9uLgorc3RlcCBzMl9tb2QKK3sKKyAgREVMRVRFIEZST00gaW9zX25lZWRzX2NsZWFudXBf bG9jayBXSEVSRSBhICE9IHBvaW50ICcoMSwxKSc7Cit9CisKKyMgRGlzYWJsZSB0cnVuY2F0aW9u LCBhcyBvdGhlcndpc2Ugd2UnbGwganVzdCB3YWl0IGZvciBhIHRpbWVvdXQgd2hpbGUgdHJ5aW5n CisjIHRvIGFjcXVpcmUgdGhlIGxvY2sKK3N0ZXAgczJfdmFjdXVtICB7IFZBQ1VVTSAoVFJVTkNB VEUgZmFsc2UpIGlvc19uZWVkc19jbGVhbnVwX2xvY2s7IH0KKworcGVybXV0YXRpb24KKyAgIyBk ZWxldGUgbmVhcmx5IGFsbCByb3dzLCB0byBtYWtlIGlzc3VlIHZpc2libGUKKyAgczJfbW9kCisg ICMgY3JlYXRlIGEgY3Vyc29yCisgIHMxX2JlZ2luCisgIHMxX3ByZXBhcmVfc29ydGVkCisKKyAg IyBmZXRjaCBvbmUgcm93IGZyb20gdGhlIGN1cnNvciwgdGhhdCBlbnN1cmVzIHRoZSBpbmRleCBz Y2FuIHBvcnRpb24gaXMgZG9uZQorICAjIGJlZm9yZSB0aGUgdmFjdXVtIGluIHRoZSBuZXh0IHN0 ZXAKKyAgczFfZmV0Y2hfMQorCisgICMgd2l0aCB0aGUgYnVnIHRoaXMgdmFjdXVtIHdpbGwgbWFy ayBwYWdlcyBhcyBhbGwtdmlzaWJsZSB0aGF0IHRoZSBzY2FuIGluCisgICMgdGhlIG5leHQgc3Rl cCB0aGVuIGNvbnNpZGVycyBhbGwtdmlzaWJsZSwgZGVzcGl0ZSBhbGwgcm93cyBmcm9tIHRob3Nl CisgICMgcGFnZXMgaGF2aW5nIGJlZW4gcmVtb3ZlZC4KKyAgIyBCZWNhdXNlIHRoaXMgc2hvdWxk IGJsb2NrIG9uIGJ1ZmZlci1sZXZlbCBsb2NrcywgdGhpcyB3b24ndCBldmVyIGJlCisgICMgY29u c2lkZXJlZCAiYmxvY2tlZCIgYnkgaXNvbGF0aW9uIHRlc3RlciwgYW5kIHNvIHdlIG9ubHkgaGF2 ZSBhIHNpbmdsZQorICAjIHN0ZXAgd2UgY2FuIHdvcmsgd2l0aCBjb25jdXJyZW50bHkuCisgIHMy X3ZhY3V1bQorCisgICMgaWYgdGhpcyByZXR1cm5zIGFueSByb3dzLCB3ZSdyZSBidXN0ZWQKKyAg czFfZmV0Y2hfYWxsCisKKyAgczFfY29tbWl0CisKK3Blcm11dGF0aW9uCisgICMgZGVsZXRlIG5l YXJseSBhbGwgcm93cywgdG8gbWFrZSBpc3N1ZSB2aXNpYmxlCisgIHMyX21vZAorICAjIGNyZWF0 ZSBhIGN1cnNvcgorICBzMV9iZWdpbgorICBzMV9wcmVwYXJlX3Vuc29ydGVkCisKKyAgIyBmZXRj aCBvbmUgcm93IGZyb20gdGhlIGN1cnNvciwgdGhhdCBlbnN1cmVzIHRoZSBpbmRleCBzY2FuIHBv cnRpb24gaXMgZG9uZQorICAjIGJlZm9yZSB0aGUgdmFjdXVtIGluIHRoZSBuZXh0IHN0ZXAKKyAg czFfZmV0Y2hfMQorCisgICMgd2l0aCB0aGUgYnVnIHRoaXMgdmFjdXVtIHdpbGwgbWFyayBwYWdl cyBhcyBhbGwtdmlzaWJsZSB0aGF0IHRoZSBzY2FuIGluCisgICMgdGhlIG5leHQgc3RlcCB0aGVu IGNvbnNpZGVycyBhbGwtdmlzaWJsZSwgZGVzcGl0ZSBhbGwgcm93cyBmcm9tIHRob3NlCisgICMg cGFnZXMgaGF2aW5nIGJlZW4gcmVtb3ZlZC4KKyAgIyBCZWNhdXNlIHRoaXMgc2hvdWxkIGJsb2Nr IG9uIGJ1ZmZlci1sZXZlbCBsb2NrcywgdGhpcyB3b24ndCBldmVyIGJlCisgICMgY29uc2lkZXJl ZCAiYmxvY2tlZCIgYnkgaXNvbGF0aW9uIHRlc3RlciwgYW5kIHNvIHdlIG9ubHkgaGF2ZSBhIHNp bmdsZQorICAjIHN0ZXAgd2UgY2FuIHdvcmsgd2l0aCBjb25jdXJyZW50bHkuCisgIHMyX3ZhY3V1 bQorCisgICMgaWYgdGhpcyByZXR1cm5zIGFueSByb3dzLCB3ZSdyZSBidXN0ZWQKKyAgczFfZmV0 Y2hfYWxsCisKKyAgczFfY29tbWl0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3Bl Y3MvaW5kZXgtb25seS1zY2FuLXNwZ2lzdC12YWN1dW0uc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9pbmRleC1vbmx5LXNjYW4tc3BnaXN0LXZhY3V1bS5zcGVjCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDYyMWQ0ZjdmMgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9pbmRleC1vbmx5LXNjYW4tc3BnaXN0LXZhY3V1bS5z cGVjCkBAIC0wLDAgKzEsMTEyIEBACisjIGluZGV4LW9ubHktc2NhbiB0ZXN0IHNob3dpbmcgd3Jv bmcgcmVzdWx0cyB3aXRoIFNQR2lTVAorIworc2V0dXAKK3sKKwktLSBieSB1c2luZyBhIGxvdyBm aWxsZmFjdG9yIGFuZCBhIHdpZGUgdHVwbGUgd2UgY2FuIGdldCBtdWx0aXBsZSBibG9ja3MKKwkt LSB3aXRoIGp1c3QgZmV3IHJvd3MKKwlDUkVBVEUgVEFCTEUgaW9zX25lZWRzX2NsZWFudXBfbG9j ayAoYSBwb2ludCBOT1QgTlVMTCwgYiBpbnQgbm90IG51bGwsIHBhZCBjaGFyKDEwMjQpIGRlZmF1 bHQgJycpCisJV0lUSCAoQVVUT1ZBQ1VVTV9FTkFCTEVEID0gZmFsc2UsIEZJTExGQUNUT1IgPSAx MCk7CisKKwlJTlNFUlQgSU5UTyBpb3NfbmVlZHNfY2xlYW51cF9sb2NrIFNFTEVDVCBwb2ludChn LmksIGcuaSksIGcuaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZyhpKTsKKworCUNSRUFU RSBJTkRFWCBpb3Nfc3BnaXN0X2EgT04gaW9zX25lZWRzX2NsZWFudXBfbG9jayBVU0lORyBzcGdp c3QoYSk7Cit9CitzZXR1cAoreworCVZBQ1VVTSAoQU5BTFlaRSkgaW9zX25lZWRzX2NsZWFudXBf bG9jazsKK30KKwordGVhcmRvd24KK3sKKwlEUk9QIFRBQkxFIGlvc19uZWVkc19jbGVhbnVwX2xv Y2s7Cit9CisKKworc2Vzc2lvbiBzMQorCisjIEZvcmNlIGFuIGluZGV4LW9ubHkgc2Nhbiwgd2hl cmUgcG9zc2libGU6CitzZXR1cCB7CisJU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gZmFsc2U7CisJ U0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuID0gdHJ1ZTsKKwlTRVQgZW5hYmxlX2luZGV4c2NhbiA9 IHRydWU7Cit9CisKK3N0ZXAgczFfYmVnaW4geyBCRUdJTjsgfQorc3RlcCBzMV9jb21taXQgeyBD T01NSVQ7IH0KKworc3RlcCBzMV9wcmVwYXJlX3NvcnRlZCB7CisJREVDTEFSRSBmb28gTk8gU0NS T0xMIENVUlNPUiBGT1IgU0VMRUNUIGEgPC0+IHBvaW50ICcoMCwwKScgYXMgeCBGUk9NIGlvc19u ZWVkc19jbGVhbnVwX2xvY2sgT1JERVIgQlkgYSA8LT4gcG9pbnQgJygwLDApJzsKK30KKworc3Rl cCBzMV9wcmVwYXJlX3Vuc29ydGVkIHsKKwlERUNMQVJFIGZvbyBOTyBTQ1JPTEwgQ1VSU09SIEZP UiBTRUxFQ1QgYSBGUk9NIGlvc19uZWVkc19jbGVhbnVwX2xvY2sgV0hFUkUgYm94ICcoKC0xMDAs LTEwMCksKDEwMCwxMDApKScgQD4gYTsKK30KKworc3RlcCBzMV9mZXRjaF8xIHsKKwlGRVRDSCBG Uk9NIGZvbzsKK30KKworc3RlcCBzMV9mZXRjaF9hbGwgeworCUZFVENIIEFMTCBGUk9NIGZvbzsK K30KKworCitzZXNzaW9uIHMyCisKKyMgRG9uJ3QgZGVsZXRlIHJvdyAxIHNvIHdlIGhhdmUgYSBy b3cgZm9yIHRoZSBjdXJzb3IgdG8gInJlc3QiIG9uLgorc3RlcCBzMl9tb2QKK3sKKyAgREVMRVRF IEZST00gaW9zX25lZWRzX2NsZWFudXBfbG9jayBXSEVSRSBhICE9IHBvaW50ICcoMSwxKSc7Cit9 CisKKyMgRGlzYWJsZSB0cnVuY2F0aW9uLCBhcyBvdGhlcndpc2Ugd2UnbGwganVzdCB3YWl0IGZv ciBhIHRpbWVvdXQgd2hpbGUgdHJ5aW5nCisjIHRvIGFjcXVpcmUgdGhlIGxvY2sKK3N0ZXAgczJf dmFjdXVtICB7IFZBQ1VVTSAoVFJVTkNBVEUgZmFsc2UpIGlvc19uZWVkc19jbGVhbnVwX2xvY2s7 IH0KKworcGVybXV0YXRpb24KKyAgIyBkZWxldGUgbmVhcmx5IGFsbCByb3dzLCB0byBtYWtlIGlz c3VlIHZpc2libGUKKyAgczJfbW9kCisgICMgY3JlYXRlIGEgY3Vyc29yCisgIHMxX2JlZ2luCisg IHMxX3ByZXBhcmVfc29ydGVkCisKKyAgIyBmZXRjaCBvbmUgcm93IGZyb20gdGhlIGN1cnNvciwg dGhhdCBlbnN1cmVzIHRoZSBpbmRleCBzY2FuIHBvcnRpb24gaXMgZG9uZQorICAjIGJlZm9yZSB0 aGUgdmFjdXVtIGluIHRoZSBuZXh0IHN0ZXAKKyAgczFfZmV0Y2hfMQorCisgICMgd2l0aCB0aGUg YnVnIHRoaXMgdmFjdXVtIHdpbGwgbWFyayBwYWdlcyBhcyBhbGwtdmlzaWJsZSB0aGF0IHRoZSBz Y2FuIGluCisgICMgdGhlIG5leHQgc3RlcCB0aGVuIGNvbnNpZGVycyBhbGwtdmlzaWJsZSwgZGVz cGl0ZSBhbGwgcm93cyBmcm9tIHRob3NlCisgICMgcGFnZXMgaGF2aW5nIGJlZW4gcmVtb3ZlZC4K KyAgIyBCZWNhdXNlIHRoaXMgc2hvdWxkIGJsb2NrIG9uIGJ1ZmZlci1sZXZlbCBsb2NrcywgdGhp cyB3b24ndCBldmVyIGJlCisgICMgY29uc2lkZXJlZCAiYmxvY2tlZCIgYnkgaXNvbGF0aW9uIHRl c3RlciwgYW5kIHNvIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZQorICAjIHN0ZXAgd2UgY2FuIHdvcmsg d2l0aCBjb25jdXJyZW50bHkuCisgIHMyX3ZhY3V1bQorCisgICMgaWYgdGhpcyByZXR1cm5zIGFu eSByb3dzLCB3ZSdyZSBidXN0ZWQKKyAgczFfZmV0Y2hfYWxsCisKKyAgczFfY29tbWl0CisKK3Bl cm11dGF0aW9uCisgICMgZGVsZXRlIG5lYXJseSBhbGwgcm93cywgdG8gbWFrZSBpc3N1ZSB2aXNp YmxlCisgIHMyX21vZAorICAjIGNyZWF0ZSBhIGN1cnNvcgorICBzMV9iZWdpbgorICBzMV9wcmVw YXJlX3Vuc29ydGVkCisKKyAgIyBmZXRjaCBvbmUgcm93IGZyb20gdGhlIGN1cnNvciwgdGhhdCBl bnN1cmVzIHRoZSBpbmRleCBzY2FuIHBvcnRpb24gaXMgZG9uZQorICAjIGJlZm9yZSB0aGUgdmFj dXVtIGluIHRoZSBuZXh0IHN0ZXAKKyAgczFfZmV0Y2hfMQorCisgICMgd2l0aCB0aGUgYnVnIHRo aXMgdmFjdXVtIHdpbGwgbWFyayBwYWdlcyBhcyBhbGwtdmlzaWJsZSB0aGF0IHRoZSBzY2FuIGlu CisgICMgdGhlIG5leHQgc3RlcCB0aGVuIGNvbnNpZGVycyBhbGwtdmlzaWJsZSwgZGVzcGl0ZSBh bGwgcm93cyBmcm9tIHRob3NlCisgICMgcGFnZXMgaGF2aW5nIGJlZW4gcmVtb3ZlZC4KKyAgIyBC ZWNhdXNlIHRoaXMgc2hvdWxkIGJsb2NrIG9uIGJ1ZmZlci1sZXZlbCBsb2NrcywgdGhpcyB3b24n dCBldmVyIGJlCisgICMgY29uc2lkZXJlZCAiYmxvY2tlZCIgYnkgaXNvbGF0aW9uIHRlc3Rlciwg YW5kIHNvIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZQorICAjIHN0ZXAgd2UgY2FuIHdvcmsgd2l0aCBj b25jdXJyZW50bHkuCisgIHMyX3ZhY3V1bQorCisgICMgaWYgdGhpcyByZXR1cm5zIGFueSByb3dz LCB3ZSdyZSBidXN0ZWQKKyAgczFfZmV0Y2hfYWxsCisKKyAgczFfY29tbWl0Ci0tIAoyLjUwLjEg KEFwcGxlIEdpdC0xNTUpCgo= --000000000000e5181606537d7169--