From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id B5C6645609 for ; Tue, 14 Mar 2023 00:44:29 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 55C7D68BD7C; Tue, 14 Mar 2023 02:44:26 +0200 (EET) Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2013.outbound.protection.outlook.com [40.92.48.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BEA2B68BD40 for ; Tue, 14 Mar 2023 02:44:19 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dxUw6q4WWgMjkolmUflBDvB9l2H1fQJkfEjaW7xwGhoquJLJpxfUYgkowDSEQya2lP8l8qbdynpKcOaEbkgkV83V/YOaupxnSz60rxeComV/c4zTDRfHxa2Pq4Yb0m7G1UHarbL2AdcLbfEWSv1ZZqwo6Vkw3b/x9A/uWqsWBwjta1j8lYS1yVdxTso7arhGakPs2cJmQmYaAA9UCPcP9IPVGf09u86j0UZFwAeqBcpbhQjW+k/z8uHe8+wqahGLjptiqL+QgZRglRAMAipL/0WDYiVE7vlGqSh3RGdpAgad03LnTv2MyGP3dBX2YpAcsoNNuOYti0qZ5C6JXB//fA== 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=RS6WytsARLhJHsH4zI+Gqt5D1brBgt1lv2Y7MXK+yIY=; b=Q2FcC98lC2spYftkqEA7zM08xPecdu1TwTLiamVG49ybnHNEbN1m88tl5K5aSoZAoGvAruPGU71WHIDdj5vIJlGkx5MqlWYttx7DRnXdYha/e9zx/Pb1AaAoMadSWvY/K/FYFmlb3bwSdSNRct5Cy0Mu+c9NMy2t/Ya+pJHYv9Sq1QFush4LNqEqpZ2gsf30sCGIIZlrOaB9lRAZbUBPPUIP/gnmGhLK+5C7dIOChemaJO8tK+p3XbAabR9tR92r1RqoA/fFgQYGzBlsG4d+DhMS72o9qfoSu/0k/GtvjcCvaviscXBYyusdoy28KcJFUuFhWLd5khrJ9tg9k5E93Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RS6WytsARLhJHsH4zI+Gqt5D1brBgt1lv2Y7MXK+yIY=; b=Mt17o/BdTnstyI6rMh6mLZYBBoaIV4J9n6OhhDDNn079N7x40r5r7DYbBM2UUspOFKLrNlxRbq9A0BhW+/YqDCMIAffn1D6w2V6sxRxVCYLY18ZnviWM/Uc2S861+jYYX61kDVfHoF6ND1A0xx/Ceo9ZfXM+/IihgEZWSvN+NGuPM/zxgqVeQZdJ1+bU5mOppYC3CCuQUuYAT+7mWPdbzs9W2Sa4gYdUcU75Y5zQgK4YzdJ5hMMsgC6XjRFFxk+DVuWZU/v5+J9nzbZEq2YMh+PY8BEguYGB6kcbqWkKN5AXe8J9jJmIv9c9reTQKOez/q+lAN2gl78VtAG/MoS/ig== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS2P250MB0943.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:59d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Tue, 14 Mar 2023 00:44:17 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::73a:bd4b:26f3:cc2b%3]) with mapi id 15.20.6178.015; Tue, 14 Mar 2023 00:44:17 +0000 Message-ID: Date: Tue, 14 Mar 2023 01:44:53 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <863605d4-1eb6-4ca2-645e-1add6da9bc38@vimeo.com> From: Andreas Rheinhardt In-Reply-To: <863605d4-1eb6-4ca2-645e-1add6da9bc38@vimeo.com> X-TMN: [TdGqhN8CL4Em6x/yAV+KpPeYxIDDRcLMRhsnhitkeN8=] X-ClientProxiedBy: ZR2P278CA0066.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS2P250MB0943:EE_ X-MS-Office365-Filtering-Correlation-Id: ea8b78da-ed39-4bca-86c8-08db24253dd5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DE2gNz8dsgUPt2ZwanM5chodBYNrNimWFD+xQpgegkwtXjex7ORQuOMAN9BtW06vfNJx+eG39qP4MblS3RcjUEegHW+SBz7lI5TjrsQYj4h7thoMxLccvAWhfzCXiFfKvImBdxZRiNfnUoqBAiD8YqUBnJccQWS6wPnhJddI5n9py7ZmNaQDSB9zq5paBIsvcQL/OkoMws1v/FYftU1v58qOMCdYVQ5+cJC7suPVTfP11w+r7zX+vptw4X0G3DTDCeZ0EZiirc1aYWkLbmW3rB0sPmRFGBQ81iOow171H7Xq3V2nN1QEAdePUKz8vkBk9IyFZSTtefUUZPxDx1hN9T7sx09eb9N/oFGR6MlTFy2CMCcluFm7FUpMzozZwNC/lY7l/CR2A0RjbwhaNiDtARUYA0Ja9QkJIVQc+bbxgn++oK8l2+fnfFjjY/fZHU2LSF+vEmZjOQXwfhe9aO60nvkP9OSDjJPWEHFgD8urElcbZZIQZefGXVsCq2JxxiQF8qZd0xWizdmW4peASKUEoydb+8ZpI4XlVxrRQJRvphvZfGrnBfHQLnh0vSi3Xox3MhfD91t/GMLf+vDRWNolc98/TC8HgZp8LYtRFr6eVZ8CZKzga8mMKSg649HEjrz//A0EI5+V6RnYOiM/CWCMcPxpoIrm5pdxhfZyYAFiW8M= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?STB2YnhtRGpQQjRKdnptYnJLQllrUjRHL3NBekhiZkRSenlJbVFER3VjdHFT?= =?utf-8?B?WUJDaWJlbjNDMDM4bHltSG4rMExtT1VGbkEyMEthNkVjSjhaL1BUVzFaTFI1?= =?utf-8?B?bmIrQ3h3WXdybDRuYUR6cC9ueUdIVys0am5IZENNUFh0b3FsWFNKa282VDdS?= =?utf-8?B?eVNNampNVkFWLzlRWXBDVkFybWFONWk0eTN4Z0R6VDJoN2toV2R0V0lCdkFk?= =?utf-8?B?UVZHSElETzA5K2VUU005aDJZL0MwWVEyMTNteEU0MWp1MkI2TENNUVUyNzJC?= =?utf-8?B?UnFNSEpzSHAxR3BPZnphMGRjb0pwUnBXVlhIdmEyblc1QlpMbVNRaFh4cjNx?= =?utf-8?B?MXY4MHRNcWwzUXBTRzEybG1xS2xOc3BNNUkvR09vUUt2UU9wMGZIT2YzS1FS?= =?utf-8?B?aTgzYjVyakVGMFhNcmVla1YycE5DTFc5NzB3d2lNMnRYZ2VWMjNOSlkwSVdO?= =?utf-8?B?RCtVdXgwanV6QTlyV1FTYmUzR3JRQUZpUE51RGZQUWVVaVlUTjMyakpXWVhW?= =?utf-8?B?cVlpcHV2RWZsemplb0ZQNC9hS1U2aVhGSktLcmgvSVFicExPbHNUZ2gzWWRn?= =?utf-8?B?VGZvK1JLaGlnT2kzb1dRTHFxVzNLaFFmQVZLSVNKdGxaVVF3cS9jWTRSdWdw?= =?utf-8?B?SWRpMmcwaDZob0h3TW9Zc1RYUGpaOU1uQXV2TjgvQXZuUUNDRjhHem9sZGZF?= =?utf-8?B?TmRYR2svUnROQm9vS3Nud2pkRUJUSUtNblR1bnhDTStkUUdyWVJEOERvNU4y?= =?utf-8?B?clZscjkrd0xaVTI3Q21ubmh1QkRWVVhlZGtoVzlJeVlyOHgvNGxZNnRGWmEy?= =?utf-8?B?UEZPUmJVVk01TnRSbDJCaVJweHZIT1ltN2R6QXZwdXFJc1k0aTc3WmVPbVZR?= =?utf-8?B?SkpzYTg1WDVKZDlHWGlNbVAxK1Y3UGhWb2k3bEsxeWRLakVJRTg4bEpZSUpj?= =?utf-8?B?ZHRxQjNTY1ZVekMwdVhZbm1yU2ZNc01udk1CN0VHakxlSVNQa2dXdHZTam9t?= =?utf-8?B?RUllZkhmL2pBbWNLekpPSlgvOWFYNHdyNWlwTHhjZVVpQlRrK0gxaE05bnpJ?= =?utf-8?B?dnplZFFmVlprNm1IY29tV3RoQ0FtY0R3dGFkaVVsVVZwdmxVSTV0UnVOSnpW?= =?utf-8?B?MnhNWE5reWE0ZktXU0tTMDlsbHJyVVY4ZzF6WWV5bGNPQVNoV2kzb1N3bnQr?= =?utf-8?B?cEkwcDF2ck9qV3ZXUTAzZHRLWDZLNEI5d05WcGZxUjNad3pBbnVsSmFzRU5R?= =?utf-8?B?eVl3SFF4Y2VJbW9jby95VWt1SVZkSmRRY1ErS3p1blNudTlZVWkzRTdIU0xt?= =?utf-8?B?VFBXUEdKalV5b0MyRTYyTkp6NS9iaXU0NTFJNlRIWXhlQW1MMTZUejl4YWhq?= =?utf-8?B?MHpwelpmbmNiZTBzTFNYQjMxOWxYN2VoSWpYYmtLSkV6T3pUcEx1NnUzb254?= =?utf-8?B?dCtaWG82aFJUb2Z1OTBHK1dLTFBiSTBLM0c2Smoyb3liYnM4dk9IdS8vellY?= =?utf-8?B?dmUzV1UrV2FrdU4xNHJFeDRCT21BZGVRMjQ1VjJrWnBGWVM0MDFidUJwWC9t?= =?utf-8?B?ZUs5eHArYk10aDJ1K0sxQ2ZJdWJYb1ZyTjZWbGdkeHl2UllGdVJWSmM4UjZB?= =?utf-8?B?elpuaURzeVZLZXppRjM3U2ZJQzJFTytxdDE1WEg0dnRWU2UzQjRSR1p2amJx?= =?utf-8?B?bXhCeFh0QitCTUxTaS9USEhuby81VlVXY1QrVlVBVWRIN0YzSlBFMXZjL2hJ?= =?utf-8?Q?YM/ESH03nfw6FDfi5aErk85lAECY86L0IgnStgE?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea8b78da-ed39-4bca-86c8-08db24253dd5 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2023 00:44:17.5662 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2P250MB0943 Subject: Re: [FFmpeg-devel] [PATCH v6 1/2] avcodec/avutil: move dynamic HDR10+ metadata parsing to libavutil X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: UmFwaGHDq2wgWnVtZXI6Cj4gU2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgWnVtZXIgPHJ6dW1lckB0 ZWJha28ubmV0Pgo+IC0tLQo+ICBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgICB8ICAg NiArLQo+ICBsaWJhdmNvZGVjL2F2MWRlYy5jICAgICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJh dmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jICB8IDE5OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4gIGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggIHwgIDM1IC0tLS0t LQo+ICBsaWJhdmNvZGVjL2gyNjQ1X3NlaS5jICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJhdmNv ZGVjL2xpYmRhdjFkLmMgICAgICAgICAgICB8ICAgNiArLQo+ICBsaWJhdnV0aWwvaGRyX2R5bmFt aWNfbWV0YWRhdGEuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGxpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIHwgIDExICsrCj4gIDggZmlsZXMgY2hhbmdlZCwg MjAzIGluc2VydGlvbnMoKyksIDI0NSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0 IGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGxp YmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiBpbmRleCBhYmFlNDkwOWQyLi40MDhl Y2QxZTMxIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiArKysgYi9saWJhdmNv ZGVjL01ha2VmaWxlCj4gQEAgLTEwNCw3ICsxMDQsNyBAQCBPQkpTLSQoQ09ORklHX0gyNjRfU0VJ KSAgICAgICAgICAgICAgICArPSBoMjY0X3NlaS5vIGgyNjQ1X3NlaS5vCj4gIE9CSlMtJChDT05G SUdfSEVWQ1BBUlNFKSAgICAgICAgICAgICAgICs9IGhldmNfcGFyc2UubyBoZXZjX3BzLm8gaGV2 Y19kYXRhLm8gXAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo MjY0NWRhdGEubyBoMjY0NV9wYXJzZS5vIGgyNjQ1X3Z1aS5vCj4gIE9CSlMtJChDT05GSUdfSEVW Q19TRUkpICAgICAgICAgICAgICAgICs9IGhldmNfc2VpLm8gaDI2NDVfc2VpLm8gXAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljX2hkcjEwX3BsdXMu byBkeW5hbWljX2hkcl92aXZpZC5vCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGR5bmFtaWNfaGRyX3ZpdmlkLm8KPiAgT0JKUy0kKENPTkZJR19IUEVMRFNQKSAg ICAgICAgICAgICAgICAgKz0gaHBlbGRzcC5vCj4gIE9CSlMtJChDT05GSUdfSFVGRk1BTikgICAg ICAgICAgICAgICAgICs9IGh1ZmZtYW4ubwo+ICBPQkpTLSQoQ09ORklHX0hVRkZZVVZEU1ApICAg ICAgICAgICAgICArPSBodWZmeXV2ZHNwLm8KPiBAQCAtMjUwLDcgKzI1MCw3IEBAIE9CSlMtJChD T05GSUdfQVRSQUMzUEFMX0RFQ09ERVIpICAgICAgICs9IGF0cmFjM3BsdXNkZWMubyBhdHJhYzNw bHVzLm8gXAo+ICBPQkpTLSQoQ09ORklHX0FUUkFDOV9ERUNPREVSKSAgICAgICAgICArPSBhdHJh YzlkZWMubwo+ICBPQkpTLSQoQ09ORklHX0FVUkFfREVDT0RFUikgICAgICAgICAgICArPSBjeXV2 Lm8KPiAgT0JKUy0kKENPTkZJR19BVVJBMl9ERUNPREVSKSAgICAgICAgICAgKz0gYXVyYS5vCj4g LU9CSlMtJChDT05GSUdfQVYxX0RFQ09ERVIpICAgICAgICAgICAgICs9IGF2MWRlYy5vIGR5bmFt aWNfaGRyMTBfcGx1cy5vCj4gK09CSlMtJChDT05GSUdfQVYxX0RFQ09ERVIpICAgICAgICAgICAg ICs9IGF2MWRlYy5vCj4gIE9CSlMtJChDT05GSUdfQVYxX0NVVklEX0RFQ09ERVIpICAgICAgICs9 IGN1dmlkZGVjLm8KPiAgT0JKUy0kKENPTkZJR19BVjFfTUVESUFDT0RFQ19ERUNPREVSKSAgKz0g bWVkaWFjb2RlY2RlYy5vCj4gIE9CSlMtJChDT05GSUdfQVYxX05WRU5DX0VOQ09ERVIpICAgICAg ICs9IG52ZW5jX2F2MS5vIG52ZW5jLm8KPiBAQCAtMTA4Miw3ICsxMDgyLDcgQEAgT0JKUy0kKENP TkZJR19MSUJBUklCQjI0X0RFQ09ERVIpICAgICAgICAgKz0gbGliYXJpYmIyNC5vIGFzcy5vCj4g IE9CSlMtJChDT05GSUdfTElCQ0VMVF9ERUNPREVSKSAgICAgICAgICAgICs9IGxpYmNlbHRfZGVj Lm8KPiAgT0JKUy0kKENPTkZJR19MSUJDT0RFQzJfREVDT0RFUikgICAgICAgICAgKz0gbGliY29k ZWMyLm8KPiAgT0JKUy0kKENPTkZJR19MSUJDT0RFQzJfRU5DT0RFUikgICAgICAgICAgKz0gbGli Y29kZWMyLm8KPiAtT0JKUy0kKENPTkZJR19MSUJEQVYxRF9ERUNPREVSKSAgICAgICAgICAgKz0g bGliZGF2MWQubyBkeW5hbWljX2hkcjEwX3BsdXMubwo+ICtPQkpTLSQoQ09ORklHX0xJQkRBVjFE X0RFQ09ERVIpICAgICAgICAgICArPSBsaWJkYXYxZC5vCj4gIE9CSlMtJChDT05GSUdfTElCREFW UzJfREVDT0RFUikgICAgICAgICAgICs9IGxpYmRhdnMyLm8KPiAgT0JKUy0kKENPTkZJR19MSUJG REtfQUFDX0RFQ09ERVIpICAgICAgICAgKz0gbGliZmRrLWFhY2RlYy5vCj4gIE9CSlMtJChDT05G SUdfTElCRkRLX0FBQ19FTkNPREVSKSAgICAgICAgICs9IGxpYmZkay1hYWNlbmMubwo+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL2F2MWRlYy5jIGIvbGliYXZjb2RlYy9hdjFkZWMuYwo+IGluZGV4 IGE4MGUzN2UzM2YuLmRmMzkzZmUzZDAgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9hdjFkZWMu Ywo+ICsrKyBiL2xpYmF2Y29kZWMvYXYxZGVjLmMKPiBAQCAtMjAsNiArMjAsNyBAQAo+ICAKPiAg I2luY2x1ZGUgImNvbmZpZ19jb21wb25lbnRzLmgiCj4gIAo+ICsjaW5jbHVkZSAibGliYXZ1dGls L2hkcl9keW5hbWljX21ldGFkYXRhLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvZmlsbV9ncmFp bl9wYXJhbXMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9tYXN0ZXJpbmdfZGlzcGxheV9tZXRh ZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiBAQCAtMzAsNyArMzEs NiBAQAo+ICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgo+ICAjaW5jbHVkZSAiY29kZWNfaW50ZXJu YWwuaCIKPiAgI2luY2x1ZGUgImRlY29kZS5oIgo+IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9w bHVzLmgiCj4gICNpbmNsdWRlICJod2NvbmZpZy5oIgo+ICAjaW5jbHVkZSAicHJvZmlsZXMuaCIK PiAgI2luY2x1ZGUgInRocmVhZC5oIgo+IEBAIC05MjUsOCArOTI1LDggQEAgc3RhdGljIGludCBl eHBvcnRfaXR1dF90MzUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPiAg ICAgICAgICBpZiAoIWhkcnBsdXMpCj4gICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7Cj4gIAo+IC0gICAgICAgIHJldCA9IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hk cjEwX3BsdXMoaGRycGx1cywgZ2IuYnVmZmVyLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQo JmdiKSk7Cj4gKyAgICAgICAgcmV0ID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShoZHJw bHVzLCBnYi5idWZmZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2IpKTsKPiAgICAgICAgICBpZiAocmV0 IDwgMCkKPiAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgICAgICBicmVhazsKPiBkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyBiL2xpYmF2Y29kZWMvZHlu YW1pY19oZHIxMF9wbHVzLmMKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAzNGE0 NGFhYzY1Li4wMDAwMDAwMDAwCj4gLS0tIGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMu Ywo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxOTggKzAsMCBAQAo+IC0vKgo+IC0gKiBUaGlzIGZp bGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gLSAqCj4gLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAtICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiAtICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCj4gLSAqCj4gLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+IC0gKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+IC0gKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+IC0gKgo+IC0g KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljCj4gLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKPiAtICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+IC0gKi8KPiAt Cj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3BsdXMuaCIKPiAtI2luY2x1ZGUgImdldF9iaXRz LmgiCj4gLQo+IC1zdGF0aWMgY29uc3QgaW50NjRfdCBsdW1pbmFuY2VfZGVuID0gMTsKPiAtc3Rh dGljIGNvbnN0IGludDMyX3QgcGVha19sdW1pbmFuY2VfZGVuID0gMTU7Cj4gLXN0YXRpYyBjb25z dCBpbnQ2NF90IHJnYl9kZW4gPSAxMDAwMDA7Cj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0 aW9uX3BpeGVsX2RlbiA9IDEwMDA7Cj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRf ZGVuID0gNDA5NTsKPiAtc3RhdGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAx MDIzOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4Owo+ IC0KPiAtaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5h bWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpCj4gLXsKPiAtICAgIEdldEJpdENv bnRleHQgZ2JjLCAqZ2IgPSAmZ2JjOwo+IC0gICAgaW50IHJldDsKPiAtCj4gLSAgICBpZiAoIXMp Cj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiAtCj4gLSAgICByZXQgPSBpbml0 X2dldF9iaXRzOChnYiwgZGF0YSwgc2l6ZSk7Cj4gLSAgICBpZiAocmV0IDwgMCkKPiAtICAgICAg ICByZXR1cm4gcmV0Owo+IC0KPiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+IC0g ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgIHMtPmFwcGxpY2F0 aW9uX3ZlcnNpb24gPSBnZXRfYml0cyhnYiwgOCk7Cj4gLSAgICBzLT5udW1fd2luZG93cyA9IGdl dF9iaXRzKGdiLCAyKTsKPiAtCj4gLSAgICBpZiAocy0+bnVtX3dpbmRvd3MgPCAxIHx8IHMtPm51 bV93aW5kb3dzID4gMykgewo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ IC0gICAgfQo+IC0KPiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgoMTkgKiA4ICsgMSkg KiAocy0+bnVtX3dpbmRvd3MgLSAxKSkpCj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7Cj4gLQo+IC0gICAgZm9yIChpbnQgdyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysr KSB7Cj4gLSAgICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29yZGlu YXRlcyBoZXJlLiBUaGV5IHNob3VsZCBiZQo+IC0gICAgICAgIC8vIGNvbnZlcnRlZCB0byB0aGUg cmVsYXRpdmUgY29vcmRpbmF0ZXMgKGluIFswLCAxXSkgaW4gdGhlIGRlY29kZXIuCj4gLSAgICAg ICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107 Cj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeCA9Cj4gLSAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAtICAgICAgICBwYXJh bXMtPndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl95ID0KPiAtICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+IC0gICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2Vy X3JpZ2h0X2Nvcm5lcl94ID0KPiAtICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCAxNiksIDF9Owo+IC0gICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl95 ID0KPiAtICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9Owo+IC0K PiAtICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3ggPSBnZXRfYml0cyhnYiwgMTYp Owo+IC0gICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeSA9IGdldF9iaXRzKGdiLCAx Nik7Cj4gLSAgICAgICAgcGFyYW1zLT5yb3RhdGlvbl9hbmdsZSA9IGdldF9iaXRzKGdiLCA4KTsK PiAtICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2ludGVybmFsX2VsbGlwc2UgPSBnZXRf Yml0cyhnYiwgMTYpOwo+IC0gICAgICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNfZXh0ZXJuYWxf ZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4gLSAgICAgICAgcGFyYW1zLT5zZW1pbWlub3Jf YXhpc19leHRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiAtICAgICAgICBwYXJh bXMtPm92ZXJsYXBfcHJvY2Vzc19vcHRpb24gPSBnZXRfYml0czEoZ2IpOwo+IC0gICAgfQo+IC0K PiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQo+IC0gICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21h eGltdW1fbHVtaW5hbmNlID0KPiAtICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHNfbG9uZyhn YiwgMjcpLCBsdW1pbmFuY2VfZGVufTsKPiAtICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiAtCj4gLSAgICBp ZiAocy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcp IHsKPiAtICAgICAgICBpbnQgcm93cywgY29sczsKPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAxMCkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g LSAgICAgICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsKPiAtICAgICAgICBjb2xzID0gZ2V0X2Jp dHMoZ2IsIDUpOwo+IC0gICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwg KChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4gLSAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+IC0gICAgICAgIH0KPiAtICAgICAgICBzLT5udW1fcm93c190YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+IC0gICAg ICAgIHMtPm51bV9jb2xzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWlu YW5jZSA9IGNvbHM7Cj4gLQo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IChyb3dz ICogY29scyAqIDQpKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiAtCj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPiAtICAgICAg ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKPiAtICAgICAgICAgICAgICAg IHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9 Cj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwgcGVh a19sdW1pbmFuY2VfZGVufTsKPiAtICAgICAgICAgICAgfQo+IC0gICAgICAgIH0KPiAtICAgIH0K PiAtICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+IC0gICAg ICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3dd Owo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgzICogMTcgKyAxNyArIDQpKQo+ IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKPiAtICAgICAgICAgICAgcGFyYW1zLT5tYXhz Y2xbaV0gPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyks IHJnYl9kZW59Owo+IC0gICAgICAgIH0KPiAtICAgICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4cmdi ID0KPiAtICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59 Owo+IC0gICAgICAgIHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMg PSBnZXRfYml0cyhnYiwgNCk7Cj4gLQo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 Cj4gLSAgICAgICAgICAgIChwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRp bGVzICogMjQpKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAt Cj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25f bWF4cmdiX3BlcmNlbnRpbGVzOyBpKyspIHsKPiAtICAgICAgICAgICAgcGFyYW1zLT5kaXN0cmli dXRpb25fbWF4cmdiW2ldLnBlcmNlbnRhZ2UgPSBnZXRfYml0cyhnYiwgNyk7Cj4gLSAgICAgICAg ICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50aWxlID0KPiAtICAgICAg ICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKPiAtICAg ICAgICB9Cj4gLQo+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+IC0gICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICAgICAgcGFyYW1z LT5mcmFjdGlvbl9icmlnaHRfcGl4ZWxzID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCks IGZyYWN0aW9uX3BpeGVsX2Rlbn07Cj4gLSAgICB9Cj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAxKQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0gICAgcy0+ bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEo Z2IpOwo+IC0gICAgaWYgKHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnKSB7Cj4gLSAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4gLSAgICAgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgMTApCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+IC0gICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gLSAgICAgICAgY29scyA9 IGdldF9iaXRzKGdiLCA1KTsKPiAtICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAy NSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewo+IC0gICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcy0+bnVtX3Jv d3NfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPiAtICAg ICAgICBzLT5udW1fY29sc19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2Ug PSBjb2xzOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNv bHMgKiA0KSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+ IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4gLSAgICAgICAgICAg IGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4gLSAgICAgICAgICAgICAgICBzLT5t YXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPQo+IC0gICAgICAg ICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNl X2Rlbn07Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAg Zm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4gLSAgICAgICAgQVZI RFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cj4gLSAg ICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAgIHBhcmFtcy0+dG9uZV9tYXBwaW5nX2Zs YWcgPSBnZXRfYml0czEoZ2IpOwo+IC0gICAgICAgIGlmIChwYXJhbXMtPnRvbmVfbWFwcGluZ19m bGFnKSB7Cj4gLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQo+IC0gICAg ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAgICAg ICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7 Z2V0X2JpdHMoZ2IsIDEyKSwga25lZV9wb2ludF9kZW59Owo+IC0gICAgICAgICAgICBwYXJhbXMt PmtuZWVfcG9pbnRfeSA9Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDEyKSwga25lZV9wb2ludF9kZW59Owo+IC0gICAgICAgICAgICBwYXJhbXMtPm51bV9iZXpp ZXJfY3VydmVfYW5jaG9ycyA9IGdldF9iaXRzKGdiLCA0KTsKPiAtCj4gLSAgICAgICAgICAgIGlm IChnZXRfYml0c19sZWZ0KGdiKSA8IChwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyAq IDEwKSkKPiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0K PiAtICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPm51bV9iZXppZXJfY3Vy dmVfYW5jaG9yczsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgICBwYXJhbXMtPmJlemllcl9jdXJ2 ZV9hbmNob3JzW2ldID0KPiAtICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2Jp dHMoZ2IsIDEwKSwgYmV6aWVyX2FuY2hvcl9kZW59Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAg ICAgfQo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQo+IC0gICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICBwYXJhbXMtPmNvbG9y X3NhdHVyYXRpb25fbWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiAtICAgICAgICBpZiAo cGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZykgewo+IC0gICAgICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA2KQo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl93 ZWlnaHQgPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA2KSwg c2F0dXJhdGlvbl93ZWlnaHRfZGVufTsKPiAtICAgICAgICB9Cj4gLSAgICB9Cj4gLQo+IC0gICAg cmV0dXJuIDA7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3Bs dXMuaCBiL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPiBkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCBjZDdhY2YwNDMyLi4wMDAwMDAwMDAwCj4gLS0tIGEvbGliYXZjb2Rl Yy9keW5hbWljX2hkcjEwX3BsdXMuaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwzNSArMCwwIEBA Cj4gLS8qCj4gLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiAtICoKPiAtICogRkZt cGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IC0g KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCj4gLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgo+IC0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiAtICoKPiAtICogRkZtcGVnIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gLSAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4g LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCj4gLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCj4gLSAqCj4gLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAtICogTGljZW5zZSBhbG9uZyB3aXRoIEZG bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+IC0gKiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw LTEzMDEgVVNBCj4gLSAqLwo+IC0KPiAtI2lmbmRlZiBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExV U19ICj4gLSNkZWZpbmUgQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BMVVNfSAo+IC0KPiAtI2luY2x1 ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+IC0KPiAtLyoqCj4gLSAqIFBh cnNlIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjM1IHRvIEFWYnVmZmVyIChBVkR5 bmFtaWNIRFJQbHVzKS4KPiAtICogQHBhcmFtIHMgQSBwb2ludGVyIGNvbnRhaW5pbmcgdGhlIGRl Y29kZWQgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCj4gLSAqIEBwYXJhbSBkYXRhIFRoZSBi eXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEuCj4gLSAqIEBwYXJh bSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0ZXMuCj4gLSAqCj4gLSAqIEByZXR1 cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJS T1IuCj4gLSAqLwo+IC1pbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1 cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSk7Cj4gLQo+IC0jZW5k aWYgLyogQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BMVVNfSCAqLwo+IGRpZmYgLS1naXQgYS9saWJh dmNvZGVjL2gyNjQ1X3NlaS5jIGIvbGliYXZjb2RlYy9oMjY0NV9zZWkuYwo+IGluZGV4IDZlNGE5 YTFhZjIuLjYzYWI3MTFiYzkgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9oMjY0NV9zZWkuYwo+ ICsrKyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKPiBAQCAtMjcsMTMgKzI3LDEzIEBACj4gIAo+ ICAjaW5jbHVkZSAibGliYXZ1dGlsL2FtYmllbnRfdmlld2luZ19lbnZpcm9ubWVudC5oIgo+ICAj aW5jbHVkZSAibGliYXZ1dGlsL2Rpc3BsYXkuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9oZHJf ZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2ZpbG1fZ3JhaW5fcGFy YW1zLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgo+ICAjaW5jbHVkZSAibGli YXZ1dGlsL3N0ZXJlbzNkLmgiCj4gIAo+ICAjaW5jbHVkZSAiYXRzY19hNTMuaCIKPiAgI2luY2x1 ZGUgImF2Y29kZWMuaCIKPiAtI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgo+ICAjaW5j bHVkZSAiZHluYW1pY19oZHJfdml2aWQuaCIKPiAgI2luY2x1ZGUgImdldF9iaXRzLmgiCj4gICNp bmNsdWRlICJnb2xvbWIuaCIKPiBAQCAtNTIsOCArNTIsOCBAQCBzdGF0aWMgaW50IGRlY29kZV9y ZWdpc3RlcmVkX3VzZXJfZGF0YV9keW5hbWljX2hkcl9wbHVzKEhFVkNTRUlEeW5hbWljSERSUGx1 cyAqcwo+ICAgICAgaWYgKCFtZXRhZGF0YSkKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICAKPiAtICAgIGVyciA9IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEw X3BsdXMobWV0YWRhdGEsIGdiLT5idWZmZXIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7 Cj4gKyAgICBlcnIgPSBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KG1ldGFkYXRhLCBnYi0+ YnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3Ry ZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikpOwo+ICAgICAgaWYgKGVyciA8IDApIHsKPiAgICAgICAg ICBhdl9mcmVlKG1ldGFkYXRhKTsKPiAgICAgICAgICByZXR1cm4gZXJyOwo+IGRpZmYgLS1naXQg YS9saWJhdmNvZGVjL2xpYmRhdjFkLmMgYi9saWJhdmNvZGVjL2xpYmRhdjFkLmMKPiBpbmRleCBl YjEyMjVlYTFhLi41MGM0Y2VlZTQwIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvbGliZGF2MWQu Ywo+ICsrKyBiL2xpYmF2Y29kZWMvbGliZGF2MWQuYwo+IEBAIC0yNCw2ICsyNCw3IEBACj4gICNp bmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUu aCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9maWxtX2dyYWluX3BhcmFtcy5oIgo+ICsjaW5jbHVk ZSAibGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0 aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9p bWd1dGlscy5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgo+IEBAIC0zMyw3ICszNCw2 IEBACj4gICNpbmNsdWRlICJieXRlc3RyZWFtLmgiCj4gICNpbmNsdWRlICJjb2RlY19pbnRlcm5h bC5oIgo+ICAjaW5jbHVkZSAiZGVjb2RlLmgiCj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3Bs dXMuaCIKPiAgI2luY2x1ZGUgImludGVybmFsLmgiCj4gIAo+ICAjZGVmaW5lIEZGX0RBVjFEX1ZF UlNJT05fQVRfTEVBU1QoeCx5KSBcCj4gQEAgLTU1NSw4ICs1NTUsOCBAQCBGRl9FTkFCTEVfREVQ UkVDQVRJT05fV0FSTklOR1MKPiAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiAgICAgICAg ICAgICAgfQo+ICAKPiAtICAgICAgICAgICAgcmVzID0gZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5 bmFtaWNfaGRyMTBfcGx1cyhoZHJwbHVzLCBnYi5idWZmZXIsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0 X2J5dGVzX2xlZnQoJmdiKSk7Cj4gKyAgICAgICAgICAgIHJlcyA9IGF2X2R5bmFtaWNfaGRyX3Bs dXNfZnJvbV90MzUoaGRycGx1cywgZ2IuYnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikp Owo+ICAgICAgICAgICAgICBpZiAocmVzIDwgMCkKPiAgICAgICAgICAgICAgICAgIGdvdG8gZmFp bDsKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5jIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPiBpbmRl eCAwZmExZWU4MmRlLi4yMjNkYjJmZDY2IDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5jCj4gKysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMK PiBAQCAtMjAsNiArMjAsMTYgQEAKPiAgCj4gICNpbmNsdWRlICJoZHJfZHluYW1pY19tZXRhZGF0 YS5oIgo+ICAjaW5jbHVkZSAibWVtLmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL2dldF9iaXRz LmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVjL3B1dF9iaXRzLmgiCj4gKwo+ICtzdGF0aWMgY29u c3QgaW50NjRfdCBsdW1pbmFuY2VfZGVuID0gMTsKPiArc3RhdGljIGNvbnN0IGludDMyX3QgcGVh a19sdW1pbmFuY2VfZGVuID0gMTU7Cj4gK3N0YXRpYyBjb25zdCBpbnQ2NF90IHJnYl9kZW4gPSAx MDAwMDA7Cj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2RlbiA9IDEwMDA7 Cj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRfZGVuID0gNDA5NTsKPiArc3RhdGlj IGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwo+ICtzdGF0aWMgY29uc3Qg aW50MzJfdCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4Owo+ICAKPiAgQVZEeW5hbWljSERSUGx1 cyAqYXZfZHluYW1pY19oZHJfcGx1c19hbGxvYyhzaXplX3QgKnNpemUpCj4gIHsKPiBAQCAtNDUs MyArNTUsMTczIEBAIEFWRHluYW1pY0hEUlBsdXMgKmF2X2R5bmFtaWNfaGRyX3BsdXNfY3JlYXRl X3NpZGVfZGF0YShBVkZyYW1lICpmcmFtZSkKPiAgCj4gICAgICByZXR1cm4gKEFWRHluYW1pY0hE UlBsdXMgKilzaWRlX2RhdGEtPmRhdGE7Cj4gIH0KPiArCj4gK2ludCBhdl9keW5hbWljX2hkcl9w bHVzX2Zyb21fdDM1KEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKQo+ICt7Cj4gKyAg ICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdiYzsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsg ICAgaWYgKCFzKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICsgICAg cmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwo+ICsgICAgaWYgKHJldCA8IDAp Cj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PCAxMCkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICBz LT5hcHBsaWNhdGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgcy0+bnVtX3dp bmRvd3MgPSBnZXRfYml0cyhnYiwgMik7Cj4gKwo+ICsgICAgaWYgKHMtPm51bV93aW5kb3dzIDwg MSB8fCBzLT5udW1fd2luZG93cyA+IDMpIHsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoKDE5 ICogOCArIDEpICogKHMtPm51bV93aW5kb3dzIC0gMSkpKQo+ICsgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dp bmRvd3M7IHcrKykgewo+ICsgICAgICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8gYWJzb2x1 dGUgY29vcmRpbmF0ZXMgaGVyZS4gVGhleSBzaG91bGQgYmUKPiArICAgICAgICAvLyBjb252ZXJ0 ZWQgdG8gdGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVy Lgo+ICsgICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+ cGFyYW1zW3ddOwo+ICsgICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3gg PQo+ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gKyAg ICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9Cj4gKyAgICAgICAgICAg IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBwYXJhbXMtPndp bmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdo dF9jb3JuZXJfeSA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYp LCAxfTsKPiArCj4gKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0gZ2V0X2Jp dHMoZ2IsIDE2KTsKPiArICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRf Yml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBnZXRfYml0 cyhnYiwgOCk7Cj4gKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9lbGxp cHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiArICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlz X2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBhcmFtcy0+ c2VtaW1pbm9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4gKyAg ICAgICAgcGFyYW1zLT5vdmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKPiAr ICAgIH0KPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiArICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1f ZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9Cj4gKyAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Cj4gKyAgICBzLT50YXJnZXRlZF9zeXN0 ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4g Kwo+ICsgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWlu YW5jZV9mbGFnKSB7Cj4gKyAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4gKyAgICAgICAgaWYgKGdl dF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ICsgICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gKyAgICAgICAgY29s cyA9IGdldF9iaXRzKGdiLCA1KTsKPiArICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3Mg PiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewo+ICsgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcy0+bnVt X3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93 czsKPiArICAgICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxf cGVha19sdW1pbmFuY2UgPSBjb2xzOwo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAocm93cyAqIGNvbHMgKiA0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7 Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4gKyAgICAg ICAgICAgICAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFu Y2VbaV1bal0gPQo+ICsgICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9 Cj4gKyAgICB9Cj4gKyAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3Kysp IHsKPiArICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMt PnBhcmFtc1t3XTsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsg MTcgKyA0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gKyAgICAgICAgICAgIHBh cmFtcy0+bWF4c2NsW2ldID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTcpLCByZ2JfZGVufTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcGFyYW1zLT5hdmVy YWdlX21heHJnYiA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcp LCByZ2JfZGVufTsKPiArICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3Bl cmNlbnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPAo+ICsgICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJn Yl9wZXJjZW50aWxlcyAqIDI0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fZGlz dHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Cj4gKyAgICAgICAgICAgIHBhcmFt cy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMoZ2IsIDcpOwo+ ICsgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGlsZSA9 Cj4gKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rl bn07Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAx MCkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAg ICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTApLCBmcmFjdGlvbl9waXhlbF9kZW59Owo+ICsgICAgfQo+ICsgICAgaWYgKGdldF9i aXRzX2xlZnQoZ2IpIDwgMSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiArICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0g Z2V0X2JpdHMxKGdiKTsKPiArICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVh a19sdW1pbmFuY2VfZmxhZykgewo+ICsgICAgICAgIGludCByb3dzLCBjb2xzOwo+ICsgICAgICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiArICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+ICsgICAg ICAgIGNvbHMgPSBnZXRfYml0cyhnYiwgNSk7Cj4gKyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8 IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiArICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgfQo+ICsgICAgICAg IHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJv d3M7Cj4gKyAgICAgICAgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtf bHVtaW5hbmNlID0gY29sczsKPiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg KHJvd3MgKiBjb2xzICogNCkpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSURE QVRBOwo+ICsKPiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+ICsg ICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAgICAgICAg ICAgICAgcy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0K PiArICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFr X2x1bWluYW5jZV9kZW59Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ ICsKPiArICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+ICsg ICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1z W3ddOwo+ICsgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBwYXJhbXMtPnRvbmVf bWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiArICAgICAgICBpZiAocGFyYW1zLT50b25l X21hcHBpbmdfZmxhZykgewo+ICsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAy OCkKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiAr ICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPQo+ICsgICAgICAgICAgICAgICAgKEFW UmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiArICAgICAgICAg ICAgcGFyYW1zLT5rbmVlX3BvaW50X3kgPQo+ICsgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiArICAgICAgICAgICAgcGFyYW1z LT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gKwo+ICsgICAg ICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVyX2N1cnZl X2FuY2hvcnMgKiAxMCkpCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1f YmV6aWVyX2N1cnZlX2FuY2hvcnM7IGkrKykgewo+ICsgICAgICAgICAgICAgICAgcGFyYW1zLT5i ZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVufTsKPiArICAgICAgICAgICAg fQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkK PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgcGFy YW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKyAg ICAgICAgaWYgKHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKPiArICAg ICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKPiArICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3Nh dHVyYXRpb25fd2VpZ2h0ID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgNiksIHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5oIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgKPiBpbmRl eCAyZDcyZGU1NmFlLi4zZDMyNzI0MWMxIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5oCj4gKysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgK PiBAQCAtMzQwLDQgKzM0MCwxNSBAQCBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9w bHVzX2FsbG9jKHNpemVfdCAqc2l6ZSk7Cj4gICAqLwo+ICBBVkR5bmFtaWNIRFJQbHVzICphdl9k eW5hbWljX2hkcl9wbHVzX2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpOwo+ICAKPiAr LyoqCj4gKyAqIFBhcnNlIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjM1IHRvIEFW YnVmZmVyIChBVkR5bmFtaWNIRFJQbHVzKS4KPiArICogQHBhcmFtIHMgQSBwb2ludGVyIGNvbnRh aW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCj4gKyAqIEBwYXJh bSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEu Cj4gKyAqIEBwYXJhbSBzaXplIFNpemUgb2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0ZXMuCgpUaGUg aW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBHZXRCaXQtQVBJIHdoaWNo IHJlcXVpcmVzCnRoZSBidWZmZXIgdG8gYmUgcGFkZGVkOyB5ZXQgdGhlIGRvY3VtZW50YXRpb24g ZG9lcyBub3QgbWVudGlvbiB0aGlzLgoKTG9va2luZyBhdCB0aGUgY2FsY3VsYXRpb24gaW4gYXZf ZHluYW1pY19oZHJfcGx1c190b190MzUoKSwgaXQgc2VlbXMKdGhhdCB0aGUgbWF4aW11bSBiaXRs ZW5ndGggb2YgYSB2YWxpZCBJVFUtVCBULjM1IHBheWxvYWQgaXMKNDgrMsOXOTM3KzI3KzErMTAr MjXDlzI1w5c0KzPDlzgyKygzw5cxNcOXMjQpKygxKzEwKzI1w5cyNcOXNCszw5cxKSsoM8OXKDI4 KzE1w5cxMCkpKzMrM8OXNgo9IDg4NTUgYml0cyAocGxlYXNlIGRvdWJsZS1jaGVjayB0aGlzKS4g VGhpcyBtZWFucyB3ZSBjYW4ganVzdCBjb3B5IHRoYXQKbXVjaCBpbnRvIGEgcGFkZGVkIGJ1ZmZl ciBvbiB0aGUgc3RhY2sgYW5kIGlnbm9yZSB0aGUgcGFkZGluZy4gV2UgbWF5CnRoZW4gcmVtb3Zl IHRoZSBwYWRkaW5nIGZyb20gdGhlIHNlcmlhbGl6YXRpb24gZnVuY3Rpb24sIHRvby4KCihUaGUg R2V0Qml0LUFQSSBidHcgYWN0dWFsbHkgZG9lcyBub3QgbmVlZCBBVl9JTlBVVF9CVUZGRVJfUEFE RElOR19TSVpFCmJ5dGVzIG9mIHBhZGRpbmcsIGJ1dCB3YXkgbGVzcyAoSSB0aGluayA4IGJ5dGVz IG9yIHNvKS4gSSBkb24ndCByZWFsbHkKbGlrZSB1c2luZyBBVl9JTlBVVF9CVUZGRVJfUEFERElO R19TSVpFIGhlcmUuKQoKPiArICoKPiArICogQHJldHVybiAwIGlmIHN1Y2NlZWQuIE90aGVyd2lz ZSwgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZFUlJPUi4KPiArICovCj4gK2ludCBhdl9keW5h bWljX2hkcl9wbHVzX2Zyb21fdDM1KEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3Qg KmRhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKTsK PiArCj4gICNlbmRpZiAvKiBBVlVUSUxfSERSX0RZTkFNSUNfTUVUQURBVEFfSCAqLwoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K