Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmiOS-009R00-D1 for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Mar 2024 22:57:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rmiNS-0018my-9O for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Mar 2024 22:56:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmiNR-0018mq-25 for pgsql-hackers@lists.postgresql.org; Tue, 19 Mar 2024 22:56:14 +0000 Received: from mgamail.intel.com ([192.198.163.18]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmiNL-005Ol2-NN for pgsql-hackers@lists.postgresql.org; Tue, 19 Mar 2024 22:56:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710888969; x=1742424969; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=+ywFcXFBqOF4wDPQe2SPVX/wFbShCJ3zODbdljcMtYM=; b=KJW8Fozo+OkOIS/i4744PU6GhAxuml/ZeNROYOOFP2nDF+i2ybiPnTGa O0yDu5Fsuajudo9tVWnMjuezpsao8GIWaCauyqb8hZSG4nb19fmJa1b1o VE5/uvjTOB5BW9zn4wtFiZUxU5Q+XwVEp1oL+x0Ic41B2pOuOKCpzlF3h oDBDMl0TFNhds2zmAoSdeETpABFVFG0VXJC7lfnZOvNO0tS4Em3Aaypbe oYF+196/tqjf3IGqrQLpF/QhvJbcx/QSoq6xCHFKYocnoh1hgRd1521E9 rHuBhMsdm51RO+jUM7sbLKctikEl14uTU8qP0AqZpzoPLJEiEAjw1ydMF g==; X-IronPort-AV: E=McAfee;i="6600,9927,11018"; a="5630094" X-IronPort-AV: E=Sophos;i="6.07,138,1708416000"; d="scan'208,223";a="5630094" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Mar 2024 15:56:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,138,1708416000"; d="scan'208,223";a="45049505" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmviesa001.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 19 Mar 2024 15:56:06 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 19 Mar 2024 15:56:05 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 19 Mar 2024 15:56:05 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 19 Mar 2024 15:56:05 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (104.47.51.40) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 19 Mar 2024 15:56:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gI6gj+IbE39Y6pEDdcygCeEjV2Zb5OZe+19RjNLNNqJSHFxPWdYogbSz0bbZcNSYECbL0b7AAJWgrmwSfaFhAYfGZQjUj4M839mF1e7eHES+TLVyLaRzAZBQ3VZ1O/GIjoInJ2c8Ef0+QXSaQht17jsZmp70yfGfx0dlzfNlbqywF+TxzR+yLF1heCqDpc52egddn9UoJpAnIGpejGVs5TN+CRGx+jEhy3MG7f8gUlUQJonT0Bay4fIoxPCI78tZugpeFoM7O6u9aLUJxocqeQidxGkYOQbckXh1r7LMvztk7J052HYiVUwkoM2x0OPRZej7O7COI6IEVl8sqtajWQ== 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=p+2ma2/hodJ/BC4aCMcElHMB0U7WkuNf+QmwLhCdgr4=; b=Ai29lNFYf7XOp7iHdeW8v9gL2B+kewQs56OiVBfIa6eTNjPbB+09+McgGL/N/kKmZdsCwU1gE8qga+ipNfUxVaxBdLM2dnbAGush3BAgLzvORL3NK3iO/C5vWN7t9Ojd3GvCowpYQ+wVt2dPSwJGbde4CJduu3XHZMNKMmjUpxLcAyTFvK0Jw57w2NXcQTWCAHnTO2rasBO8Knky4Ymt4W/Rfe8Aa9F4EAw3lGiq8nNqroWvyvjVdgs/hOsYIoNVLOVBThejilDlddLvbro0AeOB/Gix/l7kPyR2Rj35o06avXAKiiYa9ZPMhUWO4ArF4LVEG73o+pLoiU01/jQ5Mg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BL1PR11MB5304.namprd11.prod.outlook.com (2603:10b6:208:316::20) by SA1PR11MB6871.namprd11.prod.outlook.com (2603:10b6:806:2b1::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.12; Tue, 19 Mar 2024 22:56:02 +0000 Received: from BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c3d7:736f:7cf2:4d0f]) by BL1PR11MB5304.namprd11.prod.outlook.com ([fe80::c3d7:736f:7cf2:4d0f%4]) with mapi id 15.20.7409.010; Tue, 19 Mar 2024 22:56:02 +0000 From: "Amonson, Paul D" To: Nathan Bossart , David Rowley CC: Andres Freund , Alvaro Herrera , "Shankaran, Akash" , Noah Misch , Tom Lane , "Matthias van de Meent" , "pgsql-hackers@lists.postgresql.org" Subject: RE: Popcount optimization using AVX512 Thread-Topic: Popcount optimization using AVX512 Thread-Index: AdoNliAXaie8RHrzTICrAiLVKKiYCgAsQKyAALaJTAAAAQ7nAAAAxSWAAAGNHgAAA/mZgAAeFdGAAZKQbBAAAw6egA3NuLcAAAvVM4ACbQuxsAAhlXkAAHPWMbAAAkOrAACYCUjgAAMc3wABvefW4AD8TV6wADf+AoAAmWkVgACOpocAAAl+RwAAJXNxYAAA1VoAAABadxAAZi2hAAAIeekAAMiJepAACPYvAAAbpMKQAJeTLYAAcNGUAAAm2oYAAAFGgCAAAIPdAAACb8MAAAdpgwAAADR0AAAAsQcAAAAMEoAAAWCPgAAC3eIAACrnWQAABeBEkA== Date: Tue, 19 Mar 2024 22:56:01 +0000 Message-ID: References: <20240318152902.GA2850@nathanxps13> <20240318162018.GA204772@nathanxps13> <20240318173004.GA361138@nathanxps13> <20240318210810.GA582529@nathanxps13> <20240318212919.GA684016@nathanxps13> <20240318220845.GA776042@nathanxps13> <20240319195918.GA1257468@nathanxps13> In-Reply-To: <20240319195918.GA1257468@nathanxps13> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR11MB5304:EE_|SA1PR11MB6871:EE_ x-ms-office365-filtering-correlation-id: c75fc8c5-f2ba-424a-0443-08dc4867c010 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7REA7SCGQHDQIM8vzCRa5v4czXPlrzQSHKOirwOZh3k6HkBLGO2BUlM0Qe2YU805lwVkb7k1seAX1r6vSC3Pi6S+CDKjO4OiuzxjFCuZ2GAlmscXSk8omBtY3bl5NExSgxKJ94FXRWVTBDY5ECmyHFSGl2mrZXELngREqrisa+QqgehFiksr82WKKyPnr3o4OU/LkD0IKg6sTgNw5YtZAMyMller5uHbhyt3sHsVfwi9bjKFZ5zBPU7jTPe52wqQ4+oNYQqdv8uyGU5nTNgrDXguGd23ttzIwOCUFchR69Cop0Xu4GOTKX5yM8Mcu+NytSLBRBYkrpqtdyNjl0jUd164ois3dciY3WEn/vW8i4M/eXu02tDstyaWJdkLScvAt0sATJR4im2OzDVTIiEgKfFkGPaOHlSolq0tNUNu/9+hJ59I9NmkQnLN8/uPvUPWEmpJY22E/tBqtXbJVFgftUXnHg03s+SXs4uoyyyt1WIhSXxfHgRh6JWHZ+zfFSWdAS1UD0+ZTOO4XOxeDm8Q51tweW6Wb2cIHBof40QrXe0ZO0OvCffXLiDXzEPhKEBHOSRr0bMtGDhdEb38bCgPF866IKReyv+A1H+h626Xo47QTsDIjdkBv/R4RfSqfh0C/e+/dJOJchkhpva3t6OO2a2CKhm9Gtrw3Ivbip8Feu4bIrGnNPeIZB9XWO0QvUrqVY5YkvMBCZmga1LnU1v8bA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR11MB5304.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(1800799015)(376005)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?R/G5+VxiOLu0a4dYnR+F5jTkw0un78pqrAqTEY22LEacHdb6nLsmLSbFExH5?= =?us-ascii?Q?LVf519+SmT6/N14ehzudfDIEK5LY91VewLFot2bfEjLfzIqYYC2sk3zYFCLF?= =?us-ascii?Q?ptto6kBGmAG6uy1TJi+1s0A1Sp5Vpt0SNPz4+iRHYK8/x76gZoyrOH3S9fW6?= =?us-ascii?Q?tdqCdkHckcz3pr7sbZUDqhDuBFT3NwKc07tDKgYl9mPPRWEKJeihaL4ThyLq?= =?us-ascii?Q?ankwq2ovYXGKYS94P9FomsAPRsxIpIN3pSr7VVHNfRl8Omz2N0oFRIUySvvZ?= =?us-ascii?Q?gEPUUCrtkuYfw/7AFgc3GOTYtonFlv+JV9wgeTd2q+ZHnCWSSJiZbFA7vjKw?= =?us-ascii?Q?Op8ncGgC4S+KB1Mkr0oH2eW5VMDaed4Z+Eja6xKQSoB5TVbHjQUKP1W9Sd21?= =?us-ascii?Q?9ownvV3AkvYJZZyrTLJHSdfpoBvzE63xbM5Zdp9qGgm0ucaBUUU3hSe++HUv?= =?us-ascii?Q?ZsrpNS4oMETBvf5T7OUhZl+uw+p0T47yqUTEenCpqaPVbKsWsshrJxYg6ESU?= =?us-ascii?Q?LI++aqO9TUyTYJWiBEQgPb5WKvKnjKnjsoFuub8Cxf5fQjr6M47NUrBoyeqJ?= =?us-ascii?Q?Uso10+jiGx/cJyDNGTWEUBTlihp/undJYhTA4gholI3KxZHcc3atGJ1YUFb+?= =?us-ascii?Q?3URF5EpKAayewRc1S9rSjPphfG9CBV5phPckiFixZIRFqRskXNK3AiifcWLZ?= =?us-ascii?Q?3bxT+TZdmAX8X2EnKAR+qdCtr4jh/O+/b1sTBPmpXstCTWi8oLyUVMCwfhHr?= =?us-ascii?Q?kklw31Tu1PnPN/453snbe4xHHmtQEX6GMuUDpw7UcQUJdlT9HdIPjIMJ3Vi2?= =?us-ascii?Q?Ki/HD4FzXF33GRTUl0cTDCh+xU8KIYLhk0QY8BFJh6R9mpjl7gBfhOPyhszx?= =?us-ascii?Q?Dz0157NVcWqqOX72x+dmQuzlibu8gGZr9XwPjyAu6eQZw2OsWD8EXCVGdKWw?= =?us-ascii?Q?IXiAuf1w7UgE7lqh+V1yHFunUJqAdHx/C73jusip7XG1gTi+fchTwFU+u6+V?= =?us-ascii?Q?6vu1VhRyByazPaFlgUDTJPnxH0/N3I6ucUk/Aq1HATSqXqf4wwfU4BNg5sMl?= =?us-ascii?Q?Cb9hFSRlcerNFs78RvTtZnwlDw7K/A7py1O4IouAy/Cqrm23pJ/rSuAFaFBe?= =?us-ascii?Q?mxiXgOk8yYKBmpwUyLaZqH1CBTFyVQ0evWuUNdMKhxWeLronzjmkmiKCAkaW?= =?us-ascii?Q?U+03Zerk2hQRiwLkJzbXik1FuZI5P4l7hxHcvz1GaMLHwxsWifZpkzqw4ijY?= =?us-ascii?Q?Nm7b5K0JzOPgQ5bGEJiHJyWvrL1g1vLTLeZYFc6UkY98khbTZO3WCk+RDm5x?= =?us-ascii?Q?TN1w3+gWk+g/8VCB6nZ5RpSrkFfulp2g3C4e8mWeoL0ri8UYwxOiJpTSz997?= =?us-ascii?Q?A7S8XBMQS6DMoYtM59oXlzmTEAViq/r6j7Rx/sWx6rcluZ/oYuiOZ7rs7ABF?= =?us-ascii?Q?5gSn2EF8bJhPA8SVBqiZUHQoq7uWAPmrT80k6gMLneBLS4jADV1zOJo7CDXO?= =?us-ascii?Q?rmzNZXcJJ1silugax92L42dwpL+ay/X9BE658Lo5qXZMEbZx00nWdJrdiJOK?= =?us-ascii?Q?MOK70H0rTVd6rcKw0alAnYpdiVSrws+1J56VV5mB?= Content-Type: multipart/mixed; boundary="_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR11MB5304.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c75fc8c5-f2ba-424a-0443-08dc4867c010 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2024 22:56:02.0539 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: TozL6IYnDWFJP3YDrxCUQFavJqSzD3dQNEYGAsvGIiALiEnpZNvlaelFykZSrrUhGuwx0VYchmYkEKGRxKJ4w71xk42P7IvFn6GG6rsUIHw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6871 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Nathan Bossart > > Committed. Thanks for the suggestion and for reviewing! >=20 > Paul, I suspect your patches will need to be rebased after commit cc4826d= . > Would you mind doing so? Changed in this patch set. * Rebased. * Direct *slow* calls via macros as shown in example patch. * Changed the choose filename to be platform specific as suggested. * Falls back to intermediate "Fast" methods if AVX512 is not available at r= untime. * inline used where is makes sense, remember using "extern" negates "inline= ". * Fixed comment issues pointed out in review. I tested building with and without TRY_POPCOUNT_FAST, for both configure an= d meson build systems, and ran in CI. Thanks, Paul --_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v10-0001-Refactor-inlining-and-direct-calls-for-_slow-functio.patch" Content-Description: v10-0001-Refactor-inlining-and-direct-calls-for-_slow-functio.patch Content-Disposition: attachment; filename="v10-0001-Refactor-inlining-and-direct-calls-for-_slow-functio.patch"; size=8115; creation-date="Tue, 19 Mar 2024 22:54:29 GMT"; modification-date="Tue, 19 Mar 2024 22:56:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBlOTQ4M2QyMzU0YmQ1ODIxMDgwNWIxN2ZhNzgwOTFlY2MwMDdjNjEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGludGVsLmNv bT4KRGF0ZTogVHVlLCAxOSBNYXIgMjAyNCAxMzozNTo1MyAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg MS8zXSBbUmVmYWN0b3JdIGlubGluaW5nIGFuZCBkaXJlY3QgY2FsbHMgZm9yICpfc2xvdwogZnVu Y3Rpb25zLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBBbW9uc29uIDxwYXVsLmQuYW1vbnNvbkBpbnRl bC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgIDYg Ky0KIHNyYy9pbmNsdWRlL25vZGVzL2JpdG1hcHNldC5oICAgICAgICAgICB8ICA0ICstCiBzcmMv aW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmggICAgICAgICAgfCAxNyArKystLQogc3JjL3BvcnQv cGdfYml0dXRpbHMuYyAgICAgICAgICAgICAgICAgIHwgOTAgKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggMWFiNmM4NjVlMy4u MjhkYzQ5N2I3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0 eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAt NDE5LDE0ICs0MTksMTQgQEAgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2Nr TnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm8KIAkJaWYgKGFsbF9mcm96 ZW4gPT0gTlVMTCkKIAkJewogCQkJZm9yIChpID0gMDsgaSA8IE1BUFNJWkUgLyBzaXplb2YodWlu dDY0KTsgaSsrKQotCQkJCW52aXNpYmxlICs9IHBnX3BvcGNvdW50NjQobWFwW2ldICYgVklTSUJM RV9NQVNLNjQpOworCQkJCW52aXNpYmxlICs9IFBHX1BPUENPVU5UNjQobWFwW2ldICYgVklTSUJM RV9NQVNLNjQpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJZm9yIChpID0gMDsgaSA8IE1BUFNJWkUg LyBzaXplb2YodWludDY0KTsgaSsrKQogCQkJewotCQkJCW52aXNpYmxlICs9IHBnX3BvcGNvdW50 NjQobWFwW2ldICYgVklTSUJMRV9NQVNLNjQpOwotCQkJCW5mcm96ZW4gKz0gcGdfcG9wY291bnQ2 NChtYXBbaV0gJiBGUk9aRU5fTUFTSzY0KTsKKwkJCQludmlzaWJsZSArPSBQR19QT1BDT1VOVDY0 KG1hcFtpXSAmIFZJU0lCTEVfTUFTSzY0KTsKKwkJCQluZnJvemVuICs9IFBHX1BPUENPVU5UNjQo bWFwW2ldICYgRlJPWkVOX01BU0s2NCk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvYml0bWFwc2V0LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaApp bmRleCAyODNiZWE1ZWE5Li5iNTYzMWQxNTNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9iaXRtYXBzZXQuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9iaXRtYXBzZXQuaApAQCAtNzcs MTEgKzc3LDExIEBAIHR5cGVkZWYgZW51bQogI2lmIEJJVFNfUEVSX0JJVE1BUFdPUkQgPT0gMzIK ICNkZWZpbmUgYm13X2xlZnRtb3N0X29uZV9wb3ModykJCXBnX2xlZnRtb3N0X29uZV9wb3MzMih3 KQogI2RlZmluZSBibXdfcmlnaHRtb3N0X29uZV9wb3ModykJcGdfcmlnaHRtb3N0X29uZV9wb3Mz Mih3KQotI2RlZmluZSBibXdfcG9wY291bnQodykJCQkJcGdfcG9wY291bnQzMih3KQorI2RlZmlu ZSBibXdfcG9wY291bnQodykJCQkJUEdfUE9QQ09VTlQzMih3KQogI2VsaWYgQklUU19QRVJfQklU TUFQV09SRCA9PSA2NAogI2RlZmluZSBibXdfbGVmdG1vc3Rfb25lX3Bvcyh3KQkJcGdfbGVmdG1v c3Rfb25lX3BvczY0KHcpCiAjZGVmaW5lIGJtd19yaWdodG1vc3Rfb25lX3Bvcyh3KQlwZ19yaWdo dG1vc3Rfb25lX3BvczY0KHcpCi0jZGVmaW5lIGJtd19wb3Bjb3VudCh3KQkJCQlwZ19wb3Bjb3Vu dDY0KHcpCisjZGVmaW5lIGJtd19wb3Bjb3VudCh3KQkJCQlQR19QT1BDT1VOVDY0KHcpCiAjZWxz ZQogI2Vycm9yICJpbnZhbGlkIEJJVFNfUEVSX0JJVE1BUFdPUkQiCiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaCBiL3NyYy9pbmNsdWRlL3BvcnQvcGdf Yml0dXRpbHMuaAppbmRleCA1M2U1MjM5NzE3Li40NzdlMDBlMGRhIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9ydC9wZ19iaXR1 dGlscy5oCkBAIC0zMDAsMTYgKzMwMCwyMyBAQCBwZ19jZWlsX2xvZzJfNjQodWludDY0IG51bSkK IAogI2lmZGVmIFRSWV9QT1BDTlRfRkFTVAogLyogQXR0ZW1wdCB0byB1c2UgdGhlIFBPUENOVCBp bnN0cnVjdGlvbiwgYnV0IHBlcmZvcm0gYSBydW50aW1lIGNoZWNrIGZpcnN0ICovCitleHRlcm4g aW50CXBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCk7CitleHRlcm4gaW50CXBnX3BvcGNv dW50NjRfc2xvdyh1aW50NjQgd29yZCk7CitleHRlcm4gdWludDY0IHBnX3BvcGNvdW50X3Nsb3co Y29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCAoKnBn X3BvcGNvdW50MzIpICh1aW50MzIgd29yZCk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50ICgqcGdf cG9wY291bnQ2NCkgKHVpbnQ2NCB3b3JkKTsKIGV4dGVybiBQR0RMTElNUE9SVCB1aW50NjQgKCpw Z19wb3Bjb3VudCkgKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKLQorI2RlZmluZSBQR19Q T1BDT1VOVDMyKHgpIHBnX3BvcGNvdW50MzIoeCkKKyNkZWZpbmUgUEdfUE9QQ09VTlQ2NCh4KSBw Z19wb3Bjb3VudDY0KHgpCisjZGVmaW5lIFBHX1BPUENPVU5UKHgseSkgcGdfcG9wY291bnQoeCx5 KQogI2Vsc2UKIC8qIFVzZSBhIHBvcnRhYmxlIGltcGxlbWVudGF0aW9uIC0tIG5vIG5lZWQgZm9y IGEgZnVuY3Rpb24gcG9pbnRlci4gKi8KLWV4dGVybiBpbnQJcGdfcG9wY291bnQzMih1aW50MzIg d29yZCk7Ci1leHRlcm4gaW50CXBnX3BvcGNvdW50NjQodWludDY0IHdvcmQpOwotZXh0ZXJuIHVp bnQ2NCBwZ19wb3Bjb3VudChjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7Ci0KK2V4dGVybiBp bnQJcGdfcG9wY291bnQzMl9zbG93KHVpbnQzMiB3b3JkKTsKK2V4dGVybiBpbnQJcGdfcG9wY291 bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKTsKK2V4dGVybiB1aW50NjQgcGdfcG9wY291bnRfc2xvdyhj b25zdCBjaGFyICpidWYsIGludCBieXRlcyk7CisjZGVmaW5lIFBHX1BPUENPVU5UMzIoeCkgcGdf cG9wY291bnQzMl9zbG93KHgpCisjZGVmaW5lIFBHX1BPUENPVU5UNjQoeCkgcGdfcG9wY291bnQ2 NF9zbG93KHgpCisjZGVmaW5lIFBHX1BPUENPVU5UKHgseSkgcGdfcG9wY291bnRfc2xvdyh4LHkp CiAjZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvcG9ydC9wZ19iaXR1dGlscy5jIGIvc3JjL3BvcnQvcGdfYml0dXRpbHMuYwppbmRleCAxMTk3 Njk2ZTk3Li5lNjI5OTY5MDM1IDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19iaXR1dGlscy5jCisr KyBiL3NyYy9wb3J0L3BnX2JpdHV0aWxzLmMKQEAgLTEwMyw5ICsxMDMsOSBAQCBjb25zdCB1aW50 OCBwZ19udW1iZXJfb2Zfb25lc1syNTZdID0gewogCTQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsIDUs IDYsIDYsIDcsIDYsIDcsIDcsIDgKIH07CiAKLXN0YXRpYyBpbmxpbmUgaW50IHBnX3BvcGNvdW50 MzJfc2xvdyh1aW50MzIgd29yZCk7Ci1zdGF0aWMgaW5saW5lIGludCBwZ19wb3Bjb3VudDY0X3Ns b3codWludDY0IHdvcmQpOwotc3RhdGljIHVpbnQ2NCBwZ19wb3Bjb3VudF9zbG93KGNvbnN0IGNo YXIgKmJ1ZiwgaW50IGJ5dGVzKTsKKy8vIHN0YXRpYyBpbmxpbmUgaW50IHBnX3BvcGNvdW50MzJf c2xvdyh1aW50MzIgd29yZCk7CisvLyBzdGF0aWMgaW5saW5lIGludCBwZ19wb3Bjb3VudDY0X3Ns b3codWludDY0IHdvcmQpOworLy8gc3RhdGljIHVpbnQ2NCBwZ19wb3Bjb3VudF9zbG93KGNvbnN0 IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKIAogI2lmZGVmIFRSWV9QT1BDTlRfRkFTVAogc3RhdGlj IGJvb2wgcGdfcG9wY291bnRfYXZhaWxhYmxlKHZvaWQpOwpAQCAtMTE5LDkgKzExOSw2IEBAIHN0 YXRpYyB1aW50NjQgcGdfcG9wY291bnRfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7 CiBpbnQJCQkoKnBnX3BvcGNvdW50MzIpICh1aW50MzIgd29yZCkgPSBwZ19wb3Bjb3VudDMyX2No b29zZTsKIGludAkJCSgqcGdfcG9wY291bnQ2NCkgKHVpbnQ2NCB3b3JkKSA9IHBnX3BvcGNvdW50 NjRfY2hvb3NlOwogdWludDY0CQkoKnBnX3BvcGNvdW50KSAoY29uc3QgY2hhciAqYnVmLCBpbnQg Ynl0ZXMpID0gcGdfcG9wY291bnRfY2hvb3NlOwotI2VuZGlmCQkJCQkJCS8qIFRSWV9QT1BDTlRf RkFTVCAqLwotCi0jaWZkZWYgVFJZX1BPUENOVF9GQVNUCiAKIC8qCiAgKiBSZXR1cm4gdHJ1ZSBp ZiBDUFVJRCBpbmRpY2F0ZXMgdGhhdCB0aGUgUE9QQ05UIGluc3RydWN0aW9uIGlzIGF2YWlsYWJs ZS4KQEAgLTE0OCw4ICsxNDUsNyBAQCBwZ19wb3Bjb3VudF9hdmFpbGFibGUodm9pZCkKICAqIHRo ZSBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRlZCBk aXJlY3RseSB0bwogICogdGhlIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KICAqLwotc3RhdGljIGlu dAotcGdfcG9wY291bnQzMl9jaG9vc2UodWludDMyIHdvcmQpCitzdGF0aWMgaW5saW5lIHZvaWQg c2V0X2Z1bmN0aW9uX3BvaW50ZXJzKCkKIHsKIAlpZiAocGdfcG9wY291bnRfYXZhaWxhYmxlKCkp CiAJewpAQCAtMTYzLDQ1ICsxNTksMjYgQEAgcGdfcG9wY291bnQzMl9jaG9vc2UodWludDMyIHdv cmQpCiAJCXBnX3BvcGNvdW50NjQgPSBwZ19wb3Bjb3VudDY0X3Nsb3c7CiAJCXBnX3BvcGNvdW50 ID0gcGdfcG9wY291bnRfc2xvdzsKIAl9Cit9CiAKK3N0YXRpYyBpbnQKK3BnX3BvcGNvdW50MzJf Y2hvb3NlKHVpbnQzMiB3b3JkKQoreworCXNldF9mdW5jdGlvbl9wb2ludGVycygpOwogCXJldHVy biBwZ19wb3Bjb3VudDMyKHdvcmQpOwogfQogCiBzdGF0aWMgaW50CiBwZ19wb3Bjb3VudDY0X2No b29zZSh1aW50NjQgd29yZCkKIHsKLQlpZiAocGdfcG9wY291bnRfYXZhaWxhYmxlKCkpCi0Jewot CQlwZ19wb3Bjb3VudDMyID0gcGdfcG9wY291bnQzMl9mYXN0OwotCQlwZ19wb3Bjb3VudDY0ID0g cGdfcG9wY291bnQ2NF9mYXN0OwotCQlwZ19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X2Zhc3Q7Ci0J fQotCWVsc2UKLQl7Ci0JCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX3Nsb3c7Ci0JCXBn X3BvcGNvdW50NjQgPSBwZ19wb3Bjb3VudDY0X3Nsb3c7Ci0JCXBnX3BvcGNvdW50ID0gcGdfcG9w Y291bnRfc2xvdzsKLQl9Ci0KKwlzZXRfZnVuY3Rpb25fcG9pbnRlcnMoKTsKIAlyZXR1cm4gcGdf cG9wY291bnQ2NCh3b3JkKTsKIH0KIAogc3RhdGljIHVpbnQ2NAogcGdfcG9wY291bnRfY2hvb3Nl KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKQogewotCWlmIChwZ19wb3Bjb3VudF9hdmFpbGFi bGUoKSkKLQl7Ci0JCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX2Zhc3Q7Ci0JCXBnX3Bv cGNvdW50NjQgPSBwZ19wb3Bjb3VudDY0X2Zhc3Q7Ci0JCXBnX3BvcGNvdW50ID0gcGdfcG9wY291 bnRfZmFzdDsKLQl9Ci0JZWxzZQotCXsKLQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJf c2xvdzsKLQkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNvdW50NjRfc2xvdzsKLQkJcGdfcG9wY291 bnQgPSBwZ19wb3Bjb3VudF9zbG93OwotCX0KLQorCXNldF9mdW5jdGlvbl9wb2ludGVycygpOwog CXJldHVybiBwZ19wb3Bjb3VudChidWYsIGJ5dGVzKTsKIH0KIApAQCAtMjQzLDcgKzIyMCw3IEBA IF9fYXNtX18gX192b2xhdGlsZV9fKCIgcG9wY250cSAlMSwlMFxuIjoiPXEiKHJlcyk6InJtIih3 b3JkKToiY2MiKTsKICAqIHBnX3BvcGNvdW50X2Zhc3QKICAqCQlSZXR1cm5zIHRoZSBudW1iZXIg b2YgMS1iaXRzIGluIGJ1ZgogICovCi1zdGF0aWMgdWludDY0CitzdGF0aWMgaW5saW5lIHVpbnQ2 NAogcGdfcG9wY291bnRfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKIHsKIAl1aW50 NjQJCXBvcGNudCA9IDA7CkBAIC0yNTYsNyArMjMzLDcgQEAgcGdfcG9wY291bnRfZmFzdChjb25z dCBjaGFyICpidWYsIGludCBieXRlcykKIAogCQl3aGlsZSAoYnl0ZXMgPj0gOCkKIAkJewotCQkJ cG9wY250ICs9IHBnX3BvcGNvdW50NjRfZmFzdCgqd29yZHMrKyk7CisJCQlwb3BjbnQgKz0gUEdf UE9QQ09VTlQ2NCgqd29yZHMrKyk7CiAJCQlieXRlcyAtPSA4OwogCQl9CiAKQEAgLTI3MCw3ICsy NDcsNyBAQCBwZ19wb3Bjb3VudF9mYXN0KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKQogCiAJ CXdoaWxlIChieXRlcyA+PSA0KQogCQl7Ci0JCQlwb3BjbnQgKz0gcGdfcG9wY291bnQzMl9mYXN0 KCp3b3JkcysrKTsKKwkJCXBvcGNudCArPSBQR19QT1BDT1VOVDMyKCp3b3JkcysrKTsKIAkJCWJ5 dGVzIC09IDQ7CiAJCX0KIApAQCAtMjkyLDcgKzI2OSw3IEBAIHBnX3BvcGNvdW50X2Zhc3QoY29u c3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCiAgKiBwZ19wb3Bjb3VudDMyX3Nsb3cKICAqCQlSZXR1 cm4gdGhlIG51bWJlciBvZiAxIGJpdHMgc2V0IGluIHdvcmQKICAqLwotc3RhdGljIGlubGluZSBp bnQKK2lubGluZSBpbnQKIHBnX3BvcGNvdW50MzJfc2xvdyh1aW50MzIgd29yZCkKIHsKICNpZmRl ZiBIQVZFX19CVUlMVElOX1BPUENPVU5UCkBAIC0zMTQsNyArMjkxLDcgQEAgcGdfcG9wY291bnQz Ml9zbG93KHVpbnQzMiB3b3JkKQogICogcGdfcG9wY291bnQ2NF9zbG93CiAgKgkJUmV0dXJuIHRo ZSBudW1iZXIgb2YgMSBiaXRzIHNldCBpbiB3b3JkCiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50Citp bmxpbmUgaW50CiBwZ19wb3Bjb3VudDY0X3Nsb3codWludDY0IHdvcmQpCiB7CiAjaWZkZWYgSEFW RV9fQlVJTFRJTl9QT1BDT1VOVApAQCAtMzQyLDcgKzMxOSw3IEBAIHBnX3BvcGNvdW50NjRfc2xv dyh1aW50NjQgd29yZCkKICAqIHBnX3BvcGNvdW50X3Nsb3cKICAqCQlSZXR1cm5zIHRoZSBudW1i ZXIgb2YgMS1iaXRzIGluIGJ1ZgogICovCi1zdGF0aWMgdWludDY0Cit1aW50NjQKIHBnX3BvcGNv dW50X3Nsb3coY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCiB7CiAJdWludDY0CQlwb3BjbnQg PSAwOwpAQCAtMzgzLDM2ICszNjAsMyBAQCBwZ19wb3Bjb3VudF9zbG93KGNvbnN0IGNoYXIgKmJ1 ZiwgaW50IGJ5dGVzKQogCiAJcmV0dXJuIHBvcGNudDsKIH0KLQotI2lmbmRlZiBUUllfUE9QQ05U X0ZBU1QKLQotLyoKLSAqIFdoZW4gdGhlIFBPUENOVCBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxh YmxlLCB0aGVyZSdzIG5vIHBvaW50IGluIHVzaW5nCi0gKiBmdW5jdGlvbiBwb2ludGVycyB0byB2 YXJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBiZXR3ZWVuIHRoZSBmYXN0IGFuZCBzbG93Ci0gKiBtZXRo b2QuICBXZSBpbnN0ZWFkIGp1c3QgbWFrZSB0aGVzZSBhY3R1YWwgZXh0ZXJuYWwgZnVuY3Rpb25z IHdoZW4KLSAqIFRSWV9QT1BDTlRfRkFTVCBpcyBub3QgZGVmaW5lZC4gIFRoZSBjb21waWxlciBz aG91bGQgYmUgYWJsZSB0byBpbmxpbmUKLSAqIHRoZSBzbG93IHZlcnNpb25zIGhlcmUuCi0gKi8K LWludAotcGdfcG9wY291bnQzMih1aW50MzIgd29yZCkKLXsKLQlyZXR1cm4gcGdfcG9wY291bnQz Ml9zbG93KHdvcmQpOwotfQotCi1pbnQKLXBnX3BvcGNvdW50NjQodWludDY0IHdvcmQpCi17Ci0J cmV0dXJuIHBnX3BvcGNvdW50NjRfc2xvdyh3b3JkKTsKLX0KLQotLyoKLSAqIHBnX3BvcGNvdW50 Ci0gKgkJUmV0dXJucyB0aGUgbnVtYmVyIG9mIDEtYml0cyBpbiBidWYKLSAqLwotdWludDY0Ci1w Z19wb3Bjb3VudChjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKLXsKLQlyZXR1cm4gcGdfcG9w Y291bnRfc2xvdyhidWYsIGJ5dGVzKTsKLX0KLQotI2VuZGlmCQkJCQkJCS8qICFUUllfUE9QQ05U X0ZBU1QgKi8KLS0gCjIuMzQuMQoK --_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v10-0002-Refactor-Seperated-slow-fast-and-choose-functionalit.patch" Content-Description: v10-0002-Refactor-Seperated-slow-fast-and-choose-functionalit.patch Content-Disposition: attachment; filename="v10-0002-Refactor-Seperated-slow-fast-and-choose-functionalit.patch"; size=16163; creation-date="Tue, 19 Mar 2024 22:54:29 GMT"; modification-date="Tue, 19 Mar 2024 22:56:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNWU0Y2FjMzIzYjkxM2U5ZmNkYmQxN2Q2YjA3MzE2YTIxZjdmZjVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGludGVsLmNv bT4KRGF0ZTogVHVlLCAxOSBNYXIgMjAyNCAxMzozNzozMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBbUmVmYWN0b3JdIFNlcGVyYXRlZCBzbG93LCBmYXN0LCBhbmQgY2hvb3NlIGZ1bmN0aW9u YWxpdHkKIGludG8gZmlsZXMuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEFtb25zb24gPHBhdWwuZC5h bW9uc29uQGludGVsLmNvbT4KLS0tCiBjb250cmliL2ludGFycmF5L19pbnRiaWdfZ2lzdC5jICAg ICAgIHwgICAyICstCiBjb250cmliL2x0cmVlL19sdHJlZV9naXN0LmMgICAgICAgICAgIHwgICAy ICstCiBjb250cmliL3BhZ2VpbnNwZWN0L2hlYXBmdW5jcy5jICAgICAgIHwgICA0ICstCiBjb250 cmliL3BnX3RyZ20vdHJnbV9naXN0LmMgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3BnX3dh bGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jIHwgICAyICstCiBzcmMvYmFja2VuZC9saWIvYmxvb21m aWx0ZXIuYyAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3N5c2xvZ2dl ci5jICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdHNnaXN0aWR4LmMgICAgIHwg ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvdmFyYml0LmMgICAgICAgIHwgICAyICstCiBz cmMvYmFja2VuZC91dGlscy9hZHQvdmFybGVuYS5jICAgICAgIHwgICAyICstCiBzcmMvcG9ydC9N YWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9wb3J0L21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3BvcnQvcGdfYml0dXRpbHMuYyAgICAgICAg ICAgICAgICB8IDE3MSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3BvcnQvcGdfcG9w Y291bnRfeDg2XzY0X2FjY2VsLmMgICB8IDEwMSArKysrKysrKysrKysrKysKIHNyYy9wb3J0L3Bn X3BvcGNvdW50X3g4Nl82NF9jaG9vc2UuYyAgfCAgOTggKysrKysrKysrKysrKysrCiAxNSBmaWxl cyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMTgxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9wb3J0L3BnX3BvcGNvdW50X3g4Nl82NF9hY2NlbC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3BvcnQvcGdfcG9wY291bnRfeDg2XzY0X2Nob29zZS5jCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9pbnRhcnJheS9faW50YmlnX2dpc3QuYyBiL2NvbnRyaWIvaW50YXJyYXkvX2lu dGJpZ19naXN0LmMKaW5kZXggOTY5OWZiZjNiNC4uYTEyZWE3ZWQ5YiAxMDA2NDQKLS0tIGEvY29u dHJpYi9pbnRhcnJheS9faW50YmlnX2dpc3QuYworKysgYi9jb250cmliL2ludGFycmF5L19pbnRi aWdfZ2lzdC5jCkBAIC0yMTAsNyArMjEwLDcgQEAgZ19pbnRiaWdfY29tcHJlc3MoUEdfRlVOQ1RJ T05fQVJHUykKIHN0YXRpYyBpbnQzMgogc2l6ZWJpdHZlYyhCSVRWRUNQIHNpZ24sIGludCBzaWds ZW4pCiB7Ci0JcmV0dXJuIHBnX3BvcGNvdW50KHNpZ24sIHNpZ2xlbik7CisJcmV0dXJuIFBHX1BP UENPVU5UKHNpZ24sIHNpZ2xlbik7CiB9CiAKIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL2NvbnRy aWIvbHRyZWUvX2x0cmVlX2dpc3QuYyBiL2NvbnRyaWIvbHRyZWUvX2x0cmVlX2dpc3QuYwppbmRl eCBlODlhMzlhNWI1Li5iZDY2ZWMyZTY1IDEwMDY0NAotLS0gYS9jb250cmliL2x0cmVlL19sdHJl ZV9naXN0LmMKKysrIGIvY29udHJpYi9sdHJlZS9fbHRyZWVfZ2lzdC5jCkBAIC0xODAsNyArMTgw LDcgQEAgX2x0cmVlX3VuaW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiBzdGF0aWMgaW50MzIKIHNpemVi aXR2ZWMoQklUVkVDUCBzaWduLCBpbnQgc2lnbGVuKQogewotCXJldHVybiBwZ19wb3Bjb3VudCgo Y29uc3QgY2hhciAqKSBzaWduLCBzaWdsZW4pOworCXJldHVybiBQR19QT1BDT1VOVCgoY29uc3Qg Y2hhciAqKSBzaWduLCBzaWdsZW4pOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9jb250 cmliL3BhZ2VpbnNwZWN0L2hlYXBmdW5jcy5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVu Y3MuYwppbmRleCAzZmFlYWJjNzExLi4wODk4NDI5NjJmIDEwMDY0NAotLS0gYS9jb250cmliL3Bh Z2VpbnNwZWN0L2hlYXBmdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNz LmMKQEAgLTUyNyw4ICs1MjcsOCBAQCBoZWFwX3R1cGxlX2luZm9tYXNrX2ZsYWdzKFBHX0ZVTkNU SU9OX0FSR1MpCiAJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRl c2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkKIAkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11 c3QgYmUgYSByb3cgdHlwZSIpOwogCi0JYml0Y250ID0gcGdfcG9wY291bnQoKGNvbnN0IGNoYXIg KikgJnRfaW5mb21hc2ssIHNpemVvZih1aW50MTYpKSArCi0JCXBnX3BvcGNvdW50KChjb25zdCBj aGFyICopICZ0X2luZm9tYXNrMiwgc2l6ZW9mKHVpbnQxNikpOworCWJpdGNudCA9IFBHX1BPUENP VU5UKChjb25zdCBjaGFyICopICZ0X2luZm9tYXNrLCBzaXplb2YodWludDE2KSkgKworCQlQR19Q T1BDT1VOVCgoY29uc3QgY2hhciAqKSAmdF9pbmZvbWFzazIsIHNpemVvZih1aW50MTYpKTsKIAog CS8qIElmIG5vIGZsYWdzLCByZXR1cm4gYSBzZXQgb2YgZW1wdHkgYXJyYXlzICovCiAJaWYgKGJp dGNudCA8PSAwKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jIGIvY29u dHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCmluZGV4IDllZjJlMzg1NjAuLjg1MDMxNjE5NmYgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYworKysgYi9jb250cmliL3BnX3Ry Z20vdHJnbV9naXN0LmMKQEAgLTY0OCw3ICs2NDgsNyBAQCBndHJnbV9zYW1lKFBHX0ZVTkNUSU9O X0FSR1MpCiBzdGF0aWMgaW50MzIKIHNpemViaXR2ZWMoQklUVkVDUCBzaWduLCBpbnQgc2lnbGVu KQogewotCXJldHVybiBwZ19wb3Bjb3VudChzaWduLCBzaWdsZW4pOworCXJldHVybiBQR19QT1BD T1VOVChzaWduLCBzaWdsZW4pOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9jb250cmli L3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L3Bn X3dhbGluc3BlY3QuYwppbmRleCBlZTI5MTg3MjZkLi45M2E3YjQ4NDJhIDEwMDY0NAotLS0gYS9j b250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jCisrKyBiL2NvbnRyaWIvcGdfd2Fs aW5zcGVjdC9wZ193YWxpbnNwZWN0LmMKQEAgLTMwMyw3ICszMDMsNyBAQCBHZXRXQUxCbG9ja0lu Zm8oRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkLAogCQkJ YmxvY2tfZnBpX2xlbiA9IGJsay0+YmltZ19sZW47CiAKIAkJCS8qIENvbnN0cnVjdCBhbmQgc2F2 ZSBibG9ja19mcGlfaW5mbyAqLwotCQkJYml0Y250ID0gcGdfcG9wY291bnQoKGNvbnN0IGNoYXIg KikgJmJsay0+YmltZ19pbmZvLAorCQkJYml0Y250ID0gUEdfUE9QQ09VTlQoKGNvbnN0IGNoYXIg KikgJmJsay0+YmltZ19pbmZvLAogCQkJCQkJCQkgc2l6ZW9mKHVpbnQ4KSk7CiAJCQlmbGFncyA9 IChEYXR1bSAqKSBwYWxsb2MwKHNpemVvZihEYXR1bSkgKiBiaXRjbnQpOwogCQkJaWYgKChibGst PmJpbWdfaW5mbyAmIEJLUElNQUdFX0hBU19IT0xFKSAhPSAwKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbGliL2Jsb29tZmlsdGVyLmMgYi9zcmMvYmFja2VuZC9saWIvYmxvb21maWx0ZXIuYwpp bmRleCAzNjBkMjFjYTQ1Li5jMDFiMDY5YzAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWIv Ymxvb21maWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9saWIvYmxvb21maWx0ZXIuYwpAQCAtMTg3 LDcgKzE4Nyw3IEBAIGRvdWJsZQogYmxvb21fcHJvcF9iaXRzX3NldChibG9vbV9maWx0ZXIgKmZp bHRlcikKIHsKIAlpbnQJCQliaXRzZXRfYnl0ZXMgPSBmaWx0ZXItPm0gLyBCSVRTX1BFUl9CWVRF OwotCXVpbnQ2NAkJYml0c19zZXQgPSBwZ19wb3Bjb3VudCgoY2hhciAqKSBmaWx0ZXItPmJpdHNl dCwgYml0c2V0X2J5dGVzKTsKKwl1aW50NjQJCWJpdHNfc2V0ID0gUEdfUE9QQ09VTlQoKGNoYXIg KikgZmlsdGVyLT5iaXRzZXQsIGJpdHNldF9ieXRlcyk7CiAKIAlyZXR1cm4gYml0c19zZXQgLyAo ZG91YmxlKSBmaWx0ZXItPm07CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3N5c2xvZ2dlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYwppbmRleCAw OGVmZTc0Y2M5Li44NWM1N2IzMTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3N5c2xvZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvc3lzbG9nZ2VyLmMKQEAg LTg5OCw3ICs4OTgsNyBAQCBwcm9jZXNzX3BpcGVfaW5wdXQoY2hhciAqbG9nYnVmZmVyLCBpbnQg KmJ5dGVzX2luX2xvZ2J1ZmZlcikKIAkJaWYgKHAubnVsc1swXSA9PSAnXDAnICYmIHAubnVsc1sx XSA9PSAnXDAnICYmCiAJCQlwLmxlbiA+IDAgJiYgcC5sZW4gPD0gUElQRV9NQVhfUEFZTE9BRCAm JgogCQkJcC5waWQgIT0gMCAmJgotCQkJcGdfcG9wY291bnQoKGNoYXIgKikgJmRlc3RfZmxhZ3Ms IDEpID09IDEpCisJCQlQR19QT1BDT1VOVCgoY2hhciAqKSAmZGVzdF9mbGFncywgMSkgPT0gMSkK IAkJewogCQkJTGlzdAkgICAqYnVmZmVyX2xpc3Q7CiAJCQlMaXN0Q2VsbCAgICpjZWxsOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RzZ2lzdGlkeC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3RzZ2lzdGlkeC5jCmluZGV4IDU2OThlZTU1MDIuLmQ3YTc2ZmFmMzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90c2dpc3RpZHguYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdHNnaXN0aWR4LmMKQEAgLTQ4OSw3ICs0ODksNyBAQCBndHN2ZWN0b3Jfc2Ft ZShQR19GVU5DVElPTl9BUkdTKQogc3RhdGljIGludDMyCiBzaXplYml0dmVjKEJJVFZFQ1Agc2ln biwgaW50IHNpZ2xlbikKIHsKLQlyZXR1cm4gcGdfcG9wY291bnQoc2lnbiwgc2lnbGVuKTsKKwly ZXR1cm4gUEdfUE9QQ09VTlQoc2lnbiwgc2lnbGVuKTsKIH0KIAogc3RhdGljIGludApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmJpdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3ZhcmJpdC5jCmluZGV4IDhmY2YzZmI3MzEuLjNmMjg3Y2Q1NGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC92YXJiaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv dmFyYml0LmMKQEAgLTEyMTIsNyArMTIxMiw3IEBAIGJpdF9iaXRfY291bnQoUEdfRlVOQ1RJT05f QVJHUykKIHsKIAlWYXJCaXQJICAgKmFyZyA9IFBHX0dFVEFSR19WQVJCSVRfUCgwKTsKIAotCVBH X1JFVFVSTl9JTlQ2NChwZ19wb3Bjb3VudCgoY2hhciAqKSBWQVJCSVRTKGFyZyksIFZBUkJJVEJZ VEVTKGFyZykpKTsKKwlQR19SRVRVUk5fSU5UNjQoUEdfUE9QQ09VTlQoKGNoYXIgKikgVkFSQklU UyhhcmcpLCBWQVJCSVRCWVRFUyhhcmcpKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvdmFybGVuYS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3ZhcmxlbmEu YwppbmRleCA4ZDI4ZGQ0MmNlLi44MDllNmE1OWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvdmFybGVuYS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC92YXJsZW5hLmMK QEAgLTMxNTEsNyArMzE1MSw3IEBAIGJ5dGVhX2JpdF9jb3VudChQR19GVU5DVElPTl9BUkdTKQog ewogCWJ5dGVhCSAgICp0MSA9IFBHX0dFVEFSR19CWVRFQV9QUCgwKTsKIAotCVBHX1JFVFVSTl9J TlQ2NChwZ19wb3Bjb3VudChWQVJEQVRBX0FOWSh0MSksIFZBUlNJWkVfQU5ZX0VYSERSKHQxKSkp OworCVBHX1JFVFVSTl9JTlQ2NChQR19QT1BDT1VOVChWQVJEQVRBX0FOWSh0MSksIFZBUlNJWkVf QU5ZX0VYSERSKHQxKSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvTWFrZWZpbGUg Yi9zcmMvcG9ydC9NYWtlZmlsZQppbmRleCBkY2M4NzM3ZTY4Li4xNDk5OTg1ZGZjIDEwMDY0NAot LS0gYS9zcmMvcG9ydC9NYWtlZmlsZQorKysgYi9zcmMvcG9ydC9NYWtlZmlsZQpAQCAtNDQsNiAr NDQsOCBAQCBPQkpTID0gXAogCW5vYmxvY2subyBcCiAJcGF0aC5vIFwKIAlwZ19iaXR1dGlscy5v IFwKKwlwZ19wb3Bjb3VudF94ODZfNjRfY2hvb3NlLm8gXAorCXBnX3BvcGNvdW50X3g4Nl82NF9h Y2NlbC5vIFwKIAlwZ19zdHJvbmdfcmFuZG9tLm8gXAogCXBnY2hlY2tkaXIubyBcCiAJcGdta2Rp cnAubyBcCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9tZXNvbi5idWlsZCBiL3NyYy9wb3J0L21lc29u LmJ1aWxkCmluZGV4IDkyYjU5M2U2ZWYuLmNmNmU5ZmEwNmMgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0 L21lc29uLmJ1aWxkCisrKyBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCkBAIC03LDYgKzcsOCBAQCBw Z3BvcnRfc291cmNlcyA9IFsKICAgJ25vYmxvY2suYycsCiAgICdwYXRoLmMnLAogICAncGdfYml0 dXRpbHMuYycsCisgICdwZ19wb3Bjb3VudF94ODZfNjRfY2hvb3NlLmMnLAorICAncGdfcG9wY291 bnRfeDg2XzY0X2FjY2VsLmMnLAogICAncGdfc3Ryb25nX3JhbmRvbS5jJywKICAgJ3BnY2hlY2tk aXIuYycsCiAgICdwZ21rZGlycC5jJywKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX2JpdHV0aWxz LmMgYi9zcmMvcG9ydC9wZ19iaXR1dGlscy5jCmluZGV4IGU2Mjk5NjkwMzUuLmYwODgyMGIzNWIg MTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX2JpdHV0aWxzLmMKKysrIGIvc3JjL3BvcnQvcGdfYml0 dXRpbHMuYwpAQCAtMTEsMTQgKzExLDYgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjaW5j bHVkZSAiYy5oIgotCi0jaWZkZWYgSEFWRV9fR0VUX0NQVUlECi0jaW5jbHVkZSA8Y3B1aWQuaD4K LSNlbmRpZgotI2lmZGVmIEhBVkVfX0NQVUlECi0jaW5jbHVkZSA8aW50cmluLmg+Ci0jZW5kaWYK LQogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKIAogCkBAIC0xMDMsMTY3ICs5NSw2IEBA IGNvbnN0IHVpbnQ4IHBnX251bWJlcl9vZl9vbmVzWzI1Nl0gPSB7CiAJNCwgNSwgNSwgNiwgNSwg NiwgNiwgNywgNSwgNiwgNiwgNywgNiwgNywgNywgOAogfTsKIAotLy8gc3RhdGljIGlubGluZSBp bnQgcGdfcG9wY291bnQzMl9zbG93KHVpbnQzMiB3b3JkKTsKLS8vIHN0YXRpYyBpbmxpbmUgaW50 IHBnX3BvcGNvdW50NjRfc2xvdyh1aW50NjQgd29yZCk7Ci0vLyBzdGF0aWMgdWludDY0IHBnX3Bv cGNvdW50X3Nsb3coY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwotCi0jaWZkZWYgVFJZX1BP UENOVF9GQVNUCi1zdGF0aWMgYm9vbCBwZ19wb3Bjb3VudF9hdmFpbGFibGUodm9pZCk7Ci1zdGF0 aWMgaW50CXBnX3BvcGNvdW50MzJfY2hvb3NlKHVpbnQzMiB3b3JkKTsKLXN0YXRpYyBpbnQJcGdf cG9wY291bnQ2NF9jaG9vc2UodWludDY0IHdvcmQpOwotc3RhdGljIHVpbnQ2NCBwZ19wb3Bjb3Vu dF9jaG9vc2UoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwotc3RhdGljIGlubGluZSBpbnQg cGdfcG9wY291bnQzMl9mYXN0KHVpbnQzMiB3b3JkKTsKLXN0YXRpYyBpbmxpbmUgaW50IHBnX3Bv cGNvdW50NjRfZmFzdCh1aW50NjQgd29yZCk7Ci1zdGF0aWMgdWludDY0IHBnX3BvcGNvdW50X2Zh c3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwotCi1pbnQJCQkoKnBnX3BvcGNvdW50MzIp ICh1aW50MzIgd29yZCkgPSBwZ19wb3Bjb3VudDMyX2Nob29zZTsKLWludAkJCSgqcGdfcG9wY291 bnQ2NCkgKHVpbnQ2NCB3b3JkKSA9IHBnX3BvcGNvdW50NjRfY2hvb3NlOwotdWludDY0CQkoKnBn X3BvcGNvdW50KSAoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpID0gcGdfcG9wY291bnRfY2hv b3NlOwotCi0vKgotICogUmV0dXJuIHRydWUgaWYgQ1BVSUQgaW5kaWNhdGVzIHRoYXQgdGhlIFBP UENOVCBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUuCi0gKi8KLXN0YXRpYyBib29sCi1wZ19wb3Bj b3VudF9hdmFpbGFibGUodm9pZCkKLXsKLQl1bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAs IDB9OwotCi0jaWYgZGVmaW5lZChIQVZFX19HRVRfQ1BVSUQpCi0JX19nZXRfY3B1aWQoMSwgJmV4 eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfX0NQ VUlEKQotCV9fY3B1aWQoZXh4LCAxKTsKLSNlbHNlCi0jZXJyb3IgY3B1aWQgaW5zdHJ1Y3Rpb24g bm90IGF2YWlsYWJsZQotI2VuZGlmCi0KLQlyZXR1cm4gKGV4eFsyXSAmICgxIDw8IDIzKSkgIT0g MDsJLyogUE9QQ05UICovCi19Ci0KLS8qCi0gKiBUaGVzZSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCBv biB0aGUgZmlyc3QgY2FsbCB0byBwZ19wb3Bjb3VudDMyIGV0Yy4KLSAqIFRoZXkgZGV0ZWN0IHdo ZXRoZXIgd2UgY2FuIHVzZSB0aGUgYXNtIGltcGxlbWVudGF0aW9ucywgYW5kIHJlcGxhY2UKLSAq IHRoZSBmdW5jdGlvbiBwb2ludGVycyBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRl ZCBkaXJlY3RseSB0bwotICogdGhlIGNob3NlbiBpbXBsZW1lbnRhdGlvbi4KLSAqLwotc3RhdGlj IGlubGluZSB2b2lkIHNldF9mdW5jdGlvbl9wb2ludGVycygpCi17Ci0JaWYgKHBnX3BvcGNvdW50 X2F2YWlsYWJsZSgpKQotCXsKLQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfZmFzdDsK LQkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNvdW50NjRfZmFzdDsKLQkJcGdfcG9wY291bnQgPSBw Z19wb3Bjb3VudF9mYXN0OwotCX0KLQllbHNlCi0JewotCQlwZ19wb3Bjb3VudDMyID0gcGdfcG9w Y291bnQzMl9zbG93OwotCQlwZ19wb3Bjb3VudDY0ID0gcGdfcG9wY291bnQ2NF9zbG93OwotCQlw Z19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X3Nsb3c7Ci0JfQotfQotCi1zdGF0aWMgaW50Ci1wZ19w b3Bjb3VudDMyX2Nob29zZSh1aW50MzIgd29yZCkKLXsKLQlzZXRfZnVuY3Rpb25fcG9pbnRlcnMo KTsKLQlyZXR1cm4gcGdfcG9wY291bnQzMih3b3JkKTsKLX0KLQotc3RhdGljIGludAotcGdfcG9w Y291bnQ2NF9jaG9vc2UodWludDY0IHdvcmQpCi17Ci0Jc2V0X2Z1bmN0aW9uX3BvaW50ZXJzKCk7 Ci0JcmV0dXJuIHBnX3BvcGNvdW50NjQod29yZCk7Ci19Ci0KLXN0YXRpYyB1aW50NjQKLXBnX3Bv cGNvdW50X2Nob29zZShjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKLXsKLQlzZXRfZnVuY3Rp b25fcG9pbnRlcnMoKTsKLQlyZXR1cm4gcGdfcG9wY291bnQoYnVmLCBieXRlcyk7Ci19Ci0KLS8q Ci0gKiBwZ19wb3Bjb3VudDMyX2Zhc3QKLSAqCQlSZXR1cm4gdGhlIG51bWJlciBvZiAxIGJpdHMg c2V0IGluIHdvcmQKLSAqLwotc3RhdGljIGlubGluZSBpbnQKLXBnX3BvcGNvdW50MzJfZmFzdCh1 aW50MzIgd29yZCkKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCXJldHVybiBfX3BvcGNudCh3b3JkKTsK LSNlbHNlCi0JdWludDMyCQlyZXM7Ci0KLV9fYXNtX18gX192b2xhdGlsZV9fKCIgcG9wY250bCAl MSwlMFxuIjoiPXEiKHJlcyk6InJtIih3b3JkKToiY2MiKTsKLQlyZXR1cm4gKGludCkgcmVzOwot I2VuZGlmCi19Ci0KLS8qCi0gKiBwZ19wb3Bjb3VudDY0X2Zhc3QKLSAqCQlSZXR1cm4gdGhlIG51 bWJlciBvZiAxIGJpdHMgc2V0IGluIHdvcmQKLSAqLwotc3RhdGljIGlubGluZSBpbnQKLXBnX3Bv cGNvdW50NjRfZmFzdCh1aW50NjQgd29yZCkKLXsKLSNpZmRlZiBfTVNDX1ZFUgotCXJldHVybiBf X3BvcGNudDY0KHdvcmQpOwotI2Vsc2UKLQl1aW50NjQJCXJlczsKLQotX19hc21fXyBfX3ZvbGF0 aWxlX18oIiBwb3BjbnRxICUxLCUwXG4iOiI9cSIocmVzKToicm0iKHdvcmQpOiJjYyIpOwotCXJl dHVybiAoaW50KSByZXM7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIHBnX3BvcGNvdW50X2Zhc3QKLSAq CQlSZXR1cm5zIHRoZSBudW1iZXIgb2YgMS1iaXRzIGluIGJ1ZgotICovCi1zdGF0aWMgaW5saW5l IHVpbnQ2NAotcGdfcG9wY291bnRfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKLXsK LQl1aW50NjQJCXBvcGNudCA9IDA7Ci0KLSNpZiBTSVpFT0ZfVk9JRF9QID49IDgKLQkvKiBQcm9j ZXNzIGluIDY0LWJpdCBjaHVua3MgaWYgdGhlIGJ1ZmZlciBpcyBhbGlnbmVkLiAqLwotCWlmIChi dWYgPT0gKGNvbnN0IGNoYXIgKikgVFlQRUFMSUdOKDgsIGJ1ZikpCi0JewotCQljb25zdCB1aW50 NjQgKndvcmRzID0gKGNvbnN0IHVpbnQ2NCAqKSBidWY7Ci0KLQkJd2hpbGUgKGJ5dGVzID49IDgp Ci0JCXsKLQkJCXBvcGNudCArPSBQR19QT1BDT1VOVDY0KCp3b3JkcysrKTsKLQkJCWJ5dGVzIC09 IDg7Ci0JCX0KLQotCQlidWYgPSAoY29uc3QgY2hhciAqKSB3b3JkczsKLQl9Ci0jZWxzZQotCS8q IFByb2Nlc3MgaW4gMzItYml0IGNodW5rcyBpZiB0aGUgYnVmZmVyIGlzIGFsaWduZWQuICovCi0J aWYgKGJ1ZiA9PSAoY29uc3QgY2hhciAqKSBUWVBFQUxJR04oNCwgYnVmKSkKLQl7Ci0JCWNvbnN0 IHVpbnQzMiAqd29yZHMgPSAoY29uc3QgdWludDMyICopIGJ1ZjsKLQotCQl3aGlsZSAoYnl0ZXMg Pj0gNCkKLQkJewotCQkJcG9wY250ICs9IFBHX1BPUENPVU5UMzIoKndvcmRzKyspOwotCQkJYnl0 ZXMgLT0gNDsKLQkJfQotCi0JCWJ1ZiA9IChjb25zdCBjaGFyICopIHdvcmRzOwotCX0KLSNlbmRp ZgotCi0JLyogUHJvY2VzcyBhbnkgcmVtYWluaW5nIGJ5dGVzICovCi0Jd2hpbGUgKGJ5dGVzLS0p Ci0JCXBvcGNudCArPSBwZ19udW1iZXJfb2Zfb25lc1sodW5zaWduZWQgY2hhcikgKmJ1ZisrXTsK LQotCXJldHVybiBwb3BjbnQ7Ci19Ci0KLSNlbmRpZgkJCQkJCQkvKiBUUllfUE9QQ05UX0ZBU1Qg Ki8KLQogCiAvKgogICogcGdfcG9wY291bnQzMl9zbG93CkBAIC0zMTksNyArMTUwLDcgQEAgcGdf cG9wY291bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKQogICogcGdfcG9wY291bnRfc2xvdwogICoJCVJl dHVybnMgdGhlIG51bWJlciBvZiAxLWJpdHMgaW4gYnVmCiAgKi8KLXVpbnQ2NAoraW5saW5lIHVp bnQ2NAogcGdfcG9wY291bnRfc2xvdyhjb25zdCBjaGFyICpidWYsIGludCBieXRlcykKIHsKIAl1 aW50NjQJCXBvcGNudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODZf NjRfYWNjZWwuYyBiL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Nl82NF9hY2NlbC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ2M2U4YWEzMGYKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODZfNjRfYWNjZWwuYwpAQCAtMCwwICsxLDEwMSBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcG9wY291bnRfeDg2XzY0X2FjY2VsLmMK KyAqCSAgTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMgZm9yIGJpdC13aXNlIG9wZXJhdGlvbnMuCisg KgorICogQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9wb3J0L3BnX3BvcGNvdW50X3g4 Nl82NF9hY2NlbC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJjLmgi CisjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorCisjaWZkZWYgVFJZX1BPUENOVF9GQVNU CitpbnQgcGdfcG9wY291bnQzMl9mYXN0KHVpbnQzMiB3b3JkKTsKK2ludCBwZ19wb3Bjb3VudDY0 X2Zhc3QodWludDY0IHdvcmQpOwordWludDY0IHBnX3BvcGNvdW50X2Zhc3QoY29uc3QgY2hhciAq YnVmLCBpbnQgYnl0ZXMpOworCisvKgorICogcGdfcG9wY291bnQzMl9mYXN0CisgKgkJUmV0dXJu IHRoZSBudW1iZXIgb2YgMSBiaXRzIHNldCBpbiB3b3JkCisgKi8KK2ludAorcGdfcG9wY291bnQz Ml9mYXN0KHVpbnQzMiB3b3JkKQoreworI2lmZGVmIF9NU0NfVkVSCisJcmV0dXJuIF9fcG9wY250 KHdvcmQpOworI2Vsc2UKKwl1aW50MzIJCXJlczsKKworX19hc21fXyBfX3ZvbGF0aWxlX18oIiBw b3BjbnRsICUxLCUwXG4iOiI9cSIocmVzKToicm0iKHdvcmQpOiJjYyIpOworCXJldHVybiAoaW50 KSByZXM7CisjZW5kaWYKK30KKworLyoKKyAqIHBnX3BvcGNvdW50NjRfZmFzdAorICoJCVJldHVy biB0aGUgbnVtYmVyIG9mIDEgYml0cyBzZXQgaW4gd29yZAorICovCitpbnQKK3BnX3BvcGNvdW50 NjRfZmFzdCh1aW50NjQgd29yZCkKK3sKKyNpZmRlZiBfTVNDX1ZFUgorCXJldHVybiBfX3BvcGNu dDY0KHdvcmQpOworI2Vsc2UKKwl1aW50NjQJCXJlczsKKworX19hc21fXyBfX3ZvbGF0aWxlX18o IiBwb3BjbnRxICUxLCUwXG4iOiI9cSIocmVzKToicm0iKHdvcmQpOiJjYyIpOworCXJldHVybiAo aW50KSByZXM7CisjZW5kaWYKK30KKworLyoKKyAqIHBnX3BvcGNvdW50X2Zhc3QKKyAqCQlSZXR1 cm5zIHRoZSBudW1iZXIgb2YgMS1iaXRzIGluIGJ1ZgorICovCit1aW50NjQKK3BnX3BvcGNvdW50 X2Zhc3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCit7CisJdWludDY0CQlwb3BjbnQgPSAw OworCisjaWYgU0laRU9GX1ZPSURfUCA+PSA4CisJLyogUHJvY2VzcyBpbiA2NC1iaXQgY2h1bmtz IGlmIHRoZSBidWZmZXIgaXMgYWxpZ25lZC4gKi8KKwlpZiAoYnVmID09IChjb25zdCBjaGFyICop IFRZUEVBTElHTig4LCBidWYpKQorCXsKKwkJY29uc3QgdWludDY0ICp3b3JkcyA9IChjb25zdCB1 aW50NjQgKikgYnVmOworCisJCXdoaWxlIChieXRlcyA+PSA4KQorCQl7CisJCQlwb3BjbnQgKz0g UEdfUE9QQ09VTlQ2NCgqd29yZHMrKyk7CisJCQlieXRlcyAtPSA4OworCQl9CisKKwkJYnVmID0g KGNvbnN0IGNoYXIgKikgd29yZHM7CisJfQorI2Vsc2UKKwkvKiBQcm9jZXNzIGluIDMyLWJpdCBj aHVua3MgaWYgdGhlIGJ1ZmZlciBpcyBhbGlnbmVkLiAqLworCWlmIChidWYgPT0gKGNvbnN0IGNo YXIgKikgVFlQRUFMSUdOKDQsIGJ1ZikpCisJeworCQljb25zdCB1aW50MzIgKndvcmRzID0gKGNv bnN0IHVpbnQzMiAqKSBidWY7CisKKwkJd2hpbGUgKGJ5dGVzID49IDQpCisJCXsKKwkJCXBvcGNu dCArPSBQR19QT1BDT1VOVDMyKCp3b3JkcysrKTsKKwkJCWJ5dGVzIC09IDQ7CisJCX0KKworCQli dWYgPSAoY29uc3QgY2hhciAqKSB3b3JkczsKKwl9CisjZW5kaWYKKworCS8qIFByb2Nlc3MgYW55 IHJlbWFpbmluZyBieXRlcyAqLworCXdoaWxlIChieXRlcy0tKQorCQlwb3BjbnQgKz0gcGdfbnVt YmVyX29mX29uZXNbKHVuc2lnbmVkIGNoYXIpICpidWYrK107CisKKwlyZXR1cm4gcG9wY250Owor fQorCisjZW5kaWYJCQkJCQkJLyogVFJZX1BPUENOVF9GQVNUICovCmRpZmYgLS1naXQgYS9zcmMv cG9ydC9wZ19wb3Bjb3VudF94ODZfNjRfY2hvb3NlLmMgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF94 ODZfNjRfY2hvb3NlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWEw MDIyYTBiMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Nl82NF9j aG9vc2UuYwpAQCAtMCwwICsxLDk4IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19w b3Bjb3VudF94ODZfNjRfY2hvb3NlLmMKKyAqCSAgTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMgZm9y IGJpdC13aXNlIG9wZXJhdGlvbnMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkg IHNyYy9wb3J0L3BnX3BvcGNvdW50X3g4Nl82NF9jaG9vc2UuYworICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisjaW5jbHVkZSAiYy5oIgorCisjaWZkZWYgSEFWRV9fR0VUX0NQVUlECisjaW5j bHVkZSA8Y3B1aWQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfX0NQVUlECisjaW5jbHVkZSA8aW50 cmluLmg+CisjZW5kaWYKKworI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKworI2lmZGVm IFRSWV9QT1BDTlRfRkFTVAoraW50IHBnX3BvcGNvdW50MzJfZmFzdCh1aW50MzIgd29yZCk7Citp bnQgcGdfcG9wY291bnQ2NF9mYXN0KHVpbnQ2NCB3b3JkKTsKK3VpbnQ2NCBwZ19wb3Bjb3VudF9m YXN0KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKTsKKworc3RhdGljIGludAlwZ19wb3Bjb3Vu dDMyX2Nob29zZSh1aW50MzIgd29yZCk7CitzdGF0aWMgaW50CXBnX3BvcGNvdW50NjRfY2hvb3Nl KHVpbnQ2NCB3b3JkKTsKK3N0YXRpYyB1aW50NjQgcGdfcG9wY291bnRfY2hvb3NlKGNvbnN0IGNo YXIgKmJ1ZiwgaW50IGJ5dGVzKTsKKworaW50CQkJKCpwZ19wb3Bjb3VudDMyKSAodWludDMyIHdv cmQpID0gcGdfcG9wY291bnQzMl9jaG9vc2U7CitpbnQJCQkoKnBnX3BvcGNvdW50NjQpICh1aW50 NjQgd29yZCkgPSBwZ19wb3Bjb3VudDY0X2Nob29zZTsKK3VpbnQ2NAkJKCpwZ19wb3Bjb3VudCkg KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKSA9IHBnX3BvcGNvdW50X2Nob29zZTsKKworLyoK KyAqIFJldHVybiB0cnVlIGlmIENQVUlEIGluZGljYXRlcyB0aGF0IHRoZSBQT1BDTlQgaW5zdHJ1 Y3Rpb24gaXMgYXZhaWxhYmxlLgorICovCitzdGF0aWMgYm9vbAorcGdfcG9wY291bnRfYXZhaWxh YmxlKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKworI2lm IGRlZmluZWQoSEFWRV9fR0VUX0NQVUlEKQorCV9fZ2V0X2NwdWlkKDEsICZleHhbMF0sICZleHhb MV0sICZleHhbMl0sICZleHhbM10pOworI2VsaWYgZGVmaW5lZChIQVZFX19DUFVJRCkKKwlfX2Nw dWlkKGV4eCwgMSk7CisjZWxzZQorI2Vycm9yIGNwdWlkIGluc3RydWN0aW9uIG5vdCBhdmFpbGFi bGUKKyNlbmRpZgorCisJcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8qIFBPUENO VCAqLworfQorCisvKgorICogVGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhlIGZpcnN0 IGNhbGwgdG8gcGdfcG9wY291bnQzMiBldGMuCisgKiBUaGV5IGRldGVjdCB3aGV0aGVyIHdlIGNh biB1c2UgdGhlIGFzbSBpbXBsZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCisgKiB0aGUgZnVuY3Rp b24gcG9pbnRlcnMgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIGFyZSByb3V0ZWQgZGlyZWN0bHkg dG8KKyAqIHRoZSBjaG9zZW4gaW1wbGVtZW50YXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9p ZCBzZXRfZnVuY3Rpb25fcG9pbnRlcnMoKQoreworCWlmIChwZ19wb3Bjb3VudF9hdmFpbGFibGUo KSkKKwl7CisJCXBnX3BvcGNvdW50MzIgPSBwZ19wb3Bjb3VudDMyX2Zhc3Q7CisJCXBnX3BvcGNv dW50NjQgPSBwZ19wb3Bjb3VudDY0X2Zhc3Q7CisJCXBnX3BvcGNvdW50ID0gcGdfcG9wY291bnRf ZmFzdDsKKwl9CisJZWxzZQorCXsKKwkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfc2xv dzsKKwkJcGdfcG9wY291bnQ2NCA9IHBnX3BvcGNvdW50NjRfc2xvdzsKKwkJcGdfcG9wY291bnQg PSBwZ19wb3Bjb3VudF9zbG93OworCX0KK30KKworc3RhdGljIGludAorcGdfcG9wY291bnQzMl9j aG9vc2UodWludDMyIHdvcmQpCit7CisJc2V0X2Z1bmN0aW9uX3BvaW50ZXJzKCk7CisJcmV0dXJu IHBnX3BvcGNvdW50MzIod29yZCk7Cit9CisKK3N0YXRpYyBpbnQKK3BnX3BvcGNvdW50NjRfY2hv b3NlKHVpbnQ2NCB3b3JkKQoreworCXNldF9mdW5jdGlvbl9wb2ludGVycygpOworCXJldHVybiBw Z19wb3Bjb3VudDY0KHdvcmQpOworfQorCitzdGF0aWMgdWludDY0CitwZ19wb3Bjb3VudF9jaG9v c2UoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpCit7CisJc2V0X2Z1bmN0aW9uX3BvaW50ZXJz KCk7CisJcmV0dXJuIHBnX3BvcGNvdW50KGJ1ZiwgYnl0ZXMpOworfQorI2VuZGlmCQkJCQkJCS8q IFRSWV9QT1BDTlRfRkFTVCAqLwotLSAKMi4zNC4xCgo= --_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_ Content-Type: application/octet-stream; name="v10-0003-Feature-Add-POPCNT512-accelerated-functionality-for-.patch" Content-Description: v10-0003-Feature-Add-POPCNT512-accelerated-functionality-for-.patch Content-Disposition: attachment; filename="v10-0003-Feature-Add-POPCNT512-accelerated-functionality-for-.patch"; size=24081; creation-date="Tue, 19 Mar 2024 22:54:29 GMT"; modification-date="Tue, 19 Mar 2024 22:56:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBiNTg2ZTU1OGQ4ZWVjMGY1ZDVjNDVkZmFiZWMzMTdhZDUzMDBlOGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEFtb25zb24gPHBhdWwuZC5hbW9uc29uQGludGVsLmNv bT4KRGF0ZTogVHVlLCAxOSBNYXIgMjAyNCAxMzo0MDowNCAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg My8zXSBbRmVhdHVyZV0gQWRkIFBPUENOVDUxMiBhY2NlbGVyYXRlZCBmdW5jdGlvbmFsaXR5IGZv cgogeDg2XzY0LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBBbW9uc29uIDxwYXVsLmQuYW1vbnNvbkBp bnRlbC5jb20+Ci0tLQogY29uZmlnL2MtY29tcGlsZXIubTQgICAgICAgICAgICAgICAgIHwgIDM3 ICsrKysrCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDUgKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNDQgKysrKysrCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NzIgKysrKysrKysrKwogc3JjL01ha2VmaWxlLmdsb2JhbC5pbiAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3VzZXIuYyAgICAgICAgICB8ICAgMiArLQogc3JjL2lu Y2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAgICAgIHwgIDEyICsrCiBzcmMvaW5jbHVkZS9wb3J0 L3BnX2JpdHV0aWxzLmggICAgICAgfCAgIDYgKy0KIHNyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQg ICAgICAgICAgICB8ICAgMSArCiBzcmMvcG9ydC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg fCAgIDUgKwogc3JjL3BvcnQvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvcG9ydC9wZ19wb3Bjb3VudF94ODZfNjRfYWNjZWwuYyAgfCAgMzMgKysrKysKIHNyYy9wb3J0 L3BnX3BvcGNvdW50X3g4Nl82NF9jaG9vc2UuYyB8ICA2OCArKysrKysrKy0KIDEzIGZpbGVzIGNo YW5nZWQsIDQ3OSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9j b25maWcvYy1jb21waWxlci5tNCBiL2NvbmZpZy9jLWNvbXBpbGVyLm00CmluZGV4IDMyNjhhNzgw YmIuLjk0ZTNlNzEzYWEgMTAwNjQ0Ci0tLSBhL2NvbmZpZy9jLWNvbXBpbGVyLm00CisrKyBiL2Nv bmZpZy9jLWNvbXBpbGVyLm00CkBAIC02OTQsMyArNjk0LDQwIEBAIGlmIHRlc3QgeCIkQWNfY2Fj aGV2YXIiID0geCJ5ZXMiOyB0aGVuCiBmaQogdW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKIF0p IyBQR0FDX0xPT05HQVJDSF9DUkMzMkNfSU5UUklOU0lDUworCisjIFBHQUNfQVZYNTEyX1BPUENO VF9JTlRSSU5TSUNTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBpZiB0 aGUgY29tcGlsZXIgc3VwcG9ydHMgdGhlIHg4Nl82NCBBVlg1MTIgUE9QQ05UIGluc3RydWN0aW9u cyB1c2luZworIyBpbnRyaW5zaWNzIHVzZWQgaW4gQ1BVSUQgZmVhdHVyZXMgQVZYNTEyRiBhbmQg QVZYNTEyVlBPUENOVERRLgorIworIyBPcHRpb25hbCBjb21waWxlciBmbGFncyBjYW4gYmUgcGFz c2VkIGFzIGFyZ3VtZW50IChlLmcuIC1tYXZ4NTEydnBvcGNudGRxKS4KKyMgSWYgdGhlIGludHJp bnNpY3MgYXJlIHN1cHBvcnRlZCB0aGVuIHBnYWNfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzIGFu ZAorIyBDRkxBR1NfQVZYNTEyX1BPUENOVCBhcmUgc2V0LgorQUNfREVGVU4oW1BHQUNfQVZYNTEy X1BPUENOVF9JTlRSSU5TSUNTXSwKK1tkZWZpbmUoW0FjX2NhY2hldmFyXSwgW0FTX1RSX1NIKFtw Z2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc18kMV0pXSlkbmwKK0FDX0NBQ0hFX0NIRUNL KFtmb3IgX21tNTEyX3BvcGNudF9lcGk2NCB3aXRoIENGTEFHUz0kMV0sIFtBY19jYWNoZXZhcl0s CitbcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTICQx IgorQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGltbWludHJpbi5o PgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0 cmluZy5oPl0sCisgIFtjb25zdCB1aW50NjRfdCAqYnVmID0gbWFsbG9jKChzaXplX3QpNjQpOwor ICAgdWludDY0X3QgcG9wY250ID0gMDsKKyAgIF9fbTUxMmkgYWNjdW11bGF0b3IgPSBfbW01MTJf c2V0emVyb19zaTUxMigpOworICAgY29uc3QgX19tNTEyaSB2ID0gX21tNTEyX2xvYWR1X3NpNTEy KChjb25zdCBfX201MTJpICopYnVmKTsKKyAgIGNvbnN0IF9fbTUxMmkgcCA9IF9tbTUxMl9wb3Bj bnRfZXBpNjQodik7CisgICBtZW1zZXQoYnVmLCAwLCA2NCk7CisgICBhY2N1bXVsYXRvciA9IF9t bTUxMl9hZGRfZXBpNjQoYWNjdW11bGF0b3IsIHApOworICAgcG9wY250ID0gX21tNTEyX3JlZHVj ZV9hZGRfZXBpNjQoYWNjdW11bGF0b3IpOworICAgLyogcmV0dXJuIGNvbXB1dGVkIHZhbHVlLCB0 byBwcmV2ZW50IHRoZSBhYm92ZSBiZWluZyBvcHRpbWl6ZWQgYXdheSAqLworICAgcmV0dXJuIHBv cGNudCA9PSAwO10pXSwKKyAgW0FjX2NhY2hldmFyPXllc10sCisgIFtBY19jYWNoZXZhcj1ub10p CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIl0pCitpZiB0ZXN0IHgiJEFjX2NhY2hldmFyIiA9 IHgieWVzIjsgdGhlbgorICBDRkxBR1NfQVZYNTEyX1BPUENOVD0iJDEiCisgIHBnYWNfYXZ4NTEy X3BvcGNudF9pbnRyaW5zaWNzPXllcworZmkKK3VuZGVmaW5lKFtBY19jYWNoZXZhcl0pZG5sCitd KSMgUEdBQ19BVlg1MTJfUE9QQ05UX0lOVFJJTlNJQ1MKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBi L2NvbmZpZ3VyZQppbmRleCAzNmZlZWFmYmIyLi4wZmJmYzdjNzhmIDEwMDc1NQotLS0gYS9jb25m aWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC02NDcsNiArNjQ3LDcgQEAgTVNHRk1UX0ZMQUdTCiBN U0dGTVQKIFBHX0NSQzMyQ19PQkpTCiBDRkxBR1NfQ1JDCitDRkxBR1NfQVZYNTEyX1BPUENOVAog TElCT0JKUwogT1BFTlNTTAogWlNURApAQCAtMTc0MDQsNiArMTc0MDUsNDEgQEAgJGFzX2VjaG8g IiNkZWZpbmUgSEFWRV9fR0VUX0NQVUlEIDEiID4+Y29uZmRlZnMuaAogCiBmaQogCisjIENoZWNr IGZvciB4ODYgY3B1aWRfY291bnQgaW5zdHJ1Y3Rpb24KK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fZ2V0X2NwdWlkX2NvdW50IiA+JjUKKyRh c19lY2hvX24gImNoZWNraW5nIGZvciBfX2dldF9jcHVpZF9jb3VudC4uLiAiID4mNjsgfQoraWYg JHtwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19u ICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3B1aWQuaD4K K2ludAorbWFpbiAoKQorewordW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKKyAg X19nZXRfY3B1aWRfY291bnQoNywgMCwgJmV4eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFsz XSk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAi JExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X19nZXRfY3B1aWRfY291bnQ9InllcyIKK2Vsc2UK KyAgcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50PSJubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRl c3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkcGdhY19jdl9fZ2V0X2NwdWlkX2NvdW50IiA+JjUKKyRhc19lY2hvICIkcGdhY19j dl9fZ2V0X2NwdWlkX2NvdW50IiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlk X2NvdW50IiA9IHgieWVzIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX19HRVRfQ1BV SURfQ09VTlQgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fY3B1aWQiID4mNQogJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIF9fY3B1aWQuLi4gIiA+JjY7IH0KIGlmICR7cGdhY19jdl9fY3B1aWQrOn0g ZmFsc2U7IHRoZW4gOgpAQCAtMTc0MzgsNiArMTc0NzQsMTc1IEBAICRhc19lY2hvICIjZGVmaW5l IEhBVkVfX0NQVUlEIDEiID4+Y29uZmRlZnMuaAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2NwdWlkZXgiID4mNQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIF9fY3B1aWRleC4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2X19j cHVpZGV4Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vs c2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5k IGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGludHJpbi5oPgoraW50CittYWluICgpCit7Cit1 bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZGV4KGV4eFsw XSwgNywgMCk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlf bGluayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X19jcHVpZGV4PSJ5ZXMiCitlbHNlCisg IHBnYWNfY3ZfX2NwdWlkZXg9Im5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0 CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRw Z2FjX2N2X19jcHVpZGV4IiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9fY3B1aWRleCIgPiY2OyB9 CitpZiB0ZXN0IHgiJHBnYWNfY3ZfX2NwdWlkZXgiID0geCJ5ZXMiOyB0aGVuCisKKyRhc19lY2hv ICIjZGVmaW5lIEhBVkVfX0NQVUlERVggMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9faW1taW50cmlu IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2ltbWludHJpbi4uLiAiID4mNjsgfQor aWYgJHtwZ2FjX2N2X19pbW1pbnRyaW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8aW1taW50cmluLmg+ CitpbnQKK21haW4gKCkKK3sKKy8qIERvbid0IGV4Y2x1ZGUgY29kZSBzbyBhZGRlZCByZXR1cm4u ICovCisgICAgcmV0dXJuIDE3MDE7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYg YWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X19pbW1pbnRyaW49 InllcyIKK2Vsc2UKKyAgcGdhY19jdl9faW1taW50cmluPSJubyIKK2ZpCitybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQg Y29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkcGdhY19jdl9faW1taW50cmluIiA+JjUKKyRhc19lY2hvICIkcGdhY19j dl9faW1taW50cmluIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9faW1taW50cmluIiA9IHgi eWVzIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX19JTU1JTlRSSU4gMSIgPj5jb25m ZGVmcy5oCisKK2ZpCisKKyMgQ2hlY2sgZm9yIEludGVsIEFWWDUxMiBpbnRyaW5zaWNzIHRvIGRv IFBPUENOVCBjYWxjdWxhdGlvbnMuCisjCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPSIg PiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgX21tNTEyX3BvcGNudF9lcGk2NCB3aXRoIENG TEFHUz0uLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9hdng1MTJfcG9wY250X2ludHJpbnNpY3Nf Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAg cGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTICIKK2Nh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KK2ludAorbWFpbiAoKQorewor Y29uc3QgdWludDY0X3QgKmJ1ZiA9IG1hbGxvYygoc2l6ZV90KTY0KTsKKyAgIHVpbnQ2NF90IHBv cGNudCA9IDA7CisgICBfX201MTJpIGFjY3VtdWxhdG9yID0gX21tNTEyX3NldHplcm9fc2k1MTIo KTsKKyAgIGNvbnN0IF9fbTUxMmkgdiA9IF9tbTUxMl9sb2FkdV9zaTUxMigoY29uc3QgX19tNTEy aSAqKWJ1Zik7CisgICBjb25zdCBfX201MTJpIHAgPSBfbW01MTJfcG9wY250X2VwaTY0KHYpOwor ICAgbWVtc2V0KGJ1ZiwgMCwgNjQpOworICAgYWNjdW11bGF0b3IgPSBfbW01MTJfYWRkX2VwaTY0 KGFjY3VtdWxhdG9yLCBwKTsKKyAgIHBvcGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KGFj Y3VtdWxhdG9yKTsKKyAgIC8qIHJldHVybiBjb21wdXRlZCB2YWx1ZSwgdG8gcHJldmVudCB0aGUg YWJvdmUgYmVpbmcgb3B0aW1pemVkIGF3YXkgKi8KKyAgIHJldHVybiBwb3BjbnQgPT0gMDsKKyAg OworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7 IHRoZW4gOgorICBwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc189eWVzCitlbHNlCisg IHBnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzXz1ubworZmkKK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj b25mdGVzdC4kYWNfZXh0CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgorZmkKK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9hdng1MTJf cG9wY250X2ludHJpbnNpY3NfIiA+JjUKKyRhc19lY2hvICIkcGdhY19jdl9hdng1MTJfcG9wY250 X2ludHJpbnNpY3NfIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdhY19jdl9hdng1MTJfcG9wY250X2lu dHJpbnNpY3NfIiA9IHgieWVzIjsgdGhlbgorICBDRkxBR1NfQVZYNTEyX1BPUENOVD0iIgorICBw Z2FjX2F2eDUxMl9wb3BjbnRfaW50cmluc2ljcz15ZXMKK2ZpCisKK2lmIHRlc3QgeCIkcGdhY19h dng1MTJfcG9wY250X2ludHJpbnNpY3MiICE9IHgieWVzIjsgdGhlbgorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfbW01MTJfcG9wY250X2Vw aTY0IHdpdGggQ0ZMQUdTPS1tYXZ4NTEydnBvcGNudGRxIiA+JjUKKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciBfbW01MTJfcG9wY250X2VwaTY0IHdpdGggQ0ZMQUdTPS1tYXZ4NTEydnBvcGNudGRx Li4uICIgPiY2OyB9CitpZiAke3BnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzX19tYXZ4 NTEydnBvcGNudGRxKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+ JjYKK2Vsc2UKKyAgcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3NhdmVf Q0ZMQUdTIC1tYXZ4NTEydnBvcGNudGRxIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGltbWludHJp bi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUg PHN0cmluZy5oPgoraW50CittYWluICgpCit7Citjb25zdCB1aW50NjRfdCAqYnVmID0gbWFsbG9j KChzaXplX3QpNjQpOworICAgdWludDY0X3QgcG9wY250ID0gMDsKKyAgIF9fbTUxMmkgYWNjdW11 bGF0b3IgPSBfbW01MTJfc2V0emVyb19zaTUxMigpOworICAgY29uc3QgX19tNTEyaSB2ID0gX21t NTEyX2xvYWR1X3NpNTEyKChjb25zdCBfX201MTJpICopYnVmKTsKKyAgIGNvbnN0IF9fbTUxMmkg cCA9IF9tbTUxMl9wb3BjbnRfZXBpNjQodik7CisgICBtZW1zZXQoYnVmLCAwLCA2NCk7CisgICBh Y2N1bXVsYXRvciA9IF9tbTUxMl9hZGRfZXBpNjQoYWNjdW11bGF0b3IsIHApOworICAgcG9wY250 ID0gX21tNTEyX3JlZHVjZV9hZGRfZXBpNjQoYWNjdW11bGF0b3IpOworICAgLyogcmV0dXJuIGNv bXB1dGVkIHZhbHVlLCB0byBwcmV2ZW50IHRoZSBhYm92ZSBiZWluZyBvcHRpbWl6ZWQgYXdheSAq LworICAgcmV0dXJuIHBvcGNudCA9PSAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitp ZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHBnYWNfY3ZfYXZ4NTEyX3Bv cGNudF9pbnRyaW5zaWNzX19tYXZ4NTEydnBvcGNudGRxPXllcworZWxzZQorICBwZ2FjX2N2X2F2 eDUxMl9wb3BjbnRfaW50cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcT1ubworZmkKK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4 ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitDRkxBR1M9IiRwZ2FjX3NhdmVfQ0ZMQUdTIgorZmkKK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkcGdhY19jdl9h dng1MTJfcG9wY250X2ludHJpbnNpY3NfX21hdng1MTJ2cG9wY250ZHEiID4mNQorJGFzX2VjaG8g IiRwZ2FjX2N2X2F2eDUxMl9wb3BjbnRfaW50cmluc2ljc19fbWF2eDUxMnZwb3BjbnRkcSIgPiY2 OyB9CitpZiB0ZXN0IHgiJHBnYWNfY3ZfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzX19tYXZ4NTEy dnBvcGNudGRxIiA9IHgieWVzIjsgdGhlbgorICBDRkxBR1NfQVZYNTEyX1BPUENOVD0iLW1hdng1 MTJ2cG9wY250ZHEiCisgIHBnYWNfYXZ4NTEyX3BvcGNudF9pbnRyaW5zaWNzPXllcworZmkKKwor CiskYXNfZWNobyAiI2RlZmluZSBIQVZFX19BVlg1MTJfUE9QQ05UIDEiID4+Y29uZmRlZnMuaAor CitmaQorCisKICMgQ2hlY2sgZm9yIEludGVsIFNTRSA0LjIgaW50cmluc2ljcyB0byBkbyBDUkMg Y2FsY3VsYXRpb25zLgogIwogIyBGaXJzdCBjaGVjayBpZiB0aGUgX21tX2NyYzMyX3U4IGFuZCBf bW1fY3JjMzJfdTY0IGludHJpbnNpY3MgY2FuIGJlIHVzZWQKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA1N2Y3MzQ4NzllLi4zYzc0MWQ0NTdkIDEwMDY0NAot LS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yMDUyLDYgKzIwNTIsMTgg QEAgaWYgdGVzdCB4IiRwZ2FjX2N2X19nZXRfY3B1aWQiID0geCJ5ZXMiOyB0aGVuCiAgIEFDX0RF RklORShIQVZFX19HRVRfQ1BVSUQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2dldF9j cHVpZC5dKQogZmkKIAorIyBDaGVjayBmb3IgeDg2IGNwdWlkX2NvdW50IGluc3RydWN0aW9uCitB Q19DQUNIRV9DSEVDSyhbZm9yIF9fZ2V0X2NwdWlkX2NvdW50XSwgW3BnYWNfY3ZfX2dldF9jcHVp ZF9jb3VudF0sCitbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGNw dWlkLmg+XSwKKyAgW1t1bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dl dF9jcHVpZF9jb3VudCg3LCAwLCAmZXh4WzBdLCAmZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsK KyAgXV0pXSwKKyAgW3BnYWNfY3ZfX2dldF9jcHVpZF9jb3VudD0ieWVzIl0sCisgIFtwZ2FjX2N2 X19nZXRfY3B1aWRfY291bnQ9Im5vIl0pXSkKK2lmIHRlc3QgeCIkcGdhY19jdl9fZ2V0X2NwdWlk X2NvdW50IiA9IHgieWVzIjsgdGhlbgorICBBQ19ERUZJTkUoSEFWRV9fR0VUX0NQVUlEX0NPVU5U LCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWQuXSkKK2ZpCisKIEFDX0NB Q0hFX0NIRUNLKFtmb3IgX19jcHVpZF0sIFtwZ2FjX2N2X19jcHVpZF0sCiBbQUNfTElOS19JRkVM U0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPGludHJpbi5oPl0sCiAgIFtbdW5zaWduZWQg aW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsKQEAgLTIwNjMsNiArMjA3NSwzOCBAQCBpZiB0ZXN0 IHgiJHBnYWNfY3ZfX2NwdWlkIiA9IHgieWVzIjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9fQ1BV SUQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2NwdWlkLl0pCiBmaQogCitBQ19DQUNI RV9DSEVDSyhbZm9yIF9fY3B1aWRleF0sIFtwZ2FjX2N2X19jcHVpZGV4XSwKK1tBQ19MSU5LX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8aW50cmluLmg+XSwKKyAgW1t1bnNpZ25l ZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICBfX2dldF9jcHVpZGV4KGV4eFswXSwgNywg MCk7CisgIF1dKV0sCisgIFtwZ2FjX2N2X19jcHVpZGV4PSJ5ZXMiXSwKKyAgW3BnYWNfY3ZfX2Nw dWlkZXg9Im5vIl0pXSkKK2lmIHRlc3QgeCIkcGdhY19jdl9fY3B1aWRleCIgPSB4InllcyI7IHRo ZW4KKyAgQUNfREVGSU5FKEhBVkVfX0NQVUlERVgsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2 ZSBfX2NwdWlkZXguXSkKK2ZpCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgX19pbW1pbnRyaW5dLCBb cGdhY19jdl9faW1taW50cmluXSwKK1tBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsj aW5jbHVkZSA8aW1taW50cmluLmg+XSwKKyAgW1svKiBEb24ndCBleGNsdWRlIGNvZGUgc28gYWRk ZWQgcmV0dXJuLiAqLworICAgIHJldHVybiAxNzAxOworICBdXSldLAorICBbcGdhY19jdl9faW1t aW50cmluPSJ5ZXMiXSwKKyAgW3BnYWNfY3ZfX2ltbWludHJpbj0ibm8iXSldKQoraWYgdGVzdCB4 IiRwZ2FjX2N2X19pbW1pbnRyaW4iID0geCJ5ZXMiOyB0aGVuCisgIEFDX0RFRklORShIQVZFX19J TU1JTlRSSU4sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBpbW1pbnRyaW4uXSkKK2ZpCisK KyMgQ2hlY2sgZm9yIEludGVsIEFWWDUxMiBpbnRyaW5zaWNzIHRvIGRvIFBPUENOVCBjYWxjdWxh dGlvbnMuCisjCitQR0FDX0FWWDUxMl9QT1BDTlRfSU5UUklOU0lDUyhbXSkKK2lmIHRlc3QgeCIk cGdhY19hdng1MTJfcG9wY250X2ludHJpbnNpY3MiICE9IHgieWVzIjsgdGhlbgorICBQR0FDX0FW WDUxMl9QT1BDTlRfSU5UUklOU0lDUyhbLW1hdng1MTJ2cG9wY250ZHFdKQorICBBQ19ERUZJTkUo SEFWRV9fQVZYNTEyX1BPUENOVCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIGNwdQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIEFWWDUxMiBQT1BD TlQuXSkKK2ZpCitBQ19TVUJTVChDRkxBR1NfQVZYNTEyX1BPUENOVCkKKwogIyBDaGVjayBmb3Ig SW50ZWwgU1NFIDQuMiBpbnRyaW5zaWNzIHRvIGRvIENSQyBjYWxjdWxhdGlvbnMuCiAjCiAjIEZp cnN0IGNoZWNrIGlmIHRoZSBfbW1fY3JjMzJfdTggYW5kIF9tbV9jcmMzMl91NjQgaW50cmluc2lj cyBjYW4gYmUgdXNlZApkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRl eCBjOGZkZmViMGVjLi5kNjYxNDA1ZmVlIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9t ZXNvbi5idWlsZApAQCAtMTc4Myw2ICsxNzgzLDM3IEBAIGVsaWYgY2MubGlua3MoJycnCiBlbmRp ZgogCiAKK2lmIGNjLmxpbmtzKCcnJworICAgICNpbmNsdWRlIDxjcHVpZC5oPgorICAgIGludCBt YWluKGludCBhcmcsIGNoYXIgKiphcmd2KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGV4 eFs0XSA9IHswLCAwLCAwLCAwfTsKKyAgICAgICAgX19nZXRfY3B1aWRfY291bnQoNywgMCwgJmV4 eFswXSwgJmV4eFsxXSwgJmV4eFsyXSwgJmV4eFszXSk7CisgICAgfQorICAgICcnJywgbmFtZTog J19fZ2V0X2NwdWlkX2NvdW50JywKKyAgICBhcmdzOiB0ZXN0X2NfYXJncykKKyAgY2RhdGEuc2V0 KCdIQVZFX19HRVRfQ1BVSURfQ09VTlQnLCAxKQorZWxpZiBjYy5saW5rcygnJycKKyAgICAjaW5j bHVkZSA8aW50cmluLmg+CisgICAgaW50IG1haW4oaW50IGFyZywgY2hhciAqKmFyZ3YpCisgICAg eworICAgICAgICB1bnNpZ25lZCBpbnQgZXh4WzRdID0gezAsIDAsIDAsIDB9OworICAgICAgICBf X2NwdWlkZXgoZXh4LCA3LCAwKTsKKyAgICB9CisgICAgJycnLCBuYW1lOiAnX19jcHVpZGV4JywK KyAgICBhcmdzOiB0ZXN0X2NfYXJncykKKyAgY2RhdGEuc2V0KCdIQVZFX19DUFVJREVYJywgMSkK K2VuZGlmCisKKworIyBDaGVjayBmb3IgaGVhZGVyIGltbWludHJpbi5oCitpZiBjYy5oYXNfaGVh ZGVyKCdpbW1pbnRyaW4uaCcsCisgICAgaW5jbHVkZV9kaXJlY3RvcmllczogcG9zdGdyZXNfaW5j LCBhcmdzOiB0ZXN0X2NfYXJncykKKyAgY2RhdGEuc2V0KCdIQVZFX19JTU1JTlRSSU4nLCAxLAor ICAgICAgICAgICAgZGVzY3JpcHRpb246ICdEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgaW1t aW50cmluLmggaGVhZGVyIGZpbGUuJykKK2VuZGlmCisKKwogIyBEZWZlbmQgYWdhaW5zdCBjbGFu ZyBiZWluZyB1c2VkIG9uIHg4Ni0zMiB3aXRob3V0IFNTRTIgZW5hYmxlZC4gIEFzIGN1cnJlbnQK ICMgdmVyc2lvbnMgb2YgY2xhbmcgZG8gbm90IHVuZGVyc3RhbmQgLWZleGNlc3MtcHJlY2lzaW9u PXN0YW5kYXJkLCB0aGUgdXNlIG9mCiAjIHg4NyBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGxl YWRzIHRvIHByb2JsZW1zIGxpa2UgaXNpbmYgcG9zc2libHkgcmV0dXJuaW5nCkBAIC0yMTU3LDYg KzIxODgsNDcgQEAgZWxpZiBob3N0X2NwdSA9PSAncHBjJyBvciBob3N0X2NwdSA9PSAncHBjNjQn CiBlbmRpZgogCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBBVlggNTEyIFBPUENOVCBJbnRyaW5zaWMgY2hlY2sKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworaGF2ZV9hdng1MTJfcG9wY250ID0gZmFsc2UKK2NmbGFnc19hdng1MTJfcG9wY250ID0g W10KK2lmIGhvc3RfY3B1ID09ICd4ODZfNjQnCisgIHRlc3RfZmxhZ3MgPSBbJy1tYXZ4NTEydnBv cGNudGRxJ10KKyAgaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgICAgdGVzdF9mbGFncyA9 IFsnL2FyY2g6QVZYNTEyJ10KKyAgZW5kaWYKKyAgcHJvZyA9ICcnJworICAgICAgI2luY2x1ZGUg PGltbWludHJpbi5oPgorICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAgICAgI2luY2x1ZGUg PHN0ZGxpYi5oPgorICAgICAgI2luY2x1ZGUgPHN0cmluZy5oPgorICAgICAgdm9pZCBtYWluKHZv aWQpCisgICAgICB7CisgICAgICAgIGNvbnN0IHVpbnQ2NF90ICpidWYgPSBtYWxsb2MoKHNpemVf dCk2NCk7CisgICAgICAgIHVpbnQ2NF90IHBvcGNudCA9IDA7CisgICAgICAgIF9fbTUxMmkgYWNj dW11bGF0b3IgPSBfbW01MTJfc2V0emVyb19zaTUxMigpOworICAgICAgICBjb25zdCBfX201MTJp IHYgPSBfbW01MTJfbG9hZHVfc2k1MTIoKGNvbnN0IF9fbTUxMmkgKilidWYpOworICAgICAgICBj b25zdCBfX201MTJpIHAgPSBfbW01MTJfcG9wY250X2VwaTY0KHYpOworICAgICAgICBtZW1zZXQo YnVmLCAwLCA2NCk7CisgICAgICAgIGFjY3VtdWxhdG9yID0gX21tNTEyX2FkZF9lcGk2NChhY2N1 bXVsYXRvciwgcCk7CisgICAgICAgIHBvcGNudCA9IF9tbTUxMl9yZWR1Y2VfYWRkX2VwaTY0KGFj Y3VtdWxhdG9yKTsKKyAgICAgICAgLyogcmV0dXJuIGNvbXB1dGVkIHZhbHVlLCB0byBwcmV2ZW50 IHRoZSBhYm92ZSBiZWluZyBvcHRpbWl6ZWQgYXdheSAqLworICAgICAgICByZXR1cm4gcG9wY250 ID09IDA7CisgICAgICB9JycnCisgIGlmIGNjLmxpbmtzKHByb2csIG5hbWU6ICdfbW01MTJfKiBt ZXRob2RzIHdpdGggLW1hdng1MTJ2cG9wY250ZHEgZmxhZy4nLAorICAgICAgICAgICAgICBhcmdz OiB0ZXN0X2NfYXJncyArIHRlc3RfZmxhZ3MpCisgICAgaGF2ZV9hdng1MTJfcG9wY250ID0gdHJ1 ZQorICAgIGNkYXRhLnNldCgnVVNFX0FWWDUxMl9QT1BDTlRfV0lUSF9SVU5USU1FX0NIRUNLJywg MSkKKyAgICBjZGF0YS5zZXQoJ0hBVkVfX0FWWDUxMl9QT1BDTlQnLCAxKQorICAgIGNmbGFnc19h dng1MTJfcG9wY250ID0gdGVzdF9mbGFncworICBlbHNlCisgICAgaGF2ZV9hdng1MTJfcG9wY250 ID0gZmFsc2UKKyAgICBjZGF0YS5zZXQoJ1VTRV9BVlg1MTJfUE9QQ05UX1dJVEhfUlVOVElNRV9D SEVDSycsIDEpCisgICAgY2ZsYWdzX2F2eDUxMl9wb3BjbnQgPSBbXQorICBlbmRpZiAjIGNvbXBp bGUvbGluayB0ZXN0CitlbmRpZiAjIGhvc3RfY3B1IGNoZWNrCisKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIExpYnJh cnkgLyBPUyB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbiBiL3NyYy9N YWtlZmlsZS5nbG9iYWwuaW4KaW5kZXggOGIzZjhjMjRlMC4uMDg5ZjQ5YjdmMyAxMDA2NDQKLS0t IGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgorKysgYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCkBA IC0yNjMsNiArMjYzLDcgQEAgQ1hYRkxBR1NfU0xfTU9EVUxFID0gQENYWEZMQUdTX1NMX01PRFVM RUAKIENGTEFHU19VTlJPTExfTE9PUFMgPSBAQ0ZMQUdTX1VOUk9MTF9MT09QU0AKIENGTEFHU19W RUNUT1JJWkUgPSBAQ0ZMQUdTX1ZFQ1RPUklaRUAKIENGTEFHU19DUkMgPSBAQ0ZMQUdTX0NSQ0AK K0NGTEFHU19BVlg1MTJfUE9QQ05UID0gQENGTEFHU19BVlg1MTJfUE9QQ05UQAogUEVSTUlUX0RF Q0xBUkFUSU9OX0FGVEVSX1NUQVRFTUVOVCA9IEBQRVJNSVRfREVDTEFSQVRJT05fQUZURVJfU1RB VEVNRU5UQAogQ1hYRkxBR1MgPSBAQ1hYRkxBR1NACiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3VzZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3VzZXIuYwppbmRleCBjNzVj ZGUyZThlLi43N2Q3MmRhYTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy91c2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdXNlci5jCkBAIC0yMzMwLDcgKzIzMzAsNyBA QCBwbGFuX3NpbmdsZV9yZXZva2UoQ2F0Q0xpc3QgKm1lbWxpc3QsIFJldm9rZVJvbGVHcmFudEFj dGlvbiAqYWN0aW9ucywKIAkgKiB3b3VsZG4ndCB3b3JrIHByb3Blcmx5IGlmIHN1Y2ggc3ludGF4 IHdlcmUgYWRkZWQsIHNvIGFzc2VydCB0aGF0IG91cgogCSAqIGNhbGxlciBpc24ndCB0cnlpbmcg dG8gZG8gdGhhdC4KIAkgKi8KLQlBc3NlcnQocGdfcG9wY291bnQzMihwb3B0LT5zcGVjaWZpZWQp IDw9IDEpOworCUFzc2VydChQR19QT1BDT1VOVDMyKHBvcHQtPnNwZWNpZmllZCkgPD0gMSk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgbWVtbGlzdC0+bl9tZW1iZXJzOyArK2kpCiAJewpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5p bgppbmRleCA1OTFlMWNhM2RmLi4zM2E4MzFlNzY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w Z19jb25maWcuaC5pbgorKysgYi9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgpAQCAtNTU4LDYg KzU1OCwxOCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgX19nZXRfY3B1aWQuICovCiAj dW5kZWYgSEFWRV9fR0VUX0NQVUlECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIF9fZ2V0 X2NwdWlkX2NvdW50LiAqLworI3VuZGVmIEhBVkVfX0dFVF9DUFVJRF9DT1VOVAorCisvKiBEZWZp bmUgdG8gMSBpZiB5b3UgaGF2ZSBfX2dldF9jcHVpZGV4LiAqLworI3VuZGVmIEhBVkVfX0dFVF9D UFVJREVYCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlICBpbW1pbnRyaW4uICovCisjdW5k ZWYgSEFWRV9fSU1NSU5UUklOCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIEFWWDUxMi4g Ki8KKyN1bmRlZiBIQVZFX19BVlg1MTJfUE9QQ05UCisKIC8qIERlZmluZSB0byAxIGlmIHlvdXIg Y29tcGlsZXIgdW5kZXJzdGFuZHMgX1N0YXRpY19hc3NlcnQuICovCiAjdW5kZWYgSEFWRV9fU1RB VElDX0FTU0VSVAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgg Yi9zcmMvaW5jbHVkZS9wb3J0L3BnX2JpdHV0aWxzLmgKaW5kZXggNDc3ZTAwZTBkYS4uZWFkNGY3 OWRlZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9ydC9wZ19iaXR1dGlscy5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BvcnQvcGdfYml0dXRpbHMuaApAQCAtMzAwLDkgKzMwMCw5IEBAIHBnX2NlaWxf bG9nMl82NCh1aW50NjQgbnVtKQogCiAjaWZkZWYgVFJZX1BPUENOVF9GQVNUCiAvKiBBdHRlbXB0 IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uLCBidXQgcGVyZm9ybSBhIHJ1bnRpbWUgY2hl Y2sgZmlyc3QgKi8KLWV4dGVybiBpbnQJcGdfcG9wY291bnQzMl9zbG93KHVpbnQzMiB3b3JkKTsK LWV4dGVybiBpbnQJcGdfcG9wY291bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKTsKLWV4dGVybiB1aW50 NjQgcGdfcG9wY291bnRfc2xvdyhjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7CitleHRlcm4g aW5saW5lIGludAlwZ19wb3Bjb3VudDMyX3Nsb3codWludDMyIHdvcmQpOworZXh0ZXJuIGlubGlu ZSBpbnQJcGdfcG9wY291bnQ2NF9zbG93KHVpbnQ2NCB3b3JkKTsKK2V4dGVybiBpbmxpbmUgdWlu dDY0IHBnX3BvcGNvdW50X3Nsb3coY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCAoKnBnX3BvcGNvdW50MzIpICh1aW50MzIgd29yZCk7CiBleHRlcm4g UEdETExJTVBPUlQgaW50ICgqcGdfcG9wY291bnQ2NCkgKHVpbnQ2NCB3b3JkKTsKIGV4dGVybiBQ R0RMTElNUE9SVCB1aW50NjQgKCpwZ19wb3Bjb3VudCkgKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5 dGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQgYi9zcmMvbWFrZWZp bGVzL21lc29uLmJ1aWxkCmluZGV4IGIwZjQxNzhiM2QuLmVlMzY0NzI4MmUgMTAwNjQ0Ci0tLSBh L3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWls ZApAQCAtMTAwLDYgKzEwMCw3IEBAIHBneHNfa3YgPSB7CiAgICAgJyAnLmpvaW4oY2ZsYWdzX25v X2RlY2xfYWZ0ZXJfc3RhdGVtZW50KSwKIAogICAnQ0ZMQUdTX0NSQyc6ICcgJy5qb2luKGNmbGFn c19jcmMpLAorICAnQ0ZMQUdTX0FWWDUxMl9QT1BDTlQnOiAnICcuam9pbihjZmxhZ3NfYXZ4NTEy X3BvcGNudCksCiAgICdDRkxBR1NfVU5ST0xMX0xPT1BTJzogJyAnLmpvaW4odW5yb2xsX2xvb3Bz X2NmbGFncyksCiAgICdDRkxBR1NfVkVDVE9SSVpFJzogJyAnLmpvaW4odmVjdG9yaXplX2NmbGFn cyksCiAKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L01ha2VmaWxlIGIvc3JjL3BvcnQvTWFrZWZpbGUK aW5kZXggMTQ5OTk4NWRmYy4uNjZlZjE1MTU2NSAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvTWFrZWZp bGUKKysrIGIvc3JjL3BvcnQvTWFrZWZpbGUKQEAgLTg5LDYgKzg5LDExIEBAIHBnX2NyYzMyY19z c2U0Mi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKIHBnX2NyYzMyY19zc2U0Ml9zaGxpYi5vOiBD RkxBR1MrPSQoQ0ZMQUdTX0NSQykKIHBnX2NyYzMyY19zc2U0Ml9zcnYubzogQ0ZMQUdTKz0kKENG TEFHU19DUkMpCiAKKyMgTmV3ZXIgSW50ZWwgcHJvY2Vzc29ycyBjYW4gdXNlIEFWWC01MTIgUE9Q Q05UIENhcGFiaWxpdGllcyAoMDEvMzAvMjAyNCkKK3BnX3BvcGNvdW50X3g4Nl82NF9hY2NlbC5v OiBDRkxBR1MrPSQoQ0ZMQUdTX0FWWDUxMl9QT1BDTlQpCitwZ19wb3Bjb3VudF94ODZfNjRfYWNj ZWxfc2hsaWIubzogQ0ZMQUdTKz0kKENGTEFHU19BVlg1MTJfUE9QQ05UKQorcGdfcG9wY291bnRf eDg2XzY0X2FjY2VsX3Nydi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0FWWDUxMl9QT1BDTlQpCisKICMg YWxsIHZlcnNpb25zIG9mIHBnX2NyYzMyY19hcm12OC5vIG5lZWQgQ0ZMQUdTX0NSQwogcGdfY3Jj MzJjX2FybXY4Lm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQogcGdfY3JjMzJjX2FybXY4X3NobGli Lm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvbWVzb24uYnVp bGQgYi9zcmMvcG9ydC9tZXNvbi5idWlsZAppbmRleCBjZjZlOWZhMDZjLi4wNjQ3ZTdhNGY3IDEw MDY0NAotLS0gYS9zcmMvcG9ydC9tZXNvbi5idWlsZAorKysgYi9zcmMvcG9ydC9tZXNvbi5idWls ZApAQCAtOCw3ICs4LDYgQEAgcGdwb3J0X3NvdXJjZXMgPSBbCiAgICdwYXRoLmMnLAogICAncGdf Yml0dXRpbHMuYycsCiAgICdwZ19wb3Bjb3VudF94ODZfNjRfY2hvb3NlLmMnLAotICAncGdfcG9w Y291bnRfeDg2XzY0X2FjY2VsLmMnLAogICAncGdfc3Ryb25nX3JhbmRvbS5jJywKICAgJ3BnY2hl Y2tkaXIuYycsCiAgICdwZ21rZGlycC5jJywKQEAgLTg2LDYgKzg1LDcgQEAgcmVwbGFjZV9mdW5j c19wb3MgPSBbCiAgIFsncGdfY3JjMzJjX3NzZTQyJywgJ1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9S VU5USU1FX0NIRUNLJywgJ2NyYyddLAogICBbJ3BnX2NyYzMyY19zc2U0Ml9jaG9vc2UnLCAnVVNF X1NTRTQyX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0snXSwKICAgWydwZ19jcmMzMmNfc2I4Jywg J1VTRV9TU0U0Ml9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCisgIFsncGdfcG9wY291bnRf eDg2XzY0X2FjY2VsJywgJ1VTRV9BVlg1MTJfUE9QQ05UX1dJVEhfUlVOVElNRV9DSEVDSycsICdh dng1MTInXSwKIAogICAjIGFybSAvIGFhcmNoNjQKICAgWydwZ19jcmMzMmNfYXJtdjgnLCAnVVNF X0FSTVY4X0NSQzMyQyddLApAQCAtMTAwLDggKzEwMCw4IEBAIHJlcGxhY2VfZnVuY3NfcG9zID0g WwogICBbJ3BnX2NyYzMyY19zYjgnLCAnVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMnXSwKIF0KIAot cGdwb3J0X2NmbGFncyA9IHsnY3JjJzogY2ZsYWdzX2NyY30KLXBncG9ydF9zb3VyY2VzX2NmbGFn cyA9IHsnY3JjJzogW119CitwZ3BvcnRfY2ZsYWdzID0geydjcmMnOiBjZmxhZ3NfY3JjLCAnYXZ4 NTEyJzogY2ZsYWdzX2F2eDUxMl9wb3BjbnR9CitwZ3BvcnRfc291cmNlc19jZmxhZ3MgPSB7J2Ny Yyc6IFtdLCAnYXZ4NTEyJzogW119CiAKIGZvcmVhY2ggZiA6IHJlcGxhY2VfZnVuY3NfbmVnCiAg IGZ1bmMgPSBmLmdldCgwKQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdfcG9wY291bnRfeDg2XzY0 X2FjY2VsLmMgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODZfNjRfYWNjZWwuYwppbmRleCBkNjNl OGFhMzBmLi5mNjUxODRkZGNlIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODZf NjRfYWNjZWwuYworKysgYi9zcmMvcG9ydC9wZ19wb3Bjb3VudF94ODZfNjRfYWNjZWwuYwpAQCAt MTMsMTAgKzEzLDE1IEBACiAjaW5jbHVkZSAiYy5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRp bHMuaCIKIAorI2lmIGRlZmluZWQoSEFWRV9fSU1NSU5UUklOKQorI2luY2x1ZGUgPGltbWludHJp bi5oPgorI2VuZGlmCisKICNpZmRlZiBUUllfUE9QQ05UX0ZBU1QKIGludCBwZ19wb3Bjb3VudDMy X2Zhc3QodWludDMyIHdvcmQpOwogaW50IHBnX3BvcGNvdW50NjRfZmFzdCh1aW50NjQgd29yZCk7 CiB1aW50NjQgcGdfcG9wY291bnRfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7Cit1 aW50NjQgcGdfcG9wY291bnQ1MTJfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcyk7CiAK IC8qCiAgKiBwZ19wb3Bjb3VudDMyX2Zhc3QKQEAgLTk4LDQgKzEwMywzMiBAQCBwZ19wb3Bjb3Vu dF9mYXN0KGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGJ5dGVzKQogCXJldHVybiBwb3BjbnQ7CiB9CiAK Ky8qCisgKiBVc2UgQVZYLTUxMiBJbnRyaW5zaWNzIGZvciBzdXBwb3J0ZWQgQ1BVcyBvciBmYWxs IGJhY2sgdGhlIG5vbi0xNTIgZmFzdAorICogaW1wbGVtIGVudGF0aW9uIGFuZCB1c2UgdGhlIGJl c3QgNjQgYml0IGZhc3QgbWV0aG9kcy4gSWYgbm8gZmFzdAorICogbWV0aG9kcyBhcmUgdXNlZCB0 aGlzIHdpbGwgZmFsbCBiYWNrIHRvIF9fYnVpbHRpbl8qIG9yIHB1cmUgc29mdHdhcmUuCisgKi8K K3VpbnQ2NAorcGdfcG9wY291bnQ1MTJfZmFzdChjb25zdCBjaGFyICpidWYsIGludCBieXRlcykK K3sKKyAgICB1aW50NjQgcG9wY250ID0gMDsKKyAjaWYgZGVmaW5lZChIQVZFX19JTU1JTlRSSU4p ICYmIEhBVkVfX0FWWDUxMl9QT1BDTlQgPT0gMQorICAgX19tNTEyaSBhY2N1bXVsYXRvciA9IF9t bTUxMl9zZXR6ZXJvX3NpNTEyKCk7CisKKyAgICB3aGlsZSAoYnl0ZXMgPj0gNjQpCisgICAgewor ICAgICAgICBjb25zdCBfX201MTJpIHYgPSBfbW01MTJfbG9hZHVfc2k1MTIoKGNvbnN0IF9fbTUx MmkgKilidWYpOworICAgICAgICBjb25zdCBfX201MTJpIHAgPSBfbW01MTJfcG9wY250X2VwaTY0 KHYpOworCisgICAgICAgIGFjY3VtdWxhdG9yID0gX21tNTEyX2FkZF9lcGk2NChhY2N1bXVsYXRv ciwgcCk7CisgICAgICAgIGJ5dGVzIC09IDY0OworICAgICAgICBidWYgKz0gNjQ7CisgICAgfQor CisgICAgcG9wY250ID0gX21tNTEyX3JlZHVjZV9hZGRfZXBpNjQoYWNjdW11bGF0b3IpOworI2Vu ZGlmIAkJCQkvKiBkZWZpbmVkKEhBVkVfX0lNTUlOVFJJTikgJiYgSEFWRV9fQVZYNTEyX1BPUENO VCA9PSAxICovCisKKyAgICAvKiBQcm9jZXNzIGFueSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBy ZXR1cm4gcG9wY250ICsgcGdfcG9wY291bnRfZmFzdChidWYsIGJ5dGVzKTsKK30KICNlbmRpZgkJ CQkJCQkvKiBUUllfUE9QQ05UX0ZBU1QgKi8KZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3BvcGNv dW50X3g4Nl82NF9jaG9vc2UuYyBiL3NyYy9wb3J0L3BnX3BvcGNvdW50X3g4Nl82NF9jaG9vc2Uu YwppbmRleCAxYTAwMjJhMGIzLi5kMjVkMjUxZTliIDEwMDY0NAotLS0gYS9zcmMvcG9ydC9wZ19w b3Bjb3VudF94ODZfNjRfY2hvb3NlLmMKKysrIGIvc3JjL3BvcnQvcGdfcG9wY291bnRfeDg2XzY0 X2Nob29zZS5jCkBAIC0yNSw2ICsyNSw3IEBACiBpbnQgcGdfcG9wY291bnQzMl9mYXN0KHVpbnQz MiB3b3JkKTsKIGludCBwZ19wb3Bjb3VudDY0X2Zhc3QodWludDY0IHdvcmQpOwogdWludDY0IHBn X3BvcGNvdW50X2Zhc3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwordWludDY0IHBnX3Bv cGNvdW50NTEyX2Zhc3QoY29uc3QgY2hhciAqYnVmLCBpbnQgYnl0ZXMpOwogCiBzdGF0aWMgaW50 CXBnX3BvcGNvdW50MzJfY2hvb3NlKHVpbnQzMiB3b3JkKTsKIHN0YXRpYyBpbnQJcGdfcG9wY291 bnQ2NF9jaG9vc2UodWludDY0IHdvcmQpOwpAQCAtNTMsNiArNTQsNTIgQEAgcGdfcG9wY291bnRf YXZhaWxhYmxlKHZvaWQpCiAJcmV0dXJuIChleHhbMl0gJiAoMSA8PCAyMykpICE9IDA7CS8qIFBP UENOVCAqLwogfQogCisvKgorICogUmV0dXJuIHRydWUgaWYgQ1BVSUQgaW5kaWNhdGVzIHRoYXQg dGhlIEFWWDUxMl9QT1BDTlQgaW5zdHJ1Y3Rpb24gaXMKKyAqIGF2YWlsYWJsZS4gVGhpcyBpcyBz aW1pbGFyIHRvIHRoZSBtZXRob2QgYWJvdmU7IHNlZQorICogaHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvQ1BVSUQjRUFYPTcsX0VDWD0wOl9FeHRlbmRlZF9GZWF0dXJlcworICoKKyAqIEZp bmFsbHksIHdlIG1ha2Ugc3VyZSB0aGUgeGdldGJ2IHJlc3VsdCBpcyBjb25zaXN0ZW50IHdpdGgg dGhlIENQVUlECisgKiByZXN1bHRzLgorICovCitzdGF0aWMgYm9vbAorcGdfcG9wY291bnQ1MTJf YXZhaWxhYmxlKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGV4eFs0XSA9IHswLCAwLCAwLCAwfTsK KworCS8qIENoZWNrIGZvciBBVlg1MTJWUE9QQ05URFEgYW5kIEFWWDUxMkYgKi8KKyNpZiBkZWZp bmVkKEhBVkVfX0dFVF9DUFVJRF9DT1VOVCkKKwlfX2dldF9jcHVpZF9jb3VudCg3LCAwLCAmZXh4 WzBdLCAmZXh4WzFdLCAmZXh4WzJdLCAmZXh4WzNdKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9fQ1BV SURFWCkKKwlfX2NwdWlkZXgoZXh4LCA3LCAwKTsKKyNlbmRpZgorCisJaWYgKChleHhbMl0gJiAo MHgwMDAwNDAwMCkpICE9IDAgJiYgKGV4eFsxXSAmICgweDAwMDEwMDAwKSkgIT0gMCkKKwl7Cisg ICAgICAgIC8qCisgICAgICAgICAqIENQVUlEIHN1Y2NlZWRlZCwgZG9lcyB0aGUgY3VycmVudCBy dW5uaW5nIE9TIHN1cHBvcnQgdGhlCisgICAgICAgICAqIFpNTSByZWdpc3RlcnMgd2hpY2ggYXJl IHJlcXVpcmVkIGZvciBBVlg1MTI/IFRoaXMgY2hlY2sgaXMKKyAgICAgICAgICogcmVxdWlyZWQg dG8gbWFrZSBzdXJlIGFuIG9sZCBPUyBvbiBhIG5ldyBDUFUgaXMgY29ycmVjdGx5CisgICAgICAg ICAqIGNoZWNrZWQgb3IgYSBWTSBoeXBlcnZpc29yIGlzIG5vdCBleGNsdWRpbmcgQVZYNTEyIFpN TQorICAgICAgICAgKiBzdXBwb3J0IGluIHRoZSBWTTsgc2VlICI1LjEuOSBEZXRlY3Rpb24gb2Yg QVZYIEluc3RydWN0aW9ucyIKKyAgICAgICAgICogaHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRl bnQvd3d3L3VzL2VuL2NvbnRlbnQtZGV0YWlscy82NzE0ODgvaW50ZWwtNjQtYW5kLWlhLTMyLWFy Y2hpdGVjdHVyZXMtb3B0aW1pemF0aW9uLXJlZmVyZW5jZS1tYW51YWwtdm9sdW1lLTEuaHRtbAor ICAgICAgICAgKi8KKyAgICAgICAgdWludDY0IHhjciA9IDA7CisjaWZkZWYgX01TQ19WRVIKKyAg ICAgICAgdWludDY0IGhpZ2hsb3cgPSBfeGdldGJ2KHhjcik7CisKKyAgICAgICAgcmV0dXJuICho aWdobG93ICYgMHhFMCkgIT0gMDsKKyNlbHNlCisgICAgICAgIHVpbnQzMiBoaWdoOworICAgICAg ICB1aW50MzIgbG93OworCisgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Z2V0YnZcdFxu IiA6ICI9YSIobG93KSwgIj1kIihoaWdoKSA6ICJjIih4Y3IpKTsKKyAgICAgICAgcmV0dXJuIChs b3cgJiAweEUwKSAhPSAwOworI2VuZGlmCisgICAgfSAvKiBQT1BDTlQgNTEyICovCisgICAgcmV0 dXJuIGZhbHNlOworfQorCiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGdldCBjYWxsZWQgb24gdGhl IGZpcnN0IGNhbGwgdG8gcGdfcG9wY291bnQzMiBldGMuCiAgKiBUaGV5IGRldGVjdCB3aGV0aGVy IHdlIGNhbiB1c2UgdGhlIGFzbSBpbXBsZW1lbnRhdGlvbnMsIGFuZCByZXBsYWNlCkBAIC02MSwx NyArMTA4LDI2IEBAIHBnX3BvcGNvdW50X2F2YWlsYWJsZSh2b2lkKQogICovCiBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X2Z1bmN0aW9uX3BvaW50ZXJzKCkKIHsKLQlpZiAocGdfcG9wY291bnRfYXZh aWxhYmxlKCkpCi0JeworCWlmIChwZ19wb3Bjb3VudDUxMl9hdmFpbGFibGUoKSkKKwl7ICAgLyog SWYgUE9QQ05UNTEyIGlzIGF2YWlsYWJsZSwgaXRzIGFzc3VtZSB0aGF0IFBPUENOVFEgaXMgdG9v LiAqLwogCQlwZ19wb3Bjb3VudDMyID0gcGdfcG9wY291bnQzMl9mYXN0OwogCQlwZ19wb3Bjb3Vu dDY0ID0gcGdfcG9wY291bnQ2NF9mYXN0OwotCQlwZ19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X2Zh c3Q7CisJCXBnX3BvcGNvdW50ID0gcGdfcG9wY291bnQ1MTJfZmFzdDsKIAl9CiAJZWxzZQogCXsK LQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfc2xvdzsKLQkJcGdfcG9wY291bnQ2NCA9 IHBnX3BvcGNvdW50NjRfc2xvdzsKLQkJcGdfcG9wY291bnQgPSBwZ19wb3Bjb3VudF9zbG93Owor CQlpZiAocGdfcG9wY291bnRfYXZhaWxhYmxlKCkpCisJCXsKKwkJCXBnX3BvcGNvdW50MzIgPSBw Z19wb3Bjb3VudDMyX2Zhc3Q7CisJCQlwZ19wb3Bjb3VudDY0ID0gcGdfcG9wY291bnQ2NF9mYXN0 OworCQkJcGdfcG9wY291bnQgPSBwZ19wb3Bjb3VudF9mYXN0OworCQl9CisJCWVsc2UKKwkJewor CQkJcGdfcG9wY291bnQzMiA9IHBnX3BvcGNvdW50MzJfc2xvdzsKKwkJCXBnX3BvcGNvdW50NjQg PSBwZ19wb3Bjb3VudDY0X3Nsb3c7CisJCQlwZ19wb3Bjb3VudCA9IHBnX3BvcGNvdW50X3Nsb3c7 CisJCX0KIAl9CiB9CiAKLS0gCjIuMzQuMQoK --_004_BL1PR11MB530414B036FD7E838830E398DC2C2BL1PR11MB5304namp_--