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 39AF74354E for ; Thu, 16 Jun 2022 20:08:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 90A7B68B8E4; Thu, 16 Jun 2022 23:04:08 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8BAD268B887 for ; Thu, 16 Jun 2022 23:03:44 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id E6AB12400F5 for ; Thu, 16 Jun 2022 22:03:43 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id U0dkHm6JpeBc for ; Thu, 16 Jun 2022 22:03:41 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 2892B240590 for ; Thu, 16 Jun 2022 22:03:34 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id DAD283A20F1; Thu, 16 Jun 2022 22:03:30 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 16 Jun 2022 21:55:21 +0200 Message-Id: <20220616195534.5278-22-anton@khirnov.net> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616195534.5278-1-anton@khirnov.net> References: <20220616195534.5278-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 22/35] fftools/ffmpeg: rework -shortest implementation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhlIC1zaG9ydGVzdCBvcHRpb24gKHdoaWNoIGZpbmlzaGVzIHRoZSBvdXRwdXQgZmlsZSBhdCB0 aGUgdGltZSB0aGUKc2hvcnRlc3Qgc3RyZWFtIGVuZHMpIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRl ZCBieSBmYWtpbmcgdGhlIC10IG9wdGlvbgp3aGVuIGFuIG91dHB1dCBzdHJlYW0gZW5kcy4gVGhp cyBhcHByb2FjaCBpcyBmcmFnaWxlLCBzaW5jZSBpdCBkZXBlbmRzCm9uIHRoZSBmcmFtZXMvcGFj a2V0cyBiZWluZyBwcm9jZXNzZWQgaW4gYSBzcGVjaWZpYyBvcmRlci4gRS5nLiB0aGVyZQphcmUg Y3VycmVudGx5IHNvbWUgc2l0dWF0aW9ucyBpbiB3aGljaCB0aGUgb3V0cHV0IGZpbGUgbGVuZ3Ro IHdpbGwKZGVwZW5kIHVucHJlZGljdGFibHkgb24gdW5yZWxhdGVkIGZhY3RvcnMgbGlrZSBlbmNv ZGVyIGRlbGF5LiBNb3JlCmltcG9ydGFudGx5LCB0aGUgcHJlc2VudCB3b3JrIGFpbWluZyBhdCBz cGxpdHRpbmcgdmFyaW91cyBmZm1wZWcKY29tcG9uZW50cyBpbnRvIGRpZmZlcmVudCB0aHJlYWRz IHdpbGwgbWFrZSB0aGlzIGFwcHJvYWNoIGNvbXBsZXRlbHkKdW53b3JrYWJsZSwgc2luY2UgdGhl IGZyYW1lcy9wYWNrZXRzIHdpbGwgYXJyaXZlIGluIGVmZmVjdGl2ZWx5IHJhbmRvbQpvcmRlci4K ClRoaXMgY29tbWl0IGludHJvZHVjZXMgYSAic3luYyBxdWV1ZSIsIHdoaWNoIGlzIGVzc2VudGlh bGx5IGEgY29sbGVjdGlvbgpvZiBGSUZPcywgb25lIHBlciBzdHJlYW0uIEZyYW1lcy9wYWNrZXRz IGFyZSBzdWJtaXR0ZWQgdG8gdGhlc2UgRklGT3MKYW5kIGFyZSB0aGVuIHJlbGVhc2VkIGZvciBm dXJ0aGVyIHByb2Nlc3NpbmcgKGVuY29kaW5nIG9yIG11eGluZykgd2hlbgppdCBpcyBlbnN1cmVk IHRoYXQgdGhlIGZyYW1lIGluIHF1ZXN0aW9uIHdpbGwgbm90IGNhdXNlIGl0cyBzdHJlYW0gdG8K Z2V0IGFoZWFkIG9mIHRoZSBvdGhlciBzdHJlYW1zICh0aGUgbG9naWMgaXMgc2ltaWxhciB0byBs aWJhdmZvcm1hdCdzCmludGVybGVhdmluZyBxdWV1ZSkuCgpUaGVzZSBzeW5jIHF1ZXVlcyBhcmUg dGhlbiB1c2VkIGZvciBlbmNvZGluZyBhbmQvb3IgbXV4aW5nIHdoZW4gdGhlCi1zaG9ydGVzdCBv cHRpb24gaXMgc3BlY2lmaWVkLgoKQSBuZXcgb3B0aW9uIOKAkyAtc2hvcnRlc3RfYnVmX2R1cmF0 aW9uIOKAkyBjb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YKcXVldWVkIHBhY2tldHMsIHRv IGF2b2lkIHJ1bmF3YXkgbWVtb3J5IHVzYWdlLgoKVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgcmVz dWx0cyBvZiB0aGUgZm9sbG93aW5nIHRlc3RzOgotIGNvcHktc2hvcnRlc3RbMTJdOiB0aGUgbGFz dCBhdWRpbyBmcmFtZSBpcyBub3cgZ29uZS4gVGhpcyBpcwogIGNvcnJlY3QsIHNpbmNlIGl0IGFj dHVhbGx5IG91dGxhc3RzIHRoZSBsYXN0IHZpZGVvIGZyYW1lLgotIHNob3J0ZXN0LXN1YjogdGhl IHZpZGVvIHBhY2tldHMgZm9sbG93aW5nIHRoZSBsYXN0IHN1YnRpdGxlIHBhY2tldCBhcmUKICBu b3cgZ29uZS4gVGhpcyBpcyBhbHNvIGNvcnJlY3QuCi0tLQogZG9jL2ZmbXBlZy50ZXhpICAgICAg ICAgICAgICAgfCAgMTYgKysKIGZmdG9vbHMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAyICsK IGZmdG9vbHMvZmZtcGVnLmMgICAgICAgICAgICAgIHwgMTA0ICsrKysrKy0tLQogZmZ0b29scy9m Zm1wZWcuaCAgICAgICAgICAgICAgfCAgIDkgKwogZmZ0b29scy9mZm1wZWdfbXV4LmMgICAgICAg ICAgfCAgNjcgKysrKystCiBmZnRvb2xzL2ZmbXBlZ19vcHQuYyAgICAgICAgICB8ICA4MiArKysr KysrCiBmZnRvb2xzL3N5bmNfcXVldWUuYyAgICAgICAgICB8IDQyNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBmZnRvb2xzL3N5bmNfcXVldWUuaCAgICAgICAgICB8IDEwMCAr KysrKysrKwogdGVzdHMvZmF0ZS9mZm1wZWcubWFrICAgICAgICAgfCAgIDIgKy0KIHRlc3RzL3Jl Zi9mYXRlL2NvcHktc2hvcnRlc3QxIHwgICAxIC0KIHRlc3RzL3JlZi9mYXRlL2NvcHktc2hvcnRl c3QyIHwgICAxIC0KIHRlc3RzL3JlZi9mYXRlL3Nob3J0ZXN0LXN1YiAgIHwgICA0ICstCiAxMiBm aWxlcyBjaGFuZ2VkLCA3NzUgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZmZ0b29scy9zeW5jX3F1ZXVlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBmZnRv b2xzL3N5bmNfcXVldWUuaAoKZGlmZiAtLWdpdCBhL2RvYy9mZm1wZWcudGV4aSBiL2RvYy9mZm1w ZWcudGV4aQppbmRleCBkOTQzZjRkNmY1Li43NTQyODMyZWIzIDEwMDY0NAotLS0gYS9kb2MvZmZt cGVnLnRleGkKKysrIGIvZG9jL2ZmbXBlZy50ZXhpCkBAIC0xNzUwLDYgKzE3NTAsMjIgQEAgRGVm YXVsdCB2YWx1ZSBpcyAwLgogRW5hYmxlIGJpdGV4YWN0IG1vZGUgZm9yIChkZSltdXhlciBhbmQg KGRlL2VuKWNvZGVyCiBAaXRlbSAtc2hvcnRlc3QgKEBlbXBoe291dHB1dH0pCiBGaW5pc2ggZW5j b2Rpbmcgd2hlbiB0aGUgc2hvcnRlc3QgaW5wdXQgc3RyZWFtIGVuZHMuCisKK05vdGUgdGhhdCB0 aGlzIG9wdGlvbiBtYXkgcmVxdWlyZSBidWZmZXJpbmcgZnJhbWVzLCB3aGljaCBpbnRyb2R1Y2Vz IGV4dHJhCitsYXRlbmN5LiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGhpcyBsYXRlbmN5IG1heSBi ZSBjb250cm9sbGVkIHdpdGggdGhlCitAY29kZXstc2hvcnRlc3RfYnVmX2R1cmF0aW9ufSBvcHRp b24uCisKK0BpdGVtIC1zaG9ydGVzdF9idWZfZHVyYXRpb24gQHZhcntkdXJhdGlvbn0gKEBlbXBo e291dHB1dH0pCitUaGUgQGNvZGV7LXNob3J0ZXN0fSBvcHRpb24gbWF5IHJlcXVpcmUgYnVmZmVy aW5nIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudHMKK29mIGRhdGEgd2hlbiBhdCBsZWFzdCBvbmUg b2YgdGhlIHN0cmVhbXMgaXMgInNwYXJzZSIgKGkuZS4gaGFzIGxhcmdlIGdhcHMKK2JldHdlZW4g ZnJhbWVzIOKAkyB0aGlzIGlzIHR5cGljYWxseSB0aGUgY2FzZSBmb3Igc3VidGl0bGVzKS4KKwor VGhpcyBvcHRpb24gY29udHJvbHMgdGhlIG1heGltdW0gZHVyYXRpb24gb2YgYnVmZmVyZWQgZnJh bWVzIGluIHNlY29uZHMuCitMYXJnZXIgdmFsdWVzIG1heSBhbGxvdyB0aGUgQGNvZGV7LXNob3J0 ZXN0fSBvcHRpb24gdG8gcHJvZHVjZSBtb3JlIGFjY3VyYXRlCityZXN1bHRzLCBidXQgaW5jcmVh c2UgbWVtb3J5IHVzZSBhbmQgbGF0ZW5jeS4KKworVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAgc2Vj b25kcy4KKwogQGl0ZW0gLWR0c19kZWx0YV90aHJlc2hvbGQKIFRpbWVzdGFtcCBkaXNjb250aW51 aXR5IGRlbHRhIHRocmVzaG9sZC4KIEBpdGVtIC1kdHNfZXJyb3JfdGhyZXNob2xkIEB2YXJ7c2Vj b25kc30KZGlmZiAtLWdpdCBhL2ZmdG9vbHMvTWFrZWZpbGUgYi9mZnRvb2xzL01ha2VmaWxlCmlu ZGV4IDgxYWQ2YzRmNGYuLmJjNTdlYmU3NDggMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvTWFrZWZpbGUK KysrIGIvZmZ0b29scy9NYWtlZmlsZQpAQCAtMTQsNiArMTQsOCBAQCBPQkpTLWZmbXBlZyArPSAg ICAgICAgICAgICAgICAgIFwKICAgICBmZnRvb2xzL2ZmbXBlZ19ody5vICAgICAgICAgXAogICAg IGZmdG9vbHMvZmZtcGVnX211eC5vICAgICAgICBcCiAgICAgZmZ0b29scy9mZm1wZWdfb3B0Lm8g ICAgICAgIFwKKyAgICBmZnRvb2xzL29ianBvb2wubyAgICAgICAgICAgXAorICAgIGZmdG9vbHMv c3luY19xdWV1ZS5vICAgICAgICBcCiAKIGRlZmluZSBET0ZGVE9PTAogT0JKUy0kKDEpICs9IGZm dG9vbHMvY21kdXRpbHMubyBmZnRvb2xzL29wdF9jb21tb24ubyBmZnRvb2xzLyQoMSkubyAkKE9C SlMtJCgxKS15ZXMpCmRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBlZy5jIGIvZmZ0b29scy9mZm1w ZWcuYwppbmRleCA2Y2Q0NzFkNWNkLi4xYTE0NjM3ZWNlIDEwMDY0NAotLS0gYS9mZnRvb2xzL2Zm bXBlZy5jCisrKyBiL2ZmdG9vbHMvZmZtcGVnLmMKQEAgLTEwNCw2ICsxMDQsNyBAQAogCiAjaW5j bHVkZSAiZmZtcGVnLmgiCiAjaW5jbHVkZSAiY21kdXRpbHMuaCIKKyNpbmNsdWRlICJzeW5jX3F1 ZXVlLmgiCiAKICNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKIApAQCAtNTY5LDYgKzU3 MCw3IEBAIHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVwKGludCByZXQpCiAgICAgICAgIGF2X2Jz Zl9mcmVlKCZvc3QtPmJzZl9jdHgpOwogCiAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJm9zdC0+Zmls dGVyZWRfZnJhbWUpOworICAgICAgICBhdl9mcmFtZV9mcmVlKCZvc3QtPnNxX2ZyYW1lKTsKICAg ICAgICAgYXZfZnJhbWVfZnJlZSgmb3N0LT5sYXN0X2ZyYW1lKTsKICAgICAgICAgYXZfcGFja2V0 X2ZyZWUoJm9zdC0+cGt0KTsKICAgICAgICAgYXZfZGljdF9mcmVlKCZvc3QtPmVuY29kZXJfb3B0 cyk7CkBAIC02OTEsMTMgKzY5MywxMCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfYmVuY2htYXJrKGNv bnN0IGNoYXIgKmZtdCwgLi4uKQogc3RhdGljIHZvaWQgY2xvc2Vfb3V0cHV0X3N0cmVhbShPdXRw dXRTdHJlYW0gKm9zdCkKIHsKICAgICBPdXRwdXRGaWxlICpvZiA9IG91dHB1dF9maWxlc1tvc3Qt PmZpbGVfaW5kZXhdOwotICAgIEFWUmF0aW9uYWwgdGltZV9iYXNlID0gb3N0LT5zdHJlYW1fY29w eSA/IG9zdC0+bXV4X3RpbWViYXNlIDogb3N0LT5lbmNfY3R4LT50aW1lX2Jhc2U7Ci0KICAgICBv c3QtPmZpbmlzaGVkIHw9IEVOQ09ERVJfRklOSVNIRUQ7Ci0gICAgaWYgKG9mLT5zaG9ydGVzdCkg ewotICAgICAgICBpbnQ2NF90IGVuZCA9IGF2X3Jlc2NhbGVfcShvc3QtPnN5bmNfb3B0cyAtIG9z dC0+Zmlyc3RfcHRzLCB0aW1lX2Jhc2UsIEFWX1RJTUVfQkFTRV9RKTsKLSAgICAgICAgb2YtPnJl Y29yZGluZ190aW1lID0gRkZNSU4ob2YtPnJlY29yZGluZ190aW1lLCBlbmQpOwotICAgIH0KKwor ICAgIGlmIChvc3QtPnNxX2lkeF9lbmNvZGUgPj0gMCkKKyAgICAgICAgc3Ffc2VuZChvZi0+c3Ff ZW5jb2RlLCBvc3QtPnNxX2lkeF9lbmNvZGUsIFNRRlJBTUUoTlVMTCkpOwogfQogCiAvKgpAQCAt NzI2LDEwICs3MjUsMTUgQEAgc3RhdGljIHZvaWQgb3V0cHV0X3BhY2tldChPdXRwdXRGaWxlICpv ZiwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgICAgIGdvdG8gZmluaXNoOwogICAgICAgICB3aGls ZSAoKHJldCA9IGF2X2JzZl9yZWNlaXZlX3BhY2tldChvc3QtPmJzZl9jdHgsIHBrdCkpID49IDAp CiAgICAgICAgICAgICBvZl9zdWJtaXRfcGFja2V0KG9mLCBwa3QsIG9zdCk7CisgICAgICAgIGlm IChyZXQgPT0gQVZFUlJPUl9FT0YpCisgICAgICAgICAgICBvZl9zdWJtaXRfcGFja2V0KG9mLCBO VUxMLCBvc3QpOwogICAgICAgICBpZiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkKICAgICAgICAg ICAgIHJldCA9IDA7Ci0gICAgfSBlbHNlIGlmICghZW9mKQotICAgICAgICBvZl9zdWJtaXRfcGFj a2V0KG9mLCBwa3QsIG9zdCk7CisgICAgfSBlbHNlCisgICAgICAgIG9mX3N1Ym1pdF9wYWNrZXQo b2YsIGVvZiA/IE5VTEwgOiBwa3QsIG9zdCk7CisKKyAgICBpZiAoZW9mKQorICAgICAgICBvc3Qt PmZpbmlzaGVkIHw9IE1VWEVSX0ZJTklTSEVEOwogCiBmaW5pc2g6CiAgICAgaWYgKHJldCA8IDAg JiYgcmV0ICE9IEFWRVJST1JfRU9GKSB7CkBAIC05NjMsNiArOTY3LDUyIEBAIHN0YXRpYyBpbnQg ZW5jb2RlX2ZyYW1lKE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAq ZnJhbWUpCiAgICAgYXZfYXNzZXJ0MCgwKTsKIH0KIAorc3RhdGljIGludCBzdWJtaXRfZW5jb2Rl X2ZyYW1lKE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBVkZyYW1lICpmcmFtZSkKK3sKKyAgICBpbnQgcmV0OworCisgICAg aWYgKG9zdC0+c3FfaWR4X2VuY29kZSA8IDApCisgICAgICAgIHJldHVybiBlbmNvZGVfZnJhbWUo b2YsIG9zdCwgZnJhbWUpOworCisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIHJldCA9IGF2X2Zy YW1lX3JlZihvc3QtPnNxX2ZyYW1lLCBmcmFtZSk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAg ICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgZnJhbWUgPSBvc3QtPnNxX2ZyYW1lOworICAg IH0KKworICAgIHJldCA9IHNxX3NlbmQob2YtPnNxX2VuY29kZSwgb3N0LT5zcV9pZHhfZW5jb2Rl LAorICAgICAgICAgICAgICAgICAgU1FGUkFNRShmcmFtZSkpOworICAgIGlmIChyZXQgPCAwKSB7 CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgIGF2X2ZyYW1lX3VucmVmKGZyYW1lKTsK KyAgICAgICAgaWYgKHJldCAhPSBBVkVSUk9SX0VPRikKKyAgICAgICAgICAgIHJldHVybiByZXQ7 CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgQVZGcmFtZSAqZW5jX2ZyYW1lID0g b3N0LT5zcV9mcmFtZTsKKworICAgICAgICByZXQgPSBzcV9yZWNlaXZlKG9mLT5zcV9lbmNvZGUs IG9zdC0+c3FfaWR4X2VuY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUUZS QU1FKGVuY19mcmFtZSkpOworICAgICAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisgICAg ICAgICAgICBlbmNfZnJhbWUgPSBOVUxMOworICAgICAgICB9IGVsc2UgaWYgKHJldCA8IDApIHsK KyAgICAgICAgICAgIHJldHVybiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgPyAwIDogcmV0Owor ICAgICAgICB9CisKKyAgICAgICAgcmV0ID0gZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGVuY19mcmFt ZSk7CisgICAgICAgIGlmIChlbmNfZnJhbWUpCisgICAgICAgICAgICBhdl9mcmFtZV91bnJlZihl bmNfZnJhbWUpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgaWYgKHJldCA9 PSBBVkVSUk9SX0VPRikKKyAgICAgICAgICAgICAgICBjbG9zZV9vdXRwdXRfc3RyZWFtKG9zdCk7 CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMg dm9pZCBkb19hdWRpb19vdXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LAogICAg ICAgICAgICAgICAgICAgICAgICAgIEFWRnJhbWUgKmZyYW1lKQogewpAQCAtOTc4LDggKzEwMjgs OCBAQCBzdGF0aWMgdm9pZCBkb19hdWRpb19vdXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVh bSAqb3N0LAogICAgIG9zdC0+c3luY19vcHRzID0gZnJhbWUtPnB0cyArIGZyYW1lLT5uYl9zYW1w bGVzOwogICAgIG9zdC0+c2FtcGxlc19lbmNvZGVkICs9IGZyYW1lLT5uYl9zYW1wbGVzOwogCi0g ICAgcmV0ID0gZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGZyYW1lKTsKLSAgICBpZiAocmV0IDwgMCkK KyAgICByZXQgPSBzdWJtaXRfZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGZyYW1lKTsKKyAgICBpZiAo cmV0IDwgMCAmJiByZXQgIT0gQVZFUlJPUl9FT0YpCiAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsK IH0KIApAQCAtMTI2NSw4ICsxMzE1LDggQEAgc3RhdGljIHZvaWQgZG9fdmlkZW9fb3V0KE91dHB1 dEZpbGUgKm9mLAogICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19ERUJVRywgIkZvcmNl ZCBrZXlmcmFtZSBhdCB0aW1lICVmXG4iLCBwdHNfdGltZSk7CiAgICAgICAgIH0KIAotICAgICAg ICByZXQgPSBlbmNvZGVfZnJhbWUob2YsIG9zdCwgaW5fcGljdHVyZSk7Ci0gICAgICAgIGlmIChy ZXQgPCAwKQorICAgICAgICByZXQgPSBzdWJtaXRfZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIGluX3Bp Y3R1cmUpOworICAgICAgICBpZiAocmV0IDwgMCAmJiByZXQgIT0gQVZFUlJPUl9FT0YpCiAgICAg ICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAKICAgICAgICAgb3N0LT5zeW5jX29wdHMrKzsKQEAg LTEyNzgsMTkgKzEzMjgsNiBAQCBzdGF0aWMgdm9pZCBkb192aWRlb19vdXQoT3V0cHV0RmlsZSAq b2YsCiAgICAgICAgIGF2X2ZyYW1lX21vdmVfcmVmKG9zdC0+bGFzdF9mcmFtZSwgbmV4dF9waWN0 dXJlKTsKIH0KIAotc3RhdGljIHZvaWQgZmluaXNoX291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFt ICpvc3QpCi17Ci0gICAgT3V0cHV0RmlsZSAqb2YgPSBvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2lu ZGV4XTsKLSAgICBBVlJhdGlvbmFsIHRpbWVfYmFzZSA9IG9zdC0+c3RyZWFtX2NvcHkgPyBvc3Qt Pm11eF90aW1lYmFzZSA6IG9zdC0+ZW5jX2N0eC0+dGltZV9iYXNlOwotCi0gICAgb3N0LT5maW5p c2hlZCA9IEVOQ09ERVJfRklOSVNIRUQgfCBNVVhFUl9GSU5JU0hFRDsKLQotICAgIGlmIChvZi0+ c2hvcnRlc3QpIHsKLSAgICAgICAgaW50NjRfdCBlbmQgPSBhdl9yZXNjYWxlX3Eob3N0LT5zeW5j X29wdHMgLSBvc3QtPmZpcnN0X3B0cywgdGltZV9iYXNlLCBBVl9USU1FX0JBU0VfUSk7Ci0gICAg ICAgIG9mLT5yZWNvcmRpbmdfdGltZSA9IEZGTUlOKG9mLT5yZWNvcmRpbmdfdGltZSwgZW5kKTsK LSAgICB9Ci19Ci0KIC8qKgogICogR2V0IGFuZCBlbmNvZGUgbmV3IG91dHB1dCBmcm9tIGFueSBv ZiB0aGUgZmlsdGVyZ3JhcGhzLCB3aXRob3V0IGNhdXNpbmcKICAqIGFjdGl2aXR5LgpAQCAtMTc1 OCw3ICsxNzk1LDcgQEAgc3RhdGljIHZvaWQgZmx1c2hfZW5jb2RlcnModm9pZCkKICAgICAgICAg ICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAg ICAgICAgICAgIGZpbmlzaF9vdXRwdXRfc3RyZWFtKG9zdCk7CisgICAgICAgICAgICAgICAgb3V0 cHV0X3BhY2tldChvZiwgb3N0LT5wa3QsIG9zdCwgMSk7CiAgICAgICAgICAgICB9CiAKICAgICAg ICAgICAgIGluaXRfb3V0cHV0X3N0cmVhbV93cmFwcGVyKG9zdCwgTlVMTCwgMSk7CkBAIC0xNzY3 LDcgKzE4MDQsNyBAQCBzdGF0aWMgdm9pZCBmbHVzaF9lbmNvZGVycyh2b2lkKQogICAgICAgICBp ZiAoZW5jLT5jb2RlY190eXBlICE9IEFWTUVESUFfVFlQRV9WSURFTyAmJiBlbmMtPmNvZGVjX3R5 cGUgIT0gQVZNRURJQV9UWVBFX0FVRElPKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg ICAgcmV0ID0gZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIE5VTEwpOworICAgICAgICByZXQgPSBzdWJt aXRfZW5jb2RlX2ZyYW1lKG9mLCBvc3QsIE5VTEwpOwogICAgICAgICBpZiAocmV0ICE9IEFWRVJS T1JfRU9GKQogICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOwogICAgIH0KQEAgLTMwNzgsNiAr MzExNSw5IEBAIHN0YXRpYyBpbnQgaW5pdF9vdXRwdXRfc3RyZWFtX2VuY29kZShPdXRwdXRTdHJl YW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGlm IChvc3QtPnNxX2lkeF9lbmNvZGUgPj0gMCkKKyAgICAgICAgc3Ffc2V0X3RiKG9mLT5zcV9lbmNv ZGUsIG9zdC0+c3FfaWR4X2VuY29kZSwgZW5jX2N0eC0+dGltZV9iYXNlKTsKKwogICAgIG9zdC0+ bXV4X3RpbWViYXNlID0gZW5jX2N0eC0+dGltZV9iYXNlOwogCiAgICAgcmV0dXJuIDA7CkBAIC0z MDg2LDYgKzMxMjYsNyBAQCBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbV9lbmNvZGUoT3V0 cHV0U3RyZWFtICpvc3QsIEFWRnJhbWUgKmZyYW1lKQogc3RhdGljIGludCBpbml0X291dHB1dF9z dHJlYW0oT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbWUgKmZyYW1lLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2hhciAqZXJyb3IsIGludCBlcnJvcl9sZW4pCiB7CisgICAgT3V0cHV0 RmlsZSAqb2YgPSBvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XTsKICAgICBpbnQgcmV0ID0g MDsKIAogICAgIGlmIChvc3QtPmVuY29kaW5nX25lZWRlZCkgewpAQCAtMzIxOCw2ICszMjU5LDkg QEAgc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJh bWUgKmZyYW1lLAogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gcmV0OwogCisgICAg aWYgKG9zdC0+c3FfaWR4X211eCA+PSAwKQorICAgICAgICBzcV9zZXRfdGIob2YtPnNxX211eCwg b3N0LT5zcV9pZHhfbXV4LCBvc3QtPm11eF90aW1lYmFzZSk7CisKICAgICBvc3QtPmluaXRpYWxp emVkID0gMTsKIAogICAgIHJldCA9IG9mX2NoZWNrX2luaXQob3V0cHV0X2ZpbGVzW29zdC0+Zmls ZV9pbmRleF0pOwpAQCAtMzkyMyw4ICszOTY3LDEwIEBAIHN0YXRpYyBpbnQgcHJvY2Vzc19pbnB1 dChpbnQgZmlsZV9pbmRleCkKICAgICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gKm9zdCA9IG91 dHB1dF9zdHJlYW1zW2pdOwogCiAgICAgICAgICAgICAgICAgaWYgKG9zdC0+c291cmNlX2luZGV4 ID09IGlmaWxlLT5pc3RfaW5kZXggKyBpICYmCi0gICAgICAgICAgICAgICAgICAgIChvc3QtPnN0 cmVhbV9jb3B5IHx8IG9zdC0+ZW5jLT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkpCi0g ICAgICAgICAgICAgICAgICAgIGZpbmlzaF9vdXRwdXRfc3RyZWFtKG9zdCk7CisgICAgICAgICAg ICAgICAgICAgIChvc3QtPnN0cmVhbV9jb3B5IHx8IG9zdC0+ZW5jLT50eXBlID09IEFWTUVESUFf VFlQRV9TVUJUSVRMRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgT3V0cHV0RmlsZSAqb2YgPSBv dXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0 X3BhY2tldChvZiwgb3N0LT5wa3QsIG9zdCwgMSk7CisgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnLmggYi9mZnRv b2xzL2ZmbXBlZy5oCmluZGV4IDU0MDNmOTk5OGIuLjEwNjU4MGFkYjIgMTAwNjQ0Ci0tLSBhL2Zm dG9vbHMvZmZtcGVnLmgKKysrIGIvZmZ0b29scy9mZm1wZWcuaApAQCAtMjYsNiArMjYsNyBAQAog I2luY2x1ZGUgPHNpZ25hbC5oPgogCiAjaW5jbHVkZSAiY21kdXRpbHMuaCIKKyNpbmNsdWRlICJz eW5jX3F1ZXVlLmgiCiAKICNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmZvcm1hdC5oIgogI2luY2x1 ZGUgImxpYmF2Zm9ybWF0L2F2aW8uaCIKQEAgLTE1MCw2ICsxNTEsNyBAQCB0eXBlZGVmIHN0cnVj dCBPcHRpb25zQ29udGV4dCB7CiAgICAgaW50NjRfdCBsaW1pdF9maWxlc2l6ZTsKICAgICBmbG9h dCBtdXhfcHJlbG9hZDsKICAgICBmbG9hdCBtdXhfbWF4X2RlbGF5OworICAgIGZsb2F0IHNob3J0 ZXN0X2J1Zl9kdXJhdGlvbjsKICAgICBpbnQgc2hvcnRlc3Q7CiAgICAgaW50IGJpdGV4YWN0Owog CkBAIC00ODIsNiArNDg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0U3RyZWFtIHsKICAgICBp bnQ2NF90IG1heF9mcmFtZXM7CiAgICAgQVZGcmFtZSAqZmlsdGVyZWRfZnJhbWU7CiAgICAgQVZG cmFtZSAqbGFzdF9mcmFtZTsKKyAgICBBVkZyYW1lICpzcV9mcmFtZTsKICAgICBBVlBhY2tldCAq cGt0OwogICAgIGludCBsYXN0X2Ryb3BwZWQ7CiAgICAgaW50IGxhc3RfbmIwX2ZyYW1lc1szXTsK QEAgLTU3Myw2ICs1NzYsOSBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRTdHJlYW0gewogCiAgICAg LyogZnJhbWUgZW5jb2RlIHN1bSBvZiBzcXVhcmVkIGVycm9yIHZhbHVlcyAqLwogICAgIGludDY0 X3QgZXJyb3JbNF07CisKKyAgICBpbnQgc3FfaWR4X2VuY29kZTsKKyAgICBpbnQgc3FfaWR4X211 eDsKIH0gT3V0cHV0U3RyZWFtOwogCiB0eXBlZGVmIHN0cnVjdCBNdXhlciBNdXhlcjsKQEAgLTU4 Myw2ICs1ODksOSBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRGaWxlIHsKICAgICBNdXhlciAgICAg ICAgICAgICAgICAqbXV4OwogICAgIGNvbnN0IEFWT3V0cHV0Rm9ybWF0ICpmb3JtYXQ7CiAKKyAg ICBTeW5jUXVldWUgKnNxX2VuY29kZTsKKyAgICBTeW5jUXVldWUgKnNxX211eDsKKwogICAgIEFW Rm9ybWF0Q29udGV4dCAqY3R4OwogICAgIGludCBvc3RfaW5kZXg7ICAgICAgIC8qIGluZGV4IG9m IHRoZSBmaXJzdCBzdHJlYW0gaW4gb3V0cHV0X3N0cmVhbXMgKi8KICAgICBpbnQ2NF90IHJlY29y ZGluZ190aW1lOyAgLy8vPCBkZXNpcmVkIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIGZpbGUgaW4g bWljcm9zZWNvbmRzID09IEFWX1RJTUVfQkFTRSB1bml0cwpkaWZmIC0tZ2l0IGEvZmZ0b29scy9m Zm1wZWdfbXV4LmMgYi9mZnRvb2xzL2ZmbXBlZ19tdXguYwppbmRleCBhMzM1MGE3M2U5Li40NTNj Y2FjOTEyIDEwMDY0NAotLS0gYS9mZnRvb2xzL2ZmbXBlZ19tdXguYworKysgYi9mZnRvb2xzL2Zm bXBlZ19tdXguYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5j bHVkZSAiZmZtcGVnLmgiCisjaW5jbHVkZSAic3luY19xdWV1ZS5oIgogCiAjaW5jbHVkZSAibGli YXZ1dGlsL2ZpZm8uaCIKICNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCkBAIC01 Niw2ICs1Nyw4IEBAIHN0cnVjdCBNdXhlciB7CiAgICAgaW50NjRfdCBsaW1pdF9maWxlc2l6ZTsK ICAgICBpbnQ2NF90IGZpbmFsX2ZpbGVzaXplOwogICAgIGludCBoZWFkZXJfd3JpdHRlbjsKKwor ICAgIEFWUGFja2V0ICpzcV9wa3Q7CiB9OwogCiBzdGF0aWMgaW50IHdhbnRfc2RwID0gMTsKQEAg LTcyLDEzICs3NSwxNCBAQCBzdGF0aWMgdm9pZCBjbG9zZV9hbGxfb3V0cHV0X3N0cmVhbXMoT3V0 cHV0U3RyZWFtICpvc3QsIE9TVEZpbmlzaGVkIHRoaXNfc3RyZWFtLAogc3RhdGljIGludCBxdWV1 ZV9wYWNrZXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LCBBVlBhY2tldCAqcGt0 KQogewogICAgIE11eFN0cmVhbSAqbXMgPSAmb2YtPm11eC0+c3RyZWFtc1tvc3QtPmluZGV4XTsK LSAgICBBVlBhY2tldCAqdG1wX3BrdDsKKyAgICBBVlBhY2tldCAqdG1wX3BrdCA9IE5VTEw7CiAg ICAgaW50IHJldDsKIAogICAgIGlmICghYXZfZmlmb19jYW5fd3JpdGUobXMtPm11eGluZ19xdWV1 ZSkpIHsKICAgICAgICAgc2l6ZV90IGN1cl9zaXplID0gYXZfZmlmb19jYW5fcmVhZChtcy0+bXV4 aW5nX3F1ZXVlKTsKKyAgICAgICAgc2l6ZV90IHBrdF9zaXplID0gcGt0ID8gcGt0LT5zaXplIDog MDsKICAgICAgICAgdW5zaWduZWQgaW50IGFyZV93ZV9vdmVyX3NpemUgPQotICAgICAgICAgICAg KG1zLT5tdXhpbmdfcXVldWVfZGF0YV9zaXplICsgcGt0LT5zaXplKSA+IG9zdC0+bXV4aW5nX3F1 ZXVlX2RhdGFfdGhyZXNob2xkOworICAgICAgICAgICAgKG1zLT5tdXhpbmdfcXVldWVfZGF0YV9z aXplICsgcGt0X3NpemUpID4gb3N0LT5tdXhpbmdfcXVldWVfZGF0YV90aHJlc2hvbGQ7CiAgICAg ICAgIHNpemVfdCBsaW1pdCAgICA9IGFyZV93ZV9vdmVyX3NpemUgPyBvc3QtPm1heF9tdXhpbmdf cXVldWVfc2l6ZSA6IFNJWkVfTUFYOwogICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBGRk1JTigy ICogY3VyX3NpemUsIGxpbWl0KTsKIApAQCAtOTMsNiArOTcsNyBAQCBzdGF0aWMgaW50IHF1ZXVl X3BhY2tldChPdXRwdXRGaWxlICpvZiwgT3V0cHV0U3RyZWFtICpvc3QsIEFWUGFja2V0ICpwa3Qp CiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIAorICAgIGlmIChwa3QpIHsKICAgICBy ZXQgPSBhdl9wYWNrZXRfbWFrZV9yZWZjb3VudGVkKHBrdCk7CiAgICAgaWYgKHJldCA8IDApCiAg ICAgICAgIHJldHVybiByZXQ7CkBAIC0xMDMsNiArMTA4LDcgQEAgc3RhdGljIGludCBxdWV1ZV9w YWNrZXQoT3V0cHV0RmlsZSAqb2YsIE91dHB1dFN0cmVhbSAqb3N0LCBBVlBhY2tldCAqcGt0KQog CiAgICAgYXZfcGFja2V0X21vdmVfcmVmKHRtcF9wa3QsIHBrdCk7CiAgICAgbXMtPm11eGluZ19x dWV1ZV9kYXRhX3NpemUgKz0gdG1wX3BrdC0+c2l6ZTsKKyAgICB9CiAgICAgYXZfZmlmb193cml0 ZShtcy0+bXV4aW5nX3F1ZXVlLCAmdG1wX3BrdCwgMSk7CiAKICAgICByZXR1cm4gMDsKQEAgLTE5 MiwxMSArMTk4LDQ0IEBAIHN0YXRpYyB2b2lkIHdyaXRlX3BhY2tldChPdXRwdXRGaWxlICpvZiwg T3V0cHV0U3RyZWFtICpvc3QsIEFWUGFja2V0ICpwa3QpCiAgICAgfQogfQogCitzdGF0aWMgdm9p ZCBzdWJtaXRfcGFja2V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwgQVZQYWNr ZXQgKnBrdCkKK3sKKyAgICBpZiAob3N0LT5zcV9pZHhfbXV4ID49IDApIHsKKyAgICAgICAgaW50 IHJldCA9IHNxX3NlbmQob2YtPnNxX211eCwgb3N0LT5zcV9pZHhfbXV4LCBTUVBLVChwa3QpKTsK KyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIGlmIChwa3QpCisgICAgICAgICAg ICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7CisgICAgICAgICAgICBpZiAocmV0ID09IEFWRVJS T1JfRU9GKSB7CisgICAgICAgICAgICAgICAgb3N0LT5maW5pc2hlZCB8PSBNVVhFUl9GSU5JU0hF RDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg ICAgICAgICBleGl0X3Byb2dyYW0oMSk7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoMSkg eworICAgICAgICAgICAgcmV0ID0gc3FfcmVjZWl2ZShvZi0+c3FfbXV4LCAtMSwgU1FQS1Qob2Yt Pm11eC0+c3FfcGt0KSk7CisgICAgICAgICAgICBpZiAocmV0ID09IEFWRVJST1JfRU9GIHx8IHJl dCA9PSBBVkVSUk9SKEVBR0FJTikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg ICAgZWxzZSBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgICAgICBleGl0X3Byb2dyYW0oMSk7CisK KyAgICAgICAgICAgIHdyaXRlX3BhY2tldChvZiwgb3V0cHV0X3N0cmVhbXNbb2YtPm9zdF9pbmRl eCArIHJldF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgb2YtPm11eC0+c3FfcGt0KTsKKyAg ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwa3QpCisgICAgICAgICAgICB3cml0 ZV9wYWNrZXQob2YsIG9zdCwgcGt0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3N0LT5m aW5pc2hlZCB8PSBNVVhFUl9GSU5JU0hFRDsKKyAgICB9Cit9CisKIHZvaWQgb2Zfc3VibWl0X3Bh Y2tldChPdXRwdXRGaWxlICpvZiwgQVZQYWNrZXQgKnBrdCwgT3V0cHV0U3RyZWFtICpvc3QpCiB7 CiAgICAgQVZTdHJlYW0gKnN0ID0gb3N0LT5zdDsKICAgICBpbnQgcmV0OwogCisgICAgaWYgKHBr dCkgewogICAgIC8qCiAgICAgICogQXVkaW8gZW5jb2RlcnMgbWF5IHNwbGl0IHRoZSBwYWNrZXRz IC0tICAjZnJhbWVzIGluICE9ICNwYWNrZXRzIG91dC4KICAgICAgKiBCdXQgdGhlcmUgaXMgbm8g cmVvcmRlcmluZywgc28gd2UgY2FuIGxpbWl0IHRoZSBudW1iZXIgb2Ygb3V0cHV0IHBhY2tldHMK QEAgLTIxMSw5ICsyNTAsMTAgQEAgdm9pZCBvZl9zdWJtaXRfcGFja2V0KE91dHB1dEZpbGUgKm9m LCBBVlBhY2tldCAqcGt0LCBPdXRwdXRTdHJlYW0gKm9zdCkKICAgICAgICAgfQogICAgICAgICBv c3QtPmZyYW1lX251bWJlcisrOwogICAgIH0KKyAgICB9CiAKICAgICBpZiAob2YtPm11eC0+aGVh ZGVyX3dyaXR0ZW4pIHsKLSAgICAgICAgd3JpdGVfcGFja2V0KG9mLCBvc3QsIHBrdCk7CisgICAg ICAgIHN1Ym1pdF9wYWNrZXQob2YsIG9zdCwgcGt0KTsKICAgICB9IGVsc2UgewogICAgICAgICAv KiB0aGUgbXV4ZXIgaXMgbm90IGluaXRpYWxpemVkIHlldCwgYnVmZmVyIHRoZSBwYWNrZXQgKi8K ICAgICAgICAgcmV0ID0gcXVldWVfcGFja2V0KG9mLCBvc3QsIHBrdCk7CkBAIC0zMjEsOSArMzYx LDExIEBAIGludCBvZl9jaGVja19pbml0KE91dHB1dEZpbGUgKm9mKQogICAgICAgICAgICAgb3N0 LT5tdXhfdGltZWJhc2UgPSBvc3QtPnN0LT50aW1lX2Jhc2U7CiAKICAgICAgICAgd2hpbGUgKGF2 X2ZpZm9fcmVhZChtcy0+bXV4aW5nX3F1ZXVlLCAmcGt0LCAxKSA+PSAwKSB7Ci0gICAgICAgICAg ICBtcy0+bXV4aW5nX3F1ZXVlX2RhdGFfc2l6ZSAtPSBwa3QtPnNpemU7Ci0gICAgICAgICAgICB3 cml0ZV9wYWNrZXQob2YsIG9zdCwgcGt0KTsKLSAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZw a3QpOworICAgICAgICAgICAgc3VibWl0X3BhY2tldChvZiwgb3N0LCBwa3QpOworICAgICAgICAg ICAgaWYgKHBrdCkgeworICAgICAgICAgICAgICAgIG1zLT5tdXhpbmdfcXVldWVfZGF0YV9zaXpl IC09IHBrdC0+c2l6ZTsKKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmcGt0KTsKKyAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzgzLDYgKzQyNSw4IEBAIHN0YXRp YyB2b2lkIG11eF9mcmVlKE11eGVyICoqcG11eCwgaW50IG5iX3N0cmVhbXMpCiAgICAgYXZfZnJl ZXAoJm11eC0+c3RyZWFtcyk7CiAgICAgYXZfZGljdF9mcmVlKCZtdXgtPm9wdHMpOwogCisgICAg YXZfcGFja2V0X2ZyZWUoJm11eC0+c3FfcGt0KTsKKwogICAgIGF2X2ZyZWVwKHBtdXgpOwogfQog CkBAIC0zOTQsNiArNDM4LDkgQEAgdm9pZCBvZl9jbG9zZShPdXRwdXRGaWxlICoqcG9mKQogICAg IGlmICghb2YpCiAgICAgICAgIHJldHVybjsKIAorICAgIHNxX2ZyZWUoJm9mLT5zcV9lbmNvZGUp OworICAgIHNxX2ZyZWUoJm9mLT5zcV9tdXgpOworCiAgICAgcyA9IG9mLT5jdHg7CiAKICAgICBt dXhfZnJlZSgmb2YtPm11eCwgcyA/IHMtPm5iX3N0cmVhbXMgOiAwKTsKQEAgLTQzNyw2ICs0ODQs MTQgQEAgaW50IG9mX211eGVyX2luaXQoT3V0cHV0RmlsZSAqb2YsIEFWRGljdGlvbmFyeSAqb3B0 cywgaW50NjRfdCBsaW1pdF9maWxlc2l6ZSkKICAgICBpZiAoc3RyY21wKG9mLT5mb3JtYXQtPm5h bWUsICJydHAiKSkKICAgICAgICAgd2FudF9zZHAgPSAwOwogCisgICAgaWYgKG9mLT5zcV9tdXgp IHsKKyAgICAgICAgbXV4LT5zcV9wa3QgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKyAgICAgICAgaWYg KCFtdXgtPnNxX3BrdCkgeworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOworICAg ICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorCiAgICAgLyogd3JpdGUgdGhl IGhlYWRlciBmb3IgZmlsZXMgd2l0aCBubyBzdHJlYW1zICovCiAgICAgaWYgKG9mLT5mb3JtYXQt PmZsYWdzICYgQVZGTVRfTk9TVFJFQU1TICYmIG9mLT5jdHgtPm5iX3N0cmVhbXMgPT0gMCkgewog ICAgICAgICByZXQgPSBvZl9jaGVja19pbml0KG9mKTsKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZt cGVnX29wdC5jIGIvZmZ0b29scy9mZm1wZWdfb3B0LmMKaW5kZXggMDlhMjgxZGJhMy4uMmNkNGQ0 MmYyYSAxMDA2NDQKLS0tIGEvZmZ0b29scy9mZm1wZWdfb3B0LmMKKysrIGIvZmZ0b29scy9mZm1w ZWdfb3B0LmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJmb3Blbl91dGY4LmgiCiAjaW5j bHVkZSAiY21kdXRpbHMuaCIKICNpbmNsdWRlICJvcHRfY29tbW9uLmgiCisjaW5jbHVkZSAic3lu Y19xdWV1ZS5oIgogCiAjaW5jbHVkZSAibGliYXZmb3JtYXQvYXZmb3JtYXQuaCIKIApAQCAtMjM0 LDYgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIGluaXRfb3B0aW9ucyhPcHRpb25zQ29udGV4dCAqbykK ICAgICBvLT5jaGFwdGVyc19pbnB1dF9maWxlID0gSU5UX01BWDsKICAgICBvLT5hY2N1cmF0ZV9z ZWVrICA9IDE7CiAgICAgby0+dGhyZWFkX3F1ZXVlX3NpemUgPSAtMTsKKyAgICBvLT5zaG9ydGVz dF9idWZfZHVyYXRpb24gPSAxMC5mOwogfQogCiBzdGF0aWMgaW50IHNob3dfaHdhY2NlbHModm9p ZCAqb3B0Y3R4LCBjb25zdCBjaGFyICpvcHQsIGNvbnN0IGNoYXIgKmFyZykKQEAgLTIzMjYsNiAr MjMyOCw3OCBAQCBzdGF0aWMgaW50IGluaXRfY29tcGxleF9maWx0ZXJzKHZvaWQpCiAgICAgcmV0 dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc2V0dXBfc3luY19xdWV1ZXMoT3V0cHV0RmlsZSAqb2Ys IEFWRm9ybWF0Q29udGV4dCAqb2MsIGludDY0X3QgYnVmX3NpemVfdXMpCit7CisgICAgaW50IG5i X2F2X2VuYyA9IDAsIG5iX2ludGVybGVhdmVkID0gMDsKKworI2RlZmluZSBJU19BVl9FTkMob3N0 LCB0eXBlKSAgXAorICAgIChvc3QtPmVuY29kaW5nX25lZWRlZCAmJiAodHlwZSA9PSBBVk1FRElB X1RZUEVfVklERU8gfHwgdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pKQorI2RlZmluZSBJU19J TlRFUkxFQVZFRCh0eXBlKSAodHlwZSAhPSBBVk1FRElBX1RZUEVfQVRUQUNITUVOVCkKKworICAg IGZvciAoaW50IGkgPSAwOyBpIDwgb2MtPm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICBPdXRw dXRTdHJlYW0gKm9zdCA9IG91dHB1dF9zdHJlYW1zW29mLT5vc3RfaW5kZXggKyBpXTsKKyAgICAg ICAgZW51bSBBVk1lZGlhVHlwZSB0eXBlID0gb3N0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGU7 CisKKyAgICAgICAgb3N0LT5zcV9pZHhfZW5jb2RlID0gLTE7CisgICAgICAgIG9zdC0+c3FfaWR4 X211eCAgICA9IC0xOworCisgICAgICAgIG5iX2ludGVybGVhdmVkICs9IElTX0lOVEVSTEVBVkVE KHR5cGUpOworICAgICAgICBuYl9hdl9lbmMgICAgICArPSBJU19BVl9FTkMob3N0LCB0eXBlKTsK KyAgICB9CisKKyAgICBpZiAoIShuYl9pbnRlcmxlYXZlZCA+IDEgJiYgb2YtPnNob3J0ZXN0KSkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBpZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgZW5j b2RlZCBhdWRpby92aWRlbyBzdHJlYW1zLCB0aGVuIHdlCisgICAgICogc3luY2hyb25pemUgdGhl bSBiZWZvcmUgZW5jb2RpbmcgKi8KKyAgICBpZiAobmJfYXZfZW5jID4gMSkgeworICAgICAgICBv Zi0+c3FfZW5jb2RlID0gc3FfYWxsb2MoU1lOQ19RVUVVRV9GUkFNRVMsIGJ1Zl9zaXplX3VzKTsK KyAgICAgICAgaWYgKCFvZi0+c3FfZW5jb2RlKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9jLT5uYl9zdHJlYW1zOyBp KyspIHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSAqb3N0ID0gb3V0cHV0X3N0cmVhbXNbb2Yt Pm9zdF9pbmRleCArIGldOworICAgICAgICAgICAgZW51bSBBVk1lZGlhVHlwZSB0eXBlID0gb3N0 LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGU7CisKKyAgICAgICAgICAgIGlmICghSVNfQVZfRU5D KG9zdCwgdHlwZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG9z dC0+c3FfaWR4X2VuY29kZSA9IHNxX2FkZF9zdHJlYW0ob2YtPnNxX2VuY29kZSk7CisgICAgICAg ICAgICBpZiAob3N0LT5zcV9pZHhfZW5jb2RlIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4g b3N0LT5zcV9pZHhfZW5jb2RlOworCisgICAgICAgICAgICBvc3QtPnNxX2ZyYW1lID0gYXZfZnJh bWVfYWxsb2MoKTsKKyAgICAgICAgICAgIGlmICghb3N0LT5zcV9mcmFtZSkKKyAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyog aWYgdGhlcmUgYXJlIGFueSBhZGRpdGlvbmFsIGludGVybGVhdmVkIHN0cmVhbXMsIHRoZW4gQUxM IHRoZSBzdHJlYW1zCisgICAgICogYXJlIGFsc28gc3luY2hyb25pemVkIGJlZm9yZSBzZW5kaW5n IHRoZW0gdG8gdGhlIG11eGVyICovCisgICAgaWYgKG5iX2ludGVybGVhdmVkID4gbmJfYXZfZW5j KSB7CisgICAgICAgIG9mLT5zcV9tdXggPSBzcV9hbGxvYyhTWU5DX1FVRVVFX1BBQ0tFVFMsIGJ1 Zl9zaXplX3VzKTsKKyAgICAgICAgaWYgKCFvZi0+c3FfbXV4KQorICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9jLT5uYl9z dHJlYW1zOyBpKyspIHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSAqb3N0ID0gb3V0cHV0X3N0 cmVhbXNbb2YtPm9zdF9pbmRleCArIGldOworICAgICAgICAgICAgZW51bSBBVk1lZGlhVHlwZSB0 eXBlID0gb3N0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGU7CisKKyAgICAgICAgICAgIGlmICgh SVNfSU5URVJMRUFWRUQodHlwZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg ICAgICAgIG9zdC0+c3FfaWR4X211eCA9IHNxX2FkZF9zdHJlYW0ob2YtPnNxX211eCk7CisgICAg ICAgICAgICBpZiAob3N0LT5zcV9pZHhfbXV4IDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4g b3N0LT5zcV9pZHhfbXV4OworICAgICAgICB9CisgICAgfQorCisjdW5kZWYgSVNfQVZfRU5DCisj dW5kZWYgSVNfSU5URVJMRUFWRUQKKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9w ZW5fb3V0cHV0X2ZpbGUoT3B0aW9uc0NvbnRleHQgKm8sIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog ewogICAgIEFWRm9ybWF0Q29udGV4dCAqb2M7CkBAIC0yOTYzLDYgKzMwMzcsMTIgQEAgbG9vcF9l bmQ6CiAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICB9CiAKKyAgICBlcnIgPSBzZXR1cF9z eW5jX3F1ZXVlcyhvZiwgb2MsIG8tPnNob3J0ZXN0X2J1Zl9kdXJhdGlvbiAqIEFWX1RJTUVfQkFT RSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19GQVRB TCwgIkVycm9yIHNldHRpbmcgdXAgb3V0cHV0IHN5bmMgcXVldWVzXG4iKTsKKyAgICAgICAgZXhp dF9wcm9ncmFtKDEpOworICAgIH0KKwogICAgIGVyciA9IG9mX211eGVyX2luaXQob2YsIGZvcm1h dF9vcHRzLCBvLT5saW1pdF9maWxlc2l6ZSk7CiAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAg YXZfbG9nKE5VTEwsIEFWX0xPR19GQVRBTCwgIkVycm9yIGluaXRpYWxpemluZyBpbnRlcm5hbCBt dXhpbmcgc3RhdGVcbiIpOwpAQCAtMzY3NSw2ICszNzU1LDggQEAgY29uc3QgT3B0aW9uRGVmIG9w dGlvbnNbXSA9IHsKICAgICB7ICJzaG9ydGVzdCIsICAgICAgIE9QVF9CT09MIHwgT1BUX0VYUEVS VCB8IE9QVF9PRkZTRVQgfAogICAgICAgICAgICAgICAgICAgICAgICAgT1BUX09VVFBVVCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAub2ZmID0gT0ZGU0VUKHNob3J0ZXN0KSB9 LAogICAgICAgICAiZmluaXNoIGVuY29kaW5nIHdpdGhpbiBzaG9ydGVzdCBpbnB1dCIgfSwKKyAg ICB7ICJzaG9ydGVzdF9idWZfZHVyYXRpb24iLCBIQVNfQVJHIHwgT1BUX0ZMT0FUIHwgT1BUX0VY UEVSVCB8IE9QVF9PRkZTRVQgfCBPUFRfT1VUUFVULCB7IC5vZmYgPSBPRkZTRVQoc2hvcnRlc3Rf YnVmX2R1cmF0aW9uKSB9LAorICAgICAgICAibWF4aW11bSBidWZmZXJpbmcgZHVyYXRpb24gKGlu IHNlY29uZHMpIGZvciB0aGUgLXNob3J0ZXN0IG9wdGlvbiIgfSwKICAgICB7ICJiaXRleGFjdCIs ICAgICAgIE9QVF9CT09MIHwgT1BUX0VYUEVSVCB8IE9QVF9PRkZTRVQgfAogICAgICAgICAgICAg ICAgICAgICAgICAgT1BUX09VVFBVVCB8IE9QVF9JTlBVVCwgICAgICAgICAgICAgICAgICAgICAg eyAub2ZmID0gT0ZGU0VUKGJpdGV4YWN0KSB9LAogICAgICAgICAiYml0ZXhhY3QgbW9kZSIgfSwK ZGlmZiAtLWdpdCBhL2ZmdG9vbHMvc3luY19xdWV1ZS5jIGIvZmZ0b29scy9zeW5jX3F1ZXVlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDlmMDYwMGI2YwotLS0gL2Rl di9udWxsCisrKyBiL2ZmdG9vbHMvc3luY19xdWV1ZS5jCkBAIC0wLDAgKzEsNDI3IEBACisvKgor ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v ciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgor I2luY2x1ZGUgImxpYmF2dXRpbC9lcnJvci5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL21hdGhlbWF0aWNzLmgiCisjaW5jbHVkZSAibGliYXZ1dGls L21lbS5oIgorCisjaW5jbHVkZSAib2JqcG9vbC5oIgorI2luY2x1ZGUgInN5bmNfcXVldWUuaCIK KwordHlwZWRlZiBzdHJ1Y3QgU3luY1F1ZXVlU3RyZWFtIHsKKyAgICBBVkZpZm8gICAgICAgICAg KmZpZm87CisgICAgQVZSYXRpb25hbCAgICAgICB0YjsKKworICAgIC8qIHN0cmVhbSBoZWFkOiBs YXJnZXN0IHRpbWVzdGFtcCBzZWVuICovCisgICAgaW50NjRfdCAgICAgICAgICBoZWFkX3RzOwor ICAgIC8qIG5vIG1vcmUgZnJhbWVzIHdpbGwgYmUgc2VudCBmb3IgdGhpcyBzdHJlYW0gKi8KKyAg ICBpbnQgICAgICAgICAgICAgIGZpbmlzaGVkOworfSBTeW5jUXVldWVTdHJlYW07CisKK3N0cnVj dCBTeW5jUXVldWUgeworICAgIGVudW0gU3luY1F1ZXVlVHlwZSB0eXBlOworCisgICAgLyogbm8g bW9yZSBmcmFtZXMgd2lsbCBiZSBzZW50IGZvciBhbnkgc3RyZWFtICovCisgICAgaW50IGZpbmlz aGVkOworICAgIC8qIHN5bmMgaGVhZDogdGhlIHN0cmVhbSB3aXRoIHRoZSBfc21hbGxlc3RfIGhl YWQgdGltZXN0YW1wCisgICAgICogdGhpcyBzdHJlYW0gZGV0ZXJtaW5lcyB3aGljaCBmcmFtZXMg Y2FuIGJlIG91dHB1dCAqLworICAgIGludCBoZWFkX3N0cmVhbTsKKyAgICAvKiB0aGUgZmluaXNo ZWQgc3RyZWFtIHdpdGggdGhlIHNtYWxsZXN0IGZpbmlzaCB0aW1lc3RhbXAgb3IgLTEgKi8KKyAg ICBpbnQgaGVhZF9maW5pc2hlZF9zdHJlYW07CisKKyAgICAvLyBtYXhpbXVtIGJ1ZmZlcmluZyBk dXJhdGlvbiBpbiBtaWNyb3NlY29uZHMKKyAgICBpbnQ2NF90IGJ1Zl9zaXplX3VzOworCisgICAg U3luY1F1ZXVlU3RyZWFtICpzdHJlYW1zOworICAgIHVuc2lnbmVkIGludCAgbmJfc3RyZWFtczsK KworICAgIC8vIHBvb2wgb2YgcHJlYWxsb2NhdGVkIGZyYW1lcyB0byBhdm9pZCBjb25zdGFudCBh bGxvY2F0aW9ucworICAgIE9ialBvb2wgKnBvb2w7CisgICAgU3luY1F1ZXVlRnJhbWUgIGZyZWVf ZnJhbWVzWzMyXTsKKyAgICB1bnNpZ25lZCBpbnQgbmJfZnJlZV9mcmFtZXM7Cit9OworCitzdGF0 aWMgdm9pZCBmcmFtZV9tb3ZlKGNvbnN0IFN5bmNRdWV1ZSAqc3EsIFN5bmNRdWV1ZUZyYW1lIGRz dCwKKyAgICAgICAgICAgICAgICAgICAgICAgU3luY1F1ZXVlRnJhbWUgc3JjKQoreworICAgIGlm IChzcS0+dHlwZSA9PSBTWU5DX1FVRVVFX1BBQ0tFVFMpCisgICAgICAgIGF2X3BhY2tldF9tb3Zl X3JlZihkc3QucCwgc3JjLnApOworICAgIGVsc2UKKyAgICAgICAgYXZfZnJhbWVfbW92ZV9yZWYo ZHN0LmYsIHNyYy5mKTsKK30KKworc3RhdGljIGludDY0X3QgZnJhbWVfdHMoY29uc3QgU3luY1F1 ZXVlICpzcSwgU3luY1F1ZXVlRnJhbWUgZnJhbWUpCit7CisgICAgcmV0dXJuIChzcS0+dHlwZSA9 PSBTWU5DX1FVRVVFX1BBQ0tFVFMpID8KKyAgICAgICAgICAgZnJhbWUucC0+cHRzICsgZnJhbWUu cC0+ZHVyYXRpb24gOgorICAgICAgICAgICBmcmFtZS5mLT5wdHMgKyBmcmFtZS5mLT5wa3RfZHVy YXRpb247Cit9CisKK3N0YXRpYyBpbnQgZnJhbWVfbnVsbChjb25zdCBTeW5jUXVldWUgKnNxLCBT eW5jUXVldWVGcmFtZSBmcmFtZSkKK3sKKyAgICByZXR1cm4gKHNxLT50eXBlID09IFNZTkNfUVVF VUVfUEFDS0VUUykgPyAoZnJhbWUucCA9PSBOVUxMKSA6IChmcmFtZS5mID09IE5VTEwpOworfQor CitzdGF0aWMgdm9pZCBmaW5pc2hfc3RyZWFtKFN5bmNRdWV1ZSAqc3EsIHVuc2lnbmVkIGludCBz dHJlYW1faWR4KQoreworICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3QgPSAmc3EtPnN0cmVhbXNbc3Ry ZWFtX2lkeF07CisKKyAgICBzdC0+ZmluaXNoZWQgPSAxOworCisgICAgaWYgKHN0LT5oZWFkX3Rz ICE9IEFWX05PUFRTX1ZBTFVFKSB7CisgICAgICAgIC8qIGNoZWNrIGlmIHRoaXMgc3RyZWFtIGlz IHRoZSBuZXcgZmluaXNoZWQgaGVhZCAqLworICAgICAgICBpZiAoc3EtPmhlYWRfZmluaXNoZWRf c3RyZWFtIDwgMCB8fAorICAgICAgICAgICAgYXZfY29tcGFyZV90cyhzdC0+aGVhZF90cywgc3Qt PnRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcS0+c3RyZWFtc1tzcS0+aGVhZF9maW5p c2hlZF9zdHJlYW1dLmhlYWRfdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNxLT5zdHJl YW1zW3NxLT5oZWFkX2ZpbmlzaGVkX3N0cmVhbV0udGIpIDwgMCkgeworICAgICAgICAgICAgc3Et PmhlYWRfZmluaXNoZWRfc3RyZWFtID0gc3RyZWFtX2lkeDsKKyAgICAgICAgfQorCisgICAgICAg IC8qIG1hcmsgYXMgZmluaXNoZWQgYWxsIHN0cmVhbXMgdGhhdCBzaG91bGQgbm8gbG9uZ2VyIHJl Y2VpdmUgbmV3IGZyYW1lcywKKyAgICAgICAgICogZHVlIHRvIHRoZW0gYmVpbmcgYWhlYWQgb2Yg c29tZSBmaW5pc2hlZCBzdHJlYW0gKi8KKyAgICAgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3EtPmhl YWRfZmluaXNoZWRfc3RyZWFtXTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg PCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgICAgICBTeW5jUXVldWVTdHJlYW0gKnN0 MSA9ICZzcS0+c3RyZWFtc1tpXTsKKyAgICAgICAgICAgIGlmIChzdCAhPSBzdDEgJiYgc3QxLT5o ZWFkX3RzICE9IEFWX05PUFRTX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgYXZfY29tcGFyZV90 cyhzdC0+aGVhZF90cywgc3QtPnRiLCBzdDEtPmhlYWRfdHMsIHN0MS0+dGIpIDw9IDApCisgICAg ICAgICAgICAgICAgc3QxLT5maW5pc2hlZCA9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv KiBtYXJrIHRoZSB3aG9sZSBxdWV1ZSBhcyBmaW5pc2hlZCBpZiBhbGwgc3RyZWFtcyBhcmUgZmlu aXNoZWQgKi8KKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxLT5uYl9zdHJlYW1z OyBpKyspIHsKKyAgICAgICAgaWYgKCFzcS0+c3RyZWFtc1tpXS5maW5pc2hlZCkKKyAgICAgICAg ICAgIHJldHVybjsKKyAgICB9CisgICAgc3EtPmZpbmlzaGVkID0gMTsKK30KKworc3RhdGljIHZv aWQgcXVldWVfaGVhZF91cGRhdGUoU3luY1F1ZXVlICpzcSkKK3sKKyAgICBpZiAoc3EtPmhlYWRf c3RyZWFtIDwgMCkgeworICAgICAgICAvKiB3YWl0IGZvciBvbmUgdGltZXN0YW1wIGluIGVhY2gg c3RyZWFtIGJlZm9yZSBkZXRlcm1pbmluZworICAgICAgICAgKiB0aGUgcXVldWUgaGVhZCAqLwor ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxLT5uYl9zdHJlYW1zOyBpKysp IHsKKyAgICAgICAgICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3QgPSAmc3EtPnN0cmVhbXNbaV07Cisg ICAgICAgICAgICBpZiAoc3QtPmhlYWRfdHMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gcGxhY2Vob2xkZXIgdmFsdWUs IGNvcnJlY3Qgb25lIHdpbGwgYmUgZm91bmQgYmVsb3cKKyAgICAgICAgc3EtPmhlYWRfc3RyZWFt ID0gMDsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxLT5uYl9z dHJlYW1zOyBpKyspIHsKKyAgICAgICAgU3luY1F1ZXVlU3RyZWFtICpzdF9oZWFkICA9ICZzcS0+ c3RyZWFtc1tzcS0+aGVhZF9zdHJlYW1dOworICAgICAgICBTeW5jUXVldWVTdHJlYW0gKnN0X290 aGVyID0gJnNxLT5zdHJlYW1zW2ldOworICAgICAgICBpZiAoc3Rfb3RoZXItPmhlYWRfdHMgIT0g QVZfTk9QVFNfVkFMVUUgJiYKKyAgICAgICAgICAgIGF2X2NvbXBhcmVfdHMoc3Rfb3RoZXItPmhl YWRfdHMsIHN0X290aGVyLT50YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfaGVhZC0+ aGVhZF90cywgIHN0X2hlYWQtPnRiKSA8IDApCisgICAgICAgICAgICBzcS0+aGVhZF9zdHJlYW0g PSBpOworICAgIH0KK30KKworLyogdXBkYXRlIHRoaXMgc3RyZWFtJ3MgaGVhZCB0aW1lc3RhbXAg Ki8KK3N0YXRpYyB2b2lkIHN0cmVhbV91cGRhdGVfdHMoU3luY1F1ZXVlICpzcSwgdW5zaWduZWQg aW50IHN0cmVhbV9pZHgsIGludDY0X3QgdHMpCit7CisgICAgU3luY1F1ZXVlU3RyZWFtICpzdCA9 ICZzcS0+c3RyZWFtc1tzdHJlYW1faWR4XTsKKworICAgIGlmICh0cyA9PSBBVl9OT1BUU19WQUxV RSB8fAorICAgICAgICAoc3QtPmhlYWRfdHMgIT0gQVZfTk9QVFNfVkFMVUUgJiYgc3QtPmhlYWRf dHMgPj0gdHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdC0+aGVhZF90cyA9IHRzOworCisg ICAgLyogaWYgdGhpcyBzdHJlYW0gaXMgbm93IGFoZWFkIG9mIHNvbWUgZmluaXNoZWQgc3RyZWFt LCB0aGVuCisgICAgICogdGhpcyBzdHJlYW0gaXMgYWxzbyBmaW5pc2hlZCAqLworICAgIGlmIChz cS0+aGVhZF9maW5pc2hlZF9zdHJlYW0gPj0gMCAmJgorICAgICAgICBhdl9jb21wYXJlX3RzKHNx LT5zdHJlYW1zW3NxLT5oZWFkX2ZpbmlzaGVkX3N0cmVhbV0uaGVhZF90cywKKyAgICAgICAgICAg ICAgICAgICAgICBzcS0+c3RyZWFtc1tzcS0+aGVhZF9maW5pc2hlZF9zdHJlYW1dLnRiLAorICAg ICAgICAgICAgICAgICAgICAgIHRzLCBzdC0+dGIpIDw9IDApCisgICAgICAgIGZpbmlzaF9zdHJl YW0oc3EsIHN0cmVhbV9pZHgpOworCisgICAgLyogdXBkYXRlIHRoZSBvdmVyYWxsIGhlYWQgdGlt ZXN0YW1wIGlmIGl0IGNvdWxkIGhhdmUgY2hhbmdlZCAqLworICAgIGlmIChzcS0+aGVhZF9zdHJl YW0gPCAwIHx8IHNxLT5oZWFkX3N0cmVhbSA9PSBzdHJlYW1faWR4KQorICAgICAgICBxdWV1ZV9o ZWFkX3VwZGF0ZShzcSk7Cit9CisKKy8qIElmIHRoZSBxdWV1ZSBmb3IgdGhlIGdpdmVuIHN0cmVh bSAob3IgYWxsIHN0cmVhbXMgd2hlbiBzdHJlYW1faWR4PS0xKQorICogaXMgb3ZlcmZsb3dpbmcs IHRyaWdnZXIgYSBmYWtlIGhlYXJ0YmVhdCBvbiBsYWdnaW5nIHN0cmVhbXMuCisgKgorICogQHJl dHVybiAxIGlmIGhlYXJ0YmVhdCB0cmlnZ2VyZWQsIDAgb3RoZXJ3aXNlCisgKi8KK3N0YXRpYyBp bnQgb3ZlcmZsb3dfaGVhcnRiZWF0KFN5bmNRdWV1ZSAqc3EsIGludCBzdHJlYW1faWR4KQorewor ICAgIFN5bmNRdWV1ZVN0cmVhbSAqc3Q7CisgICAgU3luY1F1ZXVlRnJhbWUgZnJhbWU7CisgICAg aW50NjRfdCB0YWlsX3RzID0gQVZfTk9QVFNfVkFMVUU7CisKKyAgICAvKiBpZiBubyBzdHJlYW0g c3BlY2lmaWVkLCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0IGFoZWFkICovCisgICAgaWYgKHN0 cmVhbV9pZHggPCAwKSB7CisgICAgICAgIGludDY0X3QgdHMgPSBBVl9OT1BUU19WQUxVRTsKKwor ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNxLT5uYl9zdHJlYW1zOyBpKyspIHsKKyAgICAg ICAgICAgIHN0ID0gJnNxLT5zdHJlYW1zW2ldOworICAgICAgICAgICAgaWYgKHN0LT5oZWFkX3Rz ICE9IEFWX05PUFRTX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgKHRzID09IEFWX05PUFRTX1ZB TFVFIHx8CisgICAgICAgICAgICAgICAgIGF2X2NvbXBhcmVfdHModHMsIHNxLT5zdHJlYW1zW3N0 cmVhbV9pZHhdLnRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5oZWFkX3Rz LCBzdC0+dGIpIDwgMCkpIHsKKyAgICAgICAgICAgICAgICB0cyA9IHN0LT5oZWFkX3RzOworICAg ICAgICAgICAgICAgIHN0cmVhbV9pZHggPSBpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICAgIC8qIG5vIHN0cmVhbSBoYXMgYSB0aW1lc3RhbXAgeWV0IC0+IG5vdGhpbmcgdG8gZG8g Ki8KKyAgICAgICAgaWYgKHN0cmVhbV9pZHggPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg ICAgfQorCisgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3RyZWFtX2lkeF07CisKKyAgICAvKiBnZXQg dGhlIGNob3NlbiBzdHJlYW0ncyB0YWlsIHRpbWVzdGFtcCAqLworICAgIGZvciAoc2l6ZV90IGkg PSAwOyB0YWlsX3RzID09IEFWX05PUFRTX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgICAgICAg IGF2X2ZpZm9fcGVlayhzdC0+ZmlmbywgJmZyYW1lLCAxLCBpKSA+PSAwOyBpKyspCisgICAgICAg IHRhaWxfdHMgPSBmcmFtZV90cyhzcSwgZnJhbWUpOworCisgICAgLyogb3ZlcmZsb3cgdHJpZ2dl cnMgd2hlbiB0aGUgdGFpbCBpcyBvdmVyIDEwIHNlY29uZHMgYmVoaW5kIHRoZSBoZWFkICovCisg ICAgaWYgKHRhaWxfdHMgPT0gQVZfTk9QVFNfVkFMVUUgfHwgdGFpbF90cyA+PSBzdC0+aGVhZF90 cyB8fAorICAgICAgICBhdl9yZXNjYWxlX3Eoc3QtPmhlYWRfdHMgLSB0YWlsX3RzLCBzdC0+dGIs IEFWX1RJTUVfQkFTRV9RKSA8IHNxLT5idWZfc2l6ZV91cykKKyAgICAgICAgcmV0dXJuIDA7CisK KyAgICAvKiBzaWduYWwgYSBmYWtlIHRpbWVzdGFtcCBmb3IgYWxsIHN0cmVhbXMgdGhhdCBwcmV2 ZW50IHRhaWxfdHMgZnJvbSBiZWluZyBvdXRwdXQgKi8KKyAgICB0YWlsX3RzKys7CisgICAgZm9y ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAg IFN5bmNRdWV1ZVN0cmVhbSAqc3QxID0gJnNxLT5zdHJlYW1zW2ldOworICAgICAgICBpbnQ2NF90 IHRzOworCisgICAgICAgIGlmIChzdCA9PSBzdDEgfHwgc3QxLT5maW5pc2hlZCB8fAorICAgICAg ICAgICAgKHN0MS0+aGVhZF90cyAhPSBBVl9OT1BUU19WQUxVRSAmJgorICAgICAgICAgICAgIGF2 X2NvbXBhcmVfdHModGFpbF90cywgc3QtPnRiLCBzdDEtPmhlYWRfdHMsIHN0MS0+dGIpIDw9IDAp KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgdHMgPSBhdl9yZXNjYWxlX3EodGFp bF90cywgc3QtPnRiLCBzdDEtPnRiKTsKKyAgICAgICAgaWYgKHN0MS0+aGVhZF90cyAhPSBBVl9O T1BUU19WQUxVRSkKKyAgICAgICAgICAgIHRzID0gRkZNQVgoc3QxLT5oZWFkX3RzICsgMSwgdHMp OworCisgICAgICAgIHN0cmVhbV91cGRhdGVfdHMoc3EsIGksIHRzKTsKKyAgICB9CisKKyAgICBy ZXR1cm4gMTsKK30KKworaW50IHNxX3NlbmQoU3luY1F1ZXVlICpzcSwgdW5zaWduZWQgaW50IHN0 cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIFN5bmNRdWV1ZVN0cmVhbSAq c3Q7CisgICAgU3luY1F1ZXVlRnJhbWUgZHN0OworICAgIGludDY0X3QgdHM7CisgICAgaW50IHJl dDsKKworICAgIGF2X2Fzc2VydDAoc3RyZWFtX2lkeCA8IHNxLT5uYl9zdHJlYW1zKTsKKyAgICBz dCA9ICZzcS0+c3RyZWFtc1tzdHJlYW1faWR4XTsKKworICAgIGF2X2Fzc2VydDAoc3QtPnRiLm51 bSA+IDAgJiYgc3QtPnRiLmRlbiA+IDApOworCisgICAgaWYgKGZyYW1lX251bGwoc3EsIGZyYW1l KSkgeworICAgICAgICBmaW5pc2hfc3RyZWFtKHNxLCBzdHJlYW1faWR4KTsKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorICAgIGlmIChzdC0+ZmluaXNoZWQpCisgICAgICAgIHJldHVybiBBVkVS Uk9SX0VPRjsKKworICAgIHJldCA9IG9ianBvb2xfZ2V0KHNxLT5wb29sLCAodm9pZCoqKSZkc3Qp OworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgZnJhbWVfbW92 ZShzcSwgZHN0LCBmcmFtZSk7CisKKyAgICB0cyA9IGZyYW1lX3RzKHNxLCBkc3QpOworCisgICAg cmV0ID0gYXZfZmlmb193cml0ZShzdC0+ZmlmbywgJmRzdCwgMSk7CisgICAgaWYgKHJldCA8IDAp IHsKKyAgICAgICAgZnJhbWVfbW92ZShzcSwgZnJhbWUsIGRzdCk7CisgICAgICAgIG9ianBvb2xf cmVsZWFzZShzcS0+cG9vbCwgKHZvaWQqKikmZHN0KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAg ICB9CisKKyAgICBzdHJlYW1fdXBkYXRlX3RzKHNxLCBzdHJlYW1faWR4LCB0cyk7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludCByZWNlaXZlX2Zvcl9zdHJlYW0oU3luY1F1ZXVlICpz cSwgdW5zaWduZWQgaW50IHN0cmVhbV9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTeW5jUXVldWVGcmFtZSBmcmFtZSkKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0gKnN0X2hlYWQg PSBzcS0+aGVhZF9zdHJlYW0gPj0gMCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnNxLT5zdHJlYW1zW3NxLT5oZWFkX3N0cmVhbV0gOiBOVUxMOworICAgIFN5bmNRdWV1ZVN0cmVh bSAqc3Q7CisKKyAgICBhdl9hc3NlcnQwKHN0cmVhbV9pZHggPCBzcS0+bmJfc3RyZWFtcyk7Cisg ICAgc3QgPSAmc3EtPnN0cmVhbXNbc3RyZWFtX2lkeF07CisKKyAgICBpZiAoYXZfZmlmb19jYW5f cmVhZChzdC0+ZmlmbykpIHsKKyAgICAgICAgU3luY1F1ZXVlRnJhbWUgcGVlazsKKyAgICAgICAg aW50NjRfdCB0czsKKyAgICAgICAgaW50IGNtcCA9IDE7CisKKyAgICAgICAgYXZfZmlmb19wZWVr KHN0LT5maWZvLCAmcGVlaywgMSwgMCk7CisgICAgICAgIHRzID0gZnJhbWVfdHMoc3EsIHBlZWsp OworCisgICAgICAgIC8qIGNoZWNrIGlmIHRoaXMgc3RyZWFtJ3MgdGFpbCB0aW1lc3RhbXAgZG9l cyBub3Qgb3ZlcnRha2UKKyAgICAgICAgICogdGhlIG92ZXJhbGwgcXVldWUgaGVhZCAqLworICAg ICAgICBpZiAodHMgIT0gQVZfTk9QVFNfVkFMVUUgJiYgc3RfaGVhZCkKKyAgICAgICAgICAgIGNt cCA9IGF2X2NvbXBhcmVfdHModHMsIHN0LT50Yiwgc3RfaGVhZC0+aGVhZF90cywgc3RfaGVhZC0+ dGIpOworCisgICAgICAgIC8qIFdlIGNhbiByZWxlYXNlIGZyYW1lcyB0aGF0IGRvIG5vdCBlbmQg YWZ0ZXIgdGhlIHF1ZXVlIGhlYWQuCisgICAgICAgICAqIEZyYW1lcyB3aXRoIG5vIHRpbWVzdGFt cHMgYXJlIGp1c3QgcGFzc2VkIHRocm91Z2ggd2l0aCBubyBjb25kaXRpb25zLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKGNtcCA8PSAwIHx8IHRzID09IEFWX05PUFRTX1ZBTFVFKSB7CisgICAg ICAgICAgICBmcmFtZV9tb3ZlKHNxLCBmcmFtZSwgcGVlayk7CisgICAgICAgICAgICBvYmpwb29s X3JlbGVhc2Uoc3EtPnBvb2wsICh2b2lkKiopJnBlZWspOworICAgICAgICAgICAgYXZfZmlmb19k cmFpbjIoc3QtPmZpZm8sIDEpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICByZXR1cm4gKHNxLT5maW5pc2hlZCB8fCAoc3QtPmZpbmlzaGVkICYmICFhdl9m aWZvX2Nhbl9yZWFkKHN0LT5maWZvKSkpID8KKyAgICAgICAgICAgIEFWRVJST1JfRU9GIDogQVZF UlJPUihFQUdBSU4pOworfQorCitzdGF0aWMgaW50IHJlY2VpdmVfaW50ZXJuYWwoU3luY1F1ZXVl ICpzcSwgaW50IHN0cmVhbV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIGludCBu Yl9lb2YgPSAwOworICAgIGludCByZXQ7CisKKyAgICAvKiByZWFkIGEgZnJhbWUgZm9yIGEgc3Bl Y2lmaWMgc3RyZWFtICovCisgICAgaWYgKHN0cmVhbV9pZHggPj0gMCkgeworICAgICAgICByZXQg PSByZWNlaXZlX2Zvcl9zdHJlYW0oc3EsIHN0cmVhbV9pZHgsIGZyYW1lKTsKKyAgICAgICAgcmV0 dXJuIChyZXQgPCAwKSA/IHJldCA6IHN0cmVhbV9pZHg7CisgICAgfQorCisgICAgLyogcmVhZCBh IGZyYW1lIGZvciBhbnkgc3RyZWFtIHdpdGggYXZhaWxhYmxlIG91dHB1dCAqLworICAgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3EtPm5iX3N0cmVhbXM7IGkrKykgeworICAgICAgICBy ZXQgPSByZWNlaXZlX2Zvcl9zdHJlYW0oc3EsIGksIGZyYW1lKTsKKyAgICAgICAgaWYgKHJldCA9 PSBBVkVSUk9SX0VPRiB8fCByZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7CisgICAgICAgICAgICBu Yl9lb2YgKz0gKHJldCA9PSBBVkVSUk9SX0VPRik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorICAgICAgICByZXR1cm4gKHJldCA8IDApID8gcmV0IDogaTsKKyAgICB9CisKKyAg ICByZXR1cm4gKG5iX2VvZiA9PSBzcS0+bmJfc3RyZWFtcykgPyBBVkVSUk9SX0VPRiA6IEFWRVJS T1IoRUFHQUlOKTsKK30KKworaW50IHNxX3JlY2VpdmUoU3luY1F1ZXVlICpzcSwgaW50IHN0cmVh bV9pZHgsIFN5bmNRdWV1ZUZyYW1lIGZyYW1lKQoreworICAgIGludCByZXQgPSByZWNlaXZlX2lu dGVybmFsKHNxLCBzdHJlYW1faWR4LCBmcmFtZSk7CisKKyAgICAvKiB0cnkgYWdhaW4gaWYgdGhl IHF1ZXVlIG92ZXJmbG93ZWQgYW5kIHRyaWdnZXJlZCBhIGZha2UgaGVhcnRiZWF0CisgICAgICog Zm9yIGxhZ2dpbmcgc3RyZWFtcyAqLworICAgIGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pICYm IG92ZXJmbG93X2hlYXJ0YmVhdChzcSwgc3RyZWFtX2lkeCkpCisgICAgICAgIHJldCA9IHJlY2Vp dmVfaW50ZXJuYWwoc3EsIHN0cmVhbV9pZHgsIGZyYW1lKTsKKworICAgIHJldHVybiByZXQ7Cit9 CisKK2ludCBzcV9hZGRfc3RyZWFtKFN5bmNRdWV1ZSAqc3EpCit7CisgICAgU3luY1F1ZXVlU3Ry ZWFtICp0bXAsICpzdDsKKworICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJyYXkoc3EtPnN0cmVhbXMs IHNxLT5uYl9zdHJlYW1zICsgMSwgc2l6ZW9mKCpzcS0+c3RyZWFtcykpOworICAgIGlmICghdG1w KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIHNxLT5zdHJlYW1zID0gdG1w OworCisgICAgc3QgPSAmc3EtPnN0cmVhbXNbc3EtPm5iX3N0cmVhbXNdOworICAgIG1lbXNldChz dCwgMCwgc2l6ZW9mKCpzdCkpOworCisgICAgc3QtPmZpZm8gPSBhdl9maWZvX2FsbG9jMigxLCBz aXplb2YoU3luY1F1ZXVlRnJhbWUpLCBBVl9GSUZPX0ZMQUdfQVVUT19HUk9XKTsKKyAgICBpZiAo IXN0LT5maWZvKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgLyogd2Ug c2V0IGEgdmFsaWQgZGVmYXVsdCwgc28gdGhhdCBhIHBhdGhvbG9naWNhbCBzdHJlYW0gdGhhdCBu ZXZlcgorICAgICAqIHJlY2VpdmVzIGV2ZW4gYSByZWFsIHRpbWViYXNlIChhbmQgbm8gZnJhbWVz KSB3b24ndCBzdGFsbCBhbGwgb3RoZXIKKyAgICAgKiBzdHJlYW1zIGZvcmV2ZXI7IGNmLiBvdmVy Zmxvd19oZWFydGJlYXQoKSAqLworICAgIHN0LT50YiAgICAgID0gKEFWUmF0aW9uYWwpeyAxLCAx IH07CisgICAgc3QtPmhlYWRfdHMgPSBBVl9OT1BUU19WQUxVRTsKKworICAgIHJldHVybiBzcS0+ bmJfc3RyZWFtcysrOworfQorCit2b2lkIHNxX3NldF90YihTeW5jUXVldWUgKnNxLCB1bnNpZ25l ZCBpbnQgc3RyZWFtX2lkeCwgQVZSYXRpb25hbCB0YikKK3sKKyAgICBTeW5jUXVldWVTdHJlYW0g KnN0OworCisgICAgYXZfYXNzZXJ0MChzdHJlYW1faWR4IDwgc3EtPm5iX3N0cmVhbXMpOworICAg IHN0ID0gJnNxLT5zdHJlYW1zW3N0cmVhbV9pZHhdOworCisgICAgYXZfYXNzZXJ0MCghYXZfZmlm b19jYW5fcmVhZChzdC0+ZmlmbykpOworCisgICAgaWYgKHN0LT5oZWFkX3RzICE9IEFWX05PUFRT X1ZBTFVFKQorICAgICAgICBzdC0+aGVhZF90cyA9IGF2X3Jlc2NhbGVfcShzdC0+aGVhZF90cywg c3QtPnRiLCB0Yik7CisKKyAgICBzdC0+dGIgPSB0YjsKK30KKworU3luY1F1ZXVlICpzcV9hbGxv YyhlbnVtIFN5bmNRdWV1ZVR5cGUgdHlwZSwgaW50NjRfdCBidWZfc2l6ZV91cykKK3sKKyAgICBT eW5jUXVldWUgKnNxID0gYXZfbWFsbG9jeihzaXplb2YoKnNxKSk7CisKKyAgICBpZiAoIXNxKQor ICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNxLT50eXBlICAgICAgICAgICAgICAgICA9IHR5 cGU7CisgICAgc3EtPmJ1Zl9zaXplX3VzICAgICAgICAgID0gYnVmX3NpemVfdXM7CisKKyAgICBz cS0+aGVhZF9zdHJlYW0gICAgICAgICAgPSAtMTsKKyAgICBzcS0+aGVhZF9maW5pc2hlZF9zdHJl YW0gPSAtMTsKKworICAgIHNxLT5wb29sID0gKHR5cGUgPT0gU1lOQ19RVUVVRV9QQUNLRVRTKSA/ IG9ianBvb2xfYWxsb2NfcGFja2V0cygpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvYmpwb29sX2FsbG9jX2ZyYW1lcygpOworICAgIGlmICghc3EtPnBv b2wpIHsKKyAgICAgICAgYXZfZnJlZXAoJnNxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg fQorCisgICAgcmV0dXJuIHNxOworfQorCit2b2lkIHNxX2ZyZWUoU3luY1F1ZXVlICoqcHNxKQor eworICAgIFN5bmNRdWV1ZSAqc3EgPSAqcHNxOworCisgICAgaWYgKCFzcSkKKyAgICAgICAgcmV0 dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcS0+bmJfc3RyZWFtczsg aSsrKSB7CisgICAgICAgIFN5bmNRdWV1ZUZyYW1lIGZyYW1lOworICAgICAgICB3aGlsZSAoYXZf Zmlmb19yZWFkKHNxLT5zdHJlYW1zW2ldLmZpZm8sICZmcmFtZSwgMSkgPj0gMCkKKyAgICAgICAg ICAgIG9ianBvb2xfcmVsZWFzZShzcS0+cG9vbCwgKHZvaWQqKikmZnJhbWUpOworCisgICAgICAg IGF2X2ZpZm9fZnJlZXAyKCZzcS0+c3RyZWFtc1tpXS5maWZvKTsKKyAgICB9CisKKyAgICBhdl9m cmVlcCgmc3EtPnN0cmVhbXMpOworCisgICAgb2JqcG9vbF9mcmVlKCZzcS0+cG9vbCk7CisKKyAg ICBhdl9mcmVlcChwc3EpOworfQpkaWZmIC0tZ2l0IGEvZmZ0b29scy9zeW5jX3F1ZXVlLmggYi9m ZnRvb2xzL3N5bmNfcXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5lMDg3ODBiN2JmCi0tLSAvZGV2L251bGwKKysrIGIvZmZ0b29scy9zeW5jX3F1ZXVlLmgKQEAg LTAsMCArMSwxMDAgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgor ICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKwor I2lmbmRlZiBGRlRPT0xTX1NZTkNfUVVFVUVfSAorI2RlZmluZSBGRlRPT0xTX1NZTkNfUVVFVUVf SAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlICJsaWJhdmNvZGVjL3BhY2tldC5o IgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZyYW1lLmgiCisKK2VudW0gU3luY1F1ZXVlVHlwZSB7 CisgICAgU1lOQ19RVUVVRV9QQUNLRVRTLAorICAgIFNZTkNfUVVFVUVfRlJBTUVTLAorfTsKKwor dHlwZWRlZiB1bmlvbiBTeW5jUXVldWVGcmFtZSB7CisgICAgQVZGcmFtZSAgKmY7CisgICAgQVZQ YWNrZXQgKnA7Cit9IFN5bmNRdWV1ZUZyYW1lOworCisjZGVmaW5lIFNRRlJBTUUoZnJhbWUpICgo U3luY1F1ZXVlRnJhbWUpeyAuZiA9IChmcmFtZSkgfSkKKyNkZWZpbmUgU1FQS1QocGt0KSAgICAg KChTeW5jUXVldWVGcmFtZSl7IC5wID0gKHBrdCkgfSkKKwordHlwZWRlZiBzdHJ1Y3QgU3luY1F1 ZXVlIFN5bmNRdWV1ZTsKKworLyoqCisgKiBBbGxvY2F0ZSBhIHN5bmMgcXVldWUgb2YgdGhlIGdp dmVuIHR5cGUuCisgKgorICogQHBhcmFtIGJ1Zl9zaXplX3VzIG1heGltdW0gZHVyYXRpb24gdGhh dCB3aWxsIGJlIGJ1ZmZlcmVkIGluIG1pY3Jvc2Vjb25kcworICovCitTeW5jUXVldWUgKnNxX2Fs bG9jKGVudW0gU3luY1F1ZXVlVHlwZSB0eXBlLCBpbnQ2NF90IGJ1Zl9zaXplX3VzKTsKK3ZvaWQg ICAgICAgc3FfZnJlZShTeW5jUXVldWUgKipzcSk7CisKKy8qKgorICogQWRkIGEgbmV3IHN0cmVh bSB0byB0aGUgc3luYyBxdWV1ZS4KKyAqCisgKiBAcmV0dXJuCisgKiAtIGEgbm9uLW5lZ2F0aXZl IHN0cmVhbSBpbmRleCBvbiBzdWNjZXNzCisgKiAtIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBl cnJvcgorICovCitpbnQgc3FfYWRkX3N0cmVhbShTeW5jUXVldWUgKnNxKTsKKworLyoqCisgKiBT ZXQgdGhlIHRpbWViYXNlIGZvciB0aGUgc3RyZWFtIHdpdGggaW5kZXggc3RyZWFtX2lkeC4gU2hv dWxkIGJlIGNhbGxlZAorICogYmVmb3JlIHNlbmRpbmcgYW55IGZyYW1lcyBmb3IgdGhpcyBzdHJl YW0uCisgKi8KK3ZvaWQgc3Ffc2V0X3RiKFN5bmNRdWV1ZSAqc3EsIHVuc2lnbmVkIGludCBzdHJl YW1faWR4LCBBVlJhdGlvbmFsIHRiKTsKKworLyoqCisgKiBTdWJtaXQgYSBmcmFtZSBmb3IgdGhl IHN0cmVhbSB3aXRoIGluZGV4IHN0cmVhbV9pZHguCisgKgorICogT24gc3VjY2VzcywgdGhlIHN5 bmMgcXVldWUgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBmcmFtZSBhbmQgd2lsbCByZXNldCB0aGUK KyAqIGNvbnRlbnRzIG9mIHRoZSBzdXBwbGllZCBmcmFtZS4gT24gZmFpbHVyZSwgdGhlIGZyYW1l IHJlbWFpbnMgb3duZWQgYnkgdGhlCisgKiBjYWxsZXIuCisgKgorICogU2VuZGluZyBhIGZyYW1l IHdpdGggTlVMTCBjb250ZW50cyBtYXJrcyB0aGUgc3RyZWFtIGFzIGZpbmlzaGVkLgorICoKKyAq IEByZXR1cm4KKyAqIC0gMCBvbiBzdWNjZXNzCisgKiAtIEFWRVJST1JfRU9GIHdoZW4gbm8gbW9y ZSBmcmFtZXMgc2hvdWxkIGJlIHN1Ym1pdHRlZCBmb3IgdGhpcyBzdHJlYW0KKyAqIC0gYW5vdGhl ciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZQorICovCitpbnQgc3Ffc2VuZChTeW5j UXVldWUgKnNxLCB1bnNpZ25lZCBpbnQgc3RyZWFtX2lkeCwgU3luY1F1ZXVlRnJhbWUgZnJhbWUp OworCisvKioKKyAqIFJlYWQgYSBmcmFtZSBmcm9tIHRoZSBxdWV1ZS4KKyAqCisgKiBAcGFyYW0g c3RyZWFtX2lkeCBpbmRleCBvZiB0aGUgc3RyZWFtIHRvIHJlYWQgYSBmcmFtZSBmb3IuIE1heSBi ZSAtMSwgdGhlbgorICogICAgICAgICAgICAgICAgICAgdHJ5IHRvIHJlYWQgYSBmcmFtZSBmcm9t IGFueSBzdHJlYW0gdGhhdCBpcyByZWFkeSBmb3IKKyAqICAgICAgICAgICAgICAgICAgIG91dHB1 dC4KKyAqIEBwYXJhbSBmcmFtZSBvdXRwdXQgZnJhbWUgd2lsbCBiZSB3cml0dGVuIGhlcmUgb24g c3VjY2Vzcy4gVGhlIGZyYW1lIGlzIG93bmVkCisgKiAgICAgICAgICAgICAgYnkgdGhlIGNhbGxl ci4KKyAqCisgKiBAcmV0dXJuCisgKiAtIGEgbm9uLW5lZ2F0aXZlIGluZGV4IG9mIHRoZSBzdHJl YW0gdG8gd2hpY2ggdGhlIHJldHVybmVkIGZyYW1lIGJlbG9uZ3MKKyAqIC0gQVZFUlJPUihFQUdB SU4pIHdoZW4gbW9yZSBmcmFtZXMgbmVlZCB0byBiZSBzdWJtaXR0ZWQgdG8gdGhlIHF1ZXVlCisg KiAtIEFWRVJST1JfRU9GIHdoZW4gbm8gbW9yZSBmcmFtZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9y IHRoaXMgc3RyZWFtIChmb3IgYW55CisgKiAgICAgICAgICAgICAgIHN0cmVhbSBpZiBzdHJlYW1f aWR4IGlzIC0xKQorICogLSBhbm90aGVyIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZQor ICovCitpbnQgc3FfcmVjZWl2ZShTeW5jUXVldWUgKnNxLCBpbnQgc3RyZWFtX2lkeCwgU3luY1F1 ZXVlRnJhbWUgZnJhbWUpOworCisjZW5kaWYgLy8gRkZUT09MU19TWU5DX1FVRVVFX0gKZGlmZiAt LWdpdCBhL3Rlc3RzL2ZhdGUvZmZtcGVnLm1hayBiL3Rlc3RzL2ZhdGUvZmZtcGVnLm1hawppbmRl eCAxNTRhZjJmYWM4Li4zOGExYWU3ZWQ1IDEwMDY0NAotLS0gYS90ZXN0cy9mYXRlL2ZmbXBlZy5t YWsKKysrIGIvdGVzdHMvZmF0ZS9mZm1wZWcubWFrCkBAIC0xMDUsNyArMTA1LDcgQEAgRkFURV9T QU1QTEVTX0ZGTVBFRy0kKGNhbGwgQUxMWUVTLCBDT0xPUl9GSUxURVIsIFZPQlNVQl9ERU1VWEVS LCBNQVRST1NLQV9ERU1VWEUKIGZhdGUtc2hvcnRlc3Qtc3ViOiBDTUQgPSBlbmNfZGVjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgdm9ic3ViICQoVEFSR0VUX1NBTVBMRVMpL3N1Yi92b2JzdWIuaWR4 IG1hdHJvc2thICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK ICAgICAgICAgIi1maWx0ZXJfY29tcGxleCAnY29sb3I9cz0xeDE6cmF0ZT0xOmR1cmF0aW9uPTQw MCcgLXBpeF9mbXQgcmdiMjQgLWFsbG93X3Jhd192ZncgMSAtYzpzIGNvcHkgLWM6diByYXd2aWRl byIgIFwKLSAgICAgICAgZnJhbWVjcmMgIi1tYXAgMCAtYyBjb3B5IC1zaG9ydGVzdCIKKyAgICAg ICAgZnJhbWVjcmMgIi1tYXAgMCAtYyBjb3B5IC1zaG9ydGVzdCAtc2hvcnRlc3RfYnVmX2R1cmF0 aW9uIDQwIgogCiAjIEJhc2ljIHRlc3QgZm9yIGZpeF9zdWJfZHVyYXRpb24sIHdoaWNoIGNhbGN1 bGF0ZXMgZHVyYXRpb24gYmFzZWQgb24gdGhlCiAjIGZvbGxvd2luZyBzdWJ0aXRsZSdzIHB0cy4K ZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2NvcHktc2hvcnRlc3QxIGIvdGVzdHMvcmVmL2Zh dGUvY29weS1zaG9ydGVzdDEKaW5kZXggNTAzODk3M2U0ZS4uODdiZWU0YzQxZiAxMDA2NDQKLS0t IGEvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDEKKysrIGIvdGVzdHMvcmVmL2ZhdGUvY29w eS1zaG9ydGVzdDEKQEAgLTEyMCw0ICsxMjAsMyBAQAogMCwgICAgICA5ODMwNCwgICAgICA5ODMw NCwgICAgIDIwNDgsICAgIDExMTgyLCBlMzVhMmFiODQ2MDI5ZWZmZGJjYTBlNDM2Mzk3MTdmMgog MSwgICAgICA4NTc2MCwgICAgICA4NTc2MCwgICAgIDE1MzYsICAgICAgNDE4LCBjZjUyZWE3ZmM2 OWU0YzViYzhmNzViMzU0ZGZlNjBhZgogMCwgICAgIDEwMDM1MiwgICAgIDEwMDM1MiwgICAgIDIw NDgsICAgICAxNDIzLCBmNDgwMjcyYzdkMGI5NzgzNGJjOGVhMzZjY2VjYTYxZAotMSwgICAgICA4 NzI5NiwgICAgICA4NzI5NiwgICAgIDE1MzYsICAgICAgNDE4LCA3OGFiMjI2NTdhMWI2YzhhMGU1 Yjg2MTJjZWI4MDgxZApkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvY29weS1zaG9ydGVzdDIg Yi90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgppbmRleCA1MDM4OTczZTRlLi44N2JlZTRj NDFmIDEwMDY0NAotLS0gYS90ZXN0cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgorKysgYi90ZXN0 cy9yZWYvZmF0ZS9jb3B5LXNob3J0ZXN0MgpAQCAtMTIwLDQgKzEyMCwzIEBACiAwLCAgICAgIDk4 MzA0LCAgICAgIDk4MzA0LCAgICAgMjA0OCwgICAgMTExODIsIGUzNWEyYWI4NDYwMjllZmZkYmNh MGU0MzYzOTcxN2YyCiAxLCAgICAgIDg1NzYwLCAgICAgIDg1NzYwLCAgICAgMTUzNiwgICAgICA0 MTgsIGNmNTJlYTdmYzY5ZTRjNWJjOGY3NWIzNTRkZmU2MGFmCiAwLCAgICAgMTAwMzUyLCAgICAg MTAwMzUyLCAgICAgMjA0OCwgICAgIDE0MjMsIGY0ODAyNzJjN2QwYjk3ODM0YmM4ZWEzNmNjZWNh NjFkCi0xLCAgICAgIDg3Mjk2LCAgICAgIDg3Mjk2LCAgICAgMTUzNiwgICAgICA0MTgsIDc4YWIy MjY1N2ExYjZjOGEwZTViODYxMmNlYjgwODFkCmRpZmYgLS1naXQgYS90ZXN0cy9yZWYvZmF0ZS9z aG9ydGVzdC1zdWIgYi90ZXN0cy9yZWYvZmF0ZS9zaG9ydGVzdC1zdWIKaW5kZXggM2IyODg5ODE3 Ny4uZmYyMjNkMGZhMCAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvc2hvcnRlc3Qtc3ViCisr KyBiL3Rlc3RzL3JlZi9mYXRlL3Nob3J0ZXN0LXN1YgpAQCAtMSw0ICsxLDQgQEAKIDUyYmMzZDZh MGM4MGU2MzkwOTVhMmMyOGRhNGVmNDJjICp0ZXN0cy9kYXRhL2ZhdGUvc2hvcnRlc3Qtc3ViLm1h dHJvc2thCiAxMzkyNDYgdGVzdHMvZGF0YS9mYXRlL3Nob3J0ZXN0LXN1Yi5tYXRyb3NrYQotZDcx ZjVkMzU5ZWY3ODhlYTY4OTQxNWJjMWU0YTkwZGYgKnRlc3RzL2RhdGEvZmF0ZS9zaG9ydGVzdC1z dWIub3V0LmZyYW1lY3JjCi1zdGRkZXY6MTE1NDEuMTIgUFNOUjogMTUuMDggTUFYRElGRjoyMjg1 NCBieXRlczogICAgIDI1OTEvICAgIDI2MDU1Cis4NzZhYzNmYTUyZTQ2NzA1MGFiODQzOTY5ZDRj ZjM0MyAqdGVzdHMvZGF0YS9mYXRlL3Nob3J0ZXN0LXN1Yi5vdXQuZnJhbWVjcmMKK3N0ZGRldjox MTU0MS4xMiBQU05SOiAxNS4wOCBNQVhESUZGOjIyODU0IGJ5dGVzOiAgICAgMjU5MS8gICAgMjM3 MzUKLS0gCjIuMzQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1 YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K