From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE6EC16BE14; Fri, 23 Aug 2024 13:12:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.13 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724418755; cv=none; b=rICTEe1+vVhgRGXgwDFT2bFYKCOE+8K6FnConXSOz3jyZvtLvrNj2SC6QTUtql28f8PZhgIMhDvrFZ91IWSvEnr7GYdai7BFo/pMVN0tflu/dQCAtRBuuxgm+joFV6GAtEy4dh0quFWSwYkANk6+Et1H7Ldyd/q0lne5lapq/e4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724418755; c=relaxed/simple; bh=aVTST2pl/08bBIa3GVyrZCUMPOdhpKBeUaF1VGe3Dxw=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=F4qazEfCo+6GJP3foTkl5y1up2s8wYfS8Je9xYFM9FE/K+I1JdNiqENJWY8cxeLzMCdawbvLIBOF/UvnIlZNQDcqoovPdQiX0wWFP3BaF+7NbdM0/LojV/2rXDaCoxVhrtG+FyoO3DjkRz0dW/BOPg8ohsMm34AoYbv8otym64k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=fLmaP+2Q; arc=none smtp.client-ip=198.175.65.13 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="fLmaP+2Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724418754; x=1755954754; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=aVTST2pl/08bBIa3GVyrZCUMPOdhpKBeUaF1VGe3Dxw=; b=fLmaP+2Qzp6XhfQqEYdBjKrZnMPq/mPfvzZrySUpYE+YagUekAzKLmXj RfYxm4iwWLVfn79gy1fk0bOUdyBzDZjgBUFmE2clquP7vQeKL4P7/Rjsm vLQ6P++y6FInjpB6ZnGhyzYIWKaBJM0awyZ8xnsNaDbVURRqAtgWYQMEg tqdFj6Tr7DFPyMGR/xsvzW6eN8+lB5775J5mA3u3qzUr6Xx2xVaa7mLxV TZrbtdbl63LE8X2FvdiAsl6+ADpKwcc08N7Z89+OFOt8lgOaoUwSCY3lp sQIImVK+AQ2ZBbja6qenI+OAUbJH9NJ4P2c8jB9N6rKew62DfgGwQyeYy g==; X-CSE-ConnectionGUID: K8cBoZqjTTCpFz+FiJfmtA== X-CSE-MsgGUID: 4UJYp7XASICFmVtwSyRqjw== X-IronPort-AV: E=McAfee;i="6700,10204,11172"; a="34044237" X-IronPort-AV: E=Sophos;i="6.10,170,1719903600"; d="scan'208";a="34044237" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Aug 2024 06:12:33 -0700 X-CSE-ConnectionGUID: mw48ja6wRTmvfcVTOAJWXQ== X-CSE-MsgGUID: l75Az5neRyeO5EdQnEuHZw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,170,1719903600"; d="scan'208";a="92584826" Received: from kkkuntal-desk3 (HELO [10.124.222.88]) ([10.124.222.88]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Aug 2024 06:12:32 -0700 Message-ID: <863beeab7f6ecf36796394c75e95fc7a0396a862.camel@linux.intel.com> Subject: Re: [PATCH 3/3] platform/x86/intel-uncore-freq: Add efficiency latency control to sysfs interface From: srinivas pandruvada To: Ilpo =?ISO-8859-1?Q?J=E4rvinen?= , Tero Kristo Cc: Hans de Goede , platform-driver-x86@vger.kernel.org, LKML Date: Fri, 23 Aug 2024 09:12:21 -0400 In-Reply-To: <4cf8d691-d00c-3603-6722-06394f00bdfc@linux.intel.com> References: <20240821131321.824326-1-tero.kristo@linux.intel.com> <20240821131321.824326-4-tero.kristo@linux.intel.com> <4cf8d691-d00c-3603-6722-06394f00bdfc@linux.intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.48.4 (3.48.4-1.fc38) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gRnJpLCAyMDI0LTA4LTIzIGF0IDE2OjAzICswMzAwLCBJbHBvIErDpHJ2aW5lbiB3cm90ZToK PiBPbiBXZWQsIDIxIEF1ZyAyMDI0LCBUZXJvIEtyaXN0byB3cm90ZToKPiAKPiA+IEFkZCB0aGUg VFBNSSBlZmZpY2llbmN5IGxhdGVuY3kgY29udHJvbCBmaWVsZHMgdG8gdGhlIHN5c2ZzCj4gPiBp bnRlcmZhY2UuCj4gPiBUaGUgc3lzZnMgZmlsZXMgYXJlIG1hcHBlZCB0byB0aGUgVFBNSSB1bmNv cmUgZHJpdmVyIHZpYSB0aGUKPiA+IHJlZ2lzdGVyZWQKPiA+IHVuY29yZV9yZWFkIGFuZCB1bmNv cmVfd3JpdGUgZHJpdmVyIGNhbGxiYWNrcy4gVGhlc2UgZmllbGRzIGFyZSBub3QKPiA+IHBvcHVs YXRlZCBvbiBvbGRlciBub24gVFBNSSBoYXJkd2FyZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTog VGVybyBLcmlzdG8gPHRlcm8ua3Jpc3RvQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gwqAu Li4vdW5jb3JlLWZyZXF1ZW5jeS1jb21tb24uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNDIKPiA+ICsrKysrKysrKysrKysrKystLS0KPiA+IMKgLi4uL3VuY29yZS1mcmVxdWVu Y3ktY29tbW9uLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEzICsrKysrLQo+ ID4gwqAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4g PiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC91bmNvcmUtZnJl cXVlbmN5L3VuY29yZS0KPiA+IGZyZXF1ZW5jeS1jb21tb24uYyBiL2RyaXZlcnMvcGxhdGZvcm0v eDg2L2ludGVsL3VuY29yZS0KPiA+IGZyZXF1ZW5jeS91bmNvcmUtZnJlcXVlbmN5LWNvbW1vbi5j Cj4gPiBpbmRleCA0ZTg4MDU4NWNiZTQuLmUyMmI2ODNhN2E0MyAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3VuY29yZS1mcmVxdWVuY3kvdW5jb3JlLWZyZXF1ZW5j eS0KPiA+IGNvbW1vbi5jCj4gPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC91bmNv cmUtZnJlcXVlbmN5L3VuY29yZS1mcmVxdWVuY3ktCj4gPiBjb21tb24uYwo+ID4gQEAgLTYwLDEx ICs2MCwxNiBAQCBzdGF0aWMgc3NpemVfdCBzaG93X2F0dHIoc3RydWN0IHVuY29yZV9kYXRhCj4g PiAqZGF0YSwgY2hhciAqYnVmLCBlbnVtIHVuY29yZV9pbmRleAo+ID4gwqBzdGF0aWMgc3NpemVf dCBzdG9yZV9hdHRyKHN0cnVjdCB1bmNvcmVfZGF0YSAqZGF0YSwgY29uc3QgY2hhcgo+ID4gKmJ1 Ziwgc3NpemVfdCBjb3VudCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGVudW0gdW5jb3JlX2luZGV4IGluZGV4KQo+ID4gwqB7Cj4gPiAtwqDC oMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgaW5wdXQ7Cj4gPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBpbnQgaW5wdXQgPSAwOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gPiDCoAo+ID4g LcKgwqDCoMKgwqDCoMKgaWYgKGtzdHJ0b3VpbnQoYnVmLCAxMCwgJmlucHV0KSkKPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ICvCoMKgwqDCoMKg wqDCoGlmIChpbmRleCA9PQo+ID4gVU5DT1JFX0lOREVYX0VGRl9MQVRfQ1RSTF9ISUdIX1RIUkVT SE9MRF9FTkFCTEUpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoa3N0 cnRvYm9vbChidWYsIChib29sICopJmlucHV0KSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gPiArwqDCoMKgwqDCoMKg wqB9IGVsc2Ugewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChrc3RydG91 aW50KGJ1ZiwgMTAsICZpbnB1dCkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4g wqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZ1bmNvcmVfbG9jayk7Cj4gPiDCoMKg wqDCoMKgwqDCoMKgcmV0ID0gdW5jb3JlX3dyaXRlKGRhdGEsIGlucHV0LCBpbmRleCk7Cj4gPiBA QCAtMTAzLDYgKzEwOCwxOCBAQCBzaG93X3VuY29yZV9hdHRyKG1heF9mcmVxX2toeiwKPiA+IFVO Q09SRV9JTkRFWF9NQVhfRlJFUSk7Cj4gPiDCoAo+ID4gwqBzaG93X3VuY29yZV9hdHRyKGN1cnJl bnRfZnJlcV9raHosIFVOQ09SRV9JTkRFWF9DVVJSRU5UX0ZSRVEpOwo+ID4gwqAKPiA+ICtzdG9y ZV91bmNvcmVfYXR0cihlbGNfbG93X3RocmVzaG9sZF9wZXJjZW50LAo+ID4gVU5DT1JFX0lOREVY X0VGRl9MQVRfQ1RSTF9MT1dfVEhSRVNIT0xEKTsKPiA+ICtzdG9yZV91bmNvcmVfYXR0cihlbGNf aGlnaF90aHJlc2hvbGRfcGVyY2VudCwKPiA+IFVOQ09SRV9JTkRFWF9FRkZfTEFUX0NUUkxfSElH SF9USFJFU0hPTEQpOwo+ID4gK3N0b3JlX3VuY29yZV9hdHRyKGVsY19oaWdoX3RocmVzaG9sZF9l bmFibGUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU5DT1JFX0lOREVY X0VGRl9MQVRfQ1RSTF9ISUdIX1RIUkVTSE9MRF9FTkFCTEUpOwo+ID4gK3N0b3JlX3VuY29yZV9h dHRyKGVsY19mbG9vcl9mcmVxX2toeiwKPiA+IFVOQ09SRV9JTkRFWF9FRkZfTEFUX0NUUkxfRlJF USk7Cj4gPiArCj4gPiArc2hvd191bmNvcmVfYXR0cihlbGNfbG93X3RocmVzaG9sZF9wZXJjZW50 LAo+ID4gVU5DT1JFX0lOREVYX0VGRl9MQVRfQ1RSTF9MT1dfVEhSRVNIT0xEKTsKPiA+ICtzaG93 X3VuY29yZV9hdHRyKGVsY19oaWdoX3RocmVzaG9sZF9wZXJjZW50LAo+ID4gVU5DT1JFX0lOREVY X0VGRl9MQVRfQ1RSTF9ISUdIX1RIUkVTSE9MRCk7Cj4gPiArc2hvd191bmNvcmVfYXR0cihlbGNf aGlnaF90aHJlc2hvbGRfZW5hYmxlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBVTkNPUkVfSU5ERVhfRUZGX0xBVF9DVFJMX0hJR0hfVEhSRVNIT0xEX0VOQUJMRSk7Cj4gPiAr c2hvd191bmNvcmVfYXR0cihlbGNfZmxvb3JfZnJlcV9raHosCj4gPiBVTkNPUkVfSU5ERVhfRUZG X0xBVF9DVFJMX0ZSRVEpOwo+ID4gKwo+ID4gwqAjZGVmaW5lCj4gPiBzaG93X3VuY29yZV9kYXRh KG1lbWJlcl9uYW1lKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0YXRpYyBzc2l6 ZV90IHNob3dfIyNtZW1iZXJfbmFtZShzdHJ1Y3Qga29iamVjdCAqa29iaizCoFwKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUKPiA+ICphdHRyLCBj aGFyICpidWYpXAo+ID4gQEAgLTE0Niw3ICsxNjMsOCBAQCBzaG93X3VuY29yZV9kYXRhKGluaXRp YWxfbWF4X2ZyZXFfa2h6KTsKPiA+IMKgCj4gPiDCoHN0YXRpYyBpbnQgY3JlYXRlX2F0dHJfZ3Jv dXAoc3RydWN0IHVuY29yZV9kYXRhICpkYXRhLCBjaGFyICpuYW1lKQo+ID4gwqB7Cj4gPiAtwqDC oMKgwqDCoMKgwqBpbnQgcmV0LCBmcmVxLCBpbmRleCA9IDA7Cj4gPiArwqDCoMKgwqDCoMKgwqBp bnQgcmV0LCBpbmRleCA9IDA7Cj4gPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgdmFsOwo+ ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbml0X2F0dHJpYnV0ZV9ydyhtYXhfZnJlcV9raHop Owo+ID4gwqDCoMKgwqDCoMKgwqDCoGluaXRfYXR0cmlidXRlX3J3KG1pbl9mcmVxX2toeik7Cj4g PiBAQCAtMTY4LDEwICsxODYsMjQgQEAgc3RhdGljIGludCBjcmVhdGVfYXR0cl9ncm91cChzdHJ1 Y3QKPiA+IHVuY29yZV9kYXRhICpkYXRhLCBjaGFyICpuYW1lKQo+ID4gwqDCoMKgwqDCoMKgwqDC oGRhdGEtPnVuY29yZV9hdHRyc1tpbmRleCsrXSA9ICZkYXRhLQo+ID4gPmluaXRpYWxfbWluX2Zy ZXFfa2h6X2tvYmpfYXR0ci5hdHRyOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGRhdGEtPnVuY29yZV9h dHRyc1tpbmRleCsrXSA9ICZkYXRhLQo+ID4gPmluaXRpYWxfbWF4X2ZyZXFfa2h6X2tvYmpfYXR0 ci5hdHRyOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoHJldCA9IHVuY29yZV9yZWFkKGRhdGEs ICZmcmVxLCBVTkNPUkVfSU5ERVhfQ1VSUkVOVF9GUkVRKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHJl dCA9IHVuY29yZV9yZWFkKGRhdGEsICZ2YWwsIFVOQ09SRV9JTkRFWF9DVVJSRU5UX0ZSRVEpOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoGlmICghcmV0KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkYXRhLT51bmNvcmVfYXR0cnNbaW5kZXgrK10gPSAmZGF0YS0KPiA+ID5jdXJyZW50 X2ZyZXFfa2h6X2tvYmpfYXR0ci5hdHRyOwo+ID4gwqAKPiA+ICvCoMKgwqDCoMKgwqDCoHJldCA9 IHVuY29yZV9yZWFkKGRhdGEsICZ2YWwsCj4gPiBVTkNPUkVfSU5ERVhfRUZGX0xBVF9DVFJMX0xP V19USFJFU0hPTEQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFyZXQpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbml0X2F0dHJpYnV0ZV9ydyhlbGNfbG93X3RocmVzaG9s ZF9wZXJjZW50KTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbml0X2F0dHJp YnV0ZV9ydyhlbGNfaGlnaF90aHJlc2hvbGRfcGVyY2VudCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaW5pdF9hdHRyaWJ1dGVfcncoZWxjX2hpZ2hfdGhyZXNob2xkX2VuYWJs ZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW5pdF9hdHRyaWJ1dGVfcnco ZWxjX2Zsb29yX2ZyZXFfa2h6KTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkYXRhLT51bmNvcmVfYXR0cnNbaW5kZXgrK10gPSAmZGF0YS0KPiA+ID5lbGNfbG93X3Ro cmVzaG9sZF9wZXJjZW50X2tvYmpfYXR0ci5hdHRyOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRhdGEtPnVuY29yZV9hdHRyc1tpbmRleCsrXSA9ICZkYXRhLQo+ID4gPmVsY19o aWdoX3RocmVzaG9sZF9wZXJjZW50X2tvYmpfYXR0ci5hdHRyOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRhdGEtPnVuY29yZV9hdHRyc1tpbmRleCsrXSA9Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZkYXRhLQo+ID4gPmVsY19o aWdoX3RocmVzaG9sZF9lbmFibGVfa29ial9hdHRyLmF0dHI7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS0+dW5jb3JlX2F0dHJzW2luZGV4KytdID0gJmRhdGEtCj4gPiA+ ZWxjX2Zsb29yX2ZyZXFfa2h6X2tvYmpfYXR0ci5hdHRyOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ IAo+IFJldmlld2VkLWJ5OiBJbHBvIErDpHJ2aW5lbiA8aWxwby5qYXJ2aW5lbkBsaW51eC5pbnRl bC5jb20+Cj4gCj4gQnV0IEkgaGF2ZSB0byBzYXkgSSdtIG5vdCBiaWcgZmFuIG9mIHRoaXMgZnVu Y3Rpb24gdHJlYXRpbmcgYW55IGVycm9yCj4gYXMgCj4gYW4gaW1wbGljaXQgaW5kaWNhdGlvbiBv ZiBFTEMgbm90IHN1cHBvcnRlZC4KQWxzbyB0aGVyZSBpcyBhIGNoZWNrIGZvciB2ZXJzaW9uIG51 bWJlciwgd2hpY2ggc3VwcG9ydHMgRUxDLiBTbyB0aGlzCmNvbmRpdGlvbiB3aWxsIG5ldmVyIGJl IHRydWUgdW5sZXNzIHNvbWUgSU8gcmVhZCBmYWlsdXJlLgoKPiAKPiBJcyB0aGF0IGV2ZW4gZ29p bmcgdG8gYmUgdHJ1ZSBhZnRlciB0aGlzOgo+IAo+IMKgCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2Vy bmVsLm9yZy9wcm9qZWN0L3BsYXRmb3JtLWRyaXZlci14ODYvcGF0Y2gvMjAyNDA4MjAyMDQ1NTgu MTI5NjMxOS0xLXNyaW5pdmFzLnBhbmRydXZhZGFAbGludXguaW50ZWwuY29tLwo+IAo+IC4uLmFz IHJvb3RfZG9tYWluIGlzIGVsaW1pbmF0ZWQgZm9yIG90aGVyIHJlYXNvbnMgdGhhbiBFTEMgCj4g c3VwcG9ydGVkL25vdC1zdXBwb3J0ZWQgKC1FTk9EQVRBIHJldHVybiBwYXRoKT8KRXZlbiBpZiBF TEMgaXMgbm90IHN1cHBvcnRlZCwgYnV0IGFsbCBvdGhlcnMgZmllbGRzIHdpbGwgYWx3YXlzIGJl CnN1cHBvcnRlZCBmcm9tIGJhc2UgdmVyc2lvbi4gVGhlIGFib3ZlIGNoYW5nZSBkb2Vzbid0IGRv IGFueXRoaW5nIHdpdGgKcm9vdCBkb21haW4uCgpUaGFua3MsClNyaW5pdmFzCj4gCgo=