From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTP id 04A6848FCB
	for <ffmpegdev@gitmailbox.com>; Mon,  1 Apr 2024 16:17:12 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1629368CEC8;
	Mon,  1 Apr 2024 19:17:03 +0300 (EEST)
Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com
 [209.85.218.41])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FA7668CEBC
 for <ffmpeg-devel@ffmpeg.org>; Mon,  1 Apr 2024 19:16:56 +0300 (EEST)
Received: by mail-ej1-f41.google.com with SMTP id
 a640c23a62f3a-a4702457ccbso519960466b.3
 for <ffmpeg-devel@ffmpeg.org>; Mon, 01 Apr 2024 09:16:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1711988215; x=1712593015;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=kT5tWvGg0NbvxJ+geO3otb3e1vCe32iv5/uAhiQLddg=;
 b=ErC2D+sgeRB/t0DGJSvxB5AQheI/dQPSS+dRSAW5d/xHGzJIOKj+9N3238QmG20TXV
 iBM90kWkduZi99HZvEUDSC21KwR0HVaw0rAntv4FmoFyLmLnNH6t5gnjCzWXHkWUHWLe
 /YDF2dOKGorD59tgnmVBqMe/FsoFN/SnwuTgpM/zSQc3BPDnbmooGeSnuNgOUvR/J6CJ
 +RdkpRzaPjtZg5zIbQtxvJxrBtiXYzH5OpZaSwCwtq5bR18BrhgK+B0B9k4ru0T73gJE
 cQMYFVKvexd9dS9p3QXEy/pvKNcxUpm+iITn/NbcjKoLTLgyO/qEOhUj0m3wmpPojLIn
 QmSA==
X-Gm-Message-State: AOJu0YyO9oZagE/AWd1W075bLXd+zOjfcQFNwLBmLs5ilAmf1K5ir4iK
 wX2A3bZYtqR+raDzS05Krm2wJVmzcfHZgud4q1rO9oL/zeI2KjMVs8i3sBPALgp0wgPwz5zTD4l
 T
X-Google-Smtp-Source: AGHT+IEKR7bpBfcHWJicMGGp4CB1DS0MzthUmwTjaveubRfUedryDH4cLKyQ2banGTN9myQICyyrzg==
X-Received: by 2002:a17:906:fac4:b0:a4d:f5d4:fb02 with SMTP id
 lu4-20020a170906fac400b00a4df5d4fb02mr6671620ejb.51.1711988215060; 
 Mon, 01 Apr 2024 09:16:55 -0700 (PDT)
Received: from Denniss-MBP.fritz.box
 (ip-088-152-103-184.um26.pools.vodafone-ip.de. [88.152.103.184])
 by smtp.gmail.com with ESMTPSA id
 kf16-20020a17090776d000b00a46bf6d890bsm5491341ejc.91.2024.04.01.09.16.54
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Mon, 01 Apr 2024 09:16:54 -0700 (PDT)
To: ffmpeg-devel@ffmpeg.org
Date: Mon,  1 Apr 2024 18:16:50 +0200
Message-Id: <20240401161650.34063-2-dennis@obsproject.com>
X-Mailer: git-send-email 2.39.3 (Apple Git-146)
In-Reply-To: <20240401161650.34063-1-dennis@obsproject.com>
References: <20240401161650.34063-1-dennis@obsproject.com>
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH 2/2] avformat/flvdec: Add support for
 demuxing multi-track FLV
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
From: =?utf-8?q?Dennis_S=C3=A4dtler_via_ffmpeg-devel?=
 <ffmpeg-devel@ffmpeg.org>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: =?UTF-8?q?Dennis=20S=C3=A4dtler?= <dennis@obsproject.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20240401161650.34063-2-dennis@obsproject.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

