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 754E8C3DA6E for ; Wed, 20 Dec 2023 09:55:36 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lvlzlM3yKug4jULRQW2sslGqHtKi/pf//g6+ZkQxPFs=; b=wtXJMpNdltQpA2 uIBKMpoh3XudZ1kqBzz5TIBRqKcgIiLO6skVsXkAaYmd/rPAoC5B2gZ/5n1Qgqenh4FJI7NP7Tk+o q3n55Bvw4dPmoPdLPNQ8NedqpX5opJeDmACwhcEkaqb78V2TRTRxeUCCFq4BZ65QQ5Z5zKCtuG2+L sc3qAB7ahhPooJ2LJjjvi0dS0CWtOqFvzU0D9pXheu5Y7B+myw7vlS1BKh0e52DWRIDZ7T49wXn29 zVRQfPaguVHgQn+OItB5K8tHeEhIb8JFl6LzgGjAkCAUwcKEr6tZY4PQFxUk/pAKQHJhdvna6Idri 8ID3VT+7Lxj/gGRU05/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rFtIB-00Gn6P-1J; Wed, 20 Dec 2023 09:55:07 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rFtI7-00Gn5G-1H for linux-arm-kernel@lists.infradead.org; Wed, 20 Dec 2023 09:55:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1703066102; h=from:from: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:autocrypt:autocrypt; bh=9As2S8Kzp1MuG6UxCCIg70Z966bnMvQcWNaINEWheFg=; b=PbcG3T4ypAQKbYhsfkY2o9+Oalbg8kAyHQtz4aDfc4Efpf37E9bljcjPkmdINLN5MmR0a8 FMYoizdqc/vo4ILNcftTroCaryGiHtJslyp6NrFf9W2enU0RhS59lU5he/fAhIu0FDnfrA 6m3OFi/lkGZAL7B9NQO+5IfA0/dU6Vk= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-478-EdImHHPjN1uC4w_OS09unQ-1; Wed, 20 Dec 2023 04:55:00 -0500 X-MC-Unique: EdImHHPjN1uC4w_OS09unQ-1 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-336719795a7so871500f8f.0 for ; Wed, 20 Dec 2023 01:55:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703066099; x=1703670899; h=content-transfer-encoding:in-reply-to:organization:autocrypt:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9As2S8Kzp1MuG6UxCCIg70Z966bnMvQcWNaINEWheFg=; b=nipw64KwTiByO830/BUgLQUsDRMWSOO8KUKrtEc7BwsikBeVeBGJluA93dICAQkqjG Xxf1uUDV0nIk461v50ryCPQ5Z2qHKlewP6UJmth5uhL8Z5zUjC4Gh+bAdNoyPmHtSzMT pznL4L9zBif/fBK/H25pv+Ajss7iBrLHGIzYnlElubxcIr5yVpFamaQGihKLTphqyOTm Lm83mCxBXZ4chdH0HhcMezrxYqRwGX3OOqZ2EeH/mL2ZFL+4Z/uLuMiry+DciUAcpuFh MDIQfQJY+ANCj3FpKuMaeyrhqyIrYpgAmiwbxYrur7sXIBPHiquvkocYLz9k+jz4CII4 E8Eg== X-Gm-Message-State: AOJu0YzkecHQgPYwGxWcWBS+ifZkqd9GOzviKyCQYd2S/yjSFsQ1CF83 c5JaEDeFThXPqoNadBNxiyltWjWHpFgdE4UF9C8Mp5GbRjwwDFILRcUoP5pbKEfVc4tvbddfCXI LEbV5GI3DXnpTlAL8O9YiOqVYTgS2S2k+UFA= X-Received: by 2002:adf:e947:0:b0:336:7641:f3de with SMTP id m7-20020adfe947000000b003367641f3demr986423wrn.91.1703066099282; Wed, 20 Dec 2023 01:54:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IHO+czHZFXA2zu/5/u7cTZLvbyreKBGeezPnZcws+2v39LtqwfGMEl+y9AzNLz7snW3kR3QyA== X-Received: by 2002:adf:e947:0:b0:336:7641:f3de with SMTP id m7-20020adfe947000000b003367641f3demr986393wrn.91.1703066098779; Wed, 20 Dec 2023 01:54:58 -0800 (PST) Received: from ?IPV6:2003:cb:c73b:eb00:8e25:6953:927:1802? (p200300cbc73beb008e25695309271802.dip0.t-ipconnect.de. [2003:cb:c73b:eb00:8e25:6953:927:1802]) by smtp.gmail.com with ESMTPSA id a15-20020a5d508f000000b0033330846e76sm13054134wrt.86.2023.12.20.01.54.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 20 Dec 2023 01:54:58 -0800 (PST) Message-ID: <28968568-f920-47ac-b6fd-87528ffd8f77@redhat.com> Date: Wed, 20 Dec 2023 10:54:56 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 02/16] mm: Batch-copy PTE ranges during fork() To: Ryan Roberts , Catalin Marinas , Will Deacon , Ard Biesheuvel , Marc Zyngier , Oliver Upton , James Morse , Suzuki K Poulose , Zenghui Yu , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Andrew Morton , Anshuman Khandual , Matthew Wilcox , Yu Zhao , Mark Rutland , Kefeng Wang , John Hubbard , Zi Yan , Barry Song <21cnbao@gmail.com>, Alistair Popple , Yang Shi Cc: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20231218105100.172635-1-ryan.roberts@arm.com> <20231218105100.172635-3-ryan.roberts@arm.com> <0bef5423-6eea-446b-8854-980e9c23a948@redhat.com> <7c0236ad-01f3-437f-8b04-125d69e90dc0@redhat.com> <9a58b1a2-2c13-4fa0-8ffa-2b3d9655f1b6@arm.com> From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= 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 WNyWQQ== Organization: Red Hat In-Reply-To: <9a58b1a2-2c13-4fa0-8ffa-2b3d9655f1b6@arm.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231220_015503_593092_79EFDDB2 X-CRM114-Status: GOOD ( 28.41 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjAuMTIuMjMgMTA6NTEsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPiBPbiAyMC8xMi8yMDIzIDA5 OjE3LCBEYXZpZCBIaWxkZW5icmFuZCB3cm90ZToKPj4gT24gMTkuMTIuMjMgMTg6NDIsIFJ5YW4g Um9iZXJ0cyB3cm90ZToKPj4+IE9uIDE5LzEyLzIwMjMgMTc6MjIsIERhdmlkIEhpbGRlbmJyYW5k IHdyb3RlOgo+Pj4+IE9uIDE5LjEyLjIzIDA5OjMwLCBSeWFuIFJvYmVydHMgd3JvdGU6Cj4+Pj4+ IE9uIDE4LzEyLzIwMjMgMTc6NDcsIERhdmlkIEhpbGRlbmJyYW5kIHdyb3RlOgo+Pj4+Pj4gT24g MTguMTIuMjMgMTE6NTAsIFJ5YW4gUm9iZXJ0cyB3cm90ZToKPj4+Pj4+PiBDb252ZXJ0IGNvcHlf cHRlX3JhbmdlKCkgdG8gY29weSBhIGJhdGNoIG9mIHB0ZXMgaW4gb25lIGdvLiBBIGdpdmVuCj4+ Pj4+Pj4gYmF0Y2ggaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIG5l dyBoZWxwZXIsCj4+Pj4+Pj4gcHRlX2JhdGNoX3JlbWFpbmluZygpLCBhbmQgbWFwcyBhIHBoeXNp Y2FsbHkgY29udGlndW91cyBibG9jayBvZiBtZW1vcnksCj4+Pj4+Pj4gYWxsIGJlbG9uZ2luZyB0 byB0aGUgc2FtZSBmb2xpby4gQSBwdGUgYmF0Y2ggaXMgdGhlbiB3cml0ZS1wcm90ZWN0ZWQgaW4K Pj4+Pj4+PiBvbmUgZ28gaW4gdGhlIHBhcmVudCB1c2luZyB0aGUgbmV3IGhlbHBlciwgcHRlcF9z ZXRfd3Jwcm90ZWN0cygpIGFuZCBpcwo+Pj4+Pj4+IHNldCBpbiBvbmUgZ28gaW4gdGhlIGNoaWxk IHVzaW5nIHRoZSBuZXcgaGVscGVyLCBzZXRfcHRlc19mdWxsKCkuCj4+Pj4+Pj4KPj4+Pj4+PiBU aGUgcHJpbWFyeSBtb3RpdmF0aW9uIGZvciB0aGlzIGNoYW5nZSBpcyB0byByZWR1Y2UgdGhlIG51 bWJlciBvZiB0bGIKPj4+Pj4+PiBtYWludGVuYW5jZSBvcGVyYXRpb25zIHRoYXQgdGhlIGFybTY0 IGJhY2tlbmQgaGFzIHRvIHBlcmZvcm0gZHVyaW5nCj4+Pj4+Pj4gZm9yaywgYXMgaXQgaXMgYWJv dXQgdG8gYWRkIHRyYW5zcGFyZW50IHN1cHBvcnQgZm9yIHRoZSAiY29udGlndW91cyBiaXQiCj4+ Pj4+Pj4gaW4gaXRzIHB0ZXMuIEJ5IHdyaXRlLXByb3RlY3RpbmcgdGhlIHBhcmVudCB1c2luZyB0 aGUgbmV3Cj4+Pj4+Pj4gcHRlcF9zZXRfd3Jwcm90ZWN0cygpIChub3RlIHRoZSAncycgYXQgdGhl IGVuZCkgZnVuY3Rpb24sIHRoZSBiYWNrZW5kCj4+Pj4+Pj4gY2FuIGF2b2lkIGhhdmluZyB0byB1 bmZvbGQgY29udGlnIHJhbmdlcyBvZiBQVEVzLCB3aGljaCBpcyBleHBlbnNpdmUsCj4+Pj4+Pj4g d2hlbiBhbGwgcHRlcyBpbiB0aGUgcmFuZ2UgYXJlIGJlaW5nIHdyaXRlLXByb3RlY3RlZC4gU2lt aWxhcmx5LCBieQo+Pj4+Pj4+IHVzaW5nIHNldF9wdGVzX2Z1bGwoKSByYXRoZXIgdGhhbiBzZXRf cHRlX2F0KCkgdG8gc2V0IHVwIHB0ZXMgaW4gdGhlCj4+Pj4+Pj4gY2hpbGQsIHRoZSBiYWNrZW5k IGRvZXMgbm90IG5lZWQgdG8gZm9sZCBhIGNvbnRpZ3VvdXMgcmFuZ2Ugb25jZSB0aGV5Cj4+Pj4+ Pj4gYXJlIGFsbCBwb3B1bGF0ZWQgLSB0aGV5IGNhbiBiZSBpbml0aWFsbHkgcG9wdWxhdGVkIGFz IGEgY29udGlndW91cwo+Pj4+Pj4+IHJhbmdlIGluIHRoZSBmaXJzdCBwbGFjZS4KPj4+Pj4+Pgo+ Pj4+Pj4+IFRoaXMgY29kZSBpcyB2ZXJ5IHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSwgYW5kIGEgc2ln bmlmaWNhbnQgYW1vdW50IG9mCj4+Pj4+Pj4gZWZmb3J0IGhhcyBiZWVuIHB1dCBpbnRvIG5vdCBy ZWdyZXNzaW5nIHBlcmZvcm1hbmNlIGZvciB0aGUgb3JkZXItMAo+Pj4+Pj4+IGZvbGlvIGNhc2Uu IEJ5IGRlZmF1bHQsIHB0ZV9iYXRjaF9yZW1haW5pbmcoKSBpcyBjb21waWxlIGNvbnN0YW50IDEs Cj4+Pj4+Pj4gd2hpY2ggZW5hYmxlcyB0aGUgY29tcGlsZXIgdG8gc2ltcGxpZnkgdGhlIGV4dHJh IGxvb3BzIHRoYXQgYXJlIGFkZGVkCj4+Pj4+Pj4gZm9yIGJhdGNoaW5nIGFuZCBwcm9kdWNlIGNv ZGUgdGhhdCBpcyBlcXVpdmFsZW50IChhbmQgZXF1YWxseQo+Pj4+Pj4+IHBlcmZvcm1hbnQpIGFz IHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbi4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgY2hhbmdl IGFkZHJlc3NlcyB0aGUgY29yZS1tbSByZWZhY3RvcmluZyBvbmx5IGFuZCBhIHNlcGFyYXRlIGNo YW5nZQo+Pj4+Pj4+IHdpbGwgaW1wbGVtZW50IHB0ZV9iYXRjaF9yZW1haW5pbmcoKSwgcHRlcF9z ZXRfd3Jwcm90ZWN0cygpIGFuZAo+Pj4+Pj4+IHNldF9wdGVzX2Z1bGwoKSBpbiB0aGUgYXJtNjQg YmFja2VuZCB0byByZWFsaXplIHRoZSBwZXJmb3JtYW5jZQo+Pj4+Pj4+IGltcHJvdmVtZW50IGFz IHBhcnQgb2YgdGhlIHdvcmsgdG8gZW5hYmxlIGNvbnRwdGUgbWFwcGluZ3MuCj4+Pj4+Pj4KPj4+ Pj4+PiBUbyBlbnN1cmUgdGhlIGFybTY0IGlzIHBlcmZvcm1hbnQgb25jZSBpbXBsZW1lbnRlZCwg dGhpcyBjaGFuZ2UgaXMgdmVyeQo+Pj4+Pj4+IGNhcmVmdWwgdG8gb25seSBjYWxsIHB0ZXBfZ2V0 KCkgb25jZSBwZXIgcHRlIGJhdGNoLgo+Pj4+Pj4+Cj4+Pj4+Pj4gVGhlIGZvbGxvd2luZyBtaWNy b2JlbmNobWFyayByZXN1bHRzIGRlbW9uc3RhdGUgdGhhdCB0aGVyZSBpcyBubwo+Pj4+Pj4+IHNp Z25pZmljYW50IHBlcmZvcm1hbmNlIGNoYW5nZSBhZnRlciB0aGlzIHBhdGNoLiBGb3JrIGlzIGNh bGxlZCBpbiBhCj4+Pj4+Pj4gdGlnaHQgbG9vcCBpbiBhIHByb2Nlc3Mgd2l0aCAxRyBvZiBwb3B1 bGF0ZWQgbWVtb3J5IGFuZCB0aGUgdGltZSBmb3IgdGhlCj4+Pj4+Pj4gZnVuY3Rpb24gdG8gZXhl Y3V0ZSBpcyBtZWFzdXJlZC4gMTAwIGl0ZXJhdGlvbnMgcGVyIHJ1biwgOCBydW5zCj4+Pj4+Pj4g cGVyZm9ybWVkIG9uIGJvdGggQXBwbGUgTTIgKFZNKSBhbmQgQW1wZXJlIEFsdHJhIChiYXJlIG1l dGFsKS4gVGVzdHMKPj4+Pj4+PiBwZXJmb3JtZWQgZm9yIGNhc2Ugd2hlcmUgMUcgbWVtb3J5IGlz IGNvbXByaXNlZCBvZiBvcmRlci0wIGZvbGlvcyBhbmQKPj4+Pj4+PiBjYXNlIHdoZXJlIGNvbXBy aXNlZCBvZiBwdGUtbWFwcGVkIG9yZGVyLTkgZm9saW9zLiBOZWdhdGl2ZSBpcyBmYXN0ZXIsCj4+ Pj4+Pj4gcG9zaXRpdmUgaXMgc2xvd2VyLCBjb21wYXJlZCB0byBiYXNlbGluZSB1cG9uIHdoaWNo IHRoZSBzZXJpZXMgaXMgYmFzZWQ6Cj4+Pj4+Pj4KPj4+Pj4+PiB8IEFwcGxlIE0yIFZNwqDCoCB8 IG9yZGVyLTAgKHB0ZS1tYXApIHwgb3JkZXItOSAocHRlLW1hcCkgfAo+Pj4+Pj4+IHwgZm9ya8Kg wqDCoMKgwqDCoMKgwqDCoCB8LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0t fAo+Pj4+Pj4+IHwgbWljcm9iZW5jaMKgwqDCoCB8wqDCoMKgIG1lYW4gfMKgwqAgc3RkZXYgfMKg wqDCoCBtZWFuIHzCoMKgIHN0ZGV2IHwKPj4+Pj4+PiB8LS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0t LXwtLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLXwKPj4+Pj4+PiB8IGJhc2VsaW5lwqDCoMKg wqDCoCB8wqDCoMKgIDAuMCUgfMKgwqDCoCAxLjElIHzCoMKgwqAgMC4wJSB8wqDCoMKgIDEuMiUg fAo+Pj4+Pj4+IHwgYWZ0ZXItY2hhbmdlwqAgfMKgwqAgLTEuMCUgfMKgwqDCoCAyLjAlIHzCoMKg IC0wLjElIHzCoMKgwqAgMS4xJSB8Cj4+Pj4+Pj4KPj4+Pj4+PiB8IEFtcGVyZSBBbHRyYcKgIHwg b3JkZXItMCAocHRlLW1hcCkgfCBvcmRlci05IChwdGUtbWFwKSB8Cj4+Pj4+Pj4gfCBmb3JrwqDC oMKgwqDCoMKgwqDCoMKgIHwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18 Cj4+Pj4+Pj4gfCBtaWNyb2JlbmNowqDCoMKgIHzCoMKgwqAgbWVhbiB8wqDCoCBzdGRldiB8wqDC oMKgIG1lYW4gfMKgwqAgc3RkZXYgfAo+Pj4+Pj4+IHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0t fC0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tfAo+Pj4+Pj4+IHwgYmFzZWxpbmXCoMKgwqDC oMKgIHzCoMKgwqAgMC4wJSB8wqDCoMKgIDEuMCUgfMKgwqDCoCAwLjAlIHzCoMKgwqAgMC4xJSB8 Cj4+Pj4+Pj4gfCBhZnRlci1jaGFuZ2XCoCB8wqDCoCAtMC4xJSB8wqDCoMKgIDEuMiUgfMKgwqAg LTAuMSUgfMKgwqDCoCAwLjElIHwKPj4+Pj4+Pgo+Pj4+Pj4+IFRlc3RlZC1ieTogSm9obiBIdWJi YXJkIDxqaHViYmFyZEBudmlkaWEuY29tPgo+Pj4+Pj4+IFJldmlld2VkLWJ5OiBBbGlzdGFpciBQ b3BwbGUgPGFwb3BwbGVAbnZpZGlhLmNvbT4KPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBSeWFuIFJv YmVydHMgPHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPgo+Pj4+Pj4+IC0tLQo+Pj4+Pj4+ICDCoMKgwqAg aW5jbHVkZS9saW51eC9wZ3RhYmxlLmggfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+Pj4+Pj4+ICDCoMKgwqAgbW0vbWVtb3J5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4+ ICDCoMKgwqAgMiBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25z KC0pCj4+Pj4+Pj4KPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgg Yi9pbmNsdWRlL2xpbnV4L3BndGFibGUuaAo+Pj4+Pj4+IGluZGV4IGFmNzYzOWMzYjBhMy4uZGI5 M2ZiODE0NjVhIDEwMDY0NAo+Pj4+Pj4+IC0tLSBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oCj4+ Pj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKPj4+Pj4+PiBAQCAtMjA1LDYgKzIw NSwyNyBAQCBzdGF0aWMgaW5saW5lIGludCBwbWRfeW91bmcocG1kX3QgcG1kKQo+Pj4+Pj4+ICDC oMKgwqAgI2RlZmluZSBhcmNoX2ZsdXNoX2xhenlfbW11X21vZGUoKcKgwqDCoCBkbyB7fSB3aGls ZSAoMCkKPj4+Pj4+PiAgwqDCoMKgICNlbmRpZgo+Pj4+Pj4+ICDCoMKgwqAgKyNpZm5kZWYgcHRl X2JhdGNoX3JlbWFpbmluZwo+Pj4+Pj4+ICsvKioKPj4+Pj4+PiArICogcHRlX2JhdGNoX3JlbWFp bmluZyAtIE51bWJlciBvZiBwYWdlcyBmcm9tIGFkZHIgdG8gbmV4dCBiYXRjaCBib3VuZGFyeS4K Pj4+Pj4+PiArICogQHB0ZTogUGFnZSB0YWJsZSBlbnRyeSBmb3IgdGhlIGZpcnN0IHBhZ2UuCj4+ Pj4+Pj4gKyAqIEBhZGRyOiBBZGRyZXNzIG9mIHRoZSBmaXJzdCBwYWdlLgo+Pj4+Pj4+ICsgKiBA ZW5kOiBCYXRjaCBjZWlsaW5nIChlLmcuIGVuZCBvZiB2bWEpLgo+Pj4+Pj4+ICsgKgo+Pj4+Pj4+ ICsgKiBTb21lIGFyY2hpdGVjdHVyZXMgKGFybTY0KSBjYW4gZWZmaWNpZW50bHkgbW9kaWZ5IGEg Y29udGlndW91cyBiYXRjaCBvZgo+Pj4+Pj4+IHB0ZXMuCj4+Pj4+Pj4gKyAqIEluIHN1Y2ggY2Fz ZXMsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYWdlcyB0 bwo+Pj4+Pj4+IHRoZSBlbmQKPj4+Pj4+PiArICogb2YgdGhlIGN1cnJlbnQgYmF0Y2gsIGFzIGRl ZmluZWQgYnkgYWRkci4gVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4KPj4+Pj4+PiBpdGVyYXRpbmcK Pj4+Pj4+PiArICogb3ZlciBwdGVzLgo+Pj4+Pj4+ICsgKgo+Pj4+Pj4+ICsgKiBNYXkgYmUgb3Zl cnJpZGRlbiBieSB0aGUgYXJjaGl0ZWN0dXJlLCBlbHNlIGJhdGNoIHNpemUgaXMgYWx3YXlzIDEu Cj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBwdGVfYmF0 Y2hfcmVtYWluaW5nKHB0ZV90IHB0ZSwgdW5zaWduZWQgbG9uZwo+Pj4+Pj4+IGFkZHIsCj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWdu ZWQgbG9uZyBlbmQpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArwqDCoMKgIHJldHVybiAxOwo+Pj4+Pj4+ ICt9Cj4+Pj4+Pj4gKyNlbmRpZgo+Pj4+Pj4KPj4+Pj4+IEl0J3MgYSBzaGFtZSB3ZSBub3cgbG9z ZSB0aGUgb3B0aW1pemF0aW9uIGZvciBhbGwgb3RoZXIgYXJjaHRpZWN0dXJlcy4KPj4+Pj4+Cj4+ Pj4+PiBXYXMgdGhlcmUgbm8gd2F5IHRvIGhhdmUgc29tZSBiYXNpYyBiYXRjaGluZyBtZWNoYW5p c20gdGhhdCBkb2Vzbid0IHJlcXVpcmUKPj4+Pj4+IGFyY2gKPj4+Pj4+IHNwZWNpZmljcz8KPj4+ Pj4KPj4+Pj4gSSB0cmllZCBhIGJ1bmNoIG9mIHRoaW5ncyBidXQgdWx0aW1hdGVseSB0aGUgd2F5 IEkndmUgZG9uZSBpdCB3YXMgdGhlIG9ubHkgd2F5Cj4+Pj4+IHRvIHJlZHVjZSB0aGUgb3JkZXIt MCBmb3JrIHJlZ3Jlc3Npb24gdG8gMC4KPj4+Pj4KPj4+Pj4gTXkgb3JpZ2luYWwgdjMgcG9zdGlu ZyB3YXMgY29zdGluZyA1JSBleHRyYSBhbmQgZXZlbiBteSBmaXJzdCBhdHRlbXB0IGF0IGFuCj4+ Pj4+IGFyY2gtc3BlY2lmaWMgdmVyc2lvbiB0aGF0IGRpZG4ndCByZXNvbHZlIHRvIGEgY29tcGls ZS10aW1lIGNvbnN0YW50IDEgc3RpbGwKPj4+Pj4gY29zdCBhbiBleHRyYSAzJS4KPj4+Pj4KPj4+ Pj4KPj4+Pj4+Cj4+Pj4+PiBJJ2QgaGF2ZSB0aG91Z2h0IHRoYXQgc29tZXRoaW5nIHZlcnkgYmFz aWMgd291bGQgaGF2ZSB3b3JrZWQgbGlrZToKPj4+Pj4+Cj4+Pj4+PiAqIENoZWNrIGlmIFBURSBp cyB0aGUgc2FtZSB3aGVuIHNldHRpbmcgdGhlIFBGTiB0byAwLgo+Pj4+Pj4gKiBDaGVjayB0aGF0 IFBGTiBpcyBjb25zZWN1dGl2ZQo+Pj4+Pj4gKiBDaGVjayB0aGF0IGFsbCBQRk5zIGJlbG9uZyB0 byB0aGUgc2FtZSBmb2xpbwo+Pj4+Pgo+Pj4+PiBJIGhhdmVuJ3QgdHJpZWQgdGhpcyBleGFjdCBh cHByb2FjaCwgYnV0IEknZCBiZSBzdXJwcmlzZWQgaWYgSSBjYW4gZ2V0IHRoZQo+Pj4+PiByZWdy ZXNzaW9uIHVuZGVyIDQlIHdpdGggdGhpcy4gRnVydGhlciBhbG9uZyB0aGUgc2VyaWVzIEkgc3Bl bnQgYSBsb3Qgb2YgdGltZQo+Pj4+PiBoYXZpbmcgdG8gZmlkZGxlIHdpdGggdGhlIGFybTY0IGlt cGxlbWVudGF0aW9uOyBldmVyeSBjb25kaXRpb25hbCBhbmQgZXZlcnkKPj4+Pj4gbWVtb3J5IHJl YWQgKGV2ZW4gd2hlbiBpbiBjYWNoZSkgd2FzIGEgcHJvYmxlbS4gVGhlcmUgaXMganVzdCBzbyBs aXR0bGUgaW4gdGhlCj4+Pj4+IGlubmVyIGxvb3AgdGhhdCBldmVyeSBpbnN0cnVjdGlvbiBtYXR0 ZXJzLiAoQXQgbGVhc3Qgb24gQW1wZXJlIEFsdHJhIGFuZCBBcHBsZQo+Pj4+PiBNMikuCj4+Pj4+ Cj4+Pj4+IE9mIGNvdXJzZSBpZiB5b3UncmUgd2lsbGluZyB0byBwYXkgdGhhdCA0LTUlIGZvciBv cmRlci0wIHRoZW4gdGhlIGJlbmVmaXQgdG8KPj4+Pj4gb3JkZXItOSBpcyBhcm91bmQgMTAlIGlu IG15IG1lYXN1cmVtZW50cy4gUGVyc29uYWxseSB0aG91Z2gsIEknZCBwcmVmZXIgdG8gcGxheQo+ Pj4+PiBzYWZlIGFuZCBlbnN1cmUgdGhlIGNvbW1vbiBvcmRlci0wIGNhc2UgZG9lc24ndCByZWdy ZXNzLCBhcyB5b3UgcHJldmlvdXNseQo+Pj4+PiBzdWdnZXN0ZWQuCj4+Pj4+Cj4+Pj4KPj4+PiBJ IGp1c3QgaGFja2VkIHNvbWV0aGluZyB1cCwgb24gdG9wIG9mIG15IGJlbG92ZWQgcm1hcCBjbGVh bnVwL2JhdGNoaW5nIHNlcmllcy4gSQo+Pj4+IGltcGxlbWVudGVkIHZlcnkgZ2VuZXJpYyBhbmQg c2ltcGxlIGJhdGNoaW5nIGZvciBsYXJnZSBmb2xpb3MgKGFsbCBQVEUgYml0cwo+Pj4+IGV4Y2Vw dCB0aGUgUEZOIGhhdmUgdG8gbWF0Y2gpLgo+Pj4+Cj4+Pj4gU29tZSB2ZXJ5IHF1aWNrIHRlc3Rp bmcgKGRvbid0IHRydXN0IGVhY2ggbGFzdCAlICkgb24gSW50ZWwoUikgWGVvbihSKSBTaWx2ZXIK Pj4+PiA0MjEwUiBDUFUuCj4+Pj4KPj4+PiBvcmRlci0wOiAwLjAxNDIxMCAtPiAwLjAxMzk2OQo+ Pj4+Cj4+Pj4gLT4gQXJvdW5kIDEuNyAlIGZhc3Rlcgo+Pj4+Cj4+Pj4gb3JkZXItOTogMC4wMTQz NzMgLT4gMC4wMDkxNDkKPj4+Pgo+Pj4+IC0+IEFyb3VuZCAzNi4zICUgZmFzdGVyCj4+Pgo+Pj4g V2VsbCBJIGd1ZXNzIHRoYXQgc2hvd3MgbWUgOikKPj4+Cj4+PiBJJ2xsIGRvIGEgcmV2aWV3IGFu ZCBydW4gdGhlIHRlc3RzIG9uIG15IEhXIHRvIHNlZSBpZiBpdCBjb25jdXJzLgo+Pgo+Pgo+PiBJ IHB1c2hlZCBhIHNpbXBsZSBjb21waWxlIGZpeHVwICh3ZSBuZWVkIHB0ZV9uZXh0X3BmbigpKS4K PiAKPiBJJ3ZlIGp1c3QgYmVlbiB0cnlpbmcgdG8gY29tcGlsZSBhbmQgbm90aWNlZCB0aGlzLiBX aWxsIHRha2UgYSBsb29rIGF0IHlvdXIgdXBkYXRlLgo+IAo+IEJ1dCB1cG9uIHJldmlldywgSSd2 ZSBub3RpY2VkIHRoZSBwYXJ0IHRoYXQgSSB0aGluayBtYWtlcyB0aGlzIGRpZmZpY3VsdCBmb3IK PiBhcm02NCB3aXRoIHRoZSBjb250cHRlIG9wdGltaXphdGlvbjsgWW91IGFyZSBjYWxsaW5nIHB0 ZXBfZ2V0KCkgZm9yIGV2ZXJ5IHB0ZSBpbgo+IHRoZSBiYXRjaC4gV2hpbGUgdGhpcyBpcyBmdW5j dGlvbmFsbHkgY29ycmVjdCwgb25jZSBhcm02NCBoYXMgdGhlIGNvbnRwdGUKPiBjaGFuZ2VzLCBp dHMgcHRlcF9nZXQoKSBoYXMgdG8gcmVhZCBldmVyeSBwdGUgaW4gdGhlIGNvbnRwdGUgYmxvY2sg aW4gb3JkZXIgdG8KPiBnYXRoZXIgdGhlIGFjY2VzcyBhbmQgZGlydHkgYml0cy4gU28gaWYgeW91 ciBiYXRjaGluZyBmdW5jdGlvbiBlbmRzIHVwIHdlYWxraW5nCj4gYSAxNiBlbnRyeSBjb250cHRl IGJsb2NrLCB0aGF0IHdpbGwgY2F1c2UgMTYgeCAxNiByZWFkcywgd2hpY2gga2lsbHMKPiBwZXJm b3JtYW5jZS4gVGhhdCdzIHdoeSBJIGFkZGVkIHRoZSBhcmNoLXNwZWNpZmljIHB0ZV9iYXRjaF9y ZW1haW5pbmcoKQo+IGZ1bmN0aW9uOyB0aGlzIGFsbG93cyB0aGUgY29yZS1tbSB0byBza2lwIHRv IHRoZSBlbmQgb2YgdGhlIGNvbnRwdGUgYmxvY2sgYW5kCj4gYXZvaWQgcHRlcF9nZXQoKSBmb3Ig dGhlIDE1IHRhaWwgcHRlcy4gU28gd2UgZW5kIHVwIHdpdGggMTYgUkVBRF9PTkNFKClzIGluc3Rl YWQKPiBvZiAyNTYuCj4gCj4gSSBjb25zaWRlcmVkIG1ha2luZyBhIHB0ZXBfZ2V0X25veW91bmdk aXJ0eSgpIHZhcmlhbnQsIHdoaWNoIHdvdWxkIGF2b2lkIHRoZSBiaXQKPiBnYXRoZXJpbmcuIEJ1 dCB3ZSBoYXZlIGEgc2ltaWxhciBwcm9ibGVtIGluIHphcF9wdGVfcmFuZ2UoKSBhbmQgdGhhdCBm dW5jdGlvbgo+IG5lZWRzIHRoZSBkaXJ0eSBiaXQgdG8gdXBkYXRlIHRoZSBmb2xpby4gU28gaXQg ZG9lc24ndCB3b3JrIHRoZXJlLiAoc2VlIHBhdGNoIDMKPiBpbiBteSBzZXJpZXMpLgo+IAo+IEkg Z3Vlc3MgeW91IGFyZSBnb2luZyB0byBzYXkgdGhhdCB3ZSBzaG91bGQgY29tYmluZSBib3RoIGFw cHJvYWNoZXMsIHNvIHRoYXQKPiB5b3VyIGJhdGNoaW5nIGxvb3AgY2FuIHNraXAgZm9yd2FyZCBh biBhcmNoLXByb3ZpZGVkIG51bWJlciBvZiBwdGVzPyBUaGF0IHdvdWxkCj4gY2VydGFpbmx5IHdv cmssIGJ1dCBmZWVscyBsaWtlIGFuIG9ydGhvZ29uYWwgY2hhbmdlIHRvIHdoYXQgSSdtIHRyeWlu ZyB0bwo+IGFjaGlldmUgOikuIEFueXdheSwgSSdsbCBzcGVuZCBzb21lIHRpbWUgcGxheWluZyB3 aXRoIGl0IHRvZGF5LgoKWW91IGNhbiBvdmVyd3JpdGUgdGhlIGZ1bmN0aW9uIG9yIGFkZCBzcGVj aWFsLWNhc2luZyBpbnRlcm5hbGx5LCB5ZXMuCgpSaWdodCBub3csIHlvdXIgcGF0Y2ggaXMgY2Fs bGVkICJtbTogQmF0Y2gtY29weSBQVEUgcmFuZ2VzIGR1cmluZyAKZm9yaygpIiBhbmQgaXQgZG9l c24ndCBkbyBhbnkgb2YgdGhhdCBiZXNpZGVzIHByZXBhcmluZyBmb3Igc29tZSBhcm02NCB3b3Jr LgoKLS0gCkNoZWVycywKCkRhdmlkIC8gZGhpbGRlbmIKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==