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 3945045B10 for ; Thu, 16 Mar 2023 21:27:20 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DE3568C090; Thu, 16 Mar 2023 23:27:19 +0200 (EET) Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9682E68C090 for ; Thu, 16 Mar 2023 23:27:12 +0200 (EET) Received: by mail-qv1-f45.google.com with SMTP id g9so2171321qvt.8 for ; Thu, 16 Mar 2023 14:27:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; t=1679002031; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=XN6WlNNLgVD3LJxK50VupaPEZGDQE/84cRYaYvLAOTM=; b=Dfjyy6vWr94bNdtAMnVb1XN7mJZNcLMUEFod2PaFUIoMRPmFP9wcM26+PwQLX5DS0S W5hfWGZHxyY3n60FHjhmJdm5YPv4jXVAGMio3mNqFrPkH9ISPC2TU9eVGGJlCVTW1loG JgxPrXeu5eYPxbXlDgp7h1pbMfRf5w4YZaM8o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679002031; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XN6WlNNLgVD3LJxK50VupaPEZGDQE/84cRYaYvLAOTM=; b=VTwVLvVSKzUsHwfdyYNZEnCxMKxqdL3tBKYtcCsUZlIBFJRhvXM+3nxW4BD0NQ/cB9 IjBaNXVjc8zwzG+y1+QNg/RbkNTzeCg1hpSTwh78StbMpVQ0sKBa7Y7AXVNor0LRQ6MU XFErBOTjhp8VOkOasjr8RI6a22kN0jQLoKXWyOsoU/RxNud1pyBmvo6Hs76h3B9k263o 62d9mIATAg98roQOiQJUHwz6HeP1HEy38uWVnacgqIoUJemzze0uR6M0M4yWNmHhOEDK oUQsF35YGersoGr/yknElxH6f1JbAuwc3oWUzr/zn+zOrHVGPw5z3S7IMMSUJexWyB/Z kqcA== X-Gm-Message-State: AO0yUKWRrbjaRGHLqd2nBVJxBrCW/cdPARzwZosxsjqkCtsN/hAL5vyX eKTMSsIJDNxcThDb7eP3W4pzLOhov5ck/h5+IzLJzQ== X-Google-Smtp-Source: AK7set8UKeA6I5A7pxDSv0V73TLD5yOCj4E9A91XNsqQ65E7rYJslG4OnC2p8r0Ba778x+EWZ24MBw== X-Received: by 2002:a05:6214:1241:b0:5a7:a434:c300 with SMTP id r1-20020a056214124100b005a7a434c300mr25804573qvv.15.1679002030830; Thu, 16 Mar 2023 14:27:10 -0700 (PDT) Received: from ?IPV6:2600:4041:6c:7000:1f01:20c:8ba9:815b? ([2600:4041:6c:7000:1f01:20c:8ba9:815b]) by smtp.gmail.com with ESMTPSA id 5-20020a370b05000000b0071eddd3bebbsm318457qkl.81.2023.03.16.14.27.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Mar 2023 14:27:10 -0700 (PDT) Message-ID: <4697edf2-d5e8-de66-e521-a10abf37a591@vimeo.com> Date: Thu, 16 Mar 2023 17:27:09 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Content-Language: en-US, fr-FR To: ffmpeg-devel@ffmpeg.org References: <8CFD0240-4196-4E6C-8918-9DCDAED2A648@vimeo.com> From: =?UTF-8?Q?Rapha=c3=abl_Zumer?= In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH v7 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: T24gMy8xNi8yMyAxNjo1MCwgQW5kcmVhcyBSaGVpbmhhcmR0IHdyb3RlOgo+IFJhcGhhw6tsIFp1 bWVyOgo+Pgo+Pj4gT24gTWFyIDE2LCAyMDIzLCBhdCAxNjoxOSwgQW5kcmVhcyBSaGVpbmhhcmR0 IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+IHdyb3RlOgo+Pj4KPj4+IO+7v1JhcGhh w6tsIFp1bWVyOgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFJhcGhhw6tsIFp1bWVyIDxyenVtZXJAdGVi YWtvLm5ldD4KPj4+PiAtLS0KPj4+PiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgICAgICB8 ICAgNiArLQo+Pj4+IGxpYmF2Y29kZWMvYXYxZGVjLmMgICAgICAgICAgICAgIHwgICA2ICstCj4+ Pj4gbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyAgfCAxOTggLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+Pj4+IGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggIHwg IDM1IC0tLS0tLQo+Pj4+IGxpYmF2Y29kZWMvaDI2NDVfc2VpLmMgICAgICAgICAgIHwgICA2ICst Cj4+Pj4gbGliYXZjb2RlYy9saWJkYXYxZC5jICAgICAgICAgICAgfCAgIDYgKy0KPj4+PiBsaWJh dnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuYyB8IDE4NSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+Pj4+IGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIHwgIDEzICsrCj4+ Pj4gOCBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9ucygrKSwgMjQ1IGRlbGV0aW9ucygtKQo+ Pj4+IGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCj4+ Pj4gZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPj4+ Pgo+Pj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtl ZmlsZQo+Pj4+IGluZGV4IGFiYWU0OTA5ZDIuLjQwOGVjZDFlMzEgMTAwNjQ0Cj4+Pj4gLS0tIGEv bGliYXZjb2RlYy9NYWtlZmlsZQo+Pj4+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4+PiBA QCAtMTA0LDcgKzEwNCw3IEBAIE9CSlMtJChDT05GSUdfSDI2NF9TRUkpICAgICAgICAgICAgICAg ICs9IGgyNjRfc2VpLm8gaDI2NDVfc2VpLm8KPj4+PiBPQkpTLSQoQ09ORklHX0hFVkNQQVJTRSkg ICAgICAgICAgICAgICArPSBoZXZjX3BhcnNlLm8gaGV2Y19wcy5vIGhldmNfZGF0YS5vIFwKPj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoMjY0NWRhdGEubyBo MjY0NV9wYXJzZS5vIGgyNjQ1X3Z1aS5vCj4+Pj4gT0JKUy0kKENPTkZJR19IRVZDX1NFSSkgICAg ICAgICAgICAgICAgKz0gaGV2Y19zZWkubyBoMjY0NV9zZWkubyBcCj4+Pj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfaGRyMTBfcGx1cy5vIGR5bmFt aWNfaGRyX3ZpdmlkLm8KPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZHluYW1pY19oZHJfdml2aWQubwo+Pj4+IE9CSlMtJChDT05GSUdfSFBFTERTUCkgICAg ICAgICAgICAgICAgICs9IGhwZWxkc3Aubwo+Pj4+IE9CSlMtJChDT05GSUdfSFVGRk1BTikgICAg ICAgICAgICAgICAgICs9IGh1ZmZtYW4ubwo+Pj4+IE9CSlMtJChDT05GSUdfSFVGRllVVkRTUCkg ICAgICAgICAgICAgICs9IGh1ZmZ5dXZkc3Aubwo+Pj4+IEBAIC0yNTAsNyArMjUwLDcgQEAgT0JK Uy0kKENPTkZJR19BVFJBQzNQQUxfREVDT0RFUikgICAgICAgKz0gYXRyYWMzcGx1c2RlYy5vIGF0 cmFjM3BsdXMubyBcCj4+Pj4gT0JKUy0kKENPTkZJR19BVFJBQzlfREVDT0RFUikgICAgICAgICAg Kz0gYXRyYWM5ZGVjLm8KPj4+PiBPQkpTLSQoQ09ORklHX0FVUkFfREVDT0RFUikgICAgICAgICAg ICArPSBjeXV2Lm8KPj4+PiBPQkpTLSQoQ09ORklHX0FVUkEyX0RFQ09ERVIpICAgICAgICAgICAr PSBhdXJhLm8KPj4+PiAtT0JKUy0kKENPTkZJR19BVjFfREVDT0RFUikgICAgICAgICAgICAgKz0g YXYxZGVjLm8gZHluYW1pY19oZHIxMF9wbHVzLm8KPj4+PiArT0JKUy0kKENPTkZJR19BVjFfREVD T0RFUikgICAgICAgICAgICAgKz0gYXYxZGVjLm8KPj4+PiBPQkpTLSQoQ09ORklHX0FWMV9DVVZJ RF9ERUNPREVSKSAgICAgICArPSBjdXZpZGRlYy5vCj4+Pj4gT0JKUy0kKENPTkZJR19BVjFfTUVE SUFDT0RFQ19ERUNPREVSKSAgKz0gbWVkaWFjb2RlY2RlYy5vCj4+Pj4gT0JKUy0kKENPTkZJR19B VjFfTlZFTkNfRU5DT0RFUikgICAgICAgKz0gbnZlbmNfYXYxLm8gbnZlbmMubwo+Pj4+IEBAIC0x MDgyLDcgKzEwODIsNyBAQCBPQkpTLSQoQ09ORklHX0xJQkFSSUJCMjRfREVDT0RFUikgICAgICAg ICArPSBsaWJhcmliYjI0Lm8gYXNzLm8KPj4+PiBPQkpTLSQoQ09ORklHX0xJQkNFTFRfREVDT0RF UikgICAgICAgICAgICArPSBsaWJjZWx0X2RlYy5vCj4+Pj4gT0JKUy0kKENPTkZJR19MSUJDT0RF QzJfREVDT0RFUikgICAgICAgICAgKz0gbGliY29kZWMyLm8KPj4+PiBPQkpTLSQoQ09ORklHX0xJ QkNPREVDMl9FTkNPREVSKSAgICAgICAgICArPSBsaWJjb2RlYzIubwo+Pj4+IC1PQkpTLSQoQ09O RklHX0xJQkRBVjFEX0RFQ09ERVIpICAgICAgICAgICArPSBsaWJkYXYxZC5vIGR5bmFtaWNfaGRy MTBfcGx1cy5vCj4+Pj4gK09CSlMtJChDT05GSUdfTElCREFWMURfREVDT0RFUikgICAgICAgICAg ICs9IGxpYmRhdjFkLm8KPj4+PiBPQkpTLSQoQ09ORklHX0xJQkRBVlMyX0RFQ09ERVIpICAgICAg ICAgICArPSBsaWJkYXZzMi5vCj4+Pj4gT0JKUy0kKENPTkZJR19MSUJGREtfQUFDX0RFQ09ERVIp ICAgICAgICAgKz0gbGliZmRrLWFhY2RlYy5vCj4+Pj4gT0JKUy0kKENPTkZJR19MSUJGREtfQUFD X0VOQ09ERVIpICAgICAgICAgKz0gbGliZmRrLWFhY2VuYy5vCj4+Pj4gZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvYXYxZGVjLmMgYi9saWJhdmNvZGVjL2F2MWRlYy5jCj4+Pj4gaW5kZXggYTgwZTM3 ZTMzZi4uZGYzOTNmZTNkMCAxMDA2NDQKPj4+PiAtLS0gYS9saWJhdmNvZGVjL2F2MWRlYy5jCj4+ Pj4gKysrIGIvbGliYXZjb2RlYy9hdjFkZWMuYwo+Pj4+IEBAIC0yMCw2ICsyMCw3IEBACj4+Pj4K Pj4+PiAjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKPj4+Pgo+Pj4+ICsjaW5jbHVkZSAi bGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgiCj4+Pj4gI2luY2x1ZGUgImxpYmF2dXRp bC9maWxtX2dyYWluX3BhcmFtcy5oIgo+Pj4+ICNpbmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5n X2Rpc3BsYXlfbWV0YWRhdGEuaCIKPj4+PiAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIK Pj4+PiBAQCAtMzAsNyArMzEsNiBAQAo+Pj4+ICNpbmNsdWRlICJieXRlc3RyZWFtLmgiCj4+Pj4g I2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCj4+Pj4gI2luY2x1ZGUgImRlY29kZS5oIgo+Pj4+ IC0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCj4+Pj4gI2luY2x1ZGUgImh3Y29uZmln LmgiCj4+Pj4gI2luY2x1ZGUgInByb2ZpbGVzLmgiCj4+Pj4gI2luY2x1ZGUgInRocmVhZC5oIgo+ Pj4+IEBAIC05MjUsOCArOTI1LDggQEAgc3RhdGljIGludCBleHBvcnRfaXR1dF90MzUoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPj4+PiAgICAgICAgIGlmICghaGRycGx1 cykKPj4+PiAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+Pj4+Cj4+Pj4gLSAg ICAgICAgcmV0ID0gZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhoZHJw bHVzLCBnYi5idWZmZXIsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2IpKTsKPj4+ PiArICAgICAgICByZXQgPSBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KGhkcnBsdXMsIGdi LmJ1ZmZlciwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpOwo+Pj4+ICAgICAgICAgaWYgKHJldCA8 IDApCj4+Pj4gICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+PiAgICAgICAgIGJyZWFrOwo+Pj4+ IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jIGIvbGliYXZjb2Rl Yy9keW5hbWljX2hkcjEwX3BsdXMuYwo+Pj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+ IGluZGV4IDM0YTQ0YWFjNjUuLjAwMDAwMDAwMDAKPj4+PiAtLS0gYS9saWJhdmNvZGVjL2R5bmFt aWNfaGRyMTBfcGx1cy5jCj4+Pj4gKysrIC9kZXYvbnVsbAo+Pj4+IEBAIC0xLDE5OCArMCwwIEBA Cj4+Pj4gLS8qCj4+Pj4gLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPj4+PiAtICoK Pj4+PiAtICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vcgo+Pj4+IC0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCj4+Pj4gLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+Pj4+IC0gKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4+PiAt ICoKPj4+PiAtICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4+Pj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+Pj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4+Pj4gLSAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+Pj4gLSAqCj4+ Pj4gLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKPj4+PiAtICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+Pj4+IC0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB Cj4+Pj4gLSAqLwo+Pj4+IC0KPj4+PiAtI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgo+ Pj4+IC0jaW5jbHVkZSAiZ2V0X2JpdHMuaCIKPj4+PiAtCj4+Pj4gLXN0YXRpYyBjb25zdCBpbnQ2 NF90IGx1bWluYW5jZV9kZW4gPSAxOwo+Pj4+IC1zdGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1 bWluYW5jZV9kZW4gPSAxNTsKPj4+PiAtc3RhdGljIGNvbnN0IGludDY0X3QgcmdiX2RlbiA9IDEw MDAwMDsKPj4+PiAtc3RhdGljIGNvbnN0IGludDMyX3QgZnJhY3Rpb25fcGl4ZWxfZGVuID0gMTAw MDsKPj4+PiAtc3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9kZW4gPSA0MDk1Owo+Pj4+ IC1zdGF0aWMgY29uc3QgaW50MzJfdCBiZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7Cj4+Pj4gLXN0 YXRpYyBjb25zdCBpbnQzMl90IHNhdHVyYXRpb25fd2VpZ2h0X2RlbiA9IDg7Cj4+Pj4gLQo+Pj4+ IC1pbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNI RFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKPj4+PiAtewo+Pj4+IC0gICAgR2V0 Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7Cj4+Pj4gLSAgICBpbnQgcmV0Owo+Pj4+IC0KPj4+ PiAtICAgIGlmICghcykKPj4+PiAtICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+Pj4+ IC0KPj4+PiAtICAgIHJldCA9IGluaXRfZ2V0X2JpdHM4KGdiLCBkYXRhLCBzaXplKTsKPj4+PiAt ICAgIGlmIChyZXQgPCAwKQo+Pj4+IC0gICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gLQo+Pj4+IC0g ICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCj4+Pj4gLSAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4+Pj4gLQo+Pj4+IC0gICAgcy0+YXBwbGljYXRpb25fdmVyc2lvbiA9 IGdldF9iaXRzKGdiLCA4KTsKPj4+PiAtICAgIHMtPm51bV93aW5kb3dzID0gZ2V0X2JpdHMoZ2Is IDIpOwo+Pj4+IC0KPj4+PiAtICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+bnVtX3dp bmRvd3MgPiAzKSB7Cj4+Pj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+ Pj4gLSAgICB9Cj4+Pj4gLQo+Pj4+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAq IDggKyAxKSAqIChzLT5udW1fd2luZG93cyAtIDEpKSkKPj4+PiAtICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPj4+PiAtCj4+Pj4gLSAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMt Pm51bV93aW5kb3dzOyB3KyspIHsKPj4+PiAtICAgICAgICAvLyBUaGUgY29ybmVycyBhcmUgc2V0 IHRvIGFic29sdXRlIGNvb3JkaW5hdGVzIGhlcmUuIFRoZXkgc2hvdWxkIGJlCj4+Pj4gLSAgICAg ICAgLy8gY29udmVydGVkIHRvIHRoZSByZWxhdGl2ZSBjb29yZGluYXRlcyAoaW4gWzAsIDFdKSBp biB0aGUgZGVjb2Rlci4KPj4+PiAtICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFt cyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPj4+PiAtICAgICAgICBwYXJhbXMtPndpbmRvd191 cHBlcl9sZWZ0X2Nvcm5lcl94ID0KPj4+PiAtICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzKGdiLCAxNiksIDF9Owo+Pj4+IC0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRf Y29ybmVyX3kgPQo+Pj4+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2 KSwgMX07Cj4+Pj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3gg PQo+Pj4+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4+ Pj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kgPQo+Pj4+IC0g ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Cj4+Pj4gLQo+Pj4+ IC0gICAgICAgIHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9IGdldF9iaXRzKGdiLCAxNik7 Cj4+Pj4gLSAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95ID0gZ2V0X2JpdHMoZ2Is IDE2KTsKPj4+PiAtICAgICAgICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xlID0gZ2V0X2JpdHMoZ2Is IDgpOwo+Pj4+IC0gICAgICAgIHBhcmFtcy0+c2VtaW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBz ZSA9IGdldF9iaXRzKGdiLCAxNik7Cj4+Pj4gLSAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhp c19leHRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPj4+PiAtICAgICAgICBwYXJh bXMtPnNlbWltaW5vcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwo+ Pj4+IC0gICAgICAgIHBhcmFtcy0+b3ZlcmxhcF9wcm9jZXNzX29wdGlvbiA9IGdldF9iaXRzMShn Yik7Cj4+Pj4gLSAgICB9Cj4+Pj4gLQo+Pj4+IC0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MjgpCj4+Pj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4gLQo+Pj4+ IC0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9sdW1pbmFuY2UgPQo+Pj4+ IC0gICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyksIGx1bWluYW5jZV9k ZW59Owo+Pj4+IC0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVt aW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+Pj4+IC0KPj4+PiAtICAgIGlmIChzLT50YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+Pj4+IC0g ICAgICAgIGludCByb3dzLCBjb2xzOwo+Pj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IDEwKQo+Pj4+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4+ PiAtICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwo+Pj4+IC0gICAgICAgIGNvbHMgPSBn ZXRfYml0cyhnYiwgNSk7Cj4+Pj4gLSAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4g MjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKPj4+PiAtICAgICAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4gLSAgICAgICAgfQo+Pj4+IC0gICAgICAg IHMtPm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZSA9IHJvd3M7Cj4+Pj4gLSAgICAgICAgcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKPj4+PiAtCj4+Pj4gLSAgICAgICAgaWYg KGdldF9iaXRzX2xlZnQoZ2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCj4+Pj4gLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0KPj4+PiAtICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewo+Pj4+IC0gICAgICAgICAgICBmb3IgKGludCBqID0g MDsgaiA8IGNvbHM7IGorKykgewo+Pj4+IC0gICAgICAgICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lz dGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdID0KPj4+PiAtICAgICAgICAg ICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWluYW5jZV9k ZW59Owo+Pj4+IC0gICAgICAgICAgICB9Cj4+Pj4gLSAgICAgICAgfQo+Pj4+IC0gICAgfQo+Pj4+ IC0gICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4+Pj4gLSAg ICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNb d107Cj4+Pj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKDMgKiAxNyArIDE3ICsg NCkpCj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0K Pj4+PiAtICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykgewo+Pj4+IC0gICAgICAg ICAgICBwYXJhbXMtPm1heHNjbFtpXSA9Cj4+Pj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4+Pj4gLSAgICAgICAgfQo+Pj4+IC0gICAg ICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQo+Pj4+IC0gICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4+Pj4gLSAgICAgICAgcGFyYW1zLT5udW1f ZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9iaXRzKGdiLCA0KTsKPj4+PiAt Cj4+Pj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwKPj4+PiAtICAgICAgICAgICAg KHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMgKiAyNCkpCj4+Pj4g LSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0KPj4+PiAtICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2Jf cGVyY2VudGlsZXM7IGkrKykgewo+Pj4+IC0gICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlv bl9tYXhyZ2JbaV0ucGVyY2VudGFnZSA9IGdldF9iaXRzKGdiLCA3KTsKPj4+PiAtICAgICAgICAg ICAgcGFyYW1zLT5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRpbGUgPQo+Pj4+IC0gICAg ICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59Owo+Pj4+ IC0gICAgICAgIH0KPj4+PiAtCj4+Pj4gLSAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MTApCj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0K Pj4+PiAtICAgICAgICBwYXJhbXMtPmZyYWN0aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rpb25fcGl4ZWxfZGVufTsKPj4+PiAtICAgIH0KPj4+ PiAtICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4+Pj4gLSAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4gLSAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxf cGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4+Pj4gLSAgICBpZiAocy0+bWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKPj4+PiAtICAgICAg ICBpbnQgcm93cywgY29sczsKPj4+PiAtICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAx MCkKPj4+PiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4gLSAg ICAgICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsKPj4+PiAtICAgICAgICBjb2xzID0gZ2V0X2Jp dHMoZ2IsIDUpOwo+Pj4+IC0gICAgICAgIGlmICgoKHJvd3MgPCAyKSB8fCAocm93cyA+IDI1KSkg fHwgKChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKSB7Cj4+Pj4gLSAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0gICAgICAgIH0KPj4+PiAtICAgICAgICBzLT5u dW1fcm93c19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2UgPSByb3dzOwo+ Pj4+IC0gICAgICAgIHMtPm51bV9jb2xzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1 bWluYW5jZSA9IGNvbHM7Cj4+Pj4gLQo+Pj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8IChyb3dzICogY29scyAqIDQpKQo+Pj4+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPj4+PiAtCj4+Pj4gLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dz OyBpKyspIHsKPj4+PiAtICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKysp IHsKPj4+PiAtICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZVtpXVtqXSA9Cj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwp e2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKPj4+PiAtICAgICAgICAgICAg fQo+Pj4+IC0gICAgICAgIH0KPj4+PiAtICAgIH0KPj4+PiAtCj4+Pj4gLSAgICBmb3IgKGludCB3 ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPj4+PiAtICAgICAgICBBVkhEUlBsdXND b2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPj4+PiAtICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQo+Pj4+IC0gICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPj4+PiAtCj4+Pj4gLSAgICAgICAgcGFyYW1zLT50b25lX21hcHBp bmdfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4+Pj4gLSAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9t YXBwaW5nX2ZsYWcpIHsKPj4+PiAtICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwg MjgpCj4+Pj4gLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4+ PiAtCj4+Pj4gLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF94ID0KPj4+PiAtICAgICAg ICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50X2Rlbn07 Cj4+Pj4gLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF95ID0KPj4+PiAtICAgICAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50X2Rlbn07Cj4+ Pj4gLSAgICAgICAgICAgIHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzID0gZ2V0X2Jp dHMoZ2IsIDQpOwo+Pj4+IC0KPj4+PiAtICAgICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgKHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzICogMTApKQo+Pj4+IC0gICAgICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4gLQo+Pj4+IC0gICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3Jz OyBpKyspIHsKPj4+PiAtICAgICAgICAgICAgICAgIHBhcmFtcy0+YmV6aWVyX2N1cnZlX2FuY2hv cnNbaV0gPQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTApLCBiZXppZXJfYW5jaG9yX2Rlbn07Cj4+Pj4gLSAgICAgICAgICAgIH0KPj4+PiAtICAg ICAgICB9Cj4+Pj4gLQo+Pj4+IC0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCj4+ Pj4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+Pj4+IC0gICAgICAg IHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwo+ Pj4+IC0gICAgICAgIGlmIChwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKSB7 Cj4+Pj4gLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDYpCj4+Pj4gLSAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4+PiAtICAgICAgICAgICAg cGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX3dlaWdodCA9Cj4+Pj4gLSAgICAgICAgICAgICAgICAo QVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDYpLCBzYXR1cmF0aW9uX3dlaWdodF9kZW59Owo+Pj4+ IC0gICAgICAgIH0KPj4+PiAtICAgIH0KPj4+PiAtCj4+Pj4gLSAgICByZXR1cm4gMDsKPj4+PiAt fQo+Pj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oIGIvbGli YXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaAo+Pj4+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAo+Pj4+IGluZGV4IGNkN2FjZjA0MzIuLjAwMDAwMDAwMDAKPj4+PiAtLS0gYS9saWJhdmNvZGVj L2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4+Pj4gKysrIC9kZXYvbnVsbAo+Pj4+IEBAIC0xLDM1ICsw LDAgQEAKPj4+PiAtLyoKPj4+PiAtICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+Pj4+ IC0gKgo+Pj4+IC0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCj4+Pj4gLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4+PiAtICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4+Pj4gLSAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ Pj4+IC0gKgo+Pj4+IC0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPj4+PiAtICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+PiAtICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPj4+PiAt ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+PiAt ICoKPj4+PiAtICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwo+Pj4+IC0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4+Pj4gLSAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKPj4+PiAtICovCj4+Pj4gLQo+Pj4+IC0jaWZuZGVmIEFWQ09ERUNfRFlOQU1JQ19IRFIx MF9QTFVTX0gKPj4+PiAtI2RlZmluZSBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19ICj4+Pj4g LQo+Pj4+IC0jaW5jbHVkZSAibGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgiCj4+Pj4g LQo+Pj4+IC0vKioKPj4+PiAtICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVkIElUVS1U IFQuMzUgdG8gQVZidWZmZXIgKEFWRHluYW1pY0hEUlBsdXMpLgo+Pj4+IC0gKiBAcGFyYW0gcyBB IHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVy ZS4KPj4+PiAtICogQHBhcmFtIGRhdGEgVGhlIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgcmF3 IElUVS1UIFQuMzUgZGF0YS4KPj4+PiAtICogQHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgZGF0YSBh cnJheSBpbiBieXRlcy4KPj4+PiAtICoKPj4+PiAtICogQHJldHVybiAwIGlmIHN1Y2NlZWQuIE90 aGVyd2lzZSwgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgQVZFUlJPUi4KPj4+PiAtICovCj4+Pj4g LWludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hE UlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKTsKPj4+PiAtCj4+Pj4gLSNlbmRpZiAv KiBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19IICovCj4+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvaDI2NDVfc2VpLmMgYi9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jCj4+Pj4gaW5kZXggNmU0 YTlhMWFmMi4uNjNhYjcxMWJjOSAxMDA2NDQKPj4+PiAtLS0gYS9saWJhdmNvZGVjL2gyNjQ1X3Nl aS5jCj4+Pj4gKysrIGIvbGliYXZjb2RlYy9oMjY0NV9zZWkuYwo+Pj4+IEBAIC0yNywxMyArMjcs MTMgQEAKPj4+Pgo+Pj4+ICNpbmNsdWRlICJsaWJhdnV0aWwvYW1iaWVudF92aWV3aW5nX2Vudmly b25tZW50LmgiCj4+Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9kaXNwbGF5LmgiCj4+Pj4gKyNpbmNs dWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKPj4+PiAjaW5jbHVkZSAibGli YXZ1dGlsL2ZpbG1fZ3JhaW5fcGFyYW1zLmgiCj4+Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9waXhk ZXNjLmgiCj4+Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9zdGVyZW8zZC5oIgo+Pj4+Cj4+Pj4gI2lu Y2x1ZGUgImF0c2NfYTUzLmgiCj4+Pj4gI2luY2x1ZGUgImF2Y29kZWMuaCIKPj4+PiAtI2luY2x1 ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgo+Pj4+ICNpbmNsdWRlICJkeW5hbWljX2hkcl92aXZp ZC5oIgo+Pj4+ICNpbmNsdWRlICJnZXRfYml0cy5oIgo+Pj4+ICNpbmNsdWRlICJnb2xvbWIuaCIK Pj4+PiBAQCAtNTIsOCArNTIsOCBAQCBzdGF0aWMgaW50IGRlY29kZV9yZWdpc3RlcmVkX3VzZXJf ZGF0YV9keW5hbWljX2hkcl9wbHVzKEhFVkNTRUlEeW5hbWljSERSUGx1cyAqcwo+Pj4+ICAgICBp ZiAoIW1ldGFkYXRhKQo+Pj4+ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4+Pgo+ Pj4+IC0gICAgZXJyID0gZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyht ZXRhZGF0YSwgZ2ItPmJ1ZmZlciwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoZ2IpKTsKPj4+ PiArICAgIGVyciA9IGF2X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUobWV0YWRhdGEsIGdiLT5i dWZmZXIsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVz dHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7Cj4+Pj4gICAgIGlmIChlcnIgPCAwKSB7Cj4+Pj4g ICAgICAgICBhdl9mcmVlKG1ldGFkYXRhKTsKPj4+PiAgICAgICAgIHJldHVybiBlcnI7Cj4+Pj4g ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGliZGF2MWQuYyBiL2xpYmF2Y29kZWMvbGliZGF2MWQu Ywo+Pj4+IGluZGV4IGViMTIyNWVhMWEuLjUwYzRjZWVlNDAgMTAwNjQ0Cj4+Pj4gLS0tIGEvbGli YXZjb2RlYy9saWJkYXYxZC5jCj4+Pj4gKysrIGIvbGliYXZjb2RlYy9saWJkYXYxZC5jCj4+Pj4g QEAgLTI0LDYgKzI0LDcgQEAKPj4+PiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCj4+ Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9jcHUuaCIKPj4+PiAjaW5jbHVkZSAibGliYXZ1dGlsL2Zp bG1fZ3JhaW5fcGFyYW1zLmgiCj4+Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNf bWV0YWRhdGEuaCIKPj4+PiAjaW5jbHVkZSAibGliYXZ1dGlsL21hc3RlcmluZ19kaXNwbGF5X21l dGFkYXRhLmgiCj4+Pj4gI2luY2x1ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgo+Pj4+ICNpbmNs dWRlICJsaWJhdnV0aWwvb3B0LmgiCj4+Pj4gQEAgLTMzLDcgKzM0LDYgQEAKPj4+PiAjaW5jbHVk ZSAiYnl0ZXN0cmVhbS5oIgo+Pj4+ICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgo+Pj4+ICNp bmNsdWRlICJkZWNvZGUuaCIKPj4+PiAtI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgo+ Pj4+ICNpbmNsdWRlICJpbnRlcm5hbC5oIgo+Pj4+Cj4+Pj4gI2RlZmluZSBGRl9EQVYxRF9WRVJT SU9OX0FUX0xFQVNUKHgseSkgXAo+Pj4+IEBAIC01NTUsOCArNTU1LDggQEAgRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCj4+Pj4gICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPj4+PiAg ICAgICAgICAgICB9Cj4+Pj4KPj4+PiAtICAgICAgICAgICAgcmVzID0gZmZfcGFyc2VfaXR1X3Rf dDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhoZHJwbHVzLCBnYi5idWZmZXIsCj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0 ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSk7Cj4+Pj4gKyAgICAgICAgICAgIHJlcyA9IGF2 X2R5bmFtaWNfaGRyX3BsdXNfZnJvbV90MzUoaGRycGx1cywgZ2IuYnVmZmVyLAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KCZnYikpOwo+Pj4+ICAgICAgICAgICAgIGlmIChyZXMgPCAwKQo+Pj4+ICAg ICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4+Pj4gICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gZGlm ZiAtLWdpdCBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jIGIvbGliYXZ1dGlsL2hk cl9keW5hbWljX21ldGFkYXRhLmMKPj4+PiBpbmRleCAwZmExZWU4MmRlLi41ZWQ5MDNmNDc1IDEw MDY0NAo+Pj4+IC0tLSBhL2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCj4+Pj4gKysr IGIvbGliYXZ1dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmMKPj4+PiBAQCAtMjAsNiArMjAsMTgg QEAKPj4+Pgo+Pj4+ICNpbmNsdWRlICJoZHJfZHluYW1pY19tZXRhZGF0YS5oIgo+Pj4+ICNpbmNs dWRlICJtZW0uaCIKPj4+PiArI2luY2x1ZGUgImxpYmF2Y29kZWMvZ2V0X2JpdHMuaCIKPj4+PiAr I2luY2x1ZGUgImxpYmF2Y29kZWMvcHV0X2JpdHMuaCIKPj4+PiArCj4+Pj4gKyNkZWZpbmUgVDM1 X1BBWUxPQURfTUFYX1NJWkUgOTA3Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgY29uc3QgaW50NjRfdCBs dW1pbmFuY2VfZGVuID0gMTsKPj4+PiArc3RhdGljIGNvbnN0IGludDMyX3QgcGVha19sdW1pbmFu Y2VfZGVuID0gMTU7Cj4+Pj4gK3N0YXRpYyBjb25zdCBpbnQ2NF90IHJnYl9kZW4gPSAxMDAwMDA7 Cj4+Pj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2RlbiA9IDEwMDA7Cj4+ Pj4gK3N0YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRfZGVuID0gNDA5NTsKPj4+PiArc3Rh dGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwo+Pj4+ICtzdGF0aWMg Y29uc3QgaW50MzJfdCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4Owo+Pj4+Cj4+Pj4gQVZEeW5h bWljSERSUGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19hbGxvYyhzaXplX3QgKnNpemUpCj4+Pj4g ewo+Pj4+IEBAIC00NSwzICs1NywxNzYgQEAgQVZEeW5hbWljSERSUGx1cyAqYXZfZHluYW1pY19o ZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFWRnJhbWUgKmZyYW1lKQo+Pj4+Cj4+Pj4gICAgIHJl dHVybiAoQVZEeW5hbWljSERSUGx1cyAqKXNpZGVfZGF0YS0+ZGF0YTsKPj4+PiB9Cj4+Pj4gKwo+ Pj4+ICtpbnQgYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShBVkR5bmFtaWNIRFJQbHVzICpz LCBjb25zdCB1aW50OF90ICpkYXRhLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplX3Qgc2l6ZSkKPj4+PiArewo+Pj4+ICsgICAgdWludDhfdCBwYWRkZWRfYnVmW1Qz NV9QQVlMT0FEX01BWF9TSVpFICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRV07Cj4+Pj4g KyAgICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdiYzsKPj4+PiArICAgIGludCByZXQ7Cj4+ Pj4gKwo+Pj4+ICsgICAgaWYgKCFzKQo+Pj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7Cj4+Pj4gKwo+Pj4+ICsgICAgbWVtY3B5KHBhZGRlZF9idWYsIGRhdGEsIHNpemUpOwo+Pj4g WW91IGFyZSBwb3RlbnRpYWxseSBjb3B5aW5nIG1vcmUgdGhhbiBUMzVfUEFZTE9BRF9NQVhfU0la RSBieXRlcy4KPj4+IEZ1cnRoZXJtb3JlLCB5b3UgYXJlIG5vdCB6ZXJvaW5nIHRoZSBwYWRkaW5n OyB0aGlzIG1pZ2h0IG1ha2UgVmFsZ3JpbmQKPj4+IGNvbXBsYWluLgo+PiBHb29kIHBvaW50IG9u IHRoZSBzaXplIGlmIHRoZSB1c2VyIHNlbmRzIGFuIGluY29ycmVjdCB2YWx1ZSwgd2UgY2FuIHJl dHVybiBBVkVSUk9SKEVJTlZBTCkgaW4gdGhhdCBjYXNlLiBJIGRpZCBydW4gaXQgdGhyb3VnaCBW YWxncmluZCBhbmQgZGlkIG5vdCBnZXQgYW4gZXJyb3IgZHVlIHRvIG5vdCB6ZXJvaW5nIHRoZSBw YWRkZWQgYnVmZmVyLiBJIGRvbuKAmXQgdGhpbmsgdGhhdCBzaG91bGQgYmUgbmVjZXNzYXJ5IHNp bmNlIGl04oCZcyBjb250YWluZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24gYW5kIHVuaW5pdGlhbGl6 ZWQgYml0cyBzaG91bGQgbmV2ZXIgYmUgYWNjZXNzZWQsIGlzIHRoYXQgaW5jb3JyZWN0Pwo+Pgo+ IFRoZSBHZXRCaXQgQVBJIGNhbiBvdmVycmVhZCBhIGJpdC4gSXQgbW9zdGx5IHJlYWRzIDMyYml0 cyBhdCBhIHRpbWUsIHNvCj4gdGhhdCBpdCBjYW4gcmVhZCBpbnRvIHRoZSBwYWRkaW5nIGV2ZW4g d2hlbiBubyBiaXQgb2YgdGhlIHBhZGRpbmcgaXMKPiBhY3R1YWxseSB1c2VkIChiZWNhdXNlIGl0 IGlzIG1hc2tlZCBhd2F5KTsgYnV0IFZhbGdyaW5kIGRvZXMgbm90IGFsd2F5cwo+IGdldCB0aGlz Lgo+Cj4gLSBBbmRyZWFzCgpPSzsgSSByZXNlbnQgdGhlIGZpcnN0IHBhdGNoIGFzIHY4IHdpdGgg dGhlc2UgY2hhbmdlcy4KClJaCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8g dW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1 ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==