Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l72N1-00035r-AV for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Feb 2021 20:33:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l72N0-0003Nz-76 for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Feb 2021 20:33:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l72Mz-0003I7-Ez for pgsql-hackers@lists.postgresql.org; Tue, 02 Feb 2021 20:33:53 +0000 Received: from mail-bn7nam10on2079.outbound.protection.outlook.com ([40.107.92.79] helo=NAM10-BN7-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l72Mq-0004Ds-2M for pgsql-hackers@lists.postgresql.org; Tue, 02 Feb 2021 20:33:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ehhU50gzBFctg5qVVzcFgRc04/veizof0r6f95kpzTSf+J22THISI92K7/odnd5vRvj6AaNz/8iHOby7ldc35VvsXDxB/fUMnhtkyaDoKcg4vo/Ei1Q/wLycaVpCejyzNxZtHLyyzxpLtTmdUSzMboPfKj0OP8YUd6W1eVSnNyoLn+Kmqc+yIr6qrgt10f6MxN5wjsHdsSpz430d7F3TUKI9UxvKsuecf/dzBsQ7YMGyGSS76ykUaU4YP7OnMPu+EXkh7NvGrLzxMQcf2Z+0vJz773WG5DRTw7VrPLa9FCWhC9I2iS21PUiNePE+3lV3ScfZTfm6cFkLochlDGZaSw== 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-SenderADCheck; bh=7U3h+s3x5WkxAFRdUGoUDXwYLmY33yE6lRSQgfBOaxY=; b=N1JXaDKWnBK9/QKqFHUd/kYBYOdR8OzRxlBloa1wwbgKDTQpKkuFEDQ4RhtYo1ojwTNk1xKk6TIthuBUigbWum0ich8sEc5Nbp35x78f9GEQxtulYsOWLSPQRemgbTtaCcraaBfG9qG6jn1ajtzJHqN+HeRY1iDFEMQrzb/8Vd0DwrfyjI3GbMNqgLE5bXm8pkypmVfoPQMLYAp5Dynebqg29MYlEpoL3N2bD67OBXZco+ipfV5RESMEzsB8tLT0iPXoSkfOd9CGmfrheVNgCKcrugfWB07RejgnPhrQLPpchhe0JvbIFd9UysWXsAhLJztwQR2hdCqg2GVxrFF/uQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7U3h+s3x5WkxAFRdUGoUDXwYLmY33yE6lRSQgfBOaxY=; b=NfHK7h0ptLAKh3c7ACJdlsCCpp41LS1+gAJQ8w+5XXewrFPHVuTHi5o9xXaV6VplaOyWptxo25ByGnkNC5QywJlZHun3E3p0aKyUDaRl2aJVa8nc+czlf8np9xNPUqXmDBqNr1DAWTePht6PqDBHzJ/iGz9JhGbbp/Cq6vWsx8w= Received: from (2603:10b6:300:65::20) by CO6PR05MB7649.namprd05.prod.outlook.com (2603:10b6:5:347::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.8; Tue, 2 Feb 2021 20:33:35 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620%9]) with mapi id 15.20.3825.017; Tue, 2 Feb 2021 20:33:35 +0000 From: Jacob Champion To: "daniel@yesql.se" CC: "hlinnaka@iki.fi" , "pgsql-hackers@lists.postgresql.org" , "andrew.dunstan@2ndquadrant.com" , "michael@paquier.xyz" , "thomas.munro@gmail.com" , "andres@anarazel.de" , "sfrost@snowman.net" Subject: Re: Support for NSS as a libpq TLS backend Thread-Topic: Support for NSS as a libpq TLS backend Thread-Index: AQHWM1w61GrKUIsl6UCBcYrYNRBt46kJRsIAgAA+PQCAGQsiAIAEdGUAgAAqk4CAAbpsAIABgI0AgCnqVACAA5UBgIAAY+MAgBTX7ACAACGAAIASngCAgAAfeICABYLFgIAbyjgAgABy24CACw63gIAAAzWAgAwa5QCAA6HPgIAAKuGAgAYXDoCAACZBAIABTCSAgAALLgCAAcj/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToCAExoQAIAAROWAgAFJBgA= Date: Tue, 2 Feb 2021 20:33:35 +0000 Message-ID: References: <0E64F3CB-4731-4FA8-82D8-D8590086654C@vmware.com> <1B0B31E4-AD37-475C-9374-7E24AA808479@vmware.com> <5C27CF6F-5BD3-4639-AAA6-73465595B6DF@vmware.com> <7B5A88DF-863A-4B00-B841-0285C1FF70DF@yesql.se> <5F24348B-10BA-4AA1-999B-1E2AB22B4997@vmware.com> <94E22878-6289-43D5-A674-804F6CB23782@yesql.se> <8D7F95DB-8F8A-4300-BFDA-656FBAB30FE2@yesql.se> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: user-agent: Evolution 3.36.4-0ubuntu1 authentication-results: yesql.se; dkim=none (message not signed) header.d=none;yesql.se; dmarc=none action=none header.from=vmware.com; x-originating-ip: [50.39.198.229] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0668956f-bb16-4e41-cc71-08d8c7b9d0ab x-ms-traffictypediagnostic: CO6PR05MB7649: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: V/gJZgtQR4rRk0MLE8+RBwtiIMqaE7Xt5C5TuZ1nH1MLxtJYwPRgZlRWODrenR0/ZJPjvLG33Jldi2wrX+VHixCe4AzUPQwXTEW8kT/bG0YE/saKCecq5eZ2DyhQSYnQeHpeXYEyx8Utd/FDmHkbygaB45X7L13Ci20c7J683VeSmb40Sm5w1ONwwt/bqttWxrfQisbfskq9GalwKaAGA/+KwjEhwLQr9NLiUKaluB7c1S1E7k83MOX+zlPuBCIvREVepbMxCWkxFV2cq7N/oWPKMfrp92F3vWYgNvRLBrDCNrxqj1usSL/xNp4BkrW6X4TW7x6RlbW28//x6K/CfT1HUg4BTuOPL3ggiXVLKgdgOgGM+bk6Xtm/6rK5L/xjFEbrhQlv/mmY9BGJ1sLk+Vq+MgACjQP5rF5qkLvH2HjNprY4QCine7S40SpCkOUrdeqhMrOTNzhMQCyqKDyP8JN3aU6ZiGyGLyiUKlettFKQecP2q75+1sA03GmVGSJ4TxAx5GhwXlpodGckEGFgWA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(376002)(346002)(39860400002)(396003)(366004)(8936002)(8676002)(83380400001)(4326008)(6486002)(2906002)(6916009)(36756003)(76116006)(54906003)(66476007)(66576008)(66446008)(66556008)(66946007)(6506007)(86362001)(64756008)(71200400001)(5660300002)(316002)(478600001)(2616005)(6512007)(26005)(186003)(99936003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?VStpRXNQSzFFemxkQmNlSzM1a25uY05ha1pHVEtQK2NRVjlLNVQxNThOVVEv?= =?utf-8?B?dmQ0WlMvQ0dreVBZeWVVaWk0M2V6RHdWdFNVcDZQdFpHUmxZd3ZRYTdwSVND?= =?utf-8?B?RWNsbGdjSFJoWXJUQXY2Qjh6SlhkaUFuUFVubTlhYXh0aHpRQTlwYlVRaTB1?= =?utf-8?B?dVp4UmxkN0JNTFpxQTlucjVMd2hFdUlwV2FaS2pWVVF0M3BZVnd1ZkZPNTlQ?= =?utf-8?B?SHdiMElLTCtaUDlpWFVDNmRCTTJoR3FORWE3Rjh3amxyaU5wTXJESC9SRDJP?= =?utf-8?B?enpWVGMyVWxMMU5qM0pTM1RLMVBXdlVFNEw0eFM4cFBKblh5SzhkOXMzS3c0?= =?utf-8?B?eWFLMk1NMGJFZWIycmlwUUZaM3dQU0lGNG82cFZJYUV1cWpWdzZiMStObDZU?= =?utf-8?B?akVxVjhsejRFaUdPNFd5S3VUT3lyR0trZmlVQTc0aHB0Wk5UN2oyQ01qTnZ5?= =?utf-8?B?N2ZnYVJ2QWtTaTJlcUZxMDdId3lSeXNMbXY1RkE1VmdTaWhyRjliNzN0ck8z?= =?utf-8?B?OFJYRG5JNDROdVFmcE9VUWMrbmhsdDZVQ3JYdWVMd1RILzlJMzdqUzhZQTBX?= =?utf-8?B?ZG1uOXpVMmJvY2tYT3c3YVNwUUVyTlBZRDBnYUpPL2F2V0JwaTIzRFNvSThI?= =?utf-8?B?RXdiUDFudkxRRXQ4eUtZY2FmMFFYanR6SFZJQzZPa2VNalI3SjRBQ0xQRDky?= =?utf-8?B?bkw3Tm1tUXNXa0ZxK2hFMkpRS1NPd2RDQ2RabW9hVkxIOFRRSFhvRmU3ak5V?= =?utf-8?B?UjNFUzUzdnkwSHJIdlVnL3BBbjJ5UXY3R2xCQWdkMWZLSEVlb0psNmNySXpu?= =?utf-8?B?Q2Ftc1IyK004bDBzMnIyNTNiODN0MElpcVdkc256a0dTV0kweG9DaVQ1aUU0?= =?utf-8?B?K3V2SDloTGQyaG9TNUlUMkhUMUpjZjhRSHA0SVA3UnNRd3M3QXJEZTRNVjg1?= =?utf-8?B?alVGbFJ3ZXRPMjgxVzgwUlFVUFhrNWdqZW9yOGlGa1lwRHlvOGNFVlBwaW0z?= =?utf-8?B?alZMMFkrY0F4TEsxOHh2Y0dSYkxRSlc0RkdDeE5MSk1nT0tvclk0U1dOaklB?= =?utf-8?B?ZEREQlNkZm8vbTNmMXVLNElwS0lZUEdCYytkbW84VnczMFJIb29JaTRXVkgv?= =?utf-8?B?eitvSlJpbmZSZzd3d1ozcUZXc0UrWWRHaEV2NzVRTWtQUW50ZXNrYU53TmFt?= =?utf-8?B?a1FwUm9mT2tIbGVNdU1jYW02OTUxMXdZbVk4UTBnZE5xajJLZzlXS1YyQzU0?= =?utf-8?B?THBFT2paNGd1SzRtd0hwM0hDRzRBcVdxYzhSTUgySitrNXVYcjRHQ2pXZWJt?= =?utf-8?B?dk5vU1RaWFRnTDF0RnE1dmY0L0lKS0hkSVlYWENhcUpnSkdrRlRLcmN5THVw?= =?utf-8?B?VVhqTHR3c2lxc2JMbTN1RHUwYURESS95RXE2eGpVTEZ6L240Z3ByRUpzMHlj?= =?utf-8?B?OGExQ2lOd25tQ21DY3EwUzBTYzN2R0dTMGRWcm1RPT0=?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_" MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0668956f-bb16-4e41-cc71-08d8c7b9d0ab X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Feb 2021 20:33:35.5472 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6hM/1mzQe+sGjQ0D3JdkdoakKLy482x9tH/LtFm7ntby3nnAfxA7lgJxqwxrscGCXqlly65f6QVFXLDWJkIjJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR05MB7649 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/plain; charset="utf-8" Content-ID: <9AF61E914ACB1D42B7974124036D18DC@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 T24gVHVlLCAyMDIxLTAyLTAyIGF0IDAwOjU1ICswMDAwLCBKYWNvYiBDaGFtcGlvbiB3cm90ZToN Cj4gT24gTW9uLCAyMDIxLTAyLTAxIGF0IDIxOjQ5ICswMTAwLCBEYW5pZWwgR3VzdGFmc3NvbiB3 cm90ZToNCj4gPiA+IEVtYmVkZGVkIE5VTExzIGFyZSBub3cgaGFuZGxlZCBpbiBhIHNpbWlsYXIg bWFubmVyIHRvIHRoZSBPcGVuU1NMIHNpZGUsDQo+ID4gPiB0aG91Z2ggYmVjYXVzZSB0aGlzIGZh aWx1cmUgaGFwcGVucyBkdXJpbmcgdGhlIGNlcnRpZmljYXRlDQo+ID4gPiBhdXRoZW50aWNhdGlv biBjYWxsYmFjaywgaXQgcmVzdWx0cyBpbiBhIFRMUyBhbGVydCByYXRoZXIgdGhhbiBzaW1wbHkN Cj4gPiA+IGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24uDQo+ID4gDQo+ID4gQnV0IHJldHVybmluZyBT RUNGYWlsdXJlIGZyb20gdGhlIGNlcnQgY2FsbGJhY2sgZm9yY2UgTlNTIHRvIHRlcm1pbmF0ZSB0 aGUNCj4gPiBjb25uZWN0aW9uIGltbWVkaWF0ZWx5IGRvZXNuJ3QgaXQ/DQo+IA0KPiBJSVJDIE5T UyB3aWxsIHNlbmQgdGhlIGFsZXJ0IGZpcnN0LCB3aGVyZWFzIG91ciBPcGVuU1NMIGltcGxlbWVu dGF0aW9uDQo+IHdpbGwgY29tcGxldGUgdGhlIGhhbmRzaGFrZSBhbmQgdGhlbiBkcm9wIHRoZSBj b25uZWN0aW9uLiBJJ2xsIHJlYnVpbGQNCj4gd2l0aCB0aGUgbGF0ZXN0IGFuZCBjb25maXJtLg0K DQpJIHdhc24ndCBhYmxlIHRvIHJlcHJvZHVjZSB0aGUgYmVoYXZpb3IgSSB0aG91Z2h0IEkgc2F3 IGJlZm9yZS4gSW4gYW55DQpjYXNlIEkgdGhpbmsgdGhlIGN1cnJlbnQgTlNTIGltcGxlbWVudGF0 aW9uIGZvciBlbWJlZGRlZCBOVUxMcyB3aWxsDQp3b3JrIGNvcnJlY3RseS4NCg0KPiA+IEF0dGFj aGVkIGlzIGEgdjI0IHdoaWNoIGlzDQo+ID4gcmViYXNlZCBvbiB0b3Agb2YgdG9kYXlzIC0td2l0 aC1zc2wgY29tbWl0LCBhbmQgbm93IGluY2x1ZGVzIHlvdXIgY2hhbmdlcy4NCg0KSSBoYXZlIGEg djI1IGF0dGFjaGVkIHdoaWNoIGZpeGVzIGFuZCByZS1lbmFibGVzIHRoZSBza2lwcGVkL3RvZG8n ZA0KY2xpZW50IGNlcnRpZmljYXRlIGFuZCBTQ1JBTSB0ZXN0cy4gKENoYW5nZXMgYmV0d2VlbiB2 MjQgYW5kIHYyNSBhcmUgaW4NCnNpbmNlLXYyNC5kaWZmLikgVGhlIHNlcnZlci1jbi1vbmx5IGRh dGFiYXNlIGRpZG4ndCBoYXZlIHRoZSByb290IENBDQppbnN0YWxsZWQgdG8gYmUgYWJsZSB0byB2 ZXJpZnkgY2xpZW50IGNlcnRpZmljYXRlcywgc28gSSd2ZSBhZGRlZCBpdC4NCg0KTm90ZSB0aGF0 IHRoaXMgY2hhbmdlcyB0aGUgZXJyb3IgbWVzc2FnZSBwcmludGVkIGR1cmluZyB0aGUgaW52YWxp ZC0NCnJvb3QgdGVzdHMsIGJlY2F1c2UgTlNTIGlzIG5vdyBzZW5kaW5nIHRoZSByb290IG9mIHRo ZSBjaGFpbi4gU28gdGhlDQpzZXJ2ZXIncyBpc3N1ZXIgaXMgY29uc2lkZXJlZCB1bnRydXN0ZWQg cmF0aGVyIHRoYW4gdW5yZWNvZ25pemVkLg0KDQotLUphY29iDQo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="since-v24.diff" Content-Description: since-v24.diff Content-Disposition: attachment; filename="since-v24.diff"; size=6311; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <9E11F844E79168498D5AE22769F862B5@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 Y29tbWl0IDA5M2JiOTM3NzM2Y2RmYzg3MWQ4ZmQ0Nzk3NDhmOTNmMTgxMDhhZTAKQXV0aG9yOiBK YWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+CkRhdGU6ICAgRnJpIEphbiAyOSAw OTozMjoyNyAyMDIxIC0wODAwCgogICAgdGVzdC9zc2w6IGZpeCBmaW5hbCBUT0RPcyBhbmQgU0tJ UHMKICAgIAogICAgVGhlIHNlcnZlci1jbi1vbmx5IGRhdGFiYXNlIGRpZG4ndCBoYXZlIHRoZSBy b290IENBIGluc3RhbGxlZCB0byBiZSBhYmxlCiAgICB0byB2ZXJpZnkgY2xpZW50IGNlcnRpZmlj YXRlcy4gTm90ZSB0aGF0IHRoaXMgY2hhbmdlcyB0aGUgZXJyb3IgbWVzc2FnZQogICAgcHJpbnRl ZCBkdXJpbmcgdGhlIGludmFsaWQtcm9vdCB0ZXN0cywgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5v dyBzZW5kaW5nCiAgICB0aGUgcm9vdCBvZiB0aGUgY2hhaW4gKHNvIHRoZSBpc3N1ZXIgaXMgdW50 cnVzdGVkIHJhdGhlciB0aGFuCiAgICB1bnJlY29nbml6ZWQpLgoKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3NzbC9NYWtlZmlsZSBiL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQppbmRleCBkMjc1Yzg5Njcy Li5jODAzMmEyYzEzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKKysrIGIvc3Jj L3Rlc3Qvc3NsL01ha2VmaWxlCkBAIC0xNDcsNiArMTQ3LDcgQEAgc3NsL25zcy9zZXJ2ZXItY24t b25seS5jcnRfX3NlcnZlci1jbi1vbmx5LmtleS5kYjogc3NsL3NlcnZlci1jbi1vbmx5LmNydCBz c2wvc2UKIAljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBhc3N3b3JkCiAJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3NlcnZlci1jbi1vbmx5LmNydCAtaSBzc2wvc2VydmVy LWNuLW9ubHkuY3J0IC10ICJDVCxDLEMiCiAJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc2Vy dmVyX2NhLmNydCAtaSBzc2wvc2VydmVyX2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1k ICJzcWw6JEAiIC1BIC1uIHJvb3RfY2EuY3J0IC1pIHNzbC9yb290X2NhLmNydCAtdCAiQ1QsQyxD IgogCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNzL3NlcnZlci1jbi1vbmx5LnBm eCAtaW5rZXkgc3NsL3NlcnZlci1jbi1vbmx5LmtleSAtaW4gc3NsL3NlcnZlci1jbi1vbmx5LmNy dCAtY2VydGZpbGUgc3NsL3NlcnZlcl9jYS5jcnQgLXBhc3NvdXQgcGFzczoKIAlwazEydXRpbCAt aSBzc2wvbnNzL3NlcnZlci1jbi1vbmx5LnBmeCAtZCAic3FsOiRAIiAtVyAnJwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwgYi9zcmMvdGVzdC9zc2wvdC8wMDFf c3NsdGVzdHMucGwKaW5kZXggNmI4YmNhMjg0Ni4uNWE4M2ExZDI3NyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsCisrKyBiL3NyYy90ZXN0L3NzbC90LzAwMV9zc2x0 ZXN0cy5wbApAQCAtMTU5LDEyICsxNTksMTIgQEAgdGVzdF9jb25uZWN0X29rKAogdGVzdF9jb25u ZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKIAkic3Nscm9vdGNlcnQ9aW52YWxpZCBzc2xt b2RlPXZlcmlmeS1jYSIsCi0JcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2Vz IG5vdCBleGlzdHxQZWVyJ3MgQ2VydGlmaWNhdGUgaXNzdWVyIGlzIG5vdCByZWNvZ25pemVkLywK Kwlxci9yb290IGNlcnRpZmljYXRlIGZpbGUgImludmFsaWQiIGRvZXMgbm90IGV4aXN0fFBlZXIn cyBjZXJ0aWZpY2F0ZSBpc3N1ZXIgaGFzIGJlZW4gbWFya2VkIGFzIG5vdCB0cnVzdGVkIGJ5IHRo ZSB1c2VyLywKIAkiY29ubmVjdCB3aXRob3V0IHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12ZXJp ZnktY2EiKTsKIHRlc3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJInNzbHJv b3RjZXJ0PWludmFsaWQgc3NsbW9kZT12ZXJpZnktZnVsbCIsCi0JcXIvcm9vdCBjZXJ0aWZpY2F0 ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdHxQZWVyJ3MgQ2VydGlmaWNhdGUgaXNzdWVy IGlzIG5vdCByZWNvZ25pemVkLywKKwlxci9yb290IGNlcnRpZmljYXRlIGZpbGUgImludmFsaWQi IGRvZXMgbm90IGV4aXN0fFBlZXIncyBjZXJ0aWZpY2F0ZSBpc3N1ZXIgaGFzIGJlZW4gbWFya2Vk IGFzIG5vdCB0cnVzdGVkIGJ5IHRoZSB1c2VyLywKIAkiY29ubmVjdCB3aXRob3V0IHNlcnZlciBy b290IGNlcnQgc3NsbW9kZT12ZXJpZnktZnVsbCIpOwogCiAjIFRyeSB3aXRoIHdyb25nIHJvb3Qg Y2VydCwgc2hvdWxkIGZhaWwuIChXZSdyZSB1c2luZyB0aGUgY2xpZW50IENBIGFzIHRoZQpAQCAt NjA0LDE0ICs2MDQsMTAgQEAgc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9u bHknLCAncm9vdF9jYScpOwogJGNvbW1vbl9jb25uc3RyID0KICAgInVzZXI9c3NsdGVzdHVzZXIg ZGJuYW1lPWNlcnRkYiBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IHNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIGNlcnRfZGF0YWJhc2U9 c3NsL25zcy9jbGllbnQrY2xpZW50X2NhLmNydF9fY2xpZW50LmtleS5kYiI7CiAKLVRPRE86Ci17 Ci0JbG9jYWwgJFRPRE8gPSAiV0lQIGZhaWx1cmUgY2F1c2UgY3VycmVudGx5IHVua25vd24iOwot CXRlc3RfY29ubmVjdF9vaygKLQkJJGNvbW1vbl9jb25uc3RyLAotCQkic3NsbW9kZT1yZXF1aXJl IHNzbGNlcnQ9c3NsL2NsaWVudCtjbGllbnRfY2EuY3J0IiwKLQkJImludGVybWVkaWF0ZSBjbGll bnQgY2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgYnkgY2xpZW50Iik7Ci19Cit0ZXN0X2Nvbm5lY3Rf b2soCisJJGNvbW1vbl9jb25uc3RyLAorCSJzc2xtb2RlPXJlcXVpcmUgc3NsY2VydD1zc2wvY2xp ZW50K2NsaWVudF9jYS5jcnQiLAorCSJpbnRlcm1lZGlhdGUgY2xpZW50IGNlcnRpZmljYXRlIGlz IHByb3ZpZGVkIGJ5IGNsaWVudCIpOwogCiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9j b25uc3RyLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsIGIvc3JjL3Rl c3Qvc3NsL3QvMDAyX3NjcmFtLnBsCmluZGV4IDRkNzg3NGQ0MjAuLjQzNTY1YmRmNmUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3NzbC90LzAwMl9zY3JhbS5wbAorKysgYi9zcmMvdGVzdC9zc2wvdC8w MDJfc2NyYW0ucGwKQEAgLTI5LDcgKzI5LDggQEAgaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICdvcGVu c3NsJykKIGVsc2lmICgkRU5We3dpdGhfc3NsfSBlcSAnbnNzJykKIHsKIAkkbnNzID0gMTsKLQlw bGFuIHRlc3RzID0+IDg7CisJJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50ID0gMTsKKwlw bGFuIHRlc3RzID0+IDk7CiB9CiBlbHNlCiB7CkBAIC03OSwyNCArODAsMjAgQEAgdGVzdF9jb25u ZWN0X29rKAogCSJ1c2VyPXNzbHRlc3R1c2VyIGNoYW5uZWxfYmluZGluZz1kaXNhYmxlIiwKIAki U0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxfYmluZGluZz1kaXNhYmxlIik7CiAKLVNLSVA6Citp ZiAoJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50KQogewotCXNraXAgIk5TUyBzdXBwb3J0 IGZvciBUTFMgc2VydmVyIGVuZHBvaW5nIGlzIG5vdCBpbXBsZW1lbnRlZCIsIDEgaWYgKCRuc3Mp OwotCWlmICgkc3VwcG9ydHNfdGxzX3NlcnZlcl9lbmRfcG9pbnQpCi0JewotCQl0ZXN0X2Nvbm5l Y3Rfb2soCi0JCQkkY29tbW9uX2Nvbm5zdHIsCi0JCQkidXNlcj1zc2x0ZXN0dXNlciBjaGFubmVs X2JpbmRpbmc9cmVxdWlyZSIsCi0JCQkiU0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxfYmluZGlu Zz1yZXF1aXJlIik7Ci0JfQotCWVsc2UKLQl7Ci0JCXRlc3RfY29ubmVjdF9mYWlscygKLQkJCSRj b21tb25fY29ubnN0ciwKLQkJCSJ1c2VyPXNzbHRlc3R1c2VyIGNoYW5uZWxfYmluZGluZz1yZXF1 aXJlIiwKLQkJCXFyL2NoYW5uZWwgYmluZGluZyBpcyByZXF1aXJlZCwgYnV0IHNlcnZlciBkaWQg bm90IG9mZmVyIGFuIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0aGF0IHN1cHBvcnRzIGNoYW5uZWwg YmluZGluZy8sCi0JCQkiU0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxfYmluZGluZz1yZXF1aXJl Iik7Ci0JfQorCXRlc3RfY29ubmVjdF9vaygKKwkJJGNvbW1vbl9jb25uc3RyLAorCQkidXNlcj1z c2x0ZXN0dXNlciBjaGFubmVsX2JpbmRpbmc9cmVxdWlyZSIsCisJCSJTQ1JBTSB3aXRoIFNTTCBh bmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKK30KK2Vsc2UKK3sKKwl0ZXN0X2Nvbm5lY3Rf ZmFpbHMoCisJCSRjb21tb25fY29ubnN0ciwKKwkJInVzZXI9c3NsdGVzdHVzZXIgY2hhbm5lbF9i aW5kaW5nPXJlcXVpcmUiLAorCQlxci9jaGFubmVsIGJpbmRpbmcgaXMgcmVxdWlyZWQsIGJ1dCBz ZXJ2ZXIgZGlkIG5vdCBvZmZlciBhbiBhdXRoZW50aWNhdGlvbiBtZXRob2QgdGhhdCBzdXBwb3J0 cyBjaGFubmVsIGJpbmRpbmcvLAorCQkiU0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxfYmluZGlu Zz1yZXF1aXJlIik7CiB9CiAKICMgTm93IHRlc3Qgd2hlbiB0aGUgdXNlciBoYXMgYW4gTUQ1LWVu Y3J5cHRlZCBwYXNzd29yZDsgc2hvdWxkIGZhaWwKQEAgLTEwNiwyMSArMTAzLDE3IEBAIHRlc3Rf Y29ubmVjdF9mYWlscygKIAlxci9jaGFubmVsIGJpbmRpbmcgcmVxdWlyZWQgYnV0IG5vdCBzdXBw b3J0ZWQgYnkgc2VydmVyJ3MgYXV0aGVudGljYXRpb24gcmVxdWVzdC8sCiAJIk1ENSB3aXRoIFNT TCBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKIAotU0tJUDoKLXsKLQlza2lwICJOU1Mg c3VwcG9ydCBub3QgaW1wbGVtZW50ZWQgeWV0IiwgMSBpZiAoJG5zcyk7Ci0JIyBOb3cgdGVzdCB3 aXRoIGF1dGggbWV0aG9kICdjZXJ0JyBieSBjb25uZWN0aW5nIHRvICdjZXJ0ZGInLiBTaG91bGQg ZmFpbCwKLQkjIGJlY2F1c2UgY2hhbm5lbCBiaW5kaW5nIGlzIG5vdCBwZXJmb3JtZWQuICBOb3Rl IHRoYXQgc3NsL2NsaWVudC5rZXkgbWF5Ci0JIyBiZSB1c2VkIGluIGEgZGlmZmVyZW50IHRlc3Qs IHNvIHRoZSBuYW1lIG9mIHRoaXMgdGVtcG9yYXJ5IGNsaWVudCBrZXkKLQkjIGlzIGNob3NlbiBo ZXJlIHRvIGJlIHVuaXF1ZS4KLQlteSAkY2xpZW50X3RtcF9rZXkgPSAic3NsL2NsaWVudF9zY3Jh bV90bXAua2V5IjsKLQljb3B5KCJzc2wvY2xpZW50LmtleSIsICRjbGllbnRfdG1wX2tleSk7Ci0J Y2htb2QgMDYwMCwgJGNsaWVudF90bXBfa2V5OwotCXRlc3RfY29ubmVjdF9mYWlscygKLQkJInNz bGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2VydD1p bnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiIsCi0JCSJkYm5hbWU9Y2VydGRiIHVzZXI9 c3NsdGVzdHVzZXIgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiLAotCQlxci9jaGFubmVsIGJpbmRp bmcgcmVxdWlyZWQsIGJ1dCBzZXJ2ZXIgYXV0aGVudGljYXRlZCBjbGllbnQgd2l0aG91dCBjaGFu bmVsIGJpbmRpbmcvLAotCQkiQ2VydCBhdXRoZW50aWNhdGlvbiBhbmQgY2hhbm5lbF9iaW5kaW5n PXJlcXVpcmUiKTsKLQkjIGNsZWFuIHVwCi0JdW5saW5rKCRjbGllbnRfdG1wX2tleSk7Ci19Cisj IE5vdyB0ZXN0IHdpdGggYXV0aCBtZXRob2QgJ2NlcnQnIGJ5IGNvbm5lY3RpbmcgdG8gJ2NlcnRk YicuIFNob3VsZCBmYWlsLAorIyBiZWNhdXNlIGNoYW5uZWwgYmluZGluZyBpcyBub3QgcGVyZm9y bWVkLiAgTm90ZSB0aGF0IHNzbC9jbGllbnQua2V5IG1heQorIyBiZSB1c2VkIGluIGEgZGlmZmVy ZW50IHRlc3QsIHNvIHRoZSBuYW1lIG9mIHRoaXMgdGVtcG9yYXJ5IGNsaWVudCBrZXkKKyMgaXMg Y2hvc2VuIGhlcmUgdG8gYmUgdW5pcXVlLgorbXkgJGNsaWVudF90bXBfa2V5ID0gInNzbC9jbGll bnRfc2NyYW1fdG1wLmtleSI7Citjb3B5KCJzc2wvY2xpZW50LmtleSIsICRjbGllbnRfdG1wX2tl eSk7CitjaG1vZCAwNjAwLCAkY2xpZW50X3RtcF9rZXk7Cit0ZXN0X2Nvbm5lY3RfZmFpbHMoCisJ InNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2Vy dD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mv Y2xpZW50LmNydF9fY2xpZW50LmtleS5kYiIsCisJImRibmFtZT1jZXJ0ZGIgdXNlcj1zc2x0ZXN0 dXNlciBjaGFubmVsX2JpbmRpbmc9cmVxdWlyZSIsCisJcXIvY2hhbm5lbCBiaW5kaW5nIHJlcXVp cmVkLCBidXQgc2VydmVyIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHdpdGhvdXQgY2hhbm5lbCBiaW5k aW5nLywKKwkiQ2VydCBhdXRoZW50aWNhdGlvbiBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUi KTsKKyMgY2xlYW4gdXAKK3VubGluaygkY2xpZW50X3RtcF9rZXkpOwo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0001-NSS-Frontend-Backend-and-build-infrastructure.patch" Content-Description: v25-0001-NSS-Frontend-Backend-and-build-infrastructure.patch Content-Disposition: attachment; filename="v25-0001-NSS-Frontend-Backend-and-build-infrastructure.patch"; size=111276; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAwYzAwYzBiYTNhNDE5N2VkZGI3OTQzYzEwOTg3MzIzODQ5MTJkNmNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjE4OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg MS82XSBOU1MgRnJvbnRlbmQsIEJhY2tlbmQgYW5kIGJ1aWxkIGluZnJhc3RydWN0dXJlCgpUT0RP OgoJKiBTQ1JBTSBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQgYnV0IGRvZXNuJ3Qgd29y awoJKiBGcm9udGVuZCBDUkwgY29uZmlndXJhdGlvbiBoYW5kbGluZwoJKiBTZXR0bGUgb24gYSBy ZXF1aXJlZCB2ZXJzaW9uIGluIGF1dG9jb25mCgkqIE1vdmUgcGdfbnNzLmggdG8gYSAuYyBmaWxl IGZvciBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kCgpEYW5pZWwgR3VzdGFmc3NvbiwgQW5kcmV3 IER1bnN0YW4sIEphY29iIENoYW1waW9uCi0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDI5NCArKystCiBjb25maWd1cmUuYWMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICstCiAuLi4vcG9zdGdyZXNfZmR3L2V4cGVjdGVk L3Bvc3RncmVzX2Zkdy5vdXQgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9saWJwcS9NYWtlZmls ZSAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL2xpYnBxL2F1dGguYyAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKwogc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJl LW5zcy5jICAgICAgICAgICAgIHwgMTQwMiArKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQv bGlicHEvYmUtc2VjdXJlLmMgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9s aWJwcS9oYmEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgIDIwICstCiBzcmMvY29tbW9uL01h a2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL2Nv bW1vbi9wZ19uc3MuaCAgICAgICAgICAgICAgICAgICB8ICAxNzUgKysKIHNyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLWJlLmggICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KIHNyYy9pbmNsdWRlL2xp YnBxL2xpYnBxLmggICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1ZGUvcGdf Y29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS9wZ19j b25maWdfbWFudWFsLmggICAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtc2VjdXJlLW5zcy5jICAgICAgICAgIHwgMTExMiArKysrKysrKysrKysrCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oICAgICAgICAgICAgICAgfCAgIDEzICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCAgICAgICAgICAgICAgfCAgIDIwICstCiBzcmMvdG9v bHMvbXN2Yy9Na3ZjYnVpbGQucG0gICAgICAgICAgICAgICAgICAgfCAgIDIyICstCiBzcmMvdG9v bHMvbXN2Yy9Tb2x1dGlvbi5wbSAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsKIDIzIGZpbGVz IGNoYW5nZWQsIDMxNTAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW5zcy5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2luY2x1ZGUvY29tbW9uL3BnX25zcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJl IGIvY29uZmlndXJlCmluZGV4IGNlOWVhMzY5OTkuLjE0MzcyNmM3OWMgMTAwNzU1Ci0tLSBhL2Nv bmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTY1NCw2ICs2NTQsOCBAQCBVVUlEX0xJQlMKIExE QVBfTElCU19CRQogTERBUF9MSUJTX0ZFCiB3aXRoX3NzbAorTlNQUl9DT05GSUcKK05TU19DT05G SUcKIFBUSFJFQURfQ0ZMQUdTCiBQVEhSRUFEX0xJQlMKIFBUSFJFQURfQ0MKQEAgLTE1NzAsNyAr MTU3Miw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICB1 c2Ugc3lzdGVtIHRpbWUgem9uZSBkYXRhIGluIERJUgogICAtLXdpdGhvdXQtemxpYiAgICAgICAg ICBkbyBub3QgdXNlIFpsaWIKICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBD IGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotICAtLXdpdGgtc3NsPUxJQiAgICAg ICAgICB1c2UgTElCIGZvciBTU0wvVExTIHN1cHBvcnQgKG9wZW5zc2wpCisgIC0td2l0aC1zc2w9 TElCICAgICAgICAgIHVzZSBMSUIgZm9yIFNTTC9UTFMgc3VwcG9ydCAob3BlbnNzbCwgbnNzKQog ICAtLXdpdGgtb3BlbnNzbCAgICAgICAgICBvYnNvbGV0ZSBzcGVsbGluZyBvZiAtLXdpdGgtc3Ns PW9wZW5zc2wKIAogU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CkBAIC0x MjQ2Miw4ICsxMjQ2NCwyNzQgQEAgZG9uZQogCiAkYXNfZWNobyAiI2RlZmluZSBVU0VfT1BFTlNT TCAxIiA+PmNvbmZkZWZzLmgKIAorZWxpZiB0ZXN0ICIkd2l0aF9zc2wiID0gbnNzIDsgdGhlbgor ICAjIFRPRE86IGZhbGxiYWNrIGluIGNhc2UgbnNzLWNvbmZpZy9uc3ByLWNvbmZpZyBhcmVuJ3Qg Zm91bmQuCisgIGlmIHRlc3QgLXogIiROU1NfQ09ORklHIjsgdGhlbgorICBmb3IgYWNfcHJvZyBp biBuc3MtY29uZmlnCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9n Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNf cHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRh Y193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfTlNTX0NPTkZJRys6fSBmYWxzZTsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJE5TU19D T05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfTlNTX0NPTkZJRz0i JE5TU19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRo LgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitm b3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRh c19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh YmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX05TU19DT05GSUc9IiRhc19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAg YnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2Vz YWMKK2ZpCitOU1NfQ09ORklHPSRhY19jdl9wYXRoX05TU19DT05GSUcKK2lmIHRlc3QgLW4gIiRO U1NfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJE5TU19DT05GSUciID4mNQorJGFzX2VjaG8gIiROU1NfQ09ORklHIiA+JjY7 IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJE5T U19DT05GSUciICYmIGJyZWFrCitkb25lCisKK2Vsc2UKKyAgIyBSZXBvcnQgdGhlIHZhbHVlIG9m IE5TU19DT05GSUcgaW4gY29uZmlndXJlJ3Mgb3V0cHV0IGluIGFsbCBjYXNlcy4KKyAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgTlNTX0NPTkZJ RyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTlNTX0NPTkZJRy4uLiAiID4mNjsgfQor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE5TU19D T05GSUciID4mNQorJGFzX2VjaG8gIiROU1NfQ09ORklHIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVz dCAteiAiJE5TUFJfQ09ORklHIjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBuc3ByLWNvbmZpZwor ZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBi ZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9 JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQoraWYgJHthY19jdl9wYXRoX05TUFJfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFz X2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkTlNQUl9DT05GSUcgaW4KKyAg W1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfTlNQUl9DT05GSUc9IiROU1BSX0NPTkZJ RyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7Cisg ICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIg aW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYg YXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5z aW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4 ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfTlNQUl9DT05GSUc9IiRhc19kaXIvJGFjX3dv cmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgor ICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitO U1BSX0NPTkZJRz0kYWNfY3ZfcGF0aF9OU1BSX0NPTkZJRworaWYgdGVzdCAtbiAiJE5TUFJfQ09O RklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJE5TUFJfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTlNQUl9DT05GSUciID4mNjsgfQor ZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog bm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkTlNQUl9D T05GSUciICYmIGJyZWFrCitkb25lCisKK2Vsc2UKKyAgIyBSZXBvcnQgdGhlIHZhbHVlIG9mIE5T UFJfQ09ORklHIGluIGNvbmZpZ3VyZSdzIG91dHB1dCBpbiBhbGwgY2FzZXMuCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE5TUFJfQ09ORklH IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBOU1BSX0NPTkZJRy4uLiAiID4mNjsgfQor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE5TUFJf Q09ORklHIiA+JjUKKyRhc19lY2hvICIkTlNQUl9DT05GSUciID4mNjsgfQorZmkKKworICBpZiB0 ZXN0IC1uICIkTlNTX0NPTkZJRyI7IHRoZW4KKyAgICBOU1NfTElCUz1gJE5TU19DT05GSUcgLS1s aWJzYAorCU5TU19DRkxBR1M9YCROU1NfQ09ORklHIC0tY2ZsYWdzYAorICBmaQorICBpZiB0ZXN0 IC1uICIkTlNQUl9DT05GSUciOyB0aGVuCisJTlNQUl9MSUJTPWAkTlNQUl9DT05GSUcgLS1saWJz YAorCU5TUFJfQ0ZMQUdTPWAkTlNQUl9DT05GSUcgLS1jZmxhZ3NgCisgIGZpCisKKyAgTERGTEFH Uz0iJExERkxBR1MgJE5TU19MSUJTICROU1BSX0xJQlMiCisgIENGTEFHUz0iJENGTEFHUyAkTlNT X0NGTEFHUyAkTlNQUl9DRkxBR1MiCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgTlNTX0luaXRDb250ZXh0IGluIC1sbnNzMyIgPiY1Cisk YXNfZWNob19uICJjaGVja2luZyBmb3IgTlNTX0luaXRDb250ZXh0IGluIC1sbnNzMy4uLiAiID4m NjsgfQoraWYgJHthY19jdl9saWJfbnNzM19OU1NfSW5pdENvbnRleHQrOn0gZmFsc2U7IHRoZW4g OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2 ZV9MSUJTPSRMSUJTCitMSUJTPSItbG5zczMgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVy cmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVz ZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwor ICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFw cGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIE5T U19Jbml0Q29udGV4dCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIE5TU19Jbml0Q29udGV4 dCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAi JExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfbnNzM19OU1NfSW5pdENvbnRleHQ9eWVzCitl bHNlCisgIGFjX2N2X2xpYl9uc3MzX05TU19Jbml0Q29udGV4dD1ubworZmkKK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4 dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJf bnNzM19OU1NfSW5pdENvbnRleHQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfbnNzM19OU1Nf SW5pdENvbnRleHQiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfbnNzM19OU1NfSW5pdENv bnRleHQiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZp bmUgSEFWRV9MSUJOU1MzIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sbnNzMyAkTElCUyIKKworZWxz ZQorICBhc19mbl9lcnJvciAkPyAibGlicmFyeSAnbnNzMycgaXMgcmVxdWlyZWQgZm9yIE5TUyIg IiRMSU5FTk8iIDUKK2ZpCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgUFJfR2V0RGVmYXVsdElPTWV0aG9kcyBpbiAtbG5zcHI0IiA+JjUK KyRhc19lY2hvX24gImNoZWNraW5nIGZvciBQUl9HZXREZWZhdWx0SU9NZXRob2RzIGluIC1sbnNw cjQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX25zcHI0X1BSX0dldERlZmF1bHRJT01ldGhv ZHMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQor ICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG5zcHI0ICAkTElCUyIKK2Nh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv aWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3Rv dHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi QyIKKyNlbmRpZgorY2hhciBQUl9HZXREZWZhdWx0SU9NZXRob2RzICgpOworaW50CittYWluICgp Cit7CityZXR1cm4gUFJfR2V0RGVmYXVsdElPTWV0aG9kcyAoKTsKKyAgOworICByZXR1cm4gMDsK K30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19j dl9saWJfbnNwcjRfUFJfR2V0RGVmYXVsdElPTWV0aG9kcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGli X25zcHI0X1BSX0dldERlZmF1bHRJT01ldGhvZHM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRl c3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX25zcHI0X1BS X0dldERlZmF1bHRJT01ldGhvZHMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfbnNwcjRfUFJf R2V0RGVmYXVsdElPTWV0aG9kcyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9uc3ByNF9Q Ul9HZXREZWZhdWx0SU9NZXRob2RzIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5o IDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCTlNQUjQgMQorX0FDRU9GCisKKyAgTElCUz0iLWxu c3ByNCAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAibGlicmFyeSAnbnNwcjQnIGlz IHJlcXVpcmVkIGZvciBOU1MiICIkTElORU5PIiA1CitmaQorCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFNTTF9HZXRJbXBsZW1lbnRlZENp cGhlcnMgaW4gLWxzc2wzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBTU0xfR2V0SW1w bGVtZW50ZWRDaXBoZXJzIGluIC1sc3NsMy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfc3Ns M19TU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9f biAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwor TElCUz0iLWxzc2wzICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBp bnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5k IHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZk ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBTU0xfR2V0SW1wbGVtZW50 ZWRDaXBoZXJzICgpOworaW50CittYWluICgpCit7CityZXR1cm4gU1NMX0dldEltcGxlbWVudGVk Q2lwaGVycyAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf bGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfc3NsM19TU0xfR2V0SW1wbGVtZW50 ZWRDaXBoZXJzPXllcworZWxzZQorICBhY19jdl9saWJfc3NsM19TU0xfR2V0SW1wbGVtZW50ZWRD aXBoZXJzPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2No ZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zc2wzX1NTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMi ID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfc3NsM19TU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJz IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NzbDNfU1NMX0dldEltcGxlbWVudGVkQ2lw aGVycyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmlu ZSBIQVZFX0xJQlNTTDMgMQorX0FDRU9GCisKKyAgTElCUz0iLWxzc2wzICRMSUJTIgorCitlbHNl CisgIGFzX2ZuX2Vycm9yICQ/ICJsaWJyYXJ5ICdzc2wzJyBpcyByZXF1aXJlZCBmb3IgTlNTIiAi JExJTkVOTyIgNQorZmkKKworCiskYXNfZWNobyAiI2RlZmluZSBVU0VfTlNTIDEiID4+Y29uZmRl ZnMuaAorCiBlbGlmIHRlc3QgIiR3aXRoX3NzbCIgIT0gbm8gOyB0aGVuCi0gIGFzX2ZuX2Vycm9y ICQ/ICItLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBvcGVuc3NsIiAiJExJTkVOTyIgNQorICBhc19m bl9lcnJvciAkPyAiLS13aXRoLXNzbCBtdXN0IHNwZWNpZnkgb25lIG9mIG9wZW5zc2wgb3IgbnNz IiAiJExJTkVOTyIgNQogZmkKIAogCkBAIC0xMzM2OSw2ICsxMzYzNywyMyBAQCBlbHNlCiBmaQog CiAKK2VsaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgYWNfZm5fY19jaGVja19o ZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm5zcy9zc2wuaCIgImFjX2N2X2hlYWRlcl9uc3Nfc3Ns X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX25zc19z c2xfaCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiaGVhZGVyIGZp bGUgPG5zcy9zc2wuaD4gaXMgcmVxdWlyZWQgZm9yIE5TUyIgIiRMSU5FTk8iIDUKK2ZpCisKKwor ICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibnNzL25zcy5oIiAiYWNf Y3ZfaGVhZGVyX25zc19uc3NfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRh Y19jdl9oZWFkZXJfbnNzX25zc19oIiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisgIGFzX2ZuX2Vy cm9yICQ/ICJoZWFkZXIgZmlsZSA8bnNzL25zcy5oPiBpcyByZXF1aXJlZCBmb3IgTlNTIiAiJExJ TkVOTyIgNQorZmkKKworCiBmaQogCiBpZiB0ZXN0ICIkd2l0aF9wYW0iID0geWVzIDsgdGhlbgpA QCAtMTgxMzEsNiArMTg0MTYsOSBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGljaCByYW5kb20g bnVtYmVyIHNvdXJjZSB0byB1c2UuLi4gIiA+JjY7IH0KIGlmIHRlc3QgeCIkd2l0aF9zc2wiID0g eCJvcGVuc3NsIiA7IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6IE9wZW5TU0wiID4mNQogJGFzX2VjaG8gIk9wZW5TU0wiID4mNjsgfQorZWxp ZiB0ZXN0IHgiJHdpdGhfc3NsIiA9IHgibnNzIiA7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE5TUyIgPiY1CiskYXNfZWNobyAiTlNTIiA+ JjY7IH0KIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMyIiA7IHRoZW4KICAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IFdpbmRvd3MgbmF0aXZl IiA+JjUKICRhc19lY2hvICJXaW5kb3dzIG5hdGl2ZSIgPiY2OyB9CkBAIC0xODE2MCw3ICsxODQ0 OCw3IEBAIGZpCiAgIGlmIHRlc3QgeCIkYWNfY3ZfZmlsZV9fZGV2X3VyYW5kb20iID0geCJubyIg OyB0aGVuCiAgICAgYXNfZm5fZXJyb3IgJD8gIgogbm8gc291cmNlIG9mIHN0cm9uZyByYW5kb20g bnVtYmVycyB3YXMgZm91bmQKLVBvc3RncmVTUUwgY2FuIHVzZSBPcGVuU1NMLCBuYXRpdmUgV2lu ZG93cyBBUEkgb3IgL2Rldi91cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbSBudW1iZXJzLiIg IiRMSU5FTk8iIDUKK1Bvc3RncmVTUUwgY2FuIHVzZSBPcGVuU1NMLCBOU1MsIG5hdGl2ZSBXaW5k b3dzIEFQSSBvciAvZGV2L3VyYW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMuIiAi JExJTkVOTyIgNQogICBmaQogZmkKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln dXJlLmFjCmluZGV4IDA3ZGE4NGQ0MDEuLjU5NjU3YTYwMTAgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEyMDEsNyArMTIwMSw3IEBAIGZpCiAjCiAjIFRo ZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdXBwb3J0ZWQgU1NML1RMUyBsaWJyYXJ5OiBPcGVu U1NMLgogIwotUEdBQ19BUkdfUkVRKHdpdGgsIHNzbCwgW0xJQl0sIFt1c2UgTElCIGZvciBTU0wv VExTIHN1cHBvcnQgKG9wZW5zc2wpXSkKK1BHQUNfQVJHX1JFUSh3aXRoLCBzc2wsIFtMSUJdLCBb dXNlIExJQiBmb3IgU1NML1RMUyBzdXBwb3J0IChvcGVuc3NsLCBuc3MpXSkKIGlmIHRlc3QgeCIk d2l0aF9zc2wiID0geCIiIDsgdGhlbgogICB3aXRoX3NzbD1ubwogZmkKQEAgLTEyMzUsOCArMTIz NSwyOCBAQCBpZiB0ZXN0ICIkd2l0aF9zc2wiID0gb3BlbnNzbCA7IHRoZW4KICAgIyBmdW5jdGlv biB3YXMgcmVtb3ZlZC4KICAgQUNfQ0hFQ0tfRlVOQ1MoW0NSWVBUT19sb2NrXSkKICAgQUNfREVG SU5FKFtVU0VfT1BFTlNTTF0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBPcGVuU1NMIHN1 cHBvcnQuXSkKK2VsaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgIyBUT0RPOiBm YWxsYmFjayBpbiBjYXNlIG5zcy1jb25maWcvbnNwci1jb25maWcgYXJlbid0IGZvdW5kLgorICBQ R0FDX1BBVEhfUFJPR1MoTlNTX0NPTkZJRywgbnNzLWNvbmZpZykKKyAgUEdBQ19QQVRIX1BST0dT KE5TUFJfQ09ORklHLCBuc3ByLWNvbmZpZykKKyAgaWYgdGVzdCAtbiAiJE5TU19DT05GSUciOyB0 aGVuCisgICAgTlNTX0xJQlM9YCROU1NfQ09ORklHIC0tbGlic2AKKwlOU1NfQ0ZMQUdTPWAkTlNT X0NPTkZJRyAtLWNmbGFnc2AKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJE5TUFJfQ09ORklHIjsgdGhl bgorCU5TUFJfTElCUz1gJE5TUFJfQ09ORklHIC0tbGlic2AKKwlOU1BSX0NGTEFHUz1gJE5TUFJf Q09ORklHIC0tY2ZsYWdzYAorICBmaQorCisgIExERkxBR1M9IiRMREZMQUdTICROU1NfTElCUyAk TlNQUl9MSUJTIgorICBDRkxBR1M9IiRDRkxBR1MgJE5TU19DRkxBR1MgJE5TUFJfQ0ZMQUdTIgor CisgIEFDX0NIRUNLX0xJQihuc3MzLCBOU1NfSW5pdENvbnRleHQsIFtdLCBbQUNfTVNHX0VSUk9S KFtsaWJyYXJ5ICduc3MzJyBpcyByZXF1aXJlZCBmb3IgTlNTXSldKQorICBBQ19DSEVDS19MSUIo bnNwcjQsIFBSX0dldERlZmF1bHRJT01ldGhvZHMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5 ICduc3ByNCcgaXMgcmVxdWlyZWQgZm9yIE5TU10pXSkKKyAgQUNfQ0hFQ0tfTElCKHNzbDMsIFNT TF9HZXRJbXBsZW1lbnRlZENpcGhlcnMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICdzc2wz JyBpcyByZXF1aXJlZCBmb3IgTlNTXSldKQorICBBQ19ERUZJTkUoW1VTRV9OU1NdLCAxLCBbRGVm aW5lIHRvIDEgaWYgeW91IGhhdmUgTlNTIHN1cHBvcnQsXSkKIGVsaWYgdGVzdCAiJHdpdGhfc3Ns IiAhPSBubyA7IHRoZW4KLSAgQUNfTVNHX0VSUk9SKFstLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBv cGVuc3NsXSkKKyAgQUNfTVNHX0VSUk9SKFstLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBvbmUgb2Yg b3BlbnNzbCBvciBuc3NdKQogZmkKIEFDX1NVQlNUKHdpdGhfc3NsKQogCkBAIC0xNDE0LDYgKzE0 MzQsOSBAQCBmaQogaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG9wZW5zc2wgOyB0aGVuCiAgIEFDX0NI RUNLX0hFQURFUihvcGVuc3NsL3NzbC5oLCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUg PG9wZW5zc2wvc3NsLmg+IGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQogICBBQ19DSEVDS19I RUFERVIob3BlbnNzbC9lcnIuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxvcGVu c3NsL2Vyci5oPiBpcyByZXF1aXJlZCBmb3IgT3BlblNTTF0pXSkKK2VsaWYgdGVzdCAiJHdpdGhf c3NsIiA9IG5zcyA7IHRoZW4KKyAgQUNfQ0hFQ0tfSEVBREVSKG5zcy9zc2wuaCwgW10sIFtBQ19N U0dfRVJST1IoW2hlYWRlciBmaWxlIDxuc3Mvc3NsLmg+IGlzIHJlcXVpcmVkIGZvciBOU1NdKV0p CisgIEFDX0NIRUNLX0hFQURFUihuc3MvbnNzLmgsIFtdLCBbQUNfTVNHX0VSUk9SKFtoZWFkZXIg ZmlsZSA8bnNzL25zcy5oPiBpcyByZXF1aXJlZCBmb3IgTlNTXSldKQogZmkKIAogaWYgdGVzdCAi JHdpdGhfcGFtIiA9IHllcyA7IHRoZW4KQEAgLTIxNzAsNiArMjE5Myw4IEBAIGZpCiBBQ19NU0df Q0hFQ0tJTkcoW3doaWNoIHJhbmRvbSBudW1iZXIgc291cmNlIHRvIHVzZV0pCiBpZiB0ZXN0IHgi JHdpdGhfc3NsIiA9IHgib3BlbnNzbCIgOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoW09wZW5TU0xd KQorZWxpZiB0ZXN0IHgiJHdpdGhfc3NsIiA9IHgibnNzIiA7IHRoZW4KKyAgQUNfTVNHX1JFU1VM VChbTlNTXSkKIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMyIiA7IHRoZW4KICAgQUNf TVNHX1JFU1VMVChbV2luZG93cyBuYXRpdmVdKQogZWxzZQpAQCAtMjE3OSw3ICsyMjA0LDcgQEAg ZWxzZQogICBpZiB0ZXN0IHgiJGFjX2N2X2ZpbGVfX2Rldl91cmFuZG9tIiA9IHgibm8iIDsgdGhl bgogICAgIEFDX01TR19FUlJPUihbCiBubyBzb3VyY2Ugb2Ygc3Ryb25nIHJhbmRvbSBudW1iZXJz IHdhcyBmb3VuZAotUG9zdGdyZVNRTCBjYW4gdXNlIE9wZW5TU0wsIG5hdGl2ZSBXaW5kb3dzIEFQ SSBvciAvZGV2L3VyYW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMuXSkKK1Bvc3Rn cmVTUUwgY2FuIHVzZSBPcGVuU1NMLCBOU1MsIG5hdGl2ZSBXaW5kb3dzIEFQSSBvciAvZGV2L3Vy YW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMuXSkKICAgZmkKIGZpCiAKZGlmZiAt LWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9j b250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IGIwOWRj ZTYzZjUuLmZiYmU3NzgyMTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQv cG9zdGdyZXNfZmR3Lm91dApAQCAtODkyOCw3ICs4OTI4LDcgQEAgRE8gJGQkCiAgICAgRU5EOwog JGQkOwogRVJST1I6ICBpbnZhbGlkIG9wdGlvbiAicGFzc3dvcmQiCi1ISU5UOiAgVmFsaWQgb3B0 aW9ucyBpbiB0aGlzIGNvbnRleHQgYXJlOiBzZXJ2aWNlLCBwYXNzZmlsZSwgY2hhbm5lbF9iaW5k aW5nLCBjb25uZWN0X3RpbWVvdXQsIGRibmFtZSwgaG9zdCwgaG9zdGFkZHIsIHBvcnQsIG9wdGlv bnMsIGFwcGxpY2F0aW9uX25hbWUsIGtlZXBhbGl2ZXMsIGtlZXBhbGl2ZXNfaWRsZSwga2VlcGFs aXZlc19pbnRlcnZhbCwga2VlcGFsaXZlc19jb3VudCwgdGNwX3VzZXJfdGltZW91dCwgc3NsbW9k ZSwgc3NsY29tcHJlc3Npb24sIHNzbGNlcnQsIHNzbGtleSwgc3Nscm9vdGNlcnQsIHNzbGNybCwg cmVxdWlyZXBlZXIsIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiwgc3NsX21heF9wcm90b2NvbF92 ZXJzaW9uLCBnc3NlbmNtb2RlLCBrcmJzcnZuYW1lLCBnc3NsaWIsIHRhcmdldF9zZXNzaW9uX2F0 dHJzLCB1c2VfcmVtb3RlX2VzdGltYXRlLCBmZHdfc3RhcnR1cF9jb3N0LCBmZHdfdHVwbGVfY29z dCwgZXh0ZW5zaW9ucywgdXBkYXRhYmxlLCBmZXRjaF9zaXplLCBiYXRjaF9zaXplCitISU5UOiAg VmFsaWQgb3B0aW9ucyBpbiB0aGlzIGNvbnRleHQgYXJlOiBzZXJ2aWNlLCBwYXNzZmlsZSwgY2hh bm5lbF9iaW5kaW5nLCBjb25uZWN0X3RpbWVvdXQsIGRibmFtZSwgaG9zdCwgaG9zdGFkZHIsIHBv cnQsIG9wdGlvbnMsIGFwcGxpY2F0aW9uX25hbWUsIGtlZXBhbGl2ZXMsIGtlZXBhbGl2ZXNfaWRs ZSwga2VlcGFsaXZlc19pbnRlcnZhbCwga2VlcGFsaXZlc19jb3VudCwgdGNwX3VzZXJfdGltZW91 dCwgc3NsbW9kZSwgc3NsY29tcHJlc3Npb24sIHNzbGNlcnQsIHNzbGtleSwgc3Nscm9vdGNlcnQs IHNzbGNybCwgcmVxdWlyZXBlZXIsIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiwgc3NsX21heF9w cm90b2NvbF92ZXJzaW9uLCBnc3NlbmNtb2RlLCBrcmJzcnZuYW1lLCBnc3NsaWIsIHRhcmdldF9z ZXNzaW9uX2F0dHJzLCBjZXJ0X2RhdGFiYXNlLCB1c2VfcmVtb3RlX2VzdGltYXRlLCBmZHdfc3Rh cnR1cF9jb3N0LCBmZHdfdHVwbGVfY29zdCwgZXh0ZW5zaW9ucywgdXBkYXRhYmxlLCBmZXRjaF9z aXplLCBiYXRjaF9zaXplCiBDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiQUxURVIgU0VSVkVSIGxv b3BiYWNrX25vcHcgT1BUSU9OUyAoQUREIHBhc3N3b3JkICdkdW1teXB3JykiCiBQTC9wZ1NRTCBm dW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBsaW5lIDMgYXQgRVhFQ1VURQogLS0gSWYgd2UgYWRk IGEgcGFzc3dvcmQgZm9yIG91ciB1c2VyIG1hcHBpbmcgaW5zdGVhZCwgd2Ugc2hvdWxkIGdldCBh IGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZpbGUgYi9zcmMv YmFja2VuZC9saWJwcS9NYWtlZmlsZQppbmRleCA4ZDFkMTZiMGZjLi4wNDVkMmMyZjZiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9saWJw cS9NYWtlZmlsZQpAQCAtMzAsNiArMzAsMTAgQEAgT0JKUyA9IFwKIAogaWZlcSAoJCh3aXRoX3Nz bCksb3BlbnNzbCkKIE9CSlMgKz0gYmUtc2VjdXJlLW9wZW5zc2wubworZWxzZQoraWZlcSAoJCh3 aXRoX3NzbCksbnNzKQorT0JKUyArPSBiZS1zZWN1cmUtbnNzLm8KK2VuZGlmCiBlbmRpZgogCiBp ZmVxICgkKHdpdGhfZ3NzYXBpKSx5ZXMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9h dXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKaW5kZXggNTQ1NjM1ZjQxYS4uMDlhZDJh ZDA2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNr ZW5kL2xpYnBxL2F1dGguYwpAQCAtMjg0OSw3ICsyODQ5LDE0IEBAIENoZWNrQ2VydEF1dGgoUG9y dCAqcG9ydCkKIHsKIAlpbnQJCQlzdGF0dXNfY2hlY2tfdXNlcm1hcCA9IFNUQVRVU19FUlJPUjsK IAorI2lmIGRlZmluZWQoVVNFX09QRU5TU0wpCiAJQXNzZXJ0KHBvcnQtPnNzbCk7CisjZWxpZiBk ZWZpbmVkKFVTRV9OU1MpCisJLyogVE9ETzogc2hvdWxkIHdlIHJlbmFtZSBwcl9mZCB0byBzc2ws IHRvIGtlZXAgY29uc2lzdGVuY3k/ICovCisJQXNzZXJ0KHBvcnQtPnByX2ZkKTsKKyNlbHNlCisJ QXNzZXJ0KGZhbHNlKTsKKyNlbmRpZgogCiAJLyogTWFrZSBzdXJlIHdlIGhhdmUgcmVjZWl2ZWQg YSB1c2VybmFtZSBpbiB0aGUgY2VydGlmaWNhdGUgKi8KIAlpZiAocG9ydC0+cGVlcl9jbiA9PSBO VUxMIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMgYi9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uODc2ZTU0YmU1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS1uc3MuYwpAQCAtMCwwICsxLDE0MDIgQEAKKy8qLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIGJlLXNlY3VyZS1uc3MuYworICoJICBmdW5jdGlvbnMgZm9yIHN1cHBvcnRp bmcgTlNTIGFzIGEgVExTIGJhY2tlbmQKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2xpYnBxL2Jl LXNlY3VyZS1uc3MuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworLyoKKyAqIEJJVFNfUEVSX0JZ VEUgaXMgYWxzbyBkZWZpbmVkIGluIHRoZSBOU1BSIGhlYWRlciBmaWxlcywgc28gd2UgbmVlZCB0 byB1bmRlZgorICogb3VyIHZlcnNpb24gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3Mgb24gcmVk ZWZpbml0aW9uLgorICovCisjZGVmaW5lIHBnX0JJVFNfUEVSX0JZVEUgQklUU19QRVJfQllURQor I3VuZGVmIEJJVFNfUEVSX0JZVEUKKworLyoKKyAqIFRoZSBuc3ByL29ic29sZXRlL3Byb3R5cGVz LmggTlNQUiBoZWFkZXIgdHlwZWRlZnMgdWludDY0IGFuZCBpbnQ2NCB3aXRoCisgKiBjb2xsaWRp bmcgZGVmaW5pdGlvbnMgZnJvbSBvdXJzLCBjYXVzaW5nIGEgbXVjaCBleHBlY3RlZCBjb21waWxl ciBlcnJvci4KKyAqIFJlbW92ZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGFuY2llbnQg TlNQUiB2ZXJzaW9ucyB0byBhdm9pZCB0aGlzLgorICovCisjZGVmaW5lIE5PX05TUFJfMTBfU1VQ UE9SVAorI2luY2x1ZGUgPG5zcHIvbnNwci5oPgorI2luY2x1ZGUgPG5zcHIvcHJlcnJvci5oPgor I2luY2x1ZGUgPG5zcHIvcHJpby5oPgorI2luY2x1ZGUgPG5zcHIvcHJtZW0uaD4KKyNpbmNsdWRl IDxuc3ByL3BydHlwZXMuaD4KKworI2luY2x1ZGUgPG5zcy9uc3MuaD4KKyNpbmNsdWRlIDxuc3Mv YmFzZTY0Lmg+CisjaW5jbHVkZSA8bnNzL2NlcnQuaD4KKyNpbmNsdWRlIDxuc3MvY2VydGRiLmg+ CisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5jbHVkZSA8bnNzL2tleWhpLmg+CisjaW5jbHVk ZSA8bnNzL3BrMTFwdWIuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjZGVyLmg+CisjaW5jbHVkZSA8bnNz L3NlY2Vyci5oPgorI2luY2x1ZGUgPG5zcy9zZWNpdGVtLmg+CisjaW5jbHVkZSA8bnNzL3NlY29p ZHQuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjcG9ydC5oPgorI2luY2x1ZGUgPG5zcy9zc2wuaD4KKyNp bmNsdWRlIDxuc3Mvc3NsZXJyLmg+CisjaW5jbHVkZSA8bnNzL3NzbHByb3RvLmg+CisKKy8qCisg KiBFbnN1cmUgdGhhdCB0aGUgY29sbGlkaW5nIGRlZmluaXRpb25zIG1hdGNoLCBlbHNlIHRocm93 IGFuIGVycm9yLiBJbiBjYXNlCisgKiBOU1BSIGhhcyByZW1vdmVkIHRoZSBkZWZpbml0aW9uIGZv ciBzb21lIHJlYXNvbiwgbWFrZSBzdXJlIHRvIHB1dCBvdXJzCisgKiBiYWNrIGFnYWluLgorICov CisjaWYgZGVmaW5lZChCSVRTX1BFUl9CWVRFKQorI2lmIEJJVFNfUEVSX0JZVEUgIT0gcGdfQklU U19QRVJfQllURQorI2Vycm9yICJpbmNvbXBhdGlibGUgYnl0ZSB3aWR0aHMgYmV0d2VlbiBOU1BS IGFuZCBwb3N0Z3JlcyIKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgQklUU19QRVJfQllURSBwZ19C SVRTX1BFUl9CWVRFCisjZW5kaWYKKyN1bmRlZiBwZ19CSVRTX1BFUl9CWVRFCisKKyNpbmNsdWRl ICJjb21tb24vcGdfbnNzLmgiCisjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKKyNpbmNsdWRl ICJsaWJwcS9saWJwcS5oIgorI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJt aXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAidXRpbHMvZ3Vj LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworCisvKiBkZWZhdWx0IGluaXQgaG9v ayBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIHNoYXJlZCBsaWJyYXJ5ICovCitzdGF0aWMgdm9pZCBk ZWZhdWx0X25zc190bHNfaW5pdChib29sIGlzU2VydmVyU3RhcnQpOworbnNzX3Rsc19pbml0X2hv b2tfdHlwZSBuc3NfdGxzX2luaXRfaG9vayA9IGRlZmF1bHRfbnNzX3Rsc19pbml0OworCitzdGF0 aWMgUFJEZXNjSWRlbnRpdHkgcHJfaWQ7CisKK3N0YXRpYyBQUklPTWV0aG9kcyBwcl9pb21ldGhv ZHM7CitzdGF0aWMgTlNTSW5pdENvbnRleHQgKm5zc19jb250ZXh0ID0gTlVMTDsKK3N0YXRpYyBT U0xWZXJzaW9uUmFuZ2UgZGVzaXJlZF9zc2x2ZXI7CisKK3N0YXRpYyBjaGFyICpleHRlcm5hbF9z c2xfcGFzc3BocmFzZV9jYihQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAq YXJnKTsKK3N0YXRpYyBTRUNTdGF0dXMgcGdfU1NMU2h1dGRvd25GdW5jKHZvaWQgKnByaXZhdGVf ZGF0YSwgdm9pZCAqbnNzX2RhdGEpOworc3RhdGljIGJvb2wgZHVtbXlfc3NsX3Bhc3N3ZF9jYl9j YWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHNzbF9pc19zZXJ2ZXJfc3RhcnQ7CisKKy8qCisg KiBQUl9JbXBvcnRUQ1BTb2NrZXQoKSBpcyBhIHByaXZhdGUgQVBJLCBidXQgdmVyeSB3aWRlbHkg dXNlZCwgYXMgaXQncyB0aGUKKyAqIG9ubHkgd2F5IHRvIG1ha2UgTlNTIHVzZSBhbiBhbHJlYWR5 IHNldCB1cCBQT1NJWCBmaWxlIGRlc2NyaXB0b3IgcmF0aGVyCisgKiB0aGFuIG9wZW5pbmcgb25l IGl0c2VsZi4gVG8gcXVvdGUgdGhlIE5TUyBkb2N1bWVudGF0aW9uOgorICoKKyAqCQkiSW4gdGhl b3J5LCBjb2RlIHRoYXQgdXNlcyBQUl9JbXBvcnRUQ1BTb2NrZXQgbWF5IGJyZWFrIHdoZW4gTlNQ UidzCisgKgkJaW1wbGVtZW50YXRpb24gY2hhbmdlcy4gSW4gcHJhY3RpY2UsIHRoaXMgaXMgdW5s aWtlbHkgdG8gaGFwcGVuIGJlY2F1c2UKKyAqCQlOU1BSJ3MgaW1wbGVtZW50YXRpb24gaGFzIGJl ZW4gc3RhYmxlIGZvciB5ZWFycyBhbmQgYmVjYXVzZSBvZiBOU1BSJ3MKKyAqCQlzdHJvbmcgY29t bWl0bWVudCB0byBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiIKKyAqCisgKiBodHRwczovL2RldmVs b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNQUi9SZWZlcmVu Y2UvUFJfSW1wb3J0VENQU29ja2V0CisgKgorICogVGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGlu IDxwcml2YXRlL3BwcmlvLmg+LCBidXQgYXMgaXQgaXMgYSBoZWFkZXIgbWFya2VkCisgKiBwcml2 YXRlIHdlIGRlY2xhcmUgaXQgaGVyZSByYXRoZXIgdGhhbiBpbmNsdWRpbmcgaXQuCisgKi8KK05T UFJfQVBJKFBSRmlsZURlc2MgKikgUFJfSW1wb3J0VENQU29ja2V0KGludCk7CisKKy8qIE5TUyBJ TyBsYXllciBjYWxsYmFjayBvdmVycmlkZXMgKi8KK3N0YXRpYyBQUkludDMyIHBnX3NzbF9yZWFk KFBSRmlsZURlc2MgKmZkLCB2b2lkICpidWYsIFBSSW50MzIgYW1vdW50LAorCQkJCQkJICAgUFJJ bnRuIGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKK3N0YXRpYyBQUkludDMyIHBnX3Nz bF93cml0ZShQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwK KwkJCQkJCQlQUkludG4gZmxhZ3MsIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpOworc3RhdGljIFBS U3RhdHVzIHBnX3NzbF9jbG9zZShQUkZpbGVEZXNjICpmZCk7CisvKiBVdGlsaXR5IGZ1bmN0aW9u cyAqLworc3RhdGljIFBSRmlsZURlc2MgKmluaXRfaW9sYXllcihQb3J0ICpwb3J0KTsKK3N0YXRp YyB1aW50MTYgc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fbnNzKGludCB2LCBjb25zdCBjaGFyICpn dWNfbmFtZSk7CisKK3N0YXRpYyBjaGFyICpwZ19TU0xlcnJtZXNzYWdlKFBSRXJyb3JDb2RlIGVy cmNvZGUpOworc3RhdGljIGNoYXIgKnNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX3N0cmluZyhpbnQg dik7CitzdGF0aWMgU0VDU3RhdHVzIHBnX2NlcnRfYXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJG aWxlRGVzYyAqZmQsCisJCQkJCQkJCQkgIFBSQm9vbCBjaGVja3NpZywgUFJCb29sIGlzU2VydmVy KTsKK3N0YXRpYyBTRUNTdGF0dXMgcGdfYmFkX2NlcnRfaGFuZGxlcih2b2lkICphcmcsIFBSRmls ZURlc2MgKmZkKTsKK3N0YXRpYyBjaGFyICpkdW1teV9zc2xfcGFzc3BocmFzZV9jYihQSzExU2xv dEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKKworLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKgkJ CQkJCSBQdWJsaWMgaW50ZXJmYWNlCQkJCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogYmVfdGxz X2luaXQKKyAqCQkJSW5pdGlhbGl6ZSB0aGUgbnNzIFRMUyBsaWJyYXJ5IGluIHRoZSBwb3N0bWFz dGVyCisgKgorICogVGhlIG1ham9yaXR5IG9mIHRoZSBzZXR1cCBuZWVkcyB0byBoYXBwZW4gaW4g YmVfdGxzX29wZW5fc2VydmVyIHNpbmNlIHRoZQorICogTlNQUiBpbml0aWFsaXphdGlvbiBtdXN0 IGhhcHBlbiBhZnRlciB0aGUgZm9ya2luZyBvZiB0aGUgYmFja2VuZC4gV2UgY291bGQKKyAqIHBv dGVudGlhbGx5IG1vdmUgc29tZSBwYXJ0cyBpbiB1bmRlciAhaXNTZXJ2ZXJTdGFydCwgYnV0IHNv IGZhciB0aGlzIGlzIHRoZQorICogc2VwYXJhdGlvbiBjaG9zZW4uCisgKi8KK2ludAorYmVfdGxz X2luaXQoYm9vbCBpc1NlcnZlclN0YXJ0KQoreworCVNFQ1N0YXR1cwlzdGF0dXM7CisJU1NMVmVy c2lvblJhbmdlIHN1cHBvcnRlZF9zc2x2ZXI7CisKKwlzdGF0dXMgPSBTU0xfQ29uZmlnU2VydmVy U2Vzc2lvbklEQ2FjaGVXaXRoT3B0KDAsIDAsIE5VTEwsIDEsIDAsIDAsIFBSX0ZBTFNFKTsKKwlp ZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBG QVRBTCA6IExPRywKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29ubmVjdCB0byBUTFMgY29ubmVj dGlvbiBjYWNoZTogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkp KTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICghc3NsX2RhdGFiYXNlIHx8IHN0cmxlbihzc2xf ZGF0YWJhc2UpID09IDApCisJeworCQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6IExP RywKKwkJCQkoZXJybXNnKCJubyBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBzcGVjaWZpZWQiKSkpOwor CQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBXZSBjaGVjayBmb3IgdGhlIGRlc2lyZWQgVExT IHZlcnNpb24gcmFuZ2UgaGVyZSwgZXZlbiB0aG91Z2ggd2UgY2Fubm90CisJICogc2V0IGl0IHVu dGlsIGJlX29wZW5fc2VydmVyIHN1Y2ggdGhhdCB3ZSBjYW4gYmUgY29tcGF0aWJsZSB3aXRoIGhv dyB0aGUKKwkgKiBPcGVuU1NMIGJhY2tlbmQgcmVwb3J0cyBlcnJvcnMgZm9yIGluY29tcGF0aWJs ZSByYW5nZSBjb25maWd1cmF0aW9ucy4KKwkgKiBTZXQgZWl0aGVyIHRoZSBkZWZhdWx0IHN1cHBv cnRlZCBUTFMgdmVyc2lvbiByYW5nZSwgb3IgdGhlIGNvbmZpZ3VyZWQKKwkgKiByYW5nZSBmcm9t IHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiBhbmQgc3NsX21heF9wcm90b2NvbCB2ZXJzaW9uLiBJ bgorCSAqIGNhc2UgdGhlIHVzZXIgaGFzbid0IGRlZmluZWQgdGhlIG1heGltdW0gYWxsb3dlZCB2 ZXJzaW9uIHdlIGZhbGwgYmFjaworCSAqIHRvIHRoZSBoaWdoZXN0IHZlcnNpb24gVExTIHRoYXQg dGhlIGxpYnJhcnkgc3VwcG9ydHMuCisJICovCisJaWYgKFNTTF9WZXJzaW9uUmFuZ2VHZXRTdXBw b3J0ZWQoc3NsX3ZhcmlhbnRfc3RyZWFtLCAmc3VwcG9ydGVkX3NzbHZlcikgIT0gU0VDU3VjY2Vz cykKKwl7CisJCWVyZXBvcnQoaXNTZXJ2ZXJTdGFydCA/IEZBVEFMIDogTE9HLAorCQkJCShlcnJt c2coInVuYWJsZSB0byBnZXQgZGVmYXVsdCBwcm90b2NvbCBzdXBwb3J0IGZyb20gTlNTIikpKTsK KwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogU2V0IHRoZSBmYWxsYmFjayB2ZXJzaW9ucyBm b3IgdGhlIFRMUyBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlIHRvIGEKKwkgKiBjb21iaW5hdGlvbiBv ZiBvdXIgbWluaW1hbCByZXF1aXJlbWVudCBhbmQgdGhlIGxpYnJhcnkgbWF4aW11bS4gRXJyb3IK KwkgKiBtZXNzYWdlcyBzaG91bGQgYmUga2VwdCBpZGVudGljYWwgdG8gdGhvc2UgaW4gYmUtc2Vj dXJlLW9wZW5zc2wuYyB0bworCSAqIG1ha2UgdHJhbnNsYXRpb25zIGVhc2llci4KKwkgKi8KKwlk ZXNpcmVkX3NzbHZlci5taW4gPSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA7CisJZGVzaXJl ZF9zc2x2ZXIubWF4ID0gc3VwcG9ydGVkX3NzbHZlci5tYXg7CisKKwlpZiAoc3NsX21pbl9wcm90 b2NvbF92ZXJzaW9uKQorCXsKKwkJaW50CQkJdmVyID0gc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9f bnNzKHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiwKKwkJCQkJCQkJCQkJCQkgICJzc2xfbWluX3By b3RvY29sX3ZlcnNpb24iKTsKKworCQlpZiAodmVyID09IC0xKQorCQl7CisJCQllcmVwb3J0KGlz U2VydmVyU3RhcnQgPyBGQVRBTCA6IExPRywKKwkJCQkJKGVycm1zZygiXCIlc1wiIHNldHRpbmcg XCIlc1wiIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIsCisJCQkJCQkJInNzbF9taW5fcHJv dG9jb2xfdmVyc2lvbiIsCisJCQkJCQkJR2V0Q29uZmlnT3B0aW9uKCJzc2xfbWluX3Byb3RvY29s X3ZlcnNpb24iLAorCQkJCQkJCQkJCQlmYWxzZSwgZmFsc2UpKSkpOworCQkJcmV0dXJuIC0xOwor CQl9CisKKwkJaWYgKHZlciA+IDApCisJCQlkZXNpcmVkX3NzbHZlci5taW4gPSB2ZXI7CisJfQor CisJaWYgKHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbikKKwl7CisJCWludAkJCXZlciA9IHNzbF9w cm90b2NvbF92ZXJzaW9uX3RvX25zcyhzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24sCisJCQkJCQkJ CQkJCQkJICAic3NsX21heF9wcm90b2NvbF92ZXJzaW9uIik7CisKKwkJaWYgKHZlciA9PSAtMSkK KwkJeworCQkJZXJlcG9ydChpc1NlcnZlclN0YXJ0ID8gRkFUQUwgOiBMT0csCisJCQkJCShlcnJt c2coIlwiJXNcIiBzZXR0aW5nIFwiJXNcIiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiLAor CQkJCQkJCSJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCUdldENvbmZpZ09wdGlv bigic3NsX21heF9wcm90b2NvbF92ZXJzaW9uIiwKKwkJCQkJCQkJCQkJZmFsc2UsIGZhbHNlKSkp KTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlpZiAodmVyID4gMCkKKwkJCWRlc2lyZWRfc3NsdmVy Lm1heCA9IHZlcjsKKworCQlpZiAodmVyIDwgZGVzaXJlZF9zc2x2ZXIubWluKQorCQl7CisJCQll cmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6IExPRywKKwkJCQkJKGVycm1zZygiY291bGQg bm90IHNldCBTU0wgcHJvdG9jb2wgdmVyc2lvbiByYW5nZSIpLAorCQkJCQkgZXJyZGV0YWlsKCJc IiVzXCIgY2Fubm90IGJlIGhpZ2hlciB0aGFuIFwiJXNcIiIsCisJCQkJCQkJICAgInNzbF9taW5f cHJvdG9jb2xfdmVyc2lvbiIsCisJCQkJCQkJICAgInNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiIp KSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwkvKgorCSAqIFNldCB0aGUgcGFzc3BocmFz ZSBjYWxsYmFjayB3aGljaCB3aWxsIGJlIHVzZWQgYm90aCB0byBvYnRhaW4gdGhlCisJICogcGFz c3BocmFzZSBmcm9tIHRoZSB1c2VyLCBhcyB3ZWxsIGFzIGJ5IE5TUyB0byBvYnRhaW4gdGhlIHBo cmFzZQorCSAqIHJlcGVhdGVkbHkuCisJICovCisJc3NsX2lzX3NlcnZlcl9zdGFydCA9IGlzU2Vy dmVyU3RhcnQ7CisJKCpuc3NfdGxzX2luaXRfaG9vaykgKGlzU2VydmVyU3RhcnQpOworCisJcmV0 dXJuIDA7Cit9CisKK2ludAorYmVfdGxzX29wZW5fc2VydmVyKFBvcnQgKnBvcnQpCit7CisJU0VD U3RhdHVzCXN0YXR1czsKKwlQUkZpbGVEZXNjICptb2RlbDsKKwlQUkZpbGVEZXNjICpwcl9mZDsK KwlQUkZpbGVEZXNjICpsYXllcjsKKwlDRVJUQ2VydGlmaWNhdGUgKnNlcnZlcl9jZXJ0OworCVNF Q0tFWVByaXZhdGVLZXkgKnByaXZhdGVfa2V5OworCUNFUlRTaWduZWRDcmwgKmNybDsKKwlTRUNJ dGVtCQljcmxuYW1lOworCWNoYXIJICAgKmNlcnRfZGF0YWJhc2U7CisJTlNTSW5pdFBhcmFtZXRl cnMgcGFyYW1zOworCisJLyoKKwkgKiBUaGUgTlNQUiBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0 IHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gdmlhIFBSX0luaXQKKwkgKiBpcyBubyBsb25nZXIgcmVx dWlyZWQsIGFzIHRoZSBmaXJzdCBjYWxsZXIgaW50byBOU1BSIHdpbGwgcGVyZm9ybSB0aGUKKwkg KiBpbml0aWFsaXphdGlvbiBpbXBsaWNpdGx5LiBUaGUgZG9jdW1lbnRhdGlvbiBkb2Vzbid0IGhv d2V2ZXIgY2xhcmlmeQorCSAqIGZyb20gd2hpY2ggdmVyc2lvbiB0aGlzIGlzIGhvbGRzIHRydWUs IHNvIGxldCdzIHBlcmZvcm0gdGhlIHBvdGVudGlhbGx5CisJICogc3VwZXJmbHVvdXMgaW5pdGlh bGl6YXRpb24gYW55d2F5cyB0byBhdm9pZCBjcmFzaGluZyBvbiBvbGRlciB2ZXJzaW9ucworCSAq IG9mIE5TUFIsIGFzIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgaW4gb3ZlcmhlYWQuICBUaGUgTlNT IGRvY3VtZW50YXRpb24KKwkgKiBzdGlsbCBzdGF0ZXMgdGhhdCBQUl9Jbml0IG11c3QgYmUgY2Fs bGVkIGluIHNvbWUgd2F5IChpbXBsaWNpdGx5IG9yCisJICogZXhwbGljaXRseSkuCisJICoKKwkg KiBUaGUgYmVsb3cgcGFyYW1ldGVycyBhcmUgd2hhdCB0aGUgaW1wbGljaXQgaW5pdGlhbGl6YXRp b24gd291bGQndmUgZG9uZQorCSAqIGZvciB1cywgYW5kIHNob3VsZCB3b3JrIGV2ZW4gZm9yIG9s ZGVyIHZlcnNpb25zIHdoZXJlIGl0IG1pZ2h0IG5vdCBiZQorCSAqIGRvbmUgYXV0b21hdGljYWxs eS4gVGhlIGxhc3QgcGFyYW1ldGVyLCBtYXhQVERzLCBpcyBzZXQgdG8gdmFyaW91cworCSAqIHZh bHVlcyBpbiBvdGhlciBjb2RlYmFzZXMsIGJ1dCBoYXMgYmVlbiB1bnVzZWQgc2luY2UgTlNQUiAy LjEgd2hpY2ggd2FzCisJICogcmVsZWFzZWQgc29tZXRpbWUgaW4gMTk5OC4gSW4gY3VycmVudCB2 ZXJzaW9ucyBvZiBOU1BSIGFsbCBwYXJhbWV0ZXJzCisJICogYXJlIGlnbm9yZWQuCisJICovCisJ UFJfSW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJT1JJVFlfTk9STUFMLCAwIC8qIG1heFBURHMg Ki8gKTsKKworCS8qCisJICogVGhlIGNlcnRpZmljYXRlIHBhdGggKGNvbmZpZ2RpcikgbXVzdCBj b250YWluIGEgdmFsaWQgTlNTIGRhdGFiYXNlLiBJZgorCSAqIHRoZSBjZXJ0aWZpY2F0ZSBwYXRo IGlzbid0IGEgdmFsaWQgZGlyZWN0b3J5LCBOU1Mgd2lsbCBmYWxsIGJhY2sgb24gdGhlCisJICog c3lzdGVtIGNlcnRpZmljYXRlIGRhdGFiYXNlLiBJZiB0aGUgY2VydGlmaWNhdGUgcGF0aCBpcyBh IGRpcmVjdG9yeSBidXQKKwkgKiBpcyBlbXB0eSB0aGVuIHRoZSBpbml0aWFsaXphdGlvbiB3aWxs IGZhaWwuIE9uIHRoZSBjbGllbnQgc2lkZSB0aGlzIGNhbgorCSAqIGJlIGFsbG93ZWQgZm9yIGFu eSBzc2xtb2RlIGJ1dCB0aGUgdmVyaWZ5LXh4eCBvbmVzLgorCSAqIGh0dHBzOi8vYnVnemlsbGEu cmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NzI4NTYyIEZvciB0aGUgc2VydmVyIHNpZGUKKwkg KiB3ZSB3b24ndCBhbGxvdyB0aGlzIHRvIGZhaWwgaG93ZXZlciwgYXMgd2UgcmVxdWlyZSB0aGUg Y2VydGlmaWNhdGUgYW5kCisJICoga2V5IHRvIGV4aXN0LgorCSAqCisJICogVGhlIG9yaWdpbmFs IGRlc2lnbiBvZiBOU1Mgd2FzIGZvciBhIHNpbmdsZSBhcHBsaWNhdGlvbiB0byB1c2UgYSBzaW5n bGUKKwkgKiBjb3B5IG9mIGl0LCBpbml0aWFsaXplZCB3aXRoIE5TU19Jbml0aWFsaXplKCkgd2hp Y2ggaXNuJ3QgcmV0dXJuaW5nIGFueQorCSAqIGhhbmRsZSB3aXRoIHdoaWNoIHRvIHJlZmVyIHRv IE5TUy4gTlNTIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biBhcmUKKwkgKiBnbG9iYWwgZm9y IHRoZSBhcHBsaWNhdGlvbiwgc28gYSBzaHV0ZG93biBpbiBhbm90aGVyIE5TUyBlbmFibGVkCisJ ICogbGlicmFyeSB3b3VsZCBjYXVzZSBOU1MgdG8gYmUgc3RvcHBlZCBmb3IgbGlicHEgYXMgd2Vs bC4gIFRoZSBmaXggaGFzCisJICogYmVlbiB0byBpbnRyb2R1Y2UgTlNTX0luaXRDb250ZXh0IHdo aWNoIHJldHVybnMgYSBjb250ZXh0IGhhbmRsZSB0bworCSAqIHBhc3MgdG8gTlNTX1NodXRkb3du Q29udGV4dC4gIE5TU19Jbml0Q29udGV4dCB3YXMgaW50cm9kdWNlZCBpbiBOU1MKKwkgKiAzLjEy LCBidXQgdGhlIHVzZSBvZiBpdCBpcyBub3QgdmVyeSB3ZWxsIGRvY3VtZW50ZWQuCisJICogaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD03Mzg0NTYKKwkgKgorCSAq IFRoZSBJbml0UGFyYW1ldGVycyBzdHJ1Y3QgcGFzc2VkIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRl IGludGVybmFsCisJICogdmFsdWVzIGluIE5TUywgYnV0IHRoZSB1c2FnZSBpcyBub3QgZG9jdW1l bnRlZCBhdCBhbGwuIFdoZW4gdXNpbmcKKwkgKiBOU1NfSW5pdCBpbml0aWFsaXphdGlvbnMsIHRo ZSB2YWx1ZXMgYXJlIGluc3RlYWQgc2V0IHZpYSBQSzExX0NvbmZpZ3VyZQorCSAqIGNhbGxzIHNv IHRoZSBQSzExX0NvbmZpZ3VyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSB1c2VkIHRvIGdsZWFuIHNv bWUKKwkgKiBkZXRhaWxzIG9uIHRoZXNlLgorCSAqCisJICogaHR0cHM6Ly9kZXZlbG9wZXIubW96 aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9QS0NTMTEvTW9kdWxlX1Nw ZWNzCisJICovCisJbWVtc2V0KCZwYXJhbXMsICdcMCcsIHNpemVvZihwYXJhbXMpKTsKKwlwYXJh bXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisKKwlpZiAoIXNzbF9kYXRhYmFzZSB8fCBzdHJs ZW4oc3NsX2RhdGFiYXNlKSA9PSAwKQorCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJtc2coIm5v IGNlcnRpZmljYXRlIGRhdGFiYXNlIHNwZWNpZmllZCIpKSk7CisKKwljZXJ0X2RhdGFiYXNlID0g cHNwcmludGYoInNxbDolcyIsIHNzbF9kYXRhYmFzZSk7CisJbnNzX2NvbnRleHQgPSBOU1NfSW5p dENvbnRleHQoY2VydF9kYXRhYmFzZSwgIiIsICIiLCAiIiwKKwkJCQkJCQkJICAmcGFyYW1zLAor CQkJCQkJCQkgIE5TU19JTklUX1JFQURPTkxZIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisJcGZy ZWUoY2VydF9kYXRhYmFzZSk7CisKKwlpZiAoIW5zc19jb250ZXh0KQorCQllcmVwb3J0KEZBVEFM LAorCQkJCShlcnJtc2coInVuYWJsZSB0byByZWFkIGNlcnRpZmljYXRlIGRhdGFiYXNlIFwiJXNc IjogJXMiLAorCQkJCQkJc3NsX2RhdGFiYXNlLCBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9y KCkpKSkpOworCisJLyoKKwkgKiBJbXBvcnQgdGhlIGFscmVhZHkgb3BlbmVkIHNvY2tldCBhcyB3 ZSBkb24ndCB3YW50IHRvIHVzZSBOU1BSIGZ1bmN0aW9ucworCSAqIGZvciBvcGVuaW5nIHRoZSBu ZXR3b3JrIHNvY2tldCBkdWUgdG8gaG93IHRoZSBQb3N0Z3JlU1FMIHByb3RvY29sIHdvcmtzCisJ ICogd2l0aCBUTFMgY29ubmVjdGlvbnMuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHBhcnQgb2YgdGhl IE5TUFIgcHVibGljIEFQSSwKKwkgKiBzZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUg ZmlsZSBmb3IgdGhlIHJhdGlvbmFsZSBvZiBzdGlsbCB1c2luZworCSAqIGl0LgorCSAqLworCXBy X2ZkID0gUFJfSW1wb3J0VENQU29ja2V0KHBvcnQtPnNvY2spOworCWlmICghcHJfZmQpCisJewor CQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29ubmVjdCB0byBz b2NrZXQiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBNb3N0IG9mIHRoZSBkb2N1 bWVudGF0aW9uIGF2YWlsYWJsZSwgYW5kIGltcGxlbWVudGF0aW9ucyBvZiwgTlNTL05TUFIKKwkg KiB1c2UgdGhlIFBSX05ld1RDUFNvY2tldCgpIGZ1bmN0aW9uIGhlcmUsIHdoaWNoIGhhcyB0aGUg ZHJhd2JhY2sgdGhhdCBpdAorCSAqIGNhbiBvbmx5IGNyZWF0ZSBJUHY0IHNvY2tldHMuIEluc3Rl YWQgdXNlIFBSX09wZW5UQ1BTb2NrZXQoKSB3aGljaAorCSAqIGNvcGVzIHdpdGggSVB2NiBhcyB3 ZWxsLgorCSAqCisJICogV2UgdXNlIGEgbW9kZWwgZmlsZWRlc2NyaXB0b3IgaGVyZSB3aGljaCBp cyBhIGNvbnN0cnVjdCBpbiBOU1BSL05TUyBpbgorCSAqIG9yZGVyIHRvIGNyZWF0ZSBhIGNvbmZp Z3VyYXRpb24gdGVtcGxhdGUgZm9yIHNvY2tldHMgd2hpY2ggY2FuIHRoZW4gYmUKKwkgKiBhcHBs aWVkIHRvIG5ldyBzb2NrZXRzIGNyZWF0ZWQuIFRoaXMgbWFrZXMgbW9yZSBzZW5zZSBpbiBhIHNl cnZlciB3aGljaAorCSAqIGFjY2VwdHMgbXVsdGlwbGUgY29ubmVjdGlvbnMgYW5kIHdhbnQgdG8g cGVyZm9ybSB0aGUgYm9pbGVycGxhdGUganVzdAorCSAqIG9uY2UsIGJ1dCBpdCBkb2VzIHByb3Zp ZGUgYSBuaWNlIGFic3RyYWN0aW9uIGhlcmUgYXMgd2VsbCBpbiB0aGF0IHdlCisJICogY2FuIGVy cm9yIG91dCBlYXJseSB3aXRob3V0IGhhdmluZyBwZXJmb3JtZWQgYW55IG9wZXJhdGlvbiBvbiB0 aGUgcmVhbAorCSAqIHNvY2tldC4KKwkgKi8KKwltb2RlbCA9IFBSX09wZW5UQ1BTb2NrZXQocG9y dC0+bGFkZHIuYWRkci5zc19mYW1pbHkpOworCWlmICghbW9kZWwpCisJeworCQllcmVwb3J0KENP TU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gb3BlbiBzb2NrZXQiKSkpOworCQlyZXR1 cm4gLTE7CisJfQorCisJLyoKKwkgKiBDb252ZXJ0IHRoZSBOU1BSIHNvY2tldCB0byBhbiBTU0wg c29ja2V0LiBFbnN1cmluZyB0aGUgc3VjY2VzcyBvZiB0aGlzCisJICogb3BlcmF0aW9uIGlzIGNy aXRpY2FsIGFzIE5TUyBTU0xfKiBmdW5jdGlvbnMgbWF5IHJldHVybiBTRUNTdWNjZXNzIG9uCisJ ICogdGhlIHNvY2tldCBldmVuIHRob3VnaCBTU0wgaGFzbid0IGJlZW4gZW5hYmxlZCwgd2hpY2gg aW50cm9kdWNlIGEgcmlzaworCSAqIG9mIHNpbGVudCBkb3duZ3JhZGVzLgorCSAqLworCW1vZGVs ID0gU1NMX0ltcG9ydEZEKE5VTEwsIG1vZGVsKTsKKwlpZiAoIW1vZGVsKQorCXsKKwkJZXJlcG9y dChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGVuYWJsZSBUTFMgb24gc29ja2V0 IikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogQ29uZmlndXJlIGJhc2ljIHNldHRp bmdzIGZvciB0aGUgY29ubmVjdGlvbiBvdmVyIHRoZSBTU0wgc29ja2V0IGluCisJICogb3JkZXIg dG8gc2V0IGl0IHVwIGFzIGEgc2VydmVyLgorCSAqLworCWlmIChTU0xfT3B0aW9uU2V0KG1vZGVs LCBTU0xfU0VDVVJJVFksIFBSX1RSVUUpICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENP TU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29uZmlndXJlIFRMUyBjb25uZWN0aW9u IikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xf SEFORFNIQUtFX0FTX1NFUlZFUiwgUFJfVFJVRSkgIT0gU0VDU3VjY2VzcyB8fAorCQlTU0xfT3B0 aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FTX0NMSUVOVCwgUFJfRkFMU0UpICE9IFNFQ1N1 Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8g Y29uZmlndXJlIFRMUyBjb25uZWN0aW9uIGFzIHNlcnZlciIpKSk7CisJCXJldHVybiAtMTsKKwl9 CisKKwkvKgorCSAqIFNTTHYyIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFuZCBTU0x2MyB3aWxs IGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJhbmdlCisJICogb2YgYWxsb3dlZCBwcm90b2NvbHMgZnVy dGhlciBkb3duLiBTaW5jZSB3ZSByZWFsbHkgZG9uJ3Qgd2FudCB0aGVzZSB0bworCSAqIGV2ZXIg YmUgZW5hYmxlZCwgbGV0J3MgdXNlIGJlbHRzIGFuZCBzdXNwZW5kZXJzIGFuZCBleHBsaWNpdGx5 IHR1cm4KKwkgKiB0aGVtIG9mZiBhcyB3ZWxsLgorCSAqLworCVNTTF9PcHRpb25TZXQobW9kZWws IFNTTF9FTkFCTEVfU1NMMiwgUFJfRkFMU0UpOworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9F TkFCTEVfU1NMMywgUFJfRkFMU0UpOworCisjaWZkZWYgU1NMX0NCQ19SQU5ET01fSVYKKworCS8q CisJICogRW5hYmxlIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgQkVBU1QgYXR0YWNrIGluIGNhc2Ug dGhlIE5TUyBzZXJ2ZXIgaGFzCisJICogc3VwcG9ydCBmb3IgdGhhdC4gV2hpbGUgU1NMdjMgaXMg ZGlzYWJsZWQsIHdlIG1heSBzdGlsbCBhbGxvdyBUTFN2MQorCSAqIHdoaWNoIGlzIGFmZmVjdGVk LiBUaGUgb3B0aW9uIGlzbid0IGRvY3VtZW50ZWQgYXMgYW4gU1NMIG9wdGlvbiwgYnV0IGFzCisJ ICogYW4gTlNTIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAqLworCVNTTF9PcHRpb25TZXQobW9k ZWwsIFNTTF9DQkNfUkFORE9NX0lWLCBQUl9UUlVFKTsKKyNlbmRpZgorCisJLyoKKwkgKiBDb25m aWd1cmUgdGhlIGFsbG93ZWQgY2lwaGVycy4gSWYgdGhlcmUgYXJlIG5vIHVzZXIgcHJlZmVycmVk IHN1aXRlcywKKwkgKiBzZXQgdGhlIGRvbWVzdGljIHBvbGljeS4KKwkgKgorCSAqIEhpc3Rvcmlj YWxseSB0aGVyZSB3ZXJlIGRpZmZlcmVudCBjaXBoZXIgcG9saWNpZXMgYmFzZWQgb24gZXhwb3J0 IChhbmQKKwkgKiBpbXBvcnQpIHJlc3RyaWN0aW9uczogRG9tZXN0aWMsIEV4cG9ydCBhbmQgRnJh bmNlLiBUaGVzZSBhcmUgc2luY2UgbG9uZworCSAqIHJlbW92ZWQgd2l0aCBhbGwgY2lwaGVycyBi ZWluZyBlbmFibGVkIGJ5IGRlZmF1bHQuIER1ZSB0byBiYWNrd2FyZHMKKwkgKiBjb21wYXRpYmls aXR5LCB0aGUgb2xkIEFQSSBpcyBzdGlsbCB1c2VkIGV2ZW4gdGhvdWdoIGFsbCB0aHJlZSBwb2xp Y2llcworCSAqIG5vdyBkbyB0aGUgc2FtZSB0aGluZy4KKwkgKgorCSAqIElmIFNTTENpcGhlclN1 aXRlcyBkZWZpbmUgYSBwb2xpY3kgb2YgdGhlIHVzZXIsIHdlIHNldCB0aGF0IHJhdGhlciB0aGFu CisJICogZW5hYmxpbmcgYWxsIGNpcGhlcnMgdmlhIE5TU19TZXREb21lc3RpY1BvbGljeS4KKwkg KgorCSAqIFRPRE86IHdoaWxlIHRoaXMgY29kZSB3b3JrcywgdGhlIHNldCBvZiBjaXBoZXJzIHdo aWNoIGNhbiBiZSBzZXQgYW5kCisJICogc3RpbGwgZW5kIHVwIHdpdGggYSB3b3JraW5nIHNvY2tl dCBpcyB3b2VmdWxseSB1bmRlcmRvY3VtZW50ZWQgZm9yCisJICogYW55dGhpbmcgbW9yZSByZWNl bnQgdGhhbiBTU0x2MyAodGhlIGNvZGUgZm9yIFRMUyBhY3R1YWxseSBjYWxscyBzc2wzCisJICog ZnVuY3Rpb25zIHVuZGVyIHRoZSBob29kIGZvciBTU0xfQ2lwaGVyUHJlZlNldCksIHNvIGl0J3Mg dW5jbGVhciBpZgorCSAqIHRoaXMgaXMgaGVscGZ1bCBvciBub3QuIFVzaW5nIHRoZSBwb2xpY2ll cyB3b3JrcywgYnV0IG1heSBiZSB0b28KKwkgKiBjb2Fyc2VseSBncmFpbmVkLgorCSAqCisJICog QW5vdGhlciBUT0RPOiBUaGUgU1NMX0ltcGxlbWVudGVkQ2lwaGVycyB0YWJsZSByZXR1cm5lZCB3 aXRoIGNhbGxpbmcKKwkgKiBTU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJzIGlzIHNvcnRlZCBpbiBz ZXJ2ZXIgcHJlZmVyZW5jZSBvcmRlci4gU29ydGluZworCSAqIFNTTENpcGhlclN1aXRlcyBhY2Nv cmRpbmcgdG8gdGhlIG9yZGVyIG9mIHRoZSBjaXBoZXJzIHRoZXJlaW4gY291bGQgYmUKKwkgKiBh IHdheSB0byBpbXBsZW1lbnQgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyAtIGlmIHdlIGF0IGFs bCB3YW50IHRvIHVzZQorCSAqIGNpcGhlciBzZWxlY3Rpb24gZm9yIE5TUyBsaWtlIGhvdyB3ZSBk byBpdCBmb3IgT3BlblNTTCB0aGF0IGlzLgorCSAqLworCisJLyoKKwkgKiBJZiBubyBjaXBoZXJz IGFyZSBzcGVjaWZpZWQsIGVuYWJsZSB0aGVtIGFsbC4KKwkgKi8KKwlpZiAoIVNTTENpcGhlclN1 aXRlcyB8fCBzdHJsZW4oU1NMQ2lwaGVyU3VpdGVzKSA9PSAwKQorCXsKKwkJc3RhdHVzID0gTlNT X1NldERvbWVzdGljUG9saWN5KCk7CisJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJewor CQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShlcnJtc2coInVuYWJsZSB0byBzZXQgY2lwaGVy IHBvbGljeTogJXMiLAorCQkJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7 CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJY2hhcgkgICAqY2lwaGVycywK KwkJCQkgICAqYzsKKworCQljaGFyCSAgICpzZXAgPSAiOjssICI7CisJCVBSVWludDE2CWNpcGhl cmNvZGU7CisJCWNvbnN0CQlQUlVpbnQxNiAqbnNzX2NpcGhlcnM7CisKKwkJLyoKKwkJICogSWYg dGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHNldCBvZiBwcmVmZXJyZWQgY2lwaGVyIHN1aXRlcyB3 ZSBzdGFydAorCQkgKiBieSB0dXJuaW5nIG9mZiBhbGwgdGhlIGV4aXN0aW5nIHN1aXRlcyB0byBh dm9pZCB0aGUgcmlzayBvZiBkb3duLQorCQkgKiBncmFkZXMgdG8gYSB3ZWFrZXIgY2lwaGVyIHRo YW4gZXhwZWN0ZWQuCisJCSAqLworCQluc3NfY2lwaGVycyA9IFNTTF9HZXRJbXBsZW1lbnRlZENp cGhlcnMoKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBTU0xfR2V0TnVtSW1wbGVtZW50ZWRDaXBo ZXJzKCk7IGkrKykKKwkJCVNTTF9DaXBoZXJQcmVmU2V0KG1vZGVsLCBuc3NfY2lwaGVyc1tpXSwg UFJfRkFMU0UpOworCisJCWNpcGhlcnMgPSBwc3RyZHVwKFNTTENpcGhlclN1aXRlcyk7CisKKwkJ Zm9yIChjID0gc3RydG9rKGNpcGhlcnMsIHNlcCk7IGM7IGMgPSBzdHJ0b2soTlVMTCwgc2VwKSkK KwkJeworCQkJY2lwaGVyY29kZSA9IHBnX2ZpbmRfY2lwaGVyKGMpOworCQkJaWYgKGNpcGhlcmNv ZGUgIT0gSU5WQUxJRF9DSVBIRVIpCisJCQl7CisJCQkJc3RhdHVzID0gU1NMX0NpcGhlclByZWZT ZXQobW9kZWwsIGNpcGhlcmNvZGUsIFBSX1RSVUUpOworCQkJCWlmIChzdGF0dXMgIT0gU0VDU3Vj Y2VzcykKKwkJCQl7CisJCQkJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCQkJCShlcnJtc2coImlu dmFsaWQgY2lwaGVyLXN1aXRlIHNwZWNpZmllZDogJXMiLCBjKSkpOworCQkJCQlyZXR1cm4gLTE7 CisJCQkJfQorCQkJfQorCQl9CisKKwkJcGZyZWUoY2lwaGVycyk7CisJfQorCisJaWYgKFNTTF9W ZXJzaW9uUmFuZ2VTZXQobW9kZWwsICZkZXNpcmVkX3NzbHZlcikgIT0gU0VDU3VjY2VzcykKKwl7 CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2coInVuYWJsZSB0byBzZXQgcmVxdWVz dGVkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlIikpKTsKKwkJcmV0dXJuIC0xOworCX0KKwor CS8qCisJICogU2V0IHVwIHRoZSBjdXN0b20gSU8gbGF5ZXIuCisJICovCisJbGF5ZXIgPSBpbml0 X2lvbGF5ZXIocG9ydCk7CisJaWYgKCFsYXllcikKKwkJcmV0dXJuIC0xOworCisJaWYgKFBSX1B1 c2hJT0xheWVyKHByX2ZkLCBQUl9UT1BfSU9fTEFZRVIsIGxheWVyKSAhPSBQUl9TVUNDRVNTKQor CXsKKwkJUFJfQ2xvc2UobGF5ZXIpOworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNn KCJ1bmFibGUgdG8gcHVzaCBJTyBsYXllciIpKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlzZXJ2 ZXJfY2VydCA9IFBLMTFfRmluZENlcnRGcm9tTmlja25hbWUoc3NsX2NlcnRfZmlsZSwgKHZvaWQg KikgcG9ydCk7CisJaWYgKCFzZXJ2ZXJfY2VydCkKKwl7CisJCWlmIChkdW1teV9zc2xfcGFzc3dk X2NiX2NhbGxlZCkKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShlcnJtc2coInVu YWJsZSB0byBsb2FkIGNlcnRpZmljYXRlIGZvciBcIiVzXCI6ICVzIiwKKwkJCQkJCQlzc2xfY2Vy dF9maWxlLCBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKSwKKwkJCQkJIGVycmhpbnQo IlRoZSBjZXJ0aWZpY2F0ZSByZXF1aXJlcyBhIHBhc3N3b3JkLiIpKSk7CisJCQlyZXR1cm4gLTE7 CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkJKGVycm1zZygi dW5hYmxlIHRvIGZpbmQgY2VydGlmaWNhdGUgZm9yIFwiJXNcIjogJXMiLAorCQkJCQkJCXNzbF9j ZXJ0X2ZpbGUsIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7CisJCQlyZXR1cm4g LTE7CisJCX0KKwl9CisKKwlwcml2YXRlX2tleSA9IFBLMTFfRmluZEtleUJ5QW55Q2VydChzZXJ2 ZXJfY2VydCwgKHZvaWQgKikgcG9ydCk7CisJaWYgKCFwcml2YXRlX2tleSkKKwl7CisJCWlmIChk dW1teV9zc2xfcGFzc3dkX2NiX2NhbGxlZCkKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJ CQkJCShlcnJtc2coInVuYWJsZSB0byBsb2FkIHByaXZhdGUga2V5IGZvciBcIiVzXCI6ICVzIiwK KwkJCQkJCQlzc2xfY2VydF9maWxlLCBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKSwK KwkJCQkJIGVycmhpbnQoIlRoZSBwcml2YXRlIGtleSByZXF1aXJlcyBhIHBhc3N3b3JkLiIpKSk7 CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0KENPTU1FUlJPUiwK KwkJCQkJKGVycm1zZygidW5hYmxlIHRvIGZpbmQgcHJpdmF0ZSBrZXkgZm9yIFwiJXNcIjogJXMi LAorCQkJCQkJCXNzbF9jZXJ0X2ZpbGUsIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkp KSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwkvKgorCSAqIE5TUyBkb2Vzbid0IHVzZSBD UkwgZmlsZXMgb24gZGlzaywgc28gd2UgdXNlIHRoZSBzc2xfY3JsX2ZpbGUgZ3VjIHRvCisJICog Y29udGFpbiB0aGUgQ1JMIG5pY2tuYW1lIGZvciB0aGUgY3VycmVudCBzZXJ2ZXIgY2VydGlmaWNh dGUgaW4gdGhlIE5TUworCSAqIGNlcnRpZmljYXRlIGRhdGFiYXNlLiBUaGUgbWFpbiBkaWZmZXJl bmNlIGZyb20gdGhlIE9wZW5TU0wgYmFja2VuZCBpcworCSAqIHRoYXQgTlNTIHdpbGwgdXNlIHRo ZSBDUkwgcmVnYXJkbGVzcywgYnV0IGJlaW5nIGFibGUgdG8gbWFrZSBzdXJlIHRoZQorCSAqIENS TCBpcyBsb2FkZWQgc2VlbXMgbGlrZSBhIGdvb2QgZmVhdHVyZS4KKwkgKi8KKwlpZiAoc3NsX2Ny bF9maWxlWzBdKQorCXsKKwkJU0VDSVRFTV9Db3B5SXRlbShOVUxMLCAmY3JsbmFtZSwgJnNlcnZl cl9jZXJ0LT5kZXJTdWJqZWN0KTsKKwkJY3JsID0gU0VDX0ZpbmRDcmxCeU5hbWUoQ0VSVF9HZXRE ZWZhdWx0Q2VydERCKCksICZjcmxuYW1lLCBTRUNfQ1JMX1RZUEUpOworCQlpZiAoIWNybCkKKwkJ eworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShlcnJtc2coInNwZWNpZmllZCBDUkwgbm90 IGZvdW5kIGluIGRhdGFiYXNlIikpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlTRUNfRGVzdHJv eUNybChjcmwpOworCX0KKworCS8qCisJICogRmluYWxseSB3ZSBtdXN0IGNvbmZpZ3VyZSB0aGUg c29ja2V0IGZvciBiZWluZyBhIHNlcnZlciBieSBzZXR0aW5nIHRoZQorCSAqIGNlcnRpZmljYXRl IGFuZCBrZXkuIFRoZSBOVUxMIHBhcmFtZXRlciBpcyBhbiBTU0xFeHRyYVNlcnZlckNlcnREYXRh CisJICogcG9pbnRlciB3aXRoIHRoZSBmaW5hbCBwYXJhbWV0ZXIgYmVpbmcgdGhlIHNpemUgb2Yg dGhlIGV4dHJhIHNlcnZlcgorCSAqIGNlcnQgZGF0YSBzdHJ1Y3R1cmUgcG9pbnRlZCB0by4gVGhp cyBpcyB0eXBpY2FsbHkgb25seSB1c2VkIGZvcgorCSAqIGNyZWRlbnRpYWwgZGVsZWdhdGlvbi4K KwkgKi8KKwlzdGF0dXMgPSBTU0xfQ29uZmlnU2VydmVyQ2VydChtb2RlbCwgc2VydmVyX2NlcnQs IHByaXZhdGVfa2V5LCBOVUxMLCAwKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJewor CQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29uZmlndXJlIHNl cnZlciBmb3IgVExTIHNlcnZlciBjb25uZWN0aW9uczogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVz c2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXNzbF9sb2FkZWRf dmVyaWZ5X2xvY2F0aW9ucyA9IHRydWU7CisKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIG5v IGxvbmdlciBoYXZlIHVzZSBmb3IgdGhlIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlCisJICoga2V5 IGFzIHRoZXkgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIHRoZSBjb250ZXh0IGJ5IE5TUy4gRGVzdHJv eSBvdXIKKwkgKiBjb3BpZXMgZXhwbGljaXRseSB0byBjbGVhbiBvdXQgdGhlIG1lbW9yeSBhcyBi ZXN0IHdlIGNhbi4KKwkgKi8KKwlDRVJUX0Rlc3Ryb3lDZXJ0aWZpY2F0ZShzZXJ2ZXJfY2VydCk7 CisJU0VDS0VZX0Rlc3Ryb3lQcml2YXRlS2V5KHByaXZhdGVfa2V5KTsKKworCS8qIFNldCB1cCBj ZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBjYWxsYmFjayAqLworCXN0YXR1cyA9IFNTTF9BdXRo Q2VydGlmaWNhdGVIb29rKG1vZGVsLCBwZ19jZXJ0X2F1dGhfaGFuZGxlciwgKHZvaWQgKikgcG9y dCk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1Is CisJCQkJKGVycm1zZygidW5hYmxlIHRvIGluc3RhbGwgYXV0aGNlcnQgaG9vazogJXMiLAorCQkJ CQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIC0xOworCX0K KwlTU0xfQmFkQ2VydEhvb2sobW9kZWwsIHBnX2JhZF9jZXJ0X2hhbmRsZXIsICh2b2lkICopIHBv cnQpOworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9SRVFVRVNUX0NFUlRJRklDQVRFLCBQUl9U UlVFKTsKKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfUkVRVUlSRV9DRVJUSUZJQ0FURSwgUFJf RkFMU0UpOworCisJcG9ydC0+cHJfZmQgPSBTU0xfSW1wb3J0RkQobW9kZWwsIHByX2ZkKTsKKwlp ZiAoIXBvcnQtPnByX2ZkKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygi dW5hYmxlIHRvIGluaXRpYWxpemUiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJUFJfQ2xvc2Uo bW9kZWwpOworCisJLyoKKwkgKiBGb3JjZSBhIGhhbmRzaGFrZSBvbiB0aGUgbmV4dCBJL08gcmVx dWVzdCwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgbWVhbnMKKwkgKiB0aGF0IHdlIGFyZSBhIHNlcnZl ciwgUFJfRkFMU0Ugd291bGQgaW5kaWNhdGUgYmVpbmcgYSBjbGllbnQuIE5TUFIKKwkgKiByZXF1 aXJlcyB1cyB0byBjYWxsIFNTTF9SZXNldEhhbmRzaGFrZSBzaW5jZSB3ZSBpbXBvcnRlZCBhbiBh bHJlYWR5CisJICogZXN0YWJsaXNoZWQgc29ja2V0LgorCSAqLworCXN0YXR1cyA9IFNTTF9SZXNl dEhhbmRzaGFrZShwb3J0LT5wcl9mZCwgUFJfVFJVRSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNj ZXNzKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGlu aXRpYXRlIGhhbmRzaGFrZTogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJv cigpKSkpKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzdGF0dXMgPSBTU0xfRm9yY2VIYW5kc2hha2Uo cG9ydC0+cHJfZmQpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQo Q09NTUVSUk9SLAorCQkJCShlcnJtc2coInVuYWJsZSB0byBoYW5kc2hha2U6ICVzIiwKKwkJCQkJ CXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7CisJCXJldHVybiAtMTsKKwl9CisK Kwlwb3J0LT5zc2xfaW5fdXNlID0gdHJ1ZTsKKworCS8qIFJlZ2lzdGVyIG91dCBzaHV0ZG93biBj YWxsYmFjayAqLworCU5TU19SZWdpc3RlclNodXRkb3duKHBnX1NTTFNodXRkb3duRnVuYywgcG9y dCk7CisKKwlyZXR1cm4gMDsKK30KKworc3NpemVfdAorYmVfdGxzX3JlYWQoUG9ydCAqcG9ydCwg dm9pZCAqcHRyLCBzaXplX3QgbGVuLCBpbnQgKndhaXRmb3IpCit7CisJc3NpemVfdAkJbl9yZWFk OworCVBSRXJyb3JDb2RlIGVycjsKKworCW5fcmVhZCA9IFBSX1JlYWQocG9ydC0+cHJfZmQsIHB0 ciwgbGVuKTsKKworCWlmIChuX3JlYWQgPCAwKQorCXsKKwkJZXJyID0gUFJfR2V0RXJyb3IoKTsK KworCQlpZiAoZXJyID09IFBSX1dPVUxEX0JMT0NLX0VSUk9SKQorCQl7CisJCQkqd2FpdGZvciA9 IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxz ZQorCQkJZXJybm8gPSBFQ09OTlJFU0VUOworCX0KKworCXJldHVybiBuX3JlYWQ7Cit9CisKK3Nz aXplX3QKK2JlX3Rsc193cml0ZShQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4sIGlu dCAqd2FpdGZvcikKK3sKKwlzc2l6ZV90CQluX3dyaXRlOworCVBSRXJyb3JDb2RlIGVycjsKKwlQ UkludG4JCWZsYWdzID0gMDsKKworCS8qCisJICogVGhlIGZsYWdzIHBhcmFtZXRlciB0byBQUl9T ZW5kIGlzIG5vIGxvbmdlciB1c2VkIGFuZCBpcywgYWNjb3JkaW5nIHRvCisJICogdGhlIGRvY3Vt ZW50YXRpb24sIHJlcXVpcmVkIHRvIGJlIHplcm8uCisJICovCisJbl93cml0ZSA9IFBSX1NlbmQo cG9ydC0+cHJfZmQsIHB0ciwgbGVuLCBmbGFncywgUFJfSU5URVJWQUxfTk9fV0FJVCk7CisKKwlp ZiAobl93cml0ZSA8IDApCisJeworCQllcnIgPSBQUl9HZXRFcnJvcigpOworCisJCWlmIChlcnIg PT0gUFJfV09VTERfQkxPQ0tfRVJST1IpCisJCXsKKwkJCSp3YWl0Zm9yID0gV0xfU09DS0VUX1dS SVRFQUJMRTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxzZQorCQkJZXJybm8g PSBFQ09OTlJFU0VUOworCX0KKworCXJldHVybiBuX3dyaXRlOworfQorCit2b2lkCitiZV90bHNf Y2xvc2UoUG9ydCAqcG9ydCkKK3sKKwlpZiAoIXBvcnQpCisJCXJldHVybjsKKworCWlmIChwb3J0 LT5wZWVyX2NuKQorCXsKKwkJU1NMX0ludmFsaWRhdGVTZXNzaW9uKHBvcnQtPnByX2ZkKTsKKwkJ cGZyZWUocG9ydC0+cGVlcl9jbik7CisJCXBvcnQtPnBlZXJfY24gPSBOVUxMOworCX0KKworCVBS X0Nsb3NlKHBvcnQtPnByX2ZkKTsKKwlwb3J0LT5wcl9mZCA9IE5VTEw7CisJcG9ydC0+c3NsX2lu X3VzZSA9IGZhbHNlOworCisJaWYgKG5zc19jb250ZXh0KQorCXsKKwkJTlNTX1NodXRkb3duQ29u dGV4dChuc3NfY29udGV4dCk7CisJCW5zc19jb250ZXh0ID0gTlVMTDsKKwl9Cit9CisKK3ZvaWQK K2JlX3Rsc19kZXN0cm95KHZvaWQpCit7CisJLyoKKwkgKiBJdCByZWFkcyBhIGJpdCBvZGQgdG8g Y2xlYXIgYSBzZXNzaW9uIGNhY2hlIHdoZW4gd2UgYXJlIGRlc3Ryb3lpbmcgdGhlCisJICogY29u dGV4dCBhbHRvZ2V0aGVyLCBidXQgaWYgdGhlIHNlc3Npb24gY2FjaGUgaXNuJ3QgY2xlYXJlZCBi ZWZvcmUKKwkgKiBzaHV0dGluZyBkb3duIHRoZSBjb250ZXh0IGl0IHdpbGwgZmFpbCB3aXRoIFNF Q19FUlJPUl9CVVNZLgorCSAqLworCVNTTF9DbGVhclNlc3Npb25DYWNoZSgpOworfQorCitpbnQK K2JlX3Rsc19nZXRfY2lwaGVyX2JpdHMoUG9ydCAqcG9ydCkKK3sKKwlTRUNTdGF0dXMJc3RhdHVz OworCVNTTENoYW5uZWxJbmZvIGNoYW5uZWw7CisJU1NMQ2lwaGVyU3VpdGVJbmZvIHN1aXRlOwor CisJc3RhdHVzID0gU1NMX0dldENoYW5uZWxJbmZvKHBvcnQtPnByX2ZkLCAmY2hhbm5lbCwgc2l6 ZW9mKGNoYW5uZWwpKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCWdvdG8gZXJyb3I7 CisKKwlzdGF0dXMgPSBTU0xfR2V0Q2lwaGVyU3VpdGVJbmZvKGNoYW5uZWwuY2lwaGVyU3VpdGUs ICZzdWl0ZSwgc2l6ZW9mKHN1aXRlKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQln b3RvIGVycm9yOworCisJcmV0dXJuIHN1aXRlLmVmZmVjdGl2ZUtleUJpdHM7CisKK2Vycm9yOgor CWVyZXBvcnQoV0FSTklORywKKwkJCShlcnJtc2coInVuYWJsZSB0byBleHRyYWN0IFRMUyBzZXNz aW9uIGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3Io KSkpKSk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBiZV90bHNfZ2V0X2NvbXByZXNzaW9uCisg KgorICogTlNTIGRpc2FibGVkIHN1cHBvcnQgZm9yIFRMUyBjb21wcmVzc2lvbiBpbiB2ZXJzaW9u IDMuMzMgYW5kIHJlbW92ZWQgdGhlCisgKiBjb2RlIGluIGEgc3Vic2VxdWVudCByZWxlYXNlLiBU aGUgQVBJIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0CisgKiBjb21wcmVzc2lvbiBh cyB3ZWxsIGFzIGVuYWJsaW5nIGl0IGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5 LCBidXQKKyAqIHdlIGRvbid0IG5lZWQgdG8gY29uc3VsdCBpdCBzaW5jZSBpdCB3YXMgb25seSBh dmFpbGFibGUgZm9yIFNTTHYzIHdoaWNoIHdlCisgKiBkb24ndCBzdXBwb3J0LgorICoKKyAqIGh0 dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDk1ODcKKyAqLwor Ym9vbAorYmVfdGxzX2dldF9jb21wcmVzc2lvbihQb3J0ICpwb3J0KQoreworCXJldHVybiBmYWxz ZTsKK30KKworLyoKKyAqIGJlX3Rsc19nZXRfdmVyc2lvbgorICoKKyAqIFJldHVybnMgdGhlIHBy b3RvY29sIHZlcnNpb24gdXNlZCBmb3IgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiwgb3IgTlVMTCBp bgorICogY2FzZSBvZiBlcnJvcnMuCisgKi8KK2NvbnN0IGNoYXIgKgorYmVfdGxzX2dldF92ZXJz aW9uKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlTU0xDaGFubmVsSW5mbyBj aGFubmVsOworCisJc3RhdHVzID0gU1NMX0dldENoYW5uZWxJbmZvKHBvcnQtPnByX2ZkLCAmY2hh bm5lbCwgc2l6ZW9mKGNoYW5uZWwpKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJewor CQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGV4dHJhY3QgVExTIHNl c3Npb24gaW5mb3JtYXRpb246ICVzIiwKKwkJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJy b3IoKSkpKSk7CisJCXJldHVybiBOVUxMOworCX0KKworCXJldHVybiBzc2xfcHJvdG9jb2xfdmVy c2lvbl90b19zdHJpbmcoY2hhbm5lbC5wcm90b2NvbFZlcnNpb24pOworfQorCitjb25zdCBjaGFy ICoKK2JlX3Rsc19nZXRfY2lwaGVyKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsK KwlTU0xDaGFubmVsSW5mbyBjaGFubmVsOworCVNTTENpcGhlclN1aXRlSW5mbyBzdWl0ZTsKKwor CXN0YXR1cyA9IFNTTF9HZXRDaGFubmVsSW5mbyhwb3J0LT5wcl9mZCwgJmNoYW5uZWwsIHNpemVv ZihjaGFubmVsKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlnb3RvIGVycm9yOwor CisJc3RhdHVzID0gU1NMX0dldENpcGhlclN1aXRlSW5mbyhjaGFubmVsLmNpcGhlclN1aXRlLCAm c3VpdGUsIHNpemVvZihzdWl0ZSkpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJZ290 byBlcnJvcjsKKworCXJldHVybiBzdWl0ZS5jaXBoZXJTdWl0ZU5hbWU7CisKK2Vycm9yOgorCWVy ZXBvcnQoV0FSTklORywKKwkJCShlcnJtc2coInVuYWJsZSB0byBleHRyYWN0IFRMUyBzZXNzaW9u IGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkp KSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK2JlX3Rsc19nZXRfcGVlcl9zdWJqZWN0X25h bWUoUG9ydCAqcG9ydCwgY2hhciAqcHRyLCBzaXplX3QgbGVuKQoreworCUNFUlRDZXJ0aWZpY2F0 ZSAqY2VydGlmaWNhdGU7CisKKwljZXJ0aWZpY2F0ZSA9IFNTTF9QZWVyQ2VydGlmaWNhdGUocG9y dC0+cHJfZmQpOworCWlmIChjZXJ0aWZpY2F0ZSkKKwkJc3RybGNweShwdHIsIENFUlRfTmFtZVRv QXNjaWkoJmNlcnRpZmljYXRlLT5zdWJqZWN0KSwgbGVuKTsKKwllbHNlCisJCXB0clswXSA9ICdc MCc7Cit9CisKK3ZvaWQKK2JlX3Rsc19nZXRfcGVlcl9pc3N1ZXJfbmFtZShQb3J0ICpwb3J0LCBj aGFyICpwdHIsIHNpemVfdCBsZW4pCit7CisJQ0VSVENlcnRpZmljYXRlICpjZXJ0aWZpY2F0ZTsK KworCWNlcnRpZmljYXRlID0gU1NMX1BlZXJDZXJ0aWZpY2F0ZShwb3J0LT5wcl9mZCk7CisJaWYg KGNlcnRpZmljYXRlKQorCQlzdHJsY3B5KHB0ciwgQ0VSVF9OYW1lVG9Bc2NpaSgmY2VydGlmaWNh dGUtPmlzc3VlciksIGxlbik7CisJZWxzZQorCQlwdHJbMF0gPSAnXDAnOworfQorCit2b2lkCiti ZV90bHNfZ2V0X3BlZXJfc2VyaWFsKFBvcnQgKnBvcnQsIGNoYXIgKnB0ciwgc2l6ZV90IGxlbikK K3sKKwlDRVJUQ2VydGlmaWNhdGUgKmNlcnRpZmljYXRlOworCisJY2VydGlmaWNhdGUgPSBTU0xf UGVlckNlcnRpZmljYXRlKHBvcnQtPnByX2ZkKTsKKwlpZiAoY2VydGlmaWNhdGUpCisJCXNucHJp bnRmKHB0ciwgbGVuLCAiJWxpIiwgREVSX0dldEludGVnZXIoJihjZXJ0aWZpY2F0ZS0+c2VyaWFs TnVtYmVyKSkpOworCWVsc2UKKwkJcHRyWzBdID0gJ1wwJzsKK30KKworY2hhciAqCitiZV90bHNf Z2V0X2NlcnRpZmljYXRlX2hhc2goUG9ydCAqcG9ydCwgc2l6ZV90ICpsZW4pCit7CisJQ0VSVENl cnRpZmljYXRlICpjZXJ0aWZpY2F0ZTsKKwlTRUNPaWRUYWcJc2lnbmF0dXJlX2FsZzsKKwlTRUNP aWRUYWcJZGlnZXN0X2FsZzsKKwlpbnQJCQlkaWdlc3RfbGVuOworCWNvbnN0IE5TU1NpZ25hdHVy ZUFsZ29yaXRobXMgKmNhbmRpZGF0ZTsKKwlTRUNTdGF0dXMJc3RhdHVzOworCVBMQXJlbmFQb29s ICphcmVuYSA9IE5VTEw7CisJU0VDSXRlbQkJZGlnZXN0OworCWNoYXIJICAgKnJldDsKKworCSps ZW4gPSAwOworCWNlcnRpZmljYXRlID0gU1NMX0xvY2FsQ2VydGlmaWNhdGUocG9ydC0+cHJfZmQp OworCWlmICghY2VydGlmaWNhdGUpCisJCXJldHVybiBOVUxMOworCisJc2lnbmF0dXJlX2FsZyA9 IFNFQ09JRF9HZXRBbGdvcml0aG1UYWcoJmNlcnRpZmljYXRlLT5zaWduYXR1cmUpOworCisJY2Fu ZGlkYXRlID0gTlNTX1NDUkFNRGlnZXN0QWxnb3JpdGhtOworCXdoaWxlIChjYW5kaWRhdGUtPnNp Z25hdHVyZSkKKwl7CisJCWlmIChzaWduYXR1cmVfYWxnID09IGNhbmRpZGF0ZS0+c2lnbmF0dXJl KQorCQl7CisJCQlkaWdlc3RfYWxnID0gY2FuZGlkYXRlLT5oYXNoOworCQkJZGlnZXN0X2xlbiA9 IGNhbmRpZGF0ZS0+bGVuOworCQkJYnJlYWs7CisJCX0KKworCQljYW5kaWRhdGUrKzsKKwl9CisK KwlpZiAoIWNhbmRpZGF0ZS0+c2lnbmF0dXJlKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZp bmQgZGlnZXN0IGZvciBPSUQgJyVzJyIsCisJCQkgU0VDT0lEX0ZpbmRPSURUYWdEZXNjcmlwdGlv bihzaWduYXR1cmVfYWxnKSk7CisKKwlhcmVuYSA9IFBPUlRfTmV3QXJlbmEoU0VDX0FTTjFfREVG QVVMVF9BUkVOQV9TSVpFKTsKKwlkaWdlc3QuZGF0YSA9IFBPUlRfQXJlbmFaQWxsb2MoYXJlbmEs IHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIGRpZ2VzdF9sZW4pOworCWRpZ2VzdC5sZW4gPSBkaWdl c3RfbGVuOworCisJc3RhdHVzID0gUEsxMV9IYXNoQnVmKGRpZ2VzdF9hbGcsIGRpZ2VzdC5kYXRh LAorCQkJCQkJICBjZXJ0aWZpY2F0ZS0+ZGVyQ2VydC5kYXRhLAorCQkJCQkJICBjZXJ0aWZpY2F0 ZS0+ZGVyQ2VydC5sZW4pOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJUE9S VF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RSVUUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXQg PSBwYWxsb2MoZGlnZXN0Lmxlbik7CisJbWVtY3B5KHJldCwgZGlnZXN0LmRhdGEsIGRpZ2VzdC5s ZW4pOworCSpsZW4gPSBkaWdlc3RfbGVuOworCVBPUlRfRnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVF KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoJCQkJCQlJbnRlcm5hbCBmdW5j dGlvbnMJCQkJCQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBkZWZhdWx0X25zc190bHNfaW5pdAor ICoKKyAqIFRoZSBkZWZhdWx0IFRMUyBpbml0IGhvb2sgZnVuY3Rpb24gd2hpY2ggdXNlcnMgY2Fu IG92ZXJyaWRlIGZvciBpbnN0YWxsaW5nCisgKiB0aGVpciBvd24gcGFzc3BocmFzZSBjYWxsYmFj a3MgYW5kIHNpbWlsYXIgYWN0aW9ucy4gSW4gY2FzZSBubyBjYWxsYmFjayBoYXMKKyAqIGJlZW4g Y29uZmlndXJlZCwgb3IgdGhlIGNhbGxiYWNrIGlzbid0IHJlbG9hZCBjYXBhYmxlIGR1cmluZyBh IHNlcnZlcgorICogcmVsb2FkLCB0aGUgZHVtbXkgY2FsbGJhY2sgd2lsbCBiZSBpbnN0YWxsZWQu CisgKgorICogVGhlIHByaXZhdGUgZGF0YSBmb3IgdGhlIGNhbGxiYWNrIGlzIHNldCBkaWZmZXJl bnRseSBkZXBlbmRpbmcgb24gaG93IGl0J3MKKyAqIGludm9rZWQuIEZvciBjYWxscyB3aGljaCBt YXkgaW52b2tlIHRoZSBjYWxsYmFjayBkZWVwZXIgaW4gdGhlIGNhbGxzdGFjaworICogdGhlIHBy aXZhdGUgZGF0YSBpcyBzZXQgd2l0aCBTU0xfU2V0UEtDUzExUGluQXJnLiBXaGVuIHRoZSBjYWxs IGlzIGRpcmVjdGx5CisgKiBpbnZva2luZyB0aGUgY2FsbGJhY2ssIGxpa2UgUEsxMV9GaW5kQ2Vy dEZyb21OaWNrbmFtZSwgdGhlbiB0aGUgcHJpdmF0ZQorICogZGF0YSBpcyBwYXNzZWQgYXMgYSBw YXJhbWV0ZXIuIFNldHRpbmcgdGhlIGRhdGEgd2l0aCBTU0xfU2V0UEtDUzExUGluQXJnIGlzCisg KiB0aHVzIG5vdCByZXF1aXJlZCBidXQgZ29vZCBwcmFjdGljZS4KKyAqCisgKiBOU1MgZG9lc24n dCBwcm92aWRlIGEgZGVmYXVsdCBjYWxsYmFjayBsaWtlIE9wZW5TU0wgZG9lcywgYnV0IGEgY2Fs bGJhY2sgaXMKKyAqIHJlcXVpcmVkIHRvIGJlIHNldC4gIFRoZSBwYXNzd29yZCBjYWxsYmFjayBj YW4gYmUgaW5zdGFsbGVkIGF0IGFueSB0aW1lLCBidXQKKyAqIHNldHRpbmcgdGhlIHByaXZhdGUg ZGF0YSB3aXRoIFNTTF9TZXRQS0NTMTFQaW5BcmcgcmVxdWlyZXMgYSBQUiBGaWxlZGVzYy4KKyAq Lworc3RhdGljIHZvaWQKK2RlZmF1bHRfbnNzX3Rsc19pbml0KGJvb2wgaXNTZXJ2ZXJTdGFydCkK K3sKKwkvKgorCSAqIE5vIHVzZXItZGVmaW5lZCBjYWxsYmFjayBoYXMgYmVlbiBjb25maWd1cmVk LCBpbnN0YWxsIHRoZSBkdW1teSBjYWxsLQorCSAqIGJhY2sgc2luY2Ugd2UgbXVzdCBzZXQgc29t ZXRoaW5nLgorCSAqLworCWlmICghc3NsX3Bhc3NwaHJhc2VfY29tbWFuZFswXSkKKwkJUEsxMV9T ZXRQYXNzd29yZEZ1bmMoZHVtbXlfc3NsX3Bhc3NwaHJhc2VfY2IpOworCWVsc2UKKwl7CisJCS8q CisJCSAqIFRoZXJlIGlzIGEgdXNlci1kZWZpbmVkIGNhbGxiYWNrLCBzZXQgaXQgdW5sZXNzIHdl IGFyZSBpbiBhIHJlc3RhcnQKKwkJICogYW5kIGNhbm5vdCBoYW5kbGUgcmVzdGFydHMgZHVlIHRv IGFuIGludGVyYWN0aXZlIGNhbGxiYWNrLgorCQkgKi8KKwkJaWYgKGlzU2VydmVyU3RhcnQpCisJ CQlQSzExX1NldFBhc3N3b3JkRnVuYyhleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYik7CisJCWVs c2UKKwkJeworCQkJaWYgKHNzbF9wYXNzcGhyYXNlX2NvbW1hbmRfc3VwcG9ydHNfcmVsb2FkKQor CQkJCVBLMTFfU2V0UGFzc3dvcmRGdW5jKGV4dGVybmFsX3NzbF9wYXNzcGhyYXNlX2NiKTsKKwkJ CWVsc2UKKwkJCQlQSzExX1NldFBhc3N3b3JkRnVuYyhkdW1teV9zc2xfcGFzc3BocmFzZV9jYik7 CisJCX0KKwl9Cit9CisKKy8qCisgKiBleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYgorICoKKyAq IFJ1bnMgdGhlIGNhbGxiYWNrIGNvbmZpZ3VyZWQgYnkgc3NsX3Bhc3NwaHJhc2VfY29tbWFuZCBh bmQgcmV0dXJucyB0aGUKKyAqIGNhcHR1cmVkIHBhc3N3b3JkIGJhY2sgdG8gTlNTLgorICovCitz dGF0aWMgY2hhciAqCitleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYihQSzExU2xvdEluZm8gKnNs b3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKQoreworCS8qCisJICogTlNTIHVzZSBhIGhhcmRj b2RlZCAyNTYgYnl0ZSBidWZmZXIgZm9yIHJlYWRpbmcgdGhlIHBhc3N3b3JkIHNvIHNldCB0aGUK KwkgKiBzYW1lIGxpbWl0IGZvciBvdXIgY2FsbGJhY2sgYnVmZmVyLgorCSAqLworCWNoYXIJCWJ1 ZlsyNTZdOworCWludAkJCWxlbjsKKwljaGFyCSAgICpwYXNzd29yZCA9IE5VTEw7CisJY2hhcgkg ICAqcHJvbXB0OworCisJLyoKKwkgKiBTaW5jZSB0aGVyZSBpcyBubyBwYXNzd29yZCBjYWxsYmFj ayBpbiBOU1Mgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyB1cCwKKwkgKiBpdCBtYWtlcyBsaXR0bGUg c2Vuc2UgdG8gY3JlYXRlIGFuIGludGVyYWN0aXZlIGNhbGxiYWNrLiBUaHVzLCBpZiB0aGlzCisJ ICogaXMgYSByZXRyeSBhdHRlbXB0IHRoZW4gZ2l2ZSB1cCBpbW1lZGlhdGVseS4KKwkgKi8KKwlp ZiAocmV0cnkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDb25zdHJ1Y3QgdGhlIHNhbWUg cHJvbXB0IHRoYXQgTlNTIHVzZXMgaW50ZXJuYWxseSBldmVuIHRob3VnaCBpdCBpcworCSAqIHVu bGlrZWx5IHRvIHNlcnZlIG11Y2ggcHVycG9zZSwgYnV0IHdlIG11c3Qgc2V0IGEgcHJvbXB0IHNv IHdlIG1pZ2h0IGFzCisJICogd2VsbCBkbyBpdCByaWdodC4KKwkgKi8KKwlwcm9tcHQgPSBwc3By aW50ZigiRW50ZXIgUGFzc3dvcmQgb3IgUGluIGZvciBcIiVzXCI6IiwKKwkJCQkJICBQSzExX0dl dFRva2VuTmFtZShzbG90KSk7CisKKwlsZW4gPSBydW5fc3NsX3Bhc3NwaHJhc2VfY29tbWFuZChw cm9tcHQsIHNzbF9pc19zZXJ2ZXJfc3RhcnQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCXBmcmVlKHBy b21wdCk7CisKKwlpZiAoIWxlbikKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEF0IGxlYXN0 IG9uZSBieXRlIHdpdGggcGFzc3dvcmQgY29udGVudCB3YXMgcmV0dXJuZWQsIGFuZCBOU1MgcmVx dWlyZXMKKwkgKiB0aGF0IHdlIHJldHVybiBpdCBhbGxvY2F0ZWQgaW4gTlNTIGNvbnRyb2xsZWQg bWVtb3J5LiBJZiB3ZSBmYWlsIHRvCisJICogYWxsb2NhdGUgdGhlbiBhYm9ydCB3aXRob3V0IHBh c3NpbmcgYmFjayBOVUxMIGFuZCBidWJibGUgdXAgdGhlIGVycm9yCisJICogb24gdGhlIFBHIHNp ZGUuCisJICovCisJcGFzc3dvcmQgPSAoY2hhciAqKSBQUl9NYWxsb2MobGVuICsgMSk7CisJaWYg KCFwYXNzd29yZCkKKwl7CisJCWV4cGxpY2l0X2J6ZXJvKGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJ IGVycm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CisJfQorCXN0cmxjcHkocGFzc3dvcmQsIGJ1Ziwg c2l6ZW9mKHBhc3N3b3JkKSk7CisJZXhwbGljaXRfYnplcm8oYnVmLCBzaXplb2YoYnVmKSk7CisK KwlyZXR1cm4gcGFzc3dvcmQ7Cit9CisKKy8qCisgKiBkdW1teV9zc2xfcGFzc3BocmFzZV9jYgor ICoKKyAqIFJldHVybiB1bnN1Y2Nlc3NmdWwgaWYgd2UgYXJlIGFza2VkIHRvIHByb3ZpZGUgdGhl IHBhc3NwaHJhc2UgZm9yIGEgY2VydCBvcgorICoga2V5LCB3aXRob3V0IGhhdmluZyBhIHBhc3Nw aHJhc2UgY2FsbGJhY2sgaW5zdGFsbGVkLgorICovCitzdGF0aWMgY2hhciAqCitkdW1teV9zc2xf cGFzc3BocmFzZV9jYihQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJn KQoreworCWR1bW15X3NzbF9wYXNzd2RfY2JfY2FsbGVkID0gdHJ1ZTsKKwlyZXR1cm4gTlVMTDsK K30KKworc3RhdGljIFNFQ1N0YXR1cworcGdfYmFkX2NlcnRfaGFuZGxlcih2b2lkICphcmcsIFBS RmlsZURlc2MgKmZkKQoreworCVBvcnQJICAgKnBvcnQgPSAoUG9ydCAqKSBhcmc7CisKKwlwb3J0 LT5wZWVyX2NlcnRfdmFsaWQgPSBmYWxzZTsKKwlyZXR1cm4gU0VDRmFpbHVyZTsKK30KKworLyoK KyAqIHJhd19zdWJqZWN0X2NvbW1vbl9uYW1lCisgKgorICogUmV0dXJucyB0aGUgU3ViamVjdCBD b21tb24gTmFtZSBmb3IgdGhlIGdpdmVuIGNlcnRpZmljYXRlIGFzIGEgcmF3IGNoYXIKKyAqIGJ1 ZmZlciAodGhhdCBpcywgd2l0aG91dCBhbnkgZm9ybSBvZiBlc2NhcGluZyBmb3IgdW5wcmludGFi bGUgY2hhcmFjdGVycyBvcgorICogZW1iZWRkZWQgbnVsbHMpLCB3aXRoIHRoZSBsZW5ndGggb2Yg dGhlIGJ1ZmZlciByZXR1cm5lZCBpbiB0aGUgbGVuIHBhcmFtLgorICogVGhlIGJ1ZmZlciBpcyBh bGxvY2F0ZWQgaW4gdGhlIFRvcE1lbW9yeUNvbnRleHQgYW5kIGlzIGdpdmVuIGEgTlVMTAorICog dGVybWluYXRvciBzbyB0aGF0IGNhbGxlcnMgYXJlIHNhZmUgdG8gY2FsbCBzdHJsZW4oKSBvbiBp dC4KKyAqCisgKiBUaGlzIGlzIHVzZWQgaW5zdGVhZCBvZiBDRVJUX0dldENvbW1vbk5hbWUoKSwg d2hpY2ggYWx3YXlzIHBlcmZvcm1zIHF1b3RpbmcKKyAqIGFuZC9vciBlc2NhcGluZy4gTlNTIGRv ZXNuJ3QgYXBwZWFyIHRvIGdpdmUgdXMgYSB3YXkgdG8gZWFzaWx5IHVuZXNjYXBlIHRoZQorICog cmVzdWx0LCBhbmQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmF3IENOIGludG8gcG9ydC0+cGVlcl9j biBmb3IgY29tcGF0aWJpbGl0eQorICogd2l0aCB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4K KyAqLworc3RhdGljIGNoYXIgKgorcmF3X3N1YmplY3RfY29tbW9uX25hbWUoQ0VSVENlcnRpZmlj YXRlICpjZXJ0LCB1bnNpZ25lZCBpbnQgKmxlbikKK3sKKwlDRVJUTmFtZQlzdWJqZWN0ID0gY2Vy dC0+c3ViamVjdDsKKwlDRVJUUkROCSAgKipyZG47CisKKwlmb3IgKHJkbiA9IHN1YmplY3QucmRu czsgKnJkbjsgcmRuKyspCisJeworCQlDRVJUQVZBCSAgKiphdmE7CisKKwkJZm9yIChhdmEgPSAo KnJkbiktPmF2YXM7ICphdmE7IGF2YSsrKQorCQl7CisJCQlTRUNJdGVtCSAgICpidWY7CisJCQlj aGFyCSAgICpjbjsKKworCQkJaWYgKENFUlRfR2V0QVZBVGFnKCphdmEpICE9IFNFQ19PSURfQVZB X0NPTU1PTl9OQU1FKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBGb3VuZCBhIENOLCBlY29kZSBh bmQgY29weSBpdCBpbnRvIGEgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZlciAqLworCQkJYnVmID0gQ0VS VF9EZWNvZGVBVkFWYWx1ZSgmKCphdmEpLT52YWx1ZSk7CisJCQlpZiAoIWJ1ZikKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIFRoaXMgZmFpbHVyZSBjYXNlIGlzIGRpZmZpY3VsdCB0byB0ZXN0LiAoU2lu Y2UgdGhpcyBjb2RlCisJCQkJICogcnVucyBhZnRlciBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlv biBoYXMgb3RoZXJ3aXNlCisJCQkJICogc3VjY2VlZGVkLCB5b3UnZCBuZWVkIHRvIGNvbnZpbmNl IGEgQ0EgaW1wbGVtZW50YXRpb24gdG8KKwkJCQkgKiBzaWduIGEgY29ycnVwdGVkIGNlcnRpZmlj YXRlIGluIG9yZGVyIHRvIGdldCBoZXJlLikKKwkJCQkgKgorCQkJCSAqIEZvbGxvdyB0aGUgYmVo YXZpb3Igb2YgQ0VSVF9HZXRDb21tb25OYW1lKCkgaW4gdGhpcyBjYXNlIGFuZAorCQkJCSAqIHNp bXBseSByZXR1cm4gTlVMTCwgYXMgaWYgYSBDb21tb24gTmFtZSBoYWQgbm90IGJlZW4gZm91bmQu CisJCQkJICovCisJCQkJZ290byBmYWlsOworCQkJfQorCisJCQljbiA9IE1lbW9yeUNvbnRleHRB bGxvYyhUb3BNZW1vcnlDb250ZXh0LCBidWYtPmxlbiArIDEpOworCQkJbWVtY3B5KGNuLCBidWYt PmRhdGEsIGJ1Zi0+bGVuKTsKKwkJCWNuW2J1Zi0+bGVuXSA9ICdcMCc7CisKKwkJCSpsZW4gPSBi dWYtPmxlbjsKKworCQkJU0VDSVRFTV9GcmVlSXRlbShidWYsIFBSX1RSVUUpOworCQkJcmV0dXJu IGNuOworCQl9CisJfQorCitmYWlsOgorCS8qIE5vdCBmb3VuZC4gKi8KKwkqbGVuID0gMDsKKwly ZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIHBnX2NlcnRfYXV0aF9oYW5kbGVyCisgKgorICogQ2Fs bGJhY2sgZm9yIHZhbGlkYXRpb24gb2YgaW5jb21pbmcgY2VydGlmaWNhdGVzLiBSZXR1cm5pbmcg U0VDRmFpbHVyZSB3aWxsCisgKiBjYXVzZSBOU1MgdG8gdGVybWluYXRlIHRoZSBjb25uZWN0aW9u IGltbWVkaWF0ZWx5LgorICovCitzdGF0aWMgU0VDU3RhdHVzCitwZ19jZXJ0X2F1dGhfaGFuZGxl cih2b2lkICphcmcsIFBSRmlsZURlc2MgKmZkLCBQUkJvb2wgY2hlY2tzaWcsIFBSQm9vbCBpc1Nl cnZlcikKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCVBvcnQJICAgKnBvcnQgPSAoUG9ydCAqKSBh cmc7CisJQ0VSVENlcnRpZmljYXRlICpjZXJ0OworCWNoYXIJICAgKnBlZXJfY247CisJdW5zaWdu ZWQgaW50IGxlbjsKKworCXN0YXR1cyA9IFNTTF9BdXRoQ2VydGlmaWNhdGUoQ0VSVF9HZXREZWZh dWx0Q2VydERCKCksIHBvcnQtPnByX2ZkLCBjaGVja3NpZywgUFJfVFJVRSk7CisJaWYgKHN0YXR1 cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gc3RhdHVzOworCisJcG9ydC0+cGVlcl9jbiA9IE5V TEw7CisJcG9ydC0+cGVlcl9jZXJ0X3ZhbGlkID0gZmFsc2U7CisKKwljZXJ0ID0gU1NMX1BlZXJD ZXJ0aWZpY2F0ZShwb3J0LT5wcl9mZCk7CisJaWYgKCFjZXJ0KQorCXsKKwkJLyogU2hvdWxkbid0 IGJlIHBvc3NpYmxlOyB3aHkgZGlkIHdlIGdldCBhIGNsaWVudCBjZXJ0IGNhbGxiYWNrPyAqLwor CQlBc3NlcnQoY2VydCAhPSBOVUxMKTsKKworCQlQUl9TZXRFcnJvcihTRUNfRVJST1JfTElCUkFS WV9GQUlMVVJFLCAwKTsKKwkJcmV0dXJuIFNFQ0ZhaWx1cmU7CisJfQorCisJcGVlcl9jbiA9IHJh d19zdWJqZWN0X2NvbW1vbl9uYW1lKGNlcnQsICZsZW4pOworCWlmICghcGVlcl9jbikKKwl7CisJ CS8qIE5vIENvbW1vbiBOYW1lLCBidXQgdGhlIGNlcnRpZmljYXRlIG90aGVyd2lzZSBjaGVja3Mg b3V0LiAqLworCQlwb3J0LT5wZWVyX2NlcnRfdmFsaWQgPSB0cnVlOworCisJCXN0YXR1cyA9IFNF Q1N1Y2Nlc3M7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKgorCSAqIFJlamVjdCBlbWJlZGRl ZCBOVUxMcyBpbiBjZXJ0aWZpY2F0ZSBjb21tb24gbmFtZSB0byBwcmV2ZW50IGF0dGFja3MgbGlr ZQorCSAqIENWRS0yMDA5LTQwMzQuCisJICovCisJaWYgKGxlbiAhPSBzdHJsZW4ocGVlcl9jbikp CisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCisJCQkJIGVycm1zZygiU1NMIGNlcnRpZmljYXRlJ3MgY29tbW9uIG5hbWUg Y29udGFpbnMgZW1iZWRkZWQgbnVsbCIpKSk7CisKKwkJcGZyZWUocGVlcl9jbik7CisJCVBSX1Nl dEVycm9yKFNFQ19FUlJPUl9DRVJUX05PVF9WQUxJRCwgMCk7CisKKwkJc3RhdHVzID0gU0VDRmFp bHVyZTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCXBvcnQtPnBlZXJfY24gPSBwZWVyX2NuOwor CXBvcnQtPnBlZXJfY2VydF92YWxpZCA9IHRydWU7CisKKwlzdGF0dXMgPSBTRUNTdWNjZXNzOwor CitjbGVhbnVwOgorCUNFUlRfRGVzdHJveUNlcnRpZmljYXRlKGNlcnQpOworCXJldHVybiBzdGF0 dXM7Cit9CisKK3N0YXRpYyBQUkludDMyCitwZ19zc2xfcmVhZChQUkZpbGVEZXNjICpmZCwgdm9p ZCAqYnVmLCBQUkludDMyIGFtb3VudCwgUFJJbnRuIGZsYWdzLAorCQkJUFJJbnRlcnZhbFRpbWUg dGltZW91dCkKK3sKKwlQUlJlY3ZGTglyZWFkX2ZuOworCVBSSW50MzIJCW5fcmVhZDsKKworCXJl YWRfZm4gPSBmZC0+bG93ZXItPm1ldGhvZHMtPnJlY3Y7CisJbl9yZWFkID0gcmVhZF9mbihmZC0+ bG93ZXIsIGJ1ZiwgYW1vdW50LCBmbGFncywgdGltZW91dCk7CisKKwlyZXR1cm4gbl9yZWFkOwor fQorCitzdGF0aWMgUFJJbnQzMgorcGdfc3NsX3dyaXRlKFBSRmlsZURlc2MgKmZkLCBjb25zdCB2 b2lkICpidWYsIFBSSW50MzIgYW1vdW50LCBQUkludG4gZmxhZ3MsCisJCQkgUFJJbnRlcnZhbFRp bWUgdGltZW91dCkKK3sKKwlQUlNlbmRGTglzZW5kX2ZuOworCVBSSW50MzIJCW5fd3JpdGU7CisK KwlzZW5kX2ZuID0gZmQtPmxvd2VyLT5tZXRob2RzLT5zZW5kOworCW5fd3JpdGUgPSBzZW5kX2Zu KGZkLT5sb3dlciwgYnVmLCBhbW91bnQsIGZsYWdzLCB0aW1lb3V0KTsKKworCXJldHVybiBuX3dy aXRlOworfQorCitzdGF0aWMgUFJTdGF0dXMKK3BnX3NzbF9jbG9zZShQUkZpbGVEZXNjICpmZCkK K3sKKwkvKgorCSAqIERpc2Nvbm5lY3Qgb3VyIHByaXZhdGUgUG9ydCBmcm9tIHRoZSBmZCBiZWZv cmUgY2xvc2luZyBvdXQgdGhlIHN0YWNrLgorCSAqIChEZWJ1ZyBidWlsZHMgb2YgTlNQUiB3aWxs IGFzc2VydCBpZiB3ZSBkbyBub3QuKQorCSAqLworCWZkLT5zZWNyZXQgPSBOVUxMOworCXJldHVy biBQUl9HZXREZWZhdWx0SU9NZXRob2RzKCktPmNsb3NlKGZkKTsKK30KKworc3RhdGljIFBSRmls ZURlc2MgKgoraW5pdF9pb2xheWVyKFBvcnQgKnBvcnQpCit7CisJY29uc3QJCVBSSU9NZXRob2Rz ICpkZWZhdWx0X21ldGhvZHM7CisJUFJGaWxlRGVzYyAqbGF5ZXI7CisKKwkvKgorCSAqIFN0YXJ0 IGJ5IGluaXRpYWxpemluZyBvdXIgbGF5ZXIgd2l0aCBhbGwgdGhlIGRlZmF1bHQgbWV0aG9kcyBz byB0aGF0IHdlCisJICogY2FuIHNlbGVjdGl2ZWx5IG92ZXJyaWRlIHRoZSBvbmVzIHdlIHdhbnQg d2hpbGUgc3RpbGwgZW5zdXJpbmcgdGhhdCB3ZQorCSAqIGhhdmUgYSBjb21wbGV0ZSBsYXllciBz cGVjaWZpY2F0aW9uLgorCSAqLworCWRlZmF1bHRfbWV0aG9kcyA9IFBSX0dldERlZmF1bHRJT01l dGhvZHMoKTsKKwltZW1jcHkoJnByX2lvbWV0aG9kcywgZGVmYXVsdF9tZXRob2RzLCBzaXplb2Yo UFJJT01ldGhvZHMpKTsKKworCXByX2lvbWV0aG9kcy5yZWN2ID0gcGdfc3NsX3JlYWQ7CisJcHJf aW9tZXRob2RzLnNlbmQgPSBwZ19zc2xfd3JpdGU7CisJcHJfaW9tZXRob2RzLmNsb3NlID0gcGdf c3NsX2Nsb3NlOworCisJLyoKKwkgKiBFYWNoIElPIGxheWVyIG11c3QgYmUgaWRlbnRpZmllZCBi eSBhIHVuaXF1ZSBuYW1lLCB3aGVyZSB1bmlxdWVuZXNzIGlzCisJICogcGVyIGNvbm5lY3Rpb24u IEVhY2ggY29ubmVjdGlvbiBpbiBhIHBvc3RncmVzIGNsdXN0ZXIgY2FuIGdlbmVyYXRlIHRoZQor CSAqIGlkZW50aXR5IGZyb20gdGhlIHNhbWUgc3RyaW5nIGFzIHRoZXkgd2lsbCBjcmVhdGUgdGhl aXIgSU8gbGF5ZXJzIG9uCisJICogZGlmZmVyZW50IHNvY2tldHMuIE9ubHkgb25lIGxheWVyIHBl ciBzb2NrZXQgY2FuIGhhdmUgdGhlIHNhbWUgbmFtZS4KKwkgKi8KKwlwcl9pZCA9IFBSX0dldFVu aXF1ZUlkZW50aXR5KCJQb3N0Z3JlU1FMIFNlcnZlciIpOworCWlmIChwcl9pZCA9PSBQUl9JTlZB TElEX0lPX0xBWUVSKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJvdXQgb2Yg bWVtb3J5IHdoZW4gc2V0dGluZyB1cCBUTFMgY29ubmVjdGlvbiIpKSk7CisJCXJldHVybiBOVUxM OworCX0KKworCS8qCisJICogQ3JlYXRlIHRoZSBhY3R1YWwgSU8gbGF5ZXIgYXMgYSBzdHViIHN1 Y2ggdGhhdCBpdCBjYW4gYmUgcHVzaGVkIG9udG8KKwkgKiB0aGUgbGF5ZXIgc3RhY2suIFRoZSBz dGVwIHZpYSBhIHN0dWIgaXMgcmVxdWlyZWQgYXMgd2UgZGVmaW5lIGN1c3RvbQorCSAqIGNhbGxi YWNrcy4KKwkgKi8KKwlsYXllciA9IFBSX0NyZWF0ZUlPTGF5ZXJTdHViKHByX2lkLCAmcHJfaW9t ZXRob2RzKTsKKwlpZiAoIWxheWVyKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNn KCJ1bmFibGUgdG8gY3JlYXRlIE5TUyBJL08gbGF5ZXIiKSkpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisKKwkvKiBTdG9yZSB0aGUgUG9ydCBhcyBwcml2YXRlIGRhdGEgYXZhaWxhYmxlIGluIGNhbGxi YWNrcyAqLworCWxheWVyLT5zZWNyZXQgPSAodm9pZCAqKSBwb3J0OworCisJcmV0dXJuIGxheWVy OworfQorCitzdGF0aWMgY2hhciAqCitzc2xfcHJvdG9jb2xfdmVyc2lvbl90b19zdHJpbmcoaW50 IHYpCit7CisJc3dpdGNoICh2KQorCXsKKwkJCS8qIFNTTCB2MiBhbmQgdjMgYXJlIG5vdCBzdXBw b3J0ZWQgKi8KKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OXzI6CisJCWNhc2UgU1NMX0xJQlJB UllfVkVSU0lPTl8zXzA6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisKKwkJY2FzZSBT U0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA6CisJCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMCIp OworCQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMToKKwkJCXJldHVybiBwc3RyZHVw KCJUTFN2MS4xIik7CisJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8yOgorCQkJcmV0 dXJuIHBzdHJkdXAoIlRMU3YxLjIiKTsKKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18x XzM6CisJCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMyIpOworCX0KKworCXJldHVybiBwc3RyZHVw KCJ1bmtub3duIik7Cit9CisKKworLyoKKyAqIHNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25zcwor ICoJCQlUcmFuc2xhdGUgUG9zdGdyZVNRTCBUTFMgdmVyc2lvbiB0byBOU1MgdmVyc2lvbgorICoK KyAqIFJldHVybnMgemVybyBpbiBjYXNlIHRoZSByZXF1ZXN0ZWQgVExTIHZlcnNpb24gaXMgdW5k ZWZpbmVkIChQR19BTlkpIGFuZAorICogc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLCBvciAt MSBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgdWludDE2Citzc2xfcHJvdG9jb2xfdmVyc2lvbl90 b19uc3MoaW50IHYsIGNvbnN0IGNoYXIgKmd1Y19uYW1lKQoreworCXN3aXRjaCAodikKKwl7CisJ CQkvKgorCQkJICogVGhlcmUgaXMgbm8gU1NMX0xJQlJBUllfIG1hY3JvIGRlZmluZWQgaW4gTlNT IHdpdGggdGhlIHZhbHVlCisJCQkgKiB6ZXJvLCBzbyB3ZSB1c2UgdGhpcyB0byBzaWduYWwgdGhl IGNhbGxlciB0aGF0IHRoZSBoaWdoZXN0CisJCQkgKiB1c2VmdWwgdmVyc2lvbiBzaG91bGQgYmUg c2V0IG9uIHRoZSBjb25uZWN0aW9uLgorCQkJICovCisJCWNhc2UgUEdfVExTX0FOWToKKwkJCXJl dHVybiAwOworCisJCQkvKgorCQkJICogTm8gZ3VhcmQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGVy ZSBhcmUgbm8gdmVyc2lvbnMgb2YgTlNTCisJCQkgKiB3aXRob3V0IHN1cHBvcnQgZm9yIFRMUzEu CisJCQkgKi8KKwkJY2FzZSBQR19UTFMxX1ZFUlNJT046CisJCQlyZXR1cm4gU1NMX0xJQlJBUllf VkVSU0lPTl9UTFNfMV8wOworCQljYXNlIFBHX1RMUzFfMV9WRVJTSU9OOgorI2lmZGVmIFNTTF9M SUJSQVJZX1ZFUlNJT05fVExTXzFfMQorCQkJcmV0dXJuIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExT XzFfMTsKKyNlbHNlCisJCQlicmVhazsKKyNlbmRpZgorCQljYXNlIFBHX1RMUzFfMl9WRVJTSU9O OgorI2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMgorCQkJcmV0dXJuIFNTTF9MSUJS QVJZX1ZFUlNJT05fVExTXzFfMjsKKyNlbHNlCisJCQlicmVhazsKKyNlbmRpZgorCQljYXNlIFBH X1RMUzFfM19WRVJTSU9OOgorI2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMworCQkJ cmV0dXJuIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMzsKKyNlbHNlCisJCQlicmVhazsKKyNl bmRpZgorCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIC0xOworfQorCisvKgor ICogcGdfU1NMZXJybWVzc2FnZQorICoJCUNyZWF0ZSBhbmQgcmV0dXJuIGEgaHVtYW4gcmVhZGFi bGUgZXJyb3IgbWVzc2FnZSBnaXZlbgorICoJCXRoZSBzcGVjaWZpZWQgZXJyb3IgY29kZQorICoK KyAqIFBSX0Vycm9yVG9OYW1lIG9ubHkgY29udmVydHMgdGhlIGVudW0gaWRlbnRpZmllciBvZiB0 aGUgZXJyb3IgdG8gc3RyaW5nLAorICogYnV0IHRoYXQgY2FuIGJlIHF1aXRlIHVzZWZ1bCBmb3Ig ZGVidWdnaW5nIChhbmQgaW4gY2FzZSBQUl9FcnJvclRvU3RyaW5nIGlzCisgKiB1bmFibGUgdG8g cmVuZGVyIGEgbWVzc2FnZSB0aGVuIHdlIGF0IGxlYXN0IGhhdmUgc29tZXRoaW5nKS4KKyAqLwor c3RhdGljIGNoYXIgKgorcGdfU1NMZXJybWVzc2FnZShQUkVycm9yQ29kZSBlcnJjb2RlKQorewor CXJldHVybiBwc3ByaW50ZigiJXMgKCVzKSIsCisJCQkJCVBSX0Vycm9yVG9TdHJpbmcoZXJyY29k ZSwgUFJfTEFOR1VBR0VfSV9ERUZBVUxUKSwKKwkJCQkJUFJfRXJyb3JUb05hbWUoZXJyY29kZSkp OworfQorCisvKgorICogcGdfU1NMU2h1dGRvd25GdW5jCisgKgkJQ2FsbGJhY2sgZm9yIE5TUyBz aHV0ZG93bgorICoKKyAqIElmIE5TUyBpcyB0ZXJtaW5hdGVkIGZyb20gdGhlIG91dHNpZGUgd2hl biB0aGUgY29ubmVjdGlvbiBpcyBzdGlsbCBpbiB1c2UKKyAqIHdlIG11c3QgdHJlYXQgdGhpcyBh cyBwb3RlbnRpYWxseSBob3N0aWxlIGFuZCBpbW1lZGlhdGVseSBjbG9zZSB0byBhdm9pZAorICog bGVha2luZyB0aGUgY29ubmVjdGlvbiBpbiBhbnkgd2F5LiBPbmNlIHRoaXMgaXMgY2FsbGVkLCBO U1Mgd2lsbCBzaHV0ZG93bgorICogcmVnYXJkbGVzcyBzbyB3ZSBtYXkgYXMgd2VsbCBjbGVhbiB1 cCB0aGUgYmVzdCB3ZSBjYW4uIFJldHVybmluZyBTRUNGYWlsdXJlCisgKiB3aWxsIGNhdXNlIHRo ZSBOU1Mgc2h1dGRvd24gdG8gcmV0dXJuIHdpdGggYW4gZXJyb3IsIGJ1dCBpdCB3aWxsIHNodXRk b3duCisgKiBuZXZlcnRoZWxlc3MuIG5zc19kYXRhIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNl IGFuZCBpcyBhbHdheXMgTlVMTC4KKyAqLworc3RhdGljIFNFQ1N0YXR1cworcGdfU1NMU2h1dGRv d25GdW5jKHZvaWQgKnByaXZhdGVfZGF0YSwgdm9pZCAqbnNzX2RhdGEpCit7CisJUG9ydCAqcG9y dCA9IChQb3J0ICopIHByaXZhdGVfZGF0YTsKKworCWlmICghcG9ydCB8fCAhcG9ydC0+c3NsX2lu X3VzZSkKKwkJcmV0dXJuIFNFQ1N1Y2Nlc3M7CisKKwkvKgorCSAqIFRoZXJlIGlzIGEgY29ubmVj dGlvbiBzdGlsbCBvcGVuLCBjbG9zZSBpdCBhbmQgc2lnbmFsIHRvIHdoYXRldmVyIHRoYXQKKwkg KiBjYWxsZWQgdGhlIHNodXRkb3duIHRoYXQgaXQgd2FzIGVycm9uZW91cy4KKwkgKi8KKwliZV90 bHNfY2xvc2UocG9ydCk7CisJYmVfdGxzX2Rlc3Ryb3koKTsKKworCXJldHVybiBTRUNGYWlsdXJl OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMgYi9zcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUuYwppbmRleCA0Y2YxMzlhMjIzLi41ZTBjMjdjMTM0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYworKysgYi9zcmMvYmFja2VuZC9s aWJwcS9iZS1zZWN1cmUuYwpAQCAtNDksNiArNDksOSBAQCBib29sCQlzc2xfcGFzc3BocmFzZV9j b21tYW5kX3N1cHBvcnRzX3JlbG9hZDsKICNpZmRlZiBVU0VfU1NMCiBib29sCQlzc2xfbG9hZGVk X3ZlcmlmeV9sb2NhdGlvbnMgPSBmYWxzZTsKICNlbmRpZgorI2lmZGVmIFVTRV9OU1MKK2NoYXIJ ICAgKnNzbF9kYXRhYmFzZTsKKyNlbmRpZgogCiAvKiBHVUMgdmFyaWFibGUgY29udHJvbGxpbmcg U1NMIGNpcGhlciBsaXN0ICovCiBjaGFyCSAgICpTU0xDaXBoZXJTdWl0ZXMgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEu YwppbmRleCAyMGJmMTQ2MWNlLi45YTA0YzA5M2Q1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9s aWJwcS9oYmEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9oYmEuYwpAQCAtMTA0MSw3ICsxMDQx LDcgQEAgcGFyc2VfaGJhX2xpbmUoVG9rZW5pemVkTGluZSAqdG9rX2xpbmUsIGludCBlbGV2ZWwp CiAJCQllcmVwb3J0KGVsZXZlbCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdfRklMRV9F UlJPUiksCiAJCQkJCSBlcnJtc2coImhvc3Rzc2wgcmVjb3JkIGNhbm5vdCBtYXRjaCBiZWNhdXNl IFNTTCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiKSwKLQkJCQkJIGVycmhpbnQoIkNv bXBpbGUgd2l0aCAtLXdpdGgtc3NsPW9wZW5zc2wgdG8gdXNlIFNTTCBjb25uZWN0aW9ucy4iKSwK KwkJCQkJIGVycmhpbnQoIkNvbXBpbGUgd2l0aCAtLXdpdGgtc3NsIHRvIHVzZSBTU0wgY29ubmVj dGlvbnMuIiksCiAJCQkJCSBlcnJjb250ZXh0KCJsaW5lICVkIG9mIGNvbmZpZ3VyYXRpb24gZmls ZSBcIiVzXCIiLAogCQkJCQkJCQlsaW5lX251bSwgSGJhRmlsZU5hbWUpKSk7CiAJCQkqZXJyX21z ZyA9ICJob3N0c3NsIHJlY29yZCBjYW5ub3QgbWF0Y2ggYmVjYXVzZSBTU0wgaXMgbm90IHN1cHBv cnRlZCBieSB0aGlzIGJ1aWxkIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGVhZmRiMTExOGUuLmIw MjNiMzFjNDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtNDMwOCw3ICs0MzA4LDExIEBAIHN0YXRp YyBzdHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJfSwKIAkJ JnNzbF9saWJyYXJ5LAogI2lmZGVmIFVTRV9TU0wKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQog CQkiT3BlblNTTCIsCisjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisJCSJOU1MiLAorI2VuZGlmCiAj ZWxzZQogCQkiIiwKICNlbmRpZgpAQCAtNDM2Niw2ICs0MzcwLDE4IEBAIHN0YXRpYyBzdHJ1Y3Qg Y29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJY2hlY2tfY2Fub25pY2Fs X3BhdGgsIGFzc2lnbl9wZ3N0YXRfdGVtcF9kaXJlY3RvcnksIE5VTEwKIAl9LAogCisjaWZkZWYg VVNFX05TUworCXsKKwkJeyJzc2xfZGF0YWJhc2UiLCBQR0NfU0lHSFVQLCBDT05OX0FVVEhfU1NM LAorCQkJZ2V0dGV4dF9ub29wKCJMb2NhdGlvbiBvZiB0aGUgTlNTIGNlcnRpZmljYXRlIGRhdGFi YXNlLiIpLAorCQkJTlVMTAorCQl9LAorCQkmc3NsX2RhdGFiYXNlLAorCQkiIiwKKwkJTlVMTCwg TlVMTCwgTlVMTAorCX0sCisjZW5kaWYKKwogCXsKIAkJeyJzeW5jaHJvbm91c19zdGFuZGJ5X25h bWVzIiwgUEdDX1NJR0hVUCwgUkVQTElDQVRJT05fUFJJTUFSWSwKIAkJCWdldHRleHRfbm9vcCgi TnVtYmVyIG9mIHN5bmNocm9ub3VzIHN0YW5kYnlzIGFuZCBsaXN0IG9mIG5hbWVzIG9mIHBvdGVu dGlhbCBzeW5jaHJvbm91cyBvbmVzLiIpLApAQCAtNDM5NCw4ICs0NDEwLDEwIEBAIHN0YXRpYyBz dHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJCUdVQ19TVVBF UlVTRVJfT05MWQogCQl9LAogCQkmU1NMQ2lwaGVyU3VpdGVzLAotI2lmZGVmIFVTRV9PUEVOU1NM CisjaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkKIAkJIkhJR0g6TUVESVVNOiszREVTOiFhTlVMTCIs CisjZWxpZiBkZWZpbmVkIChVU0VfTlNTKQorCQkiIiwKICNlbHNlCiAJCSJub25lIiwKICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUK aW5kZXggNTQyMjU3OWE2YS4uYmU4YjI1ODNiMiAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9NYWtl ZmlsZQorKysgYi9zcmMvY29tbW9uL01ha2VmaWxlCkBAIC04NSwxMiArODUsMTcgQEAgT0JKU19D T01NT04gKz0gXAogCXByb3RvY29sX29wZW5zc2wubyBcCiAJY3J5cHRvaGFzaF9vcGVuc3NsLm8K IGVsc2UKK2lmZXEgKCQod2l0aF9zc2wpLG5zcykKK09CSlNfQ09NTU9OICs9IFwKKwljcnlwdG9o YXNoX25zcy5vCitlbHNlCiBPQkpTX0NPTU1PTiArPSBcCiAJY3J5cHRvaGFzaC5vIFwKIAltZDUu byBcCiAJc2hhMS5vIFwKIAlzaGEyLm8KIGVuZGlmCitlbmRpZgogCiAjIEEgZmV3IGZpbGVzIGFy ZSBjdXJyZW50bHkgb25seSBidWlsdCBmb3IgZnJvbnRlbmQsIG5vdCBzZXJ2ZXIKICMgKE1rdmNi dWlsZC5wbSBoYXMgYSBjb3B5IG9mIHRoaXMgbGlzdCwgdG9vKS4gIGxvZ2dpbmcuYyBpcyBleGNs dWRlZApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbW9uL3BnX25zcy5oIGIvc3JjL2luY2x1 ZGUvY29tbW9uL3BnX25zcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjAwOGZlZTg1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vcGdfbnNz LmgKQEAgLTAsMCArMSwxNzUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX25zcy5o CisgKgkgIFN1cHBvcnQgZm9yIE5TUyBhcyBhIFRMUyBiYWNrZW5kCisgKgorICogVGhlc2UgZGVm aW5pdGlvbnMgYXJlIHVzZWQgYnkgYm90aCBmcm9udGVuZCBhbmQgYmFja2VuZCBjb2RlLgorICoK KyAqIENvcHlyaWdodCAoYykgMjAyMCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICogICAgICAgIHNyYy9pbmNsdWRlL2NvbW1vbi9w Z19uc3MuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX05TU19ICisj ZGVmaW5lIFBHX05TU19ICisKKyNpZmRlZiBVU0VfTlNTCisjZGVmaW5lIE5PX05TUFJfMTBfU1VQ UE9SVAorI2luY2x1ZGUgPG5zcy9oYXNodC5oPgorI2luY2x1ZGUgPG5zcy9zZWNvaWR0Lmg+Cisj aW5jbHVkZSA8bnNzL3NzbHByb3RvLmg+CisKK1BSVWludDE2CXBnX2ZpbmRfY2lwaGVyKGNoYXIg Km5hbWUpOworCit0eXBlZGVmIHN0cnVjdAoreworCVNFQ09pZFRhZwlzaWduYXR1cmU7CisJU0VD T2lkVGFnCWhhc2g7CisJaW50CQkJbGVuOworfQkJCU5TU1NpZ25hdHVyZUFsZ29yaXRobXM7CisK K3R5cGVkZWYgc3RydWN0Cit7CisJY29uc3QgY2hhciAqbmFtZTsKKwlQUlVpbnQxNgludW1iZXI7 Cit9CQkJTlNTQ2lwaGVyczsKKworI2RlZmluZSBJTlZBTElEX0NJUEhFUgkweEZGRkYKKworc3Rh dGljIGNvbnN0IE5TU1NpZ25hdHVyZUFsZ29yaXRobXMgTlNTX1NDUkFNRGlnZXN0QWxnb3JpdGht W10gPSB7CisKKwl7U0VDX09JRF9QS0NTMV9NRDVfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09J RF9TSEEyNTYsIFNIQTI1Nl9MRU5HVEh9LAorCXtTRUNfT0lEX1BLQ1MxX1NIQTFfV0lUSF9SU0Ff RU5DUllQVElPTiwgU0VDX09JRF9TSEEyNTYsIFNIQTI1Nl9MRU5HVEh9LAorCXtTRUNfT0lEX0lT T19TSEFfV0lUSF9SU0FfU0lHTkFUVVJFLCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xFTkdUSH0s CisJe1NFQ19PSURfSVNPX1NIQTFfV0lUSF9SU0FfU0lHTkFUVVJFLCBTRUNfT0lEX1NIQTI1Niwg U0hBMjU2X0xFTkdUSH0sCisJe1NFQ19PSURfUEtDUzVfUEJFX1dJVEhfTUQ1X0FORF9ERVNfQ0JD LCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xFTkdUSH0sCisKKwl7U0VDX09JRF9BTlNJWDk2Ml9F Q0RTQV9TSEEyMjRfU0lHTkFUVVJFLCBTRUNfT0lEX1NIQTIyNCwgU0hBMjI0X0xFTkdUSH0sCisJ e1NFQ19PSURfUEtDUzFfU0hBMjI0X1dJVEhfUlNBX0VOQ1JZUFRJT04sIFNFQ19PSURfU0hBMjI0 LCBTSEEyMjRfTEVOR1RIfSwKKwl7U0VDX09JRF9OSVNUX0RTQV9TSUdOQVRVUkVfV0lUSF9TSEEy MjRfRElHRVNULCBTRUNfT0lEX1NIQTIyNCwgU0hBMjI0X0xFTkdUSH0sCisKKwl7U0VDX09JRF9B TlNJWDk2Ml9FQ0RTQV9TSEEyNTZfU0lHTkFUVVJFLCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xF TkdUSH0sCisJe1NFQ19PSURfUEtDUzFfU0hBMjU2X1dJVEhfUlNBX0VOQ1JZUFRJT04sIFNFQ19P SURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VDX09JRF9OSVNUX0RTQV9TSUdOQVRVUkVf V0lUSF9TSEEyNTZfRElHRVNULCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xFTkdUSH0sCisKKwl7 U0VDX09JRF9BTlNJWDk2Ml9FQ0RTQV9TSEEzODRfU0lHTkFUVVJFLCBTRUNfT0lEX1NIQTM4NCwg U0hBMzg0X0xFTkdUSH0sCisJe1NFQ19PSURfUEtDUzFfU0hBMzg0X1dJVEhfUlNBX0VOQ1JZUFRJ T04sIFNFQ19PSURfU0hBMzg0LCBTSEEzODRfTEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lYOTYy X0VDRFNBX1NIQTUxMl9TSUdOQVRVUkUsIFNFQ19PSURfU0hBNTEyLCBTSEE1MTJfTEVOR1RIfSwK Kwl7U0VDX09JRF9QS0NTMV9TSEE1MTJfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9TSEE1 MTIsIFNIQTUxMl9MRU5HVEh9LAorCisJezAsIDB9Cit9OworCisvKgorICogVGhpcyBsaXN0IGlz IGEgcGFydGlhbCBjb3B5IG9mIHRoZSBjaXBoZXJzIGluIE5TUyBmaWxlcyBsaWIvc3NsL3NzbHBy b3RvLmgKKyAqIGluIG9yZGVyIHRvIHByb3ZpZGUgYSBodW1hbiByZWFkYWJsZSB2ZXJzaW9uIG9m IHRoZSBjaXBoZXJzLiBJdCB3b3VsZCBiZQorICogbmljZSB0byBub3QgaGF2ZSB0byBoYXZlIHRo aXMsIGJ1dCBOU1MgZG9lc24ndCBwcm92aWRlIGFueSBBUEkgYWRkcmVzc2luZworICogdGhlIGNp cGhlcnMgYnkgbmFtZS4gVE9ETzogZG8gd2Ugd2FudCBtb3JlIG9mIHRoZSBjaXBoZXJzLCBvciBw ZXJoYXBzIGxlc3M/CisgKi8KK3N0YXRpYyBjb25zdCBOU1NDaXBoZXJzIE5TU19DaXBoZXJMaXN0 W10gPSB7CisKKwl7IlRMU19OVUxMX1dJVEhfTlVMTF9OVUxMIiwgVExTX05VTExfV0lUSF9OVUxM X05VTEx9LAorCisJeyJUTFNfUlNBX1dJVEhfTlVMTF9NRDUiLCBUTFNfUlNBX1dJVEhfTlVMTF9N RDV9LAorCXsiVExTX1JTQV9XSVRIX05VTExfU0hBIiwgVExTX1JTQV9XSVRIX05VTExfU0hBfSwK Kwl7IlRMU19SU0FfV0lUSF9SQzRfMTI4X01ENSIsIFRMU19SU0FfV0lUSF9SQzRfMTI4X01ENX0s CisJeyJUTFNfUlNBX1dJVEhfUkM0XzEyOF9TSEEiLCBUTFNfUlNBX1dJVEhfUkM0XzEyOF9TSEF9 LAorCXsiVExTX1JTQV9XSVRIX0lERUFfQ0JDX1NIQSIsIFRMU19SU0FfV0lUSF9JREVBX0NCQ19T SEF9LAorCXsiVExTX1JTQV9XSVRIX0RFU19DQkNfU0hBIiwgVExTX1JTQV9XSVRIX0RFU19DQkNf U0hBfSwKKwl7IlRMU19SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIiwgVExTX1JTQV9XSVRIXzNE RVNfRURFX0NCQ19TSEF9LAorCisJeyJUTFNfREhfRFNTX1dJVEhfREVTX0NCQ19TSEEiLCBUTFNf REhfRFNTX1dJVEhfREVTX0NCQ19TSEF9LAorCXsiVExTX0RIX0RTU19XSVRIXzNERVNfRURFX0NC Q19TSEEiLCBUTFNfREhfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQX0sCisJeyJUTFNfREhfUlNB X1dJVEhfREVTX0NCQ19TSEEiLCBUTFNfREhfUlNBX1dJVEhfREVTX0NCQ19TSEF9LAorCXsiVExT X0RIX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEiLCBUTFNfREhfUlNBX1dJVEhfM0RFU19FREVf Q0JDX1NIQX0sCisKKwl7IlRMU19ESEVfRFNTX1dJVEhfREVTX0NCQ19TSEEiLCBUTFNfREhFX0RT U19XSVRIX0RFU19DQkNfU0hBfSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NI QSIsIFRMU19ESEVfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQX0sCisJeyJUTFNfREhFX1JTQV9X SVRIX0RFU19DQkNfU0hBIiwgVExTX0RIRV9SU0FfV0lUSF9ERVNfQ0JDX1NIQX0sCisJeyJUTFNf REhFX1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEiLCBUTFNfREhFX1JTQV9XSVRIXzNERVNfRURF X0NCQ19TSEF9LAorCisJeyJUTFNfREhfYW5vbl9XSVRIX1JDNF8xMjhfTUQ1IiwgVExTX0RIX2Fu b25fV0lUSF9SQzRfMTI4X01ENX0sCisJeyJUTFNfREhfYW5vbl9XSVRIX0RFU19DQkNfU0hBIiwg VExTX0RIX2Fub25fV0lUSF9ERVNfQ0JDX1NIQX0sCisJeyJUTFNfREhfYW5vbl9XSVRIXzNERVNf RURFX0NCQ19TSEEiLCBUTFNfREhfYW5vbl9XSVRIXzNERVNfRURFX0NCQ19TSEF9LAorCisJeyJU TFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwgVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QX0sCisJeyJUTFNfREhfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwgVExTX0RIX0RTU19XSVRI X0FFU18xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwg VExTX0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhFX0RTU19XSVRIX0FF U18xMjhfQ0JDX1NIQSIsIFRMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBfSwKKwl7IlRM U19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4 X0NCQ19TSEF9LAorCXsiVExTX0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEEiLCBUTFNfREhf YW5vbl9XSVRIX0FFU18xMjhfQ0JDX1NIQX0sCisKKwl7IlRMU19SU0FfV0lUSF9BRVNfMjU2X0NC Q19TSEEiLCBUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBfSwKKwl7IlRMU19ESF9EU1NfV0lU SF9BRVNfMjU2X0NCQ19TSEEiLCBUTFNfREhfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBfSwKKwl7 IlRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEiLCBUTFNfREhfUlNBX1dJVEhfQUVTXzI1 Nl9DQkNfU0hBfSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIiwgVExTX0RI RV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2 X0NCQ19TSEEiLCBUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhf YW5vbl9XSVRIX0FFU18yNTZfQ0JDX1NIQSIsIFRMU19ESF9hbm9uX1dJVEhfQUVTXzI1Nl9DQkNf U0hBfSwKKwl7IlRMU19SU0FfV0lUSF9OVUxMX1NIQTI1NiIsIFRMU19SU0FfV0lUSF9OVUxMX1NI QTI1Nn0sCisJeyJUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2IiwgVExTX1JTQV9XSVRI X0FFU18xMjhfQ0JDX1NIQTI1Nn0sCisJeyJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2 IiwgVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1Nn0sCisKKwl7IlRMU19ESEVfRFNTX1dJ VEhfQUVTXzEyOF9DQkNfU0hBMjU2IiwgVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEy NTZ9LAorCXsiVExTX1JTQV9XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExTX1JTQV9XSVRI X0NBTUVMTElBXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9EU1NfV0lUSF9DQU1FTExJQV8xMjhf Q0JDX1NIQSIsIFRMU19ESF9EU1NfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQX0sCisJeyJUTFNf REhfUlNBX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEEiLCBUTFNfREhfUlNBX1dJVEhfQ0FNRUxM SUFfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RIRV9EU1NfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NI QSIsIFRMU19ESEVfRFNTX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RIRV9S U0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQSIsIFRMU19ESEVfUlNBX1dJVEhfQ0FNRUxMSUFf MTI4X0NCQ19TSEF9LAorCXsiVExTX0RIX2Fub25fV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQSIs IFRMU19ESF9hbm9uX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEF9LAorCisJeyJUTFNfREhFX0RT U19XSVRIX1JDNF8xMjhfU0hBIiwgVExTX0RIRV9EU1NfV0lUSF9SQzRfMTI4X1NIQX0sCisJeyJU TFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiIsIFRMU19ESEVfUlNBX1dJVEhfQUVT XzEyOF9DQkNfU0hBMjU2fSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2 IiwgVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTZ9LAorCXsiVExTX0RIRV9SU0Ff V0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYiLCBUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NI QTI1Nn0sCisKKwl7IlRMU19SU0FfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIsIFRMU19SU0Ff V0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhfRFNTX1dJVEhfQ0FNRUxMSUFf MjU2X0NCQ19TSEEiLCBUTFNfREhfRFNTX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEF9LAorCXsi VExTX0RIX1JTQV9XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hBIiwgVExTX0RIX1JTQV9XSVRIX0NB TUVMTElBXzI1Nl9DQkNfU0hBfSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQ0FNRUxMSUFfMjU2X0NC Q19TSEEiLCBUTFNfREhFX0RTU19XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hBfSwKKwl7IlRMU19E SEVfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEEiLCBUTFNfREhFX1JTQV9XSVRIX0NBTUVM TElBXzI1Nl9DQkNfU0hBfSwKKwl7IlRMU19ESF9hbm9uX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19T SEEiLCBUTFNfREhfYW5vbl9XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hBfSwKKworCXsiVExTX1JT QV9XSVRIX1NFRURfQ0JDX1NIQSIsIFRMU19SU0FfV0lUSF9TRUVEX0NCQ19TSEF9LAorCisJeyJU TFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2IiwgVExTX1JTQV9XSVRIX0FFU18xMjhfR0NN X1NIQTI1Nn0sCisJeyJUTFNfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwgVExTX1JTQV9X SVRIX0FFU18yNTZfR0NNX1NIQTM4NH0sCisJeyJUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfR0NN X1NIQTI1NiIsIFRMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2fSwKKwl7IlRMU19E SEVfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2 X0dDTV9TSEEzODR9LAorCXsiVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiLCBU TFNfREhFX0RTU19XSVRIX0FFU18xMjhfR0NNX1NIQTI1Nn0sCisJeyJUTFNfREhFX0RTU19XSVRI X0FFU18yNTZfR0NNX1NIQTM4NCIsIFRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0 fSwKKworCXsiVExTX0FFU18xMjhfR0NNX1NIQTI1NiIsIFRMU19BRVNfMTI4X0dDTV9TSEEyNTZ9 LAorCXsiVExTX0FFU18yNTZfR0NNX1NIQTM4NCIsIFRMU19BRVNfMjU2X0dDTV9TSEEzODR9LAor CXsiVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiIsIFRMU19DSEFDSEEyMF9QT0xZMTMwNV9T SEEyNTZ9LAorCXtOVUxMLCAwfQorfTsKKworLyoKKyAqIHBnX2ZpbmRfY2lwaGVyCisgKgkJCVRy YW5zbGF0ZSBhbiBOU1MgY2lwaGVybmFtZSB0byB0aGUgY2lwaGVyIGNvZGUKKyAqCisgKiBTZWFy Y2hlcyB0aGUgY29uZmlndXJlZCBjaXBoZXJzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjaXBoZXIg Y29kZSB0byB0aGUKKyAqIG5hbWUuIFNlYXJjaCBpcyBwZXJmb3JtZWQgY2FzZSBpbnNlbnNpdGl2 ZS4KKyAqLworUFJVaW50MTYKK3BnX2ZpbmRfY2lwaGVyKGNoYXIgKm5hbWUpCit7CisJY29uc3QJ CU5TU0NpcGhlcnMgKmNpcGhlcl9saXN0ID0gTlNTX0NpcGhlckxpc3Q7CisKKwl3aGlsZSAoY2lw aGVyX2xpc3QtPm5hbWUpCisJeworCQlpZiAocGdfc3RyY2FzZWNtcChjaXBoZXJfbGlzdC0+bmFt ZSwgbmFtZSkgPT0gMCkKKwkJCXJldHVybiBjaXBoZXJfbGlzdC0+bnVtYmVyOworCisJCWNpcGhl cl9saXN0Kys7CisJfQorCisJcmV0dXJuIDB4RkZGRjsKK30KKworI2VuZGlmCQkJCQkJCS8qIFVT RV9OU1MgKi8KKworI2VuZGlmCQkJCQkJCS8qIFBHX05TU19IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9saWJwcS9saWJwcS1iZS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaApp bmRleCA2NmE4NjczZDkzLi5lYTM3M2EwYWUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJw cS9saWJwcS1iZS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgKQEAgLTE5Mywx MyArMTkzLDE4IEBAIHR5cGVkZWYgc3RydWN0IFBvcnQKIAlib29sCQlwZWVyX2NlcnRfdmFsaWQ7 CiAKIAkvKgotCSAqIE9wZW5TU0wgc3RydWN0dXJlcy4gKEtlZXAgdGhlc2UgbGFzdCBzbyB0aGF0 IHRoZSBsb2NhdGlvbnMgb2Ygb3RoZXIKLQkgKiBmaWVsZHMgYXJlIHRoZSBzYW1lIHdoZXRoZXIg b3Igbm90IHlvdSBidWlsZCB3aXRoIE9wZW5TU0wuKQorCSAqIFNTTCBiYWNrZW5kIHNwZWNpZmlj IHN0cnVjdHVyZXMuIChLZWVwIHRoZXNlIGxhc3Qgc28gdGhhdCB0aGUgbG9jYXRpb25zCisJICog b2Ygb3RoZXIgZmllbGRzIGFyZSB0aGUgc2FtZSB3aGV0aGVyIG9yIG5vdCB5b3UgYnVpbGQgd2l0 aCBTU0wKKwkgKiBlbmFibGVkLikKIAkgKi8KICNpZmRlZiBVU0VfT1BFTlNTTAogCVNTTAkJICAg KnNzbDsKIAlYNTA5CSAgICpwZWVyOwogI2VuZGlmCisKKyNpZmRlZiBVU0VfTlNTCisJdm9pZAkg ICAqcHJfZmQ7CisjZW5kaWYKIH0gUG9ydDsKIAogI2lmZGVmIFVTRV9TU0wKQEAgLTI4Myw3ICsy ODgsNyBAQCBleHRlcm4gdm9pZCBiZV90bHNfZ2V0X3BlZXJfc2VyaWFsKFBvcnQgKnBvcnQsIGNo YXIgKnB0ciwgc2l6ZV90IGxlbik7CiAgKiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBvbGQg dmVyc2lvbnMgb2YgT3BlblNTTCB0aGF0IGRvbid0IGhhdmUKICAqIHRoZSBYNTA5X2dldF9zaWdu YXR1cmVfbmlkKCkgZnVuY3Rpb24uCiAgKi8KLSNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBk ZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCkKKyNpZiBkZWZpbmVkKFVTRV9OU1Mp IHx8IChkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lHTkFU VVJFX05JRCkpCiAjZGVmaW5lIEhBVkVfQkVfVExTX0dFVF9DRVJUSUZJQ0FURV9IQVNICiBleHRl cm4gY2hhciAqYmVfdGxzX2dldF9jZXJ0aWZpY2F0ZV9oYXNoKFBvcnQgKnBvcnQsIHNpemVfdCAq bGVuKTsKICNlbmRpZgpAQCAtMjkzLDYgKzI5OCwxMCBAQCBleHRlcm4gY2hhciAqYmVfdGxzX2dl dF9jZXJ0aWZpY2F0ZV9oYXNoKFBvcnQgKnBvcnQsIHNpemVfdCAqbGVuKTsKIHR5cGVkZWYgdm9p ZCAoKm9wZW5zc2xfdGxzX2luaXRfaG9va190eXApIChTU0xfQ1RYICpjb250ZXh0LCBib29sIGlz U2VydmVyU3RhcnQpOwogZXh0ZXJuIFBHRExMSU1QT1JUIG9wZW5zc2xfdGxzX2luaXRfaG9va190 eXAgb3BlbnNzbF90bHNfaW5pdF9ob29rOwogI2VuZGlmCisjaWZkZWYgVVNFX05TUwordHlwZWRl ZiB2b2lkICgqbnNzX3Rsc19pbml0X2hvb2tfdHlwZSkgKGJvb2wgaXNTZXJ2ZXJTdGFydCk7Citl eHRlcm4gUEdETExJTVBPUlQgbnNzX3Rsc19pbml0X2hvb2tfdHlwZSBuc3NfdGxzX2luaXRfaG9v azsKKyNlbmRpZgogCiAjZW5kaWYJCQkJCQkJLyogVVNFX1NTTCAqLwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9saWJwcS9saWJwcS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAppbmRl eCBhNTU4OThjODVhLi5kMjg2MGI4NTJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9s aWJwcS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKQEAgLTg4LDYgKzg4LDkgQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3NsX3Bhc3NwaHJhc2VfY29tbWFuZF9zdXBwb3J0c19y ZWxvYWQ7CiAjaWZkZWYgVVNFX1NTTAogZXh0ZXJuIGJvb2wgc3NsX2xvYWRlZF92ZXJpZnlfbG9j YXRpb25zOwogI2VuZGlmCisjaWZkZWYgVVNFX05TUworZXh0ZXJuIGNoYXIgKnNzbF9kYXRhYmFz ZTsKKyNlbmRpZgogCiBleHRlcm4gaW50CXNlY3VyZV9pbml0aWFsaXplKGJvb2wgaXNTZXJ2ZXJT dGFydCk7CiBleHRlcm4gYm9vbCBzZWN1cmVfbG9hZGVkX3ZlcmlmeV9sb2NhdGlvbnModm9pZCk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNsdWRlL3Bn X2NvbmZpZy5oLmluCmluZGV4IDU1Y2FiNGQyYmYuLjg4NTZhMzM1OTAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu CkBAIC05MDUsNiArOTA1LDkgQEAKIC8qIERlZmluZSB0byAxIHRvIGJ1aWxkIHdpdGggUEFNIHN1 cHBvcnQuICgtLXdpdGgtcGFtKSAqLwogI3VuZGVmIFVTRV9QQU0KIAorLyogRGVmaW5lIHRvIGJ1 aWxkIHdpdGggTlNTIHN1cHBvcnQgKC0td2l0aC1zc2w9bnNzKSAqLworI3VuZGVmIFVTRV9OU1MK KwogLyogRGVmaW5lIHRvIDEgdG8gdXNlIHNvZnR3YXJlIENSQy0zMkMgaW1wbGVtZW50YXRpb24g KHNsaWNpbmctYnktOCkuICovCiAjdW5kZWYgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oIGIvc3JjL2luY2x1ZGUvcGdf Y29uZmlnX21hbnVhbC5oCmluZGV4IGQyN2M4NjAxZmEuLjc4NjFiOTQyOTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaAorKysgYi9zcmMvaW5jbHVkZS9wZ19jb25m aWdfbWFudWFsLmgKQEAgLTE3NiwxMCArMTc2LDkgQEAKIAogLyoKICAqIFVTRV9TU0wgY29kZSBz aG91bGQgYmUgY29tcGlsZWQgb25seSB3aGVuIGNvbXBpbGluZyB3aXRoIGFuIFNTTAotICogaW1w bGVtZW50YXRpb24uICAoQ3VycmVudGx5LCBvbmx5IE9wZW5TU0wgaXMgc3VwcG9ydGVkLCBidXQg d2UgbWlnaHQgYWRkCi0gKiBtb3JlIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgZnV0dXJlLikKKyAq IGltcGxlbWVudGF0aW9uLgogICovCi0jaWZkZWYgVVNFX09QRU5TU0wKKyNpZiBkZWZpbmVkKFVT RV9PUEVOU1NMKSB8fCBkZWZpbmVkKFVTRV9OU1MpCiAjZGVmaW5lIFVTRV9TU0wKICNlbmRpZgog CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL01ha2VmaWxlCmluZGV4IGY3NDY3N2VhZjkuLmUxMGQ4YmVmNDIgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL01ha2VmaWxlCkBAIC01Niw2ICs1NiwxMSBAQCBPQkpTICs9IFwKIAlmZS1zZWN1cmUtb3Bl bnNzbC5vCiBlbmRpZgogCitpZmVxICgkKHdpdGhfc3NsKSwgbnNzKQorT0JKUyArPSBcCisJZmUt c2VjdXJlLW5zcy5vCitlbmRpZgorCiBpZmVxICgkKHdpdGhfZ3NzYXBpKSx5ZXMpCiBPQkpTICs9 IFwKIAlmZS1nc3NhcGktY29tbW9uLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4 IDhjYTA1ODNhYTkuLjFlZWVmZjU0YTggMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKQEAg LTM1NSw2ICszNTUsMTAgQEAgc3RhdGljIGNvbnN0IGludGVybmFsUFFjb25uaW5mb09wdGlvbiBQ UWNvbm5pbmZvT3B0aW9uc1tdID0gewogCQkiVGFyZ2V0LVNlc3Npb24tQXR0cnMiLCAiIiwgMTEs IC8qIHNpemVvZigicmVhZC13cml0ZSIpID0gMTEgKi8KIAlvZmZzZXRvZihzdHJ1Y3QgcGdfY29u biwgdGFyZ2V0X3Nlc3Npb25fYXR0cnMpfSwKIAorCXsiY2VydF9kYXRhYmFzZSIsIE5VTEwsIE5V TEwsIE5VTEwsCisJCSJDZXJ0aWZpY2F0ZURhdGFiYXNlIiwgIiIsIDY0LAorCW9mZnNldG9mKHN0 cnVjdCBwZ19jb25uLCBjZXJ0X2RhdGFiYXNlKX0sCisKIAkvKiBUZXJtaW5hdGluZyBlbnRyeSAt LS0gTVVTVCBCRSBMQVNUICovCiAJe05VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCiAJTlVMTCwgTlVM TCwgMH0KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5kY2EwNTcyZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jCkBAIC0wLDAgKzEsMTExMiBAQAorLyotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogZmUtc2VjdXJlLW5zcy5jCisgKgkgIGZ1bmN0aW9ucyBmb3Ig c3VwcG9ydGluZyBOU1MgYXMgYSBUTFMgYmFja2VuZCBmb3IgZnJvbnRlbmQgbGlicHEKKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlICJsaWJw cS1mZS5oIgorI2luY2x1ZGUgImZlLWF1dGguaCIKKyNpbmNsdWRlICJmZS1zZWN1cmUtY29tbW9u LmgiCisjaW5jbHVkZSAibGlicHEtaW50LmgiCisjaW5jbHVkZSAiY29tbW9uL3BnX25zcy5oIgor CisvKgorICogQklUU19QRVJfQllURSBpcyBhbHNvIGRlZmluZWQgaW4gdGhlIE5TUFIgaGVhZGVy IGZpbGVzLCBzbyB3ZSBuZWVkIHRvIHVuZGVmCisgKiBvdXIgdmVyc2lvbiB0byBhdm9pZCBjb21w aWxlciB3YXJuaW5ncyBvbiByZWRlZmluaXRpb24uCisgKi8KKyNkZWZpbmUgcGdfQklUU19QRVJf QllURSBCSVRTX1BFUl9CWVRFCisjdW5kZWYgQklUU19QRVJfQllURQorCisvKgorICogVGhlIG5z cHIvb2Jzb2xldGUvcHJvdHlwZXMuaCBOU1BSIGhlYWRlciB0eXBlZGVmcyB1aW50NjQgYW5kIGlu dDY0IHdpdGgKKyAqIGNvbGxpZGluZyBkZWZpbml0aW9ucyBmcm9tIG91cnMsIGNhdXNpbmcgYSBt dWNoIGV4cGVjdGVkIGNvbXBpbGVyIGVycm9yLgorICogUmVtb3ZlIGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5IHdpdGggYW5jaWVudCBOU1BSIHZlcnNpb25zIHRvIGF2b2lkIHRoaXMuCisgKi8KKyNk ZWZpbmUgTk9fTlNQUl8xMF9TVVBQT1JUCisjaW5jbHVkZSA8bnNwci9uc3ByLmg+CisjaW5jbHVk ZSA8bnNwci9wcmVycm9yLmg+CisjaW5jbHVkZSA8bnNwci9wcmluaXQuaD4KKyNpbmNsdWRlIDxu c3ByL3ByaW8uaD4KKyNpbmNsdWRlIDxuc3MvaGFzaHQuaD4KKyNpbmNsdWRlIDxuc3MvbnNzLmg+ CisjaW5jbHVkZSA8bnNzL3NzbC5oPgorI2luY2x1ZGUgPG5zcy9zc2xwcm90by5oPgorI2luY2x1 ZGUgPG5zcy9wazExZnVuYy5oPgorI2luY2x1ZGUgPG5zcy9zZWNlcnIuaD4KKyNpbmNsdWRlIDxu c3Mvc2Vjb2lkdC5oPgorI2luY2x1ZGUgPG5zcy9zZWNtb2QuaD4KKworLyoKKyAqIEVuc3VyZSB0 aGF0IHRoZSBjb2xsaWRpbmcgZGVmaW5pdGlvbnMgbWF0Y2gsIGVsc2UgdGhyb3cgYW4gZXJyb3Iu IEluIGNhc2UKKyAqIE5TUFIgcmVtb3ZlIHRoZSBkZWZpbml0aW9uIGluIGEgZnV0dXJlIHZlcnNp b24gKGhvd2V2ZXIgdW5saWtlbHkgdGhhdCBtYXkKKyAqIGJlLCBtYWtlIHN1cmUgdG8gcHV0IG91 cnMgYmFjayBhZ2Fpbi4KKyAqLworI2lmIGRlZmluZWQoQklUU19QRVJfQllURSkKKyNpZiBCSVRT X1BFUl9CWVRFICE9IHBnX0JJVFNfUEVSX0JZVEUKKyNlcnJvciAiaW5jb21wYXRpYmxlIGJ5dGUg d2lkdGhzIGJldHdlZW4gTlNQUiBhbmQgUG9zdGdyZVNRTCIKKyNlbmRpZgorI2Vsc2UKKyNkZWZp bmUgQklUU19QRVJfQllURSBwZ19CSVRTX1BFUl9CWVRFCisjZW5kaWYKKyN1bmRlZiBwZ19CSVRT X1BFUl9CWVRFCisKK3N0YXRpYyBTRUNTdGF0dXMgcGdfbG9hZF9uc3NfbW9kdWxlKFNFQ01PRE1v ZHVsZSAqICptb2R1bGUsIGNvbnN0IGNoYXIgKmxpYnJhcnksIGNvbnN0IGNoYXIgKm5hbWUpOwor c3RhdGljIFNFQ1N0YXR1cyBwZ19iYWRfY2VydF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVz YyAqIGZkKTsKK3N0YXRpYyBjb25zdCBjaGFyICpwZ19TU0xlcnJtZXNzYWdlKFBSRXJyb3JDb2Rl IGVycmNvZGUpOworc3RhdGljIFNFQ1N0YXR1cyBwZ19jbGllbnRfYXV0aF9oYW5kbGVyKHZvaWQg KmFyZywgUFJGaWxlRGVzYyAqIHNvY2tldCwgQ0VSVERpc3ROYW1lcyAqIGNhTmFtZXMsCisJCQkJ CQkJCQkJQ0VSVENlcnRpZmljYXRlICogKnBSZXRDZXJ0LCBTRUNLRVlQcml2YXRlS2V5ICogKnBS ZXRLZXkpOworc3RhdGljIFNFQ1N0YXR1cyBwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcs IFBSRmlsZURlc2MgKiBmZCwgUFJCb29sIGNoZWNrc2lnLCBQUkJvb2wgaXNTZXJ2ZXIpOworc3Rh dGljIGludAlzc2xfcHJvdG9jb2xfdmVyc2lvbl90b19uc3MoY29uc3QgY2hhciAqcHJvdG9jb2wp Oworc3RhdGljIGJvb2wgY2VydF9kYXRhYmFzZV9oYXNfQ0EoUEdjb25uICpjb25uKTsKKworc3Rh dGljIGNoYXIgKlBRc3NsX3Bhc3N3ZF9jYihQSzExU2xvdEluZm8gKiBzbG90LCBQUkJvb2wgcmV0 cnksIHZvaWQgKmFyZyk7CisKKy8qCisgKiBQUl9JbXBvcnRUQ1BTb2NrZXQoKSBpcyBhIHByaXZh dGUgQVBJLCBidXQgdmVyeSB3aWRlbHkgdXNlZCwgYXMgaXQncyB0aGUKKyAqIG9ubHkgd2F5IHRv IG1ha2UgTlNTIHVzZSBhbiBhbHJlYWR5IHNldCB1cCBQT1NJWCBmaWxlIGRlc2NyaXB0b3IgcmF0 aGVyCisgKiB0aGFuIG9wZW5pbmcgb25lIGl0c2VsZi4gVG8gcXVvdGUgdGhlIE5TUyBkb2N1bWVu dGF0aW9uOgorICoKKyAqCQkiSW4gdGhlb3J5LCBjb2RlIHRoYXQgdXNlcyBQUl9JbXBvcnRUQ1BT b2NrZXQgbWF5IGJyZWFrIHdoZW4gTlNQUidzCisgKgkJaW1wbGVtZW50YXRpb24gY2hhbmdlcy4g SW4gcHJhY3RpY2UsIHRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuIGJlY2F1c2UKKyAqCQlOU1BS J3MgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4gc3RhYmxlIGZvciB5ZWFycyBhbmQgYmVjYXVzZSBv ZiBOU1BSJ3MKKyAqCQlzdHJvbmcgY29tbWl0bWVudCB0byBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 LiIKKyAqCisgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemls bGEvUHJvamVjdHMvTlNQUi9SZWZlcmVuY2UvUFJfSW1wb3J0VENQU29ja2V0CisgKgorICogVGhl IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluIDxwcml2YXRlL3BwcmlvLmg+LCBidXQgYXMgaXQgaXMg YSBoZWFkZXIgbWFya2VkCisgKiBwcml2YXRlIHdlIGRlY2xhcmUgaXQgaGVyZSByYXRoZXIgdGhh biBpbmNsdWRpbmcgaXQuCisgKi8KK05TUFJfQVBJKFBSRmlsZURlc2MgKikgUFJfSW1wb3J0VENQ U29ja2V0KGludCk7CisKK3N0YXRpYyBTRUNNT0RNb2R1bGUgKiBjYV90cnVzdCA9IE5VTEw7Citz dGF0aWMgTlNTSW5pdENvbnRleHQgKiBuc3NfY29udGV4dCA9IE5VTEw7CisKKy8qCisgKiBUaGlz IGxvZ2ljIGV4aXN0IGluIE5TUyBhcyB3ZWxsLCBidXQgaXQncyBvbmx5IGF2YWlsYWJsZSBmb3Ig d2hlbiB0aGVyZSBpcworICogYSBkYXRhYmFzZSB0byBvcGVuLCBhbmQgbm90IG9ubHkgdXNpbmcg dGhlIHN5c3RlbSB0cnVzdCBzdG9yZS4gVGh1cywgd2UKKyAqIG5lZWQgdG8ga2VlcCBvdXIgb3du IGNvcHkuCisgKi8KKyNpZiBkZWZpbmVkKFdJTjMyKQorc3RhdGljIGNvbnN0IGNoYXIgKmNhX3Ry dXN0X25hbWUgPSAibnNzY2tiaS5kbGwiOworI2VsaWYgZGVmaW5lZChfX2Rhcndpbl9fKQorc3Rh dGljIGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2tiaS5keWxpYiI7CisjZWxz ZQorc3RhdGljIGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2tiaS5zbyI7Cisj ZW5kaWYKKworc3RhdGljIFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgUFFzc2xLZXlQYXNzSG9v ayA9IE5VTEw7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoJCQkgUHJvY2VkdXJlcyBjb21tb24gdG8gYWxsIHNl Y3VyZSBzZXNzaW9ucwkJCSovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAqIHBndGxzX2luaXRfbGlicmFy eQorICoKKyAqIFRoZXJlIGlzIG5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBQUWluaXRPcGVuU1NM IGluIE5TUy9OU1BSLCB3aXRoIFBSX0luaXQKKyAqIGJlaW5nIHRoZSBjbG9zZXN0IG1hdGNoIHRo ZXJlIGlzLiBQUl9Jbml0IGlzIGhvd2V2ZXIgYWxyZWFkeSBkb2N1bWVudGVkIHRvCisgKiBub3Qg YmUgcmVxdWlyZWQgc28gc2ltcGx5IG1ha2luZyB0aGlzIGEgbm9vcCBzZWVtcyBsaWtlIHRoZSBi ZXN0IG9wdGlvbi4KKyAqLwordm9pZAorcGd0bHNfaW5pdF9saWJyYXJ5KGJvb2wgZG9fc3NsLCBp bnQgZG9fY3J5cHRvKQoreworCS8qIG5vb3AgKi8KK30KKworaW50CitwZ3Rsc19pbml0KFBHY29u biAqY29ubikKK3sKKwljb25uLT5zc2xfaW5fdXNlID0gZmFsc2U7CisJY29ubi0+aGFzX3Bhc3N3 b3JkID0gZmFsc2U7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZAorcGd0bHNfY2xvc2UoUEdjb25u ICpjb25uKQoreworCWlmIChuc3NfY29udGV4dCkKKwl7CisJCU5TU19TaHV0ZG93bkNvbnRleHQo bnNzX2NvbnRleHQpOworCQluc3NfY29udGV4dCA9IE5VTEw7CisJfQorfQorCitQb3N0Z3Jlc1Bv bGxpbmdTdGF0dXNUeXBlCitwZ3Rsc19vcGVuX2NsaWVudChQR2Nvbm4gKmNvbm4pCit7CisJU0VD U3RhdHVzCXN0YXR1czsKKwlQUkZpbGVEZXNjICpwcl9mZDsKKwlQUkZpbGVEZXNjICptb2RlbDsK KwlOU1NJbml0UGFyYW1ldGVycyBwYXJhbXM7CisJU1NMVmVyc2lvblJhbmdlIGRlc2lyZWRfcmFu Z2U7CisKKwkvKgorCSAqIFRoZSBOU1BSIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgcnVudGlt ZSBpbml0aWFsaXphdGlvbiB2aWEgUFJfSW5pdAorCSAqIGlzIG5vIGxvbmdlciByZXF1aXJlZCwg YXMgdGhlIGZpcnN0IGNhbGxlciBpbnRvIE5TUFIgd2lsbCBwZXJmb3JtIHRoZQorCSAqIGluaXRp YWxpemF0aW9uIGltcGxpY2l0bHkuIFNlZSBiZS1zZWN1cmUtbnNzLmMgZm9yIGZ1cnRoZXIgZGlz Y3Vzc2lvbgorCSAqIG9uIFBSX0luaXQuCisJICovCisJUFJfSW5pdChQUl9VU0VSX1RIUkVBRCwg UFJfUFJJT1JJVFlfTk9STUFMLCAwKTsKKworCS8qCisJICogTlNTIGluaXRpYWxpemF0aW9uIGFu ZCB0aGUgdXNlIG9mIGNvbnRleHRzIGlzIGZ1cnRoZXIgZGlzY3Vzc2VkIGluCisJICogYmUtc2Vj dXJlLW5zcy5jCisJICovCisJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKwlw YXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisKKwlpZiAoY29ubi0+Y2VydF9kYXRhYmFz ZSAmJiBzdHJsZW4oY29ubi0+Y2VydF9kYXRhYmFzZSkgPiAwKQorCXsKKwkJY2hhcgkgICAqY2Vy dF9kYXRhYmFzZV9wYXRoID0gcHNwcmludGYoInNxbDolcyIsIGNvbm4tPmNlcnRfZGF0YWJhc2Up OworCisJCW5zc19jb250ZXh0ID0gTlNTX0luaXRDb250ZXh0KGNlcnRfZGF0YWJhc2VfcGF0aCwg IiIsICIiLCAiIiwKKwkJCQkJCQkJCSAgJnBhcmFtcywKKwkJCQkJCQkJCSAgTlNTX0lOSVRfUkVB RE9OTFkgfCBOU1NfSU5JVF9QSzExUkVMT0FEKTsKKwkJcGZyZWUoY2VydF9kYXRhYmFzZV9wYXRo KTsKKworCQlpZiAoIW5zc19jb250ZXh0KQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIG9wZW4g Y2VydGlmaWNhdGUgZGF0YWJhc2UgXCIlc1wiOiAlcyIpLAorCQkJCQkJCSAgY29ubi0+Y2VydF9k YXRhYmFzZSwKKwkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQkJ cmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCQl9CisJfQorCWVsc2UKKwl7CisJCW5zc19j b250ZXh0ID0gTlNTX0luaXRDb250ZXh0KCIiLCAiIiwgIiIsICIiLCAmcGFyYW1zLAorCQkJCQkJ CQkJICBOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklUX05PQ0VSVERCIHwKKwkJCQkJCQkJCSAg TlNTX0lOSVRfTk9NT0REQiB8IE5TU19JTklUX0ZPUkNFT1BFTiB8CisJCQkJCQkJCQkgIE5TU19J TklUX05PUk9PVElOSVQgfCBOU1NfSU5JVF9QSzExUkVMT0FEKTsKKwkJaWYgKCFuc3NfY29udGV4 dCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJ CQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byBjcmVhdGUgY2VydGlmaWNhdGUgZGF0YWJhc2U6 ICVzIiksCisJCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJCXJl dHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwkJfQorCX0KKworCS8qCisJICogQ29uZmlndXJl IGNpcGhlciBwb2xpY3kuCisJICovCisJc3RhdHVzID0gTlNTX1NldERvbWVzdGljUG9saWN5KCk7 CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGNvbmZp Z3VyZSBjaXBoZXIgcG9saWN5OiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dl dEVycm9yKCkpKTsKKworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJLyoK KwkgKiBJZiB3ZSBkb24ndCBoYXZlIGEgY2VydGlmaWNhdGUgZGF0YWJhc2UsIHRoZSBzeXN0ZW0g dHJ1c3Qgc3RvcmUgaXMgdGhlCisJICogZmFsbGJhY2sgd2UgY2FuIHVzZS4gSWYgd2UgZmFpbCB0 byBpbml0aWFsaXplIHRoYXQgYXMgd2VsbCwgd2UgY2FuCisJICogc3RpbGwgYXR0ZW1wdCBhIGNv bm5lY3Rpb24gYXMgbG9uZyBhcyB0aGUgc3NsbW9kZSBpc24ndCB2ZXJpZnkqLgorCSAqLworCWlm ICghY29ubi0+Y2VydF9kYXRhYmFzZSAmJiBjb25uLT5zc2xtb2RlWzBdID09ICd2JykKKwl7CisJ CXN0YXR1cyA9IHBnX2xvYWRfbnNzX21vZHVsZSgmY2FfdHJ1c3QsIGNhX3RydXN0X25hbWUsICJc IlJvb3QgQ2VydGlmaWNhdGVzXCIiKTsKKwkJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQl7 CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgiV0FSTklORzogdW5hYmxlIHRvIGxvYWQgTlNTIHRydXN0IG1vZHVsZSBcIiVz XCIgOiAlcyIpLAorCQkJCQkJCSAgY2FfdHJ1c3RfbmFtZSwKKwkJCQkJCQkgIHBnX1NTTGVycm1l c3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7 CisJCX0KKwl9CisKKworCVBLMTFfU2V0UGFzc3dvcmRGdW5jKFBRc3NsX3Bhc3N3ZF9jYik7CisK KwkvKgorCSAqIEltcG9ydCB0aGUgYWxyZWFkeSBvcGVuZWQgc29ja2V0IGFzIHdlIGRvbid0IHdh bnQgdG8gdXNlIE5TUFIgZnVuY3Rpb25zCisJICogZm9yIG9wZW5pbmcgdGhlIG5ldHdvcmsgc29j a2V0IGR1ZSB0byBob3cgdGhlIFBvc3RncmVTUUwgcHJvdG9jb2wgd29ya3MKKwkgKiB3aXRoIFRM UyBjb25uZWN0aW9ucy4gVGhpcyBmdW5jdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgTlNQUiBwdWJs aWMgQVBJLAorCSAqIHNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlIGZvciB0 aGUgcmF0aW9uYWxlIG9mIHN0aWxsIHVzaW5nCisJICogaXQuCisJICovCisJcHJfZmQgPSBQUl9J bXBvcnRUQ1BTb2NrZXQoY29ubi0+c29jayk7CisJaWYgKCFwcl9mZCkKKwl7CisJCXByaW50ZlBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQoInVu YWJsZSB0byBhdHRhY2ggdG8gc29ja2V0OiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdl KFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCX0KKwor CS8qCisJICogTW9zdCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUsIGFuZCBpbXBsZW1l bnRhdGlvbnMgb2YsIE5TUy9OU1BSCisJICogdXNlIHRoZSBQUl9OZXdUQ1BTb2NrZXQoKSBmdW5j dGlvbiBoZXJlLCB3aGljaCBoYXMgdGhlIGRyYXdiYWNrIHRoYXQgaXQKKwkgKiBjYW4gb25seSBj cmVhdGUgSVB2NCBzb2NrZXRzLiBJbnN0ZWFkIHVzZSBQUl9PcGVuVENQU29ja2V0KCkgd2hpY2gK KwkgKiBjb3BlcyB3aXRoIElQdjYgYXMgd2VsbC4KKwkgKi8KKwltb2RlbCA9IFNTTF9JbXBvcnRG RChOVUxMLCBQUl9PcGVuVENQU29ja2V0KGNvbm4tPmxhZGRyLmFkZHIuc3NfZmFtaWx5KSk7CisJ aWYgKCFtb2RlbCkKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us CisJCQkJCQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byBlbmFibGUgVExTOiAlcyIpLAorCQkJ CQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BP TExJTkdfRkFJTEVEOworCX0KKworCS8qIERpc2FibGUgb2xkIHByb3RvY29sIHZlcnNpb25zIChT U0x2MiBhbmQgU1NMdjMpICovCisJU1NMX09wdGlvblNldChtb2RlbCwgU1NMX0VOQUJMRV9TU0wy LCBQUl9GQUxTRSk7CisJU1NMX09wdGlvblNldChtb2RlbCwgU1NMX1YyX0NPTVBBVElCTEVfSEVM TE8sIFBSX0ZBTFNFKTsKKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfRU5BQkxFX1NTTDMsIFBS X0ZBTFNFKTsKKworI2lmZGVmIFNTTF9DQkNfUkFORE9NX0lWCisKKwkvKgorCSAqIEVuYWJsZSBw cm90ZWN0aW9uIGFnYWluc3QgdGhlIEJFQVNUIGF0dGFjayBpbiBjYXNlIHRoZSBOU1MgbGlicmFy eSBoYXMKKwkgKiBzdXBwb3J0IGZvciB0aGF0LiBXaGlsZSBTU0x2MyBpcyBkaXNhYmxlZCwgd2Ug bWF5IHN0aWxsIGFsbG93IFRMU3YxCisJICogd2hpY2ggaXMgYWZmZWN0ZWQuIFRoZSBvcHRpb24g aXNuJ3QgZG9jdW1lbnRlZCBhcyBhbiBTU0wgb3B0aW9uLCBidXQgYXMKKwkgKiBhbiBOU1MgZW52 aXJvbm1lbnQgdmFyaWFibGUuCisJICovCisJU1NMX09wdGlvblNldChtb2RlbCwgU1NMX0NCQ19S QU5ET01fSVYsIFBSX1RSVUUpOworI2VuZGlmCisKKwkvKiBTZXQgdXMgdXAgYXMgYSBUTFMgY2xp ZW50IGZvciB0aGUgaGFuZHNoYWtlICovCisJU1NMX09wdGlvblNldChtb2RlbCwgU1NMX0hBTkRT SEFLRV9BU19DTElFTlQsIFBSX1RSVUUpOworCisJLyoKKwkgKiBXaGVuIHNldHRpbmcgdGhlIGF2 YWlsYWJsZSBwcm90b2NvbHMsIHdlIGVpdGhlciB1c2UgdGhlIHVzZXIgZGVmaW5lZAorCSAqIGNv bmZpZ3VyYXRpb24gdmFsdWVzLCBhbmQgaWYgbWlzc2luZyB3ZSBhY2NlcHQgd2hhdGV2ZXIgaXMg dGhlIGhpZ2hlc3QKKwkgKiB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGUgbGlicmFyeSBhcyB0aGUg bWF4IGFuZCBvbmx5IGxpbWl0IHRoZSByYW5nZSBpbgorCSAqIHRoZSBvdGhlciBlbmQgYXQgVExT djEuMC4gc3NsX3ZhcmlhbnRfc3RyZWFtIGlzIGEgUHJvdG9jb2xWYXJpYW50IGVudW0KKwkgKiBm b3IgU3RyZWFtIHByb3RvY29scywgcmF0aGVyIHRoYW4gZGF0YWdyYW0uCisJICovCisJU1NMX1Zl cnNpb25SYW5nZUdldFN1cHBvcnRlZChzc2xfdmFyaWFudF9zdHJlYW0sICZkZXNpcmVkX3Jhbmdl KTsKKwlkZXNpcmVkX3JhbmdlLm1pbiA9IFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMDsKKwor CWlmIChjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24gJiYgc3RybGVuKGNvbm4tPnNzbF9t aW5fcHJvdG9jb2xfdmVyc2lvbikgPiAwKQorCXsKKwkJaW50CQkJc3NsX21pbl92ZXIgPSBzc2xf cHJvdG9jb2xfdmVyc2lvbl90b19uc3MoY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKTsK KworCQlpZiAoc3NsX21pbl92ZXIgPT0gLTEpCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIHZhbHVl IFwiJXNcIiBmb3IgbWluaW11bSB2ZXJzaW9uIG9mIFNTTCBwcm90b2NvbFxuIiksCisJCQkJCQkJ ICBjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOworCQkJcmV0dXJuIC0xOworCQl9CisK KwkJZGVzaXJlZF9yYW5nZS5taW4gPSBzc2xfbWluX3ZlcjsKKwl9CisKKwlpZiAoY29ubi0+c3Ns X21heF9wcm90b2NvbF92ZXJzaW9uICYmIHN0cmxlbihjb25uLT5zc2xfbWF4X3Byb3RvY29sX3Zl cnNpb24pID4gMCkKKwl7CisJCWludAkJCXNzbF9tYXhfdmVyID0gc3NsX3Byb3RvY29sX3ZlcnNp b25fdG9fbnNzKGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisKKwkJaWYgKHNzbF9t YXhfdmVyID09IC0xKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNz YWdlLAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIG1h eGltdW0gdmVyc2lvbiBvZiBTU0wgcHJvdG9jb2xcbiIpLAorCQkJCQkJCSAgY29ubi0+c3NsX21h eF9wcm90b2NvbF92ZXJzaW9uKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWRlc2lyZWRfcmFu Z2UubWF4ID0gc3NsX21heF92ZXI7CisJfQorCisJaWYgKFNTTF9WZXJzaW9uUmFuZ2VTZXQobW9k ZWwsICZkZXNpcmVkX3JhbmdlKSAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRv IHNldCBhbGxvd2VkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlOiAlcyIpLAorCQkJCQkJICBw Z19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdf RkFJTEVEOworCX0KKworCS8qCisJICogU2V0IHVwIGNhbGxiYWNrIGZvciB2ZXJpZnlpbmcgc2Vy dmVyIGNlcnRpZmljYXRlcywgYXMgd2VsbCBhcyBmb3IgaG93CisJICogdG8gaGFuZGxlIGZhaWxl ZCB2ZXJpZmljYXRpb25zLgorCSAqLworCVNTTF9BdXRoQ2VydGlmaWNhdGVIb29rKG1vZGVsLCBw Z19jZXJ0X2F1dGhfaGFuZGxlciwgKHZvaWQgKikgY29ubik7CisJU1NMX0JhZENlcnRIb29rKG1v ZGVsLCBwZ19iYWRfY2VydF9oYW5kbGVyLCAodm9pZCAqKSBjb25uKTsKKworCS8qCisJICogQ29u dmVydCB0aGUgTlNQUiBzb2NrZXQgdG8gYW4gU1NMIHNvY2tldC4gRW5zdXJpbmcgdGhlIHN1Y2Nl c3Mgb2YgdGhpcworCSAqIG9wZXJhdGlvbiBpcyBjcml0aWNhbCBhcyBOU1MgU1NMXyogZnVuY3Rp b25zIG1heSByZXR1cm4gU0VDU3VjY2VzcyBvbgorCSAqIHRoZSBzb2NrZXQgZXZlbiB0aG91Z2gg U1NMIGhhc24ndCBiZWVuIGVuYWJsZWQsIHdoaWNoIGludHJvZHVjZSBhIHJpc2sKKwkgKiBvZiBz aWxlbnQgZG93bmdyYWRlcy4KKwkgKi8KKwljb25uLT5wcl9mZCA9IFNTTF9JbXBvcnRGRChtb2Rl bCwgcHJfZmQpOworCWlmICghY29ubi0+cHJfZmQpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gY29u ZmlndXJlIGNsaWVudCBmb3IgVExTOiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBS X0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCX0KKworCS8q CisJICogVGhlIG1vZGVsIGNhbiBub3cgd2UgY2xvc2VkIGFzIHdlJ3ZlIGFwcGxpZWQgdGhlIHNl dHRpbmdzIG9mIHRoZSBtb2RlbAorCSAqIG9udG8gdGhlIHJlYWwgc29ja2V0LiBGcm9tIGhlcmVv biB3ZSBzaG91bGQgb25seSB1c2UgY29ubi0+cHJfZmQuCisJICovCisJUFJfQ2xvc2UobW9kZWwp OworCisJLyogU2V0IHRoZSBwcml2YXRlIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBwYXNzd29y ZCBjYWxsYmFjayAqLworCVNTTF9TZXRQS0NTMTFQaW5BcmcoY29ubi0+cHJfZmQsICh2b2lkICop IGNvbm4pOworCisJLyoKKwkgKiBJZiBhIENSTCBmaWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgdmVy aWZ5IGlmIGl0IGV4aXN0cyBpbiB0aGUgZGF0YWJhc2UKKwkgKiBidXQgZG9uJ3QgZmFpbCBpbiBj YXNlIGl0IGRvZXNuJ3QuCisJICovCisJaWYgKGNvbm4tPnNzbGNybCAmJiBzdHJsZW4oY29ubi0+ c3NsY3JsKSA+IDApCisJeworCQkvKiBYWFg6IEltcGxlbWVudCBtZS4uICovCisJfQorCisJc3Rh dHVzID0gU1NMX1Jlc2V0SGFuZHNoYWtlKGNvbm4tPnByX2ZkLCBQUl9GQUxTRSk7CisJaWYgKHN0 YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGluaXRpYXRlIGhhbmRz aGFrZTogJXMiKSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJ CXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIFNldCBjYWxsYmFj ayBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uIHdoZW4gcmVxdWVzdGVkIGJ5IHRoZSBzZXJ2ZXIu CisJICovCisJU1NMX0dldENsaWVudEF1dGhEYXRhSG9vayhjb25uLT5wcl9mZCwgcGdfY2xpZW50 X2F1dGhfaGFuZGxlciwgKHZvaWQgKikgY29ubik7CisKKwkvKgorCSAqIFNwZWNpZnkgd2hpY2gg aG9zdG5hbWUgd2UgYXJlIGV4cGVjdGluZyB0byB0YWxrIHRvLiBUaGlzIGlzIHJlcXVpcmVkLAor CSAqIGFsYmVpdCBtb3N0bHkgYXBwbGllcyB0byB3aGVuIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRv IGEgdHJhZGl0aW9uYWwKKwkgKiBodHRwIHNlcnZlciBpdCBzZWVtcy4KKwkgKi8KKwlTU0xfU2V0 VVJMKGNvbm4tPnByX2ZkLCAoY29ubi0+Y29ubmhvc3RbY29ubi0+d2hpY2hob3N0XSkuaG9zdCk7 CisKKwlkbworCXsKKwkJc3RhdHVzID0gU1NMX0ZvcmNlSGFuZHNoYWtlKGNvbm4tPnByX2ZkKTsK Kwl9CisJd2hpbGUgKHN0YXR1cyAhPSBTRUNTdWNjZXNzICYmIFBSX0dldEVycm9yKCkgPT0gUFJf V09VTERfQkxPQ0tfRVJST1IpOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJ cHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiU1NMIGVycm9yOiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVy cm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCX0KKworCWNvbm4tPnNz bF9pbl91c2UgPSB0cnVlOworCXJldHVybiBQR1JFU19QT0xMSU5HX09LOworfQorCitzc2l6ZV90 CitwZ3Rsc19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQoreworCVBS SW50MzIJCW5yZWFkOworCVBSRXJyb3JDb2RlIHN0YXR1czsKKwlpbnQJCQlyZWFkX2Vycm5vID0g MDsKKworCS8qCisJICogUFJfUmVjdiBibG9ja3MgdW50aWwgdGhlcmUgaXMgZGF0YSB0byByZWFk IG9yIHRoZSB0aW1lb3V0IGV4cGlyZXMuIFdlCisJICogZG9uJ3Qgd2FudCB0byBzaXQgYmxvY2tl ZCBoZXJlLCBzbyB0aGUgdGltZW91dCBpcyB0dXJuZWQgb2ZmIGJ5IHVzaW5nCisJICogUFJfSU5U RVJWQUxfTk9fV0FJVCB3aGljaCBtZWFucyAicmV0dXJuIGltbWVkaWF0ZWx5IiwgIFplcm8gaXMg cmV0dXJuZWQKKwkgKiBmb3IgY2xvc2VkIGNvbm5lY3Rpb25zLCB3aGlsZSAtMSBpbmRpY2F0ZXMg YW4gZXJyb3Igd2l0aGluIHRoZSBvbmdvaW5nCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwlucmVh ZCA9IFBSX1JlY3YoY29ubi0+cHJfZmQsIHB0ciwgbGVuLCAwLCBQUl9JTlRFUlZBTF9OT19XQUlU KTsKKworCWlmIChucmVhZCA9PSAwKQorCXsKKwkJcmVhZF9lcnJubyA9IEVDT05OUkVTRVQ7CisJ CW5yZWFkID0gLTE7CisJfQorCWVsc2UgaWYgKG5yZWFkID09IC0xKQorCXsKKwkJc3RhdHVzID0g UFJfR2V0RXJyb3IoKTsKKworCQlzd2l0Y2ggKHN0YXR1cykKKwkJeworCQkJY2FzZSBQUl9JT19U SU1FT1VUX0VSUk9SOgorCQkJCS8qIE5vIGRhdGEgYXZhaWxhYmxlIHlldC4gKi8KKwkJCQlucmVh ZCA9IDA7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgUFJfV09VTERfQkxPQ0tfRVJST1I6CisJCQkJ cmVhZF9lcnJubyA9IEVXT1VMREJMT0NLOworCQkJCWJyZWFrOworCisJCQkJLyoKKwkJCQkgKiBU aGUgZXJyb3IgY2FzZXMgZm9yIFBSX1JlY3YgYXJlIG5vdCBkb2N1bWVudGVkLCBidXQgY2FuIGJl CisJCQkJICogcmV2ZXJzZSBlbmdpbmVlcmVkIGZyb20gX01EX3VuaXhfbWFwX2RlZmF1bHRfZXJy b3IoKSBpbiB0aGUKKwkJCQkgKiBOU1BSIGNvZGUsIGRlZmluZWQgaW4gcHIvc3JjL21kL3VuaXgv dW5peF9lcnJvcnMuYy4KKwkJCQkgKi8KKwkJCWNhc2UgUFJfTkVUV09SS19VTlJFQUNIQUJMRV9F UlJPUjoKKwkJCWNhc2UgUFJfQ09OTkVDVF9SRVNFVF9FUlJPUjoKKwkJCQlyZWFkX2Vycm5vID0g RUNPTk5SRVNFVDsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJfQor CisJCWlmIChucmVhZCA9PSAtMSkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQoIlRMUyByZWFkIGVycm9yOiAlcyIp LAorCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShzdGF0dXMpKTsKKwkJfQorCX0KKworCVNPQ0tf RVJSTk9fU0VUKHJlYWRfZXJybm8pOworCXJldHVybiAoc3NpemVfdCkgbnJlYWQ7Cit9CisKKy8q CisgKiBwZ3Rsc19yZWFkX3BlbmRpbmcKKyAqCQlDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBk YXRhIHRvIGJlIHJlYWQuCisgKgorICogVGhpcyBpcyBwYXJ0IG9mIHRoZSBQb3N0Z3JlU1FMIFRM UyBiYWNrZW5kIEFQSS4KKyAqLworYm9vbAorcGd0bHNfcmVhZF9wZW5kaW5nKFBHY29ubiAqY29u bikKK3sKKwl1bnNpZ25lZCBjaGFyIGM7CisJaW50CQkJbjsKKworCS8qCisJICogUFJfUmVjdiBw ZWVrcyBpbnRvIHRoZSBzdHJlYW0gd2l0aCB0aGUgdGltZW91bnQgdHVybmVkIG9mZiwgdG8gc2Vl IGlmCisJICogdGhlcmUgaXMgYW5vdGhlciBieXRlIHRvIHJlYWQgb2ZmIHRoZSB3aXJlLiBUaGVy ZSBpcyBhbiBOU1MgZnVuY3Rpb24KKwkgKiBTU0xfRGF0YVBlbmRpbmcoKSB3aGljaCBtaWdodCBz ZWVtIGxpa2UgYSBiZXR0ZXIgZml0LCBidXQgaXQgd2lsbCBvbmx5CisJICogY2hlY2sgYWxyZWFk eSBlbmNyeXB0ZWQgZGF0YSBpbiB0aGUgU1NMIGJ1ZmZlciwgbm90IHN0aWxsIHVuZW5jcnlwdGVk CisJICogZGF0YSwgdGh1cyBpdCBkb2Vzbid0IGd1YXJhbnRlZSB0aGF0IGEgc3Vic2VxdWVudCBj YWxsIHRvCisJICogUFJfUmVhZC9QUl9SZWN2IHdvbid0IGJsb2NrLgorCSAqLworCW4gPSBQUl9S ZWN2KGNvbm4tPnByX2ZkLCAmYywgMSwgUFJfTVNHX1BFRUssIFBSX0lOVEVSVkFMX05PX1dBSVQp OworCXJldHVybiAobiA+IDApOworfQorCitzc2l6ZV90CitwZ3Rsc193cml0ZShQR2Nvbm4gKmNv bm4sIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKK3sKKwlQUkludDMyCQluOworCVBSRXJy b3JDb2RlIHN0YXR1czsKKwlpbnQJCQl3cml0ZV9lcnJubyA9IDA7CisKKwluID0gUFJfV3JpdGUo Y29ubi0+cHJfZmQsIHB0ciwgbGVuKTsKKworCWlmIChuIDwgMCkKKwl7CisJCXN0YXR1cyA9IFBS X0dldEVycm9yKCk7CisKKwkJc3dpdGNoIChzdGF0dXMpCisJCXsKKwkJCWNhc2UgUFJfV09VTERf QkxPQ0tfRVJST1I6CisjaWZkZWYgRUFHQUlOCisJCQkJd3JpdGVfZXJybm8gPSBFQUdBSU47Cisj ZWxzZQorCQkJCXdyaXRlX2Vycm5vID0gRUlOVFI7CisjZW5kaWYKKwkJCQlicmVhazsKKworCQkJ ZGVmYXVsdDoKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJCQkgIGxpYnBxX2dldHRleHQoIlRMUyB3cml0ZSBlcnJvcjogJXMiKSwKKwkJCQkJCQkJICBw Z19TU0xlcnJtZXNzYWdlKHN0YXR1cykpOworCQkJCXdyaXRlX2Vycm5vID0gRUNPTk5SRVNFVDsK KwkJCQlicmVhazsKKwkJfQorCX0KKworCVNPQ0tfRVJSTk9fU0VUKHdyaXRlX2Vycm5vKTsKKwly ZXR1cm4gKHNzaXplX3QpIG47Cit9CisKK2NoYXIgKgorcGd0bHNfZ2V0X3BlZXJfY2VydGlmaWNh dGVfaGFzaChQR2Nvbm4gKmNvbm4sIHNpemVfdCAqbGVuKQoreworCUNFUlRDZXJ0aWZpY2F0ZSAq c2VydmVyX2NlcnQ7CisJU0VDT2lkVGFnCXNpZ25hdHVyZV9hbGc7CisJU0VDT2lkVGFnCWRpZ2Vz dF9hbGc7CisJaW50CQkJZGlnZXN0X2xlbjsKKwljb25zdCBOU1NTaWduYXR1cmVBbGdvcml0aG1z ICpjYW5kaWRhdGU7CisJUExBcmVuYVBvb2wgKmFyZW5hOworCVNFQ0l0ZW0JCWRpZ2VzdDsKKwlj aGFyCSAgICpyZXQ7CisJU0VDU3RhdHVzCXN0YXR1czsKKworCSpsZW4gPSAwOworCisJc2VydmVy X2NlcnQgPSBTU0xfUGVlckNlcnRpZmljYXRlKGNvbm4tPnByX2ZkKTsKKwlpZiAoIXNlcnZlcl9j ZXJ0KQorCQlyZXR1cm4gTlVMTDsKKworCXNpZ25hdHVyZV9hbGcgPSBTRUNPSURfR2V0QWxnb3Jp dGhtVGFnKCZzZXJ2ZXJfY2VydC0+c2lnbmF0dXJlKTsKKworCWNhbmRpZGF0ZSA9IE5TU19TQ1JB TURpZ2VzdEFsZ29yaXRobTsKKwl3aGlsZSAoY2FuZGlkYXRlLT5zaWduYXR1cmUpCisJeworCQlp ZiAoc2lnbmF0dXJlX2FsZyA9PSBjYW5kaWRhdGUtPnNpZ25hdHVyZSkKKwkJeworCQkJZGlnZXN0 X2FsZyA9IGNhbmRpZGF0ZS0+aGFzaDsKKwkJCWRpZ2VzdF9sZW4gPSBjYW5kaWRhdGUtPmxlbjsK KwkJCWJyZWFrOworCQl9CisKKwkJY2FuZGlkYXRlKys7CisJfQorCisJaWYgKCFjYW5kaWRhdGUt PnNpZ25hdHVyZSkKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us CisJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGRpZ2VzdCBmb3IgT0lEICcl cydcbiIpLAorCQkJCQkJICBTRUNPSURfRmluZE9JRFRhZ0Rlc2NyaXB0aW9uKHNpZ25hdHVyZV9h bGcpKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJYXJlbmEgPSBQT1JUX05ld0FyZW5hKFNFQ19B U04xX0RFRkFVTFRfQVJFTkFfU0laRSk7CisJZGlnZXN0LmRhdGEgPSBQT1JUX0FyZW5hWkFsbG9j KGFyZW5hLCBzaXplb2YodW5zaWduZWQgY2hhcikgKiBkaWdlc3RfbGVuKTsKKwlkaWdlc3QubGVu ID0gZGlnZXN0X2xlbjsKKworCXN0YXR1cyA9IFBLMTFfSGFzaEJ1ZihkaWdlc3RfYWxnLCBkaWdl c3QuZGF0YSwgc2VydmVyX2NlcnQtPmRlckNlcnQuZGF0YSwKKwkJCQkJCSAgc2VydmVyX2NlcnQt PmRlckNlcnQubGVuKTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCXByaW50 ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQo InVuYWJsZSB0byBnZW5lcmF0ZSBwZWVyIGNlcnRpZmljYXRlIGRpZ2VzdDogJXMiKSwKKwkJCQkJ CSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCVBPUlRfRnJlZUFyZW5hKGFy ZW5hLCBQUl9UUlVFKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0ID0gcGdfbWFsbG9jKGRp Z2VzdC5sZW4pOworCW1lbWNweShyZXQsIGRpZ2VzdC5kYXRhLCBkaWdlc3QubGVuKTsKKwkqbGVu ID0gZGlnZXN0X2xlbjsKKwlQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJfVFJVRSk7CisKKwlyZXR1 cm4gcmV0OworfQorCisvKgorICoJVmVyaWZ5IHRoYXQgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBt YXRjaGVzIHRoZSBob3N0bmFtZSB3ZSBjb25uZWN0ZWQgdG8uCisgKgorICogVGhlIGNlcnRpZmlj YXRlJ3MgQ29tbW9uIE5hbWUgYW5kIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZXMgYXJlIGNvbnNp ZGVyZWQuCisgKi8KK2ludAorcGd0bHNfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmlj YXRlX2d1dHMoUEdjb25uICpjb25uLAorCQkJCQkJCQkJCQkJaW50ICpuYW1lc19leGFtaW5lZCwK KwkJCQkJCQkJCQkJCWNoYXIgKipmaXJzdF9uYW1lKQoreworCWNoYXIJICAgKnNlcnZlcl9ob3N0 bmFtZSA9IE5VTEw7CisJQ0VSVENlcnRpZmljYXRlICpzZXJ2ZXJfY2VydCA9IE5VTEw7CisJU0VD U3RhdHVzCXN0YXR1cyA9IFNFQ1N1Y2Nlc3M7CisJU0VDSXRlbQkJYWx0bmFtZV9pdGVtOworCVBM QXJlbmFQb29sICphcmVuYSA9IE5VTEw7CisJQ0VSVEdlbmVyYWxOYW1lICpzYW5fbGlzdDsKKwlD RVJUR2VuZXJhbE5hbWUgKmNuOworCisJc2VydmVyX2hvc3RuYW1lID0gU1NMX1JldmVhbFVSTChj b25uLT5wcl9mZCk7CisJaWYgKCFzZXJ2ZXJfaG9zdG5hbWUgfHwgc2VydmVyX2hvc3RuYW1lWzBd ID09ICdcMCcpCisJCWdvdG8gZG9uZTsKKworCS8qCisJICogQ0VSVF9WZXJpZnlDZXJ0TmFtZSB3 aWxsIGludGVybmFsbHkgcGVyZm9ybSBSRkMgMjgxOCBTdWJqZWN0QWx0TmFtZQorCSAqIHZlcmlm aWNhdGlvbi4KKwkgKi8KKwlzZXJ2ZXJfY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUoY29ubi0+ cHJfZmQpOworCXN0YXR1cyA9IENFUlRfVmVyaWZ5Q2VydE5hbWUoc2VydmVyX2NlcnQsIHNlcnZl cl9ob3N0bmFtZSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRmUFFF eHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5h YmxlIHRvIHZlcmlmeSBzZXJ2ZXIgaG9zdG5hbWU6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1l c3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlnb3RvIGRvbmU7CisJfQorCisJc3RhdHVzID0gQ0VS VF9GaW5kQ2VydEV4dGVuc2lvbihzZXJ2ZXJfY2VydCwgU0VDX09JRF9YNTA5X1NVQkpFQ1RfQUxU X05BTUUsCisJCQkJCQkJCQkmYWx0bmFtZV9pdGVtKTsKKwlpZiAoc3RhdHVzID09IFNFQ1N1Y2Nl c3MpCisJeworCQlhcmVuYSA9IFBPUlRfTmV3QXJlbmEoREVSX0RFRkFVTFRfQ0hVTktTSVpFKTsK KwkJaWYgKCFhcmVuYSkKKwkJeworCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwkJCWdvdG8gZG9u ZTsKKwkJfQorCQlzYW5fbGlzdCA9IENFUlRfRGVjb2RlQWx0TmFtZUV4dGVuc2lvbihhcmVuYSwg JmFsdG5hbWVfaXRlbSk7CisJCWlmICghc2FuX2xpc3QpCisJCXsKKwkJCXN0YXR1cyA9IFNFQ0Zh aWx1cmU7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQlmb3IgKGNuID0gc2FuX2xpc3Q7IGNuICE9 IHNhbl9saXN0OyBjbiA9IENFUlRfR2V0TmV4dEdlbmVyYWxOYW1lKGNuKSkKKwkJeworCQkJY2hh cgkgICAqYWx0X25hbWU7CisJCQlpbnQJCQlydjsKKwkJCWNoYXIJCXRtcFs1MTJdOworCisJCQlz dGF0dXMgPSBDRVJUX1JGQzE0ODVfRXNjYXBlQW5kUXVvdGUodG1wLCBzaXplb2YodG1wKSwKKwkJ CQkJCQkJCQkJCSAoY2hhciAqKSBjbi0+bmFtZS5vdGhlci5kYXRhLAorCQkJCQkJCQkJCQkJIGNu LT5uYW1lLm90aGVyLmxlbik7CisKKwkJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJCQln b3RvIGRvbmU7CisKKwkJCXJ2ID0gcHFfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmlj YXRlX25hbWUoY29ubiwgdG1wLAorCQkJCQkJCQkJCQkJCQkJICBzdHJsZW4odG1wKSwKKwkJCQkJ CQkJCQkJCQkJCSAgJmFsdF9uYW1lKTsKKwkJCWlmIChhbHRfbmFtZSkKKwkJCXsKKwkJCQlpZiAo ISpmaXJzdF9uYW1lKQorCQkJCQkqZmlyc3RfbmFtZSA9IGFsdF9uYW1lOworCQkJCWVsc2UKKwkJ CQkJZnJlZShhbHRfbmFtZSk7CisJCQl9CisKKwkJCWlmIChydiA9PSAxKQorCQkJCXN0YXR1cyA9 IFNFQ1N1Y2Nlc3M7CisJCQllbHNlCisJCQl7CisJCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwkJ CQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwllbHNlIGlmIChQT1JUX0dldEVycm9yKCkgPT0gU0VD X0VSUk9SX0VYVEVOU0lPTl9OT1RfRk9VTkQpCisJCXN0YXR1cyA9IFNFQ1N1Y2Nlc3M7CisJZWxz ZQorCQlzdGF0dXMgPSBTRUNTdWNjZXNzOworCitkb25lOgorCS8qIHNhbl9saXN0IHdpbGwgYmUg ZnJlZWQgYnkgZnJlZWluZyB0aGUgYXJlbmEgaXQgd2FzIGFsbG9jYXRlZCBpbiAqLworCWlmIChh cmVuYSkKKwkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RSVUUpOworCVBSX0ZyZWUoc2VydmVy X2hvc3RuYW1lKTsKKworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIDE7CisK KwlyZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKgkJCVBvc3RncmVTUUwgc3BlY2lmaWMgVExT IHN1cHBvcnQgZnVuY3Rpb25zCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgY29uc3QgY2hhciAq CitwZ19TU0xlcnJtZXNzYWdlKFBSRXJyb3JDb2RlIGVycmNvZGUpCit7CisJY29uc3QgY2hhciAq ZXJyb3I7CisKKwkvKgorCSAqIFRyeSB0byBnZXQgdGhlIHVzZXIgZnJpZW5kbHkgZXJyb3IgZGVz Y3JpcHRpb24sIGFuZCBpZiB0aGF0IGZhaWxzIHRyeQorCSAqIHRvIGZhbGwgYmFjayBvbiB0aGUg bmFtZSBvZiB0aGUgUFJFcnJvckNvZGUuCisJICovCisJZXJyb3IgPSBQUl9FcnJvclRvU3RyaW5n KGVycmNvZGUsIFBSX0xBTkdVQUdFX0lfREVGQVVMVCk7CisJaWYgKCFlcnJvcikKKwkJZXJyb3Ig PSBQUl9FcnJvclRvTmFtZShlcnJjb2RlKTsKKwlpZiAoZXJyb3IpCisJCXJldHVybiBlcnJvcjsK KworCXJldHVybiAidW5rbm93biBUTFMgZXJyb3IiOworfQorCitzdGF0aWMgU0VDU3RhdHVzCitw Z19sb2FkX25zc19tb2R1bGUoU0VDTU9ETW9kdWxlICogKm1vZHVsZSwgY29uc3QgY2hhciAqbGli cmFyeSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlTRUNNT0RNb2R1bGUgKm1vZDsKKwljaGFyCSAg ICptb2R1bGVzcGVjOworCisJbW9kdWxlc3BlYyA9IHBzcHJpbnRmKCJsaWJyYXJ5PVwiJXNcIiwg bmFtZT1cIiVzXCIiLCBsaWJyYXJ5LCBuYW1lKTsKKworCS8qCisJICogQXR0ZW1wdCB0byBsb2Fk IHRoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyAicGFyZW50Igor CSAqIHdoaWNoIHNob3VsZCBhbHdheXMgYmUgTlVMTCBmb3IgYXBwbGljYXRpb24gY29kZS4gVGhl IHRoaXJkIHBhcmFtZXRlcgorCSAqIGRlZmluZXMgaWYgbG9hZGluZyBzaG91bGQgcmVjdXJzZSB3 aGljaCBpcyBvbmx5IGFwcGxpY2FibGUgd2hlbiBsb2FkaW5nCisJICogYSBtb2R1bGUgZnJvbSB3 aXRoaW4gYW5vdGhlciBtb2R1bGUuIFRoaXMgaGllcmFyY2h5IHdvdWxkIGhhdmUgdG8gYmUKKwkg KiBkZWZpbmVkIGluIHRoZSBtb2R1bGVzcGVjLCBhbmQgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBh bnl0aGluZyBidXQKKwkgKiBkaXJlY3RseSBhZGRyZXNzZWQgbW9kdWxlcyB3ZSBzaG91bGQgcGFz cyBQUl9GQUxTRS4KKwkgKi8KKwltb2QgPSBTRUNNT0RfTG9hZFVzZXJNb2R1bGUobW9kdWxlc3Bl YywgTlVMTCwgUFJfRkFMU0UpOworCXBmcmVlKG1vZHVsZXNwZWMpOworCisJaWYgKG1vZCAmJiBt b2QtPmxvYWRlZCkKKwl7CisJCSptb2R1bGUgPSBtb2Q7CisJCXJldHVybiBTRUNTdWNjZXNzOwor CX0KKworCVNFQ01PRF9EZXN0cm95TW9kdWxlKG1vZCk7CisJcmV0dXJuIFNFQ0ZhaWx1cmU7Cit9 CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSAqLworLyoJCQkJCQlOU1MgQ2FsbGJhY2tzCQkJCQkJCSovCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K KworLyoKKyAqIHBnX2NlcnRfYXV0aF9oYW5kbGVyCisgKgkJCUNhbGxiYWNrIGZvciBhdXRoZW50 aWNhdGluZyBzZXJ2ZXIgY2VydGlmaWNhdGUKKyAqCisgKiBUaGlzIGlzIHByZXR0eSBtdWNoIHRo ZSBzYW1lIHByb2NlZHVyZSBhcyB0aGUgU1NMX0F1dGhDZXJ0aWZpY2F0ZSBmdW5jdGlvbgorICog cHJvdmlkZWQgYnkgTlNTLCB3aXRoIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHNlcnZlciBob3N0bmFt ZSB2YWxpZGF0aW9uLiBXaXRoCisgKiBTU0xfQXV0aENlcnRpZmljYXRlIHRoZXJlIGlzIG5vIHdh eSB0byBkbyB2ZXJpZnktY2EsIGl0IG9ubHkgZG9lcyB0aGUgLWZ1bGwKKyAqIGZsYXZvciBvZiBv dXIgc3NsbW9kZXMsIHNvIHdlIG5lZWQgb3VyIG93biBpbXBsZW1lbnRhdGlvbi4KKyAqLworc3Rh dGljIFNFQ1N0YXR1cworcGdfY2VydF9hdXRoX2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNj ICpmZCwgUFJCb29sIGNoZWNrc2lnLCBQUkJvb2wgaXNTZXJ2ZXIpCit7CisJU0VDU3RhdHVzCXN0 YXR1czsKKwlQR2Nvbm4JICAgKmNvbm4gPSAoUEdjb25uICopIGFyZzsKKwlDRVJUQ2VydGlmaWNh dGUgKnNlcnZlcl9jZXJ0OworCXZvaWQJICAgKnBpbjsKKworCUFzc2VydCghaXNTZXJ2ZXIpOwor CisJcGluID0gU1NMX1JldmVhbFBpbkFyZyhjb25uLT5wcl9mZCk7CisJc2VydmVyX2NlcnQgPSBT U0xfUGVlckNlcnRpZmljYXRlKGNvbm4tPnByX2ZkKTsKKworCXN0YXR1cyA9IENFUlRfVmVyaWZ5 Q2VydGlmaWNhdGVOb3coKENFUlRDZXJ0REJIYW5kbGUgKikgQ0VSVF9HZXREZWZhdWx0Q2VydERC KCksCisJCQkJCQkJCQkgICBzZXJ2ZXJfY2VydCwKKwkJCQkJCQkJCSAgIGNoZWNrc2lnLAorCQkJ CQkJCQkJICAgY2VydGlmaWNhdGVVc2FnZVNTTFNlcnZlciwKKwkJCQkJCQkJCSAgIHBpbiwKKwkJ CQkJCQkJCSAgIE5VTEwpOworCisJLyoKKwkgKiBJZiB3ZSd2ZSBhbHJlYWR5IGZhaWxlZCB2YWxp ZGF0aW9uIHRoZW4gdGhlcmUgaXMgbm8gcG9pbnQgaW4gYWxzbworCSAqIHBlcmZvcm1pbmcgdGhl IGhvc3RuYW1lIGNoZWNrIGZvciB2ZXJpZnktZnVsbC4KKwkgKi8KKwlpZiAoc3RhdHVzID09IFNF Q1N1Y2Nlc3MpCisJeworCQlpZiAoIXBxX3ZlcmlmeV9wZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZp Y2F0ZShjb25uKSkKKwkJCXN0YXR1cyA9IFNFQ0ZhaWx1cmU7CisJfQorCWVsc2UKKwl7CisJCXBy aW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRl eHQoInVuYWJsZSB0byB2ZXJpZnkgY2VydGlmaWNhdGU6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVy cm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCX0KKworCXJldHVybiBzdGF0dXM7Cit9CisKKy8q CisgKiBwZ19jbGllbnRfYXV0aF9oYW5kbGVyCisgKgkJQ2FsbGJhY2sgZm9yIGNsaWVudCBjZXJ0 aWZpY2F0ZSB2YWxpZGF0aW9uCisgKgorICogVGhlIGNsaWVudCBhdXRoIGNhbGxiYWNrIGlzIG5v dCBvbiBieSBkZWZhdWx0IGluIE5TUywgc28gd2UgbmVlZCB0byBpbnZva2UKKyAqIGl0IG91cnNl bHZlcyB0byBlbnN1cmUgd2UgY2FuIGRvIGNlcnQgYXV0aGVudGljYXRpb24uIEEgVE9ETyBpcyB0 byBzdXBwb3J0CisgKiBydW5uaW5nIHdpdGhvdXQgYSBzcGVjaWZpZWQgc3NsY2VydCBwYXJhbWV0 ZXIuIEJ5IHJldHJpZXZpbmcgYWxsIHRoZSBjZXJ0cworICogdmlhIG5pY2tuYW1lIGZyb20gdGhl IGNlcnQgZGF0YWJhc2UgYW5kIHNlZSBpZiB3ZSBmaW5kIG9uZSB3aGljaCBhcHBseSB3aXRoCisg KiBOU1NfQ21wQ2VydENoYWluV0NBTmFtZXMoKSBhbmQgUEsxMV9GaW5kS2V5QnlBbnlDZXJ0KCkg d2UgY291bGQgc3VwcG9ydAorICoganVzdCBydW5uaW5nIHdpdGggYSBzc2wgZGF0YWJhc2Ugc3Bl Y2lmaWVkLgorICoKKyAqIEZvciBub3csIHdlIHVzZSB0aGUgZGVmYXVsdCBjbGllbnQgY2VydGlm aWNhdGUgdmFsaWRhdGlvbiB3aGljaCByZXF1aXJlcyBhCisgKiBkZWZpbmVkIG5pY2tuYW1lIHRv IGlkZW50aWZ5IHRoZSBjZXJ0IGluIHRoZSBkYXRhYmFzZS4KKyAqLworc3RhdGljIFNFQ1N0YXR1 cworcGdfY2xpZW50X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKiBzb2NrZXQs IENFUlREaXN0TmFtZXMgKiBjYU5hbWVzLAorCQkJCQkgICBDRVJUQ2VydGlmaWNhdGUgKiAqcFJl dENlcnQsIFNFQ0tFWVByaXZhdGVLZXkgKiAqcFJldEtleSkKK3sKKwlQR2Nvbm4JICAgKmNvbm4g PSAoUEdjb25uICopIGFyZzsKKworCXJldHVybiBOU1NfR2V0Q2xpZW50QXV0aERhdGEoY29ubi0+ c3NsY2VydCwgc29ja2V0LCBjYU5hbWVzLCBwUmV0Q2VydCwgcFJldEtleSk7Cit9CisKKy8qCisg KiBwZ19iYWRfY2VydF9oYW5kbGVyCisgKgkJQ2FsbGJhY2sgZm9yIGZhaWxlZCBjZXJ0aWZpY2F0 ZSB2YWxpZGF0aW9uCisgKgorICogVGhlIFRMUyBoYW5kc2hha2Ugd2lsbCBjYWxsIHRoaXMgZnVu Y3Rpb24gaWZmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZmFpbGVkCisgKiB2YWxpZGF0aW9uLiBE ZXBlbmRpbmcgb24gdGhlIHNzbG1vZGUsIHdlIGFsbG93IHRoZSBjb25uZWN0aW9uIGFueXdheXMu CisgKi8KK3N0YXRpYyBTRUNTdGF0dXMKK3BnX2JhZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQ UkZpbGVEZXNjICogZmQpCit7CisJUEdjb25uCSAgICpjb25uID0gKFBHY29ubiAqKSBhcmc7CisJ UFJFcnJvckNvZGUgZXJyOworCisJLyoKKwkgKiBUaGlzIHJlYWxseSBzaG91bGRuJ3QgaGFwcGVu LCBhcyB3ZSd2ZSBzZXQgdGhlIFBHY29ubiBvYmplY3QgYXMgb3VyCisJICogY2FsbGJhY2sgZGF0 YSwgYW5kIGF0IHRoZSBjYWxsc2l0ZSB3ZSBrbm93IGl0IHdpbGwgYmUgcG9wdWxhdGVkLiBUaGF0 CisJICogYmVpbmcgc2FpZCwgdGhlIE5TUyBjb2RlIGl0c2VsZiBwZXJmb3JtcyB0aGlzIGNoZWNr IGV2ZW4gd2hlbiBpdCBzaG91bGQKKwkgKiBub3QgYmUgcmVxdWlyZWQgc28gbGV0J3MgdXNlIHRo ZSBzYW1lIGJlbHRzIHdpdGggb3VyIHN1c3BlbmRlcnMuCisJICovCisJaWYgKCFhcmcpCisJCXJl dHVybiBTRUNGYWlsdXJlOworCisJLyoKKwkgKiBGb3Igc3NsbW9kZXMgb3RoZXIgdGhhbiB2ZXJp ZnktZnVsbCBhbmQgdmVyaWZ5LWNhIHdlIGRvbid0IHBlcmZvcm0gcGVlcgorCSAqIHZhbGlkYXRp b24sIHNvIHJldHVybiBpbW1lZGlhdGVseS4gIHNzbG1vZGUgcmVxdWlyZSB3aXRoIGEgZGF0YWJh c2UKKwkgKiBzcGVjaWZpZWQgd2hpY2ggY29udGFpbnMgYSBDQSBjZXJ0aWZpY2F0ZSB3aWxsIHdv cmsgbGlrZSB2ZXJpZnktY2EgdG8KKwkgKiBiZSBjb21wYXRpYmxlIHdpdGggdGhlIE9wZW5TU0wg aW1wbGVtZW50YXRpb24uCisJICovCisJaWYgKHN0cmNtcChjb25uLT5zc2xtb2RlLCAicmVxdWly ZSIpID09IDApCisJeworCQlpZiAoY29ubi0+Y2VydF9kYXRhYmFzZSAmJiBzdHJsZW4oY29ubi0+ Y2VydF9kYXRhYmFzZSkgPiAwICYmIGNlcnRfZGF0YWJhc2VfaGFzX0NBKGNvbm4pKQorCQkJcmV0 dXJuIFNFQ0ZhaWx1cmU7CisJfQorCWlmIChjb25uLT5zc2xtb2RlWzBdID09ICd2JykKKwkJcmV0 dXJuIFNFQ0ZhaWx1cmU7CisKKwllcnIgPSBQT1JUX0dldEVycm9yKCk7CisKKwkvKgorCSAqIFRP RE86IHRoZXNlIGFyZSByZWxldmFudCBlcnJvciBjb2RlcyB0aGF0IGNhbiBvY2N1ciBpbiBjZXJ0 aWZpY2F0ZQorCSAqIHZhbGlkYXRpb24sIGZpZ3VyZSBvdXQgd2hpY2ggd2UgZG9uJ3Qgd2FudCBm b3IgcmVxdWlyZS9wcmVmZXIgZXRjLgorCSAqLworCXN3aXRjaCAoZXJyKQorCXsKKwkJY2FzZSBT RUNfRVJST1JfSU5WQUxJRF9BVkE6CisJCWNhc2UgU0VDX0VSUk9SX0lOVkFMSURfVElNRToKKwkJ Y2FzZSBTRUNfRVJST1JfQkFEX1NJR05BVFVSRToKKwkJY2FzZSBTRUNfRVJST1JfRVhQSVJFRF9D RVJUSUZJQ0FURToKKwkJY2FzZSBTRUNfRVJST1JfVU5LTk9XTl9JU1NVRVI6CisJCWNhc2UgU0VD X0VSUk9SX1VOVFJVU1RFRF9JU1NVRVI6CisJCWNhc2UgU0VDX0VSUk9SX1VOVFJVU1RFRF9DRVJU OgorCQljYXNlIFNFQ19FUlJPUl9DRVJUX1ZBTElEOgorCQljYXNlIFNFQ19FUlJPUl9FWFBJUkVE X0lTU1VFUl9DRVJUSUZJQ0FURToKKwkJY2FzZSBTRUNfRVJST1JfQ1JMX0VYUElSRUQ6CisJCWNh c2UgU0VDX0VSUk9SX0NSTF9CQURfU0lHTkFUVVJFOgorCQljYXNlIFNFQ19FUlJPUl9FWFRFTlNJ T05fVkFMVUVfSU5WQUxJRDoKKwkJY2FzZSBTRUNfRVJST1JfQ0FfQ0VSVF9JTlZBTElEOgorCQlj YXNlIFNFQ19FUlJPUl9DRVJUX1VTQUdFU19JTlZBTElEOgorCQljYXNlIFNFQ19FUlJPUl9VTktO T1dOX0NSSVRJQ0FMX0VYVEVOU0lPTjoKKwkJCXJldHVybiBTRUNTdWNjZXNzOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gU0VDRmFpbHVyZTsKKwkJCWJyZWFrOworCX0KKworCS8q IFVucmVhY2hhYmxlICovCisJcmV0dXJuIFNFQ1N1Y2Nlc3M7Cit9CisKKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoJ CQkJCVNTTCBpbmZvcm1hdGlvbiBmdW5jdGlvbnMJCQkJCSovCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoKKyAq IFBRZ2V0c3NsCisgKgorICogUmV0dXJuIE5VTEwgYXMgdGhpcyBpcyBsZWdhY3kgYW5kIGRlZmlu ZWQgdG8gYWx3YXlzIGJlIGVxdWFsIHRvIGNhbGxpbmcKKyAqIFBRc3NsU3RydWN0KGNvbm4sICJP cGVuU1NMIik7IFRoaXMgc2hvdWxkIGlkZWFsbHkgdHJpZ2dlciBhIGxvZ2dlZCB3YXJuaW5nCisg KiBzb21ld2hlcmUgYXMgaXQncyBub25zZW5zaWNhbCB0byBydW4gaW4gYSBub24tT3BlblNTTCBi dWlsZCwgYnV0IHRoZSBjb2xvcgorICogb2Ygc2FpZCBiaWtlc2hlZCBoYXNuJ3QgeWV0IGJlZW4g ZGV0ZXJtaW5lZC4KKyAqLwordm9pZCAqCitQUWdldHNzbChQR2Nvbm4gKmNvbm4pCit7CisJcmV0 dXJuIE5VTEw7Cit9CisKK3ZvaWQgKgorUFFzc2xTdHJ1Y3QoUEdjb25uICpjb25uLCBjb25zdCBj aGFyICpzdHJ1Y3RfbmFtZSkKK3sKKwlpZiAoIWNvbm4pCisJCXJldHVybiBOVUxMOworCisJLyoK KwkgKiBSZXR1cm4gdGhlIHVuZGVybHlpbmcgUFJGaWxlRGVzYyB3aGljaCBjYW4gYmUgdXNlZCB0 byBhY2Nlc3MKKwkgKiBpbmZvcm1hdGlvbiBvbiB0aGUgY29ubmVjdGlvbiBkZXRhaWxzLiBUaGVy ZSBpcyBubyBTU0wgY29udGV4dCBwZXIgc2UuCisJICovCisJaWYgKHN0cmNtcChzdHJ1Y3RfbmFt ZSwgIk5TUyIpID09IDApCisJCXJldHVybiBjb25uLT5wcl9mZDsKKwlyZXR1cm4gTlVMTDsKK30K KworY29uc3QgY2hhciAqY29uc3QgKgorUFFzc2xBdHRyaWJ1dGVOYW1lcyhQR2Nvbm4gKmNvbm4p Cit7CisJc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJlc3VsdFtdID0geworCQkibGlicmFyeSIs CisJCSJjaXBoZXIiLAorCQkicHJvdG9jb2wiLAorCQkia2V5X2JpdHMiLAorCQkiY29tcHJlc3Np b24iLAorCQlOVUxMCisJfTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGNoYXIgKgor UFFzc2xBdHRyaWJ1dGUoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICphdHRyaWJ1dGVfbmFtZSkK K3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCVNTTENoYW5uZWxJbmZvIGNoYW5uZWw7CisJU1NMQ2lw aGVyU3VpdGVJbmZvIHN1aXRlOworCisJaWYgKCFjb25uIHx8ICFjb25uLT5wcl9mZCkKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAoc3RyY21wKGF0dHJpYnV0ZV9uYW1lLCAibGlicmFyeSIpID09IDAp CisJCXJldHVybiAiTlNTIjsKKworCXN0YXR1cyA9IFNTTF9HZXRDaGFubmVsSW5mbyhjb25uLT5w cl9mZCwgJmNoYW5uZWwsIHNpemVvZihjaGFubmVsKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNj ZXNzKQorCQlyZXR1cm4gTlVMTDsKKworCXN0YXR1cyA9IFNTTF9HZXRDaXBoZXJTdWl0ZUluZm8o Y2hhbm5lbC5jaXBoZXJTdWl0ZSwgJnN1aXRlLCBzaXplb2Yoc3VpdGUpKTsKKwlpZiAoc3RhdHVz ICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiBOVUxMOworCisJaWYgKHN0cmNtcChhdHRyaWJ1dGVf bmFtZSwgImNpcGhlciIpID09IDApCisJCXJldHVybiBzdWl0ZS5jaXBoZXJTdWl0ZU5hbWU7CisK KwlpZiAoc3RyY21wKGF0dHJpYnV0ZV9uYW1lLCAia2V5X2JpdHMiKSA9PSAwKQorCXsKKwkJc3Rh dGljIGNoYXIga2V5X2JpdHNfc3RyWzhdOworCisJCXNucHJpbnRmKGtleV9iaXRzX3N0ciwgc2l6 ZW9mKGtleV9iaXRzX3N0ciksICIlaSIsIHN1aXRlLmVmZmVjdGl2ZUtleUJpdHMpOworCQlyZXR1 cm4ga2V5X2JpdHNfc3RyOworCX0KKworCWlmIChzdHJjbXAoYXR0cmlidXRlX25hbWUsICJwcm90 b2NvbCIpID09IDApCisJeworCQlzd2l0Y2ggKGNoYW5uZWwucHJvdG9jb2xWZXJzaW9uKQorCQl7 CisjaWZkZWYgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zCisJCQljYXNlIFNTTF9MSUJSQVJZ X1ZFUlNJT05fVExTXzFfMzoKKwkJCQlyZXR1cm4gIlRMU3YxLjMiOworI2VuZGlmCisjaWZkZWYg U1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8yCisJCQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJT05f VExTXzFfMjoKKwkJCQlyZXR1cm4gIlRMU3YxLjIiOworI2VuZGlmCisjaWZkZWYgU1NMX0xJQlJB UllfVkVSU0lPTl9UTFNfMV8xCisJCQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMToK KwkJCQlyZXR1cm4gIlRMU3YxLjEiOworI2VuZGlmCisJCQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJ T05fVExTXzFfMDoKKwkJCQlyZXR1cm4gIlRMU3YxLjAiOworCQkJZGVmYXVsdDoKKwkJCQlyZXR1 cm4gInVua25vd24iOworCQl9CisJfQorCisJLyoKKwkgKiBOU1MgZGlzYWJsZWQgc3VwcG9ydCBm b3IgY29tcHJlc3Npb24gaW4gdmVyc2lvbiAzLjMzLCBhbmQgaXQgd2FzIG9ubHkKKwkgKiBhdmFp bGFibGUgZm9yIFNTTHYzIGF0IHRoYXQgcG9pbnQgYW55d2F5cywgc28gd2UgY2FuIHNhZmVseSBy ZXR1cm4gb2ZmCisJICogaGVyZSB3aXRob3V0IGNoZWNraW5nLgorCSAqLworCWlmIChzdHJjbXAo YXR0cmlidXRlX25hbWUsICJjb21wcmVzc2lvbiIpID09IDApCisJCXJldHVybiAib2ZmIjsKKwor CXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50Citzc2xfcHJvdG9jb2xfdmVyc2lvbl90b19u c3MoY29uc3QgY2hhciAqcHJvdG9jb2wpCit7CisJaWYgKHBnX3N0cmNhc2VjbXAoIlRMU3YxIiwg cHJvdG9jb2wpID09IDApCisJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA7CisK KyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKKwlpZiAocGdfc3RyY2FzZWNtcCgi VExTdjEuMSIsIHByb3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9U TFNfMV8xOworI2VuZGlmCisKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzIKKwlp ZiAocGdfc3RyY2FzZWNtcCgiVExTdjEuMiIsIHByb3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NM X0xJQlJBUllfVkVSU0lPTl9UTFNfMV8yOworI2VuZGlmCisKKyNpZmRlZiBTU0xfTElCUkFSWV9W RVJTSU9OX1RMU18xXzMKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEuMyIsIHByb3RvY29sKSA9 PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOworI2VuZGlmCisKKwly ZXR1cm4gLTE7Cit9CisKKy8qCisgKiBjZXJ0X2RhdGFiYXNlX2hhc19DQQorICoKKyAqIFJldHVy bnMgdHJ1ZSBpbiBjYXNlIHRoZXJlIGlzIGEgQ0EgY2VydGlmaWNhdGUgaW4gdGhlIGRhdGFiYXNl IGNvbm5lY3RlZAorICogdG8gaW4gdGhlIGNvbm4gb2JqZWN0LCBlbHNlIGZhbHNlLiBUaGlzIGZ1 bmN0aW9uIG9ubHkgY2hlY2tzIGZvciB0aGUKKyAqIHByZXNlbmNlIG9mIGEgQ0EgY2VydGlmaWNh dGUsIG5vdCBpdCdzIHZhbGlkaXR5IGFuZC9vciB1c2VmdWxuZXNzLgorICovCitzdGF0aWMgYm9v bAorY2VydF9kYXRhYmFzZV9oYXNfQ0EoUEdjb25uICpjb25uKQoreworCUNFUlRDZXJ0TGlzdCAq Y2VydGlmaWNhdGVzOworCWJvb2wJCWhhc0NBOworCisJLyoKKwkgKiBJZiB0aGUgY2VydGlmaWNh dGUgZGF0YWJhc2UgaGFzIGEgcGFzc3dvcmQgd2UgbXVzdCBwcm92aWRlIGl0LCBzaW5jZQorCSAq IHRoaXMgQVBJIGRvZXNuJ3QgaW52b2tlIHRoZSBzdGFuZGFyZCBwYXNzd29yZCBjYWxsYmFjay4K KwkgKi8KKwlpZiAoY29ubi0+aGFzX3Bhc3N3b3JkKQorCQljZXJ0aWZpY2F0ZXMgPSBQSzExX0xp c3RDZXJ0cyhQSzExQ2VydExpc3RDQSwgUFFzc2xfcGFzc3dkX2NiKE5VTEwsIFBSX0ZBTFNFLCAo dm9pZCAqKSBjb25uKSk7CisJZWxzZQorCQljZXJ0aWZpY2F0ZXMgPSBQSzExX0xpc3RDZXJ0cyhQ SzExQ2VydExpc3RDQSwgTlVMTCk7CisJaGFzQ0EgPSAhQ0VSVF9MSVNUX0VNUFRZKGNlcnRpZmlj YXRlcyk7CisJQ0VSVF9EZXN0cm95Q2VydExpc3QoY2VydGlmaWNhdGVzKTsKKworCXJldHVybiBo YXNDQTsKK30KKworUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZQorUFFnZXRTU0xLZXlQYXNzSG9v a19uc3Modm9pZCkKK3sKKwlyZXR1cm4gUFFzc2xLZXlQYXNzSG9vazsKK30KKwordm9pZAorUFFz ZXRTU0xLZXlQYXNzSG9va19uc3MoUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZSBob29rKQorewor CVBRc3NsS2V5UGFzc0hvb2sgPSBob29rOworfQorCisvKgorICogU3VwcGx5IGEgcGFzc3dvcmQg dG8gZGVjcnlwdCBhIGNsaWVudCBjZXJ0aWZpY2F0ZS4KKyAqCisgKiBUaGlzIG11c3QgbWF0Y2gg TlNTIHR5cGUgUEsxMVBhc3N3b3JkRnVuYy4KKyAqLworc3RhdGljIGNoYXIgKgorUFFzc2xfcGFz c3dkX2NiKFBLMTFTbG90SW5mbyAqc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICphcmcpCit7CisJ UEdjb25uCSAgICpjb25uID0gKFBHY29ubiAqKSBhcmc7CisKKwljb25uLT5oYXNfcGFzc3dvcmQg PSB0cnVlOworCisJaWYgKFBRc3NsS2V5UGFzc0hvb2spCisJCXJldHVybiBQUXNzbEtleVBhc3NI b29rKHNsb3QsIChQUkJvb2wpIHJldHJ5LCBhcmcpOworCWVsc2UKKwkJcmV0dXJuIFBRZGVmYXVs dFNTTEtleVBhc3NIb29rX25zcyhzbG90LCByZXRyeSwgYXJnKTsKK30KKworLyoKKyAqIFRoZSBk ZWZhdWx0IHBhc3N3b3JkIGhhbmRsZXIgY2FsbGJhY2suCisgKi8KK2NoYXIgKgorUFFkZWZhdWx0 U1NMS2V5UGFzc0hvb2tfbnNzKFBLMTFTbG90SW5mbyAqIHNsb3QsIFBSQm9vbCByZXRyeSwgdm9p ZCAqYXJnKQoreworCVBHY29ubgkgICAqY29ubiA9IChQR2Nvbm4gKikgYXJnOworCisJLyoKKwkg KiBJZiB0aGUgcGFzc3dvcmQgZGlkbid0IHdvcmsgdGhlIGZpcnN0IHRpbWUgdGhlcmUgaXMgbm8g cG9pbnQgaW4KKwkgKiByZXRyeWluZyBhcyBpdCBoYXNuJ3QgY2hhbmdlZC4KKwkgKi8KKwlpZiAo cmV0cnkgIT0gUFJfVFJVRSAmJiBjb25uLT5zc2xwYXNzd29yZCAmJiBzdHJsZW4oY29ubi0+c3Ns cGFzc3dvcmQpID4gMCkKKwkJcmV0dXJuIFBPUlRfU3RyZHVwKGNvbm4tPnNzbHBhc3N3b3JkKTsK KworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt c2VjdXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYwppbmRleCAwMGI4N2Jk Yzk2Li40NDM4NWVlMzkxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYwpAQCAtNDIxLDYgKzQy MSw5IEBAIFBRc3NsQXR0cmlidXRlTmFtZXMoUEdjb25uICpjb25uKQogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KKyNlbmRpZgkJCQkJCQkvKiBVU0VfU1NMICovCisKKyNpZm5kZWYgVVNFX09QRU5TU0wK IAogUFFzc2xLZXlQYXNzSG9va19PcGVuU1NMX3R5cGUKIFBRZ2V0U1NMS2V5UGFzc0hvb2tfT3Bl blNTTCh2b2lkKQpAQCAtNDM5LDcgKzQ0Miw3IEBAIFBRZGVmYXVsdFNTTEtleVBhc3NIb29rX09w ZW5TU0woY2hhciAqYnVmLCBpbnQgc2l6ZSwgUEdjb25uICpjb25uKQogewogCXJldHVybiAwOwog fQotI2VuZGlmCQkJCQkJCS8qIFVTRV9TU0wgKi8KKyNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNT TCAqLwogCiAvKiBEdW1teSB2ZXJzaW9uIG9mIEdTU0FQSSBpbmZvcm1hdGlvbiBmdW5jdGlvbnMs IHdoZW4gYnVpbHQgd2l0aG91dCBHU1Mgc3VwcG9ydCAqLwogI2lmbmRlZiBFTkFCTEVfR1NTCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvbGlicHEtZmUuaAppbmRleCBjMjY2YWQ1YjEzLi5hYmEzMmU2NjM1IDEwMDY0NAot LS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2xpYnBxLWZlLmgKQEAgLTYxOSwxMiArNjE5LDIzIEBAIGV4dGVybiBpbnQJcGdfdmFs aWRfc2VydmVyX2VuY29kaW5nX2lkKGludCBlbmNvZGluZyk7CiAKIC8qID09PSBpbiBmZS1zZWN1 cmUtb3BlbnNzbC5jID09PSAqLwogCi0vKiBTdXBwb3J0IGZvciBvdmVycmlkaW5nIHNzbHBhc3N3 b3JkIGhhbmRsaW5nIHdpdGggYSBjYWxsYmFjay4gKi8KKy8qIFN1cHBvcnQgZm9yIG92ZXJyaWRp bmcgc3NscGFzc3dvcmQgaGFuZGxpbmcgd2l0aCBhIGNhbGxiYWNrICovCiB0eXBlZGVmIGludCAo KlBRc3NsS2V5UGFzc0hvb2tfT3BlblNTTF90eXBlKSAoY2hhciAqYnVmLCBpbnQgc2l6ZSwgUEdj b25uICpjb25uKTsKIGV4dGVybiBQUXNzbEtleVBhc3NIb29rX09wZW5TU0xfdHlwZSBQUWdldFNT TEtleVBhc3NIb29rX09wZW5TU0wodm9pZCk7CiBleHRlcm4gdm9pZCBQUXNldFNTTEtleVBhc3NI b29rX09wZW5TU0woUFFzc2xLZXlQYXNzSG9va19PcGVuU1NMX3R5cGUgaG9vayk7CiBleHRlcm4g aW50CVBRZGVmYXVsdFNTTEtleVBhc3NIb29rX09wZW5TU0woY2hhciAqYnVmLCBpbnQgc2l6ZSwg UEdjb25uICpjb25uKTsKIAorLyogPT0gaW4gZmUtc2VjdXJlLW5zcy5jID09PSAqLwordHlwZWRl ZiBzdHJ1Y3QgUEsxMVNsb3RJbmZvU3RyIFBLMTFTbG90SW5mbzsKK3R5cGVkZWYgaW50IFBSSW50 bjsKK3R5cGVkZWYgUFJJbnRuIFBSQm9vbDsKKworLyogU3VwcG9ydCBmb3Igb3ZlcnJpZGluZyBz c2xwYXNzd29yZCBoYW5kbGluZyB3aXRoIGEgY2FsbGJhY2sgKi8KK3R5cGVkZWYgY2hhciAqKCpQ UXNzbEtleVBhc3NIb29rX25zc190eXBlKSAoUEsxMVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0 cnksIHZvaWQgKmFyZyk7CitleHRlcm4gUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZSBQUWdldFNT TEtleVBhc3NIb29rX25zcyh2b2lkKTsKK2V4dGVybiB2b2lkIFBRc2V0U1NMS2V5UGFzc0hvb2tf bnNzKFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgaG9vayk7CitleHRlcm4gY2hhciAqUFFkZWZh dWx0U1NMS2V5UGFzc0hvb2tfbnNzKFBLMTFTbG90SW5mbyAqc2xvdCwgUFJCb29sIHJldHJ5LCB2 b2lkICphcmcpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaAppbmRleCA0ZGI0OTgzNjljLi5hOTU0NTBmYmJhIDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaApAQCAtMzYyLDYgKzM2Miw3IEBAIHN0cnVjdCBwZ19jb25uCiAJY2hhcgkgICAq c3NscGFzc3dvcmQ7CS8qIGNsaWVudCBrZXkgZmlsZSBwYXNzd29yZCAqLwogCWNoYXIJICAgKnNz bHJvb3RjZXJ0OwkvKiByb290IGNlcnRpZmljYXRlIGZpbGVuYW1lICovCiAJY2hhcgkgICAqc3Ns Y3JsOwkJCS8qIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdCBmaWxlbmFtZSAqLworCWNoYXIJ ICAgKmNlcnRfZGF0YWJhc2U7CS8qIE5TUyBjZXJ0aWZpY2F0ZS9rZXkgZGF0YWJhc2UgKi8KIAlj aGFyCSAgICpyZXF1aXJlcGVlcjsJLyogcmVxdWlyZWQgcGVlciBjcmVkZW50aWFscyBmb3IgbG9j YWwgc29ja2V0cyAqLwogCWNoYXIJICAgKmdzc2VuY21vZGU7CQkvKiBHU1MgbW9kZSAocmVxdWly ZSxwcmVmZXIsZGlzYWJsZSkgKi8KIAljaGFyCSAgICprcmJzcnZuYW1lOwkJLyogS2VyYmVyb3Mg c2VydmljZSBuYW1lICovCkBAIC00ODUsNiArNDg2LDIzIEBAIHN0cnVjdCBwZ19jb25uCiAJCQkJ CQkJCSAqIE9wZW5TU0wgdmVyc2lvbiBjaGFuZ2VzICovCiAjZW5kaWYKICNlbmRpZgkJCQkJCQkv KiBVU0VfT1BFTlNTTCAqLworCisjaWZkZWYgVVNFX05TUworCXZvaWQJICAgKnByX2ZkOwkJCS8q IE5TUFIgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgY29ubmVjdGlvbiAqLworCisJLyoKKwkgKiBU cmFjayB3aGV0aGVyIHRoZSBOU1MgZGF0YWJhc2UgaGFzIGEgcGFzc3dvcmQgc2V0IG9yIG5vdC4g VGhlcmUgaXMgbm8KKwkgKiBBUEkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgcGFzc3dvcmQgc3Rh dHVzIG9mIGEgZGF0YWJhc2UsIGJ1dCB3ZSBuZWVkCisJICogdG8ga25vdyBzaW5jZSBzb21lIE5T UyBBUEkgY2FsbHMgcmVxdWlyZSB0aGUgcGFzc3dvcmQgcGFzc2VkIGluICh0aGV5CisJICogZG9u J3QgY2FsbCB0aGUgY2FsbGJhY2sgdGhlbXNlbHZlcykuIFRvIHRyYWNrLCB3ZSBzaW1wbHkgZmxp cCB0aGlzIHRvCisJICogdHJ1ZSBpbiBjYXNlIE5TUyBpbnZva2VkIHRoZSBwYXNzd29yZCBjYWxs YmFjayAtIGFzIHRoYXQgd2lsbCBvbmx5CisJICogaGFwcGVuIGluIGNhc2UgdGhlcmUgaXMgYSBw YXNzd29yZC4gVGhlIHJlYXNvbiBmb3IgdHJhY2tpbmcgdGhpcyBpcworCSAqIHRoYXQgdGhlcmUg YXJlIGNhbGxzIHdoaWNoIHJlcXVpcmUgYSBwYXNzd29yZCBwYXJhbWV0ZXIsIGJ1dCBkb2Vzbid0 CisJICogdXNlIHRoZSBjYWxsYmFja3MgcHJvdmlkZWQsIHNvIHdlIG11c3QgY2FsbCB0aGUgY2Fs bGJhY2sgb24gYmVoYWxmIG9mCisJICogdGhlc2UuCisJICovCisJYm9vbAkJaGFzX3Bhc3N3b3Jk OworI2VuZGlmCQkJCQkJCS8qIFVTRV9OU1MgKi8KICNlbmRpZgkJCQkJCQkvKiBVU0VfU1NMICov CiAKICNpZmRlZiBFTkFCTEVfR1NTCkBAIC03NTksNyArNzc3LDcgQEAgZXh0ZXJuIHNzaXplX3Qg cGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwog ICogVGhpcyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggb2xkIHZlcnNpb25zIG9mIE9wZW5TU0wgdGhh dCBkb24ndCBoYXZlCiAgKiB0aGUgWDUwOV9nZXRfc2lnbmF0dXJlX25pZCgpIGZ1bmN0aW9uLgog ICovCi0jaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUX1NJ R05BVFVSRV9OSUQpCisjaWYgZGVmaW5lZChVU0VfTlNTKSB8fCAoZGVmaW5lZChVU0VfT1BFTlNT TCkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQpKQogI2RlZmluZSBIQVZF X1BHVExTX0dFVF9QRUVSX0NFUlRJRklDQVRFX0hBU0gKIGV4dGVybiBjaGFyICpwZ3Rsc19nZXRf cGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwgc2l6ZV90ICpsZW4pOwogI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0gYi9zcmMvdG9vbHMvbXN2 Yy9Na3ZjYnVpbGQucG0KaW5kZXggOTAzMjhkYjA0ZS4uZmYwMWFjZjNmNiAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCisrKyBiL3NyYy90b29scy9tc3ZjL01rdmNidWls ZC5wbQpAQCAtMTk1LDEyICsxOTUsMTkgQEAgc3ViIG1rdmNidWlsZAogCSRwb3N0Z3Jlcy0+RnVs bEV4cG9ydERMTCgncG9zdGdyZXMubGliJyk7CiAKIAkjIFRoZSBPQkpTIHNjcmFwZXIgZG9lc24n dCBrbm93IGFib3V0IGlmZGVmcywgc28gcmVtb3ZlIGFwcHJvcHJpYXRlIGZpbGVzCi0JIyBpZiBi dWlsZGluZyB3aXRob3V0IE9wZW5TU0wuCi0JaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+e29w ZW5zc2x9KQorCSMgaWYgYnVpbGRpbmcgd2l0aG91dCB2YXJpb3VzIG9wdGlvbnMuCisJaWYgKCEk c29sdXRpb24tPntvcHRpb25zfS0+e29wZW5zc2x9ICYmICEkc29sdXRpb24tPntvcHRpb25zfS0+ e25zc30pCiAJewogCQkkcG9zdGdyZXMtPlJlbW92ZUZpbGUoJ3NyYy9iYWNrZW5kL2xpYnBxL2Jl LXNlY3VyZS1jb21tb24uYycpOworCX0KKwlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57b3Bl bnNzbH0pCisJewogCQkkcG9zdGdyZXMtPlJlbW92ZUZpbGUoJ3NyYy9iYWNrZW5kL2xpYnBxL2Jl LXNlY3VyZS1vcGVuc3NsLmMnKTsKIAl9CisJaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+e25z c30pCisJeworCQkkcG9zdGdyZXMtPlJlbW92ZUZpbGUoJ3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNl Y3VyZS1uc3MuYycpOworCX0KIAlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57Z3NzfSkKIAl7 CiAJCSRwb3N0Z3Jlcy0+UmVtb3ZlRmlsZSgnc3JjL2JhY2tlbmQvbGlicHEvYmUtZ3NzYXBpLWNv bW1vbi5jJyk7CkBAIC0yNTgsMTIgKzI2NSwxOSBAQCBzdWIgbWt2Y2J1aWxkCiAJJGxpYnBxLT5B ZGRSZWZlcmVuY2UoJGxpYnBnY29tbW9uLCAkbGlicGdwb3J0KTsKIAogCSMgVGhlIE9CSlMgc2Ny YXBlciBkb2Vzbid0IGtub3cgYWJvdXQgaWZkZWZzLCBzbyByZW1vdmUgYXBwcm9wcmlhdGUgZmls ZXMKLQkjIGlmIGJ1aWxkaW5nIHdpdGhvdXQgT3BlblNTTC4KLQlpZiAoISRzb2x1dGlvbi0+e29w dGlvbnN9LT57b3BlbnNzbH0pCisJIyBpZiBidWlsZGluZyB3aXRob3V0IHZhcmlvdXMgb3B0aW9u cworCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSAmJiAhJHNvbHV0aW9uLT57 b3B0aW9uc30tPntuc3N9KQogCXsKIAkJJGxpYnBxLT5SZW1vdmVGaWxlKCdzcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1zZWN1cmUtY29tbW9uLmMnKTsKKwl9CisJaWYgKCEkc29sdXRpb24tPntvcHRp b25zfS0+e29wZW5zc2x9KQorCXsKIAkJJGxpYnBxLT5SZW1vdmVGaWxlKCdzcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jJyk7CiAJfQorCWlmICghJHNvbHV0aW9uLT57b3B0 aW9uc30tPntuc3N9KQorCXsKKwkJJGxpYnBxLT5SZW1vdmVGaWxlKCdzcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1zZWN1cmUtbnNzLmMnKTsKKwl9CiAJaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+ e2dzc30pCiAJewogCQkkbGlicHEtPlJlbW92ZUZpbGUoJ3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWdzc2FwaS1jb21tb24uYycpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvU29sdXRpb24u cG0gYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQppbmRleCAxYzBjOTJmY2QyLi41MTQ4NzA4 OTY5IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQorKysgYi9zcmMvdG9v bHMvbXN2Yy9Tb2x1dGlvbi5wbQpAQCAtNDg4LDYgKzQ4OCw3IEBAIHN1YiBHZW5lcmF0ZUZpbGVz CiAJCVVTRV9MTFZNICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogCQlVU0VfTkFNRURfUE9T SVhfU0VNQVBIT1JFUyA9PiB1bmRlZiwKIAkJVVNFX09QRU5TU0wgICAgICAgICAgICAgICAgPT4g dW5kZWYsCisJCVVTRV9OU1MgICAgICAgICAgICAgICAgICAgID0+IHVuZGVmLAogCQlVU0VfUEFN ICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMg ICAgPT4gdW5kZWYsCiAJCVVTRV9TU0U0Ml9DUkMzMkMgICAgICAgICAgID0+IHVuZGVmLApAQCAt NTQwLDYgKzU0MSwxMCBAQCBzdWIgR2VuZXJhdGVGaWxlcwogCQkJJGRlZmluZXtIQVZFX09QRU5T U0xfSU5JVF9TU0x9ICAgICAgPSAxOwogCQl9CiAJfQorCWlmICgkc2VsZi0+e29wdGlvbnN9LT57 bnNzfSkKKwl7CisJCSRkZWZpbmV7VVNFX05TU30gPSAxOworCX0KIAogCSRzZWxmLT5HZW5lcmF0 ZUNvbmZpZ0hlYWRlcignc3JjL2luY2x1ZGUvcGdfY29uZmlnLmgnLCAgICAgXCVkZWZpbmUsIDEp OwogCSRzZWxmLT5HZW5lcmF0ZUNvbmZpZ0hlYWRlcignc3JjL2luY2x1ZGUvcGdfY29uZmlnX2V4 dC5oJywgXCVkZWZpbmUsIDApOwpAQCAtMTAwNSw2ICsxMDEwLDIxIEBAIHN1YiBBZGRQcm9qZWN0 CiAJCQl9CiAJCX0KIAl9CisJaWYgKCRzZWxmLT57b3B0aW9uc30tPntuc3N9KQorCXsKKwkJJHBy b2otPkFkZEluY2x1ZGVEaXIoJHNlbGYtPntvcHRpb25zfS0+e25zc30gLiAnXC4uXHB1YmxpY1xu c3MnKTsKKwkJJHByb2otPkFkZEluY2x1ZGVEaXIoJHNlbGYtPntvcHRpb25zfS0+e25zc30gLiAn XGluY2x1ZGVcbnNwcicpOworCQlmb3JlYWNoIG15ICRsaWIgKHF3KHBsZHM0IHBsYzQgbnNwcjQp KQorCQl7CisJCQkkcHJvai0+QWRkTGlicmFyeSgkc2VsZi0+e29wdGlvbnN9LT57bnNzfSAuCisJ CQkJCQkJICAnXGxpYlxsaWInIC4gIiRsaWIubGliIiwgMCk7CisJCX0KKwkJZm9yZWFjaCBteSAk bGliIChxdyhzc2wzIHNtaW1lMyBuc3MzKSkKKwkJeworCQkJJHByb2otPkFkZExpYnJhcnkoJHNl bGYtPntvcHRpb25zfS0+e25zc30gLgorCQkJCQkJCSAgJ1xsaWInIC4gIlxcJGxpYi5kbGwubGli IiwgMCk7CisJCX0KKwl9CiAJaWYgKCRzZWxmLT57b3B0aW9uc30tPntubHN9KQogCXsKIAkJJHBy b2otPkFkZEluY2x1ZGVEaXIoJHNlbGYtPntvcHRpb25zfS0+e25sc30gLiAnXGluY2x1ZGUnKTsK LS0gCjIuMjUuMQoK --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0002-NSS-Testharness-updates.patch" Content-Description: v25-0002-NSS-Testharness-updates.patch Content-Disposition: attachment; filename="v25-0002-NSS-Testharness-updates.patch"; size=54044; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <240BF92F77845640831305A2C4D3D3F4@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBmNjRmZDlhNmE2ZjAzZDJmYjZlYjFkNWMyYzRmMzFiY2NmOGVhZjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjIyOjI2ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg Mi82XSBOU1MgVGVzdGhhcm5lc3MgdXBkYXRlcwoKVE9ETzoKCSogR2VuZXJhdGUgY2VydGlmaWNh dGUva2V5cyB3aXRoIE5TUyB0b29saW5nIGZvciBOU1Mgc3BlY2lmaWMgdGVzdAoJKiBBZGQgdGVz dCBmb3IgY2VydGlmaWNhdGUgd2l0aCBlbWJlZGRlZCBudWxscwoJKiBGaXggU0NSQU0gdGVzdHMg d2hlbiBjaGFubmVsIGJpbmRpbmcgd29ya3MKCkRhbmllbCBHdXN0YWZzc29uLCBKYWNvYiBDaGFt cGlvbgotLS0KIHNyYy90ZXN0L3NzbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIzNCArKysrKysrKysrKysKIHNyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbCAgICAgICAg ICAgICAgICB8IDM0MCArKysrKysrKysrKy0tLS0tLS0KIHNyYy90ZXN0L3NzbC90LzAwMl9zY3Jh bS5wbCAgICAgICAgICAgICAgICAgICB8ICAzNyArLQogc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tl bmQvTlNTLnBtICAgICAgICAgICAgIHwgIDczICsrKysKIHNyYy90ZXN0L3NzbC90L1NTTC9CYWNr ZW5kL09wZW5TU0wucG0gICAgICAgICB8IDEwMyArKysrKysKIC4uLi9zc2wvdC97U1NMU2VydmVy LnBtID0+IFNTTC9TZXJ2ZXIucG19ICAgICB8ICA4MCArKysrLQogNiBmaWxlcyBjaGFuZ2VkLCA3 MDQgaW5zZXJ0aW9ucygrKSwgMTYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL05TUy5wbQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0KIHJlbmFtZSBzcmMvdGVzdC9zc2wvdC97 U1NMU2VydmVyLnBtID0+IFNTTC9TZXJ2ZXIucG19ICg3OCUpCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3NsL01ha2VmaWxlIGIvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlCmluZGV4IGQ1NDUzODJlZWEu LmM4MDMyYTJjMTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQorKysgYi9zcmMv dGVzdC9zc2wvTWFrZWZpbGUKQEAgLTMwLDYgKzMwLDM1IEBAIFNTTEZJTEVTIDo9ICQoQ0VSVElG SUNBVEVTOiU9c3NsLyUua2V5KSAkKENFUlRJRklDQVRFUzolPXNzbC8lLmNydCkgXAogCXNzbC9j bGllbnQrY2xpZW50X2NhLmNydCBzc2wvY2xpZW50LWRlci5rZXkgXAogCXNzbC9jbGllbnQtZW5j cnlwdGVkLXBlbS5rZXkgc3NsL2NsaWVudC1lbmNyeXB0ZWQtZGVyLmtleQogCisjIEV2ZW4gdGhv dWdoIHdlIGluIHByYWN0aWNlIGNvdWxkIGdldCBhd2F5IHdpdGggZmFyIGZld2VyIE5TUyBkYXRh YmFzZXMsIHRoZXkKKyMgYXJlIGdlbmVyYXRlZCB0byBtaW1pYyB0aGUgc2V0dXAgZm9yIHRoZSBP cGVuU1NMIHRlc3RzIGluIG9yZGVyIHRvIGVuc3VyZQorIyB3ZSBpc29sYXRlIHRoZSBzYW1lIGJl aGF2aW9yIGJldHdlZW4gdGhlIGJhY2tlbmRzLiBUaGUgZGF0YWJhc2UgbmFtZSBzaG91bGQKKyMg Y29udGFpbiB0aGUgZmlsZXMgaW5jbHVkZWQgZm9yIGVhc2llciB0ZXN0IHN1aXRlIGNvZGUgcmVh ZGluZy4KK05TU0ZJTEVTIDo9IHNzbC9uc3MvY2xpZW50X2NhLmNydC5kYiBcCisJc3NsL25zcy9z ZXJ2ZXJfY2EuY3J0LmRiIFwKKwlzc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiBcCisJc3Ns L25zcy9yb290K2NsaWVudF9jYS5jcnQuZGIgXAorCXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50 LmtleS5kYiBcCisJc3NsL25zcy9jbGllbnQtcmV2b2tlZC5jcnRfX2NsaWVudC1yZXZva2VkLmtl eS5kYiBcCisJc3NsL25zcy9zZXJ2ZXItY24tb25seS5jcnRfX3NlcnZlci1wYXNzd29yZC5rZXku ZGIgXAorCXNzbC9uc3Mvc2VydmVyLWNuLW9ubHkuY3J0X19zZXJ2ZXItY24tb25seS5rZXkuZGIg XAorCXNzbC9uc3Mvcm9vdC5jcmwgXAorCXNzbC9uc3Mvc2VydmVyLmNybCBcCisJc3NsL25zcy9j bGllbnQuY3JsIFwKKwlzc2wvbnNzL3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMuY3J0X19zZXJ2 ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmtleS5kYiBcCisJc3NsL25zcy9zZXJ2ZXItc2luZ2xlLWFs dC1uYW1lLmNydF9fc2VydmVyLXNpbmdsZS1hbHQtbmFtZS5rZXkuZGIgXAorCXNzbC9uc3Mvc2Vy dmVyLWNuLWFuZC1hbHQtbmFtZXMuY3J0X19zZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5rZXkuZGIg XAorCXNzbC9uc3Mvc2VydmVyLW5vLW5hbWVzLmNydF9fc2VydmVyLW5vLW5hbWVzLmtleS5kYiBc CisJc3NsL25zcy9zZXJ2ZXItcmV2b2tlZC5jcnRfX3NlcnZlci1yZXZva2VkLmtleS5kYiBcCisJ c3NsL25zcy9yb290K2NsaWVudC5jcmwgXAorCXNzbC9uc3MvY2xpZW50K2NsaWVudF9jYS5jcnRf X2NsaWVudC5rZXkuZGIgXAorCXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50LWVuY3J5cHRlZC1w ZW0ua2V5LmRiIFwKKwlzc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9fc2VydmVyLmNybC5kYiBc CisJc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3Jvb3Qrc2VydmVyLmNybC5kYiBcCisJc3Ns L25zcy9uYXRpdmVfY2Etcm9vdC5kYiBcCisJc3NsL25zcy9uYXRpdmVfc2VydmVyLXJvb3QuZGIg XAorCXNzbC9uc3MvbmF0aXZlX2NsaWVudC1yb290LmRiCisKICMgVGhpcyB0YXJnZXQgcmUtZ2Vu ZXJhdGVzIGFsbCB0aGUga2V5IGFuZCBjZXJ0aWZpY2F0ZSBmaWxlcy4gVXN1YWxseSB3ZSBqdXN0 CiAjIHVzZSB0aGUgb25lcyB0aGF0IGFyZSBjb21taXR0ZWQgdG8gdGhlIHRyZWUgd2l0aG91dCBy ZWJ1aWxkaW5nIHRoZW0uCiAjCkBAIC0zNyw2ICs2NiwxMCBAQCBTU0xGSUxFUyA6PSAkKENFUlRJ RklDQVRFUzolPXNzbC8lLmtleSkgJChDRVJUSUZJQ0FURVM6JT1zc2wvJS5jcnQpIFwKICMKIHNz bGZpbGVzOiAkKFNTTEZJTEVTKQogCisjIEdlbmVyYXRlIE5TUyBjZXJ0aWZpY2F0ZSBkYXRhYmFz ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgT3BlblNTTCBjZXJ0aWZpY2F0ZXMuCisjIFRoaXMgdGFy Z2V0IHdpbGwgZmFpbCB1bmxlc3MgcHJlY2VkZWQgYnkgbnNzZmlsZXMtY2xlYW4uCituc3NmaWxl czogJChOU1NGSUxFUykKKwogIyBPcGVuU1NMIHJlcXVpcmVzIGEgZGlyZWN0b3J5IHRvIHB1dCBh bGwgZ2VuZXJhdGVkIGNlcnRpZmljYXRlcyBpbi4gV2UgZG9uJ3QKICMgdXNlIHRoaXMgZm9yIGFu eXRoaW5nLCBidXQgd2UgbmVlZCBhIGxvY2F0aW9uLgogc3NsL25ld19jZXJ0c19kaXI6CkBAIC02 NCw2ICs5NywyNCBAQCBzc2wvJV9jYS5jcnQ6IHNzbC8lX2NhLmtleSAlX2NhLmNvbmZpZyBzc2wv cm9vdF9jYS5jcnQgc3NsL25ld19jZXJ0c19kaXIKIAlybSBzc2wvdGVtcF9jYS5jcnQgc3NsL3Rl bXBfY2Ffc2lnbmVkLmNydAogCWVjaG8gIjAxIiA+IHNzbC8kKl9jYS5zcmwKIAorc3NsL25zcy8l X2NhLmNydC5kYjogc3NsLyVfY2EuY3J0CisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJz cWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiAk Kl9jYS5jcnQgLWkgc3NsLyQqX2NhLmNydCAtdCAiQ1QsQyxDIgorCitzc2wvbnNzL3Jvb3Qrc2Vy dmVyX2NhLmNydF9fc2VydmVyLmNybC5kYjogc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2wvbnNz L3NlcnZlci5jcmwKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLS1l bXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9yb290K3NlcnZl cl9jYS5jcnQgLWkgc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCAtdCAiQ1QsQyxDIgorCWNybHV0aWwg LUkgLWkgc3NsL25zcy9zZXJ2ZXIuY3JsIC1kICRAIC1CCisKK3NzbC9uc3Mvcm9vdCtzZXJ2ZXJf Y2EuY3J0X19yb290K3NlcnZlci5jcmwuZGI6IHNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsL25z cy9yb290LmNybCBzc2wvbnNzL3NlcnZlci5jcmwKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwg LWQgInNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIHNzbC9yb290K3NlcnZlcl9jYS5jcnQgLWkgc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCAtdCAi Q1QsQyxDIgorCWNybHV0aWwgLUkgLWkgc3NsL25zcy9yb290LmNybCAtZCAkQCAtQgorCWNybHV0 aWwgLUkgLWkgc3NsL25zcy9zZXJ2ZXIuY3JsIC1kICRAIC1CCisKICMgU2VydmVyIGNlcnRpZmlj YXRlcywgc2lnbmVkIGJ5IHNlcnZlciBDQToKIHNzbC9zZXJ2ZXItJS5jcnQ6IHNzbC9zZXJ2ZXIt JS5rZXkgc3NsL3NlcnZlcl9jYS5jcnQgc2VydmVyLSUuY29uZmlnCiAJb3BlbnNzbCByZXEgLW5l dyAta2V5IHNzbC9zZXJ2ZXItJCoua2V5IC1vdXQgc3NsL3NlcnZlci0kKi5jc3IgLWNvbmZpZyBz ZXJ2ZXItJCouY29uZmlnCkBAIC03Nyw2ICsxMjgsNzkgQEAgc3NsL3NlcnZlci1zcy5jcnQ6IHNz bC9zZXJ2ZXItY24tb25seS5rZXkgc3NsL3NlcnZlci1jbi1vbmx5LmNydCBzZXJ2ZXItY24tb25s eS4KIAlvcGVuc3NsIHg1MDkgLXJlcSAtZGF5cyAxMDAwMCAtaW4gc3NsL3NlcnZlci1zcy5jc3Ig LXNpZ25rZXkgc3NsL3NlcnZlci1jbi1vbmx5LmtleSAtb3V0IHNzbC9zZXJ2ZXItc3MuY3J0ICAt ZXh0ZW5zaW9ucyB2M19yZXEgLWV4dGZpbGUgc2VydmVyLWNuLW9ubHkuY29uZmlnCiAJcm0gc3Ns L3NlcnZlci1zcy5jc3IKIAorIyBwazEydXRpbCB3b24ndCBwcmVzZXJ2ZSB0aGUgcGFzc3dvcmQg d2hlbiBpbXBvcnRpbmcgdGhlIHBhc3N3b3JkIHByb3RlY3RlZAorIyBrZXksIHRoZSBwYXNzd29y ZCBtdXN0IGJlIHNldCBvbiB0aGUgZGF0YWJhc2UgKmJlZm9yZSogaW1wb3J0aW5nIGl0IGFzIHRo ZQorIyBwYXNzd29yZCBpbiB0aGUgcGtjczEyIGVudmVsb3BlIHdpbGwgYmUgZHJvcHBlZC4KK3Nz bC9uc3Mvc2VydmVyLWNuLW9ubHkuY3J0X19zZXJ2ZXItcGFzc3dvcmQua2V5LmRiOiBzc2wvc2Vy dmVyLWNuLW9ubHkuY3J0CisJJChNS0RJUl9QKSAkQAorCWVjaG8gInNlY3JldDEiID4gcGFzc3dv cmQudHh0CisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLWYgcGFzc3dvcmQudHh0CisJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3NlcnZlci1jbi1vbmx5LmNydCAtaSBzc2wvc2VydmVy LWNuLW9ubHkuY3J0IC10ICJDVCxDLEMiIC1mIHBhc3N3b3JkLnR4dAorCWNlcnR1dGlsIC1kICJz cWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNULEMs QyIgLWYgcGFzc3dvcmQudHh0CisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdF9jYS5j cnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10ICJDVCxDLEMiIC1mIHBhc3N3b3JkLnR4dAorCWNlcnR1 dGlsIC1kICJzcWw6JEAiIC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQg LXQgIkNULEMsQyIgLWYgcGFzc3dvcmQudHh0CisJb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0 IHNzbC9uc3Mvc2VydmVyLXBhc3N3b3JkLnBmeCAtaW5rZXkgc3NsL3NlcnZlci1wYXNzd29yZC5r ZXkgLWluIHNzbC9zZXJ2ZXItY24tb25seS5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXJfY2EuY3J0 IC1wYXNzaW4gJ3Bhc3M6c2VjcmV0MScgLXBhc3NvdXQgJ3Bhc3M6c2VjcmV0MScKKwlwazEydXRp bCAtaSBzc2wvbnNzL3NlcnZlci1wYXNzd29yZC5wZnggLWQgInNxbDokQCIgLVcgJ3NlY3JldDEn IC1LICdzZWNyZXQxJworCitzc2wvbnNzL3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9u bHkua2V5LmRiOiBzc2wvc2VydmVyLWNuLW9ubHkuY3J0IHNzbC9zZXJ2ZXItY24tb25seS5rZXkK KwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29y ZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9zZXJ2ZXItY24tb25seS5jcnQgLWkg c3NsL3NlcnZlci1jbi1vbmx5LmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAi IC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwlj ZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290X2NhLmNydCAtaSBzc2wvcm9vdF9jYS5jcnQg LXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXIt Y24tb25seS5wZnggLWlua2V5IHNzbC9zZXJ2ZXItY24tb25seS5rZXkgLWluIHNzbC9zZXJ2ZXIt Y24tb25seS5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXJfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJ cGsxMnV0aWwgLWkgc3NsL25zcy9zZXJ2ZXItY24tb25seS5wZnggLWQgInNxbDokQCIgLVcgJycK Kworc3NsL25zcy9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydF9fc2VydmVyLW11bHRpcGxl LWFsdC1uYW1lcy5rZXkuZGI6IHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydAorCSQo TUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBhc3N3b3JkCisJ Y2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMu Y3J0IC1pIHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydCAtdCAiQ1QsQyxDIgorCWNl cnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZlcl9jYS5j cnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290X2NhLmNydCAt aSBzc2wvcm9vdF9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAt biBjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNz bCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3Mvc2VydmVyLW11bHRpcGxlLWFsdC1uYW1lcy5w ZnggLWlua2V5IHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmtleSAtaW4gc3NsL3NlcnZl ci1tdWx0aXBsZS1hbHQtbmFtZXMuY3J0IC1jZXJ0ZmlsZSBzc2wvc2VydmVyLW11bHRpcGxlLWFs dC1uYW1lcy5jcnQgLXBhc3NvdXQgcGFzczoKKwlwazEydXRpbCAtaSBzc2wvbnNzL3NlcnZlci1t dWx0aXBsZS1hbHQtbmFtZXMucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKK3NzbC9uc3Mvc2VydmVy LXNpbmdsZS1hbHQtbmFtZS5jcnRfX3NlcnZlci1zaW5nbGUtYWx0LW5hbWUua2V5LmRiOiBzc2wv c2VydmVyLXNpbmdsZS1hbHQtbmFtZS5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQg InNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1u IHNzbC9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmNydCAtaSBzc2wvc2VydmVyLXNpbmdsZS1hbHQt bmFtZS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzZXJ2ZXJf Y2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNx bDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10ICJDVCxDLEMiCisJ Y2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAtaSBzc2wvY2xpZW50X2Nh LmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNzL3Nl cnZlci1zaW5nbGUtYWx0LW5hbWUucGZ4IC1pbmtleSBzc2wvc2VydmVyLXNpbmdsZS1hbHQtbmFt ZS5rZXkgLWluIHNzbC9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmNydCAtY2VydGZpbGUgc3NsL3Nl cnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwgLWkgc3Ns L25zcy9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLnBmeCAtZCAic3FsOiRAIiAtVyAnJworCitzc2wv bnNzL3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLmNydF9fc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMu a2V5LmRiOiBzc2wvc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMuY3J0CisJJChNS0RJUl9QKSAkQAor CWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtZCAi c3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMuY3J0IC1pIHNzbC9zZXJ2 ZXItY24tYW5kLWFsdC1uYW1lcy5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRA IiAtQSAtbiBzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJ Y2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0 IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAt aSBzc2wvY2xpZW50X2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQg LW91dCBzc2wvbnNzL3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLnBmeCAtaW5rZXkgc3NsL3NlcnZl ci1jbi1hbmQtYWx0LW5hbWVzLmtleSAtaW4gc3NsL3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLmNy dCAtY2VydGZpbGUgc3NsL3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLmNydCAtcGFzc291dCBwYXNz OgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMucGZ4IC1kICRA IC1XICcnCisKK3NzbC9uc3Mvc2VydmVyLW5vLW5hbWVzLmNydF9fc2VydmVyLW5vLW5hbWVzLmtl eS5kYjogc3NsL3NlcnZlci1uby1uYW1lcy5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwg LWQgInNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0IC1pIHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0IC10 ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc2VydmVyX2NhLmNydCAtaSBz c2wvc2VydmVyX2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1u IHJvb3RfY2EuY3J0IC1pIHNzbC9yb290X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1k ICJzcWw6JEAiIC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQgIkNU LEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItbm8tbmFt ZXMucGZ4IC1pbmtleSBzc2wvc2VydmVyLW5vLW5hbWVzLmtleSAtaW4gc3NsL3NlcnZlci1uby1u YW1lcy5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0IC1wYXNzb3V0IHBhc3M6 CisJcGsxMnV0aWwgLWkgc3NsL25zcy9zZXJ2ZXItbm8tbmFtZXMucGZ4IC1kICJzcWw6JEAiIC1X ICcnCisKK3NzbC9uc3Mvc2VydmVyLXJldm9rZWQuY3J0X19zZXJ2ZXItcmV2b2tlZC5rZXkuZGI6 IHNzbC9zZXJ2ZXItcmV2b2tlZC5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNx bDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNz bC9zZXJ2ZXItcmV2b2tlZC5jcnQgLWkgc3NsL3NlcnZlci1yZXZva2VkLmNydCAtdCAiQ1QsQyxD IgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZl cl9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290X2Nh LmNydCAtaSBzc2wvcm9vdF9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRA IiAtQSAtbiBjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJ b3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3Mvc2VydmVyLXJldm9rZWQucGZ4IC1p bmtleSBzc2wvc2VydmVyLXJldm9rZWQua2V5IC1pbiBzc2wvc2VydmVyLXJldm9rZWQuY3J0IC1j ZXJ0ZmlsZSBzc2wvc2VydmVyLXJldm9rZWQuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwg LWkgc3NsL25zcy9zZXJ2ZXItcmV2b2tlZC5wZnggLWQgInNxbDokQCIgLVcgJycKKwogIyBQYXNz d29yZC1wcm90ZWN0ZWQgdmVyc2lvbiBvZiBzZXJ2ZXItY24tb25seS5rZXkKIHNzbC9zZXJ2ZXIt cGFzc3dvcmQua2V5OiBzc2wvc2VydmVyLWNuLW9ubHkua2V5CiAJb3BlbnNzbCByc2EgLWFlczI1 NiAtaW4gJDwgLW91dCAkQCAtcGFzc291dCAncGFzczpzZWNyZXQxJwpAQCAtODgsNiArMjEyLDI3 IEBAIHNzbC9jbGllbnQuY3J0OiBzc2wvY2xpZW50LmtleSBzc2wvY2xpZW50X2NhLmNydAogCW9w ZW5zc2wgeDUwOSAtaW4gc3NsL3RlbXAuY3J0IC1vdXQgc3NsL2NsaWVudC5jcnQgIyB0byBrZWVw IGp1c3QgdGhlIFBFTSBjZXJ0CiAJcm0gc3NsL2NsaWVudC5jc3Igc3NsL3RlbXAuY3J0CiAKKyMg Q2xpZW50IGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2xpZW50IENBCitzc2wvbnNzL2NsaWVudC5j cnRfX2NsaWVudC5rZXkuZGI6IHNzbC9jbGllbnQuY3J0CisJJChNS0RJUl9QKSAkQAorCWNlcnR1 dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRA IiAtQSAtbiBzc2wvY2xpZW50LmNydCAtaSBzc2wvY2xpZW50LmNydCAtdCAiQ1QsQyxDIgorCWNl cnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5j cnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290K2NsaWVudF9j YS5jcnQgLWkgc3NsL3Jvb3QrY2xpZW50X2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtj czEyIC1leHBvcnQgLW91dCBzc2wvbnNzL2NsaWVudC5wZnggLWlua2V5IHNzbC9jbGllbnQua2V5 IC1pbiBzc2wvY2xpZW50LmNydCAtY2VydGZpbGUgc3NsL2NsaWVudF9jYS5jcnQgLXBhc3NvdXQg cGFzczoKKwlwazEydXRpbCAtaSBzc2wvbnNzL2NsaWVudC5wZnggLWQgInNxbDokQCIgLVcgJycK KworIyBDbGllbnQgY2VydGlmaWNhdGUgd2l0aCBlbmNyeXB0ZWQga2V5LCBzaWduZWQgYnkgY2xp ZW50IENBCitzc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC1lbmNyeXB0ZWQtcGVtLmtleS5kYjog c3NsL2NsaWVudC5jcnQKKwkkKE1LRElSX1ApICRACisJZWNobyAnZFVtbXlQXiMrJyA+ICRALnBh c3MKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtZiAkQC5wYXNzCisJY2VydHV0aWwgLWQgInNx bDokQCIgLUEgLWYgJEAucGFzcyAtbiBzc2wvY2xpZW50LmNydCAtaSBzc2wvY2xpZW50LmNydCAt dCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1mICRALnBhc3MgLW4gY2xpZW50 X2NhLmNydCAtaSBzc2wvY2xpZW50X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJz cWw6JEAiIC1BIC1mICRALnBhc3MgLW4gcm9vdCtzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9yb290K3Nl cnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3Ns L25zcy9jbGllbnQtZW5jcnlwdGVkLXBlbS5wZnggLWlua2V5IHNzbC9jbGllbnQtZW5jcnlwdGVk LXBlbS5rZXkgLWluIHNzbC9jbGllbnQuY3J0IC1jZXJ0ZmlsZSBzc2wvY2xpZW50X2NhLmNydCAt cGFzc2luIHBhc3M6J2RVbW15UF4jKycgLXBhc3NvdXQgcGFzczonZFVtbXlQXiMrJworCXBrMTJ1 dGlsIC1pIHNzbC9uc3MvY2xpZW50LWVuY3J5cHRlZC1wZW0ucGZ4IC1kICJzcWw6JEAiIC1XICdk VW1teVBeIysnIC1rICRALnBhc3MKKwogIyBBbm90aGVyIGNsaWVudCBjZXJ0aWZpY2F0ZSwgc2ln bmVkIGJ5IHRoZSBjbGllbnQgQ0EuIFRoaXMgb25lIGlzIHJldm9rZWQuCiBzc2wvY2xpZW50LXJl dm9rZWQuY3J0OiBzc2wvY2xpZW50LXJldm9rZWQua2V5IHNzbC9jbGllbnRfY2EuY3J0IGNsaWVu dC5jb25maWcKIAlvcGVuc3NsIHJlcSAtbmV3IC1rZXkgc3NsL2NsaWVudC1yZXZva2VkLmtleSAt b3V0IHNzbC9jbGllbnQtcmV2b2tlZC5jc3IgLWNvbmZpZyBjbGllbnQuY29uZmlnCkBAIC05NSw2 ICsyNDAsMTQgQEAgc3NsL2NsaWVudC1yZXZva2VkLmNydDogc3NsL2NsaWVudC1yZXZva2VkLmtl eSBzc2wvY2xpZW50X2NhLmNydCBjbGllbnQuY29uZmlnCiAJb3BlbnNzbCB4NTA5IC1pbiBzc2wv dGVtcC5jcnQgLW91dCBzc2wvY2xpZW50LXJldm9rZWQuY3J0ICMgdG8ga2VlcCBqdXN0IHRoZSBQ RU0gY2VydAogCXJtIHNzbC9jbGllbnQtcmV2b2tlZC5jc3Igc3NsL3RlbXAuY3J0CiAKK3NzbC9u c3MvY2xpZW50LXJldm9rZWQuY3J0X19jbGllbnQtcmV2b2tlZC5rZXkuZGI6IHNzbC9jbGllbnQt cmV2b2tlZC5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLS1l bXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9jbGllbnQtcmV2 b2tlZC5jcnQgLWkgc3NsL2NsaWVudC1yZXZva2VkLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGls IC1kICJzcWw6JEAiIC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQg IkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9jbGllbnQtcmV2 b2tlZC5wZnggLWlua2V5IHNzbC9jbGllbnQtcmV2b2tlZC5rZXkgLWluIHNzbC9jbGllbnQtcmV2 b2tlZC5jcnQgLWNlcnRmaWxlIHNzbC9jbGllbnRfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsx MnV0aWwgLWkgc3NsL25zcy9jbGllbnQtcmV2b2tlZC5wZnggLWQgInNxbDokQCIgLVcgJycKKwog IyBDb252ZXJ0IHRoZSBrZXkgdG8gREVSLCB0byB0ZXN0IG91ciBiZWhhdmlvdXIgdGhlcmUgdG9v CiBzc2wvY2xpZW50LWRlci5rZXk6IHNzbC9jbGllbnQua2V5CiAJb3BlbnNzbCByc2EgLWluIHNz bC9jbGllbnQua2V5IC1vdXRmb3JtIERFUiAtb3V0IHNzbC9jbGllbnQtZGVyLmtleQpAQCAtMTI3 LDE5ICsyODAsNDAgQEAgc3NsL3Jvb3QrY2xpZW50X2NhLmNydDogc3NsL3Jvb3RfY2EuY3J0IHNz bC9jbGllbnRfY2EuY3J0CiBzc2wvY2xpZW50K2NsaWVudF9jYS5jcnQ6IHNzbC9jbGllbnQuY3J0 IHNzbC9jbGllbnRfY2EuY3J0CiAJY2F0ICReID4gJEAKIAorIyBDbGllbnQgY2VydGlmaWNhdGUs IHNpZ25lZCBieSBjbGllbnQgQ0EKK3NzbC9uc3MvY2xpZW50K2NsaWVudF9jYS5jcnRfX2NsaWVu dC5rZXkuZGI6IHNzbC9jbGllbnQrY2xpZW50X2NhLmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDok QCIgLUEgLW4gc3NsL2NsaWVudCtjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnQrY2xpZW50X2Nh LmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9yb290K3Nl cnZlcl9jYS5jcnQgLWkgc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5z c2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNzL2NsaWVudC5wZnggLWlua2V5IHNzbC9jbGll bnQua2V5IC1pbiBzc2wvY2xpZW50LmNydCAtY2VydGZpbGUgc3NsL2NsaWVudF9jYS5jcnQgLXBh c3NvdXQgcGFzczoKKwlwazEydXRpbCAtaSBzc2wvbnNzL2NsaWVudC5wZnggLWQgInNxbDokQCIg LVcgJycKKwogIyMjIyBDUkxzCiAKIHNzbC9jbGllbnQuY3JsOiBzc2wvY2xpZW50LXJldm9rZWQu Y3J0CiAJb3BlbnNzbCBjYSAtY29uZmlnIGNhcy5jb25maWcgLW5hbWUgY2xpZW50X2NhIC1yZXZv a2Ugc3NsL2NsaWVudC1yZXZva2VkLmNydAogCW9wZW5zc2wgY2EgLWNvbmZpZyBjYXMuY29uZmln IC1uYW1lIGNsaWVudF9jYSAtZ2VuY3JsIC1vdXQgc3NsL2NsaWVudC5jcmwKIAorc3NsL25zcy9j bGllbnQuY3JsOiBzc2wvY2xpZW50LmNybAorCW9wZW5zc2wgY3JsIC1pbiAkXiAtb3V0Zm9ybSBk ZXIgLW91dCAkQAorCiBzc2wvc2VydmVyLmNybDogc3NsL3NlcnZlci1yZXZva2VkLmNydAogCW9w ZW5zc2wgY2EgLWNvbmZpZyBjYXMuY29uZmlnIC1uYW1lIHNlcnZlcl9jYSAtcmV2b2tlIHNzbC9z ZXJ2ZXItcmV2b2tlZC5jcnQKIAlvcGVuc3NsIGNhIC1jb25maWcgY2FzLmNvbmZpZyAtbmFtZSBz ZXJ2ZXJfY2EgLWdlbmNybCAtb3V0IHNzbC9zZXJ2ZXIuY3JsCiAKK3NzbC9uc3Mvc2VydmVyLmNy bDogc3NsL3NlcnZlci5jcmwKKwlvcGVuc3NsIGNybCAtaW4gJF4gLW91dGZvcm0gZGVyIC1vdXQg JEAKKwogc3NsL3Jvb3QuY3JsOiBzc2wvcm9vdF9jYS5jcnQKIAlvcGVuc3NsIGNhIC1jb25maWcg Y2FzLmNvbmZpZyAtbmFtZSByb290X2NhIC1nZW5jcmwgLW91dCBzc2wvcm9vdC5jcmwKIAorc3Ns L25zcy9yb290LmNybDogc3NsL3Jvb3QuY3JsCisJb3BlbnNzbCBjcmwgLWluICReIC1vdXRmb3Jt IGRlciAtb3V0ICRACisKK3NzbC9uc3Mvcm9vdCtjbGllbnQuY3JsOiBzc2wvcm9vdCtjbGllbnQu Y3JsCisJb3BlbnNzbCBjcmwgLWluICReIC1vdXRmb3JtIGRlciAtb3V0ICRACisKICMgSWYgYSBD UkwgaXMgdXNlZCwgT3BlblNTTCByZXF1aXJlcyBhIENSTCBmaWxlIGZvciAqYWxsKiB0aGUgQ0Fz IGluIHRoZQogIyBjaGFpbiwgZXZlbiBpZiBzb21lIG9mIHRoZW0gYXJlIGVtcHR5Lgogc3NsL3Jv b3Qrc2VydmVyLmNybDogc3NsL3Jvb3QuY3JsIHNzbC9zZXJ2ZXIuY3JsCkBAIC0xNDcsMTMgKzMy MSw3MyBAQCBzc2wvcm9vdCtzZXJ2ZXIuY3JsOiBzc2wvcm9vdC5jcmwgc3NsL3NlcnZlci5jcmwK IHNzbC9yb290K2NsaWVudC5jcmw6IHNzbC9yb290LmNybCBzc2wvY2xpZW50LmNybAogCWNhdCAk XiA+ICRACiAKKyMjIyMgTlNTIHNwZWNpZmljIGNlcnRpZmljYXRlcyBhbmQga2V5cworCisjTlNT RklMRVMyIDo9IHNzbC9uc3MvbmF0aXZlX2NhLXJvb3QuZGIgXAorIwlzc2wvbnNzL25hdGl2ZV9z ZXJ2ZXItcm9vdC5kYiBcCisjCXNzbC9uc3MvbmF0aXZlX2NsaWVudC1yb290LmRiCisKKyNuc3Nm aWxlczI6ICQoTlNTRklMRVMyKQorCitzc2wvbnNzL25hdGl2ZV9jYS0lLmRiOgorCSQoTUtESVJf UCkgc3NsL25zcy9uYXRpdmVfY2EtJCouZGIKKwljZXJ0dXRpbCAtTiAtZCAic3FsOnNzbC9uc3Mv bmF0aXZlX2NhLSQqLmRiLyIgLS1lbXB0eS1wYXNzd29yZAorCWVjaG8geSA+IG5zc19jYV9wYXJh bXMudHh0CisJZWNobyAxMCA+PiBuc3NfY2FfcGFyYW1zLnR4dAorCWVjaG8geSA+PiBuc3NfY2Ff cGFyYW1zLnR4dAorCWNhdCBuc3NfY2FfcGFyYW1zLnR4dCB8IGNlcnR1dGlsIC1TIC1kICJzcWw6 c3NsL25zcy9uYXRpdmVfY2EtJCouZGIvIiAtbiBjYS0kKiBcCisJLXMgIkNOPVRlc3QgQ0EgZm9y IFBvc3RncmVTUUwgU1NMIHJlZ3Jlc3Npb24gdGVzdHMsT1U9UG9zdGdyZVNRTCB0ZXN0IHN1aXRl IiBcCisJLXggLWsgcnNhIC1nIDIwNDggLW0gNTQzMiAtdCBDVHUsQ1R1LENUdSBcCisJLS1rZXlV c2FnZSBjZXJ0U2lnbmluZyAtMiAtLW5zQ2VydFR5cGUgc3NsQ0Esc21pbWVDQSxvYmplY3RTaWdu aW5nQ0EgXAorCS16IE1ha2VmaWxlIC1aIFNIQTI1NgorCXJtIG5zc19jYV9wYXJhbXMudHh0CisK K3NzbC9uc3MvbmF0aXZlX2NhLSUucGVtOiBzc2wvbnNzL25hdGl2ZV9jYS0lLmRiCisJY2VydHV0 aWwgLUwgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jYS0kKi5kYi8iIC1uIGNhLSQqIC1hID4gc3Ns L25zcy9uYXRpdmVfY2EtJCoucGVtCisKKyMgQ3JlYXRlIGFuZCBzaWduIGEgc2VydmVyIGNlcnRp ZmljYXRlCitzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItJS5kYjogc3NsL25zcy9uYXRpdmVfY2EtJS5w ZW0KKwkkKE1LRElSX1ApIHNzbC9uc3MvbmF0aXZlX3NlcnZlci0kKi5kYgorCWNlcnR1dGlsIC1O IC1kICJzcWw6c3NsL25zcy9uYXRpdmVfc2VydmVyLSQqLmRiLyIgLS1lbXB0eS1wYXNzd29yZAor CWNlcnR1dGlsIC1SIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfc2VydmVyLSQqLmRiLyIgXAorCQkt cyAiQ049Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0LE9VPVBvc3RncmVTUUwgdGVzdCBzdWl0 ZSIgXAorCQktbyBzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItJCouY3NyIC1nIDIwNDggLVogU0hBMjU2 IC16IE1ha2VmaWxlCisJZWNobyAxID4gbnNzX3NlcnZlcl9wYXJhbXMudHh0CisJZWNobyA5ID4+ IG5zc19zZXJ2ZXJfcGFyYW1zLnR4dAorCWNhdCBuc3Nfc2VydmVyX3BhcmFtcy50eHQgfCBjZXJ0 dXRpbCAtQyAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX2NhLSQqLmRiLyIgLWMgY2Etcm9vdCAtaSBz c2wvbnNzL25hdGl2ZV9zZXJ2ZXItJCouY3NyIFwKKwkJLW8gc3NsL25zcy9uYXRpdmVfc2VydmVy XyQqLmRlciAtbSA1NDMzIC0ta2V5VXNhZ2UgZGF0YUVuY2lwaGVybWVudCxkaWdpdGFsU2lnbmF0 dXJlLGtleUVuY2lwaGVybWVudCBcCisJCS0tbnNDZXJ0VHlwZSBzc2xTZXJ2ZXIgLS1jZXJ0VmVy c2lvbiAxIC1aIFNIQTI1NgorCWNlcnR1dGlsIC1BIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfc2Vy dmVyLSQqLmRiLyIgLW4gY2EtJCogLXQgQ1R1LENUdSxDVHUgLWEgLWkgc3NsL25zcy9uYXRpdmVf Y2EtJCoucGVtCisJY2VydHV0aWwgLUEgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItJCou ZGIvIiAtbiBzc2wvbmF0aXZlX3NlcnZlci0kKi5jcnQgLXQgQ1R1LENUdSxDVHUgLWkgc3NsL25z cy9uYXRpdmVfc2VydmVyXyQqLmRlcgorCXJtIG5zc19zZXJ2ZXJfcGFyYW1zLnR4dAorCisjIENy ZWF0ZSBhbmQgc2lnbiBhIGNsaWVudCBjZXJ0aWZpY2F0ZQorc3NsL25zcy9uYXRpdmVfY2xpZW50 LSUuZGI6IHNzbC9uc3MvbmF0aXZlX2NhLSUucGVtCisJJChNS0RJUl9QKSBzc2wvbnNzL25hdGl2 ZV9jbGllbnQtJCouZGIKKwljZXJ0dXRpbCAtTiAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX2NsaWVu dC0kKi5kYi8iIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtUiAtZCAic3FsOnNzbC9uc3Mv bmF0aXZlX2NsaWVudC0kKi5kYi8iIC1zICJDTj1zc2x0ZXN0dXNlcixPVT1Qb3N0Z3JlU1FMIHRl c3Qgc3VpdGUiIFwKKwkJLW8gc3NsL25zcy9uYXRpdmVfY2xpZW50LSQqLmNzciAtZyAyMDQ4IC1a IFNIQTI1NiAteiBNYWtlZmlsZQorCWNlcnR1dGlsIC1DIC1kICJzcWw6c3NsL25zcy9uYXRpdmVf Y2EtJCouZGIvIiAtYyBjYS0kKiAtaSBzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCouY3NyIC1vIHNz bC9uc3MvbmF0aXZlX2NsaWVudC0kKi5kZXIgXAorCQktbSA1NDM0IC0ta2V5VXNhZ2Uga2V5RW5j aXBoZXJtZW50LGRhdGFFbmNpcGhlcm1lbnQsZGlnaXRhbFNpZ25hdHVyZSAtLW5zQ2VydFR5cGUg c3NsQ2xpZW50IFwKKwkJLS1jZXJ0VmVyc2lvbiAxIC1aIFNIQTI1NgorCWNlcnR1dGlsIC1BIC1k ICJzcWw6c3NsL25zcy9uYXRpdmVfY2xpZW50LSQqLmRiIiAtbiBjYS0kKiAtdCBDVHUsQ1R1LENU dSAtYSAtaSBzc2wvbnNzL25hdGl2ZV9jYS0kKi5wZW0KKwljZXJ0dXRpbCAtQSAtZCAic3FsOnNz bC9uc3MvbmF0aXZlX2NsaWVudC0kKi5kYiIgLW4gbmF0aXZlX2NsaWVudC0kKiAtdCBDVHUsQ1R1 LENUdSAtaSBzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCouZGVyCisKK25zc2ZpbGVzMmNsZWFuOgor CXJtIC1yZiBzc2wvbnNzCisKIC5QSE9OWTogc3NsZmlsZXMtY2xlYW4KIHNzbGZpbGVzLWNsZWFu OgogCXJtIC1mICQoU1NMRklMRVMpIHNzbC9jbGllbnRfY2Euc3JsIHNzbC9zZXJ2ZXJfY2Euc3Js IHNzbC9jbGllbnRfY2EtY2VydGluZGV4KiBzc2wvc2VydmVyX2NhLWNlcnRpbmRleCogc3NsL3Jv b3RfY2EtY2VydGluZGV4KiBzc2wvcm9vdF9jYS5zcmwgc3NsL3RlbXBfY2EuY3J0IHNzbC90ZW1w X2NhX3NpZ25lZC5jcnQKIAorLlBIT05ZOiBuc3NmaWxlcy1jbGVhbgorbnNzZmlsZXMtY2xlYW46 CisJcm0gLXJmIHNzbC9uc3MKKwogY2xlYW4gZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW46CiAJ cm0gLXJmIHRtcF9jaGVjawogCXJtIC1yZiBzc2wvKi5vbGQgc3NsL25ld19jZXJ0c19kaXIgc3Ns L2NsaWVudCpfdG1wLmtleQorCXJtIC1yZiBzc2wvbnNzCiAKICMgRG9lc24ndCBkZXBlbmQgb24g JChTU0xGSUxFUykgYmVjYXVzZSB3ZSBkb24ndCByZWJ1aWxkIHRoZW0gYnkgZGVmYXVsdAogY2hl Y2s6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwgYi9zcmMvdGVz dC9zc2wvdC8wMDFfc3NsdGVzdHMucGwKaW5kZXggNzkyOGRlNGU3Yy4uNWE4M2ExZDI3NyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsCisrKyBiL3NyYy90ZXN0L3Nz bC90LzAwMV9zc2x0ZXN0cy5wbApAQCAtNCwyMCArNCwyNyBAQCB1c2UgUG9zdGdyZXNOb2RlOwog dXNlIFRlc3RMaWI7CiB1c2UgVGVzdDo6TW9yZTsKIAotdXNlIEZpbGU6OkNvcHk7Ci0KIHVzZSBG aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6UmVhbEJpbjsKIAotdXNlIFNTTFNlcnZlcjsKK3Vz ZSBTU0w6OlNlcnZlcjsKKworbXkgJG9wZW5zc2w7CitteSAkbnNzOwogCi1pZiAoJEVOVnt3aXRo X3NzbH0gbmUgJ29wZW5zc2wnKQoraWYgKCRFTlZ7d2l0aF9zc2x9IGVxICdvcGVuc3NsJykKK3sK Kwkkb3BlbnNzbCA9IDE7CisJcGxhbiB0ZXN0cyA9PiA5MzsKK30KK2Vsc2lmICgkRU5We3dpdGhf c3NsfSBlcSAnbnNzJykKIHsKLQlwbGFuIHNraXBfYWxsID0+ICdPcGVuU1NMIG5vdCBzdXBwb3J0 ZWQgYnkgdGhpcyBidWlsZCc7CisJJG5zcyA9IDE7CisJcGxhbiB0ZXN0cyA9PiA5OTsKIH0KIGVs c2UKIHsKLQlwbGFuIHRlc3RzID0+IDkzOworCXBsYW4gc2tpcF9hbGwgPT4gJ1NTTCBub3Qgc3Vw cG9ydGVkIGJ5IHRoaXMgYnVpbGQnOwogfQogCiAjIyMjIFNvbWUgY29uZmlndXJhdGlvbgpAQCAt MzIsMzIgKzM5LDYgQEAgbXkgJFNFUlZFUkhPU1RDSURSID0gJzEyNy4wLjAuMS8zMic7CiAjIEFs bG9jYXRpb24gb2YgYmFzZSBjb25uZWN0aW9uIHN0cmluZyBzaGFyZWQgYW1vbmcgbXVsdGlwbGUg dGVzdHMuCiBteSAkY29tbW9uX2Nvbm5zdHI7CiAKLSMgVGhlIGNsaWVudCdzIHByaXZhdGUga2V5 IG11c3Qgbm90IGJlIHdvcmxkLXJlYWRhYmxlLCBzbyB0YWtlIGEgY29weQotIyBvZiB0aGUga2V5 IHN0b3JlZCBpbiB0aGUgY29kZSB0cmVlIGFuZCB1cGRhdGUgaXRzIHBlcm1pc3Npb25zLgotIwot IyBUaGlzIGNoYW5nZXMgc3NsL2NsaWVudC5rZXkgdG8gc3NsL2NsaWVudF90bXAua2V5IGV0YyBm b3IgdGhlIHJlc3QKLSMgb2YgdGhlIHRlc3RzLgotbXkgQGtleXMgPSAoCi0JImNsaWVudCIsICAg ICAiY2xpZW50LXJldm9rZWQiLAotCSJjbGllbnQtZGVyIiwgImNsaWVudC1lbmNyeXB0ZWQtcGVt IiwKLQkiY2xpZW50LWVuY3J5cHRlZC1kZXIiKTsKLWZvcmVhY2ggbXkgJGtleSAoQGtleXMpCi17 Ci0JY29weSgic3NsLyR7a2V5fS5rZXkiLCAic3NsLyR7a2V5fV90bXAua2V5IikKLQkgIG9yIGRp ZQotCSAgImNvdWxkbid0IGNvcHkgc3NsLyR7a2V5fS5rZXkgdG8gc3NsLyR7a2V5fV90bXAua2V5 IGZvciBwZXJtaXNzaW9ucyBjaGFuZ2U6ICQhIjsKLQljaG1vZCAwNjAwLCAic3NsLyR7a2V5fV90 bXAua2V5IgotCSAgb3IgZGllICJmYWlsZWQgdG8gY2hhbmdlIHBlcm1pc3Npb25zIG9uIHNzbC8k e2tleX1fdG1wLmtleTogJCEiOwotfQotCi0jIEFsc28gbWFrZSBhIGNvcHkgb2YgdGhhdCBleHBs aWNpdGx5IHdvcmxkLXJlYWRhYmxlLiAgV2UgY2FuJ3QKLSMgbmVjZXNzYXJpbHkgcmVseSBvbiB0 aGUgZmlsZSBpbiB0aGUgc291cmNlIHRyZWUgaGF2aW5nIHRob3NlCi0jIHBlcm1pc3Npb25zLiAg QWRkIGl0IHRvIEBrZXlzIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZpbmFsIGNsZWFuCi0jIHVwIHBo YXNlLgotY29weSgic3NsL2NsaWVudC5rZXkiLCAic3NsL2NsaWVudF93cm9uZ3Blcm1zX3RtcC5r ZXkiKTsKLWNobW9kIDA2NDQsICJzc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSI7Ci1wdXNo IEBrZXlzLCAnY2xpZW50X3dyb25ncGVybXMnOwotCiAjIyMjIFNldCB1cCB0aGUgc2VydmVyLgog CiBub3RlICJzZXR0aW5nIHVwIGRhdGEgZGlyZWN0b3J5IjsKQEAgLTcyLDM2ICs1Myw2NSBAQCAk bm9kZS0+c3RhcnQ7CiAKICMgUnVuIHRoaXMgYmVmb3JlIHdlIGxvY2sgZG93biBhY2Nlc3MgYmVs b3cuCiBteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0hPVyBzc2xf bGlicmFyeSIpOwotaXMoJHJlc3VsdCwgJ09wZW5TU0wnLCAnc3NsX2xpYnJhcnkgcGFyYW1ldGVy Jyk7CitpcygkcmVzdWx0LCBTU0w6OlNlcnZlcjo6c3NsX2xpYnJhcnkoKSwgJ3NzbF9saWJyYXJ5 IHBhcmFtZXRlcicpOwogCiBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbCgkbm9kZSwgJFNF UlZFUkhPU1RBRERSLCAkU0VSVkVSSE9TVENJRFIsCiAJJ3RydXN0Jyk7CiAKIG5vdGUgInRlc3Rp bmcgcGFzc3dvcmQtcHJvdGVjdGVkIGtleXMiOwogCi1vcGVuIG15ICRzc2xjb25mLCAnPicsICRu b2RlLT5kYXRhX2RpciAuICIvc3NsY29uZmlnLmNvbmYiOwotcHJpbnQgJHNzbGNvbmYgInNzbD1v blxuIjsKLXByaW50ICRzc2xjb25mICJzc2xfY2VydF9maWxlPSdzZXJ2ZXItY24tb25seS5jcnQn XG4iOwotcHJpbnQgJHNzbGNvbmYgInNzbF9rZXlfZmlsZT0nc2VydmVyLXBhc3N3b3JkLmtleSdc biI7Ci1wcmludCAkc3NsY29uZiAic3NsX3Bhc3NwaHJhc2VfY29tbWFuZD0nZWNobyB3cm9uZ3Bh c3N3b3JkJ1xuIjsKLWNsb3NlICRzc2xjb25mOworIyBTaW5jZSB0aGUgcGFzc3BocmFzZSBjYWxs YmFja3Mgb3BlcmF0ZSBhdCBkaWZmZXJlbnQgc3RhZ2VzIGluIE9wZW5TU0wgYW5kCisjIE5TUyB3 ZSBoYXZlIHR3byBzZXBhcmF0ZSBibG9ja3MgZm9yIHRoZW0uCitTS0lQOgoreworCXNraXAgIkNl cnRpZmljYXRlIHBhc3NwaHJhc2VzIGFyZW4ndCBjaGVja2VkIG9uIHNlcnZlciByZXN0YXJ0IGlu IE5TUyIsIDIKKwkgIGlmICgkbnNzKTsKKworCXNldF9zZXJ2ZXJfY2VydCgkbm9kZSwgJ3NlcnZl ci1jbi1vbmx5JywgJ3Jvb3QrY2xpZW50X2NhJywKKwkJCQkJICAgJ3NlcnZlci1wYXNzd29yZCcs ICdlY2hvIHdyb25ncGFzc3dvcmQnKTsKKwljb21tYW5kX2ZhaWxzKAorCQlbICdwZ19jdGwnLCAn LUQnLCAkbm9kZS0+ZGF0YV9kaXIsICctbCcsICRub2RlLT5sb2dmaWxlLCAncmVzdGFydCcgXSwK KwkJJ3Jlc3RhcnQgZmFpbHMgd2l0aCBwYXNzd29yZC1wcm90ZWN0ZWQga2V5IGZpbGUgd2l0aCB3 cm9uZyBwYXNzd29yZCcpOworCSRub2RlLT5fdXBkYXRlX3BpZCgwKTsKKworCXNldF9zZXJ2ZXJf Y2VydCgkbm9kZSwgJ3NlcnZlci1jbi1vbmx5JywgJ3Jvb3QrY2xpZW50X2NhJywKKwkJCQkJJ3Nl cnZlci1wYXNzd29yZCcsICdlY2hvIHNlY3JldDEnKTsKKwljb21tYW5kX29rKAorCQlbICdwZ19j dGwnLCAnLUQnLCAkbm9kZS0+ZGF0YV9kaXIsICctbCcsICRub2RlLT5sb2dmaWxlLCAncmVzdGFy dCcgXSwKKwkJJ3Jlc3RhcnQgc3VjY2VlZHMgd2l0aCBwYXNzd29yZC1wcm90ZWN0ZWQga2V5IGZp bGUnKTsKKwkkbm9kZS0+X3VwZGF0ZV9waWQoMSk7Cit9CiAKLWNvbW1hbmRfZmFpbHMoCi0JWyAn cGdfY3RsJywgJy1EJywgJG5vZGUtPmRhdGFfZGlyLCAnLWwnLCAkbm9kZS0+bG9nZmlsZSwgJ3Jl c3RhcnQnIF0sCi0JJ3Jlc3RhcnQgZmFpbHMgd2l0aCBwYXNzd29yZC1wcm90ZWN0ZWQga2V5IGZp bGUgd2l0aCB3cm9uZyBwYXNzd29yZCcpOwotJG5vZGUtPl91cGRhdGVfcGlkKDApOworU0tJUDoK K3sKKwlza2lwICJDZXJ0aWZpY2F0ZSBwYXNzcGhyYXNlcyBhcmUgY2hlY2tlZCBvbiBjb25uZWN0 aW9uIGluIE5TUyIsIDUKKwkgIGlmICgkb3BlbnNzbCk7CiAKLW9wZW4gJHNzbGNvbmYsICc+Jywg JG5vZGUtPmRhdGFfZGlyIC4gIi9zc2xjb25maWcuY29uZiI7Ci1wcmludCAkc3NsY29uZiAic3Ns PW9uXG4iOwotcHJpbnQgJHNzbGNvbmYgInNzbF9jZXJ0X2ZpbGU9J3NlcnZlci1jbi1vbmx5LmNy dCdcbiI7Ci1wcmludCAkc3NsY29uZiAic3NsX2tleV9maWxlPSdzZXJ2ZXItcGFzc3dvcmQua2V5 J1xuIjsKLXByaW50ICRzc2xjb25mICJzc2xfcGFzc3BocmFzZV9jb21tYW5kPSdlY2hvIHNlY3Jl dDEnXG4iOwotY2xvc2UgJHNzbGNvbmY7CisJc2V0X3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVy LWNuLW9ubHknLCAncm9vdCtjbGllbnRfY2EnLAorCQkJCQkgICAnc2VydmVyLXBhc3N3b3JkJywg J2VjaG8gd3JvbmdwYXNzd29yZCcpOworCWNvbW1hbmRfb2soCisJCVsgJ3BnX2N0bCcsICctRCcs ICRub2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdyZXN0YXJ0JyBdLAorCQkn cmVzdGFydCBmYWlscyB3aXRoIHBhc3N3b3JkLXByb3RlY3RlZCBrZXkgZmlsZSB3aXRoIHdyb25n IHBhc3N3b3JkJyk7CisJJG5vZGUtPl91cGRhdGVfcGlkKDEpOwogCi1jb21tYW5kX29rKAotCVsg J3BnX2N0bCcsICctRCcsICRub2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdy ZXN0YXJ0JyBdLAotCSdyZXN0YXJ0IHN1Y2NlZWRzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtl eSBmaWxlJyk7Ci0kbm9kZS0+X3VwZGF0ZV9waWQoMSk7CisJdGVzdF9jb25uZWN0X2ZhaWxzKAor CQkidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgaG9zdGFk ZHI9JFNFUlZFUkhPU1RBRERSIGhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiwKKwkJ InNzbHJvb3RjZXJ0PWludmFsaWQgc3NsbW9kZT1yZXF1aXJlIiwKKwkJcXIvXFFTU0wgZXJyb3Jc RS8sCisJCSJjb25uZWN0IHRvIHNlcnZlciB3aXRoIGluY29ycmVjdCBrZXkgcGFzc3dvcmQgY29u ZmlndXJlZCIpOworCisJc2V0X3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAn cm9vdCtjbGllbnRfY2EnLAorCQkJCQkgICAnc2VydmVyLXBhc3N3b3JkJywgJ2VjaG8gc2VjcmV0 MScpOworCWNvbW1hbmRfb2soCisJCVsgJ3BnX2N0bCcsICctRCcsICRub2RlLT5kYXRhX2Rpciwg Jy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdyZXN0YXJ0JyBdLAorCQkncmVzdGFydCBmYWlscyB3aXRo IHBhc3N3b3JkLXByb3RlY3RlZCBrZXkgZmlsZSB3aXRoIHdyb25nIHBhc3N3b3JkJyk7CisJJG5v ZGUtPl91cGRhdGVfcGlkKDEpOworCisJdGVzdF9jb25uZWN0X29rKAorCQkidXNlcj1zc2x0ZXN0 dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgaG9zdGFkZHI9JFNFUlZFUkhPU1RB RERSIGhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiwKKwkJInNzbHJvb3RjZXJ0PWlu dmFsaWQgc3NsbW9kZT1yZXF1aXJlIiwKKwkJImNvbm5lY3QgdG8gc2VydmVyIHdpdGggY29ycmVj dCBrZXkgcGFzc3dvcmQgY29uZmlndXJlZCIpOworfQogCiAjIFRlc3QgY29tcGF0aWJpbGl0eSBv ZiBTU0wgcHJvdG9jb2xzLgogIyBUTFN2MS4xIGlzIGxvd2VyIHRoYW4gVExTdjEuMiwgc28gaXQg d29uJ3Qgd29yay4KQEAgLTE0OSw4MiArMTU5LDEwNSBAQCB0ZXN0X2Nvbm5lY3Rfb2soCiB0ZXN0 X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9jb25uc3RyLAogCSJzc2xyb290Y2VydD1pbnZhbGlk IHNzbG1vZGU9dmVyaWZ5LWNhIiwKLQlxci9yb290IGNlcnRpZmljYXRlIGZpbGUgImludmFsaWQi IGRvZXMgbm90IGV4aXN0LywKKwlxci9yb290IGNlcnRpZmljYXRlIGZpbGUgImludmFsaWQiIGRv ZXMgbm90IGV4aXN0fFBlZXIncyBjZXJ0aWZpY2F0ZSBpc3N1ZXIgaGFzIGJlZW4gbWFya2VkIGFz IG5vdCB0cnVzdGVkIGJ5IHRoZSB1c2VyLywKIAkiY29ubmVjdCB3aXRob3V0IHNlcnZlciByb290 IGNlcnQgc3NsbW9kZT12ZXJpZnktY2EiKTsKIHRlc3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9u X2Nvbm5zdHIsCiAJInNzbHJvb3RjZXJ0PWludmFsaWQgc3NsbW9kZT12ZXJpZnktZnVsbCIsCi0J cXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdC8sCisJcXIv cm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdHxQZWVyJ3MgY2Vy dGlmaWNhdGUgaXNzdWVyIGhhcyBiZWVuIG1hcmtlZCBhcyBub3QgdHJ1c3RlZCBieSB0aGUgdXNl ci8sCiAJImNvbm5lY3Qgd2l0aG91dCBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9dmVyaWZ5LWZ1 bGwiKTsKIAogIyBUcnkgd2l0aCB3cm9uZyByb290IGNlcnQsIHNob3VsZCBmYWlsLiAoV2UncmUg dXNpbmcgdGhlIGNsaWVudCBDQSBhcyB0aGUKICMgcm9vdCwgYnV0IHRoZSBzZXJ2ZXIncyBrZXkg aXMgc2lnbmVkIGJ5IHRoZSBzZXJ2ZXIgQ0EuKQotdGVzdF9jb25uZWN0X2ZhaWxzKCRjb21tb25f Y29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3NsL2NsaWVudF9jYS5jcnQgc3NsbW9kZT1yZXF1aXJl IiwKLQlxci9TU0wgZXJyb3IvLCAiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZlciByb290IGNlcnQg c3NsbW9kZT1yZXF1aXJlIik7Ci10ZXN0X2Nvbm5lY3RfZmFpbHMoJGNvbW1vbl9jb25uc3RyLAot CSJzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCi0JcXIv U1NMIGVycm9yLywgImNvbm5lY3Qgd2l0aCB3cm9uZyBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9 dmVyaWZ5LWNhIik7Ci10ZXN0X2Nvbm5lY3RfZmFpbHMoJGNvbW1vbl9jb25uc3RyLAotCSJzc2xy b290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXZlcmlmeS1mdWxsIiwKLQlxci9TU0wg ZXJyb3IvLCAiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12ZXJp ZnktZnVsbCIpOwotCi0jIFRyeSB3aXRoIGp1c3QgdGhlIHNlcnZlciBDQSdzIGNlcnQuIFRoaXMg ZmFpbHMgYmVjYXVzZSB0aGUgcm9vdCBmaWxlCi0jIG11c3QgY29udGFpbiB0aGUgd2hvbGUgY2hh aW4gdXAgdG8gdGhlIHJvb3QgQ0EuCi10ZXN0X2Nvbm5lY3RfZmFpbHMoJGNvbW1vbl9jb25uc3Ry LAotCSJzc2xyb290Y2VydD1zc2wvc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCi0J cXIvU1NMIGVycm9yLywgImNvbm5lY3Qgd2l0aCBzZXJ2ZXIgQ0EgY2VydCwgd2l0aG91dCByb290 IENBIik7Cit0ZXN0X2Nvbm5lY3RfZmFpbHMoCisJJGNvbW1vbl9jb25uc3RyLAorCSJzc2xyb290 Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgY2VydF9kYXRhYmFzZT1zc2wv bnNzL2NsaWVudF9jYS5jcnQuZGIiLAorCXFyL1NTTCBlcnJvci8sCisJImNvbm5lY3Qgd2l0aCB3 cm9uZyBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9cmVxdWlyZSIpOwordGVzdF9jb25uZWN0X2Zh aWxzKAorCSRjb21tb25fY29ubnN0ciwKKwkic3Nscm9vdGNlcnQ9c3NsL2NsaWVudF9jYS5jcnQg c3NsbW9kZT12ZXJpZnktY2EgY2VydF9kYXRhYmFzZT1zc2wvbnNzL2NsaWVudF9jYS5jcnQuZGIi LAorCXFyL1NTTCBlcnJvci8sCisJImNvbm5lY3Qgd2l0aCB3cm9uZyBzZXJ2ZXIgcm9vdCBjZXJ0 IHNzbG1vZGU9dmVyaWZ5LWNhIik7Cit0ZXN0X2Nvbm5lY3RfZmFpbHMoCisJJGNvbW1vbl9jb25u c3RyLAorCSJzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXZlcmlmeS1mdWxs IGNlcnRfZGF0YWJhc2U9c3NsL25zcy9jbGllbnRfY2EuY3J0LmRiIiwKKwlxci9TU0wgZXJyb3Iv LAorCSJjb25uZWN0IHdpdGggd3Jvbmcgc2VydmVyIHJvb3QgY2VydCBzc2xtb2RlPXZlcmlmeS1m dWxsIik7CisKK1NLSVA6Cit7CisJIyBOU1Mgc3VwcG9ydHMgcGFydGlhbCBjaGFpbiB2YWxpZGF0 aW9uLCBzbyB0aGlzIHRlc3QgZG9lc24ndCB3b3JrIHRoZXJlLgorCSMgVGhpcyBpcyBzaW1pbGFy IHRvIHRoZSBPcGVuU1NMIG9wdGlvbiBYNTA5X1ZfRkxBR19QQVJUSUFMX0NIQUlOIHdoaWNoCisJ IyB3ZSBkb24ndCBhbGxvdy4KKwlza2lwICJOU1Mgc3VwcG9ydCBwYXJ0aWFsIGNoYWluIHZhbGlk YXRpb24iLCAyIGlmICgkbnNzKTsKKwkjIFRyeSB3aXRoIGp1c3QgdGhlIHNlcnZlciBDQSdzIGNl cnQuIFRoaXMgZmFpbHMgYmVjYXVzZSB0aGUgcm9vdCBmaWxlCisJIyBtdXN0IGNvbnRhaW4gdGhl IHdob2xlIGNoYWluIHVwIHRvIHRoZSByb290IENBLgorCXRlc3RfY29ubmVjdF9mYWlscygkY29t bW9uX2Nvbm5zdHIsCisJCSJzc2xyb290Y2VydD1zc2wvc2VydmVyX2NhLmNydCBzc2xtb2RlPXZl cmlmeS1jYSIsCisJCXFyL1NTTCBlcnJvci8sICJjb25uZWN0IHdpdGggc2VydmVyIENBIGNlcnQs IHdpdGhvdXQgcm9vdCBDQSIpOworfQogCiAjIEFuZCBmaW5hbGx5LCB3aXRoIHRoZSBjb3JyZWN0 IHJvb3QgY2VydC4KIHRlc3RfY29ubmVjdF9vaygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJv b3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIiwKKwkic3Nscm9v dGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgY2VydF9kYXRhYmFz ZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Qgd2l0aCBjb3JyZWN0 IHNlcnZlciBDQSBjZXJ0IGZpbGUgc3NsbW9kZT1yZXF1aXJlIik7CiB0ZXN0X2Nvbm5lY3Rfb2so CiAJJGNvbW1vbl9jb25uc3RyLAotCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0 IHNzbG1vZGU9dmVyaWZ5LWNhIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNy dCBzc2xtb2RlPXZlcmlmeS1jYSBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2Eu Y3J0LmRiIiwKIAkiY29ubmVjdCB3aXRoIGNvcnJlY3Qgc2VydmVyIENBIGNlcnQgZmlsZSBzc2xt b2RlPXZlcmlmeS1jYSIpOwogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKLQki c3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1mdWxsIiwK Kwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1mdWxs IGNlcnRfZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAogCSJjb25uZWN0 IHdpdGggY29ycmVjdCBzZXJ2ZXIgQ0EgY2VydCBmaWxlIHNzbG1vZGU9dmVyaWZ5LWZ1bGwiKTsK IAotIyBUZXN0IHdpdGggY2VydCByb290IGZpbGUgdGhhdCBjb250YWlucyB0d28gY2VydGlmaWNh dGVzLiBUaGUgY2xpZW50IHNob3VsZAotIyBiZSBhYmxlIHRvIHBpY2sgdGhlIHJpZ2h0IG9uZSwg cmVnYXJkbGVzcyBvZiB0aGUgb3JkZXIgaW4gdGhlIGZpbGUuCi10ZXN0X2Nvbm5lY3Rfb2soCi0J JGNvbW1vbl9jb25uc3RyLAotCSJzc2xyb290Y2VydD1zc2wvYm90aC1jYXMtMS5jcnQgc3NsbW9k ZT12ZXJpZnktY2EiLAotCSJjZXJ0IHJvb3QgZmlsZSB0aGF0IGNvbnRhaW5zIHR3byBjZXJ0aWZp Y2F0ZXMsIG9yZGVyIDEiKTsKLXRlc3RfY29ubmVjdF9vaygKLQkkY29tbW9uX2Nvbm5zdHIsCi0J InNzbHJvb3RjZXJ0PXNzbC9ib3RoLWNhcy0yLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCi0JImNl cnQgcm9vdCBmaWxlIHRoYXQgY29udGFpbnMgdHdvIGNlcnRpZmljYXRlcywgb3JkZXIgMiIpOwor U0tJUDoKK3sKKwlza2lwICJDQSBvcmRlcmluZyBpcyBpcnJlbGV2YW50IGluIE5TUyBkYXRhYmFz ZXMiLCAyIGlmICgkbnNzKTsKIAorCSMgVGVzdCB3aXRoIGNlcnQgcm9vdCBmaWxlIHRoYXQgY29u dGFpbnMgdHdvIGNlcnRpZmljYXRlcy4gVGhlIGNsaWVudCBzaG91bGQKKwkjIGJlIGFibGUgdG8g cGljayB0aGUgcmlnaHQgb25lLCByZWdhcmRsZXNzIG9mIHRoZSBvcmRlciBpbiB0aGUgZmlsZS4K Kwl0ZXN0X2Nvbm5lY3Rfb2soCisJCSRjb21tb25fY29ubnN0ciwKKwkJInNzbHJvb3RjZXJ0PXNz bC9ib3RoLWNhcy0xLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCisJCSJjZXJ0IHJvb3QgZmlsZSB0 aGF0IGNvbnRhaW5zIHR3byBjZXJ0aWZpY2F0ZXMsIG9yZGVyIDEiKTsKKworCSMgSG93IGFib3V0 IGltcG9ydCB0aGUgYm90aC1maWxlIGludG8gYSBkYXRhYmFzZT8KKwl0ZXN0X2Nvbm5lY3Rfb2so CisJCSRjb21tb25fY29ubnN0ciwKKwkJInNzbHJvb3RjZXJ0PXNzbC9ib3RoLWNhcy0yLmNydCBz c2xtb2RlPXZlcmlmeS1jYSIsCisJCSJjZXJ0IHJvb3QgZmlsZSB0aGF0IGNvbnRhaW5zIHR3byBj ZXJ0aWZpY2F0ZXMsIG9yZGVyIDIiKTsKK30KICMgQ1JMIHRlc3RzCiAKICMgSW52YWxpZCBDUkwg ZmlsZW5hbWUgaXMgdGhlIHNhbWUgYXMgbm8gQ1JMLCBzdWNjZWVkcwogdGVzdF9jb25uZWN0X29r KAogCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNy dCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9aW52YWxpZCIsCisJInNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsPWludmFsaWQgY2VydF9k YXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJInNzbGNybCBvcHRpb24g d2l0aCBpbnZhbGlkIGZpbGUgbmFtZSIpOwogCi0jIEEgQ1JMIGJlbG9uZ2luZyB0byBhIGRpZmZl cmVudCBDQSBpcyBub3QgYWNjZXB0ZWQsIGZhaWxzCi10ZXN0X2Nvbm5lY3RfZmFpbHMoCi0JJGNv bW1vbl9jb25uc3RyLAotCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1v ZGU9dmVyaWZ5LWNhIHNzbGNybD1zc2wvY2xpZW50LmNybCIsCi0JcXIvU1NMIGVycm9yLywKLQki Q1JMIGJlbG9uZ2luZyB0byBhIGRpZmZlcmVudCBDQSIpOworU0tJUDoKK3sKKwlza2lwICJDUkwn cyBhcmUgdmVyaWZpZWQgd2hlbiBhZGRpbmcgdG8gTlNTIGRhdGFiYXNlIiwgMiBpZiAoJG5zcyk7 CisJIyBBIENSTCBiZWxvbmdpbmcgdG8gYSBkaWZmZXJlbnQgQ0EgaXMgbm90IGFjY2VwdGVkLCBm YWlscworCXRlc3RfY29ubmVjdF9mYWlscygKKwkJJGNvbW1vbl9jb25uc3RyLAorCQkic3Nscm9v dGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9c3Ns L2NsaWVudC5jcmwiLAorCQlxci9TU0wgZXJyb3IvLAorCQkiQ1JMIGJlbG9uZ2luZyB0byBhIGRp ZmZlcmVudCBDQSIpOworfQogCiAjIFdpdGggdGhlIGNvcnJlY3QgQ1JMLCBzdWNjZWVkcyAodGhp cyBjZXJ0IGlzIG5vdCByZXZva2VkKQogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0 ciwKLQkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1j YSBzc2xjcmw9c3NsL3Jvb3Qrc2VydmVyLmNybCIsCisJInNzbHJvb3RjZXJ0PXNzbC9yb290K3Nl cnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsPXNzbC9yb290K3NlcnZlci5jcmwg Y2VydF9kYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9fcm9vdCtzZXJ2ZXIuY3Js LmRiIiwKIAkiQ1JMIHdpdGggYSBub24tcmV2b2tlZCBjZXJ0Iik7CiAKICMgQ2hlY2sgdGhhdCBj b25uZWN0aW5nIHdpdGggdmVyaWZ5LWZ1bGwgZmFpbHMsIHdoZW4gdGhlIGhvc3RuYW1lIGRvZXNu J3QKICMgbWF0Y2ggdGhlIGhvc3RuYW1lIGluIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS4KICRj b21tb25fY29ubnN0ciA9Ci0gICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIHNzbGNl cnQ9aW52YWxpZCBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRT RVJWRVJIT1NUQUREUiI7CisgICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIHNzbGNl cnQ9aW52YWxpZCBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRT RVJWRVJIT1NUQUREUiBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRi IjsKIAogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKQEAgLTIzNywxNCArMjcw LDE0IEBAIHRlc3RfY29ubmVjdF9vaygKIHRlc3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nv bm5zdHIsCiAJInNzbG1vZGU9dmVyaWZ5LWZ1bGwgaG9zdD13cm9uZ2hvc3QudGVzdCIsCi0JcXIv XFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJjb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIGRv ZXMgbm90IG1hdGNoIGhvc3QgbmFtZSAid3Jvbmdob3N0LnRlc3QiXEUvLAorCXFyL1xRc2VydmVy IGNlcnRpZmljYXRlIGZvciAiY29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiBkb2VzIG5vdCBt YXRjaCBob3N0IG5hbWUgIndyb25naG9zdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21haW4gbmFtZSBk b2VzIG5vdCBtYXRjaCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUvLAogCSJtaXNtYXRjaCBiZXR3 ZWVuIGhvc3QgbmFtZSBhbmQgc2VydmVyIGNlcnRpZmljYXRlIHNzbG1vZGU9dmVyaWZ5LWZ1bGwi KTsKIAogIyBUZXN0IFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZXMuCiBzd2l0Y2hfc2VydmVyX2Nl cnQoJG5vZGUsICdzZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzJyk7CiAKICRjb21tb25fY29ubnN0 ciA9Ci0gICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIHNzbGNlcnQ9aW52YWxpZCBz c2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQURE UiBzc2xtb2RlPXZlcmlmeS1mdWxsIjsKKyAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0 ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9z dGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5LWZ1bGwgY2VydF9kYXRhYmFzZT1z c2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiI7CiAKIHRlc3RfY29ubmVjdF9vaygKIAkkY29t bW9uX2Nvbm5zdHIsCkBAIC0yNjIsMTIgKzI5NSwxMiBAQCB0ZXN0X2Nvbm5lY3Rfb2soCiB0ZXN0 X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9jb25uc3RyLAogCSJob3N0PXdyb25naG9zdC5hbHQt bmFtZS5wZy1zc2x0ZXN0LnRlc3QiLAotCXFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAiZG5z MS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQgMiBvdGhlciBuYW1lcykgZG9lcyBub3Qg bWF0Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IlxFLywK Kwlxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRuczEuYWx0LW5hbWUucGctc3NsdGVzdC50 ZXN0IiAoYW5kIDIgb3RoZXIgbmFtZXMpIGRvZXMgbm90IG1hdGNoIGhvc3QgbmFtZSAid3Jvbmdo b3N0LmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCJcRXxyZXF1ZXN0ZWQgZG9tYWluIG5hbWUgZG9l cyBub3QgbWF0Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLywKIAkiaG9zdCBuYW1lIG5vdCBt YXRjaGluZyB3aXRoIFguNTA5IFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZXMiKTsKIHRlc3RfY29u bmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJImhvc3Q9ZGVlcC5zdWJkb21haW4ud2ls ZGNhcmQucGctc3NsdGVzdC50ZXN0IiwKLQlxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRu czEuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiAoYW5kIDIgb3RoZXIgbmFtZXMpIGRvZXMgbm90 IG1hdGNoIGhvc3QgbmFtZSAiZGVlcC5zdWJkb21haW4ud2lsZGNhcmQucGctc3NsdGVzdC50ZXN0 IlxFLywKKwlxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRuczEuYWx0LW5hbWUucGctc3Ns dGVzdC50ZXN0IiAoYW5kIDIgb3RoZXIgbmFtZXMpIGRvZXMgbm90IG1hdGNoIGhvc3QgbmFtZSAi ZGVlcC5zdWJkb21haW4ud2lsZGNhcmQucGctc3NsdGVzdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21h aW4gbmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUvLAogCSJob3N0 IG5hbWUgbm90IG1hdGNoaW5nIHdpdGggWC41MDkgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcyB3 aWxkY2FyZCIpOwogCiAjIFRlc3QgY2VydGlmaWNhdGUgd2l0aCBhIHNpbmdsZSBTdWJqZWN0IEFs dGVybmF0aXZlIE5hbWUuICh0aGlzIGdpdmVzIGEKQEAgLTI3NSw3ICszMDgsNyBAQCB0ZXN0X2Nv bm5lY3RfZmFpbHMoCiBzd2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXItc2luZ2xlLWFs dC1uYW1lJyk7CiAKICRjb21tb25fY29ubnN0ciA9Ci0gICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFt ZT10cnVzdGRiIHNzbGNlcnQ9aW52YWxpZCBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2Eu Y3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBzc2xtb2RlPXZlcmlmeS1mdWxsIjsKKyAgInVz ZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0 PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9 dmVyaWZ5LWZ1bGwgY2VydF9kYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiI7 CiAKIHRlc3RfY29ubmVjdF9vaygKIAkkY29tbW9uX2Nvbm5zdHIsCkBAIC0yODUsMTIgKzMxOCwx MiBAQCB0ZXN0X2Nvbm5lY3Rfb2soCiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9jb25u c3RyLAogCSJob3N0PXdyb25naG9zdC5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiLAotCXFyL1xR c2VydmVyIGNlcnRpZmljYXRlIGZvciAic2luZ2xlLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIg ZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QuYWx0LW5hbWUucGctc3NsdGVzdC50 ZXN0IlxFLywKKwlxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgInNpbmdsZS5hbHQtbmFtZS5w Zy1zc2x0ZXN0LnRlc3QiIGRvZXMgbm90IG1hdGNoIGhvc3QgbmFtZSAid3Jvbmdob3N0LmFsdC1u YW1lLnBnLXNzbHRlc3QudGVzdCJcRXxyZXF1ZXN0ZWQgZG9tYWluIG5hbWUgZG9lcyBub3QgbWF0 Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLywKIAkiaG9zdCBuYW1lIG5vdCBtYXRjaGluZyB3 aXRoIGEgc2luZ2xlIFguNTA5IFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZSIpOwogdGVzdF9jb25u ZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKIAkiaG9zdD1kZWVwLnN1YmRvbWFpbi53aWxk Y2FyZC5wZy1zc2x0ZXN0LnRlc3QiLAotCXFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAic2lu Z2xlLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJk ZWVwLnN1YmRvbWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRlc3QiXEUvLAorCXFyL1xRc2VydmVy IGNlcnRpZmljYXRlIGZvciAic2luZ2xlLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIgZG9lcyBu b3QgbWF0Y2ggaG9zdCBuYW1lICJkZWVwLnN1YmRvbWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRl c3QiXEV8cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBj ZXJ0aWZpY2F0ZS8sCiAJImhvc3QgbmFtZSBub3QgbWF0Y2hpbmcgd2l0aCBhIHNpbmdsZSBYLjUw OSBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWUgd2lsZGNhcmQiCiApOwogCkBAIC0yOTksNyArMzMy LDcgQEAgdGVzdF9jb25uZWN0X2ZhaWxzKAogc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2Vy dmVyLWNuLWFuZC1hbHQtbmFtZXMnKTsKIAogJGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9c3Ns dGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5 LWZ1bGwiOworICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFs aWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9T VEFERFIgc3NsbW9kZT12ZXJpZnktZnVsbCBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2 ZXJfY2EuY3J0LmRiIjsKIAogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKQEAg LTMxMiwxNCArMzQ1LDE0IEBAIHRlc3RfY29ubmVjdF9vaygKIHRlc3RfY29ubmVjdF9mYWlscygK IAkkY29tbW9uX2Nvbm5zdHIsCiAJImhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiwK LQlxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRuczEuYWx0LW5hbWUucGctc3NsdGVzdC50 ZXN0IiAoYW5kIDEgb3RoZXIgbmFtZSkgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJjb21tb24t bmFtZS5wZy1zc2x0ZXN0LnRlc3QiXEUvLAorCXFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAi ZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQgMSBvdGhlciBuYW1lKSBkb2VzIG5v dCBtYXRjaCBob3N0IG5hbWUgImNvbW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCJcRXxyZXF1ZXN0 ZWQgZG9tYWluIG5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLywK IAkiY2VydGlmaWNhdGUgd2l0aCBib3RoIGEgQ04gYW5kIFNBTnMgaWdub3JlcyBDTiIpOwogCiAj IEZpbmFsbHksIHRlc3QgYSBzZXJ2ZXIgY2VydGlmaWNhdGUgdGhhdCBoYXMgbm8gQ04gb3IgU0FO cy4gT2YgY291cnNlLCB0aGF0J3MKICMgbm90IGEgdmVyeSBzZW5zaWJsZSBjZXJ0aWZpY2F0ZSwg YnV0IGxpYnBxIHNob3VsZCBoYW5kbGUgaXQgZ3JhY2VmdWxseS4KIHN3aXRjaF9zZXJ2ZXJfY2Vy dCgkbm9kZSwgJ3NlcnZlci1uby1uYW1lcycpOwogJGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9 c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNz bC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIjsKKyAgInVzZXI9 c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNz bC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIGNlcnRfZGF0YWJh c2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiOwogCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJ JGNvbW1vbl9jb25uc3RyLApAQCAtMzI4LDcgKzM2MSw3IEBAIHRlc3RfY29ubmVjdF9vaygKIHRl c3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJInNzbG1vZGU9dmVyaWZ5LWZ1 bGwgaG9zdD1jb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiLAotCXFyL2NvdWxkIG5vdCBnZXQg c2VydmVyJ3MgaG9zdCBuYW1lIGZyb20gc2VydmVyIGNlcnRpZmljYXRlLywKKwlxci9jb3VsZCBu b3QgZ2V0IHNlcnZlcidzIGhvc3QgbmFtZSBmcm9tIHNlcnZlciBjZXJ0aWZpY2F0ZXxyZXF1ZXN0 ZWQgZG9tYWluIG5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLi8s CiAJInNlcnZlciBjZXJ0aWZpY2F0ZSB3aXRob3V0IENOIG9yIFNBTnMgc3NsbW9kZT12ZXJpZnkt ZnVsbCIpOwogCiAjIFRlc3QgdGhhdCB0aGUgQ1JMIHdvcmtzCkBAIC0zNDAsMTEgKzM3MywxMSBA QCAkY29tbW9uX2Nvbm5zdHIgPQogIyBXaXRob3V0IHRoZSBDUkwsIHN1Y2NlZWRzLiBXaXRoIGl0 LCBmYWlscy4KIHRlc3RfY29ubmVjdF9vaygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJvb3Rj ZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2EiLAorCSJzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIGNlcnRfZGF0YWJh c2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAogCSJjb25uZWN0cyB3aXRob3V0IGNs aWVudC1zaWRlIENSTCIpOwogdGVzdF9jb25uZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwK LQkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBz c2xjcmw9c3NsL3Jvb3Qrc2VydmVyLmNybCIsCisJInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZl cl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsPXNzbC9zZXJ2ZXIuY3JsIGNlcnRfZGF0 YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3NlcnZlci5jcmwuZGIiLAogCXFyL1NT TCBlcnJvci8sCiAJImRvZXMgbm90IGNvbm5lY3Qgd2l0aCBjbGllbnQtc2lkZSBDUkwiKTsKIApA QCAtMzY1LDMyICszOTgsNTAgQEAgY29tbWFuZF9saWtlKAogIyBUZXN0IG1pbi9tYXggU1NMIHBy b3RvY29sIHZlcnNpb25zLgogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKLQki c3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsX21p bl9wcm90b2NvbF92ZXJzaW9uPVRMU3YxLjIgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uPVRMU3Yx LjIiLAorCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWly ZSBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb249VExTdjEuMiBzc2xfbWF4X3Byb3RvY29sX3ZlcnNp b249VExTdjEuMiBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwK IAkiY29ubmVjdGlvbiBzdWNjZXNzIHdpdGggY29ycmVjdCByYW5nZSBvZiBUTFMgcHJvdG9jb2wg dmVyc2lvbnMiKTsKIHRlc3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNz bHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIHNzbF9taW5f cHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4yIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4x IiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUg c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uPVRMU3YxLjIgc3NsX21heF9wcm90b2NvbF92ZXJzaW9u PVRMU3YxLjEgY2VydF9kYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJ cXIvaW52YWxpZCBTU0wgcHJvdG9jb2wgdmVyc2lvbiByYW5nZS8sCiAJImNvbm5lY3Rpb24gZmFp bHVyZSB3aXRoIGluY29ycmVjdCByYW5nZSBvZiBUTFMgcHJvdG9jb2wgdmVyc2lvbnMiKTsKIHRl c3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lv bj1pbmNvcnJlY3RfdGxzIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBz c2xtb2RlPXJlcXVpcmUgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uPWluY29ycmVjdF90bHMgY2Vy dF9kYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJcXIvaW52YWxpZCBz c2xfbWluX3Byb3RvY29sX3ZlcnNpb24gdmFsdWUvLAogCSJjb25uZWN0aW9uIGZhaWx1cmUgd2l0 aCBhbiBpbmNvcnJlY3QgU1NMIHByb3RvY29sIG1pbmltdW0gYm91bmQiKTsKIHRlc3RfY29ubmVj dF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZl cl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbj1pbmNvcnJl Y3RfdGxzIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJl cXVpcmUgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uPWluY29ycmVjdF90bHMgY2VydF9kYXRhYmFz ZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJcXIvaW52YWxpZCBzc2xfbWF4X3By b3RvY29sX3ZlcnNpb24gdmFsdWUvLAogCSJjb25uZWN0aW9uIGZhaWx1cmUgd2l0aCBhbiBpbmNv cnJlY3QgU1NMIHByb3RvY29sIG1heGltdW0gYm91bmQiKTsKIAorIyB0ZXN0cyBvZiBOU1MgZ2Vu ZXJhdGVkIGNlcnRpZmljYXRlcy9rZXlzCitTS0lQOgoreworCXNraXAgIk5TUyBzcGVjaWZpYyB0 ZXN0cyIsICAgICAgICAgICAgMSBpZiAoJG9wZW5zc2wpOworCisJc3dpdGNoX3NlcnZlcl9jZXJ0 KCRub2RlLCAnbmF0aXZlX3NlcnZlci1yb290JywgJ25hdGl2ZV9jYS1yb290Jyk7CisJJGNvbW1v bl9jb25uc3RyID0KKwkgICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIGhvc3RhZGRy PSRTRVJWRVJIT1NUQUREUiBob3N0PWNvbW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCI7CisKKwl0 ZXN0X2Nvbm5lY3Rfb2soCisJCSRjb21tb25fY29ubnN0ciwKKwkJInNzbG1vZGU9cmVxdWlyZSB1 c2VyPXNzbHRlc3R1c2VyIiwKKwkJIk5TUyBnZW5lcmF0ZWQgY2VydGlmaWNhdGVzIgorCSk7Cit9 CisKICMjIyBTZXJ2ZXItc2lkZSB0ZXN0cy4KICMjIwogIyMjIFRlc3QgY2VydGlmaWNhdGUgYXV0 aG9yaXphdGlvbi4KIAorc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLXJldm9rZWQn KTsKKwogbm90ZSAicnVubmluZyBzZXJ2ZXIgdGVzdHMiOwogCiAkY29tbW9uX2Nvbm5zdHIgPQot ICAic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgZGJu YW1lPWNlcnRkYiBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIiOworICAic3Nscm9vdGNlcnQ9c3Ns L3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgZGJuYW1lPWNlcnRkYiBob3N0YWRk cj0kU0VSVkVSSE9TVEFERFIgY2VydF9kYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVu dC5rZXkuZGIiOwogCiAjIG5vIGNsaWVudCBjZXJ0CiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCkBAIC00 MDYsMzIgKzQ1Nyw0MyBAQCB0ZXN0X2Nvbm5lY3Rfb2soCiAJImNlcnRpZmljYXRlIGF1dGhvcml6 YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0IGNsaWVudCBjZXJ0IGluIFBFTSBmb3JtYXQiCiAp OwogCi0jIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gdW5lbmNyeXB0ZWQgREVSCi10ZXN0X2Nvbm5l Y3Rfb2soCi0JJGNvbW1vbl9jb25uc3RyLAotCSJ1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3Ns L2NsaWVudC5jcnQgc3Nsa2V5PXNzbC9jbGllbnQtZGVyX3RtcC5rZXkiLAotCSJjZXJ0aWZpY2F0 ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRzIHdpdGggY29ycmVjdCBjbGllbnQgY2VydCBpbiBERVIg Zm9ybWF0IgotKTsKKyRjb21tb25fY29ubnN0ciA9CisgICJzc2xyb290Y2VydD1zc2wvcm9vdCtz ZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBkYm5hbWU9Y2VydGRiIGhvc3RhZGRyPSRTRVJW RVJIT1NUQUREUiI7CisKK1NLSVA6Cit7CisJc2tpcCAiTlNTIGRhdGFiYXNlIG5vdCBpbXBsZW1l bnRlZCBpbiB0aGUgTWFrZWZpbGUiLCAxIGlmICgkbnNzKTsKKwkjIGNvcnJlY3QgY2xpZW50IGNl cnQgaW4gdW5lbmNyeXB0ZWQgREVSCisJdGVzdF9jb25uZWN0X29rKAorCQkkY29tbW9uX2Nvbm5z dHIsCisJCSJ1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PXNz bC9jbGllbnQtZGVyX3RtcC5rZXkiLAorCQkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBzdWNj ZWVkcyB3aXRoIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gREVSIGZvcm1hdCIKKwkpOworfQogCiAj IGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIFBFTQogdGVzdF9jb25uZWN0X29rKAog CSRjb21tb25fY29ubnN0ciwKLQkidXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQu Y3J0IHNzbGtleT1zc2wvY2xpZW50LWVuY3J5cHRlZC1wZW1fdG1wLmtleSBzc2xwYXNzd29yZD0n ZFVtbXlQXiMrJyIsCisJInVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBz c2xrZXk9c3NsL2NsaWVudC1lbmNyeXB0ZWQtcGVtX3RtcC5rZXkgc3NscGFzc3dvcmQ9J2RVbW15 UF4jKycgY2VydF9kYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC1lbmNyeXB0ZWQt cGVtLmtleS5kYiIsCiAJImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBj b3JyZWN0IGNsaWVudCBjZXJ0IGluIGVuY3J5cHRlZCBQRU0gZm9ybWF0IgogKTsKIAotIyBjb3Jy ZWN0IGNsaWVudCBjZXJ0IGluIGVuY3J5cHRlZCBERVIKLXRlc3RfY29ubmVjdF9vaygKLQkkY29t bW9uX2Nvbm5zdHIsCi0JInVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBz c2xrZXk9c3NsL2NsaWVudC1lbmNyeXB0ZWQtZGVyX3RtcC5rZXkgc3NscGFzc3dvcmQ9J2RVbW15 UF4jKyciLAotCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRzIHdpdGggY29ycmVj dCBjbGllbnQgY2VydCBpbiBlbmNyeXB0ZWQgREVSIGZvcm1hdCIKLSk7CitTS0lQOgoreworCXNr aXAgIk5TUyBkYXRhYmFzZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIE1ha2VmaWxlIiwgMSBpZiAo JG5zcyk7CisJIyBjb3JyZWN0IGNsaWVudCBjZXJ0IGluIGVuY3J5cHRlZCBERVIKKwl0ZXN0X2Nv bm5lY3Rfb2soCisJCSRjb21tb25fY29ubnN0ciwKKwkJInVzZXI9c3NsdGVzdHVzZXIgc3NsY2Vy dD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudC1lbmNyeXB0ZWQtZGVyX3RtcC5rZXkg c3NscGFzc3dvcmQ9J2RVbW15UF4jKyciLAorCQkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBz dWNjZWVkcyB3aXRoIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIERFUiBmb3JtYXQi CisJKTsKK30KIAogIyBjb3JyZWN0IGNsaWVudCBjZXJ0IGluIGVuY3J5cHRlZCBQRU0gd2l0aCB3 cm9uZyBwYXNzd29yZAogdGVzdF9jb25uZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKLQki dXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xpZW50 LWVuY3J5cHRlZC1wZW1fdG1wLmtleSBzc2xwYXNzd29yZD0nd3JvbmcnIiwKLQlxciFcUXByaXZh dGUga2V5IGZpbGUgInNzbC9jbGllbnQtZW5jcnlwdGVkLXBlbV90bXAua2V5IjogYmFkIGRlY3J5 cHRcRSEsCisJInVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9 c3NsL2NsaWVudC1lbmNyeXB0ZWQtcGVtX3RtcC5rZXkgc3NscGFzc3dvcmQ9J3dyb25nJyBjZXJ0 X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50LWVuY3J5cHRlZC1wZW0ua2V5LmRi IiwKKwlxciFjb25uZWN0aW9uIHJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlfFxR cHJpdmF0ZSBrZXkgZmlsZSAic3NsL2NsaWVudC1lbmNyeXB0ZWQtcGVtX3RtcC5rZXkiOiBiYWQg ZGVjcnlwdFxFISwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3aXRoIGNvcnJl Y3QgY2xpZW50IGNlcnQgYW5kIHdyb25nIHBhc3N3b3JkIGluIGVuY3J5cHRlZCBQRU0gZm9ybWF0 IgogKTsKIApAQCAtNDcxLDE4ICs1MzMsMTkgQEAgY29tbWFuZF9saWtlKAogCQknLVAnLAogCQkn bnVsbD1fbnVsbF8nLAogCQknLWQnLAotCQkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3NsdGVzdHVz ZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IiwKKwkJ IiRjb21tb25fY29ubnN0ciB1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQg c3Nsa2V5PXNzbC9jbGllbnRfdG1wLmtleSBjZXJ0X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNy dF9fY2xpZW50LmtleS5kYiIsCiAJCSctYycsCiAJCSJTRUxFQ1QgKiBGUk9NIHBnX3N0YXRfc3Ns IFdIRVJFIHBpZCA9IHBnX2JhY2tlbmRfcGlkKCkiCiAJXSwKIAlxcntecGlkLHNzbCx2ZXJzaW9u LGNpcGhlcixiaXRzLGNvbXByZXNzaW9uLGNsaWVudF9kbixjbGllbnRfc2VyaWFsLGlzc3Vlcl9k blxyP1xuCi0JCQkJXlxkKyx0LFRMU3ZbXGQuXSssW1x3LV0rLFxkKyxmLC9DTj1zc2x0ZXN0dXNl ciwxLFxRL0NOPVRlc3QgQ0EgZm9yIFBvc3RncmVTUUwgU1NMIHJlZ3Jlc3Npb24gdGVzdCBjbGll bnQgY2VydHNcRVxyPyR9bXgsCisJCQkJXlxkKyx0LFRMU3ZbXGQuXSssW1x3LV0rLFxkKyxmLC8/ Q049c3NsdGVzdHVzZXIsMSwvP1xRQ049VGVzdCBDQSBmb3IgUG9zdGdyZVNRTCBTU0wgcmVncmVz c2lvbiB0ZXN0IGNsaWVudCBjZXJ0c1xFXHI/JH1teCwKIAkncGdfc3RhdF9zc2wgd2l0aCBjbGll bnQgY2VydGlmaWNhdGUnKTsKIAogIyBjbGllbnQga2V5IHdpdGggd3JvbmcgcGVybWlzc2lvbnMK IFNLSVA6CiB7CiAJc2tpcCAiUGVybWlzc2lvbnMgY2hlY2sgbm90IGVuZm9yY2VkIG9uIFdpbmRv d3MiLCAyIGlmICgkd2luZG93c19vcyk7CisJc2tpcCAiS2V5IG5vdCBvbiBmaWxlc3lzdGVtIHdp dGggTlNTIiwgICAgICAgICAgICAyIGlmICgkbnNzKTsKIAogCXRlc3RfY29ubmVjdF9mYWlscygK IAkJJGNvbW1vbl9jb25uc3RyLApAQCAtNDk1LDEwICs1NTgsMTMgQEAgU0tJUDoKIHRlc3RfY29u bmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJInVzZXI9YW5vdGhlcnVzZXIgc3NsY2Vy dD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IiwKLQlxci9jZXJ0aWZp Y2F0ZSBhdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIgImFub3RoZXJ1c2VyIi8sCisJcXIv dW5hYmxlIHRvIHZlcmlmeSBjZXJ0aWZpY2F0ZXxjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBm YWlsZWQgZm9yIHVzZXIgImFub3RoZXJ1c2VyIi8sCiAJImNlcnRpZmljYXRlIGF1dGhvcml6YXRp b24gZmFpbHMgd2l0aCBjbGllbnQgY2VydCBiZWxvbmdpbmcgdG8gYW5vdGhlciB1c2VyIgogKTsK IAorJGNvbW1vbl9jb25uc3RyID0KKyAgInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5j cnQgc3NsbW9kZT1yZXF1aXJlIGRibmFtZT1jZXJ0ZGIgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERS IGNlcnRfZGF0YWJhc2U9c3NsL25zcy9jbGllbnQtcmV2b2tlZC5jcnRfX2NsaWVudC1yZXZva2Vk LmtleS5kYiI7CisKICMgcmV2b2tlZCBjbGllbnQgY2VydAogdGVzdF9jb25uZWN0X2ZhaWxzKAog CSRjb21tb25fY29ubnN0ciwKQEAgLTUxMCw3ICs1NzYsNyBAQCB0ZXN0X2Nvbm5lY3RfZmFpbHMo CiAjIHdvcmtzLCBpZmYgdXNlcm5hbWUgbWF0Y2hlcyBDb21tb24gTmFtZQogIyBmYWlscywgaWZm IHVzZXJuYW1lIGRvZXNuJ3QgbWF0Y2ggQ29tbW9uIE5hbWUuCiAkY29tbW9uX2Nvbm5zdHIgPQot ICAic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgZGJu YW1lPXZlcmlmeWRiIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiI7CisgICJzc2xyb290Y2VydD1z c2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBkYm5hbWU9dmVyaWZ5ZGIgaG9z dGFkZHI9JFNFUlZFUkhPU1RBRERSIGNlcnRfZGF0YWJhc2U9c3NsL25zcy9jbGllbnQuY3J0X19j bGllbnQua2V5LmRiIjsKIAogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKQEAg LTUzNiwxNyArNjAyLDE5IEBAIHRlc3RfY29ubmVjdF9vaygKICMgaW50ZXJtZWRpYXRlIGNsaWVu dF9jYS5jcnQgaXMgcHJvdmlkZWQgYnkgY2xpZW50LCBhbmQgaXNuJ3QgaW4gc2VydmVyJ3Mgc3Ns X2NhX2ZpbGUKIHN3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwgJ3NlcnZlci1jbi1vbmx5JywgJ3Jv b3RfY2EnKTsKICRjb21tb25fY29ubnN0ciA9Ci0gICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT1j ZXJ0ZGIgc3Nsa2V5PXNzbC9jbGllbnRfdG1wLmtleSBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2 ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiI7CisgICJ1c2VyPXNzbHRlc3R1c2Vy IGRibmFtZT1jZXJ0ZGIgc3Nsa2V5PXNzbC9jbGllbnRfdG1wLmtleSBzc2xyb290Y2VydD1zc2wv cm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBjZXJ0X2RhdGFiYXNl PXNzbC9uc3MvY2xpZW50K2NsaWVudF9jYS5jcnRfX2NsaWVudC5rZXkuZGIiOwogCiB0ZXN0X2Nv bm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLAogCSJzc2xtb2RlPXJlcXVpcmUgc3NsY2VydD1z c2wvY2xpZW50K2NsaWVudF9jYS5jcnQiLAogCSJpbnRlcm1lZGlhdGUgY2xpZW50IGNlcnRpZmlj YXRlIGlzIHByb3ZpZGVkIGJ5IGNsaWVudCIpOwotdGVzdF9jb25uZWN0X2ZhaWxzKCRjb21tb25f Y29ubnN0ciwgInNzbG1vZGU9cmVxdWlyZSBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IiwKLQlxci9T U0wgZXJyb3IvLCAiaW50ZXJtZWRpYXRlIGNsaWVudCBjZXJ0aWZpY2F0ZSBpcyBtaXNzaW5nIik7 CisKK3Rlc3RfY29ubmVjdF9mYWlscygKKwkkY29tbW9uX2Nvbm5zdHIsCisJInNzbG1vZGU9cmVx dWlyZSBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IiwKKwlxci9jb25uZWN0aW9uIHJlcXVpcmVzIGEg dmFsaWQgY2xpZW50IGNlcnRpZmljYXRlfFNTTCBlcnJvci8sCisJImludGVybWVkaWF0ZSBjbGll bnQgY2VydGlmaWNhdGUgaXMgbWlzc2luZyIpOwogCiAjIGNsZWFuIHVwCi1mb3JlYWNoIG15ICRr ZXkgKEBrZXlzKQotewotCXVubGluaygic3NsLyR7a2V5fV90bXAua2V5Iik7Ci19CisKK1NTTDo6 U2VydmVyOjpjbGVhbnVwKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0u cGwgYi9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwKaW5kZXggNDEwYjllOTEwZC4uNDM1NjVi ZGY2ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsCisrKyBiL3NyYy90 ZXN0L3NzbC90LzAwMl9zY3JhbS5wbApAQCAtMTEsMTEgKzExLDMwIEBAIHVzZSBGaWxlOjpDb3B5 OwogdXNlIEZpbmRCaW47CiB1c2UgbGliICRGaW5kQmluOjpSZWFsQmluOwogCi11c2UgU1NMU2Vy dmVyOwordXNlIFNTTDo6U2VydmVyOwogCi1pZiAoJEVOVnt3aXRoX3NzbH0gbmUgJ29wZW5zc2wn KQorbXkgJG9wZW5zc2w7CitteSAkbnNzOworCitteSAkc3VwcG9ydHNfdGxzX3NlcnZlcl9lbmRf cG9pbnQ7CisKK2lmICgkRU5We3dpdGhfc3NsfSBlcSAnb3BlbnNzbCcpCit7CisJJG9wZW5zc2wg PSAxOworCSMgRGV0ZXJtaW5lIHdoZXRoZXIgYnVpbGQgc3VwcG9ydHMgdGxzLXNlcnZlci1lbmQt cG9pbnQuCisJJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50ID0KKwkJY2hlY2tfcGdfY29u ZmlnKCIjZGVmaW5lIEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCAxIik7CisJcGxhbiB0ZXN0 cyA9PiAkc3VwcG9ydHNfdGxzX3NlcnZlcl9lbmRfcG9pbnQgPyA5IDogMTA7Cit9CitlbHNpZiAo JEVOVnt3aXRoX3NzbH0gZXEgJ25zcycpCit7CisJJG5zcyA9IDE7CisJJHN1cHBvcnRzX3Rsc19z ZXJ2ZXJfZW5kX3BvaW50ID0gMTsKKwlwbGFuIHRlc3RzID0+IDk7Cit9CitlbHNlCiB7Ci0JcGxh biBza2lwX2FsbCA9PiAnT3BlblNTTCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworCXBs YW4gc2tpcF9hbGwgPT4gJ1NTTCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOwogfQogCiAj IFRoaXMgaXMgdGhlIGhvc3RuYW1lIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyLgpAQCAt MjMsMTIgKzQyLDYgQEAgbXkgJFNFUlZFUkhPU1RBRERSID0gJzEyNy4wLjAuMSc7CiAjIFRoaXMg aXMgdGhlIHBhdHRlcm4gdG8gdXNlIGluIHBnX2hiYS5jb25mIHRvIG1hdGNoIGluY29taW5nIGNv bm5lY3Rpb25zLgogbXkgJFNFUlZFUkhPU1RDSURSID0gJzEyNy4wLjAuMS8zMic7CiAKLSMgRGV0 ZXJtaW5lIHdoZXRoZXIgYnVpbGQgc3VwcG9ydHMgdGxzLXNlcnZlci1lbmQtcG9pbnQuCi1teSAk c3VwcG9ydHNfdGxzX3NlcnZlcl9lbmRfcG9pbnQgPQotICBjaGVja19wZ19jb25maWcoIiNkZWZp bmUgSEFWRV9YNTA5X0dFVF9TSUdOQVRVUkVfTklEIDEiKTsKLQotbXkgJG51bWJlcl9vZl90ZXN0 cyA9ICRzdXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludCA/IDkgOiAxMDsKLQogIyBBbGxvY2F0 aW9uIG9mIGJhc2UgY29ubmVjdGlvbiBzdHJpbmcgc2hhcmVkIGFtb25nIG11bHRpcGxlIHRlc3Rz LgogbXkgJGNvbW1vbl9jb25uc3RyOwogCkBAIC02Niw2ICs3OSw3IEBAIHRlc3RfY29ubmVjdF9v aygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJInVzZXI9c3NsdGVzdHVzZXIgY2hhbm5lbF9iaW5kaW5n PWRpc2FibGUiLAogCSJTQ1JBTSB3aXRoIFNTTCBhbmQgY2hhbm5lbF9iaW5kaW5nPWRpc2FibGUi KTsKKwogaWYgKCRzdXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludCkKIHsKIAl0ZXN0X2Nvbm5l Y3Rfb2soCkBAIC05NywxMiArMTExLDkgQEAgbXkgJGNsaWVudF90bXBfa2V5ID0gInNzbC9jbGll bnRfc2NyYW1fdG1wLmtleSI7CiBjb3B5KCJzc2wvY2xpZW50LmtleSIsICRjbGllbnRfdG1wX2tl eSk7CiBjaG1vZCAwNjAwLCAkY2xpZW50X3RtcF9rZXk7CiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCi0J InNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2Vy dD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiIsCisJInNzbGNlcnQ9c3NsL2NsaWVu dC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRy PSRTRVJWRVJIT1NUQUREUiBjZXJ0X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50 LmtleS5kYiIsCiAJImRibmFtZT1jZXJ0ZGIgdXNlcj1zc2x0ZXN0dXNlciBjaGFubmVsX2JpbmRp bmc9cmVxdWlyZSIsCiAJcXIvY2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVkLCBidXQgc2VydmVyIGF1 dGhlbnRpY2F0ZWQgY2xpZW50IHdpdGhvdXQgY2hhbm5lbCBiaW5kaW5nLywKIAkiQ2VydCBhdXRo ZW50aWNhdGlvbiBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKLQogIyBjbGVhbiB1cAog dW5saW5rKCRjbGllbnRfdG1wX2tleSk7Ci0KLWRvbmVfdGVzdGluZygkbnVtYmVyX29mX3Rlc3Rz KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL05TUy5wbSBiL3NyYy90 ZXN0L3NzbC90L1NTTC9CYWNrZW5kL05TUy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi5jNWIzMWU1ODRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3Qv U1NML0JhY2tlbmQvTlNTLnBtCkBAIC0wLDAgKzEsNzMgQEAKK3BhY2thZ2UgU1NMOjpCYWNrZW5k OjpOU1M7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgRXhwb3J0ZXI7CisKK291 ciBASVNBICAgICAgID0gcXcoRXhwb3J0ZXIpOworb3VyIEBFWFBPUlRfT0sgPSBxdyhnZXRfbmV3 X25zc19iYWNrZW5kKTsKKworc3ViIG5ldworeworCW15ICgkY2xhc3MpID0gQF87CisKKwlteSAk c2VsZiA9IHsgX2xpYnJhcnkgPT4gJ05TUycgfTsKKworCWJsZXNzICRzZWxmLCAkY2xhc3M7CisK KwlyZXR1cm4gJHNlbGY7Cit9CisKK3N1YiBnZXRfbmV3X25zc19iYWNrZW5kCit7CisJbXkgJGNs YXNzID0gJ1NTTDo6QmFja2VuZDo6TlNTJzsKKworCXJldHVybiAkY2xhc3MtPm5ldygpOworfQor CitzdWIgaW5pdAoreworCSMgTWFrZSBzdXJlIHRoZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZXMgYXJl IGluIHBsYWNlPworfQorCitzdWIgZ2V0X2xpYnJhcnkKK3sKKwlteSAoJHNlbGYpID0gQF87CisK KwlyZXR1cm4gJHNlbGYtPntfbGlicmFyeX07Cit9CisKK3N1YiBzZXRfc2VydmVyX2NlcnQKK3sK KwlteSAkc2VsZiAgICAgPSAkX1swXTsKKwlteSAkY2VydGZpbGUgPSAkX1sxXTsKKwlteSAkY2Fm aWxlICAgPSAkX1syXTsKKwlteSAka2V5ZmlsZSAgPSAkX1szXTsKKworCW15ICRjZXJ0X25pY2tu YW1lOworCisJaWYgKCRjZXJ0ZmlsZSA9fiAvbmF0aXZlLykKKwl7CisJCSRjZXJ0X25pY2tuYW1l ID0gJGNlcnRmaWxlOworCX0KKwllbHNlCisJeworCQkkY2VydF9uaWNrbmFtZSA9ICRjZXJ0Zmls ZSAuICcuY3J0X18nIC4gJGtleWZpbGUgLiAnLmtleSc7CisJfQorCW15ICRjZXJ0X2RhdGFiYXNl ID0gJGNlcnRfbmlja25hbWUgLiAnLmRiJzsKKworCW15ICRzc2xjb25mID0KKwkgICAgInNzbF9j YV9maWxlPSckY2FmaWxlLmNydCdcbiIKKwkgIC4gInNzbF9jZXJ0X2ZpbGU9J3NzbC8kY2VydGZp bGUuY3J0J1xuIgorCSAgLiAic3NsX2NybF9maWxlPScnXG4iCisJICAuICJzc2xfZGF0YWJhc2U9 J25zcy8kY2VydF9kYXRhYmFzZSdcbiI7CisKKwlyZXR1cm4gJHNzbGNvbmY7Cit9CisKK3N1YiBj bGVhbnVwCit7CisJIyBTb21ldGhpbmc/Cit9CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z c2wvdC9TU0wvQmFja2VuZC9PcGVuU1NMLnBtIGIvc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQv T3BlblNTTC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42MmIxMWI3 NjMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvT3BlblNT TC5wbQpAQCAtMCwwICsxLDEwMyBAQAorcGFja2FnZSBTU0w6OkJhY2tlbmQ6Ok9wZW5TU0w7CisK K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgRXhwb3J0ZXI7Cit1c2UgRmlsZTo6Q29w eTsKKworb3VyIEBJU0EgICAgICAgPSBxdyhFeHBvcnRlcik7CitvdXIgQEVYUE9SVF9PSyA9IHF3 KGdldF9uZXdfb3BlbnNzbF9iYWNrZW5kKTsKKworb3VyIChAa2V5cyk7CisKK0lOSVQKK3sKKwlA a2V5cyA9ICgKKwkJImNsaWVudCIsICAgICAiY2xpZW50LXJldm9rZWQiLAorCQkiY2xpZW50LWRl ciIsICJjbGllbnQtZW5jcnlwdGVkLXBlbSIsCisJCSJjbGllbnQtZW5jcnlwdGVkLWRlciIpOwor fQorCitzdWIgbmV3Cit7CisJbXkgKCRjbGFzcykgPSBAXzsKKworCW15ICRzZWxmID0geyBfbGli cmFyeSA9PiAnT3BlblNTTCcgfTsKKworCWJsZXNzICRzZWxmLCAkY2xhc3M7CisKKwlyZXR1cm4g JHNlbGY7Cit9CisKK3N1YiBnZXRfbmV3X29wZW5zc2xfYmFja2VuZAoreworCW15ICRjbGFzcyA9 ICdTU0w6OkJhY2tlbmQ6Ok9wZW5TU0wnOworCisJbXkgJGJhY2tlbmQgPSAkY2xhc3MtPm5ldygp OworCisJcmV0dXJuICRiYWNrZW5kOworfQorCitzdWIgaW5pdAoreworCSMgVGhlIGNsaWVudCdz IHByaXZhdGUga2V5IG11c3Qgbm90IGJlIHdvcmxkLXJlYWRhYmxlLCBzbyB0YWtlIGEgY29weQor CSMgb2YgdGhlIGtleSBzdG9yZWQgaW4gdGhlIGNvZGUgdHJlZSBhbmQgdXBkYXRlIGl0cyBwZXJt aXNzaW9ucy4KKwkjCisJIyBUaGlzIGNoYW5nZXMgc3NsL2NsaWVudC5rZXkgdG8gc3NsL2NsaWVu dF90bXAua2V5IGV0YyBmb3IgdGhlIHJlc3QKKwkjIG9mIHRoZSB0ZXN0cy4KKwlmb3JlYWNoIG15 ICRrZXkgKEBrZXlzKQorCXsKKwkJY29weSgic3NsLyR7a2V5fS5rZXkiLCAic3NsLyR7a2V5fV90 bXAua2V5IikKKwkJICBvciBkaWUKKwkJICAiY291bGRuJ3QgY29weSBzc2wvJHtrZXl9LmtleSB0 byBzc2wvJHtrZXl9X3RtcC5rZXkgZm9yIHBlcm1pc3Npb25zIGNoYW5nZTogJCEiOworCQljaG1v ZCAwNjAwLCAic3NsLyR7a2V5fV90bXAua2V5IgorCQkgIG9yIGRpZSAiZmFpbGVkIHRvIGNoYW5n ZSBwZXJtaXNzaW9ucyBvbiBzc2wvJHtrZXl9X3RtcC5rZXk6ICQhIjsKKwl9CisKKwkjIEFsc28g bWFrZSBhIGNvcHkgb2YgdGhhdCBleHBsaWNpdGx5IHdvcmxkLXJlYWRhYmxlLiAgV2UgY2FuJ3QK KwkjIG5lY2Vzc2FyaWx5IHJlbHkgb24gdGhlIGZpbGUgaW4gdGhlIHNvdXJjZSB0cmVlIGhhdmlu ZyB0aG9zZQorCSMgcGVybWlzc2lvbnMuIEFkZCBpdCB0byBAa2V5cyB0byBpbmNsdWRlIGl0IGlu IHRoZSBmaW5hbCBjbGVhbgorCSMgdXAgcGhhc2UuCisJY29weSgic3NsL2NsaWVudC5rZXkiLCAi c3NsL2NsaWVudF93cm9uZ3Blcm1zX3RtcC5rZXkiKQorCSAgb3IgZGllCisJICAiY291bGRuJ3Qg Y29weSBzc2wvY2xpZW50LmtleSB0byBzc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleTogJCEi OworCWNobW9kIDA2NDQsICJzc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSIKKwkgIG9yIGRp ZQorCSAgImZhaWxlZCB0byBjaGFuZ2UgcGVybWlzc2lvbnMgb24gc3NsL2NsaWVudF93cm9uZ3Bl cm1zX3RtcC5rZXk6ICQhIjsKKwlwdXNoIEBrZXlzLCAnY2xpZW50X3dyb25ncGVybXMnOworfQor CisjIENoYW5nZSB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UgZ2l2ZW4gc2VydmVyIGNlcnQgZmls ZSwgYW5kIHJlbG9hZAorIyB0aGUgc2VydmVyIHNvIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdGFr ZXMgZWZmZWN0Lgorc3ViIHNldF9zZXJ2ZXJfY2VydAoreworCW15ICRzZWxmICAgICA9ICRfWzBd OworCW15ICRjZXJ0ZmlsZSA9ICRfWzFdOworCW15ICRjYWZpbGUgICA9ICRfWzJdIHx8ICJyb290 K2NsaWVudF9jYSI7CisJbXkgJGtleWZpbGUgID0gJF9bM10gfHwgJGNlcnRmaWxlOworCisJbXkg JHNzbGNvbmYgPQorCSAgICAic3NsX2NhX2ZpbGU9JyRjYWZpbGUuY3J0J1xuIgorCSAgLiAic3Ns X2NlcnRfZmlsZT0nJGNlcnRmaWxlLmNydCdcbiIKKwkgIC4gInNzbF9rZXlfZmlsZT0nJGtleWZp bGUua2V5J1xuIgorCSAgLiAic3NsX2NybF9maWxlPSdyb290K2NsaWVudC5jcmwnXG4iOworCisJ cmV0dXJuICRzc2xjb25mOworfQorCitzdWIgZ2V0X2xpYnJhcnkKK3sKKwlteSAoJHNlbGYpID0g QF87CisKKwlyZXR1cm4gJHNlbGYtPntfbGlicmFyeX07Cit9CisKK3N1YiBjbGVhbnVwCit7CisJ Zm9yZWFjaCBteSAka2V5IChAa2V5cykKKwl7CisJCXVubGluaygic3NsLyR7a2V5fV90bXAua2V5 Iik7CisJfQorfQorCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3QvU1NMU2VydmVyLnBt IGIvc3JjL3Rlc3Qvc3NsL3QvU1NML1NlcnZlci5wbQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5h bWUgZnJvbSBzcmMvdGVzdC9zc2wvdC9TU0xTZXJ2ZXIucG0KcmVuYW1lIHRvIHNyYy90ZXN0L3Nz bC90L1NTTC9TZXJ2ZXIucG0KaW5kZXggZjU5ODdhMDAzZS4uZWU5MDE4NTViNSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3NsL3QvU1NMU2VydmVyLnBtCisrKyBiL3NyYy90ZXN0L3NzbC90L1NTTC9T ZXJ2ZXIucG0KQEAgLTIzLDE5ICsyMywzOSBAQAogIyBleHBsaWNpdGx5IGJlY2F1c2UgYW4gaW52 YWxpZCBzc2xjZXJ0IG9yIHNzbHJvb3RjZXJ0LCByZXNwZWN0aXZlbHksCiAjIGNhdXNlcyB0aG9z ZSB0byBiZSBpZ25vcmVkLikKIAotcGFja2FnZSBTU0xTZXJ2ZXI7CitwYWNrYWdlIFNTTDo6U2Vy dmVyOwogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNlIFBvc3RncmVzTm9kZTsKK3Vz ZSBSZWN1cnNpdmVDb3B5OwogdXNlIFRlc3RMaWI7CiB1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2Ug RmlsZTo6Q29weTsKIHVzZSBUZXN0OjpNb3JlOwordXNlIFNTTDo6QmFja2VuZDo6T3BlblNTTCBx dyhnZXRfbmV3X29wZW5zc2xfYmFja2VuZCk7Cit1c2UgU1NMOjpCYWNrZW5kOjpOU1MgcXcoZ2V0 X25ld19uc3NfYmFja2VuZCk7CisKK291ciAoJG9wZW5zc2wsICRuc3MsICRiYWNrZW5kKTsKKwor IyBUaGUgVExTIGJhY2tlbmQgd2hpY2ggdGhlIHNlcnZlciBpcyB1c2luZyBzaG91bGQgYmUgbW9z dGx5IHRyYW5zcGFyZW50IGZvcgorIyB0aGUgdXNlciwgYXBhcnQgZnJvbSBpbmRpdmlkdWFsIGNv bmZpZ3VyYXRpb24gc2V0dGluZ3MsIHNvIGtlZXAgdGhlIGJhY2tlbmQKKyMgc3BlY2lmaWMgdGhp bmdzIGFic3RyYWN0ZWQgYmVoaW5kIFNTTDo6U2VydmVyLgoraWYgKCRFTlZ7d2l0aF9zc2x9IGVx ICdvcGVuc3NsJykKK3sKKwkkYmFja2VuZCA9IGdldF9uZXdfb3BlbnNzbF9iYWNrZW5kKCk7CisJ JG9wZW5zc2wgPSAxOworfQorZWxzaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICduc3MnKQoreworCSRi YWNrZW5kID0gZ2V0X25ld19uc3NfYmFja2VuZCgpOworCSRuc3MgICAgID0gMTsKK30KIAogdXNl IEV4cG9ydGVyICdpbXBvcnQnOwogb3VyIEBFWFBPUlQgPSBxdygKICAgY29uZmlndXJlX3Rlc3Rf c2VydmVyX2Zvcl9zc2wKKyAgc2V0X3NlcnZlcl9jZXJ0CiAgIHN3aXRjaF9zZXJ2ZXJfY2VydAog ICB0ZXN0X2Nvbm5lY3RfZmFpbHMKICAgdGVzdF9jb25uZWN0X29rCkBAIC0xNDQsMTIgKzE2NCwx OSBAQCBzdWIgY29uZmlndXJlX3Rlc3Rfc2VydmVyX2Zvcl9zc2wKIAljbG9zZSAkc3NsY29uZjsK IAogCSMgQ29weSBhbGwgc2VydmVyIGNlcnRpZmljYXRlcyBhbmQga2V5cywgYW5kIGNsaWVudCBy b290IGNlcnQsIHRvIHRoZSBkYXRhIGRpcgotCWNvcHlfZmlsZXMoInNzbC9zZXJ2ZXItKi5jcnQi LCAkcGdkYXRhKTsKLQljb3B5X2ZpbGVzKCJzc2wvc2VydmVyLSoua2V5IiwgJHBnZGF0YSk7Ci0J Y2htb2QoMDYwMCwgZ2xvYiAiJHBnZGF0YS9zZXJ2ZXItKi5rZXkiKSBvciBkaWUgJCE7Ci0JY29w eV9maWxlcygic3NsL3Jvb3QrY2xpZW50X2NhLmNydCIsICRwZ2RhdGEpOwotCWNvcHlfZmlsZXMo InNzbC9yb290X2NhLmNydCIsICAgICAgICAkcGdkYXRhKTsKLQljb3B5X2ZpbGVzKCJzc2wvcm9v dCtjbGllbnQuY3JsIiwgICAgJHBnZGF0YSk7CisJaWYgKGRlZmluZWQoJG9wZW5zc2wpKQorCXsK KwkJY29weV9maWxlcygic3NsL3NlcnZlci0qLmNydCIsICRwZ2RhdGEpOworCQljb3B5X2ZpbGVz KCJzc2wvc2VydmVyLSoua2V5IiwgJHBnZGF0YSk7CisJCWNobW9kKDA2MDAsIGdsb2IgIiRwZ2Rh dGEvc2VydmVyLSoua2V5Iikgb3IgZGllICQhOworCQljb3B5X2ZpbGVzKCJzc2wvcm9vdCtjbGll bnRfY2EuY3J0IiwgJHBnZGF0YSk7CisJCWNvcHlfZmlsZXMoInNzbC9yb290X2NhLmNydCIsICAg ICAgICAkcGdkYXRhKTsKKwkJY29weV9maWxlcygic3NsL3Jvb3QrY2xpZW50LmNybCIsICAgICRw Z2RhdGEpOworCX0KKwllbHNpZiAoZGVmaW5lZCgkbnNzKSkKKwl7CisJCVJlY3Vyc2l2ZUNvcHk6 OmNvcHlwYXRoKCJzc2wvbnNzIiwgJHBnZGF0YSAuICIvbnNzIikgaWYgLWUgInNzbC9uc3MiOwor CX0KIAogCSMgU3RvcCBhbmQgcmVzdGFydCBzZXJ2ZXIgdG8gbG9hZCBuZXcgbGlzdGVuX2FkZHJl c3Nlcy4KIAkkbm9kZS0+cmVzdGFydDsKQEAgLTE1NywyNiArMTg0LDUxIEBAIHN1YiBjb25maWd1 cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbAogCSMgQ2hhbmdlIHBnX2hiYSBhZnRlciByZXN0YXJ0IGJl Y2F1c2UgaG9zdHNzbCByZXF1aXJlcyBzc2w9b24KIAljb25maWd1cmVfaGJhX2Zvcl9zc2woJG5v ZGUsICRzZXJ2ZXJjaWRyLCAkYXV0aG1ldGhvZCk7CiAKKwkjIEZpbmFsbHksIHBlcmZvcm0gYmFj a2VuZCBzcGVjaWZpYyBjb25maWd1cmF0aW9uCisJJGJhY2tlbmQtPmluaXQoKTsKKwogCXJldHVy bjsKIH0KIAotIyBDaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGdpdmVuIHNlcnZlciBj ZXJ0IGZpbGUsIGFuZCByZWxvYWQKLSMgdGhlIHNlcnZlciBzbyB0aGF0IHRoZSBjb25maWd1cmF0 aW9uIHRha2VzIGVmZmVjdC4KLXN1YiBzd2l0Y2hfc2VydmVyX2NlcnQKK3N1YiBzc2xfbGlicmFy eQoreworCXJldHVybiAkYmFja2VuZC0+Z2V0X2xpYnJhcnkoKTsKK30KKworc3ViIGNsZWFudXAK K3sKKwkkYmFja2VuZC0+Y2xlYW51cCgpOworfQorCisjIENoYW5nZSB0aGUgY29uZmlndXJhdGlv biB0byB1c2UgZ2l2ZW4gc2VydmVyIGNlcnQgZmlsZSwKK3N1YiBzZXRfc2VydmVyX2NlcnQKIHsK IAlteSAkbm9kZSAgICAgPSAkX1swXTsKIAlteSAkY2VydGZpbGUgPSAkX1sxXTsKIAlteSAkY2Fm aWxlICAgPSAkX1syXSB8fCAicm9vdCtjbGllbnRfY2EiOworCW15ICRrZXlmaWxlICA9ICRfWzNd IHx8ICcnOworCW15ICRwd2NtZCAgICA9ICRfWzRdIHx8ICcnOwogCW15ICRwZ2RhdGEgICA9ICRu b2RlLT5kYXRhX2RpcjsKIAorCSRrZXlmaWxlID0gJGNlcnRmaWxlIGlmICRrZXlmaWxlIGVxICcn OworCiAJb3BlbiBteSAkc3NsY29uZiwgJz4nLCAiJHBnZGF0YS9zc2xjb25maWcuY29uZiI7CiAJ cHJpbnQgJHNzbGNvbmYgInNzbD1vblxuIjsKLQlwcmludCAkc3NsY29uZiAic3NsX2NhX2ZpbGU9 JyRjYWZpbGUuY3J0J1xuIjsKLQlwcmludCAkc3NsY29uZiAic3NsX2NlcnRfZmlsZT0nJGNlcnRm aWxlLmNydCdcbiI7Ci0JcHJpbnQgJHNzbGNvbmYgInNzbF9rZXlfZmlsZT0nJGNlcnRmaWxlLmtl eSdcbiI7Ci0JcHJpbnQgJHNzbGNvbmYgInNzbF9jcmxfZmlsZT0ncm9vdCtjbGllbnQuY3JsJ1xu IjsKKwlwcmludCAkc3NsY29uZiAkYmFja2VuZC0+c2V0X3NlcnZlcl9jZXJ0KCRjZXJ0ZmlsZSwg JGNhZmlsZSwgJGtleWZpbGUpOworCXByaW50ICRzc2xjb25mICJzc2xfcGFzc3BocmFzZV9jb21t YW5kPSckcHdjbWQnXG4iCisJICB1bmxlc3MgJHB3Y21kIGVxICcnOwogCWNsb3NlICRzc2xjb25m OworCXJldHVybjsKK30KIAorIyBDaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGdpdmVu IHNlcnZlciBjZXJ0IGZpbGUsIGFuZCByZWxvYWQKKyMgdGhlIHNlcnZlciBzbyB0aGF0IHRoZSBj b25maWd1cmF0aW9uIHRha2VzIGVmZmVjdC4KKyMgVGFrZXMgdGhlIHNhbWUgYXJndW1lbnRzIGFz IHNldF9zZXJ2ZXJfY2VydCwgd2hpY2ggaXQgY2FsbHMgdG8gZG8gdGhhdAorIyBwaWVjZSBvZiB0 aGUgd29yay4KK3N1YiBzd2l0Y2hfc2VydmVyX2NlcnQKK3sKKwlteSAkbm9kZSA9ICRfWzBdOwor CXNldF9zZXJ2ZXJfY2VydChAXyk7CiAJJG5vZGUtPnJlc3RhcnQ7CiAJcmV0dXJuOwogfQotLSAK Mi4yNS4xCgo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0003-NSS-pg_strong_random-support.patch" Content-Description: v25-0003-NSS-pg_strong_random-support.patch Content-Disposition: attachment; filename="v25-0003-NSS-pg_strong_random-support.patch"; size=3176; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <20FEA26CDC934945965680104C43DCE3@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA2MWViZmNmMWFiNzdhM2UxYjczMDYwMWE4ZmE0MTgzNTNkYzQzMmFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjI0OjAyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg My82XSBOU1MgcGdfc3Ryb25nX3JhbmRvbSBzdXBwb3J0CgotLS0KIGNvbmZpZ3VyZSAgICAgICAg ICAgICAgICAgICB8ICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8ICAxICsKIHNy Yy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICB8ICAzICsrKwogc3JjL3BvcnQvcGdfc3Ryb25nX3Jh bmRvbS5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNCBmaWxl cyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv Y29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDE0MzcyNmM3OWMuLjJiODM5MTQyODkgMTAwNzU1 Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE4NDIyLDYgKzE4NDIyLDcgQEAg JGFzX2VjaG8gIk5TUyIgPiY2OyB9CiBlbGlmIHRlc3QgeCIkUE9SVE5BTUUiID0geCJ3aW4zMiIg OyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBXaW5kb3dzIG5hdGl2ZSIgPiY1CiAkYXNfZWNobyAiV2luZG93cyBuYXRpdmUiID4mNjsgfQor CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAvZGV2L3VyYW5kb20iID4mNQogJGFzX2VjaG8gIi9kZXYvdXJhbmRvbSIgPiY2OyB9CmRpZmYg LS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNTk2NTdhNjAxMC4uNjUz M2UxMGZmZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt MjE5Nyw2ICsyMTk3LDcgQEAgZWxpZiB0ZXN0IHgiJHdpdGhfc3NsIiA9IHgibnNzIiA7IHRoZW4K ICAgQUNfTVNHX1JFU1VMVChbTlNTXSkKIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMy IiA7IHRoZW4KICAgQUNfTVNHX1JFU1VMVChbV2luZG93cyBuYXRpdmVdKQorCiBlbHNlCiAgIEFD X01TR19SRVNVTFQoWy9kZXYvdXJhbmRvbV0pCiAgIEFDX0NIRUNLX0ZJTEUoWy9kZXYvdXJhbmRv bV0sIFtdLCBbXSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluIGIvc3Jj L2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggODg1NmEzMzU5MC4uZmE1YTk3NzYxNyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdf Y29uZmlnLmguaW4KQEAgLTkwOCw2ICs5MDgsOSBAQAogLyogRGVmaW5lIHRvIGJ1aWxkIHdpdGgg TlNTIHN1cHBvcnQgKC0td2l0aC1zc2w9bnNzKSAqLwogI3VuZGVmIFVTRV9OU1MKIAorLyogRGVm aW5lIHRvIHVzZSBOU1MgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiAqLworI3VuZGVmIFVT RV9OU1NfUkFORE9NCisKIC8qIERlZmluZSB0byAxIHRvIHVzZSBzb2Z0d2FyZSBDUkMtMzJDIGlt cGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLiAqLwogI3VuZGVmIFVTRV9TTElDSU5HX0JZXzhf Q1JDMzJDCiAKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3N0cm9uZ19yYW5kb20uYyBiL3NyYy9w b3J0L3BnX3N0cm9uZ19yYW5kb20uYwppbmRleCAwN2YyNGMwMDg5Li40MGRlMjM3NjI4IDEwMDY0 NAotLS0gYS9zcmMvcG9ydC9wZ19zdHJvbmdfcmFuZG9tLmMKKysrIGIvc3JjL3BvcnQvcGdfc3Ry b25nX3JhbmRvbS5jCkBAIC0xMzcsNyArMTM3LDU1IEBAIHBnX3N0cm9uZ19yYW5kb20odm9pZCAq YnVmLCBzaXplX3QgbGVuKQogCXJldHVybiBmYWxzZTsKIH0KIAotI2Vsc2UJCQkJCQkJLyogbm90 IFVTRV9PUEVOU1NMIG9yIFdJTjMyICovCisjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisKKyNkZWZp bmUgcGdfQklUU19QRVJfQllURSBCSVRTX1BFUl9CWVRFCisjdW5kZWYgQklUU19QRVJfQllURQor I2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3MvbnNzLmg+CisjaW5jbHVk ZSA8bnNzL3BrMTFwdWIuaD4KKyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZVEUpCisjaWYgQklUU19Q RVJfQllURSAhPSBwZ19CSVRTX1BFUl9CWVRFCisjZXJyb3IgImluY29tcGF0aWJsZSBieXRlIHdp ZHRocyBiZXR3ZWVuIE5TUFIgYW5kIHBvc3RncmVzIgorI2VuZGlmCisjZWxzZQorI2RlZmluZSBC SVRTX1BFUl9CWVRFIHBnX0JJVFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBnX0JJVFNfUEVS X0JZVEUKKwordm9pZAorcGdfc3Ryb25nX3JhbmRvbV9pbml0KHZvaWQpCit7CisJLyogTm8gaW5p dGlhbGl6YXRpb24gbmVlZGVkIG9uIE5TUyAqLworfQorCitib29sCitwZ19zdHJvbmdfcmFuZG9t KHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlOU1NJbml0UGFyYW1ldGVycyBwYXJhbXM7CisJ TlNTSW5pdENvbnRleHQgKm5zc19jb250ZXh0OworCVNFQ1N0YXR1cwlzdGF0dXM7CisKKwltZW1z ZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5sZW5ndGggPSBzaXplb2Yo cGFyYW1zKTsKKwluc3NfY29udGV4dCA9IE5TU19Jbml0Q29udGV4dCgiIiwgIiIsICIiLCAiIiwg JnBhcmFtcywKKwkJCQkJCQkJICBOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklUX05PQ0VSVERC IHwKKwkJCQkJCQkJICBOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VPUEVOIHwKKwkJ CQkJCQkJICBOU1NfSU5JVF9OT1JPT1RJTklUIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisKKwlp ZiAoIW5zc19jb250ZXh0KQorCQlyZXR1cm4gZmFsc2U7CisKKwlzdGF0dXMgPSBQSzExX0dlbmVy YXRlUmFuZG9tKGJ1ZiwgbGVuKTsKKwlOU1NfU2h1dGRvd25Db250ZXh0KG5zc19jb250ZXh0KTsK KworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4g ZmFsc2U7Cit9CisKKyNlbHNlCQkJCQkJCS8qIG5vdCBVU0VfT1BFTlNTTCwgVVNFX05TUyBvciBX SU4zMiAqLwogCiAvKgogICogV2l0aG91dCBPcGVuU1NMIG9yIFdpbjMyIHN1cHBvcnQsIGp1c3Qg cmVhZCAvZGV2L3VyYW5kb20gb3Vyc2VsdmVzLgotLSAKMi4yNS4xCgo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0004-NSS-Documentation.patch" Content-Description: v25-0004-NSS-Documentation.patch Content-Disposition: attachment; filename="v25-0004-NSS-Documentation.patch"; size=20253; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <4138BE7929A03F4CA9190FFDF9DC0A88@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA2YzIzYzcyMTMyNDE5ZWQ4ODA3OTMzODNlM2VmYmYyOTRhYjRlMjE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjI2OjMxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg NC82XSBOU1MgRG9jdW1lbnRhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbCAg ICAgfCAgNDMgKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgfCAg MjggKysrKysrKy0KIGRvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbCB8ICAzMSArKysrKyst LS0KIGRvYy9zcmMvc2dtbC9saWJwcS5zZ21sICAgICAgICB8ICA5OSArKysrKysrKysrKysrKysr KysrKysrKysrLQogZG9jL3NyYy9zZ21sL3J1bnRpbWUuc2dtbCAgICAgIHwgMTIzICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogNSBmaWxlcyBjaGFuZ2VkLCAzMDUgaW5zZXJ0aW9u cygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Fjcm9ueW1z LnNnbWwgYi9kb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbAppbmRleCA0ZTVlYzk4M2MwLi43YjAy YzhhNjIyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvYWNyb255bXMuc2dtbApAQCAtNDQxLDYgKzQ0MSwyOCBAQAogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 YWNyb255bT5OU1BSPC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgPHVsaW5rCisgICAgICB1cmw9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3Jn L2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1BSIj4KKyAgICAgIE5ldHNjYXBlIFBvcnRh YmxlIFJ1bnRpbWU8L3VsaW5rPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxhY3JvbnltPk5T UzwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDx1 bGluaworICAgICAgdXJsPSJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2Nz L01vemlsbGEvUHJvamVjdHMvTlNTIj4KKyAgICAgIE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXM8 L3VsaW5rPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxhY3JvbnltPk9EQkM8L2Fjcm9ueW0+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTUzOSw2ICs1NjEsMTcgQEAKICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGFjcm9ueW0+UEtDUyMxMjwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIDx1bGluaworICAgICAgdXJsPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcv d2lraS9QS0NTXzEyIj4KKyAgICAgIFB1YmxpYy1LZXkgQ3J5cHRvZ3JhcGh5IFN0YW5kYXJkcyAj MTI8L3VsaW5rPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxhY3JvbnltPlBMPC9hY3Jvbnlt PjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC02ODQsNiArNzE3LDE2IEBACiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxhY3JvbnltPlRMUzwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RyYW5z cG9ydF9MYXllcl9TZWN1cml0eSI+CisgICAgICBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHk8L3Vs aW5rPgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxhY3JvbnltPlRPQVNUPC9hY3JvbnltPjwv dGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZTE3Y2RjYzgxNi4uYjMzY2ZmYjM3 MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbApAQCAtMTIzOCw2ICsxMjM4LDIzIEBAIGluY2x1ZGVfZGlyICdjb25mLmQn CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlz dGVudHJ5IGlkPSJndWMtc3NsLWRhdGFiYXNlIiB4cmVmbGFiZWw9InNzbF9kYXRhYmFzZSI+Cisg ICAgICA8dGVybT48dmFybmFtZT5zc2xfZGF0YWJhc2U8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8 L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5zc2xf ZGF0YWJhc2U8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAg ICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5n IHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGVzIGFuZAorICAgICAgICBrZXlzIHdoZW4gdXNpbmcgPHBy b2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+IGZvciA8YWNyb255bT5TU0w8L2Fjcm9ueW0+Cisg ICAgICAgIGNvbm5lY3Rpb25zLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhl CisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9u IHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAg IDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkg aWQ9Imd1Yy1zc2wtY2lwaGVycyIgeHJlZmxhYmVsPSJzc2xfY2lwaGVycyI+CiAgICAgICA8dGVy bT48dmFybmFtZT5zc2xfY2lwaGVyczwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwvdHlwZT4pCiAg ICAgICA8aW5kZXh0ZXJtPgpAQCAtMTI1NCw3ICsxMjcxLDkgQEAgaW5jbHVkZV9kaXIgJ2NvbmYu ZCcKICAgICAgICAgY29ubmVjdGlvbnMgdXNpbmcgVExTIHZlcnNpb24gMS4yIGFuZCBsb3dlciBh cmUgYWZmZWN0ZWQuICBUaGVyZSBpcwogICAgICAgICBjdXJyZW50bHkgbm8gc2V0dGluZyB0aGF0 IGNvbnRyb2xzIHRoZSBjaXBoZXIgY2hvaWNlcyB1c2VkIGJ5IFRMUwogICAgICAgICB2ZXJzaW9u IDEuMyBjb25uZWN0aW9ucy4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCi0gICAgICAgIDxsaXRlcmFs PkhJR0g6TUVESVVNOiszREVTOiFhTlVMTDwvbGl0ZXJhbD4uICBUaGUgZGVmYXVsdCBpcyB1c3Vh bGx5IGEKKyAgICAgICAgPGxpdGVyYWw+SElHSDpNRURJVU06KzNERVM6IWFOVUxMPC9saXRlcmFs PiBmb3Igc2VydmVycyB3aGljaCBoYXZlCisgICAgICAgIGJlZW4gYnVpbHQgd2l0aCA8cHJvZHVj dG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGFzIHRoZQorICAgICAgICA8YWNyb255bT5TU0w8 L2Fjcm9ueW0+IGxpYnJhcnkuICBUaGUgZGVmYXVsdCBpcyB1c3VhbGx5IGEKICAgICAgICAgcmVh c29uYWJsZSBjaG9pY2UgdW5sZXNzIHlvdSBoYXZlIHNwZWNpZmljIHNlY3VyaXR5IHJlcXVpcmVt ZW50cy4KICAgICAgICA8L3BhcmE+CiAKQEAgLTE0NTYsOCArMTQ3NSwxMSBAQCBpbmNsdWRlX2Rp ciAnY29uZi5kJwogICAgICAgIDxwYXJhPgogICAgICAgICBTZXRzIGFuIGV4dGVybmFsIGNvbW1h bmQgdG8gYmUgaW52b2tlZCB3aGVuIGEgcGFzc3BocmFzZSBmb3IKICAgICAgICAgZGVjcnlwdGlu ZyBhbiBTU0wgZmlsZSBzdWNoIGFzIGEgcHJpdmF0ZSBrZXkgbmVlZHMgdG8gYmUgb2J0YWluZWQu ICBCeQotICAgICAgICBkZWZhdWx0LCB0aGlzIHBhcmFtZXRlciBpcyBlbXB0eSwgd2hpY2ggbWVh bnMgdGhlIGJ1aWx0LWluIHByb21wdGluZwotICAgICAgICBtZWNoYW5pc20gaXMgdXNlZC4KKyAg ICAgICAgZGVmYXVsdCwgdGhpcyBwYXJhbWV0ZXIgaXMgZW1wdHkuIFdoZW4gdGhlIHNlcnZlciBp cyB1c2luZworICAgICAgICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+LCB0aGlz IG1lYW5zIHRoZSBidWlsdC1pbiBwcm9tcHRpbmcKKyAgICAgICAgbWVjaGFuaXNtIGlzIHVzZWQu IFdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+LCB0aGVyZSBpcworICAg ICAgICBubyBkZWZhdWx0IHByb21wdGluZyBzbyBhIGJsYW5rIGNhbGxiYWNrIHdpbGwgYmUgdXNl ZCByZXR1cm5pbmcgYW4KKyAgICAgICAgZW1wdHkgcGFzc3dvcmQuCiAgICAgICAgPC9wYXJhPgog ICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgY29tbWFuZCBtdXN0IHByaW50IHRoZSBwYXNzcGhy YXNlIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9pbnN0YWxsYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbApp bmRleCA2NmFkNGJhOTM4Li4xYjcxODgxYzZlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvaW5z dGFsbGF0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCkBAIC05 NzYsMTUgKzk3NiwzMCBAQCBidWlsZC1wb3N0Z3Jlc3FsOgogICAgICAgIDxsaXN0aXRlbT4KICAg ICAgICAgPHBhcmE+CiAgICAgICAgICBCdWlsZCB3aXRoIHN1cHBvcnQgZm9yIDxhY3JvbnltPlNT TDwvYWNyb255bT4gKGVuY3J5cHRlZCkKLSAgICAgICAgIGNvbm5lY3Rpb25zLiBUaGUgb25seSA8 cmVwbGFjZWFibGU+TElCUkFSWTwvcmVwbGFjZWFibGU+Ci0gICAgICAgICBzdXBwb3J0ZWQgaXMg PG9wdGlvbj5vcGVuc3NsPC9vcHRpb24+LiBUaGlzIHJlcXVpcmVzIHRoZQotICAgICAgICAgPHBy b2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBwYWNrYWdlIHRvIGJlIGluc3RhbGxlZC4K LSAgICAgICAgIDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiB3aWxsIGNoZWNrIGZvciB0 aGUgcmVxdWlyZWQKLSAgICAgICAgIGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzIHRvIG1ha2Ug c3VyZSB0aGF0IHlvdXIKLSAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFt ZT4gaW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQKLSAgICAgICAgIGJlZm9yZSBwcm9jZWVkaW5n LiAKKyAgICAgICAgIGNvbm5lY3Rpb25zLiA8cmVwbGFjZWFibGU+TElCUkFSWTwvcmVwbGFjZWFi bGU+IG11c3QgYmUgb25lIG9mOgogICAgICAgICA8L3BhcmE+Ci0gICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICAgPG9wdGlvbj5vcGVuc3NsPC9vcHRpb24+IHRvIGJ1aWxkIHdpdGgg PHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0LgorICAgICAgICAgICAg VGhpcyByZXF1aXJlcyB0aGUgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPgorICAg ICAgICAgICAgcGFja2FnZSB0byBiZSBpbnN0YWxsZWQuICA8ZmlsZW5hbWU+Y29uZmlndXJlPC9m aWxlbmFtZT4gd2lsbCBjaGVjaworICAgICAgICAgICAgZm9yIHRoZSByZXF1aXJlZCBoZWFkZXIg ZmlsZXMgYW5kIGxpYnJhcmllcyB0byBtYWtlIHN1cmUgdGhhdAorICAgICAgICAgICAgeW91ciA8 cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGluc3RhbGxhdGlvbiBpcyBzdWZmaWNp ZW50CisgICAgICAgICAgICBiZWZvcmUgcHJvY2VlZGluZy4KKyAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICA8b3B0aW9uPm5zczwvb3B0aW9uPiB0byBidWlsZCB3aXRoIDxwcm9kdWN0 bmFtZT5saWJuc3M8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0LgorICAgICAgICAgICAgVGhpcyByZXF1 aXJlcyB0aGUgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+IHBhY2thZ2UgdG8gYmUgaW5z dGFsbGVkLiBBZGRpdGlvbmFsbHksCisgICAgICAgICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9k dWN0bmFtZT4gcmVxdWlyZXMgPHByb2R1Y3RuYW1lPk5TUFI8L3Byb2R1Y3RuYW1lPgorICAgICAg ICAgICAgdG8gYmUgaW5zdGFsbGVkLiA8ZmlsZW5hbWU+Y29uZmlndXJlPC9maWxlbmFtZT4gd2ls bCBjaGVjayBmb3IgdGhlCisgICAgICAgICAgICByZXF1aXJlZCBoZWFkZXIgZmlsZXMgYW5kIGxp YnJhcmllcyB0byBtYWtlIHN1cmUgdGhhdCB5b3VyCisgICAgICAgICAgICA8cHJvZHVjdG5hbWU+ TlNTPC9wcm9kdWN0bmFtZT4gaW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQgYmVmb3JlCisgICAg ICAgICAgICBwcm9jZWVkaW5nLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgPHZhcmxpc3RlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwK aW5kZXggYjdhODI0NTNmMC4uODk3OTZkZTE2OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xp YnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKQEAgLTgzMCw2ICs4MzAsMTIg QEAgaW50IGNhbGxiYWNrX2ZuKGNoYXIgKmJ1ZiwgaW50IHNpemUsIFBHY29ubiAqY29ubik7CiAg ICAgICAgPGZ1bmN0aW9uPmxvbmdqbXAoLi4uKTwvZnVuY3Rpb24+LCBldGMuIEl0IG11c3QgcmV0 dXJuIG5vcm1hbGx5LgogICAgICAgPC9wYXJhPgogCisgICAgICA8cGFyYT4KKyAgICAgICAgPGZ1 bmN0aW9uPlBRc2V0U1NMS2V5UGFzc0hvb2tfT3BlblNTTDwvZnVuY3Rpb24+IGlzIG9ubHkgYXZh aWxhYmxlCisgICAgICAgIHdoZW4gdGhlIHNlcnZlciB3YXMgY29tcGlsZWQgd2l0aCA8cHJvZHVj dG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+CisgICAgICAgIHN1cHBvcnQuCisgICAgICA8L3Bh cmE+CisKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtODQ2LDYg Kzg1Miw3MiBAQCBQUXNzbEtleVBhc3NIb29rX09wZW5TU0xfdHlwZSBQUWdldFNTTEtleVBhc3NI b29rX09wZW5TU0wodm9pZCk7CiA8L3N5bm9wc2lzPgogICAgICAgPC9wYXJhPgogCisgICAgICA8 cGFyYT4KKyAgICAgICAgPGZ1bmN0aW9uPlBRZ2V0U1NMS2V5UGFzc0hvb2tfT3BlblNTTDwvZnVu Y3Rpb24+IGlzIG9ubHkgYXZhaWxhYmxlCisgICAgICAgIHdoZW4gdGhlIHNlcnZlciB3YXMgY29t cGlsZWQgd2l0aCA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+CisgICAgICAgIHN1 cHBvcnQuCisgICAgICA8L3BhcmE+CisKKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLXBxc2V0c3Nsa2V5cGFzc2hvb2st bnNzIj4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRc2V0U1NMS2V5UGFzc0hvb2tfbnNzPC9mdW5j dGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRc2V0U1NMS2V5UGFzc0hvb2tfbnNzPC9wcmltYXJ5 PjwvaW5kZXh0ZXJtPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAg ICAgPGZ1bmN0aW9uPlBRc2V0U1NMS2V5UGFzc0hvb2tfbnNzPC9mdW5jdGlvbj4gbGV0cyBhbiBh cHBsaWNhdGlvbiBvdmVycmlkZQorICAgICAgIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRp b24+J3MgZGVmYXVsdCBoYW5kbGluZyBvZiBwYXNzd29yZCBwcm90ZWN0ZWQKKyAgICAgICBvYmpl Y3RzIGluIHRoZSA8YXBwbGljYXRpb24+TlNTPC9hcHBsaWNhdGlvbj4gZGF0YWJhc2UgdXNpbmcK KyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uZWN0LXNzbHBhc3N3b3JkIi8+IG9yIGlu dGVyYWN0aXZlIHByb21wdGluZy4KKworPHN5bm9wc2lzPgordm9pZCBQUXNldFNTTEtleVBhc3NI b29rX25zcyhQUXNzbEtleVBhc3NIb29rX25zc190eXBlIGhvb2spOworPC9zeW5vcHNpcz4KKwor ICAgICAgIFRoZSBhcHBsaWNhdGlvbiBwYXNzZXMgYSBwb2ludGVyIHRvIGEgY2FsbGJhY2sgZnVu Y3Rpb24gd2l0aCBzaWduYXR1cmU6Cis8cHJvZ3JhbWxpc3Rpbmc+CitjaGFyICpjYWxsYmFja19m bihQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgICAgd2hpY2ggPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlvbj4g d2lsbCBjYWxsCisgICAgICAgPGVtcGhhc2lzPmluc3RlYWQgb2Y8L2VtcGhhc2lzPiBpdHMgZGVm YXVsdAorICAgICAgIDxmdW5jdGlvbj5QUWRlZmF1bHRTU0xLZXlQYXNzSG9va19uc3M8L2Z1bmN0 aW9uPiBwYXNzd29yZCBoYW5kbGVyLiBUaGUKKyAgICAgICBjYWxsYmFjayBzaG91bGQgZGV0ZXJt aW5lIHRoZSBwYXNzd29yZCBmb3IgdGhlIHRva2VuIGFuZCByZXR1cm4gYQorICAgICAgIHBvaW50 ZXIgdG8gaXQuIFRoZSByZXR1cm5lZCBwb2ludGVyIHNob3VsZCBiZSBhbGxvY2F0ZWQgd2l0aCB0 aGUgTlNTCisgICAgICAgPGZ1bmN0aW9uPlBPUlRfU3RyZHVwPC9mdW5jdGlvbj4gZnVuY3Rpb24u IFRoZSB0b2tlbiBmb3Igd2hpY2ggdGhlCisgICAgICAgcGFzc3dvcmQgaXMgcmVxdWVzdGVkIGlz IHJlY29yZGVkIGluIHRoZSBzbG90IGFuYyBjYW4gYmUgaWRlbnRpZmllZCBieQorICAgICAgIGNh bGxpbmcgPGZ1bmN0aW9uPlBLMTFfR2V0VG9rZW5OYW1lPC9mdW5jdGlvbj4uIElmIG5vIHBhc3N3 b3JkIGlzCisgICAgICAga25vd24sIHRoZSBjYWxsYmFjayBzaG91bGQgcmV0dXJuIDxsaXRlcmFs Pk5VTEw8L2xpdGVyYWw+LiBUaGUgbWVtb3J5CisgICAgICAgd2lsbCBiZSBvd25lZCBieSA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gYW5kIHNob3VsZCBub3QgYmUKKyAgICAgICBmcmVl ZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5QUXNl dFNTTEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+IGlzIG9ubHkgYXZhaWxhYmxlCisgICAgICAg IHdoZW4gdGhlIHNlcnZlciB3YXMgY29tcGlsZWQgd2l0aCA8cHJvZHVjdG5hbWU+TlNTPC9wcm9k dWN0bmFtZT4KKyAgICAgICAgc3VwcG9ydC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRl bT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLXBx Z2V0c3Nsa2V5cGFzc2hvb2stbnNzIj4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRZ2V0U1NMS2V5 UGFzc0hvb2tfbnNzPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZ2V0U1NMS2V5UGFz c0hvb2tfbnNzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgPGZ1bmN0aW9uPlBRZ2V0U1NMS2V5UGFzc0hvb2tfbnNzPC9m dW5jdGlvbj4gcmV0dXJucyB0aGUgY3VycmVudAorICAgICAgIDxwcm9kdWN0bmFtZT5OU1M8L3By b2R1Y3RuYW1lPiBwYXNzd29yZCBob29rLCBvciA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPgorICAg ICAgIGlmIG5vbmUgaGFzIGJlZW4gc2V0LgorCis8c3lub3BzaXM+CitQUXNzbEtleVBhc3NIb29r X25zc190eXBlIFBRZ2V0U1NMS2V5UGFzc0hvb2tfbnNzKHZvaWQpOworPC9zeW5vcHNpcz4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5QUWdldFNTTEtl eVBhc3NIb29rX25zczwvZnVuY3Rpb24+IGlzIG9ubHkgYXZhaWxhYmxlCisgICAgICAgIHdoZW4g dGhlIHNlcnZlciB3YXMgY29tcGlsZWQgd2l0aCA8cHJvZHVjdG5hbWU+bnNzPC9wcm9kdWN0bmFt ZT4KKyAgICAgICAgc3VwcG9ydC4KKyAgICAgIDwvcGFyYT4KKwogICAgICA8L2xpc3RpdGVtPgog ICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNDk3LDYgKzI1NjksOCBAQCB2b2lkICpQUXNzbFN0 cnVjdChjb25zdCBQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnN0cnVjdF9uYW1lKTsKICAgICAg IDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgIFRoZSBzdHJ1Y3QocykgYXZhaWxhYmxlIGRl cGVuZCBvbiB0aGUgU1NMIGltcGxlbWVudGF0aW9uIGluIHVzZS4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgogICAgICAgIEZvciA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+ LCB0aGVyZSBpcyBvbmUgc3RydWN0LAogICAgICAgIGF2YWlsYWJsZSB1bmRlciB0aGUgbmFtZSAi T3BlblNTTCIsIGFuZCBpdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUKICAgICAgICA8cHJvZHVj dG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IDxsaXRlcmFsPlNTTDwvbGl0ZXJhbD4gc3RydWN0 LgpAQCAtMjUyMCw5ICsyNTk0LDE0IEBAIHZvaWQgKlBRc3NsU3RydWN0KGNvbnN0IFBHY29ubiAq Y29ubiwgY29uc3QgY2hhciAqc3RydWN0X25hbWUpOwogXV0+PC9wcm9ncmFtbGlzdGluZz4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoaXMgc3RydWN0dXJlIGNhbiBiZSB1 c2VkIHRvIHZlcmlmeSBlbmNyeXB0aW9uIGxldmVscywgY2hlY2sgc2VydmVyCi0gICAgICAgY2Vy dGlmaWNhdGVzLCBhbmQgbW9yZS4gUmVmZXIgdG8gdGhlIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9w cm9kdWN0bmFtZT4KLSAgICAgICBkb2N1bWVudGF0aW9uIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0 aGlzIHN0cnVjdHVyZS4KKyAgICAgICBGb3IgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+ LCB0aGVyZSBpcyBvbmUgc3RydWN0IGF2YWlsYWJsZSB1bmRlcgorICAgICAgIHRoZSBuYW1lICJO U1MiLCBhbmQgaXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlCisgICAgICAgPHByb2R1Y3RuYW1l Pk5TUzwvcHJvZHVjdG5hbWU+IDxsaXRlcmFsPlBSRmlsZURlc2M8L2xpdGVyYWw+LgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlc2Ugc3RydWN0dXJlcyBjYW4gYmUgdXNl ZCB0byB2ZXJpZnkgZW5jcnlwdGlvbiBsZXZlbHMsIGNoZWNrIHNlcnZlcgorICAgICAgIGNlcnRp ZmljYXRlcywgYW5kIG1vcmUuIFJlZmVyIHRvIHRoZSA8YWNyb255bT5TU0w8L2Fjcm9ueW0+IGxp YnJhcnkKKyAgICAgICBkb2N1bWVudGF0aW9uIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBz dHJ1Y3R1cmVzLgogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlz dGVudHJ5PgpAQCAtMjU0OSw2ICsyNjI4LDEwIEBAIHZvaWQgKlBRZ2V0c3NsKGNvbnN0IFBHY29u biAqY29ubik7CiAgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzc2xJblVzZSIvPiBpbnN0 ZWFkLCBhbmQgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUKICAgICAgICBjb25uZWN0aW9uLCB1 c2UgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFzc2xBdHRyaWJ1dGUiLz4uCiAgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgPGxpdGVyYWw+TlVM TDwvbGl0ZXJhbD4gd2hlbiA8YWNyb255bT5TU0w8L2Fjcm9ueW0+CisgICAgICAgbGlicmFyaWFl cyBvdGhlciB0aGFuIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gYXJlIHVzZWQu CisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTc5ODIsNiArODA2NSwxMSBAQCB2b2lkIFBRaW5pdE9wZW5TU0woaW50IGRvX3NzbCwgaW50 IGRvX2NyeXB0byk7CiAgICAgICAgYmVmb3JlIGZpcnN0IG9wZW5pbmcgYSBkYXRhYmFzZSBjb25u ZWN0aW9uLiAgQWxzbyBiZSBzdXJlIHRoYXQgeW91CiAgICAgICAgaGF2ZSBkb25lIHRoYXQgaW5p dGlhbGl6YXRpb24gYmVmb3JlIG9wZW5pbmcgYSBkYXRhYmFzZSBjb25uZWN0aW9uLgogICAgICAg PC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGlu ZyB3aGVuIHVzaW5nIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBhcworICAgICAgIHRo ZSA8YWNyb255bT5TU0w8L2Fjcm9ueW0+IGxpYnJhcnkuCisgICAgICA8L3BhcmE+CiAgICAgIDwv bGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTgwMDgsNiArODA5NiwxMSBAQCB2 b2lkIFBRaW5pdFNTTChpbnQgZG9fc3NsKTsKICAgICAgICBtaWdodCBiZSBwcmVmZXJhYmxlIGZv ciBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIHdvcmsgd2l0aCBvbGRlcgogICAgICAgIHZlcnNp b25zIG9mIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+LgogICAgICAgPC9wYXJhPgor CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZyB3aGVuIHVz aW5nIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBhcworICAgICAgIHRoZSA8YWNyb255 bT5TU0w8L2Fjcm9ueW0+IGxpYnJhcnkuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgPC92YXJsaXN0ZW50cnk+CiAgICA8L3ZhcmlhYmxlbGlzdD4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9ydW50aW1lLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcnVudGltZS5zZ21sCmluZGV4 IGJmODc3YzBlMGMuLjI1NzhlZThjMDYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9ydW50aW1l LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3J1bnRpbWUuc2dtbApAQCAtMjE4NSwxNSArMjE4NSwy MSBAQCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBvc3RncmVzIC1wIDU0MzMKIAogICA8 aW5kZXh0ZXJtIHpvbmU9InNzbC10Y3AiPgogICAgPHByaW1hcnk+U1NMPC9wcmltYXJ5PgorICAg PHNlY29uZGFyeT5UTFM8L3NlY29uZGFyeT4KICAgPC9pbmRleHRlcm0+CiAKICAgPHBhcmE+CiAg ICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGhhcyBuYXRpdmUgc3VwcG9y dCBmb3IgdXNpbmcKICAgIDxhY3JvbnltPlNTTDwvYWNyb255bT4gY29ubmVjdGlvbnMgdG8gZW5j cnlwdCBjbGllbnQvc2VydmVyIGNvbW11bmljYXRpb25zCiAgICBmb3IgaW5jcmVhc2VkIHNlY3Vy aXR5LiBUaGlzIHJlcXVpcmVzIHRoYXQKLSAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0 bmFtZT4gaXMgaW5zdGFsbGVkIG9uIGJvdGggY2xpZW50IGFuZAorICAgYSBzdXBwb3J0ZWQgVExT IGxpYnJhcnkgaXMgaW5zdGFsbGVkIG9uIGJvdGggY2xpZW50IGFuZAogICAgc2VydmVyIHN5c3Rl bXMgYW5kIHRoYXQgc3VwcG9ydCBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IGlzCiAgICBlbmFibGVkIGF0IGJ1aWxkIHRpbWUgKHNlZSA8eHJlZiBsaW5rZW5kPSJpbnN0 YWxsYXRpb24iLz4pLgorICAgU3VwcG9ydGVkIGxpYnJhcmllcyBhcmUgPHByb2R1Y3RuYW1lPk9w ZW5TU0w8L3Byb2R1Y3RuYW1lPiBhbmQKKyAgIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1l Pi4gVGhlIHRlcm1zIDxhY3JvbnltPlNTTDwvYWNyb255bT4gYW5kCisgICA8YWNyb255bT5UTFM8 L2Fjcm9ueW0+IGFyZSBvZnRlbiB1c2VkIGludGVyY2hhbmdlYWJseSB0byBtZWFuIGEgc2VjdXJl CisgICBjb25uZWN0aW9uIHVzaW5nIGEgPGFjcm9ueW0+VExTPC9hY3JvbnltPiBwcm90b2NvbCwg ZXZlbiB0aG91Z2gKKyAgIDxhY3JvbnltPlNTTDwvYWNyb255bT4gcHJvdG9jb2xzIGFyZSBubyBs b25nZXIgc3VwcG9ydGVkLgogICA8L3BhcmE+CiAKICAgPHNlY3QyIGlkPSJzc2wtc2V0dXAiPgpA QCAtMjIxMyw4ICsyMjE5LDEzIEBAIHBnX2R1bXBhbGwgLXAgNTQzMiB8IHBzcWwgLWQgcG9zdGdy ZXMgLXAgNTQzMwogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUbyBzdGFydCBpbiA8YWNyb255 bT5TU0w8L2Fjcm9ueW0+IG1vZGUsIGZpbGVzIGNvbnRhaW5pbmcgdGhlIHNlcnZlciBjZXJ0aWZp Y2F0ZQotICAgYW5kIHByaXZhdGUga2V5IG11c3QgZXhpc3QuICBCeSBkZWZhdWx0LCB0aGVzZSBm aWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUKKyAgIFRvIHN0YXJ0IGluIDxhY3JvbnltPlNTTDwvYWNy b255bT4gbW9kZSwgYSBzZXJ2ZXIgY2VydGlmaWNhdGUKKyAgIGFuZCBwcml2YXRlIGtleSBtdXN0 IGV4aXN0LiBUaGUgYmVsb3cgc2VjdGlvbnMgb24gdGhlIGRpZmZlcmVudCBsaWJyYXJpZXMKKyAg IHdpbGwgZGlzY3VzcyBob3cgdG8gY29uZmlndXJlIHRoZXNlLgorICA8L3BhcmE+CisgICAKKyAg PHBhcmE+CisgICBCeSBkZWZhdWx0LCB0aGVzZSBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUKICAg IG5hbWVkIDxmaWxlbmFtZT5zZXJ2ZXIuY3J0PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5zZXJ2 ZXIua2V5PC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseSwgaW4KICAgIHRoZSBzZXJ2ZXIncyBkYXRh IGRpcmVjdG9yeSwgYnV0IG90aGVyIG5hbWVzIGFuZCBsb2NhdGlvbnMgY2FuIGJlIHNwZWNpZmll ZAogICAgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyA8eHJlZiBsaW5rZW5kPSJn dWMtc3NsLWNlcnQtZmlsZSIvPgpAQCAtMjMwNCw2ICsyMzE1LDE4IEBAIHBnX2R1bXBhbGwgLXAg NTQzMiB8IHBzcWwgLWQgcG9zdGdyZXMgLXAgNTQzMwogICA8L25vdGU+CiAgIDwvc2VjdDI+CiAK KyAgPHNlY3QyIGlkPSJzc2wtbnNzLWNvbmZpZyI+CisgICA8dGl0bGU+TlNTIENvbmZpZ3VyYXRp b248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPiB3aWxsIGxvb2sgZm9yIGNlcnRpZmljYXRlcyBhbmQga2V5cworICAgaW4gdGhlIDxw cm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZSBzcGVjaWZpZWQgYnkgdGhlIHBh cmFtZXRlcgorICAgPHhyZWYgbGlua2VuZD0iZ3VjLXNzbC1kYXRhYmFzZSIvPiBpbiA8ZmlsZW5h bWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4uCisgICBUaGUgcGFyYW1ldGVycyBmb3IgY2Vy dGlmaWNhdGUgYW5kIGtleSBmaWxlbmFtZXMgYXJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlCisgICBu aWNrbmFtZXMgaW4gdGhlIGRhdGFiYXNlLgorICA8L3BhcmE+CisgIDwvc2VjdDI+CisKICAgPHNl Y3QyIGlkPSJzc2wtY2xpZW50LWNlcnRpZmljYXRlcyI+CiAgICA8dGl0bGU+VXNpbmcgQ2xpZW50 IENlcnRpZmljYXRlczwvdGl0bGU+CiAKQEAgLTIzNzgsNyArMjQwMSw3IEBAIHBnX2R1bXBhbGwg LXAgNTQzMiB8IHBzcWwgLWQgcG9zdGdyZXMgLXAgNTQzMwogICA8L3NlY3QyPgogCiAgIDxzZWN0 MiBpZD0ic3NsLXNlcnZlci1maWxlcyI+Ci0gICA8dGl0bGU+U1NMIFNlcnZlciBGaWxlIFVzYWdl PC90aXRsZT4KKyAgIDx0aXRsZT5TU0wgU2VydmVyIEZpbGUgUGFyYW1ldGVyIFVzYWdlPC90aXRs ZT4KIAogICAgPHBhcmE+CiAgICAgPHhyZWYgbGlua2VuZD0ic3NsLWZpbGUtdXNhZ2UiLz4gc3Vt bWFyaXplcyB0aGUgZmlsZXMgdGhhdCBhcmUKQEAgLTI0MjUsNiArMjQ0OCwxNCBAQCBwZ19kdW1w YWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBvc3RncmVzIC1wIDU0MzMKICAgICAgIDxlbnRyeT5jbGll bnQgY2VydGlmaWNhdGUgbXVzdCBub3QgYmUgb24gdGhpcyBsaXN0PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48eHJlZiBsaW5rZW5kPSJndWMtc3NsLWRh dGFiYXNlIi8+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5jZXJ0aWZpY2F0ZSBkYXRhYmFzZTwvZW50 cnk+CisgICAgICA8ZW50cnk+Y29udGFpbnMgc2VydmVyIGNlcnRpZmljYXRlcywga2V5cyBhbmQg cmV2b2NhdGlvbiBsaXN0czsgb25seQorICAgICAgdXNlZCB3aGVuIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaXMgYnVpbHQgd2l0aCBzdXBwb3J0CisgICAgICBmb3IgPHBy b2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+LjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAg PC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpAQCAtMjQ0OCw3ICsyNDc5LDcgQEAg cGdfZHVtcGFsbCAtcCA1NDMyIHwgcHNxbCAtZCBwb3N0Z3JlcyAtcCA1NDMzCiAgIDwvc2VjdDI+ CiAKICAgPHNlY3QyIGlkPSJzc2wtY2VydGlmaWNhdGUtY3JlYXRpb24iPgotICAgPHRpdGxlPkNy ZWF0aW5nIENlcnRpZmljYXRlczwvdGl0bGU+CisgICA8dGl0bGU+Q3JlYXRpbmcgQ2VydGlmaWNh dGVzIHdpdGggT3BlblNTTDwvdGl0bGU+CiAKICAgIDxwYXJhPgogICAgICBUbyBjcmVhdGUgYSBz aW1wbGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZm9yIHRoZSBzZXJ2ZXIsIHZhbGlkIGZvciAz NjUKQEAgLTI1NTIsNiArMjU4Myw4OCBAQCBvcGVuc3NsIHg1MDkgLXJlcSAtaW4gc2VydmVyLmNz ciAtdGV4dCAtZGF5cyAzNjUgXAogICAgPC9wYXJhPgogICA8L3NlY3QyPgogCisgIDxzZWN0MiBp ZD0ibnNzLWNlcnRpZmljYXRlLWRhdGFiYXNlIj4KKyAgIDx0aXRsZT5OU1MgQ2VydGlmaWNhdGUg RGF0YWJhc2VzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgV2hlbiB1c2luZyA8cHJvZHVjdG5h bWU+TlNTPC9wcm9kdWN0bmFtZT4sIGFsbCBjZXJ0aWZpY2F0ZXMgYW5kIGtleXMgbXVzdAorICAg IGJlIGxvYWRlZCBpbnRvIGFuIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBjZXJ0aWZp Y2F0ZSBkYXRhYmFzZS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVG8gY3JlYXRlIGEg bmV3IDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBh bmQKKyAgICBsb2FkIHRoZSBjZXJ0aWZpY2F0ZXMgY3JlYXRlZCBpbiA8eHJlZiBsaW5rZW5kPSJz c2wtY2VydGlmaWNhdGUtY3JlYXRpb24iIC8+LAorICAgIHVzZSB0aGUgZm9sbG93aW5nIDxwcm9k dWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBjb21tYW5kczoKKzxwcm9ncmFtbGlzdGluZz4KK2Nl cnR1dGlsIC1kICJzcWw6c2VydmVyLmRiIiAtTiAtLWVtcHR5LXBhc3N3b3JkCitjZXJ0dXRpbCAt ZCAic3FsOnNlcnZlci5kYiIgLUEgLW4gc2VydmVyLmNydCAtaSBzZXJ2ZXIuY3J0IC10ICJDVCxD LEMiCitjZXJ0dXRpbCAtZCAic3FsOnNlcnZlci5kYiIgLUEgLW4gcm9vdC5jcnQgLWkgcm9vdC5j cnQgLXQgIkNULEMsQyIKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgVGhpcyB3aWxsIGdpdmUgdGhl IGNlcnRpZmljYXRlIHRoZSBmaWxlbmFtZSBhcyB0aGUgbmlja25hbWUgaWRlbnRpZmllciBpbgor ICAgIHRoZSBkYXRhYmFzZSB3aGljaCBpcyBjcmVhdGVkIGFzIDxmaWxlbmFtZT5zZXJ2ZXIuZGI8 L2ZpbGVuYW1lPi4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIFRoZW4gbG9hZCB0aGUgc2Vy dmVyIGtleSwgd2hpY2ggcmVxdWlyZSBjb252ZXJ0aW5nIGl0IHRvCisgICAgPGFjcm9ueW0+UEtD UyMxMjwvYWNyb255bT4gZm9ybWF0IHVzaW5nIHRoZQorICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NM PC9wcm9kdWN0bmFtZT4gdG9vbHM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitvcGVuc3NsIHBrY3MxMiAt ZXhwb3J0IC1vdXQgc2VydmVyLnBmeCAtaW5rZXkgc2VydmVyLmtleSAtaW4gc2VydmVyLmNydCBc CisgIC1jZXJ0ZmlsZSByb290LmNydCAtcGFzc291dCBwYXNzOgorcGsxMnV0aWwgLWkgc2VydmVy LnBmeCAtZCBzZXJ2ZXIuZGIgLVcgJycKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+Cisg ICA8cGFyYT4KKyAgICBGaW5hbGx5IGEgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0IGNhbiBi ZSBsb2FkZWQgd2l0aCB0aGUgZm9sbG93aW5nCisgICAgY29tbWFuZHM6Cis8cHJvZ3JhbWxpc3Rp bmc+Citjcmx1dGlsIC1JIC1pIHNlcnZlci5jcmwgLWQgc2VydmVyLmRiIC1CCis8L3Byb2dyYW1s aXN0aW5nPgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorCisgIDxzZWN0MiBpZD0ibnNzLXNzbC1j ZXJ0aWZpY2F0ZS1jcmVhdGlvbiIgLz4KKyAgIDx0aXRsZT5DcmVhdGluZyBDZXJ0aWZpY2F0ZXMg d2l0aCBOU1M8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUbyBjcmVhdGUgYSBzaW1wbGUgc2Vs Zi1zaWduZWQgQ0EgYW5kIGNlcnRpZmljYXRlIGZvciB0aGUgc2VydmVyLCB1c2UgdGhlCisgICAg Zm9sbG93aW5nIE5TUyBjb21tYW5kcy4gUmVwbGFjZQorICAgIDxyZXBsYWNlYWJsZT4qLnlvdXJk b21haW4uY29tPC9yZXBsYWNlYWJsZT4gd2l0aCB0aGUgc2VydmVyJ3MgaG9zdAorICAgIG5hbWUu IFJlbW92ZSA8cmVwbGFjZWFibGU+LS1lbXB0eS1wYXNzd29yZDwvcmVwbGFjZWFibGU+IGluIG9y ZGVyIHRvIHNldAorICAgIGEgcGFzc3dvcmQgcHJvdGVjdGluZyB0aGUgZGF0YWJhc2VzLiBUaGUg cGFzc3dvcmQgY2FuIGJlIHBhc3NlZCB0bworICAgIDxhcHBsaWNhdGlvbj5jZXJ0dXRpbDwvY2Vy dHV0aWw+IHdpdGggdGhlIDxsaXRlcmFsPi1mPC9saXRlcmFsPiBwYXJhbWV0ZXIuCisgICAgRmly c3QgY3JlYXRlIGEgc2VsZi1zaWduZWQgQ0EuIFRvIHVzZSBhIGRpZmZlcmVudCBjZXJ0aWZpY2F0 ZSB2YWxpZGl0eQorICAgIHRpbWUgdGhhbiB0aGUgZGVmYXVsdCwgdXNlIDxyZXBsYWNlYWJsZT4t djwvcmVwbGFjZWFibGU+IHRvIHNwZWNpZnkgdGhlCisgICAgbnVtYmVyIG9mIG1vbnRocyBvZiB2 YWxpZGl0eS4KKzxwcm9ncmFtbGlzdGluZz4KK21rZGlyIHJvb3RfY2EuZGIKK2NlcnR1dGlsIC1O IC1kICJzcWw6cm9vdF9jYS5kYi8iIC0tZW1wdHktcGFzc3dvcmQKK2NlcnR1dGlsIC1TIC1kICJz cWw6cm9vdF9jYS5kYi8iIC1uIHJvb3RfY2EgLXMgIkNOPTxyZXBsYWNlYWJsZT5jYS55b3VyZG9t YWluLmNvbTwvcmVwbGFjZWFibGU+IiBcCisgIC14IC1rIHJzYSAtZyAyMDQ4IC1tIDxyZXBsYWNl YWJsZT41NDMyPC9yZXBsYWNlYWJsZT4gLXQgQ1R1LENUdSxDVHUgXAorICAtLWtleVVzYWdlIGNl cnRTaWduaW5nIC0yIC0tbnNDZXJ0VHlwZSBzc2xDQSxzbWltZUNBLG9iamVjdFNpZ25pbmdDQSBc CisgIC1aIFNIQTI1NgorY2VydHV0aWwgLUwgLWQgInNxbDpyb290X2NhLmRiLyIgLW4gcm9vdF9j YSAtYSA+IHJvb3RfY2EucGVtCis8L3Byb2dyYW1saXN0aW5nPgorICAgIE5vdyBjcmVhdGUgYSBz ZXJ2ZXIgY2VydGlmaWNhdGUgZGF0YWJhc2UsIGFuZCBjcmVhdGUgYSBjZXJ0aWZpY2F0ZSBzaWdu aW5nCisgICAgcmVxdWVzdCBmb3IgdGhlIENBLiBUaGVuIHNpZ24gdGhlIHJlcXVlc3Qgd2l0aCB0 aGUgYWxyZWFkeSBjcmVhdGVkIENBIGFuZAorICAgIGluc2VydCB0aGUgY2VydGlmaWNhdGUgY2hh aW4gaW50byB0aGUgY2VydGlmaWNhdGUgZGF0YWJhc2UuCis8cHJvZ3JhbWxpc3Rpbmc+Citta2Rp ciBzZXJ2ZXJfY2VydC5kYgorY2VydHV0aWwgLU4gLWQgInNxbDpzZXJ2ZXJfY2VydC5kYi8iIC0t ZW1wdHktcGFzc3dvcmQKK2NlcnR1dGlsIC1SIC1kICJzcWw6c2VydmVyX2NlcnQuZGIvIiAtcyAi Q049ZGJob3N0LnlvdXJkb21haW4uY29tIiBcCisgIC1vIHNlcnZlcl9jZXJ0LmNzciAtZyAyMDQ4 IC1aIFNIQTI1NgorCitjZXJ0dXRpbCAtQyAtZCAic3FsOnJvb3RfY2EuZGIvIiAtYyByb290X2Nh IC1pIHNlcnZlcl9jZXJ0LmNzciBcCisgIC1vIHNlcnZlcl9jZXJ0LmRlciAtbSA8cmVwbGFjZWFi bGU+NTQzMzwvcmVwbGFjZWFibGU+IFwKKyAgLS1rZXlVc2FnZSBrZXlFbmNpcGhlcm1lbnQsZGF0 YUVuY2lwaGVybWVudCxkaWdpdGFsU2lnbmF0dXJlIFwKKyAgLS1uc0NlcnRUeXBlIHNzbFNlcnZl ciAtWiBTSEEyNTYKKworY2VydHV0aWwgLUEgLWQgInNxbDpzZXJ2ZXJfY2VydC5kYi8iIC1uIHJv b3RfY2EgLXQgQ1R1LENUdSxDVHUgLWEgLWkgcm9vdF9jYS5wZW0KK2NlcnR1dGlsIC1BIC1kICJz cWw6c2VydmVyX2NlcnQuZGIvIiAtbiBzZXJ2ZXJfY2VydCAtdCBDVHUsQ1R1LENUdSAtaSBzZXJ2 ZXJfY2VydC5kZXIKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgVGhlIHNlcnZlciBjZXJ0aWZpY2F0 ZSBpcyBsb2FkZWQgaW50byB0aGUgY2VydGlmaWNhdGUgZGF0YWJhc2UgYXMgd2VsbCBhcworICAg IHRoZSBDQSBjZXJ0aWZpY2F0ZSBpbiBvcmRlciB0byBwcm92aWRlIHRoZSBjaGFpbiBvZiBjZXJ0 aWZpY2F0ZXMuCisgIDwvc2VjdDI+CisKICA8L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJnc3NhcGkt ZW5jIj4KLS0gCjIuMjUuMQoK --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0005-NSS-contrib-modules.patch" Content-Description: v25-0005-NSS-contrib-modules.patch Content-Disposition: attachment; filename="v25-0005-NSS-contrib-modules.patch"; size=30332; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <0A202645EAF72E4BB21CCCE31093CC92@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAwNDI0MjQxODIwZTA4ZTlhN2Y2NjBmNDc2MDgzODk4YTY5NzY0NjhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjM0OjM3ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg NS82XSBOU1MgY29udHJpYiBtb2R1bGVzCgotLS0KIGNvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUg ICB8ICAgNyArLQogY29udHJpYi9wZ2NyeXB0by9uc3MuYyAgICAgIHwgNzczICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogY29udHJpYi9zc2xpbmZvL3NzbGluZm8uYyAgIHwg IDMyICsrCiBkb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbCAgfCAgMzggKy0KIGRvYy9zcmMvc2dt bC9zc2xpbmZvLnNnbWwgICB8ICAxMiArLQogc3JjL3Rvb2xzL21zdmMvSW5zdGFsbC5wbSAgIHwg ICAzICstCiBzcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0gfCAgMTIgKy0KIDcgZmlsZXMgY2hh bmdlZCwgODYzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGNvbnRyaWIvcGdjcnlwdG8vbnNzLmMKCmRpZmYgLS1naXQgYS9jb250cmliL3BnY3J5cHRv L01ha2VmaWxlIGIvY29udHJpYi9wZ2NyeXB0by9NYWtlZmlsZQppbmRleCBjMGI0ZjFmY2Y2Li5l ZGU3YTc4MTQ2IDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5cHRvL01ha2VmaWxlCisrKyBiL2Nv bnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUKQEAgLTcsMTEgKzcsMTQgQEAgSU5UX1RFU1RTID0gc2hh MgogT1NTTF9TUkNTID0gb3BlbnNzbC5jIHBncC1tcGktb3BlbnNzbC5jCiBPU1NMX1RFU1RTID0g c2hhMiBkZXMgM2RlcyBjYXN0NQogCitOU1NfU1JDUyA9IG5zcy5jIHBncC1tcGktaW50ZXJuYWwu YyBpbWF0aC5jIGJsZi5jCitOU1NfVEVTVFMgPSBzaGEyIGRlcyAzZGVzCisKIFpMSUJfVFNUID0g cGdwLWNvbXByZXNzaW9uCiBaTElCX09GRl9UU1QgPSBwZ3AtemxpYi1ESVNBQkxFRAogCi1DRl9T UkNTID0gJChpZiAkKHN1YnN0IG9wZW5zc2wsLCQod2l0aF9zc2wpKSwgJChJTlRfU1JDUyksICQo T1NTTF9TUkNTKSkKLUNGX1RFU1RTID0gJChpZiAkKHN1YnN0IG9wZW5zc2wsLCQod2l0aF9zc2wp KSwgJChJTlRfVEVTVFMpLCAkKE9TU0xfVEVTVFMpKQorQ0ZfU1JDUyA9ICQoaWYgJChmaW5kc3Ry aW5nIG9wZW5zc2wsICQod2l0aF9zc2wpKSwgJChPU1NMX1NSQ1MpLCAkKGlmICQoZmluZHN0cmlu ZyBuc3MsICQod2l0aF9zc2wpKSwgJChOU1NfU1JDUyksICQoSU5UX1NSQ1MpKSkKK0NGX1RFU1RT ID0gJChpZiAkKGZpbmRzdHJpbmcgb3BlbnNzbCwgJCh3aXRoX3NzbCkpLCAkKE9TU0xfVEVTVFMp LCAkKGlmICQoZmluZHN0cmluZyBuc3MsICQod2l0aF9zc2wpKSwgJChOU1NfVEVTVFMpLCAkKElO VF9URVNUUykpKQogQ0ZfUEdQX1RFU1RTID0gJChpZiAkKHN1YnN0IG5vLCwkKHdpdGhfemxpYikp LCAkKFpMSUJfVFNUKSwgJChaTElCX09GRl9UU1QpKQogCiBTUkNTID0gXApkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ2NyeXB0by9uc3MuYyBiL2NvbnRyaWIvcGdjcnlwdG8vbnNzLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZGE2NjE1MmQ2NQotLS0gL2Rldi9udWxsCisr KyBiL2NvbnRyaWIvcGdjcnlwdG8vbnNzLmMKQEAgLTAsMCArMSw3NzMgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIG5zcy5jCisgKgkgIFdyYXBwZXIgZm9yIHVzaW5nIE5TUyBhcyBhIGJh Y2tlbmQgZm9yIHBnY3J5cHRvIFBYCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDIwLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBjb250cmliL3BnY3J5cHRvL25zcy5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisK KyNpbmNsdWRlICJweC5oIgorI2luY2x1ZGUgImJsZi5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCisKKy8qCisgKiBCSVRTX1BFUl9CWVRFIGlzIGFsc28gZGVmaW5lZCBpbiB0aGUgTlNQ UiBoZWFkZXIgZmlsZXMsIHNvIHdlIG5lZWQgdG8gdW5kZWYKKyAqIG91ciB2ZXJzaW9uIHRvIGF2 b2lkIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHJlZGVmaW5pdGlvbi4KKyAqLworI2RlZmluZSBwZ19C SVRTX1BFUl9CWVRFIEJJVFNfUEVSX0JZVEUKKyN1bmRlZiBCSVRTX1BFUl9CWVRFCisKKyNpbmNs dWRlIDxuc3MvbnNzLmg+CisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5jbHVkZSA8bnNzL3Br MTFmdW5jLmg+CisjaW5jbHVkZSA8bnNzL3BrMTFwdWIuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjaXRl bS5oPgorI2luY2x1ZGUgPG5zcy9zZWNoYXNoLmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZC5oPgor I2luY2x1ZGUgPG5zcy9zZWNlcnIuaD4KKworLyoKKyAqIEVuc3VyZSB0aGF0IHRoZSBjb2xsaWRp bmcgZGVmaW5pdGlvbnMgbWF0Y2gsIGVsc2UgdGhyb3cgYW4gZXJyb3IuIEluIGNhc2UKKyAqIE5T UFIgaGFzIHJlbW92ZWQgdGhlIGRlZmluaXRpb24gZm9yIHNvbWUgcmVhc29uLCBtYWtlIHN1cmUg dG8gcHV0IG91cnMKKyAqIGJhY2sgYWdhaW4uCisgKi8KKyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZ VEUpCisjaWYgQklUU19QRVJfQllURSAhPSBwZ19CSVRTX1BFUl9CWVRFCisjZXJyb3IgImluY29t cGF0aWJsZSBieXRlIHdpZHRocyBiZXR3ZWVuIE5TUFIgYW5kIHBvc3RncmVzIgorI2VuZGlmCisj ZWxzZQorI2RlZmluZSBCSVRTX1BFUl9CWVRFIHBnX0JJVFNfUEVSX0JZVEUKKyNlbmRpZgorI3Vu ZGVmIHBnX0JJVFNfUEVSX0JZVEUKKworLyoKKyAqIERlZmluZSBvdXIgb3duIG1lY2hhbmlzbXMg Zm9yIEJsb3dmaXNoIGFzIGl0J3Mgbm90IGltcGxlbWVudGVkIGJ5IE5TUy4KKyAqLworI2RlZmlu ZSBCTE9XRklTSF9DQkMJKDEpCisjZGVmaW5lIEJMT1dGSVNIX0VDQgkoMikKKworLyoKKyAqIERh dGEgc3RydWN0dXJlcyBmb3IgcmVjb3JkaW5nIGNpcGhlciBpbXBsZW1lbnRhdGlvbnMgYXMgd2Vs bCBhcyBvbmdvaW5nCisgKiBjaXBoZXIgb3BlcmF0aW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg bnNzX2RpZ2VzdAoreworCU5TU0luaXRDb250ZXh0ICpjb250ZXh0OworCVBLMTFDb250ZXh0ICpo YXNoX2NvbnRleHQ7CisJSEFTSF9IYXNoVHlwZSBoYXNoX3R5cGU7Cit9CQkJbnNzX2RpZ2VzdDsK KwordHlwZWRlZiBzdHJ1Y3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uCit7CisJLyogRnVuY3Rpb24g cG9pbnRlcnMgdG8gY2lwaGVyIG9wZXJhdGlvbnMgKi8KKwlpbnQJCQkoKmluaXQpIChQWF9DaXBo ZXIgKnB4YywgY29uc3QgdWludDggKmtleSwgdW5zaWduZWQga2xlbiwgY29uc3QgdWludDggKml2 KTsKKwl1bnNpZ25lZAkoKmdldF9ibG9ja19zaXplKSAoUFhfQ2lwaGVyICpweGMpOworCXVuc2ln bmVkCSgqZ2V0X2tleV9zaXplKSAoUFhfQ2lwaGVyICpweGMpOworCXVuc2lnbmVkCSgqZ2V0X2l2 X3NpemUpIChQWF9DaXBoZXIgKnB4Yyk7CisJaW50CQkJKCplbmNyeXB0KSAoUFhfQ2lwaGVyICpw eGMsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKTsKKwlpbnQJ CQkoKmRlY3J5cHQpIChQWF9DaXBoZXIgKnB4YywgY29uc3QgdWludDggKmRhdGEsIHVuc2lnbmVk IGRsZW4sIHVpbnQ4ICpyZXMpOworCXZvaWQJCSgqZnJlZSkgKFBYX0NpcGhlciAqcHhjKTsKKwor CS8qIFRoZSBtZWNoYW5pc20gZGVzY3JpYmluZyB0aGUgY2lwaGVyIHVzZWQgKi8KKwl1bmlvbgor CXsKKwkJQ0tfTUVDSEFOSVNNX1RZUEUgbnNzOworCQlDS19VTE9ORwlpbnRlcm5hbDsKKwl9CQkJ bWVjaGFuaXNtOworCWludAkJCWtleWxlbjsKKwlib29sCQlpc19uc3M7Cit9CQkJY2lwaGVyX2lt cGxlbWVudGF0aW9uOworCit0eXBlZGVmIHN0cnVjdCBuc3NfY2lwaGVyCit7CisJY29uc3QgY2lw aGVyX2ltcGxlbWVudGF0aW9uICppbXBsOworCU5TU0luaXRDb250ZXh0ICpjb250ZXh0OworCVBL MTFDb250ZXh0ICpjcnlwdF9jb250ZXh0OworCVNFQ0l0ZW0gICAgKnBhcmFtczsKKworCVBLMTFT eW1LZXkgKmVuY3J5cHRfa2V5OworCVBLMTFTeW1LZXkgKmRlY3J5cHRfa2V5OworfQkJCW5zc19j aXBoZXI7CisKK3R5cGVkZWYgc3RydWN0IGludGVybmFsX2NpcGhlcgoreworCWNvbnN0IGNpcGhl cl9pbXBsZW1lbnRhdGlvbiAqaW1wbDsKKwlCbG93ZmlzaENvbnRleHQgY29udGV4dDsKK30JCQlp bnRlcm5hbF9jaXBoZXI7CisKK3R5cGVkZWYgc3RydWN0IG5zc19jaXBoZXJfcmVmCit7CisJY29u c3QgY2hhciAqbmFtZTsKKwljb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gKmltcGw7Cit9CQkJ bnNzX2NpcGhlcl9yZWY7CisKKy8qCisgKiBQcm90b3R5cGVzCisgKi8KK3N0YXRpYyB1bnNpZ25l ZCBuc3NfZ2V0X2l2X3NpemUoUFhfQ2lwaGVyICpweGMpOworc3RhdGljIHVuc2lnbmVkIG5zc19n ZXRfYmxvY2tfc2l6ZShQWF9DaXBoZXIgKnB4Yyk7CisKKy8qCisgKiBuc3NfR2V0SGFzaE9pZFRh Z0J5SGFzaFR5cGUKKyAqCisgKiBSZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIFNFQ09pZFRhZyBm b3IgdGhlIHBhc3NlZCBoYXNoIHR5cGUuIE5TUyAzLjQzCisgKiBpbmNsdWRlcyBIQVNIX0dldEhh c2hPaWRUYWdCeUhhc2hUeXBlIGZvciB0aGlzIHB1cnBvc2UsIGJ1dCBhdCB0aGUgdGltZSBvZgor ICogd3JpdGluZyBpcyBub3QgY29tbW9ubHkgYXZhaWxhYmxlIHNvIHdlIG5lZWQgb3VyIG93biB2 ZXJzaW9uIHRpbGwgdGhlbi4KKyAqLworc3RhdGljIFNFQ09pZFRhZworbnNzX0dldEhhc2hPaWRU YWdCeUhhc2hUeXBlKEhBU0hfSGFzaFR5cGUgdHlwZSkKK3sKKwlpZiAodHlwZSA9PSBIQVNIX0Fs Z01EMikKKwkJcmV0dXJuIFNFQ19PSURfTUQyOworCWlmICh0eXBlID09IEhBU0hfQWxnTUQ1KQor CQlyZXR1cm4gU0VDX09JRF9NRDU7CisJaWYgKHR5cGUgPT0gSEFTSF9BbGdTSEExKQorCQlyZXR1 cm4gU0VDX09JRF9TSEExOworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBMjI0KQorCQlyZXR1cm4g U0VDX09JRF9TSEEyMjQ7CisJaWYgKHR5cGUgPT0gSEFTSF9BbGdTSEEyNTYpCisJCXJldHVybiBT RUNfT0lEX1NIQTI1NjsKKwlpZiAodHlwZSA9PSBIQVNIX0FsZ1NIQTM4NCkKKwkJcmV0dXJuIFNF Q19PSURfU0hBMzg0OworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBNTEyKQorCQlyZXR1cm4gU0VD X09JRF9TSEE1MTI7CisKKwlyZXR1cm4gU0VDX09JRF9VTktOT1dOOworfQorCitzdGF0aWMgdW5z aWduZWQKK25zc19kaWdlc3RfYmxvY2tfc2l6ZShQWF9NRCAqcHhtZCkKK3sKKwluc3NfZGlnZXN0 ICpkaWdlc3QgPSAobnNzX2RpZ2VzdCAqKSBweG1kLT5wLnB0cjsKKwljb25zdCBTRUNIYXNoT2Jq ZWN0ICpvYmplY3Q7CisKKwlvYmplY3QgPSBIQVNIX0dldEhhc2hPYmplY3QoZGlnZXN0LT5oYXNo X3R5cGUpOworCXJldHVybiBvYmplY3QtPmJsb2NrbGVuZ3RoOworfQorCitzdGF0aWMgdW5zaWdu ZWQKK25zc19kaWdlc3RfcmVzdWx0X3NpemUoUFhfTUQgKnB4bWQpCit7CisJbnNzX2RpZ2VzdCAq ZGlnZXN0ID0gKG5zc19kaWdlc3QgKikgcHhtZC0+cC5wdHI7CisJY29uc3QgU0VDSGFzaE9iamVj dCAqb2JqZWN0OworCisJb2JqZWN0ID0gSEFTSF9HZXRIYXNoT2JqZWN0KGRpZ2VzdC0+aGFzaF90 eXBlKTsKKwlyZXR1cm4gb2JqZWN0LT5sZW5ndGg7Cit9CisKK3N0YXRpYyB2b2lkCituc3NfZGln ZXN0X2ZyZWUoUFhfTUQgKnB4bWQpCit7CisJbnNzX2RpZ2VzdCAqZGlnZXN0ID0gKG5zc19kaWdl c3QgKikgcHhtZC0+cC5wdHI7CisJUFJCb29sCQlmcmVlX2N0eCA9IFBSX1RSVUU7CisKKwlQSzEx X0Rlc3Ryb3lDb250ZXh0KGRpZ2VzdC0+aGFzaF9jb250ZXh0LCBmcmVlX2N0eCk7CisJTlNTX1No dXRkb3duQ29udGV4dChkaWdlc3QtPmNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorbnNzX2Rp Z2VzdF91cGRhdGUoUFhfTUQgKnB4bWQsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVu KQoreworCW5zc19kaWdlc3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOwor CisJUEsxMV9EaWdlc3RPcChkaWdlc3QtPmhhc2hfY29udGV4dCwgZGF0YSwgZGxlbik7Cit9CisK K3N0YXRpYyB2b2lkCituc3NfZGlnZXN0X3Jlc2V0KFBYX01EICpweG1kKQoreworCW5zc19kaWdl c3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCisJUEsxMV9EaWdlc3RC ZWdpbihkaWdlc3QtPmhhc2hfY29udGV4dCk7Cit9CisKK3N0YXRpYyB2b2lkCituc3NfZGlnZXN0 X2ZpbmlzaChQWF9NRCAqcHhtZCwgdWludDggKmRzdCkKK3sKKwl1bnNpZ25lZCBpbnQgb3V0bGVu OworCW5zc19kaWdlc3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCWNv bnN0IFNFQ0hhc2hPYmplY3QgKm9iamVjdDsKKworCW9iamVjdCA9IEhBU0hfR2V0SGFzaE9iamVj dChkaWdlc3QtPmhhc2hfdHlwZSk7CisJUEsxMV9EaWdlc3RGaW5hbChkaWdlc3QtPmhhc2hfY29u dGV4dCwgZHN0LCAmb3V0bGVuLCBvYmplY3QtPmxlbmd0aCk7Cit9CisKK2ludAorcHhfZmluZF9k aWdlc3QoY29uc3QgY2hhciAqbmFtZSwgUFhfTUQgKipyZXMpCit7CisJUFhfTUQJICAgKnB4bWQ7 CisJTlNTSW5pdFBhcmFtZXRlcnMgcGFyYW1zOworCU5TU0luaXRDb250ZXh0ICpuc3NfY29udGV4 dDsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCW5zc19kaWdlc3QgKmRpZ2VzdDsKKwlTRUNTdGF0 dXMJc3RhdHVzOworCVNFQ09pZERhdGEgKmhhc2g7CisJSEFTSF9IYXNoVHlwZSB0OworCisJLyoK KwkgKiBJbml0aWFsaXplIG91ciBvd24gTlNTIGNvbnRleHQgd2l0aG91dCBhIGRhdGFiYXNlIGJh Y2tpbmcgaXQuCisJICovCisJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKwlw YXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisJbnNzX2NvbnRleHQgPSBOU1NfSW5pdENv bnRleHQoIiIsICIiLCAiIiwgIiIsICZwYXJhbXMsCisJCQkJCQkJCSAgTlNTX0lOSVRfUkVBRE9O TFkgfCBOU1NfSU5JVF9OT0NFUlREQiB8CisJCQkJCQkJCSAgTlNTX0lOSVRfTk9NT0REQiB8IE5T U19JTklUX0ZPUkNFT1BFTiB8CisJCQkJCQkJCSAgTlNTX0lOSVRfTk9ST09USU5JVCB8IE5TU19J TklUX1BLMTFSRUxPQUQpOworCisJLyoKKwkgKiBUaGVyZSBpcyBubyBBUEkgZnVuY3Rpb24gZm9y IGxvb2tpbmcgdXAgYSBkaWdlc3QgYWxnb3JpdGhtIGZyb20gYSBuYW1lCisJICogc3RyaW5nLCBi dXQgdGhlcmUgaXMgYSBwdWJsaWNseSBhY2Nlc3NpYmxlIGFycmF5IHdoaWNoIGNhbiBiZSBzY2Fu bmVkCisJICogZm9yIHRoZSBuYW1lLgorCSAqLworCWZvciAodCA9IEhBU0hfQWxnTlVMTCArIDE7 IHQgPCBIQVNIX0FsZ1RPVEFMOyB0KyspCisJeworCQlTRUNPaWRUYWcJaGFzaF9vaWQ7CisJCWNo YXIJICAgKnA7CisKKwkJaGFzaF9vaWQgPSBuc3NfR2V0SGFzaE9pZFRhZ0J5SGFzaFR5cGUodCk7 CisKKwkJaWYgKGhhc2hfb2lkID09IFNFQ19PSURfVU5LTk9XTikKKwkJCXJldHVybiBQWEVfTk9f SEFTSDsKKworCQloYXNoID0gU0VDT0lEX0ZpbmRPSURCeVRhZyhoYXNoX29pZCk7CisJCWlmIChw Z19zdHJjYXNlY21wKGhhc2gtPmRlc2MsIG5hbWUpID09IDApCisJCXsKKwkJCWZvdW5kID0gdHJ1 ZTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyoKKwkJICogTlNTIHNhdmVzIHRoZSBhbGdvcml0aG0g bmFtZXMgdXNpbmcgU0hBLXh4eCBub3RhdGlvbiB3aGVyZWFzCisJCSAqIE9wZW5TU0wgdXNlIFNI QXh4eC4gVG8gbWFrZSBzdXJlIHRoZSB1c2VyIGZpbmRzIHRoZSByZXF1ZXN0ZWQKKwkJICogYWxn b3JpdGhtIGxldCdzIHJlbW92ZSB0aGUgZGFzaCBhbmQgY29tcGFyZSB0aGF0IHNwZWxsaW5nIGFz IHdlbGwuCisJCSAqLworCQlpZiAoKHAgPSBzdHJjaHIoaGFzaC0+ZGVzYywgJy0nKSkgIT0gTlVM TCkKKwkJeworCQkJY2hhcgkJdG1wWzEyXTsKKworCQkJbWVtY3B5KHRtcCwgaGFzaC0+ZGVzYywg cCAtIGhhc2gtPmRlc2MpOworCQkJbWVtY3B5KHRtcCArIChwIC0gaGFzaC0+ZGVzYyksIHAgKyAx LCBzdHJsZW4oaGFzaC0+ZGVzYykgLSAocCAtIGhhc2gtPmRlc2MpICsgMSk7CisJCQlpZiAocGdf c3RyY2FzZWNtcCh0bXAsIG5hbWUpID09IDApCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuIFBYRV9OT19I QVNIOworCisJZGlnZXN0ID0gcGFsbG9jKHNpemVvZigqZGlnZXN0KSk7CisKKwlkaWdlc3QtPmNv bnRleHQgPSBuc3NfY29udGV4dDsKKwlkaWdlc3QtPmhhc2hfY29udGV4dCA9IFBLMTFfQ3JlYXRl RGlnZXN0Q29udGV4dChoYXNoLT5vZmZzZXQpOworCWRpZ2VzdC0+aGFzaF90eXBlID0gdDsKKwlp ZiAoZGlnZXN0LT5oYXNoX2NvbnRleHQgPT0gTlVMTCkKKwl7CisJCXBmcmVlKGRpZ2VzdCk7CisJ CXJldHVybiAtMTsKKwl9CisKKwlzdGF0dXMgPSBQSzExX0RpZ2VzdEJlZ2luKGRpZ2VzdC0+aGFz aF9jb250ZXh0KTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQlQSzExX0Rlc3Ry b3lDb250ZXh0KGRpZ2VzdC0+aGFzaF9jb250ZXh0LCBQUl9UUlVFKTsKKwkJcGZyZWUoZGlnZXN0 KTsKKwkJcmV0dXJuIC0xOworCX0KKworCXB4bWQgPSBwYWxsb2Moc2l6ZW9mKCpweG1kKSk7CisJ cHhtZC0+cmVzdWx0X3NpemUgPSBuc3NfZGlnZXN0X3Jlc3VsdF9zaXplOworCXB4bWQtPmJsb2Nr X3NpemUgPSBuc3NfZGlnZXN0X2Jsb2NrX3NpemU7CisJcHhtZC0+cmVzZXQgPSBuc3NfZGlnZXN0 X3Jlc2V0OworCXB4bWQtPnVwZGF0ZSA9IG5zc19kaWdlc3RfdXBkYXRlOworCXB4bWQtPmZpbmlz aCA9IG5zc19kaWdlc3RfZmluaXNoOworCXB4bWQtPmZyZWUgPSBuc3NfZGlnZXN0X2ZyZWU7CisJ cHhtZC0+cC5wdHIgPSAodm9pZCAqKSBkaWdlc3Q7CisKKwkqcmVzID0gcHhtZDsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50CitiZl9pbml0KFBYX0NpcGhlciAqcHhjLCBjb25zdCB1aW50 OCAqa2V5LCB1bnNpZ25lZCBrbGVuLCBjb25zdCB1aW50OCAqaXYpCit7CisJaW50ZXJuYWxfY2lw aGVyICpjaXBoZXIgPSAoaW50ZXJuYWxfY2lwaGVyICopIHB4Yy0+cHRyOworCisJYmxvd2Zpc2hf c2V0a2V5KCZjaXBoZXItPmNvbnRleHQsIGtleSwga2xlbik7CisJaWYgKGl2KQorCQlibG93Zmlz aF9zZXRpdigmY2lwaGVyLT5jb250ZXh0LCBpdik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludAorYmZfZW5jcnlwdChQWF9DaXBoZXIgKnB4YywgY29uc3QgdWludDggKmRhdGEsIHVuc2ln bmVkIGRsZW4sIHVpbnQ4ICpyZXMpCit7CisJaW50ZXJuYWxfY2lwaGVyICpjaXBoZXIgPSAoaW50 ZXJuYWxfY2lwaGVyICopIHB4Yy0+cHRyOworCXVpbnQ4CSAgICpidWY7CisKKwlpZiAoZGxlbiA9 PSAwKQorCQlyZXR1cm4gMDsKKworCWlmIChkbGVuICYgNykKKwkJcmV0dXJuIFBYRV9OT1RCTE9D S1NJWkU7CisKKwlidWYgPSBwYWxsb2MoZGxlbik7CisJbWVtY3B5KGJ1ZiwgZGF0YSwgZGxlbik7 CisKKwlpZiAoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20uaW50ZXJuYWwgPT0gQkxPV0ZJU0hfRUNC KQorCQlibG93ZmlzaF9lbmNyeXB0X2VjYihidWYsIGRsZW4sICZjaXBoZXItPmNvbnRleHQpOwor CWVsc2UKKwkJYmxvd2Zpc2hfZW5jcnlwdF9jYmMoYnVmLCBkbGVuLCAmY2lwaGVyLT5jb250ZXh0 KTsKKworCW1lbWNweShyZXMsIGJ1ZiwgZGxlbik7CisJcGZyZWUoYnVmKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50CitiZl9kZWNyeXB0KFBYX0NpcGhlciAqcHhjLCBjb25zdCB1aW50 OCAqZGF0YSwgdW5zaWduZWQgZGxlbiwgdWludDggKnJlcykKK3sKKwlpbnRlcm5hbF9jaXBoZXIg KmNpcGhlciA9IChpbnRlcm5hbF9jaXBoZXIgKikgcHhjLT5wdHI7CisKKwlpZiAoZGxlbiA9PSAw KQorCQlyZXR1cm4gMDsKKworCWlmIChkbGVuICYgNykKKwkJcmV0dXJuIFBYRV9OT1RCTE9DS1NJ WkU7CisKKwltZW1jcHkocmVzLCBkYXRhLCBkbGVuKTsKKwlpZiAoY2lwaGVyLT5pbXBsLT5tZWNo YW5pc20uaW50ZXJuYWwgPT0gQkxPV0ZJU0hfRUNCKQorCQlibG93ZmlzaF9kZWNyeXB0X2VjYihy ZXMsIGRsZW4sICZjaXBoZXItPmNvbnRleHQpOworCWVsc2UKKwkJYmxvd2Zpc2hfZGVjcnlwdF9j YmMocmVzLCBkbGVuLCAmY2lwaGVyLT5jb250ZXh0KTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZAorYmZfZnJlZShQWF9DaXBoZXIgKnB4YykKK3sKKwlpbnRlcm5hbF9jaXBoZXIgKmNp cGhlciA9IChpbnRlcm5hbF9jaXBoZXIgKikgcHhjLT5wdHI7CisKKwlwZnJlZShjaXBoZXIpOwor CXBmcmVlKHB4Yyk7Cit9CisKK3N0YXRpYyBpbnQKK25zc19zeW1rZXlfYmxvY2tjaXBoZXJfaW5p dChQWF9DaXBoZXIgKnB4YywgY29uc3QgdWludDggKmtleSwgdW5zaWduZWQga2xlbiwKKwkJCQkJ CQljb25zdCB1aW50OCAqaXYpCit7CisJbnNzX2NpcGhlciAqY2lwaGVyID0gKG5zc19jaXBoZXIg KikgcHhjLT5wdHI7CisJU0VDSXRlbQkJaXZfaXRlbTsKKwl1bnNpZ25lZCBjaGFyICppdl9pdGVt X2RhdGE7CisJU0VDSXRlbQkJa2V5X2l0ZW07CisJaW50CQkJa2V5bGVuOworCVBLMTFTbG90SW5m byAqc2xvdDsKKworCWlmIChjaXBoZXItPmltcGwtPm1lY2hhbmlzbS5uc3MgPT0gQ0tNX0FFU19D QkMgfHwKKwkJY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzID09IENLTV9BRVNfRUNCKQorCXsK KwkJaWYgKGtsZW4gPD0gMTI4IC8gOCkKKwkJCWtleWxlbiA9IDEyOCAvIDg7CisJCWVsc2UgaWYg KGtsZW4gPD0gMTkyIC8gOCkKKwkJCWtleWxlbiA9IDE5MiAvIDg7CisJCWVsc2UgaWYgKGtsZW4g PD0gMjU2IC8gOCkKKwkJCWtleWxlbiA9IDI1NiAvIDg7CisJCWVsc2UKKwkJCXJldHVybiBQWEVf Q0lQSEVSX0lOSVQ7CisJfQorCWVsc2UKKwkJa2V5bGVuID0gY2lwaGVyLT5pbXBsLT5rZXlsZW47 CisKKwlrZXlfaXRlbS50eXBlID0gc2lCdWZmZXI7CisJa2V5X2l0ZW0uZGF0YSA9ICh1bnNpZ25l ZCBjaGFyICopIGtleTsKKwlrZXlfaXRlbS5sZW4gPSBrZXlsZW47CisKKwkvKgorCSAqIElmIGhh cmR3YXJlIGFjY2VsZXJhdGlvbiBpcyBjb25maWd1cmVkIGluIE5TUyBvbmUgY2FuIHRoZW9yZXRp Y2FsbHkgZ2V0CisJICogYSBiZXR0ZXIgc2xvdCBieSBjYWxsaW5nIFBLMTFfR2V0QmVzdFNsb3Qo KSB3aXRoIHRoZSBtZWNoYW5pc20gcGFzc2VkCisJICogdG8gaXQuIFVubGVzcyB0aGVyZSBhcmUg Y29tcGxhaW50cywgdXNpbmcgdGhlIHNpbXBsZXIgQVBJIHdpbGwgbWFrZQorCSAqIGVycm9yIGhh bmRsaW5nIGVhc2llciB0aG91Z2guCisJICovCisJc2xvdCA9IFBLMTFfR2V0SW50ZXJuYWxTbG90 KCk7CisJaWYgKCFzbG90KQorCQlyZXR1cm4gUFhFX0NJUEhFUl9JTklUOworCisJLyoKKwkgKiBU aGUga2V5IG11c3QgYmUgc2V0IHVwIGZvciB0aGUgb3BlcmF0aW9uLCBhbmQgc2luY2Ugd2UgZG9u J3Qga25vdyBhdAorCSAqIHRoaXMgcG9pbnQgd2hldGhlciB3ZSBhcmUgYXNrZWQgdG8gZW5jcnlw dCBvciBkZWNyeXB0IHdlIG5lZWQgdG8gc3RvcmUKKwkgKiBib3RoIHZlcnNpb25zLgorCSAqLwor CWNpcGhlci0+ZGVjcnlwdF9rZXkgPSBQSzExX0ltcG9ydFN5bUtleShzbG90LCBjaXBoZXItPmlt cGwtPm1lY2hhbmlzbS5uc3MsCisJCQkJCQkJCQkJCVBLMTFfT3JpZ2luVW53cmFwLAorCQkJCQkJ CQkJCQlDS0FfREVDUllQVCwgJmtleV9pdGVtLAorCQkJCQkJCQkJCQlOVUxMKTsKKwljaXBoZXIt PmVuY3J5cHRfa2V5ID0gUEsxMV9JbXBvcnRTeW1LZXkoc2xvdCwgY2lwaGVyLT5pbXBsLT5tZWNo YW5pc20ubnNzLAorCQkJCQkJCQkJCQlQSzExX09yaWdpblVud3JhcCwKKwkJCQkJCQkJCQkJQ0tB X0VOQ1JZUFQsICZrZXlfaXRlbSwKKwkJCQkJCQkJCQkJTlVMTCk7CisJUEsxMV9GcmVlU2xvdChz bG90KTsKKworCWlmICghY2lwaGVyLT5kZWNyeXB0X2tleSB8fCAhY2lwaGVyLT5lbmNyeXB0X2tl eSkKKwkJcmV0dXJuIFBYRV9DSVBIRVJfSU5JVDsKKworCWlmIChpdikKKwl7CisJCWl2X2l0ZW0u dHlwZSA9IHNpQnVmZmVyOworCQlpdl9pdGVtLmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBpdjsK KwkJaXZfaXRlbS5sZW4gPSBuc3NfZ2V0X2l2X3NpemUocHhjKTsKKwl9CisJZWxzZQorCXsKKwkJ LyoKKwkJICogVGhlIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgZWl0aGVyIHBhc3NpbmcgLmRh dGEgPSAwOyAubGVuID0gMDsKKwkJICogaW4gdGhlIGl2X2l0ZW0sIG9yIE5VTEwgYXMgaXZfaXRl bSwgdG8gUEsxMV9QYXJhbUZyb21JViBzaG91bGQgYmUKKwkJICogZG9uZSB3aGVuIElWIGlzIG1p c3NpbmcuIFRoYXQgaG93ZXZlciBsZWFkcyB0byBzZWdmYXVsdHMgaW4gdGhlCisJCSAqIGxpYnJh cnksIHRoZSB3b3JrYXJvdW5kIHRoYXQgd29ya3MgaW4gbW9kZXJuICBsaWJyYXJ5IHZlcnNpb25z IGlzCisJCSAqIHRvIHBhc3MgaW4gYSBrZXlzaXplZCB6ZXJvZWQgb3V0IElWLgorCQkgKi8KKwkJ aXZfaXRlbV9kYXRhID0gcGFsbG9jMChuc3NfZ2V0X2l2X3NpemUocHhjKSk7CisJCWl2X2l0ZW0u dHlwZSA9IHNpQnVmZmVyOworCQlpdl9pdGVtLmRhdGEgPSBpdl9pdGVtX2RhdGE7CisJCWl2X2l0 ZW0ubGVuID0gbnNzX2dldF9pdl9zaXplKHB4Yyk7CisJfQorCisJY2lwaGVyLT5wYXJhbXMgPSBQ SzExX1BhcmFtRnJvbUlWKGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcywgJml2X2l0ZW0pOwor CisJLyogSWYgd2UgaGFkIHRvIG1ha2UgYSBtb2NrIElWLCBmcmVlIGl0IG9uY2UgbWFkZSBpbnRv IGEgcGFyYW0gKi8KKwlpZiAoIWl2KQorCQlwZnJlZShpdl9pdGVtX2RhdGEpOworCisJaWYgKGNp cGhlci0+cGFyYW1zID09IE5VTEwpCisJCXJldHVybiBQWEVfQ0lQSEVSX0lOSVQ7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorbnNzX2RlY3J5cHQoUFhfQ2lwaGVyICpweGMsIGNvbnN0 IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKQoreworCW5zc19jaXBoZXIg KmNpcGhlciA9IChuc3NfY2lwaGVyICopIHB4Yy0+cHRyOworCVNFQ1N0YXR1cwlzdGF0dXM7CisJ aW50CQkJb3V0bGVuOworCisJaWYgKCFjaXBoZXItPmNyeXB0X2NvbnRleHQpCisJeworCQljaXBo ZXItPmNyeXB0X2NvbnRleHQgPQorCQkJUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoY2lwaGVy LT5pbXBsLT5tZWNoYW5pc20ubnNzLCBDS0FfREVDUllQVCwKKwkJCQkJCQkJCSAgIGNpcGhlci0+ ZGVjcnlwdF9rZXksIGNpcGhlci0+cGFyYW1zKTsKKwl9CisKKwlzdGF0dXMgPSBQSzExX0NpcGhl ck9wKGNpcGhlci0+Y3J5cHRfY29udGV4dCwgcmVzLCAmb3V0bGVuLCBkbGVuLCBkYXRhLCBkbGVu KTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiBQWEVfREVDUllQVF9GQUlM RUQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbnNzX2VuY3J5cHQoUFhfQ2lwaGVy ICpweGMsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKQorewor CW5zc19jaXBoZXIgKmNpcGhlciA9IChuc3NfY2lwaGVyICopIHB4Yy0+cHRyOworCVNFQ1N0YXR1 cwlzdGF0dXM7CisJaW50CQkJb3V0bGVuOworCisJaWYgKCFjaXBoZXItPmNyeXB0X2NvbnRleHQp CisJeworCQljaXBoZXItPmNyeXB0X2NvbnRleHQgPQorCQkJUEsxMV9DcmVhdGVDb250ZXh0QnlT eW1LZXkoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzLCBDS0FfRU5DUllQVCwKKwkJCQkJCQkJ CSAgIGNpcGhlci0+ZGVjcnlwdF9rZXksIGNpcGhlci0+cGFyYW1zKTsKKwl9CisKKwlzdGF0dXMg PSBQSzExX0NpcGhlck9wKGNpcGhlci0+Y3J5cHRfY29udGV4dCwgcmVzLCAmb3V0bGVuLCBkbGVu LCBkYXRhLCBkbGVuKTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIFBY RV9ERUNSWVBUX0ZBSUxFRDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorbnNzX2Zy ZWUoUFhfQ2lwaGVyICpweGMpCit7CisJbnNzX2NpcGhlciAqY2lwaGVyID0gcHhjLT5wdHI7CisJ UFJCb29sCQlmcmVlX2N0eCA9IFBSX1RSVUU7CisKKwlQSzExX0ZyZWVTeW1LZXkoY2lwaGVyLT5l bmNyeXB0X2tleSk7CisJUEsxMV9GcmVlU3ltS2V5KGNpcGhlci0+ZGVjcnlwdF9rZXkpOworCVBL MTFfRGVzdHJveUNvbnRleHQoY2lwaGVyLT5jcnlwdF9jb250ZXh0LCBmcmVlX2N0eCk7CisJTlNT X1NodXRkb3duQ29udGV4dChjaXBoZXItPmNvbnRleHQpOworCXBmcmVlKGNpcGhlcik7CisKKwlw ZnJlZShweGMpOworfQorCitzdGF0aWMgdW5zaWduZWQKK25zc19nZXRfYmxvY2tfc2l6ZShQWF9D aXBoZXIgKnB4YykKK3sKKwluc3NfY2lwaGVyICpjaXBoZXIgPSBweGMtPnB0cjsKKworCXJldHVy biBQSzExX0dldEJsb2NrU2l6ZShjaXBoZXItPmltcGwtPm1lY2hhbmlzbS5uc3MsIE5VTEwpOwor fQorCitzdGF0aWMgdW5zaWduZWQKK25zc19nZXRfa2V5X3NpemUoUFhfQ2lwaGVyICpweGMpCit7 CisJbnNzX2NpcGhlciAqY2lwaGVyID0gcHhjLT5wdHI7CisKKwlyZXR1cm4gY2lwaGVyLT5pbXBs LT5rZXlsZW47Cit9CisKK3N0YXRpYyB1bnNpZ25lZAorbnNzX2dldF9pdl9zaXplKFBYX0NpcGhl ciAqcHhjKQoreworCW5zc19jaXBoZXIgKmNpcGhlciA9IHB4Yy0+cHRyOworCisJcmV0dXJuIFBL MTFfR2V0SVZMZW5ndGgoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzKTsKK30KKworc3RhdGlj IHVuc2lnbmVkCitiZl9nZXRfYmxvY2tfc2l6ZShQWF9DaXBoZXIgKnB4YykKK3sKKwlyZXR1cm4g ODsKK30KKworc3RhdGljIHVuc2lnbmVkCitiZl9nZXRfa2V5X3NpemUoUFhfQ2lwaGVyICpweGMp Cit7CisJcmV0dXJuIDQ0OCAvIDg7Cit9CisKK3N0YXRpYyB1bnNpZ25lZAorYmZfZ2V0X2l2X3Np emUoUFhfQ2lwaGVyICpweGMpCit7CisJcmV0dXJuIDg7Cit9CisKKy8qCisgKiBDaXBoZXIgSW1w bGVtZW50YXRpb25zCisgKi8KK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gbnNz X2Rlc19jYmMgPSB7CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVyX2luaXQsCisJLmdl dF9ibG9ja19zaXplID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5X3NpemUgPSBuc3Nf Z2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6ZSwKKwkuZW5jcnlw dCA9IG5zc19lbmNyeXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJLmZyZWUgPSBuc3Nf ZnJlZSwKKwkubWVjaGFuaXNtLm5zcyA9IENLTV9ERVNfQ0JDLAorCS5rZXlsZW4gPSA4LAorCS5p c19uc3MgPSB0cnVlCit9OworCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uIG5z c19kZXNfZWNiID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0LAorCS5n ZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gbnNz X2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJLmVuY3J5 cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVlID0gbnNz X2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fREVTX0VDQiwKKwkua2V5bGVuID0gOCwKKwku aXNfbnNzID0gdHJ1ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiBu c3NfZGVzM19jYmMgPSB7CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVyX2luaXQsCisJ LmdldF9ibG9ja19zaXplID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5X3NpemUgPSBu c3NfZ2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6ZSwKKwkuZW5j cnlwdCA9IG5zc19lbmNyeXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJLmZyZWUgPSBu c3NfZnJlZSwKKwkubWVjaGFuaXNtLm5zcyA9IENLTV9ERVMzX0NCQywKKwkua2V5bGVuID0gMjQs CisJLmlzX25zcyA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRp b24gbnNzX2RlczNfZWNiID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0 LAorCS5nZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXpl ID0gbnNzX2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJ LmVuY3J5cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVl ID0gbnNzX2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fREVTM19FQ0IsCisJLmtleWxlbiA9 IDI0LAorCS5pc19uc3MgPSB0cnVlCit9OworCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxlbWVu dGF0aW9uIG5zc19hZXNfY2JjID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9p bml0LAorCS5nZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9z aXplID0gbnNzX2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUs CisJLmVuY3J5cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5m cmVlID0gbnNzX2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fQUVTX0NCQywKKwkua2V5bGVu ID0gMzIsCisJLmlzX25zcyA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVt ZW50YXRpb24gbnNzX2Flc19lY2IgPSB7CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVy X2luaXQsCisJLmdldF9ibG9ja19zaXplID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5 X3NpemUgPSBuc3NfZ2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6 ZSwKKwkuZW5jcnlwdCA9IG5zc19lbmNyeXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJ LmZyZWUgPSBuc3NfZnJlZSwKKwkubWVjaGFuaXNtLm5zcyA9IENLTV9BRVNfRUNCLAorCS5rZXls ZW4gPSAzMiwKKwkuaXNfbnNzID0gdHJ1ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBs ZW1lbnRhdGlvbiBuc3NfYmZfZWNiID0geworCS5pbml0ID0gYmZfaW5pdCwKKwkuZ2V0X2Jsb2Nr X3NpemUgPSBiZl9nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gYmZfZ2V0X2tleV9z aXplLAorCS5nZXRfaXZfc2l6ZSA9IGJmX2dldF9pdl9zaXplLAorCS5lbmNyeXB0ID0gYmZfZW5j cnlwdCwKKwkuZGVjcnlwdCA9IGJmX2RlY3J5cHQsCisJLmZyZWUgPSBiZl9mcmVlLAorCS5tZWNo YW5pc20uaW50ZXJuYWwgPSBCTE9XRklTSF9FQ0IsCisJLmtleWxlbiA9IDU2LAorCS5pc19uc3Mg PSBmYWxzZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiBuc3NfYmZf Y2JjID0geworCS5pbml0ID0gYmZfaW5pdCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBiZl9nZXRfYmxv Y2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gYmZfZ2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6 ZSA9IGJmX2dldF9pdl9zaXplLAorCS5lbmNyeXB0ID0gYmZfZW5jcnlwdCwKKwkuZGVjcnlwdCA9 IGJmX2RlY3J5cHQsCisJLmZyZWUgPSBiZl9mcmVlLAorCS5tZWNoYW5pc20uaW50ZXJuYWwgPSBC TE9XRklTSF9DQkMsCisJLmtleWxlbiA9IDU2LAorCS5pc19uc3MgPSBmYWxzZQorfTsKKworLyoK KyAqIExvb2t1cCB0YWJsZSBmb3IgZmluZGluZyB0aGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24g YSBuYW1lLiBDQVNUNSBhcyB3ZWxsCisgKiBhcyBCTE9XRklTSCBhcmUgZGVmaW5lZCBhcyBjaXBo ZXIgbWVjaGFuaXNtcyBpbiBOU1MgYnV0IGVycm9yIG91dCB3aXRoCisgKiBTRUNfRVJST1JfSU5W QUxJRF9BTEdPUklUSE0uIEJsb3dmaXNoIGlzIGltcGxlbWVudGVkIHVzaW5nIHRoZSBpbnRlcm5h bAorICogaW1wbGVtZW50YXRpb24gd2hpbGUgQ0FTVDUgaXNuJ3Qgc3VwcG9ydGVkIGF0IGFsbCBh dCB0aGlzIHRpbWUsCisgKi8KK3N0YXRpYyBjb25zdCBuc3NfY2lwaGVyX3JlZiBuc3NfY2lwaGVy X2xvb2t1cFtdID0geworCXsiZGVzIiwgJm5zc19kZXNfY2JjfSwKKwl7ImRlcy1jYmMiLCAmbnNz X2Rlc19jYmN9LAorCXsiZGVzLWVjYiIsICZuc3NfZGVzX2VjYn0sCisJeyJkZXMzLWNiYyIsICZu c3NfZGVzM19jYmN9LAorCXsiM2RlcyIsICZuc3NfZGVzM19jYmN9LAorCXsiM2Rlcy1jYmMiLCAm bnNzX2RlczNfY2JjfSwKKwl7ImRlczMtZWNiIiwgJm5zc19kZXMzX2VjYn0sCisJeyIzZGVzLWVj YiIsICZuc3NfZGVzM19lY2J9LAorCXsiYWVzIiwgJm5zc19hZXNfY2JjfSwKKwl7ImFlcy1jYmMi LCAmbnNzX2Flc19jYmN9LAorCXsiYWVzLWVjYiIsICZuc3NfYWVzX2VjYn0sCisJeyJyaWpuZGFl bCIsICZuc3NfYWVzX2NiY30sCisJeyJyaWpuZGFlbC1jYmMiLCAmbnNzX2Flc19jYmN9LAorCXsi cmlqbmRhZWwtZWNiIiwgJm5zc19hZXNfZWNifSwKKwl7ImJsb3dmaXNoIiwgJm5zc19iZl9jYmN9 LAorCXsiYmxvd2Zpc2gtY2JjIiwgJm5zc19iZl9jYmN9LAorCXsiYmxvd2Zpc2gtZWNiIiwgJm5z c19iZl9lY2J9LAorCXsiYmYiLCAmbnNzX2JmX2NiY30sCisJeyJiZi1jYmMiLCAmbnNzX2JmX2Ni Y30sCisJeyJiZi1lY2IiLCAmbnNzX2JmX2VjYn0sCisJe05VTEx9Cit9OworCisvKgorICogcHhf ZmluZF9jaXBoZXIKKyAqCisgKiBTZWFyY2ggZm9yIHRoZSByZXF1ZXN0ZWQgY2lwaGVyIGFuZCBz ZWUgaWYgdGhlcmUgaXMgc3VwcG9ydCBmb3IgaXQsIGFuZCBpZgorICogc28gcmV0dXJuIGFuIGFs bG9jYXRlZCBvYmplY3QgY29udGFpbmluZyB0aGUgcGxheWJvb2sgZm9yIGhvdyB0byBlbmNyeXB0 CisgKiBhbmQgZGVjcnlwdCB1c2luZyB0aGUgY2lwaGVyLgorICovCitpbnQKK3B4X2ZpbmRfY2lw aGVyKGNvbnN0IGNoYXIgKmFsaWFzLCBQWF9DaXBoZXIgKipyZXMpCit7CisJY29uc3QgbnNzX2Np cGhlcl9yZWYgKmNpcGhlcl9yZWY7CisJUFhfQ2lwaGVyICAqcHhfY2lwaGVyOworCU5TU0luaXRQ YXJhbWV0ZXJzIHBhcmFtczsKKwlOU1NJbml0Q29udGV4dCAqbnNzX2NvbnRleHQ7CisJbnNzX2Np cGhlciAqY2lwaGVyOworCWludGVybmFsX2NpcGhlciAqaW50X2NpcGhlcjsKKworCWZvciAoY2lw aGVyX3JlZiA9IG5zc19jaXBoZXJfbG9va3VwOyBjaXBoZXJfcmVmLT5uYW1lOyBjaXBoZXJfcmVm KyspCisJeworCQlpZiAoc3RyY21wKGNpcGhlcl9yZWYtPm5hbWUsIGFsaWFzKSA9PSAwKQorCQkJ YnJlYWs7CisJfQorCisJaWYgKCFjaXBoZXJfcmVmLT5uYW1lKQorCQlyZXR1cm4gUFhFX05PX0NJ UEhFUjsKKworCS8qCisJICogRmlsbCBpbiB0aGUgUFhfQ2lwaGVyIHRvIHBhc3MgYmFjayB0byBQ WCBkZXNjcmliaW5nIHRoZSBvcGVyYXRpb25zIHRvCisJICogcGVyZm9ybSBpbiBvcmRlciB0byB1 c2UgdGhlIGNpcGhlci4KKwkgKi8KKwlweF9jaXBoZXIgPSBwYWxsb2Moc2l6ZW9mKCpweF9jaXBo ZXIpKTsKKwlweF9jaXBoZXItPmJsb2NrX3NpemUgPSBjaXBoZXJfcmVmLT5pbXBsLT5nZXRfYmxv Y2tfc2l6ZTsKKwlweF9jaXBoZXItPmtleV9zaXplID0gY2lwaGVyX3JlZi0+aW1wbC0+Z2V0X2tl eV9zaXplOworCXB4X2NpcGhlci0+aXZfc2l6ZSA9IGNpcGhlcl9yZWYtPmltcGwtPmdldF9pdl9z aXplOworCXB4X2NpcGhlci0+ZnJlZSA9IGNpcGhlcl9yZWYtPmltcGwtPmZyZWU7CisJcHhfY2lw aGVyLT5pbml0ID0gY2lwaGVyX3JlZi0+aW1wbC0+aW5pdDsKKwlweF9jaXBoZXItPmVuY3J5cHQg PSBjaXBoZXJfcmVmLT5pbXBsLT5lbmNyeXB0OworCXB4X2NpcGhlci0+ZGVjcnlwdCA9IGNpcGhl cl9yZWYtPmltcGwtPmRlY3J5cHQ7CisKKwkvKgorCSAqIFNldCB0aGUgcHJpdmF0ZSBkYXRhLCB3 aGljaCBpcyBkaWZmZXJlbnQgZm9yIE5TUyBhbmQgaW50ZXJuYWwgY2lwaGVycworCSAqLworCWlm IChjaXBoZXJfcmVmLT5pbXBsLT5pc19uc3MpCisJeworCQkvKgorCQkgKiBJbml0aWFsaXplIG91 ciBvd24gTlNTIGNvbnRleHQgd2l0aG91dCBhIGRhdGFiYXNlIGJhY2tpbmcgaXQuIEF0CisJCSAq IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2FudCB0byBhbGxvdyB1c2VycyB0byB1c2Ugc3RvcmVkIGtl eXMgaW4gdGhlCisJCSAqIGRhdGFiYXNlIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlbSB2aWEgU0VM RUNUIGVuY3J5cHQoKSwgYW5kIHRoZW4KKwkJICogdGhpcyBuZWVkIHRvIGJlIGNoYW5nZWQgdG8g b3BlbiBhIHVzZXIgc3BlY2lmaWVkIGRhdGFiYXNlLgorCQkgKi8KKwkJbWVtc2V0KCZwYXJhbXMs IDAsIHNpemVvZihwYXJhbXMpKTsKKwkJcGFyYW1zLmxlbmd0aCA9IHNpemVvZihwYXJhbXMpOwor CQluc3NfY29udGV4dCA9IE5TU19Jbml0Q29udGV4dCgiIiwgIiIsICIiLCAiIiwgJnBhcmFtcywK KwkJCQkJCQkJCSAgTlNTX0lOSVRfUkVBRE9OTFkgfCBOU1NfSU5JVF9OT0NFUlREQiB8CisJCQkJ CQkJCQkgIE5TU19JTklUX05PTU9EREIgfCBOU1NfSU5JVF9GT1JDRU9QRU4gfAorCQkJCQkJCQkJ ICBOU1NfSU5JVF9OT1JPT1RJTklUIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisKKwkJLyogbnNz X2NpcGhlciBpcyB0aGUgcHJpdmF0ZSBzdGF0ZSBzdHJ1Y3QgZm9yIHRoZSBvcGVyYXRpb24gKi8K KwkJY2lwaGVyID0gcGFsbG9jKHNpemVvZigqY2lwaGVyKSk7CisJCWNpcGhlci0+Y29udGV4dCA9 IG5zc19jb250ZXh0OworCQljaXBoZXItPmltcGwgPSBjaXBoZXJfcmVmLT5pbXBsOworCQljaXBo ZXItPmNyeXB0X2NvbnRleHQgPSBOVUxMOworCisJCXB4X2NpcGhlci0+cHRyID0gY2lwaGVyOwor CX0KKwllbHNlCisJeworCQlpbnRfY2lwaGVyID0gcGFsbG9jMChzaXplb2YoKmludF9jaXBoZXIp KTsKKworCQlpbnRfY2lwaGVyLT5pbXBsID0gY2lwaGVyX3JlZi0+aW1wbDsKKwkJcHhfY2lwaGVy LT5wdHIgPSBpbnRfY2lwaGVyOworCX0KKworCSpyZXMgPSBweF9jaXBoZXI7CisJcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9jb250cmliL3NzbGluZm8vc3NsaW5mby5jIGIvY29udHJpYi9zc2xp bmZvL3NzbGluZm8uYwppbmRleCAzMGNhZTBiYjk4Li4zYWFkZDkwYWE2IDEwMDY0NAotLS0gYS9j b250cmliL3NzbGluZm8vc3NsaW5mby5jCisrKyBiL2NvbnRyaWIvc3NsaW5mby9zc2xpbmZvLmMK QEAgLTksOSArOSwxMSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lmZGVmIFVTRV9P UEVOU1NMCiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5Lmg+CiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5 djMuaD4KICNpbmNsdWRlIDxvcGVuc3NsL2FzbjEuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTIxLDYgKzIzLDcg QEAKIAogUEdfTU9EVUxFX01BR0lDOwogCisjaWZkZWYgVVNFX09QRU5TU0wKIHN0YXRpYyBEYXR1 bSBYNTA5X05BTUVfZmllbGRfdG9fdGV4dChYNTA5X05BTUUgKm5hbWUsIHRleHQgKmZpZWxkTmFt ZSk7CiBzdGF0aWMgRGF0dW0gQVNOMV9TVFJJTkdfdG9fdGV4dChBU04xX1NUUklORyAqc3RyKTsK IApAQCAtMzEsNiArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdAogewogCVR1cGxlRGVzYwl0dXBkZXNj OwogfSBTU0xFeHRlbnNpb25JbmZvQ29udGV4dDsKKyNlbmRpZgogCiAvKgogICogSW5kaWNhdGVz IHdoZXRoZXIgY3VycmVudCBzZXNzaW9uIHVzZXMgU1NMCkBAIC0xMzEsNiArMTM1LDcgQEAgc3Ns X2NsaWVudF9zZXJpYWwoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogCisjaWZkZWYgVVNFX09QRU5T U0wKIC8qCiAgKiBDb252ZXJ0cyBPcGVuU1NMIEFTTjFfU1RSSU5HIHN0cnVjdHVyZSBpbnRvIHRl eHQKICAqCkBAIC0yODIsNyArMjg3LDIzIEBAIHNzbF9pc3N1ZXJfZmllbGQoUEdfRlVOQ1RJT05f QVJHUykKIAllbHNlCiAJCXJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYJCQkJCQkJLyogVVNFX09Q RU5TU0wgKi8KIAorI2lmZGVmIFVTRV9OU1MKK1BHX0ZVTkNUSU9OX0lORk9fVjEoc3NsX2NsaWVu dF9kbl9maWVsZCk7CitEYXR1bQorc3NsX2NsaWVudF9kbl9maWVsZChQR19GVU5DVElPTl9BUkdT KQoreworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoc3NsX2lz c3Vlcl9maWVsZCk7CitEYXR1bQorc3NsX2lzc3Vlcl9maWVsZChQR19GVU5DVElPTl9BUkdTKQor eworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLwogCiAv KgogICogUmV0dXJucyBjdXJyZW50IGNsaWVudCBjZXJ0aWZpY2F0ZSBzdWJqZWN0IGFzIG9uZSBz dHJpbmcKQEAgLTMzOCw2ICszNTksNyBAQCBzc2xfaXNzdWVyX2RuKFBHX0ZVTkNUSU9OX0FSR1Mp CiB9CiAKIAorI2lmZGVmIFVTRV9PUEVOU1NMCiAvKgogICogUmV0dXJucyBpbmZvcm1hdGlvbiBh Ym91dCBhdmFpbGFibGUgU1NMIGV4dGVuc2lvbnMuCiAgKgpAQCAtNDcxLDMgKzQ5MywxMyBAQCBz c2xfZXh0ZW5zaW9uX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBBbGwgZG9uZSAqLwogCVNS Rl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKIH0KKyNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNTTCAq LworCisjaWZkZWYgVVNFX05TUworUEdfRlVOQ1RJT05fSU5GT19WMShzc2xfZXh0ZW5zaW9uX2lu Zm8pOworRGF0dW0KK3NzbF9leHRlbnNpb25faW5mbyhQR19GVU5DVElPTl9BUkdTKQoreworCVBH X1JFVFVSTl9OVUxMKCk7Cit9CisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLwpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3BnY3J5cHRvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dt bAppbmRleCBiNmJiMjNkZTBmLi5iZjQ4NmYwYzA3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cGdjcnlwdG8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbApAQCAtNDUsOCAr NDUsOSBAQCBkaWdlc3QoZGF0YSBieXRlYSwgdHlwZSB0ZXh0KSByZXR1cm5zIGJ5dGVhCiAgICAg PGxpdGVyYWw+c2hhMjI0PC9saXRlcmFsPiwgPGxpdGVyYWw+c2hhMjU2PC9saXRlcmFsPiwKICAg ICA8bGl0ZXJhbD5zaGEzODQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zaGE1MTI8L2xpdGVyYWw+ LgogICAgIElmIDxmaWxlbmFtZT5wZ2NyeXB0bzwvZmlsZW5hbWU+IHdhcyBidWlsdCB3aXRoCi0g ICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiwgbW9yZSBhbGdvcml0aG1zIGFy ZSBhdmFpbGFibGUsIGFzCi0gICAgZGV0YWlsZWQgaW4gPHhyZWYgbGlua2VuZD0icGdjcnlwdG8t d2l0aC13aXRob3V0LW9wZW5zc2wiLz4uCisgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1 Y3RuYW1lPiBvciA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sCisgICAgbW9yZSBhbGdv cml0aG1zIGFyZSBhdmFpbGFibGUsIGFzCisgICAgZGV0YWlsZWQgaW4gPHhyZWYgbGlua2VuZD0i cGdjcnlwdG8td2l0aC13aXRob3V0LW9wZW5zc2wtbnNzIi8+LgogICAgPC9wYXJhPgogCiAgICA8 cGFyYT4KQEAgLTc2NCw3ICs3NjUsNyBAQCBwZ3Bfc3ltX2VuY3J5cHQoZGF0YSwgcHN3LCAnY29t cHJlc3MtYWxnbz0xLCBjaXBoZXItYWxnbz1hZXMyNTYnKQogICAgIFdoaWNoIGNpcGhlciBhbGdv cml0aG0gdG8gdXNlLgogICAgPC9wYXJhPgogPGxpdGVyYWxsYXlvdXQ+Ci1WYWx1ZXM6IGJmLCBh ZXMxMjgsIGFlczE5MiwgYWVzMjU2IChPcGVuU1NMLW9ubHk6IDxsaXRlcmFsPjNkZXM8L2xpdGVy YWw+LCA8bGl0ZXJhbD5jYXN0NTwvbGl0ZXJhbD4pCitWYWx1ZXM6IGJmLCBhZXMxMjgsIGFlczE5 MiwgYWVzMjU2IChPcGVuU1NMLW9ubHk6IDxsaXRlcmFsPjNkZXM8L2xpdGVyYWw+LCA8bGl0ZXJh bD5jYXN0NTwvbGl0ZXJhbD47IE5TUy1vbmx5OiA8bGl0ZXJhbD4zZGVzPC9saXRlcmFsPikKIERl ZmF1bHQ6IGFlczEyOAogQXBwbGllcyB0bzogcGdwX3N5bV9lbmNyeXB0LCBwZ3BfcHViX2VuY3J5 cHQKIDwvbGl0ZXJhbGxheW91dD4KQEAgLTExNTMsOCArMTE1NCw4IEBAIGdlbl9yYW5kb21fdXVp ZCgpIHJldHVybnMgdXVpZAogICAgPHBhcmE+CiAgICAgPGZpbGVuYW1lPnBnY3J5cHRvPC9maWxl bmFtZT4gY29uZmlndXJlcyBpdHNlbGYgYWNjb3JkaW5nIHRvIHRoZSBmaW5kaW5ncyBvZiB0aGUK ICAgICBtYWluIFBvc3RncmVTUUwgPGxpdGVyYWw+Y29uZmlndXJlPC9saXRlcmFsPiBzY3JpcHQu ICBUaGUgb3B0aW9ucyB0aGF0Ci0gICAgYWZmZWN0IGl0IGFyZSA8bGl0ZXJhbD4tLXdpdGgtemxp YjwvbGl0ZXJhbD4gYW5kCi0gICAgPGxpdGVyYWw+LS13aXRoLXNzbD1vcGVuc3NsPC9saXRlcmFs Pi4KKyAgICBhZmZlY3QgaXQgYXJlIDxsaXRlcmFsPi0td2l0aC16bGliPC9saXRlcmFsPiwKKyAg ICA8bGl0ZXJhbD4tLXdpdGgtc3NsPW9wZW5zc2w8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD4tLXdp dGgtc3NsPW5zczwvbGl0ZXJhbD4uCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTE2OSwx NCArMTE3MCwxNiBAQCBnZW5fcmFuZG9tX3V1aWQoKSByZXR1cm5zIHV1aWQKICAgICBCSUdOVU0g ZnVuY3Rpb25zLgogICAgPC9wYXJhPgogCi0gICA8dGFibGUgaWQ9InBnY3J5cHRvLXdpdGgtd2l0 aG91dC1vcGVuc3NsIj4KLSAgICA8dGl0bGU+U3VtbWFyeSBvZiBGdW5jdGlvbmFsaXR5IHdpdGgg YW5kIHdpdGhvdXQgT3BlblNTTDwvdGl0bGU+Ci0gICAgPHRncm91cCBjb2xzPSIzIj4KKyAgIDx0 YWJsZSBpZD0icGdjcnlwdG8td2l0aC13aXRob3V0LW9wZW5zc2wtbnNzIj4KKyAgICA8dGl0bGU+ U3VtbWFyeSBvZiBGdW5jdGlvbmFsaXR5IHdpdGggYW5kIHdpdGhvdXQgZXh0ZXJuYWwgY3J5cHRv Z3JhcGhpYworICAgICAgbGlicmFyeTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSI0Ij4KICAg ICAgPHRoZWFkPgogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+RnVuY3Rpb25hbGl0eTwvZW50 cnk+CiAgICAgICAgPGVudHJ5PkJ1aWx0LWluPC9lbnRyeT4KICAgICAgICA8ZW50cnk+V2l0aCBP cGVuU1NMPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+V2l0aCBOU1M8L2VudHJ5PgogICAgICAgPC9y b3c+CiAgICAgIDwvdGhlYWQ+CiAgICAgIDx0Ym9keT4KQEAgLTExODQsNTEgKzExODcsNjcgQEAg Z2VuX3JhbmRvbV91dWlkKCkgcmV0dXJucyB1dWlkCiAgICAgICAgPGVudHJ5Pk1ENTwvZW50cnk+ CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+Cisg ICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICA8L3Jvdz4KICAgICAgIDxyb3c+CiAgICAg ICAgPGVudHJ5PlNIQTE8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9y b3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5TSEEyMjQvMjU2LzM4NC81MTI8L2VudHJ5 PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5Pgor ICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAg ICAgIDxlbnRyeT5PdGhlciBkaWdlc3QgYWxnb3JpdGhtczwvZW50cnk+CiAgICAgICAgPGVudHJ5 Pm5vPC9lbnRyeT4KICAgICAgICA8ZW50cnk+eWVzIChOb3RlIDEpPC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+eWVzIChOb3RlIDEpPC9lbnRyeT4KICAgICAgIDwvcm93PgogICAgICAgPHJvdz4KICAg ICAgICA8ZW50cnk+Qmxvd2Zpc2g8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5Pgog ICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAg ICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5BRVM8L2VudHJ5PgogICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxl bnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRy eT5ERVMvM0RFUy9DQVNUNTwvZW50cnk+CiAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAg ICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgIDwv cm93PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+Q0FTVDU8L2VudHJ5PgorICAgICAgIDxl bnRyeT5ubzwvZW50cnk+CisgICAgICAgPGVudHJ5PnllczwvZW50cnk+CisgICAgICAgPGVudHJ5 Pm5vPC9lbnRyeT4KICAgICAgIDwvcm93PgogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+UmF3 IGVuY3J5cHRpb248L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxl bnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+ CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5QR1AgU3ltbWV0cmljIGVuY3J5cHRpb248L2Vu dHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5 PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93Pgog ICAgICAgIDxlbnRyeT5QR1AgUHVibGljLUtleSBlbmNyeXB0aW9uPC9lbnRyeT4KICAgICAgICA8 ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgICA8ZW50 cnk+eWVzPC9lbnRyeT4KICAgICAgIDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3Vw PgpAQCAtMTI0MSw3ICsxMjYwLDggQEAgZ2VuX3JhbmRvbV91dWlkKCkgcmV0dXJucyB1dWlkCiAg ICA8b3JkZXJlZGxpc3Q+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIEFueSBk aWdlc3QgYWxnb3JpdGhtIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gc3VwcG9y dHMKKyAgICAgIEFueSBkaWdlc3QgYWxnb3JpdGhtIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9k dWN0bmFtZT4gYW5kCisgICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gc3VwcG9y dHMKICAgICAgIGlzIGF1dG9tYXRpY2FsbHkgcGlja2VkIHVwLgogICAgICAgVGhpcyBpcyBub3Qg cG9zc2libGUgd2l0aCBjaXBoZXJzLCB3aGljaCBuZWVkIHRvIGJlIHN1cHBvcnRlZAogICAgICAg ZXhwbGljaXRseS4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zc2xpbmZvLnNnbWwgYi9kb2Mv c3JjL3NnbWwvc3NsaW5mby5zZ21sCmluZGV4IDJhOWM0NWExMTEuLmYzYWUyZmMzYjggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9zc2xpbmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3NzbGlu Zm8uc2dtbApAQCAtMjIsNyArMjIsOCBAQAogCiAgPHBhcmE+CiAgIFRoaXMgZXh0ZW5zaW9uIHdv bid0IGJ1aWxkIGF0IGFsbCB1bmxlc3MgdGhlIGluc3RhbGxhdGlvbiB3YXMKLSAgY29uZmlndXJl ZCB3aXRoIDxsaXRlcmFsPi0td2l0aC1zc2w9b3BlbnNzbDwvbGl0ZXJhbD4uCisgIGNvbmZpZ3Vy ZWQgd2l0aCBTU0wgc3VwcG9ydCwgc3VjaCBhcyA8bGl0ZXJhbD4tLXdpdGgtc3NsPW9wZW5zc2w8 L2xpdGVyYWw+CisgIG9yIDxsaXRlcmFsPi0td2l0aC1zc2w9bnNzPC9saXRlcmFsPi4KICA8L3Bh cmE+CiAKICA8c2VjdDI+CkBAIC0yMDgsNiArMjA5LDkgQEAgZW1haWxBZGRyZXNzCiAgICAgIHRo ZSBYLjUwMCBhbmQgWC41MDkgc3RhbmRhcmRzLCBzbyB5b3UgY2Fubm90IGp1c3QgYXNzaWduIGFy Yml0cmFyeQogICAgICBtZWFuaW5nIHRvIHRoZW0uCiAgICAgPC9wYXJhPgorICAgIDxwYXJhPgor ICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgPHByb2R1Y3Ru YW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPi4KKyAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yMjMsNiArMjI3LDkgQEAgZW1haWxBZGRyZXNzCiAg ICAgIFNhbWUgYXMgPGZ1bmN0aW9uPnNzbF9jbGllbnRfZG5fZmllbGQ8L2Z1bmN0aW9uPiwgYnV0 IGZvciB0aGUgY2VydGlmaWNhdGUgaXNzdWVyCiAgICAgIHJhdGhlciB0aGFuIHRoZSBjZXJ0aWZp Y2F0ZSBzdWJqZWN0LgogICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhpcyBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIHVzaW5nIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9k dWN0bmFtZT4uCisgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRy eT4KIApAQCAtMjM4LDYgKzI0NSw5IEBAIGVtYWlsQWRkcmVzcwogICAgICBQcm92aWRlIGluZm9y bWF0aW9uIGFib3V0IGV4dGVuc2lvbnMgb2YgY2xpZW50IGNlcnRpZmljYXRlOiBleHRlbnNpb24g bmFtZSwKICAgICAgZXh0ZW5zaW9uIHZhbHVlLCBhbmQgaWYgaXQgaXMgYSBjcml0aWNhbCBleHRl bnNpb24uCiAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9u bHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1l Pi4KKyAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogICA8 L3ZhcmlhYmxlbGlzdD4KZGlmZiAtLWdpdCBhL3NyYy90b29scy9tc3ZjL0luc3RhbGwucG0gYi9z cmMvdG9vbHMvbXN2Yy9JbnN0YWxsLnBtCmluZGV4IGVhM2FmNDg3NzcuLmFmZTcyYTdlOTcgMTAw NjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL0luc3RhbGwucG0KKysrIGIvc3JjL3Rvb2xzL21zdmMv SW5zdGFsbC5wbQpAQCAtNDM4LDcgKzQzOCw4IEBAIHN1YiBDb3B5Q29udHJpYkZpbGVzCiAJCXsK IAkJCSMgVGhlc2UgY29uZmlndXJhdGlvbi1iYXNlZCBleGNsdXNpb25zIG11c3QgbWF0Y2ggdmNy ZWdyZXNzLnBsCiAJCQluZXh0IGlmICgkZCBlcSAidXVpZC1vc3NwIiAgJiYgIWRlZmluZWQoJGNv bmZpZy0+e3V1aWR9KSk7Ci0JCQluZXh0IGlmICgkZCBlcSAic3NsaW5mbyIgICAgJiYgIWRlZmlu ZWQoJGNvbmZpZy0+e29wZW5zc2x9KSk7CisJCQluZXh0IGlmICgkZCBlcSAic3NsaW5mbyIgICAg JiYgIWRlZmluZWQoJGNvbmZpZy0+e29wZW5zc2x9KQorCQkJICAmJiAhZGVmaW5lZCgkY29uZmln LT57bnNzfSkpOwogCQkJbmV4dCBpZiAoJGQgZXEgInhtbDIiICAgICAgICYmICFkZWZpbmVkKCRj b25maWctPnt4bWx9KSk7CiAJCQluZXh0IGlmICgkZCA9fiAvX3BscGVybCQvICAgJiYgIWRlZmlu ZWQoJGNvbmZpZy0+e3Blcmx9KSk7CiAJCQluZXh0IGlmICgkZCA9fiAvX3BscHl0aG9uJC8gJiYg IWRlZmluZWQoJGNvbmZpZy0+e3B5dGhvbn0pKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9tc3Zj L01rdmNidWlsZC5wbSBiL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbQppbmRleCBmZjAxYWNm M2Y2Li42NjAzODdkMGU4IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0K KysrIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCkBAIC00NDUsOSArNDQ1LDE0IEBAIHN1 YiBta3ZjYnVpbGQKIAkJcHVzaCBAY29udHJpYl9leGNsdWRlcywgJ3htbDInOwogCX0KIAorCWlm ICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSAmJiAhJHNvbHV0aW9uLT57b3B0aW9u c30tPntuc3N9KQorCXsKKwkJcHVzaCBAY29udHJpYl9leGNsdWRlcywgJ3NzbGluZm8nOworCX0K KwogCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSkKIAl7Ci0JCXB1c2ggQGNv bnRyaWJfZXhjbHVkZXMsICdzc2xpbmZvJywgJ3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJzsKKwkJ cHVzaCBAY29udHJpYl9leGNsdWRlcywgJ3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJzsKIAl9CiAK IAlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57dXVpZH0pCkBAIC00NzcsNiArNDgyLDExIEBA IHN1YiBta3ZjYnVpbGQKIAkJJHBnY3J5cHRvLT5BZGRGaWxlcygnY29udHJpYi9wZ2NyeXB0bycs ICdvcGVuc3NsLmMnLAogCQkJJ3BncC1tcGktb3BlbnNzbC5jJyk7CiAJfQorCWVsc2lmICgkc29s dXRpb24tPntvcHRpb25zfS0+e25zc30pCisJeworCQkkcGdjcnlwdG8tPkFkZEZpbGVzKCdjb250 cmliL3BnY3J5cHRvJywgJ25zcy5jJywKKwkJCSdwZ3AtbXBpLWludGVybmFsLmMnLCAnaW1hdGgu YycsICdibGYuYycpOworCX0KIAllbHNlCiAJewogCQkkcGdjcnlwdG8tPkFkZEZpbGVzKAotLSAK Mi4yNS4xCgo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_ Content-Type: text/x-patch; name="v25-0006-NSS-cryptohash-support.patch" Content-Description: v25-0006-NSS-cryptohash-support.patch Content-Disposition: attachment; filename="v25-0006-NSS-cryptohash-support.patch"; size=6782; creation-date="Tue, 02 Feb 2021 20:33:34 GMT"; modification-date="Tue, 02 Feb 2021 20:33:34 GMT" Content-ID: <9C09ACBF725B764A8ED69839FC9D597C@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA4N2Y1OTk3YzU0MDZmMDgwYjM0YmE1ODM2ZWQxOTc3MjNiZDBlMjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDE4IEphbiAyMDIxIDEzOjA0OjQ5ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjUg Ni82XSBOU1MgY3J5cHRvaGFzaCBzdXBwb3J0CgotLS0KIHNyYy9jb21tb24vY3J5cHRvaGFzaF9u c3MuYyB8IDI1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90b29s cy9tc3ZjL01rdmNidWlsZC5wbSB8ICAgNCArCiAyIGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9jcnlwdG9oYXNoX25zcy5jCgpk aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jcnlwdG9oYXNoX25zcy5jIGIvc3JjL2NvbW1vbi9jcnlw dG9oYXNoX25zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNlMmI1 Nzc2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tbW9uL2NyeXB0b2hhc2hfbnNzLmMKQEAg LTAsMCArMSwyNTUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGNyeXB0b2hhc2hfbnNz LmMKKyAqCSAgU2V0IG9mIHdyYXBwZXIgcm91dGluZXMgb24gdG9wIG9mIE5TUyB0byBzdXBwb3J0 IGNyeXB0b2dyYXBoaWMKKyAqCSAgaGFzaCBmdW5jdGlvbnMuCisgKgorICogVGhpcyBzaG91bGQg b25seSBiZSB1c2VkIGlmIGNvZGUgaXMgY29tcGlsZWQgd2l0aCBOU1Mgc3VwcG9ydC4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CQkgIHNyYy9jb21tb24vY3J5cHRvaGFzaF9uc3MuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpZm5kZWYgRlJPTlRFTkQKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2Vsc2UKKyNp bmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorI2VuZGlmCisKKy8qCisgKiBCSVRTX1BFUl9CWVRFIGlz IGFsc28gZGVmaW5lZCBpbiB0aGUgTlNQUiBoZWFkZXIgZmlsZXMsIHNvIHdlIG5lZWQgdG8gdW5k ZWYKKyAqIG91ciB2ZXJzaW9uIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHJlZGVmaW5p dGlvbi4KKyAqLworI2RlZmluZSBwZ19CSVRTX1BFUl9CWVRFIEJJVFNfUEVSX0JZVEUKKyN1bmRl ZiBCSVRTX1BFUl9CWVRFCisKKyNpbmNsdWRlIDxuc3MvbnNzLmg+CisjaW5jbHVkZSA8bnNzL2hh c2h0Lmg+CisjaW5jbHVkZSA8bnNzL3BrMTFmdW5jLmg+CisjaW5jbHVkZSA8bnNzL3BrMTFwdWIu aD4KKyNpbmNsdWRlIDxuc3Mvc2VjaXRlbS5oPgorI2luY2x1ZGUgPG5zcy9zZWNoYXNoLmg+Cisj aW5jbHVkZSA8bnNzL3NlY29pZC5oPgorI2luY2x1ZGUgPG5zcy9zZWNlcnIuaD4KKworLyoKKyAq IEVuc3VyZSB0aGF0IHRoZSBjb2xsaWRpbmcgZGVmaW5pdGlvbnMgbWF0Y2gsIGVsc2UgdGhyb3cg YW4gZXJyb3IuIEluIGNhc2UKKyAqIE5TUFIgaGFzIHJlbW92ZWQgdGhlIGRlZmluaXRpb24gZm9y IHNvbWUgcmVhc29uLCBtYWtlIHN1cmUgdG8gcHV0IG91cnMKKyAqIGJhY2sgYWdhaW4uCisgKi8K KyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZVEUpCisjaWYgQklUU19QRVJfQllURSAhPSBwZ19CSVRT X1BFUl9CWVRFCisjZXJyb3IgImluY29tcGF0aWJsZSBieXRlIHdpZHRocyBiZXR3ZWVuIE5TUFIg YW5kIHBvc3RncmVzIgorI2VuZGlmCisjZWxzZQorI2RlZmluZSBCSVRTX1BFUl9CWVRFIHBnX0JJ VFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBnX0JJVFNfUEVSX0JZVEUKKworI2luY2x1ZGUg ImNvbW1vbi9jcnlwdG9oYXNoLmgiCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgorI2luY2x1ZGUgInV0aWxz L3Jlc293bmVyX3ByaXZhdGUuaCIKKyNlbmRpZgorCisvKgorICogSW4gdGhlIGJhY2tlbmQsIHVz ZSBhbiBhbGxvY2F0aW9uIGluIFRvcE1lbW9yeUNvbnRleHQgdG8gY291bnQgZm9yCisgKiByZXNv d25lciBjbGVhbnVwIGhhbmRsaW5nLiAgSW4gdGhlIGZyb250ZW5kLCB1c2UgbWFsbG9jIHRvIGJl IGFibGUKKyAqIHRvIHJldHVybiBhIGZhaWx1cmUgc3RhdHVzIGJhY2sgdG8gdGhlIGNhbGxlci4K KyAqLworI2lmbmRlZiBGUk9OVEVORAorI2RlZmluZSBBTExPQyhzaXplKSBNZW1vcnlDb250ZXh0 QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZSkKKyNkZWZpbmUgRlJFRShwdHIpIHBmcmVlKHB0 cikKKyNlbHNlCisjZGVmaW5lIEFMTE9DKHNpemUpIG1hbGxvYyhzaXplKQorI2RlZmluZSBGUkVF KHB0cikgZnJlZShwdHIpCisjZW5kaWYKKworLyoKKyAqIEludGVybmFsIHBnX2NyeXB0b2hhc2hf Y3R4IHN0cnVjdHVyZS4KKyAqLworc3RydWN0IHBnX2NyeXB0b2hhc2hfY3R4Cit7CisJcGdfY3J5 cHRvaGFzaF90eXBlIHR5cGU7CisKKwlQSzExQ29udGV4dCAqcGsxMV9jb250ZXh0OworCUhBU0hf SGFzaFR5cGUgaGFzaF90eXBlOworCisjaWZuZGVmIEZST05URU5ECisJUmVzb3VyY2VPd25lciBy ZXNvd25lcjsKKyNlbmRpZgorfTsKKworLyoKKyAqIHBnX2NyeXB0b2hhc2hfY3JlYXRlCisgKgor ICogQ3JlYXRlIGFuZCBhbGxvY2F0ZSBhIG5ldyBoYXNoIGNvbnRleHQuIFJldHVybnMgTlVMTCBv biBmYWlsdXJlIGluIHRoZQorICogZnJvbnRlbmQsIGFuZCByYWlzZSBlcnJvciB3aXRob3V0IHJl dHVybmluZyBpbiB0aGUgYmFja2VuZC4KKyAqLworcGdfY3J5cHRvaGFzaF9jdHggKgorcGdfY3J5 cHRvaGFzaF9jcmVhdGUocGdfY3J5cHRvaGFzaF90eXBlIHR5cGUpCit7CisJTlNTSW5pdFBhcmFt ZXRlcnMgcGFyYW1zOworCXBnX2NyeXB0b2hhc2hfY3R4ICpjdHg7CisJU0VDT2lkRGF0YSAqaGFz aDsKKwlTRUNTdGF0dXMgc3RhdHVzOworCisjaWZuZGVmIEZST05URU5ECisJLyoKKwkgKiBNYWtl IHN1cmUgdGhhdCB0aGUgcmVzb3VyY2Ugb3duZXIgaGFzIHNwYWNlIHRvIHJlbWVtYmVyIHRoaXMg cmVmZXJlbmNlLgorCSAqIFRoaXMgY2FuIGVycm9yIG91dCB3aXRoICJvdXQgb2YgbWVtb3J5Iiwg c28gZG8gdGhpcyBiZWZvcmUgYW55IG90aGVyCisJICogYWxsb2NhdGlvbiB0byBhdm9pZCBsZWFr aW5nLgorCSAqLworCVJlc291cmNlT3duZXJFbmxhcmdlQ3J5cHRvSGFzaChDdXJyZW50UmVzb3Vy Y2VPd25lcik7CisjZW5kaWYKKworCWN0eCA9IEFMTE9DKHNpemVvZihwZ19jcnlwdG9oYXNoX2N0 eCkpOworCisJaWYgKCFjdHgpCisJCWdvdG8gZXJyb3I7CisKKwlzd2l0Y2godHlwZSkKKwl7CisJ CWNhc2UgUEdfU0hBMToKKwkJCWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9TSEExOworCQkJYnJl YWs7CisJCWNhc2UgUEdfTUQ1OgorCQkJY3R4LT5oYXNoX3R5cGUgPSBTRUNfT0lEX01ENTsKKwkJ CWJyZWFrOworCQljYXNlIFBHX1NIQTIyNDoKKwkJCWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9T SEEyMjQ7CisJCQlicmVhazsKKwkJY2FzZSBQR19TSEEyNTY6CisJCQljdHgtPmhhc2hfdHlwZSA9 IFNFQ19PSURfU0hBMjU2OworCQkJYnJlYWs7CisJCWNhc2UgUEdfU0hBMzg0OgorCQkJY3R4LT5o YXNoX3R5cGUgPSBTRUNfT0lEX1NIQTM4NDsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTUxMjoK KwkJCWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9TSEE1MTI7CisJCQlicmVhazsKKwl9CisKKwkv KgorCSAqIEluaXRpYWxpemUgb3VyIG93biBOU1MgY29udGV4dCB3aXRob3V0IGEgZGF0YWJhc2Ug YmFja2luZyBpdC4KKwkgKi8KKwltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOwor CXBhcmFtcy5sZW5ndGggPSBzaXplb2YocGFyYW1zKTsKKwlzdGF0dXMgPSBOU1NfTm9EQl9Jbml0 KCIuIik7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJZXhwbGljaXRfYnplcm8o Y3R4LCBzaXplb2YocGdfY3J5cHRvaGFzaF9jdHgpKTsKKwkJRlJFRShjdHgpOworCQlnb3RvIGVy cm9yOworCX0KKworCWN0eC0+dHlwZSA9IHR5cGU7CisJaGFzaCA9IFNFQ09JRF9GaW5kT0lEQnlU YWcoY3R4LT5oYXNoX3R5cGUpOworCWN0eC0+cGsxMV9jb250ZXh0ID0gUEsxMV9DcmVhdGVEaWdl c3RDb250ZXh0KGhhc2gtPm9mZnNldCk7CisJaWYgKCFjdHgtPnBrMTFfY29udGV4dCkKKwl7CisJ CWV4cGxpY2l0X2J6ZXJvKGN0eCwgc2l6ZW9mKHBnX2NyeXB0b2hhc2hfY3R4KSk7CisJCUZSRUUo Y3R4KTsKKwkJZ290byBlcnJvcjsKKwl9CisKKyNpZm5kZWYgRlJPTlRFTkQKKwljdHgtPnJlc293 bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJUmVzb3VyY2VPd25lclJlbWVtYmVyQ3J5cHRv SGFzaChDdXJyZW50UmVzb3VyY2VPd25lciwKKwkJCQkJCQkJCVBvaW50ZXJHZXREYXR1bShjdHgp KTsKKyNlbmRpZgorCisJcmV0dXJuIGN0eDsKKworZXJyb3I6CisjaWZuZGVmIEZST05URU5ECisJ ZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkg ZXJybXNnKCJvdXQgb2YgbWVtb3J5IikpKTsKKyNlbmRpZgorCXJldHVybiBOVUxMOworfQorCisv KgorICogcGdfY3J5cHRvaGFzaF9pbml0CisgKgkJCUluaXRpYWxpemUgdGhlIHBhc3NlZCBoYXNo IGNvbnRleHQKKyAqCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4KKyAq LworaW50CitwZ19jcnlwdG9oYXNoX2luaXQocGdfY3J5cHRvaGFzaF9jdHggKmN0eCkKK3sKKwlT RUNTdGF0dXMJCXN0YXR1czsKKworCXN0YXR1cyA9IFBLMTFfRGlnZXN0QmVnaW4oY3R4LT5wazEx X2NvbnRleHQpOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gLTE7CisJ cmV0dXJuIDA7Cit9CisKKy8qCisgKiBwZ19jcnlwdG9oYXNoX3VwZGF0ZQorICoKKyAqIFVwZGF0 ZSBhIGhhc2ggY29udGV4dC4gIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLgor ICovCitpbnQKK3BnX2NyeXB0b2hhc2hfdXBkYXRlKHBnX2NyeXB0b2hhc2hfY3R4ICpjdHgsIGNv bnN0IHVpbnQ4ICpkYXRhLCBzaXplX3QgbGVuKQoreworCVNFQ1N0YXR1cwlzdGF0dXM7CisKKwlp ZiAoY3R4ID09IE5VTEwpCisJCXJldHVybiAtMTsKKworCXN0YXR1cyA9IFBLMTFfRGlnZXN0T3Ao Y3R4LT5wazExX2NvbnRleHQsIGRhdGEsIGxlbik7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNz KQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHBnX2NyeXB0b2hhc2hf ZmluYWwKKyAqCisgKiBGaW5hbGl6ZSBhIGhhc2ggY29udGV4dC4gIFJldHVybnMgMCBvbiBzdWNj ZXNzLCAtMSBvbiBmYWlsdXJlLgorICovCitpbnQKK3BnX2NyeXB0b2hhc2hfZmluYWwocGdfY3J5 cHRvaGFzaF9jdHggKmN0eCwgdWludDggKmRlc3QpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwl1 bnNpZ25lZCBpbnQgb3V0bGVuOworCWNvbnN0IFNFQ0hhc2hPYmplY3QgKm9iamVjdDsKKworCW9i amVjdCA9IEhBU0hfR2V0SGFzaE9iamVjdChjdHgtPmhhc2hfdHlwZSk7CisJc3RhdHVzID0gUEsx MV9EaWdlc3RGaW5hbChjdHgtPnBrMTFfY29udGV4dCwgZGVzdCwgJm91dGxlbiwgb2JqZWN0LT5s ZW5ndGgpOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gLTE7CisJcmV0 dXJuIDA7Cit9CisKKy8qCisgKiBwZ19jcnlwdG9oYXNoX2ZyZWUKKyAqCisgKiBGcmVlIGEgaGFz aCBjb250ZXh0IGFuZCB0aGUgYXNzb2NpYXRlZCBOU1MgY29udGV4dC4KKyAqLwordm9pZAorcGdf Y3J5cHRvaGFzaF9mcmVlKHBnX2NyeXB0b2hhc2hfY3R4ICpjdHgpCit7CisJUFJCb29sCQlmcmVl X2NvbnRleHQgPSBQUl9UUlVFOworCWlmICghY3R4KQorCQlyZXR1cm47CisKKwlQSzExX0Rlc3Ry b3lDb250ZXh0KGN0eC0+cGsxMV9jb250ZXh0LCBmcmVlX2NvbnRleHQpOworI2lmbmRlZiBGUk9O VEVORAorCVJlc291cmNlT3duZXJGb3JnZXRDcnlwdG9IYXNoKGN0eC0+cmVzb3duZXIsIFBvaW50 ZXJHZXREYXR1bShjdHgpKTsKKyNlbmRpZgorCWV4cGxpY2l0X2J6ZXJvKGN0eCwgc2l6ZW9mKHBn X2NyeXB0b2hhc2hfY3R4KSk7CisJRlJFRShjdHgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L21zdmMvTWt2Y2J1aWxkLnBtIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCmluZGV4IDY2 MDM4N2QwZTguLjE4MGViMGFhM2YgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL01rdmNidWls ZC5wbQorKysgYi9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0KQEAgLTEzMiw2ICsxMzIsMTAg QEAgc3ViIG1rdmNidWlsZAogCQlwdXNoKEBwZ2NvbW1vbmFsbGZpbGVzLCAnY3J5cHRvaGFzaF9v cGVuc3NsLmMnKTsKIAkJcHVzaChAcGdjb21tb25hbGxmaWxlcywgJ3Byb3RvY29sX29wZW5zc2wu YycpOwogCX0KKwllbHNpZiAoJHNvbHV0aW9uLT57b3B0aW9uc30tPntuc3N9KQorCXsKKwkJcHVz aChAcGdjb21tb25hbGxmaWxlcywgJ2NyeXB0b2hhc2hfbnNzLmMnKTsKKwl9CiAJZWxzZQogCXsK IAkJcHVzaChAcGdjb21tb25hbGxmaWxlcywgJ2NyeXB0b2hhc2guYycpOwotLSAKMi4yNS4xCgo= --_008_ca450cb8a74de3dcc753386f57a5f1d5221d6916camelvmwarecom_--