From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id DF99D71050; Wed, 20 Oct 2021 14:46:53 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org DF99D71050 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1634730414; bh=FKlRoLF1Zm2MhZPB57C8gBsqRujHIPrkS+PlKrIRe8E=; h=To:Cc:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=iQE8gw6IP1CsplKOWl4+Q8p+Bk4XdAGw6qgHO4pLKajPykMyW59cQREn57YA6ePNN ZLaVtSjtMmXqgj4GUTLOeBTlU3jgQRPLTFMUmWwrqwpZu3DqHjiepieJjC/wyYRpPE m9wxbx3WlZq0/GDHPhoDwipFFlmlHJMNnHeJR1bQ= Received: from f176.i.mail.ru (f176.i.mail.ru [94.100.178.162]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id BECE071050 for ; Wed, 20 Oct 2021 14:46:51 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org BECE071050 Received: by f176.i.mail.ru with local (envelope-from ) id 1mdA3V-0000sr-Vi; Wed, 20 Oct 2021 14:46:50 +0300 Received: by e.mail.ru with HTTP; Wed, 20 Oct 2021 14:46:49 +0300 To: kashkin.nsaa@gmail.com Cc: tarantool-patches@dev.tarantool.org MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 16347190431874040412 X-SenderField-Remind: 0 Date: Wed, 20 Oct 2021 14:46:49 +0300 X-Priority: 3 (Normal) Message-ID: <1634730409.649674530@f176.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--9eEd48A4343373f7395cb3562C4b927E1634730409" In-Reply-To: <20211020083608.2280-1-lord.nemo@protonmail.com> References: <20211020083608.2280-1-lord.nemo@protonmail.com> X-7564579A: EEAE043A70213CC8 X-77F55803: 119C1F4DF6A9251C72B1C60A8907C0816C7A67870752FB4DD77141A7B597D8DE8FD872164937FA4C613FFACA05AA4C1C6D33B70C09E63FA630BAB798713590CD5736728C14DC5C2F X-7FA49CB5: 70AAF3C13DB7016878DA827A17800CE708D1A470FD61124ED82A6BABE6F325AC08BE7437D75B48FABCF491FFA38154B613377AFFFEAFD2691661749BA6B9773596563325B6E011C8C2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6778DA827A17800CE745A4951BB4A6F568EA1F7E6F0F101C6723150C8DA25C47586E58E00D9D99D84E1BDDB23E98D2D38BBCA57AF85F7723F2C8C15CDDB98114C1D2782F1B9A00CE9ACC7F00164DA146DAFE8445B8C89999728AA50765F7900637F6B57BC7E64490618DEB871D839B7333395957E7521B51C2DFABB839C843B9C08941B15DA834481F8AA50765F7900637F6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA7E827F84554CEF5019E625A9149C048EE9ECD01F8117BC8BEE2021AF6380DFAD18AA50765F790063735872C767BF85DA227C277FBC8AE2E8BDCE939D40DBB93CA75ECD9A6C639B01B4E70A05D1297E1BBCB5012B2E24CD356 X-B7AD71C0: AC4F5C86D027EB782CDD5689AFBDA7A213B5FB47DCBC3458834459D11680B505ACAC5804C70FA37CF2B1639EC7496E4B X-C1DE0DAB: 0D63561A33F958A5B9B508A726BCC7788CA1A0BC1E777DE9FD38BD7A15AE6FFDBDC6A1CF3F042BAD6DF99611D93F60EF166FC1BB2721D293DC48ACC2A39D04F89CDFB48F4795C241BDAD6C7F3747799A X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D346F8291983715AC66CB2F6B7D4EFD66676C4E76D9D38856006A0004289856BB679BE0B4D2A0FB00201D7E09C32AA3244C62CBFE1CC876F777FAF2560F7636C07439C99C45E8D137E9729B2BEF169E0186 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhI+rnKQba1jsapAfgA/oCtg== X-Mailru-MI: 1000000000800 X-Mailru-Sender: EFA0F3A8419EF21689D6D9D711D6B27866489DB92D07C163677B26184B99A8ED1462D73A12102A1406CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED567EA787935ED9F1B X-Mras: Ok X-Spam: undefined Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH=5D_sql=3A_Replaced_naive_?= =?utf-8?q?position_alg_with_KMP?= X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: =?utf-8?b?0JzQsNC60YHQuNC8INCa0L7RgNGP0LrRiNC40L0gdmlhIFRhcmFudG9vbC1w?= =?utf-8?q?atches?= Reply-To: =?UTF-8?B?0JzQsNC60YHQuNC8INCa0L7RgNGP0LrRiNC40L0=?= Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--9eEd48A4343373f7395cb3562C4b927E1634730409 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpISBUaGFua3MgZm9yIHRoZSBwYXRjaCEKUGxlYXNlIGNvbnNpZGVyIG15IGNvbW1lbnRzIGJl bG93LgrCoApVc2UgdGhlIGltcGVyYXRpdmUgbW9vZCBpbiB0aGUgc3ViamVjdCBsaW5lIGFzIGl0 IGlzIHN0YXRlZCBpbiB0aGUgZGV2ZWxvcGVyCmd1aWRlbGluZVsxXS4gQSBwcm9wZXJseSBmb3Jt ZWQgR2l0wqBjb21taXQgc3ViamVjdMKgbGluZSBzaG91bGQgYWx3YXlzIGJlCmFibGUgdG8gY29t cGxldGUgdGhlIGZvbGxvd2luZ8Kgc2VudGVuY2U6IOKAnElmIGFwcGxpZWQsIHRoaXMgY29tbWl0 IHdpbGwgwqAKL3lvdXIgc3ViamVjdCBsaW5lIGhlcmUvIOKAnS4gCj7QodGA0LXQtNCwLCAyMCDQ vtC60YLRj9Cx0YDRjyAyMDIxLCAxMTozNyArMDM6MDAg0L7RgiBMb3JkIHZpYSBUYXJhbnRvb2wt cGF0Y2hlcyA8dGFyYW50b29sLXBhdGNoZXNAZGV2LnRhcmFudG9vbC5vcmc+Ogo+wqAKPkZyb206 IEdsZWIgPCBrYXNoa2luLm5zYWFAZ21haWwuY29tID4KPgo+UmVwbGFjZWQgcG9zaXRpb25pbmcg bG9naWMgaW4gUE9TSVRJT04oKSBhbmQgUkVQTEFDRSgpIHNxbCBmdW5jdGlvbnMKVHlwbzogcy9z cWwvU1FMCj53aXRoIEtudXRoLU1vcnJpcy1QcmF0dCBhbGdvcml0aG0gYnkgYWRkaW5nIHR3byBk aWZmZXJlbnQgdmVyc2lvbnMKPm9mIGxhdHRlciBmb3IgU1RSSU5HIGFuZCBWQVJCSU5BUlkgYXJn dW1lbnRzIGFuZCBjb3JyZXNwb25kaW5nCj5wcmVmaXggdGFibGUgZ2VuZXJhdG9ycy4KPlNsaWdo dGx5IGFkYXB0ZWQgdGVzdHMgdG8gZml0IG5ldyBjb2xsYXRpb24gcnVsZXMgdGhhdCBkaWZmZXIK PmRlY29yYXRlZCBsZXR0ZXJzLgo+Cj5JbXByb3ZlZCBhc3ltcHRvdGljcyBvZiBwb3NpdGlvbmlu ZyBsb2dpYyB0bzoKPnRpbWUgTyhoYXlzdGFja19sZW4gKyBuZWVkbGVfbGVuKSwgbWVtIE8obmVl ZGxlX2xlbikKPkFzIG9uZSBvZiBjb2xsYXRpbmcgdHlwZXMgaXMgYSB1bmljb2RlIHN0cmluZywK VHlwbzogcy91bmljb2RlL1VuaWNvZGUKPklDVSBVQ2hhckl0ZXJhdG9ycyBoYWQgdG8gYmUgdXNl ZCBhbmQgdGh1cyB1bmljb2RlClR5cG86IHMvdW5pY29kZS9Vbmljb2RlCj5sZXR0ZXJzIGFyZSBj b21wYXJlZCBhcyBVQ2hhcjMyIHZhbHVlcyBhbmQgbm9ybWFsaXphdGlvbgo+aXMgbm90IGRvbmUg KCdhJyBhbmQgJ8OkJyBhcmUgdHJlYXRlZCBhcyBkaWZmZXJlbnQpCj4KPkNsb3NlcyAjNjQ5Mgo+ LS0tCkhlcmUgaXMgeW91ciBub3RlcyBzZWN0aW9uLCB3aGVyZSB5b3UgY2FuIHByb3ZpZGUgYW55 IGFkZGl0aW9uYWwKaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbGluayB0byB0aGUgaXNzdWUsIHRo ZSBsaW5rIHRvIHRoZQpHaXRIdWIgYnJhbmNoLCBvciBhbnkgb3RoZXIgYWRkaXRpb25hbCBjb21t ZW50cy4gSXQgd291bGQgYmUKbXVjaCBtb3JlIGNvbnZpbmllbnQgaWYgeW91IGNvdWxkIHByb3Zp ZGUgdGhhdCBpbmZvcm1hdGlvbiBoZXJlLgpDaGVjayB0aGlzWzJdIGFzIGFuIGV4YW1wbGUuCj7C oHNyYy9ib3gvc3FsL2Z1bmMuYyB8IDQwMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0KPsKgdGVzdC9zcWwtdGFwL3Bvc2l0aW9uLnRlc3QubHVhIHwgOSArLQo+wqAyIGZpbGVzIGNo YW5nZWQsIDMyMSBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKPgo+ZGlmZiAtLWdpdCBh L3NyYy9ib3gvc3FsL2Z1bmMuYyBiL3NyYy9ib3gvc3FsL2Z1bmMuYwo+aW5kZXggMjlkNzEzZmQw Li5mZTNjMTY4MjggMTAwNjQ0Cj4tLS0gYS9zcmMvYm94L3NxbC9mdW5jLmMKPisrKyBiL3NyYy9i b3gvc3FsL2Z1bmMuYwo+QEAgLTI5MSw2ICsyOTEsMTQ3IEBAIGFic0Z1bmMoc3FsX2NvbnRleHQg KiBjb250ZXh0LCBpbnQgYXJnYywgc3FsX3ZhbHVlICoqIGFyZ3YpCj7CoCB9Cj7CoH0KPsKgCj4r LyoqCj4rICogSW1wbGVtZW50YXRpb24gb2YgcHJlZml4IHRhYmxlIGdlbmVyYXRvcgo+KyAqIHBy ZWZpeF90YWJsZV9nZW4oKSBpcyBhIHBhcnQgb2YgS251dGgtTW9ycmlzLVByYXR0IGFsZ29yaXRo bQo+KyAqIHRoYXQgaXMgdXNlZCBpbiBwb3NpdGlvbigpIGFuZCByZXBsYWNlRnVuYygpIHRvIGZp bmQKPisgKiBpbnN0YW5jZXMgb2YgYG5lZWRsZWAgaW4gYGhheXN0YWNrYCBiaW4gZGF0YQo+KyAq Lwo+K2lubGluZSBzdGF0aWMgdm9pZAo+K3ByZWZpeF90YWJsZV9nZW5fYmluKGNvbnN0IHVuc2ln bmVkIGNoYXIgKiBuZWVkbGUsCj4rIGNvbnN0IHNpemVfdCBuX25lZWRsZV9ieXRlcywKPisgc2l6 ZV90ICogdGFibGUpCldoZW4gZGVjbGFyaW5nIHBvaW50ZXIgZGF0YSBvciBhIGZ1bmN0aW9uIHRo YXQgcmV0dXJucyBhIHBvaW50ZXIKdHlwZSwgdGhlIHByZWZlcnJlZCB1c2Ugb2YgKiBpcyBhZGph Y2VudCB0byB0aGUgZGF0YSBuYW1lIG9yIGZ1bmN0aW9uIG5hbWUuCj4rewpUaGUgaW5kZW50YXRp b24gc3RlcCBzaG91bGQgYmXCoGZvdXIgd2hpdGVzcGFjZXMsIHNvIHBsZWFzZSBmaXggdGhlCmlu ZGVudGF0aW9uIGhlcmUgYW5kIGJlbG93Lgo+KyBzaXplX3QgaSA9IDEsIGogPSAwOwo+KyB0YWJs ZVswXSA9IDA7Cj4rIHdoaWxlIChpIDwgbl9uZWVkbGVfYnl0ZXMpIHsKPisgaWYgKG5lZWRsZVtp XSAhPSBuZWVkbGVbal0pIHsKPisgaWYgKGogPT0gMCkgewo+KyB0YWJsZVtpXSA9IDA7Cj4rICsr aTsKPisgfSBlbHNlCj4rIGogPSB0YWJsZVtqIC0gMV07Cj4rIH0KPisgZWxzZSB7Cj4rIHRhYmxl W2ldID0gaiArIDE7Cj4rICsraTsKPisgKytqOwo+KyB9Cj4rIH0KPit9ClVzZSBicmFjZXMgaW4g Ym90aCBicmFuY2hlcyBpZiBvbmx5IG9uZSBicmFuY2ggb2YgYSBjb25kaXRpb25hbApzdGF0ZW1l bnQgaXMgYSBzaW5nbGUgc3RhdGVtZW50LiBBbHNvLCB0aGUgYnJhY2VzIGNvZGUgc3R5bGUKc2hv dWxkIGJlIHRoZSBmb2xsb3dpbmdbM10uCj4rCj4rLyoqCj4rICogSW1wbGVtZW50YXRpb24gb2Yg cHJlZml4IHRhYmxlIGdlbmVyYXRvciB1c2luZyBVQ2hhckl0ZXJhdG9ycwo+KyAqIHByZWZpeF90 YWJsZV9nZW4oKSBpcyBhIHBhcnQgb2YgS251dGgtTW9ycmlzLVByYXR0IGFsZ29yaXRobQo+KyAq IHRoYXQgaXMgdXNlZCBpbiBwb3NpdGlvbigpIHRvIGZpbmQgaW5zdGFuY2VzIG9mIGBuZWVkbGVg Cj4rICogaW4gYGhheXN0YWNrYCB1bmljb2RlIHN0cmluZwo+KyAqLwo+K2lubGluZSBzdGF0aWMg dm9pZAo+K3ByZWZpeF90YWJsZV9nZW5fdXN0cihjb25zdCBVQ2hhckl0ZXJhdG9yICogbmVlZGxl X2JlZ2luLAo+KyBjb25zdCB1bnNpZ25lZCBjaGFyICogbmVlZGxlX3N0ciwKU2VlIHRoZSBjb21t ZW50IGFib3V0IHRoZSBwb2ludGVyIGRlY2xhcmF0aW9uIGFib3ZlLgo+KyBzaXplX3Qgbl9uZWVk bGVfYnl0ZXMsCj4rIHNpemVfdCBuX25lZWRsZV9jaGFycywKPisgc2l6ZV90IHRhYmxlW10pCj4r ewo+KyB0YWJsZVswXSA9IDA7Cj4rIFVDaGFySXRlcmF0b3IgbmVlZGxlX2l0ZXI7Cj4rIFVDaGFy SXRlcmF0b3Igc2Vjb25kX2l0ZXI7Cj4rIHVpdGVyX3NldFVURjgoJm5lZWRsZV9pdGVyLCBuZWVk bGVfc3RyLCBuX25lZWRsZV9ieXRlcyk7Cj4rIHVpdGVyX3NldFVURjgoJnNlY29uZF9pdGVyLCBu ZWVkbGVfc3RyLCBuX25lZWRsZV9ieXRlcyk7Cj4rIG5lZWRsZV9pdGVyLm5leHQoJm5lZWRsZV9p dGVyKTsKPisgd2hpbGUgKG5lZWRsZV9pdGVyLmdldEluZGV4KCZuZWVkbGVfaXRlciwgVUlURVJf Q1VSUkVOVCkgPCBuX25lZWRsZV9jaGFycykgewpQbGVhc2UsIGZvbGxvdyB0aGUgaW5kZW50YXRp b24gcnVsZXMgaGVyZSBhbmQgYmVsb3cuIEEgbG9vcOKAmXMgYm9keSBzaG91bGQgYmUgaW5kZW50 ZWQuCj4rIGlmIChuZWVkbGVfaXRlci5jdXJyZW50KCZuZWVkbGVfaXRlcikgIT0gc2Vjb25kX2l0 ZXIuY3VycmVudCgmc2Vjb25kX2l0ZXIpKSB7Cj4rIGlmIChzZWNvbmRfaXRlci5nZXRJbmRleCgm c2Vjb25kX2l0ZXIsIFVJVEVSX0NVUlJFTlQpID09IDApIHsKPisgdGFibGVbbmVlZGxlX2l0ZXIu Z2V0SW5kZXgoJm5lZWRsZV9pdGVyLCBVSVRFUl9DVVJSRU5UKV0gPSAwOwo+KyBuZWVkbGVfaXRl ci5uZXh0KCZuZWVkbGVfaXRlcik7Cj4rIH0gZWxzZQo+KyBzZWNvbmRfaXRlci5tb3ZlKCZzZWNv bmRfaXRlciwgdGFibGVbc2Vjb25kX2l0ZXIuZ2V0SW5kZXgoJnNlY29uZF9pdGVyLCBVSVRFUl9D VVJSRU5UKSAtIDFdLCBVSVRFUl9TVEFSVCk7Cj4rIH0KU2VlIHRoZSBjb21tZW50IGFib3V0IGJy YWNlcyBhYm92ZS4KPisgZWxzZSB7Cj4rIHRhYmxlW25lZWRsZV9pdGVyLmdldEluZGV4KCZuZWVk bGVfaXRlciwgVUlURVJfQ1VSUkVOVCldID0gc2Vjb25kX2l0ZXIuZ2V0SW5kZXgoJnNlY29uZF9p dGVyLCBVSVRFUl9DVVJSRU5UKSArIDE7Cj4rIG5lZWRsZV9pdGVyLm5leHQoJm5lZWRsZV9pdGVy KTsKPisgc2Vjb25kX2l0ZXIubmV4dCgmc2Vjb25kX2l0ZXIpOwo+KyB9Cj4rIH0KPit9Cj4rCj4r LyoqCj4rICogSW1wbGVtZW50YXRpb24gb2YgS01QIGFsZ29yaXRobSB0byBmaW5kIHN1YnN0cmlu Zwo+KyAqIGluIGEgYmluIGFycmF5IHN0YXJ0aW5nIGZyb20gZ2l2ZW4gcG9zaXRpb24uCj4rICoK PisgKiBSZXF1aWVyZXMgaW5kZXggZm9yIHN0YXJ0aW5nIHBvc2l0aW9uIGluIGBoYXlzdGFja2Au Cj4rICoKVHlwZTogcy9SZXF1aWVyZXMvUmVxdWlyZXMKPisgKiBSZXR1cm5zIGZvdW5kIHN1YnN0 cmluZyBwb3NpdGlvbiArIDEgb3IgMCBpZiBub25lLgpNaW5vcjrCoEkgZ3Vlc3MsIGl0IHNob3Vs ZCBiZSDigJhSZXR1cm5zIGZvdW5kIHN1YnN0cmluZyBwb3NpdGlvbiArIDEgb3IgMAppZiB0aGVy ZSBpcyBubyBzdWNoIHN1YnN0cmluZy7igJkKPisgKi8KPitzdGF0aWMgaW50Cj4ra21wX2Jpbihj b25zdCB1bnNpZ25lZCBjaGFyICogaGF5c3RhY2tfc3RyLAo+KyBjb25zdCB1bnNpZ25lZCBjaGFy ICogbmVlZGxlX3N0ciwKPisgc2l6ZV90IG5faGF5c3RhY2tfYnl0ZXMsCj4rIHNpemVfdCBuX25l ZWRsZV9ieXRlcywKQXMgSSBzZWUgbm8gY2hhbmdlcyB0byB0aGVzZSBhcmdzIGluIHRoZSBmdW5j dGlvbiBib2R5LCBJIHRoaW5rIHRoZXkKc2hvdWxkIGJlIGRlY2xhcmVkIGFzIGEgY29uc3RhbnQu Cj4rIHNpemVfdCBpLAo+KyBjb25zdCBzaXplX3QgKiBwcmVmaXhfdGFibGUpClNlZSB0aGUgY29t bWVudCBhYm91dCB0aGUgcG9pbnRlciBkZWNsYXJhdGlvbiBhYm92ZS4KPit7Cj4rIHNpemVfdCBq ID0gMDsKPisgaW50IHBvc2l0aW9uID0gMDsKPisgd2hpbGUgKGkgPCBuX2hheXN0YWNrX2J5dGVz KSB7Cj4rIGlmIChuZWVkbGVfc3RyW2pdID09IGhheXN0YWNrX3N0cltpXSkgewo+KyArK2k7Cj4r ICsrajsKPisgfQo+KyBlbHNlIHsKPisgaWYgKGogPT0gMCkgewo+KyArK2k7Cj4rIH0gZWxzZSB7 Cj4rIGogPSBwcmVmaXhfdGFibGVbaiAtIDFdOwo+KyB9Cj4rIH0KPisgaWYgKGogPj0gbl9uZWVk bGVfYnl0ZXMpIHsKPisgcG9zaXRpb24gPSBpIC0gaiArIDE7Cj4rIHJldHVybiBwb3NpdGlvbjsK PisgfQo+KyB9Cj4rIHJldHVybiBwb3NpdGlvbjsKPit9ClNlZSB0aGUgY29tbWVudCBhYm91dCB0 aGXCoGluZGVudGF0aW9uIGFib3ZlLsKgCj4rCj4rLyoqCj4rICogSW1wbGVtZW50YXRpb24gb2Yg S01QIGFsZ29yaXRobSB0byBmaW5kIHN1YnN0cmluZwo+KyAqIGluIGFuIGFycmF5IG9mIHVuaWNv ZGUgY2hhcnMgc3RhcnRpbmcgZnJvbSBnaXZlbiBpdGVyYXRvci4KPisgKgo+KyAqIFJlcXVpZXJl cyBVQ2hhckl0ZXJhdG9yIFtoYXlzdGFja19pdGVyXSBvZiBzdGFydGluZyBwb3NpdGlvbgo+KyAq IGluIGBoYXlzdGFja2AsIGl0ZXJhdG9yIGdldHMgc2V0IHRvIHRoZSBmaXJzdCBpdGVtIGFmdGVy IGZvdW5kCj4rICogYG5lZWRsZWAgb3IgcmVhY2hlcyB0aGUgZW5kIG9mIGhheXN0YWNrIGlmIG5v bmUuCj4rICoKPisgKiBSZXR1cm5zIGZvdW5kIHN1YnN0cmluZyBwb3NpdGlvbiArIDEgb3IgMCBp ZiBub25lLgo+KyAqLwo+K2lubGluZSBzdGF0aWMgaW50Cj4ra21wX3VzdHIoc3RydWN0IHNxbF9j b250ZXh0ICogY29udGV4dCwKPisgVUNoYXJJdGVyYXRvciAqIGhheXN0YWNrX2l0ZXIsCj4rIFVD aGFySXRlcmF0b3IgKiBuZWVkbGVfaXRlciwKPisgc2l6ZV90IG5faGF5c3RhY2tfY2hhcnMsCkkg dGhpbmsgdGhhdCBhcmcgc2hvdWxkIGJlIGRlY2xhcmVkIGFzIGHCoGNvbnN0Lgo+KyBjb25zdCBz aXplX3QgKiBwcmVmaXhfdGFibGUpClNlZSB0aGUgY29tbWVudCBhYm91dCB0aGUgcG9pbnRlciBk ZWNsYXJhdGlvbiBhYm92ZS4KPit7Cj4rIHN0cnVjdCBjb2xsICpjb2xsID0gc3FsR2V0RnVuY0Nv bGxTZXEoY29udGV4dCk7Cj4rIGludCBwb3NpdGlvbiA9IDA7Cj4rIHdoaWxlIChoYXlzdGFja19p dGVyLT5nZXRJbmRleChoYXlzdGFja19pdGVyLCBVSVRFUl9DVVJSRU5UKSA8IG5faGF5c3RhY2tf Y2hhcnMpIHsKPisgaWYgKG5lZWRsZV9pdGVyLT5jdXJyZW50KG5lZWRsZV9pdGVyKSA9PSBoYXlz dGFja19pdGVyLT5jdXJyZW50KGhheXN0YWNrX2l0ZXIpKSB7Cj4rIG5lZWRsZV9pdGVyLT5uZXh0 KG5lZWRsZV9pdGVyKTsKPisgaGF5c3RhY2tfaXRlci0+bmV4dChoYXlzdGFja19pdGVyKTsKPisg fSBlbHNlIHsKPisgaWYgKG5lZWRsZV9pdGVyLT5nZXRJbmRleChuZWVkbGVfaXRlciwgVUlURVJf Q1VSUkVOVCkgPT0gMCkgewo+KyBoYXlzdGFja19pdGVyLT5uZXh0KGhheXN0YWNrX2l0ZXIpOwo+ KyB9IGVsc2Ugewo+KyBuZWVkbGVfaXRlci0+bW92ZShuZWVkbGVfaXRlciwgcHJlZml4X3RhYmxl W25lZWRsZV9pdGVyLT5nZXRJbmRleChuZWVkbGVfaXRlciwgVUlURVJfQ1VSUkVOVCkgLSAxXSwg VUlURVJfU1RBUlQpOwo+KyB9Cj4rIH0KPisgaWYgKCFuZWVkbGVfaXRlci0+aGFzTmV4dChuZWVk bGVfaXRlcikpIHsKPisgcG9zaXRpb24gPSBoYXlzdGFja19pdGVyLT5nZXRJbmRleChoYXlzdGFj a19pdGVyLCBVSVRFUl9DVVJSRU5UKSAtIG5lZWRsZV9pdGVyLT5nZXRJbmRleChuZWVkbGVfaXRl ciwgVUlURVJfQ1VSUkVOVCkgKyAxOwo+KyBoYXlzdGFja19pdGVyLT5uZXh0KGhheXN0YWNrX2l0 ZXIpOwo+KyByZXR1cm4gcG9zaXRpb247Cj4rIH0KPisgfQo+KyByZXR1cm4gcG9zaXRpb247Cj4r fQo+KwpTZWUgdGhlIGNvbW1lbnQgYWJvdXQgdGhlwqBpbmRlbnRhdGlvbiBhYm92ZS4KPsKgLyoq Cj7CoMKgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgcG9zaXRpb24oKSBmdW5jdGlvbi4KPsKgwqAq Cj5AQCAtMzAzLDcgKzQ0NCw3IEBAIGFic0Z1bmMoc3FsX2NvbnRleHQgKiBjb250ZXh0LCBpbnQg YXJnYywgc3FsX3ZhbHVlICoqIGFyZ3YpCj7CoMKgKiBvY2N1cnJlbmNlIG9mIG5lZWRsZSwgb3Ig MCBpZiBuZWVkbGUgbmV2ZXIgb2NjdXJzIGluIGhheXN0YWNrLgo+wqDCoCovCj7CoHN0YXRpYyB2 b2lkCj4tcG9zaXRpb25fZnVuYyhzdHJ1Y3Qgc3FsX2NvbnRleHQgKmNvbnRleHQsIGludCBhcmdj LCBzdHJ1Y3QgTWVtICoqYXJndikKPitwb3NpdGlvbl9mdW5jKHN0cnVjdCBzcWxfY29udGV4dCAq IGNvbnRleHQsIGludCBhcmdjLCBzdHJ1Y3QgTWVtICoqIGFyZ3YpCj7CoHsKPsKgIFVOVVNFRF9Q QVJBTUVURVIoYXJnYyk7Cj7CoCBzdHJ1Y3QgTWVtICpuZWVkbGUgPSBhcmd2WzBdOwo+QEAgLTMz OSw5ICs0ODAsMTAgQEAgcG9zaXRpb25fZnVuYyhzdHJ1Y3Qgc3FsX2NvbnRleHQgKmNvbnRleHQs IGludCBhcmdjLCBzdHJ1Y3QgTWVtICoqYXJndikKPsKgIHJldHVybjsKPsKgIH0KPsKgCj4tIGlu dCBuX25lZWRsZV9ieXRlcyA9IG1lbV9sZW5fdW5zYWZlKG5lZWRsZSk7Cj4tIGludCBuX2hheXN0 YWNrX2J5dGVzID0gbWVtX2xlbl91bnNhZmUoaGF5c3RhY2spOwo+KyBzaXplX3Qgbl9uZWVkbGVf Ynl0ZXMgPSBtZW1fbGVuX3Vuc2FmZShuZWVkbGUpOwo+KyBzaXplX3Qgbl9oYXlzdGFja19ieXRl cyA9IG1lbV9sZW5fdW5zYWZlKGhheXN0YWNrKTsKPsKgIGludCBwb3NpdGlvbiA9IDE7Cj4rIHNp emVfdCAqcHJlZml4X3RhYmxlID0gTlVMTDsKPsKgIGlmIChuX25lZWRsZV9ieXRlcyA+IDApIHsK PsKgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhheXN0YWNrX3N0cjsKPsKgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKm5lZWRsZV9zdHI7Cj5AQCAtMzUxLDE4ICs0OTMsMjUgQEAgcG9zaXRpb25fZnVuYyhz dHJ1Y3Qgc3FsX2NvbnRleHQgKmNvbnRleHQsIGludCBhcmdjLCBzdHJ1Y3QgTWVtICoqYXJndikK PsKgIGFzc2VydChuZWVkbGVfc3RyICE9IE5VTEwpOwo+wqAgYXNzZXJ0KGhheXN0YWNrX3N0ciAh PSBOVUxMIHx8IG5faGF5c3RhY2tfYnl0ZXMgPT0gMCk7Cj7CoCAvKgo+LSAqIE5haXZlIGltcGxl bWVudGF0aW9uIG9mIHN1YnN0cmluZwo+LSAqIHNlYXJjaGluZzogbWF0Y2hpbmcgdGltZSBPKG4g KiBtKS4KPisgKiBCYXNpYyB2ZXJzaW9uIG9mIEtNUCBhbGcKVHlwbzogcy9vZiBLTVAvb2YgdGhl IEtNUAo+KyAqIHNlYXJjaGluZzogbWF0Y2hpbmcgdGltZSBPKG4gKyBtKSwgcmVxdWlyZXMgbWVt IE8obSkuCj7CoCAqIENhbiBiZSBpbXByb3ZlZC4KVGhhdCBjb21tZW50IGFib3V0IGltcHJvdmVt ZW50IGNhbiBiZQpyZW1vdmVkIGJlY2F1c2UgaXQgcmVsYXRlcyB0byB0aGUgb3JpZ2luYWwgbmFp dmUKaW1wbGVtZW50YXRpb24uCj7CoCAqLwo+LSB3aGlsZSAobl9uZWVkbGVfYnl0ZXMgPD0gbl9o YXlzdGFja19ieXRlcyAmJgo+LSBtZW1jbXAoaGF5c3RhY2tfc3RyLCBuZWVkbGVfc3RyLCBuX25l ZWRsZV9ieXRlcykgIT0gMCkgewo+LSBwb3NpdGlvbisrOwo+LSBuX2hheXN0YWNrX2J5dGVzLS07 Cj4tIGhheXN0YWNrX3N0cisrOwo+KyBwcmVmaXhfdGFibGUgPSBjYWxsb2Mobl9uZWVkbGVfYnl0 ZXMsIHNpemVvZihzaXplX3QpKTsKPisKPisgaWYgKHByZWZpeF90YWJsZSAhPSBOVUxMKSB7Cj4r IHByZWZpeF90YWJsZV9nZW5fYmluKG5lZWRsZV9zdHIsIG5fbmVlZGxlX2J5dGVzLCBwcmVmaXhf dGFibGUpOwo+KyBwb3NpdGlvbiA9IGttcF9iaW4oaGF5c3RhY2tfc3RyLCBuZWVkbGVfc3RyLCBu X2hheXN0YWNrX2J5dGVzLCBuX25lZWRsZV9ieXRlcywgMCwgcHJlZml4X3RhYmxlKTsKPisgfSBl bHNlIHsKPisgd2hpbGUgKG5fbmVlZGxlX2J5dGVzIDw9IG5faGF5c3RhY2tfYnl0ZXMgJiYKPisg bWVtY21wKGhheXN0YWNrX3N0ciwgbmVlZGxlX3N0ciwgbl9uZWVkbGVfYnl0ZXMpICE9IDApIHsK PisgcG9zaXRpb24rKzsKPisgbl9oYXlzdGFja19ieXRlcy0tOwo+KyBoYXlzdGFja19zdHIrKzsK PisgfQo+KyBpZiAobl9uZWVkbGVfYnl0ZXMgPiBuX2hheXN0YWNrX2J5dGVzKQo+KyBwb3NpdGlv biA9IDA7Cj7CoCB9ClNlZSB0aGUgY29tbWVudCBhYm91dCB0aGXCoGluZGVudGF0aW9uIGFib3Zl Lgo+KyAvKgo+KyAqIEtNUCBhbGdvcml0aG0gd2l0aCB1bmljb2RlIHN1cHBvcnQKVHlwZSBzL3Vu aWNvZGUvVW5pY29kZS4KPsKgLyoKPi0gKiBUaGUgcmVwbGFjZSgpIGZ1bmN0aW9uLiBUaHJlZSBh cmd1bWVudHMgYXJlIGFsbCBzdHJpbmdzOiBjYWxsCj4rICogVGhlIHJlcGxhY2UoKSBmdW5jdGlv bi4gVGhyZWUgYXJndW1lbnRzIGFyZSBhbGwgc3RyaW5nczogY2FsbApUaGlzIGNoYW5nZSBpcyBl eGNlc3MuCj5AQCAtMTMwOSw3ICsxNDg3LDcgQEAgcmVwbGFjZUZ1bmMoc3FsX2NvbnRleHQgKiBj b250ZXh0LCBpbnQgYXJnYywgc3FsX3ZhbHVlICoqIGFyZ3YpCj7CoCB6UGF0dGVybiA9IG1lbV9h c191c3RyKGFyZ3ZbMV0pOwo+wqAgaWYgKHpQYXR0ZXJuID09IDApIHsKPsKgIGFzc2VydChtZW1f aXNfbnVsbChhcmd2WzFdKQo+LSB8fCBzcWxfY29udGV4dF9kYl9oYW5kbGUoY29udGV4dCktPm1h bGxvY0ZhaWxlZCk7Cj4rIHx8IHNxbF9jb250ZXh0X2RiX2hhbmRsZShjb250ZXh0KS0+bWFsbG9j RmFpbGVkKTsKVGhpcyBjaGFuZ2UgaXMgZXhjZXNzLgo+wqAgcmV0dXJuOwo+wqAgfQo+wqAgblBh dHRlcm4gPSBtZW1fbGVuX3Vuc2FmZShhcmd2WzFdKTsKPkBAIC0xMzMxLDQwICsxNTA5LDkwIEBA IHJlcGxhY2VGdW5jKHNxbF9jb250ZXh0ICogY29udGV4dCwgaW50IGFyZ2MsIHNxbF92YWx1ZSAq KiBhcmd2KQo+wqAgcmV0dXJuOwo+wqAgfQo+wqAgbG9vcExpbWl0ID0gblN0ciAtIG5QYXR0ZXJu Owo+LSBmb3IgKGkgPSBqID0gMDsgaSA8PSBsb29wTGltaXQ7IGkrKykgewo+LSBpZiAoelN0cltp XSAhPSB6UGF0dGVyblswXQo+LSB8fCBtZW1jbXAoJnpTdHJbaV0sIHpQYXR0ZXJuLCBuUGF0dGVy bikpIHsKPi0gek91dFtqKytdID0gelN0cltpXTsKPi0gfSBlbHNlIHsKPi0gdTggKnpPbGQ7Cj4t IHNxbCAqZGIgPSBzcWxfY29udGV4dF9kYl9oYW5kbGUoY29udGV4dCk7Cj4tIG5PdXQgKz0gblJl cCAtIG5QYXR0ZXJuOwo+LSB0ZXN0Y2FzZShuT3V0IC0gMSA9PSBkYi0+YUxpbWl0W1NRTF9MSU1J VF9MRU5HVEhdKTsKPi0gdGVzdGNhc2Uobk91dCAtIDIgPT0gZGItPmFMaW1pdFtTUUxfTElNSVRf TEVOR1RIXSk7Cj4tIGlmIChuT3V0IC0gMSA+IGRiLT5hTGltaXRbU1FMX0xJTUlUX0xFTkdUSF0p IHsKPi0gZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1NRTF9FWEVDVVRFLCAic3RyaW5nICJcCj4t ICJvciBiaW5hcnkgc3RyaW5nIGlzIHRvbyBiaWciKTsKPi0gY29udGV4dC0+aXNfYWJvcnRlZCA9 IHRydWU7Cj4tIHNxbF9mcmVlKHpPdXQpOwo+LSByZXR1cm47Cj4tIH0KPi0gek9sZCA9IHpPdXQ7 Cj4tIHpPdXQgPSBzcWxfcmVhbGxvYzY0KHpPdXQsIChpbnQpbk91dCk7Cj4tIGlmICh6T3V0ID09 IDApIHsKPi0gY29udGV4dC0+aXNfYWJvcnRlZCA9IHRydWU7Cj4tIHNxbF9mcmVlKHpPbGQpOwo+ LSByZXR1cm47Cj4rCj4rIGlmIChwcmVmaXhfdGFibGUgIT0gTlVMTCkgewo+KyAvKioKPisgKiBv cHRpbWl6ZWQgcmVwbGFjZW1lbnQgbG9naWMgdXNpbmcgS01QIGFsZ29yaXRobQo+KyAqIHJlcXVp cmVzIGFkZGl0aW9uYWwgTyhuUGF0dGVybikgbWVtb3J5IGZvciBwcmVmaXggdGFibGUKPisgKiBy ZXBsYWNpbmc6IHRpbWUgTyhuICsgbSkKPisgKi8KSW4gQyBjb21tZW50cyBvdXQgb2YgZnVuY3Rp b25zIGFuZCBpbnNpZGUgb2YgZnVuY3Rpb25zIHNob3VsZApiZcKgZGlmZmVyZW50IGluIGhvdyB0 aGV5IGFyZSBzdGFydGVkLiBFdmVyeXRoaW5nIGVsc2UgaXMgd3JvbmcuCkJlbG93IGFyZSBjb3Jy ZWN0IGV4YW1wbGVzOgrCoMKgLyoqIGNvbWVzIGZvciBkb2N1bWVudGF0aW9uIGNvbW1lbnRzCsKg wqAvKiBmb3IgbG9jYWwgbm90IGRvY3VtZW50ZWQgY29tbWVudHMuCsKgCkhvd2V2ZXIgdGhlIGRp ZmZlcmVuY2UgaXMgdmFndWUgYWxyZWFkeSwgc28gdGhlIHJ1bGUgaXMgc2ltcGxlIOKAlApvdXQg b2YgZnVuY3Rpb24gPSAvKiosIGluc2lkZSA9IC8qLsKgCsKgClRoaXMgaXMgZGVzY3JpYmVkIGlu IG1vcmUgZGV0YWlsIGhlcmVbNF0uCj4rCj4rIC8qIHByZWNhbGN1bGF0aW5nIHByZWZpeCB0YWJs ZSAqLwo+KyBwcmVmaXhfdGFibGUgPSBjYWxsb2MoblBhdHRlcm4sIHNpemVvZihzaXplX3QpKTsK PisgcHJlZml4X3RhYmxlX2dlbl9iaW4oelBhdHRlcm4sIG5QYXR0ZXJuLCBwcmVmaXhfdGFibGUp Owo+KyAvKiBjb3VudGluZyB0aGUgbnVtYmVyIG9mIFBhdHRlcm4gb2NjdXJyZW5jZXMgKi8KPisg Zm9yIChuQ250ID0gaVN0ciA9IG5QYXR0ZXJuUG9zID0gMDs7KSB7Cj4rIG5QYXR0ZXJuUG9zID0g a21wX2Jpbih6U3RyLCB6UGF0dGVybiwgblN0ciwgblBhdHRlcm4sIGlTdHIsIHByZWZpeF90YWJs ZSk7Cj4rIGlTdHIgPSBuUGF0dGVyblBvcyArIG5QYXR0ZXJuOwo+KyBpZiAoblBhdHRlcm5Qb3Mg PT0gMCkKPisgYnJlYWs7Cj4rICsrbkNudDsKPisgfQo+KyAvKiByZWFsbG9jYXRpb25nIG1lbSBm b3Igek91dCAqLwo+KyBuT3V0ICs9IChuUmVwIC0gblBhdHRlcm4pICogbkNudDsKPisgYXNzZXJ0 KG5PdXQgPCBTUUxfTUFYX0xFTkdUSCk7Cj4rIHpPdXQgPSBjb250ZXh0TWFsbG9jKGNvbnRleHQs IChpNjQpIG5PdXQpOwo+KyBpZiAoek91dCA9PSAwKSB7Cj4rIHJldHVybjsKPisgfQpCcmFja2V0 cyBhcmUgZXhjZXNzLgo+KyAvKiBjb3BpbmcgYW5kIHJlcGxhY2luZyBpbi1wbGFjZSAqLwo+KyBm b3IgKGlTdHIgPSBuQ29waWVkU3RyID0gbkNvcGllZE91dCA9IG5QYXR0ZXJuUG9zID0gMDs7KSB7 Cj4rIG5QYXR0ZXJuUG9zID0ga21wX2Jpbih6U3RyLCB6UGF0dGVybiwgblN0ciwgblBhdHRlcm4s IGlTdHIsIHByZWZpeF90YWJsZSk7Cj4rIGlTdHIgPSBuUGF0dGVyblBvcyArIG5QYXR0ZXJuOwo+ KyBpZiAoblBhdHRlcm5Qb3MgPT0gMCkKPisgYnJlYWs7Cj4rIGFzc2VydChuUGF0dGVyblBvcyA+ PSBuQ29waWVkU3RyKTsKPisgbWVtY3B5KHpPdXQgKyBuQ29waWVkT3V0LCB6U3RyICsgbkNvcGll ZFN0ciwgblBhdHRlcm5Qb3MgLSBuQ29waWVkU3RyKTsKPisgbkNvcGllZE91dCArPSBuUGF0dGVy blBvcyAtIG5Db3BpZWRTdHI7Cj4rIG1lbWNweSh6T3V0ICsgbkNvcGllZE91dCwgelJlcCwgblJl cCk7Cj4rIG5Db3BpZWRPdXQgKz0gblJlcDsKPisgbkNvcGllZFN0ciA9IG5QYXR0ZXJuUG9zICsg blBhdHRlcm47Cj4rIH0KPisgbWVtY3B5KHpPdXQgKyBuQ29waWVkT3V0LCB6U3RyICsgbkNvcGll ZFN0ciwgblN0ciAtIG5Db3BpZWRTdHIpOwo+KyB6T3V0W25PdXQgLSAxXSA9IDA7Cj4rIGZyZWUo cHJlZml4X3RhYmxlKTsKPisgfQo+KyBlbHNlIHsKPisgLyoqCj4rICogTmFpdmUgcmVwbGFjaW5n IHN1YnN0cmluZyBhbGdvcml0aG0KPisgKiByZXBsYWNpbmc6IHRpbWUgTyhuICogbSksIG1lbSBP KDEpCj4rICogdXNlZCBpZiBjYW5ub3QgYWxsb2NhdGUgbWVtIGZvciBwcmVmaXggdGFibGUKPisg Ki8KU2VlIHRoZSBjb21tZW50IGFib3V0IGluLWZ1bmN0aW9uwqBjb21tZW50cyBhYm92ZS4KPmRp ZmYgLS1naXQgYS90ZXN0L3NxbC10YXAvcG9zaXRpb24udGVzdC5sdWEgYi90ZXN0L3NxbC10YXAv cG9zaXRpb24udGVzdC5sdWEKPmluZGV4IDZhOTZlZDliYy4uYjkyNDRiYWY2IDEwMDc1NQo+LS0t IGEvdGVzdC9zcWwtdGFwL3Bvc2l0aW9uLnRlc3QubHVhCj4rKysgYi90ZXN0L3NxbC10YXAvcG9z aXRpb24udGVzdC5sdWEKPkBAIC02NzksMTIgKzY3OSwxNSBAQCB0ZXN0OmRvX2V4ZWNzcWxfdGVz dCgKPsKgCj7CoC0tIENvbGxhdGlvbiBpcyBzZXQgaW4gc3BhY2UgZm9ybWF0Lgo+wqAKPistLSBU ZXN0cyA2My02NSBhcmUgYWx0ZXJlZCBiZWNhdXNlIG5ldyB2ZXJzaW9uIG9mIHBvc2l0aW9uKCkg dGhhdCB1c2VzIEtNUCBhbGcKPistLSBpbnRlbnRpb25hbGx5IGRvZXMgbm90IG5vcm1hbGl6ZSBn aXZlbiBzdHJpbmdzIChpbiB3aGljaCBjYXNlICdhJyBkaWZmZXJzIGZyb20gJ8OgJyBldGMuKQo+ Kwo+wqB0ZXN0OmRvX2V4ZWNzcWxfdGVzdCgKPsKgwqDCoMKgwqAicG9zaXRpb24tMS42MyIsCj7C oMKgwqDCoMKgW1sKPsKgwqDCoMKgwqDCoMKgwqDCoENSRUFURSBUQUJMRSB0ZXN0MSAoczEgVkFS Q0hBUig1KSBQUklNQVJZIEtFWSBDT0xMQVRFICJ1bmljb2RlX2NpIik7Cj7CoMKgwqDCoMKgwqDC oMKgwqBJTlNFUlQgSU5UTyB0ZXN0MSBWQUxVRVMoJ8OgJyk7Cj4tIFNFTEVDVCBQT1NJVElPTign YScsIHMxKSBGUk9NIHRlc3QxOwo+KyBTRUxFQ1QgUE9TSVRJT04oJ8OgJywgczEpIEZST00gdGVz dDE7Cj7CoMKgwqDCoMKgwqDCoMKgwqBERUxFVEUgRlJPTSB0ZXN0MTsKPsKgwqDCoMKgwqBdXSwg ewo+wqDCoMKgwqDCoMKgwqDCoMKgMQo+QEAgLTY5NSw3ICs2OTgsNyBAQCB0ZXN0OmRvX2V4ZWNz cWxfdGVzdCgKPsKgwqDCoMKgwqAicG9zaXRpb24tMS42NCIsCj7CoMKgwqDCoMKgW1sKPsKgwqDC oMKgwqDCoMKgwqDCoElOU0VSVCBJTlRPIHRlc3QxIFZBTFVFUygncXfDqHJ0eScpOwo+LSBTRUxF Q1QgUE9TSVRJT04oJ2VyJywgczEpIEZST00gdGVzdDE7Cj4rIFNFTEVDVCBQT1NJVElPTignw6hy JywgczEpIEZST00gdGVzdDE7Cj7CoMKgwqDCoMKgwqDCoMKgwqBERUxFVEUgRlJPTSB0ZXN0MTsK PsKgwqDCoMKgwqBdXSwgewo+wqDCoMKgwqDCoMKgwqDCoMKgMwo+QEAgLTcwNiw3ICs3MDksNyBA QCB0ZXN0OmRvX2V4ZWNzcWxfdGVzdCgKPsKgwqDCoMKgwqAicG9zaXRpb24tMS42NSIsCj7CoMKg wqDCoMKgW1sKPsKgwqDCoMKgwqDCoMKgwqDCoElOU0VSVCBJTlRPIHRlc3QxIFZBTFVFUygncXfD qHJ0w78nKTsKPi0gU0VMRUNUIFBPU0lUSU9OKCd5JywgczEpIEZST00gdGVzdDE7Cj4rIFNFTEVD VCBQT1NJVElPTignw78nLCBzMSkgRlJPTSB0ZXN0MTsKPsKgwqDCoMKgwqDCoMKgwqDCoERFTEVU RSBGUk9NIHRlc3QxOwo+wqDCoMKgwqDCoF1dLCB7Cj7CoMKgwqDCoMKgwqDCoMKgwqA2Cj4tLQo+ Mi4zMy4wCkkgcHJvcG9zZSB0byBpbnRyb2R1Y2UgYSBzZXBhcmF0ZSBwYXRjaCBmb3IgdGVzdHMg bW9kaWZpY2F0aW9uLgpDaGFuZ2VzIGluIHRlc3RzIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHRo ZSBLTVAgYWxnb3JpdGhtCmltcGxlbWVudGF0aW9uIGl0c2VsZi7CoArCoApZb3UgY2FuIHJlYWQg YSBndWlkZSBvbiBob3cgdG8gc2VuZCBhIHBhdGNoIHNldCBoZXJlWzVdLgrCoApbMV06wqAgaHR0 cHM6Ly93d3cudGFyYW50b29sLmlvL2VuL2RvYy9sYXRlc3QvZGV2X2d1aWRlL2RldmVsb3Blcl9n dWlkZWxpbmVzLwpbMl06wqAgaHR0cHM6Ly9saXN0cy50YXJhbnRvb2wub3JnL3RhcmFudG9vbC1w YXRjaGVzLzIwMjEwNzMxMTMzNjQ4LjI1NjYwLTEtbS5rb2tyeWFzaGtpbkB0YXJhbnRvb2wub3Jn LwpbM106wqAgaHR0cHM6Ly93d3cudGFyYW50b29sLmlvL2VuL2RvYy9sYXRlc3QvZGV2X2d1aWRl L2Nfc3R5bGVfZ3VpZGUvI2NoYXB0ZXItMy1wbGFjaW5nLWJyYWNlcy1hbmQtc3BhY2VzCls0XTrC oCBodHRwczovL3d3dy50YXJhbnRvb2wuaW8vZW4vZG9jL2xhdGVzdC9kZXZfZ3VpZGUvY19zdHls ZV9ndWlkZS8jY2hhcHRlci04LWNvbW1lbnRpbmcKWzVdOsKgIGh0dHBzOi8vd3d3LnRhcmFudG9v bC5pby9lbi9kb2MvbGF0ZXN0L2Rldl9ndWlkZS9kZXZlbG9wZXJfZ3VpZGVsaW5lcy8jaG93LXRv LXN1Ym1pdC1hLXBhdGNoLWZvci1yZXZpZXcKwqAKQmVzdCByZWdhcmRzLApNYXhpbSBLb2tyeWFz aGtpbg== ----ALT--9eEd48A4343373f7395cb3562C4b927E1634730409 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhIFRoYW5rcyBmb3IgdGhlIHBhdGNoITwvZGl2PjxkaXY+UGxl YXNlIGNvbnNpZGVyIG15IGNvbW1lbnRzIGJlbG93LjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRp dj48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOmJvcmRlci1ib3g7IHBhZGRpbmc6MHB4IDBweCAwLjRl bSI+VXNlIHRoZSBpbXBlcmF0aXZlIG1vb2QgaW4gdGhlIHN1YmplY3QgbGluZSBhcyBpdCBpcyBz dGF0ZWQgaW4gdGhlIGRldmVsb3BlcjwvZGl2PjxkaXYgc3R5bGU9ImJveC1zaXppbmc6Ym9yZGVy LWJveDsgcGFkZGluZzowcHggMHB4IDAuNGVtIj5ndWlkZWxpbmVbMV0uIEEgcHJvcGVybHkgZm9y bWVkIEdpdCZuYnNwO2NvbW1pdCBzdWJqZWN0Jm5ic3A7bGluZSBzaG91bGQgYWx3YXlzIGJlPC9k aXY+PGRpdiBzdHlsZT0iYm94LXNpemluZzpib3JkZXItYm94OyBwYWRkaW5nOjBweCAwcHggMC40 ZW0iPmFibGUgdG8gY29tcGxldGUgdGhlIGZvbGxvd2luZyZuYnNwO3NlbnRlbmNlOiDigJxJZiBh cHBsaWVkLCB0aGlzIGNvbW1pdCB3aWxsPHNwYW4+Jm5ic3A7PC9zcGFuPjwvZGl2PjxkaXYgc3R5 bGU9ImJveC1zaXppbmc6Ym9yZGVyLWJveDsgcGFkZGluZzowcHggMHB4IDAuNGVtIj48ZW0gc3R5 bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4veW91ciBzdWJqZWN0IGxpbmUgaGVyZS88L2Vt PuKAnS48L2Rpdj48L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlk ICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij7QodGA0LXQtNCwLCAy MCDQvtC60YLRj9Cx0YDRjyAyMDIxLCAxMTozNyArMDM6MDAg0L7RgiBMb3JkIHZpYSBUYXJhbnRv b2wtcGF0Y2hlcyAmbHQ7dGFyYW50b29sLXBhdGNoZXNAZGV2LnRhcmFudG9vbC5vcmcmZ3Q7Ojxi cj4mbmJzcDs8ZGl2IGlkPSIiPjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+ PGRpdj48ZGl2IGlkPSJzdHlsZV8xNjM0NzE5MDQzMTg3NDA0MDQxMl9CT0RZIj5Gcm9tOiBHbGVi ICZsdDs8YSBocmVmPSIvY29tcG9zZT9Ubz1rYXNoa2luLm5zYWFAZ21haWwuY29tIj5rYXNoa2lu Lm5zYWFAZ21haWwuY29tPC9hPiZndDs8YnI+PGJyPlJlcGxhY2VkIHBvc2l0aW9uaW5nIGxvZ2lj IGluIFBPU0lUSU9OKCkgYW5kIFJFUExBQ0UoKSBzcWwgZnVuY3Rpb25zPC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+VHlwbzogcy9zcWwvU1FMPC9kaXY+PGJsb2NrcXVv dGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFk ZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1t c2ciPjxkaXY+PGRpdj53aXRoIEtudXRoLU1vcnJpcy1QcmF0dCBhbGdvcml0aG0gYnkgYWRkaW5n IHR3byBkaWZmZXJlbnQgdmVyc2lvbnM8YnI+b2YgbGF0dGVyIGZvciBTVFJJTkcgYW5kIFZBUkJJ TkFSWSBhcmd1bWVudHMgYW5kIGNvcnJlc3BvbmRpbmc8YnI+cHJlZml4IHRhYmxlIGdlbmVyYXRv cnMuPGJyPlNsaWdodGx5IGFkYXB0ZWQgdGVzdHMgdG8gZml0IG5ldyBjb2xsYXRpb24gcnVsZXMg dGhhdCBkaWZmZXI8YnI+ZGVjb3JhdGVkIGxldHRlcnMuPGJyPjxicj5JbXByb3ZlZCBhc3ltcHRv dGljcyBvZiBwb3NpdGlvbmluZyBsb2dpYyB0bzo8YnI+dGltZSBPKGhheXN0YWNrX2xlbiArIG5l ZWRsZV9sZW4pLCBtZW0gTyhuZWVkbGVfbGVuKTxicj5BcyBvbmUgb2YgY29sbGF0aW5nIHR5cGVz IGlzIGEgdW5pY29kZSBzdHJpbmcsPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3Rl PjxkaXY+VHlwbzogcy91bmljb2RlL1VuaWNvZGU8L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEw cHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2 PklDVSBVQ2hhckl0ZXJhdG9ycyBoYWQgdG8gYmUgdXNlZCBhbmQgdGh1cyB1bmljb2RlPC9kaXY+ PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+VHlwbzogcy91bmljb2RlL1VuaWNv ZGU8L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7 IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhl bHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PmxldHRlcnMgYXJlIGNvbXBhcmVkIGFzIFVD aGFyMzIgdmFsdWVzIGFuZCBub3JtYWxpemF0aW9uPGJyPmlzIG5vdCBkb25lICgnYScgYW5kICfD pCcgYXJlIHRyZWF0ZWQgYXMgZGlmZmVyZW50KTxicj48YnI+Q2xvc2VzICM2NDkyPGJyPi0tLTwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PkhlcmUgaXMgeW91ciBub3Rl cyBzZWN0aW9uLCB3aGVyZSB5b3UgY2FuIHByb3ZpZGUgYW55IGFkZGl0aW9uYWw8L2Rpdj48ZGl2 PmluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIGxpbmsgdG8gdGhlIGlzc3VlLCB0aGUgbGluayB0byB0 aGU8L2Rpdj48ZGl2PkdpdEh1YiBicmFuY2gsIG9yIGFueSBvdGhlciBhZGRpdGlvbmFsIGNvbW1l bnRzLiBJdCB3b3VsZCBiZTwvZGl2PjxkaXY+bXVjaCBtb3JlIGNvbnZpbmllbnQgaWYgeW91IGNv dWxkIHByb3ZpZGUgdGhhdCBpbmZvcm1hdGlvbiBoZXJlLjwvZGl2PjxkaXY+Q2hlY2sgdGhpc1sy XSBhcyBhbiBleGFtcGxlLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHgg c29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRp diBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+Jm5ic3A7c3JjL2Jv eC9zcWwvZnVuYy5jIHwgNDAyICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLTxicj4m bmJzcDt0ZXN0L3NxbC10YXAvcG9zaXRpb24udGVzdC5sdWEgfCA5ICstPGJyPiZuYnNwOzIgZmls ZXMgY2hhbmdlZCwgMzIxIGluc2VydGlvbnMoKyksIDkwIGRlbGV0aW9ucygtKTxicj48YnI+ZGlm ZiAtLWdpdCBhL3NyYy9ib3gvc3FsL2Z1bmMuYyBiL3NyYy9ib3gvc3FsL2Z1bmMuYzxicj5pbmRl eCAyOWQ3MTNmZDAuLmZlM2MxNjgyOCAxMDA2NDQ8YnI+LS0tIGEvc3JjL2JveC9zcWwvZnVuYy5j PGJyPisrKyBiL3NyYy9ib3gvc3FsL2Z1bmMuYzxicj5AQCAtMjkxLDYgKzI5MSwxNDcgQEAgYWJz RnVuYyhzcWxfY29udGV4dCAqIGNvbnRleHQsIGludCBhcmdjLCBzcWxfdmFsdWUgKiogYXJndik8 YnI+Jm5ic3A7IH08YnI+Jm5ic3A7fTxicj4mbmJzcDs8YnI+Ky8qKjxicj4rICogSW1wbGVtZW50 YXRpb24gb2YgcHJlZml4IHRhYmxlIGdlbmVyYXRvcjxicj4rICogcHJlZml4X3RhYmxlX2dlbigp IGlzIGEgcGFydCBvZiBLbnV0aC1Nb3JyaXMtUHJhdHQgYWxnb3JpdGhtPGJyPisgKiB0aGF0IGlz IHVzZWQgaW4gcG9zaXRpb24oKSBhbmQgcmVwbGFjZUZ1bmMoKSB0byBmaW5kPGJyPisgKiBpbnN0 YW5jZXMgb2YgYG5lZWRsZWAgaW4gYGhheXN0YWNrYCBiaW4gZGF0YTxicj4rICovPGJyPitpbmxp bmUgc3RhdGljIHZvaWQ8YnI+K3ByZWZpeF90YWJsZV9nZW5fYmluKGNvbnN0IHVuc2lnbmVkIGNo YXIgKiBuZWVkbGUsPGJyPisgY29uc3Qgc2l6ZV90IG5fbmVlZGxlX2J5dGVzLDxicj4rIHNpemVf dCAqIHRhYmxlKTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PldoZW4g ZGVjbGFyaW5nIHBvaW50ZXIgZGF0YSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHBvaW50 ZXI8L2Rpdj48ZGl2PnR5cGUsIHRoZSBwcmVmZXJyZWQgdXNlIG9mICogaXMgYWRqYWNlbnQgdG8g dGhlIGRhdGEgbmFtZSBvciBmdW5jdGlvbiBuYW1lLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJi b3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAg MTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2Pjxk aXY+K3s8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5UaGUgaW5kZW50 YXRpb24gc3RlcCBzaG91bGQgYmUmbmJzcDtmb3VyIHdoaXRlc3BhY2VzLCBzbyBwbGVhc2UgZml4 IHRoZTwvZGl2PjxkaXY+aW5kZW50YXRpb24gaGVyZSBhbmQgYmVsb3cuPC9kaXY+PGJsb2NrcXVv dGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFk ZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1t c2ciPjxkaXY+PGRpdj4rIHNpemVfdCBpID0gMSwgaiA9IDA7PGJyPisgdGFibGVbMF0gPSAwOzxi cj4rIHdoaWxlIChpICZsdDsgbl9uZWVkbGVfYnl0ZXMpIHs8YnI+KyBpZiAobmVlZGxlW2ldICE9 IG5lZWRsZVtqXSkgezxicj4rIGlmIChqID09IDApIHs8YnI+KyB0YWJsZVtpXSA9IDA7PGJyPisg KytpOzxicj4rIH0gZWxzZTxicj4rIGogPSB0YWJsZVtqIC0gMV07PGJyPisgfTxicj4rIGVsc2Ug ezxicj4rIHRhYmxlW2ldID0gaiArIDE7PGJyPisgKytpOzxicj4rICsrajs8YnI+KyB9PGJyPisg fTxicj4rfTwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlVzZSBicmFj ZXMgaW4gYm90aCBicmFuY2hlcyBpZiBvbmx5IG9uZSBicmFuY2ggb2YgYSBjb25kaXRpb25hbDwv ZGl2PjxkaXY+c3RhdGVtZW50IGlzIGEgc2luZ2xlIHN0YXRlbWVudC4gQWxzbywgdGhlIGJyYWNl cyBjb2RlIHN0eWxlPC9kaXY+PGRpdj5zaG91bGQgYmUgdGhlIGZvbGxvd2luZ1szXS48L2Rpdj48 YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjox MHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1y ZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pis8YnI+Ky8qKjxicj4rICogSW1wbGVtZW50YXRpb24gb2Yg cHJlZml4IHRhYmxlIGdlbmVyYXRvciB1c2luZyBVQ2hhckl0ZXJhdG9yczxicj4rICogcHJlZml4 X3RhYmxlX2dlbigpIGlzIGEgcGFydCBvZiBLbnV0aC1Nb3JyaXMtUHJhdHQgYWxnb3JpdGhtPGJy PisgKiB0aGF0IGlzIHVzZWQgaW4gcG9zaXRpb24oKSB0byBmaW5kIGluc3RhbmNlcyBvZiBgbmVl ZGxlYDxicj4rICogaW4gYGhheXN0YWNrYCB1bmljb2RlIHN0cmluZzxicj4rICovPGJyPitpbmxp bmUgc3RhdGljIHZvaWQ8YnI+K3ByZWZpeF90YWJsZV9nZW5fdXN0cihjb25zdCBVQ2hhckl0ZXJh dG9yICogbmVlZGxlX2JlZ2luLDxicj4rIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuZWVkbGVfc3Ry LDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlNlZSB0aGUgY29tbWVu dCBhYm91dCB0aGUgcG9pbnRlciBkZWNsYXJhdGlvbiBhYm92ZS48L2Rpdj48YmxvY2txdW90ZSBz dHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5n OjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+ PGRpdj48ZGl2Pisgc2l6ZV90IG5fbmVlZGxlX2J5dGVzLDxicj4rIHNpemVfdCBuX25lZWRsZV9j aGFycyw8YnI+KyBzaXplX3QgdGFibGVbXSk8YnI+K3s8YnI+KyB0YWJsZVswXSA9IDA7PGJyPisg VUNoYXJJdGVyYXRvciBuZWVkbGVfaXRlcjs8YnI+KyBVQ2hhckl0ZXJhdG9yIHNlY29uZF9pdGVy Ozxicj4rIHVpdGVyX3NldFVURjgoJmFtcDtuZWVkbGVfaXRlciwgbmVlZGxlX3N0ciwgbl9uZWVk bGVfYnl0ZXMpOzxicj4rIHVpdGVyX3NldFVURjgoJmFtcDtzZWNvbmRfaXRlciwgbmVlZGxlX3N0 ciwgbl9uZWVkbGVfYnl0ZXMpOzxicj4rIG5lZWRsZV9pdGVyLm5leHQoJmFtcDtuZWVkbGVfaXRl cik7PGJyPisgd2hpbGUgKG5lZWRsZV9pdGVyLmdldEluZGV4KCZhbXA7bmVlZGxlX2l0ZXIsIFVJ VEVSX0NVUlJFTlQpICZsdDsgbl9uZWVkbGVfY2hhcnMpIHs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+PGRpdj5QbGVhc2UsIGZvbGxvdyB0aGUgaW5kZW50YXRpb24gcnVsZXMg aGVyZSBhbmQgYmVsb3cuIEEgbG9vcOKAmXMgYm9keSBzaG91bGQgYmUgaW5kZW50ZWQuPC9kaXY+ PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46 MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMt cmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4rIGlmIChuZWVkbGVfaXRlci5jdXJyZW50KCZhbXA7bmVl ZGxlX2l0ZXIpICE9IHNlY29uZF9pdGVyLmN1cnJlbnQoJmFtcDtzZWNvbmRfaXRlcikpIHs8YnI+ KyBpZiAoc2Vjb25kX2l0ZXIuZ2V0SW5kZXgoJmFtcDtzZWNvbmRfaXRlciwgVUlURVJfQ1VSUkVO VCkgPT0gMCkgezxicj4rIHRhYmxlW25lZWRsZV9pdGVyLmdldEluZGV4KCZhbXA7bmVlZGxlX2l0 ZXIsIFVJVEVSX0NVUlJFTlQpXSA9IDA7PGJyPisgbmVlZGxlX2l0ZXIubmV4dCgmYW1wO25lZWRs ZV9pdGVyKTs8YnI+KyB9IGVsc2U8YnI+KyBzZWNvbmRfaXRlci5tb3ZlKCZhbXA7c2Vjb25kX2l0 ZXIsIHRhYmxlW3NlY29uZF9pdGVyLmdldEluZGV4KCZhbXA7c2Vjb25kX2l0ZXIsIFVJVEVSX0NV UlJFTlQpIC0gMV0sIFVJVEVSX1NUQVJUKTs8YnI+KyB9PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9ibG9ja3F1b3RlPjxkaXY+U2VlIHRoZSBjb21tZW50IGFib3V0IGJyYWNlcyBhYm92ZS48L2Rp dj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdp bjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBq cy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2PisgZWxzZSB7PGJyPisgdGFibGVbbmVlZGxlX2l0ZXIu Z2V0SW5kZXgoJmFtcDtuZWVkbGVfaXRlciwgVUlURVJfQ1VSUkVOVCldID0gc2Vjb25kX2l0ZXIu Z2V0SW5kZXgoJmFtcDtzZWNvbmRfaXRlciwgVUlURVJfQ1VSUkVOVCkgKyAxOzxicj4rIG5lZWRs ZV9pdGVyLm5leHQoJmFtcDtuZWVkbGVfaXRlcik7PGJyPisgc2Vjb25kX2l0ZXIubmV4dCgmYW1w O3NlY29uZF9pdGVyKTs8YnI+KyB9PGJyPisgfTxicj4rfTxicj4rPGJyPisvKio8YnI+KyAqIElt cGxlbWVudGF0aW9uIG9mIEtNUCBhbGdvcml0aG0gdG8gZmluZCBzdWJzdHJpbmc8YnI+KyAqIGlu IGEgYmluIGFycmF5IHN0YXJ0aW5nIGZyb20gZ2l2ZW4gcG9zaXRpb24uPGJyPisgKjxicj4rICog UmVxdWllcmVzIGluZGV4IGZvciBzdGFydGluZyBwb3NpdGlvbiBpbiBgaGF5c3RhY2tgLjxicj4r ICo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5UeXBlOiBzL1JlcXVp ZXJlcy9SZXF1aXJlczwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29s aWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBj bGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+KyAqIFJldHVybnMgZm91 bmQgc3Vic3RyaW5nIHBvc2l0aW9uICsgMSBvciAwIGlmIG5vbmUuPC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+TWlub3I6Jm5ic3A7SSBndWVzcywgaXQgc2hvdWxkIGJl IOKAmFJldHVybnMgZm91bmQgc3Vic3RyaW5nIHBvc2l0aW9uICsgMSBvciAwPC9kaXY+PGRpdj5p ZiB0aGVyZSBpcyBubyBzdWNoIHN1YnN0cmluZy7igJk8L2Rpdj48YmxvY2txdW90ZSBzdHlsZT0i Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAw IDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48 ZGl2PisgKi88YnI+K3N0YXRpYyBpbnQ8YnI+K2ttcF9iaW4oY29uc3QgdW5zaWduZWQgY2hhciAq IGhheXN0YWNrX3N0ciw8YnI+KyBjb25zdCB1bnNpZ25lZCBjaGFyICogbmVlZGxlX3N0ciw8YnI+ KyBzaXplX3Qgbl9oYXlzdGFja19ieXRlcyw8YnI+KyBzaXplX3Qgbl9uZWVkbGVfYnl0ZXMsPC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+QXMgSSBzZWUgbm8gY2hhbmdl cyB0byB0aGVzZSBhcmdzIGluIHRoZSBmdW5jdGlvbiBib2R5LCBJIHRoaW5rIHRoZXk8L2Rpdj48 ZGl2PnNob3VsZCBiZSBkZWNsYXJlZCBhcyBhIGNvbnN0YW50LjwvZGl2PjxibG9ja3F1b3RlIHN0 eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6 MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48 ZGl2PjxkaXY+KyBzaXplX3QgaSw8YnI+KyBjb25zdCBzaXplX3QgKiBwcmVmaXhfdGFibGUpPC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+U2VlIHRoZSBjb21tZW50IGFi b3V0IHRoZSBwb2ludGVyIGRlY2xhcmF0aW9uIGFib3ZlLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxl PSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAw IDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2 PjxkaXY+K3s8YnI+KyBzaXplX3QgaiA9IDA7PGJyPisgaW50IHBvc2l0aW9uID0gMDs8YnI+KyB3 aGlsZSAoaSAmbHQ7IG5faGF5c3RhY2tfYnl0ZXMpIHs8YnI+KyBpZiAobmVlZGxlX3N0cltqXSA9 PSBoYXlzdGFja19zdHJbaV0pIHs8YnI+KyArK2k7PGJyPisgKytqOzxicj4rIH08YnI+KyBlbHNl IHs8YnI+KyBpZiAoaiA9PSAwKSB7PGJyPisgKytpOzxicj4rIH0gZWxzZSB7PGJyPisgaiA9IHBy ZWZpeF90YWJsZVtqIC0gMV07PGJyPisgfTxicj4rIH08YnI+KyBpZiAoaiAmZ3Q7PSBuX25lZWRs ZV9ieXRlcykgezxicj4rIHBvc2l0aW9uID0gaSAtIGogKyAxOzxicj4rIHJldHVybiBwb3NpdGlv bjs8YnI+KyB9PGJyPisgfTxicj4rIHJldHVybiBwb3NpdGlvbjs8YnI+K308L2Rpdj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5TZWUgdGhlIGNvbW1lbnQgYWJvdXQgdGhlJm5i c3A7aW5kZW50YXRpb24gYWJvdmUuJm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRl ci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4 OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4r PGJyPisvKio8YnI+KyAqIEltcGxlbWVudGF0aW9uIG9mIEtNUCBhbGdvcml0aG0gdG8gZmluZCBz dWJzdHJpbmc8YnI+KyAqIGluIGFuIGFycmF5IG9mIHVuaWNvZGUgY2hhcnMgc3RhcnRpbmcgZnJv bSBnaXZlbiBpdGVyYXRvci48YnI+KyAqPGJyPisgKiBSZXF1aWVyZXMgVUNoYXJJdGVyYXRvciBb aGF5c3RhY2tfaXRlcl0gb2Ygc3RhcnRpbmcgcG9zaXRpb248YnI+KyAqIGluIGBoYXlzdGFja2As IGl0ZXJhdG9yIGdldHMgc2V0IHRvIHRoZSBmaXJzdCBpdGVtIGFmdGVyIGZvdW5kPGJyPisgKiBg bmVlZGxlYCBvciByZWFjaGVzIHRoZSBlbmQgb2YgaGF5c3RhY2sgaWYgbm9uZS48YnI+KyAqPGJy PisgKiBSZXR1cm5zIGZvdW5kIHN1YnN0cmluZyBwb3NpdGlvbiArIDEgb3IgMCBpZiBub25lLjxi cj4rICovPGJyPitpbmxpbmUgc3RhdGljIGludDxicj4ra21wX3VzdHIoc3RydWN0IHNxbF9jb250 ZXh0ICogY29udGV4dCw8YnI+KyBVQ2hhckl0ZXJhdG9yICogaGF5c3RhY2tfaXRlciw8YnI+KyBV Q2hhckl0ZXJhdG9yICogbmVlZGxlX2l0ZXIsPGJyPisgc2l6ZV90IG5faGF5c3RhY2tfY2hhcnMs PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+SSB0aGluayB0aGF0IGFy ZyBzaG91bGQgYmUgZGVjbGFyZWQgYXMgYSZuYnNwO2NvbnN0LjwvZGl2PjxibG9ja3F1b3RlIHN0 eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6 MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48 ZGl2PjxkaXY+KyBjb25zdCBzaXplX3QgKiBwcmVmaXhfdGFibGUpPC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+U2VlIHRoZSBjb21tZW50IGFib3V0IHRoZSBwb2ludGVy IGRlY2xhcmF0aW9uIGFib3ZlLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDox cHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+ PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+K3s8YnI+KyBz dHJ1Y3QgY29sbCAqY29sbCA9IHNxbEdldEZ1bmNDb2xsU2VxKGNvbnRleHQpOzxicj4rIGludCBw b3NpdGlvbiA9IDA7PGJyPisgd2hpbGUgKGhheXN0YWNrX2l0ZXItJmd0O2dldEluZGV4KGhheXN0 YWNrX2l0ZXIsIFVJVEVSX0NVUlJFTlQpICZsdDsgbl9oYXlzdGFja19jaGFycykgezxicj4rIGlm IChuZWVkbGVfaXRlci0mZ3Q7Y3VycmVudChuZWVkbGVfaXRlcikgPT0gaGF5c3RhY2tfaXRlci0m Z3Q7Y3VycmVudChoYXlzdGFja19pdGVyKSkgezxicj4rIG5lZWRsZV9pdGVyLSZndDtuZXh0KG5l ZWRsZV9pdGVyKTs8YnI+KyBoYXlzdGFja19pdGVyLSZndDtuZXh0KGhheXN0YWNrX2l0ZXIpOzxi cj4rIH0gZWxzZSB7PGJyPisgaWYgKG5lZWRsZV9pdGVyLSZndDtnZXRJbmRleChuZWVkbGVfaXRl ciwgVUlURVJfQ1VSUkVOVCkgPT0gMCkgezxicj4rIGhheXN0YWNrX2l0ZXItJmd0O25leHQoaGF5 c3RhY2tfaXRlcik7PGJyPisgfSBlbHNlIHs8YnI+KyBuZWVkbGVfaXRlci0mZ3Q7bW92ZShuZWVk bGVfaXRlciwgcHJlZml4X3RhYmxlW25lZWRsZV9pdGVyLSZndDtnZXRJbmRleChuZWVkbGVfaXRl ciwgVUlURVJfQ1VSUkVOVCkgLSAxXSwgVUlURVJfU1RBUlQpOzxicj4rIH08YnI+KyB9PGJyPisg aWYgKCFuZWVkbGVfaXRlci0mZ3Q7aGFzTmV4dChuZWVkbGVfaXRlcikpIHs8YnI+KyBwb3NpdGlv biA9IGhheXN0YWNrX2l0ZXItJmd0O2dldEluZGV4KGhheXN0YWNrX2l0ZXIsIFVJVEVSX0NVUlJF TlQpIC0gbmVlZGxlX2l0ZXItJmd0O2dldEluZGV4KG5lZWRsZV9pdGVyLCBVSVRFUl9DVVJSRU5U KSArIDE7PGJyPisgaGF5c3RhY2tfaXRlci0mZ3Q7bmV4dChoYXlzdGFja19pdGVyKTs8YnI+KyBy ZXR1cm4gcG9zaXRpb247PGJyPisgfTxicj4rIH08YnI+KyByZXR1cm4gcG9zaXRpb247PGJyPit9 PGJyPis8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5TZWUgdGhlIGNv bW1lbnQgYWJvdXQgdGhlJm5ic3A7aW5kZW50YXRpb24gYWJvdmUuPC9kaXY+PGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGlu ZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ci PjxkaXY+PGRpdj4mbmJzcDsvKio8YnI+Jm5ic3A7Jm5ic3A7KiBJbXBsZW1lbnRhdGlvbiBvZiB0 aGUgcG9zaXRpb24oKSBmdW5jdGlvbi48YnI+Jm5ic3A7Jm5ic3A7Kjxicj5AQCAtMzAzLDcgKzQ0 NCw3IEBAIGFic0Z1bmMoc3FsX2NvbnRleHQgKiBjb250ZXh0LCBpbnQgYXJnYywgc3FsX3ZhbHVl ICoqIGFyZ3YpPGJyPiZuYnNwOyZuYnNwOyogb2NjdXJyZW5jZSBvZiBuZWVkbGUsIG9yIDAgaWYg bmVlZGxlIG5ldmVyIG9jY3VycyBpbiBoYXlzdGFjay48YnI+Jm5ic3A7Jm5ic3A7Ki88YnI+Jm5i c3A7c3RhdGljIHZvaWQ8YnI+LXBvc2l0aW9uX2Z1bmMoc3RydWN0IHNxbF9jb250ZXh0ICpjb250 ZXh0LCBpbnQgYXJnYywgc3RydWN0IE1lbSAqKmFyZ3YpPGJyPitwb3NpdGlvbl9mdW5jKHN0cnVj dCBzcWxfY29udGV4dCAqIGNvbnRleHQsIGludCBhcmdjLCBzdHJ1Y3QgTWVtICoqIGFyZ3YpPGJy PiZuYnNwO3s8YnI+Jm5ic3A7IFVOVVNFRF9QQVJBTUVURVIoYXJnYyk7PGJyPiZuYnNwOyBzdHJ1 Y3QgTWVtICpuZWVkbGUgPSBhcmd2WzBdOzxicj5AQCAtMzM5LDkgKzQ4MCwxMCBAQCBwb3NpdGlv bl9mdW5jKHN0cnVjdCBzcWxfY29udGV4dCAqY29udGV4dCwgaW50IGFyZ2MsIHN0cnVjdCBNZW0g Kiphcmd2KTxicj4mbmJzcDsgcmV0dXJuOzxicj4mbmJzcDsgfTxicj4mbmJzcDs8YnI+LSBpbnQg bl9uZWVkbGVfYnl0ZXMgPSBtZW1fbGVuX3Vuc2FmZShuZWVkbGUpOzxicj4tIGludCBuX2hheXN0 YWNrX2J5dGVzID0gbWVtX2xlbl91bnNhZmUoaGF5c3RhY2spOzxicj4rIHNpemVfdCBuX25lZWRs ZV9ieXRlcyA9IG1lbV9sZW5fdW5zYWZlKG5lZWRsZSk7PGJyPisgc2l6ZV90IG5faGF5c3RhY2tf Ynl0ZXMgPSBtZW1fbGVuX3Vuc2FmZShoYXlzdGFjayk7PGJyPiZuYnNwOyBpbnQgcG9zaXRpb24g PSAxOzxicj4rIHNpemVfdCAqcHJlZml4X3RhYmxlID0gTlVMTDs8YnI+Jm5ic3A7IGlmIChuX25l ZWRsZV9ieXRlcyAmZ3Q7IDApIHs8YnI+Jm5ic3A7IGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhheXN0 YWNrX3N0cjs8YnI+Jm5ic3A7IGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5lZWRsZV9zdHI7PGJyPkBA IC0zNTEsMTggKzQ5MywyNSBAQCBwb3NpdGlvbl9mdW5jKHN0cnVjdCBzcWxfY29udGV4dCAqY29u dGV4dCwgaW50IGFyZ2MsIHN0cnVjdCBNZW0gKiphcmd2KTxicj4mbmJzcDsgYXNzZXJ0KG5lZWRs ZV9zdHIgIT0gTlVMTCk7PGJyPiZuYnNwOyBhc3NlcnQoaGF5c3RhY2tfc3RyICE9IE5VTEwgfHwg bl9oYXlzdGFja19ieXRlcyA9PSAwKTs8YnI+Jm5ic3A7IC8qPGJyPi0gKiBOYWl2ZSBpbXBsZW1l bnRhdGlvbiBvZiBzdWJzdHJpbmc8YnI+LSAqIHNlYXJjaGluZzogbWF0Y2hpbmcgdGltZSBPKG4g KiBtKS48YnI+KyAqIEJhc2ljIHZlcnNpb24gb2YgS01QIGFsZzwvZGl2PjwvZGl2PjwvZGl2Pjwv ZGl2PjwvYmxvY2txdW90ZT48ZGl2PlR5cG86IHMvb2YgS01QL29mIHRoZSBLTVA8L2Rpdj48Ymxv Y2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4 OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFk bXNnLW1zZyI+PGRpdj48ZGl2PisgKiBzZWFyY2hpbmc6IG1hdGNoaW5nIHRpbWUgTyhuICsgbSks IHJlcXVpcmVzIG1lbSBPKG0pLjxicj4mbmJzcDsgKiBDYW4gYmUgaW1wcm92ZWQuPC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+VGhhdCBjb21tZW50IGFib3V0IGltcHJv dmVtZW50IGNhbiBiZTwvZGl2PjxkaXY+cmVtb3ZlZCBiZWNhdXNlIGl0IHJlbGF0ZXMgdG8gdGhl IG9yaWdpbmFsIG5haXZlPC9kaXY+PGRpdj5pbXBsZW1lbnRhdGlvbi48L2Rpdj48YmxvY2txdW90 ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRk aW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1z ZyI+PGRpdj48ZGl2PiZuYnNwOyAqLzxicj4tIHdoaWxlIChuX25lZWRsZV9ieXRlcyAmbHQ7PSBu X2hheXN0YWNrX2J5dGVzICZhbXA7JmFtcDs8YnI+LSBtZW1jbXAoaGF5c3RhY2tfc3RyLCBuZWVk bGVfc3RyLCBuX25lZWRsZV9ieXRlcykgIT0gMCkgezxicj4tIHBvc2l0aW9uKys7PGJyPi0gbl9o YXlzdGFja19ieXRlcy0tOzxicj4tIGhheXN0YWNrX3N0cisrOzxicj4rIHByZWZpeF90YWJsZSA9 IGNhbGxvYyhuX25lZWRsZV9ieXRlcywgc2l6ZW9mKHNpemVfdCkpOzxicj4rPGJyPisgaWYgKHBy ZWZpeF90YWJsZSAhPSBOVUxMKSB7PGJyPisgcHJlZml4X3RhYmxlX2dlbl9iaW4obmVlZGxlX3N0 ciwgbl9uZWVkbGVfYnl0ZXMsIHByZWZpeF90YWJsZSk7PGJyPisgcG9zaXRpb24gPSBrbXBfYmlu KGhheXN0YWNrX3N0ciwgbmVlZGxlX3N0ciwgbl9oYXlzdGFja19ieXRlcywgbl9uZWVkbGVfYnl0 ZXMsIDAsIHByZWZpeF90YWJsZSk7PGJyPisgfSBlbHNlIHs8YnI+KyB3aGlsZSAobl9uZWVkbGVf Ynl0ZXMgJmx0Oz0gbl9oYXlzdGFja19ieXRlcyAmYW1wOyZhbXA7PGJyPisgbWVtY21wKGhheXN0 YWNrX3N0ciwgbmVlZGxlX3N0ciwgbl9uZWVkbGVfYnl0ZXMpICE9IDApIHs8YnI+KyBwb3NpdGlv bisrOzxicj4rIG5faGF5c3RhY2tfYnl0ZXMtLTs8YnI+KyBoYXlzdGFja19zdHIrKzs8YnI+KyB9 PGJyPisgaWYgKG5fbmVlZGxlX2J5dGVzICZndDsgbl9oYXlzdGFja19ieXRlcyk8YnI+KyBwb3Np dGlvbiA9IDA7PGJyPiZuYnNwOyB9PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3Rl PjxkaXY+U2VlIHRoZSBjb21tZW50IGFib3V0IHRoZSZuYnNwO2luZGVudGF0aW9uIGFib3ZlLjwv ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFy Z2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVy IGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+KyAvKjxicj4rICogS01QIGFsZ29yaXRobSB3aXRo IHVuaWNvZGUgc3VwcG9ydDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2 PlR5cGUgcy91bmljb2RlL1VuaWNvZGUuPC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1s ZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+ PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4mbmJz cDsvKjxicj4tICogVGhlIHJlcGxhY2UoKSBmdW5jdGlvbi4gVGhyZWUgYXJndW1lbnRzIGFyZSBh bGwgc3RyaW5nczogY2FsbDxicj4rICogVGhlIHJlcGxhY2UoKSBmdW5jdGlvbi4gVGhyZWUgYXJn dW1lbnRzIGFyZSBhbGwgc3RyaW5nczogY2FsbDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxv Y2txdW90ZT48ZGl2PlRoaXMgY2hhbmdlIGlzIGV4Y2Vzcy48L2Rpdj48YmxvY2txdW90ZSBzdHls ZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAg MCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRp dj48ZGl2PkBAIC0xMzA5LDcgKzE0ODcsNyBAQCByZXBsYWNlRnVuYyhzcWxfY29udGV4dCAqIGNv bnRleHQsIGludCBhcmdjLCBzcWxfdmFsdWUgKiogYXJndik8YnI+Jm5ic3A7IHpQYXR0ZXJuID0g bWVtX2FzX3VzdHIoYXJndlsxXSk7PGJyPiZuYnNwOyBpZiAoelBhdHRlcm4gPT0gMCkgezxicj4m bmJzcDsgYXNzZXJ0KG1lbV9pc19udWxsKGFyZ3ZbMV0pPGJyPi0gfHwgc3FsX2NvbnRleHRfZGJf aGFuZGxlKGNvbnRleHQpLSZndDttYWxsb2NGYWlsZWQpOzxicj4rIHx8IHNxbF9jb250ZXh0X2Ri X2hhbmRsZShjb250ZXh0KS0mZ3Q7bWFsbG9jRmFpbGVkKTs8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Jsb2NrcXVvdGU+PGRpdj5UaGlzIGNoYW5nZSBpcyBleGNlc3MuPC9kaXY+PGJsb2NrcXVv dGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFk ZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1t c2ciPjxkaXY+PGRpdj4mbmJzcDsgcmV0dXJuOzxicj4mbmJzcDsgfTxicj4mbmJzcDsgblBhdHRl cm4gPSBtZW1fbGVuX3Vuc2FmZShhcmd2WzFdKTs8YnI+QEAgLTEzMzEsNDAgKzE1MDksOTAgQEAg cmVwbGFjZUZ1bmMoc3FsX2NvbnRleHQgKiBjb250ZXh0LCBpbnQgYXJnYywgc3FsX3ZhbHVlICoq IGFyZ3YpPGJyPiZuYnNwOyByZXR1cm47PGJyPiZuYnNwOyB9PGJyPiZuYnNwOyBsb29wTGltaXQg PSBuU3RyIC0gblBhdHRlcm47PGJyPi0gZm9yIChpID0gaiA9IDA7IGkgJmx0Oz0gbG9vcExpbWl0 OyBpKyspIHs8YnI+LSBpZiAoelN0cltpXSAhPSB6UGF0dGVyblswXTxicj4tIHx8IG1lbWNtcCgm YW1wO3pTdHJbaV0sIHpQYXR0ZXJuLCBuUGF0dGVybikpIHs8YnI+LSB6T3V0W2orK10gPSB6U3Ry W2ldOzxicj4tIH0gZWxzZSB7PGJyPi0gdTggKnpPbGQ7PGJyPi0gc3FsICpkYiA9IHNxbF9jb250 ZXh0X2RiX2hhbmRsZShjb250ZXh0KTs8YnI+LSBuT3V0ICs9IG5SZXAgLSBuUGF0dGVybjs8YnI+ LSB0ZXN0Y2FzZShuT3V0IC0gMSA9PSBkYi0mZ3Q7YUxpbWl0W1NRTF9MSU1JVF9MRU5HVEhdKTs8 YnI+LSB0ZXN0Y2FzZShuT3V0IC0gMiA9PSBkYi0mZ3Q7YUxpbWl0W1NRTF9MSU1JVF9MRU5HVEhd KTs8YnI+LSBpZiAobk91dCAtIDEgJmd0OyBkYi0mZ3Q7YUxpbWl0W1NRTF9MSU1JVF9MRU5HVEhd KSB7PGJyPi0gZGlhZ19zZXQoQ2xpZW50RXJyb3IsIEVSX1NRTF9FWEVDVVRFLCAic3RyaW5nICJc PGJyPi0gIm9yIGJpbmFyeSBzdHJpbmcgaXMgdG9vIGJpZyIpOzxicj4tIGNvbnRleHQtJmd0O2lz X2Fib3J0ZWQgPSB0cnVlOzxicj4tIHNxbF9mcmVlKHpPdXQpOzxicj4tIHJldHVybjs8YnI+LSB9 PGJyPi0gek9sZCA9IHpPdXQ7PGJyPi0gek91dCA9IHNxbF9yZWFsbG9jNjQoek91dCwgKGludClu T3V0KTs8YnI+LSBpZiAoek91dCA9PSAwKSB7PGJyPi0gY29udGV4dC0mZ3Q7aXNfYWJvcnRlZCA9 IHRydWU7PGJyPi0gc3FsX2ZyZWUoek9sZCk7PGJyPi0gcmV0dXJuOzxicj4rPGJyPisgaWYgKHBy ZWZpeF90YWJsZSAhPSBOVUxMKSB7PGJyPisgLyoqPGJyPisgKiBvcHRpbWl6ZWQgcmVwbGFjZW1l bnQgbG9naWMgdXNpbmcgS01QIGFsZ29yaXRobTxicj4rICogcmVxdWlyZXMgYWRkaXRpb25hbCBP KG5QYXR0ZXJuKSBtZW1vcnkgZm9yIHByZWZpeCB0YWJsZTxicj4rICogcmVwbGFjaW5nOiB0aW1l IE8obiArIG0pPGJyPisgKi88L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRp dj5JbiBDIGNvbW1lbnRzIG91dCBvZiBmdW5jdGlvbnMgYW5kIGluc2lkZSBvZiBmdW5jdGlvbnMg c2hvdWxkPC9kaXY+PGRpdj5iZSZuYnNwO2RpZmZlcmVudCBpbiBob3cgdGhleSBhcmUgc3RhcnRl ZC4gRXZlcnl0aGluZyBlbHNlIGlzIHdyb25nLjwvZGl2PjxkaXY+QmVsb3cgYXJlIGNvcnJlY3Qg ZXhhbXBsZXM6PC9kaXY+PGRpdj4mbmJzcDsmbmJzcDsvKiogY29tZXMgZm9yIGRvY3VtZW50YXRp b24gY29tbWVudHM8L2Rpdj48ZGl2PiZuYnNwOyZuYnNwOy8qIGZvciBsb2NhbCBub3QgZG9jdW1l bnRlZCBjb21tZW50cy48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+SG93ZXZlciB0aGUgZGlm ZmVyZW5jZSBpcyB2YWd1ZSBhbHJlYWR5LCBzbyB0aGUgcnVsZSBpcyBzaW1wbGUg4oCUPC9kaXY+ PGRpdj5vdXQgb2YgZnVuY3Rpb24gPSAvKiosIGluc2lkZSA9IC8qLiZuYnNwOzwvZGl2PjxkaXY+ Jm5ic3A7PC9kaXY+PGRpdj5UaGlzIGlzIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBoZXJlWzRd LjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsg bWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVs cGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+Kzxicj4rIC8qIHByZWNhbGN1bGF0aW5nIHBy ZWZpeCB0YWJsZSAqLzxicj4rIHByZWZpeF90YWJsZSA9IGNhbGxvYyhuUGF0dGVybiwgc2l6ZW9m KHNpemVfdCkpOzxicj4rIHByZWZpeF90YWJsZV9nZW5fYmluKHpQYXR0ZXJuLCBuUGF0dGVybiwg cHJlZml4X3RhYmxlKTs8YnI+KyAvKiBjb3VudGluZyB0aGUgbnVtYmVyIG9mIFBhdHRlcm4gb2Nj dXJyZW5jZXMgKi88YnI+KyBmb3IgKG5DbnQgPSBpU3RyID0gblBhdHRlcm5Qb3MgPSAwOzspIHs8 YnI+KyBuUGF0dGVyblBvcyA9IGttcF9iaW4oelN0ciwgelBhdHRlcm4sIG5TdHIsIG5QYXR0ZXJu LCBpU3RyLCBwcmVmaXhfdGFibGUpOzxicj4rIGlTdHIgPSBuUGF0dGVyblBvcyArIG5QYXR0ZXJu Ozxicj4rIGlmIChuUGF0dGVyblBvcyA9PSAwKTxicj4rIGJyZWFrOzxicj4rICsrbkNudDs8YnI+ KyB9PGJyPisgLyogcmVhbGxvY2F0aW9uZyBtZW0gZm9yIHpPdXQgKi88YnI+KyBuT3V0ICs9IChu UmVwIC0gblBhdHRlcm4pICogbkNudDs8YnI+KyBhc3NlcnQobk91dCAmbHQ7IFNRTF9NQVhfTEVO R1RIKTs8YnI+KyB6T3V0ID0gY29udGV4dE1hbGxvYyhjb250ZXh0LCAoaTY0KSBuT3V0KTs8YnI+ KyBpZiAoek91dCA9PSAwKSB7PGJyPisgcmV0dXJuOzxicj4rIH08L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj5CcmFja2V0cyBhcmUgZXhjZXNzLjwvZGl2PjxibG9ja3F1 b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBh ZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ct bXNnIj48ZGl2PjxkaXY+KyAvKiBjb3BpbmcgYW5kIHJlcGxhY2luZyBpbi1wbGFjZSAqLzxicj4r IGZvciAoaVN0ciA9IG5Db3BpZWRTdHIgPSBuQ29waWVkT3V0ID0gblBhdHRlcm5Qb3MgPSAwOzsp IHs8YnI+KyBuUGF0dGVyblBvcyA9IGttcF9iaW4oelN0ciwgelBhdHRlcm4sIG5TdHIsIG5QYXR0 ZXJuLCBpU3RyLCBwcmVmaXhfdGFibGUpOzxicj4rIGlTdHIgPSBuUGF0dGVyblBvcyArIG5QYXR0 ZXJuOzxicj4rIGlmIChuUGF0dGVyblBvcyA9PSAwKTxicj4rIGJyZWFrOzxicj4rIGFzc2VydChu UGF0dGVyblBvcyAmZ3Q7PSBuQ29waWVkU3RyKTs8YnI+KyBtZW1jcHkoek91dCArIG5Db3BpZWRP dXQsIHpTdHIgKyBuQ29waWVkU3RyLCBuUGF0dGVyblBvcyAtIG5Db3BpZWRTdHIpOzxicj4rIG5D b3BpZWRPdXQgKz0gblBhdHRlcm5Qb3MgLSBuQ29waWVkU3RyOzxicj4rIG1lbWNweSh6T3V0ICsg bkNvcGllZE91dCwgelJlcCwgblJlcCk7PGJyPisgbkNvcGllZE91dCArPSBuUmVwOzxicj4rIG5D b3BpZWRTdHIgPSBuUGF0dGVyblBvcyArIG5QYXR0ZXJuOzxicj4rIH08YnI+KyBtZW1jcHkoek91 dCArIG5Db3BpZWRPdXQsIHpTdHIgKyBuQ29waWVkU3RyLCBuU3RyIC0gbkNvcGllZFN0cik7PGJy Pisgek91dFtuT3V0IC0gMV0gPSAwOzxicj4rIGZyZWUocHJlZml4X3RhYmxlKTs8YnI+KyB9PGJy PisgZWxzZSB7PGJyPisgLyoqPGJyPisgKiBOYWl2ZSByZXBsYWNpbmcgc3Vic3RyaW5nIGFsZ29y aXRobTxicj4rICogcmVwbGFjaW5nOiB0aW1lIE8obiAqIG0pLCBtZW0gTygxKTxicj4rICogdXNl ZCBpZiBjYW5ub3QgYWxsb2NhdGUgbWVtIGZvciBwcmVmaXggdGFibGU8YnI+KyAqLzwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48ZGl2PlNlZSB0aGUgY29tbWVudCBhYm91dCBp bi1mdW5jdGlvbiZuYnNwO2NvbW1lbnRzIGFib3ZlLjwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJi b3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAg MTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2Pjxk aXY+ZGlmZiAtLWdpdCBhL3Rlc3Qvc3FsLXRhcC9wb3NpdGlvbi50ZXN0Lmx1YSBiL3Rlc3Qvc3Fs LXRhcC9wb3NpdGlvbi50ZXN0Lmx1YTxicj5pbmRleCA2YTk2ZWQ5YmMuLmI5MjQ0YmFmNiAxMDA3 NTU8YnI+LS0tIGEvdGVzdC9zcWwtdGFwL3Bvc2l0aW9uLnRlc3QubHVhPGJyPisrKyBiL3Rlc3Qv c3FsLXRhcC9wb3NpdGlvbi50ZXN0Lmx1YTxicj5AQCAtNjc5LDEyICs2NzksMTUgQEAgdGVzdDpk b19leGVjc3FsX3Rlc3QoPGJyPiZuYnNwOzxicj4mbmJzcDstLSBDb2xsYXRpb24gaXMgc2V0IGlu IHNwYWNlIGZvcm1hdC48YnI+Jm5ic3A7PGJyPistLSBUZXN0cyA2My02NSBhcmUgYWx0ZXJlZCBi ZWNhdXNlIG5ldyB2ZXJzaW9uIG9mIHBvc2l0aW9uKCkgdGhhdCB1c2VzIEtNUCBhbGc8YnI+Ky0t IGludGVudGlvbmFsbHkgZG9lcyBub3Qgbm9ybWFsaXplIGdpdmVuIHN0cmluZ3MgKGluIHdoaWNo IGNhc2UgJ2EnIGRpZmZlcnMgZnJvbSAnw6AnIGV0Yy4pPGJyPis8YnI+Jm5ic3A7dGVzdDpkb19l eGVjc3FsX3Rlc3QoPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyJwb3NpdGlvbi0x LjYzIiw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7W1s8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q1JFQVRFIFRBQkxFIHRl c3QxIChzMSBWQVJDSEFSKDUpIFBSSU1BUlkgS0VZIENPTExBVEUgInVuaWNvZGVfY2kiKTs8YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SU5T RVJUIElOVE8gdGVzdDEgVkFMVUVTKCfDoCcpOzxicj4tIFNFTEVDVCBQT1NJVElPTignYScsIHMx KSBGUk9NIHRlc3QxOzxicj4rIFNFTEVDVCBQT1NJVElPTignw6AnLCBzMSkgRlJPTSB0ZXN0MTs8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 REVMRVRFIEZST00gdGVzdDE7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO11dLCB7 PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OzE8YnI+QEAgLTY5NSw3ICs2OTgsNyBAQCB0ZXN0OmRvX2V4ZWNzcWxfdGVzdCg8YnI+Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7InBvc2l0aW9uLTEuNjQiLDxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtbWzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtJTlNFUlQgSU5UTyB0ZXN0MSBWQUxVRVMoJ3F3w6hydHknKTs8 YnI+LSBTRUxFQ1QgUE9TSVRJT04oJ2VyJywgczEpIEZST00gdGVzdDE7PGJyPisgU0VMRUNUIFBP U0lUSU9OKCfDqHInLCBzMSkgRlJPTSB0ZXN0MTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7REVMRVRFIEZST00gdGVzdDE7PGJyPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO11dLCB7PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzM8YnI+QEAgLTcwNiw3ICs3MDksNyBAQCB0 ZXN0OmRvX2V4ZWNzcWxfdGVzdCg8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7InBv c2l0aW9uLTEuNjUiLDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtbWzxicj4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJTlNFUlQg SU5UTyB0ZXN0MSBWQUxVRVMoJ3F3w6hydMO/Jyk7PGJyPi0gU0VMRUNUIFBPU0lUSU9OKCd5Jywg czEpIEZST00gdGVzdDE7PGJyPisgU0VMRUNUIFBPU0lUSU9OKCfDvycsIHMxKSBGUk9NIHRlc3Qx Ozxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtERUxFVEUgRlJPTSB0ZXN0MTs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7XV0s IHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Njxicj4tLTxicj4yLjMzLjA8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+ PGRpdj5JIHByb3Bvc2UgdG8gaW50cm9kdWNlIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIHRlc3RzIG1v ZGlmaWNhdGlvbi48L2Rpdj48ZGl2PkNoYW5nZXMgaW4gdGVzdHMgaGF2ZSBub3RoaW5nIHRvIGRv IHdpdGggdGhlIEtNUCBhbGdvcml0aG08L2Rpdj48ZGl2PmltcGxlbWVudGF0aW9uIGl0c2VsZi4m bmJzcDs8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+WW91IGNhbiByZWFkIGEgZ3VpZGUgb24g aG93IHRvIHNlbmQgYSBwYXRjaCBzZXQgaGVyZVs1XS48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2Pjxk aXY+WzFdOiZuYnNwOzxhIGhyZWY9Imh0dHBzOi8vd3d3LnRhcmFudG9vbC5pby9lbi9kb2MvbGF0 ZXN0L2Rldl9ndWlkZS9kZXZlbG9wZXJfZ3VpZGVsaW5lcy8iPmh0dHBzOi8vd3d3LnRhcmFudG9v bC5pby9lbi9kb2MvbGF0ZXN0L2Rldl9ndWlkZS9kZXZlbG9wZXJfZ3VpZGVsaW5lcy88L2E+PC9k aXY+PGRpdj5bMl06Jm5ic3A7PGEgaHJlZj0iaHR0cHM6Ly9saXN0cy50YXJhbnRvb2wub3JnL3Rh cmFudG9vbC1wYXRjaGVzLzIwMjEwNzMxMTMzNjQ4LjI1NjYwLTEtbS5rb2tyeWFzaGtpbkB0YXJh bnRvb2wub3JnLyI+aHR0cHM6Ly9saXN0cy50YXJhbnRvb2wub3JnL3RhcmFudG9vbC1wYXRjaGVz LzIwMjEwNzMxMTMzNjQ4LjI1NjYwLTEtbS5rb2tyeWFzaGtpbkB0YXJhbnRvb2wub3JnLzwvYT48 L2Rpdj48ZGl2PlszXTombmJzcDs8YSBocmVmPSJodHRwczovL3d3dy50YXJhbnRvb2wuaW8vZW4v ZG9jL2xhdGVzdC9kZXZfZ3VpZGUvY19zdHlsZV9ndWlkZS8jY2hhcHRlci0zLXBsYWNpbmctYnJh Y2VzLWFuZC1zcGFjZXMiPmh0dHBzOi8vd3d3LnRhcmFudG9vbC5pby9lbi9kb2MvbGF0ZXN0L2Rl dl9ndWlkZS9jX3N0eWxlX2d1aWRlLyNjaGFwdGVyLTMtcGxhY2luZy1icmFjZXMtYW5kLXNwYWNl czwvYT48L2Rpdj48ZGl2Pls0XTombmJzcDs8YSBocmVmPSJodHRwczovL3d3dy50YXJhbnRvb2wu aW8vZW4vZG9jL2xhdGVzdC9kZXZfZ3VpZGUvY19zdHlsZV9ndWlkZS8jY2hhcHRlci04LWNvbW1l bnRpbmciPmh0dHBzOi8vd3d3LnRhcmFudG9vbC5pby9lbi9kb2MvbGF0ZXN0L2Rldl9ndWlkZS9j X3N0eWxlX2d1aWRlLyNjaGFwdGVyLTgtY29tbWVudGluZzwvYT48L2Rpdj48ZGl2Pls1XTombmJz cDs8YSBocmVmPSJodHRwczovL3d3dy50YXJhbnRvb2wuaW8vZW4vZG9jL2xhdGVzdC9kZXZfZ3Vp ZGUvZGV2ZWxvcGVyX2d1aWRlbGluZXMvI2hvdy10by1zdWJtaXQtYS1wYXRjaC1mb3ItcmV2aWV3 Ij5odHRwczovL3d3dy50YXJhbnRvb2wuaW8vZW4vZG9jL2xhdGVzdC9kZXZfZ3VpZGUvZGV2ZWxv cGVyX2d1aWRlbGluZXMvI2hvdy10by1zdWJtaXQtYS1wYXRjaC1mb3ItcmV2aWV3PC9hPjwvZGl2 PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj5CZXN0IHJlZ2FyZHMsPC9kaXY+PGRpdj5NYXhpbSBLb2ty eWFzaGtpbjwvZGl2PjwvQk9EWT48L0hUTUw+Cg== ----ALT--9eEd48A4343373f7395cb3562C4b927E1634730409--