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 X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 742AFC433E1 for ; Tue, 18 Aug 2020 17:44:09 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 333CE2054F for ; Tue, 18 Aug 2020 17:44:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Zz8cXfbj"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QxZZZFfq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 333CE2054F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0+rs3vZsw/l+a+LE6vtV0w56jvGlYt8yMEhDvRf1H3Y=; b=Zz8cXfbjz1k1uAgk7oBCulnI8 RUJIO1v0AmGoTNQH2S71tCzNBKcUbnQ08fPzouwkJVkBKDLroQ54yiPE7NRSCOKHfQkEqtE3mddbo d9IhHNh6d5rgd/aAYz7j9EIuwTc97Vpta0DPROsN7/YsXnL0nAZF89SgwyRPMYrI7vBspQA02GjMZ Hcak9PvdoxiN+0LoYGpg4TUIL8XHjnFOCxx5exK4cM0u0eZjpVxDy2C3Ay4N0K0n1n6kA0rzOSEks vVsjYK7Isw2EreEPejilcUR8fjTHY2jgIenSfVz/bIc/b148ZvsmKJ7hzuQgL6Pk3Vy5JS6Jdz9sS w1zm6BjUg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k85dJ-0003BC-VZ; Tue, 18 Aug 2020 17:42:50 +0000 Received: from mail-ej1-x641.google.com ([2a00:1450:4864:20::641]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k85dH-00037D-QR; Tue, 18 Aug 2020 17:42:48 +0000 Received: by mail-ej1-x641.google.com with SMTP id a26so23103285ejc.2; Tue, 18 Aug 2020 10:42:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=RLSht3RIYrYvOJyCZb8S7UriIeq7yTfzTMH9GBL0tvg=; b=QxZZZFfquhXE5HEZVH6teiE3YKTcoBY284GURrd+CRJYbxzkoO5THrlf1DL/ZLd36v wqDGhZosENshPvyAOCNMAUpZjTyrkqMMCa/ge6g+IVd2k48+ABW8T1Xm9/dXHLCypSnE 9lgO8sm9bD50EanbVtx/v76/EEZNDrzhZ44q2uS3Z27ktG5WhmcLKg26XOG6GP6Ncdr6 u6d/DCmOwlPUUENx3PjfSO0MM1qQ+gOmuqyKO+Nt6MNwplUxguHquLWA69dNYGz/206l zdl59eEaFiXfYMddhK8GvrXRRPWBH6HzZBW8CMdV1twCp24wTAjJW/9LwVerXhnNX3Wm WM2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=RLSht3RIYrYvOJyCZb8S7UriIeq7yTfzTMH9GBL0tvg=; b=YDtg9+Ub1enXVMx51jTWkjzws2ToZDHypFeXVvsvlraqkYAU/w0oT439g14OD5RMI1 7cTSpwE9nYj9Rc6m9MfSd+ksTtneQAMBq35kjRDnIG4ZPRuT+tFIe6dJtVGg3EUDnpQp MOGaQuZywLxH8T4AaS3oBfy6N4DeLwmeVDtWxpvz5TOrjNiOqhv/L9VeHGAxh9ObEkiB 9An3DalAo3bJxHBOuuB7omAU6GMllgdZMWP3ms5Rd79Ehvov/uy3xLMHjIDmB4r3gy35 4Gl8PRRWGc1PUODrH4Nah5j38cQ9C1m/XyOIZ/LbhvYjHmPLd3BOiYmZi5UB58Qw8q2b rFAQ== X-Gm-Message-State: AOAM533oRzeDFVpKnh6W65peqhBGUlwpp+d+GDU6K3+4+uua18TOfpc9 o4kJsriZNwH1piSPIqhZ3zk= X-Google-Smtp-Source: ABdhPJyIaAtcVFg7kwhJNMU96Jc6xlED3L5/1oRcb9KAJJXt7rs8hbxMiUz7JCjj9SH8gZMlh9/PnQ== X-Received: by 2002:a17:906:a18e:: with SMTP id s14mr20824421ejy.168.1597772564730; Tue, 18 Aug 2020 10:42:44 -0700 (PDT) Received: from BV030612LT ([188.24.144.238]) by smtp.gmail.com with ESMTPSA id u13sm17168211eje.9.2020.08.18.10.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2020 10:42:43 -0700 (PDT) Date: Tue, 18 Aug 2020 20:42:41 +0300 From: Cristian Ciocaltea To: Marc Zyngier Subject: Re: [PATCH v4 2/3] irqchip: Add Actions Semi Owl SIRQ controller Message-ID: <20200818174241.GA2020288@BV030612LT> References: <8e43fe6c6246bfd5347dc21b6f5c3f50@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <8e43fe6c6246bfd5347dc21b6f5c3f50@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200818_134247_903562_B683E056 X-CRM114-Status: GOOD ( 43.46 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Jason Cooper , linux-actions@lists.infradead.org, linux-kernel@vger.kernel.org, Rob Herring , Manivannan Sadhasivam , Thomas Gleixner , Andreas =?iso-8859-1?Q?F=E4rber?= , linux-arm-kernel@lists.infradead.org, Saravanan Sekar Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWFyYywKClRoYW5rcyBmb3IgeW91ciBxdWljayBhbmQgZGV0YWlsZWQgcmV2aWV3IQoKT24g TW9uLCBBdWcgMTcsIDIwMjAgYXQgMDI6NTI6MDZQTSArMDEwMCwgTWFyYyBaeW5naWVyIHdyb3Rl Ogo+IE9uIDIwMjAtMDgtMTYgMTI6MzMsIENyaXN0aWFuIENpb2NhbHRlYSB3cm90ZToKPiA+IFRo aXMgY29udHJvbGxlciBhcHBlYXJzIG9uIEFjdGlvbnMgU2VtaSBPd2wgZmFtaWx5IFNvQydzIFM1 MDAsIFM3MDAgYW5kCj4gPiBTOTAwIGFuZCBwcm92aWRlcyBzdXBwb3J0IGZvciAzIGV4dGVybmFs IGludGVycnVwdCBjb250cm9sbGVycyB0aHJvdWdoCj4gCj4gSXMgdGhhdCByZWFsbHkgMyBpbnRl cnJ1cHQgY29udHJvbGxlcnM/IE9yIG1lcmVseSAzIGludGVycnVwdCBsaW5lcz8KClRoaXMgaXMg bW9zdGx5IGEgbGVmdG92ZXIgc3RhdGVtZW50IGZyb20gdGhlIHByZXZpb3VzIHBhdGNoIHJldmlz aW9uLgpJIHdpbGwgY2hhbmdlIGl0IHRvIHNvbWV0aGluZyBsaWtlOgoKIlRoaXMgaW50ZXJydXB0 IGNvbnRyb2xsZXIgaXMgZm91bmQgaW4gdGhlIEFjdGlvbnMgU2VtaSBPd2wgU29DcyAoUzUwMCwK UzcwMCBhbmQgUzkwMCkgYW5kIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHVwIHRvIDMg ZXh0ZXJuYWwKaW50ZXJydXB0IGxpbmVzLiIKCj4gPiBkZWRpY2F0ZWQgU0lSUSBwaW5zLgo+ID4g Cj4gPiBFYWNoIGxpbmUgY2FuIGJlIGluZGVwZW5kZW50bHkgY29uZmlndXJlZCBhcyBpbnRlcnJ1 cHQgYW5kIHRyaWdnZXJzCj4gPiBvbiBlaXRoZXIgb2YgdGhlIGVkZ2VzIChyYWlzaW5nIG9yIGZh bGxpbmcpIG9yIGVpdGhlciBvZiB0aGUgbGV2ZWxzCj4gPiAoaGlnaCBvciBsb3cpLiBFYWNoIGxp bmUgY2FuIGFsc28gYmUgbWFza2VkIGluZGVwZW5kZW50bHkuCj4gPiAKPiA+IFRoaXMgaXMgYmFz ZWQgb24gdGhlIHBhdGNoIHNlcmllcyBzdWJtaXR0ZWQgYnkgUGFydGhpYmFuIE5hbGxhdGhhbWJp Ogo+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDE4MTEyNjEwMDM1Ni4yODQwNTc4 LTEtcG5AZGVueC5kZS8KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUGFydGhpYmFuIE5hbGxhdGhh bWJpIDxwbkBkZW54LmRlPgo+ID4gU2lnbmVkLW9mZi1ieTogU2FyYXZhbmFuIFNla2FyIDxzcmF2 YW5ob21lQGdtYWlsLmNvbT4KPiA+IFtjcmlzdGk6IG9wdGltaXplZCBEVCwgdmFyaW91cyBmaXhl cy9jbGVhbnVwcy9pbXByb3ZlbWVudHNdCj4gPiBTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBDaW9j YWx0ZWEgPGNyaXN0aWFuLmNpb2NhbHRlYUBnbWFpbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJz L2lycWNoaXAvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvaXJxY2hpcC9pcnEt b3dsLXNpcnEuYyB8IDMxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICAy IGZpbGVzIGNoYW5nZWQsIDMxOSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvaXJxY2hpcC9pcnEtb3dsLXNpcnEuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9pcnFjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4gPiBpbmRl eCAxMzNmOWM0NTc0NGEuLmI4ZWI1YjhiNzY2ZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvaXJx Y2hpcC9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4gPiBAQCAt Nyw2ICs3LDcgQEAgb2JqLSQoQ09ORklHX0FUSDc5KQkJCSs9IGlycS1hdGg3OS1jcHUubwo+ID4g IG9iai0kKENPTkZJR19BVEg3OSkJCQkrPSBpcnEtYXRoNzktbWlzYy5vCj4gPiAgb2JqLSQoQ09O RklHX0FSQ0hfQkNNMjgzNSkJCSs9IGlycS1iY20yODM1Lm8KPiA+ICBvYmotJChDT05GSUdfQVJD SF9CQ00yODM1KQkJKz0gaXJxLWJjbTI4MzYubwo+ID4gK29iai0kKENPTkZJR19BUkNIX0FDVElP TlMpCQkrPSBpcnEtb3dsLXNpcnEubwo+ID4gIG9iai0kKENPTkZJR19EQVZJTkNJX0FJTlRDKQkJ Kz0gaXJxLWRhdmluY2ktYWludGMubwo+ID4gIG9iai0kKENPTkZJR19EQVZJTkNJX0NQX0lOVEMp CQkrPSBpcnEtZGF2aW5jaS1jcC1pbnRjLm8KPiA+ICBvYmotJChDT05GSUdfRVhZTk9TX0lSUV9D T01CSU5FUikJKz0gZXh5bm9zLWNvbWJpbmVyLm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2ly cWNoaXAvaXJxLW93bC1zaXJxLmMKPiA+IGIvZHJpdmVycy9pcnFjaGlwL2lycS1vd2wtc2lycS5j Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yOWI3ZmZj NDBhYzcKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtb3ds LXNpcnEuYwo+ID4gQEAgLTAsMCArMSwzMTggQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCsKPiA+ICsvKgo+ID4gKyAqIEFjdGlvbnMgU2VtaSBPd2wgU29DcyBTSVJR IGludGVycnVwdCBjb250cm9sbGVyIGRyaXZlcgo+ID4gKyAqCj4gPiArICogQ29weXJpZ2h0IChD KSAyMDE0IEFjdGlvbnMgU2VtaSBJbmMuCj4gPiArICogRGF2aWQgTGl1IDxsaXV3ZWlAYWN0aW9u cy1zZW1pLmNvbT4KPiA+ICsgKgo+ID4gKyAqIEF1dGhvcjogUGFydGhpYmFuIE5hbGxhdGhhbWJp IDxwbkBkZW54LmRlPgo+ID4gKyAqIEF1dGhvcjogU2FyYXZhbmFuIFNla2FyIDxzcmF2YW5ob21l QGdtYWlsLmNvbT4KPiA+ICsgKiBBdXRob3I6IENyaXN0aWFuIENpb2NhbHRlYSA8Y3Jpc3RpYW4u Y2lvY2FsdGVhQGdtYWlsLmNvbT4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgv aW50ZXJydXB0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAuaD4KPiA+ICsjaW5jbHVk ZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiA+ ICsKPiA+ICsjZGVmaW5lIE5VTV9TSVJRCQkJMwo+ID4gKwo+ID4gKyNkZWZpbmUgSU5UQ19FWFRD VExfUEVORElORwkJQklUKDApCj4gPiArI2RlZmluZSBJTlRDX0VYVENUTF9DTEtfU0VMCQlCSVQo NCkKPiA+ICsjZGVmaW5lIElOVENfRVhUQ1RMX0VOCQkJQklUKDUpCj4gPiArI2RlZmluZSBJTlRD X0VYVENUTF9UWVBFX01BU0sJCUdFTk1BU0soNywgNikKPiA+ICsjZGVmaW5lIElOVENfRVhUQ1RM X1RZUEVfSElHSAkJMAo+ID4gKyNkZWZpbmUgSU5UQ19FWFRDVExfVFlQRV9MT1cJCUJJVCg2KQo+ ID4gKyNkZWZpbmUgSU5UQ19FWFRDVExfVFlQRV9SSVNJTkcJCUJJVCg3KQo+ID4gKyNkZWZpbmUg SU5UQ19FWFRDVExfVFlQRV9GQUxMSU5HCShCSVQoNikgfCBCSVQoNykpCj4gPiArCj4gPiArLyog UzkwMCBTSVJRMSAmIFNJUlEyIGNvbnRyb2wgcmVnaXN0ZXIgb2Zmc2V0cywgcmVsYXRpdmUgdG8g U0lSUTAgKi8KPiA+ICsjZGVmaW5lIElOVENfRVhUQ1RMMQkJCTB4MDMyOAo+ID4gKyNkZWZpbmUg SU5UQ19FWFRDVEwyCQkJMHgwMzJjCj4gPiArCj4gPiArc3RydWN0IG93bF9zaXJxX3BhcmFtcyB7 Cj4gPiArCS8qIElOVENfRVhUQ1RMIHJlZyBzaGFyZWQgZm9yIGFsbCB0aHJlZSBTSVJRIGxpbmVz ICovCj4gPiArCWJvb2wgcmVnX3NoYXJlZDsKPiA+ICsJLyogSU5UQ19FWFRDVEwgcmVnIG9mZnNl dHMgcmVsYXRpdmUgdG8gY29udHJvbGxlciBiYXNlIGFkZHJlc3MgKi8KPiA+ICsJdTE2IHJlZ19v ZmZzZXRbTlVNX1NJUlFdOwo+ID4gK307Cj4gPiArCj4gPiArc3RydWN0IG93bF9zaXJxX2NoaXBf ZGF0YSB7Cj4gPiArCWNvbnN0IHN0cnVjdCBvd2xfc2lycV9wYXJhbXMgKnBhcmFtczsKPiA+ICsJ dm9pZCBfX2lvbWVtICpiYXNlOwo+ID4gKwlyYXdfc3BpbmxvY2tfdCBsb2NrOwo+ID4gKwl1MzIg ZXh0X2lycXNbTlVNX1NJUlFdOwo+ID4gKwl1OCB0cmlnZ2VyOwo+IAo+IE5pdDogUGxlYXNlIGFs aWduIGRhdGEgc3RydWN0dXJlIG1lbWJlcnMgdmVydGljYWxseToKPiAKPiBzdHJ1Y3Qgb3dsX3Np cnFfY2hpcF9kYXRhIHsKPiAJY29uc3Qgc3RydWN0IG93bF9zaXJxX3BhcmFtcyAqcGFyYW1zOwo+ IAl2b2lkIF9faW9tZW0gICAgICAgICAgICAgICAgICpiYXNlOwo+IAlyYXdfc3BpbmxvY2tfdCAg ICAgICAgICAgICAgIGxvY2s7Cj4gCXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2ly cXNbTlVNX1NJUlFdOwo+IAl1OCAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI7Cj4g fTsKCkRvbmUuCgo+ID4gK307Cj4gPiArCj4gPiArLyogUzUwMCBhbmQgUzcwMCBTb0NzICovCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvd2xfc2lycV9wYXJhbXMgb3dsX3NpcnFfczUwMF9wYXJh bXMgPSB7Cj4gPiArCS5yZWdfc2hhcmVkID0gdHJ1ZSwKPiA+ICsJLnJlZ19vZmZzZXQgPSB7IDAs IDAsIDAgfSwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIFM5MDAgU29DICovCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBvd2xfc2lycV9wYXJhbXMgb3dsX3NpcnFfczkwMF9wYXJhbXMgPSB7Cj4gPiAr CS5yZWdfc2hhcmVkID0gZmFsc2UsCj4gPiArCS5yZWdfb2Zmc2V0ID0geyAwLCBJTlRDX0VYVENU TDEsIElOVENfRVhUQ1RMMiB9LAo+IAo+IDAgKmlzKiBhbiBvZmZzZXQsIHJpZ2h0PyBXaHkgZG9l c24ndCBpdCBoYXZlIGEgbmFtZSB0b28/CgpSaWdodCwgSSB1cGRhdGVkIHRoZSBkZWZpbmVzIHNl Y3Rpb246CgovKiBTOTAwIFNJUlEgY29udHJvbCByZWdpc3RlciBvZmZzZXRzLCByZWxhdGl2ZSB0 byBjb250cm9sbGVyIGJhc2UgYWRkcmVzcyAqLwojZGVmaW5lIElOVENfRVhUQ1RMMAkJCTB4MDAw MAojZGVmaW5lIElOVENfRVhUQ1RMMQkJCTB4MDMyOApbLi4uXQoKVGhlIGNvbnRyb2xsZXIgYmFz ZSBhZGRyZXNzIHBvaW50cyB0byBTSVJRMCBjb250cm9sIHJlZ2lzdGVyLCBzbyB0aGlzCm9mZnNl dCBpcyBhbHdheXMgMCwgYnV0IEkgdG90YWxseSBhZ3JlZSB3ZSBzaG91bGQgaGF2ZSBhIG5hbWUg Zm9yIGl0LgoKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyB1MzIgb3dsX3NpcnFfcmVhZF9leHRj dGwoc3RydWN0IG93bF9zaXJxX2NoaXBfZGF0YSAqZGF0YSwgdTMyCj4gPiBpbmRleCkKPiA+ICt7 Cj4gPiArCXUzMiB2YWw7Cj4gPiArCj4gPiArCXZhbCA9IHJlYWRsX3JlbGF4ZWQoZGF0YS0+YmFz ZSArIGRhdGEtPnBhcmFtcy0+cmVnX29mZnNldFtpbmRleF0pOwo+ID4gKwlpZiAoZGF0YS0+cGFy YW1zLT5yZWdfc2hhcmVkKQo+ID4gKwkJdmFsID0gKHZhbCA+PiAoMiAtIGluZGV4KSAqIDgpICYg MHhmZjsKPiAKPiAgICAgICAgIGJhc2UgPSAoMiAtIGluZGV4KSAqIDg7Cj4gICAgICAgICB2YWwg PSBGSUVMRF9HRVQoR0VOTUFTSyhiYXNlICsgNywgYmFzZSksIHZhbCk7CgpVbmZvcnR1bmF0ZWx5 IHRoZSBjb250ZXh0IGRvZXNuJ3QgYWxsb3cgdXNpbmcgRklFTERfR0VUOgoKLi9pbmNsdWRlL2xp bnV4L2NvbXBpbGVyLmg6MzkyOjM4OiBlcnJvcjogY2FsbCB0byDigJhfX2NvbXBpbGV0aW1lX2Fz c2VydF8xNTnigJkgCiBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSBlcnJvcjogRklFTERfR0VUOiBt YXNrIGlzIG5vdCBjb25zdGFudAoKPiA+ICsKPiA+ICsJcmV0dXJuIHZhbDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIHZvaWQgb3dsX3NpcnFfd3JpdGVfZXh0Y3RsKHN0cnVjdCBvd2xfc2lycV9j aGlwX2RhdGEgKmRhdGEsCj4gPiArCQkJCSAgdTMyIGV4dGN0bCwgdTMyIGluZGV4KQo+ID4gK3sK PiA+ICsJdTMyIHZhbDsKPiA+ICsKPiA+ICsJaWYgKGRhdGEtPnBhcmFtcy0+cmVnX3NoYXJlZCkg ewo+ID4gKwkJdmFsID0gcmVhZGxfcmVsYXhlZChkYXRhLT5iYXNlICsgZGF0YS0+cGFyYW1zLT5y ZWdfb2Zmc2V0W2luZGV4XSk7Cj4gPiArCQl2YWwgJj0gfigweGZmIDw8ICgyIC0gaW5kZXgpICog OCk7Cj4gPiArCQlleHRjdGwgJj0gMHhmZjsKPiA+ICsJCWV4dGN0bCA9IChleHRjdGwgPDwgKDIg LSBpbmRleCkgKiA4KSB8IHZhbDsKPiAKPiBQbGVhc2UgbWFrZSB1c2Ugb2YgRklFTERfUFJFUCwg RklFTERfR0VUIGFuZCBHRU5NQVNLLgoKSSdtIG5vdCBzdXJlIGhvdyB0byBkZWFsIHdpdGggdGhl IG1hc2sgY29uc3RuZXNzIHJlc3RyaWN0aW9uLCBleGNlcHQKdXNpbmcgc3RhdGljIGRlZmluZXMg YW5kIGlmL2Vsc2Ugc3RhdGVtZW50cywgd2hpY2ggaXMgbm90IHF1aXRlIGVsZWdhbnQuCgo+ID4g Kwl9Cj4gPiArCj4gPiArCXdyaXRlbF9yZWxheGVkKGV4dGN0bCwgZGF0YS0+YmFzZSArIGRhdGEt PnBhcmFtcy0+cmVnX29mZnNldFtpbmRleF0pOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9p ZCBvd2xfc2lycV9jbGVhcl9zZXRfZXh0Y3RsKHN0cnVjdCBvd2xfc2lycV9jaGlwX2RhdGEgKmQs Cj4gPiArCQkJCSAgICAgIHUzMiBjbGVhciwgdTMyIHNldCwgdTMyIGluZGV4KQo+ID4gK3sKPiA+ ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ICsJdTMyIHZhbDsKPiA+ICsKPiA+ICsJcmF3X3Nw aW5fbG9ja19pcnFzYXZlKCZkLT5sb2NrLCBmbGFncyk7Cj4gPiArCXZhbCA9IG93bF9zaXJxX3Jl YWRfZXh0Y3RsKGQsIGluZGV4KTsKPiA+ICsJdmFsICY9IH5jbGVhcjsKPiA+ICsJdmFsIHw9IHNl dDsKPiA+ICsJb3dsX3NpcnFfd3JpdGVfZXh0Y3RsKGQsIHZhbCwgaW5kZXgpOwo+ID4gKwlyYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZC0+bG9jaywgZmxhZ3MpOwo+ID4gK30KPiA+ICsKPiA+ ICtzdGF0aWMgdm9pZCBvd2xfc2lycV9lb2koc3RydWN0IGlycV9kYXRhICpkYXRhKQo+ID4gK3sK PiA+ICsJc3RydWN0IG93bF9zaXJxX2NoaXBfZGF0YSAqY2hpcF9kYXRhID0KPiA+IGlycV9kYXRh X2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOwo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBTb2Z0d2Fy ZSBtdXN0IGNsZWFyIGV4dGVybmFsIGludGVycnVwdCBwZW5kaW5nLCB3aGVuIGludGVycnVwdCB0 eXBlCj4gPiArCSAqIGlzIGVkZ2UgdHJpZ2dlcmVkLCBzbyB3ZSBuZWVkIHBlciBTSVJRIGJhc2Vk IGNsZWFyaW5nLgo+ID4gKwkgKi8KPiA+ICsJaWYgKGNoaXBfZGF0YS0+dHJpZ2dlciAmICgxIDw8 IGRhdGEtPmh3aXJxKSkKPiAKPiBCSVQoZC0+aHdpcnEpCj4gCj4gQnV0IGl0IGFsc28gYmVncyB0 aGUgcXVlc3Rpb246IHdlIGFscmVhZHkgaGF2ZSBhbGwgdGhlIHRyaWdnZXIgaW5mb3JtYXRpb24K PiBpbiB0aGUgaXJxZGVzYy4gV2h5IGRvIHlvdSBuZWVkIHNvbWUgYWRkaXRpb25hbCBib29ra2Vl cGluZz8KClRoYXQncyBhbm90aGVyIGxlZnRvdmVyIGZyb20gdGhlIG9yaWdpbmFsIHdvcmsuIFRo YW5rcyBmb3IgcG9pbnRpbmcKdGhpcyBvdXQsIEkgbWlzc2VkIGl0LiBJIGRyb3BwZWQgdGhlIHJl ZHVuZGFudCBoYW5kbGluZyBvZiB0aGUgSVJRCnRyaWdnZXIgaW5mb3JtYXRpb24gYW5kIGp1c3Qg cmVwbGFjZWQgdGhpcyB3aXRoOgoKICBpZiAoIWlycWRfaXNfbGV2ZWxfdHlwZShkYXRhKSkKCj4g PiArCQlvd2xfc2lycV9jbGVhcl9zZXRfZXh0Y3RsKGNoaXBfZGF0YSwgMCwgSU5UQ19FWFRDVExf UEVORElORywKPiA+ICsJCQkJCSAgZGF0YS0+aHdpcnEpOwo+ID4gKwo+ID4gKwlpcnFfY2hpcF9l b2lfcGFyZW50KGRhdGEpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBvd2xfc2lycV9t YXNrKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBvd2xfc2lycV9j aGlwX2RhdGEgKmNoaXBfZGF0YSA9Cj4gPiBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRh KTsKPiA+ICsKPiA+ICsJb3dsX3NpcnFfY2xlYXJfc2V0X2V4dGN0bChjaGlwX2RhdGEsIElOVENf RVhUQ1RMX0VOLCAwLCBkYXRhLT5od2lycSk7Cj4gPiArCWlycV9jaGlwX21hc2tfcGFyZW50KGRh dGEpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBvd2xfc2lycV91bm1hc2soc3RydWN0 IGlycV9kYXRhICpkYXRhKQo+ID4gK3sKPiA+ICsJc3RydWN0IG93bF9zaXJxX2NoaXBfZGF0YSAq Y2hpcF9kYXRhID0KPiA+IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOwo+ID4gKwo+ ID4gKwlvd2xfc2lycV9jbGVhcl9zZXRfZXh0Y3RsKGNoaXBfZGF0YSwgMCwgSU5UQ19FWFRDVExf RU4sIGRhdGEtPmh3aXJxKTsKPiA+ICsJaXJxX2NoaXBfdW5tYXNrX3BhcmVudChkYXRhKTsKPiA+ ICt9Cj4gPiArCj4gPiArLyoKPiA+ICsgKiBHSUMgZG9lcyBub3QgaGFuZGxlIGZhbGxpbmcgZWRn ZSBvciBhY3RpdmUgbG93LCBoZW5jZSBTSVJRIHNoYWxsIGJlCj4gPiArICogcHJvZ3JhbW1lZCB0 byBjb252ZXJ0IGZhbGxpbmcgZWRnZSB0byByaXNpbmcgZWRnZSBzaWduYWwgYW5kIGFjdGl2ZQo+ ID4gKyAqIGxvdyB0byBhY3RpdmUgaGlnaCBzaWduYWwuCj4gPiArICovCj4gPiArc3RhdGljIGlu dCBvd2xfc2lycV9zZXRfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHVuc2lnbmVkIGludCB0 eXBlKQo+ID4gK3sKPiA+ICsJc3RydWN0IG93bF9zaXJxX2NoaXBfZGF0YSAqY2hpcF9kYXRhID0K PiA+IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGRhdGEpOwo+ID4gKwl1MzIgc2lycV90eXBl Owo+ID4gKwo+ID4gKwlzd2l0Y2ggKHR5cGUpIHsKPiA+ICsJY2FzZSBJUlFfVFlQRV9MRVZFTF9M T1c6Cj4gPiArCQlzaXJxX3R5cGUgPSBJTlRDX0VYVENUTF9UWVBFX0xPVzsKPiA+ICsJCWNoaXBf ZGF0YS0+dHJpZ2dlciAmPSB+KDEgPDwgZGF0YS0+aHdpcnEpOwo+ID4gKwkJdHlwZSA9IElSUV9U WVBFX0xFVkVMX0hJR0g7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJUlFfVFlQRV9MRVZFTF9I SUdIOgo+ID4gKwkJc2lycV90eXBlID0gSU5UQ19FWFRDVExfVFlQRV9ISUdIOwo+ID4gKwkJY2hp cF9kYXRhLT50cmlnZ2VyICY9IH4oMSA8PCBkYXRhLT5od2lycSk7Cj4gPiArCQlicmVhazsKPiA+ ICsJY2FzZSBJUlFfVFlQRV9FREdFX0ZBTExJTkc6Cj4gPiArCQlzaXJxX3R5cGUgPSBJTlRDX0VY VENUTF9UWVBFX0ZBTExJTkc7Cj4gPiArCQljaGlwX2RhdGEtPnRyaWdnZXIgfD0gMSA8PCBkYXRh LT5od2lycTsKPiA+ICsJCXR5cGUgPSBJUlFfVFlQRV9FREdFX1JJU0lORzsKPiA+ICsJCWJyZWFr Owo+ID4gKwljYXNlIElSUV9UWVBFX0VER0VfUklTSU5HOgo+ID4gKwkJc2lycV90eXBlID0gSU5U Q19FWFRDVExfVFlQRV9SSVNJTkc7Cj4gPiArCQljaGlwX2RhdGEtPnRyaWdnZXIgfD0gMSA8PCBk YXRhLT5od2lycTsKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJV0FSTl9PTigx KTsKPiAKPiBObyBuZWVkIGZvciB0aGlzIFdBUk5fT04oKSwgdGhlIGNvcmUga2VybmVsIGlzIGxv dWQgZW5vdWdoLgoKRG9uZS4KCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlvd2xfc2lycV9jbGVhcl9zZXRfZXh0Y3RsKGNoaXBfZGF0YSwgSU5UQ19FWFRDVExfVFlQ RV9NQVNLLCBzaXJxX3R5cGUsCj4gPiArCQkJCSAgZGF0YS0+aHdpcnEpOwo+ID4gKwo+ID4gKwly ZXR1cm4gaXJxX2NoaXBfc2V0X3R5cGVfcGFyZW50KGRhdGEsIHR5cGUpOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgc3RydWN0IGlycV9jaGlwIG93bF9zaXJxX2NoaXAgPSB7Cj4gPiArCS5uYW1l CQk9ICJvd2wtc2lycSIsCj4gPiArCS5pcnFfbWFzawk9IG93bF9zaXJxX21hc2ssCj4gPiArCS5p cnFfdW5tYXNrCT0gb3dsX3NpcnFfdW5tYXNrLAo+ID4gKwkuaXJxX2VvaQk9IG93bF9zaXJxX2Vv aSwKPiA+ICsJLmlycV9zZXRfdHlwZQk9IG93bF9zaXJxX3NldF90eXBlLAo+ID4gKwkuaXJxX3Jl dHJpZ2dlcgk9IGlycV9jaGlwX3JldHJpZ2dlcl9oaWVyYXJjaHksCj4gCj4gSG93IGFib3V0IGly cV9zZXRfYWZmaW5pdHk/IE9yIGRvZXMgaXQgb25seSBleGlzdCBvbiBVUCBzeXN0ZW1zPwoKSSBo YXZlIGp1c3QgYWRkZWQ6CgojaWZkZWYgQ09ORklHX1NNUAoJLmlycV9zZXRfYWZmaW5pdHkgPSBp cnFfY2hpcF9zZXRfYWZmaW5pdHlfcGFyZW50LAojZW5kaWYKCj4gPiArfTsKPiA+ICsKPiA+ICtz dGF0aWMgaW50IG93bF9zaXJxX2RvbWFpbl90cmFuc2xhdGUoc3RydWN0IGlycV9kb21haW4gKmQs Cj4gPiArCQkJCSAgICAgc3RydWN0IGlycV9md3NwZWMgKmZ3c3BlYywKPiA+ICsJCQkJICAgICB1 bnNpZ25lZCBsb25nICpod2lycSwKPiA+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgKnR5cGUpCj4g PiArewo+ID4gKwlpZiAoIWlzX29mX25vZGUoZndzcGVjLT5md25vZGUpKQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gPiArCj4gPiArCWlmIChmd3NwZWMtPnBhcmFtX2NvdW50ICE9IDIgfHwgZndz cGVjLT5wYXJhbVswXSA+PSBOVU1fU0lSUSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwo+ ID4gKwkqaHdpcnEgPSBmd3NwZWMtPnBhcmFtWzBdOwo+ID4gKwkqdHlwZSA9IGZ3c3BlYy0+cGFy YW1bMV07Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50 IG93bF9zaXJxX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25l ZAo+ID4gaW50IHZpcnEsCj4gPiArCQkJCSB1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqZGF0 YSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBvd2xfc2lycV9jaGlwX2RhdGEgKmNoaXBfZGF0YSA9IGRv bWFpbi0+aG9zdF9kYXRhOwo+ID4gKwlzdHJ1Y3QgaXJxX2Z3c3BlYyAqZndzcGVjID0gZGF0YTsK PiA+ICsJc3RydWN0IGlycV9md3NwZWMgcGFyZW50X2Z3c3BlYzsKPiA+ICsJaXJxX2h3X251bWJl cl90IGh3aXJxOwo+ID4gKwl1bnNpZ25lZCBpbnQgdHlwZTsKPiA+ICsJaW50IHJldDsKPiA+ICsK PiA+ICsJaWYgKFdBUk5fT04obnJfaXJxcyAhPSAxKSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4gKwo+ID4gKwlyZXQgPSBvd2xfc2lycV9kb21haW5fdHJhbnNsYXRlKGRvbWFpbiwgZndzcGVj LCAmaHdpcnEsICZ0eXBlKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiAr Cj4gPiArCXN3aXRjaCAodHlwZSkgewo+ID4gKwljYXNlIElSUV9UWVBFX0VER0VfUklTSU5HOgo+ ID4gKwljYXNlIElSUV9UWVBFX0xFVkVMX0hJR0g6Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJ UlFfVFlQRV9FREdFX0ZBTExJTkc6Cj4gPiArCQl0eXBlID0gSVJRX1RZUEVfRURHRV9SSVNJTkc7 Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBJUlFfVFlQRV9MRVZFTF9MT1c6Cj4gPiArCQl0eXBl ID0gSVJRX1RZUEVfTEVWRUxfSElHSDsKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaXJxX2RvbWFpbl9zZXRfaHdp cnFfYW5kX2NoaXAoZG9tYWluLCB2aXJxLCBod2lycSwgJm93bF9zaXJxX2NoaXAsCj4gPiArCQkJ CSAgICAgIGNoaXBfZGF0YSk7Cj4gPiArCj4gPiArCXBhcmVudF9md3NwZWMuZndub2RlID0gZG9t YWluLT5wYXJlbnQtPmZ3bm9kZTsKPiA+ICsJcGFyZW50X2Z3c3BlYy5wYXJhbV9jb3VudCA9IDM7 Cj4gPiArCXBhcmVudF9md3NwZWMucGFyYW1bMF0gPSAwOwkvKiBTUEkgKi8KPiA+ICsJcGFyZW50 X2Z3c3BlYy5wYXJhbVsxXSA9IGNoaXBfZGF0YS0+ZXh0X2lycXNbaHdpcnFdOwo+ID4gKwlwYXJl bnRfZndzcGVjLnBhcmFtWzJdID0gdHlwZTsKPiA+ICsKPiA+ICsJcmV0dXJuIGlycV9kb21haW5f YWxsb2NfaXJxc19wYXJlbnQoZG9tYWluLCB2aXJxLCAxLCAmcGFyZW50X2Z3c3BlYyk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgb3dsX3NpcnFf ZG9tYWluX29wcyA9IHsKPiA+ICsJLnRyYW5zbGF0ZQk9IG93bF9zaXJxX2RvbWFpbl90cmFuc2xh dGUsCj4gPiArCS5hbGxvYwkJPSBvd2xfc2lycV9kb21haW5fYWxsb2MsCj4gPiArCS5mcmVlCQk9 IGlycV9kb21haW5fZnJlZV9pcnFzX2NvbW1vbiwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG93bF9zaXJxX29mX21hdGNoW10gPSB7Cj4gPiArCXsg LmNvbXBhdGlibGUgPSAiYWN0aW9ucyxzNTAwLXNpcnEiLCAuZGF0YSA9ICZvd2xfc2lycV9zNTAw X3BhcmFtcyB9LAo+ID4gKwl7IC5jb21wYXRpYmxlID0gImFjdGlvbnMsczcwMC1zaXJxIiwgLmRh dGEgPSAmb3dsX3NpcnFfczUwMF9wYXJhbXMgfSwKPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJhY3Rp b25zLHM5MDAtc2lycSIsIC5kYXRhID0gJm93bF9zaXJxX3M5MDBfcGFyYW1zIH0sCj4gPiArCXsg Lyogc2VudGluZWwgKi8gfQo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGludCBfX2luaXQgb3ds X3NpcnFfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCj4gPiArCQkJCSAgIHN0cnVj dCBkZXZpY2Vfbm9kZSAqcGFyZW50KQo+ID4gK3sKPiA+ICsJY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCAqbWF0Y2g7Cj4gPiArCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sICpwYXJlbnRfZG9t YWluOwo+ID4gKwlzdHJ1Y3Qgb3dsX3NpcnFfY2hpcF9kYXRhICpjaGlwX2RhdGE7Cj4gPiArCWlu dCByZXQsIGk7Cj4gPiArCj4gPiArCXBhcmVudF9kb21haW4gPSBpcnFfZmluZF9ob3N0KHBhcmVu dCk7Cj4gPiArCWlmICghcGFyZW50X2RvbWFpbikgewo+ID4gKwkJcHJfZXJyKCIlcE9GOiBmYWls ZWQgdG8gZmluZCBzaXJxIHBhcmVudCBkb21haW5cbiIsIG5vZGUpOwo+ID4gKwkJcmV0dXJuIC1F TlhJTzsKPiA+ICsJfQo+ID4gKwo+ID4gKwljaGlwX2RhdGEgPSBremFsbG9jKHNpemVvZigqY2hp cF9kYXRhKSwgR0ZQX0tFUk5FTCk7Cj4gPiArCWlmICghY2hpcF9kYXRhKQo+ID4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gPiArCj4gPiArCW1hdGNoID0gb2ZfbWF0Y2hfbm9kZShvd2xfc2lycV9vZl9t YXRjaCwgbm9kZSk7Cj4gPiArCWlmICghbWF0Y2gpIHsKPiA+ICsJCXByX3dhcm4oIm93bC1zaXJx OiBhc3N1bWluZyBTNTAwL1M3MDAgY29tcGF0aWJsZSBjb250cm9sbGVyXG4iKTsKPiA+ICsJCWNo aXBfZGF0YS0+cGFyYW1zID0gJm93bF9zaXJxX3M1MDBfcGFyYW1zOwo+ID4gKwl9IGVsc2Ugewo+ ID4gKwkJY2hpcF9kYXRhLT5wYXJhbXMgPSBtYXRjaC0+ZGF0YTsKPiA+ICsJfQo+ID4gKwo+ID4g KwlyYXdfc3Bpbl9sb2NrX2luaXQoJmNoaXBfZGF0YS0+bG9jayk7Cj4gPiArCj4gPiArCWNoaXBf ZGF0YS0+YmFzZSA9IG9mX2lvbWFwKG5vZGUsIDApOwo+ID4gKwlpZiAoIWNoaXBfZGF0YS0+YmFz ZSkgewo+ID4gKwkJcHJfZXJyKCIlcE9GOiBmYWlsZWQgdG8gbWFwIHNpcnEgcmVnaXN0ZXJzXG4i LCBub2RlKTsKPiA+ICsJCXJldCA9IC1FTlhJTzsKPiA+ICsJCWdvdG8gb3V0X2ZyZWU7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF92YXJpYWJsZV91MzJfYXJyYXko bm9kZSwKPiA+ICJhY3Rpb25zLGV4dC1pbnRlcnJ1cHRzIiwKPiA+ICsJCQkJCQkgIGNoaXBfZGF0 YS0+ZXh0X2lycXMsCj4gPiArCQkJCQkJICBOVU1fU0lSUSwgTlVNX1NJUlEpOwo+ID4gKwlpZiAo cmV0IDwgTlVNX1NJUlEpIHsKPiA+ICsJCXByX2VycigiJXBPRjogZmFpbGVkIHRvIHJlYWQgc2ly cSBpbnRlcnJ1cHRzXG4iLCBub2RlKTsKPiA+ICsJCWdvdG8gb3V0X3VubWFwOwo+ID4gKwl9Cj4g PiArCj4gPiArCS8qIFNldCAyNE1IeiBleHRlcm5hbCBpbnRlcnJ1cHQgY2xvY2sgZnJlcSAqLwo+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgTlVNX1NJUlE7IGkrKykKPiA+ICsJCW93bF9zaXJxX2NsZWFy X3NldF9leHRjdGwoY2hpcF9kYXRhLCAwLCBJTlRDX0VYVENUTF9DTEtfU0VMLCBpKTsKPiA+ICsK PiA+ICsJZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfaGllcmFyY2h5KHBhcmVudF9kb21haW4sIDAs IE5VTV9TSVJRLCBub2RlLAo+ID4gKwkJCQkJICAmb3dsX3NpcnFfZG9tYWluX29wcywgY2hpcF9k YXRhKTsKPiA+ICsJaWYgKCFkb21haW4pIHsKPiA+ICsJCXByX2VycigiJXBPRjogZmFpbGVkIHRv IGFkZCBkb21haW5cbiIsIG5vZGUpOwo+ID4gKwkJcmV0ID0gLUVOT01FTTsKPiA+ICsJCWdvdG8g b3V0X3VubWFwOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gKwo+ID4gK291dF91 bm1hcDoKPiA+ICsJaW91bm1hcChjaGlwX2RhdGEtPmJhc2UpOwo+ID4gK291dF9mcmVlOgo+ID4g KwlrZnJlZShjaGlwX2RhdGEpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsK PiA+ICtJUlFDSElQX0RFQ0xBUkUob3dsX3NpcnEsICJhY3Rpb25zLG93bC1zaXJxIiwgb3dsX3Np cnFfb2ZfaW5pdCk7Cj4gCj4gVGhhbmtzLAo+IAo+ICAgICAgICAgTS4KPiAtLSAKPiBKYXp6IGlz IG5vdCBkZWFkLiBJdCBqdXN0IHNtZWxscyBmdW5ueS4uLgoKVGhhbmtzIGFnYWluLApDcmlzdGkK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK