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=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,INVALID_MSGID,MAILING_LIST_MULTI,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 7154AC4338F for ; Mon, 2 Aug 2021 09:56:49 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 2A94260F58 for ; Mon, 2 Aug 2021 09:56:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2A94260F58 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sipeed.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=1yo2ZRMxVoOBOn9ftR4z9DwHkwDi9s8FgdvqacIz/VA=; b=eC9dLGTYi5dfnu CPvSl97S2UdDypS0FOZVC5Z8sJbyy8pn7ujdALkifTDvTLKw+ZwM8Aq587OuNBahqLc4k48noNAft GB+KAwx2Lw3hxV3fwdWbVmr8p9du10N6MxxTw69nAzj0xie5luySfRIlRM7GMcRs5h/VOrBo57sfA RX9KkLJ/Tk1K7iQOi5qSSLa8qDsqDcYjT85p/FtWiW/r9rMmWRBS4JCDc6awm3aHbcmGsTIeFcgD2 ahUmD6EXsRixc1AZfcFGW9Wl4FBr2+MXu2b+i71Wwvy9aXcadmdIe2tBj+Oz6ZBjBDJJsvz8RZLNj wyoMa63EozN67ZGHxehA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAUel-00FdSm-Vj; Mon, 02 Aug 2021 09:54:48 +0000 Received: from smtpbg127.qq.com ([109.244.180.96] helo=smtpbg.qq.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mAUec-00FdOA-7u for linux-arm-kernel@lists.infradead.org; Mon, 02 Aug 2021 09:54:45 +0000 X-QQ-mid: bizesmtp37t1627897973tswe4cud Received: from [192.168.0.46] (unknown [113.89.245.207]) by esmtp6.qq.com (ESMTP) with id ; Mon, 02 Aug 2021 17:52:52 +0800 (CST) X-QQ-SSF: 00100000002000209000D00A0000000 X-QQ-FEAT: JN+C/NT9bLPnvSsDS+Rz5vENXxe8N1Wx5bYyvoQrGp+sPrsGLouO+1xgixt/q NfkCKAK6dwEnwhDPKnkIpw2orTv5S5EdN6G7Whb5Q28rwCAQa8BbhYuwQSdTFvo61PT0KbA ZBhwv+4FX13cQHMGW71XLRDjIedT3Em9C1yS9W++FfNcvwLb+hrtWNjBelXiy6Icc0e68in eo1TGiIfwBmFGsjyCp/3LBUs8C+zSZO6ODtsMnA2YOxx60rx7CIVYmR7qtTtA9fBt21PZf7 uPk8UtAgSYlitN05XCZN6qhjZsHIkWWi2ZmRC0+Rp6VCAehK17/4dmxnuU5NWWJQbupXRKM 6PzNQfVDqTdLHAnUElS7uEbvyKWa+O9wyActyMG X-QQ-GoodBg: 0 Message-ID: +B00387BDD8D62B3B Subject: Re: [PATCH 10/17] clk: sunxi=ng: add support for R329 R-CCU From: Icenowy Zheng To: Rob Herring , Maxime Ripard , Chen-Yu Tsai , Jernej Skrabec , Ulf Hansson , Linus Walleij , Alexandre Belloni , Andre Przywara , Samuel Holland Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org Date: Mon, 02 Aug 2021 17:52:52 +0800 In-Reply-To: <20210802062212.73220-11-icenowy@sipeed.com> References: <20210802062212.73220-1-icenowy@sipeed.com> <20210802062212.73220-11-icenowy@sipeed.com> Organization: Sipeed User-Agent: Evolution 3.40.0 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:sipeed.com:qybgspam:qybgspam1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210802_025438_866868_DC5421AF X-CRM114-Status: GOOD ( 28.28 ) 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-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 5ZyoIDIwMjEtMDgtMDLmmJ/mnJ/kuIDnmoQgMTQ6MjIgKzA4MDDvvIxJY2Vub3d5IFpoZW5n5YaZ 6YGT77yaCj4gQWxsd2lubmVyIFIzMjkgaGFzIGNsb2NrIGNvbnRyb2xzIGluIFBSQ00sIGxpa2Ug b3RoZXIgbmV3IEFsbHdpbm5lcgo+IFNvQ3MuCj4gCj4gQWRkIHN1cHBvcnQgZm9yIHRoZW0uCj4g Cj4gVGhpcyBkcml2ZXIgaXMgYWRkZWQgYmVmb3JlIHRoZSBtYWluIENDVSBiZWNhdXNlIFBMTHMg YXJlIGNvbnRyb2xsZWQKPiBieQo+IFItQ0NVIG9uIFIzMjkuCj4gCj4gU2lnbmVkLW9mZi1ieTog SWNlbm93eSBaaGVuZyA8aWNlbm93eUBzaXBlZWQuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9jbGsv c3VueGktbmcvS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAg NSArCj4gwqBkcml2ZXJzL2Nsay9zdW54aS1uZy9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKgZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjUw aS1yMzI5LXIuY8KgwqDCoMKgwqAgfCAzNzQKPiArKysrKysrKysrKysrKysrKysKPiDCoGRyaXZl cnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktcjMyOS1yLmjCoMKgwqDCoMKgIHzCoCAzMyArKwo+ IMKgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9zdW41MGktcjMyOS1yLWNjdS5oIHzCoCAzMyAr Kwo+IMKgaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zdW41MGktcjMyOS1yLWNjdS5oIHzCoCAy NCArKwo+IMKgNiBmaWxlcyBjaGFuZ2VkLCA0NzAgaW5zZXJ0aW9ucygrKQo+IMKgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW41MGktcjMyOS1yLmMKPiDCoGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuNTBpLXIzMjktci5o Cj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9zdW41MGkt cjMyOS1yLWNjdS5oCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9y ZXNldC9zdW41MGktcjMyOS1yLWNjdS5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3N1 bnhpLW5nL0tjb25maWcgYi9kcml2ZXJzL2Nsay9zdW54aS0KPiBuZy9LY29uZmlnCj4gaW5kZXgg Y2Q0NmQ4ODUzODc2Li5lNDliMmMyZmE1YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jbGsvc3Vu eGktbmcvS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvY2xrL3N1bnhpLW5nL0tjb25maWcKPiBAQCAt NDIsNiArNDIsMTEgQEAgY29uZmlnIFNVTjUwSV9INl9SX0NDVQo+IMKgwqDCoMKgwqDCoMKgwqBk ZWZhdWx0IEFSTTY0ICYmIEFSQ0hfU1VOWEkKPiDCoMKgwqDCoMKgwqDCoMKgZGVwZW5kcyBvbiAo QVJNNjQgJiYgQVJDSF9TVU5YSSkgfHwgQ09NUElMRV9URVNUCj4gwqAKPiArY29uZmlnIFNVTjUw SV9SMzI5X1JfQ0NVCj4gK8KgwqDCoMKgwqDCoMKgYm9vbCAiU3VwcG9ydCBmb3IgdGhlIEFsbHdp bm5lciBSMzI5IFBSQ00gQ0NVIgo+ICvCoMKgwqDCoMKgwqDCoGRlZmF1bHQgQVJNNjQgJiYgQVJD SF9TVU5YSQo+ICvCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gKEFSTTY0ICYmIEFSQ0hfU1VOWEkp IHx8IENPTVBJTEVfVEVTVAo+ICsKPiDCoGNvbmZpZyBTVU40SV9BMTBfQ0NVCj4gwqDCoMKgwqDC oMKgwqDCoGJvb2wgIlN1cHBvcnQgZm9yIHRoZSBBbGx3aW5uZXIgQTEwL0EyMCBDQ1UiCj4gwqDC oMKgwqDCoMKgwqDCoGRlZmF1bHQgTUFDSF9TVU40SQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Ns ay9zdW54aS1uZy9NYWtlZmlsZSBiL2RyaXZlcnMvY2xrL3N1bnhpLQo+IG5nL01ha2VmaWxlCj4g aW5kZXggOTZjMzI0MzA2ZDk3Li5kYjMzOGEyMTg4ZmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9j bGsvc3VueGktbmcvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9NYWtlZmls ZQo+IEBAIC0yOCw2ICsyOCw3IEBAIG9iai0kKENPTkZJR19TVU41MElfQTEwMF9SX0NDVSnCoMKg wqDCoMKgwqDCoCs9IGNjdS0KPiBzdW41MGktYTEwMC1yLm8KPiDCoG9iai0kKENPTkZJR19TVU41 MElfSDZfQ0NVKcKgwqDCoMKgKz0gY2N1LXN1bjUwaS1oNi5vCj4gwqBvYmotJChDT05GSUdfU1VO NTBJX0g2MTZfQ0NVKcKgwqArPSBjY3Utc3VuNTBpLWg2MTYubwo+IMKgb2JqLSQoQ09ORklHX1NV TjUwSV9INl9SX0NDVSnCoMKgKz0gY2N1LXN1bjUwaS1oNi1yLm8KPiArb2JqLSQoQ09ORklHX1NV TjUwSV9SMzI5X1JfQ0NVKcKgwqDCoMKgwqDCoMKgwqArPSBjY3Utc3VuNTBpLXIzMjktci5vCj4g wqBvYmotJChDT05GSUdfU1VONElfQTEwX0NDVSnCoMKgwqDCoCs9IGNjdS1zdW40aS1hMTAubwo+ IMKgb2JqLSQoQ09ORklHX1NVTjVJX0NDVSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCs9IGNjdS1zdW41aS5vCj4gwqBvYmotJChDT05GSUdfU1VONklfQTMxX0NDVSnCoMKgwqDCoCs9 IGNjdS1zdW42aS1hMzEubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Ut c3VuNTBpLXIzMjktci5jCj4gYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuNTBpLXIzMjkt ci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjU0MTNhNzAx Y2I1Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3Vu NTBpLXIzMjktci5jCj4gQEAgLTAsMCArMSwzNzQgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDIxIFNpcGVlZAo+ICsg KiBCYXNlZCBvbiB0aGUgSDYxNiBDQ1UgZHJpdmVyLCB3aGljaCBpczoKPiArICrCoMKgIENvcHly aWdodCAoYykgMjAyMCBBcm0gTHRkLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9jbGst cHJvdmlkZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArCj4g KyNpbmNsdWRlICJjY3VfY29tbW9uLmgiCj4gKyNpbmNsdWRlICJjY3VfcmVzZXQuaCIKPiArCj4g KyNpbmNsdWRlICJjY3VfZGl2LmgiCj4gKyNpbmNsdWRlICJjY3VfZ2F0ZS5oIgo+ICsjaW5jbHVk ZSAiY2N1X21wLmgiCj4gKyNpbmNsdWRlICJjY3VfbXVsdC5oIgo+ICsjaW5jbHVkZSAiY2N1X25r LmgiCj4gKyNpbmNsdWRlICJjY3VfbmttLmgiCj4gKyNpbmNsdWRlICJjY3VfbmttcC5oIgo+ICsj aW5jbHVkZSAiY2N1X25tLmgiCj4gKwo+ICsjaW5jbHVkZSAiY2N1LXN1bjUwaS1yMzI5LXIuaCIK PiArCj4gKy8qCj4gKyAqIFRoZSBNIGZhY3RvciBpcyBwcmVzZW50IGluIHRoZSByZWdpc3Rlcidz IGRlc2NyaXB0aW9uLCBidXQgbm90IGluCj4gdGhlCj4gKyAqIGZyZXF1ZW5jeSBmb3JtdWxhLCBh bmQgaXQncyBkb2N1bWVudGVkIGFzICJUaGUgYml0IGlzIG9ubHkgZm9yCj4gKyAqIHRlc3Rpbmci LCBzbyBpdCdzIG5vdCBtb2RlbGxlZCBhbmQgdGhlbiBmb3JjZSB0byAwLgo+ICsgKi8KPiArI2Rl ZmluZSBTVU41MElfUjMyOV9QTExfQ1BVWF9SRUfCoMKgwqDCoMKgwqDCoDB4MTAwMAo+ICtzdGF0 aWMgc3RydWN0IGNjdV9tdWx0IHBsbF9jcHV4X2NsayA9IHsKPiArwqDCoMKgwqDCoMKgwqAuZW5h YmxlwqDCoMKgwqDCoMKgwqDCoMKgPSBCSVQoMzEpLAo+ICvCoMKgwqDCoMKgwqDCoC5sb2NrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gQklUKDI4KSwKPiArwqDCoMKgwqDCoMKgwqAubXVsdMKgwqDC oMKgwqDCoMKgwqDCoMKgwqA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+ICvCoMKg wqDCoMKgwqDCoC5jb21tb27CoMKgwqDCoMKgwqDCoMKgwqA9IHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLnJlZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gMHgxMDAwLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaHcuaW5pdMKgwqDCoMKgwqDCoMKgwqA9IENM S19IV19JTklUKCJwbGwtY3B1eCIsICJvc2MyNE0iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZjY3VfbXVsdF9vcHMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQ0xLX1NFVF9SQVRFX1VOR0FURSksCj4gK8KgwqDCoMKgwqDCoMKgfSwKPiArfTsKPiArCj4g KyNkZWZpbmUgU1VONTBJX1IzMjlfUExMX1BFUklQSF9SRUfCoMKgwqDCoMKgMHgxMDEwCj4gK3N0 YXRpYyBzdHJ1Y3QgY2N1X25tIHBsbF9wZXJpcGhfYmFzZV9jbGsgPSB7Cj4gK8KgwqDCoMKgwqDC oMKgLmVuYWJsZcKgwqDCoMKgwqDCoMKgwqDCoD0gQklUKDMxKSwKPiArwqDCoMKgwqDCoMKgwqAu bG9ja8KgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IEJJVCgyOCksCj4gK8KgwqDCoMKgwqDCoMKgLm7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBfU1VOWElfQ0NVX01VTFRfTUlOKDgsIDgsIDEy KSwKPiArwqDCoMKgwqDCoMKgwqAubcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IF9TVU5Y SV9DQ1VfRElWKDEsIDEpLCAvKiBpbnB1dCBkaXZpZGVyICovCj4gK8KgwqDCoMKgwqDCoMKgLmNv bW1vbsKgwqDCoMKgwqDCoMKgwqDCoD0gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAucmVnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAweDEwMTAsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC5ody5pbml0wqDCoMKgwqDCoMKgwqDCoD0gQ0xLX0hXX0lOSVQoInBs bC1wZXJpcGgtYmFzZSIsCj4gIm9zYzI0TSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJmNjdV9ubV9vcHMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0xL X1NFVF9SQVRFX1VOR0FURSksCj4gK8KgwqDCoMKgwqDCoMKgfSwKPiArfTsKPiArCj4gK3N0YXRp YyBTVU5YSV9DQ1VfTShwbGxfcGVyaXBoXzJ4X2NsaywgInBsbC1wZXJpcGgtMngiLCAicGxsLXBl cmlwaC0KPiBiYXNlIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEw MTAsIDE2LCAzLCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9NKHBsbF9wZXJpcGhfODAwbV9jbGss ICJwbGwtcGVyaXBoLTgwMG0iLCAicGxsLQo+IHBlcmlwaC1iYXNlIiwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEwMTAsIDIwLCAzLCAwKTsKPiArc3RhdGljIENMS19G SVhFRF9GQUNUT1JfSFcocGxsX3BlcmlwaF9jbGssICJwbGwtcGVyaXBoIiwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBsbF9wZXJpcGhfMnhf Y2xrLmNvbW1vbi5odywgMiwgMSwgMCk7Cj4gKwo+ICsjZGVmaW5lIFNVTjUwSV9SMzI5X1BMTF9B VURJTzBfUkVHwqDCoMKgwqDCoDB4MTAyMAo+ICtzdGF0aWMgc3RydWN0IGNjdV9zZG1fc2V0dGlu ZyBwbGxfYXVkaW8wX3NkbV90YWJsZVtdID0gewo+ICvCoMKgwqDCoMKgwqDCoHsgLnJhdGUgPSAx NTQ4Mjg4MDAwLCAucGF0dGVybiA9IDB4YzAwNzA2MjQsIC5tID0gMSwgLm4gPSA2NAo+IH0sCj4g K307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNjdV9ubSBwbGxfYXVkaW8wX2NsayA9IHsKPiArwqDC oMKgwqDCoMKgwqAuZW5hYmxlwqDCoMKgwqDCoMKgwqDCoMKgPSBCSVQoMzEpLAo+ICvCoMKgwqDC oMKgwqDCoC5sb2NrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gQklUKDI4KSwKPiArwqDCoMKgwqDC oMKgwqAubsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IF9TVU5YSV9DQ1VfTVVMVF9NSU4o OCwgOCwgMTIpLAo+ICvCoMKgwqDCoMKgwqDCoC5twqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oD0gX1NVTlhJX0NDVV9ESVYoMSwgMSksCj4gK8KgwqDCoMKgwqDCoMKgLnNkbcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gX1NVTlhJX0NDVV9TRE0ocGxsX2F1ZGlvMF9zZG1fdGFibGUsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMjQpLCAweDExMjAsIEJJVCgzMSkpLAo+ICvCoMKgwqDC oMKgwqDCoC5jb21tb27CoMKgwqDCoMKgwqDCoMKgwqA9IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLmZlYXR1cmVzwqDCoMKgwqDCoMKgwqA9IENDVV9GRUFUVVJFX1NJR01BX0RF TFRBX01PRCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJlZ8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gMHgxMDIwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAu aHcuaW5pdMKgwqDCoMKgwqDCoMKgwqA9IENMS19IV19JTklUKCJwbGwtYXVkaW8wIiwgIm9zYzI0 TSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmNjdV9ubV9vcHMsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0xLX1NFVF9SQVRFX1VOR0FURSksCj4gK8Kg wqDCoMKgwqDCoMKgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfTShwbGxfYXVkaW8w X2RpdjJfY2xrLCAicGxsLWF1ZGlvMC1kaXYyIiwgInBsbC0KPiBhdWRpbzAiLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTAyMCwgMTYsIDMsIDApOwo+ICtzdGF0aWMg U1VOWElfQ0NVX00ocGxsX2F1ZGlvMF9kaXY1X2NsaywgInBsbC1hdWRpbzAtZGl2NSIsICJwbGwt Cj4gYXVkaW8wIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEwMjAs IDIwLCAzLCAwKTsKPiArCj4gKy8qCj4gKyAqIFBMTC1BVURJTzEgaGFzIDMgZGl2aWRlcnMgZGVm aW5lZCBpbiB0aGUgZGF0YXNoZWV0LCBob3dldmVyIHRoZQo+ICsgKiBCU1AgZHJpdmVyIGFsd2F5 cyBoYXMgTTAgPSAxIGFuZCBNMSA9IDIgKHRoaXMgaXMgYWxzbyB0aGUKPiArICogcmVzZXQgdmFs dWUgaW4gdGhlIHJlZ2lzdGVyKS4KPiArICoKPiArICogSGVyZSBqdXN0IG1vZHVsZSBpdCBhcyBO TSBjbG9jaywgYW5kIGZvcmNlIE0wID0gMSBhbmQgTTEgPSAyLgo+ICsgKi8KPiArI2RlZmluZSBT VU41MElfUjMyOV9QTExfQVVESU8xX1JFR8KgwqDCoMKgwqAweDEwMzAKPiArc3RhdGljIHN0cnVj dCBjY3Vfc2RtX3NldHRpbmcgcGxsX2F1ZGlvMV80eF9zZG1fdGFibGVbXSA9IHsKPiArwqDCoMKg wqDCoMKgwqB7IC5yYXRlID0gMjI1NzkyMDAsIC5wYXR0ZXJuID0gMHhjMDAxMjg4ZCwgLm0gPSAx MiwgLm4gPSAyMgo+IH0sCj4gK8KgwqDCoMKgwqDCoMKgeyAucmF0ZSA9IDI0NTc2MDAwLCAucGF0 dGVybiA9IDB4YzAwMTI2ZTksIC5tID0gMTIsIC5uID0gMjQKPiB9LAo+ICvCoMKgwqDCoMKgwqDC oHsgLnJhdGUgPSA5MDMxNjgwMCwgLnBhdHRlcm4gPSAweGMwMDEyODhkLCAubSA9IDMsIC5uID0g MjIgfSwKPiArwqDCoMKgwqDCoMKgwqB7IC5yYXRlID0gOTgzMDQwMDAsIC5wYXR0ZXJuID0gMHhj MDAxMjZlOSwgLm0gPSAzLCAubiA9IDI0IH0sCj4gK307CgpTb3JyeSwgdGhlIFNETSB0YWJsZSBo ZXJlIGlzIHdyb25nIC0tIGFsbCByYXRlIGhlcmUgc2hvdWxkIGJlICoyCihiZWNhdXNlIEkgd3Jv bmdseSBhc3N1bWVkIGhvdyBwb3N0ZGl2IHdvcmtzIHdpdGggc2RtKS4KCj4gK3N0YXRpYyBzdHJ1 Y3QgY2N1X25tIHBsbF9hdWRpbzFfNHhfY2xrID0gewo+ICvCoMKgwqDCoMKgwqDCoC5lbmFibGXC oMKgwqDCoMKgwqDCoMKgwqA9IEJJVCgzMSksCj4gK8KgwqDCoMKgwqDCoMKgLmxvY2vCoMKgwqDC oMKgwqDCoMKgwqDCoMKgPSBCSVQoMjgpLAo+ICvCoMKgwqDCoMKgwqDCoC5uwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoD0gX1NVTlhJX0NDVV9NVUxUX01JTig4LCA4LCAxMiksCj4gK8KgwqDC oMKgwqDCoMKgLm3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBfU1VOWElfQ0NVX0RJVigx NiwgNiksCj4gK8KgwqDCoMKgwqDCoMKgLmZpeGVkX3Bvc3RfZGl2wqA9IDIsCj4gK8KgwqDCoMKg wqDCoMKgLnNkbcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gX1NVTlhJX0NDVV9TRE0ocGxsX2F1 ZGlvMV80eF9zZG1fdGFibGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMjQpLCAweDEx MzAsIEJJVCgzMSkpLAo+ICvCoMKgwqDCoMKgwqDCoC5jb21tb27CoMKgwqDCoMKgwqDCoMKgwqA9 IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmZlYXR1cmVzwqDCoMKgwqDCoMKg wqA9IENDVV9GRUFUVVJFX0ZJWEVEX1BPU1RESVYgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENDVV9GRUFUVVJFX1NJ R01BX0RFTFRBX01PRCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJlZ8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoD0gMHgxMDMwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAuaHcuaW5pdMKgwqDCoMKgwqDCoMKgwqA9IENMS19IV19JTklUKCJwbGwtYXVkaW8xLTR4 IiwKPiAib3NjMjRNIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmY2N1X25t X29wcywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDTEtfU0VUX1JBVEVfVU5H QVRFKSwKPiArwqDCoMKgwqDCoMKgwqB9LAo+ICt9Owo+ICsKPiArc3RhdGljIENMS19GSVhFRF9G QUNUT1JfSFcocGxsX2F1ZGlvMV8yeF9jbGssICJwbGwtYXVkaW8xLTJ4IiwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnBsbF9hdWRpbzFfNHhf Y2xrLmNvbW1vbi5odywgMiwgMSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gK3N0YXRpYyBDTEtfRklY RURfRkFDVE9SX0hXKHBsbF9hdWRpbzFfY2xrLCAicGxsLWF1ZGlvMSIsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZwbGxfYXVkaW8xXzR4X2Ns ay5jb21tb24uaHcsIDQsIDEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ICsKPiArc3RhdGljIGNvbnN0 IGNoYXIgKiBjb25zdCByX2J1c19wYXJlbnRzW10gPSB7ICJvc2MyNE0iLCAib3NjMzJrIiwKPiAi aW9zYyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgInBsbC1wZXJpcGgtMngi LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJwbGwtYXVkaW8wLWRpdjIiIH07 Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfV0lUSF9NVVgocl9haGJfY2xrLCAici1haGIiLCByX2J1 c19wYXJlbnRzLAo+IDB4MDAwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgNSzCoMKgwqDCoMKgwqAvKiBNICovCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA4LCAyLMKgwqDC oMKgwqDCoC8qIFAgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDI0LCAzLMKgwqDCoMKgwqAvKiBtdXggKi8KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDApOwo+ICsKPiArc3Rh dGljIFNVTlhJX0NDVV9NUF9XSVRIX01VWChyX2FwYjFfY2xrLCAici1hcGIxIiwgcl9idXNfcGFy ZW50cywKPiAweDAwYywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDAsIDUswqDCoMKgwqDCoMKgLyogTSAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOCwgMizCoMKgwqDCoMKg wqAvKiBQICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAyNCwgMyzCoMKgwqDCoMKgLyogbXV4ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwKTsKPiArCj4gK3N0YXRpYyBT VU5YSV9DQ1VfTVBfV0lUSF9NVVgocl9hcGIyX2NsaywgInItYXBiMiIsIHJfYnVzX3BhcmVudHMs Cj4gMHgwMTAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAwLCA1LMKgwqDCoMKgwqDCoC8qIE0gKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDgsIDIswqDCoMKgwqDCoMKgLyog UCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMjQsIDMswqDCoMKgwqDCoC8qIG11eCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElf Q0NVX0dBVEUocl9idXNfZ3BhZGNfY2xrLCAici1idXMtZ3BhZGMiLCAici1hcGIxIiwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBlYywgQklUKDApLCAwKTsK PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfYnVzX3Roc19jbGssICJyLWJ1cy10aHMiLCAici1h cGIxIiwgMHgwZmMsCj4gQklUKDApLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURShy X2J1c19kbWFfY2xrLCAici1idXMtZG1hIiwgInItYXBiMSIsIDB4MTBjLAo+IEJJVCgwKSwgMCk7 Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHJfcHdtX3BhcmVudHNbXSA9IHsgIm9z YzI0TSIsICJvc2MzMmsiLAo+ICJpb3NjIiB9Owo+ICtzdGF0aWMgU1VOWElfQ0NVX01VWF9XSVRI X0dBVEUocl9wd21fY2xrLCAici1wd20iLCByX3B3bV9wYXJlbnRzLAo+IDB4MTMwLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI0 LCAzLMKgwqDCoC8qIG11eCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgzMSkswqAvKiBnYXRlICovCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCk7Cj4g Kwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEUocl9idXNfcHdtX2NsaywgInItYnVzLXB3bSIsICJy LWFwYjEiLCAweDEzYywKPiBCSVQoMCksIDApOwo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBj b25zdCByX2F1ZGlvX3BhcmVudHNbXSA9IHsgInBsbC1hdWRpbzAtZGl2NSIsCj4gInBsbC1hdWRp bzAtZGl2MiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicGxsLWF1 ZGlvMS0xeCIsCj4gInBsbC1hdWRpbzEtNHgiIH07Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfV0lU SF9NVVhfR0FURShyX2NvZGVjX2FkY19jbGssICJyLWNvZGVjLWFkYyIsCj4gcl9hdWRpb19wYXJl bnRzLCAweDE0MCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLCA1LMKgwqDCoMKgwqDCoMKgwqDCoC8qIE0gKi8KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA4LCAyLMKgwqDCoMKgwqDCoMKgwqDCoC8qIFAgKi8KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNCwgMyzC oMKgwqDCoMKgwqDCoMKgLyogbXV4ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDMxKSzCoMKgwqDCoMKgwqAv KiBnYXRlICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfV0lUSF9NVVhf R0FURShyX2NvZGVjX2RhY19jbGssICJyLWNvZGVjLWRhYyIsCj4gcl9hdWRpb19wYXJlbnRzLCAw eDE0NCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAwLCA1LMKgwqDCoMKgwqDCoMKgwqDCoC8qIE0gKi8KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA4LCAyLMKgwqDCoMKgwqDCoMKgwqDCoC8qIFAgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNCwgMyzCoMKgwqDC oMKgwqDCoMKgLyogbXV4ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDMxKSzCoMKgwqDCoMKgwqAvKiBnYXRl ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEUocl9idXNfY29k ZWNfY2xrLCAici1idXMtY29kZWMiLCAici1hcGIxIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDE0YywgQklUKDApLCAwKTsKPiArCj4gK3N0YXRpYyBTVU5Y SV9DQ1VfTVBfV0lUSF9NVVhfR0FURShyX2RtaWNfY2xrLCAici1kbWljIiwKPiByX2F1ZGlvX3Bh cmVudHMsIDB4MTUwLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIDUswqDCoMKgwqDCoMKgwqDCoMKgLyogTSAqLwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDgsIDIswqDCoMKgwqDCoMKgwqDCoMKgLyogUCAqLwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI0LCAz LMKgwqDCoMKgwqDCoMKgwqAvKiBtdXggKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMzEpLMKgwqDCoMKgwqDC oC8qIGdhdGUgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwKTsKPiArCj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURShy X2J1c19kbWljX2NsaywgInItYnVzLWRtaWMiLCAici1hcGIxIiwgMHgxNWMsCj4gQklUKDApLCAw KTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfYnVzX2xyYWRjX2NsaywgInItYnVzLWxyYWRj IiwgInItYXBiMSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxNmMsIEJJVCgwKSwgMCk7Cj4gKwo+ICtzdGF0aWMgU1VOWElfQ0NVX01QX1dJVEhfTVVYX0dB VEUocl9pMnNfY2xrLCAici1pMnMiLAo+IHJfYXVkaW9fcGFyZW50cywgMHgxNzAsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMCwgNSzCoMKgwqDCoMKgwqDCoMKgwqAvKiBNICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOCwgMizCoMKgwqDC oMKgwqDCoMKgwqAvKiBQICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjQsIDMswqDCoMKgwqDCoMKgwqDCoC8qIG11 eCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJVCgzMSkswqDCoMKgwqDCoMKgLyogZ2F0ZSAqLwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX01QX1dJVEhfTVVYX0dBVEUocl9pMnNfYXNyY19jbGss ICJyLWkycy1hc3JjIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByX2F1ZGlvX3BhcmVudHMsIDB4MTc0LAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDAsIDUswqDCoMKgwqDCoMKgwqDCoMKgLyogTSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDgsIDIswqDCoMKg wqDCoMKgwqDCoMKgLyogUCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDI0LCAzLMKgwqDCoMKgwqDCoMKgwqAvKiBt dXggKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCSVQoMzEpLMKgwqDCoMKgwqDCoC8qIGdhdGUgKi8KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfYnVzX2kyc19jbGssICJyLWJ1cy1pMnMi LCAici1hcGIxIiwgMHgxN2MsCj4gQklUKDApLCAwKTsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRF KHJfYnVzX3VhcnRfY2xrLCAici1idXMtdWFydCIsICJyLWFwYjIiLCAweDE4YywKPiBCSVQoMCks IDApOwo+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEUocl9idXNfaTJjX2NsaywgInItYnVzLWkyYyIs ICJyLWFwYjIiLCAweDE5YywKPiBCSVQoMCksIDApOwo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCByX2lyX3BhcmVudHNbXSA9IHsgIm9zYzMyayIsICJvc2MyNE0iIH07Cj4gK3N0YXRp YyBTVU5YSV9DQ1VfTVBfV0lUSF9NVVhfR0FURShyX2lyX2NsaywgInItaXIiLCByX2lyX3BhcmVu dHMsCj4gMHgxYzAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMCwgNSzCoMKgwqDCoMKgwqDCoMKgwqAvKiBNICovCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgOCwgMizCoMKgwqDCoMKgwqDCoMKgwqAvKiBQICovCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMjQsIDMs wqDCoMKgwqDCoMKgwqDCoC8qIG11eCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgzMSkswqDCoMKgwqDCoMKg LyogZ2F0ZSAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDApOwo+ICsKPiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJf YnVzX2lyX2NsaywgInItYnVzLWlyIiwgInItYXBiMSIsIDB4MWNjLAo+IEJJVCgwKSwgMCk7Cj4g K3N0YXRpYyBTVU5YSV9DQ1VfR0FURShyX2J1c19tc2dib3hfY2xrLCAici1idXMtbXNnYm94Iiwg InItYXBiMSIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgx ZGMsIEJJVCgwKSwgMCk7Cj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURShyX2J1c19zcGlubG9ja19j bGssICJyLWJ1cy1zcGlubG9jayIsICJyLQo+IGFwYjEiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MWVjLCBCSVQoMCksIDApOwo+ICtzdGF0aWMgU1VOWElf Q0NVX0dBVEUocl9idXNfcnRjX2NsaywgInItYnVzLXJ0YyIsICJyLWFoYiIsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgyMGMsIEJJVCgwKSwgQ0xLX0lTX0NS SVRJQ0FMKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X2NvbW1vbiAqc3VuNTBpX3IzMjlfcl9j Y3VfY2xrc1tdID0gewo+ICvCoMKgwqDCoMKgwqDCoCZwbGxfY3B1eF9jbGsuY29tbW9uLAo+ICvC oMKgwqDCoMKgwqDCoCZwbGxfcGVyaXBoX2Jhc2VfY2xrLmNvbW1vbiwKPiArwqDCoMKgwqDCoMKg wqAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZwbGxfcGVyaXBo XzgwMG1fY2xrLmNvbW1vbiwKPiArwqDCoMKgwqDCoMKgwqAmcGxsX2F1ZGlvMF9jbGsuY29tbW9u LAo+ICvCoMKgwqDCoMKgwqDCoCZwbGxfYXVkaW8wX2RpdjJfY2xrLmNvbW1vbiwKPiArwqDCoMKg wqDCoMKgwqAmcGxsX2F1ZGlvMF9kaXY1X2Nsay5jb21tb24sCj4gK8KgwqDCoMKgwqDCoMKgJnBs bF9hdWRpbzFfNHhfY2xrLmNvbW1vbiwKPiArwqDCoMKgwqDCoMKgwqAmcl9haGJfY2xrLmNvbW1v biwKPiArwqDCoMKgwqDCoMKgwqAmcl9hcGIxX2Nsay5jb21tb24sCj4gK8KgwqDCoMKgwqDCoMKg JnJfYXBiMl9jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c19ncGFkY19jbGsuY29t bW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c190aHNfY2xrLmNvbW1vbiwKPiArwqDCoMKgwqDC oMKgwqAmcl9idXNfZG1hX2Nsay5jb21tb24sCj4gK8KgwqDCoMKgwqDCoMKgJnJfcHdtX2Nsay5j b21tb24sCj4gK8KgwqDCoMKgwqDCoMKgJnJfYnVzX3B3bV9jbGsuY29tbW9uLAo+ICvCoMKgwqDC oMKgwqDCoCZyX2NvZGVjX2FkY19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2NvZGVj X2RhY19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c19jb2RlY19jbGsuY29tbW9u LAo+ICvCoMKgwqDCoMKgwqDCoCZyX2RtaWNfY2xrLmNvbW1vbiwKPiArwqDCoMKgwqDCoMKgwqAm cl9idXNfZG1pY19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c19scmFkY19jbGsu Y29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2kyc19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKg wqDCoCZyX2kyc19hc3JjX2Nsay5jb21tb24sCj4gK8KgwqDCoMKgwqDCoMKgJnJfYnVzX2kyc19j bGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c191YXJ0X2Nsay5jb21tb24sCj4gK8Kg wqDCoMKgwqDCoMKgJnJfYnVzX2kyY19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2ly X2Nsay5jb21tb24sCj4gK8KgwqDCoMKgwqDCoMKgJnJfYnVzX2lyX2Nsay5jb21tb24sCj4gK8Kg wqDCoMKgwqDCoMKgJnJfYnVzX21zZ2JveF9jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZy X2J1c19zcGlubG9ja19jbGsuY29tbW9uLAo+ICvCoMKgwqDCoMKgwqDCoCZyX2J1c19ydGNfY2xr LmNvbW1vbiwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0YSBz dW41MGlfcjMyOV9yX2h3X2Nsa3MgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgLmh3c8KgwqDCoMKgPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFtDTEtfUExMX0NQVVhdwqDCoMKgwqDC oMKgwqDCoMKgwqA9ICZwbGxfY3B1eF9jbGsuY29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBbQ0xLX1BMTF9QRVJJUEhfQkFTRV3CoMKgwqA9Cj4gJnBsbF9wZXJpcGhf YmFzZV9jbGsuY29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xL X1BMTF9QRVJJUEhfMlhdwqDCoMKgwqDCoD0KPiAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9uLmh3 LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1BMTF9QRVJJUEhfODAwTV3C oMKgwqA9Cj4gJnBsbF9wZXJpcGhfODAwbV9jbGsuY29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1BMTF9QRVJJUEhdwqDCoMKgwqDCoMKgwqDCoD0gJnBsbF9w ZXJpcGhfY2xrLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1BMTF9B VURJTzBdwqDCoMKgwqDCoMKgwqDCoD0gJnBsbF9hdWRpbzBfY2xrLmNvbW1vbi5odywKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19QTExfQVVESU8wX0RJVjJdwqDCoMKgPQo+ ICZwbGxfYXVkaW8wX2RpdjJfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgW0NMS19QTExfQVVESU8wX0RJVjVdwqDCoMKgPQo+ICZwbGxfYXVkaW8wX2RpdjVf Y2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19QTExf QVVESU8xXzRYXcKgwqDCoMKgwqA9Cj4gJnBsbF9hdWRpbzFfNHhfY2xrLmNvbW1vbi5odywKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19QTExfQVVESU8xXzJYXcKgwqDCoMKg wqA9ICZwbGxfYXVkaW8xXzJ4X2Nsay5odywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgW0NMS19QTExfQVVESU8xXcKgwqDCoMKgwqDCoMKgwqA9ICZwbGxfYXVkaW8xX2Nsay5odywK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0FIQl3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gJnJfYWhiX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoFtDTEtfUl9BUEIxXcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gJnJfYXBi MV9jbGsuY29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1Jf QVBCMl3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9ICZyX2FwYjJfY2xrLmNvbW1vbi5odywKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0JVU19HUEFEQ13CoMKgwqDCoMKg wqDCoD0gJnJfYnVzX2dwYWRjX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoFtDTEtfUl9CVVNfVEhTXcKgwqDCoMKgwqDCoMKgwqDCoD0gJnJfYnVzX3Roc19j bGsuY29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfQlVT X0RNQV3CoMKgwqDCoMKgwqDCoMKgwqA9ICZyX2J1c19kbWFfY2xrLmNvbW1vbi5odywKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX1BXTV3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoD0gJnJfcHdtX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoFtDTEtfUl9CVVNfUFdNXcKgwqDCoMKgwqDCoMKgwqDCoD0gJnJfYnVzX3B3bV9jbGsu Y29tbW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfQ09ERUNf QURDXcKgwqDCoMKgwqDCoMKgPSAmcl9jb2RlY19hZGNfY2xrLmNvbW1vbi5odywKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0NPREVDX0RBQ13CoMKgwqDCoMKgwqDCoD0g JnJfY29kZWNfZGFjX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFtDTEtfUl9CVVNfQ09ERUNdwqDCoMKgwqDCoMKgwqA9ICZyX2J1c19jb2RlY19jbGsuY29t bW9uLmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfRE1JQ13CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqA9ICZyX2RtaWNfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0JVU19ETUlDXcKgwqDCoMKgwqDCoMKgwqA9ICZy X2J1c19kbWljX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oFtDTEtfUl9CVVNfTFJBRENdwqDCoMKgwqDCoMKgwqA9ICZyX2J1c19scmFkY19jbGsuY29tbW9u Lmh3LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfSTJTXcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgPSAmcl9pMnNfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0kyU19BU1JDXcKgwqDCoMKgwqDCoMKgwqA9ICZyX2ky c19hc3JjX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFtD TEtfUl9CVVNfSTJTXcKgwqDCoMKgwqDCoMKgwqDCoD0gJnJfYnVzX2kyc19jbGsuY29tbW9uLmh3 LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfQlVTX1VBUlRdwqDCoMKg wqDCoMKgwqDCoD0gJnJfYnVzX3VhcnRfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgW0NMS19SX0JVU19JMkNdwqDCoMKgwqDCoMKgwqDCoMKgPSAmcl9idXNf aTJjX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFtDTEtf Ul9JUl3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSAmcl9pcl9jbGsuY29tbW9uLmh3LAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBbQ0xLX1JfQlVTX0lSXcKgwqDCoMKgwqDC oMKgwqDCoMKgPSAmcl9idXNfaXJfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgW0NMS19SX0JVU19NU0dCT1hdwqDCoMKgwqDCoMKgPQo+ICZyX2J1c19tc2di b3hfY2xrLmNvbW1vbi5odywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19S X0JVU19TUElOTE9DS13CoMKgwqDCoD0KPiAmcl9idXNfc3BpbmxvY2tfY2xrLmNvbW1vbi5odywK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgW0NMS19SX0JVU19SVENdwqDCoMKgwqDC oMKgwqDCoMKgPSAmcl9idXNfcnRjX2Nsay5jb21tb24uaHcsCj4gK8KgwqDCoMKgwqDCoMKgfSwK PiArwqDCoMKgwqDCoMKgwqAubnVtID0gQ0xLX05VTUJFUiwKPiArfTsKPiArCj4gK3N0YXRpYyBz dHJ1Y3QgY2N1X3Jlc2V0X21hcCBzdW41MGlfcjMyOV9yX2NjdV9yZXNldHNbXSA9IHsKPiArwqDC oMKgwqDCoMKgwqBbUlNUX1JfQlVTX0dQQURDXcKgwqDCoMKgwqDCoMKgPSB7IDB4MGVjLCBCSVQo MTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JTVF9SX0JVU19USFNdwqDCoMKgwqDCoMKgwqDCoMKg PSB7IDB4MGZjLCBCSVQoMTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JTVF9SX0JVU19ETUFdwqDC oMKgwqDCoMKgwqDCoMKgPSB7IDB4MTBjLCBCSVQoMTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JT VF9SX0JVU19QV01dwqDCoMKgwqDCoMKgwqDCoMKgPSB7IDB4MTNjLCBCSVQoMTYpIH0sCj4gK8Kg wqDCoMKgwqDCoMKgW1JTVF9SX0JVU19DT0RFQ13CoMKgwqDCoMKgwqDCoD0geyAweDE0YywgQklU KDE2KSB9LAo+ICvCoMKgwqDCoMKgwqDCoFtSU1RfUl9CVVNfRE1JQ13CoMKgwqDCoMKgwqDCoMKg PSB7IDB4MTVjLCBCSVQoMTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JTVF9SX0JVU19MUkFEQ13C oMKgwqDCoMKgwqDCoD0geyAweDE2YywgQklUKDE2KSB9LAo+ICvCoMKgwqDCoMKgwqDCoFtSU1Rf Ul9CVVNfSTJTXcKgwqDCoMKgwqDCoMKgwqDCoD0geyAweDE3YywgQklUKDE2KSB9LAo+ICvCoMKg wqDCoMKgwqDCoFtSU1RfUl9CVVNfVUFSVF3CoMKgwqDCoMKgwqDCoMKgPSB7IDB4MThjLCBCSVQo MTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JTVF9SX0JVU19JMkNdwqDCoMKgwqDCoMKgwqDCoMKg PSB7IDB4MTljLCBCSVQoMTYpIH0sCj4gK8KgwqDCoMKgwqDCoMKgW1JTVF9SX0JVU19JUl3CoMKg wqDCoMKgwqDCoMKgwqDCoD0geyAweDFjYywgQklUKDE2KSB9LAo+ICvCoMKgwqDCoMKgwqDCoFtS U1RfUl9CVVNfTVNHQk9YXcKgwqDCoMKgwqDCoD0geyAweDFkYywgQklUKDE2KSB9LAo+ICvCoMKg wqDCoMKgwqDCoFtSU1RfUl9CVVNfU1BJTkxPQ0tdwqDCoMKgwqA9IHsgMHgxZWMsIEJJVCgxNikg fSwKPiArwqDCoMKgwqDCoMKgwqBbUlNUX1JfQlVTX1JUQ13CoMKgwqDCoMKgwqDCoMKgwqA9IHsg MHgyMGMsIEJJVCgxNikgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VueGlf Y2N1X2Rlc2Mgc3VuNTBpX3IzMjlfcl9jY3VfZGVzYyA9IHsKPiArwqDCoMKgwqDCoMKgwqAuY2N1 X2Nsa3PCoMKgwqDCoMKgwqDCoD0gc3VuNTBpX3IzMjlfcl9jY3VfY2xrcywKPiArwqDCoMKgwqDC oMKgwqAubnVtX2NjdV9jbGtzwqDCoMKgPSBBUlJBWV9TSVpFKHN1bjUwaV9yMzI5X3JfY2N1X2Ns a3MpLAo+ICsKPiArwqDCoMKgwqDCoMKgwqAuaHdfY2xrc8KgwqDCoMKgwqDCoMKgwqA9ICZzdW41 MGlfcjMyOV9yX2h3X2Nsa3MsCj4gKwo+ICvCoMKgwqDCoMKgwqDCoC5yZXNldHPCoMKgwqDCoMKg wqDCoMKgwqA9IHN1bjUwaV9yMzI5X3JfY2N1X3Jlc2V0cywKPiArwqDCoMKgwqDCoMKgwqAubnVt X3Jlc2V0c8KgwqDCoMKgwqA9IEFSUkFZX1NJWkUoc3VuNTBpX3IzMjlfcl9jY3VfcmVzZXRzKSwK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1MzIgcGxsX3JlZ3NbXSA9IHsKPiArwqDCoMKgwqDC oMKgwqBTVU41MElfUjMyOV9QTExfQ1BVWF9SRUcsCj4gK8KgwqDCoMKgwqDCoMKgU1VONTBJX1Iz MjlfUExMX1BFUklQSF9SRUcsCj4gK8KgwqDCoMKgwqDCoMKgU1VONTBJX1IzMjlfUExMX0FVRElP MF9SRUcsCj4gK8KgwqDCoMKgwqDCoMKgU1VONTBJX1IzMjlfUExMX0FVRElPMV9SRUcsCj4gK307 Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2luaXQgc3VuNTBpX3IzMjlfcl9jY3Vfc2V0dXAoc3RydWN0 IGRldmljZV9ub2RlICpub2RlKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgdm9pZCBfX2lvbWVtICpy ZWc7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiArwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiAr Cj4gK8KgwqDCoMKgwqDCoMKgcmVnID0gb2ZfaW9fcmVxdWVzdF9hbmRfbWFwKG5vZGUsIDAsCj4g b2Zfbm9kZV9mdWxsX25hbWUobm9kZSkpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIocmVn KSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcl9lcnIoIiVwT0Y6IENvdWxk IG5vdCBtYXAgY2xvY2sgcmVnaXN0ZXJzXG4iLAo+IG5vZGUpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDC oMKgwqAvKiBFbmFibGUgdGhlIGxvY2sgYml0cyBhbmQgdGhlIG91dHB1dCBlbmFibGUgYml0cyBv biBhbGwKPiBQTExzICovCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUocGxsX3JlZ3MpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFs ID0gcmVhZGwocmVnICsgcGxsX3JlZ3NbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2YWwgfD0gQklUKDI5KSB8IEJJVCgyNyk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHdyaXRlbCh2YWwsIHJlZyArIHBsbF9yZWdzW2ldKTsKPiArwqDCoMKgwqDCoMKgwqB9 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgICogRm9yY2UgdGhlIEkv TyBkaXZpZGVycyBvZiBQTEwtQVVESU8xIHRvIHJlc2V0IGRlZmF1bHQKPiB2YWx1ZQo+ICvCoMKg wqDCoMKgwqDCoCAqCj4gK8KgwqDCoMKgwqDCoMKgICogU2VlIHRoZSBjb21tZW50IGJlZm9yZSBw bGwtYXVkaW8xIGRlZmluaXRpb24gZm9yIHRoZQo+IHJlYXNvbi4KPiArwqDCoMKgwqDCoMKgwqAg Ki8KPiArCj4gK8KgwqDCoMKgwqDCoMKgdmFsID0gcmVhZGwocmVnICsgU1VONTBJX1IzMjlfUExM X0FVRElPMV9SRUcpOwo+ICvCoMKgwqDCoMKgwqDCoHZhbCAmPSB+QklUKDEpOwo+ICvCoMKgwqDC oMKgwqDCoHZhbCB8PSBCSVQoMCk7Cj4gK8KgwqDCoMKgwqDCoMKgd3JpdGVsKHZhbCwgcmVnICsg U1VONTBJX1IzMjlfUExMX0FVRElPMV9SRUcpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpID0gc3Vu eGlfY2N1X3Byb2JlKG5vZGUsIHJlZywgJnN1bjUwaV9yMzI5X3JfY2N1X2Rlc2MpOwo+ICvCoMKg wqDCoMKgwqDCoGlmIChpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcl9lcnIo IiVwT0Y6IHByb2JpbmcgY2xvY2tzIGZhaWxzOiAlZFxuIiwgbm9kZSwgaSk7Cj4gK30KPiArCj4g K0NMS19PRl9ERUNMQVJFKHN1bjUwaV9yMzI5X3JfY2N1LCAiYWxsd2lubmVyLHN1bjUwaS1yMzI5 LXItY2N1IiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3VuNTBpX3IzMjlfcl9jY3Vf c2V0dXApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuNTBpLXIz Mjktci5oCj4gYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuNTBpLXIzMjktci5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjYyY2Y2NTMyMjExNgo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuNTBpLXIzMjkt ci5oCj4gQEAgLTAsMCArMSwzMyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjEgU2lwZWVkCj4gKyAqLwo+ICsK PiArI2lmbmRlZiBfQ0NVX1NVTjUwSV9SMzI5X1JfSAo+ICsjZGVmaW5lIF9DQ1VfU1VONTBJX1Iz MjlfUl9ICj4gKwo+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svc3VuNTBpLXIzMjktci1j Y3UuaD4KPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L3N1bjUwaS1yMzI5LXItY2N1Lmg+ Cj4gKwo+ICsjZGVmaW5lIENMS19QTExfQ1BVWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAwCj4gKyNk ZWZpbmUgQ0xLX1BMTF9QRVJJUEhfQkFTRcKgwqDCoMKgMQo+ICsjZGVmaW5lIENMS19QTExfUEVS SVBIXzJYwqDCoMKgwqDCoMKgMgo+ICsjZGVmaW5lIENMS19QTExfUEVSSVBIXzgwME3CoMKgwqDC oDMKPiArI2RlZmluZSBDTEtfUExMX1BFUklQSMKgwqDCoMKgwqDCoMKgwqDCoDQKPiArI2RlZmlu ZSBDTEtfUExMX0FVRElPMMKgwqDCoMKgwqDCoMKgwqDCoDUKPiArI2RlZmluZSBDTEtfUExMX0FV RElPMF9ESVYywqDCoMKgwqA2Cj4gKyNkZWZpbmUgQ0xLX1BMTF9BVURJTzBfRElWNcKgwqDCoMKg Nwo+ICsjZGVmaW5lIENMS19QTExfQVVESU8xXzRYwqDCoMKgwqDCoMKgOAo+ICsjZGVmaW5lIENM S19QTExfQVVESU8xXzJYwqDCoMKgwqDCoMKgOQo+ICsjZGVmaW5lIENMS19QTExfQVVESU8xwqDC oMKgwqDCoMKgwqDCoMKgMTAKPiArI2RlZmluZSBDTEtfUl9BSELCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgMTEKPiArCj4gKy8qIFJfQVBCMSBleHBvcnRlZCBmb3IgUElPICovCj4gKwo+ICsj ZGVmaW5lIENMS19SX0FQQjLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEzCj4gKwo+ICsvKiBB bGwgbW9kdWxlIC8gYnVzIGdhdGUgY2xvY2tzIGV4cG9ydGVkICovCj4gKwo+ICsjZGVmaW5lIENM S19OVU1CRVLCoMKgwqDCoMKgKENMS19SX0JVU19SVEMgKyAxKQo+ICsKPiArI2VuZGlmIC8qIF9D Q1VfU1VONTBJX1IzMjlfUl9IICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHQtYmluZGluZ3Mv Y2xvY2svc3VuNTBpLXIzMjktci1jY3UuaAo+IGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9z dW41MGktcjMyOS1yLWNjdS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw MDAwMDAuLmRmOWJjNThkZTVjNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2R0LWJp bmRpbmdzL2Nsb2NrL3N1bjUwaS1yMzI5LXItY2N1LmgKPiBAQCAtMCwwICsxLDMzIEBACj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoYykgMjAyMSBTaXBlZWQKPiArICovCj4gKwo+ICsjaWZuZGVmIF9EVF9CSU5ESU5HU19DTEtf U1VONTBJX1IzMjlfUl9DQ1VfSF8KPiArI2RlZmluZSBfRFRfQklORElOR1NfQ0xLX1NVTjUwSV9S MzI5X1JfQ0NVX0hfCj4gKwo+ICsjZGVmaW5lIENMS19SX0FQQjHCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDEyCj4gKwo+ICsjZGVmaW5lIENMS19SX0JVU19HUEFEQ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgMTQKPiArI2RlZmluZSBDTEtfUl9CVVNfVEhTwqDCoMKgwqDCoMKgwqDC oMKgwqAxNQo+ICsjZGVmaW5lIENMS19SX0JVU19ETUHCoMKgwqDCoMKgwqDCoMKgwqDCoDE2Cj4g KyNkZWZpbmUgQ0xLX1JfUFdNwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDE3Cj4gKyNkZWZp bmUgQ0xLX1JfQlVTX1BXTcKgwqDCoMKgwqDCoMKgwqDCoMKgMTgKPiArI2RlZmluZSBDTEtfUl9D T0RFQ19BREPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDE5Cj4gKyNkZWZpbmUgQ0xL X1JfQ09ERUNfREFDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAyMAo+ICsjZGVmaW5l IENMS19SX0JVU19DT0RFQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMjEKPiArI2Rl ZmluZSBDTEtfUl9ETUlDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAyMgo+ICsjZGVmaW5lIENM S19SX0JVU19ETUlDwqDCoMKgwqDCoMKgwqDCoMKgMjMKPiArI2RlZmluZSBDTEtfUl9CVVNfTFJB REPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDI0Cj4gKyNkZWZpbmUgQ0xLX1JfSTJT wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDI1Cj4gKyNkZWZpbmUgQ0xLX1JfSTJTX0FTUkPC oMKgwqDCoMKgwqDCoMKgwqAyNgo+ICsjZGVmaW5lIENMS19SX0JVU19JMlPCoMKgwqDCoMKgwqDC oMKgwqDCoDI3Cj4gKyNkZWZpbmUgQ0xLX1JfQlVTX1VBUlTCoMKgwqDCoMKgwqDCoMKgwqAyOAo+ ICsjZGVmaW5lIENMS19SX0JVU19JMkPCoMKgwqDCoMKgwqDCoMKgwqDCoDI5Cj4gKyNkZWZpbmUg Q0xLX1JfSVLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAzMAo+ICsjZGVmaW5lIENMS19S X0JVU19JUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAzMQo+ICsjZGVmaW5lIENMS19SX0JVU19NU0dC T1jCoMKgwqDCoMKgwqDCoDMyCj4gKyNkZWZpbmUgQ0xLX1JfQlVTX1NQSU5MT0NLwqDCoMKgwqDC oDMzCj4gKyNkZWZpbmUgQ0xLX1JfQlVTX1JUQ8KgwqDCoMKgwqDCoMKgwqDCoMKgMzQKPiArCj4g KyNlbmRpZiAvKiBfRFRfQklORElOR1NfQ0xLX1NVTjUwSV9SMzI5X1JfQ0NVX0hfICovCj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHQtYmluZGluZ3MvcmVzZXQvc3VuNTBpLXIzMjktci1jY3UuaAo+ IGIvaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zdW41MGktcjMyOS1yLWNjdS5oCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQwNjQ0ZjJmMjFjNgo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L3N1bjUwaS1yMzI5LXIt Y2N1LmgKPiBAQCAtMCwwICsxLDI0IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiAo R1BMLTIuMCsgb3IgTUlUKSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjEgU2lwZWVk Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfRFRfQklORElOR1NfUlNUX1NVTjUwSV9SMzI5X1JfQ0NV X0hfCj4gKyNkZWZpbmUgX0RUX0JJTkRJTkdTX1JTVF9TVU41MElfUjMyOV9SX0NDVV9IXwo+ICsK PiArI2RlZmluZSBSU1RfUl9CVVNfR1BBREPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oDAKPiArI2RlZmluZSBSU1RfUl9CVVNfVEhTwqDCoMKgwqDCoMKgwqDCoMKgwqAxCj4gKyNkZWZp bmUgUlNUX1JfQlVTX0RNQcKgwqDCoMKgwqDCoMKgwqDCoMKgMgo+ICsjZGVmaW5lIFJTVF9SX0JV U19QV03CoMKgwqDCoMKgwqDCoMKgwqDCoDMKPiArI2RlZmluZSBSU1RfUl9CVVNfQ09ERUPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDQKPiArI2RlZmluZSBSU1RfUl9CVVNfRE1JQ8Kg wqDCoMKgwqDCoMKgwqDCoDUKPiArI2RlZmluZSBSU1RfUl9CVVNfTFJBREPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoDYKPiArI2RlZmluZSBSU1RfUl9CVVNfSTJTwqDCoMKgwqDCoMKg wqDCoMKgwqA3Cj4gKyNkZWZpbmUgUlNUX1JfQlVTX1VBUlTCoMKgwqDCoMKgwqDCoMKgwqA4Cj4g KyNkZWZpbmUgUlNUX1JfQlVTX0kyQ8KgwqDCoMKgwqDCoMKgwqDCoMKgOQo+ICsjZGVmaW5lIFJT VF9SX0JVU19JUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMAo+ICsjZGVmaW5lIFJTVF9SX0JVU19N U0dCT1jCoMKgwqDCoMKgwqDCoDExCj4gKyNkZWZpbmUgUlNUX1JfQlVTX1NQSU5MT0NLwqDCoMKg wqDCoDEyCj4gKyNkZWZpbmUgUlNUX1JfQlVTX1JUQ8KgwqDCoMKgwqDCoMKgwqDCoMKgMTMKPiAr Cj4gKyNlbmRpZiAvKiBfRFRfQklORElOR1NfUlNUX1NVTjUwSV9SMzI5X1JfQ0NVX0hfICovCgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK