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 57D62456F2 for ; Tue, 21 Mar 2023 12:31:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DE8A268C5C4; Tue, 21 Mar 2023 14:31:23 +0200 (EET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2102.outbound.protection.outlook.com [40.92.90.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CB66568C522 for ; Tue, 21 Mar 2023 14:31:16 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TuUVMGARvmpC1vq0AxoE2GJbO3a7td6FRZ6pmwm1suW0k/bvj920yYMaOYhWECkq+Rc59jpgnKIcHAxJgCHHtYAZ5XHTrY9JcxdNY8LI9srjGLc9ElLPYe7vUlaWpb5xvZXQNHpueFj1/4AHxVuKKBKJk90jJqcNu5UotWwrA7jmO9Ave42ND31gAm83r2t7H22Asd/UNCisUCvI8E7a+RqIp0QXIYnMwDZJumAE6sF9Zkl6JM/x+yYBCBVsiAm+16US4Vug69mgYinAzI3p8ud+G8SRy9VYog0NX50QjbJLuwKLzYI8aw9Fjn+oi1v+9gYpa6ScSQZaQMOkilJF5w== 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=+9+BOhq5gmpgrH80TjTApmRAbhhHAcpxI7R5mkxWTpI=; b=IOa5YA1/7fdxltcW1lWNAIAei9iVRpiiO5MX98ExvQmn5+uNB0yPnEv2d9FqmvMrR7lTBYie4TpZus11A+q5apbFaqVMGOYxGKpxQAV1dhcafBwPg1LG4Nrj1px8o5YKyXfMrzVedW5CoMyAaAqNd1WUv6/cZWT1vCtxnbE8KJvLje/FQqf2wDMEJjjuX0Oc16HTF5WWq2lAL6qt8rBE5z+CTvY2lUtm0+hFxNWCIFXNk10PoYisnLpktqPg2WG6Gs/NxkzuQ1WO8TN1QxgLQRASgX45udR16v0DJwRvBPIIeeHMKpp4k0/Yx1yZOQFxGsteQ6X6/6PIRJLkNC7H6w== 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=+9+BOhq5gmpgrH80TjTApmRAbhhHAcpxI7R5mkxWTpI=; b=S1dmRphY4JT+gsOzPZck7DbtIwD5nHnOfK2qO8mCdVTGsXSswkErAIUH/P08LEt+wR7Q/M2x6+qWqKuNZOw7ilUYunnsn3yZRUM/j1fJaYkmstlUH+BQ71iiYvL/ttFaNTP5JXX3ObyIjiI9zKa8TzJwN20omRb0j3FEElIQR9N3lFdezUafru+BJ9lIWYBLvZdImkW9csFfWBFI/k8vijuSLJ6unNci2/rYXhS8OZIfyldq3iyCYYdLNCDaM6iNAA6nNqtwVI+FDGNtKGs+FHw8JU9A1d8mJNBURlYeaLtxjBPjz3+UfrbYWKTKAB+h8NJazPLn53f1NfsD1rMJHA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0325.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:328::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.10; Tue, 21 Mar 2023 12:31:14 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::bd9b:b9f7:e94a:109e]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::bd9b:b9f7:e94a:109e%7]) with mapi id 15.20.6222.010; Tue, 21 Mar 2023 12:31:14 +0000 Message-ID: Date: Tue, 21 Mar 2023 13:31:51 +0100 To: ffmpeg-devel@ffmpeg.org References: <132cfb0c-0402-864b-4637-d4673ee05d12@vimeo.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <132cfb0c-0402-864b-4637-d4673ee05d12@vimeo.com> X-TMN: [YM2NsEFsb03LnAQnEOO4OGQyX4HeVN/Gys0GmO/ipm8=] X-ClientProxiedBy: ZR2P278CA0064.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::18) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <0bd3b091-3fd0-2888-afc4-cb6ea1d1c552@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AM8P250MB0325:EE_ X-MS-Office365-Filtering-Correlation-Id: 93d44bbd-714d-4a68-f501-08db2a082909 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4B7CpSxHeInIBcs1RpJsWwKn+D5KycHznmiDdEQJfwWBTMSQrQ/rKPMp5szcBUGFEJVueUfcIVkO2ZUwJpzp4pC1ANvVS2AiPtzIDrKvPnxkqdK3aQZpMPeHsy8vFZYs6OGVipyl6Bf2LOyK5Bv4Z6NIipRUKK5c1TVVTU9XfpO08Dw4jCgaSR6zWS/dV7i1p3yxK+sk6v5jyYfDkQNXKi2XIGFCiIEr67YTqrBPQ0NxTv2sy80hlTHYizrZfH08LLtJM1TohfShalUkCXMxr+KyxZB0c02Wm34CmYa3FCTh9uAx+CE8vgW0jMxG9noDt7s1fSn3tSTa1433Cn7u/LZBQt5iPjF1NCNdVjMXiROK11K3TptnzY1lRjAeZap8EbJtmId1tW50y/6EGeSjpEmnIVPzQIbiogaQYf8vGmRQw0J8s3iOvAVxrOfko7Jpl8HWWbEf9ZmxrrLk+NVMVALPBzV771n2VkCRZgxD8RWKgoDAz8v2OOeldpT2rQP0GPy5ItSlFMcBHbCynMCjYhZg75M1D3KBFkT+sEYzuL2W8HyvuZK1SPR06W0vs22x0A8iNclcIg41TkCtdm2NkaIj/TdIsXD6X+DUdcloreoKpu4yt3WUAmaRzBlCX1iYk9E1/5ZdUjtuiwhDRU+z8OyunuyzCw4P5DgfQOizszc= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R2J2bHlFMlduOS8weVVISHB0Q3BjTW9waW45bXRwNWJjL1lxWnkwY291RTVo?= =?utf-8?B?YWVDRXBMRHAyU2JXcWltb0F6UTc5cG9keGVLYTFrOUltNVZMbWFab2c4cEhn?= =?utf-8?B?anRCQmdWTXpkeTVMN0xlTXU1NUtXK2JZYS8xdzRrcGRheitoZWJCQzRDU1o5?= =?utf-8?B?endTcjU5UjhOQ1czbXc0S2FaWHlGVWpyVEF1UzlEZTNsWkRkb0Z5RGlrQW5X?= =?utf-8?B?TEVFaFRSS0xLV2lwUWx3NnN5UUkrS0xnUEtKTm9GWkg5eDNZTEV2aGpKVE12?= =?utf-8?B?RGYzS3FUTmwzM21YaGZtRlR6d1podGxCVG1SWjBMalFsQlBaRDhNOGNSMCt3?= =?utf-8?B?UENxcEhVc2wyaWFkOFVxMDQ3N2lqQy9jbGlUWlphNmtKb0tkSnhaUnBrTCtC?= =?utf-8?B?aWV1Z3N4blhBdUtBb3BMVGVMRGpWUFhTdGhjazZ4bXRuT1dhNWd1amJEMTBu?= =?utf-8?B?QU0zWlVwQTFqNi95eHdMMGZvVDMwalVIVU9nMjkzMGtVQUt5SFBMcTUzZnAr?= =?utf-8?B?VlBoNlpIcmNlaUZ2Z3hKOGNFbUY4MVBvakRZeUk3S1dEbWxTOGRnWW00bmp0?= =?utf-8?B?bXlxZkVqMXJwUGx5Ti9DZVZHdkhWSzc4KzdhWjhqTVlIakN0VFh0V2trUGo4?= =?utf-8?B?N1psYkRxRi9IN25wcnExcjBvZ2l6QXNYeFozTWl2YUxGZytQODFKTy8xL2Mr?= =?utf-8?B?RmtHaCsxK21JTzRJdGovcGlqQ01lUTdHeTdjaUpQeVZqcHAzZFpESDFRMzAv?= =?utf-8?B?cXhiT08zaDVqRzRuVWhONDhralhlYys0YURFYlBVZEJtQVF6NjNSWERvQXQ4?= =?utf-8?B?aEFaaWt1Vzd6cUdpeU1GdmY4VXZCVW42aUZLUjhXa2FPdkwzTjZDMzl4NTlR?= =?utf-8?B?MjZGNGVXVjczOVNGVmJjdjhlZTBHak1KRHcwT3pBMjg3R3kwR3FKNlNWcktX?= =?utf-8?B?UHNneldWditVcHl4QllCRkdpVmxVMmlRdjY3c0VwV0VKcDZIU0FWc1FFZEZE?= =?utf-8?B?SVdWUFRDN3ByakV5Y3l2TmJUb1U3NVdGK1U0NlZIMitROVJhRVlmazBsMUFr?= =?utf-8?B?Rm02Wm9VYVJBeW1hR2NDTW5mZ0FydnltUllydTB0YmtFNEdhdG1ZbkZ4V3d2?= =?utf-8?B?SFhoVUlDbHk5bXpZQXo4S0wvTC8wTWNJNThKRU5MOXhZYzEzdXVldnpmWUdT?= =?utf-8?B?T1VlSU5QaFcxVVgvUFlaeWVQQ0VybjFWa0dzL3ZJRVkzY3VvN0lnYllvVHNS?= =?utf-8?B?TDNORUdoYzY2MEo5Qk1uNGZ6dDk3MHFCTndLei9Rc0NhU3FpUnBRR3pzSWow?= =?utf-8?B?cWh3VTBTZmI0c2x0UU5SOHN0SnpzTWh3dExQUjFDbWJ2QWxya2Zwa1R1WHZy?= =?utf-8?B?b1B4SkF0NTRPd1B2YW9vNEd1NTltREhoTXM4ZTgyZEFLUjZLR2YvTGZWcnh4?= =?utf-8?B?OVVrampvWFo5cWd1dzVxcHhpMFhXcW9EN0xsUFBKRVF1RjBhUnNZU1R4SEYy?= =?utf-8?B?OHJIZUVqVmJ5aSthUGJLUDBjS0UvSHJSWFVmYW8wMmh4NlpMWFROejdGbnpm?= =?utf-8?B?VEM0RzFTSTdKWXFYQ0lUTExqQ2ZaY0dJbHcrd2IxVWV1bkEram0vSGpWR0Mx?= =?utf-8?B?MVJIZW1SdXRwSklkbHVUOFpDVzhDdHEyVUNlSGI0MVBLWTY1L2hiM3R4WmNC?= =?utf-8?B?Q3FDNzNNQUExZzZTdnZ3eHdLenNhOE5ZL0tYS2U5a3BLT0hzZVZGUWR6NGNJ?= =?utf-8?Q?2AsQTHqNqcG2xICUeNH/zstTPT8NCj2EcEDjjOd?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93d44bbd-714d-4a68-f501-08db2a082909 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 12:31:14.2982 (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: AM8P250MB0325 Subject: Re: [FFmpeg-devel] [PATCH v8 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 aWNfbWV0YWRhdGEuYyB8IDE5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJh dnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCB8ICAxMyArKwo+ICA4IGZpbGVzIGNoYW5nZWQs IDIxNSBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRpb25zKC0pCj4gIGRlbGV0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBs aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4gCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggYWJhZTQ5MDlkMi4uNDA4 ZWNkMWUzMSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZj b2RlYy9NYWtlZmlsZQo+IEBAIC0xMDQsNyArMTA0LDcgQEAgT0JKUy0kKENPTkZJR19IMjY0X1NF SSkgICAgICAgICAgICAgICAgKz0gaDI2NF9zZWkubyBoMjY0NV9zZWkubwo+ICBPQkpTLSQoQ09O RklHX0hFVkNQQVJTRSkgICAgICAgICAgICAgICArPSBoZXZjX3BhcnNlLm8gaGV2Y19wcy5vIGhl dmNfZGF0YS5vIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aDI2NDVkYXRhLm8gaDI2NDVfcGFyc2UubyBoMjY0NV92dWkubwo+ICBPQkpTLSQoQ09ORklHX0hF VkNfU0VJKSAgICAgICAgICAgICAgICArPSBoZXZjX3NlaS5vIGgyNjQ1X3NlaS5vIFwKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY19oZHIxMF9wbHVz Lm8gZHluYW1pY19oZHJfdml2aWQubwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkeW5hbWljX2hkcl92aXZpZC5vCj4gIE9CSlMtJChDT05GSUdfSFBFTERTUCkg ICAgICAgICAgICAgICAgICs9IGhwZWxkc3Aubwo+ICBPQkpTLSQoQ09ORklHX0hVRkZNQU4pICAg ICAgICAgICAgICAgICArPSBodWZmbWFuLm8KPiAgT0JKUy0kKENPTkZJR19IVUZGWVVWRFNQKSAg ICAgICAgICAgICAgKz0gaHVmZnl1dmRzcC5vCj4gQEAgLTI1MCw3ICsyNTAsNyBAQCBPQkpTLSQo Q09ORklHX0FUUkFDM1BBTF9ERUNPREVSKSAgICAgICArPSBhdHJhYzNwbHVzZGVjLm8gYXRyYWMz cGx1cy5vIFwKPiAgT0JKUy0kKENPTkZJR19BVFJBQzlfREVDT0RFUikgICAgICAgICAgKz0gYXRy YWM5ZGVjLm8KPiAgT0JKUy0kKENPTkZJR19BVVJBX0RFQ09ERVIpICAgICAgICAgICAgKz0gY3l1 di5vCj4gIE9CSlMtJChDT05GSUdfQVVSQTJfREVDT0RFUikgICAgICAgICAgICs9IGF1cmEubwo+ IC1PQkpTLSQoQ09ORklHX0FWMV9ERUNPREVSKSAgICAgICAgICAgICArPSBhdjFkZWMubyBkeW5h bWljX2hkcjEwX3BsdXMubwo+ICtPQkpTLSQoQ09ORklHX0FWMV9ERUNPREVSKSAgICAgICAgICAg ICArPSBhdjFkZWMubwo+ICBPQkpTLSQoQ09ORklHX0FWMV9DVVZJRF9ERUNPREVSKSAgICAgICAr PSBjdXZpZGRlYy5vCj4gIE9CSlMtJChDT05GSUdfQVYxX01FRElBQ09ERUNfREVDT0RFUikgICs9 IG1lZGlhY29kZWNkZWMubwo+ICBPQkpTLSQoQ09ORklHX0FWMV9OVkVOQ19FTkNPREVSKSAgICAg ICArPSBudmVuY19hdjEubyBudmVuYy5vCj4gQEAgLTEwODIsNyArMTA4Miw3IEBAIE9CSlMtJChD T05GSUdfTElCQVJJQkIyNF9ERUNPREVSKSAgICAgICAgICs9IGxpYmFyaWJiMjQubyBhc3Mubwo+ ICBPQkpTLSQoQ09ORklHX0xJQkNFTFRfREVDT0RFUikgICAgICAgICAgICArPSBsaWJjZWx0X2Rl Yy5vCj4gIE9CSlMtJChDT05GSUdfTElCQ09ERUMyX0RFQ09ERVIpICAgICAgICAgICs9IGxpYmNv ZGVjMi5vCj4gIE9CSlMtJChDT05GSUdfTElCQ09ERUMyX0VOQ09ERVIpICAgICAgICAgICs9IGxp YmNvZGVjMi5vCj4gLU9CSlMtJChDT05GSUdfTElCREFWMURfREVDT0RFUikgICAgICAgICAgICs9 IGxpYmRhdjFkLm8gZHluYW1pY19oZHIxMF9wbHVzLm8KPiArT0JKUy0kKENPTkZJR19MSUJEQVYx RF9ERUNPREVSKSAgICAgICAgICAgKz0gbGliZGF2MWQubwo+ICBPQkpTLSQoQ09ORklHX0xJQkRB VlMyX0RFQ09ERVIpICAgICAgICAgICArPSBsaWJkYXZzMi5vCj4gIE9CSlMtJChDT05GSUdfTElC RkRLX0FBQ19ERUNPREVSKSAgICAgICAgICs9IGxpYmZkay1hYWNkZWMubwo+ICBPQkpTLSQoQ09O RklHX0xJQkZES19BQUNfRU5DT0RFUikgICAgICAgICArPSBsaWJmZGstYWFjZW5jLm8KPiBkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9hdjFkZWMuYyBiL2xpYmF2Y29kZWMvYXYxZGVjLmMKPiBpbmRl eCBhODBlMzdlMzNmLi5kZjM5M2ZlM2QwIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvYXYxZGVj LmMKPiArKysgYi9saWJhdmNvZGVjL2F2MWRlYy5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAgCj4g ICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgo+ICAKPiArI2luY2x1ZGUgImxpYmF2dXRp bC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2ZpbG1fZ3Jh aW5fcGFyYW1zLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0 YWRhdGEuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCj4gQEAgLTMwLDcgKzMx LDYgQEAKPiAgI2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKPiAgI2luY2x1ZGUgImNvZGVjX2ludGVy bmFsLmgiCj4gICNpbmNsdWRlICJkZWNvZGUuaCIKPiAtI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBf cGx1cy5oIgo+ICAjaW5jbHVkZSAiaHdjb25maWcuaCIKPiAgI2luY2x1ZGUgInByb2ZpbGVzLmgi Cj4gICNpbmNsdWRlICJ0aHJlYWQuaCIKPiBAQCAtOTI1LDggKzkyNSw4IEBAIHN0YXRpYyBpbnQg ZXhwb3J0X2l0dXRfdDM1KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCj4g ICAgICAgICAgaWYgKCFoZHJwbHVzKQo+ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICAKPiAtICAgICAgICByZXQgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19o ZHIxMF9wbHVzKGhkcnBsdXMsIGdiLmJ1ZmZlciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0 KCZnYikpOwo+ICsgICAgICAgIHJldCA9IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoaGRy cGx1cywgZ2IuYnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSk7Cj4gICAgICAgICAgaWYgKHJl dCA8IDApCj4gICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gICAgICAgICAgYnJlYWs7Cj4gZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMgYi9saWJhdmNvZGVjL2R5 bmFtaWNfaGRyMTBfcGx1cy5jCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMzRh NDRhYWM2NS4uMDAwMDAwMDAwMAo+IC0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVz LmMKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMTk4ICswLDAgQEAKPiAtLyoKPiAtICogVGhpcyBm aWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gLSAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiAtICogTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gLSAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo+IC0gKgo+IC0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiAtICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiAtICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiAtICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAtICoKPiAt ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYwo+IC0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiAtICovCj4g LQo+IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCj4gLSNpbmNsdWRlICJnZXRfYml0 cy5oIgo+IC0KPiAtc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7Cj4gLXN0 YXRpYyBjb25zdCBpbnQzMl90IHBlYWtfbHVtaW5hbmNlX2RlbiA9IDE1Owo+IC1zdGF0aWMgY29u c3QgaW50NjRfdCByZ2JfZGVuID0gMTAwMDAwOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBmcmFj dGlvbl9waXhlbF9kZW4gPSAxMDAwOwo+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBrbmVlX3BvaW50 X2RlbiA9IDQwOTU7Cj4gLXN0YXRpYyBjb25zdCBpbnQzMl90IGJlemllcl9hbmNob3JfZGVuID0g MTAyMzsKPiAtc3RhdGljIGNvbnN0IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsK PiAtCj4gLWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHlu YW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQo+IC17Cj4gLSAgICBHZXRCaXRD b250ZXh0IGdiYywgKmdiID0gJmdiYzsKPiAtICAgIGludCByZXQ7Cj4gLQo+IC0gICAgaWYgKCFz KQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gLQo+IC0gICAgcmV0ID0gaW5p dF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwo+IC0gICAgaWYgKHJldCA8IDApCj4gLSAgICAg ICAgcmV0dXJuIHJldDsKPiAtCj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiAt ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICBzLT5hcHBsaWNh dGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+IC0gICAgcy0+bnVtX3dpbmRvd3MgPSBn ZXRfYml0cyhnYiwgMik7Cj4gLQo+IC0gICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5u dW1fd2luZG93cyA+IDMpIHsKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiAtICAgIH0KPiAtCj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoKDE5ICogOCArIDEp ICogKHMtPm51bV93aW5kb3dzIC0gMSkpKQo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+IC0KPiAtICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcr Kykgewo+IC0gICAgICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8gYWJzb2x1dGUgY29vcmRp bmF0ZXMgaGVyZS4gVGhleSBzaG91bGQgYmUKPiAtICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhl IHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgo+IC0gICAg ICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3dd Owo+IC0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3ggPQo+IC0gICAg ICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4gLSAgICAgICAgcGFy YW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAtICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dl cl9yaWdodF9jb3JuZXJfeCA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKPiAtICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJf eSA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAt Cj4gLSAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0gZ2V0X2JpdHMoZ2IsIDE2 KTsKPiAtICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBnZXRfYml0cyhnYiwg MTYpOwo+IC0gICAgICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBnZXRfYml0cyhnYiwgOCk7 Cj4gLSAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9lbGxpcHNlID0gZ2V0 X2JpdHMoZ2IsIDE2KTsKPiAtICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2V4dGVybmFs X2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+IC0gICAgICAgIHBhcmFtcy0+c2VtaW1pbm9y X2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4gLSAgICAgICAgcGFy YW1zLT5vdmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKPiAtICAgIH0KPiAt Cj4gLSAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiAtICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPiAtCj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9t YXhpbXVtX2x1bWluYW5jZSA9Cj4gLSAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmco Z2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Cj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxh eV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gLQo+IC0gICAg aWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFn KSB7Cj4gLSAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgMTApCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ IC0gICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gLSAgICAgICAgY29scyA9IGdldF9i aXRzKGdiLCA1KTsKPiAtICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8 ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewo+IC0gICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcy0+bnVtX3Jvd3NfdGFy Z2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKPiAtICAg ICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1p bmFuY2UgPSBjb2xzOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93 cyAqIGNvbHMgKiA0KSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gLQo+IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7Cj4gLSAgICAg ICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4gLSAgICAgICAgICAgICAg ICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0g PQo+IC0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNCksIHBl YWtfbHVtaW5hbmNlX2Rlbn07Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAgICB9 Cj4gLSAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAtICAg ICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3 XTsKPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkK PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+bWF4 c2NsW2ldID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcp LCByZ2JfZGVufTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21heHJn YiA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVu fTsKPiAtICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVz ID0gZ2V0X2JpdHMoZ2IsIDQpOwo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PAo+IC0gICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50 aWxlcyAqIDI0KSkKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g LQo+IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9u X21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJp YnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMoZ2IsIDcpOwo+IC0gICAgICAg ICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGlsZSA9Cj4gLSAgICAg ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gLSAg ICAgICAgfQo+IC0KPiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiAtICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLQo+IC0gICAgICAgIHBhcmFt cy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTAp LCBmcmFjdGlvbl9waXhlbF9kZW59Owo+IC0gICAgfQo+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgMSkKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAtICAgIHMt Pm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnID0gZ2V0X2JpdHMx KGdiKTsKPiAtICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFu Y2VfZmxhZykgewo+IC0gICAgICAgIGludCByb3dzLCBjb2xzOwo+IC0gICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDEwKQo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiAtICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+IC0gICAgICAgIGNvbHMg PSBnZXRfYml0cyhnYiwgNSk7Cj4gLSAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4g MjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiAtICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgfQo+IC0gICAgICAgIHMtPm51bV9y b3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9IHJvd3M7Cj4gLSAg ICAgICAgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNl ID0gY29sczsKPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBj b2xzICogNCkpCj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0K PiAtICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+IC0gICAgICAgICAg ICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+IC0gICAgICAgICAgICAgICAgcy0+ bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPiAtICAgICAg ICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5j ZV9kZW59Owo+IC0gICAgICAgICAgICB9Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0KPiAtICAg IGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgewo+IC0gICAgICAgIEFW SERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+IC0g ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gLSAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19m bGFnID0gZ2V0X2JpdHMxKGdiKTsKPiAtICAgICAgICBpZiAocGFyYW1zLT50b25lX21hcHBpbmdf ZmxhZykgewo+IC0gICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiAtICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+IC0KPiAtICAgICAgICAg ICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiAtICAgICAgICAgICAgcGFyYW1z LT5rbmVlX3BvaW50X3kgPQo+IC0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRz KGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiAtICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6 aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gLQo+IC0gICAgICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMg KiAxMCkpCj4gLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAt Cj4gLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fYmV6aWVyX2N1 cnZlX2FuY2hvcnM7IGkrKykgewo+IC0gICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3Vy dmVfYW5jaG9yc1tpXSA9Cj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVufTsKPiAtICAgICAgICAgICAgfQo+IC0gICAg ICAgIH0KPiAtCj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiAtICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gLSAgICAgICAgcGFyYW1zLT5jb2xv cl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gLSAgICAgICAgaWYg KHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKPiAtICAgICAgICAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKPiAtICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+IC0gICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25f d2VpZ2h0ID0KPiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgNiks IHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Cj4gLSAgICAgICAgfQo+IC0gICAgfQo+IC0KPiAtICAg IHJldHVybiAwOwo+IC19Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9w bHVzLmggYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4gZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggY2Q3YWNmMDQzMi4uMDAwMDAwMDAwMAo+IC0tLSBhL2xpYmF2Y29k ZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMzUgKzAsMCBA QAo+IC0vKgo+IC0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gLSAqCj4gLSAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiAt ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwo+IC0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKPiAtICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gLSAqCj4gLSAqIEZGbXBlZyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC0gKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQo+IC0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgo+IC0gKgo+IC0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiAtICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQo+IC0gKi8KPiAtCj4gLSNpZm5kZWYgQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BM VVNfSAo+IC0jZGVmaW5lIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVTX0gKPiAtCj4gLSNpbmNs dWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKPiAtCj4gLS8qKgo+IC0gKiBQ YXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZE eW5hbWljSERSUGx1cykuCj4gLSAqIEBwYXJhbSBzIEEgcG9pbnRlciBjb250YWluaW5nIHRoZSBk ZWNvZGVkIEFWRHluYW1pY0hEUlBsdXMgc3RydWN0dXJlLgo+IC0gKiBAcGFyYW0gZGF0YSBUaGUg Ynl0ZSBhcnJheSBjb250YWluaW5nIHRoZSByYXcgSVRVLVQgVC4zNSBkYXRhLgo+IC0gKiBAcGFy YW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVzLgo+IC0gKgo+IC0gKiBAcmV0 dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBBVkVS Uk9SLgo+IC0gKi8KPiAtaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3Bs dXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOwo+IC0KPiAtI2Vu ZGlmIC8qIEFWQ09ERUNfRFlOQU1JQ19IRFIxMF9QTFVTX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9oMjY0NV9zZWkuYyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKPiBpbmRleCA2ZTRh OWExYWYyLi42M2FiNzExYmM5IDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMK PiArKysgYi9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jCj4gQEAgLTI3LDEzICsyNywxMyBAQAo+ICAK PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9hbWJpZW50X3ZpZXdpbmdfZW52aXJvbm1lbnQuaCIKPiAg I2luY2x1ZGUgImxpYmF2dXRpbC9kaXNwbGF5LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaGRy X2R5bmFtaWNfbWV0YWRhdGEuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9maWxtX2dyYWluX3Bh cmFtcy5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiAgI2luY2x1ZGUgImxp YmF2dXRpbC9zdGVyZW8zZC5oIgo+ICAKPiAgI2luY2x1ZGUgImF0c2NfYTUzLmgiCj4gICNpbmNs dWRlICJhdmNvZGVjLmgiCj4gLSNpbmNsdWRlICJkeW5hbWljX2hkcjEwX3BsdXMuaCIKPiAgI2lu Y2x1ZGUgImR5bmFtaWNfaGRyX3ZpdmlkLmgiCj4gICNpbmNsdWRlICJnZXRfYml0cy5oIgo+ICAj aW5jbHVkZSAiZ29sb21iLmgiCj4gQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIGludCBkZWNvZGVf cmVnaXN0ZXJlZF91c2VyX2RhdGFfZHluYW1pY19oZHJfcGx1cyhIRVZDU0VJRHluYW1pY0hEUlBs dXMgKnMKPiAgICAgIGlmICghbWV0YWRhdGEpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsKPiAgCj4gLSAgICBlcnIgPSBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIx MF9wbHVzKG1ldGFkYXRhLCBnYi0+YnVmZmVyLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdChnYikp Owo+ICsgICAgZXJyID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShtZXRhZGF0YSwgZ2It PmJ1ZmZlciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0 cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2IpKTsKPiAgICAgIGlmIChlcnIgPCAwKSB7Cj4gICAgICAg ICAgYXZfZnJlZShtZXRhZGF0YSk7Cj4gICAgICAgICAgcmV0dXJuIGVycjsKPiBkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9saWJkYXYxZC5jIGIvbGliYXZjb2RlYy9saWJkYXYxZC5jCj4gaW5kZXgg ZWIxMjI1ZWExYS4uNTBjNGNlZWU0MCAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2xpYmRhdjFk LmMKPiArKysgYi9saWJhdmNvZGVjL2xpYmRhdjFkLmMKPiBAQCAtMjQsNiArMjQsNyBAQAo+ICAj aW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvY3B1 LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvZmlsbV9ncmFpbl9wYXJhbXMuaCIKPiArI2luY2x1 ZGUgImxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1 dGlsL21hc3RlcmluZ19kaXNwbGF5X21ldGFkYXRhLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwv aW1ndXRpbHMuaCIKPiAgI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiBAQCAtMzMsNyArMzQs NiBAQAo+ICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgo+ICAjaW5jbHVkZSAiY29kZWNfaW50ZXJu YWwuaCIKPiAgI2luY2x1ZGUgImRlY29kZS5oIgo+IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9w bHVzLmgiCj4gICNpbmNsdWRlICJpbnRlcm5hbC5oIgo+ICAKPiAgI2RlZmluZSBGRl9EQVYxRF9W RVJTSU9OX0FUX0xFQVNUKHgseSkgXAo+IEBAIC01NTUsOCArNTU1LDggQEAgRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCj4gICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gICAgICAg ICAgICAgIH0KPiAgCj4gLSAgICAgICAgICAgIHJlcyA9IGZmX3BhcnNlX2l0dV90X3QzNV90b19k eW5hbWljX2hkcjEwX3BsdXMoaGRycGx1cywgZ2IuYnVmZmVyLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KCZnYikpOwo+ICsgICAgICAgICAgICByZXMgPSBhdl9keW5hbWljX2hkcl9w bHVzX2Zyb21fdDM1KGhkcnBsdXMsIGdiLmJ1ZmZlciwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2Ip KTsKPiAgICAgICAgICAgICAgaWYgKHJlcyA8IDApCj4gICAgICAgICAgICAgICAgICBnb3RvIGZh aWw7Cj4gICAgICAgICAgICAgIGJyZWFrOwo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvaGRyX2R5 bmFtaWNfbWV0YWRhdGEuYyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCj4gaW5k ZXggMGZhMWVlODJkZS4uZWJhYjM4OGQwOSAxMDA2NDQKPiAtLS0gYS9saWJhdnV0aWwvaGRyX2R5 bmFtaWNfbWV0YWRhdGEuYwo+ICsrKyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5j Cj4gQEAgLTIwLDYgKzIwLDE4IEBACj4gIAo+ICAjaW5jbHVkZSAiaGRyX2R5bmFtaWNfbWV0YWRh dGEuaCIKPiAgI2luY2x1ZGUgIm1lbS5oIgo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0 cy5oIgo+ICsjaW5jbHVkZSAibGliYXZjb2RlYy9wdXRfYml0cy5oIgo+ICsKPiArI2RlZmluZSBU MzVfUEFZTE9BRF9NQVhfU0laRSA5MDcKPiArCj4gK3N0YXRpYyBjb25zdCBpbnQ2NF90IGx1bWlu YW5jZV9kZW4gPSAxOwo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4g PSAxNTsKPiArc3RhdGljIGNvbnN0IGludDY0X3QgcmdiX2RlbiA9IDEwMDAwMDsKPiArc3RhdGlj IGNvbnN0IGludDMyX3QgZnJhY3Rpb25fcGl4ZWxfZGVuID0gMTAwMDsKPiArc3RhdGljIGNvbnN0 IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0MDk1Owo+ICtzdGF0aWMgY29uc3QgaW50MzJfdCBi ZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7Cj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IHNhdHVyYXRp b25fd2VpZ2h0X2RlbiA9IDg7Cj4gIAo+ICBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hk cl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSkKPiAgewo+IEBAIC00NSwzICs1NywxODEgQEAgQVZE eW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFWRnJh bWUgKmZyYW1lKQo+ICAKPiAgICAgIHJldHVybiAoQVZEeW5hbWljSERSUGx1cyAqKXNpZGVfZGF0 YS0+ZGF0YTsKPiAgfQo+ICsKPiAraW50IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoQVZE eW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdCAqZGF0YSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCj4gK3sKPiArICAgIHVpbnQ4X3QgcGFkZGVk X2J1ZltUMzVfUEFZTE9BRF9NQVhfU0laRSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkVd Owo+ICsgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7Cj4gKyAgICBpbnQgcmV0Owo+ ICsKPiArICAgIGlmICghcykKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsK PiArICAgIGlmIChzaXplID4gVDM1X1BBWUxPQURfTUFYX1NJWkUpCj4gKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsKPiArCj4gKyAgICBtZW1jcHkocGFkZGVkX2J1ZiwgZGF0YSwgc2l6 ZSk7Cj4gKyAgICAvLyBaZXJvLWluaXRpYWxpemUgdGhlIGJ1ZmZlciBwYWRkaW5nIHRvIGF2b2lk IG92ZXJyZWFkcyBpbnRvIHVuaW5pdGlhbGl6ZWQgZGF0YS4KPiArICAgIG1lbXNldChwYWRkZWRf YnVmICsgc2l6ZSwgMCwgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Cj4gKwo+ICsgICAg cmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIHBhZGRlZF9idWYsIHNpemUpOwo+ICsgICAgaWYgKHJl dCA8IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVm dChnYikgPCAxMCkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4g KyAgICBzLT5hcHBsaWNhdGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgcy0+ bnVtX3dpbmRvd3MgPSBnZXRfYml0cyhnYiwgMik7Cj4gKwo+ICsgICAgaWYgKHMtPm51bV93aW5k b3dzIDwgMSB8fCBzLT5udW1fd2luZG93cyA+IDMpIHsKPiArICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikg PCAoKDE5ICogOCArIDEpICogKHMtPm51bV93aW5kb3dzIC0gMSkpKQo+ICsgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgIGZvciAoaW50IHcgPSAxOyB3IDwgcy0+ bnVtX3dpbmRvd3M7IHcrKykgewo+ICsgICAgICAgIC8vIFRoZSBjb3JuZXJzIGFyZSBzZXQgdG8g YWJzb2x1dGUgY29vcmRpbmF0ZXMgaGVyZS4gVGhleSBzaG91bGQgYmUKPiArICAgICAgICAvLyBj b252ZXJ0ZWQgdG8gdGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBk ZWNvZGVyLgo+ICsgICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMg PSAmcy0+cGFyYW1zW3ddOwo+ICsgICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29y bmVyX3ggPQo+ICsgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07 Cj4gKyAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeSA9Cj4gKyAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBwYXJh bXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlv bmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dl cl9yaWdodF9jb3JuZXJfeSA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKPiArCj4gKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0g Z2V0X2JpdHMoZ2IsIDE2KTsKPiArICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kg PSBnZXRfYml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBhcmFtcy0+cm90YXRpb25fYW5nbGUgPSBn ZXRfYml0cyhnYiwgOCk7Cj4gKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5h bF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiArICAgICAgICBwYXJhbXMtPnNlbWltYWpv cl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+ICsgICAgICAgIHBh cmFtcy0+c2VtaW1pbm9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSA9IGdldF9iaXRzKGdiLCAxNik7 Cj4gKyAgICAgICAgcGFyYW1zLT5vdmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdi KTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKPiArICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArCj4gKyAgICBzLT50YXJnZXRlZF9z eXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9Cj4gKyAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2Rlbn07Cj4gKyAgICBzLT50YXJnZXRl ZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShn Yik7Cj4gKwo+ICsgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZV9mbGFnKSB7Cj4gKyAgICAgICAgaW50IHJvd3MsIGNvbHM7Cj4gKyAgICAgICAg aWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwo+ICsgICAgICAgIHJvd3MgPSBnZXRfYml0cyhnYiwgNSk7Cj4gKyAgICAg ICAgY29scyA9IGdldF9iaXRzKGdiLCA1KTsKPiArICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwg KHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewo+ICsgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICB9Cj4gKyAgICAgICAg cy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNl ID0gcm93czsKPiArICAgICAgICBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9h Y3R1YWxfcGVha19sdW1pbmFuY2UgPSBjb2xzOwo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93czsg aSsrKSB7Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7Cj4g KyAgICAgICAgICAgICAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19s dW1pbmFuY2VbaV1bal0gPQo+ICsgICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRf Yml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Cj4gKyAgICAgICAgICAgIH0KPiArICAg ICAgICB9Cj4gKyAgICB9Cj4gKyAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dz OyB3KyspIHsKPiArICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1z ID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAq IDE3ICsgMTcgKyA0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gKyAgICAgICAg ICAgIHBhcmFtcy0+bWF4c2NsW2ldID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcGFyYW1z LT5hdmVyYWdlX21heHJnYiA9Cj4gKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTcpLCByZ2JfZGVufTsKPiArICAgICAgICBwYXJhbXMtPm51bV9kaXN0cmlidXRpb25fbWF4 cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+ICsKPiArICAgICAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYikgPAo+ICsgICAgICAgICAgICAocGFyYW1zLT5udW1fZGlzdHJpYnV0aW9u X21heHJnYl9wZXJjZW50aWxlcyAqIDI0KSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5u dW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Cj4gKyAgICAgICAgICAg IHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlID0gZ2V0X2JpdHMoZ2Is IDcpOwo+ICsgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2Vu dGlsZSA9Cj4gKyAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE3KSwg cmdiX2Rlbn07Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAxMCkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ ICsgICAgICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgMTApLCBmcmFjdGlvbl9waXhlbF9kZW59Owo+ICsgICAgfQo+ICsgICAgaWYg KGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiArICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9m bGFnID0gZ2V0X2JpdHMxKGdiKTsKPiArICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1 YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+ICsgICAgICAgIGludCByb3dzLCBjb2xzOwo+ICsg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQo+ICsgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+ ICsgICAgICAgIGNvbHMgPSBnZXRfYml0cyhnYiwgNSk7Cj4gKyAgICAgICAgaWYgKCgocm93cyA8 IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPiAr ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZSA9IHJvd3M7Cj4gKyAgICAgICAgcy0+bnVtX2NvbHNfbWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFs X3BlYWtfbHVtaW5hbmNlID0gY29sczsKPiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwo+ICsKPiArICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykg ewo+ICsgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAg ICAgICAgICAgICAgcy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ld W2pdID0KPiArICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQp LCBwZWFrX2x1bWluYW5jZV9kZW59Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiArICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykg ewo+ICsgICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+ cGFyYW1zW3ddOwo+ICsgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4gKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICBwYXJhbXMt PnRvbmVfbWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKPiArICAgICAgICBpZiAocGFyYW1z LT50b25lX21hcHBpbmdfZmxhZykgewo+ICsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAyOCkKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ ICsKPiArICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPQo+ICsgICAgICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiArICAg ICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3kgPQo+ICsgICAgICAgICAgICAgICAgKEFWUmF0 aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKPiArICAgICAgICAgICAg cGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gKwo+ ICsgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVy X2N1cnZlX2FuY2hvcnMgKiAxMCkpCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1z LT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnM7IGkrKykgewo+ICsgICAgICAgICAgICAgICAgcGFy YW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgKEFW UmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVufTsKPiArICAgICAg ICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgMSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAg ICAgcGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShnYik7 Cj4gKyAgICAgICAgaWYgKHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsK PiArICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKPiArICAgICAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgICAgICBwYXJhbXMtPmNv bG9yX3NhdHVyYXRpb25fd2VpZ2h0ID0KPiArICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgNiksIHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9o ZHJfZHluYW1pY19tZXRhZGF0YS5oIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgK PiBpbmRleCAyZDcyZGU1NmFlLi5mYWE0ZjQ2YjBiIDEwMDY0NAo+IC0tLSBhL2xpYmF2dXRpbC9o ZHJfZHluYW1pY19tZXRhZGF0YS5oCj4gKysrIGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFk YXRhLmgKPiBAQCAtMzQwLDQgKzM0MCwxNyBAQCBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWlj X2hkcl9wbHVzX2FsbG9jKHNpemVfdCAqc2l6ZSk7Cj4gICAqLwo+ICBBVkR5bmFtaWNIRFJQbHVz ICphdl9keW5hbWljX2hkcl9wbHVzX2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUpOwo+ ICAKPiArLyoqCj4gKyAqIFBhcnNlIHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjM1 IHRvIEFWYnVmZmVyIChBVkR5bmFtaWNIRFJQbHVzKS4KPiArICogVGhlIFQuMzUgYnVmZmVyIG11 c3QgYmVnaW4gd2l0aCB0aGUgYXBwbGljYXRpb24gbW9kZSwgc2tpcHBpbmcgdGhlCj4gKyAqIGNv dW50cnkgY29kZSwgdGVybWluYWwgcHJvdmlkZXIgY29kZXMsIGFuZCBhcHBsaWNhdGlvbiBpZGVu dGlmaWVyLgo+ICsgKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBB VkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KPiArICogQHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJy YXkgY29udGFpbmluZyB0aGUgcmF3IElUVS1UIFQuMzUgZGF0YS4KPiArICogQHBhcmFtIHNpemUg U2l6ZSBvZiB0aGUgZGF0YSBhcnJheSBpbiBieXRlcy4KPiArICoKPiArICogQHJldHVybiAwIGlm IHN1Y2NlZWQuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZFUlJPUi4KCldl IHNob3VsZCByZXR1cm4gPj0gMCBvbiBzdWNjZXNzIHRvIGJlIGZ1dHVyZS1wcm9vZi4KCj4gKyAq Lwo+ICtpbnQgYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShBVkR5bmFtaWNIRFJQbHVzICpz LCBjb25zdCB1aW50OF90ICpkYXRhLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplX3Qgc2l6ZSk7Cj4gKwo+ICAjZW5kaWYgLyogQVZVVElMX0hEUl9EWU5BTUlDX01FVEFE QVRBX0ggKi8KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K