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 AF9D244E43 for ; Sun, 26 Feb 2023 20:04:17 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 40C2168086D; Sun, 26 Feb 2023 22:04:13 +0200 (EET) Received: from mail-vs1-f53.google.com (mail-vs1-f53.google.com [209.85.217.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 402FD680817 for ; Sun, 26 Feb 2023 22:04:07 +0200 (EET) Received: by mail-vs1-f53.google.com with SMTP id x14so7832963vso.9 for ; Sun, 26 Feb 2023 12:04:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=hbYCHwQvY6FAcOFnCOKucm4Td+rGPW7gRQCPnbYg3L8=; b=UjhL2k43wFIofasvIgRhetdcbUh0A7k4JsBhmPD/xeEszdwZWilw9bnjNZ+lOhuNor ssYZIiluOpuk65cgTdcI+skmnMa/4dGLk8VkglbaujH2Pb7mBz6+vamtweYjj7QHewcc gIXq2PaRo5zG2Kcaf4I1NTzJU/Wr4Vhh+6CdQXBffGZUe21sr/WVoRhaz2qzgdiKY6Mi D/m3uzWzte0DD4VP112FV8IwYqZiTjqrVDu21xODEXnhpZsJW4lW0U13exE0LJvM3Epb fnZ+LON9vRHM8/4xSbnPzA7TeNlPgPwMfydm71ffyeoyFwhkhRPVJdZOk5B8QpxyvKJX d5xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hbYCHwQvY6FAcOFnCOKucm4Td+rGPW7gRQCPnbYg3L8=; b=eZZq8un5+jazFmRWr8v2atZNlqKniXZz5VHH9O5ifSX1g6SpS3II9XgZKw+jqly+So Sq0B8nhRuWnboHt5Iovd5cyCa30rugKgqD8OzTn2Q+4PXkAKLHK17/2+e5sp7LnKDG52 MLtGuX8IQfHNRzwCuU7gS7F5UxOHt6mRU5al9IR+gPbWP3BwlNurM2zODE3qCY8Ogngk Mccak6CIonwO7jKH/OYwTE26eFJoMNjKuMNsOYalFtuIqNkg6T7758ea3b446mXiVe0s wyhyGJggx2x2UzLrQgpMSDGsZYxgd21bnc7wnR44zembF/1u/1Sf45eisY3A2fNV54Cb 6qDQ== X-Gm-Message-State: AO0yUKVkEGpejW8vUXvohULhdmV3/RXkklXhHpRR/A/18nxwNlCEGwiD OOptYacUVMI7DJwWZ2Dc8ZnhQqrSvTYNpgJDEm8DhXnU X-Google-Smtp-Source: AK7set8Xcy0NOttcbxit1g6iXcBO1974Bvz8mYrOk4aEQnBv+46TJ/3g5B60guAFB4ruZOz2RQTNkLuIqrEuPK8yEjM= X-Received: by 2002:a05:6102:832:b0:402:999f:44d2 with SMTP id k18-20020a056102083200b00402999f44d2mr5907713vsb.0.1677441845046; Sun, 26 Feb 2023 12:04:05 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Sun, 26 Feb 2023 12:04:03 -0800 (PST) In-Reply-To: <20230226150256.7940-1-yizhuo.liu753@gmail.com> References: <20230226150256.7940-1-yizhuo.liu753@gmail.com> From: Paul B Mahol Date: Sun, 26 Feb 2023 21:04:03 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH] libavfilter/vf_signalstats.c: add new hsl(Hue, Saturation, Lightness) for filter signalstats 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 Cc: wangwei1237@gmail.com, "yizhuo.liu753@gmail.com" 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: T24gMi8yNi8yMywgbGl1eWl6aHVvIDx5aXpodW8ubGl1NzUzQGdtYWlsLmNvbT4gd3JvdGU6Cj4g RnJvbTogInlpemh1by5saXU3NTNAZ21haWwuY29tIiA8eWl6aHVvLmxpdTc1M0BnbWFpbC5jb20+ Cj4KPiAtLS0KPiAgbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMuYyB8IDI0NCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMjE5IGluc2VydGlv bnMoKyksIDI1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX3Np Z25hbHN0YXRzLmMgYi9saWJhdmZpbHRlci92Zl9zaWduYWxzdGF0cy5jCj4gaW5kZXggYjRkMTAy OTI5Ni4uOTBkYmU4NTNmYSAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci92Zl9zaWduYWxzdGF0 cy5jCj4gKysrIGIvbGliYXZmaWx0ZXIvdmZfc2lnbmFsc3RhdHMuYwo+IEBAIC0xLDcgKzEsOSBA QAo+ICAvKgo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgTWFyayBIZWF0aCBtanBlZzAgQCBzaWxp Y29udHJpcCBkb3Qgb3JnCj4gLSAqIENvcHlyaWdodCAoYykgMjAxNCBDbMOpbWVudCBCxZNzY2gK PiArICogQ29weXJpZ2h0IChjKSAyMDE0IENsw4PCqW1lbnQgQsOF4oCcc2NoCgpMb29rcyBsaWtl IG5vdCB2YWxpZCBjaGFuZ2UuCgoKPiAgICogQ29weXJpZ2h0IChjKSAyMDE0IERhdmUgUmljZSBA ZGVyaWNlZAo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIgV2FuZyBXZWkgPHdhbmd3ZWkxMjM3QGdt YWlsLmNvbT4KPiArICogQ29weXJpZ2h0IChjKSAyMDIyIExpdSB5aXpodW8gIDx5aXpodW8ubGl1 NzUzQGdtYWlsLmNvbT4KPiAgICoKPiAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ ICAgKgo+IEBAIC0yMyw4ICsyNSw4IEBACj4gICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdy aXRlLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0 aWwvcGl4ZGVzYy5oIgo+IC0jaW5jbHVkZSAiZmlsdGVycy5oIgo+ICAjaW5jbHVkZSAiaW50ZXJu YWwuaCIKPiArI2luY2x1ZGUgImxpYnN3c2NhbGUvc3dzY2FsZS5oIgo+Cj4gIGVudW0gRmlsdGVy TW9kZSB7Cj4gICAgICBGSUxURVJfTk9ORSA9IC0xLAo+IEBAIC0zNiw2ICszOCw4IEBAIGVudW0g RmlsdGVyTW9kZSB7Cj4KPiAgdHlwZWRlZiBzdHJ1Y3QgU2lnbmFsc3RhdHNDb250ZXh0IHsKPiAg ICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAgaW50IGx1bWFoOyAgICAgIC8vIGhlaWdo dCBvZiBsdW1hIHBsYW5lCj4gKyAgICBpbnQgbHVtYXc7ICAgICAgLy8gd2lkdGggb2YgbHVtYSBw bGFuZQo+ICAgICAgaW50IGNocm9tYWg7ICAgIC8vIGhlaWdodCBvZiBjaHJvbWEgcGxhbmUKPiAg ICAgIGludCBjaHJvbWF3OyAgICAvLyB3aWR0aCBvZiBjaHJvbWEgcGxhbmUKPiAgICAgIGludCBo c3ViOyAgICAgICAvLyBob3Jpem9udGFsIHN1YnNhbXBsaW5nCj4gQEAgLTU2LDYgKzYwLDExIEBA IHR5cGVkZWYgc3RydWN0IFNpZ25hbHN0YXRzQ29udGV4dCB7Cj4KPiAgICAgIEFWRnJhbWUgKmZy YW1lX3NhdDsKPiAgICAgIEFWRnJhbWUgKmZyYW1lX2h1ZTsKPiArICAgIEFWRnJhbWUgKmZyYW1l X3JnYjsKPiArCj4gKyAgICBpbnQgKmhzbF9oOwo+ICsgICAgaW50ICpoc2xfczsKPiArICAgIGlu dCAqaHNsX2w7Cj4gIH0gU2lnbmFsc3RhdHNDb250ZXh0Owo+Cj4gIHR5cGVkZWYgc3RydWN0IFRo cmVhZERhdGEgewo+IEBAIC02NSw5ICs3NCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBUaHJlYWREYXRh IHsKPgo+ICB0eXBlZGVmIHN0cnVjdCBUaHJlYWREYXRhSHVlU2F0TWV0cmljcyB7Cj4gICAgICBj b25zdCBBVkZyYW1lICpzcmM7Cj4gLSAgICBBVkZyYW1lICpkc3Rfc2F0LCAqZHN0X2h1ZTsKPiAr ICAgIEFWRnJhbWUgKmRzdF9zYXQsICpkc3RfaHVlLCAqZHN0X2gsICpkc3RfcywgKmRzdF9sOwo+ ICB9IFRocmVhZERhdGFIdWVTYXRNZXRyaWNzOwo+Cj4gK3R5cGVkZWYgc3RydWN0IFRocmVhZERh dGFIU0xNZXRyaWNzIHsKPiArICAgIGNvbnN0IEFWRnJhbWUgKnNyYzsKPiArICAgIGludCAqZHN0 X2gsICpkc3RfcywgKmRzdF9sOwo+ICt9IFRocmVhZERhdGFIU0xNZXRyaWNzOwo+ICsKPiArdHlw ZWRlZiBmbG9hdCBudW07Cj4gKwo+ICtzdGF0aWMgY29uc3QgZmxvYXQgRVBTSUxPTiA9IDFlLTk7 Cj4gKwo+ICsvKiogQGJyaWVmIEVxdWFsIG9mIEEgYW5kIEIgKi8KPiArI2RlZmluZSBFUShBLEIp ICAgICgoZmFicygoQSkgLSAoQikpIDwgRVBTSUxPTikgPyAxIDogMCkKPiArCj4gICNkZWZpbmUg T0ZGU0VUKHgpIG9mZnNldG9mKFNpZ25hbHN0YXRzQ29udGV4dCwgeCkKPiAgI2RlZmluZSBGTEFH UyBBVl9PUFRfRkxBR19GSUxURVJJTkdfUEFSQU18QVZfT1BUX0ZMQUdfVklERU9fUEFSQU0KPgo+ IEBAIC0xMDEsNiArMTIyLDcgQEAgc3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZGaWx0ZXJDb250 ZXh0ICpjdHgpCj4gICAgICBzLT55dXZfY29sb3JbMF0gPSAoKCA2NipyICsgMTI5KmcgKyAgMjUq YiArICgxPDw3KSkgPj4gOCkgKyAgMTY7Cj4gICAgICBzLT55dXZfY29sb3JbMV0gPSAoKC0zOCpy ICsgLTc0KmcgKyAxMTIqYiArICgxPDw3KSkgPj4gOCkgKyAxMjg7Cj4gICAgICBzLT55dXZfY29s b3JbMl0gPSAoKDExMipyICsgLTk0KmcgKyAtMTgqYiArICgxPDw3KSkgPj4gOCkgKyAxMjg7Cj4g Kwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+IEBAIC0xMTAsMTEgKzEzMiwxNSBAQCBzdGF0aWMg YXZfY29sZCB2b2lkIHVuaW5pdChBVkZpbHRlckNvbnRleHQgKmN0eCkKPiAgICAgIGF2X2ZyYW1l X2ZyZWUoJnMtPmZyYW1lX3ByZXYpOwo+ICAgICAgYXZfZnJhbWVfZnJlZSgmcy0+ZnJhbWVfc2F0 KTsKPiAgICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmZyYW1lX2h1ZSk7Cj4gKyAgICBhdl9mcmFtZV9m cmVlKCZzLT5mcmFtZV9yZ2IpOwo+ICAgICAgYXZfZnJlZXAoJnMtPmpvYnNfcmV0cyk7Cj4gICAg ICBhdl9mcmVlcCgmcy0+aGlzdHkpOwo+ICAgICAgYXZfZnJlZXAoJnMtPmhpc3R1KTsKPiAgICAg IGF2X2ZyZWVwKCZzLT5oaXN0dik7Cj4gICAgICBhdl9mcmVlcCgmcy0+aGlzdHNhdCk7Cj4gKyAg ICBhdl9mcmVlcCgmcy0+aHNsX2gpOwo+ICsgICAgYXZfZnJlZXAoJnMtPmhzbF9zKTsKPiArICAg IGF2X2ZyZWVwKCZzLT5oc2xfbCk7Cj4gIH0KPgo+ICAvLyBUT0RPOiBhZGQgbW9yZQo+IEBAIC0x NTEsNiArMTc3LDIzIEBAIHN0YXRpYyBBVkZyYW1lICphbGxvY19mcmFtZShlbnVtIEFWUGl4ZWxG b3JtYXQgcGl4Zm10LAo+IGludCB3LCBpbnQgaCkKPiAgICAgIHJldHVybiBmcmFtZTsKPiAgfQo+ Cj4gK3N0YXRpYyBpbnQgY29uZmlnX2lucHV0KEFWRmlsdGVyTGluayAqaW5saW5rKQo+ICt7Cj4g KyAgICAvLyBWaWRlbyBpbnB1dCBkYXRhIGF2aWxhYmxlCj4gKyAgICBBVkZpbHRlckNvbnRleHQg KmN0eCA9IGlubGluay0+ZHN0Owo+ICsgICAgU2lnbmFsc3RhdHNDb250ZXh0ICpzID0gY3R4LT5w cml2Owo+ICsKPiArICAgIC8vIGZyZWUgcHJldmlvdXMgYnVmZmVycyBpbiBjYXNlIHRoZXkgYXJl IGFsbG9jYXRlZCBhbHJlYWR5Cj4gKyAgICBhdl9mcmFtZV9mcmVlKCZzLT5mcmFtZV9yZ2IpOwo+ ICsgICAgcy0+ZnJhbWVfcmdiID0gYWxsb2NfZnJhbWUoQVZfUElYX0ZNVF9SR0IyNCwgaW5saW5r LT53LCBpbmxpbmstPmgpOwo+ICsKPiArICAgIGlmICghcy0+ZnJhbWVfcmdiKSB7Cj4gKyAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsK PiArfQo+ICsKPiAgc3RhdGljIGludCBjb25maWdfb3V0cHV0KEFWRmlsdGVyTGluayAqb3V0bGlu aykKPiAgewo+ICAgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBvdXRsaW5rLT5zcmM7Cj4gQEAg LTE3MiwxMiArMjE1LDIyIEBAIHN0YXRpYyBpbnQgY29uZmlnX291dHB1dChBVkZpbHRlckxpbmsg Km91dGxpbmspCj4gICAgICBvdXRsaW5rLT53ID0gaW5saW5rLT53Owo+ICAgICAgb3V0bGluay0+ aCA9IGlubGluay0+aDsKPgo+ICsgICAgcy0+bHVtYXcgICA9IGlubGluay0+dzsKPiArICAgIHMt Pmx1bWFoICAgPSBpbmxpbmstPmg7Cj4gKwo+ICAgICAgcy0+Y2hyb21hdyA9IEFWX0NFSUxfUlNI SUZUKGlubGluay0+dywgcy0+aHN1Yik7Cj4gICAgICBzLT5jaHJvbWFoID0gQVZfQ0VJTF9SU0hJ RlQoaW5saW5rLT5oLCBzLT52c3ViKTsKPgo+ICAgICAgcy0+ZnMgPSBpbmxpbmstPncgKiBpbmxp bmstPmg7Cj4gICAgICBzLT5jZnMgPSBzLT5jaHJvbWF3ICogcy0+Y2hyb21haDsKPgo+ICsgICAg cy0+aHNsX2ggPSBhdl9tYWxsb2NfYXJyYXkocy0+bHVtYWgsIHNpemVvZigqcy0+aHNsX2gpKTsK PiArICAgIHMtPmhzbF9zID0gYXZfbWFsbG9jX2FycmF5KHMtPmx1bWFoLCBzaXplb2YoKnMtPmhz bF9zKSk7Cj4gKyAgICBzLT5oc2xfbCA9IGF2X21hbGxvY19hcnJheShzLT5sdW1haCwgc2l6ZW9m KCpzLT5oc2xfbCkpOwo+ICsgICAgaWYgKCFzLT5oc2xfaCB8fCAhcy0+aHNsX3MgfHwgIXMtPmhz bF9sKSB7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgIH0KPiArCj4g ICAgICBzLT5uYl9qb2JzICAgPSBGRk1BWCgxLCBGRk1JTihpbmxpbmstPmgsCj4gZmZfZmlsdGVy X2dldF9uYl90aHJlYWRzKGN0eCkpKTsKPiAgICAgIHMtPmpvYnNfcmV0cyA9IGF2X21hbGxvY19h cnJheShzLT5uYl9qb2JzLCBzaXplb2YoKnMtPmpvYnNfcmV0cykpOwo+ICAgICAgaWYgKCFzLT5q b2JzX3JldHMpCj4gQEAgLTQ1NSw2ICs1MDgsMTEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ ICAgICAge05VTEx9Cj4gIH07Cj4KPiArc3RhdGljIHZvaWQgWVVWMlJHQihjb25zdCBBVkZyYW1l KiBzcmMsIGVudW0gQVZQaXhlbEZvcm1hdCBkc3RGb3JtYXQsCj4gQVZGcmFtZSogZHN0KQo+ICt7 Cj4gKyAgICBpbnQgd2lkdGggID0gc3JjLT53aWR0aDsKPiArICAgIGludCBoZWlnaHQgPSBzcmMt PmhlaWdodDsKPiArCj4gKyAgICBzdHJ1Y3QgU3dzQ29udGV4dCogY29udmVyc2lvbiA9IE5VTEw7 Cj4gKyAgICBjb252ZXJzaW9uID0gc3dzX2dldENvbnRleHQod2lkdGgsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChlbnVtIEFWUGl4ZWxGb3JtYXQpc3JjLT5mb3JtYXQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2lkdGgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGVpZ2h0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdEZvcm1hdCwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTV1NfRkFTVF9CSUxJTkVBUiwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCk7Cj4gKyAgICBzd3Nfc2NhbGUoY29udmVyc2lvbiwgKGNvbnN0IHVpbnQ4X3QgKiBjb25z dCAqKXNyYy0+ZGF0YSwKPiBzcmMtPmxpbmVzaXplLCAwLCBoZWlnaHQsIGRzdC0+ZGF0YSwgZHN0 LT5saW5lc2l6ZSk7Cj4gKyAgICBzd3NfZnJlZUNvbnRleHQoY29udmVyc2lvbik7Cj4gK30KPiAr Cj4gKy8qKgo+ICsgKiBAYnJpZWYgQ29udmVydCBhbiBzUkdCIGNvbG9yIHRvIEh1ZS1TYXR1cmF0 aW9uLUxpZ2h0bmVzcyAoSFNMKQo+ICsgKgo+ICsgKiBAcGFyYW0gSCwgUywgTCBwb2ludGVycyB0 byBob2xkIHRoZSByZXN1bHQKPiArICogQHBhcmFtIFIsIEcsIEIgdGhlIGlucHV0IHNSR0IgdmFs dWVzIHNjYWxlZCBpbiBbMCwxXQo+ICsgKgo+ICsgKiBUaGlzIHJvdXRpbmUgdHJhbnNmb3JtcyBm cm9tIHNSR0IgdG8gdGhlIGRvdWJsZSBoZXhjb25lIEhTTCBjb2xvciBzcGFjZQo+ICsgKiBUaGUg c1JHQiB2YWx1ZXMgYXJlIGFzc3VtZWQgdG8gYmUgYmV0d2VlbiAwIGFuZCAxLiAgVGhlIG91dHB1 dHMgYXJlCj4gKyAqICAgSCA9IGhleGFnb25hbCBodWUgYW5nbGUgICAgICAgICAgICAgICAgKDAg PD0gSCA8IDM2MCksCj4gKyAqICAgUyA9IHsgQy8oMkwpICAgICBpZiBMIDw9IDEvMiAgICAgICAg ICAgKDAgPD0gUyA8PSAxKSwKPiArICogICAgICAgeyBDLygyIC0gMkwpIGlmIEwgPiAgMS8yCj4g KyAqICAgTCA9IChtYXgoUicsRycsQicpICsgbWluKFInLEcnLEInKSkvMiAgKDAgPD0gTCA8PSAx KSwKPiArICogd2hlcmUgQyA9IG1heChSJyxHJyxCJykgLSBtaW4oUicsRycsQicpLgo+ICsgKgo+ ICsgKiBXaWtpcGVkaWE6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2FuZF9IU1YK PiArICovCj4gK3N0YXRpYyB2b2lkIFJHQjJIU0wobnVtICpILCBudW0gKlMsIG51bSAqTCwgbnVt IFIsIG51bSBHLCBudW0gQikKPiArewo+ICsgICAgbnVtIE1heCA9IEZGTUFYMyhSLCBHLCBCKTsK PiArICAgIG51bSBNaW4gPSBGRk1JTjMoUiwgRywgQik7Cj4gKyAgICBudW0gQyA9IE1heCAtIE1p bjsKPiArCj4gKyAgICAqTCA9IChNYXggKyBNaW4pIC8gMjsKPiArCj4gKyAgICBpZiAoQyA+IDAp IHsKPiArICAgICAgICBpZiAoRVEoTWF4LCBSKSkgewo+ICsgICAgICAgICAgICAqSCA9IChHIC0g QikgLyBDOwo+ICsKPiArICAgICAgICAgICAgaWYgKEcgPCBCKSB7Cj4gKyAgICAgICAgICAgICAg ICAqSCArPSA2Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfSBlbHNlIGlmIChFUShNYXgs IEcpKSB7Cj4gKyAgICAgICAgICAgICpIID0gMiArIChCIC0gUikgLyBDOwo+ICsgICAgICAgIH0g ZWxzZSB7Cj4gKyAgICAgICAgICAgICpIID0gNCArIChSIC0gRykgLyBDOwo+ICsgICAgICAgIH0K PiArCj4gKyAgICAgICAgKkggKj0gNjA7Cj4gKyAgICAgICAgKlMgPSAoKkwgPD0gMC41KSA/IChD LygyKigqTCkpKSA6IChDLygyIC0gMiooKkwpKSk7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAg ICpIID0gKlMgPSAwOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNvbXB1dGVfaHNs KEFWRmlsdGVyQ29udGV4dCAqY3R4LCB2b2lkICphcmcsIGludCBqb2JuciwgaW50Cj4gbmJfam9i cykKPiArewo+ICsgICAgaW50IGksIGo7Cj4gKyAgICBudW0gSCwgUywgTDsKPiArICAgIFRocmVh ZERhdGFIU0xNZXRyaWNzICp0ZCA9IGFyZzsKPiArICAgIGNvbnN0IFNpZ25hbHN0YXRzQ29udGV4 dCAqcyA9IGN0eC0+cHJpdjsKPiArICAgIGNvbnN0IEFWRnJhbWUgKnNyYyA9IHRkLT5zcmM7Cj4g KyAgICBpbnQgKmRzdF9oID0gdGQtPmRzdF9oOwo+ICsgICAgaW50ICpkc3RfcyA9IHRkLT5kc3Rf czsKPiArICAgIGludCAqZHN0X2wgPSB0ZC0+ZHN0X2w7Cj4gKwo+ICsgICAgY29uc3QgaW50IHNs aWNlX3N0YXJ0ID0gKHMtPmx1bWFoICogam9ibnIgICAgKSAvIG5iX2pvYnM7Cj4gKyAgICBjb25z dCBpbnQgc2xpY2VfZW5kICAgPSAocy0+bHVtYWggKiAoam9ibnIrMSkpIC8gbmJfam9iczsKPiAr Cj4gKyAgICBjb25zdCBpbnQgbHN6X3NyYyA9IHNyYy0+bGluZXNpemVbMF07Cj4gKyAgICBjb25z dCB1aW50OF90ICpwX3NyYyA9IHNyYy0+ZGF0YVswXSArIHNsaWNlX3N0YXJ0ICogbHN6X3NyYzsK PiArCj4gKyAgICBmb3IgKGogPSBzbGljZV9zdGFydDsgaiA8IHNsaWNlX2VuZDsgaisrKSB7Cj4g KyAgICAgICAgaW50IGxpbmVfaCA9IDAsIGxpbmVfcyA9IDAsIGxpbmVfbCA9IDA7Cj4gKyAgICAg ICAgZm9yIChpID0gMDsgaSA8IHMtPmx1bWF3OyBpKyspIHsKPiArICAgICAgICAgICAgY29uc3Qg dWludDhfdCByZ2JyID0gcF9zcmNbMyAqIGldOwo+ICsgICAgICAgICAgICBjb25zdCB1aW50OF90 IHJnYmcgPSBwX3NyY1szICogaSArIDFdOwo+ICsgICAgICAgICAgICBjb25zdCB1aW50OF90IHJn YmIgPSBwX3NyY1szICogaSArIDJdOwo+ICsKPiArICAgICAgICAgICAgUkdCMkhTTCgmSCwgJlMs ICZMLCAxLjAgKiByZ2JyIC8gMjU1LCAxLjAgKiByZ2JnIC8gMjU1LCAxLjAgKgo+IHJnYmIgLyAy NTUpOwo+ICsgICAgICAgICAgICBsaW5lX2ggKz0gKHVpbnQxNl90KShIICsgMC41KTsKPiArICAg ICAgICAgICAgbGluZV9zICs9ICh1aW50OF90KShTICogMTAwICsgMC41KTsKPiArICAgICAgICAg ICAgbGluZV9sICs9ICh1aW50OF90KShMICogMTAwICsgMC41KTsKPiArICAgICAgICB9Cj4gKwo+ ICsgICAgICAgIGRzdF9oW2pdID0gbGluZV9oIC8gcy0+bHVtYXc7Cj4gKyAgICAgICAgZHN0X3Nb al0gPSBsaW5lX3MgLyBzLT5sdW1hdzsKPiArICAgICAgICBkc3RfbFtqXSA9IGxpbmVfbCAvIHMt Pmx1bWF3Owo+ICsKPiArICAgICAgICBwX3NyYyArPSBsc3pfc3JjOwo+ICsgICAgfQo+ICsKPiAr ICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50IGNvbXB1dGVfc2F0X2h1ZV9tZXRy aWNzOChBVkZpbHRlckNvbnRleHQgKmN0eCwgdm9pZCAqYXJnLCBpbnQKPiBqb2JuciwgaW50IG5i X2pvYnMpCj4gIHsKPiAgICAgIGludCBpLCBqOwo+IEBAIC01NjIsMTEgKzcxOSwxMiBAQCBzdGF0 aWMgaW50IGZpbHRlcl9mcmFtZTgoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lCj4gKmluKQo+ ICAgICAgaW50IGFjY3ksIGFjY3UsIGFjY3Y7Cj4gICAgICBpbnQgYWNjc2F0LCBhY2NodWUgPSAw Owo+ICAgICAgaW50IG1lZGh1ZSwgbWF4aHVlOwo+ICsgICAgaW50IGF2Z2ggPSAwLCBhdmdzID0g MCwgYXZnbCA9IDA7Cj4gICAgICBpbnQgdG90eSA9IDAsIHRvdHUgPSAwLCB0b3R2ID0gMCwgdG90 c2F0PTA7Cj4gICAgICBpbnQgdG90aHVlID0gMDsKPiAgICAgIGludCBkaWZ5ID0gMCwgZGlmdSA9 IDAsIGRpZnYgPSAwOwo+ICAgICAgdWludDE2X3QgbWFza3kgPSAwLCBtYXNrdSA9IDAsIG1hc2t2 ID0gMDsKPiAtICAgIGludCByZXQ7Cj4gKwo+ICAgICAgaW50IGZpbHRvdFtGSUxUX05VTUJdID0g ezB9Owo+ICAgICAgQVZGcmFtZSAqcHJldjsKPgo+IEBAIC01ODksMjEgKzc0NywzNCBAQCBzdGF0 aWMgaW50IGZpbHRlcl9mcmFtZTgoQVZGaWx0ZXJMaW5rICpsaW5rLCBBVkZyYW1lCj4gKmluKQo+ Cj4gICAgICBpZiAocy0+b3V0ZmlsdGVyICE9IEZJTFRFUl9OT05FKSB7Cj4gICAgICAgICAgb3V0 ID0gYXZfZnJhbWVfY2xvbmUoaW4pOwo+IC0gICAgICAgIGlmICghb3V0KSB7Cj4gLSAgICAgICAg ICAgIGF2X2ZyYW1lX2ZyZWUoJmluKTsKPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5P TUVNKTsKPiAtICAgICAgICB9Cj4gLSAgICAgICAgcmV0ID0gZmZfaW5saW5rX21ha2VfZnJhbWVf d3JpdGFibGUobGluaywgJm91dCk7Cj4gLSAgICAgICAgaWYgKHJldCA8IDApIHsKPiAtICAgICAg ICAgICAgYXZfZnJhbWVfZnJlZSgmb3V0KTsKPiAtICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgm aW4pOwo+IC0gICAgICAgICAgICByZXR1cm4gcmV0Owo+IC0gICAgICAgIH0KPiArICAgICAgICBh dl9mcmFtZV9tYWtlX3dyaXRhYmxlKG91dCk7Cj4gICAgICB9Cj4KPiAgICAgIGZmX2ZpbHRlcl9l eGVjdXRlKGN0eCwgY29tcHV0ZV9zYXRfaHVlX21ldHJpY3M4LCAmdGRfaHVlc2F0LAo+ICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgRkZNSU4ocy0+Y2hyb21haCwKPiBmZl9maWx0ZXJfZ2V0 X25iX3RocmVhZHMoY3R4KSkpOwo+Cj4gKyAgICAvLyBDYWxjdWxhdGUgSFNMIGluZm9ybWF0aW9u Lgo+ICsgICAgWVVWMlJHQihpbiwgQVZfUElYX0ZNVF9SR0IyNCwgcy0+ZnJhbWVfcmdiKTsKPiAr ICAgIFRocmVhZERhdGFIU0xNZXRyaWNzIHRkX2hzbCA9IHsKPiArICAgICAgICAuc3JjICAgPSBz LT5mcmFtZV9yZ2IsCj4gKyAgICAgICAgLmRzdF9oID0gcy0+aHNsX2gsCj4gKyAgICAgICAgLmRz dF9zID0gcy0+aHNsX3MsCj4gKyAgICAgICAgLmRzdF9sID0gcy0+aHNsX2wsCj4gKyAgICB9Owo+ ICsgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBjb21wdXRlX2hzbCwgJnRkX2hzbCwKPiArICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIEZGTUlOKGxpbmstPmgsIGZmX2ZpbHRlcl9nZXRfbmJf dGhyZWFkcyhjdHgpKSk7Cj4gKwo+ICsgICAgaW50IHN1bWggPSAwLCBzdW1zID0gMCwgc3VtbCA9 IDA7Cj4gKyAgICBmb3IgKGogPSAwOyBqIDwgcy0+bHVtYWg7IGorKykgewo+ICsgICAgICAgIHN1 bWggKz0gcy0+aHNsX2hbal07Cj4gKyAgICAgICAgc3VtcyArPSBzLT5oc2xfc1tqXTsKPiArICAg ICAgICBzdW1sICs9IHMtPmhzbF9sW2pdOwo+ICsgICAgfQo+ICsKPiArICAgIGF2Z2ggPSBzdW1o IC8gcy0+bHVtYWg7Cj4gKyAgICBhdmdzID0gc3VtcyAvIHMtPmx1bWFoOwo+ICsgICAgYXZnbCA9 IHN1bWwgLyBzLT5sdW1haDsKPiArCj4gICAgICAvLyBDYWxjdWxhdGUgbHVtYSBoaXN0b2dyYW0g YW5kIGRpZmZlcmVuY2Ugd2l0aCBwcmV2aW91cyBmcmFtZSBvcgo+IGZpZWxkLgo+ICAgICAgbWVt c2V0KHMtPmhpc3R5LCAwLCBzLT5tYXhzaXplICogc2l6ZW9mKCpzLT5oaXN0eSkpOwo+ICAgICAg Zm9yIChqID0gMDsgaiA8IGxpbmstPmg7IGorKykgewo+IEBAIC03NDYsNiArOTE3LDEwIEBAIHN0 YXRpYyBpbnQgZmlsdGVyX2ZyYW1lOChBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUKPiAqaW4p Cj4gICAgICBTRVRfTUVUQSgiSFVFTUVEIiwgICIlZCIsIG1lZGh1ZSk7Cj4gICAgICBTRVRfTUVU QSgiSFVFQVZHIiwgICIlZyIsIDEuMCAqIHRvdGh1ZSAvIHMtPmNmcyk7Cj4KPiArICAgIFNFVF9N RVRBKCJIQVZHIiwgICAgIiVkIiwgYXZnaCk7Cj4gKyAgICBTRVRfTUVUQSgiU0FWRyIsICAgICIl ZCIsIGF2Z3MpOwo+ICsgICAgU0VUX01FVEEoIkxBVkciLCAgICAiJWQiLCBhdmdsKTsKPiArCj4g ICAgICBTRVRfTUVUQSgiWURJRiIsICAgICIlZyIsIDEuMCAqIGRpZnkgLyBzLT5mcyk7Cj4gICAg ICBTRVRfTUVUQSgiVURJRiIsICAgICIlZyIsIDEuMCAqIGRpZnUgLyBzLT5jZnMpOwo+ICAgICAg U0VUX01FVEEoIlZESUYiLCAgICAiJWciLCAxLjAgKiBkaWZ2IC8gcy0+Y2ZzKTsKPiBAQCAtNzkz LDYgKzk2OCw3IEBAIHN0YXRpYyBpbnQgZmlsdGVyX2ZyYW1lMTYoQVZGaWx0ZXJMaW5rICpsaW5r LCBBVkZyYW1lCj4gKmluKQo+ICAgICAgaW50IGFjY3ksIGFjY3UsIGFjY3Y7Cj4gICAgICBpbnQg YWNjc2F0LCBhY2NodWUgPSAwOwo+ICAgICAgaW50IG1lZGh1ZSwgbWF4aHVlOwo+ICsgICAgaW50 IGF2Z2ggPSAwLCBhdmdzID0gMCwgYXZnbCA9IDA7Cj4gICAgICBpbnQ2NF90IHRvdHkgPSAwLCB0 b3R1ID0gMCwgdG90diA9IDAsIHRvdHNhdD0wOwo+ICAgICAgaW50NjRfdCB0b3RodWUgPSAwOwo+ ICAgICAgaW50NjRfdCBkaWZ5ID0gMCwgZGlmdSA9IDAsIGRpZnYgPSAwOwo+IEBAIC04MDAsNyAr OTc2LDcgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUxNihBVkZpbHRlckxpbmsgKmxpbmssIEFW RnJhbWUKPiAqaW4pCj4KPiAgICAgIGludCBmaWx0b3RbRklMVF9OVU1CXSA9IHswfTsKPiAgICAg IEFWRnJhbWUgKnByZXY7Cj4gLSAgICBpbnQgcmV0Owo+ICsKPiAgICAgIEFWRnJhbWUgKnNhdCA9 IHMtPmZyYW1lX3NhdDsKPiAgICAgIEFWRnJhbWUgKmh1ZSA9IHMtPmZyYW1lX2h1ZTsKPiAgICAg IGNvbnN0IHVpbnQxNl90ICpwX3NhdCA9ICh1aW50MTZfdCAqKXNhdC0+ZGF0YVswXTsKPiBAQCAt ODIwLDIxICs5OTYsMzQgQEAgc3RhdGljIGludCBmaWx0ZXJfZnJhbWUxNihBVkZpbHRlckxpbmsg KmxpbmssIEFWRnJhbWUKPiAqaW4pCj4KPiAgICAgIGlmIChzLT5vdXRmaWx0ZXIgIT0gRklMVEVS X05PTkUpIHsKPiAgICAgICAgICBvdXQgPSBhdl9mcmFtZV9jbG9uZShpbik7Cj4gLSAgICAgICAg aWYgKCFvdXQpIHsKPiAtICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmaW4pOwo+IC0gICAgICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+IC0gICAgICAgIH0KPiAtICAgICAgICByZXQg PSBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShsaW5rLCAmb3V0KTsKPiAtICAgICAgICBp ZiAocmV0IDwgMCkgewo+IC0gICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZvdXQpOwo+IC0gICAg ICAgICAgICBhdl9mcmFtZV9mcmVlKCZpbik7Cj4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g LSAgICAgICAgfQo+ICsgICAgICAgIGF2X2ZyYW1lX21ha2Vfd3JpdGFibGUob3V0KTsKPiAgICAg IH0KPgo+ICAgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBjb21wdXRlX3NhdF9odWVfbWV0cmlj czE2LCAmdGRfaHVlc2F0LAo+ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgRkZNSU4ocy0+ Y2hyb21haCwKPiBmZl9maWx0ZXJfZ2V0X25iX3RocmVhZHMoY3R4KSkpOwo+Cj4gKyAgICAvLyBD YWxjdWxhdGUgSFNMIGluZm9ybWF0aW9uLgo+ICsgICAgWVVWMlJHQihpbiwgQVZfUElYX0ZNVF9S R0IyNCwgcy0+ZnJhbWVfcmdiKTsKPiArICAgIFRocmVhZERhdGFIU0xNZXRyaWNzIHRkX2hzbCA9 IHsKPiArICAgICAgICAuc3JjICAgPSBzLT5mcmFtZV9yZ2IsCj4gKyAgICAgICAgLmRzdF9oID0g cy0+aHNsX2gsCj4gKyAgICAgICAgLmRzdF9zID0gcy0+aHNsX3MsCj4gKyAgICAgICAgLmRzdF9s ID0gcy0+aHNsX2wsCj4gKyAgICB9Owo+ICsgICAgZmZfZmlsdGVyX2V4ZWN1dGUoY3R4LCBjb21w dXRlX2hzbCwgJnRkX2hzbCwKPiArICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIEZGTUlOKGxp bmstPmgsIGZmX2ZpbHRlcl9nZXRfbmJfdGhyZWFkcyhjdHgpKSk7Cj4gKwo+ICsgICAgaW50IHN1 bWggPSAwLCBzdW1zID0gMCwgc3VtbCA9IDA7Cj4gKyAgICBmb3IgKGogPSAwOyBqIDwgcy0+bHVt YWg7IGorKykgewo+ICsgICAgICAgIHN1bWggKz0gcy0+aHNsX2hbal07Cj4gKyAgICAgICAgc3Vt cyArPSBzLT5oc2xfc1tqXTsKPiArICAgICAgICBzdW1sICs9IHMtPmhzbF9sW2pdOwo+ICsgICAg fQo+ICsKPiArICAgIGF2Z2ggPSBzdW1oIC8gcy0+bHVtYWg7Cj4gKyAgICBhdmdzID0gc3VtcyAv IHMtPmx1bWFoOwo+ICsgICAgYXZnbCA9IHN1bWwgLyBzLT5sdW1haDsKPiArCj4gICAgICAvLyBD YWxjdWxhdGUgbHVtYSBoaXN0b2dyYW0gYW5kIGRpZmZlcmVuY2Ugd2l0aCBwcmV2aW91cyBmcmFt ZSBvcgo+IGZpZWxkLgo+ICAgICAgbWVtc2V0KHMtPmhpc3R5LCAwLCBzLT5tYXhzaXplICogc2l6 ZW9mKCpzLT5oaXN0eSkpOwo+ICAgICAgZm9yIChqID0gMDsgaiA8IGxpbmstPmg7IGorKykgewo+ IEBAIC05NzIsNiArMTE2MSwxMCBAQCBzdGF0aWMgaW50IGZpbHRlcl9mcmFtZTE2KEFWRmlsdGVy TGluayAqbGluaywgQVZGcmFtZQo+ICppbikKPiAgICAgIFNFVF9NRVRBKCJIVUVNRUQiLCAgIiVk IiwgbWVkaHVlKTsKPiAgICAgIFNFVF9NRVRBKCJIVUVBVkciLCAgIiVnIiwgMS4wICogdG90aHVl IC8gcy0+Y2ZzKTsKPgo+ICsgICAgU0VUX01FVEEoIkhBVkciLCAgICAiJWQiLCBhdmdoKTsKPiAr ICAgIFNFVF9NRVRBKCJTQVZHIiwgICAgIiVkIiwgYXZncyk7Cj4gKyAgICBTRVRfTUVUQSgiTEFW RyIsICAgICIlZCIsIGF2Z2wpOwo+ICsKPiAgICAgIFNFVF9NRVRBKCJZRElGIiwgICAgIiVnIiwg MS4wICogZGlmeSAvIHMtPmZzKTsKPiAgICAgIFNFVF9NRVRBKCJVRElGIiwgICAgIiVnIiwgMS4w ICogZGlmdSAvIHMtPmNmcyk7Cj4gICAgICBTRVRfTUVUQSgiVkRJRiIsICAgICIlZyIsIDEuMCAq IGRpZnYgLyBzLT5jZnMpOwo+IEBAIC0xMDA5LDYgKzEyMDIsNyBAQCBzdGF0aWMgY29uc3QgQVZG aWx0ZXJQYWQgc2lnbmFsc3RhdHNfaW5wdXRzW10gPSB7Cj4gICAgICB7Cj4gICAgICAgICAgLm5h bWUgICAgICAgICAgID0gImRlZmF1bHQiLAo+ICAgICAgICAgIC50eXBlICAgICAgICAgICA9IEFW TUVESUFfVFlQRV9WSURFTywKPiArICAgICAgICAuY29uZmlnX3Byb3BzICAgPSBjb25maWdfaW5w dXQsCj4gICAgICAgICAgLmZpbHRlcl9mcmFtZSAgID0gZmlsdGVyX2ZyYW1lLAo+ICAgICAgfSwK PiAgfTsKPiAtLQo+IDIuMjQuMyAoQXBwbGUgR2l0LTEyOCkKPgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlz dAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K