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 BEB1ED35662 for ; Wed, 28 Jan 2026 07:59:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject:MIME-Version: Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=1M6SnRTTUVJ1SusqLCvsavru67CPtLApdOfj3pak6Ns=; b=uYuJzXFcBiNe9Sn/tp+JO7gWSc q4lUjOBQOdx5HIRW+iP9SAiUYLZ5EwiFRRyBAJWfVHm6fWYbp7sKqYWmAo/oPPIvk1vw6mUwD4zXy n21ip24Uq1u89d8S6TNwVhVnKZnZ3XPv4RVXkN5MyB2AhnK7a672iD1BUiAK0Qzoiyx39/EZZ7lya 9raqXmz1nDzcQ4K4bHKg3uTt4G7Zvrjq3U7K0a9Ar/7YSBD/s/PHbiJFbf3O/7GjGBmShialzt1JB ROzGo1LS/lscwpJqE84//1DaZ9j8SO6zbg7yJOjtNs5Cl+eAPmRF0sNIwnJ8NYv1ueey+uCx0IF2Y KKsuBO6A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vl0Rt-0000000Fck6-113E; Wed, 28 Jan 2026 07:58:49 +0000 Received: from smtp-out2.suse.de ([2a07:de40:b251:101:10:150:64:2]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vl0Ro-0000000FcjZ-2WKD for linux-riscv@lists.infradead.org; Wed, 28 Jan 2026 07:58:47 +0000 Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 635B95BCD1; Wed, 28 Jan 2026 07:58:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1769587122; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=bn9Px6T2fkrN/7hRrTqs4N70ouQyjBXPbGm76pHxRuU=; b=YtF+bUuLgmPPaNunIjXDRXEFhgpnoNkkAiv6RVt9k4h2N1GBVSUlcBC0MeTah7yR78rP3a cXHNcFYmu2vrZCGNCDolb6u/Df8z4rdIuZooYtsAIPdGwfKXouaIJtdA/1ktEnwAmKm9J0 5x9ez4euyoL0vpwvTIvQSJGsevGasfY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1769587122; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=bn9Px6T2fkrN/7hRrTqs4N70ouQyjBXPbGm76pHxRuU=; b=vEYfdSsRO+K6ujet0TeHBzIY0wuEDXHkyGTiWai23lF4UbtUW+ORVje+Lfv1XXQiOkQV9D Ci3sIyl04PtDLVBA== Authentication-Results: smtp-out2.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1769587121; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=bn9Px6T2fkrN/7hRrTqs4N70ouQyjBXPbGm76pHxRuU=; b=lHvwgkRBxqHOVXITRpthrFcjH7EcNVYM8XUaUYjXClqExUeKRh8ziSzg7SmN33gl6PnaLz MElB/ojgDnJhfup93fAtmYCZYRE3cnylh5WSjCSwpewob0qFOYqkZGa7evBTK/W33I8h83 GXkcWmahksNANsI8B4gavSI+ofVRRL4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1769587121; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=bn9Px6T2fkrN/7hRrTqs4N70ouQyjBXPbGm76pHxRuU=; b=nPQLmYu0O4cVTH/JmKad4/dcVyv0kq+lL50lt3V5OX4uhU9l5siPIbSKs7bWD8cgbhuL94 rbN8uRXvBGg66EAA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 81D573EA61; Wed, 28 Jan 2026 07:58:40 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id gVY3HrDBeWnCAwAAD6G6ig (envelope-from ); Wed, 28 Jan 2026 07:58:40 +0000 Message-ID: <6ea016d6-42a4-4d83-89fd-eee918a834ef@suse.de> Date: Wed, 28 Jan 2026 08:58:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 3/9] drm: verisilicon: add a driver for Verisilicon display controllers To: Icenowy Zheng , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Drew Fustini , Guo Ren , Fu Wei References: <20260123092830.4046009-1-zhengxingda@iscas.ac.cn> <20260123092830.4046009-4-zhengxingda@iscas.ac.cn> Content-Language: en-US From: Thomas Zimmermann Autocrypt: addr=tzimmermann@suse.de; keydata= xsBNBFs50uABCADEHPidWt974CaxBVbrIBwqcq/WURinJ3+2WlIrKWspiP83vfZKaXhFYsdg XH47fDVbPPj+d6tQrw5lPQCyqjwrCPYnq3WlIBnGPJ4/jreTL6V+qfKRDlGLWFjZcsrPJGE0 BeB5BbqP5erN1qylK9i3gPoQjXGhpBpQYwRrEyQyjuvk+Ev0K1Jc5tVDeJAuau3TGNgah4Yc hdHm3bkPjz9EErV85RwvImQ1dptvx6s7xzwXTgGAsaYZsL8WCwDaTuqFa1d1jjlaxg6+tZsB 9GluwvIhSezPgnEmimZDkGnZRRSFiGP8yjqTjjWuf0bSj5rUnTGiyLyRZRNGcXmu6hjlABEB AAHNJ1Rob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPsLAjgQTAQgAOAIb AwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBHIX+6yM6c9jRKFo5WgNwR1TC3ojBQJftODH AAoJEGgNwR1TC3ojx1wH/0hKGWugiqDgLNXLRD/4TfHBEKmxIrmfu9Z5t7vwUKfwhFL6hqvo lXPJJKQpQ2z8+X2vZm/slsLn7J1yjrOsoJhKABDi+3QWWSGkaGwRJAdPVVyJMfJRNNNIKwVb U6B1BkX2XDKDGffF4TxlOpSQzdtNI/9gleOoUA8+jy8knnDYzjBNOZqLG2FuTdicBXblz0Mf vg41gd9kCwYXDnD91rJU8tzylXv03E75NCaTxTM+FBXPmsAVYQ4GYhhgFt8S2UWMoaaABLDe 7l5FdnLdDEcbmd8uLU2CaG4W2cLrUaI4jz2XbkcPQkqTQ3EB67hYkjiEE6Zy3ggOitiQGcqp j//OwE0EWznS4AEIAMYmP4M/V+T5RY5at/g7rUdNsLhWv1APYrh9RQefODYHrNRHUE9eosYb T6XMryR9hT8XlGOYRwKWwiQBoWSDiTMo/Xi29jUnn4BXfI2px2DTXwc22LKtLAgTRjP+qbU6 3Y0xnQN29UGDbYgyyK51DW3H0If2a3JNsheAAK+Xc9baj0LGIc8T9uiEWHBnCH+RdhgATnWW GKdDegUR5BkDfDg5O/FISymJBHx2Dyoklv5g4BzkgqTqwmaYzsl8UxZKvbaxq0zbehDda8lv hFXodNFMAgTLJlLuDYOGLK2AwbrS3Sp0AEbkpdJBb44qVlGm5bApZouHeJ/+n+7r12+lqdsA EQEAAcLAdgQYAQgAIAIbDBYhBHIX+6yM6c9jRKFo5WgNwR1TC3ojBQJftOH6AAoJEGgNwR1T C3ojVSkIALpAPkIJPQoURPb1VWjh34l0HlglmYHvZszJWTXYwavHR8+k6Baa6H7ufXNQtThR yIxJrQLW6rV5lm7TjhffEhxVCn37+cg0zZ3j7zIsSS0rx/aMwi6VhFJA5hfn3T0TtrijKP4A SAQO9xD1Zk9/61JWk8OysuIh7MXkl0fxbRKWE93XeQBhIJHQfnc+YBLprdnxR446Sh8Wn/2D Ya8cavuWf2zrB6cZurs048xe0UbSW5AOSo4V9M0jzYI4nZqTmPxYyXbm30Kvmz0rYVRaitYJ 4kyYYMhuULvrJDMjZRvaNe52tkKAvMevcGdt38H4KSVXAylqyQOW5zvPc4/sq9c= In-Reply-To: <20260123092830.4046009-4-zhengxingda@iscas.ac.cn> X-Spamd-Result: default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[100.00%]; SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FREEMAIL_ENVRCPT(0.00)[gmail.com]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; RCPT_COUNT_TWELVE(0.00)[29]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; TAGGED_RCPT(0.00)[dt]; FREEMAIL_TO(0.00)[iscas.ac.cn,intel.com,linaro.org,kernel.org,ideasonboard.com,kwiboo.se,gmail.com,linux.intel.com,ffwll.ch,redhat.com]; MID_RHS_MATCH_FROM(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; FREEMAIL_CC(0.00)[pengutronix.de,kernel.org,samsung.com,bootlin.com,gmail.com,disroot.org,vger.kernel.org,lists.freedesktop.org,lists.infradead.org,icenowy.me,iscas.ac.cn]; R_RATELIMIT(0.00)[to_ip_from(RLqj7cgak6aet4eyc7so6kz1wx)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_PROHIBIT(0.00)[0.0.0.0:email]; RCVD_COUNT_TWO(0.00)[2]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:email,suse.com:url,imap1.dmz-prg2.suse.org:helo,icenowy.me:email,iscas.ac.cn:email] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260127_235845_114202_8705FFF8 X-CRM114-Status: GOOD ( 33.54 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Yao Zi , Han Gao , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Philipp Zabel , Han Gao , Michal Wilczynski , linux-riscv@lists.infradead.org, Luca Ceresoli , Dmitry Baryshkov Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkKCkFtIDIzLjAxLjI2IHVtIDEwOjI4IHNjaHJpZWIgSWNlbm93eSBaaGVuZzoKPiBGcm9tOiBJ Y2Vub3d5IFpoZW5nIDx1d3VAaWNlbm93eS5tZT4KPgo+IFRoaXMgaXMgYSBmcm9tLXNjcmF0Y2gg ZHJpdmVyIHRhcmdldGluZyBWZXJpc2lsaWNvbiBEQy1zZXJpZXMgZGlzcGxheQo+IGNvbnRyb2xs ZXJzLCB3aGljaCBmZWF0dXJlIHNlbGYtaWRlbnRpZmljYXRpb24gZnVuY3Rpb25hbGl0eSBsaWtl IHRoZWlyCj4gR0Mtc2VyaWVzIEdQVXMuCj4KPiBPbmx5IERDODIwMCBpcyBiZWluZyBzdXBwb3J0 ZWQgbm93LCBhbmQgb25seSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciBpcyBzZXQKPiB1cCAoYXMgdGhl IERSTSBwcmltYXJ5IHBsYW5lKS4gU3VwcG9ydCBmb3IgbW9yZSBEQyBtb2RlbHMgYW5kIG1vcmUK PiBmZWF0dXJlcyBpcyBteSBmdXJ0aGVyIHRhcmdldHMuCj4KPiBBcyB0aGUgZGlzcGxheSBjb250 cm9sbGVyIGlzIGRlbGl2ZXJlZCB0byBTb0MgdmVuZG9ycyBhcyBhIHdob2xlIHBhcnQsCj4gdGhp cyBkcml2ZXIgZG9lcyBub3QgdXNlIGNvbXBvbmVudCBmcmFtZXdvcmsgYW5kIGV4dHJhIGJyaWRn ZXMgaW5zaWRlIGEKPiBTb0MgaXMgZXhwZWN0ZWQgdG8gYmUgaW1wbGVtZW50ZWQgYXMgZGVkaWNh dGVkIGJyaWRnZXMgKHRoaXMgZHJpdmVyCj4gcHJvcGVybHkgc3VwcG9ydHMgYnJpZGdlIGNoYWlu aW5nKS4KPgo+IFNpZ25lZC1vZmYtYnk6IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vub3d5Lm1lPgo+ IFNpZ25lZC1vZmYtYnk6IEljZW5vd3kgWmhlbmcgPHpoZW5neGluZ2RhQGlzY2FzLmFjLmNuPgo+ IFRlc3RlZC1ieTogSGFuIEdhbyA8Z2FvaGFuQGlzY2FzLmFjLmNuPgo+IFRlc3RlZC1ieTogTWlj aGFsIFdpbGN6eW5za2kgPG0ud2lsY3p5bnNraUBzYW1zdW5nLmNvbT4KClJldmlld2VkLWJ5OiBU aG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KCkkgb25seSBicmllZmx5IGxv b2tlZCBvdmVyIHRoaXMgcmV2aXNpb24sIGFzIHY1IGFscmVhZHkgc2VlbWVkIHF1aXRlIApnb29k LiBJZiB5b3Ugd2FudCB0byBkbyBhIGZvbGxvdy11cCBwYXRjaCwgc2VlIG15IG90aGVyIHJlcGx5 IHRvIHY1IG9uIApzdG9yaW5nIGhhcmR3YXJlIGZvcm1hdHMgaW4gdGhlIHBsYW5lIHN0YXRlLgoK QmVzdCByZWdhcmRzClRob21hcwoKPiAtLS0KPiBDaGFuZ2VzIGluIHY2Ogo+IC0gU29ydGVkIEtj b25maWcgZGVwZW5kZW5jeS4KPiAtIEdldCByaWQgb2Ygb2Jzb2xldGUgdXBwZXJjYXNlIERSTV8q IHByaW50ayBtYXJjb3MuCj4gLSBPcHRpbWl6YXRpb24gdG8gcHJpbnRrIG1lc3NhZ2VzICh1bmtu b3duIElSUSBtZXNzYWdlIGlzIG9ubHkgcHJpbnRlZAo+ICAgIG9uY2UsIGRldmljZSByZWNvZ25p dGlvbiBtZXNzYWdlIGhhcyAiRm91bmQiIGFkZGVkLCAiU2tpcHBpbmcgb3V0cHV0Igo+ICAgIG1l c3NhZ2UgcHJpb3JpdHkgbG93ZXJlZCB0byBkZWJ1ZykuCj4gLSBTcGxpdHRlZCBtb3N0IGJyaWRn ZSBmdW5jdGlvbnMgZm9yIERQSS9EUCBvdXRwdXQuCj4gLSBHZXQgcmlkIG9mIGN1c3RvbSBDUlRD IGF0b21pY19mbHVzaCwgd2hpY2ggZG9lc24ndCBkbyBhbnl0aGluZwo+ICAgIGRldmljZS1zcGVj aWZpYy4KPiAtIEFkYXB0ZWQgbWFjcm8gSFpfUEVSX0tIWiBhbmQgVlNEQ19ESVNQX1RJTUlOR19W QUxVRV9NQVguCj4gLSBTd2l0Y2hlZCB0byB1c2UgZHJtX21vZGVfc2l6ZV9kdW1iKCkgdG8gYWxp Z24gZHVtYiBidWZmZXIgcGl0Y2guCj4gLSBSZW9yZGVyZWQgc29tZSBmdW5jdGlvbiBjYWxscyBp biB2c19kcm1faW5pdGlhbGl6ZSgpICgKPiAgICBhcGVydHVyZV9yZW1vdmVfYWxsX2NvbmZsaWN0 aW5nX2RldmljZXMoKSBpcyBub3cgY2FsbGVkIGVhcmxpZXIgYW5kCj4gICAgZHJtX21vZGVfY29u ZmlnX3Jlc2V0KCkgaXMgbm93IGNhbGxlZCBsYXRlcikuCj4gLSBTcGxpdHRlZCBvdXQgdnNfZmJf Z2V0X2RtYV9hZGRyKCkgYW5kIHN3aXRjaGVkIHRvIHVzZQo+ICAgIGRybV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goKSB0byBjYWxjdWxhdGUgdGhlIHNyYyBYIG9mZnNldCB0byB0aGUKPiAgICBmcmFt ZWJ1ZmZlciBhZGRyZXNzLgo+IC0gU3BsaXR0ZWQgb3V0IGF0b21pY197ZW4sZGlzfWFibGUgZm9y IHByaW1hcnkgcGxhbmUuCj4gLSBSZW1vdmVkIGFuIHVudXNlZCBwbV9ydW50aW1lLmggaW5jbHVz aW9uIGJlY2F1c2UgdGhlIGRyaXZlciBub3cgZG9lcwo+ICAgIG5vdCBkbyBydW5wbS4KPgo+IENo YW5nZXMgaW4gdjU6Cj4gLSBTd2l0Y2hpbmcgdG8gZHJtX2F0b21pY19nZXRfbmV3X2JyaWRnZV9z dGF0ZSwgd2hpY2ggc2VlbXMgdG8gbGV0IHRoZQo+ICAgIGRyaXZlciBnZXQgcmlkIG9mIHRoZSBo YWNrIG9mIHNhdmluZyBidXMgZm9ybWF0IGl0c2VsZi4KPiAtIEFkZCB0aGUgaW50ZXJuYWwgYnJp ZGdlIGJlZm9yZSBhdHRhY2hpbmcgaXQuCj4gLSBBZGFwdGVkIG5leHRfYnJpZGdlIHN0cnVjdCBm aWVsZCBuYW1lIHN1Z2dlc3RlZCBieSBMdWNhIENlcmVzb2xpLgo+IC0gUmVmYWN0b3JlZCB0aGUg cHJvYmUgY29kZSB0byBub3QgdXNlIHBvcnQgY291bnQsIHRvIGFsbG93IHBvcnRAMCBiZWluZwo+ ICAgIG1pc3NpbmcuCj4KPiBDaGFuZ2VzIGluIHY0Ogo+IC0gU3dpdGNoIHRvIGRybV8qIGxvZ2dl ciB3aGVuIHdlJ3JlIGhhbmRsaW5nIHdpdGggc3RydWN0IGRybV9kZXZpY2UuCj4KPiBDaGFuZ2Vz IGluIHYzOgo+IC0gR2V0IHJpZCBvZiBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRl KCkgd2hpY2ggaXMgbWFya2VkCj4gICAgZGVwcmVjYXRlZC4KPgo+IENoYW5nZXMgaW4gdjI6Cj4g LSBDaGFuZ2VkIHNvbWUgQ29udHJvbCBmbG93cyBhY2NvcmRpbmcgdG8gcHJldmlvdXMgcmV2aWV3 cy4KPiAtIEFkZGVkIG1pc3Npbmcgb2Zfbm9kZV9wdXQgd2hlbiBjaGVja2luZyBvZiBlbmRwb2lu dHMgZm9yIG91dHB1dCB0eXBlLgo+IC0gU3dpdGNoZWQgYWxsIHVzZXJzcGFjZS12aXNpYmxlIG1v ZGVzZXQgb2JqZWN0cyB0byBiZSBtYW5hZ2VkIGJ5IGRybW0KPiAgICBpbnN0ZWFkIG9mIGRldm0u Cj4gLSBVdGlsaXplIGRldm1fZHJtX2JyaWRnZV9hbGxvYygpIGluIGludGVybmFsIGJyaWRnZS4K PiAtIFByZXZlbnRlZCB0aGUgdXNhZ2Ugb2Ygc2ltcGxlIGVuY29kZXIgaGVscGVycyBieSBwYXNz aW5nIGEgTlVMTCBmdW5jcyBwb2ludGVyLgo+IC0gTGV0IGRldm0gZW5hYmxlIGNsb2NrcyB3aGVu IGdldHRpbmcgdGhlbS4KPiAtIFJlbW92ZWQgZXhwbGljaXQgYC5jYWNoZV90eXBlID0gUkVHQ0FD SEVfTk9ORWAgaW4gcmVnbWFwIGNvbmZpZy4KPiAtIEZpeGVkIGEgZGVidWcgcHJpbnQgdXNpbmcg YSB2YXJpYWJsZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uCj4gLSBGaXhlZCBhIHdyb25nIGluZGV4 IHdoZW4gdXNpbmcgYnVsayB0byBoYW5kbGUgcmVzZXRzLgo+IC0gQWRkZWQgbWlzc2luZyBjb25m aWd1cmF0aW9uIGZvciBEUEkgZm9ybWF0IChjdXJyZW50bHkgZml4ZWQgUkdCODg4KS4KPgo+ICAg ZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPiAg IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4g ICBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vS2NvbmZpZyAgICAgICAgICAgfCAgMTUgKwo+ ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlICAgICAgICAgIHwgICA1ICsK PiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19icmlkZ2UuYyAgICAgICB8IDM3MSAr KysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19icmlk Z2UuaCAgICAgICB8ICAzOSArKwo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Jy aWRnZV9yZWdzLmggIHwgIDU0ICsrKwo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3Zz X2NydGMuYyAgICAgICAgIHwgMTkxICsrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2NydGMuaCAgICAgICAgIHwgIDMxICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfY3J0Y19yZWdzLmggICAgfCAgNjAgKysrCj4gICBkcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfZGMuYyAgICAgICAgICAgfCAyMDcgKysrKysrKysrKwo+ICAgZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmggICAgICAgICAgIHwgIDM4ICsrCj4gICBkcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfdG9wX3JlZ3MuaCAgfCAgMjcgKysKPiAgIGRy aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uYyAgICAgICAgICB8IDE4MiArKysrKysr KysKPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uaCAgICAgICAgICB8ICAy OCArKwo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuYyAgICAgICAgIHwg MTUwICsrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19od2RiLmggICAg ICAgICB8ICAyOSArKwo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmMg ICAgICAgIHwgMTI0ICsrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3Bs YW5lLmggICAgICAgIHwgIDcyICsrKysKPiAgIC4uLi9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3By aW1hcnlfcGxhbmUuYyAgICB8IDE3MyArKysrKysrKwo+ICAgLi4uL2RybS92ZXJpc2lsaWNvbi92 c19wcmltYXJ5X3BsYW5lX3JlZ3MuaCAgIHwgIDUzICsrKwo+ICAgMjEgZmlsZXMgY2hhbmdlZCwg MTg1MiBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L3ZlcmlzaWxpY29uL0tjb25maWcKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vdmVyaXNpbGljb24vTWFrZWZpbGUKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlX3JlZ3MuaAo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmMKPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfY3J0Yy5oCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGNf cmVncy5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L3ZzX2RjLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGlj b24vdnNfZGMuaAo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19kY190b3BfcmVncy5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL3ZlcmlzaWxpY29uL3ZzX2RybS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RybS5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19od2RiLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxhbmUuYwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19wbGFuZS5oCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3ByaW1hcnlfcGxhbmUu Ywo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19w cmltYXJ5X3BsYW5lX3JlZ3MuaAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29u ZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRleCA3ZTZiYzBiM2E1ODljLi40MTM2 M2RhMmNjNTlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMzk4LDYgKzM5OCw4IEBAIHNvdXJjZSAiZHJp dmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL0tjb25maWciCj4gICAKPiAgIHNvdXJjZSAiZHJpdmVy cy9ncHUvZHJtL3R5ci9LY29uZmlnIgo+ICAgCj4gK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL0tjb25maWciCj4gKwo+ICAgY29uZmlnIERSTV9IWVBFUlYKPiAgIAl0cmlzdGF0 ZSAiRFJNIFN1cHBvcnQgZm9yIEh5cGVyLVYgc3ludGhldGljIHZpZGVvIGRldmljZSIKPiAgIAlk ZXBlbmRzIG9uIERSTSAmJiBQQ0kgJiYgSFlQRVJWX1ZNQlVTCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDBl MWM2NjhiNDZkMjEuLmYyZGZhMGFkMGFiNzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gQEAgLTIzNSw2ICsy MzUsNyBAQCBvYmoteQkJCSs9IHNvbG9tb24vCj4gICBvYmotJChDT05GSUdfRFJNX1NQUkQpICs9 IHNwcmQvCj4gICBvYmotJChDT05GSUdfRFJNX0xPT05HU09OKSArPSBsb29uZ3Nvbi8KPiAgIG9i ai0kKENPTkZJR19EUk1fUE9XRVJWUikgKz0gaW1hZ2luYXRpb24vCj4gK29iai0kKENPTkZJR19E Uk1fVkVSSVNJTElDT05fREMpICs9IHZlcmlzaWxpY29uLwo+ICAgCj4gICAjIEVuc3VyZSBkcm0g aGVhZGVycyBhcmUgc2VsZi1jb250YWluZWQgYW5kIHBhc3Mga2VybmVsLWRvYwo+ICAgaGRydGVz dC1maWxlcyA6PSBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL0tjb25maWcKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLjAyMzU1NzdjNzI4MjQKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL0tjb25maWcKPiBAQCAt MCwwICsxLDE1IEBACj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ ICtjb25maWcgRFJNX1ZFUklTSUxJQ09OX0RDCj4gKwl0cmlzdGF0ZSAiRFJNIFN1cHBvcnQgZm9y IFZlcmlzaWxpY29uIERDLXNlcmllcyBkaXNwbGF5IGNvbnRyb2xsZXJzIgo+ICsJZGVwZW5kcyBv biBEUk0gJiYgQ09NTU9OX0NMSwo+ICsJZGVwZW5kcyBvbiBSSVNDViB8fCBDT01QSUxFUl9URVNU Cj4gKwlzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT04KPiArCXNlbGVjdCBEUk1fR0VNX0RNQV9I RUxQRVIKPiArCXNlbGVjdCBEUk1fS01TX0hFTFBFUgo+ICsJc2VsZWN0IERSTV9CUklER0VfQ09O TkVDVE9SCj4gKwlzZWxlY3QgUkVHTUFQX01NSU8KPiArCXNlbGVjdCBWSURFT01PREVfSEVMUEVS Uwo+ICsJaGVscAo+ICsJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBTb0Mgd2l0 aCBWZXJpc2lsaWNvbiBEQy1zZXJpZXMKPiArCSAgZGlzcGxheSBjb250cm9sbGVycy4gSWYgTSBp cyBzZWxlY3RlZCwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZAo+ICsJICB2ZXJpc2lsaWNvbi1k Yy4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5mZDhkODA1ZmJjZGUxCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi9NYWtlZmlsZQo+IEBAIC0wLDAgKzEs NSBAQAo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArCj4gK3Zl cmlzaWxpY29uLWRjLW9ianMgOj0gdnNfYnJpZGdlLm8gdnNfY3J0Yy5vIHZzX2RjLm8gdnNfZHJt Lm8gdnNfaHdkYi5vIHZzX3BsYW5lLm8gdnNfcHJpbWFyeV9wbGFuZS5vCj4gKwo+ICtvYmotJChD T05GSUdfRFJNX1ZFUklTSUxJQ09OX0RDKSArPSB2ZXJpc2lsaWNvbi1kYy5vCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1 L2RybS92ZXJpc2lsaWNvbi92c19icmlkZ2UuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwMC4uMmEwYWQwMGE5NGQ2ZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdlLmMKPiBAQCAtMCwwICsxLDM3MSBA QAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gKy8qCj4gKyAq IENvcHlyaWdodCAoQykgMjAyNSBJY2Vub3d5IFpoZW5nIDx1d3VAaWNlbm93eS5tZT4KPiArICov Cj4gKwo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5o Pgo+ICsKPiArI2luY2x1ZGUgPHVhcGkvbGludXgvbWVkaWEtYnVzLWZvcm1hdC5oPgo+ICsKPiAr I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19o ZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYnJpZGdlLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2JyaWRnZV9jb25uZWN0b3IuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+ Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fb2Yu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fc2lt cGxlX2ttc19oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlICJ2c19icmlkZ2UuaCIKPiArI2luY2x1 ZGUgInZzX2JyaWRnZV9yZWdzLmgiCj4gKyNpbmNsdWRlICJ2c19jcnRjLmgiCj4gKyNpbmNsdWRl ICJ2c19kYy5oIgo+ICsKPiArc3RhdGljIGludCB2c19icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4g KwkJCSAgICBlbnVtIGRybV9icmlkZ2VfYXR0YWNoX2ZsYWdzIGZsYWdzKQo+ICt7Cj4gKwlzdHJ1 Y3QgdnNfYnJpZGdlICp2YnJpZGdlID0gZHJtX2JyaWRnZV90b192c19icmlkZ2UoYnJpZGdlKTsK PiArCj4gKwlyZXR1cm4gZHJtX2JyaWRnZV9hdHRhY2goZW5jb2RlciwgdmJyaWRnZS0+bmV4dF9i cmlkZ2UsCj4gKwkJCQkgYnJpZGdlLCBmbGFncyk7Cj4gK30KPiArCj4gK3N0cnVjdCB2c2RjX2Rw X2Zvcm1hdCB7Cj4gKwl1MzIgbGludXhfZm10Owo+ICsJYm9vbCBpc195dXY7Cj4gKwl1MzIgdnNk Y19mbXQ7Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHZzZGNfZHBfZm9ybWF0IHZzZGNfZHBf c3VwcG9ydGVkX2ZtdHNbXSA9IHsKPiArCS8qIGRlZmF1bHQgdG8gUkdCODg4ICovCj4gKwl7IE1F RElBX0JVU19GTVRfRklYRUQsIGZhbHNlLCBWU0RDX0RJU1BfRFBfQ09ORklHX0ZNVF9SR0I4ODgg fSwKPiArCXsgTUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNCwgZmFsc2UsIFZTRENfRElTUF9EUF9D T05GSUdfRk1UX1JHQjg4OCB9LAo+ICsJeyBNRURJQV9CVVNfRk1UX1JHQjU2NV8xWDE2LCBmYWxz ZSwgVlNEQ19ESVNQX0RQX0NPTkZJR19GTVRfUkdCNTY1IH0sCj4gKwl7IE1FRElBX0JVU19GTVRf UkdCNjY2XzFYMTgsIGZhbHNlLCBWU0RDX0RJU1BfRFBfQ09ORklHX0ZNVF9SR0I2NjYgfSwKPiAr CXsgTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMCwKPiArCSAgZmFsc2UsIFZTRENfRElTUF9E UF9DT05GSUdfRk1UX1JHQjEwMTAxMCB9LAo+ICsJeyBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTYs IHRydWUsIFZTRENfRElTUF9EUF9DT05GSUdfWVVWX0ZNVF9VWVZZOCB9LAo+ICsJeyBNRURJQV9C VVNfRk1UX1VZVlkxMF8xWDIwLCB0cnVlLCBWU0RDX0RJU1BfRFBfQ09ORklHX1lVVl9GTVRfVVlW WTEwIH0sCj4gKwl7IE1FRElBX0JVU19GTVRfWVVWOF8xWDI0LCB0cnVlLCBWU0RDX0RJU1BfRFBf Q09ORklHX1lVVl9GTVRfWVVWOCB9LAo+ICsJeyBNRURJQV9CVVNfRk1UX1lVVjEwXzFYMzAsIHRy dWUsIFZTRENfRElTUF9EUF9DT05GSUdfWVVWX0ZNVF9ZVVYxMCB9LAo+ICsJeyBNRURJQV9CVVNf Rk1UX1VZWVZZWThfMF81WDI0LAo+ICsJICB0cnVlLCBWU0RDX0RJU1BfRFBfQ09ORklHX1lVVl9G TVRfVVlZVllZOCB9LAo+ICsJeyBNRURJQV9CVVNfRk1UX1VZWVZZWTEwXzBfNVgzMCwKPiArCSAg dHJ1ZSwgVlNEQ19ESVNQX0RQX0NPTkZJR19ZVVZfRk1UX1VZWVZZWTEwIH0sCj4gK307Cj4gKwo+ ICtzdGF0aWMgdTMyICp2c19icmlkZ2VfYXRvbWljX2dldF9vdXRwdXRfYnVzX2ZtdHNfZHBpKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkJc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUg KmJyaWRnZV9zdGF0ZSwKPiArCQkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gKwkJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gKwkJCQkJ dW5zaWduZWQgaW50ICpudW1fb3V0cHV0X2ZtdHMpCj4gK3sKPiArCXUzMiAqb3V0cHV0X2ZtdHM7 Cj4gKwo+ICsJKm51bV9vdXRwdXRfZm10cyA9IDI7Cj4gKwo+ICsJb3V0cHV0X2ZtdHMgPSBrY2Fs bG9jKCpudW1fb3V0cHV0X2ZtdHMsIHNpemVvZigqb3V0cHV0X2ZtdHMpLAo+ICsJCQkgICAgICBH RlBfS0VSTkVMKTsKPiArCWlmICghb3V0cHV0X2ZtdHMpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ ICsJLyogVE9ETzogc3VwcG9ydCBtb3JlIERQSSBvdXRwdXQgZm9ybWF0cyAqLwo+ICsJb3V0cHV0 X2ZtdHNbMF0gPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0Owo+ICsJb3V0cHV0X2ZtdHNbMV0g PSBNRURJQV9CVVNfRk1UX0ZJWEVEOwo+ICsKPiArCXJldHVybiBvdXRwdXRfZm10czsKPiArfQo+ ICsKPiArc3RhdGljIHUzMiAqdnNfYnJpZGdlX2F0b21pY19nZXRfb3V0cHV0X2J1c19mbXRzX2Rw KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkJc3RydWN0IGRybV9icmlkZ2Vfc3Rh dGUgKmJyaWRnZV9zdGF0ZSwKPiArCQkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gKwkJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gKwkJ CQkJdW5zaWduZWQgaW50ICpudW1fb3V0cHV0X2ZtdHMpCj4gK3sKPiArCXUzMiAqb3V0cHV0X2Zt dHM7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCj4gKwkqbnVtX291dHB1dF9mbXRzID0gQVJSQVlf U0laRSh2c2RjX2RwX3N1cHBvcnRlZF9mbXRzKTsKPiArCj4gKwlvdXRwdXRfZm10cyA9IGtjYWxs b2MoKm51bV9vdXRwdXRfZm10cywgc2l6ZW9mKCpvdXRwdXRfZm10cyksCj4gKwkJCSAgICAgIEdG UF9LRVJORUwpOwo+ICsJaWYgKCFvdXRwdXRfZm10cykKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4g Kwlmb3IgKGkgPSAwOyBpIDwgKm51bV9vdXRwdXRfZm10czsgaSsrKQo+ICsJCW91dHB1dF9mbXRz W2ldID0gdnNkY19kcF9zdXBwb3J0ZWRfZm10c1tpXS5saW51eF9mbXQ7Cj4gKwo+ICsJcmV0dXJu IG91dHB1dF9mbXRzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCB2c19icmlkZ2Vfb3V0X2RwX2Zt dF9zdXBwb3J0ZWQodTMyIG91dF9mbXQpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpOwo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZzZGNfZHBfc3VwcG9ydGVkX2ZtdHMpOyBpKysp Cj4gKwkJaWYgKHZzZGNfZHBfc3VwcG9ydGVkX2ZtdHNbaV0ubGludXhfZm10ID09IG91dF9mbXQp Cj4gKwkJCXJldHVybiB0cnVlOwo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3Rh dGljIHUzMiAqdnNfYnJpZGdlX2F0b21pY19nZXRfaW5wdXRfYnVzX2ZtdHNfZHAoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJCQlzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqYnJpZGdl X3N0YXRlLAo+ICsJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJ CQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPiArCQkJCQl1MzIgb3V0 cHV0X2ZtdCwKPiArCQkJCQl1bnNpZ25lZCBpbnQgKm51bV9pbnB1dF9mbXRzKQo+ICt7Cj4gKwlp ZiAoIXZzX2JyaWRnZV9vdXRfZHBfZm10X3N1cHBvcnRlZChvdXRwdXRfZm10KSkgewo+ICsJCSpu dW1faW5wdXRfZm10cyA9IDA7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9wcm9wYWdhdGVfYnVzX2ZtdChicmlkZ2UsIGJyaWRn ZV9zdGF0ZSwKPiArCQkJCQkJCSAgY3J0Y19zdGF0ZSwKPiArCQkJCQkJCSAgY29ubl9zdGF0ZSwK PiArCQkJCQkJCSAgb3V0cHV0X2ZtdCwKPiArCQkJCQkJCSAgbnVtX2lucHV0X2ZtdHMpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IHZzX2JyaWRnZV9hdG9taWNfY2hlY2tfZHAoc3RydWN0IGRybV9i cmlkZ2UgKmJyaWRnZSwKPiArCQkJCSAgICAgc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRn ZV9zdGF0ZSwKPiArCQkJCSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiArewo+ ICsJaWYgKCF2c19icmlkZ2Vfb3V0X2RwX2ZtdF9zdXBwb3J0ZWQoYnJpZGdlX3N0YXRlLT5vdXRw dXRfYnVzX2NmZy5mb3JtYXQpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19icmlkZ2VfZW5hYmxlX2NvbW1vbihzdHJ1Y3Qg dnNfY3J0YyAqY3J0YywKPiArCQkJCSAgICBzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqYnJfc3Rh dGUpCj4gK3sKPiArCXN0cnVjdCB2c19kYyAqZGMgPSBjcnRjLT5kYzsKPiArCXVuc2lnbmVkIGlu dCBvdXRwdXQgPSBjcnRjLT5pZDsKPiArCj4gKwlyZWdtYXBfY2xlYXJfYml0cyhkYy0+cmVncywg VlNEQ19ESVNQX1BBTkVMX0NPTkZJRyhvdXRwdXQpLAo+ICsJCQkgIFZTRENfRElTUF9QQU5FTF9D T05GSUdfREFUX1BPTCk7Cj4gKwlyZWdtYXBfYXNzaWduX2JpdHMoZGMtPnJlZ3MsIFZTRENfRElT UF9QQU5FTF9DT05GSUcob3V0cHV0KSwKPiArCQkJICAgVlNEQ19ESVNQX1BBTkVMX0NPTkZJR19E RV9QT0wsCj4gKwkJCSAgIGJyX3N0YXRlLT5vdXRwdXRfYnVzX2NmZy5mbGFncyAmCj4gKwkJCSAg IERSTV9CVVNfRkxBR19ERV9MT1cpOwo+ICsJcmVnbWFwX2Fzc2lnbl9iaXRzKGRjLT5yZWdzLCBW U0RDX0RJU1BfUEFORUxfQ09ORklHKG91dHB1dCksCj4gKwkJCSAgIFZTRENfRElTUF9QQU5FTF9D T05GSUdfQ0xLX1BPTCwKPiArCQkJICAgYnJfc3RhdGUtPm91dHB1dF9idXNfY2ZnLmZsYWdzICYK PiArCQkJICAgRFJNX0JVU19GTEFHX1BJWERBVEFfRFJJVkVfTkVHRURHRSk7Cj4gKwlyZWdtYXBf c2V0X2JpdHMoZGMtPnJlZ3MsIFZTRENfRElTUF9QQU5FTF9DT05GSUcob3V0cHV0KSwKPiArCQkJ VlNEQ19ESVNQX1BBTkVMX0NPTkZJR19ERV9FTiB8Cj4gKwkJCVZTRENfRElTUF9QQU5FTF9DT05G SUdfREFUX0VOIHwKPiArCQkJVlNEQ19ESVNQX1BBTkVMX0NPTkZJR19DTEtfRU4pOwo+ICsJcmVn bWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RDX0RJU1BfUEFORUxfQ09ORklHKG91dHB1dCksCj4g KwkJCVZTRENfRElTUF9QQU5FTF9DT05GSUdfUlVOTklORyk7Cj4gKwlyZWdtYXBfY2xlYXJfYml0 cyhkYy0+cmVncywgVlNEQ19ESVNQX1BBTkVMX1NUQVJULAo+ICsJCQkgIFZTRENfRElTUF9QQU5F TF9TVEFSVF9NVUxUSV9ESVNQX1NZTkMpOwo+ICsJcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBW U0RDX0RJU1BfUEFORUxfU1RBUlQsCj4gKwkJCVZTRENfRElTUF9QQU5FTF9TVEFSVF9SVU5OSU5H KG91dHB1dCkpOwo+ICsKPiArCXJlZ21hcF9zZXRfYml0cyhkYy0+cmVncywgVlNEQ19ESVNQX1BB TkVMX0NPTkZJR19FWChjcnRjLT5pZCksCj4gKwkJCVZTRENfRElTUF9QQU5FTF9DT05GSUdfRVhf Q09NTUlUKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnNfYnJpZGdlX2F0b21pY19lbmFibGVf ZHBpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkJc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgdnNfYnJpZGdlICp2YnJpZGdlID0gZHJtX2Jy aWRnZV90b192c19icmlkZ2UoYnJpZGdlKTsKPiArCXN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICpi cl9zdGF0ZSA9Cj4gKwkJZHJtX2F0b21pY19nZXRfbmV3X2JyaWRnZV9zdGF0ZShzdGF0ZSwgYnJp ZGdlKTsKPiArCXN0cnVjdCB2c19jcnRjICpjcnRjID0gdmJyaWRnZS0+Y3J0YzsKPiArCXN0cnVj dCB2c19kYyAqZGMgPSBjcnRjLT5kYzsKPiArCXVuc2lnbmVkIGludCBvdXRwdXQgPSBjcnRjLT5p ZDsKPiArCj4gKwlyZWdtYXBfY2xlYXJfYml0cyhkYy0+cmVncywgVlNEQ19ESVNQX0RQX0NPTkZJ RyhvdXRwdXQpLAo+ICsJCQkgIFZTRENfRElTUF9EUF9DT05GSUdfRFBfRU4pOwo+ICsJcmVnbWFw X3dyaXRlKGRjLT5yZWdzLCBWU0RDX0RJU1BfRFBJX0NPTkZJRyhvdXRwdXQpLAo+ICsJCSAgICAg VlNEQ19ESVNQX0RQSV9DT05GSUdfRk1UX1JHQjg4OCk7Cj4gKwo+ICsJdnNfYnJpZGdlX2VuYWJs ZV9jb21tb24oY3J0YywgYnJfc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19icmlk Z2VfYXRvbWljX2VuYWJsZV9kcChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IHZzX2JyaWRnZSAq dmJyaWRnZSA9IGRybV9icmlkZ2VfdG9fdnNfYnJpZGdlKGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgZHJt X2JyaWRnZV9zdGF0ZSAqYnJfc3RhdGUgPQo+ICsJCWRybV9hdG9taWNfZ2V0X25ld19icmlkZ2Vf c3RhdGUoc3RhdGUsIGJyaWRnZSk7Cj4gKwlzdHJ1Y3QgdnNfY3J0YyAqY3J0YyA9IHZicmlkZ2Ut PmNydGM7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gY3J0Yy0+ZGM7Cj4gKwl1bnNpZ25lZCBpbnQg b3V0cHV0ID0gY3J0Yy0+aWQ7Cj4gKwl1MzIgZHBfZm10Owo+ICsJdW5zaWduZWQgaW50IGk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodnNkY19kcF9zdXBwb3J0ZWRfZm10cyk7 IGkrKykgewo+ICsJCWlmICh2c2RjX2RwX3N1cHBvcnRlZF9mbXRzW2ldLmxpbnV4X2ZtdCA9PQo+ ICsJCSAgICBicl9zdGF0ZS0+b3V0cHV0X2J1c19jZmcuZm9ybWF0KQo+ICsJCQlicmVhazsKPiAr CX0KPiArCWlmIChXQVJOX09OX09OQ0UoaSA9PSBBUlJBWV9TSVpFKHZzZGNfZHBfc3VwcG9ydGVk X2ZtdHMpKSkKPiArCQlyZXR1cm47Cj4gKwlkcF9mbXQgPSB2c2RjX2RwX3N1cHBvcnRlZF9mbXRz W2ldLnZzZGNfZm10Owo+ICsJZHBfZm10IHw9IFZTRENfRElTUF9EUF9DT05GSUdfRFBfRU47Cj4g KwlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRElTUF9EUF9DT05GSUcob3V0cHV0KSwgZHBf Zm10KTsKPiArCXJlZ21hcF9hc3NpZ25fYml0cyhkYy0+cmVncywgVlNEQ19ESVNQX1BBTkVMX0NP TkZJRyhvdXRwdXQpLAo+ICsJCQkgICBWU0RDX0RJU1BfUEFORUxfQ09ORklHX1lVViwKPiArCQkJ ICAgdnNkY19kcF9zdXBwb3J0ZWRfZm10c1tpXS5pc195dXYpOwo+ICsKPiArCXZzX2JyaWRnZV9l bmFibGVfY29tbW9uKGNydGMsIGJyX3N0YXRlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnNf YnJpZGdlX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCQkg ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IHZzX2Jy aWRnZSAqdmJyaWRnZSA9IGRybV9icmlkZ2VfdG9fdnNfYnJpZGdlKGJyaWRnZSk7Cj4gKwlzdHJ1 Y3QgdnNfY3J0YyAqY3J0YyA9IHZicmlkZ2UtPmNydGM7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0g Y3J0Yy0+ZGM7Cj4gKwl1bnNpZ25lZCBpbnQgb3V0cHV0ID0gY3J0Yy0+aWQ7Cj4gKwo+ICsJcmVn bWFwX2NsZWFyX2JpdHMoZGMtPnJlZ3MsIFZTRENfRElTUF9QQU5FTF9TVEFSVCwKPiArCQkJICBW U0RDX0RJU1BfUEFORUxfU1RBUlRfTVVMVElfRElTUF9TWU5DIHwKPiArCQkJICBWU0RDX0RJU1Bf UEFORUxfU1RBUlRfUlVOTklORyhvdXRwdXQpKTsKPiArCXJlZ21hcF9jbGVhcl9iaXRzKGRjLT5y ZWdzLCBWU0RDX0RJU1BfUEFORUxfQ09ORklHKG91dHB1dCksCj4gKwkJCSAgVlNEQ19ESVNQX1BB TkVMX0NPTkZJR19SVU5OSU5HKTsKPiArCj4gKwlyZWdtYXBfc2V0X2JpdHMoZGMtPnJlZ3MsIFZT RENfRElTUF9QQU5FTF9DT05GSUdfRVgoY3J0Yy0+aWQpLAo+ICsJCQlWU0RDX0RJU1BfUEFORUxf Q09ORklHX0VYX0NPTU1JVCk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Jy aWRnZV9mdW5jcyB2c19kcGlfYnJpZGdlX2Z1bmNzID0gewo+ICsJLmF0dGFjaCA9IHZzX2JyaWRn ZV9hdHRhY2gsCj4gKwkuYXRvbWljX2VuYWJsZSA9IHZzX2JyaWRnZV9hdG9taWNfZW5hYmxlX2Rw aSwKPiArCS5hdG9taWNfZGlzYWJsZSA9IHZzX2JyaWRnZV9hdG9taWNfZGlzYWJsZSwKPiArCS5h dG9taWNfZ2V0X2lucHV0X2J1c19mbXRzID0gZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX3Byb3Bh Z2F0ZV9idXNfZm10LAo+ICsJLmF0b21pY19nZXRfb3V0cHV0X2J1c19mbXRzID0gdnNfYnJpZGdl X2F0b21pY19nZXRfb3V0cHV0X2J1c19mbXRzX2RwaSwKPiArCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfYnJpZGdlX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kZXN0cm95X3N0YXRl LAo+ICsJLmF0b21pY19yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9yZXNldCwKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyB2c19kcF9icmlk Z2VfZnVuY3MgPSB7Cj4gKwkuYXR0YWNoID0gdnNfYnJpZGdlX2F0dGFjaCwKPiArCS5hdG9taWNf ZW5hYmxlID0gdnNfYnJpZGdlX2F0b21pY19lbmFibGVfZHAsCj4gKwkuYXRvbWljX2Rpc2FibGUg PSB2c19icmlkZ2VfYXRvbWljX2Rpc2FibGUsCj4gKwkuYXRvbWljX2NoZWNrID0gdnNfYnJpZGdl X2F0b21pY19jaGVja19kcCwKPiArCS5hdG9taWNfZ2V0X2lucHV0X2J1c19mbXRzID0gdnNfYnJp ZGdlX2F0b21pY19nZXRfaW5wdXRfYnVzX2ZtdHNfZHAsCj4gKwkuYXRvbWljX2dldF9vdXRwdXRf YnVzX2ZtdHMgPSB2c19icmlkZ2VfYXRvbWljX2dldF9vdXRwdXRfYnVzX2ZtdHNfZHAsCj4gKwku YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2JyaWRnZV9kdXBsaWNh dGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9i cmlkZ2VfZGVzdHJveV9zdGF0ZSwKPiArCS5hdG9taWNfcmVzZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9icmlkZ2VfcmVzZXQsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHZzX2JyaWRnZV9kZXRlY3Rf b3V0cHV0X2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX25vZGUsCj4gKwkJCQkJICAg ICB1bnNpZ25lZCBpbnQgb3V0cHV0KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGRldmlj ZV9ub2RlICpyZW1vdGU7Cj4gKwo+ICsJcmVtb3RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2Rl KG9mX25vZGUsIG91dHB1dCwKPiArCQkJCQkgIFZTRENfT1VUUFVUX0lOVEVSRkFDRV9EUEkpOwo+ ICsJaWYgKHJlbW90ZSkgewo+ICsJCXJldCA9IFZTRENfT1VUUFVUX0lOVEVSRkFDRV9EUEk7Cj4g Kwl9IGVsc2Ugewo+ICsJCXJlbW90ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfbm9kZShvZl9ub2Rl LCBvdXRwdXQsCj4gKwkJCQkJCSAgVlNEQ19PVVRQVVRfSU5URVJGQUNFX0RQKTsKPiArCQlpZiAo cmVtb3RlKQo+ICsJCQlyZXQgPSBWU0RDX09VVFBVVF9JTlRFUkZBQ0VfRFA7Cj4gKwkJZWxzZQo+ ICsJCQlyZXQgPSAtRU5PREVWOwo+ICsJfQo+ICsKPiArCWlmIChyZW1vdGUpCj4gKwkJb2Zfbm9k ZV9wdXQocmVtb3RlKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgdnNf YnJpZGdlICp2c19icmlkZ2VfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwKPiArCQkJ CSBzdHJ1Y3QgdnNfY3J0YyAqY3J0YykKPiArewo+ICsJdW5zaWduZWQgaW50IG91dHB1dCA9IGNy dGMtPmlkOwo+ICsJc3RydWN0IHZzX2JyaWRnZSAqYnJpZGdlOwo+ICsJc3RydWN0IGRybV9icmlk Z2UgKm5leHQ7Cj4gKwllbnVtIHZzX2JyaWRnZV9vdXRwdXRfaW50ZXJmYWNlIGludGY7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAqYnJpZGdlX2Z1bmNzOwo+ICsJaW50IHJldCwg ZW5jdHlwZTsKPiArCj4gKwlpbnRmID0gdnNfYnJpZGdlX2RldGVjdF9vdXRwdXRfaW50ZXJmYWNl KGRybV9kZXYtPmRldi0+b2Zfbm9kZSwKPiArCQkJCQkJIG91dHB1dCk7Cj4gKwlpZiAoaW50ZiA9 PSAtRU5PREVWKSB7Cj4gKwkJZHJtX2RiZyhkcm1fZGV2LCAiU2tpcHBpbmcgb3V0cHV0ICV1XG4i LCBvdXRwdXQpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsKPiArCW5leHQgPSBkZXZtX2Ry bV9vZl9nZXRfYnJpZGdlKGRybV9kZXYtPmRldiwgZHJtX2Rldi0+ZGV2LT5vZl9ub2RlLAo+ICsJ CQkJICAgICAgb3V0cHV0LCBpbnRmKTsKPiArCWlmIChJU19FUlIobmV4dCkpIHsKPiArCQlyZXQg PSBQVFJfRVJSKG5leHQpOwo+ICsJCWlmIChyZXQgIT0gLUVQUk9CRV9ERUZFUikKPiArCQkJZHJt X2Vycihkcm1fZGV2LAo+ICsJCQkJIkNhbm5vdCBnZXQgZG93bnN0cmVhbSBicmlkZ2Ugb2Ygb3V0 cHV0ICV1XG4iLAo+ICsJCQkJb3V0cHV0KTsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICsJ fQo+ICsKPiArCWlmIChpbnRmID09IFZTRENfT1VUUFVUX0lOVEVSRkFDRV9EUEkpCj4gKwkJYnJp ZGdlX2Z1bmNzID0gJnZzX2RwaV9icmlkZ2VfZnVuY3M7Cj4gKwllbHNlCj4gKwkJYnJpZGdlX2Z1 bmNzID0gJnZzX2RwX2JyaWRnZV9mdW5jczsKPiArCj4gKwlicmlkZ2UgPSBkZXZtX2RybV9icmlk Z2VfYWxsb2MoZHJtX2Rldi0+ZGV2LCBzdHJ1Y3QgdnNfYnJpZGdlLCBiYXNlLAo+ICsJCQkJICAg ICAgIGJyaWRnZV9mdW5jcyk7Cj4gKwlpZiAoSVNfRVJSKGJyaWRnZSkpCj4gKwkJcmV0dXJuIEVS Ul9QVFIoUFRSX0VSUihicmlkZ2UpKTsKPiArCj4gKwlicmlkZ2UtPmNydGMgPSBjcnRjOwo+ICsJ YnJpZGdlLT5pbnRmID0gaW50ZjsKPiArCWJyaWRnZS0+bmV4dF9icmlkZ2UgPSBuZXh0Owo+ICsK PiArCWlmIChpbnRmID09IFZTRENfT1VUUFVUX0lOVEVSRkFDRV9EUEkpCj4gKwkJZW5jdHlwZSA9 IERSTV9NT0RFX0VOQ09ERVJfRFBJOwo+ICsJZWxzZQo+ICsJCWVuY3R5cGUgPSBEUk1fTU9ERV9F TkNPREVSX05PTkU7Cj4gKwo+ICsJYnJpZGdlLT5lbmMgPSBkcm1tX3BsYWluX2VuY29kZXJfYWxs b2MoZHJtX2RldiwgTlVMTCwgZW5jdHlwZSwgTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKGJyaWRnZS0+ ZW5jKSkgewo+ICsJCWRybV9lcnIoZHJtX2RldiwKPiArCQkJIkNhbm5vdCBpbml0aWFsaXplIGVu Y29kZXIgZm9yIG91dHB1dCAldVxuIiwgb3V0cHV0KTsKPiArCQlyZXQgPSBQVFJfRVJSKGJyaWRn ZS0+ZW5jKTsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICsJfQo+ICsKPiArCWJyaWRnZS0+ ZW5jLT5wb3NzaWJsZV9jcnRjcyA9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwo+ICsKPiAr CXJldCA9IGRldm1fZHJtX2JyaWRnZV9hZGQoZHJtX2Rldi0+ZGV2LCAmYnJpZGdlLT5iYXNlKTsK PiArCWlmIChyZXQpIHsKPiArCQlkcm1fZXJyKGRybV9kZXYsCj4gKwkJCSJDYW5ub3QgYWRkIGJy aWRnZSBmb3Igb3V0cHV0ICV1XG4iLCBvdXRwdXQpOwo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7 Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJtX2JyaWRnZV9hdHRhY2goYnJpZGdlLT5lbmMsICZicmlk Z2UtPmJhc2UsIE5VTEwsCj4gKwkJCQlEUk1fQlJJREdFX0FUVEFDSF9OT19DT05ORUNUT1IpOwo+ ICsJaWYgKHJldCkgewo+ICsJCWRybV9lcnIoZHJtX2RldiwKPiArCQkJIkNhbm5vdCBhdHRhY2gg YnJpZGdlIGZvciBvdXRwdXQgJXVcbiIsIG91dHB1dCk7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0 KTsKPiArCX0KPiArCj4gKwlicmlkZ2UtPmNvbm4gPSBkcm1fYnJpZGdlX2Nvbm5lY3Rvcl9pbml0 KGRybV9kZXYsIGJyaWRnZS0+ZW5jKTsKPiArCWlmIChJU19FUlIoYnJpZGdlLT5jb25uKSkgewo+ ICsJCWRybV9lcnIoZHJtX2RldiwKPiArCQkJIkNhbm5vdCBjcmVhdGUgY29ubmVjdG9yIGZvciBv dXRwdXQgJXVcbiIsIG91dHB1dCk7Cj4gKwkJcmV0ID0gUFRSX0VSUihicmlkZ2UtPmNvbm4pOwo+ ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwl9Cj4gKwlkcm1fY29ubmVjdG9yX2F0dGFjaF9l bmNvZGVyKGJyaWRnZS0+Y29ubiwgYnJpZGdlLT5lbmMpOwo+ICsKPiArCXJldHVybiBicmlkZ2U7 Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2JyaWRn ZS5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2JyaWRnZS5oCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi43MGZlZTE3NDk2OTlhCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19icmlkZ2UuaAo+ IEBAIC0wLDAgKzEsMzkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgSWNlbm93eSBaaGVuZyA8dXd1 QGljZW5vd3kubWU+Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfVlNfQlJJREdFX0hfCj4gKyNkZWZp bmUgX1ZTX0JSSURHRV9IXwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICsj aW5jbHVkZSA8ZHJtL2RybV9icmlkZ2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9y Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiArCj4gK3N0cnVjdCB2c19jcnRj Owo+ICsKPiArZW51bSB2c19icmlkZ2Vfb3V0cHV0X2ludGVyZmFjZSB7Cj4gKwlWU0RDX09VVFBV VF9JTlRFUkZBQ0VfRFBJID0gMCwKPiArCVZTRENfT1VUUFVUX0lOVEVSRkFDRV9EUCA9IDEKPiAr fTsKPiArCj4gK3N0cnVjdCB2c19icmlkZ2Ugewo+ICsJc3RydWN0IGRybV9icmlkZ2UgYmFzZTsK PiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm47Cj4gKwo+ICsJc3RydWN0IHZzX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2JyaWRnZSAq bmV4dF9icmlkZ2U7Cj4gKwllbnVtIHZzX2JyaWRnZV9vdXRwdXRfaW50ZXJmYWNlIGludGY7Cj4g K307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB2c19icmlkZ2UgKmRybV9icmlkZ2VfdG9f dnNfYnJpZGdlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gK3sKPiArCXJldHVybiBjb250 YWluZXJfb2YoYnJpZGdlLCBzdHJ1Y3QgdnNfYnJpZGdlLCBiYXNlKTsKPiArfQo+ICsKPiArc3Ry dWN0IHZzX2JyaWRnZSAqdnNfYnJpZGdlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYs Cj4gKwkJCQkgc3RydWN0IHZzX2NydGMgKmNydGMpOwo+ICsjZW5kaWYgLyogX1ZTX0JSSURHRV9I XyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfYnJpZGdl X3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19icmlkZ2VfcmVncy5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi45ZWIzMGU0NTY0YmVi Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19i cmlkZ2VfcmVncy5oCj4gQEAgLTAsMCArMSw1NCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBJY2Vu b3d5IFpoZW5nIDx1d3VAaWNlbm93eS5tZT4KPiArICoKPiArICogQmFzZWQgb24gdnNfZGNfaHcu aCwgd2hpY2ggaXM6Cj4gKyAqICAgQ29weXJpZ2h0IChDKSAyMDIzIFZlcmlTaWxpY29uIEhvbGRp bmdzIENvLiwgTHRkLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX1ZTX0JSSURHRV9SRUdTX0hfCj4g KyNkZWZpbmUgX1ZTX0JSSURHRV9SRUdTX0hfCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYml0cy5o Pgo+ICsKPiArI2RlZmluZSBWU0RDX0RJU1BfUEFORUxfQ09ORklHKG4pCQkoMHgxNDE4ICsgMHg0 ICogKG4pKQo+ICsjZGVmaW5lIFZTRENfRElTUF9QQU5FTF9DT05GSUdfREVfRU4JCUJJVCgwKQo+ ICsjZGVmaW5lIFZTRENfRElTUF9QQU5FTF9DT05GSUdfREVfUE9MCQlCSVQoMSkKPiArI2RlZmlu ZSBWU0RDX0RJU1BfUEFORUxfQ09ORklHX0RBVF9FTgkJQklUKDQpCj4gKyNkZWZpbmUgVlNEQ19E SVNQX1BBTkVMX0NPTkZJR19EQVRfUE9MCQlCSVQoNSkKPiArI2RlZmluZSBWU0RDX0RJU1BfUEFO RUxfQ09ORklHX0NMS19FTgkJQklUKDgpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX0NPTkZJ R19DTEtfUE9MCQlCSVQoOSkKPiArI2RlZmluZSBWU0RDX0RJU1BfUEFORUxfQ09ORklHX1JVTk5J TkcJCUJJVCgxMikKPiArI2RlZmluZSBWU0RDX0RJU1BfUEFORUxfQ09ORklHX0dBTU1BCQlCSVQo MTMpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX0NPTkZJR19ZVVYJCUJJVCgxNikKPiArCj4g KyNkZWZpbmUgVlNEQ19ESVNQX0RQSV9DT05GSUcobikJCQkoMHgxNEI4ICsgMHg0ICogKG4pKQo+ ICsjZGVmaW5lIFZTRENfRElTUF9EUElfQ09ORklHX0ZNVF9NQVNLCQlHRU5NQVNLKDIsIDApCj4g KyNkZWZpbmUgVlNEQ19ESVNQX0RQSV9DT05GSUdfRk1UX1JHQjU2NQkJKDApCj4gKyNkZWZpbmUg VlNEQ19ESVNQX0RQSV9DT05GSUdfRk1UX1JHQjY2NgkJKDMpCj4gKyNkZWZpbmUgVlNEQ19ESVNQ X0RQSV9DT05GSUdfRk1UX1JHQjg4OAkJKDUpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQSV9DT05G SUdfRk1UX1JHQjEwMTAxMAkoNikKPiArCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX1NUQVJU CQkJMHgxQ0NDCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX1NUQVJUX1JVTk5JTkcobikJQklU KG4pCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX1NUQVJUX01VTFRJX0RJU1BfU1lOQwlCSVQo MykKPiArCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJRyhuKQkJCSgweDFDRDAgKyAweDQg KiAobikpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJR19EUF9FTgkJQklUKDMpCj4gKyNk ZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJR19GTVRfTUFTSwkJR0VOTUFTSygyLCAwKQo+ICsjZGVm aW5lIFZTRENfRElTUF9EUF9DT05GSUdfRk1UX1JHQjU2NQkJKDApCj4gKyNkZWZpbmUgVlNEQ19E SVNQX0RQX0NPTkZJR19GTVRfUkdCNjY2CQkoMSkKPiArI2RlZmluZSBWU0RDX0RJU1BfRFBfQ09O RklHX0ZNVF9SR0I4ODgJCSgyKQo+ICsjZGVmaW5lIFZTRENfRElTUF9EUF9DT05GSUdfRk1UX1JH QjEwMTAxMAkoMykKPiArI2RlZmluZSBWU0RDX0RJU1BfRFBfQ09ORklHX1lVVl9GTVRfTUFTSwlH RU5NQVNLKDcsIDQpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJR19ZVVZfRk1UX1VZVlk4 CSgyIDw8IDQpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJR19ZVVZfRk1UX1lVVjgJKDQg PDwgNCkKPiArI2RlZmluZSBWU0RDX0RJU1BfRFBfQ09ORklHX1lVVl9GTVRfVVlWWTEwCSg4IDw8 IDQpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RQX0NPTkZJR19ZVVZfRk1UX1lVVjEwCSgxMCA8PCA0 KQo+ICsjZGVmaW5lIFZTRENfRElTUF9EUF9DT05GSUdfWVVWX0ZNVF9VWVlWWVk4CSgxMiA8PCA0 KQo+ICsjZGVmaW5lIFZTRENfRElTUF9EUF9DT05GSUdfWVVWX0ZNVF9VWVlWWVkxMAkoMTMgPDwg NCkKPiArCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1BBTkVMX0NPTkZJR19FWChuKQkJKDB4MjUxOCAr IDB4NCAqIChuKSkKPiArI2RlZmluZSBWU0RDX0RJU1BfUEFORUxfQ09ORklHX0VYX0NPTU1JVAlC SVQoMCkKPiArCj4gKyNlbmRpZiAvKiBfVlNfQlJJREdFX1JFR1NfSF8gKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS92ZXJpc2lsaWNvbi92c19jcnRjLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMDAuLmY0OTQwMTcxMzAwMDYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuYwo+IEBAIC0wLDAgKzEsMTkxIEBACj4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyoKPiArICogQ29weXJp Z2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vub3d5Lm1lPgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsj aW5jbHVkZSA8bGludXgvdW5pdHMuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fdmJsYW5rX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgInZzX2NydGNfcmVncy5o Igo+ICsjaW5jbHVkZSAidnNfY3J0Yy5oIgo+ICsjaW5jbHVkZSAidnNfZGMuaCIKPiArI2luY2x1 ZGUgInZzX2RjX3RvcF9yZWdzLmgiCj4gKyNpbmNsdWRlICJ2c19kcm0uaCIKPiArI2luY2x1ZGUg InZzX3BsYW5lLmgiCj4gKwo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2F0b21pY19kaXNhYmxlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiArewo+ICsJc3RydWN0IHZzX2NydGMgKnZjcnRjID0gZHJtX2NydGNfdG9fdnNfY3J0 YyhjcnRjKTsKPiArCXN0cnVjdCB2c19kYyAqZGMgPSB2Y3J0Yy0+ZGM7Cj4gKwl1bnNpZ25lZCBp bnQgb3V0cHV0ID0gdmNydGMtPmlkOwo+ICsKPiArCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7 Cj4gKwo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRjLT5waXhfY2xrW291dHB1dF0pOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICsJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiAr CXN0cnVjdCB2c19jcnRjICp2Y3J0YyA9IGRybV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4gKwlz dHJ1Y3QgdnNfZGMgKmRjID0gdmNydGMtPmRjOwo+ICsJdW5zaWduZWQgaW50IG91dHB1dCA9IHZj cnRjLT5pZDsKPiArCj4gKwlkcm1fV0FSTl9PTigmZGMtPmRybV9kZXYtPmJhc2UsCj4gKwkJICAg IGNsa19wcmVwYXJlX2VuYWJsZShkYy0+cGl4X2Nsa1tvdXRwdXRdKSk7Cj4gKwo+ICsJZHJtX2Ny dGNfdmJsYW5rX29uKGNydGMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19jcnRjX21vZGVf c2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCB2 c19jcnRjICp2Y3J0YyA9IGRybV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgdnNf ZGMgKmRjID0gdmNydGMtPmRjOwo+ICsJdW5zaWduZWQgaW50IG91dHB1dCA9IHZjcnRjLT5pZDsK PiArCj4gKwlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRElTUF9IU0laRShvdXRwdXQpLAo+ ICsJCSAgICAgVlNEQ19ESVNQX0hTSVpFX0RJU1AobW9kZS0+aGRpc3BsYXkpIHwKPiArCQkgICAg IFZTRENfRElTUF9IU0laRV9UT1RBTChtb2RlLT5odG90YWwpKTsKPiArCXJlZ21hcF93cml0ZShk Yy0+cmVncywgVlNEQ19ESVNQX1ZTSVpFKG91dHB1dCksCj4gKwkJICAgICBWU0RDX0RJU1BfVlNJ WkVfRElTUChtb2RlLT52ZGlzcGxheSkgfAo+ICsJCSAgICAgVlNEQ19ESVNQX1ZTSVpFX1RPVEFM KG1vZGUtPnZ0b3RhbCkpOwo+ICsJcmVnbWFwX3dyaXRlKGRjLT5yZWdzLCBWU0RDX0RJU1BfSFNZ TkMob3V0cHV0KSwKPiArCQkgICAgIFZTRENfRElTUF9IU1lOQ19TVEFSVChtb2RlLT5oc3luY19z dGFydCkgfAo+ICsJCSAgICAgVlNEQ19ESVNQX0hTWU5DX0VORChtb2RlLT5oc3luY19lbmQpIHwK PiArCQkgICAgIFZTRENfRElTUF9IU1lOQ19FTik7Cj4gKwlpZiAoIShtb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfUEhTWU5DKSkKPiArCQlyZWdtYXBfc2V0X2JpdHMoZGMtPnJlZ3MsIFZTRENf RElTUF9IU1lOQyhvdXRwdXQpLAo+ICsJCQkJVlNEQ19ESVNQX0hTWU5DX1BPTCk7Cj4gKwlyZWdt YXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRElTUF9WU1lOQyhvdXRwdXQpLAo+ICsJCSAgICAgVlNE Q19ESVNQX1ZTWU5DX1NUQVJUKG1vZGUtPnZzeW5jX3N0YXJ0KSB8Cj4gKwkJICAgICBWU0RDX0RJ U1BfVlNZTkNfRU5EKG1vZGUtPnZzeW5jX2VuZCkgfAo+ICsJCSAgICAgVlNEQ19ESVNQX1ZTWU5D X0VOKTsKPiArCWlmICghKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QVlNZTkMpKQo+ICsJ CXJlZ21hcF9zZXRfYml0cyhkYy0+cmVncywgVlNEQ19ESVNQX1ZTWU5DKG91dHB1dCksCj4gKwkJ CQlWU0RDX0RJU1BfVlNZTkNfUE9MKTsKPiArCj4gKwlXQVJOX09OKGNsa19zZXRfcmF0ZShkYy0+ cGl4X2Nsa1tvdXRwdXRdLCBtb2RlLT5jcnRjX2Nsb2NrICogMTAwMCkpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKPiArdnNfY3J0Y19tb2RlX3ZhbGlkKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gK3sK PiArCXN0cnVjdCB2c19jcnRjICp2Y3J0YyA9IGRybV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4g KwlzdHJ1Y3QgdnNfZGMgKmRjID0gdmNydGMtPmRjOwo+ICsJdW5zaWduZWQgaW50IG91dHB1dCA9 IHZjcnRjLT5pZDsKPiArCWxvbmcgcmF0ZTsKPiArCj4gKwlpZiAobW9kZS0+aHRvdGFsID4gVlNE Q19ESVNQX1RJTUlOR19WQUxVRV9NQVgpCj4gKwkJcmV0dXJuIE1PREVfQkFEX0hWQUxVRTsKPiAr CWlmIChtb2RlLT52dG90YWwgPiBWU0RDX0RJU1BfVElNSU5HX1ZBTFVFX01BWCkKPiArCQlyZXR1 cm4gTU9ERV9CQURfVlZBTFVFOwo+ICsKPiArCXJhdGUgPSBjbGtfcm91bmRfcmF0ZShkYy0+cGl4 X2Nsa1tvdXRwdXRdLCBtb2RlLT5jbG9jayAqIEhaX1BFUl9LSFopOwo+ICsJaWYgKHJhdGUgPD0g MCkKPiArCQlyZXR1cm4gTU9ERV9DTE9DS19SQU5HRTsKPiArCj4gKwlyZXR1cm4gTU9ERV9PSzsK PiArfQo+ICsKPiArc3RhdGljIGJvb2wgdnNfY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiArCQkJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptLAo+ ICsJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCj4gK3sK PiArCXN0cnVjdCB2c19jcnRjICp2Y3J0YyA9IGRybV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4g KwlzdHJ1Y3QgdnNfZGMgKmRjID0gdmNydGMtPmRjOwo+ICsJdW5zaWduZWQgaW50IG91dHB1dCA9 IHZjcnRjLT5pZDsKPiArCWxvbmcgY2xrX3JhdGU7Cj4gKwo+ICsJZHJtX21vZGVfc2V0X2NydGNp bmZvKGFkanVzdGVkX21vZGUsIDApOwo+ICsKPiArCS8qIEZlZWRiYWNrIHRoZSBwaXhlbCBjbG9j ayB0byBjcnRjX2Nsb2NrICovCj4gKwljbGtfcmF0ZSA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xv Y2sgKiBIWl9QRVJfS0haOwo+ICsJY2xrX3JhdGUgPSBjbGtfcm91bmRfcmF0ZShkYy0+cGl4X2Ns a1tvdXRwdXRdLCBjbGtfcmF0ZSk7Cj4gKwlpZiAoY2xrX3JhdGUgPD0gMCkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9IGNsa19yYXRlIC8gSFpf UEVSX0tIWjsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgdnNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gKwku YXRvbWljX2ZsdXNoCT0gZHJtX2NydGNfdmJsYW5rX2F0b21pY19mbHVzaCwKPiArCS5hdG9taWNf ZW5hYmxlCT0gdnNfY3J0Y19hdG9taWNfZW5hYmxlLAo+ICsJLmF0b21pY19kaXNhYmxlCT0gdnNf Y3J0Y19hdG9taWNfZGlzYWJsZSwKPiArCS5tb2RlX3NldF9ub2ZiCT0gdnNfY3J0Y19tb2RlX3Nl dF9ub2ZiLAo+ICsJLm1vZGVfdmFsaWQJPSB2c19jcnRjX21vZGVfdmFsaWQsCj4gKwkubW9kZV9m aXh1cAk9IHZzX2NydGNfbW9kZV9maXh1cCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgdnNfY3J0 Y19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IHZz X2NydGMgKnZjcnRjID0gZHJtX2NydGNfdG9fdnNfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCB2c19k YyAqZGMgPSB2Y3J0Yy0+ZGM7Cj4gKwo+ICsJcmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RD X1RPUF9JUlFfRU4sIFZTRENfVE9QX0lSUV9WU1lOQyh2Y3J0Yy0+aWQpKTsKPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnNfY3J0Y19kaXNhYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCB2c19jcnRjICp2Y3J0YyA9IGRybV9j cnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gdmNydGMtPmRjOwo+ ICsKPiArCXJlZ21hcF9jbGVhcl9iaXRzKGRjLT5yZWdzLCBWU0RDX1RPUF9JUlFfRU4sIFZTRENf VE9QX0lSUV9WU1lOQyh2Y3J0Yy0+aWQpKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY3J0Y19mdW5jcyB2c19jcnRjX2Z1bmNzID0gewo+ICsJLmF0b21pY19kZXN0cm95X3N0 YXRlCT0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAo+ICsJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwK PiArCS5wYWdlX2ZsaXAJCT0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAo+ICsJLnJlc2V0 CQkJPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAo+ICsJLnNldF9jb25maWcJCT0gZHJt X2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiArCS5lbmFibGVfdmJsYW5rCQk9IHZzX2NydGNf ZW5hYmxlX3ZibGFuaywKPiArCS5kaXNhYmxlX3ZibGFuawkJPSB2c19jcnRjX2Rpc2FibGVfdmJs YW5rLAo+ICt9Owo+ICsKPiArc3RydWN0IHZzX2NydGMgKnZzX2NydGNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtX2Rldiwgc3RydWN0IHZzX2RjICpkYywKPiArCQkJICAgICB1bnNpZ25lZCBp bnQgb3V0cHV0KQo+ICt7Cj4gKwlzdHJ1Y3QgdnNfY3J0YyAqdmNydGM7Cj4gKwlzdHJ1Y3QgZHJt X3BsYW5lICpwcmltYXJ5Owo+ICsJaW50IHJldDsKPiArCj4gKwl2Y3J0YyA9IGRybW1fa3phbGxv Yyhkcm1fZGV2LCBzaXplb2YoKnZjcnRjKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXZjcnRjKQo+ ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsJdmNydGMtPmRjID0gZGM7Cj4gKwl2Y3J0 Yy0+aWQgPSBvdXRwdXQ7Cj4gKwo+ICsJLyogQ3JlYXRlIG91ciBwcmltYXJ5IHBsYW5lICovCj4g KwlwcmltYXJ5ID0gdnNfcHJpbWFyeV9wbGFuZV9pbml0KGRybV9kZXYsIGRjKTsKPiArCWlmIChJ U19FUlIocHJpbWFyeSkpIHsKPiArCQlkcm1fZXJyKGRybV9kZXYsICJDb3VsZG4ndCBjcmVhdGUg dGhlIHByaW1hcnkgcGxhbmVcbiIpOwo+ICsJCXJldHVybiBFUlJfUFRSKFBUUl9FUlIocHJpbWFy eSkpOwo+ICsJfQo+ICsKPiArCXJldCA9IGRybW1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRybV9k ZXYsICZ2Y3J0Yy0+YmFzZSwKPiArCQkJCQkgcHJpbWFyeSwKPiArCQkJCQkgTlVMTCwKPiArCQkJ CQkgJnZzX2NydGNfZnVuY3MsCj4gKwkJCQkJIE5VTEwpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRy bV9lcnIoZHJtX2RldiwgIkNvdWxkbid0IGluaXRpYWxpemUgQ1JUQ1xuIik7Cj4gKwkJcmV0dXJu IEVSUl9QVFIocmV0KTsKPiArCX0KPiArCj4gKwlkcm1fY3J0Y19oZWxwZXJfYWRkKCZ2Y3J0Yy0+ YmFzZSwgJnZzX2NydGNfaGVscGVyX2Z1bmNzKTsKPiArCj4gKwlyZXR1cm4gdmNydGM7Cj4gK30K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuaCBiL2Ry aXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19jcnRjLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLmI0NTU4MGJkOTliMzMKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2NydGMuaAo+IEBAIC0wLDAgKzEs MzEgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+ICsv Kgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgSWNlbm93eSBaaGVuZyA8dXd1QGljZW5vd3kubWU+ Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfVlNfQ1JUQ19IXwo+ICsjZGVmaW5lIF9WU19DUlRDX0hf Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Zi bGFuay5oPgo+ICsKPiArI2RlZmluZSBWU0RDX0RJU1BfVElNSU5HX1ZBTFVFX01BWCBCSVRfTUFT SygxNSkKPiArCj4gK3N0cnVjdCB2c19kYzsKPiArCj4gK3N0cnVjdCB2c19jcnRjIHsKPiArCXN0 cnVjdCBkcm1fY3J0YyBiYXNlOwo+ICsKPiArCXN0cnVjdCB2c19kYyAqZGM7Cj4gKwl1bnNpZ25l ZCBpbnQgaWQ7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB2c19jcnRjICpkcm1f Y3J0Y190b192c19jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJcmV0dXJuIGNv bnRhaW5lcl9vZihjcnRjLCBzdHJ1Y3QgdnNfY3J0YywgYmFzZSk7Cj4gK30KPiArCj4gK3N0cnVj dCB2c19jcnRjICp2c19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsIHN0cnVj dCB2c19kYyAqZGMsCj4gKwkJCSAgICAgdW5zaWduZWQgaW50IG91dHB1dCk7Cj4gKwo+ICsjZW5k aWYgLyogX1ZTX0NSVENfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zlcmlz aWxpY29uL3ZzX2NydGNfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2Ny dGNfcmVncy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5j NzkzMGU4MTc2MzVjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJp c2lsaWNvbi92c19jcnRjX3JlZ3MuaAo+IEBAIC0wLDAgKzEsNjAgQEAKPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMp IDIwMjUgSWNlbm93eSBaaGVuZyA8dXd1QGljZW5vd3kubWU+Cj4gKyAqCj4gKyAqIEJhc2VkIG9u IHZzX2RjX2h3LmgsIHdoaWNoIGlzOgo+ICsgKiAgIENvcHlyaWdodCAoQykgMjAyMyBWZXJpU2ls aWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9WU19DUlRDX1JF R1NfSF8KPiArI2RlZmluZSBfVlNfQ1JUQ19SRUdTX0hfCj4gKwo+ICsjaW5jbHVkZSA8bGludXgv Yml0cy5oPgo+ICsKPiArI2RlZmluZSBWU0RDX0RJU1BfRElUSEVSX0NPTkZJRyhuKQkJKDB4MTQx MCArIDB4NCAqIChuKSkKPiArCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RJVEhFUl9UQUJMRV9MT1co bikJCSgweDE0MjAgKyAweDQgKiAobikpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0RJVEhFUl9UQUJM RV9MT1dfREVGQVVMVAkweDdCNDhGM0MwCj4gKwo+ICsjZGVmaW5lIFZTRENfRElTUF9ESVRIRVJf VEFCTEVfSElHSChuKQkJKDB4MTQyOCArIDB4NCAqIChuKSkKPiArI2RlZmluZSBWU0RDX0RJU1Bf RElUSEVSX1RBQkxFX0hJR0hfREVGQVVMVAkweDU5NkFEMUUyCj4gKwo+ICsjZGVmaW5lIFZTRENf RElTUF9IU0laRShuKQkJCSgweDE0MzAgKyAweDQgKiAobikpCj4gKyNkZWZpbmUgVlNEQ19ESVNQ X0hTSVpFX0RJU1BfTUFTSwkJR0VOTUFTSygxNCwgMCkKPiArI2RlZmluZSBWU0RDX0RJU1BfSFNJ WkVfRElTUCh2KQkJCSgodikgPDwgMCkKPiArI2RlZmluZSBWU0RDX0RJU1BfSFNJWkVfVE9UQUxf TUFTSwkJR0VOTUFTSygzMCwgMTYpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0hTSVpFX1RPVEFMKHYp CQkoKHYpIDw8IDE2KQo+ICsKPiArI2RlZmluZSBWU0RDX0RJU1BfSFNZTkMobikJCQkoMHgxNDM4 ICsgMHg0ICogKG4pKQo+ICsjZGVmaW5lIFZTRENfRElTUF9IU1lOQ19TVEFSVF9NQVNLCQlHRU5N QVNLKDE0LCAwKQo+ICsjZGVmaW5lIFZTRENfRElTUF9IU1lOQ19TVEFSVCh2KQkJKCh2KSA8PCAw KQo+ICsjZGVmaW5lIFZTRENfRElTUF9IU1lOQ19FTkRfTUFTSwkJR0VOTUFTSygyOSwgMTUpCj4g KyNkZWZpbmUgVlNEQ19ESVNQX0hTWU5DX0VORCh2KQkJCSgodikgPDwgMTUpCj4gKyNkZWZpbmUg VlNEQ19ESVNQX0hTWU5DX0VOCQkJQklUKDMwKQo+ICsjZGVmaW5lIFZTRENfRElTUF9IU1lOQ19Q T0wJCQlCSVQoMzEpCj4gKwo+ICsjZGVmaW5lIFZTRENfRElTUF9WU0laRShuKQkJCSgweDE0NDAg KyAweDQgKiAobikpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1ZTSVpFX0RJU1BfTUFTSwkJR0VOTUFT SygxNCwgMCkKPiArI2RlZmluZSBWU0RDX0RJU1BfVlNJWkVfRElTUCh2KQkJCSgodikgPDwgMCkK PiArI2RlZmluZSBWU0RDX0RJU1BfVlNJWkVfVE9UQUxfTUFTSwkJR0VOTUFTSygzMCwgMTYpCj4g KyNkZWZpbmUgVlNEQ19ESVNQX1ZTSVpFX1RPVEFMKHYpCQkoKHYpIDw8IDE2KQo+ICsKPiArI2Rl ZmluZSBWU0RDX0RJU1BfVlNZTkMobikJCQkoMHgxNDQ4ICsgMHg0ICogKG4pKQo+ICsjZGVmaW5l IFZTRENfRElTUF9WU1lOQ19TVEFSVF9NQVNLCQlHRU5NQVNLKDE0LCAwKQo+ICsjZGVmaW5lIFZT RENfRElTUF9WU1lOQ19TVEFSVCh2KQkJKCh2KSA8PCAwKQo+ICsjZGVmaW5lIFZTRENfRElTUF9W U1lOQ19FTkRfTUFTSwkJR0VOTUFTSygyOSwgMTUpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1ZTWU5D X0VORCh2KQkJCSgodikgPDwgMTUpCj4gKyNkZWZpbmUgVlNEQ19ESVNQX1ZTWU5DX0VOCQkJQklU KDMwKQo+ICsjZGVmaW5lIFZTRENfRElTUF9WU1lOQ19QT0wJCQlCSVQoMzEpCj4gKwo+ICsjZGVm aW5lIFZTRENfRElTUF9DVVJSRU5UX0xPQ0FUSU9OKG4pCQkoMHgxNDUwICsgMHg0ICogKG4pKQo+ ICsKPiArI2RlZmluZSBWU0RDX0RJU1BfR0FNTUFfSU5ERVgobikJCSgweDE0NTggKyAweDQgKiAo bikpCj4gKwo+ICsjZGVmaW5lIFZTRENfRElTUF9HQU1NQV9EQVRBKG4pCQkJKDB4MTQ2MCArIDB4 NCAqIChuKSkKPiArCj4gKyNkZWZpbmUgVlNEQ19ESVNQX0lSUV9TVEEJCQkweDE0N0MKPiArCj4g KyNkZWZpbmUgVlNEQ19ESVNQX0lSUV9FTgkJCTB4MTQ4MAo+ICsKPiArI2VuZGlmIC8qIF9WU19D UlRDX1JFR1NfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29u L3ZzX2RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuYwo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uYmExYjNmMjYxYTNhZQo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuYwo+IEBA IC0wLDAgKzEsMjA3IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vu b3d5Lm1lPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICsj aW5jbHVkZSA8bGludXgvaXJxcmV0dXJuLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICsj aW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KPiArCj4gKyNpbmNsdWRlICJ2c19jcnRjLmgiCj4g KyNpbmNsdWRlICJ2c19kYy5oIgo+ICsjaW5jbHVkZSAidnNfZGNfdG9wX3JlZ3MuaCIKPiArI2lu Y2x1ZGUgInZzX2RybS5oIgo+ICsjaW5jbHVkZSAidnNfaHdkYi5oIgo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHZzX2RjX3JlZ21hcF9jZmcgPSB7Cj4gKwkucmVnX2Jp dHMgPSAzMiwKPiArCS52YWxfYml0cyA9IDMyLAo+ICsJLnJlZ19zdHJpZGUgPSBzaXplb2YodTMy KSwKPiArCS8qIFZTRENfT1ZMX0NPTkZJR19FWCgxKSAqLwo+ICsJLm1heF9yZWdpc3RlciA9IDB4 MjU0NCwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHZzX2Rj X2RyaXZlcl9kdF9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJ2ZXJpc2lsaWNvbixk YyIgfSwKPiArCXt9LAo+ICt9Owo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2c19kY19kcml2 ZXJfZHRfbWF0Y2gpOwo+ICsKPiArc3RhdGljIGlycXJldHVybl90IHZzX2RjX2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKnByaXZhdGUpCj4gK3sKPiArCXN0cnVjdCB2c19kYyAqZGMgPSBwcml2 YXRlOwo+ICsJdTMyIGlycXM7Cj4gKwo+ICsJcmVnbWFwX3JlYWQoZGMtPnJlZ3MsIFZTRENfVE9Q X0lSUV9BQ0ssICZpcnFzKTsKPiArCj4gKwl2c19kcm1faGFuZGxlX2lycShkYywgaXJxcyk7Cj4g Kwo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHZzX2RjX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjOwo+ICsJdm9pZCBfX2lvbWVt ICpyZWdzOwo+ICsJdW5zaWduZWQgaW50IHBvcnRfY291bnQsIGk7Cj4gKwkvKiBwaXgwL3BpeDEg Ki8KPiArCWNoYXIgcGl4Y2xrX25hbWVbNV07Cj4gKwlpbnQgaXJxLCByZXQ7Cj4gKwo+ICsJaWYg KCFkZXYtPm9mX25vZGUpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbid0IGZpbmQgREMgZGV2aWNl c1xuIik7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJcG9ydF9jb3VudCA9IG9m X2dyYXBoX2dldF9wb3J0X2NvdW50KGRldi0+b2Zfbm9kZSk7Cj4gKwlpZiAoIXBvcnRfY291bnQp IHsKPiArCQlkZXZfZXJyKGRldiwgImNhbid0IGZpbmQgREMgZG93bnN0cmVhbSBwb3J0c1xuIik7 Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwlpZiAocG9ydF9jb3VudCA+IFZTRENfTUFY X09VVFBVVFMpIHsKPiArCQlkZXZfZXJyKGRldiwgInRvbyBtYW55IERDIGRvd25zdHJlYW0gcG9y dHMgdGhhbiBwb3NzaWJsZVxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJ cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCgmcGRldi0+ZGV2LCBETUFfQklUX01BU0so MzIpKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwgIk5vIHN1aXRhYmxlIERNQSBh dmFpbGFibGVcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJZGMgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKmRjKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWRjKQo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCWRjLT5yc3RzWzBdLmlkID0gImNvcmUiOwo+ICsJZGMtPnJz dHNbMV0uaWQgPSAiYXhpIjsKPiArCWRjLT5yc3RzWzJdLmlkID0gImFoYiI7Cj4gKwo+ICsJcmV0 ID0gZGV2bV9yZXNldF9jb250cm9sX2J1bGtfZ2V0X29wdGlvbmFsX3NoYXJlZChkZXYsIFZTRENf UkVTRVRfQ09VTlQsCj4gKwkJCQkJCQkgIGRjLT5yc3RzKTsKPiArCWlmIChyZXQpIHsKPiArCQlk ZXZfZXJyKGRldiwgImNhbid0IGdldCByZXNldCBsaW5lc1xuIik7Cj4gKwkJcmV0dXJuIHJldDsK PiArCX0KPiArCj4gKwlkYy0+Y29yZV9jbGsgPSBkZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYsICJj b3JlIik7Cj4gKwlpZiAoSVNfRVJSKGRjLT5jb3JlX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwg ImNhbid0IGdldCBjb3JlIGNsb2NrXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihkYy0+Y29yZV9j bGspOwo+ICsJfQo+ICsKPiArCWRjLT5heGlfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoZGV2 LCAiYXhpIik7Cj4gKwlpZiAoSVNfRVJSKGRjLT5heGlfY2xrKSkgewo+ICsJCWRldl9lcnIoZGV2 LCAiY2FuJ3QgZ2V0IGF4aSBjbG9ja1xuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoZGMtPmF4aV9j bGspOwo+ICsJfQo+ICsKPiArCWRjLT5haGJfY2xrID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoZGV2 LCAiYWhiIik7Cj4gKwlpZiAoSVNfRVJSKGRjLT5haGJfY2xrKSkgewo+ICsJCWRldl9lcnIoZGV2 LCAiY2FuJ3QgZ2V0IGFoYiBjbG9ja1xuIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIoZGMtPmFoYl9j bGspOwo+ICsJfQo+ICsKPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Cj4gKwlp ZiAoaXJxIDwgMCkgewo+ICsJCWRldl9lcnIoZGV2LCAiY2FuJ3QgZ2V0IGlycVxuIik7Cj4gKwkJ cmV0dXJuIGlycTsKPiArCX0KPiArCj4gKwlyZXQgPSByZXNldF9jb250cm9sX2J1bGtfZGVhc3Nl cnQoVlNEQ19SRVNFVF9DT1VOVCwgZGMtPnJzdHMpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9l cnIoZGV2LCAiY2FuJ3QgZGVhc3NlcnQgcmVzZXQgbGluZXNcbiIpOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9Cj4gKwo+ICsJcmVncyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2 LCAwKTsKPiArCWlmIChJU19FUlIocmVncykpIHsKPiArCQlkZXZfZXJyKGRldiwgImNhbid0IG1h cCByZWdpc3RlcnMiKTsKPiArCQlyZXQgPSBQVFJfRVJSKHJlZ3MpOwo+ICsJCWdvdG8gZXJyX3Jz dF9hc3NlcnQ7Cj4gKwl9Cj4gKwo+ICsJZGMtPnJlZ3MgPSBkZXZtX3JlZ21hcF9pbml0X21taW8o ZGV2LCByZWdzLCAmdnNfZGNfcmVnbWFwX2NmZyk7Cj4gKwlpZiAoSVNfRVJSKGRjLT5yZWdzKSkg ewo+ICsJCXJldCA9IFBUUl9FUlIoZGMtPnJlZ3MpOwo+ICsJCWdvdG8gZXJyX3JzdF9hc3NlcnQ7 Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gdnNfZmlsbF9jaGlwX2lkZW50aXR5KGRjLT5yZWdzLCAmZGMt PmlkZW50aXR5KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJfcnN0X2Fzc2VydDsKPiArCj4g KwlkZXZfaW5mbyhkZXYsICJGb3VuZCBEQyV4IHJldiAleCBjdXN0b21lciAleFxuIiwgZGMtPmlk ZW50aXR5Lm1vZGVsLAo+ICsJCSBkYy0+aWRlbnRpdHkucmV2aXNpb24sIGRjLT5pZGVudGl0eS5j dXN0b21lcl9pZCk7Cj4gKwo+ICsJaWYgKHBvcnRfY291bnQgPiBkYy0+aWRlbnRpdHkuZGlzcGxh eV9jb3VudCkgewo+ICsJCWRldl9lcnIoZGV2LCAidG9vIG1hbnkgZG93bnN0cmVhbSBwb3J0cyB0 aGFuIEhXIGNhcGFiaWxpdHlcbiIpOwo+ICsJCXJldCA9IC1FSU5WQUw7Cj4gKwkJZ290byBlcnJf cnN0X2Fzc2VydDsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGMtPmlkZW50aXR5LmRp c3BsYXlfY291bnQ7IGkrKykgewo+ICsJCXNucHJpbnRmKHBpeGNsa19uYW1lLCBzaXplb2YocGl4 Y2xrX25hbWUpLCAicGl4JXUiLCBpKTsKPiArCQlkYy0+cGl4X2Nsa1tpXSA9IGRldm1fY2xrX2dl dChkZXYsIHBpeGNsa19uYW1lKTsKPiArCQlpZiAoSVNfRVJSKGRjLT5waXhfY2xrW2ldKSkgewo+ ICsJCQlkZXZfZXJyKGRldiwgImNhbid0IGdldCBwaXhlbCBjbGsgJXVcbiIsIGkpOwo+ICsJCQly ZXQgPSBQVFJfRVJSKGRjLT5waXhfY2xrW2ldKTsKPiArCQkJZ290byBlcnJfcnN0X2Fzc2VydDsK PiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIGlycSwgdnNf ZGNfaXJxX2hhbmRsZXIsIDAsCj4gKwkJCSAgICAgICBkZXZfbmFtZShkZXYpLCBkYyk7Cj4gKwlp ZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJjYW4ndCByZXF1ZXN0IGlycVxuIik7Cj4gKwkJ Z290byBlcnJfcnN0X2Fzc2VydDsKPiArCX0KPiArCj4gKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBk Yyk7Cj4gKwo+ICsJcmV0ID0gdnNfZHJtX2luaXRpYWxpemUoZGMsIHBkZXYpOwo+ICsJaWYgKHJl dCkKPiArCQlnb3RvIGVycl9yc3RfYXNzZXJ0Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJy X3JzdF9hc3NlcnQ6Cj4gKwlyZXNldF9jb250cm9sX2J1bGtfYXNzZXJ0KFZTRENfUkVTRVRfQ09V TlQsIGRjLT5yc3RzKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHZz X2RjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qg dnNfZGMgKmRjID0gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOwo+ICsKPiArCXZzX2RybV9m aW5hbGl6ZShkYyk7Cj4gKwo+ICsJZGV2X3NldF9kcnZkYXRhKCZwZGV2LT5kZXYsIE5VTEwpOwo+ ICsKPiArCXJlc2V0X2NvbnRyb2xfYnVsa19hc3NlcnQoVlNEQ19SRVNFVF9DT1VOVCwgZGMtPnJz dHMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19kY19zaHV0ZG93bihzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gZGV2X2dldF9kcnZk YXRhKCZwZGV2LT5kZXYpOwo+ICsKPiArCXZzX2RybV9zaHV0ZG93bl9oYW5kbGVyKGRjKTsKPiAr fQo+ICsKPiArc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2c19kY19wbGF0Zm9ybV9kcml2ZXIgPSB7 Cj4gKwkucHJvYmUgPSB2c19kY19wcm9iZSwKPiArCS5yZW1vdmUgPSB2c19kY19yZW1vdmUsCj4g Kwkuc2h1dGRvd24gPSB2c19kY19zaHV0ZG93biwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUg PSAidmVyaXNpbGljb24tZGMiLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IHZzX2RjX2RyaXZlcl9k dF9tYXRjaCwKPiArCX0sCj4gK307Cj4gKwo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHZzX2Rj X3BsYXRmb3JtX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJJY2Vub3d5IFpoZW5nIDx1 d3VAaWNlbm93eS5tZT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJWZXJpc2lsaWNvbiBkaXNw bGF5IGNvbnRyb2xsZXIgZHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2RjLmggYi9kcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfZGMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwMC4uZWQxMDE2ZjE4NzU4ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGMuaAo+IEBAIC0wLDAgKzEsMzggQEAKPiArLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMjUgSWNlbm93eSBaaGVuZyA8dXd1QGljZW5vd3kubWU+Cj4gKyAqCj4gKyAq IEJhc2VkIG9uIHZzX2RjX2h3LmgsIHdoaWNoIGlzOgo+ICsgKiAgIENvcHlyaWdodCAoQykgMjAy MyBWZXJpU2lsaWNvbiBIb2xkaW5ncyBDby4sIEx0ZC4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9W U19EQ19IXwo+ICsjZGVmaW5lIF9WU19EQ19IXwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5o Pgo+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5o Pgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSAidnNf aHdkYi5oIgo+ICsKPiArI2RlZmluZSBWU0RDX01BWF9PVVRQVVRTIDIKPiArI2RlZmluZSBWU0RD X1JFU0VUX0NPVU5UIDMKPiArCj4gK3N0cnVjdCB2c19kcm1fZGV2Owo+ICtzdHJ1Y3QgdnNfY3J0 YzsKPiArCj4gK3N0cnVjdCB2c19kYyB7Cj4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdzOwo+ICsJc3Ry dWN0IGNsayAqY29yZV9jbGs7Cj4gKwlzdHJ1Y3QgY2xrICpheGlfY2xrOwo+ICsJc3RydWN0IGNs ayAqYWhiX2NsazsKPiArCXN0cnVjdCBjbGsgKnBpeF9jbGtbVlNEQ19NQVhfT1VUUFVUU107Cj4g KwlzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEgcnN0c1tWU0RDX1JFU0VUX0NPVU5UXTsK PiArCj4gKwlzdHJ1Y3QgdnNfZHJtX2RldiAqZHJtX2RldjsKPiArCXN0cnVjdCB2c19jaGlwX2lk ZW50aXR5IGlkZW50aXR5Owo+ICt9Owo+ICsKPiArI2VuZGlmIC8qIF9WU19EQ19IXyAqLwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZGNfdG9wX3JlZ3MuaCBi L2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kY190b3BfcmVncy5oCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi41MDUwOWJiYmZmMDhmCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kY190b3BfcmVn cy5oCj4gQEAgLTAsMCArMSwyNyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBJY2Vub3d5IFpoZW5n IDx1d3VAaWNlbm93eS5tZT4KPiArICoKPiArICogQmFzZWQgb24gdnNfZGNfaHcuaCwgd2hpY2gg aXM6Cj4gKyAqICAgQ29weXJpZ2h0IChDKSAyMDIzIFZlcmlTaWxpY29uIEhvbGRpbmdzIENvLiwg THRkLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX1ZTX0RDX1RPUF9IXwo+ICsjZGVmaW5lIF9WU19E Q19UT1BfSF8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+Cj4gKwo+ICsjZGVmaW5lIFZT RENfVE9QX1JTVAkJCQkweDAwMDAKPiArCj4gKyNkZWZpbmUgVlNEQ19UT1BfSVJRX0FDSwkJCTB4 MDAxMAo+ICsjZGVmaW5lIFZTRENfVE9QX0lSUV9WU1lOQyhuKQkJCUJJVChuKQo+ICsKPiArI2Rl ZmluZSBWU0RDX1RPUF9JUlFfRU4JCQkJMHgwMDE0Cj4gKwo+ICsjZGVmaW5lIFZTRENfVE9QX0NI SVBfTU9ERUwJCQkweDAwMjAKPiArCj4gKyNkZWZpbmUgVlNEQ19UT1BfQ0hJUF9SRVYJCQkweDAw MjQKPiArCj4gKyNkZWZpbmUgVlNEQ19UT1BfQ0hJUF9DVVNUT01FUl9JRAkJMHgwMDMwCj4gKwo+ ICsjZW5kaWYgLyogX1ZTX0RDX1RPUF9IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdmVyaXNpbGljb24vdnNfZHJtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNf ZHJtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLmZkMjU5 ZDUzZjQ5ZjEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxp Y29uL3ZzX2RybS5jCj4gQEAgLTAsMCArMSwxODIgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAtb25seQo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjUgSWNlbm93 eSBaaGVuZyA8dXd1QGljZW5vd3kubWU+Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Fw ZXJ0dXJlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICsjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVkZSA8bGludXgvY29uc29sZS5oPgo+ ICsKPiArI2luY2x1ZGUgPGRybS9jbGllbnRzL2RybV9jbGllbnRfc2V0dXAuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fZHVtYl9idWZmZXJzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2ZiZGV2X2RtYS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZG1hX2hlbHBlci5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX29mLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX3Byb2JlX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4KPiAr Cj4gKyNpbmNsdWRlICJ2c19icmlkZ2UuaCIKPiArI2luY2x1ZGUgInZzX2NydGMuaCIKPiArI2lu Y2x1ZGUgInZzX2RjLmgiCj4gKyNpbmNsdWRlICJ2c19kY190b3BfcmVncy5oIgo+ICsjaW5jbHVk ZSAidnNfZHJtLmgiCj4gKwo+ICsjZGVmaW5lIERSSVZFUl9OQU1FCSJ2ZXJpc2lsaWNvbiIKPiAr I2RlZmluZSBEUklWRVJfREVTQwkiVmVyaXNpbGljb24gREMtc2VyaWVzIGRpc3BsYXkgY29udHJv bGxlciBkcml2ZXIiCj4gKyNkZWZpbmUgRFJJVkVSX01BSk9SCTEKPiArI2RlZmluZSBEUklWRVJf TUlOT1IJMAo+ICsKPiArc3RhdGljIGludCB2c19nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYsCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gKwkJ CSAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncykKPiArewo+ICsJaW50IHJl dDsKPiArCj4gKwkvKiBUaGUgaGFyZHdhcmUgd2FudHMgMTI4Qi1hbGlnbmVkIHBpdGNoZXMgZm9y IGxpbmVhciBidWZmZXJzLiAqLwo+ICsJcmV0ID0gZHJtX21vZGVfc2l6ZV9kdW1iKGRybSwgYXJn cywgMTI4LCAwKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4g ZHJtX2dlbV9kbWFfZHVtYl9jcmVhdGVfaW50ZXJuYWwoZmlsZV9wcml2LCBkcm0sIGFyZ3MpOwo+ ICt9Cj4gKwo+ICtERUZJTkVfRFJNX0dFTV9GT1BTKHZzX2RybV9kcml2ZXJfZm9wcyk7Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgdnNfZHJtX2RyaXZlciA9IHsKPiArCS5k cml2ZXJfZmVhdHVyZXMJPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfCBEUklWRVJfQVRP TUlDLAo+ICsJLmZvcHMJCQk9ICZ2c19kcm1fZHJpdmVyX2ZvcHMsCj4gKwkubmFtZQk9IERSSVZF Ul9OQU1FLAo+ICsJLmRlc2MJPSBEUklWRVJfREVTQywKPiArCS5tYWpvcgk9IERSSVZFUl9NQUpP UiwKPiArCS5taW5vcgk9IERSSVZFUl9NSU5PUiwKPiArCj4gKwkvKiBHRU0gT3BlcmF0aW9ucyAq Lwo+ICsJRFJNX0dFTV9ETUFfRFJJVkVSX09QU19XSVRIX0RVTUJfQ1JFQVRFKHZzX2dlbV9kdW1i X2NyZWF0ZSksCj4gKwlEUk1fRkJERVZfRE1BX0RSSVZFUl9PUFMsCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyB2c19tb2RlX2NvbmZpZ19mdW5j cyA9IHsKPiArCS5mYl9jcmVhdGUJCT0gZHJtX2dlbV9mYl9jcmVhdGUsCj4gKwkuYXRvbWljX2No ZWNrCQk9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAo+ICsJLmF0b21pY19jb21taXQJCT0gZHJt X2F0b21pY19oZWxwZXJfY29tbWl0LAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fbW9k ZV9jb25maWdfaGVscGVyX2Z1bmNzIHZzX21vZGVfY29uZmlnX2hlbHBlcl9mdW5jcyA9IHsKPiAr CS5hdG9taWNfY29tbWl0X3RhaWwgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfdGFpbCwKPiAr fTsKPiArCj4gK3N0YXRpYyB2b2lkIHZzX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRybSkKPiArewo+ICsJZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOwo+ICsJZHJt LT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gMDsKPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dp ZHRoID0gODE5MjsKPiArCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDgxOTI7Cj4gKwlk cm0tPm1vZGVfY29uZmlnLmZ1bmNzID0gJnZzX21vZGVfY29uZmlnX2Z1bmNzOwo+ICsJZHJtLT5t b2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9ICZ2c19tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3M7 Cj4gK30KPiArCj4gK2ludCB2c19kcm1faW5pdGlhbGl6ZShzdHJ1Y3QgdnNfZGMgKmRjLCBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAm cGRldi0+ZGV2Owo+ICsJc3RydWN0IHZzX2RybV9kZXYgKnZkcm07Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtOwo+ICsJc3RydWN0IHZzX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgdnNfYnJpZGdl ICpicmlkZ2U7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJdmRybSA9 IGRldm1fZHJtX2Rldl9hbGxvYyhkZXYsICZ2c19kcm1fZHJpdmVyLCBzdHJ1Y3QgdnNfZHJtX2Rl diwgYmFzZSk7Cj4gKwlpZiAoSVNfRVJSKHZkcm0pKQo+ICsJCXJldHVybiBQVFJfRVJSKHZkcm0p Owo+ICsKPiArCWRybSA9ICZ2ZHJtLT5iYXNlOwo+ICsJdmRybS0+ZGMgPSBkYzsKPiArCWRjLT5k cm1fZGV2ID0gdmRybTsKPiArCj4gKwlyZXQgPSBkcm1tX21vZGVfY29uZmlnX2luaXQoZHJtKTsK PiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBSZW1vdmUgZWFybHkgZnJh bWVidWZmZXJzIChpZS4gc2ltcGxlLWZyYW1lYnVmZmVyKSAqLwo+ICsJcmV0ID0gYXBlcnR1cmVf cmVtb3ZlX2FsbF9jb25mbGljdGluZ19kZXZpY2VzKERSSVZFUl9OQU1FKTsKPiArCWlmIChyZXQp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGMtPmlkZW50aXR5LmRp c3BsYXlfY291bnQ7IGkrKykgewo+ICsJCWNydGMgPSB2c19jcnRjX2luaXQoZHJtLCBkYywgaSk7 Cj4gKwkJaWYgKElTX0VSUihjcnRjKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoY3J0Yyk7Cj4gKwo+ ICsJCWJyaWRnZSA9IHZzX2JyaWRnZV9pbml0KGRybSwgY3J0Yyk7Cj4gKwkJaWYgKElTX0VSUihi cmlkZ2UpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihicmlkZ2UpOwo+ICsKPiArCQl2ZHJtLT5jcnRj c1tpXSA9IGNydGM7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJtX3ZibGFua19pbml0KGRybSwgZGMt PmlkZW50aXR5LmRpc3BsYXlfY291bnQpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ ICsKPiArCXZzX21vZGVfY29uZmlnX2luaXQoZHJtKTsKPiArCj4gKwkvKiBFbmFibGUgY29ubmVj dG9ycyBwb2xsaW5nICovCj4gKwlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZHJtKTsKPiArCj4g Kwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsKPiArCj4gKwlyZXQgPSBkcm1fZGV2X3JlZ2lz dGVyKGRybSwgMCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX2ZpbmlfcG9sbDsKPiArCj4g Kwlkcm1fY2xpZW50X3NldHVwKGRybSwgTlVMTCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtl cnJfZmluaV9wb2xsOgo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIHZzX2RybV9maW5hbGl6ZShzdHJ1Y3QgdnNfZGMgKmRj KQo+ICt7Cj4gKwlzdHJ1Y3QgdnNfZHJtX2RldiAqdmRybSA9IGRjLT5kcm1fZGV2Owo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRybSA9ICZ2ZHJtLT5iYXNlOwo+ICsKPiArCWRybV9kZXZfdW5yZWdp c3Rlcihkcm0pOwo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7Cj4gKwlkcm1fYXRv bWljX2hlbHBlcl9zaHV0ZG93bihkcm0pOwo+ICsJZGMtPmRybV9kZXYgPSBOVUxMOwo+ICt9Cj4g Kwo+ICt2b2lkIHZzX2RybV9zaHV0ZG93bl9oYW5kbGVyKHN0cnVjdCB2c19kYyAqZGMpCj4gK3sK PiArCXN0cnVjdCB2c19kcm1fZGV2ICp2ZHJtID0gZGMtPmRybV9kZXY7Cj4gKwo+ICsJZHJtX2F0 b21pY19oZWxwZXJfc2h1dGRvd24oJnZkcm0tPmJhc2UpOwo+ICt9Cj4gKwo+ICt2b2lkIHZzX2Ry bV9oYW5kbGVfaXJxKHN0cnVjdCB2c19kYyAqZGMsIHUzMiBpcnFzKQo+ICt7Cj4gKwl1bnNpZ25l ZCBpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGMtPmlkZW50aXR5LmRpc3BsYXlfY291 bnQ7IGkrKykgewo+ICsJCWlmIChpcnFzICYgVlNEQ19UT1BfSVJRX1ZTWU5DKGkpKSB7Cj4gKwkJ CWlycXMgJj0gflZTRENfVE9QX0lSUV9WU1lOQyhpKTsKPiArCQkJaWYgKGRjLT5kcm1fZGV2LT5j cnRjc1tpXSkKPiArCQkJCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmRjLT5kcm1fZGV2LT5jcnRj c1tpXS0+YmFzZSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmIChpcnFzKQo+ICsJCWRybV93YXJu X29uY2UoJmRjLT5kcm1fZGV2LT5iYXNlLAo+ICsJCQkgICAgICAiVW5rbm93biBWZXJpc2lsaWNv biBEQyBpbnRlcnJ1cHQgMHgleCBmaXJlZCFcbiIsCj4gKwkJCSAgICAgIGlycXMpOwo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uaCBiL2RyaXZl cnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19kcm0uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMDAwMC4uNjA2MzM4MjA2YTQyNwo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfZHJtLmgKPiBAQCAtMCwwICsxLDI4IEBA Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiArLyoKPiAr ICogQ29weXJpZ2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vub3d5Lm1lPgo+ICsg Ki8KPiArCj4gKyNpZm5kZWYgX1ZTX0RSTV9IXwo+ICsjZGVmaW5lIF9WU19EUk1fSF8KPiArCj4g KyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArCj4gK3N0cnVjdCB2 c19kYzsKPiArCj4gK3N0cnVjdCB2c19kcm1fZGV2IHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlIGJh c2U7Cj4gKwo+ICsJc3RydWN0IHZzX2RjICpkYzsKPiArCXN0cnVjdCB2c19jcnRjICpjcnRjc1tW U0RDX01BWF9PVVRQVVRTXTsKPiArfTsKPiArCj4gK2ludCB2c19kcm1faW5pdGlhbGl6ZShzdHJ1 Y3QgdnNfZGMgKmRjLCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsKPiArdm9pZCB2c19k cm1fZmluYWxpemUoc3RydWN0IHZzX2RjICpkYyk7Cj4gK3ZvaWQgdnNfZHJtX3NodXRkb3duX2hh bmRsZXIoc3RydWN0IHZzX2RjICpkYyk7Cj4gK3ZvaWQgdnNfZHJtX2hhbmRsZV9pcnEoc3RydWN0 IHZzX2RjICpkYywgdTMyIGlycXMpOwo+ICsKPiArI2VuZGlmIC8qIF9WU19EUk1fSF8gKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuYyBiL2RyaXZl cnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19od2RiLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMDAuLjA5MzM2YWYwOTAwYWUKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX2h3ZGIuYwo+IEBAIC0wLDAgKzEsMTUw IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyoKPiAr ICogQ29weXJpZ2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vub3d5Lm1lPgo+ICsg Ki8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9k cm1fZm91cmNjLmg+Cj4gKwo+ICsjaW5jbHVkZSAidnNfZGNfdG9wX3JlZ3MuaCIKPiArI2luY2x1 ZGUgInZzX2h3ZGIuaCIKPiArCj4gK3N0YXRpYyBjb25zdCB1MzIgdnNfZm9ybWF0c19hcnJheV9u b195dXY0NDRbXSA9IHsKPiArCURSTV9GT1JNQVRfWFJHQjQ0NDQsCj4gKwlEUk1fRk9STUFUX1hC R1I0NDQ0LAo+ICsJRFJNX0ZPUk1BVF9SR0JYNDQ0NCwKPiArCURSTV9GT1JNQVRfQkdSWDQ0NDQs Cj4gKwlEUk1fRk9STUFUX0FSR0I0NDQ0LAo+ICsJRFJNX0ZPUk1BVF9BQkdSNDQ0NCwKPiArCURS TV9GT1JNQVRfUkdCQTQ0NDQsCj4gKwlEUk1fRk9STUFUX0JHUkE0NDQ0LAo+ICsJRFJNX0ZPUk1B VF9YUkdCMTU1NSwKPiArCURSTV9GT1JNQVRfWEJHUjE1NTUsCj4gKwlEUk1fRk9STUFUX1JHQlg1 NTUxLAo+ICsJRFJNX0ZPUk1BVF9CR1JYNTU1MSwKPiArCURSTV9GT1JNQVRfQVJHQjE1NTUsCj4g KwlEUk1fRk9STUFUX0FCR1IxNTU1LAo+ICsJRFJNX0ZPUk1BVF9SR0JBNTU1MSwKPiArCURSTV9G T1JNQVRfQkdSQTU1NTEsCj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURSTV9GT1JNQVRfQkdS NTY1LAo+ICsJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCURSTV9GT1JNQVRfWEJHUjg4ODgsCj4g KwlEUk1fRk9STUFUX1JHQlg4ODg4LAo+ICsJRFJNX0ZPUk1BVF9CR1JYODg4OCwKPiArCURSTV9G T1JNQVRfQVJHQjg4ODgsCj4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LAo+ICsJRFJNX0ZPUk1BVF9S R0JBODg4OCwKPiArCURSTV9GT1JNQVRfQkdSQTg4ODgsCj4gKwlEUk1fRk9STUFUX0FSR0IyMTAx MDEwLAo+ICsJRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMCwKPiArCURSTV9GT1JNQVRfUkdCQTEwMTAx MDIsCj4gKwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLAo+ICsJLyogVE9ETzogbm9uLVJHQiBmb3Jt YXRzICovCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdTMyIHZzX2Zvcm1hdHNfYXJyYXlfd2l0 aF95dXY0NDRbXSA9IHsKPiArCURSTV9GT1JNQVRfWFJHQjQ0NDQsCj4gKwlEUk1fRk9STUFUX1hC R1I0NDQ0LAo+ICsJRFJNX0ZPUk1BVF9SR0JYNDQ0NCwKPiArCURSTV9GT1JNQVRfQkdSWDQ0NDQs Cj4gKwlEUk1fRk9STUFUX0FSR0I0NDQ0LAo+ICsJRFJNX0ZPUk1BVF9BQkdSNDQ0NCwKPiArCURS TV9GT1JNQVRfUkdCQTQ0NDQsCj4gKwlEUk1fRk9STUFUX0JHUkE0NDQ0LAo+ICsJRFJNX0ZPUk1B VF9YUkdCMTU1NSwKPiArCURSTV9GT1JNQVRfWEJHUjE1NTUsCj4gKwlEUk1fRk9STUFUX1JHQlg1 NTUxLAo+ICsJRFJNX0ZPUk1BVF9CR1JYNTU1MSwKPiArCURSTV9GT1JNQVRfQVJHQjE1NTUsCj4g KwlEUk1fRk9STUFUX0FCR1IxNTU1LAo+ICsJRFJNX0ZPUk1BVF9SR0JBNTU1MSwKPiArCURSTV9G T1JNQVRfQkdSQTU1NTEsCj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURSTV9GT1JNQVRfQkdS NTY1LAo+ICsJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCURSTV9GT1JNQVRfWEJHUjg4ODgsCj4g KwlEUk1fRk9STUFUX1JHQlg4ODg4LAo+ICsJRFJNX0ZPUk1BVF9CR1JYODg4OCwKPiArCURSTV9G T1JNQVRfQVJHQjg4ODgsCj4gKwlEUk1fRk9STUFUX0FCR1I4ODg4LAo+ICsJRFJNX0ZPUk1BVF9S R0JBODg4OCwKPiArCURSTV9GT1JNQVRfQkdSQTg4ODgsCj4gKwlEUk1fRk9STUFUX0FSR0IyMTAx MDEwLAo+ICsJRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMCwKPiArCURSTV9GT1JNQVRfUkdCQTEwMTAx MDIsCj4gKwlEUk1fRk9STUFUX0JHUkExMDEwMTAyLAo+ICsJLyogVE9ETzogbm9uLVJHQiBmb3Jt YXRzICovCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZzX2Zvcm1hdHMgdnNfZm9y bWF0c19ub195dXY0NDQgPSB7Cj4gKwkuYXJyYXkgPSB2c19mb3JtYXRzX2FycmF5X25vX3l1djQ0 NCwKPiArCS5udW0gPSBBUlJBWV9TSVpFKHZzX2Zvcm1hdHNfYXJyYXlfbm9feXV2NDQ0KQo+ICt9 Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2c19mb3JtYXRzIHZzX2Zvcm1hdHNfd2l0aF95 dXY0NDQgPSB7Cj4gKwkuYXJyYXkgPSB2c19mb3JtYXRzX2FycmF5X3dpdGhfeXV2NDQ0LAo+ICsJ Lm51bSA9IEFSUkFZX1NJWkUodnNfZm9ybWF0c19hcnJheV93aXRoX3l1djQ0NCkKPiArfTsKPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgdnNfY2hpcF9pZGVudGl0eSB2c19jaGlwX2lkZW50aXRpZXNbXSA9 IHsKPiArCXsKPiArCQkubW9kZWwgPSAweDgyMDAsCj4gKwkJLnJldmlzaW9uID0gMHg1NzIwLAo+ ICsJCS5jdXN0b21lcl9pZCA9IH4wVSwKPiArCj4gKwkJLmRpc3BsYXlfY291bnQgPSAyLAo+ICsJ CS5mb3JtYXRzID0gJnZzX2Zvcm1hdHNfbm9feXV2NDQ0LAo+ICsJfSwKPiArCXsKPiArCQkubW9k ZWwgPSAweDgyMDAsCj4gKwkJLnJldmlzaW9uID0gMHg1NzIxLAo+ICsJCS5jdXN0b21lcl9pZCA9 IDB4MzBCLAo+ICsKPiArCQkuZGlzcGxheV9jb3VudCA9IDIsCj4gKwkJLmZvcm1hdHMgPSAmdnNf Zm9ybWF0c19ub195dXY0NDQsCj4gKwl9LAo+ICsJewo+ICsJCS5tb2RlbCA9IDB4ODIwMCwKPiAr CQkucmV2aXNpb24gPSAweDU3MjAsCj4gKwkJLmN1c3RvbWVyX2lkID0gMHgzMTAsCj4gKwo+ICsJ CS5kaXNwbGF5X2NvdW50ID0gMiwKPiArCQkuZm9ybWF0cyA9ICZ2c19mb3JtYXRzX3dpdGhfeXV2 NDQ0LAo+ICsJfSwKPiArCXsKPiArCQkubW9kZWwgPSAweDgyMDAsCj4gKwkJLnJldmlzaW9uID0g MHg1NzIwLAo+ICsJCS5jdXN0b21lcl9pZCA9IDB4MzExLAo+ICsKPiArCQkuZGlzcGxheV9jb3Vu dCA9IDIsCj4gKwkJLmZvcm1hdHMgPSAmdnNfZm9ybWF0c19ub195dXY0NDQsCj4gKwl9LAo+ICt9 Owo+ICsKPiAraW50IHZzX2ZpbGxfY2hpcF9pZGVudGl0eShzdHJ1Y3QgcmVnbWFwICpyZWdzLAo+ ICsJCQkgIHN0cnVjdCB2c19jaGlwX2lkZW50aXR5ICppZGVudCkKPiArewo+ICsJdTMyIG1vZGVs Owo+ICsJdTMyIHJldmlzaW9uOwo+ICsJdTMyIGN1c3RvbWVyX2lkOwo+ICsJaW50IGk7Cj4gKwo+ ICsJcmVnbWFwX3JlYWQocmVncywgVlNEQ19UT1BfQ0hJUF9NT0RFTCwgJm1vZGVsKTsKPiArCXJl Z21hcF9yZWFkKHJlZ3MsIFZTRENfVE9QX0NISVBfUkVWLCAmcmV2aXNpb24pOwo+ICsJcmVnbWFw X3JlYWQocmVncywgVlNEQ19UT1BfQ0hJUF9DVVNUT01FUl9JRCwgJmN1c3RvbWVyX2lkKTsKPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2c19jaGlwX2lkZW50aXRpZXMpOyBpKysp IHsKPiArCQlpZiAodnNfY2hpcF9pZGVudGl0aWVzW2ldLm1vZGVsID09IG1vZGVsICYmCj4gKwkJ ICAgIHZzX2NoaXBfaWRlbnRpdGllc1tpXS5yZXZpc2lvbiA9PSByZXZpc2lvbiAmJgo+ICsJCSAg ICAodnNfY2hpcF9pZGVudGl0aWVzW2ldLmN1c3RvbWVyX2lkID09IGN1c3RvbWVyX2lkIHx8Cj4g KwkJICAgICB2c19jaGlwX2lkZW50aXRpZXNbaV0uY3VzdG9tZXJfaWQgPT0gfjBVKSkgewo+ICsJ CQltZW1jcHkoaWRlbnQsICZ2c19jaGlwX2lkZW50aXRpZXNbaV0sIHNpemVvZigqaWRlbnQpKTsK PiArCQkJaWRlbnQtPmN1c3RvbWVyX2lkID0gY3VzdG9tZXJfaWQ7Cj4gKwkJCXJldHVybiAwOwo+ ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfaHdkYi5oIGIvZHJpdmVycy9ncHUvZHJtL3Zl cmlzaWxpY29uL3ZzX2h3ZGIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwMC4uOTIxOTJlNGZhMDg2Mgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdmVyaXNpbGljb24vdnNfaHdkYi5oCj4gQEAgLTAsMCArMSwyOSBAQAo+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoQykgMjAyNSBJY2Vub3d5IFpoZW5nIDx1d3VAaWNlbm93eS5tZT4KPiArICovCj4gKwo+ICsj aWZuZGVmIF9WU19IV0RCX0hfCj4gKyNkZWZpbmUgX1ZTX0hXREJfSF8KPiArCj4gKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICtzdHJ1 Y3QgdnNfZm9ybWF0cyB7Cj4gKwljb25zdCB1MzIgKmFycmF5Owo+ICsJdW5zaWduZWQgaW50IG51 bTsKPiArfTsKPiArCj4gK3N0cnVjdCB2c19jaGlwX2lkZW50aXR5IHsKPiArCXUzMiBtb2RlbDsK PiArCXUzMiByZXZpc2lvbjsKPiArCXUzMiBjdXN0b21lcl9pZDsKPiArCj4gKwl1MzIgZGlzcGxh eV9jb3VudDsKPiArCWNvbnN0IHN0cnVjdCB2c19mb3JtYXRzICpmb3JtYXRzOwo+ICt9Owo+ICsK PiAraW50IHZzX2ZpbGxfY2hpcF9pZGVudGl0eShzdHJ1Y3QgcmVnbWFwICpyZWdzLAo+ICsJCQkg IHN0cnVjdCB2c19jaGlwX2lkZW50aXR5ICppZGVudCk7Cj4gKwo+ICsjZW5kaWYgLyogX1ZTX0hX REJfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3Bs YW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxhbmUuYwo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwMC4uMmYzOTUzZTU4OGEzNAo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcGxhbmUuYwo+ IEBAIC0wLDAgKzEsMTI0IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBp Y2Vub3d5Lm1lPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgo+ICsjaW5j bHVkZSA8bGludXgvcHJpbnRrLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9kbWFfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9nZW1fZG1hX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgInZzX3BsYW5lLmgiCj4gKwo+ICt2 b2lkIGRybV9mb3JtYXRfdG9fdnNfZm9ybWF0KHUzMiBkcm1fZm9ybWF0LCBzdHJ1Y3QgdnNfZm9y bWF0ICp2c19mb3JtYXQpCj4gK3sKPiArCXN3aXRjaCAoZHJtX2Zvcm1hdCkgewo+ICsJY2FzZSBE Uk1fRk9STUFUX1hSR0I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg0NDQ0Ogo+ICsJY2Fz ZSBEUk1fRk9STUFUX1hCR1I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg0NDQ0Ogo+ICsJ CXZzX2Zvcm1hdC0+Y29sb3IgPSBWU0RDX0NPTE9SX0ZPUk1BVF9YNFI0RzRCNDsKPiArCQlicmVh azsKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCNDQ0NDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JB NDQ0NDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSNDQ0NDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9C R1JBNDQ0NDoKPiArCQl2c19mb3JtYXQtPmNvbG9yID0gVlNEQ19DT0xPUl9GT1JNQVRfQTRSNEc0 QjQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Cj4gKwljYXNlIERS TV9GT1JNQVRfUkdCWDU1NTE6Cj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjE1NTU6Cj4gKwljYXNl IERSTV9GT1JNQVRfQkdSWDU1NTE6Cj4gKwkJdnNfZm9ybWF0LT5jb2xvciA9IFZTRENfQ09MT1Jf Rk9STUFUX1gxUjVHNUI1Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0IxNTU1 Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE1NTUxOgo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1Ix NTU1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE1NTUxOgo+ICsJCXZzX2Zvcm1hdC0+Y29sb3Ig PSBWU0RDX0NPTE9SX0ZPUk1BVF9BMVI1RzVCNTsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZP Uk1BVF9SR0I1NjU6Cj4gKwljYXNlIERSTV9GT1JNQVRfQkdSNTY1Ogo+ICsJCXZzX2Zvcm1hdC0+ Y29sb3IgPSBWU0RDX0NPTE9SX0ZPUk1BVF9SNUc2QjU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIERS TV9GT1JNQVRfWFJHQjg4ODg6Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCWDg4ODg6Cj4gKwljYXNl IERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4ODg6Cj4gKwkJ dnNfZm9ybWF0LT5jb2xvciA9IFZTRENfQ09MT1JfRk9STUFUX1g4UjhHOEI4Owo+ICsJCWJyZWFr Owo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE4 ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0JH UkE4ODg4Ogo+ICsJCXZzX2Zvcm1hdC0+Y29sb3IgPSBWU0RDX0NPTE9SX0ZPUk1BVF9BOFI4RzhC ODsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCMjEwMTAxMDoKPiArCWNhc2Ug RFJNX0ZPUk1BVF9SR0JBMTAxMDEwMjoKPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoK PiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBMTAxMDEwMjoKPiArCQl2c19mb3JtYXQtPmNvbG9yID0g VlNEQ19DT0xPUl9GT1JNQVRfQTJSMTBHMTBCMTA7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ ICsJCXByX3dhcm4oIlVuZXhwZWN0ZWQgZHJtIGZvcm1hdCFcbiIpOwo+ICsJfQo+ICsKPiArCXN3 aXRjaCAoZHJtX2Zvcm1hdCkgewo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg0NDQ0Ogo+ICsJY2Fz ZSBEUk1fRk9STUFUX1JHQkE0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg1NTUxOgo+ICsJ Y2FzZSBEUk1fRk9STUFUX1JHQkE1NTUxOgo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Ogo+ ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkExMDEw MTAyOgo+ICsJCXZzX2Zvcm1hdC0+c3dpenpsZSA9IFZTRENfU1dJWlpMRV9SR0JBOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FC R1I0NDQ0Ogo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IxNTU1Ogo+ICsJY2FzZSBEUk1fRk9STUFU X0FCR1IxNTU1Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjU2NToKPiArCWNhc2UgRFJNX0ZPUk1B VF9YQkdSODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiArCWNhc2UgRFJNX0ZP Uk1BVF9BQkdSMjEwMTAxMDoKPiArCQl2c19mb3JtYXQtPnN3aXp6bGUgPSBWU0RDX1NXSVpaTEVf QUJHUjsKPiArCQlicmVhazsKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYNDQ0NDoKPiArCWNhc2Ug RFJNX0ZPUk1BVF9CR1JBNDQ0NDoKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYNTU1MToKPiArCWNh c2UgRFJNX0ZPUk1BVF9CR1JBNTU1MToKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYODg4ODoKPiAr CWNhc2UgRFJNX0ZPUk1BVF9CR1JBODg4ODoKPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBMTAxMDEw MjoKPiArCQl2c19mb3JtYXQtPnN3aXp6bGUgPSBWU0RDX1NXSVpaTEVfQkdSQTsKPiArCQlicmVh azsKPiArCWRlZmF1bHQ6Cj4gKwkJLyogTi9BIGZvciBZVVYgZm9ybWF0cyAqLwo+ICsJCXZzX2Zv cm1hdC0+c3dpenpsZSA9IFZTRENfU1dJWlpMRV9BUkdCOwo+ICsJfQo+ICsKPiArCS8qIE4vQSBm b3Igbm9uLVlVViBmb3JtYXRzICovCj4gKwl2c19mb3JtYXQtPnV2X3N3aXp6bGUgPSBmYWxzZTsK PiArfQo+ICsKPiArZG1hX2FkZHJfdCB2c19mYl9nZXRfZG1hX2FkZHIoc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCj4gKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjX3JlY3Qp Cj4gK3sKPiArCXN0cnVjdCBkcm1fZ2VtX2RtYV9vYmplY3QgKmdlbTsKPiArCWRtYV9hZGRyX3Qg ZG1hX2FkZHI7Cj4gKwo+ICsJLyogR2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBidWZm ZXIgaW4gbWVtb3J5ICovCj4gKwlnZW0gPSBkcm1fZmJfZG1hX2dldF9nZW1fb2JqKGZiLCAwKTsK PiArCj4gKwkvKiBDb21wdXRlIHRoZSBzdGFydCBvZiB0aGUgZGlzcGxheWVkIG1lbW9yeSAqLwo+ ICsJZG1hX2FkZHIgPSBnZW0tPmRtYV9hZGRyICsgZmItPm9mZnNldHNbMF07Cj4gKwo+ICsJLyog Rml4dXAgZnJhbWVidWZmZXIgYWRkcmVzcyBmb3Igc3JjIGNvb3JkaW5hdGVzICovCj4gKwlkbWFf YWRkciArPSBkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGZiLT5mb3JtYXQsIDAsCj4gKwkJCQkJ ICAgICAgc3JjX3JlY3QtPngxID4+IDE2KTsKPiArCWRtYV9hZGRyICs9IChzcmNfcmVjdC0+eTEg Pj4gMTYpICogZmItPnBpdGNoZXNbMF07Cj4gKwo+ICsJcmV0dXJuIGRtYV9hZGRyOwo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19wbGFuZS5oIGIvZHJp dmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMDAuLjQxODc1ZWEzZDY2YTUKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3BsYW5lLmgKPiBAQCAtMCwwICsx LDcyIEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPiAr LyoKPiArICogQ29weXJpZ2h0IChDKSAyMDI1IEljZW5vd3kgWmhlbmcgPHV3dUBpY2Vub3d5Lm1l Pgo+ICsgKgo+ICsgKiBCYXNlZCBvbiB2c19kY19ody5oLCB3aGljaCBpczoKPiArICogICBDb3B5 cmlnaHQgKEMpIDIwMjMgVmVyaVNpbGljb24gSG9sZGluZ3MgQ28uLCBMdGQuCj4gKyAqLwo+ICsK PiArI2lmbmRlZiBfVlNfUExBTkVfSF8KPiArI2RlZmluZSBfVlNfUExBTkVfSF8KPiArCj4gKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+ Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZyYW1lYnVmZmVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X3BsYW5lLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3JlY3QuaD4KPiArCj4gKyNkZWZpbmUgVlNE Q19NQUtFX1BMQU5FX1NJWkUodywgaCkgKCgodykgJiAweDdmZmYpIHwgKCgoaCkgJiAweDdmZmYp IDw8IDE1KSkKPiArI2RlZmluZSBWU0RDX01BS0VfUExBTkVfUE9TKHgsIHkpICgoKHgpICYgMHg3 ZmZmKSB8ICgoKHkpICYgMHg3ZmZmKSA8PCAxNSkpCj4gKwo+ICtzdHJ1Y3QgdnNfZGM7Cj4gKwo+ ICtlbnVtIHZzX2NvbG9yX2Zvcm1hdCB7Cj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9YNFI0RzRCNCwK PiArCVZTRENfQ09MT1JfRk9STUFUX0E0UjRHNEI0LAo+ICsJVlNEQ19DT0xPUl9GT1JNQVRfWDFS NUc1QjUsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9BMVI1RzVCNSwKPiArCVZTRENfQ09MT1JfRk9S TUFUX1I1RzZCNSwKPiArCVZTRENfQ09MT1JfRk9STUFUX1g4UjhHOEI4LAo+ICsJVlNEQ19DT0xP Ul9GT1JNQVRfQThSOEc4QjgsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9ZVVkyLAo+ICsJVlNEQ19D T0xPUl9GT1JNQVRfVVlWWSwKPiArCVZTRENfQ09MT1JfRk9STUFUX0lOREVYOCwKPiArCVZTRENf Q09MT1JfRk9STUFUX01PTk9DSFJPTUUsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9ZVjEyID0gMHhm LAo+ICsJVlNEQ19DT0xPUl9GT1JNQVRfQTgsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9OVjEyLAo+ ICsJVlNEQ19DT0xPUl9GT1JNQVRfTlYxNiwKPiArCVZTRENfQ09MT1JfRk9STUFUX1JHMTYsCj4g KwlWU0RDX0NPTE9SX0ZPUk1BVF9SOCwKPiArCVZTRENfQ09MT1JfRk9STUFUX05WMTJfMTBCSVQs Cj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9BMlIxMEcxMEIxMCwKPiArCVZTRENfQ09MT1JfRk9STUFU X05WMTZfMTBCSVQsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9JTkRFWDEsCj4gKwlWU0RDX0NPTE9S X0ZPUk1BVF9JTkRFWDIsCj4gKwlWU0RDX0NPTE9SX0ZPUk1BVF9JTkRFWDQsCj4gKwlWU0RDX0NP TE9SX0ZPUk1BVF9QMDEwLAo+ICsJVlNEQ19DT0xPUl9GT1JNQVRfWVVWNDQ0LAo+ICsJVlNEQ19D T0xPUl9GT1JNQVRfWVVWNDQ0XzEwQklUCj4gK307Cj4gKwo+ICtlbnVtIHZzX3N3aXp6bGUgewo+ ICsJVlNEQ19TV0laWkxFX0FSR0IsCj4gKwlWU0RDX1NXSVpaTEVfUkdCQSwKPiArCVZTRENfU1dJ WlpMRV9BQkdSLAo+ICsJVlNEQ19TV0laWkxFX0JHUkEsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgdnNf Zm9ybWF0IHsKPiArCWVudW0gdnNfY29sb3JfZm9ybWF0IGNvbG9yOwo+ICsJZW51bSB2c19zd2l6 emxlIHN3aXp6bGU7Cj4gKwlib29sIHV2X3N3aXp6bGU7Cj4gK307Cj4gKwo+ICt2b2lkIGRybV9m b3JtYXRfdG9fdnNfZm9ybWF0KHUzMiBkcm1fZm9ybWF0LCBzdHJ1Y3QgdnNfZm9ybWF0ICp2c19m b3JtYXQpOwo+ICtkbWFfYWRkcl90IHZzX2ZiX2dldF9kbWFfYWRkcihzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKPiArCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmNfcmVjdCk7 Cj4gKwo+ICtzdHJ1Y3QgZHJtX3BsYW5lICp2c19wcmltYXJ5X3BsYW5lX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IHZzX2RjICpkYyk7Cj4gKwo+ICsjZW5kaWYgLyogX1ZTX1BM QU5FX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2lsaWNvbi92c19w cmltYXJ5X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmVyaXNpbGljb24vdnNfcHJpbWFyeV9w bGFuZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5lOGZj YjU5NTg2MTVjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92ZXJpc2ls aWNvbi92c19wcmltYXJ5X3BsYW5lLmMKPiBAQCAtMCwwICsxLDE3MyBAQAo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykg MjAyNSBJY2Vub3d5IFpoZW5nIDx1d3VAaWNlbm93eS5tZT4KPiArICovCj4gKwo+ICsjaW5jbHVk ZSA8bGludXgvcmVnbWFwLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiAr I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9j cnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9mcmFtZWJ1ZmZlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fYXRvbWljX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX3BsYW5lLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4gKwo+ ICsjaW5jbHVkZSAidnNfY3J0Yy5oIgo+ICsjaW5jbHVkZSAidnNfcGxhbmUuaCIKPiArI2luY2x1 ZGUgInZzX2RjLmgiCj4gKyNpbmNsdWRlICJ2c19wcmltYXJ5X3BsYW5lX3JlZ3MuaCIKPiArCj4g K3N0YXRpYyBpbnQgdnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gKwkJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0gZHJtX2F0b21pY19n ZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLAo+ICsJCQkJCQkJCQkJIHBsYW5lKTsKPiArCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCj4gKwlpZiAoIWNydGMpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKPiArCWlmIChXQVJOX09OKCFjcnRjX3N0YXRlKSkKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCj4gKwlyZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUobmV3 X3BsYW5lX3N0YXRlLAo+ICsJCQkJCQkgICBjcnRjX3N0YXRlLAo+ICsJCQkJCQkgICBEUk1fUExB TkVfTk9fU0NBTElORywKPiArCQkJCQkJICAgRFJNX1BMQU5FX05PX1NDQUxJTkcsCj4gKwkJCQkJ CSAgIGZhbHNlLCB0cnVlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnNfcHJpbWFyeV9wbGFu ZV9jb21taXQoc3RydWN0IHZzX2RjICpkYywgdW5zaWduZWQgaW50IG91dHB1dCkKPiArewo+ICsJ cmVnbWFwX3NldF9iaXRzKGRjLT5yZWdzLCBWU0RDX0ZCX0NPTkZJR19FWChvdXRwdXQpLAo+ICsJ CQlWU0RDX0ZCX0NPTkZJR19FWF9DT01NSVQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19w cmltYXJ5X3BsYW5lX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJ CQkJICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmF0b21pY19zdGF0ZSkKPiArewo+ICsJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3Rh dGUoYXRvbWljX3N0YXRlLAo+ICsJCQkJCQkJCSAgICAgICBwbGFuZSk7Cj4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKPiArCXN0cnVjdCB2c19jcnRjICp2Y3J0YyA9IGRy bV9jcnRjX3RvX3ZzX2NydGMoY3J0Yyk7Cj4gKwl1bnNpZ25lZCBpbnQgb3V0cHV0ID0gdmNydGMt PmlkOwo+ICsJc3RydWN0IHZzX2RjICpkYyA9IHZjcnRjLT5kYzsKPiArCj4gKwlyZWdtYXBfc2V0 X2JpdHMoZGMtPnJlZ3MsIFZTRENfRkJfQ09ORklHX0VYKG91dHB1dCksCj4gKwkJCVZTRENfRkJf Q09ORklHX0VYX0ZCX0VOKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhkYy0+cmVncywgVlNEQ19G Ql9DT05GSUdfRVgob3V0cHV0KSwKPiArCQkJICAgVlNEQ19GQl9DT05GSUdfRVhfRElTUExBWV9J RF9NQVNLLAo+ICsJCQkgICBWU0RDX0ZCX0NPTkZJR19FWF9ESVNQTEFZX0lEKG91dHB1dCkpOwo+ ICsKPiArCXZzX3ByaW1hcnlfcGxhbmVfY29tbWl0KGRjLCBvdXRwdXQpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCB2c19wcmltYXJ5X3BsYW5lX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICsJCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqYXRvbWljX3N0 YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IGRybV9hdG9taWNf Z2V0X29sZF9wbGFuZV9zdGF0ZShhdG9taWNfc3RhdGUsCj4gKwkJCQkJCQkJICAgICAgIHBsYW5l KTsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5jcnRjOwo+ICsJc3RydWN0IHZz X2NydGMgKnZjcnRjID0gZHJtX2NydGNfdG9fdnNfY3J0YyhjcnRjKTsKPiArCXVuc2lnbmVkIGlu dCBvdXRwdXQgPSB2Y3J0Yy0+aWQ7Cj4gKwlzdHJ1Y3QgdnNfZGMgKmRjID0gdmNydGMtPmRjOwo+ ICsKPiArCXJlZ21hcF9zZXRfYml0cyhkYy0+cmVncywgVlNEQ19GQl9DT05GSUdfRVgob3V0cHV0 KSwKPiArCQkJVlNEQ19GQl9DT05GSUdfRVhfRkJfRU4pOwo+ICsKPiArCXZzX3ByaW1hcnlfcGxh bmVfY29tbWl0KGRjLCBvdXRwdXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2c19wcmltYXJ5 X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCQkJICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmF0b21pY19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoYXRv bWljX3N0YXRlLAo+ICsJCQkJCQkJCSAgICAgICBwbGFuZSk7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHN0YXRlLT5mYjsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRl LT5jcnRjOwo+ICsJc3RydWN0IHZzX2RjICpkYzsKPiArCXN0cnVjdCB2c19jcnRjICp2Y3J0YzsK PiArCXN0cnVjdCB2c19mb3JtYXQgZm10Owo+ICsJdW5zaWduZWQgaW50IG91dHB1dDsKPiArCWRt YV9hZGRyX3QgZG1hX2FkZHI7Cj4gKwo+ICsJaWYgKCFzdGF0ZS0+dmlzaWJsZSkgewo+ICsJCXZz X3ByaW1hcnlfcGxhbmVfYXRvbWljX2Rpc2FibGUocGxhbmUsIGF0b21pY19zdGF0ZSk7Cj4gKwkJ cmV0dXJuOwo+ICsJfQo+ICsKPiArCXZjcnRjID0gZHJtX2NydGNfdG9fdnNfY3J0YyhjcnRjKTsK PiArCW91dHB1dCA9IHZjcnRjLT5pZDsKPiArCWRjID0gdmNydGMtPmRjOwo+ICsKPiArCWRybV9m b3JtYXRfdG9fdnNfZm9ybWF0KHN0YXRlLT5mYi0+Zm9ybWF0LT5mb3JtYXQsICZmbXQpOwo+ICsK PiArCXJlZ21hcF91cGRhdGVfYml0cyhkYy0+cmVncywgVlNEQ19GQl9DT05GSUcob3V0cHV0KSwK PiArCQkJICAgVlNEQ19GQl9DT05GSUdfRk1UX01BU0ssCj4gKwkJCSAgIFZTRENfRkJfQ09ORklH X0ZNVChmbXQuY29sb3IpKTsKPiArCXJlZ21hcF91cGRhdGVfYml0cyhkYy0+cmVncywgVlNEQ19G Ql9DT05GSUcob3V0cHV0KSwKPiArCQkJICAgVlNEQ19GQl9DT05GSUdfU1dJWlpMRV9NQVNLLAo+ ICsJCQkgICBWU0RDX0ZCX0NPTkZJR19TV0laWkxFKGZtdC5zd2l6emxlKSk7Cj4gKwlyZWdtYXBf YXNzaWduX2JpdHMoZGMtPnJlZ3MsIFZTRENfRkJfQ09ORklHKG91dHB1dCksCj4gKwkJCSAgIFZT RENfRkJfQ09ORklHX1VWX1NXSVpaTEVfRU4sIGZtdC51dl9zd2l6emxlKTsKPiArCj4gKwlkbWFf YWRkciA9IHZzX2ZiX2dldF9kbWFfYWRkcihmYiwgJnN0YXRlLT5zcmMpOwo+ICsKPiArCXJlZ21h cF93cml0ZShkYy0+cmVncywgVlNEQ19GQl9BRERSRVNTKG91dHB1dCksCj4gKwkJICAgICBsb3dl cl8zMl9iaXRzKGRtYV9hZGRyKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZGMtPnJlZ3MsIFZTRENfRkJf U1RSSURFKG91dHB1dCksCj4gKwkJICAgICBmYi0+cGl0Y2hlc1swXSk7Cj4gKwo+ICsJcmVnbWFw X3dyaXRlKGRjLT5yZWdzLCBWU0RDX0ZCX1RPUF9MRUZUKG91dHB1dCksCj4gKwkJICAgICBWU0RD X01BS0VfUExBTkVfUE9TKHN0YXRlLT5jcnRjX3gsIHN0YXRlLT5jcnRjX3kpKTsKPiArCXJlZ21h cF93cml0ZShkYy0+cmVncywgVlNEQ19GQl9CT1RUT01fUklHSFQob3V0cHV0KSwKPiArCQkgICAg IFZTRENfTUFLRV9QTEFORV9QT1Moc3RhdGUtPmNydGNfeCArIHN0YXRlLT5jcnRjX3csCj4gKwkJ CQkJIHN0YXRlLT5jcnRjX3kgKyBzdGF0ZS0+Y3J0Y19oKSk7Cj4gKwlyZWdtYXBfd3JpdGUoZGMt PnJlZ3MsIFZTRENfRkJfU0laRShvdXRwdXQpLAo+ICsJCSAgICAgVlNEQ19NQUtFX1BMQU5FX1NJ WkUoc3RhdGUtPmNydGNfdywgc3RhdGUtPmNydGNfaCkpOwo+ICsKPiArCXJlZ21hcF93cml0ZShk Yy0+cmVncywgVlNEQ19GQl9CTEVORF9DT05GSUcob3V0cHV0KSwKPiArCQkgICAgIFZTRENfRkJf QkxFTkRfQ09ORklHX0JMRU5EX0RJU0FCTEUpOwo+ICsKPiArCXZzX3ByaW1hcnlfcGxhbmVfY29t bWl0KGRjLCBvdXRwdXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9oZWxwZXJfZnVuY3MgdnNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuYXRv bWljX2NoZWNrCT0gdnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfY2hlY2ssCj4gKwkuYXRvbWljX3Vw ZGF0ZQk9IHZzX3ByaW1hcnlfcGxhbmVfYXRvbWljX3VwZGF0ZSwKPiArCS5hdG9taWNfZW5hYmxl CT0gdnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfZW5hYmxlLAo+ICsJLmF0b21pY19kaXNhYmxlCT0g dnNfcHJpbWFyeV9wbGFuZV9hdG9taWNfZGlzYWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHZzX3ByaW1hcnlfcGxhbmVfZnVuY3MgPSB7Cj4gKwku YXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0 YXRlLAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFu ZV9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuZGlzYWJsZV9wbGFuZQkJPSBkcm1fYXRvbWljX2hlbHBl cl9kaXNhYmxlX3BsYW5lLAo+ICsJLnJlc2V0CQkJPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9y ZXNldCwKPiArCS51cGRhdGVfcGxhbmUJCT0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5l LAo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9wbGFuZSAqdnNfcHJpbWFyeV9wbGFuZV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LCBzdHJ1Y3QgdnNfZGMgKmRjKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCj4gKwlwbGFuZSA9IGRybW1fdW5pdmVyc2FsX3BsYW5l X2FsbG9jKGRybV9kZXYsIHN0cnVjdCBkcm1fcGxhbmUsIGRldiwgMCwKPiArCQkJCQkgICAmdnNf cHJpbWFyeV9wbGFuZV9mdW5jcywKPiArCQkJCQkgICBkYy0+aWRlbnRpdHkuZm9ybWF0cy0+YXJy YXksCj4gKwkJCQkJICAgZGMtPmlkZW50aXR5LmZvcm1hdHMtPm51bSwKPiArCQkJCQkgICBOVUxM LAo+ICsJCQkJCSAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlksCj4gKwkJCQkJICAgTlVMTCk7Cj4g Kwo+ICsJaWYgKElTX0VSUihwbGFuZSkpCj4gKwkJcmV0dXJuIHBsYW5lOwo+ICsKPiArCWRybV9w bGFuZV9oZWxwZXJfYWRkKHBsYW5lLCAmdnNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ ICsKPiArCXJldHVybiBwbGFuZTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmVyaXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZV9yZWdzLmggYi9kcml2ZXJzL2dwdS9kcm0vdmVy aXNpbGljb24vdnNfcHJpbWFyeV9wbGFuZV9yZWdzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwMDAwMDAuLmNiYjEyNWM0NmIzOTAKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3ZlcmlzaWxpY29uL3ZzX3ByaW1hcnlfcGxhbmVfcmVncy5oCj4g QEAgLTAsMCArMSw1MyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAyNSBJY2Vub3d5IFpoZW5nIDx1d3VA aWNlbm93eS5tZT4KPiArICoKPiArICogQmFzZWQgb24gdnNfZGNfaHcuaCwgd2hpY2ggaXM6Cj4g KyAqICAgQ29weXJpZ2h0IChDKSAyMDIzIFZlcmlTaWxpY29uIEhvbGRpbmdzIENvLiwgTHRkLgo+ ICsgKi8KPiArCj4gKyNpZm5kZWYgX1ZTX1BSSU1BUllfUExBTkVfUkVHU19IXwo+ICsjZGVmaW5l IF9WU19QUklNQVJZX1BMQU5FX1JFR1NfSF8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRzLmg+ Cj4gKwo+ICsjZGVmaW5lIFZTRENfRkJfQUREUkVTUyhuKQkJCSgweDE0MDAgKyAweDQgKiAobikp Cj4gKwo+ICsjZGVmaW5lIFZTRENfRkJfU1RSSURFKG4pCQkJKDB4MTQwOCArIDB4NCAqIChuKSkK PiArCj4gKyNkZWZpbmUgVlNEQ19GQl9DT05GSUcobikJCQkoMHgxNTE4ICsgMHg0ICogKG4pKQo+ ICsjZGVmaW5lIFZTRENfRkJfQ09ORklHX0NMRUFSX0VOCQkJQklUKDgpCj4gKyNkZWZpbmUgVlNE Q19GQl9DT05GSUdfUk9UX01BU0sJCQlHRU5NQVNLKDEzLCAxMSkKPiArI2RlZmluZSBWU0RDX0ZC X0NPTkZJR19ST1QodikJCQkoKHYpIDw8IDExKQo+ICsjZGVmaW5lIFZTRENfRkJfQ09ORklHX1lV Vl9TUEFDRV9NQVNLCQlHRU5NQVNLKDE2LCAxNCkKPiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19Z VVZfU1BBQ0UodikJCSgodikgPDwgMTQpCj4gKyNkZWZpbmUgVlNEQ19GQl9DT05GSUdfVElMRV9N T0RFX01BU0sJCUdFTk1BU0soMjEsIDE3KQo+ICsjZGVmaW5lIFZTRENfRkJfQ09ORklHX1RJTEVf TU9ERSh2KQkJKCh2KSA8PCAxNCkKPiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19TQ0FMRV9FTgkJ CUJJVCgyMikKPiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19TV0laWkxFX01BU0sJCUdFTk1BU0so MjQsIDIzKQo+ICsjZGVmaW5lIFZTRENfRkJfQ09ORklHX1NXSVpaTEUodikJCSgodikgPDwgMjMp Cj4gKyNkZWZpbmUgVlNEQ19GQl9DT05GSUdfVVZfU1dJWlpMRV9FTgkJQklUKDI1KQo+ICsjZGVm aW5lIFZTRENfRkJfQ09ORklHX0ZNVF9NQVNLCQkJR0VOTUFTSygzMSwgMjYpCj4gKyNkZWZpbmUg VlNEQ19GQl9DT05GSUdfRk1UKHYpCQkJKCh2KSA8PCAyNikKPiArCj4gKyNkZWZpbmUgVlNEQ19G Ql9TSVpFKG4pCQkJCSgweDE4MTAgKyAweDQgKiAobikpCj4gKy8qIEZpbGwgd2l0aCB2YWx1ZSBn ZW5lcmF0ZWQgd2l0aCBWU0RDX01BS0VfUExBTkVfU0laRSh3LCBoKSAqLwo+ICsKPiArI2RlZmlu ZSBWU0RDX0ZCX0NPTkZJR19FWChuKQkJCSgweDFDQzAgKyAweDQgKiAobikpCj4gKyNkZWZpbmUg VlNEQ19GQl9DT05GSUdfRVhfQ09NTUlUCQlCSVQoMTIpCj4gKyNkZWZpbmUgVlNEQ19GQl9DT05G SUdfRVhfRkJfRU4JCQlCSVQoMTMpCj4gKyNkZWZpbmUgVlNEQ19GQl9DT05GSUdfRVhfWlBPU19N QVNLCQlHRU5NQVNLKDE4LCAxNikKPiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19FWF9aUE9TKHYp CQkoKHYpIDw8IDE2KQo+ICsjZGVmaW5lIFZTRENfRkJfQ09ORklHX0VYX0RJU1BMQVlfSURfTUFT SwlHRU5NQVNLKDE5LCAxOSkKPiArI2RlZmluZSBWU0RDX0ZCX0NPTkZJR19FWF9ESVNQTEFZX0lE KHYpCQkoKHYpIDw8IDE5KQo+ICsKPiArI2RlZmluZSBWU0RDX0ZCX1RPUF9MRUZUKG4pCQkJKDB4 MjREOCArIDB4NCAqIChuKSkKPiArLyogRmlsbCB3aXRoIHZhbHVlIGdlbmVyYXRlZCB3aXRoIFZT RENfTUFLRV9QTEFORV9QT1MoeCwgeSkgKi8KPiArCj4gKyNkZWZpbmUgVlNEQ19GQl9CT1RUT01f UklHSFQobikJCQkoMHgyNEUwICsgMHg0ICogKG4pKQo+ICsvKiBGaWxsIHdpdGggdmFsdWUgZ2Vu ZXJhdGVkIHdpdGggVlNEQ19NQUtFX1BMQU5FX1BPUyh4LCB5KSAqLwo+ICsKPiArI2RlZmluZSBW U0RDX0ZCX0JMRU5EX0NPTkZJRyhuKQkJCSgweDI1MTAgKyAweDQgKiAobikpCj4gKyNkZWZpbmUg VlNEQ19GQl9CTEVORF9DT05GSUdfQkxFTkRfRElTQUJMRQlCSVQoMSkKPiArCj4gKyNlbmRpZiAv KiBfVlNfUFJJTUFSWV9QTEFORV9SRUdTX0hfICovCgotLSAKLS0KVGhvbWFzIFppbW1lcm1hbm4K R3JhcGhpY3MgRHJpdmVyIERldmVsb3BlcgpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55 IEdtYkgKRnJhbmtlbnN0ci4gMTQ2LCA5MDQ2MSBOw7xybmJlcmcsIEdlcm1hbnksIHd3dy5zdXNl LmNvbQpHRjogSm9jaGVuIEphc2VyLCBBbmRyZXcgTWNEb25hbGQsIFdlcm5lciBLbm9ibGljaCwg KEhSQiAzNjgwOSwgQUcgTsO8cm5iZXJnKQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LXJpc2N2Cg==