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 1mUwXn-0003aJ-1x for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Sep 2021 19:44:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mUwXm-0006eR-2E for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Sep 2021 19:44:06 +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 1mUwUe-00026l-4M for pgsql-hackers@lists.postgresql.org; Mon, 27 Sep 2021 19:40:52 +0000 Received: from mail-bn7nam10on20600.outbound.protection.outlook.com ([2a01:111:f400:7e8a::600] helo=NAM10-BN7-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 1mUwUM-0002Rq-45 for pgsql-hackers@lists.postgresql.org; Mon, 27 Sep 2021 19:40:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KwHW/DLOSFA1rqnCis3n4CUiQtGUTe3Tn8DEXKD1+BIgwxGXt3Nw3DOqYY9237n0kxLMuLt65SjRGQBTwzEad3TxWyKTun9lB3NWnwmHTAp6UTwTpf0BI6v7m4q1ps9Ofu6fKg75H+eclr4azhCE0Z83nseXL96z1DAJhsBPuPd/0Kscnpixd5cicC5ae4h6j8ZY9pLEDmCPG3vwPP6lc1saFTbuDI7a70EXmhzFDimTzQ/Y4vpUPYJLc/6NZV5cVyYfUmWySvbEFY+j/6NHKEKdJmIWYMJLVUase7xIrH9096CDviFGH6rDD71BDEVXPWQ+7+7eYakZfrbZ8BCvxg== 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=RuH6shli5n6CHMYFiQY7hs1laigapMi8b3Cc3FPp3vo=; b=oByZ399CWU0GWemDsG+brNBjIjdIvx7LLR+vfj1b2kP6zXqGUkF4F2wpxdaUtt2EOUBQBNllzYqNGyalyX9zCCDjN3eRwBezWt0/njgLM3p6opJFmSV9/cXmJdHjYzDc9/VdgWSDmpSAeqBjcYpPDH0VpxOL9fFd/zP7JGicSAjI1+Wvwlm6GFEzD4rYwtPcHwMJobeKVtRXApCW9t7Z4Ngj2QgVxFK/gI4Wu7IkhiEhsKEPs8KaealiGibGutl4j/VfRp3MPtsWmgPGvdJfgcr42WCdHPPZx0uGr3u/55zgWOu661xBK0ptevpdEd8rUEiVq/JW9Db8kwfkgIzvzA== 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=RuH6shli5n6CHMYFiQY7hs1laigapMi8b3Cc3FPp3vo=; b=V1UNRJJfVZADigZHrTgRKTeMf1Q0VOCaEhFgbbFkyClbwUj5vjvCVRi/5N458VhPwRm9Ri43HRZY4nR82jGUO1FAI6KnmlNme434dsbfs7tyBiEnd9TcfjaH4A6Wv26wGcSyXiHdI+Ny7gIXSwWCa9hOAicYPOioeyh3L419Rxo= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by MWHPR05MB3551.namprd05.prod.outlook.com (2603:10b6:301:45::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.8; Mon, 27 Sep 2021 19:40:29 +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.4566.012; Mon, 27 Sep 2021 19:40:29 +0000 From: Jacob Champion To: "daniel@yesql.se" CC: "pgsql-hackers@lists.postgresql.org" , "hlinnaka@iki.fi" , "andrew.dunstan@2ndquadrant.com" , "sfrost@snowman.net" , "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/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToCAExoQAIAAROWAgAFJBgCAAknrgIAHT2aAgACARQCAAC2WAIABbrgAgABSL4CAC5w5gIABgPEAgAXTZYCAAkVWAIAAzGsAgArFR4CAHUTDgIABj0AAgAGZzQCAAAZRAIABAusAgAASXQCAAAtLgIAACCwAgABgtICAZFvbgIAA0mkAgBuUywCAAZBvAIAAHEqAgADlhQCAAC3jAIAAPJaAgAqarYCAKTzWAIAKmcAAgFi1XQCAClKcAIAALimAgAA1SwA= Date: Mon, 27 Sep 2021 19:40:28 +0000 Message-ID: <9386e844170e1e8294611a276970d6b1786812a7.camel@vmware.com> References: <1b16041447d57b45ca273f41d26f6e298d756f99.camel@vmware.com> <04E81B50-ACE9-40D3-9C66-7041F969A958@yesql.se> <21FABD55-5F80-4D8B-B994-3DB81D8742EE@yesql.se> <20210321234950.GQ20766@tamriel.snowman.net> <743a11e6668bef648c7a53f862038e6b2fad3755.camel@vmware.com> <05da9d530ab01e6959bd50c993d590ad73575c21.camel@vmware.com> <20210324170036.GS20766@tamriel.snowman.net> <8f741a425fd135ca38a28063730715499f7f6445.camel@vmware.com> <20210324181016.GU20766@tamriel.snowman.net> <50c5a423329ea9996a2a2b167931711189ed5d1b.camel@vmware.com> <2FD5BB88-595A-47A0-8F51-0A1B5EEC93FA@yesql.se> <4a15bbab42cd85b6bec83c2609305552d246f68e.camel@vmware.com> <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> <55c94351495efe34e167d4d2b1541b8194f1318c.camel@vmware.com> <55454C3B-1BCB-4F08-AB93-FAF9100B6201@yesql.se> <58e9289dc6f7818841635ca2c2978c78af64e4fd.camel@vmware.com> In-Reply-To: <58e9289dc6f7818841635ca2c2978c78af64e4fd.camel@vmware.com> 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: 8837f5ce-274f-4c7f-75b4-08d981eea94f x-ms-traffictypediagnostic: MWHPR05MB3551: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: oy3PAfrPUVb5jaD1Kxmv2YcJXfR0ryRz9SHsutFWOXZBPgWjk3EWNWH7NyXFhWMK8Oin4dc3MOnHiLDWSdBHNdPaDw0rdYuoUHVdzteTEEUBs10CbjXHxpjcgbI4rz53v5OG8Oi5Gpa6lYDmaC5fgcHLtIJSsxrqz1nMFlNX5DX7hMpyZk7FyrhETYAjtOmMPtURfhv90Z/lzu8ys7adfeJFggAMCH15u8lLa03cgdQoD/zWHawnLXAqpr3PMDLQ7NjhiCEy1267fRvzIhNXR8qZw1tPoe8vXkc17cX6GLuDic/jdtQWNapCPN5FPAIL1lhLEfaO+JdIYDoDFuy+R4fyYZDJJKxaYrSNDEil9heE8MUZidbaVnOUQsJ6jmT1MWj1EHmYcifnYTww0msw0R+obEMaaPNj6lGdCYy3lzg9E9djSmkhA98btVfql25CDu8Yh0c5D6jMqMwYkG7eGTciut+vA4HJD2LF0n6l3lXbXVST7fkSXOu42Opp2FkOzUpd0mKWXHnsymXPMV4KkAxViav71+8CsG+hhZFGAsgtgh10h/3yCFA36Qp9Pzmn6IzQ6GsCAzTepZh/uPCdRGtahuMczDcA5DnQnEnsfUBjd/8YTVCAoRi8B2h1wLNoV4BR2APLfGeoPXyweKAlpy8ScKxLDJF0zc+A9tbtOl3WcNSwrPK5FuC+T1vXaFL4aJm2pt+Fk3+3Yqa2gsVubQ== 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)(38070700005)(54906003)(86362001)(4326008)(6506007)(6916009)(5660300002)(316002)(36756003)(508600001)(4744005)(8676002)(66446008)(66476007)(38100700002)(66946007)(99936003)(76116006)(66576008)(8936002)(6486002)(66556008)(64756008)(122000001)(2616005)(71200400001)(186003)(2906002)(6512007)(26005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RVFQekV4RGNVQ1hsaytBTitjRU16cjM0Smp2cEptT3pjM0M3NjkvZlZ4dDVh?= =?utf-8?B?NCtseWhrZkZ2aGtIUHhpOGl3SW84WFI5OFdOUXRQZjNVV1pSU2dlUG5LRmtE?= =?utf-8?B?S0hpdXFaNGRQS3d0WmMvTnpRUXhKVlFFdlZXTXFiSkliV1pTcTRuN0ZtMERP?= =?utf-8?B?aXRPcjNPMEJvMlFJTjJOclkrRyttRlVKdkVhV2tBSGxKaU9jYmhCYWJ5aFB1?= =?utf-8?B?Z3RRN1RQYzZOaHc2Vkx6YjJmeWl5UnhXU1p3QmZrekRxSUZPcHZOeDNvMzdY?= =?utf-8?B?ME1SYUkyRmhMd0x6eVdCdlFIeWRsMXBYdEhuU3BQWUt4eVhITS9TRUlxeXB6?= =?utf-8?B?N1kwemplYmhEbVp1VXp5UllRd2w0QWFsVkhwWG1qT2g0V0dZME1yZXFZeTlG?= =?utf-8?B?M2JUL2FhaW5QVUJFUkFQRmpyRmlNVUhuSm96b0REWk9Ca00xcW9nZWVhVDdN?= =?utf-8?B?dGdoS0Q3VEdzQVNCcjJRMWdHb1MwSkxGRDdiODhuSjFKUzJpQ3VCd1pQMGY1?= =?utf-8?B?Yk5MRUM4UnlWUllvV3FFMytoOVFnNVRQY0tFeE0vL0JwSVpDejdtYk5zTkh6?= =?utf-8?B?d0FNZTFPeDFDdDBrOGdxVmVsREhKSlByWG5qSmtaM3dJMENaaGN2YjlEbDJu?= =?utf-8?B?dFFEc3FLQmhkOVMvWkIzbW1BcE1qQlR5QzJ4Z2twRk55eUNjWjBDbDQrZys0?= =?utf-8?B?UFdMUWhvRUxOY2NHYUVZYkxRYTYwY2k3bGQxTklXdi9UTnpvQ3FEVVVFanU5?= =?utf-8?B?TCsrNFoyTjFnVTFMWFpyR0lwVExxdlhsdW9WU0tMd1ZpdWtvN1YyVDdQYlBo?= =?utf-8?B?NHhNVGo3SzBuZlpCWEJySEN3emxjOFkwTXM0RlZhMHBIdkpPY2srcVVjaHl3?= =?utf-8?B?R3NGVkFzWkFtdXVVa3huNWZuNjV6eldxMjhsSXBrOTdhUUNtcG50OThsTDQ0?= =?utf-8?B?bnIrNG85bFJLQmUzNkFmdzZ5cXZmM043SGdKM2JLTDVCSUFxdTU0ODFEVS9C?= =?utf-8?B?TG94STVXQ0NCem9LbkpBMWgxMHpzL0lVWlM5ZXN5SmdCV2FYeGRCOXVZeTU3?= =?utf-8?B?bm1hSWs1R0h2WEpGV3hrY0VqNGR1UEdIZGpsV3ZhaTdsdTYwMmY1dFI2NHRT?= =?utf-8?B?MUM3Q1BQdTJLYkVPU1pnaGpZT1ExV3d1M0FnM1p4QmFmV05nZW03blBoNTRN?= =?utf-8?B?SDZWQU9qNUF2cko2WXJURnByOG90cW9CcmV3S2JwTWJMVU5OY2dzNERxYkNN?= =?utf-8?B?OVF3ZmdFOVR5VVl4SHpqclpDTlVLVncxMGh4TkxLSmRzSStvVjRZakVKOWhy?= =?utf-8?B?NnQ5Lzc4cC9QYm45RXQzR2UyMTBEeDJsZ3IxeTVsb2MvaUIxaTk5bHhiUGdn?= =?utf-8?B?TjZDYnFTYU91Z3hWZkJiN3BYSlllYVdEWkRWM0JNZlY1eERwWGlhdVpmdS9F?= =?utf-8?B?K1BNTTlSZE5rVEgzQ1U2QVBxZm9MU1ZLWDk5SzQzYUI0djkwa2tpdHpBZGRN?= =?utf-8?B?NDF4OTlhQmNtQ2RmWkRmNnJVdWRhbXkrWjhDV0hpSnlkZUIyZ1lmWVFoc29j?= =?utf-8?B?K3Q2aGhKeThnaHFCVUM4LzR1b3l0WUVIUDZlQ1I3WVZXSW1MUVpodWpHT29a?= =?utf-8?B?a2xuQy9CM1BxTnNCRXpyV09rcUEwREdFVlJycFdOUks1UTNrRVc4RlJkRHlC?= =?utf-8?B?NUFGVklVQXE1U2Y4bzMwK3YwYmhaOWhVemRRb3pxSEkyT3dRbnY4RWdIVGN6?= =?utf-8?Q?67uA0kfKvGaMyNKQKwL1S59f9Spy1YhHpfAJ9Ur?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_012_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_" 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: 8837f5ce-274f-4c7f-75b4-08d981eea94f X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2021 19:40:29.0753 (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: 0ancFAwBHBXAPyFmm0xceI7Be5lrDNfnSQY5QpPEMXj+NrOSH5JFaBTBs4gHmmBRi6BzesBZU0zRkGxCANpjSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB3551 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_012_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/plain; charset="utf-8" Content-ID: <15693681D911404AB94E842A204FED20@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 T24gTW9uLCAyMDIxLTA5LTI3IGF0IDE2OjI5ICswMDAwLCBKYWNvYiBDaGFtcGlvbiB3cm90ZToN Cj4gT24gTW9uLCAyMDIxLTA5LTI3IGF0IDE1OjQ0ICswMjAwLCBEYW5pZWwgR3VzdGFmc3NvbiB3 cm90ZToNCj4gPiANCj4gPiBGZWVsIGZyZWUgdG8gcG9zdCBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBO U1MgcGF0Y2ggd2l0aCB0aGVzZSBjaGFuZ2VzIGlmIHlvdSB3YW50Lg0KPiANCj4gV2lsbCBkbyEN Cg0KU29tZXRoaW5nIGxpa2UgdGhlIGF0dGFjaGVkLCB2NDMsIEkgdGhpbmsuIChzaW5jZS12NDIu ZGlmZi50eHQgaGFzIHRoZQ0KY2hhbmdlcyBvbmx5LikNCg0KVGhpcyBmaXhlcyB0aGUgaW50ZXJh Y3Rpb24gb2YgSVAgYWRkcmVzc2VzIGFuZCBTTkkgZm9yIG1lLCBhbmQgaG9ub3JzDQpzc2xzbmk9 MC4NCg0KLS1KYWNvYg0K --_012_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/plain; name="since-v42.diff.txt" Content-Description: since-v42.diff.txt Content-Disposition: attachment; filename="since-v42.diff.txt"; size=2587; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <5C8A510E8BBD724F947B0FC6955A8389@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 Y29tbWl0IGVjMGZiMDY4ZGEzOTIzNjYwMmU4ZTFkZThiYmY4NDg3YTEwOTM1OTAKQXV0aG9yOiBK YWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+CkRhdGU6ICAgTW9uIFNlcCAyNyAx MjoyNjoyOSAyMDIxIC0wNzAwCgogICAgc3F1YXNoISBuc3M6IFN1cHBvcnQgbGlibnNzIGFzIFRM UyBsaWJyYXJ5IGluIGxpYnBxCiAgICAKICAgIERvbid0IHNlbmQgU05JIGlmIHRoZSB1c2VyIGhh cyBkaXNhYmxlZCBpdC4gV2UgY2FuIHJlbW92ZSB0aGUgSVAgYWRkcmVzcwogICAgY2hlY2sgc2lu Y2UgTlNTIGRvZXMgdGhhdCBuYXRpdmVseS4KCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1zZWN1cmUtbnNzLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtbnNz LmMKaW5kZXggMGE5NzUxYzIyYi4uNTFmMDlmYjdmYSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNl Y3VyZS1uc3MuYwpAQCAtMTgzLDcgKzE4Myw2IEBAIHBndGxzX29wZW5fY2xpZW50KFBHY29ubiAq Y29ubikKIAlQUkZpbGVEZXNjICptb2RlbDsKIAlOU1NJbml0UGFyYW1ldGVycyBwYXJhbXM7CiAJ U1NMVmVyc2lvblJhbmdlIGRlc2lyZWRfcmFuZ2U7Ci0JY29uc3QgY2hhciAqaG9zdDsKIAogI2lm ZGVmIEVOQUJMRV9USFJFQURfU0FGRVRZCiAjaWZkZWYgV0lOMzIKQEAgLTQ1MCwxNSArNDQ5LDE2 IEBAIHBndGxzX29wZW5fY2xpZW50KFBHY29ubiAqY29ubikKIAogCS8qCiAJICogU3BlY2lmeSB3 aGljaCBob3N0bmFtZSB3ZSBhcmUgZXhwZWN0aW5nIHRvIHRhbGsgdG8gZm9yIHRoZSBDbGllbnRI ZWxsbwotCSAqIFNOSSBleHRlbnNpb24uIFRPRE86IGlmIHRoZSBob3N0bmFtZSBpcyBhIGxpdGVy YWwgSVAgYWRkcmVzcyB3ZSBza2lwCi0JICogc2V0dGluZyBpdCwgYW5kIGNoZWNrIGZvciBTTkkg c3RhdHVzIGluIHRoZSBjZXJ0IGNhbGxiYWNrLiBJcyB0aGlzIHRoZQotCSAqIGNvcnJlY3QgY291 cnNlIG9mIGFjdGlvbj8KKwkgKiBTTkkgZXh0ZW5zaW9uLCB1bmxlc3MgdGhlIHVzZXIgaGFzIGRp c2FibGVkIGl0LiBOU1Mgd2lsbCBzdXBwcmVzcyBJUAorCSAqIGFkZHJlc3NlcyBpbiBTTklzLCBz byB3ZSBkb24ndCBuZWVkIHRvIGZpbHRlciB0aG9zZSBleHBsaWNpdGx5IGxpa2Ugd2UgZG8KKwkg KiBmb3IgT3BlblNTTC4KIAkgKi8KLQlob3N0ID0gY29ubi0+Y29ubmhvc3RbY29ubi0+d2hpY2ho b3N0XS5ob3N0OwotCWlmIChob3N0ICYmIGhvc3RbMF0gJiYKLQkJIShzdHJzcG4oaG9zdCwgIjAx MjM0NTY3ODkuIikgPT0gc3RybGVuKGhvc3QpIHx8Ci0JCSAgc3RyY2hyKGhvc3QsICc6JykpKQot CQlTU0xfU2V0VVJMKGNvbm4tPnByX2ZkLCBob3N0KTsKKwlpZiAoY29ubi0+c3Nsc25pICYmIGNv bm4tPnNzbHNuaVswXSA9PSAnMScpCisJeworCQljb25zdCBjaGFyICpob3N0ID0gY29ubi0+Y29u bmhvc3RbY29ubi0+d2hpY2hob3N0XS5ob3N0OworCQlpZiAoaG9zdCAmJiBob3N0WzBdKQorCQkJ U1NMX1NldFVSTChjb25uLT5wcl9mZCwgaG9zdCk7CisJfQogCiAJc3RhdHVzID0gU1NMX0ZvcmNl SGFuZHNoYWtlKGNvbm4tPnByX2ZkKTsKIApAQCAtNjc4LDEyICs2NzgsMTYgQEAgcGd0bHNfdmVy aWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmljYXRlX2d1dHMoUEdjb25uICpjb25uLAogCUNF UlRHZW5lcmFsTmFtZSAqc2FuX2xpc3Q7CiAJQ0VSVEdlbmVyYWxOYW1lICpjbjsKIAotCXNlcnZl cl9ob3N0bmFtZSA9IFNTTF9SZXZlYWxVUkwoY29ubi0+cHJfZmQpOworCS8qCisJICogSW4gdGhl ICJzdGFuZGFyZCIgTlNTIHVzZSBjYXNlLCB3ZSdkIGNhbGwgU1NMX1JldmVhbFVSTCgpIHRvIGdl dCB0aGUKKwkgKiBob3N0bmFtZS4gSW4gb3VyIGNhc2UsIFNTTF9TZXRVUkwoKSB3b24ndCBoYXZl IGJlZW4gY2FsbGVkIGlmIHRoZSB1c2VyCisJICogaGFzIGRpc2FibGVkIFNOSSwgc28gd2UgYWx3 YXlzIHB1bGwgdGhlIGhvc3RuYW1lIGZyb20gY29ubmhvc3QgaW5zdGVhZC4KKwkgKi8KKwlzZXJ2 ZXJfaG9zdG5hbWUgPSBjb25uLT5jb25uaG9zdFtjb25uLT53aGljaGhvc3RdLmhvc3Q7CiAJaWYg KCFzZXJ2ZXJfaG9zdG5hbWUgfHwgc2VydmVyX2hvc3RuYW1lWzBdID09ICdcMCcpCiAJewotCQkv KiBJZiBTTkkgaXMgZW5hYmxlZCB3ZSBtdXN0IGhhdmUgYSBob3N0bmFtZSBzZXQgKi8KLQkJaWYg KGNvbm4tPnNzbHNuaSAmJiBjb25uLT5zc2xzbmlbMF0pCi0JCQlzdGF0dXMgPSBTRUNGYWlsdXJl OworCQkvKiB2ZXJpZnktZnVsbCBzaG91bGRuJ3QgcHJvZ3Jlc3MgdGhpcyBmYXIgd2l0aG91dCBh IGhvc3RuYW1lLiAqLworCQlzdGF0dXMgPSBTRUNGYWlsdXJlOwogCQlnb3RvIGRvbmU7CiAJfQog CkBAIC03NjIsNyArNzY2LDYgQEAgZG9uZToKIAkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RS VUUpOwogCWlmIChzZXJ2ZXJfY2VydCkKIAkJQ0VSVF9EZXN0cm95Q2VydGlmaWNhdGUoc2VydmVy X2NlcnQpOwotCVBSX0ZyZWUoc2VydmVyX2hvc3RuYW1lKTsKIAogCWlmIChzdGF0dXMgPT0gU0VD U3VjY2VzcykKIAkJcmV0dXJuIDE7Cg== --_012_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch" Content-Description: v43-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch Content-Disposition: attachment; filename="v43-0001-nss-Support-libnss-as-TLS-library-in-libpq.patch"; size=105094; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBkNjc1M2U1OTcwZTVhNjEwZTU3OWM0Y2EzYTVlYmM0Nzg5N2YxZGMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MjIgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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 Kwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jICAgICAgICAgIHwgMTIwMCAr KysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyAgICAgICAgICAg ICAgfCAgIDIxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICAgICAgICAg ICB8ICAgMTEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAgICAg IHwgICAyOSArLQogMTYgZmlsZXMgY2hhbmdlZCwgMzE4MCBpbnNlcnRpb25zKCspLCA3IGRlbGV0 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 X25zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU4MjI1YTRkOWQK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tbW9uL3Byb3RvY29sX25zcy5jCkBAIC0wLDAgKzEs NTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHByb3RvY29sX25zcy5jCisgKgkgIE5T UyBmdW5jdGlvbmFsaXR5IHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGZvciB3 b3JraW5nCisgKgkgIHdpdGggcHJvdG9jb2xzCisgKgorICogVGhpcyBzaG91bGQgb25seSBiZSB1 c2VkIGlmIGNvZGUgaXMgY29tcGlsZWQgd2l0aCBOU1Mgc3VwcG9ydC4KKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNyYy9j b21tb24vcHJvdG9jb2xfbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZu ZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNlbHNlCisjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiY29tbW9uL25zcy5oIgorCisvKgorICog c3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3RyaW5nCisgKgkJCVRyYW5zbGF0ZSBOU1MgVExTIHZl cnNpb24gdG8gc3RyaW5nCisgKi8KK2NoYXIgKgorc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fc3Ry aW5nKGludCB2KQoreworCXN3aXRjaCAodikKKwl7CisJCS8qIFNTTCB2MiBhbmQgdjMgYXJlIG5v dCBzdXBwb3J0ZWQgKi8KKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OXzI6CisJCWNhc2UgU1NM X0xJQlJBUllfVkVSU0lPTl8zXzA6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzA6CisJCQlyZXR1cm4gcHN0cmR1cCgiVExT djEuMCIpOworI2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMQorCQljYXNlIFNTTF9M SUJSQVJZX1ZFUlNJT05fVExTXzFfMToKKwkJCXJldHVybiBwc3RyZHVwKCJUTFN2MS4xIik7Cisj ZW5kaWYKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzIKKwkJY2FzZSBTU0xfTElC UkFSWV9WRVJTSU9OX1RMU18xXzI6CisJCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMiIpOworI2Vu ZGlmCisjaWZkZWYgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zCisJCWNhc2UgU1NMX0xJQlJB UllfVkVSU0lPTl9UTFNfMV8zOgorCQkJcmV0dXJuIHBzdHJkdXAoIlRMU3YxLjMiKTsKKyNlbmRp ZgorCX0KKworCXJldHVybiBwc3RyZHVwKCJ1bmtub3duIik7Cit9CisKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NvbW1vbi9uc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9uc3MuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMzg1NDI5ZjkxCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL25zcy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIG5zcy5oCisgKgkgIE5TUyBzdXBwb3J0aW5nIGZ1bmN0aW9uYWxp dHkgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQKKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNyYy9pbmNs dWRlL2NvbW1vbi9uc3MuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIENP TU1PTl9OU1NfSAorI2RlZmluZSBDT01NT05fTlNTX0gKKworI2lmZGVmIFVTRV9OU1MKKworLyoK KyAqIEJJVFNfUEVSX0JZVEUgaXMgYWxzbyBkZWZpbmVkIGluIHRoZSBOU1BSIGhlYWRlciBmaWxl cywgc28gd2UgbmVlZCB0byB1bmRlZgorICogb3VyIHZlcnNpb24gdG8gYXZvaWQgY29tcGlsZXIg d2FybmluZ3Mgb24gcmVkZWZpbml0aW9uLgorICovCisjZGVmaW5lIHBnX0JJVFNfUEVSX0JZVEUg QklUU19QRVJfQllURQorI3VuZGVmIEJJVFNfUEVSX0JZVEUKKy8qCisgKiBUaGUgbnNwci9vYnNv bGV0ZS9wcm90eXBlcy5oIE5TUFIgaGVhZGVyIHR5cGVkZWZzIHVpbnQ2NCBhbmQgaW50NjQgd2l0 aAorICogY29sbGlkaW5nIGRlZmluaXRpb25zIGZyb20gb3VycywgY2F1c2luZyBhIG11Y2ggZXhw ZWN0ZWQgY29tcGlsZXIgZXJyb3IuCisgKiBSZW1vdmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg d2l0aCBhbmNpZW50IE5TUFIgdmVyc2lvbnMgdG8gYXZvaWQgdGhpcy4KKyAqLworI2RlZmluZSBO T19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3ByL25zcHIuaD4KKyNpbmNsdWRlIDxuc3By L3ByZXJyb3IuaD4KKyNpbmNsdWRlIDxuc3ByL3ByaW8uaD4KKyNpbmNsdWRlIDxuc3ByL3BybWVt Lmg+CisjaW5jbHVkZSA8bnNwci9wcnR5cGVzLmg+CisKKworI2luY2x1ZGUgPG5zcy9uc3MuaD4K KyNpbmNsdWRlIDxuc3MvaGFzaHQuaD4KKyNpbmNsdWRlIDxuc3Mvc2Vjb2lkdC5oPgorI2luY2x1 ZGUgPG5zcy9zc2xwcm90by5oPgorCisvKiBzcmMvY29tbW9uL2NpcGhlcl9uc3MuYyAqLworYm9v bCBwZ19maW5kX2NpcGhlcihjaGFyICpuYW1lLCBQUlVpbnQxNiAqY2lwaGVyKTsKK2Jvb2wgcGdf ZmluZF9zaWduYXR1cmVfYWxnb3JpdGhtKFNFQ09pZFRhZyBzaWduYXR1cmUsIFNFQ09pZFRhZyAq ZGlnZXN0LCBpbnQgKmxlbik7CisKKy8qIHNyYy9jb21tb24vcHJvdG9jb2xfbnNzLmMgKi8KK2No YXIgKnNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX3N0cmluZyhpbnQgdmVyc2lvbik7CisKKyNlbmRp ZgkJCQkJCQkvKiBVU0VfTlNTICovCisKKyNlbmRpZgkJCQkJCQkvKiBDT01NT05fTlNTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmggYi9zcmMvaW5jbHVkZS9s aWJwcS9saWJwcS1iZS5oCmluZGV4IDAyMDE1ZWZlMTMuLmM4Mzg4YzU0NTAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGli cHEtYmUuaApAQCAtMjEyLDEzICsyMTIsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydAogCWJvb2wJ CXBlZXJfY2VydF92YWxpZDsKIAogCS8qCi0JICogT3BlblNTTCBzdHJ1Y3R1cmVzLiAoS2VlcCB0 aGVzZSBsYXN0IHNvIHRoYXQgdGhlIGxvY2F0aW9ucyBvZiBvdGhlcgotCSAqIGZpZWxkcyBhcmUg dGhlIHNhbWUgd2hldGhlciBvciBub3QgeW91IGJ1aWxkIHdpdGggU1NMIGVuYWJsZWQuKQorCSAq IFRMUyBiYWNrZW5kIHNwZWNpZmljIHN0cnVjdHVyZXMuIChLZWVwIHRoZXNlIGxhc3Qgc28gdGhh dCB0aGUgbG9jYXRpb25zCisJICogb2Ygb3RoZXIgZmllbGRzIGFyZSB0aGUgc2FtZSB3aGV0aGVy IG9yIG5vdCB5b3UgYnVpbGQgd2l0aCBTU0wKKwkgKiBlbmFibGVkLikKIAkgKi8KICNpZmRlZiBV U0VfT1BFTlNTTAogCVNTTAkJICAgKnNzbDsKIAlYNTA5CSAgICpwZWVyOwogI2VuZGlmCisKKyNp ZmRlZiBVU0VfTlNTCisJdm9pZAkgICAqcHJfZmQ7CisjZW5kaWYKIH0gUG9ydDsKIAogI2lmZGVm IFVTRV9TU0wKQEAgLTMwMSw3ICszMDYsNyBAQCBleHRlcm4gdm9pZCBiZV90bHNfZ2V0X3BlZXJf c2VyaWFsKFBvcnQgKnBvcnQsIGNoYXIgKnB0ciwgc2l6ZV90IGxlbik7CiAgKiBUaGlzIGlzIG5v dCBzdXBwb3J0ZWQgd2l0aCBvbGQgdmVyc2lvbnMgb2YgT3BlblNTTCB0aGF0IGRvbid0IGhhdmUK ICAqIHRoZSBYNTA5X2dldF9zaWduYXR1cmVfbmlkKCkgZnVuY3Rpb24uCiAgKi8KLSNpZiBkZWZp bmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCkK KyNpZiBkZWZpbmVkKFVTRV9OU1MpIHx8IChkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVk KEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCkpCiAjZGVmaW5lIEhBVkVfQkVfVExTX0dFVF9D RVJUSUZJQ0FURV9IQVNICiBleHRlcm4gY2hhciAqYmVfdGxzX2dldF9jZXJ0aWZpY2F0ZV9oYXNo KFBvcnQgKnBvcnQsIHNpemVfdCAqbGVuKTsKICNlbmRpZgpAQCAtMzExLDYgKzMxNiwxMCBAQCBl eHRlcm4gY2hhciAqYmVfdGxzX2dldF9jZXJ0aWZpY2F0ZV9oYXNoKFBvcnQgKnBvcnQsIHNpemVf dCAqbGVuKTsKIHR5cGVkZWYgdm9pZCAoKm9wZW5zc2xfdGxzX2luaXRfaG9va190eXApIChTU0xf Q1RYICpjb250ZXh0LCBib29sIGlzU2VydmVyU3RhcnQpOwogZXh0ZXJuIFBHRExMSU1QT1JUIG9w ZW5zc2xfdGxzX2luaXRfaG9va190eXAgb3BlbnNzbF90bHNfaW5pdF9ob29rOwogI2VuZGlmCisj aWZkZWYgVVNFX05TUwordHlwZWRlZiB2b2lkICgqbnNzX3Rsc19pbml0X2hvb2tfdHlwZSkgKGJv b2wgaXNTZXJ2ZXJTdGFydCk7CitleHRlcm4gUEdETExJTVBPUlQgbnNzX3Rsc19pbml0X2hvb2tf dHlwZSBuc3NfdGxzX2luaXRfaG9vazsKKyNlbmRpZgogCiAjZW5kaWYJCQkJCQkJLyogVVNFX1NT TCAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oIGIvc3JjL2luY2x1 ZGUvbGlicHEvbGlicHEuaAppbmRleCA2YzUxYjJmMjBmLi4wZDViMTVkODIzIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBx LmgKQEAgLTk3LDYgKzk3LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3NsX3Bhc3NwaHJh c2VfY29tbWFuZF9zdXBwb3J0c19yZWxvYWQ7CiAjaWZkZWYgVVNFX1NTTAogZXh0ZXJuIGJvb2wg c3NsX2xvYWRlZF92ZXJpZnlfbG9jYXRpb25zOwogI2VuZGlmCitleHRlcm4gY2hhciAqc3NsX2Rh dGFiYXNlOwogCiBleHRlcm4gaW50CXNlY3VyZV9pbml0aWFsaXplKGJvb2wgaXNTZXJ2ZXJTdGFy dCk7CiBleHRlcm4gYm9vbCBzZWN1cmVfbG9hZGVkX3ZlcmlmeV9sb2NhdGlvbnModm9pZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmggYi9zcmMvaW5jbHVkZS9w Z19jb25maWdfbWFudWFsLmgKaW5kZXggNjE0MDM1ZTIxNS4uNmFmODlkOWU5OCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3BnX2Nv bmZpZ19tYW51YWwuaApAQCAtMTg1LDcgKzE4NSw3IEBACiAgKiBVU0VfU1NMIGNvZGUgc2hvdWxk IGJlIGNvbXBpbGVkIG9ubHkgd2hlbiBjb21waWxpbmcgd2l0aCBhbiBTU0wKICAqIGltcGxlbWVu dGF0aW9uLgogICovCi0jaWZkZWYgVVNFX09QRU5TU0wKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NM KSB8fCBkZWZpbmVkKFVTRV9OU1MpCiAjZGVmaW5lIFVTRV9TU0wKICNlbmRpZgogCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1jb25uZWN0LmMKaW5kZXggYjI4OGQzNDZmOS4uNzkwMTZmOTEyZCAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzQ0LDYgKzM0NCwxMCBAQCBzdGF0aWMgY29uc3QgaW50 ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10gPSB7CiAJCSJUYXJnZXQt U2Vzc2lvbi1BdHRycyIsICIiLCAxNSwgLyogc2l6ZW9mKCJwcmVmZXItc3RhbmRieSIpID0gMTUg Ki8KIAlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgdGFyZ2V0X3Nlc3Npb25fYXR0cnMpfSwKIAor CXsic3NsZGF0YWJhc2UiLCBOVUxMLCBOVUxMLCBOVUxMLAorCQkiQ2VydGlmaWNhdGVEYXRhYmFz ZSIsICIiLCA2NCwKKwlvZmZzZXRvZihzdHJ1Y3QgcGdfY29ubiwgc3NsZGF0YWJhc2UpfSwKKwog CS8qIFRlcm1pbmF0aW5nIGVudHJ5IC0tLSBNVVNUIEJFIExBU1QgKi8KIAl7TlVMTCwgTlVMTCwg TlVMTCwgTlVMTCwKIAlOVUxMLCBOVUxMLCAwfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtc2VjdXJlLW5zcy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5z cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxZjA5ZmI3ZmEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtbnNzLmMKQEAg LTAsMCArMSwxMjAwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBmZS1zZWN1cmUtbnNz LmMKKyAqCSAgZnVuY3Rpb25zIGZvciBzdXBwb3J0aW5nIE5TUyBhcyBhIFRMUyBiYWNrZW5kIGZv ciBmcm9udGVuZCBsaWJwcQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIx LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUt bnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNf ZmUuaCIKKworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAiZmUtYXV0aC5oIgorI2lu Y2x1ZGUgImZlLXNlY3VyZS1jb21tb24uaCIKKyNpbmNsdWRlICJsaWJwcS1pbnQuaCIKKyNpbmNs dWRlICJjb21tb24vY3J5cHRvaGFzaC5oIgorI2luY2x1ZGUgImNvbW1vbi9uc3MuaCIKKworI2lm ZGVmIEVOQUJMRV9USFJFQURfU0FGRVRZCisjaWZkZWYgV0lOMzIKKyNpbmNsdWRlICJwdGhyZWFk LXdpbjMyLmgiCisjZWxzZQorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorI2VuZGlmCisK Ky8qCisgKiBUaGUgbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5oIE5TUFIgaGVhZGVyIHR5cGVkZWZz IHVpbnQ2NCBhbmQgaW50NjQgd2l0aAorICogY29sbGlkaW5nIGRlZmluaXRpb25zIGZyb20gb3Vy cywgY2F1c2luZyBhIG11Y2ggZXhwZWN0ZWQgY29tcGlsZXIgZXJyb3IuCisgKiBSZW1vdmUgYmFj a3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbmNpZW50IE5TUFIgdmVyc2lvbnMgdG8gYXZvaWQg dGhpcy4KKyAqLworI2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3ByL25z cHIuaD4KKyNpbmNsdWRlIDxuc3ByL3ByZXJyb3IuaD4KKyNpbmNsdWRlIDxuc3ByL3ByaW5pdC5o PgorI2luY2x1ZGUgPG5zcHIvcHJpby5oPgorCisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5j bHVkZSA8bnNzL25zcy5oPgorI2luY2x1ZGUgPG5zcy9zc2wuaD4KKyNpbmNsdWRlIDxuc3Mvc3Ns cHJvdG8uaD4KKyNpbmNsdWRlIDxuc3MvcGsxMWZ1bmMuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjZXJy Lmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZHQuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjbW9kLmg+CisK K3N0YXRpYyBTRUNTdGF0dXMgcGdfbG9hZF9uc3NfbW9kdWxlKFNFQ01PRE1vZHVsZSAqKm1vZHVs ZSwgY29uc3QgY2hhciAqbGlicmFyeSwgY29uc3QgY2hhciAqbmFtZSk7CitzdGF0aWMgU0VDU3Rh dHVzIHBnX2JhZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICpmZCk7CitzdGF0 aWMgY29uc3QgY2hhciAqcGdfU1NMZXJybWVzc2FnZShQUkVycm9yQ29kZSBlcnJjb2RlKTsKK3N0 YXRpYyBTRUNTdGF0dXMgcGdfY2xpZW50X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURl c2MgKnNvY2tldCwgQ0VSVERpc3ROYW1lcyAqY2FOYW1lcywKKwkJCQkJCQkJCQlDRVJUQ2VydGlm aWNhdGUgKipwUmV0Q2VydCwgU0VDS0VZUHJpdmF0ZUtleSAqKnBSZXRLZXkpOworc3RhdGljIFNF Q1N0YXR1cyBwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKmZkLCBQ UkJvb2wgY2hlY2tzaWcsIFBSQm9vbCBpc1NlcnZlcik7CitzdGF0aWMgaW50CXNzbF9wcm90b2Nv bF9wYXJhbV90b19uc3MoY29uc3QgY2hhciAqcHJvdG9jb2wpOworc3RhdGljIGJvb2wgY2VydGlm aWNhdGVfZGF0YWJhc2VfaGFzX0NBKFBHY29ubiAqY29ubik7CisKK3N0YXRpYyBjaGFyICpQUXNz bF9wYXNzd2RfY2IoUEsxMVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7 CisKKy8qCisgKiBQUl9JbXBvcnRUQ1BTb2NrZXQoKSBpcyBhIHByaXZhdGUgQVBJLCBidXQgdmVy eSB3aWRlbHkgdXNlZCwgYXMgaXQncyB0aGUKKyAqIG9ubHkgd2F5IHRvIG1ha2UgTlNTIHVzZSBh biBhbHJlYWR5IHNldCB1cCBQT1NJWCBmaWxlIGRlc2NyaXB0b3IgcmF0aGVyCisgKiB0aGFuIG9w ZW5pbmcgb25lIGl0c2VsZi4gVG8gcXVvdGUgdGhlIE5TUyBkb2N1bWVudGF0aW9uOgorICoKKyAq CQkiSW4gdGhlb3J5LCBjb2RlIHRoYXQgdXNlcyBQUl9JbXBvcnRUQ1BTb2NrZXQgbWF5IGJyZWFr IHdoZW4gTlNQUidzCisgKgkJaW1wbGVtZW50YXRpb24gY2hhbmdlcy4gSW4gcHJhY3RpY2UsIHRo aXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuIGJlY2F1c2UKKyAqCQlOU1BSJ3MgaW1wbGVtZW50YXRp b24gaGFzIGJlZW4gc3RhYmxlIGZvciB5ZWFycyBhbmQgYmVjYXVzZSBvZiBOU1BSJ3MKKyAqCQlz dHJvbmcgY29tbWl0bWVudCB0byBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiIKKyAqCisgKiBodHRw czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNQ Ui9SZWZlcmVuY2UvUFJfSW1wb3J0VENQU29ja2V0CisgKgorICogVGhlIGZ1bmN0aW9uIGlzIGRl Y2xhcmVkIGluIDxwcml2YXRlL3BwcmlvLmg+LCBidXQgYXMgaXQgaXMgYSBoZWFkZXIgbWFya2Vk CisgKiBwcml2YXRlIHdlIGRlY2xhcmUgaXQgaGVyZSByYXRoZXIgdGhhbiBpbmNsdWRpbmcgaXQu CisgKi8KK05TUFJfQVBJKFBSRmlsZURlc2MgKikgUFJfSW1wb3J0VENQU29ja2V0KGludCk7CisK K3N0YXRpYyBTRUNNT0RNb2R1bGUgKmNhX3RydXN0ID0gTlVMTDsKKworLyoKKyAqIFRoaXMgbG9n aWMgZXhpc3RzIGluIE5TUyBhcyB3ZWxsLCBidXQgaXQncyBvbmx5IGF2YWlsYWJsZSBmb3Igd2hl biB0aGVyZSBpcworICogYSBkYXRhYmFzZSB0byBvcGVuLCBhbmQgbm90IG9ubHkgdXNpbmcgdGhl IHN5c3RlbSB0cnVzdCBzdG9yZS4gVGh1cywgd2UKKyAqIG5lZWQgdG8ga2VlcCBvdXIgb3duIGNv cHkuCisgKi8KKyNpZiBkZWZpbmVkKFdJTjMyKQorc3RhdGljIGNvbnN0IGNoYXIgKmNhX3RydXN0 X25hbWUgPSAibnNzY2tiaS5kbGwiOworI2VsaWYgZGVmaW5lZChfX2Rhcndpbl9fKQorc3RhdGlj IGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2tiaS5keWxpYiI7CisjZWxzZQor c3RhdGljIGNvbnN0IGNoYXIgKmNhX3RydXN0X25hbWUgPSAibGlibnNzY2tiaS5zbyI7CisjZW5k aWYKKworc3RhdGljIFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5cGUgUFFzc2xLZXlQYXNzSG9vayA9 IE5VTEw7CisKKyNpZmRlZiBFTkFCTEVfVEhSRUFEX1NBRkVUWQorI2lmbmRlZiBXSU4zMgorc3Rh dGljIHB0aHJlYWRfbXV0ZXhfdCBzc2xfY29uZmlnX211dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklU SUFMSVpFUjsKKyNlbHNlCitzdGF0aWMgcHRocmVhZF9tdXRleF90IHNzbF9jb25maWdfbXV0ZXgg PSBOVUxMOworc3RhdGljIGxvbmcgd2luMzJfc3NsX2NyZWF0ZV9tdXRleCA9IDA7CisjZW5kaWYK KyNlbmRpZgkJCQkJCQkvKiBFTkFCTEVfVEhSRUFEX1NBRkVUWSAqLworCisvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8q CQkJIFByb2NlZHVyZXMgY29tbW9uIHRvIGFsbCBzZWN1cmUgc2Vzc2lvbnMJCQkqLworLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCisKKy8qCisgKiBwZ3Rsc19pbml0X2xpYnJhcnkKKyAqCisgKiBUaGVyZSBpcyBubyBkaXJl Y3QgZXF1aXZhbGVudCBmb3IgUFFpbml0T3BlblNTTCBpbiBOU1MvTlNQUiwgd2l0aCBQUl9Jbml0 CisgKiBiZWluZyB0aGUgY2xvc2VzdCBtYXRjaCB0aGVyZSBpcy4gUFJfSW5pdCBpcyBob3dldmVy IGFscmVhZHkgZG9jdW1lbnRlZCB0bworICogbm90IGJlIHJlcXVpcmVkIHNvIHNpbXBseSBtYWtp bmcgdGhpcyBhIG5vb3Agc2VlbXMgbGlrZSB0aGUgYmVzdCBvcHRpb24uCisgKi8KK3ZvaWQKK3Bn dGxzX2luaXRfbGlicmFyeShib29sIGRvX3NzbCwgaW50IGRvX2NyeXB0bykKK3sKKwkvKiBub29w ICovCit9CisKK2ludAorcGd0bHNfaW5pdChQR2Nvbm4gKmNvbm4sIGJvb2wgZG9fc3NsLCBib29s IGRvX2NyeXB0bykKK3sKKwlpZiAoZG9fc3NsKQorCXsKKwkJY29ubi0+bnNzX2NvbnRleHQgPSBO VUxMOworCisJCWNvbm4tPnNzbF9pbl91c2UgPSBmYWxzZTsKKwkJY29ubi0+aGFzX3Bhc3N3b3Jk ID0gZmFsc2U7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQKK3BndGxzX2Nsb3NlKFBHY29u biAqY29ubikKK3sKKwkvKgorCSAqIEFsbCBOU1MgcmVmZXJlbmNlcyBtdXN0IGJlIGNsZWFuZWQg dXAgYmVmb3JlIHdlIGNsb3NlIG91dCB0aGUKKwkgKiBjb250ZXh0LgorCSAqLworCWlmIChjb25u LT5wcl9mZCkKKwl7CisJCVBSU3RhdHVzCXN0YXR1czsKKworCQlzdGF0dXMgPSBQUl9DbG9zZShj b25uLT5wcl9mZCk7CisJCWlmIChzdGF0dXMgIT0gUFJfU1VDQ0VTUykKKwkJeworCQkJcHFJbnRl cm5hbE5vdGljZSgmY29ubi0+bm90aWNlSG9va3MsCisJCQkJCQkJICJ1bmFibGUgdG8gY2xvc2Ug TlNQUiBmZDogJXMiLAorCQkJCQkJCSBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsK KwkJfQorCisJCWNvbm4tPnByX2ZkID0gTlVMTDsKKwl9CisKKwlpZiAoY29ubi0+bnNzX2NvbnRl eHQpCisJeworCQlTRUNTdGF0dXMJc3RhdHVzOworCisJCS8qIFRoZSBzZXNzaW9uIGNhY2hlIG11 c3QgYmUgY2xlYXJlZCwgb3Igd2UnbGwgbGVhayByZWZlcmVuY2VzICovCisJCVNTTF9DbGVhclNl c3Npb25DYWNoZSgpOworCisJCXN0YXR1cyA9IE5TU19TaHV0ZG93bkNvbnRleHQoY29ubi0+bnNz X2NvbnRleHQpOworCisJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJeworCQkJcHFJbnRl cm5hbE5vdGljZSgmY29ubi0+bm90aWNlSG9va3MsCisJCQkJCQkJICJ1bmFibGUgdG8gc2h1dCBk b3duIE5TUyBjb250ZXh0OiAlcyIsCisJCQkJCQkJIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJy b3IoKSkpOworCQl9CisKKwkJY29ubi0+bnNzX2NvbnRleHQgPSBOVUxMOworCX0KK30KKworUG9z dGdyZXNQb2xsaW5nU3RhdHVzVHlwZQorcGd0bHNfb3Blbl9jbGllbnQoUEdjb25uICpjb25uKQor eworCVNFQ1N0YXR1cwlzdGF0dXM7CisJUFJGaWxlRGVzYyAqbW9kZWw7CisJTlNTSW5pdFBhcmFt ZXRlcnMgcGFyYW1zOworCVNTTFZlcnNpb25SYW5nZSBkZXNpcmVkX3JhbmdlOworCisjaWZkZWYg RU5BQkxFX1RIUkVBRF9TQUZFVFkKKyNpZmRlZiBXSU4zMgorCS8qIFRoaXMgbG9ja2luZyBpcyBt b2RlbGxlZCBhZnRlciBmZS1zZWN1cmUtb3BlbnNzbC5jICovCisJaWYgKHNzbF9jb25maWdfbXV0 ZXggPT0gTlVMTCkKKwl7CisJCXdoaWxlIChJbnRlcmxvY2tlZEV4Y2hhbmdlKCZ3aW4zMl9zc2xf Y3JlYXRlX211dGV4LCAxKSA9PSAxKQorCQkJLyogbG9vcCB3aGlsZSBhbm90aGVyIHRocmVhZCBv d25zIHRoZSBsb2NrICovIDsKKwkJaWYgKHNzbF9jb25maWdfbXV0ZXggPT0gTlVMTCkKKwkJewor CQkJaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmc3NsX2NvbmZpZ19tdXRleCwgTlVMTCkpCisJCQl7 CisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkJICBs aWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gbG9jayB0aHJlYWQiKSk7CisJCQkJcmV0dXJuIFBHUkVT X1BPTExJTkdfRkFJTEVEOworCQkJfQorCQl9CisJCUludGVybG9ja2VkRXhjaGFuZ2UoJndpbjMy X3NzbF9jcmVhdGVfbXV0ZXgsIDApOworCX0KKyNlbmRpZgorCWlmIChwdGhyZWFkX211dGV4X2xv Y2soJnNzbF9jb25maWdfbXV0ZXgpKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGxvY2sgdGhyZWFk IikpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorI2VuZGlmCQkJCQkJCS8q IEVOQUJMRV9USFJFQURfU0FGRVRZICovCisKKwkvKgorCSAqIFRoZSBOU1BSIGRvY3VtZW50YXRp b24gc3RhdGVzIHRoYXQgcnVudGltZSBpbml0aWFsaXphdGlvbiB2aWEgUFJfSW5pdAorCSAqIGlz IG5vIGxvbmdlciByZXF1aXJlZCwgYXMgdGhlIGZpcnN0IGNhbGxlciBpbnRvIE5TUFIgd2lsbCBw ZXJmb3JtIHRoZQorCSAqIGluaXRpYWxpemF0aW9uIGltcGxpY2l0bHkuIFNlZSBiZS1zZWN1cmUt bnNzLmMgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbgorCSAqIG9uIFBSX0luaXQuCisJICovCisJUFJf SW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJT1JJVFlfTk9STUFMLCAwKTsKKworCS8qCisJICog TlNTIGluaXRpYWxpemF0aW9uIGFuZCB0aGUgdXNlIG9mIGNvbnRleHRzIGlzIGZ1cnRoZXIgZGlz Y3Vzc2VkIGluCisJICogYmUtc2VjdXJlLW5zcy5jCisJICovCisJbWVtc2V0KCZwYXJhbXMsIDAs IHNpemVvZihwYXJhbXMpKTsKKwlwYXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisJcGFy YW1zLmRiVG9rZW5EZXNjcmlwdGlvbiA9IHN0cmR1cCgicG9zdGdyZXMiKTsKKworCWlmIChjb25u LT5zc2xkYXRhYmFzZSAmJiBzdHJsZW4oY29ubi0+c3NsZGF0YWJhc2UpID4gMCkKKwl7CisJCWNo YXIJICAgKnNzbGRhdGFiYXNlX3BhdGggPSBwc3ByaW50Zigic3FsOiVzIiwgY29ubi0+c3NsZGF0 YWJhc2UpOworCisJCWNvbm4tPm5zc19jb250ZXh0ID0gTlNTX0luaXRDb250ZXh0KHNzbGRhdGFi YXNlX3BhdGgsICIiLCAiIiwgIiIsCisJCQkJCQkJCQkJCSZwYXJhbXMsCisJCQkJCQkJCQkJCU5T U19JTklUX1JFQURPTkxZIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisJCXBmcmVlKHNzbGRhdGFi YXNlX3BhdGgpOworCisJCWlmICghY29ubi0+bnNzX2NvbnRleHQpCisJCXsKKwkJCXByaW50ZlBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1 bmFibGUgdG8gb3BlbiBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBcIiVzXCI6ICVzIiksCisJCQkJCQkJ ICBjb25uLT5zc2xkYXRhYmFzZSwKKwkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJy b3IoKSkpOworCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCQl9CisJfQorCWVsc2UK Kwl7CisJCWNvbm4tPm5zc19jb250ZXh0ID0gTlNTX0luaXRDb250ZXh0KCIiLCAiIiwgIiIsICIi LCAmcGFyYW1zLAorCQkJCQkJCQkJCQlOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklUX05PQ0VS VERCIHwKKwkJCQkJCQkJCQkJTlNTX0lOSVRfTk9NT0REQiB8IE5TU19JTklUX0ZPUkNFT1BFTiB8 CisJCQkJCQkJCQkJCU5TU19JTklUX05PUk9PVElOSVQgfCBOU1NfSU5JVF9QSzExUkVMT0FEKTsK KwkJaWYgKCFjb25uLT5uc3NfY29udGV4dCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byBpbml0 aWFsaXplIE5TUzogJXMiKSwKKwkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3Io KSkpOworCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCQl9CisJfQorCisJLyoKKwkg KiBDb25maWd1cmUgY2lwaGVyIHBvbGljeSBieSBzZXR0aW5nIHRoZSBkb21lc3RpYyBzdWl0ZS4K KwkgKgorCSAqIEhpc3RvcmljYWxseSB0aGVyZSB3ZXJlIGRpZmZlcmVudCBjaXBoZXIgcG9saWNp ZXMgYmFzZWQgb24gZXhwb3J0IChhbmQKKwkgKiBpbXBvcnQpIHJlc3RyaWN0aW9uczogRG9tZXN0 aWMsIEV4cG9ydCBhbmQgRnJhbmNlLiBUaGVzZSBhcmUgc2luY2UgbG9uZworCSAqIHJlbW92ZWQg d2l0aCBhbGwgY2lwaGVycyBiZWluZyBlbmFibGVkIGJ5IGRlZmF1bHQuIER1ZSB0byBiYWNrd2Fy ZHMKKwkgKiBjb21wYXRpYmlsaXR5LCB0aGUgb2xkIEFQSSBpcyBzdGlsbCB1c2VkIGV2ZW4gdGhv dWdoIGFsbCB0aHJlZSBwb2xpY2llcworCSAqIG5vdyBkbyB0aGUgc2FtZSB0aGluZy4KKwkgKi8K KwlzdGF0dXMgPSBOU1NfU2V0RG9tZXN0aWNQb2xpY3koKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1 Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gY29uZmlndXJlIGNpcGhlciBwb2xpY3k6ICVz IiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCisJCXJldHVy biBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIElmIHdlIGRvbid0IGhhdmUg YSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSwgdGhlIHN5c3RlbSB0cnVzdCBzdG9yZSBpcyB0aGUKKwkg KiBmYWxsYmFjayB3ZSBjYW4gdXNlLiBJZiB3ZSBmYWlsIHRvIGluaXRpYWxpemUgdGhhdCBhcyB3 ZWxsLCB3ZSBjYW4KKwkgKiBzdGlsbCBhdHRlbXB0IGEgY29ubmVjdGlvbiBhcyBsb25nIGFzIHRo ZSBzc2xtb2RlIGlzbid0IHZlcmlmeS0qLgorCSAqLworCWlmICghY29ubi0+c3NsZGF0YWJhc2Ug JiYKKwkJKHN0cmNtcChjb25uLT5zc2xtb2RlLCAidmVyaWZ5LWNhIikgPT0gMCB8fAorCQkgc3Ry Y21wKGNvbm4tPnNzbG1vZGUsICJ2ZXJpZnktZnVsbCIpID09IDApKQorCXsKKwkJc3RhdHVzID0g cGdfbG9hZF9uc3NfbW9kdWxlKCZjYV90cnVzdCwgY2FfdHJ1c3RfbmFtZSwgIlwiUm9vdCBDZXJ0 aWZpY2F0ZXNcIiIpOworCQlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXsKKwkJCXByaW50 ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJXQVJOSU5HOiB1bmFibGUgdG8gbG9hZCBzeXN0ZW0gTlNTIHRydXN0IG1vZHVsZSBcIiVzXCIs IGNyZWF0ZSBhIGxvY2FsIE5TUyBkYXRhYmFzZSBhbmQgcmV0cnkgOiAlcyIpLAorCQkJCQkJCSAg Y2FfdHJ1c3RfbmFtZSwKKwkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkp OworCisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJCX0KKwl9CisKKyNpZmRlZiBF TkFCTEVfVEhSRUFEX1NBRkVUWQorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzc2xfY29uZmlnX211 dGV4KTsKKyNlbmRpZgorCisJUEsxMV9TZXRQYXNzd29yZEZ1bmMoUFFzc2xfcGFzc3dkX2NiKTsK KworCS8qCisJICogSW1wb3J0IHRoZSBhbHJlYWR5IG9wZW5lZCBzb2NrZXQgYXMgd2UgZG9uJ3Qg d2FudCB0byB1c2UgTlNQUiBmdW5jdGlvbnMKKwkgKiBmb3Igb3BlbmluZyB0aGUgbmV0d29yayBz b2NrZXQgZHVlIHRvIGhvdyB0aGUgUG9zdGdyZVNRTCBwcm90b2NvbCB3b3JrcworCSAqIHdpdGgg VExTIGNvbm5lY3Rpb25zLiBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBOU1BSIHB1 YmxpYyBBUEksCisJICogc2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgZm9y IHRoZSByYXRpb25hbGUgb2Ygc3RpbGwgdXNpbmcKKwkgKiBpdC4KKwkgKi8KKwljb25uLT5wcl9m ZCA9IFBSX0ltcG9ydFRDUFNvY2tldChjb25uLT5zb2NrKTsKKwlpZiAoIWNvbm4tPnByX2ZkKQor CXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGli cHFfZ2V0dGV4dCgidW5hYmxlIHRvIGF0dGFjaCB0byBzb2NrZXQ6ICVzIiksCisJCQkJCQkgIHBn X1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19G QUlMRUQ7CisJfQorCisJLyoKKwkgKiBNb3N0IG9mIHRoZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJs ZSwgYW5kIGltcGxlbWVudGF0aW9ucyBvZiwgTlNTL05TUFIKKwkgKiB1c2UgdGhlIFBSX05ld1RD UFNvY2tldCgpIGZ1bmN0aW9uIGhlcmUsIHdoaWNoIGhhcyB0aGUgZHJhd2JhY2sgdGhhdCBpdAor CSAqIGNhbiBvbmx5IGNyZWF0ZSBJUHY0IHNvY2tldHMuIEluc3RlYWQgdXNlIFBSX09wZW5UQ1BT b2NrZXQoKSB3aGljaAorCSAqIGNvcGVzIHdpdGggSVB2NiBhcyB3ZWxsLgorCSAqLworCW1vZGVs ID0gU1NMX0ltcG9ydEZEKE5VTEwsIFBSX09wZW5UQ1BTb2NrZXQoY29ubi0+bGFkZHIuYWRkci5z c19mYW1pbHkpKTsKKwlpZiAoIW1vZGVsKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4t PmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGVuYWJsZSBU TFM6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQly ZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJLyogRGlzYWJsZSBvbGQgcHJvdG9j b2wgdmVyc2lvbnMgKFNTTHYyIGFuZCBTU0x2MykgKi8KKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBT U0xfRU5BQkxFX1NTTDIsIFBSX0ZBTFNFKTsKKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfVjJf Q09NUEFUSUJMRV9IRUxMTywgUFJfRkFMU0UpOworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9F TkFCTEVfU1NMMywgUFJfRkFMU0UpOworCisjaWZkZWYgU1NMX0NCQ19SQU5ET01fSVYKKworCS8q CisJICogRW5hYmxlIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgQkVBU1QgYXR0YWNrIGluIGNhc2Ug dGhlIE5TUyBsaWJyYXJ5IGhhcworCSAqIHN1cHBvcnQgZm9yIHRoYXQuIFdoaWxlIFNTTHYzIGlz IGRpc2FibGVkLCB3ZSBtYXkgc3RpbGwgYWxsb3cgVExTdjEKKwkgKiB3aGljaCBpcyBhZmZlY3Rl ZC4gVGhlIG9wdGlvbiBpc24ndCBkb2N1bWVudGVkIGFzIGFuIFNTTCBvcHRpb24sIGJ1dCBhcwor CSAqIGFuIE5TUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKwkgKi8KKwlTU0xfT3B0aW9uU2V0KG1v ZGVsLCBTU0xfQ0JDX1JBTkRPTV9JViwgUFJfVFJVRSk7CisjZW5kaWYKKworCS8qIFNldCB1cyB1 cCBhcyBhIFRMUyBjbGllbnQgZm9yIHRoZSBoYW5kc2hha2UgKi8KKwlTU0xfT3B0aW9uU2V0KG1v ZGVsLCBTU0xfSEFORFNIQUtFX0FTX0NMSUVOVCwgUFJfVFJVRSk7CisKKwkvKgorCSAqIFdoZW4g c2V0dGluZyB0aGUgYXZhaWxhYmxlIHByb3RvY29scywgd2UgZWl0aGVyIHVzZSB0aGUgdXNlciBk ZWZpbmVkCisJICogY29uZmlndXJhdGlvbiB2YWx1ZXMsIGFuZCBpZiBtaXNzaW5nIHdlIGFjY2Vw dCB3aGF0ZXZlciBpcyB0aGUgaGlnaGVzdAorCSAqIHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoZSBs aWJyYXJ5IGFzIHRoZSBtYXggYW5kIG9ubHkgbGltaXQgdGhlIHJhbmdlIGluCisJICogdGhlIG90 aGVyIGVuZCBhdCBUTFN2MS4wLiBzc2xfdmFyaWFudF9zdHJlYW0gaXMgYSBQcm90b2NvbFZhcmlh bnQgZW51bQorCSAqIGZvciBTdHJlYW0gcHJvdG9jb2xzLCByYXRoZXIgdGhhbiBkYXRhZ3JhbS4K KwkgKi8KKwlTU0xfVmVyc2lvblJhbmdlR2V0U3VwcG9ydGVkKHNzbF92YXJpYW50X3N0cmVhbSwg JmRlc2lyZWRfcmFuZ2UpOworCWRlc2lyZWRfcmFuZ2UubWluID0gU1NMX0xJQlJBUllfVkVSU0lP Tl9UTFNfMV8wOworCisJaWYgKGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiAmJiBzdHJs ZW4oY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKSA+IDApCisJeworCQlpbnQJCQlzc2xf bWluX3ZlciA9IHNzbF9wcm90b2NvbF9wYXJhbV90b19uc3MoY29ubi0+c3NsX21pbl9wcm90b2Nv bF92ZXJzaW9uKTsKKworCQlpZiAoc3NsX21pbl92ZXIgPT0gLTEpCisJCXsKKwkJCXByaW50ZlBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJp bnZhbGlkIHZhbHVlIFwiJXNcIiBmb3IgbWluaW11bSB2ZXJzaW9uIG9mIFNTTCBwcm90b2NvbFxu IiksCisJCQkJCQkJICBjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOworCQkJcmV0dXJu IC0xOworCQl9CisKKwkJZGVzaXJlZF9yYW5nZS5taW4gPSBzc2xfbWluX3ZlcjsKKwl9CisKKwlp ZiAoY29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9uICYmIHN0cmxlbihjb25uLT5zc2xfbWF4 X3Byb3RvY29sX3ZlcnNpb24pID4gMCkKKwl7CisJCWludAkJCXNzbF9tYXhfdmVyID0gc3NsX3By b3RvY29sX3BhcmFtX3RvX25zcyhjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24pOworCisJ CWlmIChzc2xfbWF4X3ZlciA9PSAtMSkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4t PmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQgdmFsdWUgXCIl c1wiIGZvciBtYXhpbXVtIHZlcnNpb24gb2YgU1NMIHByb3RvY29sXG4iKSwKKwkJCQkJCQkgIGNv bm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlk ZXNpcmVkX3JhbmdlLm1heCA9IHNzbF9tYXhfdmVyOworCX0KKworCWlmIChTU0xfVmVyc2lvblJh bmdlU2V0KG1vZGVsLCAmZGVzaXJlZF9yYW5nZSkgIT0gU0VDU3VjY2VzcykKKwl7CisJCXByaW50 ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dldHRleHQo InVuYWJsZSB0byBzZXQgYWxsb3dlZCBTU0wgcHJvdG9jb2wgdmVyc2lvbiByYW5nZTogJXMiKSwK KwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCXJldHVybiBQR1JF U19QT0xMSU5HX0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIFNldCB1cCBjYWxsYmFjayBmb3IgdmVy aWZ5aW5nIHNlcnZlciBjZXJ0aWZpY2F0ZXMsIGFzIHdlbGwgYXMgZm9yIGhvdworCSAqIHRvIGhh bmRsZSBmYWlsZWQgdmVyaWZpY2F0aW9ucy4KKwkgKi8KKwlTU0xfQXV0aENlcnRpZmljYXRlSG9v ayhtb2RlbCwgcGdfY2VydF9hdXRoX2hhbmRsZXIsICh2b2lkICopIGNvbm4pOworCVNTTF9CYWRD ZXJ0SG9vayhtb2RlbCwgcGdfYmFkX2NlcnRfaGFuZGxlciwgKHZvaWQgKikgY29ubik7CisKKwkv KgorCSAqIENvbnZlcnQgdGhlIE5TUFIgc29ja2V0IHRvIGFuIFNTTCBzb2NrZXQuIEVuc3VyaW5n IHRoZSBzdWNjZXNzIG9mIHRoaXMKKwkgKiBvcGVyYXRpb24gaXMgY3JpdGljYWwgYXMgTlNTIFNT TF8qIGZ1bmN0aW9ucyBtYXkgcmV0dXJuIFNFQ1N1Y2Nlc3Mgb24KKwkgKiB0aGUgc29ja2V0IGV2 ZW4gdGhvdWdoIFNTTCBoYXNuJ3QgYmVlbiBlbmFibGVkLCB3aGljaCBpbnRyb2R1Y2UgYSByaXNr CisJICogb2Ygc2lsZW50IGRvd25ncmFkZXMuCisJICovCisJY29ubi0+cHJfZmQgPSBTU0xfSW1w b3J0RkQobW9kZWwsIGNvbm4tPnByX2ZkKTsKKwlpZiAoIWNvbm4tPnByX2ZkKQorCXsKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgidW5hYmxlIHRvIGNvbmZpZ3VyZSBjbGllbnQgZm9yIFRMUzogJXMiKSwKKwkJCQkJCSAgcGdf U1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZB SUxFRDsKKwl9CisKKwkvKgorCSAqIFRoZSBtb2RlbCBjYW4gbm93IGJlIGNsb3NlZCBhcyB3ZSd2 ZSBhcHBsaWVkIHRoZSBzZXR0aW5ncyBvZiB0aGUgbW9kZWwKKwkgKiBvbnRvIHRoZSByZWFsIHNv Y2tldC4gRnJvbSBoZXJlIG9uIHdlIHNob3VsZCBvbmx5IHVzZSBjb25uLT5wcl9mZC4KKwkgKi8K KwlQUl9DbG9zZShtb2RlbCk7CisKKwkvKiBTZXQgdGhlIHByaXZhdGUgZGF0YSB0byBiZSBwYXNz ZWQgdG8gdGhlIHBhc3N3b3JkIGNhbGxiYWNrICovCisJU1NMX1NldFBLQ1MxMVBpbkFyZyhjb25u LT5wcl9mZCwgKHZvaWQgKikgY29ubik7CisKKwlzdGF0dXMgPSBTU0xfUmVzZXRIYW5kc2hha2Uo Y29ubi0+cHJfZmQsIFBSX0ZBTFNFKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJewor CQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJ1bmFibGUgdG8gaW5pdGlhdGUgaGFuZHNoYWtlOiAlcyIpLAorCQkJCQkJICBwZ19T U0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJ TEVEOworCX0KKworCS8qIFNldCBjYWxsYmFjayBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uIHdo ZW4gcmVxdWVzdGVkIGJ5IHRoZSBzZXJ2ZXIgKi8KKwlTU0xfR2V0Q2xpZW50QXV0aERhdGFIb29r KGNvbm4tPnByX2ZkLCBwZ19jbGllbnRfYXV0aF9oYW5kbGVyLCAodm9pZCAqKSBjb25uKTsKKwor CS8qCisJICogU3BlY2lmeSB3aGljaCBob3N0bmFtZSB3ZSBhcmUgZXhwZWN0aW5nIHRvIHRhbGsg dG8gZm9yIHRoZSBDbGllbnRIZWxsbworCSAqIFNOSSBleHRlbnNpb24sIHVubGVzcyB0aGUgdXNl ciBoYXMgZGlzYWJsZWQgaXQuIE5TUyB3aWxsIHN1cHByZXNzIElQCisJICogYWRkcmVzc2VzIGlu IFNOSXMsIHNvIHdlIGRvbid0IG5lZWQgdG8gZmlsdGVyIHRob3NlIGV4cGxpY2l0bHkgbGlrZSB3 ZSBkbworCSAqIGZvciBPcGVuU1NMLgorCSAqLworCWlmIChjb25uLT5zc2xzbmkgJiYgY29ubi0+ c3Nsc25pWzBdID09ICcxJykKKwl7CisJCWNvbnN0IGNoYXIgKmhvc3QgPSBjb25uLT5jb25uaG9z dFtjb25uLT53aGljaGhvc3RdLmhvc3Q7CisJCWlmIChob3N0ICYmIGhvc3RbMF0pCisJCQlTU0xf U2V0VVJMKGNvbm4tPnByX2ZkLCBob3N0KTsKKwl9CisKKwlzdGF0dXMgPSBTU0xfRm9yY2VIYW5k c2hha2UoY29ubi0+cHJfZmQpOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJ cHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiU1NMIGVycm9yOiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBSX0dldEVy cm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOworCX0KKworCWNvbm4tPnNz bF9pbl91c2UgPSB0cnVlOworCXJldHVybiBQR1JFU19QT0xMSU5HX09LOworfQorCitzc2l6ZV90 CitwZ3Rsc19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQoreworCVBS SW50MzIJCW5yZWFkOworCVBSRXJyb3JDb2RlIHN0YXR1czsKKwlpbnQJCQlyZWFkX2Vycm5vID0g MDsKKworCS8qCisJICogUFJfUmVjdiBibG9ja3MgdW50aWwgdGhlcmUgaXMgZGF0YSB0byByZWFk IG9yIHRoZSB0aW1lb3V0IGV4cGlyZXMuIFdlCisJICogZG9uJ3Qgd2FudCB0byBzaXQgYmxvY2tl ZCBoZXJlLCBzbyB0aGUgdGltZW91dCBpcyB0dXJuZWQgb2ZmIGJ5IHVzaW5nCisJICogUFJfSU5U RVJWQUxfTk9fV0FJVCB3aGljaCBtZWFucyAicmV0dXJuIGltbWVkaWF0ZWx5IiwgIFplcm8gaXMg cmV0dXJuZWQKKwkgKiBmb3IgY2xvc2VkIGNvbm5lY3Rpb25zLCB3aGlsZSAtMSBpbmRpY2F0ZXMg YW4gZXJyb3Igd2l0aGluIHRoZSBvbmdvaW5nCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwlucmVh ZCA9IFBSX1JlY3YoY29ubi0+cHJfZmQsIHB0ciwgbGVuLCAwLCBQUl9JTlRFUlZBTF9OT19XQUlU KTsKKworCWlmIChucmVhZCA9PSAwKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4t PmVycm9yTWVzc2FnZSwKKwkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiVExTIHJlYWQgZXJyb3I6IEVP RiBkZXRlY3RlZFxuIikpOworCQlyZWFkX2Vycm5vID0gRUNPTk5SRVNFVDsKKwkJbnJlYWQgPSAt MTsKKwl9CisJZWxzZSBpZiAobnJlYWQgPT0gLTEpCisJeworCQlzdGF0dXMgPSBQUl9HZXRFcnJv cigpOworCisJCXN3aXRjaCAoc3RhdHVzKQorCQl7CisJCQljYXNlIFBSX0lPX1RJTUVPVVRfRVJS T1I6CisJCQkJLyogTm8gZGF0YSBhdmFpbGFibGUgeWV0LiAqLworCQkJCW5yZWFkID0gMDsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBQUl9XT1VMRF9CTE9DS19FUlJPUjoKKwkJCQlyZWFkX2Vycm5v ID0gRVdPVUxEQkxPQ0s7CisJCQkJYnJlYWs7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBlcnJvciBj YXNlcyBmb3IgUFJfUmVjdiBhcmUgbm90IGRvY3VtZW50ZWQsIGJ1dCBjYW4gYmUKKwkJCQkgKiBy ZXZlcnNlIGVuZ2luZWVyZWQgZnJvbSBfTURfdW5peF9tYXBfZGVmYXVsdF9lcnJvcigpIGluIHRo ZQorCQkJCSAqIE5TUFIgY29kZSwgZGVmaW5lZCBpbiBwci9zcmMvbWQvdW5peC91bml4X2Vycm9y cy5jLgorCQkJCSAqLworCQkJY2FzZSBQUl9ORVRXT1JLX1VOUkVBQ0hBQkxFX0VSUk9SOgorCQkJ Y2FzZSBQUl9DT05ORUNUX1JFU0VUX0VSUk9SOgorCQkJCXJlYWRfZXJybm8gPSBFQ09OTlJFU0VU OworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKG5y ZWFkID09IC0xKQorCQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiVExTIHJlYWQgZXJyb3I6ICVzIiksCisJCQkJCQkJ ICBwZ19TU0xlcnJtZXNzYWdlKHN0YXR1cykpOworCQl9CisJfQorCisJU09DS19FUlJOT19TRVQo cmVhZF9lcnJubyk7CisJcmV0dXJuIChzc2l6ZV90KSBucmVhZDsKK30KKworLyoKKyAqIHBndGxz X3JlYWRfcGVuZGluZworICoJCUNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGRhdGEgdG8gYmUg cmVhZAorICoKKyAqIFNTTF9EYXRhUGVuZGluZyB3aWxsIGNoZWNrIGZvciBkZWNyeXB0ZWQgZGF0 YSBpbiB0aGUgcmVjZWl2aW5nIGJ1ZmZlciwgYnV0CisgKiBkb2VzIG5vdCByZXZlYWwgYW55dGhp bmcgYWJvdXQgc3RpbGwgZW5jcnlwdGVkIGRhdGEgd2hpY2ggd2lsbCBiZSBtYWRlCisgKiBhdmFp bGFibGUuIFRodXMsIGlmIHBndGxzX3JlYWRfcGVuZGluZyByZXR1cm5zIHplcm8gaXQgZG9lcyBu b3QgZ3VhcmFudGVlCisgKiB0aGF0IGEgc3Vic2VxdWVudCBjYWxsIHRvIHBndGxzX3JlYWQgd291 bGQgYmxvY2suIFRoaXMgaXMgbW9kZWxsZWQKKyAqIGFyb3VuZCBob3cgdGhlIE9wZW5TU0wgaW1w bGVtZW50YXRpb24gdHJlYXRzIHBlbmRpbmcgZGF0YS4gVGhlIGVxdWl2YWxlbnQKKyAqIHRvIHRo ZSBPcGVuU1NMIFNTTF9oYXNfcGVuZGluZyBmdW5jdGlvbiB3b3VsZCBiZSB0byBjYWxsIFBSX1Jl Y3Ygd2l0aCBubworICogd2FpdCBhbmQgUFJfTVNHX1BFRUsgbGlrZSBzbzoKKyAqCisgKiAgICAg UFJfUmVjdihjb25uLT5wcl9mZCwgJmMsIDEsIFBSX01TR19QRUVLLCBQUl9JTlRFUlZBTF9OT19X QUlUKTsKKyAqLworYm9vbAorcGd0bHNfcmVhZF9wZW5kaW5nKFBHY29ubiAqY29ubikKK3sKKwly ZXR1cm4gU1NMX0RhdGFQZW5kaW5nKGNvbm4tPnByX2ZkKSA+IDA7Cit9CisKKy8qCisgKiBwZ3Rs c193cml0ZQorICoJCVdyaXRlIGRhdGEgb24gdGhlIHNlY3VyZSBzb2NrZXQKKyAqCisgKi8KK3Nz aXplX3QKK3BndGxzX3dyaXRlKFBHY29ubiAqY29ubiwgY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qg bGVuKQoreworCVBSSW50MzIJCW47CisJUFJFcnJvckNvZGUgc3RhdHVzOworCWludAkJCXdyaXRl X2Vycm5vID0gMDsKKworCW4gPSBQUl9Xcml0ZShjb25uLT5wcl9mZCwgcHRyLCBsZW4pOworCisJ aWYgKG4gPCAwKQorCXsKKwkJc3RhdHVzID0gUFJfR2V0RXJyb3IoKTsKKworCQlzd2l0Y2ggKHN0 YXR1cykKKwkJeworCQkJY2FzZSBQUl9XT1VMRF9CTE9DS19FUlJPUjoKKyNpZmRlZiBFQUdBSU4K KwkJCQl3cml0ZV9lcnJubyA9IEVBR0FJTjsKKyNlbHNlCisJCQkJd3JpdGVfZXJybm8gPSBFSU5U UjsKKyNlbmRpZgorCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXByaW50ZlBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiVExTIHdy aXRlIGVycm9yOiAlcyIpLAorCQkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2Uoc3RhdHVzKSk7CisJ CQkJd3JpdGVfZXJybm8gPSBFQ09OTlJFU0VUOworCQkJCWJyZWFrOworCQl9CisJfQorCisJU09D S19FUlJOT19TRVQod3JpdGVfZXJybm8pOworCXJldHVybiAoc3NpemVfdCkgbjsKK30KKworY2hh ciAqCitwZ3Rsc19nZXRfcGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwgc2l6ZV90 ICpsZW4pCit7CisJQ0VSVENlcnRpZmljYXRlICpzZXJ2ZXJfY2VydDsKKwlTRUNPaWRUYWcJc2ln bmF0dXJlX3RhZzsKKwlTRUNPaWRUYWcJZGlnZXN0X2FsZzsKKwlpbnQJCQlkaWdlc3RfbGVuOwor CVBMQXJlbmFQb29sICphcmVuYSA9IE5VTEw7CisJU0VDSXRlbQkJZGlnZXN0OworCWNoYXIJICAg KnJldCA9IE5VTEw7CisJU0VDU3RhdHVzCXN0YXR1czsKKworCSpsZW4gPSAwOworCisJc2VydmVy X2NlcnQgPSBTU0xfUGVlckNlcnRpZmljYXRlKGNvbm4tPnByX2ZkKTsKKwlpZiAoIXNlcnZlcl9j ZXJ0KQorCQlnb3RvIGNsZWFudXA7CisKKwlzaWduYXR1cmVfdGFnID0gU0VDT0lEX0dldEFsZ29y aXRobVRhZygmc2VydmVyX2NlcnQtPnNpZ25hdHVyZSk7CisJaWYgKCFwZ19maW5kX3NpZ25hdHVy ZV9hbGdvcml0aG0oc2lnbmF0dXJlX3RhZywgJmRpZ2VzdF9hbGcsICZkaWdlc3RfbGVuKSkKKwl7 CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBx X2dldHRleHQoImNvdWxkIG5vdCBmaW5kIGRpZ2VzdCBmb3IgT0lEICclcydcbiIpLAorCQkJCQkJ ICBTRUNPSURfRmluZE9JRFRhZ0Rlc2NyaXB0aW9uKHNpZ25hdHVyZV90YWcpKTsKKwkJZ290byBj bGVhbnVwOworCX0KKworCWFyZW5hID0gUE9SVF9OZXdBcmVuYShTRUNfQVNOMV9ERUZBVUxUX0FS RU5BX1NJWkUpOworCWRpZ2VzdC5kYXRhID0gUE9SVF9BcmVuYVpBbGxvYyhhcmVuYSwgc2l6ZW9m KHVuc2lnbmVkIGNoYXIpICogZGlnZXN0X2xlbik7CisJaWYgKCFkaWdlc3QuZGF0YSkKKwl7CisJ CXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkgIGxpYnBxX2dl dHRleHQoIm91dCBvZiBtZW1vcnkiKSk7CisJCWdvdG8gY2xlYW51cDsKKwl9CisJZGlnZXN0Lmxl biA9IGRpZ2VzdF9sZW47CisKKwlzdGF0dXMgPSBQSzExX0hhc2hCdWYoZGlnZXN0X2FsZywgZGln ZXN0LmRhdGEsIHNlcnZlcl9jZXJ0LT5kZXJDZXJ0LmRhdGEsCisJCQkJCQkgIHNlcnZlcl9jZXJ0 LT5kZXJDZXJ0Lmxlbik7CisKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQlwcmlu dGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0 KCJ1bmFibGUgdG8gZ2VuZXJhdGUgcGVlciBjZXJ0aWZpY2F0ZSBkaWdlc3Q6ICVzIiksCisJCQkJ CQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlnb3RvIGNsZWFudXA7CisJ fQorCisJcmV0ID0gcGdfbWFsbG9jKGRpZ2VzdC5sZW4pOworCW1lbWNweShyZXQsIGRpZ2VzdC5k YXRhLCBkaWdlc3QubGVuKTsKKwkqbGVuID0gZGlnZXN0X2xlbjsKKworY2xlYW51cDoKKwlpZiAo YXJlbmEpCisJCVBPUlRfRnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVFKTsKKwlpZiAoc2VydmVyX2Nl cnQpCisJCUNFUlRfRGVzdHJveUNlcnRpZmljYXRlKHNlcnZlcl9jZXJ0KTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKglWZXJpZnkgdGhhdCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIG1hdGNo ZXMgdGhlIGhvc3RuYW1lIHdlIGNvbm5lY3RlZCB0by4KKyAqCisgKiBUaGUgY2VydGlmaWNhdGUn cyBDb21tb24gTmFtZSBhbmQgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcyBhcmUgY29uc2lkZXJl ZC4KKyAqLworaW50CitwZ3Rsc192ZXJpZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVf Z3V0cyhQR2Nvbm4gKmNvbm4sCisJCQkJCQkJCQkJCQlpbnQgKm5hbWVzX2V4YW1pbmVkLAorCQkJ CQkJCQkJCQkJY2hhciAqKmZpcnN0X25hbWUpCit7CisJY2hhcgkgICAqc2VydmVyX2hvc3RuYW1l ID0gTlVMTDsKKwlDRVJUQ2VydGlmaWNhdGUgKnNlcnZlcl9jZXJ0ID0gTlVMTDsKKwlTRUNTdGF0 dXMJc3RhdHVzID0gU0VDU3VjY2VzczsKKwlTRUNJdGVtCQlhbHRuYW1lX2l0ZW07CisJUExBcmVu YVBvb2wgKmFyZW5hID0gTlVMTDsKKwlDRVJUR2VuZXJhbE5hbWUgKnNhbl9saXN0OworCUNFUlRH ZW5lcmFsTmFtZSAqY247CisKKwkvKgorCSAqIEluIHRoZSAic3RhbmRhcmQiIE5TUyB1c2UgY2Fz ZSwgd2UnZCBjYWxsIFNTTF9SZXZlYWxVUkwoKSB0byBnZXQgdGhlCisJICogaG9zdG5hbWUuIElu IG91ciBjYXNlLCBTU0xfU2V0VVJMKCkgd29uJ3QgaGF2ZSBiZWVuIGNhbGxlZCBpZiB0aGUgdXNl cgorCSAqIGhhcyBkaXNhYmxlZCBTTkksIHNvIHdlIGFsd2F5cyBwdWxsIHRoZSBob3N0bmFtZSBm cm9tIGNvbm5ob3N0IGluc3RlYWQuCisJICovCisJc2VydmVyX2hvc3RuYW1lID0gY29ubi0+Y29u bmhvc3RbY29ubi0+d2hpY2hob3N0XS5ob3N0OworCWlmICghc2VydmVyX2hvc3RuYW1lIHx8IHNl cnZlcl9ob3N0bmFtZVswXSA9PSAnXDAnKQorCXsKKwkJLyogdmVyaWZ5LWZ1bGwgc2hvdWxkbid0 IHByb2dyZXNzIHRoaXMgZmFyIHdpdGhvdXQgYSBob3N0bmFtZS4gKi8KKwkJc3RhdHVzID0gU0VD RmFpbHVyZTsKKwkJZ290byBkb25lOworCX0KKworCS8qCisJICogQ0VSVF9WZXJpZnlDZXJ0TmFt ZSB3aWxsIGludGVybmFsbHkgcGVyZm9ybSBSRkMgMjgxOCBTdWJqZWN0QWx0TmFtZQorCSAqIHZl cmlmaWNhdGlvbi4KKwkgKi8KKwlzZXJ2ZXJfY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUoY29u bi0+cHJfZmQpOworCXN0YXR1cyA9IENFUlRfVmVyaWZ5Q2VydE5hbWUoc2VydmVyX2NlcnQsIHNl cnZlcl9ob3N0bmFtZSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRm UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgi dW5hYmxlIHRvIHZlcmlmeSBzZXJ2ZXIgaG9zdG5hbWU6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVy cm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlnb3RvIGRvbmU7CisJfQorCisJc3RhdHVzID0g Q0VSVF9GaW5kQ2VydEV4dGVuc2lvbihzZXJ2ZXJfY2VydCwgU0VDX09JRF9YNTA5X1NVQkpFQ1Rf QUxUX05BTUUsCisJCQkJCQkJCQkmYWx0bmFtZV9pdGVtKTsKKwlpZiAoc3RhdHVzID09IFNFQ1N1 Y2Nlc3MpCisJeworCQlhcmVuYSA9IFBPUlRfTmV3QXJlbmEoREVSX0RFRkFVTFRfQ0hVTktTSVpF KTsKKwkJaWYgKCFhcmVuYSkKKwkJeworCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwkJCWdvdG8g ZG9uZTsKKwkJfQorCQlzYW5fbGlzdCA9IENFUlRfRGVjb2RlQWx0TmFtZUV4dGVuc2lvbihhcmVu YSwgJmFsdG5hbWVfaXRlbSk7CisJCWlmICghc2FuX2xpc3QpCisJCXsKKwkJCXN0YXR1cyA9IFNF Q0ZhaWx1cmU7CisJCQlnb3RvIGRvbmU7CisJCX0KKworCQlmb3IgKGNuID0gc2FuX2xpc3Q7IGNu ICE9IHNhbl9saXN0OyBjbiA9IENFUlRfR2V0TmV4dEdlbmVyYWxOYW1lKGNuKSkKKwkJeworCQkJ Y2hhcgkgICAqYWx0X25hbWU7CisJCQlpbnQJCQlydjsKKwkJCWNoYXIJCXRtcFs1MTJdOworCisJ CQlzdGF0dXMgPSBDRVJUX1JGQzE0ODVfRXNjYXBlQW5kUXVvdGUodG1wLCBzaXplb2YodG1wKSwK KwkJCQkJCQkJCQkJCSAoY2hhciAqKSBjbi0+bmFtZS5vdGhlci5kYXRhLAorCQkJCQkJCQkJCQkJ IGNuLT5uYW1lLm90aGVyLmxlbik7CisKKwkJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJ CQlnb3RvIGRvbmU7CisKKwkJCXJ2ID0gcHFfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRp ZmljYXRlX25hbWUoY29ubiwgdG1wLAorCQkJCQkJCQkJCQkJCQkJICBzdHJsZW4odG1wKSwKKwkJ CQkJCQkJCQkJCQkJCSAgJmFsdF9uYW1lKTsKKwkJCWlmIChhbHRfbmFtZSkKKwkJCXsKKwkJCQlp ZiAoISpmaXJzdF9uYW1lKQorCQkJCQkqZmlyc3RfbmFtZSA9IGFsdF9uYW1lOworCQkJCWVsc2UK KwkJCQkJZnJlZShhbHRfbmFtZSk7CisJCQl9CisKKwkJCWlmIChydiA9PSAxKQorCQkJCXN0YXR1 cyA9IFNFQ1N1Y2Nlc3M7CisJCQllbHNlCisJCQl7CisJCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsK KwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwllbHNlIGlmIChQT1JUX0dldEVycm9yKCkgPT0g U0VDX0VSUk9SX0VYVEVOU0lPTl9OT1RfRk9VTkQpCisJCXN0YXR1cyA9IFNFQ1N1Y2Nlc3M7CisJ ZWxzZQorCQlzdGF0dXMgPSBTRUNTdWNjZXNzOworCitkb25lOgorCS8qIHNhbl9saXN0IHdpbGwg YmUgZnJlZWQgYnkgZnJlZWluZyB0aGUgYXJlbmEgaXQgd2FzIGFsbG9jYXRlZCBpbiAqLworCWlm IChhcmVuYSkKKwkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RSVUUpOworCWlmIChzZXJ2ZXJf Y2VydCkKKwkJQ0VSVF9EZXN0cm95Q2VydGlmaWNhdGUoc2VydmVyX2NlcnQpOworCisJaWYgKHN0 YXR1cyA9PSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KKy8qCQkJUG9zdGdyZVNRTCBzcGVjaWZpYyBUTFMgc3VwcG9ydCBmdW5jdGlvbnMJCQkq LworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3BnX1NTTGVycm1lc3NhZ2UoUFJF cnJvckNvZGUgZXJyY29kZSkKK3sKKwljb25zdCBjaGFyICplcnJvcjsKKworCS8qCisJICogVHJ5 IHRvIGdldCB0aGUgdXNlciBmcmllbmRseSBlcnJvciBkZXNjcmlwdGlvbiwgYW5kIGlmIHRoYXQg ZmFpbHMgdHJ5CisJICogdG8gZmFsbCBiYWNrIG9uIHRoZSBuYW1lIG9mIHRoZSBQUkVycm9yQ29k ZS4KKwkgKi8KKwllcnJvciA9IFBSX0Vycm9yVG9TdHJpbmcoZXJyY29kZSwgUFJfTEFOR1VBR0Vf SV9ERUZBVUxUKTsKKwlpZiAoIWVycm9yKQorCQllcnJvciA9IFBSX0Vycm9yVG9OYW1lKGVycmNv ZGUpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJcmV0dXJuICJ1bmtub3duIFRM UyBlcnJvciI7Cit9CisKK3N0YXRpYyBTRUNTdGF0dXMKK3BnX2xvYWRfbnNzX21vZHVsZShTRUNN T0RNb2R1bGUgKiptb2R1bGUsIGNvbnN0IGNoYXIgKmxpYnJhcnksIGNvbnN0IGNoYXIgKm5hbWUp Cit7CisJU0VDTU9ETW9kdWxlICptb2Q7CisJY2hhcgkgICAqbW9kdWxlc3BlYzsKKworCW1vZHVs ZXNwZWMgPSBwc3ByaW50ZigibGlicmFyeT1cIiVzXCIsIG5hbWU9XCIlc1wiIiwgbGlicmFyeSwg bmFtZSk7CisKKwkvKgorCSAqIEF0dGVtcHQgdG8gbG9hZCB0aGUgc3BlY2lmaWVkIG1vZHVsZS4g VGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgInBhcmVudCIKKwkgKiB3aGljaCBzaG91bGQgYWx3YXlz IGJlIE5VTEwgZm9yIGFwcGxpY2F0aW9uIGNvZGUuIFRoZSB0aGlyZCBwYXJhbWV0ZXIKKwkgKiBk ZWZpbmVzIGlmIGxvYWRpbmcgc2hvdWxkIHJlY3Vyc2Ugd2hpY2ggaXMgb25seSBhcHBsaWNhYmxl IHdoZW4gbG9hZGluZworCSAqIGEgbW9kdWxlIGZyb20gd2l0aGluIGFub3RoZXIgbW9kdWxlLiBU aGlzIGhpZXJhcmNoeSB3b3VsZCBoYXZlIHRvIGJlCisJICogZGVmaW5lZCBpbiB0aGUgbW9kdWxl c3BlYywgYW5kIHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgYW55dGhpbmcgYnV0CisJICogZGlyZWN0 bHkgYWRkcmVzc2VkIG1vZHVsZXMgd2Ugc2hvdWxkIHBhc3MgUFJfRkFMU0UuCisJICovCisJbW9k ID0gU0VDTU9EX0xvYWRVc2VyTW9kdWxlKG1vZHVsZXNwZWMsIE5VTEwsIFBSX0ZBTFNFKTsKKwlw ZnJlZShtb2R1bGVzcGVjKTsKKworCWlmIChtb2QgJiYgbW9kLT5sb2FkZWQpCisJeworCQkqbW9k dWxlID0gbW9kOworCQlyZXR1cm4gU0VDU3VjY2VzczsKKwl9CisKKwlTRUNNT0RfRGVzdHJveU1v ZHVsZShtb2QpOworCXJldHVybiBTRUNGYWlsdXJlOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCQkJCQkJ TlNTIENhbGxiYWNrcwkJCQkJCQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBwZ19jZXJ0X2F1dGhf aGFuZGxlcgorICoJCQlDYWxsYmFjayBmb3IgYXV0aGVudGljYXRpbmcgc2VydmVyIGNlcnRpZmlj YXRlCisgKgorICogVGhpcyBpcyBwcmV0dHkgbXVjaCB0aGUgc2FtZSBwcm9jZWR1cmUgYXMgdGhl IFNTTF9BdXRoQ2VydGlmaWNhdGUgZnVuY3Rpb24KKyAqIHByb3ZpZGVkIGJ5IE5TUywgd2l0aCB0 aGUgZGlmZmVyZW5jZSBiZWluZyBzZXJ2ZXIgaG9zdG5hbWUgdmFsaWRhdGlvbi4gV2l0aAorICog U1NMX0F1dGhDZXJ0aWZpY2F0ZSB0aGVyZSBpcyBubyB3YXkgdG8gZG8gdmVyaWZ5LWNhLCBpdCBv bmx5IGRvZXMgdGhlIC1mdWxsCisgKiBmbGF2b3Igb2Ygb3VyIHNzbG1vZGVzLCBzbyB3ZSBuZWVk IG91ciBvd24gaW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyBTRUNTdGF0dXMKK3BnX2NlcnRf YXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAqZmQsIFBSQm9vbCBjaGVja3NpZywg UFJCb29sIGlzU2VydmVyKQoreworCVNFQ1N0YXR1cwlzdGF0dXM7CisJUEdjb25uCSAgICpjb25u ID0gKFBHY29ubiAqKSBhcmc7CisJQ0VSVENlcnRpZmljYXRlICpzZXJ2ZXJfY2VydDsKKwl2b2lk CSAgICpwaW47CisKKwlBc3NlcnQoIWlzU2VydmVyKTsKKworCXBpbiA9IFNTTF9SZXZlYWxQaW5B cmcoY29ubi0+cHJfZmQpOworCXNlcnZlcl9jZXJ0ID0gU1NMX1BlZXJDZXJ0aWZpY2F0ZShjb25u LT5wcl9mZCk7CisKKwkvKgorCSAqIFZlcmlmeUNlcnRpZmljYXRlTm93IHZlcmlmaWVzIHRoZSB2 YWxpZGl0eSB1c2luZyBQUl9ub3cgZnJvbSBOU1BSIGFzIGEKKwkgKiB0aW1lc3RhbXAgYW5kIHdp bGwgcGVyZm9ybSBDUkwgYW5kIE9TQ1AgcmV2b2NhdGlvbiBjaGVja3MuIGNvbm4tPnNzbGNybAor CSAqIGRvZXMgbm90IGltcGFjdCBOU1MgY29ubmVjdGlvbnMgYXMgYW55IENSTCBpbiB0aGUgTlNT IGRhdGFiYXNlIHdpbGwgYmUKKwkgKiB1c2VkIGF1dG9tYXRpY2FsbHkuCisJICovCisJc3RhdHVz ID0gQ0VSVF9WZXJpZnlDZXJ0aWZpY2F0ZU5vdygoQ0VSVENlcnREQkhhbmRsZSAqKSBDRVJUX0dl dERlZmF1bHRDZXJ0REIoKSwKKwkJCQkJCQkJCSAgIHNlcnZlcl9jZXJ0LAorCQkJCQkJCQkJICAg Y2hlY2tzaWcsCisJCQkJCQkJCQkgICBjZXJ0aWZpY2F0ZVVzYWdlU1NMU2VydmVyLAorCQkJCQkJ CQkJICAgcGluLAorCQkJCQkJCQkJICAgTlVMTCk7CisKKwkvKgorCSAqIElmIHdlJ3ZlIGFscmVh ZHkgZmFpbGVkIHZhbGlkYXRpb24gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiBhbHNvCisJICog cGVyZm9ybWluZyB0aGUgaG9zdG5hbWUgY2hlY2sgZm9yIHZlcmlmeS1mdWxsLgorCSAqLworCWlm IChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwl7CisJCWlmICghcHFfdmVyaWZ5X3BlZXJfbmFtZV9t YXRjaGVzX2NlcnRpZmljYXRlKGNvbm4pKQorCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwl9CisK KwlDRVJUX0Rlc3Ryb3lDZXJ0aWZpY2F0ZShzZXJ2ZXJfY2VydCk7CisJcmV0dXJuIHN0YXR1czsK K30KKworLyoKKyAqIHBnX2NsaWVudF9hdXRoX2hhbmRsZXIKKyAqCQlDYWxsYmFjayBmb3IgY2xp ZW50IGNlcnRpZmljYXRlIHZhbGlkYXRpb24KKyAqCisgKiBUaGUgY2xpZW50IGF1dGggY2FsbGJh Y2sgaXMgbm90IG9uIGJ5IGRlZmF1bHQgaW4gTlNTLCBzbyB3ZSBuZWVkIHRvIGludm9rZQorICog aXQgb3Vyc2VsdmVzIHRvIGVuc3VyZSB3ZSBjYW4gZG8gY2VydCBhdXRoZW50aWNhdGlvbi4KKyAq Lworc3RhdGljIFNFQ1N0YXR1cworcGdfY2xpZW50X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBS RmlsZURlc2MgKnNvY2tldCwgQ0VSVERpc3ROYW1lcyAqY2FOYW1lcywKKwkJCQkJICAgQ0VSVENl cnRpZmljYXRlICoqcFJldENlcnQsIFNFQ0tFWVByaXZhdGVLZXkgKipwUmV0S2V5KQoreworCVBH Y29ubgkgICAqY29ubiA9IChQR2Nvbm4gKikgYXJnOworCWNoYXIJICAgKm5ucHRyID0gTlVMTDsK KwljaGFyCQluaWNrbmFtZVtNQVhQR1BBVEhdOworCisJLyoKKwkgKiBJZiB3ZSBoYXZlIGFuIHNz bGNlcnQgY29uZmlndXJlZCB3ZSB1c2UgdGhhdCBjb21iaW5lZCB3aXRoIHRoZSB0b2tlbi0KKwkg KiBuYW1lIGFzIHRoZSBuaWNrbmFtZS4gV2hlbiBubyBzc2xjZXJ0IGlzIHNldCB3ZSBwYXNzIGlu IE5VTEwgYW5kIGxldAorCSAqIE5TUyB0cnkgdG8gZmluZCB0aGUgY2VydGlmaWNhdGUgYW1vbmcg dGhlIG9uZXMgcHJlc2VudCBpbiB0aGUgZGF0YWJhc2UuCisJICogV2l0aG91dCBhbiBzc2xjZXJ0 IHdlIGNhbm5vdCBzZXQgdGhlIGRhdGFiYXNlIHRva2VuIHNpbmNlIE5TUyBwYXJzZXMKKwkgKiB0 aGUgZ2l2ZW4gc3RyaW5nIGV4cGVjdGluZyB0byBmaW5kIGEgY2VydGlmaWNhdGUgbmlja25hbWUg YWZ0ZXIgdGhlCisJICogY29sb24uCisJICovCisJaWYgKGNvbm4tPnNzbGNlcnQpCisJeworCQlz bnByaW50ZihuaWNrbmFtZSwgc2l6ZW9mKG5pY2tuYW1lKSwgInBvc3RncmVzOiVzIiwgY29ubi0+ c3NsY2VydCk7CisJCW5ucHRyID0gbmlja25hbWU7CisJfQorCisJcmV0dXJuIE5TU19HZXRDbGll bnRBdXRoRGF0YShubnB0ciwgc29ja2V0LCBjYU5hbWVzLCBwUmV0Q2VydCwgcFJldEtleSk7Cit9 CisKKy8qCisgKiBwZ19iYWRfY2VydF9oYW5kbGVyCisgKgkJQ2FsbGJhY2sgZm9yIGZhaWxlZCBj ZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uCisgKgorICogVGhlIFRMUyBoYW5kc2hha2Ugd2lsbCBjYWxs IHRoaXMgZnVuY3Rpb24gaWZmIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgZmFpbGVkCisgKiB2YWxp ZGF0aW9uLiBEZXBlbmRpbmcgb24gdGhlIHNzbG1vZGUsIHdlIGFsbG93IHRoZSBjb25uZWN0aW9u IGFueXdheXMuCisgKi8KK3N0YXRpYyBTRUNTdGF0dXMKK3BnX2JhZF9jZXJ0X2hhbmRsZXIodm9p ZCAqYXJnLCBQUkZpbGVEZXNjICpmZCkKK3sKKwlQR2Nvbm4JICAgKmNvbm4gPSAoUEdjb25uICop IGFyZzsKKwlQUkVycm9yQ29kZSBlcnI7CisKKwkvKgorCSAqIFRoaXMgcmVhbGx5IHNob3VsZG4n dCBoYXBwZW4sIGFzIHdlJ3ZlIHNldCB0aGUgUEdjb25uIG9iamVjdCBhcyBvdXIKKwkgKiBjYWxs YmFjayBkYXRhLCBhbmQgYXQgdGhlIGNhbGxzaXRlIHdlIGtub3cgaXQgd2lsbCBiZSBwb3B1bGF0 ZWQuIFRoYXQKKwkgKiBiZWluZyBzYWlkLCB0aGUgTlNTIGNvZGUgaXRzZWxmIHBlcmZvcm1zIHRo aXMgY2hlY2sgZXZlbiB3aGVuIGl0IHNob3VsZAorCSAqIG5vdCBiZSByZXF1aXJlZCBzbyBsZXQn cyB1c2UgdGhlIHNhbWUgYmVsdHMgd2l0aCBvdXIgc3VzcGVuZGVycy4KKwkgKi8KKwlpZiAoIWFy ZykKKwkJcmV0dXJuIFNFQ0ZhaWx1cmU7CisKKwllcnIgPSBQT1JUX0dldEVycm9yKCk7CisKKwkv KgorCSAqIEZvciBzc2xtb2RlcyBvdGhlciB0aGFuIHZlcmlmeS1mdWxsIGFuZCB2ZXJpZnktY2Eg d2UgZG9uJ3QgcGVyZm9ybSBwZWVyCisJICogdmFsaWRhdGlvbiwgc28gcmV0dXJuIGltbWVkaWF0 ZWx5LiAgc3NsbW9kZSByZXF1aXJlIHdpdGggYSBkYXRhYmFzZQorCSAqIHNwZWNpZmllZCB3aGlj aCBjb250YWlucyBhIENBIGNlcnRpZmljYXRlIHdpbGwgd29yayBsaWtlIHZlcmlmeS1jYSB0bwor CSAqIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8K KwlpZiAoc3RyY21wKGNvbm4tPnNzbG1vZGUsICJyZXF1aXJlIikgPT0gMCkKKwl7CisJCWlmIChj b25uLT5zc2xkYXRhYmFzZSAmJgorCQkJc3RybGVuKGNvbm4tPnNzbGRhdGFiYXNlKSA+IDAgJiYK KwkJCWNlcnRpZmljYXRlX2RhdGFiYXNlX2hhc19DQShjb25uKSkKKwkJCWdvdG8gZmFpbHVyZTsK Kwl9CisJZWxzZSBpZiAoc3RyY21wKGNvbm4tPnNzbG1vZGUsICJ2ZXJpZnktZnVsbCIpID09IDAg fHwKKwkJCSBzdHJjbXAoY29ubi0+c3NsbW9kZSwgInZlcmlmeS1jYSIpID09IDApCisJCWdvdG8g ZmFpbHVyZTsKKworCS8qCisJICogVE9ETzogdGhlc2UgYXJlIHJlbGV2YW50IGVycm9yIGNvZGVz IHRoYXQgY2FuIG9jY3VyIGluIGNlcnRpZmljYXRlCisJICogdmFsaWRhdGlvbiwgZmlndXJlIG91 dCB3aGljaCB3ZSBkb24ndCB3YW50IGZvciByZXF1aXJlL3ByZWZlciBldGMuCisJICovCisJc3dp dGNoIChlcnIpCisJeworCQljYXNlIFNFQ19FUlJPUl9JTlZBTElEX0FWQToKKwkJY2FzZSBTRUNf RVJST1JfSU5WQUxJRF9USU1FOgorCQljYXNlIFNFQ19FUlJPUl9CQURfU0lHTkFUVVJFOgorCQlj YXNlIFNFQ19FUlJPUl9FWFBJUkVEX0NFUlRJRklDQVRFOgorCQljYXNlIFNFQ19FUlJPUl9VTktO T1dOX0lTU1VFUjoKKwkJY2FzZSBTRUNfRVJST1JfVU5UUlVTVEVEX0lTU1VFUjoKKwkJY2FzZSBT RUNfRVJST1JfVU5UUlVTVEVEX0NFUlQ6CisJCWNhc2UgU0VDX0VSUk9SX0NFUlRfVkFMSUQ6CisJ CWNhc2UgU0VDX0VSUk9SX0VYUElSRURfSVNTVUVSX0NFUlRJRklDQVRFOgorCQljYXNlIFNFQ19F UlJPUl9DUkxfRVhQSVJFRDoKKwkJY2FzZSBTRUNfRVJST1JfQ1JMX0JBRF9TSUdOQVRVUkU6CisJ CWNhc2UgU0VDX0VSUk9SX0VYVEVOU0lPTl9WQUxVRV9JTlZBTElEOgorCQljYXNlIFNFQ19FUlJP Ul9DQV9DRVJUX0lOVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX0NFUlRfVVNBR0VTX0lOVkFMSUQ6 CisJCWNhc2UgU0VDX0VSUk9SX1VOS05PV05fQ1JJVElDQUxfRVhURU5TSU9OOgorCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlnb3RvIGZhaWx1cmU7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g U0VDU3VjY2VzczsKKworZmFpbHVyZToKKwlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAorCQkJCQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byB2ZXJpZnkgY2VydGlmaWNh dGU6ICVzIiksCisJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShlcnIpKTsKKworCXJldHVybiBTRUNG YWlsdXJlOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCQkJCQlTU0wgaW5mb3JtYXRpb24gZnVuY3Rpb25z CQkJCQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBQUWdldHNzbAorICoKKyAqIFJldHVybiBOVUxM IGFzIHRoaXMgaXMgbGVnYWN5IGFuZCBkZWZpbmVkIHRvIGFsd2F5cyBiZSBlcXVhbCB0byBjYWxs aW5nCisgKiBQUXNzbFN0cnVjdChjb25uLCAiT3BlblNTTCIpOyBUaGlzIHNob3VsZCBpZGVhbGx5 IHRyaWdnZXIgYSBsb2dnZWQgd2FybmluZworICogc29tZXdoZXJlIGFzIGl0J3Mgbm9uc2Vuc2lj YWwgdG8gcnVuIGluIGEgbm9uLU9wZW5TU0wgYnVpbGQuCisgKi8KK3ZvaWQgKgorUFFnZXRzc2wo UEdjb25uICpjb25uKQoreworCXJldHVybiBOVUxMOworfQorCit2b2lkICoKK1BRc3NsU3RydWN0 KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RydWN0X25hbWUpCit7CisJaWYgKCFjb25uKQor CQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogUmV0dXJuIHRoZSB1bmRlcmx5aW5nIFBSRmlsZURl c2Mgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYWNjZXNzCisJICogaW5mb3JtYXRpb24gb24gdGhlIGNv bm5lY3Rpb24gZGV0YWlscy4gVGhlcmUgaXMgbm8gU1NMIGNvbnRleHQgcGVyIHNlLgorCSAqLwor CWlmIChzdHJjbXAoc3RydWN0X25hbWUsICJOU1MiKSA9PSAwKQorCQlyZXR1cm4gY29ubi0+cHJf ZmQ7CisJcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IGNoYXIgKmNvbnN0ICoKK1BRc3NsQXR0cmli dXRlTmFtZXMoUEdjb25uICpjb25uKQoreworCXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCByZXN1 bHRbXSA9IHsKKwkJImxpYnJhcnkiLAorCQkiY2lwaGVyIiwKKwkJInByb3RvY29sIiwKKwkJImtl eV9iaXRzIiwKKwkJImNvbXByZXNzaW9uIiwKKwkJTlVMTAorCX07CisKKwlyZXR1cm4gcmVzdWx0 OworfQorCitjb25zdCBjaGFyICoKK1BRc3NsQXR0cmlidXRlKFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqYXR0cmlidXRlX25hbWUpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlTU0xDaGFubmVs SW5mbyBjaGFubmVsOworCVNTTENpcGhlclN1aXRlSW5mbyBzdWl0ZTsKKworCWlmICghY29ubiB8 fCAhY29ubi0+cHJfZmQpCisJCXJldHVybiBOVUxMOworCisJaWYgKHN0cmNtcChhdHRyaWJ1dGVf bmFtZSwgImxpYnJhcnkiKSA9PSAwKQorCQlyZXR1cm4gIk5TUyI7CisKKwlzdGF0dXMgPSBTU0xf R2V0Q2hhbm5lbEluZm8oY29ubi0+cHJfZmQsICZjaGFubmVsLCBzaXplb2YoY2hhbm5lbCkpOwor CWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIE5VTEw7CisKKwlzdGF0dXMgPSBT U0xfR2V0Q2lwaGVyU3VpdGVJbmZvKGNoYW5uZWwuY2lwaGVyU3VpdGUsICZzdWl0ZSwgc2l6ZW9m KHN1aXRlKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gTlVMTDsKKwor CWlmIChzdHJjbXAoYXR0cmlidXRlX25hbWUsICJjaXBoZXIiKSA9PSAwKQorCQlyZXR1cm4gc3Vp dGUuY2lwaGVyU3VpdGVOYW1lOworCisJaWYgKHN0cmNtcChhdHRyaWJ1dGVfbmFtZSwgImtleV9i aXRzIikgPT0gMCkKKwl7CisJCXN0YXRpYyBjaGFyIGtleV9iaXRzX3N0cls4XTsKKworCQlzbnBy aW50ZihrZXlfYml0c19zdHIsIHNpemVvZihrZXlfYml0c19zdHIpLCAiJWkiLCBzdWl0ZS5lZmZl Y3RpdmVLZXlCaXRzKTsKKwkJcmV0dXJuIGtleV9iaXRzX3N0cjsKKwl9CisKKwlpZiAoc3RyY21w KGF0dHJpYnV0ZV9uYW1lLCAicHJvdG9jb2wiKSA9PSAwKQorCQlyZXR1cm4gc3NsX3Byb3RvY29s X3ZlcnNpb25fdG9fc3RyaW5nKGNoYW5uZWwucHJvdG9jb2xWZXJzaW9uKTsKKworCS8qCisJICog TlNTIGRpc2FibGVkIHN1cHBvcnQgZm9yIGNvbXByZXNzaW9uIGluIHZlcnNpb24gMy4zMywgYW5k IGl0IHdhcyBvbmx5CisJICogYXZhaWxhYmxlIGZvciBTU0x2MyBhdCB0aGF0IHBvaW50IGFueXdh eXMsIHNvIHdlIGNhbiBzYWZlbHkgcmV0dXJuIG9mZgorCSAqIGhlcmUgd2l0aG91dCBldmVuIGNo ZWNraW5nLgorCSAqLworCWlmIChzdHJjbXAoYXR0cmlidXRlX25hbWUsICJjb21wcmVzc2lvbiIp ID09IDApCisJCXJldHVybiAib2ZmIjsKKworCXJldHVybiBOVUxMOworfQorCisvKgorICogc3Ns X3Byb3RvY29sX3BhcmFtX3RvX25zcworICoKKyAqIFJldHVybiB0aGUgTlNTIGludGVybmFsIHJl cHJlc2VudGF0aW9uIG9mIHRoZSBwcm90b2NvbCBhc2tlZCBmb3IgYnkgdGhlCisgKiB1c2VyIGFz IGEgY29ubmVjdGlvbiBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBpbnQKK3NzbF9wcm90b2NvbF9w YXJhbV90b19uc3MoY29uc3QgY2hhciAqcHJvdG9jb2wpCit7CisJaWYgKHBnX3N0cmNhc2VjbXAo IlRMU3YxIiwgcHJvdG9jb2wpID09IDApCisJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RM U18xXzA7CisKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKKwlpZiAocGdfc3Ry Y2FzZWNtcCgiVExTdjEuMSIsIHByb3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJBUllf VkVSU0lPTl9UTFNfMV8xOworI2VuZGlmCisKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RM U18xXzIKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEuMiIsIHByb3RvY29sKSA9PSAwKQorCQly ZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8yOworI2VuZGlmCisKKyNpZmRlZiBTU0xf TElCUkFSWV9WRVJTSU9OX1RMU18xXzMKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEuMyIsIHBy b3RvY29sKSA9PSAwKQorCQlyZXR1cm4gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOworI2Vu ZGlmCisKKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBjZXJ0aWZpY2F0ZV9kYXRhYmFzZV9oYXNf Q0EKKyAqCQkgQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBhIENBIGNlcnRpZmljYXRlCisgKgor ICogUmV0dXJucyB0cnVlIGluIGNhc2UgdGhlcmUgaXMgYSBDQSBjZXJ0aWZpY2F0ZSBpbiB0aGUg ZGF0YWJhc2UgY29ubmVjdGVkCisgKiB0byBpbiB0aGUgY29ubiBvYmplY3QsIGVsc2UgZmFsc2Uu IFRoaXMgZnVuY3Rpb24gb25seSBjaGVja3MgZm9yIHRoZQorICogcHJlc2VuY2Ugb2YgYSBDQSBj ZXJ0aWZpY2F0ZSwgbm90IGl0cyB2YWxpZGl0eSBhbmQvb3IgdXNlZnVsbmVzcy4KKyAqLworc3Rh dGljIGJvb2wKK2NlcnRpZmljYXRlX2RhdGFiYXNlX2hhc19DQShQR2Nvbm4gKmNvbm4pCit7CisJ Q0VSVENlcnRMaXN0ICpjZXJ0aWZpY2F0ZXM7CisJYm9vbAkJaGFzQ0E7CisKKwkvKgorCSAqIElm IHRoZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBoYXMgYSBwYXNzd29yZCB3ZSBtdXN0IHByb3ZpZGUg aXQsIHNpbmNlCisJICogdGhpcyBBUEkgZG9lc24ndCBpbnZva2UgdGhlIHN0YW5kYXJkIHBhc3N3 b3JkIGNhbGxiYWNrLgorCSAqLworCWlmIChjb25uLT5oYXNfcGFzc3dvcmQpCisJCWNlcnRpZmlj YXRlcyA9IFBLMTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlzdENBLCBQUXNzbF9wYXNzd2RfY2IoTlVM TCwgUFJfRkFMU0UsICh2b2lkICopIGNvbm4pKTsKKwllbHNlCisJCWNlcnRpZmljYXRlcyA9IFBL MTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlzdENBLCBOVUxMKTsKKwloYXNDQSA9ICFDRVJUX0xJU1Rf RU1QVFkoY2VydGlmaWNhdGVzKTsKKwlDRVJUX0Rlc3Ryb3lDZXJ0TGlzdChjZXJ0aWZpY2F0ZXMp OworCisJcmV0dXJuIGhhc0NBOworfQorCitQUXNzbEtleVBhc3NIb29rX25zc190eXBlCitQUWdl dFNTTEtleVBhc3NIb29rX25zcyh2b2lkKQoreworCXJldHVybiBQUXNzbEtleVBhc3NIb29rOwor fQorCit2b2lkCitQUXNldFNTTEtleVBhc3NIb29rX25zcyhQUXNzbEtleVBhc3NIb29rX25zc190 eXBlIGhvb2spCit7CisJUFFzc2xLZXlQYXNzSG9vayA9IGhvb2s7Cit9CisKKy8qCisgKiBQUXNz bF9wYXNzd2RfY2IKKyAqCQkgU3VwcGx5IGEgcGFzc3dvcmQgdG8gZGVjcnlwdCBhbiBvYmplY3QK KyAqCisgKiBJZiBhbiBvYmplY3QgaW4gdGhlIE5TUyBkYXRhYmFzZSBpcyBwYXNzd29yZCBwcm90 ZWN0ZWQsIG9yIGlmIHRoZSBlbnRpcmUKKyAqIE5TUyBkYXRhYmFzZSBpcyBpdHNlbGYgcGFzc3dv cmQgcHJvdGVjdGVkLCB0aGlzIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZC4KKyAqCisgKiBUaGlz IG11c3QgbWF0Y2ggTlNTIHR5cGUgUEsxMVBhc3N3b3JkRnVuYy4KKyAqLworc3RhdGljIGNoYXIg KgorUFFzc2xfcGFzc3dkX2NiKFBLMTFTbG90SW5mbyAqc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lk ICphcmcpCit7CisJUEdjb25uCSAgICpjb25uID0gKFBHY29ubiAqKSBhcmc7CisKKwljb25uLT5o YXNfcGFzc3dvcmQgPSB0cnVlOworCisJaWYgKFBRc3NsS2V5UGFzc0hvb2spCisJCXJldHVybiBQ UXNzbEtleVBhc3NIb29rKHNsb3QsIChQUkJvb2wpIHJldHJ5LCBhcmcpOworCWVsc2UKKwkJcmV0 dXJuIFBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcyhzbG90LCByZXRyeSwgYXJnKTsKK30KKwor LyoKKyAqIFBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcworICogCQkgRGVmYXVsdCBwYXNzd29y ZCBoYW5kbGVyIGNhbGxiYWNrCisgKgorICogSWYgbm8gdXNlciBkZWZpbmVkIHBhc3N3b3JkIGNh bGxiYWNrIGhhcyBiZWVuIHNldCB1cCwgdGhlIGNhbGxiYWNrIGJlbG93CisgKiB3aWxsIHRyeSB0 aGUgcGFzc3dvcmQgc2V0IGJ5IHRoZSBzc2xwYXNzd29yZCBwYXJhbWV0ZXIuIFNpbmNlIHdlIGJ5 IGxlZ2FjeQorICogb25seSBoYXZlIHN1cHBvcnQgZm9yIGEgc2luZ2xlIHBhc3N3b3JkLCB0aGVy ZSBpcyBsaXR0bGUgcmVhc29uIHRvIGluc3BlY3QKKyAqIHRoZSBzbG90IGZvciB0aGUgb2JqZWN0 IGluIHF1ZXN0aW9uLiBBIFRPRE8gaXMgdG8gc3VwcG9ydCBkaWZmZXJlbnQKKyAqIHBhc3N3b3Jk cyBmb3IgZGlmZmVyZW50IG9iamVjdHMsIGVpdGhlciB2aWEgYSBEU0wgaW4gc3NscGFzc3dvcmQg b3Igd2l0aCBhCisgKiBuZXcga2V5L3ZhbHVlIHN0eWxlIHBhcmFtZXRlci4gVXNlcnMgY2FuIHN1 cHBseSB0aGVpciBvd24gcGFzc3dvcmQgaG9vayB0bworICogZG8gdGhpcyBvZiBjb3Vyc2UsIGJ1 dCBpdCB3b3VsZCBiZSBuaWNlIHRvIHN1cHBvcnQgc29tZXRoaW5nIGluIGNvcmUgdG9vLgorICov CitjaGFyICoKK1BRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcyhQSzExU2xvdEluZm8gKnNsb3Qs IFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKQoreworCVBHY29ubgkgICAqY29ubiA9IChQR2Nvbm4g KikgYXJnOworCisJLyoKKwkgKiBJZiB0aGUgcGFzc3dvcmQgZGlkbid0IHdvcmsgdGhlIGZpcnN0 IHRpbWUgdGhlcmUgaXMgbm8gcG9pbnQgaW4KKwkgKiByZXRyeWluZyBhcyBpdCBoYXNuJ3QgY2hh bmdlZC4KKwkgKi8KKwlpZiAocmV0cnkgIT0gUFJfVFJVRSAmJiBjb25uLT5zc2xwYXNzd29yZCAm JiBzdHJsZW4oY29ubi0+c3NscGFzc3dvcmQpID4gMCkKKwkJcmV0dXJuIFBPUlRfU3RyZHVwKGNv bm4tPnNzbHBhc3N3b3JkKTsKKworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUuYwppbmRleCBiMTVkOGQxMzdjLi5kNzZlYjQ4MDZmIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1zZWN1cmUuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUuYwpAQCAtNDQ3LDYgKzQ0NywyNyBAQCBQUWRlZmF1bHRTU0xLZXlQYXNzSG9va19PcGVuU1NM KGNoYXIgKmJ1ZiwgaW50IHNpemUsIFBHY29ubiAqY29ubikKIH0KICNlbmRpZgkJCQkJCQkvKiBV U0VfT1BFTlNTTCAqLwogCisjaWZuZGVmIFVTRV9OU1MKKworUFFzc2xLZXlQYXNzSG9va19uc3Nf dHlwZQorUFFnZXRTU0xLZXlQYXNzSG9va19uc3Modm9pZCkKK3sKKwlyZXR1cm4gTlVMTDsKK30K Kwordm9pZAorUFFzZXRTU0xLZXlQYXNzSG9va19uc3MoUFFzc2xLZXlQYXNzSG9va19uc3NfdHlw ZSBob29rKQoreworCXJldHVybjsKK30KKworY2hhciAqCitQUWRlZmF1bHRTU0xLZXlQYXNzSG9v a19uc3MoUEsxMVNsb3RJbmZvICogc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICphcmcpCit7CisJ cmV0dXJuIE5VTEw7Cit9CisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLworCiAvKiBEdW1teSB2 ZXJzaW9uIG9mIEdTU0FQSSBpbmZvcm1hdGlvbiBmdW5jdGlvbnMsIHdoZW4gYnVpbHQgd2l0aG91 dCBHU1Mgc3VwcG9ydCAqLwogI2lmbmRlZiBFTkFCTEVfR1NTCiAKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1m ZS5oCmluZGV4IGE2ZmQ2OWFjZWIuLjE4NmUwYTI4ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUu aApAQCAtNjY1LDYgKzY2NSwxNyBAQCBleHRlcm4gUFFzc2xLZXlQYXNzSG9va19PcGVuU1NMX3R5 cGUgUFFnZXRTU0xLZXlQYXNzSG9va19PcGVuU1NMKHZvaWQpOwogZXh0ZXJuIHZvaWQgUFFzZXRT U0xLZXlQYXNzSG9va19PcGVuU1NMKFBRc3NsS2V5UGFzc0hvb2tfT3BlblNTTF90eXBlIGhvb2sp OwogZXh0ZXJuIGludAlQUWRlZmF1bHRTU0xLZXlQYXNzSG9va19PcGVuU1NMKGNoYXIgKmJ1Ziwg aW50IHNpemUsIFBHY29ubiAqY29ubik7CiAKKy8qID09IGluIGZlLXNlY3VyZS1uc3MuYyA9PT0g Ki8KK3R5cGVkZWYgc3RydWN0IFBLMTFTbG90SW5mb1N0ciBQSzExU2xvdEluZm87Cit0eXBlZGVm IGludCBQUkludG47Cit0eXBlZGVmIFBSSW50biBQUkJvb2w7CisKKy8qIFN1cHBvcnQgZm9yIG92 ZXJyaWRpbmcgc3NscGFzc3dvcmQgaGFuZGxpbmcgd2l0aCBhIGNhbGxiYWNrICovCit0eXBlZGVm IGNoYXIgKigqUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZSkgKFBLMTFTbG90SW5mbyAqc2xvdCwg UFJCb29sIHJldHJ5LCB2b2lkICphcmcpOworZXh0ZXJuIFBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5 cGUgUFFnZXRTU0xLZXlQYXNzSG9va19uc3Modm9pZCk7CitleHRlcm4gdm9pZCBQUXNldFNTTEtl eVBhc3NIb29rX25zcyhQUXNzbEtleVBhc3NIb29rX25zc190eXBlIGhvb2spOworZXh0ZXJuIGNo YXIgKlBRZGVmYXVsdFNTTEtleVBhc3NIb29rX25zcyhQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9v bCByZXRyeSwgdm9pZCAqYXJnKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlm ZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvbGlicHEtaW50LmgKaW5kZXggNDkwNDU4YWRlZi4uYWIwZGExMzcwMCAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTgxLDYgKzgxLDEwIEBAIHR5cGVkZWYgc3RydWN0CiAj ZW5kaWYKICNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNTTCAqLwogCisjaWZkZWYgVVNFX05TUwor I2luY2x1ZGUgImNvbW1vbi9uc3MuaCIKKyNlbmRpZgorCiAvKgogICogUE9TVEdSRVMgYmFja2Vu ZCBkZXBlbmRlbnQgQ29uc3RhbnRzLgogICovCkBAIC0zODUsNiArMzg5LDcgQEAgc3RydWN0IHBn X2Nvbm4KIAljaGFyCSAgICpzc2xjcmw7CQkJLyogY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0 IGZpbGVuYW1lICovCiAJY2hhcgkgICAqc3NsY3JsZGlyOwkJLyogY2VydGlmaWNhdGUgcmV2b2Nh dGlvbiBsaXN0IGRpcmVjdG9yeSBuYW1lICovCiAJY2hhcgkgICAqc3Nsc25pOwkJCS8qIHVzZSBT U0wgU05JIGV4dGVuc2lvbiAoMCBvciAxKSAqLworCWNoYXIJICAgKnNzbGRhdGFiYXNlOwkvKiBO U1MgY2VydGlmaWNhdGUva2V5IGRhdGFiYXNlICovCiAJY2hhcgkgICAqcmVxdWlyZXBlZXI7CS8q IHJlcXVpcmVkIHBlZXIgY3JlZGVudGlhbHMgZm9yIGxvY2FsIHNvY2tldHMgKi8KIAljaGFyCSAg ICpnc3NlbmNtb2RlOwkJLyogR1NTIG1vZGUgKHJlcXVpcmUscHJlZmVyLGRpc2FibGUpICovCiAJ Y2hhcgkgICAqa3Jic3J2bmFtZTsJCS8qIEtlcmJlcm9zIHNlcnZpY2UgbmFtZSAqLwpAQCAtNTI2 LDYgKzUzMSwyOCBAQCBzdHJ1Y3QgcGdfY29ubgogCQkJCQkJCQkgKiByZW1vdmVkIGFzIHRoaXMg bG9ja2luZyBpcyBoYW5kbGVkCiAJCQkJCQkJCSAqIGludGVybmFsbHkgaW4gT3BlblNTTCA+PSAx LjEuMC4gKi8KICNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNTTCAqLworCisvKgorICogVGhlIE5T Uy9OU1BSIHNwZWNpZmljIHR5cGVzIGFyZW4ndCB1c2VkIHRvIGF2b2lkIHB1bGxpbmcgaW4gdGhl IHJlcXVpcmVkCisgKiBoZWFkZXJzIGhlcmUsIGFzIHRoZXkgYXJlIGNhdXNpbmcgY29uZmxpY3Rz IHdpdGggUEcgZGVmaW5pdGlvbnMuCisgKi8KKyNpZmRlZiBVU0VfTlNTCisJTlNTSW5pdENvbnRl eHQJICAgKm5zc19jb250ZXh0OwkvKiBOU1MgY29ubmVjdGlvbiBzcGVjaWZpYyBjb250ZXh0ICov CisJUFJGaWxlRGVzYwkJICAgKnByX2ZkOwkJCS8qIE5TUFIgZmlsZSBkZXNjcmlwdG9yIGZvciB0 aGUgY29ubmVjdGlvbiAqLworCisJLyoKKwkgKiBUcmFjayB3aGV0aGVyIHRoZSBOU1MgZGF0YWJh c2UgaGFzIGEgcGFzc3dvcmQgc2V0IG9yIG5vdC4gVGhlcmUgaXMgbm8KKwkgKiBBUEkgZnVuY3Rp b24gZm9yIHJldHJpZXZpbmcgcGFzc3dvcmQgc3RhdHVzIG9mIGEgZGF0YWJhc2UsIGJ1dCB3ZSBu ZWVkCisJICogdG8ga25vdyBzaW5jZSBzb21lIE5TUyBBUEkgY2FsbHMgcmVxdWlyZSB0aGUgcGFz c3dvcmQgcGFzc2VkIGluICh0aGV5CisJICogZG9uJ3QgY2FsbCB0aGUgY2FsbGJhY2sgdGhlbXNl bHZlcykuIFRvIHRyYWNrLCB3ZSBzaW1wbHkgZmxpcCB0aGlzIHRvCisJICogdHJ1ZSBpbiBjYXNl IE5TUyBpbnZva2VkIHRoZSBwYXNzd29yZCBjYWxsYmFjayAtIGFzIHRoYXQgd2lsbCBvbmx5CisJ ICogaGFwcGVuIGluIGNhc2UgdGhlcmUgaXMgYSBwYXNzd29yZC4gVGhlIHJlYXNvbiBmb3IgdHJh Y2tpbmcgdGhpcyBpcworCSAqIHRoYXQgdGhlcmUgYXJlIGNhbGxzIHdoaWNoIHJlcXVpcmUgYSBw YXNzd29yZCBwYXJhbWV0ZXIsIGJ1dCBkb2Vzbid0CisJICogdXNlIHRoZSBjYWxsYmFja3MgcHJv dmlkZWQsIHNvIHdlIG11c3QgY2FsbCB0aGUgY2FsbGJhY2sgb24gYmVoYWxmIG9mCisJICogdGhl c2UuCisJICovCisJYm9vbAkJaGFzX3Bhc3N3b3JkOworI2VuZGlmCQkJCQkJCS8qIFVTRV9OU1Mg Ki8KICNlbmRpZgkJCQkJCQkvKiBVU0VfU1NMICovCiAKICNpZmRlZiBFTkFCTEVfR1NTCkBAIC03 ODAsNyArODA3LDcgQEAgZXh0ZXJuIHNzaXplX3QgcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBj b25zdCB2b2lkICpwdHIsIHNpemVfdCBsZW4pOwogICogVGhpcyBpcyBub3Qgc3VwcG9ydGVkIHdp dGggb2xkIHZlcnNpb25zIG9mIE9wZW5TU0wgdGhhdCBkb24ndCBoYXZlCiAgKiB0aGUgWDUwOV9n ZXRfc2lnbmF0dXJlX25pZCgpIGZ1bmN0aW9uLgogICovCi0jaWYgZGVmaW5lZChVU0VfT1BFTlNT TCkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQpCisjaWYgZGVmaW5lZChV U0VfTlNTKSB8fCAoZGVmaW5lZChVU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX1g1MDlfR0VU X1NJR05BVFVSRV9OSUQpKQogI2RlZmluZSBIQVZFX1BHVExTX0dFVF9QRUVSX0NFUlRJRklDQVRF X0hBU0gKIGV4dGVybiBjaGFyICpwZ3Rsc19nZXRfcGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29u biAqY29ubiwgc2l6ZV90ICpsZW4pOwogI2VuZGlmCi0tIAoyLjI1LjEKCg== --_012_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0002-Refactor-SSL-testharness-for-multiple-library.patch" Content-Description: v43-0002-Refactor-SSL-testharness-for-multiple-library.patch Content-Disposition: attachment; filename="v43-0002-Refactor-SSL-testharness-for-multiple-library.patch"; size=11754; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <78B80009B4135B418E9F6B178EF9672E@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBhN2QwZGZmNzRhMDMxNDhjY2VlZDUzOWU5ZWIyZTAyNTdkNzM0ZWM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzQgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0003-nss-Add-NSS-specific-tests.patch" Content-Description: v43-0003-nss-Add-NSS-specific-tests.patch Content-Disposition: attachment; filename="v43-0003-nss-Add-NSS-specific-tests.patch"; size=59201; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <0B0C412814400D44A213011270F00728@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAzMTBiNDdjYjBjNGRlMzEzZDI2NmYzNTMxODUyYzkwNmZlZjNiNzBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzcgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0004-test-check-for-empty-stderr-during-connect_ok.patch" Content-Description: v43-0004-test-check-for-empty-stderr-during-connect_ok.patch Content-Disposition: attachment; filename="v43-0004-test-check-for-empty-stderr-during-connect_ok.patch"; size=3679; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA2ZjQ0NzRjMzY4ODZmMzgyNDcxODlmNWIxYmFjNzkyMjJhZTZlNzhkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+ CkRhdGU6IFNhdCwgMTkgSnVuIDIwMjEgMDE6Mzc6MzAgKzAyMDAKU3ViamVjdDogW1BBVENIIHY0 MyAwNC8xMF0gdGVzdDogY2hlY2sgZm9yIGVtcHR5IHN0ZGVyciBkdXJpbmcgY29ubmVjdF9vaygp 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0005-nss-pg_strong_random-support.patch" Content-Description: v43-0005-nss-pg_strong_random-support.patch Content-Disposition: attachment; filename="v43-0005-nss-pg_strong_random-support.patch"; size=2021; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <0A7351070C9A53439DE8C81B84372D5A@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBlY2E2NDUyZmE0N2RmNjRlZWVjN2M5YzM4Y2U5OTZlODMyYmEyMzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6MzkgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0006-nss-Documentation.patch" Content-Description: v43-0006-nss-Documentation.patch Content-Disposition: attachment; filename="v43-0006-nss-Documentation.patch"; size=36146; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <2479DDBAFE43BD408F0D39BBBF96A764@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAyYTc1ZTk4MWQ0NWJmZGI3YTVlNTZlYTc3YjlkM2ViNDNhODNjYTk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDIgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0007-nss-Support-NSS-in-pgcrypto.patch" Content-Description: v43-0007-nss-Support-NSS-in-pgcrypto.patch Content-Disposition: attachment; filename="v43-0007-nss-Support-NSS-in-pgcrypto.patch"; size=25522; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAxZTlmYzFjNzAwM2QxNzYwOGQxMzA3ZDY5ZjQ2YWY1YmVkMWI5MDc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDUgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0008-nss-Support-NSS-in-sslinfo.patch" Content-Description: v43-0008-nss-Support-NSS-in-sslinfo.patch Content-Disposition: attachment; filename="v43-0008-nss-Support-NSS-in-sslinfo.patch"; size=3690; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <27E7D617E3DE72418B1A5796921A76AF@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBkYjdmMTM0NWVkYWIwNDU4MjY5OTIzNzY3MDc3YWRiOTBkNWE5ZTJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NDggKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0009-nss-Support-NSS-in-cryptohash.patch" Content-Description: v43-0009-nss-Support-NSS-in-cryptohash.patch Content-Disposition: attachment; filename="v43-0009-nss-Support-NSS-in-cryptohash.patch"; size=6251; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: <455E5223655FA74497A73B61025BA0E3@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBlMzdjMzZjZTA3N2ZiMjM0YTA4YWExN2YyMWVhZjBjNGExNzMxY2ViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAw 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_ Content-Type: text/x-patch; name="v43-0010-nss-Build-infrastructure.patch" Content-Description: v43-0010-nss-Build-infrastructure.patch Content-Disposition: attachment; filename="v43-0010-nss-Build-infrastructure.patch"; size=21863; creation-date="Mon, 27 Sep 2021 19:40:28 GMT"; modification-date="Mon, 27 Sep 2021 19:40:28 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA0ZGMyYWU2OGUzYTNmZDljYjViYTYzOTgzNjJlOGI1MThlNDcxM2UxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDggRmViIDIwMjEgMjM6NTI6NTUgKzAxMDAKU3ViamVjdDogW1BBVENIIHY0MyAx 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 ZQppbmRleCA3Y2JkZWI1ODliLi4xZmU2MTU1ZTA3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl 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_9386e844170e1e8294611a276970d6b1786812a7camelvmwarecom_--