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 55F36E77188 for ; Tue, 14 Jan 2025 11:29:46 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=f64dj5K4qRDYVLDzKO8QFYZp8ltb2qfH+BlAehiZxmI=; b=aPsD4q7RTHmGzQ t1TFAwKUwaeSTQLBVsnxQ33haxvg1Y8pmymXxcL2hyEYRIr92P1HJo+HbQaGqoZF0YMU3eX7ld1fy wfhel19fJb7CY4V99ayK38xBfKBuTAUR2Xb/B5conUrUpd5aXgGyDY8PoHOvClY6YNNk+uoKyF42F pcgKPH1MSeqqw0qDBvksVJNYANAwyIOdWNvzDL2DacWqGAjpCvMA6Lr+PWC0BfDqMRnXDn8oY0192 jW7jK8Pxuwz8Cj1aNUKIJe5ryfmqQudUNiFnDtuSQXye/i+OsxmU2akEJM3vSyMBj3h0gd9OfoNBu tCmBNXJZo/csvQ+tMMPQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tXf78-00000008FgO-0Jc2; Tue, 14 Jan 2025 11:29:42 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tXf75-00000008FfX-0bgU for linux-amlogic@lists.infradead.org; Tue, 14 Jan 2025 11:29:41 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-38be3bfb045so215343f8f.0 for ; Tue, 14 Jan 2025 03:29:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1736854177; x=1737458977; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=20Yjc/n2Ib6F5lS80pWb9OKE5xBeEql4XyvGsNk67XY=; b=woZ5vT4Ej3Evio+hMmEVyuwrPIahMW+LToSNml/z8NsLuSwc1NY8rWXgAyN44psyco hv5adOSeZV04YJR7Q1eOnzMG6ToacScaxJPpHga8c0bbkDd6Y8XLT7q/luoXs8qpn+7F rt2+zW718aAzRoHzNcfQFakLPLftnmqZS/U77kijfUvKN8kA0EoPUbLwW/mW5X2Ki+yb SG4rPbvylvU59G9VQTMnMHrb15PsBz6FLqRX69lMEVeNnmjCuDQXozBXKnLV7VlXHhsN z9bzPjg02LJDeIDhFiZiv+4SchzGRtYfnRS5MjWZaZnCgPRC2mj26MAhJo+d/8iofQ9X lNVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736854177; x=1737458977; h=content-transfer-encoding:mime-version:message-id:date:user-agent :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=20Yjc/n2Ib6F5lS80pWb9OKE5xBeEql4XyvGsNk67XY=; b=S9QvxLyHgcVViplnji+tVZ8j0n/6b8ahz+5UAKwcjWLFF+AfrW0jihnUTedRyi0hsJ bqBv9CkUJ6N0Ph0IOIH+zYhvQ12WIPojtftrWSIexlNT+61evHoGlv+5ai0e1Uy4j8WA N0S4TvLztIfK9dpt5exDGBzMmIt2G0iGOfKfbRFG/zCrtlENoofeXvwdnUPo58YWR0Ez rt99CIgR/g4N4VKJ1QhWcs6/UNW9VPteQKsqiaYG2zOAeIiA/QeYURAa8rxuDcSpakAg Iuv2/d9BjRb2msQEzImPaRCLqVpkf0QTRFr1Fo0BPpUlLubYOKQ4l/tWdiP67/2MBjge K4Bg== X-Forwarded-Encrypted: i=1; AJvYcCXcoguGniaal0La6ZwAYEZUNQIaSc6kwTOT4/p4n8f5OsoIDK/9oz/rXrtlpJHRtrS+zqSwXWpbEa33zK9+@lists.infradead.org X-Gm-Message-State: AOJu0Yy70vwc6B2T3w+w24lFrPFK70lfaGArz1ltQQ7TlUYPSCUMl9m9 pXITMBrgDHyVYV9b0fMG375mYbSZjfsckqaF0A6N9pGPaTI+9NatbPaFY4ydnBM= X-Gm-Gg: ASbGncu9USB3WpYvWVrfkkuM1beRjWaaWFJZ5PJ62t3H3ODWiwJMYyoEw0LZ6n6YPTn TUx1maptJbY/XISQ/rOcgJzHasX6vtDsHwvf3odIzoXSpWOJ7dI0bS5MQO3wJ+LVwx7KU/qDerK zGu07CdAyr2VbMAvrylcSt8dUfPEucqCXblH7uX52x59xLJdpxl74orxYZRPzF6Xa2BFcXPxG+M wvo3czG3UtHVqMjV8JaZSCbPFxsseFcMyXi8gRgWXNsmELsa2xms89v X-Google-Smtp-Source: AGHT+IF7o6knngh+kGBhBymoYYO++0k0fEzVPFzyBMQqlFUvEiupbcgJ6G8Oi1ILWV70iXAFlgrJbg== X-Received: by 2002:a05:6000:4011:b0:386:3d27:b4f0 with SMTP id ffacd0b85a97d-38a8b0d324bmr17534737f8f.14.1736854177449; Tue, 14 Jan 2025 03:29:37 -0800 (PST) Received: from localhost ([2a01:e0a:3c5:5fb1:317c:3d93:b7d4:96cd]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a8e4b8116sm14469928f8f.79.2025.01.14.03.29.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 03:29:36 -0800 (PST) From: Jerome Brunet To: Jiebing Chen Cc: jiebing chen via B4 Relay , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai , Neil Armstrong , Kevin Hilman , Martin Blumenstingl , linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org Subject: Re: [PATCH 2/3] ASoC: meson: s4:support for the on-chip audio In-Reply-To: (Jiebing Chen's message of "Tue, 14 Jan 2025 16:16:39 +0800") References: <20250113-audio_drvier-v1-0-8c14770f38a0@amlogic.com> <20250113-audio_drvier-v1-2-8c14770f38a0@amlogic.com> <1jwmey9451.fsf@starbuckisacylon.baylibre.com> User-Agent: mu4e 1.12.7; emacs 29.4 Date: Tue, 14 Jan 2025 12:29:36 +0100 Message-ID: <1jh6617hwf.fsf@starbuckisacylon.baylibre.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250114_032939_190380_65212DEC X-CRM114-Status: GOOD ( 32.39 ) X-BeenThere: linux-amlogic@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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gVHVlIDE0IEphbiAyMDI1IGF0IDE2OjE2LCBKaWViaW5nIENoZW4gPGppZWJpbmcuY2hlbkBh bWxvZ2ljLmNvbT4gd3JvdGU6Cgo+Pj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgczRfdGRt b3V0X3NlbF90ZXh0c1tdID0gewo+Pj4gKyAgICAgIlRETV9EMCIsICJURE1fRDEiLCAiVERNX0Qy IiwgIlRETV9EMyIsICJURE1fRDQiLCAiVERNX0Q1IiwgIlRETV9ENiIsICJURE1fRDciLAo+Pj4g KyAgICAgIlRETV9EOCIsICJURE1fRDkiLCAiVERNX0QxMCIsICJURE1fRDExIiwgIlRETV9EMTIi LCAiVERNX0QxMyIsICJURE1fRDE0IiwgIlRETV9EMTUiLAo+Pj4gKyAgICAgIlRETV9EMTYiLCAi VERNX0QxNyIsICJURE1fRDE4IiwgIlRETV9EMTkiLCAiVERNX0QyMCIsICJURE1fRDIxIiwgIlRE TV9EMjIiLCAiVERNX0QyMyIsCj4+PiArICAgICAiVERNX0QyNCIsICJURE1fRDI1IiwgIlRETV9E MjYiLCAiVERNX0QyNyIsICJURE1fRDI4IiwgIlRETV9EMjkiLCAiVERNX0QzMCIsICJURE1fRDMx Igo+Pj4gK307Cj4+IFRoaXMgdGhpbmcgZG9lcyBub3QgYmVsb25nIGluIEFTb0MuIFRoaXMgaXMg Y2xlYXJseSB5ZXQgYW5vdGhlciBsYXllciBvZgo+PiBwaW5jdHJsLiBQbGVhc2UgZGVhbCB3aXRo IGl0IHRoZXJlLgo+Cj4gVGhhbmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24sIGFkZCBhdWRpbyBwaW5j dHJsIGRyaXZlciB0byBjb250cm9sIHRoZSB3aGljaCB0ZG1fZHggcGluIGNhbiBtYXAgdGhlIHdo aWNoIHRkbSBsYW5lX3gKPiBmb3IgZXhhbXBsZQo+IAl0ZG1fZDZfcGluIHsKPiAJCW11eCB7Cj4g CQkJZ3JvdXBzID0gInRkbV9kNiI7Cj4gCQkJZnVuY3Rpb24gPSAidGRtb3V0Yl9sYW5lMCI7Cj4g CQl9Owo+IAl9Cj4gdGRtX2Q2IHBpbiBtYXAgdGhlIHRkbW91dGIgbGFuZSAwLCByaWdodCA/Cgpw b3NzaWJseQoKPgo+Pj4gKwo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gdGRtb3V0 X3NlbF9lbnVtID0KPj4+ICsgICAgIFNPQ19FTlVNX1NJTkdMRShTTkRfU09DX05PUE0sIDAsIEFS UkFZX1NJWkUoczRfdGRtb3V0X3NlbF90ZXh0cyksCj4+PiArICAgICAgICAgICAgICAgICAgICAg czRfdGRtb3V0X3NlbF90ZXh0cyk7Cj4+PiArCgpbLi4uXQoKPj4+IGRpZmYgLS1naXQgYS9zb3Vu ZC9zb2MvbWVzb24vczQtdG9jb2RlYy1jb250cm9sLmMgYi9zb3VuZC9zb2MvbWVzb24vczQtdG9j b2RlYy1jb250cm9sLmMKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNWQ4MjRmYWUwZWJhNTQ1ZDM4ZGMz NmUyNTY2ZTdjZWU1OTBlN2Y1Cj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9zb3VuZC9zb2Mv bWVzb24vczQtdG9jb2RlYy1jb250cm9sLmMKPj4gVGhlcmUgaXMgYWxyZWFkeSBhIHRvLWFjb2Rl YyBkcml2ZXIgYSBub3QgcmVhc29uIGhhcyBiZWVuIHByb3ZpZGVkIGFzIHRvIHdoeSBhCj4+IGNv bXBsZXRseSBuZXcgZHJpdmVyIGlzIHJlcXVpcmVkLgo+Pgo+PiBQbGVhc2UgaGF2ZSBsb29rIGF0 IHRoZSBleGlzdGluZyBkcml2ZXIgYW5kIGRvIHRyeSB0byB1c2UgaXQuCj4+IElmIHlvdSBuZWVk IHRvIGRvIHRoaW5ncyBzbyBkaWZmZXJlbnRseSwgY2xlYXIganVzdGlmaWNhdGlvbiBhcmUgbmVj ZXNzYXJ5Lgo+Cj4gZm9yIGcxMmEtdG9hY29kZWMuYywgd2UgZmluZCB0aGUgdG9jb2RlYyBjbG9j ayBzb3VyY2UgY2FuJ3QgZ2V0IHRoZcKgY2xvY2sKPiBpZCBmcm9tIHRoZSB0ZG0gQmUgZGV2aWNl LAoKVGhpcyBpcyBjbGVhcmx5IGRvY3VtZW50ZWQgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCB0 by1hY29kZWMgZHJpdmVyOgpodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy bmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9zb3VuZC9zb2MvbWVzb24vZzEyYS10b2Fj b2RlYy5jP2g9djYuMTMtcmM3I245MQoKV2hpbGUgaXQgaXMgYSBsaW1pdGF0aW9uLCBpdCBpcyBh IG1hbmFnZWFibGUgb25lIGNvbnNpZGVyaW5nIHRoZSBhbW91bnQKb2YgbWFzdGVyIGNsb2NrcyBh dmFpbGFibGUgYW5kIHRoZSBmYWN0IHRoZSBtYXN0ZXIgc2hvdWxkIGJlIG1hbnVhbGx5CmFzc2lu Z2VkIHRvIHRoZSBvdXRwdXQgcGFkLCB3aGljaCB5b3UgZGlkIG5vdCBkby4KClNlZSB0aGUgdTIw MDoKaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFs ZHMvbGludXguZ2l0L3RyZWUvYXJjaC9hcm02NC9ib290L2R0cy9hbWxvZ2ljL21lc29uLWcxMmEt dTIwMC5kdHM/aD12Ni4xMy1yYzcjbjU2OQoKWW91IGFyZSBtb3JlIHRoYW4gd2VsY29tZSB0byBo ZWxwIGZpeCB0aGlzIGxpbWl0YXRpb24gaW4gdGhlIGN1cnJlbnQKZHJpdmVyIGJ1dCBqdXN0IGFk ZGluZyBhIGZvcmsgaXMgbm90IE9LCgpJIHdvdWxkIHN1Z2dlc3QgdG8gc3RhcnQgd2l0aCB3aGF0 IGlzIGN1cnJlbnRseSBhdmFpbGFibGUgYW5kIG1vdmUgb24gdG8KZml4aW5nIHRoaXMgYXMgYSAy bmQgc3RlcCwgaWYgeW91IHdhbnQgdG8uCgo+Cj4gYW5kIHNldCBpdCBieSB0aGUga2NvbnRyb2wg ZnJvbSB1c2VyLMKgIEZvciBkaWZmZXJlbnQgc29jIGNoaXBzLCBUaGUKPiBrY29udHJvbCB2YWx1 ZSBtYXliZSBkaWZmZXJlbnQsIFRoZSBrY29udHJvbCBjb25maWd1cmF0aW9uIGRvZXNuJ3QgbG9v awo+IHZlcnkgZnJpZW5kbHkgZm9yIHVzZXIKPgo+IHNvIHdlIHVzZSBkYXBtIHJvdXRlIHBhdGgg dG8gbWFuYWdlIGl0LAo+IGZlKGZkZHIpLT5iZSh0ZG0pLT4odG9jb2RlYyktPihjb2RlYykswqAg YW5kIHVzZSB0aGUgYXV4LWRldnMgdG8gcmVnaXN0ZXIswqAKPiBhbmQgc291bmQgY2FyZCBvbmx5 IGluY2x1ZGUgdGhlCj4KPiBzb3VuZC1kYWkgPSA8JnRkbWlmX2E+Cj4KPiBjb2RlYy0wIHsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc291bmQtZGFpID0gPCZhY29kZWM+Owo+IMKg fTsKPgo+IGFuZCBub3QgaW5jbHVkZQo+Cj4gY29kZWMtMSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNvdW5kLWRhaSA9IDwmdG9hY29kZWM+Owo+IMKgfTsKPgo+IHdoZW4gdGRt IHdvcmssIG9ubHkgY29ubmVjdCB0aGUgdG9jb2RlYyBwYXRoCj4KPiDCoCJURE1fQSBQbGF5YmFj ayIgLT4iVE9BQ09ERUMgVERNQSItPiJUT0FDT0RFQyBJTlBVVCBTUkMiCj4KPiBpdGVyYXRlIGl0 IGZpbmQgdGhlIGJlIGRldmljZSAsYW5kIGdldCB0aGUgc3RydWN0IGF4Z190ZG1fc3RyZWFtLCBz byB3ZSBjYW4KPiBnZXQgdGhlIHRkbSBjbG9jayBpZAo+Cj4gVGFrZSBpbnRvIGFjY291bnQgYmVo YXZpb3JhbCBkaWZmZXJlbmNlcywgd2UgYWRkIG5ldyB0b2NvZGVjIGRyaXZlcgo+IGZvciBzNAoK U3RpbGwgbm90IHNlZWluZyBzdWZmaWNpZW50IHJlYXNvbiB0byBtYWtlIGFub3RoZXIgZHJpdmVy LgoKPgo+Pj4gQEAgLTAsMCArMSwzNzYgQEAKPj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogKEdQTC0yLjAtb25seSBPUiBNSVQpCj4+PiArLyoKPj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjMgQW1sb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+PiArICovCj4+PiArCj4+PiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9y bS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4+ICsjaW5jbHVkZSA8c291bmQv c29jLmg+Cj4+PiArI2luY2x1ZGUgPHNvdW5kL3NvYy1kYWkuaD4KPj4+ICsjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+ICsjaW5jbHVkZTxs aW51eC9rc3RydG94Lmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgo+Pj4g KyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+Pj4gKyNpbmNsdWRlICJheGctdGRtLmgiCj4+PiAr Cj4+PiArI2RlZmluZSBUT0FDT0RFQ19DVFJMMCAgICAgICAgICAgICAgICAgICAgICAgMHgwCj4+ PiArCj4+PiArI2RlZmluZSBDVFJMMF9FTkFCTEVfU0hJRlQgICAgICAgICAgIDMxCj4+PiArI2Rl ZmluZSBDVFJMMF9CQ0xLX0VOQUJMRV9TSElGVCAgICAgICAgICAgICAgMzAKPj4+ICsjZGVmaW5l IENUUkwwX01DTEtfRU5BQkxFX1NISUZUICAgICAgICAgICAgICAyOQo+Pj4gKyNkZWZpbmUgQ1RS TDBfQkxLX0NBUF9JTlZfU0hJRlQgICAgICAgICAgICAgIDkKPj4+ICsKPj4+ICsjZGVmaW5lIFRE TV9JRkFDRSAwCj4+PiArI2RlZmluZSBURE1fQV9QQUQgMAo+Pj4gKyNkZWZpbmUgVERNX0JfUEFE IDEKPj4+ICsjZGVmaW5lIFRETV9DX1BBRCAyCj4+PiArCj4+PiArc3RydWN0IHRvYWNvZGVjIHsK Pj4+ICsgICAgIHN0cnVjdCByZWdtYXBfZmllbGQgKmZpZWxkX2RhdF9zZWw7Cj4+PiArICAgICBz dHJ1Y3QgcmVnbWFwX2ZpZWxkICpmaWVsZF9scmNsa19zZWw7Cj4+PiArICAgICBzdHJ1Y3QgcmVn bWFwX2ZpZWxkICpmaWVsZF9iY2xrX3NlbDsKPj4+ICsgICAgIHN0cnVjdCByZWdtYXBfZmllbGQg KmZpZWxkX21jbGtfc2VsOwo+Pj4gK307Cj4+PiArCj4+PiArc3RydWN0IHRvYWNvZGVjX21hdGNo X2RhdGEgewo+Pj4gKyAgICAgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciAq Y29tcG9uZW50X2RydjsKPj4+ICsgICAgIGNvbnN0IHN0cnVjdCByZWdfZmllbGQgZmllbGRfZGF0 X3NlbDsKPj4+ICsgICAgIGNvbnN0IHN0cnVjdCByZWdfZmllbGQgZmllbGRfbHJjbGtfc2VsOwo+ Pj4gKyAgICAgY29uc3Qgc3RydWN0IHJlZ19maWVsZCBmaWVsZF9iY2xrX3NlbDsKPj4+ICsgICAg IGNvbnN0IHN0cnVjdCByZWdfZmllbGQgZmllbGRfbWNsa19zZWw7Cj4+PiArfTsKPj4+ICsKPj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgdG9jb2RlY19yZWdtYXBfY2ZnID0g ewo+Pj4gKyAgICAgLnJlZ19iaXRzICAgICAgID0gMzIsCj4+PiArICAgICAudmFsX2JpdHMgICAg ICAgPSAzMiwKPj4+ICsgICAgIC5yZWdfc3RyaWRlICAgICA9IDQsCj4+PiArICAgICAubWF4X3Jl Z2lzdGVyICAgPSAweDEsCj4+PiArfTsKPj4+ICsKPj4+ICsjZGVmaW5lIFM0X0xBTkVfT0ZGU0VU IDgKPj4+ICsKPj4+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHM0X3RvY29kZWNfbGFuZV9z ZWxfdGV4dHNbXSA9IHsKPj4+ICsgICAgICJMYW5lMCIsICJMYW5lMSIsICJMYW5lMiIsICJMYW5l MyIsICJMYW5lNCIsICJMYW5lNSIsICJMYW5lNiIsICJMYW5lNyIKPj4+ICt9Owo+Pj4gKwo+Pj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gczRfdG9jb2RlY19sYW5lX3NlbF9lbnVtID0K Pj4+ICsgICAgIFNPQ19FTlVNX1NJTkdMRShTTkRfU09DX05PUE0sIDAsIEFSUkFZX1NJWkUoczRf dG9jb2RlY19sYW5lX3NlbF90ZXh0cyksCj4+PiArICAgICAgICAgICAgICAgICAgICAgczRfdG9j b2RlY19sYW5lX3NlbF90ZXh0cyk7Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IHM0X3RvY29kZWNfbGFuZV9zZWwgPQo+Pj4gKyAgICAgU09DX0RBUE1fRU5V TSgiVE9DT0RFQyBMQU5FIFNFTCIsIHM0X3RvY29kZWNfbGFuZV9zZWxfZW51bSk7Cj4+PiArCj4+ PiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzNF90b2NvZGVjX3NyY19zZWxfdGV4dHNbXSA9 IHsKPj4+ICsgICAgICJURE1BIiwgIlRETUIiLCAiVERNQyIKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gczRfdG9jb2RlY19zcmNfc2VsX2VudW0gPQo+Pj4g KyAgICAgU09DX0VOVU1fU0lOR0xFKFNORF9TT0NfTk9QTSwgMCwgQVJSQVlfU0laRShzNF90b2Nv ZGVjX3NyY19zZWxfdGV4dHMpLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHM0X3RvY29kZWNf c3JjX3NlbF90ZXh0cyk7Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRy b2xfbmV3IHM0X3RvY29kZWNfc3JjX3NlbCA9Cj4+PiArICAgICBTT0NfREFQTV9FTlVNKCJUT0NP REVDIFNFTCIsIHM0X3RvY29kZWNfc3JjX3NlbF9lbnVtKTsKPj4+ICsKPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgczRfdG9hY29kZWNfb3V0X2VuYWJsZSA9Cj4+PiAr ICAgICBTT0NfREFQTV9TSU5HTEVfQVVUT0RJU0FCTEUoIlN3aXRjaCIsIFRPQUNPREVDX0NUUkww LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENUUkwwX0VOQUJMRV9TSElG VCwgMSwgMCk7Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaSAqdG9jb2RlY190 ZG1fZ2V0X2FoZWFkX2JlKHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3KQo+Pj4gK3sKPj4+ ICsgICAgIHN0cnVjdCBzbmRfc29jX2RhcG1fcGF0aCAqcDsKPj4+ICsgICAgIHN0cnVjdCBzbmRf c29jX2RhaSAqYmU7Cj4+PiArCj4+PiArICAgICBzbmRfc29jX2RhcG1fd2lkZ2V0X2Zvcl9lYWNo X3NvdXJjZV9wYXRoKHcsIHApIHsKPj4+ICsgICAgICAgICAgICAgaWYgKCFwLT5jb25uZWN0KQo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4gKyAgICAgICAgICAgICBpZiAo cC0+c291cmNlLT5pZCA9PSBzbmRfc29jX2RhcG1fZGFpX2luKQo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAoc3RydWN0IHNuZF9zb2NfZGFpICopcC0+c291cmNlLT5wcml2Owo+Pj4g KyAgICAgICAgICAgICBiZSA9IHRvY29kZWNfdGRtX2dldF9haGVhZF9iZShwLT5zb3VyY2UpOwo+ Pj4gKyAgICAgICAgICAgICBpZiAoYmUgJiYgYmUtPmlkID09IFRETV9JRkFDRSkKPj4+ICsgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gYmU7Cj4+PiArICAgICB9Cj4+PiArICAgICByZXR1cm4g TlVMTDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHVuc2lnbmVkIGludCBhbWxfc2ltcGxlX3N0 cnRvdWxsKGNvbnN0IGNoYXIgKmNwKQo+Pj4gK3sKPj4+ICsgICAgIHVuc2lnbmVkIGludCByZXN1 bHQgPSAwOwo+Pj4gKyAgICAgdW5zaWduZWQgaW50IHZhbHVlID0gMDsKPj4+ICsgICAgIHVuc2ln bmVkIGludCBsZW4gPSBzdHJsZW4oY3ApOwo+Pj4gKwo+Pj4gKyAgICAgd2hpbGUgKGxlbiAhPSAw KSB7Cj4+PiArICAgICAgICAgICAgIGxlbi0tOwo+Pj4gKyAgICAgICAgICAgICB2YWx1ZSA9IGlz ZGlnaXQoKmNwKTsKPj4+ICsgICAgICAgICAgICAgaWYgKHZhbHVlKSB7Cj4+PiArICAgICAgICAg ICAgICAgICAgICAgdmFsdWUgPSAqY3AgLSAnMCc7Cj4+PiArICAgICAgICAgICAgIH0gZWxzZSB7 Cj4+PiArICAgICAgICAgICAgICAgICAgICAgY3ArKzsKPj4+ICsgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgICAgICAgICBjcCsrOwo+ Pj4gKyAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAxMCArIHZhbHVlOwo+Pj4gKyAgICAg fQo+Pj4gKyAgICAgcmV0dXJuIHJlc3VsdDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBh bWxfZ2V0X2Nsa19pZChjb25zdCBjaGFyICpuYW1lKQo+Pj4gK3sKPj4+ICsgICAgIGludCBjbGtf aWQgPSAwOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHN0cnN0cihuYW1lLCAibXN0X2EiKSkKPj4+ICsg ICAgICAgICAgICAgY2xrX2lkID0gMDsKPj4+ICsgICAgIGVsc2UgaWYgKHN0cnN0cihuYW1lLCAi bXN0X2IiKSkKPj4+ICsgICAgICAgICAgICAgY2xrX2lkID0gMTsKPj4+ICsgICAgIGVsc2UgaWYg KHN0cnN0cihuYW1lLCAibXN0X2MiKSkKPj4+ICsgICAgICAgICAgICAgY2xrX2lkID0gMjsKPj4+ ICsgICAgIGVsc2UgaWYgKHN0cnN0cihuYW1lLCAibXN0X2QiKSkKPj4+ICsgICAgICAgICAgICAg Y2xrX2lkID0gMzsKPj4+ICsgICAgIGVsc2UgaWYgKHN0cnN0cihuYW1lLCAibXN0X2UiKSkKPj4+ ICsgICAgICAgICAgICAgY2xrX2lkID0gNDsKPj4+ICsgICAgIGVsc2UgaWYgKHN0cnN0cihuYW1l LCAibXN0X2YiKSkKPj4+ICsgICAgICAgICAgICAgY2xrX2lkID0gNTsKPj4+ICsKPj4+ICsgICAg IHJldHVybiBjbGtfaWQ7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgYW1sX3RvY29kZWNf c2VsX3NldChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdykKPj4+ICt7Cj4+PiArICAgICBz dHJ1Y3Qgc25kX3NvY19kYWkgKmJlOwo+Pj4gKyAgICAgc3RydWN0IGF4Z190ZG1fc3RyZWFtICpz dHJlYW07Cj4+PiArICAgICBzdHJ1Y3QgYXhnX3RkbV9pZmFjZSAqaWZhY2U7Cj4+PiArICAgICBz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2NfZGFwbV90b19jb21w b25lbnQody0+ZGFwbSk7Cj4+PiArICAgICBzdHJ1Y3QgdG9hY29kZWMgKnByaXYgPSBzbmRfc29j X2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+Pj4gKyAgICAgdW5zaWduZWQgaW50 IHRkbV9pZCA9IFRETV9BX1BBRDsKPj4+ICsgICAgIGNvbnN0IGNoYXIgKmRhaV93aWRnZXRfbmFt ZTsKPj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2RhcG1fcGF0aCAqcDsKPj4+ICsgICAgIHVuc2ln bmVkIGludCBsYW5lID0gMDsKPj4+ICsgICAgIHVuc2lnbmVkIGludCB2YWwgPSAwOwo+Pj4gKyAg ICAgc3RydWN0IGNsayAqc2NsaywgKm1jbGs7Cj4+PiArICAgICBjaGFyICpjbGtfbmFtZTsKPj4+ ICsgICAgIGludCBtY2xrX2lkLCBzY2xrX2lkOwo+Pj4gKwo+Pj4gKyAgICAgYmUgPSB0b2NvZGVj X3RkbV9nZXRfYWhlYWRfYmUodyk7Cj4+PiArICAgICBpZiAoIWJlKSB7Cj4+PiArICAgICAgICAg ICAgIGRldl9lcnIoY29tcG9uZW50LT5kZXYsICIlcyBub3QgZmluZCB0aGUgYmVcbiIsIF9fZnVu Y19fKTsKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArICAgICB9Cj4+PiAr ICAgICBzdHJlYW0gPSBzbmRfc29jX2RhaV9kbWFfZGF0YV9nZXRfcGxheWJhY2soYmUpOwo+Pj4g KyAgICAgaWYgKCFzdHJlYW0pIHsKPj4+ICsgICAgICAgICAgICAgZGV2X2Vycihjb21wb25lbnQt PmRldiwgIiVzIG5vdCBmaW5kIHRoZSBzdHJlYW1cbiIsIF9fZnVuY19fKTsKPj4+ICsgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArICAgICB9Cj4+PiArICAgICAvKndlIGxpa2UgdG8g dXNlIGRhaSBpZCwgYnV0IGl0IGlzIGZpeGVkIHZhbCovCj4+PiArICAgICBkYWlfd2lkZ2V0X25h bWUgPSBiZS0+c3RyZWFtW1NORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0tdLndpZGdldC0+bmFtZTsK Pj4+ICsgICAgIGlmIChzdHJzdHIoZGFpX3dpZGdldF9uYW1lLCAiVERNX0EiKSkKPj4+ICsgICAg ICAgICAgICAgdGRtX2lkID0gVERNX0FfUEFEOwo+Pj4gKyAgICAgZWxzZSBpZiAoc3Ryc3RyKGRh aV93aWRnZXRfbmFtZSwgIlRETV9CIikpCj4+PiArICAgICAgICAgICAgIHRkbV9pZCA9IFRETV9C X1BBRDsKPj4+ICsgICAgIGVsc2UgaWYgKHN0cnN0cihkYWlfd2lkZ2V0X25hbWUsICJURE1fQyIp KQo+Pj4gKyAgICAgICAgICAgICB0ZG1faWQgPSBURE1fQ19QQUQ7Cj4+PiArICAgICBzbmRfc29j X2RhcG1fd2lkZ2V0X2Zvcl9lYWNoX3NvdXJjZV9wYXRoKHcsIHApIHsKPj4+ICsgICAgICAgICAg ICAgaWYgKHAtPmNvbm5lY3QgJiYgcC0+bmFtZSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGxhbmUgPSBhbWxfc2ltcGxlX3N0cnRvdWxsKHAtPm5hbWUpOwo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHZhbCA9IGxhbmUgKyB0ZG1faWQgKiBTNF9MQU5FX09GRlNFVDsKPj4+ICsgICAgICAg ICAgICAgICAgICAgICByZWdtYXBfZmllbGRfd3JpdGUocHJpdi0+ZmllbGRfZGF0X3NlbCwgdmFs KTsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgfQo+Pj4gKyAgICAgaWZhY2UgPSBzdHJl YW0tPmlmYWNlOwo+Pj4gKyAgICAgbWNsayA9IGlmYWNlLT5tY2xrOwo+Pj4gKyAgICAgc2NsayA9 IGlmYWNlLT5zY2xrOwo+Pj4gKyAgICAgbWNsa19pZCA9IGFtbF9nZXRfY2xrX2lkKF9fY2xrX2dl dF9uYW1lKG1jbGspKTsKPj4+ICsgICAgIHNjbGtfaWQgPSBhbWxfZ2V0X2Nsa19pZChfX2Nsa19n ZXRfbmFtZShzY2xrKSk7Cj4+PiArICAgICByZWdtYXBfZmllbGRfd3JpdGUocHJpdi0+ZmllbGRf bWNsa19zZWwsIG1jbGtfaWQpOwo+Pj4gKyAgICAgcmVnbWFwX2ZpZWxkX3dyaXRlKHByaXYtPmZp ZWxkX2JjbGtfc2VsLCBzY2xrX2lkKTsKPj4+ICsgICAgIHJlZ21hcF9maWVsZF93cml0ZShwcml2 LT5maWVsZF9scmNsa19zZWwsIHNjbGtfaWQpOwo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIDA7Cj4+ PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgdG9jb2RlY19zZWxfZXZlbnQoc3RydWN0IHNuZF9z b2NfZGFwbV93aWRnZXQgKncsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c25kX2tjb250cm9sICpjb250cm9sLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGV2ZW50KQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9u ZW50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsKPj4+ICsgICAgIGludCBy ZXQgPSAwOwo+Pj4gKwo+Pj4gKyAgICAgc3dpdGNoIChldmVudCkgewo+Pj4gKyAgICAgY2FzZSBT TkRfU09DX0RBUE1fUFJFX1BNVToKPj4+ICsgICAgICAgICAgICAgcmV0ID0gYW1sX3RvY29kZWNf c2VsX3NldCh3KTsKPj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+PiArCj4+PiArICAgICBjYXNl IFNORF9TT0NfREFQTV9QUkVfUE1EOgo+Pj4gKyAgICAgICAgICAgICBicmVhazsKPj4+ICsKPj4+ ICsgICAgIGRlZmF1bHQ6Cj4+PiArICAgICAgICAgICAgIGRldl9lcnIoY29tcG9uZW50LT5kZXYs ICJVbmV4cGVjdGVkIGV2ZW50ICVkXG4iLCBldmVudCk7Cj4+PiArICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIHJldDsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIGludCB0b2NvZGVjX2Nsa19lbmFibGUoc3RydWN0IHNuZF9zb2Nf ZGFwbV93aWRnZXQgKncsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNu ZF9rY29udHJvbCAqY29udHJvbCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg ZXZlbnQpCj4+PiArewo+Pj4gKyAgICAgaW50IHJldCA9IDA7Cj4+PiArICAgICB1bnNpZ25lZCBp bnQgbWFzayA9IDAsIHZhbCA9IDA7Cj4+PiArICAgICBzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQg KmNvbXBvbmVudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7Cj4+PiArCj4+ PiArICAgICBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRPQUNPREVD X0NUUkwwLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA8PCBDVFJM MF9CTEtfQ0FQX0lOVl9TSElGVCwgMSA8PCBDVFJMMF9CTEtfQ0FQX0lOVl9TSElGVCk7Cj4+PiAr ICAgICBzd2l0Y2ggKGV2ZW50KSB7Cj4+PiArICAgICBjYXNlIFNORF9TT0NfREFQTV9QUkVfUE1V Ogo+Pj4gKyAgICAgICAgICAgICBtYXNrID0gMSA8PCBDVFJMMF9NQ0xLX0VOQUJMRV9TSElGVCB8 IDEgPDwgQ1RSTDBfQkNMS19FTkFCTEVfU0hJRlQ7Cj4+PiArICAgICAgICAgICAgIHZhbCA9IDEg PDwgQ1RSTDBfTUNMS19FTkFCTEVfU0hJRlQgfCAxIDw8IENUUkwwX0JDTEtfRU5BQkxFX1NISUZU Owo+Pj4gKyAgICAgICAgICAgICBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25l bnQsIFRPQUNPREVDX0NUUkwwLCBtYXNrLCB2YWwpOwo+Pj4gKyAgICAgICAgICAgICBicmVhazsK Pj4+ICsgICAgIGNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTUQ6Cj4+PiArICAgICAgICAgICAgIG1h c2sgPSAxIDw8IENUUkwwX01DTEtfRU5BQkxFX1NISUZUIHwgMSA8PCBDVFJMMF9CQ0xLX0VOQUJM RV9TSElGVDsKPj4+ICsgICAgICAgICAgICAgdmFsID0gMCA8PCBDVFJMMF9NQ0xLX0VOQUJMRV9T SElGVCB8IDAgPDwgQ1RSTDBfQkNMS19FTkFCTEVfU0hJRlQ7Cj4+PiArICAgICAgICAgICAgIHNu ZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVE9BQ09ERUNfQ1RSTDAsIG1h c2ssIHZhbCk7Cj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4gKyAgICAgZGVmYXVsdDoKPj4+ ICsgICAgICAgICAgICAgZGV2X2Vycihjb21wb25lbnQtPmRldiwgIlVuZXhwZWN0ZWQgZXZlbnQg JWRcbiIsIGV2ZW50KTsKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArICAg ICB9Cj4+PiArCj4+PiArICAgICByZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgczRfdG9hY29kZWNfd2lkZ2V0c1tdID0g ewo+Pj4gKyAgICAgU05EX1NPQ19EQVBNX01VWF9FKCJMYW5lIFNSQyIsIFNORF9TT0NfTk9QTSwg MCwgMCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAmczRfdG9jb2RlY19sYW5lX3NlbCwg dG9jb2RlY19zZWxfZXZlbnQsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgKFNORF9TT0Nf REFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QTUQpKSwKPj4+ICsgICAgIFNORF9TT0Nf REFQTV9NVVgoIklOUFVUIFNSQyIsIFNORF9TT0NfTk9QTSwgMCwgMCwgJnM0X3RvY29kZWNfc3Jj X3NlbCksCj4+PiArICAgICBTTkRfU09DX0RBUE1fU1dJVENIX0UoIk9VVCBFTiIsIFNORF9TT0Nf Tk9QTSwgMCwgMCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmczRfdG9hY29kZWNf b3V0X2VuYWJsZSwgdG9jb2RlY19jbGtfZW5hYmxlLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFNORF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QTUQpKSwK Pj4+ICsgICAgIFNORF9TT0NfREFQTV9BSUZfSU4oIlRETUEiLCBOVUxMLCAwLCBTTkRfU09DX05P UE0sIDAsIDApLAo+Pj4gKyAgICAgU05EX1NPQ19EQVBNX0FJRl9JTigiVERNQiIsIE5VTEwsIDAs IFNORF9TT0NfTk9QTSwgMCwgMCksCj4+PiArICAgICBTTkRfU09DX0RBUE1fQUlGX0lOKCJURE1D IiwgTlVMTCwgMCwgU05EX1NPQ19OT1BNLCAwLCAwKSwKPj4+ICsgICAgIFNORF9TT0NfREFQTV9P VVRfRFJWKCJMYW5lMCIsIFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCj4+PiArICAgICBT TkRfU09DX0RBUE1fT1VUX0RSVigiTGFuZTEiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDAp LAo+Pj4gKyAgICAgU05EX1NPQ19EQVBNX09VVF9EUlYoIkxhbmUyIiwgU05EX1NPQ19OT1BNLCAw LCAwLCBOVUxMLCAwKSwKPj4+ICsgICAgIFNORF9TT0NfREFQTV9PVVRfRFJWKCJMYW5lMyIsIFNO RF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCj4+PiArICAgICBTTkRfU09DX0RBUE1fT1VUX0RS VigiTGFuZTQiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLAo+Pj4gKyAgICAgU05EX1NP Q19EQVBNX09VVF9EUlYoIkxhbmU1IiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKPj4+ ICsgICAgIFNORF9TT0NfREFQTV9PVVRfRFJWKCJMYW5lNiIsIFNORF9TT0NfTk9QTSwgMCwgMCwg TlVMTCwgMCksCj4+PiArICAgICBTTkRfU09DX0RBUE1fT1VUX0RSVigiTGFuZTciLCBTTkRfU09D X05PUE0sIDAsIDAsIE5VTEwsIDApLAo+Pj4gKyAgICAgU05EX1NPQ19EQVBNX09VVFBVVCgiVERN X1RPX0FDT0RFQyIpLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf c29jX2RhcG1fcm91dGUgczRfdG9jb2RlY19kYXBtX3JvdXRlc1tdID0gewo+Pj4gKyAgICAgeyAi SU5QVVQgU1JDIiwgIlRETUEiLCAiVERNQSJ9LAo+Pj4gKyAgICAgeyAiSU5QVVQgU1JDIiwgIlRE TUIiLCAiVERNQiJ9LAo+Pj4gKyAgICAgeyAiSU5QVVQgU1JDIiwgIlRETUMiLCAiVERNQyJ9LAo+ Pj4gKyAgICAgeyAiTGFuZTAiLCBOVUxMLCAiSU5QVVQgU1JDIiB9LAo+Pj4gKyAgICAgeyAiTGFu ZTEiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+PiArICAgICB7ICJMYW5lMiIsIE5VTEwsICJJTlBV VCBTUkMifSwKPj4+ICsgICAgIHsgIkxhbmUzIiwgTlVMTCwgIklOUFVUIFNSQyJ9LAo+Pj4gKyAg ICAgeyAiTGFuZTQiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+PiArICAgICB7ICJMYW5lNSIsIE5V TEwsICJJTlBVVCBTUkMifSwKPj4+ICsgICAgIHsgIkxhbmU2IiwgTlVMTCwgIklOUFVUIFNSQyJ9 LAo+Pj4gKyAgICAgeyAiTGFuZTciLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+PiArICAgICB7ICJM YW5lIFNSQyIsICJMYW5lMCIsICJMYW5lMCJ9LAo+Pj4gKyAgICAgeyAiTGFuZSBTUkMiLCAiTGFu ZTEiLCAiTGFuZTEifSwKPj4+ICsgICAgIHsgIkxhbmUgU1JDIiwgIkxhbmUyIiwgIkxhbmUyIn0s Cj4+PiArICAgICB7ICJMYW5lIFNSQyIsICJMYW5lMyIsICJMYW5lMyJ9LAo+Pj4gKyAgICAgeyAi TGFuZSBTUkMiLCAiTGFuZTQiLCAiTGFuZTQifSwKPj4+ICsgICAgIHsgIkxhbmUgU1JDIiwgIkxh bmU1IiwgIkxhbmU1In0sCj4+PiArICAgICB7ICJMYW5lIFNSQyIsICJMYW5lNiIsICJMYW5lNiJ9 LAo+Pj4gKyAgICAgeyAiTGFuZSBTUkMiLCAiTGFuZTciLCAiTGFuZTcifSwKPj4+ICsgICAgIHsg Ik9VVCBFTiIsICJTd2l0Y2giLCAiTGFuZSBTUkMifSwKPj4+ICsgICAgIHsgIlRETV9UT19BQ09E RUMiLCBOVUxMLCAiT1VUIEVOIn0sCj4+PiArCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZlciBzNF90b2NvZGVjX2NvbXBvbmVudF9k cnYgPSB7Cj4+PiArICAgICAuZGFwbV93aWRnZXRzICAgICAgICAgICA9IHM0X3RvYWNvZGVjX3dp ZGdldHMsCj4+PiArICAgICAubnVtX2RhcG1fd2lkZ2V0cyAgICAgICA9IEFSUkFZX1NJWkUoczRf dG9hY29kZWNfd2lkZ2V0cyksCj4+PiArICAgICAuZGFwbV9yb3V0ZXMgICAgICAgICAgICA9IHM0 X3RvY29kZWNfZGFwbV9yb3V0ZXMsCj4+PiArICAgICAubnVtX2RhcG1fcm91dGVzICAgICAgICA9 IEFSUkFZX1NJWkUoczRfdG9jb2RlY19kYXBtX3JvdXRlcyksCj4+PiArfTsKPj4+ICsKPj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHRvYWNvZGVjX21hdGNoX2RhdGEgczRfdG9hY29kZWNfbWF0Y2hf ZGF0YSA9IHsKPj4+ICsgICAgIC5jb21wb25lbnRfZHJ2ICA9ICZzNF90b2NvZGVjX2NvbXBvbmVu dF9kcnYsCj4+PiArICAgICAuZmllbGRfZGF0X3NlbCAgPSBSRUdfRklFTEQoVE9BQ09ERUNfQ1RS TDAsIDE2LCAyMCksCj4+PiArICAgICAuZmllbGRfbHJjbGtfc2VsID0gUkVHX0ZJRUxEKFRPQUNP REVDX0NUUkwwLCAxMiwgMTQpLAo+Pj4gKyAgICAgLmZpZWxkX2JjbGtfc2VsID0gUkVHX0ZJRUxE KFRPQUNPREVDX0NUUkwwLCA0LCA2KSwKPj4+ICsgICAgIC5maWVsZF9tY2xrX3NlbCA9IFJFR19G SUVMRChUT0FDT0RFQ19DVFJMMCwgMCwgMiksCj4+PiArfTsKPj4+ICsKPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBzNF90b2NvZGVjX29mX21hdGNoW10gPSB7Cj4+PiArICAg ICB7Cj4+PiArICAgICAgICAgICAgIC5jb21wYXRpYmxlID0gImFtbG9naWMsczQtdG9jb2RlYyIs Cj4+PiArICAgICAgICAgICAgIC5kYXRhID0gJnM0X3RvYWNvZGVjX21hdGNoX2RhdGEsCj4+PiAr ICAgICB9LCB7fQo+Pj4gK307Cj4+PiArCj4+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgczRf dG9jb2RlY19vZl9tYXRjaCk7Cj4+PiArCj4+PiArc3RhdGljIGludCB0b2NvZGVjX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+PiArewo+Pj4gKyAgICAgY29uc3Qgc3RydWN0 IHRvYWNvZGVjX21hdGNoX2RhdGEgKmRhdGE7Cj4+PiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmcGRldi0+ZGV2Owo+Pj4gKyAgICAgc3RydWN0IHRvYWNvZGVjICpwcml2Owo+Pj4gKyAgICAg dm9pZCBfX2lvbWVtICpyZWdzOwo+Pj4gKyAgICAgc3RydWN0IHJlZ21hcCAqbWFwOwo+Pj4gKyAg ICAgaW50IHJldDsKPj4+ICsKPj4+ICsgICAgIGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEo ZGV2KTsKPj4+ICsgICAgIGlmICghZGF0YSkKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIGRldl9l cnJfcHJvYmUoZGV2LCAtRU5PREVWLCAiZmFpbGVkIHRvIG1hdGNoIGRldmljZVxuIik7Cj4+PiAr ICAgICBwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7 Cj4+PiArICAgICBpZiAoIXByaXYpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ Pj4gKwo+Pj4gKyAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7Cj4+PiArCj4+ PiArICAgICByZXQgPSBkZXZpY2VfcmVzZXQoZGV2KTsKPj4+ICsgICAgIGlmIChyZXQpCj4+PiAr ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArCj4+PiArICAgICByZWdzID0gZGV2bV9wbGF0 Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+Pj4gKyAgICAgaWYgKElTX0VSUihyZWdz KSkKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocmVncyk7Cj4+PiArCj4+PiArICAg ICBtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCByZWdzLCAmdG9jb2RlY19yZWdtYXBf Y2ZnKTsKPj4+ICsgICAgIGlmIChJU19FUlIobWFwKSkKPj4+ICsgICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKG1hcCksICJmYWlsZWQgdG8gaW5pdCByZWdtYXBc biIpOwo+Pj4gKwo+Pj4gKyAgICAgcHJpdi0+ZmllbGRfZGF0X3NlbCA9IGRldm1fcmVnbWFwX2Zp ZWxkX2FsbG9jKGRldiwgbWFwLCBkYXRhLT5maWVsZF9kYXRfc2VsKTsKPj4+ICsgICAgIGlmIChJ U19FUlIocHJpdi0+ZmllbGRfZGF0X3NlbCkpCj4+PiArICAgICAgICAgICAgIHJldHVybiBQVFJf RVJSKHByaXYtPmZpZWxkX2RhdF9zZWwpOwo+Pj4gKwo+Pj4gKyAgICAgcHJpdi0+ZmllbGRfbHJj bGtfc2VsID0gZGV2bV9yZWdtYXBfZmllbGRfYWxsb2MoZGV2LCBtYXAsIGRhdGEtPmZpZWxkX2xy Y2xrX3NlbCk7Cj4+PiArICAgICBpZiAoSVNfRVJSKHByaXYtPmZpZWxkX2xyY2xrX3NlbCkpCj4+ PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHByaXYtPmZpZWxkX2xyY2xrX3NlbCk7Cj4+ PiArCj4+PiArICAgICBwcml2LT5maWVsZF9iY2xrX3NlbCA9IGRldm1fcmVnbWFwX2ZpZWxkX2Fs bG9jKGRldiwgbWFwLCBkYXRhLT5maWVsZF9iY2xrX3NlbCk7Cj4+PiArICAgICBpZiAoSVNfRVJS KHByaXYtPmZpZWxkX2JjbGtfc2VsKSkKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIo cHJpdi0+ZmllbGRfYmNsa19zZWwpOwo+Pj4gKwo+Pj4gKyAgICAgcHJpdi0+ZmllbGRfbWNsa19z ZWwgPSBkZXZtX3JlZ21hcF9maWVsZF9hbGxvYyhkZXYsIG1hcCwgZGF0YS0+ZmllbGRfbWNsa19z ZWwpOwo+Pj4gKyAgICAgaWYgKElTX0VSUihwcml2LT5maWVsZF9tY2xrX3NlbCkpCj4+PiArICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKHByaXYtPmZpZWxkX21jbGtfc2VsKTsKPj4+ICsKPj4+ ICsgICAgIHJldHVybiBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50KGRldiwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICBkYXRhLT5jb21wb25lbnRfZHJ2LCBOVUxMLCAwKTsKPj4+ICt9 Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdG9jb2RlY19wZHJ2ID0g ewo+Pj4gKyAgICAgLnByb2JlID0gdG9jb2RlY19wcm9iZSwKPj4+ICsgICAgIC5kcml2ZXIgPSB7 Cj4+PiArICAgICAgICAgICAgIC5uYW1lID0gInM0LXRvY29kZWMiLAo+Pj4gKyAgICAgICAgICAg ICAub2ZfbWF0Y2hfdGFibGUgPSBzNF90b2NvZGVjX29mX21hdGNoLAo+Pj4gKyAgICAgfSwKPj4+ ICt9Owo+Pj4gKwo+Pj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodG9jb2RlY19wZHJ2KTsKPj4+ ICsKPj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFtbG9naWMgdG8gY29kZWMgZHJpdmVyIik7Cj4+ PiArTU9EVUxFX0FVVEhPUigiamllYmluZy5jaGVuQGFtbG9naWMuY29tIik7Cj4+PiArTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOwo+Pj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9tZXNvbi90OTAxNS5j IGIvc291bmQvc29jL21lc29uL3Q5MDE1LmMKPj4+IGluZGV4IDU3MWY2NTc4OGM1OTIwNTBhYmRj YTI2NGY1NjU2ZDRkMWE5ZDk5ZjYuLjJkYjFjZDE4Y2YyY2VhNTA3ZjNkNzI4MjA1NGUwM2Q5NTM1 ODY2NDggMTAwNjQ0Cj4+PiAtLS0gYS9zb3VuZC9zb2MvbWVzb24vdDkwMTUuYwo+Pj4gKysrIGIv c291bmQvc29jL21lc29uL3Q5MDE1LmMKPj4+IEBAIC04OSwxMCArODksNyBAQCBzdGF0aWMgc3Ry dWN0IHNuZF9zb2NfZGFpX2RyaXZlciB0OTAxNV9kYWkgPSB7Cj4+PiAgICAgICAgICAgICAgICAu Y2hhbm5lbHNfbWluID0gMSwKPj4+ICAgICAgICAgICAgICAgIC5jaGFubmVsc19tYXggPSAyLAo+ Pj4gICAgICAgICAgICAgICAgLnJhdGVzID0gU05EUlZfUENNX1JBVEVfODAwMF85NjAwMCwKPj4+ IC0gICAgICAgICAgICAgLmZvcm1hdHMgPSAoU05EUlZfUENNX0ZNVEJJVF9TOCB8Cj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAgIFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwKPj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0ZNVEJJVF9TMjBfTEUgfAo+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fRk1UQklUX1MyNF9MRSksCj4+PiArICAgICAg ICAgICAgIC5mb3JtYXRzID0gKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZfUENNX0ZN VEJJVF9TMzJfTEUpLAo+PiBBZ2FpbiwgbWl4ZWQgdXAgY2hhbmdlcyB3aXRoIHplcm8ganVzdGlm aWNhdGlvbi4KPj4KPj4gVGhpcyBkcm9wcyBTOCBhbmQgUzE2IGZvcm1hdCBzdXBwb3J0IGZvciB0 aGUgZXhpc3RpbmcgU29DcyAoc3VjaCBhcyBHWEwpCj4+IHdoaWNoIGlzIGtub3duIHRvIHdvcmsg YW5kIGFkZCBTMzIgc3VwcG9ydCBvbiBhbiBIVyBkb2N1bWVudGVkIGFzIDI0Yml0cwo+PiBvbmx5 LiBDYW4geW91IGV4cGxhaW4gPwo+Pgo+Pj4gICAgICAgIH0sCj4+PiAgICAgICAgLm9wcyA9ICZ0 OTAxNV9kYWlfb3BzLAo+Pj4gICB9Owo+PiAtLQo+PiBKZXJvbWUKCi0tIApKZXJvbWUKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMg bWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK