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 5A855424EC for ; Tue, 29 Mar 2022 19:35:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CDD5468B10D; Tue, 29 Mar 2022 22:35:54 +0300 (EEST) Received: from mail-oa1-f42.google.com (mail-oa1-f42.google.com [209.85.160.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5183468A6F6 for ; Tue, 29 Mar 2022 22:35:48 +0300 (EEST) Received: by mail-oa1-f42.google.com with SMTP id 586e51a60fabf-d39f741ba0so19827939fac.13 for ; Tue, 29 Mar 2022 12:35:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=J0Px8JMbiqZy5j1rW2ZONbGFCHhlnWVQRUoguav74P0=; b=UFoo6QVsbiZO9w9cfTx6HMMB0sGxfzZlte4yXLvQGP7tEBKlbiKsxFP/LHiWRegM7J a6mklbCV0dryaKwcgNii4kMj7y//8X9o+b+/KKcZn1poq9iNHxyz3QdMHX7iNOE934JW 7ocnlYH6JYobEHrG1EgnJNuI/KLtBFRxxcBxrkxRsW/ZzUnexuolz2kQdsp0lqoni3jT VAzPShmCp4N1rbYit5917skvOWNHuWqHuXU926coBCD7MV4wwirkaU3pOoYWNDx8kDUl bxb7gJtm+MhDTl4gG0U37Tck/p78X+vhhnbJ/SohePIeaUP8F5MpcmfY6qyP4VWEkZvI gztQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=J0Px8JMbiqZy5j1rW2ZONbGFCHhlnWVQRUoguav74P0=; b=YIxZ2s9u1lxcDBmq0XcpIw+5eQx+xRARPeD6meTlUeaLYJUrFGVPBEELH4UWbDqS36 Tyyj4SpysaFBR21mClD2IJnCMS0MOkkPyNQC7FddlEk85zqQ8DLpiO97ACx5NM2XQijw 8+bq4pnKheJ5PFq/N/O2+PkhYZp/hzMhzkIkujh37zHe8lJZREXEADeL6HzYjEt0HZdK SeKrNMPqzN/QqLV9FVbYOv571MOwWbWewT6BwLEdHd7O55sNK0ixtT4UA2oY9/ULdImQ rGHVX1dl282Z7NM03nmPqAk9rpgJf/JvOqKB2k+F+Ov3/mPfE3JsYAmzAlrmy+DUiU49 o+zg== X-Gm-Message-State: AOAM530Hn5LaGv3TIhpTJrpX9LE6P0l8S2sYP64NwlxqlMmRzMzLEthu KuK5R9SgnBqKzBVqtD7TdBZ2dRX16FOLyQ== X-Google-Smtp-Source: ABdhPJzEYhx9XHCq6Wbgf9YWQLzBAQCZpIrRNh5oNsEu9ygbhjUBsrBr6vU+lNXCvNkYMFavkG0IEg== X-Received: by 2002:a05:6870:a406:b0:dd:d34d:2edf with SMTP id m6-20020a056870a40600b000ddd34d2edfmr434856oal.157.1648582546211; Tue, 29 Mar 2022 12:35:46 -0700 (PDT) Received: from [192.168.0.12] ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id o64-20020acad743000000b002ef3b249b9esm9440556oig.58.2022.03.29.12.35.44 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Mar 2022 12:35:45 -0700 (PDT) Message-ID: Date: Tue, 29 Mar 2022 16:35:43 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220317233019.12049-1-michael@niedermayer.cc> <20220317233019.12049-2-michael@niedermayer.cc> <74943f9e-b07a-7fe4-fa83-09a9cbda21a0@gmail.com> <20220318112758.GR2829255@pb2> <20220319175234.GB2829255@pb2> <20220329190233.GL2829255@pb2> From: James Almer In-Reply-To: <20220329190233.GL2829255@pb2> Subject: Re: [FFmpeg-devel] [PATCH 2/3] avcodec/wmalosslessdec: Check channel mask against num channels 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMy8yOS8yMDIyIDQ6MDIgUE0sIE1pY2hhZWwgTmllZGVybWF5ZXIgd3JvdGU6Cj4gT24gU2F0 LCBNYXIgMTksIDIwMjIgYXQgMDY6NTI6MzRQTSArMDEwMCwgTWljaGFlbCBOaWVkZXJtYXllciB3 cm90ZToKPj4gT24gRnJpLCBNYXIgMTgsIDIwMjIgYXQgMDg6Mzg6MjhBTSAtMDMwMCwgSmFtZXMg QWxtZXIgd3JvdGU6Cj4+Pgo+Pj4KPj4+IE9uIDMvMTgvMjAyMiA4OjI3IEFNLCBNaWNoYWVsIE5p ZWRlcm1heWVyIHdyb3RlOgo+Pj4+IE9uIFRodSwgTWFyIDE3LCAyMDIyIGF0IDEwOjAwOjE4UE0g LTAzMDAsIEphbWVzIEFsbWVyIHdyb3RlOgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBPbiAzLzE3LzIwMjIg OTowNyBQTSwgSmFtZXMgQWxtZXIgd3JvdGU6Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IE9uIDMvMTcv MjAyMiA4OjUyIFBNLCBKYW1lcyBBbG1lciB3cm90ZToKPj4+Pj4+PiBPbiAzLzE3LzIwMjIgODoz MCBQTSwgTWljaGFlbCBOaWVkZXJtYXllciB3cm90ZToKPj4+Pj4+Pj4gRml4ZXM6IE91dCBvZiBh cnJheSB3cml0ZQo+Pj4+Pj4+PiBGaXhlczogNDU2MTMvY2x1c3RlcmZ1enotdGVzdGNhc2UtbWlu aW1pemVkLWZmbXBlZ19BVl9DT0RFQ19JRF9XTUFMT1NTTEVTU19mdXp6ZXItNDUzOTA3MzYwNjMy MDEyOAo+Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBGb3VuZC1ieTogY29udGludW91cyBmdXp6 aW5nIHByb2Nlc3MKPj4+Pj4+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9vc3MtZnV6ei90 cmVlL21hc3Rlci9wcm9qZWN0cy9mZm1wZWcKPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTWljaGFl bCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KPj4+Pj4+Pj4gLS0tCj4+Pj4+ Pj4+ICAgwqAgbGliYXZjb2RlYy93bWFsb3NzbGVzc2RlYy5jIHwgMyArKysKPj4+Pj4+Pj4gICDC oCAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IGRpZmYg LS1naXQgYS9saWJhdmNvZGVjL3dtYWxvc3NsZXNzZGVjLmMgYi9saWJhdmNvZGVjL3dtYWxvc3Ns ZXNzZGVjLmMKPj4+Pj4+Pj4gaW5kZXggY2QwNWIyMjY4OS4uMTcyODkyMDcyOSAxMDA2NDQKPj4+ Pj4+Pj4gLS0tIGEvbGliYXZjb2RlYy93bWFsb3NzbGVzc2RlYy5jCj4+Pj4+Pj4+ICsrKyBiL2xp YmF2Y29kZWMvd21hbG9zc2xlc3NkZWMuYwo+Pj4+Pj4+PiBAQCAtMjgxLDYgKzI4MSw5IEBAIHN0 YXRpYyBhdl9jb2xkIGludAo+Pj4+Pj4+PiBkZWNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZj dHgpCj4+Pj4+Pj4+ICAgwqDCoMKgwqDCoCBhdl9jaGFubmVsX2xheW91dF91bmluaXQoJmF2Y3R4 LT5jaF9sYXlvdXQpOwo+Pj4+Pj4+PiAgIMKgwqDCoMKgwqAgYXZfY2hhbm5lbF9sYXlvdXRfZnJv bV9tYXNrKCZhdmN0eC0+Y2hfbGF5b3V0LCBjaGFubmVsX21hc2spOwo+Pj4+Pj4+PiArwqDCoMKg IGlmIChzLT5udW1fY2hhbm5lbHMgIT0gYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVscykKPj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsgLy9hcmUg dGhlcmUgbm9uIGZ1enplZAo+Pj4+Pj4+PiBmaWxlcyB3aXRoIHRoaXMgb3IgaXMgaXQgYW4gZXJy b3IgPwo+Pj4+Pj4+Cj4+Pj4+Pj4gcy0+bnVtX2NoYW5uZWxzIGF0IHRoaXMgcG9pbnQgaXMgc2V0 IHRvIHRoZSBjaGFubmVscyBjb3VudCB0aGUgdXNlcgo+Pj4+Pj4+IHNldCBiZWZvcmUgY2FsbGlu ZyBhdmNvZGVjX29wZW4yKCkgKE5vcm1hbGx5IGZyb20gbGF2ZiksIGJ1dCBpdAo+Pj4+Pj4+IGNv dWxkIGJlIGFueXRoaW5nLgo+Pj4+Pj4+IElmIGNoYW5uZWxfbWFzayBpcyB0YWtlbiBmcm9tIGV4 dHJhZGF0YSwgbWF5YmUgaXQgc2hvdWxkIGJlIHVzZWQgdG8KPj4+Pj4+PiBzZXQgcy0+bnVtX2No YW5uZWxzIGluc3RlYWQgb2YgYWJvcnRpbmcgYmVjYXVzZSB0aGUgdXNlciBzZXQgdmFsdWUKPj4+ Pj4+PiBhbmQgZXh0cmFkYXRhIGRpc2FncmVlZC4KPj4+Pj4+Pgo+Pj4+Pj4+IEFsc28sIGNhbiB5 b3UgcmVwcm9kdWNlIHRoaXMgY3Jhc2ggYmVmb3JlIDNjOTMzYWY0OTM/Cj4+Pj4+Pj4gcy0+bnVt X2NoYW5uZWxzIHdhcyBiZWluZyBzZXQgdG8gdGhlIHVzZXIgc2V0IGNoYW5uZWwgY291bnQgdG9v LAo+Pj4+Pj4+IHNhbWUgYXMgbm93Lgo+Pj4+Pj4KPj4+Pj4+IFJpZ2h0LCBiZWZvcmUgdGhhdCBj b21taXQgcy0+bnVtX2NoYW5uZWxzIGFuZCBhdmN0eC0+Y2hhbm5lbHMgd2VyZQo+Pj4+Pj4gYWx3 YXlzIHRoZSBzYW1lLCBidXQgYXZjdHgtPmNoYW5uZWxfbGF5b3V0IHdhcyB3aGF0ZXZlciBjYW1l IGZyb20KPj4+Pj4+IGV4dHJhZGF0YSwgYW5kIGl0cyBwb3BjbnQgY291bGQgYmUgIT0gYXZjdHgt PmNoYW5uZWxzLgo+Pj4+Pj4gQWZ0ZXIgaXQsIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMg aXMgYWx3YXlzIHRoZSBzYW1lIGFzCj4+Pj4+PiBwb3BjbnQoYXZjdHgtPmNoX2xheW91dC51Lm1h c2spLCB3aGljaCBjYW4gYmUgZGlmZmVyZW50IHRoYW4KPj4+Pj4+IHMtPm51bV9jaGFubmVscy4K Pj4+Pj4+Cj4+Pj4+PiBJIHRoaW5rIG15IHN1Z2dlc3Rpb24gYWJvdmUgdG8gdXNlIHRoZSBleHRy YWRhdGEgY2hhbm5lbCBtYXNrIGFuZAo+Pj4+Pj4gaWdub3JpbmcgdGhlIHVzZXIgc2V0IGNoYW5u ZWwgY291bnQgaXMgdGhlIGJlc3QgYXBwcm9hY2ggZm9yIHRoaXMuCj4+Pj4+Cj4+Pj4+IExpa2Ug dGhpcyBtYXliZSAoY2hhbm5lbF9tYXNrIGNvdWxkIGluIHRoZW9yeSBiZSB6ZXJvLCBzbyBpbiB0 aGF0IGNhc2UgdGhlCj4+Pj4+IHVzZXIgc2V0IHZhbHVlIHNob3VsZCBiZSB1c2VkKS4KPj4+Pj4K Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3dtYWxvc3NsZXNzZGVjLmMgYi9saWJhdmNv ZGVjL3dtYWxvc3NsZXNzZGVjLmMKPj4+Pj4+IGluZGV4IGNkMDViMjI2ODkuLjkxNWFkZDE5NjIg MTAwNjQ0Cj4+Pj4+PiAtLS0gYS9saWJhdmNvZGVjL3dtYWxvc3NsZXNzZGVjLmMKPj4+Pj4+ICsr KyBiL2xpYmF2Y29kZWMvd21hbG9zc2xlc3NkZWMuYwo+Pj4+Pj4gQEAgLTE5NywxNSArMTk3LDYg QEAgc3RhdGljIGF2X2NvbGQgaW50IGRlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkK Pj4+Pj4+ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOwo+Pj4+Pj4gICAg ICAgIH0KPj4+Pj4+Cj4+Pj4+PiAtICAgIHMtPm1heF9mcmFtZV9zaXplID0gTUFYX0ZSQU1FU0la RSAqIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4+Pj4+PiAtICAgIHMtPmZyYW1lX2Rh dGEgPSBhdl9tYWxsb2N6KHMtPm1heF9mcmFtZV9zaXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJ TkdfU0laRSk7Cj4+Pj4+PiAtICAgIGlmICghcy0+ZnJhbWVfZGF0YSkKPj4+Pj4+IC0gICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+Pj4+PiAtCj4+Pj4+PiAtICAgIHMtPmF2Y3R4ID0g YXZjdHg7Cj4+Pj4+PiAtICAgIGZmX2xsYXVkZHNwX2luaXQoJnMtPmRzcCk7Cj4+Pj4+PiAtICAg IGluaXRfcHV0X2JpdHMoJnMtPnBiLCBzLT5mcmFtZV9kYXRhLCBzLT5tYXhfZnJhbWVfc2l6ZSk7 Cj4+Pj4+PiAtCj4+Pj4+PiAgICAgICAgaWYgKGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSA+PSAxOCkg ewo+Pj4+Pj4gICAgICAgICAgICBzLT5kZWNvZGVfZmxhZ3MgICAgPSBBVl9STDE2KGVkYXRhX3B0 ciArIDE0KTsKPj4+Pj4+ICAgICAgICAgICAgY2hhbm5lbF9tYXNrICAgICAgID0gQVZfUkwzMihl ZGF0YV9wdHIgKyAgMik7Cj4+Pj4+PiBAQCAtMjMwLDYgKzIyMSwzMyBAQCBzdGF0aWMgYXZfY29s ZCBpbnQgZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+Pj4+Pj4gICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Cj4+Pj4+PiAgICAgICAgfQo+Pj4+Pj4KPj4+ Pj4+ICsgICAgaWYgKGNoYW5uZWxfbWFzaykgewo+Pj4+Pj4gKyAgICAgICAgYXZfY2hhbm5lbF9s YXlvdXRfdW5pbml0KCZhdmN0eC0+Y2hfbGF5b3V0KTsKPj4+Pj4+ICsgICAgICAgIGF2X2NoYW5u ZWxfbGF5b3V0X2Zyb21fbWFzaygmYXZjdHgtPmNoX2xheW91dCwgY2hhbm5lbF9tYXNrKTsKPj4+ Pj4+ICsgICAgfSBlbHNlCj4+Pj4+PiArICAgICAgICBhdmN0eC0+Y2hfbGF5b3V0Lm9yZGVyID0g QVZfQ0hBTk5FTF9PUkRFUl9VTlNQRUM7Cj4+Pj4+PiArCj4+Pj4+PiArICAgIHMtPm51bV9jaGFu bmVscyA9IGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4+Pj4+PiArCj4+Pj4+PiArICAg IC8qIGV4dHJhY3QgbGZlIGNoYW5uZWwgcG9zaXRpb24gKi8KPj4+Pj4+ICsgICAgcy0+bGZlX2No YW5uZWwgPSAtMTsKPj4+Pj4+ICsKPj4+Pj4+ICsgICAgaWYgKGNoYW5uZWxfbWFzayAmIDgpIHsK Pj4+Pj4+ICsgICAgICAgIHVuc2lnbmVkIGludCBtYXNrOwo+Pj4+Pj4gKyAgICAgICAgZm9yICht YXNrID0gMTsgbWFzayA8IDE2OyBtYXNrIDw8PSAxKQo+Pj4+Pj4gKyAgICAgICAgICAgIGlmIChj aGFubmVsX21hc2sgJiBtYXNrKQo+Pj4+Pj4gKyAgICAgICAgICAgICAgICArK3MtPmxmZV9jaGFu bmVsOwo+Pj4+Pj4gKyAgICB9Cj4+Pj4+PiArCj4+Pj4+PiArICAgIHMtPm1heF9mcmFtZV9zaXpl ID0gTUFYX0ZSQU1FU0laRSAqIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7Cj4+Pj4+PiAr ICAgIHMtPmZyYW1lX2RhdGEgPSBhdl9tYWxsb2N6KHMtPm1heF9mcmFtZV9zaXplICsgQVZfSU5Q VVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Cj4+Pj4+PiArICAgIGlmICghcy0+ZnJhbWVfZGF0YSkK Pj4+Pj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+Pj4+PiArCj4+Pj4+PiAr ICAgIHMtPmF2Y3R4ID0gYXZjdHg7Cj4+Pj4+PiArICAgIGZmX2xsYXVkZHNwX2luaXQoJnMtPmRz cCk7Cj4+Pj4+PiArICAgIGluaXRfcHV0X2JpdHMoJnMtPnBiLCBzLT5mcmFtZV9kYXRhLCBzLT5t YXhfZnJhbWVfc2l6ZSk7Cj4+Pj4+PiArCj4+Pj4+PiAgICAgICAgLyogZ2VuZXJpYyBpbml0ICov Cj4+Pj4+PiAgICAgICAgcy0+bG9nMl9mcmFtZV9zaXplID0gYXZfbG9nMihhdmN0eC0+YmxvY2tf YWxpZ24pICsgNDsKPj4+Pj4+Cj4+Pj4+PiBAQCAtMjYzLDI0ICsyODEsMTAgQEAgc3RhdGljIGF2 X2NvbGQgaW50IGRlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPj4+Pj4+ICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4+Pj4+PiAgICAgICAgfQo+Pj4+Pj4K Pj4+Pj4+IC0gICAgcy0+bnVtX2NoYW5uZWxzID0gYXZjdHgtPmNoX2xheW91dC5uYl9jaGFubmVs czsKPj4+Pj4+IC0KPj4+Pj4+IC0gICAgLyogZXh0cmFjdCBsZmUgY2hhbm5lbCBwb3NpdGlvbiAq Lwo+Pj4+Pj4gLSAgICBzLT5sZmVfY2hhbm5lbCA9IC0xOwo+Pj4+Pj4gLQo+Pj4+Pj4gLSAgICBp ZiAoY2hhbm5lbF9tYXNrICYgOCkgewo+Pj4+Pj4gLSAgICAgICAgdW5zaWduZWQgaW50IG1hc2s7 Cj4+Pj4+PiAtICAgICAgICBmb3IgKG1hc2sgPSAxOyBtYXNrIDwgMTY7IG1hc2sgPDw9IDEpCj4+ Pj4+PiAtICAgICAgICAgICAgaWYgKGNoYW5uZWxfbWFzayAmIG1hc2spCj4+Pj4+PiAtICAgICAg ICAgICAgICAgICsrcy0+bGZlX2NoYW5uZWw7Cj4+Pj4+PiAtICAgIH0KPj4+Pj4+IC0KPj4+Pj4+ ICAgICAgICBzLT5mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7Cj4+Pj4+PiAgICAgICAgaWYgKCFz LT5mcmFtZSkKPj4+Pj4+ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4+Pj4+ Cj4+Pj4+PiAtICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmYXZjdHgtPmNoX2xheW91dCk7 Cj4+Pj4+PiAtICAgIGF2X2NoYW5uZWxfbGF5b3V0X2Zyb21fbWFzaygmYXZjdHgtPmNoX2xheW91 dCwgY2hhbm5lbF9tYXNrKTsKPj4+Pj4+ICAgICAgICByZXR1cm4gMDsKPj4+Pj4+ICAgIH0KPj4+ Pgo+Pj4+IHRoaXMgd2lsbCBjaGFuZ2UgdGhlIG91dHB1dCBvZiB0aGUgImxvc3NsZXNzIiBkZWNv ZGVyIGlmIHRoaXMgY2FzZSBldmVyCj4+Pj4gb2NjdXJzIGJlc2lkZXMgdGhpcwo+Pj4KPj4+IEFz IGkgaW50ZXJwcmV0IGl0LCB5b3UgY291bGQgaW5pdGlhbGl6ZSB0aGUgZGVjb2RlciB1c2luZyBh bnkgYXJiaXRyYXJ5Cj4+PiBudW1iZXIgb2YgY2hhbm5lbHMgaW4gYXZjdHguIEFuZCBpZiBjaGFu bmVsX21hc2sgaW4gZXh0cmFkYXRhIGlzIG5vdCB6ZXJvLAo+Pj4gdGhlbiBpdCBtdXN0IGJlIGNv bnNpZGVyZWQgdG8gYmUgdGhlIHZhbGlkIGNoYW5uZWwgY291bnQgZm9yIHRoZSBzdHJlYW0sIGFu ZAo+Pj4gdGhlIHZhbHVlIHBhc3NlZCBpbiBhdmN0eCBzaG91bGQgYmUgaWdub3JlZC4KPj4KPj4g d2l0aG91dCBhIHNwZWNpZmljYXRpb24gYW5kIG5vIG5vbiBmdXp6ZWQgdGVzdGZpbGUgaXRzIHJl YWxseSBub3QgcG9zc2libGUKPj4gdG8gc2F5IGZvciBzdXJlIHdoYXQgdGhpcyBjb21iaW5hdGlv biBpcyBpbnRlbmRlZCB0byBwcm9kdWNlIG9uIHRoZSBvdXRwdXQKPj4KPj4gV2hhdCB5b3Ugc2F5 IHNvdW5kcyByZWFzb25hYmxlIGJ1dCBpdCBjYW4gYWxzbyBiZSBzb21ldGhpbmcgZWxzZQo+IAo+ IHBpbmcsIGkgdGhpbmsgeW91ciBwYXRjaCBvciBzb21ldGhpbmcgc2ltaWxhciBzaG91bGQgYmUg YXBwbGllZAo+IFRoZSBmdXp6ZXIgZm91bmQKPiA0NjAwOC9jbHVzdGVyZnV6ei10ZXN0Y2FzZS1t aW5pbWl6ZWQtZmZtcGVnX0FWX0NPREVDX0lEX1dNQUxPU1NMRVNTX2Z1enplci00NjgxMjQ1NzQ3 OTcwMDQ4Cj4gd2hpY2ggdG9vIGNyYXNoZXMgYmVjYXVzZSBvZiB0aGUgY2hhbm5lbCBudW1iZXIK PiAKPiB0aHgKCkFwcGxpZWQuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K