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 8C164D35662 for ; Wed, 28 Jan 2026 08:04:48 +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: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=dmETWNA2tI8/24UDhG7GKLgjtvk15ob+42FY7bG29aw=; b=AkQPuTZIHLjBU5 LYKNaeyGvgnf8YPNLQRlXndyVhiaOscRPHdls2iWob76xuXGFa7OkGEBSCpFKP2khUAQNUmt/T5xb j5XBuG1Iwoc+6PwGkawq1ojje0sZr5tidd9OGZ89R5BwmL1cijBcuqgTIMyCEyoTkh8WO0hCSms93 oJw/UQRGs2m0C01XbXIasm8fxeO0zByj7SiyAfgs22PyZT/DYQ0r02IJNoRKe6oLWZWGsJofrkRXF MdwnwOkCFXEuVqGFCXFXmdqsX92Z34pov7ugJoHp8IXiNFTEDLDQiUbUHiGb/+1VVV/YVViKtqgqx 4Gz8mJfQYxVbQE1vR1Wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vl0XR-0000000FdfO-1z8J; Wed, 28 Jan 2026 08:04:33 +0000 Received: from mgamail.intel.com ([198.175.65.13]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vl0XO-0000000FdeQ-1JGC; Wed, 28 Jan 2026 08:04:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769587471; x=1801123471; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=GLHR9Oji25H8PWtTnK/W4m8foIL9bmCXlju4UvxDK6A=; b=XOUrh5s/EqvnxL7iC6HgzDWqATzlm8SlMVx2grsqHCo54eNvpB/sHPCr D07oYffKIHng/DmWjw9A8x9JoOLufR3aXazQYbgIQQgYJqgUOrMAfLWgP efWPImJbklZ7Bj0CDAJ2c+t2uaQl6le+pdhO2+hgfS3lKR5LPqSi7if8X PYKQqGzhL0G57vQriZJ4iuH08wEze+v8dAiSQ2yJrHZMfSl2BdbZD7xsy lYHgViR+pOotqO63rip1ux3k34HYycpX+Fkm2KK+m0e+WrwWyLozBqTho ct2x3qtGYtmiCgNvxwJuCYaejeSW4Rb3BGFLRUeaGz+a6IZANZJyUT/EZ Q==; X-CSE-ConnectionGUID: W6TU8WN7ScicO/rT427VNg== X-CSE-MsgGUID: xwuCbSTRQT2KNEDjWcuSpA== X-IronPort-AV: E=McAfee;i="6800,10657,11684"; a="81902897" X-IronPort-AV: E=Sophos;i="6.21,258,1763452800"; d="scan'208";a="81902897" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2026 00:04:29 -0800 X-CSE-ConnectionGUID: r47TGrPESxueej+cbjruFQ== X-CSE-MsgGUID: XJnnVpXQTRON3gjVxjVkYQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,258,1763452800"; d="scan'208";a="207820384" Received: from gliu7x-mobl.ccr.corp.intel.com (HELO [10.238.3.150]) ([10.238.3.150]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2026 00:04:23 -0800 Message-ID: Date: Wed, 28 Jan 2026 16:04:20 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [Patch v2 2/3] perf regs: Remove __weak attributive arch__xxx_reg_mask() functions To: Ian Rogers Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Adrian Hunter , Alexander Shishkin , John Garry , Will Deacon , James Clark , Mike Leach , Guo Ren , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Zide Chen , Falcon Thomas , Dapeng Mi , Xudong Hao References: <20260127070259.2720468-1-dapeng1.mi@linux.intel.com> <20260127070259.2720468-3-dapeng1.mi@linux.intel.com> <9f88ff32-c699-4587-885e-316a914a5d78@linux.intel.com> Content-Language: en-US From: "Mi, Dapeng" In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260128_000430_487404_00802A62 X-CRM114-Status: GOOD ( 16.49 ) 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 Ck9uIDEvMjgvMjAyNiAzOjMyIFBNLCBJYW4gUm9nZXJzIHdyb3RlOgo+IE9uIFR1ZSwgSmFuIDI3 LCAyMDI2IGF0IDY6MDPigK9QTSBNaSwgRGFwZW5nIDxkYXBlbmcxLm1pQGxpbnV4LmludGVsLmNv bT4gd3JvdGU6Cj4+Cj4+IE9uIDEvMjgvMjAyNiAxMjo0NiBBTSwgSWFuIFJvZ2VycyB3cm90ZToK Pj4+IE9uIE1vbiwgSmFuIDI2LCAyMDI2IGF0IDExOjA24oCvUE0gRGFwZW5nIE1pIDxkYXBlbmcx Lm1pQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+Pj4gQ3VycmVudGx5LCBzb21lIGFyY2hpdGVj dHVyZS1zcGVjaWZpYyBwZXJmLXJlZ3MgZnVuY3Rpb25zLCBzdWNoIGFzCj4+Pj4gYXJjaF9faW50 cl9yZWdfbWFzaygpIGFuZCBhcmNoX191c2VyX3JlZ19tYXNrKCksIGFyZSBkZWZpbmVkIHdpdGgg dGhlCj4+Pj4gX193ZWFrIGF0dHJpYnV0ZS4gVGhpcyBhcHByb2FjaCBlbnN1cmVzIHRoYXQgb25s eSBmdW5jdGlvbnMgbWF0Y2hpbmcKPj4+PiB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBidWlsZC9y dW4gaG9zdCBhcmUgY29tcGlsZWQgYW5kIGV4ZWN1dGVkLAo+Pj4+IHJlZHVjaW5nIGJ1aWxkIHRp bWUgYW5kIGJpbmFyeSBzaXplLgo+Pj4+Cj4+Pj4gSG93ZXZlciwgdGhpcyBfX3dlYWsgYXR0cmli dXRlIHJlc3RyaWN0cyB0aGVzZSBmdW5jdGlvbnMgdG8gYmUgY2FsbGVkCj4+Pj4gb25seSBvbiB0 aGUgc2FtZSBhcmNoaXRlY3R1cmUsIHByZXZlbnRpbmcgY3Jvc3MtYXJjaGl0ZWN0dXJlCj4+Pj4g ZnVuY3Rpb25hbGl0eS4gRm9yIGV4YW1wbGUsIGEgcGVyZi5kYXRhIGZpbGUgY2FwdHVyZWQgb24g eDg2IGNhbm5vdCBiZQo+Pj4+IHBhcnNlZCBvbiBhbiBBUk0gcGxhdGZvcm0uCj4+Pj4KPj4+PiBU byBhZGRyZXNzIHRoaXMgbGltaXRhdGlvbiwgdGhpcyBwYXRjaCByZW1vdmVzIHRoZSBfX3dlYWsg YXR0cmlidXRlIGZyb20KPj4+PiB0aGVzZSBwZXJmLXJlZ3MgZnVuY3Rpb25zLiBUaGUgYXJjaGl0 ZWN0dXJlLXNwZWNpZmljIGNvZGUgaXMgbW92ZWQgZnJvbQo+Pj4+IHRoZSBhcmNoLyBkaXJlY3Rv cnkgdG8gdGhlIHV0aWwvcGVyZi1yZWdzLWFyY2gvIGRpcmVjdG9yeS4gVGhlCj4+Pj4gYXBwcm9w cmlhdGUgYXJjaGl0ZWN0dXJhbCBmdW5jdGlvbnMgYXJlIHRoZW4gY2FsbGVkIGJhc2VkIG9uIHRo ZSBFTV9IT1NULgo+Pj4+Cj4+Pj4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBpbnRlbmRlZC4K Pj4+Pgo+Pj4+IFN1Z2dlc3RlZC1ieTogSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgo+ Pj4+IFNpZ25lZC1vZmYtYnk6IERhcGVuZyBNaSA8ZGFwZW5nMS5taUBsaW51eC5pbnRlbC5jb20+ Cj4+Pj4gLS0tCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9hcm0vdXRpbC9CdWlsZCAgICAgICAgICAg ICAgICB8ICAyIC0KPj4+PiAgdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL3BlcmZfcmVncy5jICAg ICAgICAgIHwgMTMgLS0tCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9hcm02NC91dGlsL3BlcmZfcmVn cy5jICAgICAgICB8IDM2IC0tLS0tLS0tLQo+Pj4+ICB0b29scy9wZXJmL2FyY2gvY3NreS9CdWls ZCAgICAgICAgICAgICAgICAgICAgfCAgMSAtCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9jc2t5L3V0 aWwvQnVpbGQgICAgICAgICAgICAgICB8ICAxIC0KPj4+PiAgdG9vbHMvcGVyZi9hcmNoL2Nza3kv dXRpbC9wZXJmX3JlZ3MuYyAgICAgICAgIHwgMTMgLS0tCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9s b29uZ2FyY2gvdXRpbC9CdWlsZCAgICAgICAgICB8ICAxIC0KPj4+PiAgdG9vbHMvcGVyZi9hcmNo L2xvb25nYXJjaC91dGlsL3BlcmZfcmVncy5jICAgIHwgMTMgLS0tCj4+Pj4gIHRvb2xzL3BlcmYv YXJjaC9taXBzL3V0aWwvQnVpbGQgICAgICAgICAgICAgICB8ICAxIC0KPj4+PiAgdG9vbHMvcGVy Zi9hcmNoL21pcHMvdXRpbC9wZXJmX3JlZ3MuYyAgICAgICAgIHwgMTMgLS0tCj4+Pj4gIHRvb2xz L3BlcmYvYXJjaC9wb3dlcnBjL3V0aWwvcGVyZl9yZWdzLmMgICAgICB8IDQ3IC0tLS0tLS0tLS0t Cj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9yaXNjdi9pbmNsdWRlL3BlcmZfcmVncy5oICAgICB8ICA3 ICstCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9yaXNjdi91dGlsL0J1aWxkICAgICAgICAgICAgICB8 ICAxIC0KPj4+PiAgdG9vbHMvcGVyZi9hcmNoL3Jpc2N2L3V0aWwvcGVyZl9yZWdzLmMgICAgICAg IHwgMTMgLS0tCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC9zMzkwL3V0aWwvQnVpbGQgICAgICAgICAg ICAgICB8ICAxIC0KPj4+PiAgdG9vbHMvcGVyZi9hcmNoL3MzOTAvdXRpbC9wZXJmX3JlZ3MuYyAg ICAgICAgIHwgMTMgLS0tCj4+Pj4gIHRvb2xzL3BlcmYvYXJjaC94ODYvdXRpbC9wZXJmX3JlZ3Mu YyAgICAgICAgICB8IDQ4IC0tLS0tLS0tLS0tCj4+Pj4gIHRvb2xzL3BlcmYvdXRpbC9ldnNlbC5j ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCj4+Pj4gIHRvb2xzL3BlcmYvdXRpbC9wYXJz ZS1yZWdzLW9wdGlvbnMuYyAgICAgICAgICB8ICAyICstCj4+Pj4gIC4uLi91dGlsL3BlcmYtcmVn cy1hcmNoL3BlcmZfcmVnc19hYXJjaDY0LmMgICB8IDUxICsrKysrKysrKysrLQo+Pj4+ICAuLi4v cGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19hcm0uYyAgfCAgNyArLQo+Pj4+ICAu Li4vcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19jc2t5LmMgfCAgNyArLQo+Pj4+ ICAuLi4vdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfbG9vbmdhcmNoLmMgfCAgNyArLQo+ Pj4+ICAuLi4vcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19taXBzLmMgfCAgNyAr LQo+Pj4+ICAuLi4vdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfcG93ZXJwYy5jICAgfCA3 MCArKysrKysrKysrKysrKystCj4+Pj4gIC4uLi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVn c19yaXNjdi5jICAgICB8ICA3ICstCj4+Pj4gIC4uLi9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gv cGVyZl9yZWdzX3MzOTAuYyB8ICA3ICstCj4+Pj4gIC4uLi9wZXJmL3V0aWwvcGVyZi1yZWdzLWFy Y2gvcGVyZl9yZWdzX3g4Ni5jICB8IDYwICsrKysrKysrKysrKystCj4+Pj4gIHRvb2xzL3BlcmYv dXRpbC9wZXJmX3JlZ3MuYyAgICAgICAgICAgICAgICAgICB8IDgwICsrKysrKysrKysrKysrKysr Ky0KPj4+PiAgdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5oICAgICAgICAgICAgICAgICAgIHwg MjIgKysrKy0KPj4+PiAgMzAgZmlsZXMgY2hhbmdlZCwgMzE5IGluc2VydGlvbnMoKyksIDIzNiBk ZWxldGlvbnMoLSkKPj4+PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9hcm0v dXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9hcmNo L2Nza3kvQnVpbGQKPj4+PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9jc2t5 L3V0aWwvQnVpbGQKPj4+PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9jc2t5 L3V0aWwvcGVyZl9yZWdzLmMKPj4+PiAgZGVsZXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJj aC9sb29uZ2FyY2gvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICBkZWxldGUgbW9kZSAxMDA2NDQgdG9v bHMvcGVyZi9hcmNoL21pcHMvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICBkZWxldGUgbW9kZSAxMDA2 NDQgdG9vbHMvcGVyZi9hcmNoL3Jpc2N2L3V0aWwvcGVyZl9yZWdzLmMKPj4+PiAgZGVsZXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL3BlcmYvYXJjaC9zMzkwL3V0aWwvcGVyZl9yZWdzLmMKPj4+IDggZmls ZXMgZGVsZXRlZCBpcyBwcmV0dHkgYXdlc29tZSBmcm9tIG15IHBvdi4gVGhhbmtzIQo+PiBZZWFo LiBCZXNpZGVzIHRoZSByZWR1Y3Rpb24gb2YgZmlsZXMsIGFub3RoZXIgYmVuZWZpdCAod2hpY2gg Y291bGQgYmUgbW9yZQo+PiBpbXBvcnRhbnQpIGlzIHRoYXQgYWxsIHBlcmYtcmVncyByZWxhdGVk IGFyY2gtc3BlY2lmaWMgY29kZSBjdXJyZW50bHkgYXJlCj4+IGluIGEgc2FtZSBwbGFjZS4KPj4K Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL0J1aWxkIGIvdG9v bHMvcGVyZi9hcmNoL2FybS91dGlsL0J1aWxkCj4+Pj4gaW5kZXggMzI5MWY4OTNiOTQzLi5iOTRi ZjNjNTI3OWEgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL0J1aWxk Cj4+Pj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL0J1aWxkCj4+Pj4gQEAgLTEsNSAr MSwzIEBACj4+Pj4gLXBlcmYtdXRpbC15ICs9IHBlcmZfcmVncy5vCj4+Pj4gLQo+Pj4+ICBwZXJm LXV0aWwtJChDT05GSUdfTE9DQUxfTElCVU5XSU5EKSAgICArPSB1bndpbmQtbGlidW53aW5kLm8K Pj4+Pgo+Pj4+ICBwZXJmLXV0aWwteSArPSBwbXUubyBhdXh0cmFjZS5vIGNzLWV0bS5vCj4+Pj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9hcm0vdXRpbC9wZXJmX3JlZ3MuYyBiL3Rvb2xz L3BlcmYvYXJjaC9hcm0vdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAo+Pj4+IGluZGV4IDAzYTViYzBjZjY0Yy4uMDAwMDAwMDAwMDAwCj4+Pj4gLS0tIGEvdG9v bHMvcGVyZi9hcmNoL2FybS91dGlsL3BlcmZfcmVncy5jCj4+Pj4gKysrIC9kZXYvbnVsbAo+Pj4+ IEBAIC0xLDEzICswLDAgQEAKPj4+PiAtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPj4+PiAtI2luY2x1ZGUgInBlcmZfcmVncy5oIgo+Pj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4v dXRpbC9wZXJmX3JlZ3MuaCIKPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFyY2hfX2ludHJfcmVnX21h c2sodm9pZCkKPj4+PiAtewo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+ IC19Cj4+Pj4gLQo+Pj4+IC11aW50NjRfdCBhcmNoX191c2VyX3JlZ19tYXNrKHZvaWQpCj4+Pj4g LXsKPj4+PiAtICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+PiAtfQo+Pj4+IGRpZmYg LS1naXQgYS90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9wZXJmX3JlZ3MuYyBiL3Rvb2xzL3Bl cmYvYXJjaC9hcm02NC91dGlsL3BlcmZfcmVncy5jCj4+Pj4gaW5kZXggOWJiNzY4ZTFiZWExLi40 N2Y1OGVhYmEwMzIgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNoL2FybTY0L3V0aWwv cGVyZl9yZWdzLmMKPj4+PiArKysgYi90b29scy9wZXJmL2FyY2gvYXJtNjQvdXRpbC9wZXJmX3Jl Z3MuYwo+Pj4+IEBAIC0xMDMsMzkgKzEwMywzIEBAIGludCBhcmNoX3NkdF9hcmdfcGFyc2Vfb3Ao Y2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29wKQo+Pj4+Cj4+Pj4gICAgICAgICByZXR1cm4gU0RU X0FSR19WQUxJRDsKPj4+PiAgfQo+Pj4+IC0KPj4+PiAtdWludDY0X3QgYXJjaF9faW50cl9yZWdf bWFzayh2b2lkKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+ Pj4gLX0KPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFyY2hfX3VzZXJfcmVnX21hc2sodm9pZCkKPj4+ PiAtewo+Pj4+IC0gICAgICAgc3RydWN0IHBlcmZfZXZlbnRfYXR0ciBhdHRyID0gewo+Pj4+IC0g ICAgICAgICAgICAgICAudHlwZSAgICAgICAgICAgICAgICAgICA9IFBFUkZfVFlQRV9IQVJEV0FS RSwKPj4+PiAtICAgICAgICAgICAgICAgLmNvbmZpZyAgICAgICAgICAgICAgICAgPSBQRVJGX0NP VU5UX0hXX0NQVV9DWUNMRVMsCj4+Pj4gLSAgICAgICAgICAgICAgIC5zYW1wbGVfdHlwZSAgICAg ICAgICAgID0gUEVSRl9TQU1QTEVfUkVHU19VU0VSLAo+Pj4+IC0gICAgICAgICAgICAgICAuZGlz YWJsZWQgICAgICAgICAgICAgICA9IDEsCj4+Pj4gLSAgICAgICAgICAgICAgIC5leGNsdWRlX2tl cm5lbCAgICAgICAgID0gMSwKPj4+PiAtICAgICAgICAgICAgICAgLnNhbXBsZV9wZXJpb2QgICAg ICAgICAgPSAxLAo+Pj4+IC0gICAgICAgICAgICAgICAuc2FtcGxlX3JlZ3NfdXNlciAgICAgICA9 IFBFUkZfUkVHU19NQVNLCj4+Pj4gLSAgICAgICB9Owo+Pj4+IC0gICAgICAgaW50IGZkOwo+Pj4+ IC0KPj4+PiAtICAgICAgIGlmIChnZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBfU1ZFKQo+Pj4+ IC0gICAgICAgICAgICAgICBhdHRyLnNhbXBsZV9yZWdzX3VzZXIgfD0gU01QTF9SRUdfTUFTSyhQ RVJGX1JFR19BUk02NF9WRyk7Cj4+Pj4gLQo+Pj4+IC0gICAgICAgLyoKPj4+PiAtICAgICAgICAq IENoZWNrIGlmIHRoZSBwbXUgc3VwcG9ydHMgcGVyZiBleHRlbmRlZCByZWdzLCBiZWZvcmUKPj4+ PiAtICAgICAgICAqIHJldHVybmluZyB0aGUgcmVnaXN0ZXIgbWFzayB0byBzYW1wbGUuCj4+Pj4g LSAgICAgICAgKi8KPj4+PiAtICAgICAgIGlmIChhdHRyLnNhbXBsZV9yZWdzX3VzZXIgIT0gUEVS Rl9SRUdTX01BU0spIHsKPj4+PiAtICAgICAgICAgICAgICAgZXZlbnRfYXR0cl9pbml0KCZhdHRy KTsKPj4+PiAtICAgICAgICAgICAgICAgZmQgPSBzeXNfcGVyZl9ldmVudF9vcGVuKCZhdHRyLCAw LCAtMSwgLTEsIDApOwo+Pj4+IC0gICAgICAgICAgICAgICBpZiAoZmQgIT0gLTEpIHsKPj4+PiAt ICAgICAgICAgICAgICAgICAgICAgICBjbG9zZShmZCk7Cj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGF0dHIuc2FtcGxlX3JlZ3NfdXNlcjsKPj4+PiAtICAgICAgICAgICAgICAg fQo+Pj4+IC0gICAgICAgfQo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+ IC19Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9jc2t5L0J1aWxkIGIvdG9vbHMv cGVyZi9hcmNoL2Nza3kvQnVpbGQKPj4+PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBp bmRleCBlNjNlYWJjMmM4ZjQuLjAwMDAwMDAwMDAwMAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJj aC9jc2t5L0J1aWxkCj4+Pj4gKysrIC9kZXYvbnVsbAo+Pj4+IEBAIC0xICswLDAgQEAKPj4+PiAt cGVyZi11dGlsLXkgKz0gdXRpbC8KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL2Nz a3kvdXRpbC9CdWlsZCBiL3Rvb2xzL3BlcmYvYXJjaC9jc2t5L3V0aWwvQnVpbGQKPj4+PiBkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCA2YjJkMGUwMjFiMTEuLjAwMDAwMDAwMDAw MAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC9jc2t5L3V0aWwvQnVpbGQKPj4+PiArKysgL2Rl di9udWxsCj4+Pj4gQEAgLTEgKzAsMCBAQAo+Pj4+IC1wZXJmLXV0aWwteSArPSBwZXJmX3JlZ3Mu bwo+Pj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gvY3NreS91dGlsL3BlcmZfcmVncy5j IGIvdG9vbHMvcGVyZi9hcmNoL2Nza3kvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDJjZjdhNTQxMDZlMC4uMDAwMDAwMDAwMDAwCj4+Pj4g LS0tIGEvdG9vbHMvcGVyZi9hcmNoL2Nza3kvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICsrKyAvZGV2 L251bGwKPj4+PiBAQCAtMSwxMyArMCwwIEBACj4+Pj4gLS8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4+Pj4gLSNpbmNsdWRlICJwZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUg Ii4uLy4uL3V0aWwvcGVyZl9yZWdzLmgiCj4+Pj4gLQo+Pj4+IC11aW50NjRfdCBhcmNoX19pbnRy X3JlZ19tYXNrKHZvaWQpCj4+Pj4gLXsKPj4+PiAtICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFT SzsKPj4+PiAtfQo+Pj4+IC0KPj4+PiAtdWludDY0X3QgYXJjaF9fdXNlcl9yZWdfbWFzayh2b2lk KQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gLX0KPj4+ PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL2xvb25nYXJjaC91dGlsL0J1aWxkIGIvdG9v bHMvcGVyZi9hcmNoL2xvb25nYXJjaC91dGlsL0J1aWxkCj4+Pj4gaW5kZXggMGFhMzE5ODZlY2I1 Li4wYzk1OGM4ZTA3MTggMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNoL2xvb25nYXJj aC91dGlsL0J1aWxkCj4+Pj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL2xvb25nYXJjaC91dGlsL0J1 aWxkCj4+Pj4gQEAgLTEsNSArMSw0IEBACj4+Pj4gIHBlcmYtdXRpbC15ICs9IGhlYWRlci5vCj4+ Pj4gLXBlcmYtdXRpbC15ICs9IHBlcmZfcmVncy5vCj4+Pj4KPj4+PiAgcGVyZi11dGlsLSQoQ09O RklHX0xPQ0FMX0xJQlVOV0lORCkgKz0gdW53aW5kLWxpYnVud2luZC5vCj4+Pj4gIHBlcmYtdXRp bC0kKENPTkZJR19MSUJEV19EV0FSRl9VTldJTkQpICs9IHVud2luZC1saWJkdy5vCj4+Pj4gZGlm ZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9sb29uZ2FyY2gvdXRpbC9wZXJmX3JlZ3MuYyBiL3Rv b2xzL3BlcmYvYXJjaC9sb29uZ2FyY2gvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAzYTViYzBjZjY0Yy4uMDAwMDAwMDAwMDAwCj4+Pj4g LS0tIGEvdG9vbHMvcGVyZi9hcmNoL2xvb25nYXJjaC91dGlsL3BlcmZfcmVncy5jCj4+Pj4gKysr IC9kZXYvbnVsbAo+Pj4+IEBAIC0xLDEzICswLDAgQEAKPj4+PiAtLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAKPj4+PiAtI2luY2x1ZGUgInBlcmZfcmVncy5oIgo+Pj4+IC0jaW5j bHVkZSAiLi4vLi4vLi4vdXRpbC9wZXJmX3JlZ3MuaCIKPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFy Y2hfX2ludHJfcmVnX21hc2sodm9pZCkKPj4+PiAtewo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZf UkVHU19NQVNLOwo+Pj4+IC19Cj4+Pj4gLQo+Pj4+IC11aW50NjRfdCBhcmNoX191c2VyX3JlZ19t YXNrKHZvaWQpCj4+Pj4gLXsKPj4+PiAtICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+ PiAtfQo+Pj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2FyY2gvbWlwcy91dGlsL0J1aWxkIGIv dG9vbHMvcGVyZi9hcmNoL21pcHMvdXRpbC9CdWlsZAo+Pj4+IGluZGV4IDY5MWZhMjA1MTk1OC4u ODE4YjgwOGE4MjQ3IDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC9taXBzL3V0aWwv QnVpbGQKPj4+PiArKysgYi90b29scy9wZXJmL2FyY2gvbWlwcy91dGlsL0J1aWxkCj4+Pj4gQEAg LTEsMiArMSBAQAo+Pj4+IC1wZXJmLXV0aWwteSArPSBwZXJmX3JlZ3Mubwo+Pj4+ICBwZXJmLXV0 aWwtJChDT05GSUdfTE9DQUxfTElCVU5XSU5EKSArPSB1bndpbmQtbGlidW53aW5kLm8KPj4+PiBk aWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL21pcHMvdXRpbC9wZXJmX3JlZ3MuYyBiL3Rvb2xz L3BlcmYvYXJjaC9taXBzL3V0aWwvcGVyZl9yZWdzLmMKPj4+PiBkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKPj4+PiBpbmRleCAyY2Y3YTU0MTA2ZTAuLjAwMDAwMDAwMDAwMAo+Pj4+IC0tLSBhL3Rv b2xzL3BlcmYvYXJjaC9taXBzL3V0aWwvcGVyZl9yZWdzLmMKPj4+PiArKysgL2Rldi9udWxsCj4+ Pj4gQEAgLTEsMTMgKzAsMCBAQAo+Pj4+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAo+Pj4+IC0jaW5jbHVkZSAicGVyZl9yZWdzLmgiCj4+Pj4gLSNpbmNsdWRlICIuLi8uLi91 dGlsL3BlcmZfcmVncy5oIgo+Pj4+IC0KPj4+PiAtdWludDY0X3QgYXJjaF9faW50cl9yZWdfbWFz ayh2b2lkKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4g LX0KPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFyY2hfX3VzZXJfcmVnX21hc2sodm9pZCkKPj4+PiAt ewo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+IC19Cj4+Pj4gZGlmZiAt LWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL3V0aWwvcGVyZl9yZWdzLmMgYi90b29scy9w ZXJmL2FyY2gvcG93ZXJwYy91dGlsL3BlcmZfcmVncy5jCj4+Pj4gaW5kZXggNzc5MDczZjdlOTky Li45M2Y5MjlmYzMyZTMgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMv dXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL3V0aWwv cGVyZl9yZWdzLmMKPj4+PiBAQCAtMTIzLDUwICsxMjMsMyBAQCBpbnQgYXJjaF9zZHRfYXJnX3Bh cnNlX29wKGNoYXIgKm9sZF9vcCwgY2hhciAqKm5ld19vcCkKPj4+Pgo+Pj4+ICAgICAgICAgcmV0 dXJuIFNEVF9BUkdfVkFMSUQ7Cj4+Pj4gIH0KPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFyY2hfX2lu dHJfcmVnX21hc2sodm9pZCkKPj4+PiAtewo+Pj4+IC0gICAgICAgc3RydWN0IHBlcmZfZXZlbnRf YXR0ciBhdHRyID0gewo+Pj4+IC0gICAgICAgICAgICAgICAudHlwZSAgICAgICAgICAgICAgICAg ICA9IFBFUkZfVFlQRV9IQVJEV0FSRSwKPj4+PiAtICAgICAgICAgICAgICAgLmNvbmZpZyAgICAg ICAgICAgICAgICAgPSBQRVJGX0NPVU5UX0hXX0NQVV9DWUNMRVMsCj4+Pj4gLSAgICAgICAgICAg ICAgIC5zYW1wbGVfdHlwZSAgICAgICAgICAgID0gUEVSRl9TQU1QTEVfUkVHU19JTlRSLAo+Pj4+ IC0gICAgICAgICAgICAgICAucHJlY2lzZV9pcCAgICAgICAgICAgICA9IDEsCj4+Pj4gLSAgICAg ICAgICAgICAgIC5kaXNhYmxlZCAgICAgICAgICAgICAgID0gMSwKPj4+PiAtICAgICAgICAgICAg ICAgLmV4Y2x1ZGVfa2VybmVsICAgICAgICAgPSAxLAo+Pj4+IC0gICAgICAgfTsKPj4+PiAtICAg ICAgIGludCBmZDsKPj4+PiAtICAgICAgIHUzMiB2ZXJzaW9uOwo+Pj4+IC0gICAgICAgdTY0IGV4 dGVuZGVkX21hc2sgPSAwLCBtYXNrID0gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gLQo+Pj4+IC0gICAg ICAgLyoKPj4+PiAtICAgICAgICAqIEdldCB0aGUgUFZSIHZhbHVlIHRvIHNldCB0aGUgZXh0ZW5k ZWQKPj4+PiAtICAgICAgICAqIG1hc2sgc3BlY2lmaWMgdG8gcGxhdGZvcm0uCj4+Pj4gLSAgICAg ICAgKi8KPj4+PiAtICAgICAgIHZlcnNpb24gPSAoKChtZnNwcihTUFJOX1BWUikpID4+ICAxNikg JiAweEZGRkYpOwo+Pj4+IC0gICAgICAgaWYgKHZlcnNpb24gPT0gUFZSX1BPV0VSOSkKPj4+PiAt ICAgICAgICAgICAgICAgZXh0ZW5kZWRfbWFzayA9IFBFUkZfUkVHX1BNVV9NQVNLXzMwMDsKPj4+ PiAtICAgICAgIGVsc2UgaWYgKCh2ZXJzaW9uID09IFBWUl9QT1dFUjEwKSB8fCAodmVyc2lvbiA9 PSBQVlJfUE9XRVIxMSkpCj4+Pj4gLSAgICAgICAgICAgICAgIGV4dGVuZGVkX21hc2sgPSBQRVJG X1JFR19QTVVfTUFTS18zMTsKPj4+PiAtICAgICAgIGVsc2UKPj4+PiAtICAgICAgICAgICAgICAg cmV0dXJuIG1hc2s7Cj4+Pj4gLQo+Pj4+IC0gICAgICAgYXR0ci5zYW1wbGVfcmVnc19pbnRyID0g ZXh0ZW5kZWRfbWFzazsKPj4+PiAtICAgICAgIGF0dHIuc2FtcGxlX3BlcmlvZCA9IDE7Cj4+Pj4g LSAgICAgICBldmVudF9hdHRyX2luaXQoJmF0dHIpOwo+Pj4+IC0KPj4+PiAtICAgICAgIC8qCj4+ Pj4gLSAgICAgICAgKiBjaGVjayBpZiB0aGUgcG11IHN1cHBvcnRzIHBlcmYgZXh0ZW5kZWQgcmVn cywgYmVmb3JlCj4+Pj4gLSAgICAgICAgKiByZXR1cm5pbmcgdGhlIHJlZ2lzdGVyIG1hc2sgdG8g c2FtcGxlLgo+Pj4+IC0gICAgICAgICovCj4+Pj4gLSAgICAgICBmZCA9IHN5c19wZXJmX2V2ZW50 X29wZW4oJmF0dHIsIDAsIC0xLCAtMSwgMCk7Cj4+Pj4gLSAgICAgICBpZiAoZmQgIT0gLTEpIHsK Pj4+PiAtICAgICAgICAgICAgICAgY2xvc2UoZmQpOwo+Pj4+IC0gICAgICAgICAgICAgICBtYXNr IHw9IGV4dGVuZGVkX21hc2s7Cj4+Pj4gLSAgICAgICB9Cj4+Pj4gLSAgICAgICByZXR1cm4gbWFz azsKPj4+PiAtfQo+Pj4+IC0KPj4+PiAtdWludDY0X3QgYXJjaF9fdXNlcl9yZWdfbWFzayh2b2lk KQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gLX0KPj4+ PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL3Jpc2N2L2luY2x1ZGUvcGVyZl9yZWdzLmgg Yi90b29scy9wZXJmL2FyY2gvcmlzY3YvaW5jbHVkZS9wZXJmX3JlZ3MuaAo+Pj4+IGluZGV4IDg5 ZDViYmI4ZDJiOC4uYWY3YTFiNDdiZjY2IDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJj aC9yaXNjdi9pbmNsdWRlL3BlcmZfcmVncy5oCj4+Pj4gKysrIGIvdG9vbHMvcGVyZi9hcmNoL3Jp c2N2L2luY2x1ZGUvcGVyZl9yZWdzLmgKPj4+PiBAQCAtMTAsMTAgKzEwLDE1IEBACj4+Pj4KPj4+ PiAgI2RlZmluZSBQRVJGX1JFR1NfTUFTSyAoKDFVTEwgPDwgUEVSRl9SRUdfUklTQ1ZfTUFYKSAt IDEpCj4+Pj4gICNkZWZpbmUgUEVSRl9SRUdTX01BWCAgUEVSRl9SRUdfUklTQ1ZfTUFYCj4+Pj4g Kwo+Pj4+ICsjaWYgZGVmaW5lZChfX3Jpc2N2X3hsZW4pCj4+Pj4gICNpZiBfX3Jpc2N2X3hsZW4g PT0gNjQKPj4+PiAtI2RlZmluZSBQRVJGX1NBTVBMRV9SRUdTX0FCSSAgICBQRVJGX1NBTVBMRV9S RUdTX0FCSV82NAo+Pj4+ICsjZGVmaW5lIFBFUkZfU0FNUExFX1JFR1NfQUJJICAgUEVSRl9TQU1Q TEVfUkVHU19BQklfNjQKPj4+PiAgI2Vsc2UKPj4+PiAgI2RlZmluZSBQRVJGX1NBTVBMRV9SRUdT X0FCSSAgIFBFUkZfU0FNUExFX1JFR1NfQUJJXzMyCj4+Pj4gICNlbmRpZgo+Pj4+ICsjZWxzZQo+ Pj4+ICsjZGVmaW5lIFBFUkZfU0FNUExFX1JFR1NfQUJJICAgUEVSRl9TQU1QTEVfUkVHU19OT05F Cj4+Pj4gKyNlbmRpZgo+Pj4+Cj4+Pj4gICNlbmRpZiAvKiBBUkNIX1BFUkZfUkVHU19IICovCj4+ Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9yaXNjdi91dGlsL0J1aWxkIGIvdG9vbHMv cGVyZi9hcmNoL3Jpc2N2L3V0aWwvQnVpbGQKPj4+PiBpbmRleCA2MjhiOWViZDQxOGIuLmRhNWIx MmU3Zjg2MiAxMDA2NDQKPj4+PiAtLS0gYS90b29scy9wZXJmL2FyY2gvcmlzY3YvdXRpbC9CdWls ZAo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvYXJjaC9yaXNjdi91dGlsL0J1aWxkCj4+Pj4gQEAgLTEs NCArMSwzIEBACj4+Pj4gLXBlcmYtdXRpbC15ICs9IHBlcmZfcmVncy5vCj4+Pj4gIHBlcmYtdXRp bC15ICs9IGhlYWRlci5vCj4+Pj4KPj4+PiAgcGVyZi11dGlsLSQoQ09ORklHX0xJQlRSQUNFRVZF TlQpICs9IGt2bS1zdGF0Lm8KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9hcmNoL3Jpc2N2 L3V0aWwvcGVyZl9yZWdzLmMgYi90b29scy9wZXJmL2FyY2gvcmlzY3YvdXRpbC9wZXJmX3JlZ3Mu Ywo+Pj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDJjZjdhNTQxMDZlMC4u MDAwMDAwMDAwMDAwCj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNoL3Jpc2N2L3V0aWwvcGVyZl9y ZWdzLmMKPj4+PiArKysgL2Rldi9udWxsCj4+Pj4gQEAgLTEsMTMgKzAsMCBAQAo+Pj4+IC0vLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+IC0jaW5jbHVkZSAicGVyZl9yZWdz LmgiCj4+Pj4gLSNpbmNsdWRlICIuLi8uLi91dGlsL3BlcmZfcmVncy5oIgo+Pj4+IC0KPj4+PiAt dWludDY0X3QgYXJjaF9faW50cl9yZWdfbWFzayh2b2lkKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICBy ZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gLX0KPj4+PiAtCj4+Pj4gLXVpbnQ2NF90IGFyY2hf X3VzZXJfcmVnX21hc2sodm9pZCkKPj4+PiAtewo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZfUkVH U19NQVNLOwo+Pj4+IC19Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYXJjaC9zMzkwL3V0 aWwvQnVpbGQgYi90b29scy9wZXJmL2FyY2gvczM5MC91dGlsL0J1aWxkCj4+Pj4gaW5kZXggNTM5 MWQyNmZlZGQ0Li4zYjA5YzA1OGUwZWMgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi9hcmNo L3MzOTAvdXRpbC9CdWlsZAo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvYXJjaC9zMzkwL3V0aWwvQnVp bGQKPj4+PiBAQCAtMSw2ICsxLDUgQEAKPj4+PiAgcGVyZi11dGlsLXkgKz0gaGVhZGVyLm8KPj4+ PiAgcGVyZi11dGlsLSQoQ09ORklHX0xJQlRSQUNFRVZFTlQpICs9IGt2bS1zdGF0Lm8KPj4+PiAt cGVyZi11dGlsLXkgKz0gcGVyZl9yZWdzLm8KPj4+Pgo+Pj4+ICBwZXJmLXV0aWwteSArPSBtYWNo aW5lLm8KPj4+PiAgcGVyZi11dGlsLXkgKz0gcG11Lm8KPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMv cGVyZi9hcmNoL3MzOTAvdXRpbC9wZXJmX3JlZ3MuYyBiL3Rvb2xzL3BlcmYvYXJjaC9zMzkwL3V0 aWwvcGVyZl9yZWdzLmMKPj4+PiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAy Y2Y3YTU0MTA2ZTAuLjAwMDAwMDAwMDAwMAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC9zMzkw L3V0aWwvcGVyZl9yZWdzLmMKPj4+PiArKysgL2Rldi9udWxsCj4+Pj4gQEAgLTEsMTMgKzAsMCBA QAo+Pj4+IC0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+IC0jaW5jbHVk ZSAicGVyZl9yZWdzLmgiCj4+Pj4gLSNpbmNsdWRlICIuLi8uLi91dGlsL3BlcmZfcmVncy5oIgo+ Pj4+IC0KPj4+PiAtdWludDY0X3QgYXJjaF9faW50cl9yZWdfbWFzayh2b2lkKQo+Pj4+IC17Cj4+ Pj4gLSAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gLX0KPj4+PiAtCj4+Pj4gLXVp bnQ2NF90IGFyY2hfX3VzZXJfcmVnX21hc2sodm9pZCkKPj4+PiAtewo+Pj4+IC0gICAgICAgcmV0 dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+IC19Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYv YXJjaC94ODYvdXRpbC9wZXJmX3JlZ3MuYyBiL3Rvb2xzL3BlcmYvYXJjaC94ODYvdXRpbC9wZXJm X3JlZ3MuYwo+Pj4+IGluZGV4IGE3Y2E0MTU0ZmRmOS4uNDExNDFjZWJlMjI2IDEwMDY0NAo+Pj4+ IC0tLSBhL3Rvb2xzL3BlcmYvYXJjaC94ODYvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+ICsrKyBiL3Rv b2xzL3BlcmYvYXJjaC94ODYvdXRpbC9wZXJmX3JlZ3MuYwo+Pj4+IEBAIC0yMzMsNTEgKzIzMywz IEBAIGludCBhcmNoX3NkdF9hcmdfcGFyc2Vfb3AoY2hhciAqb2xkX29wLCBjaGFyICoqbmV3X29w KQo+Pj4+Cj4+Pj4gICAgICAgICByZXR1cm4gU0RUX0FSR19WQUxJRDsKPj4+PiAgfQo+Pj4+IC0K Pj4+PiAtdWludDY0X3QgYXJjaF9faW50cl9yZWdfbWFzayh2b2lkKQo+Pj4+IC17Cj4+Pj4gLSAg ICAgICBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyIGF0dHIgPSB7Cj4+Pj4gLSAgICAgICAgICAgICAg IC50eXBlICAgICAgICAgICAgICAgICAgID0gUEVSRl9UWVBFX0hBUkRXQVJFLAo+Pj4+IC0gICAg ICAgICAgICAgICAuY29uZmlnICAgICAgICAgICAgICAgICA9IFBFUkZfQ09VTlRfSFdfQ1BVX0NZ Q0xFUywKPj4+PiAtICAgICAgICAgICAgICAgLnNhbXBsZV90eXBlICAgICAgICAgICAgPSBQRVJG X1NBTVBMRV9SRUdTX0lOVFIsCj4+Pj4gLSAgICAgICAgICAgICAgIC5zYW1wbGVfcmVnc19pbnRy ICAgICAgID0gUEVSRl9SRUdfRVhURU5ERURfTUFTSywKPj4+PiAtICAgICAgICAgICAgICAgLnBy ZWNpc2VfaXAgICAgICAgICAgICAgPSAxLAo+Pj4+IC0gICAgICAgICAgICAgICAuZGlzYWJsZWQg ICAgICAgICAgICAgICA9IDEsCj4+Pj4gLSAgICAgICAgICAgICAgIC5leGNsdWRlX2tlcm5lbCAg ICAgICAgID0gMSwKPj4+PiAtICAgICAgIH07Cj4+Pj4gLSAgICAgICBpbnQgZmQ7Cj4+Pj4gLSAg ICAgICAvKgo+Pj4+IC0gICAgICAgICogSW4gYW4gdW5uYW1lZCB1bmlvbiwgaW5pdCBpdCBoZXJl IHRvIGJ1aWxkIG9uIG9sZGVyIGdjYyB2ZXJzaW9ucwo+Pj4+IC0gICAgICAgICovCj4+Pj4gLSAg ICAgICBhdHRyLnNhbXBsZV9wZXJpb2QgPSAxOwo+Pj4+IC0KPj4+PiAtICAgICAgIGlmIChwZXJm X3BtdXNfX251bV9jb3JlX3BtdXMoKSA+IDEpIHsKPj4+PiAtICAgICAgICAgICAgICAgc3RydWN0 IHBlcmZfcG11ICpwbXUgPSBOVUxMOwo+Pj4+IC0gICAgICAgICAgICAgICBfX3U2NCB0eXBlID0g UEVSRl9UWVBFX1JBVzsKPj4+PiAtCj4+Pj4gLSAgICAgICAgICAgICAgIC8qCj4+Pj4gLSAgICAg ICAgICAgICAgICAqIFRoZSBzYW1lIHJlZ2lzdGVyIHNldCBpcyBzdXBwb3J0ZWQgYW1vbmcgZGlm ZmVyZW50IGh5YnJpZCBQTVVzLgo+Pj4+IC0gICAgICAgICAgICAgICAgKiBPbmx5IGNoZWNrIHRo ZSBmaXJzdCBhdmFpbGFibGUgb25lLgo+Pj4+IC0gICAgICAgICAgICAgICAgKi8KPj4+PiAtICAg ICAgICAgICAgICAgd2hpbGUgKChwbXUgPSBwZXJmX3BtdXNfX3NjYW5fY29yZShwbXUpKSAhPSBO VUxMKSB7Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHBtdS0+dHlwZTsKPj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+PiAtICAgICAgICAgICAgICAgfQo+ Pj4+IC0gICAgICAgICAgICAgICBhdHRyLmNvbmZpZyB8PSB0eXBlIDw8IFBFUkZfUE1VX1RZUEVf U0hJRlQ7Cj4+Pj4gLSAgICAgICB9Cj4+Pj4gLQo+Pj4+IC0gICAgICAgZXZlbnRfYXR0cl9pbml0 KCZhdHRyKTsKPj4+PiAtCj4+Pj4gLSAgICAgICBmZCA9IHN5c19wZXJmX2V2ZW50X29wZW4oJmF0 dHIsIDAsIC0xLCAtMSwgMCk7Cj4+Pj4gLSAgICAgICBpZiAoZmQgIT0gLTEpIHsKPj4+PiAtICAg ICAgICAgICAgICAgY2xvc2UoZmQpOwo+Pj4+IC0gICAgICAgICAgICAgICByZXR1cm4gKFBFUkZf UkVHX0VYVEVOREVEX01BU0sgfCBQRVJGX1JFR1NfTUFTSyk7Cj4+Pj4gLSAgICAgICB9Cj4+Pj4g LQo+Pj4+IC0gICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+IC19Cj4+Pj4gLQo+Pj4+ IC11aW50NjRfdCBhcmNoX191c2VyX3JlZ19tYXNrKHZvaWQpCj4+Pj4gLXsKPj4+PiAtICAgICAg IHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+PiAtfQo+Pj4+IGRpZmYgLS1naXQgYS90b29scy9w ZXJmL3V0aWwvZXZzZWwuYyBiL3Rvb2xzL3BlcmYvdXRpbC9ldnNlbC5jCj4+Pj4gaW5kZXggNWFj MWEwNTYwMWIxLi5hMzY1MjhmZDQxYzYgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGls L2V2c2VsLmMKPj4+PiArKysgYi90b29scy9wZXJmL3V0aWwvZXZzZWwuYwo+Pj4+IEBAIC0xMDU1 LDEzICsxMDU1LDEzIEBAIHN0YXRpYyB2b2lkIF9fZXZzZWxfX2NvbmZpZ19jYWxsY2hhaW4oc3Ry dWN0IGV2c2VsICpldnNlbCwgc3RydWN0IHJlY29yZF9vcHRzICpvCj4+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgZXZzZWxfX3NldF9zYW1wbGVfYml0KGV2c2VsLCBSRUdTX1VTRVIpOwo+Pj4+ ICAgICAgICAgICAgICAgICAgICAgICAgIGV2c2VsX19zZXRfc2FtcGxlX2JpdChldnNlbCwgU1RB Q0tfVVNFUik7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMtPnNhbXBsZV91 c2VyX3JlZ3MgJiYKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdBUkZfTUlOSU1B TF9SRUdTKGVfbWFjaGluZSkgIT0gYXJjaF9fdXNlcl9yZWdfbWFzaygpKSB7Cj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIERXQVJGX01JTklNQUxfUkVHUyhlX21hY2hpbmUpICE9IHBl cmZfdXNlcl9yZWdfbWFzayhFTV9IT1NUKSkgewo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXR0ci0+c2FtcGxlX3JlZ3NfdXNlciB8PSBEV0FSRl9NSU5JTUFMX1JFR1MoZV9t YWNoaW5lKTsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByX3dhcm5pbmco IldBUk5JTkc6IFRoZSB1c2Ugb2YgLS1jYWxsLWdyYXBoPWR3YXJmIG1heSByZXF1aXJlIGFsbCB0 aGUgdXNlciByZWdpc3RlcnMsICIKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInNwZWNpZnlpbmcgYSBzdWJzZXQgd2l0aCAtLXVzZXItcmVncyBtYXkgcmVu ZGVyIERXQVJGIHVud2luZGluZyB1bnJlbGlhYmxlLCAiCj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJzbyB0aGUgbWluaW1hbCByZWdpc3RlcnMgc2V0IChJ UCwgU1ApIGlzIGV4cGxpY2l0bHkgZm9yY2VkLlxuIik7Cj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgfSBlbHNlIHsKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIt PnNhbXBsZV9yZWdzX3VzZXIgfD0gYXJjaF9fdXNlcl9yZWdfbWFzaygpOwo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+c2FtcGxlX3JlZ3NfdXNlciB8PSBwZXJmX3Vz ZXJfcmVnX21hc2soRU1fSE9TVCk7Cj4+PiBGd2l3LCBJIHRoaW5rIHRoaXMgaXMgd2h5IGZvciBk d2FyZiB1bndpbmRpbmcgb24geDg2IHdlJ3JlIHNhbXBsaW5nCj4+PiB0aGUgWE1NIHJlZ2lzdGVy cyB3aGljaCBpcyBwcm9iYWJseSB0b28gbXVjaC4gSSB0aGluayB0aGUgbWFzayB0aGF0J3MKPj4+ IHJlYWxseSB3YW50ZWQgaGVyZSBpcyB0aGUgbWFzayBvZiBhbGwgY2FsbGVlLXNhdmUgcmVnaXN0 ZXJzIG9yLAo+Pj4gYmVjYXVzZSBtYXliZSB0aGVyZSdzIGludGVyLXByb2NlZHVyYWwgb3B0aW1p emF0aW9ucywgYWxsIEdQUnMuCj4+IFllcywgWE1NIGFyZSBkZWZpbml0ZWx5IG5vdCBuZWVkZWQg Zm9yIGR3YXJmIHVud2luZGluZy4gQWZ0ZXIgc3VwcG9ydGluZwo+PiB0aGUgQVBYIGVHUFJzLCB3 ZSBjYW4gZG8gYSBmdXJ0aGVyIGludmVzdGlnYXRpb24gZm9yIHRoaXMgcGxhY2UuCj4+Cj4+Cj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgfQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg IGF0dHItPnNhbXBsZV9zdGFja191c2VyID0gcGFyYW0tPmR1bXBfc2l6ZTsKPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICBhdHRyLT5leGNsdWRlX2NhbGxjaGFpbl91c2VyID0gMTsKPj4+PiBk aWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3BhcnNlLXJlZ3Mtb3B0aW9ucy5jIGIvdG9vbHMv cGVyZi91dGlsL3BhcnNlLXJlZ3Mtb3B0aW9ucy5jCj4+Pj4gaW5kZXggYzBkMGVmOWZkNDk1Li4y YWY2ZTRhZDJhMzQgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BhcnNlLXJlZ3Mt b3B0aW9ucy5jCj4+Pj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL3BhcnNlLXJlZ3Mtb3B0aW9ucy5j Cj4+Pj4gQEAgLTcwLDcgKzcwLDcgQEAgX19wYXJzZV9yZWdzKGNvbnN0IHN0cnVjdCBvcHRpb24g Km9wdCwgY29uc3QgY2hhciAqc3RyLCBpbnQgdW5zZXQsIGJvb2wgaW50cikKPj4+PiAgICAgICAg IGlmICghc3RyKQo+Pj4+ICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4+Pj4KPj4+PiAtICAg ICAgIG1hc2sgPSBpbnRyID8gYXJjaF9faW50cl9yZWdfbWFzaygpIDogYXJjaF9fdXNlcl9yZWdf bWFzaygpOwo+Pj4+ICsgICAgICAgbWFzayA9IGludHIgPyBwZXJmX2ludHJfcmVnX21hc2soRU1f SE9TVCkgOiBwZXJmX3VzZXJfcmVnX21hc2soRU1fSE9TVCk7Cj4+Pj4KPj4+PiAgICAgICAgIC8q IGJlY2F1c2Ugc3RyIGlzIHJlYWQtb25seSAqLwo+Pj4+ICAgICAgICAgcyA9IG9zID0gc3RyZHVw KHN0cik7Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9w ZXJmX3JlZ3NfYWFyY2g2NC5jIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZf cmVnc19hYXJjaDY0LmMKPj4+PiBpbmRleCA5ZGNkYTgwZDMxMGYuLjIxYTQzMjY3MWYwNCAxMDA2 NDQKPj4+PiAtLS0gYS90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX2Fh cmNoNjQuYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3Jl Z3NfYWFyY2g2NC5jCj4+Pj4gQEAgLTEsNyArMSw1NiBAQAo+Pj4+ICAvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPj4+PiArI2luY2x1 ZGUgPHJlZ2V4Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPj4+PiArI2luY2x1ZGUgPHN5 cy9hdXh2Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+PiArI2luY2x1ZGUg PGxpbnV4L3phbGxvYy5oPgo+Pj4+Cj4+Pj4gKyNpbmNsdWRlICIuLi9kZWJ1Zy5oIgo+Pj4+ICsj aW5jbHVkZSAiLi4vZXZlbnQuaCIKPj4+PiAgI2luY2x1ZGUgIi4uL3BlcmZfcmVncy5oIgo+Pj4+ IC0jaW5jbHVkZSAiLi4vLi4vLi4vYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL3BlcmZfcmVn cy5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vLi4vcGVyZi1zeXMuaCIKPj4+PiArI2luY2x1ZGUgIi4u Ly4uL2FyY2gvYXJtNjQvaW5jbHVkZS9wZXJmX3JlZ3MuaCIKPj4+IEknbSBhIGxpdHRsZSB3b3Jy aWVkIGFib3V0IHN3aXRjaGluZyBmcm9tIHRoZSBhc20gdG8gdGhlIGFyY2ggZmlsZQo+Pj4gYmVj YXVzZSBvZiBjb25mbGljdGluZyBkZWZpbml0aW9ucyBmcm9tIHRoZSBob3N0IG1hY2hpbmUgZG9p bmcgdGhlCj4+PiBjb21waWxhdGlvbi4gSSBzZWUgd2UgbmVlZCBQRVJGX1JFR1NfTUFTSyB3aGlj aCBpcyB0eXBpY2FsbHk6Cj4+PiAjZGVmaW5lIFBFUkZfUkVHU19NQVNLICAoKDFVTEwgPDwgUEVS Rl9SRUdfPGFyY2g+X01BWCkgLSAxKQo+Pj4gUGVyaGFwcyB3ZSBjYW4gaGF2ZSBpbiB0aGUgYXNt IGhlYWRlcjoKPj4+ICNkZWZpbmUgUEVSRl9SRUdTXzxhcmNoPl9NQVNLICAoKDFVTEwgPDwgUEVS Rl9SRUdfPGFyY2g+X01BWCkgLSAxKQo+Pj4gUGVyaGFwcyB0aGF0J3MganVzdCBsYXRlciBjbGVh bnVwLgo+PiBUaGUgImFzbS9wZXJmX3JlZ3MuaCIgaGFzIGJlZW4gbmVzdGVkIGludG8gdGhlCj4+ ICJhcmNoL3h4eC9pbmNsdWRlL3BlcmZfcmVncy5oIi4gSU1PLCBpdCBzaG91bGQgYmUgc2FmZSBh bmQgcmVhc29uYWJsZSB0bwo+PiBpbmNsdWRlIHRoZSBwZXJmIHRvb2xzIGhlYWRlciBmaWxlICJh cmNoL3h4eC9pbmNsdWRlL3BlcmZfcmVncy5oIiBmb3IgdGhlCj4+IHBlcmYtcmVncyByZWxhdGVk IHNvdXJjZSBjb2RlLgo+Pgo+PiBJdCB3b3JrcyB0byBhZGQgIlBFUkZfUkVHU188YXJjaD5fTUFT SyIgaW50byB0aGUgVUFQSSBhc20gaGVhZGVyLCBidXQgc2luY2UKPj4gdGhlIG1hY3JvcyBhcmUg bmV2ZXIgY2FsbGVkIGluIGtlcm5lbCBjb2RlLCBJIHN1cHBvc2UgbWFpbnRhaW50ZXJzIHdvdWxk Cj4+IG5vdCBsaWtlIGl0Lgo+Pgo+Pgo+Pj4+ICsKPj4+PiArI2RlZmluZSBTTVBMX1JFR19NQVNL KGIpICgxVUxMIDw8IChiKSkKPj4+PiArCj4+Pj4gKyNpZm5kZWYgSFdDQVBfU1ZFCj4+Pj4gKyNk ZWZpbmUgSFdDQVBfU1ZFICAgICAgKDEgPDwgMjIpCj4+Pj4gKyNlbmRpZgo+Pj4+ICsKPj4+PiAr dWludDY0X3QgX19wZXJmX3JlZ19tYXNrX2FybTY0KGJvb2wgaW50cikKPj4+PiArewo+Pj4+ICsg ICAgICAgc3RydWN0IHBlcmZfZXZlbnRfYXR0ciBhdHRyID0gewo+Pj4+ICsgICAgICAgICAgICAg ICAudHlwZSAgICAgICAgICAgICAgICAgICA9IFBFUkZfVFlQRV9IQVJEV0FSRSwKPj4+PiArICAg ICAgICAgICAgICAgLmNvbmZpZyAgICAgICAgICAgICAgICAgPSBQRVJGX0NPVU5UX0hXX0NQVV9D WUNMRVMsCj4+Pj4gKyAgICAgICAgICAgICAgIC5zYW1wbGVfdHlwZSAgICAgICAgICAgID0gUEVS Rl9TQU1QTEVfUkVHU19VU0VSLAo+Pj4+ICsgICAgICAgICAgICAgICAuZGlzYWJsZWQgICAgICAg ICAgICAgICA9IDEsCj4+Pj4gKyAgICAgICAgICAgICAgIC5leGNsdWRlX2tlcm5lbCAgICAgICAg ID0gMSwKPj4+PiArICAgICAgICAgICAgICAgLnNhbXBsZV9wZXJpb2QgICAgICAgICAgPSAxLAo+ Pj4+ICsgICAgICAgICAgICAgICAuc2FtcGxlX3JlZ3NfdXNlciAgICAgICA9IFBFUkZfUkVHU19N QVNLCj4+Pj4gKyAgICAgICB9Owo+Pj4+ICsgICAgICAgaW50IGZkOwo+Pj4+ICsKPj4+PiArICAg ICAgIGlmIChpbnRyKQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7 Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYgKGdldGF1eHZhbChBVF9IV0NBUCkgJiBIV0NBUF9TVkUp Cj4+Pj4gKyAgICAgICAgICAgICAgIGF0dHIuc2FtcGxlX3JlZ3NfdXNlciB8PSBTTVBMX1JFR19N QVNLKFBFUkZfUkVHX0FSTTY0X1ZHKTsKPj4+PiArCj4+Pj4gKyAgICAgICAvKgo+Pj4+ICsgICAg ICAgICogQ2hlY2sgaWYgdGhlIHBtdSBzdXBwb3J0cyBwZXJmIGV4dGVuZGVkIHJlZ3MsIGJlZm9y ZQo+Pj4+ICsgICAgICAgICogcmV0dXJuaW5nIHRoZSByZWdpc3RlciBtYXNrIHRvIHNhbXBsZS4K Pj4+PiArICAgICAgICAqLwo+Pj4gSSBrbm93IHRoaXMgaXMganVzdCBhIGNvcHktcGFzdGUgYnV0 IEkgdGhpbmsgaXQnZCBiZSBhIGxpdHRsZSBtb3JlIHJlYWRhYmxlIGFzOgo+Pj4gYGBgCj4+PiAg ICAgICAgIC8qCj4+PiAgICAgICAgICogQ2hlY2sgaWYgdGhlIHBtdSBzdXBwb3J0cyBwZXJmIGV4 dGVuZGVkIHJlZ3MsIGJlZm9yZQo+Pj4gICAgICAgICAqIHJldHVybmluZyB0aGUgcmVnaXN0ZXIg bWFzayB0byBzYW1wbGUuIE9wZW4gdGhlIGV2ZW50Cj4+PiAgICAgICAgICogb24gdGhlIHBlcmYg cHJvY2VzcyB0byBjaGVjayB0aGlzLgo+Pj4gICAgICAgICAqLwo+Pj4gYGBgCj4+IFN1cmUuIFRo YW5rcy4KPj4KPj4KPj4+PiArICAgICAgIGlmIChhdHRyLnNhbXBsZV9yZWdzX3VzZXIgIT0gUEVS Rl9SRUdTX01BU0spIHsKPj4+PiArICAgICAgICAgICAgICAgZXZlbnRfYXR0cl9pbml0KCZhdHRy KTsKPj4+PiArICAgICAgICAgICAgICAgZmQgPSBzeXNfcGVyZl9ldmVudF9vcGVuKCZhdHRyLCAw LCAtMSwgLTEsIDApOwo+Pj4gU2ltaWxhcmx5Ogo+Pj4gYGBgCj4+PiBmZCA9IHN5c19wZXJmX2V2 ZW50X29wZW4oJmF0dHIsIC8qcGlkPSovMCwgLypjcHU9Ki8tMSwKPj4+IC8qZ3JvdXBfZmQ9Ki8t MSwgLypmbGFncz0qLzApOwo+Pj4gYGBgCj4+IFN1cmUuCj4+Cj4+Cj4+Pj4gKyAgICAgICAgICAg ICAgIGlmIChmZCAhPSAtMSkgewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZk KTsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5zYW1wbGVfcmVnc191 c2VyOwo+Pj4+ICsgICAgICAgICAgICAgICB9Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKyAgICAgICBy ZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gK30KPj4+Pgo+Pj4+ICBjb25zdCBjaGFyICpfX3Bl cmZfcmVnX25hbWVfYXJtNjQoaW50IGlkKQo+Pj4+ICB7Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xz L3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfYXJtLmMgYi90b29scy9wZXJmL3V0 aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX2FybS5jCj4+Pj4gaW5kZXggZTI5ZDEzMGE1ODdh Li4xODRkNmUyNDhkZmMgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVn cy1hcmNoL3BlcmZfcmVnc19hcm0uYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJl Z3MtYXJjaC9wZXJmX3JlZ3NfYXJtLmMKPj4+PiBAQCAtMSw3ICsxLDEyIEBACj4+Pj4gIC8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+Pj4KPj4+PiAgI2luY2x1ZGUgIi4uL3Bl cmZfcmVncy5oIgo+Pj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4vYXJjaC9hcm0vaW5jbHVkZS91YXBp L2FzbS9wZXJmX3JlZ3MuaCIKPj4+PiArI2luY2x1ZGUgIi4uLy4uL2FyY2gvYXJtL2luY2x1ZGUv cGVyZl9yZWdzLmgiCj4+PiBTaW1pbGFyIGNvbW1lbnQgb24gUEVSRl9SRUdTX01BU0sgYXMgYWJv dmUsIG5vIGFjdGlvbiBuZWNlc3NhcnkuCj4+Pgo+Pj4+ICsKPj4+PiArdWludDY0X3QgX19wZXJm X3JlZ19tYXNrX2FybShib29sIGludHIgX19tYXliZV91bnVzZWQpCj4+Pj4gK3sKPj4+PiArICAg ICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+PiArfQo+Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIg Kl9fcGVyZl9yZWdfbmFtZV9hcm0oaW50IGlkKQo+Pj4+ICB7Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rv b2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfY3NreS5jIGIvdG9vbHMvcGVy Zi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19jc2t5LmMKPj4+PiBpbmRleCA3NWI0NjFl ZjJlYmEuLjM2Y2FmYTZhNGM0MiAxMDA2NDQKPj4+PiAtLS0gYS90b29scy9wZXJmL3V0aWwvcGVy Zi1yZWdzLWFyY2gvcGVyZl9yZWdzX2Nza3kuYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9w ZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfY3NreS5jCj4+Pj4gQEAgLTEsNyArMSwxMiBAQAo+Pj4+ ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+Cj4+Pj4gICNpbmNsdWRl ICIuLi9wZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUgIi4uLy4uL2FyY2gvY3NreS9pbmNsdWRl L3VhcGkvYXNtL3BlcmZfcmVncy5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vLi4vYXJjaC9jc2t5L2lu Y2x1ZGUvcGVyZl9yZWdzLmgiCj4+Pj4gKwo+Pj4+ICt1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tf Y3NreShib29sIGludHIgX19tYXliZV91bnVzZWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJldHVy biBQRVJGX1JFR1NfTUFTSzsKPj4+PiArfQo+Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9y ZWdfbmFtZV9jc2t5KGludCBpZCkKPj4+PiAgewo+Pj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJm L3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX2xvb25nYXJjaC5jIGIvdG9vbHMvcGVyZi91 dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19sb29uZ2FyY2guYwo+Pj4+IGluZGV4IDA0M2Y5 N2Y0ZTNhYy4uNDc4ZWU4ODlhZmExIDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9w ZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfbG9vbmdhcmNoLmMKPj4+PiArKysgYi90b29scy9wZXJm L3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX2xvb25nYXJjaC5jCj4+Pj4gQEAgLTEsNyAr MSwxMiBAQAo+Pj4+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+Cj4+ Pj4gICNpbmNsdWRlICIuLi9wZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL2Fy Y2gvbG9vbmdhcmNoL2luY2x1ZGUvdWFwaS9hc20vcGVyZl9yZWdzLmgiCj4+Pj4gKyNpbmNsdWRl ICIuLi8uLi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL3BlcmZfcmVncy5oIgo+Pj4+ICsKPj4+PiAr dWludDY0X3QgX19wZXJmX3JlZ19tYXNrX2xvb25nYXJjaChib29sIGludHIgX19tYXliZV91bnVz ZWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+PiArfQo+ Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFtZV9sb29uZ2FyY2goaW50IGlkKQo+ Pj4+ICB7Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9w ZXJmX3JlZ3NfbWlwcy5jIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVn c19taXBzLmMKPj4+PiBpbmRleCA3OTMxNzhmYzNjNzguLmM1YTQ3NWY2ZWM2NCAxMDA2NDQKPj4+ PiAtLS0gYS90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX21pcHMuYwo+ Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfbWlwcy5j Cj4+Pj4gQEAgLTEsNyArMSwxMiBAQAo+Pj4+ICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAo+Pj4+Cj4+Pj4gICNpbmNsdWRlICIuLi9wZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1 ZGUgIi4uLy4uLy4uL2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3BlcmZfcmVncy5oIgo+Pj4+ ICsjaW5jbHVkZSAiLi4vLi4vYXJjaC9taXBzL2luY2x1ZGUvcGVyZl9yZWdzLmgiCj4+Pj4gKwo+ Pj4+ICt1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tfbWlwcyhib29sIGludHIgX19tYXliZV91bnVz ZWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+PiArfQo+ Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFtZV9taXBzKGludCBpZCkKPj4+PiAg ewo+Pj4+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9y ZWdzX3Bvd2VycGMuYyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3Nf cG93ZXJwYy5jCj4+Pj4gaW5kZXggMDg2MzZiYjA5YTNhLi41MjExY2MwYzRlODEgMTAwNjQ0Cj4+ Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19wb3dlcnBj LmMKPj4+PiArKysgYi90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdzLWFyY2gvcGVyZl9yZWdzX3Bv d2VycGMuYwo+Pj4+IEBAIC0xLDcgKzEsNzUgQEAKPj4+PiAgLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKPj4+Pgo+Pj4+ICsjaW5jbHVkZSA8ZXJybm8uaD4KPj4+PiArI2luY2x1 ZGUgPHN0cmluZy5oPgo+Pj4+ICsjaW5jbHVkZSA8cmVnZXguaD4KPj4+PiArI2luY2x1ZGUgPGxp bnV4L3phbGxvYy5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgIi4uL2RlYnVnLmgiCj4+Pj4gKyNp bmNsdWRlICIuLi9ldmVudC5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vaGVhZGVyLmgiCj4+Pj4gICNp bmNsdWRlICIuLi9wZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL3VhcGkvYXNtL3BlcmZfcmVncy5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vLi4v cGVyZi1zeXMuaCIKPj4+PiArI2luY2x1ZGUgIi4uLy4uL2FyY2gvcG93ZXJwYy91dGlsL3V0aWxz X2hlYWRlci5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vLi4vYXJjaC9wb3dlcnBjL2luY2x1ZGUvcGVy Zl9yZWdzLmgiCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+Pj4gKwo+ Pj4+ICsjZGVmaW5lIFBWUl9QT1dFUjkgICAgICAgICAgICAgMHgwMDRFCj4+Pj4gKyNkZWZpbmUg UFZSX1BPV0VSMTAgICAgICAgICAgICAweDAwODAKPj4+PiArI2RlZmluZSBQVlJfUE9XRVIxMSAg ICAgICAgICAgIDB4MDA4Mgo+Pj4+ICsKPj4+PiArI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykg JiYgZGVmaW5lZChfX3Bvd2VycGNfXykKPj4+IFRoaXMgaXMgbW9yYWxseSB0aGUgc2FtZSBhcyB0 aGUgYXJjaCBkaXJlY3RvcnksIEknbSBndWVzc2luZyB0aGF0Cj4+PiBtaXNzaW5nIGRlZmluaXRp b25zIGFyZSBhbiBpc3N1ZT8gV291bGQgaGF2aW5nIHRoZSBhc20gI2luY2x1ZGUgZml4Cj4+PiB0 aGlzPwo+PiBUaGUgYWltIG9mIGFkZGluZyB0aGlzICIjaWYiIGlzIHRvIGF2b2lkIHRoZSBidWls ZGluZyBlcnJvciBjYXVzZWQgYnkgdGhlCj4+ICJtZnNwciIgaW5zdHJ1Y3Rpb24gd2hpY2ggZXhp c3RzIG9ubHkgb24gcG93ZXJwYy4gU2luY2UgdGhlIGZ1bmN0aW9uCj4+IF9fcGVyZl9yZWdfbWFz a19wb3dlcnBjKCkgd291bGQgbmV2ZXIgYmUgY2FsbGVkIG9uIG5vbi1wb3dlcnBjIHBsYXRmb3Jt cwo+PiByaWdodCBub3csIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGZpbmUuCj4gVGhhbmtzLCBJIHJl bWVtYmVyIG5vdy4gUHJvYmFibHkgd29ydGggYSBjb21tZW50LgoKU3VyZS4gVGhhbmtzLgoKCj4K PiBJYW4KPgo+Pj4+ICt1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tfcG93ZXJwYyhib29sIGludHIp Cj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgYXR0ciA9IHsKPj4+ PiArICAgICAgICAgICAgICAgLnR5cGUgICAgICAgICAgICAgICAgICAgPSBQRVJGX1RZUEVfSEFS RFdBUkUsCj4+Pj4gKyAgICAgICAgICAgICAgIC5jb25maWcgICAgICAgICAgICAgICAgID0gUEVS Rl9DT1VOVF9IV19DUFVfQ1lDTEVTLAo+Pj4+ICsgICAgICAgICAgICAgICAuc2FtcGxlX3R5cGUg ICAgICAgICAgICA9IFBFUkZfU0FNUExFX1JFR1NfSU5UUiwKPj4+PiArICAgICAgICAgICAgICAg LnByZWNpc2VfaXAgICAgICAgICAgICAgPSAxLAo+Pj4+ICsgICAgICAgICAgICAgICAuZGlzYWJs ZWQgICAgICAgICAgICAgICA9IDEsCj4+Pj4gKyAgICAgICAgICAgICAgIC5leGNsdWRlX2tlcm5l bCAgICAgICAgID0gMSwKPj4+PiArICAgICAgIH07Cj4+Pj4gKyAgICAgICBpbnQgZmQ7Cj4+Pj4g KyAgICAgICB1MzIgdmVyc2lvbjsKPj4+PiArICAgICAgIHU2NCBleHRlbmRlZF9tYXNrID0gMCwg bWFzayA9IFBFUkZfUkVHU19NQVNLOwo+Pj4+ICsKPj4+PiArICAgICAgIGlmICghaW50cikKPj4+ PiArICAgICAgICAgICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+ICsKPj4+PiArICAg ICAgIC8qCj4+Pj4gKyAgICAgICAgKiBHZXQgdGhlIFBWUiB2YWx1ZSB0byBzZXQgdGhlIGV4dGVu ZGVkCj4+Pj4gKyAgICAgICAgKiBtYXNrIHNwZWNpZmljIHRvIHBsYXRmb3JtLgo+Pj4+ICsgICAg ICAgICovCj4+Pj4gKyAgICAgICB2ZXJzaW9uID0gKCgobWZzcHIoU1BSTl9QVlIpKSA+PiAgMTYp ICYgMHhGRkZGKTsKPj4+PiArICAgICAgIGlmICh2ZXJzaW9uID09IFBWUl9QT1dFUjkpCj4+Pj4g KyAgICAgICAgICAgICAgIGV4dGVuZGVkX21hc2sgPSBQRVJGX1JFR19QTVVfTUFTS18zMDA7Cj4+ Pj4gKyAgICAgICBlbHNlIGlmICgodmVyc2lvbiA9PSBQVlJfUE9XRVIxMCkgfHwgKHZlcnNpb24g PT0gUFZSX1BPV0VSMTEpKQo+Pj4+ICsgICAgICAgICAgICAgICBleHRlbmRlZF9tYXNrID0gUEVS Rl9SRUdfUE1VX01BU0tfMzE7Cj4+Pj4gKyAgICAgICBlbHNlCj4+Pj4gKyAgICAgICAgICAgICAg IHJldHVybiBtYXNrOwo+Pj4+ICsKPj4+PiArICAgICAgIGF0dHIuc2FtcGxlX3JlZ3NfaW50ciA9 IGV4dGVuZGVkX21hc2s7Cj4+Pj4gKyAgICAgICBhdHRyLnNhbXBsZV9wZXJpb2QgPSAxOwo+Pj4+ ICsgICAgICAgZXZlbnRfYXR0cl9pbml0KCZhdHRyKTsKPj4+PiArCj4+Pj4gKyAgICAgICAvKgo+ Pj4+ICsgICAgICAgICogY2hlY2sgaWYgdGhlIHBtdSBzdXBwb3J0cyBwZXJmIGV4dGVuZGVkIHJl Z3MsIGJlZm9yZQo+Pj4+ICsgICAgICAgICogcmV0dXJuaW5nIHRoZSByZWdpc3RlciBtYXNrIHRv IHNhbXBsZS4KPj4+PiArICAgICAgICAqLwo+Pj4+ICsgICAgICAgZmQgPSBzeXNfcGVyZl9ldmVu dF9vcGVuKCZhdHRyLCAwLCAtMSwgLTEsIDApOwo+Pj4gVGhpcyBjb2RlIGZlZWxzIGF3ZnVsbHkg ZmFtaWxpYXIgOi0pIFNpbWlsYXIgY29tbWVudHMgdG8gdGhlIGFybTY0IGNhc2UuCj4+IFN1cmUu Cj4+Cj4+Cj4+Pj4gKyAgICAgICBpZiAoZmQgIT0gLTEpIHsKPj4+PiArICAgICAgICAgICAgICAg Y2xvc2UoZmQpOwo+Pj4+ICsgICAgICAgICAgICAgICBtYXNrIHw9IGV4dGVuZGVkX21hc2s7Cj4+ Pj4gKyAgICAgICB9Cj4+Pj4gKyAgICAgICByZXR1cm4gbWFzazsKPj4+PiArfQo+Pj4+ICsjZWxz ZQo+Pj4+ICt1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tfcG93ZXJwYyhib29sIGludHIgX19tYXli ZV91bnVzZWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJldHVybiBQRVJGX1JFR1NfTUFTSzsKPj4+ PiArfQo+Pj4+ICsjZW5kaWYKPj4+Pgo+Pj4+ICBjb25zdCBjaGFyICpfX3BlcmZfcmVnX25hbWVf cG93ZXJwYyhpbnQgaWQpCj4+Pj4gIHsKPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGls L3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19yaXNjdi5jIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYt cmVncy1hcmNoL3BlcmZfcmVnc19yaXNjdi5jCj4+Pj4gaW5kZXggMzM3YjY4N2M2NTVkLi41YjVm MjFmY2JhOGMgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNo L3BlcmZfcmVnc19yaXNjdi5jCj4+Pj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1h cmNoL3BlcmZfcmVnc19yaXNjdi5jCj4+Pj4gQEAgLTEsNyArMSwxMiBAQAo+Pj4+ICAvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+Pj4+Cj4+Pj4gICNpbmNsdWRlICIuLi9wZXJm X3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBp L2FzbS9wZXJmX3JlZ3MuaCIKPj4+PiArI2luY2x1ZGUgIi4uLy4uL2FyY2gvcmlzY3YvaW5jbHVk ZS9wZXJmX3JlZ3MuaCIKPj4+PiArCj4+Pj4gK3VpbnQ2NF90IF9fcGVyZl9yZWdfbWFza19yaXNj dihib29sIGludHIgX19tYXliZV91bnVzZWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJldHVybiBQ RVJGX1JFR1NfTUFTSzsKPj4+PiArfQo+Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdf bmFtZV9yaXNjdihpbnQgaWQpCj4+Pj4gIHsKPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91 dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZfcmVnc19zMzkwLmMgYi90b29scy9wZXJmL3V0aWwvcGVy Zi1yZWdzLWFyY2gvcGVyZl9yZWdzX3MzOTAuYwo+Pj4+IGluZGV4IGQ2OWJiYTg4MTA4MC4uYzYx ZGYyNGVkZjBmIDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJj aC9wZXJmX3JlZ3NfczM5MC5jCj4+Pj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1h cmNoL3BlcmZfcmVnc19zMzkwLmMKPj4+PiBAQCAtMSw3ICsxLDEyIEBACj4+Pj4gIC8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+Pj4KPj4+PiAgI2luY2x1ZGUgIi4uL3BlcmZf cmVncy5oIgo+Pj4+IC0jaW5jbHVkZSAiLi4vLi4vLi4vYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9h c20vcGVyZl9yZWdzLmgiCj4+Pj4gKyNpbmNsdWRlICIuLi8uLi9hcmNoL3MzOTAvaW5jbHVkZS9w ZXJmX3JlZ3MuaCIKPj4+PiArCj4+Pj4gK3VpbnQ2NF90IF9fcGVyZl9yZWdfbWFza19zMzkwKGJv b2wgaW50ciBfX21heWJlX3VudXNlZCkKPj4+PiArewo+Pj4+ICsgICAgICAgcmV0dXJuIFBFUkZf UkVHU19NQVNLOwo+Pj4+ICt9Cj4+Pj4KPj4+PiAgY29uc3QgY2hhciAqX19wZXJmX3JlZ19uYW1l X3MzOTAoaW50IGlkKQo+Pj4+ICB7Cj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9w ZXJmLXJlZ3MtYXJjaC9wZXJmX3JlZ3NfeDg2LmMgYi90b29scy9wZXJmL3V0aWwvcGVyZi1yZWdz LWFyY2gvcGVyZl9yZWdzX3g4Ni5jCj4+Pj4gaW5kZXggNzA4OTU0YTlkMzVkLi5kMzE5MTA2ZGM3 YjIgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmYtcmVncy1hcmNoL3BlcmZf cmVnc194ODYuYwo+Pj4+ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmLXJlZ3MtYXJjaC9wZXJm X3JlZ3NfeDg2LmMKPj4+PiBAQCAtMSw3ICsxLDY1IEBACj4+Pj4gIC8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCj4+Pj4KPj4+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+Pj4gKyNp bmNsdWRlIDxzdHJpbmcuaD4KPj4+PiArI2luY2x1ZGUgPHJlZ2V4Lmg+Cj4+Pj4gKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPj4+PiArI2luY2x1ZGUgPGxpbnV4L3phbGxvYy5oPgo+Pj4+ICsK Pj4+PiArI2luY2x1ZGUgIi4uL2RlYnVnLmgiCj4+Pj4gKyNpbmNsdWRlICIuLi9ldmVudC5oIgo+ Pj4+ICsjaW5jbHVkZSAiLi4vcG11LmgiCj4+Pj4gKyNpbmNsdWRlICIuLi9wbXVzLmgiCj4+Pj4g ICNpbmNsdWRlICIuLi9wZXJmX3JlZ3MuaCIKPj4+PiAtI2luY2x1ZGUgIi4uLy4uLy4uL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vcGVyZl9yZWdzLmgiCj4+Pj4gKyNpbmNsdWRlICIuLi8uLi9w ZXJmLXN5cy5oIgo+Pj4+ICsjaW5jbHVkZSAiLi4vLi4vYXJjaC94ODYvaW5jbHVkZS9wZXJmX3Jl Z3MuaCIKPj4+PiArCj4+Pj4gK3VpbnQ2NF90IF9fcGVyZl9yZWdfbWFza194ODYoYm9vbCBpbnRy KQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyIGF0dHIgPSB7Cj4+ Pj4gKyAgICAgICAgICAgICAgIC50eXBlICAgICAgICAgICAgICAgICAgID0gUEVSRl9UWVBFX0hB UkRXQVJFLAo+Pj4+ICsgICAgICAgICAgICAgICAuY29uZmlnICAgICAgICAgICAgICAgICA9IFBF UkZfQ09VTlRfSFdfQ1BVX0NZQ0xFUywKPj4+PiArICAgICAgICAgICAgICAgLnNhbXBsZV90eXBl ICAgICAgICAgICAgPSBQRVJGX1NBTVBMRV9SRUdTX0lOVFIsCj4+Pj4gKyAgICAgICAgICAgICAg IC5zYW1wbGVfcmVnc19pbnRyICAgICAgID0gUEVSRl9SRUdfRVhURU5ERURfTUFTSywKPj4+PiAr ICAgICAgICAgICAgICAgLnByZWNpc2VfaXAgICAgICAgICAgICAgPSAxLAo+Pj4+ICsgICAgICAg ICAgICAgICAuZGlzYWJsZWQgICAgICAgICAgICAgICA9IDEsCj4+Pj4gKyAgICAgICAgICAgICAg IC5leGNsdWRlX2tlcm5lbCAgICAgICAgID0gMSwKPj4+PiArICAgICAgIH07Cj4+Pj4gKyAgICAg ICBpbnQgZmQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYgKCFpbnRyKQo+Pj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gUEVSRl9SRUdTX01BU0s7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgLyoKPj4+PiAr ICAgICAgICAqIEluIGFuIHVubmFtZWQgdW5pb24sIGluaXQgaXQgaGVyZSB0byBidWlsZCBvbiBv bGRlciBnY2MgdmVyc2lvbnMKPj4+PiArICAgICAgICAqLwo+Pj4+ICsgICAgICAgYXR0ci5zYW1w bGVfcGVyaW9kID0gMTsKPj4+PiArCj4+Pj4gKyAgICAgICBpZiAocGVyZl9wbXVzX19udW1fY29y ZV9wbXVzKCkgPiAxKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBwZXJmX3BtdSAqcG11 ID0gTlVMTDsKPj4+PiArICAgICAgICAgICAgICAgX191NjQgdHlwZSA9IFBFUkZfVFlQRV9SQVc7 Cj4+Pj4gKwo+Pj4+ICsgICAgICAgICAgICAgICAvKgo+Pj4+ICsgICAgICAgICAgICAgICAgKiBU aGUgc2FtZSByZWdpc3RlciBzZXQgaXMgc3VwcG9ydGVkIGFtb25nIGRpZmZlcmVudCBoeWJyaWQg UE1Vcy4KPj4+PiArICAgICAgICAgICAgICAgICogT25seSBjaGVjayB0aGUgZmlyc3QgYXZhaWxh YmxlIG9uZS4KPj4+PiArICAgICAgICAgICAgICAgICovCj4+Pj4gKyAgICAgICAgICAgICAgIHdo aWxlICgocG11ID0gcGVyZl9wbXVzX19zY2FuX2NvcmUocG11KSkgIT0gTlVMTCkgewo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwbXUtPnR5cGU7Cj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAgICAgICAgICAgIH0KPj4+PiArICAgICAgICAg ICAgICAgYXR0ci5jb25maWcgfD0gdHlwZSA8PCBQRVJGX1BNVV9UWVBFX1NISUZUOwo+Pj4+ICsg ICAgICAgfQo+Pj4+ICsKPj4+PiArICAgICAgIGV2ZW50X2F0dHJfaW5pdCgmYXR0cik7Cj4+Pj4g Kwo+Pj4+ICsgICAgICAgZmQgPSBzeXNfcGVyZl9ldmVudF9vcGVuKCZhdHRyLCAwLCAtMSwgLTEs IDApOwo+Pj4gSXQnZCBiZSBuaWNlIG5vdCB0byByZW1lbWJlciB3aGF0IHRoZSBtYWdpYyAwLCAt MSwgLTEsIDAgbWVhbnMgOi0pCj4+IFN1cmUuCj4+Cj4+Cj4+Pj4gKyAgICAgICBpZiAoZmQgIT0g LTEpIHsKPj4+PiArICAgICAgICAgICAgICAgY2xvc2UoZmQpOwo+Pj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gKFBFUkZfUkVHX0VYVEVOREVEX01BU0sgfCBQRVJGX1JFR1NfTUFTSyk7Cj4+Pj4g KyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIFBFUkZfUkVHU19NQVNLOwo+Pj4+ ICt9Cj4+Pj4KPj4+PiAgY29uc3QgY2hhciAqX19wZXJmX3JlZ19uYW1lX3g4NihpbnQgaWQpCj4+ Pj4gIHsKPj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5jIGIvdG9v bHMvcGVyZi91dGlsL3BlcmZfcmVncy5jCj4+Pj4gaW5kZXggZjIxMTQ4NDc4ZGIxLi45MDA5Mjlj ZmY0YjUgMTAwNjQ0Cj4+Pj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5jCj4+Pj4g KysrIGIvdG9vbHMvcGVyZi91dGlsL3BlcmZfcmVncy5jCj4+Pj4gQEAgLTEzLDE0ICsxMyw4NiBA QCBpbnQgX193ZWFrIGFyY2hfc2R0X2FyZ19wYXJzZV9vcChjaGFyICpvbGRfb3AgX19tYXliZV91 bnVzZWQsCj4+Pj4gICAgICAgICByZXR1cm4gU0RUX0FSR19TS0lQOwo+Pj4+ICB9Cj4+Pj4KPj4+ PiAtdWludDY0X3QgX193ZWFrIGFyY2hfX2ludHJfcmVnX21hc2sodm9pZCkKPj4+PiArdWludDY0 X3QgcGVyZl9pbnRyX3JlZ19tYXNrKHVpbnQxNl90IGVfbWFjaGluZSkKPj4+PiAgewo+Pj4+IC0g ICAgICAgcmV0dXJuIDA7Cj4+Pj4gKyAgICAgICB1aW50NjRfdCBtYXNrID0gMDsKPj4+PiArCj4+ Pj4gKyAgICAgICBzd2l0Y2ggKGVfbWFjaGluZSkgewo+Pj4+ICsgICAgICAgY2FzZSBFTV9BUk06 Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21hc2tfYXJtKC8qaW50cj0q L3RydWUpOwo+Pj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgIGNhc2UgRU1f QUFSQ0g2NDoKPj4+PiArICAgICAgICAgICAgICAgbWFzayA9IF9fcGVyZl9yZWdfbWFza19hcm02 NCgvKmludHI9Ki90cnVlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAg ICBjYXNlIEVNX0NTS1k6Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21h c2tfY3NreSgvKmludHI9Ki90cnVlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4g KyAgICAgICBjYXNlIEVNX0xPT05HQVJDSDoKPj4+PiArICAgICAgICAgICAgICAgbWFzayA9IF9f cGVyZl9yZWdfbWFza19sb29uZ2FyY2goLyppbnRyPSovdHJ1ZSk7Cj4+Pj4gKyAgICAgICAgICAg ICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgY2FzZSBFTV9NSVBTOgo+Pj4+ICsgICAgICAgICAgICAg ICBtYXNrID0gX19wZXJmX3JlZ19tYXNrX21pcHMoLyppbnRyPSovdHJ1ZSk7Cj4+Pj4gKyAgICAg ICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgY2FzZSBFTV9QUEM6Cj4+Pj4gKyAgICAgICBj YXNlIEVNX1BQQzY0Ogo+Pj4+ICsgICAgICAgICAgICAgICBtYXNrID0gX19wZXJmX3JlZ19tYXNr X3Bvd2VycGMoLyppbnRyPSovdHJ1ZSk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ ICsgICAgICAgY2FzZSBFTV9SSVNDVjoKPj4+PiArICAgICAgICAgICAgICAgbWFzayA9IF9fcGVy Zl9yZWdfbWFza19yaXNjdigvKmludHI9Ki90cnVlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJl YWs7Cj4+Pj4gKyAgICAgICBjYXNlIEVNX1MzOTA6Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sg PSBfX3BlcmZfcmVnX21hc2tfczM5MCgvKmludHI9Ki90cnVlKTsKPj4+PiArICAgICAgICAgICAg ICAgYnJlYWs7Cj4+Pj4gKyAgICAgICBjYXNlIEVNXzM4NjoKPj4+PiArICAgICAgIGNhc2UgRU1f WDg2XzY0Ogo+Pj4+ICsgICAgICAgICAgICAgICBtYXNrID0gX19wZXJmX3JlZ19tYXNrX3g4Nigv KmludHI9Ki90cnVlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAgICBk ZWZhdWx0Ogo+Pj4gUHJvYmFibHkgd29ydGggYSBkZWJ1ZyBzdGF0ZW1lbnQgaGVyZSwgbGlrZToK Pj4+IHByX2RlYnVnKCJVbmtub3duIEVMRiBtYWNoaW5lICVkLCBpbnRlcnJ1cHQgc2FtcGxpbmcg cmVnaXN0ZXIgbWFzawo+Pj4gd2lsbCBiZSBlbXB0eS5cbiIpOwo+PiBTdXJlLgo+Pgo+Pgo+Pj4+ ICsgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgIH0KPj4+PiArCj4+Pj4gKyAgICAg ICByZXR1cm4gbWFzazsKPj4+PiAgfQo+Pj4+Cj4+Pj4gLXVpbnQ2NF90IF9fd2VhayBhcmNoX191 c2VyX3JlZ19tYXNrKHZvaWQpCj4+Pj4gK3VpbnQ2NF90IHBlcmZfdXNlcl9yZWdfbWFzayh1aW50 MTZfdCBlX21hY2hpbmUpCj4+Pj4gIHsKPj4+PiAtICAgICAgIHJldHVybiAwOwo+Pj4+ICsgICAg ICAgdWludDY0X3QgbWFzayA9IDA7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgc3dpdGNoIChlX21hY2hp bmUpIHsKPj4+PiArICAgICAgIGNhc2UgRU1fQVJNOgo+Pj4+ICsgICAgICAgICAgICAgICBtYXNr ID0gX19wZXJmX3JlZ19tYXNrX2FybSgvKmludHI9Ki9mYWxzZSk7Cj4+Pj4gKyAgICAgICAgICAg ICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgY2FzZSBFTV9BQVJDSDY0Ogo+Pj4+ICsgICAgICAgICAg ICAgICBtYXNrID0gX19wZXJmX3JlZ19tYXNrX2FybTY0KC8qaW50cj0qL2ZhbHNlKTsKPj4+PiAr ICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAgICBjYXNlIEVNX0NTS1k6Cj4+Pj4gKyAg ICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21hc2tfY3NreSgvKmludHI9Ki9mYWxzZSk7 Cj4+Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgY2FzZSBFTV9MT09OR0FS Q0g6Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21hc2tfbG9vbmdhcmNo KC8qaW50cj0qL2ZhbHNlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAg ICBjYXNlIEVNX01JUFM6Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21h c2tfbWlwcygvKmludHI9Ki9mYWxzZSk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ ICsgICAgICAgY2FzZSBFTV9QUEM6Cj4+Pj4gKyAgICAgICBjYXNlIEVNX1BQQzY0Ogo+Pj4+ICsg ICAgICAgICAgICAgICBtYXNrID0gX19wZXJmX3JlZ19tYXNrX3Bvd2VycGMoLyppbnRyPSovZmFs c2UpOwo+Pj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgIGNhc2UgRU1fUklT Q1Y6Cj4+Pj4gKyAgICAgICAgICAgICAgIG1hc2sgPSBfX3BlcmZfcmVnX21hc2tfcmlzY3YoLypp bnRyPSovZmFsc2UpOwo+Pj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgIGNh c2UgRU1fUzM5MDoKPj4+PiArICAgICAgICAgICAgICAgbWFzayA9IF9fcGVyZl9yZWdfbWFza19z MzkwKC8qaW50cj0qL2ZhbHNlKTsKPj4+PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAg ICAgICBjYXNlIEVNXzM4NjoKPj4+PiArICAgICAgIGNhc2UgRU1fWDg2XzY0Ogo+Pj4+ICsgICAg ICAgICAgICAgICBtYXNrID0gX19wZXJmX3JlZ19tYXNrX3g4NigvKmludHI9Ki9mYWxzZSk7Cj4+ Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgZGVmYXVsdDoKPj4+IFNpbWls YXJseToKPj4+IHByX2RlYnVnKCJVbmtub3duIEVMRiBtYWNoaW5lICVkLCB1c2VyIHNhbXBsaW5n IHJlZ2lzdGVyIG1hc2sgd2lsbCBiZQo+Pj4gZW1wdHkuXG4iKTsKPj4gU3VyZS4gVGhhbmtzLgo+ Pgo+Pgo+Pj4gVGhhbmtzIQo+Pj4gSWFuCj4+Pgo+Pj4+ICsgICAgICAgICAgICAgICBicmVhazsK Pj4+PiArICAgICAgIH0KPj4+PiArCj4+Pj4gKyAgICAgICByZXR1cm4gbWFzazsKPj4+PiAgfQo+ Pj4+Cj4+Pj4gIGNvbnN0IGNoYXIgKnBlcmZfcmVnX25hbWUoaW50IGlkLCB1aW50MTZfdCBlX21h Y2hpbmUpCj4+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuaCBiL3Rv b2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuaAo+Pj4+IGluZGV4IDJjMmE4ZGU2OTEyZC4uODUzMTU4 NGJjMWIxIDEwMDY0NAo+Pj4+IC0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuaAo+Pj4+ ICsrKyBiL3Rvb2xzL3BlcmYvdXRpbC9wZXJmX3JlZ3MuaAo+Pj4+IEBAIC0xMywzNyArMTMsNTUg QEAgZW51bSB7Cj4+Pj4gIH07Cj4+Pj4KPj4+PiAgaW50IGFyY2hfc2R0X2FyZ19wYXJzZV9vcChj aGFyICpvbGRfb3AsIGNoYXIgKipuZXdfb3ApOwo+Pj4+IC11aW50NjRfdCBhcmNoX19pbnRyX3Jl Z19tYXNrKHZvaWQpOwo+Pj4+IC11aW50NjRfdCBhcmNoX191c2VyX3JlZ19tYXNrKHZvaWQpOwo+ Pj4+ICt1aW50NjRfdCBwZXJmX2ludHJfcmVnX21hc2sodWludDE2X3QgZV9tYWNoaW5lKTsKPj4+ PiArdWludDY0X3QgcGVyZl91c2VyX3JlZ19tYXNrKHVpbnQxNl90IGVfbWFjaGluZSk7Cj4+Pj4K Pj4+PiAgY29uc3QgY2hhciAqcGVyZl9yZWdfbmFtZShpbnQgaWQsIHVpbnQxNl90IGVfbWFjaGlu ZSk7Cj4+Pj4gIGludCBwZXJmX3JlZ192YWx1ZSh1NjQgKnZhbHAsIHN0cnVjdCByZWdzX2R1bXAg KnJlZ3MsIGludCBpZCk7Cj4+Pj4gIHVpbnQ2NF90IHBlcmZfYXJjaF9yZWdfaXAodWludDE2X3Qg ZV9tYWNoaW5lKTsKPj4+PiAgdWludDY0X3QgcGVyZl9hcmNoX3JlZ19zcCh1aW50MTZfdCBlX21h Y2hpbmUpOwo+Pj4+ICsKPj4+PiArdWludDY0X3QgX19wZXJmX3JlZ19tYXNrX2FybTY0KGJvb2wg aW50cik7Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFtZV9hcm02NChpbnQgaWQpOwo+ Pj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX2FybTY0KHZvaWQpOwo+Pj4+ICB1aW50NjRfdCBf X3BlcmZfcmVnX3NwX2FybTY0KHZvaWQpOwo+Pj4+ICsKPj4+PiArdWludDY0X3QgX19wZXJmX3Jl Z19tYXNrX2FybShib29sIGludHIpOwo+Pj4+ICBjb25zdCBjaGFyICpfX3BlcmZfcmVnX25hbWVf YXJtKGludCBpZCk7Cj4+Pj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfaXBfYXJtKHZvaWQpOwo+Pj4+ ICB1aW50NjRfdCBfX3BlcmZfcmVnX3NwX2FybSh2b2lkKTsKPj4+PiArCj4+Pj4gK3VpbnQ2NF90 IF9fcGVyZl9yZWdfbWFza19jc2t5KGJvb2wgaW50cik7Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVy Zl9yZWdfbmFtZV9jc2t5KGludCBpZCk7Cj4+Pj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfaXBfY3Nr eSh2b2lkKTsKPj4+PiAgdWludDY0X3QgX19wZXJmX3JlZ19zcF9jc2t5KHZvaWQpOwo+Pj4+ICsK Pj4+PiArdWludDY0X3QgX19wZXJmX3JlZ19tYXNrX2xvb25nYXJjaChib29sIGludHIpOwo+Pj4+ ICBjb25zdCBjaGFyICpfX3BlcmZfcmVnX25hbWVfbG9vbmdhcmNoKGludCBpZCk7Cj4+Pj4gIHVp bnQ2NF90IF9fcGVyZl9yZWdfaXBfbG9vbmdhcmNoKHZvaWQpOwo+Pj4+ICB1aW50NjRfdCBfX3Bl cmZfcmVnX3NwX2xvb25nYXJjaCh2b2lkKTsKPj4+PiArCj4+Pj4gK3VpbnQ2NF90IF9fcGVyZl9y ZWdfbWFza19taXBzKGJvb2wgaW50cik7Cj4+Pj4gIGNvbnN0IGNoYXIgKl9fcGVyZl9yZWdfbmFt ZV9taXBzKGludCBpZCk7Cj4+Pj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfaXBfbWlwcyh2b2lkKTsK Pj4+PiAgdWludDY0X3QgX19wZXJmX3JlZ19zcF9taXBzKHZvaWQpOwo+Pj4+ICsKPj4+PiArdWlu dDY0X3QgX19wZXJmX3JlZ19tYXNrX3Bvd2VycGMoYm9vbCBpbnRyKTsKPj4+PiAgY29uc3QgY2hh ciAqX19wZXJmX3JlZ19uYW1lX3Bvd2VycGMoaW50IGlkKTsKPj4+PiAgdWludDY0X3QgX19wZXJm X3JlZ19pcF9wb3dlcnBjKHZvaWQpOwo+Pj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX3NwX3Bvd2Vy cGModm9pZCk7Cj4+Pj4gKwo+Pj4+ICt1aW50NjRfdCBfX3BlcmZfcmVnX21hc2tfcmlzY3YoYm9v bCBpbnRyKTsKPj4+PiAgY29uc3QgY2hhciAqX19wZXJmX3JlZ19uYW1lX3Jpc2N2KGludCBpZCk7 Cj4+Pj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfaXBfcmlzY3Yodm9pZCk7Cj4+Pj4gIHVpbnQ2NF90 IF9fcGVyZl9yZWdfc3BfcmlzY3Yodm9pZCk7Cj4+Pj4gKwo+Pj4+ICt1aW50NjRfdCBfX3BlcmZf cmVnX21hc2tfczM5MChib29sIGludHIpOwo+Pj4+ICBjb25zdCBjaGFyICpfX3BlcmZfcmVnX25h bWVfczM5MChpbnQgaWQpOwo+Pj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lwX3MzOTAodm9pZCk7 Cj4+Pj4gIHVpbnQ2NF90IF9fcGVyZl9yZWdfc3BfczM5MCh2b2lkKTsKPj4+PiArCj4+Pj4gK3Vp bnQ2NF90IF9fcGVyZl9yZWdfbWFza194ODYoYm9vbCBpbnRyKTsKPj4+PiAgY29uc3QgY2hhciAq X19wZXJmX3JlZ19uYW1lX3g4NihpbnQgaWQpOwo+Pj4+ICB1aW50NjRfdCBfX3BlcmZfcmVnX2lw X3g4Nih2b2lkKTsKPj4+PiAgdWludDY0X3QgX19wZXJmX3JlZ19zcF94ODYodm9pZCk7Cj4+Pj4g LS0KPj4+PiAyLjM0LjEKPj4+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1yaXNjdgo=