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 5C5EDC19F4F for ; Wed, 8 May 2024 09:38:59 +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: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=mPjawBjMVFkisbS88hINF5/o2MnPkblPYtQeRoFpPM4=; b=EQo4vkaEUhQURE Nw1t7o3T3SUfPQKgikiay7rA0QSWi2mL0+ajFk9slvFvDKUoG3yUTcYkN/9Z4w/4/sLOl2E5lqv1/ oGq9g/8T7qzaWaLPOgm0D7YOb38KwHH9e+B/Cru6VI9asDh9yf1x3liRunMOvVn6S1Epb9egIdqog HNCWO4WFWix3HCyf2hbxZjtZxSiXB8lE6t1sYMzOPoa2wRH+Bkwmi2ABR8UzXfQ37Bm8AlR9rqOQM BbE9zzH5JrvlJl/9JBt48O+/lFUGZ4ue+GgyrY/UZHfLpqjBF08oY2+30spePjzvzEc/D0rEbfBH5 Smo5edU5pCiFTEz8DVVA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s4dl9-0000000En22-1xJe; Wed, 08 May 2024 09:38:47 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s4dl3-0000000En0I-1t0d for linux-arm-kernel@lists.infradead.org; Wed, 08 May 2024 09:38:46 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1edf506b216so22218885ad.2 for ; Wed, 08 May 2024 02:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715161119; x=1715765919; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=JF/qpsXS51Z6tRUSnj9l+AYuD1pdvwOaKrJpHSI9AAw=; b=VnGmbSNHIytIpgrpKHfwkJzQL0V2f+sUfmEv2W8BC5LzPiyCoZ8yeeIeC+qJNSotxu ahIWAhsMHfo8PAiNI7e0WXOsY8xjrVx89UzDlKitvFmsW0ibbn08FMzhN6N+i5og1WhS LEyIcUX+kNo7R6VZ+kZ1v3S6ii9IMb/3X1KZPoDqWJQ1OMUtNdk9hUh1F37s/MK18NH8 oFZmgHV5yMF3ggmCwhYbUgr/qG1JY9D5k9mZV5LWv/4xlCTMMdKuNbTKvscgid4J+YD2 UQnFlP1o4f5+te9unZf+XWFvrkZGQxuSno4r0N6C7pq3bVjYeZeJ9g1GaDxo0xRprWTv +Dbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715161119; x=1715765919; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JF/qpsXS51Z6tRUSnj9l+AYuD1pdvwOaKrJpHSI9AAw=; b=RGiw9QBwzeaXsY+yWoMukrRUW/x/iNUdltSN5At33evqmoS6jGhtBUucyhXwMAQNDY P1um7DsZQ36g9ZH2xT/ekm2vVnGJk/KBdlpCOrSPMq/Pn/IJM+oSUXciv9qCAlxifdr1 m5cL3+YyoTifhDBD3pmn6jtNxnOoXw42z7PkSTwNVHTR3xaw1bzJm31uVB6Wvo6cM6Sk MrGKYD4d2eiNpARa/0kNLzhuw+cI+MpgiT2AikmaE0ktLP/ifHyBDxtIQCBTCwOSAdm7 pm0f5llZY6ex516Ri+hAl7ZmRzxq9dmogE1Djvy7onr6EcEb/k2La2HQmmfVy4bSoI0X prLA== X-Gm-Message-State: AOJu0Yze5mUGyRy7amRqLrRc16SACdRkuI7cppyK/y59SwKJaXB2IUhv ZjFBL/I587yccr3h8sPj/9C/VXnedfyq/Z0iWzXEfrdUGf71Ngrs X-Google-Smtp-Source: AGHT+IEdhFF3Ew3jdyl0hmQI+QvvQEt79sBObejV5XMWSPqrQeyJaah84ujgkbCX5ym+rR46Datgiw== X-Received: by 2002:a17:902:f552:b0:1e4:6e70:25d8 with SMTP id d9443c01a7336-1eeb03a546bmr25188815ad.13.1715161119386; Wed, 08 May 2024 02:38:39 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id ju8-20020a170903428800b001eb492fdf93sm11420932plb.146.2024.05.08.02.38.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 May 2024 02:38:39 -0700 (PDT) Message-ID: <3ee92974-6f55-426d-8cd6-bb871a23499f@gmail.com> Date: Wed, 8 May 2024 17:38:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v8 3/3] pinctrl: nuvoton: Add ma35d1 pinctrl and GPIO driver To: Christophe JAILLET , linus.walleij@linaro.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, p.zabel@pengutronix.de, j.neuschaefer@gmx.net Cc: linux-arm-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, ychuang3@nuvoton.com, schung@nuvoton.com References: <20240508065141.565848-1-ychuang570808@gmail.com> <20240508065141.565848-4-ychuang570808@gmail.com> <39ff586c-24fc-4987-bf5b-c99f0b2ae8f9@wanadoo.fr> Content-Language: en-US From: Jacky Huang In-Reply-To: <39ff586c-24fc-4987-bf5b-c99f0b2ae8f9@wanadoo.fr> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240508_023841_644913_0ABD9729 X-CRM114-Status: GOOD ( 23.49 ) 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 RGVhciBDaHJpc3RvcGhlLAoKVGhhbmtzIGZvciB0aGUgcmV2aWV3LgoKCk9uIDIwMjQvNS84IOS4 i+WNiCAwNDozOCwgQ2hyaXN0b3BoZSBKQUlMTEVUIHdyb3RlOgo+IExlIDA4LzA1LzIwMjQgw6Ag MDg6NTEsIEphY2t5IEh1YW5nIGEgw6ljcml0wqA6Cj4+IEZyb206IEphY2t5IEh1YW5nIDx5Y2h1 YW5nM0BudXZvdG9uLmNvbT4KPj4KPj4gQWRkIGNvbW1vbiBwaW5jdHJsIGFuZCBHUElPIGRyaXZl ciBmb3IgTnV2b3RvbiBNQTM1IHNlcmllcyBTb0MsIGFuZAo+PiBhZGQgc3VwcG9ydCBmb3IgbWEz NWQxIHBpbmN0cmwuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEphY2t5IEh1YW5nIDx5Y2h1YW5nM0Bu dXZvdG9uLmNvbT4KPj4gLS0tCj4KPiAuLi4KPgo+PiArc3RhdGljIGludCBtYTM1X2dwaW9saWJf cmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgCj4+IHN0cnVjdCBtYTM1X3Bp bmN0cmwgKm5wY3RsKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBtYTM1X3Bpbl9jdHJsICpjdHJs ID0gbnBjdGwtPmN0cmw7Cj4+ICvCoMKgwqAgc3RydWN0IG1hMzVfcGluX2JhbmsgKmJhbmsgPSBj dHJsLT5waW5fYmFua3M7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gK8KgwqDCoCBpbnQgaTsKPj4g Kwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBjdHJsLT5ucl9iYW5rczsgaSsrLCBiYW5rKysp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICghYmFuay0+dmFsaWQpIHsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGV2X3dhcm4oJnBkZXYtPmRldiwgIiVwZnc6IGJhbmsgaXMgbm90IHZhbGlk XG4iLCAKPj4gYmFuay0+Zndub2RlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGlu dWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBiYW5rLT5pcnF0eXBl ID0gMDsKPj4gK8KgwqDCoMKgwqDCoMKgIGJhbmstPmlycWludGVuID0gMDsKPj4gK8KgwqDCoMKg wqDCoMKgIGJhbmstPmNoaXAubGFiZWwgPSBiYW5rLT5uYW1lOwo+PiArwqDCoMKgwqDCoMKgwqAg YmFuay0+Y2hpcC5vZl9ncGlvX25fY2VsbHMgPSAyOwo+PiArwqDCoMKgwqDCoMKgwqAgYmFuay0+ Y2hpcC5wYXJlbnQgPSAmcGRldi0+ZGV2Owo+PiArwqDCoMKgwqDCoMKgwqAgYmFuay0+Y2hpcC5y ZXF1ZXN0ID0gbWEzNV9ncGlvX2NvcmVfdG9fcmVxdWVzdDsKPj4gK8KgwqDCoMKgwqDCoMKgIGJh bmstPmNoaXAuZGlyZWN0aW9uX2lucHV0ID0gbWEzNV9ncGlvX2NvcmVfZGlyZWN0aW9uX2luOwo+ PiArwqDCoMKgwqDCoMKgwqAgYmFuay0+Y2hpcC5kaXJlY3Rpb25fb3V0cHV0ID0gbWEzNV9ncGlv X2NvcmVfZGlyZWN0aW9uX291dDsKPj4gK8KgwqDCoMKgwqDCoMKgIGJhbmstPmNoaXAuZ2V0ID0g bWEzNV9ncGlvX2NvcmVfZ2V0Owo+PiArwqDCoMKgwqDCoMKgwqAgYmFuay0+Y2hpcC5zZXQgPSBt YTM1X2dwaW9fY29yZV9zZXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBiYW5rLT5jaGlwLmJhc2UgPSAt MTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJhbmstPmNoaXAubmdwaW8gPSBiYW5rLT5ucl9waW5zOwo+ PiArwqDCoMKgwqDCoMKgwqAgYmFuay0+Y2hpcC5jYW5fc2xlZXAgPSBmYWxzZTsKPj4gKwo+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGJhbmstPmlycSA+IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGdwaW9faXJxX2NoaXAgKmdpcnE7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ2lycSA9ICZiYW5rLT5jaGlwLmlycTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ3Bpb19pcnFfY2hpcF9zZXRfY2hpcChnaXJxLCAmbWEzNV9ncGlvX2lycWNoaXApOwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnaXJxLT5wYXJlbnRfaGFuZGxlciA9IG1hMzVfaXJxX2Rl bXV4X2ludGdyb3VwOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnaXJxLT5udW1fcGFyZW50 cyA9IDE7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2lycS0+cGFyZW50cyA9IGRl dm1fa2NhbGxvYygmcGRldi0+ZGV2LCBnaXJxLT5udW1fcGFyZW50cywKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZigqZ2ly cS0+cGFyZW50cyksIEdGUF9LRVJORUwpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo IWdpcnEtPnBhcmVudHMpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQg PSAtRU5PTUVNOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdpcnEtPnBhcmVudHNbMF0gPSBiYW5rLT5pcnE7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdpcnEtPmRlZmF1bHRfdHlwZSA9IElSUV9UWVBFX05PTkU7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdpcnEtPmhhbmRsZXIgPSBoYW5kbGVfYmFkX2lycTsKPj4gK8KgwqDCoMKgwqDC oMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZGV2bV9ncGlvY2hpcF9hZGRfZGF0 YSgmcGRldi0+ZGV2LCAmYmFuay0+Y2hpcCwgYmFuayk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo cmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9lcnIoJnBkZXYtPmRldiwgImZh aWxlZCB0byByZWdpc3RlciBncGlvX2NoaXAgJXMsIAo+PiBlcnJvciBjb2RlOiAlZFxuIiwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiYW5rLT5jaGlwLmxhYmVsLCByZXQpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9 Cj4+ICvCoMKgwqAgfQo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArCj4+ICtmYWlsOgo+PiArwqDC oMKgIHdoaWxlIChpLS0pIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGJhbmstLTsKPj4gK8KgwqDCoMKg wqDCoMKgIGlmICghYmFuay0+dmFsaWQpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRp bnVlOwo+PiArwqDCoMKgwqDCoMKgwqAgZ3Bpb2NoaXBfcmVtb3ZlKCZiYW5rLT5jaGlwKTsKPj4g K8KgwqDCoCB9Cj4KPiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgY29ycmVjdC4gVGhpcyBpcyB0byB1 bmRvIHRoZSAKPiBkZXZtX2dwaW9jaGlwX2FkZF9kYXRhKCksIHJpZ2h0Pwo+IEJlY2F1c2Ugb2Yg dGhlIGRldm1fLCBubyBuZWVkIHRvIGV4cGxpY2l0eWwgY2FsbCBncGlvY2hpcF9yZW1vdmUoKQo+ Cj4gKG1vcmUgb3ZlciwgaXQgc2hvdWxkIGhhdmUgYmVlbiAtLWkgYW5kIG5vdCBpLS0gaW4gdGhl IHdoaWxlKQo+CgpZZXMsIEkgd2lsbCBqdXN0IGRyb3AgdGhlIHdob2xlICJmYWlsOiIgY2FzZSBh bmTCoCBtYWtlIGl0IHJldHVybiBmcm9tIAoiZ290byBmYWlsIiB3aXRoIHRoZSBlcnJvciBjb2Rl LgoKPj4gK8KgwqDCoCByZXR1cm4gcmV0Owo+PiArfQo+Cj4gLi4uCj4KPj4gK3N0YXRpYyBpbnQg bWEzNV9waW5jb25mX3NldF9kcml2ZV9zdHJlbmd0aChzdHJ1Y3QgbWEzNV9waW5jdHJsIAo+PiAq bnBjdGwsIHVuc2lnbmVkIGludCBwaW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnQgc3RyZW5ndGgpCj4+ICt7Cj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IHBvcnQsIGdyb3VwX251bTsKPj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+ICvC oMKgwqAgaW50IGksIGRzX3ZhbCA9IC0xOwo+PiArwqDCoMKgIHUzMiByZWd2YWw7Cj4+ICsKPj4g K8KgwqDCoCBpZiAobWEzNV9waW5jb25mX2dldF9wb3dlcl9zb3VyY2UobnBjdGwsIHBpbikgPT0g TVZPTFRfMTgwMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoZHNfMTgwMG12X3RibCk7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo ZHNfMTgwMG12X3RibFtpXSA9PSBzdHJlbmd0aCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRzX3ZhbCA9IGk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoMKgwqDCoMKgIH0K Pj4gK8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUoZHNfMzMwMG12X3RibCk7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoZHNfMzMwMG12X3RibFtpXSA9PSBzdHJlbmd0aCkgewo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRzX3ZhbCA9IGk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29udGludWU7Cj4KPiBicmVhazsgPwoKSSB3aWxsIGZpeCBpdC4KCj4KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0KPj4g K8KgwqDCoCBpZiAoZHNfdmFsID09IC0xKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5W QUw7Cj4+ICsKPj4gK8KgwqDCoCBtYTM1X2dwaW9fY2xhX3BvcnQocGluLCAmZ3JvdXBfbnVtLCAm cG9ydCk7Cj4+ICvCoMKgwqAgYmFzZSA9IG5wY3RsLT5jdHJsLT5waW5fYmFua3NbZ3JvdXBfbnVt XS5yZWdfYmFzZTsKPj4gKwo+PiArwqDCoMKgIHJlZ3ZhbCA9IHJlYWRsKGJhc2UgKyBNQTM1X0dQ X0RTX1JFRyhwb3J0KSk7Cj4+ICvCoMKgwqAgcmVndmFsICY9IH5NQTM1X0dQX0RTX01BU0socG9y dCk7Cj4+ICvCoMKgwqAgcmVndmFsIHw9IGZpZWxkX3ByZXAoTUEzNV9HUF9EU19NQVNLKHBvcnQp LCBkc192YWwpOwo+PiArCj4+ICvCoMKgwqAgd3JpdGVsKHJlZ3ZhbCwgYmFzZSArIE1BMzVfR1Bf RFNfUkVHKHBvcnQpKTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+Cj4gLi4uCj4K Pj4gK3N0YXRpYyBpbnQgbWEzNV9waW5jdHJsX3Byb2JlX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsIAo+PiBzdHJ1Y3QgbWEzNV9waW5jdHJsICpucGN0bCkKPj4gK3sKPj4gK8KgwqDC oCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqY2hpbGQ7Cj4+ICvCoMKgwqAgdTMyIGlkeCA9IDA7Cj4+ ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIGRldmljZV9mb3JfZWFjaF9jaGlsZF9u b2RlKCZwZGV2LT5kZXYsIGNoaWxkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZndub2RlX3By b3BlcnR5X3ByZXNlbnQoY2hpbGQsICJncGlvLWNvbnRyb2xsZXIiKSkKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29udGludWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCBucGN0bC0+bmZ1bmN0aW9u cysrOwo+PiArwqDCoMKgwqDCoMKgwqAgbnBjdGwtPm5ncm91cHMgKz0gb2ZfZ2V0X2NoaWxkX2Nv dW50KHRvX29mX25vZGUoY2hpbGQpKTsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAo IW5wY3RsLT5uZnVuY3Rpb25zKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ ICsKPj4gK8KgwqDCoCBucGN0bC0+ZnVuY3Rpb25zID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5kZXYs IG5wY3RsLT5uZnVuY3Rpb25zLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc2l6ZW9mKCpucGN0bC0+ZnVuY3Rpb25zKSwgR0ZQX0tFUk5FTCk7Cj4+ICvCoMKgwqAg aWYgKCFucGN0bC0+ZnVuY3Rpb25zKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07 Cj4+ICsKPj4gK8KgwqDCoCBucGN0bC0+Z3JvdXBzID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5kZXYs IG5wY3RsLT5uZ3JvdXBzLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzaXplb2YoKm5wY3RsLT5ncm91cHMpLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoCBpZiAo IW5wY3RsLT5ncm91cHMpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gKwo+ PiArwqDCoMKgIGRldmljZV9mb3JfZWFjaF9jaGlsZF9ub2RlKCZwZGV2LT5kZXYsIGNoaWxkKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZndub2RlX3Byb3BlcnR5X3ByZXNlbnQoY2hpbGQsICJn cGlvLWNvbnRyb2xsZXIiKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IG1hMzVfcGluY3RybF9wYXJzZV9mdW5jdGlvbnMo dG9fb2Zfbm9kZShjaGlsZCksIG5wY3RsLCAKPj4gaWR4KyspOwo+PiArwqDCoMKgwqDCoMKgwqAg aWYgKHJldCkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKCZwZGV2LT5kZXYs ICJmYWlsZWQgdG8gcGFyc2UgZnVuY3Rpb25cbiIpOwo+Cj4gTWlzc2luZyBmd25vZGVfaGFuZGxl X3B1dChjaGlsZCk7ID8KPiAob3IgYSBzY29wZWQgdmVyc2lvbiBvZiBkZXZpY2VfZm9yX2VhY2hf Y2hpbGRfbm9kZSgpIGlmIGl0IGV4aXN0cykKPgoKWWVzLCBJIHdpbGwgYWRkIGZ3bm9kZV9oYW5k bGVfcHV0KGNoaWxkKSBoZXJlLgoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgcmV0dXJuIDA7 Cj4+ICsKPgo+IC4uLgo+Cj4gQ0oKCkJlc3QgUmVnYXJkcywKSmFja3kgSHVhbmcKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==