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 48BB845048 for ; Tue, 3 Jan 2023 10:42:21 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C70C368BA30; Tue, 3 Jan 2023 12:42:17 +0200 (EET) Received: from mail-40141.protonmail.ch (mail-40141.protonmail.ch [185.70.40.141]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 75CF568BCFC for ; Tue, 3 Jan 2023 12:42:10 +0200 (EET) Date: Tue, 03 Jan 2023 10:41:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1672742528; x=1673001728; bh=NsNbaG4m28x3E1A2YjZSnPtDQojUdcuWHKs0JWBTG9M=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=MDLuehnnv5ihKqI/7f1zMWe3K0bZkY7OOTrfHqkI/jIwVHB++LMd+zS0UZLL11h0H ESX3TtagglhX5fm08ZLi4uCWG4KRd4gdfETr1//u3hHlRODwbD9SZCDpH9Rj+NYz51 EFTUc1bz1Cev9Jlis60urbRQERQY+IDViCxOTyAEPXoVLIDz9g5VdzG8YjtPG73VAT 8t/u9wJ2u4qPiMR3AV26GJ+1dg1gcbDXdWRMuM6MXQvP0aNzvGxaOrNl0g/h8UjgDj ochCHFvoIWu9ZxqC4I71JG8FRUsJiRwty9GJc0OHzImVewTt/rk+Q+tiIf6TiO4xB1 GGLSXyl/Jj7zw== To: FFmpeg development discussions and patches From: =?utf-8?Q?Zsolt_Vad=C3=A1sz?= Message-ID: In-Reply-To: <4feccc4c-6304-46e2-8a5d-4bc63c74ef1a@app.fastmail.com> References: <4feccc4c-6304-46e2-8a5d-4bc63c74ef1a@app.fastmail.com> Feedback-ID: 28710920:user:proton MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH] avformat: Add support for embedding cover art in Ogg files 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: T24gU3VuZGF5LCBKYW51YXJ5IDFzdCwgMjAyMyBhdCAxMDo0MSBBTSwgSmVhbi1CYXB0aXN0ZSBL ZW1wZiA8amJAdmlkZW9sYW4ub3JnPiB3cm90ZToKCgo+IE9uIFRodSwgMjkgRGVjIDIwMjIsIGF0 IDIyOjA1LCBac29sdCBWYWTDoXN6IHdyb3RlOgo+IAo+ID4gSXQncyBkb25lIHNpbWlsYXJseSB0 byBob3cgdGhlIGZsYWMgbXV4ZXIgZG9lcyBpdCwgc28gSSByZXVzZWQgbW9zdCBvZgo+ID4gdGhl IGNvZGUgYW5kIGFkYXB0ZWQgaXQuCj4gCj4gCj4gV291bGQgYSBjb21tb24gZnVuY3Rpb24gbWFr ZSBzZW5zZSBoZXJlPwoKWWVzLCBJIG5hbWVkIGl0IGZmX2ZsYWNfd3JpdGVfcGljdHVyZSBhbmQg cHV0IGl0IGluIGxpYmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5jLCBoZXJlIGlzIHRoZSByZXZpc2Vk IHBhdGNoOgoKU2lnbmVkLW9mZi1ieTogWnNvbHQgVmFkYXN6IDx6c29sdF92YWRhc3pAcHJvdG9u bWFpbC5jb20+Ci0tLQogbGliYXZmb3JtYXQvZmxhY19waWN0dXJlLmMgfCAxMzIgKysrKysrKysr KysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5oIHwgICA1ICsKIGxpYmF2 Zm9ybWF0L2ZsYWNlbmMuYyAgICAgIHwgIDkwICstLS0tLS0tLS0tLS0tLS0KIGxpYmF2Zm9ybWF0 L29nZ2VuYy5jICAgICAgIHwgMjA3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgMzA4IGluc2VydGlvbnMoKyksIDEyNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbGFjX3BpY3R1cmUuYyBiL2xpYmF2Zm9ybWF0L2Zs YWNfcGljdHVyZS5jCmluZGV4IGIzM2ZlZTc1YjQuLjMwMTUyYTJiYTkgMTAwNjQ0Ci0tLSBhL2xp YmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5jCisrKyBiL2xpYmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5j CkBAIC0yMCw2ICsyMCw5IEBACiAgKi8KIAogI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3Jp dGUuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKKyNpbmNsdWRlICJsaWJhdnV0 aWwvYmFzZTY0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKICNpbmNsdWRlICJs aWJhdmNvZGVjL2J5dGVzdHJlYW0uaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL3BuZy5oIgogI2lu Y2x1ZGUgImF2Zm9ybWF0LmgiCkBAIC0xODgsMyArMTkxLDEzMiBAQCBmYWlsOgogCiAgICAgcmV0 dXJuIHJldDsKIH0KKworaW50IGZmX2ZsYWNfd3JpdGVfcGljdHVyZShzdHJ1Y3QgQVZGb3JtYXRD b250ZXh0ICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNvZ2csCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICphdHRhY2hlZF90eXBlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGF1ZGlvX3N0cmVhbV9pZHgsIC8vIHVudXNlZCBpZiAhaXNvZ2cK KyAgICAgICAgICAgICAgICAgICAgICAgICAgQVZQYWNrZXQgKnBrdCkKK3sKKyAgICBBVklPQ29u dGV4dCAqcGIgPSBzLT5wYjsKKyAgICBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKnBpeGRlc2M7 CisgICAgY29uc3QgQ29kZWNNaW1lICptaW1lID0gZmZfaWQzdjJfbWltZV90YWdzOworICAgIEFW RGljdGlvbmFyeUVudHJ5ICplOworICAgIGNvbnN0IGNoYXIgKm1pbWV0eXBlID0gTlVMTCwgKmRl c2MgPSAiIjsKKyAgICBjb25zdCBBVlN0cmVhbSAqc3QgPSBzLT5zdHJlYW1zW3BrdC0+c3RyZWFt X2luZGV4XTsKKyAgICBpbnQgaSwgbWltZWxlbiwgZGVzY2xlbiwgdHlwZSA9IDAsIGJsb2NrbGVu OworCisgICAgaWYgKCFwa3QtPmRhdGEpCisgICAgICAgIHJldHVybiAwOworCisgICAgd2hpbGUg KG1pbWUtPmlkICE9IEFWX0NPREVDX0lEX05PTkUpIHsKKyAgICAgICAgaWYgKG1pbWUtPmlkID09 IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQpIHsKKyAgICAgICAgICAgIG1pbWV0eXBlID0gbWltZS0+ c3RyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbWltZSsrOworICAg IH0KKyAgICBpZiAoIW1pbWV0eXBlKSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1Is ICJObyBtaW1ldHlwZSBpcyBrbm93biBmb3Igc3RyZWFtICVkLCBjYW5ub3QgIgorICAgICAgICAg ICAgICAgIndyaXRlIGFuIGF0dGFjaGVkIHBpY3R1cmUuXG4iLCBzdC0+aW5kZXgpOworICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKyAgICBtaW1lbGVuID0gc3RybGVuKG1p bWV0eXBlKTsKKworICAgIC8qIGdldCB0aGUgcGljdHVyZSB0eXBlICovCisgICAgZSA9IGF2X2Rp Y3RfZ2V0KHN0LT5tZXRhZGF0YSwgImNvbW1lbnQiLCBOVUxMLCAwKTsKKyAgICBmb3IgKGkgPSAw OyBlICYmIGkgPCBGRl9BUlJBWV9FTEVNUyhmZl9pZDN2Ml9waWN0dXJlX3R5cGVzKTsgaSsrKSB7 CisgICAgICAgIGlmICghYXZfc3RyY2FzZWNtcChlLT52YWx1ZSwgZmZfaWQzdjJfcGljdHVyZV90 eXBlc1tpXSkpIHsKKyAgICAgICAgICAgIHR5cGUgPSBpOworICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoKCgqYXR0YWNoZWRfdHlwZXMpICYgKDEgPDwgdHlw ZSkpICYgMHg2KSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJEdXBsaWNhdGUg YXR0YWNobWVudCBmb3IgdHlwZSAnJXMnXG4iLCBmZl9pZDN2Ml9waWN0dXJlX3R5cGVzW3R5cGVd KTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICBpZiAodHlw ZSA9PSAxICYmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1BORyB8fAor ICAgICAgICAgICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+d2lkdGggIT0gMzIgfHwKKyAgICAg ICAgICAgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmhlaWdodCAhPSAzMikpIHsKKyAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkZpbGUgaWNvbiBhdHRhY2htZW50IG11c3QgYmUgYSAz MngzMiBQTkciKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAg ICAqYXR0YWNoZWRfdHlwZXMgfD0gKDEgPDwgdHlwZSk7CisKKyAgICAvKiBnZXQgdGhlIGRlc2Ny aXB0aW9uICovCisgICAgaWYgKChlID0gYXZfZGljdF9nZXQoc3QtPm1ldGFkYXRhLCAidGl0bGUi LCBOVUxMLCAwKSkpCisgICAgICAgIGRlc2MgPSBlLT52YWx1ZTsKKyAgICBkZXNjbGVuID0gc3Ry bGVuKGRlc2MpOworCisgICAgYmxvY2tsZW4gPSA0ICsgNCArIG1pbWVsZW4gKyA0ICsgZGVzY2xl biArIDQgKyA0ICsgNCArIDQgKyA0ICsgcGt0LT5zaXplOworICAgIGlmIChibG9ja2xlbiA+PSAx PDwyNCkgeworICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiUGljdHVyZSBibG9jayB0 b28gYmlnICVkID49ICVkXG4iLCBibG9ja2xlbiwgMTw8MjQpOworICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOworICAgIH0KKworICAgIGlmKCFpc29nZykgeworICAgICAgICBhdmlvX3c4 KHBiLCAweDA2KTsKKyAgICAgICAgYXZpb193YjI0KHBiLCBibG9ja2xlbik7CisKKyAgICAgICAg YXZpb193YjMyKHBiLCB0eXBlKTsKKworICAgICAgICBhdmlvX3diMzIocGIsIG1pbWVsZW4pOwor ICAgICAgICBhdmlvX3dyaXRlKHBiLCBtaW1ldHlwZSwgbWltZWxlbik7CisKKyAgICAgICAgYXZp b193YjMyKHBiLCBkZXNjbGVuKTsKKyAgICAgICAgYXZpb193cml0ZShwYiwgZGVzYywgZGVzY2xl bik7CisKKyAgICAgICAgYXZpb193YjMyKHBiLCBzdC0+Y29kZWNwYXItPndpZHRoKTsKKyAgICAg ICAgYXZpb193YjMyKHBiLCBzdC0+Y29kZWNwYXItPmhlaWdodCk7CisgICAgICAgIGlmICgocGl4 ZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpKSkKKyAgICAg ICAgICAgIGF2aW9fd2IzMihwYiwgYXZfZ2V0X2JpdHNfcGVyX3BpeGVsKHBpeGRlc2MpKTsKKyAg ICAgICAgZWxzZQorICAgICAgICAgICAgYXZpb193YjMyKHBiLCAwKTsKKyAgICAgICAgYXZpb193 YjMyKHBiLCAwKTsKKworICAgICAgICBhdmlvX3diMzIocGIsIHBrdC0+c2l6ZSk7CisgICAgICAg IGF2aW9fd3JpdGUocGIsIHBrdC0+ZGF0YSwgcGt0LT5zaXplKTsKKyAgICB9IGVsc2UgeworICAg ICAgICB1aW50OF90ICptZXRhZGF0YV9ibG9ja19waWN0dXJlLCAqcHRyOworICAgICAgICBpbnQg ZW5jb2RlZF9sZW4sIHJldDsKKyAgICAgICAgY2hhciAqZW5jb2RlZDsKKyAgICAgICAgQVZTdHJl YW0gKmF1ZGlvX3N0cmVhbSA9IHMtPnN0cmVhbXNbYXVkaW9fc3RyZWFtX2lkeF07CisKKyAgICAg ICAgbWV0YWRhdGFfYmxvY2tfcGljdHVyZSA9IGF2X21hbGxvY3ooYmxvY2tsZW4pOworICAgICAg ICBwdHIgPSBtZXRhZGF0YV9ibG9ja19waWN0dXJlOworICAgICAgICBieXRlc3RyZWFtX3B1dF9i ZTMyKCZwdHIsIHR5cGUpOworCisgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgbWlt ZWxlbik7CisgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2J1ZmZlcigmcHRyLCBtaW1ldHlwZSwgbWlt ZWxlbik7CisKKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmcHRyLCBkZXNjbGVuKTsKKyAg ICAgICAgYnl0ZXN0cmVhbV9wdXRfYnVmZmVyKCZwdHIsIGRlc2MsIGRlc2NsZW4pOworCisgICAg ICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgc3QtPmNvZGVjcGFyLT53aWR0aCk7CisgICAg ICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwgc3QtPmNvZGVjcGFyLT5oZWlnaHQpOworICAg ICAgICBpZiAoKHBpeGRlc2MgPSBhdl9waXhfZm10X2Rlc2NfZ2V0KHN0LT5jb2RlY3Bhci0+Zm9y bWF0KSkpCisgICAgICAgICAgICBieXRlc3RyZWFtX3B1dF9iZTMyKCZwdHIsIGF2X2dldF9iaXRz X3Blcl9waXhlbChwaXhkZXNjKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ5dGVzdHJl YW1fcHV0X2JlMzIoJnB0ciwgMCk7CisgICAgICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJnB0ciwg MCk7CisKKyAgICAgICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmcHRyLCBwa3QtPnNpemUpOworICAg ICAgICBieXRlc3RyZWFtX3B1dF9idWZmZXIoJnB0ciwgcGt0LT5kYXRhLCBwa3QtPnNpemUpOwor CisgICAgICAgIGVuY29kZWRfbGVuID0gQVZfQkFTRTY0X1NJWkUoYmxvY2tsZW4pOworICAgICAg ICBlbmNvZGVkID0gYXZfbWFsbG9jeihlbmNvZGVkX2xlbik7CisgICAgICAgIGF2X2Jhc2U2NF9l bmNvZGUoZW5jb2RlZCwgZW5jb2RlZF9sZW4sIG1ldGFkYXRhX2Jsb2NrX3BpY3R1cmUsIGJsb2Nr bGVuKTsKKyAgICAgICAgYXZfZnJlZShtZXRhZGF0YV9ibG9ja19waWN0dXJlKTsKKworICAgICAg ICByZXQgPSBhdl9kaWN0X3NldCgmYXVkaW9fc3RyZWFtLT5tZXRhZGF0YSwgIk1FVEFEQVRBX0JM T0NLX1BJQ1RVUkUiLCBlbmNvZGVkLCAwKTsKKyAgICAgICAgYXZfZnJlZShlbmNvZGVkKTsKKyAg ICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7CisKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAg ICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBh L2xpYmF2Zm9ybWF0L2ZsYWNfcGljdHVyZS5oIGIvbGliYXZmb3JtYXQvZmxhY19waWN0dXJlLmgK aW5kZXggZGIwNzRlNTMxZC4uZWZhMTFhZWUzMiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvZmxh Y19waWN0dXJlLmgKKysrIGIvbGliYXZmb3JtYXQvZmxhY19waWN0dXJlLmgKQEAgLTM5LDUgKzM5 LDEwIEBACiAgKi8KIGludCBmZl9mbGFjX3BhcnNlX3BpY3R1cmUoQVZGb3JtYXRDb250ZXh0ICpz LCB1aW50OF90ICoqYnVmLCBpbnQgYnVmX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCB0cnVuY2F0ZV93b3JrYXJvdW5kKTsKK2ludCBmZl9mbGFjX3dyaXRlX3BpY3R1cmUoc3Ry dWN0IEFWRm9ybWF0Q29udGV4dCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlz b2dnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqYXR0YWNoZWRfdHlwZXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhdWRpb19zdHJlYW1faWR4LAorICAgICAg ICAgICAgICAgICAgICAgICAgICBBVlBhY2tldCAqcGt0KTsKIAogI2VuZGlmIC8qIEFWRk9STUFU X0ZMQUNfUElDVFVSRV9IICovCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbGFjZW5jLmMgYi9s aWJhdmZvcm1hdC9mbGFjZW5jLmMKaW5kZXggZDc5MzBmNGE2ZS4uZWMyNjExM2JiMiAxMDA2NDQK LS0tIGEvbGliYXZmb3JtYXQvZmxhY2VuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L2ZsYWNlbmMuYwpA QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImludGVybmFsLmgiCiAjaW5jbHVkZSAidmVyc2lv bi5oIgogI2luY2x1ZGUgInZvcmJpc2NvbW1lbnQuaCIKKyNpbmNsdWRlICJmbGFjX3BpY3R1cmUu aCIKIAogCiB0eXBlZGVmIHN0cnVjdCBGbGFjTXV4ZXJDb250ZXh0IHsKQEAgLTc4LDk0ICs3OSw5 IEBAIHN0YXRpYyBpbnQgZmxhY193cml0ZV9ibG9ja19jb21tZW50KEFWSU9Db250ZXh0ICpwYiwg QVZEaWN0aW9uYXJ5ICoqbSwKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBmbGFjX3dy aXRlX3BpY3R1cmUoc3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKLXsK LSAgICBGbGFjTXV4ZXJDb250ZXh0ICpjID0gcy0+cHJpdl9kYXRhOwotICAgIEFWSU9Db250ZXh0 ICpwYiA9IHMtPnBiOwotICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqcGl4ZGVzYzsKLSAg ICBjb25zdCBDb2RlY01pbWUgKm1pbWUgPSBmZl9pZDN2Ml9taW1lX3RhZ3M7Ci0gICAgQVZEaWN0 aW9uYXJ5RW50cnkgKmU7Ci0gICAgY29uc3QgY2hhciAqbWltZXR5cGUgPSBOVUxMLCAqZGVzYyA9 ICIiOwotICAgIGNvbnN0IEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbcGt0LT5zdHJlYW1faW5k ZXhdOwotICAgIGludCBpLCBtaW1lbGVuLCBkZXNjbGVuLCB0eXBlID0gMCwgYmxvY2tsZW47Ci0K LSAgICBpZiAoIXBrdC0+ZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB3aGlsZSAobWlt ZS0+aWQgIT0gQVZfQ09ERUNfSURfTk9ORSkgewotICAgICAgICBpZiAobWltZS0+aWQgPT0gc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCkgewotICAgICAgICAgICAgbWltZXR5cGUgPSBtaW1lLT5zdHI7 Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBtaW1lKys7Ci0gICAgfQot ICAgIGlmICghbWltZXR5cGUpIHsKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIk5v IG1pbWV0eXBlIGlzIGtub3duIGZvciBzdHJlYW0gJWQsIGNhbm5vdCAiCi0gICAgICAgICAgICAg ICAid3JpdGUgYW4gYXR0YWNoZWQgcGljdHVyZS5cbiIsIHN0LT5pbmRleCk7Ci0gICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7Ci0gICAgfQotICAgIG1pbWVsZW4gPSBzdHJsZW4obWltZXR5 cGUpOwotCi0gICAgLyogZ2V0IHRoZSBwaWN0dXJlIHR5cGUgKi8KLSAgICBlID0gYXZfZGljdF9n ZXQoc3QtPm1ldGFkYXRhLCAiY29tbWVudCIsIE5VTEwsIDApOwotICAgIGZvciAoaSA9IDA7IGUg JiYgaSA8IEZGX0FSUkFZX0VMRU1TKGZmX2lkM3YyX3BpY3R1cmVfdHlwZXMpOyBpKyspIHsKLSAg ICAgICAgaWYgKCFhdl9zdHJjYXNlY21wKGUtPnZhbHVlLCBmZl9pZDN2Ml9waWN0dXJlX3R5cGVz W2ldKSkgewotICAgICAgICAgICAgdHlwZSA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg ICAgfQotICAgIH0KLQotICAgIGlmICgoYy0+YXR0YWNoZWRfdHlwZXMgJiAoMSA8PCB0eXBlKSkg JiAweDYpIHsKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkR1cGxpY2F0ZSBhdHRh Y2htZW50IGZvciB0eXBlICclcydcbiIsIGZmX2lkM3YyX3BpY3R1cmVfdHlwZXNbdHlwZV0pOwot ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotICAgIH0KLQotICAgIGlmICh0eXBlID09 IDEgJiYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfUE5HIHx8Ci0gICAg ICAgICAgICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT53aWR0aCAhPSAzMiB8fAotICAgICAgICAg ICAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+aGVpZ2h0ICE9IDMyKSkgewotICAgICAgICBhdl9s b2cocywgQVZfTE9HX0VSUk9SLCAiRmlsZSBpY29uIGF0dGFjaG1lbnQgbXVzdCBiZSBhIDMyeDMy IFBORyIpOwotICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwotICAgIH0KLQotICAgIGMt PmF0dGFjaGVkX3R5cGVzIHw9ICgxIDw8IHR5cGUpOwotCi0gICAgLyogZ2V0IHRoZSBkZXNjcmlw dGlvbiAqLwotICAgIGlmICgoZSA9IGF2X2RpY3RfZ2V0KHN0LT5tZXRhZGF0YSwgInRpdGxlIiwg TlVMTCwgMCkpKQotICAgICAgICBkZXNjID0gZS0+dmFsdWU7Ci0gICAgZGVzY2xlbiA9IHN0cmxl bihkZXNjKTsKLQotICAgIGJsb2NrbGVuID0gNCArIDQgKyBtaW1lbGVuICsgNCArIGRlc2NsZW4g KyA0ICsgNCArIDQgKyA0ICsgNCArIHBrdC0+c2l6ZTsKLSAgICBpZiAoYmxvY2tsZW4gPj0gMTw8 MjQpIHsKLSAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIlBpY3R1cmUgYmxvY2sgdG9v IGJpZyAlZCA+PSAlZFxuIiwgYmxvY2tsZW4sIDE8PDI0KTsKLSAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKLSAgICB9Ci0KLSAgICBhdmlvX3c4KHBiLCAweDA2KTsKLSAgICBhdmlvX3di MjQocGIsIGJsb2NrbGVuKTsKLQotICAgIGF2aW9fd2IzMihwYiwgdHlwZSk7Ci0KLSAgICBhdmlv X3diMzIocGIsIG1pbWVsZW4pOwotICAgIGF2aW9fd3JpdGUocGIsIG1pbWV0eXBlLCBtaW1lbGVu KTsKLQotICAgIGF2aW9fd2IzMihwYiwgZGVzY2xlbik7Ci0gICAgYXZpb193cml0ZShwYiwgZGVz YywgZGVzY2xlbik7Ci0KLSAgICBhdmlvX3diMzIocGIsIHN0LT5jb2RlY3Bhci0+d2lkdGgpOwot ICAgIGF2aW9fd2IzMihwYiwgc3QtPmNvZGVjcGFyLT5oZWlnaHQpOwotICAgIGlmICgocGl4ZGVz YyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoc3QtPmNvZGVjcGFyLT5mb3JtYXQpKSkKLSAgICAgICAg YXZpb193YjMyKHBiLCBhdl9nZXRfYml0c19wZXJfcGl4ZWwocGl4ZGVzYykpOwotICAgIGVsc2UK LSAgICAgICAgYXZpb193YjMyKHBiLCAwKTsKLSAgICBhdmlvX3diMzIocGIsIDApOwotCi0gICAg YXZpb193YjMyKHBiLCBwa3QtPnNpemUpOwotICAgIGF2aW9fd3JpdGUocGIsIHBrdC0+ZGF0YSwg cGt0LT5zaXplKTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBmbGFjX2ZpbmlzaF9o ZWFkZXIoc3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcykKIHsKKyAgICBGbGFjTXV4ZXJDb250ZXh0 ICpjID0gcy0+cHJpdl9kYXRhOwogICAgIGludCBpLCByZXQsIHBhZGRpbmcgPSBzLT5tZXRhZGF0 YV9oZWFkZXJfcGFkZGluZzsKICAgICBpZiAocGFkZGluZyA8IDApCiAgICAgICAgIHBhZGRpbmcg PSA4MTkyOwpAQCAtMTc4LDcgKzk0LDcgQEAgc3RhdGljIGludCBmbGFjX2ZpbmlzaF9oZWFkZXIo c3RydWN0IEFWRm9ybWF0Q29udGV4dCAqcykKICAgICAgICAgQVZQYWNrZXQgKnBrdCA9IHN0LT5w cml2X2RhdGE7CiAgICAgICAgIGlmICghcGt0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg ICAgIHJldCA9IGZsYWNfd3JpdGVfcGljdHVyZShzLCBwa3QpOworICAgICAgICByZXQgPSBmZl9m bGFjX3dyaXRlX3BpY3R1cmUocywgMCwgJmMtPmF0dGFjaGVkX3R5cGVzLCAtMSwgcGt0KTsKICAg ICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7CiAgICAgICAgIGlmIChyZXQgPCAwICYmIChzLT5l cnJvcl9yZWNvZ25pdGlvbiAmIEFWX0VGX0VYUExPREUpKQogICAgICAgICAgICAgcmV0dXJuIHJl dDsKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L29nZ2VuYy5jIGIvbGliYXZmb3JtYXQvb2dnZW5j LmMKaW5kZXggNTAwMzMxNGFkYi4uYzYwNGU0OTNmMCAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQv b2dnZW5jLmMKKysrIGIvbGliYXZmb3JtYXQvb2dnZW5jLmMKQEAgLTIzLDE4ICsyMywyNyBAQAog CiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKKyNpbmNsdWRlICJsaWJhdmNvZGVjL2NvZGVjX2lkLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL2F2dXRpbC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9jcmMu aCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbG9nLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL21hdGhl bWF0aWNzLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2dXRp bC9yYW5kb21fc2VlZC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2Jhc2U2NC5oIgor I2luY2x1ZGUgImxpYmF2dXRpbC9ic3dhcC5oIgogI2luY2x1ZGUgImxpYmF2Y29kZWMveGlwaC5o IgogI2luY2x1ZGUgImxpYmF2Y29kZWMvYnl0ZXN0cmVhbS5oIgogI2luY2x1ZGUgImxpYmF2Y29k ZWMvZmxhYy5oIgogI2luY2x1ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAiaWQzdjIuaCIKICNp bmNsdWRlICJhdmlvX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRl ICJ2ZXJzaW9uLmgiCiAjaW5jbHVkZSAidm9yYmlzY29tbWVudC5oIgorI2luY2x1ZGUgImZsYWNf cGljdHVyZS5oIgogCiAjZGVmaW5lIE1BWF9QQUdFX1NJWkUgNjUwMjUKIApAQCAtNzcsNiArODYs MTEgQEAgdHlwZWRlZiBzdHJ1Y3QgT0dHQ29udGV4dCB7CiAgICAgaW50IHByZWZfc2l6ZTsgLy8v PCBwcmVmZXJyZWQgcGFnZSBzaXplICgwID0+IGZpbGwgYWxsIHNlZ21lbnRzKQogICAgIGludDY0 X3QgcHJlZl9kdXJhdGlvbjsgICAgICAvLy88IHByZWZlcnJlZCBwYWdlIGR1cmF0aW9uICgwID0+ IGZpbGwgYWxsIHNlZ21lbnRzKQogICAgIGludCBzZXJpYWxfb2Zmc2V0OworCisgICAgUGFja2V0 TGlzdCBxdWV1ZTsKKyAgICBpbnQgYXVkaW9fc3RyZWFtX2lkeDsKKyAgICBpbnQgd2FpdGluZ19w aWNzOworICAgIHVuc2lnbmVkIGF0dGFjaGVkX3R5cGVzOwogfSBPR0dDb250ZXh0OwogCiAjZGVm aW5lIE9GRlNFVCh4KSBvZmZzZXRvZihPR0dDb250ZXh0LCB4KQpAQCAtNDY4LDEyICs0ODIsMTQg QEAgc3RhdGljIHZvaWQgb2dnX3dyaXRlX3BhZ2VzKEFWRm9ybWF0Q29udGV4dCAqcywgaW50IGZs dXNoKQogICAgIG9nZy0+cGFnZV9saXN0ID0gcDsKIH0KIAotc3RhdGljIGludCBvZ2dfaW5pdChB VkZvcm1hdENvbnRleHQgKnMpCitzdGF0aWMgaW50IG9nZ19maW5pc2hfaW5pdChBVkZvcm1hdENv bnRleHQgKnMpCiB7CiAgICAgT0dHQ29udGV4dCAqb2dnID0gcy0+cHJpdl9kYXRhOwogICAgIE9H R1N0cmVhbUNvbnRleHQgKm9nZ3N0cmVhbSA9IE5VTEw7CiAgICAgaW50IGksIGo7CiAKKyAgICBv Z2ctPndhaXRpbmdfcGljcyA9IDA7CisKICAgICBpZiAob2dnLT5wcmVmX3NpemUpCiAgICAgICAg IGF2X2xvZyhzLCBBVl9MT0dfV0FSTklORywgIlRoZSBwYWdlc2l6ZSBvcHRpb24gaXMgZGVwcmVj YXRlZFxuIik7CiAKQEAgLTQ4MSwyOSArNDk3LDYgQEAgc3RhdGljIGludCBvZ2dfaW5pdChBVkZv cm1hdENvbnRleHQgKnMpCiAgICAgICAgIEFWU3RyZWFtICpzdCA9IHMtPnN0cmVhbXNbaV07CiAg ICAgICAgIHVuc2lnbmVkIHNlcmlhbF9udW0gPSBpICsgb2dnLT5zZXJpYWxfb2Zmc2V0OwogCi0g ICAgICAgIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElP KSB7Ci0gICAgICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9PUFVTKQotICAgICAgICAgICAgICAgIC8qIE9wdXMgcmVxdWlyZXMgYSBmaXhlZCA0OGtIeiBj bG9jayAqLwotICAgICAgICAgICAgICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCA0 ODAwMCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXZwcml2X3NldF9wdHNf aW5mbyhzdCwgNjQsIDEsIHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUpOwotICAgICAgICB9Ci0K LSAgICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfVk9SQklT ICYmCi0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1RI RU9SQSAmJgotICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J RF9TUEVFWCAgJiYKLSAgICAgICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09E RUNfSURfRkxBQyAgICYmCi0gICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFW X0NPREVDX0lEX09QVVMgICAmJgotICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAh PSBBVl9DT0RFQ19JRF9WUDgpIHsKLSAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1Is ICJVbnN1cHBvcnRlZCBjb2RlYyBpZCBpbiBzdHJlYW0gJWRcbiIsIGkpOwotICAgICAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoIXN0LT5j b2RlY3Bhci0+ZXh0cmFkYXRhIHx8ICFzdC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplKSAmJgot ICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9WUDgpIHsK LSAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJObyBleHRyYWRhdGEgcHJlc2Vu dFxuIik7Ci0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKLSAgICAgICAg fQogICAgICAgICBvZ2dzdHJlYW0gPSBhdl9tYWxsb2N6KHNpemVvZigqb2dnc3RyZWFtKSk7CiAg ICAgICAgIGlmICghb2dnc3RyZWFtKQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKQEAgLTU2MSwxMCArNTU0LDExIEBAIHN0YXRpYyBpbnQgb2dnX2luaXQoQVZGb3JtYXRDb250 ZXh0ICpzKQogICAgICAgICAgICAgaW50IGhlYWRlcl90eXBlID0gc3QtPmNvZGVjcGFyLT5jb2Rl Y19pZCA9PSBBVl9DT0RFQ19JRF9WT1JCSVMgPyAzIDogMHg4MTsKICAgICAgICAgICAgIGludCBm cmFtaW5nX2JpdCA9IHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVk9SQklT ID8gMSA6IDA7CiAKLSAgICAgICAgICAgIGlmIChhdnByaXZfc3BsaXRfeGlwaF9oZWFkZXJzKHN0 LT5jb2RlY3Bhci0+ZXh0cmFkYXRhLCBzdC0+Y29kZWNwYXItPmV4dHJhZGF0YV9zaXplLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX1ZPUkJJUyA/IDMwIDogNDIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90Kiopb2dnc3RyZWFtLT5oZWFkZXIsIG9nZ3N0 cmVhbS0+aGVhZGVyX2xlbikgPCAwKSB7Ci0gICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19FUlJPUiwgIkV4dHJhZGF0YSBjb3JydXB0ZWRcbiIpOworICAgICAgICAgICAgaWYgKCEoc3Qt PmRpc3Bvc2l0aW9uICYgQVZfRElTUE9TSVRJT05fQVRUQUNIRURfUElDKSAmJgorICAgICAgICAg ICAgICAgIGF2cHJpdl9zcGxpdF94aXBoX2hlYWRlcnMoc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEs IHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZP UkJJUyA/IDMwIDogNDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29uc3QgdWludDhfdCoqKW9nZ3N0cmVhbS0+aGVhZGVyLCBvZ2dzdHJlYW0tPmhlYWRlcl9s ZW4pIDwgMCkgeworICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJFeHRy YWRhdGEgY29ycnVwdGVkIGZvciBzdHJlYW0gIyVkXG4iLCBpKTsKICAgICAgICAgICAgICAgICBv Z2dzdHJlYW0tPmhlYWRlclsxXSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7CiAgICAgICAgICAgICB9CkBAIC02MDEsNyArNTk1LDU5IEBAIHN0YXRp YyBpbnQgb2dnX2luaXQoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgIHJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IG9nZ193cml0ZV9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQorc3RhdGljIGlu dCBvZ2dfaW5pdChBVkZvcm1hdENvbnRleHQgKnMpCit7CisgICAgT0dHQ29udGV4dCAqb2dnID0g cy0+cHJpdl9kYXRhOworICAgIGludCBpOworCisgICAgb2dnLT53YWl0aW5nX3BpY3MgPSAwOwor ICAgIG9nZy0+YXR0YWNoZWRfdHlwZXMgPSAwOworCisgICAgaWYgKG9nZy0+cHJlZl9zaXplKQor ICAgICAgICBhdl9sb2cocywgQVZfTE9HX1dBUk5JTkcsICJUaGUgcGFnZXNpemUgb3B0aW9uIGlz IGRlcHJlY2F0ZWRcbiIpOworCisgICAgZm9yIChpID0gMDsgaSA8IHMtPm5iX3N0cmVhbXM7IGkr KykgeworICAgICAgICBBVlN0cmVhbSAqc3QgPSBzLT5zdHJlYW1zW2ldOworCisgICAgICAgIGlm IChzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7CisgICAg ICAgICAgICBvZ2ctPmF1ZGlvX3N0cmVhbV9pZHggPSBpOworICAgICAgICAgICAgaWYgKHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfT1BVUykKKyAgICAgICAgICAgICAgICAv KiBPcHVzIHJlcXVpcmVzIGEgZml4ZWQgNDhrSHogY2xvY2sgKi8KKyAgICAgICAgICAgICAgICBh dnByaXZfc2V0X3B0c19pbmZvKHN0LCA2NCwgMSwgNDgwMDApOworICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCBzdC0+Y29kZWNw YXItPnNhbXBsZV9yYXRlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdC0+Y29kZWNwYXIt PmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1ZPUkJJUyAmJgorICAgICAgICAgICAgc3QtPmNvZGVj cGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9USEVPUkEgJiYKKyAgICAgICAgICAgIHN0LT5j b2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfU1BFRVggICYmCisgICAgICAgICAgICBz dC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0ZMQUMgICAmJgorICAgICAgICAg ICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9PUFVTICAgJiYKKyAgICAg ICAgICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfVlA4ICAgICYmCisg ICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1BORyAgICAm JgorICAgICAgICAgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NSlBF RykgeworICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVkIGNv ZGVjIGlkIGluIHN0cmVhbSAlZFxuIiwgaSk7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihF SU5WQUwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCghc3QtPmNvZGVjcGFyLT5leHRyYWRh dGEgfHwgIXN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhX3NpemUpICYmCisgICAgICAgICAgICBzdC0+ Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX1ZQOCAmJgorICAgICAgICAgICAgc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9QTkcgJiYKKyAgICAgICAgICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTUpQRUcpIHsKKyAgICAgICAgICAg IGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJObyBleHRyYWRhdGEgcHJlc2VudFxuIik7CisgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQorICAgICAgICBp ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTyAmJgorICAg ICAgICAgICAgKHN0LT5kaXNwb3NpdGlvbiAmIEFWX0RJU1BPU0lUSU9OX0FUVEFDSEVEX1BJQykp CisgICAgICAgICAgICBvZ2ctPndhaXRpbmdfcGljcysrOworICAgIH0KKworICAgIGlmICghb2dn LT53YWl0aW5nX3BpY3MpCisgICAgICAgIHJldHVybiBvZ2dfZmluaXNoX2luaXQocyk7CisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb2dnX2ZpbmlzaF9oZWFkZXIoQVZGb3JtYXRDb250 ZXh0ICpzKQogewogICAgIE9HR1N0cmVhbUNvbnRleHQgKm9nZ3N0cmVhbSA9IE5VTEw7CiAgICAg aW50IGksIGo7CkBAIC02MzEsNiArNjc3LDE0IEBAIHN0YXRpYyBpbnQgb2dnX3dyaXRlX2hlYWRl cihBVkZvcm1hdENvbnRleHQgKnMpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2dn X3dyaXRlX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCit7CisgICAgT0dHQ29udGV4dCAqb2dn ID0gcy0+cHJpdl9kYXRhOworICAgIGlmICghb2dnLT53YWl0aW5nX3BpY3MpCisgICAgICAgIHJl dHVybiBvZ2dfZmluaXNoX2hlYWRlcihzKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGlu dCBvZ2dfd3JpdGVfcGFja2V0X2ludGVybmFsKEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQg KnBrdCkKIHsKICAgICBBVlN0cmVhbSAqc3QgPSBzLT5zdHJlYW1zW3BrdC0+c3RyZWFtX2luZGV4 XTsKQEAgLTY4MywyMCArNzM3LDkyIEBAIHN0YXRpYyBpbnQgb2dnX3dyaXRlX3BhY2tldF9pbnRl cm5hbChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCiAgICAgcmV0dXJuIDA7CiB9 CiAKK3N0YXRpYyBpbnQgb2dnX3F1ZXVlX2ZsdXNoKEFWRm9ybWF0Q29udGV4dCAqcykKK3sKKyAg ICBPR0dDb250ZXh0ICpjID0gcy0+cHJpdl9kYXRhOworICAgIEFWUGFja2V0ICpjb25zdCBwa3Qg PSBmZmZvcm1hdGNvbnRleHQocyktPnBrdDsKKyAgICBpbnQgcmV0LCB3cml0ZSA9IDE7CisgICAg cmV0ID0gb2dnX2ZpbmlzaF9pbml0KHMpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICB3cml0 ZSA9IDA7CisgICAgcmV0ID0gb2dnX2ZpbmlzaF9oZWFkZXIocyk7CisgICAgaWYgKHJldCA8IDAp CisgICAgICAgIHdyaXRlID0gMDsKKworICAgIHdoaWxlIChjLT5xdWV1ZS5oZWFkKSB7CisgICAg ICAgIGF2cHJpdl9wYWNrZXRfbGlzdF9nZXQoJmMtPnF1ZXVlLCBwa3QpOworICAgICAgICBpZiAo d3JpdGUgJiYgKHJldCA9IG9nZ193cml0ZV9wYWNrZXRfaW50ZXJuYWwocywgcGt0KSkgPCAwKQor ICAgICAgICAgICAgd3JpdGUgPSAwOworICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKyAg ICB9CisgICAgcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBvZ2dfd3JpdGVfcGFja2V0KEFW Rm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKIHsKLSAgICBpbnQgaTsKKyAgICBPR0dD b250ZXh0ICpjID0gcy0+cHJpdl9kYXRhOworICAgIGludCBpLCByZXQ7CisKKyAgICBpZiAocGt0 ICYmIHBrdC0+c2l6ZSkgeworICAgICAgICBpZiAocGt0LT5zdHJlYW1faW5kZXggPT0gYy0+YXVk aW9fc3RyZWFtX2lkeCkgeworICAgICAgICAgICAgaWYgKGMtPndhaXRpbmdfcGljcykgeworICAg ICAgICAgICAgICAgIC8qIGJ1ZmZlciBhdWRpbyBwYWNrZXRzIHVudGlsIHdlIGdldCBhbGwgdGhl IHBpY3R1cmVzICovCisgICAgICAgICAgICAgICAgcmV0ID0gYXZwcml2X3BhY2tldF9saXN0X3B1 dCgmYy0+cXVldWUsIHBrdCwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgaWYgKHJldCA8IDAp IHsKKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIk91dCBvZiBt ZW1vcnkgaW4gcGFja2V0IHF1ZXVlOyBza2lwcGluZyBhdHRhY2hlZCBwaWN0dXJlc1xuIik7Cisg ICAgICAgICAgICAgICAgICAgIGMtPndhaXRpbmdfcGljcyA9IDA7CisgICAgICAgICAgICAgICAg ICAgIHJldCA9IG9nZ19xdWV1ZV9mbHVzaChzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJl dCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gb2dnX3dyaXRlX3BhY2tldF9pbnRlcm5hbChzLCBwa3QpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBv Z2dfd3JpdGVfcGFja2V0X2ludGVybmFsKHMsIHBrdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICBBVlN0cmVhbSAqc3QgPSBzLT5zdHJlYW1zW3BrdC0+c3RyZWFtX2luZGV4XTsKIAot ICAgIGlmIChwa3QgJiYgcGt0LT5zaXplKQotICAgICAgICByZXR1cm4gb2dnX3dyaXRlX3BhY2tl dF9pbnRlcm5hbChzLCBwa3QpOworICAgICAgICAgICAgaWYgKCFjLT53YWl0aW5nX3BpY3MgfHwK KyAgICAgICAgICAgICAgICAhKHN0LT5kaXNwb3NpdGlvbiAmIEFWX0RJU1BPU0lUSU9OX0FUVEFD SEVEX1BJQykpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmb3IgKGkgPSAwOyBp IDwgcy0+bmJfc3RyZWFtczsgaSsrKSB7Ci0gICAgICAgIE9HR1N0cmVhbUNvbnRleHQgKm9nZ3N0 cmVhbSA9IHMtPnN0cmVhbXNbaV0tPnByaXZfZGF0YTsKLSAgICAgICAgaWYgKG9nZ3N0cmVhbS0+ cGFnZS5zZWdtZW50c19jb3VudCkKLSAgICAgICAgICAgIG9nZ19idWZmZXJfcGFnZShzLCBvZ2dz dHJlYW0pOwotICAgIH0KKyAgICAgICAgICAgIC8qIHdhcm4gb25seSBvbmNlIGZvciBlYWNoIHN0 cmVhbSAqLworICAgICAgICAgICAgaWYgKHN0LT5uYl9mcmFtZXMgPT0gMSkgeworICAgICAgICAg ICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfV0FSTklORywgIkdvdCBtb3JlIHRoYW4gb25lIHBpY3R1 cmUgaW4gc3RyZWFtICVkLCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBpZ25vcmluZy5cbiIs IHBrdC0+c3RyZWFtX2luZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdC0+ bmJfZnJhbWVzID49IDEpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX1dBUk5J TkcsICJBdHRhY2hlZCBwaWN0dXJlIG11c3Qgbm90IGhhdmUgbW9yZSB0aGFuIG9uZSBmcmFtZS5c biIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogCi0gICAgb2dn X3dyaXRlX3BhZ2VzKHMsIDIpOworICAgICAgICAgICAgLy9zdC0+cHJpdl9kYXRhID0gYXZfcGFj a2V0X2Nsb25lKHBrdCk7CisgICAgICAgICAgICAvL2lmICghc3QtPnByaXZfZGF0YSkKKyAgICAg ICAgICAgIC8vICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJPdXQgb2YgbWVtb3J5IHF1ZXVl aW5nIGFuIGF0dGFjaGVkIHBpY3R1cmU7IHNraXBwaW5nXG4iKTsKKyAgICAgICAgICAgIHJldCA9 IGZmX2ZsYWNfd3JpdGVfcGljdHVyZShzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMt PmF0dGFjaGVkX3R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGMtPmF1ZGlvX3N0cmVhbV9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGt0KTsKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBwcm9jZXNzIGF0dGFjaGVkIHBpY3R1 cmUuXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAg ICAgICAgICAgYy0+d2FpdGluZ19waWNzLS07CisKKyAgICAgICAgICAgIC8qIGZsdXNoIHRoZSBi dWZmZXJlZCBhdWRpbyBwYWNrZXRzICovCisgICAgICAgICAgICBpZiAoIWMtPndhaXRpbmdfcGlj cyAmJgorICAgICAgICAgICAgICAgIChyZXQgPSBvZ2dfcXVldWVfZmx1c2gocykpIDwgMCkKKyAg ICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg ICAgZm9yIChpID0gMDsgaSA8IHMtPm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICAgICAgT0dH U3RyZWFtQ29udGV4dCAqb2dnc3RyZWFtID0gcy0+c3RyZWFtc1tpXS0+cHJpdl9kYXRhOworICAg ICAgICAgICAgaWYgKG9nZ3N0cmVhbS0+cGFnZS5zZWdtZW50c19jb3VudCkKKyAgICAgICAgICAg ICAgICBvZ2dfYnVmZmVyX3BhZ2Uocywgb2dnc3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAg IG9nZ193cml0ZV9wYWdlcyhzLCAyKTsKKyAgICB9CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTcz NCw3ICs4NjAsOSBAQCBzdGF0aWMgdm9pZCBvZ2dfZnJlZShBVkZvcm1hdENvbnRleHQgKnMpCiAg ICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCkgewog ICAgICAgICAgICAgYXZfZnJlZXAoJm9nZ3N0cmVhbS0+aGVhZGVyWzBdKTsKICAgICAgICAgfQot ICAgICAgICBhdl9mcmVlcCgmb2dnc3RyZWFtLT5oZWFkZXJbMV0pOworICAgICAgICBpZiAoc3Qt PmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9QTkcgJiYKKyAgICAgICAgICAgIHN0 LT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTUpQRUcpCisgICAgICAgICAgICBh dl9mcmVlcCgmb2dnc3RyZWFtLT5oZWFkZXJbMV0pOwogICAgIH0KIAogICAgIHdoaWxlIChwKSB7 CkBAIC04NDAsNiArOTY4LDcgQEAgY29uc3QgQVZPdXRwdXRGb3JtYXQgZmZfb3B1c19tdXhlciA9 IHsKICAgICAuZXh0ZW5zaW9ucyAgICAgICAgPSAib3B1cyIsCiAgICAgLnByaXZfZGF0YV9zaXpl ICAgID0gc2l6ZW9mKE9HR0NvbnRleHQpLAogICAgIC5hdWRpb19jb2RlYyAgICAgICA9IEFWX0NP REVDX0lEX09QVVMsCisgICAgLnZpZGVvX2NvZGVjICAgICAgID0gQVZfQ09ERUNfSURfUE5HLAog ICAgIC5pbml0ICAgICAgICAgICAgICA9IG9nZ19pbml0LAogICAgIC53cml0ZV9oZWFkZXIgICAg ICA9IG9nZ193cml0ZV9oZWFkZXIsCiAgICAgLndyaXRlX3BhY2tldCAgICAgID0gb2dnX3dyaXRl X3BhY2tldCwKLS0gCjIuMzkuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRv IHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVx dWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=