Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp7741703rwd; Tue, 20 Jun 2023 05:46:37 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6ZpGikwLirvkXyxYJjehwrYOAeWu7StLgUOPbZgQc7MqPceL5gV5iW4dxCVGLtqdanwh2G X-Received: by 2002:a05:6a00:c86:b0:64d:5f1d:3d77 with SMTP id a6-20020a056a000c8600b0064d5f1d3d77mr18512247pfv.34.1687265197348; Tue, 20 Jun 2023 05:46:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687265197; cv=none; d=google.com; s=arc-20160816; b=Z5FI3ZnAX1dY1OfGOnblsZ8jzogfnM8vdKKDjLWHgyyh4G2SrZ9ueI4RP32ycaabZj EWmICpP4hiDn3MW5ELZLraosgnLTyP9lR0Qwy9rarTDHGDa9/RgWxuKCDD0uzHt0Ob6O 6sEIfSLd+jzihrrjZ9HOgjrN5ykdoR23YnizF/wB2vKSxbDDyk+KD2FYIH6PDOBJ5JSM 97ZhR0YzGKiZHVZgG1n3CTOWNDSqzgOCBzPnqNoLYvRfgammwrFTIpp8pZ2BuKQDeKVA r0Xxgn+nnvv9mISSfkRq0ayxTzMS5k9OHj7WyaEI5XaMLq/C1gLv4qIMOBGnLbOUjOyf lhMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=vJBIMdzQElJkR5O7j8Gu5e+YxJlymrBTnrAtBSUaFYY=; b=kDNrAytVyS/L0Cpn9dVqWfYoFX2c73i4oUgV04feHj20BVKx8FrUxy4ftzn4e8HR30 jAWEQVvQ9gr7aIzMbnmNoxADXIBiaqgew1rpb4iQs0Y9XDiCjXH+GkeONcoxKQBS3o5t ORlMPndUX3R/qIZJlqhvkAlJ/Lk75Tms70SctmE6+4kReKUH2O1Aky6Xj04FK/qRvNXd qBdmHoOf3mnHUD4xWaPGg+WDLt8opIxxUTtM/7TAjYacw48V7oebcqxfngB/8zM4juhS zPSDJyDdFuess83Vm88MjIjjSeraWzdVXfHdr/7jQVSy0EWQgd8/2DahELqfoxGWrMdy d8KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@maquefel.me header.s=mail header.b=mOjUR+YT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e25-20020aa79819000000b006514fefb82asi1615413pfl.43.2023.06.20.05.46.25; Tue, 20 Jun 2023 05:46:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@maquefel.me header.s=mail header.b=mOjUR+YT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231272AbjFTMhU (ORCPT + 99 others); Tue, 20 Jun 2023 08:37:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230251AbjFTMhS (ORCPT ); Tue, 20 Jun 2023 08:37:18 -0400 Received: from forward502a.mail.yandex.net (forward502a.mail.yandex.net [178.154.239.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D4566A3; Tue, 20 Jun 2023 05:37:14 -0700 (PDT) Received: from mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net [IPv6:2a02:6b8:c0f:26a7:0:640:a2d5:0]) by forward502a.mail.yandex.net (Yandex) with ESMTP id 55F3A5ED33; Tue, 20 Jun 2023 15:37:06 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 4bgRGGvDYa60-sHzphrUC; Tue, 20 Jun 2023 15:37:05 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maquefel.me; s=mail; t=1687264625; bh=vJBIMdzQElJkR5O7j8Gu5e+YxJlymrBTnrAtBSUaFYY=; h=References:Date:In-Reply-To:Cc:To:From:Subject:Message-ID; b=mOjUR+YTsJTppj7OXm/370cgr5xHq2nD8NC27CChf9NB+wnURu4GpAEw1TUlAz7gF 75y5KISZDr3k5pjPbZvdWnNYUD4O+6bQuWnxew6f3zX7va0K08zkqg6CSXEZa2P+DT PMEbXc+VP1Umvxqa7XozGHBQGQkq84+L0fA83VAA= Authentication-Results: mail-nwsmtp-smtp-production-main-84.vla.yp-c.yandex.net; dkim=pass header.i=@maquefel.me Message-ID: <33f1ba23ea6698732fb9e869778825ac00a4226e.camel@maquefel.me> Subject: Re: [PATCH v1 05/43] clk: ep93xx: add DT support for Cirrus EP93xx From: Nikita Shubin To: andy.shevchenko@gmail.com Cc: Alexander Sverdlin , Arnd Bergmann , Linus Walleij , Michael Turquette , Stephen Boyd , Michael Peters , Kris Bahnsen , linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org Date: Tue, 20 Jun 2023 15:37:07 +0300 In-Reply-To: References: <20230424123522.18302-1-nikita.shubin@maquefel.me> <20230601053546.9574-6-nikita.shubin@maquefel.me> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.46.3 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGVsbG8gQW5keSEKClRoYW5rIHlvdSBmb3IgeW91ciByZXZpZXchCgpPbiBTYXQsIDIwMjMtMDYt MDMgYXQgMjE6NTggKzAzMDAsIGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20gd3JvdGU6Cj4gVGh1 LCBKdW4gMDEsIDIwMjMgYXQgMDg6MzM6NTZBTSArMDMwMCwgTmlraXRhIFNodWJpbiBraXJqb2l0 dGk6Cj4gPiBUaGlzIGlzIGEgcmV3cml0ZSBvZiBFUDkzeHggdGltZXIgZHJpdmVyIGluCj4gPiBh cmNoL2FybS9tYWNoLWVwOTN4eC9jbG9jay5jIHRyeWluZyB0byBkbyBldmVyeXRoaW5nCj4gPiB0 aGUgZGV2aWNlIHRyZWUgd2F5Ogo+ID4gCj4gPiAtIGNvbnZlcnQgdG8gc3lzY29uIGRyaXZlcgo+ ID4gLSBwcm92aWRlIGNsb2NrIGFjY2VzIHZpYSBvZgo+IAo+IC4uLgo+IAo+ID4gKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gPiArI2luY2x1 ZGUgPGxpbnV4L2Vyci5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvc3RyaW5nLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gPiArI2lu Y2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsa2Rldi5oPgo+ ID4gKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgv b2YuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ID4gKyNpbmNsdWRlIDxs aW51eC9tZmQvc3lzY29uLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5o Pgo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvc29j L2NpcnJ1cy9lcDkzeHguaD4KPiAKPiBDYW4geW91IGtlZXAgdGhlbSBzb3J0ZWQ/Cj4gTWlzc2lu ZyBiaXRzLmguCj4gCj4gKyBCbGFuayBsaW5lLgo+IAo+ID4gKyNpbmNsdWRlIDxkdC1iaW5kaW5n cy9jbG9jay9jaXJydXMsZXA5M3h4LWNsb2NrLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGFzbS9k aXY2NC5oPgo+IAo+IC4uLgo+IAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9k YXRhIGVwOTN4eF9jbGtfcGFyZW50c1tdID0gewo+ID4gK8KgwqDCoMKgwqDCoMKgRVBfUEFSRU5U KCJ4dGFsaSIpLAo+ID4gK8KgwqDCoMKgwqDCoMKgRVBfUEFSRU5UKCJwbGwxIiksCj4gPiArwqDC oMKgwqDCoMKgwqBFUF9QQVJFTlQoInBsbDIiKQo+IAo+IEtlZXAgdHJhaWxpbmcgY29tbWEsIGl0 IG1pZ2h0IGhlbHAgaW4gY2FzZSBpdCB3aWxsIGJlIGV4dGVuZGVkLgo+IAo+ID4gK307Cj4gCj4g Li4uCj4gCj4gPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FsY19wbGxfcmF0ZSh1NjQgcmF0ZSwg dTMyIGNvbmZpZ193b3JkKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoGludCBpOwo+ID4gKwo+ ID4gK8KgwqDCoMKgwqDCoMKgcmF0ZSAqPSAoKGNvbmZpZ193b3JkID4+IDExKSAmIDB4MWYpICsg MTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gWDFGQkQgKi8KPiA+ICvCoMKg wqDCoMKgwqDCoHJhdGUgKj0gKChjb25maWdfd29yZCA+PiA1KSAmIDB4M2YpICsgMTvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiBYMkZCRCAqLwo+ID4gK8KgwqDCoMKgwqDC oMKgZG9fZGl2KHJhdGUsIChjb25maWdfd29yZCAmIDB4MWYpICsgMSk7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiBYMklQRCAqLwo+IAo+IEdFTk1BU0soKSBpbiBhbGwg dGhyZWU/Cj4gCj4gPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgKChjb25maWdfd29y ZCA+PiAxNikgJiAzKTsgaSsrKcKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gPiBQUyAqLwo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGUgPj49IDE7Cj4gCj4gSSdtIG5vdCBzdXJl IEkgdW5kZXJzdGFuZCB3aHkgbG9vcCBpcyBuZWVkZWQuCj4gCj4gwqDCoMKgwqDCoMKgwqDCoHJh dGUgPj49IDEgPDwgKChjb25maWdfd29yZCA+PiAxNikgJiBHRU5NQVNLKDEsIDApKTsKPiAKPiA/ Cj4gCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmF0ZTsKPiA+ICt9Cj4gCj4gLi4uCj4gCj4g PiArc3RydWN0IGNsa19wc2Mgewo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19odyBodzsK PiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCByZWc7Cj4gPiArwqDCoMKgwqDCoMKgwqB1 OCBiaXRfaWR4Owo+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIG1hc2s7Cj4gPiArwqDCoMKgwqDCoMKg wqB1OCBzaGlmdDsKPiA+ICvCoMKgwqDCoMKgwqDCoHU4IHdpZHRoOwo+ID4gK8KgwqDCoMKgwqDC oMKgY29uc3QgY2hhciAqZGl2Owo+ID4gK8KgwqDCoMKgwqDCoMKgdTggbnVtX2RpdjsKPiA+ICvC oMKgwqDCoMKgwqDCoHNwaW5sb2NrX3QgKmxvY2s7Cj4gPiArwqDCoMKgwqDCoMKgwqBib29sIG5v bG9jazsKPiAKPiBJcyBpdCBpbXBvcnRhbnQgdG8gbWl4IGRpZmZlcmVudCB0eXBlcyBsaWtlIHRo aXM/IHBhaG9sZSBjYW4gcHJvdmlkZQo+IHlvdSBhIG11Y2gKPiBiZXR0ZXIgbGF5b3V0IHRoYXQg ZG9lcyBub3Qgd2FzdGUgYSBsb3Qgb2YgYnl0ZXMuCj4gCj4gPiArfTsKPiAKPiAuLi4KPiAKPiA+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiAodmFsICYgQklUKHBzYy0+Yml0X2lkeCkpID8gMSA6IDA7 Cj4gCj4gISEoLi4uKSBhbHNvIHdvdWxkIHdvcmssIGJ1dCB1cCB0byB5b3UuIENvbXBpbGVyIG9w dGltaXplcyB0aGlzCj4gYW55d2F5Lgo+IAo+IC4uLgo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgdW5z aWduZWQgbG9uZyBmbGFncyA9IDA7Cj4gCj4gUmVkdW5kYW50IGFzc2lnbm1lbnQuICpzcGluX2xv Y2sqKCkgYXJlIG1hY3Jvcy4KPiBTYW1lIGZvciBhbGwgY2FzZXMgd2l0aCAqc3Bpbl9sb2NrKigp Lgo+IAo+IC4uLgo+IAo+ID4gK3N0YXRpYyB1OCBlcDkzeHhfbXV4X2dldF9wYXJlbnQoc3RydWN0 IGNsa19odyAqaHcpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBz YyA9IHRvX2Nsa19wc2MoaHcpOwo+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiA+ICsKPiA+ ICvCoMKgwqDCoMKgwqDCoGVwOTN4eF9yZWdtYXBfcmVhZChwc2MtPnJlZywgJnZhbCk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoISh2YWwgJiBFUDkzWFhfU1lTQ09OX0NMS0RJVl9FU0VMKSkKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ICsKPiA+ICvCoMKg wqDCoMKgwqDCoGlmICghKHZhbCAmIEVQOTNYWF9TWVNDT05fQ0xLRElWX1BTRUwpKQo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAxOwo+ID4gKwo+ID4gK8KgwqDCoMKg wqDCoMKgcmV0dXJuIDI7Cj4gCj4gV29uZGVyIGlmIHN3aXRjaC1jYXNlIGNhbiBtYWtlIHRoaXMg bW9yZSBleHBsaWNpdC4uLgo+IAo+ID4gK30KPiAKPiAuLi4KPiAKPiA+ICvCoMKgwqDCoMKgwqDC oGlmIChwc2MtPmxvY2spCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl9s b2NrX2lycXNhdmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gCj4gRG9lcyBzcGFyc2UgY29tcGxhaW4g b24gdGhlIGxvY2s/IElmIHNvLCB0aGUgZnVuY3Rpb24gd291bGQgbmVlZCBhCj4gc3BlY2lhbAo+ IGFubm90YXRpb24uCj4gCj4gLi4uCj4gCj4gPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfcmVnbWFw X3JlYWQocHNjLT5yZWcsICZ2YWwpOwo+ID4gK8KgwqDCoMKgwqDCoMKgdmFsICY9IH4oRVA5M1hY X1NZU0NPTl9DTEtESVZfRVNFTCB8Cj4gPiBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QU0VMKTsKPiA+ ICsKPiAKPiBNb3JlIG5hdHVyYWxseSB0aGlzIGJsYW5rIGxpbmUgbG9va3MgZnRlciByZWdtYXBf cmVhZC4KPiAKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChpbmRleCAhPSAwKSB7Cj4gCj4gwqDCoMKg wqDCoMKgwqDCoGlmIChpbmRleCkKPiAKPiBhbHNvIHdvcmtzLgo+IAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHZhbCB8PSBFUDkzWFhfU1lTQ09OX0NMS0RJVl9FU0VMOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZhbCB8PSAoaW5kZXggLSAxKSA/IEVQOTNY WF9TWVNDT05fQ0xLRElWX1BTRUwgOiAwOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+IAo+IC4uLgo+ IAo+ID4gK3N0YXRpYyB1bnNpZ25lZCBsb25nIGVwOTN4eF9kZGl2X3JlY2FsY19yYXRlKHN0cnVj dCBjbGtfaHcgKmh3LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBsb25nCj4gPiBwYXJlbnRfcmF0ZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgY2xrX3BzYyAqcHNjID0gdG9fY2xrX3BzYyhodyk7Cj4gPiArwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBsb25nIHJhdGUgPSAwOwo+IAo+IEluc3RlYWQgeW91IGNhbiBpbnZlcnQgdGhlIGNv bmRpdGlvbmFsLCBzZWUgYmVsb3cuCj4gCj4gPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsOwo+ID4g K8KgwqDCoMKgwqDCoMKgaW50IHBkaXYsIGRpdjsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGVw OTN4eF9yZWdtYXBfcmVhZChwc2MtPnJlZywgJnZhbCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBwZGl2 ID0gKCh2YWwgPj4gRVA5M1hYX1NZU0NPTl9DTEtESVZfUERJVl9TSElGVCkgJiAweDAzKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoGRpdiA9IHZhbCAmIDB4N2Y7Cj4gCj4gR0VOTUFTSygpIGluIGJvdGgg Y2FzZXM/CgpJcyBpdCBhIGdvb2QgaWRlYSB0byByZXBsYWNlIDB4MDMgd2l0aCBHRU5NQVNLKDEs IDApID8KCj4gCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoZGl2ID4gMCkKPiAKPiDCoMKgwqDCoMKg wqDCoMKgaWYgKGRpdiA8PSAwKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIDA7Ck9yIGV2ZW7CoAoKaWYgKCFkaXYpCglyZXR1cm4gMDsKCgo+IAo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGUgPSBESVZfUk9VTkRfQ0xPU0VTVChwYXJlbnRfcmF0 ZSAqIDIsIChwZGl2ICsKPiA+IDMpICogZGl2KTsKPiAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IERJVl9ST1VORF9DTE9TRVMoLi4uKTsKPiAKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVy biByYXRlOwo+ID4gK30KPiAKPiAuLi4KPiAKPiA+ICtzdGF0aWMgaW50IGVwOTN4eF9kZGl2X3Nl dF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nCj4gPiByYXRlLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgY2xrX3BzYyAqcHNjID0gdG9fY2xrX3BzYyhodyk7Cj4gPiArwqDCoMKgwqDCoMKgwqBp bnQgcGRpdiwgZGl2LCBucGRpdiwgbmRpdjsKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxv bmcgYWN0dWFsX3JhdGUsIG1jbGtfcmF0ZSwgcmF0ZV9lcnIgPSAtMTsKPiAKPiBVTE9OR19NQVgg aW5zdGVhZCBvZiAtMS4gLTEgb24gNjQtYml0cyBpcyBub3QgdGhlIHNhbWUgYXMgVUxPTkdfTUFY Cj4gKHllcywgSSBrbm93IHRoYXQgdGhpcyBpcyBub3QgdGhlIGNhc2UgaGVyZSwgc2ltcGx5IG5v dCB0aGUgYmVzdAo+IGNvbnN0YW50KS4KPiAKPiA+ICvCoMKgwqDCoMKgwqDCoGludCBmb3VuZCA9 IDA7Cj4gCj4gQmVzaWRlcyB1c2luZyBpdCBhcyBib29sZWFuLCBJSVVDIGl0J3Mgbm90IG5lZWRl ZCBpZiB5b3UgY29tcGFyZQo+IHRoZSByYXRlX2VyciB0byBVTE9OR19NQVggd2hlcmUgcmVxdWly ZWQuCj4gCj4gPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oMKgZXA5M3h4X3JlZ21hcF9yZWFkKHBzYy0+cmVnLCAmdmFsKTsKPiA+ICvCoMKgwqDCoMKgwqDC oG1jbGtfcmF0ZSA9IHBhcmVudF9yYXRlICogMjsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGZv ciAocGRpdiA9IDQ7IHBkaXYgPD0gNjsgcGRpdisrKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGl2ID0gRElWX1JPVU5EX0NMT1NFU1QobWNsa19yYXRlLCByYXRlICogcGRp dik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGRpdiA8IDEgfHwgZGl2 ID4gMTI3KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjb250aW51ZTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1 YWxfcmF0ZSA9IERJVl9ST1VORF9DTE9TRVNUKG1jbGtfcmF0ZSwgcGRpdiAqCj4gPiBkaXYpOwo+ IAo+ID4gKwo+IAo+IFJlZHVuZGFudCBibGFuayBsaW5lLgo+IAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICghZm91bmQgfHwgYWJzKGFjdHVhbF9yYXRlIC0gcmF0ZSkgPCBy YXRlX2Vycikgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBucGRpdiA9IHBkaXYgLSAzOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuZGl2ID0gZGl2Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByYXRlX2VyciA9IGFicyhhY3R1YWxfcmF0ZSAtIHJhdGUp Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3Vu ZCA9IDE7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKg wqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFmb3VuZCkKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiAKPiA+ICvCoMKgwqDCoMKg wqDCoC8qIENsZWFyIG9sZCBkaXZpZGVycyAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgdmFsICY9IH4w eDM3ZjsKPiAKPiBHRU5NQVNLKCkgPwo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgLyogU2V0IHRoZSBu ZXcgcGRpdiBhbmQgZGl2IGJpdHMgZm9yIHRoZSBuZXcgY2xvY2sgcmF0ZSAqLwo+ID4gK8KgwqDC oMKgwqDCoMKgdmFsIHw9IChucGRpdiA8PCBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QRElWX1NISUZU KSB8IG5kaXY7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2Vk X3dyaXRlKHZhbCwgcHNjLT5yZWcpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gPiArfQo+IAo+IC4uLgo+IAo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtf cHNjICpwc2MgPSB0b19jbGtfcHNjKGh3KTsKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxv bmcgYmVzdCA9IDAsIG5vdzsKPiA+ICvCoMKgwqDCoMKgwqDCoGJvb2wgYXNzaWduZWQgPSBmYWxz ZTsKPiAKPiBZb3Ugc2VlLCB5b3UgYXJlIHVzaW5nIGhlcmUgdGhlIGJvb2xlYW4uIEJ1dCB0aGlu ayBhYm91dCBpdCwgbWF5YmUgaXQKPiBjYW4gYmUKPiByZWZhY3RvcmVkIGFzIHdlbGwuCj4gCj4g PiArwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9 IDA7IGkgPCBwc2MtPm51bV9kaXY7IGkrKykgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICgocmF0ZSAqIHBzYy0+ZGl2W2ldKSA9PSAqcGFyZW50X3JhdGUpCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByYXRlOwo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5vdyA9IERJVl9ST1VORF9D TE9TRVNUKCpwYXJlbnRfcmF0ZSwgcHNjLT5kaXZbaV0pOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICghYXNzaWduZWQgfHwgaXNfYmVzdChyYXRlLCBub3csIGJl c3QpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi ZXN0ID0gbm93Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFzc2lnbmVkID0g dHJ1ZTsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVy biBiZXN0Owo+ID4gK30KPiAKPiAuLi4KPiAKPiA+ICvCoMKgwqDCoMKgwqDCoGVwOTN4eF9yZWdt YXBfcmVhZChFUDkzWFhfU1lTQ09OX0NMS1NFVDIsICZ2YWx1ZSk7Cj4gPiArwqDCoMKgwqDCoMKg wqBjbGtfdXNiX2RpdiA9ICgoKHZhbHVlID4+IDI4KSAmIDB4ZikgKyAxKTsKPiAKPiBHRU5NQVNL KCkgPwo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfZmFj dG9yKE5VTEwsICJ1c2JfY2xrIiwgInBsbDIiLAo+ID4gMCwgMSwgY2xrX3VzYl9kaXYpOwo+ID4g K8KgwqDCoMKgwqDCoMKgaHcgPSBlcDkzeHhfY2xrX3JlZ2lzdGVyX2dhdGUoIm9oY2ktcGxhdGZv cm0iLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgInVzYl9jbGsiLCAwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9QV1JD TlQsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX1BXUkNOVF9VU0hfRU4sCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0cnVl KTsKPiAKPiAuLi4KPiAKPiA+ICvCoMKgwqDCoMKgwqDCoC8qIHB3bSBjbG9jayAqLwo+IAo+IFBX TQo+IAo+IC4uLgo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgdmFsdWUgfD0gKDEgPDwgRVA5M1hYX1NZ U0NPTl9DTEtESVZfUERJVl9TSElGVCkgfCAyOwo+IAo+IEJJVCgpID8KPiAKPiAuLi4KPiAKPiA+ ICvCoMKgwqDCoMKgwqDCoHZhbHVlIHw9ICgxIDw8IEVQOTNYWF9TWVNDT05fQ0xLRElWX1BESVZf U0hJRlQpIHwgMjsKPiAKPiBEaXR0by4KPiAKPiAuLi4KPiAKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG9mX2RldmljZV9pZCBlcDkzeHhfY2xrX2R0X2lkc1tdID0gewo+ID4gK8KgwqDCoMKgwqDC oMKgeyAuY29tcGF0aWJsZSA9ICJjaXJydXMsZXA5MzAxLWNsayIsIH0sCj4gCj4gSW5uZXIgY29t bWEgaXMgbm90IG5lZWRlZC4KPiAKPiA+ICvCoMKgwqDCoMKgwqDCoHsgLyogc2VudGluZWwgKi8g fQo+ID4gK307Cj4gCj4gLi4uCj4gCj4gPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfY2xrX2RhdGEg PSBremFsbG9jKHN0cnVjdF9zaXplKGVwOTN4eF9jbGtfZGF0YSwgaHdzLAo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5 M1hYX05VTV9DTEtTKSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEdGUF9LRVJORUwpOwo+IAo+ID4gKwo+IAo+IFJlZHVu ZGFudCBibGFuayBsaW5lLgo+IAo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFlcDkzeHhfY2xrX2Rh dGEpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+IAo+IC4uLgo+ IAo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gZXA5M3h4X3JlZ21hcF9yZWFkKEVQOTNYWF9TWVND T05fQ0hJUElELCAmdmFsdWUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJldCB8fCAodmFsdWUg JiAweGZmZmYpICE9IEVQOTNYWF9TWVNDT05fQ0hJUElEX0lEKSB7Cj4gCj4gR0VOTUFTSygpID8K PiAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcl9lcnIoImZhaWxlZCB0byBy ZWFkIGdsb2JhbCBzdGF0dXMgcmVnaXN0ZXJcbiIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybjsKPiA+ICvCoMKgwqDCoMKgwqDCoH0KPiAKPiAuLi4KPiAKPiA+ICvC oMKgwqDCoMKgwqDCoC8qIEluaXRpYWxpemUgdGhlIHBsbDEgZGVyaXZlZCBjbG9ja3MgKi8KPiA+ ICvCoMKgwqDCoMKgwqDCoGNsa19mX2RpdiA9IGZjbGtfZGl2aXNvcnNbKHZhbHVlID4+IDI1KSAm IDB4N107Cj4gPiArwqDCoMKgwqDCoMKgwqBjbGtfaF9kaXYgPSBoY2xrX2Rpdmlzb3JzWyh2YWx1 ZSA+PiAyMCkgJiAweDddOwo+ID4gK8KgwqDCoMKgwqDCoMKgY2xrX3BfZGl2ID0gcGNsa19kaXZp c29yc1sodmFsdWUgPj4gMTgpICYgMHgzXTsKPiAKPiBEaXR0by4KPiAKPiAKPiAuLi4KPiAKPiA+ ICsKPiAKPiBVbm5lZGVkIGJsYW5rIGxpbmUuCj4gCj4gPiArQ0xLX09GX0RFQ0xBUkVfRFJJVkVS KGVwOTN4eCwgImNpcnJ1cyxlcDkzMDEtY2xrIiwKPiA+IGVwOTN4eF9jbG9ja19pbml0KTsKPiAK Cg==