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 1nyprx-0000pm-Rx for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jun 2022 07:12:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nyprv-0005JU-4Z for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jun 2022 07:12:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nypru-0005JL-AD for pgsql-hackers@lists.postgresql.org; Wed, 08 Jun 2022 07:12:42 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nyprq-0002w4-J9 for pgsql-hackers@lists.postgresql.org; Wed, 08 Jun 2022 07:12:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1654672359; x=1686208359; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=AgpVwdmBMkL66/TcLLssxdCjITWT1kGSAiWDSqJcRMA=; b=o/eVg46QyRkCEMqwRT2PvzT6CI7VQBfaRXF2ak0ZE2VGNS/nbypCKJB7 UDxlgVbY12MdSeD5ZZPtGVdsJWrbrwLge3rP5Azs1UOXOcpVxo3Tn4q2C ZnzMZZlo9TMZky8rnHu52/fy2hZhYpqIt15GRQgdcPRpiZxyXMupGX1jE wZj4++POiPPomDQQP6QteZabb7TeBObSuRPVqRLcf+v8a7sdLtI215Ufs uxKKQ4uelY4eIaoOtWd68zfUsk1SLvLuoifvXIQRXj26CfpBtt372GK/E b/FdBwnT4C8O+DQKtfd8rgxqcGvSe6SdynKQM0M36WJ7Oa5vtue1CNQMF A==; X-IronPort-AV: E=McAfee;i="6400,9594,10371"; a="65877914" X-IronPort-AV: E=Sophos;i="5.91,285,1647270000"; d="scan'208,223";a="65877914" Received: from mail-os0jpn01lp2109.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.109]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2022 16:12:34 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Hi6z7cWJQxustFFUd6s92L5lHVtzm2gr4CzwoFR2B01uKdLVR7AWn9+mQAsPiZVBPCgPHld4Ku5NdWPSWiDMpLsZpXgbvB4yLAVGsB7NxUpoxIlWikVUUmZ7qqmvrmSiMOvXcVML/JWgNQu8dHx/xHJt9sLTHyek3ZtWqici+uAnHLbyHLztcF1Yjh9C3nU1klPb0VvL9KPxfxDzBw2YTb4Hv5k5RAl+xKLZi+8nMCIrM0wJ3OPDSO9WppjYNCtnGaGxm9SYuBXoCnx2aO+SLrEcn0zmWteJ7bYTH5pcjC2yX4R9DHucTtDDQwktnB+H7+eo3i9LG+92f0t6dP2PRQ== 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=ax4NfsHWiGD78RZW/C6AbiTmgcJHAgVT/IaTtLzKVJ8=; b=TlMRFyF8HN7QCudzNoMwLZFwH+PxAHI7JwDXsvd29G7SOdPwh6M7YooPGDGMxG1p8YCphsDkNMMxnJ+9lL0dzgQYtVgeHn/1LBZl0TvCmgt/+rGPWlM0sQa+CADrlneULnyC8EI7DoT7ux3VKs3Q0odeU4k7uYgERiDHQYN/0AC31rKjct9QoD3dFtezA26hqgBekmIx2E0z+gh7/itZL6WfNLOWfpyhPSjq/oG7YVOlSBWuGX9yurvJgSBmCLSWKqA0B/0BltStzCx2zA71EPuPbORDa4K08yJk64Uii7FD/ldoXZKAkR8s16IF8rZ/pNlsdaHrNsmcd0PEpDqmFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ax4NfsHWiGD78RZW/C6AbiTmgcJHAgVT/IaTtLzKVJ8=; b=PrJBHzprXSERCbgV/8aXMpMvwgW5OP8InanpUtOjKTa4TSfR+M91bk6Ui8IW0+b1gI8LKVkyGsxETTxCRfjZA44PHU3jnrtZ3ESa90LfdGYG0DzDQs8D/XGJhJNEIS4pG0zKCJEaeQBrPCiSY7Z7dS+oXenGHiSoFd2hk/blIDg= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TYAPR01MB6281.jpnprd01.prod.outlook.com (2603:1096:400:86::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Wed, 8 Jun 2022 07:12:30 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%9]) with mapi id 15.20.5332.012; Wed, 8 Jun 2022 07:12:30 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , Masahiko Sawada CC: Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLg Date: Wed, 8 Jun 2022 07:12:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4ef231fd-29f7-472b-b380-08da491e4049 x-ms-traffictypediagnostic: TYAPR01MB6281:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PZ1NjNFH9os7fVPnABIQFJMUQxBeZLyC+TLcTCCsiGgZGBmgAHiM19RxS89oCV4blbSebDyDMG2y06BMKtdednm5ZK7X05mNALIHPFd0aj5GaALgizhRxEajNXyz5lQYnJqogjJi1eSuoiuWaB6yvlsYRcwKzAE7Hje/cKxVL1xPCNtdvj5WbJ+WX36KMwFMhlOlogufC8J/7nuBUYCQcLAaR+W6cPFKaCpvy3yOD6hfOb/KCG811hm281rh8lgQvlxtHeO2GkTEE6uJtp9Y0kZ6DTJ/uHWSCd2PtoAIehAB1QaHEEJ86o1cak2CIz29meqYxydOEjlat9lZqhRdPO8HIj0RCrKcEqDI6aOAs+FVDLWR7xvtqhUCfsi0nif4FC50z/AkZuMGyCxWrNjnb02x12eXXDvKJEc4sBOolqxMZBAlk2hhJaAVGsTDKZkQ3u5KYO4ovMJ/wFxX5RepU09X5QIGUPb1Ji+r5SP0xZ3pHiAyLAfj779sBtZik2sUR3SPZJ6t62k1aHVjNVJkCeiWrKa1bDC7RK+2ZG1dxRnyCUYUePRMhf0ilWrKlS19PVHNG42iza9on3Q23svExeUQO2kV5I+Vj7W/UJ/aaCgvfxh7sqyUSurNsRaw1GLQOhESJPZDBs4KKAuovBuVaJrfVZo8gTTmlGZRwo/a0Mw93gx140ChVl1lBZVQ6VBia3OoxhcddoeKTlHmq4G8Rwa0YyQ2xxzVcCBHYXN0E1K4wW74xebza2QeyaLFNy74HyAcYZoiQKmrlUX76/t8rHmQevlhgyaRceoftoj/SPU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(64756008)(99936003)(66946007)(6506007)(8676002)(85182001)(38100700002)(66476007)(33656002)(966005)(45080400002)(7696005)(4326008)(76116006)(86362001)(8936002)(71200400001)(186003)(5660300002)(2906002)(508600001)(55016003)(66556008)(66446008)(52536014)(83380400001)(54906003)(110136005)(9686003)(82960400001)(26005)(316002)(122000001)(38070700005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cTcwL0IxcWNlVE9jWHJ0ZWE0eStxZzVqSFk2MjdnMDFITkFQbmt5SmgwcTdp?= =?utf-8?B?ZWhBTjQ5TXhWZUpRcDF3RkFlSnB2STFWeHpHZi85Y3hPditQZk9veTYrQWJZ?= =?utf-8?B?UHNxN3lteDcyajZGWkNPYmpUUGdXMFRWS0VUYXVaZThJOGVQaFEweHA5UGVC?= =?utf-8?B?aDhIQ0xyT1dIOFlmMk9sSnVrNW9QeFg3R0RwTXNsUituQUs2MGt1WnJINVpR?= =?utf-8?B?QTloYmd0ZTdMOU1GaTJnOWpuVXFQYUpyQXdtMDd4bFVGanQ5YXUxZ2pjbjlz?= =?utf-8?B?QlRYRllDL3pvcFVjV1IvUXZFSkFGVkw5Z3FyZllkclpjemxQdlUvUllzL3pt?= =?utf-8?B?NHhhYzJXYzR0TjhPR0JJZkYwZkJIT1doL1c2UGg1UG8weVQyeW1KZEdISFVR?= =?utf-8?B?Q3RURmxyL3NlWVVmaXdTOWpKOTh5UTNJeTlKTnNuMHNiWUF4dENOVFp6NExl?= =?utf-8?B?YTFIWVRrYkNBVmJ4UFpjemhFT29wbVJHR0JFdlkzclNCUitZSGFiYUdwMm1X?= =?utf-8?B?c2lZT21mY2pMN1ozek1yWWhoV2QxNUpIYjFLM2lnQmxRdmt6M2xOR2EzSFcw?= =?utf-8?B?eEJYcDk4aFh3NWw2TFNHM05kRmhvNG5RMmpmNVdaNGU0RnF1YXVXYkNGa3I2?= =?utf-8?B?TmsrQWUvQVVWV0pxVCtoZ3Z6aFM4d2RFR3prYmVmL0Yvc2NGdlZ1WEM1c3E5?= =?utf-8?B?bnErNDhBVmhGbHVDN3dqTmxzV2ppZC9qNy8vWjFqeENWUEsrQVFZR0ZDM1ly?= =?utf-8?B?V2VGM2ozQWcwUUloSzVIZUtZaUg4QTJGZnl4eDhJb1BCUkRKdkFuZy9WaW5h?= =?utf-8?B?SFZwa3RyM0RGQlRPaVZhR3JHVXIyaFNSTWpTbEo2TmVuc3JXcjMxN3FiWWJD?= =?utf-8?B?M0Zkc0NDOWkwVmc3TFZOa3RzeVh1T3lVZGFVL2ZFVW5aTHRYSGdnejVtNmJC?= =?utf-8?B?VFF4bVdZVXdMTGxtZTQyTWxUSHNZRitGdXl6c3BkMENyKzl3M2tDUTRZSTFW?= =?utf-8?B?aTRXYXlldi80SVoxQnFxVU1KSFdkUEk4RUF5R1VEdk43RmcxMHBHMFVobklY?= =?utf-8?B?bisxVjZpUlM1U0g0TjFMa05pd0t0a0hvanBicGxMN0tjUStTdWJqZHRUOXVt?= =?utf-8?B?RDAyTXRxNzd2aXFTalNuL3RhYzFIRnI4YXdYSlE2eDhXL3IraUk3NEZQeWFh?= =?utf-8?B?TkI4QkVjZFJnTVZKdXB3VVlqMlVJMDZvTDFNL1duMEtGWjdKZTU1bE5kWEpv?= =?utf-8?B?bGVrdDVYWUhlTmZkTXhGUHdEN0lubTFZSnpvRWpzZHhqZk1vNmgxUFM1WmtV?= =?utf-8?B?VXc5TlBOM0QwVjliOUxBd3NENVhxN1pkN1dWcE9VQ2ZyWkNPM0FQMHpBK1hW?= =?utf-8?B?TkQvV0JwZzdUZ0tZUzVLSzBNRXFFckEwY2xTRnJiZDlISFFYRStaZnJNejZE?= =?utf-8?B?azNVa0tJUTY1L3BOK3MrNzk0RGs5Q1ROTlBWWmRRYS9wcTF5ZXNjcnhJc1N0?= =?utf-8?B?V2J0SWFmTVMrNmpZRG5qSzJtcEpoNWJUbWdXSnE2Z1UvN2h0bTBiRmFNQlN2?= =?utf-8?B?SHdKWFVjakZaK1RiY3ZQRzJsUDMrOWNheGhJRUlMY3FBTDdLekxLS1VZZ085?= =?utf-8?B?TExxVU5oOVNWSTVGUnZLL25LcVdVVE52SkVrOGdOd1ZOZHBQeldIVDhlTU5u?= =?utf-8?B?Y1RSSFB4eGhYTUJCUkVTaTFDVWlJUHp6dmsrclZ3MlNhTDdnazlJUVhKRDFk?= =?utf-8?B?cE96MnUxM1hnOE1JVkZpNWwxS2swZGxyRTc0U2hlUS9MSFJIL0cyalpWN0xW?= =?utf-8?B?a05jcDFwakF1RXFBSGZUQWhYcEVnL2JZeCs2Vi9mS1Z1WS93cjI2NG1WNU5H?= =?utf-8?B?SGZ4QXJYQjZnVFBPZWZUOG1TRDJJaDFyb2VCYllldFAwejVsNzdMZWQ5V1Ji?= =?utf-8?B?a1JnVFJXOVZ2NFVKdy9Ib2NIUUt1QnBVSklkd1BWRmpTUUhneFIweXExNXBS?= =?utf-8?B?c3o0TGVTQUU3R1pNMzdta2tTcTEvcnI3MWpaclZBcmtWMWhQWlF0MkxkQzNv?= =?utf-8?B?Y0crOTBwdWFGbHZXcDlLUzEzN2pCTEZjSEEweEZPYlZsT3ZqTjZnNzlZRGtI?= =?utf-8?B?UVc1ZUxqaFRjOWxIc3dKWEJQTWlYUjJ2MG9MamtzSE5yTmJzK0hSRG1UdkVY?= =?utf-8?B?T014WHNVR3dmSmJRNnU1M0lSNDZtc01QVlg0bGY2N1BIQmkwTlhselJnU3Vo?= =?utf-8?B?Tk91OWVPTG0rTWg5UHJxYnpiNEE2UjFuZDNsaVdGNExKWnp4VTBPZjFmc0Ju?= =?utf-8?B?c05JcU5ob3ByN3hJMUZBNjFOaFM0TVpqWVlmUDdYOE82Z3FzS0YrZz09?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ef231fd-29f7-472b-b380-08da491e4049 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2022 07:12:30.2608 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CBLGZLk5TsC8ikLR0fst3cK9XeND8+S9rEQIowwHH6lV5VDLnlFfelwkFF4eAqcw78Ml8V2DwrQYryiLqROcxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB6281 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1ciwgSnVuIDIsIDIwMjIgNjowMiBQTSBJIHdyb3RlOg0KPiBBdHRhY2ggdGhlIG5ldyBw YXRjaGVzLg0KDQpJIHRyaWVkIHRvIGltcHJvdmUgdGhlIHBhdGNoZXMgYnkgZm9sbG93aW5nIDIg cG9pbnRzOg0KDQoxLiBJbXByb3ZlZCB0aGUgcGF0Y2ggYXMgc3VnZ2VzdGVkIGJ5IEFtaXQtc2Fu IHRoYXQgSSBtZW50aW9uZWQgaW4gWzFdLg0KV2hlbiBwdWJsaXNoZXIgc2VuZHMgYSAiU1RSRUFN IEFCT1JUIiBtZXNzYWdlIHRvIHN1YnNjcmliZXIsIGFkZCB0aGUgbHNuIGFuZA0KdGltZSBvZiB0 aGlzIGFib3J0IHRvIHRoaXMgbWVzc2FnZS4oc2VlIGZ1bmN0aW9uIGxvZ2ljYWxyZXBfd3JpdGVf c3RyZWFtX2Fib3J0KQ0KV2hlbiBzdWJzY3JpYmVyIHJlY2VpdmVzIHRoaXMgbWVzc2FnZSwgaXQg d2lsbCB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbi4NCihzZWUgZnVuY3Rpb24gYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydCBhbmQgZnVuY3Rpb24gUmVjb3JkVHJhbnNhY3Rpb25BYm9ydCkN Cg0KMi4gRml4ZWQgbWlzc2luZyBzZXR0aW5ncyBmb3IgdHdvIEdVQ3MgKHNlc3Npb25fcmVwbGlj YXRpb25fcm9sZSBhbmQNCnNlYXJjaF9wYXRoKSBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBp biBwYXRjaCAwMDAxIGFuZCBpbXByb3ZlZCBjaGVja2luZyBvZg0KdHJpZ2dlciBmdW5jdGlvbnMg aW4gcGF0Y2ggMDAwMy4NCg0KVGhhbmtzIHRvIEhvdSBaaGkgSmllIGZvciBhZGRpbmcgdGhlIGFi b3J0cyBtZXNzYWdlIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUgZm9yDQp0aGUgZmlyc3QgcG9pbnQu DQpUaGFua3MgdG8gU2hpIFl1IGZvciBwb2ludGluZyBvdXQgdGhlIHNlY29uZCBwb2ludC4NCg0K QXR0YWNoIHRoZSBuZXcgcGF0Y2hlcy4ob25seSBjaGFuZ2VkIDAwMDEgYW5kIDAwMDMpDQoNClsx XSAtIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvT1MzUFIwMU1CNjI3NUZC RDkzNTlGOEVEMEVERTdFNTQ1OUVERTklNDBPUzNQUjAxTUI2Mjc1LmpwbnByZDAxLnByb2Qub3V0 bG9vay5jb20NCg0KUmVnYXJkcywNCldhbmcgd2VpDQo= --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v9-0001-Perform-streaming-logical-transactions-by-backgro.patch" Content-Description: v9-0001-Perform-streaming-logical-transactions-by-backgro.patch Content-Disposition: attachment; filename="v9-0001-Perform-streaming-logical-transactions-by-backgro.patch"; size=95536; creation-date="Wed, 08 Jun 2022 07:09:00 GMT"; modification-date="Wed, 08 Jun 2022 07:12:28 GMT" Content-Transfer-Encoding: base64 RnJvbSBmNTMxOTg0NWEyNmIwN2NlOTg4NzM2NTE2YTQ3NGQ5MDlhOWExNjhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY5IDEvNF0gUGVyZm9ybSBzdHJlYW1pbmcgbG9naWNhbCB0cmFuc2FjdGlvbnMgYnkgYmFja2dy b3VuZAogd29ya2VycwoKQ3VycmVudGx5LCBmb3IgbGFyZ2UgdHJhbnNhY3Rpb25zLCB0aGUgcHVi bGlzaGVyIHNlbmRzIHRoZSBkYXRhIGluIG11bHRpcGxlCnN0cmVhbXMgKGNoYW5nZXMgZGl2aWRl ZCBpbnRvIGNodW5rcyBkZXBlbmRpbmcgdXBvbiBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtKSwK YW5kIHRoZW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSwgdGhlIGFwcGx5IHdvcmtlciB3cml0ZXMg dGhlIGNoYW5nZXMgaW50bwp0ZW1wb3JhcnkgZmlsZXMgYW5kIG9uY2UgaXQgcmVjZWl2ZXMgdGhl IGNvbW1pdCwgaXQgcmVhZHMgZnJvbSB0aGUgZmlsZSBhbmQKYXBwbGllcyB0aGUgZW50aXJlIHRy YW5zYWN0aW9uLiBUbyBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBzdWNoCnRyYW5zYWN0aW9u cywgd2UgY2FuIGluc3RlYWQgYWxsb3cgdGhlbSB0byBiZSBhcHBsaWVkIHZpYSBiYWNrZ3JvdW5k IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0 cmVhbSBpcyByZWNlaXZlZCBhbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIHdpbGwKZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdy aXRpbmcgaXQgdG8gdGVtcG9yYXJ5IGZpbGVzLiBXZSBrZWVwCnRoaXMgd29ya2VyIGFzc2lnbmVk IHRpbGwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZv cgp0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBv cmRlcmluZyBhbmQgYXZvaWRzCndyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlIGluIG1v c3QgY2FzZXMuIFdlIHN0aWxsIG5lZWQgdG8gc3BpbGwgaWYgdGhlcmUKaXMgbm8gd29ya2VyIGF2 YWlsYWJsZS4gV2UgYWxzbyBuZWVkIHRvIGFsbG93IHN0cmVhbV9zdG9wIHRvIGNvbXBsZXRlIGJ5 IHRoZQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byBhdm9pZCBkZWFkbG9ja3MgYmVjYXVzZSBU LTEncyBjdXJyZW50IHN0cmVhbSBvZgpjaGFuZ2VzIGNhbiB1cGRhdGUgcm93cyBpbiBjb25mbGlj dGluZyBvcmRlciB3aXRoIFQtMidzIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuCgpUaGlzIHBhdGNo IGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIG9wdGlvbiBzbyB0aGF0 IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndvcmtlciBvciBzcGlsbCB0aGUgY2hhbmdl IHRvIGRpc2suIFVzZXIgY2FuIHNldCB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0bwonb24vb2ZmJywg J2FwcGx5Jy4gRm9yIG5vdywgJ2FwcGx5JyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwgYmUgYXBw bGllZCB2aWEgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhdmFpbGFibGUuICdvbicgbWVh bnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsCmJlIHNwaWxsZWQgdG8gZGlzay4KLS0t CiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0K IGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgNyArCiBk b2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTkgKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgIDI0ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgIDY2ICstCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgIHwgICAzICstCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgICAgICAgfCA3NTYgKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICA4NyAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgIHwgIDI2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgMzUgKy0K IC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAxMCArLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgIDEwICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCA2NDUgKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAg fCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8 ICAgMyArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAg IDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAx NyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgIDE5 ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwgICAyICst CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgIDcgKy0K IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8IDEwMyArKy0K IHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDIgKy0KIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgNSArCiAyOCBm aWxlcyBjaGFuZ2VkLCAxNjc3IGluc2VydGlvbnMoKyksIDIxNSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9r ZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKaW5kZXggYzAwYzkzZGQ3Yi4uNWNiMzliMThiZCAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKQEAgLTc4NzMsMTEgKzc4NzMsMTUgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+ Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAog ICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFt PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vi c3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAg ICAgIDxwYXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBz dHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250 cm9scyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zOgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9m IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9 IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAg IGRpc2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZCBvbiB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4g PSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZCB3b3JrZXIKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0 aW9uLnNnbWwKaW5kZXggMTQ1ZWE3MWQ2MS4uY2NhNmM5N2Q3OSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCkBAIC05NDgsNiArOTQ4LDEzIEBAIENPTlRFWFQ6ICBwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcg IklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVh c2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFNldHRpbmcgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+YXBwbHk8L2xp dGVyYWw+IGNvdWxkIGV4cG9ydCBpbnZhbGlkIExTTgorICAgYXMgZmluaXNoIExTTiBvZiBmYWls ZWQgdHJhbnNhY3Rpb24uIENoYW5naW5nIHRoZSBzdHJlYW1pbmcgbW9kZSBhbmQgbWFraW5nCisg ICB0aGUgc2FtZSBjb25mbGljdCB3cml0ZXMgdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0 cmFuc2FjdGlvbiBpbiB0aGUKKyAgIHNlcnZlciBsb2cgaWYgcmVxdWlyZWQuCisgIDwvcGFyYT4K ICA8L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9u cyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dt bC9wcm90b2NvbC5zZ21sCmluZGV4IGJiMzAzNDA4OTIuLjM0YmUxYjI2OTggMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCkBAIC02ODA5LDYgKzY4MDksMjUgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICA8L2xpc3RpdGVtPgog ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRl cm0+SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2Yg dGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNy b3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgICAgPHRlcm0+SW50MzIgKFRyYW5zYWN0aW9uSWQpPC90ZXJt PgogICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKaW5kZXggMzViMzljMjhkYS4uZDRjYWFlMDIyMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIxNywxMyArMjE3LDI5IEBAIENSRUFURSBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1l PC9yZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVu dHJ5PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5i b29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwv bGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgog ICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0 cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBz dWJzY3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJl IGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhl Ci0gICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1 YnNjcmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4s CisgICAgICAgICAgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVi bGlzaGVyIGFuZCBvbmx5IHRoZW4KKyAgICAgICAgICBzZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFz IGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRoZSBjaGFuZ2VzIG9mIHRyYW5zYWN0 aW9uIGFyZQorICAgICAgICAgIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFw cGxpZWQgYXQgb25jZSBhZnRlciB0aGUKKyAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gdGhlIHB1Ymxpc2hlci4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+ CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPmFwcGx5PC9saXRlcmFsPiBpbmNvbWluZwor ICAgICAgICAgIGNoYW5nZXMgYXJlIGRpcmVjdGx5IGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgYmFj a2dyb3VuZCB3b3JrZXJzLCBpZgorICAgICAgICAgIGF2YWlsYWJsZS4gSWYgbm8gYmFja2dyb3Vu ZCB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3RyZWFtaW5nCisgICAgICAgICAgdHJhbnNhY3Rp b24gdGhlbiB0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byBhIGZpbGUgYW5kIGFwcGxpZWQgYWZ0 ZXIKKyAgICAgICAgICB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYg YW4gZXJyb3IgaGFwcGVucyB3aGVuCisgICAgICAgICAgYXBwbHlpbmcgY2hhbmdlcyBpbiBhIGJh Y2tncm91bmQgd29ya2VyLCBpdCBtaWdodCBub3QgcmVwb3J0IHRoZQorICAgICAgICAgIGZpbmlz aCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbiBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAg ICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA0N2Q4MGIwZDI1Li42Nzg1NDBiYTI1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzExLDYgKzE3MTEsNyBAQCBSZWNvcmRU cmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFu c2FjdGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVw bG9yaWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwg bm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDEsNiArMTc0MiwxMyBA QCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAi Y2Fubm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAog CQkJIHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lu cyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLAorCSAqIGFyZSB3ZSByZXBsYXlpbmcgcmVt b3RlIGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3Jp Z2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQg Zm9yIHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhm YWxzZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hp bGRyZW4pOwpAQCAtMTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9v bCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwK IAkJCQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndh cmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9h ZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFz dFJlY0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwg c28gdGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRo ZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA4M2U2ZWFlODU1Li40MDgwYmJh OTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04Myw3ICs4 Myw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJ cmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVh bWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJWExvZ1JlY1B0 cglsc247CkBAIC05NSw2ICs5NSw2MiBAQCBzdGF0aWMgTGlzdCAqbWVyZ2VfcHVibGljYXRpb25z KExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRkcHViLAogc3RhdGlj IHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQs IGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogCiAKKy8qCisgKiBFeHRyYWN0IHRoZSBzdHJl YW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0 Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgImFwcGx5Ii4K KyAqLworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQorewor CS8qCisJICogSWYgbm8gcGFyYW1ldGVyIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50Lgor CSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCisJ LyoKKwkgKiBBbGxvdyAwLCAxLCAidHJ1ZSIsICJmYWxzZSIsICJvbiIsICJvZmYiIG9yICJhcHBs eSIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9JbnRl Z2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gU1VCU1RS RUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93 ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJ Y2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUg c2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJ CQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICov CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19z dHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsK KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3Ry Y2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJ CWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJhcHBseSIpID09IDApCisJCQkJCXJldHVybiBTVUJT VFJFQU1fQVBQTFk7CisJCQl9CisJCQlicmVhazsKKwl9CisJZXJlcG9ydChFUlJPUiwKKwkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEg Qm9vbGVhbiB2YWx1ZSBvciBcImFwcGx5XCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0 dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CisKIC8qCiAg KiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VC U0NSSVBUSU9OIGNvbW1hbmRzLgogICoKQEAgLTEzMiw3ICsxODgsNyBAQCBwYXJzZV9zdWJzY3Jp cHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlp ZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkg PSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQot CQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFN X09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQp KQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywg U1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTIzMyw3ICsyODksNyBAQCBwYXJzZV9zdWJzY3Jp cHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJ CQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3Bl Y2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5n TW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdv X3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjAxLDcgKzY1Nyw3IEBAIENyZWF0ZVN1YnNjcmlwdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVt KG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0g Qm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJl YW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENo YXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8K IAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDYwLDcgKzEx MTYsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VC T1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJ CQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYwppbmRleCA0MDYwMWFlZmQ5Li40MGNjYjg5OTNjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAog CX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJ CSJBcHBseUJnd29ya2VyTWFpbiIsIEFwcGx5Qmd3b3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZWI3MS4uYTI0YTQx OTY5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmls ZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0yNiw2 ICsyNiw3IEBAIE9CSlMgPSBcCiAJcmVvcmRlcmJ1ZmZlci5vIFwKIAlzbmFwYnVpbGQubyBcCiAJ dGFibGVzeW5jLm8gXAotCXdvcmtlci5vCisJd29ya2VyLm8gXAorCWFwcGx5Ymd3cm9rZXIubwog CiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhhZjY0OTc0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwpAQCAtMCwwICsx LDc1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBhcHBseWJnd3Jva2VyLmMKKyAqICAgICBT dXBwb3J0IHJvdXRpbmVzIGZvciBhcHBseWluZyB4YWN0IGJ5IGFwcGx5IGJhY2tncm91bmQgd29y a2VyCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKKyAqCisgKiBUaGlzIGZpbGUgY29u dGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1 c2luZywKKyAqIGFuZCB0ZWFyaW5nIGRvd24gYSBBcHBseUJnd29ya2VyU3RhdGUuCisgKiBSZWZl ciB0byB0aGUgY29tbWVudHMgaW4gZmlsZSBoZWFkZXIgb2YgbG9naWNhbC93b3JrZXIuYyB0byBz ZWUgbW9yZQorICogaW5mb3JtYXRpb25zIGFib3V0IGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2lu Y2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4NzlmYjI0NDcgLy8g VE9ETyBDb25zaWRlciBjaGFuZ2UKKworLyoKKyAqIERTTSBrZXlzIGZvciBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlci4gIFVubGlrZSBvdGhlciBwYXJhbGxlbCBleGVjdXRpb24gY29kZSwKKyAqIHNp bmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgRFNNIGtleXMgY29uZmxpY3Rpbmcgd2l0 aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21hbGwgaW50ZWdlcnMuCisgKi8KKyNkZWZp bmUgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRAkxCisjZGVmaW5lIEFQUExZX0JHV09SS0VSX0tF WV9NUQkJMgorCisvKgorICogZW50cnkgZm9yIGEgaGFzaCB0YWJsZSB3ZSB1c2UgdG8gbWFwIGZy b20geGlkIHRvIG91ciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgorICogc3RhdGUuCisgKi8KK3R5 cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwor CUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworfSBBcHBseUJnd29ya2VyRW50cnk7CisKKy8q IEFwcGx5IGJhY2tncm91bmQgd29ya2VycyBoYXNoIHRhYmxlIChpbml0aWFsaXplZCBvbiBmaXJz dCB1c2UpICovCitzdGF0aWMgSFRBQiAqQXBwbHlXb3JrZXJzSGFzaCA9IE5VTEw7CitzdGF0aWMg TGlzdCAqQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBOSUw7CitzdGF0aWMgTGlzdCAqQXBwbHlXb3Jr ZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEZpZWxkcyB0byByZWNvcmQgdGhlIHNoYXJlIGluZm9y bWF0aW9ucyBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseQorICogYmFja2dyb3Vu ZCB3b3JrZXIuCisgKi8KK3ZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFyYWxsZWxT dGF0ZSA9IE5VTEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCisvKiBhcHBseSBi YWNrZ3JvdW5kIHdvcmtlciBzZXR1cCAqLworc3RhdGljIEFwcGx5Qmd3b3JrZXJTdGF0ZSAqYXBw bHlfYmd3b3JrZXJfc2V0dXAodm9pZCk7CitzdGF0aWMgdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXR1 cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOworCisvKgorICogTG9vayB1cCB3b3Jr ZXIgaW5zaWRlIEFwcGx5V29ya2Vyc0hhc2ggZm9yIHJlcXVlc3RlZCB4aWQuCisgKgorICogSWYg c3RhcnQgZmxhZyBpcyB0cnVlLCB0cnkgdG8gc3RhcnQgYSBuZXcgd29ya2VyIGlmIG5vdCBmb3Vu ZCBpbiBoYXNoIHRhYmxlLgorICovCitBcHBseUJnd29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3Jr ZXJfZmluZF9vcl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBzdGFydCkKK3sKKwlib29s CQlmb3VuZDsKKwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKKwlBcHBseUJnd29ya2VyRW50 cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdv cmtlciBpZiB3ZSBhcmUgbm90IGluIHN0cmVhbWluZyBhcHBseQorCSAqIG1vZGUuCisJICovCisJ aWYgKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX0FQUExZKQorCQlyZXR1cm4g TlVMTDsKKworCS8qCisJICogV2UgZG9uJ3Qgc3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyIGlm IHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0IHVzZXIgd2Fu dCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAqIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiwgd2UgbmVlZCB0byBzcGlsbCB0aGUgdHJhbnNhY3Rpb24gdG8gZGlzayBzbyB0 aGF0CisJICogd2UgY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1 ZGdlIHdoZXRoZXIgdG8gc2tpcAorCSAqIGJlZm9yZSBzdGFydGluZyB0byBhcHBseSB0aGUgY2hh bmdlLgorCSAqLworCWlmIChzdGFydCAmJiAhWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlw dGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5n IHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQK KwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdl IGZvciBhIHJlbGF0aW9uCisJICogdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUg c2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2UKKwkgKiB3b24ndCBrbm93IHJlbW90 ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgbmV3IGFwcGx5CisJ ICogYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChzdGFydCAmJiAh QWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBOVUxMOworCisJLyogRmlyc3QgdGltZSB0 aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRhYmxlICovCisJaWYgKEFwcGx5 V29ya2Vyc0hhc2ggPT0gTlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0 bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklk KTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBcHBseUJnd29ya2VyRW50cnkpOworCQljdGwu aGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlBcHBseVdvcmtlcnNIYXNoID0gaGFzaF9jcmVhdGUo ImxvZ2ljYWwgYXBwbHkgd29ya2VycyBoYXNoIiwgOCwgJmN0bCwKKwkJCQkJCQkJCSAgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCS8qCisJICogRmluZCBl bnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgc3RhcnQgPyBIQVNIX0VOVEVSIDogSEFTSF9GSU5E LAorCQkJCQkJJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQllbnRyeS0+d3N0YXRlLT5wc3Rh dGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJCXJldHVybiBlbnRyeS0+d3N0YXRl OworCX0KKwllbHNlIGlmICghc3RhcnQpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBOb3cs IHdlIHRyeSB0byBnZXQgYSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gSWYgdGhlcmUgaXMgYXQg bGVhc3Qgb25lCisJICogd29ya2VyIGluIHRoZSBpZGxlIGxpc3QsIHRoZW4gdGFrZSBvbmUuIE90 aGVyd2lzZSwgd2UgdHJ5IHRvIHN0YXJ0IGEKKwkgKiBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0ZyZWVMaXN0KSA+IDApCisJ eworCQl3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIGxsYXN0KEFwcGx5V29ya2Vyc0Zy ZWVMaXN0KTsKKwkJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsaXN0X2RlbGV0ZV9sYXN0KEFwcGx5 V29ya2Vyc0ZyZWVMaXN0KTsKKwl9CisJZWxzZQorCXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3b3Jr ZXJfc2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBJ ZiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgY2Fubm90IGJlIGxhdW5jaGVkLCByZW1vdmUg ZW50cnkKKwkJCSAqIGluIGhhc2ggdGFibGUuCisJCQkgKi8KKwkJCWhhc2hfc2VhcmNoKEFwcGx5 V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCAmZm91bmQpOworCQkJcmV0dXJuIE5VTEw7 CisJCX0KKwl9CisKKwkvKiBGaWxsIHVwIHRoZSBoYXNoIGVudHJ5ICovCisJd3N0YXRlLT5wc3Rh dGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJd3N0YXRlLT5wc3RhdGUtPnNlcnZl cl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4p OworCXdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkID0geGlkOworCWVudHJ5LT53c3RhdGUgPSB3 c3RhdGU7CisJZW50cnktPnhpZCA9IHhpZDsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisg KiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBsaXN0IGFuZCByZW1vdmUgdGhlIGVudHJ5IGZy b20gaGFzaCB0YWJsZS4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29y a2VyU3RhdGUgKndzdGF0ZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlUcmFuc2FjdGlv bklkIHhpZCA9IHdzdGF0ZS0+cHN0YXRlLT5zdHJlYW1feGlkOworCisJQXNzZXJ0KHdzdGF0ZS0+ cHN0YXRlLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCisJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwloYXNoX3NlYXJjaChBcHBs eVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgTlVMTCk7CisKKwllbG9nKERFQlVHMSwg ImFkZGluZyBmaW5pc2hlZCBhcHBseSB3b3JrZXIgIyV1IGZvciB4aWQgJXUgdG8gdGhlIGlkbGUg bGlzdCIsCisJCSB3c3RhdGUtPnBzdGF0ZS0+biwgd3N0YXRlLT5wc3RhdGUtPnN0cmVhbV94aWQp OworCisJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5V29ya2Vyc0ZyZWVMaXN0 LCB3c3RhdGUpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Cit9CisKKy8qIEFw cGx5IEJhY2tncm91bmQgV29ya2VyIG1haW4gbG9vcCAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxB cHBseUJnd0xvb3Aoc2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hh cmVkICpwc3QpCit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lz dHJhbnQ7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJWExvZ1JlY1B0cgls YXN0X3JlY2VpdmVkID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlyZWdpc3RyYW50ID0gQmFja2Vu ZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0Y2go JnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29u dGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUgZmlsbGVkIGR1cmluZworCSAqIGFwcGx5aW5n IGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2Fs bGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVy cm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9p ZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCQlpbnQJCQljOworCQlTdHJpbmdJbmZvRGF0YSBz OworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJWExvZ1JlY1B0cglzdGFydF9sc247CisJCVhM b2dSZWNQdHIJZW5kX2xzbjsKKwkJVGltZXN0YW1wVHogc2VuZF90aW1lOworCisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGlu dG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZSht cWgsICZsZW4sICZkYXRhLCBmYWxzZSk7CisKKwkJaWYgKHNobXFfcmVzICE9IFNITV9NUV9TVUND RVNTKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0 byB0aGUgbWFpbiBhcHBseSB3b3JrZXIiKSkpOworCisJCWlmIChsZW4gPT0gMCkKKwkJCWJyZWFr OworCisJCXMuY3Vyc29yID0gMDsKKwkJcy5tYXhsZW4gPSAtMTsKKwkJcy5kYXRhID0gKGNoYXIg KikgZGF0YTsKKwkJcy5sZW4gPSBsZW47CisKKwkJLyoKKwkJICogV2UgdXNlIGZpcnN0IGJ5dGUg b2YgbWVzc2FnZSBmb3IgYWRkaXRpb25hbCBjb21tdW5pY2F0aW9uIGJldHdlZW4KKwkJICogbWFp biBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBhbmQgYXBwbHkgYmd3b3JrZXJzLCBzbyBpZiBp dAorCQkgKiBkaWZmZXJzIGZyb20gJ3cnLCB0aGVuIHByb2Nlc3MgaXQgZmlyc3QuCisJCSAqLwor CQljID0gcHFfZ2V0bXNnYnl0ZSgmcyk7CisJCXN3aXRjaCAoYykKKwkJeworCQkJCS8qIEVuZCBt ZXNzYWdlIG9mIHN0cmVhbWluZyBjaHVuayAqLworCQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RS RUFNX1NUT1A6CisJCQkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZW5kZWQgcHJvY2Vz c2luZyBzdHJlYW1pbmcgY2h1bmssIgorCQkJCQkgIndhaXRpbmcgb24gc2htX21xX3JlY2VpdmUi LCBwc3QtPm4pOworCisJCQkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktF Ul9SRUFEWSk7CisKKwkJCQlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKKworCQkJ CWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkJcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3cnOgorCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiW0FwcGx5IEJHVyAjJXVdIHVu ZXhwZWN0ZWQgbWVzc2FnZSBcIiVjXCIiLAorCQkJCQkgcHN0LT5uLCBjKTsKKwkJCQlicmVhazsK KwkJfQorCisJCXN0YXJ0X2xzbiA9IHBxX2dldG1zZ2ludDY0KCZzKTsKKwkJZW5kX2xzbiA9IHBx X2dldG1zZ2ludDY0KCZzKTsKKwkJc2VuZF90aW1lID0gcHFfZ2V0bXNnaW50NjQoJnMpOworCisJ CWlmIChsYXN0X3JlY2VpdmVkIDwgc3RhcnRfbHNuKQorCQkJbGFzdF9yZWNlaXZlZCA9IHN0YXJ0 X2xzbjsKKworCQlpZiAobGFzdF9yZWNlaXZlZCA8IGVuZF9sc24pCisJCQlsYXN0X3JlY2VpdmVk ID0gZW5kX2xzbjsKKworCQkvKgorCQkgKiBUTyBJTVBST1ZFOiBEbyB3ZSBuZWVkIHRvIGRpc3Bs YXkgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyJ3MKKwkJICogaW5mb3JtYXRpb24gaW4gcGdf c3RhdF9yZXBsaWNhdGlvbiA/CisJCSAqLworCQlVcGRhdGVXb3JrZXJTdGF0cyhsYXN0X3JlY2Vp dmVkLCBzZW5kX3RpbWUsIGZhbHNlKTsKKworCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJaWYg KENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJCXsKKwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxz ZTsKKwkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCQl9CisKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VD b250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7 CisJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5Q29udGV4dCk7CisKKwkvKiBQb3AgdGhlIGVycm9y IGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJl dmlvdXM7CisKKwllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBleGl0aW5nIiwgcHN0LT5u KTsKKworCS8qIFNpZ25hbCBtYWluIHByb2Nlc3MgdGhhdCB3ZSBhcmUgZG9uZS4gKi8KKwlTZXRM YXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKK30KKworLyoKKyAqIFNldCB0aGUgZXhpdCBz dGF0dXMgc28gdGhhdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgY2FuIHJlYWxpemUgd2UgaGF2ZQor ICogc2h1dGRvd24uCisgKi8KK3N0YXRpYyB2b2lkCitBcHBseUJnd1NodXRkb3duKGludCBjb2Rl LCBEYXR1bSBhcmcpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4 KTsKKwlNeVBhcmFsbGVsU3RhdGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0VYSVQ7CisJU3Bp bkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11dGV4KTsKKworCWRzbV9kZXRhY2goKGRz bV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIEFwcGx5IEJh Y2tncm91bmQgV29ya2VyIGVudHJ5IHBvaW50CisgKi8KK3ZvaWQKK0FwcGx5Qmd3b3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQoreworCXZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKnBzdDsK KworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAq dG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xv dCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFM RU5dOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2go d29ya2VyX3Nsb3QpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQp OworCisJLyogTG9hZCB0aGUgc3Vic2NyaXB0aW9uIGludG8gcGVyc2lzdGVudCBtZW1vcnkgY29u dGV4dC4gKi8KKwlBcHBseUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5 Q29udGV4dCwKKwkJCQkJCQkJCQkgIkFwcGx5Q29udGV4dCIsCisJCQkJCQkJCQkJIEFMTE9DU0VU X0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0 IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBt ZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJ CQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFu ZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWdu YWxzKCk7CisKKwkvKgorCSAqIENvbm5lY3QgdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50LgorCSAqCisJICogVGhlIGJhY2tlbmQgdGhhdCByZWdpc3RlcmVkIHRoaXMgd29ya2Vy IHBhc3NlZCB1cyB0aGUgSUQgb2YgYSBzaGFyZWQKKwkgKiBtZW1vcnkgc2VnbWVudCB0byB3aGlj aCB3ZSBtdXN0IGF0dGFjaCBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMuICBJbgorCSAqIG9yZGVy IHRvIGF0dGFjaCB0byBkeW5hbWljIHNoYXJlZCBtZW1vcnksIHdlIG5lZWQgYSByZXNvdXJjZSBv d25lci4KKwkgKiBPbmNlIHdlJ3ZlIG1hcHBlZCB0aGUgc2VnbWVudCBpbiBvdXIgYWRkcmVzcyBz cGFjZSwgYXR0YWNoIHRvIHRoZSB0YWJsZQorCSAqIG9mIGNvbnRlbnRzIHNvIHdlIGNhbiBsb2Nh dGUgdGhlIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQgdG8KKwkgKiBmaW5kIHdp dGhpbiB0aGUgc2VnbWVudC4KKwkgKi8KKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFJlc291cmNl T3duZXJDcmVhdGUoTlVMTCwgIkxvZ2ljYWwgYXBwbHkgd29ya2VyIik7CisJbWVtY3B5KCZoYW5k bGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNl ZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2Vn bWVudCIpKSk7CisJdG9jID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFH SUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFy ZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQoQXBwbHlCZ3dTaHV0 ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOworCisJLyogTG9vayB1cCB0aGUgcGFyYWxsZWwg c3RhdGUuICovCisJcHN0ID0gc2htX3RvY19sb29rdXAodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlf U0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFN0YXRlID0gcHN0OworCisJLyoKKwkgKiBBdHRh Y2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IEFQUExZX0JHV09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEs IE15UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJ1 biBhcyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4gKi8KKwlTZXRDb25maWdPcHRp b24oInNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNhIiwKKwkJCQkJUEdDX1NVU0VU LCBQR0NfU19PVkVSUklERSk7CisKKwkvKiBDb25uZWN0IHRvIG91ciBkYXRhYmFzZS4gKi8KKwlC YWNrZ3JvdW5kV29ya2VySW5pdGlhbGl6ZUNvbm5lY3Rpb25CeU9pZChNeUxvZ2ljYWxSZXBXb3Jr ZXItPmRiaWQsCisJCQkJCQkJCQkJCSAgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJ CQkJCQkJCSAgMCk7CisKKwkvKgorCSAqIFNldCBhbHdheXMtc2VjdXJlIHNlYXJjaCBwYXRoLCBz byBtYWxpY2lvdXMgdXNlcnMgY2FuJ3QgcmVkaXJlY3QgdXNlcgorCSAqIGNvZGUgKGUuZy4gcGdf aW5kZXguaW5kZXhwcnMpLgorCSAqLworCVNldENvbmZpZ09wdGlvbigic2VhcmNoX3BhdGgiLCAi IiwgUEdDX1NVU0VULCBQR0NfU19PVkVSUklERSk7CisKKwkvKgorCSAqIFNldCB0aGUgY2xpZW50 IGVuY29kaW5nIHRvIHRoZSBkYXRhYmFzZSBlbmNvZGluZywgc2luY2UgdGhhdCBpcyB3aGF0CisJ ICogdGhlIGxlYWRlciB3aWxsIGV4cGVjdC4KKwkgKi8KKwlTZXRDbGllbnRFbmNvZGluZyhHZXRE YXRhYmFzZUVuY29kaW5nKCkpOworCisJc3RyZWFtX3hpZCA9IHBzdC0+c3RyZWFtX3hpZDsKKwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJTXlTdWJzY3JpcHRpb24gPSBHZXRTdWJzY3JpcHRp b24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJaWYgKCFNeVN1YnNjcmlwdGlv bikKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgorCQkJCQkJInN0YXJ0 IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJ CQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQlwcm9jX2V4aXQoMCk7CisJfQor CisJTXlTdWJzY3JpcHRpb25WYWxpZCA9IHRydWU7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOworCisJLyogU2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0 aGUgdXNlcidzIHdpc2hlcyAqLworCVNldENvbmZpZ09wdGlvbigic3luY2hyb25vdXNfY29tbWl0 IiwgTXlTdWJzY3JpcHRpb24tPnN5bmNjb21taXQsCisJCQkJCVBHQ19CQUNLRU5ELCBQR0NfU19P VkVSUklERSk7CisKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0IHN1YnNjcmlwdGlvbiBjaGFu Z2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTk9JRCwK KwkJCQkJCQkJICBzdWJzY3JpcHRpb25fY2hhbmdlX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7 CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9u IG9yaWdpbiB0cmFja2luZy4gKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCXNucHJp bnRmKG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSwgInBnXyV1IiwgTXlTdWJzY3JpcHRp b24tPm9pZCk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1 ZSk7CisJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKKwkJb3JpZ2luaWQgPSByZXBsb3JpZ2lu X2NyZWF0ZShvcmlnaW5uYW1lKTsKKworCS8qCisJICogVGhlIGFwcGx5IGJhY2tncm91bmQgd29y a2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRoaXMgcmVwbGljYXRpb24KKwkgKiBvcmln aW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRlciBwcm9jZXNzLgorCSAq LworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgZmFsc2UpOworCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29u dGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJICovCisJYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRl eHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKworCS8qCisJICogSW5kaWNhdGUg dGhhdCB3ZSdyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgcmVhZHkgdG8gYmVnaW4gdGhlIG1haW4g cGFydAorCSAqIG9mIHRoZSBhcHBseSBvcGVyYXRpb24uCisJICovCisJYXBwbHlfYmd3b3JrZXJf c2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9BVFRBQ0hFRCk7CisKKwllbG9nKERFQlVHMSwgIltB cHBseSBCR1cgIyV1XSBzdGFydGVkIiwgcHN0LT5uKTsKKworCUxvZ2ljYWxBcHBseUJnd0xvb3Ao bXFoLCBwc3QpOworCisJLyoKKwkgKiBXZSdyZSBkb25lLiAgRXhwbGljaXRseSBkZXRhY2ggdGhl IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBzbyB0aGF0IHdlCisJICogZG9uJ3QgZ2V0IGEgcmVzb3Vy Y2UgbGVhayB3YXJuaW5nIGF0IGNvbW1pdCB0aW1lLiAgVGhpcyB3aWxsIGZpcmUgYW55CisJICog b25fZHNtX2RldGFjaCBjYWxsYmFja3Mgd2UndmUgcmVnaXN0ZXJlZCwgYXMgd2VsbC4gIE9uY2Ug dGhhdCdzIGRvbmUsCisJICogd2UgY2FuIGdvIGFoZWFkIGFuZCBleGl0LgorCSAqLworCWRzbV9k ZXRhY2goc2VnKTsKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWlj IHNoYXJlZCBtZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lv biB0aGF0IGNvbnRhaW5zIGEgQXBwbHlCZ3dvcmtlclNoYXJlZCwKKyAqIHBsdXMgb25lIHJlZ2lv biBwZXIgbWVzc2FnZSBxdWV1ZS4gVGhlcmUgYXJlIGFzIG1hbnkgbWVzc2FnZSBxdWV1ZXMgYXMK KyAqIHRoZSBudW1iZXIgb2Ygd29ya2Vycy4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2Jnd29y a2VyX3NldHVwX2RzbShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSkKK3sKKwlzaG1fdG9jX2Vz dGltYXRvciBlOworCVNpemUJCXNlZ3NpemU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9j ICAgICp0b2M7CisJQXBwbHlCZ3dvcmtlclNoYXJlZCAqcHN0OworCXNobV9tcQkgICAqbXE7CisJ aW50NjQJCXF1ZXVlX3NpemUgPSAxNjAwMDAwMDA7IC8qIDE2IE1CIGZvciBub3cgKi8KKworCS8q CisJICogRXN0aW1hdGUgaG93IG11Y2ggc2hhcmVkIG1lbW9yeSB3ZSBuZWVkLgorCSAqCisJICog QmVjYXVzZSB0aGUgVE9DIG1hY2hpbmVyeSBtYXkgY2hvb3NlIHRvIGluc2VydCBwYWRkaW5nIG9m IG9kZGx5LXNpemVkCisJICogcmVxdWVzdHMsIHdlIG11c3QgZXN0aW1hdGUgZWFjaCBjaHVuayBz ZXBhcmF0ZWx5LgorCSAqCisJICogV2UgbmVlZCBvbmUga2V5IHRvIHJlZ2lzdGVyIHRoZSBsb2Nh dGlvbiBvZiB0aGUgaGVhZGVyLCBhbmQgd2UgbmVlZAorCSAqIGFub3RoZXIga2V5IHRvIHRyYWNr IHRoZSBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRp YWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBzaXplb2Yo QXBwbHlCZ3dvcmtlclNoYXJlZCkpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIChTaXpl KSBxdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMSArIDEpOworCXNl Z3NpemUgPSBzaG1fdG9jX2VzdGltYXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1l bW9yeSBzZWdtZW50IGFuZCBlc3RhYmxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcg PSBkc21fY3JlYXRlKHNobV90b2NfZXN0aW1hdGUoJmUpLCAwKTsKKwl0b2MgPSBzaG1fdG9jX2Ny ZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp LAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLwor CXBzdCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoQXBwbHlCZ3dvcmtlclNoYXJlZCkp OworCVNwaW5Mb2NrSW5pdCgmcHN0LT5tdXRleCk7CisJcHN0LT5zdGF0dXMgPSBBUFBMWV9CR1dP UktFUl9CVVNZOworCXBzdC0+c2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24o TG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CisJcHN0LT5zdHJlYW1feGlkID0gc3RyZWFtX3hpZDsK Kwlwc3QtPm4gPSBsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNMaXN0KSArIDE7CisKKwlzaG1fdG9j X2luc2VydCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQsIHBzdCk7CisKKwkvKiBTZXQg dXAgb25lIG1lc3NhZ2UgcXVldWUgcGVyIHdvcmtlciwgcGx1cyBvbmUuICovCisJbXEgPSBzaG1f bXFfY3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9jLCAoU2l6ZSkgcXVldWVfc2l6ZSksCisJCQkJ CSAgIChTaXplKSBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIEFQUExZX0JHV09S S0VSX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCisJLyog QXR0YWNoIHRoZSBxdWV1ZXMuICovCisJd3N0YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNo KG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdz dGF0ZS0+ZHNtX3NlZyA9IHNlZzsKKwl3c3RhdGUtPnBzdGF0ZSA9IHBzdDsKK30KKworLyoKKyAq IFN0YXJ0IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJl ZCBtZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRlICoKK2FwcGx5 X2Jnd29ya2VyX3NldHVwKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCWJv b2wJCWxhdW5jaGVkOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCisJZWxvZyhERUJV RzEsICJzZXR0aW5nIHVwIGFwcGx5IHdvcmtlciAjJXUiLCBsaXN0X2xlbmd0aChBcHBseVdvcmtl cnNMaXN0KSArIDEpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOworCisJd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqKSBwYWxsb2MwKHNp emVvZihBcHBseUJnd29ya2VyU3RhdGUpKTsKKworCS8qIFNldHVwIHNoYXJlZCBtZW1vcnkgKi8K KwlhcHBseV9iZ3dvcmtlcl9zZXR1cF9kc20od3N0YXRlKTsKKworCWxhdW5jaGVkID0gbG9naWNh bHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlN eVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJ CQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQs CisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdzdGF0ZS0+ZHNtX3NlZykpOworCisJaWYg KGxhdW5jaGVkKQorCXsKKwkJLyogV2FpdCBmb3Igd29ya2VyIHRvIGF0dGFjaC4gKi8KKwkJYXBw bHlfYmd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9BVFRBQ0hFRCk7CisK KwkJQXBwbHlXb3JrZXJzTGlzdCA9IGxhcHBlbmQoQXBwbHlXb3JrZXJzTGlzdCwgd3N0YXRlKTsK Kwl9CisJZWxzZQorCXsKKwkJcGZyZWUod3N0YXRlKTsKKwkJd3N0YXRlID0gTlVMTDsKKwl9CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd3N0YXRlOwor fQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5IHF1ZXVlLgorICovCit2b2lkCithcHBseV9iZ3dv cmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLCBj b25zdCB2b2lkICpkYXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0g c2htX21xX3NlbmQod3N0YXRlLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUp OworCisJaWYgKHJlc3VsdCAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCB0dXBsZXMgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIp KSk7Cit9CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgcmVhY2hlcyB0aGUKKyAqICd3YWl0X2Zvcl9zdGF0dXMnCisgKi8KK3ZvaWQKK2Fw cGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJ QXBwbHlCZ3dvcmtlclN0YXR1cyB3YWl0X2Zvcl9zdGF0dXMpCit7CisJZm9yICg7OykKKwl7CisJ CWNoYXIJCXN0YXR1czsKKworCQlTcGluTG9ja0FjcXVpcmUoJndzdGF0ZS0+cHN0YXRlLT5tdXRl eCk7CisJCXN0YXR1cyA9IHdzdGF0ZS0+cHN0YXRlLT5zdGF0dXM7CisJCVNwaW5Mb2NrUmVsZWFz ZSgmd3N0YXRlLT5wc3RhdGUtPm11dGV4KTsKKworCQkvKiBEb25lIGlmIGFscmVhZHkgaW4gY29y cmVjdCBzdGF0dXMuICovCisJCWlmIChzdGF0dXMgPT0gd2FpdF9mb3Jfc3RhdHVzKQorCQkJYnJl YWs7CisKKwkJLyogSWYgYW55IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFzdGVyKSBoYXZlIGRpZWQs IHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUg ZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3c3RhdGUtPnBzdGF0ZS0+ biwgd3N0YXRlLT5wc3RhdGUtPnN0cmVhbV94aWQpKSk7CisKKwkJLyogV2FpdCB0byBiZSBzaWdu YWxsZWQuICovCisJCVdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09O X1BNX0RFQVRILCAwLAorCQkJCSAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFU RV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLwor CQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1 cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CisJfQorfQorCisvKgorICogQ2hlY2sgdGhlIHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQg YW4gZXJyb3IgaWYgYW55IGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVu ZXhwZWN0ZWRseS4KKyAqCisgKiBFeGl0IGlmIGFueSByZWxhdGlvbiBpcyBub3QgaW4gdGhlIFJF QURZIHN0YXRlIGFuZCBpZiBhbnkgd29ya2VyIGlzIGhhbmRsaW5nCisgKiB0aGUgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIGF0IHRoZSBzYW1lIHRpbWUuIEJlY2F1c2UgZm9yIHN0cmVhbWluZworICog dHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciwgd2UgY2Fubm90CisgKiBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZv ciBhIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWQorICogc3RhdGUgKHNlZSBzaG91 bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9s c24KKyAqIGJ5IHRoYXQgdGltZS4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3Rh dHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIo KSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9BUFBMWSkKKwkJcmV0dXJu OworCisJZm9yZWFjaChsYywgQXBwbHlXb3JrZXJzTGlzdCkKKwl7CisJCUFwcGx5Qmd3b3JrZXJT dGF0ZSAqd3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCS8q CisJCSAqIFdlIGRvbid0IGxvY2sgaGVyZSBhcyBpbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIGp1 c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWlsdXJlIG9mIHdvcmtlciBhIGJpdCBsYXRlci4KKwkJICov CisJCWlmICh3c3RhdGUtPnBzdGF0ZS0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhp dGVkIHVuZXhwZWN0ZWRseSIsCisJCQkJCQkJd3N0YXRlLT5wc3RhdGUtPm4pKSk7CisJfQorCisJ aWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0ZyZWVMaXN0KSAhPSBsaXN0X2xlbmd0aChBcHBs eVdvcmtlcnNMaXN0KSAmJgorCQkhQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJeworCQllcmVwb3J0 KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcnMgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IiwKKwkJCQkJCU15U3Vic2NyaXB0aW9u LT5uYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0 aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5ICIKKwkJCQkJCSAgICJiZ3dvcmtlcnMgdW50aWwgYWxs IHRhYmxlcyBhcmUgc3luY2hyb25pemVkIikpKTsKKworCQlwcm9jX2V4aXQoMCk7CisJfQorfQor CisvKiBTZXQgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHN0YXR1cyAqLwordm9pZAorYXBw bHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cykKK3sKKwlp ZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCWVsb2coREVCVUcxLCAiW0Fw cGx5IEJHVyAjJXVdIHNldCBzdGF0dXMgdG8gJWQiLCBNeVBhcmFsbGVsU3RhdGUtPm4sIHN0YXR1 cyk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOworCU15UGFy YWxsZWxTdGF0ZS0+c3RhdHVzID0gc3RhdHVzOworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxl bFN0YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3Vi eGFjdCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogSW5zaWRl IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdlIGNhbiBmaWd1cmUgb3V0IHRoYXQgbmV3IHN1YnRy YW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBpZiBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBkaWZm ZXJlbnQgeGlkLiBJbiB0aGF0IGNhc2Ugd2UgY2FuIGRlZmluZQorICogbmFtZWQgc2F2ZXBvaW50 LCBzbyB0aGF0IHdlIHdlcmUgYWJsZSB0byBjb21taXQvcm9sbGJhY2sgaXQgc2VwYXJhdGVseQor ICogbGF0ZXIuCisgKiBTcGVjaWFsIGNhc2UgaXMgaWYgdGhlIGZpcnN0IGNoYW5nZSBjb21lcyBm cm9tIHN1YnRyYW5zYWN0aW9uLCB0aGVuCisgKiB3ZSBjaGVjayB0aGF0IGN1cnJlbnRfeGlkIGRp ZmZlcnMgZnJvbSBzdHJlYW1feGlkLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zdWJ4YWN0 X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlk ICE9IHN0cmVhbV94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkg Y3VycmVudF94aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFt ZVtNQVhQR1BBVEhdOworCisJCXNucHJpbnRmKHNwbmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50 X2Zvcl94aWRfJXUiLCBjdXJyZW50X3hpZCk7CisKKwkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdX ICMldV0gZGVmaW5pbmcgc2F2ZXBvaW50ICVzIiwKKwkJCSBNeVBhcmFsbGVsU3RhdGUtPm4sIHNw bmFtZSk7CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJy ZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGFhMjQyN2JhNzMuLjAwZmRk ZTA4MzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUx LDkgKzY1MSwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3Vi eGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBh cnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0 KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJ CQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIs IHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIs IHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgy MSwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwg WExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFj dHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2Vk LT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJ CQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3Jk ZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7 CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVu ZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVj b2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YwppbmRleCAyYmRhYjUzZTE5Li4yMDFmNTEyMzJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC03Myw2ICs3Myw3IEBAIHN0YXRpYyB2b2lkIGxvZ2lj YWxyZXBfbGF1bmNoZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZv aWQgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIp OwogCiBzdGF0aWMgYm9vbCBvbl9jb21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAg LTIyMyw2ICsyMjQsMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCBy ZWxpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxv Z2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CiAKKwkJLyogV2Ugb25seSBuZWVkIG1haW4gYXBwbHkg d29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyIGhlcmUgKi8KKwkJaWYgKHctPnN1YndvcmtlcikK KwkJCWNvbnRpbnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYg dy0+cmVsaWQgPT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7 CkBAIC0yNTksMTEgKzI2NCwxMSBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQs IGJvb2wgb25seV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwg aWYgcG9zc2libGUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChP aWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJ CQkJIE9pZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2Rz bSkKIHsKIAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpi Z3dfaGFuZGxlOwpAQCAtMjczLDYgKzI3OCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go T2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKIAlU aW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfc3Vid29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0g RFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFdlIGRvbid0IHN1cHBvcnQgdGFibGUgc3luYyBp biBzdWJ3b3JrZXIgKi8KKwlBc3NlcnQoIShpc19zdWJ3b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxp ZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRlcm5hbCgic3RhcnRpbmcg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAt MzUwLDcgKzM1OSw3IEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dv cmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2Nr UmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNl OwogCX0KIAogCS8qCkBAIC0zNjQsNyArMzczLDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJS Q09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1p Z2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkp OwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3Jr ZXIgc2xvdC4gKi8KQEAgLTM3OSw2ICszODgsNyBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRl ID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPnN1 YndvcmtlciA9IGlzX3N1YndvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElN RVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTkgKzQwNiwz MCBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJn dy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnBy aW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25w cmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWlu Iik7CisKKwlpZiAoIWlzX3N1YndvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9u YW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50Zihi Z3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseUJnd29ya2VyTWFpbiIpOwor CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19N QVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u ICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOwotCWVsc2UKKwllbHNlIGlmICghaXNfc3Vid29y a2VyKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCWVsc2UK KwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9naWNhbCByZXBs aWNhdGlvbiBiYWNrZ3JvdW5kIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1ICIsIHN1 YmlkKTsKIAlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciIpOwogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVT VEFSVDsKIAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2Fy ZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfc3Vid29ya2VyKQorCQltZW1jcHko Ymd3LmJnd19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7CisKIAlp ZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQog CXsKIAkJLyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdvcmtlciBz bG90LiAqLwpAQCAtNDIxLDExICs0NDIsMTMgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09E RV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgYmFj a2dyb3VuZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8g aW5jcmVhc2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4g ZmFsc2U7CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCiAJV2FpdEZv clJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7 CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTQzNiw3ICs0NTksNiBAQCB2b2lkCiBsb2dp Y2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogewogCUxvZ2ljYWxSZXBX b3JrZXIgKndvcmtlcjsKLQl1aW50MTYJCWdlbmVyYXRpb247CiAKIAlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCkBAIC00NDksNiArNDcxLDIyIEBAIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJCXJldHVybjsKIAl9 CiAKKwlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlcik7CisKKwlMV0xvY2tS ZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFdvcmtob3JzZSBmb3Ig bG9naWNhbHJlcF93b3JrZXJfc3RvcCgpIGFuZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2goKS4g U3RvcAorICogdGhlIHdvcmtlciBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLgorICovCitzdGF0aWMg dm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIpCit7CisJdWludDE2CQlnZW5lcmF0aW9uOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1l KExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKIAkvKgogCSAqIFJlbWVtYmVyIHdoaWNoIGdlbmVy YXRpb24gd2FzIG91ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNrIGlmIHdoYXQgd2Ugc2VlCiAJICog aXMgc3RpbGwgdGhlIHNhbWUgb25lLgpAQCAtNDg1LDEwICs1MjMsNyBAQCBsb2dpY2FscmVwX3dv cmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcg dGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYg KCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJ ewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0J CX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAq LwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNTIyLDggKzU1Nyw2IEBAIGxvZ2ljYWxyZXBfd29y a2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2Fs UmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Ci0KLQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoKQEAgLTU5OSw2ICs2MzIsMjkgQEAgbG9naWNhbHJlcF93 b3JrZXJfYXR0YWNoKGludCBzbG90KQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2Rl dGFjaCh2b2lkKQogeworCS8qCisJICogSWYgd2UgYXJlIHRoZSBtYWluIGFwcGx5IHdvcmtlciwg c3RvcCBhbGwgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycworCSAqIHdlIHN0YXJ0ZWQgYmVm b3JlLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJ3b3JrZXIpCisJeworCQlM aXN0CSAgICp3b3JrZXJzOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJCXdvcmtlcnMgPSBsb2dpY2FscmVw X3dvcmtlcnNfZmluZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwkJZm9yZWFj aChsYywgd29ya2VycykKKwkJeworCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVw V29ya2VyICopIGxmaXJzdChsYyk7CisKKwkJCWlmICh3LT5zdWJ3b3JrZXIpCisJCQkJbG9naWNh bHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3KTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAq LwogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAK QEAgLTYyMSw2ICs2NzcsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBX b3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5z dWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2Vy LT5zdWJ3b3JrZXIgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTg2OCw3ICs5MjUsNyBAQCBBcHBseUxh dW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZl X3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRi aWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlk T2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5W QUxJRCk7CiAJCQkJfQogCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmln aW4uYwppbmRleCAyMTkzN2FiMmQzLi45MjczMDExYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNjMsMTIgKzEwNjMsMjEgQEAgUmVwbGljYXRpb25P cmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBo YXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGluZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2Fk dmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNh biBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKKyAqIE5vcm1hbGx5IG9ubHkgb25l IHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50 CiAgKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91 cyB2YWx1ZSBpcyB0b3JuIGRvd24KICAqIHdpdGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCku CisgKgorICogSG93ZXZlciwgSWYgbXVzdF9hY3F1aXJlIGlzIGZhbHNlLCB3ZSBhbGxvdyBwcm9j ZXNzIHRvIGdldCB0aGUgc2xvdCB3aGljaCBpcworICogYWxyZWFkeSBhY3F1aXJlZCBieSBvdGhl ciBwcm9jZXNzLiBJdCdzIHNhZmUgYmVjYXVzZSAxKSBUaGUgb25seSBjYWxsZXIKKyAqIChhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwgbWFpbnRhaW4gdGhlIGNvbW1pdCBvcmRlciBieSBh bGxvd2luZyBvbmx5CisgKiBvbmUgcHJvY2VzcyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBubyB0 d28gd29ya2VycyB3aWxsIGJlIG9wZXJhdGluZyBvbiB0aGUKKyAqIHNhbWUgb3JpZ2luIGF0IHRo ZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cyBpbiBsb2dpY2FsL3dvcmtlci5jKS4gMikgRXZlbgor ICogdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNlIHRoZSBzZXNzaW9uJ3Mgb3JpZ2luIGNvbmN1cnJl bnRseSwgaXQncyBzYWZlIHRvIGRvCisgKiBzbyBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vz c2lvbl9vcmlnaW4gTFNOcyB1bmRlciByZXBsaWNhdGVfc3RhdGUKKyAqIExXTG9jay4KICAqLwog dm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBtdXN0X2FjcXVpcmUpCiB7 CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTEwLDcg KzExMTksNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJ aWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlm IChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVp cmVkX2J5ICE9IDAgJiYgbXVzdF9hY3F1aXJlKQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApAQCAtMTE0MSw3ICsxMTUwLDE0IEBA IHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0KHNl c3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklkKTsK IAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOwor CWlmIChtdXN0X2FjcXVpcmUpCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVk X2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFj cXVpcmVkX2J5ID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9D T05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgZmlu ZCBjb3JyZWN0IHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3 aXRoIE9JRCAldSBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIiLAorCQkJCQkJbm9kZSksCisJ CQkJIGVycmhpbnQoIlRoZXJlIGlzIG5vIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3Qgc2V0IGJ5IGl0 cyBtYWluIGFwcGx5IHdvcmtlci4iKSkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9y aWdpbkxvY2spOwogCkBAIC0xMzIxLDcgKzEzMzcsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5f c2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmlu ZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2lu ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25f c2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCB0cnVlKTsK IAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNlMmQyLi5hODg4MDM4ZWI0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTY2LDI4ICsxMTY2LDQ3 IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxS ZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAg VHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhM b2dSZWNQdHIgYWJvcnRfbHNuKQogewogCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNH X1NUUkVBTV9BQk9SVCk7CiAKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBU cmFuc2FjdGlvbklkSXNWYWxpZChzdWJ4aWQpKTsKKwlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh0eG4tPnhpZCkpOwogCiAJLyogdHJhbnNh Y3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwotCXBxX3NlbmRpbnQzMihvdXQs IHN1YnhpZCk7CisJcHFfc2VuZGludDMyKG91dCwgdHhuLT54aWQpOworCXBxX3NlbmRpbnQ2NChv dXQsIGFib3J0X2xzbik7CisJcHFfc2VuZGludDY0KG91dCwgdHhuLT54YWN0X3RpbWUuYWJvcnRf dGltZSk7CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3Ry ZWFtLgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g aW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQor bG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dp Y2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIGluY2x1ZGVf YWJvcnRfbHNuKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0 YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2Rh dGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50 KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwkvKgorCSAqIElmIHRo ZSB2ZXJzaW9uIG9mIHRoZSBwdWJsaXNoZXIgaXMgbG93ZXIgdGhhbiB0aGUgdmVyc2lvbiBvZiB0 aGUKKwkgKiBzdWJzY3JpYmVyLCBpdCBtYXkgbm90IHN1cHBvcnQgc2VuZGluZyB0aGVzZSB0d28g ZmllbGRzLCBzbyBvbmx5IHRha2UKKwkgKiB0aGVzZSBmaWVsZHMgd2hlbiBpbmNsdWRlX2Fib3J0 X2xzbiBpcyB0cnVlLgorCSAqLworCWlmIChpbmNsdWRlX2Fib3J0X2xzbikKKwl7CisJCWFib3J0 X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJv cnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3Rp bWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggOGRhNWY5MDg5Yy4uM2QyYmJkYjM4ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTI4MjYs NyArMjgyNiw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVy QWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJ UmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODM3LDYgKzI4MzgsOCBAQCBSZW9yZGVyQnVm ZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFi b3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBu b3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNf c3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTExLDcgKzI5MTQsOCBAQCBSZW9yZGVyQnVmZmVyQWJv cnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVubmluZ1hpZCkK ICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24gaW5jb21wbGV0 ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyRm9yZ2V0KFJl b3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJ CVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBA IC0yOTIyLDYgKzI5MjYsOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQog CQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwog CS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91 dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCXJiLT5zdHJl YW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCmluZGV4IDY3MGM2ZmNhZGEuLjhmZmJhN2UyZTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNTY4LDcgKzU2OCw4IEBAIHBy b2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJ CQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlw dGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJ CQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAor CQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3Rh cnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTU4OSw2ICs1OTAsOSBAQCBwcm9jZXNz X3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAog cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCWlmIChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcikKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxl c3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50 X2xzbik7CiAJZWxzZQpAQCAtMTI3Myw3ICsxMjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0 YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3lu YyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShv cmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7 CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxv cmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBA QCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQog CQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwog CQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJl cGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggZmMyMTBhOWU3Yi4uMzJiZjUxNmViZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiwyNSBAQAogICog U1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVh bWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBs aW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1 dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5k IHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICog dXBzdHJlYW0pIGFyZSBhcHBsaWVkIHZpYSBvbmUgb2YgdHdvIGFwcHJvYWNoZXMuCisgKgorICog MSkgU2VwYXJhdGUgYmFja2dyb3VuZCB3b3JrZXJzCisgKgorICogQXNzaWduIGEgbmV3IGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgdGhlIHhhY3Qncwor ICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkIGFuZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgd2ls bCBzZW5kIGNoYW5nZXMgdG8gdGhpcworICogbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4g V2Uga2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxsIHRoZQorICogdHJhbnNhY3Rpb24gY29t bWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0 CisgKiBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzIHdy aXRpbmcgdG8gYW5kIHJlYWRpbmcKKyAqIGZyb20gZmlsZSBpbiBtb3N0IGNhc2VzLiBXZSBzdGls bCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlcgorICogYXZhaWxhYmxlLiBXZSBh bHNvIG5lZWQgdG8gYWxsb3cgc3RyZWFtX3N0b3AgdG8gY29tcGxldGUgYnkgdGhlIGJhY2tncm91 bmQKKyAqIHdvcmtlciB0byBhdm9pZCBkZWFkbG9ja3MgYmVjYXVzZSBULTEncyBjdXJyZW50IHN0 cmVhbSBvZiBjaGFuZ2VzIGNhbiB1cGRhdGUKKyAqIHJvd3MgaW4gY29uZmxpY3Rpbmcgb3JkZXIg d2l0aCBULTIncyBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLgorICoKKyAqIDIpIFdyaXRlIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAq CisgKiBJZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlIHRvIGhhbmRsZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbiwgdGhlIGRhdGEgaXMKKyAqIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVu IGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQKKyAqIGFycml2ZXMuCiAgKgog ICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVh bWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9w bGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9ucy4gVGhpcwpAQCAtMjE5LDIwICsy MzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBs ZVJvdXRpbmcgKnByb3V0ZTsJLyogcGFydGl0aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4 ZWN1dGlvbkRhdGE7CiAKLS8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkg ZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwotdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxi YWNrQXJnCi17Ci0JTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICov Ci0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7Ci0KLQkvKiBSZW1vdGUgbm9kZSBpbmZvcm1h dGlvbiAqLwotCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KLQlUcmFu c2FjdGlvbklkIHJlbW90ZV94aWQ7Ci0JWExvZ1JlY1B0cglmaW5pc2hfbHNuOwotCWNoYXIJICAg Km9yaWdpbl9uYW1lOwotfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7Ci0KLXN0YXRpYyBBcHBseUVy cm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KK0FwcGx5RXJyb3JDYWxs YmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAku cmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyNDYsNyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNr QXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07 CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVt b3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBw bHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcgKzI1NSwzOCBAQCBzdGF0aWMgTWVtb3J5Q29udGV4 dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1Jl cFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9u ID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wJ CU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAogYm9vbAkJaW5fcmVtb3RlX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1JlY1B0ciByZW1vdGVfZmluYWxfbHNuID0gSW52YWxp ZFhMb2dSZWNQdHI7CiAKIC8qIGZpZWxkcyB2YWxpZCBvbmx5IHdoZW4gcHJvY2Vzc2luZyBzdHJl YW1lZCB0cmFuc2FjdGlvbiAqLwotc3RhdGljIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24g PSBmYWxzZTsKK2Jvb2wJCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKK1RyYW5z YWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworc3RhdGljIEFwcGx5 Qmd3b3JrZXJTdGF0ZSAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIGNoZWNrIGlm IHdlIGFyZSBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24gaW4gYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIgKi8KKyNkZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5z YWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKIAotc3RhdGljIFRyYW5zYWN0 aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworLyoKKyAqIFRoZSBudW1i ZXIgb2YgY2hhbmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkg YmFja2dyb3VuZAorICogd29ya2VycykKKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7 CiAKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5n ZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhl IHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4K ICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRp bCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19z dWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdl dHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRo ZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2Vk IG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2Fz ZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9v bGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNr aXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBU aGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcg dGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRo ZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJv bQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tp cCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGluIGFwcGx5IG1vZGUsCisgKiBiZWNhdXNlIHdl IGNhbm5vdCBnZXQgdGhlIGZpbmlzaCBMU04gYmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgog ICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9n UmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVj UHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hfbHNuKSkpCkBAIC0zMjQsOSArMzM5LDYgQEAg c3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAogc3RhdGljIHZv aWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBuZWVk ZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNwYXRj aChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVy bmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBs eV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJ CQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNTksNyArMzcxLDYgQEAgc3RhdGlj IHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJfc3Vi c2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0aW9u cyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9yX2Nh bGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlu bGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIApAQCAtNDI2 LDQxICs0MzcsNzYgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhh bmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rp b25zIGZvciBib3RoIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3 b3JrZXIuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9m IHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZp bGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBJbiBzdHJlYW1pbmcg Y2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAq IFNVQlNUUkVBTV9PTiBtb2RlLCB3ZSBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0 aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZvciBTVUJTVFJFQU1fQVBQ TFkgbW9kZSwgd2Ugc2VuZCB0aGUgY2hhbmdlcyB0byBiYWNrZ3JvdW5kCisgKiBhcHBseSB3b3Jr ZXIgKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFu Z2VzIHdpbGwKKyAqIGFsc28gYmUgYXBwbGllZCBpbiBtYWluIGFwcGx5IHdvcmtlcikuCiAgKgot ICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lz ZSAocmVndWxhciBtb2RlKS4KKyAqIEZvciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1 cm5zIGZhbHNlOworICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlm IGluIG1haW4gYXBwbHkgd29ya2VyIChleGNlcHQgd2UKKyAqIGFwcGx5IHN0cmVhbWVkIHRyYW5z YWN0aW9uIGluICJhcHBseSIgbW9kZSBhbmQgYWRkcmVzcworICogTE9HSUNBTF9SRVBfTVNHX1JF TEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMpLCBmYWxzZSBvdGhlcndpc2Uu CiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJl cE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJ VHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyog bm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK KwlpZiAoIShpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkK IAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQg aGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhl CiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQo cywgNCk7CisJY3VycmVudF94aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50 X3hpZCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQg aW4gc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBu ZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4 YWN0X2luZm9fYWRkKHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBk ZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jn d29ya2VyX3N1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOwogCi0JLyogd3JpdGUgdGhlIGNo YW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24s IHMpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWVsc2UgaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2 ZSgpKQorCXsKKwkJLyoKKwkJICogSWYgd2UgZGVjaWRlZCB0byBhcHBseSB0aGUgY2hhbmdlcyBv ZiB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5CisJCSAqIGJhY2tncm91bmQgd29ya2VyLCBw YXNzIHRoZSBkYXRhIHRvIHRoZSB3b3JrZXIuCisJCSAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5k X2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMg Kz0gMTsKKworCQkvKgorCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlz IHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiwgc28gYWxzbyB1cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUg aW4gbWFpbiBhcHBseSB3b3JrZXIgaGVyZS4gU2VlIGZ1bmN0aW9uCisJCSAqIGNsZWFudXBfcmVs X3N5bmNfY2FjaGUuCisJCSAqLworCQlpZiAoYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19SRUxB VElPTiB8fAorCQkJYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19UWVBFKQorCQkJcmV0dXJuIGZh bHNlOworCX0KKwllbHNlCisJeworCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJh eSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRf eGlkKTsKKworCQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KKwkJ c3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCX0KIAogCXJldHVybiB0cnVlOwogfQpA QCAtODQ0LDYgKzg5MCw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJ YXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sg dGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlf Ymd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBh cmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190 YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTg5OCw3ICs5NDcsOSBAQCBhcHBseV9o YW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJl X2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNl IHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRy YW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJ aWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisK IAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcg QmVnaW4gY29tbWFuZC4gKi8KIAogCS8qCkBAIC05NTAsNiArMTAwMSw5IEBAIGFwcGx5X2hhbmRs ZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl OwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBh bnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkvKiBQcm9jZXNzIGFu eSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXBy b2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMDY0LDEw ICsxMTE4LDYgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28g cGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1h cmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9o YW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQpAQCAtMTA4OCwyNCArMTEzOCw3MCBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7 CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0 aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJ eworCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJYXBwbHlfaGFu ZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAKLQkvKiBSZXBsYXkgYWxsIHRo ZSBzcG9vbGVkIG9wZXJhdGlvbnMuICovCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJl X2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwot CWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQlwZ3N0YXRf cmVwb3J0X3N0YXQoZmFsc2UpOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWxp c3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOwogCi0JcGdzdGF0X3Jl cG9ydF9zdGF0KGZhbHNlKTsKKwkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dP UktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7CisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0 YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydChwcmVwYXJlX2RhdGEueGlkLCBmYWxz ZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCWVs b2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUi LAorCQkJIHByZXBhcmVfZGF0YS54aWQpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4g YXBwbHkgd29ya2VyLiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5z YWN0aW9uIGluIGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRl KQorCQl7CisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRh dGEpOworCisJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VS X0ZJTklTSEVEKTsKKwkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKworCQkJcGdzdGF0 X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0 YS5lbmRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRoZSBt YWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBzZXJp YWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAq LworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2Rh dGEucHJlcGFyZV9sc24pOworCisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJl ZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOwor CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0 KGZhbHNlKTsKKworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24p OworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogdW5saW5rIHRo ZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJ c3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9k YXRhLnhpZCk7CisJCX0KKwl9CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlz dHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkvKiBD aGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlh cHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0 aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTU1LDE1ICsxMjUxLDYgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0 ZSBTVFJFQU0gU1RBUlQgbWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rp b24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0J ICogb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4g d2hpY2ggY2FzZSBpdAotCSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxs IHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcg dGhlIGJ1ZmZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRh IGFuZCBzdWJ4YWN0IGluZm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJ Lyogbm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNh Y3Rpb24gKi8KIAlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTExNzcsMzYg KzEyNjQsOTIgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRy KTsKIAorCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJLyoKKwkJICogTWFrZSBzdXJl IHRoZSBoYW5kbGUgYXBwbHlfZGlzcGF0Y2ggbWV0aG9kcyBhcmUgYXdhcmUgd2UncmUgaW4gYQor CQkgKiByZW1vdGUgdHJhbnNhY3Rpb24uCisJCSAqLworCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSB0cnVlOworCisJCS8qIElmIHdlIGFyZSBpbiBhIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCBi ZWdpbiB0aGUgdHJhbnNhY3Rpb24gKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsK KwkJbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbigpOworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCQlyZXR1cm47CisJfQorCiAJLyoKLQkgKiBJbml0aWFsaXplIHRoZSB3b3Jr ZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCi0JICog dXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBp biBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZp cnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rpb24gYW5kIHRoZW4g dXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgotCSAqIE5v dywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBh cyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBi ZSB1c2VkLgorCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiBDaGVjayBpZiB0aGVy ZSBpcyBhbnkgZnJlZSBhcHBseQorCSAqIGJhY2tncm91bmQgd29ya2VyIHdlIGNhbiB1c2UgdG8g cHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgogCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5X2Jn d29ya2VyX2ZpbmRfb3Jfc3RhcnQoc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwlpZiAo c3RyZWFtX2FwcGx5X3dvcmtlcikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQkvKgor CQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJlZSB3b3JrZXIgb3IgaWYgd2UgYXJlIGFscmVhZHkg YXBwbHlpbmcgdGhpcworCQkgKiB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciwgdGhlbiB3ZSBwYXNzIHRoZSBkYXRhIHRvCisJCSAqIHRoYXQgd29ya2VyLgorCQkgKi8K KwkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFt X2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5kYXRhKTsKIAotCQlvbGRjdHggPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJbmNoYW5nZXMgPSAwOworCQllbG9nKERFQlVH MSwgInN0YXJ0aW5nIHN0cmVhbWluZyBvZiB4aWQgJXUiLCBzdHJlYW1feGlkKTsKKwl9CiAKLQkJ TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNl dCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsK KwkvKgorCSAqIElmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBmaXJzdCBzdHJlYW0g c3RhcnQsIHdlIHN0YXJ0IHRvCisJICogc2VyaWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUg dHJhbnNhY3Rpb24uCisJICovCisJZWxzZQorCXsKKwkJLyoKKwkJICogU3RhcnQgYSB0cmFuc2Fj dGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkgKiBjb21t aXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIg aW4KKwkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5n IGFsbCB0aGUgbWVzc2FnZXMuCisJCSAqIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5k bGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3IKKwkJICogc2VyaWFsaXppbmcgdGhlIHN0cmVhbWlu ZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJCSAqLworCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkvKgorCQkgKiBJ bml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4g VGhpcyB3aWxsCisJCSAqIGJlIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdv cmtlciBzbyBjcmVhdGUgaXQgaW4gYQorCQkgKiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRl IHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nCisJCSAqIG1lc3NhZ2UgZnJvbSBhbnkg dHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlcgorCQkgKiBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhl IHN0YXJ0CisJCSAqIG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZSBz dXJlIHRoYXQgaXQgd2lsbCBldmVyCisJCSAqIGJlIHVzZWQuCisJCSAqLworCQlpZiAoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCQl7CisJCQlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKIAotCS8qIG9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rp b24gKi8KLQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVh bV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KEFwcGx5Q29udGV4dCk7CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwg b3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1 YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwor CQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmls ZVNldCkpOworCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCX0KIAotCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CisJCS8qIG9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8K KwkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlk LCBmaXJzdF9zZWdtZW50KTsKKworCQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVu dCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KKwkJaWYgKCFmaXJzdF9zZWdtZW50KQor CQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hp ZCk7CisKKwkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2Fj dGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwogfQogCiAvKgpAQCAtMTIyMCw0NCArMTM2Myw0 NyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJF QU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xv c2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3Jt YXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgot CSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCWlmIChhcHBseV9iZ3dvcmtlcl9hY3Rp dmUoKSkKKwl7CisJCWNoYXIJCWFjdGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsK IAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2Vy dChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJl YW1fYXBwbHlfd29ya2VyLCAxLCAmYWN0aW9uKTsKKwkJYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3Io c3RyZWFtX2FwcGx5X3dvcmtlciwgQVBQTFlfQkdXT1JLRVJfUkVBRFkpOwogCi0JLyogQ29tbWl0 IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCWVsb2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcgb2YgeGlkICV1LCAldSBjaGFu Z2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwgbmNoYW5nZXMpOworCX0KKwllbHNlCisJeworCQkv KgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlh bGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRy YW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwogCi0JaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRy YW5zYWN0aW9uIHN0YXRlICovCisJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisKKwkJ LyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCisJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1v cnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCX0KIAotCS8qIFJlc2V0 IHBlci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFt aW5nQ29udGV4dCk7CisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1f YXBwbHlfd29ya2VyID0gTlVMTDsKIAogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURM RSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0g KiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1l c3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQgdG8gZGlzay4KICAqLwogc3Rh dGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc2VyaWFs aXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQp CiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVB TSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9y ZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3 byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3Qs IHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgpAQCAt MTMzOSw4ICsxNDg1LDEzNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAJfQorfQogCi0JcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CisvKgorICog SGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJ VHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9k YXRhOworCWJvb2wgaW5jbHVkZV9hYm9ydF9sc247CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogQ2hlY2sgd2hldGhlciB0aGUgcHVibGlzaGVy IHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4gKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3Jr ZXIoKSkKKwkJaW5jbHVkZV9hYm9ydF9sc24gPSBNeVBhcmFsbGVsU3RhdGUtPnNlcnZlcl92ZXJz aW9uID49IDE1MDAwMDsKKworCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0 X2RhdGEsIGluY2x1ZGVfYWJvcnRfbHNuKTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1 YnhpZCA9IGFib3J0X2RhdGEuc3VieGlkOworCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJ eworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBhYm9ydGluZyBjdXJyZW50IHRyYW5z YWN0aW9uIHhpZD0ldSwgc3VieGlkPSV1IiwKKwkJCSBNeVBhcmFsbGVsU3RhdGUtPm4sIEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJCSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25J ZCgpKTsKKworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0 IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4K KwkJICovCisJCWlmIChpbmNsdWRlX2Fib3J0X2xzbikKKwkJeworCQkJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLmFib3J0X2xzbjsKKwkJCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS5hYm9ydF90aW1lOworCQl9CisKKwkJ LyoKKwkJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0 IG9mIHRvcGxldmVsIHhhY3QsCisJCSAqIHNvIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJ CSAqLworCQlpZiAoc3VieGlkID09IHhpZCkKKwkJeworCQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKKworCQkJQWJvcnRDdXJyZW50VHJh bnNhY3Rpb24oKTsKKworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKwor CQkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xs YmFjayB0byB0aGUgc2F2ZXBvaW50LgorCQkJICoKKwkJCSAqIFdlIGFsc28gbmVlZCB0byByZWFk IHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQKKwkJCSAqIHRyYWNrZWQgZm9y IHRoZSBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCQkgKi8KKwkJCWludAkJCWk7 CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCQkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisK KwkJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0 cik7CisJCQlzbnByaW50ZihzcG5hbWUsIE1BWFBHUEFUSCwgInNhdmVwb2ludF9mb3JfeGlkXyV1 Iiwgc3VieGlkKTsKKworCQkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gcm9sbGluZyBi YWNrIHRvIHNhdmVwb2ludCAlcyIsCisJCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgc3BuYW1lKTsK KworCQkJZm9yIChpID0gbGlzdF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0p CisJCQl7CisJCQkJeGlkID0gKFRyYW5zYWN0aW9uSWQpIGxpc3RfbnRoX2ludChzdWJ4YWN0bGlz dCwgaSk7CisJCQkJaWYgKHhpZCA9PSBzdWJ4aWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7 CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJeworCQkJCVJv bGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsK KwkJCX0KKworCQkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9SRUFE WSk7CisJCX0KKworCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKKwl9CisJZWxz ZQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5k X29yX3N0YXJ0KHhpZCwgZmFsc2UpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBw bHkgd29ya2VyLiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzCisJCSAqIHRyYW5zYWN0 aW9uIGluIGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQor CQl7CisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEp OworCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJCXsKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0 X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCQlhcHBseV9iZ3dvcmtl cl9mcmVlKHdzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9m b3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9SRUFEWSk7CisJCX0KKworCQkvKgorCQkgKiBXZSBh cmUgaW4gbWFpbiBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJp YWxpemVkCisJCSAqIHRvIGZpbGUuCisJCSAqLworCQllbHNlCisJCQlzZXJpYWxpemVfc3RyZWFt X2Fib3J0KHhpZCwgc3VieGlkKTsKKwl9CiB9CiAKIC8qCkBAIC0xNDYyLDQwICsxNzM3LDYgQEAg YXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24p CiAJcmV0dXJuOwogfQogCi0vKgotICogSGFuZGxlIFNUUkVBTSBDT01NSVQgbWVzc2FnZS4KLSAq Lwotc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykK LXsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0 YTsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRl cm5hbCgiU1RSRUFNIENPTU1JVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwotCi0J eGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKLQlz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7 Ci0KLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rp b24gJXUiLCB4aWQpOwotCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRh LmNvbW1pdF9sc24pOwotCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOwotCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQg c3VieGFjdCBpbmZvICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKLQotCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBz eW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCi0JcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21t aXRfZGF0YS5lbmRfbHNuKTsKLQotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7Ci0KLQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKLX0KLQogLyoKICAq IEhlbHBlciBmdW5jdGlvbiBmb3IgYXBwbHlfaGFuZGxlX2NvbW1pdCBhbmQgYXBwbHlfaGFuZGxl X3N0cmVhbV9jb21taXQuCiAgKi8KQEAgLTI0NDUsMTEgKzI2ODYsMTA1IEBAIGFwcGx5X2hhbmRs ZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIH0KIAor LyoKKyAqIEhhbmRsZSBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCith cHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCit7CisJTG9naWNhbFJlcENv bW1pdERhdGEgY29tbWl0X2RhdGE7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisKKwlpZiAoaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBDT01N SVQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCXhpZCA9IGxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fY29tbWl0KHMsICZjb21taXRfZGF0YSk7CisJc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdCh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJaWYgKGFtX2FwcGx5 X2Jnd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNh biByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBv ZiBjcmFzaC4KKwkJICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0 X2RhdGEuZW5kX2xzbjsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBj b21taXRfZGF0YS5jb21taXR0aW1lOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJcGdzdGF0X3JlcG9y dF9zdGF0KGZhbHNlKTsKKworCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQlzdWJ4YWN0bGlz dCA9IE5JTDsKKworCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJ TklTSEVEKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBs eSB3b3JrZXIuIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMKKwkJICogdHJhbnNhY3Rp b24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisJCSAqLworCQlBcHBseUJnd29ya2Vy U3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxzZSk7 CisKKwkJZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVkIHRyYW5zYWN0 aW9uICV1IiwgeGlkKTsKKworCQlpZiAod3N0YXRlKQorCQl7CisJCQkvKiBTZW5kIGNvbW1pdCBt ZXNzYWdlICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMt PmRhdGEpOworCisJCQkvKiBXYWl0IGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byBmaW5p c2ggKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJf RklOSVNIRUQpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJc3RvcmVfZmx1 c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlzdG9wX3NraXBwaW5nX2NoYW5n ZXMoKTsKKworCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQkvKgorCQkJICog VGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwgc28gd2UgY2xl YXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQljbGVhcl9zdWJzY3JpcHRpb25f c2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkv KgorCQkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlv biBoYXMgYmVlbgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLCByZXBsYXkgYWxsIHRoZSBzcG9v bGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBj b21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOworCisJCQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXpl ZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUg c3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dv cmtlcl9jaGVja19zdGF0dXMoKTsKKworCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBi ZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCisJcHJvY2Vzc19zeW5jaW5nX3RhYmxl cyhjb21taXRfZGF0YS5lbmRfbHNuKTsKKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVf SURMRSwgTlVMTCk7CisKKwlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKK30KIAog LyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgog ICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewog CUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUocyk7CkBAIC0yNjE4LDYg KzI5NTMsMTAgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQog ewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyogV2Ugb25seSBuZWVkIHRvIGNvbGxl Y3QgdGhlIExTTiBpbiBtYWluIGFwcGx5IHdvcmtlciAqLworCWlmIChhbV9hcHBseV9iZ3dvcmtl cigpKQorCQlyZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFuZW50IGNvbnRl eHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIApAQCAtMjYzMiw3 ICsyOTcxLDcgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQog CiAKIC8qIFVwZGF0ZSBzdGF0aXN0aWNzIG9mIHRoZSB3b3JrZXIuICovCi1zdGF0aWMgdm9pZAor dm9pZAogVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGltZXN0YW1wVHog c2VuZF90aW1lLCBib29sIHJlcGx5KQogewogCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9sc24g PSBsYXN0X2xzbjsKQEAgLTI3OTQsNiArMzEzMyw5IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExv Z1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsK IAkJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKIAorCQkJLyogQ2hlY2sgdGhlIHN0YXR1 cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJCQlhcHBseV9iZ3dvcmtl cl9jaGVja19zdGF0dXMoKTsKKwogCQkJLyogUHJvY2VzcyBhbnkgdGFibGUgc3luY2hyb25pemF0 aW9uIGNoYW5nZXMuICovCiAJCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGxhc3RfcmVjZWl2ZWQp OwogCQl9CkBAIC0zMDk1LDcgKzM0MzcsNyBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpCiAvKgogICogQ2FsbGJhY2sgZnJvbSBzdWJzY3JpcHRpb24gc3lzY2FjaGUgaW52YWxpZGF0 aW9uLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3Vic2NyaXB0aW9uX2NoYW5nZV9jYihEYXR1 bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewogCU15U3Vic2NyaXB0aW9u VmFsaWQgPSBmYWxzZTsKQEAgLTM2OTEsNyArNDAzMyw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwg dHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCQlvcmlnaW5pZCA9IHJlcGxv cmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3Jp Z2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIHRydWUpOwogCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCW9yaWdpbl9zdGFydHBvcyA9 IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKQEAgLTM3MzgsNyArNDA4MCw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNhdGlvbl9uYW1lcyA9 IE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLmJp bmFyeSA9IE15U3Vic2NyaXB0aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0 cmVhbWluZyA9IE15U3Vic2NyaXB0aW9uLT5zdHJlYW07CisJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnN0cmVhbWluZyA9IChNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9PRkYpOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCiAJaWYgKCFhbV90YWJs ZXN5bmNfd29ya2VyKCkpCkBAIC0zODk2LDcgKzQyMzgsOCBAQCBjbGVhcl9zdWJzY3JpcHRpb25f c2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogCVhMb2dSZWNQdHIJbXlza2lwbHNuID0g TXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0J aWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpKQorCWlmIChsaWtlbHko WExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSB8fAorCQlhbV9hcHBseV9iZ3dvcmtlcigp KQogCQlyZXR1cm47CiAKIAlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQpAQCAtMzk2OCw3ICs0 MzExLDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xz bikKIH0KIAogLyogRXJyb3IgY2FsbGJhY2sgdG8gZ2l2ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91 dCB0aGUgY2hhbmdlIGJlaW5nIGFwcGxpZWQgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9l cnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiB7CiAJQXBwbHlFcnJvckNhbGxiYWNrQXJnICplcnJh cmcgPSAmYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggOGRlYWU1NzE0My4uNmViZmEyNGJhZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xODMzLDcgKzE4 MzMsNyBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKIAlBc3NlcnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhuKSk7CiAKIAlPdXRwdXRQ bHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKLQlsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9h Ym9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkKTsKKwlsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4biwgYWJvcnRfbHNuKTsKIAlP dXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0 b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CmluZGV4IDg3YzE1YjljNmYuLmJhNzgxZTZmMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMKQEAgLTM4OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdh aXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNF UlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFr OworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdFOgor CQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsQXBwbHlXb3JrZXJTdGF0ZUNoYW5nZSI7CisJCQlicmVh azsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9 ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA3Y2M5YzcyZTQ5 Li42ZjhiMzBhYmIwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAw MDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJ ZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0s XG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxc biIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ1ODAsOCArNDU4MCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9u KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0 cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vi c3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0Iikg PT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7 CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImEiKSA9PSAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gYXBwbHkiKTsKIAogCWlmIChz dHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAw KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IGQxMjYwZjU5MGMuLjliMzk0YTQ1 ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtNjgsNyArNjgsOCBA QCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJL SV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUgaWYg dGhlIHN1YnNjcmlwdGlvbiB3YW50cyB0aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNlbmQg ZGF0YSBpbiBiaW5hcnkgKi8KIAotCWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3Rh bnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0 cmFuc2FjdGlvbnMgKi8KIApAQCAtMTA5LDcgKzExMCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNj cmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlv biBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vi c2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwotCWJv b2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJh bnNhY3Rpb25zLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWluZyB0 d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0 ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxs eSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTIwLDYgKzEyMSwxOCBAQCB0eXBlZGVm IHN0cnVjdCBTdWJzY3JpcHRpb24KIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CS8qIExpc3Qgb2Yg cHVibGljYXRpb24gbmFtZXMgdG8gc3Vic2NyaWJlIHRvICovCiB9IFN1YnNjcmlwdGlvbjsKIAor LyogRGlzYWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyAqLworI2RlZmlu ZSBTVUJTVFJFQU1fT0ZGCSdmJworCisvKgorICogU3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBhcmUg d3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCBhcHBsaWVkIG9ubHkKKyAqIGFmdGVyIHRo ZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgU1VC U1RSRUFNX09OCSd0JworCisvKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGlt bWVkaWF0ZWx5IHZpYSBhIGJhY2tncm91bmQgd29ya2VyICovCisjZGVmaW5lIFNVQlNUUkVBTV9B UFBMWQknYScKKwogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJp ZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2Ny aXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCBhNzcxYWI4ZmYzLi43 YmJhNzdjOWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMTc1 LDYgKzE3NSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4 bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVk VHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBz dHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERh dGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9n UmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVw U3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0 cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2lu RGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjU3LDExIEBAIGV4dGVybiB2b2lkIGxvZ2lj YWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1p dChTdHJpbmdJbmZvIG91dCwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJ CQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9z dHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFi b3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkJCQkgYm9vbCBpbmNsdWRlX2Fib3J0X2xzbik7 CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUg YWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IGNkMWI2ZThhZmMuLjZhMWFmN2YxM2Mg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBBcHBseUJnd29ya2VyTWFpbihEYXR1bSBt YWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vcmlnaW4uaAppbmRleCAyZDFiNWU1YzI4Li5jNzM4OWI0MGE3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9vcmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4gWExvZ1JlY1B0ciByZXBs b3JpZ2luX2dldF9wcm9ncmVzcyhSZXBPcmlnaW5JZCBub2RlLCBib29sIGZsdXNoKTsKIAogZXh0 ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciByZW1vdGVfY29t bWl0LAogCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwotZXh0ZXJuIHZvaWQg cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpOworZXh0ZXJuIHZvaWQg cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgbXVzdF9hY3F1 aXJlKTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVy biBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCA0YTAxZjg3N2U1 Li5hYmExNjQwZjRkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVy YnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBA IC0zMDEsNiArMzAxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJ VGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJ VGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY0Nyw5 ICs2NDgsMTEgQEAgZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9u SWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29t bWl0Q2hpbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLAog CQkJCQkJCQkJIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9u SWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9y ZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCSAgIFRp bWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0T2xk KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCB4aWQpOwotZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIg bHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqLCBU cmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJVGltZXN0YW1wVHogYWJvcnRf dGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVy ICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuKTsKIAogZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlclNldEJhc2VTbmFwc2hvdChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhM b2dSZWNQdHIgbHNuLCBzdHJ1Y3QgU25hcHNob3REYXRhICpzbmFwKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggOTAxODQ1YWJjMi4uNWI5ZmVhMmM4YyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3 LDExIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2Zp bGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3No bV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c3Bpbi5oIgogCiAKQEAgLTYwLDYgKzYzLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdv cmtlcgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyogSW5kaWNhdGVz IGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8K Kwlib29sCQlzdWJ3b3JrZXI7CisKIAkvKiBTdGF0cy4gKi8KIAlYTG9nUmVjUHRyCWxhc3RfbHNu OwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgsOSArNzQsNzAgQEAgdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9IExv Z2ljYWxSZXBXb3JrZXI7CiAKKy8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBw bHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNh bGxiYWNrQXJnCit7CisJTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlk ICovCisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisKKwkvKiBSZW1vdGUgbm9kZSBpbmZv cm1hdGlvbiAqLworCWludAkJCXJlbW90ZV9hdHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KKwlU cmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7CisJWExvZ1JlY1B0cglmaW5pc2hfbHNuOworCWNoYXIJ ICAgKm9yaWdpbl9uYW1lOworfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CisKKy8qCisgKiBTdGF0 dXMgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gQXBwbHlC Z3dvcmtlclN0YXR1cworeworCUFQUExZX0JHV09SS0VSX0FUVEFDSEVEID0gMCwKKwlBUFBMWV9C R1dPUktFUl9SRUFEWSwKKwlBUFBMWV9CR1dPUktFUl9CVVNZLAorCUFQUExZX0JHV09SS0VSX0ZJ TklTSEVELAorCUFQUExZX0JHV09SS0VSX0VYSVQKK30gQXBwbHlCZ3dvcmtlclN0YXR1czsKKwor LyoKKyAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBhcHBseSB3b3JrZXJzLgorICovCit0eXBl ZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAltdXRleDsKKworCS8q IFN0YXR1cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJQXBwbHlCZ3dvcmtlclN0 YXR1cwlzdGF0dXM7CisKKwkvKiBzZXJ2ZXIgdmVyc2lvbiBvZiBwdWJsaXNoZXIuICovCisJaW50 IHNlcnZlcl92ZXJzaW9uOworCisJVHJhbnNhY3Rpb25JZAlzdHJlYW1feGlkOworCXVpbnQzMglu OwkvKiBpZCBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAqLworfSBBcHBseUJnd29ya2VyU2hh cmVkOworCisvKgorICogU3RydWN0IGZvciBtYWludGFpbmluZyBhbiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlclN0YXRlCit7CisJc2ht X21xX2hhbmRsZQkJCSptcV9oYW5kbGU7CisJZHNtX3NlZ21lbnQJCQkJKmRzbV9zZWc7CisJQXBw bHlCZ3dvcmtlclNoYXJlZCB2b2xhdGlsZQkqcHN0YXRlOworfSBBcHBseUJnd29ya2VyU3RhdGU7 CisKIC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1 cmluZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4 dCBBcHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5 TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBBcHBseUVycm9yQ2FsbGJhY2tB cmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOworCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBN eVN1YnNjcmlwdGlvblZhbGlkOworCitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgQXBwbHlC Z3dvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFN0YXRlOworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3Qg KnN1YnhhY3RsaXN0OworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQ R0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25u OwogCkBAIC03OSwxMyArMTQ2LDE2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24g Kk15U3Vic2NyaXB0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15 TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3Ry YW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b247CitleHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkOwogCiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2lj YWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQs CiAJCQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJl cF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hh ciAqc3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJv b2wgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNo YXIgKnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJ IGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtl cl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX3dha2V1cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVw X3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CkBAIC0xMDMsMTAg KzE3MywzOSBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIg Y3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRl cyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsK IAorZXh0ZXJuIHZvaWQgVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGlt ZXN0YW1wVHogc2VuZF90aW1lLAorCQkJCQkJCSAgYm9vbCByZXBseSk7CisKKy8qIHByb3RvdHlw ZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCitleHRlcm4gdm9pZCBhcHBseV9k aXNwYXRjaChTdHJpbmdJbmZvIHMpOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2Fs bGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisK K2V4dGVybiB2b2lkIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSk7CisKKy8qIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHNldHVw IGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiBBcHBseUJnd29ya2VyU3RhdGUgKmFwcGx5X2Jn d29ya2VyX2ZpbmRfb3Jfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJCQkJCWJv b2wgc3RhcnQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3IoQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGUsCisJCQkJCQkJCQlBcHBseUJnd29ya2VyU3RhdHVzIHdhaXRfZm9y X3N0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dv cmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJIGNvbnN0IHZvaWQgKmRh dGEpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29ya2VyU3RhdGUg KndzdGF0ZSk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCk7 CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0 dXMgc3RhdHVzKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQo VHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCk7CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFi bGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdv cmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2FwcGx5X2Jnd29ya2Vy KHZvaWQpCit7CisJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+c3Vid29ya2VyOworfQorCiAj ZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApp bmRleCBiNTc4ZTJlYzc1Li5jMmQyYTExNGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0x MDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VU U19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQ UExZX1dPUktFUl9TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwK IAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9J TlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0 aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRl eCA3ZmNmYWQxNTkxLi5mNzY5ODM1YWYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0CkBAIC0xOTcsNyArMTk3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViOwogLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KIENS RUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFs c2UsIHN0cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xl YW4gdmFsdWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAi YXBwbHkiCiAtLSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04g dGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklO RzogIHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRF UiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0 YWJsZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNGZiNzQ2OTMwYS4uNjY0ZDRiOGIx YSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNiw2ICsxMTYsMTAgQEAgQXBwZW5k CiBBcHBlbmRQYXRoCiBBcHBlbmRSZWxJbmZvCiBBcHBlbmRTdGF0ZQorQXBwbHlCZ3dvcmtlckVu dHJ5CitBcHBseUJnd29ya2VyU2hhcmVkCitBcHBseUJnd29ya2VyU3RhdGUKK0FwcGx5Qmd3b3Jr ZXJTdGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVjdXRpb25EYXRhCiBBcHBs eVN1YlhhY3REYXRhCkBAIC0xNDgzLDYgKzE0ODcsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2lj YWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBs ZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKLS0gCjIuMjMuMC53aW5kb3dz LjEKCg== --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v9-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v9-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v9-0002-Test-streaming-apply-option-in-tap-test.patch"; size=70532; creation-date="Wed, 08 Jun 2022 07:09:00 GMT"; modification-date="Wed, 08 Jun 2022 07:12:28 GMT" Content-Transfer-Encoding: base64 RnJvbSAxNzM1NThlMzRhM2I2MWQ5MmE0NGQxM2M1MzczMmE0MzI1NDU0YjcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2OSAy LzRdIFRlc3Qgc3RyZWFtaW5nIGFwcGx5IG9wdGlvbiBpbiB0YXAgdGVzdAoKQ2hhbmdlIGFsbCBU QVAgdGVzdHMgdXNpbmcgdGhlIFNVQlNDUklQVElPTiAic3RyZWFtaW5nIiBvcHRpb24sIHNvIHRo ZXkKbm93IHRlc3QgYm90aCAnb24nIGFuZCAnYXBwbHknIHZhbHVlcy4KLS0tCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAxOTkgKysrKy0tLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTE5ICsrKy0tCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAxODggKysrKy0tLQog Li4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwgMTk1ICsrKyst LS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAgICAgICB8IDExMCAr KystCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzNjMg KysrKysrKy0tLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwg ICAgIHwgNDk4ICsrKysrKysrKystLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAxMDM1IGluc2Vy dGlvbnMoKyksIDYzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbAppbmRleCA2NTYxYjE4OWRlLi5iM2Q4NGIxYzdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxMTYgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAor IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90 aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2VzLgorc3Vi IHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0g Jyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9k ZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRp bWVyLAorCQlvbl9lcnJvcl9zdG9wID0+IDApOworCisJIyBDaGVjayB0aGF0IGEgYmFja2dyb3Vu ZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcworCSMgc3BlY2lmaWVkIGFz ICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJ IyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2Rl X3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ fTsKKwkkaC0+cHVtcF9uYjsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CX0KKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJ XHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWls LCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMg VGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0 ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0 aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIs IGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVl cy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhh dmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBj ID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7 CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9j aCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkp OworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0 IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKQEAgLTM3LDYgKzE0NywxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsK IAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lU SCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTU0LDgyICsxNjgsMjUgQEAgbXkgJHJlc3VsdCA9 CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlv bnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgotbXkgJGluICA9ICcnOwotbXkgJG91 dCA9ICcnOwotCi1teSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7Ci0KLW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKLQlvbl9lcnJv cl9zdG9wID0+IDApOwotCi0kaW4gLj0gcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLX07Ci0kaC0+cHVtcF9uYjsK LQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDUwMDA7Ci1DT01NSVQ7Ci19KTsKLQotJGluIC49IHF7Ci1DT01NSVQ7Ci1ccQotfTsKLSRoLT5m aW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhl bSBoZXJlCi0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJyk7Ci0KLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFy eSBtb2RlCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksICdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5 JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCispOwogCi0jIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9m IHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAotIyB1cGRhdGUgcHVibGlzaGVy LCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCi0jIHZhbHVl cy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhh dmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0g J2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgotKTsKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gYXBwbHksIGJpbmFyeSA9IG9mZikiKTsKIAotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKLQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRh Jyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+ c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3Vi eGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApp bmRleCBmMjdmMTY5NGYyLi5iNWI2ZGMzNzlmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNzIgQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNh c2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgQ2hlY2sgdGhhdCBh IGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkjIHNw ZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZl cmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAg IDMsICA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAg MTUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAw KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsK Kwl9KTsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0K KwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRy ZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMDMs MTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlv bl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9u KSIKICk7CkBAIC01NCw0MSArMTI0LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVy Jyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQg NjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEs IDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlU OwotfSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCi0JJ2NoZWNrIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKKwor JG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBw aWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRp ZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIg Y2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0 b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwKaW5kZXggMGJjZTYzYjcxNi4uN2U1ZGMxOGNkMiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMTEgQEAgdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBj b2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFw cGx5CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJ IyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9w dGlvbiBpcworCSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRo ZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1w IHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOworCUNP TU1JVDsKKwl9KTsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAx LCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FW RVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6 OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9 CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2Fj dGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFm dGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3Ig dGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhl IHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsK KwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsK KworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBp cyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVm bGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCpp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChmKSBGUk9NIHRlc3Rf dGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKKwkJJ2No ZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQg bm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBk YXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBE Uk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9QIENPTFVNTiBm OworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9 CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5p bml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE0MiwxMCBAQCAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1 Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9 JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsK QEAgLTU0LDc2ICsxNjMsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8 MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAx MDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQ T0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1p LCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0p OwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERN TAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAx LCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQ T0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRl eHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQot ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAK LSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBv ZiB0aGUgRERMIGlzIHBlcmZvcm1lZAotIyBhZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52 YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3RfdGFiIHNvIHRoYXQKLSMgdGhlIG5leHQg dHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMjAwMyw1MDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBm IElOVDsKLUNPTU1JVDsKLX0pOwotCi0jIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBn ZXQgc3RyZWFtZWQuIFRoaXMgaXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQotIyBzZW5kIHRoZSBz Y2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZp b3VzIHRlc3QuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippLCAtMyppLCA0KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkpOwotQ09N TUlUOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NS SVBUSU9OIjsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSks IGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1 fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3Ro IHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCi0pOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5k ZXggNzE1NTQ0MmU3Ni4uNzFmOGMxZGQwNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbApAQCAtOCw2ICs4LDExMyBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9 YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5KSA9IEBfOworCisJIyBD aGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlv biBpcworCSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBE RUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVw IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2Vz ID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMSwyNTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAw KSBzKGkpOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczU7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJ aWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9c W0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2Fybmlu ZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAwfDApLAorCQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGxhcmdlIChz dHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3Jk ZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkp OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7 CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hlY2sgcm9s bGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9s bGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYg KzE0MywxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgogKTsKQEAgLTUzLDgxICsxNjQsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwg J2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1T QVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUw MCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZF UE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMzUwMSw0MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBz dWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKLSMgc3VidHJhbnNhY3Rpb24gUk9MTEJB Q0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1 NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKLVJFTEVBU0UgczI7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7Ci0KLSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhp KTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwot fSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCBkYmQwZmNhNGQxLi5k MGNkODY5NDMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9z dHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw2OSBAQCB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2Fu IGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5KSA9IEBfOworCisJIyBDaGVjayB0aGF0 IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcworCSMg c3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cg dmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcx Iik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5U OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJaWYgKCRp c19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5 IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwor CQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayBy b2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUg dGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9w dWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAg LTM3LDYgKzEwMCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkg JGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry IGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3Ry ZWFtaW5nID0gb24pIgogKTsKQEAgLTU0LDM1ICsxMjEsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo MnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkg cyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDAp LAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdh cHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBhcHBseSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRu b2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdm MzdiYS4uYjUyYWY3NGUzNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIy X3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3 b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDIwOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMu CitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywg JGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKworCW15 ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRf QyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJl cGxpY2F0aW9uIHN0cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWlu ZyA9ICRzdHJlYW1pbmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcg PSAkc3RyZWFtaW5nX21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlz aCBpbml0aWFsaXphdGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMn LCAiCisJCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgor CQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKKwkpIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRv IHJlc3RhcnQiOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJ IyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRo ZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0 aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcwor CSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBs b2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ2FwcGx5JykKKwl7CisJCSRu b2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMSIpOworCQkkbm9kZV9CLT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2Rl X0MtPnJlbG9hZDsKKwl9CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgVGhlbiAyUEMgUFJFUEFSRQorCSRub2Rl X0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwlpZiAoJHN0cmVh bWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkkbm9kZV9CLT53YWl0X2Zvcl9sb2cocXIvXFtB cHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9C LT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtc XSBzdGFydGVkLywgMCk7CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0K KworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNv bHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMs IGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJv d3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5U LgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENP TU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlz IGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAg MSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FW RVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAy UEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVy KHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBz aG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21t aXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBC Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2Rl X0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi OyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24g c3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX0EtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIvc3ViIG5vZGVzLgogIyBub2RlX0EgLT4g bm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDYyLDE1IEBAIGlzKCRyZXN1bHQsIHFxKDIx KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwogIyAyUEMg KyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLW15ICRvbGRwaWRf QiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotbXkgJG9sZHBpZF9DID0gJG5vZGVfQi0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiAoc3RyZWFt aW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3RyZWFtaW5nID0gb24pOyIpOwotJG5vZGVf Qy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQotIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0 byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKLQkn cG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFw cGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMn LCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0J V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMg dHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQu Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0jIFRoZW4gMlBD IFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRu b2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5h bWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAy UEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycK LSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBj b21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRl ZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24g c3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRy ZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNL IFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9tIHByZXZpb3VzIHRlc3QgbGVhdmluZyBv bmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KLSMgMi4gUmVjb3JkIGEgU0FW RVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgNC4gRG8gcm9sbGJh Y2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgotIyA1LiBUaGVu IENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCi0k bm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FW RVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUJFR0lOOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwgJ2Zvb2JhcicpOwotCVNBVkVQT0lOVCBz cF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0K LSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykK LSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOwotCi0kbm9kZV9BLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vi c2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgw KSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0g ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVu ZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQg c3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FW RVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0jICg5OTk5LCAnZm9vYmFyJykgc2hvdWxk IGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIg d2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRl ZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMo JHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVy IEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0Is ICRhcHBuYW1lX0MsICdhcHBseScpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy M190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggZDg0NzVkMjVhNC4uZjU1YzVjOTVlNyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYg KzgsMjY2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBj b21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24K KyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24g YW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkp ID0gQF87CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQ UkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQ QyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMKKwkjIEV4 cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUg Y29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhh dCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkj IHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9n IHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBjaGVjayB0aGF0IDJQ QyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRpc19h cHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJH VyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJF UEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAor CQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJFRC4K KwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMg My4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBs ZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4g aW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ CUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJz Y3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQg YmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVu IHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4K KwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hl ciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwor CSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJIyBjb21taXQgcG9zdCB0aGUg cmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkg MlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRh aW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBS RVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhl IFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhw ZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1 YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQg Zm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsK KworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRz aWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9u IHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEg c2VwYXJhdGUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7 CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAor CSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBs aWNhdGVkCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRoZSBvdXRzaWRlIGlu c2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJF UEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUg MzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVy CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIElu c2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRy YW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cg bG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkg a2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNh Y3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91 dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNl dHVwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszMDgsMTAgQEAg JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJ UFRJT04gdGFwX3N1YgpAQCAtNzAsMjM2ICszMzQsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0K ICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNl X3F1ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVy IHRvIGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgQ2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4K LSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQ QyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn Ci0pOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJB Q0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xs cyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAy IHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlC RUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFu c2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIp LAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0 aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRo YXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3Rh cnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBD IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFy dGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQu Ci0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQu Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgn aW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIGluc2Vy dHMgYXJlIHZpc2libGUKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5T RVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEu IFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2lu Z2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4g VGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJv bGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIG9y aWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJl cGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlz IHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3Jk IChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhl IDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMg aW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5 LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwg d2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUg aW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0j IDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFS RS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRh ICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRy YW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQg aXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29i YXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRz aWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwog Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVw Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v9-0003-Add-some-checks-before-using-apply-background-wor.patch" Content-Description: v9-0003-Add-some-checks-before-using-apply-background-wor.patch Content-Disposition: attachment; filename="v9-0003-Add-some-checks-before-using-apply-background-wor.patch"; size=27765; creation-date="Wed, 08 Jun 2022 07:09:00 GMT"; modification-date="Wed, 08 Jun 2022 07:12:29 GMT" Content-Transfer-Encoding: base64 RnJvbSAwZGViOGVmNzA3MzBiNDc4Yjg4ZTI1ZTg0MDBiZDY5MDQxNjk1MWVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VGh1LCAyIEp1biAyMDIyIDE3OjAzOjAyICswODAwClN1YmplY3Q6IFtQQVRDSCB2OSAzLzRdIEFk ZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKIHRvIGFw cGx5IGNoYW5nZXMuCgpJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGVja3MgYXJlIHZpb2xhdGVk LCBhbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLgoxLiBUaGUgdW5pcXVlIGNvbHVtbnMgYmV0d2Vl biBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYXJlIGRpZmZlcmVuY2UuCjIuIFRoZXJlIGlzIGFu eSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHByZXNlbnQgaW4gZXhwcmVzc2lvbiBpbiBzdWJzY3Jp YmVyJ3MKcmVsYXRpb24uIENoZWNrIGZyb20gdGhlIGZvbGxvd2luZyAzIGl0ZW1zOgogICAgYS4g VGhlIGZ1bmN0aW9uIGluIHRyaWdnZXJzOwogICAgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKICAgIGMuIENvbnN0cmFpbnQgZXhwcmVz c2lvbnMuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAg IHwgICA0ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyAgICAgICB8 ICA0NiArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAg fCAgNjIgKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMg ICAgfCAxODYgKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j ICAgICAgICAgICAgfCAgMTcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaCAgICAgfCAgMTUgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgICA3ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsICAg ICB8IDIwNiArKysrKysrKysrKysrKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDU0OSBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGQ0Y2FhZTAyMjIuLjhkZTFhMjNjZTQgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDAsNiArMjQwLDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgogICAgICAgICAgIGFw cGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgaXQgbWlnaHQgbm90IHJlcG9y dCB0aGUKICAgICAgICAgICBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaW4g dGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVG8gcnVuIGluIHRoaXMgbW9kZSwgdGhlcmUgYXJl IGZvbGxvd2luZyB0d28gcmVxdWlyZW1lbnRzLiBUaGUgZmlyc3QKKyAgICAgICAgICBpcyB0aGF0 IHRoZSB1bmlxdWUgY29sdW1uIHNob3VsZCBiZSB0aGUgc2FtZSBiZXR3ZWVuIHB1Ymxpc2hlciBh bmQKKyAgICAgICAgICBzdWJzY3JpYmVyOyB0aGUgc2Vjb25kIGlzIHRoYXQgdGhlcmUgc2hvdWxk IG5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZQorICAgICAgICAgIGZ1bmN0aW9uIGluIHN1YnNjcmli ZXItc2lkZSByZXBsaWNhdGVkIHRhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwppbmRleCA4YWY2NDk3NGYyLi4wZjkwODFkNjJm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9r ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIu YwpAQCAtNzU0LDMgKzc1NCw0OSBAQCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRy YW5zYWN0aW9uSWQgY3VycmVudF94aWQpCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OwogCX0KIH0KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyBsb2dpY2FsIHJlcGxp Y2F0aW9uIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIGJ5CisgKiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4KKyAqCisgKiBBbHRob3VnaCB3ZSBtYWludGFpbnMgdGhlIGNvbW1pdCBvcmRlciBieSBh bGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQgYXQgYSB0aW1lLCBvdXIgYWNj ZXNzIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBoYXMgY2hhbmdlZC4KKyAqIFRoaXMgY291bGQgY2F1 c2UgdW5leHBlY3RlZCBwcm9ibGVtcyBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGlj YXRlZAorICogdGFibGUgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlIG9y IGNvbnRhaW5zIG5vbi1pbW11dGFibGUKKyAqIGZ1bmN0aW9ucyB3aGVuIGFwcGx5aW5nIHRyYW5z YWN0aW9ucyBpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQorewor CS8qIENoZWNrIG9ubHkgd2UgYXJlIGluIGFwcGx5IGJnd29ya2VyLiAqLworCWlmICghYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGSVhNRTogQ2hlY2tzIG9uIHBh cnRpdGlvbmVkIHRhYmxlcyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIEFkZGluZworCSAq IHRoaXMgY2hlY2sgcmVxdWlyZXMgYWRkaXRpb25hbCBmaXhlcyBmb3Igb3RoZXIgaXNzdWVzLiBJ IHdpbGwgYWRkIHRoaXMKKwkgKiBsYXRlciwgYWZ0ZXIgdGhlIHJlbGF0ZWQgaXNzdWVzIGFyZSBm aXhlZC4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogSWYgYW55IHVuaXF1 ZSBpbmRleCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1lIGFzIHJlbW90ZXJlbC4KKwkg Ki8KKwlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IHJl cGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKKwkJCQkgZXJy aGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQg b2YgJ2FwcGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4KKwkgKiB0aGlzIHJlbGF0 aW9uLgorCSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVOQ1RJT05fTk9OSU1NVVRBQkxF KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBp cyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpLAorCQkJCSBlcnJoaW50KCJQ bGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicgaW5zdGVhZCBvZiAnYXBw bHknLiIpKSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRl eCBhODg4MDM4ZWI0Li42YWYzMzAyMjcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2FnZSBmbGFn cy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQorI2RlZmlu ZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkJCTB4MDAwMQorI2RlZmluZSBMT0dJQ0FM UkVQX0lTX1VOSVFVRQkJCQkweDAwMDIKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNUSU9OQUwg KDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDExICs5MzQs NTUgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50 MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFw c2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQly ZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAorCWlmIChy ZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxpc3QgPSBS ZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisK KwkJZm9yZWFjaChpbmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkKKwkJeworCQkJT2lkCQkJaW5k ZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCQlSZWxhdGlvbglpbmRleFJlbDsK KworCQkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCQlpbmRleFJl bCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJCWlmICghUmVsYXRpb25J c1ZhbGlkKGluZGV4UmVsKSkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRp b24gd2l0aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJCWlmIChpbmRleFJlbC0+cmRfaW5kZXgt PmluZGlzdW5pcXVlKQorCQkJeworCQkJCWludAkJCWk7CisKKwkJCQkvKiBBZGQgcmVmZXJlbmNl ZCBhdHRyaWJ1dGVzIHRvIGlkaW5kZXhhdHRycyAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBpbmRl eFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlhdHRybnVt ID0gaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkJCS8qCisJCQkJ CSAqIFdlIGRvbid0IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzCisJ CQkJCSAqIGJpdG1hcHMuIFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCQkJICov CisJCQkJCWlmIChhdHRybnVtICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChpIDwgaW5kZXhSZWwt PnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkJCSFibXNfaXNfbWVtYmVyKGF0dHJudW0g LSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQorCQkJCQkJ CWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJCQkgICBh dHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCX0KKwkJ CQl9CisJCQl9CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJfQorCQlsaXN0X2ZyZWUo aW5kZXhvaWRsaXN0KTsKKwl9CisKIAkvKiBzZW5kIG51bWJlciBvZiBsaXZlIGF0dHJpYnV0ZXMg Ki8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzYsNiArMTAy MSwxMCBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiBy ZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJCQkJCSAgaWRhdHRycykpCiAJCQlmbGFncyB8PSBM T0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFk7CiAKKwkJaWYgKGJtc19pc19tZW1iZXIoYXR0 LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJICBh dHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19VTklRVUU7CisKIAkJcHFfc2Vu ZGJ5dGUob3V0LCBmbGFncyk7CiAKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KQEAgLTEwMDEsNyAr MTA1MCw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw UmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0czsKIAljaGFyCSAgKiphdHRuYW1lczsKIAlPaWQJ CSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMOworCUJpdG1hcHNldCAg KmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBx X2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFtZXMgPSBwYWxsb2MobmF0dHMgKiBzaXplb2YoY2hh ciAqKSk7CkBAIC0xMDEyLDExICsxMDYyLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJp bmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAl7CiAJCXVpbnQ4CQlmbGFnczsK IAotCQkvKiBDaGVjayBmb3IgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gKi8KKwkJLyogQ2hlY2sg Zm9yIHJlcGxpY2EgaWRlbnRpdHkgYW5kIHVuaXF1ZSBjb2x1bW4gKi8KIAkJZmxhZ3MgPSBwcV9n ZXRtc2dieXRlKGluKTsKIAkJaWYgKGZsYWdzICYgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5U SVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCWlmIChm bGFncyAmIExPR0lDQUxSRVBfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1i ZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tp XSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTA4Myw3IEBA IGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24g KnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlw czsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVl OwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jCmluZGV4IDgwZmI1NjFhOWEuLjNjZWE1MTA0NTMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgi CisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlD b250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4LDIzIEBA IGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQog CX0KIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBmbGFnIHZvbGF0aWxpdHkgb2YgYWxsIGV4aXN0aW5n IGVudHJ5IGluIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dp Y2FscmVwX3JlbG1hcF9yZXNldF92b2xhdGlsaXR5X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpCit7CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CisKKwlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxM KQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1h cCk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxM KQorCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX1VOS05PV047Cit9CisKIC8qCiAgKiBJ bml0aWFsaXplIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCiAgKi8KQEAgLTExNiw2ICsxNDAsOSBA QCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlv biBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9y ZWxtYXBfaW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOworCUNhY2hlUmVnaXN0 ZXJTeXNjYWNoZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCSAgbG9naWNhbHJlcF9yZWxtYXBf cmVzZXRfdm9sYXRpbGl0eV9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAt MTQyLDYgKzE2OSw3IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJl bE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1z X2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1 ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXApCiAJCXBmcmVlKGVudHJ5LT5hdHRybWFwKTsKQEAg LTE5MCw2ICsyMTgsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0 aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3Rl cmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVt b3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5 KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK IH0KIApAQCAtMzA3LDcgKzMzNiw4IEBAIGxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJl bElkIHJlbW90ZWlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlpZiAoIWVudHJ5LT5sb2NhbHJlbHZh bGlkKQogCXsKIAkJT2lkCQkJcmVsaWQ7Ci0JCUJpdG1hcHNldCAgKmlka2V5OworCQlCaXRtYXBz ZXQgICppZGtleSwKKwkJCQkgICAqdWtleTsKIAkJVHVwbGVEZXNjCWRlc2M7CiAJCU1lbW9yeUNv bnRleHQgb2xkY3R4OwogCQlpbnQJCQlpOwpAQCAtNDE1LDYgKzQ0NSwxNTkgQEAgbG9naWNhbHJl cF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQog CQkJfQogCQl9CiAKKwkJLyoKKwkJICogQ2hlY2sgd2hldGhlciB0aGUgdW5pcXVlIGluZGV4IG9m IHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBhcmUKKwkJICogY29uc2lzdGVudC4KKwkJICovCisJ CWVudHJ5LT5zYW1ldW5pcXVlID0gdHJ1ZTsKKwkJdWtleSA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0tF WSk7CisKKwkJaWYgKHVrZXkpCisJCXsKKwkJCWkgPSAtMTsKKwkJCXdoaWxlICgoaSA9IGJtc19u ZXh0X21lbWJlcih1a2V5LCBpKSkgPj0gMCkKKwkJCXsKKwkJCQlpbnQJCQlhdHRudW0gPSBpICsg Rmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkJCWF0dG51bSA9IEF0dHJO dW1iZXJHZXRBdHRyT2Zmc2V0KGF0dG51bSk7CisKKwkJCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0 dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkJIWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJtYXAt PmF0dG51bXNbYXR0bnVtXSwgcmVtb3RlcmVsLT5hdHR1bmlxdWUpKQorCQkJCXsKKwkJCQkJZW50 cnktPnNhbWV1bmlxdWUgPSBmYWxzZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisK KwkJLyoKKwkJICogQ2hlY2sgd2hldGhlciB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5j dGlvbiBpbiB0aGUgbG9jYWwKKwkJICogdGFibGUuCisJCSAqLworCQlpZiAoZW50cnktPnZvbGF0 aWxpdHkgPT0gRlVOQ1RJT05fVU5LTk9XTikKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrIGZyb20g dGhlIGZvbGxvd2luZyBwb2ludHM6CisJCQkgKgorCQkJICogYS4gVGhlIGZ1bmN0aW9uIGluIHRy aWdnZXJzOworCQkJICogYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRv bWFpbiBjb25zdHJhaW50czsKKwkJCSAqIGMuIENvbnN0cmFpbnQgZXhwcmVzc2lvbnMuCisJCQkg Ki8KKwkJCWJvb2wJCW5vbmltbXV0YWJsZSA9IGZhbHNlOworCisJCQkvKiBDaGVjayB0aGUgdHJp Z2dlciBmdW5jdGlvbnMuICovCisJCQlpZiAoIW5vbmltbXV0YWJsZSAmJiBlbnRyeS0+bG9jYWxy ZWwtPnRyaWdkZXNjICE9IE5VTEwpCisJCQkJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5sb2NhbHJl bC0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCisJCQkJeworCQkJCQlUcmlnZ2VyICAgICp0 cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQkJCWlm ICh0cmlnLT50Z2VuYWJsZWQgIT0gVFJJR0dFUl9GSVJFU19BTFdBWVMgJiYKKwkJCQkJCXRyaWct PnRnZW5hYmxlZCAhPSBUUklHR0VSX0ZJUkVTX09OX1JFUExJQ0EpCisJCQkJCQljb250aW51ZTsK KworCQkJCQlpZiAoZnVuY192b2xhdGlsZSh0cmlnLT50Z2ZvaWQpICE9IFBST1ZPTEFUSUxFX0lN TVVUQUJMRSkKKwkJCQkJeworCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1ZTsKKwkJCQkJCWJyZWFr OworCQkJCQl9CisJCQkJfQorCisJCQkvKiBDaGVjayB0aGUgY29sdW1ucy4gKi8KKwkJCWlmICgh bm9uaW1tdXRhYmxlKQorCQkJeworCQkJCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRpb25HZXRE ZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCQkJCWludAkJCWF0dG51bTsKKworCQkJCWZvciAoYXR0 bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQorCQkJCXsKKwkJCQkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRudW0pOwor CisJCQkJCS8qIGJyZWFrIGlmIHdlIHNldCBub25pbW11dGFibGUgaW4gbGFzdCBjaGVjayBmb3Ig ZG9tYWluLiAqLworCQkJCQlpZiAobm9uaW1tdXRhYmxlKQorCQkJCQkJYnJlYWs7CisKKwkJCQkJ LyogV2UgZG9uJ3QgbmVlZCBpbmZvIGZvciBkcm9wcGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVz ICovCisJCQkJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJ CQkJCWNvbnRpbnVlOworCisJCQkJCS8qCisJCQkJCSAqIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sg Y29sdW1ucyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhlCisJCQkJCSAqIHN1YnNjcmliZXIKKwkJCQkJ ICovCisJCQkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCkKKwkJCQkJ CWNvbnRpbnVlOworCisJCQkJCWlmIChhdHQtPmF0dGhhc2RlZikKKwkJCQkJeworCQkJCQkJTm9k ZQkgICAqZGVmYXVsdGV4cHI7CisKKwkJCQkJCWRlZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2Rl ZmF1bHQoZW50cnktPmxvY2FscmVsLCBhdHRudW0gKyAxKTsKKwkJCQkJCWlmIChjb250YWluX211 dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHByKSkKKwkJCQkJCXsKKwkJCQkJCQlub25pbW11dGFi bGUgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJLyoKKwkJ CQkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhl cgorCQkJCQkgKiB0aGF0IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJl IG5vdAorCQkJCQkgKiBpbW11dGFibGUuCisJCQkJCSAqLworCQkJCQlpZiAoZ2V0X3R5cHR5cGUo YXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJCQkJCXsKKwkJCQkJCUxpc3QJICAg KmRvbWFpbl9jb25zdHJhaW50czsKKwkJCQkJCUxpc3RDZWxsICAgKmxjOworCisJCQkJCQlkb21h aW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKwor CQkJCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQorCQkJCQkJeworCQkJCQkJCURv bWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmly c3QobGMpOworCisJCQkJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWluX211dGFibGVf ZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJCQkJeworCQkJCQkJCQlu b25pbW11dGFibGUgPSB0cnVlOworCQkJCQkJCQlicmVhazsKKwkJCQkJCQl9CisJCQkJCQl9CisJ CQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8qIENoZWNrIHRoZSBjb25zdHJhaW50cy4gKi8KKwkJ CWlmICghbm9uaW1tdXRhYmxlKQorCQkJeworCQkJCVR1cGxlRGVzYwl0dXBkZXNjID0gUmVsYXRp b25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCisJCQkJaWYgKHR1cGRlc2MtPmNvbnN0cikK KwkJCQl7CisJCQkJCUNvbnN0ckNoZWNrICpjaGVjayA9IHR1cGRlc2MtPmNvbnN0ci0+Y2hlY2s7 CisKKwkJCQkJLyoKKwkJCQkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgQ0hFQ0sgY29u c3RyYWludHMgd2hpY2gKKwkJCQkJICogY29udGFpbnMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi4K KwkJCQkJICovCisJCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51bV9jaGVj azsgaSsrKQorCQkJCQl7CisJCQkJCQlFeHByCSAgICpjaGVja19leHByID0gc3RyaW5nVG9Ob2Rl KGNoZWNrW2ldLmNjYmluKTsKKworCQkJCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMo KE5vZGUgKikgY2hlY2tfZXhwcikpCisJCQkJCQl7CisJCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1 ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJaWYg KG5vbmltbXV0YWJsZSkKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX05PTklNTVVU QUJMRTsKKwkJCWVsc2UKKwkJCQllbnRyeS0+dm9sYXRpbGl0eSA9IEZVTkNUSU9OX0lNTVVUQUJM RTsKKwkJfQorCiAJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTU3MCw2 ICs3NTMsNyBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcm9vdCwKIAl9CiAJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJl cGxpZGVudDsKIAllbnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwt PmF0dGtleXMpOworCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3Rl cmVsLT5hdHR1bmlxdWUpOwogCiAJZW50cnktPmxvY2FscmVsID0gcGFydHJlbDsKIAllbnRyeS0+ bG9jYWxyZWxvaWQgPSBwYXJ0T2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv dGFibGVzeW5jLmMKaW5kZXggOGZmYmE3ZTJlNS4uM2NkYmY4YjQ1NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC04ODQsNiArODg0LDcgQEAgZmV0 Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAlscmVs LT5hdHRuYW1lcyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1dGVOdW1iZXIgKiBzaXplb2YoY2hh ciAqKSk7CiAJbHJlbC0+YXR0dHlwcyA9IHBhbGxvYzAoTWF4VHVwbGVBdHRyaWJ1dGVOdW1iZXIg KiBzaXplb2YoT2lkKSk7CiAJbHJlbC0+YXR0a2V5cyA9IE5VTEw7CisJbHJlbC0+YXR0dW5pcXVl ID0gTlVMTDsKIAogCS8qCiAJICogU3RvcmUgdGhlIGNvbHVtbnMgYXMgYSBsaXN0IG9mIG5hbWVz LiAgSWdub3JlIHRob3NlIHRoYXQgYXJlIG5vdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKaW5kZXggMzJiZjUxNmViZi4uMjlmMjYwZDFlNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xOTE1LDYgKzE5MTUsOCBAQCBhcHBseV9o YW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNh bGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbCA9IHJlbDsKIAorCWFwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVj dXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsK IAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjA1MSw2ICsyMDUzLDggQEAgYXBwbHlfaGFu ZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRh dGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlhcHBseV9iZ3dvcmtl cl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3Rh dGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRl ID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIyMTksNiArMjIyMyw4IEBAIGFwcGx5X2hhbmRsZV9kZWxl dGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwog CWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwog CWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRh LT5lc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCA4MDhmOWViZDBkLi5i MjQ4ODk5ZDgyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTI1NDAsNiArMjU0 MCwyMyBAQCBjb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUsIE9p ZCBhcmcxLCBPaWQgYXJnMikKIAkJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBHZXREb21haW5Db25z dHJhaW50cyAtLS0gZ2V0IERvbWFpbkNvbnN0cmFpbnRTdGF0ZSBsaXN0IG9mIHNwZWNpZmllZCBk b21haW4gdHlwZQorICovCitMaXN0ICoKK0dldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lk KQoreworCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKKwlMaXN0CQkgICAqY29uc3RyYWludHMg PSBOSUw7CisKKwl0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNI RV9ET01BSU5fQ09OU1RSX0lORk8pOworCisJaWYodHlwZW50cnktPmRvbWFpbkRhdGEgIT0gTlVM TCkKKwkJY29uc3RyYWludHMgPSB0eXBlbnRyeS0+ZG9tYWluRGF0YS0+Y29uc3RyYWludHM7CisK KwlyZXR1cm4gY29uc3RyYWludHM7Cit9CisKIC8qCiAgKiBMb2FkIChvciByZS1sb2FkKSB0aGUg ZW51bURhdGEgbWVtYmVyIG9mIHRoZSB0eXBjYWNoZSBlbnRyeS4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCA3YmJhNzdjOWU3Li5hNTAzZWI2MmMyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMTA4LDYgKzEwOCw3IEBAIHR5 cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxhdGlvbgogCWNoYXIJCXJlcGxpZGVudDsJCS8qIHJl cGxpY2EgaWRlbnRpdHkgKi8KIAljaGFyCQlyZWxraW5kOwkJLyogcmVtb3RlIHJlbGF0aW9uIGtp bmQgKi8KIAlCaXRtYXBzZXQgICphdHRrZXlzOwkJLyogQml0bWFwIG9mIGtleSBjb2x1bW5zICov CisJQml0bWFwc2V0ICAqYXR0dW5pcXVlOwkJLyogQml0bWFwIG9mIHVuaXF1ZSBjb2x1bW5zICov CiB9IExvZ2ljYWxSZXBSZWxhdGlvbjsKIAogLyogVHlwZSBtYXBwaW5nIGluZm8gKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKaW5kZXggN2JmOGNkMjJiZC4uOWY1 NjhlOWMwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0 aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgKQEAg LTE1LDYgKzE1LDE3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgogCisvKgorICoJU3RhdGVzIHRvIGRldGVybWluZSB2 b2xhdGlsaXR5IG9mIHRoZSBmdW5jdGlvbiBpbiBleHByZXNzaW9ucyBpbiBvbmUKKyAqCXJlbGF0 aW9uLgorICovCit0eXBlZGVmIGVudW0gUmVsRnVuY1ZvbGF0aWxpdHkKK3sKKwlGVU5DVElPTl9V TktOT1dOID0gMCwJLyogaW5pdGlhbGl6aW5nICAqLworCUZVTkNUSU9OX0lNTVVUQUJMRSwJCS8q IGFsbCBmdW5jdGlvbnMgYXJlIGltbXV0YWJsZSBmdW5jdGlvbiAqLworCUZVTkNUSU9OX05PTklN TVVUQUJMRQkvKiBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiAqLworfSBSZWxG dW5jVm9sYXRpbGl0eTsKKwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiB7 CiAJTG9naWNhbFJlcFJlbGF0aW9uIHJlbW90ZXJlbDsJLyoga2V5IGlzIHJlbW90ZXJlbC5yZW1v dGVpZCAqLwpAQCAtMzEsNiArNDIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1h cEVudHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVu IGNsb3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0dHJp YnV0ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkg dXBkYXRlcy9kZWxldGVzPyAqLworCWJvb2wJCXNhbWV1bmlxdWU7CQkvKiBJcyB0aGUgdW5pcXVl IGNvbHVtbiBvZiBsb2NhbCBhbmQgcmVtb3RlCisJCQkJCQkJCSAgIGNvbnNpc3RlbnQ/ICovCisJ UmVsRnVuY1ZvbGF0aWxpdHkJdm9sYXRpbGl0eTsJCS8qIGFsbCBmdW5jdGlvbnMgaW4gbG9jYWxy ZWwgYXJlCisJCQkJCQkJCSAgIGltbXV0YWJsZSBmdW5jdGlvbj8gKi8KIAogCS8qIFN5bmMgc3Rh dGUuICovCiAJY2hhcgkJc3RhdGU7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCmluZGV4IDViOWZlYTJjOGMuLmRlYjgwY2RiMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xOTUsNiArMTk1LDcgQEAgZXh0ZXJuIHZvaWQg YXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CiBleHRlcm4g dm9pZCBhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCk7CiBleHRlcm4gdm9pZCBhcHBs eV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKTsKIGV4dGVy biB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJy ZW50X3hpZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhMb2dp Y2FsUmVwUmVsTWFwRW50cnkgKnJlbCk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVz eW5jX3dvcmtlcih2b2lkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKaW5kZXggNDMxYWQ3ZjFiMy4uZWQ3YzJl N2Y0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCkBAIC0xOTksNiArMTk5LDggQEAgZXh0ZXJuIHVpbnQ2 NCBhc3NpZ25fcmVjb3JkX3R5cGVfaWRlbnRpZmllcihPaWQgdHlwZV9pZCwgaW50MzIgdHlwbW9k KTsKIAogZXh0ZXJuIGludAljb21wYXJlX3ZhbHVlc19vZl9lbnVtKFR5cGVDYWNoZUVudHJ5ICp0 Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMik7CiAKK2V4dGVybiBMaXN0ICpHZXREb21haW5Db25z dHJhaW50cyhPaWQgdHlwZV9pZCk7CisKIGV4dGVybiBzaXplX3QgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlFc3RpbWF0ZSh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgU2hhcmVkUmVjb3JkVHlwbW9k UmVnaXN0cnlJbml0KFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5ICosCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IGI1MmFmNzRlMzUu LjgxNzkxYzhkM2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFz ZV9jYXNjYWRlLnBsCkBAIC0zOSw2ICszOSwxMyBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwogCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1pbmdf bW9kZSkiKTsKIAorCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ2FwcGx5JykKKwl7CisJCSRub2Rl X0MtPnNhZmVfcHNxbCgKKwkJCSdwb3N0Z3JlcycsICIKKwkJQUxURVIgVEFCTEUgdGVzdF90YWIg QUxURVIgYyBEUk9QIERFRkFVTFQiKTsKKwl9CisKIAkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRv IGZpbmlzaCBpbml0aWFsaXphdGlvbgogCiAJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc2NGVhMmVkNTkKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0w LDAgKzEsMjA2IEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1v ZGUgImFwcGx5IiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVh dGUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsK KyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkg JG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQgcHJpbWFy eSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0 ZXN0X3RhYiAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVz dF90YWIiKTsKKworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Ygor CUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1l JworCVBVQkxJQ0FUSU9OIHRhcF9wdWIKKwlXSVRIIChzdHJlYW1pbmcgPSBhcHBseSwgY29weV9k YXRhID0gZmFsc2UpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGluZGV4IG9uIHRo ZSBwdWJsaXNoZXIgYW5kIHRoZSBzdWJzY3JpYmVyCisjIGlzIGRpZmZlcmVudC4gQ2hlY2sgdGhl IGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVY IHRlc3RfdGFiX2JfaWR4IE9OIHRlc3RfdGFiIChiKSIpOworCisjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgb3B0aW9uIGlzCisjIHNwZWNpZmll ZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cworIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5 LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJH VyAjXGQrXF0gc3RhcnRlZC8sIDApOworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24gd2l0aCBkaWZmZXJlbnQgdW5pcXVl IGluZGV4LywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIFRyaWdnZXJzIHdoaWNoIGV4ZWN1dGUg bm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCisjIHN1YnNjcmli ZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGlu IHRoaXMgY2FzZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRc JAorICBCRUdJTgorICAgIFJFVFVSTiBOVUxMOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3Nx bDsKK0NSRUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZPUkUgSU5TRVJUIE9OIHRlc3RfdGFi CitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYiBFTkFCTEUgUkVQTElDQSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisK KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVy ZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisK KyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNl cnRfdHJpZyBPTiB0ZXN0X3RhYiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3Vs dCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0 cmlnZ2VyJyk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1 ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgYmFja2dyb3Vu ZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxU IHJhbmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBs aWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0 aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmli ZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsK KworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJl c3Npb24nKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4 cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCisjIGZ1bmN0aW9uIG9uIHRoZSBzdWJz Y3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCisjIHdv cmtlciBpbiB0aGlzIGNhc2UuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRlc3RfZG9tYWluIEFTIGludCBDSEVDSyhWQUxVRSA+ IHJhbmRvbSgpKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgdGVz dF9kb21haW47Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIik7CisKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogIGNhbm5vdCByZXBsaWNh dGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24taW1tdXRhYmxlIGZ1bmN0aW9u LywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gb24g dGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYSBUWVBF IGludCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRvbWFpbiBjb25zdHJh aW50IGV4cHJlc3Npb24nCispOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWlu dCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgorIyBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3 b3JrZXIgaW4gdGhpcworIyBjYXNlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTlNUUkFJTlQgdGVzdF90 YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2Zp bGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogIGNhbm5vdCByZXBsaWNhdGUgcmVsYXRpb24uIFRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1bHQg dmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTlNU UkFJTlQgdGVzdF90YWJfY29uIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0 LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgY29uc3RyYWludCBleHByZXNzaW9uJyk7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3A7Cisk bm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4yMy4wLndpbmRv d3MuMQoK --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v9-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch" Content-Description: v9-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch Content-Disposition: attachment; filename="v9-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch"; size=7023; creation-date="Wed, 08 Jun 2022 07:09:00 GMT"; modification-date="Wed, 08 Jun 2022 07:12:29 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMzgzYTQzMGM0ZTZmODExYmZlMmFkMGU0MGY1YzRiYTA5MmM2YmVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCA4IEp1biAyMDIyIDExOjUyOjU0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2OSA0LzRdIEFk ZCBhIEdVQyAibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiB0bwogY29udHJv bCBwYXJhbGxlbGlzbS4KClRoaXMgR1VDIGNvbnRyb2xzIGhvdyBtYW55IGFwcGx5IGJhY2tncm91 bmQgd29ya2VycyBjYW4gYmUgbGF1bmNoZWQgcGVyCnN1YnNjcmlwdGlvbi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysr KysrKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgICAgICAgfCAg OSArKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAg fCAyNSArKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAg ICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oICAgICB8ICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCA1YjdjZTY1MzFkLi5jZTdmNjgyN2YyIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00OTcw LDYgKzQ5NzAsMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3lu YzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgt YXBwbHktYmd3b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5X2Jn d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9hcHBs eV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFy YW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBh cmFtZXRlciBjb250cm9scyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIG9mIHRoZSBzdHJlYW1p bmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGlmIHdlIHNldCBzdWJzY3Jp cHRpb24gb3B0aW9uCisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gdG8gPGxp dGVyYWw+YXBwbHk8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9v bCBkZWZpbmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhlIGRlZmF1bHQgdmFsdWUgaXMgMy4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGlu IHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBv ciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxl bGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dyb2tlci5jCmluZGV4IDBmOTA4MWQ2MmYuLjlkMDgyNjE5MDYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCkBAIC0yMSw2 ICsyMSw3IEBACiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oIgpAQCAtNTcxLDkgKzU3MiwxNyBAQCBhcHBseV9iZ3dvcmtlcl9zZXR1 cCh2b2lkKQogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlib29sCQlsYXVuY2hlZDsKIAlB cHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsKKwlpbnQJCQluYXBwbHl3b3JrZXJzOwogCiAJZWxv ZyhERUJVRzEsICJzZXR0aW5nIHVwIGFwcGx5IHdvcmtlciAjJXUiLCBsaXN0X2xlbmd0aChBcHBs eVdvcmtlcnNMaXN0KSArIDEpOwogCisJLyogQ2hlY2sgSWYgdGhlcmUgYXJlIGZyZWUgd29ya2Vy IHNsb3QocykgKi8KKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOworCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX2FwcGx5X2JhY2tncm91bmRfd29ya2Vy X2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNh bFJlcFdvcmtlckxvY2spOworCWlmIChuYXBwbHl3b3JrZXJzID49IG1heF9hcHBseV9iZ3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbikKKwkJcmV0dXJuIE5VTEw7CisKIAlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKIAl3c3RhdGUgPSAoQXBwbHlCZ3dv cmtlclN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTdGF0ZSkpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IDIwMWY1MTIzMmUuLmRk Njg2NTEzMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMK QEAgLTU0LDYgKzU0LDcgQEAKIAogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50 CQkJbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMzsKIAogTG9naWNhbFJl cFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtNzM2LDYgKzczNywzMCBA QCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwog fQogCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChub3QgbmVjZXNzYXJp bHkgcnVubmluZykgYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGZvciBhIHN1YnNjcmlwdGlv bi4KKyAqLworaW50Citsb2dpY2FscmVwX2FwcGx5X2JhY2tncm91bmRfd29ya2VyX2NvdW50KE9p ZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2Nr SGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qIFNlYXJjaCBmb3IgYXR0YWNo ZWQgd29ya2VyIGZvciBhIGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4gKi8KKwlmb3IgKGkgPSAwOyBp IDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJl cFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJp ZCA9PSBzdWJpZCAmJiB3LT5zdWJ3b3JrZXIpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4gcmVz OworfQorCiAvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3BhY2Ug bmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYwppbmRleCA1NWQ0MWFlN2Q2Li41MzllYzA3ZmY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAg LTMyMjAsNiArMzIyMCwxOCBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFt ZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7Im1heF9hcHBseV9i Z3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJ T05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIGFwcGx5 IGJhY2tncmFuZCB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAor CQkmbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkzLCAwLCBNQVhfQkFD S0VORFMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9h Z2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRo ZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCA0OGFkODBjZjJlLi5iNzEz NDA1NDlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC0zNjAsNiArMzYwLDcgQEAKICNtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJz ID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJl cXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMgkj IHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycworI21heF9hcHBseV9i Z3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDMJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmFjOGVmOTQz ODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2 ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRp b25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2 b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggZGViODBjZGIxOS4u ZGQ0OWQ4ZTJlYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK QEAgLTE2MSw2ICsxNjEsNyBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAo T2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxvZ2ljYWxy ZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNhbHJlcF9h cHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBS ZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAog CQkJCQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwotLSAKMi4yMy4w LndpbmRvd3MuMQoK --_005_OS3PR01MB6275208A2F8ED832710F65E09EA49OS3PR01MB6275jpnp_--