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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CBEAC64ED6 for ; Tue, 28 Feb 2023 09:20:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231190AbjB1JUn (ORCPT ); Tue, 28 Feb 2023 04:20:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231160AbjB1JUi (ORCPT ); Tue, 28 Feb 2023 04:20:38 -0500 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F0B911D915 for ; Tue, 28 Feb 2023 01:20:28 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 5AB8A1FDC2; Tue, 28 Feb 2023 09:20:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1677576027; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=vO67GbZi3FBnczp61J0RCWF0dU/Bq4uh1n89FvnpIP8=; b=m95RSwegU9c73IwE+Ucj8UuwIwrnqAmBHk99SrkeESiMXz8sCiRW8vH9PtT8Ghe9xWTA09 /CtJjGwKhYWoptzhLL7jEVu0ZpEwuWSAPeT/Lf356A6w4yv8gt2nVhwGbOkKm4xNRXXogC IV0zFDHlws8wSEynYopIFzyUDijOdTQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1677576027; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=vO67GbZi3FBnczp61J0RCWF0dU/Bq4uh1n89FvnpIP8=; b=sMnFODngahSP6eWb+4v9Rd2NWHmv/g905JKkCUZ7JYIrQHQx2rtzNuoacLRoL2guWM2vY5 eCmM0WU8xRwLntAg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id E42A813440; Tue, 28 Feb 2023 09:20:26 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id vfuONlrH/WMvMQAAMHmgww (envelope-from ); Tue, 28 Feb 2023 09:20:26 +0000 Message-ID: Date: Tue, 28 Feb 2023 10:20:26 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v5 1/2] drm: add kms driver for loongson display controller Content-Language: en-US To: Sui jingfeng , suijingfeng <15330273260@189.cn>, Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Li Yi References: <20230226170330.5560-1-15330273260@189.cn> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------bPRzzhTNw2p5gvNjC0lquAPQ" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------bPRzzhTNw2p5gvNjC0lquAPQ Content-Type: multipart/mixed; boundary="------------A9dxB8YDNIX6xFWvcMe2Xlqn"; protected-headers="v1" From: Thomas Zimmermann To: Sui jingfeng , suijingfeng <15330273260@189.cn>, Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Li Yi Message-ID: Subject: Re: [PATCH v5 1/2] drm: add kms driver for loongson display controller References: <20230226170330.5560-1-15330273260@189.cn> In-Reply-To: --------------A9dxB8YDNIX6xFWvcMe2Xlqn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMjguMDIuMjMgdW0gMDQ6MTUgc2NocmllYiBTdWkgamluZ2Zlbmc6DQo+IEhp LA0KPiANCj4gVjEsIFYyLCBWMyBhbmQgVjTCoCB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2ggaXMg Z2V0IHRyYWNrZWQgYnkgbGluayBbMV0gDQo+IGF1dG9tYXRpY2FsbHkuDQo+IA0KPiBBZnRl ciBhZGQgb25lIG1vcmUgcGF0Y2gsIEkgZm91bmQgdGhpcyBwYXRjaCBzZXQgZGlkbid0IGdl dCB0cmFja2VkIGJ5IA0KPiBsaW5rIFsxXSBhbnltb3JlLg0KPiANCj4gSXMgdGhpcyBub3Jt YWw/wqAgZGlkIGkgZG8gc29tZXRoaW5nIHdyb25nPw0KDQpJdCdzIHJhdGhlciBub3JtYWwu IFRoZSBmaXJzdCB2ZXJzaW9ucyB3ZXJlIHNpbmdsZSBwYXRjaGVzLiBWNSBpcyBhIA0Kc2Vy aWVzLiBBcyB5b3UgZGlkbid0IHN1Ym1pdCBhIGNvdmVyIGxldHRlciwgcGF0Y2h3b3JrIGxp c3RzIGl0IGEgDQoic2VyaWVzIHdpdGhvdXQgY292ZXIgbGV0dGVyIi4gWzFdICBJdCdzIG5v dCBjbGV2ZXIgZW5vdWdoIHRvIHJlY29nbml6ZSANCnRoYXQgaXQncyBzdGlsbCB0aGUgb2xk IHBhdGNoc2V0Lg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQpbMV0gaHR0cHM6Ly9wYXRj aHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy8xMTQzODYvDQoNCj4gDQo+IA0KPiBbMV0g aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Nlcmllcy8xMTM1NjYvDQo+IA0K PiBPbiAyMDIzLzIvMjcgMDE6MDMsIHN1aWppbmdmZW5nIHdyb3RlOg0KPj4gRnJvbTogc3Vp amluZ2ZlbmcgPHN1aWppbmdmZW5nQGxvb25nc29uLmNuPg0KPj4NCj4+IExvb25nc29uIGRp c3BsYXkgY29udHJvbGxlciBJUCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGluIGJvdGggTG9vbmdz b24NCj4+IE5vcnRoIEJyaWRnZSBjaGlwc2V0KGxzN2ExMDAwIGFuZCBsczdhMjAwMCkgYW5k IExvb25nc29uIFNvQ3MobHMyazEwMDANCj4+IGFuZCBsczJrMjAwMCBldGMpLCBpdCBldmVu IGhhcyBiZWVuIGluY2x1ZGVkIGluIExvb25nc29uIEJNQyBwcm9kdWN0cy4NCj4+DQo+PiBU aGlzIGRpc3BsYXkgY29udHJvbGxlciBpcyBhIFBDSSBkZXZpY2UsIGl0IGhhcyB0d28gZGlz cGxheSBwaXBlLiBGb3INCj4+IHRoZSBEQyBpbiBMUzdBMTAwMCBhbmQgTFMySzEwMDAgZWFj aCB3YXkgaGFzIGEgRFZPIG91dHB1dCBpbnRlcmZhY2UNCj4+IHdoaWNoIHByb3ZpZGUgUkdC ODg4IHNpZ25hbHMsIHZlcnRpY2FsICYgaG9yaXpvbnRhbCBzeW5jaHJvbmlzYXRpb25zLA0K Pj4gYW5kIHRoZSBwaXhlbCBjbG9jay4gRWFjaCBDUlRDIGlzIGFibGUgdG8gc3VwcG9ydCAx OTIweDEwODBANjBIeiwNCj4+IHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaXMgMjA0OHgyMDQ4 IGFjY29yZGluZyB0byB0aGUgaGFyZHdhcmUgc3BlYy4NCj4+DQo+PiBGb3IgdGhlIERDIGlu IExTN0EyMDAwLCBlYWNoIGRpc3BsYXkgcGlwZSBpcyBlcXVpcHBlZCB3aXRoIGEgYnVpbHQt aW4NCj4+IEhETUkgZW5jb2RlciB3aGljaCBpcyBjb21wbGlhbnQgd2l0aCBIRE1JIDEuNCBz cGVjaWZpY2F0aW9uLCB0aHVzIGl0DQo+PiBzdXBwb3J0IDM4NDB4MjE2MEAzMEh6LiBUaGUg Zmlyc3QgZGlzcGxheSBwaXBlIGlzIGFsc28gZXF1aXBwZWQgd2l0aA0KPj4gYSB0cmFuc3Bh cmVudCB2Z2EgZW5jb2RlciB3aGljaCBpcyBwYXJhbGxlbCB3aXRoIHRoZSBIRE1JIGVuY29k ZXIuDQo+PiBUaGUgREMgaW4gTFM3QTIwMDAgaXMgbW9yZSBjb21wbGV0ZSwgYmVzaWRlcyBh Ym92ZSBmZWF0dXJlLCBpdCBoYXMNCj4+IHR3byBoYXJkd2FyZSBjdXJzb3JzLCB0d28gaGFy ZHdhcmUgdmJsYW5rIGNvdW50ZXIgYW5kIHR3byBzY2Fub3V0DQo+PiBwb3NpdGlvbiByZWNv cmRlcnMuDQo+Pg0KPj4gwqAgdjEgLT4gdjI6DQo+PiDCoMKgIDEpIFVzZSBocGQgc3RhdHVz IHJlZyB3aGVuIHBvbGxpbmcgZm9yIGxzN2EyMDAwDQo+PiDCoMKgIDIpIEZpeCBhbGwgd2Fy bmluZ3MgZW1lcmdlZCB3aGVuIGNvbXBpbGUgd2l0aCBXPTENCj4+DQo+PiDCoCB2MiAtPiB2 MzoNCj4+IMKgwqAgMSkgQWRkIENPTVBJTEVfVEVTVCBpbiBLY29uZmlnIGFuZCBtYWtlIHRo ZSBkcml2ZXIgb2ZmIGJ5IGRlZmF1bHQNCj4+IMKgwqAgMikgQWxwaGFiZXRpY2FsIHNvcnRp bmcgaGVhZGVycyAoVGhvbWFzKQ0KPj4gwqDCoCAzKSBVbnRhbmdsZSByZWdpc3RlciBhY2Nl c3MgZnVuY3Rpb25zIGFzIG11Y2ggYXMgcG9zc2libGUgKFRob21hcykNCj4+IMKgwqAgNCkg U3dpdGNoIHRvIFRUTSBiYXNlZCBtZW1vcnkgbWFuYWdlciBhbmQgcHJlZmVyIGNhY2hlZCBt YXBwaW5nDQo+PiDCoMKgwqDCoMKgIGZvciBMb29uZ3NvbiBTb0MgKFRob21hcykNCj4+IMKg wqAgNSkgQWRkIGNoaXAgaWQgZGV0ZWN0aW9uIG1ldGhvZCwgbm93IGFsbCBtb2RlbHMgYXJl IGRpc3Rpbmd1aXNoYWJsZS4NCj4+IMKgwqAgNikgUmV2aXNlIGJ1aWx0aW4gSERNSSBwaHkg ZHJpdmVyLCBuZWFybHkgYWxsIG1haW4gc3RyZWFtIG1vZGUNCj4+IMKgwqDCoMKgwqAgYmVs b3cgNEtAMzBIeiBpcyB0ZXN0ZWQsIHRoaXMgZHJpdmVyIHN1cHBvcnRlZCB0aGVzZSBtb2Rl IHZlcnkNCj4+IMKgwqDCoMKgwqAgd2VsbCBpbmNsdWRpbmcgY2xvbmUgZGlzcGxheSBtb2Rl IGFuZCBleHRlbmQgZGlzcGxheSBtb2RlLg0KPj4NCj4+IMKgIHYzIC0+IHY0Og0KPj4gwqDC oCAxKSBRdWlja2x5IGZpeCBhIHNtYWxsIG1pc3Rha2UuDQo+Pg0KPj4gwqAgdjQgLT4gdjU6 DQo+PiDCoMKgIDEpIERyb3AgcG90ZW50aWFsIHN1cHBvcnQgZm9yIExvb25nc29uIDJLIHNl cmllcyBTb0MgdGVtcG9yYXJ5LA0KPj4gwqDCoMKgwqDCoCBNYXliZSB0aGlzIHBhcnQgc2hv dWxkIGJlIHJlc2VuZCB3aXRoIHRoZSBkdCBiaW5kaW5nIHBhdGNoDQo+PiDCoMKgwqDCoMKg IGluIHRoZSBmdXR1cmUuDQo+PiDCoMKgIDIpIEFkZCBwZXIgZGlzcGxheSBwaXBlIGRlYnVn ZnMgc3VwcG9ydCB0byB0aGUgYnVpbHRpbiBIRE1JIGVuY29kZXIuDQo+PiDCoMKgIDMpIFJl d3JpdGUgYXRvbWljX3VwZGF0ZSgpIGZvciBoYXJkd2FyZSBjdXJzb3JzKFRob21hcykNCj4+ IMKgwqAgNCkgUmV3cml0ZSBlbmNvZGVyIGFuZCBjb25uZWN0b3IgaW5pdGlhbGl6YXRpb24g cGFydCwgdW50YW5nbGUgaXQNCj4+IMKgwqDCoMKgwqAgYWNjb3JkaW5nIHRvIHRoZSBjaGlw KFRob21hcykuDQo+Pg0KPj4gwqDCoCBBcyBhIGJhc2ljIEtNUyBkcml2ZXIsIHRoZSB1c2Vy IGV4cGVyaWVuY2UgaXMgZ29vZCBlbm91Z2ggd2hlbiB1c2luZw0KPj4gwqDCoCB3aXRoIFgg c2VydmVyIHVuZGVyIG1hdGUgYW5kIHhmY2UgZGVza3RvcCBlbnZpcm9ubWVudC4gVGhpcyBk aXJ2ZXIgaXMNCj4+IMKgwqAgcmVhZHkgdG8gYmUgbWVyZ2VkLCBhbmQgV2Ugd2lsbCB0YWtl IHRoZSByZXNwb25zaWJpbGl0eSBpZiB0aGVyZSBhcmUNCj4+IMKgwqAgYW55IGJ1ZyBoYXBw ZW4uDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogTGkgWWkgPGxpeWlAbG9vbmdzb24uY24+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBzdWlqaW5nZmVuZyA8c3VpamluZ2ZlbmdAbG9vbmdzb24uY24+ DQo+PiBTaWduZWQtb2ZmLWJ5OiBzdWlqaW5nZmVuZyA8MTUzMzAyNzMyNjBAMTg5LmNuPg0K Pj4gLS0tDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCAyICsNCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vbHNk Yy9LY29uZmlnwqDCoMKgwqDCoMKgwqAgfMKgIDE2ICsNCj4+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9sc2RjL01ha2VmaWxlwqDCoMKgwqDCoMKgIHzCoCAxNSArDQo+PiDCoCBkcml2ZXJzL2dw dS9kcm0vbHNkYy9sc2RjX2NydGMuY8KgwqDCoCB8IDM3NCArKysrKysrKysrKysrKysrKysN Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfZGVidWdmcy5jIHwgMjM2ICsrKysr KysrKysrKw0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19kcnYuY8KgwqDCoMKg IHwgNTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiDCoCBkcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX2Rydi5owqDCoMKgwqAgfCAzMDggKysrKysrKysrKysrKysrDQo+PiDC oCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jwqDCoMKgwqAgfCAxNzIgKysrKysr KysrDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2lycS5jwqDCoMKgwqAgfMKg IDg2ICsrKysrDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX291dHB1dC5jwqAg fCA1NzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gwqAgZHJpdmVycy9ncHUv ZHJtL2xzZGMvbHNkY19vdXRwdXQuaMKgIHzCoCAxNCArDQo+PiDCoCBkcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX3BsYW5lLmPCoMKgIHwgNDMxICsrKysrKysrKysrKysrKysrKysrKw0K Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wbGwuY8KgwqDCoMKgIHwgMzM2ICsr KysrKysrKysrKysrKysNCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxsLmjC oMKgwqDCoCB8wqAgNzYgKysrKw0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19w cm9iZS5jwqDCoCB8wqAgODggKysrKysNCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9sc2RjL2xz ZGNfcmVncy5owqDCoMKgIHwgMzUzICsrKysrKysrKysrKysrKysrDQo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vbHNkYy9sc2RjX3R0bS5jwqDCoMKgwqAgfCA0NTEgKysrKysrKysrKysrKysr KysrKysrKw0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY190dG0uaMKgwqDCoMKg IHzCoCA2NCArKysrDQo+PiDCoCAxOSBmaWxlcyBjaGFuZ2VkLCA0MTIyIGluc2VydGlvbnMo KykNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9LY29u ZmlnDQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xzZGMvTWFr ZWZpbGUNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9s c2RjX2NydGMuYw0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9s c2RjL2xzZGNfZGVidWdmcy5jDQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2xzZGMvbHNkY19kcnYuYw0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9sc2RjL2xzZGNfZHJ2LmgNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jDQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19pcnEuYw0KPj4gwqAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfb3V0cHV0LmMNCj4+IMKgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX291dHB1dC5oDQo+PiDC oCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wbGFuZS5j DQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19w bGwuYw0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9sc2RjL2xz ZGNfcGxsLmgNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbHNk Yy9sc2RjX3Byb2JlLmMNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX3JlZ3MuaA0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9sc2RjL2xzZGNfdHRtLmMNCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3R0bS5oDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4+IGluZGV4 IGRjMGY5NGYwMmE4Mi4uM2JhZWNkNDg5MzBiIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnDQo+PiBA QCAtMzY3LDYgKzM2Nyw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2Nv bmZpZyINCj4+IMKgIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3NwcmQvS2NvbmZpZyINCj4+ ICtzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9sc2RjL0tjb25maWciDQo+PiArDQo+PiDCoCBj b25maWcgRFJNX0hZUEVSVg0KPj4gwqDCoMKgwqDCoCB0cmlzdGF0ZSAiRFJNIFN1cHBvcnQg Zm9yIEh5cGVyLVYgc3ludGhldGljIHZpZGVvIGRldmljZSINCj4+IMKgwqDCoMKgwqAgZGVw ZW5kcyBvbiBEUk0gJiYgUENJICYmIE1NVSAmJiBIWVBFUlYNCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUNCj4+ IGluZGV4IGFiNDQ2MGZjZDYzZi4uNWE4ZTJmYzhkZDVkIDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUNCj4+IEBAIC0xOTAsMyArMTkwLDQgQEAgb2JqLXnCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICs9IGd1ZC8NCj4+IMKgIG9iai0kKENPTkZJR19EUk1fSFlQRVJWKSArPSBoeXBlcnYvDQo+ PiDCoCBvYmotecKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gc29sb21vbi8NCj4+IMKgIG9i ai0kKENPTkZJR19EUk1fU1BSRCkgKz0gc3ByZC8NCj4+ICtvYmotJChDT05GSUdfRFJNX0xT REMpICs9IGxzZGMvDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL0tjb25maWcNCj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjAzYmE3NmM1OWQ2ZA0KPj4gLS0tIC9k ZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvS2NvbmZpZw0KPj4gQEAg LTAsMCArMSwxNiBAQA0KPj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN Cj4+ICsNCj4+ICtjb25maWcgRFJNX0xTREMNCj4+ICvCoMKgwqAgdHJpc3RhdGUgIkRSTSBz dXBwb3J0IGZvciBMb29uZ3NvbiBEaXNwbGF5IENvbnRyb2xsZXIiDQo+PiArwqDCoMKgIGRl cGVuZHMgb24gRFJNICYmIFBDSQ0KPj4gK8KgwqDCoCBkZXBlbmRzIG9uIExPT05HQVJDSCB8 fCBNSVBTIHx8IENPTVBJTEVfVEVTVA0KPj4gK8KgwqDCoCBkZXBlbmRzIG9uIE9GDQo+PiAr wqDCoMKgIHNlbGVjdCBEUk1fS01TX0hFTFBFUg0KPj4gK8KgwqDCoCBzZWxlY3QgRFJNX1RU TQ0KPj4gK8KgwqDCoCBzZWxlY3QgRFJNX1RUTV9IRUxQRVINCj4+ICvCoMKgwqAgaGVscA0K Pj4gK8KgwqDCoMKgwqAgVGhpcyBpcyBhIEtNUyBkcml2ZXIgZm9yIGxvb25nc29uIGRpc3Bs YXkgY29udHJvbGxlciBpbiB0aGUNCj4+ICvCoMKgwqDCoMKgIExTN0ExMDAwL0xTN0EyMDAw IGJyaWRnZSBjaGlwIGFuZCBMUzJLMTAwMC9MUzJLMjAwMCBTb0MuDQo+PiArwqDCoMKgwqDC oCBJZiAiTSIgaXMgc2VsZWN0ZWQsIHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgbHNkYy4N Cj4+ICsNCj4+ICvCoMKgwqDCoMKgIElmIGluIGRvdWJ0LCBzYXkgIk4iLg0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL01ha2VmaWxlIA0KPj4gYi9kcml2ZXJzL2dw dS9kcm0vbHNkYy9NYWtlZmlsZQ0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uOWE3OTc5YTk0OWRlDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9NYWtlZmlsZQ0KPj4gQEAgLTAsMCArMSwxNSBAQA0K Pj4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsNCj4+ICtsc2Rj LXkgOj0gXA0KPj4gK8KgwqDCoCBsc2RjX2NydGMubyBcDQo+PiArwqDCoMKgIGxzZGNfZGVi dWdmcy5vIFwNCj4+ICvCoMKgwqAgbHNkY19kcnYubyBcDQo+PiArwqDCoMKgIGxzZGNfaTJj Lm8gXA0KPj4gK8KgwqDCoCBsc2RjX2lycS5vIFwNCj4+ICvCoMKgwqAgbHNkY19vdXRwdXQu byBcDQo+PiArwqDCoMKgIGxzZGNfcGxhbmUubyBcDQo+PiArwqDCoMKgIGxzZGNfcGxsLm8g XA0KPj4gK8KgwqDCoCBsc2RjX3Byb2JlLm8gXA0KPj4gK8KgwqDCoCBsc2RjX3R0bS5vDQo+ PiArDQo+PiArb2JqLSQoQ09ORklHX0RSTV9MU0RDKSArPSBsc2RjLm8NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2NydGMuYyANCj4+IGIvZHJpdmVycy9n cHUvZHJtL2xzZGMvbHNkY19jcnRjLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjMxZGFlMmZkYzc0Yw0KPj4gLS0tIC9kZXYvbnVsbA0KPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19jcnRjLmMNCj4+IEBAIC0wLDAgKzEs Mzc0IEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsN Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rLmg+DQo+ PiArDQo+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+PiArDQo+PiArc3RhdGljIHUzMiBs c2RjX2dldF92YmxhbmtfY291bnRlcl9waXBlMChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+ PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGNy dGMtPmRldik7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBsc2RjX3JyZWczMihsZGV2LCBM U0RDX0NSVEMwX1ZTWU5DX0NPVU5URVJfUkVHKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IHUzMiBsc2RjX2dldF92YmxhbmtfY291bnRlcl9waXBlMShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19s c2RjKGNydGMtPmRldik7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBsc2RjX3JyZWczMihs ZGV2LCBMU0RDX0NSVEMxX1ZTWU5DX0NPVU5URVJfUkVHKTsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBsc2RjX2VuYWJsZV92YmxhbmtfcGlwZTAoc3RydWN0IGRybV9jcnRjICpj cnRjKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9f bHNkYyhjcnRjLT5kZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX3VyZWczMl9zZXQobGRl diwgTFNEQ19JTlRfUkVHLCBJTlRfQ1JUQzBfVlNZTkNfRU4pOw0KPj4gKw0KPj4gK8KgwqDC oCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbHNkY19kaXNhYmxl X3ZibGFua19waXBlMChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+PiArew0KPj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGNydGMtPmRldik7DQo+PiAr DQo+PiArwqDCoMKgIGxzZGNfdXJlZzMyX2NscihsZGV2LCBMU0RDX0lOVF9SRUcsIElOVF9D UlRDMF9WU1lOQ19FTik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbHNkY19lbmFi bGVfdmJsYW5rX3BpcGUxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4+ICt7DQo+PiArwqDC oMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoY3J0Yy0+ZGV2KTsNCj4+ ICsNCj4+ICvCoMKgwqAgbHNkY191cmVnMzJfc2V0KGxkZXYsIExTRENfSU5UX1JFRywgSU5U X0NSVEMxX1ZTWU5DX0VOKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0K Pj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfZGlzYWJsZV92YmxhbmtfcGlwZTEoc3RydWN0 IGRybV9jcnRjICpjcnRjKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNl ICpsZGV2ID0gdG9fbHNkYyhjcnRjLT5kZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX3Vy ZWczMl9jbHIobGRldiwgTFNEQ19JTlRfUkVHLCBJTlRfQ1JUQzFfVlNZTkNfRU4pOw0KPj4g K30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBsc2RjX2NydGNfcmVzZXQoc3RydWN0IGRybV9j cnRjICpjcnRjKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYg PSBjcnRjLT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRv X2xzZGMoZGRldik7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2NydGNfc3RhdGUgKnByaXZf Y3J0Y19zdGF0ZTsNCj4+ICvCoMKgwqAgdTMyIHZhbCA9IExTRENfUEZfWFJHQjg4ODggfCBM U0RDX0RNQV9TVEVQXzY0X0JZVEVTIHwgQ0ZHX1JFU0VUX047DQo+PiArDQo+PiArwqDCoMKg IGxzZGNfY3J0Y193cmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCBkcm1fY3J0Y19p bmRleChjcnRjKSwgDQo+PiB2YWwpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoY3J0Yy0+c3Rh dGUpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBwcml2X2NydGNfc3RhdGUgPSB0b19sc2RjX2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIF9fZHJtX2F0b21p Y19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZwcml2X2NydGNfc3RhdGUtPmJhc2UpOw0K Pj4gK8KgwqDCoMKgwqDCoMKgIGtmcmVlKHByaXZfY3J0Y19zdGF0ZSk7DQo+PiArwqDCoMKg IH0NCj4+ICsNCj4+ICvCoMKgwqAgcHJpdl9jcnRjX3N0YXRlID0ga3phbGxvYyhzaXplb2Yo KnByaXZfY3J0Y19zdGF0ZSksIEdGUF9LRVJORUwpOw0KPj4gK8KgwqDCoCBpZiAoIXByaXZf Y3J0Y19zdGF0ZSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+PiArDQo+PiArwqDC oMKgIF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldChjcnRjLCAmcHJpdl9jcnRjX3N0 YXRlLT5iYXNlKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbHNkY19jcnRjX2F0 b21pY19kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfY3J0Y19zdGF0 ZSAqcHJpdl9zdGF0ZSA9IHRvX2xzZGNfY3J0Y19zdGF0ZShzdGF0ZSk7DQo+PiArDQo+PiAr wqDCoMKgIF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZwcml2X3N0 YXRlLT5iYXNlKTsNCj4+ICsNCj4+ICvCoMKgwqAga2ZyZWUocHJpdl9zdGF0ZSk7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKg0KPj4gK2xzZGNf Y3J0Y19hdG9taWNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4+ ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2NydGNfc3RhdGUgKm5ld19wcml2X3N0YXRl Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19jcnRjX3N0YXRlICpvbGRfcHJpdl9zdGF0ZTsN Cj4+ICsNCj4+ICvCoMKgwqAgbmV3X3ByaXZfc3RhdGUgPSBremFsbG9jKHNpemVvZigqbmV3 X3ByaXZfc3RhdGUpLCBHRlBfS0VSTkVMKTsNCj4+ICvCoMKgwqAgaWYgKCFuZXdfcHJpdl9z dGF0ZSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsNCj4+ICsNCj4+ICvCoMKg wqAgX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShjcnRjLCANCj4+ ICZuZXdfcHJpdl9zdGF0ZS0+YmFzZSk7DQo+PiArDQo+PiArwqDCoMKgIG9sZF9wcml2X3N0 YXRlID0gdG9fbHNkY19jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsNCj4+ICsNCj4+ICvCoMKg wqAgbWVtY3B5KCZuZXdfcHJpdl9zdGF0ZS0+cHBhcm1zLCAmb2xkX3ByaXZfc3RhdGUtPnBw YXJtcywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YobmV3X3ByaXZfc3RhdGUt PnBwYXJtcykpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gJm5ld19wcml2X3N0YXRlLT5i YXNlOw0KPj4gK30NCj4+ICsNCj4+ICsjZGVmaW5lIExTRENfQ1JUQ19GVU5DU19DT01NT04o cGlwZSwgDQo+PiBwZm5fZ2V0X3ZibGFua19jb3VudGVyKcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwNCj4+ICvCoMKgwqAgLnJlc2V0ID0gDQo+PiBsc2RjX2NydGNfcmVz ZXQswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4gK8KgwqDCoCAuZGVz dHJveSA9IA0KPj4gZHJtX2NydGNfY2xlYW51cCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcDQo+PiArwqDCoMKgIC5zZXRfY29uZmlnID0gDQo+PiBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFwNCj4+ICvCoMKgwqAgLnBhZ2VfZmxpcCA9IA0KPj4gZHJtX2F0b21pY19oZWxw ZXJfcGFnZV9mbGlwLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcDQo+PiArwqDCoMKgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0g DQo+PiBsc2RjX2NydGNfYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSzCoMKgwqDCoMKgwqDCoMKg wqAgXA0KPj4gK8KgwqDCoCAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSANCj4+IGxzZGNfY3J0 Y19hdG9taWNfZGVzdHJveV9zdGF0ZSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+ PiArwqDCoMKgIC5nZXRfdmJsYW5rX2NvdW50ZXIgPSANCj4+IHBmbl9nZXRfdmJsYW5rX2Nv dW50ZXIswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc DQo+PiArwqDCoMKgIC5lbmFibGVfdmJsYW5rID0gDQo+PiBsc2RjX2VuYWJsZV92Ymxhbmtf IyNwaXBlLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwNCj4+ICvCoMKgwqAgLmRpc2FibGVfdmJsYW5rID0gDQo+PiBsc2RjX2Rpc2FibGVf dmJsYW5rXyMjcGlwZSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFwNCj4+ICvCoMKgwqAgLmdldF92YmxhbmtfdGltZXN0YW1wID0gZHJtX2NydGNf dmJsYW5rX2hlbHBlcl9nZXRfdmJsYW5rX3RpbWVzdGFtcA0KPj4gKw0KPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgDQo+PiBsc2RjX2NydGNfZnVuY3NfYXJyYXlb Ml1bTFNEQ19OVU1fQ1JUQ10gPSB7DQo+PiArwqDCoMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDC oCB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMU0RDX0NSVENfRlVOQ1NfQ09NTU9O KHBpcGUwLCBOVUxMKSwNCj4+ICvCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDC oMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExTRENfQ1JUQ19GVU5DU19DT01N T04ocGlwZTEsIE5VTEwpLA0KPj4gK8KgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgIH0s DQo+PiArwqDCoMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCB7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBMU0RDX0NSVENfRlVOQ1NfQ09NTU9OKHBpcGUwLCANCj4+IGxzZGNfZ2V0 X3ZibGFua19jb3VudGVyX3BpcGUwKSwNCj4+ICvCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8Kg wqDCoMKgwqDCoMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExTRENfQ1JUQ19G VU5DU19DT01NT04ocGlwZTEsIA0KPj4gbHNkY19nZXRfdmJsYW5rX2NvdW50ZXJfcGlwZTEp LA0KPj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqAgfQ0KPj4gK307DQo+PiArDQo+ PiArc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzDQo+PiArbHNkY19jcnRjX21vZGVfdmFs aWQoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBzdHJ1Y3QgDQo+PiBkcm1fZGlzcGxh eV9tb2RlICptb2RlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRk ZXYgPSBjcnRjLT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9 IHRvX2xzZGMoZGRldik7DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRl c2NwID0gbGRldi0+ZGVzY3A7DQo+PiArDQo+PiArwqDCoMKgIGlmIChtb2RlLT5oZGlzcGxh eSA+IGRlc2NwLT5tYXhfd2lkdGgpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVf QkFEX0hWQUxVRTsNCj4+ICvCoMKgwqAgaWYgKG1vZGUtPnZkaXNwbGF5ID4gZGVzY3AtPm1h eF9oZWlnaHQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVfQkFEX1ZWQUxVRTsN Cj4+ICsNCj4+ICvCoMKgwqAgaWYgKG1vZGUtPmNsb2NrID4gZGVzY3AtPm1heF9waXhlbF9j bGspIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZGJnKGRkZXYsICJtb2RlICVkeCVkLCBw aXhlbCBjbG9jaz0lZCBpcyB0b28gaGlnaFxuIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwgbW9kZS0+Y2xvY2spOw0KPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX0NMT0NLX0hJR0g7DQo+PiArwqDCoMKgIH0N Cj4+ICsNCj4+ICvCoMKgwqAgLyogVE9ETzogY2hlY2sgUkdCNTY1IHN1cHBvcnQsIDQgZm9y IERSTV9GT1JNQVRfWFJHQjg4ODggKi8NCj4+ICvCoMKgwqAgaWYgKChtb2RlLT5oZGlzcGxh eSAqIDQpICUgZGVzY3AtPnBpdGNoX2FsaWduKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJt X2RiZyhkZGV2LCAic3RyaWRlIGFsaWduIHRvICV1IGJ5dGVzIGlzIHJlcXVpcmVkXG4iLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVzY3AtPnBpdGNoX2FsaWduKTsNCj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gTU9ERV9CQURfV0lEVEg7DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgcmV0dXJuIE1PREVfT0s7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgbHNkY19waXhwbGxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlz cGxheV9waXBlICpkaXNwaXBlID0gY3J0Y190b19kaXNwbGF5X3BpcGUoY3J0Yyk7DQo+PiAr wqDCoMKgIHN0cnVjdCBsc2RjX3BsbCAqcGl4cGxsID0gJmRpc3BpcGUtPnBpeHBsbDsNCj4+ ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfcGl4cGxsX2Z1bmNzICpwZnVuY3MgPSBwaXhw bGwtPmZ1bmNzOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19jcnRjX3N0YXRlICpwcml2X3N0 YXRlID0gdG9fbHNkY19jcnRjX3N0YXRlKHN0YXRlKTsNCj4+ICvCoMKgwqAgc3RydWN0IGxz ZGNfcGxsX3Bhcm1zICpwb3V0ID0gJnByaXZfc3RhdGUtPnBwYXJtczsNCj4+ICvCoMKgwqAg dW5zaWduZWQgaW50IGNsb2NrID0gc3RhdGUtPm1vZGUuY2xvY2s7DQo+PiArwqDCoMKgIGlu dCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IHBmdW5jcy0+Y29tcHV0ZShwaXhwbGws IGNsb2NrLCBwb3V0KTsNCj4+ICvCoMKgwqAgaWYgKHJldCkgew0KPj4gK8KgwqDCoMKgwqDC oMKgIGRybV93YXJuKGNydGMtPmRldiwgIkZpbmQgUExMIHBhcm1zIGZvciAldWtIeiBmYWls ZWRcbiIsIGNsb2NrKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsNCj4+ ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGludCBsc2RjX2NydGNfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+PiArew0KPj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSANCj4+IGRybV9hdG9taWNf Z2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYg KCFjcnRjX3N0YXRlLT5lbmFibGUpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+ PiArDQo+PiArwqDCoMKgIHJldHVybiBsc2RjX3BpeHBsbF9hdG9taWNfY2hlY2soY3J0Yywg Y3J0Y19zdGF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4+ICt7DQo+ PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gY3J0Yy0+ZGV2Ow0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8Kg wqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4g K8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSBjcnRjX3RvX2Rp c3BsYXlfcGlwZShjcnRjKTsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfcGxsICpwaXhwbGwg PSAmZGlzcGlwZS0+cGl4cGxsOw0KPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19waXhw bGxfZnVuY3MgKmNsa19mdW5jID0gcGl4cGxsLT5mdW5jczsNCj4+ICvCoMKgwqAgc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gDQo+PiBkcm1fYXRvbWljX2dldF9uZXdf Y3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2NydGNf c3RhdGUgKnByaXZfc3RhdGUgPSB0b19sc2RjX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7DQo+ PiArwqDCoMKgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGNfc3RhdGUt Pm1vZGU7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCA9IGRybV9jcnRjX2luZGV4 KGNydGMpOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgd2lkdGhfaW5fYnl0ZXMgPSBtb2Rl LT5jcnRjX2hkaXNwbGF5ICogNDsNCj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+ICsNCj4+ICvC oMKgwqAgbHNkY19jcnRjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX0hESVNQTEFZX1JFRywg aW5kZXgsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChtb2RlLT5jcnRjX2h0b3Rh bCA8PCAxNikgfCBtb2RlLT5jcnRjX2hkaXNwbGF5KTsNCj4+ICsNCj4+ICvCoMKgwqAgbHNk Y19jcnRjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX1ZESVNQTEFZX1JFRywgaW5kZXgsDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChtb2RlLT5jcnRjX3Z0b3RhbCA8PCAxNikg fCBtb2RlLT5jcnRjX3ZkaXNwbGF5KTsNCj4+ICsNCj4+ICvCoMKgwqAgbHNkY19jcnRjX3dy ZWczMihsZGV2LCBMU0RDX0NSVEMwX0hTWU5DX1JFRywgaW5kZXgsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChtb2RlLT5jcnRjX2hzeW5jX2VuZCA8PCAxNikgfA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlLT5jcnRjX2hzeW5jX3N0YXJ0IHwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0ZHX0hTWU5DX0VOKTsNCj4+ICsNCj4+ICvCoMKg wqAgbHNkY19jcnRjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX1ZTWU5DX1JFRywgaW5kZXgs DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChtb2RlLT5jcnRjX3ZzeW5jX2VuZCA8 PCAxNikgfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb2RlLT5jcnRjX3ZzeW5j X3N0YXJ0IHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0ZHX1ZTWU5DX0VOKTsN Cj4+ICsNCj4+ICvCoMKgwqAgdmFsID0gbHNkY19jcnRjX3JyZWczMihsZGV2LCBMU0RDX0NS VEMwX0NGR19SRUcsIGluZGV4KTsNCj4+ICvCoMKgwqAgLyogY2xlYXIgb2xkIGRtYSBzdGVw IHNldHRpbmdzICovDQo+PiArwqDCoMKgIHZhbCAmPSB+Q0ZHX0RNQV9TVEVQX01BU0s7DQo+ PiArDQo+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0EyMDAwKSB7DQo+ PiArwqDCoMKgwqDCoMKgwqAgLyoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogVXNpbmcgbGFy Z2UgZG1hIHN0ZXAgYXMgbXVjaCBhcyBwb3NzaWJsZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKg ICogZm9yIGltcHJvdmUgaGFyZHdhcmUgRE1BIGVmZmljaWVuY3kuDQo+PiArwqDCoMKgwqDC oMKgwqDCoCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh3aWR0aF9pbl9ieXRlcyAlIDI1 NiA9PSAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsIHw9IExTRENfRE1BX1NU RVBfMjU2X0JZVEVTOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHdpZHRoX2luX2J5 dGVzICUgMTI4ID09IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YWwgfD0gTFNE Q19ETUFfU1RFUF8xMjhfQllURVM7DQo+PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAod2lk dGhfaW5fYnl0ZXMgJSA2NCA9PSAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFs IHw9IExTRENfRE1BX1NURVBfNjRfQllURVM7DQo+PiArwqDCoMKgwqDCoMKgwqAgZWxzZcKg IC8qIHdpZHRoX2luX2J5dGVzICUgMzIgPT0gMCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdmFsIHw9IExTRENfRE1BX1NURVBfMzJfQllURVM7DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgbHNkY19jcnRjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX0NGR19S RUcsIGluZGV4LCB2YWwpOw0KPj4gKw0KPj4gK8KgwqDCoCBjbGtfZnVuYy0+dXBkYXRlKHBp eHBsbCwgJnByaXZfc3RhdGUtPnBwYXJtcyk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9jcnRj X3ZibGFua19vbihjcnRjKTsNCj4+ICsNCj4+ICvCoMKgwqAgbHNkY19jcnRjX3VyZWczMl9z ZXQobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCBpbmRleCwgDQo+PiBDRkdfT1VUUFVUX0VO KTsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiQ1JUQy0ldSBlbmFibGVkOiAl dXgldVxuIiwNCj4+ICvCoMKgwqDCoMKgwqDCoCBpbmRleCwgbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbHNkY19jcnRj X2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4g K3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBjcnRjLT5kZXY7DQo+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+ PiArwqDCoMKgIHVuc2lnbmVkIGludCBpID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7DQo+PiAr DQo+PiArwqDCoMKgIGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayhjcnRjKTsNCj4+ICvCoMKg wqAgbHNkY19jcnRjX3VyZWczMl9jbHIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCBpLCBD RkdfT1VUUFVUX0VOKTsNCj4+ICvCoMKgwqAgZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsN Cj4+ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiQ1JUQy0ldSBkaXNhYmxlZFxuIiwg aSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfY3J0Y19hdG9taWNfZmx1 c2goc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+PiArew0K Pj4gK8KgwqDCoCBzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOw0KPj4g K8KgwqDCoCBpZiAoY3J0Yy0+c3RhdGUtPmV2ZW50KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAg aWYgKGRybV9jcnRjX3ZibGFua19nZXQoY3J0YykgPT0gMCkNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRybV9jcnRjX2FybV92YmxhbmtfZXZlbnQoY3J0YywgY3J0Yy0+c3RhdGUt PmV2ZW50KTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ ZXZlbnQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7 DQo+PiArwqDCoMKgIH0NCj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5kZXYt PmV2ZW50X2xvY2spOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgYm9vbCBsc2RjX2NydGNf Z2V0X3NjYW5vdXRfcG9zaXRpb24oc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgaW5fdmJsYW5r X2lycSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpbnQgKnZwb3MsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaW50ICpocG9zLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGt0aW1lX3QgKnN0aW1lLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt0aW1lX3QgKmV0aW1lLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYgPSBjcnRjLT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rldmlj ZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpID0g ZHJtX2NydGNfaW5kZXgoY3J0Yyk7DQo+PiArwqDCoMKgIGludCBsaW5lLCB2c3csIHZicCwg dmFjdGl2ZV9zdGFydCwgdmFjdGl2ZV9lbmQsIHZmcF9lbmQ7DQo+PiArwqDCoMKgIHUzMiB2 YWwgPSAwOw0KPj4gKw0KPj4gK8KgwqDCoCB2c3cgPSBtb2RlLT5jcnRjX3ZzeW5jX2VuZCAt IG1vZGUtPmNydGNfdnN5bmNfc3RhcnQ7DQo+PiArwqDCoMKgIHZicCA9IG1vZGUtPmNydGNf dnRvdGFsIC0gbW9kZS0+Y3J0Y192c3luY19lbmQ7DQo+PiArDQo+PiArwqDCoMKgIHZhY3Rp dmVfc3RhcnQgPSB2c3cgKyB2YnAgKyAxOw0KPj4gK8KgwqDCoCB2YWN0aXZlX2VuZCA9IHZh Y3RpdmVfc3RhcnQgKyBtb2RlLT5jcnRjX3ZkaXNwbGF5Ow0KPj4gKw0KPj4gK8KgwqDCoCAv KiBsYXN0IHNjYW4gbGluZSBiZWZvcmUgVlNZTkMgKi8NCj4+ICvCoMKgwqAgdmZwX2VuZCA9 IG1vZGUtPmNydGNfdnRvdGFsOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoc3RpbWUpDQo+PiAr wqDCoMKgwqDCoMKgwqAgKnN0aW1lID0ga3RpbWVfZ2V0KCk7DQo+PiArDQo+PiArwqDCoMKg IHZhbCA9IGxzZGNfY3J0Y19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9TQ0FOX1BPU19SRUcs IGkpOw0KPj4gKw0KPj4gK8KgwqDCoCBsaW5lID0gKHZhbCAmIDB4ZmZmZik7DQo+PiArDQo+ PiArwqDCoMKgIGlmIChsaW5lIDwgdmFjdGl2ZV9zdGFydCkNCj4+ICvCoMKgwqDCoMKgwqDC oCBsaW5lIC09IHZhY3RpdmVfc3RhcnQ7DQo+PiArwqDCoMKgIGVsc2UgaWYgKGxpbmUgPiB2 YWN0aXZlX2VuZCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBsaW5lID0gbGluZSAtIHZmcF9lbmQg LSB2YWN0aXZlX3N0YXJ0Ow0KPj4gK8KgwqDCoCBlbHNlDQo+PiArwqDCoMKgwqDCoMKgwqAg bGluZSAtPSB2YWN0aXZlX3N0YXJ0Ow0KPj4gKw0KPj4gK8KgwqDCoCAqdnBvcyA9IGxpbmU7 DQo+PiArwqDCoMKgICpocG9zID0gdmFsID4+IDE2Ow0KPj4gKw0KPj4gK8KgwqDCoCBpZiAo ZXRpbWUpDQo+PiArwqDCoMKgwqDCoMKgwqAgKmV0aW1lID0ga3RpbWVfZ2V0KCk7DQo+PiAr DQo+PiArwqDCoMKgIHJldHVybiB0cnVlOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBsc2RjX2NydGNfaGVscGVyX2Z1bmNz ID0gew0KPj4gK8KgwqDCoCAubW9kZV92YWxpZCA9IGxzZGNfY3J0Y19tb2RlX3ZhbGlkLA0K Pj4gK8KgwqDCoCAuYXRvbWljX2VuYWJsZSA9IGxzZGNfY3J0Y19lbmFibGUsDQo+PiArwqDC oMKgIC5hdG9taWNfZGlzYWJsZSA9IGxzZGNfY3J0Y19kaXNhYmxlLA0KPj4gK8KgwqDCoCAu YXRvbWljX2NoZWNrID0gbHNkY19jcnRjX2hlbHBlcl9hdG9taWNfY2hlY2ssDQo+PiArwqDC oMKgIC5hdG9taWNfZmx1c2ggPSBsc2RjX2NydGNfYXRvbWljX2ZsdXNoLA0KPj4gK8KgwqDC oCAuZ2V0X3NjYW5vdXRfcG9zaXRpb24gPSBsc2RjX2NydGNfZ2V0X3NjYW5vdXRfcG9zaXRp b24sDQo+PiArfTsNCj4+ICsNCj4+ICtpbnQgbHNkY19jcnRjX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRj ICpjcnRjLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnksDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqY3Vy c29yLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBpKQ0KPj4gK3sN Cj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsN Cj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNj cDsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGhhcyA9IGRlc2NwLT5oYXNfdmJsYW5rX2Nv dW50ZXI7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IGRy bV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGRldiwgY3J0YywgcHJpbWFyeSwgY3Vyc29yLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZsc2RjX2NydGNf ZnVuY3NfYXJyYXlbaGFzXVtpXSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiQ1JUQy0lZCIsIGkpOw0KPj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiY3J0YyBpbml0IHdpdGggcGxhbmVzIGZh aWxlZDogJWRcbiIsIHJldCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMs ICZsc2RjX2NydGNfaGVscGVyX2Z1bmNzKTsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhk ZGV2LCAiJXMgaW5pdGlhbGl6ZWQgJXMgdmJsYW5rIGNvdW50ZXIgc3VwcG9ydFxuIiwNCj4+ ICvCoMKgwqDCoMKgwqDCoCBjcnRjLT5uYW1lLCBoYXMgPyAid2l0aCIgOiAid2l0aG91dCIp Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXpl KGNydGMsIDI1Nik7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2NydGNfZW5hYmxlX2NvbG9yX21n bXQoY3J0YywgMCwgZmFsc2UsIDI1Nik7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0K Pj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2RlYnVn ZnMuYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19kZWJ1Z2ZzLmMNCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjJkMTIwY2E2NzU3 NA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNk Y19kZWJ1Z2ZzLmMNCj4+IEBAIC0wLDAgKzEsMjM2IEBADQo+PiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjArDQo+PiArDQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZGVi dWdmcy5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oPg0KPj4g KyNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNk Y19kcnYuaCINCj4+ICsNCj4+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+PiArDQo+PiAr c3RhdGljIGludCBsc2RjX2lkZW50aWZ5KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJn KQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3Ry dWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2RldmljZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBs c2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+PiArwqDCoMKgIHU4IGltcCwg cmV2Ow0KPj4gKw0KPj4gK8KgwqDCoCBsb29uZ3Nvbl9jcHVfZ2V0X3ByaWQoJmltcCwgJnJl dik7DQo+PiArDQo+PiArwqDCoMKgIHNlcV9wcmludGYobSwgIkknbSBpbiAlcywgcnVubmlu ZyBvbiBjcHUgMHgleCwgY3B1IHJldmlzaW9uOiANCj4+IDB4JXhcbiIsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2hpcF90b19zdHIobGRldi0+ZGVzY3AtPmNoaXApLCBpbXAsIHJl dik7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW50IGxzZGNfc2hvd19jbG9jayhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZykN Cj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVj dCBkcm1faW5mb19ub2RlICopbS0+cHJpdmF0ZTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2NydGMgKmNydGM7DQo+PiArDQo+PiArwqDCoMKgIGRybV9mb3JfZWFjaF9jcnRjKGNydGMs IGRkZXYpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUg KnBpcGUgPSBjcnRjX3RvX2Rpc3BsYXlfcGlwZShjcnRjKTsNCj4+ICvCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgbHNkY19wbGwgKnBpeHBsbCA9ICZwaXBlLT5waXhwbGw7DQo+PiArwqDCoMKg wqDCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfcGl4cGxsX2Z1bmNzICpmdW5jcyA9IHBpeHBs bC0+ZnVuY3M7DQo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUgPSAmY3J0Yy0+c3RhdGUtPm1vZGU7DQo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGxzZGNfcGxsX3Bhcm1zIHBhcm1zOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dCBvdXRfa2h6Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIG91dF9raHogPSBmdW5jcy0+ Z2V0X2Nsb2NrX3JhdGUocGl4cGxsLCAmcGFybXMpOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDC oMKgIHNlcV9wcmludGYobSwgIkRpc3BsYXkgcGlwZSAldTogJWR4JWRcbiIsDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaXBlLT5pbmRleCwgbW9kZS0+aGRpc3BsYXks IG1vZGUtPnZkaXNwbGF5KTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRm KG0sICJGcmVxdWVuY3kgYWN0dWFsbHkgb3V0cHV0OiAldSBrSHpcbiIsIG91dF9raHopOw0K Pj4gK8KgwqDCoMKgwqDCoMKgIHNlcV9wcmludGYobSwgIlBpeGVsIGNsb2NrIHJlcXVpcmVk OiAlZCBrSHpcbiIsIG1vZGUtPmNsb2NrKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJp bnRmKG0sICJkaWZmOiAlZCBrSHpcbiIsIG91dF9raHogLSBtb2RlLT5jbG9jayk7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiZGl2X3JlZj0ldSwgbG9vcGM9 JXUsIGRpdl9vdXQ9JXVcbiIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw YXJtcy5kaXZfcmVmLCBwYXJtcy5sb29wYywgcGFybXMuZGl2X291dCk7DQo+PiArDQo+PiAr wqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiaHN5bmNfc3RhcnQ9JWQsIGhzeW5jX2Vu ZD0lZCwgaHRvdGFsPSVkXG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bW9kZS0+aHN5bmNfc3RhcnQsIG1vZGUtPmhzeW5jX2VuZCwgbW9kZS0+aHRvdGFsKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICJ2c3luY19zdGFydD0lZCwgdnN5bmNf ZW5kPSVkLCB2dG90YWw9JWRcblxuIiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG1vZGUtPnZzeW5jX3N0YXJ0LCBtb2RlLT52c3luY19lbmQsIG1vZGUtPnZ0b3RhbCk7 DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbnQgbHNkY19zaG93X21tKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqYXJnKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUg PSAoc3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4gK8KgwqDCoCBzdHJ1 Y3QgZHJtX2RldmljZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7DQo+PiArwqDCoMKgIHN0 cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7DQo+PiArDQo+ PiArwqDCoMKgIGRybV9tbV9wcmludCgmZGRldi0+dm1hX29mZnNldF9tYW5hZ2VyLT52bV9h ZGRyX3NwYWNlX21tLCAmcCk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30N Cj4+ICsNCj4+ICsjZGVmaW5lIFJFR19ERUYocmVnKSB7IF9fc3RyaW5naWZ5XzEoTFNEQ18j I3JlZyMjX1JFRyksIA0KPj4gTFNEQ18jI3JlZyMjX1JFRyB9DQo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCB7DQo+PiArwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWU7DQo+PiArwqDCoMKgIHUz MiByZWdfb2Zmc2V0Ow0KPj4gK30gbHNkY19yZWdzX2FycmF5W10gPSB7DQo+PiArwqDCoMKg IFJFR19ERUYoQ1VSU09SMF9DRkcpLA0KPj4gK8KgwqDCoCBSRUdfREVGKENVUlNPUjBfQURE Ul9MTyksDQo+PiArwqDCoMKgIFJFR19ERUYoQ1VSU09SMF9BRERSX0hJKSwNCj4+ICvCoMKg wqAgUkVHX0RFRihDVVJTT1IwX1BPU0lUSU9OKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihDVVJT T1IwX0JHX0NPTE9SKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihDVVJTT1IwX0ZHX0NPTE9SKSwN Cj4+ICvCoMKgwqAgUkVHX0RFRihDUlRDMF9DRkcpLA0KPj4gK8KgwqDCoCBSRUdfREVGKENS VEMwX0ZCX09SSUdJTiksDQo+PiArwqDCoMKgIFJFR19ERUYoQ1JUQzBfSERJU1BMQVkpLA0K Pj4gK8KgwqDCoCBSRUdfREVGKENSVEMwX0hTWU5DKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihD UlRDMF9WRElTUExBWSksDQo+PiArwqDCoMKgIFJFR19ERUYoQ1JUQzBfVlNZTkMpLA0KPj4g K8KgwqDCoCBSRUdfREVGKENSVEMwX0dBTU1BX0lOREVYKSwNCj4+ICvCoMKgwqAgUkVHX0RF RihDUlRDMF9HQU1NQV9EQVRBKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihJTlQpLA0KPj4gK8Kg wqDCoCBSRUdfREVGKENSVEMxX0NGRyksDQo+PiArwqDCoMKgIFJFR19ERUYoQ1JUQzFfRkJf T1JJR0lOKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihDUlRDMV9IRElTUExBWSksDQo+PiArwqDC oMKgIFJFR19ERUYoQ1JUQzFfSFNZTkMpLA0KPj4gK8KgwqDCoCBSRUdfREVGKENSVEMxX1ZE SVNQTEFZKSwNCj4+ICvCoMKgwqAgUkVHX0RFRihDUlRDMV9WU1lOQyksDQo+PiArwqDCoMKg IFJFR19ERUYoQ1JUQzFfR0FNTUFfSU5ERVgpLA0KPj4gK8KgwqDCoCBSRUdfREVGKENSVEMx X0dBTU1BX0RBVEEpLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBsc2RjX3Nob3df cmVncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZykNCj4+ICt7DQo+PiArwqDCoMKg IHN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICop bS0+cHJpdmF0ZTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBub2Rl LT5taW5vci0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0 b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCBpbnQgaTsNCj4+ICsNCj4+ICvCoMKgwqAgZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUobHNkY19yZWdzX2FycmF5KTsgaSsrKSB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgdTMyIG9mZnNldCA9IGxzZGNfcmVnc19hcnJheVtpXS5yZWdfb2Zm c2V0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKm5hbWUgPSBsc2RjX3JlZ3Nf YXJyYXlbaV0ubmFtZTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0s ICIlcyAoMHglMDR4KTogMHglMDh4XG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbmFtZSwgb2Zmc2V0LCBsc2RjX3JyZWczMihsZGV2LCBvZmZzZXQpKTsNCj4+ICvC oMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBsc2RjX3Nob3dfdmJsYW5rX2NvdW50ZXIoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICphcmcpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2luZm9fbm9kZSAq bm9kZSA9IChzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7DQo+PiArwqDCoMKg IHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gbm9kZS0+bWlub3ItPmRldjsNCj4+ICvCoMKg wqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICsNCj4+ ICvCoMKgwqAgc2VxX3ByaW50ZihtLCAiQ1JUQy0wIHZibGFuayBjb3VudGVyOiAlMDh1XG4i LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JU QzBfVlNZTkNfQ09VTlRFUl9SRUcpKTsNCj4+ICsNCj4+ICvCoMKgwqAgc2VxX3ByaW50Ziht LCAiQ1JUQy0xIHZibGFuayBjb3VudGVyOiAlMDh1XG4iLA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfVlNZTkNfQ09VTlRFUl9SRUcp KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgbHNkY19zaG93X3NjYW5fcG9zaXRpb24oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICphcmcpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9 IChzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7DQo+PiArwqDCoMKgIHN0cnVj dCBkcm1fZGV2aWNlICpkZGV2ID0gbm9kZS0+bWlub3ItPmRldjsNCj4+ICvCoMKgwqAgc3Ry dWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgdTMy IHAwID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9TQ0FOX1BPU19SRUcpOw0KPj4g K8KgwqDCoCB1MzIgcDEgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMxX1NDQU5fUE9T X1JFRyk7DQo+PiArDQo+PiArwqDCoMKgIHNlcV9wcmludGYobSwgIkNSVEMtMDogeDogJTA4 dSwgeTogJTA4dVxuIiwgcDAgPj4gMTYsIHAwICYgMHhGRkZGKTsNCj4+ICvCoMKgwqAgc2Vx X3ByaW50ZihtLCAiQ1JUQy0xOiB4OiAlMDh1LCB5OiAlMDh1XG4iLCBwMSA+PiAxNiwgcDEg JiAweEZGRkYpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGludCBsc2RjX3Nob3dfZmJfYWRkcihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKmFyZykNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1faW5mb19ub2RlICpub2Rl ID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICopbS0+cHJpdmF0ZTsNCj4+ICvCoMKgwqAgc3Ry dWN0IGRybV9kZXZpY2UgKmRkZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4gK8KgwqDCoCBz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1 MzIgbG8sIGhpOw0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCB2YWwg PSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0NGR19SRUcpOw0KPj4gK8KgwqDCoCBp ZiAodmFsICYgQ0ZHX0ZCX0lOX1VTSU5HKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgbG8gPSBs c2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0ZCMV9MT19BRERSX1JFRyk7DQo+PiArwqDC oMKgwqDCoMKgwqAgaGkgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0ZCMV9ISV9B RERSX1JFRyk7DQo+PiArwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiQ1JUQy0wIHVz aW5nIGZiMTogMHgleDoleFxuIiwgaGksIGxvKTsNCj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBsbyA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzBfRkIw X0xPX0FERFJfUkVHKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBoaSA9IGxzZGNfcnJlZzMyKGxk ZXYsIExTRENfQ1JUQzBfRkIwX0hJX0FERFJfUkVHKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBz ZXFfcHJpbnRmKG0sICJDUlRDLTAgdXNpbmcgZmIwOiAweCV4OiV4XG4iLCBoaSwgbG8pOw0K Pj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYs IExTRENfQ1JUQzFfQ0ZHX1JFRyk7DQo+PiArwqDCoMKgIGlmICh2YWwgJiBDRkdfRkJfSU5f VVNJTkcpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBsbyA9IGxzZGNfcnJlZzMyKGxkZXYsIExT RENfQ1JUQzFfRkIxX0xPX0FERFJfUkVHKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBoaSA9IGxz ZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfRkIxX0hJX0FERFJfUkVHKTsNCj4+ICvCoMKg wqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICJDUlRDLTEgdXNpbmcgZmIxOiAweCV4OiV4XG4i LCBoaSwgbG8pOw0KPj4gK8KgwqDCoCB9IGVsc2Ugew0KPj4gK8KgwqDCoMKgwqDCoMKgIGxv ID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9GQjBfTE9fQUREUl9SRUcpOw0KPj4g K8KgwqDCoMKgwqDCoMKgIGhpID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9GQjBf SElfQUREUl9SRUcpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHNlcV9wcmludGYobSwgIkNSVEMt MSB1c2luZyBmYjA6IDB4JXg6JXhcbiIsIGhpLCBsbyk7DQo+PiArwqDCoMKgIH0NCj4+ICsN Cj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbHNk Y19zaG93X3N0cmlkZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFyZykNCj4+ICt7DQo+ PiArwqDCoMKgIHN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVjdCBkcm1faW5m b19ub2RlICopbS0+cHJpdmF0ZTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRk ZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2Ug KmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIgc3RyaWRlMCA9IGxzZGNf cnJlZzMyKGxkZXYsIExTRENfQ1JUQzBfU1RSSURFX1JFRyk7DQo+PiArwqDCoMKgIHUzMiBz dHJpZGUxID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9TVFJJREVfUkVHKTsNCj4+ ICsNCj4+ICvCoMKgwqAgc2VxX3ByaW50ZihtLCAiUElQRS0wIHN0cmlkZTogJXVcbiIsIHN0 cmlkZTApOw0KPj4gK8KgwqDCoCBzZXFfcHJpbnRmKG0sICJQSVBFLTEgc3RyaWRlOiAldVxu Iiwgc3RyaWRlMSk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGxzZGNfdHJpZ2dlcl9mbGlwX2ZiKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqYXJnKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUg Km5vZGUgPSAoc3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7DQo+PiArwqDC oMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+PiArwqDC oMKgIHUzMiB2YWw7DQo+PiArDQo+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYs IExTRENfQ1JUQzBfQ0ZHX1JFRyk7DQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExT RENfQ1JUQzBfQ0ZHX1JFRywgdmFsIHwgQ0ZHX1BBR0VfRkxJUCk7DQo+PiArwqDCoMKgIHNl cV9wdXRzKG0sICJDUlRDLTAgZmxpcCB0cmlnZ2VyZWRcbiIpOw0KPj4gKw0KPj4gK8KgwqDC oCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMxX0NGR19SRUcpOw0KPj4gK8Kg wqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMxX0NGR19SRUcsIHZhbCB8IENGR19Q QUdFX0ZMSVApOw0KPj4gK8KgwqDCoCBzZXFfcHV0cyhtLCAiQ1JUQy0xIGZsaXAgdHJpZ2dl cmVkXG4iKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBsc2RjX2RlYnVnZnNfbGlzdFtdID0gew0K Pj4gK8KgwqDCoCB7ICJjaGlwIizCoMKgwqDCoCBsc2RjX2lkZW50aWZ5LCAwLCBOVUxMIH0s DQo+PiArwqDCoMKgIHsgImNsb2NrcyIswqDCoCBsc2RjX3Nob3dfY2xvY2ssIDAgfSwNCj4+ ICvCoMKgwqAgeyAibW0iLMKgwqDCoMKgwqDCoCBsc2RjX3Nob3dfbW0sIDAsIE5VTEwgfSwN Cj4+ICvCoMKgwqAgeyAicmVncyIswqDCoMKgwqAgbHNkY19zaG93X3JlZ3MsIDAgfSwNCj4+ ICvCoMKgwqAgeyAidmJsYW5rcyIswqAgbHNkY19zaG93X3ZibGFua19jb3VudGVyLCAwLCBO VUxMIH0sDQo+PiArwqDCoMKgIHsgInNjYW5fcG9zIiwgbHNkY19zaG93X3NjYW5fcG9zaXRp b24sIDAsIE5VTEwgfSwNCj4+ICvCoMKgwqAgeyAiZmJfYWRkciIswqAgbHNkY19zaG93X2Zi X2FkZHIsIDAsIE5VTEwgfSwNCj4+ICvCoMKgwqAgeyAic3RyaWRlIizCoMKgIGxzZGNfc2hv d19zdHJpZGUsIDAsIE5VTEwgfSwNCj4+ICvCoMKgwqAgeyAiZmxpcCIswqDCoMKgwqAgbHNk Y190cmlnZ2VyX2ZsaXBfZmIsIDAsIE5VTEwgfSwNCj4+ICt9Ow0KPj4gKw0KPj4gKyNlbmRp Zg0KPj4gKw0KPj4gK3ZvaWQgbHNkY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAq bWlub3IpDQo+PiArew0KPj4gKyNpZmRlZiBDT05GSUdfREVCVUdfRlMNCj4+ICvCoMKgwqAg ZHJtX2RlYnVnZnNfY3JlYXRlX2ZpbGVzKGxzZGNfZGVidWdmc19saXN0LA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSUkFZX1NJWkUobHNkY19kZWJ1Z2ZzX2xp c3QpLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1pbm9yLT5kZWJ1 Z2ZzX3Jvb3QsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWlub3Ip Ow0KPj4gKyNlbmRpZg0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bHNkYy9sc2RjX2Rydi5jIA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2Rydi5j DQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi44ZTEz YTEzMTliMGQNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9s c2RjL2xzZGNfZHJ2LmMNCj4+IEBAIC0wLDAgKzEsNTI5IEBADQo+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjArDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L29m X2FkZHJlc3MuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvcGNpLmg+DQo+PiArDQo+PiArI2lu Y2x1ZGUgPGRybS9kcm1fYXBlcnR1cmUuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWNfaGVscGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+DQo+PiArI2luY2x1 ZGUgPGRybS9kcm1fZmJkZXZfZ2VuZXJpYy5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Zv dXJjYy5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIu aD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9pb2N0bC5oPg0KPj4gKyNpbmNsdWRlIDxkcm0v ZHJtX21vZGVzZXRfaGVscGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVs cGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rLmg+DQo+PiArDQo+PiArI2lu Y2x1ZGUgImxzZGNfZHJ2LmgiDQo+PiArI2luY2x1ZGUgImxzZGNfb3V0cHV0LmgiDQo+PiAr I2luY2x1ZGUgImxzZGNfdHRtLmgiDQo+PiArDQo+PiArI2RlZmluZSBEUklWRVJfQVVUSE9S wqDCoMKgwqDCoMKgwqAgIlN1aSBKaW5nZmVuZyA8c3VpamluZ2ZlbmdAbG9vbmdzb24uY24+ Ig0KPj4gKyNkZWZpbmUgRFJJVkVSX05BTUXCoMKgwqDCoMKgwqDCoCAibG9vbmdzb24tZHJt Ig0KPj4gKyNkZWZpbmUgRFJJVkVSX0RFU0PCoMKgwqDCoMKgwqDCoCAiZHJtIGRyaXZlciBm b3IgbG9vbmdzb24ncyBkaXNwbGF5IA0KPj4gY29udHJvbGxlciINCj4+ICsjZGVmaW5lIERS SVZFUl9EQVRFwqDCoMKgwqDCoMKgwqAgIjIwMjIwNzAxIg0KPj4gKyNkZWZpbmUgRFJJVkVS X01BSk9SwqDCoMKgwqDCoMKgwqAgMQ0KPj4gKyNkZWZpbmUgRFJJVkVSX01JTk9SwqDCoMKg wqDCoMKgwqAgMA0KPj4gKyNkZWZpbmUgRFJJVkVSX1BBVENITEVWRUzCoMKgwqAgMA0KPj4g Kw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjIGRjX2luX2xzN2ExMDAwID0g ew0KPj4gK8KgwqDCoCAuY2hpcCA9IENISVBfTFM3QTEwMDAsDQo+PiArwqDCoMKgIC5udW1f b2ZfY3J0YyA9IExTRENfTlVNX0NSVEMsDQo+PiArwqDCoMKgIC5tYXhfcGl4ZWxfY2xrID0g MjAwMDAwLA0KPj4gK8KgwqDCoCAubWF4X3dpZHRoID0gMjA0OCwNCj4+ICvCoMKgwqAgLm1h eF9oZWlnaHQgPSAyMDQ4LA0KPj4gK8KgwqDCoCAubnVtX29mX2h3X2N1cnNvciA9IDEsDQo+ PiArwqDCoMKgIC5od19jdXJzb3JfdyA9IDMyLA0KPj4gK8KgwqDCoCAuaHdfY3Vyc29yX2gg PSAzMiwNCj4+ICvCoMKgwqAgLnBpdGNoX2FsaWduID0gMjU2LA0KPj4gK8KgwqDCoCAubWNf Yml0cyA9IDQwLA0KPj4gK8KgwqDCoCAuaGFzX3ZibGFua19jb3VudGVyID0gZmFsc2UsDQo+ PiArwqDCoMKgIC5oYXNfc2Nhbl9wb3MgPSB0cnVlLA0KPj4gK8KgwqDCoCAuaGFzX2J1aWx0 aW5faTJjID0gdHJ1ZSwNCj4+ICvCoMKgwqAgLmhhc192cmFtID0gdHJ1ZSwNCj4+ICvCoMKg wqAgLmhhc19ocGRfcmVnID0gZmFsc2UsDQo+PiArwqDCoMKgIC5pc19zb2MgPSBmYWxzZSwN Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjIGRjX2lu X2xzN2EyMDAwID0gew0KPj4gK8KgwqDCoCAuY2hpcCA9IENISVBfTFM3QTIwMDAsDQo+PiAr wqDCoMKgIC5udW1fb2ZfY3J0YyA9IExTRENfTlVNX0NSVEMsDQo+PiArwqDCoMKgIC5tYXhf cGl4ZWxfY2xrID0gMzUwMDAwLA0KPj4gK8KgwqDCoCAubWF4X3dpZHRoID0gNDA5NiwNCj4+ ICvCoMKgwqAgLm1heF9oZWlnaHQgPSA0MDk2LA0KPj4gK8KgwqDCoCAubnVtX29mX2h3X2N1 cnNvciA9IDIsDQo+PiArwqDCoMKgIC5od19jdXJzb3JfdyA9IDY0LA0KPj4gK8KgwqDCoCAu aHdfY3Vyc29yX2ggPSA2NCwNCj4+ICvCoMKgwqAgLnBpdGNoX2FsaWduID0gNjQsDQo+PiAr wqDCoMKgIC5tY19iaXRzID0gNDAsIC8qIHN1cHBvcnQgNDgsIGJ1dCB1c2UgNDAgZm9yIGJh Y2t3YXJkIA0KPj4gY29tcGF0aWJpbGl0eSAqLw0KPj4gK8KgwqDCoCAuaGFzX3ZibGFua19j b3VudGVyID0gdHJ1ZSwNCj4+ICvCoMKgwqAgLmhhc19zY2FuX3BvcyA9IHRydWUsDQo+PiAr wqDCoMKgIC5oYXNfYnVpbHRpbl9pMmMgPSB0cnVlLA0KPj4gK8KgwqDCoCAuaGFzX3ZyYW0g PSB0cnVlLA0KPj4gK8KgwqDCoCAuaGFzX2hwZF9yZWcgPSB0cnVlLA0KPj4gK8KgwqDCoCAu aXNfc29jID0gZmFsc2UsDQo+PiArfTsNCj4+ICsNCj4+ICtjb25zdCBjaGFyICpjaGlwX3Rv X3N0cihlbnVtIGxvb25nc29uX2NoaXBfZmFtaWx5IGNoaXApDQo+PiArew0KPj4gK8KgwqDC oCBpZiAoY2hpcCA9PSBDSElQX0xTN0EyMDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAiTFM3QTIwMDAiOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoY2hpcCA9PSBDSElQX0xTN0Ex MDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAiTFM3QTEwMDAiOw0KPj4gKw0KPj4g K8KgwqDCoCByZXR1cm4gInVua25vd24iOw0KPj4gK30NCj4+ICsNCj4+ICtERUZJTkVfRFJN X0dFTV9GT1BTKGxzZGNfZ2VtX2ZvcHMpOw0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2RyaXZlciBsc2RjX2RybV9kcml2ZXIgPSB7DQo+PiArwqDCoMKgIC5kcml2ZXJf ZmVhdHVyZXMgPSBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfCBEUklWRVJfQVRPTUlD LA0KPj4gK8KgwqDCoCAuZm9wcyA9ICZsc2RjX2dlbV9mb3BzLA0KPj4gKw0KPj4gK8KgwqDC oCAubmFtZSA9IERSSVZFUl9OQU1FLA0KPj4gK8KgwqDCoCAuZGVzYyA9IERSSVZFUl9ERVND LA0KPj4gK8KgwqDCoCAuZGF0ZSA9IERSSVZFUl9EQVRFLA0KPj4gK8KgwqDCoCAubWFqb3Ig PSBEUklWRVJfTUFKT1IsDQo+PiArwqDCoMKgIC5taW5vciA9IERSSVZFUl9NSU5PUiwNCj4+ ICvCoMKgwqAgLnBhdGNobGV2ZWwgPSBEUklWRVJfUEFUQ0hMRVZFTCwNCj4+ICsNCj4+ICvC oMKgwqAgLmRlYnVnZnNfaW5pdCA9IGxzZGNfZGVidWdmc19pbml0LA0KPj4gK8KgwqDCoCAu ZHVtYl9jcmVhdGUgPSBsc2RjX2R1bWJfY3JlYXRlLA0KPj4gK8KgwqDCoCAuZHVtYl9tYXBf b2Zmc2V0ID0gbHNkY19kdW1iX21hcF9vZmZzZXQsDQo+PiArwqDCoMKgIC5nZW1fcHJpbWVf bW1hcCA9IGRybV9nZW1fcHJpbWVfbW1hcCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBl bnVtIGRybV9tb2RlX3N0YXR1cw0KPj4gK2xzZGNfbW9kZV9jb25maWdfbW9kZV92YWxpZChz dHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpDQo+PiArew0KPj4g K8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4g K8KgwqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvID0gDQo+PiBkcm1f Zm9ybWF0X2luZm8oRFJNX0ZPUk1BVF9YUkdCODg4OCk7DQo+PiArwqDCoMKgIHU2NCBtaW5f cGl0Y2ggPSBkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIG1vZGUtPmhkaXNw bGF5KTsNCj4+ICvCoMKgwqAgdTY0IGZiX3NpemUgPSBtaW5fcGl0Y2ggKiBtb2RlLT52ZGlz cGxheTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGZiX3NpemUgKiAzID4gbGRldi0+dnJhbV9z aXplKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX01FTTsNCj4+ICsNCj4+ICvC oMKgwqAgcmV0dXJuIE1PREVfT0s7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGxzZGNfbW9kZV9jb25maWdfZnVuY3MgPSB7 DQo+PiArwqDCoMKgIC5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZSwNCj4+ICvCoMKg wqAgLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLA0KPj4gK8KgwqDC oCAuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwNCj4+ICvCoMKg wqAgLm1vZGVfdmFsaWQgPSBsc2RjX21vZGVfY29uZmlnX21vZGVfdmFsaWQsDQo+PiArfTsN Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfbW9kZXNldF9pbml0KHN0cnVjdCBsc2RjX2Rl dmljZSAqbGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGlu dCBudW1fY3J0YyA9IGRlc2NwLT5udW1fb2ZfY3J0YzsNCj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IGk7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIGZvciAoaSA9 IDA7IGkgPCBudW1fY3J0YzsgaSsrKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxz ZGNfZGlzcGxheV9waXBlICpkaXNwaXBlID0gJmxkZXYtPmRpc3BpcGVbaV07DQo+PiArwqDC oMKgwqDCoMKgwqAgLyogd2UgaGF2ZSBhIGluZGV4IGJlZm9yZSBjcnRjIGlzIGluaXRpYWxp emVkICovDQo+PiArwqDCoMKgwqDCoMKgwqAgZGlzcGlwZS0+aW5kZXggPSBpOw0KPj4gKw0K Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGxzZGNfY3JlYXRlX291dHB1dChsZGV2LCBkaXNw aXBlKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBsZGV2LT5u dW1fb3V0cHV0Kys7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgZm9yIChpID0g MDsgaSA8IG51bV9jcnRjOyBpKyspIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNk Y19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSAmbGRldi0+ZGlzcGlwZVtpXTsNCj4+ICsNCj4+ ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBsc2RjX3BpeHBsbF9pbml0KCZkaXNwaXBlLT5waXhw bGwsIGRkZXYsIGkpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKg IHJldCA9IGxzZGNfcHJpbWFyeV9wbGFuZV9pbml0KGxkZXYsICZkaXNwaXBlLT5wcmltYXJ5 LCBpKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBs c2RjX2N1cnNvcl9wbGFuZV9pbml0KGxkZXYsICZkaXNwaXBlLT5jdXJzb3IsIGkpOw0KPj4g K8KgwqDCoMKgwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGxzZGNfY3J0Y19p bml0KGRkZXYsICZkaXNwaXBlLT5jcnRjLCAmZGlzcGlwZS0+cHJpbWFyeSwgDQo+PiAmZGlz cGlwZS0+Y3Vyc29yLCBpKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0K Pj4gK8KgwqDCoCBkcm1fbW9kZV9jb25maWdfcmVzZXQoZGRldik7DQo+PiArDQo+PiArwqDC oMKgIGRybV9pbmZvKGRkZXYsICJtb2Rlc2V0IGluaXQgZmluaXNoZWQsIHRvdGFsICV1XG4i LCANCj4+IGxkZXYtPm51bV9vdXRwdXQpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsc2RjX21vZGVfY29uZmlnX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3ApDQo+PiArew0KPj4gK8KgwqDC oCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1tX21vZGVfY29uZmlnX2lu aXQoZGRldik7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcuZnVuY3MgPSAm bHNkY19tb2RlX2NvbmZpZ19mdW5jczsNCj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcu bWluX3dpZHRoID0gMTsNCj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcubWluX2hlaWdo dCA9IDE7DQo+PiArwqDCoMKgIGRkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IGRlc2Nw LT5tYXhfd2lkdGggKiBMU0RDX05VTV9DUlRDOw0KPj4gK8KgwqDCoCBkZGV2LT5tb2RlX2Nv bmZpZy5tYXhfaGVpZ2h0ID0gZGVzY3AtPm1heF9oZWlnaHQgKiBMU0RDX05VTV9DUlRDOw0K Pj4gK8KgwqDCoCBkZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggPSAyNDsNCj4+ ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcucHJlZmVyX3NoYWRvdyA9IGRlc2NwLT5oYXNf dnJhbTsNCj4+ICsNCj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRo ID0gZGVzY3AtPmh3X2N1cnNvcl9oOw0KPj4gK8KgwqDCoCBkZGV2LT5tb2RlX2NvbmZpZy5j dXJzb3JfaGVpZ2h0ID0gZGVzY3AtPmh3X2N1cnNvcl9oOw0KPj4gKw0KPj4gK8KgwqDCoCBp ZiAoZGVzY3AtPmhhc192YmxhbmtfY291bnRlcikNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZGV2 LT5tYXhfdmJsYW5rX2NvdW50ID0gMHhmZmZmZmZmZjsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0 dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBsc2RjX2Rl c2MgKg0KPj4gK2xzZGNfZGV0ZWN0X2NoaXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0 IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpDQo+PiArew0KPj4gK8KgwqDCoCBlbnVtIGxv b25nc29uX2NoaXBfZmFtaWx5IGNoaXAgPSBlbnQtPmRyaXZlcl9kYXRhOw0KPj4gKw0KPj4g K8KgwqDCoCBpZiAoY2hpcCA9PSBDSElQX0xTN0ExMDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAmZGNfaW5fbHM3YTEwMDA7DQo+PiArDQo+PiArwqDCoMKgIGlmIChjaGlwID09 IENISVBfTFM3QTIwMDApDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuICZkY19pbl9sczdh MjAwMDsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfZGVkaWNhdGVkX3ZyYW0oc3RydWN0 IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCkNCj4+ICt7DQo+PiArwqDC oMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+PiArwqDCoMKg IHN0cnVjdCBwY2lfZGV2ICpncHU7DQo+PiArwqDCoMKgIHJlc291cmNlX3NpemVfdCBiYXNl LCBzaXplOw0KPj4gKw0KPj4gK8KgwqDCoCAvKg0KPj4gK8KgwqDCoMKgICogVGhlIEdQVSBh bmQgZGlzcGxheSBjb250cm9sbGVyIGluIExTN0ExMDAwL0xTN0EyMDAwIGFyZSBzZXBhcmF0 ZWQNCj4+ICvCoMKgwqDCoCAqIFBDSUUgZGV2aWNlcywgdGhleSBhcmUgdHdvIGRldmljZXMg bm90IG9uZS4gVGhlIERDIGlzIGEgcGNpIA0KPj4gZGV2aWNlLA0KPj4gK8KgwqDCoMKgICog YnV0IGl0IGRvbid0IGhhdmUgYSBkZWRpY2F0ZSBWUkFNIGJhciwgdGhlIEJJT1MgZW5naW5l ZXIgDQo+PiBjaG9vc2UgdG8NCj4+ICvCoMKgwqDCoCAqIGFzc2lnbiB0aGUgVlJBTSB0byB0 aGUgZ3B1IGRldmljZS4gU2FkbHksIGFmdGVyIHllYXJzIA0KPj4gYXBwbGljYXRpb24sDQo+ PiArwqDCoMKgwqAgKiB0aGlzIGRlY2lzaW9uIGZvcm0gYXMgYSBjb252ZW50aW9uIGZvciBs b29uZ3NvbiBpbnRlZ3JhdGUgDQo+PiBncmFwaGljcy4NCj4+ICvCoMKgwqDCoCAqIEZvciBM UzdBMTAwMCBhbmQgTFM3QTIwMDAsIGJhciAyIG9mIEdQVSBkZXZpY2UgY29udGFpbiB0aGUg VlJBTSwNCj4+ICvCoMKgwqDCoCAqIGJvdGggdGhlIEdQVSBhbmQgdGhlIERDIGNhbiBtYWtl IHVzZSBvZiB0aGUgVlJBTSBkZXBlbmQgb24gaG93IA0KPj4gRFJNDQo+PiArwqDCoMKgwqAg KiBkcml2ZXIgaXMgd3JpdHRlbi4NCj4+ICvCoMKgwqDCoCAqLw0KPj4gK8KgwqDCoCBpZiAo ZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMTAwMCkNCj4+ICvCoMKgwqDCoMKgwqDCoCBncHUg PSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0xPT05HU09OLCAweDdBMTUsIE5VTEwp Ow0KPj4gK8KgwqDCoCBlbHNlIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0EyMDAwKQ0K Pj4gK8KgwqDCoMKgwqDCoMKgIGdwdSA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURf TE9PTkdTT04sIDB4N0EyNSwgTlVMTCk7DQo+PiArDQo+PiArwqDCoMKgIGlmICghZ3B1KSB7 DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3dhcm4oZGRldiwgIk5vIEdQVSBkZXZpY2UgZm91 bmRcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOw0KPj4gK8KgwqDC oCB9DQo+PiArDQo+PiArwqDCoMKgIGJhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZ3B1LCAy KTsNCj4+ICvCoMKgwqAgc2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4oZ3B1LCAyKTsNCj4+ICsN Cj4+ICvCoMKgwqAgbGRldi0+dnJhbV9iYXNlID0gYmFzZTsNCj4+ICvCoMKgwqAgbGRldi0+ dnJhbV9zaXplID0gc2l6ZTsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2luZm8oZGRldiwgImRl ZGljYXRlZCB2cmFtIHN0YXJ0OiAweCVsbHgsIHNpemU6ICV1TUJcbiIsDQo+PiArwqDCoMKg wqDCoMKgwqDCoCAodTY0KWJhc2UsICh1MzIpKHNpemUgPj4gMjApKTsNCj4+ICsNCj4+ICvC oMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbHNkY19vZl9n ZXRfcmVzZXJ2ZWRfcmFtKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldikNCj4+ICt7DQo+PiAr wqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+PiArwqDC oMKgIHVuc2lnbmVkIGxvbmcgc2l6ZSA9IDA7DQo+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2Vf bm9kZSAqbm9kZTsNCj4+ICvCoMKgwqAgc3RydWN0IHJlc291cmNlIHI7DQo+PiArwqDCoMKg IGludCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIG5vZGUgPSBvZl9wYXJzZV9waGFuZGxlKGRk ZXYtPmRldi0+b2Zfbm9kZSwgIm1lbW9yeS1yZWdpb24iLCAwKTsNCj4+ICvCoMKgwqAgaWYg KCFub2RlKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiTm8gbWVtb3J5 LXJlZ2lvbiBwcm9wZXJ0eSBvciBubyBEVCwgYWJvcnRcbiIpOw0KPj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PRU5UOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJl dCA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2Uobm9kZSwgMCwgJnIpOw0KPj4gK8KgwqDCoCBv Zl9ub2RlX3B1dChub2RlKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBzaXplID0gci5lbmQgLSByLnN0 YXJ0ICsgMTsNCj4+ICsNCj4+ICvCoMKgwqAgbGRldi0+dnJhbV9iYXNlID0gci5zdGFydDsN Cj4+ICvCoMKgwqAgbGRldi0+dnJhbV9zaXplID0gc2l6ZTsNCj4+ICsNCj4+ICvCoMKgwqAg ZHJtX2luZm8oZGRldiwgInVzaW5nIFZSQU0gY2FydmVvdXQ6ICVseEAlcGFcbiIsIHNpemUs ICZyLnN0YXJ0KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBzdHJ1Y3QgbHNkY19kZXZpY2UgKg0KPj4gK2xzZGNfY3JlYXRlX2Rldmlj ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25z dCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZGV2Ow0KPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcDsNCj4+ICvC oMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgbGRldiA9IGRldm1fZHJtX2Rldl9h bGxvYygmcGRldi0+ZGV2LCBkcnYsIHN0cnVjdCBsc2RjX2RldmljZSwgDQo+PiBiYXNlKTsN Cj4+ICvCoMKgwqAgaWYgKElTX0VSUihsZGV2KSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gbGRldjsNCj4+ICsNCj4+ICvCoMKgwqAgZGRldiA9ICZsZGV2LT5iYXNlOw0KPj4gKw0K Pj4gK8KgwqDCoCBwY2lfc2V0X2RydmRhdGEocGRldiwgZGRldik7DQo+PiArDQo+PiArwqDC oMKgIGRlc2NwID0gbHNkY19kZXRlY3RfY2hpcChwZGV2LCBlbnQpOw0KPj4gK8KgwqDCoCBp ZiAoSVNfRVJSX09SX05VTEwoZGVzY3ApKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Vy cihkZGV2LCAiTm90IGtub3duIGRldmljZSwgdGhlIGRyaXZlciBuZWVkIHVwZGF0ZSFcbiIp Ow0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOw0KPj4gK8KgwqDCoCB9DQo+PiAr DQo+PiArwqDCoMKgIGRybV9pbmZvKGRkZXYsICIlcyBmb3VuZCwgcmV2aXNpb246ICV1Iiwg DQo+PiBjaGlwX3RvX3N0cihkZXNjcC0+Y2hpcCksIHBkZXYtPnJldmlzaW9uKTsNCj4+ICsN Cj4+ICvCoMKgwqAgbGRldi0+ZGVzY3AgPSBkZXNjcDsNCj4+ICsNCj4+ICvCoMKgwqAgc3Bp bl9sb2NrX2luaXQoJmxkZXYtPnJlZ2xvY2spOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBCQVIg MCBvZiB0aGUgREMgZGV2aWNlIGNvbnRhaW5zIHJlZ2lzdGVycyAqLw0KPj4gK8KgwqDCoCBs ZGV2LT5yZWdfYmFzZSA9IHBjaW1faW9tYXAocGRldiwgMCwgMCk7DQo+PiArwqDCoMKgIGlm ICghbGRldi0+cmVnX2Jhc2UpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIo LUVOT0RFVik7DQo+PiArDQo+PiArwqDCoMKgIGlmIChkZXNjcC0+aGFzX3ZyYW0pDQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0ID0gbHNkY19nZXRfZGVkaWNhdGVkX3ZyYW0obGRldiwgZGVz Y3ApOw0KPj4gK8KgwqDCoCBlbHNlDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gbHNkY19v Zl9nZXRfcmVzZXJ2ZWRfcmFtKGxkZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAocmV0KSB7 DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiSW5pdCBWUkFNIGZhaWxlZDog JWRcbiIsIHJldCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsN Cj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1fYXBlcnR1cmVfcmVt b3ZlX2NvbmZsaWN0aW5nX2ZyYW1lYnVmZmVycyhsZGV2LT52cmFtX2Jhc2UsDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGxkZXYtPnZyYW1fc2l6ZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRy dik7DQo+PiArwqDCoMKgIGlmIChyZXQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJy KGRkZXYsICJyZW1vdmUgZmlybXdhcmUgZnJhbWVidWZmZXJzIGZhaWxlZDogJWRcbiIsIHJl dCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4+ICvCoMKg wqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBsc2RjX3R0bV9pbml0KGxkZXYpOw0KPj4g K8KgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAi bWVtb3J5IG1hbmFnZXIgaW5pdCBmYWlsZWQ6ICVkXG4iLCByZXQpOw0KPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvC oMKgwqAgcmV0ID0gbHNkY19tb2RlX2NvbmZpZ19pbml0KGRkZXYsIGRlc2NwKTsNCj4+ICvC oMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUihyZXQp Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBsc2RjX21vZGVzZXRfaW5pdChsZGV2LCBkZXNj cCk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVS Ul9QVFIocmV0KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0ID0gZHJtX3ZibGFua19pbml0KGRk ZXYsIGRlc2NwLT5udW1fb2ZfY3J0Yyk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0 ID0gcmVxdWVzdF90aHJlYWRlZF9pcnEocGRldi0+aXJxLA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX2dldF9pcnFfaGFuZGxlcihsZGV2KSwNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbHNkY19pcnFfdGhyZWFk X2hhbmRsZXIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElS UUZfT05FU0hPVCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGV2X25hbWUoZGRldi0+ZGV2KSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGRldik7DQo+PiArwqDCoMKgIGlmIChyZXQpIHsNCj4+ICvCoMKgwqDCoMKg wqDCoCBkcm1fZXJyKGRkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbHNkYyBpbnRlcnJ1cHRc biIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBFUlJfUFRSKHJldCk7DQo+PiArwqDC oMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRkZXYp Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gbGRldjsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGludCBsc2RjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50 KQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXY7DQo+PiArwqDC oMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldjsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ ICsNCj4+ICvCoMKgwqAgcmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpOw0KPj4gK8Kg wqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+ PiArwqDCoMKgIHBjaV9zZXRfbWFzdGVyKHBkZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXQg PSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCZwZGV2LT5kZXYsIERNQV9CSVRfTUFTSyg0 MCkpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7DQo+PiArDQo+PiArwqDCoMKgIGxkZXYgPSBsc2RjX2NyZWF0ZV9kZXZpY2UocGRldiwg ZW50LCAmbHNkY19kcm1fZHJpdmVyKTsNCj4+ICvCoMKgwqAgaWYgKElTX0VSUihsZGV2KSkN Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihsZGV2KTsNCj4+ICsNCj4+ICvC oMKgwqAgZGRldiA9ICZsZGV2LT5iYXNlOw0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1f ZGV2X3JlZ2lzdGVyKGRkZXYsIDApOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgIGRybV9mYmRldl9nZW5l cmljX3NldHVwKGRkZXYsIDMyKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2Rl diAqcGRldikNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g cGNpX2dldF9kcnZkYXRhKHBkZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fZGV2X3VucmVn aXN0ZXIoZGRldik7DQo+PiArwqDCoMKgIGRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKGRk ZXYpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfZHJtX2ZyZWV6ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGRldikNCj4+ICt7DQo+PiArwqDCoMKgIGludCBlcnJvcjsNCj4+ ICsNCj4+ICvCoMKgwqAgZXJyb3IgPSBkcm1fbW9kZV9jb25maWdfaGVscGVyX3N1c3BlbmQo ZGRldik7DQo+PiArwqDCoMKgIGlmIChlcnJvcikNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gZXJyb3I7DQo+PiArDQo+PiArwqDCoMKgIHBjaV9zYXZlX3N0YXRlKHRvX3BjaV9kZXYo ZGRldi0+ZGV2KSk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGxzZGNfZHJtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2 KTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwY2lfZ2V0X2RydmRh dGEocGRldik7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBkcm1fbW9kZV9jb25maWdfaGVs cGVyX3Jlc3VtZShkZGV2KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsc2RjX3Bt X2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3Qg cGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsNCj4+ICvCoMKgwqAgc3RydWN0IGRy bV9kZXZpY2UgKmRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7DQo+PiArDQo+PiArwqDC oMKgIHJldHVybiBsc2RjX2RybV9mcmVlemUoZGRldik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0 YXRpYyBpbnQgbHNkY19wbV90aGF3KHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7DQo+PiAr wqDCoMKgIHJldHVybiBsc2RjX2RybV9yZXN1bWUoZGV2KTsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBsc2RjX3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sN Cj4+ICvCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGRldik7DQo+ PiArwqDCoMKgIGludCBlcnJvcjsNCj4+ICsNCj4+ICvCoMKgwqAgZXJyb3IgPSBsc2RjX3Bt X2ZyZWV6ZShkZXYpOw0KPj4gK8KgwqDCoCBpZiAoZXJyb3IpDQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGVycm9yOw0KPj4gKw0KPj4gK8KgwqDCoCBwY2lfc2F2ZV9zdGF0ZShwZGV2 KTsNCj4+ICvCoMKgwqAgLyogU2h1dCBkb3duIHRoZSBkZXZpY2UgKi8NCj4+ICvCoMKgwqAg cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOw0KPj4gK8KgwqDCoCBwY2lfc2V0X3Bvd2VyX3N0 YXRlKHBkZXYsIFBDSV9EM2hvdCk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4g K30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2Ug KmRldikNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNp X2RldihkZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAocGNpbV9lbmFibGVfZGV2aWNlKHBk ZXYpKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlPOw0KPj4gKw0KPj4gK8KgwqDC oCBwY2lfc2V0X3Bvd2VyX3N0YXRlKHBkZXYsIFBDSV9EMCk7DQo+PiArDQo+PiArwqDCoMKg IHBjaV9yZXN0b3JlX3N0YXRlKHBkZXYpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gbHNk Y19wbV90aGF3KGRldik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGV2X3BtX29wcyBsc2RjX3BtX29wcyA9IHsNCj4+ICvCoMKgwqAgLnN1c3BlbmQgPSBsc2Rj X3BtX3N1c3BlbmQsDQo+PiArwqDCoMKgIC5yZXN1bWUgPSBsc2RjX3BtX3Jlc3VtZSwNCj4+ ICvCoMKgwqAgLmZyZWV6ZSA9IGxzZGNfcG1fZnJlZXplLA0KPj4gK8KgwqDCoCAudGhhdyA9 IGxzZGNfcG1fdGhhdywNCj4+ICvCoMKgwqAgLnBvd2Vyb2ZmID0gbHNkY19wbV9mcmVlemUs DQo+PiArwqDCoMKgIC5yZXN0b3JlID0gbHNkY19wbV9yZXN1bWUsDQo+PiArfTsNCj4+ICsN Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbHNkY19wY2lpZF9saXN0 W10gPSB7DQo+PiArwqDCoMKgIHtQQ0lfVkVORE9SX0lEX0xPT05HU09OLCAweDdhMDYsIFBD SV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIA0KPj4gQ0hJUF9MUzdBMTAwMH0sDQo+PiAr wqDCoMKgIHtQQ0lfVkVORE9SX0lEX0xPT05HU09OLCAweDdhMzYsIFBDSV9BTllfSUQsIFBD SV9BTllfSUQsIDAsIDAsIA0KPj4gQ0hJUF9MUzdBMjAwMH0sDQo+PiArwqDCoMKgIHswLCAw LCAwLCAwLCAwLCAwLCAwfQ0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBwY2lf ZHJpdmVyIGxzZGNfcGNpX2RyaXZlciA9IHsNCj4+ICvCoMKgwqAgLm5hbWUgPSBEUklWRVJf TkFNRSwNCj4+ICvCoMKgwqAgLmlkX3RhYmxlID0gbHNkY19wY2lpZF9saXN0LA0KPj4gK8Kg wqDCoCAucHJvYmUgPSBsc2RjX3BjaV9wcm9iZSwNCj4+ICvCoMKgwqAgLnJlbW92ZSA9IGxz ZGNfcGNpX3JlbW92ZSwNCj4+ICvCoMKgwqAgLmRyaXZlci5wbSA9ICZsc2RjX3BtX29wcywN Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgX19pbml0IGxzZGNfbW9kdWxlX2luaXQo dm9pZCkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsN Cj4+ICsNCj4+ICvCoMKgwqAgaWYgKGRybV9maXJtd2FyZV9kcml2ZXJzX29ubHkoKSkNCj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICvCoMKgwqAgLyoN Cj4+ICvCoMKgwqDCoCAqIEVyciwgaXQgc2VlbXMgd2lyZWQgdG8gd3JpdGUgY29kZSBsaWtl IGJlbG93LCBidXQgb3VyIGludGVudGlvbg0KPj4gK8KgwqDCoMKgICogaXMgZG9uJ3QgY3Jh c2ggdGhlIGVudGlyZSBzeXN0ZW0gYmVmb3JlIHdlIGhhdmUgYSBwcm9wZXIgDQo+PiBzb2x1 dGlvbi4NCj4+ICvCoMKgwqDCoCAqIEZvciBsczJrMTAwMCB0aGVyZSBzdGlsbCBoYXZlIGEg Y2hhbmNlIHRvIHdyaXRlIGFub3RoZXIgRE1BIA0KPj4gaGVscGVyDQo+PiArwqDCoMKgwqAg KiBiYXNlZCBkcml2ZXIgdG8gdXNlIGlmIHRoaXMgZHJpdmVyIGdpdmUgdXAgdGhlIHN1cHBv cnQgZm9yIGl0Lg0KPj4gK8KgwqDCoMKgICogV2hpbGUgRm9yIGxzMmsyMDAwLCB0aGUgREMg aXAgaW4gaXQganVzdCBiYXNpY2x5IHNhbWUgd2l0aCB0aGUgDQo+PiBvbmUNCj4+ICvCoMKg wqDCoCAqIGluIGxzN2EyMDAwLCBhbmQgd3JpdGUgb25lIGRyaXZlciBydWxlcyB0aGVtIGFs bCBpcyBkZXNpcmVkLg0KPj4gK8KgwqDCoMKgICovDQo+PiArwqDCoMKgIGlmIChsc2RjX2lz X2xzMmsxMDAwKCkgfHwgbHNkY19pc19sczJrMjAwMCgpKQ0KPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAtRU5PREVWOw0KPj4gKw0KPj4gK8KgwqDCoCB3aGlsZSAoKHBkZXYgPSBwY2lf Z2V0X2NsYXNzKFBDSV9DTEFTU19ESVNQTEFZX1ZHQSA8PCA4LCBwZGV2KSkpIHsNCj4+ICvC oMKgwqDCoMKgwqDCoCAvKiBNdWx0aXBsZSB2aWRlbyBjYXJkIHdvcmthcm91bmQgKi8NCj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAocGRldi0+dmVuZG9yICE9IFBDSV9WRU5ET1JfSURfTE9P TkdTT04pIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2luZm8oIkRpc2NyZXRl IGdyYXBoaWMgY2FyZCBkZXRlY3RlZCwgYWJvcnRcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoCB9 DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZsc2RjX3Bj aV9kcml2ZXIpOw0KPj4gK30NCj4+ICttb2R1bGVfaW5pdChsc2RjX21vZHVsZV9pbml0KTsN Cj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgbHNkY19tb2R1bGVfZXhpdCh2b2lkKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZsc2RjX3BjaV9kcml2 ZXIpOw0KPj4gK30NCj4+ICttb2R1bGVfZXhpdChsc2RjX21vZHVsZV9leGl0KTsNCj4+ICsN Cj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbHNkY19wY2lpZF9saXN0KTsNCj4+ICtN T0RVTEVfQVVUSE9SKERSSVZFUl9BVVRIT1IpOw0KPj4gK01PRFVMRV9ERVNDUklQVElPTihE UklWRVJfREVTQyk7DQo+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfZHJ2LmggDQo+PiBiL2RyaXZlcnMvZ3B1 L2RybS9sc2RjL2xzZGNfZHJ2LmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLmY0YjQ4NGJmODRiMQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19kcnYuaA0KPj4gQEAgLTAsMCArMSwzMDgg QEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4gKy8q DQo+PiArICogS01TIGRyaXZlciBmb3IgTG9vbmdzb24gZGlzcGxheSBjb250cm9sbGVyDQo+ PiArICogQ29weXJpZ2h0IChDKSAyMDIyIExvb25nc29uIENvcnBvcmF0aW9uDQo+PiArICoN Cj4+ICsgKiBBdXRob3JzOg0KPj4gKyAqwqDCoMKgwqDCoCBMaSBZaSA8bGl5aUBsb29uZ3Nv bi5jbj4NCj4+ICsgKsKgwqDCoMKgwqAgU3VpIEppbmdmZW5nIDxzdWlqaW5nZmVuZ0Bsb29u Z3Nvbi5jbj4NCj4+ICsgKi8NCj4+ICsNCj4+ICsjaWZuZGVmIF9fTFNEQ19EUlZfSF9fDQo+ PiArI2RlZmluZSBfX0xTRENfRFJWX0hfXw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9p MmMuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+DQo+PiArDQo+PiAr I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fY29u bmVjdG9yLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPg0KPj4gKyNpbmNsdWRl IDxkcm0vZHJtX2RldmljZS5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4N Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZS5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vdHRt L3R0bV9kZXZpY2UuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNkY19wbGwuaCINCj4+ICsj aW5jbHVkZSAibHNkY19yZWdzLmgiDQo+PiArDQo+PiArI2RlZmluZSBMU0RDX05VTV9DUlRD wqDCoMKgwqDCoMKgwqDCoMKgwqAgMg0KPj4gKw0KPj4gKy8qDQo+PiArICogVGhlIGRpc3Bs YXkgY29udHJvbGxlciBpbiBMUzdBMjAwMCBpbnRlZ3JhdGUgdGhyZWUgbG9vbmdzb24gc2Vs Zi1tYWRlDQo+PiArICogZW5jb2Rlci4gRGlzcGxheSBwaXBlIDAgaGFzIGEgdHJhbnNwYXJl bnQgVkdBIGVuY29kZXIgYW5kIGEgSERNSSBwaHksDQo+PiArICogdGhleSBhcmUgcGFyYWxs ZWwuIEJ1dCB0aGUgVkdBIGNhbiBub3QgY29udHJvbGxlZCBieSBzb2Z0d2FyZS4gWW91IA0K Pj4gY2FuDQo+PiArICogZGlzYWJsZSB0aGUgQ1JUQzAgYnV0IG5vdCB0aGUgVkdBLiBEaXNw bGF5IHBpcGUgMSBoYXMgb25seSBvbmUgDQo+PiBIRE1JIHBoeS4NCj4+ICsgKsKgwqDCoMKg wqDCoCBfX19fX19fX19fX19fX19fX19fX19fwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19fX19fX19fX19fXw0KPj4gKyAqwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLSvCoCB8wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAgfCBDUlRDMCAtKy0tPiB8IFZHQSB8wqAgLS0tLT4g VkdBIENvbm5lY3RvciAtLS0+IHwgVkdBIE1vbml0b3IgDQo+PiB8PC0tLSsNCj4+ICsgKsKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgKy0tLS0tK8KgIHwgICAgICAgICAg ICAgICAgICAgICAgICANCj4+IHxfX19fX19fX19fX19ffMKgwqDCoCB8DQo+PiArICrCoMKg wqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgDQo+PiBfX19fX19fX19fX19fX8KgwqDCoCB8DQo+PiAr ICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8wqDCoMKgICstLS0tLS0rIHwgICAgICAg ICAgICAgICAgICAgICAgICANCj4+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oCB8DQo+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCArLS0+IHwgSERNSSB8IC0t LS0+IEhETUkgQ29ubmVjdG9yIC0tPiB8IEhETUkgDQo+PiBNb25pdG9yIHw8LS0rDQo+PiAr ICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLSsgfCAgICAg ICAgICAgICAgICAgICAgICAgIA0KPj4gfF9fX19fX19fX19fX19ffMKgwqAgfA0KPj4gKyAq wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tKyAgDQo+PiB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCBpMmM2IHwgIA0KPj4gPC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICstLS0tLS0rwqAgfA0KPj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAg fMKgwqDCoCBEQyBpbiBMUzdBMjAwMMKgwqDCoCB8DQo+PiArICrCoMKgwqDCoMKgIHzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4gKyAqwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tK8KgIHwNCj4+ICsgKsKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBpMmM3IHzCoCA8LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICstLS0tLS0rwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19fX19ffF9fX19fX18N Cj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLSvCoCB8 ICAgICAgICAgICAgICAgICAgICAgICAgIA0KPj4gfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAgfCBDUlRDMSAtLS0+IHwgSERNSSB8wqAgLS0tLT4g SERNSSBDb25uZWN0b3IgLS0tPiB8IEhETUkgDQo+PiBNb25pdG9yIHwNCj4+ICsgKsKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLSvCoCB8ICAgICAgICAgICAg ICAgICAgICAgICAgIA0KPj4gfF9fX19fX19fX19fX19ffA0KPj4gKyAqwqDCoMKgwqDCoCB8 X19fX19fX19fX19fX19fX19fX19fX3wNCj4+ICsgKg0KPj4gKyAqDQo+PiArICogVGhlIGRp c3BsYXkgY29udHJvbGxlciBpbiBMUzdBMTAwMCBpbnRlZ3JhdGUgdHdvLXdheSBEVk8sIGV4 dGVybmFsDQo+PiArICogZW5jb2Rlcih0eCBjaGlwKSBpcyByZXF1aXJlZCBleGNlcHQgY29u bmVjdGVkIHdpdGggZHBpKHJnYjg4OCkgcGFuZWwNCj4+ICsgKiBkaXJlY3RseS4NCj4+ICsg KsKgwqDCoMKgwqDCoCBfX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIA0KPj4gX19fX19fX19fDQo+PiArICrCoMKgwqDCoMKgIHzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICANCj4+IHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ICsgKsKgwqDCoMKgwqAgfMKg IENSVEMwIC0tPiB8IERWTzAgLS0tLT4gRW5jb2RlcjAgLS0tPiBDb25uZWN0b3IwIC0tLT4g fCANCj4+IERpc3BsYXkgfA0KPj4gKyAqwqDCoMKgwqDCoCB8wqAgX8KgwqAgX8KgwqDCoMKg IC0tLS0tLS18wqDCoMKgwqDCoMKgwqAgXsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeICAg ICAgICAgICAgDQo+PiB8X19fX19fX19ffA0KPj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzC oCArLS0tLS0tKyB8wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 DQo+PiArICrCoMKgwqDCoMKgIHwgfF98IHxffMKgIHwgaTJjNiB8IDwtLS0tLS0tLSstLS0t LS0tLS0tLS0tKw0KPj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LS0rIHwNCj4+ICsgKsKgwqDCoMKgwqAgfMKgIERDIGluIExTN0ExMDAwwqDCoCB8DQo+PiAr ICrCoMKgwqDCoMKgIHzCoCBfwqDCoCBfwqDCoCArLS0tLS0tKyB8DQo+PiArICrCoMKgwqDC oMKgIHwgfCB8IHwgfMKgIHwgaTJjNyB8IDwtLS0tLS0tLSstLS0tLS0tLS0tLS0tKw0KPj4g KyAqwqDCoMKgwqDCoCB8IHxffCB8X3zCoCArLS0tLS0tKyB8wqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8ICAgICAgICAgICAgIA0KPj4gX19fX19fX19fDQo+ PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18wqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8ICAgICAgICAgICAgDQo+PiB8 wqDCoMKgwqDCoMKgwqDCoCB8DQo+PiArICrCoMKgwqDCoMKgIHzCoCBDUlRDMSAtLT4gfCBE Vk8xIC0tLS0+IEVuY29kZXIxIC0tLT4gQ29ubmVjdG9yMSAtLS0+IHwgIA0KPj4gUGFuZWzC oCB8DQo+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4+IHxfX19fX19fX198DQo+ PiArICrCoMKgwqDCoMKgIHxfX19fX19fX19fX19fX19fX19ffA0KPj4gKyAqDQo+PiArICog TFM3QTEwMDAgYW5kIExTN0EyMDAwIGFyZSBicmlkZ2UgY2hpcHMsIGhhcyBkZWRpY2F0ZWQg VmlkZW8gUkFNLg0KPj4gKyAqIHdoaWxlIExTMksyMDAwL0xTMksxMDAwIGFyZSBTb0MsIHRo ZXkgZG9uJ3QgaGF2ZSBkZWRpYWNhdGVkIFZpZGVvIA0KPj4gUkFNLg0KPj4gKyAqDQo+PiAr ICogVGhlIERDIGluIExTN0ExMDAwL0xTMksxMDAwIGhhcyB0aGUgcGNpIHZlbmRvci9kZXZp Y2UgSUQ6IA0KPj4gMHgwMDE0OjB4N2EwNg0KPj4gKyAqIFRoZSBEQyBpbiBMUzdBMjAwMC9M UzJLMjAwMCBoYXMgdGhlIHBjaSB2ZW5kb3IvZGV2aWNlIElEOiANCj4+IDB4MDAxNDoweDdh MzYNCj4+ICsgKg0KPj4gKyAqIFRoZXJlIGlzIG9ubHkgYSAxOjEgbWFwcGluZyBvZiBjcnRj cywgZW5jb2RlcnMgYW5kIGNvbm5lY3RvcnMgZm9yIA0KPj4gdGhlIERDLA0KPj4gKyAqIGRp c3BsYXkgcGlwZSAwID0gY3J0YzAgKyBkdm8wICsgZW5jb2RlcjAgKyBjb25uZWN0b3IwICsg Y3Vyc29yMCArIA0KPj4gcHJpbWFyeTANCj4+ICsgKiBkaXNwbGF5IHBpcGUgMSA9IGNydGMx ICsgZHZvMSArIGVuY29kZXIxICsgY29ubmVjdHJvMSArIGN1cnNvcjEgKyANCj4+IHByaW1h cnkxDQo+PiArICogRWFjaCBDUlRDIGhhdmUgdHdvIEZCIGFkZHJlc3MgcmVnaXN0ZXJzLg0K Pj4gKyAqLw0KPj4gKw0KPj4gK2VudW0gbG9vbmdzb25fY2hpcF9mYW1pbHkgew0KPj4gK8Kg wqDCoCBDSElQX0xTN0ExMDAwID0gMCzCoCAvKiBOb3J0aCBicmlkZ2Ugb2YgTFMzQTMwMDAv TFMzQTQwMDAvTFMzQTUwMDAgKi8NCj4+ICvCoMKgwqAgQ0hJUF9MUzdBMjAwMCA9IDEswqAg LyogVXBkYXRlIHZlcnNpb24gb2YgTFM3QTEwMDAsIHdpdGggYnVpbHQtaW4gDQo+PiBIRE1J IGVuY29kZXIgKi8NCj4+ICvCoMKgwqAgQ0hJUF9MQVNULA0KPj4gK307DQo+PiArDQo+PiAr c3RydWN0IGxzZGNfZGVzYyB7DQo+PiArwqDCoMKgIGVudW0gbG9vbmdzb25fY2hpcF9mYW1p bHkgY2hpcDsNCj4+ICvCoMKgwqAgdTMyIG51bV9vZl9jcnRjOw0KPj4gK8KgwqDCoCB1MzIg bWF4X3BpeGVsX2NsazsNCj4+ICvCoMKgwqAgdTMyIG1heF93aWR0aDsNCj4+ICvCoMKgwqAg dTMyIG1heF9oZWlnaHQ7DQo+PiArwqDCoMKgIHUzMiBudW1fb2ZfaHdfY3Vyc29yOw0KPj4g K8KgwqDCoCB1MzIgaHdfY3Vyc29yX3c7DQo+PiArwqDCoMKgIHUzMiBod19jdXJzb3JfaDsN Cj4+ICvCoMKgwqAgdTMyIHBpdGNoX2FsaWduO8KgIC8qIERNQSBhbGlnbm1lbnQgY29uc3Ry YWludCAqLw0KPj4gK8KgwqDCoCB1NjQgbWNfYml0czvCoMKgwqDCoMKgIC8qIHBoeXNpY2Fs IGFkZHJlc3MgYnVzIGJpdCB3aWR0aCAqLw0KPj4gK8KgwqDCoCBib29sIGhhc192Ymxhbmtf Y291bnRlcjsgLyogMzIgYml0IGh3IHZzeW5jIGNvdW50ZXIgKi8NCj4+ICvCoMKgwqAgYm9v bCBoYXNfc2Nhbl9wb3M7wqDCoMKgwqDCoCAvKiBjcnRjIHNjYW4gcG9zaXRpb24gcmVjb3Jk ZXIgKi8NCj4+ICvCoMKgwqAgYm9vbCBoYXNfYnVpbHRpbl9pMmM7DQo+PiArwqDCoMKgIGJv b2wgaGFzX3ZyYW07DQo+PiArwqDCoMKgIGJvb2wgaGFzX2hwZF9yZWc7DQo+PiArwqDCoMKg IGJvb2wgaXNfc29jOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IGxzZGNfaTJjIHsNCj4+ ICvCoMKgwqAgc3RydWN0IGkyY19hZGFwdGVyIGFkYXB0ZXI7DQo+PiArwqDCoMKgIHN0cnVj dCBpMmNfYWxnb19iaXRfZGF0YSBiaXQ7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZGV2Ow0KPj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKnJlZ19iYXNlOw0KPj4gK8KgwqDC oCB2b2lkIF9faW9tZW0gKmRpcl9yZWc7DQo+PiArwqDCoMKgIHZvaWQgX19pb21lbSAqZGF0 X3JlZzsNCj4+ICvCoMKgwqAgLyogcGluIGJpdCBtYXNrICovDQo+PiArwqDCoMKgIHU4IHNk YTsNCj4+ICvCoMKgwqAgdTggc2NsOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IGxzZGNf ZGlzcGxheV9waXBlIHsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjIGNydGM7DQo+PiAr wqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgcHJpbWFyeTsNCj4+ICvCoMKgwqAgc3RydWN0IGRy bV9wbGFuZSBjdXJzb3I7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVy Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+PiArwqDC oMKgIHN0cnVjdCBsc2RjX3BsbCBwaXhwbGw7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2ky YyAqbGkyYzsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4Ow0KPj4gK307DQo+PiAr DQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKg0KPj4gK2Ny dGNfdG9fZGlzcGxheV9waXBlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4+ICt7DQo+PiAr wqDCoMKgIHJldHVybiBjb250YWluZXJfb2YoY3J0Yywgc3RydWN0IGxzZGNfZGlzcGxheV9w aXBlLCBjcnRjKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbHNk Y19kaXNwbGF5X3BpcGUgKg0KPj4gK2N1cnNvcl90b19kaXNwbGF5X3BpcGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUpDQo+PiArew0KPj4gK8KgwqDCoCByZXR1cm4gY29udGFpbmVyX29m KHBsYW5lLCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUsIGN1cnNvcik7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICoNCj4+ICtj b25uZWN0b3JfdG9fZGlzcGxheV9waXBlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uLCBzdHJ1Y3QgbHNk Y19kaXNwbGF5X3BpcGUsIGNvbm5lY3Rvcik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICoNCj4+ICtlbmNvZGVyX3RvX2Rpc3Bs YXlfcGlwZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYykNCj4+ICt7DQo+PiArwqDCoMKgIHJl dHVybiBjb250YWluZXJfb2YoZW5jLCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUsIGVuY29k ZXIpOw0KPj4gK30NCj4+ICsNCj4+ICtzdHJ1Y3QgbHNkY19jcnRjX3N0YXRlIHsNCj4+ICvC oMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlIGJhc2U7DQo+PiArwqDCoMKgIHN0cnVjdCBs c2RjX3BsbF9wYXJtcyBwcGFybXM7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgbHNkY19k ZXZpY2Ugew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSBiYXNlOw0KPj4gK8KgwqDC oCBzdHJ1Y3QgdHRtX2RldmljZSBiZGV2Ow0KPj4gK8KgwqDCoCAvKiBAZGVzY3A6IGZlYXR1 cmVzIGRlc2NyaXB0aW9uIG9mIHRoZSBEQyB2YXJpYW50ICovDQo+PiArwqDCoMKgIGNvbnN0 IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBAcmVnbG9j azogcHJvdGVjdHMgY29uY3VycmVudCByZWdpc3RlciBhY2Nlc3MgKi8NCj4+ICvCoMKgwqAg c3BpbmxvY2tfdCByZWdsb2NrOw0KPj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKnJlZ19iYXNl Ow0KPj4gK8KgwqDCoCByZXNvdXJjZV9zaXplX3QgdnJhbV9iYXNlOw0KPj4gK8KgwqDCoCBy ZXNvdXJjZV9zaXplX3QgdnJhbV9zaXplOw0KPj4gKw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNk Y19kaXNwbGF5X3BpcGUgZGlzcGlwZVtMU0RDX05VTV9DUlRDXTsNCj4+ICsNCj4+ICvCoMKg wqAgLyogQG51bV9vdXRwdXQ6IGNvdW50IHRoZSBudW1iZXIgb2YgYWN0aXZlIGRpc3BsYXkg cGlwZSAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgbnVtX291dHB1dDsNCj4+ICsNCj4+ ICvCoMKgwqAgdTMyIGlycV9zdGF0dXM7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBsc2RjX2RldmljZSAqDQo+PiArYmRldl90b19sc2RjKHN0cnVjdCB0dG1f ZGV2aWNlICpiZGV2KQ0KPj4gK3sNCj4+ICvCoMKgwqAgcmV0dXJuIGNvbnRhaW5lcl9vZihi ZGV2LCBzdHJ1Y3QgbHNkY19kZXZpY2UsIGJkZXYpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0 aWMgaW5saW5lIHN0cnVjdCBsc2RjX2RldmljZSAqDQo+PiArdG9fbHNkYyhzdHJ1Y3QgZHJt X2RldmljZSAqZGRldikNCj4+ICt7DQo+PiArwqDCoMKgIHJldHVybiBjb250YWluZXJfb2Yo ZGRldiwgc3RydWN0IGxzZGNfZGV2aWNlLCBiYXNlKTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgbHNkY19jcnRjX3N0YXRlICoNCj4+ICt0b19sc2RjX2NydGNf c3RhdGUoc3RydWN0IGRybV9jcnRjX3N0YXRlICpiYXNlKQ0KPj4gK3sNCj4+ICvCoMKgwqAg cmV0dXJuIGNvbnRhaW5lcl9vZihiYXNlLCBzdHJ1Y3QgbHNkY19jcnRjX3N0YXRlLCBiYXNl KTsNCj4+ICt9DQo+PiArDQo+PiArY29uc3QgY2hhciAqY2hpcF90b19zdHIoZW51bSBsb29u Z3Nvbl9jaGlwX2ZhbWlseSBjaGlwKTsNCj4+ICsNCj4+ICt2b2lkIGxzZGNfZGVidWdmc19p bml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsNCj4+ICsNCj4+ICtpbnQgbHNkY19jcnRj X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGRybV9wbGFuZSAqY3Vyc29yLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGludCBpbmRleCk7DQo+PiArDQo+PiAraW50IGxzZGNfcHJpbWFyeV9wbGFuZV9pbml0 KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCk7DQo+PiArDQo+PiAraW50IGxz ZGNfY3Vyc29yX3BsYW5lX2luaXQoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpOw0K Pj4gKw0KPj4gK2lycXJldHVybl90IGxzZGNfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEs IHZvaWQgKmFyZyk7DQo+PiAraXJxX2hhbmRsZXJfdCBsc2RjX2dldF9pcnFfaGFuZGxlcihz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYpOw0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdTMy IGxzZGNfcnJlZzMyKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwgdTMyIG9mZnNldCkNCj4+ ICt7DQo+PiArwqDCoMKgIHJldHVybiByZWFkbChsZGV2LT5yZWdfYmFzZSArIG9mZnNldCk7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBsc2RjX3dyZWczMihzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYsIHUzMiBvZmZzZXQsIA0KPj4gdTMyIHZhbCkNCj4+ICt7 DQo+PiArwqDCoMKgIHdyaXRlbCh2YWwsIGxkZXYtPnJlZ19iYXNlICsgb2Zmc2V0KTsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSB2b2lkIGxzZGNfdXJlZzMyX3NldChzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBvZmZzZXQsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBiaXQpDQo+PiArew0KPj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKmFk ZHIgPSBsZGV2LT5yZWdfYmFzZSArIG9mZnNldDsNCj4+ICvCoMKgwqAgdTMyIHZhbCA9IHJl YWRsKGFkZHIpOw0KPj4gKw0KPj4gK8KgwqDCoCB3cml0ZWwodmFsIHwgYml0LCBhZGRyKTsN Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSB2b2lkIGxzZGNfdXJlZzMyX2Nscihz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiBvZmZzZXQsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiBiaXQpDQo+PiArew0KPj4gK8KgwqDCoCB2b2lkIF9faW9tZW0g KmFkZHIgPSBsZGV2LT5yZWdfYmFzZSArIG9mZnNldDsNCj4+ICvCoMKgwqAgdTMyIHZhbCA9 IHJlYWRsKGFkZHIpOw0KPj4gKw0KPj4gK8KgwqDCoCB3cml0ZWwodmFsICYgfmJpdCwgYWRk cik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdTMyIGxzZGNfcGlwZV9ycmVn MzIoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgb2Zmc2V0LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1MzIgcGlwZSkNCj4+ICt7DQo+PiArwqDCoMKgIHJldHVybiBy ZWFkbChsZGV2LT5yZWdfYmFzZSArIG9mZnNldCArIHBpcGUgKiBDUlRDX1BJUEVfT0ZGU0VU KTsNCj4+ICt9DQo+PiArDQo+PiArI2RlZmluZSBsc2RjX2hkbWlfcnJlZzMyIGxzZGNfcGlw ZV9ycmVnMzINCj4+ICsjZGVmaW5lIGxzZGNfY3J0Y19ycmVnMzIgbHNkY19waXBlX3JyZWcz Mg0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBsc2RjX3BpcGVfd3JlZzMyKHN0cnVj dCBsc2RjX2RldmljZSAqbGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgb2Zmc2V0LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiBwaXBlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHUzMiB2YWwpDQo+PiArew0KPj4gK8KgwqDCoCB3cml0ZWwodmFsLCBs ZGV2LT5yZWdfYmFzZSArIG9mZnNldCArIHBpcGUgKiBDUlRDX1BJUEVfT0ZGU0VUKTsNCj4+ ICt9DQo+PiArDQo+PiArI2RlZmluZSBsc2RjX2hkbWlfd3JlZzMyIGxzZGNfcGlwZV93cmVn MzINCj4+ICsjZGVmaW5lIGxzZGNfY3J0Y193cmVnMzIgbHNkY19waXBlX3dyZWczMg0KPj4g Kw0KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBsc2RjX2NydGNfdXJlZzMyX3NldChzdHJ1Y3Qg bHNkY19kZXZpY2UgKmxkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdTMyIG9mZnNldCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgcGlwZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1MzIgYml0KQ0KPj4gK3sNCj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICph ZGRyOw0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCBhZGRyID0gbGRl di0+cmVnX2Jhc2UgKyBvZmZzZXQgKyBwaXBlICogQ1JUQ19QSVBFX09GRlNFVDsNCj4+ICvC oMKgwqAgdmFsID0gcmVhZGwoYWRkcik7DQo+PiArwqDCoMKgIHdyaXRlbCh2YWwgfCBiaXQs IGFkZHIpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgbHNkY19jcnRj X3VyZWczMl9jbHIoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBvZmZzZXQsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHBpcGUsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGJpdCkNCj4+ICt7DQo+PiArwqDC oMKgIHZvaWQgX19pb21lbSAqYWRkcjsNCj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+ICsNCj4+ ICvCoMKgwqAgYWRkciA9IGxkZXYtPnJlZ19iYXNlICsgb2Zmc2V0ICsgcGlwZSAqIENSVENf UElQRV9PRkZTRVQ7DQo+PiArwqDCoMKgIHZhbCA9IHJlYWRsKGFkZHIpOw0KPj4gK8KgwqDC oCB3cml0ZWwodmFsICYgfmJpdCwgYWRkcik7DQo+PiArfQ0KPj4gKw0KPj4gKy8qIGhlbHBl cnMgZm9yIGNoaXAgZGV0ZWN0aW9uICovDQo+PiArYm9vbCBsc2RjX2lzX2xzMmsyMDAwKHZv aWQpOw0KPj4gK2Jvb2wgbHNkY19pc19sczJrMTAwMCh2b2lkKTsNCj4+ICt1bnNpZ25lZCBp bnQgbG9vbmdzb25fY3B1X2dldF9wcmlkKHU4ICppbXBsLCB1OCAqcmV2KTsNCj4+ICsNCj4+ ICsjZW5kaWYNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2ky Yy5jIA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jDQo+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi43YzVlOTFjMzI0NmENCj4+ IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfaTJj LmMNCj4+IEBAIC0wLDAgKzEsMTcyIEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjANCj4+ICsNCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9tYW5hZ2VkLmg+DQo+ PiArDQo+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+PiArI2luY2x1ZGUgImxzZGNfb3V0 cHV0LmgiDQo+PiArDQo+PiArLyoNCj4+ICsgKiBsczdhX2dwaW9faTJjX3NldCAtIHNldCB0 aGUgc3RhdGUgb2YgYSBncGlvIHBpbiBpbmRpY2F0ZWQgYnkgbWFzaw0KPj4gKyAqIEBtYXNr OiBncGlvIHBpbiBtYXNrDQo+PiArICogQHN0YXRlOiAiMCIgZm9yIGxvdywgIjEiIGZvciBo aWdoDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgbHM3YV9ncGlvX2kyY19zZXQoc3RydWN0 IGxzZGNfaTJjICogY29uc3QgbGkyYywgaW50IG1hc2ssIA0KPj4gaW50IHN0YXRlKQ0KPj4g K3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhsaTJj LT5kZGV2KTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICvCoMKgwqAg dTggdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmbGRldi0+cmVn bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoc3RhdGUpIHsNCj4+ICvCoMKg wqDCoMKgwqDCoCAvKg0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBTZXR0aW5nIHRoaXMgcGlu IGFzIGlucHV0IGRpcmVjdGx5LCB3cml0ZSAxIGZvciBJbnB1dC4NCj4+ICvCoMKgwqDCoMKg wqDCoMKgICogVGhlIGV4dGVybmFsIHB1bGwtdXAgcmVzaXN0b3Igd2lsbCBwdWxsIHRoZSBs ZXZlbCB1cA0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCB2 YWwgPSByZWFkYihsaTJjLT5kaXJfcmVnKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgfD0g bWFzazsNCj4+ICvCoMKgwqDCoMKgwqDCoCB3cml0ZWIodmFsLCBsaTJjLT5kaXJfcmVnKTsN Cj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBGaXJzdCBzZXQg dGhpcyBwaW4gYXMgb3V0cHV0LCB3cml0ZSAwIGZvciBPdXRwdXQgKi8NCj4+ICvCoMKgwqDC oMKgwqDCoCB2YWwgPSByZWFkYihsaTJjLT5kaXJfcmVnKTsNCj4+ICvCoMKgwqDCoMKgwqDC oCB2YWwgJj0gfm1hc2s7DQo+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGViKHZhbCwgbGkyYy0+ ZGlyX3JlZyk7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgLyogVGhlbiwgbWFrZSB0aGlz IHBpbiBvdXRwdXQgMCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRiKGxpMmMt PmRhdF9yZWcpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCAmPSB+bWFzazsNCj4+ICvCoMKg wqDCoMKgwqDCoCB3cml0ZWIodmFsLCBsaTJjLT5kYXRfcmVnKTsNCj4+ICvCoMKgwqAgfQ0K Pj4gKw0KPj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsZGV2LT5yZWdsb2Nr LCBmbGFncyk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qDQo+PiArICogbHM3YV9ncGlvX2kyY19n ZXQgLSByZWFkIHZhbHVlIGJhY2sgZnJvbSB0aGUgZ3BpbyBwaW4gaW5kaWNhdGVkIGJ5IA0K Pj4gbWFzaw0KPj4gKyAqIEBtYXNrOiBncGlvIHBpbiBtYXNrDQo+PiArICogcmV0dXJuICIw IiBmb3IgbG93LCAiMSIgZm9yIGhpZ2gNCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGxzN2Ff Z3Bpb19pMmNfZ2V0KHN0cnVjdCBsc2RjX2kyYyAqIGNvbnN0IGxpMmMsIGludCBtYXNrKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhs aTJjLT5kZGV2KTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+ICvCoMKg wqAgdTggdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmbGRldi0+ cmVnbG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBGaXJzdCBzZXQgdGhpcyBw aW4gYXMgaW5wdXQgKi8NCj4+ICvCoMKgwqAgdmFsID0gcmVhZGIobGkyYy0+ZGlyX3JlZyk7 DQo+PiArwqDCoMKgIHZhbCB8PSBtYXNrOw0KPj4gK8KgwqDCoCB3cml0ZWIodmFsLCBsaTJj LT5kaXJfcmVnKTsNCj4+ICsNCj4+ICvCoMKgwqAgLyogVGhlbiBnZXQgbGV2ZWwgc3RhdGUg ZnJvbSB0aGlzIHBpbiAqLw0KPj4gK8KgwqDCoCB2YWwgPSByZWFkYihsaTJjLT5kYXRfcmVn KTsNCj4+ICsNCj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbGRldi0+cmVn bG9jaywgZmxhZ3MpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gKHZhbCAmIG1hc2spID8g MSA6IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzN2FfaTJjX3NldF9zZGEo dm9pZCAqaTJjLCBpbnQgc3RhdGUpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19p MmMgKiBjb25zdCBsaTJjID0gKHN0cnVjdCBsc2RjX2kyYyAqKWkyYzsNCj4+ICvCoMKgwqAg Lyogc2V0IHN0YXRlIG9uIHRoZSBsaTJjLT5zZGEgcGluICovDQo+PiArwqDCoMKgIHJldHVy biBsczdhX2dwaW9faTJjX3NldChsaTJjLCBsaTJjLT5zZGEsIHN0YXRlKTsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIHZvaWQgbHM3YV9pMmNfc2V0X3NjbCh2b2lkICppMmMsIGludCBz dGF0ZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2kyYyAqIGNvbnN0IGxpMmMg PSAoc3RydWN0IGxzZGNfaTJjICopaTJjOw0KPj4gK8KgwqDCoCAvKiBzZXQgc3RhdGUgb24g dGhlIGxpMmMtPnNjbCBwaW4gKi8NCj4+ICvCoMKgwqAgcmV0dXJuIGxzN2FfZ3Bpb19pMmNf c2V0KGxpMmMsIGxpMmMtPnNjbCwgc3RhdGUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW50IGxzN2FfaTJjX2dldF9zZGEodm9pZCAqaTJjKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3Ry dWN0IGxzZGNfaTJjICogY29uc3QgbGkyYyA9IChzdHJ1Y3QgbHNkY19pMmMgKilpMmM7DQo+ PiArwqDCoMKgIC8qIHJlYWQgdmFsdWUgZnJvbSB0aGUgbGkyYy0+c2RhIHBpbiAqLw0KPj4g K8KgwqDCoCByZXR1cm4gbHM3YV9ncGlvX2kyY19nZXQobGkyYywgbGkyYy0+c2RhKTsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsczdhX2kyY19nZXRfc2NsKHZvaWQgKmkyYykN Cj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2kyYyAqIGNvbnN0IGxpMmMgPSAoc3Ry dWN0IGxzZGNfaTJjICopaTJjOw0KPj4gK8KgwqDCoCAvKiByZWFkIHRoZSB2YWx1ZSBmcm9t IHRoZSBsaTJjLT5zY2wgcGluICovDQo+PiArwqDCoMKgIHJldHVybiBsczdhX2dwaW9faTJj X2dldChsaTJjLCBsaTJjLT5zY2wpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBs c2RjX2Rlc3Ryb3lfaTJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LCB2b2lkICpkYXRhKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICpsaTJjID0gKHN0cnVjdCBsc2Rj X2kyYyAqKWRhdGE7DQo+PiArDQo+PiArwqDCoMKgIGlmIChsaTJjKSB7DQo+PiArwqDCoMKg wqDCoMKgwqAgaTJjX2RlbF9hZGFwdGVyKCZsaTJjLT5hZGFwdGVyKTsNCj4+ICvCoMKgwqDC oMKgwqDCoCBrZnJlZShsaTJjKTsNCj4+ICvCoMKgwqAgfQ0KPj4gK30NCj4+ICsNCj4+ICsv Kg0KPj4gKyAqIFRoZSBEQyBpbiBsczdhMTAwMC9sczdhMjAwMC9sczJrMjAwMCBoYXZlIGJ1 aWx0aW4gZ3BpbyBoYXJkd2FyZQ0KPj4gKyAqDQo+PiArICogQGJhc2U6IGdwaW8gcmVnIGJh c2UNCj4+ICsgKiBAaW5kZXg6IG91dHB1dCBjaGFubmVsIGluZGV4LCAwIGZvciBEVk8wLCAx IGZvciBEVk8xDQo+PiArICovDQo+PiArc3RydWN0IGxzZGNfaTJjICpsc2RjX2NyZWF0ZV9p MmNfY2hhbihzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCAqYmFzZSwNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4KQ0K Pj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyOw0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmM7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiAr DQo+PiArwqDCoMKgIGxpMmMgPSBremFsbG9jKHNpemVvZigqbGkyYyksIEdGUF9LRVJORUwp Ow0KPj4gK8KgwqDCoCBpZiAoIWxpMmMpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7DQo+PiArDQo+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKSB7DQo+ PiArwqDCoMKgwqDCoMKgwqAgbGkyYy0+c2RhID0gMHgwMTvCoCAvKiBwaW4gMCAqLw0KPj4g K8KgwqDCoMKgwqDCoMKgIGxpMmMtPnNjbCA9IDB4MDI7wqAgLyogcGluIDEgKi8NCj4+ICvC oMKgwqAgfSBlbHNlIGlmIChpbmRleCA9PSAxKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgbGky Yy0+c2RhID0gMHgwNDvCoCAvKiBwaW4gMiAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIGxpMmMt PnNjbCA9IDB4MDg7wqAgLyogcGluIDMgKi8NCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8Kg wqDCoCBsaTJjLT5yZWdfYmFzZSA9IGJhc2U7DQo+PiArwqDCoMKgIGxpMmMtPmRkZXYgPSBk ZGV2Ow0KPj4gK8KgwqDCoCBsaTJjLT5kaXJfcmVnID0gbGkyYy0+cmVnX2Jhc2UgKyBMUzdB X0RDX0dQSU9fRElSX1JFRzsNCj4+ICvCoMKgwqAgbGkyYy0+ZGF0X3JlZyA9IGxpMmMtPnJl Z19iYXNlICsgTFM3QV9EQ19HUElPX0RBVF9SRUc7DQo+PiArDQo+PiArwqDCoMKgIGxpMmMt PmJpdC5zZXRzZGEgPSBsczdhX2kyY19zZXRfc2RhOw0KPj4gK8KgwqDCoCBsaTJjLT5iaXQu c2V0c2NsID0gbHM3YV9pMmNfc2V0X3NjbDsNCj4+ICvCoMKgwqAgbGkyYy0+Yml0LmdldHNk YSA9IGxzN2FfaTJjX2dldF9zZGE7DQo+PiArwqDCoMKgIGxpMmMtPmJpdC5nZXRzY2wgPSBs czdhX2kyY19nZXRfc2NsOw0KPj4gK8KgwqDCoCBsaTJjLT5iaXQudWRlbGF5ID0gNTsNCj4+ ICvCoMKgwqAgbGkyYy0+Yml0LnRpbWVvdXQgPSB1c2Vjc190b19qaWZmaWVzKDIyMDApOw0K Pj4gK8KgwqDCoCBsaTJjLT5iaXQuZGF0YSA9IGxpMmM7DQo+PiArDQo+PiArwqDCoMKgIGFk YXB0ZXIgPSAmbGkyYy0+YWRhcHRlcjsNCj4+ICvCoMKgwqAgYWRhcHRlci0+YWxnb19kYXRh ID0gJmxpMmMtPmJpdDsNCj4+ICvCoMKgwqAgYWRhcHRlci0+b3duZXIgPSBUSElTX01PRFVM RTsNCj4+ICvCoMKgwqAgYWRhcHRlci0+Y2xhc3MgPSBJMkNfQ0xBU1NfRERDOw0KPj4gK8Kg wqDCoCBhZGFwdGVyLT5kZXYucGFyZW50ID0gZGRldi0+ZGV2Ow0KPj4gK8KgwqDCoCBhZGFw dGVyLT5uciA9IC0xOw0KPj4gKw0KPj4gK8KgwqDCoCBzbnByaW50ZihhZGFwdGVyLT5uYW1l LCBzaXplb2YoYWRhcHRlci0+bmFtZSksICJsc2RjLWkyYyV1IiwgaW5kZXgpOw0KPj4gKw0K Pj4gK8KgwqDCoCBpMmNfc2V0X2FkYXBkYXRhKGFkYXB0ZXIsIGxpMmMpOw0KPj4gKw0KPj4g K8KgwqDCoCByZXQgPSBpMmNfYml0X2FkZF9idXMoYWRhcHRlcik7DQo+PiArwqDCoMKgIGlm IChyZXQpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBrZnJlZShsaTJjKTsNCj4+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gRVJSX1BUUihyZXQpOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiAr wqDCoMKgIHJldCA9IGRybW1fYWRkX2FjdGlvbl9vcl9yZXNldChkZGV2LCBsc2RjX2Rlc3Ry b3lfaTJjLCBsaTJjKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gTlVMTDsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2luZm8oZGRldiwgIiVzKHNk YT0ldSwgc2NsPSV1KSBjcmVhdGVkIGZvciBjb25uZWN0b3ItJXVcbiIsDQo+PiArwqDCoMKg wqDCoMKgwqDCoCBhZGFwdGVyLT5uYW1lLCBsaTJjLT5zZGEsIGxpMmMtPnNjbCwgaW5kZXgp Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gbGkyYzsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19pcnEuYyANCj4+IGIvZHJpdmVycy9ncHUv ZHJtL2xzZGMvbHNkY19pcnEuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4 IDAwMDAwMDAwMDAwMC4uOGVkNDhkNWNhOWVlDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2lycS5jDQo+PiBAQCAtMCwwICsxLDg2IEBA DQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsNCj4+ICsj aW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNkY19k cnYuaCINCj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+PiArDQo+PiArLyoNCj4+ICsg KiBGb3IgdGhlIERDIGluIGxzN2EyMDAwLCBjbGVhcmluZyBpbnRlcnJ1cHQgc3RhdHVzIGlz IGFjaGlldmVkIGJ5DQo+PiArICogd3JpdGUgIjEiIHRvIExTRENfSU5UX1JFRywgRm9yIHRo ZSBEQyBpbiBsczdhMTAwMCwgbHMyazEwMDAsDQo+PiArICogSW50ZXJydXB0IHN0YXR1cyBj bGVhciBpcyBhY2hpZXZlZCBieSB3cml0ZSAiMCIgdG8gTFNEQ19JTlRfUkVHLg0KPj4gKyAq IFR3byBkaWZmZXJlbnQgaGFyZHdhcmUgZW5naW5lZXIgb2YgTG9vbmdzb24gbW9kaWZ5IGl0 IGFzIHRoZWlyIHdpbGwuDQo+PiArICovDQo+PiArDQo+PiArLyogRm9yIHRoZSBEQyBpbiBs czdhMjAwMCAqLw0KPj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBsc2RjX2lycV9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmFyZykNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNl ICpkZGV2ID0gYXJnOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0 b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCAv KiBSZWFkIHRoZSBpbnRlcnJ1cHQgc3RhdHVzICovDQo+PiArwqDCoMKgIHZhbCA9IGxzZGNf cnJlZzMyKGxkZXYsIExTRENfSU5UX1JFRyk7DQo+PiArwqDCoMKgIGlmICgodmFsICYgSU5U X1NUQVRVU19NQVNLKSA9PSAwKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3dhcm4oZGRl diwgIm5vIGludGVycnVwdCBvY2N1cnNcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biBJUlFfTk9ORTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBsZGV2LT5pcnFf c3RhdHVzID0gdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiB3cml0ZSAiMSIgdG8gY2xlYXIg dGhlIGludGVycnVwdCBzdGF0dXMgKi8NCj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwg TFNEQ19JTlRfUkVHLCB2YWwpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gSVJRX1dBS0Vf VEhSRUFEOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBGb3IgdGhlIERDIGluIGxzN2ExMDAwIGFu ZCBsczJrMTAwMMKgICovDQo+PiArc3RhdGljIGlycXJldHVybl90IGxzZGNfaXJxX2hhbmRs ZXJfbGVnYWN5KGludCBpcnEsIHZvaWQgKmFyZykNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVj dCBkcm1fZGV2aWNlICpkZGV2ID0gYXJnOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZp Y2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0K Pj4gK8KgwqDCoCAvKiBSZWFkIHRoZSBpbnRlcnJ1cHQgc3RhdHVzICovDQo+PiArwqDCoMKg IHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfSU5UX1JFRyk7DQo+PiArwqDCoMKgIGlm ICgodmFsICYgSU5UX1NUQVRVU19NQVNLKSA9PSAwKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAg ZHJtX3dhcm4oZGRldiwgIm5vIGludGVycnVwdCBvY2N1cnNcbiIpOw0KPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiBJUlFfTk9ORTsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDC oCBsZGV2LT5pcnFfc3RhdHVzID0gdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiB3cml0ZSAi MCIgdG8gY2xlYXIgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCj4+ICvCoMKgwqAgbHNkY193 cmVnMzIobGRldiwgTFNEQ19JTlRfUkVHLCB2YWwgJiB+SU5UX1NUQVRVU19NQVNLKTsNCj4+ ICsNCj4+ICvCoMKgwqAgcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsNCj4+ICt9DQo+PiArDQo+ PiAraXJxX2hhbmRsZXJfdCBsc2RjX2dldF9pcnFfaGFuZGxlcihzdHJ1Y3QgbHNkY19kZXZp Y2UgKmxkZXYpDQo+PiArew0KPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpk ZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAg PT0gQ0hJUF9MUzdBMjAwMCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbHNkY19pcnFf aGFuZGxlcjsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIGxzZGNfaXJxX2hhbmRsZXJfbGVn YWN5Ow0KPj4gK30NCj4+ICsNCj4+ICtpcnFyZXR1cm5fdCBsc2RjX2lycV90aHJlYWRfaGFu ZGxlcihpbnQgaXJxLCB2b2lkICphcmcpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2RldmljZSAqZGRldiA9IGFyZzsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICps ZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjICpjcnRj Ow0KPj4gKw0KPj4gK8KgwqDCoCBpZiAobGRldi0+aXJxX3N0YXR1cyAmIElOVF9DUlRDMF9W U1lOQykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGNydGMgPSBkcm1fY3J0Y19mcm9tX2luZGV4 KGRkZXYsIDApOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGRybV9jcnRjX2hhbmRsZV92Ymxhbmso Y3J0Yyk7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGxkZXYtPmlycV9z dGF0dXMgJiBJTlRfQ1JUQzFfVlNZTkMpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBjcnRjID0g ZHJtX2NydGNfZnJvbV9pbmRleChkZGV2LCAxKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1f Y3J0Y19oYW5kbGVfdmJsYW5rKGNydGMpOw0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDC oMKgIHJldHVybiBJUlFfSEFORExFRDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2xzZGMvbHNkY19vdXRwdXQuYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2xz ZGMvbHNkY19vdXRwdXQuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAw MDAwMDAwMDAwMC4uNTlmNzFkYmI0MWYzDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX291dHB1dC5jDQo+PiBAQCAtMCwwICsxLDU3MCBA QA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj X2hlbHBlci5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RlYnVnZnMuaD4NCj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9lZGlkLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPg0K Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPg0KPj4gKw0KPj4gKyNpbmNs dWRlICJsc2RjX2Rydi5oIg0KPj4gKyNpbmNsdWRlICJsc2RjX291dHB1dC5oIg0KPj4gKw0K Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikNCj4+ICt7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBudW0gPSAwOw0KPj4g K8KgwqDCoCBzdHJ1Y3QgZWRpZCAqZWRpZDsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGNvbm5l Y3Rvci0+ZGRjKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZWRpZCA9IGRybV9nZXRfZWRpZChj b25uZWN0b3IsIGNvbm5lY3Rvci0+ZGRjKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZWRp ZCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVf ZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbnVtID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShlZGlkKTsNCj4+ICvCoMKgwqDCoMKgwqDC oCB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG51bTsNCj4+ICvCoMKgwqAg fQ0KPj4gKw0KPj4gK8KgwqDCoCBudW0gPSBkcm1fYWRkX21vZGVzX25vZWRpZChjb25uZWN0 b3IsIDE5MjAsIDEyMDApOw0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fc2V0X3ByZWZlcnJlZF9t b2RlKGNvbm5lY3RvciwgMTAyNCwgNzY4KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIG51 bTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMN Cj4+ICtsc2RjX2RwaV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIGJvb2wgZm9yY2UpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmRkYyA9IGNvbm5lY3Rvci0+ZGRjOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoZGRj KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGRybV9wcm9iZV9kZGMoZGRjKSkNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsNCj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoY29ubmVj dG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRFBJKQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk Ow0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3Rh dHVzX3Vua25vd247DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzDQo+PiArbHNkY19oZG1pX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0 cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqcGlwZSA9IA0KPj4gY29ubmVjdG9yX3RvX2Rpc3Bs YXlfcGlwZShjb25uZWN0b3IpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxk ZXYgPSB0b19sc2RjKGNvbm5lY3Rvci0+ZGV2KTsNCj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+ ICsNCj4+ICvCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19IRE1JX0hQRF9T VEFUVVNfUkVHKTsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKHBpcGUtPmluZGV4ID09IDApIHsN Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFsICYgSERNSTBfSFBEX0ZMQUcpDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7 DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgaWYgKHBpcGUtPmluZGV4ID09IDEp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFsICYgSERNSTFfSFBEX0ZMQUcpDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQ7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9z dGF0dXNfZGlzY29ubmVjdGVkOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgZW51bSBkcm1f Y29ubmVjdG9yX3N0YXR1cw0KPj4gK2xzZGNfaGRtaV92Z2FfY29ubmVjdG9yX2RldGVjdChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIA0KPj4gZm9yY2UpDQo+PiAr ew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKnBpcGUgPSANCj4+IGNv bm5lY3Rvcl90b19kaXNwbGF5X3BpcGUoY29ubmVjdG9yKTsNCj4+ICvCoMKgwqAgc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYgPSBjb25uZWN0b3ItPmRldjsNCj4+ICvCoMKgwqAgc3RydWN0 IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgc3RydWN0 IGkyY19hZGFwdGVyICpkZGM7DQo+PiArwqDCoMKgIHUzMiB2YWw7DQo+PiArDQo+PiArwqDC oMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfSERNSV9IUERfU1RBVFVTX1JFRyk7 DQo+PiArDQo+PiArwqDCoMKgIGlmIChwaXBlLT5pbmRleCA9PSAxKSB7DQo+PiArwqDCoMKg wqDCoMKgwqAgaWYgKHZhbCAmIEhETUkxX0hQRF9GTEFHKQ0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPj4gKw0KPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsN Cj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAocGlwZS0+aW5kZXggPT0gMCkg ew0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2YWwgJiBIRE1JMF9IUERfRkxBRykNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZGMgPSBjb25uZWN0b3ItPmRkYzsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoZGRjKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoZHJtX3Byb2JlX2RkYyhkZGMpKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7DQo+PiArDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25u ZWN0ZWQ7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiAr wqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vua25vd247DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKg0KPj4gK2xzZGNfY29ubmVjdG9yX2dl dF9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpw aXBlID0gDQo+PiBjb25uZWN0b3JfdG9fZGlzcGxheV9waXBlKGNvbm5lY3Rvcik7DQo+PiAr DQo+PiArwqDCoMKgIHJldHVybiAmcGlwZS0+ZW5jb2RlcjsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBsc2RjX2Nv bm5lY3Rvcl9oZWxwZXJzIA0KPj4gPSB7DQo+PiArwqDCoMKgIC5hdG9taWNfYmVzdF9lbmNv ZGVyID0gbHNkY19jb25uZWN0b3JfZ2V0X2Jlc3RfZW5jb2RlciwNCj4+ICvCoMKgwqAgLmdl dF9tb2RlcyA9IGxzZGNfZ2V0X21vZGVzLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGxzZGNfZHBpX2Nvbm5lY3Rvcl9mdW5j cyA9IHsNCj4+ICvCoMKgwqAgLmRldGVjdCA9IGxzZGNfZHBpX2Nvbm5lY3Rvcl9kZXRlY3Qs DQo+PiArwqDCoMKgIC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29u bmVjdG9yX21vZGVzLA0KPj4gK8KgwqDCoCAuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xl YW51cCwNCj4+ICvCoMKgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X3Jlc2V0LA0KPj4gK8KgwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IA0KPj4gZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4+ICvCoMKgwqAg LmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rl c3Ryb3lfc3RhdGUsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3JfZnVuY3MNCj4+ICtsczdhMjAwMF9oZG1pX2Nvbm5lY3Rvcl9mdW5jc19h cnJheVtMU0RDX05VTV9DUlRDXSA9IHsNCj4+ICvCoMKgwqAgew0KPj4gK8KgwqDCoMKgwqDC oMKgIC5kZXRlY3QgPSBsc2RjX2hkbWlfdmdhX2Nvbm5lY3Rvcl9kZXRlY3QsDQo+PiArwqDC oMKgwqDCoMKgwqAgLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25u ZWN0b3JfbW9kZXMsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fY29ubmVj dG9yX2NsZWFudXAsDQo+PiArwqDCoMKgwqDCoMKgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hdG9taWNfZHVw bGljYXRlX3N0YXRlID0gDQo+PiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 IA0KPj4gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+PiAr wqDCoMKgIH0sDQo+PiArwqDCoMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZGV0ZWN0ID0g bHNkY19oZG1pX2Nvbm5lY3Rvcl9kZXRlY3QsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmZpbGxf bW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsDQo+PiAr wqDCoMKgwqDCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsDQo+PiAr wqDCoMKgwqDCoMKgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jl c2V0LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gDQo+ PiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0KPj4gK8Kg wqDCoMKgwqDCoMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IA0KPj4gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+PiArwqDCoMKgIH0NCj4+ICt9Ow0K Pj4gKw0KPj4gKy8qIEV2ZW4gdGhvdWdoIHNvbWUgYm9hcmQgaGFzIG9ubHkgb25lIGhkbWkg b24gZGlzcGxheSBwaXBlIDEsDQo+PiArICogV2Ugc3RpbGwgbmVlZCBob29rIGxzZGNfZW5j b2Rlcl9mdW5jcyB1cCBvbiBkaXNwbGF5IHBpcGUgMCwNCj4+ICsgKiBUaGlzIGlzIGJlY2F1 c2Ugd2UgbmVlZCBpdHMgcmVzZXQoKSBjYWxsYmFjayBnZXQgY2FsbGVkLCB0bw0KPj4gKyAq IHNldCB0aGUgTFNEQ19IRE1JeF9DVFJMX1JFRyB1c2luZyBzb2Z0d2FyZSBncGlvIGVtdWxh dGVkIGkyYy4NCj4+ICsgKiBPdGhlcndpc2UsIHRoZSBmaXJtd2FyZSBtYXkgc2V0IExTRENf SERNSXhfQ1RSTF9SRUcgYmxpbmRseS4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgdm9pZCBsczdh MjAwMF9oZG1pX2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQ0K Pj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBlbmNvZGVyLT5k ZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRl dik7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0K Pj4gZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUoZW5jb2Rlcik7DQo+PiArwqDCoMKgIHVuc2ln bmVkIGludCBpbmRleCA9IGRpc3BpcGUtPmluZGV4Ow0KPj4gK8KgwqDCoCB1MzIgdmFsOw0K Pj4gKw0KPj4gK8KgwqDCoCB2YWwgPSBsc2RjX2hkbWlfcnJlZzMyKGxkZXYsIExTRENfSERN STBfUEhZX0NUUkxfUkVHLCBpbmRleCk7DQo+PiArwqDCoMKgIHZhbCAmPSB+SERNSV9QSFlf UkVTRVRfTjsNCj4+ICvCoMKgwqAgbHNkY19oZG1pX3dyZWczMihsZGV2LCBMU0RDX0hETUkw X1BIWV9DVFJMX1JFRywgaW5kZXgsIHZhbCk7DQo+PiArwqDCoMKgIHVkZWxheSg5KTsNCj4+ ICvCoMKgwqAgdmFsIHw9IEhETUlfUEhZX1JFU0VUX047DQo+PiArwqDCoMKgIGxzZGNfaGRt aV93cmVnMzIobGRldiwgTFNEQ19IRE1JMF9QSFlfQ1RSTF9SRUcsIGluZGV4LCB2YWwpOw0K Pj4gK8KgwqDCoCB1ZGVsYXkoOSk7DQo+PiArDQo+PiArwqDCoMKgIHZhbCA9IGxzZGNfaGRt aV9ycmVnMzIobGRldiwgTFNEQ19IRE1JMF9JTlRGX0NUUkxfUkVHLCBpbmRleCk7DQo+PiAr wqDCoMKgIHZhbCAmPSB+SFdfSTJDX0VOOw0KPj4gK8KgwqDCoCB2YWwgfD0gSERNSV9JTlRF UkZBQ0VfRU4gfCBIRE1JX1BBQ0tFVF9FTjsNCj4+ICvCoMKgwqAgbHNkY19oZG1pX3dyZWcz MihsZGV2LCBMU0RDX0hETUkwX0lOVEZfQ1RSTF9SRUcsIGluZGV4LCB2YWwpOw0KPj4gKw0K Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJIRE1JLSV1IFJlc2V0XG4iLCBpbmRleCk7DQo+ PiArfQ0KPj4gKw0KPj4gKyNpZmRlZiBDT05GSUdfREVCVUdfRlMNCj4+ICsNCj4+ICsjZGVm aW5lIExTRENfSERNSV9SRUcoaSwgcmVnKSB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwNCj4+ICvCoMKgwqAgLm5hbWUg PSBfX3N0cmluZ2lmeV8xKExTRENfSERNSSMjaSMjXyMjcmVnIyNfUkVHKSzCoMKgwqAgXA0K Pj4gK8KgwqDCoCAub2Zmc2V0ID0gTFNEQ19IRE1JIyNpIyNfIyNyZWcjI19SRUcswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRlYnVnZnNfcmVnMzIgbHM3YTIwMDBfaGRtaV9lbmNvZGVyX3JlZ3Nb XVs5XSA9IHsNCj4+ICvCoMKgwqAgew0KPj4gK8KgwqDCoMKgwqDCoMKgIExTRENfSERNSV9S RUcoMCwgWk9ORSksDQo+PiArwqDCoMKgwqDCoMKgwqAgTFNEQ19IRE1JX1JFRygwLCBJTlRG X0NUUkwpLA0KPj4gK8KgwqDCoMKgwqDCoMKgIExTRENfSERNSV9SRUcoMCwgUEhZX0NUUkwp LA0KPj4gK8KgwqDCoMKgwqDCoMKgIExTRENfSERNSV9SRUcoMCwgUEhZX1BMTCksDQo+PiAr wqDCoMKgwqDCoMKgwqAgTFNEQ19IRE1JX1JFRygwLCBBVklfSU5GT19DUlRMKSwNCj4+ICvC oMKgwqDCoMKgwqDCoCBMU0RDX0hETUlfUkVHKDAsIFBIWV9DQUwpLA0KPj4gK8KgwqDCoMKg wqDCoMKgIExTRENfSERNSV9SRUcoMCwgQVVESU9fUExMX0xPKSwNCj4+ICvCoMKgwqDCoMKg wqDCoCBMU0RDX0hETUlfUkVHKDAsIEFVRElPX1BMTF9ISSksDQo+PiArwqDCoMKgwqDCoMKg wqAge05VTEwsIDB9LA0KPj4gK8KgwqDCoCB9LA0KPj4gK8KgwqDCoCB7DQo+PiArwqDCoMKg wqDCoMKgwqAgTFNEQ19IRE1JX1JFRygxLCBaT05FKSwNCj4+ICvCoMKgwqDCoMKgwqDCoCBM U0RDX0hETUlfUkVHKDEsIElOVEZfQ1RSTCksDQo+PiArwqDCoMKgwqDCoMKgwqAgTFNEQ19I RE1JX1JFRygxLCBQSFlfQ1RSTCksDQo+PiArwqDCoMKgwqDCoMKgwqAgTFNEQ19IRE1JX1JF RygxLCBQSFlfUExMKSwNCj4+ICvCoMKgwqDCoMKgwqDCoCBMU0RDX0hETUlfUkVHKDEsIEFW SV9JTkZPX0NSVEwpLA0KPj4gK8KgwqDCoMKgwqDCoMKgIExTRENfSERNSV9SRUcoMSwgUEhZ X0NBTCksDQo+PiArwqDCoMKgwqDCoMKgwqAgTFNEQ19IRE1JX1JFRygxLCBBVURJT19QTExf TE8pLA0KPj4gK8KgwqDCoMKgwqDCoMKgIExTRENfSERNSV9SRUcoMSwgQVVESU9fUExMX0hJ KSwNCj4+ICvCoMKgwqDCoMKgwqDCoCB7TlVMTCwgMH0swqAgLyogTVVTVCBiZSB7TlVMTCwg MH0gdGVybWluYXRlZCAqLw0KPj4gK8KgwqDCoCB9LA0KPj4gK307DQo+PiArDQo+PiArc3Rh dGljIGludCBsczdhMjAwMF9oZG1pX2VuY29kZXJfcmVnc19zaG93KHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCANCj4+ICpkYXRhKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9p bmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0K Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7 DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7 DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpwcmVnOw0KPj4gKw0K Pj4gK8KgwqDCoCBwcmVnID0gKGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICopbm9kZS0+ aW5mb19lbnQtPmRhdGE7DQo+PiArDQo+PiArwqDCoMKgIHdoaWxlIChwcmVnLT5uYW1lKSB7 DQo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIG9mZnNldCA9IHByZWctPm9mZnNldDsNCj4+ICsN Cj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICIlcyAoMHglMDR4KTogMHglMDh4 XG4iLCBwcmVnLT5uYW1lLCBvZmZzZXQsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBsc2RjX3JyZWczMihsZGV2LCBvZmZzZXQpKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCAr K3ByZWc7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2luZm9fbGlzdCBsczdhMjAw MF9oZG1pX2RlYnVnZnNfZmlsZXNbXSA9IHsNCj4+ICvCoMKgwqAgeyAiaGRtaTBfcmVncyIs IGxzN2EyMDAwX2hkbWlfZW5jb2Rlcl9yZWdzX3Nob3csIDAsICh2b2lkIA0KPj4gKilsczdh MjAwMF9oZG1pX2VuY29kZXJfcmVnc1swXSB9LA0KPj4gK8KgwqDCoCB7ICJoZG1pMV9yZWdz IiwgbHM3YTIwMDBfaGRtaV9lbmNvZGVyX3JlZ3Nfc2hvdywgMCwgKHZvaWQgDQo+PiAqKWxz N2EyMDAwX2hkbWlfZW5jb2Rlcl9yZWdzWzFdIH0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0 aWMgaW50IGxzN2EyMDAwX2hkbWlfZW5jb2Rlcl9sYXRlX3JlZ2lzdGVyKHN0cnVjdCBkcm1f ZW5jb2RlciANCj4+ICplbmNvZGVyKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNf ZGlzcGxheV9waXBlICpkaXNwaXBlID0gDQo+PiBlbmNvZGVyX3RvX2Rpc3BsYXlfcGlwZShl bmNvZGVyKTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBlbmNvZGVy LT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yID0gZGRldi0+cHJp bWFyeTsNCj4+ICsNCj4+ICsgICAgDQo+PiBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMoJmxz N2EyMDAwX2hkbWlfZGVidWdmc19maWxlc1tkaXNwaXBlLT5pbmRleF0sDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMSwgbWlub3ItPmRlYnVnZnNfcm9vdCwgbWlu b3IpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArI2Vu ZGlmDQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBs czdhMTAwMF9lbmNvZGVyX2Z1bmNzID0gew0KPj4gK8KgwqDCoCAuZGVzdHJveSA9IGRybV9l bmNvZGVyX2NsZWFudXAsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9lbmNvZGVyX2Z1bmNzIGxzN2EyMDAwX2VuY29kZXJfZnVuY3MgPSB7DQo+PiArwqDC oMKgIC5yZXNldCA9IGxzN2EyMDAwX2hkbWlfZW5jb2Rlcl9yZXNldCwNCj4+ICvCoMKgwqAg LmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLA0KPj4gKyNpZmRlZiBDT05GSUdfREVC VUdfRlMNCj4+ICvCoMKgwqAgLmxhdGVfcmVnaXN0ZXIgPSBsczdhMjAwMF9oZG1pX2VuY29k ZXJfbGF0ZV9yZWdpc3RlciwNCj4+ICsjZW5kaWYNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgbHM3YTIwMDBfaGRtaV9zZXRfYXZpX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpDQo+PiArew0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSANCj4+IGVuY29kZXJf dG9fZGlzcGxheV9waXBlKGVuY29kZXIpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGRldiA9IGVuY29kZXItPmRldjsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNl ICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4 ID0gZGlzcGlwZS0+aW5kZXg7DQo+PiArwqDCoMKgIHN0cnVjdCBoZG1pX2F2aV9pbmZvZnJh bWUgaW5mb2ZyYW1lOw0KPj4gK8KgwqDCoCB1OCBidWZmZXJbSERNSV9JTkZPRlJBTUVfU0la RShBVkkpXTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgY2hhciAqcHRyID0gJmJ1ZmZlcltIRE1J X0lORk9GUkFNRV9IRUFERVJfU0laRV07DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBjb250 ZW50MCwgY29udGVudDEsIGNvbnRlbnQyLCBjb250ZW50MzsNCj4+ICvCoMKgwqAgaW50IGVy cjsNCj4+ICsNCj4+ICvCoMKgwqAgZXJyID0gZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9t X2Rpc3BsYXlfbW9kZSgmaW5mb2ZyYW1lLCANCj4+ICZkaXNwaXBlLT5jb25uZWN0b3IsIG1v ZGUpOw0KPj4gK8KgwqDCoCBpZiAoZXJyIDwgMCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGRy bV9lcnIoZGRldiwgImZhaWxlZCB0byBzZXR1cCBBVkkgaW5mb2ZyYW1lOiAlZFxuIiwgZXJy KTsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZXJyOw0KPj4gK8KgwqDCoCB9DQo+PiAr DQo+PiArwqDCoMKgIC8qIEZpeGVkIGluZm9mcmFtZSBjb25maWd1cmF0aW9uIG5vdCBsaW5r ZWQgdG8gdGhlIG1vZGUgKi8NCj4+ICvCoMKgwqAgaW5mb2ZyYW1lLmNvbG9yc3BhY2UgPSBI RE1JX0NPTE9SU1BBQ0VfUkdCOw0KPj4gK8KgwqDCoCBpbmZvZnJhbWUucXVhbnRpemF0aW9u X3JhbmdlID0gSERNSV9RVUFOVElaQVRJT05fUkFOR0VfREVGQVVMVDsNCj4+ICvCoMKgwqAg aW5mb2ZyYW1lLmNvbG9yaW1ldHJ5ID0gSERNSV9DT0xPUklNRVRSWV9OT05FOw0KPj4gKw0K Pj4gK8KgwqDCoCBlcnIgPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFjaygmaW5mb2ZyYW1lLCBi dWZmZXIsIHNpemVvZihidWZmZXIpKTsNCj4+ICvCoMKgwqAgaWYgKGVyciA8IDApIHsNCj4+ ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICJmYWlsZWQgdG8gcGFjayBBVkkgaW5m b2ZyYW1lOiAlZFxuIiwgZXJyKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBlcnI7DQo+PiArwqDCoMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgY29udGVudDAgPSAqKHVu c2lnbmVkIGludCAqKXB0cjsNCj4+ICvCoMKgwqAgY29udGVudDEgPSAqKHB0ciArIDQpOw0K Pj4gK8KgwqDCoCBjb250ZW50MiA9ICoodW5zaWduZWQgaW50ICopKHB0ciArIDUpOw0KPj4g K8KgwqDCoCBjb250ZW50MyA9ICoodW5zaWduZWQgaW50ICopKHB0ciArIDkpOw0KPj4gKw0K Pj4gK8KgwqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfQVZJX0NPTlRF TlQwLCBpbmRleCwgY29udGVudDApOw0KPj4gK8KgwqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxk ZXYsIExTRENfSERNSTBfQVZJX0NPTlRFTlQxLCBpbmRleCwgY29udGVudDEpOw0KPj4gK8Kg wqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfQVZJX0NPTlRFTlQyLCBp bmRleCwgY29udGVudDIpOw0KPj4gK8KgwqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxkZXYsIExT RENfSERNSTBfQVZJX0NPTlRFTlQzLCBpbmRleCwgY29udGVudDMpOw0KPj4gKw0KPj4gK8Kg wqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfQVZJX0lORk9fQ1JUTF9S RUcsIGluZGV4LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBVklfUEtUX0VOQUJM RSB8IEFWSV9QS1RfVVBEQVRFKTsNCj4+ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAi VXBkYXRlIEhETUktJXUgYXZpIGluZm9mcmFtZVxuIiwgaW5kZXgpOw0KPj4gKw0KPj4gK8Kg wqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbHM3YTIwMDBf aGRtaV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNw bGF5X3BpcGUgKmRpc3BpcGUgPSANCj4+IGVuY29kZXJfdG9fZGlzcGxheV9waXBlKGVuY29k ZXIpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGVuY29kZXItPmRl djsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2 KTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4ID0gZGlzcGlwZS0+aW5kZXg7DQo+ PiArwqDCoMKgIHUzMiB2YWw7DQo+PiArDQo+PiArwqDCoMKgIHZhbCA9IGxzZGNfaGRtaV9y cmVnMzIobGRldiwgTFNEQ19IRE1JMF9QSFlfQ1RSTF9SRUcsIGluZGV4KTsNCj4+ICvCoMKg wqAgdmFsICY9IH5IRE1JX1BIWV9FTjsNCj4+ICvCoMKgwqAgbHNkY19oZG1pX3dyZWczMihs ZGV2LCBMU0RDX0hETUkwX1BIWV9DVFJMX1JFRywgaW5kZXgsIHZhbCk7DQo+PiArDQo+PiAr wqDCoMKgIGxzZGNfaGRtaV93cmVnMzIobGRldiwgTFNEQ19IRE1JMF9BVklfSU5GT19DUlRM X1JFRywgaW5kZXgsIDApOw0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJIRE1J LSV1IGRpc2FibGVkXG4iLCBpbmRleCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk IGxzN2EyMDAwX2hkbWlfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRy bV9kZXZpY2UgKmRkZXYgPSBlbmNvZGVyLT5kZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4gZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUo ZW5jb2Rlcik7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCA9IGRpc3BpcGUtPmlu ZGV4Ow0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX2hkbWlf d3JlZzMyKGxkZXYsIExTRENfSERNSTBfWk9ORV9SRUcsIGluZGV4LCAweDAwNDAwMDQwKTsN Cj4+ICsNCj4+ICvCoMKgwqAgdmFsID0gbHNkY19oZG1pX3JyZWczMihsZGV2LCBMU0RDX0hE TUkwX1BIWV9DVFJMX1JFRywgaW5kZXgpOw0KPj4gKw0KPj4gK8KgwqDCoCB2YWwgfD0gSERN SV9QSFlfVEVSTV9TVEFUVVMgfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEhZ X1RFUk1fREVUX0VOIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBIRE1JX1BIWV9URVJN X0hfRU4gfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEhZX1RFUk1fTF9FTiB8 DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSERNSV9QSFlfRU47DQo+PiArDQo+PiArwqDC oMKgIGxzZGNfaGRtaV93cmVnMzIobGRldiwgTFNEQ19IRE1JMF9QSFlfQ1RSTF9SRUcsIGlu ZGV4LCB2YWwpOw0KPj4gKw0KPj4gK8KgwqDCoCB2YWwgPSBIRE1JX0NUTF9QRVJJT0RfTU9E RSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfQVVESU9fRU4gfA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoCBIRE1JX1BBQ0tFVF9FTiB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg IEhETUlfSU5URVJGQUNFX0VOIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKDggPDwgSERN SV9WSURFT19QUkVBTUJMRV9TSElGVCk7DQo+PiArDQo+PiArwqDCoMKgIGxzZGNfaGRtaV93 cmVnMzIobGRldiwgTFNEQ19IRE1JMF9JTlRGX0NUUkxfUkVHLCBpbmRleCwgdmFsKTsNCj4+ ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiSERNSS0ldSBlbmFibGVkXG4iLCBpbmRl eCk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qDQo+PiArICrCoCBGb3V0ID0gTSAqIEZpbg0KPj4g KyAqDQo+PiArICrCoCBNID0gKDQgKiBMRikgLyAoSURGICogT0RGKQ0KPj4gKyAqLw0KPj4g K3N0YXRpYyB2b2lkIGxzN2EyMDAwX2hkbWlfcGh5X3BsbF9jb25maWcoc3RydWN0IGxzZGNf ZGV2aWNlICpsZGV2LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50IGZpbiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+PiArwqDCoMKgIGludCBjb3VudCA9 IDA7DQo+PiArwqDCoMKgIHUzMiB2YWw7DQo+PiArDQo+PiArwqDCoMKgIC8qIEZpcnN0bHks IGRpc2FibGUgcGh5IHBsbCAqLw0KPj4gK8KgwqDCoCBsc2RjX2hkbWlfd3JlZzMyKGxkZXYs IExTRENfSERNSTBfUEhZX1BMTF9SRUcsIGluZGV4LCAweDApOw0KPj4gKw0KPj4gK8KgwqDC oCAvKg0KPj4gK8KgwqDCoMKgICogTW9zdCBvZiB0aW1lLCBsb29uZ3NvbiBIRE1JIHJlcXVp cmUgTSA9IDEwDQo+PiArwqDCoMKgwqAgKiBmb3IgZXhhbXBsZSwgMTAgPSAoNCAqIDQwKSAv ICg4ICogMikNCj4+ICvCoMKgwqDCoCAqIGhlcmUsIHdyaXRlICIxIiB0byB0aGUgT0RGIHdp bGwgZ2V0ICIyIg0KPj4gK8KgwqDCoMKgICovDQo+PiArDQo+PiArwqDCoMKgIGlmIChmaW4g Pj0gMTcwMDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9ICgxNiA8PCBIRE1JX1BMTF9J REZfU0hJRlQpIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoNDAgPDwgSERN SV9QTExfTEZfU0hJRlQpIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMCA8 PCBIRE1JX1BMTF9PREZfU0hJRlQpOw0KPj4gK8KgwqDCoCBlbHNlDQo+PiArwqDCoMKgwqDC oMKgwqAgdmFsID0gKDggPDwgSERNSV9QTExfSURGX1NISUZUKSB8DQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKDQwIDw8IEhETUlfUExMX0xGX1NISUZUKSB8DQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgSERNSV9QTExfT0RGX1NISUZUKTsNCj4+ ICsNCj4+ICvCoMKgwqAgbHNkY19oZG1pX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9Q TExfUkVHLCBpbmRleCwgdmFsIHwgDQo+PiBIRE1JX1BMTF9FTkFCTEUpOw0KPj4gKw0KPj4g K8KgwqDCoCB1ZGVsYXkoMSk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIkZp biBvZiBIRE1JLSV1OiAlZCBrSHpcbiIsIGluZGV4LCBmaW4pOw0KPj4gKw0KPj4gK8KgwqDC oCAvKiBXYWl0IGhkbWkgcGh5IHBsbCBsb2NrICovDQo+PiArwqDCoMKgIGRvIHsNCj4+ICvC oMKgwqDCoMKgwqDCoCB2YWwgPSBsc2RjX2hkbWlfcnJlZzMyKGxkZXYsIExTRENfSERNSTBf UEhZX1BMTF9SRUcsIGluZGV4KTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFs ICYgSERNSV9QTExfTE9DS0VEKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1f ZGJnKGRkZXYsICJTZXR0aW5nIEhETUktJXUgUExMIHRha2UgJWQgY3ljbGVzXG4iLA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleCwgY291bnQpOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4g K8KgwqDCoMKgwqDCoMKgICsrY291bnQ7DQo+PiArwqDCoMKgIH0gd2hpbGUgKGNvdW50IDwg MTAwMCk7DQo+PiArDQo+PiArwqDCoMKgIGxzZGNfaGRtaV93cmVnMzIobGRldiwgTFNEQ19I RE1JMF9QSFlfQ0FMX1JFRywgaW5kZXgsIDB4ZjAwMGZmMCk7DQo+PiArDQo+PiArwqDCoMKg IGlmIChjb3VudCA+PSAxMDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwg IlNldHRpbmcgSERNSS0ldSBQTEwgZmFpbGVkXG4iLCBpbmRleCk7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyB2b2lkIGxzN2EyMDAwX2hkbWlfYXRvbWljX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVj dCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4gZW5jb2Rlcl90b19kaXNwbGF5 X3BpcGUoZW5jb2Rlcik7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g ZW5jb2Rlci0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0 b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9ICZjcnRjX3N0YXRlLT5tb2RlOw0KPj4gKw0KPj4gK8KgwqDCoCBsczdhMjAwMF9oZG1p X3BoeV9wbGxfY29uZmlnKGxkZXYsIG1vZGUtPmNsb2NrLCBkaXNwaXBlLT5pbmRleCk7DQo+ PiArDQo+PiArwqDCoMKgIGxzN2EyMDAwX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoZW5jb2Rl ciwgbW9kZSk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIkhETUktJXUgbW9k ZXNldCBmaW5pc2hlZFxuIiwgZGlzcGlwZS0+aW5kZXgpOw0KPj4gK30NCj4+ICsNCj4+ICtj b25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIA0KPj4gbHM3YTIwMDBfaGRt aV9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsNCj4+ICvCoMKgwqAgLmF0b21pY19kaXNhYmxl ID0gbHM3YTIwMDBfaGRtaV9hdG9taWNfZGlzYWJsZSwNCj4+ICvCoMKgwqAgLmF0b21pY19l bmFibGUgPSBsczdhMjAwMF9oZG1pX2F0b21pY19lbmFibGUsDQo+PiArwqDCoMKgIC5hdG9t aWNfbW9kZV9zZXQgPSBsczdhMjAwMF9oZG1pX2F0b21pY19tb2RlX3NldCwNCj4+ICt9Ow0K Pj4gKw0KPj4gKy8qDQo+PiArICogQGluZGV4IDogZGlzcGxheSBwaXBlIGluZGV4LiAwIG9y IDEgZm9yIG5vdy4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgaW50IGxzN2EyMDAwX291dHB1dF9p bml0KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpkaXNwaXBlLA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmRkYykN Cj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJh c2U7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZkaXNwaXBl LT5lbmNvZGVyOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gJmRpc3BpcGUtPmNvbm5lY3RvcjsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IHBpcGUg PSBkaXNwaXBlLT5pbmRleDsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKg wqAgcmV0ID0gZHJtX2VuY29kZXJfaW5pdChkZGV2LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlbmNvZGVyLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmbHM3YTIwMDBfZW5jb2Rlcl9mdW5jcywNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX01PREVfRU5DT0RFUl9UTURTLA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZW5jb2Rlci0ldSIs DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpcGUpOw0KPj4g K8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiAr DQo+PiArwqDCoMKgIGVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gQklUKGRpc3BpcGUtPmlu ZGV4KTsNCj4+ICsNCj4+ICvCoMKgwqAgLyoNCj4+ICvCoMKgwqDCoCAqIEZvciBMUzdBMjAw MDoNCj4+ICvCoMKgwqDCoCAqDQo+PiArwqDCoMKgwqAgKiAxKSBTb21lIGJvYXJkIGV4cG9y dCBkb3VibGUgaGRtaSBvdXRwdXQgaW50ZXJmYWNlDQo+PiArwqDCoMKgwqAgKiAyKSBNb3N0 IG9mIGJvYXJkIGV4cG9ydCBvbmUgdmdhICsgaGRtaSBvdXRwdXQgaW50ZXJmYWNlDQo+PiAr wqDCoMKgwqAgKiAzKSBzdGlsbCBoYXMgYm9hcmQgZXhwb3J0IHRocmVlIG91dHB1dCgyIGhk bWkgKyAxIHZnYSkuDQo+PiArwqDCoMKgwqAgKg0KPj4gK8KgwqDCoMKgICogU28gbGV0J3Mg aG9vayBoZG1pIGhlbHBlciBmdW5jcyB0byBhbGwgZGlzcGxheSBwaXBlLCBkb24ndCBtaXNz Lg0KPj4gK8KgwqDCoMKgICogd3JpdGluZyBoZG1pIHJlZ2lzdGVyIGRvIG5vIGhhcm0sIGV4 Y2VwdCB3YXN0aW5nIGEgZmV3IGNwdSdzIHRpbWUNCj4+ICvCoMKgwqDCoCAqIGlmIHRoZSBt b3RoZXJib2FyZCBkb24ndCBleHBvcnQgaGRtaSBpbnRlcmZhY2UuDQo+PiArwqDCoMKgwqAg Ki8NCj4+ICvCoMKgwqAgZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCANCj4+ICZs czdhMjAwMF9oZG1pX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsNCj4+ICsNCj4+ICvCoMKgwqAg cmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0X3dpdGhfZGRjKGRkZXYsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbm5lY3RvciwNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmxzN2EyMDAwX2hkbWlf Y29ubmVjdG9yX2Z1bmNzX2FycmF5W3BpcGVdLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fTU9ERV9DT05ORUNUT1JfSERNSUEsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRkYyk7DQo+PiAr wqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsN Cj4+ICvCoMKgwqAgZHJtX2luZm8oZGRldiwgImRpc3BsYXkgcGlwZS0ldSBoYXMgSERNSSVz XG4iLCBwaXBlLCBwaXBlID8gIiIgOiANCj4+ICIgYW5kL29yIFZHQSIpOw0KPj4gKw0KPj4g K8KgwqDCoCBkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmbHNkY19jb25u ZWN0b3JfaGVscGVycyk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9jb25uZWN0b3JfYXR0YWNo X2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsNCj4+ICsNCj4+ICvCoMKgwqAgY29ubmVj dG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCB8DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9DT05ORUNUT1JfUE9MTF9ESVNDT05ORUNU Ow0KPj4gKw0KPj4gK8KgwqDCoCBjb25uZWN0b3ItPmludGVybGFjZV9hbGxvd2VkID0gMDsN Cj4+ICvCoMKgwqAgY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSAwOw0KPj4gKw0K Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsczdh MTAwMF9vdXRwdXRfaW5pdChzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlz cGlwZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGkyY19h ZGFwdGVyICpkZGMpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRl diA9ICZsZGV2LT5iYXNlOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIgPSAmZGlzcGlwZS0+ZW5jb2RlcjsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciA9ICZkaXNwaXBlLT5jb25uZWN0b3I7DQo+PiArwqDCoMKgIGludCBy ZXQ7DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IGRybV9lbmNvZGVyX2luaXQoZGRldiwNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5jb2RlciwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmxzN2ExMDAwX2VuY29kZXJf ZnVuY3MsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9N T0RFX0VOQ09ERVJfVE1EUywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgImVuY29kZXItJXUiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBkaXNwaXBlLT5pbmRleCk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICvCoMKgwqAgZW5jb2Rlci0+cG9z c2libGVfY3J0Y3MgPSBCSVQoZGlzcGlwZS0+aW5kZXgpOw0KPj4gKw0KPj4gK8KgwqDCoCBy ZXQgPSBkcm1fY29ubmVjdG9yX2luaXRfd2l0aF9kZGMoZGRldiwNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29ubmVjdG9yLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbHNkY19kcGlfY29ubmVj dG9yX2Z1bmNzLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBEUk1fTU9ERV9DT05ORUNUT1JfRFBJLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZGMpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgIGRybV9pbmZv KGRkZXYsICJkaXNwbGF5IHBpcGUtJXUgaGFzIERWT1xuIiwgZGlzcGlwZS0+aW5kZXgpOw0K Pj4gKw0KPj4gK8KgwqDCoCBkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAm bHNkY19jb25uZWN0b3JfaGVscGVycyk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9jb25uZWN0 b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKTsNCj4+ICsNCj4+ICvCoMKg wqAgY29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCB8DQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9DT05ORUNUT1JfUE9MTF9E SVNDT05ORUNUOw0KPj4gKw0KPj4gK8KgwqDCoCBjb25uZWN0b3ItPmludGVybGFjZV9hbGxv d2VkID0gMDsNCj4+ICvCoMKgwqAgY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSAw Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArdHlwZWRl ZiBpbnQgKCpwZm5fb3V0cHV0X2luaXRfdCkoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3Bs YXlfcGlwZSAqZGlzcCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmRkYyk7DQo+PiArDQo+PiArLyogTk9URToga2VlcCB0aGlz IGFzIHRoZSBvcmRlciBsaXN0ZWQgaW4gbG9vbmdzb25fY2hpcF9mYW1pbHkgZW51bSAqLw0K Pj4gK3N0YXRpYyBjb25zdCBwZm5fb3V0cHV0X2luaXRfdCBsc2RjX291dHB1dF9pbml0W0NI SVBfTEFTVF0gPSB7DQo+PiArwqDCoMKgIGxzN2ExMDAwX291dHB1dF9pbml0LA0KPj4gK8Kg wqDCoCBsczdhMjAwMF9vdXRwdXRfaW5pdCwNCj4+ICt9Ow0KPj4gKw0KPj4gK2ludCBsc2Rj X2NyZWF0ZV9vdXRwdXQoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpkaXNwaXBl KQ0KPj4gK3sNCj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBs ZGV2LT5kZXNjcDsNCj4+ICvCoMKgwqAgc3RydWN0IGkyY19hZGFwdGVyICpkZGMgPSBOVUxM Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmM7DQo+PiArDQo+PiArwqDCoMKg IGlmIChkZXNjcC0+aGFzX2J1aWx0aW5faTJjKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgbGky YyA9IGxzZGNfY3JlYXRlX2kyY19jaGFuKCZsZGV2LT5iYXNlLCBsZGV2LT5yZWdfYmFzZSwg DQo+PiBkaXNwaXBlLT5pbmRleCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKElTX0VSUihs aTJjKSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKGxpMmMp Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIGRpc3BpcGUtPmxpMmMgPSBsaTJjOw0KPj4g K8KgwqDCoMKgwqDCoMKgIGRkYyA9ICZsaTJjLT5hZGFwdGVyOw0KPj4gK8KgwqDCoCB9DQo+ PiArDQo+PiArwqDCoMKgIC8qIE91dHB1dCBpbnRlcmZhY2VzIHN1ZmZlciBmcm9tIGNoYW5n ZXMgKi8NCj4+ICvCoMKgwqAgcmV0dXJuIGxzZGNfb3V0cHV0X2luaXRbZGVzY3AtPmNoaXBd KGxkZXYsIGRpc3BpcGUsIGRkYyk7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9sc2RjL2xzZGNfb3V0cHV0LmggDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9sc2Rj L2xzZGNfb3V0cHV0LmgNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAw MDAwMDAwMDAuLmRiMmQzMmE2MGMzZA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2xzZGMvbHNkY19vdXRwdXQuaA0KPj4gQEAgLTAsMCArMSwxNCBAQA0K Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+PiArDQo+PiAr I2lmbmRlZiBfX0xTRENfT1VUUFVUX0hfXw0KPj4gKyNkZWZpbmUgX19MU0RDX09VVFBVVF9I X18NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCINCj4+ICsNCj4+ICtpbnQgbHNk Y19jcmVhdGVfb3V0cHV0KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwgc3RydWN0IA0KPj4g bHNkY19kaXNwbGF5X3BpcGUgKnApOw0KPj4gKw0KPj4gK3N0cnVjdCBsc2RjX2kyYyAqbHNk Y19jcmVhdGVfaTJjX2NoYW4oc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKmJhc2UsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dCBpbmRleCk7DQo+PiArDQo+PiArI2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2xzZGMvbHNkY19wbGFuZS5jIA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9s c2RjX3BsYW5lLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAw MDAwMDAuLmU2NzE0ZDA5ZmQ3YQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2xzZGMvbHNkY19wbGFuZS5jDQo+PiBAQCAtMCwwICsxLDQzMSBAQA0KPj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArDQo+PiArI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hl bHBlci5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmg+DQo+ PiArI2luY2x1ZGUgPGRybS9kcm1fZnJhbWVidWZmZXIuaD4NCj4+ICsjaW5jbHVkZSA8ZHJt L2RybV9wbGFuZV9oZWxwZXIuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCIN Cj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+PiArI2luY2x1ZGUgImxzZGNfdHRtLmgi DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHUzMiBsc2RjX3ByaW1hcnlfZm9ybWF0c1tdID0g ew0KPj4gK8KgwqDCoCBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPj4gK307DQo+PiArDQo+PiAr c3RhdGljIGNvbnN0IHUzMiBsc2RjX2N1cnNvcl9mb3JtYXRzW10gPSB7DQo+PiArwqDCoMKg IERSTV9GT1JNQVRfQVJHQjg4ODgsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qg dTY0IGxzZGNfZmJfZm9ybWF0X21vZGlmaWVyc1tdID0gew0KPj4gK8KgwqDCoCBEUk1fRk9S TUFUX01PRF9MSU5FQVIsDQo+PiArwqDCoMKgIERSTV9GT1JNQVRfTU9EX0lOVkFMSUQNCj4+ ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbHNkY19nZXRfZmJfb2Zmc2V0 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIGludCBwbGFuZSkNCj4+ICt7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBvZmZz ZXQgPSBmYi0+b2Zmc2V0c1twbGFuZV07DQo+PiArDQo+PiArwqDCoMKgIG9mZnNldCArPSBm Yi0+Zm9ybWF0LT5jcHBbcGxhbmVdICogKHN0YXRlLT5zcmNfeCA+PiAxNik7DQo+PiArwqDC oMKgIG9mZnNldCArPSBmYi0+cGl0Y2hlc1twbGFuZV0gKiAoc3RhdGUtPnNyY195ID4+IDE2 KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIG9mZnNldDsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBsc2RjX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0gDQo+PiBkcm1fYXRvbWljX2dldF9u ZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9j cnRjICpjcnRjID0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjOw0KPj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAo IWNydGMpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiArDQo+PiArwqDCoMKg IG5ld19jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUs IGNydGMpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfcGxhbmVfc3RhdGUobmV3X3BsYW5lX3N0YXRlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV3X2NydGNfc3RhdGUsDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fUExBTkVfTk9fU0NBTElORywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dHJ1ZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRydWUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfY2hl Y2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpu ZXdfcGxhbmVfc3RhdGUgPSANCj4+IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShz dGF0ZSwgcGxhbmUpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBuZXdf cGxhbmVfc3RhdGUtPmNydGM7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGU7DQo+PiArDQo+PiArwqDCoMKgIGlmICghY3J0YykNCj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+ICsNCj4+ICvCoMKgwqAgbmV3X2NydGNfc3RhdGUg PSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7DQo+PiArDQo+ PiArwqDCoMKgIHJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZShu ZXdfcGxhbmVfc3RhdGUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfY3J0Y19zdGF0ZSwNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9QTEFORV9OT19T Q0FMSU5HLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRydWUp Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBsc2RjX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp DQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHBsYW5lLT5k ZXY7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRl dik7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0 ZSA9IA0KPj4gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7 DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+ Y3J0YzsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBuZXdfcGxh bmVfc3RhdGUtPmZiOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRi byA9IHRvX3R0bV9ibyhmYi0+b2JqWzBdKTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IHBp cGUgPSBkcm1fY3J0Y19pbmRleChjcnRjKTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGZi X29mZnNldCA9IGxzZGNfZ2V0X2ZiX29mZnNldChmYiwgbmV3X3BsYW5lX3N0YXRlLCAwKTsN Cj4+ICvCoMKgwqAgdTY0IGJvX29mZnNldCA9IGxzZGNfYm9fZ3B1X29mZnNldCh0Ym8pOw0K Pj4gK8KgwqDCoCB1NjQgZmJfYWRkciA9IGxkZXYtPnZyYW1fYmFzZSArIGJvX29mZnNldCAr IGZiX29mZnNldDsNCj4+ICvCoMKgwqAgdTMyIHN0cmlkZSA9IGZiLT5waXRjaGVzWzBdOw0K Pj4gK8KgwqDCoCB1MzIgY2ZnOw0KPj4gK8KgwqDCoCB1MzIgbG8sIGhpOw0KPj4gKw0KPj4g K8KgwqDCoCBpZiAoSVNfRVJSKCh2b2lkICopYm9fb2Zmc2V0KSkgew0KPj4gK8KgwqDCoMKg wqDCoMKgIGRybV93YXJuKGRkZXYsICJibyBub3QgcGlubmVkLCBzaG91bGQgbm90IGhhcHBl blxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4gK8KgwqDCoCB9DQo+PiAr DQo+PiArwqDCoMKgIC8qIDQwLWJpdCB3aWR0aCBwaHlzaWNhbCBhZGRyZXNzIGJ1cyAqLw0K Pj4gK8KgwqDCoCBsbyA9IGZiX2FkZHIgJiAweEZGRkZGRkZGOw0KPj4gK8KgwqDCoCBoaSA9 IChmYl9hZGRyID4+IDMyKSAmIDB4RkY7DQo+PiArDQo+PiArwqDCoMKgIGNmZyA9IGxzZGNf Y3J0Y19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCBwaXBlKTsNCj4+ICvCoMKg wqAgaWYgKGNmZyAmIENGR19GQl9JTl9VU0lORykgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGRy bV9kYmcoZGRldiwgIkNSVEMtJXUoRkIxKSBpcyBpbiB1c2luZ1xuIiwgcGlwZSk7DQo+PiAr wqDCoMKgwqDCoMKgwqAgbHNkY19jcnRjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX0ZCMV9M T19BRERSX1JFRywgcGlwZSwgbG8pOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfY3J0Y193 cmVnMzIobGRldiwgTFNEQ19DUlRDMF9GQjFfSElfQUREUl9SRUcsIHBpcGUsIGhpKTsNCj4+ ICvCoMKgwqAgfSBlbHNlIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZGJnKGRkZXYsICJD UlRDLSV1KEZCMCkgaXMgaW4gdXNpbmdcbiIsIHBpcGUpOw0KPj4gK8KgwqDCoMKgwqDCoMKg IGxzZGNfY3J0Y193cmVnMzIobGRldiwgTFNEQ19DUlRDMF9GQjBfTE9fQUREUl9SRUcsIHBp cGUsIGxvKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX2NydGNfd3JlZzMyKGxkZXYsIExT RENfQ1JUQzBfRkIwX0hJX0FERFJfUkVHLCBwaXBlLCBoaSk7DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiQ1JUQy0ldSBzY2Fub3V0IGZyb20gMHgl bGx4XG4iLCBwaXBlLCBmYl9hZGRyKTsNCj4+ICsNCj4+ICvCoMKgwqAgbHNkY19jcnRjX3dy ZWczMihsZGV2LCBMU0RDX0NSVEMwX1NUUklERV9SRUcsIHBpcGUsIHN0cmlkZSk7DQo+PiAr DQo+PiArwqDCoMKgIGNmZyAmPSB+Q0ZHX1BJWF9GTVRfTUFTSzsNCj4+ICvCoMKgwqAgY2Zn IHw9IExTRENfUEZfWFJHQjg4ODg7DQo+PiArDQo+PiArwqDCoMKgIGxzZGNfY3J0Y193cmVn MzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCBwaXBlLCBjZmcpOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBsc2RjX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+PiArew0KPj4g K8KgwqDCoCAvKiBEbyBub3RoaW5nLCBqdXN0IHByZXZlbnQgY2FsbCBpbnRvIGF0b21pY191 cGRhdGUoKS4NCj4+ICvCoMKgwqDCoCAqIFdyaXRpbmcgdGhlIGZvcm1hdCBhcyBMU0RDX1BG X05PTkUgY2FuIGRpc2FibGUgdGhlIHByaW1hcnksDQo+PiArwqDCoMKgwqAgKiBCdXQgaXQg c2VlbXMgbm90IG5lY2Vzc2FyeS4uLg0KPj4gK8KgwqDCoMKgICovDQo+PiArwqDCoMKgIGRy bV9kYmcocGxhbmUtPmRldiwgIiVzIGRpc2FibGVkXG4iLCBwbGFuZS0+bmFtZSk7DQo+PiAr fQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfdHRtX2NsZWFudXBfZmIoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbnApDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iajsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBzdGF0ZS0+ZmI7DQo+PiArDQo+PiArwqDCoMKgIHdoaWxlIChucCkgew0KPj4g K8KgwqDCoMKgwqDCoMKgIC0tbnA7DQo+PiArwqDCoMKgwqDCoMKgwqAgb2JqID0gZmItPm9i altucF07DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFvYmopIHsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRybV9lcnIocGxhbmUtPmRldiwgIiVzOiBubyBvYmpcbiIsIHBsYW5l LT5uYW1lKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4gK8Kg wqDCoMKgwqDCoMKgIH0NCj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX2JvX3VucGluKG9iaik7 DQo+PiArwqDCoMKgIH0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsc2RjX3BsYW5l X3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRl KQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBuZXdf c3RhdGUtPmZiOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibzsN Cj4+ICvCoMKgwqAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7DQo+PiArwqDCoMKgIHVu c2lnbmVkIGludCBpOw0KPj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBp ZiAoIWZiKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gKw0KPj4gK8KgwqDC oCBmb3IgKGkgPSAwOyBpIDwgZmItPmZvcm1hdC0+bnVtX3BsYW5lczsgKytpKSB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgb2JqID0gZmItPm9ialtpXTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBp ZiAoIW9iaikgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVJTlZBTDsN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX3JldDsNCj4+ICvCoMKgwqDC oMKgwqDCoCB9DQo+PiArwqDCoMKgwqDCoMKgwqAgdGJvID0gdG9fdHRtX2JvKG9iaik7DQo+ PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgbHNkY19ib19zZXRfcGxhY2VtZW50KHRibywgTFNE Q19HRU1fRE9NQUlOX1ZSQU0sIA0KPj4gVFRNX1BMX0ZMQUdfQ09OVElHVU9VUyk7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gbHNkY19ib19waW4ob2JqKTsNCj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBl cnJfcmV0Ow0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IGRybV9nZW1f cGxhbmVfaGVscGVyX3ByZXBhcmVfZmIocGxhbmUsIG5ld19zdGF0ZSk7DQo+PiArwqDCoMKg IGlmIChyZXQpDQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfcmV0Ow0KPj4gKw0KPj4g K8KgwqDCoCByZXR1cm4gMDsNCj4+ICsNCj4+ICtlcnJfcmV0Og0KPj4gK8KgwqDCoCBsc2Rj X3R0bV9jbGVhbnVwX2ZiKHBsYW5lLCBuZXdfc3RhdGUsIGkpOw0KPj4gK8KgwqDCoCByZXR1 cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBsc2RjX3BsYW5lX2NsZWFu dXBfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpDQo+ PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG9sZF9zdGF0 ZS0+ZmI7DQo+PiArDQo+PiArwqDCoMKgIGlmICghZmIpDQo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX3R0bV9jbGVhbnVwX2ZiKHBsYW5lLCBv bGRfc3RhdGUsIGZiLT5mb3JtYXQtPm51bV9wbGFuZXMpOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgbHNkY19wcmltYXJ5 X3BsYW5lX2hlbHBlcnMgDQo+PiA9IHsNCj4+ICvCoMKgwqAgLnByZXBhcmVfZmIgPSBsc2Rj X3BsYW5lX3ByZXBhcmVfZmIsDQo+PiArwqDCoMKgIC5jbGVhbnVwX2ZiID0gbHNkY19wbGFu ZV9jbGVhbnVwX2ZiLA0KPj4gK8KgwqDCoCAuYXRvbWljX2NoZWNrID0gbHNkY19jaGVja19w cmltYXJ5X3BsYW5lLA0KPj4gK8KgwqDCoCAuYXRvbWljX3VwZGF0ZSA9IGxzZGNfdXBkYXRl X3ByaW1hcnlfcGxhbmUsDQo+PiArwqDCoMKgIC5hdG9taWNfZGlzYWJsZSA9IGxzZGNfZGlz YWJsZV9wcmltYXJ5X3BsYW5lLA0KPj4gK307DQo+PiArDQo+PiArLyoNCj4+ICsgKiBVcGRh dGUgbG9jYXRpb24sIGZvcm1hdCwgZW5hYmxlIGFuZCBkaXNhYmxlIHN0YXRlIG9mIHRoZSBj dXJzb3IsDQo+PiArICogRm9yIHRob3NlIHdobyBoYXZlIHR3byBoYXJkd2FyZSBjdXJzb3Is IGN1cnNvciAwIGlzIGF0dGFjaCBpdCB0byANCj4+IENSVEMtMCwNCj4+ICsgKiBjdXJzb3Ig MSBpcyBhdHRhY2hlZCB0byBDUlRDLTEuIENvbXBvc2l0aW5nIHRoZSBwcmltYXJ5IGFuZCBj dXJzb3IgDQo+PiBwbGFuZQ0KPj4gKyAqIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSBieSBoYXJk d2FyZSwgdGhlIGN1cnNvciBpcyBhbHdheSBvbiB0aGUgdG9wIA0KPj4gb2YgdGhlDQo+PiAr ICogcHJpbWFyeSwgdGhlcmUgaXMgbm8gZGVwdGggcHJvcGVydHkgY2FuIGJlIHNldCwgcHJl dHR5IGNvbnZlbmllbnQuDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgbHM3YTEwMDBfYXRv bWljX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpk ZGV2ID0gcGxhbmUtPmRldjsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2 ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBl ICpkaXNwaXBlID0gY3Vyc29yX3RvX2Rpc3BsYXlfcGlwZShwbGFuZSk7DQo+PiArwqDCoMKg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9IA0KPj4gZHJtX2F0 b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7DQo+PiArwqDCoMKgIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmN1cnNvcl9mYiA9IG5ld19wbGFuZV9zdGF0ZS0+ZmI7 DQo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvID0gdG9fdHRtX2Jv KGN1cnNvcl9mYi0+b2JqWzBdKTsNCj4+ICvCoMKgwqAgdTY0IGFkZHIgPSBsZGV2LT52cmFt X2Jhc2UgKyBsc2RjX2JvX2dwdV9vZmZzZXQodGJvKTsNCj4+ICvCoMKgwqAgdTMyIGNmZyA9 IENVUlNPUl9GT1JNQVRfQVJHQjg4ODg7DQo+PiArwqDCoMKgIGludCB4ID0gbmV3X3BsYW5l X3N0YXRlLT5jcnRjX3g7DQo+PiArwqDCoMKgIGludCB5ID0gbmV3X3BsYW5lX3N0YXRlLT5j cnRjX3k7DQo+PiArDQo+PiArwqDCoMKgIGlmICh4IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDC oCB4ID0gMDsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKHkgPCAwKQ0KPj4gK8KgwqDCoMKgwqDC oMKgIHkgPSAwOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NV UlNPUjBfUE9TSVRJT05fUkVHLCAoeSA8PCAxNikgfCB4KTsNCj4+ICsNCj4+ICvCoMKgwqAg bHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IwX0FERFJfSElfUkVHLCAoYWRkciA+PiAz MikgJiAweEZGKTsNCj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1Iw X0FERFJfTE9fUkVHLCBhZGRyKTsNCj4+ICsNCj4+ICvCoMKgwqAgLyoNCj4+ICvCoMKgwqDC oCAqIElmIGJpdCA0KENVUlNPUl9MT0NBVElPTikgb2YgTFNEQ19DVVJTT1IwX0NGR19SRUcg aXMgMSwgY3Vyc29yIA0KPj4gd2lsbA0KPj4gK8KgwqDCoMKgICogYmUgbG9jYXRlIGF0IENS VEMtMSwgaWYgYml0IDQgb2YgTFNEQ19DVVJTT1IwX0NGR19SRUcgaXMgMCwgDQo+PiBjdXJz b3INCj4+ICvCoMKgwqDCoCAqIHdpbGwgYmUgbG9jYXRlIGF0IENSVEMtMC4gRm9yIHRoZSBv bGQgZGV2aWNlIHdlIG1hZGUgdGhlIA0KPj4gc2luZ2xlIGh3DQo+PiArwqDCoMKgwqAgKiBj dXJzb3Igc2hhcmVkIGJ5IHR3byBDUlRDLiBTd2l0Y2ggdG8gc29mdHdhcmUgY3Vyc29yIGlz IGFsc28gb2suDQo+PiArwqDCoMKgwqAgKi8NCj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRl diwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIGRpc3BpcGUtPmluZGV4ID8gY2ZnIHwgDQo+PiBD VVJTT1JfTE9DQVRJT04gOiBjZmcpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBs czdhMTAwMF9hdG9taWNfZGlzYWJsZV9jdXJzb3Ioc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNk Y19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIgY2ZnOw0K Pj4gKw0KPj4gK8KgwqDCoCBjZmcgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NVUlNPUjBf Q0ZHX1JFRyk7DQo+PiArwqDCoMKgIC8qIHdyaXRlIDAgdG8gY3Vyc29yIGZvcm1hdCBiaXRz LCBpdCB3aWxsIGJlIGludmlzaWFibGUgKi8NCj4+ICvCoMKgwqAgY2ZnICY9IH5DVVJTT1Jf Rk9STUFUX01BU0s7DQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VSU09S MF9DRkdfUkVHLCBjZmcpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgDQo+PiBsczdhMTAwMF9wbGFuZV9oZWxwZXJfY3Vy c29ycyA9IHsNCj4+ICvCoMKgwqAgLnByZXBhcmVfZmIgPSBsc2RjX3BsYW5lX3ByZXBhcmVf ZmIsDQo+PiArwqDCoMKgIC5jbGVhbnVwX2ZiID0gbHNkY19wbGFuZV9jbGVhbnVwX2ZiLA0K Pj4gK8KgwqDCoCAuYXRvbWljX2NoZWNrID0gbHNkY19jaGVja19jdXJzb3JfcGxhbmUsDQo+ PiArwqDCoMKgIC5hdG9taWNfdXBkYXRlID0gbHM3YTEwMDBfYXRvbWljX3VwZGF0ZV9jdXJz b3IsDQo+PiArwqDCoMKgIC5hdG9taWNfZGlzYWJsZSA9IGxzN2ExMDAwX2F0b21pY19kaXNh YmxlX2N1cnNvciwNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qIHVwZGF0ZSB0aGUgZm9ybWF0LCBz aXplIGFuZCBsb2NhdGlvbiBvZiB0aGUgY3Vyc29yICovDQo+PiArc3RhdGljIHZvaWQgbHNk Y19hdG9taWNfdXBkYXRlX2N1cnNvcjAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZp Y2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSANCj4+IGRybV9hdG9taWNfZ2V0X25ld19wbGFu ZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpjdXJzb3JfZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmZiOw0KPj4gK8KgwqDCoCBzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibyA9IHRvX3R0bV9ibyhjdXJzb3JfZmItPm9ialsw XSk7DQo+PiArwqDCoMKgIHU2NCBhZGRyID0gbGRldi0+dnJhbV9iYXNlICsgbHNkY19ib19n cHVfb2Zmc2V0KHRibyk7DQo+PiArwqDCoMKgIHUzMiBjZmcgPSBDVVJTT1JfRk9STUFUX0FS R0I4ODg4IHwgQ1VSU09SX1NJWkVfNjRYNjQ7DQo+PiArwqDCoMKgIGludCB4ID0gbmV3X3Bs YW5lX3N0YXRlLT5jcnRjX3g7DQo+PiArwqDCoMKgIGludCB5ID0gbmV3X3BsYW5lX3N0YXRl LT5jcnRjX3k7DQo+PiArDQo+PiArwqDCoMKgIGlmICh4IDwgMCkNCj4+ICvCoMKgwqDCoMKg wqDCoCB4ID0gMDsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKHkgPCAwKQ0KPj4gK8KgwqDCoMKg wqDCoMKgIHkgPSAwOw0KPj4gKw0KPj4gK8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RD X0NVUlNPUjBfUE9TSVRJT05fUkVHLCAoeSA8PCAxNikgfCB4KTsNCj4+ICsNCj4+ICvCoMKg wqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IwX0FERFJfSElfUkVHLCAoYWRkciA+ PiAzMikgJiAweEZGKTsNCj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJT T1IwX0FERFJfTE9fUkVHLCBhZGRyKTsNCj4+ICsNCj4+ICvCoMKgwqAgbHNkY193cmVnMzIo bGRldiwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIGNmZyAmIH5DVVJTT1JfTE9DQVRJT04pOw0K Pj4gK30NCj4+ICsNCj4+ICsvKiB1cGRhdGUgdGhlIGZvcm1hdCwgc2l6ZSBhbmQgbG9jYXRp b24gb2YgdGhlIGN1cnNvciAqLw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfYXRvbWljX3VwZGF0 ZV9jdXJzb3IxKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g cGxhbmUtPmRldjsNCj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9f bHNkYyhkZGV2KTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3Bs YW5lX3N0YXRlID0gDQo+PiBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUs IHBsYW5lKTsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqY3Vyc29yX2Zi ID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsNCj4+ICvCoMKgwqAgc3RydWN0IHR0bV9idWZmZXJf b2JqZWN0ICp0Ym8gPSB0b190dG1fYm8oY3Vyc29yX2ZiLT5vYmpbMF0pOw0KPj4gK8KgwqDC oCB1NjQgYWRkciA9IGxkZXYtPnZyYW1fYmFzZSArIGxzZGNfYm9fZ3B1X29mZnNldCh0Ym8p Ow0KPj4gK8KgwqDCoCB1MzIgY2ZnID0gQ1VSU09SX0ZPUk1BVF9BUkdCODg4OCB8IENVUlNP Ul9TSVpFXzY0WDY0Ow0KPj4gK8KgwqDCoCBpbnQgeCA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0 Y194Ow0KPj4gK8KgwqDCoCBpbnQgeSA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y195Ow0KPj4g Kw0KPj4gK8KgwqDCoCBpZiAoeCA8IDApDQo+PiArwqDCoMKgwqDCoMKgwqAgeCA9IDA7DQo+ PiArDQo+PiArwqDCoMKgIGlmICh5IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoCB5ID0gMDsN Cj4+ICsNCj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IxX1BPU0lU SU9OX1JFRywgKHkgPDwgMTYpIHwgeCk7DQo+PiArDQo+PiArwqDCoMKgIGxzZGNfd3JlZzMy KGxkZXYsIExTRENfQ1VSU09SMV9BRERSX0hJX1JFRywgKGFkZHIgPj4gMzIpICYgMHhGRik7 DQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VSU09SMV9BRERSX0xPX1JF RywgYWRkcik7DQo+PiArDQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VS U09SMV9DRkdfUkVHLCBjZmcgfCBDVVJTT1JfTE9DQVRJT04pOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgdm9pZCBsc2RjX2F0b21pY19kaXNhYmxlX2N1cnNvcjAoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAg c3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIg Y2ZnOw0KPj4gKw0KPj4gK8KgwqDCoCBjZmcgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NV UlNPUjBfQ0ZHX1JFRyk7DQo+PiArwqDCoMKgIC8qIHdyaXRlIDAgdG8gY3Vyc29yIGZvcm1h dCBiaXRzLCBpdCB3aWxsIGJlIGludmlzaWFibGUgKi8NCj4+ICvCoMKgwqAgY2ZnICY9IH5D VVJTT1JfRk9STUFUX01BU0s7DQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENf Q1VSU09SMF9DRkdfUkVHLCBjZmcpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBs c2RjX2F0b21pY19kaXNhYmxlX2N1cnNvcjEoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZp Y2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2Ug KmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCB1MzIgY2ZnOw0KPj4gKw0KPj4g K8KgwqDCoCBjZmcgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NVUlNPUjFfQ0ZHX1JFRyk7 DQo+PiArwqDCoMKgIC8qIHdyaXRlIDAgdG8gY3Vyc29yIGZvcm1hdCBiaXRzLCBpdCB3aWxs IGJlIGludmlzaWFibGUgKi8NCj4+ICvCoMKgwqAgY2ZnICY9IH5DVVJTT1JfRk9STUFUX01B U0s7DQo+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VSU09SMV9DRkdfUkVH LCBjZmcpOw0KPj4gK30NCj4+ICsNCj4+ICsvKiBmb3IgbHM3YTIwMDAgKi8NCj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgDQo+PiBsc2RjX3BsYW5l X2hlbHBlcl9jdXJzb3JzWzJdID0gew0KPj4gK8KgwqDCoCB7DQo+PiArwqDCoMKgwqDCoMKg wqAgLnByZXBhcmVfZmIgPSBsc2RjX3BsYW5lX3ByZXBhcmVfZmIsDQo+PiArwqDCoMKgwqDC oMKgwqAgLmNsZWFudXBfZmIgPSBsc2RjX3BsYW5lX2NsZWFudXBfZmIsDQo+PiArwqDCoMKg wqDCoMKgwqAgLmF0b21pY19jaGVjayA9IGxzZGNfY2hlY2tfY3Vyc29yX3BsYW5lLA0KPj4g K8KgwqDCoMKgwqDCoMKgIC5hdG9taWNfdXBkYXRlID0gbHNkY19hdG9taWNfdXBkYXRlX2N1 cnNvcjAsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmF0b21pY19kaXNhYmxlID0gbHNkY19hdG9t aWNfZGlzYWJsZV9jdXJzb3IwLA0KPj4gK8KgwqDCoCB9LA0KPj4gK8KgwqDCoCB7DQo+PiAr wqDCoMKgwqDCoMKgwqAgLnByZXBhcmVfZmIgPSBsc2RjX3BsYW5lX3ByZXBhcmVfZmIsDQo+ PiArwqDCoMKgwqDCoMKgwqAgLmNsZWFudXBfZmIgPSBsc2RjX3BsYW5lX2NsZWFudXBfZmIs DQo+PiArwqDCoMKgwqDCoMKgwqAgLmF0b21pY19jaGVjayA9IGxzZGNfY2hlY2tfY3Vyc29y X3BsYW5lLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5hdG9taWNfdXBkYXRlID0gbHNkY19hdG9t aWNfdXBkYXRlX2N1cnNvcjEsDQo+PiArwqDCoMKgwqDCoMKgwqAgLmF0b21pY19kaXNhYmxl ID0gbHNkY19hdG9taWNfZGlzYWJsZV9jdXJzb3IxLA0KPj4gK8KgwqDCoCB9DQo+PiArfTsN Cj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBsc2RjX3Bs YW5lX2Z1bmNzID0gew0KPj4gK8KgwqDCoCAudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19o ZWxwZXJfdXBkYXRlX3BsYW5lLA0KPj4gK8KgwqDCoCAuZGlzYWJsZV9wbGFuZSA9IGRybV9h dG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsDQo+PiArwqDCoMKgIC5kZXN0cm95ID0gZHJt X3BsYW5lX2NsZWFudXAsDQo+PiArwqDCoMKgIC5yZXNldCA9IGRybV9hdG9taWNfaGVscGVy X3BsYW5lX3Jlc2V0LA0KPj4gK8KgwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwNCj4+ICvCoMKgwqAgLmF0 b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9z dGF0ZSwNCj4+ICt9Ow0KPj4gKw0KPj4gK2ludCBsc2RjX3ByaW1hcnlfcGxhbmVfaW5pdChz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+PiArew0KPj4gK8KgwqDCoCBp bnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2lu aXQoJmxkZXYtPmJhc2UsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcGxhbmUsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMSA8PCBpbmRleCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbHNkY19wbGFuZV9mdW5jcywNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX3ByaW1hcnlfZm9y bWF0cywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBBUlJBWV9TSVpFKGxzZGNfcHJpbWFyeV9mb3JtYXRzKSwNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX2ZiX2Zvcm1hdF9tb2RpZmll cnMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAicHJpbWFyeS0ldSIsIGluZGV4KTsNCj4+ICvCoMKgwqAg aWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8Kg wqDCoCBkcm1fcGxhbmVfaGVscGVyX2FkZChwbGFuZSwgJmxzZGNfcHJpbWFyeV9wbGFuZV9o ZWxwZXJzKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4g K2ludCBsc2RjX2N1cnNvcl9wbGFuZV9pbml0KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGlu ZGV4KQ0KPj4gK3sNCj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3Ag PSBsZGV2LT5kZXNjcDsNCj4+ICvCoMKgwqAgaW50IHJldDsNCj4+ICsNCj4+ICvCoMKgwqAg cmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZsZGV2LT5iYXNlLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBsYW5lLA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEgPDwgaW5kZXgs DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmxz ZGNfcGxhbmVfZnVuY3MsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbHNkY19jdXJzb3JfZm9ybWF0cywNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUlJBWV9TSVpFKGxzZGNfY3Vyc29yX2Zv cm1hdHMpLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGxzZGNfZmJfZm9ybWF0X21vZGlmaWVycywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fUExBTkVfVFlQRV9DVVJTT1IsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImN1cnNvci0l dSIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW5kZXgpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biByZXQ7DQo+PiArDQo+PiArwqDCoMKgIC8qIFRoZSBodyBjdXJzb3IgYmVjb21lIHN0YW5k YXJkIGZyb20gbHM3YTIwMDAoaW5jbHVkaW5nIA0KPj4gbHMyazIwMDApICovDQo+PiArwqDC oMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0EyMDAwKQ0KPj4gK8KgwqDCoMKgwqDC oMKgIGRybV9wbGFuZV9oZWxwZXJfYWRkKHBsYW5lLCAmbHNkY19wbGFuZV9oZWxwZXJfY3Vy c29yc1tpbmRleF0pOw0KPj4gK8KgwqDCoCBlbHNlDQo+PiArwqDCoMKgwqDCoMKgwqAgZHJt X3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsICZsczdhMTAwMF9wbGFuZV9oZWxwZXJfY3Vyc29y cyk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3BsbC5jIA0KPj4gYi9kcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX3BsbC5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5lYWEwNmZhOTA3ZjINCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxsLmMNCj4+IEBAIC0wLDAgKzEsMzM2IEBA DQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ICsNCj4+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSAibHNkY19kcnYu aCINCj4+ICsNCj4+ICsvKg0KPj4gKyAqIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHBpeGVsIFBM TCByZWdpc3RlciBpcyBldm9sdmVkIHdpdGggdGltZXMuDQo+PiArICogQWxsIGxvb25nc29u J3MgY3B1IGlzIGxpdHRsZSBlbmRpYW4uDQo+PiArICovDQo+PiArDQo+PiArLyogdTY0ICov DQo+PiArc3RydWN0IGxzN2ExMDAwX3BpeHBsbF9iaXRtYXAgew0KPj4gK8KgwqDCoCAvKiBC eXRlIDAgfiBCeXRlIDMgKi8NCj4+ICvCoMKgwqAgdW5zaWduZWQgZGl2X291dMKgwqDCoMKg wqAgOiA3O8KgwqAgLyrCoCAwIDogNsKgwqDCoMKgIG91dHB1dCBjbG9jayBkaXZpZGVywqAg Ki8NCj4+ICvCoMKgwqAgdW5zaWduZWQgX18xwqDCoMKgwqDCoMKgwqDCoMKgIDogMTQ7wqAg LyrCoCA3IDogMjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBsb29wY8KgwqDCoMKgwqDCoMKgIDog OTvCoMKgIC8qIDIxIDogMjnCoMKgwqAgY2xvY2sgbXVsdGlwbGllcsKgwqDCoMKgwqAgKi8N Cj4+ICvCoMKgwqAgdW5zaWduZWQgX18ywqDCoMKgwqDCoMKgwqDCoMKgIDogMjvCoMKgIC8q IDMwIDogMzHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBCeXRlIDQgfiBCeXRlIDcgKi8NCj4+ICvC oMKgwqAgdW5zaWduZWQgZGl2X3JlZsKgwqDCoMKgwqAgOiA3O8KgwqAgLyrCoCAwIDogNsKg wqDCoMKgIGlucHV0IGNsb2NrIGRpdmlkZXLCoMKgICovDQo+PiArwqDCoMKgIHVuc2lnbmVk IGxvY2tlZMKgwqDCoMKgwqDCoCA6IDE7wqDCoCAvKsKgIDfCoMKgwqDCoMKgwqDCoMKgIFBM TCBsb2NrZWQgc3RhdHVzwqDCoMKgwqAgKi8NCj4+ICvCoMKgwqAgdW5zaWduZWQgc2VsX291 dMKgwqDCoMKgwqAgOiAxO8KgwqAgLyrCoCA4wqDCoMKgwqDCoMKgwqDCoCBvdXRwdXQgY2xr IHNlbGVjdG9ywqDCoCAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBfXzPCoMKgwqDCoMKgwqDC oMKgwqAgOiAyO8KgwqAgLyrCoCA5IDogMTDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBzZXRfcGFy YW3CoMKgwqAgOiAxO8KgwqAgLyrCoCAxMcKgwqDCoMKgwqDCoMKgIHRyaWdnZXIgdGhlIHVw ZGF0ZcKgwqDCoCAqLw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBieXBhc3PCoMKgwqDCoMKgwqAg OiAxO8KgwqAgLyrCoCAxMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ICvCoMKgwqAgdW5zaWduZWQgcG93ZXJkb3du wqDCoMKgIDogMTvCoMKgIC8qwqAgMTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+PiArwqDCoMKgIHVuc2lnbmVkIF9f NMKgwqDCoMKgwqDCoMKgwqDCoCA6IDE4O8KgIC8qwqAgMTQgOiAzMcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gK307DQo+PiArDQo+ PiArdW5pb24gbHNkY19waXhwbGxfYml0bWFwIHsNCj4+ICvCoMKgwqAgc3RydWN0IGxzN2Ex MDAwX3BpeHBsbF9iaXRtYXAgbHM3YTEwMDA7DQo+PiArwqDCoMKgIHUzMiBkd29yZFs0XTsN Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBwaXhjbGtfdG9fcGxsX3Bhcm0gew0KPj4gK8Kg wqDCoCAvKiBrSHogKi8NCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGNsb2NrOw0KPj4gKw0K Pj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCB3aWR0aDsNCj4+ICvCoMKgwqAgdW5zaWduZWQg c2hvcnQgaGVpZ2h0Ow0KPj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCB2cmVmcmVzaDsNCj4+ ICsNCj4+ICvCoMKgwqAgLyogU3RvcmVzIHBhcmFtZXRlcnMgZm9yIHByb2dyYW1taW5nIHRo ZSBIYXJkd2FyZSBQTExzICovDQo+PiArwqDCoMKgIHVuc2lnbmVkIHNob3J0IGRpdl9vdXQ7 DQo+PiArwqDCoMKgIHVuc2lnbmVkIHNob3J0IGxvb3BjOw0KPj4gK8KgwqDCoCB1bnNpZ25l ZCBzaG9ydCBkaXZfcmVmOw0KPj4gK307DQo+PiArDQo+PiArLyoNCj4+ICsgKiBQaXhlbCBj bG9jayB0byBQTEwgcGFyYW1ldGVycyB0cmFuc2xhdGlvbiB0YWJsZS4NCj4+ICsgKiBTbWFs bCBzdGF0aWMgY2FjaGVkIHZhbHVlIHRvIHNwZWVkIHVwIFBMTCBwYXJhbWV0ZXJzIGNhbGN1 bGF0aW9uLg0KPj4gKyAqLw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGl4Y2xrX3RvX3Bs bF9wYXJtIHBsbF9wYXJhbV90YWJsZVtdID0gew0KPj4gK8KgwqDCoCB7MTQ4NTAwLCAxOTIw LCAxMDgwLCA2MCzCoCAxMSwgNDkswqAgM30swqDCoCAvKiAxOTIweDEwODBANjBIeiAqLw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyog MTkyMHgxMDgwQDUwSHogKi8NCj4+ICvCoMKgwqAgezE3NDUwMCwgMTkyMCwgMTA4MCwgNzUs wqAgMTcsIDg5LMKgIDN9LMKgwqAgLyogMTkyMHgxMDgwQDc1SHogKi8NCj4+ICvCoMKgwqAg ezE4MTI1MCwgMjU2MCwgMTA4MCwgNzUswqAgOCwgNTgswqAgNH0swqDCoCAvKiAyNTYweDEw ODBANzVIeiAqLw0KPj4gK8KgwqDCoCB7Mjk3MDAwLCAyNTYwLCAxMDgwLCA2MCzCoCA4LCA5 NSzCoCA0fSzCoMKgIC8qIDM4NDB4MjE2MEAzMEh6ICovDQo+PiArwqDCoMKgIHszMDE5OTIs IDE5MjAsIDEwODAsIDEwMCwgMTAsIDE1MSwgNX0sDQo+PiArwqDCoMKgIHsxNDYyNTAsIDE2 ODAsIDEwNTAsIDYwLMKgIDE2LCAxMTcsIDV9LMKgwqAgLyogMTY4MHgxMDUwQDYwSHogKi8N Cj4+ICvCoMKgwqAgezEzNTAwMCwgMTI4MCwgMTAyNCwgNzUswqAgMTAsIDU0LMKgIDR9LMKg wqAgLyogMTI4MHgxMDI0QDc1SHogKi8NCj4+ICvCoMKgwqAgezExOTAwMCwgMTY4MCwgMTA1 MCwgNjAswqAgMjAsIDExOSwgNX0swqDCoCAvKiAxNjgweDEwNTBANjBIeiAqLw0KPj4gK8Kg wqDCoCB7MTA4MDAwLCAxNjAwLCA5MDAswqAgNjAswqAgMTUsIDgxLMKgIDV9LMKgwqAgLyog MTYwMHg5MDBANjBIesKgICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiAxMjgweDEwMjRANjBIeiAqLw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogMTI4MHg5NjBANjBIeiAq Lw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyogMTE1Mng4NjRANzVIeiAqLw0KPj4gKw0KPj4gK8KgwqDCoCB7MTA2NTAwLCAxNDQwLCA5 MDAswqAgNjAswqAgMTksIDgxLMKgIDR9LMKgwqAgLyogMTQ0MHg5MDBANjBIeiAqLw0KPj4g K8KgwqDCoCB7ODg3NTAswqAgMTQ0MCwgOTAwLMKgIDYwLMKgIDE2LCA3MSzCoCA1fSzCoMKg IC8qIDE0NDB4OTAwQDYwSHogKi8NCj4+ICvCoMKgwqAgezgzNTAwLMKgIDEyODAsIDgwMCzC oCA2MCzCoCAxNywgNzEswqAgNX0swqDCoCAvKiAxMjgweDgwMEA2MEh6ICovDQo+PiArwqDC oMKgIHs3MTAwMCzCoCAxMjgwLCA4MDAswqAgNjAswqAgMjAsIDcxLMKgIDV9LMKgwqAgLyog MTI4MHg4MDBANjBIeiAqLw0KPj4gKw0KPj4gK8KgwqDCoCB7NzQyNTAswqAgMTI4MCwgNzIw LMKgIDYwLMKgIDIyLCA0OSzCoCAzfSzCoMKgIC8qIDEyODB4NzIwQDYwSHogKi8NCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDEyODB4 NzIwQDUwSHogKi8NCj4+ICsNCj4+ICvCoMKgwqAgezc4NzUwLMKgIDEwMjQsIDc2OCzCoCA3 NSzCoCAxNiwgNjMswqAgNX0swqDCoCAvKiAxMDI0eDc2OEA3NUh6ICovDQo+PiArwqDCoMKg IHs3NTAwMCzCoCAxMDI0LCA3NjgswqAgNzAswqAgMjksIDg3LMKgIDR9LMKgwqAgLyogMTAy NHg3NjhANzBIeiAqLw0KPj4gK8KgwqDCoCB7NjUwMDAswqAgMTAyNCwgNzY4LMKgIDYwLMKg IDIwLCAzOSzCoCAzfSzCoMKgIC8qIDEwMjR4NzY4QDYwSHogKi8NCj4+ICsNCj4+ICvCoMKg wqAgezUxMjAwLMKgIDEwMjQsIDYwMCzCoCA2MCzCoCAyNSwgNjQswqAgNX0swqDCoCAvKiAx MDI0eDYwMEA2MEh6ICovDQo+PiArDQo+PiArwqDCoMKgIHs1NzI4NCzCoCA4MzIswqAgNjI0 LMKgIDc1LMKgIDI0LCA1NSzCoCA0fSzCoMKgIC8qIDgzMng2MjRANzVIeiAqLw0KPj4gK8Kg wqDCoCB7NDk1MDAswqAgODAwLMKgIDYwMCzCoCA3NSzCoCA0MCwgOTkswqAgNX0swqDCoCAv KiA4MDB4NjAwQDc1SHogKi8NCj4+ICvCoMKgwqAgezUwMDAwLMKgIDgwMCzCoCA2MDAswqAg NzIswqAgNDQsIDg4LMKgIDR9LMKgwqAgLyogODAweDYwMEA3Mkh6ICovDQo+PiArwqDCoMKg IHs0MDAwMCzCoCA4MDAswqAgNjAwLMKgIDYwLMKgIDMwLCAzNizCoCAzfSzCoMKgIC8qIDgw MHg2MDBANjBIeiAqLw0KPj4gK8KgwqDCoCB7MzYwMDAswqAgODAwLMKgIDYwMCzCoCA1NizC oCA1MCwgNzIswqAgNH0swqDCoCAvKiA4MDB4NjAwQDU2SHogKi8NCj4+ICvCoMKgwqAgezMx NTAwLMKgIDY0MCzCoCA0ODAswqAgNzUswqAgNDAsIDYzLMKgIDV9LMKgwqAgLyogNjQweDQ4 MEA3NUh6ICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiA2NDB4NDgwQDczSHogKi8NCj4+ICsNCj4+ICvCoMKgwqAgezMwMjQwLMKg IDY0MCzCoCA0ODAswqAgNjcswqAgNjIsIDc1LMKgIDR9LMKgwqAgLyogNjQweDQ4MEA2N0h6 ICovDQo+PiArwqDCoMKgIHsyNzAwMCzCoCA3MjAswqAgNTc2LMKgIDUwLMKgIDUwLCA1NCzC oCA0fSzCoMKgIC8qIDcyMHg1NzZANjBIeiAqLw0KPj4gK8KgwqDCoCB7MjUxNzUswqAgNjQw LMKgIDQ4MCzCoCA2MCzCoCA4NSwgMTA3LCA1fSzCoMKgIC8qIDY0MHg0ODBANjBIeiAqLw0K Pj4gK8KgwqDCoCB7MjUyMDAswqAgNjQwLMKgIDQ4MCzCoCA2MCzCoCA1MCwgNjMswqAgNX0s wqDCoCAvKiA2NDB4NDgwQDYwSHogKi8NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDcyMHg0ODBANjBIeiAqLw0KPj4gK307DQo+PiAr DQo+PiArLyoNCj4+ICsgKiBsc2RjX3BpeHBsbF9zZXR1cCAtIGlvcmVtYXAgdGhlIGRldmlj ZSBkZXBlbmRlbnQgUExMIHJlZ2lzdGVycw0KPj4gKyAqDQo+PiArICogQHRoaXM6IHBvaW50 IHRvIHRoZSBvYmplY3Qgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbQ0KPj4g KyAqLw0KPj4gK3N0YXRpYyBpbnQgbHNkY19waXhwbGxfc2V0dXAoc3RydWN0IGxzZGNfcGxs ICogY29uc3QgdGhpcykNCj4+ICt7DQo+PiArwqDCoMKgIHRoaXMtPm1taW8gPSBpb3JlbWFw KHRoaXMtPnJlZ19iYXNlLCB0aGlzLT5yZWdfc2l6ZSk7DQo+PiArDQo+PiArwqDCoMKgIHJl dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICsvKg0KPj4gKyAqIEZpbmQgYSBzZXQgb2YgcGxs IHBhcmFtZXRlcnMgZnJvbSBhIHN0YXRpYyBsb2NhbCB0YWJsZSB3aGljaCBhdm9pZA0KPj4g KyAqIGNvbXB1dGluZyB0aGUgcGxsIHBhcmFtZXRlciBlYWNodGltZSBhIG1vZGVzZXQgaXMg dHJpZ2dlcmVkLg0KPj4gKyAqDQo+PiArICogQHRoaXM6IHBvaW50IHRvIHRoZSBvYmplY3Qg d2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbQ0KPj4gKyAqIEBjbG9jazogdGhl IGRlc2lyZWQgb3V0cHV0IHBpeGVsIGNsb2NrLCB0aGUgdW5pdCBpcyBrSHoNCj4+ICsgKiBA cG91dDogcG9pbnQgdG8gd2hlcmUgdGhlIHBhcmFtZXRlcnMgdG8gc3RvcmUgaWYgZm91bmQN Cj4+ICsgKg0KPj4gKyAqIFJldHVybiAwIGlmIHN1Y2Nlc3MsIHJldHVybiAtMSBpZiBub3Qg Zm91bmQuDQo+PiArICovDQo+PiArc3RhdGljIGludCBsc2RjX3BpeHBsbF9maW5kKHN0cnVj dCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVuc2lnbmVkIGludCBjbG9jaywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGxzZGNfcGxsX3Bhcm1zICpwb3V0KQ0KPj4gK3sNCj4+ICvCoMKg wqAgdW5zaWduZWQgaW50IG51bSA9IEFSUkFZX1NJWkUocGxsX3BhcmFtX3RhYmxlKTsNCj4+ ICvCoMKgwqAgdW5zaWduZWQgaW50IGk7DQo+PiArDQo+PiArwqDCoMKgIGZvciAoaSA9IDA7 IGkgPCBudW07ICsraSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChjbG9jayAhPSBwbGxf cGFyYW1fdGFibGVbaV0uY2xvY2spDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250 aW51ZTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoCBwb3V0LT5kaXZfcmVmID0gcGxsX3Bh cmFtX3RhYmxlW2ldLmRpdl9yZWY7DQo+PiArwqDCoMKgwqDCoMKgwqAgcG91dC0+bG9vcGPC oMKgID0gcGxsX3BhcmFtX3RhYmxlW2ldLmxvb3BjOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHBv dXQtPmRpdl9vdXQgPSBwbGxfcGFyYW1fdGFibGVbaV0uZGl2X291dDsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDC oCBkcm1fZGJnKHRoaXMtPmRkZXYsICJwaXhlbCBjbG9jayAldTogbWlzc1xuIiwgY2xvY2sp Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gLTE7DQo+PiArfQ0KPj4gKw0KPj4gKy8qDQo+ PiArICogRmluZCBhIHNldCBvZiBwbGwgcGFyYW1ldGVycyB3aGljaCBoYXZlIG1pbmltYWwg ZGlmZmVyZW5jZSB3aXRoIHRoZQ0KPj4gKyAqIGRlc2lyZWQgcGl4ZWwgY2xvY2sgZnJlcXVl bmN5LiBJdCBkb2VzIHRoYXQgYnkgY29tcHV0aW5nIGFsbCBvZiB0aGUNCj4+ICsgKiBwb3Nz aWJsZSBjb21iaW5hdGlvbi4gQ29tcHV0ZSB0aGUgZGlmZiBhbmQgZmluZCB0aGUgY29tYmlu YXRpb24gd2l0aA0KPj4gKyAqIG1pbmltYWwgZGlmZi4NCj4+ICsgKg0KPj4gKyAqwqAgY2xv Y2tfb3V0ID0gcmVmY2xrIC8gZGl2X3JlZiAqIGxvb3BjIC8gZGl2X291dA0KPj4gKyAqDQo+ PiArICrCoCByZWZjbGsgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3NjaWxsYXRvciBtb3VudGVk IG9uIHRoZSBtb3RoZXJib2FyZCgNCj4+ICsgKsKgIEhlcmUgaXMgMTAwTUh6IGluIGFsbW9z dCBhbGwgYm9hcmQpDQo+PiArICoNCj4+ICsgKiBAdGhpczogcG9pbnQgdG8gdGhlIG9iamVj dCBmcm9tIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkDQo+PiArICogQGNsb2NrX2to ejogdGhlIGRlc2lyZWQgb3V0cHV0IHBpeGVsIGNsb2NrLCB0aGUgdW5pdCBpcyBrSHoNCj4+ ICsgKiBAcG91dDogcG9pbnQgdG8gdGhlIG91dCBzdHJ1Y3Qgb2YgbHNkY19wbGxfcGFybXMN Cj4+ICsgKg0KPj4gKyAqwqAgUmV0dXJuIDAgaWYgYSBwYXJhbWV0ZXIgaXMgZm91bmQsIG90 aGVyd2lzZSByZXR1cm4gdGhlIGVycm9yIG9mDQo+PiArICrCoCBiZXR3ZWVuIGtIeiB3ZSB3 YW50ZWQgYW5kIHRoZSBtb3N0IGNsb3Nlc3QgY2FuZGlkYXRlLg0KPj4gKyAqLw0KPj4gK3N0 YXRpYyBpbnQgbHNkY19waXhwbGxfY29tcHV0ZShzdHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0 aGlzLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBpbnQgY2xvY2tfa2h6LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgKnBvdXQpDQo+PiArew0KPj4gK8KgwqDCoCBj b25zdCB1bnNpZ25lZCBpbnQgdG9sZXJhbmNlID0gMTAwMDsNCj4+ICvCoMKgwqAgdW5zaWdu ZWQgaW50IHJlZmNsayA9IHRoaXMtPnJlZl9jbG9jazsNCj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IG1pbiA9IHRvbGVyYW5jZTsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGRpdl9vdXQs IGxvb3BjLCBkaXZfcmVmOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgY29tcHV0ZWQ7DQo+ PiArDQo+PiArwqDCoMKgIGlmICghbHNkY19waXhwbGxfZmluZCh0aGlzLCBjbG9ja19raHos IHBvdXQpKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gKw0KPj4gK8KgwqDC oCBmb3IgKGRpdl9vdXQgPSA2OyBkaXZfb3V0IDwgNjQ7IGRpdl9vdXQrKykgew0KPj4gK8Kg wqDCoMKgwqDCoMKgIGZvciAoZGl2X3JlZiA9IDM7IGRpdl9yZWYgPCA2OyBkaXZfcmVmKysp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAobG9vcGMgPSA2OyBsb29wYyA8 IDE2MTsgbG9vcGMrKykgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBpbnQgZGlmZjsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGxvb3BjIDwgMTIgKiBkaXZfcmVmKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAobG9vcGMgPiAzMiAqIGRpdl9yZWYpDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+PiArDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbXB1dGVkID0gcmVmY2xrIC8gZGl2X3Jl ZiAqIGxvb3BjIC8gZGl2X291dDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKGNsb2NrX2toeiA+PSBjb21wdXRlZCkNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaWZmID0gY2xvY2tfa2h6IC0gY29tcHV0ZWQ7 DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGNsb2NrX2to eiA8IGNvbXB1dGVkKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRpZmYgPSBjb21wdXRlZCAtIGNsb2NrX2toejsNCj4+ICsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRpZmYgPCBtaW4pIHsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtaW4gPSBkaWZmOw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9yZWYgPSBkaXZfcmVm Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRp dl9vdXQgPSBkaXZfb3V0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBvdXQtPmxvb3BjID0gbG9vcGM7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRpZmYgPT0gMCkNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoCB9DQo+PiArDQo+PiAr wqDCoMKgIGlmIChtaW4gPCB0b2xlcmFuY2UpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IDA7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiBtaW47DQo+PiArfQ0KPj4gKw0KPj4gKy8q DQo+PiArICogVXBkYXRlIHRoZSBwbGwgcGFyYW1ldGVycyB0byBoYXJkd2FyZSwgdGFyZ2V0 IHRvIHRoZSBwaXhwbGwgaW4gDQo+PiBsczdhMTAwMA0KPj4gKyAqDQo+PiArICogQHRoaXM6 IHBvaW50IHRvIHRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZA0KPj4gKyAqIEBwaW46IHBvaW50IHRvIHRoZSBzdHJ1Y3Qgb2YgbHNkY19wbGxfcGFybXMg cGFzc2VkIGluDQo+PiArICoNCj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLg0KPj4g KyAqLw0KPj4gK3N0YXRpYyBpbnQgbHM3YTEwMDBfcGl4cGxsX3BhcmFtX3VwZGF0ZShzdHJ1 Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAqcGluKQ0KPj4g K3sNCj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWcgPSB0aGlzLT5tbWlvOw0KPj4gK8Kg wqDCoCB1bnNpZ25lZCBpbnQgY291bnRlciA9IDA7DQo+PiArwqDCoMKgIGJvb2wgbG9ja2Vk Ow0KPj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBCeXBhc3MgdGhl IHNvZnR3YXJlIGNvbmZpZ3VyZWQgUExMLCB1c2luZyByZWZjbGsgZGlyZWN0bHkgKi8NCj4+ ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+ICvCoMKgwqAgdmFsICY9IH4o MSA8PCA4KTsNCj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnICsgMHg0KTsNCj4+ICsNCj4+ ICvCoMKgwqAgLyogUG93ZXJkb3duIHRoZSBQTEwgKi8NCj4+ICvCoMKgwqAgdmFsID0gcmVh ZGwocmVnICsgMHg0KTsNCj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDEzKTsNCj4+ICvCoMKg wqAgd3JpdGVsKHZhbCwgcmVnICsgMHg0KTsNCj4+ICsNCj4+ICvCoMKgwqAgLyogQ2xlYXIg dGhlIHBsbCBwYXJhbWV0ZXJzICovDQo+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDB4 NCk7DQo+PiArwqDCoMKgIHZhbCAmPSB+KDEgPDwgMTEpOw0KPj4gK8KgwqDCoCB3cml0ZWwo dmFsLCByZWcgKyAweDQpOw0KPj4gKw0KPj4gK8KgwqDCoCAvKiBjbGVhciBvbGQgdmFsdWUg JiBjb25maWcgbmV3IHZhbHVlICovDQo+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDB4 MDQpOw0KPj4gK8KgwqDCoCB2YWwgJj0gfjB4N0Y7DQo+PiArwqDCoMKgIHZhbCB8PSBwaW4t PmRpdl9yZWY7wqDCoMKgwqDCoMKgwqAgLyogZGl2X3JlZiAqLw0KPj4gK8KgwqDCoCB3cml0 ZWwodmFsLCByZWcgKyAweDQpOw0KPj4gKw0KPj4gK8KgwqDCoCB2YWwgPSByZWFkbChyZWcp Ow0KPj4gK8KgwqDCoCB2YWwgJj0gfjB4N2Y7DQo+PiArwqDCoMKgIHZhbCB8PSBwaW4tPmRp dl9vdXQ7wqDCoMKgwqDCoMKgwqAgLyogZGl2X291dCAqLw0KPj4gKw0KPj4gK8KgwqDCoCB2 YWwgJj0gfigweDFmZiA8PCAyMSk7DQo+PiArwqDCoMKgIHZhbCB8PSBwaW4tPmxvb3BjIDw8 IDIxO8KgwqDCoCAvKiBsb29wYyAqLw0KPj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0K Pj4gKw0KPj4gK8KgwqDCoCAvKiBTZXQgdGhlIHBsbCB0aGUgcGFyYW1ldGVycyAqLw0KPj4g K8KgwqDCoCB2YWwgPSByZWFkbChyZWcgKyAweDQpOw0KPj4gK8KgwqDCoCB2YWwgfD0gKDEg PDwgMTEpOw0KPj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4gKw0KPj4g K8KgwqDCoCAvKiBQb3dlcnVwIHRoZSBQTEwgKi8NCj4+ICvCoMKgwqAgdmFsID0gcmVhZGwo cmVnICsgMHg0KTsNCj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8PCAxMyk7DQo+PiArwqDCoMKg IHdyaXRlbCh2YWwsIHJlZyArIDB4NCk7DQo+PiArDQo+PiArwqDCoMKgIHVkZWxheSgxKTsN Cj4+ICsNCj4+ICvCoMKgwqAgLyogV2FpdCB0aGUgUExMIGxvY2sgKi8NCj4+ICvCoMKgwqAg ZG8gew0KPj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDB4NCk7DQo+PiAr wqDCoMKgwqDCoMKgwqAgbG9ja2VkID0gdmFsICYgMHg4MDsNCj4+ICvCoMKgwqDCoMKgwqDC oCBjb3VudGVyKys7DQo+PiArwqDCoMKgIH0gd2hpbGUgKCFsb2NrZWQgJiYgKGNvdW50ZXIg PCAyMDAwKSk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9kYmcodGhpcy0+ZGRldiwgIiV1IGxv b3Agd2FpdGVkXG4iLCBjb3VudGVyKTsNCj4+ICsNCj4+ICvCoMKgwqAgLyogU3dpdGNoIHRv IHRoZSBjb25maWd1cmVkIHBsbCBqdXN0IG5vdyAqLw0KPj4gK8KgwqDCoCB2YWwgPSByZWFk bChyZWcgKyAweDQpOw0KPj4gK8KgwqDCoCB2YWwgfD0gKDFVTCA8PCA4KTsNCj4+ICvCoMKg wqAgd3JpdGVsKHZhbCwgcmVnICsgMHg0KTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbHM3YTEwMDBfZ2V0X2Ns b2NrX3JhdGUoc3RydWN0IGxzZGNfcGxsICogY29uc3QgDQo+PiB0aGlzLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNf cGxsX3Bhcm1zICpwb3V0KQ0KPj4gK3sNCj4+ICvCoMKgwqAgdW5pb24gbHNkY19waXhwbGxf Yml0bWFwIHBhcm1zOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHM3YTEwMDBfcGl4cGxsX2JpdG1h cCAqb2JqID0gJnBhcm1zLmxzN2ExMDAwOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgb3V0 Ow0KPj4gKw0KPj4gK8KgwqDCoCBwYXJtcy5kd29yZFswXSA9IHJlYWRsKHRoaXMtPm1taW8p Ow0KPj4gK8KgwqDCoCBwYXJtcy5kd29yZFsxXSA9IHJlYWRsKHRoaXMtPm1taW8gKyA0KTsN Cj4+ICvCoMKgwqAgb3V0ID0gdGhpcy0+cmVmX2Nsb2NrIC8gb2JqLT5kaXZfcmVmICogb2Jq LT5sb29wYyAvIG9iai0+ZGl2X291dDsNCj4+ICvCoMKgwqAgaWYgKHBvdXQpIHsNCj4+ICvC oMKgwqDCoMKgwqDCoCBwb3V0LT5kaXZfcmVmID0gb2JqLT5kaXZfcmVmOw0KPj4gK8KgwqDC oMKgwqDCoMKgIHBvdXQtPmxvb3BjID0gb2JqLT5sb29wYzsNCj4+ICvCoMKgwqDCoMKgwqDC oCBwb3V0LT5kaXZfb3V0ID0gb2JqLT5kaXZfb3V0Ow0KPj4gK8KgwqDCoCB9DQo+PiArDQo+ PiArwqDCoMKgIHJldHVybiBvdXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgbHNkY19waXhwbGxfZnVuY3MgbHM3YTEwMDBfcGl4cGxsX2Z1bmNzID0gew0KPj4g K8KgwqDCoCAuc2V0dXAgPSBsc2RjX3BpeHBsbF9zZXR1cCwNCj4+ICvCoMKgwqAgLmNvbXB1 dGUgPSBsc2RjX3BpeHBsbF9jb21wdXRlLA0KPj4gK8KgwqDCoCAudXBkYXRlID0gbHM3YTEw MDBfcGl4cGxsX3BhcmFtX3VwZGF0ZSwNCj4+ICvCoMKgwqAgLmdldF9jbG9ja19yYXRlID0g bHM3YTEwMDBfZ2V0X2Nsb2NrX3JhdGUsDQo+PiArfTsNCj4+ICsNCj4+ICtpbnQgbHNkY19w aXhwbGxfaW5pdChzdHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4KQ0KPj4gK3sNCj4+ICvCoMKg wqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ICvCoMKg wqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+ICsN Cj4+ICvCoMKgwqAgdGhpcy0+ZGRldiA9IGRkZXY7DQo+PiArwqDCoMKgIHRoaXMtPmluZGV4 ID0gaW5kZXg7DQo+PiArwqDCoMKgIHRoaXMtPnJlZl9jbG9jayA9IExTRENfUExMX1JFRl9D TEs7DQo+PiArDQo+PiArwqDCoMKgIC8qIExTN0ExMDAwLCBMUzdBMjAwMCdzIHNldHRpbmcg cmVnaXN0ZXJzIGlzIHNhbWUgKi8NCj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5jaGlwID09IENI SVBfTFM3QTIwMDAgfHwNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXNjcC0+Y2hpcCA9PSBDSElQ X0xTN0ExMDAwKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGlzLT5yZWdfYmFzZSA9IExTN0ExMDAwX0NGR19S RUdfQkFTRSArIA0KPj4gTFM3QTEwMDBfUElYX1BMTDBfUkVHOw0KPj4gK8KgwqDCoMKgwqDC oMKgIGVsc2UgaWYgKGluZGV4ID09IDEpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0 aGlzLT5yZWdfYmFzZSA9IExTN0ExMDAwX0NGR19SRUdfQkFTRSArIA0KPj4gTFM3QTEwMDBf UElYX1BMTDFfUkVHOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19zaXplID0gODsN Cj4+ICvCoMKgwqDCoMKgwqDCoCB0aGlzLT5mdW5jcyA9ICZsczdhMTAwMF9waXhwbGxfZnVu Y3M7DQo+PiArwqDCoMKgIH0gZWxzZSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Vycihk ZGV2LCAidW5rbm93biBjaGlwLCB0aGUgZHJpdmVyIG5lZWQgdXBkYXRlXG4iKTsNCj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0VOVDsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4g K8KgwqDCoCByZXR1cm4gdGhpcy0+ZnVuY3MtPnNldHVwKHRoaXMpOw0KPj4gK30NCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3BsbC5oIA0KPj4gYi9kcml2 ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3BsbC5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42MWQxMTA2M2E5MDkNCj4+IC0tLSAvZGV2L251bGwN Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxsLmgNCj4+IEBAIC0wLDAg KzEsNzYgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0K Pj4gKw0KPj4gKyNpZm5kZWYgX19MU0RDX1BMTF9IX18NCj4+ICsjZGVmaW5lIF9fTFNEQ19Q TExfSF9fDQo+PiArDQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+DQo+PiArDQo+ PiArLyoNCj4+ICsgKiBMb29uZ3NvbiBQaXhlbCBQTEwgaGFyZHdhcmUgc3RydWN0dXJlDQo+ PiArICoNCj4+ICsgKiByZWZjbGs6IHJlZmVyZW5jZSBmcmVxdWVuY3ksIDEwMCBNSHogZnJv bSBleHRlcm5hbCBvc2NpbGxhdG9yDQo+PiArICogb3V0Y2xrOiBvdXRwdXQgZnJlcXVlbmN5 IGRlc2lyZWQuDQo+PiArICoNCj4+ICsgKg0KPj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBMMcKgwqDCoMKgwqDCoCBGcmVmwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEZ2Y2/CoMKgwqDCoCBMMg0KPj4gKyAqIHJlZmNsa8KgwqAgKy0t LS0tLS0tLS0tK8KgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICANCj4+ICst LS0tLS0tLS0rwqDCoCBvdXRjbGsNCj4+ICsgKiAtLS0rLS0tPiB8IFByZXNjYWxlciB8IC0t LT4gfCBDbG9jayBNdWx0aXBsaWVyIHwgLS0tPiB8IGRpdmlkZXIgfCANCj4+IC0tLS0tLS0t Pg0KPj4gKyAqwqDCoMKgIHzCoMKgwqDCoCArLS0tLS0tLS0tLS0rwqDCoMKgwqDCoCArLS0t LS0tLS0tLS0tLS0tLS0tKyAgICAgIA0KPj4gKy0tLS0tLS0tLSvCoMKgwqDCoCBeDQo+PiAr ICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIF7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXiAgICAgICAgICAgICAgICAgICAgDQo+PiBewqDCoMKg wqDCoMKgwqDCoMKgIHwNCj4+ICsgKsKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8ICAgICAgICAgICAg ICAgICAgICANCj4+IHzCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4gKyAqwqDCoMKgIHzCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgICAgICAgICAgICAgICAgICAgIA0KPj4gfMKgwqDCoMKgwqDCoMKgwqDCoCB8 DQo+PiArICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgIGRpdl9yZWbCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBsb29wYyAgICAgICAgICAgICAgIA0KPj4gZGl2X291dMKgwqDC oMKgwqDCoCB8DQo+PiArICogICAgDQo+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+ PiArICrCoMKgwqAgKy0tLSBzZWxfb3V0IChieXBhc3MgYWJvdmUgc29mdHdhcmUgY29uZmln dXJhYmxlIGNsb2NrIGlmIHNldCkgDQo+PiAtLS0tKw0KPj4gKyAqDQo+PiArICrCoCBzZWxf b3V0OiBQTEwgY2xvY2sgb3V0cHV0IHNlbGVjdG9yIChmb3IgZGVidWcgcHVycG9zZSBvbmx5 KS4NCj4+ICsgKg0KPj4gKyAqwqAgSWYgc2VsX291dCA9PSAxLCBpdCB3aWxsIHRha2UgcmVm Y2xrIGFzIG91dHB1dCBkaXJlY3RseSwNCj4+ICsgKsKgIHRoZSBMMSBQcmVzY2FsZXIgYW5k IHRoZSBvdXQgZGl2aWRlciB3aWxsIGJlIGJ5cGFzc2VkLg0KPj4gKyAqDQo+PiArICrCoCBJ ZiBzZWxfb3V0ID09IDAsIHRoZW4gb3V0Y2xrID0gcmVmY2xrIC8gZGl2X3JlZiAqIGxvb3Bj IC8gZGl2X291dDsNCj4+ICsgKg0KPj4gKyAqIFBMTCB3b3JraW5nIHJlcXVpcmVtZW50czoN Cj4+ICsgKg0KPj4gKyAqwqAgMSkgMjAgTUh6IDw9IHJlZmNsayAvIGRpdl9yZWYgPD0gNDBN aHoNCj4+ICsgKsKgIDIpIDEuMiBHSHogPD0gcmVmY2xrIC9kaXZfb3V0ICogbG9vcGMgPD0g My4yIEdoeg0KPj4gKyAqLw0KPj4gKw0KPj4gK3N0cnVjdCBsc2RjX3BsbF9wYXJtcyB7DQo+ PiArwqDCoMKgIHVuc2lnbmVkIGludCBkaXZfcmVmOw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBp bnQgbG9vcGM7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBkaXZfb3V0Ow0KPj4gK307DQo+ PiArDQo+PiArc3RydWN0IGxzZGNfcGxsOw0KPj4gKw0KPj4gK3N0cnVjdCBsc2RjX3BpeHBs bF9mdW5jcyB7DQo+PiArwqDCoMKgIGludCAoKnNldHVwKShzdHJ1Y3QgbHNkY19wbGwgKiBj b25zdCB0aGlzKTsNCj4+ICvCoMKgwqAgaW50ICgqY29tcHV0ZSkoc3RydWN0IGxzZGNfcGxs ICogY29uc3QgdGhpcywgdW5zaWduZWQgaW50IGNsb2NrLA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfcGxsX3Bhcm1zICpwb3V0KTsNCj4+ICvCoMKg wqAgaW50ICgqdXBkYXRlKShzdHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLCBzdHJ1Y3Qg bHNkY19wbGxfcGFybXMgDQo+PiBjb25zdCAqcGluKTsNCj4+ICvCoMKgwqAgdW5zaWduZWQg aW50ICgqZ2V0X2Nsb2NrX3JhdGUpKHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGxzZGNfcGxsX3Bhcm1zICpwb3V0KTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCBsc2Rj X3BsbCB7DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyAqZnVu Y3M7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2Ow0KPj4gK8KgwqDCoCB2 b2lkIF9faW9tZW0gKm1taW87DQo+PiArDQo+PiArwqDCoMKgIC8qIFBMTCByZWdpc3RlciBv ZmZzZXQgKi8NCj4+ICvCoMKgwqAgdTMyIHJlZ19iYXNlOw0KPj4gK8KgwqDCoCAvKiBQTEwg cmVnaXN0ZXIgc2l6ZSBpbiBieXRlcyAqLw0KPj4gK8KgwqDCoCB1MzIgcmVnX3NpemU7DQo+ PiArDQo+PiArwqDCoMKgIC8qIDEwMDAwMGtIeiwgZml4ZWQgb24gYWxsIGJvYXJkIGZvdW5k ICovDQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCByZWZfY2xvY2s7DQo+PiArDQo+PiArwqDC oMKgIHVuc2lnbmVkIGludCBpbmRleDsNCj4+ICt9Ow0KPj4gKw0KPj4gK2ludCBsc2RjX3Bp eHBsbF9pbml0KHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpOw0KPj4gKw0KPj4gKyNlbmRp Zg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcHJvYmUuYyAN Cj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wcm9iZS5jDQo+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMDBlNjE3ZGE3MGMNCj4+IC0t LSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcHJvYmUu Yw0KPj4gQEAgLTAsMCArMSw4OCBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wKw0KPj4gKw0KPj4gKyNpbmNsdWRlICJsc2RjX2Rydi5oIg0KPj4gKw0KPj4g Ky8qDQo+PiArICogUHJvY2Vzc29yIElEIChpbXBsZW1lbnRhdGlvbikgdmFsdWVzIGZvciBi aXRzIDE1Ojggb2YgdGhlIFBSSUQgDQo+PiByZWdpc3Rlci4NCj4+ICsgKi8NCj4+ICsjZGVm aW5lIExPT05HU09OX0NQVV9JTVBfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgIDB4ZmYwMA0K Pj4gKyNkZWZpbmUgTE9PTkdTT05fQ1BVX0lNUF9TSElGVMKgwqDCoMKgwqDCoMKgwqDCoCA4 DQo+PiArDQo+PiArI2RlZmluZSBMT09OR0FSQ0hfQ1BVX0lNUF9MUzJLMTAwMMKgwqDCoMKg wqAgMHhhMA0KPj4gKyNkZWZpbmUgTE9PTkdBUkNIX0NQVV9JTVBfTFMySzIwMDDCoMKgwqDC oMKgIDB4YjANCj4+ICsjZGVmaW5lIExPT05HQVJDSF9DUFVfSU1QX0xTM0E1MDAwwqDCoMKg wqDCoCAweGMwDQo+PiArDQo+PiArI2RlZmluZSBMT09OR1NPTl9DUFVfTUlQU19JTVBfTFMy S8KgwqDCoMKgwqAgMHg2MSAvKiBMb29uZ3NvbiAySyBNaXBzIA0KPj4gc2VyaWVzIFNvQyAq Lw0KPj4gKw0KPj4gKy8qDQo+PiArICogUGFydGljdWxhciBSZXZpc2lvbiB2YWx1ZXMgZm9y IGJpdHMgNzowIG9mIHRoZSBQUklEIHJlZ2lzdGVyLg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUg TE9PTkdTT05fQ1BVX1JFVl9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMGZmDQo+PiAr DQo+PiArI2RlZmluZSBMT09OR0FSQ0hfQ1BVQ0ZHX1BSSURfUkVHwqDCoMKgwqDCoMKgIDB4 MA0KPj4gKw0KPj4gK3Vuc2lnbmVkIGludCBsb29uZ3Nvbl9jcHVfZ2V0X3ByaWQodTggKmlt cCwgdTggKnJldikNCj4+ICt7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBwcmlkID0gMDsN Cj4+ICsNCj4+ICsjaWYgZGVmaW5lZChfX2xvb25nYXJjaF9fKQ0KPj4gK8KgwqDCoCBfX2Fz bV9fIHZvbGF0aWxlKCJjcHVjZmcgJTAsICUxXG5cdCINCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDogIj0mciIocHJpZCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIi KExPT05HQVJDSF9DUFVDRkdfUFJJRF9SRUcpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCApOw0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gKyNpZiBkZWZpbmVkKF9fbWlwc19fKQ0KPj4g K8KgwqDCoCBfX2FzbV9fIHZvbGF0aWxlKCJtZmMwXHQlMCwgJDE1XG5cdCINCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocHJpZCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICk7DQo+PiArI2VuZGlmDQo+PiArDQo+PiArwqDCoMKgIGlmIChpbXApDQo+PiAr wqDCoMKgwqDCoMKgwqAgKmltcCA9IChwcmlkICYgTE9PTkdTT05fQ1BVX0lNUF9NQVNLKSA+ PiBMT09OR1NPTl9DUFVfSU1QX1NISUZUOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAocmV2KQ0K Pj4gK8KgwqDCoMKgwqDCoMKgICpyZXYgPSBwcmlkICYgTE9PTkdTT05fQ1BVX1JFVl9NQVNL Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gcHJpZDsNCj4+ICt9DQo+PiArDQo+PiArLyog TFMySzIwMDAgaGFzIG9ubHkgTG9vbmdBcmNoIGVkaXRpb24gKExBMzY0KSAqLw0KPj4gK2Jv b2wgbHNkY19pc19sczJrMjAwMCh2b2lkKQ0KPj4gK3sNCj4+ICvCoMKgwqAgdTggaW1wOw0K Pj4gKw0KPj4gK8KgwqDCoCBsb29uZ3Nvbl9jcHVfZ2V0X3ByaWQoJmltcCwgTlVMTCk7DQo+ PiArDQo+PiArwqDCoMKgIGlmIChpbXAgPT0gTE9PTkdBUkNIX0NQVV9JTVBfTFMySzIwMDAp DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7DQo+PiArDQo+PiArwqDCoMKgIHJl dHVybiBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiArLyoNCj4+ICsgKiBMUzJLMTAwMCBoYXMg bG9vbmdhcmNoIGVkaXRpb24oTEEyNjQpIGFuZCBtaXBzIGVkaXRpb24obWlwczY0cjIpLA0K Pj4gKyAqIFRoZSBDUFUgY29yZSBhbmQgaW5zdHJ1Y3Rpb24gc2V0IGNoYW5nZWQsIGJ1dCBy ZW1haW4gaXMgYmFzaWNhbGx5IA0KPj4gc2FtZS4NCj4+ICsgKi8NCj4+ICtib29sIGxzZGNf aXNfbHMyazEwMDAodm9pZCkNCj4+ICt7DQo+PiArwqDCoMKgIHU4IGltcDsNCj4+ICsNCj4+ ICvCoMKgwqAgbG9vbmdzb25fY3B1X2dldF9wcmlkKCZpbXAsIE5VTEwpOw0KPj4gKw0KPj4g KyNpZiBkZWZpbmVkKF9fbWlwc19fKQ0KPj4gK8KgwqDCoCAvKiBMUzJLMTAwMCBoYXMgTWlw cyBlZGl0aW9uKG1pcHM2NHIyKSAqLw0KPj4gK8KgwqDCoCBpZiAoaW1wID09IExPT05HU09O X0NQVV9NSVBTX0lNUF9MUzJLKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOw0K Pj4gKyNlbmRpZg0KPj4gKw0KPj4gKyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pDQo+PiAr wqDCoMKgIC8qIExTMksxMDAwIGhhcyBsb29uZ2FyY2ggZWRpdGlvbihMQTI2NCkNCj4+ICvC oMKgwqDCoCAqIENQVSBjb3JlIGFuZCBpbnN0cnVjdGlvbiBzZXQgY2hhbmdlZCwgcmVtYWlu cyBhcmUgYmFzaWNhbGx5IHNhbWUNCj4+ICvCoMKgwqDCoCAqLw0KPj4gK8KgwqDCoCBpZiAo aW1wID09IExPT05HQVJDSF9DUFVfSU1QX0xTMksxMDAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiB0cnVlOw0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gZmFs c2U7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNf cmVncy5oIA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3JlZ3MuaA0KPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTVlZjUzMGFkOWRl DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2Rj X3JlZ3MuaA0KPj4gQEAgLTAsMCArMSwzNTMgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCAqLw0KPj4gKw0KPj4gKyNpZm5kZWYgX19MU0RDX1JFR1NfSF9f DQo+PiArI2RlZmluZSBfX0xTRENfUkVHU19IX18NCj4+ICsNCj4+ICsjaW5jbHVkZSA8bGlu dXgvYml0b3BzLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+PiArDQo+PiAr LyoNCj4+ICsgKiBQSVhFTCBQTEwgUmVmZXJlbmNlIGNsb2NrDQo+PiArICovDQo+PiArI2Rl ZmluZSBMU0RDX1BMTF9SRUZfQ0xLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEw MDAwMMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGtIeiAqLw0KPj4gKw0KPj4gKy8qDQo+PiAr ICogVGhvc2UgUExMIHJlZ2lzdGVycyBhcmUgcmVsYXRpdmUgdG8gTFN4eHh4eF9DRkdfUkVH X0JBU0UuIHh4eHh4ID0gDQo+PiA3QTEwMDAsDQo+PiArICogMksxMDAwLCAySzIwMDAgZXRj DQo+PiArICovDQo+PiArDQo+PiArI2RlZmluZSBMUzdBMTAwMF9QSVhfUExMMF9SRUfCoMKg wqDCoMKgwqDCoMKgwqDCoCAweDA0QjANCj4+ICsjZGVmaW5lIExTN0ExMDAwX1BJWF9QTEwx X1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDRDMA0KPj4gKyNkZWZpbmUgTFM3QTEwMDBf Q0ZHX1JFR19CQVNFwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMDAxMDAwMA0KPj4gKw0KPj4g KyNkZWZpbmUgQ0ZHX1BJWF9GTVRfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBHRU5NQVNLKDIsIDApDQo+PiArDQo+PiArZW51bSBsc2RjX3BpeGVsX2Zvcm1hdCB7DQo+ PiArwqDCoMKgIExTRENfUEZfTk9ORSA9IDAsDQo+PiArwqDCoMKgIExTRENfUEZfQVJHQjQ0 NDQgPSAxLMKgIC8qIEFSR0IgQTo0IGJpdHMgUi9HL0I6IDQgYml0cyBlYWNoIFsxNiANCj4+ IGJpdHNdICovDQo+PiArwqDCoMKgIExTRENfUEZfQVJHQjE1NTUgPSAyLMKgIC8qIEFSR0Ig QToxIGJpdCBSR0I6MTUgYml0cyBbMTYgYml0c10gKi8NCj4+ICvCoMKgwqAgTFNEQ19QRl9S R0I1NjUgPSAzLMKgwqDCoCAvKiBSR0IgWzE2IGJpdHNdICovDQo+PiArwqDCoMKgIExTRENf UEZfWFJHQjg4ODggPSA0LMKgIC8qIFhSR0IgWzMyIGJpdHNdICovDQo+PiArwqDCoMKgIExT RENfUEZfUkdCQTg4ODggPSA1LMKgIC8qIEFSR0IgWzMyIGJpdHNdICovDQo+PiArfTsNCj4+ ICsNCj4+ICsvKg0KPj4gKyAqIEVhY2ggY3J0YyBoYXMgdHdvIHNldCBmYiBhZGRyZXNzIHJl Z2lzdGVycyB1c2FibGUsIENGR19GQl9JTl9VU0lORyBvZg0KPj4gKyAqIExTRENfQ1JUQ3hf Q0ZHX1JFRyBzcGVjaWZ5IHdoaWNoIGZiIGFkZHJlc3MgcmVnaXN0ZXIgaXMgY3VycmVudGx5 DQo+PiArICogaW4gdXNpbmcgYnkgdGhlIENSVEMuIENGR19QQUdFX0ZMSVAgb2YgTFNEQ19D UlRDeF9DRkdfUkVHIGlzIHVzZWQgdG8NCj4+ICsgKiB0cmlnZ2VyIHRoZSBzd2l0Y2ggd2hp Y2ggd2lsbCBiZSBmaW5pc2hlZCBhdCB0aGUgdmVyeSB2YmxhbmsuIElmIHlvdQ0KPj4gKyAq IHdhbnQgdG8gc3dpdGNoIGJhY2ssIHNldCBDRkdfUEFHRV9GTElQIGFnYWluLg0KPj4gKyAq Lw0KPj4gKyNkZWZpbmUgQ0ZHX1BBR0VfRkxJUMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBCSVQoNykNCj4+ICsjZGVmaW5lIENGR19PVVRQVVRfRU7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDgpDQo+PiArLyogQ1JUQzAgY2xvbmUg ZnJvbSBDUlRDMSBvciBDUlRDMSBjbG9uZSBmcm9tIENSVEMwIHVzaW5nIGhhcmR3YXJlIA0K Pj4gbG9naWMgKi8NCj4+ICsjZGVmaW5lIENGR19QQU5FTF9TV0lUQ0jCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKDkpDQo+PiArLyogSW5kaWNhdGUgd2l0Y2ggZmIgYWRk ciByZWcgaXMgaW4gdXNpbmcsIGN1cnJlbnRseSAqLw0KPj4gKyNkZWZpbmUgQ0ZHX0ZCX0lO X1VTSU5HwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDExKQ0KPj4gKyNk ZWZpbmUgQ0ZHX0dBTU1BX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQklUKDEyKQ0KPj4gKw0KPj4gKy8qIFRoZSBEQyBnZXQgc29mdCByZXNldCBpZiB2b2x0 YWdlIGxldmVsIGNoYW5nZSBmcm9tIDEgLT4gMCAqLw0KPj4gKyNkZWZpbmUgQ0ZHX1JFU0VU X07CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyMCkNCj4+ ICsNCj4+ICsvKiBUaGUgRE1BIHN0ZXAgb2YgdGhlIERDIGluIExTN0EyMDAwIGlzIGNvbmZp Z3VyYWJsZSAqLw0KPj4gKyNkZWZpbmUgQ0ZHX0RNQV9TVEVQX01BU0vCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBHRU5NQVNLKDE3LCAxNikNCj4+ICsjZGVmaW5lIENGR19ETUFfU1RF UF9TSElGVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxNg0KPj4gK2VudW0gbHNkY19kbWFf c3RlcHMgew0KPj4gK8KgwqDCoCBMU0RDX0RNQV9TVEVQXzI1Nl9CWVRFUyA9IDAgPDwgQ0ZH X0RNQV9TVEVQX1NISUZULA0KPj4gK8KgwqDCoCBMU0RDX0RNQV9TVEVQXzEyOF9CWVRFUyA9 IDEgPDwgQ0ZHX0RNQV9TVEVQX1NISUZULA0KPj4gK8KgwqDCoCBMU0RDX0RNQV9TVEVQXzY0 X0JZVEVTID0gMiA8PCBDRkdfRE1BX1NURVBfU0hJRlQsDQo+PiArwqDCoMKgIExTRENfRE1B X1NURVBfMzJfQllURVMgPSAzIDw8IENGR19ETUFfU1RFUF9TSElGVCwNCj4+ICt9Ow0KPj4g Kw0KPj4gKyNkZWZpbmUgQ0ZHX0hTWU5DX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQklUKDMwKQ0KPj4gKyNkZWZpbmUgQ0ZHX0hTWU5DX0lOVsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMzEpDQo+PiArI2RlZmluZSBDRkdf VlNZTkNfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMzAp DQo+PiArI2RlZmluZSBDRkdfVlNZTkNfSU5WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCgzMSkNCj4+ICsNCj4+ICsvKioqKioqKiogQ1JUQzAgJiBEVk8wICoq KioqKioqLw0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9DRkdfUkVHwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgxMjQwDQo+PiArDQo+PiArLyoNCj4+ICsgKiBJZiBGQjBfWFhfQURE Ul9SRUcgaXMgaW4gdXNpbmcsIHdlIHdyaXRlIHRoZSBhZGRyZXNzIHRvIA0KPj4gRkIwX1hY X0FERFJfUkVHLA0KPj4gKyAqIGlmIEZCMV9YWF9BRERSX1JFRyBpcyBpbiB1c2luZywgd2Ug d3JpdGUgdGhlIGFkZHJlc3MgdG8gDQo+PiBGQjFfWFhfQUREUl9SRUcuDQo+PiArICogRm9y IGVhY2ggQ1JUQywgdGhlIHN3aXRjaCBmcm9tIHVzaW5nIEZCMF9YWF9BRERSX1JFRyB0byAN Cj4+IEZCMV9YWF9BRERSX1JFRw0KPj4gKyAqIGlzIHRyaWdnZXJlZCBieSBzZXQgQ0ZHX1BB R0VfRkxJUCBiaXQgb2YgTFNEQ19DUlRDeF9DRkdfUkVHLCANCj4+IHRyaWdnZXIgaXQNCj4+ ICsgKiBhZ2FpbiBpZiB5b3Ugd2FudCBzd2l0Y2ggYmFjay4NCj4+ICsgKi8NCj4+ICsjZGVm aW5lIExTRENfQ1JUQzBfRkIwX0xPX0FERFJfUkVHwqDCoMKgwqDCoCAweDEyNjANCj4+ICsj ZGVmaW5lIExTRENfQ1JUQzBfRkIwX0hJX0FERFJfUkVHwqDCoMKgwqDCoCAweDE1QTANCj4+ ICsjZGVmaW5lIExTRENfQ1JUQzBfRkIxX0xPX0FERFJfUkVHwqDCoMKgwqDCoCAweDE1ODAN Cj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfRkIxX0hJX0FERFJfUkVHwqDCoMKgwqDCoCAweDE1 QzANCj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfU1RSSURFX1JFR8KgwqDCoMKgwqDCoMKgwqDC oMKgIDB4MTI4MA0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQl9PUklHSU5fUkVHwqDCoMKg wqDCoMKgwqAgMHgxMzAwDQo+PiArDQo+PiArLyogWzI3OjE2XSB0b3RhbCBudW1iZXIgb2Yg cGl4ZWxzLCBbMTE6MF0gQWN0aXZlIG51bWJlciBvZiBwaXhlbHMsIA0KPj4gaG9yaXpvbnRh bCAqLw0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9IRElTUExBWV9SRUfCoMKgwqDCoMKgwqDC oMKgIDB4MTQwMA0KPj4gKy8qIFsxMjowXSBoc3luYyBzdGFydCBbMjg6MTZdIGhzeW5jIGVu ZCwgMzA6IGhzeW5jIGVuYWJsZSwgMzE6IGhzeW5jIA0KPj4gaW52ZXJ0ICovDQo+PiArI2Rl ZmluZSBMU0RDX0NSVEMwX0hTWU5DX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNDIw DQo+PiArLyogWzI3OjE2XSB0b3RhbCBudW1iZXIgb2YgcGl4ZWxzLCBbMTE6MF0gQWN0aXZl IG51bWJlciBvZiBwaXhlbHMsIA0KPj4gdmVydGljYWwgKi8NCj4+ICsjZGVmaW5lIExTRENf Q1JUQzBfVkRJU1BMQVlfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE0ODANCj4+ICsvKiBbMTI6 MF0gdnN5bmMgc3RhcnQgWzI4OjE2XSB2c3luYyBlbmQsIDMwOiB2c3luYyBlbmFibGUsIDMx OiB2c3luYyANCj4+IGludmVydCAqLw0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9WU1lOQ19S RUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTRBMA0KPj4gKw0KPj4gKyNkZWZpbmUgTFNE Q19DUlRDMF9HQU1NQV9JTkRFWF9SRUfCoMKgwqDCoMKgIDB4MTRFMA0KPj4gKyNkZWZpbmUg TFNEQ19DUlRDMF9HQU1NQV9EQVRBX1JFR8KgwqDCoMKgwqDCoCAweDE1MDANCj4+ICsNCj4+ ICsvKioqKioqKiogQ1RSQzEgJiBEVk8xICoqKioqKioqLw0KPj4gKyNkZWZpbmUgTFNEQ19D UlRDMV9DRkdfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMjUwDQo+PiArI2Rl ZmluZSBMU0RDX0NSVEMxX0ZCMF9MT19BRERSX1JFR8KgwqDCoMKgwqAgMHgxMjcwDQo+PiAr I2RlZmluZSBMU0RDX0NSVEMxX0ZCMF9ISV9BRERSX1JFR8KgwqDCoMKgwqAgMHgxNUIwDQo+ PiArI2RlZmluZSBMU0RDX0NSVEMxX0ZCMV9MT19BRERSX1JFR8KgwqDCoMKgwqAgMHgxNTkw DQo+PiArI2RlZmluZSBMU0RDX0NSVEMxX0ZCMV9ISV9BRERSX1JFR8KgwqDCoMKgwqAgMHgx NUQwDQo+PiArI2RlZmluZSBMU0RDX0NSVEMxX1NUUklERV9SRUfCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDEyOTANCj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfRkJfT1JJR0lOX1JFR8KgwqDC oMKgwqDCoMKgIDB4MTMxMA0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9IRElTUExBWV9SRUfC oMKgwqDCoMKgwqDCoMKgIDB4MTQxMA0KPj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9IU1lOQ19S RUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTQzMA0KPj4gKyNkZWZpbmUgTFNEQ19DUlRD MV9WRElTUExBWV9SRUfCoMKgwqDCoMKgwqDCoMKgIDB4MTQ5MA0KPj4gKyNkZWZpbmUgTFNE Q19DUlRDMV9WU1lOQ19SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTRCMA0KPj4gKyNk ZWZpbmUgTFNEQ19DUlRDMV9HQU1NQV9JTkRFWF9SRUfCoMKgwqDCoMKgIDB4MTRGMA0KPj4g KyNkZWZpbmUgTFNEQ19DUlRDMV9HQU1NQV9EQVRBX1JFR8KgwqDCoMKgwqDCoCAweDE1MTAN Cj4+ICsNCj4+ICsvKg0KPj4gKyAqIGxzZGMgaGFyZHdhcmUgd2hpY2ggcmVjb3JkIHRoZSBz Y2FuIHBvc2l0aW9uIG9mIHRoZSBDUlRDDQo+PiArICogWzMxOjE2XSA6IGN1cnJlbnQgWCBw b3NpdGlvbiwgWzE1OjBdIDogY3VycmVudCBZIHBvc2l0aW9uDQo+PiArICovDQo+PiArI2Rl ZmluZSBMU0RDX0NSVEMwX1NDQU5fUE9TX1JFR8KgwqDCoMKgwqDCoMKgwqAgMHgxNEMwDQo+ PiArI2RlZmluZSBMU0RDX0NSVEMxX1NDQU5fUE9TX1JFR8KgwqDCoMKgwqDCoMKgwqAgMHgx NEQwDQo+PiArDQo+PiArLyoNCj4+ICsgKiBJbiBncm9zcywgTFNEQ19DUlRDMV9YWFhfUkVH IC0gTFNEQ19DUlRDMF9YWFhfUkVHID0gMHgxMCwNCj4+ICsgKiBidXQgbm90IGFsbCBsc2Rj IHJlZ2lzdGVycyBvYmF5IHRoaXMgcnVsZSwgb3VyIGhhcmR3YXJlDQo+PiArICogZW5naW5l ZXJzIGFyZSBsYWNrIGV4cGVyaWFuY2Ugd2hlbiB0aGV5IGFyZSB5b3VuZy4uLg0KPj4gKyAq Lw0KPj4gKyNkZWZpbmUgQ1JUQ19QSVBFX09GRlNFVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDEwDQo+PiArDQo+PiArLyoNCj4+ICsgKiBUaGVyZSBpcyBvbmx5IG9uZSBo YXJkd2FyZSBjdXJzb3IgdW5pdCBpbiBsczdhMTAwMCBhbmQgbHMyazEwMDAuDQo+PiArICog V2hpbGUgbHM3YTIwMDAgaGFzIHR3byBoYXJkd2FyZSBjdXJzb3IgdW5pdC4NCj4+ICsgKi8N Cj4+ICsjZGVmaW5lIENVUlNPUl9GT1JNQVRfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEdFTk1BU0soMSwgMCkNCj4+ICtlbnVtIGxzZGNfY3Vyc29yX2Zvcm1hdCB7DQo+PiAr wqDCoMKgIENVUlNPUl9GT1JNQVRfRElTQUJMRSA9IDAsDQo+PiArwqDCoMKgIENVUlNPUl9G T1JNQVRfTU9OT0NIUk9NRSA9IDEsDQo+PiArwqDCoMKgIENVUlNPUl9GT1JNQVRfQVJHQjg4 ODggPSAyLA0KPj4gK307DQo+PiArDQo+PiArI2RlZmluZSBDVVJTT1JfU0laRV82NFg2NMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDIpwqAgLyogMTogNjR4NjQsIDA6IDMy eDMyICovDQo+PiArI2RlZmluZSBDVVJTT1JfTE9DQVRJT07CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBCSVQoNCnCoCAvKiAxOiBvbiBDUlRDLTEsIDA6IA0KPj4gb24gQ1JU Qy0wICovDQo+PiArDQo+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfQ0ZHX1JFR8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgxNTIwDQo+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfQUREUl9M T19SRUfCoMKgwqDCoMKgwqDCoCAweDE1MzANCj4+ICsjZGVmaW5lIExTRENfQ1VSU09SMF9B RERSX0hJX1JFR8KgwqDCoMKgwqDCoMKgIDB4MTVlMA0KPj4gKyNkZWZpbmUgTFNEQ19DVVJT T1IwX1BPU0lUSU9OX1JFR8KgwqDCoMKgwqDCoCAweDE1NDDCoCAvKiBbMzE6MTZdIFksIFsx NTowXSANCj4+IFggKi8NCj4+ICsjZGVmaW5lIExTRENfQ1VSU09SMF9CR19DT0xPUl9SRUfC oMKgwqDCoMKgwqAgMHgxNTUwwqAgLyogYmFja2dyb3VuZCBjb2xvciAqLw0KPj4gKyNkZWZp bmUgTFNEQ19DVVJTT1IwX0ZHX0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAweDE1NjDCoCAvKiBm b3JlZ3JvdW5kIGNvbG9yICovDQo+PiArDQo+PiArI2RlZmluZSBMU0RDX0NVUlNPUjFfQ0ZH X1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNjcwDQo+PiArI2RlZmluZSBMU0RDX0NV UlNPUjFfQUREUl9MT19SRUfCoMKgwqDCoMKgwqDCoCAweDE2ODANCj4+ICsjZGVmaW5lIExT RENfQ1VSU09SMV9BRERSX0hJX1JFR8KgwqDCoMKgwqDCoMKgIDB4MTZlMA0KPj4gKyNkZWZp bmUgTFNEQ19DVVJTT1IxX1BPU0lUSU9OX1JFR8KgwqDCoMKgwqDCoCAweDE2OTDCoCAvKiBb MzE6MTZdIFksIFsxNTowXSANCj4+IFggKi8NCj4+ICsjZGVmaW5lIExTRENfQ1VSU09SMV9C R19DT0xPUl9SRUfCoMKgwqDCoMKgwqAgMHgxNkEwwqAgLyogYmFja2dyb3VuZCBjb2xvciAq Lw0KPj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0ZHX0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAw eDE2QjDCoCAvKiBmb3JlZ3JvdW5kIGNvbG9yICovDQo+PiArDQo+PiArLyoNCj4+ICsgKiBE QyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciwgMzJiaXQsIEFkZHJlc3MgT2Zmc2V0OiAx NTcwDQo+PiArICoNCj4+ICsgKiBCaXRzIDE1OjAgaW5pZGljYXRlIHRoZSBpbnRlcnJ1cHQg c3RhdHVzDQo+PiArICogQml0cyAzMToxNiBjb250cm9sIGVuYWJsZSBpbnRlcnJ1cHRzIGNv cnJlc3BvbmRpbmcgdG8gYml0IDE1OjAgb3Igbm90DQo+PiArICogV3JpdGUgMSB0byBlbmFi bGUsIHdyaXRlIDAgdG8gZGlzYWJsZQ0KPj4gKyAqDQo+PiArICogUkY6IFJlYWQgRmluaXNo ZWQNCj4+ICsgKiBJREJVOiBJbnRlcm5hbCBEYXRhIEJ1ZmZlciBVbmRlcmZsb3cNCj4+ICsg KiBJREJGVTogSW50ZXJuYWwgRGF0YSBCdWZmZXIgRmF0YWwgVW5kZXJmbG93DQo+PiArICog Q0JSRjogQ3Vyc29yIEJ1ZmZlciBSZWFkIEZpbmlzaGVkIEZsYWcsIG5vIHVzZS4NCj4+ICsg Kg0KPj4gKyAqIA0KPj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKw0KPj4gKyAqIHwgMzE6MjcgfMKgwqDC oMKgwqDCoMKgwqAgMjY6MTbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTU6MTEgfMKgwqAg MTDCoMKgIHzCoMKgIDnCoMKgwqAgfCAgIA0KPj4gOMKgwqAgfA0KPj4gKyAqIA0KPj4gKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tKw0KPj4gKyAqIHzCoCBOL0HCoCB8IEludGVycnVwdCBFbmFibGUgQ29u dHJvbCB8wqAgTi9BwqAgfCBJREJGVTAgfCBJREJGVTEgfCANCj4+IElEQlUwIHwNCj4+ICsg KiANCj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLSsNCj4+ICsgKg0KPj4gKyAqICstLS0tLS0tKy0tLS0t Ky0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsNCj4+ ICsgKiB8wqDCoCA3wqDCoCB8wqAgNsKgIHzCoCA1wqAgfMKgIDTCoMKgIHzCoMKgIDPCoMKg wqAgfMKgwqAgMsKgwqDCoCB8wqDCoCAxwqDCoMKgIHzCoMKgIDDCoMKgwqAgfA0KPj4gKyAq ICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLSsNCj4+ICsgKiB8IElEQlUxIHwgUkYwIHwgUkYxIHwgQ1JSRiB8IEhTWU5D MCB8IFZTWU5DMCB8IEhTWU5DMSB8IFZTWU5DMSB8DQo+PiArICogKy0tLS0tLS0rLS0tLS0r LS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKw0KPj4g KyAqDQo+PiArICogdW5mb3J0dW5hdGVseSwgQ1JUQzAncyBpbnRlcnJ1cHQgaXMgbWVzcyB3 aXRoIENSVEMxJ3MgaW50ZXJydXB0DQo+PiArICovDQo+PiArDQo+PiArI2RlZmluZSBMU0RD X0lOVF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE1NzAN Cj4+ICsNCj4+ICsjZGVmaW5lIElOVF9DUlRDMF9WU1lOQ8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgyKQ0KPj4gKyNkZWZpbmUgSU5UX0NSVEMwX0hTWU5DwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDMpDQo+PiArI2RlZmluZSBJTlRfQ1JU QzBfUkbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNikNCj4+ ICsjZGVmaW5lIElOVF9DUlRDMF9JREJVwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoOCkNCj4+ICsjZGVmaW5lIElOVF9DUlRDMF9JREJGVcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxMCkNCj4+ICsNCj4+ICsjZGVmaW5lIElOVF9DUlRD MV9WU1lOQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4gKyNk ZWZpbmUgSU5UX0NSVEMxX0hTWU5DwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDEpDQo+PiArI2RlZmluZSBJTlRfQ1JUQzFfUkbCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCSVQoNSkNCj4+ICsjZGVmaW5lIElOVF9DUlRDMV9JREJVwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNykNCj4+ICsjZGVmaW5lIElO VF9DUlRDMV9JREJGVcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg5KQ0K Pj4gKw0KPj4gKyNkZWZpbmUgSU5UX0NSVEMwX1ZTWU5DX0VOwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQklUKDE4KQ0KPj4gKyNkZWZpbmUgSU5UX0NSVEMwX0hTWU5DX0VOwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE5KQ0KPj4gKyNkZWZpbmUgSU5UX0NSVEMwX1JG X0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDIyKQ0KPj4gKyNkZWZp bmUgSU5UX0NSVEMwX0lEQlVfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgy NCkNCj4+ICsjZGVmaW5lIElOVF9DUlRDMF9JREJGVV9FTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEJJVCgyNikNCj4+ICsNCj4+ICsjZGVmaW5lIElOVF9DUlRDMV9WU1lOQ19FTsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxNikNCj4+ICsjZGVmaW5lIElOVF9DUlRD MV9IU1lOQ19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxNykNCj4+ICsjZGVm aW5lIElOVF9DUlRDMV9SRl9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJ VCgyMSkNCj4+ICsjZGVmaW5lIElOVF9DUlRDMV9JREJVX0VOwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBCSVQoMjMpDQo+PiArI2RlZmluZSBJTlRfQ1JUQzFfSURCRlVfRU7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMjUpDQo+PiArDQo+PiArI2RlZmluZSBJTlRf U1RBVFVTX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDE1 LCAwKQ0KPj4gKw0KPj4gKy8qDQo+PiArICogTFM3QTEwMDAvTFM3QTIwMDAgaGF2ZSA0IGdw aW9zIHdoaWNoIGFyZSB1c2VkIHRvIGVtdWxhdGVkIEkyQy4NCj4+ICsgKiBUaGV5IGFyZSB1 bmRlciBjb250cm9sIG9mIHRoZSBMUzdBX0RDX0dQSU9fREFUX1JFRyBhbmQgDQo+PiBMUzdB X0RDX0dQSU9fRElSX1JFRw0KPj4gKyAqIHJlZ2lzdGVyLCBUaG9zZSBHUElPcyBoYXMgbm8g cmVsYXRpb25zaGlwIHdodGggdGhlIEdQSU8gaGFyZHdhcmUgDQo+PiBvbiB0aGUNCj4+ICsg KiBicmlkZ2UgY2hpcCBpdHNlbGYuIFRob3NlIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIERD IHJlZ2lzdGVyIGJhc2UgDQo+PiBhZGRyZXNzDQo+PiArICoNCj4+ICsgKiBMUzJrMTAwMCBk b24ndCBoYXZlIHRob3NlIHJlZ2lzdGVycywgdGhleSB1c2UgaGFyZHdhcmUgaTJjIG9yIA0K Pj4gZ2VuZXJhbCBHUElPDQo+PiArICogZW11bGF0ZWQgaTJjIGZyb20gbGludXggaTJjIHN1 YnN5c3RlbS4NCj4+ICsgKg0KPj4gKyAqIEdQSU8gZGF0YSByZWdpc3RlciwgYWRkcmVzcyBv ZmZzZXQ6IDB4MTY1MA0KPj4gKyAqwqDCoCArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKw0KPj4gKyAqwqDCoCB8IDcgfCA2IHwgNSB8IDQgfMKgIDPCoCB8wqAg MsKgIHzCoCAxwqAgfMKgIDDCoCB8DQo+PiArICrCoMKgICstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rDQo+PiArICrCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqAgRFZPMcKgwqAgfMKgwqDCoCBEVk8wwqDCoCB8DQo+PiArICrC oMKgICvCoMKgwqDCoMKgIE4vQcKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Kw0KPj4gKyAqwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFNDTCB8IFNE QSB8IFNDTCB8IFNEQSB8DQo+PiArICrCoMKgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rDQo+PiArICovDQo+PiArI2RlZmluZSBMUzdBX0RDX0dQSU9fREFU X1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNjUwDQo+PiArDQo+PiArLyoNCj4+ICsg KsKgIEdQSU8gSW5wdXQvT3V0cHV0IGRpcmVjdGlvbiBjb250cm9sIHJlZ2lzdGVyLCBhZGRy ZXNzIG9mZnNldDogMHgxNjYwDQo+PiArICovDQo+PiArI2RlZmluZSBMUzdBX0RDX0dQSU9f RElSX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNjYwDQo+PiArDQo+PiArLyoNCj4+ ICsgKsKgIExTN0EyMDAwIGhhcyB0d28gYnVpbHQtaW4gSERNSSBFbmNvZGVyIGFuZCBvbmUg VkdBIGVuY29kZXINCj4+ICsgKi8NCj4+ICsNCj4+ICsvKg0KPj4gKyAqIE51bWJlciBvZiBj b250aW51b3VzIHBhY2tldHMgbWF5IGJlIHByZXNlbnQNCj4+ICsgKiBpbiBIRE1JIGhibGFu ayBhbmQgdmJsYW5rIHpvbmUsIHNob3VsZCA+PSA0OA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUg TFNEQ19IRE1JMF9aT05FX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE3MDANCj4+ ICsjZGVmaW5lIExTRENfSERNSTFfWk9ORV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxNzEwDQo+PiArDQo+PiArLyogSERNSSBJdGVyZmFjZSBDb250cm9sIFJlZyAqLw0KPj4g KyNkZWZpbmUgSERNSV9JTlRFUkZBQ0VfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJJVCgwKQ0KPj4gKyNkZWZpbmUgSERNSV9QQUNLRVRfRU7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4gKyNkZWZpbmUgSERNSV9BVURJT19FTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMikNCj4+ICsvKg0KPj4gKyAq IFByZWFtYmxlOg0KPj4gKyAqIEltbWVkaWF0ZWx5IHByZWNlZGluZyBlYWNoIHZpZGVvIGRh dGEgcGVyaW9kIG9yIGRhdGEgaXNsYW5kIHBlcmlvZCANCj4+IGlzIHRoZQ0KPj4gKyAqIHBy ZWFtYmxlLiBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgZWlnaHQgaWRlbnRpY2FsIGNvbnRyb2wg Y2hhcmFjdGVycyANCj4+IHRoYXQNCj4+ICsgKiBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB1cGNv bWluZyBkYXRhIHBlcmlvZCBpcyBhIHZpZGVvIGRhdGEgcGVyaW9kIA0KPj4gb3IgaXMgYQ0K Pj4gKyAqIGRhdGEgaXNsYW5kLiBUaGUgdmFsdWVzIG9mIENUTDAsIENUTDEsIENUTDIsIGFu ZCBDVEwzIGluZGljYXRlIHRoZSANCj4+IHR5cGUgb2YNCj4+ICsgKiBkYXRhIHBlcmlvZCB0 aGF0IGZvbGxvd3MuDQo+PiArICovDQo+PiArI2RlZmluZSBIRE1JX1ZJREVPX1BSRUFNQkxF X01BU0vCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDcsIDQpDQo+PiArI2RlZmluZSBIRE1JX1ZJ REVPX1BSRUFNQkxFX1NISUZUwqDCoMKgwqDCoMKgIDQNCj4+ICsvKiAxOiBodyBpMmMsIDA6 IGdwaW8gZW11IGkyYywgc2hvdWxkbid0IHB1dCBpbiANCj4+IExTRENfSERNSXhfSU5URl9D VFJMX1JFRyAqLw0KPj4gKyNkZWZpbmUgSFdfSTJDX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDgpDQo+PiArI2RlZmluZSBIRE1JX0NUTF9Q RVJJT0RfTU9ERcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDkpDQo+PiArI2RlZmluZSBM U0RDX0hETUkwX0lOVEZfQ1RSTF9SRUfCoMKgwqDCoMKgwqDCoCAweDE3MjANCj4+ICsjZGVm aW5lIExTRENfSERNSTFfSU5URl9DVFJMX1JFR8KgwqDCoMKgwqDCoMKgIDB4MTczMA0KPj4g Kw0KPj4gKyNkZWZpbmUgSERNSV9QSFlfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgSERNSV9QSFlfUkVTRVRfTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMSkNCj4+ICsjZGVmaW5lIEhETUlfUEhZ X1RFUk1fTF9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg4KQ0KPj4gKyNkZWZp bmUgSERNSV9QSFlfVEVSTV9IX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDkp DQo+PiArI2RlZmluZSBIRE1JX1BIWV9URVJNX0RFVF9FTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQklUKDEwKQ0KPj4gKyNkZWZpbmUgSERNSV9QSFlfVEVSTV9TVEFUVVPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgxMSkNCj4+ICsjZGVmaW5lIExTRENfSERNSTBfUEhZX0NUUkxf UkVHwqDCoMKgwqDCoMKgwqDCoCAweDE4MDANCj4+ICsjZGVmaW5lIExTRENfSERNSTFfUEhZ X0NUUkxfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE4MTANCj4+ICsNCj4+ICsvKg0KPj4gKyAq wqAgSURGOiBJbnB1dCBEaXZpc2lvbiBGYWN0b3INCj4+ICsgKsKgIE9ERjogT3V0cHV0IERp dmlzaW9uIEZhY3Rvcg0KPj4gKyAqwqDCoCBMRjogTG9vcCBGYWN0b3INCj4+ICsgKsKgwqDC oCBNOiBSZXF1aXJlZCBNdWx0DQo+PiArICoNCj4+ICsgKsKgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4+ICsgKsKgIHzC oMKgwqDCoCBGaW4gKGtIWinCoMKgwqDCoCB8IE3CoCB8IElERiB8IExGIHwgT0RGIHzCoMKg IEZvdXQoTWh6KcKgIHwNCj4+ICsgKsKgIHwtLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0t LS0rLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLXwNCj4+ICsgKsKgIHzCoCAxNzAwMDAgfiAz NDAwMDDCoCB8IDEwIHwgMTbCoCB8IDQwIHzCoCAxwqAgfCAxNzAwIH4gMzQwMMKgIHwNCj4+ ICsgKsKgIHzCoMKgIDg1MDAwIH4gMTcwMDAwwqAgfCAxMCB8wqAgOMKgIHwgNDAgfMKgIDLC oCB8wqAgODUwIH4gMTcwMMKgIHwNCj4+ICsgKsKgIHzCoMKgIDQyNTAwIH7CoCA4NTAwMMKg IHwgMTAgfMKgIDTCoCB8IDQwIHzCoCA0wqAgfMKgIDQyNSB+IDg1MMKgwqAgfA0KPj4gKyAq wqAgfMKgwqAgMjEyNTAgfsKgIDQyNTAwwqAgfCAxMCB8wqAgMsKgIHwgNDAgfMKgIDjCoCB8 IDIxMi41IH4gNDI1wqAgfA0KPj4gKyAqwqAgfMKgwqAgMjAwMDAgfsKgIDIxMjUwwqAgfCAx MCB8wqAgMcKgIHwgNDAgfCAxNsKgIHzCoCAyMDAgfiAyMTIuNSB8DQo+PiArICrCoCArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r DQo+PiArICovDQo+PiArI2RlZmluZSBMU0RDX0hETUkwX1BIWV9QTExfUkVHwqDCoMKgwqDC oMKgwqDCoMKgIDB4MTgyMA0KPj4gKyNkZWZpbmUgTFNEQ19IRE1JMV9QSFlfUExMX1JFR8Kg wqDCoMKgwqDCoMKgwqDCoCAweDE4MzANCj4+ICsNCj4+ICsvKiBIaWdoIGxldmVsIGR1cmF0 aW9uIG5lZWQgPiAxdXMgKi8NCj4+ICsjZGVmaW5lIEhETUlfUExMX0VOQUJMRcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgSERNSV9QTExf TE9DS0VEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE2KQ0KPj4gKy8q IEJ5cGFzcyB0aGUgc29mdHdhcmUgY29uZmlndXJlZCB2YWx1ZXMsIHVzaW5nIGRlZmF1bHQg c291cmNlIGZyb20gDQo+PiBzb21ld2FyZSAqLw0KPj4gKyNkZWZpbmUgSERNSV9QTExfQllQ QVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE3KQ0KPj4gKw0KPj4g KyNkZWZpbmUgSERNSV9QTExfSURGX1NISUZUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MQ0KPj4gKyNkZWZpbmUgSERNSV9QTExfSURGX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEdFTk1BU0soNSwgMSkNCj4+ICsjZGVmaW5lIEhETUlfUExMX0xGX1NISUZUwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA2DQo+PiArI2RlZmluZSBIRE1JX1BMTF9MRl9N QVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMTIsIDYpDQo+PiAr I2RlZmluZSBIRE1JX1BMTF9PREZfU0hJRlTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAx Mw0KPj4gKyNkZWZpbmUgSERNSV9QTExfT0RGX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEdFTk1BU0soMTUsIDEzKQ0KPj4gKw0KPj4gKy8qIExTN0EyMDAwL0xTMksyMDAw IGhhcyBocGQgc3RhdHVzIHJlZywgd2hpbGUgdGhlIHR3byBoZG1pJ3Mgc3RhdHVzDQo+PiAr ICogbG9jYXRlZCBhdCB0aGUgb25lIHJlZ2lzdGVyIGFnYWluLg0KPj4gKyAqLw0KPj4gKyNk ZWZpbmUgTFNEQ19IRE1JX0hQRF9TVEFUVVNfUkVHwqDCoMKgwqDCoMKgwqAgMHgxQkEwDQo+ PiArI2RlZmluZSBIRE1JMF9IUERfRkxBR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQklUKDApDQo+PiArI2RlZmluZSBIRE1JMV9IUERfRkxBR8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDEpDQo+PiArDQo+PiArI2RlZmluZSBMU0RDX0hE TUkwX1BIWV9DQUxfUkVHwqDCoMKgwqDCoMKgwqDCoMKgIDB4MThjMA0KPj4gKyNkZWZpbmUg TFNEQ19IRE1JMV9QSFlfQ0FMX1JFR8KgwqDCoMKgwqDCoMKgwqDCoCAweDE4ZDANCj4+ICsN Cj4+ICsvKiBBVkkgSW5mb0ZyYW1lICovDQo+PiArI2RlZmluZSBMU0RDX0hETUkwX0FWSV9D T05URU5UMMKgwqDCoMKgwqDCoMKgwqAgMHgxOGUwDQo+PiArI2RlZmluZSBMU0RDX0hETUkx X0FWSV9DT05URU5UMMKgwqDCoMKgwqDCoMKgwqAgMHgxOGYwDQo+PiArI2RlZmluZSBMU0RD X0hETUkwX0FWSV9DT05URU5UMcKgwqDCoMKgwqDCoMKgwqAgMHgxOTAwDQo+PiArI2RlZmlu ZSBMU0RDX0hETUkxX0FWSV9DT05URU5UMcKgwqDCoMKgwqDCoMKgwqAgMHgxOTEwDQo+PiAr I2RlZmluZSBMU0RDX0hETUkwX0FWSV9DT05URU5UMsKgwqDCoMKgwqDCoMKgwqAgMHgxOTIw DQo+PiArI2RlZmluZSBMU0RDX0hETUkxX0FWSV9DT05URU5UMsKgwqDCoMKgwqDCoMKgwqAg MHgxOTMwDQo+PiArI2RlZmluZSBMU0RDX0hETUkwX0FWSV9DT05URU5UM8KgwqDCoMKgwqDC oMKgwqAgMHgxOTQwDQo+PiArI2RlZmluZSBMU0RDX0hETUkxX0FWSV9DT05URU5UM8KgwqDC oMKgwqDCoMKgwqAgMHgxOTUwDQo+PiArDQo+PiArLyogMTogZW5hYmxlIGF2aSBpbmZvZnJh bWUgcGFja2V0LCAwOiBkaXNhYmxlIGF2aSBpbmZvZnJhbWUgcGFja2V0ICovDQo+PiArI2Rl ZmluZSBBVklfUEtUX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDApDQo+PiArLyogMTogc2VuZCBvbmUgZXZlcnkgdHdvIGZyYW1lLCAwOiBzZW5kIG9u ZSBlYWNoIGZyYW1lICovDQo+PiArI2RlZmluZSBBVklfUEtUX1NFTkRfRlJFUcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDEpDQo+PiArLyoNCj4+ICsgKiAxOiB3cml0ZSAx IHRvIGZsdXNoIGF2aSByZWcgY29udGVudDAgfiBjb250ZW50MyB0byB0aGUgcGFja2V0IHRv IA0KPj4gYmUgc2VuZCwNCj4+ICsgKiBUaGUgaGFyZHdhcmUgd2lsbCBjbGVhciB0aGlzIGJp dCBhdXRvbWF0aWNhbGx5Lg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgQVZJX1BLVF9VUERBVEXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyKQ0KPj4gKw0KPj4gKyNk ZWZpbmUgTFNEQ19IRE1JMF9BVklfSU5GT19DUlRMX1JFR8KgwqDCoCAweDE5NjANCj4+ICsj ZGVmaW5lIExTRENfSERNSTFfQVZJX0lORk9fQ1JUTF9SRUfCoMKgwqAgMHgxOTcwDQo+PiAr DQo+PiArLyoNCj4+ICsgKiBMUzdBMjAwMCBoYXMgdGhlIGhhcmR3YXJlIHdoaWNoIGNvdW50 IHRoZSBudW1iZXIgb2YgdmJsYW5rIGdlbmVyYXRlZA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUg TFNEQ19DUlRDMF9WU1lOQ19DT1VOVEVSX1JFR8KgwqDCoCAweDFBMDANCj4+ICsjZGVmaW5l IExTRENfQ1JUQzFfVlNZTkNfQ09VTlRFUl9SRUfCoMKgwqAgMHgxQTEwDQo+PiArDQo+PiAr LyoNCj4+ICsgKiBMUzdBMjAwMCBoYXMgdGhlIGhhcmR3YXJlIHdoaWNoIGNvdW50IHRoZSBu dW1iZXIgb2YgdmJsYW5rIGdlbmVyYXRlZA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgTFNEQ19I RE1JMF9BVURJT19QTExfTE9fUkVHwqDCoMKgwqAgMHgxQTIwDQo+PiArI2RlZmluZSBMU0RD X0hETUkxX0FVRElPX1BMTF9MT19SRUfCoMKgwqDCoCAweDFBMzANCj4+ICsNCj4+ICsjZGVm aW5lIExTRENfSERNSTBfQVVESU9fUExMX0hJX1JFR8KgwqDCoMKgIDB4MUE0MA0KPj4gKyNk ZWZpbmUgTFNEQ19IRE1JMV9BVURJT19QTExfSElfUkVHwqDCoMKgwqAgMHgxQTUwDQo+PiAr DQo+PiArI2VuZGlmDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNk Y190dG0uYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY190dG0uYw0KPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTZkYTIzYjkyNDA5 DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2Rj X3R0bS5jDQo+PiBAQCAtMCwwICsxLDQ1MSBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wKw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rydi5oPg0K Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX21h bmFnZWQuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL3R0bS90dG1fcmFuZ2VfbWFuYWdlci5oPg0K Pj4gKyNpbmNsdWRlIDxkcm0vdHRtL3R0bV90dC5oPg0KPj4gKw0KPj4gKyNpbmNsdWRlICJs c2RjX2Rydi5oIg0KPj4gKyNpbmNsdWRlICJsc2RjX3R0bS5oIg0KPj4gKw0KPj4gK3N0YXRp YyB2b2lkIGxzZGNfdHRtX3R0X2Rlc3Ryb3koc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0 cnVjdCANCj4+IHR0bV90dCAqdHQpDQo+PiArew0KPj4gK8KgwqDCoCB0dG1fdHRfZmluaSh0 dCk7DQo+PiArwqDCoMKgIGtmcmVlKHR0KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHN0 cnVjdCB0dG1fdHQgKg0KPj4gK2xzZGNfdHRtX3R0X2NyZWF0ZShzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvLCB1aW50MzJfdCBwYWdlX2ZsYWdzKQ0KPj4gK3sNCj4+ICvCoMKgwqAg c3RydWN0IHR0bV90dCAqdHQ7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDC oMKgIHR0ID0ga3phbGxvYyhzaXplb2YoKnR0KSwgR0ZQX0tFUk5FTCk7DQo+PiArwqDCoMKg IGlmICghdHQpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7DQo+PiArDQo+PiAr wqDCoMKgIHJldCA9IHR0bV90dF9pbml0KHR0LCBibywgcGFnZV9mbGFncywgdHRtX2NhY2hl ZCwgMCk7DQo+PiArwqDCoMKgIGlmIChyZXQgPCAwKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAg a2ZyZWUodHQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOw0KPj4gK8KgwqDC oCB9DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiB0dDsNCj4+ICt9DQo+PiArDQo+PiArdm9p ZCBsc2RjX2JvX3NldF9wbGFjZW1lbnQoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8s IHUzMiBkb21haW4sIA0KPj4gdTMyIGZsYWdzKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0 IGxzZGNfYm8gKmxibyA9IHRvX2xzZGNfYm8odGJvKTsNCj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IGk7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGludCBjID0gMDsNCj4+ICsNCj4+ICvCoMKg wqAgbGJvLT5wbGFjZW1lbnQucGxhY2VtZW50ID0gbGJvLT5wbGFjZW1lbnRzOw0KPj4gK8Kg wqDCoCBsYm8tPnBsYWNlbWVudC5idXN5X3BsYWNlbWVudCA9IGxiby0+cGxhY2VtZW50czsN Cj4+ICsNCj4+ICvCoMKgwqAgaWYgKGRvbWFpbiAmIExTRENfR0VNX0RPTUFJTl9WUkFNKSB7 DQo+PiArwqDCoMKgwqDCoMKgwqAgbGJvLT5wbGFjZW1lbnRzW2NdLm1lbV90eXBlID0gVFRN X1BMX1ZSQU07DQo+PiArwqDCoMKgwqDCoMKgwqAgbGJvLT5wbGFjZW1lbnRzW2MrK10uZmxh Z3MgPSBmbGFnczsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoZG9tYWlu ICYgTFNEQ19HRU1fRE9NQUlOX1NZU1RFTSB8fCAhYykgew0KPj4gK8KgwqDCoMKgwqDCoMKg IGxiby0+cGxhY2VtZW50c1tjXS5tZW1fdHlwZSA9IFRUTV9QTF9TWVNURU07DQo+PiArwqDC oMKgwqDCoMKgwqAgbGJvLT5wbGFjZW1lbnRzW2MrK10uZmxhZ3MgPSBmbGFnczsNCj4+ICvC oMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCBsYm8tPnBsYWNlbWVudC5udW1fcGxhY2VtZW50 ID0gYzsNCj4+ICvCoMKgwqAgbGJvLT5wbGFjZW1lbnQubnVtX2J1c3lfcGxhY2VtZW50ID0g YzsNCj4+ICsNCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGM7ICsraSkgew0KPj4gK8Kg wqDCoMKgwqDCoMKgIGxiby0+cGxhY2VtZW50c1tpXS5mcGZuID0gMDsNCj4+ICvCoMKgwqDC oMKgwqDCoCBsYm8tPnBsYWNlbWVudHNbaV0ubHBmbiA9IDA7DQo+PiArwqDCoMKgIH0NCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgbHNkY19ib19ldmljdF9mbGFncyhzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKnRibywNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IHR0bV9wbGFjZW1lbnQgKnBsYWNlbWVudCkNCj4+ICt7DQo+PiArwqDC oMKgIHN0cnVjdCBsc2RjX2JvICpsYm8gPSB0b19sc2RjX2JvKHRibyk7DQo+PiArDQo+PiAr wqDCoMKgIGxzZGNfYm9fc2V0X3BsYWNlbWVudCh0Ym8sIExTRENfR0VNX0RPTUFJTl9TWVNU RU0sIDApOw0KPj4gKw0KPj4gK8KgwqDCoCAqcGxhY2VtZW50ID0gbGJvLT5wbGFjZW1lbnQ7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgbHNkY19ib19tb3ZlKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqdGJvLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBl dmljdCwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9u X2N0eCAqY3R4LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9yZXNv dXJjZSAqbmV3X21lbSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1f cGxhY2UgKmhvcCkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2JvICpsYm8gPSB0 b19sc2RjX2JvKHRibyk7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g dGJvLT5iYXNlLmRldjsNCj4+ICsNCj4+ICvCoMKgwqAgaWYgKGRybV9XQVJOX09OX09OQ0Uo ZGRldiwgbGJvLT52bWFwX3VzZV9jb3VudCkpDQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBq dXN0X21vdmVfaXQ7DQo+PiArDQo+PiArwqDCoMKgIHR0bV9ib192dW5tYXAodGJvLCAmbGJv LT5tYXApOw0KPj4gK8KgwqDCoCAvKiBleHBsaWNpdGx5IGNsZWFyIG1hcHBpbmcgZm9yIG5l eHQgdm1hcCBjYWxsICovDQo+PiArwqDCoMKgIGlvc3lzX21hcF9jbGVhcigmbGJvLT5tYXAp Ow0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICIlczogZXZpY3Q6ICVzXG4iLCBf X2Z1bmNfXywgZXZpY3QgPyAiWWVzIiA6ICJObyIpOw0KPj4gKw0KPj4gK2p1c3RfbW92ZV9p dDoNCj4+ICvCoMKgwqAgcmV0dXJuIHR0bV9ib19tb3ZlX21lbWNweSh0Ym8sIGN0eCwgbmV3 X21lbSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfYm9fZGVsZXRlX21l bV9ub3RpZnkoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pDQo+PiArew0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbHNkY19ibyAqbGJvID0gdG9fbHNkY19ibyh0Ym8pOw0KPj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHRiby0+YmFzZS5kZXY7DQo+PiArDQo+PiAr wqDCoMKgIGlmIChkcm1fV0FSTl9PTl9PTkNFKGRkZXYsIGxiby0+dm1hcF91c2VfY291bnQp KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+ICsNCj4+ICvCoMKgwqAgdHRtX2Jv X3Z1bm1hcCh0Ym8sICZsYm8tPm1hcCk7DQo+PiArwqDCoMKgIGlvc3lzX21hcF9jbGVhcigm bGJvLT5tYXApOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfYm9fcmVzZXJ2 ZV9pb19tZW0oc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0pDQo+PiArew0K Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSBiZGV2X3RvX2xzZGMoYmRl dik7DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwID0gbGRldi0+ ZGVzY3A7DQo+PiArDQo+PiArwqDCoMKgIHN3aXRjaCAobWVtLT5tZW1fdHlwZSkgew0KPj4g K8KgwqDCoCBjYXNlIFRUTV9QTF9TWVNURU06DQo+PiArwqDCoMKgwqDCoMKgwqAgLyogbm90 aGluZyB0byBkbyAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4gK8KgwqDCoCBj YXNlIFRUTV9QTF9WUkFNOg0KPj4gK8KgwqDCoMKgwqDCoMKgIG1lbS0+YnVzLm9mZnNldCA9 IChtZW0tPnN0YXJ0IDw8IFBBR0VfU0hJRlQpICsgbGRldi0+dnJhbV9iYXNlOw0KPj4gK8Kg wqDCoMKgwqDCoMKgIG1lbS0+YnVzLmlzX2lvbWVtID0gdHJ1ZTsNCj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAoZGVzY3AtPmlzX3NvYykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1l bS0+YnVzLmNhY2hpbmcgPSB0dG1fY2FjaGVkOw0KPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbS0+YnVzLmNhY2hpbmcgPSB0dG1fd3Jp dGVfY29tYmluZWQ7DQo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArwqDCoMKgIGRl ZmF1bHQ6DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+PiArwqDCoMKg IH0NCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBzdHJ1Y3QgdHRtX2RldmljZV9mdW5jcyBsc2RjX2JvX2RyaXZlciA9IHsNCj4+ICvCoMKg wqAgLnR0bV90dF9jcmVhdGUgPSBsc2RjX3R0bV90dF9jcmVhdGUsDQo+PiArwqDCoMKgIC50 dG1fdHRfZGVzdHJveSA9IGxzZGNfdHRtX3R0X2Rlc3Ryb3ksDQo+PiArwqDCoMKgIC5ldmlj dGlvbl92YWx1YWJsZSA9IHR0bV9ib19ldmljdGlvbl92YWx1YWJsZSwNCj4+ICvCoMKgwqAg LmV2aWN0X2ZsYWdzID0gbHNkY19ib19ldmljdF9mbGFncywNCj4+ICvCoMKgwqAgLm1vdmUg PSBsc2RjX2JvX21vdmUsDQo+PiArwqDCoMKgIC5kZWxldGVfbWVtX25vdGlmeSA9IGxzZGNf Ym9fZGVsZXRlX21lbV9ub3RpZnksDQo+PiArwqDCoMKgIC5pb19tZW1fcmVzZXJ2ZSA9IGxz ZGNfYm9fcmVzZXJ2ZV9pb19tZW0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBs c2RjX2JvX2ZyZWUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pDQo+PiArew0KPj4gK8Kg wqDCoCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibyA9IHRvX3R0bV9ibyhnZW0pOw0K Pj4gKw0KPj4gK8KgwqDCoCB0dG1fYm9fcHV0KHRibyk7DQo+PiArfQ0KPj4gKw0KPj4gK2lu dCBsc2RjX2JvX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSkNCj4+ICt7DQo+PiAr wqDCoMKgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvID0gdG9fdHRtX2JvKGdlbSk7 DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2JvICpsYm8gPSB0b19sc2RjX2JvKHRibyk7DQo+ PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IHR0bV9ib19yZXNl cnZlKHRibywgdHJ1ZSwgZmFsc2UsIE5VTEwpOw0KPj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+ PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihnZW0tPmRldiwgIiVzOiAlZFxuIiwgX19mdW5j X18sIHJldCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+ICvCoMKgwqAg fQ0KPj4gKw0KPj4gK8KgwqDCoCBpZiAodGJvLT5waW5fY291bnQgPT0gMCkgew0KPj4gK8Kg wqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNlLCBm YWxzZSB9Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHR0bV9ib192YWxpZGF0 ZSh0Ym8sICZsYm8tPnBsYWNlbWVudCwgJmN0eCk7DQo+PiArwqDCoMKgwqDCoMKgwqAgaWYg KHJldCA8IDApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib191bnJlc2Vy dmUodGJvKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9lcnIoZ2VtLT5kZXYs ICIlczogJWRcbiIsIF9fZnVuY19fLCByZXQpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgdHRtX2JvX3Bpbih0Ym8pOw0KPj4gKw0KPj4gK8KgwqDCoCB0dG1f Ym9fdW5yZXNlcnZlKHRibyk7DQo+PiArDQo+PiArwqDCoMKgIHJldHVybiByZXQ7DQo+PiAr fQ0KPj4gKw0KPj4gK3ZvaWQgbHNkY19ib191bnBpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJv ID0gdG9fdHRtX2JvKGdlbSk7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDC oMKgIHJldCA9IHR0bV9ib19yZXNlcnZlKHRibywgdHJ1ZSwgZmFsc2UsIE5VTEwpOw0KPj4g K8KgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihnZW0tPmRl diwgIiVzOiBibyByZXNlcnZlIGZhaWxlZFxuIiwgX19mdW5jX18pOw0KPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybjsNCj4+ICvCoMKgwqAgfQ0KPj4gKw0KPj4gK8KgwqDCoCB0dG1fYm9f dW5waW4odGJvKTsNCj4+ICvCoMKgwqAgdHRtX2JvX3VucmVzZXJ2ZSh0Ym8pOw0KPj4gK30N Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGxzZGNfYm9fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbSwgc3RydWN0IGlvc3lzX21hcCANCj4+ICptYXApDQo+PiArew0KPj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGdlbS0+ZGV2Ow0KPj4gK8KgwqDCoCBzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibyA9IHRvX3R0bV9ibyhnZW0pOw0KPj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19ibyAqbGJvID0gdG9fbHNkY19ibyh0Ym8pOw0KPj4gK8KgwqDCoCBp bnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBkbWFfcmVzdl9hc3NlcnRfaGVsZChnZW0tPnJl c3YpOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAodGJvLT5waW5fY291bnQgPT0gMCkgew0KPj4g K8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7IGZhbHNl LCBmYWxzZSB9Ow0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHR0bV9ib192YWxp ZGF0ZSh0Ym8sICZsYm8tPnBsYWNlbWVudCwgJmN0eCk7DQo+PiArwqDCoMKgwqDCoMKgwqAg aWYgKHJldCA8IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0K Pj4gK8KgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgIHR0bV9ib19waW4odGJvKTsNCj4+ICsN Cj4+ICvCoMKgwqAgaWYgKGxiby0+dm1hcF91c2VfY291bnQgPiAwKSB7DQo+PiArwqDCoMKg wqDCoMKgwqAgZHJtX2RiZyhkZGV2LCAiJXM6IGFscmVhZHkgbWFwcGVkXG4iLCBfX2Z1bmNf Xyk7DQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBmaW5pc2g7DQo+PiArwqDCoMKgIH0NCj4+ ICsNCj4+ICvCoMKgwqAgLyogT25seSB2bWFwIGlmIHRoZSB0aGVyZSdzIG5vIG1hcHBpbmcg cHJlc2VudCAqLw0KPj4gK8KgwqDCoCBpZiAoaW9zeXNfbWFwX2lzX251bGwoJmxiby0+bWFw KSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHR0bV9ib192bWFwKHRibywgJmxiby0+ bWFwKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB0dG1fYm9fdW5waW4odGJvKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7DQo+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4gK8KgwqDCoCB9DQo+ PiArDQo+PiArZmluaXNoOg0KPj4gK8KgwqDCoCArK2xiby0+dm1hcF91c2VfY291bnQ7DQo+ PiArwqDCoMKgICptYXAgPSBsYm8tPm1hcDsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfYm9fdnVubWFwKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtLCBzdHJ1Y3QgDQo+PiBpb3N5c19tYXAgKm1hcCkNCj4+ICt7 DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZ2VtLT5kZXY7DQo+PiAr wqDCoMKgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvID0gdG9fdHRtX2JvKGdlbSk7 DQo+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2JvICpsYm8gPSB0b19sc2RjX2JvKHRibyk7DQo+ PiArDQo+PiArwqDCoMKgIGRtYV9yZXN2X2Fzc2VydF9oZWxkKGdlbS0+cmVzdik7DQo+PiAr DQo+PiArwqDCoMKgIGlmIChkcm1fV0FSTl9PTl9PTkNFKGRkZXYsICFsYm8tPnZtYXBfdXNl X2NvdW50KSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+PiArDQo+PiArwqDCoMKg IGlmIChkcm1fV0FSTl9PTl9PTkNFKGRkZXYsICFpb3N5c19tYXBfaXNfZXF1YWwoJmxiby0+ bWFwLCBtYXApKSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47IC8qIEJVRzogbWFwIG5v dCBtYXBwZWQgZnJvbSB0aGlzIEJPICovDQo+PiArDQo+PiArwqDCoMKgIGlmICgtLWxiby0+ dm1hcF91c2VfY291bnQgPiAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+ICsN Cj4+ICvCoMKgwqAgLyogV2UgZGVsYXkgdGhlIGFjdHVhbCB1bm1hcCBvcGVyYXRpb24gdW50 aWwgdGhlIEJPIGdldHMgZXZpY3RlZCAqLw0KPj4gK8KgwqDCoCB0dG1fYm9fdW5waW4odGJv KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBsc2RjX2JvX21tYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnZW0sDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqdGJvID0gdG9fdHRtX2JvKGdlbSk7DQo+PiArwqDCoMKgIGludCByZXQ7 DQo+PiArDQo+PiArwqDCoMKgIHJldCA9IHR0bV9ib19tbWFwX29iaih2bWEsIHRibyk7DQo+ PiArwqDCoMKgIGlmIChyZXQgPCAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7 DQo+PiArDQo+PiArwqDCoMKgIC8qDQo+PiArwqDCoMKgwqAgKiB0dG0gaGFzIGl0cyBvd24g b2JqZWN0IHJlZmNvdW50aW5nLCBzbyBkcm9wIGdlbSByZWZlcmVuY2UNCj4+ICvCoMKgwqDC oCAqIHRvIGF2b2lkIGRvdWJsZSBhY2NvdW50aW5nIGNvdW50aW5nLg0KPj4gK8KgwqDCoMKg ICovDQo+PiArwqDCoMKgIGRybV9nZW1fb2JqZWN0X3B1dChnZW0pOw0KPj4gKw0KPj4gK8Kg wqDCoCByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZ2VtX29iamVjdF9mdW5jcyBsc2RjX2dlbV9vYmplY3RfZnVuY3MgPSB7DQo+PiArwqDC oMKgIC5mcmVlwqDCoCA9IGxzZGNfYm9fZnJlZSwNCj4+ICvCoMKgwqAgLnBpbsKgwqDCoCA9 IGxzZGNfYm9fcGluLA0KPj4gK8KgwqDCoCAudW5waW7CoCA9IGxzZGNfYm9fdW5waW4sDQo+ PiArwqDCoMKgIC52bWFwwqDCoCA9IGxzZGNfYm9fdm1hcCwNCj4+ICvCoMKgwqAgLnZ1bm1h cCA9IGxzZGNfYm9fdnVubWFwLA0KPj4gK8KgwqDCoCAubW1hcMKgwqAgPSBsc2RjX2JvX21t YXAsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBsc2RjX2JvX2Rlc3Ryb3koc3Ry dWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3Qg bHNkY19ibyAqbGJvID0gdG9fbHNkY19ibyh0Ym8pOw0KPj4gKw0KPj4gK8KgwqDCoCBXQVJO X09OKGxiby0+dm1hcF91c2VfY291bnQpOw0KPj4gK8KgwqDCoCBXQVJOX09OKGlvc3lzX21h cF9pc19zZXQoJmxiby0+bWFwKSk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9nZW1fb2JqZWN0 X3JlbGVhc2UoJnRiby0+YmFzZSk7DQo+PiArDQo+PiArwqDCoMKgIGtmcmVlKGxibyk7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgbHNkY19ibyAqbHNkY19ib19jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRkZXYsIHNpemVfdCANCj4+IHNpemUpDQo+PiArew0KPj4g K8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4g K8KgwqDCoCBzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiA9ICZsZGV2LT5iZGV2Ow0KPj4gK8Kg wqDCoCBzdHJ1Y3QgbHNkY19ibyAqbGJvOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKnRibzsNCj4+ICvCoMKgwqAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW07 DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiArwqDCoMKgIGxibyA9IGt6YWxsb2Mo c2l6ZW9mKCpsYm8pLCBHRlBfS0VSTkVMKTsNCj4+ICvCoMKgwqAgaWYgKCFsYm8pDQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+PiArDQo+PiArwqDC oMKgIHRibyA9ICZsYm8tPmJvOw0KPj4gK8KgwqDCoCBnZW0gPSAmdGJvLT5iYXNlOw0KPj4g K8KgwqDCoCBnZW0tPmZ1bmNzID0gJmxzZGNfZ2VtX29iamVjdF9mdW5jczsNCj4+ICsNCj4+ ICvCoMKgwqAgcmV0ID0gZHJtX2dlbV9vYmplY3RfaW5pdChkZGV2LCBnZW0sIHNpemUpOw0K Pj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+PiArwqDCoMKgwqDCoMKgwqAga2ZyZWUobGJvKTsN Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUihyZXQpOw0KPj4gK8KgwqDCoCB9 DQo+PiArDQo+PiArwqDCoMKgIHRiby0+YmRldiA9IGJkZXY7DQo+PiArwqDCoMKgIGxzZGNf Ym9fc2V0X3BsYWNlbWVudCh0Ym8sIExTRENfR0VNX0RPTUFJTl9TWVNURU0sIDApOw0KPj4g Kw0KPj4gK8KgwqDCoCByZXQgPSB0dG1fYm9faW5pdF92YWxpZGF0ZShiZGV2LA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0Ym8sDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib190eXBlX2RldmljZSwNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmxiby0+cGxhY2VtZW50LA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwLA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwgTlVMTCwgTlVMTCwNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbHNkY19ib19kZXN0cm95 KTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJS X1BUUihyZXQpOw0KPj4gKw0KPj4gK8KgwqDCoCByZXR1cm4gbGJvOw0KPj4gK30NCj4+ICsN Cj4+ICt1NjQgbHNkY19ib19ncHVfb2Zmc2V0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAq dGJvKQ0KPj4gK3sNCj4+ICvCoMKgwqAgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzb3VyY2Ug PSB0Ym8tPnJlc291cmNlOw0KPj4gKw0KPj4gK8KgwqDCoCBpZiAoV0FSTl9PTl9PTkNFKCF0 Ym8tPnBpbl9jb3VudCkpDQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7DQo+ PiArDQo+PiArwqDCoMKgIC8qIEtlZXAgVFRNIGJlaGF2aW9yIGZvciBub3csIHJlbW92ZSB3 aGVuIGRyaXZlcnMgYXJlIGF1ZGl0ZWQgKi8NCj4+ICvCoMKgwqAgaWYgKFdBUk5fT05fT05D RSghcmVzb3VyY2UpKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gKw0KPj4g K8KgwqDCoCBpZiAoV0FSTl9PTl9PTkNFKHJlc291cmNlLT5tZW1fdHlwZSA9PSBUVE1fUExf U1lTVEVNKSkNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+ICsNCj4+ICvCoMKg wqAgcmV0dXJuIHJlc291cmNlLT5zdGFydCA8PCBQQUdFX1NISUZUOw0KPj4gK30NCj4+ICsN Cj4+ICtpbnQgbHNkY19kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIg KmFyZ3MpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0 b19sc2RjKGRkZXYpOw0KPj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNj cCA9IGxkZXYtPmRlc2NwOw0KPj4gK8KgwqDCoCBzaXplX3QgcGl0Y2gsIHNpemU7DQo+PiAr wqDCoMKgIHN0cnVjdCBsc2RjX2JvICpsYm87DQo+PiArwqDCoMKgIHN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqdGJvOw0KPj4gK8KgwqDCoCB1MzIgaGFuZGxlOw0KPj4gK8KgwqDCoCBp bnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBwaXRjaCA9IGFyZ3MtPndpZHRoICogRElWX1JP VU5EX1VQKGFyZ3MtPmJwcCwgOCk7DQo+PiArwqDCoMKgIHBpdGNoID0gQUxJR04ocGl0Y2gs IGRlc2NwLT5waXRjaF9hbGlnbik7DQo+PiArwqDCoMKgIHNpemUgPSBwaXRjaCAqIGFyZ3Mt PmhlaWdodDsNCj4+ICvCoMKgwqAgc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsN Cj4+ICvCoMKgwqAgaWYgKCFzaXplKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlO VkFMOw0KPj4gKw0KPj4gK8KgwqDCoCBsYm8gPSBsc2RjX2JvX2NyZWF0ZShkZGV2LCBzaXpl KTsNCj4+ICvCoMKgwqAgaWYgKElTX0VSUihsYm8pKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiBQVFJfRVJSKGxibyk7DQo+PiArDQo+PiArwqDCoMKgIHRibyA9ICZsYm8tPmJvOw0K Pj4gKw0KPj4gK8KgwqDCoCByZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgJnRi by0+YmFzZSwgJmhhbmRsZSk7DQo+PiArwqDCoMKgIGlmIChyZXQpDQo+PiArwqDCoMKgwqDC oMKgwqAgZ290byBlcnJfZHJtX2dlbV9vYmplY3RfcHV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBk cm1fZ2VtX29iamVjdF9wdXQoJnRiby0+YmFzZSk7DQo+PiArDQo+PiArwqDCoMKgIGRybV9k YmcoZGRldiwgInN0cmlkZTogJWx1LCBoZWlnaHQ6ICV1XG4iLCBwaXRjaCwgYXJncy0+aGVp Z2h0KTsNCj4+ICsNCj4+ICvCoMKgwqAgYXJncy0+cGl0Y2ggPSBwaXRjaDsNCj4+ICvCoMKg wqAgYXJncy0+c2l6ZSA9IHNpemU7DQo+PiArwqDCoMKgIGFyZ3MtPmhhbmRsZSA9IGhhbmRs ZTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+PiArDQo+PiArZXJyX2RybV9nZW1f b2JqZWN0X3B1dDoNCj4+ICvCoMKgwqAgZHJtX2dlbV9vYmplY3RfcHV0KCZ0Ym8tPmJhc2Up Ow0KPj4gK8KgwqDCoCByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtpbnQgbHNkY19k dW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlLA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTMyIGhhbmRsZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdWludDY0X3QgKm9mZnNldCkNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqZ2VtOw0KPj4gKw0KPj4gK8KgwqDCoCBnZW0gPSBkcm1fZ2VtX29iamVjdF9s b29rdXAoZmlsZSwgaGFuZGxlKTsNCj4+ICvCoMKgwqAgaWYgKCFnZW0pDQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FTk9FTlQ7DQo+PiArDQo+PiArwqDCoMKgICpvZmZzZXQgPSBk cm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJmdlbS0+dm1hX25vZGUpOw0KPj4gKw0KPj4gK8Kg wqDCoCBkcm1fZ2VtX29iamVjdF9wdXQoZ2VtKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGxzZGNfdHRtX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYsIHZvaWQgKmRhdGEpDQo+PiArew0KPj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSAoc3RydWN0IGxzZGNfZGV2aWNlICopZGF0YTsNCj4+ ICsNCj4+ICvCoMKgwqAgdHRtX3JhbmdlX21hbl9maW5pKCZsZGV2LT5iZGV2LCBUVE1fUExf VlJBTSk7DQo+PiArwqDCoMKgIHR0bV9kZXZpY2VfZmluaSgmbGRldi0+YmRldik7DQo+PiAr fQ0KPj4gKw0KPj4gK2ludCBsc2RjX3R0bV9pbml0KHN0cnVjdCBsc2RjX2RldmljZSAqbGRl dikNCj4+ICt7DQo+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYt PmJhc2U7DQo+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzOw0KPj4gK8KgwqDC oCBpbnQgcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSB0dG1fZGV2aWNlX2luaXQoJmxk ZXYtPmJkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbHNk Y19ib19kcml2ZXIsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZGV2LT5kZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZGV2 LT5hbm9uX2lub2RlLT5pX21hcHBpbmcsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBkZGV2LT52bWFfb2Zmc2V0X21hbmFnZXIsDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRydWUpOw0KPj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArDQo+PiArwqDCoMKgIG51bV9wYWdlcyA9IGxk ZXYtPnZyYW1fc2l6ZSA+PiBQQUdFX1NISUZUOw0KPj4gKw0KPj4gK8KgwqDCoCByZXQgPSB0 dG1fcmFuZ2VfbWFuX2luaXQoJmxkZXYtPmJkZXYsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgVFRNX1BMX1ZSQU0sDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZmFsc2UsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbnVtX3BhZ2VzKTsNCj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJudW1iZXIg b2YgcGFnZXM6ICVsdVxuIiwgbnVtX3BhZ2VzKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJu IGRybW1fYWRkX2FjdGlvbl9vcl9yZXNldChkZGV2LCBsc2RjX3R0bV9maW5pLCBsZGV2KTsN Cj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY190dG0u aCANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY190dG0uaA0KPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGQxM2E0MDk4Y2EzDQo+PiAt LS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3R0bS5o DQo+PiBAQCAtMCwwICsxLDY0IEBADQo+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4+ICsNCj4+ICsjaWZuZGVmIF9fTFNEQ19UVE1fSF9fDQo+PiArI2Rl ZmluZSBfX0xTRENfVFRNX0hfXw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9jb250YWlu ZXJfb2YuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+PiArDQo+PiAr I2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+DQo+PiArI2luY2x1ZGUgPGRybS90dG0vdHRtX2Jv Lmg+DQo+PiArI2luY2x1ZGUgPGRybS90dG0vdHRtX3BsYWNlbWVudC5oPg0KPj4gKw0KPj4g KyNkZWZpbmUgTFNEQ19HRU1fRE9NQUlOX1NZU1RFTcKgwqDCoMKgwqDCoMKgwqDCoCAweDEN Cj4+ICsjZGVmaW5lIExTRENfR0VNX0RPTUFJTl9HVFTCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgyDQo+PiArI2RlZmluZSBMU0RDX0dFTV9ET01BSU5fVlJBTcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHg0DQo+PiArDQo+PiArc3RydWN0IGxzZGNfYm8gew0KPj4gK8KgwqDCoCBz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgYm87DQo+PiArwqDCoMKgIHN0cnVjdCBpb3N5c19t YXAgbWFwOw0KPj4gKw0KPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgdm1hcF91c2VfY291bnQ7 DQo+PiArDQo+PiArwqDCoMKgIHN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsNCj4+ ICvCoMKgwqAgc3RydWN0IHR0bV9wbGFjZSBwbGFjZW1lbnRzWzJdOw0KPj4gK307DQo+PiAr DQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbHNkY19ibyAqDQo+PiArdG9fbHNkY19ibyhz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykNCj4+ICt7DQo+PiArwqDCoMKgIHJldHVy biBjb250YWluZXJfb2YodGJvLCBzdHJ1Y3QgbHNkY19ibywgYm8pOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsc2RjX2JvICoNCj4+ICtnZW1fdG9fbHNkY19i byhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSkNCj4+ICt7DQo+PiArwqDCoMKgIHJldHVy biBjb250YWluZXJfb2YoZ2VtLCBzdHJ1Y3QgbHNkY19ibywgYm8uYmFzZSk7DQo+PiArfQ0K Pj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICoNCj4+ ICt0b190dG1fYm8oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pDQo+PiArew0KPj4gK8Kg wqDCoCByZXR1cm4gY29udGFpbmVyX29mKGdlbSwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 LCBiYXNlKTsNCj4+ICt9DQo+PiArDQo+PiAraW50IGxzZGNfYm9fcGluKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqZ2VtKTsNCj4+ICt2b2lkIGxzZGNfYm9fdW5waW4oc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW0pOw0KPj4gK3U2NCBsc2RjX2JvX2dwdV9vZmZzZXQoc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICp0Ym8pOw0KPj4gKw0KPj4gK3ZvaWQgbHNkY19ib19zZXRfcGxh Y2VtZW50KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvLA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRvbWFpbiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBmbGFncyk7DQo+PiArDQo+PiAraW50IGxzZGNfZHVtYl9tYXBfb2Zm c2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdTMyIGhhbmRsZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDY0X3Qg Km9mZnNldCk7DQo+PiArDQo+PiAraW50IGxzZGNfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9m aWxlICpmaWxlLA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGRldiwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9t b2RlX2NyZWF0ZV9kdW1iICphcmdzKTsNCj4+ICsNCj4+ICtpbnQgbHNkY190dG1faW5pdChz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYpOw0KPj4gKw0KPj4gKyNlbmRpZg0KPiANCg0KLS0g DQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0KU1VTRSBT b2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3RyLiA1LCA5MDQwOSBO w7xybmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCkdlc2Now6Rm dHNmw7xocmVyOiBJdm8gVG90ZXYNCg== --------------A9dxB8YDNIX6xFWvcMe2Xlqn-- --------------bPRzzhTNw2p5gvNjC0lquAPQ Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmP9x1oFAwAAAAAACgkQlh/E3EQov+Ah QA//UHEQBHgMilwT+Ex9ejHmzfNPC09/QYr6af8EX2tFhb8vM74s/C69SHRWNGREE4tWx28+quVI LD0E8y0w+dbGY+SR1dsxsr4KlrThtAwd0pVh3joFY/d404RMI8NyX0RrGBbTbIE8LEuhQOymjsgu sMPhJ1wW2cVLrMXh/FXV1J8EpFIwj87mG9+mUFCdy00f0UZVhEHMjVFPauGDgMIXNKA2tkxRoNR1 dc+rA6VlS+OWPd8KBk45qvyc3/adLOFA/XtHvsUVm9VIbXRTStrTqtrlXPnruRI6LsZvKXGjJAxh qYUYGms2o42M2WCgQjC+TKuuM4hVxgYP6pDF2Rwq/DRNXGovYfXAubIT6onjygwbnoBcXqS0DFUy LKb0F9XU1fCg2QOGsI4J8Rap9nYWPPugAVgPzctpID+5USFWqSnG/bvXI+HK09maomfRduqwSEU9 19+pbMeTWA0cReGey/9EjasxEOwyt9xFbXI8TUtWr7yUj3aN1wd0QUtFsgGfZ7HNuCaTz78BVfBy sBxF54rGyEEQI8bwYQCTUHW1D9xN/Qm0hfMdAl9kFWSUQlZbFwMjODtgmdhVx3T1dXbFWQp1KoLX kPdpxsUoMcl22ug/i2IrGCbPTs/yv3bpaiiPK549Us8P9InEfGR2pW6At2bWWVTijObBcNplMfzb Ge0= =jz+C -----END PGP SIGNATURE----- --------------bPRzzhTNw2p5gvNjC0lquAPQ--