From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by sourceware.org (Postfix) with ESMTPS id 7A1AD385840B for ; Tue, 24 Oct 2023 08:52:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7A1AD385840B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7A1AD385840B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=198.175.65.9 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698137564; cv=pass; b=CWP+pqI1mmQ5Cd25XzHe7//9r1VYl7WbsV9mqMUt+x0IwBzOqQRUdaod7jbR0oaWJ+BW52yCMfCYdzOCFOEpgS+/ZfeZuHI9Ku6ytkFo6DSiWOfPc+srHdo3HZCeiX7A/31+CkCa45NtmIDUw+sqiDrimdti0eOpV1VEKeeGhkk= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698137564; c=relaxed/simple; bh=Mh7mI4pVignuvNrJMw3lGhryjWFscV3F6W6EQ4K2bS4=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=eIx7TJG4NhIlv4lgnx9Pq5V35zmiod0K6VGIvY0z1PysbpkWfZKLLtqUSNS2p5RkwrHjYb+liqOZwU8SUTQCOlU8u6KE58aBTiPB4kVx9rvbq6CVPecUWWKl45l4Q0FKapKqR6ptToUWEEaUukmXlMWEBquhVMvMxRWxmL9uvKE= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1698137521; x=1729673521; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Mh7mI4pVignuvNrJMw3lGhryjWFscV3F6W6EQ4K2bS4=; b=Hs5Ts7fbWE/T+fjLlHKkw5qZ3iTRj/p11bX/cTGyQQ1G7pfpAwF6Im/z hQcDp5pZg68KRUVkeiD61RVEPzi5fmzj7Ruub63vO0dNzKgEWFHr5xTdV ra8/xEedpxZiFmZhzqjRAn24x/nr6vbB3NT/Gh+vm+bC1qmutZ1NXviv2 w6zuaicYnz66OnsgWrdsRuAzXljQGr50Bb3Lgztc8ztVo3zh5xilX0wNC IzgOpC+uM0VnUK2b2RF9VmR54axolwhQh2ZpRkofLcEoOzJY87XP8bSKu uQWrW53aK10VfGVwEv9N5aP70PwOehksiHywsZb8oVJ/cQDH3tg7oGF5T g==; X-IronPort-AV: E=McAfee;i="6600,9927,10872"; a="5636237" X-IronPort-AV: E=Sophos;i="6.03,247,1694761200"; d="scan'208";a="5636237" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Oct 2023 01:38:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10872"; a="751924976" X-IronPort-AV: E=Sophos;i="6.03,247,1694761200"; d="scan'208";a="751924976" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 24 Oct 2023 01:38:42 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 24 Oct 2023 01:38:41 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Tue, 24 Oct 2023 01:38:41 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.168) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Tue, 24 Oct 2023 01:38:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dDzW0nA30TZcJv+3Hha2sDnhTso8XPGK0S3smveto76WdBY3M1Xc4GUW6es0Fyys0OY+yVjyo8MqCmDyMosT6QSSSqzA0/V5Q9lO3gfOQDe9ikJSSEY0F7MOUFXarYD3jnc1MtrW5MRJIg4o1GWBLmVReAvb6yVPaFQcYEGbMmgp+Q9WvvI4NWY14oBA8QmtOZzuNKfc5eZjywg7P9wXiZGN0gPmB44N8FrsZmemG8fwEmGsa7KAfi5ZgP6ov9m8LGWkdgqyiZegZiJHyrtHVkYO7Id3LZ4tJyxu2TwG+WGvxOb2IxMPGt5C0WWt4eti3ifRf+ccoAscmXgZRiPbMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Mh7mI4pVignuvNrJMw3lGhryjWFscV3F6W6EQ4K2bS4=; b=QSe+l8EKGxKdSgY+steR/CQmcaO4LWGOoS7zGSs0AddxoSu5LZG/6kDKSsmcCwVWnmR03xExaoZxGmSk+LnwWBKIrfvem7YbylkOWz129KzvuQ3aLtSJkeAUX55tLAhyk5OvD4k7Nz8AXUIo2GUP0Kr0c+c7AL6+/L2tjhZn2EpG61i5kcM0pRu6BCjIQRoQSgBVvK2VUwI1NCr6pGNMOUgjihDu0PcNQE1MusbmrMavP/JByLzqysiHmBEJNup2IBZzc4NGLNSq9R61SK8b9g6VxSLSTmSbbl1kRq1gVz1Krbt+JjIbk7xCZ18j1aZR3Fw56ArZsOcJnSfw8tY1ag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SJ0PR11MB5940.namprd11.prod.outlook.com (2603:10b6:a03:42f::18) by PH7PR11MB8480.namprd11.prod.outlook.com (2603:10b6:510:2fe::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.26; Tue, 24 Oct 2023 08:38:39 +0000 Received: from SJ0PR11MB5940.namprd11.prod.outlook.com ([fe80::8a10:338f:c17e:dd7f]) by SJ0PR11MB5940.namprd11.prod.outlook.com ([fe80::8a10:338f:c17e:dd7f%6]) with mapi id 15.20.6907.030; Tue, 24 Oct 2023 08:38:38 +0000 From: "Hu, Lin1" To: "Beulich, Jan" CC: "Lu, Hongjiu" , "binutils@sourceware.org" Subject: RE: [PATCH] Support Intel USER_MSR Thread-Topic: [PATCH] Support Intel USER_MSR Thread-Index: AQHaACndkPQsZ+2TgUKNyjybXsitpLBNLmPQgAOf34CAB8IK8A== Date: Tue, 24 Oct 2023 08:38:38 +0000 Message-ID: References: <20231010072401.1383177-1-lin1.hu@intel.com> <3504781c-a806-335f-a9df-615ed3565e5e@suse.com> In-Reply-To: <3504781c-a806-335f-a9df-615ed3565e5e@suse.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SJ0PR11MB5940:EE_|PH7PR11MB8480:EE_ x-ms-office365-filtering-correlation-id: 5e6067f2-cb89-414d-3839-08dbd46c9ebd x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: x8/IRPghDyGmMI8QcVHgUrzk4RLSWg1bLwH6SA9xoHV/LSPf0y9DAicYPtJFQAKhvUoOwjpBbdDs1csIKBnlqKeY/v/VJyhN1cyV/lI1X4Wa5VVtIqDxZ4S1I2CQRA3sCpxQMMEI+Aa2zVNcD9RRBtE8Q7l8Jtcy1uBCSd9JEZwUvY2DJ9f8nEAJDfDfxWld6tlUd9hqIO2aOY9gunI2CqQOTe4yaObhWQWsRNFaFxIFgidlO0rOTt/3nftAQOx8sCiCsZOAbn2uZCx0HPQ/LqKtB0yAFn5hFtWLu2DH5k9hFUlGxfc7fJMrvVg0YCTYALc+PAlawXallTS2Gstc+PQfIEEHyclkyzvvSo8EnKPtppjCqleMfVAEW6P22MmFLS0FxfUOlBUeInOmjROAhZNl9R7FDRxd8JPWX3Jjr5TRnI+1M3OU1qZwlkKMQhUbvPzJJGYd8outeE6XmI+xRlEaLqD1S+rnhhJT58bV/w/cPze6sGxTlMf6IyQwXpDZ2IaVEs52xMIeaJ4+fgL3ztdb9NjP7TNwWLODhVt5f2iy+UixWrtqXAzuYW9okyCFS3Usoumrm6WWmd6pTDa+R0hfzyTO+XQggJuO07v4q03bOw1dZxOmt2iebPtPQx2N x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB5940.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(136003)(366004)(346002)(396003)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(55016003)(41300700001)(2906002)(38100700002)(66476007)(316002)(64756008)(82960400001)(66946007)(66556008)(6916009)(66446008)(122000001)(76116006)(71200400001)(6506007)(478600001)(7696005)(53546011)(9686003)(83380400001)(54906003)(52536014)(86362001)(5660300002)(33656002)(8676002)(4326008)(8936002)(26005)(38070700009)(66899024);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cXM2bm8rWFZVbm9oUWVDZWk2aklyckl5Q3BqajhXbTZpcnJDVmNiWWo1U2Jn?= =?utf-8?B?eUY3R3h2d0tsRUg2YWNsWlloMlJGelhvMktsakNCTjlQYnh2Y0xnclBUUDl0?= =?utf-8?B?d2RSSzU2L2NOVm1GcTBWSG5tQ2FCMEcxd0JFYXpweEw0K2YvMFFBRXNDbysy?= =?utf-8?B?dXNyRnI1V0tIbVpYTXhCUTMxeWRiVTI1SHAxMDdsSStxRXJLWFluS05UNEJX?= =?utf-8?B?eVgySThWTVU1YnJGYUJmelVHWjJOMjlGWElkS3dCdXpSbnB4K3Bpazd1TnJh?= =?utf-8?B?YWpVd3JldW9xQkphS3lHVVhmZjU2VkRMQjlmMDdHU21XeldydVhJYXh4WVZu?= =?utf-8?B?Nm8wblFzZXJJWi9HNFZJVUlEc1g4alN3N1FtZUdWb1lIZWRYSmVienBLUlNj?= =?utf-8?B?NFVKazdVN21PVzVjR2RXL1BaQ2ZVQ25pWndrOGVYRG9MTG1QNDNyRkZzL0k3?= =?utf-8?B?LzJpb1pSeXNBUllsUkNEVzQrb1hQZy9YakNNdktGRkUzeTI0SE0vS0lYSE9l?= =?utf-8?B?NHEwcjJERCtpSlFST3gvYndHR1VDaWhtd1RYRnR2YU9WQTFSWFZrRzloNTJ6?= =?utf-8?B?bUd4RXV2TjgrN3lRVUR2NUhwUzRBTm1iSHN0bDc2dVladlVXZXo2VHlHNUlp?= =?utf-8?B?SWRhVEhBc0cycnBuYmJ4VFhWek1DQnZPMEp3U3RlZ1YyOVNFYkhGOURwS2FR?= =?utf-8?B?K3NCL3NncnM2Z25TVU9OWForT2E0QkdFaHhZa2E1K0x4YmlhOFlISHYyTGd1?= =?utf-8?B?b3VVOWgvS3c5WTRBSVdzTllNZ0UzQkcvTm5QZGhRckVFRTFPK0V4NDhSUkJz?= =?utf-8?B?M2QzWlc2N2kxbGtNUythQUJ4UlF0VGNXTmtlNGkrU3VsdmZpbGQwbXFoRWt5?= =?utf-8?B?d25lRCs5MmdaaGFGVkNQM0FLWmhzc2o5cEtPRFN4S082NStNSWhXM2NpYUtL?= =?utf-8?B?djNsMFFrdUlmTElwdHR1YUNxbXpUR28xZmdObkRGL3JCYXlvSjZtbE82ZWFn?= =?utf-8?B?QUVBN2l0WWhGQmFGVytZckVYaEVvRStadjlVbURxOUZBZEgvdnN5SHJuVHVB?= =?utf-8?B?ZjgzRnBvQVJycENtMGV1bzV1S2dYK1U0ekZVUlF0alczdFpFV3hpSzVIK2J0?= =?utf-8?B?b1VIcVpvYlhKZzhNTG1jT0QzbU5JSktDMkhvUll6SUp5YnFmNUNCbGZoRmV0?= =?utf-8?B?SGEydkNvYUNtNE0wSWw4ZXR2cy9US2xpRFFMS1ZNYURiZzNpZHJVREh1d01H?= =?utf-8?B?MzYwaDAwMW5URDBGWG9uZTJqTVV1NmN4eS9KVmkvdU55b0dtOCtLSTVMQ0FW?= =?utf-8?B?Y0RWbzdIdm1yY3lNemZQNFlaeDBMQzYyc3dsNFJKL0haQkFRWHBqcTJZR0ov?= =?utf-8?B?ZVljT3kxVVZzc0xrOUZqSzIyMXhuYVNuNUMrZDJaUUx5U0owdThtaExabFMv?= =?utf-8?B?SElCdjBYYWVndzdCNXJlN3F1RXN3cVNCQWFxZGx0OXRUcWpJY0dvcUNQdXh0?= =?utf-8?B?SFZ5aFpiMlFlTjgyR1NZMDdlYmdHZExQYUdkS29LMGJwK2J6OUtzaGdxTGIx?= =?utf-8?B?TnZpcG9nTWtzVlJwTWd2b2J0UmtuaVJQUi9KZEpaVVJKdCtXbWFTR0Q1VlU2?= =?utf-8?B?ZE1ZSGVuOERvM2tOYk4vTnZManV3VVozV0h6eWlJU2JXN29POHZkUmVidWk1?= =?utf-8?B?SDYrY2M5aGFPMGZMU25TcFVvdWZ3NSt0czNKemEwVHJDak1NRE90STI0K3VS?= =?utf-8?B?b0ZZWHVjcVo1RmRYSE0xQm85Q3pGMkVHSHExeEFaSEhTMXlUUHRycFUxOVc4?= =?utf-8?B?cW9VL25oczBKOWQvQ2h6bFNuZUIxcy9rUFQ1eVJaMjVySkcyU0YyVkthVTdz?= =?utf-8?B?VGZPTWlLZXEzOVJrMExRL0dKMHFLYVJ0M1g5d3M4dGhVczhaaHlVUGlqTjFF?= =?utf-8?B?UG5sbVMwbnRYWngycUVXMTdyczFCSlVRd001YzZvVFJkMlpuTzdsWW1iaWc5?= =?utf-8?B?d2pMK0phZHpSRE5FL2ZRN0xQVWNwa0RlSy9FQzBLQUdtSDIvZUY1dUtOajJq?= =?utf-8?B?ZTdoQXQ3N05ERy9Kb2JwVTZ0T1k3YUQ5M3VuaEZ6dS9hNVJRQ1l6Q21NdnFh?= =?utf-8?Q?slBk=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB5940.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e6067f2-cb89-414d-3839-08dbd46c9ebd X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Oct 2023 08:38:38.7670 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KVqJFpV/y99JgjBizKg1cIDki3iqYfbEPK9dGYimKZN6xE1q/zye1q0dlyXTVeqYXmSuC/ozQNlm7VwCN3alpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8480 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,LOTS_OF_MONEY,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: VGhhbmtzIGZvciB5b3VyIGFkdmljZS4gSSd2ZSB0ZW50YXRpdmVseSBtYWRlIHNvbWUgY2hhbmdl cyBiYXNlZCBvbiB5b3VyIGNvbW1lbnRzLCANCmJ1dCBpdCdzIG5vdCBjb21wbGV0ZWx5IGZpbmFs aXplZCB5ZXQsIEknZCBsaWtlIHRvIGNvbnN1bHQgd2l0aCB5b3UgZm9yIHlvdXIgb3Bpbmlvbiwg YW5kIA0KSSdsbCBzZW5kIG91dCBhIG5ldyBwYXRjaCBhZnRlciBpdCdzIGJhc2ljYWxseSBjb25m aXJtZWQuDQoNCkJScywNCkxpbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZy b206IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIE9j dG9iZXIgMTksIDIwMjMgNDozNiBQTQ0KPiBUbzogSHUsIExpbjEgPGxpbjEuaHVAaW50ZWwuY29t Pg0KPiBDYzogTHUsIEhvbmdqaXUgPGhvbmdqaXUubHVAaW50ZWwuY29tPjsgYmludXRpbHNAc291 cmNld2FyZS5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gU3VwcG9ydCBJbnRlbCBVU0VSX01T Ug0KPiANCj4gT24gMTguMTAuMjAyMyAwOTo1MSwgSHUsIExpbjEgd3JvdGU6DQo+ID4gVGhhbmtz IGZvciB5b3VyIHJldmlldy4gSSByZXNwb25kZWQgaW5kaXZpZHVhbGx5IHVuZGVyIGVhY2ggY29t bWVudC4NCj4gPiBBdHRhY2hlZCBpcyB0aGUgbW9kaWZpZWQgdmVyc2lvbi4NCj4gDQo+IFBsZWFz ZSBjYW4geW91IHNlbmQgcHJvcGVyIG5ldyB2ZXJzaW9ucywgdG8gYWxsb3cgZWFzeSBjb21tZW50 aW5nPw0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTYs IDIwMjMgODoxMSBQTQ0KPiA+DQo+ID4gT24gMTAuMTAuMjAyMyAwOToyNCwgSHUsIExpbjEgd3Jv dGU6DQo+ID4+IEBAIC04NzUyLDYgKzg3NTUsMTggQEAgYnVpbGRfbW9kcm1fYnl0ZSAodm9pZCkN Cj4gPj4gICAgICAgIHNvdXJjZSA9IHY7DQo+ID4+ICAgICAgICB2ID0gdG1wOw0KPiA+PiAgICAg IH0NCj4gPj4gKyAgaWYgKGkudG0ub3Bjb2RlX21vZGlmaWVyLm9wZXJhbmRjb25zdHJhaW50ID09 IFNXQVBfU09VUkNFX0RFU1QpDQo+ID4+ICsgICAgew0KPiA+PiArICAgICAgaWYgKGRlc3QgPT0g KHVuc2lnbmVkIGludCkgfjApDQo+ID4+ICsJc291cmNlID0gc291cmNlIF4gMTsNCj4gPj4gKyAg ICAgIGVsc2UNCj4gPj4gKwl7DQo+ID4+ICsJICB1bnNpZ25lZCBpbnQgdG1wID0gc291cmNlOw0K PiA+PiArDQo+ID4+ICsJICBzb3VyY2UgPSBkZXN0Ow0KPiA+PiArCSAgZGVzdCA9IHRtcDsNCj4g Pj4gKwl9DQo+ID4+ICsgICAgfQ0KPiA+DQo+ID4+IFdoeSBpcyB0aGlzIG5lZWRlZD8gVGhlcmUn cyBvbmx5IGEgc2luZ2xlIHJlZ2lzdGVyIG9wZXJhbmQgaW4gYm90aCBhZmZlY3RlZA0KPiBpbnNu IGZvcm1zIChzZWUgY29tbWVudCBiZWxvdyBvbiB0aGUgMi1yZWdpc3RlciBmb3JtKS4NCj4gPiBG dXJ0aGVybW9yZSBJIHRoaW5rIGl0IHdvdWxkIGJlIGVhc2llciBpZiB5b3UgImNhbm9uaWNhbGl6 ZWQiIHRoZSBlYXJseQ0KPiBpbW1lZGlhdGUgdG8gYmUgdGhlIDFzdCBvcGVyYW5kLCBzdWNoIHRo YXQgZm9yIGFsbCBvdGhlciBwdXJwb3NlcyBpbW1lZGlhdGVzDQo+IHJlbWFpbiBmaXJzdC4NCj4g Pg0KPiA+PiBBcyBhIGNvc21ldGljIG5pdDogUGxlYXNlIGhhdmUgYSBibGFuayBsaW5lIGFoZWFk IG9mIHRoZSBpZigpIGJsb2NrIChpZiBpdCBuZWVkcw0KPiB0byBzdGF5KS4NCj4gPg0KPiA+IElu ZGVlZCwgSSd2ZSBvbmx5IGtlcHQgdGhlIHBhcnQgdGhhdCBkZWFscyB3aXRoIGEgc2luZ2xlIHJl Z2lzdGVyLiBEbyB5b3UgbWVhbiB0bw0KPiBjb21wbGFpbiB0byB0aGUgcGVyc29uIHdobyBkZXNp Z25lZCB0aGUgaW5zbi4gVW5mb3J0dW5hdGVseSwgdGhhdCdzIGltcG9zc2libGUuDQo+IA0KPiBJ J20gaGF2aW5nIHRyb3VibGUgY29ubmVjdGluZyB5b3VyIHJlcGx5IHRvIHdoYXQgSSB3cm90ZS4g Tm8sIEkgZG8gbm90IG1lYW4gdG8NCj4gY29tcGxhaW47IEkgY2FuIGNlcnRhaW5seSBzZWUgd2h5 IHRoZSBpbW1lZGlhdGUgaXMgd2FudGVkIGFzIGZpcnN0IChJbnRlbCkgLyBsYXN0DQo+IChBVCZU KSBvcGVyYW5kLg0KPiANCj4gSSdtIGFsc28gbm90IGhhcHB5IGFib3V0IHRoZSBuZXcgY2hhbmdl IHRvIGJ1aWxkX21vZHJtX2J5dGUoKS4gV2hlbiBhc2tpbmcNCj4gdG8gImNhbm9uaWNhbGl6ZSIg b3BlcmFuZHMsIEkgbWVhbnQgdG8gZ2F2ZSB0aGlzIGdlbmVyYWxpemVkLCB3aXRoDQo+IFNXQVBf U09VUkNFX0RFU1QgZHJvcHBlZCBjb21wbGV0ZWx5LiAoVGhpcyB3aWxsIHRoZW4gYWxzbyBzYXZl IG1lIGZyb20NCj4gY29tcGxhaW5pbmcgYWJvdXQgYSBtaXNzaW5nIGJsYW5rIGluIFN3YXBTb3Vy Y2VEZXN0J3MNCj4gI2RlZmluZS4pDQo+IA0KDQpPSywgSSBpbXBsZW1lbnRlZCBhIGJhc2ljIGxv Z2ljIHRvIGhhbmRsZSB0aGUgY3VycmVudCBzaXR1YXRpb24sIGFuZCBpbmNsdWRlZCByZW1hcmtz Lg0KTGlrZToNCg0KICAgLyogSWYgdGhlIGxhc3Qgb3BlcmFuZCBpcyBhbiBpbW1lZGlhdGUgbnVt YmVyIChBVFQpLCB3ZSBuZWVkIHRvIG1vZGlmeQ0KICAgICAgIHRoZSBzb3VyY2Ugb3BlcmFuZCBh Y2NvcmRpbmdseS4gSWYgYW55IGluc3RydWN0aW9ucyB1c2Ugb3RoZXIgaW1tZWRpYXRlDQogICAg ICAgKGltbTgsIGltbTE2LCBldGMuKSBhcyB0aGUgbGFzdCBvcGVyYW5kLCB3ZSBtdXN0IHVwZGF0 ZSB0aGUgY29uc3RyYWludC4gICovDQogICAgaWYgKGkudHlwZXNbc291cmNlXS5iaXRmaWVsZC5p bW0zMiA9PSAxKQ0KICAgICAgc291cmNlLS07DQoNCldoYXQncyB5b3VyIG9waW5pb24gb24gdGhp cyB2ZXJzaW9uPw0KDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrIGIvZ2FzL3Rlc3RzdWl0 ZS9nYXMvaTM4Ni94ODYtNjQtdXNlcl9tc3Iucw0KPiA+PiBAQCAtMCwwICsxLDE1IEBADQo+ID4+ ICsjIENoZWNrIDY0Yml0IFVTRVJfTVNSIGluc3RydWN0aW9ucw0KPiA+PiArDQo+ID4+ICsJLmFs bG93X2luZGV4X3JlZw0KPiA+PiArCS50ZXh0DQo+ID4+ICtfc3RhcnQ6DQo+ID4+ICsJdXJkbXNy CSVyMTQsICVyMTIJICNVU0VSX01TUg0KPiA+PiArCXVyZG1zcgkkNTE1MTUxNTEsICVyMTIJICNV U0VSX01TUg0KPiA+PiArCXV3cm1zcgklcjEyLCAlcjE0CSAjVVNFUl9NU1INCj4gPj4gKwl1d3Jt c3IJJXIxMiwgJDUxNTE1MTUxCSAjVVNFUl9NU1INCj4gPj4gKw0KPiA+PiArLmludGVsX3N5bnRh eCBub3ByZWZpeA0KPiA+DQo+ID4+IE5pdDogUGxlYXNlIGluZGVudCBkaXJlY3RpdmVzLg0KPiA+ IEhhdmUgcmVtb3ZlZCB0aGVzZSBjb21tZW50cy4NCj4gDQo+IE5laXRoZXIgZG9lcyB5b3VyIHJl cGx5IGZpdCBoZXJlLCBub3IgZGlkIHlvdSB3aGF0IEkndmUgYXNrZWQgZm9yIGhlcmUgKGluIGFk ZGl0aW9uDQo+IHRvIHRoZSBlYXJsaWVyLCB3aWRlciByZXF1ZXN0IG9mIGRyb3BwaW5nIG1lYW5p bmdsZXNzIGNvbW1lbnRzKS4NCj4gDQoNClBlcmhhcHMgdGhlcmUncyBhbiBpc3N1ZSB3aXRoIG15 IGludGVyZmFjZSwgYnV0IGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlDQppbnN0cnVjdGlvbiBub3cg YmVnaW5zIHdpdGggYSBcdCBpbnN0ZWFkIG9mIHR3byBzcGFjZXMgZm9yIHRoZSB1cGRhdGVkIHBh dGNoLg0KDQo+ID4+ICsJdXJkbXNyCXIxMiwgcjE0CSAjVVNFUl9NU1INCj4gPj4gKwl1cmRtc3IJ cjEyLCA1MTUxNTE1MQkgI1VTRVJfTVNSDQo+ID4+ICsJdXdybXNyCXIxNCwgcjEyCSAjVVNFUl9N U1INCj4gPj4gKwl1d3Jtc3IJNTE1MTUxNTEsIHIxMgkgI1VTRVJfTVNSDQo+ID4NCj4gPj4gSSB0 aGluayB2YXJ5aW5nIHJlZ2lzdGVycyBzbGlnaHRseSBtb3JlIChzdWNoIHRoYXQgZWFjaCB0d28t cmVnaXN0ZXIgZm9ybSBoYXMNCj4gb25lIGxvdy04IGFuZCBvbmUgaGlnaC04IG9wZXJhbmQsIHRv dGFsaW5nIHRvIHR3byBmb3JtcyBlYWNoIHRvIHByb3ZlIHRoYXQgdGhlDQo+IFJFWC5bUkJdIGJp dHMgYXJlIGFsc28gY29ycmVjdGx5IGRlYWx0IHdpdGgpIHdvdWxkIGJlIGJldHRlci4NCj4gPg0K PiA+IEkgaGF2ZSBhZGRlZCBzb21lIG90aGVyIHRlc3RzIGhlcmUuDQo+IA0KPiBUaGFua3MuDQo+ IA0KPiA+PiBAQCAtNjE4LDYgKzYyMCw4IEBAIGVudW0NCj4gPj4gICAgd19tb2RlLA0KPiA+PiAg ICAvKiBkb3VibGUgd29yZCBvcGVyYW5kICAqLw0KPiA+PiAgICBkX21vZGUsDQo+ID4+ICsgIC8q IGRvdWJsZSB3b3JkIG9wZXJhbmQgMCAqLw0KPiA+PiArICBkXzBfbW9kZSwNCj4gPg0KPiA+PiBX aHkgaXMgdGhpcyBuZWVkZWQ/IElPVyB3aHkgZG9lcyBkX21vZGUgbm90IGRvPyBPciBhbHRlcm5h dGl2ZWx5IHdoeSBpc24ndA0KPiB0aGlzIGEgbmFtZSBpbmRpY2F0aW5nIHRoYXQgaXQncyBhbiB1 bnNpZ25lZCAzMi1iaXQgdmFsdWUgKGFzIG9wcG9zZWQgdG8gb3RoZXIgMzItDQo+IGJpdCBpbW1l ZGlhdGVzIGluIDY0LWJpdCBtb2RlKT8NCj4gPg0KPiA+IEkgd2FudCB0byBvdXRwdXQgaW1tMzIg Zmlyc3QsIGJ1dCBtb2RybSBieXRlIGlzIGJlaGluZCBpbW0zMiwgc28gSSBuZWVkIHRvDQo+IHNr aXAgbW9kcm0gZm9yIHRoZSBtb21lbnQuIElmIEkgdXNlIHsgInV3cm1zciIsIHsgSWQsIEVxIH0s IDB9IElkIHdpbGwgcmVhZCBtb2RybQ0KPiBieXRlLiBUaGUgbW9kZSBpcyBmb3IgYSBpbW0zMiBu b3QgYW4gdW5zaWduZWQgMzItYml0IHZhbHVlLCBzbyBpdHMgbmFtZSBkb2Vzbid0DQo+IGluZGlj YXRlIHRoYXQgaXQncyBhbiB1bnNpZ25lZCBpbnRlZ2VyLg0KPiANCj4gQnV0IHRoZSBpbW1lZGlh dGUgaXMgYW4gdW5zaWduZWQgMzItYml0IG9uZS4gU2lnbmVkIG9uZXMgd291bGQgYmUgc2lnbi0N Cj4gZXh0ZW5kZWQsIHdoaWNoIGlzbid0IHRoZSBjYXNlIGhlcmUgKG9yIGVsc2UgdGhlIHJhbmdl IDB4ODAwMDAwMDAgLi4uDQo+IDB4ZmZmZmZmZmYgd291bGRuJ3QgZm9ybSB2YWxpZCBNU1IgbnVt YmVycykuDQoNCk9LLCB5b3UgYXJlIHJpZ2h0Lg0KDQo+IA0KPiA+PiBAQCAtODQ1LDYgKzg0OSw3 IEBAIGVudW0NCj4gPj4gICAgUkVHX1ZFWF8wRkFFLA0KPiA+PiAgICBSRUdfVkVYXzBGMzg0OV9Y ODZfNjRfTF8wX1dfMF9NXzFfUF8wLA0KPiA+PiAgICBSRUdfVkVYXzBGMzhGM19MXzAsDQo+ID4+ ICsgIFJFR19WRVhfTUFQN19GOF9MXzBfV18wX01fMSwNCj4gPj4NCj4gPj4gICAgUkVHX1hPUF8w OV8wMV9MXzAsDQo+ID4+ICAgIFJFR19YT1BfMDlfMDJfTF8wLA0KPiA+PiBAQCAtODkzLDggKzg5 OCwxMCBAQCBlbnVtDQo+ID4+ICAgIE1PRF8wRkM3X1JFR182LA0KPiA+PiAgICBNT0RfMEZDN19S RUdfNywNCj4gPj4gICAgTU9EXzBGMzhEQ19QUkVGSVhfMSwNCj4gPj4gKyAgTU9EXzBGMzhGOCwN Cj4gPj4NCj4gPj4gICAgTU9EX1ZFWF8wRjM4NDlfWDg2XzY0X0xfMF9XXzAsDQo+ID4+ICsgIE1P RF9WRVhfTUFQN19GOF9MXzBfV18wLA0KPiA+PiAgfTsNCj4gPg0KPiA+PiBBcyBiZWZvcmUgLSBu byBuZXcgbW9kX3RhYmxlW10gZW50cmllcyBwbGVhc2Ugd2hpY2ggZG9uJ3QgaGF2ZSBib3RoDQo+ IGJyYW5jaGVzIHBvcHVsYXRlZC4NCj4gPg0KPiA+IEhhdmUgcmVtb3ZlZCBpdC4NCj4gDQo+IEJ1 dCB5b3UncmUgdXNpbmcgRXEgdGhlcmUsIGkuZS4gcGVybWl0dGluZyBtZW1vcnkgb3BlcmFuZHMg YXMgd2VsbC4NCj4gV2hhdCAoSSB0aGluaykgeW91IHdhbnQgaXMgUnEuIEZvciBjb25zaXN0ZW5j eSB0aGlzIG1heSB0aGVuIGFsc28gd2FudCB1c2luZyBpbg0KPiB0aGUgbmV3IFBSRUZJWF8wRjM4 RjhfTV8xX1g4Nl82NCBlbnRyeS4gQnV0IG9mIGNvdXJzZSB5b3UgbmVlZCB0byBiZQ0KPiBjYXJl ZnVsIGFib3V0IHRoZSBjb2xsaXNpb24gd2l0aCBOcS4NCg0KSSBjaGFuZ2UgdGhlIE5xJ3MgbW9k ZSBmcm9tIHFfbW9kZSB0byBxX21tX21vZGUgYW5kIGNyZWF0ZSBScSAoIE9QX1IsIHFfbW9kZSAp IGZvciB1c2VkLg0KDQo+IA0KPiA+PiBAQCAtNjc5MSw2ICs2ODM5LDI5NyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRpczM4NiB2ZXhfdGFibGVbXVsyNTZdID0gew0KPiA+PiAgICAgIHsgQmFkX09w Y29kZSB9LA0KPiA+PiAgICAgIHsgQmFkX09wY29kZSB9LA0KPiA+PiAgICB9LA0KPiA+PiArICAv KiBWRVhfTUFQNyAqLw0KPiA+PiArICB7DQo+ID4+ICsgICAgLyogMDAgKi8NCj4gPj4gKyAgICB7 IEJhZF9PcGNvZGUgfSwNCj4gPg0KPiA+PiBJIHdvbmRlciB3aGV0aGVyIGFkZGluZyBhIGZ1bGwg bmV3IHRhYmxlIChyYXRoZXIgdGhhbiBzb21lIHNwZWNpYWwNCj4gPj4gY2FzZQ0KPiA+PiBjb2Rl KSBpcyByZWFsbHkgYSBnb2QgdXNlIG9mIHNwYWNlLiBPZiBjb3Vyc2UgaWYgeW91IGtub3cgdGhh dCBtb3JlIG9mIGl0IHdpbGwNCj4gYmUgcG9wdWxhdGVkIGluIHRoZSBub3QgdG9vIGRpc3RhbnQg ZnV0dXJlIC4uLg0KPiA+DQo+ID4gSSBkb24ndCBrbm93LCBJJ20ganVzdCB0cmVhdGluZyB0aGUg bmV3IG9wY29kZV9zcGFjZSBNQVA3IGxpa2Ugb3RoZXINCj4gb3Bjb2RlX3NwYWNlLg0KPiANCj4g SSdtIGFmcmFpZCB0aGF0ICJJIGRvbid0IGtub3ciIGlzIG5vdCBhbiBhbnN3ZXIgaGVyZS4gWW91 IGNhbiBiYXNpY2FsbHkgdGFrZSB0d28NCj4gcG9zaXRpb25zOiBNaW5lICh3YXN0ZSBvZiBzcGFj ZSkgb3IgeW91IGp1c3RpZnkgd2h5IHRoZSBleHRyYSBzcGFjZSB1c2VkIChhbmQgdGhlDQo+IGV4 dHJhIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYWRkZWQpIGFyZW4ndCBvZiBjb25jZXJuLg0KPiANCg0K T0ssIEkgd2lsbCBza2lwIE1BUDcgdGFibGUuIElmIHZleF90YWJsZV9pbmRleCA9IFZFWF9NQVA3 IGFuZCBpbmRleCA9PSBmOA0KZHAgd2lsbCBiZSBWRVhfTEVOX01BUDdfRjguIFNvIEkgZG9uJ3Qg bmVlZCB0byBhZGQgYSBmdWxsIG5ldyB0YWJsZSB1bnRpbGwgb3RoZXIgTUFQNw0KaW5zdHJ1Y3Rp b25zIHJhaXNlLg0KDQo+ID4+IEBAIC0xMTI0OCw2ICsxMTYwOSwyMCBAQCBnZXQzMnMgKGluc3Ry X2luZm8gKmlucywgYmZkX3ZtYSAqcmVzKQ0KPiA+PiAgICByZXR1cm4gdHJ1ZTsNCj4gPj4gIH0N Cj4gPj4NCj4gPj4gKy8qIFRoZSBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBpbW0zMiwgd2hlbiBp bW0zMiBpcyBvcGVyYW5kIDAsIGFuZA0KPiA+PiAraW5zIG9ubHkgaGFzIDIgb3BlcmFuZHMuICov IHN0YXRpYyBib29sDQo+ID4+ICtnZXQzMl9vcGVyYW5kMCAoaW5zdHJfaW5mbyAqaW5zLCBiZmRf dm1hICpyZXMpIHsNCj4gPj4gKw0KPiA+PiArICBpZiAoIWZldGNoX2NvZGUgKGlucy0+aW5mbywg aW5zLT5jb2RlcCArIDUpKQ0KPiA+PiArICAgIHJldHVybiBmYWxzZTsNCj4gPj4gKyAgKnJlcyA9 ICooaW5zLT5jb2RlcCsrICsgMSkgJiAoYmZkX3ZtYSkgMHhmZjsNCj4gPj4gKyAgKnJlcyB8PSAo KihpbnMtPmNvZGVwKysgKyAxKSAmIChiZmRfdm1hKSAweGZmKSA8PCA4Ow0KPiA+PiArICAqcmVz IHw9ICgqKGlucy0+Y29kZXArKyArIDEpICYgKGJmZF92bWEpIDB4ZmYpIDw8IDE2Ow0KPiA+PiAr ICAqcmVzIHw9ICgqKGlucy0+Y29kZXArKyArIDEpICYgKGJmZF92bWEpIDB4ZmYpIDw8IDI0Ow0K PiA+PiArICByZXR1cm4gdHJ1ZTsNCj4gPj4gK30NCj4gPg0KPiA+PiBJbnN0ZWFkIG9mIHRoaXMg KHdoaWNoIGFzc3VtZXMgTW9kUk0ubW9kID09IDMpIEkgdGhpbmsgeW91IHdhbnQgdG8gYXJyYW5n ZQ0KPiBmb3IgZGVhbGluZyB3aXRoIE1vZFJNIGZpcnN0LiBXZSBhbHJlYWR5IGhhdmUgT1BfU2tp cF9NT0RSTSgpIGZvciBzdWNoDQo+IG5lZWRzLCB3aGljaCB5b3UgY291bGQgdXNlIGluIGEgZmly c3QgImhpZGRlbiIgb3BlcmFuZC4NCj4gPg0KPiA+IEkgd2FudCB0byBvdXRwdXQgaW1tMzIgZmly c3QsIGJ1dCBtb2RybSBieXRlIGlzIGJlaGluZCBpbW0zMiwgc28gSSBuZWVkIHRvDQo+IHNraXAg bW9kcm0gZm9yIHRoZSBtb21lbnQuIGJ1dCBJIGNhbid0IHVzZSBPUF9Ta2lwX01PRFJNIHRvIGRl YWwgd2l0aCBteQ0KPiBwcm9ibGVtLCBJZiBJIHVzZSBpdCwgSSBzaG91bGQgYWRkIGlucy0+Y29k ZXAtLSBhdCB0aGUgZW5kIG9mIGdldDMyX29wZXJhbmQwLg0KPiANCj4gZ2V0MzJfb3BlcmFuZDAo KSBzaG91bGQgZ28gYXdheSBpbW87IGF0IHRoZSB2ZXJ5IGxlYXN0IEkgZG9uJ3QgYWdyZWUgd2l0 aA0KPiBzcGVjaWFsIGNhc2luZyBpdCBiZWluZyBvcGVyYW5kIDAgKHdoaWNoLCBhcyB5b3UgcmVh bGl6ZSwgaXMgdHJ1ZSBvbmx5IGluIHRoZSB0ZXh0dWFsDQo+IHJlcHJlc2VudGF0aW9uLCBhbmQg b25seSBpbiBJbnRlbCBzeW50YXgsIGJ1dCBpbiBwYXJ0aWN1bGFyIG5vdCBpbiB0aGUgZW5jb2Rp bmcpLiBJdA0KPiBtYXkgYmUgbmVjZXNzYXJ5IHRvIHNwZWNpYWwgY2FzZSBpdCBiZWluZyBhbiB1 bnNpZ25lZCBpbW1lZGlhdGUsIGJ1dCBnZXQzMigpDQo+IGFscmVhZHkgZml0cyB0aGF0IHB1cnBv c2UuDQoNCkkndmUgdGhvdWdodCBvZiBpdCBzbyBmYXIgaXMgSSBjYW4gdXNlIGEgRml4dXAgZnVu Y3Rpb24gbGlrZQ0KDQpzdGF0aWMgYm9vbA0KdXdybXNyX0ZpeHVwIChpbnN0cl9pbmZvICppbnMs IGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQ0Kew0KICAgIGlmIChieXRlbW9kZSA9PSBkX21v ZGUpDQogICAgICB7DQogICAgICAgIGlmIChPUF9Ta2lwX01PRFJNIChpbnMsIDAsIHNpemVmbGFn KSkNCiAgICAgICAgICB7DQogICAgICAgICAgICBpZiAoT1BfSSAoaW5zLCBieXRlbW9kZSwgc2l6 ZWZsYWcpKQ0KICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW5zLT5jb2RlcC0tOw0K ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgIH0N CiAgICAgIH0NCiAgICByZXR1cm4gZmFsc2U7DQp9DQoNClRoZW4gdGhlIHV3cm1zcidzIHVuaXQg d2lsbCBiZSB7ICJ1d3Jtc3IiLCAgICAgICB7CXsgdXdybXNyX0ZpeHVwLCBkX21vZGUgfSwgUnEg fSwgMCB9Lg0KV2hhdOKAmHMgeW91ciBvcGluaW9uPw0KDQo+IA0KPiA+PiBAQCAtMzM0NiwzICsz MzQ5LDEyIEBAIGVyZXRzLCAweGYyMGYwMWNhLCBGUkVEfHg2NCwgTm9TdWYsIHt9ICBlcmV0dSwN Cj4gPj4gMHhmMzBmMDFjYSwgRlJFRHx4NjQsIE5vU3VmLCB7fQ0KPiA+Pg0KPiA+PiAgLy8gRlJF RCBpbnN0cnVjdGlvbnMgZW5kLg0KPiA+PiArDQo+ID4+ICsvLyBVU0VSX01TUiBpbnN0cnVjdGlv bnMuDQo+ID4+ICsNCj4gPj4gK3VyZG1zciwgMHhmMjBmMzhmOCwgVVNFUl9NU1J8eDY0LA0KPiA+ PiArTW9kcm18SWdub3JlU2l6ZXxTd2FwU291cmNlRGVzdHxOb1N1ZiwgeyBSZWc2NCwgUmVnNjQg fQ0KPiA+DQo+ID4+IElpcmMgUmVnTWVtIGlzIHRoZSBhdHRyaWJ1dGUgdG8gdXNlIGhlcmUsIG5v dCBhbnkgbmV3IG9uZS4NCj4gPg0KPiA+IEluZGVlZC4NCj4gPg0KPiA+PiArdXJkbXNyLCAweGYy ZjgvMCwgVVNFUl9NU1J8eDY0LA0KPiA+PiArTW9kcm18VmV4MTI4fFZleE1hcDd8VmV4VzB8SWdu b3JlU2l6ZXxOb1N1ZiwgeyBJbW0zMlMsIFJlZzY0IH0NCj4gPg0KPiA+PiBUaGlzIGFuZCAuLi4N Cj4gPg0KPiA+PiArdXdybXNyLCAweGYzMGYzOGY4LCBVU0VSX01TUnx4NjQsIE1vZHJtfElnbm9y ZVNpemV8Tm9TdWYsIHsgUmVnNjQsDQo+ID4+ICtSZWc2NCB9IHV3cm1zciwgMHhmM2Y4LzAsIFVT RVJfTVNSfHg2NCwNCj4gPj4gK01vZHJtfFZleDEyOHxWZXhNYXA3fFZleFcwfElnbm9yZVNpemV8 U3dhcFNvdXJjZURlc3R8Tm9TdWYsDQo+IHsgUmVnNjQsDQo+ID4+ICtJbW0zMlMgfQ0KPiA+DQo+ ID4+IC4uLiB0aGlzIG5lZWRzIHRvIHVzZSBJbW0zMiwgbm90IEltbTMyUy4gSSB1bmRlcnN0YW5k IHRoaXMgaXMgZ29pbmcgdG8gY2F1c2UNCj4gY29tcGxpY2F0aW9ucyBlbHNld2hlcmUsIGJ1dCB3 ZSBjYW4ndCBhZmZvcmQgZ2V0dGluZyB0aGlzIHdyb25nLg0KPiANCj4gSSBzZWUgeW91J3ZlIGNv cnJlY3RlZCB0aGlzLCBidXQgaXQgZG9lc24ndCBsb29rIHRvIG1lIGFzIGlmIHRoZQ0KPiBtYXRj aF90ZW1wbGF0ZSgpIGNoYW5nZSBpcyBhY3R1YWxseSBnb2luZyB0byBkbyB0aGUgam9iLiBZb3Ug Y2FuJ3QgY2hhbmdlDQo+IGkudHlwZXNbXSB3aXRob3V0IGxvb2tpbmcgYXQgdGhlIGFjdHVhbCB2 YWx1ZXMuIEkgdGhpbmsgdGhpcyBuZWVkcyBkZWFsaW5nIHdpdGggaW4NCj4gb3B0aW1pemVfaW1t KCkgYW5kL29yIGZpbmFsaXplX2ltbSgpIChpcnJlc3BlY3RpdmUgb2YgaXQncyBuYW1lIG1vcmUg bGlrZWx5IHRoZQ0KPiBmb3JtZXIsIGJ1dCBrbm9jay1vbiBhZGp1c3RtZW50cyB0byB0aGUgbGF0 dGVyIG1heSB0aGVuIHR1cm4gb3V0IHRvIGJlIG5lZWRlZCkuDQo+IA0KDQpPSy4NCg0KPiA+PiBB bHNvIGluIGFsbCBmb3JtcyBJIHRoaW5rIHlvdSBkb24ndCBtZWFuIElnbm9yZVNpemUsIGJ1dCBO b1JleDY0Lg0KPiA+DQo+ID4gSGF2ZSBtb2RpZmllZCB0aGVtLg0KPiANCj4gSG1tLCBJIG1heSBo YXZlIG1pc2xlYWQgeW91OiBOb1JleDY0IGlzIG1lYW5pbmdsZXNzIG9uIFZFWCBlbmNvZGluZ3Mu DQo+IFRoZXJlIG9ubHkgdGhlIElnbm9yZVNpemUgbmVlZGVkIGRyb3BwaW5nLiBJJ20gc29ycnku DQo+IA0KPiBKYW4NCg==