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 924104A8CB for ; Thu, 18 Apr 2024 21:30:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F20668D2E9; Fri, 19 Apr 2024 00:30:42 +0300 (EEST) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6B2C368C8CD for ; Fri, 19 Apr 2024 00:30:35 +0300 (EEST) Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-346b96f1483so789657f8f.1 for ; Thu, 18 Apr 2024 14:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713475835; x=1714080635; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bg6R3OrAmYFeuRGe7KVg1yI7l3wq+dsgnIhU9YD3qSE=; b=QiADvrEH4fH+aKii/O1Tf0MnVFLwpg5eiYf46H0mOrI2ETD+wTMXo6JbfcpSHdZXm8 XbtGdDtWsUD/2+pHvhumljV7hINaUneBxZmzM3So9NW84I2TWGAyTQ/pwkdZZli6XgrH Xt/DbWGGSN7eY1Jlf8ZfY5wHEs2XPq68m6DDhXmAfhV5uVTfpMTs7J6uR6jxjEwf/ueh mTW0I3DO4gX8AKuLuqhGu1NZkUR5bLFlK0PtiuSZF/XUComc6cNclIJEkv1X87a1DX3k PEtKTX7ROkVJijaJS9jgAvmhS/pmFWa1qGYxsHVMbjzJm1ywP1k3yMJ5b9AOm+cbRJ8n dISg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713475835; x=1714080635; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bg6R3OrAmYFeuRGe7KVg1yI7l3wq+dsgnIhU9YD3qSE=; b=fF/vnx5tovjL2Ez9y646vaIeE/OYDNVMFL8veyQ0FGDk7Nf1H0UjP6X4zL0e5z1tfs k++5h7+Ay/ZCUDUmvQzzN06BP/nvl7SO/IVLLMuv4nhT44AzT9xGfvlQLK2aOWtbid68 SxgTb23TNA+P4/EjpBNKdvs7M1+gLqon1X5jhsuft+ZTy8i/WHo5kdWFzmf69PyPb1zG W5d3eKy7TEEcWT50b8oExD6mQasbKAqfqQibptZEVeskuPu5L+AWgDK4byr6EIW4u4Sp tcLDUIKdtZAIYdecAYGvl07QcERiCUrtlvkq+FGl9sf7IcY9lshNIT8bxB7sYg6mQzeo QDFQ== X-Gm-Message-State: AOJu0Yxid34/byG+kluiAfjm8sTSAip1z1L2d7Vff09OHL5mcpmxancn lqAsrm+55S8X4lJxG6+J0RRT9FTMFimHMybFC7u1TDQ28eP1pEdP7CoT0g== X-Google-Smtp-Source: AGHT+IFfZWCiyiGxTm/GgXy1Si02IMawPlF3bne5v3nc1R6C4VtfvmDbOOcuOjgNSooJSXqP14LSAA== X-Received: by 2002:adf:ef07:0:b0:33e:c91b:9083 with SMTP id e7-20020adfef07000000b0033ec91b9083mr2330490wro.16.1713475834409; Thu, 18 Apr 2024 14:30:34 -0700 (PDT) Received: from [192.168.178.30] (dynamic-2a01-0c23-6110-d700-bc08-065d-5f59-2a5b.c23.pool.telefonica.de. [2a01:c23:6110:d700:bc08:65d:5f59:2a5b]) by smtp.gmail.com with ESMTPSA id y18-20020a5d4ad2000000b0034a0d3c0715sm2569904wrs.50.2024.04.18.14.30.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 18 Apr 2024 14:30:33 -0700 (PDT) From: epirat07@gmail.com To: FFmpeg development discussions and patches Date: Thu, 18 Apr 2024 23:30:32 +0200 X-Mailer: MailMate (1.14r6022) Message-ID: In-Reply-To: References: MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH v2 01/27] avcodec/threadprogress: Add new API for frame-threaded progress 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: CgpPbiAxOCBBcHIgMjAyNCwgYXQgMjI6NDAsIEFuZHJlYXMgUmhlaW5oYXJkdCB3cm90ZToKCj4g QW5kcmVhcyBSaGVpbmhhcmR0Ogo+PiBUaGUgQVBJIGlzIHNpbWlsYXIgdG8gdGhlIFRocmVhZEZy YW1lIEFQSSwgd2l0aCB0aGUgZXhjZXB0aW9uCj4+IHRoYXQgaXQgbm8gbG9uZ2VyIGhhcyBhbiBp bmNsdWRlZCBBVkZyYW1lIGFuZCB0aGF0IGl0IGhhcyBpdHMKPj4gb3duIG11dGV4ZXMgYW5kIGNv bmRpdGlvbiB2YXJpYWJsZXMgd2hpY2ggbWFrZXMgaXQgbW9yZSBpbmRlcGVuZGVudAo+PiBvZiBw dGhyZWFkX2ZyYW1lLmMuIE9uZSBjYW4gd2FpdCBvbiBhbnl0aGluZyB2aWEgYSBUaHJlYWRQcm9n cmVzcy4KPj4gT25lIGp1c3QgaGFzIHRvIGVuc3VyZSB0aGF0IHRoZSBsaWZldGltZSBvZiB0aGUg b2JqZWN0IGNvbnRhaW5pbmcKPj4gdGhlIFRocmVhZFByb2dyZXNzIGlzIGxvbmcgZW5vdWdoLiBU aGlzIHdpbGwgdHlwaWNhbGx5IGJlIHNvbHZlZAo+PiBieSBwdXR0aW5nIGEgVGhyZWFkUHJvZ3Jl c3MgaW4gYSByZWZjb3VudGVkIHN0cnVjdHVyZSB0aGF0IGlzCj4+IHNoYXJlZCBiZXR3ZWVuIHRo cmVhZHMuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVhcy5y aGVpbmhhcmR0QG91dGxvb2suY29tPgo+PiAtLS0KPj4gTm93IGluY2x1ZGluZyBpdHMgb3duIG11 dGV4IGFuZCBjb25kaXRpb24gdmFyaWFibGUuIEhvcGVmdWxseQo+PiBubyBzeXN0ZW0gaGFzIGNv bnN0cmFpbnRzIG9uIHRoZSBudW1iZXIgb2YgbXV0ZXhlcyBhbmQgY29uZGl0aW9uCj4+IHZhcmlh YmxlcyBpdCBzdXBwb3J0cy4KPj4KPj4gIGxpYmF2Y29kZWMvdGhyZWFkcHJvZ3Jlc3MuYyB8IDcz ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBsaWJhdmNvZGVjL3RocmVhZHByb2dy ZXNzLmggfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAyIGZp bGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy90aHJlYWRwcm9ncmVzcy5jCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy90aHJlYWRwcm9ncmVzcy5oCj4+Cj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3RocmVhZHBy b2dyZXNzLmMgYi9saWJhdmNvZGVjL3RocmVhZHByb2dyZXNzLmMKPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMC4uZGQyYTRkMjMzNgo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL2xpYmF2Y29kZWMvdGhyZWFkcHJvZ3Jlc3MuYwo+PiBAQCAtMCwwICsxLDczIEBACj4+ ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAyMDIyIEFuZHJlYXMgUmhlaW5oYXJkdCA8YW5kcmVh cy5yaGVpbmhhcmR0QG91dGxvb2suY29tPgo+PiArICoKPj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEZGbXBlZy4KPj4gKyAqCj4+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+ICsgKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPj4gKyAqIHZlcnNp b24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgo+PiArICoKPj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4gKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4+ICsgKiBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+PiArICoKPj4g KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPj4gKyAq Lwo+PiArCj4+ICsjaW5jbHVkZSA8bGltaXRzLmg+Cj4+ICsjaW5jbHVkZSA8c3RkYXRvbWljLmg+ Cj4+ICsKPj4gKyNpbmNsdWRlICJwdGhyZWFkX2ludGVybmFsLmgiCj4+ICsjaW5jbHVkZSAidGhy ZWFkcHJvZ3Jlc3MuaCIKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgo+PiAr Cj4+ICtERUZJTkVfT0ZGU0VUX0FSUkFZKFRocmVhZFByb2dyZXNzLCB0aHJlYWRfcHJvZ3Jlc3Ms IGluaXQsCj4+ICsgICAgICAgICAgICAgICAgICAgIChvZmZzZXRvZihUaHJlYWRQcm9ncmVzcywg cHJvZ3Jlc3NfbXV0ZXgpKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgKG9mZnNldG9mKFRocmVh ZFByb2dyZXNzLCBwcm9ncmVzc19jb25kKSkpOwo+PiArCj4+ICthdl9jb2xkIGludCBmZl90aHJl YWRfcHJvZ3Jlc3NfaW5pdChUaHJlYWRQcm9ncmVzcyAqcHJvLCBpbnQgaW5pdF9tb2RlKQo+PiAr ewo+PiArICAgIGF0b21pY19pbml0KCZwcm8tPnByb2dyZXNzLCBpbml0X21vZGUgPyAtMSA6IElO VF9NQVgpOwo+PiArICAgIGlmICghaW5pdF9tb2RlKSB7Cj4+ICsgICAgICAgIHByby0+aW5pdCA9 IDA7Cj4+ICsgICAgICAgIHJldHVybiAwOwo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gZmZfcHRo cmVhZF9pbml0KHBybywgdGhyZWFkX3Byb2dyZXNzX29mZnNldHMpOwo+PiArfQo+PiArCj4+ICth dl9jb2xkIHZvaWQgZmZfdGhyZWFkX3Byb2dyZXNzX2Rlc3Ryb3koVGhyZWFkUHJvZ3Jlc3MgKnBy bykKPj4gK3sKPj4gKyAgICBmZl9wdGhyZWFkX2ZyZWUocHJvLCB0aHJlYWRfcHJvZ3Jlc3Nfb2Zm c2V0cyk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZmZfdGhyZWFkX3Byb2dyZXNzX3JlcG9ydChUaHJl YWRQcm9ncmVzcyAqcHJvLCBpbnQgbikKPj4gK3sKPj4gKyAgICBpZiAoYXRvbWljX2xvYWRfZXhw bGljaXQoJnByby0+cHJvZ3Jlc3MsIG1lbW9yeV9vcmRlcl9yZWxheGVkKSA+PSBuKQo+PiArICAg ICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICBhdG9taWNfc3RvcmVfZXhwbGljaXQoJnByby0+cHJv Z3Jlc3MsIG4sIG1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKPj4gKwo+PiArICAgIHB0aHJlYWRfbXV0 ZXhfbG9jaygmcHJvLT5wcm9ncmVzc19tdXRleCk7Cj4+ICsgICAgcHRocmVhZF9jb25kX2Jyb2Fk Y2FzdCgmcHJvLT5wcm9ncmVzc19jb25kKTsKPj4gKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygm cHJvLT5wcm9ncmVzc19tdXRleCk7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZmZfdGhyZWFkX3Byb2dy ZXNzX2F3YWl0KGNvbnN0IFRocmVhZFByb2dyZXNzICpwcm9fYywgaW50IG4pCj4+ICt7Cj4+ICsg ICAgLyogQ2FzdGluZyBjb25zdCBhd2F5IGhlcmUgaXMgc2FmZSwgYmVjYXVzZSB3ZSBvbmx5IHJl YWQgZnJvbSBwcm9ncmVzcwo+PiArICAgICAqIGFuZCB3aWxsIGxlYXZlIHByb19jIGluIHRoZSBz YW1lIHN0YXRlIHVwb24gbGVhdmluZyB0aGUgZnVuY3Rpb24KPj4gKyAgICAgKiBhcyBpdCBoYWQg YXQgdGhlIGJlZ2lubmluZy4gKi8KPj4gKyAgICBUaHJlYWRQcm9ncmVzcyAqcHJvID0gKFRocmVh ZFByb2dyZXNzKilwcm9fYzsKPj4gKwo+PiArICAgIGlmIChhdG9taWNfbG9hZF9leHBsaWNpdCgm cHJvLT5wcm9ncmVzcywgbWVtb3J5X29yZGVyX2FjcXVpcmUpID49IG4pCj4+ICsgICAgICAgIHJl dHVybjsKPj4gKwo+PiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmcHJvLT5wcm9ncmVzc19tdXRl eCk7Cj4+ICsgICAgd2hpbGUgKGF0b21pY19sb2FkX2V4cGxpY2l0KCZwcm8tPnByb2dyZXNzLCBt ZW1vcnlfb3JkZXJfcmVsYXhlZCkgPCBuKQo+PiArICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgm cHJvLT5wcm9ncmVzc19jb25kLCAmcHJvLT5wcm9ncmVzc19tdXRleCk7Cj4+ICsgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJnByby0+cHJvZ3Jlc3NfbXV0ZXgpOwo+PiArfQo+PiBkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy90aHJlYWRwcm9ncmVzcy5oIGIvbGliYXZjb2RlYy90aHJlYWRwcm9ncmVz cy5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAuLjc4NjgwMmNi ZjEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWJhdmNvZGVjL3RocmVhZHByb2dyZXNzLmgK Pj4gQEAgLTAsMCArMSw5MSBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAoYykgMjAyMiBBbmRy ZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KPj4gKyAqCj4+ ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+ICsgKgo+PiArICogRkZtcGVnIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+PiArICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyCj4+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gKyAqCj4+ICsgKiBGRm1wZWcgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQo+PiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KPj4gKyAqCj4+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+ICsgKiBMaWNlbnNlIGFsb25nIHdp dGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4+ICsgKiBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBBVkNPREVDX1RIUkVBRFBS T0dSRVNTX0gKPj4gKyNkZWZpbmUgQVZDT0RFQ19USFJFQURQUk9HUkVTU19ICj4+ICsKPj4gKy8q Kgo+PiArICogVGhyZWFkUHJvZ3Jlc3MgaXMgYW4gQVBJIHRvIGVhc2lseSBub3RpZnkgb3RoZXIg dGhyZWFkcyBhYm91dCBwcm9ncmVzcwo+PiArICogb2YgYW55IGtpbmQgYXMgbG9uZyBhcyBpdCBj YW4gYmUgcGFja2FnZWQgaW50byBhbiBpbnQgYW5kIGlzIGNvbnNpc3RlbnQKPj4gKyAqIHdpdGgg dGhlIG5hdHVyYWwgb3JkZXJpbmcgb2YgaW50ZWdlcnMuCj4+ICsgKgo+PiArICogRWFjaCBpbml0 aWFsaXplZCBUaHJlYWRQcm9ncmVzcyBjYW4gYmUgaW4gb25lIG9mIHR3byBtb2RlczogTm8tb3Ag bW9kZQo+PiArICogb3Igb3JkaW5hcnkgbW9kZS4gSW4gdGhlIGZvcm1lciBtb2RlLCBmZl90aHJl YWRfcmVwb3J0X3Byb2dyZXNzKCkgYW5kCj4+ICsgKiBmZl90aHJlYWRfYXdhaXRfcHJvZ3Jlc3Mo KSBhcmUgbm8tb3BzIHRvIHNpbXBseSBzdXBwb3J0IHVzZWNhc2VzIGxpa2UKPj4gKyAqIG5vbi1m cmFtZS10aHJlYWRpbmcuIE9ubHkgaW4gdGhlIGxhdHRlciBjYXNlIHBlcmZvcm0gdGhlc2UgZnVu Y3Rpb25zCj4+ICsgKiB3aGF0IHRoZWlyIG5hbWUgYWxyZWFkeSBpbXBsaWVzLgo+PiArICovCj4+ ICsKPj4gKyNpbmNsdWRlIDxsaW1pdHMuaD4KPj4gKyNpbmNsdWRlIDxzdGRhdG9taWMuaD4KPj4g KyNpbmNsdWRlICJsaWJhdnV0aWwvdGhyZWFkLmgiCj4+ICsKPj4gKy8qKgo+PiArICogVGhpcyBz dHJ1Y3Qgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgb3BhcXVlIGJ5IHVzZXJzLgo+PiArICovCj4+ICt0 eXBlZGVmIHN0cnVjdCBUaHJlYWRQcm9ncmVzcyB7Cj4+ICsgICAgYXRvbWljX2ludCBwcm9ncmVz czsKPj4gKyAgICB1bnNpZ25lZCAgIGluaXQ7Cj4+ICsgICAgQVZNdXRleCBwcm9ncmVzc19tdXRl eDsKPj4gKyAgICBBVkNvbmQgIHByb2dyZXNzX2NvbmQ7Cj4+ICt9IFRocmVhZFByb2dyZXNzOwo+ PiArCj4+ICsvKioKPj4gKyAqIEluaXRpYWxpemUgYSBUaHJlYWRQcm9ncmVzcy4KPj4gKyAqCj4+ ICsgKiBAcGFyYW0gaW5pdF9tb2RlIElmIHplcm8sIHRoZSBUaHJlYWRQcm9ncmVzcyB3aWxsIGJl IGluaXRpYWxpemVkIHNvIHRoYXQKPj4gKyAqICAgICAgICAgICAgICAgICAgdG8gYmUgaW4gbm8t b3AgbW9kZSBhcyBkZXNjcmliZWQgYWJvdmUuIE90aGVyd2lzZQoKTml0OiBTdHJheSDigJ5PdGhl cndpc2XigJwgaGVyZSBhdCB0aGUgZW5kPwoKPj4gKyAqLwo+PiAraW50IGZmX3RocmVhZF9wcm9n cmVzc19pbml0KFRocmVhZFByb2dyZXNzICpwcm8sIGludCBpbml0X21vZGUpOwo+PiArCj4+ICsv KioKPj4gKyAqIERlc3Ryb3kgYSBUaHJlYWRQcm9ncmVzcy4gQ2FuIGJlIGNhbGxlZCBvbiBhIFRo cmVhZFByb2dyZXNzIHRoYXQKPj4gKyAqIGhhcyBuZXZlciBiZWVuIGluaXRpYWxpemVkIHByb3Zp ZGVkIHRoYXQgdGhlIFRocmVhZFByb2dyZXNzIHN0cnVjdAo+PiArICogaGFzIGJlZW4gaW5pdGlh bGx5IHplcm9lZC4gTXVzdCBiZSBjYWxsZWQgZXZlbiBpZiBmZl90aHJlYWRfcHJvZ3Jlc3NfaW5p dCgpCj4+ICsgKiBmYWlsZWQuCj4+ICsgKi8KPj4gK3ZvaWQgZmZfdGhyZWFkX3Byb2dyZXNzX2Rl c3Ryb3koVGhyZWFkUHJvZ3Jlc3MgKnBybyk7Cj4+ICsKPj4gKy8qKgo+PiArICogUmVzZXQgdGhl IFRocmVhZFByb2dyZXNzJ3MgcHJvZ3Jlc3MgcHJvZ3Jlc3MgY291bnRlcjsgbXVzdCBvbmx5IGJl IGNhbGxlZAoKSSB0aGluayB5b3UgY2FuIHVzZSBhIHByb3BlciByZWZlcmVuY2UgaGVyZTogOjpU aHJlYWRQcm9ncmVzcy5wcm9ncmVzcwoKPj4gKyAqIGlmIGl0IGlzIG5vdCBpbiB1c2UgaW4gYW55 IHdheSAoZS5nLiBubyB0aHJlYWQgbWF5IHdhaXQgb24gaXQgdmlhCj4+ICsgKiBmZl90aHJlYWRf cHJvZ3Jlc3NfYXdhaXQoKSkuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBmZl90aHJl YWRfcHJvZ3Jlc3NfcmVzZXQoVGhyZWFkUHJvZ3Jlc3MgKnBybykKPj4gK3sKPj4gKyAgICBhdG9t aWNfaW5pdCgmcHJvLT5wcm9ncmVzcywgcHJvLT5pbml0ID8gLTEgOiBJTlRfTUFYKTsKPj4gK30K Pj4gKwo+PiArLyoqCj4+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaW4gbm8tb3AgbW9k ZTsgb3RoZXJ3aXNlIGl0IG5vdGlmaWVzCj4+ICsgKiBvdGhlciB0aHJlYWRzIHRoYXQgYSBjZXJ0 YWluIGxldmVsIG9mIHByb2dyZXNzIGhhcyBiZWVuIHJlYWNoZWQuCj4+ICsgKiBMYXRlciBjYWxs cyB3aXRoIGxvd2VyIHZhbHVlcyBvZiBwcm9ncmVzcyBoYXZlIG5vIGVmZmVjdC4KPj4gKyAqLwo+ PiArdm9pZCBmZl90aHJlYWRfcHJvZ3Jlc3NfcmVwb3J0KFRocmVhZFByb2dyZXNzICpwcm8sIGlu dCBwcm9ncmVzcyk7Cj4+ICsKPj4gKy8qKgo+PiArICogVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9w IGluIG5vLW9wIG1vZGU7IG90aGVyd2lzZSBpdCB3YWl0cwo+PiArICogdW50aWwgb3RoZXIgdGhy ZWFkcyBoYXZlIHJlYWNoZWQgYSBjZXJ0YWluIGxldmVsIG9mIHByb2dyZXNzOgo+PiArICogVGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiBhZnRlciBhbm90aGVyIHRocmVhZCBoYXMgY2FsbGVkCj4+ ICsgKiBmZl90aHJlYWRfcHJvZ3Jlc3NfcmVwb3J0KCkgd2l0aCB0aGUgc2FtZSBvciBoaWdoZXIg dmFsdWUgZm9yIHByb2dyZXNzLgo+PiArICovCj4+ICt2b2lkIGZmX3RocmVhZF9wcm9ncmVzc19h d2FpdChjb25zdCBUaHJlYWRQcm9ncmVzcyAqcHJvLCBpbnQgcHJvZ3Jlc3MpOwo+PiArCj4+ICsj ZW5kaWYgLyogQVZDT0RFQ19USFJFQURQUk9HUkVTU19IICovCj4KPiBXaWxsIGFwcGx5IHRoaXMg cGF0Y2hzZXQgdG9tb3Jyb3cgdW5sZXNzIHRoZXJlIGFyZSBvYmplY3Rpb25zLgo+Cj4gLSBBbmRy ZWFzCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlz dApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0 aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJz Y3JpYmUiLgo=