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 BF76BCD11C2 for ; Fri, 5 Apr 2024 03:55:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject:MIME-Version: Date:Message-ID:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=K/ujcw8H2abnh7RjPaR4VNw7Dip6/ThosjLTdOCP0oU=; b=Izv753PSb/PdcfctZtIoXtBcAl nCXdyKPtqL1hrNgECh48bxAK/y8kjpTWrFHokU6rXuOT7tjOmx/vCGcPCb08KHmBwr8/d+YugHncn 8eVRzkiNXRcwqK2tNdPlmLRLfJOmLpEZvFgCOsERRvFZY4ieEP1EdG+2zENvnvh7Rdl1vkwt0ZDd7 m02FQaLYni2iR9FyxRReFsmupGc/LlZVD7kF2tjWyKR9jjB7c5I+zCgx9nOWRXxhVmvfI1D33bZl3 +Avtm/LGqufWDt3YUrpIuGo0kqhsOetoFh/22mt009169wz5TxP8QN2n/JwIALGecE920q9CEk13U V7eYViig==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rsafN-000000055eS-0DFp; Fri, 05 Apr 2024 03:55:01 +0000 Received: from iguana.tulip.relay.mailchannels.net ([23.83.218.253]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rsafI-000000055dT-34kD for linux-arm-kernel@lists.infradead.org; Fri, 05 Apr 2024 03:55:00 +0000 X-Sender-Id: dreamhost|x-authsender|adam@younglogic.com Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 407CA842C76 for ; Fri, 5 Apr 2024 03:54:50 +0000 (UTC) Received: from pdx1-sub0-mail-a270.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id E3381842E19 for ; Fri, 5 Apr 2024 03:54:49 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1712289289; a=rsa-sha256; cv=none; b=BxJBJoXgGDm4OtWJmTk6CHfXDlyunD0lS7ydn2SqUc3uGtXqEhLhzOPOTxOx5+CJo+kDyt HBrMharuhxhFni/wD484tG8R6NAfyE1oqeNiY3r7NB018ktYec6S554eofQHaUGyq3dhjB H49R0/0aDvR8A/RtZoM3HuDMnzfNQPdklqnsycm0Fv+qNVxIu9zzX261i1gQJOTMmL8IQ9 jTjWYVy/k99gawonULY4MHyVFcjmwUFbm1pDe42W2UV8dr+fssWwXhgFbt+ISQ8GmTD3hy 0/Ophx44Ia9h6+L3Hd6T9+uLuECeT109Mm6sDlhmHpwHlAUkM+wfjxDdFt+rLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1712289289; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=I8jTYJK+uRbZ9xzuxSrXINibET7cfPxgUxUT/Ogni2A=; b=0s6Neu3IJMfmUiV/5Mx/cU1/aDeH5sQqB7yldLCRgArnDzykBasyU3MVheSkRTq/nRZ4SV A3SBiyFaRMxYduMF0KTeheKqJo13cr5fyztSwDo89M+4N3cB9V67D9TzJOB4veN2c7vFgc mFPZmV05WRT2NJpbgZqBepgPlGc5cdwLUjpjZPPUf0cAo4OwzixsoIXpu3/6TsGVR7LN03 whV1q0NPgtMzvFAaWtTyzDZ4SIDbyl38NXjJBr7Qb7UDVnEz+KpqqkzJTO6JDULsSgtE1a 9p3/QAp1NAv/Ex6cVcTobQovXTaTL9m32oW+sXtsqviXdFdTr4AR5L+nlxsaGw== ARC-Authentication-Results: i=1; rspamd-86f86f958-fgcqd; auth=pass smtp.auth=dreamhost smtp.mailfrom=adam@younglogic.com X-Sender-Id: dreamhost|x-authsender|adam@younglogic.com X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|adam@younglogic.com X-MailChannels-Auth-Id: dreamhost X-Bored-White: 5043bc7b663f103e_1712289290179_2195912139 X-MC-Loop-Signature: 1712289290179:2078219793 X-MC-Ingress-Time: 1712289290179 Received: from pdx1-sub0-mail-a270.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.121.196.206 (trex/6.9.2); Fri, 05 Apr 2024 03:54:50 +0000 Received: from [10.41.139.218] (unknown [149.20.200.64]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) (Authenticated sender: adam@younglogic.com) by pdx1-sub0-mail-a270.dreamhost.com (Postfix) with ESMTPSA id 4V9l493Hxwz2B for ; Thu, 4 Apr 2024 20:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=younglogic.com; s=dreamhost; t=1712289289; bh=I8jTYJK+uRbZ9xzuxSrXINibET7cfPxgUxUT/Ogni2A=; h=Date:Subject:To:From:Content-Type:Content-Transfer-Encoding; b=W2Mad8ib0aWkNn74Uw90OHGt77ukldDc/C9HIqyDUN62XFuNBYeBcIhRgISlhLDbj Hgn6PH+QhYWUDhib96SsLWrwcvVbyHg7TMoiUVwrH07QAirh18N0EFPVV70u1X1n/l ReXlat7rktTNl5IP2oLZgAWKdEj1qWNLYCEFNh6LkEM1sdUWL82wa0XVqjqRUFWOh5 dAD34dNlEtCRCD/lIzQc1pKZRmN/msfsQkQvXeAgrzsQMy955L6cdxHulTk054jJla m2WFDa1D1zdZCNGawoR1+FtlFE0wiuQIPHhBAkPBmA+mygteTQ7t3QEyO+l23OV3O7 rwVAtyI/1iUIQ== Message-ID: <64c01f0d-7206-4240-8dd6-5690fe310a76@younglogic.com> Date: Thu, 4 Apr 2024 23:54:47 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH V17 0/9] arm64/perf: Enable branch stack sampling To: linux-arm-kernel@lists.infradead.org References: <20240405024639.1179064-1-anshuman.khandual@arm.com> Content-Language: en-US From: Adam Young In-Reply-To: <20240405024639.1179064-1-anshuman.khandual@arm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240404_205456_995740_F67402C5 X-CRM114-Status: GOOD ( 37.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org V2lsbCB0aGlzIGFwcGx5IG9uIDYuOD/CoCBXZSBoYXZlIGJlZW4gY2hhc2luZyBnZXR0aW5nIHRo aXMgdGVzdGVkLCBhbmQgCmFyZSBhIHJldmlzaW9uIGJlaGluZCB5b3UuCgpXZSBhcmUganVzdCB0 ZXN0aW5nIG9uIDYuOCwgYW5kIHRoZSBmYWN0IHRoYXQgd2UgZG9uJ3QgaGF2ZSBvbmUgdGhhdCAK d29ya3Mgb24gc3RhYmxlIHJldmlzaW9uIGhhcyBiZWVuIG9uZQoKb2YgdGhlwqAgcmVhc29ucyB3 ZSBoYXZlIG5vdCBwcm92aWRlZCBmZWVkYmFjay4KCkkgZGlkIGdldCB0byB0ZXN0IGFuIGVhcmx5 IHZlcnNpb24gb2YgdGhlIHBhdGNoIHNldmVyYWwgbW9udGhzIGFnbyBhbmQgCnN0cmljdGx5IHNw ZWFraW5nIGl0IHdvcmtzOgoKSSB1c2VkIGEgcXVpY2tzb3J0IGJ1aWx0IHVub3B0aW1pemVkIGFu ZCBjb21wYXJlZCBpdCB3aXRoIGFuIEF1dG9GRE8gCnZlcnNpb24gY29uc3VtaW5nIHRoZSBvdXRw dXQgZnJvbSBCUkJFLsKgIFRoZSBBdXRvRkRPIHZlcnNpb24gd2FzIApzaWduaWZpY2FudGx5IGZh c3Rlciwgc28gd2UgZG8gZ2V0IHNvbWUgb3B0aW1pemF0aW9uLgoKV2hhdCBpcyB0aGF0IGFjdHVh bCBUZXN0IGZyYW1ld29yayB5b3UgYXJlIHVzaW5nIHRvIHRlc3Q/wqAgSSB3b3VsZCBsaWtlIAp0 byBkbyBhbiBhcHBsZXMtdG8tYXBwbGVzIGNvbXBhcmlzb24gd2l0aCB0aGlzIHZlcnNpb24gb2Yg dGhlIHBhdGNoIHNldCAKb3IgdGhlIG1vc3QgcmVjZW50IG9uZSBJIGNhbiBnZXQgdG8gYXBwbHku CgoKCk9uIDQvNC8yNCAyMjo0NiwgQW5zaHVtYW4gS2hhbmR1YWwgd3JvdGU6Cj4gVGhpcyBzZXJp ZXMgZW5hYmxlcyBwZXJmIGJyYW5jaCBzdGFjayBzYW1wbGluZyBzdXBwb3J0IG9uIGFybTY0IHBs YXRmb3JtCj4gdmlhIGEgbmV3IGFyY2ggZmVhdHVyZSBjYWxsZWQgQnJhbmNoIFJlY29yZCBCdWZm ZXIgRXh0ZW5zaW9uIChCUkJFKS4gQWxsCj4gdGhlIHJlbGV2YW50IHJlZ2lzdGVyIGRlZmluaXRp b25zIGNvdWxkIGJlIGFjY2Vzc2VkIGhlcmUuCj4KPiBodHRwczovL2RldmVsb3Blci5hcm0uY29t L2RvY3VtZW50YXRpb24vZGRpMDYwMS8yMDIxLTEyL0FBcmNoNjQtUmVnaXN0ZXJzCj4KPiBUaGlz IHNlcmllcyBhcHBsaWVzIG9uIDYuOS1yYzIuCj4KPiBBbHNvIHRoaXMgc2VyaWVzIGlzIGJlaW5n IGhvc3RlZCBiZWxvdyBmb3IgcXVpY2sgYWNjZXNzLCByZXZpZXcgYW5kIHRlc3QuCj4KPiBodHRw czovL2dpdC5naXRsYWIuYXJtLmNvbS9saW51eC1hcm0vbGludXgtYW5zaHVtYW4uZ2l0IChicmJl X3YxNykKPgo+IFRoZXJlIGFyZSBzdGlsbCBzb21lIG9wZW4gcXVlc3Rpb25zIHJlZ2FyZGluZyBo YW5kbGluZyBtdWx0aXBsZSBwZXJmIGV2ZW50cwo+IHdpdGggZGlmZmVyZW50IHByaXZpbGVnZSBi cmFuY2ggZmlsdGVycyBnZXR0aW5nIG9uIHRoZSBzYW1lIFBNVSwgc3VwcG9ydGluZwo+IGd1ZXN0 IGJyYW5jaCBzdGFjayB0cmFjaW5nIGZyb20gdGhlIGhvc3QgZXRjLiBGaW5hbGx5IGFsc28gbG9v a2luZyBmb3Igc29tZQo+IHN1Z2dlc3Rpb25zIHJlZ2FyZGluZyBzdXBwb3J0aW5nIEJSQkUgaW5z aWRlIHRoZSBndWVzdC4gVGhlIHNlcmllcyBoYXMgYmVlbgo+IHJlLW9yZ2FuaXplZCBjb21wbGV0 ZWx5IGFzIHN1Z2dlc3RlZCBlYXJsaWVyLgo+Cj4gLSBBbnNodW1hbgo+Cj4gPT09PT09PT09PSBQ ZXJmIEJyYW5jaCBTdGFjayBTYW1wbGluZyBTdXBwb3J0IChhcm02NCBwbGF0Zm9ybXMpID09PT09 PT09PT09Cj4KPiBDdXJyZW50bHkgYXJtNjQgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBwZXJm IGJyYW5jaCBzdGFjayBzYW1wbGluZy4gSGVuY2UKPiBhbnkgZXZlbnQgcmVxdWVzdGluZyBmb3Ig YnJhbmNoIHN0YWNrIHJlY29yZHMgaS5lIFBFUkZfU0FNUExFX0JSQU5DSF9TVEFDSwo+IG1hcmtl ZCBpbiBldmVudC0+YXR0ci5zYW1wbGVfdHlwZSwgd2lsbCBiZSByZWplY3RlZCBpbiBhcm1wbXVf ZXZlbnRfaW5pdCgpLgo+Cj4gc3RhdGljIGludCBhcm1wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQpCj4gewo+IAkuLi4uLi4uLgo+ICAgICAgICAgIC8qIGRvZXMgbm90IHN1 cHBvcnQgdGFrZW4gYnJhbmNoIHNhbXBsaW5nICovCj4gICAgICAgICAgaWYgKGhhc19icmFuY2hf c3RhY2soZXZlbnQpKQo+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+IAku Li4uLi4uLgo+IH0KPgo+ICRwZXJmIHJlY29yZCAtaiBhbnksdSxrIGxzCj4gRXJyb3I6Cj4gY3lj bGVzOlA6IFBNVSBIYXJkd2FyZSBvciBldmVudCB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBicmFuY2gg c3RhY2sgc2FtcGxpbmcuCj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBDT05GSUdfQVJNNjRfQlJC RSBhbmQgRkVBVF9CUkJFIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPgo+IEFmdGVyIHRoaXMgc2Vy aWVzLCBwZXJmIGJyYW5jaCBzdGFjayBzYW1wbGluZyBmZWF0dXJlIGdldHMgZW5hYmxlZCBvbiBh cm02NAo+IHBsYXRmb3JtcyB3aGVyZSBGRUFUX0JSQkUgSFcgZmVhdHVyZSBpcyBzdXBwb3J0ZWQs IGFuZCBDT05GSUdfQVJNNjRfQlJCRSBpcwo+IGFsc28gc2VsZWN0ZWQgZHVyaW5nIGJ1aWxkLiBM ZXQncyBvYnNlcnZlIGFsbCBhbGwgcG9zc2libGUgc2NlbmFyaW9zIGhlcmUuCj4KPiAxLiBGZWF0 dXJlIG5vdCBidWlsdCAoIUNPTkZJR19BUk02NF9CUkJFKToKPgo+IEZhbGxzIGJhY2sgdG8gdGhl IGN1cnJlbnQgYmVoYXZpb3VyIGkuZSBldmVudCBnZXRzIHJlamVjdGVkLgo+Cj4gMi4gRmVhdHVy ZSBidWlsdCBidXQgSFcgbm90IHN1cHBvcnRlZCAoQ09ORklHX0FSTTY0X0JSQkUgJiYgIUZFQVRf QlJCRSk6Cj4KPiBGYWxscyBiYWNrIHRvIHRoZSBjdXJyZW50IGJlaGF2aW91ciBpLmUgZXZlbnQg Z2V0cyByZWplY3RlZC4KPgo+IDMuIEZlYXR1cmUgYnVpbHQgYW5kIEhXIHN1cHBvcnRlZCAoQ09O RklHX0FSTTY0X0JSQkUgJiYgRkVBVF9CUkJFKToKPgo+IFBsYXRmb3JtIHN1cHBvcnRzIGJyYW5j aCBzdGFjayBzYW1wbGluZyByZXF1ZXN0cy4gTGV0J3Mgb2JzZXJ2ZSB0aHJvdWdoIGEKPiBzaW1w bGUgZXhhbXBsZSBoZXJlLgo+Cj4gJHBlcmYgcmVjb3JkIC1qIGFueV9jYWxsLHUsayxzYXZlX3R5 cGUgbHMKPgo+IFtQbGVhc2UgcmVmZXIgcGVyZi1yZWNvcmQgbWFuIHBhZ2VzIGZvciBhbGwgcG9z c2libGUgYnJhbmNoIGZpbHRlciBvcHRpb25zXQo+Cj4gJHBlcmYgcmVwb3J0Cj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0gU25pcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIyBPdmVyaGVh ZCAgQ29tbWFuZCAgU291cmNlIFNoYXJlZCBPYmplY3QgIFNvdXJjZSBTeW1ib2wgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgU3ltYm9sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmFzaWMgQmxvY2sgQ3ljbGVzCj4gIyAuLi4uLi4uLiAgLi4uLi4uLiAgLi4u Li4uLi4uLi4uLi4uLi4uLi4gIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAgLi4u Li4uLi4uLi4uLi4uLi4uCj4gIwo+ICAgICAgIDMuNTIlICBscyAgICAgICBba2VybmVsLmthbGxz eW1zXSAgICAgW2tdIHNjaGVkX2Nsb2NrX25vaW5zdHIgICAgICAgICAgICAgICAgICAgICAgIFtr XSBhcmNoX2NvdW50ZXJfZ2V0X2NudHBjdCAgICAgICAgICAgICAgICAgICAxNgo+ICAgICAgIDMu NTIlICBscyAgICAgICBba2VybmVsLmthbGxzeW1zXSAgICAgW2tdIHNjaGVkX2Nsb2NrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtrXSBzY2hlZF9jbG9ja19ub2luc3RyICAgICAgICAg ICAgICAgICAgICAgICA5Cj4gICAgICAgMS44NSUgIGxzICAgICAgIFtrZXJuZWwua2FsbHN5bXNd ICAgICBba10gc2NoZWRfY2xvY2tfY3B1ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tdIHNj aGVkX2Nsb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUKPiAgICAgICAxLjgwJSAg bHMgICAgICAgW2tlcm5lbC5rYWxsc3ltc10gICAgIFtrXSBpcnF0aW1lX2FjY291bnRfaXJxICAg ICAgICAgICAgICAgICAgICAgICBba10gc2NoZWRfY2xvY2tfY3B1ICAgICAgICAgICAgICAgICAg ICAgICAgICAgMjAKPiAgICAgICAxLjU4JSAgbHMgICAgICAgW2tlcm5lbC5rYWxsc3ltc10gICAg IFtrXSBnaWNfaGFuZGxlX2lycSAgICAgICAgICAgICAgICAgICAgICAgICAgICBba10gZ2VuZXJp Y19oYW5kbGVfZG9tYWluX2lycSAgICAgICAgICAgICAgICAgMTkKPiAgICAgICAxLjU4JSAgbHMg ICAgICAgW2tlcm5lbC5rYWxsc3ltc10gICAgIFtrXSBjYWxsX29uX2lycV9zdGFjayAgICAgICAg ICAgICAgICAgICAgICAgICBba10gZ2ljX2hhbmRsZV9pcnEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOQo+ICAgICAgIDEuNTglICBscyAgICAgICBba2VybmVsLmthbGxzeW1zXSAgICAgW2td IGRvX2ludGVycnVwdF9oYW5kbGVyICAgICAgICAgICAgICAgICAgICAgIFtrXSBjYWxsX29uX2ly cV9zdGFjayAgICAgICAgICAgICAgICAgICAgICAgICAyMwo+ICAgICAgIDEuNTglICBscyAgICAg ICBba2VybmVsLmthbGxzeW1zXSAgICAgW2tdIGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEgICAg ICAgICAgICAgICAgIFtrXSBfX2lycV9yZXNvbHZlX21hcHBpbmcgICAgICAgICAgICAgICAgICAg ICA2Cj4gICAgICAgMS41OCUgIGxzICAgICAgIFtrZXJuZWwua2FsbHN5bXNdICAgICBba10gX19p cnFfcmVzb2x2ZV9tYXBwaW5nICAgICAgICAgICAgICAgICAgICAgW2tdIF9fcmN1X3JlYWRfbG9j ayAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gU25pcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiAkcGVyZiByZXBvcnQgLUQgfCBncmVw IGN5Y2xlcwo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNuaXAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+IC4uLi4uICAxOiBmZmZmODAwMDgwZGQzMzM0IC0+IGZmZmY4MDAwODBkZDc1OWMg MzkgY3ljbGVzICBQICAgMCBJTkRfQ0FMTAo+IC4uLi4uICAyOiBmZmZmODAwMDgwZmZhZWEwIC0+ IGZmZmY4MDAwODBmZmI2ODggMTYgY3ljbGVzICBQICAgMCBJTkRfQ0FMTAo+IC4uLi4uICAzOiBm ZmZmODAwMDgwMTM5OTE4IC0+IGZmZmY4MDAwODBmZmFlNjQgOSAgY3ljbGVzICBQICAgMCBDQUxM Cj4gLi4uLi4gIDQ6IGZmZmY4MDAwODBkZDMzMjQgLT4gZmZmZjgwMDA4MDEzOThmOCA3ICBjeWNs ZXMgIFAgICAwIENBTEwKPiAuLi4uLiAgNTogZmZmZjgwMDA4MDBmODU0OCAtPiBmZmZmODAwMDgw ZGQzMzBjIDIxIGN5Y2xlcyAgUCAgIDAgSU5EX0NBTEwKPiAuLi4uLiAgNjogZmZmZjgwMDA4MDBm ODY0YyAtPiBmZmZmODAwMDgwMGY4NGVjIDYgIGN5Y2xlcyAgUCAgIDAgQ0FMTAo+IC4uLi4uICA3 OiBmZmZmODAwMDgwMGY4NmRjIC0+IGZmZmY4MDAwODAwZjg2MzggMTEgY3ljbGVzICBQICAgMCBD QUxMCj4gLi4uLi4gIDg6IGZmZmY4MDAwODAwZjg2ZDQgLT4gZmZmZjgwMDA4MTAwODYzMCAxNiBj eWNsZXMgIFAgICAwIENBTEwKPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTbmlwIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPgo+IHBlcmYgc2NyaXB0IGFuZCBvdGhlciB0b29saW5nIGNhbiBh bHNvIGJlIGFwcGxpZWQgb24gdGhlIGNhcHR1cmVkIHBlcmYuZGF0YQo+IFNpbWlsYXJseSBicmFu Y2ggc3RhY2sgc2FtcGxpbmcgcmVjb3JkcyBjYW4gYmUgY29sbGVjdGVkIHZpYSBkaXJlY3Qgc3lz dGVtCj4gY2FsbCBpLmUgcGVyZl9ldmVudF9vcGVuKCkgbWV0aG9kIGFmdGVyIHNldHRpbmcgJ3N0 cnVjdCBwZXJmX2V2ZW50X2F0dHInIGFzCj4gcmVxdWlyZWQuCj4KPiBldmVudC0+YXR0ci5zYW1w bGVfdHlwZSB8PSBQRVJGX1NBTVBMRV9CUkFOQ0hfU1RBQ0sKPiBldmVudC0+YXR0ci5icmFuY2hf c2FtcGxlX3R5cGUgfD0gUEVSRl9TQU1QTEVfQlJBTkNIXzxGSUxURVJfMT4gfAo+IAkJCQkgIFBF UkZfU0FNUExFX0JSQU5DSF88RklMVEVSXzI+IHwKPiAJCQkJICBQRVJGX1NBTVBMRV9CUkFOQ0hf PEZJTFRFUl8zPiB8Cj4gCQkJCSAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgo+Cj4g QnV0IGFsbCBicmFuY2ggZmlsdGVycyBtaWdodCBub3QgYmUgc3VwcG9ydGVkIG9uIHRoZSBwbGF0 Zm9ybS4KPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJSQkUgQnJhbmNoIEZpbHRlcnMgU3Vw cG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gLSBGb2xsb3dpbmcgYnJhbmNoIGZpbHRl cnMgYXJlIHN1cHBvcnRlZCBvbiBhcm02NC4KPgo+IAlQRVJGX1NBTVBMRV9CUkFOQ0hfVVNFUgkJ LyogQnJhbmNoIHByaXZpbGVnZSBmaWx0ZXJzICovCj4gCVBFUkZfU0FNUExFX0JSQU5DSF9LRVJO RUwKPiAJUEVSRl9TQU1QTEVfQlJBTkNIX0hWCj4KPiAJUEVSRl9TQU1QTEVfQlJBTkNIX0FOWQkJ LyogQnJhbmNoIHR5cGUgZmlsdGVycyAqLwo+IAlQRVJGX1NBTVBMRV9CUkFOQ0hfQU5ZX0NBTEwK PiAJUEVSRl9TQU1QTEVfQlJBTkNIX0FOWV9SRVRVUk4KPiAJUEVSRl9TQU1QTEVfQlJBTkNIX0lO RF9DQUxMCj4gCVBFUkZfU0FNUExFX0JSQU5DSF9DT05ECj4gCVBFUkZfU0FNUExFX0JSQU5DSF9J TkRfSlVNUAo+IAlQRVJGX1NBTVBMRV9CUkFOQ0hfQ0FMTAo+Cj4gCVBFUkZfU0FNUExFX0JSQU5D SF9OT19GTEFHUwkvKiBCcmFuY2ggcmVjb3JkIGZsYWdzICovCj4gCVBFUkZfU0FNUExFX0JSQU5D SF9OT19DWUNMRVMKPiAJUEVSRl9TQU1QTEVfQlJBTkNIX1RZUEVfU0FWRQo+IAlQRVJGX1NBTVBM RV9CUkFOQ0hfSFdfSU5ERVgKPiAJUEVSRl9TQU1QTEVfQlJBTkNIX1BSSVZfU0FWRQo+Cj4gLSBG b2xsb3dpbmcgYnJhbmNoIGZpbHRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gYXJtNjQuCj4KPiAJ UEVSRl9TQU1QTEVfQlJBTkNIX0FCT1JUX1RYCj4gCVBFUkZfU0FNUExFX0JSQU5DSF9JTl9UWAo+ IAlQRVJGX1NBTVBMRV9CUkFOQ0hfTk9fVFgKPiAJUEVSRl9TQU1QTEVfQlJBTkNIX0NBTExfU1RB Q0sKPgo+IEV2ZW50cyByZXF1ZXN0aW5nIGFib3ZlIG5vbi1zdXBwb3J0ZWQgYnJhbmNoIGZpbHRl cnMgZ2V0IHJlamVjdGVkLgo+Cj4gLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3NpYmxlICdicmFuY2hf c2FtcGxlX3R5cGUnIE1pc21hdGNoIC0tLS0tLS0tLS0tLS0tLS0tCj4KPiBCcmFuY2ggc3RhY2sg c2FtcGxpbmcgYXR0cmlidXRlcyAnZXZlbnQtPmF0dHIuYnJhbmNoX3NhbXBsZV90eXBlJyBnZW5l cmFsbHkKPiByZW1haW4gdGhlIHNhbWUgZm9yIGFsbCB0aGUgZXZlbnRzIGR1cmluZyBhIHBlcmYg cmVjb3JkIHNlc3Npb24uCj4KPiAkcGVyZiByZWNvcmQgLWUgPGV2ZW50XzE+IC1lIDxldmVudF8y PiAtaiA8YnJhbmNoX2ZpbHRlcnM+IFt3b3JrbG9hZF0KPgo+IGV2ZW50XzEtPmF0dHIuYnJhbmNo X3NhbXBsZV90eXBlID09IGV2ZW50XzItPmF0dHIuYnJhbmNoX3NhbXBsZV90eXBlCj4KPiBUaGlz ICdicmFuY2hfc2FtcGxlX3R5cGUnIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBCUkJFIGhhcmR3 YXJlLCB3aGVuIGJvdGgKPiBldmVudHMgaS5lIDxldmVudF8xPiBhbmQgPGV2ZW50XzI+IGdldCBz Y2hlZHVsZWQgb24gYSBnaXZlbiBQTVUuIEJ1dCBkdXJpbmcKPiBQTVUgSFcgZXZlbnQncyBwcml2 aWxlZ2UgZmlsdGVyIGluaGVyaXRhbmNlLCAnYnJhbmNoX3NhbXBsZV90eXBlJyBkb2VzIG5vdAo+ IHJlbWFpbiB0aGUgc2FtZSBmb3IgYWxsIGV2ZW50cy4gTGV0J3MgY29uc2lkZXIgdGhlIGZvbGxv d2luZyBleGFtcGxlCj4KPiAkcGVyZiByZWNvcmQgLWUgY3ljbGVzOnUgLWUgaW5zdHJ1Y3Rpb25z OmsgLWogYW55LHNhdmVfdHlwZSBscwo+Cj4gY3ljbGVzLT5hdHRyLmJyYW5jaF9zYW1wbGVfdHlw ZSAhPSBpbnN0cnVjdGlvbnMtPmF0dHIuYnJhbmNoX3NhbXBsZV90eXBlCj4KPiBCZWNhdXNlIGN5 Y2xlcyBldmVudCBpbmhlcml0cyBQRVJGX1NBTVBMRV9CUkFOQ0hfVVNFUiBhbmQgaW5zdHJ1Y3Rp b24gZXZlbnQKPiBpbmhlcml0cyBQRVJGX1NBTVBMRV9CUkFOQ0hfS0VSTkVMLiBUaGUgcHJvcG9z ZWQgc29sdXRpb24gaGVyZSBjb25maWd1cmVzCj4gQlJCRSBoYXJkd2FyZSB3aXRoICdicmFuY2hf c2FtcGxlX3R5cGUnIGZyb20gbGFzdCBldmVudCB0byBiZSBhZGRlZCBpbiB0aGUKPiBQTVUgYW5k IGhlbmNlIGNhcHR1cmVkIGJyYW5jaCByZWNvcmRzIG9ubHkgZ2V0IHBhc3NlZCBvbiB0byBtYXRj aGluZyBldmVudHMKPiBkdXJpbmcgYSBQTVUgaW50ZXJydXB0Lgo+Cj4gc3RhdGljIGludAo+IGFy bXBtdV9hZGQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCj4gewo+IAkuLi4u Li4uLgo+IAlpZiAoaGFzX2JyYW5jaF9zdGFjayhldmVudCkpIHsKPiAJCS8qCj4gCQkgKiBSZXNl dCBicmFuY2ggcmVjb3JkcyBidWZmZXIgaWYgYSBuZXcgdGFzayBldmVudCBnZXRzCj4gCQkgKiBz Y2hlZHVsZWQgb24gYSBQTVUgd2hpY2ggbWlnaHQgaGF2ZSBleGlzdGluZyByZWNvcmRzLgo+IAkJ ICogT3RoZXJ3aXNlIG9sZGVyIGJyYW5jaCByZWNvcmRzIHByZXNlbnQgaW4gdGhlIGJ1ZmZlcgo+ IAkJICogbWlnaHQgbGVhayBpbnRvIHRoZSBuZXcgdGFzayBldmVudC4KPiAJCSAqLwo+IAkJaWYg KGV2ZW50LT5jdHgtPnRhc2sgJiYgaHdfZXZlbnRzLT5icmJlX2NvbnRleHQgIT0gZXZlbnQtPmN0 eCkgewo+IAkJCWh3X2V2ZW50cy0+YnJiZV9jb250ZXh0ID0gZXZlbnQtPmN0eDsKPiAJCQlpZiAo YXJtcG11LT5icmFuY2hfcmVzZXQpCj4gCQkJCWFybXBtdS0+YnJhbmNoX3Jlc2V0KCk7Cj4gCQl9 Cj4gCQlod19ldmVudHMtPmJyYmVfdXNlcnMrKzsKPiBIZXJlIC0tLS0tLS0+CWh3X2V2ZW50cy0+ YnJiZV9zYW1wbGVfdHlwZSA9IGV2ZW50LT5hdHRyLmJyYW5jaF9zYW1wbGVfdHlwZTsKPiAJfQo+ IAkuLi4uLi4uLgo+IH0KPgo+IEluc3RlYWQgb2Ygb3ZlcnJpZGluZyBleGlzdGluZyAnYnJhbmNo X3NhbXBsZV90eXBlJywgYm90aCBjb3VsZCBiZSBtZXJnZWQuCj4KPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gVmlydHVhbGlzYXRpb24gc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPgo+IC0gQnJhbmNoIHN0YWNrIHNhbXBsaW5nIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVk IGluc2lkZSB0aGUgZ3Vlc3QgKFRPRE8pCj4KPiAJLSBGRUFUX0JSQkUgYWR2ZXJ0aXNlZCBhcyBh YnNlbnQgdmlhIGNsZWFyaW5nIElEX0FBNjRERlIwX0VMMS5CUkJFCj4gCS0gRnV0dXJlIHN1cHBv cnQgaW4gZ3Vlc3QgcmVxdWlyZXMgZW11bGF0aW5nIEZFQVRfQlJCRQo+Cj4gLSBCcmFuY2ggc3Rh Y2sgc2FtcGxpbmcgdGhlIGd1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGhvc3QgICAgICAo VE9ETykKPgo+IAktIFRyYWNpbmcgdGhlIGd1ZXN0IHdpdGggZXZlbnQtPmF0dHIuZXhjbHVkZV9n dWVzdCA9IDAKPiAJLSBUaGVyZSBhcmUgbXVsdGlwbGUgY2hhbGxlbmdlcyBpbnZvbHZlZCByZWdh cmRpbmcgbWl4aW5nIGV2ZW50cwo+IAkgIHdpdGggbWlzbWF0Y2hlZCBicmFuY2hfc2FtcGxlX3R5 cGUgYW5kIGV4Y2x1ZGVfZ3Vlc3QgYW5kIHBhc3NpbmcKPiAJICBvbiBjYXB0dXJlZCBCUkJFIHJl Y29yZHMgdG8gaW50ZW5kZWQgZXZlbnRzIGR1cmluZyBQTVUgaW50ZXJydXB0Cj4KPiAtIEd1ZXN0 IGFjY2VzcyBmb3IgQlJCRSByZWdpc3RlcnMgYW5kIGluc3RydWN0aW9ucyBoYXMgYmVlbiBibG9j a2VkCj4KPiAtIEJSQkUgc3RhdGUgc2F2ZSBpcyBub3QgcmVxdWlyZWQgZm9yIFZIRSBob3N0IChF TDIpIGd1ZXN0IChFTDEpIHRyYW5zaXRpb24KPgo+IC0gQlJCRSBzdGF0ZSBpcyBzYXZlZCBmb3Ig TlZIRSBob3N0IChFTDEpIGd1ZXN0IChFTDEpIHRyYW5zaXRpb24KPgo+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFRlc3RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4KPiAtIENyb3NzIGNvbXBpbGVkIGZvciBib3RoIGFybTY0IGFuZCBhcm0zMiBwbGF0Zm9y bXMKPiAtIFBhc3NlcyBhbGwgYnJhbmNoIHRlc3RzIHdpdGggJ3BlcmYgdGVzdCBicmFuY2gnIG9u IGFybTY0Cj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBRdWVzdGlvbnMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gLSBJbnN0ZWFkIG9mIGNvbmZpZ3VyaW5n IHRoZSBCUkJFIEhXIHdpdGggYnJhbmNoX3NhbXBsZV90eXBlIGZyb20gdGhlIGxhc3QKPiAgICBl dmVudCB0byBiZSBhZGRlZCBvbiB0aGUgUE1VIGFzIHByb3Bvc2VkLCBjb3VsZCB0aG9zZSBiZSBt ZXJnZWQgdG9nZXRoZXIKPiAgICBlLmcgYWxsIHByaXZpbGVnZSByZXF1ZXN0cyBPUmVkLCB0byBm b3JtIGEgY29tbW9uIEJSQkUgY29uZmlndXJhdGlvbiBhbmQKPiAgICBhbGwgZXZlbnRzIGdldCBi cmFuY2ggcmVjb3JkcyBhZnRlciBhIFBNVSBpbnRlcnJ1cHQgPwo+Cj4gQ2hhbmdlcyBpbiBWMTc6 Cj4KPiAtIEFkZGVkIGJhY2sgUmV2aWV3ZWQtYnkgdGFncyBmcm9tIE1hcmsgQnJvd24KPiAtIFVw ZGF0ZWQgdGhlIGNvbW1pdCBtZXNzYWdlIHJlZ2FyZGluZyB0aGUgZmllbGQgQlJCSU5GeF9FTDFf VFlQRV9JTVBERUZfVFJBUF9FTDMKPiAtIEFkZGVkIGxlYWRpbmcgMHMgZm9yIGFsbCB2YWx1ZXMg YXMgQlJCSURSMF9FTDEuTlVNUkVDIGlzIGEgOCBiaXQgZmllbGQKPiAtIEFkZGVkIGxlYWRpbmcg MHMgZm9yIGFsbCB2YWx1ZXMgYXMgQlJCRkNSX0VMMS5CQU5LIGlzIGEgMiBiaXQgZmllbGQKPiAt IFJlb3JkZXJlZCBCUkJDUl9FTDEvQlJCQ1JfRUwxMi9CUkJDUl9FTDIgcmVnaXN0ZXJzIGFzIHBl ciBzeXNyZWcgZW5jb2RpbmdzCj4gLSBSZW5hbWVkIHMvRklSU1QvQkFOS18wIGFuZCBzL1NFQ09O RC9CQU5LXzEgaW4gQlJCRkNSX0VMMS5CQU5LCj4gLSBSZW5hbWVkIHMvVU5DT05EX0RJUkVDVC9E SVJFQ1RfVU5DT05EIGluIEJSQklORnhfRUwxLlRZUEUKPiAtIFJlbmFtZWQgcy9DT05EX0RJUkVD VC9ESVJFQ1RfQ09ORCBpbiBCUkJJTkZ4X0VMMS5UWVBFCj4gLSBEcm9wcGVkIF9fU1lTX0JSQklO Ri9fX1NZU19CUkJTUkMvX19TWVNfQlJCVEdUIGFuZCB0aGVpciBleHBhbnNpb25zCj4gLSBNb3Zl ZCBhbGwgZXhpc3RpbmcgQlJCRSByZWdpc3RlcnMgZnJvbSBzeXNyZWcuaCBoZWFkZXIgdG8gdG9v bHMvc3lzcmVnIGZvcm1hdAo+IC0gVXBkYXRlZCB0aGUgY29tbWl0IG1lc3NhZ2UgaW5jbHVkaW5n IGFib3V0IHN5c19pbnNuX2Rlc2NzW10KPiAtIENoYW5nZWQgS1ZNIHRvIHVzZSBleGlzdGluZyBT WVNfQlJCU1JDL1RHVC9JTkZfRUwxKG4pIGZvcm1hdAo+IC0gTW92ZWQgdGhlIEJSQkUgaW5zdHJ1 Y3Rpb25zIGludG8gc3lzX2luc25fZGVzY3NbXSBhcnJheQo+IC0gQVJNIFBNVVYzIGNoYW5nZXMg aGF2ZSBiZWVuIG1vdmVkIGludG8gdGhlIEJSQkUgZHJpdmVyIHBhdGNoIGluc3RlYWQKPiAtIE1v dmVkIGRvd24gYnJhbmNoX3N0YWNrX2FkZCgpIGluIGFybXBtdV9hZGQoKSBhZnRlciBldmVudCdz IGJhc2ljIGNoZWNrcwo+IC0gQWRkZWQgbmV3IGNhbGxiYWNrcyBpbiBzdHJ1Y3QgYXJtX3BtdSBl LmcgYnJhbmNoX3N0YWNrX1tpbml0fGFkZHxkZWxdKCkKPiAtIFJlbmFtZWQgc3RydWN0IGFybV9w bXUgY2FsbGJhY2sgYnJhbmNoX3Jlc2V0KCkgYXMgYnJhbmNoX3N0YWNrX3Jlc2V0KCkKPiAtIERy b3BwZWQgdGhlIGNvbW1lbnQgaW4gYXJtcG11X2V2ZW50X2luaXQoKQo+IC0gUmVuYW1lZCAncG11 X2h3X2V2ZW50cycgZWxlbWVudHMgZnJvbSAnYnJiZV8nIHRvIG1vcmUgZ2VuZXJpYyAnYnJhbmNo XycKPiAtIFNlcGFyYXRlZCBvdXQgZnJvbSB0aGUgQlJCRSBkcml2ZXIgaW1wbGVtZW50YXRpb24g cGF0Y2gKPiAtIERyb3BwZWQgdGhlIGNvbW1lbnQgaW4gX19pbml0X2VsMl9icmJlKCkKPiAtIFVw ZGF0ZWQgX19pbml0X2VsMl9icmJlKCkgd2l0aCBCUkJDUl9FTDIuTVBSRUQgcmVxdWlyZW1lbnRz Cj4gLSBVcGRhdGVkIF9faW5pdF9lbDJfYnJiZSgpIHdpdGggX19jaGVja19odmhlKCkgY29uc3Ry dWN0cwo+IC0gVXBkYXRlZCBib290aW5nLnJzdCByZWdhcmRpbmcgTVBSRUQsIE1EQ1JfRUwzIGFu ZCBmaW5lIGdyYWluZWQgY29udHJvbAo+IC0gRHJvcHBlZCBEb2N1bWVudGF0aW9uL2FyY2gvYXJt NjQvYnJiZS5yc3QKPiAtIFJlbmFtZWQgYXJtdjhwbXVfYnJhbmNoX3Jlc2V0KCkgYXMgYXJtdjhw bXVfYnJhbmNoX3N0YWNrX3Jlc2V0KCkKPiAtIFNlcGFyYXRlZCBvdXQgYm9vdGluZy5yc3QgYW5k IEVMMiBib290IHJlcXVpcmVtZW50cyBpbnRvIGEgbmV3IHBhdGNoCj4gLSBEcm9wcGVkIHByb2Nl c3NfYnJhbmNoX2Fib3J0cygpIGNvbXBsZXRlbHkKPiAtIEFkZGVkIGFuIHdhcm5pbmcgaWYgdHJh bnNhY3Rpb24gc3RhdGVzIGdldCBkZXRlY3RlZCB1bmV4cGVjdGVkbHkKPiAtIERyb3BwZWQgZW51 bSBicmJlX2JhbmtfaWR4IGZyb20gdGhlIGRyaXZlcgo+IC0gRGVmaW5lZCBhcm12OHBtdV9icmFu Y2hfc3RhY2tfaW5pdC9hZGQvZGVsKCkgY2FsbGJhY2tzIGluIHRoZSBkcml2ZXIKPiAtIENoYW5n ZWQgQlJCRSBkcml2ZXIgdG8gdXNlIGV4aXN0aW5nIFNZU19CUkJTUkMvVEdUL0lORl9FTDEobikg Zm9ybWF0Cj4gLSBEcm9wcGVkIGlzYigpIGNhbGwgc2l0ZXMgaW4gIF9fZGVidWdfW3NhdmV8cmVz dG9yZV1fYnJiZSgpCj4gLSBDaGFuZ2VkIHRvIFtyZWFkfHdyaXRlXV9zeXNyZWdfZWwxKCkgYWNj ZXNzb3JzIGluIF9fZGVidWdfW3NhdmV8cmVzdG9yZV1fYnJiZSgpCj4KPiBDaGFuZ2VzIGluIFYx Ngo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjQwMTI1MDk0MTE5LjI1NDIzMzIt MS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gLSBVcGRhdGVkIEJSQklORnhfRUwxLlRZ UEUgPSAwYjExMDAwMCBhcyBmaWVsZCBJTVBERUZfVFJBUF9FTDMKPiAtIFVwZGF0ZWQgQlJCQ1Jf RUx4WzldIGFzIGZpZWxkIEZaUFNTCj4gLSBVcGRhdGVkIEJSQklORklOSl9FTDEgdG8gdXNlIHN5 c3JlZyBmaWVsZCBCUkJJTkZ4X0VMMQo+IC0gQWRkZWQgQlJCX0lORl9TUkNfVEdUX0VMMSBtYWNy byBmb3IgY29ycmVzcG9uZGluZyBCUkJfW0lORnxTUkN8VEdUXSBleHBhbnNpb24KPiAtIFJlbmFt ZWQgYXJtX2JyYmUuaCBhcyBhcm1fcG11djNfYnJhbmNoLmgKPiAtIFVwZGF0ZWQgcGVyZl9zYW1w bGVfc2F2ZV9icnN0YWNrKCkncyBuZXcgYXJndW1lbnQgcmVxdWlyZW1lbnRzIHdpdGggTlVMTAo+ IC0gRml4ZWQgdHlwbyAocy9pbmZvcm1hdGlvbnMvaW5mb3JtYXRpb24pIGluIERvY3VtZW50YXRp b24vYXJjaC9hcm02NC9icmJlLnJzdAo+IC0gQWRkZWQgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXIg aW4gRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L2JyYmUucnN0Cj4gLSBBZGRlZCBuZXcgUEVSRl9T QU1QTEVfQlJBTkNIX0NPVU5URVJTIGludG8gQlJCRV9FWENMVURFX0JSQU5DSF9GSUxURVJTCj4g LSBEcm9wcGVkIEJSQkZDUl9FTDEgYW5kIEJSQkNSX0VMMSBmcm9tIGVudW0gdmNwdV9zeXNyZWcK PiAtIFJldmVydGVkIGJhY2sgdGhlIEtWTSBOVkhFIHBhdGNoIC0gdXNlIGhvc3RfZGVidWdfc3Rh dGUgYmFzZWQgJ2JyYmNyX2VsMScKPiAgICBlbGVtZW50IGFuZCBkcm9wcGVkIHRoZSBwcmV2aW91 cyBkZXBlbmRlbmN5IG9uIEphbWUncyBjb3Jlc2lnaHQgc2VyaWVzCj4KPiBDaGFuZ2VzIGluIFYx NToKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMTIwMTA1MzkwNi4xMjYxNzA0 LTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbS8KPgo+IC0gQWRkZWQgYSBjb21tZW50IGZvciBh cm12OHBtdV9icmFuY2hfcHJvYmUoKSByZWdhcmRpbmcgc2luZ2xlIGNwdSBwcm9iZQo+IC0gQWRk ZWQgYSB0ZXh0IGluIGJyYmUucnN0IHJlZ2FyZGluZyBzaW5nbGUgY3B1IHByb2JlCj4gLSBEcm9w cGVkIHJ1bnRpbWUgQlJCRSBlbmFibGUgZm9yIHNldHRpbmcgREVCVUdfU1RBVEVfU0FWRV9CUkJF Cj4gLSBEcm9wcGVkIHplcm9fYnJhbmNoX3N0YWNrIGJhc2VkIHplcm8gYnJhbmNoIHJlY29yZHMg bWVjaGFuaXNtCj4gLSBSZXBsYWNlZCBCUkJGQ1JfRUwxX0RFRkFVTFRfQ09ORklHIHdpdGggQlJC RkNSX0VMMV9DT05GSUdfTUFTSwo+IC0gQWRkZWQgQlJCRkNSX0VMMV9DT05GSUdfTUFTSyBtYXNr aW5nIGluIGJyYW5jaF90eXBlX3RvX2JyYmZjcigpCj4gLSBNb3ZlZCBCUkJFIGhlbHBlcnMgZnJv bSBhcm1fYnJiZS5oIGludG8gYXJtX2JyYmUuYwo+IC0gTW92ZWQgYXJtdjhfcG11X3h4eCgpIGRl Y2xhcmF0aW9uIGluc2lkZSBhcm1fYnJiZS5oIGZvciBhcm02NCAoQ09ORklHX0FSTTY0X0JSQkUp Cj4gLSBNb3ZlZCBhcm12OF9wbXVfeHh4KCkgc3R1YiBkZWZpbml0aW9ucyBpbnNpZGUgYXJtX2Jy YmUuaCBmb3IgYXJtMzIgKCFDT05GSUdfQVJNNjRfQlJCRSkKPiAtIEluY2x1ZGVkIGFybV9icmJl LmggaGVhZGVyIGJvdGggaW4gYXJtX3BtdXYzLmMgYW5kIGFybV9icmJlLmMKPiAtIERyb3BwZWQg QlJCRSBjdXN0b20gcHJfZm10KCkKPiAtIERyb3BwZWQgQ09ORklHX1BFUkZfRVZFTlRTIHdyYXBw aW5nIGZyb20gaGVhZGVyIGVudHJpZXMKPiAtIEZsdXNoIGJyYW5jaCByZWNvcmRzIHdoZW4gYSBj cHUgYm91bmQgZXZlbnQgZm9sbG93cyBhIHRhc2sgYm91bmQgZXZlbnQKPiAtIERyb3BwZWQgQlJC RkNSX0VMMSBmcm9tIF9fZGVidWdfc2F2ZV9icmJlKCkvX19kZWJ1Z19yZXN0b3JlX2JyYmUoKQo+ IC0gQWx3YXlzIHNhdmUgdGhlIGxpdmUgU1lTX0JSQkNSX0VMMSBpbiBob3N0IGNvbnRleHQgYW5k IHRoZW4gY2hlY2sgaWYKPiAgICBCUkJFIHdhcyBlbmFibGVkIGJlZm9yZSByZXNldHRpbmcgU1lT X0JSQkNSX0VMMSBmb3IgdGhlIGhvc3QKPgo+IENoYW5nZXMgaW4gVjE0Ogo+Cj4gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMxMTE0MDUxMzI5LjMyNzU3Mi0xLWFuc2h1bWFuLmtoYW5k dWFsQGFybS5jb20vCj4KPiAtIFRoaXMgc2VyaWVzIGhhcyBiZWVuIHJlb3JnYW5pc2VkIGFzIHN1 Z2dlc3RlZCBkdXJpbmcgVjEzCj4gLSBUaGVyZSBhcmUganVzdCBlaWdodCBwYXRjaGVzIG5vdyBp LmUgNSBlbmFibGVtZW50IGFuZCAzIHBlcmYgYnJhbmNoIHRlc3RzCj4KPiAtIEZpeGVkIGJyYWNr ZXRzIHByb2JsZW0gaW4gX19TWVNfQlJCSU5GTy9CUkJTUkMvQlJCVEdUKCkgbWFjcm9zCj4gLSBS ZW5hbWVkIHRoZSBtYWNybyBpLmUgcy9fX1NZU19CUkJJTkZPL19fU1lTX0JSQklORi8KPiAtIFJl bmFtZWQgcy9CUkJfSUFMTC9CUkJfSUFMTF9JTlNOIGFuZCBzL0JSQkVfSU5KL0JSQl9JTkpfSU5T Tgo+IC0gTW92ZWQgQlJCX0lBTExfSU5TTiBhbmQgU1lTX0JSQl9JTlNOIGluc3RydWN0aW9ucyB0 byBzeXNyZWcgcGF0Y2gKPiAtIENoYW5nZWQgRTFCUkUgYXMgRXhCUkUgaW4gc3lzcmVnIGZpZWxk cyBpbnNpZGUgQlJCQ1JfRUx4Cj4gLSBVc2VkIEJSQkNSX0VMeCBmb3IgZGVmaW5pbmcgYWxsIEJS QkNSX0VMMSwgQlJCQ1JfRUwyLCBhbmQgQlJCQ1JfRUwxMiAobmV3KQo+Cj4gLSBGb2xkZWQgdGhl IGZvbGxvd2luZyB0aHJlZSBwYXRjaGVzIGludG8gYSBzaW5nbGUgcGF0Y2ggaS5lIFtQQVRDSCAz LzhdCj4KPiAgICBkcml2ZXJzOiBwZXJmOiBhcm1fcG11OiBBZGQgbmV3IHNjaGVkX3Rhc2soKSBj YWxsYmFjawo+ICAgIGFybTY0L3BlcmY6IEFkZCBicmFuY2ggc3RhY2sgc3VwcG9ydCBpbiBzdHJ1 Y3QgYXJtX3BtdQo+ICAgIGFybTY0L3BlcmY6IEFkZCBicmFuY2ggc3RhY2sgc3VwcG9ydCBpbiBz dHJ1Y3QgcG11X2h3X2V2ZW50cwo+ICAgIGFybTY0L3BlcmY6IEFkZCBicmFuY2ggc3RhY2sgc3Vw cG9ydCBpbiBBUk1WOCBQTVUKPiAgICBhcm02NC9wZXJmOiBBZGQgUEVSRl9BVFRBQ0hfVEFTS19E QVRBIHRvIGV2ZW50cyB3aXRoIGhhc19icmFuY2hfc3RhY2soKQo+Cj4gLSBBbGwgYXJtdjhwbXVf YnJhbmNoX3h4eHgoKSBzdHViIGRlZmluaXRpb25zIGhhdmUgYmVlbiBtb3ZlZCBpbnNpZGUKPiAg ICBpbmNsdWRlL2xpbnV4L3BlcmYvYXJtX3BtdXYzLmggZm9yIGVhc3kgYWNjZXNzIGZyb20gYm90 aCBhcm0zMiBhbmQgYXJtNjQKPiAtIEFkZGVkIGJyYmVfdXNlcnMsIGJyYmVfY29udGV4dCBhbmQg YnJiZV9zYW1wbGVfdHlwZSBpbiBzdHJ1Y3QgcG11X2h3X2V2ZW50cwo+IC0gQWRkZWQgY29tbWVu dHMgZm9yIGFsbCB0aGUgYWJvdmUgbmV3IGVsZW1lbnRzIGluIHN0cnVjdCBwbXVfaHdfZXZlbnRz Cj4gLSBBZGRlZCBicmFuY2hfcmVzZXQoKSBhbmQgc2NoZWRfdGFzaygpIGNhbGxiYWNrcwo+IC0g Q2hhbmdlZCBhbmQgb3B0aW1pemVkIGJyYW5jaCByZWNvcmRzIHByb2Nlc3NpbmcgZHVyaW5nIGEg UE1VIElSUQo+IC0gTk8gYnJhbmNoIHJlY29yZHMgZ2V0IGNhcHR1cmVkIGZvciBldmVudCB3aXRo IG1pc21hdGNoZWQgYnJiZV9zYW1wbGVfdHlwZQo+IC0gQnJhbmNoIHJlY29yZCBjb250ZXh0IGlz IHRyYWNrZWQgZnJvbSBhcm1wbXVfZGVsKCkgJiBhcm1wbXVfYWRkKCkKPiAtIEJyYW5jaCByZWNv cmQgaGFyZHdhcmUgaXMgZHJpdmVuIGZyb20gYXJtdjhwbXVfc3RhcnQoKSAmIGFybXY4cG11X3N0 b3AoKQo+IC0gRHJvcHBlZCBOVUxMIGNoZWNrIGZvciAncG11X2N0eCcgaW5zaWRlIGFybXY4cG11 X3NjaGVkX3Rhc2soKQo+IC0gTW92ZWQgZG93biBQRVJGX0FUVEFDSF9UQVNLX0RBVEEgYXNzaWdu bWVudCB3aXRoIGEgcHJlY2VkaW5nIGNvbW1lbnQKPiAtIEluIGNvbmZsaWN0aW5nIGJyYW5jaCBz YW1wbGUgdHlwZSByZXF1ZXN0cywgZmlyc3QgZXZlbnQgdGFrZXMgcHJlY2VkZW5jZQo+Cj4gLSBG b2xkZWQgdGhlIGZvbGxvd2luZyBmaXZlIHBhdGNoZXMgZnJvbSBWMTMgaW50byBhIHNpbmdsZSBw YXRjaCBpLmUKPiAgICBbUEFUQ0ggNC84XQo+Cj4gICAgYXJtNjQvcGVyZjogRW5hYmxlIGJyYW5j aCBzdGFjayBldmVudHMgdmlhIEZFQVRfQlJCRQo+ICAgIGFybTY0L3BlcmY6IEFkZCBzdHJ1Y3Qg YnJiZV9yZWdzZXQgaGVscGVyIGZ1bmN0aW9ucwo+ICAgIGFybTY0L3BlcmY6IEltcGxlbWVudCBi cmFuY2ggcmVjb3JkcyBzYXZlIG9uIHRhc2sgc2NoZWQgb3V0Cj4gICAgYXJtNjQvcGVyZjogSW1w bGVtZW50IGJyYW5jaCByZWNvcmRzIHNhdmUgb24gUE1VIElSUQo+Cj4gLSBGaXhlZCB0aGUgeWVh ciBpbiBjb3B5cmlnaHQgc3RhdGVtZW50Cj4gLSBBZGRlZCBEb2N1bWVudGF0aW9uL2FyY2gvYXJt NjQvYnJiZS5yc3QKPiAtIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9hcmNoL2FybTY0L2Jvb3Rpbmcu cnN0IChCUkJDUl9FTDIuQ0MgZm9yIEVMMSBlbnRyeSkKPiAtIEFkZGVkIF9faW5pdF9lbDJfYnJi ZSgpIHdoaWNoIGVuYWJsZXMgYnJhbmNoIHJlY29yZCBjeWNsZSBjb3VudCBzdXBwb3J0Cj4gLSBE aXNhYmxlZCBFTDIgdHJhcHMgaW4gX19pbml0X2VsMl9mZ3QoKSB3aGlsZSBhY2Nlc3NpbmcgQlJC RSByZWdpc3RlcnMgYW5kCj4gICAgZXhlY3V0aW5nIGluc3RydWN0aW9ucwo+IC0gQ2hhbmdlZCBD T05GSUdfQVJNNjRfQlJCRSB1c2VyIHZpc2libGUgZGVzY3JpcHRpb24KPiAtIEZpeGVkIGEgdHlw byBpbiBDT05GSUdfQVJNNjRfQlJCRSBjb25maWcgb3B0aW9uIGRlc2NyaXB0aW9uIHRleHQKPiAt IEFkZGVkIEJVSUxEX0JVR19PTigpIGNvLXJlbGF0aW5nIEJSQkVfQkFOS19NQVhfRU5UUklFUyBh bmQgTUFYX0JSQU5DSF9SRUNPUkRTCj4gLSBEcm9wcGVkIGFybTY0X2NyZWF0ZV9icmJlX3Rhc2tf Y3R4X2ttZW1fY2FjaGUoKQo+IC0gTW92ZWQgZG93biBjb21tZW50IGZvciBQRVJGX1NBTVBMRV9C UkFOQ0hfS0VSTkVMIGluIGJyYW5jaF90eXBlX3RvX2JyYmNyKCkKPiAtIFJlbmFtZWQgQlJCQ1Jf RUx4X0RFRkFVTFRfQ09ORklHIGFzIEJSQkNSX0VMeF9DT05GSUdfTUFTSwo+IC0gUmVwbGFjZWQg QlJCQ1JfRUx4X0RFRkFVTFRfVFMgd2l0aCBCUkJDUl9FTHhfVFNfTUFTSyBpbiBCUkJDUl9FTHhf Q09ORklHX01BU0sKPiAtIFJlcGxhY2VkIEJSQkNSX0VMeF9FMUJSRSBpbnN0YW5jZXMgd2l0aCBC UkJDUl9FTHhfRXhCUkUKPgo+IC0gQWRkZWQgQlJCRSBzcGVjaWZpYyBicmFuY2ggc3RhY2sgc2Ft cGxpbmcgcGVyZiB0ZXN0IHBhdGNoZXMgaW50byB0aGUgc2VyaWVzCj4gLSBBZGRlZCBhIHBhdGNo IHRvIHByZXZlbnQgZ3Vlc3QgYWNjZXNzZXMgaW50byBCUkJFIHJlZ2lzdGVycyBhbmQgaW5zdHJ1 Y3Rpb25zCj4gLSBBZGRlZCBhIHBhdGNoIHRvIHNhdmUgdGhlIEJSQkUgaG9zdCBjb250ZXh0IGlu IE5WSEUgZW52aXJvbm1lbnQKPiAtIFVwZGF0ZWQgbW9zdCBjb21taXQgbWVzc2FnZXMKPgo+IENo YW5nZXMgaW4gVjEzOgo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwNzExMDgy NDU1LjIxNTk4My0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4gaHR0cHM6Ly9sb3JlLmtl cm5lbC5vcmcvYWxsLzIwMjMwNjIyMDY1MzUxLjEwOTI4OTMtMS1hbnNodW1hbi5raGFuZHVhbEBh cm0uY29tLwo+Cj4gLSBBZGRlZCBicmFuY2ggY2FsbGJhY2sgc3R1YnMgZm9yIGFhcmNoMzIgcG11 djMgYmFzZWQgcGxhdGZvcm1zCj4gLSBVcGRhdGVkIHRoZSBjb21tZW50cyBmb3IgY2FwdHVyZV9i cmJlX3JlZ3NldCgpCj4gLSBEZWxldGVkIHRoZSBjb21tZW50cyBpbiBfX3JlYWRfYnJiZV9yZWdz ZXQoKQo+IC0gUmV2ZXJzZWQgdGhlIGFyZ3VtZW50cyBvcmRlciBpbiBjYXB0dXJlX2JyYmVfcmVn c2V0KCkgYW5kIGJyYmVfYnJhbmNoX3NhdmUoKQo+IC0gRml4ZWQgQlJCRV9CQU5LWzB8MV1fSURY X01BWCBpbmRpY2VzIGNvbXBhcmlzb24gaW4gYXJtdjhwbXVfYnJhbmNoX3JlYWQoKQo+IC0gRml4 ZWQgQlJCRV9CQU5LWzB8MV1fSURYX01BWCBpbmRpY2VzIGNvbXBhcmlzb24gaW4gY2FwdHVyZV9i cmJlX3JlZ3NldCgpCj4KPiBDaGFuZ2VzIGluIFYxMjoKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwu b3JnL2FsbC8yMDIzMDYxNTEzMzIzOS40NDI3MzYtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29t Lwo+Cj4gLSBSZXBsYWNlZCBicmFuY2ggdHlwZXMgd2l0aCBjb21wbGV0ZSBESVJFQ1QvSU5ESVJF Q1QgcHJlZml4ZXMvc3VmZml4ZXMKPiAtIFJlcGxhY2VkIGJyYW5jaCB0eXBlcyB3aXRoIGNvbXBs ZXRlIElOU04vQUxJR04gcHJlZml4ZXMvc3VmZml4ZXMKPiAtIFJlcGxhY2VkIHJldHVybiBicmFu Y2ggdHlwZXMgYXMgc2ltcGxlIFJFVC9FUkVUCj4gLSBSZXBsYWNlZCB0aW1lIGZpZWxkIEdTVF9Q SFlTSUNBTCBhcyBHVUVTVF9QSFlTSUNBTAo+IC0gQWRkZWQgMCBwYWRkaW5nIGZvciBCUkJJRFIw X0VMMS5OVU1SRUMgZW51bSB2YWx1ZXMKPiAtIERyb3BwZWQgaGVscGVyIGFybV9wbXVfYnJhbmNo X3N0YWNrX3N1cHBvcnRlZCgpCj4gLSBSZW5hbWVkIGFybXY4cG11X2JyYW5jaF92YWxpZCgpIGFz IGFybXY4cG11X2JyYW5jaF9hdHRyX3ZhbGlkKCkKPiAtIFNlcGFyYXRlZCBwZXJmX3Rhc2tfY3R4 X2NhY2hlIHNldHVwIGZyb20gYXJtX3BtdSBwcml2YXRlIGFsbG9jYXRpb24KPiAtIENvbGxlY3Rl ZCBjaGFuZ2VzIHRvIGJyYW5jaF9yZWNvcmRzX2FsbG9jKCkgaW4gYSBzaW5nbGUgcGF0Y2ggWzUv MTBdCj4gLSBSZXdvcmtlZCBhbmQgY2xlYW5lZCB1cCBicmFuY2hfcmVjb3Jkc19hbGxvYygpCj4g LSBSZXdvcmtlZCBhcm12OHBtdV9icmFuY2hfcmVhZCgpIHdpdGggbmV3IGxvb3AgaXRlcmF0aW9u cyBpbiBwYXRjaCBbNi8xMF0KPiAtIFJld29ya2VkIGNhcHR1cmVfYnJiZV9yZWdzZXQoKSB3aXRo IG5ldyBsb29wIGl0ZXJhdGlvbnMgaW4gcGF0Y2ggWzgvMTBdCj4gLSBVcGRhdGVkIHRoZSBjb21t ZW50IGluIGJyYW5jaF90eXBlX3RvX2JyYmNyKCkKPiAtIEZpeGVkIHRoZSBjb21tZW50IGJlZm9y ZSBzdGl0Y2hfc3RvcmVkX2xpdmVfZW50cmllcygpCj4gLSBGaXhlZCBCUkJJTkZJTkpfRUwxIGRl ZmluaXRpb24gZm9yIFZBTElEX0ZVTEwgZW51bSBmaWVsZAo+IC0gRmFjdG9yZWQgb3V0IGhlbHBl ciBfX3JlYWRfYnJiZV9yZWdzZXQoKSBmcm9tIGNhcHR1cmVfYnJiZV9yZWdzZXQoKQo+IC0gRHJv cHBlZCB0aGUgaGVscGVyIGNvcHlfYnJiZV9yZWdzZXQoKQo+IC0gU2ltcGxpZmllZCBzdGl0Y2hf c3RvcmVkX2xpdmVfZW50cmllcygpIHdpdGggbWVtY3B5KCksIG1lbW1vdmUoKQo+IC0gUmV3b3Jr ZWQgYXJtdjhwbXVfcHJvYmVfcG11KCkgdG8gYmFpbCBvdXQgZWFybHkgd2l0aCAhcHJvYmUucHJl c2VudAo+IC0gUmV3b3JrIGJyYmVfYXR0cmlidXRlc19wcm9iZSgpIHdpdGhvdXQgJ3N0cnVjdCBi cmJlX2h3X2F0dHInCj4gLSBEcm9wcGVkICdzdHJ1Y3QgYnJiZV9od19hdHRyJyBhcmd1bWVudCBm cm9tIGNhcHR1cmVfYnJiZV9yZWdzZXQoKQo+IC0gRHJvcHBlZCAnc3RydWN0IGJyYmVfaHdfYXR0 cicgYXJndW1lbnQgZnJvbSBicmJlX2JyYW5jaF9zYXZlKCkKPiAtIERyb3BwZWQgYXJtX3BtdS0+ cHJpdmF0ZSBhbmQgYWRkZWQgYXJtX3BtdS0+cmVnX3RyYmlkciBpbnN0ZWFkCj4KPiBDaGFuZ2Vz IGluIFYxMToKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDUzMTA0MDQyOC41 MDE1MjMtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gLSBGaXhlZCB0aGUgY3Jhc2gg Zm9yIHBlci1jcHUgZXZlbnRzIHdpdGhvdXQgZXZlbnQtPnBtdV9jdHgtPnRhc2tfY3R4X2RhdGEK Pgo+IENoYW5nZXMgaW4gVjEwOgo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMw NTE3MDIyNDEwLjcyMjI4Ny0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4KPiAtIFJlYmFz ZWQgdGhlIHNlcmllcyBvbiB2Ni40LXJjMgo+IC0gTW92ZWQgQVJNVjggUE1VVjMgY2hhbmdlcyBp bnNpZGUgZHJpdmVycy9wZXJmL2FybV9wbXV2My5jCj4gLSBNb3ZlZCBCUkJFIGRyaXZlciBjaGFu Z2VzIGluc2lkZSBkcml2ZXJzL3BlcmYvYXJtX2JyYmUuW2N8aF0KPiAtIE1vdmVkIHRoZSBXQVJO X09OKCkgaW5zaWRlIHRoZSBpZiBjb25kaXRpb24gaW4gYXJtdjhwbXVfaGFuZGxlX2lycSgpCj4K PiBDaGFuZ2VzIGluIFY5Ogo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwMzE1 MDUxNDQ0LjE2ODMxNzAtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gLSBGaXhlZCBi dWlsZCBwcm9ibGVtIHdpdGggaGFzX2JyYW5jaF9zdGFjaygpIGluIGFybTY0IGhlYWRlcgo+IC0g QlJCSU5GX0VMMSBkZWZpbml0aW9uIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSAnU3lzcmVnJyB0byAn U3lzcmVnRmllbGRzJwo+IC0gUmVuYW1lZCBhbGwgQlJCSU5GX0VMMSBjYWxsIHNpdGVzIGFzIEJS QklORnhfRUwxCj4gLSBEcm9wcGVkIHN0YXRpYyBjb25zdCBjaGFyIGJyYW5jaF9maWx0ZXJfZXJy b3JfbXNnW10KPiAtIEltcGxlbWVudGVkIGEgcG9zaXRpdmUgbGlzdCBjaGVjayBmb3IgQlJCRSBz dXBwb3J0ZWQgcGVyZiBicmFuY2ggZmlsdGVycwo+IC0gQWRkZWQgYSBjb21tZW50IGluIGFybXY4 cG11X2hhbmRsZV9pcnEoKQo+IC0gSW1wbGVtZW50ZWQgcGVyLWNwdSBhbGxvY2F0aW9uIGZvciBz dHJ1Y3QgYnJhbmNoX3JlY29yZCByZWNvcmRzCj4gLSBTa2lwcGVkIGxvb3BpbmcgdGhyb3VnaCBi YW5rIDEgaWYgYW4gaW52YWxpZCByZWNvcmQgaXMgZGV0ZWN0ZWQgaW4gYmFuayAwCj4gLSBBZGRl ZCBjb21tZW50IGluIGFybXY4cG11X2JyYW5jaF9yZWFkKCkgZXhwbGFpbmluZyBwcm9oaWJpdGVk IHJlZ2lvbiBldGMKPiAtIEFkZGVkIGNvbW1lbnQgd2FybmluZyBhYm91dCBlcnJvbmVvdXNseSBt YXJraW5nIHRyYW5zYWN0aW9ucyBhcyBhYm9ydGVkCj4gLSBSZXBsYWNlZCB0aGUgZmlyc3QgYXJn dW1lbnQgKHBlcmZfYnJhbmNoX2VudHJ5KSBpbiBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+IC0gRHJv cHBlZCB0aGUgbGFzdCBhcmd1bWVudCAoaWR4KSBpbiBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+IC0g RHJvcHBlZCB0aGUgYnJiY3IgYXJndW1lbnQgZnJvbSBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+IC0g VXNlZCBwZXJmX3NhbXBsZV9zYXZlX2Jyc3RhY2soKSB0byBjYXB0dXJlIGJyYW5jaCByZWNvcmRz IGZvciBwZXJmX3NhbXBsZV9kYXRhCj4gLSBBZGRlZCBjb21tZW50IGV4cGxhaW5pbmcgcmF0aW9u YWxlIGZvciBzZXR0aW5nIEJSQkNSX0VMMV9GWlAgZm9yIHVzZXIgb25seSB0cmFjZXMKPiAtIERy b3BwZWQgQlJCRSBwcm9oaWJpdGVkIHN0YXRlIG1lY2hhbmlzbSB3aGlsZSBpbiBhcm12OHBtdV9i cmFuY2hfcmVhZCgpCj4gLSBJbXBsZW1lbnRlZCBldmVudCB0YXNrIGNvbnRleHQgYmFzZWQgYnJh bmNoIHJlY29yZHMgc2F2ZSBtZWNoYW5pc20KPgo+IENoYW5nZXMgaW4gVjg6Cj4KPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzAxMjMxMjU5NTYuMTM1MDMzNi0xLWFuc2h1bWFuLmto YW5kdWFsQGFybS5jb20vCj4KPiAtIFJlcGxhY2VkIGFybV9wbXUtPmZlYXR1cmVzIGFzIGFybV9w bXUtPmhhc19icmFuY2hfc3RhY2ssIHVwZGF0ZWQgaXRzIGhlbHBlcgo+IC0gQWRkZWQgYSBjb21t ZW50IGFuZCBsaW5lIGJyZWFrIGJlZm9yZSBhcm1fcG11LT5wcml2YXRlIGVsZW1lbnQKPiAtIEFk ZGVkIFdBUk5fT05fT05DRSgpIGluIGhlbHBlcnMgaS5lIGFybXY4cG11X2JyYW5jaF9bcmVhZHx2 YWxpZHxlbmFibGV8ZGlzYWJsZV0oKQo+IC0gRHJvcHBlZCBjb21tZW50cyBpbiBhcm12OHBtdV9l bmFibGVfZXZlbnQoKSBhbmQgYXJtdjhwbXVfZGlzYWJsZV9ldmVudCgpCj4gLSBSZXBsYWNlZCBv cGVuIGJhbmsgZW5jb2RpbmcgaW4gQlJCRkNSX0VMMSB3aXRoIFNZU19GSUVMRF9QUkVQKCkKPiAt IENoYW5nZWQgYnJiZV9od19hdHRyLT5icmJlX3ZlcnNpb24gZnJvbSAnYm9vbCcgdG8gJ2ludCcK PiAtIFVwZGF0ZWQgcHJfd2FybigpIGFzIHByX3dhcm5fb25jZSgpIHdpdGggdmFsdWVzIGluIGJy YmVfZ2V0X3BlcmZfW3R5cGV8cHJpdl0oKQo+IC0gUmVwbGFjZWQgYWxsIHByX3dhcm5fb25jZSgp IGFzIHByX2RlYnVnX29uY2UoKSBpbiBhcm12OHBtdV9icmFuY2hfdmFsaWQoKQo+IC0gQWRkZWQg YSBjb21tZW50IGluIGJyYW5jaF90eXBlX3RvX2JyYmNyKCkgZm9yIHRoZSBCUkJDUl9FTDEgcHJp dmlsZWdlIHNldHRpbmdzCj4gLSBNb2RpZmllZCB0aGUgY29tbWVudCByZWxhdGVkIHRvIEJSQklO RnhfRUwxLkxBU1RGQUlMRUQgaW4gY2FwdHVyZV9icmJlX2ZsYWdzKCkKPiAtIE1vZGlmaWVkIGJy YmVfZ2V0X3BlcmZfZW50cnlfdHlwZSgpIGFzIGJyYmVfc2V0X3BlcmZfZW50cnlfdHlwZSgpCj4g LSBSZW5hbWVkIGJyYmVfdmFsaWQoKSBhcyBicmJlX3JlY29yZF9pc19jb21wbGV0ZSgpCj4gLSBS ZW5hbWVkIGJyYmVfc291cmNlKCkgYXMgYnJiZV9yZWNvcmRfaXNfc291cmNlX29ubHkoKQo+IC0g UmVuYW1lZCBicmJlX3RhcmdldCgpIGFzIGJyYmVfcmVjb3JkX2lzX3RhcmdldF9vbmx5KCkKPiAt IEludmVydGVkIGNoZWNrcyBmb3IgIWJyYmVfcmVjb3JkX2lzX1t0YXJnZXR8c291cmNlXV9vbmx5 KCkgZm9yIGluZm8gY2FwdHVyZQo+IC0gUmVwbGFjZWQgJ2ZldGNoJyB3aXRoICdnZXQnIGluIGFs bCBoZWxwZXJzIHRoYXQgZXh0cmFjdCBmaWVsZCB2YWx1ZQo+IC0gRHJvcHBlZCAnc3RhdGljIGlu dCBicmJlX2N1cnJlbnRfYmFuaycgb3B0aW1pemF0aW9uIGluIHNlbGVjdF9icmJlX2JhbmsoKQo+ IC0gRHJvcHBlZCBzZWxlY3RfYnJiZV9iYW5rX2luZGV4KCkgY29tcGxldGVseSwgYWRkZWQgY2Fw dHVyZV9icmFuY2hfZW50cnkoKQo+IC0gUHJvY2VzcyBjYXB0dXJlZCBicmFuY2ggZW50cmllcyBp biB0d28gc2VwYXJhdGUgbG9vcHMgb25lIGZvciBlYWNoIEJSQkUgYmFuawo+IC0gTW92ZWQgYnJh bmNoX3JlY29yZHNfYWxsb2MoKSBpbnNpZGUgYXJtdjhwbXVfcHJvYmVfcG11KCkKPiAtIEFkZGVk IGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGhlbHBlciBoYXNfYnJhbmNoX3N0YWNrKCkK PiAtIEFkZGVkIG5ldyBjYWxsYmFja3MgYXJtdjhwbXVfcHJpdmF0ZV9hbGxvYygpIGFuZCBhcm12 OHBtdV9wcml2YXRlX2ZyZWUoKQo+IC0gVXBkYXRlZCBhcm12OHBtdV9wcm9iZV9wbXUoKSB0byBh bGxvY2F0ZSB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgYmVmb3JlIFNNUCBjYWxsCj4KPiBDaGFuZ2Vz IGluIFY3Ogo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjMwMTA1MDMxMDM5LjIw Nzk3Mi0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4KPiAtIEZvbGRlZCBbUEFUQ0ggNy83 XSBpbnRvIFtQQVRDSCAzLzddIHdoaWNoIGVuYWJsZXMgYnJhbmNoIHN0YWNrIHNhbXBsaW5nIGV2 ZW50Cj4gLSBEZWZpbmVkIEJSQkZDUl9FTDFfQlJBTkNIX0ZJTFRFUlMsIEJSQkNSX0VMMV9ERUZB VUxUX0NPTkZJRyBpbiB0aGUgaGVhZGVyCj4gLSBEZWZpbmVkIEJSQkZDUl9FTDFfREVGQVVMVF9D T05GSUcgaW4gdGhlIGhlYWRlcgo+IC0gVXBkYXRlZCBCUkJDUl9FTDFfREVGQVVMVF9DT05GSUcg d2l0aCBCUkJDUl9FTDFfRlpQCj4gLSBEZWZpbmVkIEJSQkNSX0VMMV9ERUZBVUxUX1RTIGluIHRo ZSBoZWFkZXIKPiAtIFVwZGF0ZWQgQlJCQ1JfRUwxX0RFRkFVTFRfQ09ORklHIHdpdGggQlJCQ1Jf RUwxX0RFRkFVTFRfVFMKPiAtIE1vdmVkIEJSQkNSX0VMMV9ERUZBVUxUX0NPTkZJRyBjaGVjayBp bnNpZGUgYnJhbmNoX3R5cGVfdG9fYnJiY3IoKQo+IC0gTW92ZWQgZG93biBCUkJDUl9FTDFfQ0Ms IEJSQkNSX0VMMV9NUFJFRCBsYXRlciBpbiBicmFuY2hfdHlwZV90b19icmJjcigpCj4gLSBBbHNv IHNldCBCUkJFIGluIHBhdXNlZCBzdGF0ZSBpbiBhcm12OHBtdV9icmFuY2hfZGlzYWJsZSgpCj4g LSBEcm9wcGVkIGJyYmVfcGF1c2VkKCksIHNldF9icmJlX3BhdXNlZCgpIGhlbHBlcnMKPiAtIEV4 dHJhY3RlZCBlcnJvciBzdHJpbmcgdmlhIGJyYW5jaF9maWx0ZXJfZXJyb3JfbXNnW10gZm9yIGFy bXY4cG11X2JyYW5jaF92YWxpZCgpCj4gLSBSZXBsYWNlZCBicmJlX3YxcDEgd2l0aCBicmJlX3Zl cnNpb24gaW4gc3RydWN0IGJyYmVfaHdfYXR0cgo+IC0gQWRkZWQgdmFsaWRfYnJiZV9bY2MsIGZv cm1hdCwgdmVyc2lvbl0oKSBoZWxwZXJzCj4gLSBTcGxpdCBhIHNlcGFyYXRlIGJyYmVfYXR0cmli dXRlc19wcm9iZSgpIGZyb20gYXJtdjhwbXVfYnJhbmNoX3Byb2JlKCkKPiAtIENhcHR1cmUgZXZl bnQtPmF0dHIuYnJhbmNoX3NhbXBsZV90eXBlIGVhcmxpZXIgaW4gYXJtdjhwbXVfYnJhbmNoX3Zh bGlkKCkKPiAtIERlZmluZWQgZW51bSBicmJlX2JhbmtfaWR4IHdpdGggcG9zc2libGUgdmFsdWVz IGZvciBCUkJFIGJhbmsgaW5kaWNlcwo+IC0gQ2hhbmdlZCBhcm1wbXUtPmh3X2F0dHIgaW50byBh cm1wbXUtPnByaXZhdGUKPiAtIEFkZGVkIG1pc3Npbmcgc3BhY2UgaW4gc3R1YiBkZWZpbml0aW9u IGZvciBhcm12OHBtdV9icmFuY2hfdmFsaWQoKQo+IC0gUmVwbGFjZWQgYm90aCBrbWFsbG9jKCkg d2l0aCBremFsbG9jKCkKPiAtIEFkZGVkIEJSQkVfQkFOS19NQVhfRU5UUklFUwo+IC0gVXBkYXRl ZCBjb21tZW50IGZvciBjYXB0dXJlX2JyYmVfZmxhZ3MoKQo+IC0gVXBkYXRlZCBjb21tZW50IGZv ciBzdHJ1Y3QgYnJiZV9od19hdHRyCj4gLSBEcm9wcGVkIHNwYWNlIGFmdGVyIHR5cGUgY2FzdCBp biBjb3VwbGUgb2YgcGxhY2VzCj4gLSBSZXBsYWNlZCBpbnZlcnNlIHdpdGggbmVnYXRpb24gZm9y IHRlc3RpbmcgQlJCQ1JfRUwxX0ZaUCBpbiBhcm12OHBtdV9icmFuY2hfcmVhZCgpCj4gLSBDYXB0 dXJlZCBjcHVjLT5icmFuY2hlcy0+YnJhbmNoX2VudHJpZXNbaWR4XSBpbiBhIGxvY2FsIHZhcmlh YmxlCj4gLSBEcm9wcGVkIHNhdmVkX3ByaXYgZnJvbSBhcm12OHBtdV9icmFuY2hfcmVhZCgpCj4g LSBSZW9yZ2FuaXplIFBFUkZfU0FNUExFX0JSQU5DSF9OT19bQ1lDTEVTfE5PX0ZMQUdTXSByZWxh dGVkIGNvbmZpZ3VyYXRpb24KPiAtIFJlcGxhY2VkIHdpdGggRklFTERfR0VUKCkgYW5kIEZJRUxE X1BSRVAoKSB3aGVyZXZlciBhcHBsaWNhYmxlCj4gLSBSZXBsYWNlZCBCUkJDUl9FTDFfVFNfUEhZ U0lDQUwgd2l0aCBCUkJDUl9FTDFfVFNfVklSVFVBTAo+IC0gTW92ZWQgdmFsaWRfYnJiZV9ucigp LCB2YWxpZF9icmJlX2NjKCksIHZhbGlkX2JyYmVfZm9ybWF0KCksIHZhbGlkX2JyYmVfdmVyc2lv bigpCj4gICAgc2VsZWN0X2JyYmVfYmFuaygpLCBzZWxlY3RfYnJiZV9iYW5rX2luZGV4KCkgaGVs cGVycyBpbnNpZGUgdGhlIEMgaW1wbGVtZW50YXRpb24KPiAtIFJlb3JnYW5pemVkIGJyYmVfdmFs aWRfbnIoKSBhbmQgZHJvcHBlZCB0aGUgcHJfd2FybigpIG1lc3NhZ2UKPiAtIENoYW5nZWQgcHJv YmUgc2VxdWVuY2UgaW4gYnJiZV9hdHRyaWJ1dGVzX3Byb2JlKCkKPiAtIEFkZGVkICdicmJjcicg YXJndW1lbnQgaW50byBjYXB0dXJlX2JyYmVfZmxhZ3MoKSB0byBhc2NlcnRhaW4gY29ycmVjdCBz dGF0ZQo+IC0gRGlzYWJsZSBCUkJFIGJlZm9yZSBkaXNhYmxpbmcgdGhlIFBNVSBldmVudCBjb3Vu dGVyCj4gLSBFbmFibGUgUEVSRl9TQU1QTEVfQlJBTkNIX0hWIGZpbHRlcnMgd2hlbiBpc19rZXJu ZWxfaW5faHlwX21vZGUoKQo+IC0gR3VhcmQgYXJtdjhwbXVfcmVzZXQoKSAmIGFybXY4cG11X3Nj aGVkX3Rhc2soKSB3aXRoIGFybV9wbXVfYnJhbmNoX3N0YWNrX3N1cHBvcnRlZCgpCj4KPiBDaGFu Z2VzIGluIFY2Ogo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtYXJtLWtlcm5lbC8y MDIyMTIwODA4NDQwMi44NjMzMTAtMS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gLSBS ZXN0b3JlIHRoZSBleGNlcHRpb24gbGV2ZWwgcHJpdmlsZWdlIGFmdGVyIHJlYWRpbmcgdGhlIGJy YW5jaCByZWNvcmRzCj4gLSBVbnBhdXNlIHRoZSBidWZmZXIgYWZ0ZXIgcmVhZGluZyB0aGUgYnJh bmNoIHJlY29yZHMKPiAtIERlY291cGxlIEJSQkNSX0VMMV9FWENFUFRJT04vRVJUTiBmcm9tIHBl cmYgZXZlbnQgcHJpdmlsZWdlIGxldmVsCj4gLSBSZXdvcmtlZCBCUkJFIGltcGxlbWVudGF0aW9u IGFuZCBicmFuY2ggc3RhY2sgc2FtcGxpbmcgc3VwcG9ydCBvbiBhcm0gcG11Cj4gLSBCUkJFIGlt cGxlbWVudGF0aW9uIGlzIG5vdyBwYXJ0IG9mIG92ZXJhbGwgQVJNVjggUE1VIGltcGxlbWVudGF0 aW9uCj4gLSBCUkJFIGltcGxlbWVudGF0aW9uIG1vdmVkIGZyb20gZHJpdmVycy9wZXJmLyB0byBp bnNpZGUgYXJjaC9hcm02NC9rZXJuZWwvCj4gLSBDT05GSUdfQVJNX0JSQkVfUE1VIHJlbmFtZWQg YXMgQ09ORklHX0FSTTY0X0JSQkUgaW4gYXJjaC9hcm02NC9LY29uZmlnCj4gLSBGaWxlIG1vdmVk IC0gZHJpdmVycy9wZXJmL2FybV9wbXVfYnJiZS5jIC0+IGFyY2gvYXJtNjQva2VybmVsL2JyYmUu Ywo+IC0gRmlsZSBtb3ZlZCAtIGRyaXZlcnMvcGVyZi9hcm1fcG11X2JyYmUuaCAtPiBhcmNoL2Fy bTY0L2tlcm5lbC9icmJlLmgKPiAtIEJSQkUgbmFtZSBoYXMgYmVlbiBkcm9wcGVkIGZyb20gc3Ry dWN0IGFybV9wbXUgYW5kIHN0cnVjdCBod19wbXVfZXZlbnRzCj4gLSBCUkJFIG5hbWUgaGFzIGJl ZW4gYWJzdHJhY3RlZCBvdXQgYXMgJ2JyYW5jaGVzJyBpbiBhcm1fcG11IGFuZCBod19wbXVfZXZl bnRzCj4gLSBCUkJFIG5hbWUgaGFzIGJlZW4gYWJzdHJhY3RlZCBvdXQgYXMgJ2JyYW5jaGVzJyBp biBBUk1WOCBQTVUgaW1wbGVtZW50YXRpb24KPiAtIEFkZGVkIHNjaGVkX3Rhc2soKSBjYWxsYmFj ayBpbnRvIHN0cnVjdCBhcm1fcG11Cj4gLSBBZGRlZCAnaHdfYXR0cicgaW50byBzdHJ1Y3QgYXJt X3BtdSBlbmNhcHN1bGF0aW5nIHBvc3NpYmxlIFBNVSBIVyBhdHRyaWJ1dGVzCj4gLSBEcm9wcGVk IGV4cGxpY2l0IGF0dHJpYnV0ZXMgYnJiZV8odjFwMSwgbnIsIGNjLCBmb3JtYXQpIGZyb20gc3Ry dWN0IGFybV9wbXUKPiAtIERyb3BwZWQgYnJiZmNyLCBicmJjciwgcmVnaXN0ZXJzIHNjcmF0Y2gg YXJlYSBmcm9tIHN0cnVjdCBod19wbXVfZXZlbnRzCj4gLSBEcm9wcGVkIGJyYmVfdXNlcnMsIGJy YmVfY29udGV4dCB0cmFja2luZyBpbiBzdHJ1Y3QgaHdfcG11X2V2ZW50cwo+IC0gQWRkZWQgJ2Zl YXR1cmVzJyB0cmFja2luZyBpbnRvIHN0cnVjdCBhcm1fcG11IHdpdGggQVJNX1BNVV9CUkFOQ0hf U1RBQ0sgZmxhZwo+IC0gYXJtcG11LT5od19hdHRyIG1hcHMgaW50byAnc3RydWN0IGJyYmVfaHdf YXR0cicgaW5zaWRlIEJSQkUgaW1wbGVtZW50YXRpb24KPiAtIFNldCBBUk1fUE1VX0JSQU5DSF9T VEFDSyBpbiAnYXJtX3BtdS0+ZmVhdHVyZXMnIGFmdGVyIHN1Y2Nlc3NmdWwgQlJCRSBwcm9iZQo+ IC0gQWRkZWQgYXJtdjhwbXVfYnJhbmNoX3Jlc2V0KCkgaW5zaWRlIGFybXY4cG11X2JyYW5jaF9l bmFibGUoKQo+IC0gRHJvcHBlZCBicmJlX3N1cHBvcnRlZCgpIGFzIGV2ZW50cyB3aWxsIGJlIHJl amVjdGVkIHZpYSBBUk1fUE1VX0JSQU5DSF9TVEFDSwo+IC0gRHJvcHBlZCBzZXRfYnJiZV9kaXNh YmxlZCgpIGFzIHdlbGwKPiAtIFJlZm9ybWF0ZWQgYXJtdjhwbXVfYnJhbmNoX3ZhbGlkKCkgd2Fy bmluZ3Mgd2hpbGUgcmVqZWN0aW5nIHVuc3VwcG9ydGVkIGV2ZW50cwo+Cj4gQ2hhbmdlcyBpbiBW NToKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWFybS1rZXJuZWwvMjAyMjExMDcw NjI1MTQuMjg1MTA0Ny0xLWFuc2h1bWFuLmtoYW5kdWFsQGFybS5jb20vCj4KPiAtIENoYW5nZWQg QlJCQ1JfRUwxLlZJUlRVQUwgZnJvbSAwYjEgdG8gMGIwMQo+IC0gQ2hhbmdlZCBCUkJGQ1JfRUwx LkVuTCBpbnRvIEJSQkZDUl9FTDEuRW5JCj4gLSBDaGFuZ2VkIGNvbmZpZyBBUk1fQlJCRV9QTVUg ZnJvbSAndHJpc3RhdGUnIHRvICdib29sJwo+Cj4gQ2hhbmdlcyBpbiBWNDoKPgo+IGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2FsbC8yMDIyMTAxNzA1NTcxMy40NTEwOTItMS1hbnNodW1hbi5raGFu ZHVhbEBhcm0uY29tLwo+Cj4gLSBDaGFuZ2VkIC4uL3Rvb2xzL3N5c3JlZyBkZWNsYXJhdGlvbnMg YXMgc3VnZ2VzdGVkCj4gLSBTZXQgUEVSRl9TQU1QTEVfQlJBTkNIX1NUQUNLIGluIGRhdGEuc2Ft cGxlX2ZsYWdzCj4gLSBEcm9wcGVkIHBlcmZtb25fY2FwYWJsZSgpIGNoZWNrIGluIGFybXBtdV9l dmVudF9pbml0KCkKPiAtIHMvcHJfd2Fybl9vbmNlL3ByX2luZm8gaW4gYXJtcG11X2V2ZW50X2lu aXQoKQo+IC0gQWRkZWQgYnJiZV9mb3JtYXQgZWxlbWVudCBpbnRvIHN0cnVjdCBwbXVfaHdfZXZl bnRzCj4gLSBDaGFuZ2VkIHYxcDEgYXMgYnJiZV92MXAxIGluIHN0cnVjdCBwbXVfaHdfZXZlbnRz Cj4gLSBEcm9wcGVkIHByX2luZm8oKSBmcm9tIGFybTY0X3BtdV9icmJlX3Byb2JlKCksIHNvbHZl ZCBMT0NLREVQIHdhcm5pbmcKPgo+IENoYW5nZXMgaW4gVjM6Cj4KPiBodHRwczovL2xvcmUua2Vy bmVsLm9yZy9hbGwvMjAyMjA5MjkwNzU4NTcuMTU4MzU4LTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJt LmNvbS8KPgo+IC0gTW92ZWQgYnJiZV9zdGFjayBmcm9tIHRoZSBzdGFjayBhbmQgbm93IGR5bmFt aWNhbGx5IGFsbG9jYXRlZAo+IC0gUmV0dXJuIFBFUkZfQlJfUFJJVl9VTktOT1dOIGluc3RlYWQg b2YgLTEgaW4gYnJiZV9mZXRjaF9wZXJmX3ByaXYoKQo+IC0gTW92ZWQgQlJCSURSMCwgQlJCQ1Is IEJSQkZDUiByZWdpc3RlcnMgYW5kIGZpZWxkcyBpbnRvIHRvb2xzL3N5c3JlZwo+IC0gQ3JlYXRl ZCBkdW1teSBCUkJJTkZfRUwxIGZpZWxkIGRlZmluaXRpb25zIGluIHRvb2xzL3N5c3JlZwo+IC0g RHJvcHBlZCBBUk1QTVVfRVZUX1BSSVYgZnJhbWV3b3JrIHdoaWNoIGNhY2hlZCBwZXJmbW9uX2Nh cGFibGUoKQo+IC0gQm90aCBleGNlcHRpb24gYW5kIGV4Y2VwdGlvbiByZXR1cm4gYnJhbmNoZSBy ZWNvcmRzIGFyZSBub3cgY2FwdHVyZWQKPiAgICBvbmx5IGlmIHRoZSBldmVudCBoYXMgUEVSRl9T QU1QTEVfQlJBTkNIX0tFUk5FTCB3aGljaCB3b3VsZCBhbHJlYWR5Cj4gICAgYmVlbiBjaGVja2Vk IGluIGdlbmVyaWMgcGVyZiB2aWEgcGVyZl9hbGxvd19rZXJuZWwoKQo+Cj4gQ2hhbmdlcyBpbiBW MjoKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIyMDkwODA1MTA0Ni40NjUzMDct MS1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gLSBEcm9wcGVkIGJyYW5jaCBzYW1wbGUg ZmlsdGVyIGhlbHBlcnMgY29uc29saWRhdGlvbiBwYXRjaCBmcm9tIHRoaXMgc2VyaWVzCj4gLSBB ZGRlZCBuZXcgaHdfcGVyZl9ldmVudC5mbGFncyBlbGVtZW50IEFSTVBNVV9FVlRfUFJJViB0byBj YWNoZSBwZXJmbW9uX2NhcGFibGUoKQo+IC0gVXNlIGNhY2hlZCBwZXJmbW9uX2NhcGFibGUoKSB3 aGlsZSBjb25maWd1cmluZyBCUkJFIGJyYW5jaCByZWNvcmQgZmlsdGVycwo+Cj4gQ2hhbmdlcyBp biBWMToKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWFybS1rZXJuZWwvMjAyMjA2 MTMxMDAxMTkuNjg0NjczLTEtYW5zaHVtYW4ua2hhbmR1YWxAYXJtLmNvbS8KPgo+IC0gQWRkZWQg Q09ORklHX1BFUkZfRVZFTlRTIHdyYXBwZXIgZm9yIGFsbCBicmFuY2ggc2FtcGxlIGZpbHRlciBo ZWxwZXJzCj4gLSBQcm9jZXNzIG5ldyBwZXJmIGJyYW5jaCB0eXBlcyB2aWEgUEVSRl9CUl9FWFRF TkRfQUJJCj4KPiBDaGFuZ2VzIGluIFJGQyBWMjoKPgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2xpbnV4LWFybS1rZXJuZWwvMjAyMjA0MTIxMTU0NTUuMjkzMTE5LTEtYW5zaHVtYW4ua2hhbmR1 YWxAYXJtLmNvbS8KPgo+IC0gQWRkZWQgYnJhbmNoX3NhbXBsZV9wcml2KCkgd2hpbGUgY29uc29s aWRhdGluZyBvdGhlciBicmFuY2ggc2FtcGxlIGZpbHRlciBoZWxwZXJzCj4gLSBDaGFuZ2VkIGFs bCBTWVNfQlJCWFhYTl9FTDEgcmVnaXN0ZXIgZGVmaW5pdGlvbiBlbmNvZGluZ3MgcGVyIE1hcmMK PiAtIENoYW5nZWQgdGhlIEJSQkUgZHJpdmVyIGFzIHBlciBwcm9wb3NlZCBCUkJFIHJlbGF0ZWQg cGVyZiBBQkkgY2hhbmdlcyAoVjUpCj4gLSBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBzdHJ1Y3Qg YXJtX3BtdSBjaGFuZ2VzLCB1cGRhdGVkIGNvbW1pdCBtZXNzYWdlCj4gLSBVcGRhdGVkIGNvbW1p dCBtZXNzYWdlIGZvciBCUkJFIGRldGVjdGlvbiBpbmZyYXN0cnVjdHVyZSBwYXRjaAo+IC0gUEVS Rl9TQU1QTEVfQlJBTkNIX0tFUk5FTCBnZXRzIGNoZWNrZWQgZHVyaW5nIGFybSBldmVudCBpbml0 IChvdXRzaWRlIHRoZSBkcml2ZXIpCj4gLSBCcmFuY2ggcHJpdmlsZWdlIHN0YXRlIGNhcHR1cmUg bWVjaGFuaXNtIGhhcyBub3cgbW92ZWQgaW5zaWRlIHRoZSBkcml2ZXIKPgo+IENoYW5nZXMgaW4g UkZDIFYxOgo+Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzE2NDI5OTg2NTMtMjEzNzct MS1naXQtc2VuZC1lbWFpbC1hbnNodW1hbi5raGFuZHVhbEBhcm0uY29tLwo+Cj4gQ2M6IENhdGFs aW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Cj4gQ2M6IFdpbGwgRGVhY29uIDx3 aWxsQGtlcm5lbC5vcmc+Cj4gQ2M6IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+ Cj4gQ2M6IE1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4KPiBDYzogSmFtZXMgQ2xhcmsg PGphbWVzLmNsYXJrQGFybS5jb20+Cj4gQ2M6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+ Cj4gQ2M6IE1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+Cj4gQ2M6IFN1enVraSBQb3Vsb3Nl IDxzdXp1a2kucG91bG9zZUBhcm0uY29tPgo+IENjOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGlu ZnJhZGVhZC5vcmc+Cj4gQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgo+IENjOiBB cm5hbGRvIENhcnZhbGhvIGRlIE1lbG8gPGFjbWVAa2VybmVsLm9yZz4KPiBDYzogbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gQ2M6IGxpbnV4LXBlcmYtdXNlcnNAdmdlci5r ZXJuZWwub3JnCj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPgo+IEFuc2h1bWFu IEtoYW5kdWFsICg2KToKPiAgICBhcm02NC9zeXNyZWc6IEFkZCBCUkJFIHJlZ2lzdGVycyBhbmQg ZmllbGRzCj4gICAgS1ZNOiBhcm02NDogRXhwbGljaXRseSBoYW5kbGUgQlJCRSB0cmFwcyBhcyBV TkRFRklORUQKPiAgICBkcml2ZXJzOiBwZXJmOiBhcm1fcG11OiBBZGQgaW5mcmFzdHJ1Y3R1cmUg Zm9yIGJyYW5jaCBzdGFjayBzYW1wbGluZwo+ICAgIGFybTY0L2Jvb3Q6IEVuYWJsZSBFTDIgcmVx dWlyZW1lbnRzIGZvciBCUkJFCj4gICAgZHJpdmVyczogcGVyZjogYXJtX3BtdXYzOiBFbmFibGUg YnJhbmNoIHN0YWNrIHNhbXBsaW5nIHZpYSBGRUFUX0JSQkUKPiAgICBLVk06IGFybTY0OiBudmhl OiBEaXNhYmxlIGJyYW5jaCBnZW5lcmF0aW9uIGluIG5WSEUgZ3Vlc3RzCj4KPiBKYW1lcyBDbGFy ayAoMyk6Cj4gICAgcGVyZjogdGVzdDogU3BlZWQgdXAgcnVubmluZyBicnN0YWNrIHRlc3Qgb24g YW4gQXJtIG1vZGVsCj4gICAgcGVyZjogdGVzdDogUmVtb3ZlIGVtcHR5IGxpbmVzIGZyb20gYnJh bmNoIGZpbHRlciB0ZXN0IG91dHB1dAo+ICAgIHBlcmY6IHRlc3Q6IEV4dGVuZCBicmFuY2ggc3Rh Y2sgc2FtcGxpbmcgdGVzdCBmb3IgQXJtNjQgQlJCRQo+Cj4gICBEb2N1bWVudGF0aW9uL2FyY2gv YXJtNjQvYm9vdGluZy5yc3QgICB8ICAyNiArCj4gICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Vs Ml9zZXR1cC5oICAgICB8ICA5MCArKy0KPiAgIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20va3ZtX2hv c3QuaCAgICAgIHwgICA1ICstCj4gICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3JlZy5oICAg ICAgICB8ICAxNyArLQo+ICAgYXJjaC9hcm02NC9rdm0vZGVidWcuYyAgICAgICAgICAgICAgICAg fCAgIDUgKwo+ICAgYXJjaC9hcm02NC9rdm0vaHlwL252aGUvZGVidWctc3IuYyAgICAgfCAgMzEg Kwo+ICAgYXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYyAgICAgICAgICAgICAgfCAgNTYgKysKPiAg IGFyY2gvYXJtNjQvdG9vbHMvc3lzcmVnICAgICAgICAgICAgICAgIHwgMTMxICsrKysKPiAgIGRy aXZlcnMvcGVyZi9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDExICsKPiAgIGRyaXZlcnMv cGVyZi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvcGVyZi9h cm1fYnJiZS5jICAgICAgICAgICAgICAgIHwgOTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysK PiAgIGRyaXZlcnMvcGVyZi9hcm1fcG11LmMgICAgICAgICAgICAgICAgIHwgIDI1ICstCj4gICBk cml2ZXJzL3BlcmYvYXJtX3BtdXYzLmMgICAgICAgICAgICAgICB8IDE0NiArKystCj4gICBkcml2 ZXJzL3BlcmYvYXJtX3BtdXYzX2JyYW5jaC5oICAgICAgICB8ICA3MyArKwo+ICAgaW5jbHVkZS9s aW51eC9wZXJmL2FybV9wbXUuaCAgICAgICAgICAgfCAgMzcgKy0KPiAgIHRvb2xzL3BlcmYvdGVz dHMvYnVpbHRpbi10ZXN0LmMgICAgICAgIHwgICAxICsKPiAgIHRvb2xzL3BlcmYvdGVzdHMvc2hl bGwvdGVzdF9icnN0YWNrLnNoIHwgIDU3ICstCj4gICB0b29scy9wZXJmL3Rlc3RzL3Rlc3RzLmgg ICAgICAgICAgICAgICB8ICAgMSArCj4gICB0b29scy9wZXJmL3Rlc3RzL3dvcmtsb2Fkcy9CdWls ZCAgICAgICB8ICAgMiArCj4gICB0b29scy9wZXJmL3Rlc3RzL3dvcmtsb2Fkcy90cmFwbG9vcC5j ICB8ICAzOSArCj4gICAyMCBmaWxlcyBjaGFuZ2VkLCAxNjk2IGluc2VydGlvbnMoKyksIDI2IGRl bGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGVyZi9hcm1fYnJiZS5j Cj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wZXJmL2FybV9wbXV2M19icmFuY2guaAo+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvdGVzdHMvd29ya2xvYWRzL3RyYXBsb29w LmMKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=