From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 46779CD5BB3 for ; Fri, 22 May 2026 15:39:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 966166B00A2; Fri, 22 May 2026 11:39:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 93DB76B00A4; Fri, 22 May 2026 11:39:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87B1E6B00A5; Fri, 22 May 2026 11:39:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 796006B00A2 for ; Fri, 22 May 2026 11:39:33 -0400 (EDT) Received: from smtpin04.hostedemail.com (lb01a-stub [10.200.18.249]) by unirelay05.hostedemail.com (Postfix) with ESMTP id F22DF409F9 for ; Fri, 22 May 2026 15:39:32 +0000 (UTC) X-FDA: 84795465384.04.422694A Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf27.hostedemail.com (Postfix) with ESMTP id 57CBA4000C for ; Fri, 22 May 2026 15:39:31 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b=i257pqtM; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf27.hostedemail.com: domain of ljs@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=ljs@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1779464371; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PhXZNDewQIU/RtpMf+wfAqV2sivH+vGmM2cktxerE4U=; b=trfDPEsR1eiapb8ZjLM6nysReug6tl5UhpJh+Lq+hk+PryMj21zNtKwOBvNoXiDI9rcxkQ 5gMfer+36vF57j/IEIP1xSs6daOE8+XugbmAPPQX3MceG0NufiLkjZGFBX1OOyJ4wgVmF8 o0nrCYveM2VrB1cnvqfRsGsX9Zg+7Nk= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b=i257pqtM; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf27.hostedemail.com: domain of ljs@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=ljs@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1779464371; a=rsa-sha256; cv=none; b=vpeyFrZNBgpK2iChQl+1APLgP/YNJjL1wZNi2i5WIYZAjV+JKahvICq9KYwfThRsSFEhMV g9pTh5vsNXugl58S29o7OU8cZWDLEZykK9XsXYtkXGALwea7g0fW7aqJuzRkhQQRmPLy6s N0G2fEhPWU9Goe9d6gTHNkry/ndH4Q0= Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id C2F5C60172; Fri, 22 May 2026 15:39:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A38B41F000E9; Fri, 22 May 2026 15:39:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464370; bh=PhXZNDewQIU/RtpMf+wfAqV2sivH+vGmM2cktxerE4U=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=i257pqtM2kYPACyD1ngfUggI4iSRxqjUdYlFKKxzVufZViVIVT2xBOEl0SpU6DInE ROGVAZb/3/W0IvbwFMxor6HFcVcNrG5Q21A1mRVWwKOQBsih1iPdGeTznGeoJB3DO+ Fn3PvCB8+2fNVtuS/MJbVyshSkcM02OLF0I9W6ZI0pMtT9j53IMpWiV0ZX8JC6M9P/ FaQjM533MNXthFgpwvWbAxK8bl8eUM9XMOgr6DAoXK73ugQpZzruTM8OshFacd6BC7 PNNlBh7PgBgxYyU+EgAcx28busgrsz6DinxYMoEk9F2NneTnICrdURcILPdeHr1TFa GSUpZYp++RtDg== Date: Fri, 22 May 2026 16:39:20 +0100 From: Lorenzo Stoakes To: Suren Baghdasaryan Cc: Barry Song , Matthew Wilcox , akpm@linux-foundation.org, linux-mm@kvack.org, david@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, mhocko@suse.com, jack@suse.cz, pfalcato@suse.de, wanglian@kylinos.cn, chentao@kylinos.cn, lianux.mm@gmail.com, kunwu.chan@gmail.com, liyangouwen1@oppo.com, chrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com, nphamcs@gmail.com, bhe@redhat.com, youngjun.park@lge.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, Nanzhe Zhao Subject: Re: [PATCH v2 0/5] mm: reduce mmap_lock contention and improve page fault performance Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 57CBA4000C X-Stat-Signature: kouimgispp3sc7mwamso4zmdjhmbpbm1 X-Rspam-User: X-HE-Tag: 1779464371-857717 X-HE-Meta: U2FsdGVkX1/r2ZP/XJBlLFXpkLXhXesAE2GxA/ein9gMxgwgbdH6Amzs6K2+vXfRFEsXX1z5dG53Lnfyp20VrO5TQipVw7gAmg5pkrMkZHEKfLklNnjKW3axu2xDZXeoPHzskVpc0WgK5rrFKxnAqxFi2IUymNz4TbZf177P3p9hJpFEihxKUqITR1hP19C2GdJXlbYMkRkmzReVOJ1oAjKp+hTE6A0OHAyniQaDDFoOmpAAhRgNfxiZ/Wl7BXara+Po2ju9V2tJS05TbaeeXxG0aftgJsHPBk9IAX4jzx8HxRop/nNWwWPt4NHLyUcDoEfjgGY5KotocypvHWLdCBC6QAvZu8y4eYnc4POOhhhTMrjNyfXlk++OA+yUJwmnpFUj4zbeTCQ66+Mjk1efIKfsZMGk+hWMdCg0KQRszxfl6vTF7N1B9LlqTsxnGMO+jMC/X24/NtXPNjU2rGeubT0yuCG2Gp6Hk06Vs563uAUxSqXBgrSnRzLRkZKi4lUJ2xG9tV4lZd0uzz9h1Rd5385KbeIhrRzuMF7bVIbxMedV1ujtnk6ZCpPnQb7s1FaQs+MlnBE7+2suf6VO5A59BUeAOaZyHD77c4CdVeP7r6EPA1WXYkNqjD+j5wxNvCzOdO8sGbnTU8dZ5DvQouFWfi/wGeQN+9KOPfPsgyhinpTk1kalYOI9nYCf/y8qpQy7vUcTI3feuhzZJsJXGSoqhjyG89dXgiGmbiM4ZSPInYO3qY0oVyFFfL65FPvdiQAttKbxd8Ri/SD3PAL0jmYTt+CNVxlgvqIMukeylnfmh5l2mUAt49MUXqHWsjoN9rlqMacKJ5xQDSsh9cuwBmif4qDa+LrBerZC8TQAXZQixrz73AyND0hkgbDa+hul3GUt9ZcP1LaoqZPTLDAcM4WnkFQOVvGLommumMToXHZo5SvNao+QlPUJ6uunACEFSM8VClb6q8ax0dnRcfDviCz JwqtPNEA TnWcpHAr4/nWz6Zz3fkG2RJkA0bJ8C/kWeANOtqZ4/9P017fpFgjGQTdu0X2niKA1XtUOeGU9W/i3iSLOB97jpLaCNfocCzVYoPjYcv26zlWPP2lT2cmoh++u6T8fpVjxrYvQ/DYjDFuxIEcdve9SEDVhwF47xoUHZRIjp5iisDQVPPOpiatiSTeZ7MHz4hfdh5ujFrt6WeBNGJAuplsBqdtDTELH7Vsir1FYhATOlwxAUMRhu9kFSf/X32509zNIHoLv76tfQy0wBm0U+MFEmG59NUh91j3dVXPJ/9nM3dcRvOJGGiLjVgH8IWF9Bm4ZGYlq/QuGkrurWxunss0LNRgVvTuC+WuliWvv4b3PW1eKEmgStopbmN9xiiLCmYm+XxGCoY64lDehzTjqv6Y0CCDzZK/uwpyk4e+h Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, May 20, 2026 at 05:51:23AM +0000, Suren Baghdasaryan wrote: > On Tue, May 19, 2026 at 12:53 PM Lorenzo Stoakes wrote: > > > > On Mon, May 18, 2026 at 12:56:59PM -0700, Suren Baghdasaryan wrote: > > > > > > > > > > I think we either need to fix `fork()`, or keep the current > > > > behavior of dropping the VMA lock before performing I/O. > > > > > > I see. So, this problem arises from the fact that we are changing the > > > pagefaults requiring I/O operation to hold VMA lock... > > > And you want to lock VMA on fork only if vma_is_anonymous(vma) || > > > is_cow_mapping(vma->vm_flags). So, we will be blocking page faults for > > > anonymous and COW VMAs only while holding mmap_write_lock, preventing > > > any VMA modification. On the surface, that looks ok to me but I might > > > be missing some corner cases. If nobody sees any obvious issues, I > > > think it's worth a try. > > > > Not sure if you noticed but I did raise concerns ;) > > Sorry, I didn't realize your first comment was a conceptual objection > to this approach of allowing page faults to race with the fork. Ah yeah it's understandable I think there's been so many threads in this conversation that it's easy to get lost :) > > > > > > I wonder if you've confused the fault path and fork here, as I think Barry has > > been a little unclear on that. > > > > What's being suggested in this thread is to fundamentally change fork behaviour > > so it's different from the entire history of the kernel (or - presumably - at > > least recent history :) and permit concurrent page faults to occur on a forking > > process. > > > > I absolutely object to this for being pretty crazy. I mean I'm not sure we > > really want to be simultaneously modifying page tables while invoking > > copy_page_range()? No? > > > > OK you cover anon and MAP_PRIVATE file-backed but hang on there's > > VM_COPY_ON_FORK too.. so PFN mapped, mixed map and (the accursed) UFFD W/P as > > well as possibly-guard region containing VMAs now can have page tables raced. > > Ugh, yeah, I realize now this is a minefield. Resolving all possible > races there would not be trivial and might introduce other performance > issues. Yeah, it's dangerous waters :) > > > > > That's not to mention anything else that relies on serialisation here (this > > would be changing how forking has been done in general) that we may or may not > > know about. > > > > The risk level is high, for what amounts to a hack to work around the fault > > issue. > > > > I suggest that if we have a problem with the fault path, let's look at the fault > > path :) > > > > So yeah I'm very opposed to this unless I'm somehow horribly mistaken here or a > > very convincing argument is made. > > So, current approach of dropping locks during I/O sounds like still > the best solution. Yeah _of those proposed_ I think importantly. This doesn't mean there aren't other potential solutions. Thanks, Lorenzo > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'd also like to get Suren's input, however. > > > > > > > > Yes. of course. > > > > > > > > > > > > > > Thanks, Lorenzo > > > > > > > > Best Regards > > > > Barry > > > > Cheers, Lorenzo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1A271CD5BB4 for ; Fri, 22 May 2026 15:39:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lnD89J321AWo5R90r7ob3CnC5wQ8W8P5xFH4qgO6jpw=; b=Es52b2PxSto79w w9SQqmINhdPmGp0X78ZCdFKcnuO2Hkrq2IS2Ca3kkbnHL5BkZbP9Kn2Q1/sr5GFWBxqy+FzHfk3c2 DjXbEDemvWQUAbkQra8i+3Zw27I2FBgo5P9OvKuyx/S1hrK2bG8sMpvvsNKlLs1aZp1F9PQq5Wmxb 7/22a24dmvPsg8WlvjOyk7coim3YPmhxvowWqPf/ibPvnVZLsfzcgV7TckwBd+jUayrrFv/F+ovOR QH1unMKGv+CNUVtjCC2Wh5NOBCjOTlNo4YrUV+7mFRAtMGzjtsQ3EaIdSS8j/RFw0FLyxvd0kDqbE aCEZfCjO4j1Ud3IV1VKA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQRyG-0000000BHeX-3bTu; Fri, 22 May 2026 15:39:32 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wQRyF-0000000BHdd-2a59; Fri, 22 May 2026 15:39:31 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id C2F5C60172; Fri, 22 May 2026 15:39:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A38B41F000E9; Fri, 22 May 2026 15:39:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779464370; bh=PhXZNDewQIU/RtpMf+wfAqV2sivH+vGmM2cktxerE4U=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=i257pqtM2kYPACyD1ngfUggI4iSRxqjUdYlFKKxzVufZViVIVT2xBOEl0SpU6DInE ROGVAZb/3/W0IvbwFMxor6HFcVcNrG5Q21A1mRVWwKOQBsih1iPdGeTznGeoJB3DO+ Fn3PvCB8+2fNVtuS/MJbVyshSkcM02OLF0I9W6ZI0pMtT9j53IMpWiV0ZX8JC6M9P/ FaQjM533MNXthFgpwvWbAxK8bl8eUM9XMOgr6DAoXK73ugQpZzruTM8OshFacd6BC7 PNNlBh7PgBgxYyU+EgAcx28busgrsz6DinxYMoEk9F2NneTnICrdURcILPdeHr1TFa GSUpZYp++RtDg== Date: Fri, 22 May 2026 16:39:20 +0100 From: Lorenzo Stoakes To: Suren Baghdasaryan Cc: Barry Song , Matthew Wilcox , akpm@linux-foundation.org, linux-mm@kvack.org, david@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, mhocko@suse.com, jack@suse.cz, pfalcato@suse.de, wanglian@kylinos.cn, chentao@kylinos.cn, lianux.mm@gmail.com, kunwu.chan@gmail.com, liyangouwen1@oppo.com, chrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com, nphamcs@gmail.com, bhe@redhat.com, youngjun.park@lge.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, Nanzhe Zhao Subject: Re: [PATCH v2 0/5] mm: reduce mmap_lock contention and improve page fault performance Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBNYXkgMjAsIDIwMjYgYXQgMDU6NTE6MjNBTSArMDAwMCwgU3VyZW4gQmFnaGRhc2Fy eWFuIHdyb3RlOgo+IE9uIFR1ZSwgTWF5IDE5LCAyMDI2IGF0IDEyOjUz4oCvUE0gTG9yZW56byBT dG9ha2VzIDxsanNAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPgo+ID4gT24gTW9uLCBNYXkgMTgsIDIw MjYgYXQgMTI6NTY6NTlQTSAtMDcwMCwgU3VyZW4gQmFnaGRhc2FyeWFuIHdyb3RlOgo+ID4KPiA+ ID4gPgo+ID4gPiA+IEkgdGhpbmsgd2UgZWl0aGVyIG5lZWQgdG8gZml4IGBmb3JrKClgLCBvciBr ZWVwIHRoZSBjdXJyZW50Cj4gPiA+ID4gYmVoYXZpb3Igb2YgZHJvcHBpbmcgdGhlIFZNQSBsb2Nr IGJlZm9yZSBwZXJmb3JtaW5nIEkvTy4KPiA+ID4KPiA+ID4gSSBzZWUuIFNvLCB0aGlzIHByb2Js ZW0gYXJpc2VzIGZyb20gdGhlIGZhY3QgdGhhdCB3ZSBhcmUgY2hhbmdpbmcgdGhlCj4gPiA+IHBh Z2VmYXVsdHMgcmVxdWlyaW5nIEkvTyBvcGVyYXRpb24gdG8gaG9sZCBWTUEgbG9jay4uLgo+ID4g PiBBbmQgeW91IHdhbnQgdG8gbG9jayBWTUEgb24gZm9yayBvbmx5IGlmIHZtYV9pc19hbm9ueW1v dXModm1hKSB8fAo+ID4gPiBpc19jb3dfbWFwcGluZyh2bWEtPnZtX2ZsYWdzKS4gU28sIHdlIHdp bGwgYmUgYmxvY2tpbmcgcGFnZSBmYXVsdHMgZm9yCj4gPiA+IGFub255bW91cyBhbmQgQ09XIFZN QXMgb25seSB3aGlsZSBob2xkaW5nIG1tYXBfd3JpdGVfbG9jaywgcHJldmVudGluZwo+ID4gPiBh bnkgVk1BIG1vZGlmaWNhdGlvbi4gT24gdGhlIHN1cmZhY2UsIHRoYXQgbG9va3Mgb2sgdG8gbWUg YnV0IEkgbWlnaHQKPiA+ID4gYmUgbWlzc2luZyBzb21lIGNvcm5lciBjYXNlcy4gSWYgbm9ib2R5 IHNlZXMgYW55IG9idmlvdXMgaXNzdWVzLCBJCj4gPiA+IHRoaW5rIGl0J3Mgd29ydGggYSB0cnku Cj4gPgo+ID4gTm90IHN1cmUgaWYgeW91IG5vdGljZWQgYnV0IEkgZGlkIHJhaXNlIGNvbmNlcm5z IDspCj4KPiBTb3JyeSwgSSBkaWRuJ3QgcmVhbGl6ZSB5b3VyIGZpcnN0IGNvbW1lbnQgd2FzIGEg Y29uY2VwdHVhbCBvYmplY3Rpb24KPiB0byB0aGlzIGFwcHJvYWNoIG9mIGFsbG93aW5nIHBhZ2Ug ZmF1bHRzIHRvIHJhY2Ugd2l0aCB0aGUgZm9yay4KCkFoIHllYWggaXQncyB1bmRlcnN0YW5kYWJs ZSBJIHRoaW5rIHRoZXJlJ3MgYmVlbiBzbyBtYW55IHRocmVhZHMgaW4gdGhpcwpjb252ZXJzYXRp b24gdGhhdCBpdCdzIGVhc3kgdG8gZ2V0IGxvc3QgOikKCj4KPgo+ID4KPiA+IEkgd29uZGVyIGlm IHlvdSd2ZSBjb25mdXNlZCB0aGUgZmF1bHQgcGF0aCBhbmQgZm9yayBoZXJlLCBhcyBJIHRoaW5r IEJhcnJ5IGhhcwo+ID4gYmVlbiBhIGxpdHRsZSB1bmNsZWFyIG9uIHRoYXQuCj4gPgo+ID4gV2hh dCdzIGJlaW5nIHN1Z2dlc3RlZCBpbiB0aGlzIHRocmVhZCBpcyB0byBmdW5kYW1lbnRhbGx5IGNo YW5nZSBmb3JrIGJlaGF2aW91cgo+ID4gc28gaXQncyBkaWZmZXJlbnQgZnJvbSB0aGUgZW50aXJl IGhpc3Rvcnkgb2YgdGhlIGtlcm5lbCAob3IgLSBwcmVzdW1hYmx5IC0gYXQKPiA+IGxlYXN0IHJl Y2VudCBoaXN0b3J5IDopIGFuZCBwZXJtaXQgY29uY3VycmVudCBwYWdlIGZhdWx0cyB0byBvY2N1 ciBvbiBhIGZvcmtpbmcKPiA+IHByb2Nlc3MuCj4gPgo+ID4gSSBhYnNvbHV0ZWx5IG9iamVjdCB0 byB0aGlzIGZvciBiZWluZyBwcmV0dHkgY3JhenkuIEkgbWVhbiBJJ20gbm90IHN1cmUgd2UKPiA+ IHJlYWxseSB3YW50IHRvIGJlIHNpbXVsdGFuZW91c2x5IG1vZGlmeWluZyBwYWdlIHRhYmxlcyB3 aGlsZSBpbnZva2luZwo+ID4gY29weV9wYWdlX3JhbmdlKCk/IE5vPwo+ID4KPiA+IE9LIHlvdSBj b3ZlciBhbm9uIGFuZCBNQVBfUFJJVkFURSBmaWxlLWJhY2tlZCBidXQgaGFuZyBvbiB0aGVyZSdz Cj4gPiBWTV9DT1BZX09OX0ZPUksgdG9vLi4gc28gUEZOIG1hcHBlZCwgbWl4ZWQgbWFwIGFuZCAo dGhlIGFjY3Vyc2VkKSBVRkZEIFcvUCBhcwo+ID4gd2VsbCBhcyBwb3NzaWJseS1ndWFyZCByZWdp b24gY29udGFpbmluZyBWTUFzIG5vdyBjYW4gaGF2ZSBwYWdlIHRhYmxlcyByYWNlZC4KPgo+IFVn aCwgeWVhaCwgSSByZWFsaXplIG5vdyB0aGlzIGlzIGEgbWluZWZpZWxkLiBSZXNvbHZpbmcgYWxs IHBvc3NpYmxlCj4gcmFjZXMgdGhlcmUgd291bGQgbm90IGJlIHRyaXZpYWwgYW5kIG1pZ2h0IGlu dHJvZHVjZSBvdGhlciBwZXJmb3JtYW5jZQo+IGlzc3Vlcy4KClllYWgsIGl0J3MgZGFuZ2Vyb3Vz IHdhdGVycyA6KQoKPgo+ID4KPiA+IFRoYXQncyBub3QgdG8gbWVudGlvbiBhbnl0aGluZyBlbHNl IHRoYXQgcmVsaWVzIG9uIHNlcmlhbGlzYXRpb24gaGVyZSAodGhpcwo+ID4gd291bGQgYmUgY2hh bmdpbmcgaG93IGZvcmtpbmcgaGFzIGJlZW4gZG9uZSBpbiBnZW5lcmFsKSB0aGF0IHdlIG1heSBv ciBtYXkgbm90Cj4gPiBrbm93IGFib3V0Lgo+ID4KPiA+IFRoZSByaXNrIGxldmVsIGlzIGhpZ2gs IGZvciB3aGF0IGFtb3VudHMgdG8gYSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoZSBmYXVsdAo+ID4g aXNzdWUuCj4gPgo+ID4gSSBzdWdnZXN0IHRoYXQgaWYgd2UgaGF2ZSBhIHByb2JsZW0gd2l0aCB0 aGUgZmF1bHQgcGF0aCwgbGV0J3MgbG9vayBhdCB0aGUgZmF1bHQKPiA+IHBhdGggOikKPiA+Cj4g PiBTbyB5ZWFoIEknbSB2ZXJ5IG9wcG9zZWQgdG8gdGhpcyB1bmxlc3MgSSdtIHNvbWVob3cgaG9y cmlibHkgbWlzdGFrZW4gaGVyZSBvciBhCj4gPiB2ZXJ5IGNvbnZpbmNpbmcgYXJndW1lbnQgaXMg bWFkZS4KPgo+IFNvLCBjdXJyZW50IGFwcHJvYWNoIG9mIGRyb3BwaW5nIGxvY2tzIGR1cmluZyBJ L08gc291bmRzIGxpa2Ugc3RpbGwKPiB0aGUgYmVzdCBzb2x1dGlvbi4KClllYWggX29mIHRob3Nl IHByb3Bvc2VkXyBJIHRoaW5rIGltcG9ydGFudGx5LiBUaGlzIGRvZXNuJ3QgbWVhbiB0aGVyZSBh cmVuJ3QKb3RoZXIgcG90ZW50aWFsIHNvbHV0aW9ucy4KClRoYW5rcywgTG9yZW56bwoKPgo+ID4K PiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJ J2QgYWxzbyBsaWtlIHRvIGdldCBTdXJlbidzIGlucHV0LCBob3dldmVyLgo+ID4gPiA+Cj4gPiA+ ID4gWWVzLiBvZiBjb3Vyc2UuCj4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBUaGFua3MsIExv cmVuem8KPiA+ID4gPgo+ID4gPiA+IEJlc3QgUmVnYXJkcwo+ID4gPiA+IEJhcnJ5Cj4gPgo+ID4g Q2hlZXJzLCBMb3JlbnpvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LXJpc2N2Cg==