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 9A917CDB47E for ; Fri, 13 Oct 2023 20:15:25 +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:Subject:From:References:Cc:To: 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=Woc0HsRdSHPxhrUHR/lz/WcxZGDPvT4LN3CewHLutc4=; b=BDI5BlcYpgtCDD qPifkBYf4+bMGcjtcG/7GAGVq1Rr2NKw6LQyExJuhL8hISidfgNH545IF8lNl+Fgct8gcMMRy9F2G Fs5/xGGfumZDgFx9sSuIssrg1pt89fdzrjvs6dgdLRKPHrhdDMND3aiekH3RfQdKP3O6kdZvFqKSC WyPmQu31PFfjZ3tjjbIjyNg1IrY2KokOxGUbj4f1RuOapB25JVbFdl14J1VlmRCy6mdKTrhVvAHbM 5Pwp+4KzpUgbvjv1k3STpcii8Al3MyucPhFTyP7eAWti30f20NHU8lGg3ZZW1y/ctuFHMag4wMx2Y Ka31PeCEpOhGDHzt6+4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qrOYf-004Che-26; Fri, 13 Oct 2023 20:14:53 +0000 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qrOYb-004CgL-1S for linux-arm-kernel@lists.infradead.org; Fri, 13 Oct 2023 20:14:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697228086; 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; bh=cqkyuKTLeif6mbOtJo/ug3/H7Xljs9fGbBdrTOe8vqc=; b=RhE1p0ex1Ug6odwS61aOjIt0ton+YGZP/EsFsFQDRvKs8Fl+q++yBk4mvtwClY9Q5cZUr/ 2LPEmM/src1sGWBOw3EUNUc+FEH58tPcs/oBesoQ26G1tLInb5lZuBqNgw/WFa2hDuhnyu Hpr3pAgh80D6tcRdx3tq8XHYyEeTigU= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-9-yfH9b5aZPxSgzlc6IaIWSw-1; Fri, 13 Oct 2023 16:14:43 -0400 X-MC-Unique: yfH9b5aZPxSgzlc6IaIWSw-1 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-405629826ccso18458295e9.0 for ; Fri, 13 Oct 2023 13:14:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697228082; x=1697832882; h=content-transfer-encoding:in-reply-to:subject:organization:from :content-language:references:cc:to:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cqkyuKTLeif6mbOtJo/ug3/H7Xljs9fGbBdrTOe8vqc=; b=awJ+4R151Hidpc41rYfw4lOc0spQKqzuK0/kfJ2MRKfHG8bp7C1o5C3ITWH0b7xlyt GBvjd/HFeC3GO/PYF3uERjT3qF/VdrqxOgNQiHKsK3N0kw/AJ0j2hxOhCWSW4VThHdVj wJC9jtizLxTrQNmfdUeSUFeudw9jSbr3mwYGY+NcM7DfOkODXqO/WS9/0yL/B1ftcK0A n+J8sDpi61ZLpP2hbmZBHFqUbDJcf60Ir+HeC5mwXS8/8DmbwMzwxRXLPRhWBhaHan0B lffGfs+dv6yO8XJ/VGqpNPX8JdvOpZGWoiJk2B0JKIgpZZ2z/qlfDB7UD7Be5pumiPoZ +6wQ== X-Gm-Message-State: AOJu0YzAYtExr2M0XiNJuvv85PbNPKtLG88eEfcOy4uNeEXvHhBBrtS9 8dkIETLHFADZBNOaTVp33sw91pVqLybrdg/xmvfN8gyMw8DmPvoIb30MDkosH4Nz7mes1JVt3bF aLD000y2rEJ6DEKJ40raFiKNdPvF9XxpStKk= X-Received: by 2002:a5d:46ca:0:b0:32d:9df1:6f68 with SMTP id g10-20020a5d46ca000000b0032d9df16f68mr2155132wrs.22.1697228081848; Fri, 13 Oct 2023 13:14:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHvcCrvmO9S0f+ou/Lb5JoNjHQYcvMkd/qs+BghB6/pfa8BnKb5+wcuGyKUhPpRNY7cZiBgMQ== X-Received: by 2002:a5d:46ca:0:b0:32d:9df1:6f68 with SMTP id g10-20020a5d46ca000000b0032d9df16f68mr2155113wrs.22.1697228081281; Fri, 13 Oct 2023 13:14:41 -0700 (PDT) Received: from ?IPV6:2003:cb:c718:9300:1381:43e2:7c78:b68f? (p200300cbc7189300138143e27c78b68f.dip0.t-ipconnect.de. [2003:cb:c718:9300:1381:43e2:7c78:b68f]) by smtp.gmail.com with ESMTPSA id o22-20020a05600c4fd600b0040644e699a0sm72387wmq.45.2023.10.13.13.14.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 Oct 2023 13:14:40 -0700 (PDT) Message-ID: <5b457c48-d600-c4be-72d4-2cd8213e9307@redhat.com> Date: Fri, 13 Oct 2023 22:14:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 To: Ryan Roberts , Andrew Morton , Matthew Wilcox , Yin Fengwei , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230929114421.3761121-1-ryan.roberts@arm.com> <6d89fdc9-ef55-d44e-bf12-fafff318aef8@redhat.com> <99f8294b-b4e5-424f-d761-24a70a82cc1a@redhat.com> <15a52c3d-9584-449b-8228-1335e0753b04@arm.com> From: David Hildenbrand Organization: Red Hat Subject: Re: [PATCH v6 0/9] variable-order, large folios for anonymous memory In-Reply-To: <15a52c3d-9584-449b-8228-1335e0753b04@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-20231013_131449_565261_3464590D X-CRM114-Status: GOOD ( 61.48 ) 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 Cj4+Cj4+IFllcywgSSB0aGluayB0aGVyZSBhcmUgdmFyaW91cyB3YXlzIGZvcndhcmQgcmVnYXJk aW5nIHRoYXQuIE9yIHRvIGVuYWJsZSAiYXV0byIKPj4gbW9kZSBvbmx5IG9uY2UgYWxsIGFyZSAi YXV0byIsIGFuZCBhcyBzb29uIGFzIG9uZSBpcyBub3QgImF1dG8iLCBqdXN0IGRpc2FibGUKPj4g aXQuIEEgc2ltcGxlCj4+Cj4+IGVjaG8gImF1dG8iID4gL3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJl bnRfaHVnZXBhZ2UvaHVnZXBhZ2VzLSovZW5hYmxlZAo+IAo+IEknbSBub3QgcmVhbGx5IGEgZmFu LCBiZWNhdXNlIHRoaXMgaW1wbGllcyB0aGF0IHlvdSBoYXZlIGEgcGVyaW9kIHdoZXJlICJhdXRv Igo+IGlzIHJlcG9ydGVkIGZvciBhIHNpemUsIGJ1dCBpdHMgbm90IHJlYWxseSBpbiAiYXV0byIg bW9kZSB5ZXQuCgpJIHRoaW5rIHRoZXJlIGFyZSB2YXJpb3VzIGFsdGVybmF0aXZlcyB0aGF0IGFy ZSBmZWFzaWJsZS4KCkZvciBtb3N0IHN5c3RlbXMgbGF0ZXIsIHlvdSdkIHdhbnQgdG8ganVzdCAi YXV0byIgdmlhIGNvbXBpbGUtdGltZSAKQ09ORklHIG9wdGlvbiBhcyBkZWZhdWx0IG9yIHZpYSBz b21lIGNtZGxpbmUgb3B0aW9uIGxpa2UgCiJ0cmFuc3BhcmVudF9odWdlcGFnZT1hdXRvIi4KCj4g Cj4+Cj4+IFdvdWxkIGRvIHRvIGVuYWJsZSBpdC4gT3IsIGhhdmUgdGhlbSBhbGwgYmUgImdsb2Jh bCIgYW5kIGhhdmUgYSBnbG9iYWwgImF1dG8iCj4+IG1vZGUgYXMgeW91IHJhaXNlZC4KPj4KPj4g ZWNobyAiZ2xvYmFsIiA+IC9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2h1Z2Vw YWdlcy0qL2VuYWJsZWQKPj4gZWNobyAiYXV0byIgPiAvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVu dF9odWdlcGFnZS9lbmFibGVkCj4+Cj4gCj4gQWdhaW4sIHRoaXMgaXNuJ3QgYXRvbWljIGVpdGhl ci4gSSB0ZW5kIHRvIHByZWZlciBteSBwcm9wb3NhbCBiZWNhdXNlIGl0Cj4gc3dpdGNoZXMgYXRv bWljYWxseSAtIHRoZXJlIGFyZSBubyB3ZWlyZCBpbnRlcm1lZGlhdGUgc3RhdGVzLiBBbnl3YXks IEkgZ3Vlc3MKPiB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHdlIGhhdmUgZGVtb25zdHJhdGVkIHRo YXQgeW91ciBwcm9wb3NlZCBpbnRlcmZhY2UgY291bGQKPiBiZSBleHRlbmRlZCB0byBzdXBwb3J0 ICJhdXRvIiBpbiBmdXR1cmUsIHNob3VsZCB3ZSBuZWVkIGl0LgoKSSBkb24ndCB0aGluayB0aGUg YXRvbWljIHN3aXRjaCBpcyByZWFsbHkgcmVsZXZhbnQuIEJ1dCB0aGF0J3MgcHJvYmFibHkgCmEg c2VwYXJhdGUgZGlzY3Vzc2lvbi4KClsuLi5dCgo+Pgo+PiBKdXN0IGJlY2F1c2UgYSBzbWFsbC1z aXplZCBUSFAgaXMgUFRFLW1hcHBlZCBkb2Vzbid0IHRlbGwgeW91IGFueXRoaW5nLCByZWFsbHku Cj4+IFdoYXQgeW91IHdhbnQgdG8ga25vdyBpcyBpZiBpdCBpcyAiY29tcGxldGVseSIgYW5kICJj b25zZWN1dGl2ZWx5IiBtYXBwZWQgc3VjaAo+PiB0aGF0IHRoZSBIVyBjYW4gYWN0dWFsbHkgYmVu ZWZpdCBmcm9tIGl0IC0tIGlmIEhXIGV2ZW4gc3VwcG9ydHMgaXQuIFNvCj4+ICJQVEUtbWFwcGVk IFRIUCIgaXMganVzdCBwYXJ0IG9mIHRoZSBzdG9yeS4gQW5kIHRoYXQncyB3aGVyZSBpdCBnZXRz IHRyaWNreSBJCj4+IHRoaW5rLgo+Pgo+PiBJIGFncmVlIHRoYXQgaXQncyBnb29kIGZvciBkZWJ1 Z2dpbmcsIGJ1dCB0aGVuIG1heWJlIGl0IHNob3VsZCBhKSBsaXZlIHNvbWV3aGVyZQo+PiBlbHNl IChkZWJ1Z2ZzLCBidWNrZXRpbmcgYmVsb3cpIGFuZCBiKSBiZSBjb25zaXN0ZW50IHdpdGggb3Ro ZXIgVEhQcywgbWVhbmluZyB3ZQo+PiBhbHNvIHdhbnQgc2ltaWxhciBzdGF0cyBzb21ld2hlcmUu Cj4+Cj4+IE9uZSBpZGVhIHdvdWxkIGJlIHRvIGV4cG9zZSBzdWNoIHN0YXRzIGluIGEgUi9PIGZh c2hpb24gbGlrZSAibnJfYWxsb2NhdGVkIiBvcgo+PiAibnJfaHVnZXBhZ2VzIiBpbiAvc3lzL2tl cm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9odWdlcGFnZXMtNjRrQi8gYW5kCj4+IGZyaWVu ZHMuIE9mIGNvdXJzZSwgbWF5YmUgdGFnZ2luZyB0aGVtIHdpdGggImFub24iIHByZWZpeC4KPiAK PiBJIHNlZSB5b3VyIHBvaW50LCBidXQgSSBkb24ndCBjb21wbGV0ZWx5IGFncmVlIHdpdGggaXQg YWxsLiBUaGF0IHNhaWQsIGdpdmVuCj4geW91ciBjb25jbHVzaW9uIGF0IHRoZSBib3R0b20sIHBl cmhhcHMgd2Ugc2hvdWxkIHBhcmsgdGhlIGRpc2N1c3Npb24gYWJvdXQgdGhlCj4gYWNjb3VudGlu ZyBmb3IgYSBzZXBhcmF0ZSBzZXJpZXMgaW4gZnV0dXJlPyBUaGVuIHdlIGNhbiBmb2N1cyBvbiB0 aGUgQUJJPwoKWWVzIQoKPiAKPj4KPj4+Cj4+PiBJIHdvdWxkIGFjdHVhbGx5IGFyZ3VlIGZvciBh ZGRpbmcgc2ltaWxhciBjb3VudGVycyBmb3IgZmlsZS1iYWNrZWQgbWVtb3J5IHRvbwo+Pj4gZm9y IHRoZSBzYW1lIHJlYXNvbnMuIChJIGFjdHVhbGx5IHBvc3RlZCBhbiBpbmRlcGVuZGVudCBwYXRj aCBhIHdoaWxlIGJhY2sgdGhhdAo+Pj4gZGlkIHRoaXMgZm9yIGZpbGUtIGFuZCBhbm9uLSBtZW1v cnksIGJ1Y2tldHRlZCBieSBzaXplLiBCdXQgSSB0aGluayB0aGUgaWRlYSBvZgo+Pj4gdGhlIGJ1 Y2tldHRpbmcgd2FzIE5BS2VkLgo+PiBGb3IgZGVidWdnaW5nLCBJICp0aGluayogaXQgbWlnaHQg YmUgdmFsdWFibGUgdG8gc2VlIGhvdyBtYW55IFRIUCBvZiBlYWNoIHNpemUKPj4gYXJlIGFsbG9j YXRlZC4gVHJhY2tpbmcgZXhhY3RseSAiaG93IGlzIGl0IG1hcHBlZCIgaXMgbm90IGVhc3kgdG8g YWNoaWV2ZSBhcyB3ZQo+PiBsZWFybmVkLiBQTUQtbWFwcGVkIHdhcyBlYXN5LCBidXQgYWxzbyBy ZXF1aXJlcyB1cyB0byBrZWVwIGRvaW5nIHRoYXQgdHJhY2tpbmcKPj4gZm9yIGFsbCBldGVybml0 eSAuLi4KPj4KPj4gRG8geW91IGhhdmUgYSBwb2ludGVyIHRvIHRoZSBwYXRjaCBzZXQ/IERpZCBp dCB0cnkgdG8gc3F1ZWV6ZSBpdCBpbnRvCj4+IC9wcm9jL21lbWluZm8/Cj4gCj4gSSB3YXMgYWN0 dWFsbHkgb25seSB3b3JraW5nIG9uIHNtYXBzL3NtYXBzX3JvbGx1cCwgd2hpY2ggaGFzIGJlZW4g bXkgbWFpbiB0b29sCj4gZm9yIGRlYnVnZ2luZy4gcGF0Y2hlcyBhdCBbMV0uCj4gCj4gWzFdIGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW1tLzIwMjMwNjEzMTYwOTUwLjM1NTQ2NzUtMS1y eWFuLnJvYmVydHNAYXJtLmNvbS8KPiAKClRoYW5rcyBmb3IgdGhlIHBvaW50ZXIhCgpbLi4uXQoK Pj4+Cj4+PiBJJ2xsIG5lZWQgc29tZSBoZWxwIHdpdGggY2xhc2lmeWluZyB0aGVtLCBzbyBzaG93 aW5nIG15IHdvcmtpbmcuIEZpbmFsIGxpc3QgdGhhdAo+Pj4gSSB3b3VsZCBwcm9wb3NlIGFzIHN0 cmljdCByZXF1aXJlbWVudHMgYXQgYm90dG9tLgo+Pj4KPj4+IFRoaXMgaXMgbXkgbGlzdCB3aXRo IHN0YXR1cywgYXMgcGVyIHJlc3BvbnNlIHRvIFl1IGluIG90aGVyIHRocmVhZDoKPj4+Cj4+PiAg wqDCoCAtIERhdmlkIGlzIHdvcmtpbmcgb24gInNoYXJlZCB2cyBleGNsdXNpdmUgbWFwcGluZ3Mi Cj4+Cj4+IFByb2JhYmx5ICJDT1cgcmV1c2Ugc3VwcG9ydCIgaXMgYSBzZXBhcmF0ZSBpdGVtLCBh bHRob3VnaCBteSBhcHByb2FjaCB3b3VsZAo+PiBjb3ZlciB0aGF0Lgo+IAo+IFllYWggdGhhdCdz IHRoZSBpbiB0aGUgb3JpZ2luYWwgdGhyZWFkIGFzICgyKSwgYnV0IEkgdGhvdWdodCB3ZSB3ZXJl IGFsbCBhZ3JlZWQKPiB0aGF0IGlzIG5vdCBhIHByZXJlcXVpc2l0ZSBzbyBkaWRuJ3QgYnJpbmcg aXQgb3ZlciBoZXJlLgoKQWdyZWVkLiBIYXZpbmcgYSBmdWxsIGxpc3Qgb2YgdG9kbyBpdGVtcyBt aWdodCBiZSByZWFzb25hYmxlLgoKPiAKPj4KPj4gVGhlIHF1ZXN0aW9uIGlzLCBpZiB0aGUgZXN0 aW1hdGUgd2UncmUgdXNpbmcgaW4gbW9zdCBjb2RlIGZvciBub3cgd291bGQgYXQgbGVhc3QKPj4g YmUgc3VmZmljaWVudCB0byBtZXJnZSBpdC4gVGhlIGVzdGltYXRlIGlzIGVhc2lseSB3cm9uZywg YnV0IHdlIGRvIGhhdmUgdGhhdAo+PiBpc3N1ZSB3aXRoIFBURS1tYXBwZWQgVEhQIGFscmVhZHku Cj4gCj4gV2VsbCBhcyBJIHVuZGVyc3RhbmQgaXQsIGF0IGxlYXN0IHRoZSBOVU1BIGJhbGFuY2lu ZyBjb2RlIGFuZCBraHVnZXBhZ2VkIGFyZQo+IGlnbm9yaW5nIGFsbCBmb2xpb3MgPiBvcmRlci0w LiBUaGF0J3MgcHJvYmFibHkgb2sgZm9yIHRoZSBvY2Nhc2lvbmFsIFBURS1tYXBwZWQKPiBUSFAs IGJ1dCBJIGFzc3VtZSBpdCBiZWNvbWVzIHVudGVuYWJsZSBpZiBsYXJnZSBmb2xpb3MgYXJlIHRo ZSBub3JtLiBQZXJoYXBzIHdlCj4gY2FuIG1vZGlmeSB0aG9zZSBwYXRocyB0byB3b3JrIHdpdGgg dGhlIGN1cnJlbnQgZXN0aW1hdG9ycyBpbiBvcmRlciB0byByZW1vdmUKPiB5b3VyIHdvcmsgZnJv bSB0aGUgY3JpdGljYWwgcGF0aCAtIGlzIHRoYXQgd2hhdCB5b3UgYXJlIGdldHRpbmcgYXQ/CgpJ TUhPIG1vc3Qgb2YgdGhlIGNvZGUgdGhhdCBub3cgdXNlcyB0aGUgZXN0aW1hdGUtbG9naWMgaXMg cmVhbGx5IApzdWJvcHRpbWFsLCBidXQgaXQncyBhbGwgd2UgaGF2ZS4gSXQncyBwcm9iYWJseSBp bnRlcmVzdGluZyB0byBzZWUgd2hlcmUgCnRoZSBmYWxzZSBuZWdhdGl2ZS9wb3NpdGl2ZXMgYXJl IHRvbGVyYWJsZSBmb3Igbm93IC4uLiBJIGhhdGUgdG8gYmUgYXQgCnRoZSBjcml0aWNhbCBwYXRo IDspIEJ1dCBJJ20gZ2V0dGluZyBzb21ld2hlcmUgc2xvd2x5IGJ1dCBzdGVhZGlseSAKKHNsb3ds eSwgYmVjYXVzZSBJJ20gY29uc3RhbnRseSBkaXN0cmFjdGVkIC0tIGFuZCBhcHBhcmVudGx5IHNp Y2spLgoKWy4uLl0KCj4+Cj4+Cj4+PiBBbHRob3VnaCwgc2luY2Ugc2VuZGluZyB0aGF0LCBJJ3Zl IGRldGVybWluZWQgdGhhdCB3aGVuIHJ1bm5pbmcga2VybmVsCj4+PiBjb21waWxhdGlvbiBhY3Jv c3MgaGlnaCBudW1iZXIgb2YgY29yZXMgb24gYXJtNjQsIHRoZSBjb3N0IG9mIHNwbGl0dGluZyB0 aGUKPj4+IGZvbGlvcyBnZXRzIGxhcmdlIGR1ZSB0byBuZWVkaW5nIHRvIGJyb2FkY2FzdCB0aGUg ZXh0cmEgVExCSXMuIFNvIEkgdGhpbmsgdGhlCj4+PiBsYXN0IHBvaW50IG9uIHRoYXQgbGlzdCBt YXkgYmUgYSBwcmVyZXF1aXNpdGUgYWZ0ZXIgYWxsLiAoSSd2ZSBiZWVuIGFibGUgdG8gZml4Cj4+ PiB0aGlzIGJ5IGFkZGluZyBzdXBwb3J0IGZvciBhbGxvY2F0aW5nIGxhcmdlIGZvbGlvcyBpbiB0 aGUgc3dhcCBmaWxlLCBhbmQKPj4+IGF2b2lkaW5nIHRoZSBzcGxpdCAtIHBsYW5uaW5nIHRvIHNl bmQgUkZDIHRoaXMgd2VlaykuCj4+Pgo+Pj4gVGhlcmUgaXMgYWxzbyB0aGlzIHNldCBvZiB0aGlu Z3MgdGhhdCB5b3UgbWVudGlvbmVkIGFnYWluc3QgInNoYXJlZCB2cyBleGNsdXNpdmUKPj4+IG1h cHBpbmdzIiwgd2hpY2ggSSdtIG5vdCBzdXJlIGlmIHlvdSBhcmUgcGxhbm5pbmcgdG8gY292ZXIg YXMgcGFydCBvZiB5b3VyIHdvcmsKPj4+IG9yIGlmIHRoZXkgYXJlIGZvbGxvdyBvbiB0aGluZ3Mg dGhhdCB3aWxsIG5lZWQgdG8gYmUgZG9uZToKPj4+Cj4+PiAoMSkgRGV0ZWN0aW5nIHNoYXJlZCBm b2xpb3MsIHRvIG5vdCBtZXNzIHdpdGggdGhlbSB3aGlsZSB0aGV5IGFyZSBzaGFyZWQuCj4+PiAg wqDCoMKgwqAgTUFEVl9QQUdFT1VULCB1c2VyLXRyaWdnZXJlZCBwYWdlIG1pZ3JhdGlvbiwgTlVN QSBoaW50aW5nLCBraHVnZXBhZ2VkIC4uLgo+Pj4gIMKgwqDCoMKgIHJlcGxhY2UgY2FzZXMgd2hl cmUgZm9saW9fZXN0aW1hdGVkX3NoYXJlcnMoKSA9PSAxIHdvdWxkIGN1cnJlbnRseSBiZSB0aGUK Pj4+ICDCoMKgwqDCoCBiZXN0IHdlIGNhbiBkbyAoYW5kIGluIHNvbWUgY2FzZXMsIHBhZ2VfbWFw Y291bnQoKSA9PSAxKS4KPj4+Cj4+PiBBbmQgSSByZWNlbnRseSBkaXNjb3ZlcmVkIHRoYXQga2h1 Z2VwYWdlZCBkb2Vzbid0IGNvbGxhcHNlIGZpbGUtYmFja2VkIHBhZ2VzIHRvCj4+PiBhIFBNRC1z aXplIFRIUCBpZiB0aGV5IGJlbG9uZyB0byBhIGxhcmdlIGZvbGlvLCBzbyBJJ20gZ3Vlc3Npbmcg aXQgbWF5IGFsc28KPj4+IHN1ZmZlciB0aGUgc2FtZSBiZWhhdmlvdXIgZm9yIGFub24gbWVtb3J5 LiBJJ20gbm90IHN1cmUgaWYgdGhhdCdzIHdoYXQgeW91cgo+Pj4gImtodWdlcGFnZWQgLi4uIiBj b21tZW50IHJlZmVycyB0bz8KPj4KPj4gWWVzLiBCdXQgSSBkaWQgbm90IGxvb2sgaW50byBhbGwg dGhlIGRldGFpbHMgeWV0Lgo+Pgo+PiAia3VoZXBhZ2VkIiBjb2xsYXBzZSBzdXBwb3J0IHRvIHNt YWxsLXNpemVkIFRIUCBpcyBwcm9iYWJseSBhbHNvIGEgdmVyeSBpbXBvcmFudAo+PiBpdGVtLCBh bHRob3VnaCBpdCBtaWdodCBiZSBsZXNzIHJlbGV2YW50IHRoYW4gZm9yIFBNRCAtLSBhbmQgSSBj b25zaWRlciBpdAo+PiBmdXR1cmUgd29yay4gU2VlIGJlbG93Lgo+IAo+IFllcyBJIGFncmVlIHRo YXQgaXQncyBkZWZpbml0ZWx5IGZ1dHVyZSB3b3JrLiBOb3RoaW5nIHJlZ3Jlc3NlcyBmcm9tIHRv ZGF5J3MKPiBwZXJmb3JtYW5jZSBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGF0Lgo+IAo+Pgo+Pj4KPj4+ IFNvIHRha2luZyBhbGwgdGhhdCBhbmQgdHJ5aW5nIHRvIHB1dCB0b2dldGhlciBhIGNvbXBsZXRl IG91dHN0YW5kaW5nIGxpc3QgZm9yCj4+PiBzdHJpY3QgcmVxdWlyZW1lbnRzOgo+Pj4KPj4+ICDC oMKgIC0gU2hhcmVkIHZzIEV4Y2x1c2l2ZSBNYXBwaW5ncyAoRGF2aWRIKQo+Pj4gIMKgwqDCoMKg wqDCoCAtIHVzZXItdHJpZ2dlcmVkIHBhZ2UgbWlncmF0aW9uCj4+PiAgwqDCoMKgwqDCoMKgIC0g TlVNQSBoaW50aW5nL2JhbGFuY2luZwo+Pj4gIMKgwqDCoMKgwqDCoCAtIEVuaGFuY2Uga2h1Z2Vw YWdlZCB0byBjb2xsYXBzZSB0byBQTUQtc2l6ZSBmcm9tIFBURS1tYXBwZWQgbGFyZ2UgZm9saW9z Cj4+PiAgwqDCoCAtIENvbXBhY3Rpb24gb2YgTGFyZ2UgRm9saW9zIChaaSBZYW4pCj4+PiAgwqDC oCAtIFN3YXAgb3V0IHNtYWxsLXNpemUgVEhQIHdpdGhvdXQgU3BsaXQgKFJ5YW4gUm9iZXJ0cykK Pj4KPj4gXiB0aGF0J3MgZ29pbmcgdG8gYmUgdG91Z2gsIEkgY2FuIHByb21pc2UuIEFuZCB0aGUg b25seSB3YXkgdG8gbGl2ZSB3aXRob3V0IHRoYXQKPj4gd291bGQgYmUga2h1Z2VwYWdlZCBzdXBw b3J0LiAoYmVjYXVzZSB0aGF0J3MgaG93IGl0J3MgYWxsIHdvcmtpbmcgZm9yIFBNRC1zaXplZAo+ PiBUSFAgYWZ0ZXIgYWxsISkKPiAKPiBBcmUgeW91IHJlZmVycmluZyBzcGVjaWZpY2FsbHkgdG8g dGhlICJzd2FwIG91dCIgbGluZSB0aGVyZT8gSWYgc28sIGl0IHdhc24ndCBteQo+IHBsYW4gdGhh dCB3ZSB3b3VsZCAqc3dhcCBpbiogbGFyZ2UgZm9saW9zIC0gb25seSBzd2FwIHRoZW0gKm91dCog YXMgbGFyZ2UgZm9saW9zCgpBaCEKCj4gdG8gYXZvaWQgdGhlIGNvc3Qgb2Ygc3BsaXR0aW5nLiBU aGVuIHdoZW4gdGhleSBjb21lIGJhY2sgaW4sIHRoZSBjb21lIGluIGFzCj4gc2luZ2xlIHBhZ2Vz LCBqdXN0IGxpa2UgUE1ELXNpemVkIFRIUCwgaWYgSSd2ZSB1bmRlcnN0b29kIHRoaW5ncyBjb3Jy ZWN0bHkuIEkKPiBoYXZlIGEgcGF0Y2ggd29ya2luZyBhbmQgc2hvd2luZyB0aGUgcGVyZiBpbXBy b3ZlbWVudCBhcyBhIHJlc3VsdC4gSSdtIHBsYW5uaW5nCj4gdG8gcG9zdCBhbiBSRkMgdG9kYXks IGhvcGVmdWxseS4KPiAKPiBJIGRvbid0IHNlZSB0aGUgc3dhcC1pbiBzaWRlIGFzIGEgcHJvYmxl bSBmb3IgdGhlIGluaXRpYWwgcGF0Y2ggc2V0LiBPSywgdGhleQo+IGNvbWUgaW4gYXMgc2luZ2xl IHBhZ2VzLCBzbyB5b3UgbG9zdCB0aGUgcG90ZW50aWFsIFRMQiBiZW5lZml0cy4gQnV0IHRoYXQn cyBubwo+IHdvcnNlIHRoYW4gdG9kYXkncyBwZXJmb3JtYW5jZSBzbyBub3QgYSByZWdyZXNzaW9u LiBBbmQgdGhlIHJhdGlvIG9mIFNXIHNhdmluZ3MKPiBvbiBUSFAgYWxsb2NhdGlvbiB0byBIVyBz YXZpbmdzIGZyb20gdGhlIFRMQiBpcyB2ZXJ5IGRpZmZlcmVudCBmb3Igc21hbGwtc2l6ZWQKPiBU SFA7IG11Y2ggbW9yZSBvZiB0aGUgYmVuZWZpdCBjb21lcyBmcm9tIHRoZSBTVyBhbmQgdGhhdCdz IHN0aWxsIHRoZXJlLgo+IAo+Pgo+PiBPbmNlIGEgUE1ELXNpemVkIFRIUCB3YXMgc3dhcHBlZCBv dXQgYW5kIGV2aWN0ZWQsIGl0IHdpbGwgYWx3YXlzIGNvbWUgYmFjayBpbgo+PiBvcmRlci0wIGZv bGlvcy4ga2h1Z2VnZWQgd2lsbCByZS1jb2xsYXBzZSBpbnRvIFBNRC1zaXplZCBjaHVua3MuIElm IHdlIGNvdWxkIGRvCj4+IHRoYXQgZm9yIFBURS1zaXplZCBUSFAgYXMgd2VsbCAuLi4KPiAKPiBZ ZXMsIHN1cmUsIGJ1dCB0aGF0J3MgYSBmdXR1cmUgaW1wcm92ZW1lbnQsIG5vdCBhIHJlcXVpcmVt ZW50IHRvIHByZXZlbnQKPiByZWdyZXNzaW9uIHZzIHRvZGF5LCByaWdodD8KClllcy4gWW91IGNh bid0IGp1c3QgY3VycmVudGx5IGFzc3VtZTogYXMgc29vbiBhcyB5b3Ugc3dhcCwgdGhlIHdob2xl IApiZW5lZml0IGlzIGdvbmUgYmVjYXVzZSB5b3UgZW5kIHVwIHdpbGwgYWxsIG9yZGVyLTAgcGFn ZXMuCgpUaGVzZSBhcmUgY2VydGFpbmx5IG5vdCBsaW1pdGluZyAibWVyZ2UiIGZhY3RvcnMgSU1I TywgYnV0IGl0J3MgCmNlcnRhaW5seSBvbmUgb2YgdGhlIHRoaW5ncyB1c2VycyBvZiBkaXN0cmli dXRpb25zIHdpbGwgaGVhdmlseSBjb21wbGFpbiAKYWJvdXQgOykKClBNRC1zaXplZCBUSFAgYXJl IG1vc3RseSBzZWxmLWhlYWxpbmcgaW4gdGhhdCBzZW5zZS4KCj4gCj4+Cj4+Pgo+Pj4KPj4+Pgo+ Pj4+Cj4+Pj4gTm93LCB0aGVzZSBhcmUganVzdCBteSB0aG91Z2h0cywgYW5kIEknbSBoYXBweSBh Ym91dCBvdGhlciB0aG91Z2h0cy4KPj4+Cj4+PiBBcyBhbHdheXMsIHRoYW5rcyBmb3IgdGFraW5n IHRoZSB0aW1lIC0gSSByZWFsbHkgYXBwcmVjaWF0ZSBpdC4KPj4KPj4gU3VyZS4gSG9waW5nIG90 aGVycyBjYW4gY29tbWVudC4KPj4KPj4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGJlc3Qg dG8gZm9jdXMgb24gZ2V0dGluZyB0aGUgc3lzZnMgaW50ZXJmYWNlCj4+IHJpZ2h0K2Z1dHVyZSBw cm9vZiBhbmQgaGFuZGxpbmcgdGhlIHN0YXRzIGluZGVwZW5kZW50bHkuIFdoaWxlIGJlaW5nIGEg Z29vZAo+PiBkZWJ1ZyBtZWNoYW5pc20sIEkgd291bGRuJ3QgY29uc2lkZXIgdGhlc2Ugc3RhdHMg YSByZXF1aXJlbWVudDogd2UgZG9uJ3QgaGF2ZQo+PiB0aGVtIGZvciBmaWxlL3NobWVtIHNtYWxs LXNpemVkIHRocCBzbyBmYXIgYXMgd2VsbC4KPj4KPj4gU28gbWF5YmUgcmVhbGx5IGJldHRlciB0 byBoYW5kbGUgdGhlIHN0YXRzIGluIG1lbWluZm8gYW5kIGZyaWVuZHMgc2VwYXJhdGVseS4KPj4K PiAKPiBJJ2QgYmUgdmVyeSBoYXBweSB3aXRoIHRoYXQgYXBwcm9hY2ggaWYgb3RoZXJzIGFyZSBi b3VnaHQgaW4uCgpZZWFoLiBJJ20gZXhwZWN0aW5nIHRoZXJlIHN0aWxsIHRvIGJlIGRpc2N1c3Np b25zLCBidXQgdGhlbiB3ZSBzaGFsbCAKYWxzbyBoZXJlIG90aGVyIHByb3Bvc2Fscy4gbWVtY2cg Y29udHJvbHMgYXJlIElNSE8gY2VydGFpbmx5IGZ1dHVyZSB3b3JrLgoKLS0gCkNoZWVycywKCkRh dmlkIC8gZGhpbGRlbmIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==