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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 BB063CD4851 for ; Wed, 13 May 2026 07:53:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BB7310E283; Wed, 13 May 2026 07:53:29 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="PYW4qIgd"; dkim-atps=neutral Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5334310E17F for ; Tue, 12 May 2026 07:45:43 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-3567e2b4159so3159610a91.0 for ; Tue, 12 May 2026 00:45:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778571943; x=1779176743; darn=lists.freedesktop.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=UTgZhfx5akyaIwwa2Nv45b7XTM6tXA6vydkcj20lD9U=; b=PYW4qIgdOlVWOL+Hvsgwz0GwWmLA6HX7L73ICGbzkouyxqPwGgiMYpXAld9MIkks5q l1W/A3vk1Al8dEcpJBmDonhwZ1di2uYqweoWwkgTZ7UYGtUY929Z6VQfvvITq0EvIG3g wasZjqVTyljF1n7PtVVTJP5vXkp0YWVv1+M0AZICg3zDzB3mCVI3p4/e3UqDB31ZHyYX 3TP7qfYG6mbHgNS5++TU/4qOjRoCd2So0WqiczeQMwcDfD7zjCw2ADgI7D/iehitd1Ut aGYGT08nY/Ru0xoPnZrp+ioDDFHIWM+QxP8bZrs2XiC6BRwmGuTdRG37B/v+2d0+EuUv uX9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778571943; x=1779176743; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UTgZhfx5akyaIwwa2Nv45b7XTM6tXA6vydkcj20lD9U=; b=DSzgEasH2YY0oh/gTHvBcOUkzfj5WIa2YcBi8OJep6eaNi5ymfGhgxyd3GaeUjFyJF mkyeXNeIM0Ryx0y8USxOJDvs03SntcTV2/GipfEdHkMQgz5Alowpcvj1UTwjnfW+4eqT eW+iAg1eYt+4yb5wRu0U4bpr7wYsnLSkB0UkgXcV5aYFl944aFfJsOExqA4TQXEXz3Df E6KgmUSpc1fUqB7EAwkQja9/y235XVCCcbeEp44p+qu53gkyjx2l3u1eaj1jgetB0jgY CSAqy5TgXFLRr8FI2tjmLhjqM65s8/FRGiojYBbRfL0RsEz9ZlRipsnMElG0NHNhdDOE kn5A== X-Forwarded-Encrypted: i=1; AFNElJ9nQ23z2tC87OFZNNHvuSrMqCVghT4RxN7L0trD3uDPX1KEJNqzs/+P9DsVtvhdIJopZfTq5xsefqM=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yy698G1rFpN+Fvm0ERKO5ni/b6DvnNB0lVTjnr96nZiD50fiSK+ N9+YQS4b2M5JbYI67ZOWWCqEsImKNHzlCdokK9H0ANaXVM4cMIX1EvKf X-Gm-Gg: Acq92OF73SwWA/Aa+5yfUYFTemQX/1av8venQkOePjOC0ZMc6KZX7Uw3xGmLi8lCDDh 3dLTI/hy2OrlX8K+PmLJWGePfO/cG4OK82iLKIq0w+c2xT6UHySl1RBAFOfCumv7vvgCAWjJV0z /OJxrbW0PXN6yhIcg1M/x/5B9sF4ChkRp/YHYn1rNgkKzOJGzyxOJrjOXIXuM9AgCqRCe4ZigbZ m2GesxVw58gV8gSvbWKpOpMIDex0CQbx6QnoeSbPRPLz+s3C6TEc9gxgMFaUrBTxbmoTq8I9seG gsTTmDpda0qvDM7ccsYzNkxJK0t5FqJA4gnuiNl8rMoahK1CkqR9H4bmfQ7IfY0F5OfZoY6a1MY /huVVXg98omqucel5sJy/D+zJhOJ4z8fXMdRkSa8Br+UbeF3CbO/kpKddxN+Jer7lRjpVHEzFga FMIRYuDxQlwr4Bh4Vs4k9lyOYle9FG7/dfe1TL/q9EQSSpyg8TjnCjEMWprh02YgmKXDLgyYYbB bGF X-Received: by 2002:a17:90b:3dcb:b0:366:decb:d119 with SMTP id 98e67ed59e1d1-366decbd2c3mr16642402a91.11.1778571942490; Tue, 12 May 2026 00:45:42 -0700 (PDT) Received: from [192.168.0.100] (60-250-196-139.hinet-ip.hinet.net. [60.250.196.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367d684009esm10366598a91.11.2026.05.12.00.45.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 12 May 2026 00:45:41 -0700 (PDT) Message-ID: Date: Tue, 12 May 2026 15:45:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] drm/verisilicon: add support for Nuvoton MA35D1 DCUltra Lite display controller To: Icenowy Zheng , maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: ychuang3@nuvoton.com, schung@nuvoton.com, yclu4@nuvoton.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20260511075142.54752-1-a0987203069@gmail.com> <20260511075142.54752-3-a0987203069@gmail.com> <93e69179dbc495188cfffd8015350b3a55ce7876.camel@iscas.ac.cn> Content-Language: en-US From: Joey Lu In-Reply-To: <93e69179dbc495188cfffd8015350b3a55ce7876.camel@iscas.ac.cn> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-Mailman-Approved-At: Wed, 13 May 2026 07:53:28 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDUvMTEvMjAyNiA1OjQ3IFBNLCBJY2Vub3d5IFpoZW5nIHdyb3RlOgo+IOWcqCAyMDI2LTA1 LTEx5LiA55qEIDE1OjUxICswODAw77yMSm9leSBMdeWGmemBk++8mgo+PiBUaGUgTnV2b3RvbiBN QTM1RDEgU29DIGludGVncmF0ZXMgYSBWZXJpc2lsaWNvbiBEQ1VsdHJhIExpdGUgZGlzcGxheQo+ PiBjb250cm9sbGVyLCB3aGljaCBpcyBhIHByZXZpb3VzIGdlbmVyYXRpb24gb2YgdGhlIERDODAw MCBzZXJpZXMuCj4+IFdoaWxlCj4+IHRoZSBnZW5lcmFsIHJlZ2lzdGVyIGxheW91dCBpcyBzaW1p bGFyIHRvIHRoZSBEQzgwMDAsIHRoZXJlIGFyZQo+PiBzZXZlcmFsCj4+IGtleSBkaWZmZXJlbmNl cyB0aGF0IHJlcXVpcmUgcGVyLXZhcmlhbnQgaGFuZGxpbmcgaW4gdGhlIGRyaXZlci4KPj4KPj4g QWRkIGEgdnNfZGNfaW5mbyBwbGF0Zm9ybSBkYXRhIHN0cnVjdHVyZSAoaW4gdnNfaHdkYi5oKSB0 byBkZXNjcmliZQo+PiBwZXItSVAtdmFyaWFudCBjYXBhYmlsaXRpZXMsIGFuZCB1c2UgaXQgdGhy b3VnaG91dCB0aGUgZHJpdmVyIHRvCj4+IHNlbGVjdAo+PiB0aGUgY29ycmVjdCBjb2RlIHBhdGhz IGF0IHJ1bnRpbWUuCj4+Cj4+IEtleSBkaWZmZXJlbmNlcyBiZXR3ZWVuIERDODAwMCBhbmQgRENV bHRyYSBMaXRlIGhhbmRsZWQ6Cj4gV2hhdCB0aGUgZHJpdmVyIHN1cHBvcnRzIG5vdyBpcyBEQzgy MDAsIERDODAwMCBoYXZlIHRoZSBmb2xsb3dpbmcgcG9pbnQKPiAxfjQgdGhlIHNhbWUgd2l0aCBE Q1VsdHJhTGl0ZSAoZGlmZmVyZW50IHRvIERDODIwMCkuClVuZGVyc3Rvb2QuIEknbGwgcmVuYW1l IGFsbCBgdnNfZGM4MDAwXypgIGlkZW50aWZpZXJzIHRvCmB2c19kYzgyMDBfKmAgaW4gdjIuIFRo ZSBjb21taXQgbWVzc2FnZSB3aWxsIGFsc28gYmUgY29ycmVjdGVkIHRvIHNheQp0aGF0IHBvaW50 cyAxfjQgYXJlIGRpZmZlcmVuY2VzIGZyb20gREM4MjAwLCBub3QgREM4MDAwLgo+PiAxLiBObyBj aGlwIGlkZW50aXR5IHJlZ2lzdGVycyAoMHgwMDIwLTB4MDAzMCk6IERDVWx0cmEgTGl0ZSB1c2Vz Cj4+IHN0YXRpYwo+PiAgwqDCoCBwbGF0Zm9ybSBkYXRhIGluc3RlYWQgb2YgcmVhZGluZyBtb2Rl bC9yZXZpc2lvbi9jdXN0b21lcl9pZCBmcm9tCj4+IEhXLgo+IE15IHRlc3Qgc2hvd3MgdGhhdCBy ZXZpc2lvbiBhbmQgY3VzdG9tZXJfaWQgaXMgY29ycmVjdGx5IHByZXNlbnQsIG9ubHkKPiBtb2Rl bCBpcyAwIC0tIEkgdGhpbmsgdGhpcyBjYW4gYmUgYWxzbyBjb25zaWRlcmVkIGFzIGEgdmFsaWQg bW9kZWwKPiB2YWx1ZSBiZWNhdXNlIHRoZSBJUCBuYW1lIGhhcyBhbHNvIG5vIG1vZGVsIG51bWJl ci4KPgo+IFRoZSByZXZpc2lvbiBudW1iZXIgaXMgMHg1NTYwIGFuZCBjdXN0b21lciBpZCBpcyAw eDMwNSAuClRoYW5rIHlvdSBmb3IgdGVzdGluZy4gSSdsbCBkcm9wIHRoZSBgaGFzX2NoaXBfaWRg IGZsYWcKZW50aXJlbHkuIEluIHYyLCBgdnNfZmlsbF9jaGlwX2lkZW50aXR5KClgIHdpbGwgYmUg Y2FsbGVkIGZvciBhbGwKdmFyaWFudHMuIEEgbmV3IGVudHJ5IHdpbGwgYmUgYWRkZWQgdG8gYHZz X2NoaXBfaWRlbnRpdGllc1tdYCBpbgp2c19od2RiLmMgd2l0aCBtb2RlbD0weDAsIHJldmlzaW9u PTB4NTU2MCwgY3VzdG9tZXJfaWQ9MHgzMDUsCmRpc3BsYXlfY291bnQ9MSwgYW5kIGB2c19mb3Jt YXRzX25vX3l1djQ0NGAuCmUuZy4gdmVyaXNpbGljb24tZGMgNDAyNjAwMDAuZGlzcGxheTogRm91 bmQgREMwIHJldiA1NTYwIGN1c3RvbWVyIDMwNQo+Cj4+IDIuIE5vIENPTkZJR19FWCBjb21taXQg bWVjaGFuaXNtOiBEQzgwMDAgdXNlcyByZWdpc3RlcnMgYXQgMHgxQ0MwCj4+ICDCoMKgIChGQl9D T05GSUdfRVgpLCAweDI0RDggKEZCX1RPUF9MRUZUKSwgMHgyNEUwIChGQl9CT1RUT01fUklHSFQp LAo+PiAgwqDCoCAweDI1MTAgKEZCX0JMRU5EX0NPTkZJRyksIDB4MjUxOCAoUEFORUxfQ09ORklH X0VYKS4gRENVbHRyYSBMaXRlCj4+ICDCoMKgIG9taXRzIGFsbCBvZiB0aGVzZSBhbmQgaW5zdGVh ZCB1c2VzIGVuYWJsZS9yZXNldCBiaXRzIGluIEZCX0NPTkZJRwo+PiAgwqDCoCAoYml0IDAgPSBl bmFibGUsIGJpdCA0ID0gcmVzZXQpIGZvciBkaXJlY3QgZnJhbWVidWZmZXIgdXBkYXRlcy4KPj4K Pj4gMy4gTm8gUEFORUxfU1RBUlQgcmVnaXN0ZXIgKDB4MUNDQyk6IERDVWx0cmEgTGl0ZSBwYW5l bCBvdXRwdXQgc3RhcnRzCj4+ICDCoMKgIHdoZW4gUEFORUxfQ09ORklHLlJVTk5JTkcgaXMgc2V0 OyBubyBzZXBhcmF0ZSBtdWx0aS1kaXNwbGF5IHN5bmMKPj4gIMKgwqAgc3RhcnQgcmVnaXN0ZXIg aXMgbmVlZGVkLgo+Pgo+PiA0LiBEaWZmZXJlbnQgSVJRIHJlZ2lzdGVyczogRENVbHRyYSBMaXRl IHVzZXMgMHgxNDdDIChJUlFfU1RBKSAvCj4+ICDCoMKgIDB4MTQ4MCAoSVJRX0VOKTsgREM4MDAw IHVzZXMgMHgwMDEwIChJUlFfQUNLKSAvIDB4MDAxNCAoSVJRX0VOKS4KPj4KPj4gNS4gRGlmZmVy ZW50IGNsb2NrL3Jlc2V0IHRvcG9sb2d5OiBEQ1VsdHJhIExpdGUgcmVxdWlyZXMgb25seSAiY29y ZSIKPj4gIMKgwqAgKGJ1cyBnYXRlKSBhbmQgInBpeDAiIChwaXhlbCBkaXZpZGVyKSBjbG9ja3Mg d2l0aCBubyByZXNldCBsaW5lcwo+PiAgwqDCoCBtYW5hZ2VkIGJ5IHRoZSBkcml2ZXIuIERDODAw MCBuZWVkcyBjb3JlL2F4aS9haGIgY2xvY2tzIGFuZCB0aHJlZQo+PiAgwqDCoCByZXNldHMuCj4g SXQncyBwb3NzaWJsZSB0aGF0IHlvdXIgU29DIGludGVncmF0aW9uIGNvbWJpbmVzIGNvcmUgY2xv Y2sgZ2F0ZSB3aXRoCj4gYnVzIGNsb2NrIGdhdGUgaW5zdGVhZCBvZiBidXMgY2xvY2sgZ2F0ZSBu b3QgZXhpc3RpbmcuCkFncmVlZC4gSW4gdjIgSSdsbCByZW1vdmUgdGhlIGZhbWlseS1nYXRlZCBj bG9jayBoYW5kbGluZyBhbmQKaW5zdGVhZCB1c2UgYGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFi bGVkKClgIGZvciB0aGUgYXhpIGFuZCBhaGIKY2xvY2tzLCBzbyB0aGV5IGFyZSBzaW1wbHkgc2tp cHBlZCBpZiBub3QgcHJlc2VudCBpbiBEVC4gUmVzZXRzIGFyZQphbHJlYWR5IG9wdGlvbmFsLiBU aGlzIGtlZXBzIHRoZSBwcm9iZSBwYXRoIHVuaWZvcm0gYW5kIGhhbmRsZXMgYW55ClNvQy1zcGVj aWZpYyBjbG9jayBjb21iaW5hdGlvbnMgbmF0dXJhbGx5Lgo+PiA2LiBTaW5nbGUgb3V0cHV0IG9u bHk6IERDVWx0cmEgTGl0ZSBoYXMgb25lIGRpc3BsYXkgb3V0cHV0OyBwZXItCj4+IG91dHB1dAo+ PiAgwqDCoCBpbmRleCBsb2dpYyBpcyBzdGlsbCBpbiBwbGFjZSBidXQgZGlzcGxheV9jb3VudCBp cyBmaXhlZCBhdCAxLgo+Pgo+PiA3LiBSZWR1Y2VkIHJlZ2lzdGVyIHNwYWNlOiBtYXhfcmVnaXN0 ZXIgaXMgMHgyMDAwIHZzIERDODAwMCdzIDB4MjU0NC4KPj4KPj4gQWRkIHRoZSAibnV2b3Rvbixt YTM1ZDEtZGN1IiBjb21wYXRpYmxlIHN0cmluZyB0byB0aGUgT0YgbWF0Y2ggdGFibGUsCj4+IGV4 dGVuZCBLY29uZmlnIHRvIGFsbG93IGJ1aWxkaW5nIG9uIEFSQ0hfTUEzNSBwbGF0Zm9ybXMsIGFu ZCBleHBvc2UKPj4gdnNfZm9ybWF0c19ub195dXY0NDQgYXMgdGhlIGRlZmF1bHQgZm9ybWF0IHRh YmxlIGZvciBEQ1VsdHJhIExpdGUKPj4gKFlVVjQ0NCBibGVuZGluZyBpcyBhIERDODAwMC1vbmx5 IGZlYXR1cmUpLgo+Pgo+PiBBbGwgY2hhbmdlcyBoYXZlIGJlZW4gdGVzdGVkIG9uIE51dm90b24g TUEzNUQxIGhhcmR3YXJlIGFuZCBhcmUKPj4gZnVuY3Rpb25pbmcgY29ycmVjdGx5Lgo+Pgo+PiBT aWduZWQtb2ZmLWJ5OiBKb2V5IEx1IDxhMDk4NzIwMzA2OUBnbWFpbC5jb20+Cj4+IC0tLQo+PiAg wqBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoMKgIDIgKy0KPj4gIMKgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2JyaWRnZS5j wqDCoMKgwqDCoMKgIHzCoCAyOCArKy0tCj4+ICDCoGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNv bi92c19jcnRjLmPCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMyArLQo+PiAgwqBkcml2ZXJzL2dwdS9k cm0vdmVyaXNpbGljb24vdnNfZGMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTI5ICsrKysrKysr KysrKy0tLS0KPj4gLS0KPj4gIMKgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmjC oMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4gIMKgZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2RybS5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNiArKy0KPj4gIMKgZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuY8KgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiAr LQo+PiAgwqBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfaHdkYi5owqDCoMKgwqDCoMKg wqDCoCB8wqAgMjUgKysrKwo+PiAgwqAuLi4vZ3B1L2RybS92ZXJpc2lsaWNvbi92c19wcmltYXJ5 X3BsYW5lLmPCoMKgwqAgfMKgIDQzICsrKy0tLQo+PiAgwqAuLi4vZHJtL3ZlcmlzaWxpY29uL3Zz X3ByaW1hcnlfcGxhbmVfcmVncy5owqDCoCB8wqDCoCAyICsKPj4gIMKgMTAgZmlsZXMgY2hhbmdl ZCwgMTg3IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL0tjb25maWcKPj4gYi9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vS2NvbmZpZwo+PiBpbmRleCA3Y2NlODZlYzg2MDMuLjI5NWQyNDZlYjRiNCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL0tjb25maWcKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL0tjb25maWcKPj4gQEAgLTIsNyArMiw3IEBA Cj4+ICDCoGNvbmZpZyBEUk1fVkVSSVNJTElDT05fREMKPj4gIMKgCXRyaXN0YXRlICJEUk0gU3Vw cG9ydCBmb3IgVmVyaXNpbGljb24gREMtc2VyaWVzIGRpc3BsYXkKPj4gY29udHJvbGxlcnMiCj4+ ICDCoAlkZXBlbmRzIG9uIERSTSAmJiBDT01NT05fQ0xLCj4+IC0JZGVwZW5kcyBvbiBSSVNDViB8 fCBDT01QSUxFX1RFU1QKPj4gKwlkZXBlbmRzIG9uIFJJU0NWIHx8IEFSQ0hfTUEzNSB8fCBDT01Q SUxFX1RFU1QKPj4gIMKgCXNlbGVjdCBEUk1fQlJJREdFX0NPTk5FQ1RPUgo+PiAgwqAJc2VsZWN0 IERSTV9DTElFTlRfU0VMRUNUSU9OCj4+ICDCoAlzZWxlY3QgRFJNX0RJU1BMQVlfSEVMUEVSCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlLmMKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlLmMKPj4gaW5kZXggN2E5MzA0 OTM2OGRiLi4yMjVhZjMyMmRlMzIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92ZXJp c2lsaWNvbi92c19icmlkZ2UuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24v dnNfYnJpZGdlLmMKPj4gQEAgLTE2NCwxMyArMTY0LDE2IEBAIHN0YXRpYyB2b2lkIHZzX2JyaWRn ZV9lbmFibGVfY29tbW9uKHN0cnVjdAo+PiB2c19jcnRjICpjcnRjLAo+PiAgwqAJCQlWU0RDX0RJ U1BfUEFORUxfQ09ORklHX0NMS19FTik7Cj4+ICDCoAlyZWdtYXBfc2V0X2JpdHMoZGMtPnJlZ3Ms IFZTRENfRElTUF9QQU5FTF9DT05GSUcob3V0cHV0KSwKPj4gIMKgCQkJVlNEQ19ESVNQX1BBTkVM X0NPTkZJR19SVU5OSU5HKTsKPj4gLQlyZWdtYXBfY2xlYXJfYml0cyhkYy0+cmVncywgVlNEQ19E SVNQX1BBTkVMX1NUQVJULAo+PiAtCQkJwqAgVlNEQ19ESVNQX1BBTkVMX1NUQVJUX01VTFRJX0RJ U1BfU1lOQyk7Cj4+IC0JcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RDX0RJU1BfUEFORUxf U1RBUlQsCj4+IC0JCQlWU0RDX0RJU1BfUEFORUxfU1RBUlRfUlVOTklORyhvdXRwdXQpKTsKPj4g ICAKPj4gLQlyZWdtYXBfc2V0X2JpdHMoZGMtPnJlZ3MsIFZTRENfRElTUF9QQU5FTF9DT05GSUdf RVgoY3J0Yy0KPj4+IGlkKSwKPj4gLQkJCVZTRENfRElTUF9QQU5FTF9DT05GSUdfRVhfQ09NTUlU KTsKPj4gKwlpZiAoZGMtPmluZm8tPmhhc19jb25maWdfZXgpIHsKPj4gKwkJcmVnbWFwX2NsZWFy X2JpdHMoZGMtPnJlZ3MsIFZTRENfRElTUF9QQU5FTF9TVEFSVCwKPj4gKwkJCQkKPj4gVlNEQ19E SVNQX1BBTkVMX1NUQVJUX01VTFRJX0RJU1BfU1lOQyk7Cj4+ICsJCXJlZ21hcF9zZXRfYml0cyhk Yy0+cmVncywgVlNEQ19ESVNQX1BBTkVMX1NUQVJULAo+PiArCQkJCVZTRENfRElTUF9QQU5FTF9T VEFSVF9SVU5OSU5HKG91dHB1dAo+PiApKTsKPj4gKwo+PiArCQlyZWdtYXBfc2V0X2JpdHMoZGMt PnJlZ3MsCj4+IFZTRENfRElTUF9QQU5FTF9DT05GSUdfRVgoY3J0Yy0+aWQpLAo+PiArCQkJCVZT RENfRElTUF9QQU5FTF9DT05GSUdfRVhfQ09NTUlUKTsKPiBTaG91bGQgdGhlIGNvbW1pdCBvcGVy YXRpb24gaGFwcGVuIG9uIERDODAwMC9EQ1VsdHJhTGl0ZSB0b28/IChCeQo+IHdyaXRpbmcgdG8g RGNyZWdGcmFtZUJ1ZmZlckNvbmZpZzAuVkFMSUQpLgo+Cj4gTWFueSByZWdpc3RlcnMgd3JpdHRl biBoYXMgIk5vdGU6IFRoaXMgZmllbGQgaXMgZG91YmxlIGJ1ZmZlcmVkIiBpbiB0aGUKPiBEQ1Vs dHJhTGl0ZSBkb2N1bWVudGF0aW9uLgo+Cj4gSSBzdWdnZXN0IGNyZWF0ZSBhIHN0YXRpYyBmdW5j dGlvbiBmb3IgY29tbWl0IC0tIHdyaXRlIHRvIHRoZQo+IGNvcnJlc3BvbmRpbmcgY29tbWl0IGJp dCBvbiBEQzgyMDAsIGFuZCB3cml0ZSB0bwo+IERjcmVnRnJhbWVCdWZmZXJDb25maWcwLlZBTElE IG9uIERDODAwMC9EQ1VsdHJhTGl0ZS4KW2FdIFRoZXJlIGlzIG5vIGNvbW1pdCBvcGVyYXRpb24g Zm9yIERDVWx0cmEgTGl0ZS4KSSdsbCBub3QgYWRkIGEgYFZTRENfRkJfQ09ORklHX1ZBTElEYCBt YWNyby4gVkFMSUQgKEJJVCgzKSkgaXMgYQpoYXJkd2FyZS1tYW5hZ2VkIGRvdWJsZS1idWZmZXIg c3RhdHVzIGJpdDogaGFyZHdhcmUgd3JpdGVzIDE9UEVORElORwp3aGVuIGEgbmV3IHJlZ2lzdGVy IHNldCBpcyByZWFkeSBhbmQgY2xlYXJzIHRvIDA9V09SS0lORyBhZnRlciB0aGUKVkJMQU5LIGNv cHkuIFNvZnR3YXJlIG11c3QgbmV2ZXIgd3JpdGUgaXQsIGFuZCB0aGVyZSBpcyBubyBwb2xsaW5n IHVzZQpjYXNlIGluIHRoZSBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIG5hbWVkIGNvbnN0YW50LiBG b3Igbm9uLWNvbmZpZ19leAp2YXJpYW50cywgYHZzX3ByaW1hcnlfcGxhbmVfY29tbWl0KClgIHBl cmZvcm1zIG5vIGNvbW1pdCBvcGVyYXRpb24g4oCUCmBWU0RDX0ZCX0NPTkZJR19FTkFCTEVgIChP VVRQVVQsIEJJVCgwKSkgaXMgc2V0IGluCmB2c19jcnRjX2F0b21pY19lbmFibGUoKWAgYW5kIGBW U0RDX0ZCX0NPTkZJR19SRVNFVGAgKEJJVCg0KSkgaXMKc2V0L2NsZWFyZWQgaW4gdGhlIGJyaWRn ZSBlbmFibGUvZGlzYWJsZSBwYXRocy4KPj4gKwl9Cj4+ICDCoH0KPj4gICAKPj4gIMKgc3RhdGlj IHZvaWQgdnNfYnJpZGdlX2F0b21pY19lbmFibGVfZHBpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UsCj4+IEBAIC0yMjgsMTQgKzIzMSwxNyBAQCBzdGF0aWMgdm9pZCB2c19icmlkZ2VfYXRvbWlj X2Rpc2FibGUoc3RydWN0Cj4+IGRybV9icmlkZ2UgKmJyaWRnZSwKPj4gIMKgCXN0cnVjdCB2c19k YyAqZGMgPSBjcnRjLT5kYzsKPj4gIMKgCXVuc2lnbmVkIGludCBvdXRwdXQgPSBjcnRjLT5pZDsK Pj4gICAKPj4gLQlyZWdtYXBfY2xlYXJfYml0cyhkYy0+cmVncywgVlNEQ19ESVNQX1BBTkVMX1NU QVJULAo+PiAtCQkJwqAgVlNEQ19ESVNQX1BBTkVMX1NUQVJUX01VTFRJX0RJU1BfU1lOQyB8Cj4+ IC0JCQnCoCBWU0RDX0RJU1BfUEFORUxfU1RBUlRfUlVOTklORyhvdXRwdXQpKTsKPj4gIMKgCXJl Z21hcF9jbGVhcl9iaXRzKGRjLT5yZWdzLCBWU0RDX0RJU1BfUEFORUxfQ09ORklHKG91dHB1dCks Cj4+ICDCoAkJCcKgIFZTRENfRElTUF9QQU5FTF9DT05GSUdfUlVOTklORyk7Cj4gVGhpcyBiaXQg c2VlbXMgdG8gYmUgbm90IHByZXNlbnQgaW4gRENVbHRyYUxpdGUsIGluc3RlYWQgc2hvdWxkCj4g RGNyZWdGcmFtZUJ1ZmZlckNvbmZpZzAuUkVTRVQgYmUgY2xlYXIsIHdoaWNoIHdpbGwgc3RhbGwg dGhlIERQSQo+IHRpbWluZz8KSSdsbCBtb3ZlIGBWU0RDX0RJU1BfUEFORUxfQ09ORklHX1JVTk5J TkdgIGluc2lkZSB0aGUKYGhhc19jb25maWdfZXhgIGJsb2NrIGluIGJvdGggdGhlIGVuYWJsZSBh bmQgZGlzYWJsZSBwYXRocy4gRm9yCm5vbi1jb25maWdfZXggdmFyaWFudHMgKERDVWx0cmEgTGl0 ZSksIHRoZSBkaXNhYmxlIHBhdGggd2lsbCBpbnN0ZWFkCmNsZWFyIGBWU0RDX0ZCX0NPTkZJR19S RVNFVGAgdG8gc3RhbGwgRFBJIG91dHB1dC4KYFZTRENfRElTUF9QQU5FTF9DT05GSUdfUlVOTklO R2Agd2lsbCBvbmx5IGJlIHNldC9jbGVhcmVkIGZvcgpEQzgyMDAgKGhhc19jb25maWdfZXg9dHJ1 ZSkuCj4+ICAgCj4+IC0JcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RDX0RJU1BfUEFORUxf Q09ORklHX0VYKGNydGMtCj4+PiBpZCksCj4+IC0JCQlWU0RDX0RJU1BfUEFORUxfQ09ORklHX0VY X0NPTU1JVCk7Cj4+ICsJaWYgKGRjLT5pbmZvLT5oYXNfY29uZmlnX2V4KSB7Cj4+ICsJCXJlZ21h cF9jbGVhcl9iaXRzKGRjLT5yZWdzLCBWU0RDX0RJU1BfUEFORUxfU1RBUlQsCj4+ICsJCQkJCj4+ IFZTRENfRElTUF9QQU5FTF9TVEFSVF9NVUxUSV9ESVNQX1NZTkMgfAo+PiArCQkJCQo+PiBWU0RD X0RJU1BfUEFORUxfU1RBUlRfUlVOTklORyhvdXRwdXQpKTsKPj4gKwo+PiArCQlyZWdtYXBfc2V0 X2JpdHMoZGMtPnJlZ3MsCj4+IFZTRENfRElTUF9QQU5FTF9DT05GSUdfRVgoY3J0Yy0+aWQpLAo+ PiArCQkJCVZTRENfRElTUF9QQU5FTF9DT05GSUdfRVhfQ09NTUlUKTsKPj4gKwl9Cj4gRGl0dG8u CkNvdmVyZWQgYnkgdGhlIHNhbWUgZml4IGFib3ZlIOKAlCB0aGUgZWxzZSBicmFuY2ggaW4KdnNf YnJpZGdlX2F0b21pY19kaXNhYmxlKCkgd2lsbCBoYW5kbGUgdGhlIG5vbi1jb25maWdfZXggKERD VWx0cmEKTGl0ZSkgcGF0aCBieSBjbGVhcmluZyBSRVNFVC4KPj4gIMKgfQo+PiAgIAo+PiAgwqBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgdnNfZHBpX2JyaWRnZV9mdW5jcyA9 IHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmMK Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfY3J0Yy5jCj4+IGluZGV4IDkwODAz NDQzOThjYS4uMmYzZTZkNDFjNjU3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfY3J0Yy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92 c19jcnRjLmMKPj4gQEAgLTE4LDYgKzE4LDcgQEAKPj4gIMKgI2luY2x1ZGUgInZzX2RjLmgiCj4+ ICDCoCNpbmNsdWRlICJ2c19kY190b3BfcmVncy5oIgo+PiAgwqAjaW5jbHVkZSAidnNfZHJtLmgi Cj4+ICsjaW5jbHVkZSAidnNfaHdkYi5oIgo+PiAgwqAjaW5jbHVkZSAidnNfcGxhbmUuaCIKPj4g ICAKPj4gIMKgc3RhdGljIHZvaWQgdnNfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4+IEBAIC0xMzIsNyArMTMzLDExIEBAIHN0YXRpYyBpbnQgdnNfY3J0Y19lbmFi bGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0Ywo+PiAqY3J0YykKPj4gIMKgCXN0cnVjdCB2c19jcnRj ICp2Y3J0YyA9IGRybV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4+ICDCoAlzdHJ1Y3QgdnNfZGMg KmRjID0gdmNydGMtPmRjOwo+PiAgIAo+PiAtCXJlZ21hcF9zZXRfYml0cyhkYy0+cmVncywgVlNE Q19UT1BfSVJRX0VOLAo+PiBWU0RDX1RPUF9JUlFfVlNZTkModmNydGMtPmlkKSk7Cj4+ICsJaWYg KGRjLT5pbmZvLT5mYW1pbHkgPT0gVlNfRENfRkFNSUxZX0RDVUxUUkFfTElURSkKPj4gKwkJcmVn bWFwX3dyaXRlKGRjLT5yZWdzLCBWU0RDX0RJU1BfSVJRX0VOLCBCSVQoMCkpOwo+IFNob3VsZCBg QklUKDApYCBiZSBhc3NpZ25lZCB3aXRoIGEgbmFtZWQgbWFjcm8gaGVyZSwgbGlrZQo+IGBWU0RD X0RJU1BfSVJRX1ZTWU5DKDApYCA/Cj4KPiBJbiBhZGRpdGlvbiwgZXZlbiBpdCdzIGtub3duIHRo YXQgREM4MDAwL0RDVWx0cmFMaXRlIGhhcyBvbmx5IG9uZQo+IG91dHB1dCwgaGFyZGNvZGluZyAw IGhlcmUgaXNuJ3Qgc28gZ29vZC4gVGhlIGhlYWRlciBmaWxlIGF0IFsxXSAod2hpY2gKPiBpcyBm b3IgREM4MDAwKSBzaG93cyB0aGF0IHR3byBkaXNwbGF5IGludGVycnVwdHMgYW5kIG1vcmUgb3Ro ZXIKPiBpbnRlcnJ1cHRzIGFyZSBwcmVzZW50Lgo+Cj4gQlRXIEkgZG9uJ3QgbGlrZSB0aGUgaWRl YSBvZiBzZXR0aW5nIGEgImZhbWlseSIgKGJlY2F1c2UgREM4MDAwIGJlaGF2ZQo+IG5lYXJseSB0 aGUgc2FtZSB3aXRoIERDVWx0cmFMaXRlKSwgbWF5YmUgdXNlIGAuaXJxX3JlZyA9IFZTRENfRElT UF9JUlFgCj4gKG9yIGEgYm9vbCB2YXJpYWJsZSBuYW1lZCBgdXNlc190b3BfaXJxYCkgaXMgYmV0 dGVyPwo+Cj4gWzFdCj4gaHR0cHM6Ly9naXRodWIuY29tL21pbGt2LW1lZ3Jlei9yb2Nrb3MtdS1i b290L2Jsb2IvYzkyMjFjZjJmYTc3ZDM5YzBiMjQxYWI0YjAzMGM3MDhlN2ViZTI3OS9kcml2ZXJz L3ZpZGVvL2Vzd2luL2Vzd2luX2RjX3JlZy5oI0wyNzcxCkknbGwgYWRkcmVzcyBhbGwgdGhyZWUg aXNzdWVzIGluIHYyOgoxLiBBZGQgYFZTRENfRElTUF9JUlFfVlNZTkMobilgIG1hY3JvIChCSVQo bikpIHRvIHZzX2NydGNfcmVncy5oLgoyLiBVc2UgYFZTRENfRElTUF9JUlFfVlNZTkModmNydGMt PmlkKWAgd2l0aAogwqAgwqBgcmVnbWFwX3NldF9iaXRzYC9gcmVnbWFwX2NsZWFyX2JpdHNgIGlu c3RlYWQgb2YgaGFyZGNvZGluZyAwIGFuZAogwqAgwqB1c2luZyBgcmVnbWFwX3dyaXRlYCAod2hp Y2ggd291bGQgY2xvYmJlciBvdGhlciBJUlEgYml0cykuCjMuIEFkZCBgdXNlc190b3BfaXJxYCBi b29sIHRvIGBzdHJ1Y3QgdnNfY2hpcF9pZGVudGl0eWAgaW4gdnNfaHdkYi5oLgogwqAgwqBEQzgy MDAgZW50cmllcyB3aWxsIGhhdmUgYHVzZXNfdG9wX2lycSA9IHRydWVgOyB0aGUgRENVbHRyYSBM aXRlCiDCoCDCoGVudHJ5IChtb2RlbD0weDAsIHJldj0weDU1NjApIHdpbGwgaGF2ZSBgdXNlc190 b3BfaXJxID0gZmFsc2VgLgo+PiArCWVsc2UKPj4gKwkJcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdz LCBWU0RDX1RPUF9JUlFfRU4sCj4+ICsJCQkJVlNEQ19UT1BfSVJRX1ZTWU5DKHZjcnRjLT5pZCkp Owo+PiAgIAo+PiAgwqAJcmV0dXJuIDA7Cj4+ICDCoH0KPj4gQEAgLTE0Miw3ICsxNDcsMTEgQEAg c3RhdGljIHZvaWQgdnNfY3J0Y19kaXNhYmxlX3ZibGFuayhzdHJ1Y3QKPj4gZHJtX2NydGMgKmNy dGMpCj4+ICDCoAlzdHJ1Y3QgdnNfY3J0YyAqdmNydGMgPSBkcm1fY3J0Y190b192c19jcnRjKGNy dGMpOwo+PiAgwqAJc3RydWN0IHZzX2RjICpkYyA9IHZjcnRjLT5kYzsKPj4gICAKPj4gLQlyZWdt YXBfY2xlYXJfYml0cyhkYy0+cmVncywgVlNEQ19UT1BfSVJRX0VOLAo+PiBWU0RDX1RPUF9JUlFf VlNZTkModmNydGMtPmlkKSk7Cj4+ICsJaWYgKGRjLT5pbmZvLT5mYW1pbHkgPT0gVlNfRENfRkFN SUxZX0RDVUxUUkFfTElURSkKPj4gKwkJcmVnbWFwX3dyaXRlKGRjLT5yZWdzLCBWU0RDX0RJU1Bf SVJRX0VOLCAwKTsKPj4gKwllbHNlCj4+ICsJCXJlZ21hcF9jbGVhcl9iaXRzKGRjLT5yZWdzLCBW U0RDX1RPUF9JUlFfRU4sCj4+ICsJCQkJwqAgVlNEQ19UT1BfSVJRX1ZTWU5DKHZjcnRjLT5pZCkp Owo+PiAgwqB9Cj4+ICAgCj4+ICDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mg dnNfY3J0Y19mdW5jcyA9IHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19kYy5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmMKPj4g aW5kZXggZGFkOTk2N2JjMTBiLi44MmE2YTI2ZjZkODEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJp c2lsaWNvbi92c19kYy5jCj4+IEBAIC05LDIxICs5LDQ1IEBACj4+ICDCoCNpbmNsdWRlIDxsaW51 eC9vZl9ncmFwaC5oPgo+PiAgIAo+PiAgwqAjaW5jbHVkZSAidnNfY3J0Yy5oIgo+PiArI2luY2x1 ZGUgInZzX2NydGNfcmVncy5oIgo+PiAgwqAjaW5jbHVkZSAidnNfZGMuaCIKPj4gIMKgI2luY2x1 ZGUgInZzX2RjX3RvcF9yZWdzLmgiCj4+ICDCoCNpbmNsdWRlICJ2c19kcm0uaCIKPj4gIMKgI2lu Y2x1ZGUgInZzX2h3ZGIuaCIKPj4gICAKPj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2Nv bmZpZyB2c19kY19yZWdtYXBfY2ZnID0gewo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBf Y29uZmlnIHZzX2RjODAwMF9yZWdtYXBfY2ZnID0gewo+IEFzIHdoYXQgSSBzYWlkLCB0aGUgY3Vy cmVudGx5IHN1cHBvcnRlZCB0aGluZyBpcyBEQzgyMDAsIG5vdCBEQzgwMDAuCkknbGwga2VlcCB0 aGUgbmFtZSBgdnNfZGNfcmVnbWFwX2NmZ2Ag4oCUIHRoZSBvcmlnaW5hbCBuYW1lIGZyb20KdXBz dHJlYW0uIEEgc2VwYXJhdGUgRENVbHRyYSBMaXRlIHJlZ21hcCBjb25maWcgaXMgbm90IG5lZWRl ZDsgdGhlCmhhcmR3YXJlIHNpbXBseSBkb2VzIG5vdCBpbXBsZW1lbnQgcmVnaXN0ZXJzIGFib3Zl IDB4MjAwMCwgYW5kIGEgcmVnbWFwCndpbmRvdyB1cCB0byAweDI1NDQgaXMgaGFybWxlc3MgZm9y IHRoYXQgdmFyaWFudC4KPj4gIMKgCS5yZWdfYml0cyA9IDMyLAo+PiAgwqAJLnZhbF9iaXRzID0g MzIsCj4+ICDCoAkucmVnX3N0cmlkZSA9IHNpemVvZih1MzIpLAo+PiAtCS8qIFZTRENfT1ZMX0NP TkZJR19FWCgxKSAqLwo+PiAgwqAJLm1heF9yZWdpc3RlciA9IDB4MjU0NCwKPj4gIMKgfTsKPj4g ICAKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyB2c19kY3VsdHJhX2xpdGVf cmVnbWFwX2NmZyA9IHsKPj4gKwkucmVnX2JpdHMgPSAzMiwKPj4gKwkudmFsX2JpdHMgPSAzMiwK Pj4gKwkucmVnX3N0cmlkZSA9IHNpemVvZih1MzIpLAo+PiArCS5tYXhfcmVnaXN0ZXIgPSAweDIw MDAsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZzX2RjX2luZm8gdnNfZGM4 MDAwX2luZm8gPSB7Cj4+ICsJLmZhbWlseSA9IFZTX0RDX0ZBTUlMWV9EQzgwMDAsCj4+ICsJLmhh c19jaGlwX2lkID0gdHJ1ZSwKPj4gKwkuaGFzX2NvbmZpZ19leCA9IHRydWUsCj4+ICsJLnJlZ21h cF9jZmcgPSAmdnNfZGM4MDAwX3JlZ21hcF9jZmcsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHZzX2RjX2luZm8gdnNfZGN1bHRyYV9saXRlX2luZm8gPSB7Cj4+ICsJLmZhbWls eSA9IFZTX0RDX0ZBTUlMWV9EQ1VMVFJBX0xJVEUsCj4+ICsJLmRpc3BsYXlfY291bnQgPSAxLAo+ PiArCS5oYXNfY2hpcF9pZCA9IGZhbHNlLAo+PiArCS5oYXNfY29uZmlnX2V4ID0gZmFsc2UsCj4+ ICsJLnJlZ21hcF9jZmcgPSAmdnNfZGN1bHRyYV9saXRlX3JlZ21hcF9jZmcsCj4+ICsJLmZvcm1h dHMgPSAmdnNfZm9ybWF0c19ub195dXY0NDQsCj4+ICt9Owo+PiArCj4+ICDCoHN0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZzX2RjX2RyaXZlcl9kdF9tYXRjaFtdID0gewo+PiAtCXsg LmNvbXBhdGlibGUgPSAidmVyaXNpbGljb24sZGMiIH0sCj4+ICsJeyAuY29tcGF0aWJsZSA9ICJ2 ZXJpc2lsaWNvbixkYyIsIC5kYXRhID0gJnZzX2RjODAwMF9pbmZvIH0sCj4gInZlcmlzaWxpY29u LGRjIiBpcyBleHBlY3RlZCBmb3IgREM4MDAwIGFuZCA4MjAwLCBhbmQgYmVjYXVzZSBvZiBtb2Rl bCwKPiByZXYgYW5kIGN1c3RvbWVyX2lkIHZhbHVlcyBhcmUgYWxsIHByZXNlbnQgZm9yIERDVWx0 cmFMaXRlLCB0aGUgc3BlY2lhbAo+IGRhdGEgbWlnaHQgYmUgZHJvcHBlZD8KSSdsbCBkcm9wIGAu ZGF0YWAgZnJvbSBib3RoIGBvZl9kZXZpY2VfaWRgIGVudHJpZXMgZW50aXJlbHkuCmBoYXNfY29u ZmlnX2V4YCBhbmQgYHVzZXNfdG9wX2lycWAgd2lsbCBiZSBhZGRlZCBhcyBmaWVsZHMgdG8KYHN0 cnVjdCB2c19jaGlwX2lkZW50aXR5YCBpbiB2c19od2RiLmgsIGFuZCBwb3B1bGF0ZWQgZm9yIGVh Y2ggZW50cnkKaW4gYHZzX2NoaXBfaWRlbnRpdGllc1tdYCBpbiB2c19od2RiLmMuIGB2c19maWxs X2NoaXBfaWRlbnRpdHkoKWAgaXMKY2FsbGVkIHVuY29uZGl0aW9uYWxseSBmb3IgYWxsIHZhcmlh bnRzIOKAlCBjaGlwLUlEIHJlZ2lzdGVycyBhcmUgcHJlc2VudApvbiBEQ1VsdHJhIExpdGUgdG9v LiBUaGVyZSBpcyBubyBuZWVkIGZvciBhIHNlcGFyYXRlIGB2c19kY19pbmZvYApwbGF0Zm9ybSBk YXRhIHN0cnVjdHVyZS4KPj4gKwl7IC5jb21wYXRpYmxlID0gIm51dm90b24sbWEzNWQxLWRjdSIs IC5kYXRhID0KPj4gJnZzX2RjdWx0cmFfbGl0ZV9pbmZvIH0sCj4+ICDCoAl7fSwKPj4gIMKgfTsK Pj4gIMKgTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdnNfZGNfZHJpdmVyX2R0X21hdGNoKTsKPj4g QEAgLTMzLDYgKzU3LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB2c19kY19pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkCj4+ICpwcml2YXRlKQo+PiAgwqAJc3RydWN0IHZzX2RjICpkYyA9IHByaXZh dGU7Cj4+ICDCoAl1MzIgaXJxczsKPj4gICAKPj4gKwlpZiAoZGMtPmluZm8tPmZhbWlseSA9PSBW U19EQ19GQU1JTFlfRENVTFRSQV9MSVRFKSB7Cj4+ICsJCXJlZ21hcF9yZWFkKGRjLT5yZWdzLCBW U0RDX0RJU1BfSVJRX1NUQSwgJmlycXMpOwo+IE1heWJlIGFkZCBhbiBpdGVtIGluIHRoZSBod2Ri IGZvciB0aGUgSVJRIHJlZ2lzdGVyPwpJJ2xsIGFkZCBgdXNlc190b3BfaXJxYCBhcyBhIGJvb2wg ZmllbGQgdG8gYHN0cnVjdCB2c19jaGlwX2lkZW50aXR5YAppbiB2c19od2RiLmggaW5zdGVhZC4g VGhlIElSUSBoYW5kbGVyIHdpbGwgYnJhbmNoIG9uCmBkYy0+aWRlbnRpdHkudXNlc190b3BfaXJx YCB0byByZWFkIGVpdGhlciBgVlNEQ19UT1BfSVJRX0FDS2Agb3IKYFZTRENfRElTUF9JUlFfU1RB YC4gTm8gcmVnaXN0ZXIgYWRkcmVzcyBuZWVkcyB0byBiZSBzdG9yZWQgaW4gdGhlCmh3ZGIgc3Ry dWN0Lgo+PiArCQlpZiAoaXJxcyAmIEJJVCgwKSkKPj4gKwkJCXZzX2RybV9oYW5kbGVfaXJxKGRj LAo+PiBWU0RDX1RPUF9JUlFfVlNZTkMoMCkpOwo+PiArCQlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4g Tm93IEkgdGhpbmsgZm9yIERDODIwMCwgdGhlIGlycSBudW1iZXIgZGVjb2Rpbmcgc2hvdWxkIGJl IGRvbmUgaGVyZQo+IHRvby4KSSdsbCB1bmlmeSB0aGUgSVJRIGhhbmRsZXI6IGJvdGggcGF0aHMg d2lsbCByZWFkIHRoZWlyCnJlc3BlY3RpdmUgSVJRIHN0YXR1cyByZWdpc3RlciBhbmQgcGFzcyB0 aGUgcmF3IGBpcnFzYCB2YWx1ZSB0bwpgdnNfZHJtX2hhbmRsZV9pcnEoKWAuIFNpbmNlIGBWU0RD X1RPUF9JUlFfVlNZTkMobilgIGFuZApgVlNEQ19ESVNQX0lSUV9WU1lOQyhuKWAgYXJlIGJvdGgg YEJJVChuKWAsIHRoZSBiaXQgcG9zaXRpb25zIGFyZQppZGVudGljYWwgYW5kIGB2c19kcm1faGFu ZGxlX2lycSgpYCBoYW5kbGVzIGJvdGggd2l0aG91dCBjaGFuZ2UuCj4+ICsJfQo+PiArCj4+ICDC oAlyZWdtYXBfcmVhZChkYy0+cmVncywgVlNEQ19UT1BfSVJRX0FDSywgJmlycXMpOwo+PiAgIAo+ PiAgwqAJdnNfZHJtX2hhbmRsZV9pcnEoZGMsIGlycXMpOwo+PiBAQCAtNDMsNiArNzQsNyBAQCBz dGF0aWMgaXJxcmV0dXJuX3QgdnNfZGNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZAo+PiAqcHJp dmF0ZSkKPj4gIMKgc3RhdGljIGludCB2c19kY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+PiAgwqB7Cj4+ICDCoAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ PiArCWNvbnN0IHN0cnVjdCB2c19kY19pbmZvICppbmZvOwo+PiAgwqAJc3RydWN0IHZzX2RjICpk YzsKPj4gIMKgCXZvaWQgX19pb21lbSAqcmVnczsKPj4gIMKgCXVuc2lnbmVkIGludCBwb3J0X2Nv dW50LCBpOwo+PiBAQCAtNTUsNiArODcsMTAgQEAgc3RhdGljIGludCB2c19kY19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlCj4+ICpwZGV2KQo+PiAgwqAJCXJldHVybiAtRU5PREVWOwo+PiAg wqAJfQo+PiAgIAo+PiArCWluZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKPj4g KwlpZiAoIWluZm8pCj4+ICsJCXJldHVybiAtRU5PREVWOwo+PiArCj4+ICDCoAlwb3J0X2NvdW50 ID0gb2ZfZ3JhcGhfZ2V0X3BvcnRfY291bnQoZGV2LT5vZl9ub2RlKTsKPj4gIMKgCWlmICghcG9y dF9jb3VudCkgewo+PiAgwqAJCWRldl9lcnIoZGV2LCAiY2FuJ3QgZmluZCBEQyBkb3duc3RyZWFt IHBvcnRzXG4iKTsKPj4gQEAgLTc1LDE1ICsxMTEsMzEgQEAgc3RhdGljIGludCB2c19kY19wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCj4+ICpwZGV2KQo+PiAgwqAJaWYgKCFkYykKPj4gIMKg CQlyZXR1cm4gLUVOT01FTTsKPj4gICAKPj4gLQlkYy0+cnN0c1swXS5pZCA9ICJjb3JlIjsKPj4g LQlkYy0+cnN0c1sxXS5pZCA9ICJheGkiOwo+PiAtCWRjLT5yc3RzWzJdLmlkID0gImFoYiI7Cj4+ ICsJZGMtPmluZm8gPSBpbmZvOwo+PiAgIAo+PiAtCXJldCA9IGRldm1fcmVzZXRfY29udHJvbF9i dWxrX2dldF9vcHRpb25hbF9zaGFyZWQoZGV2LAo+PiBWU0RDX1JFU0VUX0NPVU5ULAo+PiAtCQkJ CQkJCcKgIGRjLT5yc3RzKTsKPj4gLQlpZiAocmV0KSB7Cj4+IC0JCWRldl9lcnIoZGV2LCAiY2Fu J3QgZ2V0IHJlc2V0IGxpbmVzXG4iKTsKPj4gLQkJcmV0dXJuIHJldDsKPj4gKwlpZiAoaW5mby0+ ZmFtaWx5ID09IFZTX0RDX0ZBTUlMWV9EQzgwMDApIHsKPj4gKwkJZGMtPnJzdHNbMF0uaWQgPSAi Y29yZSI7Cj4+ICsJCWRjLT5yc3RzWzFdLmlkID0gImF4aSI7Cj4+ICsJCWRjLT5yc3RzWzJdLmlk ID0gImFoYiI7Cj4+ICsKPj4gKwkJcmV0ID0KPj4gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0 X29wdGlvbmFsX3NoYXJlZChkZXYsCj4+ICsJCQkJVlNEQ19SRVNFVF9DT1VOVCwgZGMtPnJzdHMp Owo+PiArCQlpZiAocmV0KSB7Cj4+ICsJCQlkZXZfZXJyKGRldiwgImNhbid0IGdldCByZXNldCBs aW5lc1xuIik7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICsKPj4gKwkJZGMtPmF4aV9j bGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYsICJheGkiKTsKPj4gKwkJaWYgKElTX0VSUihk Yy0+YXhpX2NsaykpIHsKPj4gKwkJCWRldl9lcnIoZGV2LCAiY2FuJ3QgZ2V0IGF4aSBjbG9ja1xu Iik7Cj4+ICsJCQlyZXR1cm4gUFRSX0VSUihkYy0+YXhpX2Nsayk7Cj4+ICsJCX0KPj4gKwo+PiAr CQlkYy0+YWhiX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKGRldiwgImFoYiIpOwo+PiArCQlp ZiAoSVNfRVJSKGRjLT5haGJfY2xrKSkgewo+PiArCQkJZGV2X2VycihkZXYsICJjYW4ndCBnZXQg YWhiIGNsb2NrXG4iKTsKPj4gKwkJCXJldHVybiBQVFJfRVJSKGRjLT5haGJfY2xrKTsKPj4gKwkJ fQo+IFBsZWFzZSBtYWtlIHRoZXNlIGNsb2NrcyBvcHRpb25hbCwgaW5zdGVhZCBvZiB3cmFwIHRo ZW0gaW4gYSAiZmFtaWx5Cj4gZGV0ZWN0aW9uIi4gVGhlIHJlc2V0cyBhcmUgYWxyZWFkeSBvcHRp b25hbCwgc2VlIGFib3ZlLgpJJ2xsIHJlbW92ZSB0aGUgZmFtaWx5LWdhdGVkIGJsb2NrIGVudGly ZWx5LiBSZXNldHMgd2lsbCBiZQphY3F1aXJlZCB1bmNvbmRpdGlvbmFsbHkgKHRoZXkgYXJlIG9w dGlvbmFsLCBzbyBhYnNlbnQgb25lcyBhcmUKc2tpcHBlZCkuIGF4aSBhbmQgYWhiIGNsb2NrcyB3 aWxsIHVzZSBgZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoKWAKc28gdGhleSBhcmUgc2ls ZW50bHkgc2tpcHBlZCB3aGVuIG5vdCBwcmVzZW50IGluIERULiBUaGUgcHJvYmUgcGF0aAp3aWxs IGJlIHVuaWZvcm0gZm9yIGFsbCB2YXJpYW50cy4KPj4gIMKgCX0KPj4gICAKPj4gIMKgCWRjLT5j b3JlX2NsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKGRldiwgImNvcmUiKTsKPj4gQEAgLTkyLDI4 ICsxNDQsMTggQEAgc3RhdGljIGludCB2c19kY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl Cj4+ICpwZGV2KQo+PiAgwqAJCXJldHVybiBQVFJfRVJSKGRjLT5jb3JlX2Nsayk7Cj4+ICDCoAl9 Cj4+ICAgCj4+IC0JZGMtPmF4aV9jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYsICJheGki KTsKPj4gLQlpZiAoSVNfRVJSKGRjLT5heGlfY2xrKSkgewo+PiAtCQlkZXZfZXJyKGRldiwgImNh bid0IGdldCBheGkgY2xvY2tcbiIpOwo+PiAtCQlyZXR1cm4gUFRSX0VSUihkYy0+YXhpX2Nsayk7 Cj4+IC0JfQo+PiAtCj4+IC0JZGMtPmFoYl9jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYs ICJhaGIiKTsKPj4gLQlpZiAoSVNfRVJSKGRjLT5haGJfY2xrKSkgewo+PiAtCQlkZXZfZXJyKGRl diwgImNhbid0IGdldCBhaGIgY2xvY2tcbiIpOwo+PiAtCQlyZXR1cm4gUFRSX0VSUihkYy0+YWhi X2Nsayk7Cj4+IC0JfQo+PiAtCj4+ICDCoAlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDAp Owo+PiAgwqAJaWYgKGlycSA8IDApIHsKPj4gIMKgCQlkZXZfZXJyKGRldiwgImNhbid0IGdldCBp cnFcbiIpOwo+PiAgwqAJCXJldHVybiBpcnE7Cj4+ICDCoAl9Cj4+ICAgCj4+IC0JcmV0ID0gcmVz ZXRfY29udHJvbF9idWxrX2RlYXNzZXJ0KFZTRENfUkVTRVRfQ09VTlQsIGRjLQo+Pj4gcnN0cyk7 Cj4+IC0JaWYgKHJldCkgewo+PiAtCQlkZXZfZXJyKGRldiwgImNhbid0IGRlYXNzZXJ0IHJlc2V0 IGxpbmVzXG4iKTsKPj4gLQkJcmV0dXJuIHJldDsKPj4gKwlpZiAoaW5mby0+ZmFtaWx5ID09IFZT X0RDX0ZBTUlMWV9EQzgwMDApIHsKPj4gKwkJcmV0ID0gcmVzZXRfY29udHJvbF9idWxrX2RlYXNz ZXJ0KFZTRENfUkVTRVRfQ09VTlQsCj4+IGRjLT5yc3RzKTsKPj4gKwkJaWYgKHJldCkgewo+PiAr CQkJZGV2X2VycihkZXYsICJjYW4ndCBkZWFzc2VydCByZXNldAo+PiBsaW5lc1xuIik7Cj4+ICsJ CQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICDCoAl9Cj4+ICAgCj4+ICDCoAlyZWdzID0gZGV2bV9w bGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+PiBAQCAtMTIzLDIzICsxNjUsMzAg QEAgc3RhdGljIGludCB2c19kY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCj4+ICpwZGV2 KQo+PiAgwqAJCWdvdG8gZXJyX3JzdF9hc3NlcnQ7Cj4+ICDCoAl9Cj4+ICAgCj4+IC0JZGMtPnJl Z3MgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCByZWdzLAo+PiAmdnNfZGNfcmVnbWFwX2Nm Zyk7Cj4+ICsJZGMtPnJlZ3MgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCByZWdzLCBpbmZv LQo+Pj4gcmVnbWFwX2NmZyk7Cj4+ICDCoAlpZiAoSVNfRVJSKGRjLT5yZWdzKSkgewo+PiAgwqAJ CXJldCA9IFBUUl9FUlIoZGMtPnJlZ3MpOwo+PiAgwqAJCWdvdG8gZXJyX3JzdF9hc3NlcnQ7Cj4+ ICDCoAl9Cj4+ICAgCj4+IC0JcmV0ID0gdnNfZmlsbF9jaGlwX2lkZW50aXR5KGRjLT5yZWdzLCAm ZGMtPmlkZW50aXR5KTsKPj4gLQlpZiAocmV0KQo+PiAtCQlnb3RvIGVycl9yc3RfYXNzZXJ0Owo+ PiArCWlmIChpbmZvLT5oYXNfY2hpcF9pZCkgewo+PiArCQlyZXQgPSB2c19maWxsX2NoaXBfaWRl bnRpdHkoZGMtPnJlZ3MsICZkYy0KPj4+IGlkZW50aXR5KTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJ CWdvdG8gZXJyX3JzdF9hc3NlcnQ7Cj4+ICAgCj4+IC0JZGV2X2luZm8oZGV2LCAiRm91bmQgREMl eCByZXYgJXggY3VzdG9tZXIgJXhcbiIsIGRjLQo+Pj4gaWRlbnRpdHkubW9kZWwsCj4+IC0JCSBk Yy0+aWRlbnRpdHkucmV2aXNpb24sIGRjLT5pZGVudGl0eS5jdXN0b21lcl9pZCk7Cj4+ICsJCWRl dl9pbmZvKGRldiwgIkZvdW5kIERDJXggcmV2ICV4IGN1c3RvbWVyICV4XG4iLAo+PiArCQkJIGRj LT5pZGVudGl0eS5tb2RlbCwgZGMtPmlkZW50aXR5LnJldmlzaW9uLAo+PiArCQkJIGRjLT5pZGVu dGl0eS5jdXN0b21lcl9pZCk7Cj4+ICAgCj4+IC0JaWYgKHBvcnRfY291bnQgPiBkYy0+aWRlbnRp dHkuZGlzcGxheV9jb3VudCkgewo+PiAtCQlkZXZfZXJyKGRldiwgInRvbyBtYW55IGRvd25zdHJl YW0gcG9ydHMgdGhhbiBIVwo+PiBjYXBhYmlsaXR5XG4iKTsKPj4gLQkJcmV0ID0gLUVJTlZBTDsK Pj4gLQkJZ290byBlcnJfcnN0X2Fzc2VydDsKPj4gKwkJaWYgKHBvcnRfY291bnQgPiBkYy0+aWRl bnRpdHkuZGlzcGxheV9jb3VudCkgewo+PiArCQkJZGV2X2VycihkZXYsICJ0b28gbWFueSBkb3du c3RyZWFtIHBvcnRzIHRoYW4KPj4gSFcgY2FwYWJpbGl0eVxuIik7Cj4+ICsJCQlyZXQgPSAtRUlO VkFMOwo+PiArCQkJZ290byBlcnJfcnN0X2Fzc2VydDsKPj4gKwkJfQo+PiArCX0gZWxzZSB7Cj4+ ICsJCS8qIEZpbGwgaWRlbnRpdHkgZnJvbSBwbGF0Zm9ybSBkYXRhICovCj4+ICsJCWRjLT5pZGVu dGl0eS5kaXNwbGF5X2NvdW50ID0gaW5mby0+ZGlzcGxheV9jb3VudDsKPj4gKwkJZGMtPmlkZW50 aXR5LmZvcm1hdHMgPSBpbmZvLT5mb3JtYXRzOwo+PiAgwqAJfQo+PiAgIAo+PiAgwqAJZm9yIChp ID0gMDsgaSA8IGRjLT5pZGVudGl0eS5kaXNwbGF5X2NvdW50OyBpKyspIHsKPj4gQEAgLTE2OCw3 ICsyMTcsOCBAQCBzdGF0aWMgaW50IHZzX2RjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UK Pj4gKnBkZXYpCj4+ICDCoAlyZXR1cm4gMDsKPj4gICAKPj4gIMKgZXJyX3JzdF9hc3NlcnQ6Cj4+ IC0JcmVzZXRfY29udHJvbF9idWxrX2Fzc2VydChWU0RDX1JFU0VUX0NPVU5ULCBkYy0+cnN0cyk7 Cj4+ICsJaWYgKGluZm8tPmZhbWlseSA9PSBWU19EQ19GQU1JTFlfREM4MDAwKQo+PiArCQlyZXNl dF9jb250cm9sX2J1bGtfYXNzZXJ0KFZTRENfUkVTRVRfQ09VTlQsIGRjLQo+Pj4gcnN0cyk7Cj4+ ICDCoAlyZXR1cm4gcmV0Owo+PiAgwqB9Cj4+ICAgCj4+IEBAIC0xODAsNyArMjMwLDggQEAgc3Rh dGljIHZvaWQgdnNfZGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UKPj4gKnBkZXYpCj4+ ICAgCj4+ICDCoAlkZXZfc2V0X2RydmRhdGEoJnBkZXYtPmRldiwgTlVMTCk7Cj4+ICAgCj4+IC0J cmVzZXRfY29udHJvbF9idWxrX2Fzc2VydChWU0RDX1JFU0VUX0NPVU5ULCBkYy0+cnN0cyk7Cj4+ ICsJaWYgKGRjLT5pbmZvLT5mYW1pbHkgPT0gVlNfRENfRkFNSUxZX0RDODAwMCkKPj4gKwkJcmVz ZXRfY29udHJvbF9idWxrX2Fzc2VydChWU0RDX1JFU0VUX0NPVU5ULCBkYy0KPj4+IHJzdHMpOwo+ PiAgwqB9Cj4+ICAgCj4+ICDCoHN0YXRpYyB2b2lkIHZzX2RjX3NodXRkb3duKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNp bGljb24vdnNfZGMuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kYy5oCj4+ IGluZGV4IGVkMTAxNmYxODc1OC4uZjA2MTM1MTlhZjM3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfZGMuaAo+PiBAQCAtMzEsNiArMzEsNyBAQCBzdHJ1Y3QgdnNfZGMgewo+PiAg wqAJc3RydWN0IGNsayAqcGl4X2Nsa1tWU0RDX01BWF9PVVRQVVRTXTsKPj4gIMKgCXN0cnVjdCBy ZXNldF9jb250cm9sX2J1bGtfZGF0YSByc3RzW1ZTRENfUkVTRVRfQ09VTlRdOwo+PiAgIAo+PiAr CWNvbnN0IHN0cnVjdCB2c19kY19pbmZvICppbmZvOwo+PiAgwqAJc3RydWN0IHZzX2RybV9kZXYg KmRybV9kZXY7Cj4+ICDCoAlzdHJ1Y3QgdnNfY2hpcF9pZGVudGl0eSBpZGVudGl0eTsKPj4gIMKg fTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uYwo+ PiBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uYwo+PiBpbmRleCBmZDI1OWQ1 M2Y0OWYuLmZmMGZjNjY3MzAwNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2RybS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19k cm0uYwo+PiBAQCAtMjcsNiArMjcsNyBAQAo+PiAgwqAjaW5jbHVkZSAidnNfZGMuaCIKPj4gIMKg I2luY2x1ZGUgInZzX2RjX3RvcF9yZWdzLmgiCj4+ICDCoCNpbmNsdWRlICJ2c19kcm0uaCIKPj4g KyNpbmNsdWRlICJ2c19od2RiLmgiCj4+ICAgCj4+ICDCoCNkZWZpbmUgRFJJVkVSX05BTUUJInZl cmlzaWxpY29uIgo+PiAgwqAjZGVmaW5lIERSSVZFUl9ERVNDCSJWZXJpc2lsaWNvbiBEQy1zZXJp ZXMgZGlzcGxheSBjb250cm9sbGVyCj4+IGRyaXZlciIKPj4gQEAgLTcyLDEyICs3MywxOSBAQCBz dGF0aWMgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MKPj4gdnNfbW9kZV9jb25m aWdfaGVscGVyX2Z1bmNzID0gewo+PiAgwqAJLmF0b21pY19jb21taXRfdGFpbCA9IGRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF90YWlsLAo+PiAgwqB9Owo+PiAgIAo+PiAtc3RhdGljIHZvaWQgdnNf bW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+PiArc3RhdGljIHZvaWQg dnNfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgdnNfZGMK Pj4gKmRjKQo+PiAgwqB7Cj4+ICDCoAlkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDA7Cj4+ ICDCoAlkcm0tPm1vZGVfY29uZmlnLm1pbl9oZWlnaHQgPSAwOwo+PiAtCWRybS0+bW9kZV9jb25m aWcubWF4X3dpZHRoID0gODE5MjsKPj4gLQlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSA4 MTkyOwo+PiArCj4+ICsJaWYgKGRjLT5pbmZvLT5mYW1pbHkgPT0gVlNfRENfRkFNSUxZX0RDVUxU UkFfTElURSkgewo+PiArCQlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7Cj4+ICsJ CWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDEwODA7Cj4gU3VyZWx5IG9ubHkgbWF4IHdp ZHRoIDE5MjAgYW5kIG1heCBoZWlnaHQgMTA4MD8gQ2FuIGEgZGlzcGxheSBvZgo+IDEwODB4MTky MCAoZS5nLiBhIHBvcnRyYWl0IERTSSBwYW5lbCBiZWhpbmQgYSBSR0IyRFNJIGJyaWRnZSkgYmUK PiBzdXBwb3J0ZWQ/IENhbiBhIDIxNzB4NjAgZGlzcGxheSAoTWFjQm9vayBUb3VjaCBCYXIgcGFu ZWwsIGFsc28gYSBEU0kKPiBwYW5lbCkgYmUgc3VwcG9ydGVkPyBCb3RoIGRpc3BsYXlzIGhlcmUg d2lsbCBoYXZlIG5vIGhpZ2hlciBwaXhlbCBjbG9jawo+IHRoYW4gMTA4MHAgaW4gdGhlIHNhbWUg cmVmcmVzaCByYXRlLCBhbHRob3VnaCB0aGUgd2lkdGggLyBoZWlnaHQgaXMKPiBoaWdoZXIgdGhh biB5b3VyIHJlc3RyaWN0aW9uLgo+Cj4gSW4gYWRkaXRpb24sIHRoZXNlIHBhcmFtZXRlcnMgZGVj aWRlIGhvdyBiaWcgYSBGQiBjYW4gYmUgY3JlYXRlZCAtLSB0aGUKPiBGQiBtaWdodCBiZSBzY2Fu ZWQgb3V0IGJ5IG11bHRpcGxlIGRldmljZXMgKGUuZy4gYSBVU0IgRGlzcGxheUxpbmsKPiBkZXZp Y2Ugc2Nhbm5pbmcgb3V0IHRoZSByZW1haW5pbmcgcGFydCkuIFRoZSBzdHJpZGUgcmVnaXN0ZXIg aXMgc2FpZCB0bwo+IGhhdmUgMTctYml0IHdpZHRoIGluIHRoZSBNQTM1RDEgVFJNLCBzbyB0aGUg cG9zc2libGUgRkIgd2lkdGggY291bGQgYmUKPiBxdWl0ZSBoaWdoIC0tIGFzc3VtZSB0aGUgMTd0 aCBiaXQgaXMgb25seSBmb3IgdGhlIHZhbHVlIHdpdGggb25lIDEgYW5kCj4gYWxsIHJlbWFpbmlu ZyAwLCB3ZSBnZXQgNjU1MzYgYnl0ZXMgc3RyaWRlOyB3aXRoIDQtYnl0ZS1wZXItcGl4ZWwKPiBk aXZpZGVkIHRoaXMgZ2V0cyAxNjM4NCBwaXhlbHMgLS0gdGhlIGh0b3RhbC9oZGlzcGxheS92dG90 YWwvdmRpc3BsYXkKPiBmaWVsZHMgaW4gdGhlIG1hbnVhbCBoYXMgMTUtYml0IGZpZWxkIHdpZHRo LCB3aGljaCBjYW4gcmVhY2ggMzI3NjcuCj4KPiBJIHN0cm9uZ2x5IHN1Z2dlc3QgbGVhdmUgdGhl IG9yaWdpbmFsIHZhbHVlcyBoZXJlLgpZb3UgYXJlIHJpZ2h0LiBJJ2xsIHJldmVydCB0byA4MTky eDgxOTIgZm9yIGFsbCB2YXJpYW50cy4gVGhlCnZhcmlhbnQtc3BlY2lmaWMgbWF4X3dpZHRoL21h eF9oZWlnaHQgbG9naWMgd2lsbCBiZSByZW1vdmVkIGVudGlyZWx5CmFuZCB2c19tb2RlX2NvbmZp Z19pbml0KCkgd2lsbCB0YWtlIG5vIGRjIGFyZ3VtZW50Lgo+PiArCX0gZWxzZSB7Cj4+ICsJCWRy bS0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gODE5MjsKPj4gKwkJZHJtLT5tb2RlX2NvbmZpZy5t YXhfaGVpZ2h0ID0gODE5MjsKPj4gKwl9Cj4+ICsKPj4gIMKgCWRybS0+bW9kZV9jb25maWcuZnVu Y3MgPSAmdnNfbW9kZV9jb25maWdfZnVuY3M7Cj4+ICDCoAlkcm0tPm1vZGVfY29uZmlnLmhlbHBl cl9wcml2YXRlID0KPj4gJnZzX21vZGVfY29uZmlnX2hlbHBlcl9mdW5jczsKPj4gIMKgfQo+PiBA QCAtMTI1LDcgKzEzMyw3IEBAIGludCB2c19kcm1faW5pdGlhbGl6ZShzdHJ1Y3QgdnNfZGMgKmRj LCBzdHJ1Y3QKPj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiAgwqAJaWYgKHJldCkKPj4gIMKg CQlyZXR1cm4gcmV0Owo+PiAgIAo+PiAtCXZzX21vZGVfY29uZmlnX2luaXQoZHJtKTsKPj4gKwl2 c19tb2RlX2NvbmZpZ19pbml0KGRybSwgZGMpOwo+PiAgIAo+PiAgwqAJLyogRW5hYmxlIGNvbm5l Y3RvcnMgcG9sbGluZyAqLwo+PiAgwqAJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRybSk7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfaHdkYi5jCj4+IGIv ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuYwo+PiBpbmRleCAwOTMzNmFmMDkw MGEuLjM5NDAyZDc1ZDg0MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxp Y29uL3ZzX2h3ZGIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfaHdk Yi5jCj4+IEBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBjb25zdCB1MzIgdnNfZm9ybWF0c19hcnJh eV93aXRoX3l1djQ0NFtdID0gewo+PiAgwqAJLyogVE9ETzogbm9uLVJHQiBmb3JtYXRzICovCj4+ ICDCoH07Cj4+ICAgCj4+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHZzX2Zvcm1hdHMgdnNfZm9ybWF0 c19ub195dXY0NDQgPSB7Cj4+ICtjb25zdCBzdHJ1Y3QgdnNfZm9ybWF0cyB2c19mb3JtYXRzX25v X3l1djQ0NCA9IHsKPj4gIMKgCS5hcnJheSA9IHZzX2Zvcm1hdHNfYXJyYXlfbm9feXV2NDQ0LAo+ PiAgwqAJLm51bSA9IEFSUkFZX1NJWkUodnNfZm9ybWF0c19hcnJheV9ub195dXY0NDQpCj4+ICDC oH07Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfaHdkYi5o Cj4+IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuaAo+PiBpbmRleCA5MjE5 MmU0ZmEwODYuLjY1NWNmOTNjYTNhYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL3ZzX2h3ZGIuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24v dnNfaHdkYi5oCj4+IEBAIC0xNCw2ICsxNCwyOSBAQCBzdHJ1Y3QgdnNfZm9ybWF0cyB7Cj4+ICDC oAl1bnNpZ25lZCBpbnQgbnVtOwo+PiAgwqB9Owo+PiAgIAo+PiArZW51bSB2c19kY19mYW1pbHkg ewo+PiArCVZTX0RDX0ZBTUlMWV9EQzgwMDAsCj4+ICsJVlNfRENfRkFNSUxZX0RDVUxUUkFfTElU RSwKPj4gK307Cj4+ICsKPj4gKy8qKgo+PiArICogc3RydWN0IHZzX2RjX2luZm8gLSBwZXItU29D IERDIHBsYXRmb3JtIGRhdGEKPj4gKyAqIEBmYW1pbHk6CQlEQyBJUCBmYW1pbHkgKERDODAwMCwg RENVbHRyYSBMaXRlLCBldGMuKQo+PiArICogQGRpc3BsYXlfY291bnQ6CW51bWJlciBvZiBkaXNw bGF5IG91dHB1dHMgKDAgPSBhdXRvLWRldGVjdAo+PiBmcm9tIERUL0hXKQo+PiArICogQGhhc19j aGlwX2lkOgl3aGV0aGVyIGNoaXAgaWRlbnRpdHkgcmVnaXN0ZXJzIGV4aXN0Cj4+ICsgKiBAaGFz X2NvbmZpZ19leDoJd2hldGhlciBDT05GSUdfRVggY29tbWl0IG1lY2hhbmlzbSBleGlzdHMKPj4g KyAqIEByZWdtYXBfY2ZnOgkJcmVnbWFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMKPj4gdmFyaWFu dAo+PiArICogQGZvcm1hdHM6CQlzdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0cyAoTlVMTCA9IGF1dG8t ZGV0ZWN0Cj4+IGZyb20gY2hpcCBJRCkKPj4gKyAqLwo+PiArc3RydWN0IHZzX2RjX2luZm8gewo+ PiArCWVudW0gdnNfZGNfZmFtaWx5IGZhbWlseTsKPj4gKwl1MzIgZGlzcGxheV9jb3VudDsKPj4g Kwlib29sIGhhc19jaGlwX2lkOwo+PiArCWJvb2wgaGFzX2NvbmZpZ19leDsKPj4gKwljb25zdCBz dHJ1Y3QgcmVnbWFwX2NvbmZpZyAqcmVnbWFwX2NmZzsKPj4gKwljb25zdCBzdHJ1Y3QgdnNfZm9y bWF0cyAqZm9ybWF0czsKPj4gK307Cj4+ICsKPj4gIMKgc3RydWN0IHZzX2NoaXBfaWRlbnRpdHkg ewo+PiAgwqAJdTMyIG1vZGVsOwo+PiAgwqAJdTMyIHJldmlzaW9uOwo+PiBAQCAtMjMsNiArNDYs OCBAQCBzdHJ1Y3QgdnNfY2hpcF9pZGVudGl0eSB7Cj4+ICDCoAljb25zdCBzdHJ1Y3QgdnNfZm9y bWF0cyAqZm9ybWF0czsKPj4gIMKgfTsKPj4gICAKPj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgdnNf Zm9ybWF0cyB2c19mb3JtYXRzX25vX3l1djQ0NDsKPj4gKwo+PiAgwqBpbnQgdnNfZmlsbF9jaGlw X2lkZW50aXR5KHN0cnVjdCByZWdtYXAgKnJlZ3MsCj4+ICDCoAkJCcKgIHN0cnVjdCB2c19jaGlw X2lkZW50aXR5ICppZGVudCk7Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX3ByaW1hcnlfcGxhbmUuYwo+PiBpbmRleCAxZjJiZTQxYWU0OTYuLjE5N2Q1ZDY4 M2UyMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3ByaW1h cnlfcGxhbmUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcHJpbWFy eV9wbGFuZS5jCj4+IEBAIC01NSw4ICs1NSw5IEBAIHN0YXRpYyBpbnQgdnNfcHJpbWFyeV9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0Cj4+IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAgCj4+ICDCoHN0 YXRpYyB2b2lkIHZzX3ByaW1hcnlfcGxhbmVfY29tbWl0KHN0cnVjdCB2c19kYyAqZGMsIHVuc2ln bmVkIGludAo+PiBvdXRwdXQpCj4+ICDCoHsKPj4gLQlyZWdtYXBfc2V0X2JpdHMoZGMtPnJlZ3Ms IFZTRENfRkJfQ09ORklHX0VYKG91dHB1dCksCj4+IC0JCQlWU0RDX0ZCX0NPTkZJR19FWF9DT01N SVQpOwo+PiArCWlmIChkYy0+aW5mby0+aGFzX2NvbmZpZ19leCkKPj4gKwkJcmVnbWFwX3NldF9i aXRzKGRjLT5yZWdzLCBWU0RDX0ZCX0NPTkZJR19FWChvdXRwdXQpLAo+PiArCQkJCVZTRENfRkJf Q09ORklHX0VYX0NPTU1JVCk7Cj4gU2hvdWxkIFZBTElEIGJpdCBiZSB3cml0dGVuIGhlcmUgaW5z dGVhZCBvZiBkb2luZyBub3RoaW5nIG9uCj4gREM4MDAwL0RDVWx0cmFMaXRlID8KU2FtZSBhcyBy ZXBseSBbYV0uIE5vIGBWU0RDX0ZCX0NPTkZJR19WQUxJRGAgbWFjcm8gaXMgbmVlZGVkLgpGb3Ig bm9uLWNvbmZpZ19leCB2YXJpYW50cywgYHZzX3ByaW1hcnlfcGxhbmVfY29tbWl0KClgIGlzIGEg bm8tb3Ag4oCUCmBWU0RDX0ZCX0NPTkZJR19FTkFCTEVgIChPVVRQVVQsIGJpdCAwKSBpcyBzZXQg aW4gYHZzX2NydGNfYXRvbWljX2VuYWJsZSgpYAphbmQgYFZTRENfRkJfQ09ORklHX1JFU0VUYCAo Yml0IDQpIGlzIG1hbmFnZWQgaW4gdGhlIGJyaWRnZSBlbmFibGUvZGlzYWJsZQpwYXRocy4KPj4g IMKgfQo+PiAgIAo+PiAgwqBzdGF0aWMgdm9pZCB2c19wcmltYXJ5X3BsYW5lX2F0b21pY19lbmFi bGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+IEBAIC02OSwxMSArNzAsMTMgQEAgc3RhdGlj IHZvaWQgdnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfZW5hYmxlKHN0cnVjdAo+PiBkcm1fcGxhbmUg KnBsYW5lLAo+PiAgwqAJdW5zaWduZWQgaW50IG91dHB1dCA9IHZjcnRjLT5pZDsKPj4gIMKgCXN0 cnVjdCB2c19kYyAqZGMgPSB2Y3J0Yy0+ZGM7Cj4+ICAgCj4+IC0JcmVnbWFwX3NldF9iaXRzKGRj LT5yZWdzLCBWU0RDX0ZCX0NPTkZJR19FWChvdXRwdXQpLAo+PiAtCQkJVlNEQ19GQl9DT05GSUdf RVhfRkJfRU4pOwo+PiAtCXJlZ21hcF91cGRhdGVfYml0cyhkYy0+cmVncywgVlNEQ19GQl9DT05G SUdfRVgob3V0cHV0KSwKPj4gLQkJCcKgwqAgVlNEQ19GQl9DT05GSUdfRVhfRElTUExBWV9JRF9N QVNLLAo+PiAtCQkJwqDCoCBWU0RDX0ZCX0NPTkZJR19FWF9ESVNQTEFZX0lEKG91dHB1dCkpOwo+ PiArCWlmIChkYy0+aW5mby0+aGFzX2NvbmZpZ19leCkgewo+PiArCQlyZWdtYXBfc2V0X2JpdHMo ZGMtPnJlZ3MsIFZTRENfRkJfQ09ORklHX0VYKG91dHB1dCksCj4+ICsJCQkJVlNEQ19GQl9DT05G SUdfRVhfRkJfRU4pOwo+PiArCQlyZWdtYXBfdXBkYXRlX2JpdHMoZGMtPnJlZ3MsCj4+IFZTRENf RkJfQ09ORklHX0VYKG91dHB1dCksCj4+ICsJCQkJCj4+IFZTRENfRkJfQ09ORklHX0VYX0RJU1BM QVlfSURfTUFTSywKPj4gKwkJCQkKPj4gVlNEQ19GQl9DT05GSUdfRVhfRElTUExBWV9JRChvdXRw dXQpKTsKPj4gKwl9Cj4+ICAgCj4+ICDCoAl2c19wcmltYXJ5X3BsYW5lX2NvbW1pdChkYywgb3V0 cHV0KTsKPj4gIMKgfQo+PiBAQCAtODgsOCArOTEsOSBAQCBzdGF0aWMgdm9pZCB2c19wcmltYXJ5 X3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdAo+PiBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgwqAJ dW5zaWduZWQgaW50IG91dHB1dCA9IHZjcnRjLT5pZDsKPj4gIMKgCXN0cnVjdCB2c19kYyAqZGMg PSB2Y3J0Yy0+ZGM7Cj4+ICAgCj4+IC0JcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RDX0ZC X0NPTkZJR19FWChvdXRwdXQpLAo+PiAtCQkJVlNEQ19GQl9DT05GSUdfRVhfRkJfRU4pOwo+PiAr CWlmIChkYy0+aW5mby0+aGFzX2NvbmZpZ19leCkKPj4gKwkJcmVnbWFwX3NldF9iaXRzKGRjLT5y ZWdzLCBWU0RDX0ZCX0NPTkZJR19FWChvdXRwdXQpLAo+PiArCQkJCVZTRENfRkJfQ09ORklHX0VY X0ZCX0VOKTsKPj4gICAKPj4gIMKgCXZzX3ByaW1hcnlfcGxhbmVfY29tbWl0KGRjLCBvdXRwdXQp Owo+PiAgwqB9Cj4+IEBAIC0xMjYsNiArMTMwLDExIEBAIHN0YXRpYyB2b2lkCj4+IHZzX3ByaW1h cnlfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gIMKgCQkJ wqDCoCBWU0RDX0ZCX0NPTkZJR19VVl9TV0laWkxFX0VOLAo+PiAgwqAJCQnCoMKgIHZzX3N0YXRl LT5mb3JtYXQudXZfc3dpenpsZSk7Cj4+ICAgCj4+ICsJLyogRENVbHRyYSBMaXRlIHJlcXVpcmVz IGV4cGxpY2l0IGVuYWJsZS9yZXNldCBiaXRzIGluCj4+IEZCX0NPTkZJRyAqLwo+PiArCWlmICgh ZGMtPmluZm8tPmhhc19jb25maWdfZXgpCj4+ICsJCXJlZ21hcF9zZXRfYml0cyhkYy0+cmVncywg VlNEQ19GQl9DT05GSUcob3V0cHV0KSwKPj4gKwkJCQlWU0RDX0ZCX0NPTkZJR19FTkFCTEUgfAo+ PiBWU0RDX0ZCX0NPTkZJR19SRVNFVCk7Cj4gU2hvdWxkIFZTRENfRkJfQ09ORklHX1JFU0VUIGJl IG9ubHkgc2V0IHdoZW4gaXQncyByZWFkeSB0byBvdXRwdXQgdGhlCj4gc2lnbmFsIChhdCBsZWFz dCBhbGwgdGltaW5nIGlzIHByb2dyYW1tZWQpPyBJIHRoaW5rIGl0IHNob3VsZCBiZQo+IHByb2dy YW1tZWQgaW4gY3J0Yy9icmlkZ2UgaW5zdGVhZCBvZiBwcmltYXJ5IHBsYW5lLCBhbHRob3VnaCBp dCdzIGluCj4gdGhlIERjcmVnRnJhbWVCdWZmZXJDb25maWcwIHJlZ2lzdGVyIChvYnZpb3VzbHkg dGhpcyBzb3VuZHMgYSBsaXR0bGUKPiB3ZWlyZCwgdGhpcyBtaWdodCBiZSB3aHkgdGhleSBjaGFu Z2VkIHRoaXMgaW4gREM4MjAwKS4KPgo+IFdoZW4gRU5BQkxFIChPVVRQVVQgaW4gdGhlIGRvY3Vt ZW50KSBpcyBjbGVhcmVkLCBhbGwgcGl4ZWxzIHdpbGwgYmUKPiBibGFja2VkIG91dDsgc28gSSB0 aGluayBpdCdzIGJldHRlciB0byBzZXQgRU5BQkxFIGluIENSVEMsIGFuZCB0aGVuIHNldAo+IFJF U0VUIGluIGJyaWRnZSAoZG9pbmcgdGhlIHdvcmsgb2YgZW5jb2RlciBpbiB0aGlzIGRyaXZlcikg LS0gaXQgc2VlbXMKPiB0aGF0IGZvciBEQzgwMDAvRENVbHRyYUxpdGUgdGhlIHByaW1hcnkgcGxh bmUgaXMgbm90IHBvc3NpYmxlIHRvIGJlCj4gZGlzYWJsZWQuCkknbGwgbW92ZSB0aGVzZSBhcyBz dWdnZXN0ZWQ6Ci0gYFZTRENfRkJfQ09ORklHX0VOQUJMRWAgd2lsbCBiZSBzZXQgaW4gYHZzX2Ny dGNfYXRvbWljX2VuYWJsZSgpYCBmb3IKIMKgIG5vbi1jb25maWdfZXggdmFyaWFudHMgKGFmdGVy IHRoZSBwaXhlbCBjbG9jayBpcyBlbmFibGVkKS4KLSBgVlNEQ19GQl9DT05GSUdfUkVTRVRgIHdp bGwgYmUgc2V0IGluIGB2c19icmlkZ2VfZW5hYmxlX2NvbW1vbigpYCBmb3IKIMKgIG5vbi1jb25m aWdfZXggdmFyaWFudHMsIGFmdGVyIGFsbCB0aW1pbmcgcmVnaXN0ZXJzIGFyZSBwcm9ncmFtbWVk LgotIGBWU0RDX0ZCX0NPTkZJR19SRVNFVGAgd2lsbCBiZSBjbGVhcmVkIGluIGB2c19icmlkZ2Vf YXRvbWljX2Rpc2FibGUoKWAKIMKgIGZvciBub24tY29uZmlnX2V4IHZhcmlhbnRzIHRvIHN0YWxs IERQSSBvdXRwdXQuCi0gVGhlIEVOQUJMRS9SRVNFVCB3cml0ZXMgd2lsbCBiZSByZW1vdmVkIGZy b20KIMKgIGB2c19wcmltYXJ5X3BsYW5lX2F0b21pY191cGRhdGUoKWAuCi0gYHZzX3ByaW1hcnlf cGxhbmVfY29tbWl0KClgIHdpbGwgcGVyZm9ybSBubyBhY3Rpb24gZm9yIG5vbi1jb25maWdfZXgK IMKgIHZhcmlhbnRzOyB0aGUgZnVuY3Rpb24gb25seSB0cmlnZ2VycyBgVlNEQ19GQl9DT05GSUdf RVhfQ09NTUlUYCBmb3IKIMKgIGNvbmZpZ19leCB2YXJpYW50cy4KPj4gIMKgCWRtYV9hZGRyID0g dnNfZmJfZ2V0X2RtYV9hZGRyKGZiLCAmc3RhdGUtPnNyYyk7Cj4+ICAgCj4+ICDCoAlyZWdtYXBf d3JpdGUoZGMtPnJlZ3MsIFZTRENfRkJfQUREUkVTUyhvdXRwdXQpLAo+PiBAQCAtMTMzLDE2ICsx NDIsMTggQEAgc3RhdGljIHZvaWQKPj4gdnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgwqAJcmVnbWFwX3dyaXRlKGRjLT5yZWdzLCBWU0RD X0ZCX1NUUklERShvdXRwdXQpLAo+PiAgwqAJCcKgwqDCoMKgIGZiLT5waXRjaGVzWzBdKTsKPj4g ICAKPj4gLQlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRkJfVE9QX0xFRlQob3V0cHV0KSwK Pj4gLQkJwqDCoMKgwqAgVlNEQ19NQUtFX1BMQU5FX1BPUyhzdGF0ZS0+Y3J0Y194LCBzdGF0ZS0K Pj4+IGNydGNfeSkpOwo+PiAtCXJlZ21hcF93cml0ZShkYy0+cmVncywgVlNEQ19GQl9CT1RUT01f UklHSFQob3V0cHV0KSwKPj4gLQkJwqDCoMKgwqAgVlNEQ19NQUtFX1BMQU5FX1BPUyhzdGF0ZS0+ Y3J0Y194ICsgc3RhdGUtCj4+PiBjcnRjX3csCj4+IC0JCQkJCSBzdGF0ZS0+Y3J0Y195ICsgc3Rh dGUtCj4+PiBjcnRjX2gpKTsKPj4gIMKgCXJlZ21hcF93cml0ZShkYy0+cmVncywgVlNEQ19GQl9T SVpFKG91dHB1dCksCj4+ICDCoAkJwqDCoMKgwqAgVlNEQ19NQUtFX1BMQU5FX1NJWkUoc3RhdGUt PmNydGNfdywgc3RhdGUtCj4+PiBjcnRjX2gpKTsKPj4gICAKPj4gLQlyZWdtYXBfd3JpdGUoZGMt PnJlZ3MsIFZTRENfRkJfQkxFTkRfQ09ORklHKG91dHB1dCksCj4+IC0JCcKgwqDCoMKgIFZTRENf RkJfQkxFTkRfQ09ORklHX0JMRU5EX0RJU0FCTEUpOwo+PiArCWlmIChkYy0+aW5mby0+aGFzX2Nv bmZpZ19leCkgewo+PiArCQlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRkJfVE9QX0xFRlQo b3V0cHV0KSwKPj4gKwkJCcKgwqDCoMKgIFZTRENfTUFLRV9QTEFORV9QT1Moc3RhdGUtPmNydGNf eCwKPj4gc3RhdGUtPmNydGNfeSkpOwo+PiArCQlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENf RkJfQk9UVE9NX1JJR0hUKG91dHB1dCksCj4+ICsJCQnCoMKgwqDCoCBWU0RDX01BS0VfUExBTkVf UE9TKHN0YXRlLT5jcnRjX3ggKwo+PiBzdGF0ZS0+Y3J0Y193LAo+PiArCQkJCQkJIHN0YXRlLT5j cnRjX3kgKwo+PiBzdGF0ZS0+Y3J0Y19oKSk7Cj4+ICsJCXJlZ21hcF93cml0ZShkYy0+cmVncywg VlNEQ19GQl9CTEVORF9DT05GSUcob3V0cHV0KSwKPj4gKwkJCcKgwqDCoMKgIFZTRENfRkJfQkxF TkRfQ09ORklHX0JMRU5EX0RJU0FCTEUpOwo+PiArCX0KPj4gICAKPj4gIMKgCXZzX3ByaW1hcnlf cGxhbmVfY29tbWl0KGRjLCBvdXRwdXQpOwo+PiAgwqB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZV9yZWdzLmgKPj4gYi9kcml2ZXJz L2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZV9yZWdzLmgKPj4gaW5kZXggY2Ji MTI1YzQ2YjM5Li4yODgwNjQ3NjBiNDggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 ZXJpc2lsaWNvbi92c19wcmltYXJ5X3BsYW5lX3JlZ3MuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vdmVyaXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZV9yZWdzLmgKPj4gQEAgLTE2LDYgKzE2LDgg QEAKPj4gIMKgI2RlZmluZSBWU0RDX0ZCX1NUUklERShuKQkJCSgweDE0MDggKyAweDQgKiAobikp Cj4+ICAgCj4+ICDCoCNkZWZpbmUgVlNEQ19GQl9DT05GSUcobikJCQkoMHgxNTE4ICsgMHg0ICog KG4pKQo+PiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19FTkFCTEUJCQlCSVQoMCkKPiBBcyBJIG1l bnRpb25lZCB0aGF0IHRoZSBWQUxJRCBiaXQgaXMgcXVpdGUgaW1wb3J0YW50LCBwbGVhc2UgYWRk IGl0Cj4gaGVyZSAoeW91IGNhbiBjYWxsIGl0ICJDT01NSVQiIHRvbyBpZiB5b3UgbGlrZSkuCj4K PiAjZGVmaW5lIFZTRENfRkJfQ09ORklHX1ZBTElEIEJJVCgzKQoKU2FtZSBhcyByZXBseSBbYV0u IE5vIGBWU0RDX0ZCX0NPTkZJR19WQUxJRGAgbWFjcm8gaXMgbmVlZGVkLgoKVGhhbmsgeW91IHZl cnkgbXVjaCBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIHJldmlldyBteSB3b3JrLsKg8J+ZggoKPj4g KyNkZWZpbmUgVlNEQ19GQl9DT05GSUdfUkVTRVQJCQlCSVQoNCkKPj4gIMKgI2RlZmluZSBWU0RD X0ZCX0NPTkZJR19DTEVBUl9FTgkJCUJJVCg4KQo+PiAgwqAjZGVmaW5lIFZTRENfRkJfQ09ORklH X1JPVF9NQVNLCQkJR0VOTUFTSygxMywKPj4gMTEpCj4+ICDCoCNkZWZpbmUgVlNEQ19GQl9DT05G SUdfUk9UKHYpCQkJKCh2KSA8PCAxMSkK