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 14F57CCA473 for ; Tue, 21 Jun 2022 16:01:05 +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=hMKmQNjllJGlC00UbrtqgSCXYXMDI1ETYYz7Q0ojOVY=; b=O/8JCPlYZOheiC Yra/fuJxhHfkpB1FOuBcUQLobpFQtrJCVGseUtW7eBFc6up8NZxVKQoFjTofM55MXWjiwLDLPqVCA lAUMnHyO7VZ8D+ZVHzzTM+MIZxhBa53oemW2l3YIFde5sfGEuNrr0rkPH2RadHUF5I4Tc3p78GtLO q9YZle6rFAwHyK4alyKOleTx6E9Mx9RLKsfzqraa1yJY/guby+1y68/TBP5NG413fY+Hh/HD9eOt2 caOzY31nhhNRWt1RIvpsC4i2cd1ZQyodVDsJSio53xn1KQg3iWnZoNXlwuKHacUM9x1p7jE9ZalzI T56l6u54r9xVRKDgXQ8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o3gJB-006HaH-3K; Tue, 21 Jun 2022 16:00:53 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o3gIy-006HVP-IC; Tue, 21 Jun 2022 16:00:42 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4ED50165C; Tue, 21 Jun 2022 09:00:36 -0700 (PDT) Received: from bogus (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AD1E53F66F; Tue, 21 Jun 2022 09:00:34 -0700 (PDT) Date: Tue, 21 Jun 2022 17:00:32 +0100 From: Sudeep Holla To: Dietmar Eggemann Cc: Vincent Guittot , linux-kernel@vger.kernel.org, Atish Patra , Atish Patra , Morten Rasmussen , Sudeep Holla , Qing Wang , linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, Rob Herring Subject: Re: [PATCH v3 15/16] arch_topology: Set cluster identifier in each core/thread from /cpu-map Message-ID: <20220621160032.rtvrtfss55xdirem@bogus> References: <20220525081416.3306043-16-sudeep.holla@arm.com> <947470ba-35fc-3c72-d01b-c0a7337216a2@arm.com> <20220606102159.dduxmvq4m2fm6gks@bogus> <20220610102753.virkx47uyfsojol6@bogus> <20220613111743.3od6a5dyyogad4ay@bogus> <73574a8f-5c72-8f7e-3dc4-42493131681e@arm.com> <20220617111647.62hsqbpl3bk7xb2y@bogus> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220621_090040_736958_60B1BF4A X-CRM114-Status: GOOD ( 62.07 ) 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 T24gTW9uLCBKdW4gMjAsIDIwMjIgYXQgMDM6Mjc6MzNQTSArMDIwMCwgRGlldG1hciBFZ2dlbWFu biB3cm90ZToKPiBPbiAxNy8wNi8yMDIyIDEzOjE2LCBTdWRlZXAgSG9sbGEgd3JvdGU6Cj4gPiBP biBUaHUsIEp1biAxNiwgMjAyMiBhdCAwNTowMjoyOFBNICswMTAwLCBEaWV0bWFyIEVnZ2VtYW5u IHdyb3RlOgo+ID4+IE9uIDEzLzA2LzIwMjIgMTI6MTcsIFN1ZGVlcCBIb2xsYSB3cm90ZToKPiA+ Pj4gT24gTW9uLCBKdW4gMTMsIDIwMjIgYXQgMTE6MTk6MzZBTSArMDIwMCwgRGlldG1hciBFZ2dl bWFubiB3cm90ZToKPiA+Pj4+IE9uIDEwLzA2LzIwMjIgMTI6MjcsIFN1ZGVlcCBIb2xsYSB3cm90 ZToKPiA+Pj4+PiBPbiBGcmksIEp1biAxMCwgMjAyMiBhdCAxMjowODo0NFBNICswMjAwLCBWaW5j ZW50IEd1aXR0b3Qgd3JvdGU6Cj4gPj4+Pj4+IE9uIE1vbiwgNiBKdW4gMjAyMiBhdCAxMjoyMiwg U3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4gd3JvdGU6Cj4gCj4gWy4uLl0KPiAK PiA+Pj4gV2hhdCBhcmUgeW91IHJlZmVycmluZyBhcyAnZ2x1ZSB0aGVtIHRvZ2V0aGVyJy4gQXMg SSBzYWlkIHRoaXMgc2VyaWVzIGp1c3QKPiA+Pj4gYWRkcmVzcyB0aGUgaGFyZHdhcmUgdG9wb2xv Z3kgYW5kIGlmIHRoZXJlIGlzIGFueSBpbXBhY3Qgb24gc2NoZWQgZG9tYWlucwo+ID4+PiB0aGVu IGl0IGlzIGRvIHdpdGggYWxpZ25tZW50IHdpdGggQUNQSSBhbmQgRFQgcGxhdGZvcm0gYmVoYXZp b3VyLiBJIGFtIG5vdAo+ID4+PiBhZGRpbmcgYW55dGhpbmcgbW9yZSB0byBnbHVlIHRvcG9sb2d5 IGFuZCBpbmZvIG5lZWRlZCBmb3Igc2NoZWQgZG9tYWlucy4KPiA+Pgo+ID4+IFlvdSBjYW4gZml4 ICgxKSB3aXRob3V0ICgyKSBwYXJzaW5nIDEuIGxldmVsIGNsdXN0ZXIgbm9kZXMgYXMKPiA+PiBj bHVzdGVyX3NpYmxpbmdzLgo+ID4+Cj4gPiAKPiA+IFRlY2huaWNhbGx5IHllcywgYnV0IEkgc2Vl IG5vIHBvaW50IGluIGRlbGF5aW5nIGl0IGFzIGl0IGlzIGNvbnNpZGVyZWQgYXMKPiA+IGJyb2tl biB3aXRoIHJlc3BlY3QgdG8gdGhlIG1vbWVudCBBQ1BJIGV4cG9zZWQgdGhlIGNvcnJlY3QgdmFs dWUgYW5kIGF0IHRoZQo+ID4gc2FtZSB0aW1lIHJlc3VsdGVkIGluIGV4cG9zaW5nIGluY29ycmVj dCB2YWx1ZSBpbiBjYXNlIG9mIERULiBJIGFtIHJlZmVycmluZwo+ID4gdG8gdGhlIHNhbWUgY2hh bmdlIHRoYXQgaW50cm9kdWNlZCBTQ0hFRF9DTFVTVEVSLiBUaGUgZGFtYWdlIGlzIGRvbmUgYW5k IGl0Cj4gPiBuZWVkcyByZXBhaXJpbmcgQVNBUC4KPiAKPiBPSywgdGhlbiBsZXRzIGAvc3lzLy4u Li90b3BvbG9neS9jbHVzdGVyX2NwdXNgIHJlZmVyIHRvIHB1cmUKPiB0b3BvbG9neS1iYXNlZCBj bHVzdGVyIGluZm9ybWF0aW9uLiBUaGlzIGNhbiBiZSBEVCBjbHVzdGVyLW5vZGUKPiBpbmZvcm1h dGlvbiBvciBBQ1BJIEwzLXRhZyBpbmZvcm1hdGlvbiBlLmcuIGZvciBLUDkyMC4KPgoKQWdyZWVk LiBBbGwgdGhlIGluZm9ybWF0aW9uIHVuZGVyIC9zeXMvLi4uL3RvcG9sb2d5LyBhcmUgdGhlIGhh cmR3YXJlIHZpZXcKYW5kIG5vdCB0aGUgc2NoZWR1bGVyJ3MgdmlldyBvZiB0aGUgaGFyZHdhcmUg Zm9yIHRoZSBwdXJwb3NlIG9mIGJ1aWxkaW5nCnNjaGVkIGRvbWFpbnMuCgo+ID4+PiBJbmRlZWQu IEJ1dCBJIGRvbid0IGdldCB3aGF0IHlvdSBtZWFuIGJ5IDIgbGV2ZWwgaGVyZS4gQUNQSSBwdXRz IDFzdCBsZXZlbAo+ID4+Cj4gPj4gY3B1X21hcCB7Cj4gPj4gICBzb2NrZXQwIHsKPiA+PiAgICAg Y2x1c3RlcjAgeyAgICA8LS0gMS4gbGV2ZWwgY2x1c3Rlcgo+ID4+ICAgICAgIGNsdXN0ZXIwIHsg IDwtLSAyLiBsZXZlbCBjbHVzdGVyICgzIC0tPikKPiA+IAo+ID4gT2ggSSBoYWQgbWlzdW5kZXJz dG9vZCB0aGlzIGxldmVsIG5vbWVuY2xhdHVyZSwgSSByZWZlciBpdCBhcyBsZWFmIGNsdXN0ZXIK PiA+IG5vZGUgd2hpY2ggaXMgMi4gbGV2ZWwgY2x1c3RlciBpbiB0aGlzIERUIHNuaXBwZXQuCj4g PiAKPiA+PiAgICAgICAgIGNvcmUwIHsKPiA+Pgo+ID4+ICAgICAgICAgfTsKPiA+PiAgICAgICAg IGNvcmUxIHsKPiA+Pgo+ID4+ICAgICAgICAgfTsKPiA+PiAgICAgICBjbHVzdGVyMSB7Cj4gPj4g ICAuLi4KPiA+Pgo+ID4+IEFybXY5IEwyIGNvbXBsZXhlczogZS5nLiBRQyBTTTg0NTA6Cj4gPj4K PiA+PiAgICAgICAuLS0tLS0tLS0tLS0tLS0tLgo+ID4+IENQVSAgIHwwIDEgMiAzIDQgNSA2IDd8 Cj4gPj4gICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKPiA+PiB1YXJjaCB8bCBsIGwgbCBtIG0gbSBi fCAoc28gY2FsbGVkIHRyaS1nZWFyOiBsaXR0bGUsIG1lZGl1bSwgYmlnKQo+ID4+ICAgICAgICst LS0tLS0tLS0tLS0tLS0rCj4gPj4gICBMMiAgfCAgIHwgICB8IHwgfCB8IHwgPC0tIDIuIGxldmVs IGNsdXN0ZXIsIEFybXY5IEwyIGNvbXBsZXhlcyAoPC0tIDMpCj4gPiAKPiA+IEFnYWluIGJlZm9y ZSBJIGFzc3VtZSwgd2hhdCBleGFjdGx5IDwtLTMgaGVyZSBhbmQgaW4gYWJvdmUgc25pcHBldCBt ZWFuID8KPiAKPiBJIHdhbnRlZCB0byBzaG93IHRoYXQgd2UgY291bGQgZW5jb2RlIGAyLiBsZXZl bCBjbHVzdGVyYCBhcyBgQXJtdjkgTDIKPiBjb21wbGV4ZXNgLiBCdXQgc2luY2Ugd2UgYWdyZWVk IChhZnRlciB0aGUgZW1haWwgd2FzIHNlbnQpIG5vdCB0bwo+IHN1cHBvcnQgYG5lc3RlZCBjbHVz dGVyLW5vZGVzYCwgdGhpcyBpZGVhIGRvZXMgbm90IGhvbGQgYW55bW9yZS4KPgoKWWVzIEkgcGxh biB0byB0aHJvdyB3YXJuaW5nIGlmIHdlIGVuY291bnRlciBuZXN0ZWQgY2x1c3RlcnMsIHdpbGwg YmUgcGFydCBvZgpuZXh0IHZlcnNpb24oaHR0cHM6Ly9naXQua2VybmVsLm9yZy9zdWRlZXAuaG9s bGEvYy85NGZhZTEyZDY0YmIpLgoKPiA+PiAgICAgICArLS0tLS0tLS0tLS0tLS0tKwo+ID4+ICAg TDMgIHw8LS0gICAgICAgICAtLT58Cj4gPj4gICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKPiA+PiAg ICAgICB8PC0tIGNsdXN0ZXIgLS0+fAo+ID4gCj4gPiBJIHRoaW5rIHRoaXMgaXMgMiBsZXZlbCBj bHVzdGVyIG9yIG9ubHkgY2x1c3RlciBpbiB0aGlzIHN5c3RlbSB3LnIudCBoYXJkd2FyZS4KPiA+ IFNvIGxldHMgbm90IGNvbmZ1c2Ugd2l0aCBtdWx0aS1sZXZlbCBpZiBub3QgbmVjZXNzYXJ5Lgo+ Cj4gTm8gbmVlZCwgd2Ugc2FpZCBubyBgbmVzdGVkIGNsdXN0ZXItbm9kZWAgc3VwcG9ydCBpbiBE VC4KPgoK8J+RjQoKPiA+PiAgICAgICArLS0tLS0tLS0tLS0tLS0tKwo+ID4+ICAgICAgIHw8LS0g ICBEU1UgICAtLT58Cj4gPj4gICAgICAgJy0tLS0tLS0tLS0tLS0tLScKPiA+Pgo+ID4+IE9ubHkg aWYgd2UgbWFwIChpKSBpbnRvIGNsdXN0ZXJfc2libGluZywgd2UgZ2V0IHRoZSBzYW1lIGhhcmR3 YXJlCj4gPj4gcmVwcmVzZW50YXRpb24gKGZvciB0aGUgdGFzayBzY2hlZHVsZXIpIGZvciBBQ1BJ ICg0KSBhbmQgRFQgKDUpIHN5c3RlbXMuCj4gPj4KPiA+IAo+ID4gV2hhdCBpcyAoaSkgYWJvdmUg Pwo+IAo+IFNvcnJ5LCAoaSkgd2FzIG1lYW50IHRvIGJlIGAzIC0tPmAuCj4KCkFoIG9rCgo+ID4+ ICg0KSBleGFtcGxlczoKPiA+Pgo+ID4+IEt1bnBlbmc5MjAgLSAyNCBDUFVzIHNoYXJpbmcgTExD IChjcHVfY29yZWdyb3VwX21hc2soKSksIDQgQ1BVcyBzaGFyaW5nCj4gPj4gTDMtdGFnIChjcHVf Y2x1c3Rlcmdyb3VwX21hc2soKSkuCj4gPj4KPiA+IAo+ID4gQWdhaW4gZGVjb3VwbGUgY2FjaGUg aW5mbyBhbmQgY2x1c3RlciBpbmZvIGZyb20gaC93LCB5b3UgaGF2ZSBhbGwgdGhlIGluZm8uCj4g PiBZb3UgY2FuIGNvdXBsZSB0aGVtIHRvZ2V0aGVyIGlmIHRoYXQgaGVscHMgd2hlbiB5b3UgZmVl ZCBzY2hlZF9kb21haW5zLgo+Cj4gT0ssIHRoaXMgaXMgd2hhdCB3ZSBmaW5hbGx5IGFncmVlZC4K PgoK8J+RjQoKPiA+PiBYODYgSmFjb2JzdmlsbGUgLSAyNCBDUFVzIHNoYXJpbmcgTExDIChMMyks IDQgQ1BVcyBzaGFyaW5nIEwyCj4gPj4KPiA+PiBBcm12OSBMMiBjb21wbGV4ZXM6IGUuZy4gUUMg U004NDUwIC0gOCBDUFVzIHNoYXJpbmcgTExDIChMMyksIChmb3IgQTUxMAo+ID4+IChsaXR0bGUg Q1BVcykpIDIgQ1BVcyBzaGFyaW5nIEwyCj4gPgo+ID4gWy4uLl0KPiA+IAo+ID4+PiBBbmQgeWVz IGxzdG9wbyBkb2Vzbid0IHJlYWQgY2x1c3RlciBJRHMuIEJ1dCB3ZSBleHBvc2UgdGhlbSBpbiBB Q1BJIHN5c3RlbQo+ID4+PiBhbmQgbm90IG9uIERUIHdoaWNoIHdhcyBteSBtYWluIHBvaW50Lgo+ IAo+IE9LLCBubyBmdXJ0aGVyIGRpc2N1c3Npb24gbmVlZGVkIGhlcmUuIGAvc3lzLy4uLi90b3Bv bG9neS9jbHVzdGVyX2NwdXNgCj4gc2hvd3MgTDIgKExMQykgb24gSnVubywgTDMtdGFnIGFuIEtQ OTIwIG9yIEwyIG9uIFg4NiBKYWNvYnN2aWxsZS4gVGhlCj4gY3B1X3h4eF9tYXNrKClzIG9mIChl LmcuKSBkZWZhdWx0X3RvcG9sb2d5W10gaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKPiBzY2hl ZHVsZXIgc2VlcyB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbiAodGhlIGhpZXJhcmNoeSBvZiBjcHVt YXNrcykuCj4KCkNvcnJlY3QKCj4gPj4gVW5kZXJzdG9vZC4gQnV0IGEgS3VucGVuZzkyMCBgY2x1 c3Rlcl9jcHVzX2xpc3RgIGZpbGUgd291bGQgY29udGFpbgo+ID4+IGxvZ2ljYWxseSBkaWZmZXJl bnQgaW5mb3JtYXRpb24gdGhhbiBhIEp1bm8gYGNsdXN0ZXJfY3B1c19saXN0YCBmaWxlLgo+ID4+ Cj4gPiBBbmQgd2h5IGlzIHRoYXQgPwo+IAo+IElmIHdlIHNlZSBpdCBmcm9tIHRoZSBhbmdsZSBv ZiB0aGUgZGVmaW5pdGlvbiBvZiBTQ0hFRF9DT05GSUdfQ0xVU1RFUgo+IChgLi4uIHRoZSBsZXZl bCBvZiB0b3BvbG9neSBhYm92ZSBDUFVzIC4uLmAgdGhlbiBJIGNhbiBzZWUgdGhhdCBib3RoCj4g ZGVmaW5pdGlvbnMgYXJlIHRoZSBzYW1lLiAoQ1BVUyBzaG91bGQgYmUgcmF0aGVyIGBjb3Jlc2Ag aGVyZSwgSSBndWVzcz8pLgo+IAo+IFsuLi5dCj4KClllcywgSSBoYXZlIHVzZSBjb3JlcyBhbmQg Q1BVcyBpbnRlcmNoYW5nZXMgYXQgc2V2ZXJhbCBwbGFjZXMgc28gZmFyLCB3aWxsCnRyeSB0byBi ZSBtb3JlIHNwZWNpZmljIGluIHRoZSBmdXR1cmUuCgo+ID4+PiBBcyBwb2ludGVkIG91dCBlYXJs aWVyLCBoYXZlIHlvdSBjaGVja2VkIEFDUEkgb24gSnVubyBhbmQgd2l0aCAKPiA+Pj4gQ09ORklH X1NDSEVEX0NMVVNURVIgPyBJZiB0aGUgYmVoYXZpb3VyIHdpdGggbXkgc2VyaWVzIG9uIERUIGFu ZCBBQ1BJCj4gPj4+IGRpZmZlcnMsIHRoZW4gaXQgaXMgYW4gaXNzdWUuIEJ1dCBBRkFJVSwgaXQg ZG9lc24ndCBhbmQgdGhhdCBpcyBteSBtYWluCj4gPj4+IGFyZ3VtZW50LiBZb3UgYXJlIGp1c3Qg YXNzdW1pbmcgd2hhdCB3ZSBoYXZlIG9uIEp1bm8gd2l0aCBEVCBpcyBjb3JyZWN0Cj4gPj4+IHdo aWNoIG1heSBiZSB3LnIudCB0byBzY2hlZHVsZXIgYnV0IGRlZmluaXRlbHkgbm90IHdpdGggcmVz cGVjdCB0byB0aGUKPiA+Pj4gaGFyZHdhcmUgdG9wb2xvZ3kgZXhwb3NlZCB0byB0aGUgdXNlcnMu IFNvIG15IGFpbSBpcyB0byBnZXQgdGhhdCBmaXhlZC4KPiA+Pgo+ID4+IEkgbmV2ZXIgcnVuIEp1 bm8gdy8gQUNQSS4gQXJlIHlvdSBzYXlpbmcgdGhhdAo+ID4+IGZpbmRfYWNwaV9jcHVfdG9wb2xv Z3lfY2x1c3RlcigpIHJldHVybnMgY3B1X3RvcG9sb2d5W2NwdV0uY2x1c3Rlcl9pZCdzCj4gPj4g d2hpY2ggbWF0Y2ggdGhlIGAxLiBsZXZlbCBjbHVzdGVyIG5vZGVzYD8KPiA+Pgo+ID4KPiA+IEFn YWluIEkgYW0gdG90YWxseSBjb25mdXNlZCBhcyB3aHkgdGhpcyBpcyBub3cgMS5sZXZlbCBjbHVz dGVyIHdoZXJlIGFzIGFib3ZlCj4gPiBTRE0gd2FzIDIubGV2ZWwgY2x1c3Rlci4gQm90aCBTb0Nz IGhhdmUgb25seSAxIGxldmVsIG9mIGNsdXN0ZXIuIFdoaWxlIFNETQo+ID4gaGFzIDEgRFNVIGNs dXN0ZXIsIEp1bm8gaGFzIDIgY2x1c3RlcnMuCj4gCj4gTm8gbmVlZCBpbiBhZ3JlZWluZyB3aGF0 IGxldmVsIChjb3VsZCkgc3RhbmQocykgaGVyZSBmb3IuIFdlIHNhaWQgYG5vCj4gbmVzdGVkIGNs dXN0ZXItbm9kZWAuCj4KCvCfkY0KCj4gPj4gVGhlIGZ1bmN0aW9uIGhlYWRlciBvZiBmaW5kX2Fj cGlfY3B1X3RvcG9sb2d5X2NsdXN0ZXIoKSBzYXlzIHRoYXQgYC4uLgo+ID4+IHRoZSBjbHVzdGVy LCBpZiBwcmVzZW50IGlzIHRoZSBsZXZlbCBvZiB0b3BvbG9neSBhYm92ZSBDUFVzLiAuLi5gLgo+ ID4+Cj4gPiAKPiA+IEV4YWN0bHkgYW5kIHRoYXQncyBob3cgc3lzZnMgaXMgYWxzbyBkZWZpbmVk IGFuZCB3ZSBjYW4ndCBnbyBiYWNrIGFuZCBjaGFuZ2UKPiA+IHRoYXQgbm93LiBJIGRvbid0IHNl ZSBhbnkgaXNzdWUgVEJILgo+IAo+IE9LLgo+IAo+ID4+IEZyb20gdGhpcyBwZXJzcGVjdGl2ZSBJ IGNhbiBzZWUgeW91ciBwb2ludC4gQnV0IHRoaXMgaXMgdGhlbiBzdGlsbAo+ID4+IGNsZWFybHkg cG9vcmx5IGRlc2lnbmVkLgo+ID4gCj4gPiBOb3QgcmVhbGx5IGFzIHBlciB0aGUgZGVmaW5pdGlv bi4KPiAKPiBOb3QgZnJvbSB0aGUgdmlld3BvaW50IG9mIHRvcG9sb2d5IGFuZCBjYWNoZWluZm8u IEJ1dCBmcm9tIHRoZSBzY2hlZHVsZXIKPiBhbmQgdGhlIHdob2xlIHRoaW5nIGdldHMgYWN0aXZh dGVkIGJ5IGEgc2NoZWR1bGVyIENPTkZJRyBvcHRpb24uCj4KCkFncmVlZCBhbmQgSSB0b28gdGhp bmsgaXQgbXVzdCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuCgo+ID4+IEhvdyB3b3VsZCB3ZSBldmVy IHN1cHBvcnQgQ09ORklHX1NDSEVEX0NMVVNURVIKPiA+PiBpbiBEVCB3aGVuIGl0IHJlYWxseSAo cG90ZW50aWFsbHkpIHdvdWxkIGJyaW5nIGEgYmVuZWZpdCAoaS5lLiBpbiB0aGUKPiA+PiBBcm12 OSBMMi1jb21wbGV4IGNhc2UpIGFuZCBub3Qgb25seSBjcmVhdGUgdHJvdWJsZSBmb3IgdGhlIHRh c2sKPiA+PiBzY2hlZHVsZXIgdG8gc2V0dXAgaXRzIGRvbWFpbnMgY29ycmVjdGx5Pwo+ID4gCj4g PiBJbmRlZWQsIHRoYXQgaXMgdGhlIG5leHQgcHJvYmxlbSBvbmNlIHdlIGdldCBhbGwgdGhlc2Ug YWxpZ25lZCBhY3Jvc3MKPiA+IERUIGFuZCBBQ1BJLiBUaGV5IGhhdmUgZGl2ZXJnZWQgYW5kIEkg cHJlZmVyIG5vdCB0byBhbGxvdyB0aGF0IGFueW1vcmUKPiA+IGJ5IGFkZGluZyBtb3JlIGRpdmVy Z2VuY2UgZS5nLiB0byBzdXBwb3J0IEFybXY5IEwyLWNvbXBsZXggY2FzZS4gUGxlYXNlCj4gPiBj b25zaWRlciB0aGF0IG9uIHRvcCBvZiB0aGVzZSwgSSBhbSBub3QgYWRkcmVzc2luZyB0aGF0IGF0 IHRoZSBtb21lbnQuCj4gPiBJbiBmYWN0IEkgYW0gbm90IGFkZHJlc3NpbmcgYW55IHNjaGVkX2Rv bWFpbiB0b3BpY3Mgb3IgaXNzdWVzLiBJIGhhdmUgbWFkZQo+ID4gdGhhdCBjbGVhciDwn5iJLgo+ IAo+IElmIEkgcmVjYWxsIHRoZSBjb250ZW50IG9mIG91ciBkaXNjdXNzaW9uIGNvcnJlY3RseSwg YEFybXY5IEwyCj4gY29tcGxleGVzYCBzdXBwb3J0IGNvdWxkIGNvbWUgZnJvbSBMMiAocHJvYmFi bHkgYExMQyAtIDFgID8pIGRldGVjdGlvbgo+IGZyb20gY2FjaGVpbmZvLiBCdXQgdGhpcyBpcyBu b3QgcGFydCBvZiB0aGlzIHBhdGNoLXNldC4KPgoKQ29ycmVjdCBhbmQgdGhhbmtzIGZvciBtYWtp bmcgdGhhdCBjbGVhciBoZXJlLiBJIGhhdmUgaW50ZW50aW9uYWxseSBub3QKbWVudGlvbmVkIGl0 IHNvIGZhciBhcyBJIGFtIG5vdCBhZGRyZXNzaW5nIGFueXRoaW5nIHNwZWNpZmljIHRvIHN1Y2gg YQp0b3BvbG9neS4KCj4gPj4gQWxzbyBpbiBjYXNlIHdlIHN0aWNrIHRvCj4gPj4gc2V0dGluZyBD T05GSUdfU0NIRURfQ0xVU1RFUj0xIGJ5IGRlZmF1bHQsIENMUyBzaG91bGQgYmUgdGhlIGRlZmF1 bHQgTExDCj4gPj4gc2NoZWQgZG9tYWluIGFuZCBNQyB0aGUgZXhjZXB0aW9uYWwgb25lLiBKdXN0 IHRvIHJlc3BlY3QgdGhlIHdheSBob3cgdGhlCj4gPj4gdGFzayBzY2hlZHVsZXIgcmVtb3ZlcyBu b3QgdXNlZnVsIGRvbWFpbnMgdG9kYXkuCj4gPiAKPiA+IEZpeCB0aGUgY3B1X2NsdXN0ZXJncm91 cF9tYXNrIG9yIGFueSBvdGhlciBjcHVfKmdyb3VwX21hc2sgYXMgcGVyIHlvdXIKPiA+IHRhc3Rl LiBUaGUgdG9wb2xvZ3kgbWFza3MgYXJlIGp1c3QgaW5wdXRzIHRvIHRoZXNlIGFuZCB3aWxsIG5v dCBiZSBjaGFuZ2VkCj4gPiBvciBkaXZlcmdlZCBmb3IgdGhlc2UgcmVhc29ucy4gU29ycnkgaWYg dGhhdCBpcyBub3QgaGVscGZ1bCwgYnV0IHRoYXQgaXMgdGhlCj4gPiByZWFsaXR5IHdpdGggc3lz ZnMgZXhwb3NlZCB0byB0aGUgdXNlci1zcGFjZS4KPiAKPiBBZ3JlZWQuIFdlIGRvbid0IGhhdmUg dG8gcmVseSBvbiB0aGUgdGFzayBzY2hlZHVsZXIgdG8gYnVpbGQgdGhlIHJpZ2h0Cj4gc2NoZWQg ZG9tYWluIGhpZXJhcmNoeSBvdXQgb2YgZXZlcnkgY3B1X3h4eF9tYXNrKCkgZnVuY3Rpb25zLiBX ZSBjYW4KPiB0d2VhayBjcHVfeHh4X21hc2soKSB0byBnZXQgdGhpcyBkb25lLgo+CgpDb3JyZWN0 LCBJIGFtIG5vdCBzYXlpbmcgaXQgaXMgYXMgc2ltcGxlIGFzIHRoYXQsIGJ1dCB0byBrZWVwIGhh cmR3YXJlCnRvcG9sb2d5IGFuZCB0aGUgaW5mbyBmZWQgdG8gc2NoZWR1bGVyIG9yIHRoZSBpbmZv IGFzIHZpZXdlZCBmcm9tCnNjaGVkX2RvbWFpbnMgcGVyc3BlY3RpdmUgZGlmZmVyZW50LiBUaGUg Zm9ybWVyIGNoYW5nZXMgd2l0aCBoYXJkd2FyZSB3aGlsZQp0aGUgbGF0dGVyIGNoYW5nZXMgd2l0 aCB0aGUgdmlldyBvZiBzY2hlZHVsZXIuIEJhc2VkIG9uIHRoZSBsb2dpYyBpdAp1c2VkIHRvIG9w dGltaXNlLCBzY2hlZHVsZXIgY2FuIHRyeSBkaWZmZXJlbnQgdmlldyBvbiB0aGUgc2FtZSBoYXJk d2FyZSBidXQKdGhhdCdzIG5vdCB3aGVyZSB3ZSB3YW50IHRvIGJlLiBXZSB3YW50IHRvIHByb3Zp ZGUgYSBnZW5lcmljIHZpZXcgYmFzZWQgb24KYWxsIHRoZSBoL3cgY3B1IGFuZCBjYWNoZSB0b3Bv bG9neSBpbmZvcm1hdGlvbi4gSXQgbWF5IG5vdCBiZSBhbHdheXMgb3B0aW1hbCwKYnV0IHdlIGNh biB0cnkgdGhlIGJlc3QuCgo+ID4+PiBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoYXQsIHRo ZW4gaG93IGNhbiBiZSBiZSBoYXBweSB3aXRoIHdoYXQgaXMgdGhlCj4gPj4+IGN1cnJlbnQgYmVo YXZpb3VyIG9uIEFDUEkgKyBhbmQgLSBDT05GSUdfU0NIRURfQ0xVU1RFUi4gSSBoYXZlbid0IGdv dAo+ID4+PiB5b3VyIG9waW5pb24geWV0IG9uIHRoYXQgbWF0dGVyLgo+ID4+Cj4gPj4gSSBndWVz cyBpdCdzIGNsZWFyIG5vdyB0aGF0IEFDUEkgKyBDT05GSUdfU0NIRURfQ0xVU1RFUiB3aXRoIGBg dGhlIGxldmVsCj4gPj4gb2YgdG9wb2xvZ3kgYWJvdmUgQ1BVc2AgaXMgY29uZ3J1ZW50IHdpdGgg TExDYCBjcmVhdGVzIHRyb3VibGUgdG8gdGhlCj4gPj4gc2NoZWR1bGVyLiBTbyBJIGRvbid0IHNl ZSB3aHkgd2Ugc2hvdWxkIHJlcGxpY2F0ZSB0aGlzIGZvciBEVC4gTGV0J3MKPiA+PiBkaXNjdXNz IGZ1cnRoZXIgdG9tb3Jyb3cgaW4gcGVyc29uLgo+ID4gCj4gPiBJIHNlZSBpdCBkaWZmZXJlbnRs eS4gSWYgdGhhdCBjcmVhdGVzIGEgdHJvdWJsZSwgZml4IHRoYXQgYW5kIHlvdSB3aWxsIG5vdAo+ ID4gaGF2ZSBhbnkgaXNzdWVzIHdpdGggRFQgdG9vLgo+IAo+IE9LLCBJIHRoaW5rIHdlIChhcm02 NCkgZm91bmQgYSB3YXkgdG8gc3VwcG9ydCBhIGRlZmF1bHQKPiBDT05GSUdfU0NIRURfQ0xVU1RF UiBhbmQgZml4aW5nIHRoZSBgSnVubyBsc3RvcG9gIGlzc3VlIHdpdGggYSBwb3NzaWJsZQo+IHdh eSB0byBpbmNsdWRlIGBBcm12OSBMMiBjb21wbGV4ZXNgIHN1cHBvcnQgdmlhIGNhY2hlaW5mbyBs YXRlci4KClRoYW5rcyBmb3IgYWxsIHRoZSBkaXNjdXNzaW9uLiBIb3BlIHdlIG1heSBub3QgaGF2 ZSB0byByZXZpc2l0IHRoaXMgdG9waWMKaW4gc3VjaCBkZXB0aCB1bnRpbCBhbm90aGVyIHRvcG9s b2d5IHRoYXQgYnJlYWtzIGFsbCBvdXIgY3VycmVudCBhc3N1bXB0aW9uCmFycml2ZXMgaW4gdGhl IHdpbGQgd2hpY2ggbWF5IG5vdCBiZSB0b28gbG9uZy4KCkkgcmVtZW1iZXIgdGFsa2luZyB3aXRo IE1vcnRlbiBhbmQgY29uY2x1ZGluZyBMTEMgaXMgc3VmZmljaWVudCBmb3IgYXJtNjQKY291cGxl IG9mIHllYXJzIGJhY2ssIGJ1dCBub3cgdGhhdCBjYW4gYmUgcXVlc3Rpb25hYmxlIHdpdGggQXJt djkgTDIKY29tcGxleC4KCi0tIApSZWdhcmRzLApTdWRlZXAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51 eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK