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 CC9674922C3; Wed, 24 May 2023 23:36:07 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org CC9674922C3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1684960567; bh=OwyIihcYienhZ3tPhxBvSakEftnHWlCS29OcWmd36i0=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=j5yPHmbb0vu56oQTcFnfeOpg2vDoX3eouZiWmHIkfgdb9eCCFY+yqmOzrkoSbisVj +Fzeu4RZ+9Y/BOAqNV18YXrcxbfwylThT4oHBEfPEMxE/tGgJ7LWM/SThEnJsbw5oj Bh+rByjlUKb6oEjL0GObjqPi7FD+9fjGdoWzX4Ic= Received: from f416.i.mail.ru (f416.i.mail.ru [45.84.128.203]) (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 7FE3D469FFA for ; Wed, 24 May 2023 23:36:06 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 7FE3D469FFA Received: by f416.i.mail.ru with local (envelope-from ) id 1q1vDG-0007Mp-JQ; Wed, 24 May 2023 23:36:03 +0300 Received: by e.mail.ru with HTTP; Wed, 24 May 2023 23:36:02 +0300 To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= MIME-Version: 1.0 X-Mailer: Mail.Ru Mailer 1.0 X-SenderField-ReMsg: 16849605191397823776 X-SenderField-Remind: 0 Date: Wed, 24 May 2023 23:36:02 +0300 X-Priority: 3 (Normal) Message-ID: <1684960562.12973543@f416.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--e23588E36D7ceD5140D780661696C1101684960562" In-Reply-To: <20230524203513.246808-1-m.kokryashkin@tarantool.org> References: <20230524203513.246808-1-m.kokryashkin@tarantool.org> X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 119C1F4DF6A9251C4A6CEEF30A52BB45CB8213EAE3410CE5EB560D83AE27245D8FD872164937FA4C697F3C3731A30ABDD92F3F388A6C04CACBFA1D1872957091A8144EFC8E86E7CB X-7FA49CB5: 70AAF3C13DB7016878DA827A17800CE7D8A8F0440E5990B6D82A6BABE6F325ACACBFF42033827DA7BCF491FFA38154B613377AFFFEAFD2691661749BA6B97735C59BC9C499248573C2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6778DA827A17800CE7BF27F4FA2823CCF0EA1F7E6F0F101C6723150C8DA25C47586E58E00D9D99D84E1BDDB23E98D2D38BE5CCB53A13BC8DBA395A472454E2EE37B43EED83B5ADC692CC7F00164DA146DAFE8445B8C89999728AA50765F7900637C314DFB726039F08389733CBF5DBD5E9C8A9BA7A39EFB766F5D81C698A659EA7CC7F00164DA146DA9985D098DBDEAEC86633242DC0339950F6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA7E827F84554CEF5019E625A9149C048EE33AC447995A7AD182BEBFE083D3B9BA73A03B725D353964B0B7D0EA88DDEDAC722CA9DD8327EE4933F735096452955E32686C055BC15B7FBC4224003CC83647689D4C264860C145E X-B7AD71C0: 1B70FBA5C9BEEE72C9761FC34675ADEB871C96603B655635EE9D5CB6078CC77CACBAD2BC10A75AD4D896CDA25F6F05AD X-C1DE0DAB: 0D63561A33F958A59BAA71B1D96A9CCB24EC16B8229C09721A880C6E81AC97CEF87CCE6106E1FC07E67D4AC08A07B9B062B3BD3CC35DA588CB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0AD84692C1D4137AD70F22D334B9B612B432CCB5A6D6581D03D0776B5B2C279835F17BCBE6708A5A68D02015372BE9702A250F4DA2D307F73A6FD0FEFEA27FC2C6F5E85589E0991E47BACEB1EAF5B0FD285516622B92718E2FE9B815B7972F6FBBE56F9A5AD3BFEE21F615734BE89F36994C7CEAA0681F5848F43082AE146A756F3 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5+wYjsrrSY/u8Y3PrTqANeitKFiSd6Yd7yPpbiiZ/d5BsxIjK0jGQgCHUM3Ry2Lt2G3MDkMauH3h0dBdQGj+BB/iPzQYh7XS329fgu+/vnDhcAl+7IbwgzRVQZbL38qV8Q== X-Mailru-MI: 10001000000400800 X-Mailru-Sender: D940E3D0A8BFF72FAB4CDABEBB66FCA46BEF4D011BE76C98935A446A666FE5AF4ED923EAA3DA9CA506CD02445D2D9C8FA2BFD6D8330F0C2D563E610FBBDBB4C842051EA7CBBFB509093DA5C00B83CE8412EB40C6FA10D71EFD657A8799238ED55FEEDEB644C299C0ED14614B50AE0675 X-Mras: Ok X-Spam: undefined Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_luajit_v2=5D_sysprof=3A_i?= =?utf-8?q?mprove_parser=27s_memory_footprint?= 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: Maxim Kokryashkin via Tarantool-patches Reply-To: =?UTF-8?B?TWF4aW0gS29rcnlhc2hraW4=?= Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" ----ALT--e23588E36D7ceD5140D780661696C1101684960562 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQpGb3Jnb3QgdG8gaW5jbHVkZSBteSBhbnN3ZXJzIHRvIHF1ZXN0aW9ucy4KwqAKPiBBbHNv LCBpdCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQVZMLXRyZWUgaW1wbGVtZW50YXRpb24sCj4gd2hpY2gg cHJvZHVjZWQgdW5uZWNlc3NhcnkgaW5zZXJ0cyBvZiB2YWx1ZXMgaW50byBub2Rlcy4KwqAKUTog U2hvdWxkIGl0IGJlIGFueSB0ZXN0IGZvciB0aGlzPwpBbHNvLCBtYXkgYmUgdGhpcyBzaG91bGQg YmUgZG9uZSBpbiB0aGUgc2VwYXJhdGUgY29tbWl0IChub3QgcGF0Y2g/KS4KwqAKQTogSXQgaXMg c3VjaCBhIHNpbGx5IGJ1ZywgdGhhdCBubywgSSBkb24ndCBiZWxpZXZlIGl0J3MgbmVlZGVkLiBJ J3ZlIGxpdGVybGx5CmNoYW5nZWQgdGhlIGxpbmUgZnJvbSBgdGFibGUuaW5zZXJ0KG5vZGUudmFs dWUsIHZhbHVlKWAgdG8KYG5vZGUudmFsdWUgPSB2YWx1ZWAuIEFuZCB3ZSBzdGlsbCBoYXZlIHRl c3RzIGZvciB0aGUgQVZMIHRyZWUgaXRzZWxmLCBzbwp3ZSBrbm93IGZvciBzdXJlIHRoYXQgdGhp cyBjaGFuZ2UgZG9lc24ndCBicmVhayBhbnl0aGluZy4KwqAKTkI6IENJIGlzIHJlZCBpbiBMdWFK SVQgcmVwbyBiZWNhdXNlIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2hhbmdlcyBpbiB0aGUKdGFyYW50 b29sIHJlcG8sIHNvIHBsZWFzZSByZWZlciB0byBDSSBydW5zIGluIFBSLgrCoAotLQpCZXN0IHJl Z2FyZHMsCk1heGltIEtva3J5YXNoa2luCsKgCsKgIAo+0KHRgNC10LTQsCwgMjQg0LzQsNGPIDIw MjMsIDIzOjM1ICswMzowMCDQvtGCIE1heGltIEtva3J5YXNoa2luIDxtYXgua29rcnlhc2hraW5A Z21haWwuY29tPjoKPsKgCj5UaGlzIHBhdGNoIHJlZHVjZXMgc3lzcHJvZidzIHBhcnNlciBtZW1v cnkgZm9vdHByaW50LAo+YnkgYXZvaWRpbmcgcmVhZGluZyBhbGwgY2FsbGNoYWlucyBiZWZvcmUg Y29sbGFwc2luZyB0aGVtLgo+SW5zdGVhZCBvZiBpdCwgcGFyc2VyIG1lcmdlcyBzdGFja3MgaW1t ZWRpYXRlbHkgYWZ0ZXIKPnJlYWRpbmcgdGhlbSBhbmQgc3RvcmVzIGNvdW50cyBpbiBhIGx1YSB0 YWJsZS4KPgo+QWxzbywgaXQgZml4ZXMgYSBidWcgaW4gdGhlIEFWTC10cmVlIGltcGxlbWVudGF0 aW9uLAo+d2hpY2ggcHJvZHVjZWQgdW5uZWNlc3NhcnkgaW5zZXJ0cyBvZiB2YWx1ZXMgaW50byBu b2Rlcy4KPi0tLQo+Cj5DaGFuZ2VzIGluIHYyOgo+LSBGaXhlZCBjb21tZW50cyBhcyBwZXIgcmV2 aWV3IGJ5IFNlcmdleS4KPgo+QnJhbmNoOiAgaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC9s dWFqaXQvdHJlZS9mY2t4b3JnL2doLTg3MDAtc3lzcHJvZi1wYXJzZXItcmVmYWN0b3JpbmcKPlBS OiAgaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvcHVsbC84NzAzCj4KPsKg dG9vbHMvQ01ha2VMaXN0cy50eHQgfCAyIC0KPsKgdG9vbHMvc3lzcHJvZi5sdWEgfCAyNyArLS0t LS0tLQo+wqB0b29scy9zeXNwcm9mL2NvbGxhcHNlLmx1YSB8IDEyNCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPsKgdG9vbHMvc3lzcHJvZi9wYXJzZS5sdWEgfCAxMjcgKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+wqB0b29scy91dGlscy9hdmwubHVh IHwgMiArLQo+wqB0b29scy91dGlscy9zeW10YWIubHVhIHwgMiArLQo+wqA2IGZpbGVzIGNoYW5n ZWQsIDk3IGluc2VydGlvbnMoKyksIDE4NyBkZWxldGlvbnMoLSkKPsKgZGVsZXRlIG1vZGUgMTAw NzU1IHRvb2xzL3N5c3Byb2YvY29sbGFwc2UubHVhCj4KPmRpZmYgLS1naXQgYS90b29scy9DTWFr ZUxpc3RzLnR4dCBiL3Rvb2xzL0NNYWtlTGlzdHMudHh0Cj5pbmRleCBkZDdlYzZiZC4uM2E5MTk0 MzMgMTAwNjQ0Cj4tLS0gYS90b29scy9DTWFrZUxpc3RzLnR4dAo+KysrIGIvdG9vbHMvQ01ha2VM aXN0cy50eHQKPkBAIC0xMTIsNyArMTEyLDYgQEAgZWxzZSgpCj7CoMKgwqBhZGRfY3VzdG9tX3Rh cmdldCh0b29scy1wYXJzZS1zeXNwcm9mIEVYQ0xVREVfRlJPTV9BTEwgREVQRU5EUwo+wqDCoMKg wqDCoGx1YWppdC1wYXJzZS1zeXNwcm9mCj7CoMKgwqDCoMKgc3lzcHJvZi9wYXJzZS5sdWEKPi0g c3lzcHJvZi9jb2xsYXBzZS5sdWEKPsKgwqDCoMKgwqBzeXNwcm9mLmx1YQo+wqDCoMKgwqDCoHV0 aWxzL2J1ZnJlYWQubHVhCj7CoMKgwqDCoMKgdXRpbHMvc3ltdGFiLmx1YQo+QEAgLTEyMSw3ICsx MjAsNiBAQCBlbHNlKCkKPsKgCj7CoMKgwqBpbnN0YWxsKEZJTEVTCj7CoMKgwqDCoMKgwqDCoCR7 Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zeXNwcm9mL3BhcnNlLmx1YQo+LSAke0NNQUtFX0NV UlJFTlRfU09VUkNFX0RJUn0vc3lzcHJvZi9jb2xsYXBzZS5sdWEKPsKgwqDCoMKgwqBERVNUSU5B VElPTiAke0xVQUpJVF9EQVRBUk9PVERJUn0vc3lzcHJvZgo+wqDCoMKgwqDCoFBFUk1JU1NJT05T Cj7CoMKgwqDCoMKgwqDCoE9XTkVSX1JFQUQgT1dORVJfV1JJVEUKPmRpZmYgLS1naXQgYS90b29s cy9zeXNwcm9mLmx1YSBiL3Rvb2xzL3N5c3Byb2YubHVhCj5pbmRleCAxYWZhYjE5NS4uYmUyYTA1 NjUgMTAwNjQ0Cj4tLS0gYS90b29scy9zeXNwcm9mLmx1YQo+KysrIGIvdG9vbHMvc3lzcHJvZi5s dWEKPkBAIC0xLDEzICsxLDEwIEBACj7CoGxvY2FsIGJ1ZnJlYWQgPSByZXF1aXJlICJ1dGlscy5i dWZyZWFkIgo+wqBsb2NhbCBzeXNwcm9mID0gcmVxdWlyZSAic3lzcHJvZi5wYXJzZSIKPsKgbG9j YWwgc3ltdGFiID0gcmVxdWlyZSAidXRpbHMuc3ltdGFiIgo+LWxvY2FsIG1pc2MgPSByZXF1aXJl ICJzeXNwcm9mLmNvbGxhcHNlIgo+wqAKPsKgbG9jYWwgc3Rkb3V0LCBzdGRlcnIgPSBpby5zdGRv dXQsIGlvLnN0ZGVycgo+wqBsb2NhbCBtYXRjaCwgZ21hdGNoID0gc3RyaW5nLm1hdGNoLCBzdHJp bmcuZ21hdGNoCj7CoAo+LWxvY2FsIHNwbGl0X2J5X3Ztc3RhdGUgPSBmYWxzZQo+LQo+wqAtLSBQ cm9ncmFtIG9wdGlvbnMuCj7CoGxvY2FsIG9wdF9tYXAgPSB7fQo+wqAKPkBAIC0yOCwxMCArMjUs NiBAQCBTdXBwb3J0ZWQgb3B0aW9ucyBhcmU6Cj7CoMKgwqBvcy5leGl0KDApCj7CoGVuZAo+wqAK Pi1mdW5jdGlvbiBvcHRfbWFwLnNwbGl0KCkKPi0gc3BsaXRfYnlfdm1zdGF0ZSA9IHRydWUKPi1l bmQKPi0KPsKgLS0gUHJpbnQgZXJyb3IgYW5kIGV4aXQgd2l0aCBlcnJvciBzdGF0dXMuCj7CoGxv Y2FsIGZ1bmN0aW9uIG9wdGVycm9yKC4uLikKPsKgwqDCoHN0ZGVycjp3cml0ZSgibHVhaml0LXBh cnNlLXN5c3Byb2YubHVhOiBFUlJPUjogIiwgLi4uKQo+QEAgLTg1LDI4ICs3OCwxNCBAQCBsb2Nh bCBmdW5jdGlvbiBwYXJzZWFyZ3MoYXJncykKPsKgwqDCoHJldHVybiBhcmdzW2FyZ3MuYXJnbl0K PsKgZW5kCj7CoAo+LWxvY2FsIGZ1bmN0aW9uIHRyYXZlcnNlX2NhbGx0cmVlKG5vZGUsIHByZWZp eCkKPi0gaWYgbm9kZS5pc19sZWFmIHRoZW4KPi0gcHJpbnQocHJlZml4Li4nICcuLm5vZGUuY291 bnQpCj4tIGVuZAo+LQo+LSBsb2NhbCBzZXBfcHJlZml4ID0gI3ByZWZpeCA9PSAwIGFuZCBwcmVm aXggb3IgcHJlZml4Li4nOycKPi0KPi0gZm9yIG5hbWUsY2hpbGQgaW4gcGFpcnMobm9kZS5jaGls ZHJlbikgZG8KPi0gdHJhdmVyc2VfY2FsbHRyZWUoY2hpbGQsIHNlcF9wcmVmaXguLm5hbWUpCj4t IGVuZAo+LWVuZAo+LQo+wqBsb2NhbCBmdW5jdGlvbiBkdW1wKGlucHV0ZmlsZSkKPsKgwqDCoGxv Y2FsIHJlYWRlciA9IGJ1ZnJlYWQubmV3KGlucHV0ZmlsZSkKPi0KPsKgwqDCoGxvY2FsIHN5bWJv bHMgPSBzeW10YWIucGFyc2UocmVhZGVyKQo+LQo+wqDCoMKgbG9jYWwgZXZlbnRzID0gc3lzcHJv Zi5wYXJzZShyZWFkZXIsIHN5bWJvbHMpCj4tIGxvY2FsIGNhbGx0cmVlID0gbWlzYy5jb2xsYXBz ZShldmVudHMsIHN5bWJvbHMsIHNwbGl0X2J5X3Ztc3RhdGUpCj4tCj4tIHRyYXZlcnNlX2NhbGx0 cmVlKGNhbGx0cmVlLCAnJykKPsKgCj4rIGZvciBzdGFjaywgY291bnQgaW4gcGFpcnMoZXZlbnRz KSBkbwo+KyBwcmludChzdGFjaywgY291bnQpCj4rIGVuZAo+wqDCoMKgb3MuZXhpdCgwKQo+wqBl bmQKPsKgCj5kaWZmIC0tZ2l0IGEvdG9vbHMvc3lzcHJvZi9jb2xsYXBzZS5sdWEgYi90b29scy9z eXNwcm9mL2NvbGxhcHNlLmx1YQo+ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cj5pbmRleCAzZDgz ZDVlYS4uMDAwMDAwMDAKPi0tLSBhL3Rvb2xzL3N5c3Byb2YvY29sbGFwc2UubHVhCj4rKysgL2Rl di9udWxsCj5AQCAtMSwxMjQgKzAsMCBAQAo+LWxvY2FsIHBhcnNlID0gcmVxdWlyZSAic3lzcHJv Zi5wYXJzZSIKPi1sb2NhbCB2bWRlZiA9IHJlcXVpcmUgImppdC52bWRlZiIKPi1sb2NhbCBzeW10 YWIgPSByZXF1aXJlICJ1dGlscy5zeW10YWIiCj4tCj4tbG9jYWwgVk1TVF9OQU1FUyA9IHsKPi0g W3BhcnNlLlZNU1QuSU5URVJQXSA9ICJWTVNUX0lOVEVSUCIsCj4tIFtwYXJzZS5WTVNULkxGVU5D XSA9ICJWTVNUX0xGVU5DIiwKPi0gW3BhcnNlLlZNU1QuRkZVTkNdID0gIlZNU1RfRkZVTkMiLAo+ LSBbcGFyc2UuVk1TVC5DRlVOQ10gPSAiVk1TVF9DRlVOQyIsCj4tIFtwYXJzZS5WTVNULkdDXSA9 ICJWTVNUX0dDIiwKPi0gW3BhcnNlLlZNU1QuRVhJVF0gPSAiVk1TVF9FWElUIiwKPi0gW3BhcnNl LlZNU1QuUkVDT1JEXSA9ICJWTVNUX1JFQ09SRCIsCj4tIFtwYXJzZS5WTVNULk9QVF0gPSAiVk1T VF9PUFQiLAo+LSBbcGFyc2UuVk1TVC5BU01dID0gIlZNU1RfQVNNIiwKPi0gW3BhcnNlLlZNU1Qu VFJBQ0VdID0gIlZNU1RfVFJBQ0UiLAo+LX0KPi0KPi1sb2NhbCBNID0ge30KPi0KPi1sb2NhbCBm dW5jdGlvbiBuZXdfbm9kZShuYW1lLCBpc19sZWFmKQo+LSByZXR1cm4gewo+LSBuYW1lID0gbmFt ZSwKPi0gY291bnQgPSAwLAo+LSBpc19sZWFmID0gaXNfbGVhZiwKPi0gY2hpbGRyZW4gPSB7fQo+ LSB9Cj4tZW5kCj4tCj4tLS0gaW5zZXJ0IG5ldyBjaGlsZCBpbnRvIGEgbm9kZSAob3IgaW5jcmVh c2UgY291bnRlciBpbiBleGlzdGluZyBvbmUpCj4tbG9jYWwgZnVuY3Rpb24gaW5zZXJ0KG5hbWUs IG5vZGUsIGlzX2xlYWYpCj4tIGlmIG5vZGUuY2hpbGRyZW5bbmFtZV0gPT0gbmlsIHRoZW4KPi0g bm9kZS5jaGlsZHJlbltuYW1lXSA9IG5ld19ub2RlKG5hbWUsIGlzX2xlYWYpCj4tIGVuZAo+LQo+ LSBsb2NhbCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bbmFtZV0KPi0gY2hpbGQuY291bnQgPSBjaGls ZC5jb3VudCArIDEKPi0KPi0gcmV0dXJuIGNoaWxkCj4tZW5kCj4tCj4tbG9jYWwgZnVuY3Rpb24g aW5zZXJ0X2x1YV9jYWxsY2hhaW4oY2hhaW4sIGx1YSwgc3ltYm9scykKPi0gbG9jYWwgaW5zX2Nu dCA9IDAKPi0gZm9yIF8sZnIgaW4gcGFpcnMobHVhLmNhbGxjaGFpbikgZG8KPi0gbG9jYWwgbmFt ZV9sdWEKPi0KPi0gaW5zX2NudCA9IGluc19jbnQgKyAxCj4tIGlmIGZyLnR5cGUgPT0gcGFyc2Uu RlJBTUUuRkZVTkMgdGhlbgo+LSBuYW1lX2x1YSA9IHZtZGVmLmZmbmFtZXNbZnIuZmZpZF0KPi0g ZWxzZQo+LSBuYW1lX2x1YSA9IHN5bXRhYi5kZW1hbmdsZShzeW1ib2xzLCB7Cj4tIGFkZHIgPSBm ci5hZGRyLAo+LSBsaW5lID0gZnIubGluZSwKPi0gZ2VuID0gZnIuZ2VuCj4tIH0pCj4tIGlmIGx1 YS50cmFjZS50cmFjZW5vIH49IG5pbCBhbmQgbHVhLnRyYWNlLmFkZHIgPT0gZnIuYWRkciBhbmQK Pi0gbHVhLnRyYWNlLmxpbmUgPT0gZnIubGluZSB0aGVuCj4tIG5hbWVfbHVhID0gc3ltdGFiLmRl bWFuZ2xlKHN5bWJvbHMsIHsKPi0gYWRkciA9IGZyLmFkZHIsCj4tIHRyYWNlbm8gPSBsdWEudHJh Y2UudHJhY2VubywKPi0gZ2VuID0gZnIuZ2VuCj4tIH0pCj4tIGVuZAo+LQo+LSBpZiBmci50eXBl ID09IHBhcnNlLkZSQU1FLkNGVU5DIHRoZW4KPi0gLS0gQyBmdW5jdGlvbiBlbmNvdW50ZXJlZCwg dGhlIG5leHQgY2h1bmsKPi0gLS0gb2YgZnJhbWVzIGlzIGxvY2F0ZWQgb24gdGhlIEMgc3RhY2su Cj4tIGJyZWFrCj4tIGVuZAo+LSBlbmQKPi0KPi0gdGFibGUuaW5zZXJ0KGNoYWluLCAxLCB7IG5h bWUgPSBuYW1lX2x1YSB9KQo+LSBlbmQKPi0gdGFibGUucmVtb3ZlKGx1YS5jYWxsY2hhaW4sIGlu c19jbnQpCj4tZW5kCj4tCj4tLS0gbWVyZ2UgbHVhIGFuZCBob3N0IGNhbGxjaGFpbnMgaW50byBv bmUgY2FsbGNoYWluIHJlcHJlc2VudGluZwo+LS0tIHRyYW5zZmVyIG9mIGNvbnRyb2wKPi1sb2Nh bCBmdW5jdGlvbiBtZXJnZShldmVudCwgc3ltYm9scywgc2VwX3Ztc3QpCj4tIGxvY2FsIGNjID0g e30KPi0KPi0gZm9yIF8saF9mciBpbiBwYWlycyhldmVudC5ob3N0LmNhbGxjaGFpbikgZG8KPi0g bG9jYWwgbmFtZV9ob3N0ID0gc3ltdGFiLmRlbWFuZ2xlKHN5bWJvbHMsIHsKPi0gYWRkciA9IGhf ZnIuYWRkciwKPi0gZ2VuID0gaF9mci5nZW4KPi0gfSkKPi0gdGFibGUuaW5zZXJ0KGNjLCAxLCB7 IG5hbWUgPSBuYW1lX2hvc3QgfSkKPi0KPi0gaWYgc3RyaW5nLm1hdGNoKG5hbWVfaG9zdCwgJ15s dWFfY3BjYWxsJykgfj0gbmlsIHRoZW4KPi0gLS0gQW55IEMgZnVuY3Rpb24gaXMgcHJlc2VudCBv biBib3RoIHRoZSBDIGFuZCB0aGUgTHVhCj4tIC0tIHN0YWNrcy4gSXQgaXMgbW9yZSBjb252ZW5p ZW50IHRvIGdldCBpdHMgaW5mbyBmcm9tIHRoZQo+LSAtLSBob3N0IHN0YWNrLCBzaW5jZSBpdCBo YXMgaW5mb3JtYXRpb24gYWJvdXQgY2hpbGQgZnJhbWVzLgo+LSB0YWJsZS5yZW1vdmUoZXZlbnQu bHVhLmNhbGxjaGFpbiwgMSkKPi0gZW5kCj4tCj4tIGlmIHN0cmluZy5tYXRjaChuYW1lX2hvc3Qs ICdebHVhX3A/Y2FsbCcpIH49IG5pbCB0aGVuCj4tIGluc2VydF9sdWFfY2FsbGNoYWluKGNjLCBl dmVudC5sdWEsIHN5bWJvbHMpCj4tIGVuZAo+LQo+LSBlbmQKPi0KPi0gaWYgc2VwX3Ztc3QgPT0g dHJ1ZSB0aGVuCj4tIHRhYmxlLmluc2VydChjYywgeyBuYW1lID0gVk1TVF9OQU1FU1tldmVudC5s dWEudm1zdGF0ZV0gfSkKPi0gZW5kCj4tCj4tIHJldHVybiBjYwo+LWVuZAo+LQo+LS0tIENvbGxh cHNlIGFsbCB0aGUgZXZlbnRzIGludG8gY2FsbCB0cmVlCj4tZnVuY3Rpb24gTS5jb2xsYXBzZShl dmVudHMsIHN5bWJvbHMsIHNlcF92bXN0KQo+LSBsb2NhbCByb290ID0gbmV3X25vZGUoJ3Jvb3Qn LCBmYWxzZSkKPi0KPi0gZm9yIF8sZXYgaW4gcGFpcnMoZXZlbnRzKSBkbwo+LSBsb2NhbCBjYWxs Y2hhaW4gPSBtZXJnZShldiwgc3ltYm9scywgc2VwX3Ztc3QpCj4tIGxvY2FsIGN1cnJfbm9kZSA9 IHJvb3QKPi0gZm9yIGk9I2NhbGxjaGFpbiwxLC0xIGRvCj4tIGN1cnJfbm9kZSA9IGluc2VydChj YWxsY2hhaW5baV0ubmFtZSwgY3Vycl9ub2RlLCBmYWxzZSkKPi0gZW5kCj4tIGluc2VydCgnJywg Y3Vycl9ub2RlLCB0cnVlKQo+LSBlbmQKPi0KPi0gcmV0dXJuIHJvb3QKPi1lbmQKPi0KPi1yZXR1 cm4gTQo+ZGlmZiAtLWdpdCBhL3Rvb2xzL3N5c3Byb2YvcGFyc2UubHVhIGIvdG9vbHMvc3lzcHJv Zi9wYXJzZS5sdWEKPmluZGV4IDViNTJmMTA0Li44MDYyOTdlYiAxMDA3NTUKPi0tLSBhL3Rvb2xz L3N5c3Byb2YvcGFyc2UubHVhCj4rKysgYi90b29scy9zeXNwcm9mL3BhcnNlLmx1YQo+QEAgLTIs NiArMiw3IEBACj7CoC0tIFRoZSBmb3JtYXQgc3BlYyBjYW4gYmUgZm91bmQgaW4gPHNyYy9sal9z eXNwcm9mLmg+Lgo+wqAKPsKgbG9jYWwgc3ltdGFiID0gcmVxdWlyZSAidXRpbHMuc3ltdGFiIgo+ K2xvY2FsIHZtZGVmID0gcmVxdWlyZSAiaml0LnZtZGVmIgo+wqAKPsKgbG9jYWwgc3RyaW5nX2Zv cm1hdCA9IHN0cmluZy5mb3JtYXQKPsKgCj5AQCAtMTAsNyArMTEsNyBAQCBsb2NhbCBMSlBfQ1VS UkVOVF9WRVJTSU9OID0gMgo+wqAKPsKgbG9jYWwgTSA9IHt9Cj7CoAo+LU0uVk1TVCA9IHsKPits b2NhbCBWTVNUID0gewo+wqDCoMKgSU5URVJQID0gMCwKPsKgwqDCoExGVU5DID0gMSwKPsKgwqDC oEZGVU5DID0gMiwKPkBAIC0yNSwxMyArMjYsMTQgQEAgTS5WTVNUID0gewo+wqB9Cj7CoAo+wqAK Pi1NLkZSQU1FID0gewo+K2xvY2FsIEZSQU1FID0gewo+wqDCoMKgTEZVTkMgPSAxLAo+wqDCoMKg Q0ZVTkMgPSAyLAo+wqDCoMKgRkZVTkMgPSAzLAo+wqDCoMKgQk9UVE9NID0gMHg4MAo+wqB9Cj7C oAo+Kwo+wqBsb2NhbCBTVFJFQU1fRU5EID0gMHg4MAo+wqBsb2NhbCBTWU1UQUJfTEZVTkNfRVZF TlQgPSAxMAo+wqBsb2NhbCBTWU1UQUJfQ0ZVTkNfRVZFTlQgPSAxMQo+QEAgLTU0LDQyICs1Niw0 MCBAQCBsb2NhbCBmdW5jdGlvbiBuZXdfZXZlbnQoKQo+wqDCoMKgfQo+wqBlbmQKPsKgCj4tbG9j YWwgZnVuY3Rpb24gcGFyc2VfbGZ1bmMocmVhZGVyLCBldmVudCwgc3ltYm9scykKPitsb2NhbCBm dW5jdGlvbiBwYXJzZV9sZnVuYyhyZWFkZXIsIHN5bWJvbHMpCj7CoMKgwqBsb2NhbCBhZGRyID0g cmVhZGVyOnJlYWRfdWxlYjEyOCgpCj7CoMKgwqBsb2NhbCBsaW5lID0gcmVhZGVyOnJlYWRfdWxl YjEyOCgpCj7CoMKgwqBsb2NhbCBsb2MgPSBzeW10YWIubG9jKHN5bWJvbHMsIHsgYWRkciA9IGFk ZHIsIGxpbmUgPSBsaW5lIH0pCj4tIGxvYy50eXBlID0gTS5GUkFNRS5MRlVOQwo+LSB0YWJsZS5p bnNlcnQoZXZlbnQubHVhLmNhbGxjaGFpbiwgMSwgbG9jKQo+KyBsb2MudHlwZSA9IEZSQU1FLkxG VU5DCj4rIHJldHVybiBzeW10YWIuZGVtYW5nbGUoc3ltYm9scywgbG9jKQo+wqBlbmQKPsKgCj4t bG9jYWwgZnVuY3Rpb24gcGFyc2VfZmZ1bmMocmVhZGVyLCBldmVudCwgXykKPitsb2NhbCBmdW5j dGlvbiBwYXJzZV9mZnVuYyhyZWFkZXIsIF8pCj7CoMKgwqBsb2NhbCBmZmlkID0gcmVhZGVyOnJl YWRfdWxlYjEyOCgpCj4tIHRhYmxlLmluc2VydChldmVudC5sdWEuY2FsbGNoYWluLCAxLCB7Cj4t IHR5cGUgPSBNLkZSQU1FLkZGVU5DLAo+LSBmZmlkID0gZmZpZCwKPi0gfSkKPisgcmV0dXJuIHZt ZGVmLmZmbmFtZXNbZmZpZF0KPsKgZW5kCj7CoAo+LWxvY2FsIGZ1bmN0aW9uIHBhcnNlX2NmdW5j KHJlYWRlciwgZXZlbnQsIHN5bWJvbHMpCj4rbG9jYWwgZnVuY3Rpb24gcGFyc2VfY2Z1bmMocmVh ZGVyLCBzeW1ib2xzKQo+wqDCoMKgbG9jYWwgYWRkciA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+ wqDCoMKgbG9jYWwgbG9jID0gc3ltdGFiLmxvYyhzeW1ib2xzLCB7IGFkZHIgPSBhZGRyIH0pCj4t IGxvYy50eXBlID0gTS5GUkFNRS5DRlVOQwo+LSB0YWJsZS5pbnNlcnQoZXZlbnQubHVhLmNhbGxj aGFpbiwgMSwgbG9jKQo+KyBsb2MudHlwZSA9IEZSQU1FLkNGVU5DCj4rIHJldHVybiBzeW10YWIu ZGVtYW5nbGUoc3ltYm9scywgbG9jKQo+wqBlbmQKPsKgCj7CoGxvY2FsIGZyYW1lX3BhcnNlcnMg PSB7Cj4tIFtNLkZSQU1FLkxGVU5DXSA9IHBhcnNlX2xmdW5jLAo+LSBbTS5GUkFNRS5GRlVOQ10g PSBwYXJzZV9mZnVuYywKPi0gW00uRlJBTUUuQ0ZVTkNdID0gcGFyc2VfY2Z1bmMKPisgW0ZSQU1F LkxGVU5DXSA9IHBhcnNlX2xmdW5jLAo+KyBbRlJBTUUuRkZVTkNdID0gcGFyc2VfZmZ1bmMsCj4r IFtGUkFNRS5DRlVOQ10gPSBwYXJzZV9jZnVuYwo+wqB9Cj7CoAo+wqBsb2NhbCBmdW5jdGlvbiBw YXJzZV9sdWFfY2FsbGNoYWluKHJlYWRlciwgZXZlbnQsIHN5bWJvbHMpCj7CoMKgwqB3aGlsZSB0 cnVlIGRvCj7CoMKgwqDCoMKgbG9jYWwgZnJhbWVfaGVhZGVyID0gcmVhZGVyOnJlYWRfb2N0ZXQo KQo+LSBpZiBmcmFtZV9oZWFkZXIgPT0gTS5GUkFNRS5CT1RUT00gdGhlbgo+KyBpZiBmcmFtZV9o ZWFkZXIgPT0gRlJBTUUuQk9UVE9NIHRoZW4KPsKgwqDCoMKgwqDCoMKgYnJlYWsKPsKgwqDCoMKg wqBlbmQKPi0gZnJhbWVfcGFyc2Vyc1tmcmFtZV9oZWFkZXJdKHJlYWRlciwgZXZlbnQsIHN5bWJv bHMpCj4rIGxvY2FsIG5hbWUgPSBmcmFtZV9wYXJzZXJzW2ZyYW1lX2hlYWRlcl0ocmVhZGVyLCBz eW1ib2xzKQo+KyB0YWJsZS5pbnNlcnQoZXZlbnQubHVhLmNhbGxjaGFpbiwgMSwge25hbWUgPSBu YW1lLCB0eXBlID0gZnJhbWVfaGVhZGVyfSkKPsKgwqDCoGVuZAo+wqBlbmQKPsKgCj5AQCAtMTAw LDcgKzEwMCw3IEBAIGxvY2FsIGZ1bmN0aW9uIHBhcnNlX2hvc3RfY2FsbGNoYWluKHJlYWRlciwg ZXZlbnQsIHN5bWJvbHMpCj7CoAo+wqDCoMKgd2hpbGUgYWRkciB+PSAwIGRvCj7CoMKgwqDCoMKg bG9jYWwgbG9jID0gc3ltdGFiLmxvYyhzeW1ib2xzLCB7IGFkZHIgPSBhZGRyIH0pCj4tIHRhYmxl Lmluc2VydChldmVudC5ob3N0LmNhbGxjaGFpbiwgMSwgbG9jKQo+KyB0YWJsZS5pbnNlcnQoZXZl bnQuaG9zdC5jYWxsY2hhaW4sIDEsIHN5bXRhYi5kZW1hbmdsZShzeW1ib2xzLCBsb2MpKQo+wqDC oMKgwqDCoGFkZHIgPSByZWFkZXI6cmVhZF91bGViMTI4KCkKPsKgwqDCoGVuZAo+wqBlbmQKPkBA IC0xMDgsMTAgKzEwOCwyMCBAQCBlbmQKPsKgLS1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+LS0KPsKgCj7CoGxv Y2FsIGZ1bmN0aW9uIHBhcnNlX3RyYWNlX2NhbGxjaGFpbihyZWFkZXIsIGV2ZW50LCBzeW1ib2xz KQo+LSBldmVudC5sdWEudHJhY2UudHJhY2VubyA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+LSBl dmVudC5sdWEudHJhY2UuYWRkciA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+LSBldmVudC5sdWEu dHJhY2UubGluZSA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+LSBldmVudC5sdWEudHJhY2UuZ2Vu ID0gc3ltdGFiLmxvYyhzeW1ib2xzLCBldmVudC5sdWEudHJhY2UpLmdlbgo+KyBsb2NhbCBsb2Mg PSB7fQo+KyBsb2MudHJhY2VubyA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+KyBsb2MuYWRkciA9 IHJlYWRlcjpyZWFkX3VsZWIxMjgoKQo+KyBsb2MubGluZSA9IHJlYWRlcjpyZWFkX3VsZWIxMjgo KQo+Kwo+KyBsb2NhbCBnZW4gPSBzeW10YWIubG9jKHN5bWJvbHMsIGxvYykuZ2VuCj4rIGxvY2Fs IG5hbWVfbHVhID0gc3ltdGFiLmRlbWFuZ2xlKHN5bWJvbHMsIHsKPisgYWRkciA9IGxvYy5hZGRy LAo+KyB0cmFjZW5vID0gbG9jLnRyYWNlbm8sCj4rIGdlbiA9IGdlbgo+KyB9KQo+KyBldmVudC5s dWEudHJhY2UgPSBsb2MKPisgZXZlbnQubHVhLnRyYWNlLmdlbiA9IGdlbgo+KyBldmVudC5sdWEu dHJhY2UubmFtZSA9IG5hbWVfbHVhCj7CoGVuZAo+wqAKPsKgLS1+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+LS0K PkBAIC0xNDMsMTggKzE1Myw2MyBAQCBsb2NhbCBmdW5jdGlvbiBwYXJzZV9zeW10YWIocmVhZGVy LCBzeW1ib2xzLCB2bXN0YXRlKQo+wqBlbmQKPsKgCj7CoGxvY2FsIGV2ZW50X3BhcnNlcnMgPSB7 Cj4tIFtNLlZNU1QuSU5URVJQXSA9IHBhcnNlX2hvc3Rfb25seSwKPi0gW00uVk1TVC5MRlVOQ10g PSBwYXJzZV9sdWFfaG9zdCwKPi0gW00uVk1TVC5GRlVOQ10gPSBwYXJzZV9sdWFfaG9zdCwKPi0g W00uVk1TVC5DRlVOQ10gPSBwYXJzZV9sdWFfaG9zdCwKPi0gW00uVk1TVC5HQ10gPSBwYXJzZV9o b3N0X29ubHksCj4tIFtNLlZNU1QuRVhJVF0gPSBwYXJzZV9ob3N0X29ubHksCj4tIFtNLlZNU1Qu UkVDT1JEXSA9IHBhcnNlX2hvc3Rfb25seSwKPi0gW00uVk1TVC5PUFRdID0gcGFyc2VfaG9zdF9v bmx5LAo+LSBbTS5WTVNULkFTTV0gPSBwYXJzZV9ob3N0X29ubHksCj4tIFtNLlZNU1QuVFJBQ0Vd ID0gcGFyc2VfdHJhY2UsCj4rIFtWTVNULklOVEVSUF0gPSBwYXJzZV9ob3N0X29ubHksCj4rIFtW TVNULkxGVU5DXSA9IHBhcnNlX2x1YV9ob3N0LAo+KyBbVk1TVC5GRlVOQ10gPSBwYXJzZV9sdWFf aG9zdCwKPisgW1ZNU1QuQ0ZVTkNdID0gcGFyc2VfbHVhX2hvc3QsCj4rIFtWTVNULkdDXSA9IHBh cnNlX2hvc3Rfb25seSwKPisgW1ZNU1QuRVhJVF0gPSBwYXJzZV9ob3N0X29ubHksCj4rIFtWTVNU LlJFQ09SRF0gPSBwYXJzZV9ob3N0X29ubHksCj4rIFtWTVNULk9QVF0gPSBwYXJzZV9ob3N0X29u bHksCj4rIFtWTVNULkFTTV0gPSBwYXJzZV9ob3N0X29ubHksCj4rIFtWTVNULlRSQUNFXSA9IHBh cnNlX3RyYWNlLAo+wqB9Cj7CoAo+K2xvY2FsIGZ1bmN0aW9uIGluc2VydF9sdWFfY2FsbGNoYWlu KGNoYWluLCBsdWEpCj4rIGxvY2FsIGluc19jbnQgPSAwCj4rIGxvY2FsIG5hbWVfbHVhCj4rIGZv ciBfLCBmciBpbiBpcGFpcnMobHVhLmNhbGxjaGFpbikgZG8KPisgaW5zX2NudCA9IGluc19jbnQg KyAxCj4rIGlmIGZyLnR5cGUgPT0gRlJBTUUuQ0ZVTkMgdGhlbgo+KyAtLSBDIGZ1bmN0aW9uIGVu Y291bnRlcmVkLCB0aGUgbmV4dCBjaHVuawo+KyAtLSBvZiBmcmFtZXMgaXMgbG9jYXRlZCBvbiB0 aGUgQyBzdGFjay4KPisgYnJlYWsKPisgZW5kCj4rIG5hbWVfbHVhID0gZnIubmFtZQo+Kwo+KyBp ZiBmci50eXBlID09IEZSQU1FLkxGVU5DCj4rIGFuZCBsdWEudHJhY2UudHJhY2VubyB+PSBuaWwK PisgYW5kIGx1YS50cmFjZS5hZGRyID09IGZyLmFkZHIKPisgYW5kIGx1YS50cmFjZS5saW5lID09 IGZyLmxpbmUKPisgdGhlbgo+KyBuYW1lX2x1YSA9IGx1YS50cmFjZS5uYW1lCj4rIGVuZAo+Kwo+ KyB0YWJsZS5pbnNlcnQoY2hhaW4sIG5hbWVfbHVhKQo+KyBlbmQKPisgdGFibGUucmVtb3ZlKGx1 YS5jYWxsY2hhaW4sIGluc19jbnQpCj4rZW5kCj4rCj4rbG9jYWwgZnVuY3Rpb24gbWVyZ2UoZXZl bnQpCj4rIGxvY2FsIGNhbGxjaGFpbiA9IHt9Cj4rCj4rIGZvciBfLCBuYW1lX2hvc3QgaW4gaXBh aXJzKGV2ZW50Lmhvc3QuY2FsbGNoYWluKSBkbwo+KyB0YWJsZS5pbnNlcnQoY2FsbGNoYWluLCBu YW1lX2hvc3QpCj4rIGlmIHN0cmluZy5tYXRjaChuYW1lX2hvc3QsICdebHVhX2NwY2FsbCcpIH49 IG5pbCB0aGVuCj4rIC0tIEFueSBDIGZ1bmN0aW9uIGlzIHByZXNlbnQgb24gYm90aCB0aGUgQyBh bmQgdGhlIEx1YQo+KyAtLSBzdGFja3MuIEl0IGlzIG1vcmUgY29udmVuaWVudCB0byBnZXQgaXRz IGluZm8gZnJvbSB0aGUKPisgLS0gaG9zdCBzdGFjaywgc2luY2UgaXQgaGFzIGluZm9ybWF0aW9u IGFib3V0IGNoaWxkIGZyYW1lcy4KPisgdGFibGUucmVtb3ZlKGV2ZW50Lmx1YS5jYWxsY2hhaW4p Cj4rIGVuZAo+Kwo+KyBpZiBzdHJpbmcubWF0Y2gobmFtZV9ob3N0LCAnXmx1YV9wP2NhbGwnKSB+ PSBuaWwgdGhlbgo+KyBpbnNlcnRfbHVhX2NhbGxjaGFpbihjYWxsY2hhaW4sIGV2ZW50Lmx1YSkK PisgZW5kCj4rCj4rIGVuZAo+KyByZXR1cm4gdGFibGUuY29uY2F0KGNhbGxjaGFpbiwgJzsnKSAu LiAnOycKPitlbmQKPisKPsKgbG9jYWwgZnVuY3Rpb24gcGFyc2VfZXZlbnQocmVhZGVyLCBldmVu dHMsIHN5bWJvbHMpCj7CoMKgwqBsb2NhbCBldmVudCA9IG5ld19ldmVudCgpCj7CoAo+QEAgLTE3 MSw4ICsyMjYsOSBAQCBsb2NhbCBmdW5jdGlvbiBwYXJzZV9ldmVudChyZWFkZXIsIGV2ZW50cywg c3ltYm9scykKPsKgwqDCoGV2ZW50Lmx1YS52bXN0YXRlID0gdm1zdGF0ZQo+wqAKPsKgwqDCoGV2 ZW50X3BhcnNlcnNbdm1zdGF0ZV0ocmVhZGVyLCBldmVudCwgc3ltYm9scykKPi0KPi0gdGFibGUu aW5zZXJ0KGV2ZW50cywgZXZlbnQpCj4rIGxvY2FsIGNhbGxjaGFpbiA9IG1lcmdlKGV2ZW50KQo+ KyBsb2NhbCBjdXJfY250ID0gZXZlbnRzW2NhbGxjaGFpbl0KPisgZXZlbnRzW2NhbGxjaGFpbl0g PSAoY3VyX2NudCBvciAwKSArIDEKPsKgwqDCoHJldHVybiB0cnVlCj7CoGVuZAo+wqAKPkBAIC0y MDMsNCArMjU5LDUgQEAgZnVuY3Rpb24gTS5wYXJzZShyZWFkZXIsIHN5bWJvbHMpCj7CoMKgwqBy ZXR1cm4gZXZlbnRzCj7CoGVuZAo+wqAKPisKPsKgcmV0dXJuIE0KPmRpZmYgLS1naXQgYS90b29s cy91dGlscy9hdmwubHVhIGIvdG9vbHMvdXRpbHMvYXZsLmx1YQo+aW5kZXggZDViYWE1MzQuLjA5 OGY1OGVjIDEwMDY0NAo+LS0tIGEvdG9vbHMvdXRpbHMvYXZsLmx1YQo+KysrIGIvdG9vbHMvdXRp bHMvYXZsLmx1YQo+QEAgLTg2LDcgKzg2LDcgQEAgZnVuY3Rpb24gTS5pbnNlcnQobm9kZSwga2V5 LCB2YWx1ZSkKPsKgwqDCoGVsc2VpZiBrZXkgPiBub2RlLmtleSB0aGVuCj7CoMKgwqDCoMKgbm9k ZS5yaWdodCA9IE0uaW5zZXJ0KG5vZGUucmlnaHQsIGtleSwgdmFsdWUpCj7CoMKgwqBlbHNlCj4t IHRhYmxlLmluc2VydChub2RlLnZhbHVlLCB2YWx1ZSkKPisgbm9kZS52YWx1ZSA9IHZhbHVlCj7C oMKgwqBlbmQKPsKgCj7CoMKgwqB1cGRhdGVfaGVpZ2h0KG5vZGUpCj5kaWZmIC0tZ2l0IGEvdG9v bHMvdXRpbHMvc3ltdGFiLmx1YSBiL3Rvb2xzL3V0aWxzL3N5bXRhYi5sdWEKPmluZGV4IGMyNmE5 ZThjLi43ZjZjNzhmMCAxMDA2NDQKPi0tLSBhL3Rvb2xzL3V0aWxzL3N5bXRhYi5sdWEKPisrKyBi L3Rvb2xzL3V0aWxzL3N5bXRhYi5sdWEKPkBAIC0xNzYsNyArMTc2LDcgQEAgZnVuY3Rpb24gTS5k ZW1hbmdsZShzeW10YWIsIGxvYykKPsKgwqDCoGxvY2FsIGtleSwgdmFsdWUgPSBhdmwuZmxvb3Io c3ltdGFiLmNmdW5jLCBhZGRyKQo+wqAKPsKgwqDCoGlmIGtleSB0aGVuCj4tIHJldHVybiBzdHJp bmdfZm9ybWF0KCIlczolI3giLCB2YWx1ZVtnZW5dLm5hbWUsIGtleSkKPisgcmV0dXJuIHN0cmlu Z19mb3JtYXQoIiVzOiUjeCIsIHZhbHVlLm5hbWUsIGtleSkKPsKgwqDCoGVuZAo+wqAKPsKgwqDC oHJldHVybiBzdHJpbmdfZm9ybWF0KCJDRlVOQyAlI3giLCBhZGRyKQo+LS0KPjIuNDAuMQrCoA== ----ALT--e23588E36D7ceD5140D780661696C1101684960562 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+SGkhPC9kaXY+PGRpdj5Gb3Jnb3QgdG8gaW5jbHVkZSBteSBhbnN3 ZXJzIHRvIHF1ZXN0aW9ucy48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+PGRpdj48ZGl2PiZn dDsgQWxzbywgaXQgZml4ZXMgYSBidWcgaW4gdGhlIEFWTC10cmVlIGltcGxlbWVudGF0aW9uLDwv ZGl2PjxkaXY+Jmd0OyB3aGljaCBwcm9kdWNlZCB1bm5lY2Vzc2FyeSBpbnNlcnRzIG9mIHZhbHVl cyBpbnRvIG5vZGVzLjwvZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj48ZGl2PlE6IFNo b3VsZCBpdCBiZSBhbnkgdGVzdCBmb3IgdGhpcz88L2Rpdj48ZGl2PkFsc28sIG1heSBiZSB0aGlz IHNob3VsZCBiZSBkb25lIGluIHRoZSBzZXBhcmF0ZSBjb21taXQgKG5vdCBwYXRjaD8pLjwvZGl2 PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj48ZGl2PkE6IEl0IGlzIHN1Y2ggYSBzaWxseSBi dWcsIHRoYXQgbm8sIEkgZG9uJ3QgYmVsaWV2ZSBpdCdzIG5lZWRlZC4gSSd2ZSBsaXRlcmxseTwv ZGl2PjxkaXY+Y2hhbmdlZCB0aGUgbGluZSBmcm9tIGB0YWJsZS5pbnNlcnQobm9kZS52YWx1ZSwg dmFsdWUpYCB0bzwvZGl2PjxkaXY+YG5vZGUudmFsdWUgPSB2YWx1ZWAuIEFuZCB3ZSBzdGlsbCBo YXZlIHRlc3RzIGZvciB0aGUgQVZMIHRyZWUgaXRzZWxmLCBzbzwvZGl2PjxkaXY+d2Uga25vdyBm b3Igc3VyZSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJ3QgYnJlYWsgYW55dGhpbmcuPC9kaXY+PC9k aXY+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PjxkaXY+TkI6IENJIGlzIHJlZCBpbiBMdWFKSVQgcmVw byBiZWNhdXNlIHRoaXMgcGF0Y2ggcmVxdWlyZXMgY2hhbmdlcyBpbiB0aGU8L2Rpdj48ZGl2PnRh cmFudG9vbCByZXBvLCBzbyBwbGVhc2UgcmVmZXIgdG8gQ0kgcnVucyBpbiBQUi48L2Rpdj48L2Rp dj48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250 YWluZXIiPjxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250ZW50Ij48ZGl2Pi0tPGJyPkJl c3QgcmVnYXJkcyw8L2Rpdj48ZGl2Pk1heGltIEtva3J5YXNoa2luPC9kaXY+PC9kaXY+PC9kaXY+ PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3Jk ZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBw eDsiPtCh0YDQtdC00LAsIDI0INC80LDRjyAyMDIzLCAyMzozNSArMDM6MDAg0L7RgiBNYXhpbSBL b2tyeWFzaGtpbiAmbHQ7bWF4Lmtva3J5YXNoa2luQGdtYWlsLmNvbSZndDs6PGJyPiZuYnNwOzxk aXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXYg aWQ9InN0eWxlXzE2ODQ5NjA1MTkxMzk3ODIzNzc2X0JPRFkiPlRoaXMgcGF0Y2ggcmVkdWNlcyBz eXNwcm9mJ3MgcGFyc2VyIG1lbW9yeSBmb290cHJpbnQsPGJyPmJ5IGF2b2lkaW5nIHJlYWRpbmcg YWxsIGNhbGxjaGFpbnMgYmVmb3JlIGNvbGxhcHNpbmcgdGhlbS48YnI+SW5zdGVhZCBvZiBpdCwg cGFyc2VyIG1lcmdlcyBzdGFja3MgaW1tZWRpYXRlbHkgYWZ0ZXI8YnI+cmVhZGluZyB0aGVtIGFu ZCBzdG9yZXMgY291bnRzIGluIGEgbHVhIHRhYmxlLjxicj48YnI+QWxzbywgaXQgZml4ZXMgYSBi dWcgaW4gdGhlIEFWTC10cmVlIGltcGxlbWVudGF0aW9uLDxicj53aGljaCBwcm9kdWNlZCB1bm5l Y2Vzc2FyeSBpbnNlcnRzIG9mIHZhbHVlcyBpbnRvIG5vZGVzLjxicj4tLS08YnI+PGJyPkNoYW5n ZXMgaW4gdjI6PGJyPi0gRml4ZWQgY29tbWVudHMgYXMgcGVyIHJldmlldyBieSBTZXJnZXkuPGJy Pjxicj5CcmFuY2g6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvbHVhaml0 L3RyZWUvZmNreG9yZy9naC04NzAwLXN5c3Byb2YtcGFyc2VyLXJlZmFjdG9yaW5nIiB0YXJnZXQ9 Il9ibGFuayI+aHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC9sdWFqaXQvdHJlZS9mY2t4b3Jn L2doLTg3MDAtc3lzcHJvZi1wYXJzZXItcmVmYWN0b3Jpbmc8L2E+PGJyPlBSOiA8YSBocmVmPSJo dHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC9wdWxsLzg3MDMiIHRhcmdldD0i X2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC9wdWxsLzg3MDM8 L2E+PGJyPjxicj4mbmJzcDt0b29scy9DTWFrZUxpc3RzLnR4dCB8IDIgLTxicj4mbmJzcDt0b29s cy9zeXNwcm9mLmx1YSB8IDI3ICstLS0tLS0tPGJyPiZuYnNwO3Rvb2xzL3N5c3Byb2YvY29sbGFw c2UubHVhIHwgMTI0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4mbmJz cDt0b29scy9zeXNwcm9mL3BhcnNlLmx1YSB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tPGJyPiZuYnNwO3Rvb2xzL3V0aWxzL2F2bC5sdWEgfCAyICstPGJyPiZuYnNw O3Rvb2xzL3V0aWxzL3N5bXRhYi5sdWEgfCAyICstPGJyPiZuYnNwOzYgZmlsZXMgY2hhbmdlZCwg OTcgaW5zZXJ0aW9ucygrKSwgMTg3IGRlbGV0aW9ucygtKTxicj4mbmJzcDtkZWxldGUgbW9kZSAx MDA3NTUgdG9vbHMvc3lzcHJvZi9jb2xsYXBzZS5sdWE8YnI+PGJyPmRpZmYgLS1naXQgYS90b29s cy9DTWFrZUxpc3RzLnR4dCBiL3Rvb2xzL0NNYWtlTGlzdHMudHh0PGJyPmluZGV4IGRkN2VjNmJk Li4zYTkxOTQzMyAxMDA2NDQ8YnI+LS0tIGEvdG9vbHMvQ01ha2VMaXN0cy50eHQ8YnI+KysrIGIv dG9vbHMvQ01ha2VMaXN0cy50eHQ8YnI+QEAgLTExMiw3ICsxMTIsNiBAQCBlbHNlKCk8YnI+Jm5i c3A7Jm5ic3A7Jm5ic3A7YWRkX2N1c3RvbV90YXJnZXQodG9vbHMtcGFyc2Utc3lzcHJvZiBFWENM VURFX0ZST01fQUxMIERFUEVORFM8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7bHVh aml0LXBhcnNlLXN5c3Byb2Y8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7c3lzcHJv Zi9wYXJzZS5sdWE8YnI+LSBzeXNwcm9mL2NvbGxhcHNlLmx1YTxicj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtzeXNwcm9mLmx1YTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDt1dGlscy9idWZyZWFkLmx1YTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt1dGls cy9zeW10YWIubHVhPGJyPkBAIC0xMjEsNyArMTIwLDYgQEAgZWxzZSgpPGJyPiZuYnNwOzxicj4m bmJzcDsmbmJzcDsmbmJzcDtpbnN0YWxsKEZJTEVTPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zeXNwcm9mL3Bh cnNlLmx1YTxicj4tICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zeXNwcm9mL2NvbGxhcHNl Lmx1YTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtERVNUSU5BVElPTiAke0xVQUpJ VF9EQVRBUk9PVERJUn0vc3lzcHJvZjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtQ RVJNSVNTSU9OUzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtP V05FUl9SRUFEIE9XTkVSX1dSSVRFPGJyPmRpZmYgLS1naXQgYS90b29scy9zeXNwcm9mLmx1YSBi L3Rvb2xzL3N5c3Byb2YubHVhPGJyPmluZGV4IDFhZmFiMTk1Li5iZTJhMDU2NSAxMDA2NDQ8YnI+ LS0tIGEvdG9vbHMvc3lzcHJvZi5sdWE8YnI+KysrIGIvdG9vbHMvc3lzcHJvZi5sdWE8YnI+QEAg LTEsMTMgKzEsMTAgQEA8YnI+Jm5ic3A7bG9jYWwgYnVmcmVhZCA9IHJlcXVpcmUgInV0aWxzLmJ1 ZnJlYWQiPGJyPiZuYnNwO2xvY2FsIHN5c3Byb2YgPSByZXF1aXJlICJzeXNwcm9mLnBhcnNlIjxi cj4mbmJzcDtsb2NhbCBzeW10YWIgPSByZXF1aXJlICJ1dGlscy5zeW10YWIiPGJyPi1sb2NhbCBt aXNjID0gcmVxdWlyZSAic3lzcHJvZi5jb2xsYXBzZSI8YnI+Jm5ic3A7PGJyPiZuYnNwO2xvY2Fs IHN0ZG91dCwgc3RkZXJyID0gaW8uc3Rkb3V0LCBpby5zdGRlcnI8YnI+Jm5ic3A7bG9jYWwgbWF0 Y2gsIGdtYXRjaCA9IHN0cmluZy5tYXRjaCwgc3RyaW5nLmdtYXRjaDxicj4mbmJzcDs8YnI+LWxv Y2FsIHNwbGl0X2J5X3Ztc3RhdGUgPSBmYWxzZTxicj4tPGJyPiZuYnNwOy0tIFByb2dyYW0gb3B0 aW9ucy48YnI+Jm5ic3A7bG9jYWwgb3B0X21hcCA9IHt9PGJyPiZuYnNwOzxicj5AQCAtMjgsMTAg KzI1LDYgQEAgU3VwcG9ydGVkIG9wdGlvbnMgYXJlOjxicj4mbmJzcDsmbmJzcDsmbmJzcDtvcy5l eGl0KDApPGJyPiZuYnNwO2VuZDxicj4mbmJzcDs8YnI+LWZ1bmN0aW9uIG9wdF9tYXAuc3BsaXQo KTxicj4tIHNwbGl0X2J5X3Ztc3RhdGUgPSB0cnVlPGJyPi1lbmQ8YnI+LTxicj4mbmJzcDstLSBQ cmludCBlcnJvciBhbmQgZXhpdCB3aXRoIGVycm9yIHN0YXR1cy48YnI+Jm5ic3A7bG9jYWwgZnVu Y3Rpb24gb3B0ZXJyb3IoLi4uKTxicj4mbmJzcDsmbmJzcDsmbmJzcDtzdGRlcnI6d3JpdGUoImx1 YWppdC1wYXJzZS1zeXNwcm9mLmx1YTogRVJST1I6ICIsIC4uLik8YnI+QEAgLTg1LDI4ICs3OCwx NCBAQCBsb2NhbCBmdW5jdGlvbiBwYXJzZWFyZ3MoYXJncyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 cmV0dXJuIGFyZ3NbYXJncy5hcmduXTxicj4mbmJzcDtlbmQ8YnI+Jm5ic3A7PGJyPi1sb2NhbCBm dW5jdGlvbiB0cmF2ZXJzZV9jYWxsdHJlZShub2RlLCBwcmVmaXgpPGJyPi0gaWYgbm9kZS5pc19s ZWFmIHRoZW48YnI+LSBwcmludChwcmVmaXguLicgJy4ubm9kZS5jb3VudCk8YnI+LSBlbmQ8YnI+ LTxicj4tIGxvY2FsIHNlcF9wcmVmaXggPSAjcHJlZml4ID09IDAgYW5kIHByZWZpeCBvciBwcmVm aXguLic7Jzxicj4tPGJyPi0gZm9yIG5hbWUsY2hpbGQgaW4gcGFpcnMobm9kZS5jaGlsZHJlbikg ZG88YnI+LSB0cmF2ZXJzZV9jYWxsdHJlZShjaGlsZCwgc2VwX3ByZWZpeC4ubmFtZSk8YnI+LSBl bmQ8YnI+LWVuZDxicj4tPGJyPiZuYnNwO2xvY2FsIGZ1bmN0aW9uIGR1bXAoaW5wdXRmaWxlKTxi cj4mbmJzcDsmbmJzcDsmbmJzcDtsb2NhbCByZWFkZXIgPSBidWZyZWFkLm5ldyhpbnB1dGZpbGUp PGJyPi08YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bG9jYWwgc3ltYm9scyA9IHN5bXRhYi5wYXJzZShy ZWFkZXIpPGJyPi08YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bG9jYWwgZXZlbnRzID0gc3lzcHJvZi5w YXJzZShyZWFkZXIsIHN5bWJvbHMpPGJyPi0gbG9jYWwgY2FsbHRyZWUgPSBtaXNjLmNvbGxhcHNl KGV2ZW50cywgc3ltYm9scywgc3BsaXRfYnlfdm1zdGF0ZSk8YnI+LTxicj4tIHRyYXZlcnNlX2Nh bGx0cmVlKGNhbGx0cmVlLCAnJyk8YnI+Jm5ic3A7PGJyPisgZm9yIHN0YWNrLCBjb3VudCBpbiBw YWlycyhldmVudHMpIGRvPGJyPisgcHJpbnQoc3RhY2ssIGNvdW50KTxicj4rIGVuZDxicj4mbmJz cDsmbmJzcDsmbmJzcDtvcy5leGl0KDApPGJyPiZuYnNwO2VuZDxicj4mbmJzcDs8YnI+ZGlmZiAt LWdpdCBhL3Rvb2xzL3N5c3Byb2YvY29sbGFwc2UubHVhIGIvdG9vbHMvc3lzcHJvZi9jb2xsYXBz ZS5sdWE8YnI+ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1PGJyPmluZGV4IDNkODNkNWVhLi4wMDAw MDAwMDxicj4tLS0gYS90b29scy9zeXNwcm9mL2NvbGxhcHNlLmx1YTxicj4rKysgL2Rldi9udWxs PGJyPkBAIC0xLDEyNCArMCwwIEBAPGJyPi1sb2NhbCBwYXJzZSA9IHJlcXVpcmUgInN5c3Byb2Yu cGFyc2UiPGJyPi1sb2NhbCB2bWRlZiA9IHJlcXVpcmUgImppdC52bWRlZiI8YnI+LWxvY2FsIHN5 bXRhYiA9IHJlcXVpcmUgInV0aWxzLnN5bXRhYiI8YnI+LTxicj4tbG9jYWwgVk1TVF9OQU1FUyA9 IHs8YnI+LSBbcGFyc2UuVk1TVC5JTlRFUlBdID0gIlZNU1RfSU5URVJQIiw8YnI+LSBbcGFyc2Uu Vk1TVC5MRlVOQ10gPSAiVk1TVF9MRlVOQyIsPGJyPi0gW3BhcnNlLlZNU1QuRkZVTkNdID0gIlZN U1RfRkZVTkMiLDxicj4tIFtwYXJzZS5WTVNULkNGVU5DXSA9ICJWTVNUX0NGVU5DIiw8YnI+LSBb cGFyc2UuVk1TVC5HQ10gPSAiVk1TVF9HQyIsPGJyPi0gW3BhcnNlLlZNU1QuRVhJVF0gPSAiVk1T VF9FWElUIiw8YnI+LSBbcGFyc2UuVk1TVC5SRUNPUkRdID0gIlZNU1RfUkVDT1JEIiw8YnI+LSBb cGFyc2UuVk1TVC5PUFRdID0gIlZNU1RfT1BUIiw8YnI+LSBbcGFyc2UuVk1TVC5BU01dID0gIlZN U1RfQVNNIiw8YnI+LSBbcGFyc2UuVk1TVC5UUkFDRV0gPSAiVk1TVF9UUkFDRSIsPGJyPi19PGJy Pi08YnI+LWxvY2FsIE0gPSB7fTxicj4tPGJyPi1sb2NhbCBmdW5jdGlvbiBuZXdfbm9kZShuYW1l LCBpc19sZWFmKTxicj4tIHJldHVybiB7PGJyPi0gbmFtZSA9IG5hbWUsPGJyPi0gY291bnQgPSAw LDxicj4tIGlzX2xlYWYgPSBpc19sZWFmLDxicj4tIGNoaWxkcmVuID0ge308YnI+LSB9PGJyPi1l bmQ8YnI+LTxicj4tLS0gaW5zZXJ0IG5ldyBjaGlsZCBpbnRvIGEgbm9kZSAob3IgaW5jcmVhc2Ug Y291bnRlciBpbiBleGlzdGluZyBvbmUpPGJyPi1sb2NhbCBmdW5jdGlvbiBpbnNlcnQobmFtZSwg bm9kZSwgaXNfbGVhZik8YnI+LSBpZiBub2RlLmNoaWxkcmVuW25hbWVdID09IG5pbCB0aGVuPGJy Pi0gbm9kZS5jaGlsZHJlbltuYW1lXSA9IG5ld19ub2RlKG5hbWUsIGlzX2xlYWYpPGJyPi0gZW5k PGJyPi08YnI+LSBsb2NhbCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5bbmFtZV08YnI+LSBjaGlsZC5j b3VudCA9IGNoaWxkLmNvdW50ICsgMTxicj4tPGJyPi0gcmV0dXJuIGNoaWxkPGJyPi1lbmQ8YnI+ LTxicj4tbG9jYWwgZnVuY3Rpb24gaW5zZXJ0X2x1YV9jYWxsY2hhaW4oY2hhaW4sIGx1YSwgc3lt Ym9scyk8YnI+LSBsb2NhbCBpbnNfY250ID0gMDxicj4tIGZvciBfLGZyIGluIHBhaXJzKGx1YS5j YWxsY2hhaW4pIGRvPGJyPi0gbG9jYWwgbmFtZV9sdWE8YnI+LTxicj4tIGluc19jbnQgPSBpbnNf Y250ICsgMTxicj4tIGlmIGZyLnR5cGUgPT0gcGFyc2UuRlJBTUUuRkZVTkMgdGhlbjxicj4tIG5h bWVfbHVhID0gdm1kZWYuZmZuYW1lc1tmci5mZmlkXTxicj4tIGVsc2U8YnI+LSBuYW1lX2x1YSA9 IHN5bXRhYi5kZW1hbmdsZShzeW1ib2xzLCB7PGJyPi0gYWRkciA9IGZyLmFkZHIsPGJyPi0gbGlu ZSA9IGZyLmxpbmUsPGJyPi0gZ2VuID0gZnIuZ2VuPGJyPi0gfSk8YnI+LSBpZiBsdWEudHJhY2Uu dHJhY2VubyB+PSBuaWwgYW5kIGx1YS50cmFjZS5hZGRyID09IGZyLmFkZHIgYW5kPGJyPi0gbHVh LnRyYWNlLmxpbmUgPT0gZnIubGluZSB0aGVuPGJyPi0gbmFtZV9sdWEgPSBzeW10YWIuZGVtYW5n bGUoc3ltYm9scywgezxicj4tIGFkZHIgPSBmci5hZGRyLDxicj4tIHRyYWNlbm8gPSBsdWEudHJh Y2UudHJhY2Vubyw8YnI+LSBnZW4gPSBmci5nZW48YnI+LSB9KTxicj4tIGVuZDxicj4tPGJyPi0g aWYgZnIudHlwZSA9PSBwYXJzZS5GUkFNRS5DRlVOQyB0aGVuPGJyPi0gLS0gQyBmdW5jdGlvbiBl bmNvdW50ZXJlZCwgdGhlIG5leHQgY2h1bms8YnI+LSAtLSBvZiBmcmFtZXMgaXMgbG9jYXRlZCBv biB0aGUgQyBzdGFjay48YnI+LSBicmVhazxicj4tIGVuZDxicj4tIGVuZDxicj4tPGJyPi0gdGFi bGUuaW5zZXJ0KGNoYWluLCAxLCB7IG5hbWUgPSBuYW1lX2x1YSB9KTxicj4tIGVuZDxicj4tIHRh YmxlLnJlbW92ZShsdWEuY2FsbGNoYWluLCBpbnNfY250KTxicj4tZW5kPGJyPi08YnI+LS0tIG1l cmdlIGx1YSBhbmQgaG9zdCBjYWxsY2hhaW5zIGludG8gb25lIGNhbGxjaGFpbiByZXByZXNlbnRp bmc8YnI+LS0tIHRyYW5zZmVyIG9mIGNvbnRyb2w8YnI+LWxvY2FsIGZ1bmN0aW9uIG1lcmdlKGV2 ZW50LCBzeW1ib2xzLCBzZXBfdm1zdCk8YnI+LSBsb2NhbCBjYyA9IHt9PGJyPi08YnI+LSBmb3Ig XyxoX2ZyIGluIHBhaXJzKGV2ZW50Lmhvc3QuY2FsbGNoYWluKSBkbzxicj4tIGxvY2FsIG5hbWVf aG9zdCA9IHN5bXRhYi5kZW1hbmdsZShzeW1ib2xzLCB7PGJyPi0gYWRkciA9IGhfZnIuYWRkciw8 YnI+LSBnZW4gPSBoX2ZyLmdlbjxicj4tIH0pPGJyPi0gdGFibGUuaW5zZXJ0KGNjLCAxLCB7IG5h bWUgPSBuYW1lX2hvc3QgfSk8YnI+LTxicj4tIGlmIHN0cmluZy5tYXRjaChuYW1lX2hvc3QsICde bHVhX2NwY2FsbCcpIH49IG5pbCB0aGVuPGJyPi0gLS0gQW55IEMgZnVuY3Rpb24gaXMgcHJlc2Vu dCBvbiBib3RoIHRoZSBDIGFuZCB0aGUgTHVhPGJyPi0gLS0gc3RhY2tzLiBJdCBpcyBtb3JlIGNv bnZlbmllbnQgdG8gZ2V0IGl0cyBpbmZvIGZyb20gdGhlPGJyPi0gLS0gaG9zdCBzdGFjaywgc2lu Y2UgaXQgaGFzIGluZm9ybWF0aW9uIGFib3V0IGNoaWxkIGZyYW1lcy48YnI+LSB0YWJsZS5yZW1v dmUoZXZlbnQubHVhLmNhbGxjaGFpbiwgMSk8YnI+LSBlbmQ8YnI+LTxicj4tIGlmIHN0cmluZy5t YXRjaChuYW1lX2hvc3QsICdebHVhX3A/Y2FsbCcpIH49IG5pbCB0aGVuPGJyPi0gaW5zZXJ0X2x1 YV9jYWxsY2hhaW4oY2MsIGV2ZW50Lmx1YSwgc3ltYm9scyk8YnI+LSBlbmQ8YnI+LTxicj4tIGVu ZDxicj4tPGJyPi0gaWYgc2VwX3Ztc3QgPT0gdHJ1ZSB0aGVuPGJyPi0gdGFibGUuaW5zZXJ0KGNj LCB7IG5hbWUgPSBWTVNUX05BTUVTW2V2ZW50Lmx1YS52bXN0YXRlXSB9KTxicj4tIGVuZDxicj4t PGJyPi0gcmV0dXJuIGNjPGJyPi1lbmQ8YnI+LTxicj4tLS0gQ29sbGFwc2UgYWxsIHRoZSBldmVu dHMgaW50byBjYWxsIHRyZWU8YnI+LWZ1bmN0aW9uIE0uY29sbGFwc2UoZXZlbnRzLCBzeW1ib2xz LCBzZXBfdm1zdCk8YnI+LSBsb2NhbCByb290ID0gbmV3X25vZGUoJ3Jvb3QnLCBmYWxzZSk8YnI+ LTxicj4tIGZvciBfLGV2IGluIHBhaXJzKGV2ZW50cykgZG88YnI+LSBsb2NhbCBjYWxsY2hhaW4g PSBtZXJnZShldiwgc3ltYm9scywgc2VwX3Ztc3QpPGJyPi0gbG9jYWwgY3Vycl9ub2RlID0gcm9v dDxicj4tIGZvciBpPSNjYWxsY2hhaW4sMSwtMSBkbzxicj4tIGN1cnJfbm9kZSA9IGluc2VydChj YWxsY2hhaW5baV0ubmFtZSwgY3Vycl9ub2RlLCBmYWxzZSk8YnI+LSBlbmQ8YnI+LSBpbnNlcnQo JycsIGN1cnJfbm9kZSwgdHJ1ZSk8YnI+LSBlbmQ8YnI+LTxicj4tIHJldHVybiByb290PGJyPi1l bmQ8YnI+LTxicj4tcmV0dXJuIE08YnI+ZGlmZiAtLWdpdCBhL3Rvb2xzL3N5c3Byb2YvcGFyc2Uu bHVhIGIvdG9vbHMvc3lzcHJvZi9wYXJzZS5sdWE8YnI+aW5kZXggNWI1MmYxMDQuLjgwNjI5N2Vi IDEwMDc1NTxicj4tLS0gYS90b29scy9zeXNwcm9mL3BhcnNlLmx1YTxicj4rKysgYi90b29scy9z eXNwcm9mL3BhcnNlLmx1YTxicj5AQCAtMiw2ICsyLDcgQEA8YnI+Jm5ic3A7LS0gVGhlIGZvcm1h dCBzcGVjIGNhbiBiZSBmb3VuZCBpbiAmbHQ7c3JjL2xqX3N5c3Byb2YuaCZndDsuPGJyPiZuYnNw Ozxicj4mbmJzcDtsb2NhbCBzeW10YWIgPSByZXF1aXJlICJ1dGlscy5zeW10YWIiPGJyPitsb2Nh bCB2bWRlZiA9IHJlcXVpcmUgImppdC52bWRlZiI8YnI+Jm5ic3A7PGJyPiZuYnNwO2xvY2FsIHN0 cmluZ19mb3JtYXQgPSBzdHJpbmcuZm9ybWF0PGJyPiZuYnNwOzxicj5AQCAtMTAsNyArMTEsNyBA QCBsb2NhbCBMSlBfQ1VSUkVOVF9WRVJTSU9OID0gMjxicj4mbmJzcDs8YnI+Jm5ic3A7bG9jYWwg TSA9IHt9PGJyPiZuYnNwOzxicj4tTS5WTVNUID0gezxicj4rbG9jYWwgVk1TVCA9IHs8YnI+Jm5i c3A7Jm5ic3A7Jm5ic3A7SU5URVJQID0gMCw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7TEZVTkMgPSAx LDxicj4mbmJzcDsmbmJzcDsmbmJzcDtGRlVOQyA9IDIsPGJyPkBAIC0yNSwxMyArMjYsMTQgQEAg TS5WTVNUID0gezxicj4mbmJzcDt9PGJyPiZuYnNwOzxicj4mbmJzcDs8YnI+LU0uRlJBTUUgPSB7 PGJyPitsb2NhbCBGUkFNRSA9IHs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7TEZVTkMgPSAxLDxicj4m bmJzcDsmbmJzcDsmbmJzcDtDRlVOQyA9IDIsPGJyPiZuYnNwOyZuYnNwOyZuYnNwO0ZGVU5DID0g Myw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Qk9UVE9NID0gMHg4MDxicj4mbmJzcDt9PGJyPiZuYnNw Ozxicj4rPGJyPiZuYnNwO2xvY2FsIFNUUkVBTV9FTkQgPSAweDgwPGJyPiZuYnNwO2xvY2FsIFNZ TVRBQl9MRlVOQ19FVkVOVCA9IDEwPGJyPiZuYnNwO2xvY2FsIFNZTVRBQl9DRlVOQ19FVkVOVCA9 IDExPGJyPkBAIC01NCw0MiArNTYsNDAgQEAgbG9jYWwgZnVuY3Rpb24gbmV3X2V2ZW50KCk8YnI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7fTxicj4mbmJzcDtlbmQ8YnI+Jm5ic3A7PGJyPi1sb2NhbCBmdW5j dGlvbiBwYXJzZV9sZnVuYyhyZWFkZXIsIGV2ZW50LCBzeW1ib2xzKTxicj4rbG9jYWwgZnVuY3Rp b24gcGFyc2VfbGZ1bmMocmVhZGVyLCBzeW1ib2xzKTxicj4mbmJzcDsmbmJzcDsmbmJzcDtsb2Nh bCBhZGRyID0gcmVhZGVyOnJlYWRfdWxlYjEyOCgpPGJyPiZuYnNwOyZuYnNwOyZuYnNwO2xvY2Fs IGxpbmUgPSByZWFkZXI6cmVhZF91bGViMTI4KCk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bG9jYWwg bG9jID0gc3ltdGFiLmxvYyhzeW1ib2xzLCB7IGFkZHIgPSBhZGRyLCBsaW5lID0gbGluZSB9KTxi cj4tIGxvYy50eXBlID0gTS5GUkFNRS5MRlVOQzxicj4tIHRhYmxlLmluc2VydChldmVudC5sdWEu Y2FsbGNoYWluLCAxLCBsb2MpPGJyPisgbG9jLnR5cGUgPSBGUkFNRS5MRlVOQzxicj4rIHJldHVy biBzeW10YWIuZGVtYW5nbGUoc3ltYm9scywgbG9jKTxicj4mbmJzcDtlbmQ8YnI+Jm5ic3A7PGJy Pi1sb2NhbCBmdW5jdGlvbiBwYXJzZV9mZnVuYyhyZWFkZXIsIGV2ZW50LCBfKTxicj4rbG9jYWwg ZnVuY3Rpb24gcGFyc2VfZmZ1bmMocmVhZGVyLCBfKTxicj4mbmJzcDsmbmJzcDsmbmJzcDtsb2Nh bCBmZmlkID0gcmVhZGVyOnJlYWRfdWxlYjEyOCgpPGJyPi0gdGFibGUuaW5zZXJ0KGV2ZW50Lmx1 YS5jYWxsY2hhaW4sIDEsIHs8YnI+LSB0eXBlID0gTS5GUkFNRS5GRlVOQyw8YnI+LSBmZmlkID0g ZmZpZCw8YnI+LSB9KTxicj4rIHJldHVybiB2bWRlZi5mZm5hbWVzW2ZmaWRdPGJyPiZuYnNwO2Vu ZDxicj4mbmJzcDs8YnI+LWxvY2FsIGZ1bmN0aW9uIHBhcnNlX2NmdW5jKHJlYWRlciwgZXZlbnQs IHN5bWJvbHMpPGJyPitsb2NhbCBmdW5jdGlvbiBwYXJzZV9jZnVuYyhyZWFkZXIsIHN5bWJvbHMp PGJyPiZuYnNwOyZuYnNwOyZuYnNwO2xvY2FsIGFkZHIgPSByZWFkZXI6cmVhZF91bGViMTI4KCk8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bG9jYWwgbG9jID0gc3ltdGFiLmxvYyhzeW1ib2xzLCB7IGFk ZHIgPSBhZGRyIH0pPGJyPi0gbG9jLnR5cGUgPSBNLkZSQU1FLkNGVU5DPGJyPi0gdGFibGUuaW5z ZXJ0KGV2ZW50Lmx1YS5jYWxsY2hhaW4sIDEsIGxvYyk8YnI+KyBsb2MudHlwZSA9IEZSQU1FLkNG VU5DPGJyPisgcmV0dXJuIHN5bXRhYi5kZW1hbmdsZShzeW1ib2xzLCBsb2MpPGJyPiZuYnNwO2Vu ZDxicj4mbmJzcDs8YnI+Jm5ic3A7bG9jYWwgZnJhbWVfcGFyc2VycyA9IHs8YnI+LSBbTS5GUkFN RS5MRlVOQ10gPSBwYXJzZV9sZnVuYyw8YnI+LSBbTS5GUkFNRS5GRlVOQ10gPSBwYXJzZV9mZnVu Yyw8YnI+LSBbTS5GUkFNRS5DRlVOQ10gPSBwYXJzZV9jZnVuYzxicj4rIFtGUkFNRS5MRlVOQ10g PSBwYXJzZV9sZnVuYyw8YnI+KyBbRlJBTUUuRkZVTkNdID0gcGFyc2VfZmZ1bmMsPGJyPisgW0ZS QU1FLkNGVU5DXSA9IHBhcnNlX2NmdW5jPGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPiZuYnNwO2xv Y2FsIGZ1bmN0aW9uIHBhcnNlX2x1YV9jYWxsY2hhaW4ocmVhZGVyLCBldmVudCwgc3ltYm9scyk8 YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7d2hpbGUgdHJ1ZSBkbzxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtsb2NhbCBmcmFtZV9oZWFkZXIgPSByZWFkZXI6cmVhZF9vY3RldCgpPGJyPi0g aWYgZnJhbWVfaGVhZGVyID09IE0uRlJBTUUuQk9UVE9NIHRoZW48YnI+KyBpZiBmcmFtZV9oZWFk ZXIgPT0gRlJBTUUuQk9UVE9NIHRoZW48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7YnJlYWs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ZW5kPGJy Pi0gZnJhbWVfcGFyc2Vyc1tmcmFtZV9oZWFkZXJdKHJlYWRlciwgZXZlbnQsIHN5bWJvbHMpPGJy PisgbG9jYWwgbmFtZSA9IGZyYW1lX3BhcnNlcnNbZnJhbWVfaGVhZGVyXShyZWFkZXIsIHN5bWJv bHMpPGJyPisgdGFibGUuaW5zZXJ0KGV2ZW50Lmx1YS5jYWxsY2hhaW4sIDEsIHtuYW1lID0gbmFt ZSwgdHlwZSA9IGZyYW1lX2hlYWRlcn0pPGJyPiZuYnNwOyZuYnNwOyZuYnNwO2VuZDxicj4mbmJz cDtlbmQ8YnI+Jm5ic3A7PGJyPkBAIC0xMDAsNyArMTAwLDcgQEAgbG9jYWwgZnVuY3Rpb24gcGFy c2VfaG9zdF9jYWxsY2hhaW4ocmVhZGVyLCBldmVudCwgc3ltYm9scyk8YnI+Jm5ic3A7PGJyPiZu YnNwOyZuYnNwOyZuYnNwO3doaWxlIGFkZHIgfj0gMCBkbzxicj4mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtsb2NhbCBsb2MgPSBzeW10YWIubG9jKHN5bWJvbHMsIHsgYWRkciA9IGFkZHIg fSk8YnI+LSB0YWJsZS5pbnNlcnQoZXZlbnQuaG9zdC5jYWxsY2hhaW4sIDEsIGxvYyk8YnI+KyB0 YWJsZS5pbnNlcnQoZXZlbnQuaG9zdC5jYWxsY2hhaW4sIDEsIHN5bXRhYi5kZW1hbmdsZShzeW1i b2xzLCBsb2MpKTxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDthZGRyID0gcmVhZGVy OnJlYWRfdWxlYjEyOCgpPGJyPiZuYnNwOyZuYnNwOyZuYnNwO2VuZDxicj4mbmJzcDtlbmQ8YnI+ QEAgLTEwOCwxMCArMTA4LDIwIEBAIGVuZDxicj4mbmJzcDstLX5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4tLTxi cj4mbmJzcDs8YnI+Jm5ic3A7bG9jYWwgZnVuY3Rpb24gcGFyc2VfdHJhY2VfY2FsbGNoYWluKHJl YWRlciwgZXZlbnQsIHN5bWJvbHMpPGJyPi0gZXZlbnQubHVhLnRyYWNlLnRyYWNlbm8gPSByZWFk ZXI6cmVhZF91bGViMTI4KCk8YnI+LSBldmVudC5sdWEudHJhY2UuYWRkciA9IHJlYWRlcjpyZWFk X3VsZWIxMjgoKTxicj4tIGV2ZW50Lmx1YS50cmFjZS5saW5lID0gcmVhZGVyOnJlYWRfdWxlYjEy OCgpPGJyPi0gZXZlbnQubHVhLnRyYWNlLmdlbiA9IHN5bXRhYi5sb2Moc3ltYm9scywgZXZlbnQu bHVhLnRyYWNlKS5nZW48YnI+KyBsb2NhbCBsb2MgPSB7fTxicj4rIGxvYy50cmFjZW5vID0gcmVh ZGVyOnJlYWRfdWxlYjEyOCgpPGJyPisgbG9jLmFkZHIgPSByZWFkZXI6cmVhZF91bGViMTI4KCk8 YnI+KyBsb2MubGluZSA9IHJlYWRlcjpyZWFkX3VsZWIxMjgoKTxicj4rPGJyPisgbG9jYWwgZ2Vu ID0gc3ltdGFiLmxvYyhzeW1ib2xzLCBsb2MpLmdlbjxicj4rIGxvY2FsIG5hbWVfbHVhID0gc3lt dGFiLmRlbWFuZ2xlKHN5bWJvbHMsIHs8YnI+KyBhZGRyID0gbG9jLmFkZHIsPGJyPisgdHJhY2Vu byA9IGxvYy50cmFjZW5vLDxicj4rIGdlbiA9IGdlbjxicj4rIH0pPGJyPisgZXZlbnQubHVhLnRy YWNlID0gbG9jPGJyPisgZXZlbnQubHVhLnRyYWNlLmdlbiA9IGdlbjxicj4rIGV2ZW50Lmx1YS50 cmFjZS5uYW1lID0gbmFtZV9sdWE8YnI+Jm5ic3A7ZW5kPGJyPiZuYnNwOzxicj4mbmJzcDstLX5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4tLTxicj5AQCAtMTQzLDE4ICsxNTMsNjMgQEAgbG9jYWwgZnVuY3Rpb24g cGFyc2Vfc3ltdGFiKHJlYWRlciwgc3ltYm9scywgdm1zdGF0ZSk8YnI+Jm5ic3A7ZW5kPGJyPiZu YnNwOzxicj4mbmJzcDtsb2NhbCBldmVudF9wYXJzZXJzID0gezxicj4tIFtNLlZNU1QuSU5URVJQ XSA9IHBhcnNlX2hvc3Rfb25seSw8YnI+LSBbTS5WTVNULkxGVU5DXSA9IHBhcnNlX2x1YV9ob3N0 LDxicj4tIFtNLlZNU1QuRkZVTkNdID0gcGFyc2VfbHVhX2hvc3QsPGJyPi0gW00uVk1TVC5DRlVO Q10gPSBwYXJzZV9sdWFfaG9zdCw8YnI+LSBbTS5WTVNULkdDXSA9IHBhcnNlX2hvc3Rfb25seSw8 YnI+LSBbTS5WTVNULkVYSVRdID0gcGFyc2VfaG9zdF9vbmx5LDxicj4tIFtNLlZNU1QuUkVDT1JE XSA9IHBhcnNlX2hvc3Rfb25seSw8YnI+LSBbTS5WTVNULk9QVF0gPSBwYXJzZV9ob3N0X29ubHks PGJyPi0gW00uVk1TVC5BU01dID0gcGFyc2VfaG9zdF9vbmx5LDxicj4tIFtNLlZNU1QuVFJBQ0Vd ID0gcGFyc2VfdHJhY2UsPGJyPisgW1ZNU1QuSU5URVJQXSA9IHBhcnNlX2hvc3Rfb25seSw8YnI+ KyBbVk1TVC5MRlVOQ10gPSBwYXJzZV9sdWFfaG9zdCw8YnI+KyBbVk1TVC5GRlVOQ10gPSBwYXJz ZV9sdWFfaG9zdCw8YnI+KyBbVk1TVC5DRlVOQ10gPSBwYXJzZV9sdWFfaG9zdCw8YnI+KyBbVk1T VC5HQ10gPSBwYXJzZV9ob3N0X29ubHksPGJyPisgW1ZNU1QuRVhJVF0gPSBwYXJzZV9ob3N0X29u bHksPGJyPisgW1ZNU1QuUkVDT1JEXSA9IHBhcnNlX2hvc3Rfb25seSw8YnI+KyBbVk1TVC5PUFRd ID0gcGFyc2VfaG9zdF9vbmx5LDxicj4rIFtWTVNULkFTTV0gPSBwYXJzZV9ob3N0X29ubHksPGJy PisgW1ZNU1QuVFJBQ0VdID0gcGFyc2VfdHJhY2UsPGJyPiZuYnNwO308YnI+Jm5ic3A7PGJyPits b2NhbCBmdW5jdGlvbiBpbnNlcnRfbHVhX2NhbGxjaGFpbihjaGFpbiwgbHVhKTxicj4rIGxvY2Fs IGluc19jbnQgPSAwPGJyPisgbG9jYWwgbmFtZV9sdWE8YnI+KyBmb3IgXywgZnIgaW4gaXBhaXJz KGx1YS5jYWxsY2hhaW4pIGRvPGJyPisgaW5zX2NudCA9IGluc19jbnQgKyAxPGJyPisgaWYgZnIu dHlwZSA9PSBGUkFNRS5DRlVOQyB0aGVuPGJyPisgLS0gQyBmdW5jdGlvbiBlbmNvdW50ZXJlZCwg dGhlIG5leHQgY2h1bms8YnI+KyAtLSBvZiBmcmFtZXMgaXMgbG9jYXRlZCBvbiB0aGUgQyBzdGFj ay48YnI+KyBicmVhazxicj4rIGVuZDxicj4rIG5hbWVfbHVhID0gZnIubmFtZTxicj4rPGJyPisg aWYgZnIudHlwZSA9PSBGUkFNRS5MRlVOQzxicj4rIGFuZCBsdWEudHJhY2UudHJhY2VubyB+PSBu aWw8YnI+KyBhbmQgbHVhLnRyYWNlLmFkZHIgPT0gZnIuYWRkcjxicj4rIGFuZCBsdWEudHJhY2Uu bGluZSA9PSBmci5saW5lPGJyPisgdGhlbjxicj4rIG5hbWVfbHVhID0gbHVhLnRyYWNlLm5hbWU8 YnI+KyBlbmQ8YnI+Kzxicj4rIHRhYmxlLmluc2VydChjaGFpbiwgbmFtZV9sdWEpPGJyPisgZW5k PGJyPisgdGFibGUucmVtb3ZlKGx1YS5jYWxsY2hhaW4sIGluc19jbnQpPGJyPitlbmQ8YnI+Kzxi cj4rbG9jYWwgZnVuY3Rpb24gbWVyZ2UoZXZlbnQpPGJyPisgbG9jYWwgY2FsbGNoYWluID0ge308 YnI+Kzxicj4rIGZvciBfLCBuYW1lX2hvc3QgaW4gaXBhaXJzKGV2ZW50Lmhvc3QuY2FsbGNoYWlu KSBkbzxicj4rIHRhYmxlLmluc2VydChjYWxsY2hhaW4sIG5hbWVfaG9zdCk8YnI+KyBpZiBzdHJp bmcubWF0Y2gobmFtZV9ob3N0LCAnXmx1YV9jcGNhbGwnKSB+PSBuaWwgdGhlbjxicj4rIC0tIEFu eSBDIGZ1bmN0aW9uIGlzIHByZXNlbnQgb24gYm90aCB0aGUgQyBhbmQgdGhlIEx1YTxicj4rIC0t IHN0YWNrcy4gSXQgaXMgbW9yZSBjb252ZW5pZW50IHRvIGdldCBpdHMgaW5mbyBmcm9tIHRoZTxi cj4rIC0tIGhvc3Qgc3RhY2ssIHNpbmNlIGl0IGhhcyBpbmZvcm1hdGlvbiBhYm91dCBjaGlsZCBm cmFtZXMuPGJyPisgdGFibGUucmVtb3ZlKGV2ZW50Lmx1YS5jYWxsY2hhaW4pPGJyPisgZW5kPGJy Pis8YnI+KyBpZiBzdHJpbmcubWF0Y2gobmFtZV9ob3N0LCAnXmx1YV9wP2NhbGwnKSB+PSBuaWwg dGhlbjxicj4rIGluc2VydF9sdWFfY2FsbGNoYWluKGNhbGxjaGFpbiwgZXZlbnQubHVhKTxicj4r IGVuZDxicj4rPGJyPisgZW5kPGJyPisgcmV0dXJuIHRhYmxlLmNvbmNhdChjYWxsY2hhaW4sICc7 JykgLi4gJzsnPGJyPitlbmQ8YnI+Kzxicj4mbmJzcDtsb2NhbCBmdW5jdGlvbiBwYXJzZV9ldmVu dChyZWFkZXIsIGV2ZW50cywgc3ltYm9scyk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7bG9jYWwgZXZl bnQgPSBuZXdfZXZlbnQoKTxicj4mbmJzcDs8YnI+QEAgLTE3MSw4ICsyMjYsOSBAQCBsb2NhbCBm dW5jdGlvbiBwYXJzZV9ldmVudChyZWFkZXIsIGV2ZW50cywgc3ltYm9scyk8YnI+Jm5ic3A7Jm5i c3A7Jm5ic3A7ZXZlbnQubHVhLnZtc3RhdGUgPSB2bXN0YXRlPGJyPiZuYnNwOzxicj4mbmJzcDsm bmJzcDsmbmJzcDtldmVudF9wYXJzZXJzW3Ztc3RhdGVdKHJlYWRlciwgZXZlbnQsIHN5bWJvbHMp PGJyPi08YnI+LSB0YWJsZS5pbnNlcnQoZXZlbnRzLCBldmVudCk8YnI+KyBsb2NhbCBjYWxsY2hh aW4gPSBtZXJnZShldmVudCk8YnI+KyBsb2NhbCBjdXJfY250ID0gZXZlbnRzW2NhbGxjaGFpbl08 YnI+KyBldmVudHNbY2FsbGNoYWluXSA9IChjdXJfY250IG9yIDApICsgMTxicj4mbmJzcDsmbmJz cDsmbmJzcDtyZXR1cm4gdHJ1ZTxicj4mbmJzcDtlbmQ8YnI+Jm5ic3A7PGJyPkBAIC0yMDMsNCAr MjU5LDUgQEAgZnVuY3Rpb24gTS5wYXJzZShyZWFkZXIsIHN5bWJvbHMpPGJyPiZuYnNwOyZuYnNw OyZuYnNwO3JldHVybiBldmVudHM8YnI+Jm5ic3A7ZW5kPGJyPiZuYnNwOzxicj4rPGJyPiZuYnNw O3JldHVybiBNPGJyPmRpZmYgLS1naXQgYS90b29scy91dGlscy9hdmwubHVhIGIvdG9vbHMvdXRp bHMvYXZsLmx1YTxicj5pbmRleCBkNWJhYTUzNC4uMDk4ZjU4ZWMgMTAwNjQ0PGJyPi0tLSBhL3Rv b2xzL3V0aWxzL2F2bC5sdWE8YnI+KysrIGIvdG9vbHMvdXRpbHMvYXZsLmx1YTxicj5AQCAtODYs NyArODYsNyBAQCBmdW5jdGlvbiBNLmluc2VydChub2RlLCBrZXksIHZhbHVlKTxicj4mbmJzcDsm bmJzcDsmbmJzcDtlbHNlaWYga2V5ICZndDsgbm9kZS5rZXkgdGhlbjxicj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtub2RlLnJpZ2h0ID0gTS5pbnNlcnQobm9kZS5yaWdodCwga2V5LCB2 YWx1ZSk8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ZWxzZTxicj4tIHRhYmxlLmluc2VydChub2RlLnZh bHVlLCB2YWx1ZSk8YnI+KyBub2RlLnZhbHVlID0gdmFsdWU8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7 ZW5kPGJyPiZuYnNwOzxicj4mbmJzcDsmbmJzcDsmbmJzcDt1cGRhdGVfaGVpZ2h0KG5vZGUpPGJy PmRpZmYgLS1naXQgYS90b29scy91dGlscy9zeW10YWIubHVhIGIvdG9vbHMvdXRpbHMvc3ltdGFi Lmx1YTxicj5pbmRleCBjMjZhOWU4Yy4uN2Y2Yzc4ZjAgMTAwNjQ0PGJyPi0tLSBhL3Rvb2xzL3V0 aWxzL3N5bXRhYi5sdWE8YnI+KysrIGIvdG9vbHMvdXRpbHMvc3ltdGFiLmx1YTxicj5AQCAtMTc2 LDcgKzE3Niw3IEBAIGZ1bmN0aW9uIE0uZGVtYW5nbGUoc3ltdGFiLCBsb2MpPGJyPiZuYnNwOyZu YnNwOyZuYnNwO2xvY2FsIGtleSwgdmFsdWUgPSBhdmwuZmxvb3Ioc3ltdGFiLmNmdW5jLCBhZGRy KTxicj4mbmJzcDs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7aWYga2V5IHRoZW48YnI+LSByZXR1cm4g c3RyaW5nX2Zvcm1hdCgiJXM6JSN4IiwgdmFsdWVbZ2VuXS5uYW1lLCBrZXkpPGJyPisgcmV0dXJu IHN0cmluZ19mb3JtYXQoIiVzOiUjeCIsIHZhbHVlLm5hbWUsIGtleSk8YnI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ZW5kPGJyPiZuYnNwOzxicj4mbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gc3RyaW5nX2Zv cm1hdCgiQ0ZVTkMgJSN4IiwgYWRkcik8YnI+LS08YnI+Mi40MC4xPC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+Jm5ic3A7PC9kaXY+PC9CT0RZPjwvSFRNTD4K ----ALT--e23588E36D7ceD5140D780661696C1101684960562--