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 0684745A3A for ; Mon, 13 Mar 2023 21:38:50 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6D3D868BB61; Mon, 13 Mar 2023 23:38:47 +0200 (EET) Received: from mail-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A90F689E37 for ; Mon, 13 Mar 2023 23:38:40 +0200 (EET) Received: by mail-qv1-f46.google.com with SMTP id nf5so9145318qvb.5 for ; Mon, 13 Mar 2023 14:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vimeo.com; s=google; t=1678743518; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=T+s9xHX7oTROhZJwlXuoLtRagKzYXUBMqfYfopZ7p3U=; b=Ta5rCXsd4HjFBhclncYtANvQgPY/2+jnvIIETUNIaK05SlYFYtEZ2zk3jQpRBgzuwh Frq/XiIiVSrqpapC5RA6Svx0qToDsdmW9KMx+hic659h10lYqN5nGKFTJHvwnum0plvS n0mcFzd1S3aji8PkWmZ5i2V5KDDChp3karIhk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678743518; h=content-transfer-encoding:content-language:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=T+s9xHX7oTROhZJwlXuoLtRagKzYXUBMqfYfopZ7p3U=; b=TXtuyeQxDI45eoG0C7br2kkFRbK2eLW0o6TFBLPSnbkYiM2/W3/6qjaZthKdW1rSFg uHW6/8vbhR/b6XKB6ZzeV6GgK9rxUZqVwGpDsz58VlxounQJ8XH87is4lUJafxEbRGFm G04nJASLWSxT8LjQGufylPO09jX00RkhjOeWPQrPwY4geZPrnCeNB0Sac+l+W+ErE1+e tNtYdbribxSGyyaHQUEk1i19rImX09H2PdefTgHqkPnHdYL5PQysUbGHdukzCF+d8/fY cHcIenwKdcKlrEX4Th0CgJFsE74+0Z/gcoOz7klCKih0blfKZv8PohaAiDEqEgfnzlPd CdRA== X-Gm-Message-State: AO0yUKUsQ1GVoDpvQ2C082gKmUcHY+VgTzKiIF2o2d3YC5BVjLXxNj7T jdp0aV3WJkTypbxURYpNZ6/+Cc5/0+tckFdWRMbwnQ== X-Google-Smtp-Source: AK7set+TSJHLKW0BQEkMUcxseaVyKcKRN+B/ECLtxSTqoroVVWVCqXiqKMcndQNg+3q7sLWdTJep5Q== X-Received: by 2002:a05:6214:da5:b0:56f:796e:c3a5 with SMTP id h5-20020a0562140da500b0056f796ec3a5mr17589566qvh.4.1678743518417; Mon, 13 Mar 2023 14:38:38 -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 x75-20020a37634e000000b00745903986d8sm449222qkb.114.2023.03.13.14.38.37 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Mar 2023 14:38:38 -0700 (PDT) Message-ID: Date: Mon, 13 Mar 2023 17:38:37 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 From: =?UTF-8?Q?Rapha=c3=abl_Zumer?= To: ffmpeg-devel@ffmpeg.org Content-Language: en-US, fr-FR Subject: [FFmpeg-devel] [PATCH v5 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: U2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgWnVtZXIgPHJ6dW1lckB0ZWJha28ubmV0PgotLS0KIGxp YmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICA2ICstCiBsaWJhdmNvZGVjL2F2MWRl Yy5jICAgICAgICAgICAgICB8ICAgNiArLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMu YyAgfCAxOTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9keW5h bWljX2hkcjEwX3BsdXMuaCAgfCAgMzUgLS0tLS0tCiBsaWJhdmNvZGVjL2gyNjQ1X3NlaS5jICAg ICAgICAgICB8ICAgNiArLQogbGliYXZjb2RlYy9saWJkYXYxZC5jICAgICAgICAgICAgfCAgIDYg Ky0KIGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jIHwgMTgwICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGxpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oIHwgIDExICsr CiA4IGZpbGVzIGNoYW5nZWQsIDIwMyBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYwogZGVsZXRl IG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKCmRpZmYgLS1naXQg YS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCBhYmFlNDkw OWQyLi40MDhlY2QxZTMxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBiL2xp YmF2Y29kZWMvTWFrZWZpbGUKQEAgLTEwNCw3ICsxMDQsNyBAQCBPQkpTLSQoQ09ORklHX0gyNjRf U0VJKSAgICAgICAgICAgICAgICArPSBoMjY0X3NlaS5vIGgyNjQ1X3NlaS5vCiBPQkpTLSQoQ09O RklHX0hFVkNQQVJTRSkgICAgICAgICAgICAgICArPSBoZXZjX3BhcnNlLm8gaGV2Y19wcy5vIGhl dmNfZGF0YS5vIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgy NjQ1ZGF0YS5vIGgyNjQ1X3BhcnNlLm8gaDI2NDVfdnVpLm8KIE9CSlMtJChDT05GSUdfSEVWQ19T RUkpICAgICAgICAgICAgICAgICs9IGhldmNfc2VpLm8gaDI2NDVfc2VpLm8gXAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHluYW1pY19oZHIxMF9wbHVzLm8gZHlu YW1pY19oZHJfdml2aWQubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZHluYW1pY19oZHJfdml2aWQubwogT0JKUy0kKENPTkZJR19IUEVMRFNQKSAgICAgICAgICAg ICAgICAgKz0gaHBlbGRzcC5vCiBPQkpTLSQoQ09ORklHX0hVRkZNQU4pICAgICAgICAgICAgICAg ICArPSBodWZmbWFuLm8KIE9CSlMtJChDT05GSUdfSFVGRllVVkRTUCkgICAgICAgICAgICAgICs9 IGh1ZmZ5dXZkc3AubwpAQCAtMjUwLDcgKzI1MCw3IEBAIE9CSlMtJChDT05GSUdfQVRSQUMzUEFM X0RFQ09ERVIpICAgICAgICs9IGF0cmFjM3BsdXNkZWMubyBhdHJhYzNwbHVzLm8gXAogT0JKUy0k KENPTkZJR19BVFJBQzlfREVDT0RFUikgICAgICAgICAgKz0gYXRyYWM5ZGVjLm8KIE9CSlMtJChD T05GSUdfQVVSQV9ERUNPREVSKSAgICAgICAgICAgICs9IGN5dXYubwogT0JKUy0kKENPTkZJR19B VVJBMl9ERUNPREVSKSAgICAgICAgICAgKz0gYXVyYS5vCi1PQkpTLSQoQ09ORklHX0FWMV9ERUNP REVSKSAgICAgICAgICAgICArPSBhdjFkZWMubyBkeW5hbWljX2hkcjEwX3BsdXMubworT0JKUy0k KENPTkZJR19BVjFfREVDT0RFUikgICAgICAgICAgICAgKz0gYXYxZGVjLm8KIE9CSlMtJChDT05G SUdfQVYxX0NVVklEX0RFQ09ERVIpICAgICAgICs9IGN1dmlkZGVjLm8KIE9CSlMtJChDT05GSUdf QVYxX01FRElBQ09ERUNfREVDT0RFUikgICs9IG1lZGlhY29kZWNkZWMubwogT0JKUy0kKENPTkZJ R19BVjFfTlZFTkNfRU5DT0RFUikgICAgICAgKz0gbnZlbmNfYXYxLm8gbnZlbmMubwpAQCAtMTA4 Miw3ICsxMDgyLDcgQEAgT0JKUy0kKENPTkZJR19MSUJBUklCQjI0X0RFQ09ERVIpICAgICAgICAg Kz0gbGliYXJpYmIyNC5vIGFzcy5vCiBPQkpTLSQoQ09ORklHX0xJQkNFTFRfREVDT0RFUikgICAg ICAgICAgICArPSBsaWJjZWx0X2RlYy5vCiBPQkpTLSQoQ09ORklHX0xJQkNPREVDMl9ERUNPREVS KSAgICAgICAgICArPSBsaWJjb2RlYzIubwogT0JKUy0kKENPTkZJR19MSUJDT0RFQzJfRU5DT0RF UikgICAgICAgICAgKz0gbGliY29kZWMyLm8KLU9CSlMtJChDT05GSUdfTElCREFWMURfREVDT0RF UikgICAgICAgICAgICs9IGxpYmRhdjFkLm8gZHluYW1pY19oZHIxMF9wbHVzLm8KK09CSlMtJChD T05GSUdfTElCREFWMURfREVDT0RFUikgICAgICAgICAgICs9IGxpYmRhdjFkLm8KIE9CSlMtJChD T05GSUdfTElCREFWUzJfREVDT0RFUikgICAgICAgICAgICs9IGxpYmRhdnMyLm8KIE9CSlMtJChD T05GSUdfTElCRkRLX0FBQ19ERUNPREVSKSAgICAgICAgICs9IGxpYmZkay1hYWNkZWMubwogT0JK Uy0kKENPTkZJR19MSUJGREtfQUFDX0VOQ09ERVIpICAgICAgICAgKz0gbGliZmRrLWFhY2VuYy5v CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2F2MWRlYy5jIGIvbGliYXZjb2RlYy9hdjFkZWMuYwpp bmRleCBhODBlMzdlMzNmLi5kZjM5M2ZlM2QwIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2F2MWRl Yy5jCisrKyBiL2xpYmF2Y29kZWMvYXYxZGVjLmMKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1 ZGUgImNvbmZpZ19jb21wb25lbnRzLmgiCiAKKyNpbmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFt aWNfbWV0YWRhdGEuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvZmlsbV9ncmFpbl9wYXJhbXMuaCIK ICNpbmNsdWRlICJsaWJhdnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaCIKICNpbmNs dWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgpAQCAtMzAsNyArMzEsNiBAQAogI2luY2x1ZGUgImJ5 dGVzdHJlYW0uaCIKICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImRlY29k ZS5oIgotI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgogI2luY2x1ZGUgImh3Y29uZmln LmgiCiAjaW5jbHVkZSAicHJvZmlsZXMuaCIKICNpbmNsdWRlICJ0aHJlYWQuaCIKQEAgLTkyNSw4 ICs5MjUsOCBAQCBzdGF0aWMgaW50IGV4cG9ydF9pdHV0X3QzNShBVkNvZGVjQ29udGV4dCAqYXZj dHgsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICBpZiAoIWhkcnBsdXMpCiAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgICAgIHJldCA9IGZmX3BhcnNlX2l0dV90X3Qz NV90b19keW5hbWljX2hkcjEwX3BsdXMoaGRycGx1cywgZ2IuYnVmZmVyLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dl dF9ieXRlc19sZWZ0KCZnYikpOworICAgICAgICByZXQgPSBhdl9keW5hbWljX2hkcl9wbHVzX2Zy b21fdDM1KGhkcnBsdXMsIGdiLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2IpKTsKICAgICAgICAg aWYgKHJldCA8IDApCiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICBicmVhazsKZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMgYi9saWJhdmNvZGVjL2R5 bmFtaWNfaGRyMTBfcGx1cy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGE0NGFh YzY1Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKKysr IC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKLSAqLwotCi0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCi0jaW5jbHVkZSAi Z2V0X2JpdHMuaCIKLQotc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7Ci1z dGF0aWMgY29uc3QgaW50MzJfdCBwZWFrX2x1bWluYW5jZV9kZW4gPSAxNTsKLXN0YXRpYyBjb25z dCBpbnQ2NF90IHJnYl9kZW4gPSAxMDAwMDA7Ci1zdGF0aWMgY29uc3QgaW50MzJfdCBmcmFjdGlv bl9waXhlbF9kZW4gPSAxMDAwOwotc3RhdGljIGNvbnN0IGludDMyX3Qga25lZV9wb2ludF9kZW4g PSA0MDk1Owotc3RhdGljIGNvbnN0IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwot c3RhdGljIGNvbnN0IGludDMyX3Qgc2F0dXJhdGlvbl93ZWlnaHRfZGVuID0gODsKLQotaW50IGZm X3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAq cywgY29uc3QgdWludDhfdCAqZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBzaXplKQotewotICAgIEdldEJpdENvbnRleHQgZ2JjLCAqZ2IgPSAm Z2JjOwotICAgIGludCByZXQ7Ci0KLSAgICBpZiAoIXMpCi0gICAgICAgIHJldHVybiBBVkVSUk9S KEVOT01FTSk7Ci0KLSAgICByZXQgPSBpbml0X2dldF9iaXRzOChnYiwgZGF0YSwgc2l6ZSk7Ci0g ICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAxMCkKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0KLSAg ICBzLT5hcHBsaWNhdGlvbl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwotICAgIHMtPm51bV93 aW5kb3dzID0gZ2V0X2JpdHMoZ2IsIDIpOwotCi0gICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8 fCBzLT5udW1fd2luZG93cyA+IDMpIHsKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Ci0gICAgfQotCi0gICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgKCgxOSAqIDggKyAxKSAq IChzLT5udW1fd2luZG93cyAtIDEpKSkKLSAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Ci0KLSAgICBmb3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKLSAg ICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcyBoZXJl LiBUaGV5IHNob3VsZCBiZQotICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHJlbGF0aXZlIGNv b3JkaW5hdGVzIChpbiBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgotICAgICAgICBBVkhEUlBsdXND b2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKLSAgICAgICAgcGFy YW1zLT53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xl ZnRfY29ybmVyX3kgPQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiks IDF9OwotICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Ci0gICAg ICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFt cy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl95ID0KLSAgICAgICAgICAgIChBVlJhdGlvbmFs KXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKLQotICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxp cHNlX3ggPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxp cHNlX3kgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPnJvdGF0aW9uX2FuZ2xl ID0gZ2V0X2JpdHMoZ2IsIDgpOwotICAgICAgICBwYXJhbXMtPnNlbWltYWpvcl9heGlzX2ludGVy bmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJhbXMtPnNlbWltYWpv cl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwotICAgICAgICBwYXJh bXMtPnNlbWltaW5vcl9heGlzX2V4dGVybmFsX2VsbGlwc2UgPSBnZXRfYml0cyhnYiwgMTYpOwot ICAgICAgICBwYXJhbXMtPm92ZXJsYXBfcHJvY2Vzc19vcHRpb24gPSBnZXRfYml0czEoZ2IpOwot ICAgIH0KLQotICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQotICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21h eGltdW1fbHVtaW5hbmNlID0KLSAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmcoZ2Is IDI3KSwgbHVtaW5hbmNlX2Rlbn07Ci0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0 dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwotCi0gICAgaWYgKHMtPnRh cmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Ci0gICAg ICAgIGludCByb3dzLCBjb2xzOwotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxMCkK LSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotICAgICAgICByb3dzID0g Z2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBjb2xzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAg ICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29scyA8IDIpIHx8IChjb2xz ID4gMjUpKSkgewotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAg ICAgIH0KLSAgICAgICAgcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFs X3BlYWtfbHVtaW5hbmNlID0gcm93czsKLSAgICAgICAgcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lz dGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKLQotICAgICAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKLSAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93 czsgaSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewot ICAgICAgICAgICAgICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1 bWluYW5jZVtpXVtqXSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K LSAgICB9Ci0gICAgZm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Ci0g ICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1z W3ddOwotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkK LSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgICAgICBwYXJhbXMtPm1heHNjbFtpXSA9 Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59 OwotICAgICAgICB9Ci0gICAgICAgIHBhcmFtcy0+YXZlcmFnZV9tYXhyZ2IgPQotICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59OwotICAgICAgICBwYXJh bXMtPm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQp OwotCi0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8Ci0gICAgICAgICAgICAocGFyYW1z LT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyAqIDI0KSkKLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7Ci0g ICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGFnZSA9IGdl dF9iaXRzKGdiLCA3KTsKLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltp XS5wZXJjZW50aWxlID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is IDE3KSwgcmdiX2Rlbn07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAxMCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAg ICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3BpeGVscyA9IChBVlJhdGlvbmFsKXtnZXRfYml0 cyhnYiwgMTApLCBmcmFjdGlvbl9waXhlbF9kZW59OwotICAgIH0KLSAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAxKQotICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICBz LT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZyA9IGdldF9iaXRz MShnYik7Ci0gICAgaWYgKHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnKSB7Ci0gICAgICAgIGludCByb3dzLCBjb2xzOwotICAgICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAxMCkKLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwot ICAgICAgICByb3dzID0gZ2V0X2JpdHMoZ2IsIDUpOwotICAgICAgICBjb2xzID0gZ2V0X2JpdHMo Z2IsIDUpOwotICAgICAgICBpZiAoKChyb3dzIDwgMikgfHwgKHJvd3MgPiAyNSkpIHx8ICgoY29s cyA8IDIpIHx8IChjb2xzID4gMjUpKSkgewotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5W QUxJRERBVEE7Ci0gICAgICAgIH0KLSAgICAgICAgcy0+bnVtX3Jvd3NfbWFzdGVyaW5nX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gcm93czsKLSAgICAgICAgcy0+bnVtX2NvbHNfbWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlID0gY29sczsKLQotICAgICAgICBp ZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocm93cyAqIGNvbHMgKiA0KSkKLSAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg cm93czsgaSsrKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykg ewotICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWlu YW5jZVtpXVtqXSA9Ci0gICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgNCksIHBlYWtfbHVtaW5hbmNlX2Rlbn07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg ICB9Ci0KLSAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKLSAg ICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNb d107Ci0gICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEpCi0gICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgICAgICBwYXJhbXMtPnRvbmVfbWFwcGluZ19m bGFnID0gZ2V0X2JpdHMxKGdiKTsKLSAgICAgICAgaWYgKHBhcmFtcy0+dG9uZV9tYXBwaW5nX2Zs YWcpIHsKLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQotICAgICAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwotCi0gICAgICAgICAgICBwYXJhbXMt PmtuZWVfcG9pbnRfeCA9Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdi LCAxMiksIGtuZWVfcG9pbnRfZGVufTsKLSAgICAgICAgICAgIHBhcmFtcy0+a25lZV9wb2ludF95 ID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwga25lZV9w b2ludF9kZW59OwotICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMg PSBnZXRfYml0cyhnYiwgNCk7Ci0KLSAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8 IChwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyAqIDEwKSkKLSAgICAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLQotICAgICAgICAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsrKSB7Ci0gICAgICAg ICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Ci0gICAgICAgICAgICAg ICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiZXppZXJfYW5jaG9yX2Rlbn07 Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChn YikgPCAxKQotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Ci0gICAgICAg IHBhcmFtcy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcgPSBnZXRfYml0czEoZ2IpOwot ICAgICAgICBpZiAocGFyYW1zLT5jb2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZykgewotICAg ICAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgNikKLSAgICAgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAgICAgIHBhcmFtcy0+Y29sb3Jfc2F0dXJh dGlvbl93ZWlnaHQgPQotICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwg NiksIHNhdHVyYXRpb25fd2VpZ2h0X2Rlbn07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1 cm4gMDsKLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggYi9s aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBjZDdhY2YwNDMyLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIx MF9wbHVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogVGhpcyBmaWxl IGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEg b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g KgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9u ZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19EWU5BTUlDX0hEUjEwX1BM VVNfSAotI2RlZmluZSBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExVU19ICi0KLSNpbmNsdWRlICJs aWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKLQotLyoqCi0gKiBQYXJzZSB0aGUgdXNl ciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSUGx1 cykuCi0gKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFt aWNIRFJQbHVzIHN0cnVjdHVyZS4KLSAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRh aW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEuCi0gKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRo ZSBkYXRhIGFycmF5IGluIGJ5dGVzLgotICoKLSAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhl cndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCi0gKi8KLWludCBmZl9wYXJz ZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNv bnN0IHVpbnQ4X3QgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgc2l6ZSk7Ci0KLSNlbmRpZiAvKiBBVkNPREVDX0RZTkFNSUNfSERSMTBfUExV U19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2gyNjQ1X3NlaS5jIGIvbGliYXZjb2RlYy9o MjY0NV9zZWkuYwppbmRleCA2ZTRhOWExYWYyLi42M2FiNzExYmM5IDEwMDY0NAotLS0gYS9saWJh dmNvZGVjL2gyNjQ1X3NlaS5jCisrKyBiL2xpYmF2Y29kZWMvaDI2NDVfc2VpLmMKQEAgLTI3LDEz ICsyNywxMyBAQAogCiAjaW5jbHVkZSAibGliYXZ1dGlsL2FtYmllbnRfdmlld2luZ19lbnZpcm9u bWVudC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9kaXNwbGF5LmgiCisjaW5jbHVkZSAibGliYXZ1 dGlsL2hkcl9keW5hbWljX21ldGFkYXRhLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL2ZpbG1fZ3Jh aW5fcGFyYW1zLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKICNpbmNsdWRlICJs aWJhdnV0aWwvc3RlcmVvM2QuaCIKIAogI2luY2x1ZGUgImF0c2NfYTUzLmgiCiAjaW5jbHVkZSAi YXZjb2RlYy5oIgotI2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgogI2luY2x1ZGUgImR5 bmFtaWNfaGRyX3ZpdmlkLmgiCiAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKICNpbmNsdWRlICJnb2xv bWIuaCIKQEAgLTUyLDggKzUyLDggQEAgc3RhdGljIGludCBkZWNvZGVfcmVnaXN0ZXJlZF91c2Vy X2RhdGFfZHluYW1pY19oZHJfcGx1cyhIRVZDU0VJRHluYW1pY0hEUlBsdXMgKnMKICAgICBpZiAo IW1ldGFkYXRhKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogCi0gICAgZXJyID0g ZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhtZXRhZGF0YSwgZ2ItPmJ1 ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7CisgICAgZXJyID0gYXZfZHluYW1pY19o ZHJfcGx1c19mcm9tX3QzNShtZXRhZGF0YSwgZ2ItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KGdiKSk7CiAg ICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgYXZfZnJlZShtZXRhZGF0YSk7CiAgICAgICAgIHJl dHVybiBlcnI7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYmRhdjFkLmMgYi9saWJhdmNvZGVj L2xpYmRhdjFkLmMKaW5kZXggZWIxMjI1ZWExYS4uNTBjNGNlZWU0MCAxMDA2NDQKLS0tIGEvbGli YXZjb2RlYy9saWJkYXYxZC5jCisrKyBiL2xpYmF2Y29kZWMvbGliZGF2MWQuYwpAQCAtMjQsNiAr MjQsNyBAQAogI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgogI2luY2x1ZGUgImxpYmF2 dXRpbC9jcHUuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvZmlsbV9ncmFpbl9wYXJhbXMuaCIKKyNp bmNsdWRlICJsaWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwv aW1ndXRpbHMuaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCkBAIC0zMyw3ICszNCw2IEBA CiAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgogI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCiAj aW5jbHVkZSAiZGVjb2RlLmgiCi0jaW5jbHVkZSAiZHluYW1pY19oZHIxMF9wbHVzLmgiCiAjaW5j bHVkZSAiaW50ZXJuYWwuaCIKIAogI2RlZmluZSBGRl9EQVYxRF9WRVJTSU9OX0FUX0xFQVNUKHgs eSkgXApAQCAtNTU1LDggKzU1NSw4IEBAIEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwog ICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg cmVzID0gZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhoZHJwbHVzLCBn Yi5idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikpOworICAgICAgICAg ICAgcmVzID0gYXZfZHluYW1pY19oZHJfcGx1c19mcm9tX3QzNShoZHJwbHVzLCBnYi5idWZmZXIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzdHJl YW0yX2dldF9ieXRlc19sZWZ0KCZnYikpOwogICAgICAgICAgICAgaWYgKHJlcyA8IDApCiAgICAg ICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9s aWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuYyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19t ZXRhZGF0YS5jCmluZGV4IDBmYTFlZTgyZGUuLjk4ZjM5OWIwMzIgMTAwNjQ0Ci0tLSBhL2xpYmF2 dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5jCisrKyBiL2xpYmF2dXRpbC9oZHJfZHluYW1pY19t ZXRhZGF0YS5jCkBAIC0yMCw2ICsyMCwxNiBAQAogCiAjaW5jbHVkZSAiaGRyX2R5bmFtaWNfbWV0 YWRhdGEuaCIKICNpbmNsdWRlICJtZW0uaCIKKyNpbmNsdWRlICJsaWJhdmNvZGVjL2dldF9iaXRz LmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9wdXRfYml0cy5oIgorCitzdGF0aWMgY29uc3QgaW50 NjRfdCBsdW1pbmFuY2VfZGVuID0gMTsKK3N0YXRpYyBjb25zdCBpbnQzMl90IHBlYWtfbHVtaW5h bmNlX2RlbiA9IDE1Oworc3RhdGljIGNvbnN0IGludDY0X3QgcmdiX2RlbiA9IDEwMDAwMDsKK3N0 YXRpYyBjb25zdCBpbnQzMl90IGZyYWN0aW9uX3BpeGVsX2RlbiA9IDEwMDA7CitzdGF0aWMgY29u c3QgaW50MzJfdCBrbmVlX3BvaW50X2RlbiA9IDQwOTU7CitzdGF0aWMgY29uc3QgaW50MzJfdCBi ZXppZXJfYW5jaG9yX2RlbiA9IDEwMjM7CitzdGF0aWMgY29uc3QgaW50MzJfdCBzYXR1cmF0aW9u X3dlaWdodF9kZW4gPSA4OwogCiBBVkR5bmFtaWNIRFJQbHVzICphdl9keW5hbWljX2hkcl9wbHVz X2FsbG9jKHNpemVfdCAqc2l6ZSkKIHsKQEAgLTQ1LDMgKzU1LDE3MyBAQCBBVkR5bmFtaWNIRFJQ bHVzICphdl9keW5hbWljX2hkcl9wbHVzX2NyZWF0ZV9zaWRlX2RhdGEoQVZGcmFtZSAqZnJhbWUp CiAKICAgICByZXR1cm4gKEFWRHluYW1pY0hEUlBsdXMgKilzaWRlX2RhdGEtPmRhdGE7CiB9CisK K2ludCBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KEFWRHluYW1pY0hEUlBsdXMgKnMsIGNv bnN0IHVpbnQ4X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg c2l6ZSkKK3sKKyAgICBHZXRCaXRDb250ZXh0IGdiYywgKmdiID0gJmdiYzsKKyAgICBpbnQgcmV0 OworCisgICAgaWYgKCFzKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAg cmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOworICAgIGlmIChyZXQgPCAwKQor ICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCisg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgcy0+YXBwbGljYXRpb25f dmVyc2lvbiA9IGdldF9iaXRzKGdiLCA4KTsKKyAgICBzLT5udW1fd2luZG93cyA9IGdldF9iaXRz KGdiLCAyKTsKKworICAgIGlmIChzLT5udW1fd2luZG93cyA8IDEgfHwgcy0+bnVtX3dpbmRvd3Mg PiAzKSB7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAg IGlmIChnZXRfYml0c19sZWZ0KGdiKSA8ICgoMTkgKiA4ICsgMSkgKiAocy0+bnVtX3dpbmRvd3Mg LSAxKSkpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgZm9yIChp bnQgdyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAgIC8vIFRoZSBjb3Ju ZXJzIGFyZSBzZXQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMgaGVyZS4gVGhleSBzaG91bGQgYmUK KyAgICAgICAgLy8gY29udmVydGVkIHRvIHRoZSByZWxhdGl2ZSBjb29yZGluYXRlcyAoaW4gWzAs IDFdKSBpbiB0aGUgZGVjb2Rlci4KKyAgICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJh bXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107CisgICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVy X2xlZnRfY29ybmVyX3ggPQorICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAx NiksIDF9OworICAgICAgICBwYXJhbXMtPndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl95ID0KKyAg ICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKKyAgICAgICAgcGFy YW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3ggPQorICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCAxNiksIDF9OworICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9y aWdodF9jb3JuZXJfeSA9CisgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2 KSwgMX07CisKKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV94ID0gZ2V0X2JpdHMo Z2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95ID0gZ2V0X2JpdHMo Z2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5yb3RhdGlvbl9hbmdsZSA9IGdldF9iaXRzKGdiLCA4 KTsKKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19pbnRlcm5hbF9lbGxpcHNlID0gZ2V0 X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5zZW1pbWFqb3JfYXhpc19leHRlcm5hbF9l bGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5zZW1pbWlub3JfYXhp c19leHRlcm5hbF9lbGxpcHNlID0gZ2V0X2JpdHMoZ2IsIDE2KTsKKyAgICAgICAgcGFyYW1zLT5v dmVybGFwX3Byb2Nlc3Nfb3B0aW9uID0gZ2V0X2JpdHMxKGdiKTsKKyAgICB9CisKKyAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAyOCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7CisKKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9 CisgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0c19sb25nKGdiLCAyNyksIGx1bWluYW5jZV9k ZW59OworICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKKworICAgIGlmIChzLT50YXJnZXRlZF9zeXN0ZW1fZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBpbnQgcm93cywgY29s czsKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCisgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgcm93cyA9IGdldF9iaXRzKGdiLCA1KTsK KyAgICAgICAgY29scyA9IGdldF9iaXRzKGdiLCA1KTsKKyAgICAgICAgaWYgKCgocm93cyA8IDIp IHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpIHsKKyAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9CisgICAgICAgIHMt Pm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZSA9 IHJvd3M7CisgICAgICAgIHMtPm51bV9jb2xzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgKHJvd3MgKiBjb2xzICogNCkpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgeworICAgICAg ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBz LT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPQor ICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1 bWluYW5jZV9kZW59OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAo aW50IHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgeworICAgICAgICBBVkhEUlBsdXND b2xvclRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKKyAgICAgICAgaWYg KGdldF9iaXRzX2xlZnQoZ2IpIDwgKDMgKiAxNyArIDE3ICsgNCkpCisgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7 IGkrKykgeworICAgICAgICAgICAgcGFyYW1zLT5tYXhzY2xbaV0gPQorICAgICAgICAgICAgICAg IChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgfQorICAg ICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4cmdiID0KKyAgICAgICAgICAgIChBVlJhdGlvbmFsKXtn ZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgcGFyYW1zLT5udW1fZGlzdHJpYnV0 aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9iaXRzKGdiLCA0KTsKKworICAgICAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPAorICAgICAgICAgICAgKHBhcmFtcy0+bnVtX2Rpc3RyaWJ1dGlv bl9tYXhyZ2JfcGVyY2VudGlsZXMgKiAyNCkpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBhcmFtcy0+bnVtX2Rp c3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXM7IGkrKykgeworICAgICAgICAgICAgcGFyYW1z LT5kaXN0cmlidXRpb25fbWF4cmdiW2ldLnBlcmNlbnRhZ2UgPSBnZXRfYml0cyhnYiwgNyk7Cisg ICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGlsZSA9Cisg ICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNyksIHJnYl9kZW59Owor ICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCisgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICBwYXJhbXMtPmZyYWN0 aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rp b25fcGl4ZWxfZGVufTsKKyAgICB9CisgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKKyAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgcy0+bWFzdGVyaW5nX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcgPSBnZXRfYml0czEoZ2IpOworICAgIGlmIChz LT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAg ICBpbnQgcm93cywgY29sczsKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMTApCisg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgcm93cyA9IGdl dF9iaXRzKGdiLCA1KTsKKyAgICAgICAgY29scyA9IGdldF9iaXRzKGdiLCA1KTsKKyAgICAgICAg aWYgKCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+ IDI1KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAg ICB9CisgICAgICAgIHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1 bWluYW5jZSA9IHJvd3M7CisgICAgICAgIHMtPm51bV9jb2xzX21hc3RlcmluZ19kaXNwbGF5X2Fj dHVhbF9wZWFrX2x1bWluYW5jZSA9IGNvbHM7CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQo Z2IpIDwgKHJvd3MgKiBjb2xzICogNCkpCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgeworICAg ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKKyAgICAgICAgICAgICAg ICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPQorICAg ICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1bWlu YW5jZV9kZW59OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChp bnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAgIEFWSERSUGx1c0Nv bG9yVHJhbnNmb3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOworICAgICAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAxKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisKKyAgICAgICAgcGFyYW1zLT50b25lX21hcHBpbmdfZmxhZyA9IGdldF9iaXRzMShn Yik7CisgICAgICAgIGlmIChwYXJhbXMtPnRvbmVfbWFwcGluZ19mbGFnKSB7CisgICAgICAgICAg ICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAyOCkKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKKworICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPQor ICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50 X2Rlbn07CisgICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeSA9CisgICAgICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKKyAgICAg ICAgICAgIHBhcmFtcy0+bnVtX2Jlemllcl9jdXJ2ZV9hbmNob3JzID0gZ2V0X2JpdHMoZ2IsIDQp OworCisgICAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6 aWVyX2N1cnZlX2FuY2hvcnMgKiAxMCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5u dW1fYmV6aWVyX2N1cnZlX2FuY2hvcnM7IGkrKykgeworICAgICAgICAgICAgICAgIHBhcmFtcy0+ YmV6aWVyX2N1cnZlX2FuY2hvcnNbaV0gPQorICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDEwKSwgYmV6aWVyX2FuY2hvcl9kZW59OworICAgICAgICAgICAgfQor ICAgICAgICB9CisKKyAgICAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMSkKKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICBwYXJhbXMtPmNvbG9yX3Nh dHVyYXRpb25fbWFwcGluZ19mbGFnID0gZ2V0X2JpdHMxKGdiKTsKKyAgICAgICAgaWYgKHBhcmFt cy0+Y29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpIHsKKyAgICAgICAgICAgIGlmIChnZXRf Yml0c19sZWZ0KGdiKSA8IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisgICAgICAgICAgICBwYXJhbXMtPmNvbG9yX3NhdHVyYXRpb25fd2VpZ2h0ID0KKyAg ICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDYpLCBzYXR1cmF0aW9uX3dl aWdodF9kZW59OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9saWJhdnV0aWwvaGRyX2R5bmFtaWNfbWV0YWRhdGEuaCBiL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5oCmluZGV4IDJkNzJkZTU2YWUuLjFmOTUzZWYxZjUgMTAwNjQ0Ci0tLSBh L2xpYmF2dXRpbC9oZHJfZHluYW1pY19tZXRhZGF0YS5oCisrKyBiL2xpYmF2dXRpbC9oZHJfZHlu YW1pY19tZXRhZGF0YS5oCkBAIC0zNDAsNCArMzQwLDE1IEBAIEFWRHluYW1pY0hEUlBsdXMgKmF2 X2R5bmFtaWNfaGRyX3BsdXNfYWxsb2Moc2l6ZV90ICpzaXplKTsKICAqLwogQVZEeW5hbWljSERS UGx1cyAqYXZfZHluYW1pY19oZHJfcGx1c19jcmVhdGVfc2lkZV9kYXRhKEFWRnJhbWUgKmZyYW1l KTsKIAorLyoqCisgKiBQYXJzZSB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zNSB0 byBBVmJ1ZmZlciAoQVZEeW5hbWljSERSUGx1cykuCisgKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29u dGFpbmluZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KKyAqIEBwYXJh bSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEu CisgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVzLgorICoKKyAq IEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRl IEFWRVJST1IuCisgKi8KK2ludCBhdl9keW5hbWljX2hkcl9wbHVzX2Zyb21fdDM1KEFWRHluYW1p Y0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgc2l6ZSk7CisKICNlbmRpZiAvKiBBVlVUSUxfSERSX0RZTkFNSUNfTUVU QURBVEFfSCAqLwotLSAKMi4zOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==