From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.60]) by mx.groups.io with SMTP id smtpd.web10.1427.1682016382087432448 for ; Thu, 20 Apr 2023 11:46:22 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@ami.com header.s=selector1 header.b=IQVaDh8G; spf=pass (domain: ami.com, ip: 40.107.243.60, mailfrom: igork@ami.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JrrI1yLsu56RxNnnW4fgjcEY63uOiIzSzsmMBflLi6cqMmlbmUzvERELDshGOlxjzAFa4W8INtyzErW1ZpXrDc3aYK58stHUUzcxjkACWtkBuyfQ25lzOFth8gYyQgES4imTccucyaykeazQhS3uvMcueHkwBdXdl1F6zWqjH3D9Rd9oGZbCPD8aB/nW7/rYmpYNKuh6vSs1tBUUb2asX6p5ZRmMryhifFh0RfcD7sszKe0XY4CBdHHlgL6ly9kuokwsrXNpQSg51VCxSFYc27GaAexUAY0GCdti79YuhsXcZ+BMCTypHMtUMIzUmiwQhd3jH3JNbRGI69jr0HJdug== 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=A/tQqo4sO9dK1t3AZ9YaFTUxHBdVXl+W1xdIc45G6fg=; b=CrBoVyTc0/IDuBZ1XiSFsZGJHOM8i7bMlxxXIjgoez5AUvrKJhzBzPUdNX0Kh5CARknGGoJyCeduJMjpRpQ1QTV5UOMTUeBrBjdjf0Z0ZXY970goxnoM/3ORBpSBK/xU9GY4TVfHAITUYBnmEqcOl/hymNnL+pch62FCPMlZIUHK20mD4TPfSF6FzbIUb8R0fhmfUkXep3hfwbm2CqeEmlPe2kzXPYjY1cYW4JBagdNXh5AZWvB+0tBAm/xcKigvMl7olkjJiZaOyiPSDcjDDTqQ+iCdJ58+s2v4CxRyG0E+KKQ+0OAAQy2RpXKIw85wHN8pNXF8oYjrUeioYx69/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ami.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A/tQqo4sO9dK1t3AZ9YaFTUxHBdVXl+W1xdIc45G6fg=; b=IQVaDh8GqqMyFDOAuU3oGL2zDdgzojQqWPKT1kQRrctYIpva0b4q9VtoIodWq6P1GJdBUeWptRFzxBf/h1TeHqF6+zL9fOiszVeKJKK0vC6K5IaTTHaicmL6te5VBdDpfS/DvE7aln1nKY5yCU9u8F4BY3f0RbCeaxF5jWnT3cE= Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by BLAPR10MB5140.namprd10.prod.outlook.com (2603:10b6:208:320::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Thu, 20 Apr 2023 18:46:19 +0000 Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::d79d:9060:94d8:b4b0]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::d79d:9060:94d8:b4b0%7]) with mapi id 15.20.6319.022; Thu, 20 Apr 2023 18:46:19 +0000 From: "Igor Kulchytskyy" To: "Chang, Abner" , "devel@edk2.groups.io" CC: Nickle Wang Subject: Re: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Topic: [EXTERNAL] RE: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Index: AQHZctAydhY3Kcy4cUiFhJsstK/5NK8zVjUggAE0RiA= Date: Thu, 20 Apr 2023 18:46:18 +0000 Message-ID: References: <20230419150328.1097-1-igork@ami.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-20T00:59:29Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=68c789bf-7049-477d-8401-2087dcd7fc17; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ami.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|BLAPR10MB5140:EE_ x-ms-office365-filtering-correlation-id: 3862fb0a-c01e-4c8b-4d6b-08db41cf877d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bdNuZW8Vg7Xs9spfyr6fCEnbY9PDiZfE8To8xlaR2bLTPdcj0b7hWcW6GpkhHzTLJMQ9zsYdttJW4JCfiG+U4V34ZtDBtqzPI0wqgO9rWeEgvu/es0XDxAtciT3OkaJgN1O0wHh5DODaG933fZH0/2VOddVo+8xs1h1Te3ABZchAWocJv4JHZ0ijR/YDPCnBKi6pAakXAa4xI4SQeu9RAzTusVGEiR05EICzkYim1jMiAtmLpzdjC2+aDhArjlUcO8qgdBfWKOzgTKGmopTvsltLZ1M5YMqldcY0V5qc37rGytJIzk3fr9oBxEyQZfXE/tab/l5bH88PLi1BRTB37Zycg6ZjLsgO71rGEdC66HRd4hvdPvNbMAfmsYaZ94aB4Ks3CUCu18b7igRIpBSyXOy4cKGvsqWk+7dszJOXlxYmElOCrxoe4yvgXGIEhU4qpBRyqUBKGwGe5vTRPwuEQ4F7fQx4SVoD9/A6dy3Ro6xOYYiTLXXgpj/rs/UZtk4GOZD6uuEvM0V7cmd1r0t+V6Zsso1HWsAEKbAh+/M5JQYwHwoKkhmx06+awiOGSD8W9I5OcHuC9tGzFDoSEuZwMZf0NKOLavsXaBW6h4D1gjcqHcT8vgFpHMaUfFVFBhCF x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR10MB5185.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(39850400004)(396003)(136003)(346002)(451199021)(52536014)(478600001)(71200400001)(45080400002)(186003)(6506007)(53546011)(9686003)(26005)(7696005)(83380400001)(966005)(38100700002)(122000001)(4326008)(86362001)(76116006)(110136005)(38070700005)(8936002)(8676002)(41300700001)(55016003)(66946007)(66556008)(66476007)(64756008)(66446008)(33656002)(40140700001)(316002)(2906002)(30864003)(5660300002)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZU1nSWNXMTFULzR4OXVIRXZFM2NkRXcrU3pSTE1SOVlRVFJxTDR5c3JJQnhl?= =?utf-8?B?d0lwOXBJQmxteVdTb0RaaFN4VU5QZnZtenRsWlRXclg2WWpmVllYUTI2OExR?= =?utf-8?B?alYrSHJFcHFjZGVBeVQ2Q05BUFJrS3hDR0txSFh3cElKYytLMGEwVGVmNjkz?= =?utf-8?B?QWNGWndnTEhRd3JBanNPcVRNVloyQmVHdDR2bmVMMGxyMUs5OUNaME0va1JG?= =?utf-8?B?SHFxNVZaelhtVFZMY3NQM3JRQ21Scmo5bUJuVG56T1kwUTVHc3VQT2JpRmor?= =?utf-8?B?ZFlGRlBKeitKaysrbUdyV3hIYVRrQXQxTWRNcmFPNk1HR0VQMGgwTnZCUnNy?= =?utf-8?B?dXdFOGlCTUx1YXVUaGUrazlzalUvSFc5OUxSMklBbEh2UlZtbHhVYUxYODdo?= =?utf-8?B?VHFEYTVzVVFjSU44UGR0VnU1OE5KTHIzbUp3aitjbWp5NWt2Uy9hcUNRSCt4?= =?utf-8?B?a2RWZW9mdWFEczZQODRTcjBlWmdvZHlRUG9adHpnLy9oeVllSDdCS05sUGw2?= =?utf-8?B?UFB1SGJ6KytrWFhsdFpQNmFjdCt6TzUweDgyb0FWeFBkV0hyTVZ0TXE0c2lJ?= =?utf-8?B?OHdzb3pnck5UV29ycEozQ3ZxOURZN2p5N01aY3N3RGFxVUV6K2F6VXQ5aVRu?= =?utf-8?B?eTRPN3V3b3ViM3dJWUVKN2FKUjdpQk9KaE9Gd1pKWGg5eFN2RTBNQi9YTTRD?= =?utf-8?B?aHJ5WkdwN2x2eitEeThEQ2RDZk9YT3F0NlR5VWNtMGFRbGlJZUpwT3drOVE3?= =?utf-8?B?bWtlTEdFNDk0enBuTU5ZRkMwQkFBOFJCVmNvSVYrQ1Vnc3psU3FvZ3F5TitB?= =?utf-8?B?dWt2Skw4T0JoYzRFN3l3ZFJGMnRkZTJ1UFcvd1hJVmF1bEJKQTNYbUdVQjRz?= =?utf-8?B?TmdWMGI4RWJLRFBnWW8vQStuc3grWXdTY0dBM0lsT2trNldKdThjYmtnOGJK?= =?utf-8?B?U0hPZTVvOU1rR0VCcWZpdnhzVU1QUlBaTmhQaVBDOXdFRGF4bDBsS3JvUExq?= =?utf-8?B?dXRCVGcrbGRISEJNZW00MEZYRm1sYk4yd05KWDE5ZENnTVVvRFY3b0V3dkhw?= =?utf-8?B?NW04USt1R0NrUnd2ODlqU3VUVEplZGNmMHZxck9KNWRNamRzeXdKaXdWSDRu?= =?utf-8?B?ZmRORlhYcjRxNmRJRTBCRDkwcXNEMlRzcDVYbzdvZi9neVRORjRlS3JqZWhl?= =?utf-8?B?Qjh5N1ZKSko5aDBVUTVwNUpYQW1OU2VjNGxzMk9IaUU5dS93Rm5vODIxL0JL?= =?utf-8?B?TzVPN2YzYU9RZ2dvNFlNYmhMdzBFSmlHd1BuQXdscis4djFXYzFBOGIrWEdG?= =?utf-8?B?NW5pekIxenE3K2VmM29qM3V5VGVXTnBKMUpoMTViOVNncVVuN0RSSEtWSFVu?= =?utf-8?B?NXhJTmhmWHdnQXpDZ0p1YkZmaE5Kbzc5ZzRPaEU3d3FZWU15VHR5d09wL3Rq?= =?utf-8?B?QlNML0treTlETXFWK1cvUG1tdmJic1E1MWEzaENQQ2lleGkrd3pJV1FDNTBj?= =?utf-8?B?L2cxR0tLSFVzU1drTFdQTWJ3QVhrVUdUKzZucFNnczRrUytzQ2ZOcVVFL0hG?= =?utf-8?B?TEY1R1hZdEFiN2JSOFoySnlvOVVXZ0RtN3FzVlhwNFROUW5JTmRXaURZTGJl?= =?utf-8?B?V0o5KzlvS1N5TGdVbyt3ZFB4WWNsSkx5b0VMMWMwdmUyTkY3clc3RXc3K3Rk?= =?utf-8?B?VGJpZEpzQlBRemkwWkVjT1FmZjFjQkRkWnNHRVNDaFQ2aitBcnNvUWkrS3RF?= =?utf-8?B?Q1JoUGZoWFJ5YlNieEo1ejFKSFpKS0hpY1VnRWYwK3UwdUlhdHd1M0lUL0Y5?= =?utf-8?B?Nm03TlhIVVVnMmN3d0Y3ejU5VkxsalpCaHYwNGs0NGl3MnJQUVJLUE5JV3J2?= =?utf-8?B?dXcvemtBekFTTW1ueVFHbmpITjJwOWVlNG1SWUdsU2UxY255RUJzNGNmU1A0?= =?utf-8?B?L1Y4VzQzL1FMaU9JeWt5S29GTXNCMHFqVC82MWZETVVYcmRSb28vNU1aWXlM?= =?utf-8?B?S3h6RDIxUENuUUFYdTdPS05nL2o5WEw4Tk92T2haWjVkaW94MUNMR09NUGdX?= =?utf-8?B?dTN2WWsrL2VhcmhlaGMyNjhLcXVmZFQ2elh0NXljcW5FQ1FjSnlZb0w0dm1R?= =?utf-8?Q?T8ps=3D?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3862fb0a-c01e-4c8b-4d6b-08db41cf877d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2023 18:46:19.0050 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mSQMsDQlU9Ky4pgPXppn3iXLo2iC77Q+DA9QAhfKQ4jvNMMUJQZiYA37stBKMSZh X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5140 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQWJuZXIsDQpJIGRpZCB3aGF0IHlvdSBhc2tlZCB0byBkbyAtIFBhdGNoY2hlY2sucHkgYW5k IFVuY3J1c3RpeUNoZWNrIChnb3QgYmluYXJ5KS4NCkdvaW5nIHRvIHNlbmQgUEFUQ0ggVjIuDQpC dXQgSSdtIG5vdCBzdXJlIHdoYXQgaGFwcGVuZWQgd2l0aCB3aGl0ZSBzcGFjZS4gR29pbmcgdG8g Y2hlY2sgd2l0aCBNSVMuDQpUaGFuayB5b3UsDQpJZ29yDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQpGcm9tOiBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5jb20+DQpTZW50OiBX ZWRuZXNkYXksIEFwcmlsIDE5LCAyMDIzIDk6MDAgUE0NClRvOiBJZ29yIEt1bGNoeXRza3l5IDxp Z29ya0BhbWkuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCkNjOiBOaWNrbGUgV2FuZyA8bmlj a2xld0BudmlkaWEuY29tPg0KU3ViamVjdDogW0VYVEVSTkFMXSBSRTogW1BBVENIXSBSZWRmaXNo UGtnOiBSZW1vdmUgdGhlIGdsb2JhbCB2YXJpYWJsZXMgcmVsYXRlZCB0byBEaXNjb3ZlciBUb2tl biBmdW5jdGlvbmFsaXR5DQoNCg0KKipDQVVUSU9OOiBUaGUgZS1tYWlsIGJlbG93IGlzIGZyb20g YW4gZXh0ZXJuYWwgc291cmNlLiBQbGVhc2UgZXhlcmNpc2UgY2F1dGlvbiBiZWZvcmUgb3Blbmlu ZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3MsIG9yIGZvbGxvd2luZyBndWlkYW5jZS4qKg0K DQpbQU1EIE9mZmljaWFsIFVzZSBPbmx5IC0gR2VuZXJhbF0NCg0KSGkgSWdvciwNCkkgaGF2ZSBu byBwcm9ibGVtIHdpdGggdGhpcyBjaGFuZ2UsIGhvd2V2ZXIgc29tZSB1cHN0cmVhbSBwcmFjdGlj ZXMgaGVyZSwNCg0KLSBQbGVhc2Ugc2hvcnRlbiB0aGUgc3ViamVjdCB0byA8PSA3Ng0KLSBFYWNo IGxpbmUgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZSA8PTc2DQpZb3UgY2FuIHJ1biBQ YXRjaGNoZWNrLnB5IChoZXJlOiBCYXNlVG9vbHNcU2NyaXB0cykgYmVmb3JlIHlvdSBzZW5kaW5n IG91dCB0aGUgcGF0Y2hlcy4NCg0KUGxlYXNlIHJ1biBVbmNydXN0aXlDaGVjayBmb3IgZWFjaCBz b3VyY2UgY29kZSB5b3UgbW9kaWZpZWQsIC4gcHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2sv IGFuZCB1c2VkIGZvciBiZWF1dGlmeWluZyB0aGUgc291cmNlIGNvZGUuDQpZb3UgY2FuIGdldCB0 aGUgYmluYXJ5IGZyb20gaGVyZTogaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdW5j cnVzdGlmeS9maWxlcy4NCg0KUGxlYXNlIHJlc2VuZCB0aGUgcGF0Y2ggd2l0aCBhYm92ZSBpc3N1 ZSBmaXhlZC4NCg0KQlRXLCB0aGUgcGF0Y2ggeW91IHNlbnQgdG8gZ3JvdXAuaW8gc3RpbGwgaGFz IGEgcHJvYmxlbS4gVGhlIHdoaXRlIHNwYWNlIG9mIGVhY2ggYmxhbmsgbGluZSBpbiB0aGUgcGF0 Y2ggZmlsZSB3ZXJlIGdvbmUgKHlvdSBjYW4gdGFrZSBhIGxvb2sgYXQgeW91ciBtZXNzYWdlIHNl bnQgdG8gZ3JvdXAuaW8pLiBUaGlzIGxlYWRzIHRvIGEgZmFpbHVyZSBvZiBwYXRjaCBhcHBseS4g SSByZWNvdmVyIHRob3NlIHdoaXRlIHNwYWNlIGluIHRoZSBibGFuayBsaW5lcyBhbmQgdGhlIHBh dGNoIGNhbiBiZSBhcHBsaWVkLiBIb3dldmVyLCBJIGNhbiBkbyB0aGlzIGp1c3QgZm9yIGEgc2hv cnQgcGF0Y2guIPCfmIogUGxlYXNlIGZpZ3VyZSBpdCBvdXQgYXQgeW91ciBlbmQuICBUaGF0J3Mg ZmluZSBpZiB0aGlzIHByb2JsZW0gc3RpbGwgZXhpc3Qgb24geW91ciByZXNlbnQgcGF0Y2ggaW4g Y2FzZSB5b3UgbmVlZCBzb21lIHRpbWUgdG8gZmlndXJlIG91dCB0aGUgZW1haWwgcHJvYmxlbS4N Cg0KVGhhbmtzDQpBYm5lcg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgQXBy aWwgMTksIDIwMjMgMTE6MDQgUE0NCj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBD aGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5jb20+OyBOaWNrbGUgV2FuZw0KPiA8bmlja2xl d0BudmlkaWEuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0hdIFJlZGZpc2hQa2c6IFJlbW92ZSB0aGUg Z2xvYmFsIHZhcmlhYmxlcyByZWxhdGVkIHRvDQo+IERpc2NvdmVyIFRva2VuIGZ1bmN0aW9uYWxp dHkNCj4NCj4gQ2F1dGlvbjogVGhpcyBtZXNzYWdlIG9yaWdpbmF0ZWQgZnJvbSBhbiBFeHRlcm5h bCBTb3VyY2UuIFVzZSBwcm9wZXINCj4gY2F1dGlvbiB3aGVuIG9wZW5pbmcgYXR0YWNobWVudHMs IGNsaWNraW5nIGxpbmtzLCBvciByZXNwb25kaW5nLg0KPg0KPg0KPiBnUmVkZmlzaERpc2NvdmVy ZWRUb2tlbiBtYXkgYmUgYWxsb2NhdGVkIHNldmVyYWwgdGltZXMsIGlmIG11bHRpcGxlIE5JQw0K PiBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS4NCj4gVG8gYXZvaWQgdGhpcyBpc3N1ZSBEaXNjb3Zl ciBUb2tlbiByZWxhdGVkIGdsb2JhbCB2YXJpYWJsZXMgcmVwbGFjZWQgd2l0aCB0aGUNCj4gbG9j YWwgdmFyaWFibGVzLg0KPg0KPiBDYzogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGFtZC5jb20+ DQo+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiBTaWduZWQtb2ZmLWJ5 OiBJZ29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiAtLS0NCj4gIFJlZGZpc2hQa2cv UmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYyB8IDEzOQ0K PiArKysrKysrKy0tLS0tLS0tLS0tLQ0KPiAgUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUv UmVkZmlzaERpc2NvdmVyRHhlLmMgICAgICAgICAgIHwgIDg3ICsrKysrKysrLQ0KPiAtLS0NCj4g IFJlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckludGVybmFsLmgg ICAgICB8ICAyOCArKystDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAx MTQgZGVsZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hDb25m aWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gYi9SZWRmaXNoUGtnL1Jl ZGZpc2hDb25maWdIYW5kbGVyL1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gaW5kZXgg OTkzYWQzMy4uOGY4NTQ5MSAxMDA2NDQNCj4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmln SGFuZGxlci9SZWRmaXNoQ29uZmlnSGFuZGxlckRyaXZlci5jDQo+ICsrKyBiL1JlZGZpc2hQa2cv UmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiBAQCAt MjIsMTIgKzIyLDYgQEAgRUZJX0hBTkRMRQ0KPiBnRWZpUmVkZmlzaERpc2NvdmVyQ29udHJvbGxl ckhhbmRsZSA9IE5VTEw7DQo+ICBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgKmdFZmlS ZWRmaXNoRGlzY292ZXJQcm90b2NvbCAgICAgICAgPQ0KPiBOVUxMOw0KPiAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgICAgIGdSZWRmaXNoRGlzY292ZXJBY3RpdmF0ZWQgICAgICAgICAgID0g RkFMU0U7DQo+ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgZ1JlZGZpc2hTZXJ2aWNl RGlzY292ZXJlZCAgICAgICAgICAgPSBGQUxTRTsNCj4gLS8vDQo+IC0vLyBOZXR3b3JrIGludGVy ZmFjZXMgZGlzY292ZXJlZCBieSBFRkkgUmVkZmlzaCBEaXNjb3ZlciBQcm90b2NvbC4NCj4gLS8v DQo+IC1VSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ051bWJlck9mTmV0 d29ya0ludGVyZmFjZXM7DQo+IC1FRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFD RQ0KPiAqZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgPSBOVUxMOw0KPiAtRUZJX1JFREZJU0hf RElTQ09WRVJFRF9UT0tFTiAgICAgICAgICAgICpnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiAgICA9 DQo+IE5VTEw7DQo+DQo+ICAvLy8NCj4gIC8vLyBEcml2ZXIgQmluZGluZyBQcm90b2NvbCBpbnN0 YW5jZQ0KPiBAQCAtNTgsMTMgKzUyLDYgQEAgUmVkZmlzaENvbmZpZ1N0b3BSZWRmaXNoRGlzY292 ZXJ5ICgNCj4gICAgICAgIGdCUy0+Q2xvc2VFdmVudCAoZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sRXZlbnQpOw0KPiAgICAgIH0NCj4NCj4gLSAgICAvLw0KPiAtICAgIC8vIFN0b3AgUmVkZmlz aCBzZXJ2aWNlIGRpc2NvdmVyeS4NCj4gLSAgICAvLw0KPiAtICAgIGdFZmlSZWRmaXNoRGlzY292 ZXJQcm90b2NvbC0+QWJvcnRBY3F1aXJlUmVkZmlzaFNlcnZpY2UgKA0KPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wsDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFu Y2VzDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICAgICAgZ0Vm aVJlZGZpc2hEaXNjb3ZlckNvbnRyb2xsZXJIYW5kbGUgPSBOVUxMOw0KPiAgICAgIGdFZmlSZWRm aXNoRGlzY292ZXJQcm90b2NvbCAgICAgICAgID0gTlVMTDsNCj4gICAgICBnUmVkZmlzaERpc2Nv dmVyQWN0aXZhdGVkICAgICAgICAgICA9IEZBTFNFOw0KPiBAQCAtMzE4LDM2ICszMDUsMzkgQEAg UmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkQ2FsbGJhY2sgKA0KPiAgICBFRklfUkVERklTSF9ESVND T1ZFUkVEX1RPS0VOICAgICAqUmVkZmlzaERpc2NvdmVyZWRUb2tlbjsNCj4gICAgRUZJX1JFREZJ U0hfRElTQ09WRVJFRF9JTlNUQU5DRSAgKlJlZGZpc2hJbnN0YW5jZTsNCj4NCj4gLSAgaWYgKGdS ZWRmaXNoU2VydmljZURpc2NvdmVyZWQpIHsNCj4gLSAgICAvLw0KPiAtICAgIC8vIE9ubHkgc3Vw cG9ydCBvbmUgUmVkZmlzaCBzZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiAtICAgIC8vDQo+IC0gICAg cmV0dXJuOw0KPiAtICB9DQo+IC0NCj4gICAgUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IChFRklf UkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOICopQ29udGV4dDsNCj4gLSAgUmVkZmlzaEluc3RhbmNl ICAgICAgICA9IFJlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tDQo+ID5EaXNjb3Zlckxpc3QuUmVkZmlz aEluc3RhbmNlczsNCj4gKyAgZ0JTLT5DbG9zZUV2ZW50IChSZWRmaXNoRGlzY292ZXJlZFRva2Vu LT5FdmVudCk7DQo+ICsNCj4gICAgLy8NCj4gLSAgLy8gT25seSBwaWNrIHVwIHRoZSBmaXJzdCBm b3VuZCBSZWRmaXNoIHNlcnZpY2UuDQo+ICsgIC8vIE9ubHkgc3VwcG9ydCBvbmUgUmVkZmlzaCBz ZXJ2aWNlIG9uIHBsYXRmb3JtLg0KPiAgICAvLw0KPiAtICBpZiAoUmVkZmlzaEluc3RhbmNlLT5T dGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCj4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlz aFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlUmVzdEV4SGFuZGxlID0NCj4gUmVkZmlzaEluc3Rh bmNlLT5JbmZvcm1hdGlvbi5SZWRmaXNoUmVzdEV4SGFuZGxlOw0KPiAtICAgIGdSZWRmaXNoQ29u ZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VWZXJzaW9uICAgICAgPQ0K PiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlJlZGZpc2hWZXJzaW9uOw0KPiAtICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VMb2NhdGlv biAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLkxvY2F0aW9uOw0KPiAtICAg IGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlk ICAgICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+IC0gICAg Z1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9zICAg ICAgICAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3M7DQo+IC0gICAgZ1Jl ZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9zVmVyc2lv biAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3NWZXJzaW9uOw0KPiAtICAg IGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQcm9k dWN0ICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7DQo+IC0g ICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZVBy b2R1Y3RWZXIgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVjdFZlcjsN Cj4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2 aWNlVXNlSHR0cHMgICAgID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Vc2VIdHRw czsNCj4gLSAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gKyAgaWYgKCFnUmVkZmlzaFNlcnZpY2VEaXNj b3ZlcmVkKSB7DQo+ICsgICAgUmVkZmlzaEluc3RhbmNlICAgICAgICA9IFJlZGZpc2hEaXNjb3Zl cmVkVG9rZW4tDQo+ID5EaXNjb3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlczsNCj4gKyAgICAvLw0K PiArICAgIC8vIE9ubHkgcGljayB1cCB0aGUgZmlyc3QgZm91bmQgUmVkZmlzaCBzZXJ2aWNlLg0K PiArICAgIC8vDQo+ICsgICAgaWYgKFJlZGZpc2hJbnN0YW5jZS0+U3RhdHVzID09IEVGSV9TVUND RVNTKSB7DQo+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJl ZGZpc2hTZXJ2aWNlUmVzdEV4SGFuZGxlID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlv bi5SZWRmaXNoUmVzdEV4SGFuZGxlOw0KPiArICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZp c2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZVZlcnNpb24gICAgICA9DQo+IFJlZGZpc2hJbnN0 YW5jZS0+SW5mb3JtYXRpb24uUmVkZmlzaFZlcnNpb247DQo+ICsgICAgICBnUmVkZmlzaENvbmZp Z0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlTG9jYXRpb24gICAgID0NCj4g UmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Mb2NhdGlvbjsNCj4gKyAgICAgIGdSZWRmaXNo Q29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VVdWlkICAgICAgICAg PQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+ICsgICAgICBnUmVkZmlz aENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlT3MgICAgICAgICAg ID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5PczsNCj4gKyAgICAgIGdSZWRmaXNo Q29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPc1ZlcnNpb24gICAg PQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLk9zVmVyc2lvbjsNCj4gKyAgICAgIGdS ZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VQcm9kdWN0 ICAgICAgPQ0KPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7DQo+ICsgICAg ICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlUHJv ZHVjdFZlciAgID0NCj4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Qcm9kdWN0VmVyOw0K PiArICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2Vy dmljZVVzZUh0dHBzICAgICA9DQo+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uVXNlSHR0 cHM7DQo+ICsgICAgICBnUmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gVFJVRTsNCj4gKyAgICB9DQo+ICsNCj4gKyAgICAvLw0K PiArICAgIC8vIEludm9rZSBSZWRmaXNoQ29uZmlnSGFuZGxlckluc3RhbGxlZENhbGxiYWNrIHRv IGV4ZWN1dGUNCj4gKyAgICAvLyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUmVkZmlzaCBDb25maWd1 cmUgSGFuZGxlciBpbnN0YW5jZS4NCj4gKyAgICAvLw0KPiArICAgIFJlZGZpc2hDb25maWdIYW5k bGVySW5zdGFsbGVkQ2FsbGJhY2sgKGdSZWRmaXNoQ29uZmlnRGF0YS5FdmVudCwNCj4gKyAmZ1Jl ZGZpc2hDb25maWdEYXRhKTsNCj4gICAgfQ0KPg0KPiAtICAvLw0KPiAtICAvLyBJbnZva2UgUmVk ZmlzaENvbmZpZ0hhbmRsZXJJbnN0YWxsZWRDYWxsYmFjayB0byBleGVjdXRlDQo+IC0gIC8vIHRo ZSBpbml0aWFsaXphdGlvbiBvZiBSZWRmaXNoIENvbmZpZ3VyZSBIYW5kbGVyIGluc3RhbmNlLg0K PiAtICAvLw0KPiAtICBSZWRmaXNoQ29uZmlnSGFuZGxlckluc3RhbGxlZENhbGxiYWNrIChnUmVk ZmlzaENvbmZpZ0RhdGEuRXZlbnQsDQo+ICZnUmVkZmlzaENvbmZpZ0RhdGEpOw0KPiArICBGcmVl UG9vbChSZWRmaXNoRGlzY292ZXJlZFRva2VuKTsNCj4gKw0KPiAgfQ0KPg0KPiAgLyoqDQo+IEBA IC0zNzEsNiArMzYxLDcgQEAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xJbnN0YWxsZWQgKA0KPiAg ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya0ludGVyZmFj ZUluZGV4Ow0KPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRSAgKlRo aXNOZXR3b3JrSW50ZXJmYWNlOw0KPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOICAg ICAgICAgICAgKlRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsNCj4N Cj4gICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IE5ldyBuZXR3b3JrIGludGVyZmFjZSBpcyBp bnN0YWxsZWQgb24gc3lzdGVtDQo+IGJ5IEVGSSBSZWRmaXNoIGRpc2NvdmVyIGRyaXZlci5cbiIs IF9fZnVuY19fKSk7DQo+DQo+IEBAIC00MDgsMzYgKzM5OSwzMSBAQCBSZWRmaXNoRGlzY292ZXJQ cm90b2NvbEluc3RhbGxlZCAoDQo+ICAgICAgfQ0KPiAgICB9DQo+DQo+IC0gIC8vDQo+IC0gIC8v IENoZWNrIHRoZSBuZXcgZm91bmQgbmV0d29yayBpbnRlcmZhY2UuDQo+IC0gIC8vDQo+IC0gIGlm IChnTmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyAhPSBOVUxMKSB7DQo+IC0gICAgRnJlZVBvb2wg KGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzKTsNCj4gLSAgfQ0KPg0KPiAgICBTdGF0dXMgPSBn RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wtPkdldE5ldHdvcmtJbnRlcmZhY2VMaXN0ICgNCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdFZmlSZWRmaXNoRGlz Y292ZXJQcm90b2NvbCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5JbWFnZSwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcywNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnTmV0d29ya0ludGVyZmFjZUlu c3RhbmNlcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk51 bWJlck9mTmV0d29ya0ludGVyZmFjZXMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmVGhpc05ldHdvcmtJbnRlcmZhY2UNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykg fHwgKGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzID09IDApKSB7DQo+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykgfHwgKE51bWJlck9mTmV0d29ya0ludGVyZmFjZXMgPT0gMCkpIHsNCj4gICAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3VuZCBv biB0aGUNCj4gaGFuZGxlLlxuIiwgX19mdW5jX18pKTsNCj4gICAgICByZXR1cm47DQo+ICAgIH0N Cj4NCj4gLSAgZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPSBBbGxvY2F0ZVplcm9Qb29sDQo+IChn TnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcyAqIHNpemVvZg0KPiAoRUZJX1JFREZJU0hfRElTQ09W RVJFRF9UT0tFTikpOw0KPiAtICBpZiAoZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPT0gTlVMTCkg ew0KPiArICAvLw0KPiArICAvLyBMb29wIHRvIGRpc2NvdmVyIFJlZGZpc2ggc2VydmljZSBvbiBl YWNoIG5ldHdvcmsgaW50ZXJmYWNlLg0KPiArICAvLw0KPiArICBmb3IgKE5ldHdvcmtJbnRlcmZh Y2VJbmRleCA9IDA7IE5ldHdvcmtJbnRlcmZhY2VJbmRleCA8DQo+ICsgTnVtYmVyT2ZOZXR3b3Jr SW50ZXJmYWNlczsgTmV0d29ya0ludGVyZmFjZUluZGV4KyspIHsNCj4gKw0KPiArICAgIFRoaXNS ZWRmaXNoRGlzY292ZXJlZFRva2VuID0gKEVGSV9SRURGSVNIX0RJU0NPVkVSRURfVE9LRU4NCj4g KilBbGxvY2F0ZVplcm9Qb29sKHNpemVvZiAoRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTikp Ow0KPiArICAgIGlmIChUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9PSBOVUxMKSB7DQo+ICAg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBOb3QgZW5vdWdoIG1lbW9yeSBmb3INCj4gRUZJ X1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTi5cbiIsIF9fZnVuY19fKSk7DQo+ICAgICAgcmV0dXJu Ow0KPiAgICB9DQo+DQo+IC0gIFRoaXNOZXR3b3JrSW50ZXJmYWNlICAgICAgID0gZ05ldHdvcmtJ bnRlcmZhY2VJbnN0YW5jZXM7DQo+IC0gIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuID0gZ1Jl ZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+IC0gIC8vDQo+IC0gIC8vIExvb3AgdG8gZGlzY292ZXIg UmVkZmlzaCBzZXJ2aWNlIG9uIGVhY2ggbmV0d29yayBpbnRlcmZhY2UuDQo+IC0gIC8vDQo+IC0g IGZvciAoTmV0d29ya0ludGVyZmFjZUluZGV4ID0gMDsgTmV0d29ya0ludGVyZmFjZUluZGV4IDwN Cj4gZ051bWJlck9mTmV0d29ya0ludGVyZmFjZXM7IE5ldHdvcmtJbnRlcmZhY2VJbmRleCsrKSB7 DQo+ICsgICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPlNpZ25hdHVyZSA9DQo+ICsgUkVE RklTSF9ESVNDT1ZFUl9UT0tFTl9TSUdOQVRVUkU7DQo+ICsNCj4gICAgICAvLw0KPiAgICAgIC8v IEluaXRpYWwgdGhpcyBSZWRmaXNoIERpc2NvdmVyZWQgVG9rZW4NCj4gICAgICAvLw0KPiBAQCAt NDQ5LDEzICs0MzUsMTEgQEAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xJbnN0YWxsZWQgKA0KPiAg ICAgICAgICAgICAgICAgICAgICAmVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50DQo+ ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiArICAgICAgRnJlZVBvb2woVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiAgICAg ICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsZWQgdG8gY3JlYXRlIGV2ZW50IGZvciBS ZWRmaXNoDQo+IGRpc2NvdmVyZWQgdG9rZW4uXG4iLCBfX2Z1bmNfXykpOw0KPiAtICAgICAgZ290 byBFcnJvclJldHVybjsNCj4gKyAgICAgIHJldHVybjsNCj4gICAgICB9DQo+DQo+IC0gICAgVGhp c1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPlNpZ25hdHVyZSAgICAgICAgICAgICAgICAgICAgICAg ICA9DQo+IFJFREZJU0hfRElTQ09WRVJfVE9LRU5fU0lHTkFUVVJFOw0KPiAtICAgIFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuLT5EaXNjb3Zlckxpc3QuTnVtYmVyT2ZTZXJ2aWNlRm91bmQgPSAw Ow0KPiAtICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5EaXNjb3Zlckxpc3QuUmVkZmlz aEluc3RhbmNlcyAgICAgPSBOVUxMOw0KPiAgICAgIC8vDQo+ICAgICAgLy8gQWNxdWlyZSBmb3Ig UmVkZmlzaCBzZXJ2aWNlIHdoaWNoIGlzIHJlcG9ydGVkIGJ5DQo+ICAgICAgLy8gUmVkZmlzaCBI b3N0IEludGVyZmFjZS4NCj4gQEAgLTQ2NywyMSArNDUxLDIzIEBAIFJlZGZpc2hEaXNjb3ZlclBy b3RvY29sSW5zdGFsbGVkICgNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX1JFREZJU0hfRElTQ09WRVJfSE9TVF9JTlRFUkZBQ0UsDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXNSZWRmaXNoRGlzY292ZXJl ZFRva2VuDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7 DQo+IC0gICAgVGhpc05ldHdvcmtJbnRlcmZhY2UrKzsNCj4gLSAgICBUaGlzUmVkZmlzaERpc2Nv dmVyZWRUb2tlbisrOw0KPiAtICB9DQo+DQo+IC0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gLSAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEFjcXVpcmUgUmVkZmlzaCBzZXJ2aWNl IGZhaWwuXG4iLCBfX2Z1bmNfXykpOw0KPiAtICAgIGdvdG8gRXJyb3JSZXR1cm47DQo+ICsgICAg Ly8NCj4gKyAgICAvLyBGcmVlIFJlZGZpc2ggRGlzY292ZXJlZCBUb2tlbiBpZiBEaXNjb3ZlciBJ bnN0YW5jZSB3YXMgbm90IGNyZWF0ZWQNCj4gYW5kDQo+ICsgICAgLy8gUmVkZmlzaCBTZXJ2aWNl IERpc2NvdmVyZWQgQ2FsbGJhY2sgZXZlbnQgd2FzIG5vdCB0cmlnZ2VyZWQuDQo+ICsgICAgLy8N Cj4gKyAgICBpZihUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0+RGlzY292ZXJMaXN0Lk51bWJl ck9mU2VydmljZUZvdW5kID09DQo+IDAgfHwNCj4gKyAgICAgICAgRUZJX0VSUk9SKFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuLQ0KPiA+RGlzY292ZXJMaXN0LlJlZGZpc2hJbnN0YW5jZXMtPlN0 YXR1cykpew0KPiArICAgICAgZ0JTLT5DbG9zZUV2ZW50IChUaGlzUmVkZmlzaERpc2NvdmVyZWRU b2tlbi0+RXZlbnQpOw0KPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGcmVlIFJl ZGZpc2ggZGlzY292ZXJlZCB0b2tlbiAtICV4LlxuIiwNCj4gKyAgICAgICAgICBfX2Z1bmNfXywg VGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pKTsNCj4gKyAgICAgIEZyZWVQb29sKFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuKTsNCj4gKyAgICB9DQo+ICsgICAgVGhpc05ldHdvcmtJbnRlcmZh Y2UrKzsNCj4gICAgfQ0KPg0KPiAgICByZXR1cm47DQo+DQo+IC1FcnJvclJldHVybjoNCj4gLSAg aWYgKGdSZWRmaXNoRGlzY292ZXJlZFRva2VuICE9IE5VTEwpIHsNCj4gLSAgICBGcmVlUG9vbCAo Z1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiAtICB9DQo+ICB9DQo+DQo+ICAvKioNCj4gQEAg LTQ5OCwyNSArNDg0LDEwIEBAIFJlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyVW5sb2FkICgNCj4g ICAgSU4gRUZJX0hBTkRMRSAgSW1hZ2VIYW5kbGUNCj4gICAgKQ0KPiAgew0KPiAtICBFRklfUkVE RklTSF9ESVNDT1ZFUkVEX1RPS0VOICAqVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW47DQo+IC0g IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlck9mTmV0d29ya0ludGVyZmFjZXNJ bmRleDsNCj4NCj4gICAgUmVkZmlzaENvbmZpZ0RyaXZlckNvbW1vblVubG9hZCAoSW1hZ2VIYW5k bGUpOw0KPg0KPiAgICBSZWRmaXNoQ29uZmlnU3RvcFJlZGZpc2hEaXNjb3ZlcnkgKCk7DQo+IC0g IGlmIChnUmVkZmlzaERpc2NvdmVyZWRUb2tlbiAhPSBOVUxMKSB7DQo+IC0gICAgVGhpc1JlZGZp c2hEaXNjb3ZlcmVkVG9rZW4gPSBnUmVkZmlzaERpc2NvdmVyZWRUb2tlbjsNCj4gLSAgICBmb3Ig KE51bWJlck9mTmV0d29ya0ludGVyZmFjZXNJbmRleCA9IDA7DQo+IE51bWJlck9mTmV0d29ya0lu dGVyZmFjZXNJbmRleCA8IGdOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzOw0KPiBOdW1iZXJPZk5l dHdvcmtJbnRlcmZhY2VzSW5kZXgrKykgew0KPiAtICAgICAgaWYgKFRoaXNSZWRmaXNoRGlzY292 ZXJlZFRva2VuLT5FdmVudCAhPSBOVUxMKSB7DQo+IC0gICAgICAgIGdCUy0+Q2xvc2VFdmVudCAo VGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsNCj4gLSAgICAgIH0NCj4gLQ0KPiAt ICAgICAgRnJlZVBvb2wgKFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKTsNCj4gLSAgICAgIFRo aXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKys7DQo+IC0gICAgfQ0KPiAtDQo+IC0gICAgZ1JlZGZp c2hEaXNjb3ZlcmVkVG9rZW4gPSBOVUxMOw0KPiAtICB9DQo+DQo+ICAgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaERpc2NvdmVyRHhl L1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+IGIvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUv UmVkZmlzaERpc2NvdmVyRHhlLmMNCj4gaW5kZXggNTgzYzZmNy4uYTZjOGQ2MCAxMDA2NDQNCj4g LS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMN Cj4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhl LmMNCj4gQEAgLTEwOTUsOCArMTA5NSwxMCBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRl cmZhY2UgKCAgew0KPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9J TlRFUk5BTA0KPiAqVGhpc05ldHdvcmtJbnRlcmZhY2VJbnRuOw0KPiAgICBFRklfUkVERklTSF9E SVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRQ0KPiAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ICsg IEVGSV9SRURGSVNIX0RJU0NPVkVSX1JFU1RfRVhfSU5TVEFOQ0VfSU5URVJOQUwgICAqUmVzdEV4 SW5zdGFuY2U7DQo+DQo+IC0gIGlmICgoTmV0d29ya0ludGZJbnN0YW5jZXMgPT0gTlVMTCkgfHwg KE51bWJlck9mTmV0d29ya0ludGZzID09IE5VTEwpDQo+IHx8IChJbWFnZUhhbmRsZSA9PSBOVUxM KSkgew0KPiArICBpZiAoKFRoaXMgPT0gTlVMTCkgfHwgKE5ldHdvcmtJbnRmSW5zdGFuY2VzID09 IE5VTEwpIHx8DQo+IChOdW1iZXJPZk5ldHdvcmtJbnRmcyA9PSBOVUxMKSB8fA0KPiArICAgICAg KEltYWdlSGFuZGxlID09IE5VTEwpKSB7DQo+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gICAgfQ0KPg0KPiBAQCAtMTEwNywxNCArMTEwOSwzMCBAQCBSZWRmaXNoU2Vydmlj ZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPiAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiAg ICB9DQo+DQo+ICsgIFJlc3RFeEluc3RhbmNlID0NCj4gKyBFRklfUkVERklTSF9ESVNPVkVSX0RB VEFfRlJPTV9ESVNDT1ZFUl9QUk9UT0NPTChUaGlzKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBD aGVjayB0aGUgbmV3IGZvdW5kIG5ldHdvcmsgaW50ZXJmYWNlLg0KPiArICAvLw0KPiArICBpZiAo UmVzdEV4SW5zdGFuY2UtPk5ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgIT0gTlVMTCkgew0KPiAr ICAgIEZyZWVQb29sIChSZXN0RXhJbnN0YW5jZS0+TmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyk7 DQo+ICsgICAgUmVzdEV4SW5zdGFuY2UtPk5ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgPSBOVUxM OyAgfQ0KPiArDQo+ICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlID0gKEVGSV9SRURGSVNIX0RJU0NP VkVSX05FVFdPUktfSU5URVJGQUNFDQo+ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChFRklf UkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRSkNCj4gKiBtTnVtTmV0d29ya0ludGVy ZmFjZSk7DQo+ICAgIGlmIChUaGlzTmV0d29ya0ludGVyZmFjZSA9PSBOVUxMKSB7DQo+ICAgICAg cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiAgICB9DQo+DQo+ICAgICpOZXR3b3JrSW50 Zkluc3RhbmNlcyAgICA9IFRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiArDQo+ICsNCj4gKyAgUmVz dEV4SW5zdGFuY2UtPk5ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgPSBUaGlzTmV0d29ya0ludGVy ZmFjZTsNCj4gKyBSZXN0RXhJbnN0YW5jZS0+TnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcyA9IDA7 DQo+ICsNCj4gICAgVGhpc05ldHdvcmtJbnRlcmZhY2VJbnRuID0NCj4gKEVGSV9SRURGSVNIX0RJ U0NPVkVSX05FVFdPUktfSU5URVJGQUNFX0lOVEVSTkFMICopR2V0Rmlyc3ROb2RlDQo+ICgmbUVm aVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2UpOw0KPiAgICB3aGlsZSAoVFJVRSkgew0K PiArDQo+ICAgICAgVGhpc05ldHdvcmtJbnRlcmZhY2UtPklzSXB2NiA9IEZBTFNFOw0KPiAgICAg IGlmIChDaGVja0lzSXBWZXJzaW9uNiAoVGhpc05ldHdvcmtJbnRlcmZhY2VJbnRuKSkgew0KPiAg ICAgICAgVGhpc05ldHdvcmtJbnRlcmZhY2UtPklzSXB2NiA9IFRSVUU7IEBAIC0xMTMwLDcgKzEx NDgsNyBAQA0KPiBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPg0KPiAgICAg IFRoaXNOZXR3b3JrSW50ZXJmYWNlLT5TdWJuZXRQcmVmaXhMZW5ndGggPSBUaGlzTmV0d29ya0lu dGVyZmFjZUludG4tDQo+ID5TdWJuZXRQcmVmaXhMZW5ndGg7DQo+ICAgICAgVGhpc05ldHdvcmtJ bnRlcmZhY2UtPlZsYW5JZCAgICAgICAgICAgICA9IFRoaXNOZXR3b3JrSW50ZXJmYWNlSW50bi0+ VmxhbklkOw0KPiAtICAgICgqTnVtYmVyT2ZOZXR3b3JrSW50ZnMpKys7DQo+ICsgICAgUmVzdEV4 SW5zdGFuY2UtPk51bWJlck9mTmV0d29ya0ludGVyZmFjZXMrKzsNCj4gICAgICBpZiAoSXNOb2Rl QXRFbmQgKCZtRWZpUmVkZmlzaERpc2NvdmVyTmV0d29ya0ludGVyZmFjZSwNCj4gJlRoaXNOZXR3 b3JrSW50ZXJmYWNlSW50bi0+RW50cnkpKSB7DQo+ICAgICAgICBicmVhazsNCj4gICAgICB9DQo+ IEBAIC0xMTM5LDYgKzExNTcsOCBAQCBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2Ug KA0KPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlKys7DQo+ICAgIH0NCj4NCj4gKyAgKk51bWJl ck9mTmV0d29ya0ludGZzID0gUmVzdEV4SW5zdGFuY2UtDQo+ID5OdW1iZXJPZk5ldHdvcmtJbnRl cmZhY2VzOw0KPiArDQo+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gIH0NCj4NCj4gQEAgLTEx NzgsNyArMTE5OCw2IEBAIFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNlcnZpY2UgKCAgew0KPiAgICBF RklfUkVERklTSF9ESVNDT1ZFUkVEX0lOVEVSTkFMX0lOU1RBTkNFICAgICAgICAgKkluc3RhbmNl Ow0KPiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U3RhdHVzMTsNCj4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFN0YXR1czI7DQo+ICAgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOZXdJbnN0YW5jZTsNCj4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE51bU5ldHdvcmtJbnRlcmZhY2VzOw0KPiAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya0ludGVy ZmFjZXNJbmRleDsNCj4gQEAgLTEyMTUsNyArMTIzNCw2IEBAIFJlZGZpc2hTZXJ2aWNlQWNxdWly ZVNlcnZpY2UgKA0KPg0KPiAgICBmb3IgKE5ldHdvcmtJbnRlcmZhY2VzSW5kZXggPSAwOyBOZXR3 b3JrSW50ZXJmYWNlc0luZGV4IDwNCj4gTnVtTmV0d29ya0ludGVyZmFjZXM7IE5ldHdvcmtJbnRl cmZhY2VzSW5kZXgrKykgew0KPiAgICAgIFN0YXR1czEgICAgID0gRUZJX1NVQ0NFU1M7DQo+IC0g ICAgU3RhdHVzMiAgICAgPSBFRklfU1VDQ0VTUzsNCj4gICAgICBOZXdJbnN0YW5jZSA9IEZBTFNF Ow0KPiAgICAgIEluc3RhbmNlICAgID0gR2V0SW5zdGFuY2VCeU93bmVyIChJbWFnZUhhbmRsZSwN Cj4gVGFyZ2V0TmV0d29ya0ludGVyZmFjZUludGVybmFsLCBGbGFncyAmDQo+IH5FRklfUkVERklT SF9ESVNDT1ZFUl9WQUxJREFUSU9OKTsgLy8gQ2hlY2sgaWYgd2UgY2FuIHJlLXVzZSBwcmV2aW91 cw0KPiBpbnN0YW5jZS4NCj4gICAgICBpZiAoSW5zdGFuY2UgPT0gTlVMTCkgew0KPiBAQCAtMTIy Myw2ICsxMjQxLDcgQEAgUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSAoDQo+ICAgICAgICBJ bnN0YW5jZSA9IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX0lOVEVSTkFMX0lOU1RBTkNFDQo+ICop QWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+IChFRklfUkVERklTSF9ESVNDT1ZFUkVEX0lOVEVS TkFMX0lOU1RBTkNFKSk7DQo+ICAgICAgICBpZiAoSW5zdGFuY2UgPT0gTlVMTCkgew0KPiAgICAg ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6TWVtb3J5IGFsbG9jYXRpb24gZmFpbC5cbiIs IF9fZnVuY19fKSk7DQo+ICsgICAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g ICAgICAgIH0NCj4NCj4gICAgICAgIEluaXRpYWxpemVMaXN0SGVhZCAoJkluc3RhbmNlLT5FbnRy eSk7IEBAIC0xMjU4LDkgKzEyNzcsMTEgQEANCj4gUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2Vydmlj ZSAoDQo+ICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6UmVkZmlzaCBzZXJ2aWNlIGRp c2NvdmVyeSB0aHJvdWdoIFNTRFAgaXMNCj4gbm90IHN1cHBvcnRlZFxuIiwgX19mdW5jX18pKTsN Cj4gICAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ICAgICAgfSBlbHNlIHsNCj4gLSAg ICAgIGlmIChFRklfRVJST1IgKFN0YXR1czEpICYmIEVGSV9FUlJPUiAoU3RhdHVzMikpIHsNCj4g LSAgICAgICAgRnJlZVBvb2wgKChWT0lEICopSW5zdGFuY2UpOw0KPiAtICAgICAgICBERUJVRyAo KERFQlVHX0VSUk9SLCAiJWE6U29tZXRoaW5nIHdyb25nIG9uIFJlZGZpc2ggc2VydmljZQ0KPiBk aXNjb3ZlcnkgU3RhdHVzMT0leCwgU3RhdHVzMj0leC5cbiIsIF9fZnVuY19fLCBTdGF0dXMxLCBT dGF0dXMyKSk7DQo+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMxKSkgew0KPiArICAgICAg ICBpZiAoTmV3SW5zdGFuY2UpIHsNCj4gKyAgICAgICAgICBGcmVlUG9vbCAoKFZPSUQgKilJbnN0 YW5jZSk7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVh OlNvbWV0aGluZyB3cm9uZyBvbiBSZWRmaXNoIHNlcnZpY2UNCj4gKyBkaXNjb3ZlcnkgU3RhdHVz MT0lci5cbiIsIF9fZnVuY19fLCBTdGF0dXMxKSk7DQo+ICAgICAgICB9IGVsc2Ugew0KPiAgICAg ICAgICBpZiAoTmV3SW5zdGFuY2UpIHsNCj4gICAgICAgICAgICBJbnNlcnRUYWlsTGlzdCAoJm1S ZWRmaXNoRGlzY292ZXJMaXN0LCAmSW5zdGFuY2UtPkVudHJ5KTsgQEAgLTEzODcsMTMNCj4gKzE0 MDgsNiBAQCBSZWxlYXNlTmV4dDo7DQo+ICAgIH0NCj4gIH0NCj4NCj4gLUVGSV9SRURGSVNIX0RJ U0NPVkVSX1BST1RPQ09MICBtUmVkZmlzaERpc2NvdmVyID0gew0KPiAtICBSZWRmaXNoU2Vydmlj ZUdldE5ldHdvcmtJbnRlcmZhY2UsDQo+IC0gIFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNlcnZpY2Us DQo+IC0gIFJlZGZpc2hTZXJ2aWNlQWJvcnRBY3F1aXJlLA0KPiAtICBSZWRmaXNoU2VydmljZVJl bGVhc2VTZXJ2aWNlDQo+IC19Ow0KPiAtDQo+ICAvKioNCj4gICAgVGhpcyBmdW5jdGlvbiBjcmVh dGUgYW4NCj4gRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwg Zm9yIHRoZQ0KPiAgICBnaXZlbiBuZXR3b3JrIGludGVyZmFjZS4NCj4gQEAgLTE3MTMsMTIgKzE3 MjcsMjAgQEAgQnVpbGR1cE5ldHdvcmtJbnRlcmZhY2UgKA0KPg0KPiAgICAgICAgICAgIE5ld05l dHdvcmtJbnRlcmZhY2VJbnN0YWxsZWQgICAgICAgICAgICAgICAgICAgICAgID0gRkFMU0U7DQo+ ICAgICAgICAgICAgTmV0d29ya0ludGVyZmFjZS0+RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xI YW5kbGUgPSBOVUxMOw0KPiAtICAgICAgICAgIFN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZOZXR3b3JrSW50ZXJmYWNlLQ0KPiA+RWZpUmVkZmlzaERpc2NvdmVy UHJvdG9jb2xIYW5kbGUsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdFZmlSZWRmaXNoRGlzY292ZXJQcm90 b2NvbEd1aWQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX05BVElWRV9JTlRFUkZBQ0UsDQo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFZPSUQgKikmbVJlZGZpc2hEaXNjb3Zlcg0KPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ ICsNCj4gKyAgICAgICAgICBSZXN0RXhJbnN0YW5jZS0+U2lnbmF0dXJlID0NCj4gKyBFRklfUkVE RklTSF9ESVNDT1ZFUl9EQVRBX1NJR05BVFVSRTsNCj4gKw0KPiArICAgICAgICAgIFJlc3RFeElu c3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQcm90b2NvbC5HZXROZXR3b3JrSW50ZXJmYWNlTGlzdCA9 DQo+IFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0ludGVyZmFjZTsNCj4gKyAgICAgICAgICBSZXN0 RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJvdG9jb2wuQWNxdWlyZVJlZGZpc2hTZXJ2aWNl ID0NCj4gUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZTsNCj4gKyAgICAgICAgICBSZXN0RXhJ bnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJvdG9jb2wuQWJvcnRBY3F1aXJlUmVkZmlzaFNlcnZp Y2UNCj4gPSBSZWRmaXNoU2VydmljZUFib3J0QWNxdWlyZTsNCj4gKyAgICAgICAgICBSZXN0RXhJ bnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJvdG9jb2wuUmVsZWFzZVJlZGZpc2hTZXJ2aWNlDQo+ ICsgPSBSZWRmaXNoU2VydmljZVJlbGVhc2VTZXJ2aWNlOw0KPiArDQo+ICsgICAgICAgICAgU3Rh dHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAmTmV0d29ya0ludGVyZmFjZS0+RWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xI YW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERpc2NvdmVy UHJvdG9jb2xHdWlkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lO VEVSRkFDRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikmUmVzdEV4SW5z dGFuY2UtPlJlZGZpc2hEaXNjb3ZlclByb3RvY29sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiAgICAgICAg ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGYWlsIHRvIGluc3RhbGwNCj4gRUZJX1JF REZJU0hfRElTQ09WRVJfUFJPVE9DT0xcbiIsIF9fZnVuY19fKSk7DQo+ICAgICAgICAgICAgfQ0K PiBAQCAtMTgxNSw2ICsxODM3LDcgQEAgU3RvcFNlcnZpY2VPbk5ldHdvcmtJbnRlcmZhY2UgKA0K PiAgICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlz Y292ZXJQcm90b2NvbEhhbmRsZTsNCj4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19J TlRFUkZBQ0VfSU5URVJOQUwNCj4gKlRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiAgICBFRklfUkVE RklTSF9ESVNDT1ZFUl9SRVNUX0VYX0lOU1RBTkNFX0lOVEVSTkFMICAgKlJlc3RFeEluc3RhbmNl Ow0KPiArICBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAg KlJlZGZpc2hEaXNjb3ZlclByb3RvY29sOw0KPg0KPiAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCAoc2l6ZW9mIChnUmVxdWlyZWRQcm90b2NvbCkgLyBzaXplb2YNCj4gKFJFREZJU0hfRElTQ09W RVJfUkVRVUlSRURfUFJPVE9DT0wpKTsgSW5kZXgrKykgew0KPiAgICAgIFN0YXR1cyA9IGdCUy0+ SGFuZGxlUHJvdG9jb2wgKA0KPiBAQCAtMTg1NCwxMiArMTg3NywzMCBAQCBTdG9wU2VydmljZU9u TmV0d29ya0ludGVyZmFjZSAoDQo+ICAgICAgICAgICAgICAvLyBjbGllbnQgd2hpY2ggdXNlcyAu RUZJIFJlZGZpc2ggZGlzY292ZXIgcHJvdG9jb2wuDQo+ICAgICAgICAgICAgICAvLw0KPiAgICAg ICAgICAgICAgaWYgKERpc2NvdmVyUHJvdG9jb2xIYW5kbGUgIT0gTlVMTCkgew0KPiAtICAgICAg ICAgICAgICBnQlMtPkRpc2Nvbm5lY3RDb250cm9sbGVyIChEaXNjb3ZlclByb3RvY29sSGFuZGxl LCBOVUxMLCBOVUxMKTsNCj4gLSAgICAgICAgICAgICAgU3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxQ cm90b2NvbEludGVyZmFjZSAoDQo+ICsNCj4gKyAgICAgICAgICAgICAgU3RhdHVzID0gZ0JTLT5I YW5kbGVQcm90b2NvbCAoDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNjb3Zl clByb3RvY29sSGFuZGxlLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdFZmlS ZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoVk9JRCAqKSZtUmVkZmlzaERpc2NvdmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoVk9JRCAqKikgJlJlZGZpc2hEaXNjb3ZlclByb3RvY29sDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOw0KPiArICAgICAgICAgICAgICBpZiAoIUVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiArICAgICAgICAgICAgICAgIFJlc3RFeEluc3RhbmNlID0NCj4gRUZJX1JF REZJU0hfRElTT1ZFUl9EQVRBX0ZST01fRElTQ09WRVJfUFJPVE9DT0woUmVkZmlzaERpc2NvdmUN Cj4gclByb3RvY29sKTsNCj4gKyAgICAgICAgICAgICAgICAvLw0KPiArICAgICAgICAgICAgICAg IC8vIFN0b3AgUmVkZmlzaCBzZXJ2aWNlIGRpc2NvdmVyeS4NCj4gKyAgICAgICAgICAgICAgICAv Lw0KPiArICAgICAgICAgICAgICAgIFJlZGZpc2hEaXNjb3ZlclByb3RvY29sLT5BYm9ydEFjcXVp cmVSZWRmaXNoU2VydmljZSAoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2wsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4SW5zdGFuY2UtPk5ldHdvcmtJbnRlcmZhY2VJ bnN0YW5jZXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiArDQo+ICsNCj4gKyAgICAgICAgICAgICAgICBnQlMtPkRpc2Nvbm5lY3RDb250cm9sbGVy IChEaXNjb3ZlclByb3RvY29sSGFuZGxlLCBOVUxMLCBOVUxMKTsNCj4gKyAgICAgICAgICAgICAg ICBTdGF0dXMgPSBnQlMtPlVuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGlzY292ZXJQcm90b2NvbEhhbmRsZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1 aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWT0lEICopJlJlc3RFeElu c3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQcm90b2NvbA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiArICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAgICB9DQo+DQo+ ICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9S ZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVySW50ZXJuYWwuaA0KPiBiL1JlZGZpc2hQ a2cvUmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckludGVybmFsLmgNCj4gaW5kZXgg MjcwNGNkOS4uZGRiNWYyZSAxMDA2NDQNCj4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292 ZXJEeGUvUmVkZmlzaERpc2NvdmVySW50ZXJuYWwuaA0KPiArKysgYi9SZWRmaXNoUGtnL1JlZGZp c2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJJbnRlcm5hbC5oDQo+IEBAIC0xMTgsMTYgKzEx OCwzMCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICB9IEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdP UktfSU5URVJGQUNFX0lOVEVSTkFMOw0KPg0KPiAgLy8NCj4gKy8vIFJlZGZpc2ggRGlzY292ZXIg SW5zdGFuY2Ugc2lnbmF0dXJlDQo+ICsvLw0KPiArDQo+ICsjZGVmaW5lIEVGSV9SRURGSVNIX0RJ U0NPVkVSX0RBVEFfU0lHTkFUVVJFICAgU0lHTkFUVVJFXzMyICgnRScsDQo+ICdSJywgJ0QnLCAn RCcpDQo+ICsNCj4gKyNkZWZpbmUgRUZJX1JFREZJU0hfRElTT1ZFUl9EQVRBX0ZST01fRElTQ09W RVJfUFJPVE9DT0woYSkgXA0KPiArICBDUiAoYSwgRUZJX1JFREZJU0hfRElTQ09WRVJfUkVTVF9F WF9JTlNUQU5DRV9JTlRFUk5BTCwNCj4gK1JlZGZpc2hEaXNjb3ZlclByb3RvY29sLCBFRklfUkVE RklTSF9ESVNDT1ZFUl9EQVRBX1NJR05BVFVSRSkNCj4gKw0KPiArLy8NCj4gIC8vIEludGVybmFs IHN0cnVjdHVyZSB1c2VkIHRvIG1haW50YWluIFJFU1QgRVggcHJvcGVydGllcy4NCj4gIC8vDQo+ ICB0eXBlZGVmIHN0cnVjdCB7DQo+IC0gIExJU1RfRU5UUlkgICAgICAgICAgICAgIEVudHJ5OyAg ICAgICAgICAgICAgICAgICAgICAvLy88IExpbmsgbGlzdCBlbnRyeS4NCj4gLSAgRUZJX0hBTkRM RSAgICAgICAgICAgICAgT3BlbkRyaXZlckFnZW50SGFuZGxlOyAgICAgIC8vLzwgVGhlIGFnZW50 IHRvIG9wZW4NCj4gbmV0d29yayBwcm90b2NvbC4NCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgT3BlbkRyaXZlckNvbnRyb2xsZXJIYW5kbGU7IC8vLzwgVGhlIGNvbnRyb2xsZXIgaGFuZGxl DQo+IHRvIG9wZW4gbmV0d29yayBwcm90b2NvbC4NCj4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgUmVzdEV4Q2hpbGRIYW5kbGU7ICAgICAgICAgIC8vLzwgVGhlIGNoaWxkIGhhbmRsZSBjcmVh dGVkDQo+IHRocm91Z2ggUkVTVCBFWCBTZXJ2aWNlIFByb3RvY29sLg0KPiAtICBFRklfSEFORExF ICAgICAgICAgICAgICBSZXN0RXhDb250cm9sbGVySGFuZGxlOyAgICAgLy8vPCBUaGUgY29udHJv bGxlciBoYW5kbGUNCj4gd2hpY2ggcHJvdmlkZSBSRVNUIEVYIHByb3RvY29sLg0KPiAtICBFRklf UkVTVF9FWF9QUk9UT0NPTCAgICAqUmVzdEV4UHJvdG9jb2xJbnRlcmZhY2U7ICAgLy8vPCBQb2lu dGVyIHRvDQo+IEVGSV9SRVNUX0VYX1BST1RPQ09MLg0KPiAtICBVSU5UMzIgICAgICAgICAgICAg ICAgICBSZXN0RXhJZDsgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgaWRlbnRpZmllciBpbnN0 YWxsZWQgb24gUkVTVCBFWA0KPiBjb250cm9sbGVyIGhhbmRsZS4NCj4gKyAgTElTVF9FTlRSWSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudHJ5OyAgICAgICAgICAgICAgICAgICAgICAv Ly88IExpbmsgbGlzdCBlbnRyeS4NCj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNpZ25hdHVyZTsgICAgICAgICAgICAgICAgICAvLy88IEluc3RhbmNlIHNpZ25h dHVyZS4NCj4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5E cml2ZXJBZ2VudEhhbmRsZTsgICAgICAvLy88IFRoZSBhZ2VudCB0bw0KPiBvcGVuIG5ldHdvcmsg cHJvdG9jb2wuDQo+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP cGVuRHJpdmVyQ29udHJvbGxlckhhbmRsZTsgLy8vPCBUaGUNCj4gY29udHJvbGxlciBoYW5kbGUg dG8gb3BlbiBuZXR3b3JrIHByb3RvY29sLg0KPiArICBFRklfSEFORExFICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVzdEV4Q2hpbGRIYW5kbGU7ICAgICAgICAgIC8vLzwgVGhlIGNoaWxk IGhhbmRsZQ0KPiBjcmVhdGVkIHRocm91Z2ggUkVTVCBFWCBTZXJ2aWNlIFByb3RvY29sLg0KPiAr ICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4Q29udHJvbGxl ckhhbmRsZTsgICAgIC8vLzwgVGhlIGNvbnRyb2xsZXINCj4gaGFuZGxlIHdoaWNoIHByb3ZpZGUg UkVTVCBFWCBwcm90b2NvbC4NCj4gKyAgRUZJX1JFU1RfRVhfUFJPVE9DT0wgICAgICAgICAgICAg ICAgICAgICpSZXN0RXhQcm90b2NvbEludGVyZmFjZTsgICAvLy88IFBvaW50ZXINCj4gdG8gRUZJ X1JFU1RfRVhfUFJPVE9DT0wuDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZXN0RXhJZDsgICAgICAgICAgICAgICAgICAgLy8vPCBUaGUgaWRlbnRpZmllciBp bnN0YWxsZWQgb24NCj4gUkVTVCBFWCBjb250cm9sbGVyIGhhbmRsZS4NCj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlck9mTmV0d29ya0ludGVyZmFjZXM7 ICAvLy88IE51bWJlciBvZg0KPiBuZXR3b3JrIGludGVyZmFjZXMgY2FuIGRvIFJlZGZpc2ggc2Vy dmljZSBkaXNjb3ZlcnkuDQo+ICsgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJG QUNFDQo+ICpOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzOyAvLy88IE5ldHdvcmsgaW50ZXJmYWNl IGluc3RhbmNlcy4gSXQncyBhbiBhcnJheQ0KPiBvZiBpbnN0YW5jZXMuIFRoZSBudW1iZXIgb2Yg ZW50cmllcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgaW4gYXJyYXkgaXMgaW5kaWNhdGVkIGJ5DQo+ IE51bWJlck9mTmV0d29ya0ludGVyZmFjZXMuDQo+ICsgIEVGSV9SRURGSVNIX0RJU0NPVkVSX1BS T1RPQ09MICAgICAgICAgICBSZWRmaXNoRGlzY292ZXJQcm90b2NvbDsgICAgLy8vPA0KPiBFRklf UkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCBwcm90b2NvbC4NCj4gIH0gRUZJX1JFREZJU0hfRElT Q09WRVJfUkVTVF9FWF9JTlNUQU5DRV9JTlRFUk5BTDsNCj4NCj4gIC8qKg0KPiAtLQ0KPiAyLjYu MS53aW5kb3dzLjENCj4gLVRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBtZXNzYWdl IG1heSBiZSBjb25maWRlbnRpYWwgYW5kDQo+IHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1lZ2F0 cmVuZHMgKEFNSSkuIFRoaXMgY29tbXVuaWNhdGlvbiBpcyBpbnRlbmRlZA0KPiB0byBiZSByZWFk IG9ubHkgYnkgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20gaXQgaXMgYWRkcmVzc2Vk IG9yIGJ5IHRoZWlyDQo+IGRlc2lnbmVlLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBp cyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZQ0KPiBvbiBub3RpY2UgdGhhdCBh bnkgZGlzdHJpYnV0aW9uIG9mIHRoaXMgbWVzc2FnZSwgaW4gYW55IGZvcm0sIGlzIHN0cmljdGx5 DQo+IHByb2hpYml0ZWQuIFBsZWFzZSBwcm9tcHRseSBub3RpZnkgdGhlIHNlbmRlciBieSByZXBs eSBlLW1haWwgb3IgYnkNCj4gdGVsZXBob25lIGF0IDc3MC0yNDYtODYwMCwgYW5kIHRoZW4gZGVs ZXRlIG9yIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUNCj4gdHJhbnNtaXNzaW9uLg0KLVRoZSBp bmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBtZXNzYWdlIG1heSBiZSBjb25maWRlbnRpYWwg YW5kIHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1lZ2F0cmVuZHMgKEFNSSkuIFRoaXMgY29tbXVu aWNhdGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZWFkIG9ubHkgYnkgdGhlIGluZGl2aWR1YWwgb3Ig ZW50aXR5IHRvIHdob20gaXQgaXMgYWRkcmVzc2VkIG9yIGJ5IHRoZWlyIGRlc2lnbmVlLiBJZiB0 aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwg eW91IGFyZSBvbiBub3RpY2UgdGhhdCBhbnkgZGlzdHJpYnV0aW9uIG9mIHRoaXMgbWVzc2FnZSwg aW4gYW55IGZvcm0sIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIFBsZWFzZSBwcm9tcHRseSBub3Rp ZnkgdGhlIHNlbmRlciBieSByZXBseSBlLW1haWwgb3IgYnkgdGVsZXBob25lIGF0IDc3MC0yNDYt ODYwMCwgYW5kIHRoZW4gZGVsZXRlIG9yIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgdHJhbnNt aXNzaW9uLg0K