Identity Of The Religions Called Druidical...

Book Details

Author  Anonymous
Publisher  Nabu Press
Publication Date   November 12, 2011
ISBN  1271707098
Pages  146

Buy this book

Description

This is a reproduction of a book published before 1923. This book may have occasional imperfections
such as missing or blurred pages, poor pictures, errant marks, etc. that were either part of the original artifact,
or were introduced by the scanning process. We believe this work is culturally important, and despite the imperfections,
have elected to bring it back into print as part of our continuing commitment to the preservation of printed works
worldwide. We appreciate your understanding of the imperfections in the preservation process, and hope you enjoy this valuable book.



++++

The below data was compiled from various identification fields in the bibliographic record of this title. This data is provided as an additional tool in helping to ensure edition identification:

++++


Identity Of The Religions Called Druidical And Hebrew: Demonstrated From The Nature And Objects Of Their Worship, And, From A Careful Consideration Of Certain Customs, Formerly Prevalent In Egypt, Canaan, Carthage, Babylon, Persia, Arabia, America, India, Greece, Italy; And, Among The Etruscans ...<br/><br/><publisher> Printed for J. Nimmo, 1829<br/><br/><subjects> Religion; Judaism; General; Celts; Cults; Druids and Druidism; Druids and druidism; Judaism; Religion / Judaism / General</p> <h2>Customer Reviews</h2> <iframe src="https://www.amazon.com/reviews/iframe?akid=AKIAJGUO3QW43LGEZPIA&alinkCode=xm2&asin=1271707098&atag=anciehistoenc-20&exp=2018-01-18T11%3A11%3A24Z&v=2&sig=tiZc4SDm8HZVAH5%252FZBTU16%252BfZIq8V7Mn7OpA4gcf29A%253D" width="100%" height="2000" frameborder="0" class="amazon_reviews"></iframe> <h2>Blacklist</h2> </div><!-- END right_2_column --> <script type="text/javascript"> $(document).scroll(function(e) { var screenTop = $(document).scrollTop(); var fadeOffset = $("#fade_separator").offset(); var footerOffset = $("#footer_wrapper").offset(); if (screenTop + $("#second_purchase_links").outerHeight() >= footerOffset.top - 100) { $("#second_purchase_links").fadeOut(200); } else if (screenTop > fadeOffset.top + 100) { $("#second_purchase_links").fadeIn(600); } else if (screenTop <= fadeOffset.top + 100) { $("#second_purchase_links").fadeOut(200); } }); </script> <style> #second_purchase_links { display: none; position: fixed; top: 15px; } iframe.amazon_reviews { margin-left: -18px; } </style> <div class="ad_OnScroll_VET"> <!-- OnScroll tag: ahencyclopedia - VET --> <script src="//tags.us.onscroll.com/8b0aee57-058c-4ce3-8eb2-7cadf6175fb3/tag.min.js" async defer></script> </div> <p id="footer_spacer"> </p> </div><!-- END #content --> </div><!-- END #content_wrapper --> </div><!-- END #page --> <div id="footer_wrapper"> <div id="sponsors_box"> <div class="box_wrapper"> <h3>Grants & Sponsorships</h3> <p>Many thanks to the organisations who are kindly helping us through grants or sponsorships:</p> <div id="sponsors_logos_wrapper"> <a href="http://www.britishkoreansociety.org.uk/?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/bks_logo_75px.png" alt="British Korean Society"></a> <a href="https://www.creative-assembly.com/?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/CA_logo_secondary_rgb.png" alt="Creative Assembly"></a> <a href="https://naasr.org/pages/grants-academic-outreach?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/knights-of-vartan.gif" alt="Knights of Vartan"></a> <a href="https://naasr.org/pages/grants-academic-outreach?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/naasr.gif" alt="National Association for Armenian Studies"></a> <a href="http://www.gbsf.org.uk/?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/sasakawa-logo-75px.png" alt="Sasakawa Foundation"></a> <a href="https://www.tsohost.com/?utm_source=ancient.eu&utm_medium=link&utm_campaign=ancient.eu" class="no_external"><img src="/images/sponsors/tohost-medium.png" alt="Tsohost"></a> </div> </div> </div> <div id="partners_list"> <div class="box_wrapper"> <h3>Partners</h3> <p>We have active partnerships to pursue common goals with the following organisations:</p> <div id="sponsors_logos_wrapper"> <a href="http://goo.gl/4USh1A?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/100x100-Chickasaw-Partner-Logo.jpg" alt="Chickasaw.tv"></a> <a href="http://www.digitalmeetsculture.net/?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/digitalmeetsculture.png" alt="digitalmeetsculture.net"></a> <a href="http://www.eagle-network.eu/?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/eagle.png" alt="EAGLE"></a> <a href="http://openeducationeuropa.eu/en/directory/Ancient-History-Encyclopedia?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/ec_logo_en.png" als="European Commission"></a> <a href="http://www.caicyt-conicet.gov.ar/micrositios/mhedi/?p=759&utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/logo_HDCAICYT-h45px.jpg" alt="HDCAICYT"></a> <a href="http://linhd.es/en/?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/LINHD.jpg" alt="LINHD"></a> <a href="http://www.oercommons.org/courses/ancient-history-encyclopedia?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/oercommons.png" alt="OER Commons"></a> <a href="http://pelagios-project.blogspot.co.uk/?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/pelagios.png" alt="Pelagios"></a> <a href="http://www.timeless-travels.co.uk/?utm_source=AHE&utm_medium=Logo&utm_campaign=AHE%20Footer" class="no_external"><img src="/images/partners/TT_Logo-130px.png" alt="Timeless Travels"></a> </div> </div> </div> <div id="footer"> <div class="box_wrapper"> <div id="footer_contents"> <div class="footer_logo"> <img src="/template/images/big_a_50px.png" width="50" height="50" /> </div><div class="footer_section"> <h4>Navigate</h4> <a href="/">Home</a> <a href="/mapselect/">Maps</a> <a href="/index/">Index</a> <a href="/explore/">Explore</a> </div> <div class="footer_section"> <h4>Search</h4> <a href="/search/">Encyclopedia</a> <a href="/timeline/">Timeline</a> <a href="/books/">Books</a> </div> <div class="footer_section footer_connect"> <h4>Connect</h4> <a href="https://www.facebook.com/ahencyclopedia">Facebook</a> <a href="http://www.twitter.com/ahencyclopedia">Twitter</a> <a href="https://plus.google.com/104889582564652753079?prsrc=1">Google Plus</a> <a href="http://ahencyclopedia.tumblr.com/">Tumblr</a> <a href="http://www.pinterest.com/ahencyclopedia">Pinterest</a> <a href="https://instagram.com/ahencyclopedia/">Instagram</a> <a href="http://www.linkedin.com/groups?gid=690807">LinkedIn</a> <a href="/static/newsletter/">Newsletter</a> <a href="http://feeds.feedburner.com/AncientHistoryEncyclopedia">RSS</a> </div> <div class="footer_section footer_contribute"> <h4>Contribute</h4> <a href="/contribute/">Submissions</a> <a href="/contribute/needed/">Needed Content</a> <a href="/style_guide/">Style Guide</a> <a href="/donate/">Donate</a> <a href="/membership/">Membership</a> </div> <div class="footer_section footer_about"> <h4>About</h4> <a href="/static/about/">Company</a> <a href="/static/vision/">Vision</a> <a href="/static/staff/">Team</a> <a href="/static/legal/">Contact</a> <a href="/privacy/">Privacy</a> <a href="/static/advertisements/">Advertise with us</a> </div> <div class="footer_section"> <h4>Account</h4> <a href="/login/::books::1271707098::" title="Login">Login</a> <a href="/register/::books::1271707098::" title="Registration">Register</a> </div> </div> <div class="clr"></div> <div class="footer_phrase"> <p>Some Rights Reserved (2009-2018) by Ancient History Encyclopedia Limited, a non-profit organization registered in the UK.</p> <p>The Ancient History Encyclopedia logo is a <a href="https://drive.google.com/file/d/0B6WK65P2_nE7cGU3WS0ybFNvcnd3Yl8wNDEwRkJHTzByMWJJ/view?usp=sharing">registered EU trademark</a>.</p> <a href="http://www.voxwebdesign.com/"><img src="/images/partners/vox-logo-white.png" border="0" width="106" height="81" alt="VOX Web Design"></a> <p>Design by <a href="http://www.voxwebdesign.com/">VOX</a>.</p> </div> </div> </div><!-- END #footer --> </div> <!-- END #footer_wrapper --> <!-- --> <div id="float_message"></div> <!-- AddThis Pro BEGIN --> <script type="text/javascript"> if (get_media_layout() != "mobile") { async_load_js("//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5177d5d31280befa"); } </script> <!-- AddThis Pro END --> <script type="text/javascript"> // Google AdSense Page-Level Ads if (get_media_layout() == "mobile") { async_load_js("//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"); (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-0915386354531534", enable_page_level_ads: true }); } // Function called if AdBlock is not detected function adBlockNotDetected() { // do nothing var timestamp = Math.floor(Date.now() / 1000); if (timestamp < 1517443200) { // 1 Feb 2018 00:00:00 // Show webops fundraiser if (getCookie("webopsfundraiserMsgSeen") != 1 && media_layout == "desktop") { $.get("/template/includes/top-banners/webops-fundraiser.html?v=6",function(data) { $("body").prepend(data); }); } } } // Function called if AdBlock is detected function adBlockDetected() { // Audience Survey var timestamp = Math.floor(Date.now() / 1000); if (timestamp < 1517443200) { // 1 Feb 2018 00:00:00 // Show webops fundraiser if (getCookie("webopsfundraiserMsgSeen") != 1 && media_layout == "desktop") { $.get("/template/includes/top-banners/webops-fundraiser.html?v=1516047595",function(data) { $("body").prepend(data); }); } } else { // No survey console.log("Ad-block detected!"); console.log("Window height: " + window.innerHeight); var adblock_message_url; if (media_layout != "mobile" && window.innerHeight > 600) { adblock_message_url = "/template/includes/adblock_message_desktop.html?v=1516047595"; } if (getCookie("adBlockMsgSeen") != 1) { $.get(adblock_message_url,function(data) { $("body").prepend(data); }); } /* $(".ad h4").html("Recommended"); $(".ad .ad_membership_notice").html("Membership"); if (media_layout == "desktop") { $.get("/template/includes/annodominibackup/bookdepository/halfpage.html", function(data){ $(".ad_Flexi_TopRight").append(data); }); $.get("/template/includes/annodominibackup/shop/ahe-shop.html", function(data) { $(".ad_Flexi_MiddleRight").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/bd-bestbooks-halfpage.html", function(data) { $(".ad_Flexi_LowerRight").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/leaderboard.html", function(data) { $(".ad_Flexi_BottomLeft").append(data); }); } else if (media_layout == "tablet") { $.get("/template/includes/annodominibackup/bookdepository/leaderboard.html", function(data) { $(".ad_Mobile_Intext:eq(0)").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/leaderboard.html", function(data) { $(".ad_Mobile_Intext:eq(1)").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/leaderboard.html", function(data) { $(".ad_Mobile_Intext:eq(2)").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/leaderboard.html", function(data) { $(".ad_Flexi_BottomLeft").append(data); }); } else if (media_layout == "mobile") { $.get("/template/includes/annodominibackup/shop/ahe-shop.html", function(data) { $(".ad_Mobile_Intext:eq(0)").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/mediumrectangle1.html", function(data) { $(".ad_Mobile_Intext:eq(1)").append(data); }); $.get("/template/includes/annodominibackup/bookdepository/bd-bestbooks-medrec.html", function(data) { $(".ad_Mobile_Intext:eq(2)").append(data); }); $(".ad_Flexi_BottomLeft").hide(); } */ } } // FutuoAdblock if(typeof futuoAdBlock === 'undefined') { adBlockDetected(); } else { futuoAdBlock.onDetected(adBlockDetected); futuoAdBlock.onNotDetected(adBlockNotDetected); } // PageFair (function() { function async_load(script_url){ var protocol = ('https:' == document.location.protocol ? 'https://' : 'http://'); var s = document.createElement('script'); s.src = protocol + script_url; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } bm_website_code = '028466B36F39467A'; jQuery(document).ready(function(){async_load('asset.pagefair.com/measure.min.js')}); jQuery(document).ready(function(){async_load('asset.pagefair.net/ads.min.js')}); })(); // OKO Tracking Pixel window.xl8_config = { "p": 788, "g": 51 }; var xl8_script = document.createElement("script"); xl8_script.src = "//cdn.exelator.com/build/static.min.js"; xl8_script.type = "text/javascript"; xl8_script.async = true; document.body.appendChild(xl8_script); </script> <!-- PageFair Loader --> <!-- <script type="text/javascript"> var adonis = adonis || {}; adonis.transport = 'https://www.adoxen.com/http'; </script> <script>/* loader-7.10.4 */ eval(atob("IWZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIG8oYSxjKXtpZighblthXSl7aWYoIXRbYV0pe3ZhciB1PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFjJiZ1KXJldHVybiB1KGEsITApO2lmKGkpcmV0dXJuIGkoYSwhMCk7dmFyIHM9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrYSsiJyIpO3Rocm93IHMuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsc312YXIgbD1uW2FdPXtleHBvcnRzOnt9fTt0W2FdWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbYV1bMV1bZV07cmV0dXJuIG8obnx8ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW2FdLmV4cG9ydHN9Zm9yKHZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGE9MDthPHIubGVuZ3RoO2ErKylvKHJbYV0pO3JldHVybiBvfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBpKCl7dmFyIGU9Imh0dHAtYWRvbmlzLWNsaWVudC1sb2FkZXIvcnVuIjtyZXR1cm4gcC5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cCIsInBhZ2V2aWV3IikscC5kZWZhdWx0LnJlcG9ydEV2ZW50VmFsdWUoImJvb3RzdHJhcC5odHRwIiwidmVyc2lvbiIsai52ZXJzaW9uKSxnLmRlZmF1bHQuaXNTdXBwb3J0ZWRCcm93c2VyKCk/KF8ubG9nZ2VyLmluZm8oIlsiK2UrIl06IEJyb3dzZXIgaXMgY29tcGF0aWJsZSIpLHAuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwLmh0dHAiLCJzdXBwb3J0ZWQiKSxhKCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gXy5sb2dnZXIuaW5mbygiWyIrZSsiXTogUnVubmluZyBhbmQgY2FjaGluZyBhZG9uaXNDbGllbnQgc291cmNlIikscC5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cCIsInJ1bmNsaWVudHNjcmlwdCIpLHAuZGVmYXVsdC5zYXZlVGltaW5nKCksZC5kZWZhdWx0LmRlZmluZVJlYWRPbmx5UHJvcGVydHkoImFkb25pc0NvbmZpZyIscy5kZWZhdWx0KSwoMCxTLnNlY3VyZWx5UnVuQWRvbmlzQ2xpZW50KSh0KX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTy5YaHJCbG9ja0Vycm9yPyhfLmxvZ2dlci5pbmZvKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCB1c2luZyBTdWV6IiksXy5sb2dnZXIuaW5mbygiWyIrZSsiXTogQWxsIGxvYWRlcnMgZmFpbGVkIHRvIGZldGNoIGFkb25pcy1jbGllbnQsIGNoZWNraW5nIGNvbnRyb2wgc2VydmVyIiksYi5jaGVjaygpKTooXy5sb2dnZXIud2FybigiWyIrZSsiXTogVW5leHBlY3RlZCBlcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBhZG9uaXMtY2xpZW50IG92ZXIgU3VlejogPCIrdCsiPiIpLHAuZGVmYXVsdC5yZXBvcnRFcnJvcih0KSxudWxsKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTy5YaHJCbG9ja0Vycm9yPyhwLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwIiwic3RhdHVzX2Jsb2NrZWQiKSxfLmxvZ2dlci5pbmZvKCJbIitlKyJdOiBDb250cm9sIHNlcnZlciBjaGVjayBmYWlsZWQsIHByb2JhYmx5IGFuIGFkYmxvY2tlciIpLHtzdGF0dXM6ITB9KTooXy5sb2dnZXIud2FybigiWyIrZSsiXTogVW5leHBlY3RlZCBlcnJvciBmcm9tIGNvbnRyb2wgc2VydmVyIGNoZWNrOiA8Iit0KyI+IikscC5kZWZhdWx0LnJlcG9ydEVycm9yKHQpLG51bGwpfSkudGhlbihmdW5jdGlvbih0KXsoMCxtLmRlZmF1bHQpKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSYmdCYmInN0YXR1cyJpbiB0JiZ0LnN0YXR1cz8ocC5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cCIsInRyaWdnZWQiKSwoMCxFLmRlZmF1bHQpKHdpbmRvdywiYWRvbmlzLWRldGVycmVudCIpLF8ubG9nZ2VyLmluZm8oIlsiK2UrIl06IENvbnRyb2wgc2VydmVyIHJlcG9ydGVkIHN0YXR1cyBpcyBoZWFsdGh5IG9yIHdhcyBibG9ja2VkLCB0cmlnZ2VyaW5nIG9wcGVuaGVpbWVyIiksKDAsYy5yZXBsYWNlQ29udGVudCkod2luZG93LmRvY3VtZW50KSk6dCYmInN0YXR1cyJpbiB0JiYhMT09PXQuc3RhdHVzJiYocC5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAuaHR0cCIsIm5vdF90cmlnZ2VkIiksKDAsRS5kZWZhdWx0KSh3aW5kb3csImFkb25pcy1za2lwLWRldGVycmVudCIpLF8ubG9nZ2VyLndhcm4oIlsiK2UrIl06IENvbnRyb2wgc2VydmVyIHJlcG9ydGVkIHN0YXR1cyBpcyB1bmhlYWx0aHksIG5vdCB0cmlnZ2VyaW5nIG9wcGVuaGVpbWVyIikpfSkpOihfLmxvZ2dlci5pbmZvKCJbIitlKyJdOiBJbmNvbXBhdGlibGUgYnJvd3Nlciwgbm90IGNvbnRpbnVpbmciKSxQcm9taXNlLnJlc29sdmUobnVsbCkpfWZ1bmN0aW9uIGEoKXt2YXIgZT0iaHR0cC1hZG9uaXMtY2xpZW50LWxvYWRlci9sb2FkQWRvbmlzQ2xpZW50IjtyZXR1cm4gXy5sb2dnZXIuZGVidWcoIlsiK2UrIl06IFRyeWluZyB0byBsb2FkIGFkb25pcy1jbGllbnQgd2l0aCBYSFIgbG9hZGVyIChmcm9tIENETikiKSxSLmxvYWQoKS5jYXRjaChmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE8uWGhyQmxvY2tFcnJvcj9fLmxvZ2dlci5pbmZvKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCBvdmVyIFhIUiwgdHJ5aW5nIHRvIGxvYWQgZnJvbSBjYWNoZSIpOihfLmxvZ2dlci53YXJuKCJbIitlKyJdOiBVbmV4cGVjdGVkIGVycm9yIHdoZW4gdHJ5aW5nIGZldGNoIGFkb25pcy1jbGllbnQgb3ZlciBYSFIsIHRyeWluZyB0byBsb2FkIGZyb20gY2FjaGU6IDwiK3QrIj4iKSxwLmRlZmF1bHQucmVwb3J0RXJyb3IodCkpLEwubG9hZCgpfSkuY2F0Y2goZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBPLkNhY2hlTG9hZEVycm9yP18ubG9nZ2VyLmluZm8oIlsiK2UrIl06IEZhaWxlZCB0byBmZXRjaCBhZG9uaXMtY2xpZW50IGZyb20gY2FjaGUsIHRyeWluZyB0byBsb2FkIGZyb20gU3VleiIpOihfLmxvZ2dlci53YXJuKCJbIitlKyJdOiBVbmV4cGVjdGVkIGVycm9yIHdoZW4gdHJ5aW5nIGZldGNoIGFkb25pcy1jbGllbnQgZnJvbSBjYWNoZSwgdHJ5aW5nIHRvIGxvYWQgZnJvbSBTdWV6OiA8Iit0KyI+IikscC5kZWZhdWx0LnJlcG9ydEVycm9yKHQpKSxDLmxvYWQoKX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLnJ1bj1pO3ZhciBjPWUoMjUpLHU9ZSg0KSxzPW8odSksbD1lKDE5KSxkPW8obCksZj1lKDE3KSxwPW8oZiksaD1lKDIpLGc9byhoKSx2PWUoNiksYj1yKHYpLF89ZSgxMSksdz1lKDE4KSxtPW8odykseT1lKDEzKSxFPW8oeSksTz1lKDcpLFM9ZSgxNiksVD1lKDEwKSxSPXIoVCksQT1lKDkpLEM9cihBKSxQPWUoOCksTD1yKFApLGo9ZSgyMCl9LHsxMDoxMCwxMToxMSwxMzoxMywxNjoxNiwxNzoxNywxODoxOCwxOToxOSwyOjIsMjA6MjAsMjU6MjUsNDo0LDY6Niw3OjcsODo4LDk6OX1dLDI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3JldHVybiBvKHdpbmRvdykmJmEod2luZG93KSYmaSh3aW5kb3cpJiZjKHdpbmRvdyl9ZnVuY3Rpb24gbyhlKXt0cnl7cmV0dXJuIGUubG9jYWxTdG9yYWdlLnNldEl0ZW0oIl9feHl6X18iLCJfX3h5el9fIiksZS5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiX194eXpfXyIpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBpKGUpe3RyeXtyZXR1cm4hIW5ldyBlLkJsb2J9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGEoZSl7cmV0dXJuIlByb21pc2UiaW4gZSYmInJlc29sdmUiaW4gZS5Qcm9taXNlJiYicmVqZWN0ImluIGUuUHJvbWlzZSYmImFsbCJpbiBlLlByb21pc2UmJiJyYWNlImluIGUuUHJvbWlzZX1mdW5jdGlvbiBjKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLk9iamVjdC5hc3NpZ259dC5leHBvcnRzPXtpc1N1cHBvcnRlZEJyb3dzZXI6cixpc0xvY2FsU3RvcmFnZVN1cHBvcnRlZDpvLGlzQmxvYlN1cHBvcnRlZDppLGlzT2JqZWN0QXNzaWduU3VwcG9ydGVkOmMsaXNQcm9taXNlU3VwcG9ydGVkOmF9fSx7fV0sMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1EYXRlLm5vdygpKzFlMypuO2kubG9nZ2VyLmluZm8oIlsnY2FjaGUvY2FjaGVBZG9uaXNDbGllbnRdOiBuZXcgZXhwaXJ5ICIrcisiID0gIituZXcgRGF0ZShyKSksbG9jYWxTdG9yYWdlLmFkb25pc0NhY2hlU3JjPWUsbG9jYWxTdG9yYWdlLmFkb25pc0NhY2hlRXhwaXJ5TWlsbGlzPXIsbG9jYWxTdG9yYWdlLmFkb25pc0NsaWVudFZlcnNpb249dH1mdW5jdGlvbiBvKCl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImFkb25pc0NhY2hlU3JjIiksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImFkb25pc0NhY2hlRXhwaXJ5TWlsbGlzIiksbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oImFkb25pc0NsaWVudFZlcnNpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5jYWNoZUFkb25pc0NsaWVudD1yLG4uY2xlYXJDYWNoZWRBZG9uaXNDbGllbnQ9bzt2YXIgaT1lKDExKX0sezExOjExfV0sNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDUpO3dpbmRvdy5hZG9uaXNIYXNoPXdpbmRvdy5hZG9uaXNIYXNofHx3aW5kb3cubG9jYXRpb24uaGFzaHx8IiI7dmFyIG89d2luZG93LmFkb25pc0hhc2guaW5kZXhPZigiYWRvbmlzLWxvZ2dpbmciKT49MDtyLkxPR19MRVZFTD1vPyJkZWJ1ZyI6ci5MT0dfTEVWRUw7dmFyIGk9d2luZG93LmFkb25pc3x8e307aWYoaS53c0hvc3QmJnIuV1MmJihyLldTLmhvc3Q9aS53c0hvc3QpLGkudHJhbnNwb3J0JiYoci5TVUVaX0hUVFBfRU5EUE9JTlQ9aS50cmFuc3BvcnQpLGkuaGx0KXt2YXIgYT1pLmhsdC5yZXBsYWNlKC9cLyskLywiIik7ci5TRVJWSUNFX1NUQVRVU19VUkw9ZnVuY3Rpb24oZSl7cmV0dXJuIGErIi8iK2UrIi1zdGF0dXMuanNvbiJ9fXQuZXhwb3J0cz1yfSx7NTo1fV0sNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4cG9ydHM9e1JFUE9SVElOR19VUkw6Imh0dHBzOi8vbGIuc3RhdHNldmVudC5jb20vc3RhdHMiLFJFUE9SVElOR19SQVRFOi4wMSxMT0dfTEVWRUw6ImVycm9yIixSRVBPUlRfRVJST1JTOiEwLE1BTklGRVNUX1VSTDoiaHR0cHM6Ly9zcmkuanNpbnRlZ3JpdHkuY29tL21hbmlmZXN0Lmpzb24iLE1BTklGRVNUX0VYUElSQVRJT05fVElNRTo4NjQwMCxBRF9NQVJLRVI6ImFkb25pcy1tYXJrZXIiLEFET05JU19DTElFTlRfRkVUQ0hfVVJMOiJodHRwczovL2Fkc2VydmVyLnhwYW5hbWEubmV0L2NsaWVudC03LWxhdGVzdC5qcyIsU0VSVklDRV9TVEFUVVNfVVJMOmZ1bmN0aW9uKGUpe3JldHVybiJodHRwczovL2NsaWVudC5yZWFjdHJqcy5jb20vIitlKyItc3RhdHVzLmpzb24ifSxTVUVaX0hUVFBfUkVUUlk6MyxTVUVaX0hUVFBfREVMQVk6MTAwfX0se31dLDY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbygpe3ZhciBlPSJjb250cm9sLXNlcnZlci9jaGVjayI7Zi5sb2dnZXIuaW5mbygiWyIrZSsiXTogQ2hlY2tpbmcgc2VydmljZSBzdGF0dXMiKTt2YXIgdD1pKHdpbmRvdyk7cmV0dXJuKDAsdS5yZXF1ZXN0KSh0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBmLmxvZ2dlci5kZWJ1ZygiWyIrZSsiXTogU3RhdHVzIGNoZWNrIGZldGNoZWQgd2l0aCBzdGF0dXMtY29kZSA8Iit0LnN0YXR1cysiPiIpLEpTT04ucGFyc2UodC5yZXNwb25zZVRleHQpfSkuY2F0Y2goZnVuY3Rpb24odCl7Zi5sb2dnZXIuaW5mbygiWyIrZSsiXTogRmFpbGVkIHRvIGNoZWNrIGNvbnRyb2wgc2VydmVyIHN0YXR1cyA8Iit0KyI+Iik7dmFyIG49dm9pZCAwIT09dC5yZXE/dC5yZXEuc3RhdHVzOm51bGw7dGhyb3cgMD09PW4/bmV3IHMuWGhyQmxvY2tFcnJvcjpuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUgd2hpbGUgcGVyZm9ybWluZyBjb250cm9sIHNlcnZlciBjaGVjaywgc3RhdHVzLWNvZGUgPSA8IituKyI+Iil9KX1mdW5jdGlvbiBpKGUpe3JldHVybiBkLmRlZmF1bHQuU0VSVklDRV9TVEFUVVNfVVJMKGMuZGVmYXVsdC5nZXQoZS5sb2NhdGlvbi5ob3N0KSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uY2hlY2s9byxuLmdldFNlcnZpY2VTdGF0dXNVcmw9aTt2YXIgYT1lKDI4KSxjPXIoYSksdT1lKDIxKSxzPWUoNyksbD1lKDQpLGQ9cihsKSxmPWUoMTEpfSx7MTE6MTEsMjE6MjEsMjg6MjgsNDo0LDc6N31dLDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5YaHJSZXF1ZXN0RXJyb3I9bi5TUklFcnJvcj1uLkNhY2hlTG9hZEVycm9yPW4uWGhyQmxvY2tFcnJvcj12b2lkIDA7dmFyIGE9ZSgyNCksYz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KGEpO24uWGhyQmxvY2tFcnJvcj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIHIodGhpcyx0KSxvKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGkodCxlKSx0fShjLmRlZmF1bHQpLG4uQ2FjaGVMb2FkRXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiByKHRoaXMsdCksbyh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBpKHQsZSksdH0oYy5kZWZhdWx0KSxuLlNSSUVycm9yPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gcih0aGlzLHQpLG8odGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gaSh0LGUpLHR9KGMuZGVmYXVsdCksbi5YaHJSZXF1ZXN0RXJyb3I9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe3IodGhpcyx0KTt2YXIgaT1vKHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcyxuKSk7cmV0dXJuIGkucmVxPWUsaX1yZXR1cm4gaSh0LGUpLHR9KGMuZGVmYXVsdCl9LHsyNDoyNH1dLDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlPSJsb2FkZXJzL2NhY2hlL2xvYWQiO2kubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBTdGFydGluZyBjYWNoZSBsb2FkZXIiKTt2YXIgdD1wYXJzZUludChsb2NhbFN0b3JhZ2UuYWRvbmlzQ2FjaGVFeHBpcnlNaWxsaXMsMTApfHwwLG49bG9jYWxTdG9yYWdlLmFkb25pc0NsaWVudFZlcnNpb24scj1sb2NhbFN0b3JhZ2UuYWRvbmlzQ2FjaGVTcmMsYT0obmV3IERhdGUpLmdldFRpbWUoKT49dDtyZXR1cm4gcj9uP2E/KGkubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBDYWNoZWQgdmVyc2lvbiBvZiBhZG9uaXMtY2xpZW50IGlzIGV4cGlyZWQiKSxQcm9taXNlLnJlamVjdChuZXcgby5DYWNoZUxvYWRFcnJvcikpOihpLmxvZ2dlci5kZWJ1ZygiWyIrZSsiXTogRm91bmQgYSB2YWxpZCBjYWNoZWQgdmVyc2lvbiBvZiBhZG9uaXMtY2xpZW50IiksUHJvbWlzZS5yZXNvbHZlKHtzb3VyY2U6cix2ZXJzaW9uOm59KSk6KGkubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBObyB2ZXJzaW9uIG51bWJlciBmb3VuZCBpbiBsb2NhbFN0b3JhZ2UgY2FjaGUiKSxQcm9taXNlLnJlamVjdChuZXcgby5DYWNoZUxvYWRFcnJvcikpOihpLmxvZ2dlci5kZWJ1ZygiWyIrZSsiXTogTm8gY2FjaGVkIHZlcnNpb24gb2YgYWRvbmlzLWNsaWVudCBmb3VuZCBpbiB0aGUgbG9jYWxTdG9yYWdlIiksUHJvbWlzZS5yZWplY3QobmV3IG8uQ2FjaGVMb2FkRXJyb3IpKX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5sb2FkPXI7dmFyIG89ZSg3KSxpPWUoMTEpfSx7MTE6MTEsNzo3fV0sOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7dmFyIGU9ImxvYWRlcnMvc3Vlei1odHRwIjtkLmxvZ2dlci5kZWJ1ZygiWyIrZSsiXTogU3RhcnRpbmcgU3VleiBIVFRQIGxvYWRlciIpO3ZhciB0PUpTT04uc3RyaW5naWZ5KHtob3N0OiJhc3NldHMiLHBhdGg6ImNsaWVudCIscGFyYW1zOnt9LGhlYWRlcnM6e2Fkb25pc19jbGllbnRfYXBpOiI3LjAuMCJ9fSksbj17IkFkb25pcy1WZXJzaW9uIjoiNy4wLjAiLCJDYWNoZS1BZG9uaXMiOiJ0cnVlIn07cmV0dXJuIHZvaWQgMD09PWMuZGVmYXVsdC5TVUVaX0hUVFBfRU5EUE9JTlQ/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJObyBhZG9uaXMgdHJhbnNwb3J0IGZvdW5kIikpOigwLGwucmVxdWVzdCkoYy5kZWZhdWx0LlNVRVpfSFRUUF9FTkRQT0lOVCwiUE9TVCIsdCxuKS50aGVuKGZ1bmN0aW9uKHQpe2QubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBTdWNjZXNzZnVsbHkgZmV0Y2hlZCBhZG9uaXMtY2xpZW50IG92ZXIgWEhSIik7dmFyIG49dC5yZXNwb25zZVRleHQscj10LmdldFJlc3BvbnNlSGVhZGVyKCJhZG9uaXMtY2xpZW50LXZlcnNpb24iKSxvPXQuZ2V0UmVzcG9uc2VIZWFkZXIoImNhY2hlLWNvbnRyb2wiKSxpPW51bGwhPT1vP3BhcnNlSW50KG8uc3BsaXQoIj0iKVsxXSwxMCk6bnVsbDtyZXR1cm4gbiYmciYmaSYmKDAsaC5jYWNoZUFkb25pc0NsaWVudCkobixyLGkpLHtzb3VyY2U6bix2ZXJzaW9uOnJ9fSkuY2F0Y2goZnVuY3Rpb24odCl7dGhyb3cgZC5sb2dnZXIuZGVidWcoIlsiK2UrIl06IEZhaWxlZCB0byBmZXRjaCBhZG9uaXMtY2xpZW50IGZyb20gU3VleiBvdmVyIFhIUiA8Iit0KyI+IiksMD09PXQucmVxLnN0YXR1cz9uZXcgZi5YaHJCbG9ja0Vycm9yOm5ldyBFcnJvcigiVW5leHBlY3RlZCBlcnJvciBmZXRjaGluZyBhZG9uaXMtY2xpZW50LCBzdGF0dXMtY29kZSA9IDwiK3QucmVxLnN0YXR1cysiPiIpfSl9ZnVuY3Rpb24gaSgpe3ZhciBlPWMuZGVmYXVsdC5TVUVaX0hUVFBfUkVUUll8fDEsdD1jLmRlZmF1bHQuU1VFWl9IVFRQX0RFTEFZfHwwLG49QXJyYXkuYXBwbHkoMCxBcnJheShlKSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvfSk7cmV0dXJuIHMuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwLmh0dHAiLCJzdWV6X29wZW5pbmciKSwoMCxwLmNoYWluKShuLHQpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHMuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwLmh0dHAiLCJzdWV6X29wZW5lZCIpLGV9KS5jYXRjaChmdW5jdGlvbihlKXt0aHJvdyBlIGluc3RhbmNlb2YgZi5YaHJCbG9ja0Vycm9yJiZzLmRlZmF1bHQucmVwb3J0RXZlbnQoImJvb3RzdHJhcC5odHRwIiwic3Vlel9ibG9ja2VkIiksZX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLmxvYWRPbmNlPW8sbi5sb2FkPWk7dmFyIGE9ZSg0KSxjPXIoYSksdT1lKDE3KSxzPXIodSksbD1lKDIxKSxkPWUoMTEpLGY9ZSg3KSxwPWUoMTQpLGg9ZSgzKX0sezExOjExLDE0OjE0LDE3OjE3LDIxOjIxLDM6Myw0OjQsNzo3fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3ZhciBlPSJsb2FkZXJzL2NhY2hlL3hociI7cmV0dXJuIGMubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBTdGFydGluZyBYSFIgbG9hZGVyIiksKDAsYS5yZXF1ZXN0KShpLmRlZmF1bHQuQURPTklTX0NMSUVOVF9GRVRDSF9VUkwpLnRoZW4oZnVuY3Rpb24odCl7Yy5sb2dnZXIuZGVidWcoIlsiK2UrIl06IFN1Y2Nlc3NmdWxseSBmZXRjaGVkIGFkb25pcy1jbGllbnQgb3ZlciBYSFIiKTt2YXIgbj10LmdldFJlc3BvbnNlSGVhZGVyKCJ4LWFtei1tZXRhLWFkb25pcy1jbGllbnQtdmVyc2lvbiIpO3JldHVybntzb3VyY2U6dC5yZXNwb25zZVRleHQsdmVyc2lvbjpufX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3Rocm93IGMubG9nZ2VyLmRlYnVnKCJbIitlKyJdOiBGYWlsZWQgdG8gZmV0Y2ggYWRvbmlzLWNsaWVudCBvdmVyIFhIUiA8Iit0KyI+IiksMD09PXQucmVxLnN0YXR1cz9uZXcgdS5YaHJCbG9ja0Vycm9yOm5ldyBFcnJvcigiVW5leHBlY3RlZCBlcnJvciBwZXJmb3JtaW5nIHN0YXR1cyBjaGVjayByZXF1ZXN0LCBzdGF0dXMtY29kZSA9IDwiK3QucmVxLnN0YXR1cysiPiIpfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ubG9hZD1yO3ZhciBvPWUoNCksaT1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19KG8pLGE9ZSgyMSksYz1lKDExKSx1PWUoNyl9LHsxMToxMSwyMToyMSw0OjQsNzo3fV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ubG9nZ2VyPXZvaWQgMDt2YXIgcj1lKDQpLG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fShyKSxpPWUoMzApO24ubG9nZ2VyPSgwLGkuY3JlYXRlKSh7bGV2ZWw6by5kZWZhdWx0LkxPR19MRVZFTH0pfSx7MzA6MzAsNDo0fV0sMTI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbygpe3JldHVybiBjLmxvZ2dlci5kZWJ1ZygiTG9hZGluZyBtYW5pZmVzdCIpLCgwLGwucmVxdWVzdCkoYS5kZWZhdWx0Lk1BTklGRVNUX1VSTCkudGhlbihmdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoZS5yZXNwb25zZVRleHQpfWNhdGNoKGUpe3Rocm93IGMubG9nZ2VyLmRlYnVnKCJFcnJvciBwYXJzaW5nIHRoZSBtYW5pZmVzdCIsZSkscy5kZWZhdWx0LnJlcG9ydEV2ZW50KCJib290c3RyYXAiLCJtYW5pZmVzdF9jb250ZW50X2Vycm9yIiksZX19KS5jYXRjaChmdW5jdGlvbihlKXt0aHJvdyBjLmxvZ2dlci5kZWJ1ZygiRXJyb3IgbG9hZGluZyB0aGUgbWFuaWZlc3QiLGUpLHMuZGVmYXVsdC5yZXBvcnRFdmVudCgiYm9vdHN0cmFwIiwibWFuaWZlc3RfZmV0Y2hfZXJyb3IiKSxlfSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4ubG9hZD1vO3ZhciBpPWUoNCksYT1yKGkpLGM9ZSgxMSksdT1lKDE3KSxzPXIodSksbD1lKDIxKX0sezExOjExLDE3OjE3LDIxOjIxLDQ6NH1dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJORVdfU0NSSVBUX0VWRU5UIixuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxyPW5ldyBvKHQse2RldGFpbDpufSk7ZS5kaXNwYXRjaEV2ZW50KHIpfXZhciBvPWUoMjMpO3QuZXhwb3J0cz1yfSx7MjM6MjN9XSwxNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpJiYwPT09ZS5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVqZWN0KG4pO3Q9dHx8MDt2YXIgaT1lWzBdO3JldHVybiBlPWUuc2xpY2UoMSksaSgpLmNhdGNoKGZ1bmN0aW9uKG4pe3JldHVybiBvKHQpLnRoZW4oZnVuY3Rpb24obyl7cmV0dXJuIHIoZSx0LG4pfSl9KX1mdW5jdGlvbiBvKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LG4pe3NldFRpbWVvdXQoZnVuY3Rpb24oZSl7cmV0dXJuIHQoKX0sZSl9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5jaGFpbj1yfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2EubG9nZ2VyLmRlYnVnKCJpbnNlcnRpbmcgYmxvYiIpO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBuLnNyYz1lLHQmJihuLmludGVncml0eT10KSxuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe24ub25sb2FkPWZ1bmN0aW9uKCl7ZShudWxsKX0sbi5vbmVycm9yPWZ1bmN0aW9uKCl7dChuZXcgaS5TUklFcnJvcil9LGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobil9KX1mdW5jdGlvbiBvKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3QuaW5uZXJIVE1MPWUsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5pbnNlcnRCbG9iU2NyaXB0PXIsbi5pbnNlcnRJbmxpbmVTY3JpcHQ9bzt2YXIgaT1lKDcpLGE9ZSgxMSl9LHsxMToxMSw3Ojd9XSwxNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybigwLGEubG9hZCkoKS50aGVuKGZ1bmN0aW9uKHQpe3ZhciBuPWUudmVyc2lvbixyPW5ldyBCbG9iKFtlLnNvdXJjZV0se3R5cGU6InRleHQvamF2YXNjcmlwdCJ9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwociksYT10Lmhhc093blByb3BlcnR5KG4pP3Rbbl06bnVsbDtyZXR1cm4gbnVsbD09PWE/KCgwLG8uY2xlYXJDYWNoZWRBZG9uaXNDbGllbnQpKCksUHJvbWlzZS5yZXNvbHZlKG51bGwpKTooMCx1LnJlcXVlc3QpKGkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4oMCxjLmluc2VydEJsb2JTY3JpcHQpKGksYSkuY2F0Y2goZnVuY3Rpb24oKXsoMCxvLmNsZWFyQ2FjaGVkQWRvbmlzQ2xpZW50KSgpfSl9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGkubG9nZ2VyLmluZm8oIltodHRwLWFkb25pcy1jbGllbnQtbG9hZGVyL3J1bl06IE1hbmlmZXN0IG9yIGJsb2IgZmV0Y2ggZmFpbGVkLCBpbnNlcnRpbmcgaW5saW5lIiksKDAsYy5pbnNlcnRJbmxpbmVTY3JpcHQpKGUuc291cmNlKX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLnNlY3VyZWx5UnVuQWRvbmlzQ2xpZW50PXI7dmFyIG89ZSgzKSxpPWUoMTEpLGE9ZSgxMiksYz1lKDE1KSx1PWUoMjEpfSx7MTE6MTEsMTI6MTIsMTU6MTUsMjE6MjEsMzozfV0sMTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgWE1MSHR0cFJlcXVlc3Qsbj1bZC5SRVBPUlRJTkdfVVJMLGVdLmpvaW4oIi8iKTt0Lm9wZW4oIkdFVCIsbiwhMCksdC5zZW5kKCl9ZnVuY3Rpb24gbyhlKXtkLlJFUE9SVF9FUlJPUlMmJnIoImFkb25pc19lcnJvcj9lPSIrZS50b1N0cmluZygpKyImd2Vic2l0ZT0iK3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSl9ZnVuY3Rpb24gaSgpe3JldHVybiBudWxsIT13aW5kb3cuQURPTklTX0JPT1RTVFJBUF9TVEFUUz8hMD09PXdpbmRvdy5BRE9OSVNfQk9PVFNUUkFQX1NUQVRTOk1hdGgucmFuZG9tKCk8ZC5SRVBPUlRJTkdfUkFURX1mdW5jdGlvbiBhKGUsdCxuLG8sYSl7aWYocyhuLG8pLGkoKSl7dmFyIGM9e3dlYnNpdGU6d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLGNhdGVnb3J5OnQsa2V5Om4sdmFsdWU6b307bnVsbCE9YSYmKGMucXVhbnRpdHk9YSkscihbZSxKU09OLnN0cmluZ2lmeShjKV0uam9pbigiIikpfX1mdW5jdGlvbiBjKGUsdCxuKXthKCJhZG9uaXNfZXZlbnQvc3RhdHNfcHJveHk/ZXZlbnQ9IixlLHQsdm9pZCAwLG4pfWZ1bmN0aW9uIHUoZSx0LG4scil7YSgiYWRvbmlzX2V2ZW50L3N0YXRzX3Byb3h5P2V2ZW50PSIsZSx0LG4scil9ZnVuY3Rpb24gcyhlLHQpe3ZhciBuPXtrZXk6ZSx0aW1lX21zOk1hdGgucm91bmQod2luZG93LnBlcmZvcm1hbmNlLm5vdygpKSx3ZWJzaXRlOndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSx2YWx1ZTp0fTtwLnB1c2gobil9ZnVuY3Rpb24gbCgpe2YuZGVmaW5lUmVhZE9ubHlQcm9wZXJ0eSgiYWRvbmlzQm9vdHN0cmFwVGltaW5nIixwKX12YXIgZD1lKDQpLGY9ZSgxOSkscD1bXTt0LmV4cG9ydHM9e3JlcG9ydEVycm9yOm8scmVwb3J0RXZlbnQ6YyxyZXBvcnRFdmVudFZhbHVlOnUsc2F2ZVRpbWluZzpsLHNob3VsZFJlcG9ydDppfX0sezE5OjE5LDQ6NH1dLDE4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9L2FuZHJvaWR8aXBob25lL2dpLG49L0Nocm9tZVwvKFxTKSsgU2FmYXJpXC8oXFMpKyQvZ2kscj0vXCkgR2Vja29cLyhcUykrIEZpcmVmb3hcLyhcUykrJC9naSxvPS9saWtlIEdlY2tvLj9cKSBWZXJzaW9uXC8oXFMpKyBTYWZhcmlcLyhcUykrJC9naTtyZXR1cm4tMT09PWUuc2VhcmNoKHQpJiYoZS5zZWFyY2gobik+LTF8fGUuc2VhcmNoKHIpPi0xfHxlLnNlYXJjaChvKT4tMSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uZGVmYXVsdD1yfSx7fV0sMTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LGUse3ZhbHVlOnQsd3JpdGFibGU6ITF9KX1jYXRjaChlKXtvLndhcm4oIkNhbm5vdCBkZWZpbmUgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHdpbmRvdyBvYmplY3Q6ICIrZSl9fXZhciBvPWUoMTEpLmxvZ2dlcixpPWZ1bmN0aW9uKGUpeyJsb2FkaW5nIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/ZSgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGUpfTt0LmV4cG9ydHM9e2RlZmluZVJlYWRPbmx5UHJvcGVydHk6cixyZWFkeTppfX0sezExOjExfV0sMjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPXt2ZXJzaW9uOiI3LjEwLjQifX0se31dLDIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJHRVQiLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwscj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106e307cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZShmdW5jdGlvbihpLGEpe3ZhciBjPW5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKHQsZSwhMCk7Zm9yKHZhciB1IGluIHIpe3ZhciBzPXJbdV07Yy5zZXRSZXF1ZXN0SGVhZGVyKHUscyl9Yy5vbmxvYWQ9ZnVuY3Rpb24oKXtjLnN0YXR1cz49NDAwP2EobmV3IG8uWGhyUmVxdWVzdEVycm9yKGMsIlVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUiKSk6aShjKX0sYy5vbmVycm9yPWZ1bmN0aW9uKCl7YShuZXcgby5YaHJSZXF1ZXN0RXJyb3IoYywiRXJyb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24iKSl9LGMuc2VuZChuKX0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLnJlcXVlc3Q9cjt2YXIgbz1lKDcpfSx7Nzo3fV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZSgyNik7dmFyIHI9ZSgxMSksbz1lKDEpO3IubG9nZ2VyLmluZm8oIltodHRwTG9hZGVyXTogU3RhcnRpbmcgYm9vdHN0cmFwIiksKDAsby5ydW4pKCl9LHsxOjEsMTE6MTEsMjY6MjZ9XSwyMzpbZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlKXt2YXIgbj1lLkN1c3RvbUV2ZW50O3QuZXhwb3J0cz1mdW5jdGlvbigpe3RyeXt2YXIgZT1uZXcgbigiY2F0Iix7ZGV0YWlsOntmb286ImJhciJ9fSk7cmV0dXJuImNhdCI9PT1lLnR5cGUmJiJiYXIiPT09ZS5kZXRhaWwuZm9vfWNhdGNoKGUpe31yZXR1cm4hMX0oKT9uOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkb2N1bWVudC5jcmVhdGVFdmVudD9mdW5jdGlvbihlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJDdXN0b21FdmVudCIpO3JldHVybiB0P24uaW5pdEN1c3RvbUV2ZW50KGUsdC5idWJibGVzLHQuY2FuY2VsYWJsZSx0LmRldGFpbCk6bi5pbml0Q3VzdG9tRXZlbnQoZSwhMSwhMSx2b2lkIDApLG59OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoKTtyZXR1cm4gbi50eXBlPWUsdD8obi5idWJibGVzPUJvb2xlYW4odC5idWJibGVzKSxuLmNhbmNlbGFibGU9Qm9vbGVhbih0LmNhbmNlbGFibGUpLG4uZGV0YWlsPXQuZGV0YWlsKToobi5idWJibGVzPSExLG4uY2FuY2VsYWJsZT0hMSxuLmRldGFpbD12b2lkIDApLG59fSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7fV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBpKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToiIjtyKHRoaXMsdCk7dmFyIG49byh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMsZSkpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwibWVzc2FnZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOmUsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwibmFtZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOm4uY29uc3RydWN0b3IubmFtZSx3cml0YWJsZTohMH0pLEVycm9yLmhhc093blByb3BlcnR5KCJjYXB0dXJlU3RhY2tUcmFjZSIpPyhFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShuLG4uY29uc3RydWN0b3IpLG8obikpOihPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic3RhY2siLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpuZXcgRXJyb3IoZSkuc3RhY2ssd3JpdGFibGU6ITB9KSxuKX1yZXR1cm4gaSh0LGUpLHR9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUsdH0oRXJyb3IpKTtuLmRlZmF1bHQ9YSx0LmV4cG9ydHM9bi5kZWZhdWx0fSx7fV0sMjU6W2Z1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24oZSxyKXsib2JqZWN0Ij09dHlwZW9mIG4mJnZvaWQgMCE9PXQ/cihuKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImV4cG9ydHMiXSxyKTpyKGUub3BwZW5oZWltZXI9e30pfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe3JldHVybiByLnJlcGxhY2UoInt7VElUTEV9fSIsZS50aXRsZSl9ZnVuY3Rpb24gbihlKXtlLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUw9dChlKX12YXIgcj0nPGhlYWQ+PG1ldGEgY2hhcnNldD11dGYtOD48bWV0YSBuYW1lPXZpZXdwb3J0IGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsbWF4aW11bS1zY2FsZT0xLHVzZXItc2NhbGFibGU9bm8iPjx0aXRsZT57e1RJVExFfX08L3RpdGxlPjxzdHlsZT5ib2R5LGh0bWx7YmFja2dyb3VuZDojZWZlZmVmO2ZvbnQtZmFtaWx5OiJIZWx2ZXRpY2EgTmV1ZSIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7aGVpZ2h0OjEwMCV9I21haW4tY29udGVudHtoZWlnaHQ6MTAwJX0jbWFpbi1jb250ZW50PmRpdnttYXgtd2lkdGg6ODAwcHg7bWluLXdpZHRoOjIwMHB4O21hcmdpbjowIGF1dG87cG9zaXRpb246cmVsYXRpdmU7dG9wOjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX08L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPW1haW4tY29udGVudD48ZGl2PjxoMT5Tb21ldGhpbmcgaW50ZXJmZXJlZCB3aXRoIHRoaXMgd2Vic2l0ZSBsb2FkaW5nPC9oMT48cD5UaGlzIGNvdWxkIGJlIGEgdGVtcG9yYXJ5IHByb2JsZW0gd2l0aCB5b3VyIG5ldHdvcmssIG9yIGR1ZSB0byB5b3VyIGFkYmxvY2tlcjwvcD48cD5Ucnk6PC9wPjx1bD48bGk+Q2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uIGFuZCByZWxvYWQgdGhlIHBhZ2U8L2xpPjxsaT5JZiB5b3UgYXJlIHVzaW5nIGFuIGFkYmxvY2tlciBkaXNhYmxlIGl0IGJ5IGNsaWNraW5nIG9uIHRoZSBhZGJsb2NrIGljb24gaW4geW91ciBicm93c2VyIHRvb2xiYXI8L2xpPjxsaT5JZiB0aGUgcHJvYmxlbSBwZXJzaXN0cywgY29uc2lkZXIgbGVhdmluZyBhIG1lc3NhZ2Ugb24gdGhlIDxhIGhyZWY9aHR0cHM6Ly9mb3J1bXMubGFuaWsudXMvIHRhcmdldD1fQkxBTks+YWRibG9jayB1c2VyIGZvcnVtczwvYT48L2xpPjwvdWw+PC9kaXY+PC9kaXY+PC9ib2R5Pic7ZS5kaXNwbGF5TWVzc2FnZT10LGUucmVwbGFjZUNvbnRlbnQ9bixPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KX0se31dLDI2OltmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUpeyJwZXJmb3JtYW5jZSJpbiBlfHwoZS5wZXJmb3JtYW5jZT17fSk7dmFyIHQ9ZS5wZXJmb3JtYW5jZTtlLnBlcmZvcm1hbmNlLm5vdz10Lm5vd3x8dC5tb3pOb3d8fHQubXNOb3d8fHQub05vd3x8dC53ZWJraXROb3d8fERhdGUubm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0oc2VsZil9LHt9XSwyNzpbZnVuY3Rpb24oZSx0LG4pe3QuZXhwb3J0cz1bImNvbSIsIm5ldCIsImZyIiwiY28udWsiLCJkZSIsInR2IiwidG9kYXkiLCJvcmciLCJpbmZvIiwiaWUiLCJiYSIsImdnIiwiY28ubnoiLCJjb20uYnIiXX0se31dLDI4OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMjkpLG89e307by5ydWxlcz1lKDI3KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3J1bGU6ZSxzdWZmaXg6ZS5yZXBsYWNlKC9eKFwqXC58XCEpLywiIiksd2lsZGNhcmQ6IioiPT09ZS5jaGFyQXQoMCksZXhjZXB0aW9uOiIhIj09PWUuY2hhckF0KDApfX0pLG8uZW5kc1dpdGg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4tMSE9PWUuaW5kZXhPZih0LGUubGVuZ3RoLXQubGVuZ3RoKX0sby5maW5kUnVsZT1mdW5jdGlvbihlKXt2YXIgdD1yLnRvQVNDSUkoZSk7cmV0dXJuIG8ucnVsZXMucmVkdWNlKGZ1bmN0aW9uKGUsbil7dmFyIGk9ci50b0FTQ0lJKG4uc3VmZml4KTtyZXR1cm4gby5lbmRzV2l0aCh0LCIuIitpKXx8dD09PWk/bjplfSxudWxsKX0sbi5lcnJvckNvZGVzPXtET01BSU5fVE9PX1NIT1JUOiJEb21haW4gbmFtZSB0b28gc2hvcnQuIixET01BSU5fVE9PX0xPTkc6IkRvbWFpbiBuYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFycy4iLExBQkVMX1NUQVJUU19XSVRIX0RBU0g6IkRvbWFpbiBuYW1lIGxhYmVsIGNhbiBub3Qgc3RhcnQgd2l0aCBhIGRhc2guIixMQUJFTF9FTkRTX1dJVEhfREFTSDoiRG9tYWluIG5hbWUgbGFiZWwgY2FuIG5vdCBlbmQgd2l0aCBhIGRhc2guIixMQUJFTF9UT09fTE9ORzoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IG1vc3QgNjMgY2hhcnMgbG9uZy4iLExBQkVMX1RPT19TSE9SVDoiRG9tYWluIG5hbWUgbGFiZWwgc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcmFjdGVyIGxvbmcuIixMQUJFTF9JTlZBTElEX0NIQVJTOiJEb21haW4gbmFtZSBsYWJlbCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIG9yIGRhc2hlcy4ifSxvLnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXIudG9BU0NJSShlKTtpZih0Lmxlbmd0aDwxKXJldHVybiJET01BSU5fVE9PX1NIT1JUIjtpZih0Lmxlbmd0aD4yNTUpcmV0dXJuIkRPTUFJTl9UT09fTE9ORyI7Zm9yKHZhciBuLG89dC5zcGxpdCgiLiIpLGk9MDtpPG8ubGVuZ3RoOysraSl7aWYobj1vW2ldLCFuLmxlbmd0aClyZXR1cm4iTEFCRUxfVE9PX1NIT1JUIjtpZihuLmxlbmd0aD42MylyZXR1cm4iTEFCRUxfVE9PX0xPTkciO2lmKCItIj09PW4uY2hhckF0KDApKXJldHVybiJMQUJFTF9TVEFSVFNfV0lUSF9EQVNIIjtpZigiLSI9PT1uLmNoYXJBdChuLmxlbmd0aC0xKSlyZXR1cm4iTEFCRUxfRU5EU19XSVRIX0RBU0giO2lmKCEvXlthLXowLTlcLV0rJC8udGVzdChuKSlyZXR1cm4iTEFCRUxfSU5WQUxJRF9DSEFSUyJ9fSxuLnBhcnNlPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEb21haW4gbmFtZSBtdXN0IGJlIGEgc3RyaW5nLiIpO3ZhciB0PWUuc2xpY2UoMCkudG9Mb3dlckNhc2UoKTsiLiI9PT10LmNoYXJBdCh0Lmxlbmd0aC0xKSYmKHQ9dC5zbGljZSgwLHQubGVuZ3RoLTEpKTt2YXIgaT1vLnZhbGlkYXRlKHQpO2lmKGkpcmV0dXJue2lucHV0OmUsZXJyb3I6e21lc3NhZ2U6bi5lcnJvckNvZGVzW2ldLGNvZGU6aX19O3ZhciBhPXtpbnB1dDplLHRsZDpudWxsLHNsZDpudWxsLGRvbWFpbjpudWxsLHN1YmRvbWFpbjpudWxsLGxpc3RlZDohMX0sYz10LnNwbGl0KCIuIik7aWYoImxvY2FsIj09PWNbYy5sZW5ndGgtMV0pcmV0dXJuIGE7dmFyIHU9ZnVuY3Rpb24oKXtyZXR1cm4veG4tLS8udGVzdCh0KT8oYS5kb21haW4mJihhLmRvbWFpbj1yLnRvQVNDSUkoYS5kb21haW4pKSxhLnN1YmRvbWFpbiYmKGEuc3ViZG9tYWluPXIudG9BU0NJSShhLnN1YmRvbWFpbikpLGEpOmF9LHM9by5maW5kUnVsZSh0KTtpZighcylyZXR1cm4gYy5sZW5ndGg8Mj9hOihhLnRsZD1jLnBvcCgpLGEuc2xkPWMucG9wKCksYS5kb21haW49W2Euc2xkLGEudGxkXS5qb2luKCIuIiksYy5sZW5ndGgmJihhLnN1YmRvbWFpbj1jLnBvcCgpKSx1KCkpO2EubGlzdGVkPSEwO3ZhciBsPXMuc3VmZml4LnNwbGl0KCIuIiksZD1jLnNsaWNlKDAsYy5sZW5ndGgtbC5sZW5ndGgpO3JldHVybiBzLmV4Y2VwdGlvbiYmZC5wdXNoKGwuc2hpZnQoKSksZC5sZW5ndGg/KHMud2lsZGNhcmQmJmwudW5zaGlmdChkLnBvcCgpKSxkLmxlbmd0aD8oYS50bGQ9bC5qb2luKCIuIiksYS5zbGQ9ZC5wb3AoKSxhLmRvbWFpbj1bYS5zbGQsYS50bGRdLmpvaW4oIi4iKSxkLmxlbmd0aCYmKGEuc3ViZG9tYWluPWQuam9pbigiLiIpKSx1KCkpOnUoKSk6dSgpfSxuLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gZT9uLnBhcnNlKGUpLmRvbWFpbnx8bnVsbDpudWxsfSxuLmlzVmFsaWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bi5wYXJzZShlKTtyZXR1cm4gQm9vbGVhbih0LmRvbWFpbiYmdC5saXN0ZWQpfX0sezI3OjI3LDI5OjI5fV0sMjk6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIG8oZSl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoeFtlXSl9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj1lLmxlbmd0aCxyPVtdO24tLTspcltuXT10KGVbbl0pO3JldHVybiByfWZ1bmN0aW9uIGEoZSx0KXt2YXIgbj1lLnNwbGl0KCJAIikscj0iIjtyZXR1cm4gbi5sZW5ndGg+MSYmKHI9blswXSsiQCIsZT1uWzFdKSxlPWUucmVwbGFjZShJLCIuIikscitpKGUuc3BsaXQoIi4iKSx0KS5qb2luKCIuIil9ZnVuY3Rpb24gYyhlKXtmb3IodmFyIHQsbixyPVtdLG89MCxpPWUubGVuZ3RoO288aTspdD1lLmNoYXJDb2RlQXQobysrKSx0Pj01NTI5NiYmdDw9NTYzMTkmJm88aT8obj1lLmNoYXJDb2RlQXQobysrKSw1NjMyMD09KDY0NTEyJm4pP3IucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZuKSs2NTUzNik6KHIucHVzaCh0KSxvLS0pKTpyLnB1c2godCk7cmV0dXJuIHJ9ZnVuY3Rpb24gdShlKXtyZXR1cm4gaShlLGZ1bmN0aW9uKGUpe3ZhciB0PSIiO3JldHVybiBlPjY1NTM1JiYoZS09NjU1MzYsdCs9SChlPj4+MTAmMTAyM3w1NTI5NiksZT01NjMyMHwxMDIzJmUpLHQrPUgoZSl9KS5qb2luKCIiKX1mdW5jdGlvbiBzKGUpe3JldHVybiBlLTQ4PDEwP2UtMjI6ZS02NTwyNj9lLTY1OmUtOTc8MjY/ZS05NzpFfWZ1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZSsyMis3NSooZTwyNiktKCgwIT10KTw8NSl9ZnVuY3Rpb24gZChlLHQsbil7dmFyIHI9MDtmb3IoZT1uP00oZS9SKTplPj4xLGUrPU0oZS90KTtlPk4qUz4+MTtyKz1FKWU9TShlL04pO3JldHVybiBNKHIrKE4rMSkqZS8oZStUKSl9ZnVuY3Rpb24gZihlKXt2YXIgdCxuLHIsaSxhLGMsbCxmLHAsaCxnPVtdLHY9ZS5sZW5ndGgsYj0wLF89Qyx3PUE7Zm9yKG49ZS5sYXN0SW5kZXhPZihQKSxuPDAmJihuPTApLHI9MDtyPG47KytyKWUuY2hhckNvZGVBdChyKT49MTI4JiZvKCJub3QtYmFzaWMiKSxnLnB1c2goZS5jaGFyQ29kZUF0KHIpKTtmb3IoaT1uPjA/bisxOjA7aTx2Oyl7Zm9yKGE9YixjPTEsbD1FO2k+PXYmJm8oImludmFsaWQtaW5wdXQiKSxmPXMoZS5jaGFyQ29kZUF0KGkrKykpLChmPj1FfHxmPk0oKHktYikvYykpJiZvKCJvdmVyZmxvdyIpLGIrPWYqYyxwPWw8PXc/TzpsPj13K1M/UzpsLXcsIShmPHApO2wrPUUpaD1FLXAsYz5NKHkvaCkmJm8oIm92ZXJmbG93IiksYyo9aDt0PWcubGVuZ3RoKzEsdz1kKGItYSx0LDA9PWEpLE0oYi90KT55LV8mJm8oIm92ZXJmbG93IiksXys9TShiL3QpLGIlPXQsZy5zcGxpY2UoYisrLDAsXyl9cmV0dXJuIHUoZyl9ZnVuY3Rpb24gcChlKXt2YXIgdCxuLHIsaSxhLHUscyxmLHAsaCxnLHYsYixfLHcsbT1bXTtmb3IoZT1jKGUpLHY9ZS5sZW5ndGgsdD1DLG49MCxhPUEsdT0wO3U8djsrK3UpKGc9ZVt1XSk8MTI4JiZtLnB1c2goSChnKSk7Zm9yKHI9aT1tLmxlbmd0aCxpJiZtLnB1c2goUCk7cjx2Oyl7Zm9yKHM9eSx1PTA7dTx2OysrdSkoZz1lW3VdKT49dCYmZzxzJiYocz1nKTtmb3IoYj1yKzEscy10Pk0oKHktbikvYikmJm8oIm92ZXJmbG93Iiksbis9KHMtdCkqYix0PXMsdT0wO3U8djsrK3UpaWYoZz1lW3VdLGc8dCYmKytuPnkmJm8oIm92ZXJmbG93IiksZz09dCl7Zm9yKGY9bixwPUU7aD1wPD1hP086cD49YStTP1M6cC1hLCEoZjxoKTtwKz1FKXc9Zi1oLF89RS1oLG0ucHVzaChIKGwoaCt3JV8sMCkpKSxmPU0ody9fKTttLnB1c2goSChsKGYsMCkpKSxhPWQobixiLHI9PWkpLG49MCwrK3J9KytuLCsrdH1yZXR1cm4gbS5qb2luKCIiKX1mdW5jdGlvbiBoKGUpe3JldHVybiBhKGUsZnVuY3Rpb24oZSl7cmV0dXJuIEwudGVzdChlKT9mKGUuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6ZX0pfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGEoZSxmdW5jdGlvbihlKXtyZXR1cm4gai50ZXN0KGUpPyJ4bi0tIitwKGUpOmV9KX12YXIgdj0ib2JqZWN0Ij09dHlwZW9mIG4mJm4mJiFuLm5vZGVUeXBlJiZuLGI9Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiYhdC5ub2RlVHlwZSYmdCxfPSJvYmplY3QiPT10eXBlb2YgZSYmZTtfLmdsb2JhbCE9PV8mJl8ud2luZG93IT09XyYmXy5zZWxmIT09X3x8KHI9Xyk7dmFyIHcsbSx5PTIxNDc0ODM2NDcsRT0zNixPPTEsUz0yNixUPTM4LFI9NzAwLEE9NzIsQz0xMjgsUD0iLSIsTD0vXnhuLS0vLGo9L1teXHgyMC1ceDdFXS8sST0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2cseD17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0sTj1FLU8sTT1NYXRoLmZsb29yLEg9U3RyaW5nLmZyb21DaGFyQ29kZTtpZih3PXt2ZXJzaW9uOiIxLjQuMSIsdWNzMjp7ZGVjb2RlOmMsZW5jb2RlOnV9LGRlY29kZTpmLGVuY29kZTpwLHRvQVNDSUk6Zyx0b1VuaWNvZGU6aH0sdiYmYilpZih0LmV4cG9ydHM9PXYpYi5leHBvcnRzPXc7ZWxzZSBmb3IobSBpbiB3KXcuaGFzT3duUHJvcGVydHkobSkmJih2W21dPXdbbV0pO2Vsc2Ugci5wdW55Y29kZT13fSh0aGlzKX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDMwOltmdW5jdGlvbihlLHQsbil7IWZ1bmN0aW9uKGUscil7Im9iamVjdCI9PXR5cGVvZiBuJiZ2b2lkIDAhPT10P3Iobik6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0scik6cihlLnVsb2c9ZS51bG9nfHx7fSl9KHRoaXMsZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShjb25zb2xlKTtbImFzc2VydCIsInRyYWNlIiwiZGVidWciLCJsb2ciLCJpbmZvIiwid2FybiIsImVycm9yIl0uZm9yRWFjaChmdW5jdGlvbihuKXtlW25dPXRbbl19KX1mdW5jdGlvbiBuKGUsbil7dmFyIHI9aVtuXTt2b2lkIDAhPT1yJiYodChlKSxyPjAmJihlLmFzc2VydD1mdW5jdGlvbigpe30pLHI+NSYmKGUudHJhY2U9ZnVuY3Rpb24oKXt9KSxyPjEwJiYoZS5kZWJ1Zz1mdW5jdGlvbigpe30pLHI+MjAmJihlLmxvZz1mdW5jdGlvbigpe30pLHI+MzAmJihlLmluZm89ZnVuY3Rpb24oKXt9KSxyPjQwJiYoZS53YXJuPWZ1bmN0aW9uKCl7fSkscj41MCYmKGUuZXJyb3I9ZnVuY3Rpb24oKXt9KSl9ZnVuY3Rpb24gcihlLHQpe3Q9dHx8e30sbihlLHQubGV2ZWx8fCJkZWJ1ZyIpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShjb25zb2xlKTtyZXR1cm4gcih0LGUpLHR9dmFyIGk9e2FsbDowLHRyYWNlOjUsZGVidWc6MTAsbG9nOjIwLGluZm86MzAsd2Fybjo0MCxlcnJvcjo1MCxub25lOjFlM30sYT1vKCk7ZS5MRVZFTFM9aSxlLnNldExldmVsPW4sZS5jb25maWd1cmU9cixlLmNyZWF0ZT1vLGUubG9nZ2VyPWEsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSl9LHt9XX0se30sWzIyXSk7"));</script> --> </body> </html>