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 1mXQcG-0007P2-3h for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Oct 2021 16:15:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mXQcD-0003ew-PM for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Oct 2021 16:14:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mXQcC-0003ek-JX for pgsql-hackers@lists.postgresql.org; Mon, 04 Oct 2021 16:14:57 +0000 Received: from mail-sn1anam02on20600.outbound.protection.outlook.com ([2a01:111:f400:7ea9::600] helo=NAM02-SN1-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mXQby-0000zp-Fm for pgsql-hackers@lists.postgresql.org; Mon, 04 Oct 2021 16:14:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O0ejoMfQfJ/WxNAqa4w+QKUvm8ffagO2zEXYgi8ZH/SVOJTnY6Q/4ZeeWERRU2U0YOgASJzwLnO915oZjuUGZ/yh8LaKqLBVghWRT3MWwWa9Ph9E1incsuWzRJrr1CEwKn7F2Kfi4rQ+I99ZmOH2ZImabQTGi2RQ/QtRUhe+7ku2e+peYrCQsUKwfU9c7XizHy2Qu1ieUKKa3XS8KcVWIB+6fdp9q0RgegXp3NYuN3/Xob1Qu7duTAlTerZfQ4Ps6wAs49gmHML+52VKjuq4nvSC9z56UuI3bn2LEE+zyDxYWCHJLb2CLITXNE4jrNarxredy9cFFTpJ/4T5QN1c9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=R1BcEP4YJ3eQmHnUhGxrT+5wnDYio5NyaYwcKIr24Zo=; b=DinAmybz2zGfETn9U3tfEA01Ca/v6wFA4gZuL5G4IcRKacfMJTICXMP5IqwBclhx+8Zt0RN0bLJsDyHzLVREqthvI6cZgOA3/f/9alAuXNYZDMJI6nl2583r1FRjksonJpVQkkKNygHHl6NJpolwLA2HX+PIDQYfdV6T7GSTJdoiEX/+Iv77nGUkd+SJRDrVlG6urk7WHNTTKT9QnyJxXajYcnJyQUb8COFWtao4xOcIRUsRrhYYEOVjzMLvv0n0Lq1nfV+0DsZmYcJ9m+xuMW04e+4TGqY6UdfwthVsFi2hUaYgkyLxKevopw/p0Cp0Z8I1kSfXvIcowUOHgujBNA== 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=R1BcEP4YJ3eQmHnUhGxrT+5wnDYio5NyaYwcKIr24Zo=; b=ICDuZ3j+UQQcUFoYPvToyIXdPpQ9MR/Chtm3Bl1lRNtjq0h++2H3q2nr+5wuL2wjRKdAvL4cMhqlGSbQwvj/cGNbNbEKdEQ7bX00mPzsy9znO2Z4imrjw+/z05hKNo59aF2t1hZH2cr15NmQwZcbtpKHp4NKBjkGIJy+d5w3pwE= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by CO1PR05MB8313.namprd05.prod.outlook.com (2603:10b6:303:fc::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.9; Mon, 4 Oct 2021 16:14:38 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::b8ad:c0df:fc49:52a]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::b8ad:c0df:fc49:52a%8]) with mapi id 15.20.4587.017; Mon, 4 Oct 2021 16:14:37 +0000 From: Jacob Champion To: "daniel@yesql.se" CC: "sfrost@snowman.net" , "pgsql-hackers@lists.postgresql.org" , "hlinnaka@iki.fi" , "andrew.dunstan@2ndquadrant.com" , "rachelmheaton@gmail.com" , "thomas.munro@gmail.com" , "michael@paquier.xyz" , "andres@anarazel.de" 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/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToCAExoQAIAAROWAgAFJBgCAAknrgIAHT2aAgACARQCAAC2WAIABbrgAgABSL4CAC5w5gIABgPEAgAXTZYCAAkVWAIAAzGsAgArFR4CAHUTDgIABj0AAgAGZzQCAAAZRAIABAusAgAASXQCAAAtLgIAACCwAgABgtICAZFvbgIAA0mkAgBuUywCAAZBvAIAAHEqAgADlhQCAAC3jAIAAPJaAgAqarYCAKTzWAIAKmcAAgBfU7gCAC3FggIAAByqAgACbR4CAIZgpgIASQfMAgAviXYCABAFvgIAAP3iAgACFZACAAHOlgIAFUxIA Date: Mon, 4 Oct 2021 16:14:37 +0000 Message-ID: <47f36fb0fad537fdd76d9bc9286d1bde3b614dfc.camel@vmware.com> References: <8335133C-920E-438D-9CEB-DEF4C1533F73@yesql.se> <4ec146256e31afa0542f9fa970ec258c5f1a5f98.camel@vmware.com> <70A12E33-90B8-4761-8FA6-8DDB9EEA4D3E@yesql.se> <14b33300304507db6f4e4d8a77da105a8d18ea1a.camel@vmware.com> <02AB4044-0823-4F77-B69B-18DB378C8743@yesql.se> <33A9AFD6-7285-4064-9806-B08D7E61A88C@yesql.se> <93011BD4-4CC5-419B-9D5D-526274824831@yesql.se> <2A20EED9-2D5E-4779-B201-B7458DFC3FE2@yesql.se> <09DB934A-2B4B-4F1E-9DAA-C55D50F254D1@yesql.se> <5c54945a0ac555a49a4951cd87b681a5ed4d21c8.camel@vmware.com> 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.5-0ubuntu1 authentication-results: yesql.se; dkim=none (message not signed) header.d=none;yesql.se; dmarc=none action=none header.from=vmware.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0038998d-d877-492a-fc52-08d987521043 x-ms-traffictypediagnostic: CO1PR05MB8313: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tcetyPw6JGZwY8q7K4WPvtQpyMBCra0FIzHl2LIQ9PiCGv2PIguLrktXVyAYF+sNniPbaJVp6dreSkZlCPFJqh8/on7FTrwKAd5mlh5xqXPdrFbKN+z/AyJd7zp0Ili1F4q8o0Q11CGGeGVIqwLi+Yp8O3RQxsKe3K9/tTiKZcW3UEFRXCgZ68B7VJP1UfRfwKR+g34kuoJU4w+qqLLFADhzK7TVDiP+tK31SPFTnkklA2FDj0W4EfWCdb5a4PgfQQMgpiDOZTqZplywgA8TYLA6iWhPlfg8UadKoGfP0tN7E339akLfVyVJ4dF/a9dfAxJR6qCPrUSIpswLrP5AaQWdxJyhOtS/D+SaBMpBdhJrlNBCNoGM5Q9QTk7fuy+WG/zBbvfX0zTeMKLCTZ8hL3Eo4Vtg+lSGhHmfwGxwURbVLPUIMawXkUO2XugBVa4lrThk5D9PiF5LbbElV9CNdBCaVklmpy4xClQLmDP4w9d51L7/QEYImR3fda/PsrDhzXCWiRC7FQIFXTwMhV9Sd0d5ltcTj+nXRCX2jW5lVeP8xbcwDP747pZ8IObeDF4U6MW3td7IykJLrYm/5GDR5wIwaLRkLv+dv0SA+kQ1nrSkf21+gaNYPqv4Um2QWFqwtbcKNwIDN65yqHjL0ZEHNq20E2p6jF6YlOMVr+ZnPhmw9HxIF8WY+mKoksSe09WEMwzz1NG2NMb/GCH3GJ3erQ== 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)(366004)(66946007)(66476007)(66446008)(64756008)(36756003)(66556008)(122000001)(99936003)(86362001)(4326008)(6506007)(6916009)(76116006)(71200400001)(508600001)(8936002)(38100700002)(6486002)(186003)(4744005)(316002)(2906002)(26005)(8676002)(54906003)(38070700005)(2616005)(5660300002)(6512007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TXBwZGdVKzVSMHpHODhob01UVEZrYXMrUi9iM2VoMTE3VlRJczBOazEyRWcr?= =?utf-8?B?MWxyNXZnaytmWmVFTHpwZVVpbHJtakNEZzNzSU9VOGZPS2NBeVM5czltM3Ur?= =?utf-8?B?amdpaDJ3SU4ySjV1NS8zTTJmU3pmTktHNmkrRGdyT1lGV1hYQnQzelJnaXJh?= =?utf-8?B?QUxxOUMzQnVORDN4QkZObm9QNzJIbzBFRDF6bGE2OEUvRVR0cUpvajB1Q3Vw?= =?utf-8?B?TTVJMWU1Tkc1NVpjVzZCdXBvelRlbmo0bXdDOWRaVDk3WEFrTDgxVnZET0hm?= =?utf-8?B?V2V3TEhOcTNEcEliaG9WSEFieEN4R2Fhamg5SVd6VGEyNGl2dU0zeGppbFBu?= =?utf-8?B?Zkh3dnZ4MDRCWkZIVnc4R2ZVcmdod3ViL2JHY2xRcFBoU0dZMXhYTGtpdW02?= =?utf-8?B?ODFXbTNLZVVUaUpVNDhPOUdCRWN1UG5GK3Y3R2ErMnAwUWw4RU9pVDBRYnVw?= =?utf-8?B?TFYxS0xOK1B5ekJ2bkcySUR6U3hDdXlIbENwMzcrdm52M2ZkaC8wc2tQaWdO?= =?utf-8?B?dTV1UysxSDJjR25laThUanNBakJINGtVdG5rNWU2Rjk2SXRjZmtCeDlqSG9x?= =?utf-8?B?UXdHTFFlSDVnZ0I3WC9HbE94cVhSQjM0dDVTWHByY2xUa3p6NkNOY1RzZFgz?= =?utf-8?B?SWZIZnRqZzR0RENwLzlzSVhhV0l1aU9GZVgvb2FtTVVtRE9FbkVROTM1cE1G?= =?utf-8?B?c3AzWkhDbEhSN25pdXZ5M2EzZGw4bjd6eWFiVFdpMGhOSmVOSk8vU3pQMTBz?= =?utf-8?B?dGt5d1VPanN0SmxMTFc1U0tyd0NYeWtmTlUzdTlaNVpucVVPYituSGRpTTU5?= =?utf-8?B?SGtYSVFPb3BkY1lSWExPUmt1R25VV0RGakM5YTNQalZkL0ZnN3VQTkk2V0pJ?= =?utf-8?B?ZDRXOGhOaDQ4V1BZVGN2NmRNNjhlQXNVRVlpa3krbzAvTE9oVjJQanBZSEly?= =?utf-8?B?VGtKbW9JMnlScDlmZGkrV1ExN3dHUWpnZ3FDaXpMM0ZZS1ZqclNQQk84VDFk?= =?utf-8?B?b1JMdS9lS09jZ3hTQTJyNStrSjlOT3VrRmpkZnZoZUFkNENWd0NuNnduMzI1?= =?utf-8?B?NEN6S3I3RWM2MFRaRE1aMjdBVzJ1dHhMeDBvT0QvcC9aVk9ibElIdVl1aDR6?= =?utf-8?B?cis3SzV0Q0F1VkVUYmd2R3RQSWMzbzF5QzJMZ1IzQ0VZb1dDVS82OFpDQ2Ra?= =?utf-8?B?ak4rMy81OW5zNDMyQXdCeTVhMTdUMDVvTDdYRjdURHpINGNxS0Y1R1AzYXZ4?= =?utf-8?B?ZXBPcFE4YVBsNnhPT1FzYlFRcXYyRXU5V3dwanRxVzczOFdNd1l0dDg0KzUr?= =?utf-8?B?WFovcDEvV1Jjc0daWVV4Skx0bFRSQ1daUUhScThGbXNWNEpDc0JlQlVQYWpn?= =?utf-8?B?L3c4SzVpMVVSdDgzY0V4cm0vMTlqbHNBU3pDNUFHOHlrSDlaM1BmeWdjOHh6?= =?utf-8?B?Q3k1V1VSVnRlUGtzYkVTdWhiSURtSVFpNGxlY2ZENjBtWVoraHhBTXZiTklJ?= =?utf-8?B?YVp3dS9PU0lVbGdyekFVdnJ4SUZRcGhvQzg5TWNiMndPUDRWWFE4TlRXL3Fs?= =?utf-8?B?STVYSW13SFFjdlZtSTNCWkZKR2ZxcG1IM25UcWRhTzZORkFoWDZSZEVHNkxM?= =?utf-8?B?blhaSUpFRzNuUWptNmd0c0FwS3RBbW1ZVG5ML3hEaG9hR1ZkT0dXSGxScE9a?= =?utf-8?B?a29DbkZHK3F0K0pxVTBGK1VoSTlqU1N1d3RBdktlaitMdnBNZ0tMb1Zpd0RN?= =?utf-8?Q?sOSogo6+rlHKG6pS6VMODOsRSTvo6jea259VJsZ?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_" 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: 0038998d-d877-492a-fc52-08d987521043 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2021 16:14:37.8195 (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: akVUkaswVPB+dpkngD5ph801t74VLAmdLhJd5n9/vm6oS4z+LGVgOeCy4UnSbmYu1yjnxc7pUgaXja0nvajX3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR05MB8313 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/plain; charset="utf-8" Content-ID: <171EE3AD02120247887DFE46CDEFB4CC@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 T24gRnJpLCAyMDIxLTEwLTAxIGF0IDA4OjU1ICswMjAwLCBEYW5pZWwgR3VzdGFmc3NvbiB3cm90 ZToNCj4gQWgsIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gIEkgd2FzIHRvbyBmb2N1c2VkIG9u IGh1bnRpbmcgaW4gd2hhdCBuZXcgd2FzDQo+IGxpbmtlZCBhZ2FpbnN0IHRoYXQgSSBvdmVybG9v a2VkIHRoZSBvYnZpb3VzLiAgVGhhbmtzIGZvciBmaW5kaW5nIHRoZXNlLg0KDQpObyBwcm9ibGVt IGF0IGFsbCA6KSBUaGUgZXhpdCgpIGNoZWNrIGlzIHVzZWZ1bCBidXQgc3RpbGwgYSBsaXR0bGUN Cm9wYXF1ZSwgSSB0aGluaywgZXNwZWNpYWxseSBzaW5jZSAoZnJvbSBteSBuZXdiaWUgcGVyc3Bl Y3RpdmUpIHRoZXJlJ3MNCnNvIG11Y2ggb2YgdGhlIHBnY29tbW9uIHN0YXRpY2xpYiB0aGF0IGlz IGZvcmJpZGRlbiBmb3IgdXNlIGluIGxpYnBxLg0KDQpGaXhlZCBpbiB2NDQsIGF0dGFjaGVkOyBj aGFuZ2VzIGluIHNpbmNlLXY0My5kaWZmLnR4dC4NCg0KLS1KYWNvYg0K --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/plain; name="since-v43.diff.txt" Content-Description: since-v43.diff.txt Content-Disposition: attachment; filename="since-v43.diff.txt"; size=3689; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <648DA8D711B0A743B64AFF583950FE10@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 Y29tbWl0IDVhOTc4M2ZjMmZkZDllYTg3MjNkMmNkN2MzNzM3Yjg1NGMxMmZjMjUKQXV0aG9yOiBK YWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+CkRhdGU6ICAgTW9uIE9jdCA0IDA4 OjU5OjQ2IDIwMjEgLTA3MDAKCiAgICBzcXVhc2ghIG5zczogU3VwcG9ydCBsaWJuc3MgYXMgVExT IGxpYnJhcnkgaW4gbGlicHEKICAgIAogICAgRG9uJ3QgdXNlIHBhbGxvYygpIGluIGZyb250LWVu ZCBjb2RlLgogICAgCiAgICAtIHNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX3N0cmluZygpIHJldHVy bnMgc3RhdGljIGFsbG9jYXRpb25zIGZvciB0aGUKICAgICAgT3BlblNTTCBpbXBsZW1lbnRhdGlv biwgc28gZG8gdGhlIHNhbWUgaGVyZS4KICAgIC0gVXNlIFBRRXhwQnVmZmVycyBmb3Igc3ByaW50 Zi1zdHlsZSBhbGxvY2F0aW9uLgogICAgLSBVc2UgcGxhaW4gbWFsbG9jKCkgcmF0aGVyIHRoYW4g cGdfbWFsbG9jKCkuCgpkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9wcm90b2NvbF9uc3MuYyBiL3Ny Yy9jb21tb24vcHJvdG9jb2xfbnNzLmMKaW5kZXggZTgyMjVhNGQ5ZC4uNGQxMmM5ZjM4OCAxMDA2 NDQKLS0tIGEvc3JjL2NvbW1vbi9wcm90b2NvbF9uc3MuYworKysgYi9zcmMvY29tbW9uL3Byb3Rv Y29sX25zcy5jCkBAIC0zOSwyMSArMzksMjEgQEAgc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3Ry aW5nKGludCB2KQogCQkJYnJlYWs7CiAKIAkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18x XzA6Ci0JCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMCIpOworCQkJcmV0dXJuICJUTFN2MS4wIjsK ICNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKIAkJY2FzZSBTU0xfTElCUkFSWV9W RVJTSU9OX1RMU18xXzE6Ci0JCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMSIpOworCQkJcmV0dXJu ICJUTFN2MS4xIjsKICNlbmRpZgogI2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMgog CQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMjoKLQkJCXJldHVybiBwc3RyZHVwKCJU TFN2MS4yIik7CisJCQlyZXR1cm4gIlRMU3YxLjIiOwogI2VuZGlmCiAjaWZkZWYgU1NMX0xJQlJB UllfVkVSU0lPTl9UTFNfMV8zCiAJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOgot CQkJcmV0dXJuIHBzdHJkdXAoIlRMU3YxLjMiKTsKKwkJCXJldHVybiAiVExTdjEuMyI7CiAjZW5k aWYKIAl9CiAKLQlyZXR1cm4gcHN0cmR1cCgidW5rbm93biIpOworCXJldHVybiAidW5rbm93biI7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYwppbmRleCA1MWYwOWZiN2ZhLi5l MTU3NDk5N2VlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtbnNz LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jCkBAIC0yMjksMTIg KzIyOSwyMiBAQCBwZ3Rsc19vcGVuX2NsaWVudChQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoY29ubi0+ c3NsZGF0YWJhc2UgJiYgc3RybGVuKGNvbm4tPnNzbGRhdGFiYXNlKSA+IDApCiAJewotCQljaGFy CSAgICpzc2xkYXRhYmFzZV9wYXRoID0gcHNwcmludGYoInNxbDolcyIsIGNvbm4tPnNzbGRhdGFi YXNlKTsKKwkJUFFFeHBCdWZmZXJEYXRhIHNzbGRhdGFiYXNlX3BhdGg7CiAKLQkJY29ubi0+bnNz X2NvbnRleHQgPSBOU1NfSW5pdENvbnRleHQoc3NsZGF0YWJhc2VfcGF0aCwgIiIsICIiLCAiIiwK KwkJaW5pdFBRRXhwQnVmZmVyKCZzc2xkYXRhYmFzZV9wYXRoKTsKKwkJYXBwZW5kUFFFeHBCdWZm ZXIoJnNzbGRhdGFiYXNlX3BhdGgsICJzcWw6JXMiLCBjb25uLT5zc2xkYXRhYmFzZSk7CisKKwkJ aWYgKFBRRXhwQnVmZmVyRGF0YUJyb2tlbihzc2xkYXRhYmFzZV9wYXRoKSkKKwkJeworCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRl eHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsK KwkJfQorCisJCWNvbm4tPm5zc19jb250ZXh0ID0gTlNTX0luaXRDb250ZXh0KHNzbGRhdGFiYXNl X3BhdGguZGF0YSwgIiIsICIiLCAiIiwKIAkJCQkJCQkJCQkJJnBhcmFtcywKIAkJCQkJCQkJCQkJ TlNTX0lOSVRfUkVBRE9OTFkgfCBOU1NfSU5JVF9QSzExUkVMT0FEKTsKLQkJcGZyZWUoc3NsZGF0 YWJhc2VfcGF0aCk7CisJCXRlcm1QUUV4cEJ1ZmZlcigmc3NsZGF0YWJhc2VfcGF0aCk7CiAKIAkJ aWYgKCFjb25uLT5uc3NfY29udGV4dCkKIAkJewpAQCAtNjQ3LDcgKzY1NywxNCBAQCBwZ3Rsc19n ZXRfcGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwgc2l6ZV90ICpsZW4pCiAJCWdv dG8gY2xlYW51cDsKIAl9CiAKLQlyZXQgPSBwZ19tYWxsb2MoZGlnZXN0Lmxlbik7CisJcmV0ID0g bWFsbG9jKGRpZ2VzdC5sZW4pOworCWlmIChyZXQgPT0gTlVMTCkKKwl7CisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnlcbiIpKTsKKwkJZ290byBjbGVhbnVwOworCX0KKwogCW1lbWNweShyZXQsIGRp Z2VzdC5kYXRhLCBkaWdlc3QubGVuKTsKIAkqbGVuID0gZGlnZXN0X2xlbjsKIApAQCAtNzk5LDkg KzgxNiwxNSBAQCBzdGF0aWMgU0VDU3RhdHVzCiBwZ19sb2FkX25zc19tb2R1bGUoU0VDTU9ETW9k dWxlICoqbW9kdWxlLCBjb25zdCBjaGFyICpsaWJyYXJ5LCBjb25zdCBjaGFyICpuYW1lKQogewog CVNFQ01PRE1vZHVsZSAqbW9kOwotCWNoYXIJICAgKm1vZHVsZXNwZWM7CisJUFFFeHBCdWZmZXJE YXRhIG1vZHVsZXNwZWM7CiAKLQltb2R1bGVzcGVjID0gcHNwcmludGYoImxpYnJhcnk9XCIlc1wi LCBuYW1lPVwiJXNcIiIsIGxpYnJhcnksIG5hbWUpOworCWluaXRQUUV4cEJ1ZmZlcigmbW9kdWxl c3BlYyk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJm1vZHVsZXNwZWMsICJsaWJyYXJ5PVwiJXNcIiwg bmFtZT1cIiVzXCIiLCBsaWJyYXJ5LCBuYW1lKTsKKwlpZiAoUFFFeHBCdWZmZXJEYXRhQnJva2Vu KG1vZHVsZXNwZWMpKQorCXsKKwkJUFJfU2V0RXJyb3IoU0VDX0VSUk9SX05PX01FTU9SWSwgMCk7 CisJCXJldHVybiBTRUNGYWlsdXJlOworCX0KIAogCS8qCiAJICogQXR0ZW1wdCB0byBsb2FkIHRo ZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyAicGFyZW50IgpAQCAt ODExLDggKzgzNCw4IEBAIHBnX2xvYWRfbnNzX21vZHVsZShTRUNNT0RNb2R1bGUgKiptb2R1bGUs IGNvbnN0IGNoYXIgKmxpYnJhcnksIGNvbnN0IGNoYXIgKm5hbWUpCiAJICogZGVmaW5lZCBpbiB0 aGUgbW9kdWxlc3BlYywgYW5kIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgYW55dGhpbmcgYnV0CiAJ ICogZGlyZWN0bHkgYWRkcmVzc2VkIG1vZHVsZXMgd2Ugc2hvdWxkIHBhc3MgUFJfRkFMU0UuCiAJ ICovCi0JbW9kID0gU0VDTU9EX0xvYWRVc2VyTW9kdWxlKG1vZHVsZXNwZWMsIE5VTEwsIFBSX0ZB TFNFKTsKLQlwZnJlZShtb2R1bGVzcGVjKTsKKwltb2QgPSBTRUNNT0RfTG9hZFVzZXJNb2R1bGUo bW9kdWxlc3BlYy5kYXRhLCBOVUxMLCBQUl9GQUxTRSk7CisJdGVybVBRRXhwQnVmZmVyKCZtb2R1 bGVzcGVjKTsKIAogCWlmIChtb2QgJiYgbW9kLT5sb2FkZWQpCiAJewo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch" Content-Description: v44-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch Content-Disposition: attachment; filename="v44-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch"; size=105631; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBlOGU4YTI2OTZlNDgxNGU5MDY1NWVhODMwNzZjYWU2Njk0OTMwZDRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MjIgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw MS8xMF0gbnNzOiBTdXBwb3J0IGxpYm5zcyBhcyBUTFMgbGlicmFyeSBpbiBsaWJwcQoKVGhpcyBj b21taXQgY29udGFpbnMgdGhlIGZyb250ZW5kIGFuZCBiYWNrZW5kIHBvcnRpb24gb2YgVExTIHN1 cHBvcnQKaW4gbGlicHEgdG8gYWxsb3cgZW5jcnlwdGVkIGNvbm5lY3Rpb25zIHVzaW5nIE5TUy4g VGhlIGltcGxlbWVudGF0aW9uCmlzIGRvbmUgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciB0 aGUgT3BlblNTTCBzdXBwb3J0IGFuZCBsZXZlcmFnZXMKdGhlIHNhbWUgaW50ZXJuYWwgQVBJIGZv ciBhYnN0cmFjdGluZyBsaWJyYXJ5IHNwZWNpZmljIGRldGFpbHMuCgpBIG5ldyBHVUMsIHNzbF9k YXRhYmFzZSwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgTlNTIGRhdGFiYXNlIHVzZWQgZm9yCnRo ZSBzZXJ2ZXJzaWRlIGNlcnRpZmljYXRlcyBhbmQga2V5cy4gVGhlIGV4aXN0aW5nIGNlcnRpZmlj YXRlIGFuZCBrZXkKR1VDcyBhcmUgdXNlZCBmb3IgcHJvdmlkaW5nIGNlcnRpZmljYXRlIGFuZCBr ZXkgbmlja25hbWVzLgoKQ2xpZW50IHNpZGUgdGhlcmUgaXMgYSBuZXcgY29ubmVjdGlvbiBwYXJh bWV0ZXIsIGNlcnRfZGF0YWJhc2UsIHRvCmlkZW50aWZ5IHRoZSBjbGllbnQgY2VydCBhbmQga2V5 LiBBbGwgZXhpc3Rpbmcgc3NsbW9kZXMgYXJlIHN1cHBvcnRlZAppbiB0aGUgc2FtZSB3YXkgYXMg d2l0aCBPcGVuU1NMLgoKQXV0aG9yczogRGFuaWVsIEd1c3RhZnNzb24sIEFuZHJldyBEdW5zdGFu LCBKYWNvYiBDaGFtcGlvbgpSZXZpZXdlZC1ieTogTWljaGFlbCBQYXF1aWVyCi0tLQogLi4uL3Bv c3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICAgMiArLQogc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC5jICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFj a2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMgICAgICAgICAgICAgfCAxNTc0ICsrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAg ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICAg MTggKy0KIHNyYy9jb21tb24vY2lwaGVyX25zcy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAx OTIgKysKIHNyYy9jb21tb24vcHJvdG9jb2xfbnNzLmMgICAgICAgICAgICAgICAgICAgICB8ICAg NTkgKwogc3JjL2luY2x1ZGUvY29tbW9uL25zcy5oICAgICAgICAgICAgICAgICAgICAgIHwgICA1 MiArCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oICAgICAgICAgICAgICAgICAgfCAgIDE1 ICstCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oICAgICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaCAgICAgICAgICAgICAgICB8ICAgIDIg Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8ICAgIDQg Kwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jICAgICAgICAgIHwgMTIyMyAr KysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyAgICAgICAgICAg ICAgfCAgIDIxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICAgICAgICAg ICB8ICAgMTEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAgICAg IHwgICAyOSArLQogMTYgZmlsZXMgY2hhbmdlZCwgMzIwMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1u c3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21tb24vY2lwaGVyX25zcy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9wcm90b2NvbF9uc3MuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbmNsdWRlL2NvbW1vbi9uc3MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4IGM3YjdkYjgwNjUuLjZkNjM1Mjg5NTQgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTQ0 OSw3ICs5NDQ5LDcgQEAgRE8gJGQkCiAgICAgRU5EOwogJGQkOwogRVJST1I6ICBpbnZhbGlkIG9w dGlvbiAicGFzc3dvcmQiCi1ISU5UOiAgVmFsaWQgb3B0aW9ucyBpbiB0aGlzIGNvbnRleHQgYXJl OiBzZXJ2aWNlLCBwYXNzZmlsZSwgY2hhbm5lbF9iaW5kaW5nLCBjb25uZWN0X3RpbWVvdXQsIGRi bmFtZSwgaG9zdCwgaG9zdGFkZHIsIHBvcnQsIG9wdGlvbnMsIGFwcGxpY2F0aW9uX25hbWUsIGtl ZXBhbGl2ZXMsIGtlZXBhbGl2ZXNfaWRsZSwga2VlcGFsaXZlc19pbnRlcnZhbCwga2VlcGFsaXZl c19jb3VudCwgdGNwX3VzZXJfdGltZW91dCwgc3NsbW9kZSwgc3NsY29tcHJlc3Npb24sIHNzbGNl cnQsIHNzbGtleSwgc3Nscm9vdGNlcnQsIHNzbGNybCwgc3NsY3JsZGlyLCBzc2xzbmksIHJlcXVp cmVwZWVyLCBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24sIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lv biwgZ3NzZW5jbW9kZSwga3Jic3J2bmFtZSwgZ3NzbGliLCB0YXJnZXRfc2Vzc2lvbl9hdHRycywg dXNlX3JlbW90ZV9lc3RpbWF0ZSwgZmR3X3N0YXJ0dXBfY29zdCwgZmR3X3R1cGxlX2Nvc3QsIGV4 dGVuc2lvbnMsIHVwZGF0YWJsZSwgdHJ1bmNhdGFibGUsIGZldGNoX3NpemUsIGJhdGNoX3NpemUs IGFzeW5jX2NhcGFibGUsIGtlZXBfY29ubmVjdGlvbnMKK0hJTlQ6ICBWYWxpZCBvcHRpb25zIGlu IHRoaXMgY29udGV4dCBhcmU6IHNlcnZpY2UsIHBhc3NmaWxlLCBjaGFubmVsX2JpbmRpbmcsIGNv bm5lY3RfdGltZW91dCwgZGJuYW1lLCBob3N0LCBob3N0YWRkciwgcG9ydCwgb3B0aW9ucywgYXBw bGljYXRpb25fbmFtZSwga2VlcGFsaXZlcywga2VlcGFsaXZlc19pZGxlLCBrZWVwYWxpdmVzX2lu dGVydmFsLCBrZWVwYWxpdmVzX2NvdW50LCB0Y3BfdXNlcl90aW1lb3V0LCBzc2xtb2RlLCBzc2xj b21wcmVzc2lvbiwgc3NsY2VydCwgc3Nsa2V5LCBzc2xyb290Y2VydCwgc3NsY3JsLCBzc2xjcmxk aXIsIHNzbHNuaSwgcmVxdWlyZXBlZXIsIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiwgc3NsX21h eF9wcm90b2NvbF92ZXJzaW9uLCBnc3NlbmNtb2RlLCBrcmJzcnZuYW1lLCBnc3NsaWIsIHRhcmdl dF9zZXNzaW9uX2F0dHJzLCBzc2xkYXRhYmFzZSwgdXNlX3JlbW90ZV9lc3RpbWF0ZSwgZmR3X3N0 YXJ0dXBfY29zdCwgZmR3X3R1cGxlX2Nvc3QsIGV4dGVuc2lvbnMsIHVwZGF0YWJsZSwgdHJ1bmNh dGFibGUsIGZldGNoX3NpemUsIGJhdGNoX3NpemUsIGFzeW5jX2NhcGFibGUsIGtlZXBfY29ubmVj dGlvbnMKIENPTlRFWFQ6ICBTUUwgc3RhdGVtZW50ICJBTFRFUiBTRVJWRVIgbG9vcGJhY2tfbm9w dyBPUFRJT05TIChBREQgcGFzc3dvcmQgJ2R1bW15cHcnKSIKIFBML3BnU1FMIGZ1bmN0aW9uIGlu bGluZV9jb2RlX2Jsb2NrIGxpbmUgMyBhdCBFWEVDVVRFCiAtLSBJZiB3ZSBhZGQgYSBwYXNzd29y ZCBmb3Igb3VyIHVzZXIgbWFwcGluZyBpbnN0ZWFkLCB3ZSBzaG91bGQgZ2V0IGEgZGlmZmVyZW50 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJw cS9hdXRoLmMKaW5kZXggYTMxN2FlZjFjOS4uYWRkOTJkYjg3YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAtMjc1 Miw3ICsyNzUyLDEzIEBAIENoZWNrQ2VydEF1dGgoUG9ydCAqcG9ydCkKIAlpbnQJCQlzdGF0dXNf Y2hlY2tfdXNlcm1hcCA9IFNUQVRVU19FUlJPUjsKIAljaGFyCSAgICpwZWVyX3VzZXJuYW1lID0g TlVMTDsKIAorI2lmIGRlZmluZWQoVVNFX09QRU5TU0wpCiAJQXNzZXJ0KHBvcnQtPnNzbCk7Cisj ZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisJQXNzZXJ0KHBvcnQtPnByX2ZkKTsKKyNlbHNlCisJQXNz ZXJ0KGZhbHNlKTsKKyNlbmRpZgogCiAJLyogc2VsZWN0IHRoZSBjb3JyZWN0IGZpZWxkIHRvIGNv bXBhcmUgKi8KIAlzd2l0Y2ggKHBvcnQtPmhiYS0+Y2xpZW50Y2VydG5hbWUpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMgYi9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUtbnNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZWY4 ZGE4YjNkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1u c3MuYwpAQCAtMCwwICsxLDE1NzQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGJlLXNl Y3VyZS1uc3MuYworICoJICBmdW5jdGlvbnMgZm9yIHN1cHBvcnRpbmcgTlNTIGFzIGEgVExTIGJh Y2tlbmQKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElE RU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1uc3MuYworICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5j bHVkZSA8c3lzL3N0YXQuaD4KKworI2luY2x1ZGUgImNvbW1vbi9uc3MuaCIKKworLyoKKyAqIFRo ZSBuc3ByL29ic29sZXRlL3Byb3R5cGVzLmggTlNQUiBoZWFkZXIgdHlwZWRlZnMgdWludDY0IGFu ZCBpbnQ2NCB3aXRoCisgKiBjb2xsaWRpbmcgZGVmaW5pdGlvbnMgZnJvbSBvdXJzLCBjYXVzaW5n IGEgbXVjaCBleHBlY3RlZCBjb21waWxlciBlcnJvci4KKyAqIFJlbW92ZSBiYWNrd2FyZHMgY29t cGF0aWJpbGl0eSB3aXRoIGFuY2llbnQgTlNQUiB2ZXJzaW9ucyB0byBhdm9pZCB0aGlzLgorICov CisjZGVmaW5lIE5PX05TUFJfMTBfU1VQUE9SVAorI2luY2x1ZGUgPG5zcHIvbnNwci5oPgorI2lu Y2x1ZGUgPG5zcHIvcHJlcnJvci5oPgorI2luY2x1ZGUgPG5zcHIvcHJpby5oPgorI2luY2x1ZGUg PG5zcHIvcHJtZW0uaD4KKyNpbmNsdWRlIDxuc3ByL3BydHlwZXMuaD4KKworI2luY2x1ZGUgPG5z cy9uc3MuaD4KKyNpbmNsdWRlIDxuc3MvYmFzZTY0Lmg+CisjaW5jbHVkZSA8bnNzL2NlcnQuaD4K KyNpbmNsdWRlIDxuc3MvY2VydGRiLmg+CisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5jbHVk ZSA8bnNzL2tleWhpLmg+CisjaW5jbHVkZSA8bnNzL3BrMTFwdWIuaD4KKyNpbmNsdWRlIDxuc3Mv c2VjZGVyLmg+CisjaW5jbHVkZSA8bnNzL3NlY2Vyci5oPgorI2luY2x1ZGUgPG5zcy9zZWNpdGVt Lmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZHQuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjcG9ydC5oPgor I2luY2x1ZGUgPG5zcy9zc2wuaD4KKyNpbmNsdWRlIDxuc3Mvc3NsZXJyLmg+CisjaW5jbHVkZSA8 bnNzL3NzbHByb3RvLmg+CisKKyNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgorI2luY2x1ZGUg ImxpYnBxL2xpYnBxLmgiCisjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgorI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisKKy8qIGRlZmF1bHQgaW5pdCBob29r IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgc2hhcmVkIGxpYnJhcnkgKi8KK3N0YXRpYyB2b2lkIGRl ZmF1bHRfbnNzX3Rsc19pbml0KGJvb2wgaXNTZXJ2ZXJTdGFydCk7Cituc3NfdGxzX2luaXRfaG9v a190eXBlIG5zc190bHNfaW5pdF9ob29rID0gZGVmYXVsdF9uc3NfdGxzX2luaXQ7CisKK3N0YXRp YyBQUkRlc2NJZGVudGl0eSBwcl9pZDsKKworc3RhdGljIFBSSU9NZXRob2RzIHByX2lvbWV0aG9k czsKK3N0YXRpYyBOU1NJbml0Q29udGV4dCAqbnNzX2NvbnRleHQgPSBOVUxMOworc3RhdGljIFNT TFZlcnNpb25SYW5nZSBkZXNpcmVkX3NzbHZlcjsKKworc3RhdGljIGNoYXIgKmV4dGVybmFsX3Nz bF9wYXNzcGhyYXNlX2NiKFBLMTFTbG90SW5mbyAqc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICph cmcpOworc3RhdGljIGJvb2wgZHVtbXlfc3NsX3Bhc3N3ZF9jYl9jYWxsZWQgPSBmYWxzZTsKK3N0 YXRpYyBib29sIHNzbF9pc19zZXJ2ZXJfc3RhcnQ7CisKKy8qCisgKiBQUl9JbXBvcnRUQ1BTb2Nr ZXQoKSBpcyBhIHByaXZhdGUgQVBJLCBidXQgdmVyeSB3aWRlbHkgdXNlZCwgYXMgaXQncyB0aGUK KyAqIG9ubHkgd2F5IHRvIG1ha2UgTlNTIHVzZSBhbiBhbHJlYWR5IHNldCB1cCBQT1NJWCBmaWxl IGRlc2NyaXB0b3IgcmF0aGVyCisgKiB0aGFuIG9wZW5pbmcgb25lIGl0c2VsZi4gVG8gcXVvdGUg dGhlIE5TUyBkb2N1bWVudGF0aW9uOgorICoKKyAqCQkiSW4gdGhlb3J5LCBjb2RlIHRoYXQgdXNl cyBQUl9JbXBvcnRUQ1BTb2NrZXQgbWF5IGJyZWFrIHdoZW4gTlNQUidzCisgKgkJaW1wbGVtZW50 YXRpb24gY2hhbmdlcy4gSW4gcHJhY3RpY2UsIHRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuIGJl Y2F1c2UKKyAqCQlOU1BSJ3MgaW1wbGVtZW50YXRpb24gaGFzIGJlZW4gc3RhYmxlIGZvciB5ZWFy cyBhbmQgYmVjYXVzZSBvZiBOU1BSJ3MKKyAqCQlzdHJvbmcgY29tbWl0bWVudCB0byBiYWNrd2Fy ZCBjb21wYXRpYmlsaXR5LiIKKyAqCisgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9l bi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNQUi9SZWZlcmVuY2UvUFJfSW1wb3J0VENQU29j a2V0CisgKgorICogVGhlIGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGluIDxwcml2YXRlL3BwcmlvLmg+ LCBidXQgYXMgaXQgaXMgYSBoZWFkZXIgbWFya2VkCisgKiBwcml2YXRlIHdlIGRlY2xhcmUgaXQg aGVyZSByYXRoZXIgdGhhbiBpbmNsdWRpbmcgaXQuCisgKi8KK05TUFJfQVBJKFBSRmlsZURlc2Mg KikgUFJfSW1wb3J0VENQU29ja2V0KGludCk7CisKKy8qIE5TUyBJTyBsYXllciBjYWxsYmFjayBv dmVycmlkZXMgKi8KK3N0YXRpYyBQUlN0YXR1cyBwZ19zc2xfY2xvc2UoUFJGaWxlRGVzYyAqZmQp OworLyogVXRpbGl0eSBmdW5jdGlvbnMgKi8KK3N0YXRpYyBQUkZpbGVEZXNjICppbml0X2lvbGF5 ZXIoUG9ydCAqcG9ydCk7CitzdGF0aWMgdWludDE2IHNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25z cyhpbnQgdik7CisKK3N0YXRpYyBjaGFyICpwZ19TU0xlcnJtZXNzYWdlKFBSRXJyb3JDb2RlIGVy cmNvZGUpOworc3RhdGljIFNFQ1N0YXR1cyBwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcs IFBSRmlsZURlc2MgKmZkLAorCQkJCQkJCQkJICBQUkJvb2wgY2hlY2tzaWcsIFBSQm9vbCBpc1Nl cnZlcik7CitzdGF0aWMgU0VDU3RhdHVzIHBnX2JhZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQ UkZpbGVEZXNjICpmZCk7CitzdGF0aWMgY2hhciAqZHVtbXlfc3NsX3Bhc3NwaHJhc2VfY2IoUEsx MVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7CitzdGF0aWMgY2hhciAq cGdfQ0VSVF9HZXREaXN0aW5ndWlzaGVkTmFtZShDRVJUQ2VydGlmaWNhdGUgKmNlcnQpOworc3Rh dGljIGNvbnN0IGNoYXIgKnRhZ190b19uYW1lKFNFQ09pZFRhZyB0YWcpOworc3RhdGljIFNFQ1N0 YXR1cyBwZ19TU0xTaHV0ZG93bkZ1bmModm9pZCAqcHJpdmF0ZV9kYXRhLCB2b2lkICpuc3NfZGF0 YSk7CitzdGF0aWMgdm9pZCBwZ19TU0xBbGVydFNlbnQoY29uc3QgUFJGaWxlRGVzYyAqZmQsIHZv aWQgKnByaXZhdGVfZGF0YSwgY29uc3QgU1NMQWxlcnQgKmFsZXJ0KTsKKworLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisv KgkJCQkJCSBQdWJsaWMgaW50ZXJmYWNlCQkJCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogYmVf dGxzX2luaXQKKyAqCQkJSW5pdGlhbGl6ZSB0aGUgbnNzIFRMUyBsaWJyYXJ5IGluIHRoZSBwb3N0 bWFzdGVyCisgKgorICogVGhlIG1ham9yaXR5IG9mIHRoZSBzZXR1cCBuZWVkcyB0byBoYXBwZW4g aW4gYmVfdGxzX29wZW5fc2VydmVyIHNpbmNlIHRoZQorICogTlNQUiBpbml0aWFsaXphdGlvbiBt dXN0IGhhcHBlbiBhZnRlciB0aGUgZm9ya2luZyBvZiB0aGUgYmFja2VuZC4gV2UgY291bGQKKyAq IHBvdGVudGlhbGx5IG1vdmUgc29tZSBwYXJ0cyBpbiB1bmRlciAhaXNTZXJ2ZXJTdGFydCwgYnV0 IHNvIGZhciB0aGlzIGlzIHRoZQorICogc2VwYXJhdGlvbiBjaG9zZW4uCisgKi8KK2ludAorYmVf dGxzX2luaXQoYm9vbCBpc1NlcnZlclN0YXJ0KQoreworCVNFQ1N0YXR1cwlzdGF0dXM7CisJU1NM VmVyc2lvblJhbmdlIHN1cHBvcnRlZF9zc2x2ZXI7CisKKwlzdGF0dXMgPSBTU0xfQ29uZmlnU2Vy dmVyU2Vzc2lvbklEQ2FjaGVXaXRoT3B0KDAsIDAsIE5VTEwsIDEsIDAsIDAsIFBSX0ZBTFNFKTsK KwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KGlzU2VydmVyU3RhcnQg PyBGQVRBTCA6IExPRywKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29ubmVjdCB0byBUTFMgY29u bmVjdGlvbiBjYWNoZTogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigp KSkpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICghc3NsX2RhdGFiYXNlIHx8IHN0cmxlbihz c2xfZGF0YWJhc2UpID09IDApCisJeworCQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6 IExPRywKKwkJCQkoZXJybXNnKCJubyBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBzcGVjaWZpZWQiKSkp OworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBXZSBjaGVjayBmb3IgdGhlIGRlc2lyZWQg VExTIHZlcnNpb24gcmFuZ2UgaGVyZSwgZXZlbiB0aG91Z2ggd2UgY2Fubm90CisJICogc2V0IGl0 IHVudGlsIGJlX29wZW5fc2VydmVyIHN1Y2ggdGhhdCB3ZSBjYW4gYmUgY29tcGF0aWJsZSB3aXRo IGhvdyB0aGUKKwkgKiBPcGVuU1NMIGJhY2tlbmQgcmVwb3J0cyBlcnJvcnMgZm9yIGluY29tcGF0 aWJsZSByYW5nZSBjb25maWd1cmF0aW9ucy4KKwkgKiBTZXQgZWl0aGVyIHRoZSBkZWZhdWx0IHN1 cHBvcnRlZCBUTFMgdmVyc2lvbiByYW5nZSwgb3IgdGhlIGNvbmZpZ3VyZWQKKwkgKiByYW5nZSBm cm9tIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiBhbmQgc3NsX21heF9wcm90b2NvbCB2ZXJzaW9u LiBJbgorCSAqIGNhc2UgdGhlIHVzZXIgaGFzbid0IGRlZmluZWQgdGhlIG1heGltdW0gYWxsb3dl ZCB2ZXJzaW9uIHdlIGZhbGwgYmFjaworCSAqIHRvIHRoZSBoaWdoZXN0IHZlcnNpb24gVExTIHRo YXQgdGhlIGxpYnJhcnkgc3VwcG9ydHMuCisJICovCisJaWYgKFNTTF9WZXJzaW9uUmFuZ2VHZXRT dXBwb3J0ZWQoc3NsX3ZhcmlhbnRfc3RyZWFtLCAmc3VwcG9ydGVkX3NzbHZlcikgIT0gU0VDU3Vj Y2VzcykKKwl7CisJCWVyZXBvcnQoaXNTZXJ2ZXJTdGFydCA/IEZBVEFMIDogTE9HLAorCQkJCShl cnJtc2coInVuYWJsZSB0byBnZXQgZGVmYXVsdCBwcm90b2NvbCBzdXBwb3J0IGZyb20gTlNTIikp KTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogU2V0IHRoZSBmYWxsYmFjayB2ZXJzaW9u cyBmb3IgdGhlIFRMUyBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlIHRvIGEKKwkgKiBjb21iaW5hdGlv biBvZiBvdXIgbWluaW1hbCByZXF1aXJlbWVudCBhbmQgdGhlIGxpYnJhcnkgbWF4aW11bS4gRXJy b3IKKwkgKiBtZXNzYWdlcyBzaG91bGQgYmUga2VwdCBpZGVudGljYWwgdG8gdGhvc2UgaW4gYmUt c2VjdXJlLW9wZW5zc2wuYyB0bworCSAqIG1ha2UgdHJhbnNsYXRpb25zIGVhc2llci4KKwkgKi8K KwlkZXNpcmVkX3NzbHZlci5taW4gPSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA7CisJZGVz aXJlZF9zc2x2ZXIubWF4ID0gc3VwcG9ydGVkX3NzbHZlci5tYXg7CisKKwlpZiAoc3NsX21pbl9w cm90b2NvbF92ZXJzaW9uKQorCXsKKwkJaW50CQkJdmVyID0gc3NsX3Byb3RvY29sX3ZlcnNpb25f dG9fbnNzKHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CisKKwkJaWYgKHZlciA9PSAtMSkKKwkJ eworCQkJZXJlcG9ydChpc1NlcnZlclN0YXJ0ID8gRkFUQUwgOiBMT0csCisJCQkJCShlcnJtc2co IlwiJXNcIiBzZXR0aW5nIFwiJXNcIiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiLAorCQkJ CQkJCSJzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCUdldENvbmZpZ09wdGlvbigi c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uIiwKKwkJCQkJCQkJCQkJZmFsc2UsIGZhbHNlKSkpKTsK KwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlmICh2ZXIgPiAwKQorCQkJZGVzaXJlZF9zc2x2ZXIu bWluID0gdmVyOworCX0KKworCWlmIChzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24pCisJeworCQlp bnQJCQl2ZXIgPSBzc2xfcHJvdG9jb2xfdmVyc2lvbl90b19uc3Moc3NsX21heF9wcm90b2NvbF92 ZXJzaW9uKTsKKworCQlpZiAodmVyID09IC0xKQorCQl7CisJCQllcmVwb3J0KGlzU2VydmVyU3Rh cnQgPyBGQVRBTCA6IExPRywKKwkJCQkJKGVycm1zZygiXCIlc1wiIHNldHRpbmcgXCIlc1wiIG5v dCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIsCisJCQkJCQkJInNzbF9tYXhfcHJvdG9jb2xfdmVy c2lvbiIsCisJCQkJCQkJR2V0Q29uZmlnT3B0aW9uKCJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24i LAorCQkJCQkJCQkJCQlmYWxzZSwgZmFsc2UpKSkpOworCQkJcmV0dXJuIC0xOworCQl9CisJCWlm ICh2ZXIgPiAwKQorCQkJZGVzaXJlZF9zc2x2ZXIubWF4ID0gdmVyOworCisJCWlmICh2ZXIgPCBk ZXNpcmVkX3NzbHZlci5taW4pCisJCXsKKwkJCWVyZXBvcnQoaXNTZXJ2ZXJTdGFydCA/IEZBVEFM IDogTE9HLAorCQkJCQkoZXJybXNnKCJjb3VsZCBub3Qgc2V0IFNTTCBwcm90b2NvbCB2ZXJzaW9u IHJhbmdlIiksCisJCQkJCSBlcnJkZXRhaWwoIlwiJXNcIiBjYW5ub3QgYmUgaGlnaGVyIHRoYW4g XCIlc1wiIiwKKwkJCQkJCQkgICAic3NsX21pbl9wcm90b2NvbF92ZXJzaW9uIiwKKwkJCQkJCQkg ICAic3NsX21heF9wcm90b2NvbF92ZXJzaW9uIikpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0K KworCS8qCisJICogU2V0IHRoZSBwYXNzcGhyYXNlIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgdXNl ZCBib3RoIHRvIG9idGFpbiB0aGUKKwkgKiBwYXNzcGhyYXNlIGZyb20gdGhlIHVzZXIsIGFzIHdl bGwgYXMgYnkgTlNTIHRvIG9idGFpbiB0aGUgcGhyYXNlCisJICogcmVwZWF0ZWRseS4KKwkgKi8K Kwlzc2xfaXNfc2VydmVyX3N0YXJ0ID0gaXNTZXJ2ZXJTdGFydDsKKwkoKm5zc190bHNfaW5pdF9o b29rKSAoaXNTZXJ2ZXJTdGFydCk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGJlX3Rsc19v cGVuX3NlcnZlcgorICoKKyAqIFNpbmNlIE5TUFIgaW5pdGlhbGl6YXRpb24gbXVzdCBoYXBwZW4g YWZ0ZXIgZm9ya2luZywgbW9zdCBvZiB0aGUgYWN0dWFsCisgKiBzZXR1cCBvZiBOU1BSL05TUyBp cyBkb25lIGhlcmUgcmF0aGVyIHRoYW4gaW4gYmVfdGxzX2luaXQuIFRoaXMgaW50cm9kdWNlCisg KiBkaWZmZXJlbmNlcyB3aXRoIHRoZSBPcGVuU1NMIHN1cHBvcnQgd2hlcmUgc29tZSBlcnJvcnMg YXJlIG9ubHkgcmVwb3J0ZWQKKyAqIGF0IHJ1bnRpbWUgd2l0aCBOU1Mgd2hlcmUgdGhleSBhcmUg cmVwb3J0ZWQgYXQgc3RhcnR1cCB3aXRoIE9wZW5TU0wuCisgKi8KK2ludAorYmVfdGxzX29wZW5f c2VydmVyKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlQUkZpbGVEZXNjICpt b2RlbDsKKwlQUkZpbGVEZXNjICpsYXllcjsKKwlDRVJUQ2VydGlmaWNhdGUgKnNlcnZlcl9jZXJ0 OworCVNFQ0tFWVByaXZhdGVLZXkgKnByaXZhdGVfa2V5OworCUNFUlRTaWduZWRDcmwgKmNybDsK KwlTRUNJdGVtCQljcmxuYW1lOworCWNoYXIJICAgKmNlcnRfZGF0YWJhc2U7CisJTlNTSW5pdFBh cmFtZXRlcnMgcGFyYW1zOworCisJLyoKKwkgKiBUaGUgTlNQUiBkb2N1bWVudGF0aW9uIHN0YXRl cyB0aGF0IHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gdmlhIFBSX0luaXQKKwkgKiBpcyBubyBsb25n ZXIgcmVxdWlyZWQsIGFzIHRoZSBmaXJzdCBjYWxsZXIgaW50byBOU1BSIHdpbGwgcGVyZm9ybSB0 aGUKKwkgKiBpbml0aWFsaXphdGlvbiBpbXBsaWNpdGx5LiBUaGUgZG9jdW1lbnRhdGlvbiBkb2Vz bid0IGhvd2V2ZXIgY2xhcmlmeQorCSAqIGZyb20gd2hpY2ggdmVyc2lvbiB0aGlzIGlzIGhvbGRz IHRydWUsIHNvIGxldCdzIHBlcmZvcm0gdGhlIHBvdGVudGlhbGx5CisJICogc3VwZXJmbHVvdXMg aW5pdGlhbGl6YXRpb24gYW55d2F5cyB0byBhdm9pZCBjcmFzaGluZyBvbiBvbGRlciB2ZXJzaW9u cworCSAqIG9mIE5TUFIsIGFzIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgaW4gb3ZlcmhlYWQuICBU aGUgTlNTIGRvY3VtZW50YXRpb24KKwkgKiBzdGlsbCBzdGF0ZXMgdGhhdCBQUl9Jbml0IG11c3Qg YmUgY2FsbGVkIGluIHNvbWUgd2F5IChpbXBsaWNpdGx5IG9yCisJICogZXhwbGljaXRseSkuCisJ ICoKKwkgKiBUaGUgYmVsb3cgcGFyYW1ldGVycyBhcmUgd2hhdCB0aGUgaW1wbGljaXQgaW5pdGlh bGl6YXRpb24gd291bGQndmUgZG9uZQorCSAqIGZvciB1cywgYW5kIHNob3VsZCB3b3JrIGV2ZW4g Zm9yIG9sZGVyIHZlcnNpb25zIHdoZXJlIGl0IG1pZ2h0IG5vdCBiZQorCSAqIGRvbmUgYXV0b21h dGljYWxseS4gVGhlIGxhc3QgcGFyYW1ldGVyLCBtYXhQVERzLCBpcyBzZXQgdG8gdmFyaW91cwor CSAqIHZhbHVlcyBpbiBvdGhlciBjb2RlYmFzZXMsIGJ1dCBoYXMgYmVlbiB1bnVzZWQgc2luY2Ug TlNQUiAyLjEgd2hpY2ggd2FzCisJICogcmVsZWFzZWQgc29tZXRpbWUgaW4gMTk5OC4gSW4gY3Vy cmVudCB2ZXJzaW9ucyBvZiBOU1BSIGFsbCBwYXJhbWV0ZXJzCisJICogYXJlIGlnbm9yZWQuCisJ ICovCisJUFJfSW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJT1JJVFlfTk9STUFMLCAwIC8qIG1h eFBURHMgKi8gKTsKKworCS8qCisJICogVGhlIGNlcnRpZmljYXRlIHBhdGggKGNvbmZpZ2Rpcikg bXVzdCBjb250YWluIGEgdmFsaWQgTlNTIGRhdGFiYXNlLiBJZgorCSAqIHRoZSBjZXJ0aWZpY2F0 ZSBwYXRoIGlzbid0IGEgdmFsaWQgZGlyZWN0b3J5LCBOU1Mgd2lsbCBmYWxsIGJhY2sgb24gdGhl CisJICogc3lzdGVtIGNlcnRpZmljYXRlIGRhdGFiYXNlLiBJZiB0aGUgY2VydGlmaWNhdGUgcGF0 aCBpcyBhIGRpcmVjdG9yeSBidXQKKwkgKiBpcyBlbXB0eSB0aGVuIHRoZSBpbml0aWFsaXphdGlv biB3aWxsIGZhaWwuIE9uIHRoZSBjbGllbnQgc2lkZSB0aGlzIGNhbgorCSAqIGJlIGFsbG93ZWQg Zm9yIGFueSBzc2xtb2RlIGJ1dCB0aGUgdmVyaWZ5LXh4eCBvbmVzLgorCSAqIGh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NzI4NTYyIEZvciB0aGUgc2VydmVyIHNp ZGUKKwkgKiB3ZSB3b24ndCBhbGxvdyB0aGlzIHRvIGZhaWwgaG93ZXZlciwgYXMgd2UgcmVxdWly ZSB0aGUgY2VydGlmaWNhdGUgYW5kCisJICoga2V5IHRvIGV4aXN0LgorCSAqCisJICogVGhlIG9y aWdpbmFsIGRlc2lnbiBvZiBOU1Mgd2FzIGZvciBhIHNpbmdsZSBhcHBsaWNhdGlvbiB0byB1c2Ug YSBzaW5nbGUKKwkgKiBjb3B5IG9mIGl0LCBpbml0aWFsaXplZCB3aXRoIE5TU19Jbml0aWFsaXpl KCkgd2hpY2ggaXNuJ3QgcmV0dXJuaW5nIGFueQorCSAqIGhhbmRsZSB3aXRoIHdoaWNoIHRvIHJl ZmVyIHRvIE5TUy4gTlNTIGluaXRpYWxpemF0aW9uIGFuZCBzaHV0ZG93biBhcmUKKwkgKiBnbG9i YWwgZm9yIHRoZSBhcHBsaWNhdGlvbiwgc28gYSBzaHV0ZG93biBpbiBhbm90aGVyIE5TUyBlbmFi bGVkCisJICogbGlicmFyeSB3b3VsZCBjYXVzZSBOU1MgdG8gYmUgc3RvcHBlZCBmb3IgbGlicHEg YXMgd2VsbC4gIFRoZSBmaXggaGFzCisJICogYmVlbiB0byBpbnRyb2R1Y2UgTlNTX0luaXRDb250 ZXh0IHdoaWNoIHJldHVybnMgYSBjb250ZXh0IGhhbmRsZSB0bworCSAqIHBhc3MgdG8gTlNTX1No dXRkb3duQ29udGV4dC4gIE5TU19Jbml0Q29udGV4dCB3YXMgaW50cm9kdWNlZCBpbiBOU1MKKwkg KiAzLjEyLCBidXQgdGhlIHVzZSBvZiBpdCBpcyBub3QgdmVyeSB3ZWxsIGRvY3VtZW50ZWQuCisJ ICogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD03Mzg0NTYKKwkg KgorCSAqIFRoZSBJbml0UGFyYW1ldGVycyBzdHJ1Y3QgcGFzc2VkIGNhbiBiZSB1c2VkIHRvIG92 ZXJyaWRlIGludGVybmFsCisJICogdmFsdWVzIGluIE5TUywgYnV0IHRoZSB1c2FnZSBpcyBub3Qg ZG9jdW1lbnRlZCBhdCBhbGwuIFdoZW4gdXNpbmcKKwkgKiBOU1NfSW5pdCBpbml0aWFsaXphdGlv bnMsIHRoZSB2YWx1ZXMgYXJlIGluc3RlYWQgc2V0IHZpYSBQSzExX0NvbmZpZ3VyZQorCSAqIGNh bGxzIHNvIHRoZSBQSzExX0NvbmZpZ3VyZSBkb2N1bWVudGF0aW9uIGNhbiBiZSB1c2VkIHRvIGds ZWFuIHNvbWUKKwkgKiBkZXRhaWxzIG9uIHRoZXNlLgorCSAqCisJICogaHR0cHM6Ly9kZXZlbG9w ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9QS0NTMTEvTW9k dWxlX1NwZWNzCisJICovCisJbWVtc2V0KCZwYXJhbXMsICdcMCcsIHNpemVvZihwYXJhbXMpKTsK KwlwYXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisKKwlpZiAoIXNzbF9kYXRhYmFzZSB8 fCBzdHJsZW4oc3NsX2RhdGFiYXNlKSA9PSAwKQorCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJt c2coIm5vIGNlcnRpZmljYXRlIGRhdGFiYXNlIHNwZWNpZmllZCIpKSk7CisKKwljZXJ0X2RhdGFi YXNlID0gcHNwcmludGYoInNxbDolcyIsIHNzbF9kYXRhYmFzZSk7CisJbnNzX2NvbnRleHQgPSBO U1NfSW5pdENvbnRleHQoY2VydF9kYXRhYmFzZSwgIiIsICIiLCAiIiwKKwkJCQkJCQkJICAmcGFy YW1zLAorCQkJCQkJCQkgIE5TU19JTklUX1JFQURPTkxZIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7 CisJcGZyZWUoY2VydF9kYXRhYmFzZSk7CisKKwlpZiAoIW5zc19jb250ZXh0KQorCQllcmVwb3J0 KEZBVEFMLAorCQkJCShlcnJtc2coInVuYWJsZSB0byByZWFkIGNlcnRpZmljYXRlIGRhdGFiYXNl IFwiJXNcIjogJXMiLAorCQkJCQkJc3NsX2RhdGFiYXNlLCBwZ19TU0xlcnJtZXNzYWdlKFBSX0dl dEVycm9yKCkpKSkpOworCisJLyoKKwkgKiBJbXBvcnQgdGhlIGFscmVhZHkgb3BlbmVkIHNvY2tl dCBhcyB3ZSBkb24ndCB3YW50IHRvIHVzZSBOU1BSIGZ1bmN0aW9ucworCSAqIGZvciBvcGVuaW5n IHRoZSBuZXR3b3JrIHNvY2tldCBkdWUgdG8gaG93IHRoZSBQb3N0Z3JlU1FMIHByb3RvY29sIHdv cmtzCisJICogd2l0aCBUTFMgY29ubmVjdGlvbnMuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHBhcnQg b2YgdGhlIE5TUFIgcHVibGljIEFQSSwKKwkgKiBzZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBv ZiB0aGUgZmlsZSBmb3IgdGhlIHJhdGlvbmFsZSBvZiBzdGlsbCB1c2luZworCSAqIGl0LgorCSAq LworCXBvcnQtPnByX2ZkID0gUFJfSW1wb3J0VENQU29ja2V0KHBvcnQtPnNvY2spOworCWlmICgh cG9ydC0+cHJfZmQpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFi bGUgdG8gY29ubmVjdCB0byBzb2NrZXQiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkg KiBNb3N0IG9mIHRoZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSwgYW5kIGltcGxlbWVudGF0aW9u cyBvZiwgTlNTL05TUFIKKwkgKiB1c2UgdGhlIFBSX05ld1RDUFNvY2tldCgpIGZ1bmN0aW9uIGhl cmUsIHdoaWNoIGhhcyB0aGUgZHJhd2JhY2sgdGhhdCBpdAorCSAqIGNhbiBvbmx5IGNyZWF0ZSBJ UHY0IHNvY2tldHMuIEluc3RlYWQgdXNlIFBSX09wZW5UQ1BTb2NrZXQoKSB3aGljaAorCSAqIGNv cGVzIHdpdGggSVB2NiBhcyB3ZWxsLgorCSAqCisJICogV2UgdXNlIGEgbW9kZWwgZmlsZWRlc2Ny aXB0b3IgaGVyZSB3aGljaCBpcyBhIGNvbnN0cnVjdCBpbiBOU1BSL05TUyBpbgorCSAqIG9yZGVy IHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gdGVtcGxhdGUgZm9yIHNvY2tldHMgd2hpY2ggY2Fu IHRoZW4gYmUKKwkgKiBhcHBsaWVkIHRvIG5ldyBzb2NrZXRzIGNyZWF0ZWQuIFRoaXMgbWFrZXMg bW9yZSBzZW5zZSBpbiBhIHNlcnZlciB3aGljaAorCSAqIGFjY2VwdHMgbXVsdGlwbGUgY29ubmVj dGlvbnMgYW5kIHdhbnQgdG8gcGVyZm9ybSB0aGUgYm9pbGVycGxhdGUganVzdAorCSAqIG9uY2Us IGJ1dCBpdCBkb2VzIHByb3ZpZGUgYSBuaWNlIGFic3RyYWN0aW9uIGhlcmUgYXMgd2VsbCBpbiB0 aGF0IHdlCisJICogY2FuIGVycm9yIG91dCBlYXJseSB3aXRob3V0IGhhdmluZyBwZXJmb3JtZWQg YW55IG9wZXJhdGlvbiBvbiB0aGUgcmVhbAorCSAqIHNvY2tldC4KKwkgKi8KKwltb2RlbCA9IFBS X09wZW5UQ1BTb2NrZXQocG9ydC0+bGFkZHIuYWRkci5zc19mYW1pbHkpOworCWlmICghbW9kZWwp CisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gb3BlbiBz b2NrZXQiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBDb252ZXJ0IHRoZSBOU1BS IHNvY2tldCB0byBhbiBTU0wgc29ja2V0LiBFbnN1cmluZyB0aGUgc3VjY2VzcyBvZiB0aGlzCisJ ICogb3BlcmF0aW9uIGlzIGNyaXRpY2FsIGFzIE5TUyBTU0xfKiBmdW5jdGlvbnMgbWF5IHJldHVy biBTRUNTdWNjZXNzIG9uCisJICogdGhlIHNvY2tldCBldmVuIHRob3VnaCBTU0wgaGFzbid0IGJl ZW4gZW5hYmxlZCwgd2hpY2ggaW50cm9kdWNlIGEgcmlzaworCSAqIG9mIHNpbGVudCBkb3duZ3Jh ZGVzLgorCSAqLworCW1vZGVsID0gU1NMX0ltcG9ydEZEKE5VTEwsIG1vZGVsKTsKKwlpZiAoIW1v ZGVsKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGVu YWJsZSBUTFMgb24gc29ja2V0IikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogQ29u ZmlndXJlIGJhc2ljIHNldHRpbmdzIGZvciB0aGUgY29ubmVjdGlvbiBvdmVyIHRoZSBTU0wgc29j a2V0IGluCisJICogb3JkZXIgdG8gc2V0IGl0IHVwIGFzIGEgc2VydmVyLgorCSAqLworCWlmIChT U0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfU0VDVVJJVFksIFBSX1RSVUUpICE9IFNFQ1N1Y2Nlc3Mp CisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29uZmln dXJlIFRMUyBjb25uZWN0aW9uIikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChTU0xfT3B0 aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FTX1NFUlZFUiwgUFJfVFJVRSkgIT0gU0VDU3Vj Y2VzcyB8fAorCQlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FTX0NMSUVOVCwg UFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQko ZXJybXNnKCJ1bmFibGUgdG8gY29uZmlndXJlIFRMUyBjb25uZWN0aW9uIGFzIHNlcnZlciIpKSk7 CisJCXJldHVybiAtMTsKKwl9CisKKwkvKgorCSAqIFNTTHYyIGlzIGRpc2FibGVkIGJ5IGRlZmF1 bHQsIGFuZCBTU0x2MyB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJhbmdlCisJICogb2YgYWxs b3dlZCBwcm90b2NvbHMgZnVydGhlciBkb3duLiBTaW5jZSB3ZSByZWFsbHkgZG9uJ3Qgd2FudCB0 aGVzZSB0bworCSAqIGV2ZXIgYmUgZW5hYmxlZCwgbGV0J3MgdXNlIGJlbHRzIGFuZCBzdXNwZW5k ZXJzIGFuZCBleHBsaWNpdGx5IHR1cm4KKwkgKiB0aGVtIG9mZiBhcyB3ZWxsLgorCSAqLworCVNT TF9PcHRpb25TZXQobW9kZWwsIFNTTF9FTkFCTEVfU1NMMiwgUFJfRkFMU0UpOworCVNTTF9PcHRp b25TZXQobW9kZWwsIFNTTF9FTkFCTEVfU1NMMywgUFJfRkFMU0UpOworCisjaWZkZWYgU1NMX0NC Q19SQU5ET01fSVYKKworCS8qCisJICogRW5hYmxlIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgQkVB U1QgYXR0YWNrIGluIGNhc2UgdGhlIE5TUyBzZXJ2ZXIgaGFzCisJICogc3VwcG9ydCBmb3IgdGhh dC4gV2hpbGUgU1NMdjMgaXMgZGlzYWJsZWQsIHdlIG1heSBzdGlsbCBhbGxvdyBUTFN2MQorCSAq IHdoaWNoIGlzIGFmZmVjdGVkLiBUaGUgb3B0aW9uIGlzbid0IGRvY3VtZW50ZWQgYXMgYW4gU1NM IG9wdGlvbiwgYnV0IGFzCisJICogYW4gTlNTIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAqLwor CVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9DQkNfUkFORE9NX0lWLCBQUl9UUlVFKTsKKyNlbmRp ZgorCisJLyoKKwkgKiBDb25maWd1cmUgdGhlIGFsbG93ZWQgY2lwaGVycy4gSWYgdGhlcmUgYXJl IG5vIHVzZXIgcHJlZmVycmVkIHN1aXRlcywKKwkgKiBzZXQgdGhlIGRvbWVzdGljIHBvbGljeS4K KwkgKgorCSAqIEhpc3RvcmljYWxseSB0aGVyZSB3ZXJlIGRpZmZlcmVudCBjaXBoZXIgcG9saWNp ZXMgYmFzZWQgb24gZXhwb3J0IChhbmQKKwkgKiBpbXBvcnQpIHJlc3RyaWN0aW9uczogRG9tZXN0 aWMsIEV4cG9ydCBhbmQgRnJhbmNlLiBUaGVzZSBhcmUgc2luY2UgbG9uZworCSAqIHJlbW92ZWQg d2l0aCBhbGwgY2lwaGVycyBiZWluZyBlbmFibGVkIGJ5IGRlZmF1bHQuIER1ZSB0byBiYWNrd2Fy ZHMKKwkgKiBjb21wYXRpYmlsaXR5LCB0aGUgb2xkIEFQSSBpcyBzdGlsbCB1c2VkIGV2ZW4gdGhv dWdoIGFsbCB0aHJlZSBwb2xpY2llcworCSAqIG5vdyBkbyB0aGUgc2FtZSB0aGluZy4KKwkgKgor CSAqIElmIFNTTENpcGhlclN1aXRlcyBkZWZpbmUgYSBwb2xpY3kgb2YgdGhlIHVzZXIsIHdlIHNl dCB0aGF0IHJhdGhlciB0aGFuCisJICogZW5hYmxpbmcgYWxsIGNpcGhlcnMgdmlhIE5TU19TZXRE b21lc3RpY1BvbGljeS4KKwkgKgorCSAqIFRPRE86IHdoaWxlIHRoaXMgY29kZSB3b3JrcywgdGhl IHNldCBvZiBjaXBoZXJzIHdoaWNoIGNhbiBiZSBzZXQgYW5kCisJICogc3RpbGwgZW5kIHVwIHdp dGggYSB3b3JraW5nIHNvY2tldCBpcyB3b2VmdWxseSB1bmRlcmRvY3VtZW50ZWQgZm9yCisJICog YW55dGhpbmcgbW9yZSByZWNlbnQgdGhhbiBTU0x2MyAodGhlIGNvZGUgZm9yIFRMUyBhY3R1YWxs eSBjYWxscyBzc2wzCisJICogZnVuY3Rpb25zIHVuZGVyIHRoZSBob29kIGZvciBTU0xfQ2lwaGVy UHJlZlNldCksIHNvIGl0J3MgdW5jbGVhciBpZgorCSAqIHRoaXMgaXMgaGVscGZ1bCBvciBub3Qu IFVzaW5nIHRoZSBwb2xpY2llcyB3b3JrcywgYnV0IG1heSBiZSB0b28KKwkgKiBjb2Fyc2VseSBn cmFpbmVkLgorCSAqCisJICogQW5vdGhlciBUT0RPOiBUaGUgU1NMX0ltcGxlbWVudGVkQ2lwaGVy cyB0YWJsZSByZXR1cm5lZCB3aXRoIGNhbGxpbmcKKwkgKiBTU0xfR2V0SW1wbGVtZW50ZWRDaXBo ZXJzIGlzIHNvcnRlZCBpbiBzZXJ2ZXIgcHJlZmVyZW5jZSBvcmRlci4gU29ydGluZworCSAqIFNT TENpcGhlclN1aXRlcyBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9mIHRoZSBjaXBoZXJzIHRoZXJl aW4gY291bGQgYmUKKwkgKiBhIHdheSB0byBpbXBsZW1lbnQgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lw aGVycyAtIGlmIHdlIGF0IGFsbCB3YW50IHRvIHVzZQorCSAqIGNpcGhlciBzZWxlY3Rpb24gZm9y IE5TUyBsaWtlIGhvdyB3ZSBkbyBpdCBmb3IgT3BlblNTTCB0aGF0IGlzLgorCSAqLworCisJLyoK KwkgKiBJZiBubyBjaXBoZXJzIGFyZSBzcGVjaWZpZWQsIGVuYWJsZSB0aGVtIGFsbC4KKwkgKi8K KwlpZiAoIVNTTENpcGhlclN1aXRlcyB8fCBzdHJsZW4oU1NMQ2lwaGVyU3VpdGVzKSA9PSAwKQor CXsKKwkJc3RhdHVzID0gTlNTX1NldERvbWVzdGljUG9saWN5KCk7CisJCWlmIChzdGF0dXMgIT0g U0VDU3VjY2VzcykKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShlcnJtc2coInVu YWJsZSB0byBzZXQgY2lwaGVyIHBvbGljeTogJXMiLAorCQkJCQkJCXBnX1NTTGVycm1lc3NhZ2Uo UFJfR2V0RXJyb3IoKSkpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJ Y2hhcgkgICAqY2lwaGVycywKKwkJCQkgICAqYzsKKworCQljaGFyCSAgICpzZXAgPSAiOjssICI7 CisJCVBSVWludDE2CWNpcGhlcmNvZGU7CisJCWNvbnN0CQlQUlVpbnQxNiAqbnNzX2NpcGhlcnM7 CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJLyoKKwkJICogSWYgdGhlIHVzZXIgaGFzIHNw ZWNpZmllZCBhIHNldCBvZiBwcmVmZXJyZWQgY2lwaGVyIHN1aXRlcyB3ZSBzdGFydAorCQkgKiBi eSB0dXJuaW5nIG9mZiBhbGwgdGhlIGV4aXN0aW5nIHN1aXRlcyB0byBhdm9pZCB0aGUgcmlzayBv ZiBkb3duLQorCQkgKiBncmFkZXMgdG8gYSB3ZWFrZXIgY2lwaGVyIHRoYW4gZXhwZWN0ZWQuCisJ CSAqLworCQluc3NfY2lwaGVycyA9IFNTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMoKTsKKwkJZm9y IChpbnQgaSA9IDA7IGkgPCBTU0xfR2V0TnVtSW1wbGVtZW50ZWRDaXBoZXJzKCk7IGkrKykKKwkJ CVNTTF9DaXBoZXJQcmVmU2V0KG1vZGVsLCBuc3NfY2lwaGVyc1tpXSwgUFJfRkFMU0UpOworCisJ CWNpcGhlcnMgPSBwc3RyZHVwKFNTTENpcGhlclN1aXRlcyk7CisKKwkJZm9yIChjID0gc3RydG9r KGNpcGhlcnMsIHNlcCk7IGM7IGMgPSBzdHJ0b2soTlVMTCwgc2VwKSkKKwkJeworCQkJaWYgKHBn X2ZpbmRfY2lwaGVyKGMsICZjaXBoZXJjb2RlKSkKKwkJCXsKKwkJCQlzdGF0dXMgPSBTU0xfQ2lw aGVyUHJlZlNldChtb2RlbCwgY2lwaGVyY29kZSwgUFJfVFJVRSk7CisJCQkJZm91bmQgPSB0cnVl OworCQkJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJCQl7CisJCQkJCWVyZXBvcnQoQ09N TUVSUk9SLAorCQkJCQkJCShlcnJtc2coImludmFsaWQgY2lwaGVyLXN1aXRlIHNwZWNpZmllZDog JXMiLCBjKSkpOworCQkJCQlyZXR1cm4gLTE7CisJCQkJfQorCQkJfQorCQl9CisKKwkJcGZyZWUo Y2lwaGVycyk7CisKKwkJaWYgKCFmb3VuZCkKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJ CQkJCShlcnJtc2coIm5vIGNpcGhlci1zdWl0ZXMgZm91bmQiKSkpOworCQkJcmV0dXJuIC0xOwor CQl9CisJfQorCisJaWYgKFNTTF9WZXJzaW9uUmFuZ2VTZXQobW9kZWwsICZkZXNpcmVkX3NzbHZl cikgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2co InVuYWJsZSB0byBzZXQgcmVxdWVzdGVkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlIikpKTsK KwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogU2V0IHVwIHRoZSBjdXN0b20gSU8gbGF5ZXIg aW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwcm92aWRlIGN1c3RvbSBjYWxsLQorCSAqIGJhY2tzIGZv ciBJTyBvcGVyYXRpb25zIHdoaWNoIG92ZXJyaWRlIHRoZSBidWlsdC1pbiBiZWhhdmlvci4gRm9y IG5vdworCSAqIHdlIG5lZWQgdGhpcyBpbiBvcmRlciB0byBzdXBwb3J0IGRlYnVnIGJ1aWxkcyBv ZiBOU1MvTlNQUi4KKwkgKi8KKwlsYXllciA9IGluaXRfaW9sYXllcihwb3J0KTsKKwlpZiAoIWxh eWVyKQorCQlyZXR1cm4gLTE7CisKKwlpZiAoUFJfUHVzaElPTGF5ZXIocG9ydC0+cHJfZmQsIFBS X1RPUF9JT19MQVlFUiwgbGF5ZXIpICE9IFBSX1NVQ0NFU1MpCisJeworCQlQUl9DbG9zZShsYXll cik7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2coInVuYWJsZSB0byBwdXNoIElP IGxheWVyIikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXNlcnZlcl9jZXJ0ID0gUEsxMV9GaW5k Q2VydEZyb21OaWNrbmFtZShzc2xfY2VydF9maWxlLCAodm9pZCAqKSBwb3J0KTsKKwlpZiAoIXNl cnZlcl9jZXJ0KQorCXsKKwkJaWYgKGR1bW15X3NzbF9wYXNzd2RfY2JfY2FsbGVkKQorCQl7CisJ CQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkJKGVycm1zZygidW5hYmxlIHRvIGxvYWQgY2VydGlm aWNhdGUgZm9yIFwiJXNcIjogJXMiLAorCQkJCQkJCXNzbF9jZXJ0X2ZpbGUsIHBnX1NTTGVycm1l c3NhZ2UoUFJfR2V0RXJyb3IoKSkpLAorCQkJCQkgZXJyaGludCgiVGhlIGNlcnRpZmljYXRlIHJl cXVpcmVzIGEgcGFzc3dvcmQuIikpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQllbHNlCisJCXsK KwkJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCQkoZXJybXNnKCJ1bmFibGUgdG8gZmluZCBjZXJ0 aWZpY2F0ZSBmb3IgXCIlc1wiOiAlcyIsCisJCQkJCQkJc3NsX2NlcnRfZmlsZSwgcGdfU1NMZXJy bWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCXBy aXZhdGVfa2V5ID0gUEsxMV9GaW5kS2V5QnlBbnlDZXJ0KHNlcnZlcl9jZXJ0LCAodm9pZCAqKSBw b3J0KTsKKwlpZiAoIXByaXZhdGVfa2V5KQorCXsKKwkJaWYgKGR1bW15X3NzbF9wYXNzd2RfY2Jf Y2FsbGVkKQorCQl7CisJCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkJKGVycm1zZygidW5hYmxl IHRvIGxvYWQgcHJpdmF0ZSBrZXkgZm9yIFwiJXNcIjogJXMiLAorCQkJCQkJCXNzbF9jZXJ0X2Zp bGUsIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpLAorCQkJCQkgZXJyaGludCgiVGhl IHByaXZhdGUga2V5IHJlcXVpcmVzIGEgcGFzc3dvcmQuIikpKTsKKwkJCXJldHVybiAtMTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCQkoZXJybXNnKCJ1bmFi bGUgdG8gZmluZCBwcml2YXRlIGtleSBmb3IgXCIlc1wiOiAlcyIsCisJCQkJCQkJc3NsX2NlcnRf ZmlsZSwgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJCXJldHVybiAtMTsK KwkJfQorCX0KKworCS8qCisJICogTlNTIGRvZXNuJ3QgdXNlIENSTCBmaWxlcyBvbiBkaXNrLCBz byB3ZSB1c2UgdGhlIHNzbF9jcmxfZmlsZSBndWMgdG8KKwkgKiBjb250YWluIHRoZSBDUkwgbmlj a25hbWUgZm9yIHRoZSBjdXJyZW50IHNlcnZlciBjZXJ0aWZpY2F0ZSBpbiB0aGUgTlNTCisJICog Y2VydGlmaWNhdGUgZGF0YWJhc2UuIFRoZSBtYWluIGRpZmZlcmVuY2UgZnJvbSB0aGUgT3BlblNT TCBiYWNrZW5kIGlzCisJICogdGhhdCBOU1Mgd2lsbCB1c2UgdGhlIENSTCByZWdhcmRsZXNzLCBi dXQgYmVpbmcgYWJsZSB0byBtYWtlIHN1cmUgdGhlCisJICogQ1JMIGlzIGxvYWRlZCBzZWVtcyBs aWtlIGEgZ29vZCBmZWF0dXJlLgorCSAqLworCWlmIChzc2xfY3JsX2ZpbGVbMF0pCisJeworCQlT RUNJVEVNX0NvcHlJdGVtKE5VTEwsICZjcmxuYW1lLCAmc2VydmVyX2NlcnQtPmRlclN1YmplY3Qp OworCQljcmwgPSBTRUNfRmluZENybEJ5TmFtZShDRVJUX0dldERlZmF1bHRDZXJ0REIoKSwgJmNy bG5hbWUsIFNFQ19DUkxfVFlQRSk7CisJCWlmICghY3JsKQorCQl7CisJCQllcmVwb3J0KENPTU1F UlJPUiwKKwkJCQkJKGVycm1zZygic3BlY2lmaWVkIENSTCBub3QgZm91bmQgaW4gZGF0YWJhc2Ui KSkpOworCQkJcmV0dXJuIC0xOworCQl9CisJCVNFQ19EZXN0cm95Q3JsKGNybCk7CisJfQorCisJ LyoKKwkgKiBGaW5hbGx5IHdlIG11c3QgY29uZmlndXJlIHRoZSBzb2NrZXQgZm9yIGJlaW5nIGEg c2VydmVyIGJ5IHNldHRpbmcgdGhlCisJICogY2VydGlmaWNhdGUgYW5kIGtleS4gVGhlIE5VTEwg cGFyYW1ldGVyIGlzIGFuIFNTTEV4dHJhU2VydmVyQ2VydERhdGEKKwkgKiBwb2ludGVyIHdpdGgg dGhlIGZpbmFsIHBhcmFtZXRlciBiZWluZyB0aGUgc2l6ZSBvZiB0aGUgZXh0cmEgc2VydmVyCisJ ICogY2VydCBkYXRhIHN0cnVjdHVyZSBwb2ludGVkIHRvLiBUaGlzIGlzIHR5cGljYWxseSBvbmx5 IHVzZWQgZm9yCisJICogY3JlZGVudGlhbCBkZWxlZ2F0aW9uLgorCSAqLworCXN0YXR1cyA9IFNT TF9Db25maWdTZXJ2ZXJDZXJ0KG1vZGVsLCBzZXJ2ZXJfY2VydCwgcHJpdmF0ZV9rZXksIE5VTEws IDApOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9S LAorCQkJCShlcnJtc2coInVuYWJsZSB0byBjb25maWd1cmUgc2VydmVyIGZvciBUTFMgc2VydmVy IGNvbm5lY3Rpb25zOiAlcyIsCisJCQkJCQlwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkp KSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJc3NsX2xvYWRlZF92ZXJpZnlfbG9jYXRpb25zID0g dHJ1ZTsKKworCS8qCisJICogQXQgdGhpcyBwb2ludCwgd2Ugbm8gbG9uZ2VyIGhhdmUgdXNlIGZv ciB0aGUgY2VydGlmaWNhdGUgYW5kIHByaXZhdGUKKwkgKiBrZXkgYXMgdGhleSBoYXZlIGJlZW4g Y29waWVkIGludG8gdGhlIGNvbnRleHQgYnkgTlNTLiBEZXN0cm95IG91cgorCSAqIGNvcGllcyBl eHBsaWNpdGx5IHRvIGNsZWFuIG91dCB0aGUgbWVtb3J5IGFzIGJlc3Qgd2UgY2FuLgorCSAqLwor CUNFUlRfRGVzdHJveUNlcnRpZmljYXRlKHNlcnZlcl9jZXJ0KTsKKwlTRUNLRVlfRGVzdHJveVBy aXZhdGVLZXkocHJpdmF0ZV9rZXkpOworCisJLyogU2V0IHVwIGNlcnRpZmljYXRlIGF1dGhlbnRp Y2F0aW9uIGNhbGxiYWNrICovCisJc3RhdHVzID0gU1NMX0F1dGhDZXJ0aWZpY2F0ZUhvb2sobW9k ZWwsIHBnX2NlcnRfYXV0aF9oYW5kbGVyLCAodm9pZCAqKSBwb3J0KTsKKwlpZiAoc3RhdHVzICE9 IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFi bGUgdG8gaW5zdGFsbCBhdXRoY2VydCBob29rOiAlcyIsCisJCQkJCQlwZ19TU0xlcnJtZXNzYWdl KFBSX0dldEVycm9yKCkpKSkpOworCQlyZXR1cm4gLTE7CisJfQorCVNTTF9CYWRDZXJ0SG9vayht b2RlbCwgcGdfYmFkX2NlcnRfaGFuZGxlciwgKHZvaWQgKikgcG9ydCk7CisJU1NMX09wdGlvblNl dChtb2RlbCwgU1NMX1JFUVVFU1RfQ0VSVElGSUNBVEUsIFBSX1RSVUUpOworCVNTTF9PcHRpb25T ZXQobW9kZWwsIFNTTF9SRVFVSVJFX0NFUlRJRklDQVRFLCBQUl9GQUxTRSk7CisKKwkvKgorCSAq IEFwcGx5IHRoZSBjb25maWd1cmF0aW9uIGZyb20gdGhlIG1vZGVsIHRlbXBsYXRlIG9udG8gb3Vy IGFjdHVhbCBzb2NrZXQKKwkgKiB0byBzZXQgaXQgdXAgYXMgYSBUTFMgc2VydmVyLgorCSAqLwor CXBvcnQtPnByX2ZkID0gU1NMX0ltcG9ydEZEKG1vZGVsLCBwb3J0LT5wcl9mZCk7CisJaWYgKCFw b3J0LT5wcl9mZCkKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2coInVuYWJs ZSB0byBjb25maWd1cmUgc29ja2V0IGZvciBUTFMgc2VydmVyIG1vZGU6ICVzIiwKKwkJCQkJCXBn X1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwkv KgorCSAqIFRoZSBpbnRlbnRpb24gd2l0aCB0aGUgbW9kZWwgRkQgaXMgdG8ga2VlcCBpdCBhcyBh IHRlbXBsYXRlIGZvciBjb21pbmcKKwkgKiBjb25uZWN0aW9ucyB0byBhbW9ydGl6ZSB0aGUgY29z dCBhbmQgY29tcGxleGl0eSBhY3Jvc3MgYWxsIGNsaWVudAorCSAqIHNvY2tldHMuIFNpbmNlIHdl IHdvbid0IGdldCBhbm90aGVyIHNvY2tldCBjb25uZWN0ZWQgaW4gdGhpcyBiYWNrZW5kCisJICog d2UgY2FuIGhvd2V2ZXIgY2xvc2UgdGhlIG1vZGVsIGltbWVkaWF0ZWx5LgorCSAqLworCVBSX0Ns b3NlKG1vZGVsKTsKKworCS8qCisJICogRm9yY2UgYSBoYW5kc2hha2Ugb24gdGhlIG5leHQgSS9P IHJlcXVlc3QsIHRoZSBzZWNvbmQgcGFyYW1ldGVyIG1lYW5zCisJICogdGhhdCB3ZSBhcmUgYSBz ZXJ2ZXIsIFBSX0ZBTFNFIHdvdWxkIGluZGljYXRlIGJlaW5nIGEgY2xpZW50LiBOU1BSCisJICog cmVxdWlyZXMgdXMgdG8gY2FsbCBTU0xfUmVzZXRIYW5kc2hha2Ugc2luY2Ugd2UgaW1wb3J0ZWQg YW4gYWxyZWFkeQorCSAqIGVzdGFibGlzaGVkIHNvY2tldC4KKwkgKi8KKwlzdGF0dXMgPSBTU0xf UmVzZXRIYW5kc2hha2UocG9ydC0+cHJfZmQsIFBSX1RSVUUpOworCWlmIChzdGF0dXMgIT0gU0VD U3VjY2VzcykKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2coInVuYWJsZSB0 byBpbml0aWF0ZSBoYW5kc2hha2U6ICVzIiwKKwkJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0 RXJyb3IoKSkpKSk7CisJCXJldHVybiAtMTsKKwl9CisJc3RhdHVzID0gU1NMX0ZvcmNlSGFuZHNo YWtlKHBvcnQtPnByX2ZkKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVw b3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gaGFuZHNoYWtlOiAlcyIsCisJ CQkJCQlwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKSkpOworCQlyZXR1cm4gLTE7CisJ fQorCisJcG9ydC0+c3NsX2luX3VzZSA9IHRydWU7CisKKwkvKiBSZWdpc3RlciBvdXIgc2h1dGRv d24gY2FsbGJhY2sgKi8KKwlOU1NfUmVnaXN0ZXJTaHV0ZG93bihwZ19TU0xTaHV0ZG93bkZ1bmMs IHBvcnQpOworCisJLyogUmVnaXN0ZXIgY2FsbGJhY2sgZm9yIFRMUyBhbGVydHMgKi8KKwlTU0xf QWxlcnRTZW50Q2FsbGJhY2socG9ydC0+cHJfZmQsIHBnX1NTTEFsZXJ0U2VudCwgcG9ydCk7CisK KwlyZXR1cm4gMDsKK30KKworc3NpemVfdAorYmVfdGxzX3JlYWQoUG9ydCAqcG9ydCwgdm9pZCAq cHRyLCBzaXplX3QgbGVuLCBpbnQgKndhaXRmb3IpCit7CisJc3NpemVfdAkJbl9yZWFkOworCVBS RXJyb3JDb2RlIGVycjsKKworCW5fcmVhZCA9IFBSX1JlYWQocG9ydC0+cHJfZmQsIHB0ciwgbGVu KTsKKworCWlmIChuX3JlYWQgPCAwKQorCXsKKwkJZXJyID0gUFJfR2V0RXJyb3IoKTsKKworCQlp ZiAoZXJyID09IFBSX1dPVUxEX0JMT0NLX0VSUk9SKQorCQl7CisJCQkqd2FpdGZvciA9IFdMX1NP Q0tFVF9SRUFEQUJMRTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxzZQorCQkJ ZXJybm8gPSBFQ09OTlJFU0VUOworCX0KKworCXJldHVybiBuX3JlYWQ7Cit9CisKK3NzaXplX3QK K2JlX3Rsc193cml0ZShQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4sIGludCAqd2Fp dGZvcikKK3sKKwlzc2l6ZV90CQluX3dyaXRlOworCVBSRXJyb3JDb2RlIGVycjsKKwlQUkludG4J CWZsYWdzID0gMDsKKworCS8qCisJICogVGhlIGZsYWdzIHBhcmFtZXRlciB0byBQUl9TZW5kIGlz IG5vIGxvbmdlciB1c2VkIGFuZCBpcywgYWNjb3JkaW5nIHRvCisJICogdGhlIGRvY3VtZW50YXRp b24sIHJlcXVpcmVkIHRvIGJlIHplcm8uCisJICovCisJbl93cml0ZSA9IFBSX1NlbmQocG9ydC0+ cHJfZmQsIHB0ciwgbGVuLCBmbGFncywgUFJfSU5URVJWQUxfTk9fV0FJVCk7CisKKwlpZiAobl93 cml0ZSA8IDApCisJeworCQllcnIgPSBQUl9HZXRFcnJvcigpOworCisJCWlmIChlcnIgPT0gUFJf V09VTERfQkxPQ0tfRVJST1IpCisJCXsKKwkJCSp3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRFQUJM RTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxzZQorCQkJZXJybm8gPSBFQ09O TlJFU0VUOworCX0KKworCXJldHVybiBuX3dyaXRlOworfQorCisvKgorICogYmVfdGxzX2Nsb3Nl CisgKgorICogQ2FsbGJhY2sgZm9yIGNsb3NpbmcgZG93biB0aGUgY3VycmVudCBjb25uZWN0aW9u LCBpZiBhbnkuCisgKi8KK3ZvaWQKK2JlX3Rsc19jbG9zZShQb3J0ICpwb3J0KQoreworCWlmICgh cG9ydCkKKwkJcmV0dXJuOworCS8qCisJICogSW1tZWRpYXRlbHkgc2lnbmFsIHRvIHRoZSByZXN0 IG9mIHRoZSBiYWNrZW5kIHRoYXQgdGhpcyBjb25ubmVjdGlvbiBpcworCSAqIG5vIGxvbmdlciB0 byBiZSBjb25zaWRlcmVkIHRvIGJlIHVzaW5nIFRMUyBlbmNyeXB0aW9uLgorCSAqLworCXBvcnQt PnNzbF9pbl91c2UgPSBmYWxzZTsKKworCWlmIChwb3J0LT5wZWVyX2NuKQorCXsKKwkJU1NMX0lu dmFsaWRhdGVTZXNzaW9uKHBvcnQtPnByX2ZkKTsKKwkJcGZyZWUocG9ydC0+cGVlcl9jbik7CisJ CXBvcnQtPnBlZXJfY24gPSBOVUxMOworCX0KKworCVBSX0Nsb3NlKHBvcnQtPnByX2ZkKTsKKwlw b3J0LT5wcl9mZCA9IE5VTEw7CisKKwlpZiAobnNzX2NvbnRleHQpCisJeworCQlOU1NfU2h1dGRv d25Db250ZXh0KG5zc19jb250ZXh0KTsKKwkJbnNzX2NvbnRleHQgPSBOVUxMOworCX0KK30KKwor LyoKKyAqIGJlX3Rsc19kZXN0cm95CisgKgorICogQ2FsbGJhY2sgZm9yIGRlc3Ryb3lpbmcgZ2xv YmFsIGNvbnRleHRzIGR1cmluZyBTSUdIVVAuCisgKi8KK3ZvaWQKK2JlX3Rsc19kZXN0cm95KHZv aWQpCit7CisJLyoKKwkgKiBJdCByZWFkcyBhIGJpdCBvZGQgdG8gY2xlYXIgYSBzZXNzaW9uIGNh Y2hlIHdoZW4gd2UgYXJlIGRlc3Ryb3lpbmcgdGhlCisJICogY29udGV4dCBhbHRvZ2V0aGVyLCBi dXQgaWYgdGhlIHNlc3Npb24gY2FjaGUgaXNuJ3QgY2xlYXJlZCBiZWZvcmUKKwkgKiBzaHV0dGlu ZyBkb3duIHRoZSBjb250ZXh0IGl0IHdpbGwgZmFpbCB3aXRoIFNFQ19FUlJPUl9CVVNZLgorCSAq LworCVNTTF9DbGVhclNlc3Npb25DYWNoZSgpOworfQorCisvKgorICogYmVfdGxzX2dldF9jaXBo ZXJfYml0cworICoKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBlbmNyeXB0 aW9uIGtleSB1c2VkLCBvciB6ZXJvIGluIGNhc2UKKyAqIG9mIGVycm9ycy4KKyAqLworaW50Citi ZV90bHNfZ2V0X2NpcGhlcl9iaXRzKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsK KwlTU0xDaGFubmVsSW5mbyBjaGFubmVsOworCVNTTENpcGhlclN1aXRlSW5mbyBzdWl0ZTsKKwor CXN0YXR1cyA9IFNTTF9HZXRDaGFubmVsSW5mbyhwb3J0LT5wcl9mZCwgJmNoYW5uZWwsIHNpemVv ZihjaGFubmVsKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlnb3RvIGVycm9yOwor CisJc3RhdHVzID0gU1NMX0dldENpcGhlclN1aXRlSW5mbyhjaGFubmVsLmNpcGhlclN1aXRlLCAm c3VpdGUsIHNpemVvZihzdWl0ZSkpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJZ290 byBlcnJvcjsKKworCXJldHVybiBzdWl0ZS5lZmZlY3RpdmVLZXlCaXRzOworCitlcnJvcjoKKwll cmVwb3J0KFdBUk5JTkcsCisJCQkoZXJybXNnKCJ1bmFibGUgdG8gZXh0cmFjdCBUTFMgc2Vzc2lv biBpbmZvcm1hdGlvbjogJXMiLAorCQkJCQlwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkp KSkpOworCXJldHVybiAwOworfQorCisvKgorICogYmVfdGxzX2dldF92ZXJzaW9uCisgKgorICog UmV0dXJucyB0aGUgcHJvdG9jb2wgdmVyc2lvbiB1c2VkIGZvciB0aGUgY3VycmVudCBjb25uZWN0 aW9uLCBvciBOVUxMIGluCisgKiBjYXNlIG9mIGVycm9ycy4KKyAqLworY29uc3QgY2hhciAqCiti ZV90bHNfZ2V0X3ZlcnNpb24oUG9ydCAqcG9ydCkKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCVNT TENoYW5uZWxJbmZvIGNoYW5uZWw7CisKKwlzdGF0dXMgPSBTU0xfR2V0Q2hhbm5lbEluZm8ocG9y dC0+cHJfZmQsICZjaGFubmVsLCBzaXplb2YoY2hhbm5lbCkpOworCWlmIChzdGF0dXMgIT0gU0VD U3VjY2VzcykKKwl7CisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8g ZXh0cmFjdCBUTFMgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVz c2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHNz bF9wcm90b2NvbF92ZXJzaW9uX3RvX3N0cmluZyhjaGFubmVsLnByb3RvY29sVmVyc2lvbik7Cit9 CisKKy8qCisgKiBiZV90bHNfZ2V0X2NpcGhlcgorICoKKyAqIFJldHVybnMgdGhlIGNpcGhlciB1 c2VkIGZvciB0aGUgY3VycmVudCBjb25uZWN0aW9uLCBvciBOVUxMIGluIGNhc2Ugb2YKKyAqIGVy cm9ycy4KKyAqLworY29uc3QgY2hhciAqCitiZV90bHNfZ2V0X2NpcGhlcihQb3J0ICpwb3J0KQor eworCVNFQ1N0YXR1cwlzdGF0dXM7CisJU1NMQ2hhbm5lbEluZm8gY2hhbm5lbDsKKwlTU0xDaXBo ZXJTdWl0ZUluZm8gc3VpdGU7CisKKwlzdGF0dXMgPSBTU0xfR2V0Q2hhbm5lbEluZm8ocG9ydC0+ cHJfZmQsICZjaGFubmVsLCBzaXplb2YoY2hhbm5lbCkpOworCWlmIChzdGF0dXMgIT0gU0VDU3Vj Y2VzcykKKwkJZ290byBlcnJvcjsKKworCXN0YXR1cyA9IFNTTF9HZXRDaXBoZXJTdWl0ZUluZm8o Y2hhbm5lbC5jaXBoZXJTdWl0ZSwgJnN1aXRlLCBzaXplb2Yoc3VpdGUpKTsKKwlpZiAoc3RhdHVz ICE9IFNFQ1N1Y2Nlc3MpCisJCWdvdG8gZXJyb3I7CisKKwlyZXR1cm4gc3VpdGUuY2lwaGVyU3Vp dGVOYW1lOworCitlcnJvcjoKKwllcmVwb3J0KFdBUk5JTkcsCisJCQkoZXJybXNnKCJ1bmFibGUg dG8gZXh0cmFjdCBUTFMgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJXMiLAorCQkJCQlwZ19TU0xlcnJt ZXNzYWdlKFBSX0dldEVycm9yKCkpKSkpOworCXJldHVybiBOVUxMOworfQorCisvKgorICogYmVf dGxzX2dldF9wZWVyX3N1YmplY3RfbmFtZQorICoKKyAqIFJldHVybnMgdGhlIHN1YmplY3QgbmFt ZSBvZiB0aGUgcGVlciBjZXJ0aWZpY2F0ZS4KKyAqLwordm9pZAorYmVfdGxzX2dldF9wZWVyX3N1 YmplY3RfbmFtZShQb3J0ICpwb3J0LCBjaGFyICpwdHIsIHNpemVfdCBsZW4pCit7CisJQ0VSVENl cnRpZmljYXRlICpjZXJ0aWZpY2F0ZTsKKworCWNlcnRpZmljYXRlID0gU1NMX1BlZXJDZXJ0aWZp Y2F0ZShwb3J0LT5wcl9mZCk7CisJaWYgKGNlcnRpZmljYXRlKQorCQlzdHJsY3B5KHB0ciwgQ0VS VF9OYW1lVG9Bc2NpaSgmY2VydGlmaWNhdGUtPnN1YmplY3QpLCBsZW4pOworCWVsc2UKKwkJcHRy WzBdID0gJ1wwJzsKK30KKworLyoKKyAqIGJlX3Rsc19nZXRfcGVlcl9pc3N1ZXJfbmFtZQorICoK KyAqIFJldHVybnMgdGhlIGlzc3VlciBuYW1lIG9mIHRoZSBwZWVyIGNlcnRpZmljYXRlLgorICov Cit2b2lkCitiZV90bHNfZ2V0X3BlZXJfaXNzdWVyX25hbWUoUG9ydCAqcG9ydCwgY2hhciAqcHRy LCBzaXplX3QgbGVuKQoreworCUNFUlRDZXJ0aWZpY2F0ZSAqY2VydGlmaWNhdGU7CisKKwljZXJ0 aWZpY2F0ZSA9IFNTTF9QZWVyQ2VydGlmaWNhdGUocG9ydC0+cHJfZmQpOworCWlmIChjZXJ0aWZp Y2F0ZSkKKwkJc3RybGNweShwdHIsIENFUlRfTmFtZVRvQXNjaWkoJmNlcnRpZmljYXRlLT5pc3N1 ZXIpLCBsZW4pOworCWVsc2UKKwkJcHRyWzBdID0gJ1wwJzsKK30KKworLyoKKyAqIGJlX3Rsc19n ZXRfcGVlcl9zZXJpYWwKKyAqCisgKiBSZXR1cm5zIHRoZSBzZXJpYWwgb2YgdGhlIHBlZXIgY2Vy dGlmaWNhdGUuCisgKi8KK3ZvaWQKK2JlX3Rsc19nZXRfcGVlcl9zZXJpYWwoUG9ydCAqcG9ydCwg Y2hhciAqcHRyLCBzaXplX3QgbGVuKQoreworCUNFUlRDZXJ0aWZpY2F0ZSAqY2VydGlmaWNhdGU7 CisKKwljZXJ0aWZpY2F0ZSA9IFNTTF9QZWVyQ2VydGlmaWNhdGUocG9ydC0+cHJfZmQpOworCWlm IChjZXJ0aWZpY2F0ZSkKKwkJc25wcmludGYocHRyLCBsZW4sICIlbGkiLCBERVJfR2V0SW50ZWdl cigmKGNlcnRpZmljYXRlLT5zZXJpYWxOdW1iZXIpKSk7CisJZWxzZQorCQlwdHJbMF0gPSAnXDAn OworfQorCisvKgorICogYmVfdGxzX2dldF9jZXJ0aWZpY2F0ZV9oYXNoCisgKgorICogUmV0dXJu cyB0aGUgaGFzaCBkYXRhIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIFNDUkFNIGNoYW5u ZWwgYmluZGluZy4KKyAqLworY2hhciAqCitiZV90bHNfZ2V0X2NlcnRpZmljYXRlX2hhc2goUG9y dCAqcG9ydCwgc2l6ZV90ICpsZW4pCit7CisJQ0VSVENlcnRpZmljYXRlICpjZXJ0aWZpY2F0ZTsK KwlTRUNPaWRUYWcJc2lnbmF0dXJlX3RhZzsKKwlTRUNPaWRUYWcJZGlnZXN0X2FsZzsKKwlpbnQJ CQlkaWdlc3RfbGVuOworCVNFQ1N0YXR1cwlzdGF0dXM7CisJUExBcmVuYVBvb2wgKmFyZW5hID0g TlVMTDsKKwlTRUNJdGVtCQlkaWdlc3Q7CisJY2hhcgkgICAqcmV0OworCVBLMTFDb250ZXh0ICpj dHggPSBOVUxMOworCXVuc2lnbmVkIGludCBvdXRsZW47CisKKwkqbGVuID0gMDsKKwljZXJ0aWZp Y2F0ZSA9IFNTTF9Mb2NhbENlcnRpZmljYXRlKHBvcnQtPnByX2ZkKTsKKwlpZiAoIWNlcnRpZmlj YXRlKQorCQlyZXR1cm4gTlVMTDsKKworCXNpZ25hdHVyZV90YWcgPSBTRUNPSURfR2V0QWxnb3Jp dGhtVGFnKCZjZXJ0aWZpY2F0ZS0+c2lnbmF0dXJlKTsKKwlpZiAoIXBnX2ZpbmRfc2lnbmF0dXJl X2FsZ29yaXRobShzaWduYXR1cmVfdGFnLCAmZGlnZXN0X2FsZywgJmRpZ2VzdF9sZW4pKQorCQll bG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgZGlnZXN0IGZvciBPSUQgJyVzJyIsCisJCQkgU0VD T0lEX0ZpbmRPSURUYWdEZXNjcmlwdGlvbihzaWduYXR1cmVfdGFnKSk7CisKKwkvKgorCSAqIFRo ZSBUTFMgc2VydmVyJ3MgY2VydGlmaWNhdGUgYnl0ZXMgbmVlZCB0byBiZSBoYXNoZWQgd2l0aCBT SEEtMjU2IGlmCisJICogaXRzIHNpZ25hdHVyZSBhbGdvcml0aG0gaXMgTUQ1IG9yIFNIQS0xIGFz IHBlciBSRkMgNTkyOQorCSAqIChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTkyOSNz ZWN0aW9uLTQuMSkuICBJZiBzb21ldGhpbmcgZWxzZQorCSAqIGlzIHVzZWQsIHRoZSBzYW1lIGhh c2ggYXMgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gaXMgdXNlZC4KKwkgKi8KKwlpZiAoZGlnZXN0 X2FsZyA9PSBTRUNfT0lEX1NIQTEgfHwgZGlnZXN0X2FsZyA9PSBTRUNfT0lEX01ENSkKKwl7CisJ CWRpZ2VzdF9hbGcgPSBTRUNfT0lEX1NIQTI1NjsKKwkJZGlnZXN0X2xlbiA9IFNIQTI1Nl9MRU5H VEg7CisJfQorCisJY3R4ID0gUEsxMV9DcmVhdGVEaWdlc3RDb250ZXh0KGRpZ2VzdF9hbGcpOwor CWlmICghY3R4KQorCQllbG9nKEVSUk9SLCAib3V0IG9mIG1lbW9yeSIpOworCisJYXJlbmEgPSBQ T1JUX05ld0FyZW5hKFNFQ19BU04xX0RFRkFVTFRfQVJFTkFfU0laRSk7CisJZGlnZXN0LmRhdGEg PSBQT1JUX0FyZW5hWkFsbG9jKGFyZW5hLCBzaXplb2YodW5zaWduZWQgY2hhcikgKiBkaWdlc3Rf bGVuKTsKKwlpZiAoIWRpZ2VzdC5kYXRhKQorCQllbG9nKEVSUk9SLCAib3V0IG9mIG1lbW9yeSIp OworCWRpZ2VzdC5sZW4gPSBkaWdlc3RfbGVuOworCisJc3RhdHVzID0gU0VDU3VjY2VzczsKKwlz dGF0dXMgfD0gUEsxMV9EaWdlc3RCZWdpbihjdHgpOworCXN0YXR1cyB8PSBQSzExX0RpZ2VzdE9w KGN0eCwgY2VydGlmaWNhdGUtPmRlckNlcnQuZGF0YSwgY2VydGlmaWNhdGUtPmRlckNlcnQubGVu KTsKKwlzdGF0dXMgfD0gUEsxMV9EaWdlc3RGaW5hbChjdHgsIGRpZ2VzdC5kYXRhLCAmb3V0bGVu LCBkaWdlc3RfbGVuKTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCVBPUlRf RnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVFKTsKKwkJUEsxMV9EZXN0cm95Q29udGV4dChjdHgsIFBS X1RSVUUpOworCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGdlbmVyYXRlIHNlcnZlciBjZXJ0aWZp Y2F0ZSBoYXNoIik7CisJfQorCisJcmV0ID0gcGFsbG9jKGRpZ2VzdC5sZW4pOworCW1lbWNweShy ZXQsIGRpZ2VzdC5kYXRhLCBkaWdlc3QubGVuKTsKKwkqbGVuID0gZGlnZXN0X2xlbjsKKworCVBP UlRfRnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVFKTsKKwlQSzExX0Rlc3Ryb3lDb250ZXh0KGN0eCwg UFJfVFJVRSk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCQkJCQkJSW50ZXJu YWwgZnVuY3Rpb25zCQkJCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogZGVmYXVsdF9uc3NfdGxz X2luaXQKKyAqCisgKiBUaGUgZGVmYXVsdCBUTFMgaW5pdCBob29rIGZ1bmN0aW9uIHdoaWNoIHVz ZXJzIGNhbiBvdmVycmlkZSBmb3IgaW5zdGFsbGluZworICogdGhlaXIgb3duIHBhc3NwaHJhc2Ug Y2FsbGJhY2tzIGFuZCBzaW1pbGFyIGFjdGlvbnMuIEluIGNhc2Ugbm8gY2FsbGJhY2sgaGFzCisg KiBiZWVuIGNvbmZpZ3VyZWQsIG9yIHRoZSBjYWxsYmFjayBpc24ndCByZWxvYWQgY2FwYWJsZSBk dXJpbmcgYSBzZXJ2ZXIKKyAqIHJlbG9hZCwgdGhlIGR1bW15IGNhbGxiYWNrIHdpbGwgYmUgaW5z dGFsbGVkLgorICoKKyAqIFRoZSBwcml2YXRlIGRhdGEgZm9yIHRoZSBjYWxsYmFjayBpcyBzZXQg ZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIGhvdyBpdCdzCisgKiBpbnZva2VkLiBGb3IgY2FsbHMg d2hpY2ggbWF5IGludm9rZSB0aGUgY2FsbGJhY2sgZGVlcGVyIGluIHRoZSBjYWxsc3RhY2sKKyAq IHRoZSBwcml2YXRlIGRhdGEgaXMgc2V0IHdpdGggU1NMX1NldFBLQ1MxMVBpbkFyZy4gV2hlbiB0 aGUgY2FsbCBpcyBkaXJlY3RseQorICogaW52b2tpbmcgdGhlIGNhbGxiYWNrLCBsaWtlIFBLMTFf RmluZENlcnRGcm9tTmlja25hbWUsIHRoZW4gdGhlIHByaXZhdGUKKyAqIGRhdGEgaXMgcGFzc2Vk IGFzIGEgcGFyYW1ldGVyLiBTZXR0aW5nIHRoZSBkYXRhIHdpdGggU1NMX1NldFBLQ1MxMVBpbkFy ZyBpcworICogdGh1cyBub3QgcmVxdWlyZWQgYnV0IGdvb2QgcHJhY3RpY2UuCisgKgorICogTlNT IGRvZXNuJ3QgcHJvdmlkZSBhIGRlZmF1bHQgY2FsbGJhY2sgbGlrZSBPcGVuU1NMIGRvZXMsIGJ1 dCBhIGNhbGxiYWNrIGlzCisgKiByZXF1aXJlZCB0byBiZSBzZXQuICBUaGUgcGFzc3dvcmQgY2Fs bGJhY2sgY2FuIGJlIGluc3RhbGxlZCBhdCBhbnkgdGltZSwgYnV0CisgKiBzZXR0aW5nIHRoZSBw cml2YXRlIGRhdGEgd2l0aCBTU0xfU2V0UEtDUzExUGluQXJnIHJlcXVpcmVzIGEgUFIgRmlsZWRl c2MuCisgKi8KK3N0YXRpYyB2b2lkCitkZWZhdWx0X25zc190bHNfaW5pdChib29sIGlzU2VydmVy U3RhcnQpCit7CisJLyoKKwkgKiBObyB1c2VyLWRlZmluZWQgY2FsbGJhY2sgaGFzIGJlZW4gY29u ZmlndXJlZCwgaW5zdGFsbCB0aGUgZHVtbXkgY2FsbC0KKwkgKiBiYWNrIHNpbmNlIHdlIG11c3Qg c2V0IHNvbWV0aGluZy4KKwkgKi8KKwlpZiAoIXNzbF9wYXNzcGhyYXNlX2NvbW1hbmRbMF0pCisJ CVBLMTFfU2V0UGFzc3dvcmRGdW5jKGR1bW15X3NzbF9wYXNzcGhyYXNlX2NiKTsKKwllbHNlCisJ eworCQkvKgorCQkgKiBUaGVyZSBpcyBhIHVzZXItZGVmaW5lZCBjYWxsYmFjaywgc2V0IGl0IHVu bGVzcyB3ZSBhcmUgaW4gYSByZXN0YXJ0CisJCSAqIGFuZCBjYW5ub3QgaGFuZGxlIHJlc3RhcnRz IGR1ZSB0byBhbiBpbnRlcmFjdGl2ZSBjYWxsYmFjay4KKwkJICovCisJCWlmIChpc1NlcnZlclN0 YXJ0KQorCQkJUEsxMV9TZXRQYXNzd29yZEZ1bmMoZXh0ZXJuYWxfc3NsX3Bhc3NwaHJhc2VfY2Ip OworCQllbHNlCisJCXsKKwkJCWlmIChzc2xfcGFzc3BocmFzZV9jb21tYW5kX3N1cHBvcnRzX3Jl bG9hZCkKKwkJCQlQSzExX1NldFBhc3N3b3JkRnVuYyhleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9j Yik7CisJCQllbHNlCisJCQkJUEsxMV9TZXRQYXNzd29yZEZ1bmMoZHVtbXlfc3NsX3Bhc3NwaHJh c2VfY2IpOworCQl9CisJfQorfQorCisvKgorICogZXh0ZXJuYWxfc3NsX3Bhc3NwaHJhc2VfY2IK KyAqCisgKiBSdW5zIHRoZSBjYWxsYmFjayBjb25maWd1cmVkIGJ5IHNzbF9wYXNzcGhyYXNlX2Nv bW1hbmQgYW5kIHJldHVybnMgdGhlCisgKiBjYXB0dXJlZCBwYXNzd29yZCBiYWNrIHRvIE5TUy4K KyAqLworc3RhdGljIGNoYXIgKgorZXh0ZXJuYWxfc3NsX3Bhc3NwaHJhc2VfY2IoUEsxMVNsb3RJ bmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIE5TUyB1c2Ug YSBoYXJkY29kZWQgMjU2IGJ5dGUgYnVmZmVyIGZvciByZWFkaW5nIHRoZSBwYXNzd29yZCBzbyBz ZXQgdGhlCisJICogc2FtZSBsaW1pdCBmb3Igb3VyIGNhbGxiYWNrIGJ1ZmZlci4KKwkgKi8KKwlj aGFyCQlidWZbMjU2XTsKKwlpbnQJCQlsZW47CisJY2hhcgkgICAqcGFzc3dvcmQgPSBOVUxMOwor CWNoYXIJICAgKnByb21wdDsKKworCS8qCisJICogU2luY2UgdGhlcmUgaXMgbm8gcGFzc3dvcmQg Y2FsbGJhY2sgaW4gTlNTIHdoZW4gdGhlIHNlcnZlciBzdGFydHMgdXAsCisJICogaXQgbWFrZXMg bGl0dGxlIHNlbnNlIHRvIGNyZWF0ZSBhbiBpbnRlcmFjdGl2ZSBjYWxsYmFjay4gVGh1cywgaWYg dGhpcworCSAqIGlzIGEgcmV0cnkgYXR0ZW1wdCB0aGVuIGdpdmUgdXAgaW1tZWRpYXRlbHkuCisJ ICovCisJaWYgKHJldHJ5KQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogQ29uc3RydWN0IHRo ZSBzYW1lIHByb21wdCB0aGF0IE5TUyB1c2VzIGludGVybmFsbHkgZXZlbiB0aG91Z2ggaXQgaXMK KwkgKiB1bmxpa2VseSB0byBzZXJ2ZSBtdWNoIHB1cnBvc2UsIGJ1dCB3ZSBtdXN0IHNldCBhIHBy b21wdCBzbyB3ZSBtaWdodCBhcworCSAqIHdlbGwgZG8gaXQgcmlnaHQuCisJICovCisJcHJvbXB0 ID0gcHNwcmludGYoIkVudGVyIFBhc3N3b3JkIG9yIFBpbiBmb3IgXCIlc1wiOiIsCisJCQkJCSAg UEsxMV9HZXRUb2tlbk5hbWUoc2xvdCkpOworCisJbGVuID0gcnVuX3NzbF9wYXNzcGhyYXNlX2Nv bW1hbmQocHJvbXB0LCBzc2xfaXNfc2VydmVyX3N0YXJ0LCBidWYsIHNpemVvZihidWYpKTsKKwlw ZnJlZShwcm9tcHQpOworCisJaWYgKCFsZW4pCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBB dCBsZWFzdCBvbmUgYnl0ZSB3aXRoIHBhc3N3b3JkIGNvbnRlbnQgd2FzIHJldHVybmVkLCBhbmQg TlNTIHJlcXVpcmVzCisJICogdGhhdCB3ZSByZXR1cm4gaXQgYWxsb2NhdGVkIGluIE5TUyBjb250 cm9sbGVkIG1lbW9yeS4gSWYgd2UgZmFpbCB0bworCSAqIGFsbG9jYXRlIHRoZW4gYWJvcnQgd2l0 aG91dCBwYXNzaW5nIGJhY2sgTlVMTCBhbmQgYnViYmxlIHVwIHRoZSBlcnJvcgorCSAqIG9uIHRo ZSBQRyBzaWRlLgorCSAqLworCXBhc3N3b3JkID0gKGNoYXIgKikgUFJfTWFsbG9jKGxlbiArIDEp OworCWlmICghcGFzc3dvcmQpCisJeworCQlleHBsaWNpdF9iemVybyhidWYsIHNpemVvZihidWYp KTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkp LAorCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOworCX0KKwlzdHJsY3B5KHBhc3N3b3Jk LCBidWYsIHNpemVvZihwYXNzd29yZCkpOworCWV4cGxpY2l0X2J6ZXJvKGJ1Ziwgc2l6ZW9mKGJ1 ZikpOworCisJcmV0dXJuIHBhc3N3b3JkOworfQorCisvKgorICogZHVtbXlfc3NsX3Bhc3NwaHJh c2VfY2IKKyAqCisgKiBSZXR1cm4gdW5zdWNjZXNzZnVsIGlmIHdlIGFyZSBhc2tlZCB0byBwcm92 aWRlIHRoZSBwYXNzcGhyYXNlIGZvciBhIGNlcnQgb3IKKyAqIGtleSwgd2l0aG91dCBoYXZpbmcg YSBwYXNzcGhyYXNlIGNhbGxiYWNrIGluc3RhbGxlZC4KKyAqLworc3RhdGljIGNoYXIgKgorZHVt bXlfc3NsX3Bhc3NwaHJhc2VfY2IoUEsxMVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZv aWQgKmFyZykKK3sKKwlkdW1teV9zc2xfcGFzc3dkX2NiX2NhbGxlZCA9IHRydWU7CisJcmV0dXJu IE5VTEw7Cit9CisKKy8qCisgKiBwZ19iYWRfY2VydF9oYW5kbGVyCisgKgorICogQ2FsbGJhY2sg Zm9yIGhhbmRsaW5nIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gZmFpbHVyZSBkdXJpbmcgaGFuZHNo YWtlLiBJdCdzCisgKiBjYWxsZWQgZnJvbSBTU0xfQXV0aENlcnRpZmljYXRlIGR1cmluZyBmYWls dXJlIGNhc2VzLgorICovCitzdGF0aWMgU0VDU3RhdHVzCitwZ19iYWRfY2VydF9oYW5kbGVyKHZv aWQgKmFyZywgUFJGaWxlRGVzYyAqZmQpCit7CisJUG9ydAkgICAqcG9ydCA9IChQb3J0ICopIGFy ZzsKKworCXBvcnQtPnBlZXJfY2VydF92YWxpZCA9IGZhbHNlOworCXJldHVybiBTRUNGYWlsdXJl OworfQorCisvKgorICogdGFnX3RvX25hbWUKKyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhl IFJETiBpZGVudGlmaWVkIGJ5IHRoZSB0YWcgcGFzc2VkIGFzIHBhcmFtZXRlci4gTlNTCisgKiBo YXMgdGhpcyBpbmZvcm1hdGlvbiBpbiBhIHN0cnVjdCwgYnV0IHRoZSBvbmx5IHB1YmxpY2x5IGFj Y2Vzc2libGUgQVBJIGZvcgorICogdXNpbmcgaXQgaXMgbGltaXRlZCB0byByZXRyaWV2aW5nIHRo ZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgYXZhLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCit0 YWdfdG9fbmFtZShTRUNPaWRUYWcgdGFnKQoreworCXN3aXRjaCh0YWcpCisJeworCQljYXNlIFNF Q19PSURfQVZBX0NPTU1PTl9OQU1FOgorCQkJcmV0dXJuICJDTiI7CisJCWNhc2UgU0VDX09JRF9B VkFfU1RBVEVfT1JfUFJPVklOQ0U6CisJCQlyZXR1cm4gIlNUIjsKKwkJY2FzZSBTRUNfT0lEX0FW QV9PUkdBTklaQVRJT05fTkFNRToKKwkJCXJldHVybiAiTyI7CisJCWNhc2UgU0VDX09JRF9BVkFf T1JHQU5JWkFUSU9OQUxfVU5JVF9OQU1FOgorCQkJcmV0dXJuICJPVSI7CisJCWNhc2UgU0VDX09J RF9BVkFfQ09VTlRSWV9OQU1FOgorCQkJcmV0dXJuICJDIjsKKwkJY2FzZSBTRUNfT0lEX0FWQV9M T0NBTElUWToKKwkJCXJldHVybiAiTCI7CisJCWNhc2UgU0VDX09JRF9BVkFfU1VSTkFNRToKKwkJ CXJldHVybiAiU04iOworCQljYXNlIFNFQ19PSURfQVZBX0RDOgorCQkJcmV0dXJuICJEQyI7CisJ CWNhc2UgU0VDX09JRF9SRkMxMjc0X01BSUw6CisJCQlyZXR1cm4gIk1BSUwiOworCQljYXNlIFNF Q19PSURfUkZDMTI3NF9VSUQ6CisJCQlyZXR1cm4gIlVJRCI7CisJCS8qCisJCSAqIFRPRE86IHdo YXQgd291bGQgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdGhpbmcgdG8gZG8gaGVyZT8KKwkJICov CisJCWRlZmF1bHQ6CisJCQlyZXR1cm4gIiI7CisJfQorfQorCisvKgorICogcGdfQ0VSVF9HZXRE aXN0aW5ndWlzaGVkTmFtZQorICoKKyAqIE5TUyBkb2Vzbid0IHByb3ZpZGUgYSBETiBlcXVpdmFs ZW50IG9mIENFUlRfR2V0Q29tbW9uTmFtZSwgc28gd2UgaGF2ZSB0bworICoga2VlcCBvdXIgb3du LgorICovCitzdGF0aWMgY2hhciAqCitwZ19DRVJUX0dldERpc3Rpbmd1aXNoZWROYW1lKENFUlRD ZXJ0aWZpY2F0ZSAqY2VydCkKK3sKKwlDRVJUTmFtZQkJc3ViamVjdCA9IGNlcnQtPnN1YmplY3Q7 CisJQ0VSVFJETgkJICAqKnJkbjsKKwlTdHJpbmdJbmZvRGF0YQlkbmJ1ZjsKKwljaGFyCQkgICAq ZG4gPSBOVUxMOworCisJaW5pdFN0cmluZ0luZm8oJmRuYnVmKTsKKworCWZvciAocmRuID0gc3Vi amVjdC5yZG5zOyAqcmRuOyByZG4rKykKKwl7CisJCUNFUlRBVkEgICAqKmF2YTsKKwkJYm9vbAkJ Zmlyc3QgPSB0cnVlOworCisJCWZvciAoYXZhID0gKCpyZG4pLT5hdmFzOyAqYXZhOyBhdmErKykK KwkJeworCQkJU0VDSXRlbQkgICAqYnVmOworCQkJU0VDU3RhdHVzCXN0YXR1czsKKwkJCWNoYXIJ ICAgKnRtcHN0cjsKKwkJCWNoYXIJICAgKmRzdHN0cjsKKwkJCWludAkJCXRtcGxlbjsKKworCQkJ LyogU2VlIHJhd19zdWJqZWN0X2NvbW1vbl9uYW1lIGNvbW1lbnQgZm9yIGRpc2N1c3Npb24gKi8K KwkJCWJ1ZiA9IENFUlRfRGVjb2RlQVZBVmFsdWUoJigqYXZhKS0+dmFsdWUpOworCQkJaWYgKCFi dWYpCisJCQkJcmV0dXJuIE5VTEw7CisKKwkJCXRtcHN0ciA9IHBhbGxvYzAoYnVmLT5sZW4gKyAx KTsKKwkJCXRtcGxlbiA9IGJ1Zi0+bGVuOworCQkJbWVtY3B5KHRtcHN0ciwgYnVmLT5kYXRhLCBi dWYtPmxlbik7CisJCQlTRUNJVEVNX0ZyZWVJdGVtKGJ1ZiwgUFJfVFJVRSk7CisJCQkvKiBDaGVj ayBmb3IgZW1iZWRkZWQgbnVsbCAqLworCQkJaWYgKHN0cmxlbih0bXBzdHIpICE9IHRtcGxlbikK KwkJCQlyZXR1cm4gTlVMTDsKKworCQkJLyogTWFrZSByb29tIGZvciB0aGUgd29yc3QgY2FzZSBl c2NhcGluZyAqLworCQkJZHN0c3RyID0gcGFsbG9jMCgodG1wbGVuICogMykgKyAxKTsKKworCQkJ LyoKKwkJCSAqIFdoaWxlIHRoZSBmdW5jdGlvbiBuYW1lIHJlZmVycyB0byBSRkMgMTQ4NSwgdGhl IHVuZGVybHlpbmcKKwkJCSAqIHF1b3RpbmcgY29kZSBjb25mb3JtcyB0byB0aGUgUkZDIDIyNTMg cnVsZXMuCisJCQkgKi8KKwkJCXN0YXR1cyA9IENFUlRfUkZDMTQ4NV9Fc2NhcGVBbmRRdW90ZShk c3RzdHIsIHRtcGxlbiAqIDMsIHRtcHN0ciwgdG1wbGVuKTsKKwkJCWlmIChzdGF0dXMgIT0gU0VD U3VjY2VzcykKKwkJCXsKKwkJCQlwZnJlZShkc3RzdHIpOworCQkJCXBmcmVlKHRtcHN0cik7CisJ CQkJcmV0dXJuIE5VTEw7CisJCQl9CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmRuYnVmLCAiJXMl cz0lcyIsCisJCQkJCQkJIChmaXJzdCA/ICIiIDogIiwiKSwKKwkJCQkJCQkgdGFnX3RvX25hbWUo Q0VSVF9HZXRBVkFUYWcoKmF2YSkpLCBkc3RzdHIpOworCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJ cGZyZWUoZHN0c3RyKTsKKwkJCXBmcmVlKHRtcHN0cik7CisJCX0KKwl9CisKKwlpZiAoZG5idWYu bGVuKQorCXsKKwkJZG4gPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKFRvcE1lbW9yeUNvbnRleHQs IGRuYnVmLmxlbiArIDEpOworCQlzdHJsY3B5KGRuLCBkbmJ1Zi5kYXRhLCBkbmJ1Zi5sZW4gKyAx KTsKKwl9CisKKwlyZXR1cm4gZG47Cit9CisKKy8qCisgKiByYXdfc3ViamVjdF9jb21tb25fbmFt ZQorICoKKyAqIFJldHVybnMgdGhlIFN1YmplY3QgQ29tbW9uIE5hbWUgZm9yIHRoZSBnaXZlbiBj ZXJ0aWZpY2F0ZSBhcyBhIHJhdyBjaGFyCisgKiBidWZmZXIgKHRoYXQgaXMsIHdpdGhvdXQgYW55 IGZvcm0gb2YgZXNjYXBpbmcgZm9yIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMgb3IKKyAqIGVtYmVk ZGVkIG51bGxzKSwgd2l0aCB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgcmV0dXJuZWQgaW4gdGhl IGxlbiBwYXJhbS4KKyAqIFRoZSBidWZmZXIgaXMgYWxsb2NhdGVkIGluIHRoZSBUb3BNZW1vcnlD b250ZXh0IGFuZCBpcyBnaXZlbiBhIE5VTEwKKyAqIHRlcm1pbmF0b3Igc28gdGhhdCBjYWxsZXJz IGFyZSBzYWZlIHRvIGNhbGwgc3RybGVuKCkgb24gaXQuCisgKgorICogVGhpcyBpcyB1c2VkIGlu c3RlYWQgb2YgQ0VSVF9HZXRDb21tb25OYW1lKCksIHdoaWNoIGFsd2F5cyBwZXJmb3JtcyBxdW90 aW5nCisgKiBhbmQvb3IgZXNjYXBpbmcuIE5TUyBkb2Vzbid0IGFwcGVhciB0byBnaXZlIHVzIGEg d2F5IHRvIGVhc2lseSB1bmVzY2FwZSB0aGUKKyAqIHJlc3VsdCwgYW5kIHdlIG5lZWQgdG8gc3Rv cmUgdGhlIHJhdyBDTiBpbnRvIHBvcnQtPnBlZXJfY24gZm9yIGNvbXBhdGliaWxpdHkKKyAqIHdp dGggdGhlIE9wZW5TU0wgaW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyBjaGFyICoKK3Jhd19z dWJqZWN0X2NvbW1vbl9uYW1lKENFUlRDZXJ0aWZpY2F0ZSAqY2VydCwgdW5zaWduZWQgaW50ICps ZW4pCit7CisJQ0VSVE5hbWUJc3ViamVjdCA9IGNlcnQtPnN1YmplY3Q7CisJQ0VSVFJETgkgICoq cmRuOworCisJZm9yIChyZG4gPSBzdWJqZWN0LnJkbnM7ICpyZG47IHJkbisrKQorCXsKKwkJQ0VS VEFWQQkgICoqYXZhOworCisJCWZvciAoYXZhID0gKCpyZG4pLT5hdmFzOyAqYXZhOyBhdmErKykK KwkJeworCQkJU0VDSXRlbQkgICAqYnVmOworCQkJY2hhcgkgICAqY247CisKKwkJCWlmIChDRVJU X0dldEFWQVRhZygqYXZhKSAhPSBTRUNfT0lEX0FWQV9DT01NT05fTkFNRSkKKwkJCQljb250aW51 ZTsKKworCQkJLyogRm91bmQgYSBDTiwgZGVjb2RlIGFuZCBjb3B5IGl0IGludG8gYSBuZXdseSBh bGxvY2F0ZWQgYnVmZmVyICovCisJCQlidWYgPSBDRVJUX0RlY29kZUFWQVZhbHVlKCYoKmF2YSkt PnZhbHVlKTsKKwkJCWlmICghYnVmKQorCQkJeworCQkJCS8qCisJCQkJICogVGhpcyBmYWlsdXJl IGNhc2UgaXMgZGlmZmljdWx0IHRvIHRlc3QuIChTaW5jZSB0aGlzIGNvZGUKKwkJCQkgKiBydW5z IGFmdGVyIGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIGhhcyBvdGhlcndpc2UKKwkJCQkgKiBz dWNjZWVkZWQsIHlvdSdkIG5lZWQgdG8gY29udmluY2UgYSBDQSBpbXBsZW1lbnRhdGlvbiB0bwor CQkJCSAqIHNpZ24gYSBjb3JydXB0ZWQgY2VydGlmaWNhdGUgaW4gb3JkZXIgdG8gZ2V0IGhlcmUu KQorCQkJCSAqCisJCQkJICogRm9sbG93IHRoZSBiZWhhdmlvciBvZiBDRVJUX0dldENvbW1vbk5h bWUoKSBpbiB0aGlzIGNhc2UgYW5kCisJCQkJICogc2ltcGx5IHJldHVybiBOVUxMLCBhcyBpZiBh IENvbW1vbiBOYW1lIGhhZCBub3QgYmVlbiBmb3VuZC4KKwkJCQkgKi8KKwkJCQlnb3RvIGZhaWw7 CisJCQl9CisKKwkJCWNuID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsIGJ1 Zi0+bGVuICsgMSk7CisJCQltZW1jcHkoY24sIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4pOworCQkJY25b YnVmLT5sZW5dID0gJ1wwJzsKKworCQkJKmxlbiA9IGJ1Zi0+bGVuOworCisJCQlTRUNJVEVNX0Zy ZWVJdGVtKGJ1ZiwgUFJfVFJVRSk7CisJCQlyZXR1cm4gY247CisJCX0KKwl9CisKK2ZhaWw6CisJ LyogTm90IGZvdW5kICAqLworCSpsZW4gPSAwOworCXJldHVybiBOVUxMOworfQorCisvKgorICog cGdfY2VydF9hdXRoX2hhbmRsZXIKKyAqCisgKiBDYWxsYmFjayBmb3IgdmFsaWRhdGlvbiBvZiBp bmNvbWluZyBjZXJ0aWZpY2F0ZXMuIFJldHVybmluZyBTRUNGYWlsdXJlIHdpbGwKKyAqIGNhdXNl IE5TUyB0byB0ZXJtaW5hdGUgdGhlIGNvbm5lY3Rpb24gaW1tZWRpYXRlbHkuCisgKi8KK3N0YXRp YyBTRUNTdGF0dXMKK3BnX2NlcnRfYXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAq ZmQsIFBSQm9vbCBjaGVja3NpZywgUFJCb29sIGlzU2VydmVyKQoreworCVNFQ1N0YXR1cwlzdGF0 dXM7CisJUG9ydAkgICAqcG9ydCA9IChQb3J0ICopIGFyZzsKKwlDRVJUQ2VydGlmaWNhdGUgKmNl cnQ7CisJY2hhcgkgICAqcGVlcl9jbjsKKwl1bnNpZ25lZCBpbnQgbGVuOworCisJc3RhdHVzID0g U1NMX0F1dGhDZXJ0aWZpY2F0ZShDRVJUX0dldERlZmF1bHRDZXJ0REIoKSwgcG9ydC0+cHJfZmQs IGNoZWNrc2lnLCBQUl9UUlVFKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVy biBzdGF0dXM7CisKKwlwb3J0LT5wZWVyX2NuID0gTlVMTDsKKwlwb3J0LT5wZWVyX2NlcnRfdmFs aWQgPSBmYWxzZTsKKworCWNlcnQgPSBTU0xfUGVlckNlcnRpZmljYXRlKHBvcnQtPnByX2ZkKTsK KwlpZiAoIWNlcnQpCisJeworCQkvKiBTaG91bGRuJ3QgYmUgcG9zc2libGU7IHdoeSBkaWQgd2Ug Z2V0IGEgY2xpZW50IGNlcnQgY2FsbGJhY2s/ICovCisJCUFzc2VydChjZXJ0ICE9IE5VTEwpOwor CisJCVBSX1NldEVycm9yKFNFQ19FUlJPUl9MSUJSQVJZX0ZBSUxVUkUsIDApOworCQlyZXR1cm4g U0VDRmFpbHVyZTsKKwl9CisKKwlwZWVyX2NuID0gcmF3X3N1YmplY3RfY29tbW9uX25hbWUoY2Vy dCwgJmxlbik7CisJaWYgKCFwZWVyX2NuKQorCXsKKwkJLyogTm8gQ29tbW9uIE5hbWUsIGJ1dCB0 aGUgY2VydGlmaWNhdGUgb3RoZXJ3aXNlIGNoZWNrcyBvdXQuICovCisJCXBvcnQtPnBlZXJfY2Vy dF92YWxpZCA9IHRydWU7CisKKwkJc3RhdHVzID0gU0VDU3VjY2VzczsKKwkJZ290byBjbGVhbnVw OworCX0KKworCS8qCisJICogUmVqZWN0IGVtYmVkZGVkIE5VTExzIGluIGNlcnRpZmljYXRlIGNv bW1vbiBuYW1lIHRvIHByZXZlbnQgYXR0YWNrcyBsaWtlCisJICogQ1ZFLTIwMDktNDAzNC4KKwkg Ki8KKwlpZiAobGVuICE9IHN0cmxlbihwZWVyX2NuKSkKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNn KCJTU0wgY2VydGlmaWNhdGUncyBjb21tb24gbmFtZSBjb250YWlucyBlbWJlZGRlZCBudWxsIikp KTsKKworCQlwZnJlZShwZWVyX2NuKTsKKwkJUFJfU2V0RXJyb3IoU0VDX0VSUk9SX0NFUlRfTk9U X1ZBTElELCAwKTsKKworCQlzdGF0dXMgPSBTRUNGYWlsdXJlOworCQlnb3RvIGNsZWFudXA7CisJ fQorCisJcG9ydC0+cGVlcl9jbiA9IHBlZXJfY247CisJcG9ydC0+cGVlcl9jZXJ0X3ZhbGlkID0g dHJ1ZTsKKworCXBvcnQtPnBlZXJfZG4gPSBwZ19DRVJUX0dldERpc3Rpbmd1aXNoZWROYW1lKGNl cnQpOworCWlmICAoIXBvcnQtPnBlZXJfZG4pCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZygidW5h YmxlIHRvIGdldCBTU0wgY2VydGlmaWNhdGUncyBkaXN0aW5ndWlzaGVkIG5hbWUiKSkpOworCisJ CXBmcmVlKHBlZXJfY24pOworCQlQUl9TZXRFcnJvcihTRUNfRVJST1JfQ0VSVF9OT1RfVkFMSUQs IDApOworCisJCXN0YXR1cyA9IFNFQ0ZhaWx1cmU7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwlz dGF0dXMgPSBTRUNTdWNjZXNzOworCitjbGVhbnVwOgorCUNFUlRfRGVzdHJveUNlcnRpZmljYXRl KGNlcnQpOworCXJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBQUlN0YXR1cworcGdfc3NsX2Ns b3NlKFBSRmlsZURlc2MgKmZkKQoreworCS8qCisJICogRGlzY29ubmVjdCBvdXIgcHJpdmF0ZSBQ b3J0IGZyb20gdGhlIGZkIGJlZm9yZSBjbG9zaW5nIG91dCB0aGUgc3RhY2suCisJICogKERlYnVn IGJ1aWxkcyBvZiBOU1BSIHdpbGwgYXNzZXJ0IGlmIHdlIGRvIG5vdC4pCisJICovCisJZmQtPnNl Y3JldCA9IE5VTEw7CisJcmV0dXJuIFBSX0dldERlZmF1bHRJT01ldGhvZHMoKS0+Y2xvc2UoZmQp OworfQorCitzdGF0aWMgUFJGaWxlRGVzYyAqCitpbml0X2lvbGF5ZXIoUG9ydCAqcG9ydCkKK3sK Kwljb25zdAkJUFJJT01ldGhvZHMgKmRlZmF1bHRfbWV0aG9kczsKKwlQUkZpbGVEZXNjICpsYXll cjsKKworCS8qCisJICogU3RhcnQgYnkgaW5pdGlhbGl6aW5nIG91ciBsYXllciB3aXRoIGFsbCB0 aGUgZGVmYXVsdCBtZXRob2RzIHNvIHRoYXQgd2UKKwkgKiBjYW4gc2VsZWN0aXZlbHkgb3ZlcnJp ZGUgdGhlIG9uZXMgd2Ugd2FudCB3aGlsZSBzdGlsbCBlbnN1cmluZyB0aGF0IHdlCisJICogaGF2 ZSBhIGNvbXBsZXRlIGxheWVyIHNwZWNpZmljYXRpb24uCisJICovCisJZGVmYXVsdF9tZXRob2Rz ID0gUFJfR2V0RGVmYXVsdElPTWV0aG9kcygpOworCW1lbWNweSgmcHJfaW9tZXRob2RzLCBkZWZh dWx0X21ldGhvZHMsIHNpemVvZihQUklPTWV0aG9kcykpOworCisJcHJfaW9tZXRob2RzLmNsb3Nl ID0gcGdfc3NsX2Nsb3NlOworCisJLyoKKwkgKiBFYWNoIElPIGxheWVyIG11c3QgYmUgaWRlbnRp ZmllZCBieSBhIHVuaXF1ZSBuYW1lLCB3aGVyZSB1bmlxdWVuZXNzIGlzCisJICogcGVyIGNvbm5l Y3Rpb24uIEVhY2ggY29ubmVjdGlvbiBpbiBhIHBvc3RncmVzIGNsdXN0ZXIgY2FuIGdlbmVyYXRl IHRoZQorCSAqIGlkZW50aXR5IGZyb20gdGhlIHNhbWUgc3RyaW5nIGFzIHRoZXkgd2lsbCBjcmVh dGUgdGhlaXIgSU8gbGF5ZXJzIG9uCisJICogZGlmZmVyZW50IHNvY2tldHMuIE9ubHkgb25lIGxh eWVyIHBlciBzb2NrZXQgY2FuIGhhdmUgdGhlIHNhbWUgbmFtZS4KKwkgKi8KKwlwcl9pZCA9IFBS X0dldFVuaXF1ZUlkZW50aXR5KCJQb3N0Z3JlU1FMIFNlcnZlciIpOworCWlmIChwcl9pZCA9PSBQ Ul9JTlZBTElEX0lPX0xBWUVSKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJv dXQgb2YgbWVtb3J5IHdoZW4gc2V0dGluZyB1cCBUTFMgY29ubmVjdGlvbiIpKSk7CisJCXJldHVy biBOVUxMOworCX0KKworCS8qCisJICogQ3JlYXRlIHRoZSBhY3R1YWwgSU8gbGF5ZXIgYXMgYSBz dHViIHN1Y2ggdGhhdCBpdCBjYW4gYmUgcHVzaGVkIG9udG8KKwkgKiB0aGUgbGF5ZXIgc3RhY2su IFRoZSBzdGVwIHZpYSBhIHN0dWIgaXMgcmVxdWlyZWQgYXMgd2UgZGVmaW5lIGN1c3RvbQorCSAq IGNhbGxiYWNrcy4KKwkgKi8KKwlsYXllciA9IFBSX0NyZWF0ZUlPTGF5ZXJTdHViKHByX2lkLCAm cHJfaW9tZXRob2RzKTsKKwlpZiAoIWxheWVyKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJybXNnKCJ1bmFibGUgdG8gY3JlYXRlIE5TUyBJL08gbGF5ZXIiKSkpOworCQlyZXR1cm4gTlVM TDsKKwl9CisKKwkvKiBTdG9yZSB0aGUgUG9ydCBhcyBwcml2YXRlIGRhdGEgYXZhaWxhYmxlIGlu IGNhbGxiYWNrcyAqLworCWxheWVyLT5zZWNyZXQgPSAodm9pZCAqKSBwb3J0OworCisJcmV0dXJu IGxheWVyOworfQorCisvKgorICogc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fbnNzCisgKgkJCVRy YW5zbGF0ZSBQb3N0Z3JlU1FMIFRMUyB2ZXJzaW9uIHRvIE5TUyB2ZXJzaW9uCisgKgorICogUmV0 dXJucyB6ZXJvIGluIGNhc2UgdGhlIHJlcXVlc3RlZCBUTFMgdmVyc2lvbiBpcyB1bmRlZmluZWQg KFBHX0FOWSkgYW5kCisgKiBzaG91bGQgYmUgc2V0IGJ5IHRoZSBjYWxsZXIsIG9yIC0xIG9uIGZh aWx1cmUuCisgKi8KK3N0YXRpYyB1aW50MTYKK3NzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25zcyhp bnQgdikKK3sKKwlzd2l0Y2ggKHYpCisJeworCQkJLyoKKwkJCSAqIFRoZXJlIGlzIG5vIFNTTF9M SUJSQVJZXyBtYWNybyBkZWZpbmVkIGluIE5TUyB3aXRoIHRoZSB2YWx1ZQorCQkJICogemVybywg c28gd2UgdXNlIHRoaXMgdG8gc2lnbmFsIHRoZSBjYWxsZXIgdGhhdCB0aGUgaGlnaGVzdAorCQkJ ICogdXNlZnVsIHZlcnNpb24gc2hvdWxkIGJlIHNldCBvbiB0aGUgY29ubmVjdGlvbi4KKwkJCSAq LworCQljYXNlIFBHX1RMU19BTlk6CisJCQlyZXR1cm4gMDsKKworCQkJLyoKKwkJCSAqIE5vIGd1 YXJkIGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlcmUgYXJlIG5vIHZlcnNpb25zIG9mIE5TUworCQkJ ICogd2l0aG91dCBzdXBwb3J0IGZvciBUTFMxLgorCQkJICovCisJCWNhc2UgUEdfVExTMV9WRVJT SU9OOgorCQkJcmV0dXJuIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMDsKKwkJY2FzZSBQR19U TFMxXzFfVkVSU0lPTjoKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKKwkJCXJl dHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzE7CisjZWxzZQorCQkJYnJlYWs7CisjZW5k aWYKKwkJY2FzZSBQR19UTFMxXzJfVkVSU0lPTjoKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9O X1RMU18xXzIKKwkJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzI7CisjZWxzZQor CQkJYnJlYWs7CisjZW5kaWYKKwkJY2FzZSBQR19UTFMxXzNfVkVSU0lPTjoKKyNpZmRlZiBTU0xf TElCUkFSWV9WRVJTSU9OX1RMU18xXzMKKwkJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RM U18xXzM7CisjZWxzZQorCQkJYnJlYWs7CisjZW5kaWYKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOwor CX0KKworCXJldHVybiAtMTsKK30KKworLyoKKyAqIHBnX1NTTGVycm1lc3NhZ2UKKyAqCQlDcmVh dGUgYW5kIHJldHVybiBhIGh1bWFuIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgZ2l2ZW4KKyAqCQl0 aGUgc3BlY2lmaWVkIGVycm9yIGNvZGUKKyAqCisgKiBQUl9FcnJvclRvTmFtZSBvbmx5IGNvbnZl cnRzIHRoZSBlbnVtIGlkZW50aWZpZXIgb2YgdGhlIGVycm9yIHRvIHN0cmluZywKKyAqIGJ1dCB0 aGF0IGNhbiBiZSBxdWl0ZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAoYW5kIGluIGNhc2UgUFJfRXJy b3JUb1N0cmluZyBpcworICogdW5hYmxlIHRvIHJlbmRlciBhIG1lc3NhZ2UgdGhlbiB3ZSBhdCBs ZWFzdCBoYXZlIHNvbWV0aGluZykuCisgKi8KK3N0YXRpYyBjaGFyICoKK3BnX1NTTGVycm1lc3Nh Z2UoUFJFcnJvckNvZGUgZXJyY29kZSkKK3sKKwlyZXR1cm4gcHNwcmludGYoIiVzICglcykiLAor CQkJCQlQUl9FcnJvclRvU3RyaW5nKGVycmNvZGUsIFBSX0xBTkdVQUdFX0lfREVGQVVMVCksCisJ CQkJCVBSX0Vycm9yVG9OYW1lKGVycmNvZGUpKTsKK30KKworLyoKKyAqIHBnX1NTTEFsZXJ0U2Vu dAorICoJCUNhbGxiYWNrIGZvciBUTFMgYWxlcnRzIHNlbnQgZnJvbSBOU1MKKyAqCisgKiBUaGUg YWxlcnQgc3lzdGVtIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gb25nb2lu ZyBpc3N1ZXMgdG8KKyAqIHRoZSBUTFMgaW1wbGVtZW50YXRpb24gc3VjaCB0aGF0IHRoZXkgY2Fu IGJlIGxvZ2dlZC4gSXQgaXMgbm90IHJlcGxhY2luZworICogZXJyb3IgaGFuZGxpbmcgZm9yIHRo ZSBOU1MgQVBJLCBidXQgcmF0aGVyIGFkZHMgYSBtb3JlIGZpbmVncmFpbmVkIHdheSBvZgorICog ZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBvbiBlcnJvcnMgZHVyaW5nIGNvbm5lY3Rpb24gcHJvY2Vz c2luZy4gVGhlIGFjdHVhbAorICogZXJyb3IgbmFtZXMgYXJlIGhvd2V2ZXIgb25seSBhY2Nlc3Np YmxlIGluIGEgcHJpdmF0ZSBOU1MgaGVhZGVyIGFuZCBub3QKKyAqIGV4cG9ydGVkLiBUaHVzLCB3 ZSBvbmx5IHVzZSBpdCBmb3IgY2xvc2Vfbm90aWZ5IHdoaWNoIGlzIGRlZmluZWQgYXMgemVyby4K KyAqCisgKiBTZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 OTU2ODY2IGZvciBmdXJ0aGVyCisgKiBkaXNjdXNzaW9uIG9uIHRoaXMgaW50ZXJmYWNlLgorICov CitzdGF0aWMgdm9pZAorcGdfU1NMQWxlcnRTZW50KGNvbnN0IFBSRmlsZURlc2MgKmZkLCB2b2lk ICpwcml2YXRlX2RhdGEsIGNvbnN0IFNTTEFsZXJ0ICphbGVydCkKK3sKKwlQb3J0ICpwb3J0ID0g KFBvcnQgKikgcHJpdmF0ZV9kYXRhOworCisJLyoKKwkgKiBjbG9zZV9ub3RpZnkgaXMgbm90IGFu IGVycm9yLCBidXQgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBjb25uZWN0aW9uCisJICogd2FzIG9y ZGVybHkgY2xvc2VkLiBTaW5jZSB0aGUgYmFja2VuZCBpcyBvbmx5IGNsb3NpbmcgY29ubmVjdGlv bnMgd2hlcmUKKwkgKiBUTFMgaXMgbm8gbG9uZ2VyIGluIHVzZSwgbG9nIGFuIGVycm9yIGluIGNh c2UgdGhpcyB3YXNuJ3QgdGhlIGNhc2UuCisJICogY2xvc2Vfbm90aWZ5IGlzIGRlZmluZWQgaW4g dGhlIE5TUyBwcml2YXRlIGVudW0gU1NMM0FsZXJ0RGVzY3JpcHRpb24KKwkgKiBhcyB6ZXJvLgor CSAqLworCWlmIChhbGVydC0+ZGVzY3JpcHRpb24gPT0gMCkKKwl7CisJCWlmIChwb3J0LT5zc2xf aW5fdXNlKQorCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCSBlcnJtc2coImNsb3NpbmcgYW4g YWN0aXZlIFRMUyBjb25uZWN0aW9uIikpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBBbnkg b3RoZXIgYWxlcnQgcmVjZWl2ZWQgaW5kaWNhdGVzIGFuIGVycm9yLCBidXQgc2luY2UgdGhleSBj YW4ndCBiZQorCSAqIG1hZGUgaGVhZHMgb3IgdGFpbHMgd2l0aCB3aXRob3V0IHJlYWRpbmcgdGhl IE5TUyBzb3VyY2UgY29kZSBsZXQncworCSAqIGp1c3QgbG9nIHRoZW0gYXMgREVCVUcgaW5mb3Jt YXRpb24gYXMgdGhleSBhcmUgb2YgbGltaXRlZCB2YWx1ZSBpbgorCSAqIGFueSBvdGhlciBjaXJj dW1zdGFuY2UuCisJICovCisJZXJlcG9ydChERUJVRzIsCisJCQkoZXJybXNnX2ludGVybmFsKCJU TFMgYWxlcnQgcmVjZWl2ZWQ6ICVkIiwgYWxlcnQtPmRlc2NyaXB0aW9uKSkpOworfQorCisvKgor ICogcGdfU1NMU2h1dGRvd25GdW5jCisgKgkJQ2FsbGJhY2sgZm9yIE5TUyBzaHV0ZG93bgorICoK KyAqIElmIE5TUyBpcyB0ZXJtaW5hdGVkIGZyb20gdGhlIG91dHNpZGUgd2hlbiB0aGUgY29ubmVj dGlvbiBpcyBzdGlsbCBpbiB1c2UKKyAqIHdlIG11c3QgdHJlYXQgdGhpcyBhcyBwb3RlbnRpYWxs eSBob3N0aWxlIGFuZCBpbW1lZGlhdGVseSBjbG9zZSB0byBhdm9pZAorICogbGVha2luZyB0aGUg Y29ubmVjdGlvbiBpbiBhbnkgd2F5LiBPbmNlIHRoaXMgaXMgY2FsbGVkLCBOU1Mgd2lsbCBzaHV0 ZG93bgorICogcmVnYXJkbGVzcyBzbyB3ZSBtYXkgYXMgd2VsbCBjbGVhbiB1cCB0aGUgYmVzdCB3 ZSBjYW4uIFJldHVybmluZyBTRUNGYWlsdXJlCisgKiB3aWxsIGNhdXNlIHRoZSBOU1Mgc2h1dGRv d24gdG8gcmV0dXJuIHdpdGggYW4gZXJyb3IsIGJ1dCBpdCB3aWxsIHNodXRkb3duCisgKiBuZXZl cnRoZWxlc3MuIG5zc19kYXRhIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGFuZCBpcyBhbHdh eXMgTlVMTC4KKyAqLworc3RhdGljIFNFQ1N0YXR1cworcGdfU1NMU2h1dGRvd25GdW5jKHZvaWQg KnByaXZhdGVfZGF0YSwgdm9pZCAqbnNzX2RhdGEpCit7CisJUG9ydCAqcG9ydCA9IChQb3J0ICop IHByaXZhdGVfZGF0YTsKKworCWlmICghcG9ydCB8fCAhcG9ydC0+c3NsX2luX3VzZSkKKwkJcmV0 dXJuIFNFQ1N1Y2Nlc3M7CisKKwkvKgorCSAqIFRoZXJlIGlzIGEgY29ubmVjdGlvbiBzdGlsbCBv cGVuLCBjbG9zZSBpdCBhbmQgc2lnbmFsIHRvIHdoYXRldmVyIHRoYXQKKwkgKiBjYWxsZWQgdGhl IHNodXRkb3duIHRoYXQgaXQgd2FzIGVycm9uZW91cy4KKwkgKi8KKwliZV90bHNfY2xvc2UocG9y dCk7CisJYmVfdGxzX2Rlc3Ryb3koKTsKKworCXJldHVybiBTRUNGYWlsdXJlOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMgYi9zcmMvYmFja2VuZC9saWJwcS9i ZS1zZWN1cmUuYwppbmRleCA4ZWYwODMyMDBhLi5jZjA1NmY1MzY0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9saWJwcS9iZS1zZWN1cmUuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1 cmUuYwpAQCAtNTAsNiArNTAsNyBAQCBib29sCQlzc2xfcGFzc3BocmFzZV9jb21tYW5kX3N1cHBv cnRzX3JlbG9hZDsKICNpZmRlZiBVU0VfU1NMCiBib29sCQlzc2xfbG9hZGVkX3ZlcmlmeV9sb2Nh dGlvbnMgPSBmYWxzZTsKICNlbmRpZgorY2hhcgkgICAqc3NsX2RhdGFiYXNlOwogCiAvKiBHVUMg dmFyaWFibGUgY29udHJvbGxpbmcgU1NMIGNpcGhlciBsaXN0ICovCiBjaGFyCSAgICpTU0xDaXBo ZXJTdWl0ZXMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZDJjZTRhODQ1MC4uNWZlYmU4 M2VmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC00NDIyLDcgKzQ0MjIsMTEgQEAgc3RhdGljIHN0 cnVjdCBjb25maWdfc3RyaW5nIENvbmZpZ3VyZU5hbWVzU3RyaW5nW10gPQogCQl9LAogCQkmc3Ns X2xpYnJhcnksCiAjaWZkZWYgVVNFX1NTTAorI2lmIGRlZmluZWQoVVNFX09QRU5TU0wpCiAJCSJP cGVuU1NMIiwKKyNlbGlmIGRlZmluZWQoVVNFX05TUykKKwkJIk5TUyIsCisjZW5kaWYKICNlbHNl CiAJCSIiLAogI2VuZGlmCkBAIC00NDkwLDYgKzQ0OTQsMTYgQEAgc3RhdGljIHN0cnVjdCBjb25m aWdfc3RyaW5nIENvbmZpZ3VyZU5hbWVzU3RyaW5nW10gPQogCQljaGVja19jYW5vbmljYWxfcGF0 aCwgYXNzaWduX3Bnc3RhdF90ZW1wX2RpcmVjdG9yeSwgTlVMTAogCX0sCiAKKwl7CisJCXsic3Ns X2RhdGFiYXNlIiwgUEdDX1NJR0hVUCwgQ09OTl9BVVRIX1NTTCwKKwkJCWdldHRleHRfbm9vcCgi TG9jYXRpb24gb2YgdGhlIE5TUyBjZXJ0aWZpY2F0ZSBkYXRhYmFzZS4iKSwKKwkJCU5VTEwKKwkJ fSwKKwkJJnNzbF9kYXRhYmFzZSwKKwkJIiIsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJ ewogCQl7InN5bmNocm9ub3VzX3N0YW5kYnlfbmFtZXMiLCBQR0NfU0lHSFVQLCBSRVBMSUNBVElP Tl9QUklNQVJZLAogCQkJZ2V0dGV4dF9ub29wKCJOdW1iZXIgb2Ygc3luY2hyb25vdXMgc3RhbmRi eXMgYW5kIGxpc3Qgb2YgbmFtZXMgb2YgcG90ZW50aWFsIHN5bmNocm9ub3VzIG9uZXMuIiksCkBA IC00NTE4LDggKzQ1MzIsMTAgQEAgc3RhdGljIHN0cnVjdCBjb25maWdfc3RyaW5nIENvbmZpZ3Vy ZU5hbWVzU3RyaW5nW10gPQogCQkJR1VDX1NVUEVSVVNFUl9PTkxZCiAJCX0sCiAJCSZTU0xDaXBo ZXJTdWl0ZXMsCi0jaWZkZWYgVVNFX09QRU5TU0wKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQog CQkiSElHSDpNRURJVU06KzNERVM6IWFOVUxMIiwKKyNlbGlmIGRlZmluZWQgKFVTRV9OU1MpCisJ CSIiLAogI2Vsc2UKIAkJIm5vbmUiLAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2Np cGhlcl9uc3MuYyBiL3NyYy9jb21tb24vY2lwaGVyX25zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjMwYjMyYTc5MDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29t bW9uL2NpcGhlcl9uc3MuYwpAQCAtMCwwICsxLDE5MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogY2lwaGVyX25zcy5jCisgKgkgIE5TUyBmdW5jdGlvbmFsaXR5IHNoYXJlZCBiZXR3ZWVu IGZyb250ZW5kIGFuZCBiYWNrZW5kIGZvciB3b3JraW5nCisgKgkgIHdpdGggY2lwaGVycworICoK KyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiBjb2RlIGlzIGNvbXBpbGVkIHdpdGggTlNT IHN1cHBvcnQuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElE RU5USUZJQ0FUSU9OCisgKiAgICAgICAgc3JjL2NvbW1vbi9jaXBoZXJfbnNzLmMKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKyNlbHNlCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKyNlbmRpZgorCisjaW5jbHVk ZSAiY29tbW9uL25zcy5oIgorCisjZGVmaW5lIElOVkFMSURfQ0lQSEVSCTB4RkZGRgorCit0eXBl ZGVmIHN0cnVjdAoreworCVNFQ09pZFRhZwlzaWduYXR1cmU7CisJU0VDT2lkVGFnCWhhc2g7CisJ aW50CQkJbGVuOworfQkJCU5TU1NpZ25hdHVyZUFsZ29yaXRobTsKKworc3RhdGljIGNvbnN0IE5T U1NpZ25hdHVyZUFsZ29yaXRobSBOU1NfU0NSQU1EaWdlc3RBbGdvcml0aG1bXSA9IHsKKworCXtT RUNfT0lEX1BLQ1MxX01ENV9XSVRIX1JTQV9FTkNSWVBUSU9OLCBTRUNfT0lEX1NIQTI1NiwgU0hB MjU2X0xFTkdUSH0sCisJe1NFQ19PSURfUEtDUzFfU0hBMV9XSVRIX1JTQV9FTkNSWVBUSU9OLCBT RUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xFTkdUSH0sCisJe1NFQ19PSURfSVNPX1NIQV9XSVRIX1JT QV9TSUdOQVRVUkUsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VDX09JRF9J U09fU0hBMV9XSVRIX1JTQV9TSUdOQVRVUkUsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RI fSwKKwl7U0VDX09JRF9QS0NTNV9QQkVfV0lUSF9NRDVfQU5EX0RFU19DQkMsIFNFQ19PSURfU0hB MjU2LCBTSEEyNTZfTEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lYOTYyX0VDRFNBX1NIQTIyNF9T SUdOQVRVUkUsIFNFQ19PSURfU0hBMjI0LCBTSEEyMjRfTEVOR1RIfSwKKwl7U0VDX09JRF9QS0NT MV9TSEEyMjRfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9TSEEyMjQsIFNIQTIyNF9MRU5H VEh9LAorCXtTRUNfT0lEX05JU1RfRFNBX1NJR05BVFVSRV9XSVRIX1NIQTIyNF9ESUdFU1QsIFNF Q19PSURfU0hBMjI0LCBTSEEyMjRfTEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lYOTYyX0VDRFNB X1NIQTI1Nl9TSUdOQVRVUkUsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VD X09JRF9QS0NTMV9TSEEyNTZfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9TSEEyNTYsIFNI QTI1Nl9MRU5HVEh9LAorCXtTRUNfT0lEX05JU1RfRFNBX1NJR05BVFVSRV9XSVRIX1NIQTI1Nl9E SUdFU1QsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lY OTYyX0VDRFNBX1NIQTM4NF9TSUdOQVRVUkUsIFNFQ19PSURfU0hBMzg0LCBTSEEzODRfTEVOR1RI fSwKKwl7U0VDX09JRF9QS0NTMV9TSEEzODRfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9T SEEzODQsIFNIQTM4NF9MRU5HVEh9LAorCisJe1NFQ19PSURfQU5TSVg5NjJfRUNEU0FfU0hBNTEy X1NJR05BVFVSRSwgU0VDX09JRF9TSEE1MTIsIFNIQTUxMl9MRU5HVEh9LAorCXtTRUNfT0lEX1BL Q1MxX1NIQTUxMl9XSVRIX1JTQV9FTkNSWVBUSU9OLCBTRUNfT0lEX1NIQTUxMiwgU0hBNTEyX0xF TkdUSH0sCisKKwl7MCwgMH0KK307CisKK3R5cGVkZWYgc3RydWN0Cit7CisJY29uc3QgY2hhciAq bmFtZTsKKwlQUlVpbnQxNgludW1iZXI7Cit9CQkJTlNTQ2lwaGVyczsKKworLyoKKyAqIFRoaXMg bGlzdCBpcyBhIHBhcnRpYWwgY29weSBvZiB0aGUgY2lwaGVycyBpbiBOU1MgZmlsZXMgbGliL3Nz bC9zc2xwcm90by5oCisgKiBpbiBvcmRlciB0byBwcm92aWRlIGEgaHVtYW4gcmVhZGFibGUgdmVy c2lvbiBvZiB0aGUgY2lwaGVycy4gSXQgd291bGQgYmUKKyAqIG5pY2UgdG8gbm90IGhhdmUgdG8g aGF2ZSB0aGlzLCBidXQgTlNTIGRvZXNuJ3QgcHJvdmlkZSBhbnkgQVBJIGFkZHJlc3NpbmcKKyAq IHRoZSBjaXBoZXJzIGJ5IG5hbWUuIFRPRE86IGRvIHdlIHdhbnQgbW9yZSBvZiB0aGUgY2lwaGVy cywgb3IgcGVyaGFwcyBsZXNzPworICovCitzdGF0aWMgY29uc3QgTlNTQ2lwaGVycyBOU1NfQ2lw aGVyTGlzdFtdID0geworCisJeyJUTFNfTlVMTF9XSVRIX05VTExfTlVMTCIsIFRMU19OVUxMX1dJ VEhfTlVMTF9OVUxMfSwKKworCXsiVExTX1JTQV9XSVRIX05VTExfTUQ1IiwgVExTX1JTQV9XSVRI X05VTExfTUQ1fSwKKwl7IlRMU19SU0FfV0lUSF9OVUxMX1NIQSIsIFRMU19SU0FfV0lUSF9OVUxM X1NIQX0sCisJeyJUTFNfUlNBX1dJVEhfUkM0XzEyOF9NRDUiLCBUTFNfUlNBX1dJVEhfUkM0XzEy OF9NRDV9LAorCXsiVExTX1JTQV9XSVRIX1JDNF8xMjhfU0hBIiwgVExTX1JTQV9XSVRIX1JDNF8x MjhfU0hBfSwKKwl7IlRMU19SU0FfV0lUSF9JREVBX0NCQ19TSEEiLCBUTFNfUlNBX1dJVEhfSURF QV9DQkNfU0hBfSwKKwl7IlRMU19SU0FfV0lUSF9ERVNfQ0JDX1NIQSIsIFRMU19SU0FfV0lUSF9E RVNfQ0JDX1NIQX0sCisJeyJUTFNfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSIsIFRMU19SU0Ff V0lUSF8zREVTX0VERV9DQkNfU0hBfSwKKworCXsiVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hB IiwgVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hBfSwKKwl7IlRMU19ESF9EU1NfV0lUSF8zREVT X0VERV9DQkNfU0hBIiwgVExTX0RIX0RTU19XSVRIXzNERVNfRURFX0NCQ19TSEF9LAorCXsiVExT X0RIX1JTQV9XSVRIX0RFU19DQkNfU0hBIiwgVExTX0RIX1JTQV9XSVRIX0RFU19DQkNfU0hBfSwK Kwl7IlRMU19ESF9SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIiwgVExTX0RIX1JTQV9XSVRIXzNE RVNfRURFX0NCQ19TSEF9LAorCisJeyJUTFNfREhFX0RTU19XSVRIX0RFU19DQkNfU0hBIiwgVExT X0RIRV9EU1NfV0lUSF9ERVNfQ0JDX1NIQX0sCisJeyJUTFNfREhFX0RTU19XSVRIXzNERVNfRURF X0NCQ19TSEEiLCBUTFNfREhFX0RTU19XSVRIXzNERVNfRURFX0NCQ19TSEF9LAorCXsiVExTX0RI RV9SU0FfV0lUSF9ERVNfQ0JDX1NIQSIsIFRMU19ESEVfUlNBX1dJVEhfREVTX0NCQ19TSEF9LAor CXsiVExTX0RIRV9SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBIiwgVExTX0RIRV9SU0FfV0lUSF8z REVTX0VERV9DQkNfU0hBfSwKKworCXsiVExTX0RIX2Fub25fV0lUSF9SQzRfMTI4X01ENSIsIFRM U19ESF9hbm9uX1dJVEhfUkM0XzEyOF9NRDV9LAorCXsiVExTX0RIX2Fub25fV0lUSF9ERVNfQ0JD X1NIQSIsIFRMU19ESF9hbm9uX1dJVEhfREVTX0NCQ19TSEF9LAorCXsiVExTX0RIX2Fub25fV0lU SF8zREVTX0VERV9DQkNfU0hBIiwgVExTX0RIX2Fub25fV0lUSF8zREVTX0VERV9DQkNfU0hBfSwK KworCXsiVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSIsIFRMU19SU0FfV0lUSF9BRVNfMTI4 X0NCQ19TSEF9LAorCXsiVExTX0RIX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQSIsIFRMU19ESF9E U1NfV0lUSF9BRVNfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RIX1JTQV9XSVRIX0FFU18xMjhfQ0JD X1NIQSIsIFRMU19ESF9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RIRV9EU1Nf V0lUSF9BRVNfMTI4X0NCQ19TSEEiLCBUTFNfREhFX0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQX0s CisJeyJUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQSIsIFRMU19ESEVfUlNBX1dJVEhf QUVTXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwg VExTX0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEF9LAorCisJeyJUTFNfUlNBX1dJVEhfQUVT XzI1Nl9DQkNfU0hBIiwgVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhf RFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIiwgVExTX0RIX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NI QX0sCisJeyJUTFNfREhfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIiwgVExTX0RIX1JTQV9XSVRI X0FFU18yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSIs IFRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBfSwKKwl7IlRMU19ESEVfUlNBX1dJVEhf QUVTXzI1Nl9DQkNfU0hBIiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEF9LAorCXsi VExTX0RIX2Fub25fV0lUSF9BRVNfMjU2X0NCQ19TSEEiLCBUTFNfREhfYW5vbl9XSVRIX0FFU18y NTZfQ0JDX1NIQX0sCisJeyJUTFNfUlNBX1dJVEhfTlVMTF9TSEEyNTYiLCBUTFNfUlNBX1dJVEhf TlVMTF9TSEEyNTZ9LAorCXsiVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiIsIFRMU19S U0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTZ9LAorCXsiVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JD X1NIQTI1NiIsIFRMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEyNTZ9LAorCisJeyJUTFNfREhF X0RTU19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1NiIsIFRMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9D QkNfU0hBMjU2fSwKKwl7IlRMU19SU0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQSIsIFRMU19S U0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhfRFNTX1dJVEhfQ0FNRUxM SUFfMTI4X0NCQ19TSEEiLCBUTFNfREhfRFNTX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEF9LAor CXsiVExTX0RIX1JTQV9XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExTX0RIX1JTQV9XSVRI X0NBTUVMTElBXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQ0FNRUxMSUFfMTI4 X0NCQ19TSEEiLCBUTFNfREhFX0RTU19XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBfSwKKwl7IlRM U19ESEVfUlNBX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEEiLCBUTFNfREhFX1JTQV9XSVRIX0NB TUVMTElBXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9hbm9uX1dJVEhfQ0FNRUxMSUFfMTI4X0NC Q19TSEEiLCBUTFNfREhfYW5vbl9XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBfSwKKworCXsiVExT X0RIRV9EU1NfV0lUSF9SQzRfMTI4X1NIQSIsIFRMU19ESEVfRFNTX1dJVEhfUkM0XzEyOF9TSEF9 LAorCXsiVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYiLCBUTFNfREhFX1JTQV9X SVRIX0FFU18xMjhfQ0JDX1NIQTI1Nn0sCisJeyJUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JD X1NIQTI1NiIsIFRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2fSwKKwl7IlRMU19E SEVfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2IiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2 X0NCQ19TSEEyNTZ9LAorCisJeyJUTFNfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEEiLCBU TFNfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIX0RTU19XSVRIX0NB TUVMTElBXzI1Nl9DQkNfU0hBIiwgVExTX0RIX0RTU19XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hB fSwKKwl7IlRMU19ESF9SU0FfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIsIFRMU19ESF9SU0Ff V0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhFX0RTU19XSVRIX0NBTUVMTElB XzI1Nl9DQkNfU0hBIiwgVExTX0RIRV9EU1NfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQX0sCisJ eyJUTFNfREhFX1JTQV9XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hBIiwgVExTX0RIRV9SU0FfV0lU SF9DQU1FTExJQV8yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhfYW5vbl9XSVRIX0NBTUVMTElBXzI1 Nl9DQkNfU0hBIiwgVExTX0RIX2Fub25fV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQX0sCisKKwl7 IlRMU19SU0FfV0lUSF9TRUVEX0NCQ19TSEEiLCBUTFNfUlNBX1dJVEhfU0VFRF9DQkNfU0hBfSwK KworCXsiVExTX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1NiIsIFRMU19SU0FfV0lUSF9BRVNf MTI4X0dDTV9TSEEyNTZ9LAorCXsiVExTX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCIsIFRM U19SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODR9LAorCXsiVExTX0RIRV9SU0FfV0lUSF9BRVNf MTI4X0dDTV9TSEEyNTYiLCBUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhfR0NNX1NIQTI1Nn0sCisJ eyJUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NCIsIFRMU19ESEVfUlNBX1dJVEhf QUVTXzI1Nl9HQ01fU0hBMzg0fSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9HQ01fU0hB MjU2IiwgVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTZ9LAorCXsiVExTX0RIRV9E U1NfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQiLCBUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfR0NN X1NIQTM4NH0sCisKKwl7IlRMU19BRVNfMTI4X0dDTV9TSEEyNTYiLCBUTFNfQUVTXzEyOF9HQ01f U0hBMjU2fSwKKwl7IlRMU19BRVNfMjU2X0dDTV9TSEEzODQiLCBUTFNfQUVTXzI1Nl9HQ01fU0hB Mzg0fSwKKwl7IlRMU19DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYiLCBUTFNfQ0hBQ0hBMjBfUE9M WTEzMDVfU0hBMjU2fSwKKwl7TlVMTCwgMH0KK307CisKKy8qCisgKiBwZ19maW5kX2NpcGhlcgor ICoJCQlUcmFuc2xhdGUgYW4gTlNTIGNpcGhlcm5hbWUgdG8gdGhlIGNpcGhlciBjb2RlCisgKgor ICogU2VhcmNoZXMgdGhlIGNvbmZpZ3VyZWQgY2lwaGVycyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcg Y2lwaGVyIGNvZGUgdG8gdGhlCisgKiBuYW1lLiBTZWFyY2ggaXMgcGVyZm9ybWVkIGNhc2UgaW5z ZW5zaXRpdmUuCisgKi8KK2Jvb2wKK3BnX2ZpbmRfY2lwaGVyKGNoYXIgKm5hbWUsIFBSVWludDE2 ICpjaXBoZXIpCit7CisJY29uc3QJCU5TU0NpcGhlcnMgKmNpcGhlcl9saXN0OworCisJZm9yIChj aXBoZXJfbGlzdCA9IE5TU19DaXBoZXJMaXN0OyBjaXBoZXJfbGlzdC0+bmFtZTsgY2lwaGVyX2xp c3QrKykKKwl7CisJCWlmIChwZ19zdHJjYXNlY21wKGNpcGhlcl9saXN0LT5uYW1lLCBuYW1lKSA9 PSAwKQorCQl7CisJCQkqY2lwaGVyID0gY2lwaGVyX2xpc3QtPm51bWJlcjsKKwkJCXJldHVybiB0 cnVlOworCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCitib29sCitwZ19maW5kX3NpZ25h dHVyZV9hbGdvcml0aG0oU0VDT2lkVGFnIHNpZ25hdHVyZSwgU0VDT2lkVGFnICphbGdvcml0aG0s IGludCAqbGVuKQoreworCWNvbnN0IE5TU1NpZ25hdHVyZUFsZ29yaXRobSAqY2FuZGlkYXRlOwor CisJY2FuZGlkYXRlID0gTlNTX1NDUkFNRGlnZXN0QWxnb3JpdGhtOworCisJZm9yIChjYW5kaWRh dGUgPSBOU1NfU0NSQU1EaWdlc3RBbGdvcml0aG07IGNhbmRpZGF0ZS0+c2lnbmF0dXJlOyBjYW5k aWRhdGUrKykKKwl7CisJCWlmIChzaWduYXR1cmUgPT0gY2FuZGlkYXRlLT5zaWduYXR1cmUpCisJ CXsKKwkJCSphbGdvcml0aG0gPSBjYW5kaWRhdGUtPmhhc2g7CisJCQkqbGVuID0gY2FuZGlkYXRl LT5sZW47CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vcHJvdG9jb2xfbnNzLmMgYi9zcmMvY29tbW9uL3Byb3RvY29s X25zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRkMTJjOWYzODgK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tbW9uL3Byb3RvY29sX25zcy5jCkBAIC0wLDAgKzEs NTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHByb3RvY29sX25zcy5jCisgKgkgIE5T UyBmdW5jdGlvbmFsaXR5IHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGZvciB3 b3JraW5nCisgKgkgIHdpdGggcHJvdG9jb2xzCisgKgorICogVGhpcyBzaG91bGQgb25seSBiZSB1 c2VkIGlmIGNvZGUgaXMgY29tcGlsZWQgd2l0aCBOU1Mgc3VwcG9ydC4KKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNyYy9j b21tb24vcHJvdG9jb2xfbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZu ZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNlbHNlCisjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiY29tbW9uL25zcy5oIgorCisvKgorICog c3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3RyaW5nCisgKgkJCVRyYW5zbGF0ZSBOU1MgVExTIHZl cnNpb24gdG8gc3RyaW5nCisgKi8KK2NoYXIgKgorc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3Ry aW5nKGludCB2KQoreworCXN3aXRjaCAodikKKwl7CisJCS8qIFNTTCB2MiBhbmQgdjMgYXJlIG5v dCBzdXBwb3J0ZWQgKi8KKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OXzI6CisJCWNhc2UgU1NM X0xJQlJBUllfVkVSU0lPTl8zXzA6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA6CisJCQlyZXR1cm4gIlRMU3YxLjAiOwor I2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMQorCQljYXNlIFNTTF9MSUJSQVJZX1ZF UlNJT05fVExTXzFfMToKKwkJCXJldHVybiAiVExTdjEuMSI7CisjZW5kaWYKKyNpZmRlZiBTU0xf TElCUkFSWV9WRVJTSU9OX1RMU18xXzIKKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18x XzI6CisJCQlyZXR1cm4gIlRMU3YxLjIiOworI2VuZGlmCisjaWZkZWYgU1NMX0xJQlJBUllfVkVS U0lPTl9UTFNfMV8zCisJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOgorCQkJcmV0 dXJuICJUTFN2MS4zIjsKKyNlbmRpZgorCX0KKworCXJldHVybiAidW5rbm93biI7Cit9CisKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9uc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9u c3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMzg1NDI5ZjkxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL25zcy5oCkBAIC0wLDAgKzEsNTIg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG5zcy5oCisgKgkgIE5TUyBzdXBwb3J0aW5n IGZ1bmN0aW9uYWxpdHkgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQKKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CQkgIHNyYy9pbmNsdWRlL2NvbW1vbi9uc3MuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIENPTU1PTl9OU1NfSAorI2RlZmluZSBDT01NT05fTlNTX0gKKworI2lmZGVmIFVT RV9OU1MKKworLyoKKyAqIEJJVFNfUEVSX0JZVEUgaXMgYWxzbyBkZWZpbmVkIGluIHRoZSBOU1BS IGhlYWRlciBmaWxlcywgc28gd2UgbmVlZCB0byB1bmRlZgorICogb3VyIHZlcnNpb24gdG8gYXZv aWQgY29tcGlsZXIgd2FybmluZ3Mgb24gcmVkZWZpbml0aW9uLgorICovCisjZGVmaW5lIHBnX0JJ VFNfUEVSX0JZVEUgQklUU19QRVJfQllURQorI3VuZGVmIEJJVFNfUEVSX0JZVEUKKy8qCisgKiBU aGUgbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIE5TUFIgaGVhZGVyIHR5cGVkZWZzIHVpbnQ2NCBh bmQgaW50NjQgd2l0aAorICogY29sbGlkaW5nIGRlZmluaXRpb25zIGZyb20gb3VycywgY2F1c2lu ZyBhIG11Y2ggZXhwZWN0ZWQgY29tcGlsZXIgZXJyb3IuCisgKiBSZW1vdmUgYmFja3dhcmRzIGNv bXBhdGliaWxpdHkgd2l0aCBhbmNpZW50IE5TUFIgdmVyc2lvbnMgdG8gYXZvaWQgdGhpcy4KKyAq LworI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3ByL25zcHIuaD4KKyNp bmNsdWRlIDxuc3ByL3ByZXJyb3IuaD4KKyNpbmNsdWRlIDxuc3ByL3ByaW8uaD4KKyNpbmNsdWRl IDxuc3ByL3BybWVtLmg+CisjaW5jbHVkZSA8bnNwci9wcnR5cGVzLmg+CisKKworI2luY2x1ZGUg PG5zcy9uc3MuaD4KKyNpbmNsdWRlIDxuc3MvaGFzaHQuaD4KKyNpbmNsdWRlIDxuc3Mvc2Vjb2lk dC5oPgorI2luY2x1ZGUgPG5zcy9zc2xwcm90by5oPgorCisvKiBzcmMvY29tbW9uL2NpcGhlcl9u c3MuYyAqLworYm9vbCBwZ19maW5kX2NpcGhlcihjaGFyICpuYW1lLCBQUlVpbnQxNiAqY2lwaGVy KTsKK2Jvb2wgcGdfZmluZF9zaWduYXR1cmVfYWxnb3JpdGhtKFNFQ09pZFRhZyBzaWduYXR1cmUs IFNFQ09pZFRhZyAqZGlnZXN0LCBpbnQgKmxlbik7CisKKy8qIHNyYy9jb21tb24vcHJvdG9jb2xf bnNzLmMgKi8KK2NoYXIgKnNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX3N0cmluZyhpbnQgdmVyc2lv bik7CisKKyNlbmRpZgkJCQkJCQkvKiBVU0VfTlNTICovCisKKyNlbmRpZgkJCQkJCQkvKiBDT01N T05fTlNTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmggYi9z cmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCmluZGV4IDAyMDE1ZWZlMTMuLmM4Mzg4YzU0NTAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgKKysrIGIvc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEtYmUuaApAQCAtMjEyLDEzICsyMTIsMTggQEAgdHlwZWRlZiBzdHJ1Y3Qg UG9ydAogCWJvb2wJCXBlZXJfY2VydF92YWxpZDsKIAogCS8qCi0JICogT3BlblNTTCBzdHJ1Y3R1 cmVzLiAoS2VlcCB0aGVzZSBsYXN0IHNvIHRoYXQgdGhlIGxvY2F0aW9ucyBvZiBvdGhlcgotCSAq IGZpZWxkcyBhcmUgdGhlIHNhbWUgd2hldGhlciBvciBub3QgeW91IGJ1aWxkIHdpdGggU1NMIGVu YWJsZWQuKQorCSAqIFRMUyBiYWNrZW5kIHNwZWNpZmljIHN0cnVjdHVyZXMuIChLZWVwIHRoZXNl IGxhc3Qgc28gdGhhdCB0aGUgbG9jYXRpb25zCisJICogb2Ygb3RoZXIgZmllbGRzIGFyZSB0aGUg c2FtZSB3aGV0aGVyIG9yIG5vdCB5b3UgYnVpbGQgd2l0aCBTU0wKKwkgKiBlbmFibGVkLikKIAkg Ki8KICNpZmRlZiBVU0VfT1BFTlNTTAogCVNTTAkJICAgKnNzbDsKIAlYNTA5CSAgICpwZWVyOwog I2VuZGlmCisKKyNpZmRlZiBVU0VfTlNTCisJdm9pZAkgICAqcHJfZmQ7CisjZW5kaWYKIH0gUG9y dDsKIAogI2lmZGVmIFVTRV9TU0wKQEAgLTMwMSw3ICszMDYsNyBAQCBleHRlcm4gdm9pZCBiZV90 bHNfZ2V0X3BlZXJfc2VyaWFsKFBvcnQgKnBvcnQsIGNoYXIgKnB0ciwgc2l6ZV90IGxlbik7CiAg KiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBvbGQgdmVyc2lvbnMgb2YgT3BlblNTTCB0aGF0 IGRvbid0IGhhdmUKICAqIHRoZSBYNTA5X2dldF9zaWduYXR1cmVfbmlkKCkgZnVuY3Rpb24uCiAg Ki8KLSNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lH TkFUVVJFX05JRCkKKyNpZiBkZWZpbmVkKFVTRV9OU1MpIHx8IChkZWZpbmVkKFVTRV9PUEVOU1NM KSAmJiBkZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCkpCiAjZGVmaW5lIEhBVkVf QkVfVExTX0dFVF9DRVJUSUZJQ0FURV9IQVNICiBleHRlcm4gY2hhciAqYmVfdGxzX2dldF9jZXJ0 aWZpY2F0ZV9oYXNoKFBvcnQgKnBvcnQsIHNpemVfdCAqbGVuKTsKICNlbmRpZgpAQCAtMzExLDYg KzMxNiwxMCBAQCBleHRlcm4gY2hhciAqYmVfdGxzX2dldF9jZXJ0aWZpY2F0ZV9oYXNoKFBvcnQg KnBvcnQsIHNpemVfdCAqbGVuKTsKIHR5cGVkZWYgdm9pZCAoKm9wZW5zc2xfdGxzX2luaXRfaG9v a190eXApIChTU0xfQ1RYICpjb250ZXh0LCBib29sIGlzU2VydmVyU3RhcnQpOwogZXh0ZXJuIFBH RExMSU1QT1JUIG9wZW5zc2xfdGxzX2luaXRfaG9va190eXAgb3BlbnNzbF90bHNfaW5pdF9ob29r OwogI2VuZGlmCisjaWZkZWYgVVNFX05TUwordHlwZWRlZiB2b2lkICgqbnNzX3Rsc19pbml0X2hv b2tfdHlwZSkgKGJvb2wgaXNTZXJ2ZXJTdGFydCk7CitleHRlcm4gUEdETExJTVBPUlQgbnNzX3Rs c19pbml0X2hvb2tfdHlwZSBuc3NfdGxzX2luaXRfaG9vazsKKyNlbmRpZgogCiAjZW5kaWYJCQkJ CQkJLyogVVNFX1NTTCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5o IGIvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEuaAppbmRleCA2YzUxYjJmMjBmLi4wZDViMTVkODIz IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCisrKyBiL3NyYy9pbmNsdWRl L2xpYnBxL2xpYnBxLmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wg c3NsX3Bhc3NwaHJhc2VfY29tbWFuZF9zdXBwb3J0c19yZWxvYWQ7CiAjaWZkZWYgVVNFX1NTTAog ZXh0ZXJuIGJvb2wgc3NsX2xvYWRlZF92ZXJpZnlfbG9jYXRpb25zOwogI2VuZGlmCitleHRlcm4g Y2hhciAqc3NsX2RhdGFiYXNlOwogCiBleHRlcm4gaW50CXNlY3VyZV9pbml0aWFsaXplKGJvb2wg aXNTZXJ2ZXJTdGFydCk7CiBleHRlcm4gYm9vbCBzZWN1cmVfbG9hZGVkX3ZlcmlmeV9sb2NhdGlv bnModm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmggYi9z cmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKaW5kZXggNjE0MDM1ZTIxNS4uNmFmODlkOWU5 OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCisrKyBiL3NyYy9p bmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaApAQCAtMTg1LDcgKzE4NSw3IEBACiAgKiBVU0VfU1NM IGNvZGUgc2hvdWxkIGJlIGNvbXBpbGVkIG9ubHkgd2hlbiBjb21waWxpbmcgd2l0aCBhbiBTU0wK ICAqIGltcGxlbWVudGF0aW9uLgogICovCi0jaWZkZWYgVVNFX09QRU5TU0wKKyNpZiBkZWZpbmVk KFVTRV9PUEVOU1NMKSB8fCBkZWZpbmVkKFVTRV9OU1MpCiAjZGVmaW5lIFVTRV9TU0wKICNlbmRp ZgogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXggYjI4OGQzNDZmOS4uNzkwMTZmOTEy ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzQ0LDYgKzM0NCwxMCBAQCBzdGF0 aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10gPSB7 CiAJCSJUYXJnZXQtU2Vzc2lvbi1BdHRycyIsICIiLCAxNSwgLyogc2l6ZW9mKCJwcmVmZXItc3Rh bmRieSIpID0gMTUgKi8KIAlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgdGFyZ2V0X3Nlc3Npb25f YXR0cnMpfSwKIAorCXsic3NsZGF0YWJhc2UiLCBOVUxMLCBOVUxMLCBOVUxMLAorCQkiQ2VydGlm aWNhdGVEYXRhYmFzZSIsICIiLCA2NCwKKwlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgc3NsZGF0 YWJhc2UpfSwKKwogCS8qIFRlcm1pbmF0aW5nIGVudHJ5IC0tLSBNVVNUIEJFIExBU1QgKi8KIAl7 TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKIAlOVUxMLCBOVUxMLCAwfQpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtc2VjdXJlLW5zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUx NTc0OTk3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUtbnNzLmMKQEAgLTAsMCArMSwxMjIzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBm ZS1zZWN1cmUtbnNzLmMKKyAqCSAgZnVuY3Rpb25zIGZvciBzdXBwb3J0aW5nIE5TUyBhcyBhIFRM UyBiYWNrZW5kIGZvciBmcm9udGVuZCBsaWJwcQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1zZWN1cmUtbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAiZmUt YXV0aC5oIgorI2luY2x1ZGUgImZlLXNlY3VyZS1jb21tb24uaCIKKyNpbmNsdWRlICJsaWJwcS1p bnQuaCIKKyNpbmNsdWRlICJjb21tb24vY3J5cHRvaGFzaC5oIgorI2luY2x1ZGUgImNvbW1vbi9u c3MuaCIKKworI2lmZGVmIEVOQUJMRV9USFJFQURfU0FGRVRZCisjaWZkZWYgV0lOMzIKKyNpbmNs dWRlICJwdGhyZWFkLXdpbjMyLmgiCisjZWxzZQorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRp ZgorI2VuZGlmCisKKy8qCisgKiBUaGUgbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIE5TUFIgaGVh ZGVyIHR5cGVkZWZzIHVpbnQ2NCBhbmQgaW50NjQgd2l0aAorICogY29sbGlkaW5nIGRlZmluaXRp b25zIGZyb20gb3VycywgY2F1c2luZyBhIG11Y2ggZXhwZWN0ZWQgY29tcGlsZXIgZXJyb3IuCisg KiBSZW1vdmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbmNpZW50IE5TUFIgdmVyc2lv bnMgdG8gYXZvaWQgdGhpcy4KKyAqLworI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNs dWRlIDxuc3ByL25zcHIuaD4KKyNpbmNsdWRlIDxuc3ByL3ByZXJyb3IuaD4KKyNpbmNsdWRlIDxu c3ByL3ByaW5pdC5oPgorI2luY2x1ZGUgPG5zcHIvcHJpby5oPgorCisjaW5jbHVkZSA8bnNzL2hh c2h0Lmg+CisjaW5jbHVkZSA8bnNzL25zcy5oPgorI2luY2x1ZGUgPG5zcy9zc2wuaD4KKyNpbmNs dWRlIDxuc3Mvc3NscHJvdG8uaD4KKyNpbmNsdWRlIDxuc3MvcGsxMWZ1bmMuaD4KKyNpbmNsdWRl IDxuc3Mvc2VjZXJyLmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZHQuaD4KKyNpbmNsdWRlIDxuc3Mv c2VjbW9kLmg+CisKK3N0YXRpYyBTRUNTdGF0dXMgcGdfbG9hZF9uc3NfbW9kdWxlKFNFQ01PRE1v ZHVsZSAqKm1vZHVsZSwgY29uc3QgY2hhciAqbGlicmFyeSwgY29uc3QgY2hhciAqbmFtZSk7Citz dGF0aWMgU0VDU3RhdHVzIHBnX2JhZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNj ICpmZCk7CitzdGF0aWMgY29uc3QgY2hhciAqcGdfU1NMZXJybWVzc2FnZShQUkVycm9yQ29kZSBl cnJjb2RlKTsKK3N0YXRpYyBTRUNTdGF0dXMgcGdfY2xpZW50X2F1dGhfaGFuZGxlcih2b2lkICph cmcsIFBSRmlsZURlc2MgKnNvY2tldCwgQ0VSVERpc3ROYW1lcyAqY2FOYW1lcywKKwkJCQkJCQkJ CQlDRVJUQ2VydGlmaWNhdGUgKipwUmV0Q2VydCwgU0VDS0VZUHJpdmF0ZUtleSAqKnBSZXRLZXkp Oworc3RhdGljIFNFQ1N0YXR1cyBwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmls ZURlc2MgKmZkLCBQUkJvb2wgY2hlY2tzaWcsIFBSQm9vbCBpc1NlcnZlcik7CitzdGF0aWMgaW50 CXNzbF9wcm90b2NvbF9wYXJhbV90b19uc3MoY29uc3QgY2hhciAqcHJvdG9jb2wpOworc3RhdGlj IGJvb2wgY2VydGlmaWNhdGVfZGF0YWJhc2VfaGFzX0NBKFBHY29ubiAqY29ubik7CisKK3N0YXRp YyBjaGFyICpQUXNzbF9wYXNzd2RfY2IoUEsxMVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnks IHZvaWQgKmFyZyk7CisKKy8qCisgKiBQUl9JbXBvcnRUQ1BTb2NrZXQoKSBpcyBhIHByaXZhdGUg QVBJLCBidXQgdmVyeSB3aWRlbHkgdXNlZCwgYXMgaXQncyB0aGUKKyAqIG9ubHkgd2F5IHRvIG1h a2UgTlNTIHVzZSBhbiBhbHJlYWR5IHNldCB1cCBQT1NJWCBmaWxlIGRlc2NyaXB0b3IgcmF0aGVy CisgKiB0aGFuIG9wZW5pbmcgb25lIGl0c2VsZi4gVG8gcXVvdGUgdGhlIE5TUyBkb2N1bWVudGF0 aW9uOgorICoKKyAqCQkiSW4gdGhlb3J5LCBjb2RlIHRoYXQgdXNlcyBQUl9JbXBvcnRUQ1BTb2Nr ZXQgbWF5IGJyZWFrIHdoZW4gTlNQUidzCisgKgkJaW1wbGVtZW50YXRpb24gY2hhbmdlcy4gSW4g cHJhY3RpY2UsIHRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuIGJlY2F1c2UKKyAqCQlOU1BSJ3Mg aW1wbGVtZW50YXRpb24gaGFzIGJlZW4gc3RhYmxlIGZvciB5ZWFycyBhbmQgYmVjYXVzZSBvZiBO U1BSJ3MKKyAqCQlzdHJvbmcgY29tbWl0bWVudCB0byBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiIK KyAqCisgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEv UHJvamVjdHMvTlNQUi9SZWZlcmVuY2UvUFJfSW1wb3J0VENQU29ja2V0CisgKgorICogVGhlIGZ1 bmN0aW9uIGlzIGRlY2xhcmVkIGluIDxwcml2YXRlL3BwcmlvLmg+LCBidXQgYXMgaXQgaXMgYSBo ZWFkZXIgbWFya2VkCisgKiBwcml2YXRlIHdlIGRlY2xhcmUgaXQgaGVyZSByYXRoZXIgdGhhbiBp bmNsdWRpbmcgaXQuCisgKi8KK05TUFJfQVBJKFBSRmlsZURlc2MgKikgUFJfSW1wb3J0VENQU29j a2V0KGludCk7CisKK3N0YXRpYyBTRUNNT0RNb2R1bGUgKmNhX3RydXN0ID0gTlVMTDsKKworLyoK KyAqIFRoaXMgbG9naWMgZXhpc3RzIGluIE5TUyBhcyB3ZWxsLCBidXQgaXQncyBvbmx5IGF2YWls YWJsZSBmb3Igd2hlbiB0aGVyZSBpcworICogYSBkYXRhYmFzZSB0byBvcGVuLCBhbmQgbm90IG9u bHkgdXNpbmcgdGhlIHN5c3RlbSB0cnVzdCBzdG9yZS4gVGh1cywgd2UKKyAqIG5lZWQgdG8ga2Vl cCBvdXIgb3duIGNvcHkuCisgKi8KKyNpZiBkZWZpbmVkKFdJTjMyKQorc3RhdGljIGNvbnN0IGNo YXIgKmNhX3RydXN0X25hbWUgPSAibnNzY2tiaS5kbGwiOworI2VsaWYgZGVmaW5lZChfX2Rhcndp bl9fKQorc3RhdGljIGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2tiaS5keWxp YiI7CisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2ti aS5zbyI7CisjZW5kaWYKKworc3RhdGljIFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgUFFzc2xL ZXlQYXNzSG9vayA9IE5VTEw7CisKKyNpZmRlZiBFTkFCTEVfVEhSRUFEX1NBRkVUWQorI2lmbmRl ZiBXSU4zMgorc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBzc2xfY29uZmlnX211dGV4ID0gUFRIUkVB RF9NVVRFWF9JTklUSUFMSVpFUjsKKyNlbHNlCitzdGF0aWMgcHRocmVhZF9tdXRleF90IHNzbF9j b25maWdfbXV0ZXggPSBOVUxMOworc3RhdGljIGxvbmcgd2luMzJfc3NsX2NyZWF0ZV9tdXRleCA9 IDA7CisjZW5kaWYKKyNlbmRpZgkJCQkJCQkvKiBFTkFCTEVfVEhSRUFEX1NBRkVUWSAqLworCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KKy8qCQkJIFByb2NlZHVyZXMgY29tbW9uIHRvIGFsbCBzZWN1cmUgc2Vzc2lvbnMJ CQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBwZ3Rsc19pbml0X2xpYnJhcnkKKyAqCisgKiBUaGVy ZSBpcyBubyBkaXJlY3QgZXF1aXZhbGVudCBmb3IgUFFpbml0T3BlblNTTCBpbiBOU1MvTlNQUiwg d2l0aCBQUl9Jbml0CisgKiBiZWluZyB0aGUgY2xvc2VzdCBtYXRjaCB0aGVyZSBpcy4gUFJfSW5p dCBpcyBob3dldmVyIGFscmVhZHkgZG9jdW1lbnRlZCB0bworICogbm90IGJlIHJlcXVpcmVkIHNv IHNpbXBseSBtYWtpbmcgdGhpcyBhIG5vb3Agc2VlbXMgbGlrZSB0aGUgYmVzdCBvcHRpb24uCisg Ki8KK3ZvaWQKK3BndGxzX2luaXRfbGlicmFyeShib29sIGRvX3NzbCwgaW50IGRvX2NyeXB0bykK K3sKKwkvKiBub29wICovCit9CisKK2ludAorcGd0bHNfaW5pdChQR2Nvbm4gKmNvbm4sIGJvb2wg ZG9fc3NsLCBib29sIGRvX2NyeXB0bykKK3sKKwlpZiAoZG9fc3NsKQorCXsKKwkJY29ubi0+bnNz X2NvbnRleHQgPSBOVUxMOworCisJCWNvbm4tPnNzbF9pbl91c2UgPSBmYWxzZTsKKwkJY29ubi0+ aGFzX3Bhc3N3b3JkID0gZmFsc2U7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK3BndGxz X2Nsb3NlKFBHY29ubiAqY29ubikKK3sKKwkvKgorCSAqIEFsbCBOU1MgcmVmZXJlbmNlcyBtdXN0 IGJlIGNsZWFuZWQgdXAgYmVmb3JlIHdlIGNsb3NlIG91dCB0aGUKKwkgKiBjb250ZXh0LgorCSAq LworCWlmIChjb25uLT5wcl9mZCkKKwl7CisJCVBSU3RhdHVzCXN0YXR1czsKKworCQlzdGF0dXMg PSBQUl9DbG9zZShjb25uLT5wcl9mZCk7CisJCWlmIChzdGF0dXMgIT0gUFJfU1VDQ0VTUykKKwkJ eworCQkJcHFJbnRlcm5hbE5vdGljZSgmY29ubi0+bm90aWNlSG9va3MsCisJCQkJCQkJICJ1bmFi bGUgdG8gY2xvc2UgTlNQUiBmZDogJXMiLAorCQkJCQkJCSBwZ19TU0xlcnJtZXNzYWdlKFBSX0dl dEVycm9yKCkpKTsKKwkJfQorCisJCWNvbm4tPnByX2ZkID0gTlVMTDsKKwl9CisKKwlpZiAoY29u bi0+bnNzX2NvbnRleHQpCisJeworCQlTRUNTdGF0dXMJc3RhdHVzOworCisJCS8qIFRoZSBzZXNz aW9uIGNhY2hlIG11c3QgYmUgY2xlYXJlZCwgb3Igd2UnbGwgbGVhayByZWZlcmVuY2VzICovCisJ CVNTTF9DbGVhclNlc3Npb25DYWNoZSgpOworCisJCXN0YXR1cyA9IE5TU19TaHV0ZG93bkNvbnRl eHQoY29ubi0+bnNzX2NvbnRleHQpOworCisJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJ eworCQkJcHFJbnRlcm5hbE5vdGljZSgmY29ubi0+bm90aWNlSG9va3MsCisJCQkJCQkJICJ1bmFi bGUgdG8gc2h1dCBkb3duIE5TUyBjb250ZXh0OiAlcyIsCisJCQkJCQkJIHBnX1NTTGVycm1lc3Nh Z2UoUFJfR2V0RXJyb3IoKSkpOworCQl9CisKKwkJY29ubi0+bnNzX2NvbnRleHQgPSBOVUxMOwor CX0KK30KKworUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZQorcGd0bHNfb3Blbl9jbGllbnQoUEdj b25uICpjb25uKQoreworCVNFQ1N0YXR1cwlzdGF0dXM7CisJUFJGaWxlRGVzYyAqbW9kZWw7CisJ TlNTSW5pdFBhcmFtZXRlcnMgcGFyYW1zOworCVNTTFZlcnNpb25SYW5nZSBkZXNpcmVkX3Jhbmdl OworCisjaWZkZWYgRU5BQkxFX1RIUkVBRF9TQUZFVFkKKyNpZmRlZiBXSU4zMgorCS8qIFRoaXMg bG9ja2luZyBpcyBtb2RlbGxlZCBhZnRlciBmZS1zZWN1cmUtb3BlbnNzbC5jICovCisJaWYgKHNz bF9jb25maWdfbXV0ZXggPT0gTlVMTCkKKwl7CisJCXdoaWxlIChJbnRlcmxvY2tlZEV4Y2hhbmdl KCZ3aW4zMl9zc2xfY3JlYXRlX211dGV4LCAxKSA9PSAxKQorCQkJLyogbG9vcCB3aGlsZSBhbm90 aGVyIHRocmVhZCBvd25zIHRoZSBsb2NrICovIDsKKwkJaWYgKHNzbF9jb25maWdfbXV0ZXggPT0g TlVMTCkKKwkJeworCQkJaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmc3NsX2NvbmZpZ19tdXRleCwg TlVMTCkpCisJCQl7CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK KwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gbG9jayB0aHJlYWQiKSk7CisJCQkJ cmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCQkJfQorCQl9CisJCUludGVybG9ja2VkRXhj aGFuZ2UoJndpbjMyX3NzbF9jcmVhdGVfbXV0ZXgsIDApOworCX0KKyNlbmRpZgorCWlmIChwdGhy ZWFkX211dGV4X2xvY2soJnNzbF9jb25maWdfbXV0ZXgpKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRv IGxvY2sgdGhyZWFkIikpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorI2Vu ZGlmCQkJCQkJCS8qIEVOQUJMRV9USFJFQURfU0FGRVRZICovCisKKwkvKgorCSAqIFRoZSBOU1BS IGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgcnVudGltZSBpbml0aWFsaXphdGlvbiB2aWEgUFJf SW5pdAorCSAqIGlzIG5vIGxvbmdlciByZXF1aXJlZCwgYXMgdGhlIGZpcnN0IGNhbGxlciBpbnRv IE5TUFIgd2lsbCBwZXJmb3JtIHRoZQorCSAqIGluaXRpYWxpemF0aW9uIGltcGxpY2l0bHkuIFNl ZSBiZS1zZWN1cmUtbnNzLmMgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbgorCSAqIG9uIFBSX0luaXQu CisJICovCisJUFJfSW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJT1JJVFlfTk9STUFMLCAwKTsK KworCS8qCisJICogTlNTIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgdXNlIG9mIGNvbnRleHRzIGlz IGZ1cnRoZXIgZGlzY3Vzc2VkIGluCisJICogYmUtc2VjdXJlLW5zcy5jCisJICovCisJbWVtc2V0 KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKwlwYXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBh cmFtcyk7CisJcGFyYW1zLmRiVG9rZW5EZXNjcmlwdGlvbiA9IHN0cmR1cCgicG9zdGdyZXMiKTsK KworCWlmIChjb25uLT5zc2xkYXRhYmFzZSAmJiBzdHJsZW4oY29ubi0+c3NsZGF0YWJhc2UpID4g MCkKKwl7CisJCVBRRXhwQnVmZmVyRGF0YSBzc2xkYXRhYmFzZV9wYXRoOworCisJCWluaXRQUUV4 cEJ1ZmZlcigmc3NsZGF0YWJhc2VfcGF0aCk7CisJCWFwcGVuZFBRRXhwQnVmZmVyKCZzc2xkYXRh YmFzZV9wYXRoLCAic3FsOiVzIiwgY29ubi0+c3NsZGF0YWJhc2UpOworCisJCWlmIChQUUV4cEJ1 ZmZlckRhdGFCcm9rZW4oc3NsZGF0YWJhc2VfcGF0aCkpCisJCXsKKwkJCXByaW50ZlBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJvdXQgb2Yg bWVtb3J5XG4iKSk7CisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCX0KKworCQlj b25uLT5uc3NfY29udGV4dCA9IE5TU19Jbml0Q29udGV4dChzc2xkYXRhYmFzZV9wYXRoLmRhdGEs ICIiLCAiIiwgIiIsCisJCQkJCQkJCQkJCSZwYXJhbXMsCisJCQkJCQkJCQkJCU5TU19JTklUX1JF QURPTkxZIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisJCXRlcm1QUUV4cEJ1ZmZlcigmc3NsZGF0 YWJhc2VfcGF0aCk7CisKKwkJaWYgKCFjb25uLT5uc3NfY29udGV4dCkKKwkJeworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQo InVuYWJsZSB0byBvcGVuIGNlcnRpZmljYXRlIGRhdGFiYXNlIFwiJXNcIjogJXMiKSwKKwkJCQkJ CQkgIGNvbm4tPnNzbGRhdGFiYXNlLAorCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRF cnJvcigpKSk7CisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJY29ubi0+bnNzX2NvbnRleHQgPSBOU1NfSW5pdENvbnRleHQoIiIsICIiLCAiIiwg IiIsICZwYXJhbXMsCisJCQkJCQkJCQkJCU5TU19JTklUX1JFQURPTkxZIHwgTlNTX0lOSVRfTk9D RVJUREIgfAorCQkJCQkJCQkJCQlOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VPUEVO IHwKKwkJCQkJCQkJCQkJTlNTX0lOSVRfTk9ST09USU5JVCB8IE5TU19JTklUX1BLMTFSRUxPQUQp OworCQlpZiAoIWNvbm4tPm5zc19jb250ZXh0KQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGlu aXRpYWxpemUgTlNTOiAlcyIpLAorCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJv cigpKSk7CisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCX0KKwl9CisKKwkvKgor CSAqIENvbmZpZ3VyZSBjaXBoZXIgcG9saWN5IGJ5IHNldHRpbmcgdGhlIGRvbWVzdGljIHN1aXRl LgorCSAqCisJICogSGlzdG9yaWNhbGx5IHRoZXJlIHdlcmUgZGlmZmVyZW50IGNpcGhlciBwb2xp Y2llcyBiYXNlZCBvbiBleHBvcnQgKGFuZAorCSAqIGltcG9ydCkgcmVzdHJpY3Rpb25zOiBEb21l c3RpYywgRXhwb3J0IGFuZCBGcmFuY2UuIFRoZXNlIGFyZSBzaW5jZSBsb25nCisJICogcmVtb3Zl ZCB3aXRoIGFsbCBjaXBoZXJzIGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdC4gRHVlIHRvIGJhY2t3 YXJkcworCSAqIGNvbXBhdGliaWxpdHksIHRoZSBvbGQgQVBJIGlzIHN0aWxsIHVzZWQgZXZlbiB0 aG91Z2ggYWxsIHRocmVlIHBvbGljaWVzCisJICogbm93IGRvIHRoZSBzYW1lIHRoaW5nLgorCSAq LworCXN0YXR1cyA9IE5TU19TZXREb21lc3RpY1BvbGljeSgpOworCWlmIChzdGF0dXMgIT0gU0VD U3VjY2VzcykKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJ CQkJCQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byBjb25maWd1cmUgY2lwaGVyIHBvbGljeTog JXMiKSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisKKwkJcmV0 dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCX0KKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2 ZSBhIGNlcnRpZmljYXRlIGRhdGFiYXNlLCB0aGUgc3lzdGVtIHRydXN0IHN0b3JlIGlzIHRoZQor CSAqIGZhbGxiYWNrIHdlIGNhbiB1c2UuIElmIHdlIGZhaWwgdG8gaW5pdGlhbGl6ZSB0aGF0IGFz IHdlbGwsIHdlIGNhbgorCSAqIHN0aWxsIGF0dGVtcHQgYSBjb25uZWN0aW9uIGFzIGxvbmcgYXMg dGhlIHNzbG1vZGUgaXNuJ3QgdmVyaWZ5LSouCisJICovCisJaWYgKCFjb25uLT5zc2xkYXRhYmFz ZSAmJgorCQkoc3RyY21wKGNvbm4tPnNzbG1vZGUsICJ2ZXJpZnktY2EiKSA9PSAwIHx8CisJCSBz dHJjbXAoY29ubi0+c3NsbW9kZSwgInZlcmlmeS1mdWxsIikgPT0gMCkpCisJeworCQlzdGF0dXMg PSBwZ19sb2FkX25zc19tb2R1bGUoJmNhX3RydXN0LCBjYV90cnVzdF9uYW1lLCAiXCJSb290IENl cnRpZmljYXRlc1wiIik7CisJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJeworCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRl eHQoIldBUk5JTkc6IHVuYWJsZSB0byBsb2FkIHN5c3RlbSBOU1MgdHJ1c3QgbW9kdWxlIFwiJXNc IiwgY3JlYXRlIGEgbG9jYWwgTlNTIGRhdGFiYXNlIGFuZCByZXRyeSA6ICVzIiksCisJCQkJCQkJ ICBjYV90cnVzdF9uYW1lLAorCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigp KSk7CisKKwkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwkJfQorCX0KKworI2lmZGVm IEVOQUJMRV9USFJFQURfU0FGRVRZCisJcHRocmVhZF9tdXRleF91bmxvY2soJnNzbF9jb25maWdf bXV0ZXgpOworI2VuZGlmCisKKwlQSzExX1NldFBhc3N3b3JkRnVuYyhQUXNzbF9wYXNzd2RfY2Ip OworCisJLyoKKwkgKiBJbXBvcnQgdGhlIGFscmVhZHkgb3BlbmVkIHNvY2tldCBhcyB3ZSBkb24n dCB3YW50IHRvIHVzZSBOU1BSIGZ1bmN0aW9ucworCSAqIGZvciBvcGVuaW5nIHRoZSBuZXR3b3Jr IHNvY2tldCBkdWUgdG8gaG93IHRoZSBQb3N0Z3JlU1FMIHByb3RvY29sIHdvcmtzCisJICogd2l0 aCBUTFMgY29ubmVjdGlvbnMuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHBhcnQgb2YgdGhlIE5TUFIg cHVibGljIEFQSSwKKwkgKiBzZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSBm b3IgdGhlIHJhdGlvbmFsZSBvZiBzdGlsbCB1c2luZworCSAqIGl0LgorCSAqLworCWNvbm4tPnBy X2ZkID0gUFJfSW1wb3J0VENQU29ja2V0KGNvbm4tPnNvY2spOworCWlmICghY29ubi0+cHJfZmQp CisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gYXR0YWNoIHRvIHNvY2tldDogJXMiKSwKKwkJCQkJCSAg cGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCXJldHVybiBQR1JFU19QT0xMSU5H X0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIE1vc3Qgb2YgdGhlIGRvY3VtZW50YXRpb24gYXZhaWxh YmxlLCBhbmQgaW1wbGVtZW50YXRpb25zIG9mLCBOU1MvTlNQUgorCSAqIHVzZSB0aGUgUFJfTmV3 VENQU29ja2V0KCkgZnVuY3Rpb24gaGVyZSwgd2hpY2ggaGFzIHRoZSBkcmF3YmFjayB0aGF0IGl0 CisJICogY2FuIG9ubHkgY3JlYXRlIElQdjQgc29ja2V0cy4gSW5zdGVhZCB1c2UgUFJfT3BlblRD UFNvY2tldCgpIHdoaWNoCisJICogY29wZXMgd2l0aCBJUHY2IGFzIHdlbGwuCisJICovCisJbW9k ZWwgPSBTU0xfSW1wb3J0RkQoTlVMTCwgUFJfT3BlblRDUFNvY2tldChjb25uLT5sYWRkci5hZGRy LnNzX2ZhbWlseSkpOworCWlmICghbW9kZWwpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gZW5hYmxl IFRMUzogJXMiKSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJ CXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwl9CisKKwkvKiBEaXNhYmxlIG9sZCBwcm90 b2NvbCB2ZXJzaW9ucyAoU1NMdjIgYW5kIFNTTHYzKSAqLworCVNTTF9PcHRpb25TZXQobW9kZWws IFNTTF9FTkFCTEVfU1NMMiwgUFJfRkFMU0UpOworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9W Ml9DT01QQVRJQkxFX0hFTExPLCBQUl9GQUxTRSk7CisJU1NMX09wdGlvblNldChtb2RlbCwgU1NM X0VOQUJMRV9TU0wzLCBQUl9GQUxTRSk7CisKKyNpZmRlZiBTU0xfQ0JDX1JBTkRPTV9JVgorCisJ LyoKKwkgKiBFbmFibGUgcHJvdGVjdGlvbiBhZ2FpbnN0IHRoZSBCRUFTVCBhdHRhY2sgaW4gY2Fz ZSB0aGUgTlNTIGxpYnJhcnkgaGFzCisJICogc3VwcG9ydCBmb3IgdGhhdC4gV2hpbGUgU1NMdjMg aXMgZGlzYWJsZWQsIHdlIG1heSBzdGlsbCBhbGxvdyBUTFN2MQorCSAqIHdoaWNoIGlzIGFmZmVj dGVkLiBUaGUgb3B0aW9uIGlzbid0IGRvY3VtZW50ZWQgYXMgYW4gU1NMIG9wdGlvbiwgYnV0IGFz CisJICogYW4gTlNTIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAqLworCVNTTF9PcHRpb25TZXQo bW9kZWwsIFNTTF9DQkNfUkFORE9NX0lWLCBQUl9UUlVFKTsKKyNlbmRpZgorCisJLyogU2V0IHVz IHVwIGFzIGEgVExTIGNsaWVudCBmb3IgdGhlIGhhbmRzaGFrZSAqLworCVNTTF9PcHRpb25TZXQo bW9kZWwsIFNTTF9IQU5EU0hBS0VfQVNfQ0xJRU5ULCBQUl9UUlVFKTsKKworCS8qCisJICogV2hl biBzZXR0aW5nIHRoZSBhdmFpbGFibGUgcHJvdG9jb2xzLCB3ZSBlaXRoZXIgdXNlIHRoZSB1c2Vy IGRlZmluZWQKKwkgKiBjb25maWd1cmF0aW9uIHZhbHVlcywgYW5kIGlmIG1pc3Npbmcgd2UgYWNj ZXB0IHdoYXRldmVyIGlzIHRoZSBoaWdoZXN0CisJICogdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhl IGxpYnJhcnkgYXMgdGhlIG1heCBhbmQgb25seSBsaW1pdCB0aGUgcmFuZ2UgaW4KKwkgKiB0aGUg b3RoZXIgZW5kIGF0IFRMU3YxLjAuIHNzbF92YXJpYW50X3N0cmVhbSBpcyBhIFByb3RvY29sVmFy aWFudCBlbnVtCisJICogZm9yIFN0cmVhbSBwcm90b2NvbHMsIHJhdGhlciB0aGFuIGRhdGFncmFt LgorCSAqLworCVNTTF9WZXJzaW9uUmFuZ2VHZXRTdXBwb3J0ZWQoc3NsX3ZhcmlhbnRfc3RyZWFt LCAmZGVzaXJlZF9yYW5nZSk7CisJZGVzaXJlZF9yYW5nZS5taW4gPSBTU0xfTElCUkFSWV9WRVJT SU9OX1RMU18xXzA7CisKKwlpZiAoY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uICYmIHN0 cmxlbihjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pID4gMCkKKwl7CisJCWludAkJCXNz bF9taW5fdmVyID0gc3NsX3Byb3RvY29sX3BhcmFtX3RvX25zcyhjb25uLT5zc2xfbWluX3Byb3Rv Y29sX3ZlcnNpb24pOworCisJCWlmIChzc2xfbWluX3ZlciA9PSAtMSkKKwkJeworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQo ImludmFsaWQgdmFsdWUgXCIlc1wiIGZvciBtaW5pbXVtIHZlcnNpb24gb2YgU1NMIHByb3RvY29s XG4iKSwKKwkJCQkJCQkgIGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CisJCQlyZXR1 cm4gLTE7CisJCX0KKworCQlkZXNpcmVkX3JhbmdlLm1pbiA9IHNzbF9taW5fdmVyOworCX0KKwor CWlmIChjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24gJiYgc3RybGVuKGNvbm4tPnNzbF9t YXhfcHJvdG9jb2xfdmVyc2lvbikgPiAwKQorCXsKKwkJaW50CQkJc3NsX21heF92ZXIgPSBzc2xf cHJvdG9jb2xfcGFyYW1fdG9fbnNzKGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisK KwkJaWYgKHNzbF9tYXhfdmVyID09IC0xKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCB2YWx1ZSBc IiVzXCIgZm9yIG1heGltdW0gdmVyc2lvbiBvZiBTU0wgcHJvdG9jb2xcbiIpLAorCQkJCQkJCSAg Y29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9uKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJ CWRlc2lyZWRfcmFuZ2UubWF4ID0gc3NsX21heF92ZXI7CisJfQorCisJaWYgKFNTTF9WZXJzaW9u UmFuZ2VTZXQobW9kZWwsICZkZXNpcmVkX3JhbmdlKSAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgidW5hYmxlIHRvIHNldCBhbGxvd2VkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlOiAlcyIp LAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBH UkVTX1BPTExJTkdfRkFJTEVEOworCX0KKworCS8qCisJICogU2V0IHVwIGNhbGxiYWNrIGZvciB2 ZXJpZnlpbmcgc2VydmVyIGNlcnRpZmljYXRlcywgYXMgd2VsbCBhcyBmb3IgaG93CisJICogdG8g aGFuZGxlIGZhaWxlZCB2ZXJpZmljYXRpb25zLgorCSAqLworCVNTTF9BdXRoQ2VydGlmaWNhdGVI b29rKG1vZGVsLCBwZ19jZXJ0X2F1dGhfaGFuZGxlciwgKHZvaWQgKikgY29ubik7CisJU1NMX0Jh ZENlcnRIb29rKG1vZGVsLCBwZ19iYWRfY2VydF9oYW5kbGVyLCAodm9pZCAqKSBjb25uKTsKKwor CS8qCisJICogQ29udmVydCB0aGUgTlNQUiBzb2NrZXQgdG8gYW4gU1NMIHNvY2tldC4gRW5zdXJp bmcgdGhlIHN1Y2Nlc3Mgb2YgdGhpcworCSAqIG9wZXJhdGlvbiBpcyBjcml0aWNhbCBhcyBOU1Mg U1NMXyogZnVuY3Rpb25zIG1heSByZXR1cm4gU0VDU3VjY2VzcyBvbgorCSAqIHRoZSBzb2NrZXQg ZXZlbiB0aG91Z2ggU1NMIGhhc24ndCBiZWVuIGVuYWJsZWQsIHdoaWNoIGludHJvZHVjZSBhIHJp c2sKKwkgKiBvZiBzaWxlbnQgZG93bmdyYWRlcy4KKwkgKi8KKwljb25uLT5wcl9mZCA9IFNTTF9J bXBvcnRGRChtb2RlbCwgY29ubi0+cHJfZmQpOworCWlmICghY29ubi0+cHJfZmQpCisJeworCQlw cmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0 ZXh0KCJ1bmFibGUgdG8gY29uZmlndXJlIGNsaWVudCBmb3IgVExTOiAlcyIpLAorCQkJCQkJICBw Z19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdf RkFJTEVEOworCX0KKworCS8qCisJICogVGhlIG1vZGVsIGNhbiBub3cgYmUgY2xvc2VkIGFzIHdl J3ZlIGFwcGxpZWQgdGhlIHNldHRpbmdzIG9mIHRoZSBtb2RlbAorCSAqIG9udG8gdGhlIHJlYWwg c29ja2V0LiBGcm9tIGhlcmUgb24gd2Ugc2hvdWxkIG9ubHkgdXNlIGNvbm4tPnByX2ZkLgorCSAq LworCVBSX0Nsb3NlKG1vZGVsKTsKKworCS8qIFNldCB0aGUgcHJpdmF0ZSBkYXRhIHRvIGJlIHBh c3NlZCB0byB0aGUgcGFzc3dvcmQgY2FsbGJhY2sgKi8KKwlTU0xfU2V0UEtDUzExUGluQXJnKGNv bm4tPnByX2ZkLCAodm9pZCAqKSBjb25uKTsKKworCXN0YXR1cyA9IFNTTF9SZXNldEhhbmRzaGFr ZShjb25uLT5wcl9mZCwgUFJfRkFMU0UpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7 CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBx X2dldHRleHQoInVuYWJsZSB0byBpbml0aWF0ZSBoYW5kc2hha2U6ICVzIiksCisJCQkJCQkgIHBn X1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19G QUlMRUQ7CisJfQorCisJLyogU2V0IGNhbGxiYWNrIGZvciBjbGllbnQgYXV0aGVudGljYXRpb24g d2hlbiByZXF1ZXN0ZWQgYnkgdGhlIHNlcnZlciAqLworCVNTTF9HZXRDbGllbnRBdXRoRGF0YUhv b2soY29ubi0+cHJfZmQsIHBnX2NsaWVudF9hdXRoX2hhbmRsZXIsICh2b2lkICopIGNvbm4pOwor CisJLyoKKwkgKiBTcGVjaWZ5IHdoaWNoIGhvc3RuYW1lIHdlIGFyZSBleHBlY3RpbmcgdG8gdGFs ayB0byBmb3IgdGhlIENsaWVudEhlbGxvCisJICogU05JIGV4dGVuc2lvbiwgdW5sZXNzIHRoZSB1 c2VyIGhhcyBkaXNhYmxlZCBpdC4gTlNTIHdpbGwgc3VwcHJlc3MgSVAKKwkgKiBhZGRyZXNzZXMg aW4gU05Jcywgc28gd2UgZG9uJ3QgbmVlZCB0byBmaWx0ZXIgdGhvc2UgZXhwbGljaXRseSBsaWtl IHdlIGRvCisJICogZm9yIE9wZW5TU0wuCisJICovCisJaWYgKGNvbm4tPnNzbHNuaSAmJiBjb25u LT5zc2xzbmlbMF0gPT0gJzEnKQorCXsKKwkJY29uc3QgY2hhciAqaG9zdCA9IGNvbm4tPmNvbm5o b3N0W2Nvbm4tPndoaWNoaG9zdF0uaG9zdDsKKwkJaWYgKGhvc3QgJiYgaG9zdFswXSkKKwkJCVNT TF9TZXRVUkwoY29ubi0+cHJfZmQsIGhvc3QpOworCX0KKworCXN0YXR1cyA9IFNTTF9Gb3JjZUhh bmRzaGFrZShjb25uLT5wcl9mZCk7CisKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJewor CQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJTU0wgZXJyb3I6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0 RXJyb3IoKSkpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJY29ubi0+ c3NsX2luX3VzZSA9IHRydWU7CisJcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7Cit9CisKK3NzaXpl X3QKK3BndGxzX3JlYWQoUEdjb25uICpjb25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCit7CisJ UFJJbnQzMgkJbnJlYWQ7CisJUFJFcnJvckNvZGUgc3RhdHVzOworCWludAkJCXJlYWRfZXJybm8g PSAwOworCisJLyoKKwkgKiBQUl9SZWN2IGJsb2NrcyB1bnRpbCB0aGVyZSBpcyBkYXRhIHRvIHJl YWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJlcy4gV2UKKwkgKiBkb24ndCB3YW50IHRvIHNpdCBibG9j a2VkIGhlcmUsIHNvIHRoZSB0aW1lb3V0IGlzIHR1cm5lZCBvZmYgYnkgdXNpbmcKKwkgKiBQUl9J TlRFUlZBTF9OT19XQUlUIHdoaWNoIG1lYW5zICJyZXR1cm4gaW1tZWRpYXRlbHkiLCAgWmVybyBp cyByZXR1cm5lZAorCSAqIGZvciBjbG9zZWQgY29ubmVjdGlvbnMsIHdoaWxlIC0xIGluZGljYXRl cyBhbiBlcnJvciB3aXRoaW4gdGhlIG9uZ29pbmcKKwkgKiBjb25uZWN0aW9uLgorCSAqLworCW5y ZWFkID0gUFJfUmVjdihjb25uLT5wcl9mZCwgcHRyLCBsZW4sIDAsIFBSX0lOVEVSVkFMX05PX1dB SVQpOworCisJaWYgKG5yZWFkID09IDApCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJUTFMgcmVhZCBlcnJvcjog RU9GIGRldGVjdGVkXG4iKSk7CisJCXJlYWRfZXJybm8gPSBFQ09OTlJFU0VUOworCQlucmVhZCA9 IC0xOworCX0KKwllbHNlIGlmIChucmVhZCA9PSAtMSkKKwl7CisJCXN0YXR1cyA9IFBSX0dldEVy cm9yKCk7CisKKwkJc3dpdGNoIChzdGF0dXMpCisJCXsKKwkJCWNhc2UgUFJfSU9fVElNRU9VVF9F UlJPUjoKKwkJCQkvKiBObyBkYXRhIGF2YWlsYWJsZSB5ZXQuICovCisJCQkJbnJlYWQgPSAwOwor CQkJCWJyZWFrOworCisJCQljYXNlIFBSX1dPVUxEX0JMT0NLX0VSUk9SOgorCQkJCXJlYWRfZXJy bm8gPSBFV09VTERCTE9DSzsKKwkJCQlicmVhazsKKworCQkJCS8qCisJCQkJICogVGhlIGVycm9y IGNhc2VzIGZvciBQUl9SZWN2IGFyZSBub3QgZG9jdW1lbnRlZCwgYnV0IGNhbiBiZQorCQkJCSAq IHJldmVyc2UgZW5naW5lZXJlZCBmcm9tIF9NRF91bml4X21hcF9kZWZhdWx0X2Vycm9yKCkgaW4g dGhlCisJCQkJICogTlNQUiBjb2RlLCBkZWZpbmVkIGluIHByL3NyYy9tZC91bml4L3VuaXhfZXJy b3JzLmMuCisJCQkJICovCisJCQljYXNlIFBSX05FVFdPUktfVU5SRUFDSEFCTEVfRVJST1I6CisJ CQljYXNlIFBSX0NPTk5FQ1RfUkVTRVRfRVJST1I6CisJCQkJcmVhZF9lcnJubyA9IEVDT05OUkVT RVQ7CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAo bnJlYWQgPT0gLTEpCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3Nh Z2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJUTFMgcmVhZCBlcnJvcjogJXMiKSwKKwkJCQkJ CQkgIHBnX1NTTGVycm1lc3NhZ2Uoc3RhdHVzKSk7CisJCX0KKwl9CisKKwlTT0NLX0VSUk5PX1NF VChyZWFkX2Vycm5vKTsKKwlyZXR1cm4gKHNzaXplX3QpIG5yZWFkOworfQorCisvKgorICogcGd0 bHNfcmVhZF9wZW5kaW5nCisgKgkJQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgZGF0YSB0byBi ZSByZWFkCisgKgorICogU1NMX0RhdGFQZW5kaW5nIHdpbGwgY2hlY2sgZm9yIGRlY3J5cHRlZCBk YXRhIGluIHRoZSByZWNlaXZpbmcgYnVmZmVyLCBidXQKKyAqIGRvZXMgbm90IHJldmVhbCBhbnl0 aGluZyBhYm91dCBzdGlsbCBlbmNyeXB0ZWQgZGF0YSB3aGljaCB3aWxsIGJlIG1hZGUKKyAqIGF2 YWlsYWJsZS4gVGh1cywgaWYgcGd0bHNfcmVhZF9wZW5kaW5nIHJldHVybnMgemVybyBpdCBkb2Vz IG5vdCBndWFyYW50ZWUKKyAqIHRoYXQgYSBzdWJzZXF1ZW50IGNhbGwgdG8gcGd0bHNfcmVhZCB3 b3VsZCBibG9jay4gVGhpcyBpcyBtb2RlbGxlZAorICogYXJvdW5kIGhvdyB0aGUgT3BlblNTTCBp bXBsZW1lbnRhdGlvbiB0cmVhdHMgcGVuZGluZyBkYXRhLiBUaGUgZXF1aXZhbGVudAorICogdG8g dGhlIE9wZW5TU0wgU1NMX2hhc19wZW5kaW5nIGZ1bmN0aW9uIHdvdWxkIGJlIHRvIGNhbGwgUFJf UmVjdiB3aXRoIG5vCisgKiB3YWl0IGFuZCBQUl9NU0dfUEVFSyBsaWtlIHNvOgorICoKKyAqICAg ICBQUl9SZWN2KGNvbm4tPnByX2ZkLCAmYywgMSwgUFJfTVNHX1BFRUssIFBSX0lOVEVSVkFMX05P X1dBSVQpOworICovCitib29sCitwZ3Rsc19yZWFkX3BlbmRpbmcoUEdjb25uICpjb25uKQorewor CXJldHVybiBTU0xfRGF0YVBlbmRpbmcoY29ubi0+cHJfZmQpID4gMDsKK30KKworLyoKKyAqIHBn dGxzX3dyaXRlCisgKgkJV3JpdGUgZGF0YSBvbiB0aGUgc2VjdXJlIHNvY2tldAorICoKKyAqLwor c3NpemVfdAorcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIsIHNpemVf dCBsZW4pCit7CisJUFJJbnQzMgkJbjsKKwlQUkVycm9yQ29kZSBzdGF0dXM7CisJaW50CQkJd3Jp dGVfZXJybm8gPSAwOworCisJbiA9IFBSX1dyaXRlKGNvbm4tPnByX2ZkLCBwdHIsIGxlbik7CisK KwlpZiAobiA8IDApCisJeworCQlzdGF0dXMgPSBQUl9HZXRFcnJvcigpOworCisJCXN3aXRjaCAo c3RhdHVzKQorCQl7CisJCQljYXNlIFBSX1dPVUxEX0JMT0NLX0VSUk9SOgorI2lmZGVmIEVBR0FJ TgorCQkJCXdyaXRlX2Vycm5vID0gRUFHQUlOOworI2Vsc2UKKwkJCQl3cml0ZV9lcnJubyA9IEVJ TlRSOworI2VuZGlmCisJCQkJYnJlYWs7CisKKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmUFFFeHBC dWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJUTFMg d3JpdGUgZXJyb3I6ICVzIiksCisJCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShzdGF0dXMpKTsK KwkJCQl3cml0ZV9lcnJubyA9IEVDT05OUkVTRVQ7CisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwlT T0NLX0VSUk5PX1NFVCh3cml0ZV9lcnJubyk7CisJcmV0dXJuIChzc2l6ZV90KSBuOworfQorCitj aGFyICoKK3BndGxzX2dldF9wZWVyX2NlcnRpZmljYXRlX2hhc2goUEdjb25uICpjb25uLCBzaXpl X3QgKmxlbikKK3sKKwlDRVJUQ2VydGlmaWNhdGUgKnNlcnZlcl9jZXJ0OworCVNFQ09pZFRhZwlz aWduYXR1cmVfdGFnOworCVNFQ09pZFRhZwlkaWdlc3RfYWxnOworCWludAkJCWRpZ2VzdF9sZW47 CisJUExBcmVuYVBvb2wgKmFyZW5hID0gTlVMTDsKKwlTRUNJdGVtCQlkaWdlc3Q7CisJY2hhcgkg ICAqcmV0ID0gTlVMTDsKKwlTRUNTdGF0dXMJc3RhdHVzOworCisJKmxlbiA9IDA7CisKKwlzZXJ2 ZXJfY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUoY29ubi0+cHJfZmQpOworCWlmICghc2VydmVy X2NlcnQpCisJCWdvdG8gY2xlYW51cDsKKworCXNpZ25hdHVyZV90YWcgPSBTRUNPSURfR2V0QWxn b3JpdGhtVGFnKCZzZXJ2ZXJfY2VydC0+c2lnbmF0dXJlKTsKKwlpZiAoIXBnX2ZpbmRfc2lnbmF0 dXJlX2FsZ29yaXRobShzaWduYXR1cmVfdGFnLCAmZGlnZXN0X2FsZywgJmRpZ2VzdF9sZW4pKQor CXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGli cHFfZ2V0dGV4dCgiY291bGQgbm90IGZpbmQgZGlnZXN0IGZvciBPSUQgJyVzJ1xuIiksCisJCQkJ CQkgIFNFQ09JRF9GaW5kT0lEVGFnRGVzY3JpcHRpb24oc2lnbmF0dXJlX3RhZykpOworCQlnb3Rv IGNsZWFudXA7CisJfQorCisJYXJlbmEgPSBQT1JUX05ld0FyZW5hKFNFQ19BU04xX0RFRkFVTFRf QVJFTkFfU0laRSk7CisJZGlnZXN0LmRhdGEgPSBQT1JUX0FyZW5hWkFsbG9jKGFyZW5hLCBzaXpl b2YodW5zaWduZWQgY2hhcikgKiBkaWdlc3RfbGVuKTsKKwlpZiAoIWRpZ2VzdC5kYXRhKQorCXsK KwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFf Z2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKKwkJZ290byBjbGVhbnVwOworCX0KKwlkaWdlc3Qu bGVuID0gZGlnZXN0X2xlbjsKKworCXN0YXR1cyA9IFBLMTFfSGFzaEJ1ZihkaWdlc3RfYWxnLCBk aWdlc3QuZGF0YSwgc2VydmVyX2NlcnQtPmRlckNlcnQuZGF0YSwKKwkJCQkJCSAgc2VydmVyX2Nl cnQtPmRlckNlcnQubGVuKTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCXBy aW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRl eHQoInVuYWJsZSB0byBnZW5lcmF0ZSBwZWVyIGNlcnRpZmljYXRlIGRpZ2VzdDogJXMiKSwKKwkJ CQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCWdvdG8gY2xlYW51cDsK Kwl9CisKKwlyZXQgPSBtYWxsb2MoZGlnZXN0Lmxlbik7CisJaWYgKHJldCA9PSBOVUxMKQorCXsK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgbGli cHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeVxuIikpOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJ bWVtY3B5KHJldCwgZGlnZXN0LmRhdGEsIGRpZ2VzdC5sZW4pOworCSpsZW4gPSBkaWdlc3RfbGVu OworCitjbGVhbnVwOgorCWlmIChhcmVuYSkKKwkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RS VUUpOworCWlmIChzZXJ2ZXJfY2VydCkKKwkJQ0VSVF9EZXN0cm95Q2VydGlmaWNhdGUoc2VydmVy X2NlcnQpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqCVZlcmlmeSB0aGF0IHRoZSBzZXJ2 ZXIgY2VydGlmaWNhdGUgbWF0Y2hlcyB0aGUgaG9zdG5hbWUgd2UgY29ubmVjdGVkIHRvLgorICoK KyAqIFRoZSBjZXJ0aWZpY2F0ZSdzIENvbW1vbiBOYW1lIGFuZCBTdWJqZWN0IEFsdGVybmF0aXZl IE5hbWVzIGFyZSBjb25zaWRlcmVkLgorICovCitpbnQKK3BndGxzX3ZlcmlmeV9wZWVyX25hbWVf bWF0Y2hlc19jZXJ0aWZpY2F0ZV9ndXRzKFBHY29ubiAqY29ubiwKKwkJCQkJCQkJCQkJCWludCAq bmFtZXNfZXhhbWluZWQsCisJCQkJCQkJCQkJCQljaGFyICoqZmlyc3RfbmFtZSkKK3sKKwljaGFy CSAgICpzZXJ2ZXJfaG9zdG5hbWUgPSBOVUxMOworCUNFUlRDZXJ0aWZpY2F0ZSAqc2VydmVyX2Nl cnQgPSBOVUxMOworCVNFQ1N0YXR1cwlzdGF0dXMgPSBTRUNTdWNjZXNzOworCVNFQ0l0ZW0JCWFs dG5hbWVfaXRlbTsKKwlQTEFyZW5hUG9vbCAqYXJlbmEgPSBOVUxMOworCUNFUlRHZW5lcmFsTmFt ZSAqc2FuX2xpc3Q7CisJQ0VSVEdlbmVyYWxOYW1lICpjbjsKKworCS8qCisJICogSW4gdGhlICJz dGFuZGFyZCIgTlNTIHVzZSBjYXNlLCB3ZSdkIGNhbGwgU1NMX1JldmVhbFVSTCgpIHRvIGdldCB0 aGUKKwkgKiBob3N0bmFtZS4gSW4gb3VyIGNhc2UsIFNTTF9TZXRVUkwoKSB3b24ndCBoYXZlIGJl ZW4gY2FsbGVkIGlmIHRoZSB1c2VyCisJICogaGFzIGRpc2FibGVkIFNOSSwgc28gd2UgYWx3YXlz IHB1bGwgdGhlIGhvc3RuYW1lIGZyb20gY29ubmhvc3QgaW5zdGVhZC4KKwkgKi8KKwlzZXJ2ZXJf aG9zdG5hbWUgPSBjb25uLT5jb25uaG9zdFtjb25uLT53aGljaGhvc3RdLmhvc3Q7CisJaWYgKCFz ZXJ2ZXJfaG9zdG5hbWUgfHwgc2VydmVyX2hvc3RuYW1lWzBdID09ICdcMCcpCisJeworCQkvKiB2 ZXJpZnktZnVsbCBzaG91bGRuJ3QgcHJvZ3Jlc3MgdGhpcyBmYXIgd2l0aG91dCBhIGhvc3RuYW1l LiAqLworCQlzdGF0dXMgPSBTRUNGYWlsdXJlOworCQlnb3RvIGRvbmU7CisJfQorCisJLyoKKwkg KiBDRVJUX1ZlcmlmeUNlcnROYW1lIHdpbGwgaW50ZXJuYWxseSBwZXJmb3JtIFJGQyAyODE4IFN1 YmplY3RBbHROYW1lCisJICogdmVyaWZpY2F0aW9uLgorCSAqLworCXNlcnZlcl9jZXJ0ID0gU1NM X1BlZXJDZXJ0aWZpY2F0ZShjb25uLT5wcl9mZCk7CisJc3RhdHVzID0gQ0VSVF9WZXJpZnlDZXJ0 TmFtZShzZXJ2ZXJfY2VydCwgc2VydmVyX2hvc3RuYW1lKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1 Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gdmVyaWZ5IHNlcnZlciBob3N0bmFtZTogJXMi KSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCWdvdG8gZG9u ZTsKKwl9CisKKwlzdGF0dXMgPSBDRVJUX0ZpbmRDZXJ0RXh0ZW5zaW9uKHNlcnZlcl9jZXJ0LCBT RUNfT0lEX1g1MDlfU1VCSkVDVF9BTFRfTkFNRSwKKwkJCQkJCQkJCSZhbHRuYW1lX2l0ZW0pOwor CWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwl7CisJCWFyZW5hID0gUE9SVF9OZXdBcmVuYShE RVJfREVGQVVMVF9DSFVOS1NJWkUpOworCQlpZiAoIWFyZW5hKQorCQl7CisJCQlzdGF0dXMgPSBT RUNGYWlsdXJlOworCQkJZ290byBkb25lOworCQl9CisJCXNhbl9saXN0ID0gQ0VSVF9EZWNvZGVB bHROYW1lRXh0ZW5zaW9uKGFyZW5hLCAmYWx0bmFtZV9pdGVtKTsKKwkJaWYgKCFzYW5fbGlzdCkK KwkJeworCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCisJCWZv ciAoY24gPSBzYW5fbGlzdDsgY24gIT0gc2FuX2xpc3Q7IGNuID0gQ0VSVF9HZXROZXh0R2VuZXJh bE5hbWUoY24pKQorCQl7CisJCQljaGFyCSAgICphbHRfbmFtZTsKKwkJCWludAkJCXJ2OworCQkJ Y2hhcgkJdG1wWzUxMl07CisKKwkJCXN0YXR1cyA9IENFUlRfUkZDMTQ4NV9Fc2NhcGVBbmRRdW90 ZSh0bXAsIHNpemVvZih0bXApLAorCQkJCQkJCQkJCQkJIChjaGFyICopIGNuLT5uYW1lLm90aGVy LmRhdGEsCisJCQkJCQkJCQkJCQkgY24tPm5hbWUub3RoZXIubGVuKTsKKworCQkJaWYgKHN0YXR1 cyAhPSBTRUNTdWNjZXNzKQorCQkJCWdvdG8gZG9uZTsKKworCQkJcnYgPSBwcV92ZXJpZnlfcGVl cl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfbmFtZShjb25uLCB0bXAsCisJCQkJCQkJCQkJCQkJ CQkgIHN0cmxlbih0bXApLAorCQkJCQkJCQkJCQkJCQkJICAmYWx0X25hbWUpOworCQkJaWYgKGFs dF9uYW1lKQorCQkJeworCQkJCWlmICghKmZpcnN0X25hbWUpCisJCQkJCSpmaXJzdF9uYW1lID0g YWx0X25hbWU7CisJCQkJZWxzZQorCQkJCQlmcmVlKGFsdF9uYW1lKTsKKwkJCX0KKworCQkJaWYg KHJ2ID09IDEpCisJCQkJc3RhdHVzID0gU0VDU3VjY2VzczsKKwkJCWVsc2UKKwkJCXsKKwkJCQlz dGF0dXMgPSBTRUNGYWlsdXJlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCWVsc2UgaWYg KFBPUlRfR2V0RXJyb3IoKSA9PSBTRUNfRVJST1JfRVhURU5TSU9OX05PVF9GT1VORCkKKwkJc3Rh dHVzID0gU0VDU3VjY2VzczsKKwllbHNlCisJCXN0YXR1cyA9IFNFQ1N1Y2Nlc3M7CisKK2RvbmU6 CisJLyogc2FuX2xpc3Qgd2lsbCBiZSBmcmVlZCBieSBmcmVlaW5nIHRoZSBhcmVuYSBpdCB3YXMg YWxsb2NhdGVkIGluICovCisJaWYgKGFyZW5hKQorCQlQT1JUX0ZyZWVBcmVuYShhcmVuYSwgUFJf VFJVRSk7CisJaWYgKHNlcnZlcl9jZXJ0KQorCQlDRVJUX0Rlc3Ryb3lDZXJ0aWZpY2F0ZShzZXJ2 ZXJfY2VydCk7CisKKwlpZiAoc3RhdHVzID09IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiAxOworCisJ cmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoJCQlQb3N0Z3JlU1FMIHNwZWNpZmljIFRMUyBz dXBwb3J0IGZ1bmN0aW9ucwkJCSovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKgor cGdfU1NMZXJybWVzc2FnZShQUkVycm9yQ29kZSBlcnJjb2RlKQoreworCWNvbnN0IGNoYXIgKmVy cm9yOworCisJLyoKKwkgKiBUcnkgdG8gZ2V0IHRoZSB1c2VyIGZyaWVuZGx5IGVycm9yIGRlc2Ny aXB0aW9uLCBhbmQgaWYgdGhhdCBmYWlscyB0cnkKKwkgKiB0byBmYWxsIGJhY2sgb24gdGhlIG5h bWUgb2YgdGhlIFBSRXJyb3JDb2RlLgorCSAqLworCWVycm9yID0gUFJfRXJyb3JUb1N0cmluZyhl cnJjb2RlLCBQUl9MQU5HVUFHRV9JX0RFRkFVTFQpOworCWlmICghZXJyb3IpCisJCWVycm9yID0g UFJfRXJyb3JUb05hbWUoZXJyY29kZSk7CisJaWYgKGVycm9yKQorCQlyZXR1cm4gZXJyb3I7CisK KwlyZXR1cm4gInVua25vd24gVExTIGVycm9yIjsKK30KKworc3RhdGljIFNFQ1N0YXR1cworcGdf bG9hZF9uc3NfbW9kdWxlKFNFQ01PRE1vZHVsZSAqKm1vZHVsZSwgY29uc3QgY2hhciAqbGlicmFy eSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlTRUNNT0RNb2R1bGUgKm1vZDsKKwlQUUV4cEJ1ZmZl ckRhdGEgbW9kdWxlc3BlYzsKKworCWluaXRQUUV4cEJ1ZmZlcigmbW9kdWxlc3BlYyk7CisJYXBw ZW5kUFFFeHBCdWZmZXIoJm1vZHVsZXNwZWMsICJsaWJyYXJ5PVwiJXNcIiwgbmFtZT1cIiVzXCIi LCBsaWJyYXJ5LCBuYW1lKTsKKwlpZiAoUFFFeHBCdWZmZXJEYXRhQnJva2VuKG1vZHVsZXNwZWMp KQorCXsKKwkJUFJfU2V0RXJyb3IoU0VDX0VSUk9SX05PX01FTU9SWSwgMCk7CisJCXJldHVybiBT RUNGYWlsdXJlOworCX0KKworCS8qCisJICogQXR0ZW1wdCB0byBsb2FkIHRoZSBzcGVjaWZpZWQg bW9kdWxlLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyAicGFyZW50IgorCSAqIHdoaWNoIHNob3Vs ZCBhbHdheXMgYmUgTlVMTCBmb3IgYXBwbGljYXRpb24gY29kZS4gVGhlIHRoaXJkIHBhcmFtZXRl cgorCSAqIGRlZmluZXMgaWYgbG9hZGluZyBzaG91bGQgcmVjdXJzZSB3aGljaCBpcyBvbmx5IGFw cGxpY2FibGUgd2hlbiBsb2FkaW5nCisJICogYSBtb2R1bGUgZnJvbSB3aXRoaW4gYW5vdGhlciBt b2R1bGUuIFRoaXMgaGllcmFyY2h5IHdvdWxkIGhhdmUgdG8gYmUKKwkgKiBkZWZpbmVkIGluIHRo ZSBtb2R1bGVzcGVjLCBhbmQgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBhbnl0aGluZyBidXQKKwkg KiBkaXJlY3RseSBhZGRyZXNzZWQgbW9kdWxlcyB3ZSBzaG91bGQgcGFzcyBQUl9GQUxTRS4KKwkg Ki8KKwltb2QgPSBTRUNNT0RfTG9hZFVzZXJNb2R1bGUobW9kdWxlc3BlYy5kYXRhLCBOVUxMLCBQ Ul9GQUxTRSk7CisJdGVybVBRRXhwQnVmZmVyKCZtb2R1bGVzcGVjKTsKKworCWlmIChtb2QgJiYg bW9kLT5sb2FkZWQpCisJeworCQkqbW9kdWxlID0gbW9kOworCQlyZXR1cm4gU0VDU3VjY2VzczsK Kwl9CisKKwlTRUNNT0RfRGVzdHJveU1vZHVsZShtb2QpOworCXJldHVybiBTRUNGYWlsdXJlOwor fQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gKi8KKy8qCQkJCQkJTlNTIENhbGxiYWNrcwkJCQkJCQkqLworLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov CisKKy8qCisgKiBwZ19jZXJ0X2F1dGhfaGFuZGxlcgorICoJCQlDYWxsYmFjayBmb3IgYXV0aGVu dGljYXRpbmcgc2VydmVyIGNlcnRpZmljYXRlCisgKgorICogVGhpcyBpcyBwcmV0dHkgbXVjaCB0 aGUgc2FtZSBwcm9jZWR1cmUgYXMgdGhlIFNTTF9BdXRoQ2VydGlmaWNhdGUgZnVuY3Rpb24KKyAq IHByb3ZpZGVkIGJ5IE5TUywgd2l0aCB0aGUgZGlmZmVyZW5jZSBiZWluZyBzZXJ2ZXIgaG9zdG5h bWUgdmFsaWRhdGlvbi4gV2l0aAorICogU1NMX0F1dGhDZXJ0aWZpY2F0ZSB0aGVyZSBpcyBubyB3 YXkgdG8gZG8gdmVyaWZ5LWNhLCBpdCBvbmx5IGRvZXMgdGhlIC1mdWxsCisgKiBmbGF2b3Igb2Yg b3VyIHNzbG1vZGVzLCBzbyB3ZSBuZWVkIG91ciBvd24gaW1wbGVtZW50YXRpb24uCisgKi8KK3N0 YXRpYyBTRUNTdGF0dXMKK3BnX2NlcnRfYXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVz YyAqZmQsIFBSQm9vbCBjaGVja3NpZywgUFJCb29sIGlzU2VydmVyKQoreworCVNFQ1N0YXR1cwlz dGF0dXM7CisJUEdjb25uCSAgICpjb25uID0gKFBHY29ubiAqKSBhcmc7CisJQ0VSVENlcnRpZmlj YXRlICpzZXJ2ZXJfY2VydDsKKwl2b2lkCSAgICpwaW47CisKKwlBc3NlcnQoIWlzU2VydmVyKTsK KworCXBpbiA9IFNTTF9SZXZlYWxQaW5BcmcoY29ubi0+cHJfZmQpOworCXNlcnZlcl9jZXJ0ID0g U1NMX1BlZXJDZXJ0aWZpY2F0ZShjb25uLT5wcl9mZCk7CisKKwkvKgorCSAqIFZlcmlmeUNlcnRp ZmljYXRlTm93IHZlcmlmaWVzIHRoZSB2YWxpZGl0eSB1c2luZyBQUl9ub3cgZnJvbSBOU1BSIGFz IGEKKwkgKiB0aW1lc3RhbXAgYW5kIHdpbGwgcGVyZm9ybSBDUkwgYW5kIE9TQ1AgcmV2b2NhdGlv biBjaGVja3MuIGNvbm4tPnNzbGNybAorCSAqIGRvZXMgbm90IGltcGFjdCBOU1MgY29ubmVjdGlv bnMgYXMgYW55IENSTCBpbiB0aGUgTlNTIGRhdGFiYXNlIHdpbGwgYmUKKwkgKiB1c2VkIGF1dG9t YXRpY2FsbHkuCisJICovCisJc3RhdHVzID0gQ0VSVF9WZXJpZnlDZXJ0aWZpY2F0ZU5vdygoQ0VS VENlcnREQkhhbmRsZSAqKSBDRVJUX0dldERlZmF1bHRDZXJ0REIoKSwKKwkJCQkJCQkJCSAgIHNl cnZlcl9jZXJ0LAorCQkJCQkJCQkJICAgY2hlY2tzaWcsCisJCQkJCQkJCQkgICBjZXJ0aWZpY2F0 ZVVzYWdlU1NMU2VydmVyLAorCQkJCQkJCQkJICAgcGluLAorCQkJCQkJCQkJICAgTlVMTCk7CisK KwkvKgorCSAqIElmIHdlJ3ZlIGFscmVhZHkgZmFpbGVkIHZhbGlkYXRpb24gdGhlbiB0aGVyZSBp cyBubyBwb2ludCBpbiBhbHNvCisJICogcGVyZm9ybWluZyB0aGUgaG9zdG5hbWUgY2hlY2sgZm9y IHZlcmlmeS1mdWxsLgorCSAqLworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwl7CisJCWlm ICghcHFfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmljYXRlKGNvbm4pKQorCQkJc3Rh dHVzID0gU0VDRmFpbHVyZTsKKwl9CisKKwlDRVJUX0Rlc3Ryb3lDZXJ0aWZpY2F0ZShzZXJ2ZXJf Y2VydCk7CisJcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIHBnX2NsaWVudF9hdXRoX2hhbmRs ZXIKKyAqCQlDYWxsYmFjayBmb3IgY2xpZW50IGNlcnRpZmljYXRlIHZhbGlkYXRpb24KKyAqCisg KiBUaGUgY2xpZW50IGF1dGggY2FsbGJhY2sgaXMgbm90IG9uIGJ5IGRlZmF1bHQgaW4gTlNTLCBz byB3ZSBuZWVkIHRvIGludm9rZQorICogaXQgb3Vyc2VsdmVzIHRvIGVuc3VyZSB3ZSBjYW4gZG8g Y2VydCBhdXRoZW50aWNhdGlvbi4KKyAqLworc3RhdGljIFNFQ1N0YXR1cworcGdfY2xpZW50X2F1 dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKnNvY2tldCwgQ0VSVERpc3ROYW1lcyAq Y2FOYW1lcywKKwkJCQkJICAgQ0VSVENlcnRpZmljYXRlICoqcFJldENlcnQsIFNFQ0tFWVByaXZh dGVLZXkgKipwUmV0S2V5KQoreworCVBHY29ubgkgICAqY29ubiA9IChQR2Nvbm4gKikgYXJnOwor CWNoYXIJICAgKm5ucHRyID0gTlVMTDsKKwljaGFyCQluaWNrbmFtZVtNQVhQR1BBVEhdOworCisJ LyoKKwkgKiBJZiB3ZSBoYXZlIGFuIHNzbGNlcnQgY29uZmlndXJlZCB3ZSB1c2UgdGhhdCBjb21i aW5lZCB3aXRoIHRoZSB0b2tlbi0KKwkgKiBuYW1lIGFzIHRoZSBuaWNrbmFtZS4gV2hlbiBubyBz c2xjZXJ0IGlzIHNldCB3ZSBwYXNzIGluIE5VTEwgYW5kIGxldAorCSAqIE5TUyB0cnkgdG8gZmlu ZCB0aGUgY2VydGlmaWNhdGUgYW1vbmcgdGhlIG9uZXMgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2Uu CisJICogV2l0aG91dCBhbiBzc2xjZXJ0IHdlIGNhbm5vdCBzZXQgdGhlIGRhdGFiYXNlIHRva2Vu IHNpbmNlIE5TUyBwYXJzZXMKKwkgKiB0aGUgZ2l2ZW4gc3RyaW5nIGV4cGVjdGluZyB0byBmaW5k IGEgY2VydGlmaWNhdGUgbmlja25hbWUgYWZ0ZXIgdGhlCisJICogY29sb24uCisJICovCisJaWYg KGNvbm4tPnNzbGNlcnQpCisJeworCQlzbnByaW50ZihuaWNrbmFtZSwgc2l6ZW9mKG5pY2tuYW1l KSwgInBvc3RncmVzOiVzIiwgY29ubi0+c3NsY2VydCk7CisJCW5ucHRyID0gbmlja25hbWU7CisJ fQorCisJcmV0dXJuIE5TU19HZXRDbGllbnRBdXRoRGF0YShubnB0ciwgc29ja2V0LCBjYU5hbWVz LCBwUmV0Q2VydCwgcFJldEtleSk7Cit9CisKKy8qCisgKiBwZ19iYWRfY2VydF9oYW5kbGVyCisg KgkJQ2FsbGJhY2sgZm9yIGZhaWxlZCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uCisgKgorICogVGhl IFRMUyBoYW5kc2hha2Ugd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gaWZmIHRoZSBzZXJ2ZXIgY2Vy dGlmaWNhdGUgZmFpbGVkCisgKiB2YWxpZGF0aW9uLiBEZXBlbmRpbmcgb24gdGhlIHNzbG1vZGUs IHdlIGFsbG93IHRoZSBjb25uZWN0aW9uIGFueXdheXMuCisgKi8KK3N0YXRpYyBTRUNTdGF0dXMK K3BnX2JhZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICpmZCkKK3sKKwlQR2Nv bm4JICAgKmNvbm4gPSAoUEdjb25uICopIGFyZzsKKwlQUkVycm9yQ29kZSBlcnI7CisKKwkvKgor CSAqIFRoaXMgcmVhbGx5IHNob3VsZG4ndCBoYXBwZW4sIGFzIHdlJ3ZlIHNldCB0aGUgUEdjb25u IG9iamVjdCBhcyBvdXIKKwkgKiBjYWxsYmFjayBkYXRhLCBhbmQgYXQgdGhlIGNhbGxzaXRlIHdl IGtub3cgaXQgd2lsbCBiZSBwb3B1bGF0ZWQuIFRoYXQKKwkgKiBiZWluZyBzYWlkLCB0aGUgTlNT IGNvZGUgaXRzZWxmIHBlcmZvcm1zIHRoaXMgY2hlY2sgZXZlbiB3aGVuIGl0IHNob3VsZAorCSAq IG5vdCBiZSByZXF1aXJlZCBzbyBsZXQncyB1c2UgdGhlIHNhbWUgYmVsdHMgd2l0aCBvdXIgc3Vz cGVuZGVycy4KKwkgKi8KKwlpZiAoIWFyZykKKwkJcmV0dXJuIFNFQ0ZhaWx1cmU7CisKKwllcnIg PSBQT1JUX0dldEVycm9yKCk7CisKKwkvKgorCSAqIEZvciBzc2xtb2RlcyBvdGhlciB0aGFuIHZl cmlmeS1mdWxsIGFuZCB2ZXJpZnktY2Egd2UgZG9uJ3QgcGVyZm9ybSBwZWVyCisJICogdmFsaWRh dGlvbiwgc28gcmV0dXJuIGltbWVkaWF0ZWx5LiAgc3NsbW9kZSByZXF1aXJlIHdpdGggYSBkYXRh YmFzZQorCSAqIHNwZWNpZmllZCB3aGljaCBjb250YWlucyBhIENBIGNlcnRpZmljYXRlIHdpbGwg d29yayBsaWtlIHZlcmlmeS1jYSB0bworCSAqIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgT3BlblNT TCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8KKwlpZiAoc3RyY21wKGNvbm4tPnNzbG1vZGUsICJyZXF1 aXJlIikgPT0gMCkKKwl7CisJCWlmIChjb25uLT5zc2xkYXRhYmFzZSAmJgorCQkJc3RybGVuKGNv bm4tPnNzbGRhdGFiYXNlKSA+IDAgJiYKKwkJCWNlcnRpZmljYXRlX2RhdGFiYXNlX2hhc19DQShj b25uKSkKKwkJCWdvdG8gZmFpbHVyZTsKKwl9CisJZWxzZSBpZiAoc3RyY21wKGNvbm4tPnNzbG1v ZGUsICJ2ZXJpZnktZnVsbCIpID09IDAgfHwKKwkJCSBzdHJjbXAoY29ubi0+c3NsbW9kZSwgInZl cmlmeS1jYSIpID09IDApCisJCWdvdG8gZmFpbHVyZTsKKworCS8qCisJICogVE9ETzogdGhlc2Ug YXJlIHJlbGV2YW50IGVycm9yIGNvZGVzIHRoYXQgY2FuIG9jY3VyIGluIGNlcnRpZmljYXRlCisJ ICogdmFsaWRhdGlvbiwgZmlndXJlIG91dCB3aGljaCB3ZSBkb24ndCB3YW50IGZvciByZXF1aXJl L3ByZWZlciBldGMuCisJICovCisJc3dpdGNoIChlcnIpCisJeworCQljYXNlIFNFQ19FUlJPUl9J TlZBTElEX0FWQToKKwkJY2FzZSBTRUNfRVJST1JfSU5WQUxJRF9USU1FOgorCQljYXNlIFNFQ19F UlJPUl9CQURfU0lHTkFUVVJFOgorCQljYXNlIFNFQ19FUlJPUl9FWFBJUkVEX0NFUlRJRklDQVRF OgorCQljYXNlIFNFQ19FUlJPUl9VTktOT1dOX0lTU1VFUjoKKwkJY2FzZSBTRUNfRVJST1JfVU5U UlVTVEVEX0lTU1VFUjoKKwkJY2FzZSBTRUNfRVJST1JfVU5UUlVTVEVEX0NFUlQ6CisJCWNhc2Ug U0VDX0VSUk9SX0NFUlRfVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX0VYUElSRURfSVNTVUVSX0NF UlRJRklDQVRFOgorCQljYXNlIFNFQ19FUlJPUl9DUkxfRVhQSVJFRDoKKwkJY2FzZSBTRUNfRVJS T1JfQ1JMX0JBRF9TSUdOQVRVUkU6CisJCWNhc2UgU0VDX0VSUk9SX0VYVEVOU0lPTl9WQUxVRV9J TlZBTElEOgorCQljYXNlIFNFQ19FUlJPUl9DQV9DRVJUX0lOVkFMSUQ6CisJCWNhc2UgU0VDX0VS Uk9SX0NFUlRfVVNBR0VTX0lOVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX1VOS05PV05fQ1JJVElD QUxfRVhURU5TSU9OOgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlnb3RvIGZhaWx1cmU7CisJ CQlicmVhazsKKwl9CisKKwlyZXR1cm4gU0VDU3VjY2VzczsKKworZmFpbHVyZToKKwlwcmludGZQ UUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkgIGxpYnBxX2dldHRleHQoInVu YWJsZSB0byB2ZXJpZnkgY2VydGlmaWNhdGU6ICVzIiksCisJCQkJCSAgcGdfU1NMZXJybWVzc2Fn ZShlcnIpKTsKKworCXJldHVybiBTRUNGYWlsdXJlOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCQkJCQlT U0wgaW5mb3JtYXRpb24gZnVuY3Rpb25zCQkJCQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBQUWdl dHNzbAorICoKKyAqIFJldHVybiBOVUxMIGFzIHRoaXMgaXMgbGVnYWN5IGFuZCBkZWZpbmVkIHRv IGFsd2F5cyBiZSBlcXVhbCB0byBjYWxsaW5nCisgKiBQUXNzbFN0cnVjdChjb25uLCAiT3BlblNT TCIpOyBUaGlzIHNob3VsZCBpZGVhbGx5IHRyaWdnZXIgYSBsb2dnZWQgd2FybmluZworICogc29t ZXdoZXJlIGFzIGl0J3Mgbm9uc2Vuc2ljYWwgdG8gcnVuIGluIGEgbm9uLU9wZW5TU0wgYnVpbGQu CisgKi8KK3ZvaWQgKgorUFFnZXRzc2woUEdjb25uICpjb25uKQoreworCXJldHVybiBOVUxMOwor fQorCit2b2lkICoKK1BRc3NsU3RydWN0KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RydWN0 X25hbWUpCit7CisJaWYgKCFjb25uKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogUmV0dXJu IHRoZSB1bmRlcmx5aW5nIFBSRmlsZURlc2Mgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYWNjZXNzCisJ ICogaW5mb3JtYXRpb24gb24gdGhlIGNvbm5lY3Rpb24gZGV0YWlscy4gVGhlcmUgaXMgbm8gU1NM IGNvbnRleHQgcGVyIHNlLgorCSAqLworCWlmIChzdHJjbXAoc3RydWN0X25hbWUsICJOU1MiKSA9 PSAwKQorCQlyZXR1cm4gY29ubi0+cHJfZmQ7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IGNo YXIgKmNvbnN0ICoKK1BRc3NsQXR0cmlidXRlTmFtZXMoUEdjb25uICpjb25uKQoreworCXN0YXRp YyBjb25zdCBjaGFyICpjb25zdCByZXN1bHRbXSA9IHsKKwkJImxpYnJhcnkiLAorCQkiY2lwaGVy IiwKKwkJInByb3RvY29sIiwKKwkJImtleV9iaXRzIiwKKwkJImNvbXByZXNzaW9uIiwKKwkJTlVM TAorCX07CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitjb25zdCBjaGFyICoKK1BRc3NsQXR0cmli dXRlKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqYXR0cmlidXRlX25hbWUpCit7CisJU0VDU3Rh dHVzCXN0YXR1czsKKwlTU0xDaGFubmVsSW5mbyBjaGFubmVsOworCVNTTENpcGhlclN1aXRlSW5m byBzdWl0ZTsKKworCWlmICghY29ubiB8fCAhY29ubi0+cHJfZmQpCisJCXJldHVybiBOVUxMOwor CisJaWYgKHN0cmNtcChhdHRyaWJ1dGVfbmFtZSwgImxpYnJhcnkiKSA9PSAwKQorCQlyZXR1cm4g Ik5TUyI7CisKKwlzdGF0dXMgPSBTU0xfR2V0Q2hhbm5lbEluZm8oY29ubi0+cHJfZmQsICZjaGFu bmVsLCBzaXplb2YoY2hhbm5lbCkpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0 dXJuIE5VTEw7CisKKwlzdGF0dXMgPSBTU0xfR2V0Q2lwaGVyU3VpdGVJbmZvKGNoYW5uZWwuY2lw aGVyU3VpdGUsICZzdWl0ZSwgc2l6ZW9mKHN1aXRlKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNj ZXNzKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChzdHJjbXAoYXR0cmlidXRlX25hbWUsICJjaXBo ZXIiKSA9PSAwKQorCQlyZXR1cm4gc3VpdGUuY2lwaGVyU3VpdGVOYW1lOworCisJaWYgKHN0cmNt cChhdHRyaWJ1dGVfbmFtZSwgImtleV9iaXRzIikgPT0gMCkKKwl7CisJCXN0YXRpYyBjaGFyIGtl eV9iaXRzX3N0cls4XTsKKworCQlzbnByaW50ZihrZXlfYml0c19zdHIsIHNpemVvZihrZXlfYml0 c19zdHIpLCAiJWkiLCBzdWl0ZS5lZmZlY3RpdmVLZXlCaXRzKTsKKwkJcmV0dXJuIGtleV9iaXRz X3N0cjsKKwl9CisKKwlpZiAoc3RyY21wKGF0dHJpYnV0ZV9uYW1lLCAicHJvdG9jb2wiKSA9PSAw KQorCQlyZXR1cm4gc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3RyaW5nKGNoYW5uZWwucHJvdG9j b2xWZXJzaW9uKTsKKworCS8qCisJICogTlNTIGRpc2FibGVkIHN1cHBvcnQgZm9yIGNvbXByZXNz aW9uIGluIHZlcnNpb24gMy4zMywgYW5kIGl0IHdhcyBvbmx5CisJICogYXZhaWxhYmxlIGZvciBT U0x2MyBhdCB0aGF0IHBvaW50IGFueXdheXMsIHNvIHdlIGNhbiBzYWZlbHkgcmV0dXJuIG9mZgor CSAqIGhlcmUgd2l0aG91dCBldmVuIGNoZWNraW5nLgorCSAqLworCWlmIChzdHJjbXAoYXR0cmli dXRlX25hbWUsICJjb21wcmVzc2lvbiIpID09IDApCisJCXJldHVybiAib2ZmIjsKKworCXJldHVy biBOVUxMOworfQorCisvKgorICogc3NsX3Byb3RvY29sX3BhcmFtX3RvX25zcworICoKKyAqIFJl dHVybiB0aGUgTlNTIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm90b2NvbCBhc2tl ZCBmb3IgYnkgdGhlCisgKiB1c2VyIGFzIGEgY29ubmVjdGlvbiBwYXJhbWV0ZXIuCisgKi8KK3N0 YXRpYyBpbnQKK3NzbF9wcm90b2NvbF9wYXJhbV90b19uc3MoY29uc3QgY2hhciAqcHJvdG9jb2wp Cit7CisJaWYgKHBnX3N0cmNhc2VjbXAoIlRMU3YxIiwgcHJvdG9jb2wpID09IDApCisJCXJldHVy biBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA7CisKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJT SU9OX1RMU18xXzEKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEuMSIsIHByb3RvY29sKSA9PSAw KQorCQlyZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8xOworI2VuZGlmCisKKyNpZmRl ZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzIKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEu MiIsIHByb3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8y OworI2VuZGlmCisKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzMKKwlpZiAocGdf c3RyY2FzZWNtcCgiVExTdjEuMyIsIHByb3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJB UllfVkVSU0lPTl9UTFNfMV8zOworI2VuZGlmCisKKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBj ZXJ0aWZpY2F0ZV9kYXRhYmFzZV9oYXNfQ0EKKyAqCQkgQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBv ZiBhIENBIGNlcnRpZmljYXRlCisgKgorICogUmV0dXJucyB0cnVlIGluIGNhc2UgdGhlcmUgaXMg YSBDQSBjZXJ0aWZpY2F0ZSBpbiB0aGUgZGF0YWJhc2UgY29ubmVjdGVkCisgKiB0byBpbiB0aGUg Y29ubiBvYmplY3QsIGVsc2UgZmFsc2UuIFRoaXMgZnVuY3Rpb24gb25seSBjaGVja3MgZm9yIHRo ZQorICogcHJlc2VuY2Ugb2YgYSBDQSBjZXJ0aWZpY2F0ZSwgbm90IGl0cyB2YWxpZGl0eSBhbmQv b3IgdXNlZnVsbmVzcy4KKyAqLworc3RhdGljIGJvb2wKK2NlcnRpZmljYXRlX2RhdGFiYXNlX2hh c19DQShQR2Nvbm4gKmNvbm4pCit7CisJQ0VSVENlcnRMaXN0ICpjZXJ0aWZpY2F0ZXM7CisJYm9v bAkJaGFzQ0E7CisKKwkvKgorCSAqIElmIHRoZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBoYXMgYSBw YXNzd29yZCB3ZSBtdXN0IHByb3ZpZGUgaXQsIHNpbmNlCisJICogdGhpcyBBUEkgZG9lc24ndCBp bnZva2UgdGhlIHN0YW5kYXJkIHBhc3N3b3JkIGNhbGxiYWNrLgorCSAqLworCWlmIChjb25uLT5o YXNfcGFzc3dvcmQpCisJCWNlcnRpZmljYXRlcyA9IFBLMTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlz dENBLCBQUXNzbF9wYXNzd2RfY2IoTlVMTCwgUFJfRkFMU0UsICh2b2lkICopIGNvbm4pKTsKKwll bHNlCisJCWNlcnRpZmljYXRlcyA9IFBLMTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlzdENBLCBOVUxM KTsKKwloYXNDQSA9ICFDRVJUX0xJU1RfRU1QVFkoY2VydGlmaWNhdGVzKTsKKwlDRVJUX0Rlc3Ry b3lDZXJ0TGlzdChjZXJ0aWZpY2F0ZXMpOworCisJcmV0dXJuIGhhc0NBOworfQorCitQUXNzbEtl eVBhc3NIb29rX25zc190eXBlCitQUWdldFNTTEtleVBhc3NIb29rX25zcyh2b2lkKQoreworCXJl dHVybiBQUXNzbEtleVBhc3NIb29rOworfQorCit2b2lkCitQUXNldFNTTEtleVBhc3NIb29rX25z cyhQUXNzbEtleVBhc3NIb29rX25zc190eXBlIGhvb2spCit7CisJUFFzc2xLZXlQYXNzSG9vayA9 IGhvb2s7Cit9CisKKy8qCisgKiBQUXNzbF9wYXNzd2RfY2IKKyAqCQkgU3VwcGx5IGEgcGFzc3dv cmQgdG8gZGVjcnlwdCBhbiBvYmplY3QKKyAqCisgKiBJZiBhbiBvYmplY3QgaW4gdGhlIE5TUyBk YXRhYmFzZSBpcyBwYXNzd29yZCBwcm90ZWN0ZWQsIG9yIGlmIHRoZSBlbnRpcmUKKyAqIE5TUyBk YXRhYmFzZSBpcyBpdHNlbGYgcGFzc3dvcmQgcHJvdGVjdGVkLCB0aGlzIGNhbGxiYWNrIHdpbGwg YmUgaW52b2tlZC4KKyAqCisgKiBUaGlzIG11c3QgbWF0Y2ggTlNTIHR5cGUgUEsxMVBhc3N3b3Jk RnVuYy4KKyAqLworc3RhdGljIGNoYXIgKgorUFFzc2xfcGFzc3dkX2NiKFBLMTFTbG90SW5mbyAq c2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICphcmcpCit7CisJUEdjb25uCSAgICpjb25uID0gKFBH Y29ubiAqKSBhcmc7CisKKwljb25uLT5oYXNfcGFzc3dvcmQgPSB0cnVlOworCisJaWYgKFBRc3Ns S2V5UGFzc0hvb2spCisJCXJldHVybiBQUXNzbEtleVBhc3NIb29rKHNsb3QsIChQUkJvb2wpIHJl dHJ5LCBhcmcpOworCWVsc2UKKwkJcmV0dXJuIFBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcyhz bG90LCByZXRyeSwgYXJnKTsKK30KKworLyoKKyAqIFBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25z cworICogCQkgRGVmYXVsdCBwYXNzd29yZCBoYW5kbGVyIGNhbGxiYWNrCisgKgorICogSWYgbm8g dXNlciBkZWZpbmVkIHBhc3N3b3JkIGNhbGxiYWNrIGhhcyBiZWVuIHNldCB1cCwgdGhlIGNhbGxi YWNrIGJlbG93CisgKiB3aWxsIHRyeSB0aGUgcGFzc3dvcmQgc2V0IGJ5IHRoZSBzc2xwYXNzd29y ZCBwYXJhbWV0ZXIuIFNpbmNlIHdlIGJ5IGxlZ2FjeQorICogb25seSBoYXZlIHN1cHBvcnQgZm9y IGEgc2luZ2xlIHBhc3N3b3JkLCB0aGVyZSBpcyBsaXR0bGUgcmVhc29uIHRvIGluc3BlY3QKKyAq IHRoZSBzbG90IGZvciB0aGUgb2JqZWN0IGluIHF1ZXN0aW9uLiBBIFRPRE8gaXMgdG8gc3VwcG9y dCBkaWZmZXJlbnQKKyAqIHBhc3N3b3JkcyBmb3IgZGlmZmVyZW50IG9iamVjdHMsIGVpdGhlciB2 aWEgYSBEU0wgaW4gc3NscGFzc3dvcmQgb3Igd2l0aCBhCisgKiBuZXcga2V5L3ZhbHVlIHN0eWxl IHBhcmFtZXRlci4gVXNlcnMgY2FuIHN1cHBseSB0aGVpciBvd24gcGFzc3dvcmQgaG9vayB0bwor ICogZG8gdGhpcyBvZiBjb3Vyc2UsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIHRvIHN1cHBvcnQgc29t ZXRoaW5nIGluIGNvcmUgdG9vLgorICovCitjaGFyICoKK1BRZGVmYXVsdFNTTEtleVBhc3NIb29r X25zcyhQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKQoreworCVBH Y29ubgkgICAqY29ubiA9IChQR2Nvbm4gKikgYXJnOworCisJLyoKKwkgKiBJZiB0aGUgcGFzc3dv cmQgZGlkbid0IHdvcmsgdGhlIGZpcnN0IHRpbWUgdGhlcmUgaXMgbm8gcG9pbnQgaW4KKwkgKiBy ZXRyeWluZyBhcyBpdCBoYXNuJ3QgY2hhbmdlZC4KKwkgKi8KKwlpZiAocmV0cnkgIT0gUFJfVFJV RSAmJiBjb25uLT5zc2xwYXNzd29yZCAmJiBzdHJsZW4oY29ubi0+c3NscGFzc3dvcmQpID4gMCkK KwkJcmV0dXJuIFBPUlRfU3RyZHVwKGNvbm4tPnNzbHBhc3N3b3JkKTsKKworCXJldHVybiBOVUxM OworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYwppbmRleCBiMTVkOGQxMzdjLi5kNzZlYjQ4MDZm IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYworKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYwpAQCAtNDQ3LDYgKzQ0NywyNyBAQCBQUWRlZmF1 bHRTU0xLZXlQYXNzSG9va19PcGVuU1NMKGNoYXIgKmJ1ZiwgaW50IHNpemUsIFBHY29ubiAqY29u bikKIH0KICNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNTTCAqLwogCisjaWZuZGVmIFVTRV9OU1MK KworUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZQorUFFnZXRTU0xLZXlQYXNzSG9va19uc3Modm9p ZCkKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZAorUFFzZXRTU0xLZXlQYXNzSG9va19uc3Mo UFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZSBob29rKQoreworCXJldHVybjsKK30KKworY2hhciAq CitQUWRlZmF1bHRTU0xLZXlQYXNzSG9va19uc3MoUEsxMVNsb3RJbmZvICogc2xvdCwgUFJCb29s IHJldHJ5LCB2b2lkICphcmcpCit7CisJcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYJCQkJCQkJLyog VVNFX05TUyAqLworCiAvKiBEdW1teSB2ZXJzaW9uIG9mIEdTU0FQSSBpbmZvcm1hdGlvbiBmdW5j dGlvbnMsIHdoZW4gYnVpbHQgd2l0aG91dCBHU1Mgc3VwcG9ydCAqLwogI2lmbmRlZiBFTkFCTEVf R1NTCiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmluZGV4IGE2ZmQ2OWFjZWIuLjE4NmUwYTI4ZjQg MTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAtNjY1LDYgKzY2NSwxNyBAQCBleHRlcm4gUFFz c2xLZXlQYXNzSG9va19PcGVuU1NMX3R5cGUgUFFnZXRTU0xLZXlQYXNzSG9va19PcGVuU1NMKHZv aWQpOwogZXh0ZXJuIHZvaWQgUFFzZXRTU0xLZXlQYXNzSG9va19PcGVuU1NMKFBRc3NsS2V5UGFz c0hvb2tfT3BlblNTTF90eXBlIGhvb2spOwogZXh0ZXJuIGludAlQUWRlZmF1bHRTU0xLZXlQYXNz SG9va19PcGVuU1NMKGNoYXIgKmJ1ZiwgaW50IHNpemUsIFBHY29ubiAqY29ubik7CiAKKy8qID09 IGluIGZlLXNlY3VyZS1uc3MuYyA9PT0gKi8KK3R5cGVkZWYgc3RydWN0IFBLMTFTbG90SW5mb1N0 ciBQSzExU2xvdEluZm87Cit0eXBlZGVmIGludCBQUkludG47Cit0eXBlZGVmIFBSSW50biBQUkJv b2w7CisKKy8qIFN1cHBvcnQgZm9yIG92ZXJyaWRpbmcgc3NscGFzc3dvcmQgaGFuZGxpbmcgd2l0 aCBhIGNhbGxiYWNrICovCit0eXBlZGVmIGNoYXIgKigqUFFzc2xLZXlQYXNzSG9va19uc3NfdHlw ZSkgKFBLMTFTbG90SW5mbyAqc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICphcmcpOworZXh0ZXJu IFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgUFFnZXRTU0xLZXlQYXNzSG9va19uc3Modm9pZCk7 CitleHRlcm4gdm9pZCBQUXNldFNTTEtleVBhc3NIb29rX25zcyhQUXNzbEtleVBhc3NIb29rX25z c190eXBlIGhvb2spOworZXh0ZXJuIGNoYXIgKlBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcyhQ SzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKKwogI2lmZGVmIF9f Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLWludC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKaW5kZXggNDkwNDU4 YWRlZi4uYWIwZGExMzcwMCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEt aW50LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTgxLDYgKzgx LDEwIEBAIHR5cGVkZWYgc3RydWN0CiAjZW5kaWYKICNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNT TCAqLwogCisjaWZkZWYgVVNFX05TUworI2luY2x1ZGUgImNvbW1vbi9uc3MuaCIKKyNlbmRpZgor CiAvKgogICogUE9TVEdSRVMgYmFja2VuZCBkZXBlbmRlbnQgQ29uc3RhbnRzLgogICovCkBAIC0z ODUsNiArMzg5LDcgQEAgc3RydWN0IHBnX2Nvbm4KIAljaGFyCSAgICpzc2xjcmw7CQkJLyogY2Vy dGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0IGZpbGVuYW1lICovCiAJY2hhcgkgICAqc3NsY3JsZGly OwkJLyogY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0IGRpcmVjdG9yeSBuYW1lICovCiAJY2hh cgkgICAqc3Nsc25pOwkJCS8qIHVzZSBTU0wgU05JIGV4dGVuc2lvbiAoMCBvciAxKSAqLworCWNo YXIJICAgKnNzbGRhdGFiYXNlOwkvKiBOU1MgY2VydGlmaWNhdGUva2V5IGRhdGFiYXNlICovCiAJ Y2hhcgkgICAqcmVxdWlyZXBlZXI7CS8qIHJlcXVpcmVkIHBlZXIgY3JlZGVudGlhbHMgZm9yIGxv Y2FsIHNvY2tldHMgKi8KIAljaGFyCSAgICpnc3NlbmNtb2RlOwkJLyogR1NTIG1vZGUgKHJlcXVp cmUscHJlZmVyLGRpc2FibGUpICovCiAJY2hhcgkgICAqa3Jic3J2bmFtZTsJCS8qIEtlcmJlcm9z IHNlcnZpY2UgbmFtZSAqLwpAQCAtNTI2LDYgKzUzMSwyOCBAQCBzdHJ1Y3QgcGdfY29ubgogCQkJ CQkJCQkgKiByZW1vdmVkIGFzIHRoaXMgbG9ja2luZyBpcyBoYW5kbGVkCiAJCQkJCQkJCSAqIGlu dGVybmFsbHkgaW4gT3BlblNTTCA+PSAxLjEuMC4gKi8KICNlbmRpZgkJCQkJCQkvKiBVU0VfT1BF TlNTTCAqLworCisvKgorICogVGhlIE5TUy9OU1BSIHNwZWNpZmljIHR5cGVzIGFyZW4ndCB1c2Vk IHRvIGF2b2lkIHB1bGxpbmcgaW4gdGhlIHJlcXVpcmVkCisgKiBoZWFkZXJzIGhlcmUsIGFzIHRo ZXkgYXJlIGNhdXNpbmcgY29uZmxpY3RzIHdpdGggUEcgZGVmaW5pdGlvbnMuCisgKi8KKyNpZmRl ZiBVU0VfTlNTCisJTlNTSW5pdENvbnRleHQJICAgKm5zc19jb250ZXh0OwkvKiBOU1MgY29ubmVj dGlvbiBzcGVjaWZpYyBjb250ZXh0ICovCisJUFJGaWxlRGVzYwkJICAgKnByX2ZkOwkJCS8qIE5T UFIgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgY29ubmVjdGlvbiAqLworCisJLyoKKwkgKiBUcmFj ayB3aGV0aGVyIHRoZSBOU1MgZGF0YWJhc2UgaGFzIGEgcGFzc3dvcmQgc2V0IG9yIG5vdC4gVGhl cmUgaXMgbm8KKwkgKiBBUEkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgcGFzc3dvcmQgc3RhdHVz IG9mIGEgZGF0YWJhc2UsIGJ1dCB3ZSBuZWVkCisJICogdG8ga25vdyBzaW5jZSBzb21lIE5TUyBB UEkgY2FsbHMgcmVxdWlyZSB0aGUgcGFzc3dvcmQgcGFzc2VkIGluICh0aGV5CisJICogZG9uJ3Qg Y2FsbCB0aGUgY2FsbGJhY2sgdGhlbXNlbHZlcykuIFRvIHRyYWNrLCB3ZSBzaW1wbHkgZmxpcCB0 aGlzIHRvCisJICogdHJ1ZSBpbiBjYXNlIE5TUyBpbnZva2VkIHRoZSBwYXNzd29yZCBjYWxsYmFj ayAtIGFzIHRoYXQgd2lsbCBvbmx5CisJICogaGFwcGVuIGluIGNhc2UgdGhlcmUgaXMgYSBwYXNz d29yZC4gVGhlIHJlYXNvbiBmb3IgdHJhY2tpbmcgdGhpcyBpcworCSAqIHRoYXQgdGhlcmUgYXJl IGNhbGxzIHdoaWNoIHJlcXVpcmUgYSBwYXNzd29yZCBwYXJhbWV0ZXIsIGJ1dCBkb2Vzbid0CisJ ICogdXNlIHRoZSBjYWxsYmFja3MgcHJvdmlkZWQsIHNvIHdlIG11c3QgY2FsbCB0aGUgY2FsbGJh Y2sgb24gYmVoYWxmIG9mCisJICogdGhlc2UuCisJICovCisJYm9vbAkJaGFzX3Bhc3N3b3JkOwor I2VuZGlmCQkJCQkJCS8qIFVTRV9OU1MgKi8KICNlbmRpZgkJCQkJCQkvKiBVU0VfU1NMICovCiAK ICNpZmRlZiBFTkFCTEVfR1NTCkBAIC03ODAsNyArODA3LDcgQEAgZXh0ZXJuIHNzaXplX3QgcGd0 bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogICog VGhpcyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggb2xkIHZlcnNpb25zIG9mIE9wZW5TU0wgdGhhdCBk b24ndCBoYXZlCiAgKiB0aGUgWDUwOV9nZXRfc2lnbmF0dXJlX25pZCgpIGZ1bmN0aW9uLgogICov Ci0jaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUX1NJR05B VFVSRV9OSUQpCisjaWYgZGVmaW5lZChVU0VfTlNTKSB8fCAoZGVmaW5lZChVU0VfT1BFTlNTTCkg JiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQpKQogI2RlZmluZSBIQVZFX1BH VExTX0dFVF9QRUVSX0NFUlRJRklDQVRFX0hBU0gKIGV4dGVybiBjaGFyICpwZ3Rsc19nZXRfcGVl cl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwgc2l6ZV90ICpsZW4pOwogI2VuZGlmCi0t IAoyLjI1LjEKCg== --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0002-Refactor-SSL-testharness-for-multiple-library.patch" Content-Description: v44-0002-Refactor-SSL-testharness-for-multiple-library.patch Content-Disposition: attachment; filename="v44-0002-Refactor-SSL-testharness-for-multiple-library.patch"; size=11754; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAwMjA4ZjJjMmNkY2FlOGVlYzUzYWNjOTQ3ZjQ1YjAwOTBkYjM0Y2YyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzQgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw Mi8xMF0gUmVmYWN0b3IgU1NMIHRlc3RoYXJuZXNzIGZvciBtdWx0aXBsZSBsaWJyYXJ5CgpUaGUg U1NMIHRlc3RoYXJuZXNzIHdhcyBmdWxseSB0aWVkIHRvIE9wZW5TU0wgaW4gdGhlIHdheSB0aGUg c2VydmVyIHdhcwpzZXQgdXAgYW5kIHJlY29uZmlndXJlZC4gVGhpcyByZWZhY3RvcnMgdGhlIFNT TFNlcnZlciBtb2R1bGUgaW50byBhIFNTTApsaWJyYXJ5IGFnbm9zdGljIFNTTC9TZXJ2ZXIgbW9k dWxlIHdoaWNoIGluIHR1cm4gdXNlIFNTTC9CYWNrZW5kLzxsaWI+Cm1vZHVsZXMgZm9yIHRoZSBp bXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKTm8gY2hhbmdlcyBhcmUgZG9uZSB0byB0aGUgYWN0dWFs IHRlc3RzLCB0aGlzIG9ubHkgY2hhbmdlIGhvdyBzZXR1cCBhbmQKdGVhcmRvd24gaXMgcGVyZm9y bWVkLgotLS0KIHNyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbCAgICAgICAgICAgICAgICB8 ICA1NiArKy0tLS0tLS0tCiBzcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwgICAgICAgICAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0gICAg ICAgICB8IDEwMyArKysrKysrKysrKysrKysrKysKIC4uLi9zc2wvdC97U1NMU2VydmVyLnBtID0+ IFNTTC9TZXJ2ZXIucG19ICAgICB8ICA4MyArKysrKysrKysrKy0tLQogNCBmaWxlcyBjaGFuZ2Vk LCAxODEgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvT3BlblNTTC5wbQogcmVuYW1lIHNyYy90ZXN0L3Nz bC90L3tTU0xTZXJ2ZXIucG0gPT4gU1NML1NlcnZlci5wbX0gKDc4JSkKCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwgYi9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVz dHMucGwKaW5kZXggM2JjNzExZjRhNy4uMzUxODRjZDgwYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3NsL3QvMDAxX3NzbHRlc3RzLnBsCisrKyBiL3NyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5w bApAQCAtNywxMiArNywxMCBAQCB1c2UgUG9zdGdyZXNOb2RlOwogdXNlIFRlc3RMaWI7CiB1c2Ug VGVzdDo6TW9yZTsKIAotdXNlIEZpbGU6OkNvcHk7Ci0KIHVzZSBGaW5kQmluOwogdXNlIGxpYiAk RmluZEJpbjo6UmVhbEJpbjsKIAotdXNlIFNTTFNlcnZlcjsKK3VzZSBTU0w6OlNlcnZlcjsKIAog aWYgKCRFTlZ7d2l0aF9zc2x9IG5lICdvcGVuc3NsJykKIHsKQEAgLTM1LDMyICszMyw2IEBAIG15 ICRTRVJWRVJIT1NUQ0lEUiA9ICcxMjcuMC4wLjEvMzInOwogIyBBbGxvY2F0aW9uIG9mIGJhc2Ug Y29ubmVjdGlvbiBzdHJpbmcgc2hhcmVkIGFtb25nIG11bHRpcGxlIHRlc3RzLgogbXkgJGNvbW1v bl9jb25uc3RyOwogCi0jIFRoZSBjbGllbnQncyBwcml2YXRlIGtleSBtdXN0IG5vdCBiZSB3b3Js ZC1yZWFkYWJsZSwgc28gdGFrZSBhIGNvcHkKLSMgb2YgdGhlIGtleSBzdG9yZWQgaW4gdGhlIGNv ZGUgdHJlZSBhbmQgdXBkYXRlIGl0cyBwZXJtaXNzaW9ucy4KLSMKLSMgVGhpcyBjaGFuZ2VzIHNz bC9jbGllbnQua2V5IHRvIHNzbC9jbGllbnRfdG1wLmtleSBldGMgZm9yIHRoZSByZXN0Ci0jIG9m IHRoZSB0ZXN0cy4KLW15IEBrZXlzID0gKAotCSJjbGllbnQiLCAgICAgICAgICAgICAgICJjbGll bnQtcmV2b2tlZCIsCi0JImNsaWVudC1kZXIiLCAgICAgICAgICAgImNsaWVudC1lbmNyeXB0ZWQt cGVtIiwKLQkiY2xpZW50LWVuY3J5cHRlZC1kZXIiLCAiY2xpZW50LWRuIik7Ci1mb3JlYWNoIG15 ICRrZXkgKEBrZXlzKQotewotCWNvcHkoInNzbC8ke2tleX0ua2V5IiwgInNzbC8ke2tleX1fdG1w LmtleSIpCi0JICBvciBkaWUKLQkgICJjb3VsZG4ndCBjb3B5IHNzbC8ke2tleX0ua2V5IHRvIHNz bC8ke2tleX1fdG1wLmtleSBmb3IgcGVybWlzc2lvbnMgY2hhbmdlOiAkISI7Ci0JY2htb2QgMDYw MCwgInNzbC8ke2tleX1fdG1wLmtleSIKLQkgIG9yIGRpZSAiZmFpbGVkIHRvIGNoYW5nZSBwZXJt aXNzaW9ucyBvbiBzc2wvJHtrZXl9X3RtcC5rZXk6ICQhIjsKLX0KLQotIyBBbHNvIG1ha2UgYSBj b3B5IG9mIHRoYXQgZXhwbGljaXRseSB3b3JsZC1yZWFkYWJsZS4gIFdlIGNhbid0Ci0jIG5lY2Vz c2FyaWx5IHJlbHkgb24gdGhlIGZpbGUgaW4gdGhlIHNvdXJjZSB0cmVlIGhhdmluZyB0aG9zZQot IyBwZXJtaXNzaW9ucy4gIEFkZCBpdCB0byBAa2V5cyB0byBpbmNsdWRlIGl0IGluIHRoZSBmaW5h bCBjbGVhbgotIyB1cCBwaGFzZS4KLWNvcHkoInNzbC9jbGllbnQua2V5IiwgInNzbC9jbGllbnRf d3JvbmdwZXJtc190bXAua2V5Iik7Ci1jaG1vZCAwNjQ0LCAic3NsL2NsaWVudF93cm9uZ3Blcm1z X3RtcC5rZXkiOwotcHVzaCBAa2V5cywgJ2NsaWVudF93cm9uZ3Blcm1zJzsKLQogIyMjIyBTZXQg dXAgdGhlIHNlcnZlci4KIAogbm90ZSAic2V0dGluZyB1cCBkYXRhIGRpcmVjdG9yeSI7CkBAIC03 NSwzMiArNDcsMjIgQEAgJG5vZGUtPnN0YXJ0OwogCiAjIFJ1biB0aGlzIGJlZm9yZSB3ZSBsb2Nr IGRvd24gYWNjZXNzIGJlbG93LgogbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNIT1cgc3NsX2xpYnJhcnkiKTsKLWlzKCRyZXN1bHQsICdPcGVuU1NMJywgJ3NzbF9s aWJyYXJ5IHBhcmFtZXRlcicpOworaXMoJHJlc3VsdCwgU1NMOjpTZXJ2ZXI6OnNzbF9saWJyYXJ5 KCksICdzc2xfbGlicmFyeSBwYXJhbWV0ZXInKTsKIAogY29uZmlndXJlX3Rlc3Rfc2VydmVyX2Zv cl9zc2woJG5vZGUsICRTRVJWRVJIT1NUQUREUiwgJFNFUlZFUkhPU1RDSURSLAogCSd0cnVzdCcp OwogCiBub3RlICJ0ZXN0aW5nIHBhc3N3b3JkLXByb3RlY3RlZCBrZXlzIjsKIAotb3BlbiBteSAk c3NsY29uZiwgJz4nLCAkbm9kZS0+ZGF0YV9kaXIgLiAiL3NzbGNvbmZpZy5jb25mIjsKLXByaW50 ICRzc2xjb25mICJzc2w9b25cbiI7Ci1wcmludCAkc3NsY29uZiAic3NsX2NlcnRfZmlsZT0nc2Vy dmVyLWNuLW9ubHkuY3J0J1xuIjsKLXByaW50ICRzc2xjb25mICJzc2xfa2V5X2ZpbGU9J3NlcnZl ci1wYXNzd29yZC5rZXknXG4iOwotcHJpbnQgJHNzbGNvbmYgInNzbF9wYXNzcGhyYXNlX2NvbW1h bmQ9J2VjaG8gd3JvbmdwYXNzd29yZCdcbiI7Ci1jbG9zZSAkc3NsY29uZjsKLQorc2V0X3NlcnZl cl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAncm9vdCtjbGllbnRfY2EnLAorCQkJCSAg ICdzZXJ2ZXItcGFzc3dvcmQnLCAnZWNobyB3cm9uZ3Bhc3N3b3JkJyk7CiBjb21tYW5kX2ZhaWxz KAogCVsgJ3BnX2N0bCcsICctRCcsICRub2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2Zp bGUsICdyZXN0YXJ0JyBdLAogCSdyZXN0YXJ0IGZhaWxzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVk IGtleSBmaWxlIHdpdGggd3JvbmcgcGFzc3dvcmQnKTsKICRub2RlLT5fdXBkYXRlX3BpZCgwKTsK IAotb3BlbiAkc3NsY29uZiwgJz4nLCAkbm9kZS0+ZGF0YV9kaXIgLiAiL3NzbGNvbmZpZy5jb25m IjsKLXByaW50ICRzc2xjb25mICJzc2w9b25cbiI7Ci1wcmludCAkc3NsY29uZiAic3NsX2NlcnRf ZmlsZT0nc2VydmVyLWNuLW9ubHkuY3J0J1xuIjsKLXByaW50ICRzc2xjb25mICJzc2xfa2V5X2Zp bGU9J3NlcnZlci1wYXNzd29yZC5rZXknXG4iOwotcHJpbnQgJHNzbGNvbmYgInNzbF9wYXNzcGhy YXNlX2NvbW1hbmQ9J2VjaG8gc2VjcmV0MSdcbiI7Ci1jbG9zZSAkc3NsY29uZjsKLQorc2V0X3Nl cnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAncm9vdCtjbGllbnRfY2EnLAorCQkJ CSdzZXJ2ZXItcGFzc3dvcmQnLCAnZWNobyBzZWNyZXQxJyk7CiBjb21tYW5kX29rKAogCVsgJ3Bn X2N0bCcsICctRCcsICRub2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdyZXN0 YXJ0JyBdLAogCSdyZXN0YXJ0IHN1Y2NlZWRzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBm aWxlJyk7CkBAIC01ODYsNyArNTQ4LDUgQEAgJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJZXhwZWN0 ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogc3NsdjMgYWxlcnQgY2VydGlmaWNhdGUgcmV2b2tl ZC8pOwogCiAjIGNsZWFuIHVwCi1mb3JlYWNoIG15ICRrZXkgKEBrZXlzKQotewotCXVubGluaygi c3NsLyR7a2V5fV90bXAua2V5Iik7Ci19CisKK1NTTDo6U2VydmVyOjpjbGVhbnVwKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwgYi9zcmMvdGVzdC9zc2wvdC8wMDJf c2NyYW0ucGwKaW5kZXggMWRmYTJiOTFmMy4uZTA1ZTYwZjA5MiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3NsL3QvMDAyX3NjcmFtLnBsCisrKyBiL3NyYy90ZXN0L3NzbC90LzAwMl9zY3JhbS5wbApA QCAtMTQsMTEgKzE0LDExIEBAIHVzZSBGaWxlOjpDb3B5OwogdXNlIEZpbmRCaW47CiB1c2UgbGli ICRGaW5kQmluOjpSZWFsQmluOwogCi11c2UgU1NMU2VydmVyOwordXNlIFNTTDo6U2VydmVyOwog CiBpZiAoJEVOVnt3aXRoX3NzbH0gbmUgJ29wZW5zc2wnKQogewotCXBsYW4gc2tpcF9hbGwgPT4g J09wZW5TU0wgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKKwlwbGFuIHNraXBfYWxsID0+ ICdTU0wgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKIH0KIAogIyBUaGlzIGlzIHRoZSBo b3N0bmFtZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlci4KQEAgLTExNSw1ICsxMTUsMyBA QCAkbm9kZS0+Y29ubmVjdF9vaygKIAogIyBjbGVhbiB1cAogdW5saW5rKCRjbGllbnRfdG1wX2tl eSk7Ci0KLWRvbmVfdGVzdGluZygkbnVtYmVyX29mX3Rlc3RzKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFj a2VuZC9PcGVuU1NMLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU3 N2VlMjVjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFja2VuZC9P cGVuU1NMLnBtCkBAIC0wLDAgKzEsMTAzIEBACitwYWNrYWdlIFNTTDo6QmFja2VuZDo6T3BlblNT TDsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBFeHBvcnRlcjsKK3VzZSBGaWxl OjpDb3B5OworCitvdXIgQElTQSAgICAgICA9IHF3KEV4cG9ydGVyKTsKK291ciBARVhQT1JUX09L ID0gcXcoZ2V0X25ld19vcGVuc3NsX2JhY2tlbmQpOworCitvdXIgKEBrZXlzKTsKKworSU5JVAor eworCUBrZXlzID0gKAorCQkiY2xpZW50IiwgICAgICAgICAgICAgICAiY2xpZW50LXJldm9rZWQi LAorCQkiY2xpZW50LWRlciIsICAgICAgICAgICAiY2xpZW50LWVuY3J5cHRlZC1wZW0iLAorCQki Y2xpZW50LWVuY3J5cHRlZC1kZXIiLCAiY2xpZW50LWRuIik7Cit9CisKK3N1YiBuZXcKK3sKKwlt eSAoJGNsYXNzKSA9IEBfOworCisJbXkgJHNlbGYgPSB7IF9saWJyYXJ5ID0+ICdPcGVuU1NMJyB9 OworCisJYmxlc3MgJHNlbGYsICRjbGFzczsKKworCXJldHVybiAkc2VsZjsKK30KKworc3ViIGdl dF9uZXdfb3BlbnNzbF9iYWNrZW5kCit7CisJbXkgJGNsYXNzID0gJ1NTTDo6QmFja2VuZDo6T3Bl blNTTCc7CisKKwlteSAkYmFja2VuZCA9ICRjbGFzcy0+bmV3KCk7CisKKwlyZXR1cm4gJGJhY2tl bmQ7Cit9CisKK3N1YiBpbml0Cit7CisJIyBUaGUgY2xpZW50J3MgcHJpdmF0ZSBrZXkgbXVzdCBu b3QgYmUgd29ybGQtcmVhZGFibGUsIHNvIHRha2UgYSBjb3B5CisJIyBvZiB0aGUga2V5IHN0b3Jl ZCBpbiB0aGUgY29kZSB0cmVlIGFuZCB1cGRhdGUgaXRzIHBlcm1pc3Npb25zLgorCSMKKwkjIFRo aXMgY2hhbmdlcyBzc2wvY2xpZW50LmtleSB0byBzc2wvY2xpZW50X3RtcC5rZXkgZXRjIGZvciB0 aGUgcmVzdAorCSMgb2YgdGhlIHRlc3RzLgorCW15IEBrZXlzID0gKAorCQkiY2xpZW50IiwgICAg ICAgICAgICAgICAiY2xpZW50LXJldm9rZWQiLAorCQkiY2xpZW50LWRlciIsICAgICAgICAgICAi Y2xpZW50LWVuY3J5cHRlZC1wZW0iLAorCQkiY2xpZW50LWVuY3J5cHRlZC1kZXIiLCAiY2xpZW50 LWRuIik7CisJZm9yZWFjaCBteSAka2V5IChAa2V5cykKKwl7CisJCWNvcHkoInNzbC8ke2tleX0u a2V5IiwgInNzbC8ke2tleX1fdG1wLmtleSIpCisJCSAgb3IgZGllCisJCSAgImNvdWxkbid0IGNv cHkgc3NsLyR7a2V5fS5rZXkgdG8gc3NsLyR7a2V5fV90bXAua2V5IGZvciBwZXJtaXNzaW9ucyBj aGFuZ2U6ICQhIjsKKwkJY2htb2QgMDYwMCwgInNzbC8ke2tleX1fdG1wLmtleSIKKwkJICBvciBk aWUgImZhaWxlZCB0byBjaGFuZ2UgcGVybWlzc2lvbnMgb24gc3NsLyR7a2V5fV90bXAua2V5OiAk ISI7CisJfQorCisJIyBBbHNvIG1ha2UgYSBjb3B5IG9mIHRoYXQgZXhwbGljaXRseSB3b3JsZC1y ZWFkYWJsZS4gIFdlIGNhbid0CisJIyBuZWNlc3NhcmlseSByZWx5IG9uIHRoZSBmaWxlIGluIHRo ZSBzb3VyY2UgdHJlZSBoYXZpbmcgdGhvc2UKKwkjIHBlcm1pc3Npb25zLiAgQWRkIGl0IHRvIEBr ZXlzIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGZpbmFsIGNsZWFuCisJIyB1cCBwaGFzZS4KKwljb3B5 KCJzc2wvY2xpZW50LmtleSIsICJzc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSIpOworCWNo bW9kIDA2NDQsICJzc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSI7CisJcHVzaCBAa2V5cywg J2NsaWVudF93cm9uZ3Blcm1zJzsKK30KKworIyBDaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gdG8g dXNlIGdpdmVuIHNlcnZlciBjZXJ0IGZpbGUsIGFuZCByZWxvYWQKKyMgdGhlIHNlcnZlciBzbyB0 aGF0IHRoZSBjb25maWd1cmF0aW9uIHRha2VzIGVmZmVjdC4KK3N1YiBzZXRfc2VydmVyX2NlcnQK K3sKKwlteSAkc2VsZiAgICAgPSAkX1swXTsKKwlteSAkY2VydGZpbGUgPSAkX1sxXTsKKwlteSAk Y2FmaWxlICAgPSAkX1syXSB8fCAicm9vdCtjbGllbnRfY2EiOworCW15ICRrZXlmaWxlICA9ICRf WzNdIHx8ICRjZXJ0ZmlsZTsKKworCW15ICRzc2xjb25mID0KKwkgICAgInNzbF9jYV9maWxlPSck Y2FmaWxlLmNydCdcbiIKKwkgIC4gInNzbF9jZXJ0X2ZpbGU9JyRjZXJ0ZmlsZS5jcnQnXG4iCisJ ICAuICJzc2xfa2V5X2ZpbGU9JyRrZXlmaWxlLmtleSdcbiIKKwkgIC4gInNzbF9jcmxfZmlsZT0n cm9vdCtjbGllbnQuY3JsJ1xuIjsKKworCXJldHVybiAkc3NsY29uZjsKK30KKworc3ViIGdldF9s aWJyYXJ5Cit7CisJbXkgKCRzZWxmKSA9IEBfOworCisJcmV0dXJuICRzZWxmLT57X2xpYnJhcnl9 OworfQorCitzdWIgY2xlYW51cAoreworCWZvcmVhY2ggbXkgJGtleSAoQGtleXMpCisJeworCQl1 bmxpbmsoInNzbC8ke2tleX1fdG1wLmtleSIpOworCX0KK30KKworMTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3NzbC90L1NTTFNlcnZlci5wbSBiL3NyYy90ZXN0L3NzbC90L1NTTC9TZXJ2ZXIucG0K c2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gc3JjL3Rlc3Qvc3NsL3QvU1NMU2VydmVy LnBtCnJlbmFtZSB0byBzcmMvdGVzdC9zc2wvdC9TU0wvU2VydmVyLnBtCmluZGV4IDgwNGQwMDgy NDUuLjMzYmYzNTE0NzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90L1NTTFNlcnZlci5wbQor KysgYi9zcmMvdGVzdC9zc2wvdC9TU0wvU2VydmVyLnBtCkBAIC0yNiwxOSArMjYsMzkgQEAKICMg ZXhwbGljaXRseSBiZWNhdXNlIGFuIGludmFsaWQgc3NsY2VydCBvciBzc2xyb290Y2VydCwgcmVz cGVjdGl2ZWx5LAogIyBjYXVzZXMgdGhvc2UgdG8gYmUgaWdub3JlZC4pCiAKLXBhY2thZ2UgU1NM U2VydmVyOworcGFja2FnZSBTU0w6OlNlcnZlcjsKIAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5n czsKIHVzZSBQb3N0Z3Jlc05vZGU7Cit1c2UgUmVjdXJzaXZlQ29weTsKIHVzZSBUZXN0TGliOwog dXNlIEZpbGU6OkJhc2VuYW1lOwogdXNlIEZpbGU6OkNvcHk7CiB1c2UgVGVzdDo6TW9yZTsKK3Vz ZSBTU0w6OkJhY2tlbmQ6Ok9wZW5TU0wgcXcoZ2V0X25ld19vcGVuc3NsX2JhY2tlbmQpOwordXNl IFNTTDo6QmFja2VuZDo6TlNTIHF3KGdldF9uZXdfbnNzX2JhY2tlbmQpOworCitvdXIgKCRvcGVu c3NsLCAkbnNzLCAkYmFja2VuZCk7CisKKyMgVGhlIFRMUyBiYWNrZW5kIHdoaWNoIHRoZSBzZXJ2 ZXIgaXMgdXNpbmcgc2hvdWxkIGJlIG1vc3RseSB0cmFuc3BhcmVudCBmb3IKKyMgdGhlIHVzZXIs IGFwYXJ0IGZyb20gaW5kaXZpZHVhbCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBzbyBrZWVwIHRo ZSBiYWNrZW5kCisjIHNwZWNpZmljIHRoaW5ncyBhYnN0cmFjdGVkIGJlaGluZCBTU0w6OlNlcnZl ci4KK2lmICgkRU5We3dpdGhfc3NsfSBlcSAnb3BlbnNzbCcpCit7CisJJGJhY2tlbmQgPSBnZXRf bmV3X29wZW5zc2xfYmFja2VuZCgpOworCSRvcGVuc3NsID0gMTsKK30KK2Vsc2lmICgkRU5We3dp dGhfc3NsfSBlcSAnbnNzJykKK3sKKwkkYmFja2VuZCA9IGdldF9uZXdfbnNzX2JhY2tlbmQoKTsK KwkkbnNzICAgICA9IDE7Cit9CiAKIHVzZSBFeHBvcnRlciAnaW1wb3J0JzsKIG91ciBARVhQT1JU ID0gcXcoCiAgIGNvbmZpZ3VyZV90ZXN0X3NlcnZlcl9mb3Jfc3NsCisgIHNldF9zZXJ2ZXJfY2Vy dAogICBzd2l0Y2hfc2VydmVyX2NlcnQKICk7CiAKQEAgLTExMiwxNCArMTMyLDIxIEBAIHN1YiBj b25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbAogCWNsb3NlICRzc2xjb25mOwogCiAJIyBDb3B5 IGFsbCBzZXJ2ZXIgY2VydGlmaWNhdGVzIGFuZCBrZXlzLCBhbmQgY2xpZW50IHJvb3QgY2VydCwg dG8gdGhlIGRhdGEgZGlyCi0JY29weV9maWxlcygic3NsL3NlcnZlci0qLmNydCIsICRwZ2RhdGEp OwotCWNvcHlfZmlsZXMoInNzbC9zZXJ2ZXItKi5rZXkiLCAkcGdkYXRhKTsKLQljaG1vZCgwNjAw LCBnbG9iICIkcGdkYXRhL3NlcnZlci0qLmtleSIpIG9yIGRpZSAkITsKLQljb3B5X2ZpbGVzKCJz c2wvcm9vdCtjbGllbnRfY2EuY3J0IiwgJHBnZGF0YSk7Ci0JY29weV9maWxlcygic3NsL3Jvb3Rf Y2EuY3J0IiwgICAgICAgICRwZ2RhdGEpOwotCWNvcHlfZmlsZXMoInNzbC9yb290K2NsaWVudC5j cmwiLCAgICAkcGdkYXRhKTsKLQlta2RpcigiJHBnZGF0YS9yb290K2NsaWVudC1jcmxkaXIiKTsK LQljb3B5X2ZpbGVzKCJzc2wvcm9vdCtjbGllbnQtY3JsZGlyLyoiLCAiJHBnZGF0YS9yb290K2Ns aWVudC1jcmxkaXIvIik7CisJaWYgKGRlZmluZWQoJG9wZW5zc2wpKQorCXsKKwkJY29weV9maWxl cygic3NsL3NlcnZlci0qLmNydCIsICRwZ2RhdGEpOworCQljb3B5X2ZpbGVzKCJzc2wvc2VydmVy LSoua2V5IiwgJHBnZGF0YSk7CisJCWNobW9kKDA2MDAsIGdsb2IgIiRwZ2RhdGEvc2VydmVyLSou a2V5Iikgb3IgZGllICQhOworCQljb3B5X2ZpbGVzKCJzc2wvcm9vdCtjbGllbnRfY2EuY3J0Iiwg JHBnZGF0YSk7CisJCWNvcHlfZmlsZXMoInNzbC9yb290X2NhLmNydCIsICAgICAgICAkcGdkYXRh KTsKKwkJY29weV9maWxlcygic3NsL3Jvb3QrY2xpZW50LmNybCIsICAgICRwZ2RhdGEpOworCQlt a2RpcigiJHBnZGF0YS9yb290K2NsaWVudC1jcmxkaXIiKTsKKwkJY29weV9maWxlcygic3NsL3Jv b3QrY2xpZW50LWNybGRpci8qIiwgIiRwZ2RhdGEvcm9vdCtjbGllbnQtY3JsZGlyLyIpOworCX0K KwllbHNpZiAoZGVmaW5lZCgkbnNzKSkKKwl7CisJCVJlY3Vyc2l2ZUNvcHk6OmNvcHlwYXRoKCJz c2wvbnNzIiwgJHBnZGF0YSAuICIvbnNzIikgaWYgLWUgInNzbC9uc3MiOworCX0KIAogCSMgU3Rv cCBhbmQgcmVzdGFydCBzZXJ2ZXIgdG8gbG9hZCBuZXcgbGlzdGVuX2FkZHJlc3Nlcy4KIAkkbm9k ZS0+cmVzdGFydDsKQEAgLTEyNywyMCArMTU0LDM2IEBAIHN1YiBjb25maWd1cmVfdGVzdF9zZXJ2 ZXJfZm9yX3NzbAogCSMgQ2hhbmdlIHBnX2hiYSBhZnRlciByZXN0YXJ0IGJlY2F1c2UgaG9zdHNz bCByZXF1aXJlcyBzc2w9b24KIAljb25maWd1cmVfaGJhX2Zvcl9zc2woJG5vZGUsICRzZXJ2ZXJj aWRyLCAkYXV0aG1ldGhvZCk7CiAKKwkjIEZpbmFsbHksIHBlcmZvcm0gYmFja2VuZCBzcGVjaWZp YyBjb25maWd1cmF0aW9uCisJJGJhY2tlbmQtPmluaXQoKTsKKwogCXJldHVybjsKIH0KIAotIyBD aGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGdpdmVuIHNlcnZlciBjZXJ0IGZpbGUsIGFu ZCByZWxvYWQKLSMgdGhlIHNlcnZlciBzbyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHRha2VzIGVm ZmVjdC4KLXN1YiBzd2l0Y2hfc2VydmVyX2NlcnQKK3N1YiBzc2xfbGlicmFyeQoreworCXJldHVy biAkYmFja2VuZC0+Z2V0X2xpYnJhcnkoKTsKK30KKworc3ViIGNsZWFudXAKK3sKKwkkYmFja2Vu ZC0+Y2xlYW51cCgpOworfQorCisjIENoYW5nZSB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UgZ2l2 ZW4gc2VydmVyIGNlcnQgZmlsZSwKK3N1YiBzZXRfc2VydmVyX2NlcnQKIHsKIAlteSAkbm9kZSAg ICAgPSAkX1swXTsKIAlteSAkY2VydGZpbGUgPSAkX1sxXTsKIAlteSAkY2FmaWxlICAgPSAkX1sy XSB8fCAicm9vdCtjbGllbnRfY2EiOworCW15ICRrZXlmaWxlICA9ICRfWzNdIHx8ICcnOworCW15 ICRwd2NtZCAgICA9ICRfWzRdIHx8ICcnOwogCW15ICRjcmxmaWxlICA9ICJyb290K2NsaWVudC5j cmwiOwogCW15ICRjcmxkaXI7CiAJbXkgJHBnZGF0YSA9ICRub2RlLT5kYXRhX2RpcjsKIAorCSRr ZXlmaWxlID0gJGNlcnRmaWxlIGlmICRrZXlmaWxlIGVxICcnOworCiAJIyBkZWZhdWx0cyB0byB1 c2UgY3JsIGZpbGUKIAlpZiAoZGVmaW5lZCAkX1szXSB8fCBkZWZpbmVkICRfWzRdKQogCXsKQEAg LTE1MCwxMyArMTkzLDIzIEBAIHN1YiBzd2l0Y2hfc2VydmVyX2NlcnQKIAogCW9wZW4gbXkgJHNz bGNvbmYsICc+JywgIiRwZ2RhdGEvc3NsY29uZmlnLmNvbmYiOwogCXByaW50ICRzc2xjb25mICJz c2w9b25cbiI7Ci0JcHJpbnQgJHNzbGNvbmYgInNzbF9jYV9maWxlPSckY2FmaWxlLmNydCdcbiI7 Ci0JcHJpbnQgJHNzbGNvbmYgInNzbF9jZXJ0X2ZpbGU9JyRjZXJ0ZmlsZS5jcnQnXG4iOwotCXBy aW50ICRzc2xjb25mICJzc2xfa2V5X2ZpbGU9JyRjZXJ0ZmlsZS5rZXknXG4iOworCXByaW50ICRz c2xjb25mICRiYWNrZW5kLT5zZXRfc2VydmVyX2NlcnQoJGNlcnRmaWxlLCAkY2FmaWxlLCAka2V5 ZmlsZSk7CiAJcHJpbnQgJHNzbGNvbmYgInNzbF9jcmxfZmlsZT0nJGNybGZpbGUnXG4iIGlmIGRl ZmluZWQgJGNybGZpbGU7CiAJcHJpbnQgJHNzbGNvbmYgInNzbF9jcmxfZGlyPSckY3JsZGlyJ1xu IiAgIGlmIGRlZmluZWQgJGNybGRpcjsKKwlwcmludCAkc3NsY29uZiAic3NsX3Bhc3NwaHJhc2Vf Y29tbWFuZD0nJHB3Y21kJ1xuIgorCSAgdW5sZXNzICRwd2NtZCBlcSAnJzsKIAljbG9zZSAkc3Ns Y29uZjsKKwlyZXR1cm47Cit9CiAKKyMgQ2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZSBn aXZlbiBzZXJ2ZXIgY2VydCBmaWxlLCBhbmQgcmVsb2FkCisjIHRoZSBzZXJ2ZXIgc28gdGhhdCB0 aGUgY29uZmlndXJhdGlvbiB0YWtlcyBlZmZlY3QuCisjIFRha2VzIHRoZSBzYW1lIGFyZ3VtZW50 cyBhcyBzZXRfc2VydmVyX2NlcnQsIHdoaWNoIGl0IGNhbGxzIHRvIGRvIHRoYXQKKyMgcGllY2Ug b2YgdGhlIHdvcmsuCitzdWIgc3dpdGNoX3NlcnZlcl9jZXJ0Cit7CisJbXkgJG5vZGUgPSAkX1sw XTsKKwlzZXRfc2VydmVyX2NlcnQoQF8pOwogCSRub2RlLT5yZXN0YXJ0OwogCXJldHVybjsKIH0K LS0gCjIuMjUuMQoK --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0003-nss-Add-NSS-specific-tests.patch" Content-Description: v44-0003-nss-Add-NSS-specific-tests.patch Content-Disposition: attachment; filename="v44-0003-nss-Add-NSS-specific-tests.patch"; size=59201; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <04C8CDA2A77F254389C0F537A4907682@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAxOGUzYjJiMmQxNzVkNDRiYWEwNjI5OWQyZDcyMTc4MmVkOWI3NDgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzcgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw My8xMF0gbnNzOiBBZGQgTlNTIHNwZWNpZmljIHRlc3RzCgpUaGlzIGFkZHMgdGhlIFNTTC9CYWNr ZW5kL05TUyB3aGljaCBpbXBsZW1lbnRzIHRoZSBzZXR1cCBhbmQgdGVhcmRvd24KcmVxdWlyZWQg YXMgd2VsbCBhcyBhZGRzIHRoZSBOU1MgY29uZmlndXJhdGlvbiB0byB0aGUgZXhpc3RpbmcgdGVz dHMuCgpUaGUgT3BlblNTTCB0ZXN0ZmlsZXMgYXJlIHJldXNlZCBieSByZXBhY2thZ2luZyB0aGVt IGludG8gTlNTIGRhdGFiYXNlcwppbiBvcmRlciBmb3IgdGhlIHRlc3RzIHRvIGJlIGNyb3NzLWxp YnJhcnkuIEFkZGl0aW9uYWwgdGVzdGZpbGVzIGFyZQpnZW5lcmF0ZWQgYnkgdXNpbmcgb25seSB0 aGUgTlNTIHRvb2xjaGFpbiBhcyB3ZWxsIGFzIHJ1ZGltZW50YXJ5IHRlc3RzCnVzaW5nIHRoZXNl LgotLS0KIHNyYy90ZXN0L3NzbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAyNDYgKysrKysr KysrKysrKysrKwogc3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsICAgICAgICB8IDM5NSAr KysrKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsICAg ICAgICAgICB8ICAzMyArKy0KIHNyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL05TUy5wbSAgICAg fCAgNjEgKysrKwogc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvT3BlblNTTC5wbSB8ICAxOSAr LQogc3JjL3Rlc3Qvc3NsL3QvU1NML1NlcnZlci5wbSAgICAgICAgICB8ICA0NiArLS0KIDYgZmls ZXMgY2hhbmdlZCwgNjEwIGluc2VydGlvbnMoKyksIDE5MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9zc2wvdC9TU0wvQmFja2VuZC9OU1MucG0KCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUgYi9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKaW5kZXggYzIx NjU2MGRjYy4uNDYyOGIyNDkwOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlCisr KyBiL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQpAQCAtMzMsNiArMzMsMzcgQEAgU1NMRklMRVMgOj0g JChDRVJUSUZJQ0FURVM6JT1zc2wvJS5rZXkpICQoQ0VSVElGSUNBVEVTOiU9c3NsLyUuY3J0KSBc CiBTU0xESVJTIDo9IHNzbC9jbGllbnQtY3JsZGlyIHNzbC9zZXJ2ZXItY3JsZGlyIFwKIAlzc2wv cm9vdCtjbGllbnQtY3JsZGlyIHNzbC9yb290K3NlcnZlci1jcmxkaXIKIAorIyBFdmVuIHRob3Vn aCB3ZSBpbiBwcmFjdGljZSBjb3VsZCBnZXQgYXdheSB3aXRoIGZhciBmZXdlciBOU1MgZGF0YWJh c2VzLCB0aGV5CisjIGFyZSBnZW5lcmF0ZWQgdG8gbWltaWMgdGhlIHNldHVwIGZvciB0aGUgT3Bl blNTTCB0ZXN0cyBpbiBvcmRlciB0byBlbnN1cmUKKyMgd2UgaXNvbGF0ZSB0aGUgc2FtZSBiZWhh dmlvciBiZXR3ZWVuIHRoZSBiYWNrZW5kcy4gVGhlIGRhdGFiYXNlIG5hbWUgc2hvdWxkCisjIGNv bnRhaW4gdGhlIGZpbGVzIGluY2x1ZGVkIGZvciBlYXNpZXIgdGVzdCBzdWl0ZSBjb2RlIHJlYWRp bmcuCitOU1NGSUxFUyA6PSBzc2wvbnNzL2NsaWVudF9jYS5jcnQuZGIgXAorCXNzbC9uc3Mvc2Vy dmVyX2NhLmNydC5kYiBcCisJc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIgXAorCXNzbC9u c3Mvcm9vdCtjbGllbnRfY2EuY3J0LmRiIFwKKwlzc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5r ZXkuZGIgXAorCXNzbC9uc3MvY2xpZW50LXJldm9rZWQuY3J0X19jbGllbnQtcmV2b2tlZC5rZXku ZGIgXAorCXNzbC9uc3Mvc2VydmVyLWNuLW9ubHkuY3J0X19zZXJ2ZXItcGFzc3dvcmQua2V5LmRi IFwKKwlzc2wvbnNzL3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmRiIFwK Kwlzc2wvbnNzL3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmNybGRpci5k YiBcCisJc3NsL25zcy9yb290LmNybCBcCisJc3NsL25zcy9zZXJ2ZXIuY3JsIFwKKwlzc2wvbnNz L2NsaWVudC5jcmwgXAorCXNzbC9uc3Mvc2VydmVyLW11bHRpcGxlLWFsdC1uYW1lcy5jcnRfX3Nl cnZlci1tdWx0aXBsZS1hbHQtbmFtZXMua2V5LmRiIFwKKwlzc2wvbnNzL3NlcnZlci1zaW5nbGUt YWx0LW5hbWUuY3J0X19zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmtleS5kYiBcCisJc3NsL25zcy9z ZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5jcnRfX3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLmtleS5k YiBcCisJc3NsL25zcy9zZXJ2ZXItbm8tbmFtZXMuY3J0X19zZXJ2ZXItbm8tbmFtZXMua2V5LmRi IFwKKwlzc2wvbnNzL3NlcnZlci1yZXZva2VkLmNydF9fc2VydmVyLXJldm9rZWQua2V5LmRiIFwK Kwlzc2wvbnNzL3Jvb3QrY2xpZW50LmNybCBcCisJc3NsL25zcy9jbGllbnQrY2xpZW50X2NhLmNy dF9fY2xpZW50LmtleS5kYiBcCisJc3NsL25zcy9jbGllbnQuY3J0X19jbGllbnQtZW5jcnlwdGVk LXBlbS5rZXkuZGIgXAorCXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0X19zZXJ2ZXIuY3JsLmRi IFwKKwlzc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9fcm9vdCtzZXJ2ZXIuY3JsLmRiIFwKKwlz c2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9fcm9vdCtzZXJ2ZXIuY3JsZGlyLmRiIFwKKwlzc2wv bnNzL25hdGl2ZV9jYS1yb290LmRiIFwKKwlzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItcm9vdC5kYiBc CisJc3NsL25zcy9uYXRpdmVfY2xpZW50LXJvb3QuZGIKKwogIyBUaGlzIHRhcmdldCByZS1nZW5l cmF0ZXMgYWxsIHRoZSBrZXkgYW5kIGNlcnRpZmljYXRlIGZpbGVzLiBVc3VhbGx5IHdlIGp1c3QK ICMgdXNlIHRoZSBvbmVzIHRoYXQgYXJlIGNvbW1pdHRlZCB0byB0aGUgdHJlZSB3aXRob3V0IHJl YnVpbGRpbmcgdGhlbS4KICMKQEAgLTQwLDYgKzcxLDEwIEBAIFNTTERJUlMgOj0gc3NsL2NsaWVu dC1jcmxkaXIgc3NsL3NlcnZlci1jcmxkaXIgXAogIwogc3NsZmlsZXM6ICQoU1NMRklMRVMpICQo U1NMRElSUykKIAorIyBHZW5lcmF0ZSBOU1MgY2VydGlmaWNhdGUgZGF0YWJhc2VzIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIE9wZW5TU0wgY2VydGlmaWNhdGVzLgorIyBUaGlzIHRhcmdldCB3aWxsIGZh aWwgdW5sZXNzIHByZWNlZGVkIGJ5IG5zc2ZpbGVzLWNsZWFuLgorbnNzZmlsZXM6ICQoTlNTRklM RVMpCisKICMgT3BlblNTTCByZXF1aXJlcyBhIGRpcmVjdG9yeSB0byBwdXQgYWxsIGdlbmVyYXRl ZCBjZXJ0aWZpY2F0ZXMgaW4uIFdlIGRvbid0CiAjIHVzZSB0aGlzIGZvciBhbnl0aGluZywgYnV0 IHdlIG5lZWQgYSBsb2NhdGlvbi4KIHNzbC9uZXdfY2VydHNfZGlyOgpAQCAtNjcsNiArMTAyLDM1 IEBAIHNzbC8lX2NhLmNydDogc3NsLyVfY2Eua2V5ICVfY2EuY29uZmlnIHNzbC9yb290X2NhLmNy dCBzc2wvbmV3X2NlcnRzX2RpcgogCXJtIHNzbC90ZW1wX2NhLmNydCBzc2wvdGVtcF9jYV9zaWdu ZWQuY3J0CiAJZWNobyAiMDEiID4gc3NsLyQqX2NhLnNybAogCitzc2wvbnNzLyVfY2EuY3J0LmRi OiBzc2wvJV9jYS5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4g LS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uICQqX2NhLmNydCAt aSBzc2wvJCpfY2EuY3J0IC10ICJDVCxDLEMiCisKK3NzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0 X19zZXJ2ZXIuY3JsLmRiOiBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbC9uc3Mvc2VydmVyLmNy bAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBhc3N3 b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCAt aSBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY3JsdXRpbCAtSSAtaSBzc2wv bnNzL3NlcnZlci5jcmwgLWQgJEAgLUIKKworc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3Jv b3Qrc2VydmVyLmNybC5kYjogc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2wvbnNzL3Jvb3QuY3Js IHNzbC9uc3Mvc2VydmVyLmNybAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRA IiAtTiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3Jv b3Qrc2VydmVyX2NhLmNydCAtaSBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJ Y3JsdXRpbCAtSSAtaSBzc2wvbnNzL3Jvb3QuY3JsIC1kICRAIC1CCisJY3JsdXRpbCAtSSAtaSBz c2wvbnNzL3NlcnZlci5jcmwgLWQgJEAgLUIKKworc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRf X3Jvb3Qrc2VydmVyLmNybGRpci5kYjogc3NsL3Jvb3Qrc2VydmVyX2NhLmNydAorCSQoTUtESVJf UCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3Jvb3Qrc2VydmVyX2NhLmNydCAtaSBzc2wvcm9vdCtz ZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY3JsdXRpbCAtSSAtaSBzc2wvbnNzL3Jvb3QuY3Js IC1kICRAIC1CCisJZm9yIGMgaW4gJChzaGVsbCBscyBzc2wvcm9vdCtzZXJ2ZXItY3JsZGlyKSA7 IGRvIFwKKwkJZWNobyAkJHtjfSA7IFwKKwkJb3BlbnNzbCBjcmwgLWluIHNzbC9yb290K3NlcnZl ci1jcmxkaXIvJCR7Y30gLW91dGZvcm0gZGVyIC1vdXQgc3NsL25zcy8kJHtjfSA7IFwKKwkJY3Js dXRpbCAtSSAtaSBzc2wvbnNzLyQke2N9IC1kICRAIC1CIDsgXAorCWRvbmUKKwogIyBTZXJ2ZXIg Y2VydGlmaWNhdGVzLCBzaWduZWQgYnkgc2VydmVyIENBOgogc3NsL3NlcnZlci0lLmNydDogc3Ns L3NlcnZlci0lLmtleSBzc2wvc2VydmVyX2NhLmNydCBzZXJ2ZXItJS5jb25maWcKIAlvcGVuc3Ns IHJlcSAtbmV3IC1rZXkgc3NsL3NlcnZlci0kKi5rZXkgLW91dCBzc2wvc2VydmVyLSQqLmNzciAt Y29uZmlnIHNlcnZlci0kKi5jb25maWcKQEAgLTc0LDYgKzEzOCw4NyBAQCBzc2wvc2VydmVyLSUu Y3J0OiBzc2wvc2VydmVyLSUua2V5IHNzbC9zZXJ2ZXJfY2EuY3J0IHNlcnZlci0lLmNvbmZpZwog CW9wZW5zc2wgeDUwOSAtaW4gc3NsL3RlbXAuY3J0IC1vdXQgc3NsL3NlcnZlci0kKi5jcnQgIyB0 byBrZWVwIGp1c3QgdGhlIFBFTSBjZXJ0CiAJcm0gc3NsL3NlcnZlci0kKi5jc3IKIAorIyBwazEy dXRpbCB3b24ndCBwcmVzZXJ2ZSB0aGUgcGFzc3dvcmQgd2hlbiBpbXBvcnRpbmcgdGhlIHBhc3N3 b3JkIHByb3RlY3RlZAorIyBrZXksIHRoZSBwYXNzd29yZCBtdXN0IGJlIHNldCBvbiB0aGUgZGF0 YWJhc2UgKmJlZm9yZSogaW1wb3J0aW5nIGl0IGFzIHRoZQorIyBwYXNzd29yZCBpbiB0aGUgcGtj czEyIGVudmVsb3BlIHdpbGwgYmUgZHJvcHBlZC4KK3NzbC9uc3Mvc2VydmVyLWNuLW9ubHkuY3J0 X19zZXJ2ZXItcGFzc3dvcmQua2V5LmRiOiBzc2wvc2VydmVyLWNuLW9ubHkuY3J0CisJJChNS0RJ Ul9QKSAkQAorCWVjaG8gInNlY3JldDEiID4gcGFzc3dvcmQudHh0CisJY2VydHV0aWwgLWQgInNx bDokQCIgLU4gLWYgcGFzc3dvcmQudHh0CisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3Ns L3NlcnZlci1jbi1vbmx5LmNydCAtaSBzc2wvc2VydmVyLWNuLW9ubHkuY3J0IC10ICJDVCxDLEMi IC1mIHBhc3N3b3JkLnR4dAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5j cnQgLWkgc3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIgLWYgcGFzc3dvcmQudHh0CisJY2Vy dHV0aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10 ICJDVCxDLEMiIC1mIHBhc3N3b3JkLnR4dAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIGNs aWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIgLWYgcGFzc3dvcmQu dHh0CisJb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3Mvc2VydmVyLXBhc3N3b3Jk LnBmeCAtaW5rZXkgc3NsL3NlcnZlci1wYXNzd29yZC5rZXkgLWluIHNzbC9zZXJ2ZXItY24tb25s eS5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXJfY2EuY3J0IC1wYXNzaW4gJ3Bhc3M6c2VjcmV0MScg LXBhc3NvdXQgJ3Bhc3M6c2VjcmV0MScKKwlwazEydXRpbCAtaSBzc2wvbnNzL3NlcnZlci1wYXNz d29yZC5wZnggLWQgInNxbDokQCIgLVcgJ3NlY3JldDEnIC1LICdzZWNyZXQxJworCitzc2wvbnNz L3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmRiOiBzc2wvc2VydmVyLWNu LW9ubHkuY3J0IHNzbC9zZXJ2ZXItY24tb25seS5rZXkKKwkkKE1LRElSX1ApICRACisJY2VydHV0 aWwgLWQgInNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAi IC1BIC1uIHNzbC9zZXJ2ZXItY24tb25seS5jcnQgLWkgc3NsL3NlcnZlci1jbi1vbmx5LmNydCAt dCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkg c3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAt biByb290X2NhLmNydCAtaSBzc2wvcm9vdF9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBr Y3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItY24tb25seS5wZnggLWlua2V5IHNzbC9z ZXJ2ZXItY24tb25seS5rZXkgLWluIHNzbC9zZXJ2ZXItY24tb25seS5jcnQgLWNlcnRmaWxlIHNz bC9zZXJ2ZXJfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwgLWkgc3NsL25zcy9zZXJ2 ZXItY24tb25seS5wZnggLWQgInNxbDokQCIgLVcgJycKKworc3NsL25zcy9zZXJ2ZXItY24tb25s eS5jcnRfX3NlcnZlci1jbi1vbmx5LmtleS5jcmxkaXIuZGI6IHNzbC9uc3Mvc2VydmVyLWNuLW9u bHkuY3J0X19zZXJ2ZXItY24tb25seS5rZXkuZGIKKwljcCAtUiAkPCAkQAorCWZvciBjIGluICQo c2hlbGwgbHMgc3NsL3Jvb3QrY2xpZW50LWNybGRpcikgOyBkbyBcCisJCWVjaG8gJCR7Y30gOyBc CisJCW9wZW5zc2wgY3JsIC1pbiBzc2wvcm9vdCtjbGllbnQtY3JsZGlyLyQke2N9IC1vdXRmb3Jt IGRlciAtb3V0IHNzbC9uc3MvJCR7Y30gOyBcCisJCWNybHV0aWwgLUkgLWkgc3NsL25zcy8kJHtj fSAtZCAkQCAtQiA7IFwKKwlkb25lCisKK3NzbC9uc3Mvc2VydmVyLW11bHRpcGxlLWFsdC1uYW1l cy5jcnRfX3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMua2V5LmRiOiBzc2wvc2VydmVyLW11bHRp cGxlLWFsdC1uYW1lcy5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIg LU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9zZXJ2 ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydCAtaSBzc2wvc2VydmVyLW11bHRpcGxlLWFsdC1uYW1l cy5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzZXJ2ZXJfY2Eu Y3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDok QCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10ICJDVCxDLEMiCisJY2Vy dHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAtaSBzc2wvY2xpZW50X2NhLmNy dCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNzL3NlcnZl ci1tdWx0aXBsZS1hbHQtbmFtZXMucGZ4IC1pbmtleSBzc2wvc2VydmVyLW11bHRpcGxlLWFsdC1u YW1lcy5rZXkgLWluIHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydCAtY2VydGZpbGUg c3NsL3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0 aWwgLWkgc3NsL25zcy9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLnBmeCAtZCAic3FsOiRAIiAt VyAnJworCitzc2wvbnNzL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0X19zZXJ2ZXItc2luZ2xl LWFsdC1uYW1lLmtleS5kYjogc3NsL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0CisJJChNS0RJ Ul9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLXNpbmdsZS1hbHQtbmFtZS5jcnQgLWkg c3NsL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQg InNxbDokQCIgLUEgLW4gc2VydmVyX2NhLmNydCAtaSBzc2wvc2VydmVyX2NhLmNydCAtdCAiQ1Qs QyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHJvb3RfY2EuY3J0IC1pIHNzbC9yb290 X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIGNsaWVudF9j YS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAt ZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLnBmeCAtaW5rZXkgc3Ns L3NlcnZlci1zaW5nbGUtYWx0LW5hbWUua2V5IC1pbiBzc2wvc2VydmVyLXNpbmdsZS1hbHQtbmFt ZS5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmNydCAtcGFzc291dCBw YXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLXNpbmdsZS1hbHQtbmFtZS5wZnggLWQg InNxbDokQCIgLVcgJycKKworc3NsL25zcy9zZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5jcnRfX3Nl cnZlci1jbi1hbmQtYWx0LW5hbWVzLmtleS5kYjogc3NsL3NlcnZlci1jbi1hbmQtYWx0LW5hbWVz LmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVtcHR5LXBh c3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3NlcnZlci1jbi1hbmQtYWx0 LW5hbWVzLmNydCAtaSBzc2wvc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMuY3J0IC10ICJDVCxDLEMi CisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc2VydmVyX2NhLmNydCAtaSBzc2wvc2VydmVy X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHJvb3RfY2Eu Y3J0IC1pIHNzbC9yb290X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAi IC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIKKwlv cGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItY24tYW5kLWFsdC1uYW1l cy5wZnggLWlua2V5IHNzbC9zZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5rZXkgLWluIHNzbC9zZXJ2 ZXItY24tYW5kLWFsdC1uYW1lcy5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXItY24tYW5kLWFsdC1u YW1lcy5jcnQgLXBhc3NvdXQgcGFzczoKKwlwazEydXRpbCAtaSBzc2wvbnNzL3NlcnZlci1jbi1h bmQtYWx0LW5hbWVzLnBmeCAtZCAkQCAtVyAnJworCitzc2wvbnNzL3NlcnZlci1uby1uYW1lcy5j cnRfX3NlcnZlci1uby1uYW1lcy5rZXkuZGI6IHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0CisJJChN S0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwlj ZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLW5vLW5hbWVzLmNydCAtaSBzc2wv c2VydmVyLW5vLW5hbWVzLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290X2NhLmNydCAtaSBzc2wvcm9vdF9jYS5jcnQgLXQg IkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBjbGllbnRfY2EuY3J0IC1pIHNz bC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0 IHNzbC9uc3Mvc2VydmVyLW5vLW5hbWVzLnBmeCAtaW5rZXkgc3NsL3NlcnZlci1uby1uYW1lcy5r ZXkgLWluIHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0IC1jZXJ0ZmlsZSBzc2wvc2VydmVyLW5vLW5h bWVzLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLW5vLW5h bWVzLnBmeCAtZCAic3FsOiRAIiAtVyAnJworCitzc2wvbnNzL3NlcnZlci1yZXZva2VkLmNydF9f c2VydmVyLXJldm9rZWQua2V5LmRiOiBzc2wvc2VydmVyLXJldm9rZWQuY3J0CisJJChNS0RJUl9Q KSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRp bCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLXJldm9rZWQuY3J0IC1pIHNzbC9zZXJ2ZXIt cmV2b2tlZC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzZXJ2 ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQg InNxbDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10ICJDVCxDLEMi CisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAtaSBzc2wvY2xpZW50 X2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNz L3NlcnZlci1yZXZva2VkLnBmeCAtaW5rZXkgc3NsL3NlcnZlci1yZXZva2VkLmtleSAtaW4gc3Ns L3NlcnZlci1yZXZva2VkLmNydCAtY2VydGZpbGUgc3NsL3NlcnZlci1yZXZva2VkLmNydCAtcGFz c291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLXJldm9rZWQucGZ4IC1kICJz cWw6JEAiIC1XICcnCisKICMgUGFzc3dvcmQtcHJvdGVjdGVkIHZlcnNpb24gb2Ygc2VydmVyLWNu LW9ubHkua2V5CiBzc2wvc2VydmVyLXBhc3N3b3JkLmtleTogc3NsL3NlcnZlci1jbi1vbmx5Lmtl eQogCW9wZW5zc2wgcnNhIC1hZXMyNTYgLWluICQ8IC1vdXQgJEAgLXBhc3NvdXQgJ3Bhc3M6c2Vj cmV0MScKQEAgLTkyLDYgKzIzNywyNyBAQCBzc2wvY2xpZW50LWRuLmNydDogc3NsL2NsaWVudC1k bi5rZXkgc3NsL2NsaWVudF9jYS5jcnQKIAlvcGVuc3NsIHg1MDkgLWluIHNzbC90ZW1wLmNydCAt b3V0IHNzbC9jbGllbnQtZG4uY3J0ICMgdG8ga2VlcCBqdXN0IHRoZSBQRU0gY2VydAogCXJtIHNz bC9jbGllbnQtZG4uY3NyIHNzbC90ZW1wLmNydAogCisjIENsaWVudCBjZXJ0aWZpY2F0ZSwgc2ln bmVkIGJ5IGNsaWVudCBDQQorc3NsL25zcy9jbGllbnQuY3J0X19jbGllbnQua2V5LmRiOiBzc2wv Y2xpZW50LmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVt cHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL2NsaWVudC5jcnQg LWkgc3NsL2NsaWVudC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAt biBjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdCtzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9yb290K3NlcnZl cl9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25z cy9jbGllbnQucGZ4IC1pbmtleSBzc2wvY2xpZW50LmtleSAtaW4gc3NsL2NsaWVudC5jcnQgLWNl cnRmaWxlIHNzbC9jbGllbnRfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwgLWkgc3Ns L25zcy9jbGllbnQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKKyMgQ2xpZW50IGNlcnRpZmljYXRl IHdpdGggZW5jcnlwdGVkIGtleSwgc2lnbmVkIGJ5IGNsaWVudCBDQQorc3NsL25zcy9jbGllbnQu Y3J0X19jbGllbnQtZW5jcnlwdGVkLXBlbS5rZXkuZGI6IHNzbC9jbGllbnQuY3J0CisJJChNS0RJ Ul9QKSAkQAorCWVjaG8gJ2RVbW15UF4jKycgPiAkQC5wYXNzCisJY2VydHV0aWwgLWQgInNxbDok QCIgLU4gLWYgJEAucGFzcworCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1mICRALnBhc3MgLW4g c3NsL2NsaWVudC5jcnQgLWkgc3NsL2NsaWVudC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAt ZCAic3FsOiRAIiAtQSAtZiAkQC5wYXNzIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9j YS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtZiAkQC5wYXNzIC1u IHJvb3Qrc2VydmVyX2NhLmNydCAtaSBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMi CisJb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3MvY2xpZW50LWVuY3J5cHRlZC1w ZW0ucGZ4IC1pbmtleSBzc2wvY2xpZW50LWVuY3J5cHRlZC1wZW0ua2V5IC1pbiBzc2wvY2xpZW50 LmNydCAtY2VydGZpbGUgc3NsL2NsaWVudF9jYS5jcnQgLXBhc3NpbiBwYXNzOidkVW1teVBeIysn IC1wYXNzb3V0IHBhc3M6J2RVbW15UF4jKycKKwlwazEydXRpbCAtaSBzc2wvbnNzL2NsaWVudC1l bmNyeXB0ZWQtcGVtLnBmeCAtZCAic3FsOiRAIiAtVyAnZFVtbXlQXiMrJyAtayAkQC5wYXNzCisK ICMgQW5vdGhlciBjbGllbnQgY2VydGlmaWNhdGUsIHNpZ25lZCBieSB0aGUgY2xpZW50IENBLiBU aGlzIG9uZSBpcyByZXZva2VkLgogc3NsL2NsaWVudC1yZXZva2VkLmNydDogc3NsL2NsaWVudC1y ZXZva2VkLmtleSBzc2wvY2xpZW50X2NhLmNydCBjbGllbnQuY29uZmlnCiAJb3BlbnNzbCByZXEg LW5ldyAta2V5IHNzbC9jbGllbnQtcmV2b2tlZC5rZXkgLW91dCBzc2wvY2xpZW50LXJldm9rZWQu Y3NyIC1jb25maWcgY2xpZW50LmNvbmZpZwpAQCAtOTksNiArMjY1LDE0IEBAIHNzbC9jbGllbnQt cmV2b2tlZC5jcnQ6IHNzbC9jbGllbnQtcmV2b2tlZC5rZXkgc3NsL2NsaWVudF9jYS5jcnQgY2xp ZW50LmNvbmZpZwogCW9wZW5zc2wgeDUwOSAtaW4gc3NsL3RlbXAuY3J0IC1vdXQgc3NsL2NsaWVu dC1yZXZva2VkLmNydCAjIHRvIGtlZXAganVzdCB0aGUgUEVNIGNlcnQKIAlybSBzc2wvY2xpZW50 LXJldm9rZWQuY3NyIHNzbC90ZW1wLmNydAogCitzc2wvbnNzL2NsaWVudC1yZXZva2VkLmNydF9f Y2xpZW50LXJldm9rZWQua2V5LmRiOiBzc2wvY2xpZW50LXJldm9rZWQuY3J0CisJJChNS0RJUl9Q KSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRp bCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvY2xpZW50LXJldm9rZWQuY3J0IC1pIHNzbC9jbGllbnQt cmV2b2tlZC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBjbGll bnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNzbCBwa2Nz MTIgLWV4cG9ydCAtb3V0IHNzbC9uc3MvY2xpZW50LXJldm9rZWQucGZ4IC1pbmtleSBzc2wvY2xp ZW50LXJldm9rZWQua2V5IC1pbiBzc2wvY2xpZW50LXJldm9rZWQuY3J0IC1jZXJ0ZmlsZSBzc2wv Y2xpZW50X2NhLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3MvY2xpZW50 LXJldm9rZWQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKICMgQ29udmVydCB0aGUga2V5IHRvIERF UiwgdG8gdGVzdCBvdXIgYmVoYXZpb3VyIHRoZXJlIHRvbwogc3NsL2NsaWVudC1kZXIua2V5OiBz c2wvY2xpZW50LmtleQogCW9wZW5zc2wgcnNhIC1pbiBzc2wvY2xpZW50LmtleSAtb3V0Zm9ybSBE RVIgLW91dCBzc2wvY2xpZW50LWRlci5rZXkKQEAgLTEzMSwxOSArMzA1LDQwIEBAIHNzbC9yb290 K2NsaWVudF9jYS5jcnQ6IHNzbC9yb290X2NhLmNydCBzc2wvY2xpZW50X2NhLmNydAogc3NsL2Ns aWVudCtjbGllbnRfY2EuY3J0OiBzc2wvY2xpZW50LmNydCBzc2wvY2xpZW50X2NhLmNydAogCWNh dCAkXiA+ICRACiAKKyMgQ2xpZW50IGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2xpZW50IENBCitz c2wvbnNzL2NsaWVudCtjbGllbnRfY2EuY3J0X19jbGllbnQua2V5LmRiOiBzc2wvY2xpZW50K2Ns aWVudF9jYS5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLS1l bXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9jbGllbnQrY2xp ZW50X2NhLmNydCAtaSBzc2wvY2xpZW50K2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9yb290 K3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQg c3NsL25zcy9jbGllbnQucGZ4IC1pbmtleSBzc2wvY2xpZW50LmtleSAtaW4gc3NsL2NsaWVudC5j cnQgLWNlcnRmaWxlIHNzbC9jbGllbnRfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwg LWkgc3NsL25zcy9jbGllbnQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKICMjIyMgQ1JMcwogCiBz c2wvY2xpZW50LmNybDogc3NsL2NsaWVudC1yZXZva2VkLmNydAogCW9wZW5zc2wgY2EgLWNvbmZp ZyBjYXMuY29uZmlnIC1uYW1lIGNsaWVudF9jYSAtcmV2b2tlIHNzbC9jbGllbnQtcmV2b2tlZC5j cnQKIAlvcGVuc3NsIGNhIC1jb25maWcgY2FzLmNvbmZpZyAtbmFtZSBjbGllbnRfY2EgLWdlbmNy bCAtb3V0IHNzbC9jbGllbnQuY3JsCiAKK3NzbC9uc3MvY2xpZW50LmNybDogc3NsL2NsaWVudC5j cmwKKwlvcGVuc3NsIGNybCAtaW4gJF4gLW91dGZvcm0gZGVyIC1vdXQgJEAKKwogc3NsL3NlcnZl ci5jcmw6IHNzbC9zZXJ2ZXItcmV2b2tlZC5jcnQKIAlvcGVuc3NsIGNhIC1jb25maWcgY2FzLmNv bmZpZyAtbmFtZSBzZXJ2ZXJfY2EgLXJldm9rZSBzc2wvc2VydmVyLXJldm9rZWQuY3J0CiAJb3Bl bnNzbCBjYSAtY29uZmlnIGNhcy5jb25maWcgLW5hbWUgc2VydmVyX2NhIC1nZW5jcmwgLW91dCBz c2wvc2VydmVyLmNybAogCitzc2wvbnNzL3NlcnZlci5jcmw6IHNzbC9zZXJ2ZXIuY3JsCisJb3Bl bnNzbCBjcmwgLWluICReIC1vdXRmb3JtIGRlciAtb3V0ICRACisKIHNzbC9yb290LmNybDogc3Ns L3Jvb3RfY2EuY3J0CiAJb3BlbnNzbCBjYSAtY29uZmlnIGNhcy5jb25maWcgLW5hbWUgcm9vdF9j YSAtZ2VuY3JsIC1vdXQgc3NsL3Jvb3QuY3JsCiAKK3NzbC9uc3Mvcm9vdC5jcmw6IHNzbC9yb290 LmNybAorCW9wZW5zc2wgY3JsIC1pbiAkXiAtb3V0Zm9ybSBkZXIgLW91dCAkQAorCitzc2wvbnNz L3Jvb3QrY2xpZW50LmNybDogc3NsL3Jvb3QrY2xpZW50LmNybAorCW9wZW5zc2wgY3JsIC1pbiAk XiAtb3V0Zm9ybSBkZXIgLW91dCAkQAorCiAjIElmIGEgQ1JMIGlzIHVzZWQsIE9wZW5TU0wgcmVx dWlyZXMgYSBDUkwgZmlsZSBmb3IgKmFsbCogdGhlIENBcyBpbiB0aGUKICMgY2hhaW4sIGV2ZW4g aWYgc29tZSBvZiB0aGVtIGFyZSBlbXB0eS4KIHNzbC9yb290K3NlcnZlci5jcmw6IHNzbC9yb290 LmNybCBzc2wvc2VydmVyLmNybApAQCAtMTY5LDE0ICszNjQsNjUgQEAgc3NsL2NsaWVudC1jcmxk aXI6IHNzbC9jbGllbnQuY3JsCiAJbWtkaXIgc3NsL2NsaWVudC1jcmxkaXIKIAljcCBzc2wvY2xp ZW50LmNybCBzc2wvY2xpZW50LWNybGRpci9gb3BlbnNzbCBjcmwgLWhhc2ggLW5vb3V0IC1pbiBz c2wvY2xpZW50LmNybGAucjAKIAorIyMjIyBOU1Mgc3BlY2lmaWMgY2VydGlmaWNhdGVzIGFuZCBr ZXlzCisKK3NzbC9uc3MvbmF0aXZlX2NhLSUuZGI6CisJJChNS0RJUl9QKSBzc2wvbnNzL25hdGl2 ZV9jYS0kKi5kYgorCWNlcnR1dGlsIC1OIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfY2EtJCouZGIv IiAtLWVtcHR5LXBhc3N3b3JkCisJZWNobyB5ID4gbnNzX2NhX3BhcmFtcy50eHQKKwllY2hvIDEw ID4+IG5zc19jYV9wYXJhbXMudHh0CisJZWNobyB5ID4+IG5zc19jYV9wYXJhbXMudHh0CisJY2F0 IG5zc19jYV9wYXJhbXMudHh0IHwgY2VydHV0aWwgLVMgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9j YS0kKi5kYi8iIC1uIGNhLSQqIFwKKwktcyAiQ049VGVzdCBDQSBmb3IgUG9zdGdyZVNRTCBTU0wg cmVncmVzc2lvbiB0ZXN0cyxPVT1Qb3N0Z3JlU1FMIHRlc3Qgc3VpdGUiIFwKKwkteCAtayByc2Eg LWcgMjA0OCAtbSA1NDMyIC10IENUdSxDVHUsQ1R1IFwKKwktLWtleVVzYWdlIGNlcnRTaWduaW5n IC0yIC0tbnNDZXJ0VHlwZSBzc2xDQSxzbWltZUNBLG9iamVjdFNpZ25pbmdDQSBcCisJLXogTWFr ZWZpbGUgLVogU0hBMjU2CisJcm0gbnNzX2NhX3BhcmFtcy50eHQKKworc3NsL25zcy9uYXRpdmVf Y2EtJS5wZW06IHNzbC9uc3MvbmF0aXZlX2NhLSUuZGIKKwljZXJ0dXRpbCAtTCAtZCAic3FsOnNz bC9uc3MvbmF0aXZlX2NhLSQqLmRiLyIgLW4gY2EtJCogLWEgPiBzc2wvbnNzL25hdGl2ZV9jYS0k Ki5wZW0KKworIyBDcmVhdGUgYW5kIHNpZ24gYSBzZXJ2ZXIgY2VydGlmaWNhdGUKK3NzbC9uc3Mv bmF0aXZlX3NlcnZlci0lLmRiOiBzc2wvbnNzL25hdGl2ZV9jYS0lLnBlbQorCSQoTUtESVJfUCkg c3NsL25zcy9uYXRpdmVfc2VydmVyLSQqLmRiCisJY2VydHV0aWwgLU4gLWQgInNxbDpzc2wvbnNz L25hdGl2ZV9zZXJ2ZXItJCouZGIvIiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLVIgLWQg InNxbDpzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItJCouZGIvIiBcCisJCS1zICJDTj1jb21tb24tbmFt ZS5wZy1zc2x0ZXN0LnRlc3QsT1U9UG9zdGdyZVNRTCB0ZXN0IHN1aXRlIiBcCisJCS1vIHNzbC9u c3MvbmF0aXZlX3NlcnZlci0kKi5jc3IgLWcgMjA0OCAtWiBTSEEyNTYgLXogTWFrZWZpbGUKKwll Y2hvIDEgPiBuc3Nfc2VydmVyX3BhcmFtcy50eHQKKwllY2hvIDkgPj4gbnNzX3NlcnZlcl9wYXJh bXMudHh0CisJY2F0IG5zc19zZXJ2ZXJfcGFyYW1zLnR4dCB8IGNlcnR1dGlsIC1DIC1kICJzcWw6 c3NsL25zcy9uYXRpdmVfY2EtJCouZGIvIiAtYyBjYS1yb290IC1pIHNzbC9uc3MvbmF0aXZlX3Nl cnZlci0kKi5jc3IgXAorCQktbyBzc2wvbnNzL25hdGl2ZV9zZXJ2ZXJfJCouZGVyIC1tIDU0MzMg LS1rZXlVc2FnZSBkYXRhRW5jaXBoZXJtZW50LGRpZ2l0YWxTaWduYXR1cmUsa2V5RW5jaXBoZXJt ZW50IFwKKwkJLS1uc0NlcnRUeXBlIHNzbFNlcnZlciAtLWNlcnRWZXJzaW9uIDEgLVogU0hBMjU2 CisJY2VydHV0aWwgLUEgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9zZXJ2ZXItJCouZGIvIiAtbiBj YS0kKiAtdCBDVHUsQ1R1LENUdSAtYSAtaSBzc2wvbnNzL25hdGl2ZV9jYS0kKi5wZW0KKwljZXJ0 dXRpbCAtQSAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX3NlcnZlci0kKi5kYi8iIC1uIHNzbC9uYXRp dmVfc2VydmVyLSQqLmNydCAtdCBDVHUsQ1R1LENUdSAtaSBzc2wvbnNzL25hdGl2ZV9zZXJ2ZXJf JCouZGVyCisJcm0gbnNzX3NlcnZlcl9wYXJhbXMudHh0CisKKyMgQ3JlYXRlIGFuZCBzaWduIGEg Y2xpZW50IGNlcnRpZmljYXRlCitzc2wvbnNzL25hdGl2ZV9jbGllbnQtJS5kYjogc3NsL25zcy9u YXRpdmVfY2EtJS5wZW0KKwkkKE1LRElSX1ApIHNzbC9uc3MvbmF0aXZlX2NsaWVudC0kKi5kYgor CWNlcnR1dGlsIC1OIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfY2xpZW50LSQqLmRiLyIgLS1lbXB0 eS1wYXNzd29yZAorCWNlcnR1dGlsIC1SIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfY2xpZW50LSQq LmRiLyIgLXMgIkNOPXNzbHRlc3R1c2VyLE9VPVBvc3RncmVTUUwgdGVzdCBzdWl0ZSIgXAorCQkt byBzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCouY3NyIC1nIDIwNDggLVogU0hBMjU2IC16IE1ha2Vm aWxlCisJY2VydHV0aWwgLUMgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jYS0kKi5kYi8iIC1jIGNh LSQqIC1pIHNzbC9uc3MvbmF0aXZlX2NsaWVudC0kKi5jc3IgLW8gc3NsL25zcy9uYXRpdmVfY2xp ZW50LSQqLmRlciBcCisJCS1tIDU0MzQgLS1rZXlVc2FnZSBrZXlFbmNpcGhlcm1lbnQsZGF0YUVu Y2lwaGVybWVudCxkaWdpdGFsU2lnbmF0dXJlIC0tbnNDZXJ0VHlwZSBzc2xDbGllbnQgXAorCQkt LWNlcnRWZXJzaW9uIDEgLVogU0hBMjU2CisJY2VydHV0aWwgLUEgLWQgInNxbDpzc2wvbnNzL25h dGl2ZV9jbGllbnQtJCouZGIiIC1uIGNhLSQqIC10IENUdSxDVHUsQ1R1IC1hIC1pIHNzbC9uc3Mv bmF0aXZlX2NhLSQqLnBlbQorCWNlcnR1dGlsIC1BIC1kICJzcWw6c3NsL25zcy9uYXRpdmVfY2xp ZW50LSQqLmRiIiAtbiBuYXRpdmVfY2xpZW50LSQqIC10IENUdSxDVHUsQ1R1IC1pIHNzbC9uc3Mv bmF0aXZlX2NsaWVudC0kKi5kZXIKKwogLlBIT05ZOiBzc2xmaWxlcy1jbGVhbgogc3NsZmlsZXMt Y2xlYW46CiAJcm0gLWYgJChTU0xGSUxFUykgc3NsL2NsaWVudF9jYS5zcmwgc3NsL3NlcnZlcl9j YS5zcmwgc3NsL2NsaWVudF9jYS1jZXJ0aW5kZXgqIHNzbC9zZXJ2ZXJfY2EtY2VydGluZGV4KiBz c2wvcm9vdF9jYS1jZXJ0aW5kZXgqIHNzbC9yb290X2NhLnNybCBzc2wvdGVtcF9jYS5jcnQgc3Ns L3RlbXBfY2Ffc2lnbmVkLmNydAogCXJtIC1yZiAkKFNTTERJUlMpCiAKKy5QSE9OWTogbnNzZmls ZXMtY2xlYW4KK25zc2ZpbGVzLWNsZWFuOgorCXJtIC1yZiBzc2wvbnNzCisKIGNsZWFuIGRpc3Rj bGVhbiBtYWludGFpbmVyLWNsZWFuOgogCXJtIC1yZiB0bXBfY2hlY2sKIAlybSAtcmYgc3NsLyou b2xkIHNzbC9uZXdfY2VydHNfZGlyIHNzbC9jbGllbnQqX3RtcC5rZXkKKwlybSAtcmYgc3NsL25z cwogCiAjIERvZXNuJ3QgZGVwZW5kIG9uICQoU1NMRklMRVMpIGJlY2F1c2Ugd2UgZG9uJ3QgcmVi dWlsZCB0aGVtIGJ5IGRlZmF1bHQKIGNoZWNrOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3Qv MDAxX3NzbHRlc3RzLnBsIGIvc3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsCmluZGV4IDM1 MTg0Y2Q4MGMuLmY5NjFiYTk3MzcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90LzAwMV9zc2x0 ZXN0cy5wbAorKysgYi9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwKQEAgLTEyLDEzICsx MiwyMiBAQCB1c2UgbGliICRGaW5kQmluOjpSZWFsQmluOwogCiB1c2UgU1NMOjpTZXJ2ZXI7CiAK LWlmICgkRU5We3dpdGhfc3NsfSBuZSAnb3BlbnNzbCcpCitteSAkb3BlbnNzbDsKK215ICRuc3M7 CisKK2lmICgkRU5We3dpdGhfc3NsfSBlcSAnb3BlbnNzbCcpCit7CisJJG9wZW5zc2wgPSAxOwor CXBsYW4gdGVzdHMgPT4gMTEyOworfQorZWxzaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICduc3MnKQog ewotCXBsYW4gc2tpcF9hbGwgPT4gJ09wZW5TU0wgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxk JzsKKwkkbnNzID0gMTsKKwlwbGFuIHRlc3RzID0+IDExMjsKIH0KIGVsc2UKIHsKLQlwbGFuIHRl c3RzID0+IDExMDsKKwlwbGFuIHNraXBfYWxsID0+ICdTU0wgbm90IHN1cHBvcnRlZCBieSB0aGlz IGJ1aWxkJzsKIH0KIAogIyMjIyBTb21lIGNvbmZpZ3VyYXRpb24KQEAgLTU0LDE5ICs2Myw2OCBA QCBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbCgkbm9kZSwgJFNFUlZFUkhPU1RBRERSLCAk U0VSVkVSSE9TVENJRFIsCiAKIG5vdGUgInRlc3RpbmcgcGFzc3dvcmQtcHJvdGVjdGVkIGtleXMi OwogCi1zZXRfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXItY24tb25seScsICdyb290K2NsaWVu dF9jYScsCi0JCQkJICAgJ3NlcnZlci1wYXNzd29yZCcsICdlY2hvIHdyb25ncGFzc3dvcmQnKTsK LWNvbW1hbmRfZmFpbHMoCi0JWyAncGdfY3RsJywgJy1EJywgJG5vZGUtPmRhdGFfZGlyLCAnLWwn LCAkbm9kZS0+bG9nZmlsZSwgJ3Jlc3RhcnQnIF0sCi0JJ3Jlc3RhcnQgZmFpbHMgd2l0aCBwYXNz d29yZC1wcm90ZWN0ZWQga2V5IGZpbGUgd2l0aCB3cm9uZyBwYXNzd29yZCcpOwotJG5vZGUtPl91 cGRhdGVfcGlkKDApOworIyBTaW5jZSB0aGUgcGFzc3BocmFzZSBjYWxsYmFja3Mgb3BlcmF0ZSBh dCBkaWZmZXJlbnQgc3RhZ2VzIGluIE9wZW5TU0wgYW5kCisjIE5TUyB3ZSBoYXZlIHR3byBzZXBh cmF0ZSBibG9ja3MgZm9yIHRoZW0KK1NLSVA6Cit7CisJc2tpcCAiQ2VydGlmaWNhdGUgcGFzc3Bo cmFzZXMgYXJlbid0IGNoZWNrZWQgb24gc2VydmVyIHJlc3RhcnQgaW4gTlNTIiwgMgorCSAgaWYg KCRuc3MpOworCisJc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLAorCQljZXJ0ZmlsZSA9PiAnc2Vy dmVyLWNuLW9ubHknLAorCQljYWZpbGUgPT4gJ3Jvb3QrY2xpZW50X2NhJywKKwkJa2V5ZmlsZSA9 PiAnc2VydmVyLXBhc3N3b3JkJywKKwkJbnNzZGF0YWJhc2UgPT4gJ3NlcnZlci1jbi1vbmx5LmNy dF9fc2VydmVyLXBhc3N3b3JkLmtleS5kYicsCisJCXBhc3NwaHJhc2VfY21kID0+ICdlY2hvIHdy b25ncGFzc3dvcmQnLAorCQlyZXN0YXJ0ID0+ICdubycgKTsKKworCWNvbW1hbmRfZmFpbHMoCisJ CVsgJ3BnX2N0bCcsICctRCcsICRub2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2ZpbGUs ICdyZXN0YXJ0JyBdLAorCQkncmVzdGFydCBmYWlscyB3aXRoIHBhc3N3b3JkLXByb3RlY3RlZCBr ZXkgZmlsZSB3aXRoIHdyb25nIHBhc3N3b3JkJyk7CisJJG5vZGUtPl91cGRhdGVfcGlkKDApOwor CisJc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLAorCQljZXJ0ZmlsZSA9PiAnc2VydmVyLWNuLW9u bHknLAorCQljYWZpbGUgPT4gJ3Jvb3QrY2xpZW50X2NhJywKKwkJa2V5ZmlsZSA9PiAnc2VydmVy LXBhc3N3b3JkJywKKwkJbnNzZGF0YWJhc2UgPT4gJ3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVy LXBhc3N3b3JkLmtleS5kYicsCisJCXBhc3NwaHJhc2VfY21kID0+ICdlY2hvIHNlY3JldDEnLAor CQlyZXN0YXJ0ID0+ICdubycpOworCisJY29tbWFuZF9vaygKKwkJWyAncGdfY3RsJywgJy1EJywg JG5vZGUtPmRhdGFfZGlyLCAnLWwnLCAkbm9kZS0+bG9nZmlsZSwgJ3Jlc3RhcnQnIF0sCisJCSdy ZXN0YXJ0IHN1Y2NlZWRzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlJyk7CisJJG5v ZGUtPl91cGRhdGVfcGlkKDEpOworfQogCi1zZXRfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXIt Y24tb25seScsICdyb290K2NsaWVudF9jYScsCi0JCQkJJ3NlcnZlci1wYXNzd29yZCcsICdlY2hv IHNlY3JldDEnKTsKLWNvbW1hbmRfb2soCi0JWyAncGdfY3RsJywgJy1EJywgJG5vZGUtPmRhdGFf ZGlyLCAnLWwnLCAkbm9kZS0+bG9nZmlsZSwgJ3Jlc3RhcnQnIF0sCi0JJ3Jlc3RhcnQgc3VjY2Vl ZHMgd2l0aCBwYXNzd29yZC1wcm90ZWN0ZWQga2V5IGZpbGUnKTsKLSRub2RlLT5fdXBkYXRlX3Bp ZCgxKTsKK1NLSVA6Cit7CisJc2tpcCAiQ2VydGlmaWNhdGUgcGFzc3BocmFzZXMgYXJlIGNoZWNr ZWQgb24gY29ubmVjdGlvbiBpbiBOU1MiLCAzCisJICBpZiAoJG9wZW5zc2wpOworCisJc3dpdGNo X3NlcnZlcl9jZXJ0KCRub2RlLAorCQljZXJ0ZmlsZSA9PiAnc2VydmVyLWNuLW9ubHknLAorCQlj YWZpbGUgPT4gJ3Jvb3QrY2xpZW50X2NhJywKKwkJa2V5ZmlsZSA9PiAnc2VydmVyLXBhc3N3b3Jk JywKKwkJbnNzZGF0YWJhc2UgPT4gJ3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLXBhc3N3b3Jk LmtleS5kYicsCisJCXBhc3NwaHJhc2VfY21kID0+ICdlY2hvIHdyb25ncGFzc3dvcmQnKTsKKwor CSRub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3Rk YiBzc2xjZXJ0PWludmFsaWQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIGhvc3Q9Y29tbW9uLW5h bWUucGctc3NsdGVzdC50ZXN0IHNzbHJvb3RjZXJ0PWludmFsaWQgc3NsbW9kZT1yZXF1aXJlIiwK KwkJImNvbm5lY3QgdG8gc2VydmVyIHdpdGggaW5jb3JyZWN0IGtleSBwYXNzd29yZCBjb25maWd1 cmVkIiwKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1xRU1NMIGVycm9yXEUvKTsKKworCXN3aXRj aF9zZXJ2ZXJfY2VydCgkbm9kZSwKKwkJY2VydGZpbGUgPT4gJ3NlcnZlci1jbi1vbmx5JywKKwkJ Y2FmaWxlID0+ICdyb290K2NsaWVudF9jYScsCisJCWtleWZpbGUgPT4gJ3NlcnZlci1wYXNzd29y ZCcsCisJCW5zc2RhdGFiYXNlID0+ICdzZXJ2ZXItY24tb25seS5jcnRfX3NlcnZlci1wYXNzd29y ZC5rZXkuZGInLAorCQlwYXNzcGhyYXNlX2NtZCA9PiAnZWNobyBzZWNyZXQxJyk7CisKKwkkbm9k ZS0+Y29ubmVjdF9vaygKKwkJInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2Vy dD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBob3N0PWNvbW1vbi1uYW1lLnBnLXNz bHRlc3QudGVzdCBzc2xyb290Y2VydD1pbnZhbGlkIHNzbG1vZGU9cmVxdWlyZSIsCisJCSJjb25u ZWN0IHRvIHNlcnZlciB3aXRoIGNvcnJlY3Qga2V5IHBhc3N3b3JkIGNvbmZpZ3VyZWQiKTsKK30K IAogIyBUZXN0IGNvbXBhdGliaWxpdHkgb2YgU1NMIHByb3RvY29scy4KICMgVExTdjEuMSBpcyBs b3dlciB0aGFuIFRMU3YxLjIsIHNvIGl0IHdvbid0IHdvcmsuCkBAIC05NCw3ICsxNTIsNyBAQCBj b21tYW5kX29rKAogCiBub3RlICJydW5uaW5nIGNsaWVudCB0ZXN0cyI7CiAKLXN3aXRjaF9zZXJ2 ZXJfY2VydCgkbm9kZSwgJ3NlcnZlci1jbi1vbmx5Jyk7Citzd2l0Y2hfc2VydmVyX2NlcnQoJG5v ZGUsIGNlcnRmaWxlID0+ICdzZXJ2ZXItY24tb25seScsIG5zc2RhdGFiYXNlID0+ICdzZXJ2ZXIt Y24tb25seS5jcnRfX3NlcnZlci1jbi1vbmx5LmtleS5kYicpOwogCiAkY29tbW9uX2Nvbm5zdHIg PQogICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgaG9z dGFkZHI9JFNFUlZFUkhPU1RBRERSIGhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IjsK QEAgLTExMyw4NyArMTcxLDEwNCBAQCAkbm9kZS0+Y29ubmVjdF9vaygKICRub2RlLT5jb25uZWN0 X2ZhaWxzKAogCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9aW52YWxpZCBzc2xtb2RlPXZl cmlmeS1jYSIsCiAJImNvbm5lY3Qgd2l0aG91dCBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9dmVy aWZ5LWNhIiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJp bnZhbGlkIiBkb2VzIG5vdCBleGlzdC8pOworCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9yb290IGNl cnRpZmljYXRlIGZpbGUgImludmFsaWQiIGRvZXMgbm90IGV4aXN0fFBlZXIncyBjZXJ0aWZpY2F0 ZSBpc3N1ZXIgaGFzIGJlZW4gbWFya2VkIGFzIG5vdCB0cnVzdGVkIGJ5IHRoZSB1c2VyLyk7CiAk bm9kZS0+Y29ubmVjdF9mYWlscygKIAkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PWludmFs aWQgc3NsbW9kZT12ZXJpZnktZnVsbCIsCiAJImNvbm5lY3Qgd2l0aG91dCBzZXJ2ZXIgcm9vdCBj ZXJ0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwiLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9yb290IGNl cnRpZmljYXRlIGZpbGUgImludmFsaWQiIGRvZXMgbm90IGV4aXN0Lyk7CisJZXhwY3RlZF9zdGRl cnIgPT4gcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdHxQ ZWVyJ3MgY2VydGlmaWNhdGUgaXNzdWVyIGhhcyBiZWVuIG1hcmtlZCBhcyBub3QgdHJ1c3RlZCBi eSB0aGUgdXNlci8pOwogCiAjIFRyeSB3aXRoIHdyb25nIHJvb3QgY2VydCwgc2hvdWxkIGZhaWwu IChXZSdyZSB1c2luZyB0aGUgY2xpZW50IENBIGFzIHRoZQogIyByb290LCBidXQgdGhlIHNlcnZl cidzIGtleSBpcyBzaWduZWQgYnkgdGhlIHNlcnZlciBDQS4pCiAkbm9kZS0+Y29ubmVjdF9mYWls cygKLQkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9jbGllbnRfY2EuY3J0IHNzbG1v ZGU9cmVxdWlyZSIsCisJIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvY2xpZW50X2Nh LmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsZGF0YWJhc2U9c3NsL25zcy9jbGllbnRfY2EuY3J0LmRi IiwKIAkiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZlciByb290IGNlcnQgc3NsbW9kZT1yZXF1aXJl IiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBjZXJ0aWZpY2F0ZSB2ZXJpZnkg ZmFpbGVkLyk7CisJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogY2VydGlmaWNhdGUg dmVyaWZ5IGZhaWxlZHxQZWVyJ3MgY2VydGlmaWNhdGUgaXNzdWVyIGhhcyBiZWVuIG1hcmtlZCBh cyBub3QgdHJ1c3RlZCBieSB0aGUgdXNlci8pOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMoCi0JIiRj b21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXZlcmlm eS1jYSIsCisJIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBz c2xtb2RlPXZlcmlmeS1jYSBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudF9jYS5jcnQuZGIiLAog CSJjb25uZWN0IHdpdGggd3Jvbmcgc2VydmVyIHJvb3QgY2VydCBzc2xtb2RlPXZlcmlmeS1jYSIs Ci0JZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogY2VydGlmaWNhdGUgdmVyaWZ5IGZh aWxlZC8pOworCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IGNlcnRpZmljYXRlIHZl cmlmeSBmYWlsZWR8UGVlcidzIGNlcnRpZmljYXRlIGlzc3VlciBoYXMgYmVlbiBtYXJrZWQgYXMg bm90IHRydXN0ZWQgYnkgdGhlIHVzZXIvKTsKICRub2RlLT5jb25uZWN0X2ZhaWxzKAotCSIkY29t bW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL2NsaWVudF9jYS5jcnQgc3NsbW9kZT12ZXJpZnkt ZnVsbCIsCisJIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBz c2xtb2RlPXZlcmlmeS1mdWxsIHNzbGRhdGFiYXNlPXNzbC9uc3MvY2xpZW50X2NhLmNydC5kYiIs CiAJImNvbm5lY3Qgd2l0aCB3cm9uZyBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9dmVyaWZ5LWZ1 bGwiLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IGNlcnRpZmljYXRlIHZlcmlm eSBmYWlsZWQvKTsKKwlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBjZXJ0aWZpY2F0 ZSB2ZXJpZnkgZmFpbGVkfFBlZXIncyBjZXJ0aWZpY2F0ZSBpc3N1ZXIgaGFzIGJlZW4gbWFya2Vk IGFzIG5vdCB0cnVzdGVkIGJ5IHRoZSB1c2VyLyk7CiAKLSMgVHJ5IHdpdGgganVzdCB0aGUgc2Vy dmVyIENBJ3MgY2VydC4gVGhpcyBmYWlscyBiZWNhdXNlIHRoZSByb290IGZpbGUKLSMgbXVzdCBj b250YWluIHRoZSB3aG9sZSBjaGFpbiB1cCB0byB0aGUgcm9vdCBDQS4KLSRub2RlLT5jb25uZWN0 X2ZhaWxzKAotCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3NlcnZlcl9jYS5jcnQg c3NsbW9kZT12ZXJpZnktY2EiLAotCSJjb25uZWN0IHdpdGggc2VydmVyIENBIGNlcnQsIHdpdGhv dXQgcm9vdCBDQSIsCi0JZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogY2VydGlmaWNh dGUgdmVyaWZ5IGZhaWxlZC8pOworU0tJUDoKK3sKKwkjIE5TUyBzdXBwb3J0cyBwYXJ0aWFsIGNo YWluIHZhbGlkYXRpb24sIHNvIHRoaXMgdGVzdCBkb2Vzbid0IHdvcmsgdGhlcmUuCisJIyBUaGlz IGlzIHNpbWlsYXIgdG8gdGhlIE9wZW5TU0wgb3B0aW9uIFg1MDlfVl9GTEFHX1BBUlRJQUxfQ0hB SU4gd2hpY2gKKwkjIHdlIGRvbid0IGFsbG93LgorCXNraXAgIk5TUyBzdXBwb3J0IHBhcnRpYWwg Y2hhaW4gdmFsaWRhdGlvbiIsIDIgaWYgKCRuc3MpOworCSMgVHJ5IHdpdGgganVzdCB0aGUgc2Vy dmVyIENBJ3MgY2VydC4gVGhpcyBmYWlscyBiZWNhdXNlIHRoZSByb290IGZpbGUKKwkjIG11c3Qg Y29udGFpbiB0aGUgd2hvbGUgY2hhaW4gdXAgdG8gdGhlIHJvb3QgQ0EuCisJJG5vZGUtPmNvbm5l Y3RfZmFpbHMoCisJCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3NlcnZlcl9jYS5j cnQgc3NsbW9kZT12ZXJpZnktY2EiLAorCQkiY29ubmVjdCB3aXRoIHNlcnZlciBDQSBjZXJ0LCB3 aXRob3V0IHJvb3QgQ0EiLAorCQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBjZXJ0 aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkLyk7Cit9CiAKICMgQW5kIGZpbmFsbHksIHdpdGggdGhlIGNv cnJlY3Qgcm9vdCBjZXJ0LgogJG5vZGUtPmNvbm5lY3Rfb2soCi0JIiRjb21tb25fY29ubnN0ciBz c2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSIsCisJIiRj b21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9 cmVxdWlyZSBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNv bm5lY3Qgd2l0aCBjb3JyZWN0IHNlcnZlciBDQSBjZXJ0IGZpbGUgc3NsbW9kZT1yZXF1aXJlIik7 CiAkbm9kZS0+Y29ubmVjdF9vaygKLQkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2EiLAorCSIkY29tbW9uX2Nvbm5zdHIg c3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xk YXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Qgd2l0aCBj b3JyZWN0IHNlcnZlciBDQSBjZXJ0IGZpbGUgc3NsbW9kZT12ZXJpZnktY2EiKTsKICRub2RlLT5j b25uZWN0X29rKAotCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVy X2NhLmNydCBzc2xtb2RlPXZlcmlmeS1mdWxsIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3Rj ZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktZnVsbCBzc2xkYXRhYmFz ZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Qgd2l0aCBjb3JyZWN0 IHNlcnZlciBDQSBjZXJ0IGZpbGUgc3NsbW9kZT12ZXJpZnktZnVsbCIpOwogCi0jIFRlc3Qgd2l0 aCBjZXJ0IHJvb3QgZmlsZSB0aGF0IGNvbnRhaW5zIHR3byBjZXJ0aWZpY2F0ZXMuIFRoZSBjbGll bnQgc2hvdWxkCi0jIGJlIGFibGUgdG8gcGljayB0aGUgcmlnaHQgb25lLCByZWdhcmRsZXNzIG9m IHRoZSBvcmRlciBpbiB0aGUgZmlsZS4KLSRub2RlLT5jb25uZWN0X29rKAotCSIkY29tbW9uX2Nv bm5zdHIgc3Nscm9vdGNlcnQ9c3NsL2JvdGgtY2FzLTEuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwK LQkiY2VydCByb290IGZpbGUgdGhhdCBjb250YWlucyB0d28gY2VydGlmaWNhdGVzLCBvcmRlciAx Iik7Ci0kbm9kZS0+Y29ubmVjdF9vaygKLQkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNz bC9ib3RoLWNhcy0yLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCi0JImNlcnQgcm9vdCBmaWxlIHRo YXQgY29udGFpbnMgdHdvIGNlcnRpZmljYXRlcywgb3JkZXIgMiIpOwotCitTS0lQOgoreworCXNr aXAgIkNBIG9yZGVyaW5nIGlzIGlycmVsZXZhbnQgaW4gTlNTIGRhdGFiYXNlcyIsIDIgaWYgKCRu c3MpOworCisJIyBUZXN0IHdpdGggY2VydCByb290IGZpbGUgdGhhdCBjb250YWlucyB0d28gY2Vy dGlmaWNhdGVzLiBUaGUgY2xpZW50IHNob3VsZAorCSMgYmUgYWJsZSB0byBwaWNrIHRoZSByaWdo dCBvbmUsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIGluIHRoZSBmaWxlLgorCSRub2RlLT5jb25u ZWN0X29rKAorCQkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9ib3RoLWNhcy0xLmNy dCBzc2xtb2RlPXZlcmlmeS1jYSIsCisJCSJjZXJ0IHJvb3QgZmlsZSB0aGF0IGNvbnRhaW5zIHR3 byBjZXJ0aWZpY2F0ZXMsIG9yZGVyIDEiKTsKKworCSMgSG93IGFib3V0IGltcG9ydCB0aGUgYm90 aC1maWxlIGludG8gYSBkYXRhYmFzZT8KKwkkbm9kZS0+Y29ubmVjdF9vaygKKwkJIiRjb21tb25f Y29ubnN0ciBzc2xyb290Y2VydD1zc2wvYm90aC1jYXMtMi5jcnQgc3NsbW9kZT12ZXJpZnktY2Ei LAorCQkiY2VydCByb290IGZpbGUgdGhhdCBjb250YWlucyB0d28gY2VydGlmaWNhdGVzLCBvcmRl ciAyIik7Cit9CiAjIENSTCB0ZXN0cwogCiAjIEludmFsaWQgQ1JMIGZpbGVuYW1lIGlzIHRoZSBz YW1lIGFzIG5vIENSTCwgc3VjY2VlZHMKICRub2RlLT5jb25uZWN0X29rKAotCSIkY29tbW9uX2Nv bm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1j YSBzc2xjcmw9aW52YWxpZCIsCisJIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvcm9v dCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNzbGNybD1pbnZhbGlkIHNzbGRhdGFi YXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAkic3NsY3JsIG9wdGlvbiB3aXRo IGludmFsaWQgZmlsZSBuYW1lIik7CiAKLSMgQSBDUkwgYmVsb25naW5nIHRvIGEgZGlmZmVyZW50 IENBIGlzIG5vdCBhY2NlcHRlZCwgZmFpbHMKLSRub2RlLT5jb25uZWN0X2ZhaWxzKAotCSIkY29t bW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZl cmlmeS1jYSBzc2xjcmw9c3NsL2NsaWVudC5jcmwiLAotCSJDUkwgYmVsb25naW5nIHRvIGEgZGlm ZmVyZW50IENBIiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBjZXJ0aWZpY2F0 ZSB2ZXJpZnkgZmFpbGVkLyk7CitTS0lQOgoreworCXNraXAgIkNSTCdzIGFyZSB2ZXJpZmllZCB3 aGVuIGFkZGluZyB0byBOU1MgZGF0YWJhc2UiLCA0IGlmICgkbnNzKTsKKwkjIEEgQ1JMIGJlbG9u Z2luZyB0byBhIGRpZmZlcmVudCBDQSBpcyBub3QgYWNjZXB0ZWQsIGZhaWxzCisJJG5vZGUtPmNv bm5lY3RfZmFpbHMoCisJCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2Vy dmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9c3NsL2NsaWVudC5jcmwiLAorCQki Q1JMIGJlbG9uZ2luZyB0byBhIGRpZmZlcmVudCBDQSIsCisJCWV4cGVjdGVkX3N0ZGVyciA9PiBx ci9TU0wgZXJyb3I6IGNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQvKTsKIAotIyBUaGUgc2FtZSBm b3IgQ1JMIGRpcmVjdG9yeQotJG5vZGUtPmNvbm5lY3RfZmFpbHMoCi0JIiRjb21tb25fY29ubnN0 ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNz bGNybGRpcj1zc2wvY2xpZW50LWNybGRpciIsCi0JImRpcmVjdG9yeSBDUkwgYmVsb25naW5nIHRv IGEgZGlmZmVyZW50IENBIiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBjZXJ0 aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkLyk7CisJIyBUaGUgc2FtZSBmb3IgQ1JMIGRpcmVjdG9yeQor CSRub2RlLT5jb25uZWN0X2ZhaWxzKAorCQkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNz bC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsZGlyPXNzbC9jbGll bnQtY3JsZGlyIiwKKwkJImRpcmVjdG9yeSBDUkwgYmVsb25naW5nIHRvIGEgZGlmZmVyZW50IENB IiwKKwkJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogY2VydGlmaWNhdGUgdmVyaWZ5 IGZhaWxlZC8pOworfQogCiAjIFdpdGggdGhlIGNvcnJlY3QgQ1JMLCBzdWNjZWVkcyAodGhpcyBj ZXJ0IGlzIG5vdCByZXZva2VkKQogJG5vZGUtPmNvbm5lY3Rfb2soCi0JIiRjb21tb25fY29ubnN0 ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNz bGNybD1zc2wvcm9vdCtzZXJ2ZXIuY3JsIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0 PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsPXNzbC9yb290 K3NlcnZlci5jcmwgc3NsZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3Jvb3Qr c2VydmVyLmNybC5kYiIsCiAJIkNSTCB3aXRoIGEgbm9uLXJldm9rZWQgY2VydCIpOwogCiAjIFRo ZSBzYW1lIGZvciBDUkwgZGlyZWN0b3J5CiAkbm9kZS0+Y29ubmVjdF9vaygKLQkiJGNvbW1vbl9j b25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnkt Y2Egc3NsY3JsZGlyPXNzbC9yb290K3NlcnZlci1jcmxkaXIiLAorCSIkY29tbW9uX2Nvbm5zdHIg c3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xj cmxkaXI9c3NsL3Jvb3Qrc2VydmVyLWNybGRpciBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2Vy dmVyX2NhLmNydF9fcm9vdCtzZXJ2ZXIuY3JsZGlyLmRiIiwKIAkiZGlyZWN0b3J5IENSTCB3aXRo IGEgbm9uLXJldm9rZWQgY2VydCIpOwogCiAjIENoZWNrIHRoYXQgY29ubmVjdGluZyB3aXRoIHZl cmlmeS1mdWxsIGZhaWxzLCB3aGVuIHRoZSBob3N0bmFtZSBkb2Vzbid0CiAjIG1hdGNoIHRoZSBo b3N0bmFtZSBpbiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuCiAkY29tbW9uX2Nvbm5zdHIgPQot ICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9v dGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIiOwor ICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9v dGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgc3Ns ZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiOwogCiAkbm9kZS0+Y29ubmVj dF9vaygiJGNvbW1vbl9jb25uc3RyIHNzbG1vZGU9cmVxdWlyZSBob3N0PXdyb25naG9zdC50ZXN0 IiwKIAkibWlzbWF0Y2ggYmV0d2VlbiBob3N0IG5hbWUgYW5kIHNlcnZlciBjZXJ0aWZpY2F0ZSBz c2xtb2RlPXJlcXVpcmUiKTsKQEAgLTIwNCwxNCArMjc5LDE0IEBAICRub2RlLT5jb25uZWN0X2Zh aWxzKAogCSIkY29tbW9uX2Nvbm5zdHIgc3NsbW9kZT12ZXJpZnktZnVsbCBob3N0PXdyb25naG9z dC50ZXN0IiwKIAkibWlzbWF0Y2ggYmV0d2VlbiBob3N0IG5hbWUgYW5kIHNlcnZlciBjZXJ0aWZp Y2F0ZSBzc2xtb2RlPXZlcmlmeS1mdWxsIiwKIAlleHBlY3RlZF9zdGRlcnIgPT4KLQkgIHFyL1xR c2VydmVyIGNlcnRpZmljYXRlIGZvciAiY29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiBkb2Vz IG5vdCBtYXRjaCBob3N0IG5hbWUgIndyb25naG9zdC50ZXN0IlxFLworCSAgcXIvXFFzZXJ2ZXIg Y2VydGlmaWNhdGUgZm9yICJjb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIGRvZXMgbm90IG1h dGNoIGhvc3QgbmFtZSAid3Jvbmdob3N0LnRlc3QiXEV8cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRv ZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS8KICk7CiAKICMgVGVzdCBTdWJq ZWN0IEFsdGVybmF0aXZlIE5hbWVzLgotc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVy LW11bHRpcGxlLWFsdC1uYW1lcycpOworc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCBjZXJ0Zmls ZSA9PiAnc2VydmVyLW11bHRpcGxlLWFsdC1uYW1lcycsIG5zc2RhdGFiYXNlID0+ICdzZXJ2ZXIt bXVsdGlwbGUtYWx0LW5hbWVzLmNydF9fc2VydmVyLW11bHRpcGxlLWFsdC1uYW1lcy5rZXkuZGIn KTsKIAogJGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0 ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9z dGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5LWZ1bGwiOworICAidXNlcj1zc2x0 ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jv b3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgc3NsbW9kZT12ZXJpZnkt ZnVsbCBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiI7CiAKICRub2Rl LT5jb25uZWN0X29rKAogCSIkY29tbW9uX2Nvbm5zdHIgaG9zdD1kbnMxLmFsdC1uYW1lLnBnLXNz bHRlc3QudGVzdCIsCkBAIC0yMjYsMjEgKzMwMSwyMiBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygK IAkiJGNvbW1vbl9jb25uc3RyIGhvc3Q9d3Jvbmdob3N0LmFsdC1uYW1lLnBnLXNzbHRlc3QudGVz dCIsCiAJImhvc3QgbmFtZSBub3QgbWF0Y2hpbmcgd2l0aCBYLjUwOSBTdWJqZWN0IEFsdGVybmF0 aXZlIE5hbWVzIiwKIAlleHBlY3RlZF9zdGRlcnIgPT4KLQkgIHFyL1xRc2VydmVyIGNlcnRpZmlj YXRlIGZvciAiZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQgMiBvdGhlciBuYW1l cykgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QuYWx0LW5hbWUucGctc3NsdGVz dC50ZXN0IlxFLworCSAgcXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJkbnMxLmFsdC1uYW1l LnBnLXNzbHRlc3QudGVzdCIgKGFuZCAyIG90aGVyIG5hbWVzKSBkb2VzIG5vdCBtYXRjaCBob3N0 IG5hbWUgIndyb25naG9zdC5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiXEV8cmVxdWVzdGVkIGRv bWFpbiBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS8KICk7CisK ICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCSIkY29tbW9uX2Nvbm5zdHIgaG9zdD1kZWVwLnN1YmRv bWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRlc3QiLAogCSJob3N0IG5hbWUgbm90IG1hdGNoaW5n IHdpdGggWC41MDkgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcyB3aWxkY2FyZCIsCiAJZXhwZWN0 ZWRfc3RkZXJyID0+Ci0JICBxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRuczEuYWx0LW5h bWUucGctc3NsdGVzdC50ZXN0IiAoYW5kIDIgb3RoZXIgbmFtZXMpIGRvZXMgbm90IG1hdGNoIGhv c3QgbmFtZSAiZGVlcC5zdWJkb21haW4ud2lsZGNhcmQucGctc3NsdGVzdC50ZXN0IlxFLworCSAg cXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJkbnMxLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVz dCIgKGFuZCAyIG90aGVyIG5hbWVzKSBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUgImRlZXAuc3Vi ZG9tYWluLndpbGRjYXJkLnBnLXNzbHRlc3QudGVzdCJcRXxyZXF1ZXN0ZWQgZG9tYWluIG5hbWUg ZG9lcyBub3QgbWF0Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLwogKTsKIAogIyBUZXN0IGNl cnRpZmljYXRlIHdpdGggYSBzaW5nbGUgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lLiAodGhpcyBn aXZlcyBhCiAjIHNsaWdodGx5IGRpZmZlcmVudCBlcnJvciBtZXNzYWdlLCB0aGF0J3MgYWxsKQot c3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLXNpbmdsZS1hbHQtbmFtZScpOworc3dp dGNoX3NlcnZlcl9jZXJ0KCRub2RlLCBjZXJ0ZmlsZSA9PiAnc2VydmVyLXNpbmdsZS1hbHQtbmFt ZScsIG5zc2RhdGFiYXNlID0+ICdzZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmNydF9fc2VydmVyLXNp bmdsZS1hbHQtbmFtZS5rZXkuZGInKTsKIAogJGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9c3Ns dGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5 LWZ1bGwiOworICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFs aWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9T VEFERFIgc3NsbW9kZT12ZXJpZnktZnVsbCBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVy X2NhLmNydC5kYiI7CiAKICRub2RlLT5jb25uZWN0X29rKAogCSIkY29tbW9uX2Nvbm5zdHIgaG9z dD1zaW5nbGUuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiwKQEAgLTI1MCwyMSArMzI2LDIxIEBA ICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCSIkY29tbW9uX2Nvbm5zdHIgaG9zdD13cm9uZ2hvc3Qu YWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiwKIAkiaG9zdCBuYW1lIG5vdCBtYXRjaGluZyB3aXRo IGEgc2luZ2xlIFguNTA5IFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZSIsCiAJZXhwZWN0ZWRfc3Rk ZXJyID0+Ci0JICBxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgInNpbmdsZS5hbHQtbmFtZS5w Zy1zc2x0ZXN0LnRlc3QiIGRvZXMgbm90IG1hdGNoIGhvc3QgbmFtZSAid3Jvbmdob3N0LmFsdC1u YW1lLnBnLXNzbHRlc3QudGVzdCJcRS8KKwkgIHFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAi c2luZ2xlLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1l ICJ3cm9uZ2hvc3QuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21haW4g bmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUvCiApOwogJG5vZGUt PmNvbm5lY3RfZmFpbHMoCiAJIiRjb21tb25fY29ubnN0ciBob3N0PWRlZXAuc3ViZG9tYWluLndp bGRjYXJkLnBnLXNzbHRlc3QudGVzdCIsCiAJImhvc3QgbmFtZSBub3QgbWF0Y2hpbmcgd2l0aCBh IHNpbmdsZSBYLjUwOSBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWUgd2lsZGNhcmQiLAogCWV4cGVj dGVkX3N0ZGVyciA9PgotCSAgcXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJzaW5nbGUuYWx0 LW5hbWUucGctc3NsdGVzdC50ZXN0IiBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUgImRlZXAuc3Vi ZG9tYWluLndpbGRjYXJkLnBnLXNzbHRlc3QudGVzdCJcRS8KKwkgIHFyL1xRc2VydmVyIGNlcnRp ZmljYXRlIGZvciAic2luZ2xlLmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIgZG9lcyBub3QgbWF0 Y2ggaG9zdCBuYW1lICJkZWVwLnN1YmRvbWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRlc3QiXEV8 cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZp Y2F0ZS8sCiApOwogCiAjIFRlc3Qgc2VydmVyIGNlcnRpZmljYXRlIHdpdGggYSBDTiBhbmQgU0FO cy4gUGVyIFJGQ3MgMjgxOCBhbmQgNjEyNSwgdGhlIENOCiAjIHNob3VsZCBiZSBpZ25vcmVkIHdo ZW4gdGhlIGNlcnRpZmljYXRlIGhhcyBib3RoLgotc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAn c2VydmVyLWNuLWFuZC1hbHQtbmFtZXMnKTsKK3N3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwgY2Vy dGZpbGUgPT4gJ3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzJywgbnNzZGF0YWJhc2UgPT4gJ3NlcnZl ci1jbi1hbmQtYWx0LW5hbWVzLmNydF9fc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMua2V5LmRiJyk7 CiAKICRjb21tb25fY29ubnN0ciA9Ci0gICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRi IHNzbGNlcnQ9aW52YWxpZCBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3Rh ZGRyPSRTRVJWRVJIT1NUQUREUiBzc2xtb2RlPXZlcmlmeS1mdWxsIjsKKyAgInVzZXI9c3NsdGVz dHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9yb290 K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5LWZ1 bGwgc3NsZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiOwogCiAkbm9kZS0+ Y29ubmVjdF9vaygiJGNvbW1vbl9jb25uc3RyIGhvc3Q9ZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0 LnRlc3QiLAogCSJjZXJ0aWZpY2F0ZSB3aXRoIGJvdGggYSBDTiBhbmQgU0FOcyAxIik7CkBAIC0y NzQsNDMgKzM1MCw0MyBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAkiJGNvbW1vbl9jb25uc3Ry IGhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IiwKIAkiY2VydGlmaWNhdGUgd2l0aCBi b3RoIGEgQ04gYW5kIFNBTnMgaWdub3JlcyBDTiIsCiAJZXhwZWN0ZWRfc3RkZXJyID0+Ci0JICBx ci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRuczEuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0 IiAoYW5kIDEgb3RoZXIgbmFtZSkgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJjb21tb24tbmFt ZS5wZy1zc2x0ZXN0LnRlc3QiXEUvCisJICBxci9cUXNlcnZlciBjZXJ0aWZpY2F0ZSBmb3IgImRu czEuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiAoYW5kIDEgb3RoZXIgbmFtZSkgZG9lcyBub3Qg bWF0Y2ggaG9zdCBuYW1lICJjb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiXEV8cmVxdWVzdGVk IGRvbWFpbiBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS8KICk7 CiAKICMgRmluYWxseSwgdGVzdCBhIHNlcnZlciBjZXJ0aWZpY2F0ZSB0aGF0IGhhcyBubyBDTiBv ciBTQU5zLiBPZiBjb3Vyc2UsIHRoYXQncwogIyBub3QgYSB2ZXJ5IHNlbnNpYmxlIGNlcnRpZmlj YXRlLCBidXQgbGlicHEgc2hvdWxkIGhhbmRsZSBpdCBncmFjZWZ1bGx5Lgotc3dpdGNoX3NlcnZl cl9jZXJ0KCRub2RlLCAnc2VydmVyLW5vLW5hbWVzJyk7Citzd2l0Y2hfc2VydmVyX2NlcnQoJG5v ZGUsIGNlcnRmaWxlID0+ICdzZXJ2ZXItbm8tbmFtZXMnLCBuc3NkYXRhYmFzZSA9PiAnc2VydmVy LW5vLW5hbWVzLmNydF9fc2VydmVyLW5vLW5hbWVzLmtleS5kYicpOwogJGNvbW1vbl9jb25uc3Ry ID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNz bHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERS IjsKKyAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNz bHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERS IHNzbGRhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIjsKIAogJG5vZGUtPmNv bm5lY3Rfb2soCiAJIiRjb21tb25fY29ubnN0ciBzc2xtb2RlPXZlcmlmeS1jYSBob3N0PWNvbW1v bi1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCiAJInNlcnZlciBjZXJ0aWZpY2F0ZSB3aXRob3V0IENO IG9yIFNBTnMgc3NsbW9kZT12ZXJpZnktY2EiKTsKICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCSRj b21tb25fY29ubnN0ciAuICIgIgotCSAgLiAic3NsbW9kZT12ZXJpZnktZnVsbCBob3N0PWNvbW1v bi1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCisJLiAic3NsbW9kZT12ZXJpZnktZnVsbCBob3N0PWNv bW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCiAJInNlcnZlciBjZXJ0aWZpY2F0ZSB3aXRob3V0 IENOIG9yIFNBTnMgc3NsbW9kZT12ZXJpZnktZnVsbCIsCiAJZXhwZWN0ZWRfc3RkZXJyID0+Ci0J ICBxci9jb3VsZCBub3QgZ2V0IHNlcnZlcidzIGhvc3QgbmFtZSBmcm9tIHNlcnZlciBjZXJ0aWZp Y2F0ZS8pOworCSAgcXIvY291bGQgbm90IGdldCBzZXJ2ZXIncyBob3N0IG5hbWUgZnJvbSBzZXJ2 ZXIgY2VydGlmaWNhdGV8cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSBz ZXJ2ZXIncyBjZXJ0aWZpY2F0ZS4vKTsKIAogIyBUZXN0IHRoYXQgdGhlIENSTCB3b3Jrcwotc3dp dGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLXJldm9rZWQnKTsKK3N3aXRjaF9zZXJ2ZXJf Y2VydCgkbm9kZSwgY2VydGZpbGUgPT4gJ3NlcnZlci1yZXZva2VkJywgbnNzZGF0YWJhc2UgPT4g J3NlcnZlci1yZXZva2VkLmNydF9fc2VydmVyLXJldm9rZWQua2V5LmRiJyk7CiAKICRjb21tb25f Y29ubnN0ciA9CiAgICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIHNzbGNlcnQ9aW52 YWxpZCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgaG9zdD1jb21tb24tbmFtZS5wZy1zc2x0ZXN0 LnRlc3QiOwogCiAjIFdpdGhvdXQgdGhlIENSTCwgc3VjY2VlZHMuIFdpdGggaXQsIGZhaWxzLgog JG5vZGUtPmNvbm5lY3Rfb2soCi0JIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvcm9v dCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNz bHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsZGF0 YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAogCSJjb25uZWN0cyB3aXRob3V0 IGNsaWVudC1zaWRlIENSTCIpOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMoCi0JIiRjb21tb25fY29u bnN0ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNh IHNzbGNybD1zc2wvcm9vdCtzZXJ2ZXIuY3JsIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3Rj ZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsPXNzbC9y b290K3NlcnZlci5jcmwgc3NsZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3Jv b3Qrc2VydmVyLmNybC5kYiIsCiAJImRvZXMgbm90IGNvbm5lY3Qgd2l0aCBjbGllbnQtc2lkZSBD UkwgZmlsZSIsCi0JZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NTTCBlcnJvcjogY2VydGlmaWNhdGUg dmVyaWZ5IGZhaWxlZC8pOworCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IGNlcnRp ZmljYXRlIHZlcmlmeSBmYWlsZWR8U1NMIGVycm9yOiBQZWVyJ3MgQ2VydGlmaWNhdGUgaGFzIGJl ZW4gcmV2b2tlZC8pOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMoCi0JIiRjb21tb25fY29ubnN0ciBz c2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNzbGNy bGRpcj1zc2wvcm9vdCtzZXJ2ZXItY3JsZGlyIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3Rj ZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2Egc3NsY3JsZGlyPXNz bC9yb290K3NlcnZlci1jcmxkaXIgc3NsZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5j cnRfX3Jvb3Qrc2VydmVyLmNybGRpci5kYiIsCiAJImRvZXMgbm90IGNvbm5lY3Qgd2l0aCBjbGll bnQtc2lkZSBDUkwgZGlyZWN0b3J5IiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9y OiBjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkLyk7CisJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL1NT TCBlcnJvcjogY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZHxTU0wgZXJyb3I6IFBlZXIncyBDZXJ0 aWZpY2F0ZSBoYXMgYmVlbiByZXZva2VkLyk7CiAKICMgcGdfc3RhdF9zc2wKIGNvbW1hbmRfbGlr ZSgKQEAgLTMyOCwyOSArNDA0LDQ2IEBAIGNvbW1hbmRfbGlrZSgKIAogIyBUZXN0IG1pbi9tYXgg U1NMIHByb3RvY29sIHZlcnNpb25zLgogJG5vZGUtPmNvbm5lY3Rfb2soCi0JIiRjb21tb25fY29u bnN0ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBz c2xfbWluX3Byb3RvY29sX3ZlcnNpb249VExTdjEuMiBzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb249 VExTdjEuMiIsCisJIiRjb21tb25fY29ubnN0ciBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJf Y2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb249VExTdjEuMiBz c2xfbWF4X3Byb3RvY29sX3ZlcnNpb249VExTdjEuMiBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qr c2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Rpb24gc3VjY2VzcyB3aXRoIGNvcnJlY3QgcmFu Z2Ugb2YgVExTIHByb3RvY29sIHZlcnNpb25zIik7CiAkbm9kZS0+Y29ubmVjdF9mYWlscygKLQki JGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9k ZT1yZXF1aXJlIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4yIHNzbF9tYXhfcHJvdG9j b2xfdmVyc2lvbj1UTFN2MS4xIiwKKwkiJGNvbW1vbl9jb25uc3RyIHNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lv bj1UTFN2MS4yIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4xIHNzbGRhdGFiYXNlPXNz bC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAkiY29ubmVjdGlvbiBmYWlsdXJlIHdpdGgg aW5jb3JyZWN0IHJhbmdlIG9mIFRMUyBwcm90b2NvbCB2ZXJzaW9ucyIsCiAJZXhwZWN0ZWRfc3Rk ZXJyID0+IHFyL2ludmFsaWQgU1NMIHByb3RvY29sIHZlcnNpb24gcmFuZ2UvKTsKICRub2RlLT5j b25uZWN0X2ZhaWxzKAotCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2Vy dmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uPWluY29y cmVjdF90bHMiLAorCSIkY29tbW9uX2Nvbm5zdHIgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVy X2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uPWluY29ycmVj dF90bHMgc3NsZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAogCSJjb25u ZWN0aW9uIGZhaWx1cmUgd2l0aCBhbiBpbmNvcnJlY3QgU1NMIHByb3RvY29sIG1pbmltdW0gYm91 bmQiLAogCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9pbnZhbGlkIHNzbF9taW5fcHJvdG9jb2xfdmVy c2lvbiB2YWx1ZS8pOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMoCi0JIiRjb21tb25fY29ubnN0ciBz c2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xfbWF4 X3Byb3RvY29sX3ZlcnNpb249aW5jb3JyZWN0X3RscyIsCisJIiRjb21tb25fY29ubnN0ciBzc2xy b290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xfbWF4X3By b3RvY29sX3ZlcnNpb249aW5jb3JyZWN0X3RscyBzc2xkYXRhYmFzZT1zc2wvbnNzL3Jvb3Qrc2Vy dmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Rpb24gZmFpbHVyZSB3aXRoIGFuIGluY29ycmVjdCBT U0wgcHJvdG9jb2wgbWF4aW11bSBib3VuZCIsCiAJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2ludmFs aWQgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uIHZhbHVlLyk7CiAKKyMgdGVzdHMgb2YgTlNTIGdl bmVyYXRlZCBjZXJ0aWZpY2F0ZXMva2V5cworU0tJUDoKK3sKKwlza2lwICJOU1Mgc3BlY2lmaWMg dGVzdHMiLCAgICAgICAgICAgIDEgaWYgKCRvcGVuc3NsKTsKKworCXN3aXRjaF9zZXJ2ZXJfY2Vy dCgkbm9kZSwgY2VydGZpbGUgPT4gJ25hdGl2ZV9zZXJ2ZXItcm9vdCcsIGNhZmlsZSA9PiAnbmF0 aXZlX2NhLXJvb3QnLCBuc3NkYXRhYmFzZSA9PiAnbmF0aXZlX3NlcnZlci1yb290LmRiJyk7CisJ JGNvbW1vbl9jb25uc3RyID0KKwkgICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIGhv c3RhZGRyPSRTRVJWRVJIT1NUQUREUiBob3N0PWNvbW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCI7 CisKKwkkbm9kZS0+Y29ubmVjdF9vaygKKwkJIiRjb21tb25fY29ubnN0ciBzc2xtb2RlPXJlcXVp cmUgdXNlcj1zc2x0ZXN0dXNlciIsCisJCSJOU1MgZ2VuZXJhdGVkIGNlcnRpZmljYXRlcyIKKwkp OworfQorCiAjIyMgU2VydmVyLXNpZGUgdGVzdHMuCiAjIyMKICMjIyBUZXN0IGNlcnRpZmljYXRl IGF1dGhvcml6YXRpb24uCiAKK3N3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwgY2VydGZpbGUgPT4g J3NlcnZlci1yZXZva2VkJywgbnNzZGF0YWJhc2UgPT4gJ3NlcnZlci1yZXZva2VkLmNydF9fc2Vy dmVyLXJldm9rZWQua2V5LmRiJyk7CisKIG5vdGUgInJ1bm5pbmcgc2VydmVyIHRlc3RzIjsKIAog JGNvbW1vbl9jb25uc3RyID0KLSAgInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQg c3NsbW9kZT1yZXF1aXJlIGRibmFtZT1jZXJ0ZGIgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIjsK KyAgInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIGRi bmFtZT1jZXJ0ZGIgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbGRhdGFiYXNlPXNzbC9uc3Mv Y2xpZW50LmNydF9fY2xpZW50LmtleS5kYiI7CiAKICMgbm8gY2xpZW50IGNlcnQKICRub2RlLT5j b25uZWN0X2ZhaWxzKApAQCAtMzY0LDYyICs0NTcsODIgQEAgJG5vZGUtPmNvbm5lY3Rfb2soCiAJ ImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0IGNsaWVudCBj ZXJ0IGluIFBFTSBmb3JtYXQiCiApOwogCi0jIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gdW5lbmNy eXB0ZWQgREVSCi0kbm9kZS0+Y29ubmVjdF9vaygKLQkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3Ns dGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudC1kZXJfdG1w LmtleSIsCi0JImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0 IGNsaWVudCBjZXJ0IGluIERFUiBmb3JtYXQiCi0pOworU0tJUDoKK3sKKwlza2lwICJBdXRvbWF0 aWMgY2VydGlmaWNhdGUgcmVzb2x1dGlvbiBpcyBOU1Mgc3BlY2lmaWMiLCAxIGlmICgkb3BlbnNz bCk7CisJIyBjb3JyZWN0IGNsaWVudCBjZXJ0IGluIHVuZW5jcnlwdGVkIFBFTSB3aXRob3V0IGEg bmlja25hbWUgKHNzbGNlcnQpCisJJG5vZGUtPmNvbm5lY3Rfb2soCisJCSIkY29tbW9uX2Nvbm5z dHIgdXNlcj1zc2x0ZXN0dXNlciIsCisJCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2Nl ZWRzIHdpdGhvdXQgY29ycmVjdCBjbGllbnQgY2VydCBpbiBjb25uc3RyaW5nIgorCSk7Cit9CisK K1NLSVA6Cit7CisJc2tpcCAiTlNTIGRhdGFiYXNlIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgTWFr ZWZpbGUiLCAxIGlmICgkbnNzKTsKKwkjIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gdW5lbmNyeXB0 ZWQgREVSCisJJG5vZGUtPmNvbm5lY3Rfb2soCisJCSIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0 ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xpZW50LWRlcl90bXAu a2V5IiwKKwkJImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0 IGNsaWVudCBjZXJ0IGluIERFUiBmb3JtYXQiCisJKTsKK30KIAogIyBjb3JyZWN0IGNsaWVudCBj ZXJ0IGluIGVuY3J5cHRlZCBQRU0KICRub2RlLT5jb25uZWN0X29rKAotCSIkY29tbW9uX2Nvbm5z dHIgdXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xp ZW50LWVuY3J5cHRlZC1wZW1fdG1wLmtleSBzc2xwYXNzd29yZD0nZFVtbXlQXiMrJyIsCisJIiRj b21tb25fY29ubnN0ciB1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Ns a2V5PXNzbC9jbGllbnQtZW5jcnlwdGVkLXBlbV90bXAua2V5IHNzbHBhc3N3b3JkPSdkVW1teVBe IysnIHNzbGRhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50LWVuY3J5cHRlZC1wZW0u a2V5LmRiIiwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBzdWNjZWVkcyB3aXRoIGNvcnJl Y3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIFBFTSBmb3JtYXQiCiApOwogCi0jIGNvcnJlY3Qg Y2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIERFUgotJG5vZGUtPmNvbm5lY3Rfb2soCi0JIiRjb21t b25fY29ubnN0ciB1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5 PXNzbC9jbGllbnQtZW5jcnlwdGVkLWRlcl90bXAua2V5IHNzbHBhc3N3b3JkPSdkVW1teVBeIysn IiwKLQkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBzdWNjZWVkcyB3aXRoIGNvcnJlY3QgY2xp ZW50IGNlcnQgaW4gZW5jcnlwdGVkIERFUiBmb3JtYXQiCi0pOworU0tJUDoKK3sKKwlza2lwICJO U1MgZGF0YWJhc2Ugbm90IGltcGxlbWVudGVkIGluIHRoZSBNYWtlZmlsZSIsIDEgaWYgKCRuc3Mp OworCSMgY29ycmVjdCBjbGllbnQgY2VydCBpbiBlbmNyeXB0ZWQgREVSCisJJG5vZGUtPmNvbm5l Y3Rfb2soCisJCSIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9j bGllbnQuY3J0IHNzbGtleT1zc2wvY2xpZW50LWVuY3J5cHRlZC1kZXJfdG1wLmtleSBzc2xwYXNz d29yZD0nZFVtbXlQXiMrJyIsCisJCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRz IHdpdGggY29ycmVjdCBjbGllbnQgY2VydCBpbiBlbmNyeXB0ZWQgREVSIGZvcm1hdCIKKwkpOwor fQogCiAjIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIFBFTSB3aXRoIHdyb25nIHBh c3N3b3JkCiAkbm9kZS0+Y29ubmVjdF9mYWlscygKLQkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3Ns dGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudC1lbmNyeXB0 ZWQtcGVtX3RtcC5rZXkgc3NscGFzc3dvcmQ9J3dyb25nJyIsCisJIiRjb21tb25fY29ubnN0ciB1 c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PXNzbC9jbGllbnQt ZW5jcnlwdGVkLXBlbV90bXAua2V5IHNzbHBhc3N3b3JkPSd3cm9uZycgc3NsZGF0YWJhc2U9c3Ns L25zcy9jbGllbnQuY3J0X19jbGllbnQtZW5jcnlwdGVkLXBlbS5rZXkuZGIiLAogCSJjZXJ0aWZp Y2F0ZSBhdXRob3JpemF0aW9uIGZhaWxzIHdpdGggY29ycmVjdCBjbGllbnQgY2VydCBhbmQgd3Jv bmcgcGFzc3dvcmQgaW4gZW5jcnlwdGVkIFBFTSBmb3JtYXQiLAogCWV4cGVjdGVkX3N0ZGVyciA9 PgotCSAgcXIhXFFwcml2YXRlIGtleSBmaWxlICJzc2wvY2xpZW50LWVuY3J5cHRlZC1wZW1fdG1w LmtleSI6IGJhZCBkZWNyeXB0XEUhCisJICBxciFjb25uZWN0aW9uIHJlcXVpcmVzIGEgdmFsaWQg Y2xpZW50IGNlcnRpZmljYXRlfFxRcHJpdmF0ZSBrZXkgZmlsZSAic3NsL2NsaWVudC1lbmNyeXB0 ZWQtcGVtX3RtcC5rZXkiOiBiYWQgZGVjcnlwdFxFISwKICk7CiAKLQotIyBjb3JyZWN0IGNsaWVu dCBjZXJ0IHVzaW5nIHdob2xlIEROCi1teSAkZG5fY29ubnN0ciA9ICIkY29tbW9uX2Nvbm5zdHIg ZGJuYW1lPWNlcnRkYl9kbiI7Ci0KLSRub2RlLT5jb25uZWN0X29rKAotCSIkZG5fY29ubnN0ciB1 c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC1kbi5jcnQgc3Nsa2V5PXNzbC9jbGll bnQtZG5fdG1wLmtleSIsCi0JImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0 aCBETiBtYXBwaW5nIiwKLQlsb2dfbGlrZSA9PiBbCi0JCXFyL2Nvbm5lY3Rpb24gYXV0aGVudGlj YXRlZDogaWRlbnRpdHk9IkNOPXNzbHRlc3R1c2VyLWRuLE9VPVRlc3RpbmcsT1U9RW5naW5lZXJp bmcsTz1QR0RHIiBtZXRob2Q9Y2VydC8KLQldLCk7Ci0KLSMgc2FtZSB0aGluZyBidXQgd2l0aCBh IHJlZ2V4Ci0kZG5fY29ubnN0ciA9ICIkY29tbW9uX2Nvbm5zdHIgZGJuYW1lPWNlcnRkYl9kbl9y ZSI7Ci0KLSRub2RlLT5jb25uZWN0X29rKAotCSIkZG5fY29ubnN0ciB1c2VyPXNzbHRlc3R1c2Vy IHNzbGNlcnQ9c3NsL2NsaWVudC1kbi5jcnQgc3Nsa2V5PXNzbC9jbGllbnQtZG5fdG1wLmtleSIs Ci0JImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBETiByZWdleCBtYXBw aW5nIik7Ci0KLSMgc2FtZSB0aGluZyBidXQgdXNpbmcgZXhwbGljaXQgQ04KLSRkbl9jb25uc3Ry ID0gIiRjb21tb25fY29ubnN0ciBkYm5hbWU9Y2VydGRiX2NuIjsKLQotJG5vZGUtPmNvbm5lY3Rf b2soCi0JIiRkbl9jb25uc3RyIHVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LWRu LmNydCBzc2xrZXk9c3NsL2NsaWVudC1kbl90bXAua2V5IiwKLQkiY2VydGlmaWNhdGUgYXV0aG9y aXphdGlvbiBzdWNjZWVkcyB3aXRoIENOIG1hcHBpbmciLAotCSMgdGhlIGZ1bGwgRE4gc2hvdWxk IHN0aWxsIGJlIHVzZWQgYXMgdGhlIGF1dGhlbnRpY2F0ZWQgaWRlbnRpdHkKLQlsb2dfbGlrZSA9 PiBbCi0JCXFyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRlZDogaWRlbnRpdHk9IkNOPXNzbHRlc3R1 c2VyLWRuLE9VPVRlc3RpbmcsT1U9RW5naW5lZXJpbmcsTz1QR0RHIiBtZXRob2Q9Y2VydC8KLQld LCk7Ci0KLQorU0tJUDoKK3sKKwlza2lwICJETiBtYXBwaW5nIG5vdCBpbXBsZW1lbnRlZCBpbiBO U1MiLCAgICAgICAgICAgIDMgaWYgKCRuc3MpOworCisJIyBjb3JyZWN0IGNsaWVudCBjZXJ0IHVz aW5nIHdob2xlIEROCisJbXkgJGRuX2Nvbm5zdHIgPSAiJGNvbW1vbl9jb25uc3RyIGRibmFtZT1j ZXJ0ZGJfZG4iOworCisJJG5vZGUtPmNvbm5lY3Rfb2soCisJCSIkZG5fY29ubnN0ciB1c2VyPXNz bHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC1kbi5jcnQgc3Nsa2V5PXNzbC9jbGllbnQtZG5f dG1wLmtleSIsCisJCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRzIHdpdGggRE4g bWFwcGluZyIsCisJCWxvZ19saWtlID0+IFsKKwkJCXFyL2Nvbm5lY3Rpb24gYXV0aGVudGljYXRl ZDogaWRlbnRpdHk9IkNOPXNzbHRlc3R1c2VyLWRuLE9VPVRlc3RpbmcsT1U9RW5naW5lZXJpbmcs Tz1QR0RHIiBtZXRob2Q9Y2VydC8KKwkJXSwpOworCisJIyBzYW1lIHRoaW5nIGJ1dCB3aXRoIGEg cmVnZXgKKwkkZG5fY29ubnN0ciA9ICIkY29tbW9uX2Nvbm5zdHIgZGJuYW1lPWNlcnRkYl9kbl9y ZSI7CisKKwkkbm9kZS0+Y29ubmVjdF9vaygKKwkJIiRkbl9jb25uc3RyIHVzZXI9c3NsdGVzdHVz ZXIgc3NsY2VydD1zc2wvY2xpZW50LWRuLmNydCBzc2xrZXk9c3NsL2NsaWVudC1kbl90bXAua2V5 IiwKKwkJImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBDTiBtYXBwaW5n IiwKKwkJIyB0aGUgZnVsbCBETiBzaG91bGQgc3RpbGwgYmUgdXNlZCBhcyB0aGUgYXV0aGVudGlj YXRlZCBpZGVudGl0eQorCQlsb2dfbGlrZSA9PiBbCisJCQlxci9jb25uZWN0aW9uIGF1dGhlbnRp Y2F0ZWQ6IGlkZW50aXR5PSJDTj1zc2x0ZXN0dXNlci1kbixPVT1UZXN0aW5nLE9VPUVuZ2luZWVy aW5nLE89UEdERyIgbWV0aG9kPWNlcnQvCisJCV0sKTsKKworCSMgc2FtZSB0aGluZyBidXQgdXNp bmcgZXhwbGljaXQgQ04KKwkkZG5fY29ubnN0ciA9ICIkY29tbW9uX2Nvbm5zdHIgZGJuYW1lPWNl cnRkYl9jbiI7CisKKwkkbm9kZS0+Y29ubmVjdF9vaygKKwkJIiRkbl9jb25uc3RyIHVzZXI9c3Ns dGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LWRuLmNydCBzc2xrZXk9c3NsL2NsaWVudC1kbl90 bXAua2V5IiwKKwkJImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBDTiBt YXBwaW5nIik7Cit9CiAKIFRPRE86CiB7CkBAIC00NTcsMTggKzU3MCwxOSBAQCBjb21tYW5kX2xp a2UoCiAJCSctUCcsCiAJCSdudWxsPV9udWxsXycsCiAJCSctZCcsCi0JCSIkY29tbW9uX2Nvbm5z dHIgdXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xp ZW50X3RtcC5rZXkiLAorCQkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3NsdGVzdHVzZXIgc3NsY2Vy dD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IHNzbGRhdGFiYXNlPXNz bC9uc3MvY2xpZW50LmNydF9fY2xpZW50LmtleS5kYiIsCiAJCSctYycsCiAJCSJTRUxFQ1QgKiBG Uk9NIHBnX3N0YXRfc3NsIFdIRVJFIHBpZCA9IHBnX2JhY2tlbmRfcGlkKCkiCiAJXSwKIAlxcnte cGlkLHNzbCx2ZXJzaW9uLGNpcGhlcixiaXRzLGNsaWVudF9kbixjbGllbnRfc2VyaWFsLGlzc3Vl cl9kblxyP1xuCi0JCQkJXlxkKyx0LFRMU3ZbXGQuXSssW1x3LV0rLFxkKywvQ049c3NsdGVzdHVz ZXIsMSxcUS9DTj1UZXN0IENBIGZvciBQb3N0Z3JlU1FMIFNTTCByZWdyZXNzaW9uIHRlc3QgY2xp ZW50IGNlcnRzXEVccj8kfW14LAorCQkJCV5cZCssdCxUTFN2W1xkLl0rLFtcdy1dKyxcZCssLz9D Tj1zc2x0ZXN0dXNlciwxLC8/XFFDTj1UZXN0IENBIGZvciBQb3N0Z3JlU1FMIFNTTCByZWdyZXNz aW9uIHRlc3QgY2xpZW50IGNlcnRzXEVccj8kfW14LAogCSdwZ19zdGF0X3NzbCB3aXRoIGNsaWVu dCBjZXJ0aWZpY2F0ZScpOwogCiAjIGNsaWVudCBrZXkgd2l0aCB3cm9uZyBwZXJtaXNzaW9ucwog U0tJUDoKIHsKIAlza2lwICJQZXJtaXNzaW9ucyBjaGVjayBub3QgZW5mb3JjZWQgb24gV2luZG93 cyIsIDIgaWYgKCR3aW5kb3dzX29zKTsKKwlza2lwICJLZXkgbm90IG9uIGZpbGVzeXN0ZW0gd2l0 aCBOU1MiLCAgICAgICAgICAgIDIgaWYgKCRuc3MpOwogCiAJJG5vZGUtPmNvbm5lY3RfZmFpbHMo CiAJCSIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQu Y3J0IHNzbGtleT1zc2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSIsCkBAIC00ODMsMTYgKzU5 NywyMCBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAkiJGNvbW1vbl9jb25uc3RyIHVzZXI9YW5v dGhlcnVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5 IiwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3aXRoIGNsaWVudCBjZXJ0IGJl bG9uZ2luZyB0byBhbm90aGVyIHVzZXIiLAogCWV4cGVjdGVkX3N0ZGVyciA9PgotCSAgcXIvY2Vy dGlmaWNhdGUgYXV0aGVudGljYXRpb24gZmFpbGVkIGZvciB1c2VyICJhbm90aGVydXNlciIvLAor CSAgcXIvdW5hYmxlIHRvIHZlcmlmeSBjZXJ0aWZpY2F0ZXxjZXJ0aWZpY2F0ZSBhdXRoZW50aWNh dGlvbiBmYWlsZWQgZm9yIHVzZXIgImFub3RoZXJ1c2VyIi8sCiAJIyBjZXJ0aWZpY2F0ZSBhdXRo ZW50aWNhdGlvbiBzaG91bGQgYmUgbG9nZ2VkIGV2ZW4gb24gZmFpbHVyZQogCWxvZ19saWtlID0+ CiAJICBbcXIvY29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOiBpZGVudGl0eT0iQ049c3NsdGVzdHVz ZXIiIG1ldGhvZD1jZXJ0L10sKTsKIAorJGNvbW1vbl9jb25uc3RyID0KKyAgInNzbHJvb3RjZXJ0 PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIGRibmFtZT1jZXJ0ZGIgaG9z dGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbGRhdGFiYXNlPXNzbC9uc3MvY2xpZW50LXJldm9rZWQu Y3J0X19jbGllbnQtcmV2b2tlZC5rZXkuZGIiOworCiAjIHJldm9rZWQgY2xpZW50IGNlcnQKICRu b2RlLT5jb25uZWN0X2ZhaWxzKAogCSIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0ZXN0dXNlciBz c2xjZXJ0PXNzbC9jbGllbnQtcmV2b2tlZC5jcnQgc3Nsa2V5PXNzbC9jbGllbnQtcmV2b2tlZF90 bXAua2V5IiwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3aXRoIHJldm9rZWQg Y2xpZW50IGNlcnQiLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IHNzbHYzIGFs ZXJ0IGNlcnRpZmljYXRlIHJldm9rZWQvLAorCWV4cGVjdGVkX3N0ZGVyciA9PgorCSAgcXIvU1NM IGVycm9yOiBzc2x2MyBhbGVydCBjZXJ0aWZpY2F0ZSByZXZva2VkfFNTTCBlcnJvcjogUGVlcidz IGNlcnRpZmljYXRlIGlzc3VlciBoYXMgYmVlbiBtYXJrZWQgYXMgbm90IHRydXN0ZWQgYnkgdGhl IHVzZXIvLAogCSMgcmV2b2tlZCBjZXJ0aWZpY2F0ZXMgc2hvdWxkIG5vdCBhdXRoZW50aWNhdGUg dGhlIHVzZXIKIAlsb2dfdW5saWtlID0+IFtxci9jb25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6L10s KTsKIApAQCAtNTAwLDcgKzYxOCw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogIyB3b3Jrcywg aWZmIHVzZXJuYW1lIG1hdGNoZXMgQ29tbW9uIE5hbWUKICMgZmFpbHMsIGlmZiB1c2VybmFtZSBk b2Vzbid0IG1hdGNoIENvbW1vbiBOYW1lLgogJGNvbW1vbl9jb25uc3RyID0KLSAgInNzbHJvb3Rj ZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIGRibmFtZT12ZXJpZnlk YiBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIiOworICAic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2Vy dmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgZGJuYW1lPXZlcmlmeWRiIGhvc3RhZGRyPSRTRVJW RVJIT1NUQUREUiBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5rZXkuZGIi OwogCiAkbm9kZS0+Y29ubmVjdF9vaygKIAkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3NsdGVzdHVz ZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IiwKQEAg LTUyNSw5ICs2NDMsOSBAQCAkbm9kZS0+Y29ubmVjdF9vaygKIAlsb2dfdW5saWtlID0+IFtxci9j b25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6L10sKTsKIAogIyBpbnRlcm1lZGlhdGUgY2xpZW50X2Nh LmNydCBpcyBwcm92aWRlZCBieSBjbGllbnQsIGFuZCBpc24ndCBpbiBzZXJ2ZXIncyBzc2xfY2Ff ZmlsZQotc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAncm9vdF9j YScpOworc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCBjZXJ0ZmlsZSA9PiAnc2VydmVyLWNuLW9u bHknLCBjYWZpbGUgPT4gJ3Jvb3RfY2EnLCBuc3NkYXRhYmFzZSA9PiAnc2VydmVyLWNuLW9ubHku Y3J0X19zZXJ2ZXItY24tb25seS5rZXkuZGInKTsKICRjb21tb25fY29ubnN0ciA9Ci0gICJ1c2Vy PXNzbHRlc3R1c2VyIGRibmFtZT1jZXJ0ZGIgc3Nsa2V5PXNzbC9jbGllbnRfdG1wLmtleSBzc2xy b290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiI7 CisgICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT1jZXJ0ZGIgc3Nsa2V5PXNzbC9jbGllbnRfdG1w LmtleSBzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJI T1NUQUREUiBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudCtjbGllbnRfY2EuY3J0X19jbGllbnQu a2V5LmRiIjsKIAogJG5vZGUtPmNvbm5lY3Rfb2soCiAJIiRjb21tb25fY29ubnN0ciBzc2xtb2Rl PXJlcXVpcmUgc3NsY2VydD1zc2wvY2xpZW50K2NsaWVudF9jYS5jcnQiLApAQCAtNTM1LDE3ICs2 NTMsMTggQEAgJG5vZGUtPmNvbm5lY3Rfb2soCiAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAkkY29t bW9uX2Nvbm5zdHIgLiAiICIgLiAic3NsbW9kZT1yZXF1aXJlIHNzbGNlcnQ9c3NsL2NsaWVudC5j cnQiLAogCSJpbnRlcm1lZGlhdGUgY2xpZW50IGNlcnRpZmljYXRlIGlzIG1pc3NpbmciLAotCWV4 cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IHRsc3YxIGFsZXJ0IHVua25vd24gY2EvKTsK KwlleHBlY3RlZF9zdGRlcnIgPT4KKwkgIHFyL1NTTCBlcnJvcjogdGxzdjEgYWxlcnQgdW5rbm93 biBjYXxjb25uZWN0aW9uIHJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlLyk7CiAK ICMgdGVzdCBzZXJ2ZXItc2lkZSBDUkwgZGlyZWN0b3J5Ci1zd2l0Y2hfc2VydmVyX2NlcnQoJG5v ZGUsICdzZXJ2ZXItY24tb25seScsIHVuZGVmLCB1bmRlZiwKLQkncm9vdCtjbGllbnQtY3JsZGly Jyk7Citzd2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsIGNlcnRmaWxlID0+ICdzZXJ2ZXItY24tb25s eScsIGNybGRpciA9PiAncm9vdCtjbGllbnQtY3JsZGlyJywgbnNzZGF0YWJhc2UgPT4gJ3NlcnZl ci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmNybGRpci5kYicpOwogCiAjIHJldm9r ZWQgY2xpZW50IGNlcnQKICRub2RlLT5jb25uZWN0X2ZhaWxzKAotCSIkY29tbW9uX2Nvbm5zdHIg dXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQtcmV2b2tlZC5jcnQgc3Nsa2V5PXNz bC9jbGllbnQtcmV2b2tlZF90bXAua2V5IiwKKwkiJGNvbW1vbl9jb25uc3RyIHVzZXI9c3NsdGVz dHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LXJldm9rZWQuY3J0IHNzbGtleT1zc2wvY2xpZW50LXJl dm9rZWRfdG1wLmtleSBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudC1yZXZva2VkLmNydF9fY2xp ZW50LXJldm9rZWQua2V5LmRiIiwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3 aXRoIHJldm9rZWQgY2xpZW50IGNlcnQgd2l0aCBzZXJ2ZXItc2lkZSBDUkwgZGlyZWN0b3J5IiwK LQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBzc2x2MyBhbGVydCBjZXJ0aWZpY2F0 ZSByZXZva2VkLyk7CisJZXhwZWN0ZWRfc3RkZXJyID0+CisJICBxci9TU0wgZXJyb3I6IHNzbHYz IGFsZXJ0IGNlcnRpZmljYXRlIHJldm9rZWR8U1NMIHBlZXIgcmVqZWN0ZWQgeW91ciBjZXJ0aWZp Y2F0ZSBhcyByZXZva2VkLyk7CiAKICMgY2xlYW4gdXAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3NsL3QvMDAyX3NjcmFtLnBsIGIvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsCmluZGV4IGUw NWU2MGYwOTIuLjJiZmUwYjM1NzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90LzAwMl9zY3Jh bS5wbAorKysgYi9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwKQEAgLTE2LDcgKzE2LDI2IEBA IHVzZSBsaWIgJEZpbmRCaW46OlJlYWxCaW47CiAKIHVzZSBTU0w6OlNlcnZlcjsKIAotaWYgKCRF TlZ7d2l0aF9zc2x9IG5lICdvcGVuc3NsJykKK215ICRvcGVuc3NsOworbXkgJG5zczsKKworbXkg JHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50OworCitpZiAoJEVOVnt3aXRoX3NzbH0gZXEg J29wZW5zc2wnKQoreworCSRvcGVuc3NsID0gMTsKKwkjIERldGVybWluZSB3aGV0aGVyIGJ1aWxk IHN1cHBvcnRzIHRscy1zZXJ2ZXItZW5kLXBvaW50LgorCSRzdXBwb3J0c190bHNfc2VydmVyX2Vu ZF9wb2ludCA9CisJCWNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX1g1MDlfR0VUX1NJR05B VFVSRV9OSUQgMSIpOworCXBsYW4gdGVzdHMgPT4gJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3Bv aW50ID8gMTEgOiAxMjsKK30KK2Vsc2lmICgkRU5We3dpdGhfc3NsfSBlcSAnbnNzJykKK3sKKwkk bnNzID0gMTsKKwkkc3VwcG9ydHNfdGxzX3NlcnZlcl9lbmRfcG9pbnQgPSAxOworCXBsYW4gdGVz dHMgPT4gMTE7Cit9CitlbHNlCiB7CiAJcGxhbiBza2lwX2FsbCA9PiAnU1NMIG5vdCBzdXBwb3J0 ZWQgYnkgdGhpcyBidWlsZCc7CiB9CkBAIC0yNiwxMiArNDUsNiBAQCBteSAkU0VSVkVSSE9TVEFE RFIgPSAnMTI3LjAuMC4xJzsKICMgVGhpcyBpcyB0aGUgcGF0dGVybiB0byB1c2UgaW4gcGdfaGJh LmNvbmYgdG8gbWF0Y2ggaW5jb21pbmcgY29ubmVjdGlvbnMuCiBteSAkU0VSVkVSSE9TVENJRFIg PSAnMTI3LjAuMC4xLzMyJzsKIAotIyBEZXRlcm1pbmUgd2hldGhlciBidWlsZCBzdXBwb3J0cyB0 bHMtc2VydmVyLWVuZC1wb2ludC4KLW15ICRzdXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludCA9 Ci0gIGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQg MSIpOwotCi1teSAkbnVtYmVyX29mX3Rlc3RzID0gJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3Bv aW50ID8gMTEgOiAxMjsKLQogIyBBbGxvY2F0aW9uIG9mIGJhc2UgY29ubmVjdGlvbiBzdHJpbmcg c2hhcmVkIGFtb25nIG11bHRpcGxlIHRlc3RzLgogbXkgJGNvbW1vbl9jb25uc3RyOwogCkBAIC01 MCw3ICs2Myw3IEBAICRub2RlLT5zdGFydDsKICMgQ29uZmlndXJlIHNlcnZlciBmb3IgU1NMIGNv bm5lY3Rpb25zLCB3aXRoIHBhc3N3b3JkIGhhbmRsaW5nLgogY29uZmlndXJlX3Rlc3Rfc2VydmVy X2Zvcl9zc2woJG5vZGUsICRTRVJWRVJIT1NUQUREUiwgJFNFUlZFUkhPU1RDSURSLAogCSJzY3Jh bS1zaGEtMjU2IiwgInBhc3MiLCAic2NyYW0tc2hhLTI1NiIpOwotc3dpdGNoX3NlcnZlcl9jZXJ0 KCRub2RlLCAnc2VydmVyLWNuLW9ubHknKTsKK3N3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwgY2Vy dGZpbGUgPT4gJ3NlcnZlci1jbi1vbmx5JywgbnNzZGF0YWJhc2UgPT4gJ3NlcnZlci1jbi1vbmx5 LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmRiJyk7CiAkRU5We1BHUEFTU1dPUkR9ID0gInBhc3Mi OwogJGNvbW1vbl9jb25uc3RyID0KICAgImRibmFtZT10cnVzdGRiIHNzbG1vZGU9cmVxdWlyZSBz c2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9aW52YWxpZCBob3N0YWRkcj0kU0VSVkVSSE9TVEFE RFIiOwpAQCAtOTksNyArMTEyLDcgQEAgbXkgJGNsaWVudF90bXBfa2V5ID0gInNzbC9jbGllbnRf c2NyYW1fdG1wLmtleSI7CiBjb3B5KCJzc2wvY2xpZW50LmtleSIsICRjbGllbnRfdG1wX2tleSk7 CiBjaG1vZCAwNjAwLCAkY2xpZW50X3RtcF9rZXk7CiAkbm9kZS0+Y29ubmVjdF9mYWlscygKLQki c3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9JGNsaWVudF90bXBfa2V5IHNzbHJvb3RjZXJ0 PWludmFsaWQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIGRibmFtZT1jZXJ0ZGIgdXNlcj1zc2x0 ZXN0dXNlciBjaGFubmVsX2JpbmRpbmc9cmVxdWlyZSIsCisJInNzbGNlcnQ9c3NsL2NsaWVudC5j cnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRyPSRT RVJWRVJIT1NUQUREUiBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5rZXku ZGIgZGJuYW1lPWNlcnRkYiB1c2VyPXNzbHRlc3R1c2VyIGNoYW5uZWxfYmluZGluZz1yZXF1aXJl IiwKIAkiQ2VydCBhdXRoZW50aWNhdGlvbiBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiLAog CWV4cGVjdGVkX3N0ZGVyciA9PgogCSAgcXIvY2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVkLCBidXQg c2VydmVyIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHdpdGhvdXQgY2hhbm5lbCBiaW5kaW5nLwpAQCAt MTA3LDcgKzEyMCw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCiAjIENlcnRpZmljYXRlIHZl cmlmaWNhdGlvbiBhdCB0aGUgY29ubmVjdGlvbiBsZXZlbCBzaG91bGQgc3RpbGwgd29yayBmaW5l LgogJG5vZGUtPmNvbm5lY3Rfb2soCi0JInNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PSRj bGllbnRfdG1wX2tleSBzc2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQURE UiBkYm5hbWU9dmVyaWZ5ZGIgdXNlcj1zc2x0ZXN0dXNlciIsCisJInNzbGNlcnQ9c3NsL2NsaWVu dC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBzc2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRy PSRTRVJWRVJIT1NUQUREUiBzc2xkYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5r ZXkuZGIgZGJuYW1lPXZlcmlmeWRiIHVzZXI9c3NsdGVzdHVzZXIiLAogCSJTQ1JBTSB3aXRoIGNs aWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLAogCWxvZ19saWtlID0+IFsKIAkJcXIvY29ubmVjdGlvbiBh dXRoZW50aWNhdGVkOiBpZGVudGl0eT0ic3NsdGVzdHVzZXIiIG1ldGhvZD1zY3JhbS1zaGEtMjU2 LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvTlNTLnBtIGIvc3JjL3Rl c3Qvc3NsL3QvU1NML0JhY2tlbmQvTlNTLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjIwNjMzZmU0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvdC9T U0wvQmFja2VuZC9OU1MucG0KQEAgLTAsMCArMSw2MSBAQAorcGFja2FnZSBTU0w6OkJhY2tlbmQ6 Ok5TUzsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBFeHBvcnRlcjsKKworb3Vy IEBJU0EgICAgICAgPSBxdyhFeHBvcnRlcik7CitvdXIgQEVYUE9SVF9PSyA9IHF3KGdldF9uZXdf bnNzX2JhY2tlbmQpOworCitzdWIgbmV3Cit7CisJbXkgKCRjbGFzcykgPSBAXzsKKworCW15ICRz ZWxmID0geyBfbGlicmFyeSA9PiAnTlNTJyB9OworCisJYmxlc3MgJHNlbGYsICRjbGFzczsKKwor CXJldHVybiAkc2VsZjsKK30KKworc3ViIGdldF9uZXdfbnNzX2JhY2tlbmQKK3sKKwlteSAkY2xh c3MgPSAnU1NMOjpCYWNrZW5kOjpOU1MnOworCisJcmV0dXJuICRjbGFzcy0+bmV3KCk7Cit9CisK K3N1YiBpbml0Cit7CisJIyBNYWtlIHN1cmUgdGhlIGNlcnRpZmljYXRlIGRhdGFiYXNlcyBhcmUg aW4gcGxhY2U/Cit9CisKK3N1YiBnZXRfbGlicmFyeQoreworCW15ICgkc2VsZikgPSBAXzsKKwor CXJldHVybiAkc2VsZi0+e19saWJyYXJ5fTsKK30KKworc3ViIHNldF9zZXJ2ZXJfY2VydAorewor CW15ICRzZWxmICAgPSAkX1swXTsKKwlteSAkcGFyYW1zID0gJF9bMV07CisKKwkkcGFyYW1zLT57 Y2FmaWxlfSA9ICdyb290K2NsaWVudF9jYScgdW5sZXNzIGRlZmluZWQgJHBhcmFtcy0+e2NhZmls ZX07CisKKwlteSAkc3NsY29uZiA9CisJICAgICJzc2xfY2FfZmlsZT0nJHBhcmFtcy0+e2NhZmls ZX0uY3J0J1xuIgorCSAgLiAic3NsX2NlcnRfZmlsZT0nc3NsLyRwYXJhbXMtPntjZXJ0ZmlsZX0u Y3J0J1xuIgorCSAgLiAic3NsX2NybF9maWxlPScnXG4iCisJICAuICJzc2xfZGF0YWJhc2U9J25z cy8kcGFyYW1zLT57bnNzZGF0YWJhc2V9J1xuIjsKKworCXJldHVybiAkc3NsY29uZjsKK30KKwor c3ViIGNsZWFudXAKK3sKKwkjIFNvbWV0aGluZz8KK30KKworMTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFj a2VuZC9PcGVuU1NMLnBtCmluZGV4IGU3N2VlMjVjYzcuLjllNDE5YjBlMGYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0KKysrIGIvc3JjL3Rlc3Qvc3Ns L3QvU1NML0JhY2tlbmQvT3BlblNTTC5wbQpAQCAtNzEsMTYgKzcxLDE5IEBAIHN1YiBpbml0CiAj IHRoZSBzZXJ2ZXIgc28gdGhhdCB0aGUgY29uZmlndXJhdGlvbiB0YWtlcyBlZmZlY3QuCiBzdWIg c2V0X3NlcnZlcl9jZXJ0CiB7Ci0JbXkgJHNlbGYgICAgID0gJF9bMF07Ci0JbXkgJGNlcnRmaWxl ID0gJF9bMV07Ci0JbXkgJGNhZmlsZSAgID0gJF9bMl0gfHwgInJvb3QrY2xpZW50X2NhIjsKLQlt eSAka2V5ZmlsZSAgPSAkX1szXSB8fCAkY2VydGZpbGU7CisJbXkgJHNlbGYgICA9ICRfWzBdOwor CW15ICRwYXJhbXMgPSAkX1sxXTsKKworCSRwYXJhbXMtPntjYWZpbGV9ID0gJ3Jvb3QrY2xpZW50 X2NhJyB1bmxlc3MgZGVmaW5lZCAkcGFyYW1zLT57Y2FmaWxlfTsKKwkkcGFyYW1zLT57Y3JsZmls ZX0gPSAncm9vdCtjbGllbnQuY3JsJyB1bmxlc3MgZGVmaW5lZCAkcGFyYW1zLT57Y3JsZmlsZX07 CisJJHBhcmFtcy0+e2tleWZpbGV9ID0gJHBhcmFtcy0+e2NlcnRmaWxlfSB1bmxlc3MgZGVmaW5l ZCAkcGFyYW1zLT57a2V5ZmlsZX07CiAKIAlteSAkc3NsY29uZiA9Ci0JICAgICJzc2xfY2FfZmls ZT0nJGNhZmlsZS5jcnQnXG4iCi0JICAuICJzc2xfY2VydF9maWxlPSckY2VydGZpbGUuY3J0J1xu IgotCSAgLiAic3NsX2tleV9maWxlPScka2V5ZmlsZS5rZXknXG4iCi0JICAuICJzc2xfY3JsX2Zp bGU9J3Jvb3QrY2xpZW50LmNybCdcbiI7CisJICAgICJzc2xfY2FfZmlsZT0nJHBhcmFtcy0+e2Nh ZmlsZX0uY3J0J1xuIgorCSAgLiAic3NsX2NlcnRfZmlsZT0nJHBhcmFtcy0+e2NlcnRmaWxlfS5j cnQnXG4iCisJICAuICJzc2xfa2V5X2ZpbGU9JyRwYXJhbXMtPntrZXlmaWxlfS5rZXknXG4iCisJ ICAuICJzc2xfY3JsX2ZpbGU9JyRwYXJhbXMtPntjcmxmaWxlfSdcbiI7CisJJHNzbGNvbmYgLj0g InNzbF9jcmxfZGlyPSckcGFyYW1zLT57Y3JsZGlyfSdcbiIgaWYgZGVmaW5lZCAkcGFyYW1zLT57 Y3JsZGlyfTsKIAogCXJldHVybiAkc3NsY29uZjsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Nz bC90L1NTTC9TZXJ2ZXIucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0wvU2VydmVyLnBtCmluZGV4IDMz YmYzNTE0NzYuLjQ5NzI4MzViYzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90L1NTTC9TZXJ2 ZXIucG0KKysrIGIvc3JjL3Rlc3Qvc3NsL3QvU1NML1NlcnZlci5wbQpAQCAtNTgsNyArNTgsNiBA QCBlbHNpZiAoJEVOVnt3aXRoX3NzbH0gZXEgJ25zcycpCiB1c2UgRXhwb3J0ZXIgJ2ltcG9ydCc7 CiBvdXIgQEVYUE9SVCA9IHF3KAogICBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbAotICBz ZXRfc2VydmVyX2NlcnQKICAgc3dpdGNoX3NlcnZlcl9jZXJ0CiApOwogCkBAIC0xNzAsNDYgKzE2 OSwyNSBAQCBzdWIgY2xlYW51cAogCSRiYWNrZW5kLT5jbGVhbnVwKCk7CiB9CiAKLSMgQ2hhbmdl IHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZSBnaXZlbiBzZXJ2ZXIgY2VydCBmaWxlLAotc3ViIHNl dF9zZXJ2ZXJfY2VydAorIyBDaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdXNlIHRoZSBnaXZl biBzZXQgb2YgY2VydGlmaWNhdGUsIGtleSwgY2EgYW5kCisjIENSTCwgYW5kIHBvdGVudGlhbGx5 IHJlbG9hZCB0aGUgY29uZmlndXJhdGlvbiBieSByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIgc28KKyMg dGhhdCB0aGUgY29uZmlndXJhdGlvbiB0YWtlcyBlZmZlY3QuICBSZXN0YXJ0aW5nIGlzIHRoZSBk ZWZhdWx0LCBwYXNzaW5nCisjIHJlc3RhcnQgPT4gJ25vJyBvcHRzIG91dCBvZiBpdCBsZWF2aW5n IHRoZSBzZXJ2ZXIgcnVubmluZy4KK3N1YiBzd2l0Y2hfc2VydmVyX2NlcnQKIHsKLQlteSAkbm9k ZSAgICAgPSAkX1swXTsKLQlteSAkY2VydGZpbGUgPSAkX1sxXTsKLQlteSAkY2FmaWxlICAgPSAk X1syXSB8fCAicm9vdCtjbGllbnRfY2EiOwotCW15ICRrZXlmaWxlICA9ICRfWzNdIHx8ICcnOwot CW15ICRwd2NtZCAgICA9ICRfWzRdIHx8ICcnOwotCW15ICRjcmxmaWxlICA9ICJyb290K2NsaWVu dC5jcmwiOwotCW15ICRjcmxkaXI7CisJbXkgJG5vZGUgICA9IHNoaWZ0OworCW15ICVwYXJhbXMg PSBAXzsKIAlteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwogCi0JJGtleWZpbGUgPSAkY2Vy dGZpbGUgaWYgJGtleWZpbGUgZXEgJyc7Ci0KLQkjIGRlZmF1bHRzIHRvIHVzZSBjcmwgZmlsZQot CWlmIChkZWZpbmVkICRfWzNdIHx8IGRlZmluZWQgJF9bNF0pCi0JewotCQkkY3JsZmlsZSA9ICRf WzNdOwotCQkkY3JsZGlyICA9ICRfWzRdOwotCX0KLQogCW9wZW4gbXkgJHNzbGNvbmYsICc+Jywg IiRwZ2RhdGEvc3NsY29uZmlnLmNvbmYiOwogCXByaW50ICRzc2xjb25mICJzc2w9b25cbiI7Ci0J cHJpbnQgJHNzbGNvbmYgJGJhY2tlbmQtPnNldF9zZXJ2ZXJfY2VydCgkY2VydGZpbGUsICRjYWZp bGUsICRrZXlmaWxlKTsKLQlwcmludCAkc3NsY29uZiAic3NsX2NybF9maWxlPSckY3JsZmlsZSdc biIgaWYgZGVmaW5lZCAkY3JsZmlsZTsKLQlwcmludCAkc3NsY29uZiAic3NsX2NybF9kaXI9JyRj cmxkaXInXG4iICAgaWYgZGVmaW5lZCAkY3JsZGlyOwotCXByaW50ICRzc2xjb25mICJzc2xfcGFz c3BocmFzZV9jb21tYW5kPSckcHdjbWQnXG4iCi0JICB1bmxlc3MgJHB3Y21kIGVxICcnOworCXBy aW50ICRzc2xjb25mICRiYWNrZW5kLT5zZXRfc2VydmVyX2NlcnQoXCVwYXJhbXMpOworCXByaW50 ICRzc2xjb25mICJzc2xfcGFzc3BocmFzZV9jb21tYW5kPSciIC4gJHBhcmFtc3twYXNzcGhyYXNl X2NtZH0gLiAiJ1xuIgorCSAgaWYgZGVmaW5lZCAkcGFyYW1ze3Bhc3NwaHJhc2VfY21kfTsKIAlj bG9zZSAkc3NsY29uZjsKLQlyZXR1cm47Ci19CiAKLSMgQ2hhbmdlIHRoZSBjb25maWd1cmF0aW9u IHRvIHVzZSBnaXZlbiBzZXJ2ZXIgY2VydCBmaWxlLCBhbmQgcmVsb2FkCi0jIHRoZSBzZXJ2ZXIg c28gdGhhdCB0aGUgY29uZmlndXJhdGlvbiB0YWtlcyBlZmZlY3QuCi0jIFRha2VzIHRoZSBzYW1l IGFyZ3VtZW50cyBhcyBzZXRfc2VydmVyX2NlcnQsIHdoaWNoIGl0IGNhbGxzIHRvIGRvIHRoYXQK LSMgcGllY2Ugb2YgdGhlIHdvcmsuCi1zdWIgc3dpdGNoX3NlcnZlcl9jZXJ0Ci17Ci0JbXkgJG5v ZGUgPSAkX1swXTsKLQlzZXRfc2VydmVyX2NlcnQoQF8pOworCXJldHVybiBpZiAoZGVmaW5lZCgk cGFyYW1ze3Jlc3RhcnR9KSAmJiAkcGFyYW1ze3Jlc3RhcnR9IGVxICdubycpOworCiAJJG5vZGUt PnJlc3RhcnQ7CiAJcmV0dXJuOwogfQotLSAKMi4yNS4xCgo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0004-test-check-for-empty-stderr-during-connect_ok.patch" Content-Description: v44-0004-test-check-for-empty-stderr-during-connect_ok.patch Content-Disposition: attachment; filename="v44-0004-test-check-for-empty-stderr-during-connect_ok.patch"; size=3679; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <7F09530A9F5C7142BB4616369A125416@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBhNTYzZGMwY2M5MTIyMGVkZWEwM2NhYWU5OWM5ZmNiMjUyOTc5NjQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+ CkRhdGU6IFNhdCwgMTkgSnVuIDIwMjEgMDE6Mzc6MzAgKzAyMDAKU3ViamVjdDogW1BBVENIIHY0 NCAwNC8xMF0gdGVzdDogY2hlY2sgZm9yIGVtcHR5IHN0ZGVyciBkdXJpbmcgY29ubmVjdF9vaygp CgouLi5pbiBhIHNpbWlsYXIgbWFubmVyIHRvIGNvbW1hbmRfbGlrZSgpLCB0byBjYXRjaCBub3Rp Y2VzLWFzLWVycm9ycwpjb21pbmcgZnJvbSBOU1MuCi0tLQogc3JjL3Rlc3QvYXV0aGVudGljYXRp b24vdC8wMDFfcGFzc3dvcmQucGwgfCAyICstCiBzcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAw Ml9zYXNscHJlcC5wbCB8IDIgKy0KIHNyYy90ZXN0L2tlcmJlcm9zL3QvMDAxX2F1dGgucGwgICAg ICAgICAgIHwgMiArLQogc3JjL3Rlc3QvbGRhcC90LzAwMV9hdXRoLnBsICAgICAgICAgICAgICAg fCAyICstCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbSAgICAgICAgICAgICB8IDUgKysr Ky0KIHNyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbCAgICAgICAgICAgIHwgNCArKy0tCiBz cmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwgICAgICAgICAgICAgICB8IDQgKystLQogNyBmaWxl cyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3JkLnBsIGIvc3JjL3Rlc3QvYXV0 aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKaW5kZXggMTY1NzBhNGUyYy4uYmZlYThiYjhh ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwK KysrIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKQEAgLTIwLDcg KzIwLDcgQEAgaWYgKCEkdXNlX3VuaXhfc29ja2V0cykKIH0KIGVsc2UKIHsKLQlwbGFuIHRlc3Rz ID0+IDIzOworCXBsYW4gdGVzdHMgPT4gMzI7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv YXV0aGVudGljYXRpb24vdC8wMDJfc2FzbHByZXAucGwgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlv bi90LzAwMl9zYXNscHJlcC5wbAppbmRleCBhY2QzNzlkZjMxLi45NDU3Mjc3MDk0IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMl9zYXNscHJlcC5wbAorKysgYi9zcmMv dGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMl9zYXNscHJlcC5wbApAQCAtMTcsNyArMTcsNyBAQCBp ZiAoISR1c2VfdW5peF9zb2NrZXRzKQogfQogZWxzZQogewotCXBsYW4gdGVzdHMgPT4gMTI7CisJ cGxhbiB0ZXN0cyA9PiAyMDsKIH0KIAogIyBEZWxldGUgcGdfaGJhLmNvbmYgZnJvbSB0aGUgZ2l2 ZW4gbm9kZSwgYWRkIGEgbmV3IGVudHJ5IHRvIGl0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9rZXJi ZXJvcy90LzAwMV9hdXRoLnBsIGIvc3JjL3Rlc3Qva2VyYmVyb3MvdC8wMDFfYXV0aC5wbAppbmRl eCBjNDg0MjM3ZDA3Li5hNWFmZGM4NjgwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9rZXJiZXJvcy90 LzAwMV9hdXRoLnBsCisrKyBiL3NyYy90ZXN0L2tlcmJlcm9zL3QvMDAxX2F1dGgucGwKQEAgLTIz LDcgKzIzLDcgQEAgdXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CiAKIGlmICgkRU5We3dpdGhf Z3NzYXBpfSBlcSAneWVzJykKIHsKLQlwbGFuIHRlc3RzID0+IDQ0OworCXBsYW4gdGVzdHMgPT4g NTQ7CiB9CiBlbHNlCiB7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9sZGFwL3QvMDAxX2F1dGgucGwg Yi9zcmMvdGVzdC9sZGFwL3QvMDAxX2F1dGgucGwKaW5kZXggZjY3MGJjNWUwZC4uZDdmNDk3Mzlk ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbGRhcC90LzAwMV9hdXRoLnBsCisrKyBiL3NyYy90ZXN0 L2xkYXAvdC8wMDFfYXV0aC5wbApAQCAtOSw3ICs5LDcgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAKIGlm ICgkRU5We3dpdGhfbGRhcH0gZXEgJ3llcycpCiB7Ci0JcGxhbiB0ZXN0cyA9PiAyODsKKwlwbGFu IHRlc3RzID0+IDQwOwogfQogZWxzZQogewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0 Z3Jlc05vZGUucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQppbmRleCBjNTlkYTc1 OGM3Li4wMTc2MmJlMmZmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5w bQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQpAQCAtMjA1NSw4ICsyMDU1LDEx IEBAIHN1YiBjb25uZWN0X29rCiAKIAlpZiAoZGVmaW5lZCgkcGFyYW1ze2V4cGVjdGVkX3N0ZG91 dH0pKQogCXsKLQkJbGlrZSgkc3Rkb3V0LCAkcGFyYW1ze2V4cGVjdGVkX3N0ZG91dH0sICIkdGVz dF9uYW1lOiBtYXRjaGVzIik7CisJCWxpa2UoJHN0ZG91dCwgJHBhcmFtc3tleHBlY3RlZF9zdGRv dXR9LCAiJHRlc3RfbmFtZTogc3Rkb3V0IG1hdGNoZXMiKTsKIAl9CisKKwlpcygkc3RkZXJyLCAi IiwgIiR0ZXN0X25hbWU6IG5vIHN0ZGVyciIpOworCiAJaWYgKEBsb2dfbGlrZSBvciBAbG9nX3Vu bGlrZSkKIAl7CiAJCW15ICRsb2dfY29udGVudHMgPSBUZXN0TGliOjpzbHVycF9maWxlKCRzZWxm LT5sb2dmaWxlLCAkbG9nX2xvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC90LzAw MV9zc2x0ZXN0cy5wbCBiL3NyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbAppbmRleCBmOTYx YmE5NzM3Li5kYzIxYWU5ZDFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVz dHMucGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsCkBAIC0xOCwxMiArMTgs MTIgQEAgbXkgJG5zczsKIGlmICgkRU5We3dpdGhfc3NsfSBlcSAnb3BlbnNzbCcpCiB7CiAJJG9w ZW5zc2wgPSAxOwotCXBsYW4gdGVzdHMgPT4gMTEyOworCXBsYW4gdGVzdHMgPT4gMTQ0OwogfQog ZWxzaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICduc3MnKQogewogCSRuc3MgPSAxOwotCXBsYW4gdGVz dHMgPT4gMTEyOworCXBsYW4gdGVzdHMgPT4gMTM4OwogfQogZWxzZQogewpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsIGIvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBs CmluZGV4IDJiZmUwYjM1NzMuLjBkZDI4NmIzMzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90 LzAwMl9zY3JhbS5wbAorKysgYi9zcmMvdGVzdC9zc2wvdC8wMDJfc2NyYW0ucGwKQEAgLTI3LDEz ICsyNywxMyBAQCBpZiAoJEVOVnt3aXRoX3NzbH0gZXEgJ29wZW5zc2wnKQogCSMgRGV0ZXJtaW5l IHdoZXRoZXIgYnVpbGQgc3VwcG9ydHMgdGxzLXNlcnZlci1lbmQtcG9pbnQuCiAJJHN1cHBvcnRz X3Rsc19zZXJ2ZXJfZW5kX3BvaW50ID0KIAkJY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhBVkVf WDUwOV9HRVRfU0lHTkFUVVJFX05JRCAxIik7Ci0JcGxhbiB0ZXN0cyA9PiAkc3VwcG9ydHNfdGxz X3NlcnZlcl9lbmRfcG9pbnQgPyAxMSA6IDEyOworCXBsYW4gdGVzdHMgPT4gMTU7CiB9CiBlbHNp ZiAoJEVOVnt3aXRoX3NzbH0gZXEgJ25zcycpCiB7CiAJJG5zcyA9IDE7CiAJJHN1cHBvcnRzX3Rs c19zZXJ2ZXJfZW5kX3BvaW50ID0gMTsKLQlwbGFuIHRlc3RzID0+IDExOworCXBsYW4gdGVzdHMg PT4gMTU7CiB9CiBlbHNlCiB7Ci0tIAoyLjI1LjEKCg== --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0005-nss-pg_strong_random-support.patch" Content-Description: v44-0005-nss-pg_strong_random-support.patch Content-Disposition: attachment; filename="v44-0005-nss-pg_strong_random-support.patch"; size=2021; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <3F3B821D1289E244A485973D1166922D@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBmN2M0YzU1YjUwNDQ0OGMwNDQ0ODM2MGYwZDVkNjU3NjNhYmFjYTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw NS8xMF0gbnNzOiBwZ19zdHJvbmdfcmFuZG9tIHN1cHBvcnQKClRoaXMgYWRkcyBzdXBwb3J0IGZv ciB1c2luZyB0aGUgUk5HIGluIGxpYm5zcyBhcyBhIGJhY2tlbmQgZm9yCnBnX3N0cm9uZ19yYW5k b20uCi0tLQogc3JjL3BvcnQvcGdfc3Ryb25nX3JhbmRvbS5jIHwgNTIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfc3Ryb25nX3JhbmRvbS5j IGIvc3JjL3BvcnQvcGdfc3Ryb25nX3JhbmRvbS5jCmluZGV4IDA3ZjI0YzAwODkuLjFmODQ0MWFj ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX3N0cm9uZ19yYW5kb20uYworKysgYi9zcmMvcG9y dC9wZ19zdHJvbmdfcmFuZG9tLmMKQEAgLTEzNywxMCArMTM3LDU4IEBAIHBnX3N0cm9uZ19yYW5k b20odm9pZCAqYnVmLCBzaXplX3QgbGVuKQogCXJldHVybiBmYWxzZTsKIH0KIAotI2Vsc2UJCQkJ CQkJLyogbm90IFVTRV9PUEVOU1NMIG9yIFdJTjMyICovCisjZWxpZiBkZWZpbmVkKFVTRV9OU1Mp CisKKyNkZWZpbmUgcGdfQklUU19QRVJfQllURSBCSVRTX1BFUl9CWVRFCisjdW5kZWYgQklUU19Q RVJfQllURQorI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3MvbnNzLmg+ CisjaW5jbHVkZSA8bnNzL3BrMTFwdWIuaD4KKyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZVEUpCisj aWYgQklUU19QRVJfQllURSAhPSBwZ19CSVRTX1BFUl9CWVRFCisjZXJyb3IgImluY29tcGF0aWJs ZSBieXRlIHdpZHRocyBiZXR3ZWVuIE5TUFIgYW5kIHBvc3RncmVzIgorI2VuZGlmCisjZWxzZQor I2RlZmluZSBCSVRTX1BFUl9CWVRFIHBnX0JJVFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBn X0JJVFNfUEVSX0JZVEUKKwordm9pZAorcGdfc3Ryb25nX3JhbmRvbV9pbml0KHZvaWQpCit7CisJ LyogTm8gaW5pdGlhbGl6YXRpb24gbmVlZGVkIG9uIE5TUyAqLworfQorCitib29sCitwZ19zdHJv bmdfcmFuZG9tKHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlOU1NJbml0UGFyYW1ldGVycyBw YXJhbXM7CisJTlNTSW5pdENvbnRleHQgKm5zc19jb250ZXh0OworCVNFQ1N0YXR1cwlzdGF0dXM7 CisKKwltZW1zZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5sZW5ndGgg PSBzaXplb2YocGFyYW1zKTsKKwluc3NfY29udGV4dCA9IE5TU19Jbml0Q29udGV4dCgiIiwgIiIs ICIiLCAiIiwgJnBhcmFtcywKKwkJCQkJCQkJICBOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklU X05PQ0VSVERCIHwKKwkJCQkJCQkJICBOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VP UEVOIHwKKwkJCQkJCQkJICBOU1NfSU5JVF9OT1JPT1RJTklUIHwgTlNTX0lOSVRfUEsxMVJFTE9B RCk7CisKKwlpZiAoIW5zc19jb250ZXh0KQorCQlyZXR1cm4gZmFsc2U7CisKKwlzdGF0dXMgPSBQ SzExX0dlbmVyYXRlUmFuZG9tKGJ1ZiwgbGVuKTsKKwlOU1NfU2h1dGRvd25Db250ZXh0KG5zc19j b250ZXh0KTsKKworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIHRydWU7CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKKyNlbHNlCQkJCQkJCS8qIG5vdCBVU0VfT1BFTlNTTCwgVVNF X05TUyBvciBXSU4zMiAqLwogCiAvKgotICogV2l0aG91dCBPcGVuU1NMIG9yIFdpbjMyIHN1cHBv cnQsIGp1c3QgcmVhZCAvZGV2L3VyYW5kb20gb3Vyc2VsdmVzLgorICogV2l0aG91dCBPcGVuU1NM LCBOU1Mgb3IgV2luMzIgc3VwcG9ydCwganVzdCByZWFkIC9kZXYvdXJhbmRvbSBvdXJzZWx2ZXMu CiAgKi8KIAogdm9pZAotLSAKMi4yNS4xCgo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0006-nss-Documentation.patch" Content-Description: v44-0006-nss-Documentation.patch Content-Disposition: attachment; filename="v44-0006-nss-Documentation.patch"; size=36146; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <7C95E07435E8034C9EF0DC15F994006A@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA1ZDMzZTE2MzUzOGM4YjQ5NmFmYmM3MDg0OGY3ZGJhZDhhNDc5MDRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDIgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw Ni8xMF0gbnNzOiBEb2N1bWVudGF0aW9uCgpCYXNpYyBkb2N1bWVudGF0aW9uIG9mIHRoZSBuZXcg QVBJIChrZXlwYXNzIGhvb2tzKSBhcyB3ZWxsIGFzIGNvbmZpZwpwYXJhbWV0ZXJzIGFuZCBpbnN0 YWxsYXRpb24uIEFkZGl0aW9uYWxseSB0aGVyZSBpcyBhIHNlY3Rpb24gb24gaG93CnRvIGNyZWF0 ZSBjZXJ0aWZpY2F0ZSBhbmQga2V5cyB1c2luZyB0aGUgTlNTIHRvb2xjaGFpbi4KLS0tCiBkb2Mv c3JjL3NnbWwvYWNyb255bXMuc2dtbCAgICAgfCAgMzMgKysrKwogZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sICAgICAgIHwgIDMwICsrLQogZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sIHwg IDMxICsrLQogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgIHwgMzQxICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLQogZG9jL3NyYy9zZ21sL3J1bnRpbWUuc2dtbCAgICAgIHwg MTI0ICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvbGlicHEvUkVBRE1FLlNTTCAgIHwgIDI4ICsr KwogNiBmaWxlcyBjaGFuZ2VkLCA0OTQgaW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Fjcm9ueW1zLnNnbWwgYi9kb2Mvc3JjL3NnbWwvYWNy b255bXMuc2dtbAppbmRleCA5ZWQxNDhhYjg0Li40ZGEyMGNiNGQzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvYWNyb255bXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbApA QCAtNDUyLDYgKzQ1MiwyOCBAQAogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48YWNyb255bT5OU1BSPC9hY3JvbnltPjwv dGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPHVsaW5rCisgICAgICB1 cmw9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9q ZWN0cy9OU1BSIj4KKyAgICAgIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWU8L3VsaW5rPgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPjxhY3JvbnltPk5TUzwvYWNyb255bT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDx1bGluaworICAgICAgdXJsPSJodHRwczov L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTIj4K KyAgICAgIE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXM8L3VsaW5rPgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxhY3JvbnltPk9EQkM8L2Fjcm9ueW0+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4K QEAgLTU1MCw2ICs1NzIsMTcgQEAKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGFjcm9ueW0+UEtDUyMxMjwvYWNyb255 bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDx1bGluaworICAg ICAgdXJsPSJodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QS0NTXzEyIj4KKyAgICAgIFB1 YmxpYy1LZXkgQ3J5cHRvZ3JhcGh5IFN0YW5kYXJkcyAjMTI8L3VsaW5rPgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxhY3JvbnltPlBMPC9hY3JvbnltPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKaW5kZXggMGE4ZTM1YzU5Zi4uZmQxYmE0ZDk3OSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTMx MCw2ICsxMzEwLDI0IEBAIGluY2x1ZGVfZGlyICdjb25mLmQnCiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3NsLWRh dGFiYXNlIiB4cmVmbGFiZWw9InNzbF9kYXRhYmFzZSI+CisgICAgICA8dGVybT48dmFybmFtZT5z c2xfZGF0YWJhc2U8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgICAgPGluZGV4 dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5zc2xfZGF0YWJhc2U8L3Zhcm5hbWU+IGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAg ICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNp ZmllcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBzZXJ2ZXIgY2VydGlmaWNh dGVzIGFuZAorICAgICAgICBrZXlzIHdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVj dG5hbWU+IGZvcgorICAgICAgICA8YWNyb255bT5TU0w8L2Fjcm9ueW0+LzxhY3JvbnltPlRMUzwv YWNyb255bT4KKyAgICAgICAgY29ubmVjdGlvbnMuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJl IHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+ IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLXNzbC1jaXBoZXJzIiB4cmVmbGFiZWw9InNzbF9jaXBoZXJzIj4K ICAgICAgIDx0ZXJtPjx2YXJuYW1lPnNzbF9jaXBoZXJzPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5n PC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CkBAIC0xMzI2LDcgKzEzNDQsOSBAQCBpbmNsdWRl X2RpciAnY29uZi5kJwogICAgICAgICBjb25uZWN0aW9ucyB1c2luZyBUTFMgdmVyc2lvbiAxLjIg YW5kIGxvd2VyIGFyZSBhZmZlY3RlZC4gIFRoZXJlIGlzCiAgICAgICAgIGN1cnJlbnRseSBubyBz ZXR0aW5nIHRoYXQgY29udHJvbHMgdGhlIGNpcGhlciBjaG9pY2VzIHVzZWQgYnkgVExTCiAgICAg ICAgIHZlcnNpb24gMS4zIGNvbm5lY3Rpb25zLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMKLSAgICAg ICAgPGxpdGVyYWw+SElHSDpNRURJVU06KzNERVM6IWFOVUxMPC9saXRlcmFsPi4gIFRoZSBkZWZh dWx0IGlzIHVzdWFsbHkgYQorICAgICAgICA8bGl0ZXJhbD5ISUdIOk1FRElVTTorM0RFUzohYU5V TEw8L2xpdGVyYWw+IGZvciBzZXJ2ZXJzIHdoaWNoIGhhdmUKKyAgICAgICAgYmVlbiBidWlsdCB3 aXRoIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gYXMgdGhlCisgICAgICAgIDxh Y3JvbnltPlNTTDwvYWNyb255bT4gbGlicmFyeS4gIFRoZSBkZWZhdWx0IGlzIHVzdWFsbHkgYQog ICAgICAgICByZWFzb25hYmxlIGNob2ljZSB1bmxlc3MgeW91IGhhdmUgc3BlY2lmaWMgc2VjdXJp dHkgcmVxdWlyZW1lbnRzLgogICAgICAgIDwvcGFyYT4KIApAQCAtMTUzOCw4ICsxNTU4LDEyIEBA IGluY2x1ZGVfZGlyICdjb25mLmQnCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNldHMgYW4gZXh0 ZXJuYWwgY29tbWFuZCB0byBiZSBpbnZva2VkIHdoZW4gYSBwYXNzcGhyYXNlIGZvcgogICAgICAg ICBkZWNyeXB0aW5nIGFuIFNTTCBmaWxlIHN1Y2ggYXMgYSBwcml2YXRlIGtleSBuZWVkcyB0byBi ZSBvYnRhaW5lZC4gIEJ5Ci0gICAgICAgIGRlZmF1bHQsIHRoaXMgcGFyYW1ldGVyIGlzIGVtcHR5 LCB3aGljaCBtZWFucyB0aGUgYnVpbHQtaW4gcHJvbXB0aW5nCi0gICAgICAgIG1lY2hhbmlzbSBp cyB1c2VkLgorICAgICAgICBkZWZhdWx0LCB0aGlzIHBhcmFtZXRlciBpcyBlbXB0eS4gV2hlbiB0 aGUgc2VydmVyIGlzIHVzaW5nCisgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0 bmFtZT4sIHRoaXMgbWVhbnMgdGhlIGJ1aWx0LWluIHByb21wdGluZworICAgICAgICBtZWNoYW5p c20gaXMgdXNlZC4gV2hlbiB1c2luZyA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sIHRo ZXJlIGlzCisgICAgICAgIG5vIGRlZmF1bHQgcHJvbXB0aW5nIHNvIGEgYmxhbmsgY2FsbGJhY2sg d2lsbCBiZSB1c2VkIHJldHVybmluZyBhbgorICAgICAgICBlbXB0eSBwYXNzd29yZC4gVGhpcyBy ZXF1aXJlcyB0aGF0IHRoZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBoYXNuJ3QKKyAgICAgICAgYmVl biBjcmVhdGVkIHdpdGggYSBwYXNzd29yZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIFRoZSBjb21tYW5kIG11c3QgcHJpbnQgdGhlIHBhc3NwaHJhc2UgdG8gdGhlIHN0 YW5kYXJkIG91dHB1dCBhbmQgZXhpdApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luc3RhbGxh dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCmluZGV4IDFlYmU4NDgy YmYuLjZkYWI5NDVlMDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKQEAgLTk5OSwxNCArOTk5LDMx IEBAIGJ1aWxkLXBvc3RncmVzcWw6CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICA8cGFyYT4K ICAgICAgICAgIEJ1aWxkIHdpdGggc3VwcG9ydCBmb3IgPGFjcm9ueW0+U1NMPC9hY3JvbnltPiAo ZW5jcnlwdGVkKQotICAgICAgICAgY29ubmVjdGlvbnMuIFRoZSBvbmx5IDxyZXBsYWNlYWJsZT5M SUJSQVJZPC9yZXBsYWNlYWJsZT4KLSAgICAgICAgIHN1cHBvcnRlZCBpcyA8b3B0aW9uPm9wZW5z c2w8L29wdGlvbj4uIFRoaXMgcmVxdWlyZXMgdGhlCi0gICAgICAgICA8cHJvZHVjdG5hbWU+T3Bl blNTTDwvcHJvZHVjdG5hbWU+IHBhY2thZ2UgdG8gYmUgaW5zdGFsbGVkLgotICAgICAgICAgPGZp bGVuYW1lPmNvbmZpZ3VyZTwvZmlsZW5hbWU+IHdpbGwgY2hlY2sgZm9yIHRoZSByZXF1aXJlZAot ICAgICAgICAgaGVhZGVyIGZpbGVzIGFuZCBsaWJyYXJpZXMgdG8gbWFrZSBzdXJlIHRoYXQgeW91 cgotICAgICAgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBpbnN0YWxsYXRp b24gaXMgc3VmZmljaWVudAotICAgICAgICAgYmVmb3JlIHByb2NlZWRpbmcuCisgICAgICAgICBj b25uZWN0aW9ucy4gPHJlcGxhY2VhYmxlPkxJQlJBUlk8L3JlcGxhY2VhYmxlPiBtdXN0IGJlIG9u ZSBvZjoKICAgICAgICAgPC9wYXJhPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICA8b3B0aW9uPm9wZW5zc2w8 L29wdGlvbj4gdG8gYnVpbGQgd2l0aCA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+ IHN1cHBvcnQuCisgICAgICAgICAgICBUaGlzIHJlcXVpcmVzIHRoZSA8cHJvZHVjdG5hbWU+T3Bl blNTTDwvcHJvZHVjdG5hbWU+CisgICAgICAgICAgICBwYWNrYWdlIHRvIGJlIGluc3RhbGxlZC4g IDxmaWxlbmFtZT5jb25maWd1cmU8L2ZpbGVuYW1lPiB3aWxsIGNoZWNrCisgICAgICAgICAgICBm b3IgdGhlIHJlcXVpcmVkIGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzIHRvIG1ha2Ugc3VyZQor ICAgICAgICAgICAgeW91ciA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGluc3Rh bGxhdGlvbiBpcyBzdWZmaWNpZW50CisgICAgICAgICAgICBiZWZvcmUgcHJvY2VlZGluZy4KKyAg ICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICA8b3B0aW9uPm5zczwvb3B0aW9uPiB0byBi dWlsZCB3aXRoIDxwcm9kdWN0bmFtZT5saWJuc3M8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0LgorICAg ICAgICAgICAgVGhpcyByZXF1aXJlcyB0aGUgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+ IHBhY2thZ2UgdG8gYmUgaW5zdGFsbGVkLiBBZGRpdGlvbmFsbHksCisgICAgICAgICAgICA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gcmVxdWlyZXMgPHByb2R1Y3RuYW1lPk5TUFI8L3By b2R1Y3RuYW1lPgorICAgICAgICAgICAgdG8gYmUgaW5zdGFsbGVkLiA8ZmlsZW5hbWU+Y29uZmln dXJlPC9maWxlbmFtZT4gd2lsbCBjaGVjayBmb3IgdGhlCisgICAgICAgICAgICByZXF1aXJlZCBo ZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmllcyB0byBtYWtlIHN1cmUgdGhhdCB5b3VyCisgICAgICAg ICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gaW5zdGFsbGF0aW9uIGlzIHN1ZmZp Y2llbnQgYmVmb3JlCisgICAgICAgICAgICBwcm9jZWVkaW5nLgorICAgICAgICAgIDwvcGFyYT4K KyAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCBiNDQ5YzgzNGE5 Li41ZGJmZTlmOThjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvbGlicHEuc2dtbApAQCAtODM1LDYgKzgzNSwxMiBAQCBpbnQgY2FsbGJhY2tf Zm4oY2hhciAqYnVmLCBpbnQgc2l6ZSwgUEdjb25uICpjb25uKTsKICAgICAgICA8ZnVuY3Rpb24+ bG9uZ2ptcCguLi4pPC9mdW5jdGlvbj4sIGV0Yy4gSXQgbXVzdCByZXR1cm4gbm9ybWFsbHkuCiAg ICAgICA8L3BhcmE+CiAKKyAgICAgIDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+UFFzZXRTU0xL ZXlQYXNzSG9va19PcGVuU1NMPC9mdW5jdGlvbj4gaGFzIG5vIGVmZmVjdCB1bmxlc3MKKyAgICAg ICAgdGhlIHNlcnZlciB3YXMgY29tcGlsZWQgd2l0aCA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJv ZHVjdG5hbWU+CisgICAgICAgIHN1cHBvcnQuCisgICAgICA8L3BhcmE+CisKICAgICAgPC9saXN0 aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtODUxLDYgKzg1Nyw3MCBAQCBQUXNzbEtl eVBhc3NIb29rX09wZW5TU0xfdHlwZSBQUWdldFNTTEtleVBhc3NIb29rX09wZW5TU0wodm9pZCk7 CiA8L3N5bm9wc2lzPgogICAgICAgPC9wYXJhPgogCisgICAgICA8cGFyYT4KKyAgICAgICAgPGZ1 bmN0aW9uPlBRZ2V0U1NMS2V5UGFzc0hvb2tfT3BlblNTTDwvZnVuY3Rpb24+IGhhcyBubyBlZmZl Y3QgdW5sZXNzCisgICAgICAgIHRoZSBzZXJ2ZXIgd2FzIGNvbXBpbGVkIHdpdGggPHByb2R1Y3Ru YW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPgorICAgICAgICBzdXBwb3J0LgorICAgICAgPC9wYXJh PgorCisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlz dGVudHJ5IGlkPSJsaWJwcS1wcXNldHNzbGtleXBhc3Nob29rLW5zcyI+CisgICAgIDx0ZXJtPjxm dW5jdGlvbj5QUXNldFNTTEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJp bWFyeT5QUXNldFNTTEtleVBhc3NIb29rX25zczwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+ CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxmdW5jdGlvbj5QUXNldFNT TEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+IGxldHMgYW4gYXBwbGljYXRpb24gb3ZlcnJpZGUK KyAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPidzIGRlZmF1bHQgaGFuZGxp bmcgb2YgcGFzc3dvcmQgcHJvdGVjdGVkCisgICAgICAgb2JqZWN0cyBpbiB0aGUgPGFwcGxpY2F0 aW9uPk5TUzwvYXBwbGljYXRpb24+IGRhdGFiYXNlIHVzaW5nCisgICAgICAgPHhyZWYgbGlua2Vu ZD0ibGlicHEtY29ubmVjdC1zc2xwYXNzd29yZCIvPiBvciBpbnRlcmFjdGl2ZSBwcm9tcHRpbmcu CisKKzxzeW5vcHNpcz4KK3ZvaWQgUFFzZXRTU0xLZXlQYXNzSG9va19uc3MoUFFzc2xLZXlQYXNz SG9va19uc3NfdHlwZSBob29rKTsKKzwvc3lub3BzaXM+CisKKyAgICAgICBUaGUgYXBwbGljYXRp b24gcGFzc2VzIGEgcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggc2lnbmF0dXJl OgorPHByb2dyYW1saXN0aW5nPgorY2hhciAqY2FsbGJhY2tfZm4oUEsxMVNsb3RJbmZvICpzbG90 LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgIHdo aWNoIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IHdpbGwgY2FsbAorICAgICAgIDxl bXBoYXNpcz5pbnN0ZWFkIG9mPC9lbXBoYXNpcz4gaXRzIGRlZmF1bHQKKyAgICAgICA8ZnVuY3Rp b24+UFFkZWZhdWx0U1NMS2V5UGFzc0hvb2tfbnNzPC9mdW5jdGlvbj4gcGFzc3dvcmQgaGFuZGxl ci4gVGhlCisgICAgICAgY2FsbGJhY2sgc2hvdWxkIGRldGVybWluZSB0aGUgcGFzc3dvcmQgZm9y IHRoZSB0b2tlbiBhbmQgcmV0dXJuIGEKKyAgICAgICBwb2ludGVyIHRvIGl0LiBUaGUgcmV0dXJu ZWQgcG9pbnRlciBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggdGhlIE5TUworICAgICAgIDxmdW5j dGlvbj5QT1JUX1N0cmR1cDwvZnVuY3Rpb24+IGZ1bmN0aW9uLiBUaGUgdG9rZW4gZm9yIHdoaWNo IHRoZQorICAgICAgIHBhc3N3b3JkIGlzIHJlcXVlc3RlZCBpcyByZWNvcmRlZCBpbiB0aGUgc2xv dCBhbmMgY2FuIGJlIGlkZW50aWZpZWQgYnkKKyAgICAgICBjYWxsaW5nIDxmdW5jdGlvbj5QSzEx X0dldFRva2VuTmFtZTwvZnVuY3Rpb24+LiBJZiBubyBwYXNzd29yZCBpcworICAgICAgIGtub3du LCB0aGUgY2FsbGJhY2sgc2hvdWxkIHJldHVybiA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPi4gVGhl IG1lbW9yeQorICAgICAgIHdpbGwgYmUgb3duZWQgYnkgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVj dG5hbWU+IGFuZCBzaG91bGQgbm90IGJlCisgICAgICAgZnJlZWQuCisgICAgICA8L3BhcmE+CisK KyAgICAgIDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+UFFzZXRTU0xLZXlQYXNzSG9va19uc3M8 L2Z1bmN0aW9uPiBoYXMgbm8gZWZmZWN0IHVubGVzcworICAgICAgICB0aGUgc2VydmVyIHdhcyBj b21waWxlZCB3aXRoIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0LgorICAg ICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg PHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtcHFnZXRzc2xrZXlwYXNzaG9vay1uc3MiPgorICAgICA8 dGVybT48ZnVuY3Rpb24+UFFnZXRTU0xLZXlQYXNzSG9va19uc3M8L2Z1bmN0aW9uPjxpbmRleHRl cm0+PHByaW1hcnk+UFFnZXRTU0xLZXlQYXNzSG9va19uc3M8L3ByaW1hcnk+PC9pbmRleHRlcm0+ PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICA8ZnVuY3Rpb24+ UFFnZXRTU0xLZXlQYXNzSG9va19uc3M8L2Z1bmN0aW9uPiByZXR1cm5zIHRoZSBjdXJyZW50Cisg ICAgICAgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+IHBhc3N3b3JkIGhvb2ssIG9yIDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+CisgICAgICAgaWYgbm9uZSBoYXMgYmVlbiBzZXQuCisKKzxz eW5vcHNpcz4KK1BRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgUFFnZXRTU0xLZXlQYXNzSG9va19u c3Modm9pZCk7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAg ICAgICAgPGZ1bmN0aW9uPlBRZ2V0U1NMS2V5UGFzc0hvb2tfbnNzPC9mdW5jdGlvbj4gaGFzIG5v IGVmZmVjdCB1bmxlc3MgdGhlCisgICAgICAgIHNlcnZlciB3YXMgY29tcGlsZWQgd2l0aCA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gc3VwcG9ydC4KKyAgICAgIDwvcGFyYT4KKwogICAg ICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xNjQzLDIzICsxNzEzLDI1 IEBAIHBvc3RncmVzcWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsL2RibmFtZQogICAgICAg ICBJZiBzZXQgdG8gMSwgZGF0YSBzZW50IG92ZXIgU1NMIGNvbm5lY3Rpb25zIHdpbGwgYmUgY29t cHJlc3NlZC4gIElmCiAgICAgICAgIHNldCB0byAwLCBjb21wcmVzc2lvbiB3aWxsIGJlIGRpc2Fi bGVkLiAgVGhlIGRlZmF1bHQgaXMgMC4gIFRoaXMKICAgICAgICAgcGFyYW1ldGVyIGlzIGlnbm9y ZWQgaWYgYSBjb25uZWN0aW9uIHdpdGhvdXQgU1NMIGlzIG1hZGUuCi0gICAgICAgPC9wYXJhPgot Ci0gICAgICAgPHBhcmE+CiAgICAgICAgIFNTTCBjb21wcmVzc2lvbiBpcyBub3dhZGF5cyBjb25z aWRlcmVkIGluc2VjdXJlIGFuZCBpdHMgdXNlIGlzIG5vCi0gICAgICAgIGxvbmdlciByZWNvbW1l bmRlZC4gIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gMS4xLjAgZGlzYWJsZXMK LSAgICAgICAgY29tcHJlc3Npb24gYnkgZGVmYXVsdCwgYW5kIG1hbnkgb3BlcmF0aW5nIHN5c3Rl bSBkaXN0cmlidXRpb25zCi0gICAgICAgIGRpc2FibGUgaXQgaW4gcHJpb3IgdmVyc2lvbnMgYXMg d2VsbCwgc28gc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBvbgotICAgICAgICB3aWxsIG5vdCBo YXZlIGFueSBlZmZlY3QgaWYgdGhlIHNlcnZlciBkb2VzIG5vdCBhY2NlcHQgY29tcHJlc3Npb24u Ci0gICAgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gMTQgZGlzYWJs ZXMgY29tcHJlc3Npb24KLSAgICAgICAgY29tcGxldGVseSBpbiB0aGUgYmFja2VuZC4KLSAgICAg ICA8L3BhcmE+CisgICAgICAgIGxvbmdlciByZWNvbW1lbmRlZC4KKyAgICAgICAgPGl0ZW1pemVk bGlzdD4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAg PHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPjogMS4xLjAgZGlzYWJsZXMgY29tcHJl c3Npb24gYnkKKyAgICAgICAgICAgZGVmYXVsdCwgYW5kIG1hbnkgb3BlcmF0aW5nIHN5c3RlbSBk aXN0cmlidXRpb25zIGRpc2FibGUgaXQgaW4gcHJpb3IKKyAgICAgICAgICAgdmVyc2lvbnMgYXMg d2VsbCwgc28gc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBvbiB3aWxsIG5vdCBoYXZlIGFueQor ICAgICAgICAgICBlZmZlY3QgaWYgdGhlIHNlcnZlciBkb2VzIG5vdCBhY2NlcHQgY29tcHJlc3Np b24uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KIAotICAgICAgIDxw YXJhPgotICAgICAgICBJZiBzZWN1cml0eSBpcyBub3QgYSBwcmltYXJ5IGNvbmNlcm4sIGNvbXBy ZXNzaW9uIGNhbiBpbXByb3ZlCi0gICAgICAgIHRocm91Z2hwdXQgaWYgdGhlIG5ldHdvcmsgaXMg dGhlIGJvdHRsZW5lY2suICBEaXNhYmxpbmcgY29tcHJlc3Npb24KLSAgICAgICAgY2FuIGltcHJv dmUgcmVzcG9uc2UgdGltZSBhbmQgdGhyb3VnaHB1dCBpZiBDUFUgcGVyZm9ybWFuY2UgaXMgdGhl Ci0gICAgICAgIGxpbWl0aW5nIGZhY3Rvci4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+OiBTU0wg Y29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBpbgorICAgICAgICAgICA8cHJvZHVjdG5hbWU+ TlNTPC9wcm9kdWN0bmFtZT4sIHRoaXMgcGFyYW1ldGVyIGhhcyBubyBlZmZlY3QuCisgICAgICAg ICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+ CiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CkBAIC0xNjY4LDEwICsxNzQwLDI0IEBAIHBvc3RncmVzcWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0 Z3Jlc3FsL2RibmFtZQogICAgICAgPHRlcm0+PGxpdGVyYWw+c3NsY2VydDwvbGl0ZXJhbD48L3Rl cm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgcGFyYW1l dGVyIHNwZWNpZmllcyB0aGUgZmlsZSBuYW1lIG9mIHRoZSBjbGllbnQgU1NMCi0gICAgICAgIGNl cnRpZmljYXRlLCByZXBsYWNpbmcgdGhlIGRlZmF1bHQKLSAgICAgICAgPGZpbGVuYW1lPn4vLnBv c3RncmVzcWwvcG9zdGdyZXNxbC5jcnQ8L2ZpbGVuYW1lPi4KLSAgICAgICAgVGhpcyBwYXJhbWV0 ZXIgaXMgaWdub3JlZCBpZiBhbiBTU0wgY29ubmVjdGlvbiBpcyBub3QgbWFkZS4KKyAgICAgICAg VGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBuYW1lIG9yIGxvY2F0aW9uIG9mIHRoZSBjbGll bnQgU1NMCisgICAgICAgIGNlcnRpZmljYXRlLiAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBp ZiBhbiBTU0wgY29ubmVjdGlvbiBpcyBub3QKKyAgICAgICAgbWFkZS4KKyAgICAgICAgPGl0ZW1p emVkbGlzdD4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAg ICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPjogY2FuIHJlcGxhY2UgdGhlIGRl ZmF1bHQKKyAgICAgICAgICAgPGZpbGVuYW1lPn4vLnBvc3RncmVzcWwvcG9zdGdyZXNxbC5jcnQ8 L2ZpbGVuYW1lPi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorCisg ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgIDxwcm9kdWN0 bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPjogdGhlIG5pY2tuYW1lIG9mIHRoZSBjbGllbnQgU1NMCisg ICAgICAgICAgIGNlcnRpZmljYXRlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgIDwvcGFyYT4KICAgICAgIDwv bGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTY4MCwxNSArMTc2NiwzMCBAQCBw b3N0Z3Jlc3FsOi8vJTJGdmFyJTJGbGliJTJGcG9zdGdyZXNxbC9kYm5hbWUKICAgICAgIDx0ZXJt PjxsaXRlcmFsPnNzbGtleTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbG9jYXRpb24g Zm9yIHRoZSBzZWNyZXQga2V5IHVzZWQgZm9yCi0gICAgICAgIHRoZSBjbGllbnQgY2VydGlmaWNh dGUuIEl0IGNhbiBlaXRoZXIgc3BlY2lmeSBhIGZpbGUgbmFtZSB0aGF0IHdpbGwKLSAgICAgICAg YmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0Ci0gICAgICAgIDxmaWxlbmFtZT5+Ly5wb3N0 Z3Jlc3FsL3Bvc3RncmVzcWwua2V5PC9maWxlbmFtZT4sIG9yIGl0IGNhbiBzcGVjaWZ5IGEga2V5 Ci0gICAgICAgIG9idGFpbmVkIGZyb20gYW4gZXh0ZXJuYWwgPHF1b3RlPmVuZ2luZTwvcXVvdGU+ IChlbmdpbmVzIGFyZQotICAgICAgICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+ IGxvYWRhYmxlIG1vZHVsZXMpLiAgQW4gZXh0ZXJuYWwgZW5naW5lCi0gICAgICAgIHNwZWNpZmlj YXRpb24gc2hvdWxkIGNvbnNpc3Qgb2YgYSBjb2xvbi1zZXBhcmF0ZWQgZW5naW5lIG5hbWUgYW5k Ci0gICAgICAgIGFuIGVuZ2luZS1zcGVjaWZpYyBrZXkgaWRlbnRpZmllci4gIFRoaXMgcGFyYW1l dGVyIGlzIGlnbm9yZWQgaWYgYW4KLSAgICAgICAgU1NMIGNvbm5lY3Rpb24gaXMgbm90IG1hZGUu CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbmFtZSBvciBsb2NhdGlvbiBm b3IgdGhlIHNlY3JldCBrZXkgdXNlZAorICAgICAgICBmb3IgdGhlIGNsaWVudCBjZXJ0aWZpY2F0 ZS4gVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBpZiBhbiBTU0wKKyAgICAgICAgY29ubmVjdGlv biBpcyBub3QgbWFkZS4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3By b2R1Y3RuYW1lPjogY2FuIGVpdGhlciBzcGVjaWZ5IGEgZmlsZSBuYW1lCisgICAgICAgICAgIHRo YXQgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgPGZpbGVu YW1lPn4vLnBvc3RncmVzcWwvcG9zdGdyZXNxbC5rZXk8L2ZpbGVuYW1lPiwgb3IgaXQgY2FuIHNw ZWNpZnkKKyAgICAgICAgICAgYSBrZXkgb2J0YWluZWQgZnJvbSBhbiBleHRlcm5hbCA8cXVvdGU+ ZW5naW5lPC9xdW90ZT4gKGVuZ2luZXMgYXJlCisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVu U1NMPC9wcm9kdWN0bmFtZT4gbG9hZGFibGUgbW9kdWxlcykuICBBbiBleHRlcm5hbAorICAgICAg ICAgICBlbmdpbmUgc3BlY2lmaWNhdGlvbiBzaG91bGQgY29uc2lzdCBvZiBhIGNvbG9uLXNlcGFy YXRlZCBlbmdpbmUgbmFtZQorICAgICAgICAgICBhbmQgYW4gZW5naW5lLXNwZWNpZmljIGtleSBp ZGVudGlmaWVyLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3Ru YW1lPk5TUzwvcHJvZHVjdG5hbWU+OiB0aGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiAgS2V5 cworICAgICAgICAgICBzaG91bGQgYmUgbG9hZGVkIGludG8gdGhlIDxwcm9kdWN0bmFtZT5OU1M8 L3Byb2R1Y3RuYW1lPgorICAgICAgICAgICBkYXRhYmFzZS4KKyAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8L3Bh cmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE2OTksMjgg KzE4MDAsNDQgQEAgcG9zdGdyZXNxbDovLyUyRnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1l CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgcGFz c3dvcmQgZm9yIHRoZSBzZWNyZXQga2V5IHNwZWNpZmllZCBpbgogICAgICAgICA8bGl0ZXJhbD5z c2xrZXk8L2xpdGVyYWw+LCBhbGxvd2luZyBjbGllbnQgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXlz Ci0gICAgICAgIHRvIGJlIHN0b3JlZCBpbiBlbmNyeXB0ZWQgZm9ybSBvbiBkaXNrIGV2ZW4gd2hl biBpbnRlcmFjdGl2ZSBwYXNzcGhyYXNlCisgICAgICAgIHRvIGJlIHN0b3JlZCBpbiBlbmNyeXB0 ZWQgZm9ybSBldmVuIHdoZW4gaW50ZXJhY3RpdmUgcGFzc3BocmFzZQogICAgICAgICBpbnB1dCBp cyBub3QgcHJhY3RpY2FsLgotICAgICAgIDwvcGFyYT4KLSAgICAgICA8cGFyYT4KLSAgICAgICAg U3BlY2lmeWluZyB0aGlzIHBhcmFtZXRlciB3aXRoIGFueSBub24tZW1wdHkgdmFsdWUgc3VwcHJl c3NlcyB0aGUKLSAgICAgICAgPGxpdGVyYWw+RW50ZXIgUEVNIHBhc3MgcGhyYXNlOjwvbGl0ZXJh bD4KLSAgICAgICAgcHJvbXB0IHRoYXQgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1l PiB3aWxsIGVtaXQgYnkgZGVmYXVsdAotICAgICAgICB3aGVuIGFuIGVuY3J5cHRlZCBjbGllbnQg Y2VydGlmaWNhdGUga2V5IGlzIHByb3ZpZGVkIHRvCi0gICAgICAgIDxsaXRlcmFsPmxpYnBxPC9s aXRlcmFsPi4KLSAgICAgICA8L3BhcmE+Ci0gICAgICAgPHBhcmE+Ci0gICAgICAgIElmIHRoZSBr ZXkgaXMgbm90IGVuY3J5cHRlZCB0aGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkLiBUaGUgcGFyYW1l dGVyCi0gICAgICAgIGhhcyBubyBlZmZlY3Qgb24ga2V5cyBzcGVjaWZpZWQgYnkgPHByb2R1Y3Ru YW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPgotICAgICAgICBlbmdpbmVzIHVubGVzcyB0aGUgZW5n aW5lIHVzZXMgdGhlIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4KLSAgICAgICAg cGFzc3dvcmQgY2FsbGJhY2sgbWVjaGFuaXNtIGZvciBwcm9tcHRzLgotICAgICAgIDwvcGFyYT4K LSAgICAgICA8cGFyYT4KLSAgICAgICAgVGhlcmUgaXMgbm8gZW52aXJvbm1lbnQgdmFyaWFibGUg ZXF1aXZhbGVudCB0byB0aGlzIG9wdGlvbiwgYW5kIG5vCi0gICAgICAgIGZhY2lsaXR5IGZvciBs b29raW5nIGl0IHVwIGluIDxmaWxlbmFtZT4ucGdwYXNzPC9maWxlbmFtZT4uIEl0IGNhbiBiZQot ICAgICAgICB1c2VkIGluIGEgc2VydmljZSBmaWxlIGNvbm5lY3Rpb24gZGVmaW5pdGlvbi4gVXNl cnMgd2l0aAotICAgICAgICBtb3JlIHNvcGhpc3RpY2F0ZWQgdXNlcyBzaG91bGQgY29uc2lkZXIg dXNpbmcgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBlbmdpbmVzIGFuZAotICAg ICAgICB0b29scyBsaWtlIFBLQ1MjMTEgb3IgVVNCIGNyeXB0byBvZmZsb2FkIGRldmljZXMuCisg ICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT46IHNwZWNp ZnlpbmcgdGhpcyBwYXJhbWV0ZXIgd2l0aAorICAgICAgICAgICBhbnkgbm9uLWVtcHR5IHZhbHVl IHN1cHByZXNzZXMgdGhlCisgICAgICAgICAgIDxsaXRlcmFsPkVudGVyIFBFTSBwYXNzIHBocmFz ZTo8L2xpdGVyYWw+IHByb21wdCB0aGF0CisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NM PC9wcm9kdWN0bmFtZT4gd2lsbCBlbWl0IGJ5IGRlZmF1bHQgd2hlbiBhbgorICAgICAgICAgICBl bmNyeXB0ZWQgY2xpZW50IGNlcnRpZmljYXRlIGtleSBpcyBwcm92aWRlZCB0bworICAgICAgICAg ICA8bGl0ZXJhbD5saWJwcTwvbGl0ZXJhbD4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAg IDxwYXJhPgorICAgICAgICAgICBJZiB0aGUga2V5IGlzIG5vdCBlbmNyeXB0ZWQgdGhpcyBwYXJh bWV0ZXIgaXMgaWdub3JlZC4gVGhlIHBhcmFtZXRlcgorICAgICAgICAgICBoYXMgbm8gZWZmZWN0 IG9uIGtleXMgc3BlY2lmaWVkIGJ5IDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4K KyAgICAgICAgICAgZW5naW5lcyB1bmxlc3MgdGhlIGVuZ2luZSB1c2VzIHRoZSA8cHJvZHVjdG5h bWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+CisgICAgICAgICAgIHBhc3N3b3JkIGNhbGxiYWNrIG1l Y2hhbmlzbSBmb3IgcHJvbXB0cy4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgIFRoZXJlIGlzIG5vIGVudmlyb25tZW50IHZhcmlhYmxlIGVxdWl2YWxlbnQg dG8gdGhpcyBvcHRpb24sIGFuZCBubworICAgICAgICAgICBmYWNpbGl0eSBmb3IgbG9va2luZyBp dCB1cCBpbiA8ZmlsZW5hbWU+LnBncGFzczwvZmlsZW5hbWU+LiBJdCBjYW4gYmUKKyAgICAgICAg ICAgdXNlZCBpbiBhIHNlcnZpY2UgZmlsZSBjb25uZWN0aW9uIGRlZmluaXRpb24uIFVzZXJzIHdp dGgKKyAgICAgICAgICAgbW9yZSBzb3BoaXN0aWNhdGVkIHVzZXMgc2hvdWxkIGNvbnNpZGVyIHVz aW5nCisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gZW5naW5l cyBhbmQgdG9vbHMgbGlrZSBQS0NTIzExIG9yCisgICAgICAgICAgIFVTQiBjcnlwdG8gb2ZmbG9h ZCBkZXZpY2VzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3Ru YW1lPk5TUzwvcHJvZHVjdG5hbWU+OiBzcGVjaWZ5aW5nIHRoZSBwYXJhbWV0ZXIgaXMgcmVxdWly ZWQKKyAgICAgICAgICAgaW4gY2FzZSBhbnkgcGFzc3dvcmQgcHJvdGVjdGVkIGl0ZW1zIGFyZSBy ZWZlcmVuY2VkIGluIHRoZQorICAgICAgICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFt ZT4gZGF0YWJhc2UsIG9yIGlmIHRoZSBkYXRhYmFzZSBpdHNlbGYKKyAgICAgICAgICAgaXMgcGFz c3dvcmQgcHJvdGVjdGVkLiBBbGwgYXR0ZW1wdHMgdG8gZGVjcnlwdCBvYmplY3RzIHdoaWNoIGFy ZQorICAgICAgICAgICBwYXNzd29yZCBwcm90ZWN0ZWQgaW4gdGhlIGRhdGFiYXNlIHdpbGwgdXNl IHRoaXMgcGFzc3dvcmQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRl bT4KICAgICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xNzI5LDExICsxODQ2LDI3IEBAIHBvc3RncmVz cWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsL2RibmFtZQogICAgICAgPHRlcm0+PGxpdGVy YWw+c3Nscm9vdGNlcnQ8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAg IDxwYXJhPgotICAgICAgICBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYSBm aWxlIGNvbnRhaW5pbmcgU1NMCi0gICAgICAgIGNlcnRpZmljYXRlIGF1dGhvcml0eSAoPGFjcm9u eW0+Q0E8L2Fjcm9ueW0+KSBjZXJ0aWZpY2F0ZShzKS4KLSAgICAgICAgSWYgdGhlIGZpbGUgZXhp c3RzLCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUgd2lsbCBiZSB2ZXJpZmllZAotICAgICAgICB0 byBiZSBzaWduZWQgYnkgb25lIG9mIHRoZXNlIGF1dGhvcml0aWVzLiAgVGhlIGRlZmF1bHQgaXMK LSAgICAgICAgPGZpbGVuYW1lPn4vLnBvc3RncmVzcWwvcm9vdC5jcnQ8L2ZpbGVuYW1lPi4KKyAg ICAgICAgVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIFNTTCBjZXJ0aWZpY2F0 ZSBhdXRob3JpdHkKKyAgICAgICAgKDxhY3JvbnltPkNBPC9hY3JvbnltPikgY2VydGlmaWNhdGUo cykuCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT46 IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGZpbGUKKyAgICAgICAgICAgY29udGFpbmluZyBTU0wg Y2VydGlmaWNhdGUgYXV0aG9yaXR5ICg8YWNyb255bT5DQTwvYWNyb255bT4pCisgICAgICAgICAg IGNlcnRpZmljYXRlKHMpLiAgSWYgdGhlIGZpbGUgZXhpc3RzLCB0aGUgc2VydmVyJ3MgY2VydGlm aWNhdGUgd2lsbAorICAgICAgICAgICBiZSB2ZXJpZmllZCB0byBiZSBzaWduZWQgYnkgb25lIG9m IHRoZXNlIGF1dGhvcml0aWVzLiAgVGhlIGRlZmF1bHQgaXMKKyAgICAgICAgICAgPGZpbGVuYW1l Pn4vLnBvc3RncmVzcWwvcm9vdC5jcnQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBh cmE+CisgICAgICAgICAgIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPjogdGhpcyBwYXJh bWV0ZXIgaGFzIG5vIGVmZmVjdC4gIENBCisgICAgICAgICAgIGNlcnRpZmljYXRlcyBzaG91bGQg YmUgbG9hZGVkIGludG8gdGhlIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPgorICAgICAg ICAgICBkYXRhYmFzZSB1c2luZyB0aGUgPGFwcGxpY2F0aW9uPmNlcnR1dGlsPC9hcHBsaWNhdGlv bj4gdG9vbC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg ICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE3NDMsMTMgKzE4NzYsMjkgQEAgcG9zdGdyZXNxbDovLyUy RnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAg PHBhcmE+CiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZmlsZSBuYW1lIG9m IHRoZSBTU0wgY2VydGlmaWNhdGUKLSAgICAgICAgcmV2b2NhdGlvbiBsaXN0IChDUkwpLiAgQ2Vy dGlmaWNhdGVzIGxpc3RlZCBpbiB0aGlzIGZpbGUsIGlmIGl0Ci0gICAgICAgIGV4aXN0cywgd2ls bCBiZSByZWplY3RlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGF1dGhlbnRpY2F0ZSB0aGUKLSAgICAg ICAgc2VydmVyJ3MgY2VydGlmaWNhdGUuICBJZiBuZWl0aGVyCi0gICAgICAgIDx4cmVmIGxpbmtl bmQ9J2xpYnBxLWNvbm5lY3Qtc3NsY3JsJy8+IG5vcgotICAgICAgICA8eHJlZiBsaW5rZW5kPSds aWJwcS1jb25uZWN0LXNzbGNybGRpcicvPiBpcyBzZXQsIHRoaXMgc2V0dGluZyBpcwotICAgICAg ICB0YWtlbiBhcwotICAgICAgICA8ZmlsZW5hbWU+fi8ucG9zdGdyZXNxbC9yb290LmNybDwvZmls ZW5hbWU+LgorICAgICAgICByZXZvY2F0aW9uIGxpc3QgKENSTCkuICAKKworICAgICAgICA8aXRl bWl6ZWRsaXN0PgorICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAg ICAgICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+OiBDZXJ0aWZpY2F0ZXMgbGlz dGVkIGluIHRoaXMgZmlsZSwKKyAgICAgICAgICAgaWYgaXQgZXhpc3RzLCB3aWxsIGJlIHJlamVj dGVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gYXV0aGVudGljYXRlIHRoZQorICAgICAgICAgICBzZXJ2 ZXIncyBjZXJ0aWZpY2F0ZS4gIElmIG5laXRoZXIKKyAgICAgICAgICAgPHhyZWYgbGlua2VuZD0n bGlicHEtY29ubmVjdC1zc2xjcmwnLz4gbm9yCisgICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9J2xp YnBxLWNvbm5lY3Qtc3NsY3JsZGlyJy8+IGlzIHNldCwgdGhpcyBzZXR0aW5nIGlzCisgICAgICAg ICAgIHRha2VuIGFzIDxmaWxlbmFtZT5+Ly5wb3N0Z3Jlc3FsL3Jvb3QuY3JsPC9maWxlbmFtZT4u IAorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3RuYW1lPk5TUzwv cHJvZHVjdG5hbWU+OiBUaGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiAgQ1JMCisgICAgICAg ICAgIGZpbGVzIHNob3VsZCBiZSBsb2FkZWQgaW50byB0aGUgPHByb2R1Y3RuYW1lPk5TUzwvcHJv ZHVjdG5hbWU+CisgICAgICAgICAgIGRhdGFiYXNlIHVzaW5nIHRoZSA8YXBwbGljYXRpb24+Y3Js dXRpbDwvYXBwbGljYXRpb24+IHRvb2wuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9s aXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisKICAgICAgICA8L3BhcmE+CiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE3NjIsMTkgKzE5MTEsMzEg QEAgcG9zdGdyZXNxbDovLyUyRnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICAg IHJldm9jYXRpb24gbGlzdCAoQ1JMKS4gIENlcnRpZmljYXRlcyBsaXN0ZWQgaW4gdGhlIGZpbGVz IGluIHRoaXMKICAgICAgICAgZGlyZWN0b3J5LCBpZiBpdCBleGlzdHMsIHdpbGwgYmUgcmVqZWN0 ZWQgd2hpbGUgYXR0ZW1wdGluZyB0bwogICAgICAgICBhdXRoZW50aWNhdGUgdGhlIHNlcnZlcidz IGNlcnRpZmljYXRlLgotICAgICAgIDwvcGFyYT4KIAotICAgICAgIDxwYXJhPgotICAgICAgICBU aGUgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHByZXBhcmVkIHdpdGggdGhlCi0gICAgICAgIDxwcm9k dWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gY29tbWFuZAotICAgICAgICA8bGl0ZXJhbD5v cGVuc3NsIHJlaGFzaDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Y19yZWhhc2g8L2xpdGVyYWw+LiAg U2VlCi0gICAgICAgIGl0cyBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgotICAgICAgIDwvcGFy YT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPjog dGhlIGRpcmVjdG9yeSBuZWVkcyB0byBiZQorICAgICAgICAgICBwcmVwYXJlZCB3aXRoIHRoZSA8 cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgPGxp dGVyYWw+b3BlbnNzbCByZWhhc2g8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmNfcmVoYXNoPC9saXRl cmFsPi4KKyAgICAgICAgICAgU2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgQm90aCA8bGl0ZXJh bD5zc2xjcmw8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zc2xjcmxkaXI8L2xpdGVyYWw+IGNhbgor ICAgICAgICAgICBiZSBzcGVjaWZpZWQgdG9nZXRoZXIuCisgICAgICAgICAgPC9wYXJhPgorICAg ICAgICAgPC9saXN0aXRlbT4KIAotICAgICAgIDxwYXJhPgotICAgICAgICBCb3RoIDxsaXRlcmFs PnNzbGNybDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNzbGNybGRpcjwvbGl0ZXJhbD4gY2FuIGJl Ci0gICAgICAgIHNwZWNpZmllZCB0b2dldGhlci4KKyAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICAgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+OiBU aGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiAgQ1JMCisgICAgICAgICAgIGZpbGVzIHNob3Vs ZCBiZSBsb2FkZWQgaW50byB0aGUgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+CisgICAg ICAgICAgIGRhdGFiYXNlIHVzaW5nIHRoZSA8YXBwbGljYXRpb24+Y3JsdXRpbDwvYXBwbGljYXRp b24+IHRvb2wuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgorCiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTgyOSw4ICsxOTkwLDggQEAgcG9zdGdyZXNxbDov LyUyRnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICAgIGZvciB0aGUgY29ubmVj dGlvbi4gVmFsaWQgdmFsdWVzIGFyZSA8bGl0ZXJhbD5UTFN2MTwvbGl0ZXJhbD4sCiAgICAgICAg IDxsaXRlcmFsPlRMU3YxLjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD5UTFN2MS4yPC9saXRlcmFsPiBh bmQKICAgICAgICAgPGxpdGVyYWw+VExTdjEuMzwvbGl0ZXJhbD4uIFRoZSBzdXBwb3J0ZWQgcHJv dG9jb2xzIGRlcGVuZCBvbiB0aGUKLSAgICAgICAgdmVyc2lvbiBvZiA8cHJvZHVjdG5hbWU+T3Bl blNTTDwvcHJvZHVjdG5hbWU+IHVzZWQsIG9sZGVyIHZlcnNpb25zCi0gICAgICAgIG5vdCBzdXBw b3J0aW5nIHRoZSBtb3N0IG1vZGVybiBwcm90b2NvbCB2ZXJzaW9ucy4gSWYgbm90IHNwZWNpZmll ZCwKKyAgICAgICAgdmVyc2lvbiBvZiB0aGUgU1NMIGxpYnJhcnkgdXNlZCwgb2xkZXIgdmVyc2lv bnMgbWF5IAorICAgICAgICBub3Qgc3VwcG9ydCB0aGUgbW9zdCBtb2Rlcm4gcHJvdG9jb2wgdmVy c2lvbnMuIElmIG5vdCBzcGVjaWZpZWQsCiAgICAgICAgIHRoZSBkZWZhdWx0IGlzIDxsaXRlcmFs PlRMU3YxLjI8L2xpdGVyYWw+LCB3aGljaCBzYXRpc2ZpZXMgaW5kdXN0cnkKICAgICAgICAgYmVz dCBwcmFjdGljZXMgYXMgb2YgdGhpcyB3cml0aW5nLgogICAgICAgIDwvcGFyYT4KQEAgLTE4NDUs OCArMjAwNiw4IEBAIHBvc3RncmVzcWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsL2RibmFt ZQogICAgICAgICBmb3IgdGhlIGNvbm5lY3Rpb24uIFZhbGlkIHZhbHVlcyBhcmUgPGxpdGVyYWw+ VExTdjE8L2xpdGVyYWw+LAogICAgICAgICA8bGl0ZXJhbD5UTFN2MS4xPC9saXRlcmFsPiwgPGxp dGVyYWw+VExTdjEuMjwvbGl0ZXJhbD4gYW5kCiAgICAgICAgIDxsaXRlcmFsPlRMU3YxLjM8L2xp dGVyYWw+LiBUaGUgc3VwcG9ydGVkIHByb3RvY29scyBkZXBlbmQgb24gdGhlCi0gICAgICAgIHZl cnNpb24gb2YgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiB1c2VkLCBvbGRlciB2 ZXJzaW9ucwotICAgICAgICBub3Qgc3VwcG9ydGluZyB0aGUgbW9zdCBtb2Rlcm4gcHJvdG9jb2wg dmVyc2lvbnMuIElmIG5vdCBzZXQsIHRoaXMKKyAgICAgICAgdmVyc2lvbiBvZiB0aGUgU1NMIGxp YnJhcnkgdXNlZCwgb2xkZXIgdmVyc2lvbnMKKyAgICAgICAgbWF5IG5vdCBzdXBwb3J0IHRoZSBt b3N0IG1vZGVybiBwcm90b2NvbCB2ZXJzaW9ucy4gSWYgbm90IHNldCwgdGhpcwogICAgICAgICBw YXJhbWV0ZXIgaXMgaWdub3JlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCB1c2UgdGhlIG1heGlt dW0gYm91bmQKICAgICAgICAgZGVmaW5lZCBieSB0aGUgYmFja2VuZCwgaWYgc2V0LiBTZXR0aW5n IHRoZSBtYXhpbXVtIHByb3RvY29sIHZlcnNpb24KICAgICAgICAgaXMgbWFpbmx5IHVzZWZ1bCBm b3IgdGVzdGluZyBvciBpZiBzb21lIGNvbXBvbmVudCBoYXMgaXNzdWVzIHdvcmtpbmcKQEAgLTI2 MDgsNiArMjc2OSw4IEBAIHZvaWQgKlBRc3NsU3RydWN0KGNvbnN0IFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc3RydWN0X25hbWUpOwogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAg ICAgVGhlIHN0cnVjdChzKSBhdmFpbGFibGUgZGVwZW5kIG9uIHRoZSBTU0wgaW1wbGVtZW50YXRp b24gaW4gdXNlLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CiAgICAgICAgRm9yIDxwcm9k dWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4sIHRoZXJlIGlzIG9uZSBzdHJ1Y3QsCiAgICAg ICAgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lICJPcGVuU1NMIiwgYW5kIGl0IHJldHVybnMgYSBw b2ludGVyIHRvIHRoZQogICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4g PGxpdGVyYWw+U1NMPC9saXRlcmFsPiBzdHJ1Y3QuCkBAIC0yNjMxLDkgKzI3OTQsMTUgQEAgdm9p ZCAqUFFzc2xTdHJ1Y3QoY29uc3QgUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpzdHJ1Y3RfbmFt ZSk7CiBdXT48L3Byb2dyYW1saXN0aW5nPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0g ICAgICAgVGhpcyBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IGVuY3J5cHRpb24gbGV2 ZWxzLCBjaGVjayBzZXJ2ZXIKLSAgICAgICBjZXJ0aWZpY2F0ZXMsIGFuZCBtb3JlLiBSZWZlciB0 byB0aGUgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPgotICAgICAgIGRvY3VtZW50 YXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgc3RydWN0dXJlLgorICAgICAgIEZvciA8 cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sIHRoZXJlIGlzIG9uZSBzdHJ1Y3QgYXZhaWxh YmxlIHVuZGVyCisgICAgICAgdGhlIG5hbWUgIk5TUyIsIGFuZCBpdCByZXR1cm5zIGEgcG9pbnRl ciB0byB0aGUKKyAgICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gPGFjcm9ueW0+ U1NMPC9hY3JvbnltPgorICAgICAgIDxsaXRlcmFsPlBSRmlsZURlc2M8L2xpdGVyYWw+IGFzc29j aWF0ZWQgd2l0aCB0aGUgY29ubmVjdGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRoZXNlIHN0cnVjdHVyZXMgY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IGVuY3J5cHRpb24g bGV2ZWxzLCBjaGVjayBzZXJ2ZXIKKyAgICAgICBjZXJ0aWZpY2F0ZXMsIGFuZCBtb3JlLiBSZWZl ciB0byB0aGUgPGFjcm9ueW0+U1NMPC9hY3JvbnltPiBsaWJyYXJ5CisgICAgICAgZG9jdW1lbnRh dGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2Ugc3RydWN0dXJlcy4KICAgICAgIDwvcGFy YT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI2NjAsNiArMjgy OSwxMCBAQCB2b2lkICpQUWdldHNzbChjb25zdCBQR2Nvbm4gKmNvbm4pOwogICAgICAgIDx4cmVm IGxpbmtlbmQ9ImxpYnBxLVBRc3NsSW5Vc2UiLz4gaW5zdGVhZCwgYW5kIGZvciBtb3JlIGRldGFp bHMgYWJvdXQgdGhlCiAgICAgICAgY29ubmVjdGlvbiwgdXNlIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRc3NsQXR0cmlidXRlIi8+LgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg VGhpcyBmdW5jdGlvbiByZXR1cm5zIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHdoZW4gPGFjcm9u eW0+U1NMPC9hY3JvbnltPgorICAgICAgIGxpYnJhcmlhZXMgb3RoZXIgdGhhbiA8cHJvZHVjdG5h bWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGFyZSB1c2VkLgorICAgICAgPC9wYXJhPgogICAgICA8 L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC04NzA4LDYgKzg4ODEsMTIgQEAg dm9pZCBQUWluaXRPcGVuU1NMKGludCBkb19zc2wsIGludCBkb19jcnlwdG8pOwogICAgICAgIGJl Zm9yZSBmaXJzdCBvcGVuaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbi4gIEFsc28gYmUgc3VyZSB0 aGF0IHlvdQogICAgICAgIGhhdmUgZG9uZSB0aGF0IGluaXRpYWxpemF0aW9uIGJlZm9yZSBvcGVu aW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbi4KICAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgd2hlbiB1c2luZyA8cHJvZHVjdG5h bWU+TlNTPC9wcm9kdWN0bmFtZT4gYXMKKyAgICAgICB0aGUgPGFjcm9ueW0+U1NMPC9hY3Jvbnlt PiBsaWJyYXJ5LCBubyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIGlzCisgICAgICAgcmVxdWlyZWQg Zm9yIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPi4KKyAgICAgIDwvcGFyYT4KICAgICAg PC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtODczNCw2ICs4OTEzLDEyIEBA IHZvaWQgUFFpbml0U1NMKGludCBkb19zc2wpOwogICAgICAgIG1pZ2h0IGJlIHByZWZlcmFibGUg Zm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gd29yayB3aXRoIG9sZGVyCiAgICAgICAgdmVy c2lvbnMgb2YgPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlvbj4uCiAgICAgICA8L3BhcmE+ CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nIHdoZW4g dXNpbmcgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+IGFzCisgICAgICAgdGhlIDxhY3Jv bnltPlNTTDwvYWNyb255bT4gbGlicmFyeSwgbm8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiBpcwor ICAgICAgIHJlcXVpcmVkIGZvciA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4uCisgICAg ICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAgICA8L3Zh cmlhYmxlbGlzdD4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9ydW50aW1lLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcnVudGltZS5zZ21sCmluZGV4IGQ3NGQxZWQ3YWYuLjYzMThkYWEwN2YgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9ydW50aW1lLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3J1bnRp bWUuc2dtbApAQCAtMjE4MiwxNSArMjE4MiwyMSBAQCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3Fs IC1kIHBvc3RncmVzIC1wIDU0MzMKIAogICA8aW5kZXh0ZXJtIHpvbmU9InNzbC10Y3AiPgogICAg PHByaW1hcnk+U1NMPC9wcmltYXJ5PgorICAgPHNlY29uZGFyeT5UTFM8L3NlY29uZGFyeT4KICAg PC9pbmRleHRlcm0+CiAKICAgPHBhcmE+CiAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IGhhcyBuYXRpdmUgc3VwcG9ydCBmb3IgdXNpbmcKICAgIDxhY3JvbnltPlNTTDwv YWNyb255bT4gY29ubmVjdGlvbnMgdG8gZW5jcnlwdCBjbGllbnQvc2VydmVyIGNvbW11bmljYXRp b25zCiAgICBmb3IgaW5jcmVhc2VkIHNlY3VyaXR5LiBUaGlzIHJlcXVpcmVzIHRoYXQKLSAgIDxw cm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gaXMgaW5zdGFsbGVkIG9uIGJvdGggY2xp ZW50IGFuZAorICAgYSBzdXBwb3J0ZWQgVExTIGxpYnJhcnkgaXMgaW5zdGFsbGVkIG9uIGJvdGgg Y2xpZW50IGFuZAogICAgc2VydmVyIHN5c3RlbXMgYW5kIHRoYXQgc3VwcG9ydCBpbiA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGlzCiAgICBlbmFibGVkIGF0IGJ1aWxkIHRp bWUgKHNlZSA8eHJlZiBsaW5rZW5kPSJpbnN0YWxsYXRpb24iLz4pLgorICAgU3VwcG9ydGVkIGxp YnJhcmllcyBhcmUgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBhbmQKKyAgIDxw cm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPi4gVGhlIHRlcm1zIDxhY3JvbnltPlNTTDwvYWNy b255bT4gYW5kCisgICA8YWNyb255bT5UTFM8L2Fjcm9ueW0+IGFyZSBvZnRlbiB1c2VkIGludGVy Y2hhbmdlYWJseSB0byBtZWFuIGEgc2VjdXJlCisgICBjb25uZWN0aW9uIHVzaW5nIGEgPGFjcm9u eW0+VExTPC9hY3JvbnltPiBwcm90b2NvbCwgZXZlbiB0aG91Z2gKKyAgIDxhY3JvbnltPlNTTDwv YWNyb255bT4gcHJvdG9jb2xzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkLgogICA8L3BhcmE+CiAK ICAgPHNlY3QyIGlkPSJzc2wtc2V0dXAiPgpAQCAtMjIxMCw4ICsyMjE2LDEzIEBAIHBnX2R1bXBh bGwgLXAgNTQzMiB8IHBzcWwgLWQgcG9zdGdyZXMgLXAgNTQzMwogICA8L3BhcmE+CiAKICAgPHBh cmE+Ci0gICBUbyBzdGFydCBpbiA8YWNyb255bT5TU0w8L2Fjcm9ueW0+IG1vZGUsIGZpbGVzIGNv bnRhaW5pbmcgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZQotICAgYW5kIHByaXZhdGUga2V5IG11c3Qg ZXhpc3QuICBCeSBkZWZhdWx0LCB0aGVzZSBmaWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUKKyAgIFRv IHN0YXJ0IGluIDxhY3JvbnltPlNTTDwvYWNyb255bT4gbW9kZSwgYSBzZXJ2ZXIgY2VydGlmaWNh dGUKKyAgIGFuZCBwcml2YXRlIGtleSBtdXN0IGV4aXN0LiBUaGUgYmVsb3cgc2VjdGlvbnMgb24g dGhlIGRpZmZlcmVudCBsaWJyYXJpZXMKKyAgIHdpbGwgZGlzY3VzcyBob3cgdG8gY29uZmlndXJl IHRoZXNlLgorICA8L3BhcmE+CisgICAKKyAgPHBhcmE+CisgICBCeSBkZWZhdWx0LCB0aGVzZSBm aWxlcyBhcmUgZXhwZWN0ZWQgdG8gYmUKICAgIG5hbWVkIDxmaWxlbmFtZT5zZXJ2ZXIuY3J0PC9m aWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5zZXJ2ZXIua2V5PC9maWxlbmFtZT4sIHJlc3BlY3RpdmVs eSwgaW4KICAgIHRoZSBzZXJ2ZXIncyBkYXRhIGRpcmVjdG9yeSwgYnV0IG90aGVyIG5hbWVzIGFu ZCBsb2NhdGlvbnMgY2FuIGJlIHNwZWNpZmllZAogICAgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24g cGFyYW1ldGVycyA8eHJlZiBsaW5rZW5kPSJndWMtc3NsLWNlcnQtZmlsZSIvPgpAQCAtMjMwMSw2 ICsyMzEyLDE4IEBAIHBnX2R1bXBhbGwgLXAgNTQzMiB8IHBzcWwgLWQgcG9zdGdyZXMgLXAgNTQz MwogICA8L25vdGU+CiAgIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJzc2wtbnNzLWNvbmZpZyI+ CisgICA8dGl0bGU+TlNTIENvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB3aWxsIGxvb2sgZm9yIGNlcnRpZmlj YXRlcyBhbmQga2V5cworICAgaW4gdGhlIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBk YXRhYmFzZSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtZXRlcgorICAgPHhyZWYgbGlua2VuZD0iZ3Vj LXNzbC1kYXRhYmFzZSIvPiBpbiA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4u CisgICBUaGUgcGFyYW1ldGVycyBmb3IgY2VydGlmaWNhdGUgYW5kIGtleSBmaWxlbmFtZXMgYXJl IHVzZWQgdG8gaWRlbnRpZnkgdGhlCisgICBuaWNrbmFtZXMgaW4gdGhlIGRhdGFiYXNlLgorICA8 L3BhcmE+CisgIDwvc2VjdDI+CisKICAgPHNlY3QyIGlkPSJzc2wtY2xpZW50LWNlcnRpZmljYXRl cyI+CiAgICA8dGl0bGU+VXNpbmcgQ2xpZW50IENlcnRpZmljYXRlczwvdGl0bGU+CiAKQEAgLTIz NzUsNyArMjM5OCw3IEBAIHBnX2R1bXBhbGwgLXAgNTQzMiB8IHBzcWwgLWQgcG9zdGdyZXMgLXAg NTQzMwogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0ic3NsLXNlcnZlci1maWxlcyI+Ci0gICA8 dGl0bGU+U1NMIFNlcnZlciBGaWxlIFVzYWdlPC90aXRsZT4KKyAgIDx0aXRsZT5TU0wgU2VydmVy IEZpbGUgUGFyYW1ldGVyIFVzYWdlPC90aXRsZT4KIAogICAgPHBhcmE+CiAgICAgPHhyZWYgbGlu a2VuZD0ic3NsLWZpbGUtdXNhZ2UiLz4gc3VtbWFyaXplcyB0aGUgZmlsZXMgdGhhdCBhcmUKQEAg LTI0MjIsNiArMjQ0NSwxNCBAQCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBvc3RncmVz IC1wIDU0MzMKICAgICAgIDxlbnRyeT5jbGllbnQgY2VydGlmaWNhdGUgbXVzdCBub3QgYmUgb24g dGhpcyBsaXN0PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48eHJlZiBsaW5rZW5kPSJndWMtc3NsLWRhdGFiYXNlIi8+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT5jZXJ0aWZpY2F0ZSBkYXRhYmFzZTwvZW50cnk+CisgICAgICA8ZW50cnk+Y29udGFpbnMgc2Vy dmVyIGNlcnRpZmljYXRlcywga2V5cyBhbmQgcmV2b2NhdGlvbiBsaXN0czsgb25seQorICAgICAg dXNlZCB3aGVuIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaXMgYnVpbHQg d2l0aCBzdXBwb3J0CisgICAgICBmb3IgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+Ljwv ZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3Rh YmxlPgpAQCAtMjQ0NSw3ICsyNDc2LDcgQEAgcGdfZHVtcGFsbCAtcCA1NDMyIHwgcHNxbCAtZCBw b3N0Z3JlcyAtcCA1NDMzCiAgIDwvc2VjdDI+CiAKICAgPHNlY3QyIGlkPSJzc2wtY2VydGlmaWNh dGUtY3JlYXRpb24iPgotICAgPHRpdGxlPkNyZWF0aW5nIENlcnRpZmljYXRlczwvdGl0bGU+Cisg ICA8dGl0bGU+Q3JlYXRpbmcgQ2VydGlmaWNhdGVzIHdpdGggT3BlblNTTDwvdGl0bGU+CiAKICAg IDxwYXJhPgogICAgICBUbyBjcmVhdGUgYSBzaW1wbGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUg Zm9yIHRoZSBzZXJ2ZXIsIHZhbGlkIGZvciAzNjUKQEAgLTI1NDksNiArMjU4MCw4OSBAQCBvcGVu c3NsIHg1MDkgLXJlcSAtaW4gc2VydmVyLmNzciAtdGV4dCAtZGF5cyAzNjUgXAogICAgPC9wYXJh PgogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0ibnNzLWNlcnRpZmljYXRlLWRhdGFiYXNlIj4K KyAgIDx0aXRsZT5OU1MgQ2VydGlmaWNhdGUgRGF0YWJhc2VzPC90aXRsZT4KKworICAgPHBhcmE+ CisgICAgV2hlbiB1c2luZyA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sIGFsbCBjZXJ0 aWZpY2F0ZXMgYW5kIGtleXMgbXVzdAorICAgIGJlIGxvYWRlZCBpbnRvIGFuIDxwcm9kdWN0bmFt ZT5OU1M8L3Byb2R1Y3RuYW1lPiBjZXJ0aWZpY2F0ZSBkYXRhYmFzZS4KKyAgIDwvcGFyYT4KKwor ICAgPHBhcmE+CisgICAgVG8gY3JlYXRlIGEgbmV3IDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3Ru YW1lPiBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBhbmQKKyAgICBsb2FkIHRoZSBjZXJ0aWZpY2F0ZXMg Y3JlYXRlZCBpbiA8eHJlZiBsaW5rZW5kPSJzc2wtY2VydGlmaWNhdGUtY3JlYXRpb24iIC8+LAor ICAgIHVzZSB0aGUgZm9sbG93aW5nIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiBjb21t YW5kczoKKzxwcm9ncmFtbGlzdGluZz4KK2NlcnR1dGlsIC1kICJzcWw6c2VydmVyLmRiIiAtTiAt LWVtcHR5LXBhc3N3b3JkCitjZXJ0dXRpbCAtZCAic3FsOnNlcnZlci5kYiIgLUEgLW4gc2VydmVy LmNydCAtaSBzZXJ2ZXIuY3J0IC10ICJDVCxDLEMiCitjZXJ0dXRpbCAtZCAic3FsOnNlcnZlci5k YiIgLUEgLW4gcm9vdC5jcnQgLWkgcm9vdC5jcnQgLXQgIkNULEMsQyIKKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgVGhpcyB3aWxsIGdpdmUgdGhlIGNlcnRpZmljYXRlIHRoZSBmaWxlbmFtZSBhcyB0 aGUgbmlja25hbWUgaWRlbnRpZmllciBpbgorICAgIHRoZSBkYXRhYmFzZSB3aGljaCBpcyBjcmVh dGVkIGFzIDxmaWxlbmFtZT5zZXJ2ZXIuZGI8L2ZpbGVuYW1lPi4KKyAgIDwvcGFyYT4KKyAgIDxw YXJhPgorICAgIFRoZW4gbG9hZCB0aGUgc2VydmVyIGtleSwgd2hpY2ggcmVxdWlyZXMgY29udmVy dGluZyBpdCB0bworICAgIDxhY3JvbnltPlBLQ1MjMTI8L2Fjcm9ueW0+IGZvcm1hdCB1c2luZyB0 aGUKKyAgICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IHRvb2xzOgorPHByb2dy YW1saXN0aW5nPgorb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNlcnZlci5wZnggLWlua2V5 IHNlcnZlci5rZXkgLWluIHNlcnZlci5jcnQgXAorICAtY2VydGZpbGUgcm9vdC5jcnQgLXBhc3Nv dXQgcGFzczoKK3BrMTJ1dGlsIC1pIHNlcnZlci5wZnggLWQgc2VydmVyLmRiIC1XICcnCis8L3By b2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgRmluYWxseSBhIGNlcnRp ZmljYXRlIHJldm9jYXRpb24gbGlzdCBjYW4gYmUgbG9hZGVkIHdpdGggdGhlIGZvbGxvd2luZwor ICAgIGNvbW1hbmRzOgorPHByb2dyYW1saXN0aW5nPgorY3JsdXRpbCAtSSAtaSBzZXJ2ZXIuY3Js IC1kIHNlcnZlci5kYiAtQgorPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0 Mj4KKworICA8c2VjdDIgaWQ9Im5zcy1zc2wtY2VydGlmaWNhdGUtY3JlYXRpb24iPgorICAgPHRp dGxlPkNyZWF0aW5nIENlcnRpZmljYXRlcyB3aXRoIE5TUzwvdGl0bGU+CisKKyAgIDxwYXJhPgor ICAgIFRvIGNyZWF0ZSBhIHNpbXBsZSBzZWxmLXNpZ25lZCBDQSBhbmQgY2VydGlmaWNhdGUgZm9y IHRoZSBzZXJ2ZXIsIHVzZSB0aGUKKyAgICBmb2xsb3dpbmcgTlNTIGNvbW1hbmRzLiBSZXBsYWNl CisgICAgPHJlcGxhY2VhYmxlPioueW91cmRvbWFpbi5jb208L3JlcGxhY2VhYmxlPiB3aXRoIHRo ZSBzZXJ2ZXIncyBob3N0CisgICAgbmFtZS4gUmVtb3ZlIDxyZXBsYWNlYWJsZT4tLWVtcHR5LXBh c3N3b3JkPC9yZXBsYWNlYWJsZT4gaW4gb3JkZXIgdG8gc2V0CisgICAgYSBwYXNzd29yZCBwcm90 ZWN0aW5nIHRoZSBkYXRhYmFzZXMuIFRoZSBwYXNzd29yZCBjYW4gYmUgcGFzc2VkIHRvCisgICAg PGFwcGxpY2F0aW9uPmNlcnR1dGlsPC9hcHBsaWNhdGlvbj4gd2l0aCB0aGUgPGxpdGVyYWw+LWY8 L2xpdGVyYWw+IHBhcmFtZXRlci4KKyAgICBGaXJzdCBjcmVhdGUgYSBzZWxmLXNpZ25lZCBDQS4g VG8gdXNlIGEgZGlmZmVyZW50IGNlcnRpZmljYXRlIHZhbGlkaXR5CisgICAgdGltZSB0aGFuIHRo ZSBkZWZhdWx0LCB1c2UgPHJlcGxhY2VhYmxlPi12PC9yZXBsYWNlYWJsZT4gdG8gc3BlY2lmeSB0 aGUKKyAgICBudW1iZXIgb2YgbW9udGhzIG9mIHZhbGlkaXR5LgorPHByb2dyYW1saXN0aW5nPgor bWtkaXIgcm9vdF9jYS5kYgorY2VydHV0aWwgLU4gLWQgInNxbDpyb290X2NhLmRiLyIgLS1lbXB0 eS1wYXNzd29yZAorY2VydHV0aWwgLVMgLWQgInNxbDpyb290X2NhLmRiLyIgLW4gcm9vdF9jYSAt cyAiQ049PHJlcGxhY2VhYmxlPmNhLnlvdXJkb21haW4uY29tPC9yZXBsYWNlYWJsZT4iIFwKKyAg LXggLWsgcnNhIC1nIDIwNDggLW0gPHJlcGxhY2VhYmxlPjU0MzI8L3JlcGxhY2VhYmxlPiAtdCBD VHUsQ1R1LENUdSBcCisgIC0ta2V5VXNhZ2UgY2VydFNpZ25pbmcgLTIgLS1uc0NlcnRUeXBlIHNz bENBLHNtaW1lQ0Esb2JqZWN0U2lnbmluZ0NBIFwKKyAgLVogU0hBMjU2CitjZXJ0dXRpbCAtTCAt ZCAic3FsOnJvb3RfY2EuZGIvIiAtbiByb290X2NhIC1hID4gcm9vdF9jYS5wZW0KKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgTm93IGNyZWF0ZSBhIHNlcnZlciBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSwg YW5kIGNyZWF0ZSBhIGNlcnRpZmljYXRlIHNpZ25pbmcKKyAgICByZXF1ZXN0IGZvciB0aGUgQ0Eu IFRoZW4gc2lnbiB0aGUgcmVxdWVzdCB3aXRoIHRoZSBhbHJlYWR5IGNyZWF0ZWQgQ0EgYW5kCisg ICAgaW5zZXJ0IHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpbnRvIHRoZSBjZXJ0aWZpY2F0ZSBkYXRh YmFzZS4KKzxwcm9ncmFtbGlzdGluZz4KK21rZGlyIHNlcnZlcl9jZXJ0LmRiCitjZXJ0dXRpbCAt TiAtZCAic3FsOnNlcnZlcl9jZXJ0LmRiLyIgLS1lbXB0eS1wYXNzd29yZAorY2VydHV0aWwgLVIg LWQgInNxbDpzZXJ2ZXJfY2VydC5kYi8iIC1zICJDTj1kYmhvc3QueW91cmRvbWFpbi5jb20iIFwK KyAgLW8gc2VydmVyX2NlcnQuY3NyIC1nIDIwNDggLVogU0hBMjU2CisKK2NlcnR1dGlsIC1DIC1k ICJzcWw6cm9vdF9jYS5kYi8iIC1jIHJvb3RfY2EgLWkgc2VydmVyX2NlcnQuY3NyIFwKKyAgLW8g c2VydmVyX2NlcnQuZGVyIC1tIDxyZXBsYWNlYWJsZT41NDMzPC9yZXBsYWNlYWJsZT4gXAorICAt LWtleVVzYWdlIGtleUVuY2lwaGVybWVudCxkYXRhRW5jaXBoZXJtZW50LGRpZ2l0YWxTaWduYXR1 cmUgXAorICAtLW5zQ2VydFR5cGUgc3NsU2VydmVyIC1aIFNIQTI1NgorCitjZXJ0dXRpbCAtQSAt ZCAic3FsOnNlcnZlcl9jZXJ0LmRiLyIgLW4gcm9vdF9jYSAtdCBDVHUsQ1R1LENUdSAtYSAtaSBy b290X2NhLnBlbQorY2VydHV0aWwgLUEgLWQgInNxbDpzZXJ2ZXJfY2VydC5kYi8iIC1uIHNlcnZl cl9jZXJ0IC10IENUdSxDVHUsQ1R1IC1pIHNlcnZlcl9jZXJ0LmRlcgorPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICBUaGUgc2VydmVyIGNlcnRpZmljYXRlIGlzIGxvYWRlZCBpbnRvIHRoZSBjZXJ0aWZp Y2F0ZSBkYXRhYmFzZSBhcyB3ZWxsIGFzCisgICAgdGhlIENBIGNlcnRpZmljYXRlIGluIG9yZGVy IHRvIHByb3ZpZGUgdGhlIGNoYWluIG9mIGNlcnRpZmljYXRlcy4KKyAgIDwvcGFyYT4KKyAgPC9z ZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9Imdzc2FwaS1lbmMiPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvbGlicHEvUkVBRE1FLlNTTCBiL3NyYy9iYWNrZW5kL2xpYnBxL1JFQURN RS5TU0wKaW5kZXggZDg0YTQzNGE2ZS4uYzA3MjJiNTU4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbGlicHEvUkVBRE1FLlNTTAorKysgYi9zcmMvYmFja2VuZC9saWJwcS9SRUFETUUuU1NMCkBA IC04MCwzICs4MCwzMSBAQCBhcmUgdW5hY2NlcHRhYmxlLgogVGhlIGRvd25zaWRlIHRvIEVESCBp cyB0aGF0IGl0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIHNzbGR1bXAoMSkKIGlmIHRoZXJl J3MgYSBwcm9ibGVtIGVzdGFibGlzaGluZyBhbiBTU0wgc2Vzc2lvbi4gIEluIHRoaXMgY2FzZSB5 b3UnbGwKIG5lZWQgdG8gdGVtcG9yYXJpbHkgZGlzYWJsZSBFREggKHNlZSBpbml0aWFsaXplX2Ro KCkpLgorCisKK1N1cHBvcnRpbmcgYSBuZXcgVExTIGJhY2tlbmQKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworVExTIHN1cHBvcnQgaW4gUG9zdGdyZVNRTCBpcyBpbXBsZW1lbnRlZCB3 aXRoIGFuIEFQSSB3aGljaCBhYnN0cmFjdHMgYW55Citrbm93bGVkZ2UgYWJvdXQgdGhlIGxpYnJh cnkgdXNlZCBmcm9tIGNvcmUgc2VydmVyIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvZGUuCitBZGRp bmcgc3VwcG9ydCBmb3IgYSBuZXcgVExTIGxpYnJhcnkgY2FuIGJlIGRvbmUgYWxtb3N0IHdpdGhv dXQgY2hhbmdpbmcgYW55Citjb3JlIFBvc3RncmVTUUwgY29kZS4gVGhlIG1vZHVsZXMgd2hpY2gg bmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgYXJlIGJyaWVmbHkKK2Rlc2NyaWJlZCBiZWxvdy4KKwor RWFjaCBzdXBwb3J0ZWQgVExTIGxpYnJhcnkgaXMgaW1wbGVtZW50ZWQgaW4gaXRzIG93biBmaWxl IGZvciB0aGUgbGlicHEKK2Zyb250ZW5kIGFuZCBiYWNrZW5kLiBUaGUgQVBJIGlzIGRlZmluZWQg aW4gYmUtc2VjdXJlLmMgYW5kIGZlLXNlY3VyZS5jCityZXNwZWN0aXZlbHkuIEVhY2ggbGlicmFy eSBjYW4gYWRkIHJlbGV2YW50IGNvbm5lY3Rpb24gc3RydWN0dXJlcyB0byB0aGUKK1BvcnQgYW5k IFBHQ29ubiBvYmplY3RzLgorCitwZ19jcnlwdG9oYXNoIGlzIGFuIGludGVybmFsIEFQSSBmb3Ig aW52b2tpbmcgY3J5cHRvZ3JhcGhpYyBoYXNoIGFsZ29yaXRobXMKK29uIGRhdGEuIEVhY2ggc3Vw cG9ydGVkIFRMUyBsaWJyYXJ5IGltcGxlbWVudHMgdGhlIEFQSSBkZWZpbmVkIGluIHRoZSBoZWFk ZXIKK2NvbW1vbi9jcnlwdG9oYXNoLmgsIHdpdGggdGhlIGltcGxlbWVudGF0aW9uIHVzZWQgZGVj aWRlZCBhdCBidWlsZC10aW1lLgorCitwZ19zdHJvbmdfcmFuZG9tIHByb3ZpZGUgdGhlIGJhY2tl bmQgd2l0aCBhIHNvdXJjZSBvZiBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUKK3JhbmRvbSBudW1i ZXJzLgorCitjb250cmliL3NzbGluZm8gcHJvdmlkZSBzaW1pbGFyIGluZm9ybWF0aW9uIHRvIHBn X3N0YXRfc3NsLCB3aXRoIGEgZmV3IGxpYnJhcnkKK3NwZWNpZmljIGV4dGVuc2lvbnMuCisKK2Nv bnRyaWIvcGdjcnlwdG8gcHJvdmlkZSBhIGxhcmdlciBzZWxlY3Rpb24gb2YgZGlnZXN0IGFuZCBo YXNoIGFsZ29yaXRobXMKK3doZW4gY29tcGlsZWQgYWdhaW5zdCBhIFRMUyBsaWJyYXJ5LgotLSAK Mi4yNS4xCgo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0007-nss-Support-NSS-in-pgcrypto.patch" Content-Description: v44-0007-nss-Support-NSS-in-pgcrypto.patch Content-Disposition: attachment; filename="v44-0007-nss-Support-NSS-in-pgcrypto.patch"; size=25522; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <6EC3CC483DB1F04A921FE3C73A944FDF@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBjNjI2NThlZThiNGMzZTA5MWMxZTY4YjUwNjNiZjQ0YzJiYjJiODQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDUgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw Ny8xMF0gbnNzOiBTdXBwb3J0IE5TUyBpbiBwZ2NyeXB0bwoKVGhpcyBleHRlbmRzIHBnY3J5cHRv IHRvIGJlIGFibGUgdG8gdXNlIGxpYm5zcyBhcyBhIGNyeXB0b2dyYXBoaWMKYmFja2VuZCBmb3Ig cGdjcnlwdG8gbXVjaCBsaWtlIGhvdyBPcGVuU1NMIGlzIGEgc3VwcG9ydGVkIGJhY2tlbmQuCkJs b3dmaXNoIGlzIG5vdCBhIHN1cHBvcnRlZCBjaXBoZXIgaW4gTlNTLCBzbyB0aGUgaW1wbGVtZW50 YXRpb24KZmFsbHMgYmFjayBvbiB0aGUgYnVpbHQtaW4gQkYgY29kZSB0byBiZSBjb21wYXRpYmxl IGluIHRlcm1zIG9mCmNpcGhlciBzdXBwb3J0LgotLS0KIGNvbnRyaWIvcGdjcnlwdG8vTWFrZWZp bGUgIHwgICA3ICstCiBjb250cmliL3BnY3J5cHRvL25zcy5jICAgICB8IDc1MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbCB8 ICA0OSArKy0KIDMgZmlsZXMgY2hhbmdlZCwgNzk1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdjcnlwdG8vbnNzLmMKCmRpZmYgLS1n aXQgYS9jb250cmliL3BnY3J5cHRvL01ha2VmaWxlIGIvY29udHJpYi9wZ2NyeXB0by9NYWtlZmls ZQppbmRleCBjMGI0ZjFmY2Y2Li5lZGU3YTc4MTQ2IDEwMDY0NAotLS0gYS9jb250cmliL3BnY3J5 cHRvL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUKQEAgLTcsMTEgKzcs MTQgQEAgSU5UX1RFU1RTID0gc2hhMgogT1NTTF9TUkNTID0gb3BlbnNzbC5jIHBncC1tcGktb3Bl bnNzbC5jCiBPU1NMX1RFU1RTID0gc2hhMiBkZXMgM2RlcyBjYXN0NQogCitOU1NfU1JDUyA9IG5z cy5jIHBncC1tcGktaW50ZXJuYWwuYyBpbWF0aC5jIGJsZi5jCitOU1NfVEVTVFMgPSBzaGEyIGRl cyAzZGVzCisKIFpMSUJfVFNUID0gcGdwLWNvbXByZXNzaW9uCiBaTElCX09GRl9UU1QgPSBwZ3At emxpYi1ESVNBQkxFRAogCi1DRl9TUkNTID0gJChpZiAkKHN1YnN0IG9wZW5zc2wsLCQod2l0aF9z c2wpKSwgJChJTlRfU1JDUyksICQoT1NTTF9TUkNTKSkKLUNGX1RFU1RTID0gJChpZiAkKHN1YnN0 IG9wZW5zc2wsLCQod2l0aF9zc2wpKSwgJChJTlRfVEVTVFMpLCAkKE9TU0xfVEVTVFMpKQorQ0Zf U1JDUyA9ICQoaWYgJChmaW5kc3RyaW5nIG9wZW5zc2wsICQod2l0aF9zc2wpKSwgJChPU1NMX1NS Q1MpLCAkKGlmICQoZmluZHN0cmluZyBuc3MsICQod2l0aF9zc2wpKSwgJChOU1NfU1JDUyksICQo SU5UX1NSQ1MpKSkKK0NGX1RFU1RTID0gJChpZiAkKGZpbmRzdHJpbmcgb3BlbnNzbCwgJCh3aXRo X3NzbCkpLCAkKE9TU0xfVEVTVFMpLCAkKGlmICQoZmluZHN0cmluZyBuc3MsICQod2l0aF9zc2wp KSwgJChOU1NfVEVTVFMpLCAkKElOVF9URVNUUykpKQogQ0ZfUEdQX1RFU1RTID0gJChpZiAkKHN1 YnN0IG5vLCwkKHdpdGhfemxpYikpLCAkKFpMSUJfVFNUKSwgJChaTElCX09GRl9UU1QpKQogCiBT UkNTID0gXApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2NyeXB0by9uc3MuYyBiL2NvbnRyaWIvcGdj cnlwdG8vbnNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDRmZDQ2 ODBlYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdjcnlwdG8vbnNzLmMKQEAgLTAsMCAr MSw3NTMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG5zcy5jCisgKgkgIFdyYXBwZXIg Zm9yIHVzaW5nIE5TUyBhcyBhIGJhY2tlbmQgZm9yIHBnY3J5cHRvIFBYCisgKgorICoKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRo ZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBj b250cmliL3BnY3J5cHRvL25zcy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJweC5oIgorI2luY2x1ZGUgImJsZi5oIgor I2luY2x1ZGUgImNvbW1vbi9uc3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisj aW5jbHVkZSA8bnNzL25zcy5oPgorI2luY2x1ZGUgPG5zcy9oYXNodC5oPgorI2luY2x1ZGUgPG5z cy9wazExZnVuYy5oPgorI2luY2x1ZGUgPG5zcy9wazExcHViLmg+CisjaW5jbHVkZSA8bnNzL3Nl Y2l0ZW0uaD4KKyNpbmNsdWRlIDxuc3Mvc2VjaGFzaC5oPgorI2luY2x1ZGUgPG5zcy9zZWNvaWQu aD4KKyNpbmNsdWRlIDxuc3Mvc2VjZXJyLmg+CisKKy8qCisgKiBEZWZpbmUgb3VyIG93biBtZWNo YW5pc21zIGZvciBCbG93ZmlzaCBhcyBpdCdzIG5vdCBpbXBsZW1lbnRlZCBieSBOU1MuCisgKi8K KyNkZWZpbmUgQkxPV0ZJU0hfQ0JDCSgxKQorI2RlZmluZSBCTE9XRklTSF9FQ0IJKDIpCisKKy8q CisgKiBEYXRhIHN0cnVjdHVyZXMgZm9yIHJlY29yZGluZyBjaXBoZXIgaW1wbGVtZW50YXRpb25z IGFzIHdlbGwgYXMgb25nb2luZworICogY2lwaGVyIG9wZXJhdGlvbnMuCisgKi8KK3R5cGVkZWYg c3RydWN0IG5zc19kaWdlc3QKK3sKKwlOU1NJbml0Q29udGV4dCAqY29udGV4dDsKKwlQSzExQ29u dGV4dCAqaGFzaF9jb250ZXh0OworCUhBU0hfSGFzaFR5cGUgaGFzaF90eXBlOworfQkJCW5zc19k aWdlc3Q7CisKK3R5cGVkZWYgc3RydWN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbgoreworCS8qIEZ1 bmN0aW9uIHBvaW50ZXJzIHRvIGNpcGhlciBvcGVyYXRpb25zICovCisJaW50CQkJKCppbml0KSAo UFhfQ2lwaGVyICpweGMsIGNvbnN0IHVpbnQ4ICprZXksIHVuc2lnbmVkIGtsZW4sIGNvbnN0IHVp bnQ4ICppdik7CisJdW5zaWduZWQJKCpnZXRfYmxvY2tfc2l6ZSkgKFBYX0NpcGhlciAqcHhjKTsK Kwl1bnNpZ25lZAkoKmdldF9rZXlfc2l6ZSkgKFBYX0NpcGhlciAqcHhjKTsKKwl1bnNpZ25lZAko KmdldF9pdl9zaXplKSAoUFhfQ2lwaGVyICpweGMpOworCWludAkJCSgqZW5jcnlwdCkgKFBYX0Np cGhlciAqcHhjLCBjb25zdCB1aW50OCAqZGF0YSwgdW5zaWduZWQgZGxlbiwgdWludDggKnJlcyk7 CisJaW50CQkJKCpkZWNyeXB0KSAoUFhfQ2lwaGVyICpweGMsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1 bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKTsKKwl2b2lkCQkoKmZyZWUpIChQWF9DaXBoZXIgKnB4 Yyk7CisKKwkvKiBUaGUgbWVjaGFuaXNtIGRlc2NyaWJpbmcgdGhlIGNpcGhlciB1c2VkICovCisJ dW5pb24KKwl7CisJCUNLX01FQ0hBTklTTV9UWVBFIG5zczsKKwkJQ0tfVUxPTkcJaW50ZXJuYWw7 CisJfQkJCW1lY2hhbmlzbTsKKwlpbnQJCQlrZXlsZW47CisJYm9vbAkJaXNfbnNzOworfQkJCWNp cGhlcl9pbXBsZW1lbnRhdGlvbjsKKwordHlwZWRlZiBzdHJ1Y3QgbnNzX2NpcGhlcgoreworCWNv bnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiAqaW1wbDsKKwlOU1NJbml0Q29udGV4dCAqY29udGV4 dDsKKwlQSzExQ29udGV4dCAqY3J5cHRfY29udGV4dDsKKwlTRUNJdGVtICAgICpwYXJhbXM7CisK KwlQSzExU3ltS2V5ICplbmNyeXB0X2tleTsKKwlQSzExU3ltS2V5ICpkZWNyeXB0X2tleTsKK30J CQluc3NfY2lwaGVyOworCit0eXBlZGVmIHN0cnVjdCBpbnRlcm5hbF9jaXBoZXIKK3sKKwljb25z dCBjaXBoZXJfaW1wbGVtZW50YXRpb24gKmltcGw7CisJQmxvd2Zpc2hDb250ZXh0IGNvbnRleHQ7 Cit9CQkJaW50ZXJuYWxfY2lwaGVyOworCit0eXBlZGVmIHN0cnVjdCBuc3NfY2lwaGVyX3JlZgor eworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uICppbXBs OworfQkJCW5zc19jaXBoZXJfcmVmOworCisvKgorICogUHJvdG90eXBlcworICovCitzdGF0aWMg dW5zaWduZWQgbnNzX2dldF9pdl9zaXplKFBYX0NpcGhlciAqcHhjKTsKK3N0YXRpYyB1bnNpZ25l ZCBuc3NfZ2V0X2Jsb2NrX3NpemUoUFhfQ2lwaGVyICpweGMpOworCisvKgorICogbnNzX0dldEhh c2hPaWRUYWdCeUhhc2hUeXBlCisgKgorICogUmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBTRUNP aWRUYWcgZm9yIHRoZSBwYXNzZWQgaGFzaCB0eXBlLiBOU1MgMy40MworICogaW5jbHVkZXMgSEFT SF9HZXRIYXNoT2lkVGFnQnlIYXNoVHlwZSBmb3IgdGhpcyBwdXJwb3NlLCBidXQgYXQgdGhlIHRp bWUgb2YKKyAqIHdyaXRpbmcgaXMgbm90IGNvbW1vbmx5IGF2YWlsYWJsZSBzbyB3ZSBuZWVkIG91 ciBvd24gdmVyc2lvbiB0aWxsIHRoZW4uCisgKi8KK3N0YXRpYyBTRUNPaWRUYWcKK25zc19HZXRI YXNoT2lkVGFnQnlIYXNoVHlwZShIQVNIX0hhc2hUeXBlIHR5cGUpCit7CisJaWYgKHR5cGUgPT0g SEFTSF9BbGdNRDIpCisJCXJldHVybiBTRUNfT0lEX01EMjsKKwlpZiAodHlwZSA9PSBIQVNIX0Fs Z01ENSkKKwkJcmV0dXJuIFNFQ19PSURfTUQ1OworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBMSkK KwkJcmV0dXJuIFNFQ19PSURfU0hBMTsKKwlpZiAodHlwZSA9PSBIQVNIX0FsZ1NIQTIyNCkKKwkJ cmV0dXJuIFNFQ19PSURfU0hBMjI0OworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBMjU2KQorCQly ZXR1cm4gU0VDX09JRF9TSEEyNTY7CisJaWYgKHR5cGUgPT0gSEFTSF9BbGdTSEEzODQpCisJCXJl dHVybiBTRUNfT0lEX1NIQTM4NDsKKwlpZiAodHlwZSA9PSBIQVNIX0FsZ1NIQTUxMikKKwkJcmV0 dXJuIFNFQ19PSURfU0hBNTEyOworCisJcmV0dXJuIFNFQ19PSURfVU5LTk9XTjsKK30KKworc3Rh dGljIHVuc2lnbmVkCituc3NfZGlnZXN0X2Jsb2NrX3NpemUoUFhfTUQgKnB4bWQpCit7CisJbnNz X2RpZ2VzdCAqZGlnZXN0ID0gKG5zc19kaWdlc3QgKikgcHhtZC0+cC5wdHI7CisJY29uc3QgU0VD SGFzaE9iamVjdCAqb2JqZWN0OworCisJb2JqZWN0ID0gSEFTSF9HZXRIYXNoT2JqZWN0KGRpZ2Vz dC0+aGFzaF90eXBlKTsKKwlyZXR1cm4gb2JqZWN0LT5ibG9ja2xlbmd0aDsKK30KKworc3RhdGlj IHVuc2lnbmVkCituc3NfZGlnZXN0X3Jlc3VsdF9zaXplKFBYX01EICpweG1kKQoreworCW5zc19k aWdlc3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCWNvbnN0IFNFQ0hh c2hPYmplY3QgKm9iamVjdDsKKworCW9iamVjdCA9IEhBU0hfR2V0SGFzaE9iamVjdChkaWdlc3Qt Pmhhc2hfdHlwZSk7CisJcmV0dXJuIG9iamVjdC0+bGVuZ3RoOworfQorCitzdGF0aWMgdm9pZAor bnNzX2RpZ2VzdF9mcmVlKFBYX01EICpweG1kKQoreworCW5zc19kaWdlc3QgKmRpZ2VzdCA9IChu c3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCVBSQm9vbAkJZnJlZV9jdHggPSBQUl9UUlVFOwor CisJUEsxMV9EZXN0cm95Q29udGV4dChkaWdlc3QtPmhhc2hfY29udGV4dCwgZnJlZV9jdHgpOwor CU5TU19TaHV0ZG93bkNvbnRleHQoZGlnZXN0LT5jb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQK K25zc19kaWdlc3RfdXBkYXRlKFBYX01EICpweG1kLCBjb25zdCB1aW50OCAqZGF0YSwgdW5zaWdu ZWQgZGxlbikKK3sKKwluc3NfZGlnZXN0ICpkaWdlc3QgPSAobnNzX2RpZ2VzdCAqKSBweG1kLT5w LnB0cjsKKworCVBLMTFfRGlnZXN0T3AoZGlnZXN0LT5oYXNoX2NvbnRleHQsIGRhdGEsIGRsZW4p OworfQorCitzdGF0aWMgdm9pZAorbnNzX2RpZ2VzdF9yZXNldChQWF9NRCAqcHhtZCkKK3sKKwlu c3NfZGlnZXN0ICpkaWdlc3QgPSAobnNzX2RpZ2VzdCAqKSBweG1kLT5wLnB0cjsKKworCVBLMTFf RGlnZXN0QmVnaW4oZGlnZXN0LT5oYXNoX2NvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorbnNz X2RpZ2VzdF9maW5pc2goUFhfTUQgKnB4bWQsIHVpbnQ4ICpkc3QpCit7CisJdW5zaWduZWQgaW50 IG91dGxlbjsKKwluc3NfZGlnZXN0ICpkaWdlc3QgPSAobnNzX2RpZ2VzdCAqKSBweG1kLT5wLnB0 cjsKKwljb25zdCBTRUNIYXNoT2JqZWN0ICpvYmplY3Q7CisKKwlvYmplY3QgPSBIQVNIX0dldEhh c2hPYmplY3QoZGlnZXN0LT5oYXNoX3R5cGUpOworCVBLMTFfRGlnZXN0RmluYWwoZGlnZXN0LT5o YXNoX2NvbnRleHQsIGRzdCwgJm91dGxlbiwgb2JqZWN0LT5sZW5ndGgpOworfQorCitpbnQKK3B4 X2ZpbmRfZGlnZXN0KGNvbnN0IGNoYXIgKm5hbWUsIFBYX01EICoqcmVzKQoreworCVBYX01ECSAg ICpweG1kOworCU5TU0luaXRQYXJhbWV0ZXJzIHBhcmFtczsKKwlOU1NJbml0Q29udGV4dCAqbnNz X2NvbnRleHQ7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwluc3NfZGlnZXN0ICpkaWdlc3Q7CisJ U0VDU3RhdHVzCXN0YXR1czsKKwlTRUNPaWREYXRhICpoYXNoOworCUhBU0hfSGFzaFR5cGUgdDsK KworCS8qCisJICogSW5pdGlhbGl6ZSBvdXIgb3duIE5TUyBjb250ZXh0IHdpdGhvdXQgYSBkYXRh YmFzZSBiYWNraW5nIGl0LgorCSAqLworCW1lbXNldCgmcGFyYW1zLCAwLCBzaXplb2YocGFyYW1z KSk7CisJcGFyYW1zLmxlbmd0aCA9IHNpemVvZihwYXJhbXMpOworCW5zc19jb250ZXh0ID0gTlNT X0luaXRDb250ZXh0KCIiLCAiIiwgIiIsICIiLCAmcGFyYW1zLAorCQkJCQkJCQkgIE5TU19JTklU X1JFQURPTkxZIHwgTlNTX0lOSVRfTk9DRVJUREIgfAorCQkJCQkJCQkgIE5TU19JTklUX05PTU9E REIgfCBOU1NfSU5JVF9GT1JDRU9QRU4gfAorCQkJCQkJCQkgIE5TU19JTklUX05PUk9PVElOSVQg fCBOU1NfSU5JVF9QSzExUkVMT0FEKTsKKworCS8qCisJICogVGhlcmUgaXMgbm8gQVBJIGZ1bmN0 aW9uIGZvciBsb29raW5nIHVwIGEgZGlnZXN0IGFsZ29yaXRobSBmcm9tIGEgbmFtZQorCSAqIHN0 cmluZywgYnV0IHRoZXJlIGlzIGEgcHVibGljbHkgYWNjZXNzaWJsZSBhcnJheSB3aGljaCBjYW4g YmUgc2Nhbm5lZAorCSAqIGZvciB0aGUgbmFtZS4KKwkgKi8KKwlmb3IgKHQgPSBIQVNIX0FsZ05V TEwgKyAxOyB0IDwgSEFTSF9BbGdUT1RBTDsgdCsrKQorCXsKKwkJU0VDT2lkVGFnCWhhc2hfb2lk OworCQljaGFyCSAgICpwOworCisJCWhhc2hfb2lkID0gbnNzX0dldEhhc2hPaWRUYWdCeUhhc2hU eXBlKHQpOworCisJCWlmIChoYXNoX29pZCA9PSBTRUNfT0lEX1VOS05PV04pCisJCQlyZXR1cm4g UFhFX05PX0hBU0g7CisKKwkJaGFzaCA9IFNFQ09JRF9GaW5kT0lEQnlUYWcoaGFzaF9vaWQpOwor CQlpZiAocGdfc3RyY2FzZWNtcChoYXNoLT5kZXNjLCBuYW1lKSA9PSAwKQorCQl7CisJCQlmb3Vu ZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIE5TUyBzYXZlcyB0aGUgYWxn b3JpdGhtIG5hbWVzIHVzaW5nIFNIQS14eHggbm90YXRpb24gd2hlcmVhcworCQkgKiBPcGVuU1NM IHVzZSBTSEF4eHguIFRvIG1ha2Ugc3VyZSB0aGUgdXNlciBmaW5kcyB0aGUgcmVxdWVzdGVkCisJ CSAqIGFsZ29yaXRobSBsZXQncyByZW1vdmUgdGhlIGRhc2ggYW5kIGNvbXBhcmUgdGhhdCBzcGVs bGluZyBhcyB3ZWxsLgorCQkgKi8KKwkJaWYgKChwID0gc3RyY2hyKGhhc2gtPmRlc2MsICctJykp ICE9IE5VTEwpCisJCXsKKwkJCWNoYXIJCXRtcFsxMl07CisKKwkJCW1lbWNweSh0bXAsIGhhc2gt PmRlc2MsIHAgLSBoYXNoLT5kZXNjKTsKKwkJCW1lbWNweSh0bXAgKyAocCAtIGhhc2gtPmRlc2Mp LCBwICsgMSwgc3RybGVuKGhhc2gtPmRlc2MpIC0gKHAgLSBoYXNoLT5kZXNjKSArIDEpOworCQkJ aWYgKHBnX3N0cmNhc2VjbXAodG1wLCBuYW1lKSA9PSAwKQorCQkJeworCQkJCWZvdW5kID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmICghZm91bmQpCisJCXJldHVybiBQ WEVfTk9fSEFTSDsKKworCWRpZ2VzdCA9IHBhbGxvYyhzaXplb2YoKmRpZ2VzdCkpOworCisJZGln ZXN0LT5jb250ZXh0ID0gbnNzX2NvbnRleHQ7CisJZGlnZXN0LT5oYXNoX2NvbnRleHQgPSBQSzEx X0NyZWF0ZURpZ2VzdENvbnRleHQoaGFzaC0+b2Zmc2V0KTsKKwlkaWdlc3QtPmhhc2hfdHlwZSA9 IHQ7CisJaWYgKGRpZ2VzdC0+aGFzaF9jb250ZXh0ID09IE5VTEwpCisJeworCQlwZnJlZShkaWdl c3QpOworCQlyZXR1cm4gLTE7CisJfQorCisJc3RhdHVzID0gUEsxMV9EaWdlc3RCZWdpbihkaWdl c3QtPmhhc2hfY29udGV4dCk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJUEsx MV9EZXN0cm95Q29udGV4dChkaWdlc3QtPmhhc2hfY29udGV4dCwgUFJfVFJVRSk7CisJCXBmcmVl KGRpZ2VzdCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlweG1kID0gcGFsbG9jKHNpemVvZigqcHht ZCkpOworCXB4bWQtPnJlc3VsdF9zaXplID0gbnNzX2RpZ2VzdF9yZXN1bHRfc2l6ZTsKKwlweG1k LT5ibG9ja19zaXplID0gbnNzX2RpZ2VzdF9ibG9ja19zaXplOworCXB4bWQtPnJlc2V0ID0gbnNz X2RpZ2VzdF9yZXNldDsKKwlweG1kLT51cGRhdGUgPSBuc3NfZGlnZXN0X3VwZGF0ZTsKKwlweG1k LT5maW5pc2ggPSBuc3NfZGlnZXN0X2ZpbmlzaDsKKwlweG1kLT5mcmVlID0gbnNzX2RpZ2VzdF9m cmVlOworCXB4bWQtPnAucHRyID0gKHZvaWQgKikgZGlnZXN0OworCisJKnJlcyA9IHB4bWQ7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYmZfaW5pdChQWF9DaXBoZXIgKnB4YywgY29u c3QgdWludDggKmtleSwgdW5zaWduZWQga2xlbiwgY29uc3QgdWludDggKml2KQoreworCWludGVy bmFsX2NpcGhlciAqY2lwaGVyID0gKGludGVybmFsX2NpcGhlciAqKSBweGMtPnB0cjsKKworCWJs b3dmaXNoX3NldGtleSgmY2lwaGVyLT5jb250ZXh0LCBrZXksIGtsZW4pOworCWlmIChpdikKKwkJ Ymxvd2Zpc2hfc2V0aXYoJmNpcGhlci0+Y29udGV4dCwgaXYpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQKK2JmX2VuY3J5cHQoUFhfQ2lwaGVyICpweGMsIGNvbnN0IHVpbnQ4ICpkYXRh LCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKQoreworCWludGVybmFsX2NpcGhlciAqY2lwaGVy ID0gKGludGVybmFsX2NpcGhlciAqKSBweGMtPnB0cjsKKwl1aW50OAkgICAqYnVmOworCisJaWYg KGRsZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZGxlbiAmIDcpCisJCXJldHVybiBQWEVf Tk9UQkxPQ0tTSVpFOworCisJYnVmID0gcGFsbG9jKGRsZW4pOworCW1lbWNweShidWYsIGRhdGEs IGRsZW4pOworCisJaWYgKGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLmludGVybmFsID09IEJMT1dG SVNIX0VDQikKKwkJYmxvd2Zpc2hfZW5jcnlwdF9lY2IoYnVmLCBkbGVuLCAmY2lwaGVyLT5jb250 ZXh0KTsKKwllbHNlCisJCWJsb3dmaXNoX2VuY3J5cHRfY2JjKGJ1ZiwgZGxlbiwgJmNpcGhlci0+ Y29udGV4dCk7CisKKwltZW1jcHkocmVzLCBidWYsIGRsZW4pOworCXBmcmVlKGJ1Zik7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYmZfZGVjcnlwdChQWF9DaXBoZXIgKnB4YywgY29u c3QgdWludDggKmRhdGEsIHVuc2lnbmVkIGRsZW4sIHVpbnQ4ICpyZXMpCit7CisJaW50ZXJuYWxf Y2lwaGVyICpjaXBoZXIgPSAoaW50ZXJuYWxfY2lwaGVyICopIHB4Yy0+cHRyOworCisJaWYgKGRs ZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZGxlbiAmIDcpCisJCXJldHVybiBQWEVfTk9U QkxPQ0tTSVpFOworCisJbWVtY3B5KHJlcywgZGF0YSwgZGxlbik7CisJaWYgKGNpcGhlci0+aW1w bC0+bWVjaGFuaXNtLmludGVybmFsID09IEJMT1dGSVNIX0VDQikKKwkJYmxvd2Zpc2hfZGVjcnlw dF9lY2IocmVzLCBkbGVuLCAmY2lwaGVyLT5jb250ZXh0KTsKKwllbHNlCisJCWJsb3dmaXNoX2Rl Y3J5cHRfY2JjKHJlcywgZGxlbiwgJmNpcGhlci0+Y29udGV4dCk7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQKK2JmX2ZyZWUoUFhfQ2lwaGVyICpweGMpCit7CisJaW50ZXJuYWxfY2lw aGVyICpjaXBoZXIgPSAoaW50ZXJuYWxfY2lwaGVyICopIHB4Yy0+cHRyOworCisJcGZyZWUoY2lw aGVyKTsKKwlwZnJlZShweGMpOworfQorCitzdGF0aWMgaW50Cituc3Nfc3lta2V5X2Jsb2NrY2lw aGVyX2luaXQoUFhfQ2lwaGVyICpweGMsIGNvbnN0IHVpbnQ4ICprZXksIHVuc2lnbmVkIGtsZW4s CisJCQkJCQkJY29uc3QgdWludDggKml2KQoreworCW5zc19jaXBoZXIgKmNpcGhlciA9IChuc3Nf Y2lwaGVyICopIHB4Yy0+cHRyOworCVNFQ0l0ZW0JCWl2X2l0ZW07CisJdW5zaWduZWQgY2hhciAq aXZfaXRlbV9kYXRhOworCVNFQ0l0ZW0JCWtleV9pdGVtOworCWludAkJCWtleWxlbjsKKwlQSzEx U2xvdEluZm8gKnNsb3Q7CisKKwlpZiAoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzID09IENL TV9BRVNfQ0JDIHx8CisJCWNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcyA9PSBDS01fQUVTX0VD QikKKwl7CisJCWlmIChrbGVuIDw9IDEyOCAvIDgpCisJCQlrZXlsZW4gPSAxMjggLyA4OworCQll bHNlIGlmIChrbGVuIDw9IDE5MiAvIDgpCisJCQlrZXlsZW4gPSAxOTIgLyA4OworCQllbHNlIGlm IChrbGVuIDw9IDI1NiAvIDgpCisJCQlrZXlsZW4gPSAyNTYgLyA4OworCQllbHNlCisJCQlyZXR1 cm4gUFhFX0NJUEhFUl9JTklUOworCX0KKwllbHNlCisJCWtleWxlbiA9IGNpcGhlci0+aW1wbC0+ a2V5bGVuOworCisJa2V5X2l0ZW0udHlwZSA9IHNpQnVmZmVyOworCWtleV9pdGVtLmRhdGEgPSAo dW5zaWduZWQgY2hhciAqKSBrZXk7CisJa2V5X2l0ZW0ubGVuID0ga2V5bGVuOworCisJLyoKKwkg KiBJZiBoYXJkd2FyZSBhY2NlbGVyYXRpb24gaXMgY29uZmlndXJlZCBpbiBOU1Mgb25lIGNhbiB0 aGVvcmV0aWNhbGx5IGdldAorCSAqIGEgYmV0dGVyIHNsb3QgYnkgY2FsbGluZyBQSzExX0dldEJl c3RTbG90KCkgd2l0aCB0aGUgbWVjaGFuaXNtIHBhc3NlZAorCSAqIHRvIGl0LiBVbmxlc3MgdGhl cmUgYXJlIGNvbXBsYWludHMsIHVzaW5nIHRoZSBzaW1wbGVyIEFQSSB3aWxsIG1ha2UKKwkgKiBl cnJvciBoYW5kbGluZyBlYXNpZXIgdGhvdWdoLgorCSAqLworCXNsb3QgPSBQSzExX0dldEludGVy bmFsU2xvdCgpOworCWlmICghc2xvdCkKKwkJcmV0dXJuIFBYRV9DSVBIRVJfSU5JVDsKKworCS8q CisJICogVGhlIGtleSBtdXN0IGJlIHNldCB1cCBmb3IgdGhlIG9wZXJhdGlvbiwgYW5kIHNpbmNl IHdlIGRvbid0IGtub3cgYXQKKwkgKiB0aGlzIHBvaW50IHdoZXRoZXIgd2UgYXJlIGFza2VkIHRv IGVuY3J5cHQgb3IgZGVjcnlwdCB3ZSBuZWVkIHRvIHN0b3JlCisJICogYm90aCB2ZXJzaW9ucy4K KwkgKi8KKwljaXBoZXItPmRlY3J5cHRfa2V5ID0gUEsxMV9JbXBvcnRTeW1LZXkoc2xvdCwgY2lw aGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzLAorCQkJCQkJCQkJCQlQSzExX09yaWdpblVud3JhcCwK KwkJCQkJCQkJCQkJQ0tBX0RFQ1JZUFQsICZrZXlfaXRlbSwKKwkJCQkJCQkJCQkJTlVMTCk7CisJ Y2lwaGVyLT5lbmNyeXB0X2tleSA9IFBLMTFfSW1wb3J0U3ltS2V5KHNsb3QsIGNpcGhlci0+aW1w bC0+bWVjaGFuaXNtLm5zcywKKwkJCQkJCQkJCQkJUEsxMV9PcmlnaW5VbndyYXAsCisJCQkJCQkJ CQkJCUNLQV9FTkNSWVBULCAma2V5X2l0ZW0sCisJCQkJCQkJCQkJCU5VTEwpOworCVBLMTFfRnJl ZVNsb3Qoc2xvdCk7CisKKwlpZiAoIWNpcGhlci0+ZGVjcnlwdF9rZXkgfHwgIWNpcGhlci0+ZW5j cnlwdF9rZXkpCisJCXJldHVybiBQWEVfQ0lQSEVSX0lOSVQ7CisKKwlpZiAoaXYpCisJeworCQlp dl9pdGVtLnR5cGUgPSBzaUJ1ZmZlcjsKKwkJaXZfaXRlbS5kYXRhID0gKHVuc2lnbmVkIGNoYXIg KikgaXY7CisJCWl2X2l0ZW0ubGVuID0gbnNzX2dldF9pdl9zaXplKHB4Yyk7CisJfQorCWVsc2UK Kwl7CisJCS8qCisJCSAqIFRoZSBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0IGVpdGhlciBwYXNz aW5nIC5kYXRhID0gMDsgLmxlbiA9IDA7CisJCSAqIGluIHRoZSBpdl9pdGVtLCBvciBOVUxMIGFz IGl2X2l0ZW0sIHRvIFBLMTFfUGFyYW1Gcm9tSVYgc2hvdWxkIGJlCisJCSAqIGRvbmUgd2hlbiBJ ViBpcyBtaXNzaW5nLiBUaGF0IGhvd2V2ZXIgbGVhZHMgdG8gc2VnZmF1bHRzIGluIHRoZQorCQkg KiBsaWJyYXJ5LCB0aGUgd29ya2Fyb3VuZCB0aGF0IHdvcmtzIGluIG1vZGVybiAgbGlicmFyeSB2 ZXJzaW9ucyBpcworCQkgKiB0byBwYXNzIGluIGEga2V5c2l6ZWQgemVyb2VkIG91dCBJVi4KKwkJ ICovCisJCWl2X2l0ZW1fZGF0YSA9IHBhbGxvYzAobnNzX2dldF9pdl9zaXplKHB4YykpOworCQlp dl9pdGVtLnR5cGUgPSBzaUJ1ZmZlcjsKKwkJaXZfaXRlbS5kYXRhID0gaXZfaXRlbV9kYXRhOwor CQlpdl9pdGVtLmxlbiA9IG5zc19nZXRfaXZfc2l6ZShweGMpOworCX0KKworCWNpcGhlci0+cGFy YW1zID0gUEsxMV9QYXJhbUZyb21JVihjaXBoZXItPmltcGwtPm1lY2hhbmlzbS5uc3MsICZpdl9p dGVtKTsKKworCS8qIElmIHdlIGhhZCB0byBtYWtlIGEgbW9jayBJViwgZnJlZSBpdCBvbmNlIG1h ZGUgaW50byBhIHBhcmFtICovCisJaWYgKCFpdikKKwkJcGZyZWUoaXZfaXRlbV9kYXRhKTsKKwor CWlmIChjaXBoZXItPnBhcmFtcyA9PSBOVUxMKQorCQlyZXR1cm4gUFhFX0NJUEhFUl9JTklUOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25zc19kZWNyeXB0KFBYX0NpcGhlciAqcHhj LCBjb25zdCB1aW50OCAqZGF0YSwgdW5zaWduZWQgZGxlbiwgdWludDggKnJlcykKK3sKKwluc3Nf Y2lwaGVyICpjaXBoZXIgPSAobnNzX2NpcGhlciAqKSBweGMtPnB0cjsKKwlTRUNTdGF0dXMJc3Rh dHVzOworCWludAkJCW91dGxlbjsKKworCWlmICghY2lwaGVyLT5jcnlwdF9jb250ZXh0KQorCXsK KwkJY2lwaGVyLT5jcnlwdF9jb250ZXh0ID0KKwkJCVBLMTFfQ3JlYXRlQ29udGV4dEJ5U3ltS2V5 KGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcywgQ0tBX0RFQ1JZUFQsCisJCQkJCQkJCQkgICBj aXBoZXItPmRlY3J5cHRfa2V5LCBjaXBoZXItPnBhcmFtcyk7CisJfQorCisJc3RhdHVzID0gUEsx MV9DaXBoZXJPcChjaXBoZXItPmNyeXB0X2NvbnRleHQsIHJlcywgJm91dGxlbiwgZGxlbiwgZGF0 YSwgZGxlbik7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gUFhFX0RFQ1JZ UFRfRkFJTEVEOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25zc19lbmNyeXB0KFBY X0NpcGhlciAqcHhjLCBjb25zdCB1aW50OCAqZGF0YSwgdW5zaWduZWQgZGxlbiwgdWludDggKnJl cykKK3sKKwluc3NfY2lwaGVyICpjaXBoZXIgPSAobnNzX2NpcGhlciAqKSBweGMtPnB0cjsKKwlT RUNTdGF0dXMJc3RhdHVzOworCWludAkJCW91dGxlbjsKKworCWlmICghY2lwaGVyLT5jcnlwdF9j b250ZXh0KQorCXsKKwkJY2lwaGVyLT5jcnlwdF9jb250ZXh0ID0KKwkJCVBLMTFfQ3JlYXRlQ29u dGV4dEJ5U3ltS2V5KGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcywgQ0tBX0VOQ1JZUFQsCisJ CQkJCQkJCQkgICBjaXBoZXItPmRlY3J5cHRfa2V5LCBjaXBoZXItPnBhcmFtcyk7CisJfQorCisJ c3RhdHVzID0gUEsxMV9DaXBoZXJPcChjaXBoZXItPmNyeXB0X2NvbnRleHQsIHJlcywgJm91dGxl biwgZGxlbiwgZGF0YSwgZGxlbik7CisKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJl dHVybiBQWEVfREVDUllQVF9GQUlMRUQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQK K25zc19mcmVlKFBYX0NpcGhlciAqcHhjKQoreworCW5zc19jaXBoZXIgKmNpcGhlciA9IHB4Yy0+ cHRyOworCVBSQm9vbAkJZnJlZV9jdHggPSBQUl9UUlVFOworCisJUEsxMV9GcmVlU3ltS2V5KGNp cGhlci0+ZW5jcnlwdF9rZXkpOworCVBLMTFfRnJlZVN5bUtleShjaXBoZXItPmRlY3J5cHRfa2V5 KTsKKwlQSzExX0Rlc3Ryb3lDb250ZXh0KGNpcGhlci0+Y3J5cHRfY29udGV4dCwgZnJlZV9jdHgp OworCU5TU19TaHV0ZG93bkNvbnRleHQoY2lwaGVyLT5jb250ZXh0KTsKKwlwZnJlZShjaXBoZXIp OworCisJcGZyZWUocHhjKTsKK30KKworc3RhdGljIHVuc2lnbmVkCituc3NfZ2V0X2Jsb2NrX3Np emUoUFhfQ2lwaGVyICpweGMpCit7CisJbnNzX2NpcGhlciAqY2lwaGVyID0gcHhjLT5wdHI7CisK KwlyZXR1cm4gUEsxMV9HZXRCbG9ja1NpemUoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzLCBO VUxMKTsKK30KKworc3RhdGljIHVuc2lnbmVkCituc3NfZ2V0X2tleV9zaXplKFBYX0NpcGhlciAq cHhjKQoreworCW5zc19jaXBoZXIgKmNpcGhlciA9IHB4Yy0+cHRyOworCisJcmV0dXJuIGNpcGhl ci0+aW1wbC0+a2V5bGVuOworfQorCitzdGF0aWMgdW5zaWduZWQKK25zc19nZXRfaXZfc2l6ZShQ WF9DaXBoZXIgKnB4YykKK3sKKwluc3NfY2lwaGVyICpjaXBoZXIgPSBweGMtPnB0cjsKKworCXJl dHVybiBQSzExX0dldElWTGVuZ3RoKGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcyk7Cit9CisK K3N0YXRpYyB1bnNpZ25lZAorYmZfZ2V0X2Jsb2NrX3NpemUoUFhfQ2lwaGVyICpweGMpCit7CisJ cmV0dXJuIDg7Cit9CisKK3N0YXRpYyB1bnNpZ25lZAorYmZfZ2V0X2tleV9zaXplKFBYX0NpcGhl ciAqcHhjKQoreworCXJldHVybiA0NDggLyA4OworfQorCitzdGF0aWMgdW5zaWduZWQKK2JmX2dl dF9pdl9zaXplKFBYX0NpcGhlciAqcHhjKQoreworCXJldHVybiA4OworfQorCisvKgorICogQ2lw aGVyIEltcGxlbWVudGF0aW9ucworICovCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxlbWVudGF0 aW9uIG5zc19kZXNfY2JjID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0 LAorCS5nZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXpl ID0gbnNzX2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJ LmVuY3J5cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVl ID0gbnNzX2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fREVTX0NCQywKKwkua2V5bGVuID0g OCwKKwkuaXNfbnNzID0gdHJ1ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRh dGlvbiBuc3NfZGVzX2VjYiA9IHsKKwkuaW5pdCA9IG5zc19zeW1rZXlfYmxvY2tjaXBoZXJfaW5p dCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBuc3NfZ2V0X2Jsb2NrX3NpemUsCisJLmdldF9rZXlfc2l6 ZSA9IG5zc19nZXRfa2V5X3NpemUsCisJLmdldF9pdl9zaXplID0gbnNzX2dldF9pdl9zaXplLAor CS5lbmNyeXB0ID0gbnNzX2VuY3J5cHQsCisJLmRlY3J5cHQgPSBuc3NfZGVjcnlwdCwKKwkuZnJl ZSA9IG5zc19mcmVlLAorCS5tZWNoYW5pc20ubnNzID0gQ0tNX0RFU19FQ0IsCisJLmtleWxlbiA9 IDgsCisJLmlzX25zcyA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50 YXRpb24gbnNzX2RlczNfY2JjID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9p bml0LAorCS5nZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9z aXplID0gbnNzX2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUs CisJLmVuY3J5cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5m cmVlID0gbnNzX2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fREVTM19DQkMsCisJLmtleWxl biA9IDI0LAorCS5pc19uc3MgPSB0cnVlCit9OworCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxl bWVudGF0aW9uIG5zc19kZXMzX2VjYiA9IHsKKwkuaW5pdCA9IG5zc19zeW1rZXlfYmxvY2tjaXBo ZXJfaW5pdCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBuc3NfZ2V0X2Jsb2NrX3NpemUsCisJLmdldF9r ZXlfc2l6ZSA9IG5zc19nZXRfa2V5X3NpemUsCisJLmdldF9pdl9zaXplID0gbnNzX2dldF9pdl9z aXplLAorCS5lbmNyeXB0ID0gbnNzX2VuY3J5cHQsCisJLmRlY3J5cHQgPSBuc3NfZGVjcnlwdCwK KwkuZnJlZSA9IG5zc19mcmVlLAorCS5tZWNoYW5pc20ubnNzID0gQ0tNX0RFUzNfRUNCLAorCS5r ZXlsZW4gPSAyNCwKKwkuaXNfbnNzID0gdHJ1ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9p bXBsZW1lbnRhdGlvbiBuc3NfYWVzX2NiYyA9IHsKKwkuaW5pdCA9IG5zc19zeW1rZXlfYmxvY2tj aXBoZXJfaW5pdCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBuc3NfZ2V0X2Jsb2NrX3NpemUsCisJLmdl dF9rZXlfc2l6ZSA9IG5zc19nZXRfa2V5X3NpemUsCisJLmdldF9pdl9zaXplID0gbnNzX2dldF9p dl9zaXplLAorCS5lbmNyeXB0ID0gbnNzX2VuY3J5cHQsCisJLmRlY3J5cHQgPSBuc3NfZGVjcnlw dCwKKwkuZnJlZSA9IG5zc19mcmVlLAorCS5tZWNoYW5pc20ubnNzID0gQ0tNX0FFU19DQkMsCisJ LmtleWxlbiA9IDMyLAorCS5pc19uc3MgPSB0cnVlCit9OworCitzdGF0aWMgY29uc3QgY2lwaGVy X2ltcGxlbWVudGF0aW9uIG5zc19hZXNfZWNiID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9j a2NpcGhlcl9pbml0LAorCS5nZXRfYmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwku Z2V0X2tleV9zaXplID0gbnNzX2dldF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0 X2l2X3NpemUsCisJLmVuY3J5cHQgPSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNy eXB0LAorCS5mcmVlID0gbnNzX2ZyZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fQUVTX0VDQiwK Kwkua2V5bGVuID0gMzIsCisJLmlzX25zcyA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBo ZXJfaW1wbGVtZW50YXRpb24gbnNzX2JmX2VjYiA9IHsKKwkuaW5pdCA9IGJmX2luaXQsCisJLmdl dF9ibG9ja19zaXplID0gYmZfZ2V0X2Jsb2NrX3NpemUsCisJLmdldF9rZXlfc2l6ZSA9IGJmX2dl dF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBiZl9nZXRfaXZfc2l6ZSwKKwkuZW5jcnlwdCA9 IGJmX2VuY3J5cHQsCisJLmRlY3J5cHQgPSBiZl9kZWNyeXB0LAorCS5mcmVlID0gYmZfZnJlZSwK KwkubWVjaGFuaXNtLmludGVybmFsID0gQkxPV0ZJU0hfRUNCLAorCS5rZXlsZW4gPSA1NiwKKwku aXNfbnNzID0gZmFsc2UKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24g bnNzX2JmX2NiYyA9IHsKKwkuaW5pdCA9IGJmX2luaXQsCisJLmdldF9ibG9ja19zaXplID0gYmZf Z2V0X2Jsb2NrX3NpemUsCisJLmdldF9rZXlfc2l6ZSA9IGJmX2dldF9rZXlfc2l6ZSwKKwkuZ2V0 X2l2X3NpemUgPSBiZl9nZXRfaXZfc2l6ZSwKKwkuZW5jcnlwdCA9IGJmX2VuY3J5cHQsCisJLmRl Y3J5cHQgPSBiZl9kZWNyeXB0LAorCS5mcmVlID0gYmZfZnJlZSwKKwkubWVjaGFuaXNtLmludGVy bmFsID0gQkxPV0ZJU0hfQ0JDLAorCS5rZXlsZW4gPSA1NiwKKwkuaXNfbnNzID0gZmFsc2UKK307 CisKKy8qCisgKiBMb29rdXAgdGFibGUgZm9yIGZpbmRpbmcgdGhlIGltcGxlbWVudGF0aW9uIGJh c2VkIG9uIGEgbmFtZS4gQ0FTVDUgYXMgd2VsbAorICogYXMgQkxPV0ZJU0ggYXJlIGRlZmluZWQg YXMgY2lwaGVyIG1lY2hhbmlzbXMgaW4gTlNTIGJ1dCBlcnJvciBvdXQgd2l0aAorICogU0VDX0VS Uk9SX0lOVkFMSURfQUxHT1JJVEhNLiBCbG93ZmlzaCBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUg aW50ZXJuYWwKKyAqIGltcGxlbWVudGF0aW9uIHdoaWxlIENBU1Q1IGlzbid0IHN1cHBvcnRlZCBh dCBhbGwgYXQgdGhpcyB0aW1lLAorICovCitzdGF0aWMgY29uc3QgbnNzX2NpcGhlcl9yZWYgbnNz X2NpcGhlcl9sb29rdXBbXSA9IHsKKwl7ImRlcyIsICZuc3NfZGVzX2NiY30sCisJeyJkZXMtY2Jj IiwgJm5zc19kZXNfY2JjfSwKKwl7ImRlcy1lY2IiLCAmbnNzX2Rlc19lY2J9LAorCXsiZGVzMy1j YmMiLCAmbnNzX2RlczNfY2JjfSwKKwl7IjNkZXMiLCAmbnNzX2RlczNfY2JjfSwKKwl7IjNkZXMt Y2JjIiwgJm5zc19kZXMzX2NiY30sCisJeyJkZXMzLWVjYiIsICZuc3NfZGVzM19lY2J9LAorCXsi M2Rlcy1lY2IiLCAmbnNzX2RlczNfZWNifSwKKwl7ImFlcyIsICZuc3NfYWVzX2NiY30sCisJeyJh ZXMtY2JjIiwgJm5zc19hZXNfY2JjfSwKKwl7ImFlcy1lY2IiLCAmbnNzX2Flc19lY2J9LAorCXsi cmlqbmRhZWwiLCAmbnNzX2Flc19jYmN9LAorCXsicmlqbmRhZWwtY2JjIiwgJm5zc19hZXNfY2Jj fSwKKwl7InJpam5kYWVsLWVjYiIsICZuc3NfYWVzX2VjYn0sCisJeyJibG93ZmlzaCIsICZuc3Nf YmZfY2JjfSwKKwl7ImJsb3dmaXNoLWNiYyIsICZuc3NfYmZfY2JjfSwKKwl7ImJsb3dmaXNoLWVj YiIsICZuc3NfYmZfZWNifSwKKwl7ImJmIiwgJm5zc19iZl9jYmN9LAorCXsiYmYtY2JjIiwgJm5z c19iZl9jYmN9LAorCXsiYmYtZWNiIiwgJm5zc19iZl9lY2J9LAorCXtOVUxMfQorfTsKKworLyoK KyAqIHB4X2ZpbmRfY2lwaGVyCisgKgorICogU2VhcmNoIGZvciB0aGUgcmVxdWVzdGVkIGNpcGhl ciBhbmQgc2VlIGlmIHRoZXJlIGlzIHN1cHBvcnQgZm9yIGl0LCBhbmQgaWYKKyAqIHNvIHJldHVy biBhbiBhbGxvY2F0ZWQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBsYXlib29rIGZvciBob3cgdG8g ZW5jcnlwdAorICogYW5kIGRlY3J5cHQgdXNpbmcgdGhlIGNpcGhlci4KKyAqLworaW50CitweF9m aW5kX2NpcGhlcihjb25zdCBjaGFyICphbGlhcywgUFhfQ2lwaGVyICoqcmVzKQoreworCWNvbnN0 IG5zc19jaXBoZXJfcmVmICpjaXBoZXJfcmVmOworCVBYX0NpcGhlciAgKnB4X2NpcGhlcjsKKwlO U1NJbml0UGFyYW1ldGVycyBwYXJhbXM7CisJTlNTSW5pdENvbnRleHQgKm5zc19jb250ZXh0Owor CW5zc19jaXBoZXIgKmNpcGhlcjsKKwlpbnRlcm5hbF9jaXBoZXIgKmludF9jaXBoZXI7CisKKwlm b3IgKGNpcGhlcl9yZWYgPSBuc3NfY2lwaGVyX2xvb2t1cDsgY2lwaGVyX3JlZi0+bmFtZTsgY2lw aGVyX3JlZisrKQorCXsKKwkJaWYgKHN0cmNtcChjaXBoZXJfcmVmLT5uYW1lLCBhbGlhcykgPT0g MCkKKwkJCWJyZWFrOworCX0KKworCWlmICghY2lwaGVyX3JlZi0+bmFtZSkKKwkJcmV0dXJuIFBY RV9OT19DSVBIRVI7CisKKwkvKgorCSAqIEZpbGwgaW4gdGhlIFBYX0NpcGhlciB0byBwYXNzIGJh Y2sgdG8gUFggZGVzY3JpYmluZyB0aGUgb3BlcmF0aW9ucyB0bworCSAqIHBlcmZvcm0gaW4gb3Jk ZXIgdG8gdXNlIHRoZSBjaXBoZXIuCisJICovCisJcHhfY2lwaGVyID0gcGFsbG9jKHNpemVvZigq cHhfY2lwaGVyKSk7CisJcHhfY2lwaGVyLT5ibG9ja19zaXplID0gY2lwaGVyX3JlZi0+aW1wbC0+ Z2V0X2Jsb2NrX3NpemU7CisJcHhfY2lwaGVyLT5rZXlfc2l6ZSA9IGNpcGhlcl9yZWYtPmltcGwt PmdldF9rZXlfc2l6ZTsKKwlweF9jaXBoZXItPml2X3NpemUgPSBjaXBoZXJfcmVmLT5pbXBsLT5n ZXRfaXZfc2l6ZTsKKwlweF9jaXBoZXItPmZyZWUgPSBjaXBoZXJfcmVmLT5pbXBsLT5mcmVlOwor CXB4X2NpcGhlci0+aW5pdCA9IGNpcGhlcl9yZWYtPmltcGwtPmluaXQ7CisJcHhfY2lwaGVyLT5l bmNyeXB0ID0gY2lwaGVyX3JlZi0+aW1wbC0+ZW5jcnlwdDsKKwlweF9jaXBoZXItPmRlY3J5cHQg PSBjaXBoZXJfcmVmLT5pbXBsLT5kZWNyeXB0OworCisJLyoKKwkgKiBTZXQgdGhlIHByaXZhdGUg ZGF0YSwgd2hpY2ggaXMgZGlmZmVyZW50IGZvciBOU1MgYW5kIGludGVybmFsIGNpcGhlcnMKKwkg Ki8KKwlpZiAoY2lwaGVyX3JlZi0+aW1wbC0+aXNfbnNzKQorCXsKKwkJLyoKKwkJICogSW5pdGlh bGl6ZSBvdXIgb3duIE5TUyBjb250ZXh0IHdpdGhvdXQgYSBkYXRhYmFzZSBiYWNraW5nIGl0LiBB dAorCQkgKiBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgdG8gYWxsb3cgdXNlcnMgdG8gdXNlIHN0 b3JlZCBrZXlzIGluIHRoZQorCQkgKiBkYXRhYmFzZSByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZW0g dmlhIFNFTEVDVCBlbmNyeXB0KCksIGFuZCB0aGVuCisJCSAqIHRoaXMgbmVlZCB0byBiZSBjaGFu Z2VkIHRvIG9wZW4gYSB1c2VyIHNwZWNpZmllZCBkYXRhYmFzZS4KKwkJICovCisJCW1lbXNldCgm cGFyYW1zLCAwLCBzaXplb2YocGFyYW1zKSk7CisJCXBhcmFtcy5sZW5ndGggPSBzaXplb2YocGFy YW1zKTsKKwkJbnNzX2NvbnRleHQgPSBOU1NfSW5pdENvbnRleHQoIiIsICIiLCAiIiwgIiIsICZw YXJhbXMsCisJCQkJCQkJCQkgIE5TU19JTklUX1JFQURPTkxZIHwgTlNTX0lOSVRfTk9DRVJUREIg fAorCQkJCQkJCQkJICBOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VPUEVOIHwKKwkJ CQkJCQkJCSAgTlNTX0lOSVRfTk9ST09USU5JVCB8IE5TU19JTklUX1BLMTFSRUxPQUQpOworCisJ CS8qIG5zc19jaXBoZXIgaXMgdGhlIHByaXZhdGUgc3RhdGUgc3RydWN0IGZvciB0aGUgb3BlcmF0 aW9uICovCisJCWNpcGhlciA9IHBhbGxvYyhzaXplb2YoKmNpcGhlcikpOworCQljaXBoZXItPmNv bnRleHQgPSBuc3NfY29udGV4dDsKKwkJY2lwaGVyLT5pbXBsID0gY2lwaGVyX3JlZi0+aW1wbDsK KwkJY2lwaGVyLT5jcnlwdF9jb250ZXh0ID0gTlVMTDsKKworCQlweF9jaXBoZXItPnB0ciA9IGNp cGhlcjsKKwl9CisJZWxzZQorCXsKKwkJaW50X2NpcGhlciA9IHBhbGxvYzAoc2l6ZW9mKCppbnRf Y2lwaGVyKSk7CisKKwkJaW50X2NpcGhlci0+aW1wbCA9IGNpcGhlcl9yZWYtPmltcGw7CisJCXB4 X2NpcGhlci0+cHRyID0gaW50X2NpcGhlcjsKKwl9CisKKwkqcmVzID0gcHhfY2lwaGVyOworCXJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3BnY3J5cHRvLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcGdjcnlwdG8uc2dtbAppbmRleCBiYmFhMjY5MWZlLi4zY2JlNDFmYjlhIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdj cnlwdG8uc2dtbApAQCAtNDUsOCArNDUsOSBAQCBkaWdlc3QoZGF0YSBieXRlYSwgdHlwZSB0ZXh0 KSByZXR1cm5zIGJ5dGVhCiAgICAgPGxpdGVyYWw+c2hhMjI0PC9saXRlcmFsPiwgPGxpdGVyYWw+ c2hhMjU2PC9saXRlcmFsPiwKICAgICA8bGl0ZXJhbD5zaGEzODQ8L2xpdGVyYWw+IGFuZCA8bGl0 ZXJhbD5zaGE1MTI8L2xpdGVyYWw+LgogICAgIElmIDxmaWxlbmFtZT5wZ2NyeXB0bzwvZmlsZW5h bWU+IHdhcyBidWlsdCB3aXRoCi0gICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1l PiwgbW9yZSBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUsIGFzCi0gICAgZGV0YWlsZWQgaW4gPHhy ZWYgbGlua2VuZD0icGdjcnlwdG8td2l0aC13aXRob3V0LW9wZW5zc2wiLz4uCisgICAgPHByb2R1 Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBvciA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0 bmFtZT4sCisgICAgbW9yZSBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUsIGFzCisgICAgZGV0YWls ZWQgaW4gPHhyZWYgbGlua2VuZD0icGdjcnlwdG8td2l0aC13aXRob3V0LW9wZW5zc2wtbnNzIi8+ LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTc2NCw3ICs3NjUsNyBAQCBwZ3Bfc3ltX2Vu Y3J5cHQoZGF0YSwgcHN3LCAnY29tcHJlc3MtYWxnbz0xLCBjaXBoZXItYWxnbz1hZXMyNTYnKQog ICAgIFdoaWNoIGNpcGhlciBhbGdvcml0aG0gdG8gdXNlLgogICAgPC9wYXJhPgogPGxpdGVyYWxs YXlvdXQ+Ci1WYWx1ZXM6IGJmLCBhZXMxMjgsIGFlczE5MiwgYWVzMjU2IChPcGVuU1NMLW9ubHk6 IDxsaXRlcmFsPjNkZXM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jYXN0NTwvbGl0ZXJhbD4pCitWYWx1 ZXM6IGJmLCBhZXMxMjgsIGFlczE5MiwgYWVzMjU2IChPcGVuU1NMLW9ubHk6IDxsaXRlcmFsPjNk ZXM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jYXN0NTwvbGl0ZXJhbD47IE5TUy1vbmx5OiA8bGl0ZXJh bD4zZGVzPC9saXRlcmFsPikKIERlZmF1bHQ6IGFlczEyOAogQXBwbGllcyB0bzogcGdwX3N5bV9l bmNyeXB0LCBwZ3BfcHViX2VuY3J5cHQKIDwvbGl0ZXJhbGxheW91dD4KQEAgLTExNTMsOCArMTE1 NCw4IEBAIGdlbl9yYW5kb21fdXVpZCgpIHJldHVybnMgdXVpZAogICAgPHBhcmE+CiAgICAgPGZp bGVuYW1lPnBnY3J5cHRvPC9maWxlbmFtZT4gY29uZmlndXJlcyBpdHNlbGYgYWNjb3JkaW5nIHRv IHRoZSBmaW5kaW5ncyBvZiB0aGUKICAgICBtYWluIFBvc3RncmVTUUwgPGxpdGVyYWw+Y29uZmln dXJlPC9saXRlcmFsPiBzY3JpcHQuICBUaGUgb3B0aW9ucyB0aGF0Ci0gICAgYWZmZWN0IGl0IGFy ZSA8bGl0ZXJhbD4tLXdpdGgtemxpYjwvbGl0ZXJhbD4gYW5kCi0gICAgPGxpdGVyYWw+LS13aXRo LXNzbD1vcGVuc3NsPC9saXRlcmFsPi4KKyAgICBhZmZlY3QgaXQgYXJlIDxsaXRlcmFsPi0td2l0 aC16bGliPC9saXRlcmFsPiwKKyAgICA8bGl0ZXJhbD4tLXdpdGgtc3NsPW9wZW5zc2w8L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD4tLXdpdGgtc3NsPW5zczwvbGl0ZXJhbD4uCiAgICA8L3BhcmE+CiAK ICAgIDxwYXJhPgpAQCAtMTE2OSwxNCArMTE3MCwxNiBAQCBnZW5fcmFuZG9tX3V1aWQoKSByZXR1 cm5zIHV1aWQKICAgICBCSUdOVU0gZnVuY3Rpb25zLgogICAgPC9wYXJhPgogCi0gICA8dGFibGUg aWQ9InBnY3J5cHRvLXdpdGgtd2l0aG91dC1vcGVuc3NsIj4KLSAgICA8dGl0bGU+U3VtbWFyeSBv ZiBGdW5jdGlvbmFsaXR5IHdpdGggYW5kIHdpdGhvdXQgT3BlblNTTDwvdGl0bGU+Ci0gICAgPHRn cm91cCBjb2xzPSIzIj4KKyAgIDx0YWJsZSBpZD0icGdjcnlwdG8td2l0aC13aXRob3V0LW9wZW5z c2wtbnNzIj4KKyAgICA8dGl0bGU+U3VtbWFyeSBvZiBGdW5jdGlvbmFsaXR5IHdpdGggYW5kIHdp dGhvdXQgZXh0ZXJuYWwgY3J5cHRvZ3JhcGhpYworICAgICAgbGlicmFyeTwvdGl0bGU+CisgICAg PHRncm91cCBjb2xzPSI0Ij4KICAgICAgPHRoZWFkPgogICAgICAgPHJvdz4KICAgICAgICA8ZW50 cnk+RnVuY3Rpb25hbGl0eTwvZW50cnk+CiAgICAgICAgPGVudHJ5PkJ1aWx0LWluPC9lbnRyeT4K ICAgICAgICA8ZW50cnk+V2l0aCBPcGVuU1NMPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+V2l0aCBO U1M8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGhlYWQ+CiAgICAgIDx0Ym9keT4KQEAg LTExODQsNTEgKzExODcsNjcgQEAgZ2VuX3JhbmRvbV91dWlkKCkgcmV0dXJucyB1dWlkCiAgICAg ICAgPGVudHJ5Pk1ENTwvZW50cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAg PGVudHJ5PnllczwvZW50cnk+CisgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICA8L3Jv dz4KICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5PlNIQTE8L2VudHJ5PgogICAgICAgIDxlbnRy eT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55 ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5TSEEy MjQvMjU2LzM4NC81MTI8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9y b3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5PdGhlciBkaWdlc3QgYWxnb3JpdGhtczwv ZW50cnk+CiAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICA8ZW50cnk+eWVzIChOb3Rl IDEpPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+eWVzIChOb3RlIDEpPC9lbnRyeT4KICAgICAgIDwv cm93PgogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+Qmxvd2Zpc2g8L2VudHJ5PgogICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxl bnRyeT55ZXMgKE5vdGUgMik8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAg ICAgIDxlbnRyeT5BRVM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9y b3c+CiAgICAgICA8cm93PgotICAgICAgIDxlbnRyeT5ERVMvM0RFUy9DQVNUNTwvZW50cnk+Cisg ICAgICAgPGVudHJ5PkRFUy8zREVTPC9lbnRyeT4KICAgICAgICA8ZW50cnk+bm88L2VudHJ5Pgog ICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAg ICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT5DQVNUNTwvZW50cnk+CisgICAg ICAgPGVudHJ5Pm5vPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+bm88L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRy eT5SYXcgZW5jcnlwdGlvbjwvZW50cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAg ICAgPGVudHJ5PnllczwvZW50cnk+CisgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICA8 L3Jvdz4KICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5PlBHUCBTeW1tZXRyaWMgZW5jcnlwdGlv bjwvZW50cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgPGVudHJ5Pnllczwv ZW50cnk+CisgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICA8L3Jvdz4KICAgICAgIDxy b3c+CiAgICAgICAgPGVudHJ5PlBHUCBQdWJsaWMtS2V5IGVuY3J5cHRpb248L2VudHJ5PgogICAg ICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90 Z3JvdXA+CkBAIC0xMjQ4LDEyICsxMjY3LDE4IEBAIGdlbl9yYW5kb21fdXVpZCgpIHJldHVybnMg dXVpZAogICAgPG9yZGVyZWRsaXN0PgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAg ICBBbnkgZGlnZXN0IGFsZ29yaXRobSA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+ IHN1cHBvcnRzCi0gICAgICBpcyBhdXRvbWF0aWNhbGx5IHBpY2tlZCB1cC4KLSAgICAgIFRoaXMg aXMgbm90IHBvc3NpYmxlIHdpdGggY2lwaGVycywgd2hpY2ggbmVlZCB0byBiZSBzdXBwb3J0ZWQK KyAgICAgIEFueSBkaWdlc3QgYWxnb3JpdGhtIGluY2x1ZGVkIHdpdGggdGhlIGxpYnJhcnkgdGhh dAorICAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpcyBjb21waWxl ZCB3aXRoIGlzIGF1dG9tYXRpY2FsbHkKKyAgICAgIHBpY2tlZCB1cC4gVGhpcyBpcyBub3QgcG9z c2libGUgd2l0aCBjaXBoZXJzLCB3aGljaCBuZWVkIHRvIGJlIHN1cHBvcnRlZAogICAgICAgZXhw bGljaXRseS4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIEJsb3dmaXNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgPHByb2R1Y3Ru YW1lPk5TUzwvcHJvZHVjdG5hbWU+LCB0aGUKKyAgICAgIGJ1aWx0LWluIGltcGxlbWVudGF0aW9u IGlzIHVzZWQgYXMgYSBmYWxsYmFjay4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CiAg ICA8L29yZGVyZWRsaXN0PgogICA8L3NlY3QzPgogCi0tIAoyLjI1LjEKCg== --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0008-nss-Support-NSS-in-sslinfo.patch" Content-Description: v44-0008-nss-Support-NSS-in-sslinfo.patch Content-Disposition: attachment; filename="v44-0008-nss-Support-NSS-in-sslinfo.patch"; size=3690; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: <00933891C5372947B2DE160484A0EA3B@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAyNDEzNWU2ZDllNjgxMzFmMzYwMDkzNWJmMzY2YjNlYWI2ZGQ1ODI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw OC8xMF0gbnNzOiBTdXBwb3J0IE5TUyBpbiBzc2xpbmZvCgpTaW5jZSBzc2xpbmZvIHRvIGEgbGFy Z2UgZXh0ZW50IHVzZXMgdGhlIGJlX3Rsc18qIEFQSSB0aGlzIG1vc3RseQpkaXNhYmxlcyBmdW5j dGlvbmFsaXR5IHdoaWNoIGN1cnJlbnRseSBpcyBPcGVuU1NMIHNwZWNpZmljLgotLS0KIGNvbnRy aWIvc3NsaW5mby9zc2xpbmZvLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogZG9jL3NyYy9zZ21sL3NzbGluZm8uc2dtbCB8IDEyICsrKysrKysrKysrLQogMiBmaWxlcyBj aGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9zc2xpbmZvL3NzbGluZm8uYyBiL2NvbnRyaWIvc3NsaW5mby9zc2xpbmZvLmMKaW5kZXgg MzBjYWUwYmI5OC4uM2FhZGQ5MGFhNiAxMDA2NDQKLS0tIGEvY29udHJpYi9zc2xpbmZvL3NzbGlu Zm8uYworKysgYi9jb250cmliL3NzbGluZm8vc3NsaW5mby5jCkBAIC05LDkgKzksMTEgQEAKIAog I2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpZmRlZiBVU0VfT1BFTlNTTAogI2luY2x1ZGUgPG9w ZW5zc2wveDUwOS5oPgogI2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CiAjaW5jbHVkZSA8b3Bl bnNzbC9hc24xLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIK ICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC0yMSw2ICsyMyw3IEBACiAKIFBHX01PRFVMRV9NQUdJ QzsKIAorI2lmZGVmIFVTRV9PUEVOU1NMCiBzdGF0aWMgRGF0dW0gWDUwOV9OQU1FX2ZpZWxkX3Rv X3RleHQoWDUwOV9OQU1FICpuYW1lLCB0ZXh0ICpmaWVsZE5hbWUpOwogc3RhdGljIERhdHVtIEFT TjFfU1RSSU5HX3RvX3RleHQoQVNOMV9TVFJJTkcgKnN0cik7CiAKQEAgLTMxLDYgKzM0LDcgQEAg dHlwZWRlZiBzdHJ1Y3QKIHsKIAlUdXBsZURlc2MJdHVwZGVzYzsKIH0gU1NMRXh0ZW5zaW9uSW5m b0NvbnRleHQ7CisjZW5kaWYKIAogLyoKICAqIEluZGljYXRlcyB3aGV0aGVyIGN1cnJlbnQgc2Vz c2lvbiB1c2VzIFNTTApAQCAtMTMxLDYgKzEzNSw3IEBAIHNzbF9jbGllbnRfc2VyaWFsKFBHX0ZV TkNUSU9OX0FSR1MpCiB9CiAKIAorI2lmZGVmIFVTRV9PUEVOU1NMCiAvKgogICogQ29udmVydHMg T3BlblNTTCBBU04xX1NUUklORyBzdHJ1Y3R1cmUgaW50byB0ZXh0CiAgKgpAQCAtMjgyLDcgKzI4 NywyMyBAQCBzc2xfaXNzdWVyX2ZpZWxkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJZWxzZQogCQlyZXR1 cm4gcmVzdWx0OwogfQorI2VuZGlmCQkJCQkJCS8qIFVTRV9PUEVOU1NMICovCiAKKyNpZmRlZiBV U0VfTlNTCitQR19GVU5DVElPTl9JTkZPX1YxKHNzbF9jbGllbnRfZG5fZmllbGQpOworRGF0dW0K K3NzbF9jbGllbnRfZG5fZmllbGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fTlVM TCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKHNzbF9pc3N1ZXJfZmllbGQpOworRGF0dW0K K3NzbF9pc3N1ZXJfZmllbGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fTlVMTCgp OworfQorI2VuZGlmCQkJCQkJCS8qIFVTRV9OU1MgKi8KIAogLyoKICAqIFJldHVybnMgY3VycmVu dCBjbGllbnQgY2VydGlmaWNhdGUgc3ViamVjdCBhcyBvbmUgc3RyaW5nCkBAIC0zMzgsNiArMzU5 LDcgQEAgc3NsX2lzc3Vlcl9kbihQR19GVU5DVElPTl9BUkdTKQogfQogCiAKKyNpZmRlZiBVU0Vf T1BFTlNTTAogLyoKICAqIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYXZhaWxhYmxlIFNTTCBl eHRlbnNpb25zLgogICoKQEAgLTQ3MSwzICs0OTMsMTMgQEAgc3NsX2V4dGVuc2lvbl9pbmZvKFBH X0ZVTkNUSU9OX0FSR1MpCiAJLyogQWxsIGRvbmUgKi8KIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0 eCk7CiB9CisjZW5kaWYJCQkJCQkJLyogVVNFX09QRU5TU0wgKi8KKworI2lmZGVmIFVTRV9OU1MK K1BHX0ZVTkNUSU9OX0lORk9fVjEoc3NsX2V4dGVuc2lvbl9pbmZvKTsKK0RhdHVtCitzc2xfZXh0 ZW5zaW9uX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlQR19SRVRVUk5fTlVMTCgpOworfQor I2VuZGlmCQkJCQkJCS8qIFVTRV9OU1MgKi8KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zc2xp bmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3NsaW5mby5zZ21sCmluZGV4IDJhOWM0NWExMTEuLmYz YWUyZmMzYjggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zc2xpbmZvLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3NzbGluZm8uc2dtbApAQCAtMjIsNyArMjIsOCBAQAogCiAgPHBhcmE+CiAgIFRo aXMgZXh0ZW5zaW9uIHdvbid0IGJ1aWxkIGF0IGFsbCB1bmxlc3MgdGhlIGluc3RhbGxhdGlvbiB3 YXMKLSAgY29uZmlndXJlZCB3aXRoIDxsaXRlcmFsPi0td2l0aC1zc2w9b3BlbnNzbDwvbGl0ZXJh bD4uCisgIGNvbmZpZ3VyZWQgd2l0aCBTU0wgc3VwcG9ydCwgc3VjaCBhcyA8bGl0ZXJhbD4tLXdp dGgtc3NsPW9wZW5zc2w8L2xpdGVyYWw+CisgIG9yIDxsaXRlcmFsPi0td2l0aC1zc2w9bnNzPC9s aXRlcmFsPi4KICA8L3BhcmE+CiAKICA8c2VjdDI+CkBAIC0yMDgsNiArMjA5LDkgQEAgZW1haWxB ZGRyZXNzCiAgICAgIHRoZSBYLjUwMCBhbmQgWC41MDkgc3RhbmRhcmRzLCBzbyB5b3UgY2Fubm90 IGp1c3QgYXNzaWduIGFyYml0cmFyeQogICAgICBtZWFuaW5nIHRvIHRoZW0uCiAgICAgPC9wYXJh PgorICAgIDxwYXJhPgorICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4g dXNpbmcgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPi4KKyAgICA8L3BhcmE+CiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yMjMsNiArMjI3LDkgQEAg ZW1haWxBZGRyZXNzCiAgICAgIFNhbWUgYXMgPGZ1bmN0aW9uPnNzbF9jbGllbnRfZG5fZmllbGQ8 L2Z1bmN0aW9uPiwgYnV0IGZvciB0aGUgY2VydGlmaWNhdGUgaXNzdWVyCiAgICAgIHJhdGhlciB0 aGFuIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LgogICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAg ICAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIHVzaW5nIDxwcm9kdWN0bmFt ZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4uCisgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjM4LDYgKzI0NSw5IEBAIGVtYWlsQWRkcmVzcwogICAg ICBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGV4dGVuc2lvbnMgb2YgY2xpZW50IGNlcnRpZmlj YXRlOiBleHRlbnNpb24gbmFtZSwKICAgICAgZXh0ZW5zaW9uIHZhbHVlLCBhbmQgaWYgaXQgaXMg YSBjcml0aWNhbCBleHRlbnNpb24uCiAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk9wZW5T U0w8L3Byb2R1Y3RuYW1lPi4KKyAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KLS0gCjIuMjUuMQoK --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0009-nss-Support-NSS-in-cryptohash.patch" Content-Description: v44-0009-nss-Support-NSS-in-cryptohash.patch Content-Disposition: attachment; filename="v44-0009-nss-Support-NSS-in-cryptohash.patch"; size=6251; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBhMjhmYjhlMjY1MjgzYWI3YTM5MjMyOTdlNjIzNDQ1YWI5Y2QyODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAw OS8xMF0gbnNzOiBTdXBwb3J0IE5TUyBpbiBjcnlwdG9oYXNoCgpUaGlzIGFkZHMgc3VwcG9ydCBm b3IgdXNpbmcgbGlibnNzIGFzIGEgY3J5cHRvIGJhY2tlbmQgZm9yIHRoZSBidWlsdC0KaW4gY3J5 cHRvaGFzaCBzdXBwb3J0LiBNdWNoIG9mIHRoaXMgY29kZSBpcyBzaW1pbGFyIHRvIHRoZSBwZ2Ny eXB0bwpzdXBwb3J0LgotLS0KIHNyYy9jb21tb24vY3J5cHRvaGFzaF9uc3MuYyB8IDI2NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNjQgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9jb21tb24vY3J5cHRvaGFzaF9uc3Mu YwoKZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY3J5cHRvaGFzaF9uc3MuYyBiL3NyYy9jb21tb24v Y3J5cHRvaGFzaF9uc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41 OWJhOWMxNjk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbW1vbi9jcnlwdG9oYXNoX25zcy5j CkBAIC0wLDAgKzEsMjY0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBjcnlwdG9oYXNo X25zcy5jCisgKgkgIFNldCBvZiB3cmFwcGVyIHJvdXRpbmVzIG9uIHRvcCBvZiBOU1MgdG8gc3Vw cG9ydCBjcnlwdG9ncmFwaGljCisgKgkgIGhhc2ggZnVuY3Rpb25zLgorICoKKyAqIFRoaXMgc2hv dWxkIG9ubHkgYmUgdXNlZCBpZiBjb2RlIGlzIGNvbXBpbGVkIHdpdGggTlNTIHN1cHBvcnQuCisg KgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9O CisgKgkJICBzcmMvY29tbW9uL2NyeXB0b2hhc2hfbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNlbHNl CisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiY29tbW9uL25z cy5oIgorCisjaW5jbHVkZSA8bnNzL25zcy5oPgorI2luY2x1ZGUgPG5zcy9oYXNodC5oPgorI2lu Y2x1ZGUgPG5zcy9wazExZnVuYy5oPgorI2luY2x1ZGUgPG5zcy9wazExcHViLmg+CisjaW5jbHVk ZSA8bnNzL3NlY2l0ZW0uaD4KKyNpbmNsdWRlIDxuc3Mvc2VjaGFzaC5oPgorI2luY2x1ZGUgPG5z cy9zZWNvaWQuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjZXJyLmg+CisKKyNpbmNsdWRlICJjb21tb24v Y3J5cHRvaGFzaC5oIgorI2lmbmRlZiBGUk9OVEVORAorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25l cl9wcml2YXRlLmgiCisjZW5kaWYKKworLyoKKyAqIEluIHRoZSBiYWNrZW5kLCB1c2UgYW4gYWxs b2NhdGlvbiBpbiBUb3BNZW1vcnlDb250ZXh0IHRvIGNvdW50IGZvcgorICogcmVzb3duZXIgY2xl YW51cCBoYW5kbGluZy4gIEluIHRoZSBmcm9udGVuZCwgdXNlIG1hbGxvYyB0byBiZSBhYmxlCisg KiB0byByZXR1cm4gYSBmYWlsdXJlIHN0YXR1cyBiYWNrIHRvIHRoZSBjYWxsZXIuCisgKi8KKyNp Zm5kZWYgRlJPTlRFTkQKKyNkZWZpbmUgQUxMT0Moc2l6ZSkgTWVtb3J5Q29udGV4dEFsbG9jKFRv cE1lbW9yeUNvbnRleHQsIHNpemUpCisjZGVmaW5lIEZSRUUocHRyKSBwZnJlZShwdHIpCisjZWxz ZQorI2RlZmluZSBBTExPQyhzaXplKSBtYWxsb2Moc2l6ZSkKKyNkZWZpbmUgRlJFRShwdHIpIGZy ZWUocHRyKQorI2VuZGlmCisKKy8qCisgKiBJbnRlcm5hbCBwZ19jcnlwdG9oYXNoX2N0eCBzdHJ1 Y3R1cmUuCisgKi8KK3N0cnVjdCBwZ19jcnlwdG9oYXNoX2N0eAoreworCXBnX2NyeXB0b2hhc2hf dHlwZSB0eXBlOworCisJUEsxMUNvbnRleHQgKnBrMTFfY29udGV4dDsKKwlIQVNIX0hhc2hUeXBl IGhhc2hfdHlwZTsKKworI2lmbmRlZiBGUk9OVEVORAorCVJlc291cmNlT3duZXIgcmVzb3duZXI7 CisjZW5kaWYKK307CisKKy8qCisgKiBwZ19jcnlwdG9oYXNoX2NyZWF0ZQorICoKKyAqIENyZWF0 ZSBhbmQgYWxsb2NhdGUgYSBuZXcgaGFzaCBjb250ZXh0LiBSZXR1cm5zIE5VTEwgb24gZmFpbHVy ZSBpbiB0aGUKKyAqIGZyb250ZW5kLCBhbmQgcmFpc2UgZXJyb3Igd2l0aG91dCByZXR1cm5pbmcg aW4gdGhlIGJhY2tlbmQuCisgKi8KK3BnX2NyeXB0b2hhc2hfY3R4ICoKK3BnX2NyeXB0b2hhc2hf Y3JlYXRlKHBnX2NyeXB0b2hhc2hfdHlwZSB0eXBlKQoreworCU5TU0luaXRQYXJhbWV0ZXJzIHBh cmFtczsKKwlwZ19jcnlwdG9oYXNoX2N0eCAqY3R4OworCVNFQ09pZERhdGEgKmhhc2g7CisJU0VD U3RhdHVzIHN0YXR1czsKKworI2lmbmRlZiBGUk9OVEVORAorCS8qCisJICogTWFrZSBzdXJlIHRo YXQgdGhlIHJlc291cmNlIG93bmVyIGhhcyBzcGFjZSB0byByZW1lbWJlciB0aGlzIHJlZmVyZW5j ZS4KKwkgKiBUaGlzIGNhbiBlcnJvciBvdXQgd2l0aCAib3V0IG9mIG1lbW9yeSIsIHNvIGRvIHRo aXMgYmVmb3JlIGFueSBvdGhlcgorCSAqIGFsbG9jYXRpb24gdG8gYXZvaWQgbGVha2luZy4KKwkg Ki8KKwlSZXNvdXJjZU93bmVyRW5sYXJnZUNyeXB0b0hhc2goQ3VycmVudFJlc291cmNlT3duZXIp OworI2VuZGlmCisKKwljdHggPSBBTExPQyhzaXplb2YocGdfY3J5cHRvaGFzaF9jdHgpKTsKKwor CWlmICghY3R4KQorCQlnb3RvIGVycm9yOworCisJc3dpdGNoKHR5cGUpCisJeworCQljYXNlIFBH X1NIQTE6CisJCQljdHgtPmhhc2hfdHlwZSA9IFNFQ19PSURfU0hBMTsKKwkJCWJyZWFrOworCQlj YXNlIFBHX01ENToKKwkJCWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9NRDU7CisJCQlicmVhazsK KwkJY2FzZSBQR19TSEEyMjQ6CisJCQljdHgtPmhhc2hfdHlwZSA9IFNFQ19PSURfU0hBMjI0Owor CQkJYnJlYWs7CisJCWNhc2UgUEdfU0hBMjU2OgorCQkJY3R4LT5oYXNoX3R5cGUgPSBTRUNfT0lE X1NIQTI1NjsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTM4NDoKKwkJCWN0eC0+aGFzaF90eXBl ID0gU0VDX09JRF9TSEEzODQ7CisJCQlicmVhazsKKwkJY2FzZSBQR19TSEE1MTI6CisJCQljdHgt Pmhhc2hfdHlwZSA9IFNFQ19PSURfU0hBNTEyOworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBJ bml0aWFsaXplIG91ciBvd24gTlNTIGNvbnRleHQgd2l0aG91dCBhIGRhdGFiYXNlIGJhY2tpbmcg aXQuCisJICovCisJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKwlwYXJhbXMu bGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisJc3RhdHVzID0gTlNTX05vREJfSW5pdCgiLiIpOwor CWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCWV4cGxpY2l0X2J6ZXJvKGN0eCwgc2l6 ZW9mKHBnX2NyeXB0b2hhc2hfY3R4KSk7CisJCUZSRUUoY3R4KTsKKwkJZ290byBlcnJvcjsKKwl9 CisKKwljdHgtPnR5cGUgPSB0eXBlOworCWhhc2ggPSBTRUNPSURfRmluZE9JREJ5VGFnKGN0eC0+ aGFzaF90eXBlKTsKKwljdHgtPnBrMTFfY29udGV4dCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4 dChoYXNoLT5vZmZzZXQpOworCWlmICghY3R4LT5wazExX2NvbnRleHQpCisJeworCQlleHBsaWNp dF9iemVybyhjdHgsIHNpemVvZihwZ19jcnlwdG9oYXNoX2N0eCkpOworCQlGUkVFKGN0eCk7CisJ CWdvdG8gZXJyb3I7CisJfQorCisjaWZuZGVmIEZST05URU5ECisJY3R4LT5yZXNvd25lciA9IEN1 cnJlbnRSZXNvdXJjZU93bmVyOworCVJlc291cmNlT3duZXJSZW1lbWJlckNyeXB0b0hhc2goQ3Vy cmVudFJlc291cmNlT3duZXIsCisJCQkJCQkJCQlQb2ludGVyR2V0RGF0dW0oY3R4KSk7CisjZW5k aWYKKworCXJldHVybiBjdHg7CisKK2Vycm9yOgorI2lmbmRlZiBGUk9OVEVORAorCWVyZXBvcnQo RVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJIGVycm1zZygi b3V0IG9mIG1lbW9yeSIpKSk7CisjZW5kaWYKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIHBn X2NyeXB0b2hhc2hfaW5pdAorICoJCQlJbml0aWFsaXplIHRoZSBwYXNzZWQgaGFzaCBjb250ZXh0 CisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCisgKi8KK2ludAor cGdfY3J5cHRvaGFzaF9pbml0KHBnX2NyeXB0b2hhc2hfY3R4ICpjdHgpCit7CisJU0VDU3RhdHVz CQlzdGF0dXM7CisKKwlzdGF0dXMgPSBQSzExX0RpZ2VzdEJlZ2luKGN0eC0+cGsxMV9jb250ZXh0 KTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIC0xOworCXJldHVybiAw OworfQorCisvKgorICogcGdfY3J5cHRvaGFzaF91cGRhdGUKKyAqCisgKiBVcGRhdGUgYSBoYXNo IGNvbnRleHQuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4KKyAqLworaW50 CitwZ19jcnlwdG9oYXNoX3VwZGF0ZShwZ19jcnlwdG9oYXNoX2N0eCAqY3R4LCBjb25zdCB1aW50 OCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCisJaWYgKGN0eCA9 PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlzdGF0dXMgPSBQSzExX0RpZ2VzdE9wKGN0eC0+cGsx MV9jb250ZXh0LCBkYXRhLCBsZW4pOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0 dXJuIC0xOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBwZ19jcnlwdG9oYXNoX2ZpbmFsCisg KgorICogRmluYWxpemUgYSBoYXNoIGNvbnRleHQuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEg b24gZmFpbHVyZS4KKyAqLworaW50CitwZ19jcnlwdG9oYXNoX2ZpbmFsKHBnX2NyeXB0b2hhc2hf Y3R4ICpjdHgsIHVpbnQ4ICpkZXN0LCBzaXplX3QgbGVuKQoreworCVNFQ1N0YXR1cwlzdGF0dXM7 CisJdW5zaWduZWQgaW50IG91dGxlbjsKKworCXN3aXRjaCAoY3R4LT50eXBlKQorCXsKKwkJY2Fz ZSBQR19NRDU6CisJCQlpZiAobGVuIDwgTUQ1X0xFTkdUSCkKKwkJCQlyZXR1cm4gLTE7CisJCQli cmVhazsKKwkJY2FzZSBQR19TSEExOgorCQkJaWYgKGxlbiA8IFNIQTFfTEVOR1RIKQorCQkJCXJl dHVybiAtMTsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTIyNDoKKwkJCWlmIChsZW4gPCBTSEEy MjRfTEVOR1RIKQorCQkJCXJldHVybiAtMTsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTI1NjoK KwkJCWlmIChsZW4gPCBTSEEyNTZfTEVOR1RIKQorCQkJCXJldHVybiAtMTsKKwkJCWJyZWFrOwor CQljYXNlIFBHX1NIQTM4NDoKKwkJCWlmIChsZW4gPCBTSEEzODRfTEVOR1RIKQorCQkJCXJldHVy biAtMTsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTUxMjoKKwkJCWlmIChsZW4gPCBTSEE1MTJf TEVOR1RIKQorCQkJCXJldHVybiAtMTsKKwkJCWJyZWFrOworCX0KKworCXN0YXR1cyA9IFBLMTFf RGlnZXN0RmluYWwoY3R4LT5wazExX2NvbnRleHQsIGRlc3QsICZvdXRsZW4sIGxlbik7CisKKwlp ZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiAtMTsKKworCXJldHVybiAwOworfQor CisvKgorICogcGdfY3J5cHRvaGFzaF9mcmVlCisgKgorICogRnJlZSBhIGhhc2ggY29udGV4dCBh bmQgdGhlIGFzc29jaWF0ZWQgTlNTIGNvbnRleHQuCisgKi8KK3ZvaWQKK3BnX2NyeXB0b2hhc2hf ZnJlZShwZ19jcnlwdG9oYXNoX2N0eCAqY3R4KQoreworCVBSQm9vbAkJZnJlZV9jb250ZXh0ID0g UFJfVFJVRTsKKworCWlmICghY3R4KQorCQlyZXR1cm47CisKKwlQSzExX0Rlc3Ryb3lDb250ZXh0 KGN0eC0+cGsxMV9jb250ZXh0LCBmcmVlX2NvbnRleHQpOworI2lmbmRlZiBGUk9OVEVORAorCVJl c291cmNlT3duZXJGb3JnZXRDcnlwdG9IYXNoKGN0eC0+cmVzb3duZXIsIFBvaW50ZXJHZXREYXR1 bShjdHgpKTsKKyNlbmRpZgorCWV4cGxpY2l0X2J6ZXJvKGN0eCwgc2l6ZW9mKHBnX2NyeXB0b2hh c2hfY3R4KSk7CisJRlJFRShjdHgpOworfQotLSAKMi4yNS4xCgo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_ Content-Type: text/x-patch; name="v44-0010-nss-Build-infrastructure.patch" Content-Description: v44-0010-nss-Build-infrastructure.patch Content-Disposition: attachment; filename="v44-0010-nss-Build-infrastructure.patch"; size=21863; creation-date="Mon, 04 Oct 2021 16:14:37 GMT"; modification-date="Mon, 04 Oct 2021 16:14:37 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA4YzM5MWY0YTg1ZmQwY2QwYzJlMjhkNTg4ZTg5Mjk4ZGU4MzhmZGQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NTUgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0NCAx MC8xMF0gbnNzOiBCdWlsZCBpbmZyYXN0cnVjdHVyZQoKRmluYWxseSB0aGlzIGFkZHMgdGhlIGlu ZnJhc3RydWN0dXJlIHRvIGJ1aWxkIGEgcG9zdGdyZXMgaW5zdGFsbGF0aW9uCndpdGggbGlibnNz IHN1cHBvcnQuCi0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgfCAyOTQgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAg ICAgfCAgMzEgKysrLQogc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZpbGUgICAgfCAgIDQgKwogc3Jj L2NvbW1vbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvcGdfY29uZmln LmguaW4gICAgfCAgMTIgKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlIHwgICA1ICsK IHNyYy90b29scy9tc3ZjL0luc3RhbGwucG0gICAgIHwgICAzICstCiBzcmMvdG9vbHMvbXN2Yy9N a3ZjYnVpbGQucG0gICB8ICA0MCArKysrLQogc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0gICAg fCAgMjYgKysrCiA5IGZpbGVzIGNoYW5nZWQsIDQxMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNzU0MmZlMzBh MS4uM2M5ODRiMDkyNyAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAt NjU0LDYgKzY1NCw4IEBAIFVVSURfTElCUwogTERBUF9MSUJTX0JFCiBMREFQX0xJQlNfRkUKIHdp dGhfc3NsCitOU1BSX0NPTkZJRworTlNTX0NPTkZJRwogUFRIUkVBRF9DRkxBR1MKIFBUSFJFQURf TElCUwogUFRIUkVBRF9DQwpAQCAtMTU3Nyw3ICsxNTc5LDcgQEAgT3B0aW9uYWwgUGFja2FnZXM6 CiAgIC0td2l0aG91dC16bGliICAgICAgICAgIGRvIG5vdCB1c2UgWmxpYgogICAtLXdpdGgtbHo0 ICAgICAgICAgICAgICBidWlsZCB3aXRoIExaNCBzdXBwb3J0CiAgIC0td2l0aC1nbnUtbGQgICAg ICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSAg LS13aXRoLXNzbD1MSUIgICAgICAgICAgdXNlIExJQiBmb3IgU1NML1RMUyBzdXBwb3J0IChvcGVu c3NsKQorICAtLXdpdGgtc3NsPUxJQiAgICAgICAgICB1c2UgTElCIGZvciBTU0wvVExTIHN1cHBv cnQgKG9wZW5zc2wsIG5zcykKICAgLS13aXRoLW9wZW5zc2wgICAgICAgICAgb2Jzb2xldGUgc3Bl bGxpbmcgb2YgLS13aXRoLXNzbD1vcGVuc3NsCiAKIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1l bnQgdmFyaWFibGVzOgpAQCAtMTI3MDksOCArMTI3MTEsMjc0IEBAIGRvbmUKIAogJGFzX2VjaG8g IiNkZWZpbmUgVVNFX09QRU5TU0wgMSIgPj5jb25mZGVmcy5oCiAKK2VsaWYgdGVzdCAiJHdpdGhf c3NsIiA9IG5zcyA7IHRoZW4KKyAgIyBUT0RPOiBmYWxsYmFjayBpbiBjYXNlIG5zcy1jb25maWcv bnNwci1jb25maWcgYXJlbid0IGZvdW5kLgorICBpZiB0ZXN0IC16ICIkTlNTX0NPTkZJRyI7IHRo ZW4KKyAgZm9yIGFjX3Byb2cgaW4gbnNzLWNvbmZpZworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJz dCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hv X24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX05T U19DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgor ZWxzZQorICBjYXNlICROU1NfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19j dl9wYXRoX05TU19DT05GSUc9IiROU1NfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0 aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZT PSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZl X0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4 dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRh YmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0 aF9OU1NfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNf ZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19z YXZlX0lGUworCisgIDs7Citlc2FjCitmaQorTlNTX0NPTkZJRz0kYWNfY3ZfcGF0aF9OU1NfQ09O RklHCitpZiB0ZXN0IC1uICIkTlNTX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICROU1NfQ09ORklHIiA+JjUKKyRhc19lY2hv ICIkTlNTX0NPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkK KworCisgIHRlc3QgLW4gIiROU1NfQ09ORklHIiAmJiBicmVhaworZG9uZQorCitlbHNlCisgICMg UmVwb3J0IHRoZSB2YWx1ZSBvZiBOU1NfQ09ORklHIGluIGNvbmZpZ3VyZSdzIG91dHB1dCBpbiBh bGwgY2FzZXMuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yIE5TU19DT05GSUciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE5TU19D T05GSUcuLi4gIiA+JjY7IH0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICROU1NfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTlNTX0NPTkZJRyIgPiY2 OyB9CitmaQorCisgIGlmIHRlc3QgLXogIiROU1BSX0NPTkZJRyI7IHRoZW4KKyAgZm9yIGFjX3By b2cgaW4gbnNwci1jb25maWcKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFj X3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15 ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm b3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9OU1BSX0NPTkZJRys6fSBm YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2Ug JE5TUFJfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX05TUFJf Q09ORklHPSIkTlNQUl9DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdp dGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQ QVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRl c3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRh Y19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX05TUFJfQ09O RklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi ID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUwor CisgIDs7Citlc2FjCitmaQorTlNQUl9DT05GSUc9JGFjX2N2X3BhdGhfTlNQUl9DT05GSUcKK2lm IHRlc3QgLW4gIiROU1BSX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICROU1BSX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJE5T UFJfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisK KyAgdGVzdCAtbiAiJE5TUFJfQ09ORklHIiAmJiBicmVhaworZG9uZQorCitlbHNlCisgICMgUmVw b3J0IHRoZSB2YWx1ZSBvZiBOU1BSX0NPTkZJRyBpbiBjb25maWd1cmUncyBvdXRwdXQgaW4gYWxs IGNhc2VzLgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBOU1BSX0NPTkZJRyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTlNQUl9D T05GSUcuLi4gIiA+JjY7IH0KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICROU1BSX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJE5TUFJfQ09ORklHIiA+ JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAtbiAiJE5TU19DT05GSUciOyB0aGVuCisgICAgTlNTX0xJ QlM9YCROU1NfQ09ORklHIC0tbGlic2AKKwlOU1NfQ0ZMQUdTPWAkTlNTX0NPTkZJRyAtLWNmbGFn c2AKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJE5TUFJfQ09ORklHIjsgdGhlbgorCU5TUFJfTElCUz1g JE5TUFJfQ09ORklHIC0tbGlic2AKKwlOU1BSX0NGTEFHUz1gJE5TUFJfQ09ORklHIC0tY2ZsYWdz YAorICBmaQorCisgIExERkxBR1M9IiRMREZMQUdTICROU1NfTElCUyAkTlNQUl9MSUJTIgorICBD RkxBR1M9IiRDRkxBR1MgJE5TU19DRkxBR1MgJE5TUFJfQ0ZMQUdTIgorCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE5TU19Jbml0Q29udGV4 dCBpbiAtbG5zczMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE5TU19Jbml0Q29udGV4 dCBpbiAtbG5zczMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250 ZXh0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UK KyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxuc3MzICAkTElCUyIKK2Nh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZv aWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3Rv dHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi QyIKKyNlbmRpZgorY2hhciBOU1NfSW5pdENvbnRleHQgKCk7CitpbnQKK21haW4gKCkKK3sKK3Jl dHVybiBOU1NfSW5pdENvbnRleHQgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX25zczNfTlNT X0luaXRDb250ZXh0PXllcworZWxzZQorICBhY19jdl9saWJfbnNzM19OU1NfSW5pdENvbnRleHQ9 bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAg ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGli X3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250ZXh0IiA+JjUKKyRhc19lY2hvICIk YWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250ZXh0IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3Zf bGliX25zczNfTlNTX0luaXRDb250ZXh0IiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCTlNTMyAxCitfQUNFT0YKKworICBMSUJTPSIt bG5zczMgJExJQlMiCisKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gImxpYnJhcnkgJ25zczMnIGlz IHJlcXVpcmVkIGZvciBOU1MiICIkTElORU5PIiA1CitmaQorCisgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFBSX0dldERlZmF1bHRJT01ldGhv ZHMgaW4gLWxuc3ByNCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUFJfR2V0RGVmYXVs dElPTWV0aG9kcyBpbiAtbG5zcHI0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9uc3ByNF9Q Ul9HZXREZWZhdWx0SU9NZXRob2RzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNh Y2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0i LWxuc3ByNCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJu YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9f Y3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgUFJfR2V0RGVmYXVsdElPTWV0aG9k cyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIFBSX0dldERlZmF1bHRJT01ldGhvZHMgKCk7 CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5F Tk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX25zcHI0X1BSX0dldERlZmF1bHRJT01ldGhvZHM9eWVz CitlbHNlCisgIGFjX2N2X2xpYl9uc3ByNF9QUl9HZXREZWZhdWx0SU9NZXRob2RzPW5vCitmaQor cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJ QlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X2xpYl9uc3ByNF9QUl9HZXREZWZhdWx0SU9NZXRob2RzIiA+JjUKKyRhc19lY2hvICIk YWNfY3ZfbGliX25zcHI0X1BSX0dldERlZmF1bHRJT01ldGhvZHMiID4mNjsgfQoraWYgdGVzdCAi eCRhY19jdl9saWJfbnNwcjRfUFJfR2V0RGVmYXVsdElPTWV0aG9kcyIgPSB4eWVzOyB0aGVuIDoK KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQk5TUFI0IDEKK19B Q0VPRgorCisgIExJQlM9Ii1sbnNwcjQgJExJQlMiCisKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8g ImxpYnJhcnkgJ25zcHI0JyBpcyByZXF1aXJlZCBmb3IgTlNTIiAiJExJTkVOTyIgNQorZmkKKwor ICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBT U0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJzIGluIC1sc3NsMyIgPiY1CiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgU1NMX0dldEltcGxlbWVudGVkQ2lwaGVycyBpbiAtbHNzbDMuLi4gIiA+JjY7IH0K K2lmICR7YWNfY3ZfbGliX3NzbDNfU1NMX0dldEltcGxlbWVudGVkQ2lwaGVycys6fSBmYWxzZTsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xp Yl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sc3NsMyAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8q IE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgor ICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEg R0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2No YXIgU1NMX0dldEltcGxlbWVudGVkQ2lwaGVycyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJu IFNTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNF T0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3Nz bDNfU1NMX0dldEltcGxlbWVudGVkQ2lwaGVycz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3NzbDNf U1NMX0dldEltcGxlbWVudGVkQ2lwaGVycz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc3NsM19TU0xfR2V0 SW1wbGVtZW50ZWRDaXBoZXJzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3NzbDNfU1NMX0dl dEltcGxlbWVudGVkQ2lwaGVycyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zc2wzX1NT TF9HZXRJbXBsZW1lbnRlZENpcGhlcnMiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJTU0wzIDEKK19BQ0VPRgorCisgIExJQlM9Ii1s c3NsMyAkTElCUyIKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAibGlicmFyeSAnc3NsMycgaXMg cmVxdWlyZWQgZm9yIE5TUyIgIiRMSU5FTk8iIDUKK2ZpCisKKworJGFzX2VjaG8gIiNkZWZpbmUg VVNFX05TUyAxIiA+PmNvbmZkZWZzLmgKKwogZWxpZiB0ZXN0ICIkd2l0aF9zc2wiICE9IG5vIDsg dGhlbgotICBhc19mbl9lcnJvciAkPyAiLS13aXRoLXNzbCBtdXN0IHNwZWNpZnkgb3BlbnNzbCIg IiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gIi0td2l0aC1zc2wgbXVzdCBzcGVjaWZ5IG9u ZSBvZiBvcGVuc3NsIG9yIG5zcyIgIiRMSU5FTk8iIDUKIGZpCiAKIApAQCAtMTM2ODEsNiArMTM5 NDksMjMgQEAgZWxzZQogZmkKIAogCitlbGlmIHRlc3QgIiR3aXRoX3NzbCIgPSBuc3MgOyB0aGVu CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJuc3Mvc3NsLmgiICJh Y19jdl9oZWFkZXJfbnNzX3NzbF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4 JGFjX2N2X2hlYWRlcl9uc3Nfc3NsX2giID0geHllczsgdGhlbiA6CisKK2Vsc2UKKyAgYXNfZm5f ZXJyb3IgJD8gImhlYWRlciBmaWxlIDxuc3Mvc3NsLmg+IGlzIHJlcXVpcmVkIGZvciBOU1MiICIk TElORU5PIiA1CitmaQorCisKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVO TyIgIm5zcy9uc3MuaCIgImFjX2N2X2hlYWRlcl9uc3NfbnNzX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX25zc19uc3NfaCIgPSB4eWVzOyB0aGVuIDoK KworZWxzZQorICBhc19mbl9lcnJvciAkPyAiaGVhZGVyIGZpbGUgPG5zcy9uc3MuaD4gaXMgcmVx dWlyZWQgZm9yIE5TUyIgIiRMSU5FTk8iIDUKK2ZpCisKKwogZmkKIAogaWYgdGVzdCAiJHdpdGhf cGFtIiA9IHllcyA7IHRoZW4KQEAgLTE4NTQwLDYgKzE4ODI1LDkgQEAgJGFzX2VjaG9fbiAiY2hl Y2tpbmcgd2hpY2ggcmFuZG9tIG51bWJlciBzb3VyY2UgdG8gdXNlLi4uICIgPiY2OyB9CiBpZiB0 ZXN0IHgiJHdpdGhfc3NsIiA9IHgib3BlbnNzbCIgOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBPcGVuU1NMIiA+JjUKICRhc19lY2hvICJP cGVuU1NMIiA+JjY7IH0KK2VsaWYgdGVzdCB4IiR3aXRoX3NzbCIgPSB4Im5zcyIgOyB0aGVuCisg IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBOU1MiID4m NQorJGFzX2VjaG8gIk5TUyIgPiY2OyB9CiBlbGlmIHRlc3QgeCIkUE9SVE5BTUUiID0geCJ3aW4z MiIgOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiBXaW5kb3dzIG5hdGl2ZSIgPiY1CiAkYXNfZWNobyAiV2luZG93cyBuYXRpdmUiID4mNjsg fQpAQCAtMTg1NjksNyArMTg4NTcsNyBAQCBmaQogICBpZiB0ZXN0IHgiJGFjX2N2X2ZpbGVfX2Rl dl91cmFuZG9tIiA9IHgibm8iIDsgdGhlbgogICAgIGFzX2ZuX2Vycm9yICQ/ICIKIG5vIHNvdXJj ZSBvZiBzdHJvbmcgcmFuZG9tIG51bWJlcnMgd2FzIGZvdW5kCi1Qb3N0Z3JlU1FMIGNhbiB1c2Ug T3BlblNTTCwgbmF0aXZlIFdpbmRvd3MgQVBJIG9yIC9kZXYvdXJhbmRvbSBhcyBhIHNvdXJjZSBv ZiByYW5kb20gbnVtYmVycy4iICIkTElORU5PIiA1CitQb3N0Z3JlU1FMIGNhbiB1c2UgT3BlblNT TCwgTlNTLCBuYXRpdmUgV2luZG93cyBBUEkgb3IgL2Rldi91cmFuZG9tIGFzIGEgc291cmNlIG9m IHJhbmRvbSBudW1iZXJzLiIgIiRMSU5FTk8iIDUKICAgZmkKIGZpCiAKZGlmZiAtLWdpdCBhL2Nv bmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBlZDNjZGI5YThlLi42OGZjYzhkNGU1IDEw MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMjM0LDcgKzEy MzQsNyBAQCBmaQogIwogIyBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3VwcG9ydGVkIFNT TC9UTFMgbGlicmFyeTogT3BlblNTTC4KICMKLVBHQUNfQVJHX1JFUSh3aXRoLCBzc2wsIFtMSUJd LCBbdXNlIExJQiBmb3IgU1NML1RMUyBzdXBwb3J0IChvcGVuc3NsKV0pCitQR0FDX0FSR19SRVEo d2l0aCwgc3NsLCBbTElCXSwgW3VzZSBMSUIgZm9yIFNTTC9UTFMgc3VwcG9ydCAob3BlbnNzbCwg bnNzKV0pCiBpZiB0ZXN0IHgiJHdpdGhfc3NsIiA9IHgiIiA7IHRoZW4KICAgd2l0aF9zc2w9bm8K IGZpCkBAIC0xMjY4LDggKzEyNjgsMjggQEAgaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG9wZW5zc2wg OyB0aGVuCiAgICMgZnVuY3Rpb24gd2FzIHJlbW92ZWQuCiAgIEFDX0NIRUNLX0ZVTkNTKFtDUllQ VE9fbG9ja10pCiAgIEFDX0RFRklORShbVVNFX09QRU5TU0xdLCAxLCBbRGVmaW5lIHRvIDEgdG8g YnVpbGQgd2l0aCBPcGVuU1NMIHN1cHBvcnQuICgtLXdpdGgtc3NsPW9wZW5zc2wpXSkKK2VsaWYg dGVzdCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgIyBUT0RPOiBmYWxsYmFjayBpbiBjYXNl IG5zcy1jb25maWcvbnNwci1jb25maWcgYXJlbid0IGZvdW5kLgorICBQR0FDX1BBVEhfUFJPR1Mo TlNTX0NPTkZJRywgbnNzLWNvbmZpZykKKyAgUEdBQ19QQVRIX1BST0dTKE5TUFJfQ09ORklHLCBu c3ByLWNvbmZpZykKKyAgaWYgdGVzdCAtbiAiJE5TU19DT05GSUciOyB0aGVuCisgICAgTlNTX0xJ QlM9YCROU1NfQ09ORklHIC0tbGlic2AKKwlOU1NfQ0ZMQUdTPWAkTlNTX0NPTkZJRyAtLWNmbGFn c2AKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJE5TUFJfQ09ORklHIjsgdGhlbgorCU5TUFJfTElCUz1g JE5TUFJfQ09ORklHIC0tbGlic2AKKwlOU1BSX0NGTEFHUz1gJE5TUFJfQ09ORklHIC0tY2ZsYWdz YAorICBmaQorCisgIExERkxBR1M9IiRMREZMQUdTICROU1NfTElCUyAkTlNQUl9MSUJTIgorICBD RkxBR1M9IiRDRkxBR1MgJE5TU19DRkxBR1MgJE5TUFJfQ0ZMQUdTIgorCisgIEFDX0NIRUNLX0xJ Qihuc3MzLCBOU1NfSW5pdENvbnRleHQsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICduc3Mz JyBpcyByZXF1aXJlZCBmb3IgTlNTXSldKQorICBBQ19DSEVDS19MSUIobnNwcjQsIFBSX0dldERl ZmF1bHRJT01ldGhvZHMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICduc3ByNCcgaXMgcmVx dWlyZWQgZm9yIE5TU10pXSkKKyAgQUNfQ0hFQ0tfTElCKHNzbDMsIFNTTF9HZXRJbXBsZW1lbnRl ZENpcGhlcnMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICdzc2wzJyBpcyByZXF1aXJlZCBm b3IgTlNTXSldKQorICBBQ19ERUZJTkUoW1VTRV9OU1NdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgTlNTIHN1cHBvcnQsXSkKIGVsaWYgdGVzdCAiJHdpdGhfc3NsIiAhPSBubyA7IHRoZW4K LSAgQUNfTVNHX0VSUk9SKFstLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBvcGVuc3NsXSkKKyAgQUNf TVNHX0VSUk9SKFstLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBvbmUgb2Ygb3BlbnNzbCBvciBuc3Nd KQogZmkKIEFDX1NVQlNUKHdpdGhfc3NsKQogCkBAIC0xNDU5LDYgKzE0NzksOSBAQCBmaQogaWYg dGVzdCAiJHdpdGhfc3NsIiA9IG9wZW5zc2wgOyB0aGVuCiAgIEFDX0NIRUNLX0hFQURFUihvcGVu c3NsL3NzbC5oLCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUgPG9wZW5zc2wvc3NsLmg+ IGlzIHJlcXVpcmVkIGZvciBPcGVuU1NMXSldKQogICBBQ19DSEVDS19IRUFERVIob3BlbnNzbC9l cnIuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxvcGVuc3NsL2Vyci5oPiBpcyBy ZXF1aXJlZCBmb3IgT3BlblNTTF0pXSkKK2VsaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRo ZW4KKyAgQUNfQ0hFQ0tfSEVBREVSKG5zcy9zc2wuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRl ciBmaWxlIDxuc3Mvc3NsLmg+IGlzIHJlcXVpcmVkIGZvciBOU1NdKV0pCisgIEFDX0NIRUNLX0hF QURFUihuc3MvbnNzLmgsIFtdLCBbQUNfTVNHX0VSUk9SKFtoZWFkZXIgZmlsZSA8bnNzL25zcy5o PiBpcyByZXF1aXJlZCBmb3IgTlNTXSldKQogZmkKIAogaWYgdGVzdCAiJHdpdGhfcGFtIiA9IHll cyA7IHRoZW4KQEAgLTIyNTEsNiArMjI3NCw4IEBAIGZpCiBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNo IHJhbmRvbSBudW1iZXIgc291cmNlIHRvIHVzZV0pCiBpZiB0ZXN0IHgiJHdpdGhfc3NsIiA9IHgi b3BlbnNzbCIgOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoW09wZW5TU0xdKQorZWxpZiB0ZXN0IHgi JHdpdGhfc3NsIiA9IHgibnNzIiA7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbTlNTXSkKIGVsaWYg dGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMyIiA7IHRoZW4KICAgQUNfTVNHX1JFU1VMVChbV2lu ZG93cyBuYXRpdmVdKQogZWxzZQpAQCAtMjI2MCw3ICsyMjg1LDcgQEAgZWxzZQogICBpZiB0ZXN0 IHgiJGFjX2N2X2ZpbGVfX2Rldl91cmFuZG9tIiA9IHgibm8iIDsgdGhlbgogICAgIEFDX01TR19F UlJPUihbCiBubyBzb3VyY2Ugb2Ygc3Ryb25nIHJhbmRvbSBudW1iZXJzIHdhcyBmb3VuZAotUG9z dGdyZVNRTCBjYW4gdXNlIE9wZW5TU0wsIG5hdGl2ZSBXaW5kb3dzIEFQSSBvciAvZGV2L3VyYW5k b20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMuXSkKK1Bvc3RncmVTUUwgY2FuIHVzZSBP cGVuU1NMLCBOU1MsIG5hdGl2ZSBXaW5kb3dzIEFQSSBvciAvZGV2L3VyYW5kb20gYXMgYSBzb3Vy Y2Ugb2YgcmFuZG9tIG51bWJlcnMuXSkKICAgZmkKIGZpCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2xpYnBxL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZpbGUKaW5kZXggNmQz ODVmZDZhNC4uMzQ0ZmRmMmU1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZpbGUKQEAgLTMxLDYgKzMxLDEwIEBAIE9C SlMgPSBcCiAKIGlmZXEgKCQod2l0aF9zc2wpLG9wZW5zc2wpCiBPQkpTICs9IGJlLXNlY3VyZS1v cGVuc3NsLm8KK2Vsc2UKK2lmZXEgKCQod2l0aF9zc2wpLG5zcykKK09CSlMgKz0gYmUtc2VjdXJl LW5zcy5vCitlbmRpZgogZW5kaWYKIAogaWZlcSAoJCh3aXRoX2dzc2FwaSkseWVzKQpkaWZmIC0t Z2l0IGEvc3JjL2NvbW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUKaW5kZXggODgw NzIyZmNmNS4uOGE3NWNhMGRmMyAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9NYWtlZmlsZQorKysg Yi9zcmMvY29tbW9uL01ha2VmaWxlCkBAIC04NSw2ICs4NSwxMyBAQCBPQkpTX0NPTU1PTiArPSBc CiAJY3J5cHRvaGFzaF9vcGVuc3NsLm8gXAogCWhtYWNfb3BlbnNzbC5vCiBlbHNlCitpZmVxICgk KHdpdGhfc3NsKSxuc3MpCitPQkpTX0NPTU1PTiArPSBcCisJaG1hYy5vIFwKKwljaXBoZXJfbnNz Lm8gXAorCXByb3RvY29sX25zcy5vIFwKKwljcnlwdG9oYXNoX25zcy5vCitlbHNlCiBPQkpTX0NP TU1PTiArPSBcCiAJY3J5cHRvaGFzaC5vIFwKIAlobWFjLm8gXApAQCAtOTIsNiArOTksNyBAQCBP QkpTX0NPTU1PTiArPSBcCiAJc2hhMS5vIFwKIAlzaGEyLm8KIGVuZGlmCitlbmRpZgogCiAjIEEg ZmV3IGZpbGVzIGFyZSBjdXJyZW50bHkgb25seSBidWlsdCBmb3IgZnJvbnRlbmQsIG5vdCBzZXJ2 ZXIKICMgKE1rdmNidWlsZC5wbSBoYXMgYSBjb3B5IG9mIHRoaXMgbGlzdCwgdG9vKS4gIGxvZ2dp bmcuYyBpcyBleGNsdWRlZApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4g Yi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgppbmRleCAxNWZmZGQ4OTVhLi4yNzNiN2Y2M2Q0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9zcmMvaW5jbHVk ZS9wZ19jb25maWcuaC5pbgpAQCAtMzQwLDYgKzM0MCwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGBtJyBsaWJyYXJ5ICgtbG0pLiAqLwogI3VuZGVmIEhBVkVfTElCTQogCisv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5zcHI0JyBsaWJyYXJ5ICgtbG5zcHI0KS4g Ki8KKyN1bmRlZiBIQVZFX0xJQk5TUFI0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSBgbnNzMycgbGlicmFyeSAoLWxuc3MzKS4gKi8KKyN1bmRlZiBIQVZFX0xJQk5TUzMKKwogLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYW0nIGxpYnJhcnkgKC1scGFtKS4gKi8KICN1 bmRlZiBIQVZFX0xJQlBBTQogCkBAIC0zNTIsNiArMzU4LDkgQEAKIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSBgc3NsJyBsaWJyYXJ5ICgtbHNzbCkuICovCiAjdW5kZWYgSEFWRV9MSUJT U0wKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzc2wzJyBsaWJyYXJ5ICgtbHNz bDMpLiAqLworI3VuZGVmIEhBVkVfTElCU1NMMworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSB0aGUgYHdsZGFwMzInIGxpYnJhcnkgKC1sd2xkYXAzMikuICovCiAjdW5kZWYgSEFWRV9MSUJX TERBUDMyCiAKQEAgLTkyNiw2ICs5MzUsOSBAQAogLyogRGVmaW5lIHRvIHNlbGVjdCBuYW1lZCBQ T1NJWCBzZW1hcGhvcmVzLiAqLwogI3VuZGVmIFVTRV9OQU1FRF9QT1NJWF9TRU1BUEhPUkVTCiAK Ky8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIE5TUyBzdXBwb3J0LCAqLworI3VuZGVmIFVTRV9O U1MKKwogLyogRGVmaW5lIHRvIDEgdG8gYnVpbGQgd2l0aCBPcGVuU1NMIHN1cHBvcnQuICgtLXdp dGgtc3NsPW9wZW5zc2wpICovCiAjdW5kZWYgVVNFX09QRU5TU0wKIApkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmls ZQppbmRleCBkOThiYzA3MTQzLi5iZjkzNDk4ZGYxIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAt NTYsNiArNTYsMTEgQEAgT0JKUyArPSBcCiAJZmUtc2VjdXJlLW9wZW5zc2wubwogZW5kaWYKIAor aWZlcSAoJCh3aXRoX3NzbCksIG5zcykKK09CSlMgKz0gXAorCWZlLXNlY3VyZS1uc3MubworZW5k aWYKKwogaWZlcSAoJCh3aXRoX2dzc2FwaSkseWVzKQogT0JKUyArPSBcCiAJZmUtZ3NzYXBpLWNv bW1vbi5vIFwKZGlmZiAtLWdpdCBhL3NyYy90b29scy9tc3ZjL0luc3RhbGwucG0gYi9zcmMvdG9v bHMvbXN2Yy9JbnN0YWxsLnBtCmluZGV4IGM5MzIzMjJlMzUuLmQ1NTYxMWIwMjQgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9tc3ZjL0luc3RhbGwucG0KKysrIGIvc3JjL3Rvb2xzL21zdmMvSW5zdGFs bC5wbQpAQCAtNDQwLDcgKzQ0MCw4IEBAIHN1YiBDb3B5Q29udHJpYkZpbGVzCiAJCXsKIAkJCSMg VGhlc2UgY29uZmlndXJhdGlvbi1iYXNlZCBleGNsdXNpb25zIG11c3QgbWF0Y2ggdmNyZWdyZXNz LnBsCiAJCQluZXh0IGlmICgkZCBlcSAidXVpZC1vc3NwIiAgJiYgIWRlZmluZWQoJGNvbmZpZy0+ e3V1aWR9KSk7Ci0JCQluZXh0IGlmICgkZCBlcSAic3NsaW5mbyIgICAgJiYgIWRlZmluZWQoJGNv bmZpZy0+e29wZW5zc2x9KSk7CisJCQluZXh0IGlmICgkZCBlcSAic3NsaW5mbyIgICAgJiYgIWRl ZmluZWQoJGNvbmZpZy0+e29wZW5zc2x9KQorCQkJICAmJiAhZGVmaW5lZCgkY29uZmlnLT57bnNz fSkpOwogCQkJbmV4dCBpZiAoJGQgZXEgInhtbDIiICAgICAgICYmICFkZWZpbmVkKCRjb25maWct Pnt4bWx9KSk7CiAJCQluZXh0IGlmICgkZCA9fiAvX3BscGVybCQvICAgJiYgIWRlZmluZWQoJGNv bmZpZy0+e3Blcmx9KSk7CiAJCQluZXh0IGlmICgkZCA9fiAvX3BscHl0aG9uJC8gJiYgIWRlZmlu ZWQoJGNvbmZpZy0+e3B5dGhvbn0pKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9tc3ZjL01rdmNi dWlsZC5wbSBiL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbQppbmRleCA0MzYyYmQ0NGZkLi43 ZGM0NWMzOTllIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0KKysrIGIv c3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCkBAIC0xMzcsNiArMTM3LDEyIEBAIHN1YiBta3Zj YnVpbGQKIAkJcHVzaChAcGdjb21tb25hbGxmaWxlcywgJ2htYWNfb3BlbnNzbC5jJyk7CiAJCXB1 c2goQHBnY29tbW9uYWxsZmlsZXMsICdwcm90b2NvbF9vcGVuc3NsLmMnKTsKIAl9CisJZWxzaWYg KCRzb2x1dGlvbi0+e29wdGlvbnN9LT57bnNzfSkKKwl7CisJCXB1c2goQHBnY29tbW9uYWxsZmls ZXMsICdjcnlwdG9oYXNoX25zcy5jJyk7CisJCXB1c2goQHBnY29tbW9uYWxsZmlsZXMsICdjaXBo ZXJfbnNzLmMnKTsKKwkJcHVzaChAcGdjb21tb25hbGxmaWxlcywgJ3Byb3RvY29sX25zcy5jJyk7 CisJfQogCWVsc2UKIAl7CiAJCXB1c2goQHBnY29tbW9uYWxsZmlsZXMsICdjcnlwdG9oYXNoLmMn KTsKQEAgLTIwMiwxMiArMjA4LDE5IEBAIHN1YiBta3ZjYnVpbGQKIAkkcG9zdGdyZXMtPkZ1bGxF eHBvcnRETEwoJ3Bvc3RncmVzLmxpYicpOwogCiAJIyBUaGUgT0JKUyBzY3JhcGVyIGRvZXNuJ3Qg a25vdyBhYm91dCBpZmRlZnMsIHNvIHJlbW92ZSBhcHByb3ByaWF0ZSBmaWxlcwotCSMgaWYgYnVp bGRpbmcgd2l0aG91dCBPcGVuU1NMLgotCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVu c3NsfSkKKwkjIGlmIGJ1aWxkaW5nIHdpdGhvdXQgdmFyaW91cyBvcHRpb25zLgorCWlmICghJHNv bHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSAmJiAhJHNvbHV0aW9uLT57b3B0aW9uc30tPntu c3N9KQogCXsKIAkJJHBvc3RncmVzLT5SZW1vdmVGaWxlKCdzcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtY29tbW9uLmMnKTsKKwl9CisJaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+e29wZW5z c2x9KQorCXsKIAkJJHBvc3RncmVzLT5SZW1vdmVGaWxlKCdzcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtb3BlbnNzbC5jJyk7CiAJfQorCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntuc3N9 KQorCXsKKwkJJHBvc3RncmVzLT5SZW1vdmVGaWxlKCdzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1 cmUtbnNzLmMnKTsKKwl9CiAJaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+e2dzc30pCiAJewog CQkkcG9zdGdyZXMtPlJlbW92ZUZpbGUoJ3NyYy9iYWNrZW5kL2xpYnBxL2JlLWdzc2FwaS1jb21t b24uYycpOwpAQCAtMjY1LDEyICsyNzgsMTkgQEAgc3ViIG1rdmNidWlsZAogCSRsaWJwcS0+QWRk UmVmZXJlbmNlKCRsaWJwZ2NvbW1vbiwgJGxpYnBncG9ydCk7CiAKIAkjIFRoZSBPQkpTIHNjcmFw ZXIgZG9lc24ndCBrbm93IGFib3V0IGlmZGVmcywgc28gcmVtb3ZlIGFwcHJvcHJpYXRlIGZpbGVz Ci0JIyBpZiBidWlsZGluZyB3aXRob3V0IE9wZW5TU0wuCi0JaWYgKCEkc29sdXRpb24tPntvcHRp b25zfS0+e29wZW5zc2x9KQorCSMgaWYgYnVpbGRpbmcgd2l0aG91dCB2YXJpb3VzIG9wdGlvbnMK KwlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57b3BlbnNzbH0gJiYgISRzb2x1dGlvbi0+e29w dGlvbnN9LT57bnNzfSkKIAl7CiAJCSRsaWJwcS0+UmVtb3ZlRmlsZSgnc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtc2VjdXJlLWNvbW1vbi5jJyk7CisJfQorCWlmICghJHNvbHV0aW9uLT57b3B0aW9u c30tPntvcGVuc3NsfSkKKwl7CiAJCSRsaWJwcS0+UmVtb3ZlRmlsZSgnc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYycpOwogCX0KKwlpZiAoISRzb2x1dGlvbi0+e29wdGlv bnN9LT57bnNzfSkKKwl7CisJCSRsaWJwcS0+UmVtb3ZlRmlsZSgnc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtc2VjdXJlLW5zcy5jJyk7CisJfQogCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntn c3N9KQogCXsKIAkJJGxpYnBxLT5SZW1vdmVGaWxlKCdzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1n c3NhcGktY29tbW9uLmMnKTsKQEAgLTQzOCw5ICs0NTgsMTQgQEAgc3ViIG1rdmNidWlsZAogCQlw dXNoIEBjb250cmliX2V4Y2x1ZGVzLCAneG1sMic7CiAJfQogCisJaWYgKCEkc29sdXRpb24tPntv cHRpb25zfS0+e29wZW5zc2x9ICYmICEkc29sdXRpb24tPntvcHRpb25zfS0+e25zc30pCisJewor CQlwdXNoIEBjb250cmliX2V4Y2x1ZGVzLCAnc3NsaW5mbyc7CisJfQorCiAJaWYgKCEkc29sdXRp b24tPntvcHRpb25zfS0+e29wZW5zc2x9KQogCXsKLQkJcHVzaCBAY29udHJpYl9leGNsdWRlcywg J3NzbGluZm8nLCAnc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snOworCQlwdXNoIEBjb250cmliX2V4 Y2x1ZGVzLCAnc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snOwogCX0KIAogCWlmICghJHNvbHV0aW9u LT57b3B0aW9uc30tPnt1dWlkfSkKQEAgLTQ3MCw2ICs0OTUsMTEgQEAgc3ViIG1rdmNidWlsZAog CQkkcGdjcnlwdG8tPkFkZEZpbGVzKCdjb250cmliL3BnY3J5cHRvJywgJ29wZW5zc2wuYycsCiAJ CQkncGdwLW1waS1vcGVuc3NsLmMnKTsKIAl9CisJZWxzaWYgKCRzb2x1dGlvbi0+e29wdGlvbnN9 LT57bnNzfSkKKwl7CisJCSRwZ2NyeXB0by0+QWRkRmlsZXMoJ2NvbnRyaWIvcGdjcnlwdG8nLCAn bnNzLmMnLAorCQkJJ3BncC1tcGktaW50ZXJuYWwuYycsICdpbWF0aC5jJywgJ2JsZi5jJyk7CisJ fQogCWVsc2UKIAl7CiAJCSRwZ2NyeXB0by0+QWRkRmlsZXMoCmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvbXN2Yy9Tb2x1dGlvbi5wbSBiL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCmluZGV4IDE2 NWE5Mzk4N2EuLmUyZDBjZmIxZGEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL1NvbHV0aW9u LnBtCisrKyBiL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCkBAIC0zMDcsMTAgKzMwNywxMyBA QCBzdWIgR2VuZXJhdGVGaWxlcwogCQlIQVZFX0xJQkxEQVAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0+IHVuZGVmLAogCQlIQVZFX0xJQkxaNCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0+IHVuZGVmLAogCQlIQVZFX0xJQk0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0+IHVuZGVmLAorCQlIQVZFX0xJQk5TUFI0CQkJCQkJCQk9PiB1bmRlZiwKKwkJ SEFWRV9MSUJOU1MzCQkJCQkJCQk9PiB1bmRlZiwKIAkJSEFWRV9MSUJQQU0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJSEFWRV9MSUJSRUFETElORSAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJSEFWRV9MSUJTRUxJTlVYICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJSEFWRV9MSUJTU0wgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKKwkJSEFWRV9MSUJTU0wzCQkJCQkJCQk9PiB1 bmRlZiwKIAkJSEFWRV9MSUJXTERBUDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB1 bmRlZiwKIAkJSEFWRV9MSUJYTUwyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB1 bmRlZiwKIAkJSEFWRV9MSUJYU0xUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB1 bmRlZiwKQEAgLTQ5OSw2ICs1MDIsNyBAQCBzdWIgR2VuZXJhdGVGaWxlcwogCQlVU0VfTExWTSAg ICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJVVNFX05BTUVEX1BPU0lYX1NFTUFQSE9SRVMg PT4gdW5kZWYsCiAJCVVTRV9PUEVOU1NMICAgICAgICAgICAgICAgID0+IHVuZGVmLAorCQlVU0Vf TlNTICAgICAgICAgICAgICAgICAgICA9PiB1bmRlZiwKIAkJVVNFX1BBTSAgICAgICAgICAgICAg ICAgICAgPT4gdW5kZWYsCiAJCVVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDICAgID0+IHVuZGVmLAog CQlVU0VfU1NFNDJfQ1JDMzJDICAgICAgICAgICA9PiB1bmRlZiwKQEAgLTU1OSw2ICs1NjMsMTMg QEAgc3ViIEdlbmVyYXRlRmlsZXMKIAkJCSRkZWZpbmV7SEFWRV9PUEVOU1NMX0lOSVRfU1NMfSAg ICAgID0gMTsKIAkJfQogCX0KKwlpZiAoJHNlbGYtPntvcHRpb25zfS0+e25zc30pCisJeworCQkk ZGVmaW5le1VTRV9OU1N9ID0gMTsKKwkJJGRlZmluZXtIQVZFX0xJQk5TUFI0fSA9IDE7CisJCSRk ZWZpbmV7SEFWRV9MSUJOU1MzfSA9IDE7CisJCSRkZWZpbmV7SEFWRV9MSUJTU0wzfSA9IDE7CisJ fQogCiAJJHNlbGYtPkdlbmVyYXRlQ29uZmlnSGVhZGVyKCdzcmMvaW5jbHVkZS9wZ19jb25maWcu aCcsICAgICBcJWRlZmluZSwgMSk7CiAJJHNlbGYtPkdlbmVyYXRlQ29uZmlnSGVhZGVyKCdzcmMv aW5jbHVkZS9wZ19jb25maWdfZXh0LmgnLCBcJWRlZmluZSwgMCk7CkBAIC0xMDE3LDYgKzEwMjgs MjEgQEAgc3ViIEFkZFByb2plY3QKIAkJCX0KIAkJfQogCX0KKwlpZiAoJHNlbGYtPntvcHRpb25z fS0+e25zc30pCisJeworCQkkcHJvai0+QWRkSW5jbHVkZURpcigkc2VsZi0+e29wdGlvbnN9LT57 bnNzfSAuICdcLi5ccHVibGljXG5zcycpOworCQkkcHJvai0+QWRkSW5jbHVkZURpcigkc2VsZi0+ e29wdGlvbnN9LT57bnNzfSAuICdcaW5jbHVkZVxuc3ByJyk7CisJCWZvcmVhY2ggbXkgJGxpYiAo cXcocGxkczQgcGxjNCBuc3ByNCkpCisJCXsKKwkJCSRwcm9qLT5BZGRMaWJyYXJ5KCRzZWxmLT57 b3B0aW9uc30tPntuc3N9IC4KKwkJCQkJCQkgICdcbGliXGxpYicgLiAiJGxpYi5saWIiLCAwKTsK KwkJfQorCQlmb3JlYWNoIG15ICRsaWIgKHF3KHNzbDMgc21pbWUzIG5zczMpKQorCQl7CisJCQkk cHJvai0+QWRkTGlicmFyeSgkc2VsZi0+e29wdGlvbnN9LT57bnNzfSAuCisJCQkJCQkJICAnXGxp YicgLiAiXFwkbGliLmRsbC5saWIiLCAwKTsKKwkJfQorCX0KIAlpZiAoJHNlbGYtPntvcHRpb25z fS0+e25sc30pCiAJewogCQkkcHJvai0+QWRkSW5jbHVkZURpcigkc2VsZi0+e29wdGlvbnN9LT57 bmxzfSAuICdcaW5jbHVkZScpOwotLSAKMi4yNS4xCgo= --_012_47f36fb0fad537fdd76d9bc9286d1bde3b614dfccamelvmwarecom_--