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 0DCD8C27C55 for ; Sun, 9 Jun 2024 23:02:50 +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=4gPG41YkymRgANVHwMcquxEW6nz5QEKyQVl+zqkI/KI=; b=sLg5lDH3YZKObu X7TcJFPUeLxZ+VK3YErQPuArb0XmcUVriIwwk+P8XUeSJ+7hrzhSn6rUH1d7q1eSGroVdy9k2vkFO fXpk9kgBJxE96jOk3r9JhWc2eRX5Y7st8Kr6OkG7NcL7r5f442bSxmo7kO4lwUSm119dpEZP278MP 798RrvvuzkhSWIX33JJCJAlp4hdYHPKoM0yzMvmXJvRrOIpAzIl1DZkyHJ8XGLH5E2R3p5DrHgMcM z410ZRon7lZaGlTifOOM9Hcp2UDrTeflRTzYsYvt/QaP7QPgDAfrIf+/Z5FdYpIvGqNzWiW1m9qhc uxdsyCdSD+P57gz9ZCLw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sGRYb-00000003OQi-1w35; Sun, 09 Jun 2024 23:02:37 +0000 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sGRYX-00000003OQ3-01jo for linux-riscv@lists.infradead.org; Sun, 09 Jun 2024 23:02:35 +0000 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-70599522368so153605b3a.2 for ; Sun, 09 Jun 2024 16:02:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1717974149; x=1718578949; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=vPYHtBQnd/xyYKGlXkuxo2Q7Wr4C6Il5aaXzbLwkn54=; b=wxXk4ZZuwKOTVwqz3ZyrciQQOz3vYSS8iJbDuFB7fNzDZSEVwDayV0i9mKJcGsxf/l Lrvr28UWVPmkP2WvH4jPEUt67l6A7xrHkfWolhYkSxvRe/AJsMyrnWcYeXh4RJfD7e1Z eDI7heYaS1+pU7m0v38L5eNnmANXgVgpDZ6+2ZYB4VF8mDdw+RFXbs1TsoPGKmXge7VJ dlcBUVuwxvRJbwTF7SJHS/FQmeoyflqsSPiFhtfRZlhKdpjJUqyBT2mUo9fvGL1DisxH h91d7Nm6v7FpMfoUKEkOhfkeQmVjs0rAcufjnat0JPNvj2cypv25LPRArmeXcIhVArtD zeFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717974149; x=1718578949; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vPYHtBQnd/xyYKGlXkuxo2Q7Wr4C6Il5aaXzbLwkn54=; b=gYqMa+vmqNrnIO8ota2nrz8i1KSPh6zD87VlArDZVcEof/wk1dNyLyzTXt6qRWHHQC 7YgLB3+SbQKzmLc+QtX+Jas4+bDre4j2W0ulvI2PK407MBJ7JoEWgSavN0SnITdcDsTe NIDPH2dby5vx0aRWXpOb5QNS5TeEnJSEriw/iIZrIX2kzufTT2qHHYhkOMwPS+sg8x4+ osq/6CoDx5kAWeNMVY3tKZcRjZ2zot1wYUTYe8R5uLqdwaO0AkEONKeIWSjzl6gFojE9 fPd7UjLH59eu/3Y/f2+AVU6Bt/LIlu5zxXxrvZU5TUaCs7yfoJRYI95UgdkSvnZcElTl PmGg== X-Forwarded-Encrypted: i=1; AJvYcCW7sjDM/fm6UcTO9KRtOGrxElOjzDSvf5hKvA7DkmAUX6GlXPItDmP96RdgrJRSgQtCRiq0p6BdelYKJ3GatxJ/a6ySrbgCjNzFJvS/tdOY X-Gm-Message-State: AOJu0YywveN75t/JYRBOL3BA+dZqoRIdEMdPN9g08hsy2z4105Wd+TYF D4ps47fJ5d6/V+dTwO3V61BlLLqv5NySNO0oiC4DFd0wa2/u6VD8Xn1/pLv8sLQ= X-Google-Smtp-Source: AGHT+IFKAWS/i6LiEZnmcbeDkdNuO1Gx/YustS5XDiosA+DuSuyZiJ4CyNtN6hg5qB9ADlqtKzs/3g== X-Received: by 2002:a05:6a20:430d:b0:1b7:d050:93e5 with SMTP id adf61e73a8af0-1b7d05098fcmr369300637.15.1717974149226; Sun, 09 Jun 2024 16:02:29 -0700 (PDT) Received: from ghost ([2601:647:5700:6860:917b:ada:b5b8:40af]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-704211eadf1sm3032904b3a.4.2024.06.09.16.02.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 16:02:28 -0700 (PDT) Date: Sun, 9 Jun 2024 16:02:26 -0700 From: Charlie Jenkins To: Andy Chiu Cc: Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Evan Green , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/4] riscv: Extend cpufeature.c to detect vendor extensions Message-ID: References: <20240515-support_vendor_extensions-v1-0-b05dd5ea7d8d@rivosinc.com> <20240515-support_vendor_extensions-v1-1-b05dd5ea7d8d@rivosinc.com> 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-20240609_160233_226986_FFAE535E X-CRM114-Status: GOOD ( 34.18 ) 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 T24gV2VkLCBNYXkgMjksIDIwMjQgYXQgMTE6MjI6MTdQTSArMDgwMCwgQW5keSBDaGl1IHdyb3Rl Ogo+IEhpIENoYXJsaWUsCj4gCj4gT24gVGh1LCBNYXkgMTYsIDIwMjQgYXQgNToyOOKAr0FNIENo YXJsaWUgSmVua2lucyA8Y2hhcmxpZUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4KPiA+IEluc3Rl YWQgb2YgZ3JvdXBpbmcgYWxsIHZlbmRvciBleHRlbnNpb25zIGludG8gdGhlIHNhbWUgcmlzY3Zf aXNhX2V4dAo+ID4gdGhhdCBzdGFuZGFyZCBpbnN0cnVjdGlvbnMgdXNlLCBjcmVhdGUgYSBzdHJ1 Y3QKPiA+ICJyaXNjdl9pc2FfdmVuZG9yX2V4dF9kYXRhX2xpc3QiIHRoYXQgYWxsb3dzIGVhY2gg dmVuZG9yIHRvIG1haW50YWluCj4gPiB0aGVpciB2ZW5kb3IgZXh0ZW5zaW9ucyBpbmRlcGVuZGVu dGx5IG9mIHRoZSBzdGFuZGFyZCBleHRlbnNpb25zLgo+ID4geGFuZGVzcG11IGlzIGN1cnJlbnRs eSB0aGUgb25seSB2ZW5kb3IgZXh0ZW5zaW9uIHNvIHRoYXQgaXMgdGhlIG9ubHkKPiA+IGV4dGVu c2lvbiB0aGF0IGlzIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLgo+ID4KPiA+IEFuIGFkZGl0aW9u YWwgYmVuZWZpdCBvZiB0aGlzIGlzIHRoYXQgdGhlIGV4dGVuc2lvbnMgb2YgZWFjaCB2ZW5kb3Ig Y2FuCj4gPiBiZSBjb25kaXRpb25hbGx5IGVuYWJsZWQuIEEgY29uZmlnIFJJU0NWX0lTQV9WRU5E T1JfRVhUX0FOREVTIGhhcyBiZWVuCj4gPiBhZGRlZCB0byBhbGxvdyBmb3IgdGhhdC4KPiA+Cj4g PiBTaWduZWQtb2ZmLWJ5OiBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2b3NpbmMuY29tPgo+ ID4gLS0tCj4gPiAgYXJjaC9yaXNjdi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKPiA+ICBhcmNoL3Jpc2N2L0tjb25maWcudmVuZG9yICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTkgKysrKwo+ID4gIGFyY2gvcmlzY3YvZXJyYXRhL2FuZGVzL2VycmF0YS5j ICAgICAgICAgICAgICAgICB8ICAgMyArCj4gPiAgYXJjaC9yaXNjdi9lcnJhdGEvc2lmaXZlL2Vy cmF0YS5jICAgICAgICAgICAgICAgIHwgICAzICsKPiA+ICBhcmNoL3Jpc2N2L2VycmF0YS90aGVh ZC9lcnJhdGEuYyAgICAgICAgICAgICAgICAgfCAgIDMgKwo+ID4gIGFyY2gvcmlzY3YvaW5jbHVk ZS9hc20vY3B1ZmVhdHVyZS5oICAgICAgICAgICAgICB8ICAxOCArKysKPiA+ICBhcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL2h3Y2FwLmggICAgICAgICAgICAgICAgICAgfCAgIDEgLQo+ID4gIGFyY2gv cmlzY3YvaW5jbHVkZS9hc20vdmVuZG9yX2V4dGVuc2lvbnMuaCAgICAgICB8ICA0OCArKysrKysr Kwo+ID4gIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdmVuZG9yX2V4dGVuc2lvbnMvYW5kZXMuaCB8 ICAxOSArKysrCj4gPiAgYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICsKPiA+ICBhcmNoL3Jpc2N2L2tlcm5lbC9jcHVmZWF0dXJlLmMgICAgICAg ICAgICAgICAgICAgfCAxMzUgKysrKysrKysrKysrKysrKystLS0tLS0KPiA+ICBhcmNoL3Jpc2N2 L2tlcm5lbC92ZW5kb3JfZXh0ZW5zaW9ucy5jICAgICAgICAgICAgfCAgNTYgKysrKysrKysrKwo+ ID4gIGFyY2gvcmlzY3Yva2VybmVsL3ZlbmRvcl9leHRlbnNpb25zL01ha2VmaWxlICAgICB8ICAg MyArCj4gPiAgYXJjaC9yaXNjdi9rZXJuZWwvdmVuZG9yX2V4dGVuc2lvbnMvYW5kZXMuYyAgICAg IHwgIDE4ICsrKwo+ID4gIGRyaXZlcnMvcGVyZi9yaXNjdl9wbXVfc2JpLmMgICAgICAgICAgICAg ICAgICAgICB8ICAxMCArLQo+ID4gIDE1IGZpbGVzIGNoYW5nZWQsIDMwMyBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9LY29uZmln IGIvYXJjaC9yaXNjdi9LY29uZmlnCj4gPiBpbmRleCBiZTA5Yzg4MzZkNTYuLmZlYzg2ZmJhM2Fj ZCAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvcmlzY3YvS2NvbmZpZwo+ID4gKysrIGIvYXJjaC9yaXNj di9LY29uZmlnCj4gPiBAQCAtNzU5LDYgKzc1OSw4IEBAIGNvbmZpZyBSSVNDVl9FRkZJQ0lFTlRf VU5BTElHTkVEX0FDQ0VTUwo+ID4KPiA+ICBlbmRjaG9pY2UKPiA+Cj4gPiArc291cmNlICJhcmNo L3Jpc2N2L0tjb25maWcudmVuZG9yIgo+ID4gKwo+ID4gIGVuZG1lbnUgIyAiUGxhdGZvcm0gdHlw ZSIKPiA+Cj4gPiAgbWVudSAiS2VybmVsIGZlYXR1cmVzIgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gv cmlzY3YvS2NvbmZpZy52ZW5kb3IgYi9hcmNoL3Jpc2N2L0tjb25maWcudmVuZG9yCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZjFjZGQzMmVkMjkKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2FyY2gvcmlzY3YvS2NvbmZpZy52ZW5kb3IKPiA+IEBA IC0wLDAgKzEsMTkgQEAKPiA+ICttZW51ICJWZW5kb3IgZXh0ZW5zaW9ucyIKPiA+ICsKPiA+ICtj b25maWcgUklTQ1ZfSVNBX1ZFTkRPUl9FWFQKPiA+ICsgICAgICAgYm9vbAo+ID4gKwo+ID4gK21l bnUgIkFuZGVzIgo+ID4gK2NvbmZpZyBSSVNDVl9JU0FfVkVORE9SX0VYVF9BTkRFUwo+ID4gKyAg ICAgICBib29sICJBbmRlcyB2ZW5kb3IgZXh0ZW5zaW9uIHN1cHBvcnQiCj4gPiArICAgICAgIHNl bGVjdCBSSVNDVl9JU0FfVkVORE9SX0VYVAo+ID4gKyAgICAgICBkZWZhdWx0IHkKPiA+ICsgICAg ICAgaGVscAo+ID4gKyAgICAgICAgIFNheSBOIGhlcmUgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBh bGwgQW5kZXMgdmVuZG9yIGV4dGVuc2lvbgo+ID4gKyAgICAgICAgIHN1cHBvcnQuIFRoaXMgd2ls bCBjYXVzZSBhbnkgQW5kZXMgdmVuZG9yIGV4dGVuc2lvbnMgdGhhdCBhcmUKPiA+ICsgICAgICAg ICByZXF1ZXN0ZWQgYnkgaGFyZHdhcmUgcHJvYmluZyB0byBiZSBpZ25vcmVkLgo+ID4gKwo+ID4g KyAgICAgICAgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IFkuCj4gPiAr ZW5kbWVudQo+ID4gKwo+ID4gK2VuZG1lbnUKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2Vy cmF0YS9hbmRlcy9lcnJhdGEuYyBiL2FyY2gvcmlzY3YvZXJyYXRhL2FuZGVzL2VycmF0YS5jCj4g PiBpbmRleCBmMjcwOGE5NDk0YTEuLmZjMWEzNGZhYTVmMyAxMDA2NDQKPiA+IC0tLSBhL2FyY2gv cmlzY3YvZXJyYXRhL2FuZGVzL2VycmF0YS5jCj4gPiArKysgYi9hcmNoL3Jpc2N2L2VycmF0YS9h bmRlcy9lcnJhdGEuYwo+ID4gQEAgLTE3LDYgKzE3LDcgQEAKPiA+ICAjaW5jbHVkZSA8YXNtL3By b2Nlc3Nvci5oPgo+ID4gICNpbmNsdWRlIDxhc20vc2JpLmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS92 ZW5kb3JpZF9saXN0Lmg+Cj4gPiArI2luY2x1ZGUgPGFzbS92ZW5kb3JfZXh0ZW5zaW9ucy5oPgo+ ID4KPiA+ICAjZGVmaW5lIEFOREVTX0FYNDVNUF9NQVJDSElEICAgICAgICAgICAweDgwMDAwMDAw MDAwMDhhNDVVTAo+ID4gICNkZWZpbmUgQU5ERVNfQVg0NU1QX01JTVBJRCAgICAgICAgICAgIDB4 NTAwVUwKPiA+IEBAIC02NSw2ICs2Niw4IEBAIHZvaWQgX19pbml0X29yX21vZHVsZSBhbmRlc19l cnJhdGFfcGF0Y2hfZnVuYyhzdHJ1Y3QgYWx0X2VudHJ5ICpiZWdpbiwgc3RydWN0IGFsCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBhcmNoaWQsIHVuc2lnbmVkIGxvbmcgaW1waWQsCj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YWdlKQo+ID4gIHsKPiA+ICsg ICAgICAgQlVJTERfQlVHX09OKEVSUkFUQV9BTkRFU19OVU1CRVIgPj0gUklTQ1ZfVkVORE9SX0VY VF9BTFRFUk5BVElWRVNfQkFTRSk7Cj4gPiArCj4gPiAgICAgICAgIGlmIChzdGFnZSA9PSBSSVND Vl9BTFRFUk5BVElWRVNfQk9PVCkKPiA+ICAgICAgICAgICAgICAgICBlcnJhdGFfcHJvYmVfaW9j cChzdGFnZSwgYXJjaGlkLCBpbXBpZCk7Cj4gPgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv ZXJyYXRhL3NpZml2ZS9lcnJhdGEuYyBiL2FyY2gvcmlzY3YvZXJyYXRhL3NpZml2ZS9lcnJhdGEu Ywo+ID4gaW5kZXggM2Q5YTMyZDc5MWY3Li5iNjhiMDIzMTE1YzIgMTAwNjQ0Cj4gPiAtLS0gYS9h cmNoL3Jpc2N2L2VycmF0YS9zaWZpdmUvZXJyYXRhLmMKPiA+ICsrKyBiL2FyY2gvcmlzY3YvZXJy YXRhL3NpZml2ZS9lcnJhdGEuYwo+ID4gQEAgLTEyLDYgKzEyLDcgQEAKPiA+ICAjaW5jbHVkZSA8 YXNtL2FsdGVybmF0aXZlLmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS92ZW5kb3JpZF9saXN0Lmg+Cj4g PiAgI2luY2x1ZGUgPGFzbS9lcnJhdGFfbGlzdC5oPgo+ID4gKyNpbmNsdWRlIDxhc20vdmVuZG9y X2V4dGVuc2lvbnMuaD4KPiA+Cj4gPiAgc3RydWN0IGVycmF0YV9pbmZvX3Qgewo+ID4gICAgICAg ICBjaGFyIG5hbWVbMzJdOwo+ID4gQEAgLTkxLDYgKzkyLDggQEAgdm9pZCBzaWZpdmVfZXJyYXRh X3BhdGNoX2Z1bmMoc3RydWN0IGFsdF9lbnRyeSAqYmVnaW4sIHN0cnVjdCBhbHRfZW50cnkgKmVu ZCwKPiA+ICAgICAgICAgdTMyIGNwdV9hcHBseV9lcnJhdGEgPSAwOwo+ID4gICAgICAgICB1MzIg dG1wOwo+ID4KPiA+ICsgICAgICAgQlVJTERfQlVHX09OKEVSUkFUQV9TSUZJVkVfTlVNQkVSID49 IFJJU0NWX1ZFTkRPUl9FWFRfQUxURVJOQVRJVkVTX0JBU0UpOwo+ID4gKwo+ID4gICAgICAgICBp ZiAoc3RhZ2UgPT0gUklTQ1ZfQUxURVJOQVRJVkVTX0VBUkxZX0JPT1QpCj4gPiAgICAgICAgICAg ICAgICAgcmV0dXJuOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2VycmF0YS90aGVh ZC9lcnJhdGEuYyBiL2FyY2gvcmlzY3YvZXJyYXRhL3RoZWFkL2VycmF0YS5jCj4gPiBpbmRleCBi ZjZhMGE2MzE4ZWUuLmY1MTIwZTA3YzMxOCAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvcmlzY3YvZXJy YXRhL3RoZWFkL2VycmF0YS5jCj4gPiArKysgYi9hcmNoL3Jpc2N2L2VycmF0YS90aGVhZC9lcnJh dGEuYwo+ID4gQEAgLTE4LDYgKzE4LDcgQEAKPiA+ICAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gPiAg I2luY2x1ZGUgPGFzbS9wYXRjaC5oPgo+ID4gICNpbmNsdWRlIDxhc20vdmVuZG9yaWRfbGlzdC5o Pgo+ID4gKyNpbmNsdWRlIDxhc20vdmVuZG9yX2V4dGVuc2lvbnMuaD4KPiA+Cj4gPiAgI2RlZmlu ZSBDU1JfVEhfU1hTVEFUVVMgICAgICAgICAgICAgICAgMHg1YzAKPiA+ICAjZGVmaW5lIFNYU1RB VFVTX01BRUUgICAgICAgICAgX0FDKDB4MjAwMDAwLCBVTCkKPiA+IEBAIC0xNjYsNiArMTY3LDgg QEAgdm9pZCB0aGVhZF9lcnJhdGFfcGF0Y2hfZnVuYyhzdHJ1Y3QgYWx0X2VudHJ5ICpiZWdpbiwg c3RydWN0IGFsdF9lbnRyeSAqZW5kLAo+ID4gICAgICAgICB1MzIgdG1wOwo+ID4gICAgICAgICB2 b2lkICpvbGRwdHIsICphbHRwdHI7Cj4gPgo+ID4gKyAgICAgICBCVUlMRF9CVUdfT04oRVJSQVRB X1RIRUFEX05VTUJFUiA+PSBSSVNDVl9WRU5ET1JfRVhUX0FMVEVSTkFUSVZFU19CQVNFKTsKPiA+ ICsKPiA+ICAgICAgICAgZm9yIChhbHQgPSBiZWdpbjsgYWx0IDwgZW5kOyBhbHQrKykgewo+ID4g ICAgICAgICAgICAgICAgIGlmIChhbHQtPnZlbmRvcl9pZCAhPSBUSEVBRF9WRU5ET1JfSUQpCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+IGRpZmYgLS1naXQgYS9hcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v Y3B1ZmVhdHVyZS5oCj4gPiBpbmRleCAzNDc4MDU0NDYxNTEuLjU1MGQ2NjFkYzc4ZCAxMDA2NDQK PiA+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oCj4gPiArKysgYi9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaAo+ID4gQEAgLTMzLDYgKzMzLDI0IEBA IGV4dGVybiBzdHJ1Y3QgcmlzY3ZfaXNhaW5mbyBoYXJ0X2lzYVtOUl9DUFVTXTsKPiA+Cj4gPiAg dm9pZCByaXNjdl91c2VyX2lzYV9lbmFibGUodm9pZCk7Cj4gPgo+ID4gKyNkZWZpbmUgX1JJU0NW X0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3Vic2V0X2V4dHMsIF9zdWJzZXRfZXh0c19zaXpl KSB7ICAgICBcCj4gPiArICAgICAgIC5uYW1lID0gI19uYW1lLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgLnByb3Bl cnR5ID0gI19uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ID4gKyAgICAgICAuaWQgPSBfaWQsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgIC5zdWJz ZXRfZXh0X2lkcyA9IF9zdWJzZXRfZXh0cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiA+ICsgICAgICAgLnN1YnNldF9leHRfc2l6ZSA9IF9zdWJzZXRfZXh0c19z aXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gK30KPiA+ICsKPiA+ ICsjZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBfaWQpIF9SSVNDVl9JU0FfRVhU X0RBVEEoX25hbWUsIF9pZCwgTlVMTCwgMCkKPiA+ICsKPiA+ICsvKiBVc2VkIHRvIGRlY2xhcmUg cHVyZSAibGFzc28iIGV4dGVuc2lvbiAoWmsgZm9yIGluc3RhbmNlKSAqLwo+ID4gKyNkZWZpbmUg X19SSVNDVl9JU0FfRVhUX0JVTkRMRShfbmFtZSwgX2J1bmRsZWRfZXh0cykgXAo+ID4gKyAgICAg ICBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBSSVNDVl9JU0FfRVhUX0lOVkFMSUQsIF9idW5k bGVkX2V4dHMsIEFSUkFZX1NJWkUoX2J1bmRsZWRfZXh0cykpCj4gPiArCj4gPiArLyogVXNlZCB0 byBkZWNsYXJlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYSBzdXBlcnNldCBvZiBvdGhlciBleHRlbnNp b25zIChadmJiIGZvciBpbnN0YW5jZSkgKi8KPiA+ICsjZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9T VVBFUlNFVChfbmFtZSwgX2lkLCBfc3ViX2V4dHMpIFwKPiA+ICsgICAgICAgX1JJU0NWX0lTQV9F WFRfREFUQShfbmFtZSwgX2lkLCBfc3ViX2V4dHMsIEFSUkFZX1NJWkUoX3N1Yl9leHRzKSkKPiA+ ICsKPiA+ICAjaWYgZGVmaW5lZChDT05GSUdfUklTQ1ZfTUlTQUxJR05FRCkKPiA+ICBib29sIGNo ZWNrX3VuYWxpZ25lZF9hY2Nlc3NfZW11bGF0ZWRfYWxsX2NwdXModm9pZCk7Cj4gPiAgdm9pZCB1 bmFsaWduZWRfZW11bGF0aW9uX2ZpbmlzaCh2b2lkKTsKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL2h3Y2FwLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2h3Y2FwLmgK PiA+IGluZGV4IGUxN2QwMDc4YTY1MS4uMWYyZDI1OTljNjU1IDEwMDY0NAo+ID4gLS0tIGEvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9od2NhcC5oCj4gPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2h3Y2FwLmgKPiA+IEBAIC04MCw3ICs4MCw2IEBACj4gPiAgI2RlZmluZSBSSVNDVl9JU0Ff RVhUX1pGQSAgICAgICAgICAgICAgNzEKPiA+ICAjZGVmaW5lIFJJU0NWX0lTQV9FWFRfWlRTTyAg ICAgICAgICAgICA3Mgo+ID4gICNkZWZpbmUgUklTQ1ZfSVNBX0VYVF9aQUNBUyAgICAgICAgICAg IDczCj4gPiAtI2RlZmluZSBSSVNDVl9JU0FfRVhUX1hBTkRFU1BNVSAgICAgICAgICAgICAgICA3 NAo+ID4KPiA+ICAjZGVmaW5lIFJJU0NWX0lTQV9FWFRfWExJTlVYRU5WQ0ZHICAgICAxMjcKPiA+ Cj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS92ZW5kb3JfZXh0ZW5zaW9u cy5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS92ZW5kb3JfZXh0ZW5zaW9ucy5oCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41ODQyZGFjYzA1Y2QKPiA+ IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdmVuZG9yX2V4 dGVuc2lvbnMuaAo+ID4gQEAgLTAsMCArMSw0OCBAQAo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdodCAyMDI0IFJp dm9zLCBJbmMKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaWZuZGVmIF9BU01fVkVORE9SX0VYVEVOU0lP TlNfSAo+ID4gKyNkZWZpbmUgX0FTTV9WRU5ET1JfRVhURU5TSU9OU19ICj4gPiArCj4gPiArI2lu Y2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L2FycmF5 X3NpemUuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiA+ICsKPiA+ICsvKgo+ID4g KyAqIFRoZSBleHRlbnNpb24ga2V5cyBvZiBlYWNoIHZlbmRvciBtdXN0IGJlIHN0cmljdGx5IGxl c3MgdGhhbiB0aGlzIHZhbHVlLgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgUklTQ1ZfSVNBX1ZFTkRP Ul9FWFRfTUFYIDMyCj4gPiArCj4gPiArc3RydWN0IHJpc2N2X2lzYXZlbmRvcmluZm8gewo+ID4g KyAgICAgICBERUNMQVJFX0JJVE1BUChpc2EsIFJJU0NWX0lTQV9WRU5ET1JfRVhUX01BWCk7Cj4g PiArfTsKPiA+ICsKPiA+ICtzdHJ1Y3QgcmlzY3ZfaXNhX3ZlbmRvcl9leHRfZGF0YV9saXN0IHsK PiA+ICsgICAgICAgY29uc3Qgc2l6ZV90IGV4dF9kYXRhX2NvdW50Owo+ID4gKyAgICAgICBjb25z dCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhICpleHRfZGF0YTsKPiA+ICsgICAgICAgc3RydWN0 IHJpc2N2X2lzYXZlbmRvcmluZm8gcGVyX2hhcnRfaXNhX2JpdG1hcFtOUl9DUFVTXTsKPiA+ICsg ICAgICAgc3RydWN0IHJpc2N2X2lzYXZlbmRvcmluZm8gYWxsX2hhcnRzX2lzYV9iaXRtYXA7Cj4g PiArfTsKPiA+ICsKPiA+ICtleHRlcm4gc3RydWN0IHJpc2N2X2lzYV92ZW5kb3JfZXh0X2RhdGFf bGlzdCAqcmlzY3ZfaXNhX3ZlbmRvcl9leHRfbGlzdFtdOwo+ID4gKwo+ID4gK2V4dGVybiBjb25z dCBzaXplX3QgcmlzY3ZfaXNhX3ZlbmRvcl9leHRfbGlzdF9zaXplOwo+ID4gKwo+ID4gKy8qCj4g PiArICogVGhlIGFsdGVybmF0aXZlcyBuZWVkIHNvbWUgd2F5IG9mIGRpc3Rpbmd1aXNoaW5nIGJl dHdlZW4gdmVuZG9yIGV4dGVuc2lvbnMKPiA+ICsgKiBhbmQgZXJyYXRhLiBJbmNyZW1lbnRpbmcg YWxsIG9mIHRoZSB2ZW5kb3IgZXh0ZW5zaW9uIGtleXMgc28gdGhleSBhcmUgYXQKPiA+ICsgKiBs ZWFzdCAweDgwMDAgYWNjb21wbGlzaGVzIHRoYXQuCj4gPiArICovCj4gPiArI2RlZmluZSBSSVND Vl9WRU5ET1JfRVhUX0FMVEVSTkFUSVZFU19CQVNFICAgICAweDgwMDAKPiA+ICsKPiA+ICsjZGVm aW5lIFZFTkRPUl9FWFRfQUxMX0NQVVMgICAgICAgICAgICAgICAgICAgIC0xCj4gPiArCj4gPiAr Ym9vbCBfX3Jpc2N2X2lzYV92ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJsZShpbnQgY3B1LCB1bnNp Z25lZCBsb25nIHZlbmRvciwgdW5zaWduZWQgaW50IGJpdCk7Cj4gPiArI2RlZmluZSByaXNjdl9p c2FfdmVuZG9yX2V4dGVuc2lvbl9hdmFpbGFibGUodmVuZG9yLCBleHQpICAgICAgXAo+ID4gKyAg ICAgICBfX3Jpc2N2X2lzYV92ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJsZShWRU5ET1JfRVhUX0FM TF9DUFVTLCB2ZW5kb3IsIFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfIyNleHQpCj4gPiArCj4gPiArI2VuZGlm IC8qIF9BU01fVkVORE9SX0VYVEVOU0lPTlNfSCAqLwo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlz Y3YvaW5jbHVkZS9hc20vdmVuZG9yX2V4dGVuc2lvbnMvYW5kZXMuaCBiL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vdmVuZG9yX2V4dGVuc2lvbnMvYW5kZXMuaAo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uN2JiMmZjNDM0MzhmCj4gPiAtLS0gL2Rldi9udWxs Cj4gPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3ZlbmRvcl9leHRlbnNpb25zL2FuZGVz LmgKPiA+IEBAIC0wLDAgKzEsMTkgQEAKPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMCAqLwo+ID4gKyNpZm5kZWYgX0FTTV9SSVNDVl9WRU5ET1JfRVhURU5TSU9OU19BTkRF U19ICj4gPiArI2RlZmluZSBfQVNNX1JJU0NWX1ZFTkRPUl9FWFRFTlNJT05TX0FOREVTX0gKPiA+ ICsKPiA+ICsjaW5jbHVkZSA8YXNtL3ZlbmRvcl9leHRlbnNpb25zLmg+Cj4gPiArCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiArCj4gPiArI2RlZmluZSBSSVNDVl9JU0FfVkVORE9S X0VYVF9YQU5ERVNQTVUgICAgICAgICAwCj4gPiArCj4gPiArLyoKPiA+ICsgKiBFeHRlbnNpb24g a2V5cyBzaG91bGQgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIG1heC4KPiA+ICsgKiBJdCBpcyBzYWZl IHRvIGluY3JlbWVudCB0aGlzIHdoZW4gbmVjZXNzYXJ5Lgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUg UklTQ1ZfSVNBX1ZFTkRPUl9FWFRfTUFYX0FOREVTICAgICAgICAgICAgICAgICAzMgo+ID4gKwo+ ID4gK2V4dGVybiBzdHJ1Y3QgcmlzY3ZfaXNhX3ZlbmRvcl9leHRfZGF0YV9saXN0IHJpc2N2X2lz YV92ZW5kb3JfZXh0X2xpc3RfYW5kZXM7Cj4gPiArCj4gPiArI2VuZGlmCj4gPiBkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmls ZQo+ID4gaW5kZXggODFkOTRhOGVlMTBmLi41MzM2MWM1MGZiNDYgMTAwNjQ0Cj4gPiAtLS0gYS9h cmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZQo+ID4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvTWFr ZWZpbGUKPiA+IEBAIC01OCw2ICs1OCw4IEBAIG9iai15ICs9IHJpc2N2X2tzeW1zLm8KPiA+ICBv YmoteSAgKz0gc3RhY2t0cmFjZS5vCj4gPiAgb2JqLXkgICs9IGNhY2hlaW5mby5vCj4gPiAgb2Jq LXkgICs9IHBhdGNoLm8KPiA+ICtvYmoteSAgKz0gdmVuZG9yX2V4dGVuc2lvbnMubwo+ID4gK29i ai15ICArPSB2ZW5kb3JfZXh0ZW5zaW9ucy8KPiA+ICBvYmoteSAgKz0gcHJvYmVzLwo+ID4gIG9i ai15ICArPSB0ZXN0cy8KPiA+ICBvYmotJChDT05GSUdfTU1VKSArPSB2ZHNvLm8gdmRzby8KPiA+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9jcHVmZWF0dXJlLmMgYi9hcmNoL3Jpc2N2 L2tlcm5lbC9jcHVmZWF0dXJlLmMKPiA+IGluZGV4IDNlZDIzNTllYWUzNS4uNjIzYjM1NzZhNmE1 IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvY3B1ZmVhdHVyZS5jCj4gPiArKysg Yi9hcmNoL3Jpc2N2L2tlcm5lbC9jcHVmZWF0dXJlLmMKPiA+IEBAIC0yNCw2ICsyNCw3IEBACj4g PiAgI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KPiA+ICAjaW5jbHVkZSA8YXNtL3NiaS5oPgo+ ID4gICNpbmNsdWRlIDxhc20vdmVjdG9yLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS92ZW5kb3JfZXh0 ZW5zaW9ucy5oPgo+ID4KPiA+ICAjZGVmaW5lIE5VTV9BTFBIQV9FWFRTICgneicgLSAnYScgKyAx KQo+ID4KPiA+IEBAIC0xMDAsMjQgKzEwMSw2IEBAIHN0YXRpYyBib29sIHJpc2N2X2lzYV9leHRl bnNpb25fY2hlY2soaW50IGlkKQo+ID4gICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ICB9Cj4gPgo+ ID4gLSNkZWZpbmUgX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3Vic2V0X2V4dHMs IF9zdWJzZXRfZXh0c19zaXplKSB7ICAgICBcCj4gPiAtICAgICAgIC5uYW1lID0gI19uYW1lLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiA+IC0gICAgICAgLnByb3BlcnR5ID0gI19uYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gLSAgICAgICAuaWQgPSBfaWQsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gPiAtICAgICAgIC5zdWJzZXRfZXh0X2lkcyA9IF9zdWJzZXRfZXh0cywgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+IC0gICAgICAgLnN1YnNldF9leHRfc2l6 ZSA9IF9zdWJzZXRfZXh0c19zaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gLX0KPiA+IC0KPiA+IC0jZGVmaW5lIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBf aWQpIF9SSVNDVl9JU0FfRVhUX0RBVEEoX25hbWUsIF9pZCwgTlVMTCwgMCkKPiA+IC0KPiA+IC0v KiBVc2VkIHRvIGRlY2xhcmUgcHVyZSAibGFzc28iIGV4dGVuc2lvbiAoWmsgZm9yIGluc3RhbmNl KSAqLwo+ID4gLSNkZWZpbmUgX19SSVNDVl9JU0FfRVhUX0JVTkRMRShfbmFtZSwgX2J1bmRsZWRf ZXh0cykgXAo+ID4gLSAgICAgICBfUklTQ1ZfSVNBX0VYVF9EQVRBKF9uYW1lLCBSSVNDVl9JU0Ff RVhUX0lOVkFMSUQsIF9idW5kbGVkX2V4dHMsIEFSUkFZX1NJWkUoX2J1bmRsZWRfZXh0cykpCj4g PiAtCj4gPiAtLyogVXNlZCB0byBkZWNsYXJlIGV4dGVuc2lvbnMgdGhhdCBhcmUgYSBzdXBlcnNl dCBvZiBvdGhlciBleHRlbnNpb25zIChadmJiIGZvciBpbnN0YW5jZSkgKi8KPiA+IC0jZGVmaW5l IF9fUklTQ1ZfSVNBX0VYVF9TVVBFUlNFVChfbmFtZSwgX2lkLCBfc3ViX2V4dHMpIFwKPiA+IC0g ICAgICAgX1JJU0NWX0lTQV9FWFRfREFUQShfbmFtZSwgX2lkLCBfc3ViX2V4dHMsIEFSUkFZX1NJ WkUoX3N1Yl9leHRzKSkKPiA+IC0KPiA+ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHJpc2N2 X3prX2J1bmRsZWRfZXh0c1tdID0gewo+ID4gICAgICAgICBSSVNDVl9JU0FfRVhUX1pCS0IsCj4g PiAgICAgICAgIFJJU0NWX0lTQV9FWFRfWkJLQywKPiA+IEBAIC0zMDQsNyArMjg3LDYgQEAgY29u c3Qgc3RydWN0IHJpc2N2X2lzYV9leHRfZGF0YSByaXNjdl9pc2FfZXh0W10gPSB7Cj4gPiAgICAg ICAgIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKHN2aW52YWwsIFJJU0NWX0lTQV9FWFRfU1ZJTlZBTCks Cj4gPiAgICAgICAgIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKHN2bmFwb3QsIFJJU0NWX0lTQV9FWFRf U1ZOQVBPVCksCj4gPiAgICAgICAgIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKHN2cGJtdCwgUklTQ1Zf SVNBX0VYVF9TVlBCTVQpLAo+ID4gLSAgICAgICBfX1JJU0NWX0lTQV9FWFRfREFUQSh4YW5kZXNw bXUsIFJJU0NWX0lTQV9FWFRfWEFOREVTUE1VKSwKPiA+ICB9Owo+ID4KPiA+ICBjb25zdCBzaXpl X3QgcmlzY3ZfaXNhX2V4dF9jb3VudCA9IEFSUkFZX1NJWkUocmlzY3ZfaXNhX2V4dCk7Cj4gPiBA QCAtMzUxLDYgKzMzMywyMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfcGFyc2VfaXNhX3N0 cmluZyh1bnNpZ25lZCBsb25nICp0aGlzX2h3Y2FwLCBzdHJ1Y3QgcmlzYwo+ID4gICAgICAgICAg ICAgICAgIGJvb2wgZXh0X2xvbmcgPSBmYWxzZSwgZXh0X2VyciA9IGZhbHNlOwo+ID4KPiA+ICAg ICAgICAgICAgICAgICBzd2l0Y2ggKCpleHQpIHsKPiA+ICsgICAgICAgICAgICAgICBjYXNlICd4 JzoKPiA+ICsgICAgICAgICAgICAgICBjYXNlICdYJzoKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGlmIChhY3BpX2Rpc2FibGVkKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcl93YXJuX29uY2UoIlZlbmRvciBleHRlbnNpb25zIGFyZSBpZ25vcmVkIGluIHJpc2N2LGlz YS4gVXNlIHJpc2N2LGlzYS1leHRlbnNpb25zIGluc3RlYWQuIik7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAvKgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogVG8gc2tpcCBhbiBl eHRlbnNpb24sIHdlIGZpbmQgaXRzIGVuZC4KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAq IEFzIG11bHRpLWxldHRlciBleHRlbnNpb25zIG11c3QgYmUgc3BsaXQgZnJvbSBvdGhlciBtdWx0 aS1sZXR0ZXIKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqIGV4dGVuc2lvbnMgd2l0aCBh biAiXyIsIHRoZSBlbmQgb2YgYSBtdWx0aS1sZXR0ZXIgZXh0ZW5zaW9uIHdpbGwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAqIGVpdGhlciBiZSB0aGUgbnVsbCBjaGFyYWN0ZXIgb3IgdGhl ICJfIiBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAqIG11bHRpLWxldHRlciBleHRlbnNpb24uCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg Ki8KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyAqaXNhICYmICppc2EgIT0gJ18n OyArK2lzYSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgZXh0X2VyciA9IHRydWU7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKPiA+ICAgICAgICAgICAgICAgICBjYXNlICdzJzoKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgIC8qCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBXb3JrYXJvdW5k IGZvciBpbnZhbGlkIHNpbmdsZS1sZXR0ZXIgJ3MnICYgJ3UnIChRRU1VKS4KPiA+IEBAIC0zNjYs OCArMzYzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X3BhcnNlX2lzYV9zdHJpbmcodW5z aWduZWQgbG9uZyAqdGhpc19od2NhcCwgc3RydWN0IHJpc2MKPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgIH0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGx0aHJvdWdoOwo+ID4gICAg ICAgICAgICAgICAgIGNhc2UgJ1MnOgo+ID4gLSAgICAgICAgICAgICAgIGNhc2UgJ3gnOgo+ID4g LSAgICAgICAgICAgICAgIGNhc2UgJ1gnOgo+ID4gICAgICAgICAgICAgICAgIGNhc2UgJ3onOgo+ ID4gICAgICAgICAgICAgICAgIGNhc2UgJ1onOgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg LyoKPiA+IEBAIC01NzAsNiArNTY1LDU5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCByaXNjdl9maWxs X2h3Y2FwX2Zyb21faXNhX3N0cmluZyh1bnNpZ25lZCBsb25nICppc2EyaHdjYXApCj4gPiAgICAg ICAgICAgICAgICAgYWNwaV9wdXRfdGFibGUoKHN0cnVjdCBhY3BpX3RhYmxlX2hlYWRlciAqKXJo Y3QpOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHZvaWQgX19pbml0IHJpc2N2X2ZpbGxfY3B1X3Zl bmRvcl9leHQoc3RydWN0IGRldmljZV9ub2RlICpjcHVfbm9kZSwgaW50IGNwdSkKPiA+ICt7Cj4g PiArICAgICAgIGlmICghSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfSVNBX1ZFTkRPUl9FWFQpKQo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCByaXNjdl9pc2FfdmVuZG9yX2V4dF9saXN0X3NpemU7IGkrKykgewo+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCByaXNjdl9pc2FfdmVuZG9yX2V4dF9kYXRhX2xpc3QgKmV4dF9saXN0 ID0gcmlzY3ZfaXNhX3ZlbmRvcl9leHRfbGlzdFtpXTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IGV4dF9saXN0LT5leHRfZGF0YV9jb3VudDsgaisrKSB7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRh IGV4dCA9IGV4dF9saXN0LT5leHRfZGF0YVtqXTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCByaXNjdl9pc2F2ZW5kb3JpbmZvICppc2F2ZW5kb3JpbmZvID0gJmV4dF9saXN0LT5w ZXJfaGFydF9pc2FfYml0bWFwW2NwdV07Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAob2ZfcHJvcGVydHlfbWF0Y2hfc3RyaW5nKGNwdV9ub2RlLCAicmlzY3YsaXNhLWV4dGVu c2lvbnMiLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHQucHJvcGVydHkpIDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAvKgo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICogQXNzdW1lIHRoYXQgc3Vic2V0IGV4dGVuc2lvbnMg YXJlIGFsbCBtZW1iZXJzIG9mIHRoZQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogc2Ft ZSB2ZW5kb3IuCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGlmIChleHQuc3Vic2V0X2V4dF9zaXplKQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGV4dC5zdWJzZXRfZXh0X3NpemU7 IGsrKykKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0 KGV4dC5zdWJzZXRfZXh0X2lkc1trXSwgaXNhdmVuZG9yaW5mby0+aXNhKTsKPiA+ICsKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgIHNldF9iaXQoZXh0LmlkLCBpc2F2ZW5kb3JpbmZvLT5pc2Ep Owo+ID4gKyAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgfQo+ID4gK30KPiA+ICsKPiA+ICtz dGF0aWMgdm9pZCBfX2luaXQgcmlzY3ZfZmlsbF92ZW5kb3JfZXh0X2xpc3QoaW50IGNwdSkKPiA+ ICt7Cj4gPiArICAgICAgIHN0YXRpYyBib29sIGZpcnN0ID0gdHJ1ZTsKPiAKPiBTb3JyeSwgSSBo YWQgYSBoYXJkIHRpbWUgdW5kZXJzdGFuZGluZyB0aGlzIHZhcmlhYmxlLgo+IAoKQXBvbG9naWVz IGZvciB0aGUgZGVsYXllZCByZXNwb25zZS4gV2UgY291bGQgYXNzdW1lIHRoYXQgdGhpcyBmdW5j dGlvbgppcyBhbHdheXMgY2FsbGVkIHdpdGggY3B1IDAsIGJ1dCBpbiBvcmRlciB0byBlbGltaW5h dGUgdGhhdCByZXN0cmljdGlvbgpJIG9wdGVkIGZvciBhIHN0YXRpYyB2YXJpYWJsZS4gIEhvd2V2 ZXIsIEkgZGlkIG5vdCBwcm9wZXJseSBpbXBsZW1lbnQKdGhpcywgSSB3aWxsIGdvIGludG8gbW9y ZSBkZXRhaWwgaW4gdGhlIG5leHQgcmVzcG9uc2UuCgo+ID4gKwo+ID4gKyAgICAgICBpZiAoIUlT X0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9WRU5ET1JfRVhUKSkKPiA+ICsgICAgICAgICAgICAg ICByZXR1cm47Cj4gPiArCj4gPiArICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmlzY3ZfaXNh X3ZlbmRvcl9leHRfbGlzdF9zaXplOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg cmlzY3ZfaXNhX3ZlbmRvcl9leHRfZGF0YV9saXN0ICpleHRfbGlzdCA9IHJpc2N2X2lzYV92ZW5k b3JfZXh0X2xpc3RbaV07Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWYgKGZpcnN0KSB7Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXBfY29weShleHRfbGlzdC0+YWxsX2hhcnRz X2lzYV9iaXRtYXAuaXNhLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXh0X2xpc3QtPnBlcl9oYXJ0X2lzYV9iaXRtYXBbY3B1XS5pc2EsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9SX0VYVF9NQVgpOwo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKPiAKPiBJcyBpdCBpbnRlbmRlZCB0 byBydW4gaW50byB0aGUgZWxzZSBjbGF1c2UgZm9yIGV4dF9saXN0IHN0YXJ0aW5nIGZyb20KPiBp ID0gMT8gSUlVQywgdGhpcyB3b3VsZCBjYXVzZSBhbGwgdmVuZG9yIGV4dGVuc2lvbnMgZm9sbG93 ZWQgYnkgQW5kZXMKPiBvbmUgbm90IGJlaW5nIGRldGVjdGVkIGluIHRoZWlyIHZlbmRvciBleHRf bGlzdCwgYmVjYXVzZSBhbGxfaGFydF9pc2EKPiB3b3VsZCBiZSBhbiBlbXB0eSBiaXRtYXAuCgpU aGFuayB5b3UgZm9yIHBvaW50aW5nIG91dCB0aGlzIGlzc3VlLiBUaGlzIGNvZGUgaXMgc3VwcG9z ZWQgdG8gc2V0IHRoZQphbGxfaGFydHNfaXNhX2JpdG1hcCBmb3IgZWFjaCB2ZW5kb3IgdG8gdGhl IGZpcnN0IGVuY291bnRlcmVkCnBlcl9oYXJ0X2lzYV9iaXRtYXAgZm9yIHRoYXQgdmVuZG9yLiBC dXQgYXMgeW91IHBvaW50IG91dCwgdGhhdCBvbmx5CndvcmtzIGZvciB0aGUgZmlyc3QgdmVuZG9y LiBJIHdpbGwgY2hhbmdlIHRoZSAiZmlyc3QiIHZhcmlhYmxlIHRvIGJlIGFuCmFycmF5IHNvIHRo ZXJlIGNhbiBiZSBhICJmaXJzdCIgdmFyaWFibGUgZm9yIGVhY2ggdmVuZG9yLgoKLSBDaGFybGll Cgo+IAo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBiaXRtYXBfYW5kKGV4dF9saXN0LT5hbGxfaGFydHNfaXNhX2JpdG1hcC5pc2EsCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF9saXN0LT5hbGxfaGFydHNfaXNh X2JpdG1hcC5pc2EsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF9s aXN0LT5wZXJfaGFydF9pc2FfYml0bWFwW2NwdV0uaXNhLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9SX0VYVF9NQVgpOwo+ID4gKyAgICAgICAg ICAgICAgIH0KPiA+ICsgICAgICAgfQo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgaW50IF9faW5p dCByaXNjdl9maWxsX2h3Y2FwX2Zyb21fZXh0X2xpc3QodW5zaWduZWQgbG9uZyAqaXNhMmh3Y2Fw KQo+ID4gIHsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGNwdTsKPiA+IEBAIC02MTMsNiArNjYx LDggQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3ZfZmlsbF9od2NhcF9mcm9tX2V4dF9saXN0KHVu c2lnbmVkIGxvbmcgKmlzYTJod2NhcCkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+ ICAgICAgICAgICAgICAgICB9Cj4gPgo+ID4gKyAgICAgICAgICAgICAgIHJpc2N2X2ZpbGxfY3B1 X3ZlbmRvcl9leHQoY3B1X25vZGUsIGNwdSk7Cj4gPiArCj4gPiAgICAgICAgICAgICAgICAgb2Zf bm9kZV9wdXQoY3B1X25vZGUpOwo+ID4KPiA+ICAgICAgICAgICAgICAgICAvKgo+ID4gQEAgLTYy OCw2ICs2NzgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9maWxsX2h3Y2FwX2Zyb21fZXh0 X2xpc3QodW5zaWduZWQgbG9uZyAqaXNhMmh3Y2FwKQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgYml0bWFwX2NvcHkocmlzY3ZfaXNhLCBpc2FpbmZvLT5pc2EsIFJJU0NWX0lTQV9FWFRfTUFY KTsKPiA+ICAgICAgICAgICAgICAgICBlbHNlCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBi aXRtYXBfYW5kKHJpc2N2X2lzYSwgcmlzY3ZfaXNhLCBpc2FpbmZvLT5pc2EsIFJJU0NWX0lTQV9F WFRfTUFYKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICByaXNjdl9maWxsX3ZlbmRvcl9leHRf bGlzdChjcHUpOwo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICBpZiAoYml0bWFwX2VtcHR5 KHJpc2N2X2lzYSwgUklTQ1ZfSVNBX0VYVF9NQVgpKQo+ID4gQEAgLTc2NCwyOCArODE2LDQ1IEBA IHZvaWQgX19pbml0X29yX21vZHVsZSByaXNjdl9jcHVmZWF0dXJlX3BhdGNoX2Z1bmMoc3RydWN0 IGFsdF9lbnRyeSAqYmVnaW4sCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3QgYWx0X2VudHJ5ICph bHQ7Cj4gPiAgICAgICAgIHZvaWQgKm9sZHB0ciwgKmFsdHB0cjsKPiA+IC0gICAgICAgdTE2IGlk LCB2YWx1ZTsKPiA+ICsgICAgICAgdTE2IGlkLCB2YWx1ZSwgdmVuZG9yOwo+ID4KPiA+ICAgICAg ICAgaWYgKHN0YWdlID09IFJJU0NWX0FMVEVSTkFUSVZFU19FQVJMWV9CT09UKQo+ID4gICAgICAg ICAgICAgICAgIHJldHVybjsKPiA+Cj4gPiAgICAgICAgIGZvciAoYWx0ID0gYmVnaW47IGFsdCA8 IGVuZDsgYWx0KyspIHsKPiA+IC0gICAgICAgICAgICAgICBpZiAoYWx0LT52ZW5kb3JfaWQgIT0g MCkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gLQo+ID4gICAgICAg ICAgICAgICAgIGlkID0gUEFUQ0hfSURfQ1BVRkVBVFVSRV9JRChhbHQtPnBhdGNoX2lkKTsKPiA+ ICsgICAgICAgICAgICAgICB2ZW5kb3IgPSBQQVRDSF9JRF9DUFVGRUFUVVJFX0lEKGFsdC0+dmVu ZG9yX2lkKTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgaWYgKGlkID49IFJJU0NWX0lTQV9FWFRf TUFYKSB7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBXQVJOKDEsICJUaGlzIGV4dGVuc2lv biBpZDolZCBpcyBub3QgaW4gSVNBIGV4dGVuc2lvbiBsaXN0IiwgaWQpOwo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiAtICAgICAgICAgICAgICAgfQo+ID4gKyAgICAg ICAgICAgICAgIC8qCj4gPiArICAgICAgICAgICAgICAgICogQW55IGFsdGVybmF0aXZlIHdpdGgg YSBwYXRjaF9pZCB0aGF0IGlzIGxlc3MgdGhhbgo+ID4gKyAgICAgICAgICAgICAgICAqIFJJU0NW X0lTQV9FWFRfTUFYIGlzIGludGVycHJldGVkIGFzIGEgc3RhbmRhcmQgZXh0ZW5zaW9uLgo+ID4g KyAgICAgICAgICAgICAgICAqCj4gPiArICAgICAgICAgICAgICAgICogQW55IGFsdGVybmF0aXZl IHdpdGggcGF0Y2hfaWQgdGhhdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwKPiA+ICsgICAgICAg ICAgICAgICAgKiB0byBSSVNDVl9WRU5ET1JfRVhUX0FMVEVSTkFUSVZFU19CQVNFIGlzIGludGVy cHJldGVkIGFzIGEKPiA+ICsgICAgICAgICAgICAgICAgKiB2ZW5kb3IgZXh0ZW5zaW9uLgo+ID4g KyAgICAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAgICAgICAgIGlmIChpZCA8IFJJU0NWX0lT QV9FWFRfTUFYKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAvKgo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICogVGhpcyBwYXRjaCBzaG91bGQgYmUgdHJlYXRlZCBhcyBlcnJhdGEg c28gc2tpcAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogcHJvY2Vzc2luZyBoZXJlLgo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAoYWx0LT52ZW5kb3JfaWQgIT0gMCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gPgo+ID4gLSAgICAgICAgICAgICAgIGlmICghX19yaXNjdl9pc2Ff ZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBpZCkpCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghX19yaXNjdl9pc2Ff ZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBpZCkpCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+ID4KPiA+IC0gICAgICAgICAgICAgICB2YWx1ZSA9IFBBVENI X0lEX0NQVUZFQVRVUkVfVkFMVUUoYWx0LT5wYXRjaF9pZCk7Cj4gPiAtICAgICAgICAgICAgICAg aWYgKCFyaXNjdl9jcHVmZWF0dXJlX3BhdGNoX2NoZWNrKGlkLCB2YWx1ZSkpCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZSA9IFBBVENIX0lEX0NQVUZFQVRVUkVfVkFMVUUoYWx0LT5w YXRjaF9pZCk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJpc2N2X2NwdWZlYXR1 cmVfcGF0Y2hfY2hlY2soaWQsIHZhbHVlKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpZCA+PSBSSVND Vl9WRU5ET1JfRVhUX0FMVEVSTkFUSVZFU19CQVNFKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBpZiAoIV9fcmlzY3ZfaXNhX3ZlbmRvcl9leHRlbnNpb25fYXZhaWxhYmxlKFZFTkRPUl9F WFRfQUxMX0NQVVMsIHZlbmRvciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgLSBSSVNDVl9WRU5ET1JfRVhU X0FMVEVSTkFUSVZFU19CQVNFKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIFdBUk4oMSwgIlRoaXMgZXh0ZW5zaW9uIGlkOiVkIGlzIG5vdCBpbiBJU0EgZXh0 ZW5zaW9uIGxpc3QiLCBpZCk7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK PiA+ICsgICAgICAgICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAgICAgICAgIG9sZHB0ciA9IEFM VF9PTERfUFRSKGFsdCk7Cj4gPiAgICAgICAgICAgICAgICAgYWx0cHRyID0gQUxUX0FMVF9QVFIo YWx0KTsKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC92ZW5kb3JfZXh0ZW5zaW9u cy5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmVuZG9yX2V4dGVuc2lvbnMuYwo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjZjMWU3YjVkMzRiCj4gPiAtLS0g L2Rldi9udWxsCj4gPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC92ZW5kb3JfZXh0ZW5zaW9ucy5j Cj4gPiBAQCAtMCwwICsxLDU2IEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb25seQo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IDIwMjQgUml2b3MsIEluYwo+ID4g KyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxhc20vdmVuZG9yaWRfbGlzdC5oPgo+ID4gKyNpbmNs dWRlIDxhc20vdmVuZG9yX2V4dGVuc2lvbnMuaD4KPiA+ICsjaW5jbHVkZSA8YXNtL3ZlbmRvcl9l eHRlbnNpb25zL2FuZGVzLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L2FycmF5X3NpemUu aD4KPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiA+ICsKPiA+ICtzdHJ1Y3QgcmlzY3Zf aXNhX3ZlbmRvcl9leHRfZGF0YV9saXN0ICpyaXNjdl9pc2FfdmVuZG9yX2V4dF9saXN0W10gPSB7 Cj4gPiArI2lmZGVmIENPTkZJR19SSVNDVl9JU0FfVkVORE9SX0VYVF9BTkRFUwo+ID4gKyAgICAg ICAmcmlzY3ZfaXNhX3ZlbmRvcl9leHRfbGlzdF9hbmRlcywKPiA+ICsjZW5kaWYKPiA+ICt9Owo+ ID4gKwo+ID4gK2NvbnN0IHNpemVfdCByaXNjdl9pc2FfdmVuZG9yX2V4dF9saXN0X3NpemUgPSBB UlJBWV9TSVpFKHJpc2N2X2lzYV92ZW5kb3JfZXh0X2xpc3QpOwo+ID4gKwo+ID4gKy8qKgo+ID4g KyAqIF9fcmlzY3ZfaXNhX3ZlbmRvcl9leHRlbnNpb25fYXZhaWxhYmxlKCkgLSBDaGVjayB3aGV0 aGVyIGdpdmVuIHZlbmRvcgo+ID4gKyAqIGV4dGVuc2lvbiBpcyBhdmFpbGFibGUgb3Igbm90Lgo+ ID4gKyAqCj4gPiArICogQGNwdTogY2hlY2sgaWYgZXh0ZW5zaW9uIGlzIGF2YWlsYWJsZSBvbiB0 aGlzIGNwdQo+ID4gKyAqIEB2ZW5kb3I6IHZlbmRvciB0aGF0IHRoZSBleHRlbnNpb24gaXMgYSBt ZW1iZXIgb2YKPiA+ICsgKiBAYml0OiBiaXQgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZXh0ZW5z aW9uCj4gPiArICogUmV0dXJuOiB0cnVlIG9yIGZhbHNlCj4gPiArICoKPiA+ICsgKiBOT1RFOiBX aGVuIGNwdSBpcyAtMSwgd2lsbCBjaGVjayBpZiBleHRlbnNpb24gaXMgYXZhaWxhYmxlIG9uIGFs bCBjcHVzCj4gPiArICovCj4gPiArYm9vbCBfX3Jpc2N2X2lzYV92ZW5kb3JfZXh0ZW5zaW9uX2F2 YWlsYWJsZShpbnQgY3B1LCB1bnNpZ25lZCBsb25nIHZlbmRvciwgdW5zaWduZWQgaW50IGJpdCkK PiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCByaXNjdl9pc2F2ZW5kb3JpbmZvICpibWFwOwo+ID4g KyAgICAgICBzdHJ1Y3QgcmlzY3ZfaXNhdmVuZG9yaW5mbyAqY3B1X2JtYXA7Cj4gPiArCj4gPiAr ICAgICAgIHN3aXRjaCAodmVuZG9yKSB7Cj4gPiArICAgICAgICNpZmRlZiBDT05GSUdfUklTQ1Zf SVNBX1ZFTkRPUl9FWFRfQU5ERVMKPiA+ICsgICAgICAgY2FzZSBBTkRFU19WRU5ET1JfSUQ6Cj4g PiArICAgICAgICAgICAgICAgYm1hcCA9ICZyaXNjdl9pc2FfdmVuZG9yX2V4dF9saXN0X2FuZGVz LmFsbF9oYXJ0c19pc2FfYml0bWFwOwo+ID4gKyAgICAgICAgICAgICAgIGNwdV9ibWFwID0gJnJp c2N2X2lzYV92ZW5kb3JfZXh0X2xpc3RfYW5kZXMucGVyX2hhcnRfaXNhX2JpdG1hcFtjcHVdOwo+ ID4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAjZW5kaWYKPiA+ICsgICAgICAg ZGVmYXVsdDoKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiArICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAgaWYgKGNwdSAhPSAtMSkKPiA+ICsgICAgICAgICAgICAgICBibWFw ID0gJmNwdV9ibWFwW2NwdV07Cj4gPiArCj4gPiArICAgICAgIGlmIChiaXQgPj0gUklTQ1ZfSVNB X1ZFTkRPUl9FWFRfTUFYKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsK PiA+ICsgICAgICAgcmV0dXJuIHRlc3RfYml0KGJpdCwgYm1hcC0+aXNhKSA/IHRydWUgOiBmYWxz ZTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwoX19yaXNjdl9pc2FfdmVuZG9yX2V4dGVu c2lvbl9hdmFpbGFibGUpOwo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3ZlbmRv cl9leHRlbnNpb25zL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmVuZG9yX2V4dGVuc2lv bnMvTWFrZWZpbGUKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjZhNjFhZWQ5NDRmMQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvYXJjaC9yaXNjdi9r ZXJuZWwvdmVuZG9yX2V4dGVuc2lvbnMvTWFrZWZpbGUKPiA+IEBAIC0wLDAgKzEsMyBAQAo+ID4g KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gKwo+ID4gK29iai0k KENPTkZJR19SSVNDVl9JU0FfVkVORE9SX0VYVF9BTkRFUykgICAgICAgKz0gYW5kZXMubwo+ID4g ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3ZlbmRvcl9leHRlbnNpb25zL2FuZGVzLmMg Yi9hcmNoL3Jpc2N2L2tlcm5lbC92ZW5kb3JfZXh0ZW5zaW9ucy9hbmRlcy5jCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lYzY4OGM4ODQ1NmEKPiA+IC0t LSAvZGV2L251bGwKPiA+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL3ZlbmRvcl9leHRlbnNpb25z L2FuZGVzLmMKPiA+IEBAIC0wLDAgKzEsMTggQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5Cj4gPiArCj4gPiArI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+ Cj4gPiArI2luY2x1ZGUgPGFzbS92ZW5kb3JfZXh0ZW5zaW9ucy5oPgo+ID4gKyNpbmNsdWRlIDxh c20vdmVuZG9yX2V4dGVuc2lvbnMvYW5kZXMuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgv YXJyYXlfc2l6ZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ID4gKwo+ID4gKy8q IEFsbCBBbmRlcyB2ZW5kb3IgZXh0ZW5zaW9ucyBzdXBwb3J0ZWQgaW4gTGludXggKi8KPiA+ICtj b25zdCBzdHJ1Y3QgcmlzY3ZfaXNhX2V4dF9kYXRhIHJpc2N2X2lzYV92ZW5kb3JfZXh0X2FuZGVz W10gPSB7Cj4gPiArICAgICAgIF9fUklTQ1ZfSVNBX0VYVF9EQVRBKHhhbmRlc3BtdSwgUklTQ1Zf SVNBX1ZFTkRPUl9FWFRfWEFOREVTUE1VKSwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCByaXNj dl9pc2FfdmVuZG9yX2V4dF9kYXRhX2xpc3QgcmlzY3ZfaXNhX3ZlbmRvcl9leHRfbGlzdF9hbmRl cyA9IHsKPiA+ICsgICAgICAgLmV4dF9kYXRhX2NvdW50ID0gQVJSQVlfU0laRShyaXNjdl9pc2Ff dmVuZG9yX2V4dF9hbmRlcyksCj4gPiArICAgICAgIC5leHRfZGF0YSA9IHJpc2N2X2lzYV92ZW5k b3JfZXh0X2FuZGVzLAo+ID4gK307Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL3Jpc2N2 X3BtdV9zYmkuYyBiL2RyaXZlcnMvcGVyZi9yaXNjdl9wbXVfc2JpLmMKPiA+IGluZGV4IDhjYmU2 ZTVmOWMzOS4uNmE1MzY0OTEwY2I3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9wZXJmL3Jpc2N2 X3BtdV9zYmkuYwo+ID4gKysrIGIvZHJpdmVycy9wZXJmL3Jpc2N2X3BtdV9zYmkuYwo+ID4gQEAg LTI0LDYgKzI0LDggQEAKPiA+ICAjaW5jbHVkZSA8YXNtL2VycmF0YV9saXN0Lmg+Cj4gPiAgI2lu Y2x1ZGUgPGFzbS9zYmkuaD4KPiA+ICAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KPiA+ICsj aW5jbHVkZSA8YXNtL3ZlbmRvcl9leHRlbnNpb25zLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS92ZW5k b3JfZXh0ZW5zaW9ucy9hbmRlcy5oPgo+ID4KPiA+ICAjZGVmaW5lIEFMVF9TQklfUE1VX09WRVJG TE9XKF9fb3ZsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICBhc20g dm9sYXRpbGUoQUxURVJOQVRJVkVfMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiA+IEBAIC0zMiw3ICszNCw4IEBAIGFzbSB2b2xhdGlsZShBTFRFUk5BVElW RV8yKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAg ICAgICAgICAgICAgVEhFQURfVkVORE9SX0lELCBFUlJBVEFfVEhFQURfUE1VLCAgICAgICAgICAg ICAgICAgICAgICBcCj4gPiAgICAgICAgICAgICAgICAgQ09ORklHX0VSUkFUQV9USEVBRF9QTVUs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAgICAgICJjc3JyICUwLCAi IF9fc3RyaW5naWZ5KEFOREVTX0NTUl9TQ09VTlRFUk9GKSwgICAgICAgICAgICAgICAgICBcCj4g PiAtICAgICAgICAgICAgICAgMCwgUklTQ1ZfSVNBX0VYVF9YQU5ERVNQTVUsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgICAgICAgICAgQU5ERVNfVkVORE9SX0lELCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgICAgICAg ICAgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWEFOREVTUE1VICsgUklTQ1ZfVkVORE9SX0VYVF9BTFRF Uk5BVElWRVNfQkFTRSwgXAo+ID4gICAgICAgICAgICAgICAgIENPTkZJR19BTkRFU19DVVNUT01f UE1VKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICA6ICI9ciIg KF9fb3ZsKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gICAgICAgICA6ICJtZW1vcnkiKQo+ID4gQEAgLTQxLDcgKzQ0LDggQEAgYXNtIHZvbGF0 aWxlKEFMVEVSTkFUSVZFXzIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiA+ICBhc20gdm9sYXRpbGUoQUxURVJOQVRJVkUoICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICAgICAgICAgImNzcmMgIiBfX3N0cmluZ2lm eShDU1JfSVApICIsICUwXG5cdCIsICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICAgICAg ICAgImNzcmMgIiBfX3N0cmluZ2lmeShBTkRFU19DU1JfU0xJUCkgIiwgJTBcblx0IiwgICAgICAg ICAgICAgICAgIFwKPiA+IC0gICAgICAgICAgICAgICAwLCBSSVNDVl9JU0FfRVhUX1hBTkRFU1BN VSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICsgICAgICAgICAgICAgICBBTkRF U19WRU5ET1JfSUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ ICsgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9SX0VYVF9YQU5ERVNQTVUgKyBSSVNDVl9W RU5ET1JfRVhUX0FMVEVSTkFUSVZFU19CQVNFLCBcCj4gPiAgICAgICAgICAgICAgICAgQ09ORklH X0FOREVTX0NVU1RPTV9QTVUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAg ICAgICAgIDogOiAiciIoX19pcnFfbWFzaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gPiAgICAgICAgIDogIm1lbW9yeSIpCj4gPiBAQCAtODM3LDcgKzg0 MSw3IEBAIHN0YXRpYyBpbnQgcG11X3NiaV9zZXR1cF9pcnFzKHN0cnVjdCByaXNjdl9wbXUgKnBt dSwgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRlCj4gPiAgICAgICAgICAgICAgICAgICAgcmlz Y3ZfY2FjaGVkX21pbXBpZCgwKSA9PSAwKSB7Cj4gPiAgICAgICAgICAgICAgICAgcmlzY3ZfcG11 X2lycV9udW0gPSBUSEVBRF9DOVhYX1JWX0lSUV9QTVU7Cj4gPiAgICAgICAgICAgICAgICAgcmlz Y3ZfcG11X3VzZV9pcnEgPSB0cnVlOwo+ID4gLSAgICAgICB9IGVsc2UgaWYgKHJpc2N2X2lzYV9l eHRlbnNpb25fYXZhaWxhYmxlKE5VTEwsIFhBTkRFU1BNVSkgJiYKPiA+ICsgICAgICAgfSBlbHNl IGlmIChyaXNjdl9pc2FfdmVuZG9yX2V4dGVuc2lvbl9hdmFpbGFibGUoQU5ERVNfVkVORE9SX0lE LCBYQU5ERVNQTVUpICYmCj4gPiAgICAgICAgICAgICAgICAgICAgSVNfRU5BQkxFRChDT05GSUdf QU5ERVNfQ1VTVE9NX1BNVSkpIHsKPiA+ICAgICAgICAgICAgICAgICByaXNjdl9wbXVfaXJxX251 bSA9IEFOREVTX1NMSV9DQVVTRV9CQVNFICsgQU5ERVNfUlZfSVJRX1BNT1ZJOwo+ID4gICAgICAg ICAgICAgICAgIHJpc2N2X3BtdV91c2VfaXJxID0gdHJ1ZTsKPiA+Cj4gPiAtLQo+ID4gMi40NC4w Cj4gPgo+ID4KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPiBsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKPiA+IGxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtcmlzY3YKPiAKPiBDaGVlcnMsCj4gQW5keQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4 LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=