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 7D6D746EF0 for ; Wed, 19 Jul 2023 13:19:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2B4CD68C25E; Wed, 19 Jul 2023 16:19:50 +0300 (EEST) Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2491C68BE51 for ; Wed, 19 Jul 2023 16:19:43 +0300 (EEST) Received: by mail-lj1-f177.google.com with SMTP id 38308e7fff4ca-2b701e1c80fso101771571fa.2 for ; Wed, 19 Jul 2023 06:19:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689772782; x=1690377582; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=fTBDhHsh4CXn/mAmtiI03Z9cxuq8IfodLdVEpyjU29o=; b=YmPktROZrh/72Z2cTGsBmFBD/nQp8SHF84yQkdkAErp4RnO1L8fB3Cy6+OjchECz8g EfVUjqHHJ9HlgxmHng4QAVGl7LrUS8eCf/E8tHSYEXzCtx3IZ/YjkHjOQrBqoZ0KPPJm mMakK2ZlGRbiPX9rBCNn4yXaO1ppnKYgzKsQoPSOIACZPbIMzdkOFs97ZjemLPZXcGQV hyMqnOCDj2o095I3I6Nwd2ATkp2frmQOFgVpibcX+ELtYbjYTkMZGIRpxRh8maB19K+8 /16aJJinnaj7Q6G32gi/c1wxwJhF7mnwe4qdKcineV3/TZ/rMd+2HnH2OLGNs4AORXrE OK+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689772782; x=1690377582; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fTBDhHsh4CXn/mAmtiI03Z9cxuq8IfodLdVEpyjU29o=; b=UwTGlMNu04Zc8x5WTPXOGV8Xj/QrLCwDQaI4FS3hHAZROeX+ZVGfyyyGQSfBN9lKuJ CZ1tJFK1nBzPQkiF3rQLJoqaHsngi5WXMTzUqONjn699XUWogMUDKYOo99x4iF5DJRHX H//B5Xl7y5EMH6RgCBWwhyKd+s7LWsMl3LXyv7dxLpHiJQRXWQCYCi53zsKSN2r+RBif quGCoL54T9gSnwfYBISj03c1j0Wj3QIRfQKyJJrgrzZrPpDtS5CiC2oB6iuD6krzsdeU MYHjlOVkxKo7WPgtbL5puy3nCCOwUtgW0SucbcQg9Jm6ealVXlIIYpYrxJZDto/0RPbE NTZg== X-Gm-Message-State: ABy/qLYTwKv0s49CsdNlmj8Q3gRNKJ97S+JVjD5u2T0lPbOlgmw7Mmh3 QMPu+XU7glhA8MVRpsOQWt/AQbVaQOuBJ+Bib/CpoTwQALPaRg== X-Google-Smtp-Source: APBJJlFNCh9A6RX+3JMqIdMoui8EevciNYaDKr6m87xkJVJq6dvDk5OnTbh8U4cDMYKlKhX2nR871cjmJshZqjiCe5g= X-Received: by 2002:a2e:95d1:0:b0:2b6:e623:7b57 with SMTP id y17-20020a2e95d1000000b002b6e6237b57mr4336845ljh.25.1689772781601; Wed, 19 Jul 2023 06:19:41 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nuo Mi Date: Wed, 19 Jul 2023 21:19:31 +0800 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v3] vvcdec: add thread executor 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: T24gV2VkLCBKdWwgMTksIDIwMjMgYXQgOToxM+KAr1BNIE51byBNaSA8bnVvbWkyMDIxQGdtYWls LmNvbT4gd3JvdGU6Cgo+IFRoZSBleGVjdXRvciBkZXNpZ24gcGF0dGVybiB3YXMgaW5yb2R1Y2Vk IGJ5IGphdmEKPiA8Cj4gaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vZW4vamF2YS9qYXZhc2UvMjAv ZG9jcy9hcGkvamF2YS5iYXNlL2phdmEvdXRpbC9jb25jdXJyZW50L0V4ZWN1dG9yLmh0bWwKPiA+ Cj4gaXQgYWxzbyBhZGFwdGVkIGJ5IHB5dGhvbgo+IDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8z L2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLmh0bWw+Cj4gQ29tcGFyZWQgdG8gaGFuZGNyYWZ0 ZWQgdGhyZWFkIHBvb2wgbWFuYWdlbWVudCwgaXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZQo+IHRo cmVhZCBjb2RlLgo+IC0tLQo+ICBsaWJhdnV0aWwvTWFrZWZpbGUgICB8ICAgMiArCj4gIGxpYmF2 dXRpbC9leGVjdXRvci5jIHwgMjAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgbGliYXZ1dGlsL2V4ZWN1dG9yLmggfCAgNjcgKysrKysrKysrKysrKysrCj4g IDMgZmlsZXMgY2hhbmdlZCwgMjcwIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2dXRpbC9leGVjdXRvci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvZXhl Y3V0b3IuaAo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9N YWtlZmlsZQo+IGluZGV4IGJkOWM2ZjllMzIuLmI0MGFhY2RkMDYgMTAwNjQ0Cj4gLS0tIGEvbGli YXZ1dGlsL01ha2VmaWxlCj4gKysrIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4gQEAgLTMxLDYgKzMx LDcgQEAgSEVBREVSUyA9IGFkbGVyMzIuaAo+ICAgICAgICAgICAgICAgIFwKPiAgICAgICAgICAg IGVuY3J5cHRpb25faW5mby5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ICAgICAgICAgICAgZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAgICBldmFsLmggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAg ICAgIGV4ZWN1dG9yLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICAgICAgICAgICAgZmlmby5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gICAgICAgICAgICBmaWxlLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAg ICAgICAgIGZyYW1lLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+IEBAIC0xMjYsNiArMTI3LDcgQEAgT0JKUyA9IGFkbGVyMzIubwo+ICAg ICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGVuY3J5cHRpb25faW5mby5vICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgZXJyb3IubyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gICAgICAgICBldmFsLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIGV4ZWN1dG9yLm8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgICAgZmlmby5v ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gICAgICAgICBmaWxlLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGZpbGVfb3Blbi5vICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IGRpZmYgLS1naXQg YS9saWJhdnV0aWwvZXhlY3V0b3IuYyBiL2xpYmF2dXRpbC9leGVjdXRvci5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi45ODIzZmMzZDVkCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2xpYmF2dXRpbC9leGVjdXRvci5jCj4gQEAgLTAsMCArMSwyMDEgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IChDKSAyMDIzIE51byBNaQo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0 LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNBCj4gKyAqLwo+ICsjaW5j bHVkZSAiaW50ZXJuYWwuaCIKPiArI2luY2x1ZGUgIm1lbS5oIgo+ICsjaW5jbHVkZSAidGhyZWFk LmgiCj4gKwo+ICsjaW5jbHVkZSAiZXhlY3V0b3IuaCIKPiArCj4gKyNpZiAhSEFWRV9USFJFQURT Cj4gKyNkZWZpbmUgcHRocmVhZF9jcmVhdGUodCwgYSwgcywgYXIpICAgICAwCj4gKyNkZWZpbmUg cHRocmVhZF9qb2luKHQsIHIpICAgICAgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ICsKPiArI2Rl ZmluZSBwdGhyZWFkX2NvbmRfaW5pdChjLCBhKSAgICAgICAgIDAKPiArI2RlZmluZSBwdGhyZWFk X2NvbmRfYnJvYWRjYXN0KGMpICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKyNkZWZpbmUgcHRocmVh ZF9jb25kX3NpZ25hbChjKSAgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ICsjZGVmaW5lIHB0aHJl YWRfY29uZF93YWl0KGMsIG0pICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiArI2RlZmluZSBwdGhy ZWFkX2NvbmRfZGVzdHJveShjKSAgICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKwo+ICsjZGVmaW5l IHB0aHJlYWRfbXV0ZXhfaW5pdChtLCBhKSAgICAgICAgMAo+ICsjZGVmaW5lIHB0aHJlYWRfbXV0 ZXhfbG9jayhsKSAgICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiArI2RlZmluZSBwdGhyZWFkX211 dGV4X3VubG9jayhsKSAgICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKyNkZWZpbmUgcHRocmVhZF9t dXRleF9kZXN0cm95KGwpICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ICsjZW5kaWYKPiArCj4gK3R5 cGVkZWYgc3RydWN0IFRocmVhZEluZm8gewo+ICsgICAgQVZFeGVjdXRvciAqZTsKPiArICAgIHB0 aHJlYWRfdCB0aHJlYWQ7Cj4gK30gVGhyZWFkSW5mbzsKPiArCj4gK3N0cnVjdCBBVkV4ZWN1dG9y IHsKPiArICAgIEFWVGFza0NhbGxiYWNrcyBjYjsKPiArICAgIGludCB0aHJlYWRfY291bnQ7Cj4g Kwo+ICsgICAgVGhyZWFkSW5mbyAqdGhyZWFkczsKPiArICAgIHVpbnQ4X3QgKmxvY2FsX2NvbnRl eHRzOwo+ICsKPiArICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOwo+ICsgICAgcHRocmVhZF9jb25k X3QgY29uZDsKPiArICAgIGludCBkaWU7Cj4gKwo+ICsgICAgQVZUYXNrICp0YXNrczsKPiArfTsK PiArCj4gK3N0YXRpYyBBVlRhc2sqIHJlbW92ZV90YXNrKEFWVGFzayAqKnByZXYsIEFWVGFzayAq dCkKPiArewo+ICsgICAgKnByZXYgID0gdC0+bmV4dDsKPiArICAgIHQtPm5leHQgPSBOVUxMOwo+ ICsgICAgcmV0dXJuIHQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGFkZF90YXNrKEFWVGFzayAq KnByZXYsIEFWVGFzayAqdCkKPiArewo+ICsgICAgdC0+bmV4dCA9ICpwcmV2Owo+ICsgICAgKnBy ZXYgICA9IHQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcnVuX29uZV90YXNrKEFWRXhlY3V0b3Ig KmUsIHZvaWQgKmxjKQo+ICt7Cj4gKyAgICBBVlRhc2tDYWxsYmFja3MgKmNiID0gJmUtPmNiOwo+ ICsgICAgQVZUYXNrICoqcHJldjsKPiArCj4gKyAgICBmb3IgKHByZXYgPSAmZS0+dGFza3M7ICpw cmV2ICYmICFjYi0+cmVhZHkoKnByZXYsIGNiLT51c2VyX2RhdGEpOwo+IHByZXYgPSAmKCpwcmV2 KS0+bmV4dCkKPiArICAgICAgICAvKiBub3RoaW5nICovOwo+ICsgICAgaWYgKCpwcmV2KSB7Cj4g KyAgICAgICAgQVZUYXNrICp0ID0gcmVtb3ZlX3Rhc2socHJldiwgKnByZXYpOwo+ICsgICAgICAg IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiArICAgICAgICBjYi0+cnVuKHQsIGxj LCBjYi0+dXNlcl9kYXRhKTsKPiArICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmUtPmxvY2sp Owo+ICsgICAgICAgIHJldHVybiAxOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gKyNpZiBIQVZFX1RIUkVBRFMKPiArc3RhdGljIHZvaWQgKmV4ZWN1dG9yX3dvcmtlcl90YXNr KHZvaWQgKmRhdGEpCj4gK3sKPiArICAgIFRocmVhZEluZm8gKnRpID0gKFRocmVhZEluZm8qKWRh dGE7Cj4gKyAgICBBVkV4ZWN1dG9yICplICA9IHRpLT5lOwo+ICsgICAgdm9pZCAqbGMgICAgICAg PSBlLT5sb2NhbF9jb250ZXh0cyArICh0aSAtIGUtPnRocmVhZHMpICoKPiBlLT5jYi5sb2NhbF9j b250ZXh0X3NpemU7Cj4gKwo+ICsgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiAr ICAgIHdoaWxlICgxKSB7Cj4gKyAgICAgICAgaWYgKGUtPmRpZSkgYnJlYWs7Cj4gKwo+ICsgICAg ICAgIGlmICghcnVuX29uZV90YXNrKGUsIGxjKSkgewo+ICsgICAgICAgICAgICAvL25vIHRhc2sg aW4gb25lIGxvb3AKPiArICAgICAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmUtPmNvbmQsICZl LT5sb2NrKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBwdGhyZWFkX211dGV4X3VubG9j aygmZS0+bG9jayk7Cj4gKyAgICByZXR1cm4gTlVMTDsKPiArfQo+ICsjZW5kaWYKPiArCj4gK3N0 YXRpYyB2b2lkIGV4ZWN1dG9yX2ZyZWUoQVZFeGVjdXRvciAqZSwgY29uc3QgaW50IGhhc19sb2Nr LCBjb25zdCBpbnQKPiBoYXNfY29uZCkKPiArewo+ICsgICAgaWYgKGUtPnRocmVhZF9jb3VudCkg ewo+ICsgICAgICAgIC8vc2lnbmFsIGRpZQo+ICsgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm ZS0+bG9jayk7Cj4gKyAgICAgICAgZS0+ZGllID0gMTsKPiArICAgICAgICBwdGhyZWFkX2NvbmRf YnJvYWRjYXN0KCZlLT5jb25kKTsKPiArICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+ bG9jayk7Cj4gKwo+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZS0+dGhyZWFkX2NvdW50 OyBpKyspCj4gKyAgICAgICAgICAgIHB0aHJlYWRfam9pbihlLT50aHJlYWRzW2ldLnRocmVhZCwg TlVMTCk7Cj4gKyAgICB9Cj4gKyAgICBpZiAoaGFzX2NvbmQpCj4gKyAgICAgICAgcHRocmVhZF9j b25kX2Rlc3Ryb3koJmUtPmNvbmQpOwo+ICsgICAgaWYgKGhhc19sb2NrKQo+ICsgICAgICAgIHB0 aHJlYWRfbXV0ZXhfZGVzdHJveSgmZS0+bG9jayk7Cj4gKwo+ICsgICAgYXZfZnJlZShlLT50aHJl YWRzKTsKPiArICAgIGF2X2ZyZWUoZS0+bG9jYWxfY29udGV4dHMpOwo+ICsKPiArICAgIGF2X2Zy ZWUoZSk7Cj4gK30KPiArCj4gK0FWRXhlY3V0b3IqIGF2cHJpdl9leGVjdXRvcl9hbGxvYyhjb25z dCBBVlRhc2tDYWxsYmFja3MgKmNiLCBpbnQKPiB0aHJlYWRfY291bnQpCj4gK3sKPiArICAgIEFW RXhlY3V0b3IgKmU7Cj4gKyAgICBpbnQgaGFzX2xvY2sgPSAwLCBoYXNfY29uZCA9IDA7Cj4gKyAg ICBpZiAoIWNiIHx8ICFjYi0+dXNlcl9kYXRhIHx8ICFjYi0+cmVhZHkgfHwgIWNiLT5ydW4gfHwK PiAhY2ItPnByaW9yaXR5X2hpZ2hlcikKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAg ICBlID0gYXZfY2FsbG9jKDEsIHNpemVvZigqZSkpOwo+ICsgICAgaWYgKCFlKQo+ICsgICAgICAg IHJldHVybiBOVUxMOwo+ICsgICAgZS0+Y2IgPSAqY2I7Cj4gKwo+ICsgICAgZS0+bG9jYWxfY29u dGV4dHMgPSBhdl9jYWxsb2ModGhyZWFkX2NvdW50LCBlLT5jYi5sb2NhbF9jb250ZXh0X3NpemUp Owo+ICsgICAgaWYgKCFlLT5sb2NhbF9jb250ZXh0cykKPiArICAgICAgICBnb3RvIGZyZWVfZXhl Y3V0b3I7Cj4gKwo+ICsgICAgZS0+dGhyZWFkcyA9IGF2X2NhbGxvYyh0aHJlYWRfY291bnQsIHNp emVvZigqZS0+dGhyZWFkcykpOwo+ICsgICAgaWYgKCFlLT50aHJlYWRzKQo+ICsgICAgICAgIGdv dG8gZnJlZV9leGVjdXRvcjsKPiArCj4gKyAgICBoYXNfbG9jayA9ICFwdGhyZWFkX211dGV4X2lu aXQoJmUtPmxvY2ssIE5VTEwpOwo+ICsgICAgaGFzX2NvbmQgPSAhcHRocmVhZF9jb25kX2luaXQo JmUtPmNvbmQsIE5VTEwpOwo+ICsKPiArICAgIGlmICghaGFzX2xvY2sgfHwgIWhhc19jb25kKQo+ ICsgICAgICAgIGdvdG8gZnJlZV9leGVjdXRvcjsKPiArCj4gKyAgICBmb3IgKC8qIG5vdGhpbmcg Ki87IGUtPnRocmVhZF9jb3VudCA8IHRocmVhZF9jb3VudDsKPiBlLT50aHJlYWRfY291bnQrKykg ewo+ICsgICAgICAgIFRocmVhZEluZm8gKnRpID0gZS0+dGhyZWFkcyArIGUtPnRocmVhZF9jb3Vu dDsKPiArICAgICAgICB0aS0+ZSA9IGU7Cj4gKyAgICAgICAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0 aS0+dGhyZWFkLCBOVUxMLCBleGVjdXRvcl93b3JrZXJfdGFzaywgdGkpKQo+ICsgICAgICAgICAg ICBnb3RvIGZyZWVfZXhlY3V0b3I7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gZTsKPiArCj4gK2Zy ZWVfZXhlY3V0b3I6Cj4gKyAgICBleGVjdXRvcl9mcmVlKGUsIGhhc19sb2NrLCBoYXNfY29uZCk7 Cj4gKyAgICByZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArdm9pZCBhdnByaXZfZXhlY3V0b3JfZnJl ZShBVkV4ZWN1dG9yICoqZXhlY3V0b3IpCj4gK3sKPiArICAgIGlmICghZXhlY3V0b3IgfHwgISpl eGVjdXRvcikKPiArICAgICAgICByZXR1cm47Cj4gKyAgICBleGVjdXRvcl9mcmVlKCpleGVjdXRv ciwgMSwgMSk7Cj4gKyAgICAqZXhlY3V0b3IgPSBOVUxMOwo+ICt9Cj4gKwo+ICt2b2lkIGF2cHJp dl9leGVjdXRvcl9leGVjdXRlKEFWRXhlY3V0b3IgKmUsIEFWVGFzayAqdCkKPiArewo+ICsgICAg QVZUYXNrQ2FsbGJhY2tzICpjYiA9ICZlLT5jYjsKPiArICAgIEFWVGFzayAqKnByZXY7Cj4gKwo+ ICsgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiArICAgIGlmICh0KSB7Cj4gKyAg ICAgICAgZm9yIChwcmV2ID0gJmUtPnRhc2tzOyAqcHJldiAmJiBjYi0+cHJpb3JpdHlfaGlnaGVy KCpwcmV2LCB0KTsKPiBwcmV2ID0gJigqcHJldiktPm5leHQpCj4gKyAgICAgICAgICAgIC8qIG5v dGhpbmcgKi87Cj4gKyAgICAgICAgYWRkX3Rhc2socHJldiwgdCk7Cj4gKyAgICB9Cj4gKyAgICBw dGhyZWFkX2NvbmRfc2lnbmFsKCZlLT5jb25kKTsKPiArICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZlLT5sb2NrKTsKPiArCj4gKyNpZiAhSEFWRV9USFJFQURTCj4gKyAgICAvLyBXZSBhcmUgcnVu bmluZyBpbiBhIHNpbmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudCwgc28gd2UgbXVzdCBoYW5kbGUK PiBhbGwgdGFza3Mgb3Vyc2VsdmVzCj4gKyAgICB3aGlsZSAocnVuX29uZV90YXNrKGUsIGUtPmxv Y2FsX2NvbnRleHRzKSkKPiArICAgICAgICAvKiBub3RoaW5nICovOwo+ICsjZW5kaWYKPiArfQo+ IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvZXhlY3V0b3IuaCBiL2xpYmF2dXRpbC9leGVjdXRvci5o Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi40OGM3ZDQ3YzdkCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2dXRpbC9leGVjdXRvci5oCj4gQEAgLTAsMCArMSw2 NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgTnVvIE1pCj4gKyAqCj4gKyAqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4g KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Cj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiAr ICovCj4gKwo+ICsjaWZuZGVmIEFWVVRJTF9FWEVDVVRPUl9ICj4gKyNkZWZpbmUgQVZVVElMX0VY RUNVVE9SX0gKPiArCj4gK3R5cGVkZWYgc3RydWN0IEFWRXhlY3V0b3IgQVZFeGVjdXRvcjsKPiAr dHlwZWRlZiBzdHJ1Y3QgQVZUYXNrIEFWVGFzazsKPiArCj4gK3N0cnVjdCBBVlRhc2sgewo+ICsg ICAgQVZUYXNrICpuZXh0Owo+ICt9Owo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgQVZUYXNrQ2FsbGJh Y2tzIHsKPiArICAgIHZvaWQgKnVzZXJfZGF0YTsKPiArCj4gKyAgICBpbnQgbG9jYWxfY29udGV4 dF9zaXplOwo+ICsKPiArICAgIC8vIHJldHVybiAxIGlmIGEncyBwcmlvcml0eSA+IGIncyBwcmlv cml0eQo+ICsgICAgaW50ICgqcHJpb3JpdHlfaGlnaGVyKShjb25zdCBBVlRhc2sgKmEsIGNvbnN0 IEFWVGFzayAqYik7Cj4gKwo+ICsgICAgLy8gdGFzayBpcyByZWFkeSBmb3IgcnVuCj4gKyAgICBp bnQgKCpyZWFkeSkoY29uc3QgQVZUYXNrICp0LCB2b2lkICp1c2VyX2RhdGEpOwo+ICsKPiArICAg IC8vIHJ1biB0aGUgdGFzawo+ICsgICAgaW50ICgqcnVuKShBVlRhc2sgKnQsIHZvaWQgKmxvY2Fs X2NvbnRleHQsIHZvaWQgKnVzZXJfZGF0YSk7Cj4gK30gQVZUYXNrQ2FsbGJhY2tzOwo+ICsKPiAr LyoqCj4gKyAqIEFsbG9jIGV4ZWN1dG9yCj4gKyAqIEBwYXJhbSBjYWxsYmFja3MgY2FsbGJhY2sg c3RydWN1dHJlIGZvciBleGVjdXRvcgo+ICsgKiBAcGFyYW0gdGhyZWFkX2NvdW50IHdvcmtlciB0 aHJlYWQgbnVtYmVyCj4gKyAqIEByZXR1cm4gcmV0dXJuIHRoZSBleGVjdXRvcgo+ICsgKi8KPiAr QVZFeGVjdXRvciogYXZwcml2X2V4ZWN1dG9yX2FsbG9jKGNvbnN0IEFWVGFza0NhbGxiYWNrcyAq Y2FsbGJhY2tzLCBpbnQKPiB0aHJlYWRfY291bnQpOwo+ICsKPiArLyoqCj4gKyAqIEZyZWUgZXhl Y3V0b3IKPiArICogQHBhcmFtIGUgIHBvaW50ZXIgdG8gZXhlY3V0b3IKPiArICovCj4gK3ZvaWQg YXZwcml2X2V4ZWN1dG9yX2ZyZWUoQVZFeGVjdXRvciAqKmUpOwo+ICsKPiArLyoqCj4gKyAqIEFk ZCB0YXNrIHRvIGV4ZWN1dG9yCj4gKyAqIEBwYXJhbSBlIHBvaW50ZXIgdG8gZXhlY3V0b3IKPiAr ICogQHBhcmFtIHQgcG9pbnRlciB0byB0YXNrLiBJZiBOVUxMLCBpdCB3aWxsIHdha2V1cCBvbmUg d29yayB0aHJlYWQKPiArICovCj4gK3ZvaWQgYXZwcml2X2V4ZWN1dG9yX2V4ZWN1dGUoQVZFeGVj dXRvciAqZSwgQVZUYXNrICp0KTsKPiArCj4gKyNlbmRpZiAvL0FWVVRJTF9FWEVDVVRPUl9ICj4g LS0KPiAyLjI1LjEKPgo+CkNoYW5nZXMgc2luY2UgdjI6CiogbW92ZSBleGVjdXRvciB0byBhdnV0 aWwKKiBmaXggZm9yIC0tZGlzYWJsZS1wdGhyZWFkcwoqIHJlbW92ZSBkdXBsaWNhdGUgZnJlZSBj b2RlIGluIGV4ZWN1dG9yX2FsbG9jIGFuZCBleGVjdXRvcl9mcmVlCgpJIGFsc28gZGlzYWJsZWQg dGhlIEhBVkVfVEhSRUFEUyBtYWNybyBpbiB0aGlzIGZpbGUgb25seSBmb3IgdGVzdGluZwpwdXJw b3Nlcy4KVGhlIGV4ZWN1dG9yIGlzIGFsc28gZnVuY3Rpb25hbCBpbiBzaW5nbGUtdGhyZWFkZWQg ZW52aXJvbm1lbnRzLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==