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 1p2kdr-0001ms-Gg for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Dec 2022 02:58:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p2kdq-0004Sb-Dx for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Dec 2022 02:58:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2kdp-0004Qp-3K for pgsql-hackers@lists.postgresql.org; Wed, 07 Dec 2022 02:58:37 +0000 Received: from esa17.fujitsucc.c3s2.iphmx.com ([216.71.158.34]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2kdk-0004c8-29 for pgsql-hackers@lists.postgresql.org; Wed, 07 Dec 2022 02:58:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1670381912; x=1701917912; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=jYyexC3B7Hb4ARpj2y4kLh9TQYEPi2bw37cpolU7mPc=; b=ihuZ0/ennEmLxAEh1cRUJVrVe31adyiHiwllh9XnvBeWta0KsLkm9qR+ mawuVLjAxLLJs9DFQ3yXcv2c0exUoMBHoQEKs432WLWzElCcPFDg3zjJ4 4UHJy349H3wvYDUMZK8c0OGajTrB7ZzF5x7oKDQtPxHDJCx7qnHayYwGW KIZ/RBOk5qCW7FejNqM+dkYYcv0TCu+Z6q8mZGbRmdgbjfEg/DKS7z5i7 D9qoLMDsjmy6srWewx6M2gILLooMstwt1ljSpZNX0m9sL0dviLVE0lXj4 itncnezKvEXnBXpyMHRia8OyKpM6pHEFPXftdlCQhYKJ6p5dEA81/XbzO w==; X-IronPort-AV: E=McAfee;i="6500,9779,10553"; a="71716427" X-IronPort-AV: E=Sophos;i="5.96,223,1665414000"; d="scan'208,223";a="71716427" Received: from mail-os0jpn01lp2112.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.112]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Dec 2022 11:58:26 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=loAaYMwB5UeMcwQvHuqXjdDeccpZQjYYIjIEpgg9U31Al895yrE8t33Wt/p6qouDokfGByBqVFSEQXnsINlkhRmPN4J21E3qvzD2IbSbMjaxIZJvRmagjvSUaNb5Vft6zT7phqZo8aWtF0PaeTOgwk4pJG6PjGdBLMQfK10LohWLcsfvEW3djDyMnt+k027gC0yCmv5y+JeGkyJ/xH24TStRXlNWnQL6jvyTwy2YkrClxXNITZHLOQG29iZFUIdiNEYiWk1PeKh/k7FI+Y/IROh8pmutWrvl8rEmkr+HY7meCBx4yeRNv7Vupb4wf4Udh84uZG8Py4p10ocTGK1HFw== 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=ODxFs8eKoRktqWr6e8dXJPvnMz1Wj8d3SY5D9Fwu02E=; b=d7rfp9GW0FxSgDfuDQZZ7NP3voHRG1jF7pLpqrq9Q7UkZU2uzvRlQC6gDIYqzTRZEddHrDdAbvfimaubkEY52YrBnA4Wdmb3yb1h4HoPWaCl0EubgMmvA8HSQZr7F4DLDts0VTv3xfF4Ti962s/wRw9fvbbbzRT9nsf/hIGJqf8kTklPew4M/KUFAlK6yG67wMWRauF6pGbFfflpuY8PzhJ+ABGfN4ZfZeCakH/CJU+yoDxoHKsXc1hoNTx3aabDIMfMXapnjdZ+A+t1AzpTSmxkHUmOXqwGsnM2I2p8aI6J+yPenbLzYEMGBqeJhkHfLlLpq7mEQDkp++n/+/o4Ow== 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 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYYPR01MB8021.jpnprd01.prod.outlook.com (2603:1096:400:ff::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Wed, 7 Dec 2022 02:58:20 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::6bd0:acc4:7596:b8b1%7]) with mapi id 15.20.5880.014; Wed, 7 Dec 2022 02:58:20 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.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: AQHYSXX5UDTvhwo1UESW8vqRoeLCJazlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEIACxK+AgAIepYCAAy1b4IAA8x6ggAJYuYCABaCt0IACJjmAgAED94CAAgbzAIABr/gAgASdinCAASDJ4IABzHIAgAE3bTA= Date: Wed, 7 Dec 2022 02:58:19 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZWNhZTkxZWItZjE0Yi00ZDI3LWExYzQtMzYyYzY2ZWIw?= =?utf-8?B?OTA5O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0wN1QwMjoyNTowMVo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYYPR01MB8021:EE_ x-ms-office365-filtering-correlation-id: e3af8554-d321-460f-a2d0-08dad7fee597 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gBLZ3OR8MaQ7a5D8lbhQ5hsV/Nck1o82dy8gYPf8o8HHmx+HIWhRC8Wa7tr4kyMxKD6McSdTDIwjoq/qEZpOgSP2MGdRt5dIHGNOv57+Q8lLw0wgMhSM0OlglFmSzv5DbQecu0a6UJaZZp/SXM4fuWZWTyao+OeG/nTacapyaXr3rLB9MZg+/ND2fRUzVdYVWeuHJolU1H7sZebZiwBOWceqVVHXo5oqQD/Atktg/NY4QizDN51+V1xWDlxX6O5F4nQMI3MZDtUnJlfnoangj2ED6k7jpc8TaZyMI07u4qgH0klr7cEwczShIOW/mTt3E9X3TM+kem3NX1aJYi9KnH+78yu+evY6dq0xcAz6rDVNtgLz2XZLIrzwUxvKOM/1baz63xi7eNKMAgGZxP672+ULCvR7UbhkJQmR6igDaCzvTPDsDzTRs6gp30r2fBxNyUdQqFX63TexCZyxmb12AWlcGNclj07WJZTQusrjWbjYftf7SyrX1EhFMY6TnXzrov4SxHubYoz4WEEdFvJvdhnXcaqgmr0dJbYlhazkNmqHdBCNWYUKZBe2ElquENsKDR9bTKZXF7+fhigXtPo/zts55AftjCx3EoEDAjw5uQTOWwOpbMSuY5JKmJTz6bM4W+ZQnvZNHOwfqkXsJbDakpVxSgPPRAMkq6jqq0fd6YN95gFjMeS1Zr9pCW8rmd9hsaPzSV867glGAc9Ar+NBXci0dx3eUxaMpLoIRXTPBEI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(376002)(366004)(396003)(136003)(451199015)(1590799012)(2906002)(71200400001)(83380400001)(9686003)(54906003)(6916009)(86362001)(41300700001)(26005)(186003)(316002)(7696005)(6506007)(85182001)(52536014)(53546011)(8936002)(5660300002)(38070700005)(66476007)(66556008)(66946007)(76116006)(33656002)(64756008)(99936003)(66446008)(66899015)(122000001)(1580799009)(82960400001)(55016003)(4326008)(478600001)(8676002)(38100700002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d0NoeGZ5bVZ6Z3dmd2oxeHJNSUZaL3RscUZOVG1zTGJpbDBiY0wwQkZnVUly?= =?utf-8?B?WUttZ0wwYnloVkJWZXdhL2lnZzdjSWR2NnRjZ1VaVGhKNStQd0RvZ0o3a3R2?= =?utf-8?B?U3dGNFBSaVJ1R0cwenZlZEZreWpIbTBheXV3UVpObWN4V3hVNzZURlJMNnVK?= =?utf-8?B?ZG1yN3lnMlltbFcrUC9ISG1HN09Ec0VGNTk3NEFkRHhKT0xqa01xWkRhbGMv?= =?utf-8?B?Q0JoK1NnVmd3bkVTNFloa1FZWUhpQXVLenNzOTBVK1dqQ3VEUEJtS0pncVRr?= =?utf-8?B?eWNNakJNb0lvWWRaN3BSSEtmZ0RlSlRyR0VXeWtuK2laTzhaK3FNcTBMQ2p5?= =?utf-8?B?VmZaMkc0eFd0UVFoY2Nnd09rK0hCdlJvd213VDMvZUdwNmJScU1qRXVXZXE5?= =?utf-8?B?Nm9LYjJBOG96T1BmVGhWRVE5NXNvR2FOV08rWG50WDU4VHoyTkdMSDJjWVB1?= =?utf-8?B?dnNQaWR5WDVWcndQK2pRanpTbWNTMXhCV1ZvYmtYQVBFZExuRFJkem9ra2R5?= =?utf-8?B?VTk0azM1dU9vTEhGZnBrb040NGlYT0lBTERHKzJNdEc4L1RXVVI5NTdiR0dF?= =?utf-8?B?U2VZZ244TXlOQll4WTB5eGhEREcySDVkUDQ2SXdKcW5tdXY2VGhESHovMWtY?= =?utf-8?B?aXVlbXFBVE9tQk11YU9GaWVYcmdJbjErWndxSmJYTVRyckF6aU11S3V5bTQ3?= =?utf-8?B?eCs3OG9TSFEvTHMyeHZEbHMyT1piSlZmRTJlR0wvUUJyUXZhKy9TSTdtOFpO?= =?utf-8?B?SjdnSlY2dldZcVNpZFEza1dMWko2TEtxNGNYUjIwUmtPYnpmWFY1UGllRUNQ?= =?utf-8?B?NXlnYkdMbENwTlZGTWt1cVR0R2ZBaHVUVkdIVFY2UWtTMnYrZDJHcnRzMTNZ?= =?utf-8?B?SUd0Mm5DRVBkTXFDcTMzWEx6dVlaZXNYZ1dOZlVXaUxIZ3R3M1Q2dDFyaHJn?= =?utf-8?B?OXRrZ2xxalhCOGZkU2dCSWVoZ0tuSysxOFdBMlNzd0JUNW41VEJFK2VSN3FH?= =?utf-8?B?RnZEVnhpTHp6WExiQzRNRnVCeTd2ZzI2S1U1cEN5NUZHUnRCb1dJTllLT1E2?= =?utf-8?B?dG1XS1JSOEFWRFEvNlh2RXpBYlJweTltSmUwV2VVa21XczgxVlBXcCt2U3ZQ?= =?utf-8?B?ZmNUQnhZbWhaVFVWT0p1UDRNY3dWN0FKSm9ZbGtET0gxN3dpb2Yyam1vRGdz?= =?utf-8?B?bGcrY3orM25WVm9sMGliOFhHd0paQ00wV21SS3ZrRXlHRndvVTdKLzVmKzRJ?= =?utf-8?B?SCs3NW95OFplV2tNYk1uajVZTGpwdi9aTzMrakV2aHZEWnI1SkoyejZwT214?= =?utf-8?B?eUJ5TjFFSVd4aTFkRGFyNEJEZUYrcHFHcklCTDlpUVkvS0hZazBnbGc5Qlkv?= =?utf-8?B?WkZDT253eEFLemZkeGt5bjdaTW8vR1VCL3V4WWhGVlAxbVdneCsxcXBuTURR?= =?utf-8?B?anBMUnBaWkg5OHMzeTN1QWpEem5qbUptV0k3bjh2Rk5ZdjNyekxSODMxdkxS?= =?utf-8?B?cFdnMUdNeVFKUjcrdmt2YVRHVXNxN0N1Z09kZ0xlQWszSkJ0QWVTWVBLVk9O?= =?utf-8?B?dmJqZ200S29HVGJEM2tUcjNBaldUTjMyZDB2SFR0MVk0K3h5b3VMb3NXWHIz?= =?utf-8?B?RTBkTlJ3ZFBDUFRVdjNCRDJ6ekdVTzVFWHl6SnpBNVpYakhFOVplSjIxS2oz?= =?utf-8?B?QTlPdlFDMUN2MXhlZldRcGVGUUxCd0Jtc2FZMEJ5T0E4VWdGSlpleFIwZVBL?= =?utf-8?B?MjdyRlFBTk94MzRRaFNxK1UvWEczN1c2UjdyTWs0U3VlaVdjVTNEVjFCc0hw?= =?utf-8?B?UDZRZXJmdnhpcG84Qk9mcGFHQXNIMzNxRjdZbkRERE1KOTB3TGRNTHl1ODFI?= =?utf-8?B?QU0ySVZyeUVVRzZNQ21HcVYyMzFUNEtPNURwSDVzeWhLdVVFT2dFOFhxMFlZ?= =?utf-8?B?VHJpcWxiSHNJVjVZcFdDUHBkTmpDci9KQ3VXQUt4MFBKOWFGN0RUb1pNdUZj?= =?utf-8?B?R2V3RjRqME13ZkFhcTBTUnlDZmIrZmlCTWRQZXhSNnhrQnJDbGlWRkxaWWYv?= =?utf-8?B?dlJqOThlaW4zK1VTQVRmZFRhRnpmVE5uMTh0YkJ5c3Vqemd5Yi9XdCtKOTJo?= =?utf-8?Q?YcH/dKkux5SVLVMD0DFrQYq+2?= Content-Type: multipart/mixed; boundary="_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 990oPVZ8RVTplzjsF5Aa8je3Blj3KlSf7f56EDz4vKfXjiYmgezBEB01fYwmqUswsnZN/lmry4lkRUfIqUa/g/QijM3FWPKq2jTiRlvnGNySsRDd5/Y0jDg8bQiuX71T453O8MNOVPstM9RkPMU0fbvMUS0/nGefsl/Pr2uJprtVP2PX+2m2Eh/NRVs4c1uyxOjcv7QEldeBHlposM960oAR6xgBHRL1rIQa+BKYGRVGR0Jg/jN362JZ4PMWT4uEpIYzW4yHpGFEiewO1pSFQOKGIKeL1Abvfyi6Wq1FA/WvxXOK51xQHO9gzriK6fM7JB+nAKp/sjvry6UqU5s+J1wTfUy+lfzDphPobL2t0FmwLVWdSzyZY+2kWciVWYTkO0Ugav8AzUHRMMCfR+wuYrp7yYIx9CPqAOu20ywqE0K8Y3c3dwIiIs1cFAOxQCkrW2qpCKQI2SjMQODt3mLH1BylfNdN5XQOuUJvjhvLRSJ1WQxLnQLrdENBwR+OVizd8byBMf9LassRgVPQlTRQ4rvmeD3WDwanK10q4W9VFJGleR2/Q1qKDzV/423rFzIkr8QD3AgkC059RtwI9SD7X7rghI1G5nU9YJVkzY6DUdSM1YQeQTxyss39E9E114LAGzuTjXW/XY0NKnbDwu7zYxiTajfuz5e5Pcysa9DAk5wQI3WpcaLmsHB2RFO6iBRvgf8unFknnQOz/ENWNYYVyOV6yO/WUSHhwj+6DHk3Kn3m4Y8ApOqEZsavT0SxA4d0Se44yC6QNB4YjYVOrld8MlO2H06PTvoVIkTywSg9uuZFzJaJyzH4Bf5XU977y8ClHbMs5YwWkQ1+S/ZLyO/9VS7g8cD/ko2shzVTrmXZwbGXqX0Q147J/t6NMGoWI6JfhRSeT+X1OLpm5ziHEiERYg== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3af8554-d321-460f-a2d0-08dad7fee597 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2022 02:58:19.9306 (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: 6IYuuO+kv0CZqmCikpcvb9pK259e6sIqLMQmECKvpo5LA0DaxVnI6CsC56UIdjPYznbK1Z3qaznijoQTzv8QwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB8021 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgRGVjZW1iZXIgNiwgMjAyMiAzOjUwIFBNIEFtaXQgS2FwaWxhIDxhbWl0Lmth cGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBNb24sIERlYyA1LCAyMDIyIGF0IDk6 NTkgQU0gaG91emouZm5zdEBmdWppdHN1LmNvbQ0KPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4g d3JvdGU6DQo+ID4NCj4gPiBBdHRhY2ggYSBuZXcgdmVyc2lvbiBwYXRjaCBzZXQgd2hpY2ggZml4 ZWQgYSB0ZXN0Y2FzZSBmYWlsdXJlIG9uIENGYm90Lg0KPiA+DQo+IA0KPiBGZXcgY29tbWVudHM6 DQo+ID09PT09PT09PT09PQ0KPiAxLg0KPiArIC8qDQo+ICsgKiBCcmVhayB0aGUgbG9vcCBpZiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZw0KPiArICogdGhl IHRyYW5zYWN0aW9uLiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHNob3VsZCBoYXZlIGNsb3Nl ZCB0aGUNCj4gKyAqIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcuDQo+ICsgKi8NCj4gKyBpZiAoYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkgJiYNCj4gKyBNeVBhcmFsbGVsU2hhcmVkLT54YWN0X3N0 YXRlID09IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKQ0KPiArIGdvdG8gZG9uZTsNCj4gDQo+IFRo aXMgbG9va3MgaGFja2lzaCB0byBtZSBiZWNhdXNlIGlkZWFsbHksIHRoaXMgQVBJIHNob3VsZCBl eGl0IGFmdGVyIHJlYWRpbmcgYW5kDQo+IGFwcGx5aW5nIGFsbCB0aGUgbWVzc2FnZXMgaW4gdGhl IHNwb29sIGZpbGUuIFRoaXMgY2hlY2sgaXMgcHJpbWFyaWx5IGJhc2VkIG9uIHRoZQ0KPiBrbm93 bGVkZ2UgdGhhdCBvbmNlIHdlIHJlYWNoIHNvbWUgc3RhdGUsIHRoZSBmaWxlIHdvbid0IGhhdmUg bW9yZSBkYXRhLiBJDQo+IHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byBleHBsaWNpdGx5IGVu c3VyZSB0aGUgc2FtZS4NCg0KSSBhZGRlZCBhIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZXJl IGlzIG5vIG1lc3NhZ2UgbGVmdCBhZnRlciBjb21taXR0aW5nDQp0aGUgdHJhbnNhY3Rpb24uDQoN Cg0KPiAyLg0KPiArIC8qDQo+ICsgKiBObyBuZWVkIHRvIG91dHB1dCB0aGUgREVCVUcgbWVzc2Fn ZSBoZXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseQ0KPiArICogd29ya2VyIGFzIHNpbWlsYXIgbWVz c2FnZXMgd2lsbCBiZSBvdXRwdXQgd2hlbiBoYW5kbGluZyBTVFJFQU1fU1RPUA0KPiArICogbWVz c2FnZS4NCj4gKyAqLw0KPiArIGlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkgJiYgbmNo YW5nZXMgJSAxMDAwID09IDApDQo+ICAgZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCBjaGFuZ2Vz IGZyb20gZmlsZSBcIiVzXCIiLA0KPiAgIG5jaGFuZ2VzLCBwYXRoKTsNCj4gICB9DQo+IA0KPiBJ IHRoaW5rIHRoaXMgY2hlY2sgYXBwZWFyZWQgYSBiaXQgdWdseSB0byBtZS4gSSB0aGluayBpdCBp cyBva2F5IHRvIGdldCBhIHNpbWlsYXINCj4gREVCVUcgbWVzc2FnZSBhdCBhbm90aGVyIHBsYWNl IChvbiBzdHJlYW1fc3RvcCkgYmVjYXVzZQ0KPiAoYSkgdGhpcyBpcyBsb2dnZWQgZXZlcnkgMTAw MCBtZXNzYWdlcyB3aGVyZWFzIHN0cmVhbV9zdG9wIGNhbiBiZSBhZnRlciBtYW55DQo+IG1vcmUg bWVzc2FnZXMsIHNvIHRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgZGlyZWN0IGNvcnJlbGF0 aW9uOyAoYikgZHVlIHRvDQo+IHRoaXMsIHdlIGNhbiBpZGVudGlmeSB3aGV0aGVyIGl0IGlzIGR1 ZSB0byBzcG9vbGVkIG1lc3NhZ2VzIG9yIGR1ZSB0byBkaXJlY3QNCj4gYXBwbHk7IGlkZWFsbHkg d2UgY2FuIHVzZSBhbm90aGVyIERFQlVHIG1lc3NhZ2UgdG8gZGlmZmVyZW50aWF0ZSBidXQgdGhp cw0KPiBkb2Vzbid0IGFwcGVhciBiYWQgdG8gbWUuDQoNCk9LLCBJIHJlbW92ZWQgdGhpcyBjaGVj ay4NCg0KPiAzLiBUaGUgZnVuY3Rpb24gbmFtZXMgZm9yIHNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQo KSwgc2VyaWFsaXplX3N0cmVhbV9zdG9wKCksIGFuZA0KPiBzZXJpYWxpemVfc3RyZWFtX2Fib3J0 KCkgZG9uJ3Qgc2VlbSB0byBtYXRjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGV5IHByb3ZpZGUNCj4g YmVjYXVzZSBub25lIG9mIHRoZXNlIHdyaXRlL3NlcmlhbGl6ZSBjaGFuZ2VzIHRvIHRoZSBmaWxl LiBDYW4gd2UgcmVuYW1lDQo+IHRoZXNlPyBTb21lIHBvc3NpYmxlIG9wdGlvbnMgY291bGQgYmUg c3RyZWFtX3N0YXJ0X2ludGVybmFsIG9yDQo+IHN0cmVhbV9zdGFydF9ndXRzLg0KDQpSZW5hbWVk IHRvIHN0cmVhbV9zdGFydF9pbnRlcm5hbCgpLg0KDQpBdHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBh dGNoIHNldCB3aGljaCBhZGRyZXNzZWQgYWJvdmUgY29tbWVudHMuDQpJIGFsc28gYXR0YWNoIGEg bmV3IHBhdGNoIHRvIGZvcmNlIHN0cmVhbSBjaGFuZ2UocHJvdmlkZWQgYnkgU2hpLXNhbikgYW5k DQphbm90aGVyIG9uZSB0aGF0IGludHJvZHVjZSBhIEdVQyBzdHJlYW1fc2VyaWFsaXplX3RocmVz aG9sZCAocHJvdmlkZWQgYnkNCkt1cm9kYS1zYW4gYW5kIFNoaS1zYW4pIHdoaWNoIGNhbiBoZWxw IHRlc3RpbmcgdGhlIHBhdGNoIHNldC4NCg0KQmVzaWRlcywgSSBmaXhlZCBhIGJ1ZyB3aGVyZSB0 aGVyZSBjb3VsZCBzdGlsbCBiZSBtZXNzYWdlcyBsZWZ0IGluIG1lbW9yeQ0KcXVldWUgYW5kIHRo ZSBQQSBoYXMgc3RhcnRlZCB0byBhcHBseSBzcG9vbGVkIG1lc3NhZ2UuDQoNCkJlc3QgcmVnYXJk cywNCkhvdSB6ag0K --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v57-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v57-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8952; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:13 GMT" Content-Transfer-Encoding: base64 RnJvbSA4YWQ3NDA2OTY3ZTY2NGY3ZjNiNDZmYzBkMDkyMGE4MTM3MTc1ODg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djU3IDcvN10gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyB8IDMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDJjNzZlYjUxYTEuLjQ2YjcxNGJlMTgg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwxMyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25p emluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWlu IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0g ICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxs IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwg YXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMy MjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZp ZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNl bmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0 NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVz dF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVw b3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBs b2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAg ICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4YjcuLmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAg ICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFw cGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJl Y2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAwZjgyZGQ0MTM4Li44Mzky ZTYxNTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC0xMDc3LDcgKzEwNzcsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFU X0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElP Tl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQ R19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTEwMywxMCArMTEwMyw2IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNW YWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJ LyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlk ID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdv cmtlci5zdWJpZCk7CkBAIC0xMTE1LDI2ICsxMTExLDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlw dGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZh bHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlk ID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1sz XSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5k X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xl YWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikp CiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3Zf dGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsK KwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQor CQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUp OworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7 CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24pOwot CQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFs dWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVw bHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0g PSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3Jl X3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2 YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGY5MzAxYjI2MjcuLjZk MTcwNTA1OTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAn LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0 LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxh c3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAn e2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxy ZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1l LGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywK ICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAy NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2 ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5 NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAg ICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3Rf ZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlv biBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkg c3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3Bp ZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9p ZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAg cy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0002-Serialize-partial-changes-to-a-file-when-the-att.patch" Content-Description: v57-0002-Serialize-partial-changes-to-a-file-when-the-att.patch Content-Disposition: attachment; filename="v57-0002-Serialize-partial-changes-to-a-file-when-the-att.patch"; size=43455; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:15 GMT" Content-Transfer-Encoding: base64 RnJvbSAxNWFlZTg2NWRlM2E3YWJlNmM1MTFmZGNmZTgwNDRiZWUwODRhYWE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDQgRGVjIDIwMjIgMTE6MjU6MjkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 NyAyLzddIFNlcmlhbGl6ZSBwYXJ0aWFsIGNoYW5nZXMgdG8gYSBmaWxlIHdoZW4gdGhlIGF0dGVt cHQKIHRvIHNlbmQgZGF0YSB0aW1lcyBvdXQuCgpJbiBwYXRjaCAwMDAxIGlmIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHRpbWVzIG91dCB3aGlsZSBhdHRlbXB0aW5nIHRvCnNlbmQgYSBtZXNzYWdl IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXQgcmVzdWx0cyBpbiBhbiBFUlJPUi4KClRo aXMgcGF0Y2ggKDAwMDIpIG1vZGlmaWVzIHRoYXQgYmVoYXZpb3VyLCBzbyBpbnN0ZWFkIG9mIGVy cm9yaW5nIGl0CndpbGwgc3dpdGNoIHRvICJwYXJ0aWFsIHNlcmlhbGl6ZSIgbW9kZSAtICBpbiB0 aGlzIG1vZGUgdGhlIGxlYWRlcgpzZXJpYWxpemVzIGFsbCByZW1haW5pbmcgY2hhbmdlcyB0byBh IGZpbGUgYW5kIG5vdGlmaWVzIHRoZSBwYXJhbGxlbAphcHBseSB3b3JrZXJzIHRvIHJlYWQgYW5k IGFwcGx5IHRoZW0gYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCi0tLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTcwICsrKysrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgNTAyICsrKysrKysrKysr KysrLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwg IDUzICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAg IDEgKwogNCBmaWxlcyBjaGFuZ2VkLCA1OTYgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKaW5kZXggN2VkNDQ2N2JkYS4uMWZkNjNkOGJmZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAg LTEzNyw5ICsxMzcsMTEgQEAKICAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVy IGJldHdlZW4gTEEgYW5kIFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCiAgKiB3YWl0IHRvIHNlbmQg bWVzc2FnZXMsIGFuZCB0aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KICAqCi0gKiBU byByZXNvbHZlIHRoaXMgaXNzdWUsIHdlIHVzZSBub24tYmxvY2tpbmcgd3JpdGUgYW5kIHdhaXQg d2l0aCBhIHRpbWVvdXQuIElmCi0gKiB0aGUgdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHJl cG9ydHMgYW4gZXJyb3IgYW5kIHJlc3RhcnRzIGxvZ2ljYWwKLSAqIHJlcGxpY2F0aW9uLgorICog VG8gYXZvaWQgdGhpcyB3YWl0LCB3ZSB1c2UgYSBub24tYmxvY2tpbmcgd3JpdGUgYW5kIHdhaXQg d2l0aCBhIHRpbWVvdXQuIElmCisgKiB0aGUgdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHdp bGwgc2VyaWFsaXplIHRoZSBtZXNzYWdlIHRvIGEgZmlsZSBhbmQKKyAqIGluZGljYXRlIFBBLTIg dGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmluZyBtZXNzYWdl cy4KKyAqIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgd2hpY2ggd2lsbCBk ZXRlY3QgZGVhZGxvY2sgaWYgYW55LgorICogU2VlIHBhX3NlbmRfZGF0YSgpIGFuZCBlbnVtIFRy YW5zQXBwbHlBY3Rpb24uCiAgKgogICogNCkgTG9jayB0eXBlcwogICoKQEAgLTQ5NSw5ICs0OTcs MTEgQEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQogCVNwaW5Mb2NrQWNx dWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwogCXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUg PSBQQVJBTExFTF9UUkFOU19VTktOT1dOOwogCXdpbmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwl3 aW5mby0+c2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfVU5LTk9XTjsKIAlTcGluTG9ja1JlbGVh c2UoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKIAogCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCXdp bmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOwogCWVudHJ5LT53aW5mbyA9IHdpbmZvOwog CWVudHJ5LT54aWQgPSB4aWQ7CiB9CkBAIC01NzEsOCArNTc1LDE3IEBAIHBhX2ZyZWVfd29ya2Vy KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJbmFw cGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQpOwogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCi0JLyog U3RvcCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4g Ki8KLQlpZiAobmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uIC8gMikpCisJLyoKKwkgKiBTdG9wIHRoZSB3b3JrZXIgaWYgdGhlcmUgYXJl IGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLgorCSAqCisJICogWFhYIFRoZSB3b3JrZXIgaXMg YWxzbyBzdG9wcGVkIGlmIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG5lZWRlZCB0bworCSAqIHNl cmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1ZSB0byBhIHNlbmQgdGltZW91 dC4gVGhpcyBpcworCSAqIGJlY2F1c2UgdGhlIG1lc3NhZ2UgY291bGQgYmUgcGFydGlhbGx5IHdy aXR0ZW4gdG8gdGhlIHF1ZXVlIGJ1dCB0aGVyZSBpcworCSAqIG5vIHdheSB0byBjbGVhbiB0aGUg cXVldWUgb3RoZXIgdGhhbiByZXNlbmRpbmcgdGhlIG1lc3NhZ2UgdW50aWwgaXQKKwkgKiBzdWNj ZWVkcy4gRGlyZWN0bHkgc3RvcHBpbmcgdGhlIHdvcmtlciBhdm9pZHMgbmVlZGluZyB0aGlzIGNv bXBsZXhpdHkuCisJICovCisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyB8fAorCQluYXBw bHl3b3JrZXJzID4gKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyKSkKIAl7CiAJCWludAkJCXNsb3Rfbm87CiAJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKQEAgLTU5 MCwxMSArNjAzLDE1IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJfQogCiAJd2luZm8tPmluX3VzZSA9IGZhbHNlOwor CXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOwogCiAJcmV0dXJuIGZhbHNlOwogfQog Ci0vKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24uICovCisvKgor ICogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIGFuZCB1bmxpbmsg dGhlIGZpbGVzIHdpdGgKKyAqIHNlcmlhbGl6ZWQgY2hhbmdlcyBpZiBhbnkuCisgKi8KIHN0YXRp YyB2b2lkCiBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bykKIHsKQEAgLTYwNiw2ICs2MjMsMTAgQEAgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8pCiAJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCiAJCXNo bV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CiAKKwkvKiBVbmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLiAqLworCWlmICh3aW5mby0+c2VyaWFsaXplX2No YW5nZXMpCisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHdpbmZvLT5zaGFyZWQtPnhpZCk7CisKIAlpZiAod2luZm8tPmRzbV9zZWcpCiAJCWRzbV9kZXRh Y2god2luZm8tPmRzbV9zZWcpOwogCkBAIC02MzMsNiArNjU0LDU3IEBAIHBhX2RldGFjaF9hbGxf ZXJyb3JfbXEodm9pZCkKIAl9CiB9CiAKKy8qCisgKiBSZXBsYXkgdGhlIHNwb29sZWQgbWVzc2Fn ZXMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5CisgKiB3 b3JrZXIgaGFzIGZpbmlzaGVkIHNlcmlhbGl6aW5nIGNoYW5nZXMgdG8gdGhlIGZpbGUuCisgKi8K K3N0YXRpYyB2b2lkCitwYV9zcG9vbGVkX21lc3NhZ2VzKHZvaWQpCit7CisJUGFydGlhbEZpbGVT ZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCisJLyoKKwkgKiBDaGVjayBpZiBjaGFuZ2VzIGhhdmUg YmVlbiBzZXJpYWxpemVkIHRvIGEgZmlsZS4gSWYgc28sIHJlYWQgYW5kIGFwcGx5CisJICogdGhl bS4KKwkgKi8KKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlm aWxlc2V0X3N0YXRlID0gTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldF9zdGF0ZTsKKwlTcGluTG9j a1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJICogSWYgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBjaGFuZ2Vz IHRoZW4KKwkgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9yIHRoZSBs ZWFkZXIgd29ya2VyIHRvIGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLiBPdGhl cndpc2UsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBjaGFuY2Ug dG8gcmVjZWl2ZSBhIFNUUkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2spIHVu dGlsCisJICogdGhlIGxlYWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGljaCBjYW4g bGVhZCB0byB1bmRldGVjdGVkCisJICogZGVhZGxvY2suCisJICovCisJaWYgKGZpbGVzZXRfc3Rh dGUgPT0gRlNfU0VSSUFMSVpFKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJl ZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxT aGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwkvKgorCSAqIFdlIGNhbm5vdCBy ZWFkIHRoZSBmaWxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQg YWxsCisJICogY2hhbmdlcyB0byB0aGUgZmlsZSBiZWNhdXNlIHRoZXJlIG1heSBzdGlsbCBiZSBt ZXNzYWdlcyBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuIFdlIHdpbGwgYXBwbHkgYWxsIHNwb29s ZWQgbWVzc2FnZXMgdGhlIG5leHQgdGltZSB3ZSBjYWxsIHRoaXMKKwkgKiBmdW5jdGlvbiwgd2hp Y2ggc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0IGluIHRoZQor CSAqIG1lbW9yeSBxdWV1ZS4KKwkgKi8KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NF UklBTElaRV9ET05FKQorCXsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJl ZCwgRlNfUkVBRFkpOworCX0KKwllbHNlIGlmIChmaWxlc2V0X3N0YXRlID09IEZTX1JFQURZKQor CXsKKwkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcygmTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldCwK KwkJCQkJCQkgICBNeVBhcmFsbGVsU2hhcmVkLT54aWQsCisJCQkJCQkJICAgSW52YWxpZFhMb2dS ZWNQdHIpOworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBGU19VTktO T1dOKTsKKwl9Cit9CisKIC8qCiAgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9m IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwpAQCAtNzE3LDYgKzc4OSwxMSBAQCBMb2dpY2Fs UGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJLyoKIAkJCSAqIElnbm9y ZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIK IAkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCSAqCisJCQkgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRp bmcgdGhlIHN0YXRpc3RpY3MgZmllbGRzIGZyb20gdGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29y a2VyIGJ1dCBmb3IgdGhhdCwgaXQgbmVlZHMgdG8gcmVidWlsZCB0aGUgZW50aXJlCisJCQkgKiBt ZXNzYWdlIGJ5IHJlbW92aW5nIHRoZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlIHdvcmsg dGhhbgorCQkJICogc2ltcGx5IGlnbm9yaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgogCQkJICovCiAJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7 CiAKQEAgLTcyOCw2ICs4MDUsOSBAQCBMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hh bmRsZSAqbXFoKQogCQl7CiAJCQlpbnQJCQlyYzsKIAorCQkJLyogQ2hlY2sgaWYgY2hhbmdlcyBo YXZlIGJlZW4gc2VyaWFsaXplZCB0byBhIGZpbGUuICovCisJCQlwYV9zcG9vbGVkX21lc3NhZ2Vz KCk7CisKIAkJCWlmICghaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24oKSkKIAkJCXsKIAkJCQkv KgpAQCAtMTA3NCwxNSArMTE1NCwyNCBAQCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9p ZCkKIC8qCiAgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CiAgKiBxdWV1ZS4KKyAqCisgKiBJZiB0aGUgYXR0ZW1w dCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB0aGVuIHdlIHdpbGwg c3dpdGNoCisgKiB0byAiUEFSVElBTF9TRVJJQUxJWkUgbW9kZSIgZm9yIHRoZSBjdXJyZW50IHRy YW5zYWN0aW9uIC0tIHRoaXMgbWVhbnMgdGhhdAorICogdGhlIGN1cnJlbnQgZGF0YSBhbmQgYW55 IHN1YnNlcXVlbnQgZGF0YSBmb3IgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisgKiBzZXJpYWxp emVkIHRvIGEgZmlsZS4gVGhpcyBpcyBkb25lIHRvIHByZXZlbnQgcG9zc2libGUgZGVhZGxvY2tz IHdpdGgKKyAqIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChyZWZlciB0byB0aGUgY29t bWVudHMgYXRvcAorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jIGZvciBkZXRhaWxzKS4KICAqLwog dm9pZAotcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBu Ynl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCSBib29sIHN0 cmVhbV9sb2NrZWQpCiB7CiAJaW50CQkJcmM7CiAJc2htX21xX3Jlc3VsdCByZXN1bHQ7CiAJVGlt ZXN0YW1wVHogc3RhcnRUaW1lID0gMDsKIAogCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkp OworCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsKIAogI2RlZmluZSBTSE1fU0VO RF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCiAjZGVmaW5lIFNITV9TRU5EX1RJTUVPVVRfTVMJCSgx MDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TKQpAQCAtMTExMiwxOSArMTIwMSw0NiBA QCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRl cywgY29uc3Qgdm9pZCAqZGF0YSkKIAkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJCX0KIAot CQkvKgotCQkgKiBJZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkg dGltZXMgb3V0LCB3ZSByZXN0YXJ0Ci0JCSAqIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHRvIHBy ZXZlbnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGggYW5vdGhlcgotCQkgKiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSBmb3IKLQkJICog ZGV0YWlscy4KLQkJICovCiAJCWlmIChzdGFydFRpbWUgPT0gMCkKIAkJCXN0YXJ0VGltZSA9IEdl dEN1cnJlbnRUaW1lc3RhbXAoKTsKIAkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2Vl ZHMoc3RhcnRUaW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCksCiAJCQkJCQkJCQkJCVNITV9TRU5E X1RJTUVPVVRfTVMpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T05ORUNUSU9OX0ZBSUxVUkUpLAotCQkJCQkgZXJybXNnKCJ0ZXJtaW5hdGluZyBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdWUgdG8gdGltZW91dCIpKSk7CisJCXsK KwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKwkJCUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbjsKKwor CQkJLyoKKwkJCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgc3R1Y2sgZm9y IHNvbWUgcmVhc29uIChzYXkKKwkJCSAqIHdhaXRpbmcgb24gc29tZSBsb2NrIGJ5IG90aGVyIGJh Y2tlbmQpLCBzbyBzdG9wIHRyeWluZyB0byBzZW5kCisJCQkgKiBkYXRhIGRpcmVjdGx5IHRvIGl0 IGFuZCBpbnN0ZWFkIHN0YXJ0IHRvIHNlcmlhbGl6ZSBkYXRhIHRvCisJCQkgKiBmaWxlIGluc3Rl YWQuCisJCQkgKi8KKwkJCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7CisKKwkJCWlu aXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRh LCBuYnl0ZXMpOworCisJCQkvKiBTa2lwIGZpcnN0IGJ5dGUgYW5kIHN0YXRpc3RpY3MgZmllbGRz LiAqLworCQkJbXNnLmN1cnNvciArPSAxICsgU0laRV9TVEFUU19NRVNTQUdFOworCisJCQkvKiBJ bml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwkJCXN0cmVhbV9zdGFydF9pbnRlcm5h bCh3aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOworCisJCQkvKiBXcml0ZSB0aGlzIG1lc3NhZ2Ug dG8gYSBmaWxlLiAqLworCQkJYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZSgmbXNnKTsKKwkJCXN0cmVh bV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmbXNnKTsKKworCQkJLyoKKwkJCSAqIEFjcXVpcmVzIHRo ZSBzdHJlYW0gbG9jayBpZiBub3QgYWxyZWFkeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKwkJCSAq IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFz ZSB0aGUKKwkJCSAqIHN0cmVhbSBsb2NrIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9u LgorCQkJICovCisJCQlpZiAoIXN0cmVhbV9sb2NrZWQpCisJCQkJcGFfbG9ja19zdHJlYW0od2lu Zm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfc2V0X2ZpbGVz ZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFKTsKKwkJCWJyZWFrOworCQl9CiAJ fQogfQogCkBAIC0xMzgwLDYgKzE0OTYsMjggQEAgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpCiAJfQogfQogCisvKgorICogU2V0IHRoZSBmaWxl c2V0IHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGUgZmlsZXNl dAorICogd2lsbCBiZSBzZXQgb25jZSB0aGUgbGVhZGVyIHdvcmtlciByZWFjaGVkIHRoZSByZWFk eSBzdGF0ZSBzbyB0aGF0IGl0IGNhbgorICogYmUgdXNlZCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisgKi8KK3ZvaWQKK3BhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQgKndzaGFyZWQsCisJCQkJCSBQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUp Cit7CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+ZmlsZXNl dF9zdGF0ZSA9IGZpbGVzZXRfc3RhdGU7CisKKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFE WSkKKwl7CisJCUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOworCQlBc3NlcnQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCXdzaGFyZWQtPmZpbGVzZXQgPSAq TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldDsKKwl9CisKKwlTcGluTG9ja1JlbGVh c2UoJndzaGFyZWQtPm11dGV4KTsKK30KKwogLyoKICAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNx dWlyZSBhbmQgcmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggc3RyZWFtIGJsb2NrLgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGMzZjhhYmIzMDUuLjNkMjll NTVmMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjU2 LDYgKzI1NiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKICAqIHdv cmtlci4gQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCB3aGVuIHRoZQogICogZmluYWwgY29tbWl0IGFycml2ZXMuCiAgKgorICogVFJBTlNfTEVB REVSX1BBUlRJQUxfU0VSSUFMSVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUg aW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGhhdmUgc2VudCBzb21lCisgKiBjaGFuZ2Vz IGRpcmVjdGx5IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIHRoZSByZW1haW5pbmcg Y2hhbmdlcyBhcmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLCBkdWUgdG8gdGltZW91dCB3aGls ZSBzZW5kaW5nIGRhdGEuIFRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyIHdpbGwgYXBwbHkg dGhlc2Ugc2VyaWFsaXplZCBjaGFuZ2VzIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgor ICoKKyAqIFdlIGNhbid0IHVzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFIGZvciB0aGlzIGNhc2Ug YmVjYXVzZSwgaW4gYWRkaXRpb24gdG8KKyAqIHNlcmlhbGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFk ZXIgd29ya2VyIGFsc28gbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorICogU1RSRUFNX1hYWCBtZXNz YWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8K KyAqIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gd2hlbiBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlv biBmaW5pc2ggY29tbWFuZC4gU28KKyAqIHRoaXMgbmV3IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0 byBrZWVwIHRoZSBjb2RlIGFuZCBsb2dpYyBjbGVhci4KKyAqCiAgKiBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKICAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBuZWVkIHRvIHNlbmQKICAqIHRoZSBjaGFuZ2VzIHRvIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCkBAIC0yNzEsNiArMjgzLDcgQEAgdHlwZWRlZiBlbnVt CiAKIAkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLwogCVRSQU5TX0xF QURFUl9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFLAogCVRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAogCVRSQU5TX1BBUkFMTEVMX0FQUExZCiB9IFRyYW5z QXBwbHlBY3Rpb247CkBAIC0zNTMsNyArMzY2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlTdWJY YWN0RGF0YQogc3RhdGljIEFwcGx5U3ViWGFjdERhdGEgc3VieGFjdF9kYXRhID0gezAsIDAsIElu dmFsaWRUcmFuc2FjdGlvbklkLCBOVUxMfTsKIAogc3RhdGljIGlubGluZSB2b2lkIHN1YnhhY3Rf ZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7Ci1zdGF0 aWMgaW5saW5lIHZvaWQgY2hhbmdlc19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRy YW5zYWN0aW9uSWQgeGlkKTsKIAogLyoKICAqIEluZm9ybWF0aW9uIGFib3V0IHN1YnRyYW5zYWN0 aW9ucyBvZiBhIGdpdmVuIHRvcGxldmVsIHRyYW5zYWN0aW9uLgpAQCAtMzY2LDEwICszNzgsOSBA QCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW51cF9zdWJ4YWN0X2luZm8odm9pZCk7CiAvKgogICog U2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBjaGFuZ2VzIGZvciBhIHRvcGxldmVsIHRyYW5zYWN0 aW9uLgogICovCi1zdGF0aWMgdm9pZCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRy YW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkgYm9vbCBmaXJzdF9zZWdtZW50KTsKLXN0YXRp YyB2b2lkIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcyk7Citz dGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlk LCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9m aWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBv cywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwpAQCAtNDAxLDkgKzQxMiw2IEBAIHN0 YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAq ZWRhdGEsCiAvKiBDb21wdXRlIEdJRCBmb3IgdHdvX3BoYXNlIHRyYW5zYWN0aW9ucyAqLwogc3Rh dGljIHZvaWQgVHdvUGhhc2VUcmFuc2FjdGlvbkdpZChPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQg eGlkLCBjaGFyICpnaWQsIGludCBzemdpZCk7CiAKLS8qIENvbW1vbiBzdHJlYW1pbmcgZnVuY3Rp b24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICovCi1zdGF0aWMgdm9pZCBhcHBs eV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7Ci0K IC8qIEZ1bmN0aW9ucyBmb3Igc2tpcHBpbmcgY2hhbmdlcyAqLwogc3RhdGljIHZvaWQgbWF5YmVf c3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogc3RhdGljIHZv aWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwpAQCAtNTY2LDYgKzU3NCw3IEBAIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIAlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOwogCVBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJpbmdJbmZv RGF0YSBvcmlnaW5hbF9tc2c7CiAKIAlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKQEAgLTU3NSw2ICs1ODQsMTQgQEAgaGFu ZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5n SW5mbyBzKQogCiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAor CS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBuZWVkcyB0aGUgeGlkIGluIHRoaXMg bWVzc2FnZSB0byBkZWNpZGUKKwkgKiB3aGV0aGVyIHRvIGRlZmluZSBhIHNhdmVwb2ludCwgc28g c2F2ZSB0aGUgb3JpZ2luYWwgbWVzc2FnZSB0aGF0IGhhcyBub3QKKwkgKiBtb3ZlZCB0aGUgY3Vy c29yIGFmdGVyIHRoZSB4aWQuIFdlIHdpbGwgc2VyaWFsaXplIHRoaXMgbWVzc2FnZSB0byBhIGZp bGUKKwkgKiBpbiBQQVJUSUFMX1NFUklBTElaRSBtb2RlLgorCSAqLworCW9yaWdpbmFsX21zZyA9 ICpzOworCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhlIHN1Ynhh Y3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFjdCBpdC4K QEAgLTU5OCwxMCArNjE1LDE0IEBAIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2Fs UmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAkJCXN0cmVhbV93cml0ZV9jaGFuZ2Uo YWN0aW9uLCBzKTsKIAkJCXJldHVybiB0cnVlOwogCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJ QUxfU0VSSUFMSVpFOgogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJ QXNzZXJ0KHdpbmZvKTsKIAotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEp OworCQkJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCkK KwkJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSwgZmFsc2UpOworCQkJZWxz ZQorCQkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmb3JpZ2luYWxfbXNnKTsKIAogCQkJ LyoKIAkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxh dGlvbi90eXBlIHVwZGF0ZQpAQCAtMTI0OSw2ICsxMjcwLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKKwkvKiBTYXZlIHRoZSBtZXNzYWdl IGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cg PSAqczsKKwogCWlmIChpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKQEAgLTEyNzMs NyArMTI5Nyw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJ CQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBs YXkgYWxsIHRoZQogCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgogCQkJICovCi0JCQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQsCisJCQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVw YXJlX2xzbik7CiAKIAkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwog CQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CkBAIC0xMjg4 LDIwICsxMzEzLDIzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMp CiAJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVw YXJlX2RhdGEueGlkKTsKIAkJCWJyZWFrOwogCi0JCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9f UEFSQUxMRUw6CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgogCQkJQXNz ZXJ0KHdpbmZvKTsKIAorCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShwcmVwYXJlX2Rh dGEueGlkLAorCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUsCisJCQkJ CQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+ c2hhcmVkLCBGU19SRUFEWSk7CisKIAkJCS8qCiAJCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmpl Y3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KLQkJCSAqIGNvbnRpbnVl IHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKiBhcHBseSBzcG9vbGVkIGNoYW5n ZXMuCiAJCQkgKi8KIAkJCXBhX3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nl c3NFeGNsdXNpdmVMb2NrKTsKIAotCQkJLyogU2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMt Pmxlbiwgcy0+ZGF0YSk7Ci0KIAkJCS8qCi0JCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiBBZnRlciBzZXJpYWxp emluZyB0aGUgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byBhIGZpbGUsIHdhaXQgZm9yCiAJCQkg KiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNv bW1pdAogCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlv biBkZXBlbmRlbmNpZXMgYW5kCiAJCQkgKiBkZWFkbG9ja3MuCkBAIC0xMzE1LDcgKzEzNDMsNTEg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUUkFOU19MRUFERVJf U0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3Np YmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJ ICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJ CQlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJeworCQkJCXN0cmVhbV9zdG9wX2lu dGVybmFsKHdpbmZvLT5zaGFyZWQtPnhpZCk7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2lu Zm8tPnNoYXJlZCwgRlNfUkVBRFkpOworCQkJfQorCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBz aGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkg KiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJCQlwYV91 bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisK KwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRv IHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyLCB3YWl0IGZvciB0aGF0IHdvcmtlciB0 byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvCisJCQkgKiBtYWludGFpbiBjb21taXQgb3Jk ZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbgorCQkJICogZGVwZW5k ZW5jaWVzIGFuZCBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNo KHdpbmZvKTsKKworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24s IHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7CisKKwkJCSh2b2lkKSBwYV9mcmVlX3dv cmtlcih3aW5mbywgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlv biA9IGZhbHNlOworCQkJYnJlYWs7CisKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwor CQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bv b2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgcHJlcGFyaW5n LgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisK IAkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAogCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rp b24gYXMgcHJlcGFyZWQuICovCkBAIC0xMzc3LDYgKzE0NDksNDcgQEAgYXBwbHlfaGFuZGxlX29y aWdpbihTdHJpbmdJbmZvIHMpCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ug c2VudCBvdXQgb2Ygb3JkZXIiKSkpOwogfQogCisvKgorICogSW5pdGlhbGl6ZSBmaWxlc2V0IChp ZiBub3QgYWxyZWFkeSBkb25lKS4KKyAqCisgKiBDcmVhdGUgYSBuZXcgZmlsZSB3aGVuIGZpcnN0 X3NlZ21lbnQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIG9wZW4gdGhlIGV4aXN0aW5nCisgKiBmaWxlLgor ICovCit2b2lkCitzdHJlYW1fc3RhcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wg Zmlyc3Rfc2VnbWVudCkKK3sKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkvKgorCSAq IEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0 LiBUaGlzIHdpbGwgYmUKKwkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3 b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50CisJICogY29udGV4dC4gV2UgY3JlYXRl IHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKKwkgKiB0 cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0 cmFuc2FjdGlvbnMuCisJICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBz dGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0CisJICogdGhlbiB3ZSB3b24ndCBiZSBzdXJl IHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0KQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwkJTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQlG aWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisKKwkvKiBPcGVuIHRoZSBzcG9vbCBmaWxl IGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgeGlkLCBmaXJzdF9zZWdtZW50KTsKKworCS8qIElmIHRoaXMgaXMgbm90 IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwlpZiAo IWZpcnN0X3NlZ21lbnQpCisJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQorCiAvKgogICogSGFu ZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCkBAIC0xMzg3LDYgKzE1MDAsOSBAQCBhcHBs eV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKKwkvKiBTYXZl IHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBv cmlnaW5hbF9tc2cgPSAqczsKKwogCWlmIChpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKQEAgLTE0MTYsNDMgKzE1MzIsMjUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJp bmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAogCQkJLyoKLQkJCSAq IFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdp bGwgYmUKLQkJCSAqIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEg dGFibGVzeW5jIHdvcmtlciBpbgotCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRl ZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUKLQkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0 cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCi0JCQkgKiB1c2VkIGZvciBzZXJp YWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqIEZ1bmN0 aW9uIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFuc2FjdGlvbi4gVGhpcworCQkJ ICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVz cyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBi ZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2Ug bmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVz ZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQorCQkJICogYW5kIHN1YnhhY3Qg aW5mby4KIAkJCSAqLwotCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCQkJc3RyZWFtX3N0 YXJ0X2ludGVybmFsKHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAKIAkJCS8qCi0JCQkgKiBJbml0 aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhp cwotCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3Jr ZXIgc28gY3JlYXRlIGl0Ci0JCQkgKiBpbiBhIHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUg dGhpcyBvbiB0aGUgdmVyeSBmaXJzdAotCQkJICogc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkg dHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCi0JCQkgKiBhbmQgb3RoZXIgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUgYQotCQkJICogZmlsZXNl dCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJl Ci0JCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJCQkgKiBUaGUgbWVzc2Fn ZSBzcG9vbCBmaWxlIHdhcyBhbHJlYWR5IGNyZWF0ZWQgd2hlbiBlbnRlcmluZworCQkJICogUEFS VElBTF9TRVJJQUxJWkUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4KKwkJCSAqIHN0 cmVhbV9zdGFydF9pbnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3Au CiAJCQkgKi8KLQkJCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKLQkJ CXsKLQkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQotCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCi0JCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQkJCUZpbGVTZXRJbml0KE15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwotCi0JCQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7Ci0JCQl9Ci0KLQkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRo aXMgdHJhbnNhY3Rpb24uICovCi0JCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOwotCi0JCQkvKiBJZiB0aGlzIGlz IG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCi0J CQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0KLQkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CisJCQlzdHJlYW1fc3RhcnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmFsc2UpOworCQkJc3RyZWFt X3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJULCAmb3JpZ2luYWxfbXNn KTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CkBA IC0xNDcxLDcgKzE1NjksNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8g cykKIAkJCSAqLwogCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBl bmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4s IHMtPmRhdGEpOworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEsIGZhbHNl KTsKIAogCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFu c2FjdGlvbi4gKi8KIAkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKQEAgLTE0 OTYsNiArMTU5NCwzMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykK IAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwogfQogCisvKgor ICogVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBhbmQgY2xvc2UgdGhlIGZp bGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0cmVh bV9zdGFydF9pbnRlcm5hbCBmdW5jdGlvbiBoYXMKKyAqIGJlZW4gY2FsbGVkLgorICovCit2b2lk CitzdHJlYW1fc3RvcF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwkvKgorCSAqIFNl cmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5z YWN0aW9uLCB0aGVuCisJICogY2xvc2UgdGhlIHN0cmVhbSBtZXNzYWdlcyBzcG9vbCBmaWxlLgor CSAqLworCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQp OworCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkp OworCisJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCisJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwlN ZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCisJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKK30KKwogLyoKICAqIEhhbmRsZSBTVFJF QU0gU1RPUCBtZXNzYWdlLgogICovCkBAIC0xNTE1LDI0ICsxNjQwLDEzIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJc3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewog CQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbChz dHJlYW1feGlkKTsKKwkJCWJyZWFrOwogCi0JCQkvKgotCQkJICogQ2xvc2UgdGhlIGZpbGUgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUKLQkJCSAqIGluZm9ybWF0aW9uIGFi b3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JCQkgKi8KLQkJCXN1 YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsK LQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7Ci0KLQkJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0 cmFuc2FjdGlvbiBzdGF0ZSAqLwotCQkJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKLQot CQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKLQotCQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCi0J CQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOwotCi0JCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQljYXNlIFRSQU5TX0xFQURF Ul9QQVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHN0cmVhbV94aWQp OworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CiAJCQlicmVhazsKIAogCQlj YXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTU0Niw3ICsxNjYwLDE0IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCXBhX2xv Y2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkJ CXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJCXBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3Np YmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJ ICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJ CQlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJCXN0cmVhbV9zdG9wX2ludGVybmFs KHdpbmZvLT5zaGFyZWQtPnhpZCk7CiAKIAkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5V TEwpOwogCkBAIC0xNjc5LDYgKzE4MDAsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gcykKIAlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CiAJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0 aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJ U3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAJYm9vbAkJdG9wbGV2ZWxfeGFjdDsK IAogCWlmIChpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQpAQCAtMTcwOSwxNCArMTgzMywz MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCXN0cmVhbV9h Ym9ydF9pbnRlcm5hbCh4aWQsIHN1YnhpZCk7CiAJCQlicmVhazsKIAorCQljYXNlIFRSQU5TX0xF QURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkg KiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hhbmdlcywg c28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0IGNhbiBy b2xsYmFjayB0aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAqLworCQkJ c3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1f QUJPUlQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAodG9wbGV2ZWxfeGFj dCkKKwkJCXsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfUkVBRFkpOworCQkJ CSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKwkJCX0KKworCQkJYnJlYWs7CisK IAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7 CiAKIAkJCS8qCi0JCQkgKiBGb3IgdGhlIGNhc2Ugb2YgYWJvcnRpbmcgdGhlIHRvcGxldmVsIHRy YW5zYWN0aW9uLCB1bmxvY2sgdGhlCi0JCQkgKiBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBw YXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGNvbnRpbnVlCi0JCQkgKiB0byByZWNlaXZlIGFuZCBh cHBseSBjaGFuZ2VzLgotCQkJICoKIAkJCSAqIFhYWCBGb3IgdGhlIGNhc2Ugb2YgYWJvcnRpbmcg dGhlIHN1YnRyYW5zYWN0aW9uLCB3ZSBvbmx5CiAJCQkgKiBpbmNyZW1lbnQgdGhlIG51bWJlciBv ZiBzdHJlYW1pbmcgYmxvY2tzIHdpdGhvdXQgcmVsZWFzaW5nIHRoZQogCQkJICogbG9jay4gVGhp cyBtYXkgc2xpZ2h0bHkgZGVsYXkgdGhlIHByb2Nlc3Npbmcgb2YgU1RSRUFNX0FCT1JUCkBAIC0x NzI2LDIyICsxODY2LDQ0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBz KQogCQkJICogc2V0IG9mIGNoYW5nZXMgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgU1RSRUFNX0FCT1JU IG1lc3NhZ2UgaWYgaXQKIAkJCSAqIGlzIG5vdCBhbHJlYWR5IHdhaXRpbmcgZm9yIFNUUkVBTV9T VE9QIG1lc3NhZ2UuCiAJCQkgKi8KLQkJCWlmICh0b3BsZXZlbF94YWN0KQotCQkJCXBhX3VubG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKLQkJCWVsc2UKKwkJCWlmICghdG9w bGV2ZWxfeGFjdCkKIAkJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+ cGVuZGluZ19zdHJlYW1fY291bnQsIDEpOwogCiAJCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNz YWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9zZW5kX2RhdGEod2lu Zm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ ZGF0YSwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNl bmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVk IHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJaWYgKHdpbmZvLT5zZXJp YWxpemVfY2hhbmdlcykKKwkJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54 aWQpOwogCiAJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlpZiAod2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzKQorCQkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBG U19SRUFEWSk7CisKKwkJCQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2Nr IHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisJCQkJICogY2FuIGNvbnRpbnVlIHRvIHJl Y2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkJICovCisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCQkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5m bywgeGlkKTsKKwkJCX0KIAogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBM WToKIAkJCXBhX3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSk7CiAKKwkJCS8qCisJCQkgKiBSZXNl dCB0aGUgc3RyZWFtX2ZkIGFmdGVyIGFib3J0aW5nIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBp bgorCQkJICogY2FzZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29s ZWQgbWVzc2FnZXMKKwkJCSAqLworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQkJc3RyZWFtX2Zk ID0gTlVMTDsKKwogCQkJLyoKIAkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5n IHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCiAJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2Vz LgpAQCAtMTc1NCw4ICsxOTE2LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIHMpCiAJCQkgKiBpbiB0aGUgcXVldWUuIFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0 b3AKIAkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KIAkJCSAqLwotCQkJaWYgKCF0b3BsZXZl bF94YWN0ICYmCi0JCQkJcGdfYXRvbWljX3N1Yl9mZXRjaF91MzIoJk15UGFyYWxsZWxTaGFyZWQt PnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKSA9PSAwKQorCQkJZWxzZSBpZiAocGdfYXRvbWljX3N1 Yl9mZXRjaF91MzIoJk15UGFyYWxsZWxTaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKSA9 PSAwKQogCQkJewogCQkJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNj ZXNzU2hhcmVMb2NrKTsKIAkJCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhp ZCwgQWNjZXNzU2hhcmVMb2NrKTsKQEAgLTE3NzMsMTkgKzE5MzQsNTYgQEAgYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCi0gKiBDb21tb24gc3Bvb2xmaWxl IHByb2Nlc3NpbmcuCisgKiBDaGVjayBpZiB0aGUgcGFzc2VkIGZpbGVubyBhbmQgb2Zmc2V0IGFy ZSB0aGUgbGFzdCBmaWxlbm8gYW5kIHBvc2l0aW9uIG9mCisgKiB0aGUgZmlsZXNldCwgYW5kIHJl cG9ydCBhbiBFUlJPUiBpZiBub3QuCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21l c3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK2Vuc3VyZV9sYXN0X21l c3NhZ2UoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgZmls ZW5vLAorCQkJCQlvZmZfdCBvZmZzZXQpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCUJ1 ZkZpbGUJICAgKmZkOworCWludAkJCWxhc3RfZmlsZW5vOworCW9mZl90CQlsYXN0X29mZnNldDsK KworCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJYmVnaW5fcmVwbGljYXRpb25f c3RlcCgpOworCisJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOworCisJZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2ZpbGVzZXQsIHBh dGgsIE9fUkRPTkxZLCBmYWxzZSk7CisKKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQp OworCUJ1ZkZpbGVUZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CisKKwlCdWZG aWxlQ2xvc2UoZmQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2Zp bGVubyAhPSBmaWxlbm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAi dW5leHBlY3RlZCBtZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdl cyBmaWxlIFwiJXNcIiIsCisJCQkgcGF0aCk7Cit9CisKKy8qCisgKiBDb21tb24gc3Bvb2xmaWxl IHByb2Nlc3NpbmcuCisgKi8KK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAq c3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVjUHRyIGxz bikKIHsKIAlTdHJpbmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFyCQlwYXRo W01BWFBHUEFUSF07CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9s ZGN4dDsKLQlCdWZGaWxlICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCWludAkJ CWZpbGVubzsKKwlvZmZfdAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdl cyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJlX3N0YXJ0 X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4g dHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xODAxLDggKzE5 OTksMTYgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1 YmlkLCB4aWQpOwogCWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwi JXNcIiIsIHBhdGgpOwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2UpOworCS8q CisJICogTWFrZSBzdXJlIHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiBzbyB0aGF0IHRoZSBmaWxlCisJICogd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5IGNsb3Nl ZCB3aGVuIGFib3J0aW5nIGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIgPSBDdXJy ZW50UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5zYWN0aW9u UmVzb3VyY2VPd25lcjsKKworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1f ZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVy ID0gb2xkb3duZXI7CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3RyaW5nSW5m bygmczIpOwpAQCAtMTgzMyw3ICsyMDM5LDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7 CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5ieXRlcyA9 IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1ZkZpbGVS ZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2UgcmVhY2hl ZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE4NTQsMTIgKzIw NjAsMTQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pCiAJCWJ1ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQg ZmluYWxseSByZWFkIHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJl YWQoZmQsIGJ1ZmZlciwgbGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJlYW1fZmQs IGJ1ZmZlciwgbGVuKSAhPSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9m b3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJvbSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0 aCkpKTsKIAorCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCiAJ CS8qIGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBseV9kaXNw YXRjaCAqLwogCQlyZXNldFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5m bygmczIsIGJ1ZmZlciwgbGVuKTsKQEAgLTE4NzUsMTUgKzIwODMsMjQgQEAgYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJbmNoYW5n ZXMrKzsKIAorCQkvKgorCQkgKiBCcmVhayB0aGUgbG9vcCBpZiBzdHJlYW1fZmQgaXMgc2V0IHRv IE5VTEwgd2hpY2ggbWVhbnMgdGhlIHBhcmFsbGVsCisJCSAqIGFwcGx5IHdvcmtlciBoYXMgZmlu aXNoZWQgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiBUaGUgcGFyYWxsZWwKKwkJICogYXBwbHkg d29ya2VyIHNob3VsZCBoYXZlIGNsb3NlZCB0aGUgZmlsZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJ ICovCisJCWlmICghc3RyZWFtX2ZkKQorCQl7CisJCQllbnN1cmVfbGFzdF9tZXNzYWdlKHN0cmVh bV9maWxlc2V0LCB4aWQsIGZpbGVubywgb2Zmc2V0KTsKKwkJCWJyZWFrOworCQl9CisKIAkJaWYg KG5jaGFuZ2VzICUgMTAwMCA9PSAwKQogCQkJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCBjaGFu Z2VzIGZyb20gZmlsZSBcIiVzXCIiLAogCQkJCSBuY2hhbmdlcywgcGF0aCk7CiAJfQogCi0JQnVm RmlsZUNsb3NlKGZkKTsKLQotCXBmcmVlKGJ1ZmZlcik7Ci0JcGZyZWUoczIuZGF0YSk7CisJaWYg KHN0cmVhbV9mZCkKKwkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAogCWVsb2coREVCVUcxLCAicmVw bGF5ZWQgJWQgKGFsbCkgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJIG5jaGFuZ2VzLCBw YXRoKTsKQEAgLTE5MDIsNiArMjExOSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gcykKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBs eUFjdGlvbiBhcHBseV9hY3Rpb247CiAKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBp cyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwogCWlm IChpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKQEAgLTE5MjAsNyArMjE0MCw4IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJCSAqIFRoZSB0cmFu c2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCiAJ CQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCiAJCQkgKi8KLQkJCWFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJCQkgICBj b21taXRfZGF0YS5jb21taXRfbHNuKTsKIAogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOwogCkBAIC0xOTI4LDI2ICsyMTQ5LDYyIEBAIGFwcGx5X2hhbmRsZV9z dHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJCQlicmVhazsKIAotCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklB TElaRToKIAkJCUFzc2VydCh3aW5mbyk7CiAKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFu Z2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdp bmFsX21zZyk7CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1JF QURZKTsKKwogCQkJLyoKIAkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRo YXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgotCQkJICogY29udGludWUgdG8gcmVjZWl2ZSBh bmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqIGFwcGx5IHNwb29sZWQgY2hhbmdlcy4KIAkJCSAqLwog CQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogCi0JCQkvKiBT ZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAq LwotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwotCiAJCQkvKgotCQkJ ICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3 YWl0IGZvcgorCQkJICogQWZ0ZXIgc2VyaWFsaXppbmcgdGhlIFNUUkVBTSBDT01NSVQgbWVzc2Fn ZSB0byBhIGZpbGUsIHdhaXQgZm9yCiAJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMg aXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAogCQkJICogb3JkZXIgd2hpY2ggYXZvaWRz IGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCiAJCQkgKiBkZWFk bG9ja3MuCiAJCQkgKi8KIAkJCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKIAorCQkJ c3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbiwgd2luZm8tPnNoYXJlZC0+ bGFzdF9jb21taXRfZW5kKTsKKwkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsK KworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJ CUFzc2VydCh3aW5mbyk7CisKKwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh LCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGlu ZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8g c3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlpZiAod2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzKQorCQkJeworCQkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHdpbmZvLT5zaGFyZWQt PnhpZCk7CisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfUkVBRFkp OworCQkJfQorCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28g dGhhdCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiBjb250aW51ZSB0byByZWNlaXZl IGFuZCBhcHBseSBjaGFuZ2VzLgorCQkJICovCisJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNj ZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBTVFJF QU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIsIHdh aXQgZm9yIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8KKwkJCSAq IG1haW50YWluIGNvbW1pdCBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5z YWN0aW9uCisJCQkgKiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJcGFf d2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCiAJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihj b21taXRfZGF0YS5lbmRfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOwogCiAJ CQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CkBAIC0xOTU1LDYgKzIyMTIsMTQg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAK IAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkg KiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgY29tbWl0dGluZy4KKwkJCSAqLworCQkJaWYgKHN0cmVh bV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCiAJCQlhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKIAkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29t bWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOwpAQCAtMzg0OCw3ICs0MTEzLDcgQEAgc3VieGFj dF9maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogfQog CiAvKiBmb3JtYXQgZmlsZW5hbWUgZm9yIGZpbGUgY29udGFpbmluZyBzZXJpYWxpemVkIGNoYW5n ZXMgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAordm9pZAogY2hhbmdlc19maWxlbmFtZShjaGFyICpw YXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewogCXNucHJpbnRmKHBhdGgsIE1B WFBHUEFUSCwgIiV1LSV1LmNoYW5nZXMiLCBzdWJpZCwgeGlkKTsKQEAgLTM4NjIsNyArNDEyNyw3 IEBAIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCkKICAqIHRvcGxldmVsIHRyYW5zYWN0aW9uLiBFYWNoIHN1YnNjcmlwdGlvbiBoYXMgYSBz ZXBhcmF0ZSBzZXQgb2YgZmlsZXMKICAqIGZvciBhbnkgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAg Ki8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRy YW5zYWN0aW9uSWQgeGlkKQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKQEAgLTM4ODUsOSAr NDE1MCw2IEBAIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpCiAgKiBieSBzdHJlYW1feGlkIChnbG9iYWwgdmFyaWFibGUpLiBJZiBpdCdzIHRoZSBmaXJz dCBjaHVuayBvZiBzdHJlYW1lZAogICogY2hhbmdlcyBmb3IgdGhpcyB0cmFuc2FjdGlvbiwgY3Jl YXRlIHRoZSBidWZmaWxlLCBvdGhlcndpc2Ugb3BlbiB0aGUKICAqIHByZXZpb3VzbHkgY3JlYXRl ZCBmaWxlLgotICoKLSAqIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcg b2YgYSAic3RyZWFtaW5nIiBibG9jaywgaS5lLgotICogYmV0d2VlbiBzdHJlYW1fc3RhcnQvc3Ry ZWFtX3N0b3AgbWVzc2FnZXMgZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBz dHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rf c2VnbWVudCkKQEAgLTM4OTUsNyArNDE1Nyw2IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1Ymlk LCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogCWNoYXIJCXBhdGhbTUFY UEdQQVRIXTsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAotCUFzc2VydChpc19pbl9zdHJlYW1l ZF90cmFuc2FjdGlvbigpKTsKIAlBc3NlcnQoT2lkSXNWYWxpZChzdWJpZCkpOwogCUFzc2VydChU cmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkID09IE5VTEwpOwpA QCAtMzkzNCwxNSArNDE5NSwxMCBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIC8qCiAgKiBzdHJlYW1fY2xvc2VfZmls ZQogICoJICBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4gZmlsZSB3aXRoIHN0cmVhbWVkIGNoYW5n ZXMuCi0gKgotICogVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBhIHN0cmVh bWluZyBibG9jaywgaS5lLiBhdCBzdHJlYW1fc3RvcAotICogbWVzc2FnZSBmcm9tIHRoZSB1cHN0 cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNz ZXJ0KGlzX2luX3N0cmVhbWVkX3RyYW5zYWN0aW9uKCkpOwotCUFzc2VydChUcmFuc2FjdGlvbklk SXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1 ZkZpbGVDbG9zZShzdHJlYW1fZmQpOwpAQCAtMzk1OSwxMyArNDIxNSwxMSBAQCBzdHJlYW1fY2xv c2VfZmlsZSh2b2lkKQogICogdGhlIGxlbmd0aCksIGFjdGlvbiBjb2RlIChpZGVudGlmeWluZyB0 aGUgbWVzc2FnZSB0eXBlKSBhbmQgbWVzc2FnZQogICogY29udGVudHMgKHdpdGhvdXQgdGhlIHN1 YnhhY3QgVHJhbnNhY3Rpb25JZCB2YWx1ZSkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJl YW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7CiAJaW50CQkJbGVu OwogCi0JQXNzZXJ0KGlzX2luX3N0cmVhbWVkX3RyYW5zYWN0aW9uKCkpOwotCUFzc2VydChUcmFu c2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxM KTsKIAogCS8qIHRvdGFsIG9uLWRpc2sgc2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24gdHlwZSBj aGFyYWN0ZXIgKi8KQEAgLTM5ODMsNiArNDIzNywyMyBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNo YXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJQnVmRmlsZVdyaXRlKHN0cmVhbV9mZCwgJnMtPmRh dGFbcy0+Y3Vyc29yXSwgbGVuKTsKIH0KIAorLyoKKyAqIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9j aGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVzc2FnZSB0byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0 cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dy aXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3aWxsIG9wZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBi ZWZvcmUgd3JpdGluZyB0aGUgbWVzc2FnZSBhbmQgY2xvc2UgZmlsZSBhdCB0aGUgZW5kLgorICov CitzdGF0aWMgdm9pZAorc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklk IHhpZCwgY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQoIWlzX2luX3N0cmVh bWVkX3RyYW5zYWN0aW9uKCkpOworCisJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHhpZCwgZmFsc2Up OworCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJlYW1fc3RvcF9pbnRlcm5h bCh4aWQpOworfQorCiAvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0cyBhbmQg cmVzZXQgdGhlIHJlbGF0ZWQgdmFyaWFibGVzLgogICovCkBAIC00NjU0LDcgKzQ5MjUsOCBAQCBz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSkKIC8qCiAgKiBS ZXR1cm4gdGhlIGFjdGlvbiB0byB0YWtlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5m byBpcyBhc3NpZ25lZCB0bwogICogdGhlIGRlc3RpbmF0aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZv IChpZiB0aGUgYWN0aW9uIGlzCi0gKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCksIG90 aGVyd2lzZSAqd2luZm8gaXMgYXNzaWduZWQgTlVMTC4KKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMIG9yIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRSksIG90aGVyd2lzZQor ICogKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCiAgKi8KIHN0YXRpYyBUcmFuc0FwcGx5QWN0aW9u CiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQpAQCAtNDY3NiwxMyArNDk0OCwxNyBAQCBnZXRfdHJh bnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKndpbmZvKQogCSAqLwogCSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CiAK LQlpZiAoKndpbmZvKQorCWlmICghKndpbmZvKQogCXsKLQkJcmV0dXJuIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwl9CisJ ZWxzZSBpZiAoKCp3aW5mbyktPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCXsKKwkJcmV0dXJuIFRSQU5T X0xFQURFUl9QQVJUSUFMX1NFUklBTElaRTsKIAl9CiAJZWxzZQogCXsKLQkJcmV0dXJuIFRSQU5T X0xFQURFUl9TRVJJQUxJWkU7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5k ZXggY2UzMDdkM2ExNy4uN2Q2NzZmNmRjNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobV9tcS5oIgpAQCAtOTQsNiArOTUsMjIgQEAgdHlwZWRlZiBlbnVtIFBhcmFs bGVsVHJhbnNTdGF0ZQogCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECiB9IFBhcmFsbGVsVHJhbnNT dGF0ZTsKIAorLyoKKyAqIFN0YXRlIG9mIGZpbGVzZXQgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4K KyAqCisgKiBGU19TRVJJQUxJWkUgbWVhbnMgdGhhdCB0aGUgbGVhZGVyIGlzIHNlcmlhbGl6aW5n IGNoYW5nZXMgdG8gdGhlIGZpbGUuCisgKiBGU19TRVJJQUxJWkVfRE9ORSBtZWFucyB0aGF0IHRo ZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlCisgKiBmaWxlLiBGU19S RUFEWSBtZWFucyB0aGF0IGl0IGlzIG5vdyBvayBmb3IgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg dG8KKyAqIHJlYWQgdGhlIGZpbGUuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0 YXRlCit7CisJRlNfVU5LTk9XTiwKKwlGU19TRVJJQUxJWkUsCisJRlNfU0VSSUFMSVpFX0RPTkUs CisJRlNfUkVBRFkKK30gUGFydGlhbEZpbGVTZXRTdGF0ZTsKKwogLyoKICAqIFN0cnVjdCBmb3Ig c2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFs bGVsCiAgKiBhcHBseSB3b3JrZXJzLgpAQCAtMTI5LDYgKzE0NiwyMCBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICogdXBkYXRlIHRoZSBsc25fbWFwcGluZ3Mg YnkgbGVhZGVyIHdvcmtlci4KIAkgKi8KIAlYTG9nUmVjUHRyCWxhc3RfY29tbWl0X2VuZDsKKwor CisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBtb2RlLCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFsaXplIGNoYW5nZXMgdG8gdGhlIGZpbGUs IGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtl ciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kLiBUaGVuIHRo ZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBt ZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNlZCBoZXJlIGluc3RlYWQgb2YgU2hhcmVk RmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkgKiBzdXJ2aXZlIGFmdGVyIHJlbGVhc2lu ZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKwkgKiB3b3JrZXIg Y2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0aGUgbmV4dCBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCUZpbGVT ZXQJCWZpbGVzZXQ7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CiAKIC8qCkBAIC0xNDYs NiArMTc3LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAKIAlk c21fc2VnbWVudCAqZHNtX3NlZzsKIAorCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJlbWFpbmluZyBj aGFuZ2VzIHRvIGEgZmlsZSBkdWUgdG8gdGltZW91dCB3aGVuIGF0dGVtcHRpbmcgdG8gc2VuZCBk YXRhCisJICogdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4K KwkgKi8KKwlib29sCQlzZXJpYWxpemVfY2hhbmdlczsKKwogCS8qCiAJICogVHJ1ZSBpZiB0aGUg d29ya2VyIGlzIGJlaW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CiAJICogdHJh bnNhY3Rpb24uIEZhbHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJl LXVzZS4KQEAgLTE5OSwxMCArMjM3LDIxIEBAIGV4dGVybiB2b2lkIHByb2Nlc3Nfc3luY2luZ190 YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBleHRlcm4gdm9pZCBpbnZhbGlkYXRlX3N5 bmNpbmdfdGFibGVfc3RhdGVzKERhdHVtIGFyZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJCXVp bnQzMiBoYXNodmFsdWUpOwogCitleHRlcm4gdm9pZCBzdHJlYW1fc3RhcnRfaW50ZXJuYWwoVHJh bnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCk7CitleHRlcm4gdm9pZCBzdHJlYW1f c3RvcF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCk7CisKKy8qIENvbW1vbiBzdHJlYW1pbmcg ZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICovCitleHRlcm4gdm9p ZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2Fj dGlvbklkIHhpZCwKKwkJCQkJCQkJICAgWExvZ1JlY1B0ciBsc24pOworCiBleHRlcm4gdm9pZCBh cHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwogCiBleHRlcm4gdm9pZCBtYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKHZvaWQpOwogCitleHRlcm4gdm9pZCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIg KnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgc3RyZWFt X3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK2V4dGVybiB2b2lkIHN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworCiBleHRl cm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CiAKIC8qIEZ1bmN0aW9uIGZvciBh cHBseSBlcnJvciBjYWxsYmFjayAqLwpAQCAtMjE5LDcgKzI2OCw3IEBAIGV4dGVybiBib29sIHBh X2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25J ZCB4aWQpOwogZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0 ZXJuIHZvaWQgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6 ZSBuYnl0ZXMsCi0JCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSk7CisJCQkJCQkgY29uc3Qgdm9pZCAq ZGF0YSwgYm9vbCBzdHJlYW1fbG9ja2VkKTsKIGV4dGVybiB2b2lkIHBhX3dhaXRfZm9yX3hhY3Rf ZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3c2hhcmVkKTsKIAogZXh0ZXJuIHZvaWQg cGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKQEAg LTIyOSw2ICsyNzgsOCBAQCBleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOwogZXh0ZXJuIHZvaWQgcGFfc3RhcnRfc3Vi dHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKTsK IGV4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFfc3Ry ZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpOworZXh0ZXJu IHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3No YXJlZCwKKwkJCQkJCQkJIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSk7CiAKIGV4 dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBM T0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGE2MTE1MjBi YzguLjdmN2E3MDI3ZWIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzg4LDYgKzEz ODgsNyBAQCBMYWdUcmFja2VyCiBMYXJnZU9iamVjdERlc2MKIExhc3RBdHRudW1JbmZvCiBMYXRj aAorUGFydGlhbEZpbGVTZXRTdGF0ZQogTGVycEZ1bmMKIExleERlc2NyCiBMZXhlbWVFbnRyeQot LSAKMi4yMy4wLndpbmRvd3MuMQoK --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v57-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v57-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=199542; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:15 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YWM5NDUzM2JhZTQzNWRkZThlMzFmZWZjN2U3Y2RhYzgwYmExZTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY1NyAxLzddIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAxMSArLQogZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArLQogZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICAyMSArLQogZG9j L3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBkb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICstCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgIDI0ICstCiBkb2Mv c3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgNjggKy0KIHNyYy9i YWNrZW5kL2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyAgICAgICAgICAgIHwgICAgNSArLQogLi4uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgICAgNiArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgIHwgICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxNDM2ICsrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAg IDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgfCAg MjI1ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCAgIHwg ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAgICAgfCAg IDI2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg IDM3ICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAg IDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAg IDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAx MDUzICsrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAg ICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAgICAgICAg ICAgICAgfCAgIDQ2ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAg ICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAg ICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAg ICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAg IHwgICAyMSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAg IHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oICAgICAg IHwgICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCAgICAg fCAgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8 ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICB8 ICAgIDggKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwg ICAgNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAgIHwg ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwg IDE1MiArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwg ICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICAgfCAg IDE3ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgfCAg ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAg IDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwgICA0 NiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgICAg NiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAg NiArCiA1MCBmaWxlcyBjaGFuZ2VkLCAzMTM3IGluc2VydGlvbnMoKyksIDM1NyBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggOWVkMmIwMjBiNy4uMTMwMzYx ZjMxYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MDMsMTEgKzc5MDMsMTYgQEAgU0NSQU0tU0hBLTI1 NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVw bGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0 ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8 c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRp b24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlv bnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxs b3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJh bD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVy YWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwg YXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3Jr ZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKaW5kZXggZmY2ZmNkOTAyYS4uZDY1YjY3ZjhlNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDkzNCw3 ICs0OTM0LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwv cmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAg ICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdv cmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAgICAgICBsZWFkZXIg YXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9u aXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4K ICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBw b29sIGRlZmluZWQgYnkKQEAgLTQ5NzQsNiArNDk3NSwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xh c3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZh cmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13b3JrZXJzLXBlci1zdWJzY3Jp cHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8 aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVy PC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIg Y29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAg ICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIK KyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAg IDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5t YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFy YW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVz cWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAg IGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggZjg3NTYzODlhMy4uZjM2NjcxMDFlMiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDk3LDYgKzE0OTcsMTYgQEAg Q09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAi cGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRlIGFueSBjb25zdHJh aW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAgIGluY29uc2lzdGVu dC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMg PGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgorICAgZmFpbGVk IHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUg bmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9u PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAgY2F1c2UgdGhlIHNh bWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNh Y3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2Fn ZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1h bHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJ UDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0i bG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTY3OCw3ICsxNjg4LDggQEAg Q09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAi cGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vi c2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZlCiAgICB6ZXJvIHJv d3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gb2Yg YW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdv cmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5 bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBw bGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzLgog ICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTc4NCw4ICsxNzk1LDEyIEBAIENPTlRFWFQ6ICBw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBk dXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJlciwgcGx1cyBzb21lIHJlc2VydmUgZm9y IHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0CiAgICB0aGUgbnVt YmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFi bGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9uYWxseSB0aGUgPHZhcm5hbWU+bWF4X3dv cmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkgbmVlZCB0byBiZSBhZGp1c3RlZCB0byBh Y2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QKKyAgIHN5bmNocm9u aXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgPGxpdGVyYWw+c3RyZWFtaW5n PC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwKKyAg IDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L2xpdGVyYWw+IHNob3Vs ZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFy YWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxseSB0aGUKKyAgIDx2YXJuYW1lPm1heF93 b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVlZCB0byBiZSBhZGp1c3RlZCB0bworICAg YWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGF0IGxlYXN0CiAgICAoPHZhcm5h bWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4KICAgICsgPGxpdGVy YWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUgZXh0ZW5zaW9ucyBhbmQgcGFyYWxsZWwg cXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90cyBmcm9tIDx2YXJuYW1lPm1heF93b3Jr ZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDExYThlYmU1ZWMu LjJjNzZlYjUxYTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMTg1MSw2ICsxODUxLDExIEBAIHBv c3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0 ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICA8ZW50cnk+PGxpdGVyYWw+YWR2aXNvcnk8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGFjcXVpcmUgYW4gYWR2aXNv cnkgdXNlciBsb2NrLjwvZW50cnk+CiAgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT5XYWl0aW5nIHRvIGFjcXVpcmUgYSBsb2NrIG9uIGEgcmVtb3RlIHRyYW5zYWN0aW9uIGJl aW5nIGFwcGxpZWQKKyAgICAgIGJ5IGEgbG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpYmVyLjwv ZW50cnk+CisgICAgIDwvcm93PgogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaXRlcmFsPmV4 dGVuZDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gZXh0ZW5kIGEg cmVsYXRpb24uPC9lbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s IGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggNWZkZDQyOWUwNS4uYzZhMGU4MGIz ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDIsNyArMzEwMiw3IEBAIHBzcWwgImRibmFtZT1wb3N0 Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRs eSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0g ICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxp dGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVk LgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4y PC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMx MTIsNiArMzExMiwxMSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJh c2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0 ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5k IGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5k IGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zIHRvCisgICAgICAgYmUgYXBwbGllZCBpbiBwYXJhbGxlbC4KKyAgICAgIDwvcGFyYT4K ICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtNjg4Miw2ICs2ODg3 LDI4IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklE RU5USUZZX1NZU1RFTTsiCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+ SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFi bGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbgorICAgICAgICAgNC4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2Yg dGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNy b3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuIFRoaXMgZmllbGQg aXMKKyAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBmOWExNzc2Mzgw Li5mMTczYTA5MDM3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3Jp cHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bApAQCAtMjI4LDEzICsyMjgsMjkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxs aXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4K KyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwv dHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAg ICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1 bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUg cHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVy IGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1 bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFs bCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25s eQorICAgICAgICAgIHRoZW4gc2VudCB0byB0aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAg ICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxp dGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bwor ICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhl IHRyYW5zYWN0aW9uIGlzCisgICAgICAgICAgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5k IHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+ LCBpbmNvbWluZyBjaGFuZ2VzIGFyZSBkaXJlY3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9u ZSBvZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAg ICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zIHRoZW4KKyAgICAgICAgICB0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0 ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCisgICAg ICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3Rl IHRyYW5zYWN0aW9uCisgICAgICAgICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2 ZXIgbG9nLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwv dmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s IGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDE0M2FlNWI3YmIuLjg0Mjhl ZTc4NjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTEzNzksOCArMTM3OSw5IEBACiAgICAg ICAgPGxpdGVyYWw+dmlydHVhbHhpZDwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+c3BlY3Rv a2VuPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJhbD5vYmplY3Q8L2xpdGVyYWw+LAotICAgICAg IDxsaXRlcmFsPnVzZXJsb2NrPC9saXRlcmFsPiwgb3IKLSAgICAgICA8bGl0ZXJhbD5hZHZpc29y eTwvbGl0ZXJhbD4uCisgICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LAorICAgICAg IDxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPiwgb3IKKyAgICAgICA8bGl0ZXJhbD5hcHBseXRy YW5zYWN0aW9uPC9saXRlcmFsPi4KICAgICAgICAoU2VlIGFsc28gPHhyZWYgbGlua2VuZD0id2Fp dC1ldmVudC1sb2NrLXRhYmxlIi8+LikKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jv dz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA4MDg2Yjg1N2I5Li4wMzBjNjNhZjA5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0xNzEyLDYgKzE3MTIsNyBAQCBSZWNv cmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlU cmFuc2FjdGlvbklkICpjaGlsZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJ cmVwbG9yaWdpbjsKIAogCS8qCiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJ RCwgbm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDIsNiArMTc0Mywx MyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklD LCAiY2Fubm90IGFib3J0IHRyYW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQi LAogCQkJIHhpZCk7CiAKKwkvKgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3Jp Z2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVyIHdvcmRzLCBhcmUKKwkgKiB3ZSByZXBsYXlpbmcg cmVtb3RlIGFjdGlvbnM/CisJICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5l ZWQgZm9yIHRoZSBhYm9ydCByZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRl cyhmYWxzZSwgJnJlbHMpOwogCW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigm Y2hpbGRyZW4pOwpAQCAtMTc2NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQo Ym9vbCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZv cndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lv bl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0 TGFzdFJlY0VuZCk7CisKIAkvKgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExT Tiwgc28gdGhhdCB0aGUgV0FMIHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQu IFRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBkNjczNTU3ZWE0Li45N2Yx MzE2MmM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3 ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9v bAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0 cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkg ICAqb3JpZ2luOwpAQCAtMTAwLDcgKzEwMCw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2R1cGxpY2F0 ZXNfaW5fcHVibGlzdChMaXN0ICpwdWJsaXN0LCBEYXR1bSAqZGF0dW1zKTsKIHN0YXRpYyBMaXN0 ICptZXJnZV9wdWJsaWNhdGlvbnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwg Ym9vbCBhZGRwdWIsIGNvbnN0IGNoYXIgKnN1Ym5hbWUpOwogc3RhdGljIHZvaWQgUmVwb3J0U2xv dENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1l LCBjaGFyICplcnIpOwogCi0KIC8qCiAgKiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24g Zm9yIENSRUFURSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRzLgogICoKQEAgLTEzOCw3 ICsxMzcsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9C SU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0 cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMs IFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTI0MSw3 ICsyNDAsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwg cHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsK LQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+c3Ry ZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI5LDcgKzYy OCw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93bmVy IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNoYXJH ZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVf UEVORElORyA6CkBAIC0xMDk4LDcgKzEwOTcsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNTZXQo b3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdldERh dHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1 ZTsKIAkJCQl9CiAKQEAgLTIxMjIsMyArMjEyMSw2MCBAQCBtZXJnZV9wdWJsaWNhdGlvbnMoTGlz dCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNvbnN0IGNoYXIg KgogCiAJcmV0dXJuIG9sZHB1Ymxpc3Q7CiB9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBzdHJlYW1p bmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0Qm9v bGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVsIi4K KyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJLyoKKwkg KiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQuCisJ ICovCisJaWYgKCFkZWYtPmFyZykKKwkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKworCS8qCisJICog QWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgor CSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoK KwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJl dHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9P TjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLwor CQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJ ICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBv ZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICog Z3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJ CWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2Fz ZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJ aWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2Vj bXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlpZiAo cGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RS RUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVz IGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7 CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9zcmMvYmFja2VuZC9saWJwcS9w cW1xLmMKaW5kZXggNGQwNDE1ZTM3OS4uNjM5ODQ1ZmQ4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwpAQCAtMTMsMTEg KzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3Bh cmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5z LmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNv bnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNobV9tcV9zZW5kdihwcV9tcV9o YW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRl cl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQs Ci0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJCQkgICBwcV9tcV9wYXJh bGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJc0xvZ2ljYWxQYXJhbGxlbEFw cGx5V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3Bp ZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsCisJCQkJCQkJICAg cHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJZWxzZQorCQkJeworCQkJCUFz c2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFs bGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAorCQkJ CQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCX0KKwkJfQogCiAJ CWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKaW5kZXggMGQ3MmRlMjRiMC4uMmRmYTlhYjUyMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QK IAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgorCX0sCisJewor CQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbgogCX0K IH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmluZGV4IDFhZWQyZTJlOTkuLmU2NDAy OWZhYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwpAQCAtOTgsOCArOTgsOSBAQCBT aWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQogICogc2h1dCBkb3duIGFuZCBl eGl0LgogICoKICAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVyIHdvdWxkIGJlIHVzZWQgZm9yIFNJ R1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRp Y3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNSMiwgYW5kIHRoZQotICogV0FM IHdyaXRlciBleGl0cyBvbiBlaXRoZXIgU0lHSU5UIG9yIFNJR1RFUk0uCisgKiBvdGhlciBzaWdu YWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4aXRzIG9uIFNJR1VTUjIsIGFu ZCB0aGUgV0FMCisgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKKyAqIFNJR0lOVCBvciBTSUdURVJNLgogICoK ICAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNoZWNrZWQgYXQgYSBjb252ZW5p ZW50IHBsYWNlIHdpdGhpbiB0aGUKICAqIG1haW4gbG9vcCwgb3IgZWxzZSB0aGUgbWFpbiBsb29w IHNob3VsZCBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0cy4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVy LmMKaW5kZXggN2Y2OTdiMGYyOS4uMjI1ZGE4MWYyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMK QEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFydHN0cmVhbWluZyhXYWxSZWNlaXZlckNv bm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgInByb3RvX3ZlcnNpb24gJyV1JyIs CiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uKTsKIAotCQlpZiAo b3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgJiYKLQkJCVBRc2VydmVyVmVyc2lvbihj b25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZj bWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLnN0 cmVhbWluZ19zdHIpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsIHN0cmVhbWluZyAnJXMn IiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKTsKIAogCQlp ZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC50d29waGFzZSAmJgogCQkJUFFzZXJ2ZXJWZXJzaW9u KGNvbm4tPnN0cmVhbUNvbm4pID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLjJkYzI1ZTM3YmIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAt SSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAorCWFwcGx5cGFyYWxsZWx3b3JrZXIu byBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdlZDQ0NjdiZGEKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwpAQCAtMCwwICsxLDE0MzYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHlw YXJhbGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRpbmVzIGZvciBhcHBseWluZyB4YWN0 IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSB0byBsYXVuY2gsIHNldCB1cCwg YW5kIHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aGljaCByZWNlaXZlcyB0 aGUgY2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFuZCBpbnZva2VzIHJvdXRpbmVzCisg KiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZS4KKyAqCisgKiBUaGlz IGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0 aW5nIHVwLCB1c2luZworICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvIHdoaWNoIGlzIHJlcXVpcmVkIHNvIHRoZSBsZWFkZXIKKyAqIHdvcmtlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyBjYW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLgorICoKKyAq IFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBhc3NpZ25lZCAoaWYgYXZhaWxhYmxlKSBh cyBzb29uIGFzIHhhY3QncworICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkIGZvciBzdWJzY3Jp cHRpb25zIHRoYXQgaGF2ZSBzZXQgdGhlaXIgJ3N0cmVhbWluZycKKyAqIG9wdGlvbiBhcyBwYXJh bGxlbC4gVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBu ZXcKKyAqIHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzIHdvcmtlciBhc3Np Z25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbgorICogY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNv IHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcworICogcHJlc2Vy dmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWQgZmlsZSBJL08gaW4gbW9zdCBjYXNlcywgYWx0 aG91Z2ggd2UKKyAqIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlIGlzIG5v IHdvcmtlciBhdmFpbGFibGUuIFNlZSBjb21tZW50cworICogYXRvcCBsb2dpY2FsL3dvcmtlciB0 byBrbm93IG1vcmUgYWJvdXQgc3RyZWFtZWQgeGFjdHMgd2hvc2UgY2hhbmdlcyBhcmUKKyAqIHNw aWxsZWQgdG8gZGlzay4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB0 byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvOiAoYSkgdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVz IC0gc2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAqIHRyYW5zYWN0aW9uIGFu ZCB1cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBvbiBwdWJsaXNoZXIgdGhlbgor ICogYWxsb3dpbmcgdGhlIHN1YnNjcmliZXIgdG8gYXBwbHkgYm90aCBpbiBwYXJhbGxlbCBjYW4g bGVhZCB0byBmYWlsdXJlIGluIHRoZQorICogdXBkYXRlOyAoYikgZGVhZGxvY2tzIC0gYWxsb3dp bmcgdHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRlIHRoZSBzYW1lIHNldCBvZgorICogcm93cy90YWJs ZXMgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgY2FuIGxl YWQgdG8KKyAqIGRlYWRsb2Nrcy4KKyAqCisgKiBBIHdvcmtlciBwb29sIGlzIHVzZWQgdG8gYXZv aWQgcmVzdGFydGluZyB3b3JrZXJzIGZvciBlYWNoIHN0cmVhbWluZworICogdHJhbnNhY3Rpb24u IFdlIG1haW50YWluIGVhY2ggd29ya2VyJ3MgaW5mb3JtYXRpb24gKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvKQorICogaW4gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLiBBZnRlciBzdWNjZXNz ZnVsbHkgbGF1bmNoaW5nIGEgbmV3IHdvcmtlciwKKyAqIGl0cyBpbmZvcm1hdGlvbiBpcyBhZGRl ZCB0byB0aGUgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wuIE9uY2UgdGhlIHdvcmtlcgorICogZmlu aXNoZXMgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgYXZhaWxhYmxl IGZvciByZS11c2UuCisgKiBOb3csIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBw bHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2UKKyAqIGNoZWNrIHRoZSBsaXN0IGZvciBh bnkgYXZhaWxhYmxlIHdvcmtlci4gTm90ZSB0aGF0IHdlIHJldGFpbiBhIG1heGltdW0gb2YKKyAq IGhhbGYgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gd29y a2VycyBpbiB0aGUgcG9vbCBhbmQKKyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBseSBleGl0IHRoZSB3 b3JrZXIgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFhYWCBUaGlzIHdv cmtlciBwb29sIHRocmVzaG9sZCBpcyBhcmJpdHJhcnkgYW5kIHdlIGNhbiBwcm92aWRlIGEgR1VD CisgKiB2YXJpYWJsZSBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVkLgorICoKKyAq IFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIGEgc2VwYXJhdGUgZHluYW1pYyBz aGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBwYXJhbGxlbCBhcHBseSB3b3JrZXIg c3RhcnRzLiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3Qg cHJlZGljdCBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgbmVlZGVkLiBJdCBtYXkgYmUgcG9zc2li bGUgdG8KKyAqIGFsbG9jYXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9uZSBzZWdtZW50IGJh c2VkIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyAo bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiksIGJ1dAorICogdGhp cyB3b3VsZCB3YXN0ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxseSBzdGFydGVkLgor ICoKKyAqIFRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBjb250YWluczogKGEpIGEg c2htX21xIHRoYXQgaXMgdXNlZCB0bworICogc2VuZCBjaGFuZ2VzIGluIHRoZSB0cmFuc2FjdGlv biBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcjsg KGIpIGFub3RoZXIgc2htX21xIHRoYXQgaXMgdXNlZCB0byBzZW5kIGVycm9ycyAoYW5kIG90aGVy IG1lc3NhZ2VzCisgKiByZXBvcnRlZCB2aWEgZWxvZy9lcmVwb3J0KSBmcm9tIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgdG8gbGVhZGVyIGFwcGx5CisgKiB3b3JrZXI7IChjKSBuZWNlc3Nhcnkg aW5mb3JtYXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAq IGFuZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5lLiBtZW1iZXJzIG9mIFBhcmFsbGVsQXBw bHlXb3JrZXJTaGFyZWQpLgorICoKKyAqIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNpbmNlIHRoZSBkYXRhYmFzZSBzdHJ1Y3R1cmUgKHNjaGVt YSBvZiBzdWJzY3JpcHRpb24gdGFibGVzLCBjb25zdHJhaW50cywKKyAqIGV0Yy4pIG9mIHRoZSBw dWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgY291bGQgYmUgZGlmZmVyZW50LCBhcHBseWluZworICog dHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsIG1vZGUgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBjYW4g Y2F1c2Ugc29tZQorICogZGVhZGxvY2tzIHRoYXQgZG8gbm90IG9jY3VyIG9uIHRoZSBwdWJsaXNo ZXIgc2lkZS4gVGhpcyBjYW4gaGFwcGVuIGV2ZW4KKyAqIHdpdGhvdXQgcGFyYWxsZWwgbW9kZSB3 aGVuIHRoZXJlIGFyZSBjb25jdXJyZW50IG9wZXJhdGlvbnMgb24gdGhlCisgKiBzdWJzY3JpYmVy LiBJbiBvcmRlciB0byBkZXRlY3QgdGhlIGRlYWRsb2NrcyBhbW9uZyBsZWFkZXIgYW5kIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXJzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIHdhaXQgdXNp bmcgbG1nciBsb2Nrcy4gQW4gYWx0ZXJuYXRpdmUKKyAqIGFwcHJvYWNoIGNvdWxkIGJlIHRvIG5v dCBhbGxvdyBwYXJhbGxlbGlzbSB3aGVuIHRoZSBzY2hlbWEgb2YgdGFibGVzIGlzCisgKiBkaWZm ZXJlbnQgYmV0d2VlbiB0aGUgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGJ1dCB0aGF0IHdvdWxk IGJlIHRvbworICogcmVzdHJpY3RpdmUgYW5kIHdvdWxkIHJlcXVpcmUgdGhlIHB1Ymxpc2hlciB0 byBzZW5kIG11Y2ggbW9yZSBpbmZvcm1hdGlvbgorICogdGhhbiBpdCBpcyBjdXJyZW50bHkgc2Vu ZGluZy4KKyAqCisgKiBDb25zaWRlciBhIGNhc2Ugd2hlcmUgdGhlIHN1YnNjcmliZWQgdGFibGUg ZG9lcyBub3QgaGF2ZSBhIHVuaXF1ZSBrZXkgb24gdGhlCisgKiBwdWJsaXNoZXIgYW5kIGhhcyBh IHVuaXF1ZSBrZXkgb24gdGhlIHN1YnNjcmliZXIuCisgKgorICogMSkgRGVhZGxvY2sgYmV0d2Vl biB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAq CisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChQQSkgaXMgZXhlY3V0aW5nIFRYLTEgYW5k IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiAoTEEpIGlzIGV4ZWN1dGluZyBUWC0yIGNvbmN1 cnJlbnRseSBvbiB0aGUgc3Vic2NyaWJlci4gTm93LCBMQSBpcyB3YWl0aW5nCisgKiBmb3IgUEEg YmVjYXVzZSBvZiB0aGUgdW5pcXVlIGtleSBvZiB0aGUgc3Vic2NyaWJlZCB0YWJsZSB3aGlsZSBQ QSBpcyB3YWl0aW5nCisgKiBmb3IgTEEgdG8gc2VuZCB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdl cyBvciB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZAorICogbWVzc2FnZS4KKyAqCisgKiBJbiBv cmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vzc2lv biBsb2NrIG9uIHRoZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVhbSgp KSBhbmQgaGF2ZSBQQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJlY2Vp dmUgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgTEEgd2lsbCBhY3F1 aXJlCisgKiB0aGUgbG9jayBiZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFNX1NUT1AgYW5kIHdpbGwg cmVsZWFzZSBpdCBpZiBhbHJlYWR5CisgKiBhY3F1aXJlZCBiZWZvcmUgc2VuZGluZyB0aGUgU1RS RUFNX1NUQVJULCBTVFJFQU1fQUJPUlQgKGZvciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24pLCBT VFJFQU1fUFJFUEFSRSwgYW5kIFNUUkVBTV9DT01NSVQuIFRoZSBQQSB3aWxsIGFjcXVpcmUgdGhl CisgKiBsb2NrIGFmdGVyIHByb2Nlc3NpbmcgU1RSRUFNX1NUT1AgYW5kIFNUUkVBTV9BQk9SVCAo Zm9yIHN1YnRyYW5zYWN0aW9uKSBhbmQKKyAqIHRoZW4gcmVsZWFzZSB0aGUgbG9jayBpbW1lZGlh dGVseSBhZnRlciBhY3F1aXJpbmcgaXQuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRoZSBh Ym92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8gYWNx dWlyZSB0aGUgbG9jayBvbiB0aGUgdW5pcXVlIGluZGV4KSAtPiBQQSAod2FpdGluZyB0bworICog YWNxdWlyZSB0aGUgbG9jayBvbiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uKSAtPiBMQQorICoKKyAq IFRoaXMgd2F5LCB3aGVuIFBBIGlzIHdhaXRpbmcgZm9yIExBIGZvciB0aGUgbmV4dCBzdHJlYW0g b2YgY2hhbmdlcywgd2UgY2FuCisgKiBoYXZlIGEgd2FpdC1lZGdlIGZyb20gUEEgdG8gTEEgaW4g bG1nciwgd2hpY2ggd2lsbCBtYWtlIHVzIGRldGVjdCB0aGUKKyAqIGRlYWRsb2NrIGJldHdlZW4g TEEgYW5kIFBBLgorICoKKyAqIDIpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqCisgKiBUaGlzIHNjZW5hcmlvIGlz IHNpbWlsYXIgdG8gdGhlIGZpcnN0IGNhc2UgYnV0IFRYLTEgYW5kIFRYLTIgYXJlIGV4ZWN1dGVk IGJ5CisgKiB0d28gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAoUEEtMSBhbmQgUEEtMiByZXNwZWN0 aXZlbHkpLiBJbiB0aGlzIHNjZW5hcmlvLAorICogUEEtMiBpcyB3YWl0aW5nIGZvciBQQS0xIHRv IGNvbXBsZXRlIGl0cyB0cmFuc2FjdGlvbiB3aGlsZSBQQS0xIGlzIHdhaXRpbmcKKyAqIGZvciBz dWJzZXF1ZW50IGlucHV0IGZyb20gTEEuIEFsc28sIExBIGlzIHdhaXRpbmcgZm9yIFBBLTIgdG8g Y29tcGxldGUgaXRzCisgKiB0cmFuc2FjdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29t bWl0IG9yZGVyLiBUaGVyZSBpcyBhIGRlYWRsb2NrIGFtb25nCisgKiB0aGUgdGhyZWUgcHJvY2Vz c2VzLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3ZSBoYXZlIFBB IGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgKHRoaXMgaXMKKyAqIGEgZGlmZmVyZW50IGxvY2sgdGhh biByZWZlcnJlZCBpbiBwcmV2aW91cyBjYXNlLCBzZWUKKyAqIHBhX2xvY2tfdHJhbnNhY3Rpb24o KSkgb24gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgYW5kIGhhdmUgTEEgd2FpdCBvbgor ICogdGhlIGxvY2sgYmVmb3JlIHByb2NlZWRpbmcgaW4gdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBj b21tYW5kcy4gU3BlY2lmaWNhbGx5LAorICogUEEgd2lsbCBhY3F1aXJlIHRoaXMgbG9jayBpbiBT aGFyZSBtb2RlIGJlZm9yZSBleGVjdXRpbmcgdGhlIGZpcnN0IG1lc3NhZ2UKKyAqIG9mIHRoZSB0 cmFuc2FjdGlvbiBhbmQgcmVsZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQuIExBIHdpbGwgYWNxdWly ZSB0aGlzIGxvY2sKKyAqIGluIEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGF0IHRyYW5zYWN0aW9uIGZp bmlzaCBjb21tYW5kcyAoU1RSRUFNX0NPTU1JVCBhbmQKKyAqIFNUUkVBTV9QUkVQQVJFKSBhbmQg cmVsZWFzZSBpdCBpbW1lZGlhdGVseS4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFi b3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1 aXJlIHRoZSB0cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0yICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhl CisgKiBsb2NrIGR1ZSB0byB1bmlxdWUgaW5kZXggY29uc3RyYWludCkgLT4gUEEtMSAod2FpdGlu ZyB0byBhY3F1aXJlIHRoZSBzdHJlYW0KKyAqIGxvY2spIC0+IExBCisgKgorICogVGhpcyB3YXkg d2hlbiBMQSBpcyB3YWl0aW5nIHRvIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gZW5kIGNvbW1hbmQg dG8gcHJlc2VydmUKKyAqIHRoZSBjb21taXQgb3JkZXIsIHdlIHdpbGwgYmUgYWJsZSB0byBkZXRl Y3QgZGVhZGxvY2ssIGlmIGFueS4KKyAqCisgKiBPbmUgbWlnaHQgdGhpbmsgd2UgY2FuIHVzZSBY YWN0TG9ja1RhYmxlV2FpdCgpLCBidXQgWGFjdExvY2tUYWJsZVdhaXQoKQorICogY29uc2lkZXJz IFBSRVBBUkVEIFRSQU5TQUNUSU9OIGFzIHN0aWxsIGluIHByb2dyZXNzIHdoaWNoIG1lYW5zIHRo ZSBsb2NrCisgKiB3b24ndCBiZSByZWxlYXNlZCBldmVuIGFmdGVyIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaGFzIHByZXBhcmVkIHRoZQorICogdHJhbnNhY3Rpb24uCisgKgorICogMykgRGVh ZGxvY2sgd2hlbiB0aGUgc2htX21xIGJ1ZmZlciBpcyBmdWxsCisgKgorICogSW4gdGhlIHByZXZp b3VzIHNjZW5hcmlvIChpZS4gUEEtMSBhbmQgUEEtMiBhcmUgZXhlY3V0aW5nIHRyYW5zYWN0aW9u cworICogY29uY3VycmVudGx5KSwgaWYgdGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBMQSBhbmQg UEEtMiBpcyBmdWxsLCBMQSBoYXMgdG8KKyAqIHdhaXQgdG8gc2VuZCBtZXNzYWdlcywgYW5kIHRo aXMgd2FpdCBkb2Vzbid0IGFwcGVhciBpbiBsbWdyLgorICoKKyAqIFRvIHJlc29sdmUgdGhpcyBp c3N1ZSwgd2UgdXNlIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEgdGltZW91dC4g SWYKKyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgcmVwb3J0cyBhbiBlcnJvciBh bmQgcmVzdGFydHMgbG9naWNhbAorICogcmVwbGljYXRpb24uCisgKgorICogNCkgTG9jayB0eXBl cworICoKKyAqIEJvdGggdGhlIHN0cmVhbSBsb2NrIGFuZCB0aGUgdHJhbnNhY3Rpb24gbG9jayBt ZW50aW9uZWQgYWJvdmUgYXJlCisgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGJlY2F1c2UgYm90aCBs b2NrcyBjb3VsZCBiZSBhY3F1aXJlZCBvdXRzaWRlIHRoZQorICogdHJhbnNhY3Rpb24sIGFuZCB0 aGUgc3RyZWFtIGxvY2sgaW4gdGhlIGxlYWRlciBuZWVkcyB0byBwZXJzaXN0IGFjcm9zcworICog dHJhbnNhY3Rpb24gYm91bmRhcmllcyBpLmUuIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbi4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJwcS9w cW1xLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1 cHQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vb3Jp Z2luLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRlICJ0 Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKyNkZWZpbmUgUEdf TE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3ODdjYTA2NworCisvKgorICogRFNNIGtleXMgZm9y IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gIFVubGlrZSBvdGhlciBwYXJhbGxlbCBleGVjdXRpb24g Y29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgRFNNIGtleXMgY29u ZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21hbGwgaW50ZWdlcnMu CisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRAkJMQorI2RlZmluZSBQQVJB TExFTF9BUFBMWV9LRVlfTVEJCQkyCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9R VUVVRQkzCisKKy8qIFF1ZXVlIHNpemUgb2YgRFNNLCAxNiBNQiBmb3Igbm93LiAqLworI2RlZmlu ZSBEU01fUVVFVUVfU0laRQkoMTYgKiAxMDI0ICogMTAyNCkKKworLyoKKyAqIEVycm9yIHF1ZXVl IHNpemUgb2YgRFNNLiBJdCBpcyBkZXNpcmFibGUgdG8gbWFrZSBpdCBsYXJnZSBlbm91Z2ggdGhh dCBhCisgKiB0eXBpY2FsIEVycm9yUmVzcG9uc2UgY2FuIGJlIHNlbnQgd2l0aG91dCBibG9ja2lu Zy4gIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0CisgKiBlcnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUg d2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBhbmQgdGVybWluYXRlIHdpdGhvdXQKKyAqIHdh aXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisgKi8KKyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVF X1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICogVGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBl YWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0 YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0 aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgd2UgY2FuIGln bm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHNlZSBm dW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAqLworI2RlZmluZSBTSVpFX1NUQVRTX01F U1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBzaXplb2YoVGltZXN0YW1wVHopKQorCisv KgorICogVGhlIHR5cGUgb2Ygc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVp bmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuCisgKi8K KyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0JMAorI2RlZmluZSBQQVJBTExFTF9B UFBMWV9MT0NLX1hBQ1QJMQorCisvKgorICogSGFzaCB0YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gg a2V5IC0tIG11c3QgYmUgZmlyc3QgKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKKworLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2Vk IHRvIGNhY2hlIHRoZSBzdGF0ZSBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxp ZWQKKyAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICovCitzdGF0aWMgSFRBQiAq UGFyYWxsZWxBcHBseVR4bkhhc2ggPSBOVUxMOworCisvKgorKiBBIGxpc3QgKHBvb2wpIG9mIGFj dGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUgaW5mb3JtYXRpb24gZm9yCisqIHRoZSBu ZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hp bmcgaXQuIFRoZQorKiBsaXN0IGVudHJ5IGlzIHJlbW92ZWQgaWYgdGhlcmUgYXJlIGFscmVhZHkg ZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHdvcmtlcgorKiBwb29sIGVpdGhlciBhdCB0aGUgZW5kIG9m IHRoZSB0cmFuc2FjdGlvbiBvciB3aGlsZSB0cnlpbmcgdG8gZmluZCBhIGZyZWUKKyogd29ya2Vy IGZvciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0 IHRoZSB3b3JrZXIKKyogcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICovCitz dGF0aWMgTGlzdCAqUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBOSUw7CisKKy8qCisgKiBJbmZv cm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKk15UGFyYWxsZWxT aGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNzYWdlIHNlbnQgYnkgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdGhhdCB0aGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgbmVlZHMg dG8gcmVjZWl2ZT8KKyAqLwordm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNz YWdlUGVuZGluZyA9IGZhbHNlOworCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYXBwbHlpbmcgdGhlCisgKiBjdXJyZW50IHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4gSXQgaXMgdXNlZCB0byBzYXZlIHRoZSBjb3N0IG9mIHNlYXJj aGluZyB0aGUKKyAqIGhhc2ggdGFibGUgd2hlbiBhcHBseWluZyB0aGUgY2hhbmdlcyBiZXR3ZWVu IFNUUkVBTV9TVEFSVCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK3N0YXRpYyBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CisKKy8qIEEgbGlzdCB0byBt YWludGFpbiBzdWJ0cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KK3N0YXRpYyBMaXN0CSAgICpzdWJ4 YWN0bGlzdCA9IE5JTDsKKworc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZSBwYV9n ZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKKworLyoK KyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2FuX3N0YXJ0KFRy YW5zYWN0aW9uSWQgeGlkKQoreworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsK KworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRo ZSBzdWJzY3JpcHRpb24gaXMgbm90CisJICogdXNpbmcgcGFyYWxsZWwgc3RyZWFtaW5nIG1vZGUs IG9yIGlmIHRoZSBwdWJsaXNoZXIgZG9lcyBub3Qgc3VwcG9ydAorCSAqIHBhcmFsbGVsIGFwcGx5 LgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwkJcmV0 dXJuIGZhbHNlOworCisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFy YWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkK KwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3 b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQg dXNlciB3YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yIHN0cmVhbWlu ZworCSAqIHRyYW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHNlcmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24g dG8gYSBmaWxlIHNvIHRoYXQgd2UKKwkgKiBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJh bnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0byBza2lwIGJlZm9yZQorCSAqIHN0YXJ0aW5nIHRv IGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vi c2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0 aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0 YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBr bm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFy dCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYg KCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7 Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudC4KKyAq CisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0IGNvbnRhaW5zIGEgZml4ZWQtc2l6 ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpLCBhIG1lc3NhZ2Ug cXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vz cywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wKK3BhX3NldHVwX2RzbShQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlT aXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCVBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJ CXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0g RFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJl ZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5 IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3 ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQg b25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHR3byBv dGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0aW9ucyBvZiB0aGUgbWVzc2FnZSBxdWV1 ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRp YWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBzaXplb2Yo UGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUs IHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIGVycm9yX3F1ZXVlX3Np emUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAzKTsKKwlzZWdzaXplID0gc2htX3Rv Y19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBh bmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJc2VnID0gZHNtX2NyZWF0ZShz aG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFzZWcpCisJCXJldHVybiBmYWxzZTsKKwor CXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2Vn bWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhl YWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJbml0KCZzaGFyZWQtPm11dGV4 KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJcGdf YXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCksIDApOworCXNo YXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlzaG1fdG9jX2lu c2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQg dXAgbWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUo c2htX3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9j X2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2Vu ZGVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFf aGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJv ciBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19h bGxvY2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXpl KTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwg bXEpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhl IHF1ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBz ZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5k c21fc2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUg cG9vbC4gSWYgbm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICov CitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dv cmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hl ZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdAkgICAqYWN0aXZlX3dv cmtlcnMgPSBsaXN0X2NvcHkoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpOworCUxpc3RDZWxsICAg KmxjOworCisJLyogVHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGZyb20gdGhlIHdvcmtlciBwb29sLiAqLworCWZvcmVhY2gobGMsIGFjdGl2ZV93b3JrZXJzKQor CXsKKwkJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKwor CQkvKgorCQkgKiBXZSBmaXJzdCB0cnkgdG8gZnJlZSB0aGUgd29ya2VyIHRvIGltcHJvdmUgb3Vy IGNoYW5jZXMgb2YgZmluZGluZworCQkgKiBvbmUgdGhhdCBpcyBub3QgaW4gdXNlLiBOb3JtYWxs eSwgd2UgZnJlZSB0aGUgd29ya2VyIGFmdGVyIGVuc3VyaW5nCisJCSAqIHRoYXQgdGhlIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBieSB0aGUgcGFyYWxsZWwgd29ya2VyIGJ1dCBmb3IKKwkJICog cm9sbGJhY2tzLCB3ZSBkb24ndCB3YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gZmluaXNoIHNv IGNhbid0CisJCSAqIGZyZWUgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBpbW1lZGlhdGVseS4KKwkJ ICovCisJCWlmIChwYV9mcmVlX3dvcmtlcih3aW5mbywgd2luZm8tPnNoYXJlZC0+eGlkKSkKKwkJ CWNvbnRpbnVlOworCisJCWlmICghd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB3aW5mbzsKKwl9 CisKKwkvKgorCSAqIFN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKgorCSAq IFRoZSB3b3JrZXIgaW5mbyBjYW4gYmUgdXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSB3b3Jr ZXIgcHJvY2Vzcywgc28KKwkgKiBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQgY29udGV4dC4KKwkg Ki8KKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisK Kwl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQYXJh bGxlbEFwcGx5V29ya2VySW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8KKwlp ZiAoIXBhX3NldHVwX2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisJCXBmcmVlKHdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNo ZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAor CQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24t Pm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJ SW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcp KTsKKworCWlmIChsYXVuY2hlZCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGFw cGVuZChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCX0KKwllbHNlCisJeworCQlw YV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoK KyAqIEFsbG9jYXRlIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZv ciB0aGUgc3BlY2lmaWVkIHhpZC4KKyAqCisgKiBXZSBmaXJzdCB0cnkgdG8gZ2V0IGFuIGF2YWls YWJsZSB3b3JrZXIgZnJvbSB0aGUgcG9vbCwgaWYgYW55IGFuZCB0aGVuIHRyeQorICogdG8gbGF1 bmNoIGEgbmV3IHdvcmtlci4gT24gc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLCByZW1lbWJlciB0aGUg d29ya2VyCisgKiBpbmZvcm1hdGlvbiBpbiB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IHdlIGNhbiBn ZXQgaXQgbGF0ZXIgZm9yIHByb2Nlc3NpbmcgdGhlCisgKiBzdHJlYW1pbmcgY2hhbmdlcy4KKyAq Lwordm9pZAorcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJ CWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxs ZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KHhpZCkpCisJ CXJldHVybjsKKworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgc3RhdGUgaGFzaHRhYmxlLiAqLworCWlmICghUGFyYWxsZWxBcHBseVR4bkhh c2gpCisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwp KTsKKwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBs eUNvbnRleHQ7CisKKwkJUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCQkg ICAxNiwgJmN0bCwKKwkJCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJfQorCisJd2luZm8gPSBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2VyKCk7CisK KwlpZiAoIXdpbmZvKQorCQlyZXR1cm47CisKKwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSBy ZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFw cGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVs b2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogSW5pdGlhbGl6ZSBzaGFy ZWQgbWVtb3J5IGFyZWEuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRl eCk7CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047 CisJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNo YXJlZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJZW50cnktPndpbmZvID0g d2luZm87CisJZW50cnktPnhpZCA9IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVk IHdvcmtlciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICoKK3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQorewor CWJvb2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJh bGxlbEFwcGx5VHhuSGFzaCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hl ZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93 b3JrZXIpCisJCXJldHVybiBzdHJlYW1fYXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRy eSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNo KFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZv dW5kKQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFz c2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQor CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBm b3IgcmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJ ZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3Jr ZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVz dCBtYXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZv ciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0 b3AgdGhpcyBmaWxlLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya2VyIGlzIHN0b3Bw ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworYm9vbAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlpbnQJCQluYXBw bHl3b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwkv KiBXb3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9yIHJldXNlLiAqLworCWlmICghd2luZm8t PmluX3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBmcmVlIHRoZSB3b3Jr ZXIgaWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3b3JrZXIgaXMgc3RpbGwgaW4KKwkgKiBwcm9n cmVzcy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2UgZG9uJ3Qgd2FpdCBmb3IgdGhlIGFwcGx5IG9m IHJvbGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3 aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJcmV0dXJuIGZhbHNl OworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhuSGFzaCwgJnhpZCwgSEFTSF9S RU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKwor CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5 d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJLyogU3Rv cCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4gKi8K KwlpZiAobmFwcGx5d29ya2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdlbmVyYXRp b247CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJCWdlbmVy YXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCQlz bG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJU3Bp bkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJlcF9wYV93 b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtlcl9pbmZv KHdpbmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7 CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBpbmZvcm1hdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQod2luZm8pOworCisJaWYgKHdp bmZvLT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisKKwlp ZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3Jf bXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZykKKwkJZHNtX2RldGFjaCh3aW5mby0+ ZHNtX3NlZyk7CisKKwkvKiBSZW1vdmUgZnJvbSB0aGUgd29ya2VyIHBvb2wuICovCisJUGFyYWxs ZWxBcHBseVdvcmtlclBvb2wgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlclBv b2wsCisJCQkJCQkJCQkJCSAgIHdpbmZvKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyoKKyAq IERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGVhY2ggcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpCit7CisJTGlz dENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7 CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqKSBsZmlyc3QobGMpOworCisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21xX2hh bmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxMOworCX0KK30KKworLyoKKyAq IEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorICovCitzdGF0aWMgdm9pZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQp Cit7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQZW5k aW5nKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlz aGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCWFwcGx5X3dvcmtlcl9l eGl0KGZhbHNlKTsKKwl9CisKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZp Z1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7 CisJfQorfQorCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGlj IHZvaWQKK0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJ c2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFj azsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoK KwkgKiBJbml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVy IGVhY2ggcmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVz c2FnZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJ CQkJCQkJIkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4g RmllbGRzIHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICov CisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxs YmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFj ayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlT aXplCQlsZW47CisKKwkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyog RW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAq LworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2ht cV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAo c2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJ CQlpbnQJCQljOworCisJCQlpZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQg bWVzc2FnZSBsZW5ndGgiKTsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsK KwkJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJ CSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29y a2VyIHRvCisJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJ CSAqLworCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkg KiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUg bGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29yICs9IFNJWkVf U1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCisJCQlNZW1vcnlDb250 ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisJCX0KKwkJZWxzZSBpZiAoc2htcV9yZXMg PT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQl7CisJCQlpbnQJCQlyYzsKKworCQkJaWYgKCFpc19p bl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQorCQkJeworCQkJCS8qCisJCQkJICogSWYgd2UgZGlk bid0IGdldCBhbnkgdHJhbnNhY3Rpb25zIGZvciBhIHdoaWxlIHRoZXJlIG1pZ2h0CisJCQkJICog YmUgdW5jb25zdW1lZCBpbnZhbGlkYXRpb24gbWVzc2FnZXMgaW4gdGhlIHF1ZXVlLCBjb25zdW1l CisJCQkJICogdGhlbSBub3cuCisJCQkJICovCisJCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2Fn ZXMoKTsKKwkJCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisJCQl9CisKKwkJCU1lbW9y eUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VDb250ZXh0KTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCisJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJCQlyYyA9IFdh aXRMYXRjaChNeUxhdGNoLAorCQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgICAxMDAwTCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKKworCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQorCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQo c2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ CSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBs eSB3b3JrZXIiKSkpOworCQl9CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr LiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCisvKgorICogTWFrZSBzdXJlIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIHJlYWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25l IG1vcmUKKyAqIHRpbWUuIFRoaXMgZ3VhcmRzIGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhp dCB1bmNsZWFubHkgd2l0aG91dCBzZW5kaW5nCisgKiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhh bXBsZSBiZWNhdXNlIHNvbWUgY29kZSBjYWxscyBwcm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0 YXRpYyB2b2lkCitwYV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNlbmRQcm9j U2lnbmFsKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkgICBQUk9D U0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisK Kwlkc21fZGV0YWNoKChkc21fc2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisK Ky8qCisgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8KK3ZvaWQKK1Bh cmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCVBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAq c2VnOworCXNobV90b2MgICAgKnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUg Km1xaDsKKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7 CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlv cmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZy4gKi8K KwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2ln bmFsKFNJR0lOVCwgU2lnbmFsSGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisJcHFzaWduYWwo U0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8q CisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhl IHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBjb250ZW50cy4KKwkg KgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVzb3VyY2Ugb3duZXIg YnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJICovCisJbWVtY3B5 KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkp OworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAoIXNlZykKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkgZXJybXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdt ZW50IikpKTsKKworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICghdG9jKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCSBlcnJtc2coImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVt b3J5IHNlZ21lbnQiKSkpOworCisJYmVmb3JlX3NobWVtX2V4aXQocGFfc2h1dGRvd24sIFBvaW50 ZXJHZXREYXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4g Ki8KKwlzaGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFS RUQsIGZhbHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRh Y2ggdG8gdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEs IE15UHJvYyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJ ICogUHJpbWFyeSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4gTm93LCB3ZSBjYW4gYXR0YWNo IHRvIG91ciBzbG90LgorCSAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgZG9lcyBub3Qgd3JpdGUgZGF0YSB0bworCSAqIHRoZSB1bmluaXRpYWxpemVkIG1l bW9yeSBxdWV1ZS4KKwkgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3Qp OworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJh bGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdv cmtlci0+Z2VuZXJhdGlvbjsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9z bG90X25vID0gd29ya2VyX3Nsb3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVk LT5tdXRleCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZXJyb3IgcXVldWUuCisJICovCisJ bXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwg ZmFsc2UpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCWVycm9yX21xaCA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwlwcV9yZWRpcmVjdF90b19zaG1fbXEoc2Vn LCBlcnJvcl9tcWgpOworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2Vy LT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlNeUxv Z2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0 X3JlY3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IDA7CisKKwlJ bml0aWFsaXplQXBwbHlXb3JrZXIoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0 cmFja2luZy4gKi8KKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVJlcGxpY2F0aW9uT3Jp Z2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwgSW52YWxpZE9pZCwKKwkJ CQkJCQkJCSAgIG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CisJb3JpZ2luaWQgPSBy ZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOworCisJLyoKKwkgKiBUaGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGRvZXNuJ3QgbmVlZCB0byBtb25vcG9saXplIHRoaXMgcmVwbGlj YXRpb24KKwkgKiBvcmlnaW4gd2hpY2ggd2FzIGFscmVhZHkgYWNxdWlyZWQgYnkgaXRzIGxlYWRl ciBwcm9jZXNzLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgTXlM b2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgor CSAqIFNldHVwIGNhbGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21l dGhpbmcgY2hhbmdlcyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJ ICovCisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAor CQkJCQkJCQkgIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERh dHVtKSAwKTsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsK KworCUxvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChtcWgpOworCisJLyoKKwkgKiBUaGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIG11c3Qgbm90IGdldCBoZXJlIGJlY2F1c2UgdGhlIHBhcmFsbGVsIGFw cGx5CisJICogd29ya2VyIHdpbGwgb25seSBzdG9wIHdoZW4gaXQgcmVjZWl2ZXMgYSBTSUdURVJN IG9yIFNJR0lOVCBmcm9tIHRoZQorCSAqIGxlYWRlciwgZGV0ZWN0cyBhIGNoYW5nZSBpbiBzdWJz Y3JpcHRpb24gaW5mb3JtYXRpb24sIG9yIHdoZW4gdGhlcmUKKwkgKiB0aGVyZSBpcyBhbiBlcnJv ci4gTm9uZSBvZiB0aGVzZSBjYXNlcyB3aWxsIGFsbG93IHRoZSBjb2RlIHRvIHJlYWNoCisJICog aGVyZS4KKwkgKi8KKwlBc3NlcnQoZmFsc2UpOworfQorCisvKgorICogSGFuZGxlIHJlY2VpcHQg b2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbWVzc2Fn ZS4KKyAqCisgKiBOb3RlOiB0aGlzIGlzIGNhbGxlZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEg QWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCisgKiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQg Q0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZva2UKKyAqIEhhbmRsZVBhcmFsbGVsQXBwbHlN ZXNzYWdlcygpLgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVw dCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcgPSB0cnVlOworCVBhcmFsbGVsQXBwbHlNZXNz YWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2goTXlMYXRjaCk7Cit9CisKKy8qCisgKiBIYW5k bGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZSByZWNlaXZlZCBmcm9tIGEgc2luZ2xlIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitIYW5kbGVQYXJhbGxlbEFw cGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFN0cmluZ0luZm8gbXNn KQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOwor CisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2FzZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2Ug Ki8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3Bv bnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9ybm90aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8q CisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEgY29udGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlz IGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0IGNhbiBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRv IHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQorCQkJCSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJ CWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4l cyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJCQkJCSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCQllbHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBw c3RyZHVwKF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOwor CisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9y IGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2Fs UmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5 X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3Ig bXVzdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkgdGhlIHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29y a2VyLgorCQkJCSAqLworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZCBhYm5vcm1hbGx5Iiks CisJCQkJCQkgZXJyY29udGV4dCgiJXMiLCBlZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkv KgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBh bmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl ciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJ CSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6CisJCQlicmVhazsKKworCQkJLyoKKwkJCSAq IFBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0ZWQgYmVjYXVzZSBvZiBzdWJzY3JpcHRpb24gaW5m b3JtYXRpb24KKwkJCSAqIGNoYW5nZS4KKwkJCSAqLworCQljYXNlICdYJzoKKworCQkJLyogUmVz dGFydCByZXBsaWNhdGlvbiAqLworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZCBiZWNhdXNlIG9m IHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbiBjaGFuZ2UiKSkpOworCQkJYnJlYWs7CQkJCS8qIFNp bGVuY2UgY29tcGlsZXIgd2FybmluZy4gKi8KKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIs CisJCQkJIG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1 ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxp c3RDZWxsICAgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1v cnlDb250ZXh0IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tl ZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1 bmN0aW9ucyBpdCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlz IGEgcG90ZW50aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJl IHJlY2VpdmVkIHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNp dmUgZW50cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBl dmVuIGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4K KwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRN ZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gV2UKKwkgKiBk b24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywg c28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQg d2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9jb250ZXh0KQkJCS8q IGZpcnN0IHRpbWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxlUGFyYWxsZWxBcHBs eU1lc3NhZ2VzIiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCWVsc2UK KwkJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5TWVzc2Fn ZVBlbmRpbmcgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29s KQorCXsKKwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAq ZGF0YTsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVGhlIGxlYWRlciB3aWxsIGRl dGFjaCBmcm9tIHRoZSBlcnJvciBxdWV1ZSBhbmQgc2V0IGl0IHRvIE5VTEwKKwkJICogYmVmb3Jl IHByZXBhcmluZyB0byBzdG9wIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB3ZSBkb24n dAorCQkgKiBuZWVkIHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBhbnltb3JlLiBTZWUKKwkJICog bG9naWNhbHJlcF93b3JrZXJfZGV0YWNoLgorCQkgKi8KKwkJaWYgKCF3aW5mby0+ZXJyb3JfbXFf aGFuZGxlKQorCQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVy cm9yX21xX2hhbmRsZSwgJm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hN X01RX1dPVUxEX0JMT0NLKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFf U1VDQ0VTUykKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5m bygmbXNnKTsKKwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsK KwkJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1z Zy5kYXRhKTsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi bG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLwor CU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMo KTsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBh cHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICovCit2b2lkCitwYV9z ZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29u c3Qgdm9pZCAqZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKwlU aW1lc3RhbXBUeiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUo KSk7CisKKyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAwMAorI2RlZmluZSBT SE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUykK KworCWZvciAoOzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxl LCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQgPT0gU0hNX01RX1NV Q0NFU1MpCisJCQlicmVhazsKKwkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hFRCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRv IHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dP VUxEX0JMT0NLKTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBXYWl0 TGF0Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VY SVRfT05fUE1fREVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJ CQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKwor CQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJ CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGF0dGVt cHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwgd2UgcmVzdGFydAor CQkgKiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2Nr cyB3aXRoIGFub3RoZXIKKwkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBSZWZlciB0byB0aGUg Y29tbWVudHMgYXRvcCB0aGlzIGZpbGUgZm9yCisJCSAqIGRldGFpbHMuCisJCSAqLworCQlpZiAo c3RhcnRUaW1lID09IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJ CWVsc2UgaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVu dFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJ CQkJIGVycm1zZygidGVybWluYXRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgZHVlIHRvIHRpbWVvdXQiKSkpOworCX0KK30KKworLyoKKyAqIFdhaXQgdW50aWwg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0YXRlIGhhcyByZWFjaGVk IG9yCisgKiBleGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAqLworc3RhdGljIHZvaWQK K3BhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAor CQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsK KwkJLyoKKwkJICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNoZWQgb3Ig ZXhjZWVkZWQgdGhlIGdpdmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAqLworCQlpZiAocGFfZ2V0 X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkKKwkJCWJyZWFrOworCisJ CS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs CisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9T VEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAq LworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBv Y2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy J3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8KK3ZvaWQKK3BhX3dhaXRfZm9yX3hhY3RfZmlu aXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwkvKgorCSAqIFdhaXQgdW50 aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0YXRlIHRvCisJICogUEFSQUxM RUxfVFJBTlNfU1RBUlRFRCB3aGljaCBtZWFucyBpdCBoYXMgYWNxdWlyZWQgdGhlIHRyYW5zYWN0 aW9uCisJICogbG9jay4gVGhpcyBpcyB0byBwcmV2ZW50IGxlYWRlciBhcHBseSB3b3JrZXIgZnJv bSBhY3F1aXJpbmcgdGhlCisJICogdHJhbnNhY3Rpb24gbG9jayBlYXJsaWVyIHRoYW4gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X3N0YXRlKHdpbmZv LCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKworCS8qCisJICogV2FpdCBmb3IgdGhlIHRyYW5z YWN0aW9uIGxvY2sgdG8gYmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVxdWlyZWQgdG8gZGV0ZWN0CisJ ICogZGVhZGxvY2sgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBSZWZl ciB0byB0aGUgY29tbWVudHMKKwkgKiBhdG9wIHRoaXMgZmlsZS4KKwkgKi8KKwlwYV9sb2NrX3Ry YW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJcGFf dW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9j ayk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBzdGF0ZSBiZWNvbWVzIFBBUkFMTEVMX1RSQU5T X0ZJTklTSEVEIGluIGNhc2UgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIGZhaWxlZCB3 aGlsZSBhcHBseWluZyBjaGFuZ2VzIGNhdXNpbmcgdGhlIGxvY2sgdG8gYmUKKwkgKiByZWxlYXNl ZC4KKwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgIT0gUEFSQUxM RUxfVFJBTlNfRklOSVNIRUQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygibG9zdCBj b25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciIpKSk7Cit9CisKKy8qCisgKiBTZXQgYW4gZW51bSBpbmRpY2F0aW5nIHRoZSB0cmFuc2FjdGlv biBzdGF0ZSBmb3IgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3Zv aWQKK3BhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQs CisJCQkJICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGluTG9ja0FjcXVp cmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT54YWN0X3N0YXRlID0geGFjdF9zdGF0ZTsK KwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCBhbiBl bnVtIGluZGljYXRpbmcgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZQorcGFf Z2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlQ YXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJl ZC0+bXV0ZXgpOworCXhhY3Rfc3RhdGUgPSB3c2hhcmVkLT54YWN0X3N0YXRlOworCVNwaW5Mb2Nr UmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIHhhY3Rfc3RhdGU7Cit9CisKKy8q CisgKiBTZXQgdGhlIHdvcmtlciB0aGF0IHJlcXVpcmVkIHRvIGFwcGx5IHRoZSBjdXJyZW50IHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqLwordm9pZAorcGFfc2V0X3N0cmVhbV9hcHBseV93b3Jr ZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXN0cmVhbV9hcHBseV93b3Jr ZXIgPSB3aW5mbzsKK30KKworLyoKKyAqIEZvcm0gYSB1bmlxdWUgc2F2ZXBvaW50IG5hbWUgZm9y IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IGRpZmZlcmVudCBz dWJzY3JpcHRpb25zIGZvciBwdWJsaWNhdGlvbnMgb24gZGlmZmVyZW50IG5vZGVzIGNhbgorICog cmVjZWl2ZSBzYW1lIHJlbW90ZSB4aWQsIHNvIHdlIG5lZWQgdG8gdXNlIHN1YnNjcmlwdGlvbiBp ZCBhbG9uZyB3aXRoIGl0LgorICoKKyAqIFJldHVybiB0aGUgbmFtZSBpbiB0aGUgc3VwcGxpZWQg YnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwg VHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRm KHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKgorICog RGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUg b3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBp ZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0Cisg KiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byBy b2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0YXJ0X3N1YnRy YW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sK KwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1Ynhh Y3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hh cgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlw dGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7 CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3Qg YmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlm ICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCWlmICghSXNUcmFuc2FjdGlvblN0YXRl KCkpCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJQmVnaW5UcmFuc2FjdGlv bkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmlu ZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5n IGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRT dWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQp OworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7 CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyogUmVzZXQgdGhl IGxpc3QgdGhhdCBtYWludGFpbnMgc3VidHJhbnNhY3Rpb25zLiAqLwordm9pZAorcGFfcmVzZXRf c3VidHJhbnModm9pZCkKK3sKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gZnJlZSB0aGlzIGV4 cGxpY2l0bHkgYXMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZQorCSAqIGZyZWVkIGF0IHRo ZSB0cmFuc2FjdGlvbiBlbmQuCisJICovCisJc3VieGFjdGxpc3QgPSBOSUw7Cit9CisKKy8qCisg KiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIGFw cGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zdHJl YW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlUcmFu c2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZCA9 IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3 ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4gY2Fz ZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0 X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9 IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBhcmUg dGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAqIGp1 c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJewor CQkvKgorCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3NpbmcgYW4g ZW1wdHkgc3RyZWFtaW5nCisJCSAqIHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2UgdGhlIGxvY2sg d29uJ3QgYmUgcmVsZWFzZWQgZHVyaW5nCisJCSAqIHRyYW5zYWN0aW9uIHJvbGxiYWNrLgorCQkg Ki8KKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlB Ym9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkK KwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJfQorCisJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisKKwkJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCQlwYV9zZXRfeGFjdF9zdGF0ZShN eVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7 CisJCS8qIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4g Ki8KKwkJaW50CQkJaTsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZl cG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4aWQsIHNwbmFtZSwgc2l6ZW9mKHNw bmFtZSkpOworCisJCWVsb2coREVCVUcxLCAicm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyBp biBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisK KwkJLyoKKwkJICogU2VhcmNoIHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQg dHJhY2tlZCBmb3IgdGhlCisJCSAqIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJ ICoKKwkJICogTm90ZSB0aGF0IElmIGl0J3MgYW4gZW1wdHkgc3ViLXRyYW5zYWN0aW9uIHRoZW4g d2Ugd2lsbCBub3QgZmluZAorCQkgKiB0aGUgc3VieGlkIGhlcmUuCisJCSAqLworCQlmb3IgKGkg PSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJeworCQkJVHJh bnNhY3Rpb25JZCB4aWRfdG1wID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1YnhhY3RsaXN0 LCBpKSk7CisKKwkJCWlmICh4aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlSb2xsYmFja1Rv U2F2ZXBvaW50KHNwbmFtZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJ c3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsgMSk7CisJCQkJYnJl YWs7CisJCQl9CisJCX0KKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRS QU5TQUNUSU9OLCBOVUxMKTsKKwl9Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFj cXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBT ZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNh dGUgdGhhdCBpdCdzIGEKKyAqIHN0cmVhbSBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21t ZW50cyBhdG9wIHRoaXMgZmlsZSB0byBzZWUgaG93IHRoZSBzdHJlYW0gbG9jayBpcyB1c2VkLgor ICovCit2b2lkCitwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9j a21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0s IGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Np b24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQ UExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25z IHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBlYWNoIGxvY2FsIHRyYW5zYWN0aW9u CisgKiBhcHBseS4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlf TE9DS19YQUNUIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiB0cmFuc2FjdGlvbiBsb2NrLgor ICoKKyAqIE5vdGUgdGhhdCBhbGwgdGhlIGNhbGxlcnMgbXVzdCBwYXNzIGEgcmVtb3RlIHRyYW5z YWN0aW9uIElEIGluc3RlYWQgb2YgYQorICogbG9jYWwgdHJhbnNhY3Rpb24gSUQgYXMgeGlkLiBU aGlzIGlzIGJlY2F1c2UgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIElEIHdpbGwKKyAqIG9ubHkgYmUg YXNzaWduZWQgd2hpbGUgYXBwbHlpbmcgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwg YXBwbHkgYnV0CisgKiBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGJsb2NrZWQKKyAqIGJ5IGEgY29uY3VycmVudGx5IGV4 ZWN1dGluZyB0cmFuc2FjdGlvbiBpbiBhbm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UK KyAqIGNhbiBvbmx5IGNvbW11bmljYXRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byB0aGUg bGVhZGVyIGFmdGVyIGFwcGx5aW5nCisgKiB0aGUgZmlyc3QgY2hhbmdlIHNvIGl0IHdvbid0IGJl IGFibGUgdG8gd2FpdCBhZnRlciBzZW5kaW5nIHRoZSB4YWN0IGZpbmlzaAorICogY29tbWFuZCB1 c2luZyB0aGlzIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBm aWxlIHRvIHNlZSBob3cgdGhlIHRyYW5zYWN0aW9uIGxvY2sgaXMKKyAqIHVzZWQuCisgKi8KK3Zv aWQKK3BhX2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2tt b2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9j a21vZGUpOworfQorCit2b2lkCitwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNz aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9B UFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2RlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCmluZGV4IDJjYzBhYzllYjAuLjMwMzU1N2RjY2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUyLDkgKzY1MiwxMCBAQCBEZWNvZGVD b21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYs CiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJ UmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1 Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2Vk LT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0K LQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsK KwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBj b21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMiwxMCArODIzLDExIEBAIERlY29k ZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVm LAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVv cmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJ CQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5k UmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9y dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFi b3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA3MzU5NGM2OThhLi4w ZjgyZGQ0MTM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CkBAIC01NSw2ICs1NSw3IEBACiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0g TlVMTDsKIApAQCAtMTUyLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkK ICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1l bW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1 cm4gd2hldGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAor c3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29y a2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFj a2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY5LDExICsxNzIsMTEgQEAgV2FpdEZv clJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdv cmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4g Ki8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2Ug aWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsK IAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJ cmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVw V29ya2VyTG9jayk7CkBAIC0xODgsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2Vy QXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdv cmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7 CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJ CXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMTAsNiArMjEzLDggQEAgV2FpdEZvclJl cGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIC8qCiAgKiBX YWxrcyB0aGUgd29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9uZSB0aGF0IG1hdGNoZXMg Z2l2ZW4KICAqIHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgorICogV2UgYXJlIG9ubHkg aW50ZXJlc3RlZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jIHdvcmtl ci4KICAqLwogTG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBz dWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIyNCw2ICsyMjksMTAgQEAg bG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1 bm5pbmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtl cnNbaV07CiAKKwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCQlpZiAoaXNQ YXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmluX3VzZSAm JiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5X3J1 bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI2MCwxMSArMjY5LDEzIEBAIGxvZ2ljYWxyZXBf d29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0gKiBT dGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3RhcnQg bmV3IGxvZ2ljYWwgcmVwbGljYXRpb24gYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgor ICoKKyAqIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICovCi12 b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwg Y29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJ CQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdv cmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw3 ICsyODQsMTIgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQs IGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJaW50CQkJc2xvdCA9IDA7CiAJTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dvcmtlcnM7CisJaW50 CQkJbnBhcmFsbGVsYXBwbHl3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlpc19w YXJhbGxlbF9hcHBseV93b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01fSEFORExFX0lOVkFM SUQpOworCisJLyogU2FuaXR5IGNoZWNrIC0gdGFibGVzeW5jIHdvcmtlciBjYW5ub3QgYmUgYSBz dWJ3b3JrZXIgKi8KKwlBc3NlcnQoIShpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgJiYgT2lkSXNW YWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRlcm5hbCgi c3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIiLApAQCAtMzUxLDcgKzM2NywyNiBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkg JiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKIAl7 CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJCXJl dHVybiBmYWxzZTsKKwl9CisKKwlucGFyYWxsZWxhcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX3Bh X3dvcmtlcl9jb3VudChzdWJpZCk7CisKKwkvKgorCSAqIFJldHVybiBmYWxzZSBpZiB0aGUgbnVt YmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcmVhY2hlZCB0aGUgbGltaXQKKwkgKiBwZXIg c3Vic2NyaXB0aW9uLgorCSAqLworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgJiYKKwkJ bnBhcmFsbGVsYXBwbHl3b3JrZXJzID49IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24pCisJeworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK KworCQllcmVwb3J0KExPRywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElN SVRfRVhDRUVERUQpLAorCQkJCSBlcnJtc2coIm91dCBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJz IiksCisJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24uIikpKTsKKworCQlyZXR1cm4gZmFsc2U7 CiAJfQogCiAJLyoKQEAgLTM2NSw3ICs0MDAsNyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJD T0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWln aHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7 Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIFByZXBhcmUgdGhlIHdvcmtl ciBzbG90LiAqLwpAQCAtMzgwLDYgKzQxNSw4IEBAIHJldHJ5OgogCXdvcmtlci0+cmVsc3RhdGUg PSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXItPnJlbHN0YXRlX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBOVUxMOworCXdvcmtlci0+YXBw bHlfbGVhZGVyX3BpZCA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA/IE15UHJvY1BpZCA6IElu dmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGlzX3BhcmFsbGVsX2FwcGx5X3dv cmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1Q X05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29y a2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTcsMTkgKzQzNCwzNCBAQCByZXRyeToKIAkJQkdX T1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9 IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJh cnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5j dGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlpZiAoaXNfcGFy YWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJH V19NQVhMRU4sICJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIpOworCWVsc2UKKwkJc25wcmludGYo Ymd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisK IAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01B WExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24g JXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7CisJZWxzZSBpZiAoaXNfcGFyYWxsZWxfYXBwbHlf d29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCisJCQkJICJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1 Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAot CQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1 YmlkKTsKLQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciIpOworCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93 b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgd29ya2VyIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X3R5 cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciIpOwogCiAJYmd3LmJn d19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFSVDsKIAliZ3cuYmd3X25vdGlmeV9waWQg PSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2FyZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAK KwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQltZW1jcHkoYmd3LmJnd19leHRyYSwg JnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7CisKIAlpZiAoIVJlZ2lzdGVyRHlu YW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQogCXsKIAkJLyogRmFpbGVk IHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtNDIy LDMzICs0NzQsMjMgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9O X0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgYmFja2dyb3VuZCB3b3JrZXIg c2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3dv cmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJ LyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCi0JV2FpdEZvclJlcGxpY2F0aW9uV29y a2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CisJcmV0dXJuIFdhaXRG b3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUp OwogfQogCiAvKgotICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1 YmlkL3JlbGlkLCBpZiBhbnksIGFuZCB3YWl0IHVudGlsCi0gKiBpdCBkZXRhY2hlcyBmcm9tIHRo ZSBzbG90LgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gc3RvcCB0aGUgd29ya2VyIGFuZCB3YWl0 IHVudGlsIGl0IGRldGFjaGVzIGZyb20gdGhlCisgKiBzbG90LgogICovCi12b2lkCi1sb2dpY2Fs cmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQorc3RhdGljIHZvaWQKK2xvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLCBpbnQg c2lnbm8pCiB7Ci0JTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwogCXVpbnQxNgkJZ2VuZXJhdGlv bjsKIAotCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7Ci0K LQl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwot Ci0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQotCXsKLQkJ TFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKLQl9CisJQXNz ZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQp KTsKIAogCS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBz byB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKQEAgLTQ4NiwxMCArNTI4LDcgQEAgbG9naWNh bHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAkJICogZGlmZmVyZW50LCBt ZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtlbiB0aGUgc2xvdC4KIAkJICov CiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRp b24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogCQkJcmV0 dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBwcm9jLCBzbyBpdCBoYXMgc3Rh cnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTQ5Nyw3ICs1MzYsNyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCX0KIAogCS8qIE5vdyB0ZXJt aW5hdGUgdGhlIHdvcmtlciAuLi4gKi8KLQlraWxsKHdvcmtlci0+cHJvYy0+cGlkLCBTSUdURVJN KTsKKwlraWxsKHdvcmtlci0+cHJvYy0+cGlkLCBzaWdubyk7CiAKIAkvKiAuLi4gYW5kIHdhaXQg Zm9yIGl0IHRvIGRpZS4gKi8KIAlmb3IgKDs7KQpAQCAtNTIzLDYgKzU2Miw1MyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCiAJCUxXTG9ja0FjcXVpcmUo TG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQorfQorCisvKgorICogU3RvcCB0 aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YmlkL3JlbGlkLCBpZiBhbnkuCisg Ki8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCit7 CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVw V29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2Zp bmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7CisKKwlpZiAod29ya2VyKQorCXsKKwkJQXNzZXJ0KCFp c1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Bf aW50ZXJuYWwod29ya2VyLCBTSUdURVJNKTsKKwl9CisKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgKiBpbnB1dCBzbG90 IG51bWJlci4KKyAqCisgKiBOb2RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNlbmRzIFNJR0lOVCBpbnN0 ZWFkIG9mIFNJR1RFUk0gdG8gdGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIgc28gdGhhdCB0 aGUgd29ya2VyIGV4aXRzIGNsZWFubHkuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfcGFfd29ya2Vy X3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKQoreworCUxvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlcjsKKworCUFzc2VydChzbG90X25vID49IDAgJiYgc2xvdF9ubyA8IG1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMpOworCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdvcmtlciA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJz W3Nsb3Rfbm9dOworCUFzc2VydChpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7CisKKwkv KgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5k IHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICovCisJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBn ZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRl cm5hbCh3b3JrZXIsIFNJR0lOVCk7CiAKIAlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKIH0KQEAgLTU5NSwxMSArNjgxLDQwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChp bnQgc2xvdCkKIH0KIAogLyoKLSAqIERldGFjaCB0aGUgd29ya2VyIChjbGVhbnMgdXAgdGhlIHdv cmtlciBpbmZvKS4KKyAqIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaWYgYW55LCBh bmQgZGV0YWNoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiAoY2xlYW5zIHVwIHRoZSB3b3Jr ZXIgaW5mbykuCiAgKi8KIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9p ZCkKIHsKKwkvKiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmIChhbV9s ZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJeworCQlMaXN0CSAgICp3b3JrZXJzOworCQlMaXN0Q2Vs bCAgICpsYzsKKworCQkvKgorCQkgKiBEZXRhY2ggZnJvbSB0aGUgZXJyb3JfbXFfaGFuZGxlIGZv ciBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2VycworCQkgKiBiZWZvcmUgdGVybWluYXRpbmcgdGhl bS4gVGhpcyBwcmV2ZW50cyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBmcm9tCisJCSAqIHJlY2Vp dmluZyB0aGUgd29ya2VyIHRlcm1pbmF0aW9uIG1lc3NhZ2UgYW5kIHNlbmRpbmcgaXQgdG8gbG9n cyB3aGVuCisJCSAqIHRoZSBzYW1lIGlzIGFscmVhZHkgZG9uZSBieSB0aGUgcGFyYWxsZWwgd29y a2VyLgorCQkgKi8KKwkJcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSgpOworCisJCUxXTG9ja0FjcXVp cmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2lj YWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlm b3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2lj YWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtl cih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcsIFNJR1RFUk0pOwor CQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJfQorCiAJLyog QmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIyLDYgKzczNyw4IEBAIGxvZ2ljYWxyZXBf d29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQogCXdvcmtlci0+dXNlcmlk ID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJl bGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQgPSBJbnZhbGlkUGlk OworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTY1Myw2ICs3 NzAsMTMgQEAgbG9naWNhbHJlcF93b3JrZXJfb25leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAJ aWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgIT0gTlVMTCkKIAkJRmlsZVNl dERlbGV0ZUFsbChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKIAorCS8qCisJ ICogU2Vzc2lvbiBsZXZlbCBsb2NrcyBtYXkgYmUgYWNxdWlyZWQgb3V0c2lkZSBvZiBhIHRyYW5z YWN0aW9uIGluIHBhcmFsbGVsCisJICogYXBwbHkgbW9kZSBhbmQgd2lsbCBub3QgYmUgcmVsZWFz ZWQgd2hlbiB0aGUgd29ya2VyIHRlcm1pbmF0ZXMsIHNvCisJICogbWFudWFsbHkgcmVsZWFzZSBh bGwgbG9ja3MgYmVmb3JlIHRoZSB3b3JrZXIgZXhpdHMuCisJICovCisJTG9ja1JlbGVhc2VBbGwo REVGQVVMVF9MT0NLTUVUSE9ELCB0cnVlKTsKKwogCUFwcGx5TGF1bmNoZXJXYWtldXAoKTsKIH0K IApAQCAtNjgwLDYgKzgwNCwzMyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBz dWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdp c3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3 b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX3BhX3dvcmtl cl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNz ZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNj YW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhv c2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9y IChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJ CUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlp ZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVz Kys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNp emUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hh cmVkIG1lbW9yeQpAQCAtODY5LDcgKzEwMjAsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBt YWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwog CiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWIt Pm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJ IHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJ fQogCkBAIC05NTIsNiArMTEwMywxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVO Q1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBz dWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFw cGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJ Y29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVz WzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzczNTgzYTEyYi4uMjZiZmMwZTgzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDQg KzEsNSBAQAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtl ci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGYxMzRlNDQ4NzguLjhi MDgzNzg2NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAt MTA3NSwxMiArMTA3NSwyMCBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2Rl LCBEYXR1bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBj YWxsaW5nCiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNs eSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0 aGUgY3VycmVudAotICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0 aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCi0gKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lv bl9yZXNldCgpLgorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBl eGlzdCBwZXIgcHJvY2VzcyBzbyB0aGUgY2FjaGVkCisgKiB2YWx1ZSBjYW4gb25seSBiZSBzZXQg YWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93biB3aXRoCisgKiByZXBs b3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4gRm9yIHRoaXMgbm9ybWFsIGNhc2UgcGFzcyBhY3F1aXJl ZF9ieSA9IDAKKyAqIChtZWFuaW5nIHRoZSBzbG90IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFscmVh ZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzKS4KKyAqCisgKiBIb3dldmVyLCBzb21ldGlt ZXMgbXVsdGlwbGUgcHJvY2Vzc2VzIGNhbiBzYWZlbHkgcmUtdXNlIHRoZSBzYW1lIG9yaWdpbiBz bG90CisgKiAoZm9yIGV4YW1wbGUsIG11bHRpcGxlIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3NlcyBj YW4gc2FmZWx5IHVzZSB0aGUgc2FtZQorICogb3JpZ2luLCBwcm92aWRlZCB0aGV5IG1haW50YWlu IGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQg YXQgYSB0aW1lKS4gRm9yIHRoaXMgY2FzZSB0aGUgZmlyc3QgcHJvY2VzcyBtdXN0IHBhc3MgYWNx dWlyZWRfYnkgPQorICogMCwgYW5kIHRoZW4gdGhlIG90aGVyIHByb2Nlc3NlcyBzaGFyaW5nIHRo YXQgc2FtZSBvcmlnaW4gY2FuIHBhc3MKKyAqIGFjcXVpcmVkX2J5ID0gUElEIG9mIHRoZSBmaXJz dCBwcm9jZXNzLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2lu SWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQg YWNxdWlyZWRfYnkpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJ CWk7CkBAIC0xMTIyLDcgKzExMzAsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3Jp Z2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51 ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAo Y3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYWNxdWlyZWRfYnkgPT0gMCkKIAkJewogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAg LTExNTMsNyArMTE2MSwxMSBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQg bm9kZSkKIAogCUFzc2VydChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IElu dmFsaWRSZXBPcmlnaW5JZCk7CiAKLQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJl ZF9ieSA9IE15UHJvY1BpZDsKKwlpZiAoYWNxdWlyZWRfYnkgPT0gMCkKKwkJc2Vzc2lvbl9yZXBs aWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lv bl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgIT0gYWNxdWlyZWRfYnkpCisJCWVsb2co RVJST1IsICJjb3VsZCBub3QgZmluZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciByZXBsaWNh dGlvbiBvcmlnaW4gd2l0aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwKKwkJCSBu b2RlLCBhY3F1aXJlZF9ieSk7CiAKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9j ayk7CiAKQEAgLTEzMzcsNyArMTM0OSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9u X3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0 ICopIERhdHVtR2V0UG9pbnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBs b3JpZ2luX2J5X25hbWUobmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW4pOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jCmluZGV4IGY1ZjJiYzI0ZDguLjcyM2JhNDY2OWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTExNjQsMTAgKzExNjQsMTQgQEAgbG9naWNh bHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERh dGEgKmNvbW1pdF9kYXRhKQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0 IHN0cmVhbS4gTm90ZSB0aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRo ZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfaW5m byBpcyB0cnVlLCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICog b3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlv bklkIHN1YnhpZCkKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFi b3J0X2xzbiwKKwkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsIGJvb2wgd3JpdGVfYWJv cnRfaW5mbykKIHsKIAlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJP UlQpOwogCkBAIC0xMTc2LDE5ICsxMTgwLDQwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJ RCAqLwogCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlk KTsKKworCWlmICh3cml0ZV9hYm9ydF9pbmZvKQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJv cnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgog ICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiBy ZWFkX2Fib3J0X2luZm8gaXMgdHJ1ZSwgcmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1l IGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFk X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJ IFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0 YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4 aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsKKworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK IAotCSp4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQo aW4sIDQpOworCWlmIChyZWFkX2Fib3J0X2luZm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9s c24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9n ZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jCmluZGV4IDMxZjczODFmMmQuLmRlZDQ2YTkzMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODQ2LDcgKzI4NDYsOCBAQCBS ZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVm ZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbiwKKwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJU WE4gKnR4bjsKIApAQCAtMjg1Nyw2ICsyODU4LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4 biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJv cnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1v dGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikp CiAJewpAQCAtMjkzMSw3ICsyOTM0LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQpCiAgKiB0byB0aGlzIHhp ZCBtaWdodCByZS1jcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGluY29tcGxldGVseS4KICAqLwogdm9p ZAotUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQlUaW1lc3RhbXBUeiBh Ym9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjk0Miw2ICsyOTQ2 LDggQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJ dHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAq LwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCQlyYi0+c3RyZWFtX2Fib3J0KHJiLCB0 eG4sIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpp bmRleCA5NGU4MTNhYzUzLi5kYWVlYTZjYzE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTE0LDcgKzE0LDcgQEAKICAqCSAgVGhlIGluaXRpYWwg ZGF0YSBzeW5jaHJvbml6YXRpb24gaXMgZG9uZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHRhYmxlLAog ICoJICBpbiBhIHNlcGFyYXRlIGFwcGx5IHdvcmtlciB0aGF0IG9ubHkgZmV0Y2hlcyB0aGUgaW5p dGlhbCBzbmFwc2hvdCBkYXRhCiAgKgkgIGZyb20gdGhlIHB1Ymxpc2hlciBhbmQgdGhlbiBzeW5j aHJvbml6ZXMgdGhlIHBvc2l0aW9uIGluIHRoZSBzdHJlYW0gd2l0aAotICoJICB0aGUgbWFpbiBh cHBseSB3b3JrZXIuCisgKgkgIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgogICoKICAqCSAgVGhl cmUgYXJlIHNldmVyYWwgcmVhc29ucyBmb3IgZG9pbmcgdGhlIHN5bmNocm9uaXphdGlvbiB0aGlz IHdheToKICAqCSAgIC0gSXQgYWxsb3dzIHVzIHRvIHBhcmFsbGVsaXplIHRoZSBpbml0aWFsIGRh dGEgc3luY2hyb25pemF0aW9uCkBAIC0xNTMsNyArMTUzLDcgQEAgZmluaXNoX3N5bmNfd29ya2Vy KHZvaWQpCiAJCQkJCWdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsK IAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIEZpbmQgdGhlIG1haW4gYXBwbHkg d29ya2VyIGFuZCBzaWduYWwgaXQuICovCisJLyogRmluZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgc2lnbmFsIGl0LiAqLwogCWxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBJbnZhbGlkT2lkKTsKIAogCS8qIFN0b3AgZ3JhY2VmdWxseSAqLwpA QCAtNjA5LDcgKzYwOSw4IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dS ZWNQdHIgY3VycmVudF9sc24pCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJ CQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxS ZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJ CQkJCSByc3RhdGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJ CQkJCQloZW50cnktPmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTYz MCw2ICs2MzEsMTQgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0 ciBjdXJyZW50X2xzbikKIHZvaWQKIHByb2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBj dXJyZW50X2xzbikKIHsKKwkvKgorCSAqIFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YmVjYXVzZSB0aGV5IG9ubHkgb3BlcmF0ZSBvbiB0YWJsZXMgdGhhdAorCSAqIGFyZSBpbiBhIFJF QURZIHN0YXRlLiBTZWUgcGFfY2FuX3N0YXJ0KCkgYW5kCisJICogc2hvdWxkX2FwcGx5X2NoYW5n ZXNfZm9yX3JlbCgpLgorCSAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJ cmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5n X3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI0Nyw3ICsxMjU2LDcg QEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykK IAogCS8qCiAJICogSGVyZSB3ZSB1c2UgdGhlIHNsb3QgbmFtZSBpbnN0ZWFkIG9mIHRoZSBzdWJz Y3JpcHRpb24gbmFtZSBhcyB0aGUKLQkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBtYWluIGFwcGx5IHdvcmtlciwKKwkgKiBhcHBsaWNhdGlvbl9u YW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy LAogCSAqIHNvIHRoYXQgc3luY2hyb25vdXMgcmVwbGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRo ZW0uCiAJICovCiAJTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9CkBAIC0xMjk1LDcgKzEzMDQsNyBA QCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQog CQkgKiB0aW1lIHRoaXMgdGFibGVzeW5jIHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlk ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3Jp Z2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAK QEAgLTE0MDYsNyArMTQxNSw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRy ICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1 ZSAvKiBXQUwgbG9nICovICk7CiAJCVVubG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2lu UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsK IAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCkBAIC0x NDYxLDggKzE0NzAsOCBAQCBjb3B5X3RhYmxlX2RvbmU6CiAJU3BpbkxvY2tSZWxlYXNlKCZNeUxv Z2ljYWxSZXBXb3JrZXItPnJlbG11dGV4KTsKIAogCS8qCi0JICogRmluYWxseSwgd2FpdCB1bnRp bCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kIHRoZW4KLQkg KiByZXR1cm4gdG8gbGV0IExvZ2ljYWxSZXBBcHBseUxvb3AgZG8gaXQuCisJICogRmluYWxseSwg d2FpdCB1bnRpbCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBh bmQKKwkgKiB0aGVuIHJldHVybiB0byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KIAkg Ki8KIAl3YWl0X2Zvcl93b3JrZXJfc3RhdGVfY2hhbmdlKFNVQlJFTF9TVEFURV9DQVRDSFVQKTsK IAlyZXR1cm4gc2xvdG5hbWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YwppbmRleCA5Njc3MmU0ZDczLi5jM2Y4YWJiMzA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDEyIEBACiAgKiBTVFJFQU1FRCBUUkFOU0FD VElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25z IChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICog dXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBk YXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0 IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFw cGxpZWQgdXNpbmcgb25lIG9mIHR3byBhcHByb2FjaGVzOgorICoKKyAqIDEpIFdyaXRlIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAq CisgKiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJz Y3JpcHRpb24ncyBzdHJlYW1pbmcKKyAqIG9wdGlvbiBhcyBvbi4KICAqCiAgKiBVbmxpa2UgdGhl IHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rp b25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBUaGlzCkBAIC01MCw2ICs1NCwxMiBAQAogICogdGhl IGZpbGUgd2UgZGVzaXJlZCBhY3Jvc3MgbXVsdGlwbGUgc3RyZWFtLW9wZW4gY2FsbHMgZm9yIHRo ZSBzYW1lCiAgKiB0cmFuc2FjdGlvbi4KICAqCisgKiAyKSBQYXJhbGxlbCBhcHBseSB3b3JrZXJz LgorICoKKyAqIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhl IHN1YnNjcmlwdGlvbidzIHN0cmVhbWluZworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBTZWUgbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgZm9yIGluZm9ybWF0aW9uIGFib3V0CisgKiB0aGlz IGFwcHJvYWNoLgorICoKICAqIFRXT19QSEFTRSBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqIFR3byBwaGFzZSB0cmFuc2FjdGlvbnMgYXJlIHJlcGxheWVkIGF0IHBy ZXBhcmUgYW5kIHRoZW4gY29tbWl0dGVkIG9yCkBAIC0xNTAsNiArMTYwLDcgQEAKICNpbmNsdWRl ICJleGVjdXRvci9leGVjUGFydGl0aW9uLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgi CiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5o IgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0yMzMsNyArMjQ0LDM5IEBAIHR5cGVkZWYg c3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwogCWNoYXIJICAgKm9yaWdpbl9uYW1lOwogfSBB cHBseUVycm9yQ2FsbGJhY2tBcmc7CiAKLXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBw bHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KKy8qCisgKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0 aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVSX0FQUExZOgorICogVGhpcyBhY3Rp b24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5n ZXMgb2YgdGhlCisgKiB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29y a2VyLgorICoKKyAqIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisgKiBUaGlzIGFjdGlvbiBtZWFu cyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jCisg KiB3b3JrZXIuIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVu IGFwcGxpZWQgd2hlbiB0aGUKKyAqIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBh cmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIG5lZWQgdG8gc2VuZAorICogdGhlIGNo YW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBUUkFOU19QQVJBTExF TF9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YKKyAqIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBw bGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0KK3sKKwkvKiBU aGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFE RVJfQVBQTFksCisKKwkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLwor CVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUws CisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30gVHJhbnNBcHBseUFjdGlvbjsKKworLyogZXJyY29u dGV4dCB0cmFja2VyICovCitBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJh Y2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEwsCkBAIC0yNDMsNyArMjg2 LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19h cmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4dCBB cHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKK0Vycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9l cnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VD b250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyog cGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNjIs MTcgKzMwNywyNiBAQCBzdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNl OwogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgYXBwbGllZCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgZHVyaW5nIG9uZSBzdHJlYW1pbmcKKyAqIGJsb2NrLgorICovCitzdGF0aWMg dWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CisKIC8qCiAgKiBXZSBlbmFibGUg c2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBl dGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidz IGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tp cHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2Vz IG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRl ZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBk dXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICog ZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0 LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwK KyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5j ZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5n ZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICog Y2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFw cGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhl IG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAq IGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB3aGVuIHVzaW5nCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2Ugd2Ug Y2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUgYXBwbHlpbmcKKyAqIHRoZSBjaGFuZ2Vz LiBTbywgd2UgZG9uJ3Qgc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoZW4gZmluaXNoIExT TiBpcyBzZXQKKyAqIGJ5IHRoZSB1c2VyLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hh Y3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19j aGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hf bHNuKSkpCkBAIC0zMjAsMTUgKzM3NCwxMCBAQCBzdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmls ZSh2b2lkKTsKIAogc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3Ms IGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIAotc3RhdGljIHZvaWQgc3RvcmVfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKLQotc3RhdGljIHZvaWQgbWF5YmVf cmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKK3N0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0 aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24pOwogCiBzdGF0 aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyogcHJvdG90eXBl IG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rp c3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRf aW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lk IGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwK IAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM2MSwxMCArNDEwLDI2IEBA IHN0YXRpYyB2b2lkIHN0b3Bfc2tpcHBpbmdfY2hhbmdlcyh2b2lkKTsKIHN0YXRpYyB2b2lkIGNs ZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogCiAvKiBG dW5jdGlvbnMgZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCi1zdGF0aWMgdm9pZCBhcHBseV9l cnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9l cnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0 YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAK K3N0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoq d2luZm8pOworCisvKgorICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlci4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X3dvcmtlcl9uYW1lKHZv aWQpCit7CisJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2ljYWwg cmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciIpOworCWVsc2UgaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKTsKKwllbHNlCisJCXJldHVybiBfKCJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciIpOworfQorCiAvKgogICogRm9ybSB0aGUgb3JpZ2luIG5h bWUgZm9yIHRoZSBzdWJzY3JpcHRpb24uCiAgKgpAQCAtMzk0LDE5ICs0NTksNDMgQEAgUmVwbGlj YXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAgKgog ICogVGhpcyBpcyBtYWlubHkgbmVlZGVkIGZvciBpbml0aWFsIHJlbGF0aW9uIGRhdGEgc3luYyBh cyB0aGF0IHJ1bnMgaW4KICAqIHNlcGFyYXRlIHdvcmtlciBwcm9jZXNzIHJ1bm5pbmcgaW4gcGFy YWxsZWwgYW5kIHdlIG5lZWQgc29tZSB3YXkgdG8gc2tpcAotICogY2hhbmdlcyBjb21pbmcgdG8g dGhlIG1haW4gYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgorICogY2hh bmdlcyBjb21pbmcgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9m IGEgdGFibGUuCiAgKgogICogTm90ZSB3ZSBuZWVkIHRvIGRvIHNtYWxsZXIgb3IgZXF1YWxzIGNv bXBhcmlzb24gZm9yIFNZTkNET05FIHN0YXRlIGJlY2F1c2UKICAqIGl0IG1pZ2h0IGhvbGQgcG9z aXRpb24gb2YgZW5kIG9mIGluaXRpYWwgc2xvdCBjb25zaXN0ZW50IHBvaW50IFdBTAogICogcmVj b3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUg Q09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlz IHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdp bikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJl IGJlaW5nIGFwcGxpZWQgaW4gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIsIHdlIGRpc2Fs bG93IGFwcGx5aW5nIGNoYW5nZXMgaWYgdGhlIHRhcmdldCB0YWJsZSBpbiB0aGUKKyAqIHN1YnNj cmlwdGlvbiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlLCBiZWNhdXNlIHdlIGNhbm5vdCBkZWNp ZGUgd2hldGhlciB0bworICogYXBwbHkgdGhlIGNoYW5nZSBhcyB3ZSB3b24ndCBrbm93IHJlbW90 ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGlz IGluIHBhX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25pbmcgdGhlCisgKiBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIHdvcmtlciwgYnV0IGl0IGFsc28gbmVlZHMgdG8gYmUK KyAqIGNoZWNrZWQgaGVyZSBiZWNhdXNlIGlmIHRoZSB1c2VyIGV4ZWN1dGVzIEFMVEVSIFNVQlND UklQVElPTiAuLi4gUkVGUkVTSAorICogUFVCTElDQVRJT04gaW4gcGFyYWxsZWwsIHRoZSBuZXcg dGFibGUgY2FuIGJlIGFkZGVkIHRvIHBnX3N1YnNjcmlwdGlvbl9yZWwKKyAqIHdoaWxlIGFwcGx5 aW5nIHRoaXMgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyBib29sCiBzaG91bGRfYXBwbHlfY2hh bmdlc19mb3JfcmVsKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogewogCWlmIChhbV90YWJs ZXN5bmNfd29ya2VyKCkpCiAJCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkID09IHJl bC0+bG9jYWxyZWxvaWQ7CisJZWxzZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJ eworCQkvKiBXZSBkb24ndCBzeW5jaHJvbml6ZSByZWwncyB0aGF0IGFyZSBpbiB1bmtub3duIHN0 YXRlLiAqLworCQlpZiAocmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfUkVBRFkgJiYKKwkJCXJl bC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1VOS05PV04pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSksCisJCQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRp b24gdHJhbnNhY3Rpb25zIHVzaW5nIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdW50aWwgYWxsIHRh YmxlcyBoYXZlIGJlZW4gc3luY2hyb25pemVkLiIpKSk7CisKKwkJcmV0dXJuIHJlbC0+c3RhdGUg PT0gU1VCUkVMX1NUQVRFX1JFQURZOworCX0KIAllbHNlCiAJCXJldHVybiAocmVsLT5zdGF0ZSA9 PSBTVUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVf U1lOQ0RPTkUgJiYKQEAgLTQ1Miw0MyArNTQxLDg4IEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVwKHZv aWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFuZGxl IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqIEluIHRoZSBzdHJlYW1p bmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2YgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwg Zm9yCisgKiBzZXJpYWxpemUgbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3Ig dGhlIHByb3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgcGFyYWxsZWwgbW9k ZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIHRoZQorICogY2hhbmdlcyB0byBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwg ZGVmaW5lCisgKiBzYXZlcG9pbnRzIGlmIG5lZWRlZC4gKExPR0lDQUxfUkVQX01TR19SRUxBVElP TiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRQorICogbWVzc2FnZXMgd2lsbCBiZSBhcHBsaWVkIGJ5 IGJvdGggbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMp LgogICoKLSAqIElmIGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJl YW1lZCB0cmFuc2FjdGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZv ciB0aGUgcHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICogUmV0dXJucyB0cnVlIGZvciBz dHJlYW1lZCB0cmFuc2FjdGlvbnMgKHdoZW4gdGhlIGNoYW5nZSBpcyBlaXRoZXIgc2VyaWFsaXpl ZAorICogdG8gZmlsZSBvciBzZW50IHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlciksIGZhbHNlIG90 aGVyd2lzZSAocmVndWxhciBtb2RlIG9yCisgKiBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkgcGFy YWxsZWwgYXBwbHkgd29ya2VyKS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgorICogRXhjZXB0aW9u OiBJZiB0aGUgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQgaXMgTE9HSUNBTF9SRVBfTVNHX1JFTEFU SU9OCisgKiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSwgcmV0dXJuIGZhbHNlIGV2ZW4gaWYgdGhl IG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2VudAorICogdG8gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJl cE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7CisJ VHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwlhcHBseV9hY3Rpb24gPSBn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKIAkvKiBu b3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQor CWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4gZmFsc2U7 CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZChzdHJlYW1feGlkKSk7CiAKIAkvKgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIFhJ RCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdlLCBz byBleHRyYWN0IGl0LgogCSAqLwotCXhpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKwljdXJyZW50 X3hpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKIAotCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSkKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGN1cnJlbnRfeGlkKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJ IGVycm1zZ19pbnRlcm5hbCgiaW52YWxpZCB0cmFuc2FjdGlvbiBJRCBpbiBzdHJlYW1lZCByZXBs aWNhdGlvbiB0cmFuc2FjdGlvbiIpKSk7CiAKLQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRo ZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLwotCXN1YnhhY3RfaW5mb19hZGQoeGlk KTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklB TElaRToKKwkJCUFzc2VydChzdHJlYW1fZmQpOworCisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0 IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZv X2FkZChjdXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJl bnQgZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJcmV0dXJu IHRydWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2Vy dCh3aW5mbyk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8K LQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQlwYV9zZW5kX2RhdGEod2luZm8s IHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRl IGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAqIG1lc3NhZ2Vz IGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkJ ICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVuY3Rpb24KKwkJ CSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCXJldHVybiAoYWN0aW9uICE9 IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBf TVNHX1RZUEUpOwogCi0JcmV0dXJuIHRydWU7CisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQlwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgKz0gMTsKKworCQkJLyogRGVmaW5lIGEgc2F2 ZXBvaW50IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQkJcGFfc3RhcnRfc3VidHJhbnMo Y3VycmVudF94aWQsIHN0cmVhbV94aWQpOworCQkJcmV0dXJuIGZhbHNlOworCisJCWRlZmF1bHQ6 CisJCQlBc3NlcnQoZmFsc2UpOworCQkJcmV0dXJuIGZhbHNlOwkJLyogc2lsZW5jZSBjb21waWxl ciB3YXJuaW5nICovCisJfQogfQogCiAvKgpAQCAtOTI2LDggKzEwNjAsMTEgQEAgYXBwbHlfaGFu ZGxlX3ByZXBhcmVfaW50ZXJuYWwoTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSAqcHJlcGFyZV9k YXRhKQogCSAqIEJlZ2luVHJhbnNhY3Rpb25CbG9jayBpcyBuZWNlc3NhcnkgdG8gYmFsYW5jZSB0 aGUgRW5kVHJhbnNhY3Rpb25CbG9jawogCSAqIGNhbGxlZCB3aXRoaW4gdGhlIFByZXBhcmVUcmFu c2FjdGlvbkJsb2NrIGJlbG93LgogCSAqLwotCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwotCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdp biBjb21tYW5kLiAqLworCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJeworCQlCZWdpblRy YW5zYWN0aW9uQmxvY2soKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBs ZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJfQogCiAJLyoKIAkgKiBVcGRh dGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3Qg cG9zaXRpb24KQEAgLTk3NCw3ICsxMTExLDcgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7 CisJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29t bWl0RW5kKTsKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCkBAIC05OTYsNiAr MTEzMywxMiBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBI YW5kbGUgYSBDT01NSVQgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIHRyYW5zYWN0 aW9uLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUg dHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4g SW4gdGhhdCBjYXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICog dG8gZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5z dXJlIGFsbCB0aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBl bmVkIGluIHRoZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBj YW4gY2F1c2UgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8K IHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykK QEAgLTEwMjUsNyArMTE2OCw3IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5n SW5mbyBzKQogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7 CisJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29t bWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3Mg YW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBA IC0xMDM5LDYgKzExODIsMTIgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJ bmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgYSBST0xMQkFDSyBQUkVQQVJFRCBvZiBhIHByZXZpb3Vz bHkgUFJFUEFSRUQgVFJBTlNBQ1RJT04uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQg dG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQg Zm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRy YW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25j dXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBl bmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9yb2xsYmFja19w cmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDgwLDcgKzEyMjksNyBAQCBhcHBseV9oYW5kbGVf cm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZh bHNlKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5k X2xzbik7CisJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRf bHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwpAQCAtMTA5MiwxNyArMTI0MSwxNSBAQCBhcHBseV9oYW5kbGVfcm9sbGJh Y2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQUkVQQVJF LgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwgdGhlIHNw b29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQK ICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZv IHMpCiB7CiAJTG9naWNhbFJlcFByZXBhcmVkVHhuRGF0YSBwcmVwYXJlX2RhdGE7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9u OwogCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChpc19pbl9zdHJlYW1lZF90 cmFuc2FjdGlvbigpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJP VE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gUFJFUEFSRSBt ZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwpAQCAtMTExNiwyNCArMTI2Myw4NCBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAK LQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9u ICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAmd2luZm8pOwogCi0JLyogUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJl cGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5 X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAotCS8qIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2lu dGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMg YmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVk IG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJ CQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3JlX2Zs dXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAK LQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCWluX3JlbW90ZV90cmFuc2FjdGlv biA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFu Z2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxl bCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBj aGFuZ2VzLgorCQkJICovCisJCQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwg QWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0 YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3Jr ZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAq IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5j aWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJCQlwYV93YWl0X2Zvcl94YWN0X2Zp bmlzaCh3aW5mbyk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRf bHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCisJCQkodm9pZCkgcGFfZnJl ZV93b3JrZXIod2luZm8sIHByZXBhcmVfZGF0YS54aWQpOworCisJCQlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJ CQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRs ZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOworCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJTXlQYXJhbGxl bFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX3Nl dF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsK KwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1No YXJlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisKKwkJCWVsb2coREVCVUcxLCAi ZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIFBSRVBBUkUgY29tbWFuZCIpOworCQkJYnJl YWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNjIsNyArMTM2OSw3IEBAIGFwcGx5 X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogCSAqIE9SSUdJTiBtZXNzYWdlIGNhbiBvbmx5 IGNvbWUgaW5zaWRlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBvciBpbnNpZGUKIAkgKiByZW1vdGUg dHJhbnNhY3Rpb24gYW5kIGJlZm9yZSBhbnkgYWN0dWFsIHdyaXRlcy4KIAkgKi8KLQlpZiAoIWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uICYmCisJaWYgKCFpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlv bigpICYmCiAJCSghaW5fcmVtb3RlX3RyYW5zYWN0aW9uIHx8CiAJCSAoSXNUcmFuc2FjdGlvblN0 YXRlKCkgJiYgIWFtX3RhYmxlc3luY193b3JrZXIoKSkpKQogCQllcmVwb3J0KEVSUk9SLApAQCAt MTE3NywyMSArMTM4NCwxNCBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFy dChTdHJpbmdJbmZvIHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKLQlp ZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKGlzX2luX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQg bWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0 YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVh bSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAot CSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4g V2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVz ZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGlu Zm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRs ZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTEyMDUsMzYgKzE0MDUsOTUgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICog SW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQu IFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdv cmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUg dGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRy YW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRy YW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0 YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUg dGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCS8qIFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBm b3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJ cGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChh cHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOworCQkJLyoKKwkJCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0 YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKwkJCSAqIGNvbW1pdHRlZCBvbiB0aGUgc3Ry ZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbgorCQkJICogd2hpY2gg Y2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUKKwkJCSAq IG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZp bGUsCisJCQkgKiB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1 YnhhY3QgaW5mby4KKwkJCSAqLworCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JCU15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQp KTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJ CQkvKgorCQkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2Ug aGF2ZW4ndCB5ZXQuIFRoaXMKKwkJCSAqIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJh dGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdAorCQkJICogaW4gYSBwZXJtYW5lbnQgY29u dGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3QKKwkJCSAqIHN0cmVhbWluZyBt ZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcworCQkJ ICogYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRl IGEKKwkJCSAqIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQg dGhlbiB3ZSB3b24ndCBiZQorCQkJICogc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgor CQkJICovCisJCQlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpCisJCQl7 CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7Ci0JfQorCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwot CXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwg Zmlyc3Rfc2VnbWVudCk7CisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JLyogaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNl Z21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlICovCi0JaWYgKCFmaXJzdF9zZWdtZW50 KQotCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1f eGlkKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJCX0KIAotCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJCQkvKiBPcGVuIHRoZSBz cG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29wZW5fZmlsZShN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKIAot CWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qg c2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJCQlpZiAoIWZpcnN0X3Nl Z21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg c3RyZWFtX3hpZCk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQlicmVhazsKKwor CQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsK KworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorCQkJICogY2FuIGNvbnRpbnVlIHRvIHJlY2VpdmUgY2hh bmdlcy4KKwkJCSAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXBhX3VubG9ja19zdHJl YW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyoKKwkJ CSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2FpdGluZyB0byBi ZQorCQkJICogcHJvY2Vzc2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJ cGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2Nv dW50LCAxKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJ CQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9u LiAqLworCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJ eworCQkJCS8qIEhvbGQgdGhlIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24u ICovCisJCQkJcGFfbG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFS QUxMRUxfVFJBTlNfU1RBUlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9uY2hhbmdl cyA9IDA7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJy ZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7 CiB9CiAKIC8qCkBAIC0xMjQzLDU4ICsxNTAyLDEwMSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0 YXJ0KFN0cmluZ0luZm8gcykKIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3Ao U3RyaW5nSW5mbyBzKQogewotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9u OworCisJaWYgKCFpc19pbl9zdHJlYW1lZF90cmFuc2FjdGlvbigpKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNn X2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsK IAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBz ZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxldmVs IHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCWFwcGx5X2Fj dGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsK IAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2Vy dChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQlj YXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0g dHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qCisJCQkg KiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZQor CQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KKwkJCSAqLworCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVh bWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJh bnNhY3Rpb24gc3RhdGUgKi8KKwkJCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKLQkv KiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNh bFN0cmVhbWluZ0NvbnRleHQpOworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0 aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJLyogUmVzZXQgcGVy LXN0cmVhbSBjb250ZXh0ICovCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWlu Z0NvbnRleHQpOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwp OworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJ CUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBMb2NrIGJlZm9yZSBzZW5kaW5nIHRoZSBT VFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlcgorCQkJICogY2FuIGhvbGQgdGhl IGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0CisJCQkg KiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxvY2suIFNlZSBMb2NraW5nIENvbnNpZGVyYXRp b25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqLworCQkJcGFfbG9j a19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJ cGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlwYV9zZXRfc3RyZWFt X2FwcGx5X3dvcmtlcihOVUxMKTsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9J RExFLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJ CQllbG9nKERFQlVHMSwgImFwcGxpZWQgJXUgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5r IiwKKwkJCQkgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzKTsKKworCQkJLyoKKwkJCSAqIEJ5IHRo ZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBwcm9jZXNzaW5nIHRoZSBjaGFuZ2VzIGlu CisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxvY2ssIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxlIHN0cmVhbWluZyBibG9ja3MuIFRoaXMg Y2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciBzdGFydCB3YWl0aW5nIGV2 ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBzdHJlYW1zCisJCQkgKiBpbiB0aGUgcXVl dWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJlIGlzIG5vIG1lc3NhZ2UgbGVmdAorCQkJ ICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBh cHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmIChwZ19hdG9taWNfc3ViX2ZldGNo X3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpID09IDApCisJ CQl7CisJCQkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFy ZUxvY2spOworCQkJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nl c3NTaGFyZUxvY2spOworCQkJfQorCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lE TEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3Nl cnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBm YWxzZTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFN IGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUg dHJhbnNhY3Rpb24gd2FzIHNlcmlhbGl6ZWQgdG8gZmlsZS4KICAqLwogc3RhdGljIHZvaWQKLWFw cGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc3RyZWFtX2Fib3J0X2ludGVy bmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2Fj dGlvbklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3Nh Z2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fi b3J0KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRo ZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0 IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9 PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxp ZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxOCw4ICsxNjIwLDYgQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0g ZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwog CQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQ0LDcgKzE2NDQsNiBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7 CiAJCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7Ci0JCQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJ fQogCkBAIC0xMzY3LDYgKzE2NjYsMTA4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Uu CisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dp Y2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCWJvb2wJCXRvcGxl dmVsX3hhY3Q7CisKKwlpZiAoaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24oKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJ IGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RP UCIpKSk7CisKKwkvKiBXZSByZWNlaXZlIGFib3J0IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBj YW4gYXBwbHkgaW4gcGFyYWxsZWwuICovCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChz LCAmYWJvcnRfZGF0YSwKKwkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBw bHkpOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4 aWQ7CisJdG9wbGV2ZWxfeGFjdCA9ICh4aWQgPT0gc3VieGlkKTsKKworCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlhcHBseV9h Y3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZvKTsKKworCXN3 aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgor CisJCQkvKgorCQkJICogV2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUg dHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLwor CQkJc3RyZWFtX2Fib3J0X2ludGVybmFsKHhpZCwgc3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJ CQkvKgorCQkJICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiwgdW5sb2NrIHRoZQorCQkJICogc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGNhbiBjb250aW51ZQorCQkJICogdG8gcmVjZWl2ZSBhbmQgYXBwbHkg Y2hhbmdlcy4KKwkJCSAqCisJCQkgKiBYWFggRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBz dWJ0cmFuc2FjdGlvbiwgd2Ugb25seQorCQkJICogaW5jcmVtZW50IHRoZSBudW1iZXIgb2Ygc3Ry ZWFtaW5nIGJsb2NrcyB3aXRob3V0IHJlbGVhc2luZyB0aGUKKwkJCSAqIGxvY2suIFRoaXMgbWF5 IHNsaWdodGx5IGRlbGF5IHRoZSBwcm9jZXNzaW5nIG9mIFNUUkVBTV9BQk9SVAorCQkJICogbWVz c2FnZSBhcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1heSBhbHJlYWR5IGJlIHdhaXRpbmcg b24KKwkJCSAqIGEgbG9jayBhZnRlciBwcm9jZXNzaW5nIFNUUkVBTV9TVE9QIG1lc3NhZ2UgYnV0 IGNhbiBlbnN1cmUgdGhhdAorCQkJICogdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdh aXQgb24gdGhlIGxvY2sgZm9yIHRoZSBuZXh0CisJCQkgKiBzZXQgb2YgY2hhbmdlcyBhZnRlciBw cm9jZXNzaW5nIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBpZiBpdAorCQkJICogaXMgbm90IGFs cmVhZHkgd2FpdGluZyBmb3IgU1RSRUFNX1NUT1AgbWVzc2FnZS4KKwkJCSAqLworCQkJaWYgKHRv cGxldmVsX3hhY3QpCisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOworCQkJZWxzZQorCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTMyKCZ3aW5mby0+c2hhcmVk LT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIEFCT1JUIG1l c3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KKwkJCXBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQkJKHZv aWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvLCB4aWQpOworCisJCQlicmVhazsKKworCQljYXNlIFRS QU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKwor CQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRv IHNhdmVwb2ludCBmb3IgdGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJ CSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBwcm9jZXNzaW5nIHRoZSBj aGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxvY2ssIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxlIHN0cmVhbWluZyBibG9j a3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciBzdGFydCB3 YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBzdHJlYW1zCisJCQkgKiBp biB0aGUgcXVldWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJlIGlzIG5vIG1lc3NhZ2Ug bGVmdAorCQkJICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9w CisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxf eGFjdCAmJgorCQkJCXBnX2F0b21pY19zdWJfZmV0Y2hfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5w ZW5kaW5nX3N0cmVhbV9jb3VudCwgMSkgPT0gMCkKKwkJCXsKKwkJCQlwYV9sb2NrX3N0cmVhbShN eVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJcGFfdW5sb2NrX3N0 cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9CisKKwkJ CWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIEFCT1JUIGNvbW1h bmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJl YWs7CisJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDk4 LDggKzE4OTksMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQog ewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRh OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFw cGx5X2FjdGlvbjsKIAotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoaXNfaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24oKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFN IENPTU1JVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwpAQCAtMTUwNywxNCArMTkx MCw2NyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0g bG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQll bG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUi LCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlk LCAmd2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VSSUFMSVpFOgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRv IGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkg Ki8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNu KTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1 YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0 YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0 aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgor CQkJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLworCQkJ cGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKiBTZW5k IFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLwor CQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICog QWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3YWl0 IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBt YWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8g dHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgorCQkJICovCisJ CQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0 aW9uKGNvbW1pdF9kYXRhLmVuZF9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2VuZCk7 CisKKwkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKworCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50 ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRf ZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxs ZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2Fj dGlvbih4aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisK KwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIENPTU1JVCBj b21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJ CWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5j aHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRf ZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTgsOSArMjAxNCwxNiBAQCBhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAog CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2Nr KCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0J CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuKTsKKwkJc3RvcmVfZmx1 c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAl9 CiAJZWxzZQogCXsKQEAgLTI1MTEsNyArMjk3NCw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShT dHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdl IGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShz KTsKQEAgLTI2NzYsMTYgKzMxMzksMjMgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIg KndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKICAqIFN0b3JlIGN1cnJlbnQgcmVtb3RlL2xvY2Fs IGxzbiBwYWlyIGluIHRoZSB0cmFja2luZyBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotc3RvcmVf Zmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQorc3RvcmVfZmx1c2hfcG9zaXRp b24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbikKIHsKIAlGbHVz aFBvc2l0aW9uICpmbHVzaHBvczsKIAorCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkg d29ya2VycywgYmVjYXVzZSB0aGUgbHNuX21hcHBpbmcgaXMgbWFpbnRhaW5lZAorCSAqIGJ5IHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3Jr ZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250 ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKIAkvKiBUcmFj ayBjb21taXQgbHNuICAqLwogCWZsdXNocG9zID0gKEZsdXNoUG9zaXRpb24gKikgcGFsbG9jKHNp emVvZihGbHVzaFBvc2l0aW9uKSk7Ci0JZmx1c2hwb3MtPmxvY2FsX2VuZCA9IFhhY3RMYXN0Q29t bWl0RW5kOworCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9sc247CiAJZmx1c2hwb3MtPnJl bW90ZV9lbmQgPSByZW1vdGVfbHNuOwogCiAJZGxpc3RfcHVzaF90YWlsKCZsc25fbWFwcGluZywg JmZsdXNocG9zLT5ub2RlKTsKQEAgLTI3NDQsNiArMzIxNCw3IEBAIExvZ2ljYWxSZXBBcHBseUxv b3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBw bHlfZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0 X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBwbHlfZXJy b3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlzIG91dGVy IGxvb3AgaXRlcmF0ZXMgb25jZSBwZXIgd2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjg0Niw3ICsz MzE3LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJ CS8qIGNvbmZpcm0gYWxsIHdyaXRlcyBzbyBmYXIgKi8KIAkJc2VuZF9mZWVkYmFjayhsYXN0X3Jl Y2VpdmVkLCBmYWxzZSwgZmFsc2UpOwogCi0JCWlmICghaW5fcmVtb3RlX3RyYW5zYWN0aW9uICYm ICFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJaWYgKCFpbl9yZW1vdGVfdHJhbnNhY3Rpb24g JiYgIWlzX2luX3N0cmVhbWVkX3RyYW5zYWN0aW9uKCkpCiAJCXsKIAkJCS8qCiAJCQkgKiBJZiB3 ZSBkaWRuJ3QgZ2V0IGFueSB0cmFuc2FjdGlvbnMgZm9yIGEgd2hpbGUgdGhlcmUgbWlnaHQgYmUK QEAgLTI5NTgsNiArMzQyOSw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0 X3JlY2VpdmVkKQogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCWFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyogQWxsIGRvbmUgKi8KIAl3YWxy Y3ZfZW5kc3RyZWFtaW5nKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZ0bGkpOwpAQCAtMzA1OCw3 ICszNTMwLDcgQEAgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2Us IGJvb2wgcmVxdWVzdFJlcGx5KQogLyoKICAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5mbyBpZiBu ZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiB7CiAJTWVtb3J5Q29udGV4dCBvbGRj dHg7CkBAIC0zMDg4LDIyICszNTYwLDIyIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCkKIAlpZiAoIW5ld3N1YikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg IgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKLQkJ CQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBp cyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2co IiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3Jp cHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQodHJ1 ZSk7CiAJfQogCiAJLyogRXhpdCBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZC4gKi8K IAlpZiAoIW5ld3N1Yi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxl ZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmly c3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQko ZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlT dWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJf ZXhpdCh0cnVlKTsKIAl9CiAKIAkvKiAhc2xvdG5hbWUgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVu IGVuYWJsZWQgaXMgdHJ1ZS4gKi8KQEAgLTMxMTQsNyArMzU4NiwxMCBAQCBtYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKHZvaWQpCiAKIAkvKgogCSAqIEV4aXQgaWYgYW55IHBhcmFtZXRlciB0aGF0 IGFmZmVjdHMgdGhlIHJlbW90ZSBjb25uZWN0aW9uIHdhcyBjaGFuZ2VkLgotCSAqIFRoZSBsYXVu Y2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlci4KKwkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFy dCBhIG5ldyB3b3JrZXIgYnV0IG5vdGUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3Jr ZXIgd29uJ3QgcmVzdGFydCBpZiB0aGUgc3RyZWFtaW5nIG9wdGlvbidzIHZhbHVlIGlzIGNoYW5n ZWQgZnJvbQorCSAqICdwYXJhbGxlbCcgdG8gYW55IG90aGVyIHZhbHVlIG9yIHRoZSBzZXJ2ZXIg ZGVjaWRlcyBub3QgdG8gc3RyZWFtIHRoZQorCSAqIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uLgog CSAqLwogCWlmIChzdHJjbXAobmV3c3ViLT5jb25uaW5mbywgTXlTdWJzY3JpcHRpb24tPmNvbm5p bmZvKSAhPSAwIHx8CiAJCXN0cmNtcChuZXdzdWItPm5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1l KSAhPSAwIHx8CkBAIC0zMTI1LDExICszNjAwLDE3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCkKIAkJbmV3c3ViLT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3duZXIgfHwKIAkJ IWVxdWFsKG5ld3N1Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25z KSkKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNl IG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsK KwkJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5n ZSIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQo TE9HLAorCQkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJ CQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19l eGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCh0cnVlKTsKIAl9CiAKIAkvKiBDaGVjayBmb3Ig b3RoZXIgY2hhbmdlcyB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdG9vLiAqLwpAQCAtMzQxNCw3 ICszODk1LDcgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCBib29sIGZpcnN0X3NlZ21lbnQpCiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCU1lbW9yeUNv bnRleHQgb2xkY3h0OwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKKwlBc3Nl cnQoaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24oKSk7CiAJQXNzZXJ0KE9pZElzVmFsaWQoc3Vi aWQpKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CiAJQXNzZXJ0KHN0cmVh bV9mZCA9PSBOVUxMKTsKQEAgLTM0NjAsNyArMzk0MSw3IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lk IHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogc3RhdGljIHZv aWQKIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKTsKKwlBc3NlcnQoaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24oKSk7CiAJQXNzZXJ0 KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkICE9 IE5VTEwpOwogCkBAIC0zNDgzLDcgKzM5NjQsNyBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIg YWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7CiAJaW50CQkJbGVuOwogCi0JQXNzZXJ0KGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKTsKKwlBc3NlcnQoaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24oKSk7 CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3Ry ZWFtX2ZkICE9IE5VTEwpOwogCkBAIC0zNjEzLDM3ICs0MDk0LDE2IEBAIHN0YXJ0X2FwcGx5KFhM b2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNh bCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21tb24g aW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBpbi1t ZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgorICov CiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBwbHlX b3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9h cmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFM RU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0J Y2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25z OwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQlsb2dp Y2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFsIGhh bmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2Fk KTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2ln bmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VP d25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2UgY291 bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0JLyog SW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdvcmtl ci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0K LQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp OwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9maWxl KCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lv biByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNh dGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY3MSwxMCArNDEzMSwxMSBAQCBBcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbikKIAl7CiAJCWVyZXBv cnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1 YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkKSkpOwotCQlwcm9jX2V4aXQoMCk7CisJCS8qIHRyYW5zbGF0b3I6ICVz IGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1z ZygiJXMgZm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJz Y3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9u YW1lKCksIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpKSk7CisKKwkJYXBwbHlfd29ya2VyX2V4 aXQoZmFsc2UpOwogCX0KIAogCU15U3Vic2NyaXB0aW9uVmFsaWQgPSB0cnVlOwpAQCAtMzY4Mywx MSArNDE0NCwxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1 YnNjcmlwdGlvbi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdp bGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2Fi bGVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkv KiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg bm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0 YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoZmFsc2UpOwogCX0KIAog CS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3aXNo ZXMgKi8KQEAgLTM3MDIsMTMgKzQxNjMsNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShl cnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxpZCkpKSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFt ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAot CQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2Fs IFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJ bnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1Jl Y1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNs b3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2Vy dmVyX3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlw cXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFs KFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkv KgorCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2Fs cmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0 ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0 YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2Fk IHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVj ZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5l Y3QgdG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVC VUcxLCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIl c1wiIiwKQEAgLTM3MTgsMjAgKzQyMTUsMTUgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCXsKIAkJc3RhcnRfdGFibGVfc3luYygmb3JpZ2luX3N0YXJ0cG9zLCAmbXlzbG90bmFt ZSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQg Y29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KIAkJUmVwbGlj YXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJ CQkJCSAgIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJICAgb3JpZ2lubmFt ZSwKIAkJCQkJCQkJCQkgICBzaXplb2Yob3JpZ2lubmFtZSkpOwotCQlhcHBseV9lcnJvcl9jYWxs YmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwK LQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4g YXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8K IAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJ Y2hhcgkgICAqZXJyOwpAQCAtMzc1NSw3ICs0MjQ3LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0 cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9y aWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVw bG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwpAQCAtMzc3MywxMiArNDI2NSw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKIAkJICovCiAJCSh2b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKExvZ1JlcFdv cmtlcldhbFJjdkNvbm4sICZzdGFydHBvaW50VExJKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0 aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0J CSAqIG1lc3NhZ2UuCi0JCSAqLwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25h bWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkg ICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5h bWUpOwogCX0KIAogCS8qCkBAIC0zNzk2LDEzICs0MjgzLDM2IEBAIEFwcGx5V29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9u KExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192 ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAg PyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNp b24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlM T0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1 YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25z LnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCS8q CisJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWluZyBv cHRpb24gYWNjb3JkaW5nIHRvCisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJs aXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2ZXJf dmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBTVUJTVFJF QU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9 IHBzdHJkdXAoInBhcmFsbGVsIik7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBw bHkgPSB0cnVlOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgJiYKKwkJ CSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVBTV9PRkYpCisJeworCQlvcHRpb25z LnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IHBzdHJkdXAoIm9uIik7CisJCU15TG9naWNh bFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBOVUxMOworCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCiAJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBz dHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM4NTEsNyArNDM2MSw3IEBAIEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkvKiBSdW4gdGhlIG1haW4gbG9vcC4gKi8K IAlzdGFydF9hcHBseShvcmlnaW5fc3RhcnRwb3MpOwogCi0JcHJvY19leGl0KDApOworCWFwcGx5 X3dvcmtlcl9leGl0KGZhbHNlKTsKIH0KIAogLyoKQEAgLTM4ODcsNyArNDM5Nyw3IEBAIERpc2Fi bGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCiAJCQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVz XCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJz Y3JpcHRpb24tPm5hbWUpKTsKIAotCXByb2NfZXhpdCgwKTsKKwlhcHBseV93b3JrZXJfZXhpdChm YWxzZSk7CiB9CiAKIC8qCkBAIC0zODk5LDYgKzQ0MDksMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZv aWQpCiAJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlciAhPSBOVUxMOwogfQogCisvKgorICogSXMg Y3VycmVudCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXI/CisgKi8KK2Jvb2wKK0lzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCkKK3sKKwly ZXR1cm4gSXNMb2dpY2FsV29ya2VyKCkgJiYgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCk7Cit9 CisKIC8qCiAgKiBTdGFydCBza2lwcGluZyBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0 aGUgZ2l2ZW4gTFNOIG1hdGNoZXMgdGhlCiAgKiBMU04gc3BlY2lmaWVkIGJ5IHN1YnNjcmlwdGlv bidzIHNraXBsc24uCkBAIC0zOTA4LDcgKzQ0MjcsNyBAQCBtYXliZV9zdGFydF9za2lwcGluZ19j aGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIHsKIAlBc3NlcnQoIWlzX3NraXBwaW5nX2No YW5nZXMoKSk7CiAJQXNzZXJ0KCFpbl9yZW1vdGVfdHJhbnNhY3Rpb24pOwotCUFzc2VydCghaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24pOworCUFzc2VydCghaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24oKSk7CiAKIAkvKgogCSAqIFF1aWNrIHJldHVybiBpZiBpdCdzIG5vdCByZXF1ZXN0ZWQgdG8g c2tpcCB0aGlzIHRyYW5zYWN0aW9uLiBUaGlzCkBAIC0zOTYxLDcgKzQ0ODAsNyBAQCBjbGVhcl9z dWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogCVhMb2dSZWNQdHIJ bXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJYm9vbAkJc3RhcnRlZF90eCA9 IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpKQor CWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSB8fCBhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUo KSkKQEAgLTQwMzMsNyArNDU1Miw3IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9n UmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxiYWNrIHRvIGdpdmUgbW9yZSBj b250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBsaWVkICovCi1zdGF0aWMgdm9p ZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogewogCUFwcGx5RXJyb3JD YWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKQEAgLTQwNjEs MjMgKzQ1ODAsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCQkgICBl cnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlz aF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKLQkJZXJy Y29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwi JXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJl bGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAot CQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5 cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5h bWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFy Zy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNu KSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNh Y3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1l LAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVz W2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJ CSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwl7CisJCWlmIChlcnJh cmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChl cnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRh dGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVz XCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rp b24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5h bWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRl eHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIg ZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlv biBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJ CSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3Bu YW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo ZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIl c1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVz XCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJ CQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkg ICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5h bWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQp OworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJl cGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFu c2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5f bmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCks CisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJl bW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7 CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBl cnJvciBjYWxsYmFjayAqLwpAQCAtNDA5NywzICs0NjQwLDc1IEBAIHJlc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZW1vdGVfYXR0 bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChJbnZhbGlkVHJhbnNhY3Rp b25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICogQWxsb2NhdGUgdGhlIG9yaWdp biBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dCBtZXNzYWdlLgor ICovCit2b2lkCitzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFt ZSkKK3sKKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250 ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOwor fQorCisvKgorICogUmV0dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5z YWN0aW9uLiAqd2luZm8gaXMgYXNzaWduZWQgdG8KKyAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxl bCB3b3JrZXIgaW5mbyAoaWYgdGhlIGFjdGlvbiBpcworICogVFJBTlNfTEVBREVSX1NFTkRfVE9f UEFSQUxMRUwpLCBvdGhlcndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKi8KK3N0YXRp YyBUcmFuc0FwcGx5QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0 aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9 IE5VTEw7CisKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlyZXR1cm4g VFJBTlNfUEFSQUxMRUxfQVBQTFk7CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90cmFuc2FjdGlv bikKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfQVBQTFk7CisJfQorCisJLyoKKwkgKiBDaGVj ayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwg YXBwbHkKKwkgKiB3b3JrZXIuCisJICovCisJKndpbmZvID0gcGFfZmluZF93b3JrZXIoeGlkKTsK KworCWlmICgqd2luZm8pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw7CisJfQorCWVsc2UKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0K K30KKworLyoKKyAqIEV4aXQgcm91dGluZSBmb3IgYXBwbHkgd29ya2VyLgorICovCit2b2lkCith cHBseV93b3JrZXJfZXhpdChib29sIG9uX3N1YmluZm9fY2hhbmdlKQoreworCWlmIChhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSAmJiBvbl9zdWJpbmZvX2NoYW5nZSkKKwl7CisJCS8qCisJCSAq IElmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGluZyBkdWUgdG8gYSBzdWJz Y3JpcHRpb24KKwkJICogaW5mb3JtYXRpb24gY2hhbmdlLCB3ZSBub3RpZnkgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgc28gdGhhdCBpdCBjYW4KKwkJICogcmVwb3J0IGEgbW9yZSBtZWFuaW5nZnVs IG1lc3NhZ2UgYmVmb3JlIHJlc3RhcnRpbmcgdGhlIGxvZ2ljYWwKKwkJICogcmVwbGljYXRpb24u CisJCSAqLworCQlwcV9wdXRtZXNzYWdlKCdYJywgTlVMTCwgMCk7CisJfQorCisJcHJvY19leGl0 KDApOworfQorCisvKiBBcmUgd2UgcHJvY2Vzc2luZyBzdHJlYW1lZCB0cmFuc2FjdGlvbj8gKi8K K2Jvb2wKK2lzX2luX3N0cmVhbWVkX3RyYW5zYWN0aW9uKHZvaWQpCit7CisJcmV0dXJuIGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKaW5kZXggY2E0NmZiYTNhZi4uYjAzMGZkNWE1NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAg LTI5MCw3ICsyOTEsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQ R091dHB1dERhdGEgKmRhdGEpCiAJYm9vbAkJb3JpZ2luX29wdGlvbl9naXZlbiA9IGZhbHNlOwog CiAJZGF0YS0+YmluYXJ5ID0gZmFsc2U7Ci0JZGF0YS0+c3RyZWFtaW5nID0gZmFsc2U7CisJZGF0 YS0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlkYXRhLT5tZXNzYWdlcyA9IGZhbHNlOwog CWRhdGEtPnR3b19waGFzZSA9IGZhbHNlOwogCkBAIC0zNjksNyArMzcwLDcgQEAgcGFyc2Vfb3V0 cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCQkJCQkJ IGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOwogCQkJc3RyZWFt aW5nX2dpdmVuID0gdHJ1ZTsKIAotCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihk ZWZlbCk7CisJCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsK IAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAw KQogCQl7CkBAIC00NjEsMTMgKzQ2MiwyMCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiB3ZSBvbmx5 IGFsbG93IGl0IHdpdGggc3VmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdo ZW4KIAkJICogdGhlIG91dHB1dCBwbHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAqLwotCQlpZiAoIWRh dGEtPnN0cmVhbWluZykKKwkJaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJTVFJFQU1fT0ZGKQog CQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVy c2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChk YXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09OICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3Zl cnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAog CQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0 IHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIiLAogCQkJCQkJCWRhdGEtPnByb3RvY29sX3Zl cnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKSkpOworCQllbHNlIGlm IChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX1BBUkFMTEVMICYmCisJCQkJIGRhdGEtPnBy b3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9O X05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0l ZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIi LAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlmICghY3R4LT5zdHJlYW1pbmcpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKQEAgLTE4NDEsNiArMTg0OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRf bHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEg PSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJCXdy aXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCk7 CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJs b2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0LDkgQEAgcGdvdXRwdXRfc3Ry ZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJi dHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0 eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4 bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5v dXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4bi0+eGFj dF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1Z2luV3Jp dGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZh bHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3ZjI3Li43 YzAwOWQ1MjVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMiw2ICsy Miw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAt NjU3LDYgKzY1OCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQog CWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5k bGVMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBS T0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlSW50ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRl eCAxMDQzMDY4YmFjLi4yZjE3MWY1NTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTEx MTcsNiArMTExNyw0NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lk LCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9k ZSwgdHJ1ZSk7CiB9CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisg KgorICogT2J0YWluIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcg YXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNlZSBMb2Nr UmVsYXRpb25JZEZvclNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxldmVsIGxv Y2tzLgorICovCit2b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9p ZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBs b2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FD VElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJ CQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0 YWcsIGxvY2ttb2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFu c2FjdGlvbkZvclNlc3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJ CQkJIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFH X0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJ CSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVs ZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlw dGlvbiBvZiBhIGxvY2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEsMTMgQEAg RGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJ CQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwog CQkJYnJlYWs7CisJCWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2Ny aXB0aW9uICV1IG9mIGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMs CisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVs ZDEpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJ CQkJCQkgXygidW5yZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmlu ZGV4IDMwODIwOTNkMWUuLmY1MmU1YmFlZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzksNiAr MzM3OSw5IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4 dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAo UGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBiMmFiZDc1ZGRiLi4xZmFiNDVlNzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jCkBAIC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdh aXRFdmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01B SU46CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJ CWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9u YW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlU X0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2Fs U3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9p cGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19S RUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJ YnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NI QU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7 CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZl bnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9j a2Z1bmNzLmMKaW5kZXggZjliMzI0ZWZlYy4uM2JmMDQ4MzFmMyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9s b2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdU eXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNlcmxvY2siLAot CSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgogfTsKIAotU3Rh dGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19BRFZJ U09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9 PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIp OwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0VHlwZSAocHJl ZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRl eCAxYmYxNGVlYzY2Li45MWYwNDc5MTk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwpAQCAtMjk4MSw2ICsyOTgxLDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVz SW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBM SUNBVElPTl9TVUJTQ1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2Yg cGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJ fSwKKwkJJm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIs IDAsIE1BWF9QQVJBTExFTF9XT1JLRVJfTElNSVQsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAor CiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAog CQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBm b3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5j b25mLnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZQppbmRleCAwNDM4NjQ1OTdmLi4yMmIwMmU2NTRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNTksNiArMzU5LDcgQEAKICNtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9j ZXNzZXMKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRp b25fd29ya2VycworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g PSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYWQ2NjkzYzM1OC4uZmVjNmQyMWMy OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCkBAIC00NTE2LDcgKzQ1MTYsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFy Y2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCkBAIC00NjUzLDggKzQ2NTMsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpm b3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5m by0+c3ViYmluYXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAi LCBiaW5hcnkgPSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYi KSAhPSAwKQorCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1 YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4 IDJlYWU1MTliMWQuLjc0MGIxMzUyNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02NDk5LDExICs2NDk5LDI0IEBA IGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2Up CiAJewogCQkvKiBCaW5hcnkgbW9kZSBhbmQgc3RyZWFtaW5nIGFyZSBvbmx5IHN1cHBvcnRlZCBp biB2MTQgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDApCisJCXsK IAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIl c1wiXG4iCi0JCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAotCQkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJCaW5hcnkiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikp OworCQkJCQkJCSAgIiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRf bm9vcCgiQmluYXJ5IikpOworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCAoQ0FTRSBzdWJzdHJlYW1cbiIK KwkJCQkJCQkJICAiICAgIFdIRU4gJ2YnIFRIRU4gJ29mZidcbiIKKwkJCQkJCQkJICAiICAgIFdI RU4gJ3QnIFRIRU4gJ29uJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAncCcgVEhFTiAncGFyYWxs ZWwnXG4iCisJCQkJCQkJCSAgIiAgIEVORCkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRl eHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZi dWYsCisJCQkJCQkJCSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJICBnZXR0 ZXh0X25vb3AoIlN0cmVhbWluZyIpKTsKKwkJfQogCiAJCS8qIFR3b19waGFzZSBhbmQgZGlzYWJs ZV9vbl9lcnJvciBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdjE1IGFuZCBoaWdoZXIgKi8KIAkJaWYg KHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKaW5kZXggN2I5ODcxNGYzMC4uMDE2YWZiYzIwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYx MDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJ Ym9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQog CQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJ c3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFy CQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiBTZWUKKwkJ CQkJCQkJICogU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFz ZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMjQsNyAr MTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8q IEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5h cnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJ CQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVh bWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFs bG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBT VUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxv dyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVy cjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAq IGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzks MjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBv cmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2RlZmluZSBTVUJTVFJFQU1fT0ZGICdmJworCisvKgor ICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBhIHRl bXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09OICd0Jwor CisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBp bW1lZGlhdGVseSB2aWEgYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCisjZGVmaW5l IFNVQlNUUkVBTV9QQVJBTExFTCAncCcKKwogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vic2Ny aXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2b2lkIEZyZWVTdWJz Y3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1YnNjcmlw dGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2Ny aXB0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCmlu ZGV4IDJjYmU3ZDdiNjUuLjc3OTQ3NGY1NjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmgKQEAgLTI2LDQgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgRHJvcFN1YnNjcmlwdGlv bihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiBP YmplY3RBZGRyZXNzIEFsdGVyU3Vic2NyaXB0aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lk IG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcl9vaWQoT2lk IHN1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiAKK2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01v ZGUoRGVmRWxlbSAqZGVmKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNVQlNDUklQVElPTkNNRFNfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIx ZTI1Li5kNTEzZWY1MzNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5j X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBw bHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4o RGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRl eCAxZWI3ZGRhNTI5Li40ZmEyYmQzN2RlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09Q SEFTRV9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAq IHN1cHBvcnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSku IEludHJvZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJB TExFTF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVy ZSB3ZSBzdXBwb3J0IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFy YWxsZWwuCisgKiBJbnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9Q Uk9UT19NSU5fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05f TlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9W RVJTSU9OX05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJT SU9OX05VTSA0CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2Fs IG1lc3NhZ2UgdHlwZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNh bFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dp Y2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90 b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNh Y3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJv cnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu KTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJ CQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2Miwx MyBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5m byBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNh bHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExv Z2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVw X3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0J CQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVw X3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJ CQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9u SWQgc3VieGlkLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJ ICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9p bmZvKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwK KwkJCQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJ CQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaAppbmRleCBjZDFiNmU4YWZjLi5kYzY4Y2Q4OWM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oCkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09S S0VSX0gKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKwor ZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVz c2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2Fy Zyk7CitleHRlcm4gdm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7 CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9n aWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlcyh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAppbmRleCAyYTUwZDEwYjUyLi5jN2IxYWRmZmY1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4gWExvZ1Jl Y1B0ciByZXBsb3JpZ2luX2dldF9wcm9ncmVzcyhSZXBPcmlnaW5JZCBub2RlLCBib29sIGZsdXNo KTsKIAogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciBy ZW1vdGVfY29tbWl0LAogCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwotZXh0 ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpOworZXh0 ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBh Y3F1aXJlZF9ieSk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7 CiBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wg Zmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5o IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCAwMjAyNzU1MGUyLi4z YzMwZGE4MjA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAgLTI2LDcgKzI2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFt ZXM7CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJl YW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19w aGFzZTsKIAljaGFyCSAgICpvcmlnaW47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmgKaW5kZXggYjIzZDhjYzRmOS4uYjJhNzAyOWVlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzAxLDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFJl b3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3Rh bXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3Rf dGltZTsKIAogCS8qCkBAIC02NjMsOSArNjY0LDExIEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJBc3NpZ25DaGlsZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0Q2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRy IGNvbW1pdF9sc24sCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCSAg IFRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0 T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQpOwot ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJG b3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz biwKKwkJCQkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKTsKIAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlclNldEJhc2VTbmFwc2hv dChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaAppbmRleCA5MzM5ZjI5MzAzLi4wYzhiYmRkYWJlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBlZGVmIHN0 cnVjdAogCQkJdWludDMyCQlwcm90b192ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNp b24gKi8KIAkJCUxpc3QJICAgKnB1YmxpY2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlzdCBvZiBw dWJsaWNhdGlvbnMgKi8KIAkJCWJvb2wJCWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0byB1c2Ug YmluYXJ5ICovCi0JCQlib29sCQlzdHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFu c2FjdGlvbnMgKi8KKwkJCWNoYXIJICAgKnN0cmVhbWluZ19zdHI7CS8qIFN0cmVhbWluZyBvZiBs YXJnZSB0cmFuc2FjdGlvbnMgKi8KIAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1pbmcgb2Yg dHdvLXBoYXNlIHRyYW5zYWN0aW9ucyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1lICovCiAJ CQljaGFyCSAgICpvcmlnaW47IC8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20g dGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDJiNzEx NGZmNmQuLmNlMzA3ZDNhMTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dv cmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCkBAIC0xNyw4ICsxNywxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUv dGltZXN0YW1wLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0LmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIKKyNpbmNs dWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKIAogCkBA IC02MCw2ICs2NCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJICovCiAJ RmlsZVNldCAgICAqc3RyZWFtX2ZpbGVzZXQ7CiAKKwkvKgorCSAqIFBJRCBvZiBsZWFkZXIgYXBw bHkgd29ya2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhIHBhcmFsbGVsIGFwcGx5CisJICog d29ya2VyLCBJbnZhbGlkUGlkIG90aGVyd2lzZS4KKwkgKi8KKwlwaWRfdAkJYXBwbHlfbGVhZGVy X3BpZDsKKworCS8qIEluZGljYXRlcyB3aGV0aGVyIGFwcGx5IGNhbiBiZSBwZXJmb3JtZWQgaW4g cGFyYWxsZWwuICovCisJYm9vbAkJcGFyYWxsZWxfYXBwbHk7CisKIAkvKiBTdGF0cy4gKi8KIAlY TG9nUmVjUHRyCWxhc3RfbHNuOwogCVRpbWVzdGFtcFR6IGxhc3Rfc2VuZF90aW1lOwpAQCAtNjgs OSArODEsODkgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6 IHJlcGx5X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qCisgKiBTdGF0ZSBvZiB0aGUg dHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRoZSBlbnVtIHZh bHVlcyBtdXN0IGhhdmUgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5zYWN0aW9uIHN0YXRlCisg KiB0cmFuc2l0aW9ucy4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQorewor CVBBUkFMTEVMX1RSQU5TX1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwKKwlQQVJB TExFTF9UUkFOU19GSU5JU0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisgKiBTdHJ1 Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFu ZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25J ZCB4aWQ7CisKKwkvKgorCSAqIFN0YXRlIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4K KwkgKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxM RUxfVFJBTlNfRklOSVNIRUQgYWZ0ZXIKKwkgKiBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmlu aXNoIGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBsZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0 IHRvIGJlY29tZSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgor CSAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVB TV9QUkVQQVJFKS4KKwkgKi8KKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCS8q IEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90 LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dp Y2FscmVwX3dvcmtlcl9zbG90X25vOworCisJLyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVy ZSBhcmUgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tzIGluIHRoZSBxdWV1ZS4gVGhlCisJICogcGFy YWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sgaXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQu CisJICovCisJcGdfYXRvbWljX3VpbnQzMiBwZW5kaW5nX3N0cmVhbV9jb3VudDsKKworCS8qCisJ ICogWGFjdExhc3RDb21taXRFbmQgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlz IGlzIHJlcXVpcmVkIHRvCisJICogdXBkYXRlIHRoZSBsc25fbWFwcGluZ3MgYnkgbGVhZGVyIHdv cmtlci4KKwkgKi8KKwlYTG9nUmVjUHRyCWxhc3RfY29tbWl0X2VuZDsKK30gUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdoaWNoIGlzIHVzZWQgdG8gbWFu YWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRsZSAqbXFfaGFuZGxlOworCisJLyoK KwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBw YXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkg Ki8KKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVudCAqZHNt X3NlZzsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2VyIGlzIGJlaW5nIHVzZWQgdG8gcHJv Y2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rpb24uIEZhbHNlIGluZGljYXRlcyB0 aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKwkgKi8KKwlib29sCQlpbl91c2U7 CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7Cit9IFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBl cm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1l bW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29u dGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250 ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKK2V4dGVybiBQR0RMTElN UE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkOworCiAvKiBs aWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2Fs UmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBAIC04NCwxMyArMTc3LDE2 IEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRl cm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9p ZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBMaXN0ICps b2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKTsKLWV4 dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBj b25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCk7Citl eHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwg Y29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJ CQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pOwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsK IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9p ZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBzdWJp ZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lk IHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgICBjaGFyICpvcmlnaW5uYW1lLCBTaXpl IHN6b3JpZ2lubmFtZSk7CkBAIC0xMDMsMTAgKzE5OSw2MiBAQCBleHRlcm4gdm9pZCBwcm9jZXNz X3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52 YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJ CQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2go U3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKTsKKworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpOworCisvKiBG dW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vy cm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitleHRlcm4gdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSk7CisKK2V4dGVybiB2b2lkIGFwcGx5X3dvcmtl cl9leGl0KGJvb2wgb25fc3ViaW5mb19jaGFuZ2UpOworZXh0ZXJuIGJvb2wgaXNfaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24odm9pZCk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBh bmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNh Y3Rpb25JZCB4aWQpOworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dv cmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gYm9vbCBwYV9mcmVlX3dvcmtlcihQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2 b2lkIHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CisKK2V4dGVybiB2b2lkIHBhX3NlbmRf ZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJ IGNvbnN0IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgcGFfd2FpdF9mb3JfeGFjdF9maW5pc2go UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndzaGFyZWQpOworCitleHRlcm4gdm9pZCBwYV9zZXRf eGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCSAg UGFyYWxsZWxUcmFuc1N0YXRlIGluX3hhY3QpOworZXh0ZXJuIHZvaWQgcGFfc2V0X3N0cmVhbV9h cHBseV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKKworZXh0ZXJuIHZv aWQgcGFfc3RhcnRfc3VidHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rp b25JZCB0b3BfeGlkKTsKK2V4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpOworZXh0 ZXJuIHZvaWQgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0 X2RhdGEpOworCitleHRlcm4gdm9pZCBwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwg TE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3N0cmVhbShUcmFuc2Fj dGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworCitleHRlcm4gdm9pZCBwYV9sb2NrX3Ry YW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4g dm9pZCBwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxv Y2ttb2RlKTsKKworI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtl ciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29s CiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dp Y2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVy X2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVw V29ya2VyLT5yZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVw V29ya2VyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29y a2VyKHZvaWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBX b3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s bWdyLmgKaW5kZXggYmUxZDJjOTlhOS4uNWEzYmQwM2JhNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEw Nyw2ICsxMDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lk IGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2Nr U2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jq c3ViaWQsCiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9j a0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJu IHZvaWQgVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2Rl KTsKKwogLyogRGVzY3JpYmUgYSBsb2NrdGFnIGZvciBlcnJvciBtZXNzYWdlcyAqLwogZXh0ZXJu IHZvaWQgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvbG9jay5oCmluZGV4IGU0ZTE0OTViMjQuLjc3NjYxMjNhN2IgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9j ay5oCkBAIC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVmIGVudW0gTG9ja1RhZ1R5cGUKIAlMT0NL VEFHX1NQRUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxhdGl2ZSBpbnNlcnRpb24gWGlkIGFuZCB0 b2tlbiAqLwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBub24tcmVsYXRpb24gZGF0YWJhc2Ugb2Jq ZWN0ICovCiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiByZXNlcnZlZCBmb3Igb2xkIGNvbnRyaWIv dXNlcmxvY2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNPUlkJCQkvKiBhZHZpc29yeSB1c2VyIGxv Y2tzICovCisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJ TE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9u IGEgbG9naWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyICovCiB9IExvY2tU YWdUeXBlOwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQURWSVNPUlkKKyNk ZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgogCiBleHRl cm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgTG9ja1RhZ1R5cGVOYW1lc1tdOwogCkBA IC0yNzgsNiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExPQ0tUQUcKIAkgKGxvY2t0YWcpLmxv Y2t0YWdfdHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwKIAkgKGxvY2t0YWcpLmxvY2t0YWdfbG9j a21ldGhvZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisvKgorICogSUQgaW5mbyBmb3IgYSByZW1v dGUgdHJhbnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIgaXM6IERC CisgKiBPSUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJBTlNBQ1RJT04gSUQgKyBPQkpJRAorICov CisjZGVmaW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vi b2lkLHhpZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9ja3RhZ19maWVsZDEgPSAoZGJvaWQpLCBc CisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChzdWJvaWQpLCBcCisJIChsb2NrdGFnKS5s b2NrdGFnX2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChv YmppZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNB Q1RJT04sIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gREVGQVVMVF9MT0NL TUVUSE9EKQogCiAvKgogICogUGVyLWxvY2tlZC1vYmplY3QgbG9jayBpbmZvcm1hdGlvbjoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5MDBmMy4uOTNhNTFmNDI1NCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJP Q1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBm b3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGlu dGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQg dG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01F U1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBS ZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9E QVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCAwYjIxMDBiZTRhLi43NjNmYmVhZGZi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQog CVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZ X01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4sCisJV0FJVF9FVkVOVF9M T0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RS RUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlW RVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hB U0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNf RUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVCwKKwlXQUlUX0VW RU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9H SUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAog CVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNj cmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOGRjZi4uMWVkNmY0YzM5YyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3LDcgKzExNyw3IEBAIEhJTlQ6 ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9Q IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEVSUk9S OiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVyICJm b29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNl KTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi Mix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwg MC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpAQCAtMTcwLDcgKzE3 MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6IDAvMAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVi bGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMjA1LDcgKzIwNSw3 IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dyaXRlLCByZW1vdGVf YXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1w bGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlv dSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZhbHNlKTsKQEAgLTI1 MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz bG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsK LS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5n IG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJ Q0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwot RVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVh bWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgogLS0gbm93IGl0IHdv cmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVj dCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2Fz IGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYsNyArMjY2LDE1IEBAIEhJTlQ6 ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz dHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1 YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAxLDcgQEAgRVJST1I6ICBwdWJs aWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rl c3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi LHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHVi Mn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBtb3Jl IHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBAIC0zNTAsNyArMzU4LDcgQEAg SElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUg dGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAg ICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBv cHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zNzUs NyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM5MSw3ICszOTks NyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNy ZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK IC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKQEAgLTM5OSw3ICs0MDcs NyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9l cnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vi c2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5k ZXggZWFlYWRlOGNjZS4uNzk5MWFiZmU4ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRp b24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWls IC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1p bmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUsMTAgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBhMmRmZDVjOWRhLi5hNjExNTIwYmM4IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3MSw2ICsxNDcxLDcgQEAgTG9naWNhbFJlcFJl bElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJl cFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dp Y2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xNjYy LDYgKzE2NjMsOSBAQCBPdmVycmlkZVN0YWNrRW50cnkKIE92ZXJyaWRpbmdLaW5kCiBQQUNFX0hF QURFUgogUEFDTAorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAogUEFUSAogUEJPT0wKIFBDdHh0SGFuZGxl CkBAIC0xODkzLDYgKzE4OTcsNyBAQCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQYXJhbGxl bFN0YXRlCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGEK K1BhcmFsbGVsVHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxXb3JrZXJD b250ZXh0CiBQYXJhbGxlbFdvcmtlckluZm8KQEAgLTI3ODIsNiArMjc4Nyw3IEBAIFRyYW5zYWN0 aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1ZXNTdGF0 ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFjdGlvbgogVHJnbUFyYwogVHJn bUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v57-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v57-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81988; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:16 GMT" Content-Transfer-Encoding: base64 RnJvbSBkYzZjOWRlZDQ0MTZhMjNlMDU1YTYxZmU5YTUyZDIyNmM4YjQwOTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NTcg My83XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8IDIzMiArKysrKy0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTQzICsr Ky0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAyMjEg KysrKy0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwg MjMzICsrKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMzQgKysrKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5w bCAgICB8IDM5MyArKysrKysrKy0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNl X3N0cmVhbS5wbCAgICAgfCA1NDAgKysrKysrKysrKystLS0tLS0tCiAuLi4vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsICAgICAgICAgfCAxNTIgKysrKysKIDkgZmlsZXMgY2hhbmdl ZCwgMTQwNCBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5w bAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQxZGQ5Mjk1Li5iOTUxZDk3NGFj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9 IHsKICAgICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBfb3JpZ2luLnBsJywK ICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uMzg5NDFm ZmMwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5 IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisK KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNU UkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0 ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1p bmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhl IHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rf c3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJh bnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7 CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJUEM6 OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7 CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElmICJz dHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0 byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVH MSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJ fTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28g aWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor CisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNo ZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZh bHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBi ZWhhdmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNF VCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJv bSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9u cywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0 ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKLQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9y X3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g NTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4gLj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZp bmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVt IGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBp biBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFy YWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2 YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBw dWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQK LSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rp b25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyci Ci0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdo aWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBU SU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1 NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEo NjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBj aGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMuLjM2YTE4MDMwMmIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRp c19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5 cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWlu ZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNr CisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDE2 Njd8MTY2N3wxNjY3KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGlu IHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMiki KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBS ZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30K KwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTI1LDEwIEBAICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpA QCAtNDksNDEgKzE0MSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwy fDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0j IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCki KTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4uNWU3MTY4MjhjZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMzggQEAg dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ CQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFN ICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFs bCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIK KyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3Ry ZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJl YW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVC VUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERN TAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lO OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAy MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoy MDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3Vs dCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERM IGlzIHBlcmZvcm1lZAorCSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2Fj dGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMyw1MDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJ TlQ7CisJQ09NTUlUOworCX0pOworCisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhl IHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJl dmlvdXMgdGVzdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppLCA0KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkp OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVz dWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1Ag Q09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUs MjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24t c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xV TU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQs IG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioy MDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQp LCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4g T25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3 ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUg bmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdv bid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQg dGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUg cHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7 Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAppbmRleCA1NTFmMTZkZjZkLi5iNDA0ZmVkNGI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVB TSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBh bGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmci CisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0 cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3Ry ZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3Ry ZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8g Y2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBS T0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sg VE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAw KSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQ T0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09N TUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3 YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUw MSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDAp LCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4LDgxICsxOTEs MjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotUk9M TEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUw MCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOwotQ09NTUlU OwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7 CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2 aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0 NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0k cmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyYjdhLi5jMDVkODgyMDUy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3Rf ZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwog CisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor c3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkk b2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNh bWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNw ZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5U OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVs X2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsK KworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0p OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSwzNSArMTM4LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7 Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMz OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwx MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJh bGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1 YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4u NDkwMjI2M2Q2NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNl X2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDIzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk c3RyZWFtaW5nX21vZGUsICR0eXBlKSA9IEBfOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlw ZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15 ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJ V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsK KworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVf Qi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0Mt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZv ciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0Ig RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVy eV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUg dG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1 cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxs ZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9D LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9m ZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQ UkVQQVJFCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK KworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9C LCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUsICdQUkVQQVJFJyk7CisK KwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9C KTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQg PSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0 aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJl dmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJv dy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3Mg KD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo ZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+bG9n ZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJIyAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn b3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsK KworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIo cykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0 aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxl ZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQg PQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAn Zm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVz ZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVz dWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycp OworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1p bmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9CLT5y ZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorfQorCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIv c3ViIG5vZGVzLgogIyBub2RlX0EgLT4gbm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDky LDE1IEBAIGlzKCRyZXN1bHQsIHFxKDIxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOwogIyAyUEMgKyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAKLW15ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwot bXkgJG9sZHBpZF9DID0gJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9n aWNhbCByZXBsaWNhdGlvbiAoc3RyZWFtaW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3Ry ZWFtaW5nID0gb24pOyIpOwotJG5vZGVfQy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQot IyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVf QS0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xk cGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9x dWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERh dGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0 IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3Jp YmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0jIFRoZW4gMlBDIFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwg JG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBv biBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0 cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD Jyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9t IHByZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3Jl IHJvdy4KLSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KLSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgotIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRh dGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0g MiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0 ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGgg YSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwg J2Zvb2JhcicpOwotCVNBVkVQT0lOVCBzcF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FW RVBPSU5UIHNwX2lubmVyOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQot JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSks ICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09N TUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0 ZXInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVf Qi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNr IGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1l ZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0j ICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIg d2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRl ZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMo JHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3Vs dCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsK LSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBh cmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcp OwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xl YW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK aW5kZXggOWI0NTQxMDZiZC4uYzk2NmFjOTRkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYgKzgsMzA4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21t YW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEu IERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMg InBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZl IHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAg dXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFS RSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIg cm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBz dHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1 YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAy UEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQ UkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6 IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNo ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9k ZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNvbW1pdCBwb3N0 IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZp c2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRl ZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJB Q0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRl ciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjCisJ IyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0 aGUgc3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQ QVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUg b2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3Rp bGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBh cmF0ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKwor CSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWIn OyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBi dXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0 ZWQKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0 IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJF RC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgor CSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQ QVJFLgorCSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBD IGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVy ZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJ IyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtl IHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNv bW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwzMzM1fDMz MzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQp IGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1ZXJ5KQog ICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIGVuYWJs ZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRh dGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0 YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZp bmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExC QUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwot Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBDIENPTU1J VCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0jIDEuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5vdGU6IGJv dGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3QgdGhlIHJl c3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQ UkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBj b21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5T 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 U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxf cXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04i OwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVh bnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJh bGxlbF9jb25mbGljdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4x MGVmZDJkMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v57-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v57-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=9712; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:17 GMT" Content-Transfer-Encoding: base64 RnJvbSA1MzI5ODg4NjNkYmYyNWNmMjVjZTAyMWQ0NjZlMDM3ZTFmYTYwNzFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VGh1LCAxIERlYyAyMDIyIDExOjI3OjMyICswODAwClN1YmplY3Q6IFtQQVRDSCB2NTcgNC83XSBB ZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJpYWxpemluZyBt ZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAg ICAgICAgICAgICB8IDMyICsrKysrKysrKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMgfCA1NCArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgOSArKysrCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgfCAxNCArKysrKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgIDQgKysKIC4uLi90LzAzMl9zdHJl YW1fcGFyYWxsZWxfY29uZmxpY3QucGwgICAgICAgICB8IDI5ICsrKysrKysrKysKIDYgZmlsZXMg Y2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRl eCBkNjViNjdmOGU1Li5mZTM3Mjc3YjQzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMTU2Niw2ICsxMTU2Niwz OCBAQCBMT0c6ICBDbGVhblVwTG9jazogZGVsZXRpbmc6IGxvY2soMHhiN2FjZDg0NCkgaWQoMjQ2 ODgsMjQ2OTYsMCwwLDAsMSkKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdHJlYW0tc2VyaWFsaXplLXRocmVzaG9s ZCIgeHJlZmxhYmVsPSJzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCI+CisgICAgICA8dGVybT48 dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFybmFtZT4gKDx0eXBlPmludGVn ZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5z dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0 ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRm9yY2VzIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyB0byBmaWxlcyBhZnRlcgorICAgICAgICBzZW5k aW5nIHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nIGNodW5rcyB0byB0aGUgcGFyYWxsZWwg YXBwbHkKKyAgICAgICAgd29ya2VyLiBTZXR0aW5nIHRoaXMgdG8gemVybyBzZXJpYWxpemUgYWxs IG1lc3NhZ2VzLiBBIHZhbHVlIG9mCisgICAgICAgIDxsaXRlcmFsPi0xPC9saXRlcmFsPiAodGhl IGRlZmF1bHQpIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gVGhpcyBpcworICAgICAgICBpbnRlbmRl ZCB0byB0ZXN0IHNlcmlhbGl6YXRpb24gdG8gZmlsZXMgd2l0aAorICAgICAgICA8bGl0ZXJhbD5z dHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorCisgICAgICAg PHBhcmE+CisgICAgICAgIFdoZW4gbG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gPGxp dGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgICAgICBwYXJhbWV0ZXIgaXMgc2V0IHRvIDxs aXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAgICAg ICAgc2VuZHMgbWVzc2FnZXMgdG8gcGFyYWxsZWwgd29ya2VycyB3aXRoIGEgdGltZW91dC4gQnkg ZGVmYXVsdCwgdGhlCisgICAgICAgIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZXJpYWxpemUg dGhlIHJlbWFpbmluZyBtZXNzYWdlcyB0byBmaWxlcyBpZgorICAgICAgICB0aGUgdGltZW91dCBp cyBleGNlZWRlZC4gSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIGFueSB2YWx1ZSBvdGhlciB0aGFu CisgICAgICAgIDxsaXRlcmFsPi0xPC9saXRlcmFsPiwgc2VyaWFsaXplIHRvIGZpbGVzIGV2ZW4g d2l0aG91dCB0aW1lb3V0LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAg ICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhlIDxmaWxlbmFtZT5wb3N0Z3Jl c3FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFu ZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2VjdDE+CiAgIDxzZWN0MSBpZD0i cnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCAxZmQ2M2Q4YmZmLi5jZmQyNzM4 NzY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjUyLDYgKzI1Miw5IEBAIHN0YXRpYyBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAvKiBBIGxpc3QgdG8gbWFp bnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCiBzdGF0aWMgTGlzdAkgICAqc3VieGFj dGxpc3QgPSBOSUw7CiAKKy8qIEdVQyB2YXJpYWJsZSAqLworaW50CQlzdHJlYW1fc2VyaWFsaXpl X3RocmVzaG9sZCA9IC0xOworCiBzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CiBzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBh X2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOwogCkBA IC0xMTc4LDMyICsxMTgxLDQzIEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhLAogCiAJZm9yICg7OykKIAl7 Ci0JCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwg dHJ1ZSwgdHJ1ZSk7CisJCWJvb2wgZm9yY2Vfc2VyaWFsaXplID0gKHN0cmVhbV9zZXJpYWxpemVf dGhyZXNob2xkICE9IC0xICYmCisJCQkJCQkJCShzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA9 PSAwIHx8CisJCQkJCQkJCSBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA8IHBhcmFsbGVsX3N0 cmVhbV9uY2h1bmtzKSk7CiAKLQkJaWYgKHJlc3VsdCA9PSBTSE1fTVFfU1VDQ0VTUykKLQkJCWJy ZWFrOwotCQllbHNlIGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFDSEVEKQotCQkJZXJlcG9ydChF UlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCi0JCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9y eSBxdWV1ZSIpKSk7CisJCWlmICghZm9yY2Vfc2VyaWFsaXplKQorCQl7CisJCQlyZXN1bHQgPSBz aG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUpOwog Ci0JCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JMT0NLKTsKKwkJCWlmIChyZXN1bHQg PT0gU0hNX01RX1NVQ0NFU1MpCisJCQkJYnJlYWs7CisJCQllbHNlIGlmIChyZXN1bHQgPT0gU0hN X01RX0RFVEFDSEVEKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CiAKLQkJLyogV2FpdCBi ZWZvcmUgcmV0cnlpbmcuICovCi0JCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAotCQkJCQkgICBT SE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUywKLQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BB UkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisJCQlBc3NlcnQocmVzdWx0ID09IFNITV9NUV9X T1VMRF9CTE9DSyk7CiAKLQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQl7Ci0JCQlSZXNldExh dGNoKE15TGF0Y2gpOwotCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCS8qIFdhaXQgYmVm b3JlIHJldHJ5aW5nLiAqLworCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCSAgIFdM X0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJICAg U0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxf UEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VU KQorCQkJeworCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwkJCX0KKworCQkJaWYgKHN0YXJ0VGltZSA9PSAwKQorCQkJCXN0YXJ0VGltZSA9IEdl dEN1cnJlbnRUaW1lc3RhbXAoKTsKIAkJfQorCQllbHNlIGlmIChzdHJlYW1fc2VyaWFsaXplX3Ro cmVzaG9sZCAhPSAwKQorCQkJcGFyYWxsZWxfc3RyZWFtX25jaHVua3MgPSAwOwogCi0JCWlmIChz dGFydFRpbWUgPT0gMCkKLQkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKLQkJ ZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBHZXRDdXJyZW50 VGltZXN0YW1wKCksCisJCWlmIChmb3JjZV9zZXJpYWxpemUgfHwKKwkJCVRpbWVzdGFtcERpZmZl cmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAogCQkJCQkJCQkJ CQlTSE1fU0VORF9USU1FT1VUX01TKSkKIAkJewogCQkJU3RyaW5nSW5mb0RhdGEgbXNnOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggM2QyOWU1NWYyNC4uYzc5 YjI2NjJjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0z MjYsNiArMzI2LDEyIEBAIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKICAqLwogc3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5n ZXMgPSAwOwogCisvKgorICogVGhlIG51bWJlciBvZiBzdHJlYW1pbmcgY2h1bmtzIHNlbnQgYnkg bGVhZGVyIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lCisgKiBzdHJlYW1lZCB0cmFuc2FjdGlvbi4g VGhpcyBpcyBvbmx5IHVzZWQgd2hlbiBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA+IDAuCisg Ki8KK3VpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNodW5rcyA9IDA7CisKIC8qCiAgKiBXZSBlbmFi bGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRF LCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlv bidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KQEAgLTE1NTYsNiArMTU2Miw5 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAorCQkJaWYgKHN0 cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMCkKKwkJCQlwYXJhbGxlbF9zdHJlYW1fbmNodW5r cysrOworCiAJCQkvKgogCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhh dCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAJCQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2 ZSBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA5MWYwNDc5MTk0 Li45NzdmYmU0ZjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNjEsNiAr NjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1 ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgi CisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTI5OTMsNiArMjk5NCwxOSBAQCBzdHJ1Y3QgY29u ZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAK Kwl7CisJCXsic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiLCBQR0NfU0lHSFVQLCBERVZFTE9Q RVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgiRm9yY2VzIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyAiCisJCQkJCQkgInRvIGZpbGVzIGFmdGVyIHNlbmRp bmcgc3BlY2lmaWVkIGFtb3VudCBvZiBzdHJlYW1pbmcgIgorCQkJCQkJICJjaHVua3MgaW4gc3Ry ZWFtaW5nIHBhcmFsbGVsIG1vZGUuIiksCisJCQlnZXR0ZXh0X25vb3AoIkEgdmFsdWUgb2YgLTEg ZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiIpLAorCQkJR1VDX05PVF9JTl9TQU1QTEUKKwkJfSwKKwkJ JnN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkLAorCQktMSwgLTEsIElOVF9NQVgsCisJCU5VTEws IE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQ LCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGlt ZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmgKaW5kZXggN2Q2NzZmNmRjNy4uNTE0YTI3MzJhMCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIxMSw2ICsyMTEsMTAgQEAgZXh0ZXJu IFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOwogCitleHRlcm4gUEdE TExJTVBPUlQgaW50IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkOworCitleHRlcm4gUEdETExJ TVBPUlQgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzOworCiBleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIg KmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJ CQlib29sIG9ubHlfcnVubmluZyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbAppbmRleCAxMGVmZDJkMzc2Li42MmQ1 OGNlYzNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3Bh cmFsbGVsX2NvbmZsaWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1fcGFyYWxsZWxfY29uZmxpY3QucGwKQEAgLTE0Niw2ICsxNDYsMzUgQEAgJHJlc3VsdCA9CiAg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CiAKKyMgQ2xlYW4gdXAgdGVz dCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg VGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworIyBTZXQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgdG8gemVybywgc28gdGhlIG1lc3Nh Z2VzIHdpbGwgYmUgc2VyaWFsaXplZCB0byBkaXNrLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJJ0FMVEVSIFNZU1RFTSBTRVQgc3RyZWFtX3NlcmlhbGl6ZV90aHJl c2hvbGQgPSAwOycpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKSIpOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8g b3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZz ZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNr Jyk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0005-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v57-0005-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v57-0005-Allow-streaming-every-change-without-waiting-til.patch"; size=5441; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:18 GMT" Content-Transfer-Encoding: base64 RnJvbSBkOWE1ZTQwODFkMWYzZDJmY2EyZjYyZTUxMWM4NzUyYTZmYTgwNzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDUvN10g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s ICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKwogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMzEgKysrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTAgKysrKysrCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMSArCiA0IGZp bGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmlu ZGV4IGZlMzcyNzdiNDMuLjFhYzA0YjY4NTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNTk4LDYgKzExNTk4 LDIyIEBAIExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgy NDY4OCwyNDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50 cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWZvcmNlLXN0cmVhbS1tb2RlIiB4cmVm bGFiZWw9ImZvcmNlX3N0cmVhbV9tb2RlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmZvcmNlX3N0 cmVhbV9tb2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0 ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9tb2RlPC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBT cGVjaWZpZXMgd2hlYXRoZXIgdG8gZm9yY2Ugc2VuZGluZyB0aGUgY2hhbmdlcyB0byBvdXRwdXQg cGx1Z2luCisgICAgICAgIGltbWVkaWF0ZWx5IGluIHN0cmVhbWluZyBtb2RlLiBJZiBzZXQgdG8g PGxpdGVyYWw+b2ZmPC9saXRlcmFsPiAodGhlCisgICAgICAgIGRlZmF1bHQpLCBzZW5kIHVudGls IDx2YXJuYW1lPmxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW08L3Zhcm5hbWU+IGlzCisgICAgICAg IGV4Y2VlZGVkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2VjdDE+CiAgIDxzZWN0MSBp ZD0icnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBkZWQ0NmE5MzI0Li4wZDU3Nzg3ZmMwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAt MjA5LDYgKzIwOSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyRGlza0NoYW5nZQog aW50CQkJbG9naWNhbF9kZWNvZGluZ193b3JrX21lbTsKIHN0YXRpYyBjb25zdCBTaXplIG1heF9j aGFuZ2VzX2luX21lbW9yeSA9IDQwOTY7IC8qIFhYWCBmb3IgcmVzdG9yZSBvbmx5ICovCiAKKy8q CisgKiBXaGVhdGhlciB0byBzZW5kIHRoZSBjaGFuZ2UgdG8gb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4KKyAqIFdoZW4gaXQgaXMgb2ZmLCB3YWl0IHVudGlsIGxv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCisgKi8KK2Jvb2wJCWZvcmNlX3N0 cmVhbV9tb2RlOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqIHByaW1hcnkgcmVvcmRlcmJ1ZmZlciBzdXBwb3J0IHJvdXRpbmVzCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM1MzMsMjAgKzM1MzksMjkgQEAgUmVv cmRlckJ1ZmZlckNoZWNrTWVtb3J5TGltaXQoUmVvcmRlckJ1ZmZlciAqcmIpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCi0JLyogYmFpbCBvdXQgaWYgd2UgaGF2ZW4ndCBleGNlZWRlZCB0 aGUgbWVtb3J5IGxpbWl0ICovCi0JaWYgKHJiLT5zaXplIDwgbG9naWNhbF9kZWNvZGluZ193b3Jr X21lbSAqIDEwMjRMKQorCS8qCisJICogU3RyZWFtIHRoZSBjaGFuZ2VzIGltbWVkaWF0ZWx5IGlm IGZvcmNlX3N0cmVhbV9tb2RlIGlzIG9uIGFuZCB0aGUgb3V0cHV0CisJICogcGx1Z2luIHN1cHBv cnRzIHN0cmVhbWluZy4gT3RoZXJ3aXNlIHdhaXQgdW50aWwgc2l6ZSBleGNlZWRzCisJICogbG9n aWNhbF9kZWNvZGluZ193b3JrX21lbS4KKwkgKi8KKwlib29sIGZvcmNlX3N0cmVhbSA9IChmb3Jj ZV9zdHJlYW1fbW9kZSAmJiBSZW9yZGVyQnVmZmVyQ2FuU3RyZWFtKHJiKSk7CisKKwkvKiBiYWls IG91dCBpZiBmb3JjZV9zdHJlYW0gaXMgZmFsc2UgYW5kIHdlIGhhdmVuJ3QgZXhjZWVkZWQgdGhl IG1lbW9yeSBsaW1pdCAqLworCWlmICghZm9yY2Vfc3RyZWFtICYmIHJiLT5zaXplIDwgbG9naWNh bF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRMKQogCQlyZXR1cm47CiAKIAkvKgotCSAqIExvb3Ag dW50aWwgd2UgcmVhY2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gIE9uZSBtaWdodCB0aGluayB0 aGF0IGp1c3QKLQkgKiBieSBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIHdl IHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5Ci0JICogbGltaXQgYmFzZWQgb24gYXNzdW1wdGlv biB0aGF0IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcwotCSAqIGxhcmdl IGFzIHRoZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBnbyBvdmVyIHRo ZSBtZW1vcnkKLQkgKiBsaW1pdCkuIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUgYmVjYXVzZSBh IHVzZXIgY2FuIHJlZHVjZSB0aGUKKwkgKiBJZiBmb3JjZV9zdHJlYW0gaXMgdHJ1ZSwgbG9vcCB1 bnRpbCB0aGVyZSdzIG5vIGNoYW5nZS4gT3RoZXJ3aXNlLCBsb29wCisJICogdW50aWwgd2UgcmVh Y2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gT25lIG1pZ2h0IHRoaW5rIHRoYXQganVzdCBieQor CSAqIGV2aWN0aW5nIHRoZSBsYXJnZXN0IChzdWIpdHJhbnNhY3Rpb24gd2Ugd2lsbCBjb21lIHVu ZGVyIHRoZSBtZW1vcnkgbGltaXQKKwkgKiBiYXNlZCBvbiBhc3N1bXB0aW9uIHRoYXQgdGhlIHNl bGVjdGVkIHRyYW5zYWN0aW9uIGlzIGF0IGxlYXN0IGFzIGxhcmdlIGFzCisJICogdGhlIG1vc3Qg cmVjZW50IGNoYW5nZSAod2hpY2ggY2F1c2VkIHVzIHRvIGdvIG92ZXIgdGhlIG1lbW9yeSBsaW1p dCkuCisJICogSG93ZXZlciwgdGhhdCBpcyBub3QgdHJ1ZSBiZWNhdXNlIGEgdXNlciBjYW4gcmVk dWNlIHRoZQogCSAqIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gdG8gYSBzbWFsbGVyIHZhbHVl IGJlZm9yZSB0aGUgbW9zdCByZWNlbnQKIAkgKiBjaGFuZ2UuCiAJICovCi0Jd2hpbGUgKHJiLT5z aXplID49IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwl3aGlsZSAoKCFmb3Jj ZV9zdHJlYW0gJiYgcmItPnNpemUgPj0gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRM KSB8fAorCQkgICAoZm9yY2Vfc3RyZWFtICYmIHJiLT5zaXplID4gMCkpCiAJewogCQkvKgogCQkg KiBQaWNrIHRoZSBsYXJnZXN0IHRyYW5zYWN0aW9uIChvciBzdWJ0cmFuc2FjdGlvbikgYW5kIGV2 aWN0IGl0IGZyb20KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxl cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggOTc3ZmJlNGY4 ZC4uZGYwZTMwYjM1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFi bGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTEyNDgs NiArMTI0OCwxNiBAQCBzdHJ1Y3QgY29uZmlnX2Jvb2wgQ29uZmlndXJlTmFtZXNCb29sW10gPQog CQlmYWxzZSwKIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCisJeworCQl7ImZvcmNlX3N0cmVhbV9t b2RlIiwgUEdDX1VTRVJTRVQsIERFVkVMT1BFUl9PUFRJT05TLAorCQkJZ2V0dGV4dF9ub29wKCJG b3JjZSBzZW5kaW5nIHRoZSBjaGFuZ2VzIHRvIG91dHB1dCBwbHVnaW4gaW1tZWRpYXRlbHkgaWYg c3RyZWFtaW5nIGlzIHN1cHBvcnRlZCwgd2l0aG91dCB3YWl0aW5nIHRpbGwgbG9naWNhbF9kZWNv ZGluZ193b3JrX21lbS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfTk9UX0lOX1NBTVBMRQorCQl9LAor CQkmZm9yY2Vfc3RyZWFtX21vZGUsCisJCWZhbHNlLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwK IAogCXsKIAkJeyJsb2dfZHVyYXRpb24iLCBQR0NfU1VTRVQsIExPR0dJTkdfV0hBVCwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBiMmE3MDI5ZWVlLi5kNTg2MjI5 ZDI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0xOCw2ICsx OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCiAKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbTsKK2V4dGVybiBQR0RMTElNUE9SVCBib29s IGZvcmNlX3N0cmVhbV9tb2RlOwogCiAvKiBhbiBpbmRpdmlkdWFsIHR1cGxlLCBzdG9yZWQgaW4g b25lIGNodW5rIG9mIG1lbW9yeSAqLwogdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclR1cGxl QnVmCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v57-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v57-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v57-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=23212; creation-date="Wed, 07 Dec 2022 02:53:20 GMT"; modification-date="Wed, 07 Dec 2022 02:58:18 GMT" Content-Transfer-Encoding: base64 RnJvbSBhM2EzMDM4YTkzNDM2MTJiNTkyNTc5NzRlMGFjZDYwYTJlOGVjODU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDIwOjUyOjI5ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTcgNi83XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEw ICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAxMSAr LQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsK IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMzAgKysrCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxODIgKysrKysrKysr KysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8 ICAgNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAg IDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgICA4 ICsKIC4uLi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgICAgICAgICB8ICA2OSAr KysrKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCAxMzAzNjFmMzFhLi42OTEyNTcxZTJkIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbApAQCAtNzkzOCw2ICs3OTM4LDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZs dDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9v bDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgcHJl dmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUgYW55Cisg ICAgICAgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG5lY2Vzc2l0YXRpbmcgYSByZXRy eS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVjdGZpZWxk PiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggZjM2NjcxMDFlMi4uMTMxMWYzMzU0ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCkBAIC0xNTAwLDEyICsxNTAwLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAK ICAgPHBhcmE+CiAgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxl bDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1h eSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAg IGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxs aXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdh aW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBi ZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04s IHBsZWFzZSByZWZlciB0byA8bGluawotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9u Ij48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGlu az4uCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNh c2UsIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJh bD5zdHJlYW1pbmcgPSBvbjwvbGl0ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0 aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0 byB0aGUKKyAgIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNl IHJlZmVyIHRvCisgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21t YW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3Bh cmE+CiAgPC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCBmMTczYTA5MDM3Li42NGQ1ODAyYWRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVw bGFjZWFibAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlm IGFuIGVycm9yIGhhcHBlbnMgaW4gYQogICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwg dGhlIGZpbmlzaCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0 IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBXaGVuIGFwcGx5 aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMsIGlmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsIHRo ZQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJv ci4gVGhlCisgICAgICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlz cmVnYXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlv biB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAg bW9kZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZm YzNlYzguLjcyM2IxNDFjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpA QCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0 YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1 YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7 CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJ UFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMmQ4MTA0YjA5 MC4uYzJjN2Q4YThiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTMw MSw3ICsxMzAxLDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVz IEZST00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7 CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3du ZXIsIHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0 d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAg ICAgc3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMs IHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUg VklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IDk3ZjEzMTYyYzUuLmRlNmIwYjZiYzYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTYzNCw2ICs2MzQsNyBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExP R0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVv bmVycik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5m byAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xv dF9uYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYwppbmRleCBjZmQyNzM4NzY0Li5hMTU2ZDU5Y2I0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YwpAQCAtMjk4LDYgKzI5OCwxNyBAQCBwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJ aWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBE b24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywgYmVjYXVzZSBpdCBp cyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQgdGhlIGxhc3QgdGlt ZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSkKKwl7CisJCWVs b2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwogfQogCkBAIC0xNTg2 LDMgKzE1OTcsMjIgQEAgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBM T0NLTU9ERSBsb2NrbW9kZSkKIAlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCiAJCQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9D S19YQUNULCBsb2NrbW9kZSk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxsZWwg YXBwbHkgd29ya2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQorewor CUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wp CisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93aW5m byA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bXBf d2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGM3OWIyNjYyYzUu LjUzNDE1N2FiZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpA QCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciBy ZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKIHN0YXRpYyB2b2lkIHN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2Nh bF9sc24pOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsK K3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MzAsNiArNDMwLDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFu c0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitz dGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICog UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpA QCAtMTAzNiw2ICsxMDM4LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtMTE0Miw2ICsxMTQ3LDkgQEAg YXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBi ZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxl cyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTExOTgsNiArMTIwNiw5IEBAIGFwcGx5X2hh bmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9u KHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyNTksNiArMTI3MCw5IEBAIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hf cG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24p OwogCkBAIC0xNDE4LDYgKzE0MzIsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5MzksNiArMTk1NiwxMCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQorCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQog CkBAIC0yMjQ5LDYgKzIyNzAsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXpl ZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVu ZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC00MzE4LDIwICs0 MzQyLDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBj aGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQg dGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFu IGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRF cnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJv clN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdv cmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVw b3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgot CQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7 Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9U SFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeSh0cnVlKTsKKworCQlhcHBseV93b3JrZXJfZXhpdChmYWxzZSk7CiAJfQogCVBH X0VORF9UUlkoKTsKIApAQCAtNDM1NiwyMCArNDM4OCwyNyBAQCBzdGFydF9hcHBseShYTG9nUmVj UHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVt aXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRv IGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVt aXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hF cnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhl IHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0 X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1f dGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVy cikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoK LQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBB Ym9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVz c2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9y KE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJs ZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBT ZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJ fQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQ2NDUsMzkgKzQ2ODQsMjAgQEAgQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRp c2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQg Y2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlv bi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitE aXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQot CSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQo KTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQot CVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVy aW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVw b3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJ CQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0 aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9u KE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0J LyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8K KwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBv cnQoTE9HLAogCQkJZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVk IGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0K LQlhcHBseV93b3JrZXJfZXhpdChmYWxzZSk7CiB9CiAKIC8qCkBAIC00OTk3LDMgKzUwMTcsNzEg QEAgaXNfaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24odm9pZCkKIHsKIAlyZXR1cm4gaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb247CiB9CisKKy8qCisgKiBTZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0 aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkgaXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91 dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVyd2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhl IHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQK K3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJ SGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNb TmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3Jp cHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZh c3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAo TXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBh dGggLSBza2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIHNldCBy ZXRyeSBpZiBubyBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChyZXRyeSAm JiAhcGFfaGF2ZV9hY3RpdmVfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVk X3R4ID0gdHJ1ZTsKKwl9CisKKwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNh dGFsb2cgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXR1cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lE LAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBc IiVzXCIgZG9lcyBub3QgZXhpc3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hh cmVkT2JqZWN0KFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAs CisJCQkJCSBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwlt ZW1zZXQodmFsdWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwg c2l6ZW9mKG51bGxzKSk7CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2Vz KSk7CisKKwkvKiBTZXQgc3VicmV0cnkgKi8KKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VicmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShyZXRyeSk7CisJcmVwbGFjZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFwX21vZGlmeV90 dXBsZSh0dXAsIFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKKwkJCQkJCQly ZXBsYWNlcyk7CisKKwkvKiBVcGRhdGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxvZ1R1cGxlVXBk YXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXApOworCisJLyogQ2xlYW51cC4gKi8KKwloZWFwX2Zy ZWV0dXBsZSh0dXApOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChzdGFydGVk X3R4KQorCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGZl YzZkMjFjMjkuLjhjMmNjNzhhMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDU0Myw4ICs0NTQzLDkgQEAg Z2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCW50dXBzID0gUFFudHVwbGVzKHJlcyk7 CiAKIAkvKgotCSAqIEdldCBzdWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBpbmNsdWRlIHN1 YnNraXBsc24gaW4gdGhlIGR1bXAgYXMKLQkgKiBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhp cyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlIHJlbGV2YW50LgorCSAqIEdldCBzdWJzY3JpcHRpb24g ZmllbGRzLiBXZSBkb24ndCBpbmNsdWRlIHN1YnNraXBsc24gYW5kIHN1YnJldHJ5IGluCisJICog dGhlIGR1bXAgYXMgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxv bmdlciBiZQorCSAqIHJlbGV2YW50LgogCSAqLwogCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVz LCAidGFibGVvaWQiKTsKIAlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDAxNmFmYmMyMDQuLmViNzhhMzI1NDMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApAQCAtODgsNiArODgsMTEgQEAgQ0FU QUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hB UkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYg YSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9u IHRvIGJlIGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVMVChmKTsJLyog VHJ1ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkCisJCQkJCQkJCQkJCSAqIHRvIGJlIGFwcGxp ZWQgd2hpbGUgdGhlcmUgd2VyZQorCQkJCQkJCQkJCQkgKiBhbnkgYWN0aXZlIHBhcmFsbGVsIGFw cGx5CisJCQkJCQkJCQkJCSAqIHdvcmtlcnMgKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJ LyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBz dHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9O T1RfTlVMTDsKQEAgLTEzMSw2ICsxMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24K IAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNo b3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVy cm9yCiAJCQkJCQkJCSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBp ZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlCisJCQkJCQkJCSAqIGFwcGxpZWQgdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5l Y3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFtZTsJCS8q IE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29tbWl0OwkJ LyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA1MTRhMjczMmEwLi5iZjI0YWM2Yjhm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjkxLDYg KzI5MSw4IEBAIGV4dGVybiB2b2lkIHBhX3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQs IExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBhX3VubG9j a190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOwogCitl eHRlcm4gYm9vbCBwYV9oYXZlX2FjdGl2ZV93b3JrZXIodm9pZCk7CisKICNkZWZpbmUgaXNQYXJh bGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IElu dmFsaWRQaWQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9z dHJlYW0ucGwKaW5kZXggMzg5NDFmZmMwMS4uODkwZmE4OGQyOSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTVfc3RyZWFtLnBsCkBAIC04Nyw4ICs4NywxNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwogCiAJIyBU ZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwlteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIKKwkpOwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbiki KTsKKwkkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSAgKQor CSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3Rh cnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgogCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJh bGxlbF9jb25mbGljdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFy YWxsZWxfY29uZmxpY3QucGwKaW5kZXggNjJkNThjZWMzYy4uZDJiYjg2ZDhiMSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZs aWN0LnBsCkBAIC0xMCw2ICsxMCwyMCBAQCB1c2UgVGVzdDo6TW9yZTsKIAogbXkgJG9mZnNldCA9 IDA7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMg Y29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0Et WjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywK KwkJCSRvZmZzZXQpOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2Rl X3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7 CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpA QCAtMjEsOSArMzUsOSBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogbXkgJG5vZGVfc3Vic2Ny aWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5v ZGVfc3Vic2NyaWJlci0+aW5pdDsKIAotIyBDaGVjayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBh cmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQotIyBoYXZlIHRv IGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAg dGhlIGxvZwotIyB2ZXJib3NpdHkuCisjIENoZWNrIGlmIGFueSBzdHJlYW1pbmcgY2h1bmtzIGFy ZSBhcHBsaWVkIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisjIEFuZCBjaGVjayBp ZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZhaWxlZCB0byBzdGFydC4gV2UgaGF2ZSB0byBs b29rIGZvcgorIyB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVw IHRoZSBsb2cgdmVyYm9zaXR5LgogJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CiAKICRub2RlX3N1YnNj cmliZXItPnN0YXJ0OwpAQCAtMTc1LDYgKzE4OSw1NSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CiAKKyMgQ2xlYW4gdXAgdGVz dCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMg VGVzdCByZS1hcHBseSBhIGZhaWxlZCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIGxl YWRlciBhcHBseQorIyB3b3JrZXIgYW5kIGFwcGx5IHN1YnNlcXVlbnQgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseQorIyB3b3JrZXIgYWZ0ZXIgdGhpcyByZXRy eSBzdWNjZWVkcy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRl c3RfdGFiKGEpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5TRVJU IElOVE8gdGVzdF90YWIgdmFsdWVzKDEpOworQ09NTUlUO30pOworCisjIENoZWNrIGlmIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgbm90IHN0YXJ0ZWQgYmVjYXVzZSB0aGUgYWJvdmUKKyMg dHJhbnNhY3Rpb24gZmFpbGVkIHRvIGJlIGFwcGxpZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgYXJlIG5vdCB1c2VkIGZvciByZXRyaWVzLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1 bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMg V2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUg YXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsK KworIyBBZnRlciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpIik7CisKK2NoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAxLCAnQ09NTUlUJyk7CisKKyRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMSksICdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7CisKICRu b2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMu MC53aW5kb3dzLjEKCg== --_008_OS0PR01MB57166A377638E57823219E32941A9OS0PR01MB5716jpnp_--