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 345BB4B127 for ; Mon, 1 Jul 2024 13:04:13 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2C0C668D78D; Mon, 1 Jul 2024 16:04:11 +0300 (EEST) Received: from 6.mo561.mail-out.ovh.net (6.mo561.mail-out.ovh.net [188.165.43.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EC19468D759 for ; Mon, 1 Jul 2024 16:04:04 +0300 (EEST) Received: from director8.ghost.mail-out.ovh.net (unknown [10.109.148.178]) by mo561.mail-out.ovh.net (Postfix) with ESMTP id 4WCR7m1QHqz1PsJ for ; Mon, 1 Jul 2024 13:04:04 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-4lt9g (unknown [10.110.168.164]) by director8.ghost.mail-out.ovh.net (Postfix) with ESMTPS id BE8D71FE76 for ; Mon, 1 Jul 2024 13:04:03 +0000 (UTC) Received: from courmont.net ([37.59.142.95]) by ghost-submission-6684bf9d7b-4lt9g with ESMTPSA id 5YPgKEOpgmbxGwoAQj/5vA (envelope-from ) for ; Mon, 01 Jul 2024 13:04:03 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-95G0013096b7b2-229a-48df-b9c8-2d5233344d5c, CA0AE398130B49AB275617472B856E418F3199BC) smtp.auth=postmaster@courmont.net X-OVh-ClientIp: 87.95.0.83 Date: Mon, 01 Jul 2024 16:04:00 +0300 From: =?ISO-8859-1?Q?R=E9mi_Denis-Courmont?= To: FFmpeg development discussions and patches User-Agent: K-9 Mail for Android In-Reply-To: References: Message-ID: <8EADD83B-FB16-4449-BB76-6F50353E14E1@remlab.net> MIME-Version: 1.0 X-Ovh-Tracer-Id: 12196873694999222777 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeeftddrudefgdehlecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpeffhffvufgfjghfkfggtgfgsehtqhhmtddtreejnecuhfhrohhmpeftrohmihcuffgvnhhishdqvehouhhrmhhonhhtuceorhgvmhhisehrvghmlhgrsgdrnhgvtheqnecuggftrfgrthhtvghrnhepgfeulefhfeffgeevgeetgeeuheeguddvffeltdejgeetuddvtdejhffhgeetvdejnecukfhppeduvdejrddtrddtrddupdekjedrleehrddtrdekfedpfeejrdehledrudegvddrleehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehrvghmihesrhgvmhhlrggsrdhnvghtpdhnsggprhgtphhtthhopedupdhrtghpthhtohepfhhfmhhpvghgqdguvghvvghlsehffhhmphgvghdrohhrghdpoffvtefjohhsthepmhhoheeiuddpmhhouggvpehsmhhtphhouhht Subject: Re: [FFmpeg-devel] [PATCH 06/13] avcodec/mpv_reconstruct_mb_template: Merge template into its users 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: CgpMZSAxIGp1aWxsZXQgMjAyNCAxNToxNjowMyBHTVQrMDM6MDAsIEFuZHJlYXMgUmhlaW5oYXJk dCA8YW5kcmVhcy5yaGVpbmhhcmR0QG91dGxvb2suY29tPiBhIMOpY3JpdMKgOgo+QSBsYXJnZSBw YXJ0IG9mIHRoaXMgdGVtcGxhdGUgaXMgZGVjb2Rlci1vbmx5LiBUaGlzIG1ha2VzCj50aGUgY29t cGxleGl0eSBvZiB0aGUgSVNfRU5DT0RFUi1jaGVja3Mgbm90IHdvcnRoIGl0Lgo+U28gc2ltcGx5 IG1lcmdlIHRoZSB0ZW1wbGF0ZSBpbnRvIGJvdGggaXRzIHVzZXJzLgo+Cj5TaWduZWQtb2ZmLWJ5 OiBBbmRyZWFzIFJoZWluaGFyZHQgPGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4KPi0t LQo+IGxpYmF2Y29kZWMvbXBlZ3ZpZGVvX2RlYy5jICAgICAgICAgICAgICAgfCAyMTggKysrKysr KysrKysrKysrKystCj4gbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMgICAgICAgICAgICAgICB8 ICA4MSArKysrKystCj4gbGliYXZjb2RlYy9tcHZfcmVjb25zdHJ1Y3RfbWJfdGVtcGxhdGUuYyB8 IDI3MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IDMgZmlsZXMgY2hhbmdlZCwgMjk0IGluc2Vy dGlvbnMoKyksIDI3NyBkZWxldGlvbnMoLSkKPiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy9tcHZfcmVjb25zdHJ1Y3RfbWJfdGVtcGxhdGUuYwo+Cj5kaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9tcGVndmlkZW9fZGVjLmMgYi9saWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYwo+aW5kZXggMWNh YjEwODkzNS4uMjIyMmQ1MDI4MyAxMDA2NDQKPi0tLSBhL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvX2Rl Yy5jCj4rKysgYi9saWJhdmNvZGVjL21wZWd2aWRlb19kZWMuYwo+QEAgLTkwNCwxMSArOTA0LDIy NSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkX2RjdChNcGVnRW5jQ29udGV4dCAqcywKPiAgICAg fQo+IH0KPiAKPi0jZGVmaW5lIElTX0VOQ09ERVIgMAo+LSNpbmNsdWRlICJtcHZfcmVjb25zdHJ1 Y3RfbWJfdGVtcGxhdGUuYyIKPisvKiBwdXQgYmxvY2tbXSB0byBkZXN0W10gKi8KPitzdGF0aWMg aW5saW5lIHZvaWQgcHV0X2RjdChNcGVnRW5jQ29udGV4dCAqcywKPisgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3QgKmRlc3QsIGludCBsaW5l X3NpemUsIGludCBxc2NhbGUpCj4rewo+KyAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYShzLCBi bG9jaywgaSwgcXNjYWxlKTsKPisgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0LCBsaW5lX3NpemUs IGJsb2NrKTsKPit9CgpCVFcsIHNob3VsZG4ndCB0aGUgcHV0L2FkZCBiZSBmb2xkZWQgaW50byB0 aGUgbW9yZSBzcGVjaWZpYyBjYWxsYmFjaywgYXMgbW9zdCBvdGhlciBkZWNvZGVyIERTUCBmdW5j dGlvbnMgc2VlbXMgdG8gd29yaz8KCihObyBvYmplY3Rpb25zIGVpdGhlciB3YXkuKQoKPisKPitz dGF0aWMgaW5saW5lIHZvaWQgYWRkX2RlcXVhbnRfZGN0KE1wZWdFbmNDb250ZXh0ICpzLAo+KyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3QgKmJsb2NrLCBpbnQgaSwgdWludDhfdCAq ZGVzdCwgaW50IGxpbmVfc2l6ZSwgaW50IHFzY2FsZSkKPit7Cj4rICAgIGlmIChzLT5ibG9ja19s YXN0X2luZGV4W2ldID49IDApIHsKPisgICAgICAgIHMtPmRjdF91bnF1YW50aXplX2ludGVyKHMs IGJsb2NrLCBpLCBxc2NhbGUpOwo+Kwo+KyAgICAgICAgcy0+aWRzcC5pZGN0X2FkZChkZXN0LCBs aW5lX3NpemUsIGJsb2NrKTsKPisgICAgfQo+K30KPisKPisjZGVmaW5lIE5PVF9NUEVHMTJfSDI2 MSAgICAgICAgMAo+KyNkZWZpbmUgTUFZX0JFX01QRUcxMl9IMjYxICAgICAxCj4rI2RlZmluZSBE RUZJTklURUxZX01QRUcxMl9IMjYxIDIKPisKPisvKiBnZW5lcmljIGZ1bmN0aW9uIGNhbGxlZCBh ZnRlciBhIG1hY3JvYmxvY2sgaGFzIGJlZW4gcGFyc2VkIGJ5IHRoZSBkZWNvZGVyLgo+Kwo+KyAg IEltcG9ydGFudCB2YXJpYWJsZXMgdXNlZDoKPisgICBzLT5tYl9pbnRyYSA6IHRydWUgaWYgaW50 cmEgbWFjcm9ibG9jawo+KyAgIHMtPm12X2RpciAgIDogbW90aW9uIHZlY3RvciBkaXJlY3Rpb24K PisgICBzLT5tdl90eXBlICA6IG1vdGlvbiB2ZWN0b3IgdHlwZQo+KyAgIHMtPm12ICAgICAgIDog bW90aW9uIHZlY3Rvcgo+KyAgIHMtPmludGVybGFjZWRfZGN0IDogdHJ1ZSBpZiBpbnRlcmxhY2Vk IGRjdCB1c2VkIChtcGVnMikKPisgKi8KPitzdGF0aWMgYXZfYWx3YXlzX2lubGluZQo+K3ZvaWQg bXB2X3JlY29uc3RydWN0X21iX2ludGVybmFsKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJs b2NrWzEyXVs2NF0sCj4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvd3Jl c19mbGFnLCBpbnQgaXNfbXBlZzEyKQo+K3sKPisjZGVmaW5lIElTX01QRUcxMl9IMjYxKHMpIChp c19tcGVnMTIgPT0gTUFZX0JFX01QRUcxMl9IMjYxID8gKChzKS0+b3V0X2Zvcm1hdCA8PSBGTVRf SDI2MSkgOiBpc19tcGVnMTIpCj4rICAgIHsKPisgICAgICAgIHVpbnQ4X3QgKmRlc3RfeSA9IHMt PmRlc3RbMF0sICpkZXN0X2NiID0gcy0+ZGVzdFsxXSwgKmRlc3RfY3IgPSBzLT5kZXN0WzJdOwo+ KyAgICAgICAgaW50IGRjdF9saW5lc2l6ZSwgZGN0X29mZnNldDsKPisgICAgICAgIGNvbnN0IGlu dCBsaW5lc2l6ZSAgID0gcy0+Y3VyX3BpYy5saW5lc2l6ZVswXTsgLy9ub3Qgcy0+bGluZXNpemUg YXMgdGhpcyB3b3VsZCBiZSB3cm9uZyBmb3IgZmllbGQgcGljcwo+KyAgICAgICAgY29uc3QgaW50 IHV2bGluZXNpemUgPSBzLT5jdXJfcGljLmxpbmVzaXplWzFdOwo+KyAgICAgICAgY29uc3QgaW50 IGJsb2NrX3NpemUgPSBsb3dyZXNfZmxhZyA/IDggPj4gcy0+YXZjdHgtPmxvd3JlcyA6IDg7Cj4r Cj4rICAgICAgICBkY3RfbGluZXNpemUgPSBsaW5lc2l6ZSA8PCBzLT5pbnRlcmxhY2VkX2RjdDsK PisgICAgICAgIGRjdF9vZmZzZXQgICA9IHMtPmludGVybGFjZWRfZGN0ID8gbGluZXNpemUgOiBs aW5lc2l6ZSAqIGJsb2NrX3NpemU7Cj4rCj4rICAgICAgICBpZiAoIXMtPm1iX2ludHJhKSB7Cj4r ICAgICAgICAgICAgLyogbW90aW9uIGhhbmRsaW5nICovCj4rICAgICAgICAgICAgaWYgKEhBVkVf VEhSRUFEUyAmJiBpc19tcGVnMTIgIT0gREVGSU5JVEVMWV9NUEVHMTJfSDI2MSAmJgo+KyAgICAg ICAgICAgICAgICBzLT5hdmN0eC0+YWN0aXZlX3RocmVhZF90eXBlICYgRkZfVEhSRUFEX0ZSQU1F KSB7Cj4rICAgICAgICAgICAgICAgIGlmIChzLT5tdl9kaXIgJiBNVl9ESVJfRk9SV0FSRCkgewo+ KyAgICAgICAgICAgICAgICAgICAgZmZfdGhyZWFkX3Byb2dyZXNzX2F3YWl0KCZzLT5sYXN0X3Bp Yy5wdHItPnByb2dyZXNzLAo+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvd2VzdF9yZWZlcmVuY2VkX3JvdyhzLCAwKSk7Cj4rICAgICAgICAgICAgICAgIH0K PisgICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewo+KyAg ICAgICAgICAgICAgICAgICAgZmZfdGhyZWFkX3Byb2dyZXNzX2F3YWl0KCZzLT5uZXh0X3BpYy5w dHItPnByb2dyZXNzLAo+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvd2VzdF9yZWZlcmVuY2VkX3JvdyhzLCAxKSk7Cj4rICAgICAgICAgICAgICAgIH0KPisg ICAgICAgICAgICB9Cj4rCj4rICAgICAgICAgICAgaWYgKGxvd3Jlc19mbGFnKSB7Cj4rICAgICAg ICAgICAgICAgIGNvbnN0IGgyNjRfY2hyb21hX21jX2Z1bmMgKm9wX3BpeCA9IHMtPmgyNjRjaHJv bWEucHV0X2gyNjRfY2hyb21hX3BpeGVsc190YWI7Cj4rCj4rICAgICAgICAgICAgICAgIGlmIChz LT5tdl9kaXIgJiBNVl9ESVJfRk9SV0FSRCkgewo+KyAgICAgICAgICAgICAgICAgICAgTVBWX21v dGlvbl9sb3dyZXMocywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCAwLCBzLT5sYXN0X3BpYy5k YXRhLCBvcF9waXgpOwo+KyAgICAgICAgICAgICAgICAgICAgb3BfcGl4ID0gcy0+aDI2NGNocm9t YS5hdmdfaDI2NF9jaHJvbWFfcGl4ZWxzX3RhYjsKPisgICAgICAgICAgICAgICAgfQo+KyAgICAg ICAgICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7Cj4rICAgICAgICAg ICAgICAgICAgICBNUFZfbW90aW9uX2xvd3JlcyhzLCBkZXN0X3ksIGRlc3RfY2IsIGRlc3RfY3Is IDEsIHMtPm5leHRfcGljLmRhdGEsIG9wX3BpeCk7Cj4rICAgICAgICAgICAgICAgIH0KPisgICAg ICAgICAgICB9IGVsc2Ugewo+KyAgICAgICAgICAgICAgICBjb25zdCBvcF9waXhlbHNfZnVuYyAo Km9wX3BpeClbNF07Cj4rICAgICAgICAgICAgICAgIGNvbnN0IHFwZWxfbWNfZnVuYyAoKm9wX3Fw aXgpWzE2XTsKPisKPisgICAgICAgICAgICAgICAgaWYgKChpc19tcGVnMTIgPT0gREVGSU5JVEVM WV9NUEVHMTJfSDI2MSB8fCAhcy0+bm9fcm91bmRpbmcpIHx8IHMtPnBpY3RfdHlwZSA9PSBBVl9Q SUNUVVJFX1RZUEVfQikgewo+KyAgICAgICAgICAgICAgICAgICAgb3BfcGl4ID0gcy0+aGRzcC5w dXRfcGl4ZWxzX3RhYjsKPisgICAgICAgICAgICAgICAgICAgIG9wX3FwaXggPSBzLT5xZHNwLnB1 dF9xcGVsX3BpeGVsc190YWI7Cj4rICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4rICAgICAgICAg ICAgICAgICAgICBvcF9waXggPSBzLT5oZHNwLnB1dF9ub19ybmRfcGl4ZWxzX3RhYjsKPisgICAg ICAgICAgICAgICAgICAgIG9wX3FwaXggPSBzLT5xZHNwLnB1dF9ub19ybmRfcXBlbF9waXhlbHNf dGFiOwo+KyAgICAgICAgICAgICAgICB9Cj4rICAgICAgICAgICAgICAgIGlmIChzLT5tdl9kaXIg JiBNVl9ESVJfRk9SV0FSRCkgewo+KyAgICAgICAgICAgICAgICAgICAgZmZfbXB2X21vdGlvbihz LCBkZXN0X3ksIGRlc3RfY2IsIGRlc3RfY3IsIDAsIHMtPmxhc3RfcGljLmRhdGEsIG9wX3BpeCwg b3BfcXBpeCk7Cj4rICAgICAgICAgICAgICAgICAgICBvcF9waXggID0gcy0+aGRzcC5hdmdfcGl4 ZWxzX3RhYjsKPisgICAgICAgICAgICAgICAgICAgIG9wX3FwaXggPSBzLT5xZHNwLmF2Z19xcGVs X3BpeGVsc190YWI7Cj4rICAgICAgICAgICAgICAgIH0KPisgICAgICAgICAgICAgICAgaWYgKHMt Pm12X2RpciAmIE1WX0RJUl9CQUNLV0FSRCkgewo+KyAgICAgICAgICAgICAgICAgICAgZmZfbXB2 X21vdGlvbihzLCBkZXN0X3ksIGRlc3RfY2IsIGRlc3RfY3IsIDEsIHMtPm5leHRfcGljLmRhdGEs IG9wX3BpeCwgb3BfcXBpeCk7Cj4rICAgICAgICAgICAgICAgIH0KPisgICAgICAgICAgICB9Cj4r Cj4rICAgICAgICAgICAgLyogc2tpcCBkZXF1YW50IC8gaWRjdCBpZiB3ZSBhcmUgcmVhbGx5IGxh dGUgOykgKi8KPisgICAgICAgICAgICBpZiAocy0+YXZjdHgtPnNraXBfaWRjdCkgewo+KyAgICAg ICAgICAgICAgICBpZiggIChzLT5hdmN0eC0+c2tpcF9pZGN0ID49IEFWRElTQ0FSRF9OT05SRUYg JiYgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKQo+KyAgICAgICAgICAgICAgICAg ICB8fChzLT5hdmN0eC0+c2tpcF9pZGN0ID49IEFWRElTQ0FSRF9OT05LRVkgJiYgcy0+cGljdF90 eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JKQo+KyAgICAgICAgICAgICAgICAgICB8fCBzLT5hdmN0 eC0+c2tpcF9pZGN0ID49IEFWRElTQ0FSRF9BTEwpCj4rICAgICAgICAgICAgICAgICAgICByZXR1 cm47Cj4rICAgICAgICAgICAgfQo+Kwo+KyAgICAgICAgICAgIC8qIGFkZCBkY3QgcmVzaWR1ZSAq Lwo+KyAgICAgICAgICAgIGlmICghKElTX01QRUcxMl9IMjYxKHMpIHx8IHMtPm1zbXBlZzRfdmVy c2lvbiAhPSBNU01QNF9VTlVTRUQgfHwKPisgICAgICAgICAgICAgICAgICAocy0+Y29kZWNfaWQg PT0gQVZfQ09ERUNfSURfTVBFRzQgJiYgIXMtPm1wZWdfcXVhbnQpKSkgewo+KyAgICAgICAgICAg ICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbMF0sIDAsIGRlc3RfeSAgICAgICAgICAgICAg ICAgICAgICAgICAgLCBkY3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Cj4rICAgICAgICAgICAgICAg IGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1sxXSwgMSwgZGVzdF95ICAgICAgICAgICAgICArIGJs b2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisgICAgICAgICAgICAgICAgYWRk X2RlcXVhbnRfZGN0KHMsIGJsb2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAg ICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICBhZGRfZGVx dWFudF9kY3QocywgYmxvY2tbM10sIDMsIGRlc3RfeSArIGRjdF9vZmZzZXQgKyBibG9ja19zaXpl LCBkY3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Cj4rCj4rICAgICAgICAgICAgICAgIGlmICghQ09O RklHX0dSQVkgfHwgIShzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpKSB7Cj4r ICAgICAgICAgICAgICAgICAgICBhdl9hc3NlcnQyKHMtPmNocm9tYV95X3NoaWZ0KTsKPisgICAg ICAgICAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s0XSwgNCwgZGVzdF9jYiwg dXZsaW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAgICBhZGRf ZGVxdWFudF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2bGluZXNpemUsIHMtPmNocm9t YV9xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICB9Cj4rICAgICAgICAgICAgfSBlbHNlIGlmIChp c19tcGVnMTIgPT0gREVGSU5JVEVMWV9NUEVHMTJfSDI2MSB8fCBsb3dyZXNfZmxhZyB8fCAocy0+ Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfV01WMikpIHsKPisgICAgICAgICAgICAgICAgYWRkX2Rj dChzLCBibG9ja1swXSwgMCwgZGVzdF95ICAgICAgICAgICAgICAgICAgICAgICAgICAsIGRjdF9s aW5lc2l6ZSk7Cj4rICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbMV0sIDEsIGRlc3Rf eSAgICAgICAgICAgICAgKyBibG9ja19zaXplLCBkY3RfbGluZXNpemUpOwo+KyAgICAgICAgICAg ICAgICBhZGRfZGN0KHMsIGJsb2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICAgICAgICAg ICAgICwgZGN0X2xpbmVzaXplKTsKPisgICAgICAgICAgICAgICAgYWRkX2RjdChzLCBibG9ja1sz XSwgMywgZGVzdF95ICsgZGN0X29mZnNldCArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSk7Cj4r Cj4rICAgICAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkgfHwgIShzLT5hdmN0eC0+ZmxhZ3Mg JiBBVl9DT0RFQ19GTEFHX0dSQVkpKSB7Cj4rICAgICAgICAgICAgICAgICAgICBpZiAocy0+Y2hy b21hX3lfc2hpZnQpIHsvL0Nocm9tYTQyMAo+KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9k Y3QocywgYmxvY2tbNF0sIDQsIGRlc3RfY2IsIHV2bGluZXNpemUpOwo+KyAgICAgICAgICAgICAg ICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2bGluZXNpemUpOwo+ KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPisgICAgICAgICAgICAgICAgICAgICAgICAv L2Nocm9tYTQyMgo+KyAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSA9IHV2bGlu ZXNpemUgPDwgcy0+aW50ZXJsYWNlZF9kY3Q7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgZGN0 X29mZnNldCAgID0gcy0+aW50ZXJsYWNlZF9kY3QgPyB1dmxpbmVzaXplIDogdXZsaW5lc2l6ZSpi bG9ja19zaXplOwo+Kwo+KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tb NF0sIDQsIGRlc3RfY2IsIGRjdF9saW5lc2l6ZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAg YWRkX2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgZGN0X2xpbmVzaXplKTsKPisgICAgICAg ICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJsb2NrWzZdLCA2LCBkZXN0X2NiK2RjdF9vZmZz ZXQsIGRjdF9saW5lc2l6ZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2RjdChzLCBi bG9ja1s3XSwgNywgZGVzdF9jcitkY3Rfb2Zmc2V0LCBkY3RfbGluZXNpemUpOwo+KyAgICAgICAg ICAgICAgICAgICAgICAgIGlmICghcy0+Y2hyb21hX3hfc2hpZnQpIHsvL0Nocm9tYTQ0NAo+KyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJsb2NrWzhdLCA4LCBkZXN0X2Ni K2Jsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFkZF9kY3QocywgYmxvY2tbOV0sIDksIGRlc3RfY3IrYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXpl KTsKPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2RjdChzLCBibG9ja1sxMF0sIDEw LCBkZXN0X2NiK2Jsb2NrX3NpemUrZGN0X29mZnNldCwgZGN0X2xpbmVzaXplKTsKPisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWRkX2RjdChzLCBibG9ja1sxMV0sIDExLCBkZXN0X2NyK2Js b2NrX3NpemUrZGN0X29mZnNldCwgZGN0X2xpbmVzaXplKTsKPisgICAgICAgICAgICAgICAgICAg ICAgICB9Cj4rICAgICAgICAgICAgICAgICAgICB9Cj4rICAgICAgICAgICAgICAgIH0gLy9maSBn cmF5Cj4rICAgICAgICAgICAgfSBlbHNlIGlmIChDT05GSUdfV01WMl9ERUNPREVSKSB7Cj4rICAg ICAgICAgICAgICAgIGZmX3dtdjJfYWRkX21iKHMsIGJsb2NrLCBkZXN0X3ksIGRlc3RfY2IsIGRl c3RfY3IpOwo+KyAgICAgICAgICAgIH0KPisgICAgICAgIH0gZWxzZSB7Cj4rICAgICAgICAgICAg LyogT25seSBNUEVHLTQgU2ltcGxlIFN0dWRpbyBQcm9maWxlIGlzIHN1cHBvcnRlZCBpbiA+IDgt Yml0IG1vZGUuCj4rICAgICAgICAgICAgICAgVE9ETzogSW50ZWdyYXRlIDEwLWJpdCBwcm9wZXJs eSBpbnRvIG1wZWd2aWRlby5jIHNvIHRoYXQgRVIgd29ya3MgcHJvcGVybHkgKi8KPisgICAgICAg ICAgICBpZiAoaXNfbXBlZzEyICE9IERFRklOSVRFTFlfTVBFRzEyX0gyNjEgJiYgQ09ORklHX01Q RUc0X0RFQ09ERVIgJiYKPisgICAgICAgICAgICAgICAgLyogcy0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfTVBFRzQgJiYgKi8KPisgICAgICAgICAgICAgICAgcy0+YXZjdHgtPmJpdHNfcGVyX3Jh d19zYW1wbGUgPiA4KSB7Cj4rICAgICAgICAgICAgICAgIGZmX21wZWc0X2RlY29kZV9zdHVkaW8o cywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyLCBibG9ja19zaXplLAo+KyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHV2bGluZXNpemUsIGRjdF9saW5lc2l6ZSwgZGN0X29m ZnNldCk7Cj4rICAgICAgICAgICAgfSBlbHNlIGlmICghSVNfTVBFRzEyX0gyNjEocykpIHsKPisg ICAgICAgICAgICAgICAgLyogZGN0IG9ubHkgaW4gaW50cmEgYmxvY2sgKi8KPisgICAgICAgICAg ICAgICAgcHV0X2RjdChzLCBibG9ja1swXSwgMCwgZGVzdF95ICAgICAgICAgICAgICAgICAgICAg ICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisgICAgICAgICAgICAgICAgcHV0X2Rj dChzLCBibG9ja1sxXSwgMSwgZGVzdF95ICAgICAgICAgICAgICArIGJsb2NrX3NpemUsIGRjdF9s aW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1sy XSwgMiwgZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+ cXNjYWxlKTsKPisgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1szXSwgMywgZGVzdF95 ICsgZGN0X29mZnNldCArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisK PisgICAgICAgICAgICAgICAgaWYgKCFDT05GSUdfR1JBWSB8fCAhKHMtPmF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfR1JBWSkpIHsKPisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jaHJv bWFfeV9zaGlmdCkgewo+KyAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9kY3QocywgYmxvY2tb NF0sIDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+KyAgICAgICAg ICAgICAgICAgICAgICAgIHB1dF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2bGluZXNp emUsIHMtPmNocm9tYV9xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPisg ICAgICAgICAgICAgICAgICAgICAgICBkY3Rfb2Zmc2V0ID4+PTE7Cj4rICAgICAgICAgICAgICAg ICAgICAgICAgZGN0X2xpbmVzaXplID4+PTE7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgcHV0 X2RjdChzLCBibG9ja1s0XSwgNCwgZGVzdF9jYiwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwg cy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBi bG9ja1s1XSwgNSwgZGVzdF9jciwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21h X3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s2XSwg NiwgZGVzdF9jYiArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7 Cj4rICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s3XSwgNywgZGVzdF9j ciArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAg ICAgICAgICAgICAgICB9Cj4rICAgICAgICAgICAgICAgIH0KPisgICAgICAgICAgICB9IGVsc2Ug ewo+KyAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfeSwgICAgICAgICAgICAg ICAgICAgICAgICAgICBkY3RfbGluZXNpemUsIGJsb2NrWzBdKTsKPisgICAgICAgICAgICAgICAg cy0+aWRzcC5pZGN0X3B1dChkZXN0X3kgICAgICAgICAgICAgICsgYmxvY2tfc2l6ZSwgZGN0X2xp bmVzaXplLCBibG9ja1sxXSk7Cj4rICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wdXQoZGVz dF95ICsgZGN0X29mZnNldCwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgYmxvY2tbMl0pOwo+ KyAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfeSArIGRjdF9vZmZzZXQgKyBi bG9ja19zaXplLCBkY3RfbGluZXNpemUsIGJsb2NrWzNdKTsKPisKPisgICAgICAgICAgICAgICAg aWYgKCFDT05GSUdfR1JBWSB8fCAhKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JB WSkpIHsKPisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jaHJvbWFfeV9zaGlmdCkgewo+KyAg ICAgICAgICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wdXQoZGVzdF9jYiwgdXZsaW5lc2l6 ZSwgYmxvY2tbNF0pOwo+KyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wdXQo ZGVzdF9jciwgdXZsaW5lc2l6ZSwgYmxvY2tbNV0pOwo+KyAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKPisgICAgICAgICAgICAgICAgICAgICAgICBkY3RfbGluZXNpemUgPSB1dmxpbmVzaXpl IDw8IHMtPmludGVybGFjZWRfZGN0Owo+KyAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9vZmZz ZXQgICA9IHMtPmludGVybGFjZWRfZGN0ID8gdXZsaW5lc2l6ZSA6IHV2bGluZXNpemUqYmxvY2tf c2l6ZTsKPisKPisgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3Rf Y2IsICAgICAgICAgICAgICBkY3RfbGluZXNpemUsIGJsb2NrWzRdKTsKPisgICAgICAgICAgICAg ICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfY3IsICAgICAgICAgICAgICBkY3RfbGlu ZXNpemUsIGJsb2NrWzVdKTsKPisgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3Rf cHV0KGRlc3RfY2IgKyBkY3Rfb2Zmc2V0LCBkY3RfbGluZXNpemUsIGJsb2NrWzZdKTsKPisgICAg ICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfY3IgKyBkY3Rfb2Zmc2V0 LCBkY3RfbGluZXNpemUsIGJsb2NrWzddKTsKPisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo IXMtPmNocm9tYV94X3NoaWZ0KSB7IC8vQ2hyb21hNDQ0Cj4rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPmlkc3AuaWRjdF9wdXQoZGVzdF9jYiArIGJsb2NrX3NpemUsICAgICAgICAgICAg ICBkY3RfbGluZXNpemUsIGJsb2NrWzhdKTsKPisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cy0+aWRzcC5pZGN0X3B1dChkZXN0X2NyICsgYmxvY2tfc2l6ZSwgICAgICAgICAgICAgIGRjdF9s aW5lc2l6ZSwgYmxvY2tbOV0pOwo+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNw LmlkY3RfcHV0KGRlc3RfY2IgKyBibG9ja19zaXplICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXpl LCBibG9ja1sxMF0pOwo+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3Rf cHV0KGRlc3RfY3IgKyBibG9ja19zaXplICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBibG9j a1sxMV0pOwo+KyAgICAgICAgICAgICAgICAgICAgICAgIH0KPisgICAgICAgICAgICAgICAgICAg IH0KPisgICAgICAgICAgICAgICAgfSAvL2dyYXkKPisgICAgICAgICAgICB9Cj4rICAgICAgICB9 Cj4rICAgIH0KPit9Cj4gCj4gdm9pZCBmZl9tcHZfcmVjb25zdHJ1Y3RfbWIoTXBlZ0VuY0NvbnRl eHQgKnMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSkKPiB7Cj4rICAgIGNvbnN0IGludCBtYl94eSA9 IHMtPm1iX3kgKiBzLT5tYl9zdHJpZGUgKyBzLT5tYl94Owo+KyAgICAgICAgICAgIHVpbnQ4X3Qg Km1ic2tpcF9wdHIgPSAmcy0+bWJza2lwX3RhYmxlW21iX3h5XTsKPisKPisgICAgcy0+Y3VyX3Bp Yy5xc2NhbGVfdGFibGVbbWJfeHldID0gcy0+cXNjYWxlOwo+Kwo+KyAgICAgICAgLyogYXZvaWQg Y29weSBpZiBtYWNyb2Jsb2NrIHNraXBwZWQgaW4gbGFzdCBmcmFtZSB0b28gKi8KPisgICAgICAg ICAgICBpZiAocy0+bWJfc2tpcHBlZCkgewo+KyAgICAgICAgICAgICAgICBzLT5tYl9za2lwcGVk ID0gMDsKPisgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MihzLT5waWN0X3R5cGUhPUFWX1BJQ1RV UkVfVFlQRV9JKTsKPisgICAgICAgICAgICAgICAgKm1ic2tpcF9wdHIgPSAxOwo+KyAgICAgICAg ICAgIH0gZWxzZSBpZiAoIXMtPmN1cl9waWMucmVmZXJlbmNlKSB7Cj4rICAgICAgICAgICAgICAg ICptYnNraXBfcHRyID0gMTsKPisgICAgICAgICAgICB9IGVsc2V7Cj4rICAgICAgICAgICAgICAg ICptYnNraXBfcHRyID0gMDsgLyogbm90IHNraXBwZWQgKi8KPisgICAgICAgICAgICB9Cj4rCj4g ICAgIGlmIChzLT5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19EQ1RfQ09FRkYpIHsKPiAgICAgICAg LyogcHJpbnQgRENUIGNvZWZmaWNpZW50cyAqLwo+ICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFW X0xPR19ERUJVRywgIkRDVCBjb2VmZnMgb2YgTUIgYXQgJWR4JWQ6XG4iLCBzLT5tYl94LCBzLT5t Yl95KTsKPmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlb19lbmMuYyBiL2xpYmF2Y29k ZWMvbXBlZ3ZpZGVvX2VuYy5jCj5pbmRleCAzMWM1ZGQ0NzM2Li43NzRkMTZlZGFkIDEwMDY0NAo+ LS0tIGEvbGliYXZjb2RlYy9tcGVndmlkZW9fZW5jLmMKPisrKyBiL2xpYmF2Y29kZWMvbXBlZ3Zp ZGVvX2VuYy5jCj5AQCAtMTA4MiwxMSArMTA4MiwzMyBAQCBhdl9jb2xkIGludCBmZl9tcHZfZW5j b2RlX2VuZChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCj4gICAgIHJldHVybiAwOwo+IH0KPiAKPi0j ZGVmaW5lIElTX0VOQ09ERVIgMQo+LSNpbmNsdWRlICJtcHZfcmVjb25zdHJ1Y3RfbWJfdGVtcGxh dGUuYyIKPisvKiBwdXQgYmxvY2tbXSB0byBkZXN0W10gKi8KPitzdGF0aWMgaW5saW5lIHZvaWQg cHV0X2RjdChNcGVnRW5jQ29udGV4dCAqcywKPisgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3QgKmRlc3QsIGludCBsaW5lX3NpemUsIGludCBx c2NhbGUpCj4rewo+KyAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRyYShzLCBibG9jaywgaSwgcXNj YWxlKTsKPisgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0LCBsaW5lX3NpemUsIGJsb2NrKTsKPit9 Cj4gCj4rc3RhdGljIGlubGluZSB2b2lkIGFkZF9kZXF1YW50X2RjdChNcGVnRW5jQ29udGV4dCAq cywKPisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IGksIHVp bnQ4X3QgKmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCj4rewo+KyAgICBpZiAocy0+ YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKSB7Cj4rICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9p bnRlcihzLCBibG9jaywgaSwgcXNjYWxlKTsKPisKPisgICAgICAgIHMtPmlkc3AuaWRjdF9hZGQo ZGVzdCwgbGluZV9zaXplLCBibG9jayk7Cj4rICAgIH0KPit9Cj4rCj4rLyoqCj4rICogUGVyZm9y bXMgZGVxdWFudGl6YXRpb24gYW5kIElEQ1QgKGlmIG5lY2Vzc2FyeSkKPisgKi8KPiBzdGF0aWMg dm9pZCBtcHZfcmVjb25zdHJ1Y3RfbWIoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tb MTJdWzY0XSkKPiB7Cj4rICAgIGNvbnN0IGludCBtYl94eSA9IHMtPm1iX3kgKiBzLT5tYl9zdHJp ZGUgKyBzLT5tYl94Owo+Kwo+KyAgICBzLT5jdXJfcGljLnFzY2FsZV90YWJsZVttYl94eV0gPSBz LT5xc2NhbGU7Cj4rCj4gICAgIGlmIChzLT5hdmN0eC0+ZGVidWcgJiBGRl9ERUJVR19EQ1RfQ09F RkYpIHsKPiAgICAgICAgLyogcHJpbnQgRENUIGNvZWZmaWNpZW50cyAqLwo+ICAgICAgICBhdl9s b2cocy0+YXZjdHgsIEFWX0xPR19ERUJVRywgIkRDVCBjb2VmZnMgb2YgTUIgYXQgJWR4JWQ6XG4i LCBzLT5tYl94LCBzLT5tYl95KTsKPkBAIC0xMDk5LDcgKzExMjEsNjAgQEAgc3RhdGljIHZvaWQg bXB2X3JlY29uc3RydWN0X21iKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90IGJsb2NrWzEyXVs2 NF0pCj4gICAgICAgIH0KPiAgICAgfQo+IAo+LSAgICBtcHZfcmVjb25zdHJ1Y3RfbWJfaW50ZXJu YWwocywgYmxvY2ssIDAsIE1BWV9CRV9NUEVHMTJfSDI2MSk7Cj4rICAgIGlmICgocy0+YXZjdHgt PmZsYWdzICYgQVZfQ09ERUNfRkxBR19QU05SKSB8fCBzLT5mcmFtZV9za2lwX3RocmVzaG9sZCB8 fCBzLT5mcmFtZV9za2lwX2ZhY3RvciB8fAo+KyAgICAgICAgISgocy0+aW50cmFfb25seSB8fCBz LT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpICYmCj4rICAgICAgICAgIHMtPmF2Y3R4 LT5tYl9kZWNpc2lvbiAhPSBGRl9NQl9ERUNJU0lPTl9SRCkpIHsgLy8gRklYTUUgcHJlY2FsYwo+ KyAgICAgICAgdWludDhfdCAqZGVzdF95ID0gcy0+ZGVzdFswXSwgKmRlc3RfY2IgPSBzLT5kZXN0 WzFdLCAqZGVzdF9jciA9IHMtPmRlc3RbMl07Cj4rICAgICAgICBpbnQgZGN0X2xpbmVzaXplLCBk Y3Rfb2Zmc2V0Owo+KyAgICAgICAgY29uc3QgaW50IGxpbmVzaXplICAgPSBzLT5jdXJfcGljLmxp bmVzaXplWzBdOwo+KyAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jdXJfcGljLmxp bmVzaXplWzFdOwo+KyAgICAgICAgY29uc3QgaW50IGJsb2NrX3NpemUgPSA4Owo+Kwo+KyAgICAg ICAgZGN0X2xpbmVzaXplID0gbGluZXNpemUgPDwgcy0+aW50ZXJsYWNlZF9kY3Q7Cj4rICAgICAg ICBkY3Rfb2Zmc2V0ICAgPSBzLT5pbnRlcmxhY2VkX2RjdCA/IGxpbmVzaXplIDogbGluZXNpemUg KiBibG9ja19zaXplOwo+Kwo+KyAgICAgICAgaWYgKCFzLT5tYl9pbnRyYSkgewo+KyAgICAgICAg ICAgIC8qIE5vIE1DLCBhcyB0aGF0IHdhcyBhbHJlYWR5IGRvbmUgb3RoZXJ3aXNlICovCj4rICAg ICAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1swXSwgMCwgZGVzdF95ICAgICAg ICAgICAgICAgICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisgICAgICAg ICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAg ICAgICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+KyAgICAgICAgICAg ICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbMl0sIDIsIGRlc3RfeSArIGRjdF9vZmZzZXQg ICAgICAgICAgICAgLCBkY3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Cj4rICAgICAgICAgICAgICAg IGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1szXSwgMywgZGVzdF95ICsgZGN0X29mZnNldCArIGJs b2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPisKPisgICAgICAgICAgICAgICAg aWYgKCFDT05GSUdfR1JBWSB8fCAhKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfR1JB WSkpIHsKPisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5jaHJvbWFfeV9zaGlmdCkgewo+KyAg ICAgICAgICAgICAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s0XSwgNCwgZGVz dF9jYiwgdXZsaW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAg ICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzVdLCA1LCBkZXN0X2NyLCB1dmxpbmVzaXpl LCBzLT5jaHJvbWFfcXNjYWxlKTsKPisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4rICAg ICAgICAgICAgICAgICAgICAgICAgZGN0X2xpbmVzaXplID4+PSAxOwo+KyAgICAgICAgICAgICAg ICAgICAgICAgIGRjdF9vZmZzZXQgICA+Pj0gMTsKPisgICAgICAgICAgICAgICAgICAgICAgICBh ZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNF0sIDQsIGRlc3RfY2IsICAgICAgICAgICAgICBkY3Rf bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICAgICAgICAgIGFk ZF9kZXF1YW50X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgICAgICAgICAgICAgIGRjdF9s aW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgYWRk X2RlcXVhbnRfZGN0KHMsIGJsb2NrWzZdLCA2LCBkZXN0X2NiICsgZGN0X29mZnNldCwgZGN0X2xp bmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPisgICAgICAgICAgICAgICAgICAgICAgICBhZGRf ZGVxdWFudF9kY3QocywgYmxvY2tbN10sIDcsIGRlc3RfY3IgKyBkY3Rfb2Zmc2V0LCBkY3RfbGlu ZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICAgICAgfQo+KyAgICAg ICAgICAgICAgICB9Cj4rICAgICAgICB9IGVsc2Ugewo+KyAgICAgICAgICAgICAgICAvKiBkY3Qg b25seSBpbiBpbnRyYSBibG9jayAqLwo+KyAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2Nr WzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAgICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBz LT5xc2NhbGUpOwo+KyAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0 X3kgICAgICAgICAgICAgICsgYmxvY2tfc2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+ KyAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzJdLCAyLCBkZXN0X3kgKyBkY3Rfb2Zm c2V0ICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+KyAgICAgICAgICAg ICAgICBwdXRfZGN0KHMsIGJsb2NrWzNdLCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tf c2l6ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+Kwo+KyAgICAgICAgICAgICAgICBpZiAo IUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSkg ewo+KyAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmNocm9tYV95X3NoaWZ0KSB7Cj4rICAgICAg ICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s0XSwgNCwgZGVzdF9jYiwgdXZsaW5l c2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4rICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2Rj dChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgdXZsaW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7 Cj4rICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+KyAgICAgICAgICAgICAgICAgICAgICAg IGRjdF9vZmZzZXQgPj49MTsKPisgICAgICAgICAgICAgICAgICAgICAgICBkY3RfbGluZXNpemUg Pj49MTsKPisgICAgICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzRdLCA0LCBk ZXN0X2NiLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPisg ICAgICAgICAgICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzVdLCA1LCBkZXN0X2NyLCAg ICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPisgICAgICAgICAg ICAgICAgICAgICAgICBwdXRfZGN0KHMsIGJsb2NrWzZdLCA2LCBkZXN0X2NiICsgZGN0X29mZnNl dCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPisgICAgICAgICAgICAgICAgICAg ICAgICBwdXRfZGN0KHMsIGJsb2NrWzddLCA3LCBkZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xp bmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPisgICAgICAgICAgICAgICAgICAgIH0KPisgICAg ICAgICAgICAgICAgfQo+KyAgICAgICAgfQo+KyAgICB9Cj4gfQo+IAo+IHN0YXRpYyBpbnQgZ2V0 X3NhZShjb25zdCB1aW50OF90ICpzcmMsIGludCByZWYsIGludCBzdHJpZGUpCj5kaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy9tcHZfcmVjb25zdHJ1Y3RfbWJfdGVtcGxhdGUuYyBiL2xpYmF2Y29kZWMv bXB2X3JlY29uc3RydWN0X21iX3RlbXBsYXRlLmMKPmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+ aW5kZXggYWU3YTllMzRjZS4uMDAwMDAwMDAwMAo+LS0tIGEvbGliYXZjb2RlYy9tcHZfcmVjb25z dHJ1Y3RfbWJfdGVtcGxhdGUuYwo+KysrIC9kZXYvbnVsbAo+QEAgLTEsMjcyICswLDAgQEAKPi0v Kgo+LSAqIE1QRUcgbWFjcm9ibG9jayByZWNvbnN0cnVjdGlvbgo+LSAqIENvcHlyaWdodCAoYykg MjAwMCwyMDAxIEZhYnJpY2UgQmVsbGFyZAo+LSAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0IE1p Y2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxuaUBnbXguYXQ+Cj4tICoKPi0gKiBUaGlzIGZpbGUg aXMgcGFydCBvZiBGRm1wZWcuCj4tICoKPi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4tICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+LSAqIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+LSAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lgo+LSAqCj4tICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4tICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKPi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+LSAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4tICoKPi0gKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4tICog TGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQo+LSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPi0gKi8KPi0KPi0jZGVmaW5lIE5PVF9NUEVH MTJfSDI2MSAgICAgICAgMAo+LSNkZWZpbmUgTUFZX0JFX01QRUcxMl9IMjYxICAgICAxCj4tI2Rl ZmluZSBERUZJTklURUxZX01QRUcxMl9IMjYxIDIKPi0KPi0vKiBwdXQgYmxvY2tbXSB0byBkZXN0 W10gKi8KPi1zdGF0aWMgaW5saW5lIHZvaWQgcHV0X2RjdChNcGVnRW5jQ29udGV4dCAqcywKPi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3Qg KmRlc3QsIGludCBsaW5lX3NpemUsIGludCBxc2NhbGUpCj4tewo+LSAgICBzLT5kY3RfdW5xdWFu dGl6ZV9pbnRyYShzLCBibG9jaywgaSwgcXNjYWxlKTsKPi0gICAgcy0+aWRzcC5pZGN0X3B1dChk ZXN0LCBsaW5lX3NpemUsIGJsb2NrKTsKPi19Cj4tCj4tc3RhdGljIGlubGluZSB2b2lkIGFkZF9k ZXF1YW50X2RjdChNcGVnRW5jQ29udGV4dCAqcywKPi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQxNl90ICpibG9jaywgaW50IGksIHVpbnQ4X3QgKmRlc3QsIGludCBsaW5lX3NpemUsIGlu dCBxc2NhbGUpCj4tewo+LSAgICBpZiAocy0+YmxvY2tfbGFzdF9pbmRleFtpXSA+PSAwKSB7Cj4t ICAgICAgICBzLT5kY3RfdW5xdWFudGl6ZV9pbnRlcihzLCBibG9jaywgaSwgcXNjYWxlKTsKPi0K Pi0gICAgICAgIHMtPmlkc3AuaWRjdF9hZGQoZGVzdCwgbGluZV9zaXplLCBibG9jayk7Cj4tICAg IH0KPi19Cj4tCj4tLyogZ2VuZXJpYyBmdW5jdGlvbiBjYWxsZWQgYWZ0ZXIgYSBtYWNyb2Jsb2Nr IGhhcyBiZWVuIHBhcnNlZCBieSB0aGUKPi0gICBkZWNvZGVyIG9yIGFmdGVyIGl0IGhhcyBiZWVu IGVuY29kZWQgYnkgdGhlIGVuY29kZXIuCj4tCj4tICAgSW1wb3J0YW50IHZhcmlhYmxlcyB1c2Vk Ogo+LSAgIHMtPm1iX2ludHJhIDogdHJ1ZSBpZiBpbnRyYSBtYWNyb2Jsb2NrCj4tICAgcy0+bXZf ZGlyICAgOiBtb3Rpb24gdmVjdG9yIGRpcmVjdGlvbgo+LSAgIHMtPm12X3R5cGUgIDogbW90aW9u IHZlY3RvciB0eXBlCj4tICAgcy0+bXYgICAgICAgOiBtb3Rpb24gdmVjdG9yCj4tICAgcy0+aW50 ZXJsYWNlZF9kY3QgOiB0cnVlIGlmIGludGVybGFjZWQgZGN0IHVzZWQgKG1wZWcyKQo+LSAqLwo+ LXN0YXRpYyBhdl9hbHdheXNfaW5saW5lCj4tdm9pZCBtcHZfcmVjb25zdHJ1Y3RfbWJfaW50ZXJu YWwoTXBlZ0VuY0NvbnRleHQgKnMsIGludDE2X3QgYmxvY2tbMTJdWzY0XSwKPi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG93cmVzX2ZsYWcsIGludCBpc19tcGVnMTIpCj4t ewo+LSNkZWZpbmUgSVNfTVBFRzEyX0gyNjEocykgKGlzX21wZWcxMiA9PSBNQVlfQkVfTVBFRzEy X0gyNjEgPyAoKHMpLT5vdXRfZm9ybWF0IDw9IEZNVF9IMjYxKSA6IGlzX21wZWcxMikKPi0gICAg Y29uc3QgaW50IG1iX3h5ID0gcy0+bWJfeSAqIHMtPm1iX3N0cmlkZSArIHMtPm1iX3g7Cj4tCj4t ICAgIHMtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSA9IHMtPnFzY2FsZTsKPi0KPi0jaWYg SVNfRU5DT0RFUgo+LSAgICBpZiAoKHMtPmF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUFNO UikgfHwgcy0+ZnJhbWVfc2tpcF90aHJlc2hvbGQgfHwgcy0+ZnJhbWVfc2tpcF9mYWN0b3IgfHwK Pi0gICAgICAgICEoKHMtPmludHJhX29ubHkgfHwgcy0+cGljdF90eXBlID09IEFWX1BJQ1RVUkVf VFlQRV9CKSAmJgo+LSAgICAgICAgICBzLT5hdmN0eC0+bWJfZGVjaXNpb24gIT0gRkZfTUJfREVD SVNJT05fUkQpKSAgLy8gRklYTUUgcHJlY2FsYwo+LSNlbmRpZiAvKiBJU19FTkNPREVSICovCj4t ICAgIHsKPi0gICAgICAgIHVpbnQ4X3QgKmRlc3RfeSA9IHMtPmRlc3RbMF0sICpkZXN0X2NiID0g cy0+ZGVzdFsxXSwgKmRlc3RfY3IgPSBzLT5kZXN0WzJdOwo+LSAgICAgICAgaW50IGRjdF9saW5l c2l6ZSwgZGN0X29mZnNldDsKPi0gICAgICAgIGNvbnN0IGludCBsaW5lc2l6ZSAgID0gcy0+Y3Vy X3BpYy5saW5lc2l6ZVswXTsgLy9ub3Qgcy0+bGluZXNpemUgYXMgdGhpcyB3b3VsZCBiZSB3cm9u ZyBmb3IgZmllbGQgcGljcwo+LSAgICAgICAgY29uc3QgaW50IHV2bGluZXNpemUgPSBzLT5jdXJf cGljLmxpbmVzaXplWzFdOwo+LSAgICAgICAgY29uc3QgaW50IGJsb2NrX3NpemUgPSBsb3dyZXNf ZmxhZyA/IDggPj4gcy0+YXZjdHgtPmxvd3JlcyA6IDg7Cj4tCj4tICAgICAgICAvKiBhdm9pZCBj b3B5IGlmIG1hY3JvYmxvY2sgc2tpcHBlZCBpbiBsYXN0IGZyYW1lIHRvbyAqLwo+LSAgICAgICAg Lyogc2tpcCBvbmx5IGR1cmluZyBkZWNvZGluZyBhcyB3ZSBtaWdodCB0cmFzaCB0aGUgYnVmZmVy cyBkdXJpbmcgZW5jb2RpbmcgYSBiaXQgKi8KPi0gICAgICAgIGlmICghSVNfRU5DT0RFUikgewo+ LSAgICAgICAgICAgIHVpbnQ4X3QgKm1ic2tpcF9wdHIgPSAmcy0+bWJza2lwX3RhYmxlW21iX3h5 XTsKPi0KPi0gICAgICAgICAgICBpZiAocy0+bWJfc2tpcHBlZCkgewo+LSAgICAgICAgICAgICAg ICBzLT5tYl9za2lwcGVkID0gMDsKPi0gICAgICAgICAgICAgICAgYXZfYXNzZXJ0MihzLT5waWN0 X3R5cGUhPUFWX1BJQ1RVUkVfVFlQRV9JKTsKPi0gICAgICAgICAgICAgICAgKm1ic2tpcF9wdHIg PSAxOwo+LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXMtPmN1cl9waWMucmVmZXJlbmNlKSB7Cj4t ICAgICAgICAgICAgICAgICptYnNraXBfcHRyID0gMTsKPi0gICAgICAgICAgICB9IGVsc2V7Cj4t ICAgICAgICAgICAgICAgICptYnNraXBfcHRyID0gMDsgLyogbm90IHNraXBwZWQgKi8KPi0gICAg ICAgICAgICB9Cj4tICAgICAgICB9Cj4tCj4tICAgICAgICBkY3RfbGluZXNpemUgPSBsaW5lc2l6 ZSA8PCBzLT5pbnRlcmxhY2VkX2RjdDsKPi0gICAgICAgIGRjdF9vZmZzZXQgICA9IHMtPmludGVy bGFjZWRfZGN0ID8gbGluZXNpemUgOiBsaW5lc2l6ZSAqIGJsb2NrX3NpemU7Cj4tCj4tICAgICAg ICBpZiAoIXMtPm1iX2ludHJhKSB7Cj4tICAgICAgICAgICAgLyogbW90aW9uIGhhbmRsaW5nICov Cj4tICAgICAgICAgICAgLyogZGVjb2Rpbmcgb3IgbW9yZSB0aGFuIG9uZSBtYl90eXBlIChNQyB3 YXMgYWxyZWFkeSBkb25lIG90aGVyd2lzZSkgKi8KPi0KPi0jaWYgIUlTX0VOQ09ERVIKPi0gICAg ICAgICAgICBpZiAoSEFWRV9USFJFQURTICYmIGlzX21wZWcxMiAhPSBERUZJTklURUxZX01QRUcx Ml9IMjYxICYmCj4tICAgICAgICAgICAgICAgIHMtPmF2Y3R4LT5hY3RpdmVfdGhyZWFkX3R5cGUg JiBGRl9USFJFQURfRlJBTUUpIHsKPi0gICAgICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1W X0RJUl9GT1JXQVJEKSB7Cj4tICAgICAgICAgICAgICAgICAgICBmZl90aHJlYWRfcHJvZ3Jlc3Nf YXdhaXQoJnMtPmxhc3RfcGljLnB0ci0+cHJvZ3Jlc3MsCj4tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXN0X3JlZmVyZW5jZWRfcm93KHMsIDApKTsKPi0g ICAgICAgICAgICAgICAgfQo+LSAgICAgICAgICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElS X0JBQ0tXQVJEKSB7Cj4tICAgICAgICAgICAgICAgICAgICBmZl90aHJlYWRfcHJvZ3Jlc3NfYXdh aXQoJnMtPm5leHRfcGljLnB0ci0+cHJvZ3Jlc3MsCj4tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG93ZXN0X3JlZmVyZW5jZWRfcm93KHMsIDEpKTsKPi0gICAg ICAgICAgICAgICAgfQo+LSAgICAgICAgICAgIH0KPi0KPi0gICAgICAgICAgICBpZiAobG93cmVz X2ZsYWcpIHsKPi0gICAgICAgICAgICAgICAgY29uc3QgaDI2NF9jaHJvbWFfbWNfZnVuYyAqb3Bf cGl4ID0gcy0+aDI2NGNocm9tYS5wdXRfaDI2NF9jaHJvbWFfcGl4ZWxzX3RhYjsKPi0KPi0gICAg ICAgICAgICAgICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7Cj4tICAgICAgICAg ICAgICAgICAgICBNUFZfbW90aW9uX2xvd3JlcyhzLCBkZXN0X3ksIGRlc3RfY2IsIGRlc3RfY3Is IDAsIHMtPmxhc3RfcGljLmRhdGEsIG9wX3BpeCk7Cj4tICAgICAgICAgICAgICAgICAgICBvcF9w aXggPSBzLT5oMjY0Y2hyb21hLmF2Z19oMjY0X2Nocm9tYV9waXhlbHNfdGFiOwo+LSAgICAgICAg ICAgICAgICB9Cj4tICAgICAgICAgICAgICAgIGlmIChzLT5tdl9kaXIgJiBNVl9ESVJfQkFDS1dB UkQpIHsKPi0gICAgICAgICAgICAgICAgICAgIE1QVl9tb3Rpb25fbG93cmVzKHMsIGRlc3RfeSwg ZGVzdF9jYiwgZGVzdF9jciwgMSwgcy0+bmV4dF9waWMuZGF0YSwgb3BfcGl4KTsKPi0gICAgICAg ICAgICAgICAgfQo+LSAgICAgICAgICAgIH0gZWxzZSB7Cj4tICAgICAgICAgICAgICAgIGNvbnN0 IG9wX3BpeGVsc19mdW5jICgqb3BfcGl4KVs0XTsKPi0gICAgICAgICAgICAgICAgY29uc3QgcXBl bF9tY19mdW5jICgqb3BfcXBpeClbMTZdOwo+LQo+LSAgICAgICAgICAgICAgICBpZiAoKGlzX21w ZWcxMiA9PSBERUZJTklURUxZX01QRUcxMl9IMjYxIHx8ICFzLT5ub19yb3VuZGluZykgfHwgcy0+ cGljdF90eXBlID09IEFWX1BJQ1RVUkVfVFlQRV9CKSB7Cj4tICAgICAgICAgICAgICAgICAgICBv cF9waXggPSBzLT5oZHNwLnB1dF9waXhlbHNfdGFiOwo+LSAgICAgICAgICAgICAgICAgICAgb3Bf cXBpeCA9IHMtPnFkc3AucHV0X3FwZWxfcGl4ZWxzX3RhYjsKPi0gICAgICAgICAgICAgICAgfSBl bHNlIHsKPi0gICAgICAgICAgICAgICAgICAgIG9wX3BpeCA9IHMtPmhkc3AucHV0X25vX3JuZF9w aXhlbHNfdGFiOwo+LSAgICAgICAgICAgICAgICAgICAgb3BfcXBpeCA9IHMtPnFkc3AucHV0X25v X3JuZF9xcGVsX3BpeGVsc190YWI7Cj4tICAgICAgICAgICAgICAgIH0KPi0gICAgICAgICAgICAg ICAgaWYgKHMtPm12X2RpciAmIE1WX0RJUl9GT1JXQVJEKSB7Cj4tICAgICAgICAgICAgICAgICAg ICBmZl9tcHZfbW90aW9uKHMsIGRlc3RfeSwgZGVzdF9jYiwgZGVzdF9jciwgMCwgcy0+bGFzdF9w aWMuZGF0YSwgb3BfcGl4LCBvcF9xcGl4KTsKPi0gICAgICAgICAgICAgICAgICAgIG9wX3BpeCAg PSBzLT5oZHNwLmF2Z19waXhlbHNfdGFiOwo+LSAgICAgICAgICAgICAgICAgICAgb3BfcXBpeCA9 IHMtPnFkc3AuYXZnX3FwZWxfcGl4ZWxzX3RhYjsKPi0gICAgICAgICAgICAgICAgfQo+LSAgICAg ICAgICAgICAgICBpZiAocy0+bXZfZGlyICYgTVZfRElSX0JBQ0tXQVJEKSB7Cj4tICAgICAgICAg ICAgICAgICAgICBmZl9tcHZfbW90aW9uKHMsIGRlc3RfeSwgZGVzdF9jYiwgZGVzdF9jciwgMSwg cy0+bmV4dF9waWMuZGF0YSwgb3BfcGl4LCBvcF9xcGl4KTsKPi0gICAgICAgICAgICAgICAgfQo+ LSAgICAgICAgICAgIH0KPi0KPi0gICAgICAgICAgICAvKiBza2lwIGRlcXVhbnQgLyBpZGN0IGlm IHdlIGFyZSByZWFsbHkgbGF0ZSA7KSAqLwo+LSAgICAgICAgICAgIGlmIChzLT5hdmN0eC0+c2tp cF9pZGN0KSB7Cj4tICAgICAgICAgICAgICAgIGlmKCAgKHMtPmF2Y3R4LT5za2lwX2lkY3QgPj0g QVZESVNDQVJEX05PTlJFRiAmJiBzLT5waWN0X3R5cGUgPT0gQVZfUElDVFVSRV9UWVBFX0IpCj4t ICAgICAgICAgICAgICAgICAgIHx8KHMtPmF2Y3R4LT5za2lwX2lkY3QgPj0gQVZESVNDQVJEX05P TktFWSAmJiBzLT5waWN0X3R5cGUgIT0gQVZfUElDVFVSRV9UWVBFX0kpCj4tICAgICAgICAgICAg ICAgICAgIHx8IHMtPmF2Y3R4LT5za2lwX2lkY3QgPj0gQVZESVNDQVJEX0FMTCkKPi0gICAgICAg ICAgICAgICAgICAgIHJldHVybjsKPi0gICAgICAgICAgICB9Cj4tCj4tICAgICAgICAgICAgLyog YWRkIGRjdCByZXNpZHVlICovCj4tICAgICAgICAgICAgaWYgKCEoSVNfTVBFRzEyX0gyNjEocykg fHwgcy0+bXNtcGVnNF92ZXJzaW9uICE9IE1TTVA0X1VOVVNFRCB8fAo+LSAgICAgICAgICAgICAg ICAgIChzLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUEVHNCAmJiAhcy0+bXBlZ19xdWFudCkp KQo+LSNlbmRpZiAvKiAhSVNfRU5DT0RFUiAqLwo+LSAgICAgICAgICAgIHsKPi0gICAgICAgICAg ICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzBdLCAwLCBkZXN0X3kgICAgICAgICAgICAg ICAgICAgICAgICAgICwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+LSAgICAgICAgICAgICAg ICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbMV0sIDEsIGRlc3RfeSAgICAgICAgICAgICAgKyBi bG9ja19zaXplLCBkY3RfbGluZXNpemUsIHMtPnFzY2FsZSk7Cj4tICAgICAgICAgICAgICAgIGFk ZF9kZXF1YW50X2RjdChzLCBibG9ja1syXSwgMiwgZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAg ICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPi0gICAgICAgICAgICAgICAgYWRkX2Rl cXVhbnRfZGN0KHMsIGJsb2NrWzNdLCAzLCBkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6 ZSwgZGN0X2xpbmVzaXplLCBzLT5xc2NhbGUpOwo+LQo+LSAgICAgICAgICAgICAgICBpZiAoIUNP TkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSkgewo+ LSAgICAgICAgICAgICAgICAgICAgYXZfYXNzZXJ0MihJU19FTkNPREVSIHx8IHMtPmNocm9tYV95 X3NoaWZ0KTsKPi0gICAgICAgICAgICAgICAgICAgIGlmICghSVNfRU5DT0RFUiB8fCBzLT5jaHJv bWFfeV9zaGlmdCkgewo+LSAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChz LCBibG9ja1s0XSwgNCwgZGVzdF9jYiwgdXZsaW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4t ICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzVdLCA1LCBk ZXN0X2NyLCB1dmxpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPi0gICAgICAgICAgICAgICAg ICAgIH0gZWxzZSB7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgZGN0X2xpbmVzaXplID4+PSAx Owo+LSAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9vZmZzZXQgICA+Pj0gMTsKPi0gICAgICAg ICAgICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbNF0sIDQsIGRlc3RfY2Is ICAgICAgICAgICAgICBkY3RfbGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+LSAgICAgICAg ICAgICAgICAgICAgICAgIGFkZF9kZXF1YW50X2RjdChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwg ICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4tICAgICAgICAg ICAgICAgICAgICAgICAgYWRkX2RlcXVhbnRfZGN0KHMsIGJsb2NrWzZdLCA2LCBkZXN0X2NiICsg ZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBzLT5jaHJvbWFfcXNjYWxlKTsKPi0gICAgICAgICAg ICAgICAgICAgICAgICBhZGRfZGVxdWFudF9kY3QocywgYmxvY2tbN10sIDcsIGRlc3RfY3IgKyBk Y3Rfb2Zmc2V0LCBkY3RfbGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+LSAgICAgICAgICAg ICAgICAgICAgfQo+LSAgICAgICAgICAgICAgICB9Cj4tICAgICAgICAgICAgfQo+LSNpZiAhSVNf RU5DT0RFUgo+LSAgICAgICAgICAgICAgZWxzZSBpZiAoaXNfbXBlZzEyID09IERFRklOSVRFTFlf TVBFRzEyX0gyNjEgfHwgbG93cmVzX2ZsYWcgfHwgKHMtPmNvZGVjX2lkICE9IEFWX0NPREVDX0lE X1dNVjIpKSB7Cj4tICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbMF0sIDAsIGRlc3Rf eSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBkY3RfbGluZXNpemUpOwo+LSAgICAgICAgICAg ICAgICBhZGRfZGN0KHMsIGJsb2NrWzFdLCAxLCBkZXN0X3kgICAgICAgICAgICAgICsgYmxvY2tf c2l6ZSwgZGN0X2xpbmVzaXplKTsKPi0gICAgICAgICAgICAgICAgYWRkX2RjdChzLCBibG9ja1sy XSwgMiwgZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSk7Cj4t ICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbM10sIDMsIGRlc3RfeSArIGRjdF9vZmZz ZXQgKyBibG9ja19zaXplLCBkY3RfbGluZXNpemUpOwo+LQo+LSAgICAgICAgICAgICAgICBpZiAo IUNPTkZJR19HUkFZIHx8ICEocy0+YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HUkFZKSkg ewo+LSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPmNocm9tYV95X3NoaWZ0KSB7Ly9DaHJvbWE0 MjAKPi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJsb2NrWzRdLCA0LCBkZXN0 X2NiLCB1dmxpbmVzaXplKTsKPi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJs b2NrWzVdLCA1LCBkZXN0X2NyLCB1dmxpbmVzaXplKTsKPi0gICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgLy9jaHJvbWE0MjIKPi0gICAgICAgICAg ICAgICAgICAgICAgICBkY3RfbGluZXNpemUgPSB1dmxpbmVzaXplIDw8IHMtPmludGVybGFjZWRf ZGN0Owo+LSAgICAgICAgICAgICAgICAgICAgICAgIGRjdF9vZmZzZXQgICA9IHMtPmludGVybGFj ZWRfZGN0ID8gdXZsaW5lc2l6ZSA6IHV2bGluZXNpemUqYmxvY2tfc2l6ZTsKPi0KPi0gICAgICAg ICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJsb2NrWzRdLCA0LCBkZXN0X2NiLCBkY3RfbGlu ZXNpemUpOwo+LSAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbNV0sIDUs IGRlc3RfY3IsIGRjdF9saW5lc2l6ZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rj dChzLCBibG9ja1s2XSwgNiwgZGVzdF9jYitkY3Rfb2Zmc2V0LCBkY3RfbGluZXNpemUpOwo+LSAg ICAgICAgICAgICAgICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbN10sIDcsIGRlc3RfY3IrZGN0 X29mZnNldCwgZGN0X2xpbmVzaXplKTsKPi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMt PmNocm9tYV94X3NoaWZ0KSB7Ly9DaHJvbWE0NDQKPi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWRkX2RjdChzLCBibG9ja1s4XSwgOCwgZGVzdF9jYitibG9ja19zaXplLCBkY3RfbGluZXNp emUpOwo+LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGN0KHMsIGJsb2NrWzldLCA5 LCBkZXN0X2NyK2Jsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSk7Cj4tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFkZF9kY3QocywgYmxvY2tbMTBdLCAxMCwgZGVzdF9jYitibG9ja19zaXplK2Rj dF9vZmZzZXQsIGRjdF9saW5lc2l6ZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk ZF9kY3QocywgYmxvY2tbMTFdLCAxMSwgZGVzdF9jcitibG9ja19zaXplK2RjdF9vZmZzZXQsIGRj dF9saW5lc2l6ZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgfQo+LSAgICAgICAgICAgICAg ICAgICAgfQo+LSAgICAgICAgICAgICAgICB9IC8vZmkgZ3JheQo+LSAgICAgICAgICAgIH0gZWxz ZSBpZiAoQ09ORklHX1dNVjJfREVDT0RFUikgewo+LSAgICAgICAgICAgICAgICBmZl93bXYyX2Fk ZF9tYihzLCBibG9jaywgZGVzdF95LCBkZXN0X2NiLCBkZXN0X2NyKTsKPi0gICAgICAgICAgICB9 Cj4tI2VuZGlmIC8qICFJU19FTkNPREVSICovCj4tICAgICAgICB9IGVsc2Ugewo+LSNpZiAhSVNf RU5DT0RFUgo+LSAgICAgICAgICAgIC8qIE9ubHkgTVBFRy00IFNpbXBsZSBTdHVkaW8gUHJvZmls ZSBpcyBzdXBwb3J0ZWQgaW4gPiA4LWJpdCBtb2RlLgo+LSAgICAgICAgICAgICAgIFRPRE86IElu dGVncmF0ZSAxMC1iaXQgcHJvcGVybHkgaW50byBtcGVndmlkZW8uYyBzbyB0aGF0IEVSIHdvcmtz IHByb3Blcmx5ICovCj4tICAgICAgICAgICAgaWYgKGlzX21wZWcxMiAhPSBERUZJTklURUxZX01Q RUcxMl9IMjYxICYmIENPTkZJR19NUEVHNF9ERUNPREVSICYmCj4tICAgICAgICAgICAgICAgIC8q IHMtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QRUc0ICYmICovCj4tICAgICAgICAgICAgICAg IHMtPmF2Y3R4LT5iaXRzX3Blcl9yYXdfc2FtcGxlID4gOCkgewo+LSAgICAgICAgICAgICAgICBm Zl9tcGVnNF9kZWNvZGVfc3R1ZGlvKHMsIGRlc3RfeSwgZGVzdF9jYiwgZGVzdF9jciwgYmxvY2tf c2l6ZSwKPi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dmxpbmVzaXpl LCBkY3RfbGluZXNpemUsIGRjdF9vZmZzZXQpOwo+LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIUlT X01QRUcxMl9IMjYxKHMpKQo+LSNlbmRpZiAvKiAhSVNfRU5DT0RFUiAqLwo+LSAgICAgICAgICAg IHsKPi0gICAgICAgICAgICAgICAgLyogZGN0IG9ubHkgaW4gaW50cmEgYmxvY2sgKi8KPi0gICAg ICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1swXSwgMCwgZGVzdF95ICAgICAgICAgICAgICAg ICAgICAgICAgICAsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPi0gICAgICAgICAgICAgICAg cHV0X2RjdChzLCBibG9ja1sxXSwgMSwgZGVzdF95ICAgICAgICAgICAgICArIGJsb2NrX3NpemUs IGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxlKTsKPi0gICAgICAgICAgICAgICAgcHV0X2RjdChzLCBi bG9ja1syXSwgMiwgZGVzdF95ICsgZGN0X29mZnNldCAgICAgICAgICAgICAsIGRjdF9saW5lc2l6 ZSwgcy0+cXNjYWxlKTsKPi0gICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1szXSwgMywg ZGVzdF95ICsgZGN0X29mZnNldCArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgcy0+cXNjYWxl KTsKPi0KPi0gICAgICAgICAgICAgICAgaWYgKCFDT05GSUdfR1JBWSB8fCAhKHMtPmF2Y3R4LT5m bGFncyAmIEFWX0NPREVDX0ZMQUdfR1JBWSkpIHsKPi0gICAgICAgICAgICAgICAgICAgIGlmIChz LT5jaHJvbWFfeV9zaGlmdCkgewo+LSAgICAgICAgICAgICAgICAgICAgICAgIHB1dF9kY3Qocywg YmxvY2tbNF0sIDQsIGRlc3RfY2IsIHV2bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+LSAg ICAgICAgICAgICAgICAgICAgICAgIHB1dF9kY3QocywgYmxvY2tbNV0sIDUsIGRlc3RfY3IsIHV2 bGluZXNpemUsIHMtPmNocm9tYV9xc2NhbGUpOwo+LSAgICAgICAgICAgICAgICAgICAgfSBlbHNl IHsKPi0gICAgICAgICAgICAgICAgICAgICAgICBkY3Rfb2Zmc2V0ID4+PTE7Cj4tICAgICAgICAg ICAgICAgICAgICAgICAgZGN0X2xpbmVzaXplID4+PTE7Cj4tICAgICAgICAgICAgICAgICAgICAg ICAgcHV0X2RjdChzLCBibG9ja1s0XSwgNCwgZGVzdF9jYiwgICAgICAgICAgICAgIGRjdF9saW5l c2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2Rj dChzLCBibG9ja1s1XSwgNSwgZGVzdF9jciwgICAgICAgICAgICAgIGRjdF9saW5lc2l6ZSwgcy0+ Y2hyb21hX3FzY2FsZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9j a1s2XSwgNiwgZGVzdF9jYiArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3Fz Y2FsZSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgcHV0X2RjdChzLCBibG9ja1s3XSwgNywg ZGVzdF9jciArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgcy0+Y2hyb21hX3FzY2FsZSk7Cj4t ICAgICAgICAgICAgICAgICAgICB9Cj4tICAgICAgICAgICAgICAgIH0KPi0gICAgICAgICAgICB9 Cj4tI2lmICFJU19FTkNPREVSCj4tICAgICAgICAgICAgICBlbHNlIHsKPi0gICAgICAgICAgICAg ICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X3ksICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN0 X2xpbmVzaXplLCBibG9ja1swXSk7Cj4tICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wdXQo ZGVzdF95ICAgICAgICAgICAgICArIGJsb2NrX3NpemUsIGRjdF9saW5lc2l6ZSwgYmxvY2tbMV0p Owo+LSAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfeSArIGRjdF9vZmZzZXQs ICAgICAgICAgICAgICBkY3RfbGluZXNpemUsIGJsb2NrWzJdKTsKPi0gICAgICAgICAgICAgICAg cy0+aWRzcC5pZGN0X3B1dChkZXN0X3kgKyBkY3Rfb2Zmc2V0ICsgYmxvY2tfc2l6ZSwgZGN0X2xp bmVzaXplLCBibG9ja1szXSk7Cj4tCj4tICAgICAgICAgICAgICAgIGlmICghQ09ORklHX0dSQVkg fHwgIShzLT5hdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0dSQVkpKSB7Cj4tICAgICAgICAg ICAgICAgICAgICBpZiAocy0+Y2hyb21hX3lfc2hpZnQpIHsKPi0gICAgICAgICAgICAgICAgICAg ICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfY2IsIHV2bGluZXNpemUsIGJsb2NrWzRdKTsKPi0g ICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlkY3RfcHV0KGRlc3RfY3IsIHV2bGluZXNp emUsIGJsb2NrWzVdKTsKPi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4tICAgICAgICAg ICAgICAgICAgICAgICAgZGN0X2xpbmVzaXplID0gdXZsaW5lc2l6ZSA8PCBzLT5pbnRlcmxhY2Vk X2RjdDsKPi0gICAgICAgICAgICAgICAgICAgICAgICBkY3Rfb2Zmc2V0ICAgPSBzLT5pbnRlcmxh Y2VkX2RjdCA/IHV2bGluZXNpemUgOiB1dmxpbmVzaXplKmJsb2NrX3NpemU7Cj4tCj4tICAgICAg ICAgICAgICAgICAgICAgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X2NiLCAgICAgICAgICAgICAg ZGN0X2xpbmVzaXplLCBibG9ja1s0XSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgcy0+aWRz cC5pZGN0X3B1dChkZXN0X2NyLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBibG9ja1s1XSk7 Cj4tICAgICAgICAgICAgICAgICAgICAgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X2NiICsgZGN0 X29mZnNldCwgZGN0X2xpbmVzaXplLCBibG9ja1s2XSk7Cj4tICAgICAgICAgICAgICAgICAgICAg ICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X2NyICsgZGN0X29mZnNldCwgZGN0X2xpbmVzaXplLCBi bG9ja1s3XSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzLT5jaHJvbWFfeF9zaGlm dCkgeyAvL0Nocm9tYTQ0NAo+LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZHNwLmlk Y3RfcHV0KGRlc3RfY2IgKyBibG9ja19zaXplLCAgICAgICAgICAgICAgZGN0X2xpbmVzaXplLCBi bG9ja1s4XSk7Cj4tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmlkc3AuaWRjdF9wdXQo ZGVzdF9jciArIGJsb2NrX3NpemUsICAgICAgICAgICAgICBkY3RfbGluZXNpemUsIGJsb2NrWzld KTsKPi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X2Ni ICsgYmxvY2tfc2l6ZSArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgYmxvY2tbMTBdKTsKPi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aWRzcC5pZGN0X3B1dChkZXN0X2NyICsgYmxv Y2tfc2l6ZSArIGRjdF9vZmZzZXQsIGRjdF9saW5lc2l6ZSwgYmxvY2tbMTFdKTsKPi0gICAgICAg ICAgICAgICAgICAgICAgICB9Cj4tICAgICAgICAgICAgICAgICAgICB9Cj4tICAgICAgICAgICAg ICAgIH0gLy9ncmF5Cj4tICAgICAgICAgICAgfQo+LSNlbmRpZiAvKiAhSVNfRU5DT0RFUiAqLwo+ LSAgICAgICAgfQo+LSAgICB9Cj4tfQo+LQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==