Received: by 2002:a19:771d:0:0:0:0:0 with SMTP id s29csp1281936lfc; Wed, 1 Jun 2022 14:07:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyhgX95AackQcMHCyZwbqMO3zPETk7t+zzotyD/jRFY5PIJw+H0HwF4NN20PUojSnviKr6i X-Received: by 2002:a17:903:228e:b0:161:8632:2725 with SMTP id b14-20020a170903228e00b0016186322725mr1390530plh.126.1654117636368; Wed, 01 Jun 2022 14:07:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654117636; cv=none; d=google.com; s=arc-20160816; b=O1U/7CRlsu1o/Gm9h//KkKiDaDOvz8igfsWtwg0tCRJGI0A/IupULoZhfSQ/gU0He8 rrEVW5uoKiWKLsZJgh7jvvQ16iQLJXOFCSJ50jV96ojm+iVQ97R17WIpa5FOXvnb+tEY +beA68IpkGkexkgJheWGv69UwMFYnD0jLE+QCpLZ4ZPuSwc75CRjG01ljpygHUGnu4Rf 6WQVOd13PzxfpY2NJZK4KXVQZfzsNBWpDIfD7oOKIDyh3UeVjMsP5ZEK15FJoc3+3Z/o EtOe14y7yK4kxu/k9vHeX5uzNSezWQRpGGrjVp1aGm2UptO8oPpyIAW8RuDjUq8qx8YV IRfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=nus86I5RJjc1/XtYdL2caYk966UwQ5VW0CDqRRbdbgU=; b=F99bX5DtvuHyI7kpxK5bJEWBhuwyQiKaQUU5fDflrgIoL1Ijg/vmYLexfETgLgbwZN EKoJ5mtr3AFeWOUO9VMvrx4wRt1YmYmd1vjiQ212IK7aRsJPRgqSYkvN0rzhPitPZtCD RSRaUD0ixya3RKZAdR8+yACYc6gESYd1Q4gSICyfEJaAuU1j277tzPjE4tLHLsF4yGq7 wWSrSBcSSmHCZC/mWA1+T5a5zeQNlsiLuW5TLke2XzFB7EhNGyNQKnmE5NWUf2TWeu4O G/uKWFMcCUXwst5xce4L7L/htcW9QaHYYxeBluGvXq5fY64k2iLs+tOAL5QjgRELOQt3 Zl1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="sy9i/xye"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id q132-20020a632a8a000000b003fccbc8a085si1016706pgq.782.2022.06.01.14.07.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jun 2022 14:07:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="sy9i/xye"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E003E6213B; Wed, 1 Jun 2022 13:16:59 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352138AbiFAKmi (ORCPT + 99 others); Wed, 1 Jun 2022 06:42:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349509AbiFAKmg (ORCPT ); Wed, 1 Jun 2022 06:42:36 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 522216D39F for ; Wed, 1 Jun 2022 03:42:33 -0700 (PDT) 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 067C71F897; Wed, 1 Jun 2022 10:42:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1654080152; 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=nus86I5RJjc1/XtYdL2caYk966UwQ5VW0CDqRRbdbgU=; b=sy9i/xye2oXQnqeQLZ0cGX0RcnmaV/Ym+6gzEwzG1ljmVf0ium6GArJLkPRj28G+OPmL53 ypb6qWc6Dh1JOaCspVcNR+Ot08Ua4301Kq9KPHRv0SW1tCLHDtt+SqkYaj1xbJqEcK9wzV lJn4goodjx6AZEptnxExjsUI+lEWf6E= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1654080152; 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=nus86I5RJjc1/XtYdL2caYk966UwQ5VW0CDqRRbdbgU=; b=oHHVQeuhJQuZqihvJB3as9SgQAZQjbt03r0BIdcNgLEN5FZSIsSKt2FRXvJja3M9rq1YtC VLJDVLZJ9hEoNjBA== 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 BC79A1330F; Wed, 1 Jun 2022 10:42:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id aFwVLZdCl2KSGAAAMHmgww (envelope-from ); Wed, 01 Jun 2022 10:42:31 +0000 Message-ID: Date: Wed, 1 Jun 2022 12:42:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port Content-Language: en-US To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Tommy Huang , "airlied@redhat.com" , Arc Sung , Luke Chen References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <43be719f-9149-abf0-fc5a-95b8d1c6761d@suse.de> <12fcba08-a2ad-ea50-ed63-029b5068800e@suse.de> From: Thomas Zimmermann In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------jcyy9qqILv277a0bWSgget96" X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RDNS_NONE,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------jcyy9qqILv277a0bWSgget96 Content-Type: multipart/mixed; boundary="------------hfKxwpIZPsKUklZOQlCdHyZF"; protected-headers="v1" From: Thomas Zimmermann To: Kuo-Hsiang Chou , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" Cc: Hungju Huang , "airlied@linux.ie" , Tommy Huang , "airlied@redhat.com" , Arc Sung , Luke Chen Message-ID: Subject: Re: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <43be719f-9149-abf0-fc5a-95b8d1c6761d@suse.de> <12fcba08-a2ad-ea50-ed63-029b5068800e@suse.de> In-Reply-To: --------------hfKxwpIZPsKUklZOQlCdHyZF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMzAuMDUuMjIgdW0gMDg6MDUgc2NocmllYiBLdW8tSHNpYW5nIENob3U6DQo+ IEhpIFRob21hcywNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IGRyaS1kZXZlbCBbbWFpbHRvOmRyaS1kZXZlbC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZ10gT24gQmVoYWxmIE9mIEt1by1Ic2lhbmcgQ2hvdQ0KPiBTZW50OiBGcmlkYXksIE1h eSAxMywgMjAyMiA2OjM5IFBNDQo+IFRvOiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1h bm5Ac3VzZS5kZT47IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2NF0gZHJtL2Fz dDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9yIEFTUEVFRCBwcm9wcmlldG9yeSBEaXNwbGF5LVBv cnQNCj4gDQo+IEhpIFRob21hcywNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IFRob21hcyBaaW1tZXJtYW5uIFttYWlsdG86dHppbW1lcm1hbm5Ac3VzZS5k ZV0NCj4gU2VudDogRnJpZGF5LCBNYXkgMTMsIDIwMjIgNjoyMSBQTQ0KPiBUbzogS3VvLUhz aWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT47IGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4g U3ViamVjdDogUmU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9y IEFTUEVFRCBwcm9wcmlldG9yeSBEaXNwbGF5LVBvcnQNCj4gDQo+IA0KPiBIaQ0KPiANCj4g QW0gMTMuMDUuMjIgdW0gMTE6MDcgc2NocmllYiBLdW8tSHNpYW5nIENob3U6DQo+Pg0KPj4N Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBUaG9tYXMgWmltbWVy bWFubiBbbWFpbHRvOnR6aW1tZXJtYW5uQHN1c2UuZGVdDQo+PiBTZW50OiBUdWVzZGF5LCBN YXkgMTAsIDIwMjIgNjo1NiBQTQ0KPj4gVG86IEt1by1Ic2lhbmcgQ2hvdSA8a3VvaHNpYW5n X2Nob3VAYXNwZWVkdGVjaC5jb20+Ow0KPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9yIEFTUEVFRA0KPj4gcHJv cHJpZXRvcnkgRGlzcGxheS1Qb3J0DQo+Pg0KPj4gSGkNCj4+DQo+PiBBbSAwNC4wNS4yMiB1 bSAxMDo0OSBzY2hyaWViIEt1by1Ic2lhbmcgQ2hvdToNCj4+PiBIaSBUaG9tYXMsDQo+Pj4N Cj4+PiBUaGFua3MgZm9yIHlvdXIgZWZmb3J0cyB0byByZXZpZXcgdGhpcyBwYXRjaC4NCj4+ Pg0KPj4+IE5vdywgSSBvYnNlcnZlIGEgY2hhbmdlIHRoYXQgYWZ0ZXIgRFAgdW5wbHVnZ2Vk IGFuZCB0aGVuIHRoZSBzeXN0ZW0NCj4+PiBpcyB1bmFibGUgdG8gZ2V0IEVESUQgZnJvbSBE LXN1YiBjb25uZWN0aW5nLg0KPj4+DQo+Pj4gVGhlIHJlYXNvbiBzZWVtcyB0aGF0IFRYcyBh cmUgbWVyZ2VkIGludG8gdW5pb24gc3RydWN0dXJlIGluDQo+Pj4gL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X2Rydi5oDQo+Pj4gICAgwqAoYTU5YjAyNjQxOWYzMzA0MGQ3ZDI4YjhlM2Ix Y2VhNjgxYjljZTdhNw0KPj4+IDxodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2RybS9k cm0tbWlzYy9jb21taXQvP2lkPWE1OWIwMjY0MTlmMzMwNA0KPj4+IDANCj4+PiBkN2QyOGI4 ZTNiMWNlYTY4MWI5Y2U3YTc+KQ0KPj4NCj4+IEkgaGF2ZSBwb3N0ZWQgYSBwYXRjaCB0aGF0 IGVuYWJsZXMgbXVsdGlwbGUgcGFyYWxsZWwgb3V0cHV0cy4gU2VlDQo+Pg0KPj4gICAgDQo+ PiA8aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLWRldmVsLzIwMjIwNTEwMTA1MDEwLjIw NzEyLTEtdHppbW1lcm1hbm5ADQo+PiBzdXNlLmRlL1QvI3U+DQo+Pg0KPj4gSWYgeW91IGhh dmUgdGhlIHRpbWUsIEknZCBhcHByZWNpYXRlIGlmIHlvdSBjb3VsZCB0ZXN0IGl0Lg0KPj4N Cj4+IEhpIFRob21hcywNCj4+IEZpcnN0LCB0aGFua3MgZm9yIHlvdXIgZWZmb3J0cyBvbiB0 aGlzIHBhdGNoIG9mICIgZW5hYmxlcyBtdWx0aXBsZSBwYXJhbGxlbCBvdXRwdXRzICIuDQo+ PiBCdXQgaXQgZG9lc24ndCB3b3JrLiBUaGVyZSBpcyBzdGlsbCBOTyBFRElEIGdvdCBmcm9t IEQtc3ViIGFmdGVyIERQIHVucGx1Z2dlZC4NCj4+DQo+PiBCYXNlIG9uIHlvdXIgcGF0Y2gs IEkgYW0gdHJ5aW5nIHRvIGZpbmQgb3V0IHRoZSBzb2x1dGlvbiBhbHNvLg0KPj4gRmluYWws IHRoYW5rcyBmb3IgeW91ciBoZWxwIGFnYWluIQ0KPiANCj4gTGV0J3MgdHJ5IHRvIGZpbmQg YSBzb2x1dGlvbi4gSSBtaWdodCBiZSBhYmxlIHRvIGNvbWUgdXAgd2l0aCBzb21ldGhpbmcg aWYgSSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbi4NCj4gDQo+IEhvdyBhcmUgdGhlc2Ugb3V0 cHV0cyBjb25uZWN0ZWQgdG8gZWFjaCBlYWNoIG90aGVyPw0KPiAxLiBEUCBhbmQgRC1zdWIg Ym90aCBjb25uZWN0ZWQ6IGl0IGlzIGNvcnJlY3QgdG8gZ2V0IEVESUQgYW5kIG1vbml0b3Ig dHlwZSBpcyBjb3JyZWN0bHkgc2hvd24gb24gZGlzcGxheSBzZXR0aW5nLiBSZXNvbHV0aW9u IGlzIHVwIHRvIDE5MjAqMTIwMC4NCj4gMi4gRFAgdW5wbHVnZ2VkIGFuZCBvbmx5IEQtc3Vi IGNvbm5lY3RlZDogVW5rbm93biBEaXNwbGF5IGlzIHNob3duIG9uIGRpc3BsYXkgc2V0dGlu Zy4gT25seSA4MDAqNjAwIGFuZCAxMDI0Kjc2OCBhcmUgYXZhaWxhYmxlIGZvciBSZXNvbHV0 aW9uLg0KPiANCj4gVGhleSBhcmUgYm90aCBzZXJ2ZWQgYnkgdGhlIHNhbWUgQ1JUQy4gQ2Fu IHRoZXkgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lPw0KPiBObywgMiBkaWZmZXJlbnQgbW9u aXRvcnMgYXJlIGNvbm5lY3RlZCBhdCBzYW1lIHRpbWUuDQo+IE9uZSBpcyBjb25uZWN0ZWQg YnkgRC1zdWIgYW5kIGFub3RoZXIgaXMgY29ubmVjdGVkIGJ5IERQIGNvbm5lY3RpbmcuDQo+ IA0KPiBBcmUgdGhleSBtdXR1YWxseSBleGNsdXNpdmU/DQo+IFllcywgSWYgRFAgYW5kIEQt c3ViIGFyZSBhbGwgY29ubmVjdGluZywgRFAncyBFRElEIGlzIGZpcnN0IHByaW9yaXR5IGZv ciBEaXNwbGF5IHNldHRpbmcuDQo+IFdoZW4gRFAgdW5wbHVnZ2VkLCBFRElEIGdvdCBmcm9t IEQtc3ViIGFyZSB1c2VkIGZvciBEaXNwbGF5IHNldHRpbmcuDQo+IA0KPiBOb3csIEkgdHJ5 IHRvIGFkZCB0aGUgY29kZXMgb2YgYXN0X3ZnYV9jb25uZWN0b3JfaGVscGVyX2dldF9tb2Rl cygpIGludG8gYXN0X2FzdGRwX2Nvbm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzKCkuDQoNClRo YXQncyBub3QgYWxsb3dlZCBpbiBEUk0uIElmIHRoZXJlIGFyZSB0d28gZGlmZmVyZW50IGNv bm5lY3RvcnMsIHRoZXJlIA0KYWxzbyBuZWVkIHRvIGJlIHR3byBkaWZmZXJlbnQgZGF0YSBz dHJ1Y3R1cmVzIGluIHRoZSBkcml2ZXIuICBQb3NzaWJsZSANCmRlcGVuZGVuY2llcyBhbW9u ZyB0aGVzZSBjb25uZWN0b3JzIGhhdmUgdG8gYmUgbW9kZWxlZCBpbiB0aGUgDQphdG9taWNf Y2hlY2sgYW5kIGF0b21pY19mbHVzaCBmdW5jdGlvbnMuDQoNCj4gVGhlIHJlc3VsdCBpcyBm YWlsZWQuDQo+IEFueXdheSwgSSB3aWxsIGNvbnRpbnVlIHRvIHRyeSBhbmQgdGVzdCB0aGUg ZmVhdHVyZSBuZXh0IE1vbmRheS4NCj4gVGhhbmtzIGZvciB5b3VyIGdyZWF0IGhlbHAhDQo+ IA0KPiBIaSBUaG9tYXMsDQo+IFlvdXIgcGF0Y2ggaXMgd29ya2FibGUgdG8gc3dpdGNoIHJl c29sdXRpb24gb24gU2luZ2xlIERpc3BsYXkgb3B0aW9uIG9mIERpc3BsYXkgc2V0dGluZy4N Cj4gDQo+IEFuZCBJIHRlc3QgcmVzb2x1dGlvbiBzd2l0Y2hpbmcgb24gU2luZ2xlIERpc3Bs YXkgYmV0d2VlbiBBU1REUCBhbmQgVkdBLg0KPiBZZXMsIHRoZSBsZWZ0LXRvcCBudW1iZXIg aW5kaWNhdGVzIHRoZSBjdXJyZW50IHJlc29sdXRpb24gZGVjaWRlZCBieSBBU1REUCBvciBW R0EuDQo+IA0KPiBJIGFsc28gdHJ5IHRvIGNoYW5nZSByZXNvbHV0aW9uIG9uIE1pcnJvciBh bmQgSm9pbiBEaXNwbGF5IG9wdGlvbi4NCj4gQnV0IHRoZXJlIGlzIG9uIEFwcGx5IGJ1dHRv biBzaG93biBpbiB0aGUgcmlnaHQtdG9wIGNvcm5lciBvZiBEaXNwbGF5IHNldHRpbmcuDQoN ClRoYXQncyBoYXJkIHRvIHNheSBmb3IgbWUgd2l0aG91dCB0ZXN0aW5nLiAgSSBtZWFud2hp bGUgcG9zdGVkIGEgDQpwYXRjaHNldCB0byBmdXJ0aGVyIGltcHJvdmUgbW9kZS1kZXRlY3Rp b24gaW4gYXN0LiBbMV0gRXZlbiBob3QtcGx1Z2dpbmcgDQpvZiB0aGUgY29uZW5jdG9yIGNh YmxlcyBzaG91bGQgbm93IGJlIHN1cHBvcnRlZC4gTWF5YmUgaXQgaGVscHMgYSBiaXQuDQoN CkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNClsxXSANCmh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2RyaS1kZXZlbC9mYzZmNzk2My01YWJmLWJmNTMtYjY3MS1hNGQxMGJiNjhkMTBAc3VzZS5k ZS9ULyN0DQoNCj4gDQo+IFRoYW5rcyBmb3IgeW91ciBoZWxwIQ0KPiBSZWdhcmRzLA0KPiAJ S3VvLUhzaWFuZyBDaG91DQo+IA0KPiBSZWdhcmRzLA0KPiAJS3VvLUhzaWFuZyBDaG91DQo+ IA0KPiBCZXN0IHJlZ2FyZHMNCj4gVGhvbWFzDQo+IA0KPj4NCj4+IFJlZ2FyZHMsDQo+PiAJ S3VvLUhzaWFuZyBDaG91DQo+Pg0KPj4gQmVzdCByZWdhcmRzDQo+PiBUaG9tYXMNCj4+DQo+ Pj4NCj4+PiBBbm90aGVyLCBkbyB5b3UgbmVlZCB0aGUgYXN0MjYwMCBFVkIgdG8gZWFzZSB2 ZXJpZmljYXRpb24gb24gImRybS9hc3QiID8NCj4+Pg0KPj4+IFJlZ2FyZHMsDQo+Pj4NCj4+ PiAgICDCoMKgwqDCoMKgwqDCoCBLdW8tSHNpYW5nIENob3UNCj4+Pg0KPj4+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4gRnJvbTogVGhvbWFzIFppbW1lcm1hbm4gW21haWx0 bzp0emltbWVybWFubkBzdXNlLmRlXQ0KPj4+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDA0LCAy MDIyIDM6MjggUE0NCj4+PiBUbzogS3VvLUhzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBh c3BlZWR0ZWNoLmNvbT47DQo+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsg bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djRdIGRybS9hc3Q6IENyZWF0ZSB0aGUgZHJpdmVyIGZvciBBU1BFRUQNCj4+PiBwcm9wcmll dG9yeSBEaXNwbGF5LVBvcnQNCj4+Pg0KPj4+IEhpDQo+Pj4NCj4+PiBBbSAyOC4wNC4yMiB1 bSAwOTo1NiBzY2hyaWViIEt1b0hzaWFuZyBDaG91Og0KPj4+DQo+Pj4+IFYxOg0KPj4+DQo+ Pj4+IDEuIFRoZSBNQ1UgRlcgY29udHJvbGluZyBBU1BFRUQgRFAgaXMgbG9hZGVkIGJ5IEJN QyBib290IGxvYWRlci4NCj4+Pg0KPj4+PiAyLiBEcml2ZXIgc3RhcnRzIGFmdGVyIENSWzM6 MV0gPT0gMTExYiB0aGF0IGluZGljYXRlcyBUeCBpcyBBU1REUCwNCj4+Pg0KPj4+PiAgIMKg wqDCoMKgIGFuZCBDUkQxWzVdIGhhcyBiZWVuIGFzc2VydGVkIGJ5IEJNVkMgYm9vdCBsb2Fk ZXIuDQo+Pj4NCj4+Pj4gMy4gRURJRCBpcyBwcmlvcml0aXplZCBieSBEUCBtb25pdG9yLg0K Pj4+DQo+Pj4+IDQuIERQJ3MgRURJRCBoYXMgaGlnaCBwcmlvcml0eSB0byBkZWNpZGUgcmVz b2x1dGlvbiBzdXBwb3J0aW5nLg0KPj4+DQo+Pj4+DQo+Pj4NCj4+Pj4gVjI6DQo+Pj4NCj4+ Pj4gTW9kdWxlcyBkZXNjcmlwdGlvbjoNCj4+Pg0KPj4+PiAxLiBBU1REUCAoQVNQRUVEIERp c3BsYXlQb3J0KSBpcyBjb250cm9sbGVkIGJ5IGRlZGljYXRlZA0KPj4+DQo+Pj4+ICAgwqDC oMKgwqAgQVNULU1DVSAoQVNQRUVEIHByb3ByaWF0YXJ5IE1DVSkuDQo+Pj4NCj4+Pj4gMi4g TUNVIGlzIGxvb3BpbmcgaW4gY2hhcmdlZCBvZiBIUEQsIFJlYWQgRURJRCwgTGluayBUcmFp bmluZyB3aXRoDQo+Pj4NCj4+Pj4gICDCoMKgwqDCoCBEUCBzaW5rLg0KPj4+DQo+Pj4+IDMu IEFTVERQIGFuZCBBU1QtTVVDIHJlc2lkZSBpbiBCTUMgKEJhc2Vib2FyZCBNYW5hZ2VtZW50 IGNvbnRyb2xsZXIpDQo+Pj4NCj4+Pj4gICDCoMKgwqDCoCBhZGRyZXNzaW5nLXNwYWNlLg0K Pj4+DQo+Pj4+IDQuIEFTUEVFRCBEUk0gZHJpdmVyIHJlcXVlc3RzIE1DVSB0byBnZXQgSFBE IGFuZCBFRElEIGJ5DQo+Pj4+IENSLXNjcmF0Y2hlZA0KPj4+DQo+Pj4+ICAgwqDCoMKgwqAg cmVnaXN0ZXIuDQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiBCb290aW5nIHNlcXVlbmNlOg0KPj4+ DQo+Pj4+IDEuIENoZWNrIGlmIFRYIGlzIEFTVERQwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8vDQo+Pj4+IGFzdF9kcF9sYXVuY2goKQ0KPj4+DQo+Pj4+IDIuIENoZWNrIGlmIERQLU1D VSBGVyBoYXMgbG9hZGVkDQo+Pj4+IC8vIGFzdF9kcF9sYXVuY2goKQ0KPj4+DQo+Pj4+IDMu IFJlYWQgRURJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLw0KPj4+PiBhc3RfZHBfcmVh ZF9lZGlkKCkNCj4+Pg0KPj4+PiA0LiBSZXNvbHV0aW9uIHN3aXRjaMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvLw0KPj4+PiBhc3RfZHBfU2V0T3V0cHV0KCkNCj4+Pg0KPj4+Pg0KPj4+DQo+Pj4+ IFYzOg0KPj4+DQo+Pj4+IDEuIFJlbW92ZSB1bm5lZWRlZCBzZW1pY29sb24uDQo+Pj4NCj4+ Pj4gMi4gQXBwbHkgdG8gZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybSwg aW5zdGVhZCBvZg0KPj4+DQo+Pj4+ICAgwqDCoMKgwqAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVz a3RvcC5vcmcvZHJtL2RybS1taXNjDQo+Pj4NCj4+Pj4gMy4gUmVzb2x2ZSBhdXRvIGJ1aWxk IHRlc3QgV0FSTklOR3Mgb24gVjEgcGF0Y2guDQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiBWNDoN Cj4+Pg0KPj4+PiAxLiBTeW5jIGNvZGUtYmFzZSB3aXRoIGtlcm5lbCA1LjE3X3JjNiAyLiBS ZW1vdmUgdGhlIGRlZmluZSBvZg0KPj4+DQo+Pj4+IERQQ29udHJvbFBvd2VyLCBiZWNhdXNl IERQIGNoaXBzIG5lZWQgdG8gYmUNCj4+Pg0KPj4+PiAgIMKgwqDCoMKgIHBvd2VyZWQgb24g dG8gYmUgdXNlZC4NCj4+Pg0KPj4+PiAzLiBSZW1vdmUgdGhlIHN3aXRjaGVzIG9mIFBIWSBh bmQgRGlzcGxheSBmcm9tIEVESUQgcHJvY2VkdXJlLg0KPj4+DQo+Pj4+IDQuIFJldmlzZSBp bmNyZWFpbmcgZGVsYXkgdG8gZml4ZWQgZGVsYXksIGJlY2F1c2UgdGhpcyB2ZXJzaW9uDQo+ Pj4+IGtlcm5lbA0KPj4+DQo+Pj4+ICAgwqDCoMKgwqAgZG9lc24ndCBkZXRlY3QgbWluaXRv ciBjb25zaXN0ZW5udGx5Lg0KPj4+DQo+Pj4+IDUuIENyZWF0ZSBjbGVhbi11cCBjb2RlIHVz ZWQgZm9yIHJlc2V0IG9mIHBvd2VyIHN0YXRlIG9uIGVycm9ycyB3aXRoDQo+Pj4NCj4+Pj4g ICDCoMKgwqDCoCAtRUlPIG1hbm5lci4NCj4+Pg0KPj4+PiA2LiBSZXZpc2UgdGhlIERQIGRl dGVjdGlvbiBieSBUWCB0eXBlIGFuZCBpdHMgRFAtRlcgc3RhdHVzIGR1cmluZw0KPj4+DQo+ Pj4+ICAgwqDCoMKgwqAgYm9vdGluZyBhbmQgcmVzdW1lLg0KPj4+DQo+Pj4+IDcuIENvcnJl Y3QgdGhlIENhbWVsQ2FzZSBTdHlsZS4NCj4+Pg0KPj4+PiA4LiBVc2UgcmVnaXN0ZXIgcmVh ZGluZyB3aGlsZSBuZWVkaW5nLCBhbmQgcmVtb3ZlIHRvIGhvbGQgZnVsbA0KPj4+DQo+Pj4+ ICAgwqDCoMKgwqAgcmVnaXN0ZXIuDQo+Pj4NCj4+Pj4gOS4gSW5zdGVhZCBvZiAndTgnLCBy ZXZpc2UgdG8gJ2Jvb2wnIG9uIHN3d2l0Y2ggb2YgUEhZIGFuZCB2aWRlby4NCj4+Pg0KPj4+ PiAxMC5Db3JyZWN0IHR5cG8NCj4+Pg0KPj4+PiAxMS5SZW1vdmUgdGhlIGR1cGxpY2F0ZWQg Y29weSBvZiBUWCBkZWZpbml0aW9uLg0KPj4+DQo+Pj4+IDEyLlVzZSBFRElEX0xFTkdUSCBh cyB0aGUgY29uc3RhbnQgb2YgMTI4Lg0KPj4+DQo+Pj4+DQo+Pj4NCj4+Pj4gU2lnbmVkLW9m Zi1ieTogS3VvSHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tDQo+ Pj4+IDxtYWlsdG86a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20+Pg0KPj4+DQo+Pj4g UmV2aWV3ZWQtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlDQo+ Pj4gPG1haWx0bzp0emltbWVybWFubkBzdXNlLmRlPj4NCj4+Pg0KPj4+IEkndmUgbWVhbndo aWxlIGFkZGVkIHlvdXIgcGF0Y2ggdG8gZHJtLW1pc2MtbmV4dC4gSXQgc2hvdWxkIHNob3cg dXANCj4+PiBpbiBvbmUgb2YgdGhlIG5leHQga2VybmVsIHJlbGVhc2VzLsKgIFRoYW5rcyBh IGxvdC4NCj4+Pg0KPj4+IEJlc3QgcmVnYXJkcw0KPj4+DQo+Pj4gVGhvbWFzDQo+Pj4NCj4+ Pj4gLS0tDQo+Pj4NCj4+Pj4gICDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGXC oMKgIHzCoMKgIDIgKy0NCj4+Pg0KPj4+PiAgIMKgwqAgZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHAuY8KgwqAgfCAyODINCj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrDQo+Pj4NCj4+Pj4gICDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5owqAg fCAxMTUgKysrKysrKysrKysrKysNCj4+Pg0KPj4+PiAgIMKgwqAgZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbWFpbi5jIHzCoMKgIDUgKy0NCj4+Pg0KPj4+PiAgIMKgwqAgZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfbW9kZS5jIHwgMTI0ICsrKysrKysrKysrKysrLQ0KPj4+DQo+Pj4+ ICAgwqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgfMKgwqAgNCArLQ0KPj4+ DQo+Pj4+ICAgwqDCoCA2IGZpbGVzIGNoYW5nZWQsIDUyNCBpbnNlcnRpb25zKCspLCA4IGRl bGV0aW9ucygtKQ0KPj4+DQo+Pj4+ICAgwqDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPj4+DQo+Pj4+DQo+Pj4NCj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4+Pg0KPj4+PiBiL2RyaXZlcnMv Z3B1L2RybS9hc3QvTWFrZWZpbGUgaW5kZXggMjFmNzExNjBiLi41YTUzY2U1MWYgMTAwNjQ0 DQo+Pj4NCj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPj4+DQo+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4+Pg0KPj4+PiBAQCAt Myw2ICszLDYgQEANCj4+Pg0KPj4+PiAgIMKgwqAgIyBNYWtlZmlsZSBmb3IgdGhlIGRybSBk ZXZpY2UgZHJpdmVyLsKgIFRoaXMgZHJpdmVyIHByb3ZpZGVzDQo+Pj4+IHN1cHBvcnQgZm9y IHRoZQ0KPj4+DQo+Pj4+ICAgwqDCoCAjIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1 cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLg0KPj4+DQo+Pj4+DQo+Pj4N Cj4+Pj4gLWFzdC15IDo9IGFzdF9kcnYubyBhc3RfaTJjLm8gYXN0X21haW4ubyBhc3RfbW0u byBhc3RfbW9kZS5vDQo+Pj4NCj4+Pj4gYXN0X3Bvc3QubyBhc3RfZHA1MDEubw0KPj4+DQo+ Pj4+ICthc3QteSA6PSBhc3RfZHJ2Lm8gYXN0X2kyYy5vIGFzdF9tYWluLm8gYXN0X21tLm8g YXN0X21vZGUubw0KPj4+DQo+Pj4+ICthc3RfcG9zdC5vIGFzdF9kcDUwMS5vIGFzdF9kcC5v DQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiAgIMKgwqAgb2JqLSQoQ09ORklHX0RSTV9BU1QpIDo9 IGFzdC5vDQo+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X2RwLmMNCj4+Pg0KPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMgbmV3IGZp bGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4+Pg0KPj4+PiAwMDAwMDAwMDAuLjQ1NTFiYzhhMw0K Pj4+DQo+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pg0KPj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9kcC5jDQo+Pj4NCj4+Pj4gQEAgLTAsMCArMSwyODIgQEANCj4+Pg0KPj4+ PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+Pg0KPj4+PiArLy8g Q29weXJpZ2h0IChjKSAyMDIxLCBBU1BFRUQgVGVjaG5vbG9neSBJbmMuDQo+Pj4NCj4+Pj4g Ky8vIEF1dGhvcnM6IEt1b0hzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNo LmNvbQ0KPj4+PiArPG1haWx0bzprdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT4+DQo+ Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4NCj4+ Pg0KPj4+PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+Pj4NCj4+Pj4gKyNpbmNsdWRl IDxkcm0vZHJtX3ByaW50Lmg+DQo+Pj4NCj4+Pj4gKyNpbmNsdWRlICJhc3RfZHJ2LmgiDQo+ Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICtpbnQgYXN0X2FzdGRwX3JlYWRfZWRpZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1OCAqZWRpZGRhdGEpIHsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1 Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+Pj4NCj4+Pj4g K8KgwqAgdTggaSA9IDAsIGogPSAwOw0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCAv Kg0KPj4+DQo+Pj4+ICvCoMKgICogQ1JEMVtiNV06IERQIE1DVSBGVyBpcyBleGVjdXRpbmcN Cj4+Pg0KPj4+PiArwqDCoCAqIENSRENbYjBdOiBEUCBsaW5rIHN1Y2Nlc3MNCj4+Pg0KPj4+ PiArwqDCoCAqIENSREZbYjBdOiBEUCBIUEQNCj4+Pg0KPj4+PiArwqDCoCAqIENSRTVbYjBd OiBIb3N0IHJlYWRpbmcgRURJRCBwcm9jZXNzIGlzIGRvbmUNCj4+Pg0KPj4+PiArwqDCoCAq Lw0KPj4+DQo+Pj4+ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEQxLA0KPj4+PiArQVNURFBfTUNVX0ZXX0VYRUNVVElORykg JiYNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REMsDQo+Pj4+ICtBU1REUF9MSU5LX1NV Q0NFU1MpICYmDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLA0KPj4+PiArQVNURFBf SFBEKSAmJg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0X2luZGV4 X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwNCj4+Pg0KPj4+PiArDQo+ Pj4+ICtBU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0spKSkgew0KPj4+DQo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9hc3RkcF9lZGlkX25vdF9yZWFkeTsNCj4+ Pg0KPj4+PiArwqDCoCB9DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIGFzdF9zZXRf aW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LCAodTgpDQo+Pj4+ ICt+QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPj4+DQo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDApOw0KPj4+DQo+ Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgew0KPj4+ DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIENSRTRbNzowXTogUmVhZC1Qb2ludGVyIGZvciBFRElEIChVbml0OiA0 Ynl0ZXMpOyB2YWxpZA0KPj4+PiArcmFuZ2U6IDB+NjQNCj4+Pg0KPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8NCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3Nl dF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+Pj4NCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICh1OCkNCj4+Pj4gK35BU1REUF9FRElEX1JFQURfUE9JTlRF Ul9NQVNLLCAodTgpIGkpOw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBqID0g MDsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICogQ1JEN1tiMF06IHZhbGlkIGZsYWcg Zm9yIEVESUQNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBDUkQ2W2IwXTog bWlycm9yIHJlYWQgcG9pbnRlciBmb3IgRURJRA0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoKGFz dF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULA0KPj4+PiArMHhE NywNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBBU1REUF9FRElEX1ZBTElEX0ZMQUdfTUFTSykgIT0gMHgwMSkgfHwN Cj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhc3Rf Z2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwNCj4+Pj4gKzB4RDYs DQo+Pj4NCj4+Pj4gKw0KPj4+PiArQVNURFBfRURJRF9SRUFEX1BPSU5URVJfTUFTSykgIT0g aSkpIHsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq IERlbGF5IGFyZSBnZXR0aW5nIGxvbmdlciB3aXRoIGVhY2ggcmV0cnkuDQo+Pj4NCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIDEuIFRoZSBEZWxheXMg YXJlIG9mdGVuIDIgbG9vcHMgd2hlbiB1c2VycyByZXF1ZXN0ICJEaXNwbGF5IFNldHRpbmdz Ig0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKg wqDCoCDCoCBvZiByaWdodC1jbGljayBvZiBtb3VzZS4NCj4+Pg0KPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogMi4gVGhlIERlbGF5cyBhcmUgb2Z0ZW4g bG9uZ2VyIGEgbG90IHdoZW4gc3lzdGVtIHJlc3VtZSBmcm9tIFMzL1M0Lg0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+Pg0KPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1kZWxheShqKzEpOw0KPj4+ DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LA0KPj4+PiArQVNUX0lPX0NS VENfUE9SVCwgMHhEMSwNCj4+Pg0KPj4+PiArDQo+Pj4+ICtBU1REUF9NQ1VfRldfRVhFQ1VU SU5HKSAmJg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LA0KPj4+PiAr QVNUX0lPX0NSVENfUE9SVCwgMHhEQywNCj4+Pg0KPj4+PiArDQo+Pj4+ICtBU1REUF9MSU5L X1NVQ0NFU1MpICYmDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsDQo+ Pj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweERGLCBBU1REUF9IUEQpKSkgew0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gZXJyX2FzdGRwX2p1bXBfb3V0X2xvb3Bfb2ZfZWRpZDsNCj4+Pg0KPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pg0KPj4+PiArDQo+Pj4N Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqKys7DQo+Pj4N Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaiA+IDIw MCkNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIGVycl9hc3RkcF9qdW1wX291dF9sb29wX29mX2VkaWQ7DQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pg0KPj4+PiArDQo+Pj4NCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEpID0gYXN0X2dldF9pbmRleF9y ZWdfbWFzayhhc3QsDQo+Pj4+ICtBU1RfSU9fQ1JUQ19QT1JULA0KPj4+DQo+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4RDgsDQo+Pj4+ ICtBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgKihlZGlkZGF0YSArIDEpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs DQo+Pj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweEQ5LA0KPj4+DQo+Pj4+ICsNCj4+Pj4gK0FT VERQX0VESURfUkVBRF9EQVRBX01BU0spOw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCAqKGVkaWRkYXRhICsgMikgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwNCj4+ Pj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4REEsDQo+Pj4NCj4+Pj4gKw0KPj4+PiArQVNURFBf RURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg ICooZWRpZGRhdGEgKyAzKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LA0KPj4+PiAr QVNUX0lPX0NSVENfUE9SVCwgMHhEQiwNCj4+Pg0KPj4+PiArDQo+Pj4+ICtBU1REUF9FRElE X1JFQURfREFUQV9NQVNLKTsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChpID09IDMxKSB7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBGb3IgMTI4LWJ5dGVzIEVESURfMS4zLA0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAxLiBBZGQgdGhlIHZh bHVlIG9mIEJ5dGVzLTEyNiB0byBCeXRlcy0xMjcuDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUaGUg Qnl0ZXMtMTI3IGlzIENoZWNrc3VtLiBTdW0gb2YNCj4+Pj4gK2FsbCAxMjhieXRlcyBzaG91 bGQNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVxdWFsIDDCoMKgwqAgKG1vZCAyNTYpLg0KPj4+DQo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAyLiBNb2RpZnkg Qnl0ZXMtMTI2IHRvIGJlIDAuDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUaGUgQnl0ZXMtMTI2IGlu ZGljYXRlcyB0aGUgTnVtYmVyDQo+Pj4+ICtvZiBleHRlbnNpb25zIHRvDQo+Pj4NCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBmb2xsb3cuIDAgcmVwcmVzZW50cyBub2V4dGVuc2lvbnMuDQo+Pj4NCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+DQo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSArIDMpID0g KihlZGlkZGF0YSArIDMpICsgKihlZGlkZGF0YSArDQo+Pj4+ICsyKTsNCj4+Pg0KPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEgKyAyKSA9 IDA7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pg0KPj4+PiArDQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVkaWRkYXRhICs9IDQ7DQo+Pj4NCj4+ Pj4gK8KgwqAgfQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4 X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwgKHU4KQ0KPj4+PiArfkFT VERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSywNCj4+Pg0KPj4+PiArDQo+Pj4+ICtBU1RE UF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqAg cmV0dXJuIDA7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICtlcnJfYXN0ZHBfanVtcF9vdXRf bG9vcF9vZl9lZGlkOg0KPj4+DQo+Pj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1OCkNCj4+Pj4gK35BU1REUF9I T1NUX0VESURfUkVBRF9ET05FX01BU0ssDQo+Pj4NCj4+Pj4gKw0KPj4+PiArQVNURFBfSE9T VF9FRElEX1JFQURfRE9ORSk7DQo+Pj4NCj4+Pj4gK8KgwqAgcmV0dXJuICh+KGorMjU2KSAr IDEpOw0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArZXJyX2FzdGRwX2VkaWRfbm90X3JlYWR5 Og0KPj4+DQo+Pj4+ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEQxLA0KPj4+PiArQVNURFBfTUNVX0ZXX0VYRUNVVElORykp KQ0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weEQxICsgMSk7 DQo+Pj4NCj4+Pj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4REMsDQo+Pj4+ICtBU1REUF9MSU5LX1NVQ0NFU1MpKSkNCj4+ Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICh+MHhEQyArIDEpOw0KPj4+ DQo+Pj4+ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweERGLA0KPj4+PiArQVNURFBfSFBEKSkpDQo+Pj4NCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAofjB4REYgKyAxKTsNCj4+Pg0KPj4+PiArwqDCoCBp ZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhF NSwNCj4+Pj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSykpKQ0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weEU1ICsgMSk7DQo+Pj4NCj4+Pj4g Kw0KPj4+DQo+Pj4+ICvCoMKgIHJldHVybsKgwqDCoMKgwqAgMDsNCj4+Pg0KPj4+PiArfQ0K Pj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArLyoNCj4+Pg0KPj4+PiArICogTGF1bmNoIEFzcGVl ZCBEUA0KPj4+DQo+Pj4+ICsgKi8NCj4+Pg0KPj4+PiArdm9pZCBhc3RfZHBfbGF1bmNoKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IGJQb3dlcikgew0KPj4+DQo+Pj4+ICvCoMKgIHUz MiBpID0gMCwgaiA9IDAsIFdhaXRDb3VudCA9IDE7DQo+Pj4NCj4+Pj4gK8KgwqAgdTggYkRQ VFggPSAwOw0KPj4+DQo+Pj4+ICvCoMKgIHU4IGJEUEV4ZWN1dGUgPSAxOw0KPj4+DQo+Pj4+ ICsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9w cml2YXRlKGRldik7DQo+Pj4NCj4+Pj4gK8KgwqAgLy8gUzMgY29tZSBiYWNrLCBuZWVkIG1v cmUgdGltZSB0byB3YWl0IEJNQyByZWFkeS4NCj4+Pg0KPj4+PiArwqDCoCBpZiAoYlBvd2Vy KQ0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBXYWl0Q291bnQgPSAzMDA7DQo+ Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCAvLyBXYWl0IHRvdGFs IGNvdW50IGJ5IGRpZmZlcmVudCBjb25kaXRpb24uDQo+Pj4NCj4+Pj4gK8KgwqAgZm9yIChq ID0gMDsgaiA8IFdhaXRDb3VudDsgaisrKSB7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGJEUFRYID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRD X1BPUlQsDQo+Pj4+ICsweEQxLA0KPj4+DQo+Pj4+ICtUWF9UWVBFX01BU0spOw0KPj4+DQo+ Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJEUFRYKQ0KPj4+ DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2xlZXAoMTAw KTsNCj4+Pg0KPj4+PiArwqDCoCB9DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIC8v IDB4RSA6IEFTVERQIHdpdGggRFBNQ1UgRlcgaGFuZGxpbmcNCj4+Pg0KPj4+PiArwqDCoCBp ZiAoYkRQVFggPT0gQVNURFBfRFBNQ1VfVFgpIHsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgLy8gV2FpdCBvbmUgc2Vjb25kIHRoZW4gdGltZW91dC4NCj4+Pg0KPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqAgaSA9IDA7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsDQo+Pj4+ICsweEQxLCBDT1BST0NFU1NPUl9MQVVOQ0gpICE9 DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDT1BS T0NFU1NPUl9MQVVOQ0gpIHsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGkrKzsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8vIHdhaXQgMTAwIG1zDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2xlZXAoMTAwKTsNCj4+Pg0KPj4+PiArDQo+Pj4N Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaSA+PSAx MCkgew0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8vIERQIHdvdWxkIG5vdCBiZSByZWFkeS4NCj4+Pg0KPj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi RFBFeGVjdXRlID0gMDsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pg0KPj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgfQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKGJEUEV4ZWN1dGUpDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9BU1REUDsNCj4+Pg0K Pj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhf cmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPj4+DQo+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1OCkNCj4+Pj4g K35BU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0ssDQo+Pj4NCj4+Pj4gKw0KPj4+PiAr QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORSk7DQo+Pj4NCj4+Pj4gK8KgwqAgfSBlbHNlDQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBlID0gQVNU X1RYX05PTkU7DQo+Pj4NCj4+Pj4gK30NCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gKw0KPj4+ DQo+Pj4+ICsNCj4+Pg0KPj4+PiArdm9pZCBhc3RfZHBfcG93ZXJfb25fb2ZmKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGJvb2wgb24pIHsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+Pj4NCj4+Pj4gK8KgwqAg Ly8gUmVhZCBhbmQgVHVybiBvZmYgRFAgUEhZIHNsZWVwDQo+Pj4NCj4+Pj4gK8KgwqAgdTgg YkUzID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 RTMsDQo+Pj4NCj4+Pj4gK0FTVF9EUF9WSURFT19FTkFCTEUpOw0KPj4+DQo+Pj4+ICsNCj4+ Pg0KPj4+PiArwqDCoCAvLyBUdXJuIG9uIERQIFBIWSBzbGVlcA0KPj4+DQo+Pj4+ICvCoMKg IGlmICghb24pDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJFMyB8PSBBU1Rf RFBfUEhZX1NMRUVQOw0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCAvLyBEUCBQb3dl ciBvbi9vZmYNCj4+Pg0KPj4+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwg QVNUX0lPX0NSVENfUE9SVCwgMHhFMywgKHU4KQ0KPj4+DQo+Pj4+ICt+QVNUX0RQX1BIWV9T TEVFUCwgYkUzKTsgfQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gKw0K Pj4+DQo+Pj4+ICt2b2lkIGFzdF9kcF9zZXRfb25fb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGJvb2wgb24pIHsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFz dCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+Pj4NCj4+Pj4gK8KgwqAgdTggdmlkZW9fb25f b2ZmID0gb247DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIC8vIFZpZGVvIE9uL09m Zg0KPj4+DQo+Pj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweEUzLCAodTgpDQo+Pj4NCj4+Pj4gK35BU1RfRFBfVklERU9fRU5BQkxF LCBvbik7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIC8vIElmIERQIHBsdWcgaW4g YW5kIGxpbmsgc3VjY2Vzc2Z1bCB0aGVuIGNoZWNrIHZpZGVvIG9uIC8gb2ZmDQo+Pj4+ICtz dGF0dXMNCj4+Pg0KPj4+PiArwqDCoCBpZiAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4REMsDQo+Pj4+ICtBU1REUF9MSU5LX1NVQ0NFU1MpICYm DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21h c2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLA0KPj4+PiArQVNURFBfSFBEKSkgew0K Pj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB2aWRlb19vbl9vZmYgPDw9IDQ7DQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlIChhc3RfZ2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwNCj4+Pj4gKzB4REYsDQo+Pj4NCj4+Pj4g Kw0KPj4+PiArQVNURFBfTUlSUk9SX1ZJREVPX0VOQUJMRSkgIT0gdmlkZW9fb25fb2ZmKSB7 DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyB3 YWl0IDEgbXMNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG1kZWxheSgxKTsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ DQo+Pj4+ICvCoMKgIH0NCj4+Pg0KPj4+PiArfQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAr dm9pZCBhc3RfZHBfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QNCj4+ Pg0KPj4+PiArYXN0X3ZiaW9zX21vZGVfaW5mbyAqdmJpb3NfbW9kZSkgew0KPj4+DQo+Pj4+ ICvCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ ZGV2KTsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqAgdTMyIHVsUmVmcmVzaFJhdGVJ bmRleDsNCj4+Pg0KPj4+PiArwqDCoCB1OCBNb2RlSWR4Ow0KPj4+DQo+Pj4+ICsNCj4+Pg0K Pj4+PiArwqDCoCB1bFJlZnJlc2hSYXRlSW5kZXggPSB2Ymlvc19tb2RlLT5lbmhfdGFibGUt PnJlZnJlc2hfcmF0ZV9pbmRleCAtDQo+Pj4+ICsxOw0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+ PiArwqDCoCBzd2l0Y2ggKGNydGMtPm1vZGUuY3J0Y19oZGlzcGxheSkgew0KPj4+DQo+Pj4+ ICvCoMKgIGNhc2UgMzIwOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2Rl SWR4ID0gQVNURFBfMzIweDI0MF82MDsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7DQo+Pj4NCj4+Pj4gK8KgwqAgY2FzZSA0MDA6DQo+Pj4NCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSBBU1REUF80MDB4MzAwXzYwOw0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pg0KPj4+PiArwqDCoCBjYXNlIDUx MjoNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzUx MngzODRfNjA7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ DQo+Pj4+ICvCoMKgIGNhc2UgNjQwOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBNb2RlSWR4ID0gKEFTVERQXzY0MHg0ODBfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRl eCk7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+DQo+Pj4+ ICvCoMKgIGNhc2UgODAwOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2Rl SWR4ID0gKEFTVERQXzgwMHg2MDBfNTYgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+DQo+Pj4+ICvCoMKg IGNhc2UgMTAyNDoNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9 IChBU1REUF8xMDI0eDc2OF82MCArICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4+Pg0K Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4NCj4+Pj4gK8KgwqAgY2Fz ZSAxMTUyOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNU RFBfMTE1Mng4NjRfNzU7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Ow0KPj4+DQo+Pj4+ICvCoMKgIGNhc2UgMTI4MDoNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKGNydGMtPm1vZGUuY3J0Y192ZGlzcGxheSA9PSA4MDApDQo+Pj4NCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFT VERQXzEyODB4ODAwXzYwX1JCIC0gKHU4KQ0KPj4+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsN Cj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZcKgwqDCoMKgwqDCoMKgwqDC oCAvLyAxMDI0DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBNb2RlSWR4ID0gKEFTVERQXzEyODB4MTAyNF82MCArICh1OCkNCj4+Pj4gK3VsUmVm cmVzaFJhdGVJbmRleCk7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Ow0KPj4+DQo+Pj4+ICvCoMKgIGNhc2UgMTM2MDoNCj4+Pg0KPj4+PiArwqDCoCBjYXNlIDEz NjY6DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSBBU1REUF8x MzY2eDc2OF82MDsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ Pj4NCj4+Pj4gK8KgwqAgY2FzZSAxNDQwOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBNb2RlSWR4ID0gKEFTVERQXzE0NDB4OTAwXzYwX1JCIC0gKHU4KQ0KPj4+PiArdWxS ZWZyZXNoUmF0ZUluZGV4KTsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7DQo+Pj4NCj4+Pj4gK8KgwqAgY2FzZSAxNjAwOg0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDkwMCkNCj4+Pg0K Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAo QVNURFBfMTYwMHg5MDBfNjBfUkIgLSAodTgpDQo+Pj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgp Ow0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlwqDCoMKgwqDCoMKgwqDC oMKgIC8vMTIwMA0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgTW9kZUlkeCA9IEFTVERQXzE2MDB4MTIwMF82MDsNCj4+Pg0KPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4NCj4+Pj4gK8KgwqAgY2FzZSAxNjgwOg0KPj4+ DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzE2ODB4MTA1 MF82MF9SQiAtICh1OCkNCj4+Pj4gK3VsUmVmcmVzaFJhdGVJbmRleCk7DQo+Pj4NCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+DQo+Pj4+ICvCoMKgIGNhc2UgMTky MDoNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNydGMtPm1vZGUuY3J0 Y192ZGlzcGxheSA9PSAxMDgwKQ0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzE5MjB4MTA4MF82MDsNCj4+Pg0KPj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZcKgwqDCoMKgwqDCoMKgwqDCoCAvLzEyMDAN Cj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJ ZHggPSBBU1REUF8xOTIweDEyMDBfNjA7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIGJyZWFrOw0KPj4+DQo+Pj4+ICvCoMKgIGRlZmF1bHQ6DQo+Pj4NCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4+Pg0KPj4+PiArwqDCoCB9DQo+Pj4NCj4+Pj4g Kw0KPj4+DQo+Pj4+ICvCoMKgIC8qDQo+Pj4NCj4+Pj4gK8KgwqAgKiBDUkUwWzc6MF06IE1J U0MwICgoMHgwMDogMTgtYnBwKSBvciAoMHgyMDogMjQtYnBwKQ0KPj4+DQo+Pj4+ICvCoMKg ICogQ1JFMVs3OjBdOiBNSVNDMSAoZGVmYXVsdDogMHgwMCkNCj4+Pg0KPj4+PiArwqDCoCAq IENSRTJbNzowXTogdmlkZW8gZm9ybWF0IGluZGV4ICgweDAwIH4gMHgyMCBvciAweDQwIH4g MHg1MCkNCj4+Pg0KPj4+PiArwqDCoCAqLw0KPj4+DQo+Pj4+ICvCoMKgIGFzdF9zZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUwLCAodTgpDQo+Pj4+ICt+ QVNURFBfQ0xFQVJfTUFTSywNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1REUF9NSVNDMF8yNGJwcCk7DQo+Pj4N Cj4+Pj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4RTEsICh1OCkNCj4+Pj4gK35BU1REUF9DTEVBUl9NQVNLLCBBU1REUF9NSVNDMSk7 DQo+Pj4NCj4+Pj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4RTIsICh1OCkNCj4+Pg0KPj4+PiArfkFTVERQX0NMRUFSX01BU0ssIE1v ZGVJZHgpOyB9DQo+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X2Rydi5oDQo+Pj4NCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBp bmRleCBhMTkzMTViMmYuLmZmMWFlMzE0YiAxMDA2NDQNCj4+Pg0KPj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaA0KPj4+DQo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X2Rydi5oDQo+Pj4NCj4+Pj4gQEAgLTcwLDYgKzcwLDcgQEAgZW51bSBh c3RfdHhfY2hpcCB7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9O T05FLA0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBBU1RfVFhfU0lMMTY0LA0K Pj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBBU1RfVFhfRFA1MDEsDQo+Pj4NCj4+ Pj4gK8KgwqAgQVNUX1RYX0FTVERQLA0KPj4+DQo+Pj4+ICAgwqDCoCB9Ow0KPj4+DQo+Pj4+ DQo+Pj4NCj4+Pj4gICDCoMKgICNkZWZpbmUgQVNUX0RSQU1fNTEyTXgxNiAwDQo+Pj4NCj4+ Pj4gQEAgLTE4NCw2ICsxODUsMTAgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsNCj4+Pg0KPj4+ PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciBjb25uZWN0b3I7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB9IGRwNTAxOw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3Qgew0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25u ZWN0b3I7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0gYXN0ZHA7DQo+Pj4N Cj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIH0gb3V0cHV0Ow0KPj4+DQo+Pj4+DQo+Pj4N Cj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIGJvb2wgc3VwcG9ydF93aWRlX3NjcmVlbjsN Cj4+Pg0KPj4+PiBAQCAtMzU3LDEwICszNjIsMTEzIEBAIGludCBhc3RfbW9kZV9jb25maWdf aW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUNCj4+Pj4gKmFzdCk7DQo+Pj4NCj4+Pj4gICDCoMKg ICNkZWZpbmUgQVNUX0RQNTAxX0VESURfREFUQcKgwqDCoCAweGYwMjANCj4+Pg0KPj4+Pg0K Pj4+DQo+Pj4+ICAgwqDCoCAvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQgcmVnICovDQo+ Pj4NCj4+Pj4gKyNkZWZpbmUgQ09QUk9DRVNTT1JfTEFVTkNIwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNSkNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4g Ky8qDQo+Pj4NCj4+Pj4gKyAqIERpc3BsYXkgVHJhbnNtaXR0ZXIgVHlwZToNCj4+Pg0KPj4+ PiArICovDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgVFhfVFlQRV9NQVNLwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMywgMSkN Cj4+Pg0KPj4+PiArI2RlZmluZSBOT19UWMKgwqDCoCAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoMCA8PCAxKQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIElURTY2MTIxX1ZCSU9TX1RYwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMSA8PCAxKQ0KPj4+DQo+Pj4+ ICsjZGVmaW5lIFNJMTY0X1ZCSU9TX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMiA8PCAxKQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIENI NzAwM19WQklPU19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICgzIDw8IDEpDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgRFA1MDFfVkJJT1NfVFjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDQgPDwgMSkNCj4+ Pg0KPj4+PiArI2RlZmluZSBBTlg5ODA3X1ZCSU9TX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoNSA8PCAxKQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIFRYX0ZX X0VNQkVEREVEX0ZXX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICg2IDw8IDEp DQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfRFBNQ1VfVFjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDcgPDwgMSkNCj4+ Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gICDCoMKgICNkZWZpbmUgQVNUX1ZSQU1fSU5JVF9TVEFU VVNfTUFTS8KgwqDCoMKgwqDCoCBHRU5NQVNLKDcsIDYpDQo+Pj4NCj4+Pj4gICDCoMKgIC8v I2RlZmluZSBBU1RfVlJBTV9JTklUX0JZX0JNQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoNykNCj4+Pg0KPj4+PiAgIMKgwqAgLy8jZGVmaW5lIEFTVF9WUkFNX0lOSVRfUkVBRFnC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDYpDQo+Pj4NCj4+Pj4NCj4+Pg0K Pj4+PiArLyogRGVmaW5lIGZvciBTb2Mgc2NyYXRjaGVkIHJlZyB1c2VkIG9uIEFTVERQICov DQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNUX0RQX1BIWV9TTEVFUMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDQpDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNU X0RQX1ZJREVPX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+ DQo+Pj4+ICsNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1RfRFBfUE9XRVJfT07CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlDQo+Pj4NCj4+Pj4gKyNkZWZpbmUg QVNUX0RQX1BPV0VSX09GRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm YWxzZQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArLyoNCj4+Pg0KPj4+PiArICogQ1JEMVti NV06IERQIE1DVSBGVyBpcyBleGVjdXRpbmcNCj4+Pg0KPj4+PiArICogQ1JEQ1tiMF06IERQ IGxpbmsgc3VjY2Vzcw0KPj4+DQo+Pj4+ICsgKiBDUkRGW2IwXTogRFAgSFBEDQo+Pj4NCj4+ Pj4gKyAqIENSRTVbYjBdOiBIb3N0IHJlYWRpbmcgRURJRCBwcm9jZXNzIGlzIGRvbmXCoCAq Lw0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQX01DVV9GV19FWEVDVVRJTkfCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg1KQ0KPj4+DQo+Pj4+ICsjZGVm aW5lIEFTVERQX0xJTktfU1VDQ0VTU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQX0hQ RMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+Pj4NCj4+Pj4gKyNkZWZp bmUgQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoMCkNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF9IT1NUX0VESURfUkVBRF9E T05FX01BU0vCoMKgwqAgR0VOTUFTSygwLCAwKQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAr LyoNCj4+Pg0KPj4+PiArICogQ1JCOFtiMV06IEVuYWJsZSBWU1lOQyBvZmYNCj4+Pg0KPj4+ PiArICogQ1JCOFtiMF06IEVuYWJsZSBIU1lOQyBvZmYNCj4+Pg0KPj4+PiArICovDQo+Pj4N Cj4+Pj4gKyNkZWZpbmUgQVNUX0RQTVNfVlNZTkNfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4+DQo+ Pj4+ICsjZGVmaW5lIEFTVF9EUE1TX0hTWU5DX09GRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4+Pg0KPj4+ PiArDQo+Pj4NCj4+Pj4gKy8qDQo+Pj4NCj4+Pj4gKyAqIENSREZbYjRdOiBNaXJyb3Igb2Yg QVNUX0RQX1ZJREVPX0VOQUJMRQ0KPj4+DQo+Pj4+ICsgKiBQcmVjb25kaXRpb246wqAgQS4g fkFTVF9EUF9QSFlfU0xFRVDCoCAmJg0KPj4+DQo+Pj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQi4gRFBfSFBEICYmDQo+Pj4NCj4+Pj4g KyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDLiBE UF9MSU5LX1NVQ0NFU1MNCj4+Pg0KPj4+PiArICovDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNU RFBfTUlSUk9SX1ZJREVPX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoNCkNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfRURJRF9SRUFE X1BPSU5URVJfTUFTS8KgIEdFTk1BU0soNywgMCkNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1RE UF9FRElEX1ZBTElEX0ZMQUdfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBH RU5NQVNLKDAsIDApDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfRURJRF9SRUFEX0RBVEFf TUFTS8KgwqDCoMKgwqDCoMKgIEdFTk1BU0soNywgMCkNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+ Pj4gKy8qDQo+Pj4NCj4+Pj4gKyAqIEFTVERQIHNldG1vZGUgcmVnaXN0ZXJzOg0KPj4+DQo+ Pj4+ICsgKiBDUkUwWzc6MF06IE1JU0MwICgoMHgwMDogMTgtYnBwKSBvciAoMHgyMDogMjQt YnBwKQ0KPj4+DQo+Pj4+ICsgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAweDAwKQ0K Pj4+DQo+Pj4+ICsgKiBDUkUyWzc6MF06IHZpZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4 MjAgb3IgMHg0MCB+IDB4NTApwqAgKi8NCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF9NSVND MF8yNGJwcMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNSkNCj4+ Pg0KPj4+PiArI2RlZmluZSBBU1REUF9NSVNDMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+Pj4NCj4+Pj4gKyNkZWZp bmUgQVNURFBfQ0xFQVJfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBHRU5NQVNLKDcsIDApDQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICsvKg0KPj4+DQo+Pj4+ ICsgKiBBU1REUCByZXNvdWx0aW9uIHRhYmxlOg0KPj4+DQo+Pj4+ICsgKiBFWDrCoCBBU1RE UF9BX0JfQzoNCj4+Pg0KPj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QTogUmVzb2x1dGlvbg0KPj4+DQo+Pj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCOiBSZWZyZXNoIFJhdGUNCj4+Pg0KPj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQzogTWlzYyBpbmZvcm1hdGlvbiwgc3VjaCBhcyBDVlQsIFJlZHVjZSBC bGFua2VkDQo+Pj4NCj4+Pj4gKyAqLw0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzY0MHg0 ODBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAwDQo+Pj4NCj4+Pj4gKyNkZWZp bmUgQVNURFBfNjQweDQ4MF83MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDENCj4+ Pg0KPj4+PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzc1wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHgwMg0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzY0MHg0ODBfODXCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDAzDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfODAw eDYwMF81NsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDQNCj4+Pg0KPj4+PiArI2Rl ZmluZSBBU1REUF84MDB4NjAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNQ0K Pj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzgwMHg2MDBfNzLCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDA2DQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF83NcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDcNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF84 MDB4NjAwXzg1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOA0KPj4+DQo+Pj4+ICsj ZGVmaW5lIEFTVERQXzEwMjR4NzY4XzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5DQo+ Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3NjhfNzDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDB4MEENCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xMDI0eDc2OF83NcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgwQg0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4 Xzg1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBDDQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNU RFBfMTI4MHgxMDI0XzYwwqDCoMKgwqDCoMKgwqDCoMKgIDB4MEQNCj4+Pg0KPj4+PiArI2Rl ZmluZSBBU1REUF8xMjgweDEwMjRfNzXCoMKgwqDCoMKgwqDCoMKgwqAgMHgwRQ0KPj4+DQo+ Pj4+ICsjZGVmaW5lIEFTVERQXzEyODB4MTAyNF84NcKgwqDCoMKgwqDCoMKgwqDCoCAweDBG DQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfMTYwMHgxMjAwXzYwwqDCoMKgwqDCoMKgwqDC oMKgIDB4MTANCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF8zMjB4MjQwXzYwwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgxMQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzQwMHgz MDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEyDQo+Pj4NCj4+Pj4gKyNkZWZp bmUgQVNURFBfNTEyeDM4NF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTMNCj4+ Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xOTIweDEyMDBfNjDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxNA0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzE5MjB4MTA4MF82MMKgwqDCoMKgwqDC oMKgwqDCoCAweDE1DQo+Pj4NCj4+Pj4gKyNkZWZpbmUgQVNURFBfMTI4MHg4MDBfNjDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MTYNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xMjgw eDgwMF82MF9SQsKgwqDCoMKgIDB4MTcNCj4+Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xNDQw eDkwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxOA0KPj4+DQo+Pj4+ICsjZGVmaW5l IEFTVERQXzE0NDB4OTAwXzYwX1JCwqDCoMKgwqAgMHgxOQ0KPj4+DQo+Pj4+ICsjZGVmaW5l IEFTVERQXzE2ODB4MTA1MF82MMKgwqDCoMKgwqDCoMKgwqDCoCAweDFBDQo+Pj4NCj4+Pj4g KyNkZWZpbmUgQVNURFBfMTY4MHgxMDUwXzYwX1JCwqDCoCAweDFCDQo+Pj4NCj4+Pj4gKyNk ZWZpbmUgQVNURFBfMTYwMHg5MDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MUMNCj4+ Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MF9SQsKgwqDCoMKgIDB4MUQNCj4+ Pg0KPj4+PiArI2RlZmluZSBBU1REUF8xMzY2eDc2OF82MMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgxRQ0KPj4+DQo+Pj4+ICsjZGVmaW5lIEFTVERQXzExNTJ4ODY0Xzc1wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAweDFGDQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICAgwqDCoCBpbnQg YXN0X21tX2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpOw0KPj4+DQo+Pj4+DQo+Pj4N Cj4+Pj4gICDCoMKgIC8qIGFzdCBwb3N0ICovDQo+Pj4NCj4+Pj4gQEAgLTM4MSw0ICs0ODks MTEgQEAgdm9pZCBhc3RfaW5pdF8zcmR0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4+ Pg0KPj4+PiAgIMKgwqAgLyogYXN0X2kyYy5jICovDQo+Pj4NCj4+Pj4gICDCoMKgc3RydWN0 IGFzdF9pMmNfY2hhbiAqYXN0X2kyY19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 DQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiArLyogYXNwZWVkIERQICovDQo+Pj4NCj4+Pj4gK2lu dCBhc3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlk ZGF0YSk7IHZvaWQNCj4+Pg0KPj4+PiArYXN0X2RwX2xhdW5jaChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1OCBiUG93ZXIpOyB2b2lkDQo+Pj4NCj4+Pj4gK2FzdF9kcF9wb3dlcl9vbl9v ZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBubyk7IHZvaWQNCj4+Pg0KPj4+PiAr YXN0X2RwX3NldF9vbl9vZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBubyk7IHZv aWQNCj4+Pg0KPj4+PiArYXN0X2RwX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg c3RydWN0IGFzdF92Ymlvc19tb2RlX2luZm8NCj4+Pg0KPj4+PiArKnZiaW9zX21vZGUpOw0K Pj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAgIMKgwqAgI2VuZGlmDQo+Pj4NCj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPj4+DQo+Pj4+IGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIGluZGV4IDIyZTllMmQzYy4uMTExM2VlMWNi IDEwMDY0NA0KPj4+DQo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4u Yw0KPj4+DQo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPj4+ DQo+Pj4+IEBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAo c3RydWN0IGRybV9kZXZpY2UNCj4+Pj4gKmRldiwgYm9vbCAqbmVlZF9wb3N0KQ0KPj4+DQo+ Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfU0lMMTY0Ow0KPj4+DQo+Pj4+ICAgwqDC oCDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiAtwqDCoMKgIGlmICgo YXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkpIHsNCj4+ Pg0KPj4+PiArwqDCoCBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlw ID09IEFTVDI0MDApIHx8DQo+Pj4+ICsoYXN0LT5jaGlwDQo+Pj4NCj4+Pj4gKz09IEFTVDI1 MDApKSB7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvKg0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg wqAqIE9uIEFTVDIzMDAgYW5kIDI0MDAsIGxvb2sgdGhlIGNvbmZpZ3VyYXRpb24NCj4+Pj4g c2V0IGJ5IHRoZSBTb0MgaW4NCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIMKgKiB0aGUgU09DIHNjcmF0Y2ggcmVnaXN0ZXIgIzEgYml0cyAxMTo4 DQo+Pj4+IChpbnRlcmVzdGluZ2x5IG1hcmtlZCBAQA0KPj4+DQo+Pj4+IC0yNTYsNyArMjU2 LDggQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRl diwNCj4+Pj4gYm9vbCAqbmVlZF9wb3N0KQ0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSAweDBjOg0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hp cF90eXBlID0gQVNUX1RYX0RQNTAxOw0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+DQo+Pj4+IC3CoMKgwqAgfQ0KPj4+DQo+Pj4+ICvC oMKgIH0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApDQo+Pj4NCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9sYXVuY2goJmFzdC0+YmFzZSwgMCk7DQo+Pj4NCj4+ Pj4NCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqAgLyogUHJpbnQgc3R1ZmYgZm9y IGRpYWdub3N0aWMgcHVycG9zZXMgKi8NCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKg wqAgc3dpdGNoKGFzdC0+dHhfY2hpcF90eXBlKSB7DQo+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPj4+DQo+Pj4+IGIvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfbW9kZS5jIGluZGV4IDQ1YjU2YjM5YS4uNDcyODgyNWI3IDEwMDY0 NA0KPj4+DQo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPj4+ DQo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYw0KPj4+DQo+Pj4+ IEBAIC05ODgsMjEgKzk4OCw0MSBAQCBzdGF0aWMgaW50IGFzdF9jdXJzb3JfcGxhbmVfaW5p dChzdHJ1Y3QNCj4+Pj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4+Pg0KPj4+PiAgIMKgwqAgc3Rh dGljIHZvaWQgYXN0X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2Rl KQ0KPj4+DQo+Pj4+ICAgwqDCoCB7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsN Cj4+Pg0KPj4+PiArwqDCoCB1OCBjaCA9IEFTVF9EUE1TX1ZTWU5DX09GRiB8IEFTVF9EUE1T X0hTWU5DX09GRjsNCj4+Pg0KPj4+Pg0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDC oCAvKiBUT0RPOiBNYXliZSBjb250cm9sIGRpc3BsYXkgc2lnbmFsIGdlbmVyYXRpb24gd2l0 aA0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCDCoCrCoMKgwqDCoMKgwqAgU3lu YyBFbmFibGUgKGJpdCBDUjE3LjcpLg0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDC oCDCoCovDQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAobW9kZSkg ew0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNf T046DQo+Pj4NCj4+Pj4gLcKgwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToNCj4+ Pg0KPj4+PiAtwqDCoMKgIGNhc2UgRFJNX01PREVfRFBNU19TVVNQRU5EOg0KPj4+DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNU X0lPX1NFUV9QT1JULMKgIDB4MDEsDQo+Pj4+ICsweGRmLCAwKTsNCj4+Pg0KPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4YjYsDQo+Pj4+ICsweGZjLCAwKTsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBB U1RfVFhfRFA1MDEpDQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0 Yy0+ZGV2LA0KPj4+PiAxKTsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfQVNURFApIHsNCj4+ Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9w b3dlcl9vbl9vZmYoY3J0Yy0+ZGV2LCBBU1RfRFBfUE9XRVJfT04pOw0KPj4+DQo+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3dhaXRfZm9yX3ZyZXRy YWNlKGFzdCk7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3RfZHBfc2V0X29uX29mZihjcnRjLT5kZXYsIDEpOw0KPj4+DQo+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBhc3RfY3J0Y19sb2FkX2x1dChhc3QsIGNydGMpOw0KPj4+DQo+Pj4+ICAg wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4NCj4+Pj4g K8KgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX1NUQU5EQlk6DQo+Pj4NCj4+Pj4gK8KgwqAgY2Fz ZSBEUk1fTU9ERV9EUE1TX1NVU1BFTkQ6DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDC oMKgIGNhc2UgRFJNX01PREVfRFBNU19PRkY6DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGNoID0gbW9kZTsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfRFA1MDEpDQo+ Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0Yy0+ZGV2LA0KPj4+PiAw KTsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqAgYnJl YWs7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo YXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0FTVERQKSB7DQo+Pj4NCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfc2V0X29uX29mZihjcnRj LT5kZXYsIDApOw0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYXN0X2RwX3Bvd2VyX29uX29mZihjcnRjLT5kZXYsDQo+Pj4+ICtBU1RfRFBfUE9X RVJfT0ZGKTsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+DQo+Pj4+ ICsNCj4+Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19TRVFfUE9SVCzCoCAweDAxLA0KPj4+PiArMHhkZiwgMHgyMCk7 DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21h c2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LA0KPj4+PiArMHhmYywgY2gpOw0KPj4+ DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4NCj4+Pj4gICDCoMKgIH0NCj4+ Pg0KPj4+Pg0KPj4+DQo+Pj4+IEBAIC0xMDI3LDcgKzEwNDcsNyBAQCBhc3RfY3J0Y19oZWxw ZXJfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2NydGMNCj4+Pg0KPj4+PiAqY3J0YywgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUNCj4+Pg0KPj4+Pg0KPj4+DQo+Pj4+ICAgwqDCoCDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChhc3QtPmNoaXAgPT0gQVNUMjEw MCkgfHwgKGFzdC0+Y2hpcCA9PQ0KPj4+PiBBU1QyMjAwKSB8fA0KPj4+DQo+Pj4+ICAgwqDC oCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqAoYXN0LT5jaGlwID09 IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0NCj4+Pj4gQVNUMjQwMCkgfHwNCj4+Pg0KPj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgKGFzdC0+Y2hpcCA9PSBBU1QyNTAw KSkgew0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgKGFzdC0+Y2hp cCA9PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI2MDApKSB7DQo+Pj4NCj4+Pj4g ICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKChtb2RlLT5oZGlzcGxheSA9PSAxOTIwKSAmJg0KPj4+PiAobW9kZS0+dmRpc3BsYXkg PT0gMTA4MCkpDQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX09LOw0K Pj4+DQo+Pj4+DQo+Pj4NCj4+Pj4gQEAgLTExMTAsNiArMTEzMCw3IEBAIGFzdF9jcnRjX2hl bHBlcl9hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjDQo+Pj4+ICpjcnRjLA0KPj4+DQo+ Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRv X2FzdF9wcml2YXRlKGNydGMtPmRldik7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBhc3RfY3J0Y19zdGF0ZSAqYXN0X2NydGNfc3RhdGUgPQ0KPj4+PiB0b19h c3RfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGFzdF9jcnRjX3N0YXRlICpvbGRfYXN0X2NydGNfc3RhdGUgPQ0KPj4+ DQo+Pj4+IHRvX2FzdF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsNCj4+Pg0KPj4+PiAr wqDCoCBzdHJ1Y3QgYXN0X3ZiaW9zX21vZGVfaW5mbyAqdmJpb3NfbW9kZV9pbmZvID0NCj4+ Pg0KPj4+PiArJmFzdF9jcnRjX3N0YXRlLT52Ymlvc19tb2RlX2luZm87DQo+Pj4NCj4+Pj4N Cj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqAgLyoNCj4+Pg0KPj4+PiAgIMKgwqAg wqDCoMKgwqDCoMKgwqAgwqAqIFRoZSBnYW1tYSBMVVQgaGFzIHRvIGJlIHJlbG9hZGVkIGFm dGVyIGNoYW5naW5nIHRoZQ0KPj4+PiBwcmltYXJ5IEBADQo+Pj4NCj4+Pj4gLTExMTcsNiAr MTEzOCwxMCBAQCBhc3RfY3J0Y19oZWxwZXJfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0 Yw0KPj4+PiAqY3J0YywNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqAgwqAqLw0K Pj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBpZiAob2xkX2FzdF9jcnRjX3N0YXRl LT5mb3JtYXQgIT0NCj4+Pj4gYXN0X2NydGNfc3RhdGUtPmZvcm1hdCkNCj4+Pg0KPj4+PiAg IMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9jcnRjX2xvYWRfbHV0 KGFzdCwgY3J0Yyk7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIC8vU2V0IEFzcGVl ZCBEaXNwbGF5LVBvcnQNCj4+Pg0KPj4+PiArwqDCoCBpZiAoYXN0LT50eF9jaGlwX3R5cGUg PT0gQVNUX1RYX0FTVERQKQ0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rf ZHBfc2V0X21vZGUoY3J0YywgdmJpb3NfbW9kZV9pbmZvKTsNCj4+Pg0KPj4+PiAgIMKgwqAg fQ0KPj4+DQo+Pj4+DQo+Pj4NCj4+Pj4gICDCoMKgIHN0YXRpYyB2b2lkDQo+Pj4NCj4+Pj4g QEAgLTE1MjcsNiArMTU1Miw5MyBAQCBzdGF0aWMgaW50IGFzdF9kcDUwMV9vdXRwdXRfaW5p dChzdHJ1Y3QNCj4+Pj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4+Pg0KPj4+PiAgIMKgwqAgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4NCj4+Pj4gICDCoMKgIH0NCj4+Pg0KPj4+Pg0K Pj4+DQo+Pj4+ICsvKg0KPj4+DQo+Pj4+ICsgKiBBU1BFRUQgRGlzcGxheS1Qb3J0IENvbm5l Y3Rvcg0KPj4+DQo+Pj4+ICsgKi8NCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK3N0YXRpYyBp bnQgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzKHN0cnVjdA0KPj4+PiAr ZHJtX2Nvbm5lY3Rvcg0KPj4+DQo+Pj4+ICsqY29ubmVjdG9yKSB7DQo+Pj4NCj4+Pj4gK8Kg wqAgdm9pZCAqZWRpZDsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqAgaW50IHN1Y2M7 DQo+Pj4NCj4+Pj4gK8KgwqAgaW50IGNvdW50Ow0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAr wqDCoCBlZGlkID0ga21hbGxvYyhFRElEX0xFTkdUSCwgR0ZQX0tFUk5FTCk7DQo+Pj4NCj4+ Pj4gK8KgwqAgaWYgKCFlZGlkKQ0KPj4+DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBn b3RvIGVycl9kcm1fY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5Ow0KPj4+DQo+Pj4+ ICsNCj4+Pg0KPj4+PiArwqDCoCBzdWNjID0gYXN0X2FzdGRwX3JlYWRfZWRpZChjb25uZWN0 b3ItPmRldiwgZWRpZCk7DQo+Pj4NCj4+Pj4gK8KgwqAgaWYgKHN1Y2MgPCAwKQ0KPj4+DQo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9rZnJlZTsNCj4+Pg0KPj4+PiAr DQo+Pj4NCj4+Pj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShj b25uZWN0b3IsIGVkaWQpOw0KPj4+DQo+Pj4+ICvCoMKgIGNvdW50ID0gZHJtX2FkZF9lZGlk X21vZGVzKGNvbm5lY3RvciwgZWRpZCk7DQo+Pj4NCj4+Pj4gK8KgwqAga2ZyZWUoZWRpZCk7 DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIHJldHVybiBjb3VudDsNCj4+Pg0KPj4+ PiArDQo+Pj4NCj4+Pj4gK2Vycl9rZnJlZToNCj4+Pg0KPj4+PiArwqDCoCBrZnJlZShlZGlk KTsNCj4+Pg0KPj4+PiArZXJyX2RybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHk6 DQo+Pj4NCj4+Pj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShj b25uZWN0b3IsIE5VTEwpOw0KPj4+DQo+Pj4+ICvCoMKgIHJldHVybiAwOw0KPj4+DQo+Pj4+ ICt9DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3JfaGVscGVyX2Z1bmNzDQo+Pj4+ICthc3RfYXN0ZHBfY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsNCj4+Pg0KPj4+PiArwqDCoCAuZ2V0X21vZGVzID0gYXN0X2FzdGRwX2Nv bm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzLA0KPj4+DQo+Pj4+ICt9Ow0KPj4+DQo+Pj4+ICsN Cj4+Pg0KPj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFz dF9hc3RkcF9jb25uZWN0b3JfZnVuY3MgPQ0KPj4+PiArew0KPj4+DQo+Pj4+ICvCoMKgIC5y ZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwNCj4+Pg0KPj4+PiAr wqDCoCAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9t b2RlcywNCj4+Pg0KPj4+PiArwqDCoCAuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51 cCwNCj4+Pg0KPj4+PiArwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9DQo+Pj4+ICtk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0KPj4+DQo+Pj4+ ICvCoMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9DQo+Pj4+ICtkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4+Pg0KPj4+PiArfTsNCj4+Pg0KPj4+PiAr DQo+Pj4NCj4+Pj4gK3N0YXRpYyBpbnQgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdA0KPj4+DQo+Pj4+ICtkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpIHsNCj4+Pg0KPj4+PiArwqDCoCBpbnQgcmV0Ow0KPj4+DQo+Pj4+ICsNCj4+ Pg0KPj4+PiArwqDCoCByZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3Is DQo+Pj4+ICsmYXN0X2FzdGRwX2Nvbm5lY3Rvcl9mdW5jcywNCj4+Pg0KPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fTU9E RV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOw0KPj4+DQo+Pj4+ICvCoMKgIGlmIChyZXQpDQo+ Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4NCj4+Pj4g Kw0KPj4+DQo+Pj4+ICvCoMKgIGRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3Is DQo+Pj4NCj4+Pj4gKyZhc3RfYXN0ZHBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7DQo+Pj4N Cj4+Pj4gKw0KPj4+DQo+Pj4+ICvCoMKgIGNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQg PSAwOw0KPj4+DQo+Pj4+ICvCoMKgIGNvbm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0g MDsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8KgwqAgY29ubmVjdG9yLT5wb2xsZWQgPSBE Uk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsNCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK8Kg wqAgcmV0dXJuIDA7DQo+Pj4NCj4+Pj4gK30NCj4+Pg0KPj4+PiArDQo+Pj4NCj4+Pj4gK3N0 YXRpYyBpbnQgYXN0X2FzdGRwX291dHB1dF9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0 KSB7DQo+Pj4NCj4+Pj4gK8KgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZhc3QtPmJh c2U7DQo+Pj4NCj4+Pj4gK8KgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmFzdC0+Y3J0 YzsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmYXN0 LT5vdXRwdXQuYXN0ZHAuZW5jb2RlcjsNCj4+Pg0KPj4+PiArwqDCoCBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gJmFzdC0+b3V0cHV0LmFzdGRwLmNvbm5lY3RvcjsNCj4+ Pg0KPj4+PiArwqDCoCBpbnQgcmV0Ow0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCBy ZXQgPSBkcm1fc2ltcGxlX2VuY29kZXJfaW5pdChkZXYsIGVuY29kZXIsDQo+Pj4+ICtEUk1f TU9ERV9FTkNPREVSX1RNRFMpOw0KPj4+DQo+Pj4+ICvCoMKgIGlmIChyZXQpDQo+Pj4NCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4NCj4+Pj4gK8KgwqAg ZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSBkcm1fY3J0Y19tYXNrKGNydGMpOw0KPj4+DQo+ Pj4+ICsNCj4+Pg0KPj4+PiArwqDCoCByZXQgPSBhc3RfYXN0ZHBfY29ubmVjdG9yX2luaXQo ZGV2LCBjb25uZWN0b3IpOw0KPj4+DQo+Pj4+ICvCoMKgIGlmIChyZXQpDQo+Pj4NCj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4NCj4+Pj4gKw0KPj4+DQo+ Pj4+ICvCoMKgIHJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29ubmVjdG9y LCBlbmNvZGVyKTsNCj4+Pg0KPj4+PiArwqDCoCBpZiAocmV0KQ0KPj4+DQo+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAr wqDCoCByZXR1cm4gMDsNCj4+Pg0KPj4+PiArfQ0KPj4+DQo+Pj4+ICsNCj4+Pg0KPj4+PiAg IMKgwqAgLyoNCj4+Pg0KPj4+PiAgIMKgwqDCoCAqIE1vZGUgY29uZmlnDQo+Pj4NCj4+Pj4g ICDCoMKgwqAgKi8NCj4+Pg0KPj4+PiBAQCAtMTU2Myw3ICsxNjc1LDggQEAgaW50IGFzdF9t b2RlX2NvbmZpZ19pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZQ0KPj4+PiAqYXN0KQ0KPj4+DQo+ Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoGFzdC0+Y2hpcCA9PSBBU1QyMjAw IHx8DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgYXN0LT5jaGlw ID09IEFTVDIzMDAgfHwNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKg wqBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fA0KPj4+DQo+Pj4+IC3CoMKgwqAgwqDCoMKgIGFz dC0+Y2hpcCA9PSBBU1QyNTAwKSB7DQo+Pj4NCj4+Pj4gK8KgwqAgwqDCoMKgIGFzdC0+Y2hp cCA9PSBBU1QyNTAwIHx8DQo+Pj4NCj4+Pj4gK8KgwqAgwqDCoMKgIGFzdC0+Y2hpcCA9PSBB U1QyNjAwKSB7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7DQo+Pj4NCj4+Pj4gICDC oMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPm1vZGVfY29uZmlnLm1h eF9oZWlnaHQgPSAyMDQ4Ow0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCB9IGVs c2Ugew0KPj4+DQo+Pj4+IEBAIC0xNTk0LDYgKzE3MDcsOSBAQCBpbnQgYXN0X21vZGVfY29u ZmlnX2luaXQoc3RydWN0IGFzdF9wcml2YXRlDQo+Pj4+ICphc3QpDQo+Pj4NCj4+Pj4gICDC oMKgIMKgwqDCoMKgwqDCoMKgIGNhc2UgQVNUX1RYX0RQNTAxOg0KPj4+DQo+Pj4+ICAgwqDC oCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYXN0X2RwNTAxX291dHB1 dF9pbml0KGFzdCk7DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsNCj4+Pg0KPj4+PiArwqDCoCBjYXNlIEFTVF9UWF9BU1REUDoNCj4+ Pg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYXN0X2FzdGRwX291dHB1dF9p bml0KGFzdCk7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDC oMKgwqDCoMKgIGlmIChyZXQpDQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMNCj4+Pg0KPj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X3Bvc3QuYyBpbmRleCBiNWQ5MmY2NTIuLjBhYTljZjBmYiAxMDA2NDQNCj4+ Pg0KPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMNCj4+Pg0KPj4+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMNCj4+Pg0KPj4+PiBAQCAt Mzc5LDcgKzM3OSw5IEBAIHZvaWQgYXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpDQo+Pj4NCj4+Pj4gICDCoMKgIMKgwqDCoMKgwqDCoMKgIGFzdF9lbmFibGVfbW1pbyhk ZXYpOw0KPj4+DQo+Pj4+ICAgwqDCoCDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2RlZl9leHRf cmVnKGRldik7DQo+Pj4NCj4+Pj4NCj4+Pg0KPj4+PiAtwqDCoMKgIGlmIChhc3QtPmNvbmZp Z19tb2RlID09IGFzdF91c2VfcDJhKSB7DQo+Pj4NCj4+Pj4gK8KgwqAgaWYgKGFzdC0+Y2hp cCA9PSBBU1QyNjAwKSB7DQo+Pj4NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9k cF9sYXVuY2goZGV2LCAxKTsNCj4+Pg0KPj4+PiArwqDCoCB9IGVsc2UgaWYgKGFzdC0+Y29u ZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkNCj4+Pg0K Pj4+PiAgIMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3RfcG9zdF9jaGlwXzI1MDAoZGV2KTsNCj4+Pg0KPj4+PiAgIMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAw IHx8IGFzdC0+Y2hpcCA9PQ0KPj4+PiBBU1QyNDAwKQ0KPj4+DQo+Pj4+DQo+Pj4NCj4+Pj4g YmFzZS1jb21taXQ6IGM1NGIzOWE1NjUyMjc1MzhjNTJlYWQyMzQ5ZWIxN2Q1NGFhZGQ2ZjcN Cj4+Pg0KPj4+PiAtLQ0KPj4+DQo+Pj4+IDIuMjcuMA0KPj4+DQo+Pj4+DQo+Pj4NCj4+PiAt LQ0KPj4+DQo+Pj4gVGhvbWFzIFppbW1lcm1hbm4NCj4+Pg0KPj4+IEdyYXBoaWNzIERyaXZl ciBEZXZlbG9wZXINCj4+Pg0KPj4+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkg R21iSA0KPj4+DQo+Pj4gTWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnLCBHZXJtYW55 DQo+Pj4NCj4+PiAoSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQo+Pj4NCj4+PiBHZXNjaMOk ZnRzZsO8aHJlcjogSXZvIFRvdGV2DQo+Pj4NCj4+DQo+PiAtLQ0KPj4gVGhvbWFzIFppbW1l cm1hbm4NCj4+IEdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINCj4+IFNVU0UgU29mdHdhcmUg U29sdXRpb25zIEdlcm1hbnkgR21iSA0KPj4gTWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8cm5i ZXJnLCBHZXJtYW55IChIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCj4+IEdlc2Now6RmdHNm w7xocmVyOiBJdm8gVG90ZXYNCj4gDQo+IC0tDQo+IFRob21hcyBaaW1tZXJtYW5uDQo+IEdy YXBoaWNzIERyaXZlciBEZXZlbG9wZXINCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2Vy bWFueSBHbWJIDQo+IE1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0K PiAoSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQo+IEdlc2Now6RmdHNmw7xocmVyOiBJdm8g VG90ZXYNCg0KLS0gDQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVs b3Blcg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3Ry LiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVy ZykNCkdlc2Now6RmdHNmw7xocmVyOiBJdm8gVG90ZXYNCg== --------------hfKxwpIZPsKUklZOQlCdHyZF-- --------------jcyy9qqILv277a0bWSgget96 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+AFAmKXQpcFAwAAAAAACgkQlh/E3EQov+Da Yw/+MOCMogtXrxNM7wwaFUprRh4sEFWP7+k0lfM08gNkL8wqMSGg2u3sBEKI/GN8ZiLQ+rg6CNZJ tlSDSgIDMRuqQKpiPH4a1hbIA1AOo7L775IumdWJcWnL5eqwvzzcVJks/t5EKgHEgdY4V2aIqCff EfAj3FNvcimGXcL6u0NeShsGIQFBQhsxocUMeYSF0+vPKpdkI9XN7+O/6/OijJ1ktNuKWMDqQDDT 2dF8Hm5uu2eRVsS8vbVo5rne82ZlL9wGrxrazPNhAEnyB132f796t8bV2Cf5jeV3K94tmfUfxusa OqtV3gVUED9UmBU0kSTGBs1e6g7jgt703r3grNmFStOLsG0MoBYYdmuBy+GXNtkLf2nYYiNlgMXZ /uKe7ApKrH/CftOMHuhiWyKX9Zcy3/jVorrzRsy7RZLBwvg8m8prAtNTfrljpS+lD891fKnEK6aL RapYUxim076CFdr+UxYLQSixrWMcG2v/gMsS9TdMNnvpyf8smx3FSFWPrrCST5xylnl37rkHqMLl JU0eUe3R2vzTIPP7XFB5HOoxMDLx6eGY+IZDD6eq2vp5f6N4jN2fgoi+teewGJd9uNWmZEyCai3H hFP6m4/6O9VmJWRpjLVijZnPwrkE4Hbxc+dJWhDLD2bfhd/T1mG+qDUM9DisDs+iHKNSqOh5LcCg P6U= =WiHx -----END PGP SIGNATURE----- --------------jcyy9qqILv277a0bWSgget96--