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 5DA84489FE for ; Mon, 22 Jan 2024 21:23:50 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7A33868CC25; Mon, 22 Jan 2024 23:23:48 +0200 (EET) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3268F6882B7 for ; Mon, 22 Jan 2024 23:23:42 +0200 (EET) Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-337cc8e72f5so3337949f8f.1 for ; Mon, 22 Jan 2024 13:23:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20230601.gappssmtp.com; s=20230601; t=1705958621; x=1706563421; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=8WZsWXFlhrv5XCNxrSKyJdBT9hfCNgbVgLEXL45V4pg=; b=0M+BqFP0ExNpss2dtmlpX0aZ4D6ktKcoeRIzKcZgxcNM11f7J+WjcY7fZ9E9EZrRJD QOkyEW/8VuWr5nLp6RnRGEohTSRXaGY0IR3QgXK5/0OR9tMa6bFPEWPfKRqoFjNgK+/J 2QFZis/h9kaSU0/dBCVROVkg/LU8K3FGTAdTNg5VxO1auMEH4Eg4eB5IEPdtbcrp3hG6 6aRhEUMZOoGcm09yf7lupqT4OADeKXomM22D3dHiVKnsS+LDnDcJ4SM9SRpj/Ski9ZXT uJBEbIYnx1ED5iKrmsgrAO7DqyqTa3H5KFukofmgMulZlm0iKXeTfCXz8O0EOeC9LpLy qqhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705958621; x=1706563421; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8WZsWXFlhrv5XCNxrSKyJdBT9hfCNgbVgLEXL45V4pg=; b=g/2wKX3t5d9EYfKEWNqMsIu4xP9VvxXrYVkM4Mtd/jHl6q6h9Oas9S+NSlbV5PCgan E7ZpUjLXY7N4OBvmyER9/dIKPeQuXqzm8yKmrhz7yhh/ZBDfUEXT32SdI2EeZHjAqcwq 5R2Hr0xpBkqF9Z9j4xunvqXIdUAlBbqEhdgPnumvRpalHWbZKKEkaIQp1wEmA3xfmenz NFj/hQmXeh2JNovb5Psyp5powuMXH8IAlLskBu5sQv0u3UKkFyZuaLKNIkBdSYGgB5Zc D/HFK/yW6XwzEkS4jtSqOi48AC1A0SWYDeVg/BvnyiqxqQBvzXA8hiEN/5+Kv+enJ0Qv 9YEA== X-Gm-Message-State: AOJu0YzGhPuUYCy1w2pSiaiaJVzGD/kDc7lJdSl1Px5W8YbNNN1qPNGs Bp+sAC6aG2xaCUB9/MiAke62Rrg0B6SjvVEZKZi3l69xvVxAVNHAzDfIhDf3+FsIQ+dwisNINCU / X-Google-Smtp-Source: AGHT+IGY+LUov2mHDt4oIKOUdC4jGkqnkvEuUMdpPcxWxEejmcr4A/sRWW4kr2HTOLKDA8PsFKthlA== X-Received: by 2002:adf:f243:0:b0:337:cdc5:daf4 with SMTP id b3-20020adff243000000b00337cdc5daf4mr2684711wrp.9.1705958621243; Mon, 22 Jan 2024 13:23:41 -0800 (PST) Received: from [192.168.0.15] (cpc92302-cmbg19-2-0-cust1183.5-4.cable.virginm.net. [82.1.212.160]) by smtp.gmail.com with ESMTPSA id u9-20020a5d6ac9000000b00337d392c6c3sm11889798wrw.13.2024.01.22.13.23.40 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 22 Jan 2024 13:23:41 -0800 (PST) Message-ID: Date: Mon, 22 Jan 2024 21:24:10 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240121141846.4077778-1-jianfeng.zheng@mthreads.com> <20240121141846.4077778-7-jianfeng.zheng@mthreads.com> From: Mark Thompson In-Reply-To: <20240121141846.4077778-7-jianfeng.zheng@mthreads.com> Subject: Re: [FFmpeg-devel] [vaapi-cavs 7/7] cavs: support vaapi hwaccel decoding 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: T24gMjEvMDEvMjAyNCAxNDoxOCwgamlhbmZlbmcuemhlbmcgd3JvdGU6Cj4gc2VlIGh0dHBzOi8v Z2l0aHViLmNvbS9pbnRlbC9saWJ2YS9wdWxsLzczOAo+IAo+IFNpZ25lZC1vZmYtYnk6IGppYW5m ZW5nLnpoZW5nIDxqaWFuZmVuZy56aGVuZ0BtdGhyZWFkcy5jb20+Cj4gLS0tCj4gICBjb25maWd1 cmUgICAgICAgICAgICAgICAgIHwgIDE0ICsrKysKPiAgIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAg ICAgfCAgIDEgKwo+ICAgbGliYXZjb2RlYy9jYXZzLmggICAgICAgICB8ICAgNCArCj4gICBsaWJh dmNvZGVjL2NhdnNkZWMuYyAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKy0tCj4gICBs aWJhdmNvZGVjL2h3YWNjZWxzLmggICAgIHwgICAxICsKPiAgIGxpYmF2Y29kZWMvdmFhcGlfY2F2 cy5jICAgfCAxNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGxp YmF2Y29kZWMvdmFhcGlfZGVjb2RlLmMgfCAgIDQgKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAyODQg aW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dmNvZGVjL3ZhYXBpX2NhdnMuYwoKSSBzdWdnZXN0IHNwbGl0dGluZyB0aGlzIHBhdGNoIGludG8g dHdvOiBhZGQgaHdhY2NlbCBob29rcyB0byBBVlMgZGVjb2RlciwgdGhlbiBhZGQgVkFBUEkgaW1w bGVtZW50YXRpb24gZm9yIGl0LgoKPiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJl Cj4gaW5kZXggYzhhZTBhMDYxZC4uODk3NTllZGE1ZCAxMDA3NTUKPiAtLS0gYS9jb25maWd1cmUK PiArKysgYi9jb25maWd1cmUKPiAuLi4KPiBAQCAtNzE3NSw2ICs3MTc3LDE4IEBAIGlmIGVuYWJs ZWQgdmFhcGk7IHRoZW4KPiAgICAgICBjaGVja190eXBlICJ2YS92YS5oIHZhL3ZhX2VuY192cDgu aCIgICJWQUVuY1BpY3R1cmVQYXJhbWV0ZXJCdWZmZXJWUDgiCj4gICAgICAgY2hlY2tfdHlwZSAi dmEvdmEuaCB2YS92YV9lbmNfdnA5LmgiICAiVkFFbmNQaWN0dXJlUGFyYW1ldGVyQnVmZmVyVlA5 Igo+ICAgICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX2F2MS5oIiAgIlZBRW5jUGlj dHVyZVBhcmFtZXRlckJ1ZmZlckFWMSIKPiArCj4gKyAgICAjCj4gKyAgICAjIFVzaW5nICdWQV9D SEVDS19WRVJTSU9OJyBpbiBzb3VyY2UgY29kZXMgbWFrZSB0aGluZ3MgZWFzeS4gQnV0IHdlIGhh dmUgdG8gd2FpdAo+ICsgICAgIyB1bnRpbCBuZXdseSBhZGRlZCBWQVByb2ZpbGUgYmVpbmcgZGlz dHJpYnV0ZWQgYnkgVkFBUEkgcmVsZWFzZWQgdmVyc2lvbi4KPiArICAgICMKPiArICAgICMgQmVm b3JlIG9yIGFmdGVyIHRoYXQsIHdlIGNhbiB1c2UgYXV0by1kZXRlY3Rpb24gdG8ga2VlcCB2ZXJz aW9uIGNvbXBhdGliaWxpdHkuCj4gKyAgICAjIEl0IGFsd2F5cyB3b3Jrcy4KPiArICAgICMKPiAr ICAgIGRpc2FibGUgdmFfcHJvZmlsZV9hdnMgJiYKPiArICAgICAgICB0ZXN0X2NvZGUgY2MgdmEv dmEuaCAiVkFQcm9maWxlIHAxID0gVkFQcm9maWxlQVZTSml6aHVuLCBwMiA9IFZBUHJvZmlsZUFW U0d1YW5nZGlhbjsiICYmCj4gKyAgICAgICAgZW5hYmxlIHZhX3Byb2ZpbGVfYXZzCj4gKyAgICBl bmFibGVkIHZhX3Byb2ZpbGVfYXZzICYmIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZGVjX2F2 cy5oIiAiVkFQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVZTIgo+ICAgZmkKCldoeSBjYW4ndCB0aGlz IGJlIGRvbmUgd2l0aCBjaGVja190eXBlIGZvciB0aGUgZGVjb2RlIHN0cnVjdHVyZSBsaWtlIHRo ZSBvdGhlciBWQUFQSSBjb2RlY3M/CgooSSBkb24ndCB0aGluayB0aGlzIHNob3VsZCBiZSBhcHBs aWVkIHRvIGZmbXBlZyBtYWlubGluZSB1bnRpbCBmaW5hbGlzZWQgaW4gbGlidmEgdG8gYXZvaWQg YW55IGluY29tcGF0aWJpbGl0eSwgYnV0IHRoYXQgZG9lc24ndCByZXF1aXJlIGEgcmVsZWFzZWQg dmVyc2lvbiBvZiBsaWJ2YS4pCgo+IC4uLgo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NhdnNk ZWMuYyBiL2xpYmF2Y29kZWMvY2F2c2RlYy5jCj4gaW5kZXggNTAzNmVmNTBmNy4uNWNhMDIxYzA5 OCAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2NhdnNkZWMuYwo+ICsrKyBiL2xpYmF2Y29kZWMv Y2F2c2RlYy5jCj4gQEAgLTI1LDExICsyNSwxNCBAQAo+ICAgICogQGF1dGhvciBTdGVmYW4gR2Vo cmVyIDxzdGVmYW4uZ2VocmVyQGdteC5kZT4KPiAgICAqLwo+ICAgCj4gKyNpbmNsdWRlICJjb25m aWdfY29tcG9uZW50cy5oIgo+ICAgI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgo+ICAg I2luY2x1ZGUgImxpYmF2dXRpbC9lbW1zLmgiCj4gICAjaW5jbHVkZSAiYXZjb2RlYy5oIgo+ICAg I2luY2x1ZGUgImdldF9iaXRzLmgiCj4gICAjaW5jbHVkZSAiZ29sb21iLmgiCj4gKyNpbmNsdWRl ICJod2FjY2VsX2ludGVybmFsLmgiCj4gKyNpbmNsdWRlICJod2NvbmZpZy5oIgo+ICAgI2luY2x1 ZGUgInByb2ZpbGVzLmgiCj4gICAjaW5jbHVkZSAiY2F2cy5oIgo+ICAgI2luY2x1ZGUgImNvZGVj X2ludGVybmFsLmgiCj4gQEAgLTEwMDIsOSArMTAwNSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRl Y29kZV9zbGljZV9oZWFkZXIoQVZTQ29udGV4dCAqaCwgR2V0Qml0Q29udGV4dCAqZ2IpCj4gICAg ICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICBoLT5tYl93ZWlnaHRfcHJlZF9mbGFnID0gZ2V0 X2JpdHMxKGdiKTsKPiAgICAgICAgICAgICAgIGlmICghaC0+YXZjdHgtPmh3YWNjZWwpIHsKPiAt ICAgICAgICAgICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCj4gLSAgICAgICAgICAg ICAgICAgICAid2VpZ2h0ZWQgcHJlZGljdGlvbiBub3QgeWV0IHN1cHBvcnRlZFxuIik7Cj4gLSAg ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0dfRVJST1Is Cj4gKyAgICAgICAgICAgICAgICAgICAgIndlaWdodGVkIHByZWRpY3Rpb24gbm90IHlldCBzdXBw b3J0ZWRcbiIpOwo+ICsgICAgICAgICAgICB9CgpVbnJlbGF0ZWQgd2hpdGVzcGFjZSBjaGFuZ2U/ Cgo+ICAgICAgICAgICB9Cj4gICAgICAgfQo+ICAgICAgIGlmIChoLT5hZWNfZmxhZykgewo+IEBA IC0xMTE1LDYgKzExMTgsNDYgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfZm9yX3NsaWNlKEFW U0NvbnRleHQgKmgpCj4gICAgKiBmcmFtZSBsZXZlbAo+ICAgICoKPiAgICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwo+ICtzdGF0aWMgaW50IGh3YWNjZWxfcGljKEFWU0NvbnRleHQgKmgpCj4gK3sKPiAr ICAgIGludCByZXQgPSAwOwo+ICsgICAgaW50IHN0YyA9IC0xOwo+ICsgICAgY29uc3QgdWludDhf dCAqZnJtX3N0YXJ0ID0gYWxpZ25fZ2V0X2JpdHMoJmgtPmdiKTsKPiArICAgIGNvbnN0IHVpbnQ4 X3QgKmZybV9lbmQgPSBoLT5nYi5idWZmZXJfZW5kOwo+ICsgICAgY29uc3QgdWludDhfdCAqc2xj X3N0YXJ0ID0gZnJtX3N0YXJ0Owo+ICsgICAgY29uc3QgdWludDhfdCAqc2xjX2VuZCA9IGZybV9l bmQ7Cj4gKyAgICBHZXRCaXRDb250ZXh0IGdiID0gaC0+Z2I7Cj4gKyAgICBjb25zdCBGRkhXQWNj ZWwgKmh3YWNjZWwgPSBmZmh3YWNjZWwoaC0+YXZjdHgtPmh3YWNjZWwpOwo+ICsKPiArICAgIHJl dCA9IGh3YWNjZWwtPnN0YXJ0X2ZyYW1lKGgtPmF2Y3R4LCBOVUxMLCAwKTsKPiArICAgIGlmIChy ZXQgPCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgZm9yIChzbGNfc3RhcnQg PSBmcm1fc3RhcnQ7IHNsY19zdGFydCArIDQgPCBmcm1fZW5kOyBzbGNfc3RhcnQgPSBzbGNfZW5k KSB7Cj4gKyAgICAgICAgc2xjX2VuZCA9IGF2cHJpdl9maW5kX3N0YXJ0X2NvZGUoc2xjX3N0YXJ0 ICsgNCwgZnJtX2VuZCwgJnN0Yyk7Cj4gKyAgICAgICAgaWYgKHNsY19lbmQgPCBmcm1fZW5kKSB7 Cj4gKyAgICAgICAgICAgIHNsY19lbmQgLT0gNDsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAg IGluaXRfZ2V0X2JpdHMoJmgtPmdiLCBzbGNfc3RhcnQsIChzbGNfZW5kIC0gc2xjX3N0YXJ0KSAq IDgpOwoKaW5pdF9nZXRfYml0czggYXZvaWRzIHRoZSB1bmxpa2VseS1idXQtcG9zc2libGUgb3Zl cmZsb3cgY2FzZSBoZXJlLgoKPiArICAgICAgICBpZiAoIWNoZWNrX2Zvcl9zbGljZShoKSkgewo+ ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIHJldCA9IGh3 YWNjZWwtPmRlY29kZV9zbGljZShoLT5hdmN0eCwgc2xjX3N0YXJ0LCBzbGNfZW5kIC0gc2xjX3N0 YXJ0KTsKPiArICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaC0+Z2IgPSBnYjsKPiArICAgIHNraXBfYml0 cygmaC0+Z2IsIChzbGNfc3RhcnQgLSBmcm1fc3RhcnQpICogOCk7CgpUaGlzIGlzIHNraXBwaW5n IHRvIHRoZSBzdGFydCBvZiB0aGUgZXJyb3IgaW4gZXJyb3IgY2FzZXM/ICBJcyB0aGF0IGludGVu ZGVkPwoKPiArCj4gKyAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICsK PiArICAgIHJldHVybiBod2FjY2VsLT5lbmRfZnJhbWUoaC0+YXZjdHgpOwoKQXJlIHRoZXJlIGFu eSBiYWQgY29uc2VxdWVuY2VzIGlmIHlvdSBjYWxsIHRoaXMgd2l0aCB6ZXJvIHNsaWNlcyBpbiB0 aGUgZnJhbWUsIHNpbmNlIHRoZSBsb29wIGFib3ZlIGFwcGVhcnMgdG8gYWxsb3cgdGhhdD8gIChJ ZiB5ZXMsIG1heWJlIG9ubHkgY2FsbCBzdGFydF9mcmFtZSBvbmNlIHlvdSBrbm93IHlvdSBoYXZl IHNvbWUgc2xpY2VzLikKCj4gK30KPiAgIAo+ICAgLyoqCj4gICAgKiBAYnJpZWYgcmVtb3ZlIGZy YW1lIG91dCBvZiBkcGIKPiBAQCAtMTEyNSw2ICsxMTY4LDkgQEAgc3RhdGljIHZvaWQgY2F2c19m cmFtZV91bnJlZihBVlNGcmFtZSAqZnJhbWUpCj4gICAgICAgaWYgKCFmcmFtZS0+ZiB8fCAhZnJh bWUtPmYtPmJ1ZlswXSkKPiAgICAgICAgICAgcmV0dXJuOwo+ICAgCj4gKyAgICBhdl9idWZmZXJf dW5yZWYoJmZyYW1lLT5od2FjY2VsX3ByaXZfYnVmKTsKPiArICAgIGZyYW1lLT5od2FjY2VsX3Bp Y3R1cmVfcHJpdmF0ZSA9IE5VTEw7Cj4gKwo+ICAgICAgIGF2X2ZyYW1lX3VucmVmKGZyYW1lLT5m KTsKPiAgIH0KPiAgIAo+IEBAIC0xMjE5LDYgKzEyNjUsMTcgQEAgc3RhdGljIGludCBkZWNvZGVf cGljKEFWU0NvbnRleHQgKmgpCj4gICAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICAgIHJldHVy biByZXQ7Cj4gICAKPiArICAgIGlmIChoLT5hdmN0eC0+aHdhY2NlbCkgewo+ICsgICAgICAgIGNv bnN0IEZGSFdBY2NlbCAqaHdhY2NlbCA9IGZmaHdhY2NlbChoLT5hdmN0eC0+aHdhY2NlbCk7Cj4g KyAgICAgICAgYXZfYXNzZXJ0MCghaC0+Y3VyLmh3YWNjZWxfcGljdHVyZV9wcml2YXRlKTsKPiAr ICAgICAgICBpZiAoaHdhY2NlbC0+ZnJhbWVfcHJpdl9kYXRhX3NpemUpIHsKPiArICAgICAgICAg ICAgaC0+Y3VyLmh3YWNjZWxfcHJpdl9idWYgPSBhdl9idWZmZXJfYWxsb2N6KGh3YWNjZWwtPmZy YW1lX3ByaXZfZGF0YV9zaXplKTsKPiArICAgICAgICAgICAgaWYgKCFoLT5jdXIuaHdhY2NlbF9w cml2X2J1ZikKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAg ICAgICAgICAgIGgtPmN1ci5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZSA9IGgtPmN1ci5od2FjY2Vs X3ByaXZfYnVmLT5kYXRhOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gICAgICAgaWYgKCFo LT5lZGdlX2VtdV9idWZmZXIpIHsKPiAgICAgICAgICAgaW50IGFsbG9jX3NpemUgPSBGRkFMSUdO KEZGQUJTKGgtPmN1ci5mLT5saW5lc2l6ZVswXSkgKyAzMiwgMzIpOwo+ICAgICAgICAgICBoLT5l ZGdlX2VtdV9idWZmZXIgPSBhdl9tYWxsb2N6KGFsbG9jX3NpemUgKiAyICogMjQpOwo+IEBAIC0x MjQ3LDcgKzEzMDQsOSBAQCBzdGF0aWMgaW50IGRlY29kZV9waWMoQVZTQ29udGV4dCAqaCkKPiAg ICAgICAgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAicG9jPSVkLyVkLyVk LCBkaXN0PSVkLyVkXG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICBoLT5EUEJbMV0ucG9jLCBo LT5EUEJbMF0ucG9jLCBoLT5jdXIucG9jLCBoLT5kaXN0WzBdLCBoLT5kaXN0WzFdKTsKPiAgICAg ICAgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAic3ltX2ZhY3RvciAlZCB0 b28gbGFyZ2VcbiIsIGgtPnN5bV9mYWN0b3IpOwo+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsKPiArCj4gKyAgICAgICAgICAgIGlmICghaC0+YXZjdHgtPmh3YWNjZWwp Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKCldoeSBpcyB0 aGlzIG5vdCBhbiBlcnJvciBpbiBodyBjYXNlcz8KCj4gICAgICAgICAgIH0KPiAgICAgICB9IGVs c2Ugewo+ICAgICAgICAgICBoLT5kaXJlY3RfZGVuWzBdID0gaC0+ZGlzdFswXSA/IDE2Mzg0IC8g aC0+ZGlzdFswXSA6IDA7Cj4gQEAgLTEzMzIsNyArMTM5MSw5IEBAIHN0YXRpYyBpbnQgZGVjb2Rl X3BpYyhBVlNDb250ZXh0ICpoKQo+ICAgICAgIH0KPiAgIAo+ICAgICAgIHJldCA9IDA7Cj4gLSAg ICBpZiAoaC0+Y3VyLmYtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfSSkgewo+ICsgICAg aWYgKGgtPmF2Y3R4LT5od2FjY2VsKSB7Cj4gKyAgICAgICAgcmV0ID0gaHdhY2NlbF9waWMoaCk7 Cj4gKyAgICB9IGVsc2UgaWYgKGgtPmN1ci5mLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBF X0kpIHsKPiAgICAgICAgICAgZG8gewo+ICAgICAgICAgICAgICAgY2hlY2tfZm9yX3NsaWNlKGgp Owo+ICAgICAgICAgICAgICAgcmV0ID0gZGVjb2RlX21iX2koaCwgMCk7Cj4gQEAgLTE1MDMsNiAr MTU2NCwyMCBAQCBzdGF0aWMgaW50IGNhdnNfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICph dmN0eCwgQVZGcmFtZSAqcmZyYW1lLAo+ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g ICAgICAgICAgICAgICBhdmN0eC0+cHJvZmlsZSA9IGgtPnByb2ZpbGU7Cj4gICAgICAgICAgICAg ICBhdmN0eC0+bGV2ZWwgPSBoLT5sZXZlbDsKPiArICAgICAgICAgICAgaWYgKCFoLT5nb3RfcGl4 X2ZtdCkgewo+ICsgICAgICAgICAgICAgICAgaC0+Z290X3BpeF9mbXQgPSAxOwo+ICsgICAgICAg ICAgICAgICAgcmV0ID0gZmZfZ2V0X2Zvcm1hdChhdmN0eCwgYXZjdHgtPmNvZGVjLT5waXhfZm10 cyk7Cj4gKyAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAgICAgICAgIGF2Y3R4LT5waXhfZm10ID0gcmV0 Owo+ICsKPiArICAgICAgICAgICAgICAgIGlmIChoLT5wcm9maWxlID09IEFWX1BST0ZJTEVfQ0FW U19HVUFOR0RJQU4gJiYgIWF2Y3R4LT5od2FjY2VsKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJZb3VyIHBsYXRmb3JtIGRvZXNuJ3Qgc3VwcHBv cnQgaGFyZHdhcmUiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYWNj ZWxlcmF0ZWQgZm9yIENBVlMgR3VhbmdkaWFuIFByb2ZpbGUgZGVjb2RpbmcuXG4iKTsKClRoaXMg bWVzc2FnZSB3aWxsIGFsc28gYXBwZWFyIGluIGEgY29uZnVzaW5nIHdheSBpbiBzb2Z0d2FyZS1v bmx5IGNhc2VzIHdpdGggbm8gaGFyZHdhcmUgYXQgYWxsLiAgQ2FuIGl0IGJlIGNsZWFyZXIgdGhh dCBpdCdzIHJlYWxseSBhIHNvZnR3YXJlIGZlYXR1cmUgdGhhdCdzIG1pc3Npbmc/Cgo+ICsgICAg ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT1RTVVApOwo+ICsgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAg Y2FzZSBQSUNfSV9TVEFSVF9DT0RFOgo+ICAgICAgICAgICAgICAgaWYgKCFoLT5nb3Rfa2V5ZnJh bWUpIHsKPiBAQCAtMTU3Nyw2ICsxNjUyLDE0IEBAIHN0YXRpYyBpbnQgY2F2c19kZWNvZGVfZnJh bWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpyZnJhbWUsCj4gICAgICAgcmV0dXJu IChidWZfcHRyIC0gYXZwa3QtPmRhdGEpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBjb25zdCBlbnVt IEFWUGl4ZWxGb3JtYXQgY2F2c19od2FjY2VsX3BpeGZtdF9saXN0XzQyMFtdID0gewo+ICsjaWYg Q09ORklHX0NBVlNfVkFBUElfSFdBQ0NFTAo+ICsgICAgQVZfUElYX0ZNVF9WQUFQSSwKPiArI2Vu ZGlmCj4gKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAsCj4gKyAgICBBVl9QSVhfRk1UX05PTkUKPiAr fTsKPiArCj4gICBjb25zdCBGRkNvZGVjIGZmX2NhdnNfZGVjb2RlciA9IHsKPiAgICAgICAucC5u YW1lICAgICAgICAgPSAiY2F2cyIsCj4gICAgICAgQ09ERUNfTE9OR19OQU1FKCJDaGluZXNlIEFW UyAoQXVkaW8gVmlkZW8gU3RhbmRhcmQpIChBVlMxLVAyLCBKaVpodW4gcHJvZmlsZSkiKSwKClRo aXMgZGVzY3JpcHRpb24gcHJvYmFibHkgaXNuJ3QgcmlnaHQgYW55IG1vcmUhCgo+IEBAIC0xNTg5 LDQgKzE2NzIsMTIgQEAgY29uc3QgRkZDb2RlYyBmZl9jYXZzX2RlY29kZXIgPSB7Cj4gICAgICAg LnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFWX0NPREVDX0NBUF9ERUxBWSwK PiAgICAgICAuZmx1c2ggICAgICAgICAgPSBjYXZzX2ZsdXNoLAo+ICAgICAgIC5jYXBzX2ludGVy bmFsICA9IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCj4gKyAgICAucC5waXhfZm10cyAgICAg PSBjYXZzX2h3YWNjZWxfcGl4Zm10X2xpc3RfNDIwLAo+ICsgICAgLmh3X2NvbmZpZ3MgICAgID0g KGNvbnN0IEFWQ29kZWNIV0NvbmZpZ0ludGVybmFsICpjb25zdCBbXSkgewo+ICsjaWYgQ09ORklH X0NBVlNfVkFBUElfSFdBQ0NFTAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBIV0FDQ0VMX1ZB QVBJKGNhdnMpLAo+ICsjZW5kaWYKPiArICAgICAgICAgICAgICAgICAgICAgICAgTlVMTAo+ICsg ICAgICAgICAgICAgICAgICAgIH0sCj4gKyAgICAucC5wcm9maWxlcyAgICAgPSBOVUxMX0lGX0NP TkZJR19TTUFMTChmZl9jYXZzX3Byb2ZpbGVzKSwKPiAgIH07Cj4gZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvaHdhY2NlbHMuaCBiL2xpYmF2Y29kZWMvaHdhY2NlbHMuaAo+IGluZGV4IDUxNzFlNGM3 ZDcuLmExYTk3M2I0NjAgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9od2FjY2Vscy5oCj4gKysr IGIvbGliYXZjb2RlYy9od2FjY2Vscy5oCj4gQEAgLTg5LDUgKzg5LDYgQEAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212M19keHZhMl9od2FjY2VsOwo+ICAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212M19udmRlY19od2FjY2VsOwo+ICAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212M192YWFwaV9od2FjY2VsOwo+ICAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212M192ZHBhdV9od2FjY2VsOwo+ICtleHRlcm4gY29uc3Qg c3RydWN0IEZGSFdBY2NlbCBmZl9jYXZzX3ZhYXBpX2h3YWNjZWw7Cj4gICAKPiAgICNlbmRpZiAv KiBBVkNPREVDX0hXQUNDRUxTX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92YWFwaV9j YXZzLmMgYi9saWJhdmNvZGVjL3ZhYXBpX2NhdnMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAwMC4uNGE3YTliOTVhZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJh dmNvZGVjL3ZhYXBpX2NhdnMuYwo+IEBAIC0wLDAgKzEsMTY0IEBACj4gKy8qCj4gKyAqIEFWUyAo Q2hpbmVzZSBHWS9UIDI1Ny4x4oCUMjAxMikgSFcgZGVjb2RlIGFjY2VsZXJhdGlvbiB0aHJvdWdo IFZBLUFQSQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIgSmlhbmZlbmdaaGVuZyA8amlhbmZlbmcu emhlbmdAbXRocmVhZHMuY29tPgo+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4g KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJod2Nv bmZpZy5oIgo+ICsjaW5jbHVkZSAiaHdhY2NlbF9pbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAidmFh cGlfZGVjb2RlLmgiCj4gKyNpbmNsdWRlICJjYXZzLmgiCj4gKwo+ICsvKioKPiArICogQGZpbGUK PiArICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGdsdWUgY29kZSBiZXR3ZWVuIEZGbXBlZydz IGFuZCBWQS1BUEkncwo+ICsgKiBzdHJ1Y3R1cmVzIGZvciBBVlMgKENoaW5lc2UgR1kvVCAyNTcu MeKAlDIwMTIpIGRlY29kaW5nLgo+ICsgKi8KPiArCj4gK3N0YXRpYyBpbnQgdmFhcGlfYXZzX3Bp Y190eXBlX2N2dChpbnQgcGljdF90eXBlKQo+ICt7Cj4gKyAgICBzd2l0Y2ggKHBpY3RfdHlwZSkK PiArICAgIHsKPiArICAgIGNhc2UgQVZfUElDVFVSRV9UWVBFX0k6IHJldHVybiBWQV9BVlNfSV9J TUc7Cj4gKyAgICBjYXNlIEFWX1BJQ1RVUkVfVFlQRV9QOiByZXR1cm4gVkFfQVZTX1BfSU1HOwo+ ICsgICAgY2FzZSBBVl9QSUNUVVJFX1RZUEVfQjogcmV0dXJuIFZBX0FWU19CX0lNRzsKPiArICAg IGRlZmF1bHQ6ICAgICAgICAgICAgICAgIHJldHVybiBWQV9BVlNfSV9JTUc7Cj4gKyAgICB9Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHZhYXBpX2F2c19maWxsX3BpYyhWQVBpY3R1cmVBVlMgKnZh X3BpYywgY29uc3QgQVZTRnJhbWUgKmZyYW1lKQo+ICt7Cj4gKyAgICB2YV9waWMtPnN1cmZhY2Vf aWQgPSBmZl92YWFwaV9nZXRfc3VyZmFjZV9pZChmcmFtZS0+Zik7Cj4gKyAgICB2YV9waWMtPnBv YyA9IGZyYW1lLT5wb2MgLyAyOwoKVGhpcyAvIDIgbWFrZXMgbWUgc3VzcGljaW91cy4gIERvZXMg dGhlIGludGVyZmFjZSBhY3R1YWxseSBzdXBwb3J0IGludGVybGFjaW5nLCBhbmQgZG9lcyB0aGlz IGNvZGU/Cgo+ICt9Cj4gKwo+ICsvKiogSW5pdGlhbGl6ZSBhbmQgc3RhcnQgZGVjb2RpbmcgYSBm cmFtZSB3aXRoIFZBIEFQSS4gKi8KPiArc3RhdGljIGludCB2YWFwaV9hdnNfc3RhcnRfZnJhbWUo QVZDb2RlY0NvbnRleHQgICAgICAgICAqYXZjdHgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXZfdW51c2VkIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhdl91bnVzZWQgdWludDMyX3QgICAgICAgc2l6ZSkKPiArewo+ ICsgICAgaW50IGksIGVycjsKPiArICAgIEFWU0NvbnRleHQgICAqaCAgID0gYXZjdHgtPnByaXZf ZGF0YTsKPiArICAgIFZBUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWUyBwaWNfcGFyYW0gPSB7fTsK PiArICAgIFZBQVBJRGVjb2RlUGljdHVyZSAqdmFwaWMgPSBoLT5jdXIuaHdhY2NlbF9waWN0dXJl X3ByaXZhdGU7Cj4gKyAgICB2YXBpYy0+b3V0cHV0X3N1cmZhY2UgPSBmZl92YWFwaV9nZXRfc3Vy ZmFjZV9pZChoLT5jdXIuZik7Cj4gKwo+ICsgICAgcGljX3BhcmFtID0gKFZBUGljdHVyZVBhcmFt ZXRlckJ1ZmZlckFWUykgewo+ICsgICAgICAgIC53aWR0aCA9IGgtPndpZHRoLAo+ICsgICAgICAg IC5oZWlnaHQgPSBoLT5oZWlnaHQsCj4gKyAgICAgICAgLnBpY3R1cmVfdHlwZSA9IHZhYXBpX2F2 c19waWNfdHlwZV9jdnQoaC0+Y3VyLmYtPnBpY3RfdHlwZSksCgpHb2luZyB2aWEgdGhlIHBpYyB0 eXBlIHdpdGggYSBzZXBhcmF0ZSBlbnVtIHNlZW1zIHVubmVjZXNzYXJpbHkgY29uZnVzaW5nIGhl cmU/ICBJIHRoaW5rIHRoaXMgaXMganVzdCB0aGUgdmFsdWUgcmVhZCBmcm9tIHRoZSBiaXRzdHJl YW0sIHNvIGNvdWxkIGl0IGJlIHN0b3JlZCBpbiB0aGUgY29udGV4dD8KCj4gKyAgICAgICAgLnBy b2dyZXNzaXZlX3NlcV9mbGFnID0gaC0+cHJvZ3Jlc3NpdmVfc2VxLAo+ICsgICAgICAgIC5wcm9n cmVzc2l2ZV9mcmFtZV9mbGFnID0gaC0+cHJvZ3Jlc3NpdmVfZnJhbWUsCj4gKyAgICAgICAgLnBp Y3R1cmVfc3RydWN0dXJlX2ZsYWcgPSBoLT5waWNfc3RydWN0dXJlLAo+ICsgICAgICAgIC5maXhl ZF9waWNfcXBfZmxhZyA9IGgtPnFwX2ZpeGVkLAo+ICsgICAgICAgIC5waWN0dXJlX3FwID0gaC0+ cXAsCj4gKyAgICAgICAgLmxvb3BfZmlsdGVyX2Rpc2FibGVfZmxhZyA9IGgtPmxvb3BfZmlsdGVy X2Rpc2FibGUsCj4gKyAgICAgICAgLmFscGhhX2Nfb2Zmc2V0ID0gaC0+YWxwaGFfb2Zmc2V0LAo+ ICsgICAgICAgIC5iZXRhX29mZnNldCA9IGgtPmJldGFfb2Zmc2V0LAo+ICsgICAgICAgIC5za2lw X21vZGVfZmxhZ19mbGFnID0gaC0+c2tpcF9tb2RlX2ZsYWcsCj4gKyAgICAgICAgLnBpY3R1cmVf cmVmZXJlbmNlX2ZsYWcgPSBoLT5yZWZfZmxhZywKPiArICAgIH07Cj4gKwo+ICsgICAgaWYgKGgt PnByb2ZpbGUgPT0gMHg0OCkgewoKWW91IGFscmVhZHkgYWRkZWQgYSBuaWNlIG5hbWUgZm9yIHRo aXMgbWFnaWMgbnVtYmVyIGluIHRoZSBmaXJzdCBwYXRjaCEKCj4gKwkJcGljX3BhcmFtLmd1YW5n ZGlhbl9maWVsZHMuZ3VhbmdkaWFuX2ZsYWcgPSAxOwo+ICsgICAgICAgIHBpY19wYXJhbS5ndWFu Z2RpYW5fZmllbGRzLmFlY19mbGFnID0gaC0+YWVjX2ZsYWc7Cj4gKyAgICAgICAgcGljX3BhcmFt Lmd1YW5nZGlhbl9maWVsZHMud2VpZ2h0X3F1YW50X2ZsYWcgPSBoLT53ZWlnaHRfcXVhbnRfZmxh ZzsKPiArICAgICAgICBwaWNfcGFyYW0uZ3VhbmdkaWFuX2ZpZWxkcy5jaHJvbWFfcXVhbnRfcGFy YW1fZGVsdGFfY2IgPSBoLT5jaHJvbWFfcXVhbnRfcGFyYW1fZGVsdGFfY2I7Cj4gKyAgICAgICAg cGljX3BhcmFtLmd1YW5nZGlhbl9maWVsZHMuY2hyb21hX3F1YW50X3BhcmFtX2RlbHRhX2NyID0g aC0+Y2hyb21hX3F1YW50X3BhcmFtX2RlbHRhX2NyOwo+ICsgICAgICAgIG1lbWNweShwaWNfcGFy YW0uZ3VhbmdkaWFuX2ZpZWxkcy53cW1fOHg4LCBoLT53cW1fOHg4LCA2NCk7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgdmFhcGlfYXZzX2ZpbGxfcGljKCZwaWNfcGFyYW0uY3Vycl9waWMsICZoLT5jdXIp Owo+ICsgICAgZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewo+ICsgICAgICAgIHZhYXBpX2F2c19m aWxsX3BpYygmcGljX3BhcmFtLnJlZl9saXN0W2ldLCAmaC0+RFBCW2ldKTsKPiArICAgIH0KPiAr Cj4gKyAgICBlcnIgPSBmZl92YWFwaV9kZWNvZGVfbWFrZV9wYXJhbV9idWZmZXIoYXZjdHgsIHZh cGljLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUGlj dHVyZVBhcmFtZXRlckJ1ZmZlclR5cGUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnBpY19wYXJhbSwgc2l6ZW9mKHBpY19wYXJhbSkpOwo+ICsgICAgaWYg KGVyciA8IDApCj4gKyAgICAgICAgZ290byBmYWlsOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICtm YWlsOgo+ICsgICAgZmZfdmFhcGlfZGVjb2RlX2NhbmNlbChhdmN0eCwgdmFwaWMpOwo+ICsgICAg cmV0dXJuIGVycjsKPiArfQo+ICsKPiArLyoqIEVuZCBhIGhhcmR3YXJlIGRlY29kaW5nIGJhc2Vk IGZyYW1lLiAqLwo+ICtzdGF0aWMgaW50IHZhYXBpX2F2c19lbmRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBBVlNDb250ZXh0ICpoID0gYXZjdHgtPnByaXZfZGF0YTsK PiArICAgIFZBQVBJRGVjb2RlUGljdHVyZSAqdmFwaWMgPSBoLT5jdXIuaHdhY2NlbF9waWN0dXJl X3ByaXZhdGU7Cj4gKyAgICByZXR1cm4gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCB2YXBp Yyk7Cj4gK30KPiArCj4gKy8qKiBEZWNvZGUgdGhlIGdpdmVuIEguMjY0IHNsaWNlIHdpdGggVkEg QVBJLiAqLwoKVGhlIGNvbW1lbnQgaXMgYmV0cmF5aW5nIHdoZXJlIHRoZSBjb2RlIHdhcyBjb3Bp ZWQgZnJvbS4uLgoKPiArc3RhdGljIGludCB2YWFwaV9hdnNfZGVjb2RlX3NsaWNlKEFWQ29kZWND b250ZXh0ICphdmN0eCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50OF90ICAqYnVmZmVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICAgICAgICBzaXplKQo+ICt7Cj4gKyAgICBpbnQgZXJyOwo+ICsgICAgQVZTQ29u dGV4dCAqaCA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICBWQUFQSURlY29kZVBpY3R1cmUgKnZh cGljID0gaC0+Y3VyLmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOwo+ICsgICAgVkFTbGljZVBhcmFt ZXRlckJ1ZmZlckFWUyBzbGljZV9wYXJhbTsKPiArICAgIHNsaWNlX3BhcmFtID0gKFZBU2xpY2VQ YXJhbWV0ZXJCdWZmZXJBVlMpIHsKPiArICAgICAgICAuc2xpY2VfZGF0YV9zaXplICAgICAgICA9 IHNpemUsCj4gKyAgICAgICAgLnNsaWNlX2RhdGFfb2Zmc2V0ICAgICAgPSAwLAo+ICsgICAgICAg IC5zbGljZV9kYXRhX2ZsYWcgICAgICAgID0gVkFfU0xJQ0VfREFUQV9GTEFHX0FMTCwKPiArICAg ICAgICAubWJfZGF0YV9iaXRfb2Zmc2V0ICAgICA9IGdldF9iaXRzX2NvdW50KCZoLT5nYiksCj4g KyAgICAgICAgLnNsaWNlX3ZlcnRpY2FsX3BvcyAgICAgPSBoLT5zdGMsCj4gKyAgICAgICAgLmZp eGVkX3NsaWNlX3FwX2ZsYWcgICAgPSBoLT5xcF9maXhlZCwKPiArICAgICAgICAuc2xpY2VfcXAg ICAgICAgICAgICAgICA9IGgtPnFwLAo+ICsgICAgICAgIC5zbGljZV93ZWlnaHRfcHJlZF9mbGFn ID0gaC0+c2xpY2Vfd2VpZ2h0X3ByZWRfZmxhZywKPiArICAgICAgICAubWJfd2VpZ2h0X3ByZWRf ZmxhZyAgICA9IGgtPm1iX3dlaWdodF9wcmVkX2ZsYWcsCj4gKyAgICB9Owo+ICsKPiArICAgICoo KHVpbnQzMl90ICopc2xpY2VfcGFyYW0ubHVtYV9zY2FsZSkgPSAqKCh1aW50MzJfdCAqKWgtPmx1 bWFfc2NhbGUpOwo+ICsgICAgKigodWludDMyX3QgKilzbGljZV9wYXJhbS5sdW1hX3NoaWZ0KSA9 ICooKHVpbnQzMl90ICopaC0+bHVtYV9zaGlmdCk7Cj4gKyAgICAqKCh1aW50MzJfdCAqKXNsaWNl X3BhcmFtLmNocm9tYV9zY2FsZSkgPSAqKCh1aW50MzJfdCAqKWgtPmNocm9tYV9zY2FsZSk7Cj4g KyAgICAqKCh1aW50MzJfdCAqKXNsaWNlX3BhcmFtLmNocm9tYV9zaGlmdCkgPSAqKCh1aW50MzJf dCAqKWgtPmNocm9tYV9zaGlmdCk7CgpQbGVhc2UgZG9uJ3QgdHlwZS1wdW4gbGlrZSB0aGlzIC0g anVzdCBsb29wIHRvIGNvcHkgZWFjaCBvZiB0aGUgZm91ciBieXRlcyBub3JtYWxseS4KCj4gKwo+ ICsgICAgZXJyID0gZmZfdmFhcGlfZGVjb2RlX21ha2Vfc2xpY2VfYnVmZmVyKGF2Y3R4LCB2YXBp YywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2xpY2Vf cGFyYW0sIHNpemVvZihzbGljZV9wYXJhbSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnVmZmVyLCBzaXplKTsKPiArICAgIGlmIChlcnIgPCAwKQo+ICsg ICAgICAgIGdvdG8gZmFpbDsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKyAg ICBmZl92YWFwaV9kZWNvZGVfY2FuY2VsKGF2Y3R4LCB2YXBpYyk7Cj4gKyAgICByZXR1cm4gZXJy Owo+ICt9Cj4gKwo+ICtjb25zdCBGRkhXQWNjZWwgZmZfY2F2c192YWFwaV9od2FjY2VsID0gewo+ ICsgICAgLnAubmFtZSAgICAgICAgICAgICAgICAgPSAiY2F2c192YWFwaSIsCj4gKyAgICAucC50 eXBlICAgICAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKPiArICAgIC5wLmlkICAg ICAgICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQ0FWUywKPiArICAgIC5wLnBpeF9mbXQgICAg ICAgICAgICAgID0gQVZfUElYX0ZNVF9WQUFQSSwKPiArICAgIC5zdGFydF9mcmFtZSAgICAgICAg ICA9ICZ2YWFwaV9hdnNfc3RhcnRfZnJhbWUsCj4gKyAgICAuZW5kX2ZyYW1lICAgICAgICAgICAg PSAmdmFhcGlfYXZzX2VuZF9mcmFtZSwKPiArICAgIC5kZWNvZGVfc2xpY2UgICAgICAgICA9ICZ2 YWFwaV9hdnNfZGVjb2RlX3NsaWNlLAo+ICsgICAgLmZyYW1lX3ByaXZfZGF0YV9zaXplID0gc2l6 ZW9mKFZBQVBJRGVjb2RlUGljdHVyZSksCj4gKyAgICAuaW5pdCAgICAgICAgICAgICAgICAgPSAm ZmZfdmFhcGlfZGVjb2RlX2luaXQsCj4gKyAgICAudW5pbml0ICAgICAgICAgICAgICAgPSAmZmZf dmFhcGlfZGVjb2RlX3VuaW5pdCwKPiArICAgIC5mcmFtZV9wYXJhbXMgICAgICAgICA9ICZmZl92 YWFwaV9jb21tb25fZnJhbWVfcGFyYW1zLAo+ICsgICAgLnByaXZfZGF0YV9zaXplICAgICAgID0g c2l6ZW9mKFZBQVBJRGVjb2RlQ29udGV4dCksCj4gKyAgICAuY2Fwc19pbnRlcm5hbCAgICAgICAg PSBIV0FDQ0VMX0NBUF9BU1lOQ19TQUZFLAo+ICt9Owo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVj L3ZhYXBpX2RlY29kZS5jIGIvbGliYXZjb2RlYy92YWFwaV9kZWNvZGUuYwo+IGluZGV4IGNlYWM3 NjljNTIuLjEzYTNmNmFhNDIgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy92YWFwaV9kZWNvZGUu Ywo+ICsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfZGVjb2RlLmMKPiBAQCAtNDA4LDYgKzQwOCwxMCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgy NjRDb25zdHJhaW5lZEJhc2VsaW5lKSwKPiAgICAgICBNQVAoSDI2NCwgICAgICAgIEgyNjRfTUFJ TiwgICAgICAgSDI2NE1haW4gICAgKSwKPiAgICAgICBNQVAoSDI2NCwgICAgICAgIEgyNjRfSElH SCwgICAgICAgSDI2NEhpZ2ggICAgKSwKPiArI2lmIEhBVkVfVkFfUFJPRklMRV9BVlMKPiArICAg IE1BUChDQVZTLCAgICAgICAgQ0FWU19KSVpIVU4sICAgICBBVlNKaXpodW4gICApLAo+ICsgICAg TUFQKENBVlMsICAgICAgICBDQVZTX0dVQU5HRElBTiwgIEFWU0d1YW5nZGlhbiksCj4gKyNlbmRp Zgo+ICAgI2lmIFZBX0NIRUNLX1ZFUlNJT04oMCwgMzcsIDApCj4gICAgICAgTUFQKEhFVkMsICAg ICAgICBIRVZDX01BSU4sICAgICAgIEhFVkNNYWluICAgICksCj4gICAgICAgTUFQKEhFVkMsICAg ICAgICBIRVZDX01BSU5fMTAsICAgIEhFVkNNYWluMTAgICksCj4gCgpTb21lIHF1ZXN0aW9uczoK KiBXaGF0IGhhcmR3YXJlIGRvIHlvdSBuZWVkIHRvIHJ1biB0aGlzPwoqIEknbSBndWVzc2luZyB5 b3UgaGF2ZSBhIG1hdGNoaW5nIGRyaXZlciBmb3IgdGhlIG90aGVyIHNpZGUgb2YgdGhlIFZBQVBJ IGludGVyZmFjZSwgY2FuIHlvdSBnaXZlIGEgbGluayB0byB0aGF0PyAgKElzIGl0IGdvaW5nIHRv IGJlIGluIE1lc2EsIGdpdmVuIHRoYXQgeW91ciBjb21wYW55J3MgcHJvZHVjdHMgYXJlIHByaW1h cmlseSBHUFVzPykKKiBIb3cgbXVjaCBlZmZvcnQgd291bGQgaXQgYmUgdG8gYWRkIHN1cHBvcnQg Zm9yIHRoZSBHdWFuZ2RpYW4gcHJvZmlsZSB0byB0aGUgc29mdHdhcmUgZGVjb2Rlcj8KClRoYW5r cywKCi0gTWFyawpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==