QmFzZWQgb24gZW5oYW5jZWQtcnRtcCB2MiBzcGVjIHB1Ymxpc2hlZCBieSBWZW92ZXJhOgpodHRw
czovL3Zlb3ZlcmEuZ2l0aHViLmlvL2VuaGFuY2VkLXJ0bXAvZG9jcy9lbmhhbmNlZC9lbmhhbmNl
ZC1ydG1wLXYyCgpTaWduZWQtb2ZmLWJ5OiBEZW5uaXMgU8OkZHRsZXIgPGRlbm5pc0BvYnNwcm9q
ZWN0LmNvbT4KLS0tCiBsaWJhdmZvcm1hdC9mbHZkZWMuYyB8IDExNyArKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOTYgaW5zZXJ0aW9u
cygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZmx2ZGVjLmMg
Yi9saWJhdmZvcm1hdC9mbHZkZWMuYwppbmRleCAyMmE5YjllNGE3Li4zOWQwMWQzYjFmIDEwMDY0
NAotLS0gYS9saWJhdmZvcm1hdC9mbHZkZWMuYworKysgYi9saWJhdmZvcm1hdC9mbHZkZWMuYwpA
QCAtMTA1LDYgKzEwNSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBGTFZDb250ZXh0IHsKIAogICAgIEZM
Vk1ldGFWaWRlb0NvbG9yICptZXRhVmlkZW9Db2xvcjsKICAgICBpbnQgbWV0YV9jb2xvcl9pbmZv
X2ZsYWc7CisgICAgCisgICAgdWludDhfdCAqKm10X2V4dHJhZGF0YTsKKyAgICBpbnQgKm10X2V4
dHJhZGF0YV9zejsKKyAgICBpbnQgbXRfZXh0cmFkYXRhX2NudDsKIH0gRkxWQ29udGV4dDsKIAog
LyogQU1GIGRhdGUgdHlwZSAqLwpAQCAtMTg3LDEzICsxOTEsMTggQEAgc3RhdGljIHZvaWQgYWRk
X2tleWZyYW1lc19pbmRleChBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgfQogfQogCi1zdGF0aWMg
QVZTdHJlYW0gKmNyZWF0ZV9zdHJlYW0oQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgY29kZWNfdHlw
ZSkKK3N0YXRpYyBBVlN0cmVhbSAqY3JlYXRlX3N0cmVhbShBVkZvcm1hdENvbnRleHQgKnMsIGlu
dCBjb2RlY190eXBlLCBpbnQgdHJhY2tfaWR4KQogewogICAgIEZMVkNvbnRleHQgKmZsdiAgID0g
cy0+cHJpdl9kYXRhOwogICAgIEFWU3RyZWFtICpzdCA9IGF2Zm9ybWF0X25ld19zdHJlYW0ocywg
TlVMTCk7CiAgICAgaWYgKCFzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3QtPmNvZGVj
cGFyLT5jb2RlY190eXBlID0gY29kZWNfdHlwZTsKKyAgICBzdC0+aWQgPSB0cmFja19pZHg7Cisg
ICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdCwgMzIsIDEsIDEwMDApOyAvKiAzMiBiaXQgcHRzIGlu
IG1zICovCisgICAgaWYgKHRyYWNrX2lkeCkKKyAgICAgICAgcmV0dXJuIHN0OworCiAgICAgaWYg
KHMtPm5iX3N0cmVhbXM+PTMgfHwoICAgcy0+bmJfc3RyZWFtcz09MgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgcy0+c3RyZWFtc1swXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgIT0gQVZN
RURJQV9UWVBFX1NVQlRJVExFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzLT5zdHJl
YW1zWzFdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSAhPSBBVk1FRElBX1RZUEVfU1VCVElUTEUKQEAg
LTIxMCw4ICsyMTksNiBAQCBzdGF0aWMgQVZTdHJlYW0gKmNyZWF0ZV9zdHJlYW0oQVZGb3JtYXRD
b250ZXh0ICpzLCBpbnQgY29kZWNfdHlwZSkKICAgICAgICAgc3QtPmF2Z19mcmFtZV9yYXRlID0g
Zmx2LT5mcmFtZXJhdGU7CiAgICAgfQogCi0KLSAgICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCAz
MiwgMSwgMTAwMCk7IC8qIDMyIGJpdCBwdHMgaW4gbXMgKi8KICAgICBmbHYtPmxhc3Rfa2V5ZnJh
bWVfc3RyZWFtX2luZGV4ID0gcy0+bmJfc3RyZWFtcyAtIDE7CiAgICAgYWRkX2tleWZyYW1lc19p
bmRleChzKTsKICAgICByZXR1cm4gc3Q7CkBAIC0zNTEsNiArMzU4LDcgQEAgc3RhdGljIGludCBm
bHZfc2FtZV92aWRlb19jb2RlYyhBVkNvZGVjUGFyYW1ldGVycyAqdnBhciwgdWludDMyX3QgZmx2
X2NvZGVjaWQpCiAgICAgY2FzZSBGTFZfQ09ERUNJRF9WUDZBOgogICAgICAgICByZXR1cm4gdnBh
ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QTsKICAgICBjYXNlIEZMVl9DT0RFQ0lEX0gy
NjQ6CisgICAgY2FzZSBNS0JFVEFHKCdhJywgJ3YnLCAnYycsICcxJyk6CiAgICAgICAgIHJldHVy
biB2cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0OwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiB2cGFyLT5jb2RlY190YWcgPT0gZmx2X2NvZGVjaWQ7CkBAIC00MDcsNiArNDE1
LDcgQEAgc3RhdGljIGludCBmbHZfc2V0X3ZpZGVvX2NvZGVjKEFWRm9ybWF0Q29udGV4dCAqcywg
QVZTdHJlYW0gKnZzdHJlYW0sCiAgICAgICAgIHJldCA9IDE7ICAgICAvLyAxIGJ5dGUgYm9keSBz
aXplIGFkanVzdG1lbnQgZm9yIGZsdl9yZWFkX3BhY2tldCgpCiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRkxWX0NPREVDSURfSDI2NDoKKyAgICBjYXNlIE1LQkVUQUcoJ2EnLCAndicsICdjJywg
JzEnKToKICAgICAgICAgcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX0gyNjQ7CiAgICAgICAg
IHZzdHJlYW1pLT5uZWVkX3BhcnNpbmcgPSBBVlNUUkVBTV9QQVJTRV9IRUFERVJTOwogICAgICAg
ICBicmVhazsKQEAgLTY3Niw3ICs2ODUsNyBAQCBzdGF0aWMgaW50IGFtZl9wYXJzZV9vYmplY3Qo
QVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqYXN0cmVhbSwKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgImhlaWdodCIpICYmIHZwYXIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZwYXItPmhlaWdodCA9IG51bV92YWw7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJkYXRhc3RyZWFtIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEFWU3RyZWFtICpzdCA9IGNyZWF0ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBF
X1NVQlRJVExFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFtICpzdCA9IGNyZWF0
ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBFX1NVQlRJVExFLCAwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS
T1IoRU5PTUVNKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNf
aWQgPSBBVl9DT0RFQ19JRF9URVhUOwpAQCAtODg1LDYgKzg5NCw5IEBAIHN0YXRpYyBpbnQgZmx2
X3JlYWRfY2xvc2UoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIEZMVkNvbnRleHQgKmZsdiA9IHMt
PnByaXZfZGF0YTsKICAgICBmb3IgKGk9MDsgaTxGTFZfU1RSRUFNX1RZUEVfTkI7IGkrKykKICAg
ICAgICAgYXZfZnJlZXAoJmZsdi0+bmV3X2V4dHJhZGF0YVtpXSk7CisgICAgZm9yIChpPTA7IGkg
PCBmbHYtPm10X2V4dHJhZGF0YV9jbnQ7IGkrKykKKyAgICAgICAgYXZfZnJlZXAoJmZsdi0+bXRf
ZXh0cmFkYXRhW2ldKTsKKyAgICBhdl9mcmVlcCgmZmx2LT5tdF9leHRyYWRhdGFfc3opOwogICAg
IGF2X2ZyZWVwKCZmbHYtPmtleWZyYW1lX3RpbWVzKTsKICAgICBhdl9mcmVlcCgmZmx2LT5rZXlm
cmFtZV9maWxlcG9zaXRpb25zKTsKICAgICBhdl9mcmVlcCgmZmx2LT5tZXRhVmlkZW9Db2xvcik7
CkBAIC05MDQsMTggKzkxNiw0NyBAQCBzdGF0aWMgaW50IGZsdl9nZXRfZXh0cmFkYXRhKEFWRm9y
bWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKnN0LCBpbnQgc2l6ZSkKIH0KIAogc3RhdGljIGludCBm
bHZfcXVldWVfZXh0cmFkYXRhKEZMVkNvbnRleHQgKmZsdiwgQVZJT0NvbnRleHQgKnBiLCBpbnQg
c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgbXVsdGl0cmFjaykKIHsKICAg
ICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXZfZnJlZShmbHYtPm5ld19l
eHRyYWRhdGFbc3RyZWFtXSk7Ci0gICAgZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0gPSBhdl9t
YWxsb2N6KHNpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFKTsKLSAgICBpZiAoIWZsdi0+bmV3X2V4dHJh
ZGF0YVtzdHJlYW1dKQotICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotICAgIGZsdi0+
bmV3X2V4dHJhZGF0YV9zaXplW3N0cmVhbV0gPSBzaXplOwotICAgIGF2aW9fcmVhZChwYiwgZmx2
LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0sIHNpemUpOworICAgIGlmICghbXVsdGl0cmFjaykgewor
ICAgICAgICBhdl9mcmVlKGZsdi0+bmV3X2V4dHJhZGF0YVtzdHJlYW1dKTsKKyAgICAgICAgZmx2
LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0gPSBhdl9tYWxsb2N6KHNpemUgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfSU5QVVRfQlVGRkVSX1BBRERJ
TkdfU0laRSk7CisgICAgICAgIGlmICghZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV0pCisgICAg
ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgICAgICBmbHYtPm5ld19leHRyYWRh
dGFfc2l6ZVtzdHJlYW1dID0gc2l6ZTsKKyAgICAgICAgYXZpb19yZWFkKHBiLCBmbHYtPm5ld19l
eHRyYWRhdGFbc3RyZWFtXSwgc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG5ld19j
b3VudCA9IHN0cmVhbSArIDE7CisKKyAgICAgICAgaWYgKGZsdi0+bXRfZXh0cmFkYXRhX2NudCA8
IG5ld19jb3VudCkgeworICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRhdGEgPSBhdl9yZWFsbG9j
KGZsdi0+bXRfZXh0cmFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZigqZmx2LT5tdF9leHRyYWRhdGEpICogCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NvdW50KTsKKyAgICAgICAgICAgIGZsdi0+bXRf
ZXh0cmFkYXRhX3N6ID0gYXZfcmVhbGxvYyhmbHYtPm10X2V4dHJhZGF0YV9zeiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmZsdi0+bXRfZXh0
cmFkYXRhX3N6KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3X2NvdW50KTsKKyAgICAgICAgICAgIGlmICghZmx2LT5tdF9leHRyYWRhdGEgfHwgIWZs
di0+bXRfZXh0cmFkYXRhX3N6KQorICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F
TSk7CisgICAgICAgICAgICAvLyBTZXQgbmV3bHkgYWxsb2NhdGVkIHBvaW50ZXJzL3NpemVzIHRv
IDAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBmbHYtPm10X2V4dHJhZGF0YV9jbnQ7IGkgPCBu
ZXdfY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YVtp
XSA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhX3N6W2ldID0g
MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZsdi0+bXRfZXh0cmFkYXRhX2NudCA9IG5l
d19jb3VudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYXZfZnJlZShmbHYtPm10X2V4
dHJhZGF0YVtzdHJlYW1dKTsKKyAgICAgICAgZmx2LT5tdF9leHRyYWRhdGFbc3RyZWFtXSA9IGF2
X21hbGxvY3ooc2l6ZSArIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOworICAgICAgICBp
ZiAoIWZsdi0+bXRfZXh0cmFkYXRhW3N0cmVhbV0pCisgICAgICAgICAgICByZXR1cm4gQVZFUlJP
UihFTk9NRU0pOworICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zeltzdHJlYW1dID0gc2l6ZTsK
KyAgICAgICAgYXZpb19yZWFkKHBiLCBmbHYtPm10X2V4dHJhZGF0YVtzdHJlYW1dLCBzaXplKTsK
KyAgICB9CisgICAgCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMzEsNyArMTA3Miw3IEBAIHN0
YXRpYyBpbnQgZmx2X2RhdGFfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBr
dCwKICAgICB9CiAKICAgICBpZiAoaSA9PSBzLT5uYl9zdHJlYW1zKSB7Ci0gICAgICAgIHN0ID0g
Y3JlYXRlX3N0cmVhbShzLCBBVk1FRElBX1RZUEVfU1VCVElUTEUpOworICAgICAgICBzdCA9IGNy
ZWF0ZV9zdHJlYW0ocywgQVZNRURJQV9UWVBFX1NVQlRJVExFLCAwKTsKICAgICAgICAgaWYgKCFz
dCkKICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICAgIHN0LT5jb2Rl
Y3Bhci0+Y29kZWNfaWQgPSBBVl9DT0RFQ19JRF9URVhUOwpAQCAtMTIwMyw2ICsxMjQ0LDkgQEAg
c3RhdGljIGludCBmbHZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAq
cGt0KQogICAgIGludCBsYXN0ID0gLTE7CiAgICAgaW50IG9yaWdfc2l6ZTsKICAgICBpbnQgZW5o
YW5jZWRfZmx2ID0gMDsKKyAgICBpbnQgbXVsdGl0cmFjayA9IDA7CisgICAgaW50IHBrdF90eXBl
ID0gMDsKKyAgICB1aW50OF90IHRyYWNrX2lkeCA9IDA7CiAgICAgdWludDMyX3QgdmlkZW9fY29k
ZWNfaWQgPSAwOwogCiByZXRyeToKQEAgLTEyNTYsMTQgKzEzMDAsMzMgQEAgcmV0cnk6CiAgICAg
ICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS92ZW92ZXJhL2VuaGFuY2VkLXJ0bXAvYmxvYi9tYWlu
L2VuaGFuY2VkLXJ0bXAtdjEucGRmCiAgICAgICAgICAqICovCiAgICAgICAgIGVuaGFuY2VkX2Zs
diA9IChmbGFncyA+PiA3KSAmIDE7CisgICAgICAgIHBrdF90eXBlID0gZW5oYW5jZWRfZmx2ID8g
dmlkZW9fY29kZWNfaWQgOiAwOwogICAgICAgICBzaXplLS07CisgICAgICAgIAorICAgICAgICBp
ZiAocGt0X3R5cGUgPT0gUGFja2V0VHlwZU11bHRpdHJhY2spIHsKKyAgICAgICAgICAgIHVpbnQ4
X3QgdHlwZXMgPSBhdmlvX3I4KHMtPnBiKTsKKyAgICAgICAgICAgIGludCBtdWx0aXRyYWNrX3R5
cGUgPSB0eXBlcyA+PiA0OworICAgICAgICAgICAgcGt0X3R5cGUgPSB0eXBlcyAmIDB4RjsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG11bHRpdHJhY2tfdHlwZSAhPSBNdWx0aXRyYWNr
VHlwZU9uZVRyYWNrKSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwg
Ik11bHRpdHJhY2sgdHlwZXMgb3RoZXIgdGhhbiBNdWx0aXRyYWNrVHlwZU9uZVRyYWNrIGFyZSB1
bnN1cHBvcnRlZCFcbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VM
Q09NRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXVsdGl0cmFj
ayA9IDE7CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IGlmIChlbmhhbmNlZF9mbHYpIHsKICAgICAgICAgICAgIHZpZGVvX2NvZGVjX2lkID0gYXZpb19y
YjMyKHMtPnBiKTsKICAgICAgICAgICAgIHNpemUgLT0gNDsKICAgICAgICAgfQorICAgICAgICBp
ZiAobXVsdGl0cmFjaykgeworICAgICAgICAgICAgdHJhY2tfaWR4ID0gYXZpb19yOChzLT5wYik7
CisgICAgICAgICAgICBzaXplLS07CisgICAgICAgIH0KIAotICAgICAgICBpZiAoZW5oYW5jZWRf
Zmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTyAmJiAoZmxhZ3MgJiBG
TFZfVklERU9fRlJBTUVUWVBFX01BU0spID09IEZMVl9GUkFNRV9WSURFT19JTkZPX0NNRCkgewot
ICAgICAgICAgICAgaW50IHBrdF90eXBlID0gZmxhZ3MgJiAweDBGOworICAgICAgICBpZiAoZW5o
YW5jZWRfZmx2ICYmIChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykgPT0gRkxWX0ZS
QU1FX1ZJREVPX0lORk9fQ01EKSB7CiAgICAgICAgICAgICBpZiAocGt0X3R5cGUgPT0gUGFja2V0
VHlwZU1ldGFkYXRhKSB7CiAgICAgICAgICAgICAgICAgaW50IHJldCA9IGZsdl9wYXJzZV92aWRl
b19jb2xvcl9pbmZvKHMsIHN0LCBuZXh0KTsKICAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZf
TE9HX0RFQlVHLCAiZW5oYW5jZWQgZmx2IHBhcnNlIG1ldGFkYXRhIHJldCAlZCBhbmQgc2tpcFxu
IiwgcmV0KTsKQEAgLTEzMjcsNyArMTM5MCw4IEBAIHNraXA6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1ZJ
REVPKSB7CiAgICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVE
SUFfVFlQRV9WSURFTyAmJgotICAgICAgICAgICAgICAgIChzLT52aWRlb19jb2RlY19pZCB8fCBm
bHZfc2FtZV92aWRlb19jb2RlYyhzdC0+Y29kZWNwYXIsIHZpZGVvX2NvZGVjX2lkKSkpCisgICAg
ICAgICAgICAgICAgKHMtPnZpZGVvX2NvZGVjX2lkIHx8IGZsdl9zYW1lX3ZpZGVvX2NvZGVjKHN0
LT5jb2RlY3BhciwgdmlkZW9fY29kZWNfaWQpKSAmJgorICAgICAgICAgICAgICAgIHN0LT5pZCA9
PSB0cmFja19pZHgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9UWVBFX1NVQlRJVExFKSB7CiAgICAgICAgICAgICBp
ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkKQEAg
LTEzMzksNyArMTQwMyw3IEBAIHNraXA6CiAgICAgfQogICAgIGlmIChpID09IHMtPm5iX3N0cmVh
bXMpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGVudW0gQVZNZWRpYVR5cGUgc3RyZWFtX3R5cGVz
W10gPSB7QVZNRURJQV9UWVBFX1ZJREVPLCBBVk1FRElBX1RZUEVfQVVESU8sIEFWTUVESUFfVFlQ
RV9TVUJUSVRMRSwgQVZNRURJQV9UWVBFX0RBVEF9OwotICAgICAgICBzdCA9IGNyZWF0ZV9zdHJl
YW0ocywgc3RyZWFtX3R5cGVzW3N0cmVhbV90eXBlXSk7CisgICAgICAgIHN0ID0gY3JlYXRlX3N0
cmVhbShzLCBzdHJlYW1fdHlwZXNbc3RyZWFtX3R5cGVdLCB0cmFja19pZHgpOwogICAgICAgICBp
ZiAoIXN0KQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICB9CkBAIC0x
NDQ2LDcgKzE1MTAsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgc3QtPmNvZGVjcGFyLT5j
b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpIHsKICAgICAgICAgaW50IHR5cGUgPSAwOwogICAg
ICAgICBpZiAoZW5oYW5jZWRfZmx2ICYmIHN0cmVhbV90eXBlID09IEZMVl9TVFJFQU1fVFlQRV9W
SURFTykgewotICAgICAgICAgICAgdHlwZSA9IGZsYWdzICYgMHgwRjsKKyAgICAgICAgICAgIHR5
cGUgPSBwa3RfdHlwZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHR5cGUgPSBhdmlv
X3I4KHMtPnBiKTsKICAgICAgICAgICAgIHNpemUtLTsKQEAgLTE0NjIsNyArMTUyNiw4IEBAIHJl
dHJ5X2R1cmF0aW9uOgogICAgICAgICAgICAgZmx2LT5tZXRhX2NvbG9yX2luZm9fZmxhZyA9IDA7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9D
T0RFQ19JRF9IMjY0IHx8IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTVBF
RzQgfHwKKyAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf
TVBFRzQgfHwKKyAgICAgICAgICAgIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVD
X0lEX0gyNjQgJiYgKCFlbmhhbmNlZF9mbHYgfHwgdHlwZSA9PSBQYWNrZXRUeXBlQ29kZWRGcmFt
ZXMpKSB8fAogICAgICAgICAgICAgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNf
SURfSEVWQyAmJiB0eXBlID09IFBhY2tldFR5cGVDb2RlZEZyYW1lcykpIHsKICAgICAgICAgICAg
IC8vIHNpZ24gZXh0ZW5zaW9uCiAgICAgICAgICAgICBpbnQzMl90IGN0cyA9IChhdmlvX3JiMjQo
cy0+cGIpICsgMHhmZjgwMDAwMCkgXiAweGZmODAwMDAwOwpAQCAtMTQ4NSw3ICsxNTUwLDcgQEAg
cmV0cnlfZHVyYXRpb246CiAgICAgICAgICAgICBBVkRpY3Rpb25hcnlFbnRyeSAqdDsKIAogICAg
ICAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKChyZXQgPSBmbHZfcXVldWVfZXh0cmFkYXRhKGZsdiwgcy0+cGIsIHN0cmVhbV90eXBlLCBz
aXplKSkgPCAwKQorICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZmx2X3F1ZXVlX2V4dHJhZGF0
YShmbHYsIHMtPnBiLCBtdWx0aXRyYWNrID8gdHJhY2tfaWR4IDogc3RyZWFtX3R5cGUsIHNpemUs
IG11bHRpdHJhY2spKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAg
ICAgICAgICAgICAgcmV0ID0gRkZFUlJPUl9SRURPOwogICAgICAgICAgICAgICAgIGdvdG8gbGVh
dmU7CkBAIC0xNTE2LDcgKzE1ODEsNyBAQCByZXRyeV9kdXJhdGlvbjoKICAgICBwa3QtPnB0cyAg
ICAgICAgICA9IHB0cyA9PSBBVl9OT1BUU19WQUxVRSA/IGR0cyA6IHB0czsKICAgICBwa3QtPnN0
cmVhbV9pbmRleCA9IHN0LT5pbmRleDsKICAgICBwa3QtPnBvcyAgICAgICAgICA9IHBvczsKLSAg
ICBpZiAoZmx2LT5uZXdfZXh0cmFkYXRhW3N0cmVhbV90eXBlXSkgeworICAgIGlmICghbXVsdGl0
cmFjayAmJiBmbHYtPm5ld19leHRyYWRhdGFbc3RyZWFtX3R5cGVdKSB7CiAgICAgICAgIGludCBy
ZXQgPSBhdl9wYWNrZXRfYWRkX3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX05FV19FWFRSQURB
VEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHYtPm5ld19l
eHRyYWRhdGFbc3RyZWFtX3R5cGVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmx2LT5uZXdfZXh0cmFkYXRhX3NpemVbc3RyZWFtX3R5cGVdKTsKQEAgLTE1MjQs
NiArMTU4OSwxNiBAQCByZXRyeV9kdXJhdGlvbjoKICAgICAgICAgICAgIGZsdi0+bmV3X2V4dHJh
ZGF0YVtzdHJlYW1fdHlwZV0gICAgICA9IE5VTEw7CiAgICAgICAgICAgICBmbHYtPm5ld19leHRy
YWRhdGFfc2l6ZVtzdHJlYW1fdHlwZV0gPSAwOwogICAgICAgICB9CisgICAgfSBlbHNlIGlmICht
dWx0aXRyYWNrCisgICAgICAgICAgICAgICAmJiBmbHYtPm10X2V4dHJhZGF0YV9jbnQgPiB0cmFj
a19pZHgKKyAgICAgICAgICAgICAgICYmIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNrX2lkeF0pIHsK
KyAgICAgICAgaW50IHJldCA9IGF2X3BhY2tldF9hZGRfc2lkZV9kYXRhKHBrdCwgQVZfUEtUX0RB
VEFfTkVXX0VYVFJBREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsdi0+bXRfZXh0cmFkYXRhW3RyYWNrX2lkeF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YV9zelt0cmFja19pZHhdKTsKKyAg
ICAgICAgaWYgKHJldCA+PSAwKSB7CisgICAgICAgICAgICBmbHYtPm10X2V4dHJhZGF0YVt0cmFj
a19pZHhdICAgICAgPSBOVUxMOworICAgICAgICAgICAgZmx2LT5tdF9leHRyYWRhdGFfc3pbdHJh
Y2tfaWR4XSA9IDA7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHN0cmVhbV90eXBlID09IEZM
Vl9TVFJFQU1fVFlQRV9BVURJTyAmJgogICAgICAgICAgICAgICAgICAgICAoc2FtcGxlX3JhdGUg
IT0gZmx2LT5sYXN0X3NhbXBsZV9yYXRlIHx8Ci0tIAoyLjM5LjMgKEFwcGxlIEdpdC0xNDYpCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2
ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9y
Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxp
bmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBz
dWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==