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 9F11048838 for ; Sat, 20 Jan 2024 04:21:20 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6093768CF84; Sat, 20 Jan 2024 06:21:17 +0200 (EET) Received: from out203-205-221-153.mail.qq.com (out203-205-221-153.mail.qq.com [203.205.221.153]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EE6AB68CF59 for ; Sat, 20 Jan 2024 06:21:08 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1705724459; bh=EL/uIQX2cBGHg34zRhVePwsTuZ/5tOjLGM6iwWkAdUU=; h=From:To:Cc:References:In-Reply-To:Subject:Date; b=uUMH1+iYqcm6Y1wN3NR6IMc6O5a/+pk1vSDvBMNNCF3srZ//QvP8JWSKs6xuWWKDX 8rfynEhKi6wTHjBEdDiU8iYxf80ir8NP2v4oJihy3BunGvzJP8jBVGs5uHe9cmllZn nwX5BeHRABAPqvpSIawcNjARLK45WawHzAyCbZv0= Received: from homepc ([113.118.113.79]) by newxmesmtplogicsvrszb6-0.qq.com (NewEsmtp) with SMTP id 539A9A8B; Sat, 20 Jan 2024 12:20:57 +0800 X-QQ-mid: xmsmtpt1705724457tp7fk8fko Message-ID: X-QQ-XMAILINFO: MmPNY57tR1XndVPltRmxLbtmfmmB0esXAkecoXi8f+QiOeoXeG29lCKAqGPIS5 d90LqJP3ffgjTPDFaJ4GamPo8c/OxPBXqiX2dWwFP0xdaNKYTEljHFrsuhcuxbFDxnNO0DeWl8Bu szprq9QcwWhbnRr0APA9x0kEJ+m/e0otwBO1lea3dokHbGy0WuCgLGv5yGY0KpjxqIsUARyQ5Jqs uvKir5GZDuKgOBVi2qSeFQFmD0oyppXqX+158uytMiGAL4cFA6ZGQyuIU2cEG+DlxgjygkCFmbDL D22+10329h2eKhd8j4ZtZKkn8bQc9w/AcINvuR7lpdokTOeSpecnAJ1PFHe5UlSd9CJWeWkhbmg6 31amnWTkkHRNrjZL8g3kVPxYTt+/SBjw30o5aiE7QwsvGB7r3sZ7YS/EXKugAxSGDY303I7gQiON tMRNpBHfEJMdaPd8q6ymHfN+u8iqlr7GHMDgZmYxPD1anRCmEZIc0msos8JAD6gQYV3PWSCQD1Hw SZir3ZAb32qe2rhd1n8lVLj8a1yot+39o36w7TQlTwvd8TspVMEfkonFcVIAbVLCEU1ddiyWBVsc /TIzgNG63p25SAQsgxDLvAGhC0yyh3yncRhWWDr2A1QTWgoUGquukr5PGNrRj0lF186JEME1mppS 7o2MHqjjhC8c7PGSoP/UEaJujrpZqEvwmQTQ8CKg740ikGbfLqsEl8B92pwfYIUOPAaqePH5BRGE LcKYdMo3A+VwiorPn8aHmlk7J9KqeZnGqairO6qH+3Ub7UCYR5MNCItO5cjEWrvT8+VV3PofpgHP yEy/r8faCpwNZbJPL9Kvj/gTSxMGe/MAWDzzt/rlyirw90IH8uLBjkQ+GZCZnlqiWynlXy/wVpTU mOmEpmUMxypK199MaMSvrgc94ssbU/Gp4npkBk09Bs+9bpJfl1mJQhOO6c40Px2xYNAINjPPW7hK H8vVLw0+5loGO6FKibvL8JO05YDepuF8Pu5NfCGYCaGrfoaVF+Bg== X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= From: "Zhao Zhili" To: "'FFmpeg development discussions and patches'" References: <20240119154950.444144-1-jianfeng.zheng@mthreads.com> In-Reply-To: <20240119154950.444144-1-jianfeng.zheng@mthreads.com> Date: Sat, 20 Jan 2024 12:20:57 +0800 X-OQ-MSGID: <05f301da4b58$119fc6e0$34df54a0$@foxmail.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQNKS1Sd39g9jXOh1ktG5l3aKb3Jua4CFB/Q Content-Language: zh-cn Subject: Re: [FFmpeg-devel] [PATCH v1 1/2] vaapi: add vaapi_cavs support 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 Cc: "'jianfeng.zheng'" 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: Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiBGcm9tOiBmZm1wZWctZGV2ZWwgPGZmbXBl Zy1kZXZlbC1ib3VuY2VzQGZmbXBlZy5vcmc+IE9uIEJlaGFsZiBPZiBqaWFuZmVuZy56aGVuZwo+ IFNlbnQ6IDIwMjTlubQx5pyIMTnml6UgMjM6NTAKPiBUbzogZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKPiBDYzogamlhbmZlbmcuemhlbmcgPGppYW5mZW5nLnpoZW5nQG10aHJlYWRzLmNvbT4KPiBT dWJqZWN0OiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjEgMS8yXSB2YWFwaTogYWRkIHZhYXBpX2Nh dnMgc3VwcG9ydAo+IAo+IHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcHVsbC83 MzgKPiAKPiBbTW9vcmUgVGhyZWFkc10oaHR0cHM6Ly93d3cubXRocmVhZHMuY29tKSAoc2hvcnQg Zm9yIE10aHJlYWRzKSBpcyBhCj4gQ2hpbmVzZSBHUFUgbWFudWZhY3R1cmVyLiBBbGwgb3VyIHBy b2R1Y3RzLCBsaWtlIE1UVFM3MC9NVFRTODAvLi4gLAo+IHN1cHBvcnQgQVZTL0FWUysgSFcgZGVj b2RpbmcgYXQgbWF4IDJrIHJlc29sdXRpb24uCgpQbGVhc2UgdXNlIGRlc2NyaXB0aW9uIG1vcmUg b2JqZWN0aXZlIGFuZCBuZXV0cmFsaXR5LgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBqaWFuZmVuZy56 aGVuZyA8amlhbmZlbmcuemhlbmdAbXRocmVhZHMuY29tPgo+IC0tLQo+ICBjb25maWd1cmUgICAg ICAgICAgICAgICAgIHwgIDE0ICsrCj4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgfCAgIDEg Kwo+ICBsaWJhdmNvZGVjL2NhdnMuYyAgICAgICAgIHwgIDEyICsKPiAgbGliYXZjb2RlYy9jYXZz LmggICAgICAgICB8ICAzNiArKy0KPiAgbGliYXZjb2RlYy9jYXZzX3BhcnNlci5jICB8ICAxNiAr Kwo+ICBsaWJhdmNvZGVjL2NhdnNkZWMuYyAgICAgIHwgNDczICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tCj4gIGxpYmF2Y29kZWMvZGVmcy5oICAgICAgICAgfCAgIDMgKwo+ ICBsaWJhdmNvZGVjL2h3YWNjZWxzLmggICAgIHwgICAxICsKPiAgbGliYXZjb2RlYy9wcm9maWxl cy5jICAgICB8ICAgNiArCj4gIGxpYmF2Y29kZWMvcHJvZmlsZXMuaCAgICAgfCAgIDEgKwo+ICBs aWJhdmNvZGVjL3ZhYXBpX2NhdnMuYyAgIHwgMTY0ICsrKysrKysrKysrKysKPiAgbGliYXZjb2Rl Yy92YWFwaV9kZWNvZGUuYyB8ICAgNCArCj4gIDEyIGZpbGVzIGNoYW5nZWQsIDY2OSBpbnNlcnRp b25zKCspLCA2MiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMv dmFhcGlfY2F2cy5jCj4gCj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGlu ZGV4IGM4YWUwYTA2MWQuLjg5NzU5ZWRhNWQgMTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysr IGIvY29uZmlndXJlCj4gQEAgLTI0NjMsNiArMjQ2Myw3IEBAIEhBVkVfTElTVD0iCj4gICAgICB4 bWxsaW50Cj4gICAgICB6bGliX2d6aXAKPiAgICAgIG9wZW52aW5vMgo+ICsgICAgdmFfcHJvZmls ZV9hdnMKPiAgIgo+IAo+ICAjIG9wdGlvbnMgZW1pdHRlZCB3aXRoIENPTkZJR18gcHJlZml4IGJ1 dCBub3QgYXZhaWxhYmxlIG9uIHRoZSBjb21tYW5kIGxpbmUKPiBAQCAtMzIwMiw2ICszMjAzLDcg QEAgd212M19keHZhMl9od2FjY2VsX3NlbGVjdD0idmMxX2R4dmEyX2h3YWNjZWwiCj4gIHdtdjNf bnZkZWNfaHdhY2NlbF9zZWxlY3Q9InZjMV9udmRlY19od2FjY2VsIgo+ICB3bXYzX3ZhYXBpX2h3 YWNjZWxfc2VsZWN0PSJ2YzFfdmFhcGlfaHdhY2NlbCIKPiAgd212M192ZHBhdV9od2FjY2VsX3Nl bGVjdD0idmMxX3ZkcGF1X2h3YWNjZWwiCj4gK2NhdnNfdmFhcGlfaHdhY2NlbF9kZXBzPSJ2YWFw aSB2YV9wcm9maWxlX2F2cyBWQVBpY3R1cmVQYXJhbWV0ZXJCdWZmZXJBVlMiCj4gCj4gICMgaGFy ZHdhcmUtYWNjZWxlcmF0ZWQgY29kZWNzCj4gIG1lZGlhZm91bmRhdGlvbl9kZXBzPSJtZnRyYW5z Zm9ybV9oIE1GQ3JlYXRlQWxpZ25lZE1lbW9yeUJ1ZmZlciIKPiBAQCAtNzE3NSw2ICs3MTc3LDE4 IEBAIGlmIGVuYWJsZWQgdmFhcGk7IHRoZW4KPiAgICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEv dmFfZW5jX3ZwOC5oIiAgIlZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlclZQOCIKPiAgICAgIGNo ZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX3ZwOS5oIiAgIlZBRW5jUGljdHVyZVBhcmFtZXRl ckJ1ZmZlclZQOSIKPiAgICAgIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEvdmFfZW5jX2F2MS5oIiAg IlZBRW5jUGljdHVyZVBhcmFtZXRlckJ1ZmZlckFWMSIKPiArCj4gKyAgICAjCj4gKyAgICAjIFVz aW5nICdWQV9DSEVDS19WRVJTSU9OJyBpbiBzb3VyY2UgY29kZXMgbWFrZSB0aGluZ3MgZWFzeS4g QnV0IHdlIGhhdmUgdG8gd2FpdAo+ICsgICAgIyB1bnRpbCBuZXdseSBhZGRlZCBWQVByb2ZpbGUg YmVpbmcgZGlzdHJpYnV0ZWQgYnkgVkFBUEkgcmVsZWFzZWQgdmVyc2lvbi4KPiArICAgICMKPiAr ICAgICMgQmVmb3JlIG9yIGFmdGVyIHRoYXQsIHdlIGNhbiB1c2UgYXV0by1kZXRlY3Rpb24gdG8g a2VlcCB2ZXJzaW9uIGNvbXBhdGliaWxpdHkuCj4gKyAgICAjIEl0IGFsd2F5cyB3b3Jrcy4KPiAr ICAgICMKPiArICAgIGRpc2FibGUgdmFfcHJvZmlsZV9hdnMgJiYKPiArICAgICAgICB0ZXN0X2Nv ZGUgY2MgdmEvdmEuaCAiVkFQcm9maWxlIHAxID0gVkFQcm9maWxlQVZTSml6aHVuLCBwMiA9IFZB UHJvZmlsZUFWU0d1YW5nZGlhbjsiICYmCj4gKyAgICAgICAgZW5hYmxlIHZhX3Byb2ZpbGVfYXZz Cj4gKyAgICBlbmFibGVkIHZhX3Byb2ZpbGVfYXZzICYmIGNoZWNrX3R5cGUgInZhL3ZhLmggdmEv dmFfZGVjX2F2cy5oIiAiVkFQaWN0dXJlUGFyYW1ldGVyQnVmZmVyQVZTIgo+ICBmaQo+IAo+ICBp ZiBlbmFibGVkX2FsbCBvcGVuY2wgbGliZHJtIDsgdGhlbgo+IGRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQo+IGluZGV4IGJiNDIwOTUxNjUuLjdk OTIzNzVmZWQgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2 Y29kZWMvTWFrZWZpbGUKPiBAQCAtMTA1NSw2ICsxMDU1LDcgQEAgT0JKUy0kKENPTkZJR19WUDlf VkFBUElfSFdBQ0NFTCkgICAgICAgICAgKz0gdmFhcGlfdnA5Lm8KPiAgT0JKUy0kKENPTkZJR19W UDlfVkRQQVVfSFdBQ0NFTCkgICAgICAgICAgKz0gdmRwYXVfdnA5Lm8KPiAgT0JKUy0kKENPTkZJ R19WUDlfVklERU9UT09MQk9YX0hXQUNDRUwpICAgKz0gdmlkZW90b29sYm94X3ZwOS5vCj4gIE9C SlMtJChDT05GSUdfVlA4X1FTVl9IV0FDQ0VMKSAgICAgICAgICAgICs9IHFzdmRlYy5vCj4gK09C SlMtJChDT05GSUdfQ0FWU19WQUFQSV9IV0FDQ0VMKSAgICAgICAgICs9IHZhYXBpX2NhdnMubwo+ IAo+ICAjIE9iamVjdHMgZHVwbGljYXRlZCBmcm9tIG90aGVyIGxpYnJhcmllcyBmb3Igc2hhcmVk IGJ1aWxkcwo+ICBTSExJQk9CSlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArPSBsb2cy X3RhYi5vIHJldmVyc2Uubwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NhdnMuYyBiL2xpYmF2 Y29kZWMvY2F2cy5jCj4gaW5kZXggZmRkNTc3ZjdmYi4uZWQ3YjI3ODMzNiAxMDA2NDQKPiAtLS0g YS9saWJhdmNvZGVjL2NhdnMuYwo+ICsrKyBiL2xpYmF2Y29kZWMvY2F2cy5jCgpQbGVhc2Ugc3Bs aXQgdGhlIHBhdGNoLgoKPiBAQCAtODEwLDYgKzgxMCwxNCBAQCBhdl9jb2xkIGludCBmZl9jYXZz X2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+ICAgICAgaWYgKCFoLT5jdXIuZiB8fCAhaC0+ RFBCWzBdLmYgfHwgIWgtPkRQQlsxXS5mKQo+ICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7Cj4gCj4gKyAgICBoLT5vdXRbMF0uZiA9IGF2X2ZyYW1lX2FsbG9jKCk7Cj4gKyAgICBoLT5v dXRbMV0uZiA9IGF2X2ZyYW1lX2FsbG9jKCk7Cj4gKyAgICBoLT5vdXRbMl0uZiA9IGF2X2ZyYW1l X2FsbG9jKCk7Cj4gKyAgICBpZiAoIWgtPm91dFswXS5mIHx8ICFoLT5vdXRbMV0uZiB8fCAhaC0+ b3V0WzJdLmYpIHsKPiArICAgICAgICBmZl9jYXZzX2VuZChhdmN0eCk7Cj4gKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgIH0KPiArCj4gICAgICBoLT5sdW1hX3NjYW5bMF0g ICAgICAgICAgICAgICAgICAgICA9IDA7Cj4gICAgICBoLT5sdW1hX3NjYW5bMV0gICAgICAgICAg ICAgICAgICAgICA9IDg7Cj4gICAgICBoLT5pbnRyYV9wcmVkX2xbSU5UUkFfTF9WRVJUXSAgICAg ICA9IGludHJhX3ByZWRfdmVydDsKPiBAQCAtODQwLDYgKzg0OCwxMCBAQCBhdl9jb2xkIGludCBm Zl9jYXZzX2VuZChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gICAgICBhdl9mcmFtZV9mcmVlKCZo LT5EUEJbMF0uZik7Cj4gICAgICBhdl9mcmFtZV9mcmVlKCZoLT5EUEJbMV0uZik7Cj4gCj4gKyAg ICBhdl9mcmFtZV9mcmVlKCZoLT5vdXRbMF0uZik7Cj4gKyAgICBhdl9mcmFtZV9mcmVlKCZoLT5v dXRbMV0uZik7Cj4gKyAgICBhdl9mcmFtZV9mcmVlKCZoLT5vdXRbMl0uZik7Cj4gKwo+ICAgICAg YXZfZnJlZXAoJmgtPnRvcF9xcCk7Cj4gICAgICBhdl9mcmVlcCgmaC0+dG9wX212WzBdKTsKPiAg ICAgIGF2X2ZyZWVwKCZoLT50b3BfbXZbMV0pOwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nh dnMuaCBiL2xpYmF2Y29kZWMvY2F2cy5oCj4gaW5kZXggMjQ0YzMyMmIzNS4uZWYwM2MxYTk3NCAx MDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2NhdnMuaAo+ICsrKyBiL2xpYmF2Y29kZWMvY2F2cy5o Cj4gQEAgLTM5LDggKzM5LDEwIEBACj4gICNkZWZpbmUgRVhUX1NUQVJUX0NPREUgICAgICAgICAg MHgwMDAwMDFiNQo+ICAjZGVmaW5lIFVTRVJfU1RBUlRfQ09ERSAgICAgICAgIDB4MDAwMDAxYjIK PiAgI2RlZmluZSBDQVZTX1NUQVJUX0NPREUgICAgICAgICAweDAwMDAwMWIwCj4gKyNkZWZpbmUg VklERU9fU0VRX0VORF9DT0RFICAgICAgMHgwMDAwMDFiMQo+ICAjZGVmaW5lIFBJQ19JX1NUQVJU X0NPREUgICAgICAgIDB4MDAwMDAxYjMKPiAgI2RlZmluZSBQSUNfUEJfU1RBUlRfQ09ERSAgICAg ICAweDAwMDAwMWI2Cj4gKyNkZWZpbmUgVklERU9fRURJVF9DT0RFICAgICAgICAgMHgwMDAwMDFi Nwo+IAo+ICAjZGVmaW5lIEFfQVZBSUwgICAgICAgICAgICAgICAgICAgICAgICAgIDEKPiAgI2Rl ZmluZSBCX0FWQUlMICAgICAgICAgICAgICAgICAgICAgICAgICAyCj4gQEAgLTE2NCwxMCArMTY2 LDE1IEBAIHN0cnVjdCBkZWNfMmR2bGMgewo+ICB0eXBlZGVmIHN0cnVjdCBBVlNGcmFtZSB7Cj4g ICAgICBBVkZyYW1lICpmOwo+ICAgICAgaW50IHBvYzsKPiArICAgIGludCBvdXRwdXRlZDsKPiAr Cj4gKyAgICBBVkJ1ZmZlclJlZiAgICpod2FjY2VsX3ByaXZfYnVmOwo+ICsgICAgdm9pZCAgICAg ICAgICAqaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7Cj4gIH0gQVZTRnJhbWU7Cj4gCj4gIHR5cGVk ZWYgc3RydWN0IEFWU0NvbnRleHQgewo+ICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4Owo+ICsg ICAgaW50IGdvdF9waXhfZm10Owo+ICAgICAgQmxvY2tEU1BDb250ZXh0IGJkc3A7Cj4gICAgICBI MjY0Q2hyb21hQ29udGV4dCBoMjY0Y2hyb21hOwo+ICAgICAgVmlkZW9EU1BDb250ZXh0IHZkc3A7 Cj4gQEAgLTE3NSw2ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVjdCBBVlNDb250ZXh0IHsKPiAgICAg IEdldEJpdENvbnRleHQgZ2I7Cj4gICAgICBBVlNGcmFtZSBjdXI7ICAgICAvLy88IGN1cnJlbnRs eSBkZWNvZGVkIGZyYW1lCj4gICAgICBBVlNGcmFtZSBEUEJbMl07ICAvLy88IHJlZmVyZW5jZSBm cmFtZXMKPiArICAgIEFWU0ZyYW1lIG91dFszXTsgIC8vLzwgb3V0cHV0IHF1ZXVlLCBzaXplIDIg bWF5YmUgZW5vdWdoCj4gICAgICBpbnQgZGlzdFsyXTsgICAgIC8vLzwgdGVtcG9yYWwgZGlzdGFu Y2VzIGZyb20gY3VycmVudCBmcmFtZSB0byByZWYgZnJhbWVzCj4gICAgICBpbnQgbG93X2RlbGF5 Owo+ICAgICAgaW50IHByb2ZpbGUsIGxldmVsOwo+IEBAIC0xODIsMTIgKzE5MCwzOCBAQCB0eXBl ZGVmIHN0cnVjdCBBVlNDb250ZXh0IHsKPiAgICAgIGludCBtYl93aWR0aCwgbWJfaGVpZ2h0Owo+ ICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7Cj4gICAgICBpbnQgc3RyZWFtX3JldmlzaW9uOyAvLy88 MCBmb3Igc2FtcGxlcyBmcm9tIDIwMDYsIDEgZm9yIHJtNTJqIGVuY29kZXIKPiAtICAgIGludCBw cm9ncmVzc2l2ZTsKPiArICAgIGludCBwcm9ncmVzc2l2ZV9zZXE7Cj4gKyAgICBpbnQgcHJvZ3Jl c3NpdmVfZnJhbWU7Cj4gICAgICBpbnQgcGljX3N0cnVjdHVyZTsKPiArICAgIGludCBub19mb3J3 YXJkX3JlZl9mbGFnOwo+ICsgICAgaW50IHBiX2ZpZWxkX2VuaGFuY2VkX2ZsYWc7ICAgLy8vPCBv bmx5IHVzZWQgaW4gR1VBTkdESUFOCj4gICAgICBpbnQgc2tpcF9tb2RlX2ZsYWc7IC8vLzwgc2Vs ZWN0IGJldHdlZW4gc2tpcF9jb3VudCBvciBvbmUgc2tpcF9mbGFnIHBlciBNQgo+ICAgICAgaW50 IGxvb3BfZmlsdGVyX2Rpc2FibGU7Cj4gICAgICBpbnQgYWxwaGFfb2Zmc2V0LCBiZXRhX29mZnNl dDsKPiAgICAgIGludCByZWZfZmxhZzsKPiArCj4gKyAgICAvKiogXGRlZmdyb3VwIGd1YW5nZGlh biBwcm9maWxlCj4gKyAgICAgKiBAewo+ICsgICAgICovCj4gKyAgICBpbnQgYWVjX2ZsYWc7Cj4g KyAgICBpbnQgd2VpZ2h0X3F1YW50X2ZsYWc7Cj4gKyAgICBpbnQgY2hyb21hX3F1YW50X3BhcmFt X2RlbHRhX2NiOwo+ICsgICAgaW50IGNocm9tYV9xdWFudF9wYXJhbV9kZWx0YV9jcjsKPiArICAg IHVpbnQ4X3Qgd3FtXzh4OFs2NF07Cj4gKyAgICAvKipAfSovCj4gKwo+ICsgICAgLyoqIFxkZWZn cm91cCBzbGljZSB3ZWlnaHRpbmcKPiArICAgICAqIEZGbXBlZyBkb24ndCBzdXBwb3J0IHNsaWNl IHdlaWdodGluZyBuYXRpdmVseSwgYnV0IG1heWJlIG5lZWRlZCBmb3IgSFdhY2NlbC4KPiArICAg ICAqIEB7Cj4gKyAgICAgKi8KPiArICAgIHVpbnQzMl90IHNsaWNlX3dlaWdodF9wcmVkX2ZsYWcg OiAxOwo+ICsgICAgdWludDMyX3QgbWJfd2VpZ2h0X3ByZWRfZmxhZyAgICA6IDE7Cj4gKyAgICB1 aW50OF90IGx1bWFfc2NhbGVbNF07Cj4gKyAgICBpbnQ4X3QgbHVtYV9zaGlmdFs0XTsKPiArICAg IHVpbnQ4X3QgY2hyb21hX3NjYWxlWzRdOwo+ICsgICAgaW50OF90IGNocm9tYV9zaGlmdFs0XTsK PiArICAgIC8qKkB9Ki8KPiArCj4gICAgICBpbnQgbWJ4LCBtYnksIG1iaWR4OyAvLy88IG1hY3Jv YmxvY2sgY29vcmRpbmF0ZXMKPiAgICAgIGludCBmbGFnczsgICAgICAgICAvLy88IGF2YWlsYWJp bGl0eSBmbGFncyBvZiBuZWlnaGJvdXJpbmcgbWFjcm9ibG9ja3MKPiAgICAgIGludCBzdGM7ICAg ICAgICAgICAvLy88IGxhc3Qgc3RhcnQgY29kZQo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nh dnNfcGFyc2VyLmMgYi9saWJhdmNvZGVjL2NhdnNfcGFyc2VyLmMKPiBpbmRleCA0YTAzZWZmZDBm Li5hNDFhODJkOGQxIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2F2c19wYXJzZXIuYwo+ICsr KyBiL2xpYmF2Y29kZWMvY2F2c19wYXJzZXIuYwo+IEBAIC02NSw2ICs2NSwyMiBAQCBzdGF0aWMg aW50IGNhdnNfZmluZF9mcmFtZV9lbmQoUGFyc2VDb250ZXh0ICpwYywgY29uc3QgdWludDhfdCAq YnVmLAo+ICAgICAgICAgICAgICAgICAgcGMtPnN0YXRlPS0xOwo+ICAgICAgICAgICAgICAgICAg cmV0dXJuIGktMzsKPiAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBpZigoc3RhdGUmMHhG RkZGRkYwMCkgPT0gMHgxMDApewo+ICsgICAgICAgICAgICAgICAgaWYoc3RhdGUgIT0gRVhUX1NU QVJUX0NPREUgJiYgc3RhdGUgIT0gVVNFUl9TVEFSVF9DT0RFKXsKPiArICAgICAgICAgICAgICAg ICAgICBzdGF0ZSA9IHN0YXRlID4+IDg7Cj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICAg ICAgZm9yKDsgaTxidWZfc2l6ZTsgaSsrKXsKPiArICAgICAgICAgICAgc3RhdGU9IChzdGF0ZTw8 OCkgfCBidWZbaV07Cj4gKyAgICAgICAgICAgIGlmKChzdGF0ZSYweEZGRkZGRjAwKSA9PSAweDEw MCl7Cj4gKyAgICAgICAgICAgICAgICBpZihzdGF0ZSA+IFNMSUNFX01BWF9TVEFSVF9DT0RFKXsK PiArICAgICAgICAgICAgICAgICAgICBwYy0+ZnJhbWVfc3RhcnRfZm91bmQ9MDsKPiArICAgICAg ICAgICAgICAgICAgICBwYy0+c3RhdGU9LTE7Cj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGktMzsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQoKV2h5PyBBIHBhcnNl ciBzaG91bGQgc3BsaXQgZGF0YSBpbnRvIGZyYW1lcywgbm90IHNsaWNlcy4KCj4gICAgICAgICAg fQo+ICAgICAgfQo+ICAgICAgcGMtPmZyYW1lX3N0YXJ0X2ZvdW5kPSBwaWNfZm91bmQ7Cj4gZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2F2c2RlYy5jIGIvbGliYXZjb2RlYy9jYXZzZGVjLmMKPiBp bmRleCBiMzU2ZGEwYjA0Li4xOGMzOGNkM2ZmIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvY2F2 c2RlYy5jCj4gKysrIGIvbGliYXZjb2RlYy9jYXZzZGVjLmMKPiBAQCAtMjUsMTEgKzI1LDE1IEBA Cj4gICAqIEBhdXRob3IgU3RlZmFuIEdlaHJlciA8c3RlZmFuLmdlaHJlckBnbXguZGU+Cj4gICAq Lwo+IAo+ICsjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKPiAgI2luY2x1ZGUgImxpYmF2 dXRpbC9hdmFzc2VydC5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2VtbXMuaCIKPiAgI2luY2x1 ZGUgImF2Y29kZWMuaCIKPiAgI2luY2x1ZGUgImdldF9iaXRzLmgiCj4gICNpbmNsdWRlICJnb2xv bWIuaCIKPiArI2luY2x1ZGUgImh3YWNjZWxfaW50ZXJuYWwuaCIKPiArI2luY2x1ZGUgImh3Y29u ZmlnLmgiCj4gKyNpbmNsdWRlICJwcm9maWxlcy5oIgo+ICAjaW5jbHVkZSAiY2F2cy5oIgo+ICAj aW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKPiAgI2luY2x1ZGUgImRlY29kZS5oIgo+IEBAIC0z Nyw2ICs0MSw0MyBAQAo+ICAjaW5jbHVkZSAibXBlZzEyZGF0YS5oIgo+ICAjaW5jbHVkZSAic3Rh cnRjb2RlLmgiCj4gCj4gK3N0YXRpYyBjb25zdCB1aW50OF90IGRlZmF1bHRfd3FfcGFyYW1bNF1b Nl0gPSB7Cj4gKyAgICB7MTI4LCAgOTgsIDEwNiwgMTE2LCAxMTYsIDEyOH0sCj4gKyAgICB7MTM1 LCAxNDMsIDE0MywgMTYwLCAxNjAsIDIxM30sCj4gKyAgICB7MTI4LCAgOTgsIDEwNiwgMTE2LCAx MTYsIDEyOH0sCj4gKyAgICB7MTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOH0sCj4gK307Cj4g K3N0YXRpYyBjb25zdCB1aW50OF90IHdxX21vZGVsXzJfcGFyYW1bNF1bNjRdID0gewo+ICsgICAg ewo+ICsgICAgICAgIDAsIDAsIDAsIDQsIDQsIDQsIDUsIDUsCj4gKyAgICAgICAgMCwgMCwgMywg MywgMywgMywgNSwgNSwKPiArICAgICAgICAwLCAzLCAyLCAyLCAxLCAxLCA1LCA1LAo+ICsgICAg ICAgIDQsIDMsIDIsIDIsIDEsIDUsIDUsIDUsCj4gKyAgICAgICAgNCwgMywgMSwgMSwgNSwgNSwg NSwgNSwKPiArICAgICAgICA0LCAzLCAxLCA1LCA1LCA1LCA1LCA1LAo+ICsgICAgICAgIDUsIDUs IDUsIDUsIDUsIDUsIDUsIDUsCj4gKyAgICAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwKPiAr ICAgIH0sIHsKPiArICAgICAgICAwLCAwLCAwLCA0LCA0LCA0LCA1LCA1LAo+ICsgICAgICAgIDAs IDAsIDQsIDQsIDQsIDQsIDUsIDUsCj4gKyAgICAgICAgMCwgMywgMiwgMiwgMiwgMSwgNSwgNSwK PiArICAgICAgICAzLCAzLCAyLCAyLCAxLCA1LCA1LCA1LAo+ICsgICAgICAgIDMsIDMsIDIsIDEs IDUsIDUsIDUsIDUsCj4gKyAgICAgICAgMywgMywgMSwgNSwgNSwgNSwgNSwgNSwKPiArICAgICAg ICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LAo+ICsgICAgICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUs IDUsCj4gKyAgICB9LCB7Cj4gKyAgICAgICAgMCwgMCwgMCwgNCwgNCwgMywgNSwgNSwKPiArICAg ICAgICAwLCAwLCA0LCA0LCAzLCAyLCA1LCA1LAo+ICsgICAgICAgIDAsIDQsIDQsIDMsIDIsIDEs IDUsIDUsCj4gKyAgICAgICAgNCwgNCwgMywgMiwgMSwgNSwgNSwgNSwKPiArICAgICAgICA0LCAz LCAyLCAxLCA1LCA1LCA1LCA1LAo+ICsgICAgICAgIDMsIDIsIDEsIDUsIDUsIDUsIDUsIDUsCj4g KyAgICAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwKPiArICAgICAgICA1LCA1LCA1LCA1LCA1 LCA1LCA1LCA1LAo+ICsgICAgfQo+ICt9Owo+ICsKPiAgc3RhdGljIGNvbnN0IHVpbnQ4X3QgbXZf c2Nhbls0XSA9IHsKPiAgICAgIE1WX0ZXRF9YMCwgTVZfRldEX1gxLAo+ICAgICAgTVZfRldEX1gy LCBNVl9GV0RfWDMKPiBAQCAtOTI3LDcgKzk2OCwxMSBAQCBzdGF0aWMgaW50IGRlY29kZV9tYl9i KEFWU0NvbnRleHQgKmgsIGVudW0gY2F2c19tYiBtYl90eXBlKQo+IAo+ICBzdGF0aWMgaW5saW5l IGludCBkZWNvZGVfc2xpY2VfaGVhZGVyKEFWU0NvbnRleHQgKmgsIEdldEJpdENvbnRleHQgKmdi KQo+ICB7Cj4gLSAgICBpZiAoaC0+c3RjID4gMHhBRikKPiArICAgIGludCBpLCBucmVmOwo+ICsK PiArICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX1RSQUNFLCAic2xpY2Ugc3RhcnQgY29kZSAw eCUwMnhcbiIsIGgtPnN0Yyk7Cj4gKwo+ICsgICAgaWYgKGgtPnN0YyA+IFNMSUNFX01BWF9TVEFS VF9DT0RFKQo+ICAgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0VSUk9SLCAidW5leHBl Y3RlZCBzdGFydCBjb2RlIDB4JTAyeFxuIiwgaC0+c3RjKTsKPiAKPiAgICAgIGlmIChoLT5zdGMg Pj0gaC0+bWJfaGVpZ2h0KSB7Cj4gQEAgLTk0NiwxNCArOTkxLDExOSBAQCBzdGF0aWMgaW5saW5l IGludCBkZWNvZGVfc2xpY2VfaGVhZGVyKEFWU0NvbnRleHQgKmgsIEdldEJpdENvbnRleHQgKmdi KQo+ICAgICAgfQo+ICAgICAgLyogaW50ZXIgZnJhbWUgb3Igc2Vjb25kIHNsaWNlIGNhbiBoYXZl IHdlaWdodGluZyBwYXJhbXMgKi8KPiAgICAgIGlmICgoaC0+Y3VyLmYtPnBpY3RfdHlwZSAhPSBB Vl9QSUNUVVJFX1RZUEVfSSkgfHwKPiAtICAgICAgICAoIWgtPnBpY19zdHJ1Y3R1cmUgJiYgaC0+ bWJ5ID49IGgtPm1iX3dpZHRoIC8gMikpCj4gLSAgICAgICAgaWYgKGdldF9iaXRzMShnYikpIHsg Ly9zbGljZV93ZWlnaHRpbmdfZmxhZwo+IC0gICAgICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFW X0xPR19FUlJPUiwKPiAtICAgICAgICAgICAgICAgICAgICJ3ZWlnaHRlZCBwcmVkaWN0aW9uIG5v dCB5ZXQgc3VwcG9ydGVkXG4iKTsKPiArICAgICAgICAoIWgtPnBpY19zdHJ1Y3R1cmUgJiYgaC0+ bWJ5ID49IGgtPm1iX2hlaWdodCAvIDIpKSB7Cj4gKyAgICAgICAgaC0+c2xpY2Vfd2VpZ2h0X3By ZWRfZmxhZyA9IGdldF9iaXRzMShnYik7Cj4gKyAgICAgICAgaWYgKGgtPnNsaWNlX3dlaWdodF9w cmVkX2ZsYWcpIHsKPiArICAgICAgICAgICAgbnJlZiA9IGgtPmN1ci5mLT5waWN0X3R5cGUgPT0g QVZfUElDVFVSRV9UWVBFX0kgPyAxIDogKGgtPnBpY19zdHJ1Y3R1cmUgPyAyIDogNCk7Cj4gKyAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBucmVmOyBpKyspIHsKPiArICAgICAgICAgICAgICAg IGgtPmx1bWFfc2NhbGVbaV0gPSBnZXRfYml0cyhnYiwgOCk7Cj4gKyAgICAgICAgICAgICAgICBo LT5sdW1hX3NoaWZ0W2ldID0gZ2V0X3NiaXRzKGdiLCA4KTsKPiArICAgICAgICAgICAgICAgIHNr aXBfYml0czEoZ2IpOwo+ICsgICAgICAgICAgICAgICAgaC0+Y2hyb21hX3NjYWxlW2ldID0gZ2V0 X2JpdHMoZ2IsIDgpOwo+ICsgICAgICAgICAgICAgICAgaC0+Y2hyb21hX3NoaWZ0W2ldID0gZ2V0 X3NiaXRzKGdiLCA4KTsKPiArICAgICAgICAgICAgICAgIHNraXBfYml0czEoZ2IpOwo+ICsgICAg ICAgICAgICB9Cj4gKyAgICAgICAgICAgIGgtPm1iX3dlaWdodF9wcmVkX2ZsYWcgPSBnZXRfYml0 czEoZ2IpOwo+ICsgICAgICAgICAgICBpZiAoIWgtPmF2Y3R4LT5od2FjY2VsKSB7Cj4gKyAgICAg ICAgICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19FUlJPUiwKPiArICAgICAgICAgICAg ICAgICAgICAid2VpZ2h0ZWQgcHJlZGljdGlvbiBub3QgeWV0IHN1cHBvcnRlZFxuIik7Cj4gKyAg ICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgICBpZiAoaC0+YWVjX2ZsYWcp IHsKPiArICAgICAgICBhbGlnbl9nZXRfYml0cyhnYik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBza2lwIHN0dWZmaW5nIGJpdHMgYmVmb3JlIG5l eHQgc3RhcnQgY29kZSAiMHgwMDAwMDEiCj4gKyAqIEByZXR1cm4gJzAnIG5vIHN0dWZmaW5nIGJp dHMgcGxhY2VkIGF0IGgtPmdiIGJlaW5nIHNraXAsIGVsc2UgJzEnLgo+ICsgKi8KPiArc3RhdGlj IGlubGluZSBpbnQgc2tpcF9zdHVmZmluZ19iaXRzKEFWU0NvbnRleHQgKmgpCj4gK3sKPiArICAg IEdldEJpdENvbnRleHQgZ2IwID0gaC0+Z2I7Cj4gKyAgICBHZXRCaXRDb250ZXh0ICpnYiA9ICZo LT5nYjsKPiArICAgIGNvbnN0IHVpbnQ4X3QgKnN0YXJ0Owo+ICsgICAgY29uc3QgdWludDhfdCAq cHRyOwo+ICsgICAgY29uc3QgdWludDhfdCAqZW5kOwo+ICsgICAgaW50IGFsaWduOwo+ICsgICAg aW50IHN0dWZmaW5nX3plcm9zOwo+ICsKPiArI2lmIDAKPiArICAgIC8qKgo+ICsgICAgICogc2tp cCAxIGJpdCBzdHVmZmluZ19iaXQgJzEnIGFuZCAwfjcgYml0IHN0dWZmaW5nX2JpdCAnMCcKPiAr ICAgICAqLwo+ICsgICAgaWYgKCFnZXRfYml0czEoZ2IpKSB7Cj4gKyAgICAgICAgYXZfbG9nKGgt PmF2Y3R4LCBBVl9MT0dfV0FSTklORywgIk5PVCBzdHVmZmluZ19iaXQgJzEnXG4iKTsKPiArICAg ICAgICBnb3RvIHJlc3RvcmVfZ2V0X2JpdHM7Cj4gKyAgICB9Cj4gKyAgICBhbGlnbiA9ICgtZ2V0 X2JpdHNfY291bnQoZ2IpKSAmIDc7Cj4gKyAgICBpZiAoc2hvd19iaXRzX2xvbmcoZ2IsIGFsaWdu KSkgewo+ICsgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJOT1QgJWQg c3R1ZmZpbmdfYml0ICcwLi4wJ1xuIiwgYWxpZ24pOwo+ICsgICAgICAgIGdvdG8gcmVzdG9yZV9n ZXRfYml0czsKPiArICAgIH0KPiArI2Vsc2UKPiArICAgIC8qKgo+ICsgICAgICogU2VlbXMgbGlr ZSBub3QgYWxsIHRoZSBzdHJlYW0gZm9sbG93ICJuZXh0X3N0YXJ0X2NvZGUoKSIgc3RyaWN0bHku Cj4gKyAgICAgKi8KPiArICAgIGFsaWduID0gKC1nZXRfYml0c19jb3VudChnYikpICYgNzsKPiAr ICAgIGlmIChhbGlnbiA9PSAwICYmIHNob3dfYml0c19sb25nKGdiLCA4KSA9PSAweDgwKSB7Cj4g KyAgICAgICAgc2tpcF9iaXRzX2xvbmcoZ2IsIDgpOwo+ICsgICAgfQo+ICsjZW5kaWYKPiArCj4g KyAgICAvKioKPiArICAgICAqICBza2lwIGxlYWRpbmcgemVybyBieXRlcyBiZWZvcmUgMHggMDAg MDAgMDEgc3RjCj4gKyAgICAgKi8KPiArICAgIHB0ciA9IHN0YXJ0ID0gYWxpZ25fZ2V0X2JpdHMo Z2IpOwo+ICsgICAgZW5kID0gZ2ItPmJ1ZmZlcl9lbmQ7Cj4gKyAgICB3aGlsZSAocHRyIDwgZW5k ICYmICpwdHIgPT0gMCkKPiArICAgICAgICBwdHIrKzsKPiArCj4gKyAgICBpZiAoKHB0ciA+PSBl bmQpIHx8ICgqcHRyID09IDEgJiYgcHRyIC0gc3RhcnQgPj0gMikpIHsKPiArICAgICAgICBzdHVm ZmluZ196ZXJvcyA9IChwdHIgPj0gZW5kID8gZW5kIC0gc3RhcnQgOiBwdHIgLSBzdGFydCAtIDIp Owo+ICsgICAgICAgIGlmIChzdHVmZmluZ196ZXJvcyA+IDApCj4gKyAgICAgICAgICAgIGF2X2xv ZyhoLT5hdmN0eCwgQVZfTE9HX0RFQlVHLCAiU2tpcCAweCV4IHN0dWZmaW5nIHplcm9zIEAweCV4 LlxuIiwKPiArICAgICAgICAgICAgICAgICAgICBzdHVmZmluZ196ZXJvcywgKGludCkoc3RhcnQg LSBnYi0+YnVmZmVyKSk7Cj4gKyAgICAgICAgc2tpcF9iaXRzX2xvbmcoZ2IsIHN0dWZmaW5nX3pl cm9zICogOCk7Cj4gKyAgICAgICAgcmV0dXJuIDE7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAg IGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0RFQlVHLCAiTm8gbmV4dF9zdGFydF9jb2RlKCkgZm91 bmQgQDB4JXguXG4iLAo+ICsgICAgICAgICAgICAgICAgKGludCkoc3RhcnQgLSBnYi0+YnVmZmVy KSk7Cj4gKyAgICAgICAgZ290byByZXN0b3JlX2dldF9iaXRzOwo+ICsgICAgfQo+ICsKPiArcmVz dG9yZV9nZXRfYml0czoKPiArICAgIGgtPmdiID0gZ2IwOwo+ICAgICAgcmV0dXJuIDA7Cj4gIH0K PiAKPiArc3RhdGljIGlubGluZSBpbnQgc2tpcF9leHRlbnNpb25fYW5kX3VzZXJfZGF0YShBVlND b250ZXh0ICpoKQo+ICt7Cj4gKyAgICBpbnQgc3RjID0gLTE7Cj4gKyAgICBjb25zdCB1aW50OF90 ICpzdGFydCA9IGFsaWduX2dldF9iaXRzKCZoLT5nYik7Cj4gKyAgICBjb25zdCB1aW50OF90ICpl bmQgPSBoLT5nYi5idWZmZXJfZW5kOwo+ICsgICAgY29uc3QgdWludDhfdCAqcHRyLCAqbmV4dDsK PiArCj4gKyAgICBmb3IgKHB0ciA9IHN0YXJ0OyBwdHIgKyA0IDwgZW5kOyBwdHIgPSBuZXh0KSB7 Cj4gKyAgICAgICAgc3RjID0gc2hvd19iaXRzX2xvbmcoJmgtPmdiLCAzMik7Cj4gKyAgICAgICAg aWYgKHN0YyAhPSBFWFRfU1RBUlRfQ09ERSAmJiBzdGMgIT0gVVNFUl9TVEFSVF9DT0RFKSB7Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KPiArICAgICAgICBuZXh0ID0gYXZwcml2 X2ZpbmRfc3RhcnRfY29kZShwdHIgKyA0LCBlbmQsICZzdGMpOwo+ICsgICAgICAgIGlmIChuZXh0 IDwgZW5kKSB7Cj4gKyAgICAgICAgICAgIG5leHQgLT0gNDsKPiArICAgICAgICB9Cj4gKyAgICAg ICAgc2tpcF9iaXRzKCZoLT5nYiwgKG5leHQgLSBwdHIpICogOCk7Cj4gKyAgICAgICAgYXZfbG9n KGgtPmF2Y3R4LCBBVl9MT0dfREVCVUcsICJza2lwICVkIGJ5dGUgZXh0L3VzZXIgZGF0YVxuIiwK PiArICAgICAgICAgICAgICAgIChpbnQpKG5leHQgLSBwdHIpKTsKPiArICAgIH0KPiArCj4gKyAg ICByZXR1cm4gcHRyID4gc3RhcnQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbmxpbmUgaW50IGNoZWNr X2Zvcl9zbGljZShBVlNDb250ZXh0ICpoKQo+ICB7Cj4gICAgICBHZXRCaXRDb250ZXh0ICpnYiA9 ICZoLT5nYjsKPiBAQCAtOTgxLDQ0ICsxMTMxLDEzMyBAQCBzdGF0aWMgaW5saW5lIGludCBjaGVj a19mb3Jfc2xpY2UoQVZTQ29udGV4dCAqaCkKPiAgICogZnJhbWUgbGV2ZWwKPiAgICoKPiAgICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCj4gK3N0YXRpYyBpbnQgaHdhY2NlbF9waWMoQVZTQ29udGV4dCAq aCkKPiArewo+ICsgICAgaW50IHJldCA9IDA7Cj4gKyAgICBpbnQgc3RjID0gLTE7Cj4gKyAgICBj b25zdCB1aW50OF90ICpmcm1fc3RhcnQgPSBhbGlnbl9nZXRfYml0cygmaC0+Z2IpOwo+ICsgICAg Y29uc3QgdWludDhfdCAqZnJtX2VuZCA9IGgtPmdiLmJ1ZmZlcl9lbmQ7Cj4gKyAgICBjb25zdCB1 aW50OF90ICpzbGNfc3RhcnQgPSBmcm1fc3RhcnQ7Cj4gKyAgICBjb25zdCB1aW50OF90ICpzbGNf ZW5kID0gZnJtX2VuZDsKPiArICAgIEdldEJpdENvbnRleHQgZ2IgPSBoLT5nYjsKPiArICAgIGNv bnN0IEZGSFdBY2NlbCAqaHdhY2NlbCA9IGZmaHdhY2NlbChoLT5hdmN0eC0+aHdhY2NlbCk7Cj4g Kwo+ICsgICAgcmV0ID0gaHdhY2NlbC0+c3RhcnRfZnJhbWUoaC0+YXZjdHgsIE5VTEwsIDApOwo+ ICsgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBmb3Ig KHNsY19zdGFydCA9IGZybV9zdGFydDsgc2xjX3N0YXJ0ICsgNCA8IGZybV9lbmQ7IHNsY19zdGFy dCA9IHNsY19lbmQpIHsKPiArICAgICAgICBzbGNfZW5kID0gYXZwcml2X2ZpbmRfc3RhcnRfY29k ZShzbGNfc3RhcnQgKyA0LCBmcm1fZW5kLCAmc3RjKTsKPiArICAgICAgICBpZiAoc2xjX2VuZCA8 IGZybV9lbmQpIHsKPiArICAgICAgICAgICAgc2xjX2VuZCAtPSA0Owo+ICsgICAgICAgIH0KPiAr Cj4gKyAgICAgICAgaW5pdF9nZXRfYml0cygmaC0+Z2IsIHNsY19zdGFydCwgKHNsY19lbmQgLSBz bGNfc3RhcnQpICogOCk7Cj4gKyAgICAgICAgaWYgKCFjaGVja19mb3Jfc2xpY2UoaCkpIHsKPiAr ICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICByZXQgPSBod2Fj Y2VsLT5kZWNvZGVfc2xpY2UoaC0+YXZjdHgsIHNsY19zdGFydCwgc2xjX2VuZCAtIHNsY19zdGFy dCk7Cj4gKyAgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGgtPmdiID0gZ2I7Cj4gKyAgICBza2lwX2JpdHMo JmgtPmdiLCAoc2xjX3N0YXJ0IC0gZnJtX3N0YXJ0KSAqIDgpOwo+ICsKPiArICAgIGlmIChyZXQg PCAwKQo+ICsgICAgICAgIHJldHVybiByZXQ7Cj4gKwo+ICsgICAgcmV0dXJuIGh3YWNjZWwtPmVu ZF9mcmFtZShoLT5hdmN0eCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBAYnJpZWYgcmVtb3ZlIGZy YW1lIG91dCBvZiBkcGIKPiArICovCj4gK3N0YXRpYyB2b2lkIGNhdnNfZnJhbWVfdW5yZWYoQVZT RnJhbWUgKmZyYW1lKQo+ICt7Cj4gKyAgICAvKiBmcmFtZS0+ZiBjYW4gYmUgTlVMTCBpZiBjb250 ZXh0IGluaXQgZmFpbGVkICovCj4gKyAgICBpZiAoIWZyYW1lLT5mIHx8ICFmcmFtZS0+Zi0+YnVm WzBdKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBhdl9idWZmZXJfdW5yZWYoJmZyYW1l LT5od2FjY2VsX3ByaXZfYnVmKTsKPiArICAgIGZyYW1lLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0 ZSA9IE5VTEw7Cj4gKwo+ICsgICAgYXZfZnJhbWVfdW5yZWYoZnJhbWUtPmYpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IG91dHB1dF9vbmVfZnJhbWUoQVZTQ29udGV4dCAqaCwgQVZGcmFtZSAqZGF0 YSwgaW50ICpnb3RfZnJhbWUpCj4gK3sKPiArICAgIGlmIChoLT5vdXRbMF0uZi0+YnVmWzBdKSB7 Cj4gKyAgICAgICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0dfREVCVUcsICJvdXRwdXQgZnJhbWU6 IHBvYz0lZFxuIiwgaC0+b3V0WzBdLnBvYyk7Cj4gKyAgICAgICAgYXZfZnJhbWVfbW92ZV9yZWYo ZGF0YSwgaC0+b3V0WzBdLmYpOwo+ICsgICAgICAgICpnb3RfZnJhbWUgPSAxOwo+ICsKPiArICAg ICAgICAvLyBvdXRbMF0gPC0gb3V0WzFdIDwtIG91dFsyXSA8LSBvdXRbMF0KPiArICAgICAgICBj YXZzX2ZyYW1lX3VucmVmKCZoLT5vdXRbMl0pOwo+ICsgICAgICAgIEZGU1dBUChBVlNGcmFtZSwg aC0+b3V0WzBdLCBoLT5vdXRbMl0pOwo+ICsgICAgICAgIEZGU1dBUChBVlNGcmFtZSwgaC0+b3V0 WzBdLCBoLT5vdXRbMV0pOwo+ICsKPiArICAgICAgICByZXR1cm4gMTsKPiArICAgIH0KPiArCj4g KyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcXVldWVfb25lX2ZyYW1lKEFW U0NvbnRleHQgKmgsIEFWU0ZyYW1lICpvdXQpCj4gK3sKPiArICAgIGludCBpZHggPSAhaC0+b3V0 WzBdLmYtPmJ1ZlswXSA/IDAgOiAoIWgtPm91dFsxXS5mLT5idWZbMF0gPyAxIDogMik7Cj4gKyAg ICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19ERUJVRywgInF1ZXVlIGluIG91dFslZF06IHBvYz0l ZFxuIiwgaWR4LCBvdXQtPnBvYyk7Cj4gKyAgICBhdl9mcmFtZV9yZWYoaC0+b3V0W2lkeF0uZiwg b3V0LT5mKTsKPiArICAgIGgtPm91dFtpZHhdLnBvYyA9IG91dC0+cG9jOwo+ICt9Cj4gCj4gIHN0 YXRpYyBpbnQgZGVjb2RlX3BpYyhBVlNDb250ZXh0ICpoKQo+ICB7Cj4gICAgICBpbnQgcmV0Owo+ ICAgICAgaW50IHNraXBfY291bnQgICAgPSAtMTsKPiAgICAgIGVudW0gY2F2c19tYiBtYl90eXBl Owo+ICsgICAgY2hhciB0Y1s0XTsKPiAKPiAgICAgIGlmICghaC0+dG9wX3FwKSB7Cj4gICAgICAg ICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJObyBzZXF1ZW5jZSBoZWFkZXIgZGVj b2RlZCB5ZXRcbiIpOwo+ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICAg ICAgfQo+IAo+IC0gICAgYXZfZnJhbWVfdW5yZWYoaC0+Y3VyLmYpOwo+ICsgICAgY2F2c19mcmFt ZV91bnJlZigmaC0+Y3VyKTsKPiArCj4gKyAgICBza2lwX2JpdHMoJmgtPmdiLCAxNik7Ly9iYnZf ZGVsYXkKPiArICAgIGlmIChoLT5wcm9maWxlID09IEFWX1BST0ZJTEVfQ0FWU19HVUFOR0RJQU4p IHsKPiArICAgICAgICBza2lwX2JpdHMoJmgtPmdiLCA4KTsvL2Jidl9kd2xheV9leHRlbnNpb24K PiArICAgIH0KPiAKPiAtICAgIHNraXBfYml0cygmaC0+Z2IsIDE2KTsvL2Jidl9kd2xheQo+ICAg ICAgaWYgKGgtPnN0YyA9PSBQSUNfUEJfU1RBUlRfQ09ERSkgewo+ICAgICAgICAgIGgtPmN1ci5m LT5waWN0X3R5cGUgPSBnZXRfYml0cygmaC0+Z2IsIDIpICsgQVZfUElDVFVSRV9UWVBFX0k7Cj4g ICAgICAgICAgaWYgKGgtPmN1ci5mLT5waWN0X3R5cGUgPiBBVl9QSUNUVVJFX1RZUEVfQikgewo+ ICAgICAgICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19FUlJPUiwgImlsbGVnYWwgcGlj dHVyZSB0eXBlXG4iKTsKPiAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4gICAgICAgICAgfQo+ICsKPiAgICAgICAgICAvKiBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmVm ZXJlbmNlIGZyYW1lcyB3ZSBuZWVkICovCj4gLSAgICAgICAgaWYgKCFoLT5EUEJbMF0uZi0+ZGF0 YVswXSB8fAo+IC0gICAgICAgICAgICghaC0+RFBCWzFdLmYtPmRhdGFbMF0gJiYgaC0+Y3VyLmYt PnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVfQikpCj4gKyAgICAgICAgaWYgKCFoLT5EUEJb MF0uZi0+YnVmWzBdIHx8Cj4gKyAgICAgICAgICAgICghaC0+RFBCWzFdLmYtPmJ1ZlswXSAmJiBo LT5jdXIuZi0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSkgewo+ICsgICAgICAgICAg ICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgcmVmZXJlbmNlIGZyYW1l XG4iKTsKPiAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAg ICAgfQo+ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICBoLT5jdXIuZi0+cGljdF90eXBlID0gQVZf UElDVFVSRV9UWVBFX0k7Cj4gLSAgICAgICAgaWYgKGdldF9iaXRzMSgmaC0+Z2IpKQo+IC0gICAg ICAgICAgICBza2lwX2JpdHMoJmgtPmdiLCAyNCk7Ly90aW1lX2NvZGUKPiAtICAgICAgICAvKiBv bGQgc2FtcGxlIGNsaXBzIHdlcmUgYWxsIHByb2dyZXNzaXZlIGFuZCBubyBsb3dfZGVsYXksCj4g LSAgICAgICAgICAgYnVtcCBzdHJlYW0gcmV2aXNpb24gaWYgZGV0ZWN0ZWQgb3RoZXJ3aXNlICov Cj4gLSAgICAgICAgaWYgKGgtPmxvd19kZWxheSB8fCAhKHNob3dfYml0cygmaC0+Z2IsIDkpICYg MSkpCj4gLSAgICAgICAgICAgIGgtPnN0cmVhbV9yZXZpc2lvbiA9IDE7Cj4gLSAgICAgICAgLyog c2ltaWxhcmx5IHRlc3QgdG9wX2ZpZWxkX2ZpcnN0IGFuZCByZXBlYXRfZmlyc3RfZmllbGQgKi8K PiAtICAgICAgICBlbHNlIGlmIChzaG93X2JpdHMoJmgtPmdiLCAxMSkgJiAzKQo+IC0gICAgICAg ICAgICBoLT5zdHJlYW1fcmV2aXNpb24gPSAxOwo+IC0gICAgICAgIGlmIChoLT5zdHJlYW1fcmV2 aXNpb24gPiAwKQo+IC0gICAgICAgICAgICBza2lwX2JpdHMoJmgtPmdiLCAxKTsgLy9tYXJrZXJf Yml0Cj4gKyAgICAgICAgaWYgKGdldF9iaXRzMSgmaC0+Z2IpKSB7ICAgIC8vdGltZV9jb2RlCj4g KyAgICAgICAgICAgIHNraXBfYml0cygmaC0+Z2IsIDEpOwo+ICsgICAgICAgICAgICB0Y1swXSA9 IGdldF9iaXRzKCZoLT5nYiwgNSk7Cj4gKyAgICAgICAgICAgIHRjWzFdID0gZ2V0X2JpdHMoJmgt PmdiLCA2KTsKPiArICAgICAgICAgICAgdGNbMl0gPSBnZXRfYml0cygmaC0+Z2IsIDYpOwo+ICsg ICAgICAgICAgICB0Y1szXSA9IGdldF9iaXRzKCZoLT5nYiwgNik7Cj4gKyAgICAgICAgICAgIGF2 X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0RFQlVHLCAidGltZWNvZGU6ICVkOiVkOiVkLiVkXG4iLAo+ ICsgICAgICAgICAgICAgICAgICAgIHRjWzBdLCB0Y1sxXSwgdGNbMl0sIHRjWzNdKTsKPiArICAg ICAgICB9Cj4gKwo+ICsgICAgICAgIHNraXBfYml0cygmaC0+Z2IsIDEpOwo+ICAgICAgfQo+IAo+ ICAgICAgaWYgKGdldF9iaXRzX2xlZnQoJmgtPmdiKSA8IDIzKQo+IEBAIC0xMDI5LDYgKzEyNjgs MTcgQEAgc3RhdGljIGludCBkZWNvZGVfcGljKEFWU0NvbnRleHQgKmgpCj4gICAgICBpZiAocmV0 IDwgMCkKPiAgICAgICAgICByZXR1cm4gcmV0Owo+IAo+ICsgICAgaWYgKGgtPmF2Y3R4LT5od2Fj Y2VsKSB7Cj4gKyAgICAgICAgY29uc3QgRkZIV0FjY2VsICpod2FjY2VsID0gZmZod2FjY2VsKGgt PmF2Y3R4LT5od2FjY2VsKTsKPiArICAgICAgICBhdl9hc3NlcnQwKCFoLT5jdXIuaHdhY2NlbF9w aWN0dXJlX3ByaXZhdGUpOwo+ICsgICAgICAgIGlmIChod2FjY2VsLT5mcmFtZV9wcml2X2RhdGFf c2l6ZSkgewo+ICsgICAgICAgICAgICBoLT5jdXIuaHdhY2NlbF9wcml2X2J1ZiA9IGF2X2J1ZmZl cl9hbGxvY3ooaHdhY2NlbC0+ZnJhbWVfcHJpdl9kYXRhX3NpemUpOwo+ICsgICAgICAgICAgICBp ZiAoIWgtPmN1ci5od2FjY2VsX3ByaXZfYnVmKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKPiArICAgICAgICAgICAgaC0+Y3VyLmh3YWNjZWxfcGljdHVyZV9wcml2 YXRlID0gaC0+Y3VyLmh3YWNjZWxfcHJpdl9idWYtPmRhdGE7Cj4gKyAgICAgICAgfQo+ICsgICAg fQo+ICsKPiAgICAgIGlmICghaC0+ZWRnZV9lbXVfYnVmZmVyKSB7Cj4gICAgICAgICAgaW50IGFs bG9jX3NpemUgPSBGRkFMSUdOKEZGQUJTKGgtPmN1ci5mLT5saW5lc2l6ZVswXSkgKyAzMiwgMzIp Owo+ICAgICAgICAgIGgtPmVkZ2VfZW11X2J1ZmZlciA9IGF2X21hbGxvY3ooYWxsb2Nfc2l6ZSAq IDIgKiAyNCk7Cj4gQEAgLTEwMzksNiArMTI4OSw4IEBAIHN0YXRpYyBpbnQgZGVjb2RlX3BpYyhB VlNDb250ZXh0ICpoKQo+ICAgICAgaWYgKChyZXQgPSBmZl9jYXZzX2luaXRfcGljKGgpKSA8IDAp Cj4gICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgIGgtPmN1ci5wb2MgPSBnZXRfYml0cygmaC0+ Z2IsIDgpICogMjsKPiArICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0RFQlVHLCAicG9jPSVk LCB0eXBlPSVkXG4iLAo+ICsgICAgICAgICAgICBoLT5jdXIucG9jLCBoLT5jdXIuZi0+cGljdF90 eXBlKTsKPiAKPiAgICAgIC8qIGdldCB0ZW1wb3JhbCBkaXN0YW5jZXMgYW5kIE1WIHNjYWxpbmcg ZmFjdG9ycyAqLwo+ICAgICAgaWYgKGgtPmN1ci5mLT5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9U WVBFX0IpIHsKPiBAQCAtMTA1Miw4ICsxMzA0LDEyIEBAIHN0YXRpYyBpbnQgZGVjb2RlX3BpYyhB VlNDb250ZXh0ICpoKQo+ICAgICAgaWYgKGgtPmN1ci5mLT5waWN0X3R5cGUgPT0gQVZfUElDVFVS RV9UWVBFX0IpIHsKPiAgICAgICAgICBoLT5zeW1fZmFjdG9yID0gaC0+ZGlzdFswXSAqIGgtPnNj YWxlX2RlblsxXTsKPiAgICAgICAgICBpZiAoRkZBQlMoaC0+c3ltX2ZhY3RvcikgPiAzMjc2OCkg ewo+ICsgICAgICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19FUlJPUiwgInBvYz0lZC8l ZC8lZCwgZGlzdD0lZC8lZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICBoLT5EUEJbMV0ucG9j LCBoLT5EUEJbMF0ucG9jLCBoLT5jdXIucG9jLCBoLT5kaXN0WzBdLCBoLT5kaXN0WzFdKTsKPiAg ICAgICAgICAgICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0dfRVJST1IsICJzeW1fZmFjdG9yICVk IHRvbyBsYXJnZVxuIiwgaC0+c3ltX2ZhY3Rvcik7Cj4gLSAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+ICsKPiArICAgICAgICAgICAgaWYgKCFoLT5hdmN0eC0+aHdhY2Nl bCkKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICAgICAg ICAgIH0KPiAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgaC0+ZGlyZWN0X2RlblswXSA9IGgtPmRp c3RbMF0gPyAxNjM4NCAvIGgtPmRpc3RbMF0gOiAwOwo+IEBAIC0xMDYyLDkgKzEzMTgsOSBAQCBz dGF0aWMgaW50IGRlY29kZV9waWMoQVZTQ29udGV4dCAqaCkKPiAKPiAgICAgIGlmIChoLT5sb3df ZGVsYXkpCj4gICAgICAgICAgZ2V0X3VlX2dvbG9tYigmaC0+Z2IpOyAvL2Jidl9jaGVja190aW1l cwo+IC0gICAgaC0+cHJvZ3Jlc3NpdmUgICA9IGdldF9iaXRzMSgmaC0+Z2IpOwo+ICsgICAgaC0+ cHJvZ3Jlc3NpdmVfZnJhbWUgPSBnZXRfYml0czEoJmgtPmdiKTsKPiAgICAgIGgtPnBpY19zdHJ1 Y3R1cmUgPSAxOwo+IC0gICAgaWYgKCFoLT5wcm9ncmVzc2l2ZSkKPiArICAgIGlmICghaC0+cHJv Z3Jlc3NpdmVfZnJhbWUpCj4gICAgICAgICAgaC0+cGljX3N0cnVjdHVyZSA9IGdldF9iaXRzMSgm aC0+Z2IpOwo+ICAgICAgaWYgKCFoLT5waWNfc3RydWN0dXJlICYmIGgtPnN0YyA9PSBQSUNfUEJf U1RBUlRfQ09ERSkKPiAgICAgICAgICBza2lwX2JpdHMxKCZoLT5nYik7ICAgICAvL2FkdmFuY2Vk X3ByZWRfbW9kZV9kaXNhYmxlCj4gQEAgLTEwNzMsMTQgKzEzMjksMTggQEAgc3RhdGljIGludCBk ZWNvZGVfcGljKEFWU0NvbnRleHQgKmgpCj4gICAgICBoLT5waWNfcXBfZml4ZWQgPQo+ICAgICAg aC0+cXBfZml4ZWQgPSBnZXRfYml0czEoJmgtPmdiKTsKPiAgICAgIGgtPnFwICAgICAgID0gZ2V0 X2JpdHMoJmgtPmdiLCA2KTsKPiArICAgIGgtPnNraXBfbW9kZV9mbGFnID0gMDsKPiArICAgIGgt PnJlZl9mbGFnID0gMDsKPiAgICAgIGlmIChoLT5jdXIuZi0+cGljdF90eXBlID09IEFWX1BJQ1RV UkVfVFlQRV9JKSB7Cj4gLSAgICAgICAgaWYgKCFoLT5wcm9ncmVzc2l2ZSAmJiAhaC0+cGljX3N0 cnVjdHVyZSkKPiAtICAgICAgICAgICAgc2tpcF9iaXRzMSgmaC0+Z2IpOy8vd2hhdCBpcyB0aGlz Pwo+ICsgICAgICAgIGlmICghaC0+cHJvZ3Jlc3NpdmVfZnJhbWUgJiYgIWgtPnBpY19zdHJ1Y3R1 cmUpCj4gKyAgICAgICAgICAgIGgtPnNraXBfbW9kZV9mbGFnICA9IGdldF9iaXRzMSgmaC0+Z2Ip Owo+ICAgICAgICAgIHNraXBfYml0cygmaC0+Z2IsIDQpOyAgIC8vcmVzZXJ2ZWQgYml0cwo+ICAg ICAgfSBlbHNlIHsKPiAgICAgICAgICBpZiAoIShoLT5jdXIuZi0+cGljdF90eXBlID09IEFWX1BJ Q1RVUkVfVFlQRV9CICYmIGgtPnBpY19zdHJ1Y3R1cmUgPT0gMSkpCj4gICAgICAgICAgICAgIGgt PnJlZl9mbGFnICAgICAgICA9IGdldF9iaXRzMSgmaC0+Z2IpOwo+IC0gICAgICAgIHNraXBfYml0 cygmaC0+Z2IsIDQpOyAgIC8vcmVzZXJ2ZWQgYml0cwo+ICsgICAgICAgIGgtPm5vX2ZvcndhcmRf cmVmX2ZsYWcgPSBnZXRfYml0czEoJmgtPmdiKTsKPiArICAgICAgICBoLT5wYl9maWVsZF9lbmhh bmNlZF9mbGFnID0gZ2V0X2JpdHMxKCZoLT5nYik7Cj4gKyAgICAgICAgc2tpcF9iaXRzKCZoLT5n YiwgMik7ICAgLy9yZXNlcnZlZCBiaXRzCj4gICAgICAgICAgaC0+c2tpcF9tb2RlX2ZsYWcgICAg ICA9IGdldF9iaXRzMSgmaC0+Z2IpOwo+ICAgICAgfQo+ICAgICAgaC0+bG9vcF9maWx0ZXJfZGlz YWJsZSAgICAgPSBnZXRfYml0czEoJmgtPmdiKTsKPiBAQCAtMTA5Niw4ICsxMzU2LDQ2IEBAIHN0 YXRpYyBpbnQgZGVjb2RlX3BpYyhBVlNDb250ZXh0ICpoKQo+ICAgICAgICAgIGgtPmFscGhhX29m ZnNldCA9IGgtPmJldGFfb2Zmc2V0ICA9IDA7Cj4gICAgICB9Cj4gCj4gKyAgICBoLT53ZWlnaHRf cXVhbnRfZmxhZyA9IDA7Cj4gKyAgICBpZiAoaC0+cHJvZmlsZSA9PSBBVl9QUk9GSUxFX0NBVlNf R1VBTkdESUFOKSB7Cj4gKyAgICAgICAgaC0+d2VpZ2h0X3F1YW50X2ZsYWcgPSBnZXRfYml0czEo JmgtPmdiKTsKPiArICAgICAgICBpZiAoaC0+d2VpZ2h0X3F1YW50X2ZsYWcpIHsKPiArICAgICAg ICAgICAgaW50IHdxX3BhcmFtWzZdID0gezEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjh9Owo+ ICsgICAgICAgICAgICBpbnQgaSwgd3FwX2luZGV4LCB3cV9tb2RlbDsKPiArICAgICAgICAgICAg Y29uc3QgdWludDhfdCAqbTJwOwo+ICsKPiArICAgICAgICAgICAgc2tpcF9iaXRzMSgmaC0+Z2Ip Owo+ICsgICAgICAgICAgICBpZiAoIWdldF9iaXRzMSgmaC0+Z2IpKSB7Cj4gKyAgICAgICAgICAg ICAgICBoLT5jaHJvbWFfcXVhbnRfcGFyYW1fZGVsdGFfY2IgPSBnZXRfc2VfZ29sb21iKCZoLT5n Yik7Cj4gKyAgICAgICAgICAgICAgICBoLT5jaHJvbWFfcXVhbnRfcGFyYW1fZGVsdGFfY3IgPSBn ZXRfc2VfZ29sb21iKCZoLT5nYik7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgd3Fw X2luZGV4ID0gZ2V0X2JpdHMoJmgtPmdiLCAyKTsKPiArICAgICAgICAgICAgd3FfbW9kZWwgPSBn ZXRfYml0cygmaC0+Z2IsIDIpOwo+ICsgICAgICAgICAgICBtMnAgPSB3cV9tb2RlbF8yX3BhcmFt W3dxX21vZGVsXTsKPiArCj4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsK PiArICAgICAgICAgICAgICAgIGludCBkZWx0YSA9ICh3cXBfaW5kZXggPT0gMSB8fCB3cXBfaW5k ZXggPT0gMikgPyBnZXRfc2VfZ29sb21iKCZoLT5nYikgOiAwOwo+ICsgICAgICAgICAgICAgICAg d3FfcGFyYW1baV0gPSBkZWZhdWx0X3dxX3BhcmFtW3dxcF9pbmRleF1baV0gKyBkZWx0YTsKPiAr ICAgICAgICAgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX0RFQlVHLCAid3FwWyVkXT0l ZFxuIiwgaSwgd3FfcGFyYW1baV0pOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGZv ciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBoLT53cW1fOHg4W2ld ID0gd3FfcGFyYW1bIG0ycFtpXSBdOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfSBlbHNl IHsKPiArICAgICAgICAgICAgbWVtc2V0KGgtPndxbV84eDgsIDEyOCwgc2l6ZW9mKGgtPndxbV84 eDgpKTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgaC0+YWVjX2ZsYWcgPSBnZXRfYml0czEoJmgt PmdiKTsKPiArICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFWX0xPR19ERUJVRywgIndxX2ZsYWc9 JWQsIGFlY19mbGFnPSVkXG4iLAo+ICsgICAgICAgICAgICAgICAgaC0+d2VpZ2h0X3F1YW50X2Zs YWcsIGgtPmFlY19mbGFnKTsKPiArICAgIH0KPiArCj4gKyAgICBza2lwX3N0dWZmaW5nX2JpdHMo aCk7Cj4gKyAgICBza2lwX2V4dGVuc2lvbl9hbmRfdXNlcl9kYXRhKGgpOwo+ICsKPiAgICAgIHJl dCA9IDA7Cj4gLSAgICBpZiAoaC0+Y3VyLmYtPnBpY3RfdHlwZSA9PSBBVl9QSUNUVVJFX1RZUEVf SSkgewo+ICsgICAgaWYgKGgtPmF2Y3R4LT5od2FjY2VsKSB7Cj4gKyAgICAgICAgcmV0ID0gaHdh Y2NlbF9waWMoaCk7Cj4gKyAgICB9IGVsc2UgaWYgKGgtPmN1ci5mLT5waWN0X3R5cGUgPT0gQVZf UElDVFVSRV9UWVBFX0kpIHsKPiAgICAgICAgICBkbyB7Cj4gICAgICAgICAgICAgIGNoZWNrX2Zv cl9zbGljZShoKTsKPiAgICAgICAgICAgICAgcmV0ID0gZGVjb2RlX21iX2koaCwgMCk7Cj4gQEAg LTExNjAsMTEgKzE0NTgsNiBAQCBzdGF0aWMgaW50IGRlY29kZV9waWMoQVZTQ29udGV4dCAqaCkK PiAgICAgICAgICB9IHdoaWxlIChmZl9jYXZzX25leHRfbWIoaCkpOwo+ICAgICAgfQo+ICAgICAg ZW1tc19jKCk7Cj4gLSAgICBpZiAocmV0ID49IDAgJiYgaC0+Y3VyLmYtPnBpY3RfdHlwZSAhPSBB Vl9QSUNUVVJFX1RZUEVfQikgewo+IC0gICAgICAgIGF2X2ZyYW1lX3VucmVmKGgtPkRQQlsxXS5m KTsKPiAtICAgICAgICBGRlNXQVAoQVZTRnJhbWUsIGgtPmN1ciwgaC0+RFBCWzFdKTsKPiAtICAg ICAgICBGRlNXQVAoQVZTRnJhbWUsIGgtPkRQQlswXSwgaC0+RFBCWzFdKTsKPiAtICAgIH0KPiAg ICAgIHJldHVybiByZXQ7Cj4gIH0KPiAKPiBAQCAtMTE4MSwxMyArMTQ3NCw4IEBAIHN0YXRpYyBp bnQgZGVjb2RlX3NlcV9oZWFkZXIoQVZTQ29udGV4dCAqaCkKPiAgICAgIGludCByZXQ7Cj4gCj4g ICAgICBoLT5wcm9maWxlID0gZ2V0X2JpdHMoJmgtPmdiLCA4KTsKPiAtICAgIGlmIChoLT5wcm9m aWxlICE9IDB4MjApIHsKPiAtICAgICAgICBhdnByaXZfcmVwb3J0X21pc3NpbmdfZmVhdHVyZSho LT5hdmN0eCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBz dXBwcnQgSmlaaHVuIHByb2ZpbGUiKTsKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdF TENPTUU7Cj4gLSAgICB9Cj4gICAgICBoLT5sZXZlbCAgID0gZ2V0X2JpdHMoJmgtPmdiLCA4KTsK PiAtICAgIHNraXBfYml0czEoJmgtPmdiKTsgLy9wcm9ncmVzc2l2ZSBzZXF1ZW5jZQo+ICsgICAg aC0+cHJvZ3Jlc3NpdmVfc2VxID0gZ2V0X2JpdHMxKCZoLT5nYik7Cj4gCj4gICAgICB3aWR0aCAg PSBnZXRfYml0cygmaC0+Z2IsIDE0KTsKPiAgICAgIGhlaWdodCA9IGdldF9iaXRzKCZoLT5nYiwg MTQpOwo+IEBAIC0xMjE0LDYgKzE1MDIsOSBAQCBzdGF0aWMgaW50IGRlY29kZV9zZXFfaGVhZGVy KEFWU0NvbnRleHQgKmgpCj4gICAgICBza2lwX2JpdHMxKCZoLT5nYik7ICAgIC8vbWFya2VyX2Jp dAo+ICAgICAgc2tpcF9iaXRzKCZoLT5nYiwgMTIpOyAvL2JpdF9yYXRlX3VwcGVyCj4gICAgICBo LT5sb3dfZGVsYXkgPSAgZ2V0X2JpdHMxKCZoLT5nYik7Cj4gKyAgICBhdl9sb2coaC0+YXZjdHgs IEFWX0xPR19ERUJVRywKPiArICAgICAgICAgICAgInNlcTogcHJvZmlsZT0weCUwMngsIGxldmVs PTB4JTAyeCwgc2l6ZT0lZHglZCwgbG93X2RlbGF5PSVkXG4iLAo+ICsgICAgICAgICAgICBoLT5w cm9maWxlLCBoLT5sZXZlbCwgd2lkdGgsIGhlaWdodCwgaC0+bG93X2RlbGF5KTsKPiAKPiAgICAg IHJldCA9IGZmX3NldF9kaW1lbnNpb25zKGgtPmF2Y3R4LCB3aWR0aCwgaGVpZ2h0KTsKPiAgICAg IGlmIChyZXQgPCAwKQo+IEBAIC0xMjM5LDQzICsxNTMwLDYxIEBAIHN0YXRpYyBpbnQgY2F2c19k ZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpyZnJhbWUsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnb3RfZnJhbWUsIEFWUGFja2V0ICphdnBr dCkKPiAgewo+ICAgICAgQVZTQ29udGV4dCAqaCAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKPiAt ICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZiA9IGF2cGt0LT5kYXRhOwo+IC0gICAgaW50IGJ1Zl9zaXpl ICAgICAgID0gYXZwa3QtPnNpemU7Cj4gICAgICB1aW50MzJfdCBzdGMgICAgICAgPSAtMTsKPiAg ICAgIGludCBpbnB1dF9zaXplLCByZXQ7Cj4gICAgICBjb25zdCB1aW50OF90ICpidWZfZW5kOwo+ ICAgICAgY29uc3QgdWludDhfdCAqYnVmX3B0cjsKPiAgICAgIGludCBmcmFtZV9zdGFydCA9IDA7 Cj4gCj4gLSAgICBpZiAoYnVmX3NpemUgPT0gMCkgewo+IC0gICAgICAgIGlmICghaC0+bG93X2Rl bGF5ICYmIGgtPkRQQlswXS5mLT5kYXRhWzBdKSB7Cj4gLSAgICAgICAgICAgICpnb3RfZnJhbWUg PSAxOwo+IC0gICAgICAgICAgICBhdl9mcmFtZV9tb3ZlX3JlZihyZnJhbWUsIGgtPkRQQlswXS5m KTsKPiArICAgIGlmIChhdnBrdC0+c2l6ZSA9PSAwKSB7Cj4gKyAgICAgICAgaWYgKGgtPkRQQlsw XS5mLT5idWZbMF0gJiYgIWgtPkRQQlswXS5vdXRwdXRlZCkgewo+ICsgICAgICAgICAgICBxdWV1 ZV9vbmVfZnJhbWUoaCwgJmgtPkRQQlswXSk7Cj4gKyAgICAgICAgICAgIGNhdnNfZnJhbWVfdW5y ZWYoJmgtPkRQQlswXSk7Cj4gICAgICAgICAgfQo+ICsgICAgICAgIG91dHB1dF9vbmVfZnJhbWUo aCwgcmZyYW1lLCBnb3RfZnJhbWUpOwo+ICAgICAgICAgIHJldHVybiAwOwo+ICAgICAgfQo+IAo+ ICAgICAgaC0+c3RjID0gMDsKPiAKPiAtICAgIGJ1Zl9wdHIgPSBidWY7Cj4gLSAgICBidWZfZW5k ID0gYnVmICsgYnVmX3NpemU7Cj4gLSAgICBmb3IoOzspIHsKPiArICAgIGJ1Zl9wdHIgPSBhdnBr dC0+ZGF0YTsKPiArICAgIGJ1Zl9lbmQgPSBhdnBrdC0+ZGF0YSArIGF2cGt0LT5zaXplOwo+ICsg ICAgZm9yKDsgYnVmX3B0ciA8IGJ1Zl9lbmQ7KSB7Cj4gICAgICAgICAgYnVmX3B0ciA9IGF2cHJp dl9maW5kX3N0YXJ0X2NvZGUoYnVmX3B0ciwgYnVmX2VuZCwgJnN0Yyk7Cj4gICAgICAgICAgaWYg KChzdGMgJiAweEZGRkZGRTAwKSB8fCBidWZfcHRyID09IGJ1Zl9lbmQpIHsKPiAgICAgICAgICAg ICAgaWYgKCFoLT5zdGMpCj4gICAgICAgICAgICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFWX0xP R19XQVJOSU5HLCAibm8gZnJhbWUgZGVjb2RlZFxuIik7Cj4gLSAgICAgICAgICAgIHJldHVybiBG Rk1BWCgwLCBidWZfcHRyIC0gYnVmKTsKPiArICAgICAgICAgICAgcmV0dXJuIEZGTUFYKDAsIGJ1 Zl9wdHIgLSBhdnBrdC0+ZGF0YSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGlucHV0X3NpemUg PSAoYnVmX2VuZCAtIGJ1Zl9wdHIpICogODsKPiArICAgICAgICBhdl9sb2coaC0+YXZjdHgsIEFW X0xPR19UUkFDRSwgIkZvdW5kIHN0YXJ0IGNvZGUgMHglMDR4LCBzej0lZFxuIiwKPiArICAgICAg ICAgICAgICAgIHN0YywgaW5wdXRfc2l6ZSAvIDgpOwo+ICAgICAgICAgIHN3aXRjaCAoc3RjKSB7 Cj4gICAgICAgICAgY2FzZSBDQVZTX1NUQVJUX0NPREU6Cj4gICAgICAgICAgICAgIGluaXRfZ2V0 X2JpdHMoJmgtPmdiLCBidWZfcHRyLCBpbnB1dF9zaXplKTsKPiAtICAgICAgICAgICAgZGVjb2Rl X3NlcV9oZWFkZXIoaCk7Cj4gKyAgICAgICAgICAgIGlmICgocmV0ID0gZGVjb2RlX3NlcV9oZWFk ZXIoaCkpIDwgMCkKPiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAg IGF2Y3R4LT5wcm9maWxlID0gaC0+cHJvZmlsZTsKPiArICAgICAgICAgICAgYXZjdHgtPmxldmVs ID0gaC0+bGV2ZWw7Cj4gKyAgICAgICAgICAgIGlmICghaC0+Z290X3BpeF9mbXQpIHsKPiArICAg ICAgICAgICAgICAgIGgtPmdvdF9waXhfZm10ID0gMTsKPiArICAgICAgICAgICAgICAgIHJldCA9 IGZmX2dldF9mb3JtYXQoYXZjdHgsIGF2Y3R4LT5jb2RlYy0+cGl4X2ZtdHMpOwo+ICsgICAgICAg ICAgICAgICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK PiArCj4gKyAgICAgICAgICAgICAgICBhdmN0eC0+cGl4X2ZtdCA9IHJldDsKPiArCj4gKyAgICAg ICAgICAgICAgICBpZiAoaC0+cHJvZmlsZSA9PSBBVl9QUk9GSUxFX0NBVlNfR1VBTkdESUFOICYm ICFhdmN0eC0+aHdhY2NlbCkgewo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCAiWW91ciBwbGF0Zm9ybSBkb2Vzbid0IHN1cHBwb3J0IGhhcmR3YXJlIgo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGFjY2VsZXJhdGVkIGZvciBD QVZTIEd1YW5nZGlhbiBQcm9maWxlIGRlY29kaW5nLlxuIik7Cj4gKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1IoRU5PVFNVUCk7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAg ICAgICAgIH0KPiAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSBQSUNfSV9TVEFS VF9DT0RFOgo+ICAgICAgICAgICAgICBpZiAoIWgtPmdvdF9rZXlmcmFtZSkgewo+IC0gICAgICAg ICAgICAgICAgYXZfZnJhbWVfdW5yZWYoaC0+RFBCWzBdLmYpOwo+IC0gICAgICAgICAgICAgICAg YXZfZnJhbWVfdW5yZWYoaC0+RFBCWzFdLmYpOwo+ICsgICAgICAgICAgICAgICAgY2F2c19mcmFt ZV91bnJlZigmaC0+RFBCWzBdKTsKPiArICAgICAgICAgICAgICAgIGNhdnNfZnJhbWVfdW5yZWYo JmgtPkRQQlsxXSk7Cj4gICAgICAgICAgICAgICAgICBoLT5nb3Rfa2V5ZnJhbWUgPSAxOwo+ICAg ICAgICAgICAgICB9Cj4gICAgICAgICAgY2FzZSBQSUNfUEJfU1RBUlRfQ09ERToKPiBAQCAtMTI4 NSwyMyArMTU5NCwzOSBAQCBzdGF0aWMgaW50IGNhdnNfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwgQVZGcmFtZSAqcmZyYW1lLAo+ICAgICAgICAgICAgICBpZiAoKmdvdF9mcmFt ZSkKPiAgICAgICAgICAgICAgICAgIGF2X2ZyYW1lX3VucmVmKHJmcmFtZSk7Cj4gICAgICAgICAg ICAgICpnb3RfZnJhbWUgPSAwOwo+IC0gICAgICAgICAgICBpZiAoIWgtPmdvdF9rZXlmcmFtZSkK PiArICAgICAgICAgICAgaWYgKCFoLT5nb3Rfa2V5ZnJhbWUpIHsKPiArICAgICAgICAgICAgICAg IGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiTm8ga2V5ZnJhbWUgZGVjb2RlZCBiZWZvcmUg UC9CIGZyYW1lLlxuIik7Cj4gICAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICAgICAg fQo+ICAgICAgICAgICAgICBpbml0X2dldF9iaXRzKCZoLT5nYiwgYnVmX3B0ciwgaW5wdXRfc2l6 ZSk7Cj4gICAgICAgICAgICAgIGgtPnN0YyA9IHN0YzsKPiAtICAgICAgICAgICAgaWYgKGRlY29k ZV9waWMoaCkpCj4gLSAgICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgKmdvdF9m cmFtZSA9IDE7Cj4gKyAgICAgICAgICAgIGlmICgocmV0ID0gZGVjb2RlX3BpYyhoKSkgPCAwKQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICAgICAgYnVmX3B0ciA9IGFs aWduX2dldF9iaXRzKCZoLT5nYik7Cj4gKwo+ICsgICAgICAgICAgICBoLT5jdXIub3V0cHV0ZWQg PSAwOwo+ICAgICAgICAgICAgICBpZiAoaC0+Y3VyLmYtPnBpY3RfdHlwZSAhPSBBVl9QSUNUVVJF X1RZUEVfQikgewo+IC0gICAgICAgICAgICAgICAgaWYgKGgtPkRQQlshaC0+bG93X2RlbGF5XS5m LT5kYXRhWzBdKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKChyZXQgPSBhdl9mcmFtZV9y ZWYocmZyYW1lLCBoLT5EUEJbIWgtPmxvd19kZWxheV0uZikpIDwgMCkKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAtICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAg ICAgICAgICAgICAgICAgICAgKmdvdF9mcmFtZSA9IDA7Cj4gKyAgICAgICAgICAgICAgICAvLyBh dCBtb3N0IG9uZSBkZWxheQo+ICsgICAgICAgICAgICAgICAgaWYgKGgtPkRQQlswXS5mLT5idWZb MF0gJiYgIWgtPkRQQlswXS5vdXRwdXRlZCkgewo+ICsgICAgICAgICAgICAgICAgICAgIHF1ZXVl X29uZV9mcmFtZShoLCAmaC0+RFBCWzBdKTsKPiArICAgICAgICAgICAgICAgICAgICBoLT5EUEJb MF0ub3V0cHV0ZWQgPSAxOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAg ICAgIGlmIChoLT5sb3dfZGVsYXkpIHsKPiArICAgICAgICAgICAgICAgICAgICBxdWV1ZV9vbmVf ZnJhbWUoaCwgJmgtPmN1cik7Cj4gKyAgICAgICAgICAgICAgICAgICAgaC0+Y3VyLm91dHB1dGVk ID0gMTsKPiAgICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgICAgICAvLyBudWxs IC0+IGN1cnIgLT4gRFBCWzBdIC0+IERQQlsxXQo+ICsgICAgICAgICAgICAgICAgY2F2c19mcmFt ZV91bnJlZigmaC0+RFBCWzFdKTsKPiArICAgICAgICAgICAgICAgIEZGU1dBUChBVlNGcmFtZSwg aC0+Y3VyLCBoLT5EUEJbMV0pOwo+ICsgICAgICAgICAgICAgICAgRkZTV0FQKEFWU0ZyYW1lLCBo LT5EUEJbMF0sIGgtPkRQQlsxXSk7Cj4gICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAg ICAgICAgICBhdl9mcmFtZV9tb3ZlX3JlZihyZnJhbWUsIGgtPmN1ci5mKTsKPiArICAgICAgICAg ICAgICAgIHF1ZXVlX29uZV9mcmFtZShoLCAmaC0+Y3VyKTsKPiArICAgICAgICAgICAgICAgIGNh dnNfZnJhbWVfdW5yZWYoJmgtPmN1cik7Cj4gICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAg ICAgIG91dHB1dF9vbmVfZnJhbWUoaCwgcmZyYW1lLCBnb3RfZnJhbWUpOwo+ICAgICAgICAgICAg ICBicmVhazsKPiAgICAgICAgICBjYXNlIEVYVF9TVEFSVF9DT0RFOgo+ICAgICAgICAgICAgICAv L21wZWdfZGVjb2RlX2V4dGVuc2lvbihhdmN0eCwgYnVmX3B0ciwgaW5wdXRfc2l6ZSk7Cj4gQEAg LTEzMDksMTYgKzE2MzQsMzQgQEAgc3RhdGljIGludCBjYXZzX2RlY29kZV9mcmFtZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKnJmcmFtZSwKPiAgICAgICAgICBjYXNlIFVTRVJfU1RB UlRfQ09ERToKPiAgICAgICAgICAgICAgLy9tcGVnX2RlY29kZV91c2VyX2RhdGEoYXZjdHgsIGJ1 Zl9wdHIsIGlucHV0X3NpemUpOwo+ICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNl IFZJREVPX0VESVRfQ09ERToKPiArICAgICAgICAgICAgYXZfbG9nKGgtPmF2Y3R4LCBBVl9MT0df V0FSTklORywgIlNraXAgdmlkZW9fZWRpdF9jb2RlXG4iKTsKPiArICAgICAgICAgICAgYnJlYWs7 Cj4gKyAgICAgICAgY2FzZSBWSURFT19TRVFfRU5EX0NPREU6Cj4gKyAgICAgICAgICAgIGF2X2xv ZyhoLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJTa2lwIHZpZGVvX3NlcXVlbmNlX2VuZF9jb2Rl XG4iKTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgZGVmYXVsdDoKPiAgICAgICAg ICAgICAgaWYgKHN0YyA8PSBTTElDRV9NQVhfU1RBUlRfQ09ERSkgewo+ICsgICAgICAgICAgICAg ICAgaC0+c3RjID0gc3RjICYgMHhmZjsKPiAgICAgICAgICAgICAgICAgIGluaXRfZ2V0X2JpdHMo JmgtPmdiLCBidWZfcHRyLCBpbnB1dF9zaXplKTsKPiAgICAgICAgICAgICAgICAgIGRlY29kZV9z bGljZV9oZWFkZXIoaCwgJmgtPmdiKTsKPiArICAgICAgICAgICAgfSBlbHNlIHsKPiArICAgICAg ICAgICAgICAgIGF2X2xvZyhoLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJTa2lwIHVuc3VwcG9y dGVkIHN0YXJ0IGNvZGUgMHglMDRYXG4iLCBzdGMpOwo+ICAgICAgICAgICAgICB9Cj4gICAgICAg ICAgICAgIGJyZWFrOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiArICAgIHJldHVybiAoYnVmX3B0 ciAtIGF2cGt0LT5kYXRhKTsKPiAgfQo+IAo+ICtzdGF0aWMgY29uc3QgZW51bSBBVlBpeGVsRm9y bWF0IGNhdnNfaHdhY2NlbF9waXhmbXRfbGlzdF80MjBbXSA9IHsKPiArI2lmIENPTkZJR19DQVZT X1ZBQVBJX0hXQUNDRUwKPiArICAgIEFWX1BJWF9GTVRfVkFBUEksCj4gKyNlbmRpZgo+ICsgICAg QVZfUElYX0ZNVF9ZVVY0MjBQLAo+ICsgICAgQVZfUElYX0ZNVF9OT05FCj4gK307Cj4gKwo+ICBj b25zdCBGRkNvZGVjIGZmX2NhdnNfZGVjb2RlciA9IHsKPiAgICAgIC5wLm5hbWUgICAgICAgICA9 ICJjYXZzIiwKPiAgICAgIENPREVDX0xPTkdfTkFNRSgiQ2hpbmVzZSBBVlMgKEF1ZGlvIFZpZGVv IFN0YW5kYXJkKSAoQVZTMS1QMiwgSmlaaHVuIHByb2ZpbGUpIiksCj4gQEAgLTEzMzEsNCArMTY3 NCwxMiBAQCBjb25zdCBGRkNvZGVjIGZmX2NhdnNfZGVjb2RlciA9IHsKPiAgICAgIC5wLmNhcGFi aWxpdGllcyA9IEFWX0NPREVDX0NBUF9EUjEgfCBBVl9DT0RFQ19DQVBfREVMQVksCj4gICAgICAu Zmx1c2ggICAgICAgICAgPSBjYXZzX2ZsdXNoLAo+ICAgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZf Q09ERUNfQ0FQX0lOSVRfQ0xFQU5VUCwKPiArICAgIC5wLnBpeF9mbXRzICAgICA9IGNhdnNfaHdh Y2NlbF9waXhmbXRfbGlzdF80MjAsCj4gKyAgICAuaHdfY29uZmlncyAgICAgPSAoY29uc3QgQVZD b2RlY0hXQ29uZmlnSW50ZXJuYWwgKmNvbnN0IFtdKSB7Cj4gKyNpZiBDT05GSUdfQ0FWU19WQUFQ SV9IV0FDQ0VMCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfVkFBUEkoY2F2cyks Cj4gKyNlbmRpZgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBOVUxMCj4gKyAgICAgICAgICAg ICAgICAgICAgfSwKPiArICAgIC5wLnByb2ZpbGVzICAgICA9IE5VTExfSUZfQ09ORklHX1NNQUxM KGZmX2NhdnNfcHJvZmlsZXMpLAo+ICB9Owo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2RlZnMu aCBiL2xpYmF2Y29kZWMvZGVmcy5oCj4gaW5kZXggMDBkODQwZWMxOS4uZDU5ODE2YTcwZiAxMDA2 NDQKPiAtLS0gYS9saWJhdmNvZGVjL2RlZnMuaAo+ICsrKyBiL2xpYmF2Y29kZWMvZGVmcy5oCj4g QEAgLTE5Miw2ICsxOTIsOSBAQAo+ICAjZGVmaW5lIEFWX1BST0ZJTEVfRVZDX0JBU0VMSU5FICAg ICAgICAgICAgIDAKPiAgI2RlZmluZSBBVl9QUk9GSUxFX0VWQ19NQUlOICAgICAgICAgICAgICAg ICAxCj4gCj4gKyNkZWZpbmUgQVZfUFJPRklMRV9DQVZTX0pJWkhVTiAgICAgICAgICAgICAgICAg ICAgICAweDIwCj4gKyNkZWZpbmUgQVZfUFJPRklMRV9DQVZTX0dVQU5HRElBTiAgICAgICAgICAg ICAgICAgICAweDQ4Cj4gKwo+IAo+ICAjZGVmaW5lIEFWX0xFVkVMX1VOS05PV04gICAgICAgICAg ICAgICAgICAtOTkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9od2FjY2Vscy5oIGIvbGli YXZjb2RlYy9od2FjY2Vscy5oCj4gaW5kZXggNTE3MWU0YzdkNy4uYTFhOTczYjQ2MCAxMDA2NDQK PiAtLS0gYS9saWJhdmNvZGVjL2h3YWNjZWxzLmgKPiArKysgYi9saWJhdmNvZGVjL2h3YWNjZWxz LmgKPiBAQCAtODksNSArODksNiBAQCBleHRlcm4gY29uc3Qgc3RydWN0IEZGSFdBY2NlbCBmZl93 bXYzX2R4dmEyX2h3YWNjZWw7Cj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgRkZIV0FjY2VsIGZmX3dt djNfbnZkZWNfaHdhY2NlbDsKPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBGRkhXQWNjZWwgZmZfd212 M192YWFwaV9od2FjY2VsOwo+ICBleHRlcm4gY29uc3Qgc3RydWN0IEZGSFdBY2NlbCBmZl93bXYz X3ZkcGF1X2h3YWNjZWw7Cj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgRkZIV0FjY2VsIGZmX2NhdnNf dmFhcGlfaHdhY2NlbDsKPiAKPiAgI2VuZGlmIC8qIEFWQ09ERUNfSFdBQ0NFTFNfSCAqLwo+IGRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3Byb2ZpbGVzLmMgYi9saWJhdmNvZGVjL3Byb2ZpbGVzLmMK PiBpbmRleCA1YmI4ZjE1MGU2Li5iMzEyZjEyMjgxIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMv cHJvZmlsZXMuYwo+ICsrKyBiL2xpYmF2Y29kZWMvcHJvZmlsZXMuYwo+IEBAIC0yMDAsNCArMjAw LDEwIEBAIGNvbnN0IEFWUHJvZmlsZSBmZl9ldmNfcHJvZmlsZXNbXSA9IHsKPiAgICAgIHsgQVZf UFJPRklMRV9VTktOT1dOIH0sCj4gIH07Cj4gCj4gK2NvbnN0IEFWUHJvZmlsZSBmZl9jYXZzX3By b2ZpbGVzW10gPSB7Cj4gKyAgICB7IEFWX1BST0ZJTEVfQ0FWU19KSVpIVU4sICAgICAgICJKaXpo dW4iICAgICAgICAgICAgfSwKPiArICAgIHsgQVZfUFJPRklMRV9DQVZTX0dVQU5HRElBTiwgICAg Ikd1YW5nZGlhbiIgICAgICAgICB9LAo+ICsgICAgeyBBVl9QUk9GSUxFX1VOS05PV04gfSwKPiAr fTsKPiArCj4gICNlbmRpZiAvKiAhQ09ORklHX1NNQUxMICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvcHJvZmlsZXMuaCBiL2xpYmF2Y29kZWMvcHJvZmlsZXMuaAo+IGluZGV4IDI3MDQzMGE0 OGIuLjlhMmIzNDhhZDQgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9wcm9maWxlcy5oCj4gKysr IGIvbGliYXZjb2RlYy9wcm9maWxlcy5oCj4gQEAgLTc1LDUgKzc1LDYgQEAgZXh0ZXJuIGNvbnN0 IEFWUHJvZmlsZSBmZl9wcm9yZXNfcHJvZmlsZXNbXTsKPiAgZXh0ZXJuIGNvbnN0IEFWUHJvZmls ZSBmZl9tanBlZ19wcm9maWxlc1tdOwo+ICBleHRlcm4gY29uc3QgQVZQcm9maWxlIGZmX2FyaWJf Y2FwdGlvbl9wcm9maWxlc1tdOwo+ICBleHRlcm4gY29uc3QgQVZQcm9maWxlIGZmX2V2Y19wcm9m aWxlc1tdOwo+ICtleHRlcm4gY29uc3QgQVZQcm9maWxlIGZmX2NhdnNfcHJvZmlsZXNbXTsKPiAK PiAgI2VuZGlmIC8qIEFWQ09ERUNfUFJPRklMRVNfSCAqLwo+IGRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL3ZhYXBpX2NhdnMuYyBiL2xpYmF2Y29kZWMvdmFhcGlfY2F2cy5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi40YTdhOWI5NWFkCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfY2F2cy5jCj4gQEAgLTAsMCArMSwxNjQgQEAKPiArLyoK PiArICogQVZTIChDaGluZXNlIEdZL1QgMjU3LjFiCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==