From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id C412749177 for ; Fri, 17 Oct 2025 06:04:47 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'ni4kTfYGor+Ak7r+O4pR7L+RfU4VnXwrZRdZW7Vnnps=', expected b'ZnKbMoKEKlmUJENdV78iovk1hj9mknlAZbQTczQZP/c=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760681071; h=content-type : mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=ni4kTfYGor+Ak7r+O4pR7L+RfU4VnXwrZRdZW7Vnnps=; b=ydnu7OOTVLCSFmiEZBXhRYEhIwMP6XksZotKSOa3VEhkvPHYWEunmmDMCMCobRUqrT6t9 8k6L6CrZaJsH8BiYJ0+hjoZkwNWAxYOidsCQUr8i4dxFHeuQiEjrC9gW1w2CPCaalIiWTWZ m/kNL/mLzPx7gcivsUhLrKZA663WSwE8EeGfwQzdDozojBNlldv0odjQHPTAh6PS7HTZ9Pi /5kM/3Ph9aC1HNvgwlXy4+2p288p1n8wgtbAvupqKW1nZ2Ql1+QIrcrjUvXEEAlFzo870Nb aI/DYBdW+TVGzlQdS7lJiniQeelimc/LRNvPcm7YX/Pz0Q9jIScxWKk5+Yag== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 7075668F4DC; Fri, 17 Oct 2025 09:04:31 +0300 (EEST) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1760681053; b=ffy93KUOGeFGEOkF0TQPnBLcTjMZj2MolqWI+SS/jj9iOZPl0b9E/mMX0q4HSsK4QtUG+ TJrreR9P9nCLLX6kWPXHUueaVTHyUBKJoDWKFKiSSwgeM8L6sydACBXof9+EjsEb0yPFESb qZm+ctdZPixl0jDKw4TPb05fJ6GRTAKKcp+k76vqOU9/gMXZgcKSrgWM7kDOuDHg4k+PSr1 IZBFppRARni7u2qJf+Tu2Ig3S5EUeQ073cPH+kABSAzLSTiB4dTwEJMC9S88+6PjlFaOius fwRq+ShRQG4t/tZ4Rvn3b/4Zph6QYU6C22LA9SuWc6wa/7e3VWaQc4RgP8oA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1760681053; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=ni4kTfYGor+Ak7r+O4pR7L+RfU4VnXwrZRdZW7Vnnps=; b=d0WY9lF8pSjul6mqhrWMPZjnCwVEI3/dXHOc+ZJEXN6KTbsG8pTxMI/DvGv9LdgcsvxpX 6of+Et1AMVHf0iLBh3Dj3lOaeZc5OMduoczUaagy1yp/qpdnDHQH4HHk+HpEhGo7xVTuK6g JyN9+x4Zj08ep7S7/RhJE0KWZ9ruSAjG/HWP/KasmxB++8Tm+wcjpEB2ak+L5kNhDx0STpb udo9hH2YaDVz01YnBdRUBB3rp03jJJuWwlTaw7M6QMO3P4qj6kDRZtDJE8+2umGI6RKoaLX fnzcTihJL/M9F9iUsSTfidhdKPYxnkdp1naF7TuxWD6lg4z2+B5gtWgQjDkA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1760681044; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=ZnKbMoKEKlmUJENdV78iovk1hj9mknlAZbQTczQZP/c=; b=SP/2eJ06haXY9cXYfau9x5VNwgEeepC3qGH/JAkqqc158IC+zipc1eA8jnSIIkdfuoo/M q7UCKDvAFIiWRn7TgF/bOP66wnthuoufovSABudt8+RIFlba5HGDxOOFbaTxVRVlHA8QD5m j7PAKhZc76glhO891FFe0mYfla0Md5+8/2KEdJ+M2jzE40UIocfj9J7ewPsULoZXxl0EEmm i+GNNvRI7m45QSt/kZV9ogGXwbyAyrOJL24YfNu0neax03IfZOM1FHSg5oUDElNK40e2zCu +Ts/vSMja7loO0fb0IXq1po/hddSY1eFG+pligMR8woQkkQFmaNM2dCPZzog== Received: from be883b0c11cf (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id BE99268F31B for ; Fri, 17 Oct 2025 09:04:04 +0300 (EEST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Oct 2025 06:04:04 -0000 Message-ID: <176068104496.62.12684048565994583175@bf907ddaa564> Message-ID-Hash: 3QFXOMJ6MTTFHRC5ST76Z5DGNGSZMPTU X-Message-ID-Hash: 3QFXOMJ6MTTFHRC5ST76Z5DGNGSZMPTU X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avfilter/boxblur: add AVX2 horizontal pass (PR #20714) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: MakarDev via ffmpeg-devel Cc: MakarDev Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: UFIgIzIwNzE0IG9wZW5lZCBieSBNYWthckRldgpVUkw6IGh0dHBzOi8vY29kZS5mZm1wZWcub3Jn L0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjA3MTQKUGF0Y2ggVVJMOiBodHRwczovL2NvZGUuZmZtcGVn Lm9yZy9GRm1wZWcvRkZtcGVnL3B1bGxzLzIwNzE0LnBhdGNoCgpTaWduZWQtb2ZmLWJ5OiBNYWth ckRldiA8a3V6bmlldHNvdi5tYWthckBnbWFpbC5jb20+DQpBZGRlZCAxRCBBVlgyIGFzc2VtYmx5 IHZlY3Rvcml6YXRpb24gc3VwcG9ydCBmb3IgdGhlIHNsaWRpbmcgd2luZG93IGFjY3VtdWxhdG9y IG9uIHRoZSBhdmZpbGVyL2JveGJsdXIgZmlsdGVyLiANCkJlbmNobWFya2luZyByZXN1bHRzDQoN CkFWWDI6DQogLSB2Zl9ib3hibHVyLmJveGJsdXJfcm93OCAgW09LXQ0KIC0gdmZfYm94Ymx1ci5i b3hibHVyX3JvdzE2IFtPS10NCmNoZWNrYXNtOiBhbGwgMiB0ZXN0cyBwYXNzZWQNCmJveGJsdXJf Ymx1cl9yb3c4X2M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ODQuNyAoIDEu MDB4KQ0KYm94Ymx1cl9ibHVyX3JvdzhfYXZ4MjogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA5Mi43ICggOS41NHgpDQpib3hibHVyX2JsdXJfcm93MTZfYzogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMzE1LjggKCAxLjAweCkNCmJveGJsdXJfYmx1cl9yb3cxNl9hdngy OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUuMyAoIDEuMjR4KQoKCkZyb20gNzkx NWYzZjIzMmFjNWU1N2ZiN2FjN2UzNDI2NTMxMDhjMjExOTcxOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogTWFrYXJEZXYgPGt1em5pZXRzb3YubWFrYXJAZ21haWwuY29tPgpEYXRlOiBU aHUsIDE2IE9jdCAyMDI1IDIyOjQ0OjMxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gYXZmaWx0ZXIv Ym94Ymx1cjogYWRkIEFWWDIgaG9yaXpvbnRhbCBwYXNzCgpTaWduZWQtb2ZmLWJ5OiBNYWthckRl diA8a3V6bmlldHNvdi5tYWthckBnbWFpbC5jb20+Ci0tLQogbGliYXZmaWx0ZXIvdmZfYm94Ymx1 cl9kc3AuaCAgICAgIHwgIDQ1ICsrKwogbGliYXZmaWx0ZXIveDg2L01ha2VmaWxlICAgICAgICAg IHwgICAyICsKIGxpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyLmFzbSAgICB8IDU3NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyX2luaXQu YyB8ICA3MSArKysrCiB0ZXN0cy9jaGVja2FzbS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwog dGVzdHMvY2hlY2thc20vY2hlY2thc20uYyAgICAgICAgIHwgICAzICsKIHRlc3RzL2NoZWNrYXNt L2NoZWNrYXNtLmggICAgICAgICB8ICAgMSArCiB0ZXN0cy9jaGVja2FzbS92Zl9ib3hibHVyLmMg ICAgICAgfCAxNjUgKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDg2MyBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvdmZfYm94Ymx1cl9kc3AuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyLmFzbQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyX2luaXQuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHRlc3RzL2NoZWNrYXNtL3ZmX2JveGJsdXIuYwoKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVy L3ZmX2JveGJsdXJfZHNwLmggYi9saWJhdmZpbHRlci92Zl9ib3hibHVyX2RzcC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjI0NmM3NDhlZWEKLS0tIC9kZXYvbnVsbAor KysgYi9saWJhdmZpbHRlci92Zl9ib3hibHVyX2RzcC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMjUgTWFrYXIgS3V6bmlldHNvdgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWRklMVEVSX0JPWEJMVVJfRFNQX0gKKyNk ZWZpbmUgQVZGSUxURVJfQk9YQkxVUl9EU1BfSAorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5j bHVkZSA8c3RkaW50Lmg+CisKK3R5cGVkZWYgc3RydWN0IEZGQm94Ymx1ckRTUENvbnRleHQgewor ICAgIC8qIDFEIGhvcml6b250YWwgYmx1ciBvbiBvbmUgcm93IG9mIGxlbiBwaXhlbHMgKi8KKyAg ICB2b2lkICgqYmx1cl9yb3c4KSh1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3RlcCwKKyAg ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0cmRpZmZfdCBzcmNfc3Rl cCwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLCBpbnQgcmFkaXVzKTsKKworICAgIHZv aWQgKCpibHVyX3JvdzE2KSh1aW50MTZfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0ZXAsCisgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzcmMsIHB0cmRpZmZfdCBzcmNfc3Rl cCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50IHJhZGl1cyk7Cit9IEZGQm94 Ymx1ckRTUENvbnRleHQ7CisKKy8qIEMgaW5pdGlhbGl6ZXJzICovCit2b2lkIGZmX2JveGJsdXJf ZHNwX2luaXQoRkZCb3hibHVyRFNQQ29udGV4dCAqZHNwKTsKK3ZvaWQgZmZfYm94Ymx1cl9kc3Bf aW5pdF9hYXJjaDY0KEZGQm94Ymx1ckRTUENvbnRleHQgKmRzcCk7Cit2b2lkIGZmX2JveGJsdXJf ZHNwX2luaXRfeDg2KEZGQm94Ymx1ckRTUENvbnRleHQgKmRzcCk7CisKKyNlbmRpZiAvKiBBVkZJ TFRFUl9CT1hCTFVSX0RTUF9IICovCisKKwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIveDg2L01h a2VmaWxlIGIvbGliYXZmaWx0ZXIveDg2L01ha2VmaWxlCmluZGV4IGI0ODVjMTBmYmUuLmE4OWU5 ZTRiNzggMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3g4Ni9NYWtlZmlsZQorKysgYi9saWJhdmZp bHRlci94ODYvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcgQEAgT0JKUy0kKENPTkZJR19FUV9GSUxU RVIpICAgICAgICAgICAgICAgICAgICAgKz0geDg2L3ZmX2VxX2luaXQubwogT0JKUy0kKENPTkZJ R19GU1BQX0ZJTFRFUikgICAgICAgICAgICAgICAgICAgKz0geDg2L3ZmX2ZzcHBfaW5pdC5vCiBP QkpTLSQoQ09ORklHX0dCTFVSX0ZJTFRFUikgICAgICAgICAgICAgICAgICArPSB4ODYvdmZfZ2Js dXJfaW5pdC5vCiBPQkpTLSQoQ09ORklHX0dSQURGVU5fRklMVEVSKSAgICAgICAgICAgICAgICAr PSB4ODYvdmZfZ3JhZGZ1bl9pbml0Lm8KK09CSlMtJChDT05GSUdfQk9YQkxVUl9GSUxURVIpICAg ICAgICAgICAgICAgICs9IHg4Ni92Zl9ib3hibHVyX2luaXQubwogT0JKUy0kKENPTkZJR19GUkFN RVJBVEVfRklMVEVSKSAgICAgICAgICAgICAgKz0geDg2L3ZmX2ZyYW1lcmF0ZV9pbml0Lm8KIE9C SlMtJChDT05GSUdfSEFMRENMVVRfRklMVEVSKSAgICAgICAgICAgICAgICs9IHg4Ni92Zl9sdXQz ZF9pbml0Lm8KIE9CSlMtJChDT05GSUdfSEZMSVBfRklMVEVSKSAgICAgICAgICAgICAgICAgICs9 IHg4Ni92Zl9oZmxpcF9pbml0Lm8KQEAgLTYzLDYgKzY0LDcgQEAgWDg2QVNNLU9CSlMtJChDT05G SUdfRlJBTUVSQVRFX0ZJTFRFUikgICAgICAgKz0geDg2L3ZmX2ZyYW1lcmF0ZS5vCiBYODZBU00t T0JKUy0kKENPTkZJR19GU1BQX0ZJTFRFUikgICAgICAgICAgICArPSB4ODYvdmZfZnNwcC5vCiBY ODZBU00tT0JKUy0kKENPTkZJR19HQkxVUl9GSUxURVIpICAgICAgICAgICArPSB4ODYvdmZfZ2Js dXIubwogWDg2QVNNLU9CSlMtJChDT05GSUdfR1JBREZVTl9GSUxURVIpICAgICAgICAgKz0geDg2 L3ZmX2dyYWRmdW4ubworWDg2QVNNLU9CSlMtJChDT05GSUdfQk9YQkxVUl9GSUxURVIpICAgICAg ICAgKz0geDg2L3ZmX2JveGJsdXIubwogWDg2QVNNLU9CSlMtJChDT05GSUdfSEFMRENMVVRfRklM VEVSKSAgICAgICAgKz0geDg2L3ZmX2x1dDNkLm8KIFg4NkFTTS1PQkpTLSQoQ09ORklHX0hGTElQ X0ZJTFRFUikgICAgICAgICAgICs9IHg4Ni92Zl9oZmxpcC5vCiBYODZBU00tT0JKUy0kKENPTkZJ R19IUUROM0RfRklMVEVSKSAgICAgICAgICArPSB4ODYvdmZfaHFkbjNkLm8KZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyLmFzbSBiL2xpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hi bHVyLmFzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40OGJkNjRkOGY2 Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIveDg2L3ZmX2JveGJsdXIuYXNtCkBAIC0w LDAgKzEsNTc1IEBACis7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKzsqIHg4NiBBVlgyLW9wdGltaXpl ZCBmdW5jdGlvbnMgZm9yIGJveGJsdXIgMUQgcm93IGJsdXIKKzsqCis7KiBDb3B5cmlnaHQgKEMp IDIwMjUgTWFrYXIgS3V6bmlldHNvdgorOyoKKzsqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KKzsqCis7KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCis7KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCis7KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKzsqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOyoKKzsqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOyogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KzsqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCis7KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorOyoKKzsqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKzsqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKzsqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK KzsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorCislaW5jbHVkZSAibGliYXZ1dGlsL3g4Ni94ODZ1dGls LmFzbSIKKworU0VDVElPTiAudGV4dAorCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyB2b2lkIGZm X2JveGJsdXJfYmx1cl9yb3diX2F2eDIodWludDhfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0ZXAs Cis7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzcmMsIHB0 cmRpZmZfdCBzcmNfc3RlcCwKKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs ZW4sIGludCByYWRpdXMpCis7IEFWWDIgaW1wbGVtZW50YXRpb24gZm9yIDgtYml0IHBpeGVscwor OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyVpZiBBUkNIX1g4Nl82NAorR0xPQkFMIGZmX2JveGJsdXJf Ymx1cl9yb3diX2F2eDIKK2ZmX2JveGJsdXJfYmx1cl9yb3diX2F2eDI6CisgICAgOyBTeXN0ZW0g ViBBTUQ2NCBhcmdzOgorICAgIDsgUkRJPWRzdCAodWludDhfdCopLCBSU0k9ZHN0X3N0ZXAsIFJE WD1zcmMgKHVpbnQ4X3QqKSwgUkNYPXNyY19zdGVwLCBSOGQ9bGVuLCBSOWQ9cmFkaXVzCisgICAg cHVzaCBSQlAKKyAgICBtb3YgUkJQLCBSU1AKKyAgICBwdXNoIFJCWAorICAgIHB1c2ggUjEyCisg ICAgcHVzaCBSMTMKKyAgICBwdXNoIFIxNAorICAgIHB1c2ggUjE1CisKKyAgICBtb3YgUjEyLCBS REkgICAgICAgICAgICA7IGRzdAorICAgIG1vdiBSMTMsIFJTSSAgICAgICAgICAgIDsgZHN0X3N0 ZXAKKyAgICBtb3YgUjE0LCBSRFggICAgICAgICAgICA7IHNyYworICAgIG1vdiBSMTUsIFJDWCAg ICAgICAgICAgIDsgc3JjX3N0ZXAKKyAgICA7IFI4ZCA9IGxlbiwgUjlkID0gcmFkaXVzIChhbHJl YWR5IGluIHBsYWNlKQorCisgICAgOyBDb21wdXRlIGludiA9ICgoMTw8MTYpICsgbGVuZ3RoLzIp IC8gbGVuZ3RoCisgICAgbW92IGVheCwgUjlkICAgICAgICAgICAgOyByYWRpdXMKKyAgICBsZWEg ZWR4LCBbUkFYKjIrMV0gICAgICA7IGVkeCA9IGxlbmd0aCA9IDIqcmFkaXVzKzEKKyAgICBtb3Yg ZWN4LCBlZHggICAgICAgICAgICA7IGVjeCA9IGxlbmd0aAorICAgIG1vdiBlYngsIGVkeAorICAg IHNociBlYngsIDEgICAgICAgICAgICAgIDsgZWJ4ID0gbGVuZ3RoLzIKKyAgICBtb3YgZWF4LCAx CisgICAgc2hsIGVheCwgMTYgICAgICAgICAgICAgOyBlYXggPSAxPDwxNgorICAgIGFkZCBlYXgs IGVieCAgICAgICAgICAgIDsgZWF4ID0gKDE8PDE2KSArIGxlbmd0aC8yCisgICAgeG9yIGVkeCwg ZWR4CisgICAgZGl2IGVjeCAgICAgICAgICAgICAgICAgOyBlYXggPSBpbnYgPSAoKDE8PDE2KSts ZW4vMikvbGVuCisgICAgbW92IFIxMWQsIGVheCAgICAgICAgICAgOyBSMTFkID0gaW52CisKKyAg ICA7IHN1bSA9IHNyY1tyYWRpdXMqc3JjX3N0ZXBdCisgICAgbW92IGVheCwgUjlkICAgICAgICAg ICAgOyBlYXggPSByYWRpdXMKKyAgICBpbXVsIFJBWCwgUjE1ICAgICAgICAgICA7IFJBWCA9IHJh ZGl1cyAqIHNyY19zdGVwCisgICAgbW92enggZWJ4LCBieXRlIFtSMTQrUkFYXQorICAgIG1vdiBS MTBkLCBlYnggICAgICAgICAgIDsgUjEwZCA9IHN1bSAoaW50KQorCisgICAgOyBmb3IgKHg9MDt4 PHJhZGl1czt4KyspIHN1bSArPSBzcmNbeCpzcmNfc3RlcF08PDEKKyAgICB4b3IgZWF4LCBlYXgg ICAgICAgICAgICA7IHggPSAwCisuc3VtX2RvdWJsZXNfbG9vcDoKKyAgICBjbXAgZWF4LCBSOWQK KyAgICBqZ2UgLnN1bV9kb25lCisgICAgbW92IGVkeCwgZWF4CisgICAgaW11bCBSRFgsIFIxNSAg ICAgICAgICAgOyBSRFggPSB4KnNyY19zdGVwCisgICAgbW92enggZWJ4LCBieXRlIFtSMTQrUkRY XQorICAgIGFkZCBSMTBkLCBlYngKKyAgICBhZGQgUjEwZCwgZWJ4ICAgICAgICAgICA7IHN1bSAr PSB2YWwqMgorICAgIGluYyBlYXgKKyAgICBqbXAgLnN1bV9kb3VibGVzX2xvb3AKKy5zdW1fZG9u ZToKKworICAgIDsgc3VtID0gc3VtKmludiArICgxPDwxNSksIGtlZXAgaW4gUTE2IChSMTApCisg ICAgbW92c3hkIFJEWCwgUjEwZAorICAgIGltdWwgUkRYLCBSMTEKKyAgICBhZGQgUkRYLCAxPDwx NQorICAgIG1vdiBSMTAsIFJEWCAgICAgICAgICAgIDsgUjEwID0gZml4ZWQtcG9pbnQgYWNjdW11 bGF0b3IgKFExNikKKworICAgIDsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgOyBM b29wIDE6IGhlYWQgKHJlZmxlY3QtbGVmdCkKKyAgICA7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgIHhvciBlYXgsIGVheCAgICAgICAgICAgIDsgeCA9IDAKKy5sb29wMToKKyAgICBj bXAgZWF4LCBSOGQgICAgICAgICAgICA7IHggPCBsZW4gPworICAgIGpnZSAuYWZ0ZXJfbG9vcDEK KyAgICBjbXAgZWF4LCBSOWQgICAgICAgICAgICA7IHggPD0gcmFkaXVzID8KKyAgICBqZyAuYWZ0 ZXJfbG9vcDEKKyAgICA7IGRpZmYgPSBzcmNbKHJhZGl1cyt4KSpzcmNfc3RlcF0gLSBzcmNbKHJh ZGl1cy14KSpzcmNfc3RlcF0KKyAgICBtb3YgZWR4LCBSOWQKKyAgICBhZGQgZWR4LCBlYXgKKyAg ICBpbXVsIFJEWCwgUjE1CisgICAgbW92enggZWJ4LCBieXRlIFtSMTQrUkRYXQorICAgIG1vdiBl c2ksIFI5ZAorICAgIHN1YiBlc2ksIGVheAorICAgIG1vdnN4ZCBSU0ksIGVzaQorICAgIGltdWwg UlNJLCBSMTUKKyAgICBtb3Z6eCBlY3gsIGJ5dGUgW1IxNCtSU0ldCisgICAgc3ViIGVieCwgZWN4 ICAgICAgICAgICAgOyBlYnggPSBkaWZmCisgICAgbW92c3hkIFJEWCwgZWJ4CisgICAgaW11bCBS RFgsIFIxMSAgICAgICAgICAgOyBkaWZmKmludiAoUTE2KQorICAgIGFkZCBSMTAsIFJEWCAgICAg ICAgICAgIDsgYWNjICs9IGRpZmYqaW52CisgICAgbW92IFJEWCwgUjEwCisgICAgc2FyIFJEWCwg MTYKKyAgICBtb3YgUlNJLCBSQVgKKyAgICBpbXVsIFJTSSwgUjEzCisgICAgbW92IFtSMTIgKyBS U0ldLCBkbAorICAgIGluYyBlYXgKKyAgICBqbXAgLmxvb3AxCisuYWZ0ZXJfbG9vcDE6CisKKyAg ICA7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgOyBM b29wIDI6IHN0ZWFkeS1zdGF0ZSAobm8gcmVmbGVjdGlvbikg4oCTIEFWWDIKKyAgICA7IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgOyBGYXN0IHBhdGgg cmVxdWlyZXMgdW5pdCBzdHJpZGVzIGFuZCA+PSA4IHBpeGVscyByZW1haW5pbmcgYmVmb3JlIHRh aWwuCisgICAgOyBDb25kaXRpb246IChSMTMgPT0gMSkgJiYgKFIxNSA9PSAxKSAmJiAoeCA8IGxl biAtIHJhZGl1cyAtIDgpCisgICAgY21wIFIxMywgMQorICAgIGpuZSAubG9vcDJfc2NhbGFyCisg ICAgY21wIFIxNSwgMQorICAgIGpuZSAubG9vcDJfc2NhbGFyCisgICAgCisgICAgOyBDaGVjayBp ZiB3ZSBoYXZlIGF0IGxlYXN0IDE2IHBpeGVscyBpbiBzdGVhZHkgc3RhdGUKKyAgICBtb3YgZWRp LCBSOGQKKyAgICBzdWIgZWRpLCBSOWQKKyAgICBzdWIgZWRpLCAxNiAgICAgICAgICAgICA7IGVk aSA9IGxlbiAtIHJhZGl1cyAtIDE2CisgICAgY21wIGVheCwgZWRpCisgICAgamcgIC5sb29wMl9z Y2FsYXIKKworICAgIDsgU2V0dXAgcG9pbnRlcnMgZm9yIEFWWDIgYmxvY2sgcHJvY2Vzc2luZwor ICAgIDsgcE5ldyA9IHNyYyArIChyYWRpdXMgKyB4KQorICAgIDsgcE9sZCA9IHNyYyArICh4IC0g cmFkaXVzIC0gMSkKKyAgICA7IHBEc3QgPSBkc3QgKyB4CisgICAgOyBVc2U6IFJEST1wTmV3LCBS U0k9cE9sZCwgUkJYPXBEc3QgKFIxMyBkc3Rfc3RlcCBub3QgbmVlZGVkIHNpbmNlIHN0cmlkZT0x KQorICAgIAorICAgIG1vdiBlZGksIGVheAorICAgIGFkZCBlZGksIFI5ZAorICAgIGxlYSBSREks IFtSMTQrUkRJXSAgICAgIDsgUkRJID0gcE5ldworICAgIG1vdiBlc2ksIGVheAorICAgIHN1YiBl c2ksIFI5ZAorICAgIGRlYyBlc2kKKyAgICBsZWEgUlNJLCBbUjE0K1JTSV0gICAgICA7IFJTSSA9 IHBPbGQKKyAgICBsZWEgUkJYLCBbUjEyK1JBWF0gICAgICA7IFJCWCA9IHBEc3QKKworICAgIDsg QnJvYWRjYXN0IGludiAoQVZYMjogbXVzdCBnbyB0aHJvdWdoIFhNTSBmaXJzdCkKKyAgICB2bW92 ZCB4bW01LCBSMTFkICAgICAgICA7IE1vdmUgUjExZCB0byB4bW01CisgICAgdnBicm9hZGNhc3Rk IHltbTUsIHhtbTUgOyB5bW01ID0gaW52IChpbnQzMiBicm9hZGNhc3QpCisKKy5sb29wMl9hdngy OgorICAgIDsgQ2hlY2sgaWYgd2Ugc3RpbGwgaGF2ZSAxNiBwaXhlbHM6IHggPD0gKGxlbiAtIHJh ZGl1cyAtIDE2KSA/CisgICAgbW92IGVjeCwgUjhkCisgICAgc3ViIGVjeCwgUjlkCisgICAgc3Vi IGVjeCwgMTYKKyAgICBjbXAgZWF4LCBlY3gKKyAgICBqZyAgLmxvb3AyX2F2eDJfZG9uZQorCisg ICAgOyBMb2FkIDE2IGluY29taW5nIGJ5dGVzIChuZXcgZWRnZSkgYW5kIDE2IG91dGdvaW5nIGJ5 dGVzIChvbGQgZWRnZSkKKyAgICA7IG5ldzogc3JjWyhyYWRpdXMgKyB4KSAuLiArMTVdCisgICAg OyBvbGQ6IHNyY1soeCAtIHJhZGl1cyAtIDEpIC4uICsxNV0KKyAgICB2bW92ZHF1IHhtbTAsIFtS REldICAgICAgICAgOyBuZXcgMTZCIGZyb20gcE5ldworICAgIHZtb3ZkcXUgeG1tMSwgW1JTSV0g ICAgICAgICA7IG9sZCAxNkIgZnJvbSBwT2xkCisgICAgCisgICAgOyBFeHRlbmQgMTZ4IHU4IC0+ IDE2eCB1MTYsIHRoZW4gY29tcHV0ZSBkaWZmCisgICAgdnBtb3Z6eGJ3IHltbTAsIHhtbTAgICAg ICAgIDsgMTZ4IHU4IC0+IDE2eCB1MTYgaW4geW1tMAorICAgIHZwbW92enhidyB5bW0xLCB4bW0x ICAgICAgICA7IDE2eCB1OCAtPiAxNnggdTE2IGluIHltbTEKKyAgICB2cHN1YncgeW1tMCwgeW1t MCwgeW1tMSAgICAgOyAxNnggczE2IChkaWZmKQorCisgICAgOyBTcGxpdCBpbnRvIGxvdyBhbmQg aGlnaCA4IGVsZW1lbnRzIGZvciAzMi1iaXQgcHJvY2Vzc2luZworICAgIHZleHRyYWN0aTEyOCB4 bW0xLCB5bW0wLCAxICA7IGhpZ2ggOHggczE2CisgICAgdnBtb3ZzeHdkIHltbTIsIHhtbTAgICAg ICAgIDsgbG93IDh4IHMxNiAtPiA4eCBzMzIgaW4geW1tMgorICAgIHZwbW92c3h3ZCB5bW0zLCB4 bW0xICAgICAgICA7IGhpZ2ggOHggczE2IC0+IDh4IHMzMiBpbiB5bW0zCisgICAgCisgICAgOyBN dWx0aXBseSBieSBpbnYgKGJyb2FkY2FzdCBpbiB5bW01KQorICAgIHZwbXVsbGQgeW1tMiwgeW1t MiwgeW1tNSAgICA7IGxvdyA4eCBzMzIgaW5jcmVtZW50cworICAgIHZwbXVsbGQgeW1tMywgeW1t MywgeW1tNSAgICA7IGhpZ2ggOHggczMyIGluY3JlbWVudHMKKworICAgIDsgQ29tcHV0ZSBwcmVm aXggc3VtIG9uIHltbTIgKGZpcnN0IDggZWxlbWVudHMpCisgICAgdnBzbGxkcSB5bW02LCB5bW0y LCA0CisgICAgdnBhZGRkIHltbTIsIHltbTIsIHltbTYKKyAgICB2cHNsbGRxIHltbTYsIHltbTIs IDgKKyAgICB2cGFkZGQgeW1tMiwgeW1tMiwgeW1tNgorICAgIDsgQ3Jvc3MtbGFuZSBhZGQgZm9y IHltbTIKKyAgICB2ZXh0cmFjdGkxMjggeG1tNiwgeW1tMiwgMAorICAgIHZwc2h1ZmQgeG1tNywg eG1tNiwgMHhGRgorICAgIHZleHRyYWN0aTEyOCB4bW04LCB5bW0yLCAxCisgICAgdnBhZGRkIHht bTgsIHhtbTgsIHhtbTcKKyAgICB2aW5zZXJ0aTEyOCB5bW0yLCB5bW0yLCB4bW04LCAxCisKKyAg ICA7IEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIHltbTIgdG8gY2FycnkgdG8geW1tMworICAgIHZl eHRyYWN0aTEyOCB4bW04LCB5bW0yLCAxCisgICAgdnBzaHVmZCB4bW04LCB4bW04LCAweEZGICAg IDsgbGFzdCBlbGVtZW50IG9mIGZpcnN0IDgKKyAgICB2cGJyb2FkY2FzdGQgeW1tOCwgeG1tOCAg ICAgOyBicm9hZGNhc3QgdG8gYWxsIGxhbmVzCisKKyAgICA7IENvbXB1dGUgcHJlZml4IHN1bSBv biB5bW0zIChuZXh0IDggZWxlbWVudHMpCisgICAgdnBzbGxkcSB5bW02LCB5bW0zLCA0CisgICAg dnBhZGRkIHltbTMsIHltbTMsIHltbTYKKyAgICB2cHNsbGRxIHltbTYsIHltbTMsIDgKKyAgICB2 cGFkZGQgeW1tMywgeW1tMywgeW1tNgorICAgIHZleHRyYWN0aTEyOCB4bW02LCB5bW0zLCAwCisg ICAgdnBzaHVmZCB4bW03LCB4bW02LCAweEZGCisgICAgdmV4dHJhY3RpMTI4IHhtbTksIHltbTMs IDEKKyAgICB2cGFkZGQgeG1tOSwgeG1tOSwgeG1tNworICAgIHZpbnNlcnRpMTI4IHltbTMsIHlt bTMsIHhtbTksIDEKKyAgICB2cGFkZGQgeW1tMywgeW1tMywgeW1tOCAgICAgOyBhZGQgY2Fycnkg ZnJvbSBmaXJzdCA4CisKKyAgICA7IEFkZCBwcmV2aW91cyBhY2N1bXVsYXRvciB0byBib3RoCisg ICAgdm1vdmQgeG1tMSwgUjEwZAorICAgIHZwYnJvYWRjYXN0ZCB5bW0xLCB4bW0xCisgICAgdnBh ZGRkIHltbTIsIHltbTIsIHltbTEgICAgIDsgZmlyc3QgOCBhY2N1bXVsYXRvcnMKKyAgICB2cGFk ZGQgeW1tMywgeW1tMywgeW1tMSAgICAgOyBuZXh0IDggYWNjdW11bGF0b3JzIChhbHJlYWR5IGlu Y2x1ZGVzIGNhcnJ5KQorCisgICAgOyBFeHRyYWN0IGxhc3QgYWNjdW11bGF0b3IgZm9yIG5leHQg aXRlcmF0aW9uIChmcm9tIHltbTMpCisgICAgdmV4dHJhY3RpMTI4IHhtbTQsIHltbTMsIDEKKyAg ICB2cHNodWZkIHhtbTYsIHhtbTQsIDB4RkYKKyAgICBtb3ZkIGVkeCwgeG1tNgorICAgIG1vdnN4 ZCBSRFgsIGVkeAorICAgIG1vdiBSMTAsIFJEWAorCisgICAgOyBTaGlmdCBhbmQgcGFjayBib3Ro IHJlZ2lzdGVycworICAgIHZwc3JhZCB5bW0yLCB5bW0yLCAxNiAgICAgICA7IGZpcnN0IDggcmVz dWx0cworICAgIHZwc3JhZCB5bW0zLCB5bW0zLCAxNiAgICAgICA7IG5leHQgOCByZXN1bHRzCisg ICAgCisgICAgOyBQYWNrIHltbTIgYW5kIHltbTMgZG93biB0byAxNiBieXRlcworICAgIHZwYWNr c3NkdyB5bW0yLCB5bW0yLCB5bW0zICA7IDE2eCBzMTYgKGJ1dCBsYW5lcyBhcmUgbWl4ZWQpCisg ICAgdnBlcm1xIHltbTIsIHltbTIsIDB4RDggICAgIDsgZml4IGxhbmUgb3JkZXI6IDExMDExMDAw YiA9ICgwLDIsMSwzKQorICAgIHZleHRyYWN0aTEyOCB4bW0zLCB5bW0yLCAxCisgICAgdnBhY2t1 c3diIHhtbTIsIHhtbTIsIHhtbTMgIDsgMTZ4IHU4CisgICAgdm1vdmRxdSBbUkJYXSwgeG1tMiAg ICAgICAgIDsgc3RvcmUgMTYgYnl0ZXMKKworICAgIDsgQWR2YW5jZSBwb2ludGVycyBhbmQgeCBi eSAxNgorICAgIGFkZCBSREksIDE2ICAgICAgICAgOyBwTmV3ICs9IDE2CisgICAgYWRkIFJTSSwg MTYgICAgICAgICA7IHBPbGQgKz0gMTYKKyAgICBhZGQgUkJYLCAxNiAgICAgICAgIDsgcERzdCAr PSAxNgorICAgIGFkZCBlYXgsIDE2ICAgICAgICAgOyB4ICs9IDE2CisgICAgam1wIC5sb29wMl9h dngyCisKKy5sb29wMl9hdngyX2RvbmU6CisgICAgOyBGYWxsIHRocm91Z2ggdG8gc2NhbGFyIHJl bWFpbmRlcgorCisubG9vcDJfc2NhbGFyOgorICAgIDsgTG9vcCAyIHNjYWxhcjogZm9yICg7IHgg PCBsZW4gLSByYWRpdXM7IHgrKykKKyAgICBjbXAgZWF4LCBSOGQKKyAgICBqZ2UgLmFmdGVyX2xv b3AyCisgICAgbW92IGVkeCwgUjhkCisgICAgc3ViIGVkeCwgUjlkCisgICAgY21wIGVheCwgZWR4 ICAgICAgICAgICAgOyB4IDwgbGVuIC0gcmFkaXVzID8KKyAgICBqZ2UgLmFmdGVyX2xvb3AyCisg ICAgOyBkaWZmID0gc3JjWyhyYWRpdXMreCkqc3JjX3N0ZXBdIC0gc3JjWyh4LXJhZGl1cy0xKSpz cmNfc3RlcF0KKyAgICBtb3YgZWR4LCBSOWQKKyAgICBhZGQgZWR4LCBlYXgKKyAgICBpbXVsIFJE WCwgUjE1CisgICAgbW92enggZWJ4LCBieXRlIFtSMTQrUkRYXQorICAgIG1vdiBlZHgsIGVheAor ICAgIHN1YiBlZHgsIFI5ZAorICAgIGRlYyBlZHgKKyAgICBtb3ZzeGQgUkRYLCBlZHgKKyAgICBp bXVsIFJEWCwgUjE1CisgICAgbW92enggZWN4LCBieXRlIFtSMTQrUkRYXQorICAgIHN1YiBlYngs IGVjeAorICAgIG1vdnN4ZCBSRFgsIGVieAorICAgIGltdWwgUkRYLCBSMTEKKyAgICBhZGQgUjEw LCBSRFgKKyAgICBtb3YgUkRYLCBSMTAKKyAgICBzYXIgUkRYLCAxNgorICAgIG1vdiBSU0ksIFJB WAorICAgIGltdWwgUlNJLCBSMTMKKyAgICBtb3YgW1IxMiArIFJTSV0sIGRsCisgICAgaW5jIGVh eAorICAgIGptcCAubG9vcDJfc2NhbGFyCisuYWZ0ZXJfbG9vcDI6CisKKyAgICA7IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDsgTG9vcCAzOiB0YWlsIChyZWZsZWN0LXJpZ2h0KQor ICAgIDsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisubG9vcDM6CisgICAgY21wIGVheCwg UjhkCisgICAgamdlIC5lbmQ4CisgICAgOyBkaWZmID0gc3JjWygyKmxlbi1yYWRpdXMteC0xKSpz cmNfc3RlcF0gLSBzcmNbKHgtcmFkaXVzLTEpKnNyY19zdGVwXQorICAgIG1vdiBlZHgsIFI4ZAor ICAgIGxlYSBlZHgsIFtlZHgqMl0KKyAgICBzdWIgZWR4LCBSOWQKKyAgICBzdWIgZWR4LCBlYXgK KyAgICBkZWMgZWR4CisgICAgbW92c3hkIFJEWCwgZWR4CisgICAgaW11bCBSRFgsIFIxNQorICAg IG1vdnp4IGVieCwgYnl0ZSBbUjE0K1JEWF0KKyAgICBtb3YgZWR4LCBlYXgKKyAgICBzdWIgZWR4 LCBSOWQKKyAgICBkZWMgZWR4CisgICAgbW92c3hkIFJEWCwgZWR4CisgICAgaW11bCBSRFgsIFIx NQorICAgIG1vdnp4IGVjeCwgYnl0ZSBbUjE0K1JEWF0KKyAgICBzdWIgZWJ4LCBlY3gKKyAgICBt b3ZzeGQgUkRYLCBlYngKKyAgICBpbXVsIFJEWCwgUjExCisgICAgYWRkIFIxMCwgUkRYCisgICAg bW92IFJEWCwgUjEwCisgICAgc2FyIFJEWCwgMTYKKyAgICBtb3YgUlNJLCBSQVgKKyAgICBpbXVs IFJTSSwgUjEzCisgICAgbW92IFtSMTIgKyBSU0ldLCBkbAorICAgIGluYyBlYXgKKyAgICBqbXAg Lmxvb3AzCisKKy5lbmQ4OgorICAgIHZ6ZXJvdXBwZXIKKyAgICBwb3AgUjE1CisgICAgcG9wIFIx NAorICAgIHBvcCBSMTMKKyAgICBwb3AgUjEyCisgICAgcG9wIFJCWAorICAgIHBvcCBSQlAKKyAg ICByZXQKKyVlbmRpZgorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7IHZvaWQgZmZfYm94Ymx1 cl9ibHVyX3Jvd3dfYXZ4Mih1aW50MTZfdCAqZHN0LCBwdHJkaWZmX3QgZHN0X3N0ZXAsCis7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc3JjLCBwdHJkaWZm X3Qgc3JjX3N0ZXAsCis7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZXMs IGludCByYWRpdXMpCis7IEFWWDIgaW1wbGVtZW50YXRpb24gZm9yIDE2LWJpdCAoOCBwaXhlbHMg cGVyIGl0ZXJhdGlvbikKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCislaWYgQVJDSF9YODZfNjQKK0dM T0JBTCBmZl9ib3hibHVyX2JsdXJfcm93d19hdngyCitmZl9ib3hibHVyX2JsdXJfcm93d19hdngy OgorICAgIDsgUkRJPWRzdCh1aW50MTZfdCopLCBSU0k9ZHN0X3N0ZXAsIFJEWD1zcmModWludDE2 X3QqKSwgUkNYPXNyY19zdGVwLCBSOGQ9Ynl0ZXMsIFI5ZD1yYWRpdXMKKyAgICBwdXNoIFJCUAor ICAgIG1vdiBSQlAsIFJTUAorICAgIHB1c2ggUkJYCisgICAgcHVzaCBSMTIKKyAgICBwdXNoIFIx MworICAgIHB1c2ggUjE0CisgICAgcHVzaCBSMTUKKworICAgIG1vdiBSMTIsIFJESSAgICAgICAg ICAgIDsgZHN0CisgICAgbW92IFIxMywgUlNJICAgICAgICAgICAgOyBkc3Rfc3RlcCAoaW4gYnl0 ZXMpCisgICAgbW92IFIxNCwgUkRYICAgICAgICAgICAgOyBzcmMKKyAgICBtb3YgUjE1LCBSQ1gg ICAgICAgICAgICA7IHNyY19zdGVwIChpbiBieXRlcykKKyAgICAKKyAgICA7IGxlbiA9IGJ5dGVz LzIKKyAgICBtb3YgZWF4LCBSOGQKKyAgICBzaHIgZWF4LCAxICAgICAgICAgICAgICA7IGVheCA9 IGxlbiAobnVtYmVyIG9mIHVpbnQxNiBlbGVtZW50cykKKyAgICBtb3YgUjhkLCBlYXgKKworICAg IDsgQ29tcHV0ZSBpbnYKKyAgICBtb3YgZWF4LCBSOWQgICAgICAgICAgICA7IHJhZGl1cworICAg IGxlYSBlZHgsIFtSQVgqMisxXSAgICAgIDsgbGVuZ3RoID0gMipyYWRpdXMrMQorICAgIG1vdiBl Y3gsIGVkeAorICAgIG1vdiBlYngsIGVkeAorICAgIHNociBlYngsIDEgICAgICAgICAgICAgIDsg bGVuZ3RoLzIKKyAgICBtb3YgZWF4LCAxCisgICAgc2hsIGVheCwgMTYKKyAgICBhZGQgZWF4LCBl YngKKyAgICB4b3IgZWR4LCBlZHgKKyAgICBkaXYgZWN4ICAgICAgICAgICAgICAgICA7IGVheCA9 IGludgorICAgIG1vdiBSMTFkLCBlYXggICAgICAgICAgIDsgUjExID0gaW52CisKKyAgICA7IElu aXRpYWxpemUgc3VtID0gc3JjW3JhZGl1c10KKyAgICBtb3YgZWF4LCBSOWQKKyAgICBzaGwgZWF4 LCAxICAgICAgICAgICAgICA7IHJhZGl1cyAqIDIgKHNpbmNlIHNyY19zdGVwIGlzIGluIGJ5dGVz IGZvciB1aW50MTYpCisgICAgbW92enggZWJ4LCB3b3JkIFtSMTQgKyBSQVhdCisgICAgbW92IFIx MGQsIGVieAorCisgICAgOyBzdW0gKz0gc3JjW3hdICogMiBmb3IgeCBpbiBbMC4ucmFkaXVzKQor ICAgIHhvciBlYXgsIGVheAorLnN1bV9sb29wMTY6CisgICAgY21wIGVheCwgUjlkCisgICAgamdl IC5zdW1fZG9uZTE2CisgICAgc2hsIGVheCwgMSAgICAgICAgICAgICAgOyB4ICogMiAoYnl0ZSBv ZmZzZXQpCisgICAgbW92enggZWJ4LCB3b3JkIFtSMTQgKyBSQVhdCisgICAgc2hyIGVheCwgMSAg ICAgICAgICAgICAgOyByZXN0b3JlIHgKKyAgICBhZGQgUjEwZCwgZWJ4CisgICAgYWRkIFIxMGQs IGVieAorICAgIGluYyBlYXgKKyAgICBqbXAgLnN1bV9sb29wMTYKKy5zdW1fZG9uZTE2OgorCisg ICAgOyBzdW0gPSBzdW0qaW52ICsgKDE8PDE1KQorICAgIG1vdnN4ZCBSRFgsIFIxMGQKKyAgICBp bXVsIFJEWCwgUjExCisgICAgYWRkIFJEWCwgMTw8MTUKKyAgICBtb3YgUjEwLCBSRFgKKworICAg IDsgTG9vcCAxOiBoZWFkICh4PTAuLnJhZGl1cykKKyAgICB4b3IgZWF4LCBlYXgKKy5sb29wMV8x NjoKKyAgICBjbXAgZWF4LCBSOGQKKyAgICBqZ2UgLmFmdGVyX2xvb3AxXzE2CisgICAgY21wIGVh eCwgUjlkCisgICAgamcgLmFmdGVyX2xvb3AxXzE2CisgICAgOyBkaWZmID0gc3JjWyhyYWRpdXMr eCkqMl0gLSBzcmNbKHJhZGl1cy14KSoyXQorICAgIG1vdiBlZHgsIFI5ZAorICAgIGFkZCBlZHgs IGVheAorICAgIHNobCBlZHgsIDEgICAgICAgICAgICAgIDsgYnl0ZSBvZmZzZXQKKyAgICBtb3Z6 eCBlYngsIHdvcmQgW1IxNCArIFJEWF0KKyAgICBtb3YgZWR4LCBSOWQKKyAgICBzdWIgZWR4LCBl YXgKKyAgICBzaGwgZWR4LCAxCisgICAgbW92enggZWN4LCB3b3JkIFtSMTQgKyBSRFhdCisgICAg c3ViIGVieCwgZWN4CisgICAgbW92c3hkIFJEWCwgZWJ4CisgICAgaW11bCBSRFgsIFIxMQorICAg IGFkZCBSMTAsIFJEWAorICAgIG1vdiBSRFgsIFIxMAorICAgIHNhciBSRFgsIDE2CisgICAgbW92 IFJTSSwgUkFYCisgICAgc2hsIFJTSSwgMSAgICAgICAgICAgICAgOyBkc3QgYnl0ZSBvZmZzZXQK KyAgICBtb3YgW1IxMiArIFJTSV0sIGR4CisgICAgaW5jIGVheAorICAgIGptcCAubG9vcDFfMTYK Ky5hZnRlcl9sb29wMV8xNjoKKworICAgIDsgTG9vcCAyOiBzdGVhZHktc3RhdGUgd2l0aCBBVlgy CisgICAgOyBDaGVjayBmb3IgdW5pdCBzdHJpZGVzIChzdGVwID0gMiBmb3IgdWludDE2KQorICAg IGNtcCBSMTMsIDIKKyAgICBqbmUgLmxvb3AyX3NjYWxhcjE2CisgICAgY21wIFIxNSwgMgorICAg IGpuZSAubG9vcDJfc2NhbGFyMTYKKyAgICAKKyAgICA7IENoZWNrIGlmIHdlIGhhdmUgYXQgbGVh c3QgOCBwaXhlbHMKKyAgICBtb3YgZWRpLCBSOGQKKyAgICBzdWIgZWRpLCBSOWQKKyAgICBzdWIg ZWRpLCA4CisgICAgY21wIGVheCwgZWRpCisgICAgamcgLmxvb3AyX3NjYWxhcjE2CisKKyAgICA7 IFNldHVwIHBvaW50ZXJzCisgICAgbGVhIFJESSwgW1IxNCArIFJBWCoyXSAgOyBwTmV3ID0gc3Jj ICsgKHgpKjIKKyAgICBhZGQgUkRJLCBSOQorICAgIGFkZCBSREksIFI5ICAgICAgICAgICAgIDsg Kz0gcmFkaXVzKjIKKyAgICBsZWEgUlNJLCBbUjE0ICsgUkFYKjJdICA7IHBPbGQgPSBzcmMgKyAo eC1yYWRpdXMtMSkqMgorICAgIHN1YiBSU0ksIFI5CisgICAgc3ViIFJTSSwgUjkgICAgICAgICAg ICAgOyAtPSByYWRpdXMqMgorICAgIHN1YiBSU0ksIDIgICAgICAgICAgICAgIDsgLT0gMgorICAg IGxlYSBSQlgsIFtSMTIgKyBSQVgqMl0gIDsgcERzdCA9IGRzdCArIHgqMgorCisgICAgOyBCcm9h ZGNhc3QgaW52CisgICAgdm1vdmQgeG1tNSwgUjExZAorICAgIHZwYnJvYWRjYXN0ZCB5bW01LCB4 bW01CisKKy5sb29wMl9hdngyXzE2OgorICAgIG1vdiBlY3gsIFI4ZAorICAgIHN1YiBlY3gsIFI5 ZAorICAgIHN1YiBlY3gsIDgKKyAgICBjbXAgZWF4LCBlY3gKKyAgICBqZyAubG9vcDJfYXZ4Ml9k b25lMTYKKworICAgIDsgTG9hZCA4eCB1aW50MTYgKDE2IGJ5dGVzKQorICAgIHZtb3ZkcXUgeG1t MCwgW1JESV0KKyAgICB2bW92ZHF1IHhtbTEsIFtSU0ldCisgICAgCisgICAgOyBFeHRlbmQgdG8g OHggaW50MzIKKyAgICB2cG1vdnp4d2QgeW1tMCwgeG1tMAorICAgIHZwbW92enh3ZCB5bW0xLCB4 bW0xCisgICAgdnBzdWJkIHltbTAsIHltbTAsIHltbTEgICAgIDsgOHggczMyIChkaWZmKQorICAg IHZwbXVsbGQgeW1tMCwgeW1tMCwgeW1tNSAgICA7IDh4IHMzMiAoUTE2IGluY3JlbWVudHMpCisK KyAgICA7IFByZWZpeCBzdW0KKyAgICB2cHNsbGRxIHltbTIsIHltbTAsIDQKKyAgICB2cGFkZGQg eW1tMCwgeW1tMCwgeW1tMgorICAgIHZwc2xsZHEgeW1tMiwgeW1tMCwgOAorICAgIHZwYWRkZCB5 bW0wLCB5bW0wLCB5bW0yCisgICAgdmV4dHJhY3RpMTI4IHhtbTIsIHltbTAsIDAKKyAgICB2cHNo dWZkIHhtbTMsIHhtbTIsIDB4RkYKKyAgICB2ZXh0cmFjdGkxMjggeG1tNCwgeW1tMCwgMQorICAg IHZwYWRkZCB4bW00LCB4bW00LCB4bW0zCisgICAgdmluc2VydGkxMjggeW1tMCwgeW1tMCwgeG1t NCwgMQorCisgICAgOyBBZGQgcHJldiBhY2N1bXVsYXRvcgorICAgIHZtb3ZkIHhtbTEsIFIxMGQK KyAgICB2cGJyb2FkY2FzdGQgeW1tMSwgeG1tMQorICAgIHZwYWRkZCB5bW0wLCB5bW0wLCB5bW0x CisKKyAgICA7IEV4dHJhY3QgbGFzdCBmb3IgbmV4dCBpdGVyYXRpb24KKyAgICB2ZXh0cmFjdGkx MjggeG1tNCwgeW1tMCwgMQorICAgIHZwc2h1ZmQgeG1tNiwgeG1tNCwgMHhGRgorICAgIG1vdmQg ZWR4LCB4bW02CisgICAgbW92c3hkIFJEWCwgZWR4CisgICAgbW92IFIxMCwgUkRYCisKKyAgICA7 IFNoaWZ0IGFuZCBwYWNrCisgICAgdnBzcmFkIHltbTAsIHltbTAsIDE2CisgICAgdmV4dHJhY3Rp MTI4IHhtbTIsIHltbTAsIDAKKyAgICB2ZXh0cmFjdGkxMjggeG1tMywgeW1tMCwgMQorICAgIHZw YWNrc3NkdyB4bW0yLCB4bW0yLCB4bW0zCisgICAgdm1vdmRxdSBbUkJYXSwgeG1tMgorCisgICAg OyBBZHZhbmNlIGJ5IDggcGl4ZWxzCisgICAgYWRkIFJESSwgMTYKKyAgICBhZGQgUlNJLCAxNgor ICAgIGFkZCBSQlgsIDE2CisgICAgYWRkIGVheCwgOAorICAgIGptcCAubG9vcDJfYXZ4Ml8xNgor CisubG9vcDJfYXZ4Ml9kb25lMTY6CisgICAgOyBGYWxsIHRocm91Z2ggdG8gc2NhbGFyCisKKy5s b29wMl9zY2FsYXIxNjoKKyAgICBjbXAgZWF4LCBSOGQKKyAgICBqZ2UgLmFmdGVyX2xvb3AyXzE2 CisgICAgbW92IGVkeCwgUjhkCisgICAgc3ViIGVkeCwgUjlkCisgICAgY21wIGVheCwgZWR4Cisg ICAgamdlIC5hZnRlcl9sb29wMl8xNgorICAgIDsgZGlmZiA9IHNyY1socmFkaXVzK3gpKjJdIC0g c3JjWyh4LXJhZGl1cy0xKSoyXQorICAgIG1vdiBlZHgsIFI5ZAorICAgIGFkZCBlZHgsIGVheAor ICAgIHNobCBlZHgsIDEKKyAgICBtb3Z6eCBlYngsIHdvcmQgW1IxNCArIFJEWF0KKyAgICBtb3Yg ZWR4LCBlYXgKKyAgICBzdWIgZWR4LCBSOWQKKyAgICBkZWMgZWR4CisgICAgc2hsIGVkeCwgMQor ICAgIG1vdnp4IGVjeCwgd29yZCBbUjE0ICsgUkRYXQorICAgIHN1YiBlYngsIGVjeAorICAgIG1v dnN4ZCBSRFgsIGVieAorICAgIGltdWwgUkRYLCBSMTEKKyAgICBhZGQgUjEwLCBSRFgKKyAgICBt b3YgUkRYLCBSMTAKKyAgICBzYXIgUkRYLCAxNgorICAgIG1vdiBSU0ksIFJBWAorICAgIHNobCBS U0ksIDEKKyAgICBtb3YgW1IxMiArIFJTSV0sIGR4CisgICAgaW5jIGVheAorICAgIGptcCAubG9v cDJfc2NhbGFyMTYKKy5hZnRlcl9sb29wMl8xNjoKKworICAgIDsgTG9vcCAzOiB0YWlsCisubG9v cDNfMTY6CisgICAgY21wIGVheCwgUjhkCisgICAgamdlIC5lbmQxNgorICAgIDsgZGlmZiA9IHNy Y1soMipsZW4tcmFkaXVzLXgtMSkqMl0gLSBzcmNbKHgtcmFkaXVzLTEpKjJdCisgICAgbW92IGVk eCwgUjhkCisgICAgbGVhIGVkeCwgW2VkeCoyXQorICAgIHN1YiBlZHgsIFI5ZAorICAgIHN1YiBl ZHgsIGVheAorICAgIGRlYyBlZHgKKyAgICBzaGwgZWR4LCAxCisgICAgbW92enggZWJ4LCB3b3Jk IFtSMTQgKyBSRFhdCisgICAgbW92IGVkeCwgZWF4CisgICAgc3ViIGVkeCwgUjlkCisgICAgZGVj IGVkeAorICAgIHNobCBlZHgsIDEKKyAgICBtb3Z6eCBlY3gsIHdvcmQgW1IxNCArIFJEWF0KKyAg ICBzdWIgZWJ4LCBlY3gKKyAgICBtb3ZzeGQgUkRYLCBlYngKKyAgICBpbXVsIFJEWCwgUjExCisg ICAgYWRkIFIxMCwgUkRYCisgICAgbW92IFJEWCwgUjEwCisgICAgc2FyIFJEWCwgMTYKKyAgICBt b3YgUlNJLCBSQVgKKyAgICBzaGwgUlNJLCAxCisgICAgbW92IFtSMTIgKyBSU0ldLCBkeAorICAg IGluYyBlYXgKKyAgICBqbXAgLmxvb3AzXzE2CisuZW5kMTY6CisgICAgdnplcm91cHBlcgorICAg IHBvcCBSMTUKKyAgICBwb3AgUjE0CisgICAgcG9wIFIxMworICAgIHBvcCBSMTIKKyAgICBwb3Ag UkJYCisgICAgcG9wIFJCUAorICAgIHJldAorJWVuZGlmCmRpZmYgLS1naXQgYS9saWJhdmZpbHRl ci94ODYvdmZfYm94Ymx1cl9pbml0LmMgYi9saWJhdmZpbHRlci94ODYvdmZfYm94Ymx1cl9pbml0 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTYwMTNkMzVkOQotLS0g L2Rldi9udWxsCisrKyBiL2xpYmF2ZmlsdGVyL3g4Ni92Zl9ib3hibHVyX2luaXQuYwpAQCAtMCww ICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IE1ha2FyIEt1em5pZXRzb3YKKyAq CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRp bC9hdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3g4Ni9jcHUuaCIKKworI2luY2x1 ZGUgImxpYmF2ZmlsdGVyL3ZmX2JveGJsdXJfZHNwLmgiCisKKy8qCisgKiBXZSBpbXBsZW1lbnQg eDg2IENQVSBkaXNwYXRjaCBmb3IgMUQgcm93IGJsdXJzIHVzZWQgYnkgYm94Ymx1cidzCisgKiBz ZXBhcmFibGUgaG9yaXpvbnRhbC92ZXJ0aWNhbCBwYXNzZXMuCisgKi8KKworI2lmIEhBVkVfWDg2 QVNNCisjaWYgSEFWRV9BVlgyX0VYVEVSTkFMCisvKiAzMi1ieXRlIHZlY3RvciB3aWR0aCAqLwor dm9pZCBmZl9ib3hibHVyX2JsdXJfcm93Yl9hdngyKHVpbnQ4X3QgKmRzdCwgcHRyZGlmZl90IGRz dF9zdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNy YywgcHRyZGlmZl90IHNyY19zdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBieXRlcywgaW50IHJhZGl1cyk7Cit2b2lkIGZmX2JveGJsdXJfYmx1cl9yb3d3X2F2eDIodWlu dDE2X3QgKmRzdCwgcHRyZGlmZl90IGRzdF9zdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVpbnQxNl90ICpzcmMsIHB0cmRpZmZfdCBzcmNfc3RlcCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZXMsIGludCByYWRpdXMpOworCitzdGF0aWMg dm9pZCBibHVyX3JvdzhfYXZ4Mih1aW50OF90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3RlcCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNyYywgcHRyZGlmZl90IHNy Y19zdGVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50IHJhZGl1cykK K3sKKyAgICBmZl9ib3hibHVyX2JsdXJfcm93Yl9hdngyKGRzdCwgZHN0X3N0ZXAsIHNyYywgc3Jj X3N0ZXAsIGxlbiwgcmFkaXVzKTsKK30KKworc3RhdGljIHZvaWQgYmx1cl9yb3cxNl9hdngyKHVp bnQxNl90ICpkc3QsIHB0cmRpZmZfdCBkc3Rfc3RlcCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1aW50MTZfdCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0ZXAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50IHJhZGl1cykKK3sKKyAgICBmZl9ib3hibHVy X2JsdXJfcm93d19hdngyKGRzdCwgZHN0X3N0ZXAsIHNyYywgc3JjX3N0ZXAsIGxlbiAqIDIsIHJh ZGl1cyk7Cit9CisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1g4NkFTTSAqLworCithdl9jb2xkIHZv aWQgZmZfYm94Ymx1cl9kc3BfaW5pdF94ODYoRkZCb3hibHVyRFNQQ29udGV4dCAqZHNwKQorewor I2lmIEhBVkVfWDg2QVNNCisgICAgaW50IGNwdV9mbGFncyA9IGF2X2dldF9jcHVfZmxhZ3MoKTsK KyNpZiBIQVZFX0FWWDJfRVhURVJOQUwKKyAgICBpZiAoRVhURVJOQUxfQVZYMl9GQVNUKGNwdV9m bGFncykpIHsKKyAgICAgICAgZHNwLT5ibHVyX3JvdzggID0gYmx1cl9yb3c4X2F2eDI7CisgICAg ICAgIGRzcC0+Ymx1cl9yb3cxNiA9IGJsdXJfcm93MTZfYXZ4MjsKKyAgICB9CisjZW5kaWYKKyNl bmRpZgorICAgICh2b2lkKSBkc3A7Cit9CisKKwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2thc20v TWFrZWZpbGUgYi90ZXN0cy9jaGVja2FzbS9NYWtlZmlsZQppbmRleCBlNDcwNzBkOTBmLi4yNjU3 OTA2MzlmIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVja2FzbS9NYWtlZmlsZQorKysgYi90ZXN0cy9j aGVja2FzbS9NYWtlZmlsZQpAQCAtNjQsNiArNjQsNyBAQCBBVkZJTFRFUk9CSlMtJChDT05GSUdf QldESUZfRklMVEVSKSAgICAgICs9IHZmX2J3ZGlmLm8KIEFWRklMVEVST0JKUy0kKENPTkZJR19D T0xPUkRFVEVDVF9GSUxURVIpKz0gdmZfY29sb3JkZXRlY3QubwogQVZGSUxURVJPQkpTLSQoQ09O RklHX0NPTE9SU1BBQ0VfRklMVEVSKSArPSB2Zl9jb2xvcnNwYWNlLm8KIEFWRklMVEVST0JKUy0k KENPTkZJR19FUV9GSUxURVIpICAgICAgICAgKz0gdmZfZXEubworQVZGSUxURVJPQkpTLSQoQ09O RklHX0JPWEJMVVJfRklMVEVSKSAgICArPSB2Zl9ib3hibHVyLm8KIEFWRklMVEVST0JKUy0kKENP TkZJR19HQkxVUl9GSUxURVIpICAgICAgKz0gdmZfZ2JsdXIubwogQVZGSUxURVJPQkpTLSQoQ09O RklHX0hGTElQX0ZJTFRFUikgICAgICArPSB2Zl9oZmxpcC5vCiBBVkZJTFRFUk9CSlMtJChDT05G SUdfSURFVF9GSUxURVIpICAgICAgICs9IHZmX2lkZXQubwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hl Y2thc20vY2hlY2thc20uYyBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKaW5kZXggNDQ2OWUw NDNmNS4uOTllMTcwNGNjYSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2thc20vY2hlY2thc20uYwor KysgYi90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5jCkBAIC0zMDAsNiArMzAwLDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB7CiAgICAgI2lmIENPTkZJR19HQkxVUl9GSUxURVIKICAgICAgICAgeyAi dmZfZ2JsdXIiLCBjaGVja2FzbV9jaGVja192Zl9nYmx1ciB9LAogICAgICNlbmRpZgorICAgICNp ZiBDT05GSUdfQk9YQkxVUl9GSUxURVIKKyAgICAgICAgeyAidmZfYm94Ymx1ciIsIGNoZWNrYXNt X2NoZWNrX2JveGJsdXIgfSwKKyAgICAjZW5kaWYKICAgICAjaWYgQ09ORklHX0hGTElQX0ZJTFRF UgogICAgICAgICB7ICJ2Zl9oZmxpcCIsIGNoZWNrYXNtX2NoZWNrX3ZmX2hmbGlwIH0sCiAgICAg I2VuZGlmCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oIGIvdGVzdHMvY2hl Y2thc20vY2hlY2thc20uaAppbmRleCBlMWNjZDQwMTFiLi42ZGE3OGU2ZjMwIDEwMDY0NAotLS0g YS90ZXN0cy9jaGVja2FzbS9jaGVja2FzbS5oCisrKyBiL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNt LmgKQEAgLTE1Miw2ICsxNTIsNyBAQCB2b2lkIGNoZWNrYXNtX2NoZWNrX3ZmX2dibHVyKHZvaWQp Owogdm9pZCBjaGVja2FzbV9jaGVja192Zl9oZmxpcCh2b2lkKTsKIHZvaWQgY2hlY2thc21fY2hl Y2tfdmZfdGhyZXNob2xkKHZvaWQpOwogdm9pZCBjaGVja2FzbV9jaGVja192Zl9zb2JlbCh2b2lk KTsKK3ZvaWQgY2hlY2thc21fY2hlY2tfYm94Ymx1cih2b2lkKTsKIHZvaWQgY2hlY2thc21fY2hl Y2tfdnAzZHNwKHZvaWQpOwogdm9pZCBjaGVja2FzbV9jaGVja192cDhkc3Aodm9pZCk7CiB2b2lk IGNoZWNrYXNtX2NoZWNrX3ZwOWRzcCh2b2lkKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNt L3ZmX2JveGJsdXIuYyBiL3Rlc3RzL2NoZWNrYXNtL3ZmX2JveGJsdXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lZDQxMTFkMDBkCi0tLSAvZGV2L251bGwKKysrIGIv dGVzdHMvY2hlY2thc20vdmZfYm94Ymx1ci5jCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0Eu CisgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImNoZWNrYXNtLmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL21lbV9pbnRlcm5hbC5oIgorCisjaW5jbHVkZSAibGliYXZmaWx0ZXIv dmZfYm94Ymx1cl9kc3AuaCIKKworc3RhdGljIHZvaWQgYmx1cl9yb3c4X3JlZih1aW50OF90ICpk c3QsIHB0cmRpZmZfdCBkc3Rfc3RlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDhfdCAqc3JjLCBwdHJkaWZmX3Qgc3JjX3N0ZXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBsZW4sIGludCByYWRpdXMpCit7CisgICAgaWYgKHJhZGl1cyA8PSAwIHx8IGxlbiA8 PSAwKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAg ICBkc3RbaSAqIGRzdF9zdGVwXSA9IHNyY1tpICogc3JjX3N0ZXBdOworICAgICAgICByZXR1cm47 CisgICAgfQorICAgIGNvbnN0IGludCBsZW5ndGggPSByYWRpdXMgKiAyICsgMTsKKyAgICBjb25z dCBpbnQgaW52ID0gKCgxIDw8IDE2KSArIGxlbmd0aCAvIDIpIC8gbGVuZ3RoOworICAgIGludCBz dW0gPSBzcmNbcmFkaXVzICogc3JjX3N0ZXBdOworICAgIGZvciAoaW50IHggPSAwOyB4IDwgcmFk aXVzOyB4KyspCisgICAgICAgIHN1bSArPSAoaW50KXNyY1t4ICogc3JjX3N0ZXBdIDw8IDE7Cisg ICAgc3VtID0gc3VtICogaW52ICsgKDEgPDwgMTUpOworICAgIGludCB4ID0gMDsKKyAgICBmb3Ig KDsgeCA8PSByYWRpdXMgJiYgeCA8IGxlbjsgeCsrKSB7CisgICAgICAgIGNvbnN0IGludCByaWdo dCA9IChyYWRpdXMgKyB4KSAqIHNyY19zdGVwOworICAgICAgICBjb25zdCBpbnQgbGVmdCAgPSAo cmFkaXVzIC0geCkgKiBzcmNfc3RlcDsKKyAgICAgICAgc3VtICs9ICgoaW50KXNyY1tyaWdodF0g LSAoaW50KXNyY1tsZWZ0XSkgKiBpbnY7CisgICAgICAgIGRzdFt4ICogZHN0X3N0ZXBdID0gKHVp bnQ4X3QpKHN1bSA+PiAxNik7CisgICAgfQorICAgIGZvciAoOyB4IDwgbGVuIC0gcmFkaXVzOyB4 KyspIHsKKyAgICAgICAgY29uc3QgaW50IGluICA9IChyYWRpdXMgKyB4KSAqIHNyY19zdGVwOwor ICAgICAgICBjb25zdCBpbnQgb3V0ID0gKHggLSByYWRpdXMgLSAxKSAqIHNyY19zdGVwOworICAg ICAgICBzdW0gKz0gKChpbnQpc3JjW2luXSAtIChpbnQpc3JjW291dF0pICogaW52OworICAgICAg ICBkc3RbeCAqIGRzdF9zdGVwXSA9ICh1aW50OF90KShzdW0gPj4gMTYpOworICAgIH0KKyAgICBm b3IgKDsgeCA8IGxlbjsgeCsrKSB7CisgICAgICAgIGNvbnN0IGludCBpbiAgPSAoMiAqIGxlbiAt IHJhZGl1cyAtIHggLSAxKSAqIHNyY19zdGVwOworICAgICAgICBjb25zdCBpbnQgb3V0ID0gKHgg LSByYWRpdXMgLSAxKSAqIHNyY19zdGVwOworICAgICAgICBzdW0gKz0gKChpbnQpc3JjW2luXSAt IChpbnQpc3JjW291dF0pICogaW52OworICAgICAgICBkc3RbeCAqIGRzdF9zdGVwXSA9ICh1aW50 OF90KShzdW0gPj4gMTYpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYmx1cl9yb3cxNl9yZWYo dWludDE2X3QgKmRzdCwgcHRyZGlmZl90IGRzdF9zdGVwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdWludDE2X3QgKnNyYywgcHRyZGlmZl90IHNyY19zdGVwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50IHJhZGl1cykKK3sKKyAgICBpZiAocmFkaXVz IDw9IDAgfHwgbGVuIDw9IDApIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkr KykKKyAgICAgICAgICAgICoodWludDE2X3QgKikoKHVpbnQ4X3QgKilkc3QgKyBpICogZHN0X3N0 ZXApID0gKihjb25zdCB1aW50MTZfdCAqKSgoY29uc3QgdWludDhfdCAqKXNyYyArIGkgKiBzcmNf c3RlcCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29uc3QgaW50IHN0ZXBfZSA9IChp bnQpKHNyY19zdGVwID4+IDEpOworICAgIGNvbnN0IGludCBkc3RlcF9lID0gKGludCkoZHN0X3N0 ZXAgPj4gMSk7CisgICAgY29uc3QgaW50IGxlbmd0aCA9IHJhZGl1cyAqIDIgKyAxOworICAgIGNv bnN0IGludCBpbnYgPSAoKDEgPDwgMTYpICsgbGVuZ3RoIC8gMikgLyBsZW5ndGg7CisgICAgaW50 IHN1bSA9IHNyY1tyYWRpdXMgKiBzdGVwX2VdOworICAgIGZvciAoaW50IHggPSAwOyB4IDwgcmFk aXVzOyB4KyspCisgICAgICAgIHN1bSArPSAoaW50KXNyY1t4ICogc3RlcF9lXSA8PCAxOworICAg IHN1bSA9IHN1bSAqIGludiArICgxIDw8IDE1KTsKKyAgICBpbnQgeCA9IDA7CisgICAgZm9yICg7 IHggPD0gcmFkaXVzICYmIHggPCBsZW47IHgrKykgeworICAgICAgICBjb25zdCBpbnQgcmlnaHQg PSAocmFkaXVzICsgeCkgKiBzdGVwX2U7CisgICAgICAgIGNvbnN0IGludCBsZWZ0ICA9IChyYWRp dXMgLSB4KSAqIHN0ZXBfZTsKKyAgICAgICAgc3VtICs9ICgoaW50KXNyY1tyaWdodF0gLSAoaW50 KXNyY1tsZWZ0XSkgKiBpbnY7CisgICAgICAgIGRzdFt4ICogZHN0ZXBfZV0gPSAodWludDE2X3Qp KHN1bSA+PiAxNik7CisgICAgfQorICAgIGZvciAoOyB4IDwgbGVuIC0gcmFkaXVzOyB4KyspIHsK KyAgICAgICAgY29uc3QgaW50IGluICA9IChyYWRpdXMgKyB4KSAqIHN0ZXBfZTsKKyAgICAgICAg Y29uc3QgaW50IG91dCA9ICh4IC0gcmFkaXVzIC0gMSkgKiBzdGVwX2U7CisgICAgICAgIHN1bSAr PSAoKGludClzcmNbaW5dIC0gKGludClzcmNbb3V0XSkgKiBpbnY7CisgICAgICAgIGRzdFt4ICog ZHN0ZXBfZV0gPSAodWludDE2X3QpKHN1bSA+PiAxNik7CisgICAgfQorICAgIGZvciAoOyB4IDwg bGVuOyB4KyspIHsKKyAgICAgICAgY29uc3QgaW50IGluICA9ICgyICogbGVuIC0gcmFkaXVzIC0g eCAtIDEpICogc3RlcF9lOworICAgICAgICBjb25zdCBpbnQgb3V0ID0gKHggLSByYWRpdXMgLSAx KSAqIHN0ZXBfZTsKKyAgICAgICAgc3VtICs9ICgoaW50KXNyY1tpbl0gLSAoaW50KXNyY1tvdXRd KSAqIGludjsKKyAgICAgICAgZHN0W3ggKiBkc3RlcF9lXSA9ICh1aW50MTZfdCkoc3VtID4+IDE2 KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX3Jvdzgodm9pZCkKK3sKKyAgICBGRkJv eGJsdXJEU1BDb250ZXh0IGRzcCA9IHswfTsKKyAgICAvKiBTZXQgcmVmIGJ5IGRlZmF1bHQsIHRo ZW4gbGV0IHg4NiBvdmVycmlkZSAqLworICAgIGRzcC5ibHVyX3JvdzggPSBibHVyX3JvdzhfcmVm OworICAgIGZmX2JveGJsdXJfZHNwX2luaXRfeDg2KCZkc3ApOworCisgICAgZGVjbGFyZV9mdW5j KHZvaWQsIHVpbnQ4X3QgKiwgcHRyZGlmZl90LCBjb25zdCB1aW50OF90ICosIHB0cmRpZmZfdCwg aW50LCBpbnQpOworCisgICAgTE9DQUxfQUxJR05FRF8zMih1aW50OF90LCBzcmMsIFsyMDQ4XSk7 CisgICAgTE9DQUxfQUxJR05FRF8zMih1aW50OF90LCBkc3RfcmVmLCBbMjA0OF0pOworICAgIExP Q0FMX0FMSUdORURfMzIodWludDhfdCwgZHN0X25ldywgWzIwNDhdKTsKKworICAgIGZvciAoaW50 IGl0ZXIgPSAwOyBpdGVyIDwgMTY7IGl0ZXIrKykgeworICAgICAgICBjb25zdCBpbnQgbGVuID0g MzIgKyAocm5kKCkgJSAyNTYpOworICAgICAgICBjb25zdCBpbnQgcmFkaXVzID0gRkZNSU4oKGxl biAtIDEpIC8gMiwgcm5kKCkgJSAxNik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVu OyBpKyspCisgICAgICAgICAgICBzcmNbaV0gPSBybmQoKTsKKworICAgICAgICBpZiAoY2hlY2tf ZnVuYyhkc3AuYmx1cl9yb3c4LCAiYm94Ymx1cl9ibHVyX3JvdzgiKSkgeworICAgICAgICAgICAg Y2FsbF9yZWYoZHN0X3JlZiwgMSwgc3JjLCAxLCBsZW4sIHJhZGl1cyk7CisgICAgICAgICAgICBj YWxsX25ldyhkc3RfbmV3LCAxLCBzcmMsIDEsIGxlbiwgcmFkaXVzKTsKKyAgICAgICAgICAgIGlm IChtZW1jbXAoZHN0X3JlZiwgZHN0X25ldywgbGVuKSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7 CisgICAgICAgICAgICBiZW5jaF9uZXcoZHN0X25ldywgMSwgc3JjLCAxLCBsZW4sIHJhZGl1cyk7 CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX3JvdzE2KHZvaWQpCit7 CisgICAgRkZCb3hibHVyRFNQQ29udGV4dCBkc3AgPSB7MH07CisgICAgZHNwLmJsdXJfcm93MTYg PSBibHVyX3JvdzE2X3JlZjsKKyAgICBmZl9ib3hibHVyX2RzcF9pbml0X3g4NigmZHNwKTsKKwor ICAgIGRlY2xhcmVfZnVuYyh2b2lkLCB1aW50MTZfdCAqLCBwdHJkaWZmX3QsIGNvbnN0IHVpbnQx Nl90ICosIHB0cmRpZmZfdCwgaW50LCBpbnQpOworCisgICAgTE9DQUxfQUxJR05FRF8zMih1aW50 MTZfdCwgc3JjLCBbMjA0OF0pOworICAgIExPQ0FMX0FMSUdORURfMzIodWludDE2X3QsIGRzdF9y ZWYsIFsyMDQ4XSk7CisgICAgTE9DQUxfQUxJR05FRF8zMih1aW50MTZfdCwgZHN0X25ldywgWzIw NDhdKTsKKworICAgIGZvciAoaW50IGl0ZXIgPSAwOyBpdGVyIDwgMTY7IGl0ZXIrKykgeworICAg ICAgICBjb25zdCBpbnQgbGVuID0gMzIgKyAocm5kKCkgJSAyNTYpOworICAgICAgICBjb25zdCBp bnQgcmFkaXVzID0gRkZNSU4oKGxlbiAtIDEpIC8gMiwgcm5kKCkgJSAxNik7CisgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBzcmNbaV0gPSBybmQoKTsK KworICAgICAgICBpZiAoY2hlY2tfZnVuYyhkc3AuYmx1cl9yb3cxNiwgImJveGJsdXJfYmx1cl9y b3cxNiIpKSB7CisgICAgICAgICAgICBjYWxsX3JlZihkc3RfcmVmLCAyLCBzcmMsIDIsIGxlbiwg cmFkaXVzKTsKKyAgICAgICAgICAgIGNhbGxfbmV3KGRzdF9uZXcsIDIsIHNyYywgMiwgbGVuLCBy YWRpdXMpOworICAgICAgICAgICAgaWYgKG1lbWNtcChkc3RfcmVmLCBkc3RfbmV3LCBsZW4gKiBz aXplb2YodWludDE2X3QpKSkKKyAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICBi ZW5jaF9uZXcoZHN0X25ldywgMiwgc3JjLCAyLCBsZW4sIHJhZGl1cyk7CisgICAgICAgIH0KKyAg ICB9Cit9CisKK3ZvaWQgY2hlY2thc21fY2hlY2tfYm94Ymx1cih2b2lkKTsKK3ZvaWQgY2hlY2th c21fY2hlY2tfYm94Ymx1cih2b2lkKQoreworICAgIGNoZWNrX3JvdzgoKTsKKyAgICByZXBvcnQo ImJveGJsdXJfcm93OCIpOworICAgIGNoZWNrX3JvdzE2KCk7CisgICAgcmVwb3J0KCJib3hibHVy X3JvdzE2Iik7Cit9CisKKwotLSAKMi40OS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0IC0tIGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gZmZtcGVnLWRl dmVsLWxlYXZlQGZmbXBlZy5vcmcK