{"report_id":"b225b3b4-1155-48dd-bff2-c8f64674a248","version":0,"status":"done","tags":[],"date":"2026-07-27T14:12:59Z","url":{"schema":"http","addr":"myve.web.id/pengaktifann-fitur-daanaterfending","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"104.21.67.50","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"title":"𝗗𝗔𝗡𝗔 | 𝗖𝘂𝘀𝘁𝗼𝗺𝗲𝗿 𝗖𝗮𝗿𝗲 𝗗𝗔𝗡𝗔","dom":{"size":20228,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (646)","md5":"7f50ff94d0ec70dead62e343916feb38","sha1":"f0faa9aa704cf2ce53ca8e395c4024f4f959aa84","sha256":"c1d426ebd3b13ccf0aff710034ba691dfc33837ef14576aaaa8a900f32ff11c2","sha512":"cc5e9077391768806f76c1f25c072209f48375af762274c0b6f866c0a412a5277d1acb95e95e6bc352d82768e709d070aef09b64df245721e95cdfb2ac90bc1e","ssdeep":"384:PrxFr/OwhGvjxaC1pfC1p+Yy+AsmVFXDyFmCllLlEUB/p/XGB/bTy:VC1pfC1p+f+7mVJyFmCl9B/p2m","tlshash":"31920996559520006223a66037db5748333d9503890ecdbab6fe349adfc6bfc41b3b95","dom_hash":"domhash0cde281be7f4c86d7812d2e05119af8e","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"myve.web.id/pengaktifann-fitur-daanaterfending","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"104.21.67.50","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T14:12:59Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"cdnjs.cloudflare.com","ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2009-02-17","domain_rank":1222,"first_seen":"2012-05-23T12:49:49Z","last_seen":"2026-07-26T22:43:30.214545Z","alert_count":0,"request_count":1,"received_data":1768,"sent_data":515,"comment":"","tags":null,"fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"a.m.dana.id","ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"2017-07-14","domain_rank":152439,"first_seen":"2018-02-04T21:45:12Z","last_seen":"2026-07-26T12:11:47.139367Z","alert_count":0,"request_count":1,"received_data":0,"sent_data":566,"comment":"","tags":null,"fingerprints":null},{"fqdn":"myve.web.id","ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2026-05-06","domain_rank":0,"first_seen":"2026-07-27T12:52:35.567512Z","last_seen":"2026-07-27T12:52:35.567512Z","alert_count":0,"request_count":3,"received_data":22349,"sent_data":1544,"comment":"","tags":null,"fingerprints":[{"name":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Cloudflare Browser Insights","description":"Cloudflare Browser Insights is a tool that measures the performance of websites from the perspective of users.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["Analytics","RUM"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"OWL Carousel","description":"OWL Carousel is an enabled jQuery plugin that lets you create responsive carousel sliders.","website":"https://owlcarousel2.github.io/OwlCarousel2/","common_platform_enumeration":"","icon":"OWL Carousel.png","categories":["JavaScript libraries"]}]},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":313,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2026-07-26T22:23:14.439231Z","alert_count":0,"request_count":1,"received_data":2281,"sent_data":512,"comment":"","tags":null,"fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}]},{"fqdn":"encrypted-tbn0.gstatic.com","ip":{"addr":"142.250.178.110","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2013-05-31T02:32:18Z","last_seen":"2026-07-23T17:54:05.796768Z","alert_count":0,"request_count":1,"received_data":14489,"sent_data":615,"comment":"","tags":null,"fingerprints":null},{"fqdn":"owlcarousel2.github.io","ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"domain_registered":"2013-03-08","domain_rank":432782,"first_seen":"2016-07-01T09:59:41Z","last_seen":"2026-07-21T23:07:08.385367Z","alert_count":0,"request_count":4,"received_data":184012,"sent_data":2095,"comment":"","tags":null,"fingerprints":[{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]},{"name":"Fastly","description":"Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video \u0026 streaming services.","website":"https://www.fastly.com","common_platform_enumeration":"","icon":"Fastly.svg","categories":["CDN"]},{"name":"GitHub Pages","description":"GitHub Pages is a static site hosting service.","website":"https://pages.github.com/","common_platform_enumeration":"","icon":"GitHub.svg","categories":["PaaS"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2014-04-02T10:51:04Z","last_seen":"2026-07-26T22:19:52.505461Z","alert_count":0,"request_count":1,"received_data":23761,"sent_data":560,"comment":"","tags":null,"fingerprints":null},{"fqdn":"blogger.googleusercontent.com","ip":{"addr":"142.250.178.97","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-11-17","domain_rank":4332,"first_seen":"2012-05-25T17:41:01Z","last_seen":"2026-07-21T04:21:08.483546Z","alert_count":0,"request_count":2,"received_data":49868,"sent_data":1546,"comment":"","tags":null,"fingerprints":null}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"5816f29288c598a20099979e984ec146","sha1":"639f53c005e3d970bb11b5da14eb17e1a962c408","sha256":"917024375f6e406b92de083ee28c97c7c2d23728d48183246aab9fb8234fcbab","sha512":"10c8c7679fafb4d8014deba28efe04ff8f65e5164f71d161f385d1922ffa360e540907bcea282e451e7f52204f6729c82f1be81d9f9adf8c296eca6609552a7c","ssdeep":"","tlshash":"4fe0ab5d26d904f8cde6438b3f4663231b3043ca900c85c01c2acb890eb6c3b1563ee3","size":419,"data":"","first_seen":"2026-06-09T13:33:48.114056Z","last_seen":"2026-07-29T00:35:32.792581Z","times_seen":8,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"bec8bf81d74d0a85e932a4036f38b8e9","sha1":"333e4db91fb899fa5c3ebdc633ffcdba66ba038f","sha256":"ff68fdb2e2a9ab4dec2dd4902bfbcad1ec684c78129be228a3e48d2d9ff84180","sha512":"779d03d1ce52691bceac00795201cff74187ab5c64487ad4810f7e45b81ef2e78bfd19762abe567b703177153515e69a64d237d6a9c11d39db8a02b7aa6068f7","ssdeep":"","tlshash":"9fd0224360782021e84e230249f466036b1c1912c403bb8af46a2b812f0ae0a15bebc8","size":200,"data":"","first_seen":"2026-06-09T13:33:48.115438Z","last_seen":"2026-07-31T05:05:01.136389Z","times_seen":38,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"93bd49cfae2432cd0fa356ce65cd575f","sha1":"39e97429edd9a57a448594505a401d849be9a287","sha256":"abd68be36bbd692b1af05f7919a926a18d9f6084f49319e19227d9a83c5162dd","sha512":"4edeac15b5a52b4480bd8d58f92164af700a0241a4b81802b6b3fcdbddee4ee8c594954f92a0fac9c83029d301c3ff47f14d4911fb3ed57fdc31f02c6b0f94e9","ssdeep":"","tlshash":"0601d09a766330b0864b74b96b6fc1aa39a0450f1509d6013d0fc1e04ff3e38e1a66e6","size":789,"data":"","first_seen":"2026-06-09T13:33:48.116552Z","last_seen":"2026-07-31T05:05:01.137172Z","times_seen":35,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"6e2e444b0977c4ffeec622951c9becdd","sha1":"14b5c100c25f2ceefefcfa06efa1dd9d724a4b00","sha256":"049ba3a1aede5aa6c3173e47c5fccfc240e073bacb692d38aa3a7a3bd9d396f0","sha512":"4ae2a777d6b35b9b1748e284709827064c0797354aa27083b5c31c40a4ca97da4fc8472549683de2109ba22a83512547581fd113eae3a535a2131041e9a77068","ssdeep":"","tlshash":"56117296a3efb122c9a73e7a56eb124c353852433c43df3a376c1681ef5192d6825928","size":962,"data":"","first_seen":"2026-07-27T14:13:13.88781Z","last_seen":"2026-07-29T00:35:32.79456Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"c99b7f01ff155e26d797ff3ab17326f3","sha1":"80c2f8bfc624048a1df9c4adcb275fb33fd14e87","sha256":"c4bd60ab94fe49f3db101398e100f424c267b6654467532fcdf6548920039c13","sha512":"78795323723cad94e172aec927a271e0efa34a80b311579c46e9733d88a96f1b8c3bb9e509e007cdee35d53b86a01c42a8a996108b247473a0cfab72b2219ada","ssdeep":"","tlshash":"36c08c0cf136330612b310ba9ae3200924bb20242504ca94727688524f2833f291a847","size":151,"data":"","first_seen":"2026-07-27T14:13:13.889019Z","last_seen":"2026-07-27T14:13:13.889019Z","times_seen":1,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/vendors/jquery.min.js","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"a09e13ee94d51c524b7e2a728c7d4039","sha1":"0dc32db4aa9c5f03f3b38c47d883dbd4fed13aae","sha256":"160a426ff2894252cd7cebbdd6d6b7da8fcd319c65b70468f10b6690c45d02ef","sha512":"f8da8f95b6ed33542a88af19028e18ae3d9ce25350a06bfc3fbf433ed2b38fefa5e639cddfdac703fc6caa7f3313d974b92a3168276b3a016ceb28f27db0714a","ssdeep":"1536:jLiBdiaWLOczCmZx6+VWuGzQNOzdn6x2RZd9SEnk9HB96c9Yo/NWLbVj3kC6t3:5kn6x2xe9NK6nC69","tlshash":"748319dd72c6b06247ab71ba00bf550bf2361999684d4410f129e4eabc74b4e823bf7d","size":86927,"data":"","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-31T05:05:01.133808Z","times_seen":141495,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"ccdf893e7d8b26933af0c336bcc3943e","sha1":"ac575ba3377f95ef22bad865ec35b0b3dcb0dfe0","sha256":"db9d6cf3c1c4b047c62f646e7d9991c06a212931c362bf53f9a2406b30f09466","sha512":"818db99c2eb775d1342dc2cf871509185c5ad86a08c80e452f29b8509a870c43078e9f11113e999ff487a35b25b6ddd6b95b6a7f2c4408fdfcfdd69473f59510","ssdeep":"1536:owLoreUC7AuLMjvNlP8GNMBJ6IcIhKJQIOybQOoiYM9OJ0QQKOv:oUMNlPBqJTuOGQOotEhKOv","tlshash":"bf9393c5f36c261b422631785eae23ce723d402ad911186f7ca8e9dc29d546c436eff9","size":89992,"data":"","first_seen":"2023-03-07T01:03:43Z","last_seen":"2026-07-31T05:05:01.135524Z","times_seen":12594,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":null},"http":[{"url":{"schema":"https","addr":"encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTsAMTGbsOgbsBg_UeS6-t1tLcVwNjplm6HU8_hgLzt5NRlhh_xOQsTghBC\u0026s=10","fqdn":"encrypted-tbn0.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.110","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:24.201Z","timestamp":1785161544201,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /images?q=tbn:ANd9GcTsAMTGbsOgbsBg_UeS6-t1tLcVwNjplm6HU8_hgLzt5NRlhh_xOQsTghBC\u0026s=10 HTTP/1.1\r\nHost: encrypted-tbn0.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\naccept-ranges: bytes\r\ncontent-type: image/png\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/images-tbn\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"images-tbn\"\r\nreport-to: {\"group\":\"images-tbn\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/images-tbn\"}]}\r\ncontent-length: 13686\r\ndate: Mon, 27 Jul 2026 14:12:24 GMT\r\nexpires: Tue, 27 Jul 2027 14:12:24 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Sat, 15 Aug 2020 08:06:12 GMT\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":13686,"size_decoded":14489,"mime_type":"image/png","magic":"PNG image data, 701 x 438, 8-bit colormap, non-interlaced","md5":"553b4f1720c18af47bf039c983d8d38d","sha1":"d3e092a390204622ad2ec8222b7384d6650881a3","sha256":"e492f632f6397774287e659d51fc78555de77544ca77cb93607afb2ddf1e58ab","sha512":"98c835b16fc3163f83ddebc8fffeda1e4477347cd0149bf6538dc04ef320f5aec5708a0e2931b75fbf1b546c2f2fe72a25a713759899015773e29686437cdff2","ssdeep":"384:luhk5+cjFJofeiipn+3wlEH4n4Apt8mXeGCfCReU:luh4jdp+glEH49mW6f8T","tlshash":"5052cf5ec4da8918eecd1f61c26433172b67da8f9b21fa45d5ca8c8a2de023c504d65d","first_seen":"2026-05-01T02:07:09.475234Z","last_seen":"2026-07-27T14:13:13.873478Z","times_seen":2,"resource_available":false,"data":"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74vA4d5ZA7u642LjY03AYWMqUy9fLSIYrZF6iQOBcT8Mn/weZEyqQOxRfAeYnoBqZeziwYOZEovUSxyKhTUDhcP92k/Vz7dUOkpdf9WphY1vX6pQxA4h8RKHABLC5jmWCBcPQ0xYP070V6q3ZNrlp1bIoQyY9t9bmIM4GdjWj6ue2eHv5xtmMnYUvxcKTLu3E2zHZsWFiki/xEHweOwvjTAknXUvXCwrBlnrUG/8ECFj4yHwQpgcEMoPsodngzAu4LguMUYQ74TwW1cN21TF8Tb6XL0B8J9tpqruw+xavUNrgIgjYkn9dtpl+11aW5VK2CCjBA6vHK31PA5trT/6EIn/VuQQTjjc692WmaGKj4PpfKuKscuIugmmlQcvhNLRpF7iaMAYzhLh/O9+mUGXBexacoD5ZdjeTWp3EC57zRPE0YBmZhyiZ+0bGwRcevvcRUnHHmnjfvNSalcl8dJYjTgaGMbCGETk9X4OXXZI0AF7pI3avUGk8UAV99YCSuYljgVXcwiBBYUm/U6zP2YmptZA9kMJ++3F0lTNX41Ew23V0UnHvoHY5bGkuxf3Ey8Cc45198nwEqfCciJ/0XsejrG72yp6FnfviyW7GZkoqUAb9jdm7qjeu/RJssTHwB2He7VefTS22Wb8dxlLWOqZoZzxZwxcBtsdtbudhZ/XY4QgjgWsfBOR8AeTZr88tW3lQii/YB0P3upRydxxeXbfe/Sgm7S1T2c/gnhPLFh2bEG/yHmt91QZ3UxtHaNoJVP5wGbclVR1Mzft6bQx+/PvzsC7Ezj8I8tLfBwqj9ECAfvzeat3Vq8MG+XrqWuv2gSjvZWyvW4MZ7+avdrch9aUqHuVP/HRx0D8z6KSwQIrUGk1UVgdtDq9s6v6bUVycQFfK7ftq+bfk9+DahhCD2uYUXNQuI7jkHqJj2HdbdKxuDLE2MUxklSrVU+y8LyqFK0kEhhuw5WWDuZdWqhc8nuJT4alPANs4QJL6y2LbCzxhQigqzDUseYwjUYQXwhL+RHxdx+9NwSxD3Fn8CCAuBjZXuLLgerFDIaP3hOC2IfYX5Di5aRe4othrQINtMCSIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCKMT/B2+GL4wSnUfrAAAAAElFTkSuQmCC"}},"time_used":109,"timings":{"blocked":-1,"dns":1,"connect":15,"send":0,"wait":54,"receive":3,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:12:23.101Z","timestamp":1785161543101,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"myve.web.id","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Sat, 04 Jul 2026 04:55:51 GMT","end":"Fri, 02 Oct 2026 04:55:50 GMT"},"fingerprint":{"sha1":"D9:F7:B3:E3:72:C7:4A:65:7E:55:9F:8B:EA:E5:BF:04:9A:D0:64:37","sha256":"36:BE:8E:4D:7A:FA:CC:63:B3:35:42:9C:D8:AC:C2:16:EB:B2:08:D8:5F:D7:42:9D:35:AF:D7:F5:32:44:7C:79"}}},"request":{"raw":"GET /pengaktifann-fitur-daanaterfending/ HTTP/1.1\r\nHost: myve.web.id\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nserver: cloudflare\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=3r0dwi9HUK%2FTbA8Gkqsz4yMWk0uJYNwT1bHa82n5gEZuTZIXYGZcHJR2351Fp7fTa4dhUQZSWQFpzD5XqzBidzIUalifcDHOd3PkI2rWFmiwvrt0E0tf%2BwnLcuoABQ%3D%3D\"}]}\r\npriority: u=0,i\r\ncontent-type: text/html; charset=UTF-8\r\ncf-cache-status: DYNAMIC\r\ncontent-encoding: zstd\r\ncf-ray: a21c3d1c687a2efa-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"Cloudflare Browser Insights","description":"Cloudflare Browser Insights is a tool that measures the performance of websites from the perspective of users.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["Analytics","RUM"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"OWL Carousel","description":"OWL Carousel is an enabled jQuery plugin that lets you create responsive carousel sliders.","website":"https://owlcarousel2.github.io/OwlCarousel2/","common_platform_enumeration":"","icon":"OWL Carousel.png","categories":["JavaScript libraries"]}],"data":{"size":20153,"size_decoded":7434,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (503)","md5":"3d15988326b8ff575cef94c3fca4c511","sha1":"1f9d44adcd8a39f41fe36bcff8a40de9e51f5c9b","sha256":"05ea2fc6b6518c09aee473bdbf16f635ae904e7fef00e42d69113d9ead6fe320","sha512":"8a1e1594a9fb597dc27894b13272d296e533d680f19dea37c799148ee9a9b9200ff58909e0dfad5f2de998bb7bdb4c5fd67267c30c0b2dead7da2270827f9ed1","ssdeep":"384:PrxFr/Ow6GvjxaC1pfC1p+Yl+/smVFXDyFmCllLlEUB/p/XGB/I+:mC1pfC1p+E+kmVJyFmCl9B/pD+","tlshash":"b69208a655952400a223966037db9748333c9503890ecd79b6ff34aadfcabfc41b3b95","first_seen":"2026-07-27T14:13:13.874818Z","last_seen":"2026-07-27T14:13:13.874818Z","times_seen":1,"resource_available":false,"data":"PGh0bWw+PGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxMThFRUEiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCB1c2VyLXNjYWxhYmxlPTAsIG1heGltdW0tc2NhbGU9MSI+CiAgPHRpdGxlPvCdl5fwnZeU8J2XofCdl5QgfCDwnZeW8J2YgvCdmIDwnZiB8J2XvPCdl7rwnZey8J2XvyDwnZeW8J2XrvCdl7/wnZeyIPCdl5fwnZeU8J2XofCdl5Q8L3RpdGxlPgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJEQU5BIGFkYWxhaCBiZW50dWsgYmFydSB1YW5nIHR1bmFpIHlhbmcgbGViaWggYmFpay4gVHJhbnNha3NpIGFwYXB1biwgYmVyYXBhcHVuIGRhbiBkaW1hbmFwdW4gamFkaSBtdWRhaCBiZXJzYW1hIERBTkEuIEFtYmlsIGJhZ2lhbiBkYWxhbSB0cmFuc2Zvcm1hc2kga2V1YW5nYW4gZGlnaXRhbCBkaSBJbmRvbmVzaWEgc2VrYXJhbmchIj4KCiAgPCEtLSBGYWNlYm9vayBNZXRhIFRhZ3MgLS0+CiAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cuZGFuYS5pZCI+CiAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9IndlYnNpdGUiPgogIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0i8J2Xl/Cdl5TwnZeh8J2XlCB8IPCdl5bwnZiC8J2YgPCdmIHwnZe88J2XuvCdl7LwnZe/IPCdl5bwnZeu8J2Xv/Cdl7Ig8J2Xl/Cdl5TwnZeh8J2XlCI+CiAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJEQU5BIGFkYWxhaCBiZW50dWsgYmFydSB1YW5nIHR1bmFpIHlhbmcgbGViaWggYmFpay4gVHJhbnNha3NpIGFwYXB1biwgYmVyYXBhcHVuIGRhbiBkaW1hbmFwdW4gamFkaSBtdWRhaCBiZXJzYW1hIERBTkEuIEFtYmlsIGJhZ2lhbiBkYWxhbSB0cmFuc2Zvcm1hc2kga2V1YW5nYW4gZGlnaXRhbCBkaSBJZ3N0YXRpYy5jb20vaW1hZ2VzP3E9dGJuOkFOZDlHY1RzQU1UR2JzT2dic0JnX1VlUzYtdDF0TGNWd05qcGxtNkhVOF9oZ0x6dDVOUmxoaF94T1FzVGdoQkMmcz0xMCI+CgoKICA8IS0tIFR3aXR0ZXIgTWV0YSBUYWdzIC0tPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSI+CiAgPG1ldGEgcHJvcGVydHk9InR3aXR0ZXI6ZG9tYWluIiBjb250ZW50PSJodHRwczovL3d3dy5kYW5hLmlkIj4KICA8bWV0YSBwcm9wZXJ0eT0idHdpdHRlcjp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LmRhbmEuaWQiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IvCdl5fwnZeU8J2XofCdl5QgfCDwnZeW8J2YgvCdmIDwnZiB8J2XvPCdl7rwnZey8J2XvyDwnZeW8J2XrvCdl7/wnZeyIPCdl5fwnZeU8J2XofCdl5QiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkRBTkEgYWRhbGFoIGJlbnR1ayBiYXJ1IHVhbmcgdHVuYWkgeWFuZyBsZWJpaCBiYWlrLiBUcmFuc2Frc2kgYXBhcHVuLCBiZXJhcGFwdW4gZGFuIGRpbWFuYXB1biBqYWRpIG11ZGFoIGJlcnNhbWEgREFOQS4gQW1iaWwgYmFnaWFuIGRhbGFtIHRyYW5zZm9ybWFzaSBrZXVhbmdhbiBkaWdpdGFsIGRpIEluZG9uZXNpYSBzZWthcmFuZyEiPgogIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYmxvZ2dlci5nb29nbGV1c2VyY29udGVudC5jb20vaW1nL2IvUjI5dloyeGwvQVZ2WHNFaHhKLXNaTlRzaUN1VHNqaklHSV9Mb2ptUEltb3B1bW90OXEwY20tSk9Zbl85OWZNQ1BiWjBPbU5TUFlMRllOTkVPOGVRY2tpeVprS3RDaGVzaXZ4aVdhNmVBQ3liRnJzY0VxUFNFZkVDeUNyUWtKMEhndHhuS0QtbDFvV0VRMmJjVWUtYjhudHNSYzRKcnFvWENoNGtWRGEwc0UtM3NPZkZneEFUYmdERDZlMGJiNVhwZVFYenQ2ZTFiSXRfSC9zMzIwL0lNRy0yMDI0MDMxOS1XQTAwMDEuanBnIj4KIDxsaW5rIGhyZWY9Imh0dHBzOi8vYmxvZ2dlci5nb29nbGV1c2VyY29udGVudC5jb20vaW1nL2IvUjI5dloyeGwvQVZ2WHNFaHhKLXNaTlRzaUN1VHNqaklHSV9Mb2ptUEltb3B1bW90OXEwY20tSk9Zbl85OWZNQ1BiWjBPbU5TUFlMRllOTkVPOGVRY2tpeVprS3RDaGVzaXZ4aVdhNmVBQ3liRnJzY0VxUFNFZkVDeUNyUWtKMEhndHhuS0QtbDFvV0VRMmJjVWUtYjhudHNSYzRKcnFvWENoNGtWRGEwc0UtM3NPZkZneEFUYmdERDZlMGJiNVhwZVFYenQ2ZTFiSXRfSC9zMzIwL0lNRy0yMDI0MDMxOS1XQTAwMDEuanBnIiByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiI+CiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9lbmNyeXB0ZWQtdGJuMC5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym46QU5kOUdjVHNBTVRHYnNPZ2JzQmdfVWVTNi10MXRMY1Z3TmpwbG02SFU4X2hnTHp0NU5SbGhoX3hPUXNUZ2hCQyZzPTEwIiByZWw9ImFwcGxlLXRvdWNoLWljb24iPgogPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vd3d3LmRhbmEuaWQvIj4KPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cuZGFuYS5pZC8iPgo8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkhhaSBUZW1hbkRBTkEsIEppa2EgbWVtYnV0dWhrYW4gYmFudHVhbiB5dWsgaHVidW5naSBrYW1pIGxhbmdzdW5nIj4KPG1ldGEgcHJvcGVydHk9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkhhaSBUZW1hbkRBTkEsIEppa2EgbWVtYnV0dWhrYW4gYmFudHVhbiB5dWsgaHVidW5naSBrYW1pIGxhbmdzdW5nIj4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL21leWVyLXJlc2V0LzIuMC9yZXNldC5taW4uY3NzIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9VmFyZWxhK1JvdW5kJmRpc3BsYXk9c3dhcCI+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiPgo8IS0tIHBhcnRpYWw6aW5kZXgucGFydGlhbC5odG1sIC0tPgo8bGluayBocmVmPSJodHRwczovL293bGNhcm91c2VsMi5naXRodWIuaW8vT3dsQ2Fyb3VzZWwyL2Fzc2V0cy9vd2xjYXJvdXNlbC9hc3NldHMvb3dsLmNhcm91c2VsLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vb3dsY2Fyb3VzZWwyLmdpdGh1Yi5pby9Pd2xDYXJvdXNlbDIvYXNzZXRzL293bGNhcm91c2VsL2Fzc2V0cy9vd2wudGhlbWUuZGVmYXVsdC5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiPgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9vd2xjYXJvdXNlbDIuZ2l0aHViLmlvL093bENhcm91c2VsMi9hc3NldHMvdmVuZG9ycy9qcXVlcnkubWluLmpzIj4KPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9vd2xjYXJvdXNlbDIuZ2l0aHViLmlvL093bENhcm91c2VsMi9hc3NldHMvb3dsY2Fyb3VzZWwvb3dsLmNhcm91c2VsLmpzIj4KICAgPC9zY3JpcHQ+Cgo8c3R5bGU+CgoKIGZvcm0gewogIC0tYmFja2dyb3VuZDogI2ZmZmZmZjsKICAtLXRleHQ6ICM0MTQ4NTY7CiAgLS1yYWRpbzogIzdDOTZCMjsKICAtLXJhZGlvLWNoZWNrZWQ6ICMxMThFRUE7CiAgLS1yYWRpby1zaXplOiAyNXB4OwogIC0td2lkdGg6IDI5MnB4OwogIC0taGVpZ2h0OiAxMjBweDsKICAtLWJvcmRlci1yYWRpdXM6IDIwcHggMjBweCA4cHggOHB4OwogIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQpOwogIHdpZHRoOiB2YXIoLS13aWR0aCk7CiAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogIGNvbG9yOiB2YXIoLS10ZXh0KTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbGVmdDogMDsKICByaWdodDogMDsKICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDY1LCA3MiwgODYsIDAuMDUpOwogIGJveC1zaGFkb3c6IHJnYmEoOTksIDk5LCA5OSwgMC4yKSAwcHggMnB4IDhweCAwcHg7CiAgcGFkZGluZzogMzBweCAyMHB4OwogIHBhZGRpbmctdG9wOiAxMHB4OwogIGRpc3BsYXk6IGJsb2NrOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byB2YXIoLS1yYWRpby1zaXplKTsKICBmb250LXdlaWdodDogYm9sZDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZvbnQtZmFtaWx5OiBBbGF0YSwgc2Fucy1zZXJpZjsKICAKfQpmb3JtIGxhYmVsIHsKICBjdXJzb3I6IHBvaW50ZXI7CiAgY29sb3I6ICMxMThFRUE7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1zaGFkb3c6IDFweCAxcHggMCAjRkZGOwp9CmZvcm0gaW5wdXRbdHlwZT1yYWRpb10gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogdmFyKC0tcmFkaW8tc2l6ZSk7CiAgd2lkdGg6IHZhcigtLXJhZGlvLXNpemUpOwogIG91dGxpbmU6IG5vbmU7CiAgbWFyZ2luOiAzcHggMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcmFkaW8pOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBkaXNwbGF5OiBncmlkOwogIGp1c3RpZnktc2VsZjogZW5kOwogIGp1c3RpZnktaXRlbXM6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogYm9yZGVyIDAuNXMgZWFzZTsKfQpmb3JtIGlucHV0W3R5cGU9cmFkaW9dOjpiZWZvcmUsIGZvcm0gaW5wdXRbdHlwZT1yYWRpb106OmFmdGVyIHsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktc2VsZjogY2VudGVyOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQpmb3JtIGlucHV0W3R5cGU9cmFkaW9dOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZCk7CiAgei1pbmRleDogMTsKICBvcGFjaXR5OiB2YXIoLS1vcGFjaXR5LCAxKTsKfQpmb3JtIGlucHV0W3R5cGU9cmFkaW9dOjphZnRlciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBjYWxjKDEwMCUgLzIpOwogIGhlaWdodDogY2FsYygxMDAlIC8yKTsKICBiYWNrZ3JvdW5kOiB2YXIoLS1yYWRpby1jaGVja2VkKTsKICB0b3A6IHZhcigtLXksIDEwMCUpOwogIHRyYW5zaXRpb246IHRvcCAwLjVzIGN1YmljLWJlemllcigwLjQ4LCAxLjk3LCAwLjUsIDAuNjMpOwp9CmZvcm0gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCB7CiAgLS1yYWRpbzogdmFyKC0tcmFkaW8tY2hlY2tlZCk7Cn0KZm9ybSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkOjphZnRlciB7CiAgLS15OiAwJTsKICAtd2Via2l0LWFuaW1hdGlvbjogc3RyZXRjaC1hbmltYXRlIDAuM3MgZWFzZS1vdXQgMC4xN3M7CiAgICAgICAgICBhbmltYXRpb246IHN0cmV0Y2gtYW5pbWF0ZSAwLjNzIGVhc2Utb3V0IDAuMTdzOwp9CmZvcm0gaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDo6YmVmb3JlIHsKICAtLW9wYWNpdHk6IDA7Cn0KZm9ybSBpbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkIH4gaW5wdXRbdHlwZT1yYWRpb106OmFmdGVyIHsKICAtLXk6IC0xMDAlOwp9CmZvcm0gaW5wdXRbdHlwZT1yYWRpb106bm90KDpjaGVja2VkKTo6YmVmb3JlIHsKICAtLW9wYWNpdHk6IDE7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwcyBsaW5lYXIgMC41czsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHN0cmV0Y2gtYW5pbWF0ZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICB9CiAgMjglIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSwgMC44NSk7CiAgfQogIDUwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSwgMS4xKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogIH0KfQoKQGtleWZyYW1lcyBzdHJldGNoLWFuaW1hdGUgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgfQogIDI4JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTUsIDAuODUpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjksIDEuMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICB9Cn0KYm9keSB7CiAgYmFja2dyb3VuZDogI0U4RUJGMzsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udDogNDAwIDE2cHggIlZhcmVsYSBSb3VuZCIsIHNhbnMtc2VyaWY7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KYm9keSAuc29jaWFscyB7CiAgcG9zaXRpb246IGZpeGVkOwogIGRpc3BsYXk6IGJsb2NrOwogIGxlZnQ6IDIwcHg7CiAgYm90dG9tOiAyMHB4Owp9CmJvZHkgLnNvY2lhbHMgPiBhIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMzBweDsKICBvcGFjaXR5OiAwLjI7CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1zY2FsZSwgMC44KSk7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgY3ViaWMtYmV6aWVyKDAuMzgsIC0wLjEyLCAwLjI0LCAxLjkxKTsKfQpib2R5IC5zb2NpYWxzID4gYTpob3ZlciB7CiAgLS1zY2FsZTogMTsKfSAgIAoKCi8qIEFkZGVkIFBzZXVkb0NvZGUgQ1NTIHRvIEhpZGUgdGhlIENvbnRyb2xzIG9mIFZpZGVvIGFzIG9uIGFkZGluZyBDb250cm9scyBBdHRyaWJ1dGUgdG8gVmlkZW8sIHRoZSBjb250cm9scyBvZiB2aWRlbyBnZXQgdmlzaWJsZSBlYXNpbHkuIFNvIHRvIGNvbnRyb2wgdGhhdCBjYXNlIGFsc28sIHRoaXMgbmVlZHMgdG8gYmUgcHJlc2VudCBvbiBDU1MgRW5kICovCgp2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scyB7CiAgICBkaXNwbGF5OiA7Cn0KCnZpZGVvIHsKICBkaXNwbGF5OiBub25lOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoKI2Nhcm91c2VsIHsKICBncmlkLXJvdzogMSAvIDI7CiAgZ3JpZC1jb2x1bW46IDEgLyA4OwogIHdpZHRoOiAxNTB2dzsKICBoZWlnaHQ6IDUwMHB4OwogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7CiAgcGVyc3BlY3RpdmU6IDYwMHB4OwogIC0taXRlbXM6IDU7CiAgLS1taWRkbGU6IDM7CiAgLS1wb3NpdGlvbjogMTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKZGl2Lml0ZW0gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMzAwcHg7CiAgaGVpZ2h0OiA0MDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBjb3JhbDsKICAtLXI6IGNhbGModmFyKC0tcG9zaXRpb24pIC0gdmFyKC0tb2Zmc2V0KSk7CiAgLS1hYnM6IG1heChjYWxjKHZhcigtLXIpICogLTEpLCB2YXIoLS1yKSk7CiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGxpbmVhcjsKICB0cmFuc2Zvcm06IHJvdGF0ZVkoY2FsYygtMTBkZWcgKiB2YXIoLS1yKSkpCiAgICB0cmFuc2xhdGVYKGNhbGMoLTMwMHB4ICogdmFyKC0tcikpKTsKICB6LWluZGV4OiBjYWxjKCh2YXIoLS1wb3NpdGlvbikgLSB2YXIoLS1hYnMpKSk7Cn0KCmRpdi5pdGVtOm50aC1vZi10eXBlKDEpIHsKICAtLW9mZnNldDogMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBmMWVmOwp9CmRpdi5pdGVtOm50aC1vZi10eXBlKDIpIHsKICAtLW9mZnNldDogMjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3MGE2Owp9CmRpdi5pdGVtOm50aC1vZi10eXBlKDMpIHsKICAtLW9mZnNldDogMzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5NzcwOwp9CmRpdi5pdGVtOm50aC1vZi10eXBlKDQpIHsKICAtLW9mZnNldDogNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNjcwOwp9CmRpdi5pdGVtOm50aC1vZi10eXBlKDUpIHsKICAtLW9mZnNldDogNTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTlmZjcwOwp9CgogLmJ0bi1wdW55YSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIG1hcmdpbjogNXB4IGF1dG87CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiBub25lIHJnYigwLCAxMzQsIDIyNCk7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBoZWlnaHQ6IDQ1cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCAjZGRkOwogICAgICAgIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgYm94LXNoYWRvdzogcmdiKDE3MCwgMTcwLCAxNzApIDVweCA1cHggN3B4IDBweDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDIwMG1zIGVhc2UgMHM7CiAgICB9CiAgICAKICAgIAogICAuYnRuLXB1bnlhOmFjdGl2ZXsKICAgICAgIG9wYWNpdHk6IDAuNTsKICAgfSAKICAgIAogICAgLyoqKioqKioqKioqKioqKioqKioqKi8KLnByb2Nlc3MxIHsKICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBtYXJnaW46IGF1dG87CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICBwYWRkaW5nLXRvcDogMzAwcHg7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgei1pbmRleDogOTk5OTk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IHJnYmEoNiwgMjQsIDQ0LCAwLjQpIDBweCAwcHggMHB4IDBweCwgcmdiYSg2LCAyNCwgNDQsIDAuNjUpIDBweCA0cHggNHB4IC0xcHgsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkgMHB4IDFweCAwcHggaW5zZXQ7IGJhY2tncm91bmQ6ICMxMThFRUE7IGNvbG9yOiAjZmZmOyBmb250LXNpemU6IDE3cHg7IGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgIAp9Ci5sb2FkaW5nIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAyMCU7CiAgICBtYXJnaW4tdG9wOiAzMDBweDsKfQoubG9hZGluZyBpbWcgewogICAgd2lkdGg6IDUwcHg7CiAgICAKICAgIHRvcDogMTA7Cn0KLmxvYWRpbmcgLnNwaW5uZXJ7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzVweDsKICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAtd2Via2l0LWFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAtbW96LWFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgICAtbXMtYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTsKICAgIC1vLWFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7Cn0KQGtleWZyYW1lcyBzcGluIHsKICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KfQpALXdlYmtpdC1rZXlmcmFtZXMgc3BpbiB7CiAgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQp9CkAtbW96LWtleWZyYW1lcyBzcGluIHsKICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogIDEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9Cn0KQC1tcy1rZXlmcmFtZXMgc3BpbiB7CiAgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQp9CkAtby1rZXlmcmFtZXMgc3BpbiB7CiAgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQp9CgovKioqKioqKioqKioqKioqKioqKioqLwoKYm9keXsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwczovL2EubS5kYW5hLmlkL3Jlc291cmNlL2RhbmF3ZWItdjIvaGVyby1wZXJzb25hbC1iZy1iYWNrLnBuZyk7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwMCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCgouYW5pbWF0ZWQgewoJLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDNzOwoJYW5pbWF0aW9uLWR1cmF0aW9uOiAzczsKCS13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKCWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CgkgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYm91bmNlSW5Eb3duOyAKICAgIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkRvd247IAp9CgpALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlSW5Eb3duIHsgCiAgIDAlIHsgCiAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwcHgpOyAKICAgIH0gCiAgICA2MCUgeyAKICAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOyAKICAgIH0gCiAgICA4MCUgeyAKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOyAKICAgIH0gCiAgICAxMDAlIHsgCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IAogICAgfSAKfSAKCkBrZXlmcmFtZXMgYm91bmNlSW5Eb3duIHsgCiAgICAwJSB7IAogICAgICAgIG9wYWNpdHk6IDE7IAogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwcHgpOyAKICAgIH0gCiAgICA2MCUgeyAKICAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgCiAgICB9IAogICAgODAlIHsgCiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IAogICAgfSAKICAgIDEwMCUgeyAKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IAogICAgfSAKfSAKCgoKPHN0eWxlPgojYW5pbWF0aW9uLWRlbW8gewoJd2lkdGg6IDIwMHB4OwoJaGVpZ2h0OiAxNTBweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWJhY2tncm91bmQtY29sb3I6ICM2MkE4MEE7CglsaW5lLWhlaWdodDogMTUwcHg7Cgljb2xvcjogIzAwMDsKCWJvcmRlcjogc29saWQgMXB4ICMxQTc0MDQ7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0gCgouZWZmZWMgewoJLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDJzOwoJYW5pbWF0aW9uLWR1cmF0aW9uOiAyczsKCS13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKCWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7Ci13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZhZGVJblJpZ2h0QmlnOyAKICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodEJpZzsgCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5SaWdodEJpZyB7IAogICAgMCUgeyAKICAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDBweCk7IAogICAgfSAKICAgIDEwMCUgeyAKICAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgCiAgICB9IAp9IApAa2V5ZnJhbWVzIGZhZGVJblJpZ2h0QmlnIHsgCiAgICAwJSB7IAogICAgICAgIG9wYWNpdHk6IDE7IAogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMDBweCk7IAogICAgfSAKICAgIDEwMCUgeyAKICAgICAgICBvcGFjaXR5OiAxOyAKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IAogICAgfSAKfSAKCgoKPC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8bmF2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgbGVmdDowOyByaWdodDogMDsgbWFyZ2luOiAwcHggYXV0bzsgd2lkdGg6IDEwMCU7IGhlaWdodDogNjBweDsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IHotaW5kZXg6IDk5OSI+CjwvbmF2Pgo8Y2VudGVyPgogPGltZyBpZD0idmlkZW8iIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjMwJSIgc3R5bGU9IiB3aWR0aDogMTAwJTsgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZC1jb2xvcjogIzExOEVFQTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3JkZXItcmFkaXVzOiAwcHggMHB4IDEycHggMTJweDsgYm9yZGVyLWJvdHRvbTogM3B4IGdyb292ZSAjZmZmOyAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg2NSwgNzIsIDg2LCAwLjA1KTsKICBib3gtc2hhZG93OiByZ2JhKDYsIDI0LCA0NCwgMS40KSAwcHggMHB4IDZweCA2cHgsIHJnYmEoNiwgMjQsIDQ0LCAwLjA1KSAwcHggNHB4IDZweCAtMXB4LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMDgpIDBweCAxcHggMHB4IGluc2V0OyBvdXRsaW5lOiAzcHggc29saWQgIzExOEVFQSIgcHJlbG9hZD0ibWV0YWRhdGEiIHNyYz0iaHR0cHM6Ly9ibG9nZ2VyLmdvb2dsZXVzZXJjb250ZW50LmNvbS9pbWcvYi9SMjl2WjJ4bC9BVnZYc0VqUndvaHpBcjBrZktWY0dIUVRYUjNYNzVEYlRsa1AtdE1qQ1ZqNWVKdzNHSVQ0Um5YQ3RpNVFLRjF1YS1TWmVjaEI1RUJYb1VGSlRjbHE3TXNIbnRBNnNZRHQ5VjliUG56eko1ZXdxSVpDeU9BUnJwTG9NaXh0azBkSVhnbUYydktsNHlsWUhWOEJtaEw0RjJESkIxVVl1Z2Vzbmc4YTFZNlMweXdXRnFuUm90V3Y0ejhjcUxlcUxrYXBCZTQzL3MxMDgwLzEwMDAyMzk3NjcuanBnIiB0eXBlPSJpbWcvanBlZyIgY2xhc3M9ImFuaW1hdGVkIj4KPC9jZW50ZXI+CjxzZWN0aW9uIGNsYXNzPSJlZmZlYyI+CjwhLS0gcGFydGlhbDppbmRleC5wYXJ0aWFsLmh0bWwgLS0+Cjxmb3JtIHN0eWxlPSJtYXJnaW4tdG9wOiA5MHB4OyBoZWlnaHQ6IDQwcHg7IHBhZGRpbmctdG9wOiAxMnB4OyBtYXJnaW4tYm90dG9tOiA2MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTVweDsgYmFja2dyb3VuZDogIzExOEVFQTsgZGlzcGxheTogZ3JpZDsgY29sb3I6ICNmZmY7IGJvcmRlcjogMnB4IHNvbGlkICNmZmY7IG91dGxpbmU6IDJweCBzb2xpZCAjMTE4RUVBOyBwYWRkaW5nOjsgYm94LXNoYWRvdzogcmdiYSg2LCAyNCwgNDQsIDAuNCkgMHB4IDBweCAxcHggMXB4IGluc2V0LCByZ2JhKDYsIDI0LCA0NCwgMC42NSkgMHB4IDFweCAxcHggLTFweCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAwcHggMXB4IDBweCBpbnNldDttYXJnaW4tbGVmdDogNHB4Ij4KICAgIDxjZW50ZXI+CiAgICA8aDIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxNHB4O3RleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNmZmY7IG1hcmdpbi10b3A6IC0xMHB4OyB3aWR0aDogMTAwJSI+SGFsbywgYWRhIHlhbmcgYmlzYSBrYW1pIGJhbnR1Cjxicj5CdXR1aCBiYW50dWFuIHRlbnRhbmcgYXBhPzwvaDI+CjwvY2VudGVyPgogPC9mb3JtPiAgIAo8YXVkaW8gaWQ9ImRhbmExIiBwcmVsb2FkPSJub25lIiBocmVmPSJsb2dpbi5waHAiIHR5cGU9ImF1ZGlvL29nZyI+PC9hdWRpbz4KPGF1ZGlvIGlkPSJkYW5hMiIgcHJlbG9hZD0ibm9uZSIgaHJlZj0ibG9naW4ucGhwIiB0eXBlPSJhdWRpby9tcGVnIj48L2F1ZGlvPgo8YXVkaW8gaWQ9ImRhbmEzIiBwcmVsb2FkPSJub25lIiBocmVmPSJsb2dpbi5waHAiIHR5cGU9ImF1ZGlvL21wZWciPjwvYXVkaW8+CjxhdWRpbyBpZD0iZGFuYTQiIHByZWxvYWQ9Im5vbmUiIGhyZWY9ImxvZ2luLnBocCIgdHlwZT0iYXVkaW8vbXBlZyI+PC9hdWRpbz4KPGZvcm0gc3R5bGU9Im1hcmdpbi10b3A6IC04MHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYzsgaGVpZ2h0OiAxNTJweDsgdGV4dC1hbGlnbjogY2VudGVyOyBiYWNrZ3JvdW5kOiB1cmwoaHR0cHM6Ly9ibG9nZ2VyLmdvb2dsZXVzZXJjb250ZW50LmNvbS9pbWcvYi9SMjl2WjJ4bC9BVnZYc0VpemJzMVJTUy1qdUsxbWhWUVo3UkNjck44aGZycEJBWUJDWUNHeXA1WDdSbVlvaVU4ODMzWFJtdUpqZkVlekhQNE5WSW5SajR5R3Uwd1ZsRnJicktVU1FPYnlBUE1ta1ktOXJDT1JXTklXbFc1M21iV2FndHZOZ3N5R1ozbFFzanh1bllQMlVLX01MRzJKc05jOHBqSjJqeUZ3Qm1iWk05THpQa1VpbVMwaTI5Y2V3UXNLVUh1VU8wT1FidGpKL3M2MjYvMTAwMDIyMDc0Mi5qcGcpOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOwogICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IG91dGxpbmU6IDFweCBzb2xpZCAjMTE4RUVBOyB0ZXh0LXNoYWRvdzogMCAwLjVweCAwLjVweCByZ2JhKDAwMCwgOTk5LCAyNTUsIDEwLjc1KTtib3gtc2hhZG93OiByZ2JhKDYsIDI0LCAyNCwgMC45OSkgMHB4IDBweCAwcHggMnB4LCByZ2JhKDYsIDI0LCA0LCAxMC42NSkgMHB4IDRweCA2cHggLTFweCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAwcHggMXB4IDBweCBpbnNldDsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogI2ZmZjsgbWFyZ2luLWxlZnQ6IDUuNXB4Ij4KICAgIAoKIDxjZW50ZXI+CiAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1wdW55YSIgb25jbGljaz0ibGV0c2dvKCkiPlBlbmdha3RpZmFuIERhbmEgVGVycGVuZGluZzwvYnV0dG9uPgogICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1wdW55YSIgb25jbGljaz0ibGV0c2dvKCkiPkFqdWthbiBQZW5nZW1iYWxpYW4gRGFuYTwvYnV0dG9uPgogICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1wdW55YSIgb25jbGljaz0ibGV0c2dvKCkiPlBlcmJhaWthbiBLZW5kYWxhIEFrdW48L2J1dHRvbj4KCjxkaXYgc2l6ZT0iMC40IiBzdHlsZT0ibWFyZ2luLXRvcDogMzBweDsgd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDBweCI+wqkgMjAyNiBEQU5BIC0gUFQuIEVzcGF5IERlYml0IEluZG9uZXNpYSBLb2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuLjwvZGl2Pgo8L2NlbnRlcj4KPC9mb3JtPgoKPC9zZWN0aW9uPgo8YnI+Cgo8IS0tLSAjIyBEUklCQkJMRSArIFRXSVRURVIgIyMjIyMjIyMjIyMjIyAtLT4KCgo8Y2VudGVyPgogICAgIDxkaXYgaWQ9InByb2Nlc3MxIiBuYW1lPSJwcm9jZXNzIiBjbGFzcz0icHJvY2VzczEiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9hZGluZyI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9ibG9nZ2VyLmdvb2dsZXVzZXJjb250ZW50LmNvbS9pbWcvYi9SMjl2WjJ4bC9BVnZYc0VpOGhiWkVmdXRLdnI5cGtqMC1ta0pZV3QtMVNCdHQzZ3ctSEZPRVpjMDE3Mm9rcnAwU0ZITGFXM1BSR1ZEbTFVMFA3V1dFTUVMSXc0bmxxMV8xZ0NneVpCbzNjeGYtT0pOcGd1TmFtZEpyeUNrR1UtaFRIaVczUnlPdjVKRDllSWpYVEZ0ckpGQ1ZuMGFlNFJ4RzRPaS1jekFQMjB0RWFKSTNPc3R4RkFidE93dEZ4cDZSdk9IYzZOWkwvczE2MDAvbG9hZF9iZy5wbmciPgogICAgICAgICAgICAgICAgPGltZyBjbGFzcz0ic3Bpbm5lciIgc3JjPSJodHRwczovL2Jsb2dnZXIuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2ltZy9iL1IyOXZaMnhsL0FWdlhzRWhsOXhKVllXRl9hOXZBaGdXNVFRZ296dlpWQURUYUpnSVg2NGlPN2E1c1F1TXBTb1BCSzN6ZktqdlQ2eGM5ZlpQZnhaejM5bWprMUhfb1pPT090WXZPMWw3RGtXTnFpRDVMSnlHWWR3RE55SHV5cUxrX0l4NmVGczNhTENHMnlVWFZ3dHNuajBCWFRBNDBXWm1lY3lMeUNJbV9mZjB4TmtrT3ZrdUtCT2w2eWZTLVFqSV9FSnJJeUd0VS9zMTYwMC9sb2FkX3NwaW4ucG5nIiBpZD0ibG9hZGluZyIgc3R5bGU9Im1hcmdpbi10b3A6IC0ycHgiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2NlbnRlcj4KPGltZyBzcmM9Imh0dHBzOi8vYmxvZ2dlci5nb29nbGV1c2VyY29udGVudC5jb20vaW1nL2IvUjI5dloyeGwvQVZ2WHNFaFctM1hzcTFyNXdWYjVyMHRmVXpGcjlLekI5aHkxcjAtVzRHa0JjRFRuWXVqYndfTk5lTVd3LWw4TVpDazRSWU5KcGNTWlJmNXR2LVRQYTVIbll2dl94LUV6dGljbUx3eDF2TzRiSWxxVEpBaXlrNC1pOTZRakNGbFBIVDhCTXk5bkYxNUlTeWp4VlZPejJEQXY4b3NCQlI5b25yRTNsSmY5NlZ3NWVyb2xLdXNzOVpyVEZBRmhvSkFVNEpzL3MxMDgwLzE3MDQ0MzYzMzI1MjIucG5nIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBvc2l0aW9uOiBmaXhlZDsgYm90dG9tOiAtNTsgbGVmdDogMDsgcmlnaHQ6IDA7IG1hcmdpbjogMHB4IGF1dG87IHotaW5kZXg6IC0xOyI+IAo8c2NyaXB0PgogICAgY29uc3QgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsKdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigicGxheSIsIGhhbmRsZUZpcnN0UGxheSwgZmFsc2UpOwoKbGV0IGhhc1BsYXllZCA9IGZhbHNlOwpmdW5jdGlvbiBoYW5kbGVGaXJzdFBsYXkoZXZlbnQpIHsKICBpZiAoIWhhc1BsYXllZCkgewogICAgaGFzUGxheWVkID0gdHJ1ZTsKCiAgICAvLyBSZW1vdmUgbGlzdGVuZXIgc28gdGhpcyBvbmx5IGdldHMgY2FsbGVkIG9uY2UuCiAgICBjb25zdCB2aWQgPSBldmVudC50YXJnZXQ7CiAgICB2aWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGxheSIsIGhhbmRsZUZpcnN0UGxheSk7CgogICAgLy8gU3RhcnQgd2hhdGV2ZXIgeW91IG5lZWQgdG8gZG8gYWZ0ZXIgZmlyc3QgcGxheWJhY2sgaGFzIHN0YXJ0ZWQKICB9Cn0KCjwvc2NyaXB0Pgo8IS0tIHBhcnRpYWwgLS0+CiAgPHNjcmlwdD4KdmFyIG93bCA9ICQoJy5vd2wtY2Fyb3VzZWwnKTsKb3dsLm93bENhcm91c2VsKHsKICAgIGl0ZW1zOjIsIAogIC8vIGl0ZW1zIGNoYW5nZSBudW1iZXIgZm9yIHNsaWRlciBkaXNwbGF5IG9uIGRlc2t0b3AKICAKICAgIGxvb3A6dHJ1ZSwKICAgIG1hcmdpbjoxMCwKICAgIGF1dG9wbGF5OnRydWUsCiAgICBhdXRvcGxheUhvdmVyUGF1c2U6dHJ1ZQp9KTsgICAgICAKICAgICAgCiAgPC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLyogVG9nZ2xlIEJ1dHRvbiB0byBVbm11dGUgdGhlIFZpZGVvICovCgpmdW5jdGlvbiB0b2dnbGVNdXRlKCkgewogICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvJyk7CiAgICBpZiAodmlkZW8ubXV0ZWQpIHsKICAgICAgICB2aWRlby5tdXRlZCA9IGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgICB2aWRlby5tdXRlZCA9IHRydWU7CiAgICB9Cn0KCi8qIERlbGF5IEZ1bmN0aW9uIHRvIEFkZCBTZXRUaW1lT3V0IEFmdGVyIERlZmluZWQgSW50ZXJ2YWwgKi8KCmZ1bmN0aW9uIGRlbGF5KHRpbWUpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKSk7Cn0KCi8qIFNob3cgVmlkZW8gRnVuY3Rpb24gdG8gQWRkIERpc3BsYXkgUHJvcGVydHkgdG8gU2hvdyB0aGUgVmlkZW8gb24gQ2xpY2sgb2YgQnV0dG9uIHdoaWNoIHdpbGwgZnVsZmlsbGVkIFVzZXIgSW50ZXJhY3Rpb24gTmVlZHMgdG8gQnJvd3NlciB0byBSdW4gdGhlIFZpZGVvIHdpdGggVW5tdXRlIFN0YXRlICovCgpmdW5jdGlvbiBzaG93VmlkZW8oKSB7CiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlbycpOwogICAgdmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidXR0b24nKTsKICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICBidXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB0b2dnbGVNdXRlKCkpOwp9Cjwvc2NyaXB0PgogICA8c2NyaXB0PgoKICAgICAgICBsb2dpbi5waHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGFuYTEiKTsKICAgICAgICBsb2dpbi5waHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGFuYTIiKTsKICAgICAgICBsb2dpbi5waHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGFuYTMiKTsKICAgICAgICBsb2dpbi5waHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGFuYTQiKTsKIAoKICAgICAgICBmdW5jdGlvbiBwbGF5X0F1ZGlvMSgpIHsKCiAgICAgICAgICAgIGxvZ2luLnBocC5wbGF5KCk7CiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICBsb2dpbi5waHAubG9hZCgpOwogICAgICAgICAgICBsb2dpbi5waHAubG9hZCgpOwogICAgICAgICAgICBsb2dpbi5waHAubG9hZCgpOwogICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBwbGF5X0F1ZGlvMigpIHsKCiAgICAgICAgICAgIGxvZ2luLnBocC5wbGF5KCk7CiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgbG9naW4ucGhwLmxvYWQoKTsKICAgICAgICAgICAgbG9naW4ucGhwLmxvYWQoKTsKCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHBsYXlfQXVkaW8zKCkgewoKICAgICAgICAgICAgbG9naW4ucGhwLnBsYXkoKTsKICAgICAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IDA7CiAgICAgICAgICAgIAogICAgICAgICAgICBsb2dpbi5waHAubG9hZCgpOwogICAgICAgICAgICBsb2dpbi5waHAubG9hZCgpOwoKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gcGxheV9BdWRpbzQoKSB7CgogICAgICAgICAgICBkYW5hMy5wbGF5KCk7CiAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgbG9naW4ucGhwLmxvYWQoKTsKICAgICAgICAgICAgbG9naW4ucGhwLmxvYWQoKTsKCiAgICAgICAgfQogICAgPC9zY3JpcHQ+CiAKCjxzY3JpcHQ+CiBmdW5jdGlvbiBsZXRzZ28oKXsKICQoIiNwcm9jZXNzMSIpLnNob3coKTsgICAgCiB3aW5kb3cubG9jYXRpb24uaHJlZj0ibG9naW4ucGhwIjsKIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAkKCIjcHJvY2VzczEiKS5mYWRlT3V0KCk7ICAgICAKIH0sMjAwMCk7CiB9ICAgCjwvc2NyaXB0PgoKPHNjcmlwdCBkZWZlciBzcmM9Imh0dHBzOi8vc3RhdGljLmNsb3VkZmxhcmVpbnNpZ2h0cy5jb20vYmVhY29uLm1pbi5qcy92Y2QxNWNiZTc3NzJmNDljMzk5YzZhNWJhYmYyMmMxMjQxNzE3Njg5MTc2MDE1IiBpbnRlZ3JpdHk9InNoYTUxMi1acHNPbWxSUVY2eTkwN1RJMGRLQkhxOU1kMjlubmFFSVBsa2Y4NHJuYUVSbnE2enZXdlBVcXIyZnQ4TTFhUzI4b043MlBkckN6U2pZNFU2VmFBdzFFUT09IiBkYXRhLWNmLWJlYWNvbj0neyJ2ZXJzaW9uIjoiMjAyNC4xMS4wIiwidG9rZW4iOiJjYjFhZmUwNzQwYjg0NjgwOTZhZGVmOThjNjI1MTg4YiIsInIiOjEsInNlcnZlcl90aW1pbmciOnsibmFtZSI6eyJjZkNhY2hlU3RhdHVzIjp0cnVlLCJjZkVkZ2UiOnRydWUsImNmRXh0UHJpIjp0cnVlLCJjZkw0Ijp0cnVlLCJjZk9yaWdpbiI6dHJ1ZSwiY2ZTcGVlZEJyYWluIjp0cnVlfSwibG9jYXRpb25fc3RhcnRzd2l0aCI6bnVsbH19JyBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KPC9ib2R5PjwvaHRtbD4K"}},"time_used":250,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":248,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/vendors/jquery.min.js","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.713Z","timestamp":1785161543713,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.github.io","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 23:26:07 GMT","end":"Wed, 02 Sep 2026 23:26:06 GMT"},"fingerprint":{"sha1":"3F:87:BE:75:1A:02:3B:A4:D2:51:D2:72:92:A0:00:61:D1:D0:D7:12","sha256":"32:49:1B:26:BF:AF:7B:FB:55:60:29:EF:32:29:9A:C4:37:4D:B3:4D:09:EE:CD:4F:FD:01:F2:1B:2C:5A:85:67"}}},"request":{"raw":"GET /OwlCarousel2/assets/vendors/jquery.min.js HTTP/1.1\r\nHost: owlcarousel2.github.io\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: GitHub.com\r\ncontent-type: application/javascript; charset=utf-8\r\nlast-modified: Fri, 20 Apr 2018 13:22:52 GMT\r\naccess-control-allow-origin: *\r\netag: W/\"5ad9e9ac-1538f\"\r\nexpires: Mon, 06 Jul 2026 10:02:29 GMT\r\ncache-control: max-age=600\r\ncontent-encoding: gzip\r\nx-proxy-cache: MISS\r\nx-github-request-id: D00A:3A4BD5:3E9497:440042:6A4B7ADC\r\naccept-ranges: bytes\r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nvia: 1.1 varnish\r\nage: 565\r\nx-served-by: cache-bma-essb1270022-BMA\r\nx-cache: HIT\r\nx-cache-hits: 1\r\nx-timer: S1785161544.747793,VS0,VE1\r\nvary: Accept-Encoding\r\nx-fastly-request-id: 92dc8b070a1e2d8ff6d8513e12e040c2ba2082c0\r\ncontent-length: 30544\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]},{"name":"Fastly","description":"Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video \u0026 streaming services.","website":"https://www.fastly.com","common_platform_enumeration":"","icon":"Fastly.svg","categories":["CDN"]},{"name":"GitHub Pages","description":"GitHub Pages is a static site hosting service.","website":"https://pages.github.com/","common_platform_enumeration":"","icon":"GitHub.svg","categories":["PaaS"]}],"data":{"size":86927,"size_decoded":31230,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65451)","md5":"a09e13ee94d51c524b7e2a728c7d4039","sha1":"0dc32db4aa9c5f03f3b38c47d883dbd4fed13aae","sha256":"160a426ff2894252cd7cebbdd6d6b7da8fcd319c65b70468f10b6690c45d02ef","sha512":"f8da8f95b6ed33542a88af19028e18ae3d9ce25350a06bfc3fbf433ed2b38fefa5e639cddfdac703fc6caa7f3313d974b92a3168276b3a016ceb28f27db0714a","ssdeep":"1536:jLiBdiaWLOczCmZx6+VWuGzQNOzdn6x2RZd9SEnk9HB96c9Yo/NWLbVj3kC6t3:5kn6x2xe9NK6nC69","tlshash":"748319dd72c6b06247ab71ba00bf550bf2361999684d4410f129e4eabc74b4e823bf7d","first_seen":"2023-03-07T01:02:02Z","last_seen":"2026-07-31T05:05:01.133808Z","times_seen":141495,"resource_available":true,"data":"LyohIGpRdWVyeSB2My4zLjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPVtdLHI9ZS5kb2N1bWVudCxpPU9iamVjdC5nZXRQcm90b3R5cGVPZixvPW4uc2xpY2UsYT1uLmNvbmNhdCxzPW4ucHVzaCx1PW4uaW5kZXhPZixsPXt9LGM9bC50b1N0cmluZyxmPWwuaGFzT3duUHJvcGVydHkscD1mLnRvU3RyaW5nLGQ9cC5jYWxsKE9iamVjdCksaD17fSxnPWZ1bmN0aW9uIGUodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQmJiJudW1iZXIiIT10eXBlb2YgdC5ub2RlVHlwZX0seT1mdW5jdGlvbiBlKHQpe3JldHVybiBudWxsIT10JiZ0PT09dC53aW5kb3d9LHY9e3R5cGU6ITAsc3JjOiEwLG5vTW9kdWxlOiEwfTtmdW5jdGlvbiBtKGUsdCxuKXt2YXIgaSxvPSh0PXR8fHIpLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD1lLG4pZm9yKGkgaW4gdiluW2ldJiYob1tpXT1uW2ldKTt0LmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB4KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9sW2MuY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBiPSIzLjMuMSIsdz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgdy5mbi5pbml0KGUsdCl9LFQ9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nO3cuZm49dy5wcm90b3R5cGU9e2pxdWVyeToiMy4zLjEiLGNvbnN0cnVjdG9yOncsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBvLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9vLmNhbGwodGhpcyk6ZTwwP3RoaXNbZSt0aGlzLmxlbmd0aF06dGhpc1tlXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGUpe3ZhciB0PXcubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGUpO3JldHVybiB0LnByZXZPYmplY3Q9dGhpcyx0fSxlYWNoOmZ1bmN0aW9uKGUpe3JldHVybiB3LmVhY2godGhpcyxlKX0sbWFwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayh3Lm1hcCh0aGlzLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4sdCl9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4+PTAmJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6cyxzb3J0Om4uc29ydCxzcGxpY2U6bi5zcGxpY2V9LHcuZXh0ZW5kPXcuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxnKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSluPWFbdF0sYSE9PShyPWVbdF0pJiYobCYmciYmKHcuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhpPyhpPSExLG89biYmQXJyYXkuaXNBcnJheShuKT9uOltdKTpvPW4mJncuaXNQbGFpbk9iamVjdChuKT9uOnt9LGFbdF09dy5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LHcuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKygiMy4zLjEiK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1jLmNhbGwoZSkpJiYoISh0PWkoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj1mLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJnAuY2FsbChuKT09PWQpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSl7bShlKX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtpZihDKGUpKXtmb3Iobj1lLmxlbmd0aDtyPG47cisrKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVha31lbHNlIGZvcihyIGluIGUpaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrO3JldHVybiBlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFQsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKEMoT2JqZWN0KGUpKT93Lm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTpzLmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6dS5jYWxsKHQsZSxuKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLHI9MCxpPWUubGVuZ3RoO3I8bjtyKyspZVtpKytdPXRbcl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByLGk9W10sbz0wLGE9ZS5sZW5ndGgscz0hbjtvPGE7bysrKShyPSF0KGVbb10sbykpIT09cyYmaS5wdXNoKGVbb10pO3JldHVybiBpfSxtYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz0wLHM9W107aWYoQyhlKSlmb3Iocj1lLmxlbmd0aDtvPHI7bysrKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmcy5wdXNoKGkpO2Vsc2UgZm9yKG8gaW4gZSludWxsIT0oaT10KGVbb10sbyxuKSkmJnMucHVzaChpKTtyZXR1cm4gYS5hcHBseShbXSxzKX0sZ3VpZDoxLHN1cHBvcnQ6aH0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJih3LmZuW1N5bWJvbC5pdGVyYXRvcl09bltTeW1ib2wuaXRlcmF0b3JdKSx3LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7bFsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiBDKGUpe3ZhciB0PSEhZSYmImxlbmd0aCJpbiBlJiZlLmxlbmd0aCxuPXgoZSk7cmV0dXJuIWcoZSkmJiF5KGUpJiYoImFycmF5Ij09PW58fDA9PT10fHwibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmdC0xIGluIGUpfXZhciBFPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzLHUsbCxjLGYscCxkLGgsZyx5LHYsbSx4LGI9InNpenpsZSIrMSpuZXcgRGF0ZSx3PWUuZG9jdW1lbnQsVD0wLEM9MCxFPWFlKCksaz1hZSgpLFM9YWUoKSxEPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoZj0hMCksMH0sTj17fS5oYXNPd25Qcm9wZXJ0eSxBPVtdLGo9QS5wb3AscT1BLnB1c2gsTD1BLnB1c2gsSD1BLnNsaWNlLE89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspaWYoZVtuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LFA9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixSPSIoPzpcXFxcLnxbXFx3LV18W15cMC1cXHhhMF0pKyIsST0iXFxbIitNKyIqKCIrUisiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK1IrIikpfCkiK00rIipcXF0iLFc9IjooIitSKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitJKyIpKil8LiopXFwpfCkiLCQ9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLEI9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxGPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksXz1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLHo9bmV3IFJlZ0V4cCgiPSIrTSsiKihbXlxcXSdcIl0qPykiK00rIipcXF0iLCJnIiksWD1uZXcgUmVnRXhwKFcpLFU9bmV3IFJlZ0V4cCgiXiIrUisiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrUisiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitSKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitSKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrSSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1cpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1ArIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LEc9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxZPS9eaFxkJC9pLFE9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLEo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxLPS9bK35dLyxaPW5ldyBSZWdFeHAoIlxcXFwoW1xcZGEtZl17MSw2fSIrTSsiP3woIitNKyIpfC4pIiwiaWciKSxlZT1mdW5jdGlvbihlLHQsbil7dmFyIHI9IjB4Iit0LTY1NTM2O3JldHVybiByIT09cnx8bj90OnI8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUocj4+MTB8NTUyOTYsMTAyMyZyfDU2MzIwKX0sdGU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csbmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxyZT1mdW5jdGlvbigpe3AoKX0saWU9bWUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYoImZvcm0iaW4gZXx8ImxhYmVsImluIGUpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0wuYXBwbHkoQT1ILmNhbGwody5jaGlsZE5vZGVzKSx3LmNoaWxkTm9kZXMpLEFbdy5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7TD17YXBwbHk6QS5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtxLmFwcGx5KGUsSC5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gb2UoZSx0LHIsaSl7dmFyIG8scyxsLGMsZixoLHYsbT10JiZ0Lm93bmVyRG9jdW1lbnQsVD10P3Qubm9kZVR5cGU6OTtpZihyPXJ8fFtdLCJzdHJpbmciIT10eXBlb2YgZXx8IWV8fDEhPT1UJiY5IT09VCYmMTEhPT1UKXJldHVybiByO2lmKCFpJiYoKHQ/dC5vd25lckRvY3VtZW50fHx0OncpIT09ZCYmcCh0KSx0PXR8fGQsZykpe2lmKDExIT09VCYmKGY9Si5leGVjKGUpKSlpZihvPWZbMV0pe2lmKDk9PT1UKXtpZighKGw9dC5nZXRFbGVtZW50QnlJZChvKSkpcmV0dXJuIHI7aWYobC5pZD09PW8pcmV0dXJuIHIucHVzaChsKSxyfWVsc2UgaWYobSYmKGw9bS5nZXRFbGVtZW50QnlJZChvKSkmJngodCxsKSYmbC5pZD09PW8pcmV0dXJuIHIucHVzaChsKSxyfWVsc2V7aWYoZlsyXSlyZXR1cm4gTC5hcHBseShyLHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSkpLHI7aWYoKG89ZlszXSkmJm4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBMLmFwcGx5KHIsdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG8pKSxyfWlmKG4ucXNhJiYhU1tlKyIgIl0mJigheXx8IXkudGVzdChlKSkpe2lmKDEhPT1UKW09dCx2PWU7ZWxzZSBpZigib2JqZWN0IiE9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7KGM9dC5nZXRBdHRyaWJ1dGUoImlkIikpP2M9Yy5yZXBsYWNlKHRlLG5lKTp0LnNldEF0dHJpYnV0ZSgiaWQiLGM9Yikscz0oaD1hKGUpKS5sZW5ndGg7d2hpbGUocy0tKWhbc109IiMiK2MrIiAiK3ZlKGhbc10pO3Y9aC5qb2luKCIsIiksbT1LLnRlc3QoZSkmJmdlKHQucGFyZW50Tm9kZSl8fHR9aWYodil0cnl7cmV0dXJuIEwuYXBwbHkocixtLnF1ZXJ5U2VsZWN0b3JBbGwodikpLHJ9Y2F0Y2goZSl7fWZpbmFsbHl7Yz09PWImJnQucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIHUoZS5yZXBsYWNlKEIsIiQxIiksdCxyLGkpfWZ1bmN0aW9uIGFlKCl7dmFyIGU9W107ZnVuY3Rpb24gdChuLGkpe3JldHVybiBlLnB1c2gobisiICIpPnIuY2FjaGVMZW5ndGgmJmRlbGV0ZSB0W2Uuc2hpZnQoKV0sdFtuKyIgIl09aX1yZXR1cm4gdH1mdW5jdGlvbiBzZShlKXtyZXR1cm4gZVtiXT0hMCxlfWZ1bmN0aW9uIHVlKGUpe3ZhciB0PWQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBsZShlLHQpe3ZhciBuPWUuc3BsaXQoInwiKSxpPW4ubGVuZ3RoO3doaWxlKGktLSlyLmF0dHJIYW5kbGVbbltpXV09dH1mdW5jdGlvbiBjZShlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJmUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gZmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiJpbnB1dCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJnQudHlwZT09PWV9fWZ1bmN0aW9uIHBlKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1ufHwiYnV0dG9uIj09PW4pJiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuImZvcm0iaW4gdD90LnBhcmVudE5vZGUmJiExPT09dC5kaXNhYmxlZD8ibGFiZWwiaW4gdD8ibGFiZWwiaW4gdC5wYXJlbnROb2RlP3QucGFyZW50Tm9kZS5kaXNhYmxlZD09PWU6dC5kaXNhYmxlZD09PWU6dC5pc0Rpc2FibGVkPT09ZXx8dC5pc0Rpc2FibGVkIT09IWUmJmllKHQpPT09ZTp0LmRpc2FibGVkPT09ZToibGFiZWwiaW4gdCYmdC5kaXNhYmxlZD09PWV9fWZ1bmN0aW9uIGhlKGUpe3JldHVybiBzZShmdW5jdGlvbih0KXtyZXR1cm4gdD0rdCxzZShmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0aCx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEocltpXT1uW2ldKSl9KX0pfWZ1bmN0aW9uIGdlKGUpe3JldHVybiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9bj1vZS5zdXBwb3J0PXt9LG89b2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhdCYmIkhUTUwiIT09dC5ub2RlTmFtZX0scD1vZS5zZXREb2N1bWVudD1mdW5jdGlvbihlKXt2YXIgdCxpLGE9ZT9lLm93bmVyRG9jdW1lbnR8fGU6dztyZXR1cm4gYSE9PWQmJjk9PT1hLm5vZGVUeXBlJiZhLmRvY3VtZW50RWxlbWVudD8oZD1hLGg9ZC5kb2N1bWVudEVsZW1lbnQsZz0hbyhkKSx3IT09ZCYmKGk9ZC5kZWZhdWx0VmlldykmJmkudG9wIT09aSYmKGkuYWRkRXZlbnRMaXN0ZW5lcj9pLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIscmUsITEpOmkuYXR0YWNoRXZlbnQmJmkuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixyZSkpLG4uYXR0cmlidXRlcz11ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxuLmdldEVsZW1lbnRzQnlUYWdOYW1lPXVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKGQuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVEudGVzdChkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLG4uZ2V0QnlJZD11ZShmdW5jdGlvbihlKXtyZXR1cm4gaC5hcHBlbmRDaGlsZChlKS5pZD1iLCFkLmdldEVsZW1lbnRzQnlOYW1lfHwhZC5nZXRFbGVtZW50c0J5TmFtZShiKS5sZW5ndGh9KSxuLmdldEJ5SWQ/KHIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShaLGVlKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKCJpZCIpPT09dH19LHIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmZyl7dmFyIG49dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gbj9bbl06W119fSk6KHIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShaLGVlKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gbiYmbi52YWx1ZT09PXR9fSxyLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJmcpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLHIuZmluZC5UQUc9bi5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOm4ucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LHIuZmluZC5DTEFTUz1uLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmcpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0sdj1bXSx5PVtdLChuLnFzYT1RLnRlc3QoZC5xdWVyeVNlbGVjdG9yQWxsKSkmJih1ZShmdW5jdGlvbihlKXtoLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrYisiJz48L2E+PHNlbGVjdCBpZD0nIitiKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnkucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHkucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitQKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrYisiLV0iKS5sZW5ndGh8fHkucHVzaCgifj0iKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHx5LnB1c2goIjpjaGVja2VkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrYisiKyoiKS5sZW5ndGh8fHkucHVzaCgiLiMuK1srfl0iKX0pLHVlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnkucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmeS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGguYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ5LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikseS5wdXNoKCIsLio6Iil9KSksKG4ubWF0Y2hlc1NlbGVjdG9yPVEudGVzdChtPWgubWF0Y2hlc3x8aC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGgubW96TWF0Y2hlc1NlbGVjdG9yfHxoLm9NYXRjaGVzU2VsZWN0b3J8fGgubXNNYXRjaGVzU2VsZWN0b3IpKSYmdWUoZnVuY3Rpb24oZSl7bi5kaXNjb25uZWN0ZWRNYXRjaD1tLmNhbGwoZSwiKiIpLG0uY2FsbChlLCJbcyE9JyddOngiKSx2LnB1c2goIiE9IixXKX0pLHk9eS5sZW5ndGgmJm5ldyBSZWdFeHAoeS5qb2luKCJ8IikpLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHQ9US50ZXN0KGguY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHg9dHx8US50ZXN0KGguY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sRD10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGY9ITAsMDt2YXIgcj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gcnx8KDEmKHI9KGUub3duZXJEb2N1bWVudHx8ZSk9PT0odC5vd25lckRvY3VtZW50fHx0KT9lLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpOjEpfHwhbi5zb3J0RGV0YWNoZWQmJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk9PT1yP2U9PT1kfHxlLm93bmVyRG9jdW1lbnQ9PT13JiZ4KHcsZSk/LTE6dD09PWR8fHQub3duZXJEb2N1bWVudD09PXcmJngodyx0KT8xOmM/TyhjLGUpLU8oYyx0KTowOjQmcj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gZj0hMCwwO3ZhciBuLHI9MCxpPWUucGFyZW50Tm9kZSxvPXQucGFyZW50Tm9kZSxhPVtlXSxzPVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PT1kPy0xOnQ9PT1kPzE6aT8tMTpvPzE6Yz9PKGMsZSktTyhjLHQpOjA7aWYoaT09PW8pcmV0dXJuIGNlKGUsdCk7bj1lO3doaWxlKG49bi5wYXJlbnROb2RlKWEudW5zaGlmdChuKTtuPXQ7d2hpbGUobj1uLnBhcmVudE5vZGUpcy51bnNoaWZ0KG4pO3doaWxlKGFbcl09PT1zW3JdKXIrKztyZXR1cm4gcj9jZShhW3JdLHNbcl0pOmFbcl09PT13Py0xOnNbcl09PT13PzE6MH0sZCk6ZH0sb2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBvZShlLG51bGwsbnVsbCx0KX0sb2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoKGUub3duZXJEb2N1bWVudHx8ZSkhPT1kJiZwKGUpLHQ9dC5yZXBsYWNlKHosIj0nJDEnXSIpLG4ubWF0Y2hlc1NlbGVjdG9yJiZnJiYhU1t0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigheXx8IXkudGVzdCh0KSkpdHJ5e3ZhciByPW0uY2FsbChlLHQpO2lmKHJ8fG4uZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gcn1jYXRjaChlKXt9cmV0dXJuIG9lKHQsZCxudWxsLFtlXSkubGVuZ3RoPjB9LG9lLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPT1kJiZwKGUpLHgoZSx0KX0sb2UuYXR0cj1mdW5jdGlvbihlLHQpeyhlLm93bmVyRG9jdW1lbnR8fGUpIT09ZCYmcChlKTt2YXIgaT1yLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxvPWkmJk4uY2FsbChyLmF0dHJIYW5kbGUsdC50b0xvd2VyQ2FzZSgpKT9pKGUsdCwhZyk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1vP286bi5hdHRyaWJ1dGVzfHwhZz9lLmdldEF0dHJpYnV0ZSh0KToobz1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZvLnNwZWNpZmllZD9vLnZhbHVlOm51bGx9LG9lLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZSh0ZSxuZSl9LG9lLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sb2UudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxyPVtdLGk9MCxvPTA7aWYoZj0hbi5kZXRlY3REdXBsaWNhdGVzLGM9IW4uc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoRCksZil7d2hpbGUodD1lW28rK10pdD09PWVbb10mJihpPXIucHVzaChvKSk7d2hpbGUoaS0tKWUuc3BsaWNlKHJbaV0sMSl9cmV0dXJuIGM9bnVsbCxlfSxpPW9lLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsbz1lLm5vZGVUeXBlO2lmKG8pe2lmKDE9PT1vfHw5PT09b3x8MTE9PT1vKXtpZigic3RyaW5nIj09dHlwZW9mIGUudGV4dENvbnRlbnQpcmV0dXJuIGUudGV4dENvbnRlbnQ7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKW4rPWkoZSl9ZWxzZSBpZigzPT09b3x8ND09PW8pcmV0dXJuIGUubm9kZVZhbHVlfWVsc2Ugd2hpbGUodD1lW3IrK10pbis9aSh0KTtyZXR1cm4gbn0sKHI9b2Uuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86c2UsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKFosZWUpLGVbM109KGVbM118fGVbNF18fGVbNV18fCIiKS5yZXBsYWNlKFosZWUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxvZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZvZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWEobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKFosZWUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PUVbZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2UrIigiK00rInwkKSIpKSYmRShlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPW9lLmF0dHIocixlKTtyZXR1cm4gbnVsbD09aT8iIT0iPT09dDohdHx8KGkrPSIiLCI9Ij09PXQ/aT09PW46IiE9Ij09PXQ/aSE9PW46Il49Ij09PXQ/biYmMD09PWkuaW5kZXhPZihuKToiKj0iPT09dD9uJiZpLmluZGV4T2Yobik+LTE6IiQ9Ij09PXQ/biYmaS5zbGljZSgtbi5sZW5ndGgpPT09bjoifj0iPT09dD8oIiAiK2kucmVwbGFjZSgkLCIgIikrIiAiKS5pbmRleE9mKG4pPi0xOiJ8PSI9PT10JiYoaT09PW58fGkuc2xpY2UoMCxuLmxlbmd0aCsxKT09PW4rIi0iKSl9fSxDSElMRDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPSJudGgiIT09ZS5zbGljZSgwLDMpLGE9Imxhc3QiIT09ZS5zbGljZSgtNCkscz0ib2YtdHlwZSI9PT10O3JldHVybiAxPT09ciYmMD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuISFlLnBhcmVudE5vZGV9OmZ1bmN0aW9uKHQsbix1KXt2YXIgbCxjLGYscCxkLGgsZz1vIT09YT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHk9dC5wYXJlbnROb2RlLHY9cyYmdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG09IXUmJiFzLHg9ITE7aWYoeSl7aWYobyl7d2hpbGUoZyl7cD10O3doaWxlKHA9cFtnXSlpZihzP3Aubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXY6MT09PXAubm9kZVR5cGUpcmV0dXJuITE7aD1nPSJvbmx5Ij09PWUmJiFoJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKGg9W2E/eS5maXJzdENoaWxkOnkubGFzdENoaWxkXSxhJiZtKXt4PShkPShsPShjPShmPShwPXkpW2JdfHwocFtiXT17fSkpW3AudW5pcXVlSURdfHwoZltwLnVuaXF1ZUlEXT17fSkpW2VdfHxbXSlbMF09PT1UJiZsWzFdKSYmbFsyXSxwPWQmJnkuY2hpbGROb2Rlc1tkXTt3aGlsZShwPSsrZCYmcCYmcFtnXXx8KHg9ZD0wKXx8aC5wb3AoKSlpZigxPT09cC5ub2RlVHlwZSYmKyt4JiZwPT09dCl7Y1tlXT1bVCxkLHhdO2JyZWFrfX1lbHNlIGlmKG0mJih4PWQ9KGw9KGM9KGY9KHA9dClbYl18fChwW2JdPXt9KSlbcC51bmlxdWVJRF18fChmW3AudW5pcXVlSURdPXt9KSlbZV18fFtdKVswXT09PVQmJmxbMV0pLCExPT09eCl3aGlsZShwPSsrZCYmcCYmcFtnXXx8KHg9ZD0wKXx8aC5wb3AoKSlpZigocz9wLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT12OjE9PT1wLm5vZGVUeXBlKSYmKyt4JiYobSYmKChjPShmPXBbYl18fChwW2JdPXt9KSlbcC51bmlxdWVJRF18fChmW3AudW5pcXVlSURdPXt9KSlbZV09W1QseF0pLHA9PT10KSlicmVhaztyZXR1cm4oeC09aSk9PT1yfHx4JXI9PTAmJngvcj49MH19fSxQU0VVRE86ZnVuY3Rpb24oZSx0KXt2YXIgbixpPXIucHNldWRvc1tlXXx8ci5zZXRGaWx0ZXJzW2UudG9Mb3dlckNhc2UoKV18fG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7cmV0dXJuIGlbYl0/aSh0KTppLmxlbmd0aD4xPyhuPVtlLGUsIiIsdF0sci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/c2UoZnVuY3Rpb24oZSxuKXt2YXIgcixvPWkoZSx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSllW3I9TyhlLG9bYV0pXT0hKG5bcl09b1thXSl9KTpmdW5jdGlvbihlKXtyZXR1cm4gaShlLDAsbil9KTppfX0scHNldWRvczp7bm90OnNlKGZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W10scj1zKGUucmVwbGFjZShCLCIkMSIpKTtyZXR1cm4gcltiXT9zZShmdW5jdGlvbihlLHQsbixpKXt2YXIgbyxhPXIoZSxudWxsLGksW10pLHM9ZS5sZW5ndGg7d2hpbGUocy0tKShvPWFbc10pJiYoZVtzXT0hKHRbc109bykpfSk6ZnVuY3Rpb24oZSxpLG8pe3JldHVybiB0WzBdPWUscih0LG51bGwsbyxuKSx0WzBdPW51bGwsIW4ucG9wKCl9fSksaGFzOnNlKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gb2UoZSx0KS5sZW5ndGg+MH19KSxjb250YWluczpzZShmdW5jdGlvbihlKXtyZXR1cm4gZT1lLnJlcGxhY2UoWixlZSksZnVuY3Rpb24odCl7cmV0dXJuKHQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0fHxpKHQpKS5pbmRleE9mKGUpPi0xfX0pLGxhbmc6c2UoZnVuY3Rpb24oZSl7cmV0dXJuIFUudGVzdChlfHwiIil8fG9lLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2UpLGU9ZS5yZXBsYWNlKFosZWUpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24odCl7dmFyIG47ZG97aWYobj1nP3QubGFuZzp0LmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8dC5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4obj1uLnRvTG93ZXJDYXNlKCkpPT09ZXx8MD09PW4uaW5kZXhPZihlKyItIil9d2hpbGUoKHQ9dC5wYXJlbnROb2RlKSYmMT09PXQubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbih0KXt2YXIgbj1lLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmhhc2g7cmV0dXJuIG4mJm4uc2xpY2UoMSk9PT10LmlkfSxyb290OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09aH0sZm9jdXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1kLmFjdGl2ZUVsZW1lbnQmJighZC5oYXNGb2N1c3x8ZC5oYXNGb2N1cygpKSYmISEoZS50eXBlfHxlLmhyZWZ8fH5lLnRhYkluZGV4KX0sZW5hYmxlZDpkZSghMSksZGlzYWJsZWQ6ZGUoITApLGNoZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ZS5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFyLnBzZXVkb3MuZW1wdHkoZSl9LGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4gWS50ZXN0KGUubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gRy50ZXN0KGUubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYiYnV0dG9uIj09PWUudHlwZXx8ImJ1dHRvbiI9PT10fSx0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT10LnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpoZShmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6aGUoZnVuY3Rpb24oZSx0KXtyZXR1cm5bdC0xXX0pLGVxOmhlKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm5bbjwwP24rdDpuXX0pLGV2ZW46aGUoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxvZGQ6aGUoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSxsdDpoZShmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjstLXI+PTA7KWUucHVzaChyKTtyZXR1cm4gZX0pLGd0OmhlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDpuOysrcjx0OyllLnB1c2gocik7cmV0dXJuIGV9KX19KS5wc2V1ZG9zLm50aD1yLnBzZXVkb3MuZXE7Zm9yKHQgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pci5wc2V1ZG9zW3RdPWZlKHQpO2Zvcih0IGlue3N1Ym1pdDohMCxyZXNldDohMH0pci5wc2V1ZG9zW3RdPXBlKHQpO2Z1bmN0aW9uIHllKCl7fXllLnByb3RvdHlwZT1yLmZpbHRlcnM9ci5wc2V1ZG9zLHIuc2V0RmlsdGVycz1uZXcgeWUsYT1vZS50b2tlbml6ZT1mdW5jdGlvbihlLHQpe3ZhciBuLGksbyxhLHMsdSxsLGM9a1tlKyIgIl07aWYoYylyZXR1cm4gdD8wOmMuc2xpY2UoMCk7cz1lLHU9W10sbD1yLnByZUZpbHRlcjt3aGlsZShzKXtuJiYhKGk9Ri5leGVjKHMpKXx8KGkmJihzPXMuc2xpY2UoaVswXS5sZW5ndGgpfHxzKSx1LnB1c2gobz1bXSkpLG49ITEsKGk9Xy5leGVjKHMpKSYmKG49aS5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOmlbMF0ucmVwbGFjZShCLCIgIil9KSxzPXMuc2xpY2Uobi5sZW5ndGgpKTtmb3IoYSBpbiByLmZpbHRlcikhKGk9VlthXS5leGVjKHMpKXx8bFthXSYmIShpPWxbYV0oaSkpfHwobj1pLnNoaWZ0KCksby5wdXNoKHt2YWx1ZTpuLHR5cGU6YSxtYXRjaGVzOml9KSxzPXMuc2xpY2Uobi5sZW5ndGgpKTtpZighbilicmVha31yZXR1cm4gdD9zLmxlbmd0aDpzP29lLmVycm9yKGUpOmsoZSx1KS5zbGljZSgwKX07ZnVuY3Rpb24gdmUoZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aCxyPSIiO3Q8bjt0Kyspcis9ZVt0XS52YWx1ZTtyZXR1cm4gcn1mdW5jdGlvbiBtZShlLHQsbil7dmFyIHI9dC5kaXIsaT10Lm5leHQsbz1pfHxyLGE9biYmInBhcmVudE5vZGUiPT09byxzPUMrKztyZXR1cm4gdC5maXJzdD9mdW5jdGlvbih0LG4saSl7d2hpbGUodD10W3JdKWlmKDE9PT10Lm5vZGVUeXBlfHxhKXJldHVybiBlKHQsbixpKTtyZXR1cm4hMX06ZnVuY3Rpb24odCxuLHUpe3ZhciBsLGMsZixwPVtULHNdO2lmKHUpe3doaWxlKHQ9dFtyXSlpZigoMT09PXQubm9kZVR5cGV8fGEpJiZlKHQsbix1KSlyZXR1cm4hMH1lbHNlIHdoaWxlKHQ9dFtyXSlpZigxPT09dC5ub2RlVHlwZXx8YSlpZihmPXRbYl18fCh0W2JdPXt9KSxjPWZbdC51bmlxdWVJRF18fChmW3QudW5pcXVlSURdPXt9KSxpJiZpPT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXQ9dFtyXXx8dDtlbHNle2lmKChsPWNbb10pJiZsWzBdPT09VCYmbFsxXT09PXMpcmV0dXJuIHBbMl09bFsyXTtpZihjW29dPXAscFsyXT1lKHQsbix1KSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGUubGVuZ3RoPjE/ZnVuY3Rpb24odCxuLHIpe3ZhciBpPWUubGVuZ3RoO3doaWxlKGktLSlpZighZVtpXSh0LG4scikpcmV0dXJuITE7cmV0dXJuITB9OmVbMF19ZnVuY3Rpb24gYmUoZSx0LG4pe2Zvcih2YXIgcj0wLGk9dC5sZW5ndGg7cjxpO3IrKylvZShlLHRbcl0sbik7cmV0dXJuIG59ZnVuY3Rpb24gd2UoZSx0LG4scixpKXtmb3IodmFyIG8sYT1bXSxzPTAsdT1lLmxlbmd0aCxsPW51bGwhPXQ7czx1O3MrKykobz1lW3NdKSYmKG4mJiFuKG8scixpKXx8KGEucHVzaChvKSxsJiZ0LnB1c2gocykpKTtyZXR1cm4gYX1mdW5jdGlvbiBUZShlLHQsbixyLGksbyl7cmV0dXJuIHImJiFyW2JdJiYocj1UZShyKSksaSYmIWlbYl0mJihpPVRlKGksbykpLHNlKGZ1bmN0aW9uKG8sYSxzLHUpe3ZhciBsLGMsZixwPVtdLGQ9W10saD1hLmxlbmd0aCxnPW98fGJlKHR8fCIqIixzLm5vZGVUeXBlP1tzXTpzLFtdKSx5PSFlfHwhbyYmdD9nOndlKGcscCxlLHMsdSksdj1uP2l8fChvP2U6aHx8cik/W106YTp5O2lmKG4mJm4oeSx2LHMsdSkscil7bD13ZSh2LGQpLHIobCxbXSxzLHUpLGM9bC5sZW5ndGg7d2hpbGUoYy0tKShmPWxbY10pJiYodltkW2NdXT0hKHlbZFtjXV09ZikpfWlmKG8pe2lmKGl8fGUpe2lmKGkpe2w9W10sYz12Lmxlbmd0aDt3aGlsZShjLS0pKGY9dltjXSkmJmwucHVzaCh5W2NdPWYpO2kobnVsbCx2PVtdLGwsdSl9Yz12Lmxlbmd0aDt3aGlsZShjLS0pKGY9dltjXSkmJihsPWk/TyhvLGYpOnBbY10pPi0xJiYob1tsXT0hKGFbbF09ZikpfX1lbHNlIHY9d2Uodj09PWE/di5zcGxpY2UoaCx2Lmxlbmd0aCk6diksaT9pKG51bGwsYSx2LHUpOkwuYXBwbHkoYSx2KX0pfWZ1bmN0aW9uIENlKGUpe2Zvcih2YXIgdCxuLGksbz1lLmxlbmd0aCxhPXIucmVsYXRpdmVbZVswXS50eXBlXSxzPWF8fHIucmVsYXRpdmVbIiAiXSx1PWE/MTowLGM9bWUoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSxzLCEwKSxmPW1lKGZ1bmN0aW9uKGUpe3JldHVybiBPKHQsZSk+LTF9LHMsITApLHA9W2Z1bmN0aW9uKGUsbixyKXt2YXIgaT0hYSYmKHJ8fG4hPT1sKXx8KCh0PW4pLm5vZGVUeXBlP2MoZSxuLHIpOmYoZSxuLHIpKTtyZXR1cm4gdD1udWxsLGl9XTt1PG87dSsrKWlmKG49ci5yZWxhdGl2ZVtlW3VdLnR5cGVdKXA9W21lKHhlKHApLG4pXTtlbHNle2lmKChuPXIuZmlsdGVyW2VbdV0udHlwZV0uYXBwbHkobnVsbCxlW3VdLm1hdGNoZXMpKVtiXSl7Zm9yKGk9Kyt1O2k8bztpKyspaWYoci5yZWxhdGl2ZVtlW2ldLnR5cGVdKWJyZWFrO3JldHVybiBUZSh1PjEmJnhlKHApLHU+MSYmdmUoZS5zbGljZSgwLHUtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1lW3UtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShCLCIkMSIpLG4sdTxpJiZDZShlLnNsaWNlKHUsaSkpLGk8byYmQ2UoZT1lLnNsaWNlKGkpKSxpPG8mJnZlKGUpKX1wLnB1c2gobil9cmV0dXJuIHhlKHApfWZ1bmN0aW9uIEVlKGUsdCl7dmFyIG49dC5sZW5ndGg+MCxpPWUubGVuZ3RoPjAsbz1mdW5jdGlvbihvLGEscyx1LGMpe3ZhciBmLGgseSx2PTAsbT0iMCIseD1vJiZbXSxiPVtdLHc9bCxDPW98fGkmJnIuZmluZC5UQUcoIioiLGMpLEU9VCs9bnVsbD09dz8xOk1hdGgucmFuZG9tKCl8fC4xLGs9Qy5sZW5ndGg7Zm9yKGMmJihsPWE9PT1kfHxhfHxjKTttIT09ayYmbnVsbCE9KGY9Q1ttXSk7bSsrKXtpZihpJiZmKXtoPTAsYXx8Zi5vd25lckRvY3VtZW50PT09ZHx8KHAoZikscz0hZyk7d2hpbGUoeT1lW2grK10paWYoeShmLGF8fGQscykpe3UucHVzaChmKTticmVha31jJiYoVD1FKX1uJiYoKGY9IXkmJmYpJiZ2LS0sbyYmeC5wdXNoKGYpKX1pZih2Kz1tLG4mJm0hPT12KXtoPTA7d2hpbGUoeT10W2grK10peSh4LGIsYSxzKTtpZihvKXtpZih2PjApd2hpbGUobS0tKXhbbV18fGJbbV18fChiW21dPWouY2FsbCh1KSk7Yj13ZShiKX1MLmFwcGx5KHUsYiksYyYmIW8mJmIubGVuZ3RoPjAmJnYrdC5sZW5ndGg+MSYmb2UudW5pcXVlU29ydCh1KX1yZXR1cm4gYyYmKFQ9RSxsPXcpLHh9O3JldHVybiBuP3NlKG8pOm99cmV0dXJuIHM9b2UuY29tcGlsZT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1bXSxvPVNbZSsiICJdO2lmKCFvKXt0fHwodD1hKGUpKSxuPXQubGVuZ3RoO3doaWxlKG4tLSkobz1DZSh0W25dKSlbYl0/ci5wdXNoKG8pOmkucHVzaChvKTsobz1TKGUsRWUoaSxyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIG99LHU9b2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBvLHUsbCxjLGYscD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxkPSFpJiZhKGU9cC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09ZC5sZW5ndGgpe2lmKCh1PWRbMF09ZFswXS5zbGljZSgwKSkubGVuZ3RoPjImJiJJRCI9PT0obD11WzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmZyYmci5yZWxhdGl2ZVt1WzFdLnR5cGVdKXtpZighKHQ9KHIuZmluZC5JRChsLm1hdGNoZXNbMF0ucmVwbGFjZShaLGVlKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtwJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZSh1LnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1vPVYubmVlZHNDb250ZXh0LnRlc3QoZSk/MDp1Lmxlbmd0aDt3aGlsZShvLS0pe2lmKGw9dVtvXSxyLnJlbGF0aXZlW2M9bC50eXBlXSlicmVhaztpZigoZj1yLmZpbmRbY10pJiYoaT1mKGwubWF0Y2hlc1swXS5yZXBsYWNlKFosZWUpLEsudGVzdCh1WzBdLnR5cGUpJiZnZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKHUuc3BsaWNlKG8sMSksIShlPWkubGVuZ3RoJiZ2ZSh1KSkpcmV0dXJuIEwuYXBwbHkobixpKSxuO2JyZWFrfX19cmV0dXJuKHB8fHMoZSxkKSkoaSx0LCFnLG4sIXR8fEsudGVzdChlKSYmZ2UodC5wYXJlbnROb2RlKXx8dCksbn0sbi5zb3J0U3RhYmxlPWIuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1iLG4uZGV0ZWN0RHVwbGljYXRlcz0hIWYscCgpLG4uc29ydERldGFjaGVkPXVlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLHVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGxlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxuLmF0dHJpYnV0ZXMmJnVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGxlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLHVlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxsZShQLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLG9lfShlKTt3LmZpbmQ9RSx3LmV4cHI9RS5zZWxlY3RvcnMsdy5leHByWyI6Il09dy5leHByLnBzZXVkb3Msdy51bmlxdWVTb3J0PXcudW5pcXVlPUUudW5pcXVlU29ydCx3LnRleHQ9RS5nZXRUZXh0LHcuaXNYTUxEb2M9RS5pc1hNTCx3LmNvbnRhaW5zPUUuY29udGFpbnMsdy5lc2NhcGVTZWxlY3Rvcj1FLmVzY2FwZTt2YXIgaz1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmdyhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LEQ9dy5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBOKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgQT0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBqKGUsdCxuKXtyZXR1cm4gZyh0KT93LmdyZXAoZSxmdW5jdGlvbihlLHIpe3JldHVybiEhdC5jYWxsKGUscixlKSE9PW59KTp0Lm5vZGVUeXBlP3cuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dCE9PW59KToic3RyaW5nIiE9dHlwZW9mIHQ/dy5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuIHUuY2FsbCh0LGUpPi0xIT09bn0pOncuZmlsdGVyKHQsZSxuKX13LmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT93LmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOncuZmluZC5tYXRjaGVzKGUsdy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSx3LmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYody5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKyl3LmZpbmQoZSxpW3RdLG4pO3JldHVybiByPjE/dy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmRC50ZXN0KGUpP3coZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgcSxMPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KHcuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIGksbztpZighZSlyZXR1cm4gdGhpcztpZihuPW58fHEsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKGk9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmZS5sZW5ndGg+PTM/W251bGwsZSxudWxsXTpMLmV4ZWMoZSkpfHwhaVsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKGlbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIHc/dFswXTp0LHcubWVyZ2UodGhpcyx3LnBhcnNlSFRNTChpWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OnIsITApKSxBLnRlc3QoaVsxXSkmJncuaXNQbGFpbk9iamVjdCh0KSlmb3IoaSBpbiB0KWcodGhpc1tpXSk/dGhpc1tpXSh0W2ldKTp0aGlzLmF0dHIoaSx0W2ldKTtyZXR1cm4gdGhpc31yZXR1cm4obz1yLmdldEVsZW1lbnRCeUlkKGlbMl0pKSYmKHRoaXNbMF09byx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTpnKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKHcpOncubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9dy5mbixxPXcocik7dmFyIEg9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sTz17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTt3LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PXcoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYody5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZ3KGUpO2lmKCFELnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/YS5pbmRleChuKT4tMToxPT09bi5ub2RlVHlwZSYmdy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhvLmxlbmd0aD4xP3cudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP3UuY2FsbCh3KGUpLHRoaXNbMF0pOnUuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sody51bmlxdWVTb3J0KHcubWVyZ2UodGhpcy5nZXQoKSx3KGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pO2Z1bmN0aW9uIFAoZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfXcuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gayhlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGsoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIFAoZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gUChlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gayhlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBrKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBrKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gayhlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gUygoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFMoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIE4oZSwiaWZyYW1lIik/ZS5jb250ZW50RG9jdW1lbnQ6KE4oZSwidGVtcGxhdGUiKSYmKGU9ZS5jb250ZW50fHxlKSx3Lm1lcmdlKFtdLGUuY2hpbGROb2RlcykpfX0sZnVuY3Rpb24oZSx0KXt3LmZuW2VdPWZ1bmN0aW9uKG4scil7dmFyIGk9dy5tYXAodGhpcyx0LG4pO3JldHVybiJVbnRpbCIhPT1lLnNsaWNlKC01KSYmKHI9biksciYmInN0cmluZyI9PXR5cGVvZiByJiYoaT13LmZpbHRlcihyLGkpKSx0aGlzLmxlbmd0aD4xJiYoT1tlXXx8dy51bmlxdWVTb3J0KGkpLEgudGVzdChlKSYmaS5yZXZlcnNlKCkpLHRoaXMucHVzaFN0YWNrKGkpfX0pO3ZhciBNPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gUihlKXt2YXIgdD17fTtyZXR1cm4gdy5lYWNoKGUubWF0Y2goTSl8fFtdLGZ1bmN0aW9uKGUsbil7dFtuXT0hMH0pLHR9dy5DYWxsYmFja3M9ZnVuY3Rpb24oZSl7ZT0ic3RyaW5nIj09dHlwZW9mIGU/UihlKTp3LmV4dGVuZCh7fSxlKTt2YXIgdCxuLHIsaSxvPVtdLGE9W10scz0tMSx1PWZ1bmN0aW9uKCl7Zm9yKGk9aXx8ZS5vbmNlLHI9dD0hMDthLmxlbmd0aDtzPS0xKXtuPWEuc2hpZnQoKTt3aGlsZSgrK3M8by5sZW5ndGgpITE9PT1vW3NdLmFwcGx5KG5bMF0sblsxXSkmJmUuc3RvcE9uRmFsc2UmJihzPW8ubGVuZ3RoLG49ITEpfWUubWVtb3J5fHwobj0hMSksdD0hMSxpJiYobz1uP1tdOiIiKX0sbD17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihuJiYhdCYmKHM9by5sZW5ndGgtMSxhLnB1c2gobikpLGZ1bmN0aW9uIHQobil7dy5lYWNoKG4sZnVuY3Rpb24obixyKXtnKHIpP2UudW5pcXVlJiZsLmhhcyhyKXx8by5wdXNoKHIpOnImJnIubGVuZ3RoJiYic3RyaW5nIiE9PXgocikmJnQocil9KX0oYXJndW1lbnRzKSxuJiYhdCYmdSgpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdy5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKChuPXcuaW5BcnJheSh0LG8sbikpPi0xKW8uc3BsaWNlKG4sMSksbjw9cyYmcy0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlP3cuaW5BcnJheShlLG8pPi0xOm8ubGVuZ3RoPjB9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihvPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9YT1bXSxvPW49IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hb30sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPWE9W10sbnx8dHx8KG89bj0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFpfSxmaXJlV2l0aDpmdW5jdGlvbihlLG4pe3JldHVybiBpfHwobj1bZSwobj1ufHxbXSkuc2xpY2U/bi5zbGljZSgpOm5dLGEucHVzaChuKSx0fHx1KCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gbC5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXJ9fTtyZXR1cm4gbH07ZnVuY3Rpb24gSShlKXtyZXR1cm4gZX1mdW5jdGlvbiBXKGUpe3Rocm93IGV9ZnVuY3Rpb24gJChlLHQsbixyKXt2YXIgaTt0cnl7ZSYmZyhpPWUucHJvbWlzZSk/aS5jYWxsKGUpLmRvbmUodCkuZmFpbChuKTplJiZnKGk9ZS50aGVuKT9pLmNhbGwoZSx0LG4pOnQuYXBwbHkodm9pZCAwLFtlXS5zbGljZShyKSl9Y2F0Y2goZSl7bi5hcHBseSh2b2lkIDAsW2VdKX19dy5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKHQpe3ZhciBuPVtbIm5vdGlmeSIsInByb2dyZXNzIix3LkNhbGxiYWNrcygibWVtb3J5Iiksdy5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIix3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxyPSJwZW5kaW5nIixpPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiByfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gby5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO3JldHVybiB3LkRlZmVycmVkKGZ1bmN0aW9uKHQpe3cuZWFjaChuLGZ1bmN0aW9uKG4scil7dmFyIGk9ZyhlW3JbNF1dKSYmZVtyWzRdXTtvW3JbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9aSYmaS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmZyhlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHQubm90aWZ5KS5kb25lKHQucmVzb2x2ZSkuZmFpbCh0LnJlamVjdCk6dFtyWzBdKyJXaXRoIl0odGhpcyxpP1tlXTphcmd1bWVudHMpfSl9KSxlPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxyLGkpe3ZhciBvPTA7ZnVuY3Rpb24gYSh0LG4scixpKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcz10aGlzLHU9YXJndW1lbnRzLGw9ZnVuY3Rpb24oKXt2YXIgZSxsO2lmKCEodDxvKSl7aWYoKGU9ci5hcHBseShzLHUpKT09PW4ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO2w9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sZyhsKT9pP2wuY2FsbChlLGEobyxuLEksaSksYShvLG4sVyxpKSk6KG8rKyxsLmNhbGwoZSxhKG8sbixJLGkpLGEobyxuLFcsaSksYShvLG4sSSxuLm5vdGlmeVdpdGgpKSk6KHIhPT1JJiYocz12b2lkIDAsdT1bZV0pLChpfHxuLnJlc29sdmVXaXRoKShzLHUpKX19LGM9aT9sOmZ1bmN0aW9uKCl7dHJ5e2woKX1jYXRjaChlKXt3LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJncuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLGMuc3RhY2tUcmFjZSksdCsxPj1vJiYociE9PVcmJihzPXZvaWQgMCx1PVtlXSksbi5yZWplY3RXaXRoKHMsdSkpfX07dD9jKCk6KHcuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoYy5zdGFja1RyYWNlPXcuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGUuc2V0VGltZW91dChjKSl9fXJldHVybiB3LkRlZmVycmVkKGZ1bmN0aW9uKGUpe25bMF1bM10uYWRkKGEoMCxlLGcoaSk/aTpJLGUubm90aWZ5V2l0aCkpLG5bMV1bM10uYWRkKGEoMCxlLGcodCk/dDpJKSksblsyXVszXS5hZGQoYSgwLGUsZyhyKT9yOlcpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT93LmV4dGVuZChlLGkpOml9fSxvPXt9O3JldHVybiB3LmVhY2gobixmdW5jdGlvbihlLHQpe3ZhciBhPXRbMl0scz10WzVdO2lbdFsxXV09YS5hZGQscyYmYS5hZGQoZnVuY3Rpb24oKXtyPXN9LG5bMy1lXVsyXS5kaXNhYmxlLG5bMy1lXVszXS5kaXNhYmxlLG5bMF1bMl0ubG9jayxuWzBdWzNdLmxvY2spLGEuYWRkKHRbM10uZmlyZSksb1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBvW3RbMF0rIldpdGgiXSh0aGlzPT09bz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LG9bdFswXSsiV2l0aCJdPWEuZmlyZVdpdGh9KSxpLnByb21pc2UobyksdCYmdC5jYWxsKG8sbyksb30sd2hlbjpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49dCxyPUFycmF5KG4pLGk9by5jYWxsKGFyZ3VtZW50cyksYT13LkRlZmVycmVkKCkscz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cltlXT10aGlzLGlbZV09YXJndW1lbnRzLmxlbmd0aD4xP28uY2FsbChhcmd1bWVudHMpOm4sLS10fHxhLnJlc29sdmVXaXRoKHIsaSl9fTtpZih0PD0xJiYoJChlLGEuZG9uZShzKG4pKS5yZXNvbHZlLGEucmVqZWN0LCF0KSwicGVuZGluZyI9PT1hLnN0YXRlKCl8fGcoaVtuXSYmaVtuXS50aGVuKSkpcmV0dXJuIGEudGhlbigpO3doaWxlKG4tLSkkKGlbbl0scyhuKSxhLnJlamVjdCk7cmV0dXJuIGEucHJvbWlzZSgpfX0pO3ZhciBCPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO3cuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbih0LG4pe2UuY29uc29sZSYmZS5jb25zb2xlLndhcm4mJnQmJkIudGVzdCh0Lm5hbWUpJiZlLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIit0Lm1lc3NhZ2UsdC5zdGFjayxuKX0sdy5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbih0KXtlLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyB0fSl9O3ZhciBGPXcuRGVmZXJyZWQoKTt3LmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7dy5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LHcuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS13LnJlYWR5V2FpdDp3LmlzUmVhZHkpfHwody5pc1JlYWR5PSEwLCEwIT09ZSYmLS13LnJlYWR5V2FpdD4wfHxGLnJlc29sdmVXaXRoKHIsW3ddKSl9fSksdy5yZWFkeS50aGVuPUYudGhlbjtmdW5jdGlvbiBfKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixfKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLF8pLHcucmVhZHkoKX0iY29tcGxldGUiPT09ci5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1yLnJlYWR5U3RhdGUmJiFyLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9lLnNldFRpbWVvdXQody5yZWFkeSk6KHIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsXyksZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixfKSk7dmFyIHo9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXgobikpe2k9ITA7Zm9yKHMgaW4gbil6KGUsdCxzLG5bc10sITAsbyxhKX1lbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLGcocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwodyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxYPS9eLW1zLS8sVT0vLShbYS16XSkvZztmdW5jdGlvbiBWKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBHKGUpe3JldHVybiBlLnJlcGxhY2UoWCwibXMtIikucmVwbGFjZShVLFYpfXZhciBZPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gUSgpe3RoaXMuZXhwYW5kbz13LmV4cGFuZG8rUS51aWQrK31RLnVpZD0xLFEucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFkoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW0codCldPW47ZWxzZSBmb3IociBpbiB0KWlbRyhyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtHKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChHKToodD1HKHQpKWluIHI/W3RdOnQubWF0Y2goTSl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHx3LmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiF3LmlzRW1wdHlPYmplY3QodCl9fTt2YXIgSj1uZXcgUSxLPW5ldyBRLFo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxlZT0vW0EtWl0vZztmdW5jdGlvbiB0ZShlKXtyZXR1cm4idHJ1ZSI9PT1lfHwiZmFsc2UiIT09ZSYmKCJudWxsIj09PWU/bnVsbDplPT09K2UrIiI/K2U6Wi50ZXN0KGUpP0pTT04ucGFyc2UoZSk6ZSl9ZnVuY3Rpb24gbmUoZSx0LG4pe3ZhciByO2lmKHZvaWQgMD09PW4mJjE9PT1lLm5vZGVUeXBlKWlmKHI9ImRhdGEtIit0LnJlcGxhY2UoZWUsIi0kJiIpLnRvTG93ZXJDYXNlKCksInN0cmluZyI9PXR5cGVvZihuPWUuZ2V0QXR0cmlidXRlKHIpKSl7dHJ5e249dGUobil9Y2F0Y2goZSl7fUsuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufXcuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBLLmhhc0RhdGEoZSl8fEouaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEsuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0sucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gSi5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0oucmVtb3ZlKGUsdCl9fSksdy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWUpe2lmKHRoaXMubGVuZ3RoJiYoaT1LLmdldChvKSwxPT09by5ub2RlVHlwZSYmIUouZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7bj1hLmxlbmd0aDt3aGlsZShuLS0pYVtuXSYmMD09PShyPWFbbl0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9RyhyLnNsaWNlKDUpKSxuZShvLHIsaVtyXSkpO0ouc2V0KG8sImhhc0RhdGFBdHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2YgZT90aGlzLmVhY2goZnVuY3Rpb24oKXtLLnNldCh0aGlzLGUpfSk6eih0aGlzLGZ1bmN0aW9uKHQpe3ZhciBuO2lmKG8mJnZvaWQgMD09PXQpe2lmKHZvaWQgMCE9PShuPUsuZ2V0KG8sZSkpKXJldHVybiBuO2lmKHZvaWQgMCE9PShuPW5lKG8sZSkpKXJldHVybiBufWVsc2UgdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Sy5zZXQodGhpcyxlLHQpfSl9LG51bGwsdCxhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0sucmVtb3ZlKHRoaXMsZSl9KX19KSx3LmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1KLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPUouYWNjZXNzKGUsdCx3Lm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj13LnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPXcuX3F1ZXVlSG9va3MoZSx0KSxhPWZ1bmN0aW9uKCl7dy5kZXF1ZXVlKGUsdCl9OyJpbnByb2dyZXNzIj09PWkmJihpPW4uc2hpZnQoKSxyLS0pLGkmJigiZngiPT09dCYmbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIG8uc3RvcCxpLmNhbGwoZSxhLG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIEouZ2V0KGUsbil8fEouYWNjZXNzKGUsbix7ZW1wdHk6dy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7Si5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksdy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iZngiLG4tLSksYXJndW1lbnRzLmxlbmd0aDxuP3cucXVldWUodGhpc1swXSxlKTp2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49dy5xdWV1ZSh0aGlzLGUsdCk7dy5fcXVldWVIb29rcyh0aGlzLGUpLCJmeCI9PT1lJiYiaW5wcm9ncmVzcyIhPT1uWzBdJiZ3LmRlcXVldWUodGhpcyxlKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt3LmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9dy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49Si5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgcmU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsaWU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK3JlKyIpKFthLXolXSopJCIsImkiKSxvZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIm5vbmUiPT09KGU9dHx8ZSkuc3R5bGUuZGlzcGxheXx8IiI9PT1lLnN0eWxlLmRpc3BsYXkmJncuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpJiYibm9uZSI9PT13LmNzcyhlLCJkaXNwbGF5Iil9LHNlPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYT17fTtmb3IobyBpbiB0KWFbb109ZS5zdHlsZVtvXSxlLnN0eWxlW29dPXRbb107aT1uLmFwcGx5KGUscnx8W10pO2ZvcihvIGluIHQpZS5zdHlsZVtvXT1hW29dO3JldHVybiBpfTtmdW5jdGlvbiB1ZShlLHQsbixyKXt2YXIgaSxvLGE9MjAscz1yP2Z1bmN0aW9uKCl7cmV0dXJuIHIuY3VyKCl9OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY3NzKGUsdCwiIil9LHU9cygpLGw9biYmblszXXx8KHcuY3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9KHcuY3NzTnVtYmVyW3RdfHwicHgiIT09bCYmK3UpJiZpZS5leGVjKHcuY3NzKGUsdCkpO2lmKGMmJmNbM10hPT1sKXt1Lz0yLGw9bHx8Y1szXSxjPSt1fHwxO3doaWxlKGEtLSl3LnN0eWxlKGUsdCxjK2wpLCgxLW8pKigxLShvPXMoKS91fHwuNSkpPD0wJiYoYT0wKSxjLz1vO2MqPTIsdy5zdHlsZShlLHQsYytsKSxuPW58fFtdfXJldHVybiBuJiYoYz0rY3x8K3V8fDAsaT1uWzFdP2MrKG5bMV0rMSkqblsyXTorblsyXSxyJiYoci51bml0PWwsci5zdGFydD1jLHIuZW5kPWkpKSxpfXZhciBsZT17fTtmdW5jdGlvbiBjZShlKXt2YXIgdCxuPWUub3duZXJEb2N1bWVudCxyPWUubm9kZU5hbWUsaT1sZVtyXTtyZXR1cm4gaXx8KHQ9bi5ib2R5LmFwcGVuZENoaWxkKG4uY3JlYXRlRWxlbWVudChyKSksaT13LmNzcyh0LCJkaXNwbGF5IiksdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLCJub25lIj09PWkmJihpPSJibG9jayIpLGxlW3JdPWksaSl9ZnVuY3Rpb24gZmUoZSx0KXtmb3IodmFyIG4scixpPVtdLG89MCxhPWUubGVuZ3RoO288YTtvKyspKHI9ZVtvXSkuc3R5bGUmJihuPXIuc3R5bGUuZGlzcGxheSx0Pygibm9uZSI9PT1uJiYoaVtvXT1KLmdldChyLCJkaXNwbGF5Iil8fG51bGwsaVtvXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZhZShyKSYmKGlbb109Y2UocikpKToibm9uZSIhPT1uJiYoaVtvXT0ibm9uZSIsSi5zZXQociwiZGlzcGxheSIsbikpKTtmb3Iobz0wO288YTtvKyspbnVsbCE9aVtvXSYmKGVbb10uc3R5bGUuZGlzcGxheT1pW29dKTtyZXR1cm4gZX13LmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT93KHRoaXMpLnNob3coKTp3KHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKykvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksZ2U9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtnZS5vcHRncm91cD1nZS5vcHRpb24sZ2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZDtmdW5jdGlvbiB5ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmTihlLHQpP3cubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24gdmUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspSi5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fEouZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9dmFyIG1lPS88fCYjP1x3KzsvO2Z1bmN0aW9uIHhlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGEscyx1LGwsYyxmPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHA9W10sZD0wLGg9ZS5sZW5ndGg7ZDxoO2QrKylpZigobz1lW2RdKXx8MD09PW8paWYoIm9iamVjdCI9PT14KG8pKXcubWVyZ2UocCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKG1lLnRlc3Qobykpe2E9YXx8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShkZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLHU9Z2Vbc118fGdlLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0rdy5odG1sUHJlZmlsdGVyKG8pK3VbMl0sYz11WzBdO3doaWxlKGMtLSlhPWEubGFzdENoaWxkO3cubWVyZ2UocCxhLmNoaWxkTm9kZXMpLChhPWYuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSBwLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7Zi50ZXh0Q29udGVudD0iIixkPTA7d2hpbGUobz1wW2QrK10paWYociYmdy5pbkFycmF5KG8scik+LTEpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD13LmNvbnRhaW5zKG8ub3duZXJEb2N1bWVudCxvKSxhPXllKGYuYXBwZW5kQ2hpbGQobyksInNjcmlwdCIpLGwmJnZlKGEpLG4pe2M9MDt3aGlsZShvPWFbYysrXSloZS50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIGZ9IWZ1bmN0aW9uKCl7dmFyIGU9ci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoci5jcmVhdGVFbGVtZW50KCJkaXYiKSksdD1yLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLHQuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLHQuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGUuYXBwZW5kQ2hpbGQodCksaC5jaGVja0Nsb25lPWUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGUuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixoLm5vQ2xvbmVDaGVja2VkPSEhZS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWV9KCk7dmFyIGJlPXIuZG9jdW1lbnRFbGVtZW50LHdlPS9ea2V5LyxUZT0vXig/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnV8ZHJhZ3xkcm9wKXxjbGljay8sQ2U9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIEVlKCl7cmV0dXJuITB9ZnVuY3Rpb24ga2UoKXtyZXR1cm4hMX1mdW5jdGlvbiBTZSgpe3RyeXtyZXR1cm4gci5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319ZnVuY3Rpb24gRGUoZSx0LG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXsic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApO2ZvcihzIGluIHQpRGUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9a2U7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIHcoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD13Lmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe3cuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX13LmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG8sYSxzLHUsbCxjLGYscCxkLGgsZyx5PUouZ2V0KGUpO2lmKHkpe24uaGFuZGxlciYmKG49KG89bikuaGFuZGxlcixpPW8uc2VsZWN0b3IpLGkmJncuZmluZC5tYXRjaGVzU2VsZWN0b3IoYmUsaSksbi5ndWlkfHwobi5ndWlkPXcuZ3VpZCsrKSwodT15LmV2ZW50cyl8fCh1PXkuZXZlbnRzPXt9KSwoYT15LmhhbmRsZSl8fChhPXkuaGFuZGxlPWZ1bmN0aW9uKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdyYmdy5ldmVudC50cmlnZ2VyZWQhPT10LnR5cGU/dy5ldmVudC5kaXNwYXRjaC5hcHBseShlLGFyZ3VtZW50cyk6dm9pZCAwfSksbD0odD0odHx8IiIpLm1hdGNoKE0pfHxbIiJdKS5sZW5ndGg7d2hpbGUobC0tKWQ9Zz0ocz1DZS5leGVjKHRbbF0pfHxbXSlbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQmJihmPXcuZXZlbnQuc3BlY2lhbFtkXXx8e30sZD0oaT9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8ZCxmPXcuZXZlbnQuc3BlY2lhbFtkXXx8e30sYz13LmV4dGVuZCh7dHlwZTpkLG9yaWdUeXBlOmcsZGF0YTpyLGhhbmRsZXI6bixndWlkOm4uZ3VpZCxzZWxlY3RvcjppLG5lZWRzQ29udGV4dDppJiZ3LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksbmFtZXNwYWNlOmguam9pbigiLiIpfSxvKSwocD11W2RdKXx8KChwPXVbZF09W10pLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiYhMSE9PWYuc2V0dXAuY2FsbChlLHIsaCxhKXx8ZS5hZGRFdmVudExpc3RlbmVyJiZlLmFkZEV2ZW50TGlzdGVuZXIoZCxhKSksZi5hZGQmJihmLmFkZC5jYWxsKGUsYyksYy5oYW5kbGVyLmd1aWR8fChjLmhhbmRsZXIuZ3VpZD1uLmd1aWQpKSxpP3Auc3BsaWNlKHAuZGVsZWdhdGVDb3VudCsrLDAsYyk6cC5wdXNoKGMpLHcuZXZlbnQuZ2xvYmFsW2RdPSEwKX19LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcseT1KLmhhc0RhdGEoZSkmJkouZ2V0KGUpO2lmKHkmJih1PXkuZXZlbnRzKSl7bD0odD0odHx8IiIpLm1hdGNoKE0pfHxbIiJdKS5sZW5ndGg7d2hpbGUobC0tKWlmKHM9Q2UuZXhlYyh0W2xdKXx8W10sZD1nPXNbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGQpe2Y9dy5ldmVudC5zcGVjaWFsW2RdfHx7fSxwPXVbZD0ocj9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8ZF18fFtdLHM9c1syXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxhPW89cC5sZW5ndGg7d2hpbGUoby0tKWM9cFtvXSwhaSYmZyE9PWMub3JpZ1R5cGV8fG4mJm4uZ3VpZCE9PWMuZ3VpZHx8cyYmIXMudGVzdChjLm5hbWVzcGFjZSl8fHImJnIhPT1jLnNlbGVjdG9yJiYoIioqIiE9PXJ8fCFjLnNlbGVjdG9yKXx8KHAuc3BsaWNlKG8sMSksYy5zZWxlY3RvciYmcC5kZWxlZ2F0ZUNvdW50LS0sZi5yZW1vdmUmJmYucmVtb3ZlLmNhbGwoZSxjKSk7YSYmIXAubGVuZ3RoJiYoZi50ZWFyZG93biYmITEhPT1mLnRlYXJkb3duLmNhbGwoZSxoLHkuaGFuZGxlKXx8dy5yZW1vdmVFdmVudChlLGQseS5oYW5kbGUpLGRlbGV0ZSB1W2RdKX1lbHNlIGZvcihkIGluIHUpdy5ldmVudC5yZW1vdmUoZSxkK3RbbF0sbixyLCEwKTt3LmlzRW1wdHlPYmplY3QodSkmJkoucmVtb3ZlKGUsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZhciB0PXcuZXZlbnQuZml4KGUpLG4scixpLG8sYSxzLHU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGw9KEouZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbdC50eXBlXXx8W10sYz13LmV2ZW50LnNwZWNpYWxbdC50eXBlXXx8e307Zm9yKHVbMF09dCxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl1W25dPWFyZ3VtZW50c1tuXTtpZih0LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdCkpe3M9dy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdCxsKSxuPTA7d2hpbGUoKG89c1tuKytdKSYmIXQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dC5jdXJyZW50VGFyZ2V0PW8uZWxlbSxyPTA7d2hpbGUoKGE9by5oYW5kbGVyc1tyKytdKSYmIXQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl0LnJuYW1lc3BhY2UmJiF0LnJuYW1lc3BhY2UudGVzdChhLm5hbWVzcGFjZSl8fCh0LmhhbmRsZU9iaj1hLHQuZGF0YT1hLmRhdGEsdm9pZCAwIT09KGk9KCh3LmV2ZW50LnNwZWNpYWxbYS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGEuaGFuZGxlcikuYXBwbHkoby5lbGVtLHUpKSYmITE9PT0odC5yZXN1bHQ9aSkmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHQpLHQucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJmUuYnV0dG9uPj0xKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/dyhpLHRoaXMpLmluZGV4KGwpPi0xOncuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3LkV2ZW50LnByb3RvdHlwZSxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6Zyh0KT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdCh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W2VdfSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6dH0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbdy5leHBhbmRvXT9lOm5ldyB3LkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09U2UoKSYmdGhpcy5mb2N1cylyZXR1cm4gdGhpcy5mb2N1cygpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcz09PVNlKCkmJnRoaXMuYmx1cilyZXR1cm4gdGhpcy5ibHVyKCksITF9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKCJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2smJk4odGhpcywiaW5wdXQiKSlyZXR1cm4gdGhpcy5jbGljaygpLCExfSxfZGVmYXVsdDpmdW5jdGlvbihlKXtyZXR1cm4gTihlLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LHcucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LHcuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiB3LkV2ZW50KSlyZXR1cm4gbmV3IHcuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT9FZTprZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZ3LmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbdy5leHBhbmRvXT0hMH0sdy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOncuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOmtlLGlzUHJvcGFnYXRpb25TdG9wcGVkOmtlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmtlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPUVlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPUVlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1FZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sdy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmd2UudGVzdChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gmJnZvaWQgMCE9PXQmJlRlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9fSx3LmV2ZW50LmFkZFByb3ApLHcuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oZSx0KXt3LmV2ZW50LnNwZWNpYWxbZV09e2RlbGVnYXRlVHlwZTp0LGJpbmRUeXBlOnQsaGFuZGxlOmZ1bmN0aW9uKGUpe3ZhciBuLHI9dGhpcyxpPWUucmVsYXRlZFRhcmdldCxvPWUuaGFuZGxlT2JqO3JldHVybiBpJiYoaT09PXJ8fHcuY29udGFpbnMocixpKSl8fChlLnR5cGU9by5vcmlnVHlwZSxuPW8uaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS50eXBlPXQpLG59fX0pLHcuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRGUodGhpcyxlLHQsbixyKX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBEZSh0aGlzLGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gcj1lLmhhbmRsZU9iaix3KGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXZvaWQgMCksITE9PT1uJiYobj1rZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dy5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KX19KTt2YXIgTmU9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopW14+XSopXC8+L2dpLEFlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLGplPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHFlPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBMZShlLHQpe3JldHVybiBOKGUsInRhYmxlIikmJk4oMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpP3coZSkuY2hpbGRyZW4oInRib2R5IilbMF18fGU6ZX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gZS50eXBlPShudWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIE9lKGUpe3JldHVybiJ0cnVlLyI9PT0oZS50eXBlfHwiIikuc2xpY2UoMCw1KT9lLnR5cGU9ZS50eXBlLnNsaWNlKDUpOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBQZShlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGw7aWYoMT09PXQubm9kZVR5cGUpe2lmKEouaGFzRGF0YShlKSYmKG89Si5hY2Nlc3MoZSksYT1KLnNldCh0LG8pLGw9by5ldmVudHMpKXtkZWxldGUgYS5oYW5kbGUsYS5ldmVudHM9e307Zm9yKGkgaW4gbClmb3Iobj0wLHI9bFtpXS5sZW5ndGg7bjxyO24rKyl3LmV2ZW50LmFkZCh0LGksbFtpXVtuXSl9Sy5oYXNEYXRhKGUpJiYocz1LLmFjY2VzcyhlKSx1PXcuZXh0ZW5kKHt9LHMpLEsuc2V0KHQsdSkpfX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsiaW5wdXQiPT09biYmcGUudGVzdChlLnR5cGUpP3QuY2hlY2tlZD1lLmNoZWNrZWQ6ImlucHV0IiE9PW4mJiJ0ZXh0YXJlYSIhPT1ufHwodC5kZWZhdWx0VmFsdWU9ZS5kZWZhdWx0VmFsdWUpfWZ1bmN0aW9uIFJlKGUsdCxuLHIpe3Q9YS5hcHBseShbXSx0KTt2YXIgaSxvLHMsdSxsLGMsZj0wLHA9ZS5sZW5ndGgsZD1wLTEseT10WzBdLHY9Zyh5KTtpZih2fHxwPjEmJiJzdHJpbmciPT10eXBlb2YgeSYmIWguY2hlY2tDbG9uZSYmamUudGVzdCh5KSlyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPWUuZXEoaSk7diYmKHRbMF09eS5jYWxsKHRoaXMsaSxvLmh0bWwoKSkpLFJlKG8sdCxuLHIpfSk7aWYocCYmKGk9eGUodCxlWzBdLm93bmVyRG9jdW1lbnQsITEsZSxyKSxvPWkuZmlyc3RDaGlsZCwxPT09aS5jaGlsZE5vZGVzLmxlbmd0aCYmKGk9byksb3x8cikpe2Zvcih1PShzPXcubWFwKHllKGksInNjcmlwdCIpLEhlKSkubGVuZ3RoO2Y8cDtmKyspbD1pLGYhPT1kJiYobD13LmNsb25lKGwsITAsITApLHUmJncubWVyZ2Uocyx5ZShsLCJzY3JpcHQiKSkpLG4uY2FsbChlW2ZdLGwsZik7aWYodSlmb3IoYz1zW3MubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsdy5tYXAocyxPZSksZj0wO2Y8dTtmKyspbD1zW2ZdLGhlLnRlc3QobC50eXBlfHwiIikmJiFKLmFjY2VzcyhsLCJnbG9iYWxFdmFsIikmJncuY29udGFpbnMoYyxsKSYmKGwuc3JjJiYibW9kdWxlIiE9PShsLnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP3cuX2V2YWxVcmwmJncuX2V2YWxVcmwobC5zcmMpOm0obC50ZXh0Q29udGVudC5yZXBsYWNlKHFlLCIiKSxjLGwpKX1yZXR1cm4gZX1mdW5jdGlvbiBJZShlLHQsbil7Zm9yKHZhciByLGk9dD93LmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8dy5jbGVhbkRhdGEoeWUocikpLHIucGFyZW50Tm9kZSYmKG4mJncuY29udGFpbnMoci5vd25lckRvY3VtZW50LHIpJiZ2ZSh5ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX13LmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKE5lLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jbG9uZU5vZGUoITApLHU9dy5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSk7aWYoIShoLm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHx3LmlzWE1MRG9jKGUpKSlmb3IoYT15ZShzKSxyPTAsaT0obz15ZShlKSkubGVuZ3RoO3I8aTtyKyspTWUob1tyXSxhW3JdKTtpZih0KWlmKG4pZm9yKG89b3x8eWUoZSksYT1hfHx5ZShzKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKVBlKG9bcl0sYVtyXSk7ZWxzZSBQZShlLHMpO3JldHVybihhPXllKHMsInNjcmlwdCIpKS5sZW5ndGg+MCYmdmUoYSwhdSYmeWUoZSwic2NyaXB0IikpLHN9LGNsZWFuRGF0YTpmdW5jdGlvbihlKXtmb3IodmFyIHQsbixyLGk9dy5ldmVudC5zcGVjaWFsLG89MDt2b2lkIDAhPT0obj1lW29dKTtvKyspaWYoWShuKSl7aWYodD1uW0ouZXhwYW5kb10pe2lmKHQuZXZlbnRzKWZvcihyIGluIHQuZXZlbnRzKWlbcl0/dy5ldmVudC5yZW1vdmUobixyKTp3LnJlbW92ZUV2ZW50KG4scix0LmhhbmRsZSk7bltKLmV4cGFuZG9dPXZvaWQgMH1uW0suZXhwYW5kb10mJihuW0suZXhwYW5kb109dm9pZCAwKX19fSksdy5mbi5leHRlbmQoe2RldGFjaDpmdW5jdGlvbihlKXtyZXR1cm4gSWUodGhpcyxlLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3JldHVybiBJZSh0aGlzLGUpfSx0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiB6KHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dy50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWUpfSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIFJlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHxMZSh0aGlzLGUpLmFwcGVuZENoaWxkKGUpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gUmUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciB0PUxlKHRoaXMsZSk7dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gUmUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gUmUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO251bGwhPShlPXRoaXNbdF0pO3QrKykxPT09ZS5ub2RlVHlwZSYmKHcuY2xlYW5EYXRhKHllKGUsITEpKSxlLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1udWxsIT1lJiZlLHQ9bnVsbD09dD9lOnQsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdy5jbG9uZSh0aGlzLGUsdCl9KX0saHRtbDpmdW5jdGlvbihlKXtyZXR1cm4geih0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbMF18fHt9LG49MCxyPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWUmJjE9PT10Lm5vZGVUeXBlKXJldHVybiB0LmlubmVySFRNTDtpZigic3RyaW5nIj09dHlwZW9mIGUmJiFBZS50ZXN0KGUpJiYhZ2VbKGRlLmV4ZWMoZSl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXtlPXcuaHRtbFByZWZpbHRlcihlKTt0cnl7Zm9yKDtuPHI7bisrKTE9PT0odD10aGlzW25dfHx7fSkubm9kZVR5cGUmJih3LmNsZWFuRGF0YSh5ZSh0LCExKSksdC5pbm5lckhUTUw9ZSk7dD0wfWNhdGNoKGUpe319dCYmdGhpcy5lbXB0eSgpLmFwcGVuZChlKX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiBSZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbih0KXt2YXIgbj10aGlzLnBhcmVudE5vZGU7dy5pbkFycmF5KHRoaXMsZSk8MCYmKHcuY2xlYW5EYXRhKHllKHRoaXMpKSxuJiZuLnJlcGxhY2VDaGlsZCh0LHRoaXMpKX0sZSl9fSksdy5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oZSx0KXt3LmZuW2VdPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbixyPVtdLGk9dyhlKSxvPWkubGVuZ3RoLTEsYT0wO2E8PW87YSsrKW49YT09PW8/dGhpczp0aGlzLmNsb25lKCEwKSx3KGlbYV0pW3RdKG4pLHMuYXBwbHkocixuLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2socil9fSk7dmFyIFdlPW5ldyBSZWdFeHAoIl4oIityZSsiKSg/IXB4KVthLXolXSskIiwiaSIpLCRlPWZ1bmN0aW9uKHQpe3ZhciBuPXQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gbiYmbi5vcGVuZXJ8fChuPWUpLG4uZ2V0Q29tcHV0ZWRTdHlsZSh0KX0sQmU9bmV3IFJlZ0V4cChvZS5qb2luKCJ8IiksImkiKTshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aWYoYyl7bC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIixjLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLGJlLmFwcGVuZENoaWxkKGwpLmFwcGVuZENoaWxkKGMpO3ZhciB0PWUuZ2V0Q29tcHV0ZWRTdHlsZShjKTtpPSIxJSIhPT10LnRvcCx1PTEyPT09bih0Lm1hcmdpbkxlZnQpLGMuc3R5bGUucmlnaHQ9IjYwJSIscz0zNj09PW4odC5yaWdodCksbz0zNj09PW4odC53aWR0aCksYy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGE9MzY9PT1jLm9mZnNldFdpZHRofHwiYWJzb2x1dGUiLGJlLnJlbW92ZUNoaWxkKGwpLGM9bnVsbH19ZnVuY3Rpb24gbihlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKX12YXIgaSxvLGEscyx1LGw9ci5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPXIuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5zdHlsZSYmKGMuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixjLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsaC5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWMuc3R5bGUuYmFja2dyb3VuZENsaXAsdy5leHRlbmQoaCx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLG99LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHQoKSxzfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHQoKSxpfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLHV9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLGF9fSkpfSgpO2Z1bmN0aW9uIEZlKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuc3R5bGU7cmV0dXJuKG49bnx8JGUoZSkpJiYoIiIhPT0oYT1uLmdldFByb3BlcnR5VmFsdWUodCl8fG5bdF0pfHx3LmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8KGE9dy5zdHlsZShlLHQpKSwhaC5waXhlbEJveFN0eWxlcygpJiZXZS50ZXN0KGEpJiZCZS50ZXN0KHQpJiYocj1zLndpZHRoLGk9cy5taW5XaWR0aCxvPXMubWF4V2lkdGgscy5taW5XaWR0aD1zLm1heFdpZHRoPXMud2lkdGg9YSxhPW4ud2lkdGgscy53aWR0aD1yLHMubWluV2lkdGg9aSxzLm1heFdpZHRoPW8pKSx2b2lkIDAhPT1hP2ErIiI6YX1mdW5jdGlvbiBfZShlLHQpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtpZighZSgpKXJldHVybih0aGlzLmdldD10KS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIHRoaXMuZ2V0fX19dmFyIHplPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxYZT0vXi0tLyxVZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sVmU9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LEdlPVsiV2Via2l0IiwiTW96IiwibXMiXSxZZT1yLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO2Z1bmN0aW9uIFFlKGUpe2lmKGUgaW4gWWUpcmV0dXJuIGU7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1HZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUdlW25dK3QpaW4gWWUpcmV0dXJuIGV9ZnVuY3Rpb24gSmUoZSl7dmFyIHQ9dy5jc3NQcm9wc1tlXTtyZXR1cm4gdHx8KHQ9dy5jc3NQcm9wc1tlXT1RZShlKXx8ZSksdH1mdW5jdGlvbiBLZShlLHQsbil7dmFyIHI9aWUuZXhlYyh0KTtyZXR1cm4gcj9NYXRoLm1heCgwLHJbMl0tKG58fDApKSsoclszXXx8InB4Iik6dH1mdW5jdGlvbiBaZShlLHQsbixyLGksbyl7dmFyIGE9IndpZHRoIj09PXQ/MTowLHM9MCx1PTA7aWYobj09PShyPyJib3JkZXIiOiJjb250ZW50IikpcmV0dXJuIDA7Zm9yKDthPDQ7YSs9MikibWFyZ2luIj09PW4mJih1Kz13LmNzcyhlLG4rb2VbYV0sITAsaSkpLHI/KCJjb250ZW50Ij09PW4mJih1LT13LmNzcyhlLCJwYWRkaW5nIitvZVthXSwhMCxpKSksIm1hcmdpbiIhPT1uJiYodS09dy5jc3MoZSwiYm9yZGVyIitvZVthXSsiV2lkdGgiLCEwLGkpKSk6KHUrPXcuY3NzKGUsInBhZGRpbmciK29lW2FdLCEwLGkpLCJwYWRkaW5nIiE9PW4/dSs9dy5jc3MoZSwiYm9yZGVyIitvZVthXSsiV2lkdGgiLCEwLGkpOnMrPXcuY3NzKGUsImJvcmRlciIrb2VbYV0rIldpZHRoIiwhMCxpKSk7cmV0dXJuIXImJm8+PTAmJih1Kz1NYXRoLm1heCgwLE1hdGguY2VpbChlWyJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpXS1vLXUtcy0uNSkpKSx1fWZ1bmN0aW9uIGV0KGUsdCxuKXt2YXIgcj0kZShlKSxpPUZlKGUsdCxyKSxvPSJib3JkZXItYm94Ij09PXcuY3NzKGUsImJveFNpemluZyIsITEsciksYT1vO2lmKFdlLnRlc3QoaSkpe2lmKCFuKXJldHVybiBpO2k9ImF1dG8ifXJldHVybiBhPWEmJihoLmJveFNpemluZ1JlbGlhYmxlKCl8fGk9PT1lLnN0eWxlW3RdKSwoImF1dG8iPT09aXx8IXBhcnNlRmxvYXQoaSkmJiJpbmxpbmUiPT09dy5jc3MoZSwiZGlzcGxheSIsITEscikpJiYoaT1lWyJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpXSxhPSEwKSwoaT1wYXJzZUZsb2F0KGkpfHwwKStaZShlLHQsbnx8KG8/ImJvcmRlciI6ImNvbnRlbnQiKSxhLHIsaSkrInB4In13LmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPUZlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1HKHQpLHU9WGUudGVzdCh0KSxsPWUuc3R5bGU7aWYodXx8KHQ9SmUocykpLGE9dy5jc3NIb29rc1t0XXx8dy5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09KG89dHlwZW9mIG4pJiYoaT1pZS5leGVjKG4pKSYmaVsxXSYmKG49dWUoZSx0LGkpLG89Im51bWJlciIpLG51bGwhPW4mJm49PT1uJiYoIm51bWJlciI9PT1vJiYobis9aSYmaVszXXx8KHcuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSxoLmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ufHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChsW3RdPSJpbmhlcml0IiksYSYmInNldCJpbiBhJiZ2b2lkIDA9PT0obj1hLnNldChlLG4scikpfHwodT9sLnNldFByb3BlcnR5KHQsbik6bFt0XT1uKSl9fSxjc3M6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHM9Ryh0KTtyZXR1cm4gWGUudGVzdCh0KXx8KHQ9SmUocykpLChhPXcuY3NzSG9va3NbdF18fHcuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPUZlKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIFZlJiYoaT1WZVt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksdy5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHQpe3cuY3NzSG9va3NbdF09e2dldDpmdW5jdGlvbihlLG4scil7aWYobilyZXR1cm4hemUudGVzdCh3LmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP2V0KGUsdCxyKTpzZShlLFVlLGZ1bmN0aW9uKCl7cmV0dXJuIGV0KGUsdCxyKX0pfSxzZXQ6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpLG89JGUoZSksYT0iYm9yZGVyLWJveCI9PT13LmNzcyhlLCJib3hTaXppbmciLCExLG8pLHM9ciYmWmUoZSx0LHIsYSxvKTtyZXR1cm4gYSYmaC5zY3JvbGxib3hTaXplKCk9PT1vLnBvc2l0aW9uJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLXBhcnNlRmxvYXQob1t0XSktWmUoZSx0LCJib3JkZXIiLCExLG8pLS41KSkscyYmKGk9aWUuZXhlYyhuKSkmJiJweCIhPT0oaVszXXx8InB4IikmJihlLnN0eWxlW3RdPW4sbj13LmNzcyhlLHQpKSxLZShlLG4scyl9fX0pLHcuY3NzSG9va3MubWFyZ2luTGVmdD1fZShoLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoRmUoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LXNlKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSx3LmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihlLHQpe3cuY3NzSG9va3NbZSt0XT17ZXhwYW5kOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/bi5zcGxpdCgiICIpOltuXTtyPDQ7cisrKWlbZStvZVtyXSt0XT1vW3JdfHxvW3ItMl18fG9bMF07cmV0dXJuIGl9fSwibWFyZ2luIiE9PWUmJih3LmNzc0hvb2tzW2UrdF0uc2V0PUtlKX0pLHcuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geih0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPSRlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPXcuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj93LnN0eWxlKGUsdCxuKTp3LmNzcyhlLHQpfSxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX19KTtmdW5jdGlvbiB0dChlLHQsbixyLGkpe3JldHVybiBuZXcgdHQucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX13LlR3ZWVuPXR0LHR0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dHQsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8dy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fCh3LmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9dHQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOnR0LnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPXR0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD13LmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6dHQucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sdHQucHJvdG90eXBlLmluaXQucHJvdG90eXBlPXR0LnByb3RvdHlwZSx0dC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD13LmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7dy5meC5zdGVwW2UucHJvcF0/dy5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8bnVsbD09ZS5lbGVtLnN0eWxlW3cuY3NzUHJvcHNbZS5wcm9wXV0mJiF3LmNzc0hvb2tzW2UucHJvcF0/ZS5lbGVtW2UucHJvcF09ZS5ub3c6dy5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCl9fX0sdHQucHJvcEhvb2tzLnNjcm9sbFRvcD10dC5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5lbGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSx3LmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxzd2luZzpmdW5jdGlvbihlKXtyZXR1cm4uNS1NYXRoLmNvcyhlKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LHcuZng9dHQucHJvdG90eXBlLmluaXQsdy5meC5zdGVwPXt9O3ZhciBudCxydCxpdD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sb3Q9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBhdCgpe3J0JiYoITE9PT1yLmhpZGRlbiYmZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/ZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYXQpOmUuc2V0VGltZW91dChhdCx3LmZ4LmludGVydmFsKSx3LmZ4LnRpY2soKSl9ZnVuY3Rpb24gc3QoKXtyZXR1cm4gZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bnQ9dm9pZCAwfSksbnQ9RGF0ZS5ub3coKX1mdW5jdGlvbiB1dChlLHQpe3ZhciBuLHI9MCxpPXtoZWlnaHQ6ZX07Zm9yKHQ9dD8xOjA7cjw0O3IrPTItdClpWyJtYXJnaW4iKyhuPW9lW3JdKV09aVsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKGkub3BhY2l0eT1pLndpZHRoPWUpLGl9ZnVuY3Rpb24gbHQoZSx0LG4pe2Zvcih2YXIgcixpPShwdC50d2VlbmVyc1t0XXx8W10pLmNvbmNhdChwdC50d2VlbmVyc1siKiJdKSxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKHI9aVtvXS5jYWxsKG4sdCxlKSlyZXR1cm4gcn1mdW5jdGlvbiBjdChlLHQsbil7dmFyIHIsaSxvLGEscyx1LGwsYyxmPSJ3aWR0aCJpbiB0fHwiaGVpZ2h0ImluIHQscD10aGlzLGQ9e30saD1lLnN0eWxlLGc9ZS5ub2RlVHlwZSYmYWUoZSkseT1KLmdldChlLCJmeHNob3ciKTtuLnF1ZXVlfHwobnVsbD09KGE9dy5fcXVldWVIb29rcyhlLCJmeCIpKS51bnF1ZXVlZCYmKGEudW5xdWV1ZWQ9MCxzPWEuZW1wdHkuZmlyZSxhLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXthLnVucXVldWVkfHxzKCl9KSxhLnVucXVldWVkKysscC5hbHdheXMoZnVuY3Rpb24oKXtwLmFsd2F5cyhmdW5jdGlvbigpe2EudW5xdWV1ZWQtLSx3LnF1ZXVlKGUsImZ4IikubGVuZ3RofHxhLmVtcHR5LmZpcmUoKX0pfSkpO2ZvcihyIGluIHQpaWYoaT10W3JdLGl0LnRlc3QoaSkpe2lmKGRlbGV0ZSB0W3JdLG89b3x8InRvZ2dsZSI9PT1pLGk9PT0oZz8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09aXx8IXl8fHZvaWQgMD09PXlbcl0pY29udGludWU7Zz0hMH1kW3JdPXkmJnlbcl18fHcuc3R5bGUoZSxyKX1pZigodT0hdy5pc0VtcHR5T2JqZWN0KHQpKXx8IXcuaXNFbXB0eU9iamVjdChkKSl7ZiYmMT09PWUubm9kZVR5cGUmJihuLm92ZXJmbG93PVtoLm92ZXJmbG93LGgub3ZlcmZsb3dYLGgub3ZlcmZsb3dZXSxudWxsPT0obD15JiZ5LmRpc3BsYXkpJiYobD1KLmdldChlLCJkaXNwbGF5IikpLCJub25lIj09PShjPXcuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDooZmUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPXcuY3NzKGUsImRpc3BsYXkiKSxmZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09dy5jc3MoZSwiZmxvYXQiKSYmKHV8fChwLmRvbmUoZnVuY3Rpb24oKXtoLmRpc3BsYXk9bH0pLG51bGw9PWwmJihjPWguZGlzcGxheSxsPSJub25lIj09PWM/IiI6YykpLGguZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cmJihoLm92ZXJmbG93PSJoaWRkZW4iLHAuYWx3YXlzKGZ1bmN0aW9uKCl7aC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGgub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0saC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKSx1PSExO2ZvcihyIGluIGQpdXx8KHk/ImhpZGRlbiJpbiB5JiYoZz15LmhpZGRlbik6eT1KLmFjY2VzcyhlLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxvJiYoeS5oaWRkZW49IWcpLGcmJmZlKFtlXSwhMCkscC5kb25lKGZ1bmN0aW9uKCl7Z3x8ZmUoW2VdKSxKLnJlbW92ZShlLCJmeHNob3ciKTtmb3IociBpbiBkKXcuc3R5bGUoZSxyLGRbcl0pfSkpLHU9bHQoZz95W3JdOjAscixwKSxyIGluIHl8fCh5W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9fWZ1bmN0aW9uIGZ0KGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlmKHI9RyhuKSxpPXRbcl0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT13LmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKXtvPWEuZXhwYW5kKG8pLGRlbGV0ZSBlW3JdO2ZvcihuIGluIG8pbiBpbiBlfHwoZVtuXT1vW25dLHRbbl09aSl9ZWxzZSB0W3JdPWl9ZnVuY3Rpb24gcHQoZSx0LG4pe3ZhciByLGksbz0wLGE9cHQucHJlZmlsdGVycy5sZW5ndGgscz13LkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihpKXJldHVybiExO2Zvcih2YXIgdD1udHx8c3QoKSxuPU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi10KSxyPTEtKG4vbC5kdXJhdGlvbnx8MCksbz0wLGE9bC50d2VlbnMubGVuZ3RoO288YTtvKyspbC50d2VlbnNbb10ucnVuKHIpO3JldHVybiBzLm5vdGlmeVdpdGgoZSxbbCxyLG5dKSxyPDEmJmE/bjooYXx8cy5ub3RpZnlXaXRoKGUsW2wsMSwwXSkscy5yZXNvbHZlV2l0aChlLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTplLHByb3BzOncuZXh0ZW5kKHt9LHQpLG9wdHM6dy5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOncuZWFzaW5nLl9kZWZhdWx0fSxuKSxvcmlnaW5hbFByb3BlcnRpZXM6dCxvcmlnaW5hbE9wdGlvbnM6bixzdGFydFRpbWU6bnR8fHN0KCksZHVyYXRpb246bi5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCxuKXt2YXIgcj13LlR3ZWVuKGUsbC5vcHRzLHQsbixsLm9wdHMuc3BlY2lhbEVhc2luZ1t0XXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gocikscn0sc3RvcDpmdW5jdGlvbih0KXt2YXIgbj0wLHI9dD9sLnR3ZWVucy5sZW5ndGg6MDtpZihpKXJldHVybiB0aGlzO2ZvcihpPSEwO248cjtuKyspbC50d2VlbnNbbl0ucnVuKDEpO3JldHVybiB0PyhzLm5vdGlmeVdpdGgoZSxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKGUsW2wsdF0pKTpzLnJlamVjdFdpdGgoZSxbbCx0XSksdGhpc319KSxjPWwucHJvcHM7Zm9yKGZ0KGMsbC5vcHRzLnNwZWNpYWxFYXNpbmcpO288YTtvKyspaWYocj1wdC5wcmVmaWx0ZXJzW29dLmNhbGwobCxlLGMsbC5vcHRzKSlyZXR1cm4gZyhyLnN0b3ApJiYody5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPXIuc3RvcC5iaW5kKHIpKSxyO3JldHVybiB3Lm1hcChjLGx0LGwpLGcobC5vcHRzLnN0YXJ0KSYmbC5vcHRzLnN0YXJ0LmNhbGwoZSxsKSxsLnByb2dyZXNzKGwub3B0cy5wcm9ncmVzcykuZG9uZShsLm9wdHMuZG9uZSxsLm9wdHMuY29tcGxldGUpLmZhaWwobC5vcHRzLmZhaWwpLmFsd2F5cyhsLm9wdHMuYWx3YXlzKSx3LmZ4LnRpbWVyKHcuZXh0ZW5kKHUse2VsZW06ZSxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGx9dy5BbmltYXRpb249dy5leHRlbmQocHQse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jcmVhdGVUd2VlbihlLHQpO3JldHVybiB1ZShuLmVsZW0sZSxpZS5leGVjKHQpLG4pLG59XX0sdHdlZW5lcjpmdW5jdGlvbihlLHQpe2coZSk/KHQ9ZSxlPVsiKiJdKTplPWUubWF0Y2goTSk7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspbj1lW3JdLHB0LnR3ZWVuZXJzW25dPXB0LnR3ZWVuZXJzW25dfHxbXSxwdC50d2VlbmVyc1tuXS51bnNoaWZ0KHQpfSxwcmVmaWx0ZXJzOltjdF0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9wdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6cHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLHcuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT93LmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fGcoZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIWcodCkmJnR9O3JldHVybiB3LmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiB3LmZ4LnNwZWVkcz9yLmR1cmF0aW9uPXcuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249dy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7ZyhyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmdy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LHcuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT13LmlzRW1wdHlPYmplY3QoZSksbz13LnNwZWVkKHQsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIHQ9cHQodGhpcyx3LmV4dGVuZCh7fSxlKSxvKTsoaXx8Si5nZXQodGhpcywiZmluaXNoIikpJiZ0LnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChuKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlJiYobj10LHQ9ZSxlPXZvaWQgMCksdCYmITEhPT1lJiZ0aGlzLnF1ZXVlKGV8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PSEwLGk9bnVsbCE9ZSYmZSsicXVldWVIb29rcyIsbz13LnRpbWVycyxhPUouZ2V0KHRoaXMpO2lmKGkpYVtpXSYmYVtpXS5zdG9wJiZyKGFbaV0pO2Vsc2UgZm9yKGkgaW4gYSlhW2ldJiZhW2ldLnN0b3AmJm90LnRlc3QoaSkmJnIoYVtpXSk7Zm9yKGk9by5sZW5ndGg7aS0tOylvW2ldLmVsZW0hPT10aGlzfHxudWxsIT1lJiZvW2ldLnF1ZXVlIT09ZXx8KG9baV0uYW5pbS5zdG9wKG4pLHQ9ITEsby5zcGxpY2UoaSwxKSk7IXQmJm58fHcuZGVxdWV1ZSh0aGlzLGUpfSl9LGZpbmlzaDpmdW5jdGlvbihlKXtyZXR1cm4hMSE9PWUmJihlPWV8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0LG49Si5nZXQodGhpcykscj1uW2UrInF1ZXVlIl0saT1uW2UrInF1ZXVlSG9va3MiXSxvPXcudGltZXJzLGE9cj9yLmxlbmd0aDowO2ZvcihuLmZpbmlzaD0hMCx3LnF1ZXVlKHRoaXMsZSxbXSksaSYmaS5zdG9wJiZpLnN0b3AuY2FsbCh0aGlzLCEwKSx0PW8ubGVuZ3RoO3QtLTspb1t0XS5lbGVtPT09dGhpcyYmb1t0XS5xdWV1ZT09PWUmJihvW3RdLmFuaW0uc3RvcCghMCksby5zcGxpY2UodCwxKSk7Zm9yKHQ9MDt0PGE7dCsrKXJbdF0mJnJbdF0uZmluaXNoJiZyW3RdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBuLmZpbmlzaH0pfX0pLHcuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oZSx0KXt2YXIgbj13LmZuW3RdO3cuZm5bdF09ZnVuY3Rpb24oZSxyLGkpe3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZSh1dCh0LCEwKSxlLHIsaSl9fSksdy5lYWNoKHtzbGlkZURvd246dXQoInNob3ciKSxzbGlkZVVwOnV0KCJoaWRlIiksc2xpZGVUb2dnbGU6dXQoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oZSx0KXt3LmZuW2VdPWZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQsZSxuLHIpfX0pLHcudGltZXJzPVtdLHcuZngudGljaz1mdW5jdGlvbigpe3ZhciBlLHQ9MCxuPXcudGltZXJzO2ZvcihudD1EYXRlLm5vdygpO3Q8bi5sZW5ndGg7dCsrKShlPW5bdF0pKCl8fG5bdF0hPT1lfHxuLnNwbGljZSh0LS0sMSk7bi5sZW5ndGh8fHcuZnguc3RvcCgpLG50PXZvaWQgMH0sdy5meC50aW1lcj1mdW5jdGlvbihlKXt3LnRpbWVycy5wdXNoKGUpLHcuZnguc3RhcnQoKX0sdy5meC5pbnRlcnZhbD0xMyx3LmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7cnR8fChydD0hMCxhdCgpKX0sdy5meC5zdG9wPWZ1bmN0aW9uKCl7cnQ9bnVsbH0sdy5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sdy5mbi5kZWxheT1mdW5jdGlvbih0LG4pe3JldHVybiB0PXcuZng/dy5meC5zcGVlZHNbdF18fHQ6dCxuPW58fCJmeCIsdGhpcy5xdWV1ZShuLGZ1bmN0aW9uKG4scil7dmFyIGk9ZS5zZXRUaW1lb3V0KG4sdCk7ci5zdG9wPWZ1bmN0aW9uKCl7ZS5jbGVhclRpbWVvdXQoaSl9fSl9LGZ1bmN0aW9uKCl7dmFyIGU9ci5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHQ9ci5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChyLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTtlLnR5cGU9ImNoZWNrYm94IixoLmNoZWNrT249IiIhPT1lLnZhbHVlLGgub3B0U2VsZWN0ZWQ9dC5zZWxlY3RlZCwoZT1yLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0IixlLnR5cGU9InJhZGlvIixoLnJhZGlvVmFsdWU9InQiPT09ZS52YWx1ZX0oKTt2YXIgZHQsaHQ9dy5leHByLmF0dHJIYW5kbGU7dy5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geih0aGlzLHcuYXR0cixlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dy5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSx3LmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP3cucHJvcChlLHQsbik6KDE9PT1vJiZ3LmlzWE1MRG9jKGUpfHwoaT13LmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwody5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9kdDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgdy5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj13LmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIWgucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJk4oZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKE0pO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLGR0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD93LnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSx3LmVhY2gody5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgbj1odFt0XXx8dy5maW5kLmF0dHI7aHRbdF09ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLG8sYT10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIHJ8fChvPWh0W2FdLGh0W2FdPWksaT1udWxsIT1uKGUsdCxyKT9hOm51bGwsaHRbYV09byksaX19KTt2YXIgZ3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx5dD0vXig/OmF8YXJlYSkkL2k7dy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geih0aGlzLHcucHJvcCxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdy5wcm9wRml4W2VdfHxlXX0pfX0pLHcuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmdy5pc1hNTERvYyhlKXx8KHQ9dy5wcm9wRml4W3RdfHx0LGk9dy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXcuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6Z3QudGVzdChlLm5vZGVOYW1lKXx8eXQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksaC5vcHRTZWxlY3RlZHx8KHcucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSx3LmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe3cucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KTtmdW5jdGlvbiB2dChlKXtyZXR1cm4oZS5tYXRjaChNKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB4dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZT9lLm1hdGNoKE0pfHxbXTpbXX13LmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsdT0wO2lmKGcoZSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbih0KXt3KHRoaXMpLmFkZENsYXNzKGUuY2FsbCh0aGlzLHQsbXQodGhpcykpKX0pO2lmKCh0PXh0KGUpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1tdChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIrdnQoaSkrIiAiKXthPTA7d2hpbGUobz10W2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9dnQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscyx1PTA7aWYoZyhlKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3codGhpcykucmVtb3ZlQ2xhc3MoZS5jYWxsKHRoaXMsdCxtdCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigodD14dChlKSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9bXQobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK3Z0KGkpKyIgIil7YT0wO3doaWxlKG89dFthKytdKXdoaWxlKHIuaW5kZXhPZigiICIrbysiICIpPi0xKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz12dChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dHlwZW9mIGUscj0ic3RyaW5nIj09PW58fEFycmF5LmlzQXJyYXkoZSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmcj90P3RoaXMuYWRkQ2xhc3MoZSk6dGhpcy5yZW1vdmVDbGFzcyhlKTpnKGUpP3RoaXMuZWFjaChmdW5jdGlvbihuKXt3KHRoaXMpLnRvZ2dsZUNsYXNzKGUuY2FsbCh0aGlzLG4sbXQodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxpLG8sYTtpZihyKXtpPTAsbz13KHRoaXMpLGE9eHQoZSk7d2hpbGUodD1hW2krK10pby5oYXNDbGFzcyh0KT9vLnJlbW92ZUNsYXNzKHQpOm8uYWRkQ2xhc3ModCl9ZWxzZSB2b2lkIDAhPT1lJiYiYm9vbGVhbiIhPT1ufHwoKHQ9bXQodGhpcykpJiZKLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIix0KSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIix0fHwhMT09PWU/IiI6Si5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYoIiAiK3Z0KG10KG4pKSsiICIpLmluZGV4T2YodCk+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIGJ0PS9cci9nO3cuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gcj1nKGUpLHRoaXMuZWFjaChmdW5jdGlvbihuKXt2YXIgaTsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PShpPXI/ZS5jYWxsKHRoaXMsbix3KHRoaXMpLnZhbCgpKTplKT9pPSIiOiJudW1iZXIiPT10eXBlb2YgaT9pKz0iIjpBcnJheS5pc0FycmF5KGkpJiYoaT13Lm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHQ9dy52YWxIb29rc1t0aGlzLnR5cGVdfHx3LnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHQmJnZvaWQgMCE9PXQuc2V0KHRoaXMsaSwidmFsdWUiKXx8KHRoaXMudmFsdWU9aSkpfSk7aWYoaSlyZXR1cm4odD13LnZhbEhvb2tzW2kudHlwZV18fHcudmFsSG9va3NbaS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gdCYmdm9pZCAwIT09KG49dC5nZXQoaSwidmFsdWUiKSk/bjoic3RyaW5nIj09dHlwZW9mKG49aS52YWx1ZSk/bi5yZXBsYWNlKGJ0LCIiKTpudWxsPT1uPyIiOm59fX0pLHcuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dy5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90OnZ0KHcudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKCgobj1pW3JdKS5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFOKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9dyhuKS52YWwoKSxhKXJldHVybiB0O3MucHVzaCh0KX1yZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPXcubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKSgocj1pW2FdKS5zZWxlY3RlZD13LmluQXJyYXkody52YWxIb29rcy5vcHRpb24uZ2V0KHIpLG8pPi0xKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksdy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7dy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gZS5jaGVja2VkPXcuaW5BcnJheSh3KGUpLnZhbCgpLHQpPi0xfX0saC5jaGVja09ufHwody52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmUudmFsdWV9KX0pLGguZm9jdXNpbj0ib25mb2N1c2luImluIGU7dmFyIHd0PS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxUdD1mdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfTt3LmV4dGVuZCh3LmV2ZW50LHt0cmlnZ2VyOmZ1bmN0aW9uKHQsbixpLG8pe3ZhciBhLHMsdSxsLGMscCxkLGgsdj1baXx8cl0sbT1mLmNhbGwodCwidHlwZSIpP3QudHlwZTp0LHg9Zi5jYWxsKHQsIm5hbWVzcGFjZSIpP3QubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYocz1oPXU9aT1pfHxyLDMhPT1pLm5vZGVUeXBlJiY4IT09aS5ub2RlVHlwZSYmIXd0LnRlc3QobSt3LmV2ZW50LnRyaWdnZXJlZCkmJihtLmluZGV4T2YoIi4iKT4tMSYmKG09KHg9bS5zcGxpdCgiLiIpKS5zaGlmdCgpLHguc29ydCgpKSxjPW0uaW5kZXhPZigiOiIpPDAmJiJvbiIrbSx0PXRbdy5leHBhbmRvXT90Om5ldyB3LkV2ZW50KG0sIm9iamVjdCI9PXR5cGVvZiB0JiZ0KSx0LmlzVHJpZ2dlcj1vPzI6Myx0Lm5hbWVzcGFjZT14LmpvaW4oIi4iKSx0LnJuYW1lc3BhY2U9dC5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIreC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLHQucmVzdWx0PXZvaWQgMCx0LnRhcmdldHx8KHQudGFyZ2V0PWkpLG49bnVsbD09bj9bdF06dy5tYWtlQXJyYXkobixbdF0pLGQ9dy5ldmVudC5zcGVjaWFsW21dfHx7fSxvfHwhZC50cmlnZ2VyfHwhMSE9PWQudHJpZ2dlci5hcHBseShpLG4pKSl7aWYoIW8mJiFkLm5vQnViYmxlJiYheShpKSl7Zm9yKGw9ZC5kZWxlZ2F0ZVR5cGV8fG0sd3QudGVzdChsK20pfHwocz1zLnBhcmVudE5vZGUpO3M7cz1zLnBhcmVudE5vZGUpdi5wdXNoKHMpLHU9czt1PT09KGkub3duZXJEb2N1bWVudHx8cikmJnYucHVzaCh1LmRlZmF1bHRWaWV3fHx1LnBhcmVudFdpbmRvd3x8ZSl9YT0wO3doaWxlKChzPXZbYSsrXSkmJiF0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpaD1zLHQudHlwZT1hPjE/bDpkLmJpbmRUeXBlfHxtLChwPShKLmdldChzLCJldmVudHMiKXx8e30pW3QudHlwZV0mJkouZ2V0KHMsImhhbmRsZSIpKSYmcC5hcHBseShzLG4pLChwPWMmJnNbY10pJiZwLmFwcGx5JiZZKHMpJiYodC5yZXN1bHQ9cC5hcHBseShzLG4pLCExPT09dC5yZXN1bHQmJnQucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIHQudHlwZT1tLG98fHQuaXNEZWZhdWx0UHJldmVudGVkKCl8fGQuX2RlZmF1bHQmJiExIT09ZC5fZGVmYXVsdC5hcHBseSh2LnBvcCgpLG4pfHwhWShpKXx8YyYmZyhpW21dKSYmIXkoaSkmJigodT1pW2NdKSYmKGlbY109bnVsbCksdy5ldmVudC50cmlnZ2VyZWQ9bSx0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmguYWRkRXZlbnRMaXN0ZW5lcihtLFR0KSxpW21dKCksdC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZoLnJlbW92ZUV2ZW50TGlzdGVuZXIobSxUdCksdy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLHUmJihpW2NdPXUpKSx0LnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj13LmV4dGVuZChuZXcgdy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTt3LmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLHcuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3cuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIHcuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSksaC5mb2N1c2lufHx3LmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dy5ldmVudC5zaW11bGF0ZSh0LGUudGFyZ2V0LHcuZXZlbnQuZml4KGUpKX07dy5ldmVudC5zcGVjaWFsW3RdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciByPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxpPUouYWNjZXNzKHIsdCk7aXx8ci5hZGRFdmVudExpc3RlbmVyKGUsbiwhMCksSi5hY2Nlc3Mocix0LChpfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgcj10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsaT1KLmFjY2VzcyhyLHQpLTE7aT9KLmFjY2VzcyhyLHQsaSk6KHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITApLEoucmVtb3ZlKHIsdCkpfX19KTt2YXIgQ3Q9ZS5sb2NhdGlvbixFdD1EYXRlLm5vdygpLGt0PS9cPy87dy5wYXJzZVhNTD1mdW5jdGlvbih0KXt2YXIgbjtpZighdHx8InN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBudWxsO3RyeXtuPShuZXcgZS5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LCJ0ZXh0L3htbCIpfWNhdGNoKGUpe249dm9pZCAwfXJldHVybiBuJiYhbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGh8fHcuZXJyb3IoIkludmFsaWQgWE1MOiAiK3QpLG59O3ZhciBTdD0vXFtcXSQvLER0PS9ccj9cbi9nLE50PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxBdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24ganQoZSx0LG4scil7dmFyIGk7aWYoQXJyYXkuaXNBcnJheSh0KSl3LmVhY2godCxmdW5jdGlvbih0LGkpe258fFN0LnRlc3QoZSk/cihlLGkpOmp0KGUrIlsiKygib2JqZWN0Ij09dHlwZW9mIGkmJm51bGwhPWk/dDoiIikrIl0iLGksbixyKX0pO2Vsc2UgaWYobnx8Im9iamVjdCIhPT14KHQpKXIoZSx0KTtlbHNlIGZvcihpIGluIHQpanQoZSsiWyIraSsiXSIsdFtpXSxuLHIpfXcucGFyYW09ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj1nKHQpP3QoKTp0O3Jbci5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChlKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG51bGw9PW4/IiI6bil9O2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhdy5pc1BsYWluT2JqZWN0KGUpKXcuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpanQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSx3LmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHcucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT13LnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT93Lm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiF3KHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmQXQudGVzdCh0aGlzLm5vZGVOYW1lKSYmIU50LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPXcodGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP3cubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShEdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRHQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgcXQ9LyUyMC9nLEx0PS8jLiokLyxIdD0vKFs/Jl0pXz1bXiZdKi8sT3Q9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxQdD0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxNdD0vXig/OkdFVHxIRUFEKSQvLFJ0PS9eXC9cLy8sSXQ9e30sV3Q9e30sJHQ9IiovIi5jb25jYXQoIioiKSxCdD1yLmNyZWF0ZUVsZW1lbnQoImEiKTtCdC5ocmVmPUN0LmhyZWY7ZnVuY3Rpb24gRnQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7InN0cmluZyIhPXR5cGVvZiB0JiYobj10LHQ9IioiKTt2YXIgcixpPTAsbz10LnRvTG93ZXJDYXNlKCkubWF0Y2goTSl8fFtdO2lmKGcobikpd2hpbGUocj1vW2krK10pIisiPT09clswXT8ocj1yLnNsaWNlKDEpfHwiKiIsKGVbcl09ZVtyXXx8W10pLnVuc2hpZnQobikpOihlW3JdPWVbcl18fFtdKS5wdXNoKG4pfX1mdW5jdGlvbiBfdChlLHQsbixyKXt2YXIgaT17fSxvPWU9PT1XdDtmdW5jdGlvbiBhKHMpe3ZhciB1O3JldHVybiBpW3NdPSEwLHcuZWFjaChlW3NdfHxbXSxmdW5jdGlvbihlLHMpe3ZhciBsPXModCxuLHIpO3JldHVybiJzdHJpbmciIT10eXBlb2YgbHx8b3x8aVtsXT9vPyEodT1sKTp2b2lkIDA6KHQuZGF0YVR5cGVzLnVuc2hpZnQobCksYShsKSwhMSl9KSx1fXJldHVybiBhKHQuZGF0YVR5cGVzWzBdKXx8IWlbIioiXSYmYSgiKiIpfWZ1bmN0aW9uIHp0KGUsdCl7dmFyIG4scixpPXcuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IobiBpbiB0KXZvaWQgMCE9PXRbbl0mJigoaVtuXT9lOnJ8fChyPXt9KSlbbl09dFtuXSk7cmV0dXJuIHImJncuZXh0ZW5kKCEwLGUsciksZX1mdW5jdGlvbiBYdChlLHQsbil7dmFyIHIsaSxvLGEscz1lLmNvbnRlbnRzLHU9ZS5kYXRhVHlwZXM7d2hpbGUoIioiPT09dVswXSl1LnNoaWZ0KCksdm9pZCAwPT09ciYmKHI9ZS5taW1lVHlwZXx8dC5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKHIpZm9yKGkgaW4gcylpZihzW2ldJiZzW2ldLnRlc3Qocikpe3UudW5zaGlmdChpKTticmVha31pZih1WzBdaW4gbilvPXVbMF07ZWxzZXtmb3IoaSBpbiBuKXtpZighdVswXXx8ZS5jb252ZXJ0ZXJzW2krIiAiK3VbMF1dKXtvPWk7YnJlYWt9YXx8KGE9aSl9bz1vfHxhfWlmKG8pcmV0dXJuIG8hPT11WzBdJiZ1LnVuc2hpZnQobyksbltvXX1mdW5jdGlvbiBVdChlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fXcuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpDdC5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDpQdC50ZXN0KEN0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOiR0LHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjp3LnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD96dCh6dChlLHcuYWpheFNldHRpbmdzKSx0KTp6dCh3LmFqYXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpGdChJdCksYWpheFRyYW5zcG9ydDpGdChXdCksYWpheDpmdW5jdGlvbih0LG4peyJvYmplY3QiPT10eXBlb2YgdCYmKG49dCx0PXZvaWQgMCksbj1ufHx7fTt2YXIgaSxvLGEscyx1LGwsYyxmLHAsZCxoPXcuYWpheFNldHVwKHt9LG4pLGc9aC5jb250ZXh0fHxoLHk9aC5jb250ZXh0JiYoZy5ub2RlVHlwZXx8Zy5qcXVlcnkpP3coZyk6dy5ldmVudCx2PXcuRGVmZXJyZWQoKSxtPXcuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHg9aC5zdGF0dXNDb2RlfHx7fSxiPXt9LFQ9e30sQz0iY2FuY2VsZWQiLEU9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdDtpZihjKXtpZighcyl7cz17fTt3aGlsZSh0PU90LmV4ZWMoYSkpc1t0WzFdLnRvTG93ZXJDYXNlKCldPXRbMl19dD1zW2UudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PXQ/bnVsbDp0fSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gYz9hOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09YyYmKGU9VFtlLnRvTG93ZXJDYXNlKCldPVRbZS50b0xvd2VyQ2FzZSgpXXx8ZSxiW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWMmJihoLm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihjKUUuYWx3YXlzKGVbRS5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpeFt0XT1beFt0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8QztyZXR1cm4gaSYmaS5hYm9ydCh0KSxrKDAsdCksdGhpc319O2lmKHYucHJvbWlzZShFKSxoLnVybD0oKHR8fGgudXJsfHxDdC5ocmVmKSsiIikucmVwbGFjZShSdCxDdC5wcm90b2NvbCsiLy8iKSxoLnR5cGU9bi5tZXRob2R8fG4udHlwZXx8aC5tZXRob2R8fGgudHlwZSxoLmRhdGFUeXBlcz0oaC5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKE0pfHxbIiJdLG51bGw9PWguY3Jvc3NEb21haW4pe2w9ci5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2wuaHJlZj1oLnVybCxsLmhyZWY9bC5ocmVmLGguY3Jvc3NEb21haW49QnQucHJvdG9jb2wrIi8vIitCdC5ob3N0IT1sLnByb3RvY29sKyIvLyIrbC5ob3N0fWNhdGNoKGUpe2guY3Jvc3NEb21haW49ITB9fWlmKGguZGF0YSYmaC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBoLmRhdGEmJihoLmRhdGE9dy5wYXJhbShoLmRhdGEsaC50cmFkaXRpb25hbCkpLF90KEl0LGgsbixFKSxjKXJldHVybiBFOyhmPXcuZXZlbnQmJmguZ2xvYmFsKSYmMD09dy5hY3RpdmUrKyYmdy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxoLnR5cGU9aC50eXBlLnRvVXBwZXJDYXNlKCksaC5oYXNDb250ZW50PSFNdC50ZXN0KGgudHlwZSksbz1oLnVybC5yZXBsYWNlKEx0LCIiKSxoLmhhc0NvbnRlbnQ/aC5kYXRhJiZoLnByb2Nlc3NEYXRhJiYwPT09KGguY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKGguZGF0YT1oLmRhdGEucmVwbGFjZShxdCwiKyIpKTooZD1oLnVybC5zbGljZShvLmxlbmd0aCksaC5kYXRhJiYoaC5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiBoLmRhdGEpJiYobys9KGt0LnRlc3Qobyk/IiYiOiI/IikraC5kYXRhLGRlbGV0ZSBoLmRhdGEpLCExPT09aC5jYWNoZSYmKG89by5yZXBsYWNlKEh0LCIkMSIpLGQ9KGt0LnRlc3Qobyk/IiYiOiI/IikrIl89IitFdCsrK2QpLGgudXJsPW8rZCksaC5pZk1vZGlmaWVkJiYody5sYXN0TW9kaWZpZWRbb10mJkUuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHcubGFzdE1vZGlmaWVkW29dKSx3LmV0YWdbb10mJkUuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsdy5ldGFnW29dKSksKGguZGF0YSYmaC5oYXNDb250ZW50JiYhMSE9PWguY29udGVudFR5cGV8fG4uY29udGVudFR5cGUpJiZFLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsaC5jb250ZW50VHlwZSksRS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGguZGF0YVR5cGVzWzBdJiZoLmFjY2VwdHNbaC5kYXRhVHlwZXNbMF1dP2guYWNjZXB0c1toLmRhdGFUeXBlc1swXV0rKCIqIiE9PWguZGF0YVR5cGVzWzBdPyIsICIrJHQrIjsgcT0wLjAxIjoiIik6aC5hY2NlcHRzWyIqIl0pO2ZvcihwIGluIGguaGVhZGVycylFLnNldFJlcXVlc3RIZWFkZXIocCxoLmhlYWRlcnNbcF0pO2lmKGguYmVmb3JlU2VuZCYmKCExPT09aC5iZWZvcmVTZW5kLmNhbGwoZyxFLGgpfHxjKSlyZXR1cm4gRS5hYm9ydCgpO2lmKEM9ImFib3J0IixtLmFkZChoLmNvbXBsZXRlKSxFLmRvbmUoaC5zdWNjZXNzKSxFLmZhaWwoaC5lcnJvciksaT1fdChXdCxoLG4sRSkpe2lmKEUucmVhZHlTdGF0ZT0xLGYmJnkudHJpZ2dlcigiYWpheFNlbmQiLFtFLGhdKSxjKXJldHVybiBFO2guYXN5bmMmJmgudGltZW91dD4wJiYodT1lLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtFLmFib3J0KCJ0aW1lb3V0Iil9LGgudGltZW91dCkpO3RyeXtjPSExLGkuc2VuZChiLGspfWNhdGNoKGUpe2lmKGMpdGhyb3cgZTtrKC0xLGUpfX1lbHNlIGsoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGsodCxuLHIscyl7dmFyIGwscCxkLGIsVCxDPW47Y3x8KGM9ITAsdSYmZS5jbGVhclRpbWVvdXQodSksaT12b2lkIDAsYT1zfHwiIixFLnJlYWR5U3RhdGU9dD4wPzQ6MCxsPXQ+PTIwMCYmdDwzMDB8fDMwND09PXQsciYmKGI9WHQoaCxFLHIpKSxiPVV0KGgsYixFLGwpLGw/KGguaWZNb2RpZmllZCYmKChUPUUuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSkmJih3Lmxhc3RNb2RpZmllZFtvXT1UKSwoVD1FLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYody5ldGFnW29dPVQpKSwyMDQ9PT10fHwiSEVBRCI9PT1oLnR5cGU/Qz0ibm9jb250ZW50IjozMDQ9PT10P0M9Im5vdG1vZGlmaWVkIjooQz1iLnN0YXRlLHA9Yi5kYXRhLGw9IShkPWIuZXJyb3IpKSk6KGQ9QywhdCYmQ3x8KEM9ImVycm9yIix0PDAmJih0PTApKSksRS5zdGF0dXM9dCxFLnN0YXR1c1RleHQ9KG58fEMpKyIiLGw/di5yZXNvbHZlV2l0aChnLFtwLEMsRV0pOnYucmVqZWN0V2l0aChnLFtFLEMsZF0pLEUuc3RhdHVzQ29kZSh4KSx4PXZvaWQgMCxmJiZ5LnRyaWdnZXIobD8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFtFLGgsbD9wOmRdKSxtLmZpcmVXaXRoKGcsW0UsQ10pLGYmJih5LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0UsaF0pLC0tdy5hY3RpdmV8fHcuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBFfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdy5nZXQoZSx0LG4sImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHcuZ2V0KGUsdm9pZCAwLHQsInNjcmlwdCIpfX0pLHcuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLHQpe3dbdF09ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIGcobikmJihpPWl8fHIscj1uLG49dm9pZCAwKSx3LmFqYXgody5leHRlbmQoe3VybDplLHR5cGU6dCxkYXRhVHlwZTppLGRhdGE6bixzdWNjZXNzOnJ9LHcuaXNQbGFpbk9iamVjdChlKSYmZSkpfX0pLHcuX2V2YWxVcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIHcuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sdy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXNbMF0mJihnKGUpJiYoZT1lLmNhbGwodGhpc1swXSkpLHQ9dyhlLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmdC5pbnNlcnRCZWZvcmUodGhpc1swXSksdC5tYXAoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkuYXBwZW5kKHRoaXMpKSx0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSk/dGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3codGhpcykud3JhcElubmVyKGUuY2FsbCh0aGlzLHQpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXcodGhpcyksbj10LmNvbnRlbnRzKCk7bi5sZW5ndGg/bi53cmFwQWxsKGUpOnQuYXBwZW5kKGUpfSl9LHdyYXA6ZnVuY3Rpb24oZSl7dmFyIHQ9ZyhlKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKG4pe3codGhpcykud3JhcEFsbCh0P2UuY2FsbCh0aGlzLG4pOmUpfSl9LHVud3JhcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wYXJlbnQoZSkubm90KCJib2R5IikuZWFjaChmdW5jdGlvbigpe3codGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLHRoaXN9fSksdy5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiF3LmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSx3LmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUub2Zmc2V0V2lkdGh8fGUub2Zmc2V0SGVpZ2h0fHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sdy5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgZS5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgVnQ9ezA6MjAwLDEyMjM6MjA0fSxHdD13LmFqYXhTZXR0aW5ncy54aHIoKTtoLmNvcnM9ISFHdCYmIndpdGhDcmVkZW50aWFscyJpbiBHdCxoLmFqYXg9R3Q9ISFHdCx3LmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24odCl7dmFyIG4scjtpZihoLmNvcnN8fEd0JiYhdC5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihpLG8pe3ZhciBhLHM9dC54aHIoKTtpZihzLm9wZW4odC50eXBlLHQudXJsLHQuYXN5bmMsdC51c2VybmFtZSx0LnBhc3N3b3JkKSx0LnhockZpZWxkcylmb3IoYSBpbiB0LnhockZpZWxkcylzW2FdPXQueGhyRmllbGRzW2FdO3QubWltZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZSYmcy5vdmVycmlkZU1pbWVUeXBlKHQubWltZVR5cGUpLHQuY3Jvc3NEb21haW58fGlbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGlbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoYSBpbiBpKXMuc2V0UmVxdWVzdEhlYWRlcihhLGlbYV0pO249ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7biYmKG49cj1zLm9ubG9hZD1zLm9uZXJyb3I9cy5vbmFib3J0PXMub250aW1lb3V0PXMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWU/cy5hYm9ydCgpOiJlcnJvciI9PT1lPyJudW1iZXIiIT10eXBlb2Ygcy5zdGF0dXM/bygwLCJlcnJvciIpOm8ocy5zdGF0dXMscy5zdGF0dXNUZXh0KTpvKFZ0W3Muc3RhdHVzXXx8cy5zdGF0dXMscy5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShzLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiBzLnJlc3BvbnNlVGV4dD97YmluYXJ5OnMucmVzcG9uc2V9Ont0ZXh0OnMucmVzcG9uc2VUZXh0fSxzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxzLm9ubG9hZD1uKCkscj1zLm9uZXJyb3I9cy5vbnRpbWVvdXQ9bigiZXJyb3IiKSx2b2lkIDAhPT1zLm9uYWJvcnQ/cy5vbmFib3J0PXI6cy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09cy5yZWFkeVN0YXRlJiZlLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtuJiZyKCl9KX0sbj1uKCJhYm9ydCIpO3RyeXtzLnNlbmQodC5oYXNDb250ZW50JiZ0LmRhdGF8fG51bGwpfWNhdGNoKGUpe2lmKG4pdGhyb3cgZX19LGFib3J0OmZ1bmN0aW9uKCl7biYmbigpfX19KSx3LmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7ZS5jcm9zc0RvbWFpbiYmKGUuY29udGVudHMuc2NyaXB0PSExKX0pLHcuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiB3Lmdsb2JhbEV2YWwoZSksZX19fSksdy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pLHcuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihlKXtpZihlLmNyb3NzRG9tYWluKXt2YXIgdCxuO3JldHVybntzZW5kOmZ1bmN0aW9uKGksbyl7dD13KCI8c2NyaXB0PiIpLnByb3Aoe2NoYXJzZXQ6ZS5zY3JpcHRDaGFyc2V0LHNyYzplLnVybH0pLm9uKCJsb2FkIGVycm9yIixuPWZ1bmN0aW9uKGUpe3QucmVtb3ZlKCksbj1udWxsLGUmJm8oImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxyLmhlYWQuYXBwZW5kQ2hpbGQodFswXSl9LGFib3J0OmZ1bmN0aW9uKCl7biYmbigpfX19fSk7dmFyIFl0PVtdLFF0PS8oPSlcPyg/PSZ8JCl8XD9cPy87dy5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBlPVl0LnBvcCgpfHx3LmV4cGFuZG8rIl8iK0V0Kys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSx3LmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKHQsbixyKXt2YXIgaSxvLGEscz0hMSE9PXQuanNvbnAmJihRdC50ZXN0KHQudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIHQuZGF0YSYmMD09PSh0LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJlF0LnRlc3QodC5kYXRhKSYmImRhdGEiKTtpZihzfHwianNvbnAiPT09dC5kYXRhVHlwZXNbMF0pcmV0dXJuIGk9dC5qc29ucENhbGxiYWNrPWcodC5qc29ucENhbGxiYWNrKT90Lmpzb25wQ2FsbGJhY2soKTp0Lmpzb25wQ2FsbGJhY2sscz90W3NdPXRbc10ucmVwbGFjZShRdCwiJDEiK2kpOiExIT09dC5qc29ucCYmKHQudXJsKz0oa3QudGVzdCh0LnVybCk/IiYiOiI/IikrdC5qc29ucCsiPSIraSksdC5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGF8fHcuZXJyb3IoaSsiIHdhcyBub3QgY2FsbGVkIiksYVswXX0sdC5kYXRhVHlwZXNbMF09Impzb24iLG89ZVtpXSxlW2ldPWZ1bmN0aW9uKCl7YT1hcmd1bWVudHN9LHIuYWx3YXlzKGZ1bmN0aW9uKCl7dm9pZCAwPT09bz93KGUpLnJlbW92ZVByb3AoaSk6ZVtpXT1vLHRbaV0mJih0Lmpzb25wQ2FsbGJhY2s9bi5qc29ucENhbGxiYWNrLFl0LnB1c2goaSkpLGEmJmcobykmJm8oYVswXSksYT1vPXZvaWQgMH0pLCJzY3JpcHQifSksaC5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVuY3Rpb24oKXt2YXIgZT1yLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTtyZXR1cm4gZS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09ZS5jaGlsZE5vZGVzLmxlbmd0aH0oKSx3LnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybltdOyJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0hMSk7dmFyIGksbyxhO3JldHVybiB0fHwoaC5jcmVhdGVIVE1MRG9jdW1lbnQ/KChpPSh0PXIuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPXIubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQoaSkpOnQ9ciksbz1BLmV4ZWMoZSksYT0hbiYmW10sbz9bdC5jcmVhdGVFbGVtZW50KG9bMV0pXToobz14ZShbZV0sdCxhKSxhJiZhLmxlbmd0aCYmdyhhKS5yZW1vdmUoKSx3Lm1lcmdlKFtdLG8uY2hpbGROb2RlcykpfSx3LmZuLmxvYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPXRoaXMscz1lLmluZGV4T2YoIiAiKTtyZXR1cm4gcz4tMSYmKHI9dnQoZS5zbGljZShzKSksZT1lLnNsaWNlKDAscykpLGcodCk/KG49dCx0PXZvaWQgMCk6dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYoaT0iUE9TVCIpLGEubGVuZ3RoPjAmJncuYWpheCh7dXJsOmUsdHlwZTppfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTp0fSkuZG9uZShmdW5jdGlvbihlKXtvPWFyZ3VtZW50cyxhLmh0bWwocj93KCI8ZGl2PiIpLmFwcGVuZCh3LnBhcnNlSFRNTChlKSkuZmluZChyKTplKX0pLmFsd2F5cyhuJiZmdW5jdGlvbihlLHQpe2EuZWFjaChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KX0pLHRoaXN9LHcuZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGUsdCl7dy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbih0LGUpfX0pLHcuZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKGUpe3JldHVybiB3LmdyZXAody50aW1lcnMsZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10LmVsZW19KS5sZW5ndGh9LHcub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGM9dy5jc3MoZSwicG9zaXRpb24iKSxmPXcoZSkscD17fTsic3RhdGljIj09PWMmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Zi5vZmZzZXQoKSxvPXcuY3NzKGUsInRvcCIpLHU9dy5jc3MoZSwibGVmdCIpLChsPSgiYWJzb2x1dGUiPT09Y3x8ImZpeGVkIj09PWMpJiYobyt1KS5pbmRleE9mKCJhdXRvIik+LTEpPyhhPShyPWYucG9zaXRpb24oKSkudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksZyh0KSYmKHQ9dC5jYWxsKGUsbix3LmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYocC50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYocC5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUscCk6Zi5jc3MocCl9fSx3LmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGUpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWU/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24odCl7dy5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsZSx0KX0pO3ZhciB0LG4scj10aGlzWzBdO2lmKHIpcmV0dXJuIHIuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KHQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOnQudG9wK24ucGFnZVlPZmZzZXQsbGVmdDp0LmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09dy5jc3MociwicG9zaXRpb24iKSl0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt0PXRoaXMub2Zmc2V0KCksbj1yLm93bmVyRG9jdW1lbnQsZT1yLm9mZnNldFBhcmVudHx8bi5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmKGU9PT1uLmJvZHl8fGU9PT1uLmRvY3VtZW50RWxlbWVudCkmJiJzdGF0aWMiPT09dy5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJigoaT13KGUpLm9mZnNldCgpKS50b3ArPXcuY3NzKGUsImJvcmRlclRvcFdpZHRoIiwhMCksaS5sZWZ0Kz13LmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC13LmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtdy5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50O3doaWxlKGUmJiJzdGF0aWMiPT09dy5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxiZX0pfX0pLHcuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihlLHQpe3ZhciBuPSJwYWdlWU9mZnNldCI9PT10O3cuZm5bZV09ZnVuY3Rpb24ocil7cmV0dXJuIHoodGhpcyxmdW5jdGlvbihlLHIsaSl7dmFyIG87aWYoeShlKT9vPWU6OT09PWUubm9kZVR5cGUmJihvPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PWkpcmV0dXJuIG8/b1t0XTplW3JdO28/by5zY3JvbGxUbyhuP28ucGFnZVhPZmZzZXQ6aSxuP2k6by5wYWdlWU9mZnNldCk6ZVtyXT1pfSxlLHIsYXJndW1lbnRzLmxlbmd0aCl9fSksdy5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGUsdCl7dy5jc3NIb29rc1t0XT1fZShoLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSxuKXtpZihuKXJldHVybiBuPUZlKGUsdCksV2UudGVzdChuKT93KGUpLnBvc2l0aW9uKClbdF0rInB4IjpufSl9KSx3LmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihlLHQpe3cuZWFjaCh7cGFkZGluZzoiaW5uZXIiK2UsY29udGVudDp0LCIiOiJvdXRlciIrZX0sZnVuY3Rpb24obixyKXt3LmZuW3JdPWZ1bmN0aW9uKGksbyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aCYmKG58fCJib29sZWFuIiE9dHlwZW9mIGkpLHM9bnx8KCEwPT09aXx8ITA9PT1vPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4geih0aGlzLGZ1bmN0aW9uKHQsbixpKXt2YXIgbztyZXR1cm4geSh0KT8wPT09ci5pbmRleE9mKCJvdXRlciIpP3RbImlubmVyIitlXTp0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IitlXTo5PT09dC5ub2RlVHlwZT8obz10LmRvY3VtZW50RWxlbWVudCxNYXRoLm1heCh0LmJvZHlbInNjcm9sbCIrZV0sb1sic2Nyb2xsIitlXSx0LmJvZHlbIm9mZnNldCIrZV0sb1sib2Zmc2V0IitlXSxvWyJjbGllbnQiK2VdKSk6dm9pZCAwPT09aT93LmNzcyh0LG4scyk6dy5zdHlsZSh0LG4saSxzKX0sdCxhP2k6dm9pZCAwLGEpfX0pfSksdy5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7dy5mblt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbih0LG51bGwsZSxuKTp0aGlzLnRyaWdnZXIodCl9fSksdy5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLHcuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX19KSx3LnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxnKGUpKXJldHVybiByPW8uY2FsbChhcmd1bWVudHMsMiksaT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHR8fHRoaXMsci5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fHcuZ3VpZCsrLGl9LHcuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/dy5yZWFkeVdhaXQrKzp3LnJlYWR5KCEwKX0sdy5pc0FycmF5PUFycmF5LmlzQXJyYXksdy5wYXJzZUpTT049SlNPTi5wYXJzZSx3Lm5vZGVOYW1lPU4sdy5pc0Z1bmN0aW9uPWcsdy5pc1dpbmRvdz15LHcuY2FtZWxDYXNlPUcsdy50eXBlPXgsdy5ub3c9RGF0ZS5ub3csdy5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9dy50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gd30pO3ZhciBKdD1lLmpRdWVyeSxLdD1lLiQ7cmV0dXJuIHcubm9Db25mbGljdD1mdW5jdGlvbih0KXtyZXR1cm4gZS4kPT09dyYmKGUuJD1LdCksdCYmZS5qUXVlcnk9PT13JiYoZS5qUXVlcnk9SnQpLHd9LHR8fChlLmpRdWVyeT1lLiQ9dyksd30pOwo="}},"time_used":40,"timings":{"blocked":-1,"dns":0,"connect":10,"send":0,"wait":10,"receive":3,"ssl":17},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/varelaround/v21/w8gdH283Tvk__Lua32TysjIfp8uP.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.178.67","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:24.038Z","timestamp":1785161544038,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:25 GMT","end":"Mon, 21 Sep 2026 08:39:24 GMT"},"fingerprint":{"sha1":"4E:F2:73:C6:27:16:58:35:FE:55:D5:30:6B:E8:6D:2B:DA:B0:E8:7B","sha256":"82:EF:6A:61:96:A5:23:D6:2C:2C:9D:77:67:04:D8:7B:3B:6A:50:DA:3C:6C:6A:5F:4E:2D:55:F3:FC:DA:0B:EE"}}},"request":{"raw":"GET /s/varelaround/v21/w8gdH283Tvk__Lua32TysjIfp8uP.woff2 HTTP/1.1\r\nHost: fonts.gstatic.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: application/font-woff2;q=1.0,application/font-woff;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: identity\r\nOrigin: https://myve.web.id\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://fonts.googleapis.com/\r\nSec-Fetch-Dest: font\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=5\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\naccept-ranges: bytes\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/apps-themes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"apps-themes\"\r\nreport-to: {\"group\":\"apps-themes\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/apps-themes\"}]}\r\ntiming-allow-origin: *\r\ncontent-length: 22948\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 23 Jul 2026 10:06:04 GMT\r\nexpires: Fri, 23 Jul 2027 10:06:04 GMT\r\ncache-control: public, max-age=31536000\r\nage: 360380\r\nlast-modified: Wed, 10 Sep 2025 17:05:22 GMT\r\ncontent-type: font/woff2\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":22948,"size_decoded":23761,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 22948, version 1.0","md5":"43868dd7e63c31ae25f8d773cfdb7a3a","sha1":"9830ded0c45de18a5788051a7f3b0feb0e10d78a","sha256":"03871f86c86fc776f89d0cb947502f3957181b63327fecaec724bc39d082319f","sha512":"5e9658d210f7f014d01f5172f4991f3e74ab92cf388e2ebed096acc5433971b4208cfe4b1c557bf0682afe12b32c30953cea3c3cb2a61e8883154d04c20691c5","ssdeep":"384:JfPEir4qwsJ/VUGPRFa0g2eakI+LuL+I8CAdDPshYEC2tOo8jAjO:JfPEPsoGYjakD+ZQAOE+1KO","tlshash":"bca2e12dba19bea54fae36ed22d71619009e1dadf118d01cd99d29b30fb4733930c994","first_seen":"2025-09-11T18:45:47.841169Z","last_seen":"2026-07-31T05:05:01.126681Z","times_seen":7887,"resource_available":false,"data":"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"}},"time_used":58,"timings":{"blocked":0,"dns":3,"connect":30,"send":0,"wait":17,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T14:12:22.851Z","timestamp":1785161542851,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"myve.web.id","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Sat, 04 Jul 2026 04:55:51 GMT","end":"Fri, 02 Oct 2026 04:55:50 GMT"},"fingerprint":{"sha1":"D9:F7:B3:E3:72:C7:4A:65:7E:55:9F:8B:EA:E5:BF:04:9A:D0:64:37","sha256":"36:BE:8E:4D:7A:FA:CC:63:B3:35:42:9C:D8:AC:C2:16:EB:B2:08:D8:5F:D7:42:9D:35:AF:D7:F5:32:44:7C:79"}}},"request":{"raw":"GET /pengaktifann-fitur-daanaterfending HTTP/1.1\r\nHost: myve.web.id\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 301 \r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nserver: cloudflare\r\nlocation: https://myve.web.id/pengaktifann-fitur-daanaterfending/\r\npriority: u=0,i\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=VBTv2OYHW45JW%2BN8Zel6B3AH3%2FIE6iEs5On3Q4sUcVqfqQNxDC3BvX6hkHihzR5tKRpeWxbm1aPAxuerQbrjPUEkaDKFLP17d6iu5vO7M4Ahh4fbROPJynAsN6sm3Q%3D%3D\"}]}\r\ncontent-type: text/html; charset=iso-8859-1\r\ncf-cache-status: DYNAMIC\r\ncf-ray: a21c3d1b1ff82efa-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"301","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":0,"size_decoded":0,"mime_type":"text/html; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-31T05:31:15.491978Z","times_seen":17629337,"resource_available":true,"data":null}},"time_used":242,"timings":{"blocked":-1,"dns":16,"connect":22,"send":0,"wait":203,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.714Z","timestamp":1785161543714,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.github.io","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 23:26:07 GMT","end":"Wed, 02 Sep 2026 23:26:06 GMT"},"fingerprint":{"sha1":"3F:87:BE:75:1A:02:3B:A4:D2:51:D2:72:92:A0:00:61:D1:D0:D7:12","sha256":"32:49:1B:26:BF:AF:7B:FB:55:60:29:EF:32:29:9A:C4:37:4D:B3:4D:09:EE:CD:4F:FD:01:F2:1B:2C:5A:85:67"}}},"request":{"raw":"GET /OwlCarousel2/assets/owlcarousel/owl.carousel.js HTTP/1.1\r\nHost: owlcarousel2.github.io\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: GitHub.com\r\ncontent-type: application/javascript; charset=utf-8\r\nx-origin-cache: HIT\r\nlast-modified: Fri, 20 Apr 2018 13:22:52 GMT\r\naccess-control-allow-origin: *\r\netag: W/\"5ad9e9ac-15f88\"\r\nexpires: Mon, 06 Jul 2026 15:48:14 GMT\r\ncache-control: max-age=600\r\ncontent-encoding: gzip\r\nx-proxy-cache: MISS\r\nx-github-request-id: D3FA:3C3D59:485194:4E6D45:6A4BCBE6\r\naccept-ranges: bytes\r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nvia: 1.1 varnish\r\nage: 223\r\nx-served-by: cache-bma-essb1270022-BMA\r\nx-cache: HIT\r\nx-cache-hits: 1\r\nx-timer: S1785161544.747937,VS0,VE3\r\nvary: Accept-Encoding\r\nx-fastly-request-id: ab36c649a0672247f79b3f20c7caba52e4b4394f\r\ncontent-length: 20465\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Fastly","description":"Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video \u0026 streaming services.","website":"https://www.fastly.com","common_platform_enumeration":"","icon":"Fastly.svg","categories":["CDN"]},{"name":"GitHub Pages","description":"GitHub Pages is a static site hosting service.","website":"https://pages.github.com/","common_platform_enumeration":"","icon":"GitHub.svg","categories":["PaaS"]},{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]}],"data":{"size":89992,"size_decoded":21172,"mime_type":"application/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (360)","md5":"ccdf893e7d8b26933af0c336bcc3943e","sha1":"ac575ba3377f95ef22bad865ec35b0b3dcb0dfe0","sha256":"db9d6cf3c1c4b047c62f646e7d9991c06a212931c362bf53f9a2406b30f09466","sha512":"818db99c2eb775d1342dc2cf871509185c5ad86a08c80e452f29b8509a870c43078e9f11113e999ff487a35b25b6ddd6b95b6a7f2c4408fdfcfdd69473f59510","ssdeep":"1536:owLoreUC7AuLMjvNlP8GNMBJ6IcIhKJQIOybQOoiYM9OJ0QQKOv:oUMNlPBqJTuOGQOotEhKOv","tlshash":"bf9393c5f36c261b422631785eae23ce723d402ad911186f7ca8e9dc29d546c436eff9","first_seen":"2023-03-07T01:03:43Z","last_seen":"2026-07-31T05:05:01.135524Z","times_seen":12594,"resource_available":true,"data":"LyoqCiAqIE93bCBDYXJvdXNlbCB2Mi4zLjQKICogQ29weXJpZ2h0IDIwMTMtMjAxOCBEYXZpZCBEZXV0c2NoCiAqIExpY2Vuc2VkIHVuZGVyOiBTRUUgTElDRU5TRSBJTiBodHRwczovL2dpdGh1Yi5jb20vT3dsQ2Fyb3VzZWwyL093bENhcm91c2VsMi9ibG9iL21hc3Rlci9MSUNFTlNFCiAqLwovKioKICogT3dsIGNhcm91c2VsCiAqIEB2ZXJzaW9uIDIuMy40CiAqIEBhdXRob3IgQmFydG9zeiBXb2pjaWVjaG93c2tpCiAqIEBhdXRob3IgRGF2aWQgRGV1dHNjaAogKiBAbGljZW5zZSBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICogQHRvZG8gTGF6eSBMb2FkIEljb24KICogQHRvZG8gcHJldmVudCBhbmltYXRpb25lbmQgYnVibGluZwogKiBAdG9kbyBpdGVtc1NjYWxlVXAKICogQHRvZG8gVGVzdCBaZXB0bwogKiBAdG9kbyBzdGFnZVBhZGRpbmcgY2FsY3VsYXRlIHdyb25nIGFjdGl2ZSBjbGFzc2VzCiAqLwo7KGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKCS8qKgoJICogQ3JlYXRlcyBhIGNhcm91c2VsLgoJICogQGNsYXNzIFRoZSBPd2wgQ2Fyb3VzZWwuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge0hUTUxFbGVtZW50fGpRdWVyeX0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIGNyZWF0ZSB0aGUgY2Fyb3VzZWwgZm9yLgoJICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIFRoZSBvcHRpb25zCgkgKi8KCWZ1bmN0aW9uIE93bChlbGVtZW50LCBvcHRpb25zKSB7CgoJCS8qKgoJCSAqIEN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSBjYXJvdXNlbC4KCQkgKiBAcHVibGljCgkJICovCgkJdGhpcy5zZXR0aW5ncyA9IG51bGw7CgoJCS8qKgoJCSAqIEN1cnJlbnQgb3B0aW9ucyBzZXQgYnkgdGhlIGNhbGxlciBpbmNsdWRpbmcgZGVmYXVsdHMuCgkJICogQHB1YmxpYwoJCSAqLwoJCXRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBPd2wuRGVmYXVsdHMsIG9wdGlvbnMpOwoKCQkvKioKCQkgKiBQbHVnaW4gZWxlbWVudC4KCQkgKiBAcHVibGljCgkJICovCgkJdGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudCk7CgoJCS8qKgoJCSAqIFByb3hpZWQgZXZlbnQgaGFuZGxlcnMuCgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX2hhbmRsZXJzID0ge307CgoJCS8qKgoJCSAqIFJlZmVyZW5jZXMgdG8gdGhlIHJ1bm5pbmcgcGx1Z2lucyBvZiB0aGlzIGNhcm91c2VsLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKi8KCQl0aGlzLl9wbHVnaW5zID0ge307CgoJCS8qKgoJCSAqIEN1cnJlbnRseSBzdXBwcmVzc2VkIGV2ZW50cyB0byBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyByZXRyaWdnZXJlZC4KCQkgKiBAcHJvdGVjdGVkCgkJICovCgkJdGhpcy5fc3VwcmVzcyA9IHt9OwoKCQkvKioKCQkgKiBBYnNvbHV0ZSBjdXJyZW50IHBvc2l0aW9uLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKi8KCQl0aGlzLl9jdXJyZW50ID0gbnVsbDsKCgkJLyoqCgkJICogQW5pbWF0aW9uIHNwZWVkIGluIG1pbGxpc2Vjb25kcy4KCQkgKiBAcHJvdGVjdGVkCgkJICovCgkJdGhpcy5fc3BlZWQgPSBudWxsOwoKCQkvKioKCQkgKiBDb29yZGluYXRlcyBvZiBhbGwgaXRlbXMgaW4gcGl4ZWwuCgkJICogQHRvZG8gVGhlIG5hbWUgb2YgdGhpcyBtZW1iZXIgaXMgbWlzc2xlYWRpbmcuCgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX2Nvb3JkaW5hdGVzID0gW107CgoJCS8qKgoJCSAqIEN1cnJlbnQgYnJlYWtwb2ludC4KCQkgKiBAdG9kbyBSZWFsIG1lZGlhIHF1ZXJpZXMgd291bGQgYmUgbmljZS4KCQkgKiBAcHJvdGVjdGVkCgkJICovCgkJdGhpcy5fYnJlYWtwb2ludCA9IG51bGw7CgoJCS8qKgoJCSAqIEN1cnJlbnQgd2lkdGggb2YgdGhlIHBsdWdpbiBlbGVtZW50LgoJCSAqLwoJCXRoaXMuX3dpZHRoID0gbnVsbDsKCgkJLyoqCgkJICogQWxsIHJlYWwgaXRlbXMuCgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX2l0ZW1zID0gW107CgoJCS8qKgoJCSAqIEFsbCBjbG9uZWQgaXRlbXMuCgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX2Nsb25lcyA9IFtdOwoKCQkvKioKCQkgKiBNZXJnZSB2YWx1ZXMgb2YgYWxsIGl0ZW1zLgoJCSAqIEB0b2RvIE1heWJlIHRoaXMgY291bGQgYmUgcGFydCBvZiBhIHBsdWdpbi4KCQkgKiBAcHJvdGVjdGVkCgkJICovCgkJdGhpcy5fbWVyZ2VycyA9IFtdOwoKCQkvKioKCQkgKiBXaWR0aHMgb2YgYWxsIGl0ZW1zLgoJCSAqLwoJCXRoaXMuX3dpZHRocyA9IFtdOwoKCQkvKioKCQkgKiBJbnZhbGlkYXRlZCBwYXJ0cyB3aXRoaW4gdGhlIHVwZGF0ZSBwcm9jZXNzLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKi8KCQl0aGlzLl9pbnZhbGlkYXRlZCA9IHt9OwoKCQkvKioKCQkgKiBPcmRlcmVkIGxpc3Qgb2Ygd29ya2VycyBmb3IgdGhlIHVwZGF0ZSBwcm9jZXNzLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKi8KCQl0aGlzLl9waXBlID0gW107CgoJCS8qKgoJCSAqIEN1cnJlbnQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHRoZSBkcmFnIG9wZXJhdGlvbi4KCQkgKiBAdG9kbyAjMjYxCgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX2RyYWcgPSB7CgkJCXRpbWU6IG51bGwsCgkJCXRhcmdldDogbnVsbCwKCQkJcG9pbnRlcjogbnVsbCwKCQkJc3RhZ2U6IHsKCQkJCXN0YXJ0OiBudWxsLAoJCQkJY3VycmVudDogbnVsbAoJCQl9LAoJCQlkaXJlY3Rpb246IG51bGwKCQl9OwoKCQkvKioKCQkgKiBDdXJyZW50IHN0YXRlIGluZm9ybWF0aW9uIGFuZCB0aGVpciB0YWdzLgoJCSAqIEB0eXBlIHtPYmplY3R9CgkJICogQHByb3RlY3RlZAoJCSAqLwoJCXRoaXMuX3N0YXRlcyA9IHsKCQkJY3VycmVudDoge30sCgkJCXRhZ3M6IHsKCQkJCSdpbml0aWFsaXppbmcnOiBbICdidXN5JyBdLAoJCQkJJ2FuaW1hdGluZyc6IFsgJ2J1c3knIF0sCgkJCQknZHJhZ2dpbmcnOiBbICdpbnRlcmFjdGluZycgXQoJCQl9CgkJfTsKCgkJJC5lYWNoKFsgJ29uUmVzaXplJywgJ29uVGhyb3R0bGVkUmVzaXplJyBdLCAkLnByb3h5KGZ1bmN0aW9uKGksIGhhbmRsZXIpIHsKCQkJdGhpcy5faGFuZGxlcnNbaGFuZGxlcl0gPSAkLnByb3h5KHRoaXNbaGFuZGxlcl0sIHRoaXMpOwoJCX0sIHRoaXMpKTsKCgkJJC5lYWNoKE93bC5QbHVnaW5zLCAkLnByb3h5KGZ1bmN0aW9uKGtleSwgcGx1Z2luKSB7CgkJCXRoaXMuX3BsdWdpbnNba2V5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsga2V5LnNsaWNlKDEpXQoJCQkJPSBuZXcgcGx1Z2luKHRoaXMpOwoJCX0sIHRoaXMpKTsKCgkJJC5lYWNoKE93bC5Xb3JrZXJzLCAkLnByb3h5KGZ1bmN0aW9uKHByaW9yaXR5LCB3b3JrZXIpIHsKCQkJdGhpcy5fcGlwZS5wdXNoKHsKCQkJCSdmaWx0ZXInOiB3b3JrZXIuZmlsdGVyLAoJCQkJJ3J1bic6ICQucHJveHkod29ya2VyLnJ1biwgdGhpcykKCQkJfSk7CgkJfSwgdGhpcykpOwoKCQl0aGlzLnNldHVwKCk7CgkJdGhpcy5pbml0aWFsaXplKCk7Cgl9CgoJLyoqCgkgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBjYXJvdXNlbC4KCSAqIEBwdWJsaWMKCSAqLwoJT3dsLkRlZmF1bHRzID0gewoJCWl0ZW1zOiAzLAoJCWxvb3A6IGZhbHNlLAoJCWNlbnRlcjogZmFsc2UsCgkJcmV3aW5kOiBmYWxzZSwKCQljaGVja1Zpc2liaWxpdHk6IHRydWUsCgoJCW1vdXNlRHJhZzogdHJ1ZSwKCQl0b3VjaERyYWc6IHRydWUsCgkJcHVsbERyYWc6IHRydWUsCgkJZnJlZURyYWc6IGZhbHNlLAoKCQltYXJnaW46IDAsCgkJc3RhZ2VQYWRkaW5nOiAwLAoKCQltZXJnZTogZmFsc2UsCgkJbWVyZ2VGaXQ6IHRydWUsCgkJYXV0b1dpZHRoOiBmYWxzZSwKCgkJc3RhcnRQb3NpdGlvbjogMCwKCQlydGw6IGZhbHNlLAoKCQlzbWFydFNwZWVkOiAyNTAsCgkJZmx1aWRTcGVlZDogZmFsc2UsCgkJZHJhZ0VuZFNwZWVkOiBmYWxzZSwKCgkJcmVzcG9uc2l2ZToge30sCgkJcmVzcG9uc2l2ZVJlZnJlc2hSYXRlOiAyMDAsCgkJcmVzcG9uc2l2ZUJhc2VFbGVtZW50OiB3aW5kb3csCgoJCWZhbGxiYWNrRWFzaW5nOiAnc3dpbmcnLAoJCXNsaWRlVHJhbnNpdGlvbjogJycsCgoJCWluZm86IGZhbHNlLAoKCQluZXN0ZWRJdGVtU2VsZWN0b3I6IGZhbHNlLAoJCWl0ZW1FbGVtZW50OiAnZGl2JywKCQlzdGFnZUVsZW1lbnQ6ICdkaXYnLAoKCQlyZWZyZXNoQ2xhc3M6ICdvd2wtcmVmcmVzaCcsCgkJbG9hZGVkQ2xhc3M6ICdvd2wtbG9hZGVkJywKCQlsb2FkaW5nQ2xhc3M6ICdvd2wtbG9hZGluZycsCgkJcnRsQ2xhc3M6ICdvd2wtcnRsJywKCQlyZXNwb25zaXZlQ2xhc3M6ICdvd2wtcmVzcG9uc2l2ZScsCgkJZHJhZ0NsYXNzOiAnb3dsLWRyYWcnLAoJCWl0ZW1DbGFzczogJ293bC1pdGVtJywKCQlzdGFnZUNsYXNzOiAnb3dsLXN0YWdlJywKCQlzdGFnZU91dGVyQ2xhc3M6ICdvd2wtc3RhZ2Utb3V0ZXInLAoJCWdyYWJDbGFzczogJ293bC1ncmFiJwoJfTsKCgkvKioKCSAqIEVudW1lcmF0aW9uIGZvciB3aWR0aC4KCSAqIEBwdWJsaWMKCSAqIEByZWFkb25seQoJICogQGVudW0ge1N0cmluZ30KCSAqLwoJT3dsLldpZHRoID0gewoJCURlZmF1bHQ6ICdkZWZhdWx0JywKCQlJbm5lcjogJ2lubmVyJywKCQlPdXRlcjogJ291dGVyJwoJfTsKCgkvKioKCSAqIEVudW1lcmF0aW9uIGZvciB0eXBlcy4KCSAqIEBwdWJsaWMKCSAqIEByZWFkb25seQoJICogQGVudW0ge1N0cmluZ30KCSAqLwoJT3dsLlR5cGUgPSB7CgkJRXZlbnQ6ICdldmVudCcsCgkJU3RhdGU6ICdzdGF0ZScKCX07CgoJLyoqCgkgKiBDb250YWlucyBhbGwgcmVnaXN0ZXJlZCBwbHVnaW5zLgoJICogQHB1YmxpYwoJICovCglPd2wuUGx1Z2lucyA9IHt9OwoKCS8qKgoJICogTGlzdCBvZiB3b3JrZXJzIGludm9sdmVkIGluIHRoZSB1cGRhdGUgcHJvY2Vzcy4KCSAqLwoJT3dsLldvcmtlcnMgPSBbIHsKCQlmaWx0ZXI6IFsgJ3dpZHRoJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX3dpZHRoID0gdGhpcy4kZWxlbWVudC53aWR0aCgpOwoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ3dpZHRoJywgJ2l0ZW1zJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oY2FjaGUpIHsKCQkJY2FjaGUuY3VycmVudCA9IHRoaXMuX2l0ZW1zICYmIHRoaXMuX2l0ZW1zW3RoaXMucmVsYXRpdmUodGhpcy5fY3VycmVudCldOwoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ2l0ZW1zJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXRoaXMuJHN0YWdlLmNoaWxkcmVuKCcuY2xvbmVkJykucmVtb3ZlKCk7CgkJfQoJfSwgewoJCWZpbHRlcjogWyAnd2lkdGgnLCAnaXRlbXMnLCAnc2V0dGluZ3MnIF0sCgkJcnVuOiBmdW5jdGlvbihjYWNoZSkgewoJCQl2YXIgbWFyZ2luID0gdGhpcy5zZXR0aW5ncy5tYXJnaW4gfHwgJycsCgkJCQlncmlkID0gIXRoaXMuc2V0dGluZ3MuYXV0b1dpZHRoLAoJCQkJcnRsID0gdGhpcy5zZXR0aW5ncy5ydGwsCgkJCQljc3MgPSB7CgkJCQkJJ3dpZHRoJzogJ2F1dG8nLAoJCQkJCSdtYXJnaW4tbGVmdCc6IHJ0bCA/IG1hcmdpbiA6ICcnLAoJCQkJCSdtYXJnaW4tcmlnaHQnOiBydGwgPyAnJyA6IG1hcmdpbgoJCQkJfTsKCgkJCSFncmlkICYmIHRoaXMuJHN0YWdlLmNoaWxkcmVuKCkuY3NzKGNzcyk7CgoJCQljYWNoZS5jc3MgPSBjc3M7CgkJfQoJfSwgewoJCWZpbHRlcjogWyAnd2lkdGgnLCAnaXRlbXMnLCAnc2V0dGluZ3MnIF0sCgkJcnVuOiBmdW5jdGlvbihjYWNoZSkgewoJCQl2YXIgd2lkdGggPSAodGhpcy53aWR0aCgpIC8gdGhpcy5zZXR0aW5ncy5pdGVtcykudG9GaXhlZCgzKSAtIHRoaXMuc2V0dGluZ3MubWFyZ2luLAoJCQkJbWVyZ2UgPSBudWxsLAoJCQkJaXRlcmF0b3IgPSB0aGlzLl9pdGVtcy5sZW5ndGgsCgkJCQlncmlkID0gIXRoaXMuc2V0dGluZ3MuYXV0b1dpZHRoLAoJCQkJd2lkdGhzID0gW107CgoJCQljYWNoZS5pdGVtcyA9IHsKCQkJCW1lcmdlOiBmYWxzZSwKCQkJCXdpZHRoOiB3aWR0aAoJCQl9OwoKCQkJd2hpbGUgKGl0ZXJhdG9yLS0pIHsKCQkJCW1lcmdlID0gdGhpcy5fbWVyZ2Vyc1tpdGVyYXRvcl07CgkJCQltZXJnZSA9IHRoaXMuc2V0dGluZ3MubWVyZ2VGaXQgJiYgTWF0aC5taW4obWVyZ2UsIHRoaXMuc2V0dGluZ3MuaXRlbXMpIHx8IG1lcmdlOwoKCQkJCWNhY2hlLml0ZW1zLm1lcmdlID0gbWVyZ2UgPiAxIHx8IGNhY2hlLml0ZW1zLm1lcmdlOwoKCQkJCXdpZHRoc1tpdGVyYXRvcl0gPSAhZ3JpZCA/IHRoaXMuX2l0ZW1zW2l0ZXJhdG9yXS53aWR0aCgpIDogd2lkdGggKiBtZXJnZTsKCQkJfQoKCQkJdGhpcy5fd2lkdGhzID0gd2lkdGhzOwoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ2l0ZW1zJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXZhciBjbG9uZXMgPSBbXSwKCQkJCWl0ZW1zID0gdGhpcy5faXRlbXMsCgkJCQlzZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MsCgkJCQkvLyBUT0RPOiBTaG91bGQgYmUgY29tcHV0ZWQgZnJvbSBudW1iZXIgb2YgbWluIHdpZHRoIGl0ZW1zIGluIHN0YWdlCgkJCQl2aWV3ID0gTWF0aC5tYXgoc2V0dGluZ3MuaXRlbXMgKiAyLCA0KSwKCQkJCXNpemUgPSBNYXRoLmNlaWwoaXRlbXMubGVuZ3RoIC8gMikgKiAyLAoJCQkJcmVwZWF0ID0gc2V0dGluZ3MubG9vcCAmJiBpdGVtcy5sZW5ndGggPyBzZXR0aW5ncy5yZXdpbmQgPyB2aWV3IDogTWF0aC5tYXgodmlldywgc2l6ZSkgOiAwLAoJCQkJYXBwZW5kID0gJycsCgkJCQlwcmVwZW5kID0gJyc7CgoJCQlyZXBlYXQgLz0gMjsKCgkJCXdoaWxlIChyZXBlYXQgPiAwKSB7CgkJCQkvLyBTd2l0Y2ggdG8gb25seSB1c2luZyBhcHBlbmRlZCBjbG9uZXMKCQkJCWNsb25lcy5wdXNoKHRoaXMubm9ybWFsaXplKGNsb25lcy5sZW5ndGggLyAyLCB0cnVlKSk7CgkJCQlhcHBlbmQgPSBhcHBlbmQgKyBpdGVtc1tjbG9uZXNbY2xvbmVzLmxlbmd0aCAtIDFdXVswXS5vdXRlckhUTUw7CgkJCQljbG9uZXMucHVzaCh0aGlzLm5vcm1hbGl6ZShpdGVtcy5sZW5ndGggLSAxIC0gKGNsb25lcy5sZW5ndGggLSAxKSAvIDIsIHRydWUpKTsKCQkJCXByZXBlbmQgPSBpdGVtc1tjbG9uZXNbY2xvbmVzLmxlbmd0aCAtIDFdXVswXS5vdXRlckhUTUwgKyBwcmVwZW5kOwoJCQkJcmVwZWF0IC09IDE7CgkJCX0KCgkJCXRoaXMuX2Nsb25lcyA9IGNsb25lczsKCgkJCSQoYXBwZW5kKS5hZGRDbGFzcygnY2xvbmVkJykuYXBwZW5kVG8odGhpcy4kc3RhZ2UpOwoJCQkkKHByZXBlbmQpLmFkZENsYXNzKCdjbG9uZWQnKS5wcmVwZW5kVG8odGhpcy4kc3RhZ2UpOwoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ3dpZHRoJywgJ2l0ZW1zJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXZhciBydGwgPSB0aGlzLnNldHRpbmdzLnJ0bCA/IDEgOiAtMSwKCQkJCXNpemUgPSB0aGlzLl9jbG9uZXMubGVuZ3RoICsgdGhpcy5faXRlbXMubGVuZ3RoLAoJCQkJaXRlcmF0b3IgPSAtMSwKCQkJCXByZXZpb3VzID0gMCwKCQkJCWN1cnJlbnQgPSAwLAoJCQkJY29vcmRpbmF0ZXMgPSBbXTsKCgkJCXdoaWxlICgrK2l0ZXJhdG9yIDwgc2l6ZSkgewoJCQkJcHJldmlvdXMgPSBjb29yZGluYXRlc1tpdGVyYXRvciAtIDFdIHx8IDA7CgkJCQljdXJyZW50ID0gdGhpcy5fd2lkdGhzW3RoaXMucmVsYXRpdmUoaXRlcmF0b3IpXSArIHRoaXMuc2V0dGluZ3MubWFyZ2luOwoJCQkJY29vcmRpbmF0ZXMucHVzaChwcmV2aW91cyArIGN1cnJlbnQgKiBydGwpOwoJCQl9CgoJCQl0aGlzLl9jb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzOwoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ3dpZHRoJywgJ2l0ZW1zJywgJ3NldHRpbmdzJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXZhciBwYWRkaW5nID0gdGhpcy5zZXR0aW5ncy5zdGFnZVBhZGRpbmcsCgkJCQljb29yZGluYXRlcyA9IHRoaXMuX2Nvb3JkaW5hdGVzLAoJCQkJY3NzID0gewoJCQkJCSd3aWR0aCc6IE1hdGguY2VpbChNYXRoLmFicyhjb29yZGluYXRlc1tjb29yZGluYXRlcy5sZW5ndGggLSAxXSkpICsgcGFkZGluZyAqIDIsCgkJCQkJJ3BhZGRpbmctbGVmdCc6IHBhZGRpbmcgfHwgJycsCgkJCQkJJ3BhZGRpbmctcmlnaHQnOiBwYWRkaW5nIHx8ICcnCgkJCQl9OwoKCQkJdGhpcy4kc3RhZ2UuY3NzKGNzcyk7CgkJfQoJfSwgewoJCWZpbHRlcjogWyAnd2lkdGgnLCAnaXRlbXMnLCAnc2V0dGluZ3MnIF0sCgkJcnVuOiBmdW5jdGlvbihjYWNoZSkgewoJCQl2YXIgaXRlcmF0b3IgPSB0aGlzLl9jb29yZGluYXRlcy5sZW5ndGgsCgkJCQlncmlkID0gIXRoaXMuc2V0dGluZ3MuYXV0b1dpZHRoLAoJCQkJaXRlbXMgPSB0aGlzLiRzdGFnZS5jaGlsZHJlbigpOwoKCQkJaWYgKGdyaWQgJiYgY2FjaGUuaXRlbXMubWVyZ2UpIHsKCQkJCXdoaWxlIChpdGVyYXRvci0tKSB7CgkJCQkJY2FjaGUuY3NzLndpZHRoID0gdGhpcy5fd2lkdGhzW3RoaXMucmVsYXRpdmUoaXRlcmF0b3IpXTsKCQkJCQlpdGVtcy5lcShpdGVyYXRvcikuY3NzKGNhY2hlLmNzcyk7CgkJCQl9CgkJCX0gZWxzZSBpZiAoZ3JpZCkgewoJCQkJY2FjaGUuY3NzLndpZHRoID0gY2FjaGUuaXRlbXMud2lkdGg7CgkJCQlpdGVtcy5jc3MoY2FjaGUuY3NzKTsKCQkJfQoJCX0KCX0sIHsKCQlmaWx0ZXI6IFsgJ2l0ZW1zJyBdLAoJCXJ1bjogZnVuY3Rpb24oKSB7CgkJCXRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCA8IDEgJiYgdGhpcy4kc3RhZ2UucmVtb3ZlQXR0cignc3R5bGUnKTsKCQl9Cgl9LCB7CgkJZmlsdGVyOiBbICd3aWR0aCcsICdpdGVtcycsICdzZXR0aW5ncycgXSwKCQlydW46IGZ1bmN0aW9uKGNhY2hlKSB7CgkJCWNhY2hlLmN1cnJlbnQgPSBjYWNoZS5jdXJyZW50ID8gdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5pbmRleChjYWNoZS5jdXJyZW50KSA6IDA7CgkJCWNhY2hlLmN1cnJlbnQgPSBNYXRoLm1heCh0aGlzLm1pbmltdW0oKSwgTWF0aC5taW4odGhpcy5tYXhpbXVtKCksIGNhY2hlLmN1cnJlbnQpKTsKCQkJdGhpcy5yZXNldChjYWNoZS5jdXJyZW50KTsKCQl9Cgl9LCB7CgkJZmlsdGVyOiBbICdwb3NpdGlvbicgXSwKCQlydW46IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmFuaW1hdGUodGhpcy5jb29yZGluYXRlcyh0aGlzLl9jdXJyZW50KSk7CgkJfQoJfSwgewoJCWZpbHRlcjogWyAnd2lkdGgnLCAncG9zaXRpb24nLCAnaXRlbXMnLCAnc2V0dGluZ3MnIF0sCgkJcnVuOiBmdW5jdGlvbigpIHsKCQkJdmFyIHJ0bCA9IHRoaXMuc2V0dGluZ3MucnRsID8gMSA6IC0xLAoJCQkJcGFkZGluZyA9IHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nICogMiwKCQkJCWJlZ2luID0gdGhpcy5jb29yZGluYXRlcyh0aGlzLmN1cnJlbnQoKSkgKyBwYWRkaW5nLAoJCQkJZW5kID0gYmVnaW4gKyB0aGlzLndpZHRoKCkgKiBydGwsCgkJCQlpbm5lciwgb3V0ZXIsIG1hdGNoZXMgPSBbXSwgaSwgbjsKCgkJCWZvciAoaSA9IDAsIG4gPSB0aGlzLl9jb29yZGluYXRlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsKCQkJCWlubmVyID0gdGhpcy5fY29vcmRpbmF0ZXNbaSAtIDFdIHx8IDA7CgkJCQlvdXRlciA9IE1hdGguYWJzKHRoaXMuX2Nvb3JkaW5hdGVzW2ldKSArIHBhZGRpbmcgKiBydGw7CgoJCQkJaWYgKCh0aGlzLm9wKGlubmVyLCAnPD0nLCBiZWdpbikgJiYgKHRoaXMub3AoaW5uZXIsICc+JywgZW5kKSkpCgkJCQkJfHwgKHRoaXMub3Aob3V0ZXIsICc8JywgYmVnaW4pICYmIHRoaXMub3Aob3V0ZXIsICc+JywgZW5kKSkpIHsKCQkJCQltYXRjaGVzLnB1c2goaSk7CgkJCQl9CgkJCX0KCgkJCXRoaXMuJHN0YWdlLmNoaWxkcmVuKCcuYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwoJCQl0aGlzLiRzdGFnZS5jaGlsZHJlbignOmVxKCcgKyBtYXRjaGVzLmpvaW4oJyksIDplcSgnKSArICcpJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoKCQkJdGhpcy4kc3RhZ2UuY2hpbGRyZW4oJy5jZW50ZXInKS5yZW1vdmVDbGFzcygnY2VudGVyJyk7CgkJCWlmICh0aGlzLnNldHRpbmdzLmNlbnRlcikgewoJCQkJdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS5lcSh0aGlzLmN1cnJlbnQoKSkuYWRkQ2xhc3MoJ2NlbnRlcicpOwoJCQl9CgkJfQoJfSBdOwoKCS8qKgoJICogQ3JlYXRlIHRoZSBzdGFnZSBET00gZWxlbWVudAoJICovCglPd2wucHJvdG90eXBlLmluaXRpYWxpemVTdGFnZSA9IGZ1bmN0aW9uKCkgewoJCXRoaXMuJHN0YWdlID0gdGhpcy4kZWxlbWVudC5maW5kKCcuJyArIHRoaXMuc2V0dGluZ3Muc3RhZ2VDbGFzcyk7CgoJCS8vIGlmIHRoZSBzdGFnZSBpcyBhbHJlYWR5IGluIHRoZSBET00sIGdyYWIgaXQgYW5kIHNraXAgc3RhZ2UgaW5pdGlhbGl6YXRpb24KCQlpZiAodGhpcy4kc3RhZ2UubGVuZ3RoKSB7CgkJCXJldHVybjsKCQl9CgoJCXRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcyk7CgoJCS8vIGNyZWF0ZSBzdGFnZQoJCXRoaXMuJHN0YWdlID0gJCgnPCcgKyB0aGlzLnNldHRpbmdzLnN0YWdlRWxlbWVudCArICc+JywgewoJCQkiY2xhc3MiOiB0aGlzLnNldHRpbmdzLnN0YWdlQ2xhc3MKCQl9KS53cmFwKCAkKCAnPGRpdi8+JywgewoJCQkiY2xhc3MiOiB0aGlzLnNldHRpbmdzLnN0YWdlT3V0ZXJDbGFzcwoJCX0pKTsKCgkJLy8gYXBwZW5kIHN0YWdlCgkJdGhpcy4kZWxlbWVudC5hcHBlbmQodGhpcy4kc3RhZ2UucGFyZW50KCkpOwoJfTsKCgkvKioKCSAqIENyZWF0ZSBpdGVtIERPTSBlbGVtZW50cwoJICovCglPd2wucHJvdG90eXBlLmluaXRpYWxpemVJdGVtcyA9IGZ1bmN0aW9uKCkgewoJCXZhciAkaXRlbXMgPSB0aGlzLiRlbGVtZW50LmZpbmQoJy5vd2wtaXRlbScpOwoKCQkvLyBpZiB0aGUgaXRlbXMgYXJlIGFscmVhZHkgaW4gdGhlIERPTSwgZ3JhYiB0aGVtIGFuZCBza2lwIGl0ZW0gaW5pdGlhbGl6YXRpb24KCQlpZiAoJGl0ZW1zLmxlbmd0aCkgewoJCQl0aGlzLl9pdGVtcyA9ICRpdGVtcy5nZXQoKS5tYXAoZnVuY3Rpb24oaXRlbSkgewoJCQkJcmV0dXJuICQoaXRlbSk7CgkJCX0pOwoKCQkJdGhpcy5fbWVyZ2VycyA9IHRoaXMuX2l0ZW1zLm1hcChmdW5jdGlvbigpIHsKCQkJCXJldHVybiAxOwoJCQl9KTsKCgkJCXRoaXMucmVmcmVzaCgpOwoKCQkJcmV0dXJuOwoJCX0KCgkJLy8gYXBwZW5kIGNvbnRlbnQKCQl0aGlzLnJlcGxhY2UodGhpcy4kZWxlbWVudC5jaGlsZHJlbigpLm5vdCh0aGlzLiRzdGFnZS5wYXJlbnQoKSkpOwoKCQkvLyBjaGVjayB2aXNpYmlsaXR5CgkJaWYgKHRoaXMuaXNWaXNpYmxlKCkpIHsKCQkJLy8gdXBkYXRlIHZpZXcKCQkJdGhpcy5yZWZyZXNoKCk7CgkJfSBlbHNlIHsKCQkJLy8gaW52YWxpZGF0ZSB3aWR0aAoJCQl0aGlzLmludmFsaWRhdGUoJ3dpZHRoJyk7CgkJfQoKCQl0aGlzLiRlbGVtZW50CgkJCS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMubG9hZGluZ0NsYXNzKQoJCQkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRlZENsYXNzKTsKCX07CgoJLyoqCgkgKiBJbml0aWFsaXplcyB0aGUgY2Fyb3VzZWwuCgkgKiBAcHJvdGVjdGVkCgkgKi8KCU93bC5wcm90b3R5cGUuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkgewoJCXRoaXMuZW50ZXIoJ2luaXRpYWxpemluZycpOwoJCXRoaXMudHJpZ2dlcignaW5pdGlhbGl6ZScpOwoKCQl0aGlzLiRlbGVtZW50LnRvZ2dsZUNsYXNzKHRoaXMuc2V0dGluZ3MucnRsQ2xhc3MsIHRoaXMuc2V0dGluZ3MucnRsKTsKCgkJaWYgKHRoaXMuc2V0dGluZ3MuYXV0b1dpZHRoICYmICF0aGlzLmlzKCdwcmUtbG9hZGluZycpKSB7CgkJCXZhciBpbWdzLCBuZXN0ZWRTZWxlY3Rvciwgd2lkdGg7CgkJCWltZ3MgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ2ltZycpOwoJCQluZXN0ZWRTZWxlY3RvciA9IHRoaXMuc2V0dGluZ3MubmVzdGVkSXRlbVNlbGVjdG9yID8gJy4nICsgdGhpcy5zZXR0aW5ncy5uZXN0ZWRJdGVtU2VsZWN0b3IgOiB1bmRlZmluZWQ7CgkJCXdpZHRoID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbihuZXN0ZWRTZWxlY3Rvcikud2lkdGgoKTsKCgkJCWlmIChpbWdzLmxlbmd0aCAmJiB3aWR0aCA8PSAwKSB7CgkJCQl0aGlzLnByZWxvYWRBdXRvV2lkdGhJbWFnZXMoaW1ncyk7CgkJCX0KCQl9CgoJCXRoaXMuaW5pdGlhbGl6ZVN0YWdlKCk7CgkJdGhpcy5pbml0aWFsaXplSXRlbXMoKTsKCgkJLy8gcmVnaXN0ZXIgZXZlbnQgaGFuZGxlcnMKCQl0aGlzLnJlZ2lzdGVyRXZlbnRIYW5kbGVycygpOwoKCQl0aGlzLmxlYXZlKCdpbml0aWFsaXppbmcnKTsKCQl0aGlzLnRyaWdnZXIoJ2luaXRpYWxpemVkJyk7Cgl9OwoKCS8qKgoJICogQHJldHVybnMge0Jvb2xlYW59IHZpc2liaWxpdHkgb2YgJGVsZW1lbnQKCSAqICAgICAgICAgICAgICAgICAgICBpZiB5b3Uga25vdyB0aGUgY2Fyb3VzZWwgd2lsbCBhbHdheXMgYmUgdmlzaWJsZSB5b3UgY2FuIHNldCBgY2hlY2tWaXNpYmlsaXR5YCB0byBgZmFsc2VgIHRvCgkgKiAgICAgICAgICAgICAgICAgICAgcHJldmVudCB0aGUgZXhwZW5zaXZlIGJyb3dzZXIgbGF5b3V0IGZvcmNlZCByZWZsb3cgdGhlICRlbGVtZW50LmlzKCc6dmlzaWJsZScpIGRvZXMKCSAqLwoJT3dsLnByb3RvdHlwZS5pc1Zpc2libGUgPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5zZXR0aW5ncy5jaGVja1Zpc2liaWxpdHkKCQkJPyB0aGlzLiRlbGVtZW50LmlzKCc6dmlzaWJsZScpCgkJCTogdHJ1ZTsKCX07CgoJLyoqCgkgKiBTZXR1cHMgdGhlIGN1cnJlbnQgc2V0dGluZ3MuCgkgKiBAdG9kbyBSZW1vdmUgcmVzcG9uc2l2ZSBjbGFzc2VzLiBXaHkgc2hvdWxkIGFkYXB0aXZlIGRlc2lnbnMgYmUgYnJvdWdodCBpbnRvIElFOD8KCSAqIEB0b2RvIFN1cHBvcnQgZm9yIG1lZGlhIHF1ZXJpZXMgYnkgdXNpbmcgYG1hdGNoTWVkaWFgIHdvdWxkIGJlIG5pY2UuCgkgKiBAcHVibGljCgkgKi8KCU93bC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpIHsKCQl2YXIgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0KCksCgkJCW92ZXJ3cml0ZXMgPSB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZSwKCQkJbWF0Y2ggPSAtMSwKCQkJc2V0dGluZ3MgPSBudWxsOwoKCQlpZiAoIW92ZXJ3cml0ZXMpIHsKCQkJc2V0dGluZ3MgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zKTsKCQl9IGVsc2UgewoJCQkkLmVhY2gob3ZlcndyaXRlcywgZnVuY3Rpb24oYnJlYWtwb2ludCkgewoJCQkJaWYgKGJyZWFrcG9pbnQgPD0gdmlld3BvcnQgJiYgYnJlYWtwb2ludCA+IG1hdGNoKSB7CgkJCQkJbWF0Y2ggPSBOdW1iZXIoYnJlYWtwb2ludCk7CgkJCQl9CgkJCX0pOwoKCQkJc2V0dGluZ3MgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBvdmVyd3JpdGVzW21hdGNoXSk7CgkJCWlmICh0eXBlb2Ygc2V0dGluZ3Muc3RhZ2VQYWRkaW5nID09PSAnZnVuY3Rpb24nKSB7CgkJCQlzZXR0aW5ncy5zdGFnZVBhZGRpbmcgPSBzZXR0aW5ncy5zdGFnZVBhZGRpbmcoKTsKCQkJfQoJCQlkZWxldGUgc2V0dGluZ3MucmVzcG9uc2l2ZTsKCgkJCS8vIHJlc3BvbnNpdmUgY2xhc3MKCQkJaWYgKHNldHRpbmdzLnJlc3BvbnNpdmVDbGFzcykgewoJCQkJdGhpcy4kZWxlbWVudC5hdHRyKCdjbGFzcycsCgkJCQkJdGhpcy4kZWxlbWVudC5hdHRyKCdjbGFzcycpLnJlcGxhY2UobmV3IFJlZ0V4cCgnKCcgKyB0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUNsYXNzICsgJy0pXFxTK1xccycsICdnJyksICckMScgKyBtYXRjaCkKCQkJCSk7CgkJCX0KCQl9CgoJCXRoaXMudHJpZ2dlcignY2hhbmdlJywgeyBwcm9wZXJ0eTogeyBuYW1lOiAnc2V0dGluZ3MnLCB2YWx1ZTogc2V0dGluZ3MgfSB9KTsKCQl0aGlzLl9icmVha3BvaW50ID0gbWF0Y2g7CgkJdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzOwoJCXRoaXMuaW52YWxpZGF0ZSgnc2V0dGluZ3MnKTsKCQl0aGlzLnRyaWdnZXIoJ2NoYW5nZWQnLCB7IHByb3BlcnR5OiB7IG5hbWU6ICdzZXR0aW5ncycsIHZhbHVlOiB0aGlzLnNldHRpbmdzIH0gfSk7Cgl9OwoKCS8qKgoJICogVXBkYXRlcyBvcHRpb24gbG9naWMgaWYgbmVjZXNzZXJ5LgoJICogQHByb3RlY3RlZAoJICovCglPd2wucHJvdG90eXBlLm9wdGlvbnNMb2dpYyA9IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnNldHRpbmdzLmF1dG9XaWR0aCkgewoJCQl0aGlzLnNldHRpbmdzLnN0YWdlUGFkZGluZyA9IGZhbHNlOwoJCQl0aGlzLnNldHRpbmdzLm1lcmdlID0gZmFsc2U7CgkJfQoJfTsKCgkvKioKCSAqIFByZXBhcmVzIGFuIGl0ZW0gYmVmb3JlIGFkZC4KCSAqIEB0b2RvIFJlbmFtZSBldmVudCBwYXJhbWV0ZXIgYGNvbnRlbnRgIHRvIGBpdGVtYC4KCSAqIEBwcm90ZWN0ZWQKCSAqIEByZXR1cm5zIHtqUXVlcnl8SFRNTEVsZW1lbnR9IC0gVGhlIGl0ZW0gY29udGFpbmVyLgoJICovCglPd2wucHJvdG90eXBlLnByZXBhcmUgPSBmdW5jdGlvbihpdGVtKSB7CgkJdmFyIGV2ZW50ID0gdGhpcy50cmlnZ2VyKCdwcmVwYXJlJywgeyBjb250ZW50OiBpdGVtIH0pOwoKCQlpZiAoIWV2ZW50LmRhdGEpIHsKCQkJZXZlbnQuZGF0YSA9ICQoJzwnICsgdGhpcy5zZXR0aW5ncy5pdGVtRWxlbWVudCArICcvPicpCgkJCQkuYWRkQ2xhc3ModGhpcy5vcHRpb25zLml0ZW1DbGFzcykuYXBwZW5kKGl0ZW0pCgkJfQoKCQl0aGlzLnRyaWdnZXIoJ3ByZXBhcmVkJywgeyBjb250ZW50OiBldmVudC5kYXRhIH0pOwoKCQlyZXR1cm4gZXZlbnQuZGF0YTsKCX07CgoJLyoqCgkgKiBVcGRhdGVzIHRoZSB2aWV3LgoJICogQHB1YmxpYwoJICovCglPd2wucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKCkgewoJCXZhciBpID0gMCwKCQkJbiA9IHRoaXMuX3BpcGUubGVuZ3RoLAoJCQlmaWx0ZXIgPSAkLnByb3h5KGZ1bmN0aW9uKHApIHsgcmV0dXJuIHRoaXNbcF0gfSwgdGhpcy5faW52YWxpZGF0ZWQpLAoJCQljYWNoZSA9IHt9OwoKCQl3aGlsZSAoaSA8IG4pIHsKCQkJaWYgKHRoaXMuX2ludmFsaWRhdGVkLmFsbCB8fCAkLmdyZXAodGhpcy5fcGlwZVtpXS5maWx0ZXIsIGZpbHRlcikubGVuZ3RoID4gMCkgewoJCQkJdGhpcy5fcGlwZVtpXS5ydW4oY2FjaGUpOwoJCQl9CgkJCWkrKzsKCQl9CgoJCXRoaXMuX2ludmFsaWRhdGVkID0ge307CgoJCSF0aGlzLmlzKCd2YWxpZCcpICYmIHRoaXMuZW50ZXIoJ3ZhbGlkJyk7Cgl9OwoKCS8qKgoJICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIHZpZXcuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge093bC5XaWR0aH0gW2RpbWVuc2lvbj1Pd2wuV2lkdGguRGVmYXVsdF0gLSBUaGUgZGltZW5zaW9uIHRvIHJldHVybi4KCSAqIEByZXR1cm5zIHtOdW1iZXJ9IC0gVGhlIHdpZHRoIG9mIHRoZSB2aWV3IGluIHBpeGVsLgoJICovCglPd2wucHJvdG90eXBlLndpZHRoID0gZnVuY3Rpb24oZGltZW5zaW9uKSB7CgkJZGltZW5zaW9uID0gZGltZW5zaW9uIHx8IE93bC5XaWR0aC5EZWZhdWx0OwoJCXN3aXRjaCAoZGltZW5zaW9uKSB7CgkJCWNhc2UgT3dsLldpZHRoLklubmVyOgoJCQljYXNlIE93bC5XaWR0aC5PdXRlcjoKCQkJCXJldHVybiB0aGlzLl93aWR0aDsKCQkJZGVmYXVsdDoKCQkJCXJldHVybiB0aGlzLl93aWR0aCAtIHRoaXMuc2V0dGluZ3Muc3RhZ2VQYWRkaW5nICogMiArIHRoaXMuc2V0dGluZ3MubWFyZ2luOwoJCX0KCX07CgoJLyoqCgkgKiBSZWZyZXNoZXMgdGhlIGNhcm91c2VsIHByaW1hcmlseSBmb3IgYWRhcHRpdmUgcHVycG9zZXMuCgkgKiBAcHVibGljCgkgKi8KCU93bC5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCkgewoJCXRoaXMuZW50ZXIoJ3JlZnJlc2hpbmcnKTsKCQl0aGlzLnRyaWdnZXIoJ3JlZnJlc2gnKTsKCgkJdGhpcy5zZXR1cCgpOwoKCQl0aGlzLm9wdGlvbnNMb2dpYygpOwoKCQl0aGlzLiRlbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5yZWZyZXNoQ2xhc3MpOwoKCQl0aGlzLnVwZGF0ZSgpOwoKCQl0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5yZWZyZXNoQ2xhc3MpOwoKCQl0aGlzLmxlYXZlKCdyZWZyZXNoaW5nJyk7CgkJdGhpcy50cmlnZ2VyKCdyZWZyZXNoZWQnKTsKCX07CgoJLyoqCgkgKiBDaGVja3Mgd2luZG93IGByZXNpemVgIGV2ZW50LgoJICogQHByb3RlY3RlZAoJICovCglPd2wucHJvdG90eXBlLm9uVGhyb3R0bGVkUmVzaXplID0gZnVuY3Rpb24oKSB7CgkJd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVyKTsKCQl0aGlzLnJlc2l6ZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5faGFuZGxlcnMub25SZXNpemUsIHRoaXMuc2V0dGluZ3MucmVzcG9uc2l2ZVJlZnJlc2hSYXRlKTsKCX07CgoJLyoqCgkgKiBDaGVja3Mgd2luZG93IGByZXNpemVgIGV2ZW50LgoJICogQHByb3RlY3RlZAoJICovCglPd2wucHJvdG90eXBlLm9uUmVzaXplID0gZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLl9pdGVtcy5sZW5ndGgpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYgKHRoaXMuX3dpZHRoID09PSB0aGlzLiRlbGVtZW50LndpZHRoKCkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYgKCF0aGlzLmlzVmlzaWJsZSgpKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXRoaXMuZW50ZXIoJ3Jlc2l6aW5nJyk7CgoJCWlmICh0aGlzLnRyaWdnZXIoJ3Jlc2l6ZScpLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7CgkJCXRoaXMubGVhdmUoJ3Jlc2l6aW5nJyk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXRoaXMuaW52YWxpZGF0ZSgnd2lkdGgnKTsKCgkJdGhpcy5yZWZyZXNoKCk7CgoJCXRoaXMubGVhdmUoJ3Jlc2l6aW5nJyk7CgkJdGhpcy50cmlnZ2VyKCdyZXNpemVkJyk7Cgl9OwoKCS8qKgoJICogUmVnaXN0ZXJzIGV2ZW50IGhhbmRsZXJzLgoJICogQHRvZG8gQ2hlY2sgYG1zUG9pbnRlckVuYWJsZWRgCgkgKiBAdG9kbyAjMjYxCgkgKiBAcHJvdGVjdGVkCgkgKi8KCU93bC5wcm90b3R5cGUucmVnaXN0ZXJFdmVudEhhbmRsZXJzID0gZnVuY3Rpb24oKSB7CgkJaWYgKCQuc3VwcG9ydC50cmFuc2l0aW9uKSB7CgkJCXRoaXMuJHN0YWdlLm9uKCQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCArICcub3dsLmNvcmUnLCAkLnByb3h5KHRoaXMub25UcmFuc2l0aW9uRW5kLCB0aGlzKSk7CgkJfQoKCQlpZiAodGhpcy5zZXR0aW5ncy5yZXNwb25zaXZlICE9PSBmYWxzZSkgewoJCQl0aGlzLm9uKHdpbmRvdywgJ3Jlc2l6ZScsIHRoaXMuX2hhbmRsZXJzLm9uVGhyb3R0bGVkUmVzaXplKTsKCQl9CgoJCWlmICh0aGlzLnNldHRpbmdzLm1vdXNlRHJhZykgewoJCQl0aGlzLiRlbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5kcmFnQ2xhc3MpOwoJCQl0aGlzLiRzdGFnZS5vbignbW91c2Vkb3duLm93bC5jb3JlJywgJC5wcm94eSh0aGlzLm9uRHJhZ1N0YXJ0LCB0aGlzKSk7CgkJCXRoaXMuJHN0YWdlLm9uKCdkcmFnc3RhcnQub3dsLmNvcmUgc2VsZWN0c3RhcnQub3dsLmNvcmUnLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlIH0pOwoJCX0KCgkJaWYgKHRoaXMuc2V0dGluZ3MudG91Y2hEcmFnKXsKCQkJdGhpcy4kc3RhZ2Uub24oJ3RvdWNoc3RhcnQub3dsLmNvcmUnLCAkLnByb3h5KHRoaXMub25EcmFnU3RhcnQsIHRoaXMpKTsKCQkJdGhpcy4kc3RhZ2Uub24oJ3RvdWNoY2FuY2VsLm93bC5jb3JlJywgJC5wcm94eSh0aGlzLm9uRHJhZ0VuZCwgdGhpcykpOwoJCX0KCX07CgoJLyoqCgkgKiBIYW5kbGVzIGB0b3VjaHN0YXJ0YCBhbmQgYG1vdXNlZG93bmAgZXZlbnRzLgoJICogQHRvZG8gSG9yaXpvbnRhbCBzd2lwZSB0aHJlc2hvbGQgYXMgb3B0aW9uCgkgKiBAdG9kbyAjMjYxCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIFRoZSBldmVudCBhcmd1bWVudHMuCgkgKi8KCU93bC5wcm90b3R5cGUub25EcmFnU3RhcnQgPSBmdW5jdGlvbihldmVudCkgewoJCXZhciBzdGFnZSA9IG51bGw7CgoJCWlmIChldmVudC53aGljaCA9PT0gMykgewoJCQlyZXR1cm47CgkJfQoKCQlpZiAoJC5zdXBwb3J0LnRyYW5zZm9ybSkgewoJCQlzdGFnZSA9IHRoaXMuJHN0YWdlLmNzcygndHJhbnNmb3JtJykucmVwbGFjZSgvLipcKHxcKXwgL2csICcnKS5zcGxpdCgnLCcpOwoJCQlzdGFnZSA9IHsKCQkJCXg6IHN0YWdlW3N0YWdlLmxlbmd0aCA9PT0gMTYgPyAxMiA6IDRdLAoJCQkJeTogc3RhZ2Vbc3RhZ2UubGVuZ3RoID09PSAxNiA/IDEzIDogNV0KCQkJfTsKCQl9IGVsc2UgewoJCQlzdGFnZSA9IHRoaXMuJHN0YWdlLnBvc2l0aW9uKCk7CgkJCXN0YWdlID0gewoJCQkJeDogdGhpcy5zZXR0aW5ncy5ydGwgPwoJCQkJCXN0YWdlLmxlZnQgKyB0aGlzLiRzdGFnZS53aWR0aCgpIC0gdGhpcy53aWR0aCgpICsgdGhpcy5zZXR0aW5ncy5tYXJnaW4gOgoJCQkJCXN0YWdlLmxlZnQsCgkJCQl5OiBzdGFnZS50b3AKCQkJfTsKCQl9CgoJCWlmICh0aGlzLmlzKCdhbmltYXRpbmcnKSkgewoJCQkkLnN1cHBvcnQudHJhbnNmb3JtID8gdGhpcy5hbmltYXRlKHN0YWdlLngpIDogdGhpcy4kc3RhZ2Uuc3RvcCgpCgkJCXRoaXMuaW52YWxpZGF0ZSgncG9zaXRpb24nKTsKCQl9CgoJCXRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcywgZXZlbnQudHlwZSA9PT0gJ21vdXNlZG93bicpOwoKCQl0aGlzLnNwZWVkKDApOwoKCQl0aGlzLl9kcmFnLnRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl0aGlzLl9kcmFnLnRhcmdldCA9ICQoZXZlbnQudGFyZ2V0KTsKCQl0aGlzLl9kcmFnLnN0YWdlLnN0YXJ0ID0gc3RhZ2U7CgkJdGhpcy5fZHJhZy5zdGFnZS5jdXJyZW50ID0gc3RhZ2U7CgkJdGhpcy5fZHJhZy5wb2ludGVyID0gdGhpcy5wb2ludGVyKGV2ZW50KTsKCgkJJChkb2N1bWVudCkub24oJ21vdXNldXAub3dsLmNvcmUgdG91Y2hlbmQub3dsLmNvcmUnLCAkLnByb3h5KHRoaXMub25EcmFnRW5kLCB0aGlzKSk7CgoJCSQoZG9jdW1lbnQpLm9uZSgnbW91c2Vtb3ZlLm93bC5jb3JlIHRvdWNobW92ZS5vd2wuY29yZScsICQucHJveHkoZnVuY3Rpb24oZXZlbnQpIHsKCQkJdmFyIGRlbHRhID0gdGhpcy5kaWZmZXJlbmNlKHRoaXMuX2RyYWcucG9pbnRlciwgdGhpcy5wb2ludGVyKGV2ZW50KSk7CgoJCQkkKGRvY3VtZW50KS5vbignbW91c2Vtb3ZlLm93bC5jb3JlIHRvdWNobW92ZS5vd2wuY29yZScsICQucHJveHkodGhpcy5vbkRyYWdNb3ZlLCB0aGlzKSk7CgoJCQlpZiAoTWF0aC5hYnMoZGVsdGEueCkgPCBNYXRoLmFicyhkZWx0YS55KSAmJiB0aGlzLmlzKCd2YWxpZCcpKSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgoJCQl0aGlzLmVudGVyKCdkcmFnZ2luZycpOwoJCQl0aGlzLnRyaWdnZXIoJ2RyYWcnKTsKCQl9LCB0aGlzKSk7Cgl9OwoKCS8qKgoJICogSGFuZGxlcyB0aGUgYHRvdWNobW92ZWAgYW5kIGBtb3VzZW1vdmVgIGV2ZW50cy4KCSAqIEB0b2RvICMyNjEKCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IGFyZ3VtZW50cy4KCSAqLwoJT3dsLnByb3RvdHlwZS5vbkRyYWdNb3ZlID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgbWluaW11bSA9IG51bGwsCgkJCW1heGltdW0gPSBudWxsLAoJCQlwdWxsID0gbnVsbCwKCQkJZGVsdGEgPSB0aGlzLmRpZmZlcmVuY2UodGhpcy5fZHJhZy5wb2ludGVyLCB0aGlzLnBvaW50ZXIoZXZlbnQpKSwKCQkJc3RhZ2UgPSB0aGlzLmRpZmZlcmVuY2UodGhpcy5fZHJhZy5zdGFnZS5zdGFydCwgZGVsdGEpOwoKCQlpZiAoIXRoaXMuaXMoJ2RyYWdnaW5nJykpIHsKCQkJcmV0dXJuOwoJCX0KCgkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKCgkJaWYgKHRoaXMuc2V0dGluZ3MubG9vcCkgewoJCQltaW5pbXVtID0gdGhpcy5jb29yZGluYXRlcyh0aGlzLm1pbmltdW0oKSk7CgkJCW1heGltdW0gPSB0aGlzLmNvb3JkaW5hdGVzKHRoaXMubWF4aW11bSgpICsgMSkgLSBtaW5pbXVtOwoJCQlzdGFnZS54ID0gKCgoc3RhZ2UueCAtIG1pbmltdW0pICUgbWF4aW11bSArIG1heGltdW0pICUgbWF4aW11bSkgKyBtaW5pbXVtOwoJCX0gZWxzZSB7CgkJCW1pbmltdW0gPSB0aGlzLnNldHRpbmdzLnJ0bCA/IHRoaXMuY29vcmRpbmF0ZXModGhpcy5tYXhpbXVtKCkpIDogdGhpcy5jb29yZGluYXRlcyh0aGlzLm1pbmltdW0oKSk7CgkJCW1heGltdW0gPSB0aGlzLnNldHRpbmdzLnJ0bCA/IHRoaXMuY29vcmRpbmF0ZXModGhpcy5taW5pbXVtKCkpIDogdGhpcy5jb29yZGluYXRlcyh0aGlzLm1heGltdW0oKSk7CgkJCXB1bGwgPSB0aGlzLnNldHRpbmdzLnB1bGxEcmFnID8gLTEgKiBkZWx0YS54IC8gNSA6IDA7CgkJCXN0YWdlLnggPSBNYXRoLm1heChNYXRoLm1pbihzdGFnZS54LCBtaW5pbXVtICsgcHVsbCksIG1heGltdW0gKyBwdWxsKTsKCQl9CgoJCXRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCA9IHN0YWdlOwoKCQl0aGlzLmFuaW1hdGUoc3RhZ2UueCk7Cgl9OwoKCS8qKgoJICogSGFuZGxlcyB0aGUgYHRvdWNoZW5kYCBhbmQgYG1vdXNldXBgIGV2ZW50cy4KCSAqIEB0b2RvICMyNjEKCSAqIEB0b2RvIFRocmVzaG9sZCBmb3IgY2xpY2sgZXZlbnQKCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IGFyZ3VtZW50cy4KCSAqLwoJT3dsLnByb3RvdHlwZS5vbkRyYWdFbmQgPSBmdW5jdGlvbihldmVudCkgewoJCXZhciBkZWx0YSA9IHRoaXMuZGlmZmVyZW5jZSh0aGlzLl9kcmFnLnBvaW50ZXIsIHRoaXMucG9pbnRlcihldmVudCkpLAoJCQlzdGFnZSA9IHRoaXMuX2RyYWcuc3RhZ2UuY3VycmVudCwKCQkJZGlyZWN0aW9uID0gZGVsdGEueCA+IDAgXiB0aGlzLnNldHRpbmdzLnJ0bCA/ICdsZWZ0JyA6ICdyaWdodCc7CgoJCSQoZG9jdW1lbnQpLm9mZignLm93bC5jb3JlJyk7CgoJCXRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmdyYWJDbGFzcyk7CgoJCWlmIChkZWx0YS54ICE9PSAwICYmIHRoaXMuaXMoJ2RyYWdnaW5nJykgfHwgIXRoaXMuaXMoJ3ZhbGlkJykpIHsKCQkJdGhpcy5zcGVlZCh0aGlzLnNldHRpbmdzLmRyYWdFbmRTcGVlZCB8fCB0aGlzLnNldHRpbmdzLnNtYXJ0U3BlZWQpOwoJCQl0aGlzLmN1cnJlbnQodGhpcy5jbG9zZXN0KHN0YWdlLngsIGRlbHRhLnggIT09IDAgPyBkaXJlY3Rpb24gOiB0aGlzLl9kcmFnLmRpcmVjdGlvbikpOwoJCQl0aGlzLmludmFsaWRhdGUoJ3Bvc2l0aW9uJyk7CgkJCXRoaXMudXBkYXRlKCk7CgoJCQl0aGlzLl9kcmFnLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKCgkJCWlmIChNYXRoLmFicyhkZWx0YS54KSA+IDMgfHwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLl9kcmFnLnRpbWUgPiAzMDApIHsKCQkJCXRoaXMuX2RyYWcudGFyZ2V0Lm9uZSgnY2xpY2sub3dsLmNvcmUnLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KTsKCQkJfQoJCX0KCgkJaWYgKCF0aGlzLmlzKCdkcmFnZ2luZycpKSB7CgkJCXJldHVybjsKCQl9CgoJCXRoaXMubGVhdmUoJ2RyYWdnaW5nJyk7CgkJdGhpcy50cmlnZ2VyKCdkcmFnZ2VkJyk7Cgl9OwoKCS8qKgoJICogR2V0cyBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgY2xvc2VzdCBpdGVtIGZvciBhIGNvb3JkaW5hdGUuCgkgKiBAdG9kbyBTZXR0aW5nIGBmcmVlRHJhZ2AgbWFrZXMgYGNsb3Nlc3RgIG5vdCByZXVzYWJsZS4gU2VlICMxNjUuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge051bWJlcn0gY29vcmRpbmF0ZSAtIFRoZSBjb29yZGluYXRlIGluIHBpeGVsLgoJICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdGlvbiAtIFRoZSBkaXJlY3Rpb24gdG8gY2hlY2sgZm9yIHRoZSBjbG9zZXN0IGl0ZW0uIEV0aGVyIGBsZWZ0YCBvciBgcmlnaHRgLgoJICogQHJldHVybiB7TnVtYmVyfSAtIFRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgY2xvc2VzdCBpdGVtLgoJICovCglPd2wucHJvdG90eXBlLmNsb3Nlc3QgPSBmdW5jdGlvbihjb29yZGluYXRlLCBkaXJlY3Rpb24pIHsKCQl2YXIgcG9zaXRpb24gPSAtMSwKCQkJcHVsbCA9IDMwLAoJCQl3aWR0aCA9IHRoaXMud2lkdGgoKSwKCQkJY29vcmRpbmF0ZXMgPSB0aGlzLmNvb3JkaW5hdGVzKCk7CgoJCWlmICghdGhpcy5zZXR0aW5ncy5mcmVlRHJhZykgewoJCQkvLyBjaGVjayBjbG9zZXN0IGl0ZW0KCQkJJC5lYWNoKGNvb3JkaW5hdGVzLCAkLnByb3h5KGZ1bmN0aW9uKGluZGV4LCB2YWx1ZSkgewoJCQkJLy8gb24gYSBsZWZ0IHB1bGwsIGNoZWNrIG9uIGN1cnJlbnQgaW5kZXgKCQkJCWlmIChkaXJlY3Rpb24gPT09ICdsZWZ0JyAmJiBjb29yZGluYXRlID4gdmFsdWUgLSBwdWxsICYmIGNvb3JkaW5hdGUgPCB2YWx1ZSArIHB1bGwpIHsKCQkJCQlwb3NpdGlvbiA9IGluZGV4OwoJCQkJLy8gb24gYSByaWdodCBwdWxsLCBjaGVjayBvbiBwcmV2aW91cyBpbmRleAoJCQkJLy8gdG8gZG8gc28sIHN1YnRyYWN0IHdpZHRoIGZyb20gdmFsdWUgYW5kIHNldCBwb3NpdGlvbiA9IGluZGV4ICsgMQoJCQkJfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcgJiYgY29vcmRpbmF0ZSA+IHZhbHVlIC0gd2lkdGggLSBwdWxsICYmIGNvb3JkaW5hdGUgPCB2YWx1ZSAtIHdpZHRoICsgcHVsbCkgewoJCQkJCXBvc2l0aW9uID0gaW5kZXggKyAxOwoJCQkJfSBlbHNlIGlmICh0aGlzLm9wKGNvb3JkaW5hdGUsICc8JywgdmFsdWUpCgkJCQkJJiYgdGhpcy5vcChjb29yZGluYXRlLCAnPicsIGNvb3JkaW5hdGVzW2luZGV4ICsgMV0gIT09IHVuZGVmaW5lZCA/IGNvb3JkaW5hdGVzW2luZGV4ICsgMV0gOiB2YWx1ZSAtIHdpZHRoKSkgewoJCQkJCXBvc2l0aW9uID0gZGlyZWN0aW9uID09PSAnbGVmdCcgPyBpbmRleCArIDEgOiBpbmRleDsKCQkJCX0KCQkJCXJldHVybiBwb3NpdGlvbiA9PT0gLTE7CgkJCX0sIHRoaXMpKTsKCQl9CgoJCWlmICghdGhpcy5zZXR0aW5ncy5sb29wKSB7CgkJCS8vIG5vbiBsb29wIGJvdW5kcmllcwoJCQlpZiAodGhpcy5vcChjb29yZGluYXRlLCAnPicsIGNvb3JkaW5hdGVzW3RoaXMubWluaW11bSgpXSkpIHsKCQkJCXBvc2l0aW9uID0gY29vcmRpbmF0ZSA9IHRoaXMubWluaW11bSgpOwoJCQl9IGVsc2UgaWYgKHRoaXMub3AoY29vcmRpbmF0ZSwgJzwnLCBjb29yZGluYXRlc1t0aGlzLm1heGltdW0oKV0pKSB7CgkJCQlwb3NpdGlvbiA9IGNvb3JkaW5hdGUgPSB0aGlzLm1heGltdW0oKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHBvc2l0aW9uOwoJfTsKCgkvKioKCSAqIEFuaW1hdGVzIHRoZSBzdGFnZS4KCSAqIEB0b2RvICMyNzAKCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7TnVtYmVyfSBjb29yZGluYXRlIC0gVGhlIGNvb3JkaW5hdGUgaW4gcGl4ZWxzLgoJICovCglPd2wucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbihjb29yZGluYXRlKSB7CgkJdmFyIGFuaW1hdGUgPSB0aGlzLnNwZWVkKCkgPiAwOwoKCQl0aGlzLmlzKCdhbmltYXRpbmcnKSAmJiB0aGlzLm9uVHJhbnNpdGlvbkVuZCgpOwoKCQlpZiAoYW5pbWF0ZSkgewoJCQl0aGlzLmVudGVyKCdhbmltYXRpbmcnKTsKCQkJdGhpcy50cmlnZ2VyKCd0cmFuc2xhdGUnKTsKCQl9CgoJCWlmICgkLnN1cHBvcnQudHJhbnNmb3JtM2QgJiYgJC5zdXBwb3J0LnRyYW5zaXRpb24pIHsKCQkJdGhpcy4kc3RhZ2UuY3NzKHsKCQkJCXRyYW5zZm9ybTogJ3RyYW5zbGF0ZTNkKCcgKyBjb29yZGluYXRlICsgJ3B4LDBweCwwcHgpJywKCQkJCXRyYW5zaXRpb246ICh0aGlzLnNwZWVkKCkgLyAxMDAwKSArICdzJyArICgKCQkJCQl0aGlzLnNldHRpbmdzLnNsaWRlVHJhbnNpdGlvbiA/ICcgJyArIHRoaXMuc2V0dGluZ3Muc2xpZGVUcmFuc2l0aW9uIDogJycKCQkJCSkKCQkJfSk7CgkJfSBlbHNlIGlmIChhbmltYXRlKSB7CgkJCXRoaXMuJHN0YWdlLmFuaW1hdGUoewoJCQkJbGVmdDogY29vcmRpbmF0ZSArICdweCcKCQkJfSwgdGhpcy5zcGVlZCgpLCB0aGlzLnNldHRpbmdzLmZhbGxiYWNrRWFzaW5nLCAkLnByb3h5KHRoaXMub25UcmFuc2l0aW9uRW5kLCB0aGlzKSk7CgkJfSBlbHNlIHsKCQkJdGhpcy4kc3RhZ2UuY3NzKHsKCQkJCWxlZnQ6IGNvb3JkaW5hdGUgKyAncHgnCgkJCX0pOwoJCX0KCX07CgoJLyoqCgkgKiBDaGVja3Mgd2hldGhlciB0aGUgY2Fyb3VzZWwgaXMgaW4gYSBzcGVjaWZpYyBzdGF0ZSBvciBub3QuCgkgKiBAcGFyYW0ge1N0cmluZ30gc3RhdGUgLSBUaGUgc3RhdGUgdG8gY2hlY2suCgkgKiBAcmV0dXJucyB7Qm9vbGVhbn0gLSBUaGUgZmxhZyB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIGNhcm91c2VsIGlzIGJ1c3kuCgkgKi8KCU93bC5wcm90b3R5cGUuaXMgPSBmdW5jdGlvbihzdGF0ZSkgewoJCXJldHVybiB0aGlzLl9zdGF0ZXMuY3VycmVudFtzdGF0ZV0gJiYgdGhpcy5fc3RhdGVzLmN1cnJlbnRbc3RhdGVdID4gMDsKCX07CgoJLyoqCgkgKiBTZXRzIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCBpdGVtLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtOdW1iZXJ9IFtwb3NpdGlvbl0gLSBUaGUgbmV3IGFic29sdXRlIHBvc2l0aW9uIG9yIG5vdGhpbmcgdG8gbGVhdmUgaXQgdW5jaGFuZ2VkLgoJICogQHJldHVybnMge051bWJlcn0gLSBUaGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgaXRlbS4KCSAqLwoJT3dsLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24ocG9zaXRpb24pIHsKCQlpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCkgewoJCQlyZXR1cm4gdGhpcy5fY3VycmVudDsKCQl9CgoJCWlmICh0aGlzLl9pdGVtcy5sZW5ndGggPT09IDApIHsKCQkJcmV0dXJuIHVuZGVmaW5lZDsKCQl9CgoJCXBvc2l0aW9uID0gdGhpcy5ub3JtYWxpemUocG9zaXRpb24pOwoKCQlpZiAodGhpcy5fY3VycmVudCAhPT0gcG9zaXRpb24pIHsKCQkJdmFyIGV2ZW50ID0gdGhpcy50cmlnZ2VyKCdjaGFuZ2UnLCB7IHByb3BlcnR5OiB7IG5hbWU6ICdwb3NpdGlvbicsIHZhbHVlOiBwb3NpdGlvbiB9IH0pOwoKCQkJaWYgKGV2ZW50LmRhdGEgIT09IHVuZGVmaW5lZCkgewoJCQkJcG9zaXRpb24gPSB0aGlzLm5vcm1hbGl6ZShldmVudC5kYXRhKTsKCQkJfQoKCQkJdGhpcy5fY3VycmVudCA9IHBvc2l0aW9uOwoKCQkJdGhpcy5pbnZhbGlkYXRlKCdwb3NpdGlvbicpOwoKCQkJdGhpcy50cmlnZ2VyKCdjaGFuZ2VkJywgeyBwcm9wZXJ0eTogeyBuYW1lOiAncG9zaXRpb24nLCB2YWx1ZTogdGhpcy5fY3VycmVudCB9IH0pOwoJCX0KCgkJcmV0dXJuIHRoaXMuX2N1cnJlbnQ7Cgl9OwoKCS8qKgoJICogSW52YWxpZGF0ZXMgdGhlIGdpdmVuIHBhcnQgb2YgdGhlIHVwZGF0ZSByb3V0aW5lLgoJICogQHBhcmFtIHtTdHJpbmd9IFtwYXJ0XSAtIFRoZSBwYXJ0IHRvIGludmFsaWRhdGUuCgkgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59IC0gVGhlIGludmFsaWRhdGVkIHBhcnRzLgoJICovCglPd2wucHJvdG90eXBlLmludmFsaWRhdGUgPSBmdW5jdGlvbihwYXJ0KSB7CgkJaWYgKCQudHlwZShwYXJ0KSA9PT0gJ3N0cmluZycpIHsKCQkJdGhpcy5faW52YWxpZGF0ZWRbcGFydF0gPSB0cnVlOwoJCQl0aGlzLmlzKCd2YWxpZCcpICYmIHRoaXMubGVhdmUoJ3ZhbGlkJyk7CgkJfQoJCXJldHVybiAkLm1hcCh0aGlzLl9pbnZhbGlkYXRlZCwgZnVuY3Rpb24odiwgaSkgeyByZXR1cm4gaSB9KTsKCX07CgoJLyoqCgkgKiBSZXNldHMgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IGl0ZW0uCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIG5ldyBpdGVtLgoJICovCglPd2wucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24ocG9zaXRpb24pIHsKCQlwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplKHBvc2l0aW9uKTsKCgkJaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuOwoJCX0KCgkJdGhpcy5fc3BlZWQgPSAwOwoJCXRoaXMuX2N1cnJlbnQgPSBwb3NpdGlvbjsKCgkJdGhpcy5zdXBwcmVzcyhbICd0cmFuc2xhdGUnLCAndHJhbnNsYXRlZCcgXSk7CgoJCXRoaXMuYW5pbWF0ZSh0aGlzLmNvb3JkaW5hdGVzKHBvc2l0aW9uKSk7CgoJCXRoaXMucmVsZWFzZShbICd0cmFuc2xhdGUnLCAndHJhbnNsYXRlZCcgXSk7Cgl9OwoKCS8qKgoJICogTm9ybWFsaXplcyBhbiBhYnNvbHV0ZSBvciBhIHJlbGF0aXZlIHBvc2l0aW9uIG9mIGFuIGl0ZW0uCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgYWJzb2x1dGUgb3IgcmVsYXRpdmUgcG9zaXRpb24gdG8gbm9ybWFsaXplLgoJICogQHBhcmFtIHtCb29sZWFufSBbcmVsYXRpdmU9ZmFsc2VdIC0gV2hldGhlciB0aGUgZ2l2ZW4gcG9zaXRpb24gaXMgcmVsYXRpdmUgb3Igbm90LgoJICogQHJldHVybnMge051bWJlcn0gLSBUaGUgbm9ybWFsaXplZCBwb3NpdGlvbi4KCSAqLwoJT3dsLnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbihwb3NpdGlvbiwgcmVsYXRpdmUpIHsKCQl2YXIgbiA9IHRoaXMuX2l0ZW1zLmxlbmd0aCwKCQkJbSA9IHJlbGF0aXZlID8gMCA6IHRoaXMuX2Nsb25lcy5sZW5ndGg7CgoJCWlmICghdGhpcy5pc051bWVyaWMocG9zaXRpb24pIHx8IG4gPCAxKSB7CgkJCXBvc2l0aW9uID0gdW5kZWZpbmVkOwoJCX0gZWxzZSBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IG4gKyBtKSB7CgkJCXBvc2l0aW9uID0gKChwb3NpdGlvbiAtIG0gLyAyKSAlIG4gKyBuKSAlIG4gKyBtIC8gMjsKCQl9CgoJCXJldHVybiBwb3NpdGlvbjsKCX07CgoJLyoqCgkgKiBDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwb3NpdGlvbiBvZiBhbiBpdGVtIGludG8gYSByZWxhdGl2ZSBvbmUuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgYWJzb2x1dGUgcG9zaXRpb24gdG8gY29udmVydC4KCSAqIEByZXR1cm5zIHtOdW1iZXJ9IC0gVGhlIGNvbnZlcnRlZCBwb3NpdGlvbi4KCSAqLwoJT3dsLnByb3RvdHlwZS5yZWxhdGl2ZSA9IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CgkJcG9zaXRpb24gLT0gdGhpcy5fY2xvbmVzLmxlbmd0aCAvIDI7CgkJcmV0dXJuIHRoaXMubm9ybWFsaXplKHBvc2l0aW9uLCB0cnVlKTsKCX07CgoJLyoqCgkgKiBHZXRzIHRoZSBtYXhpbXVtIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBpdGVtLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtCb29sZWFufSBbcmVsYXRpdmU9ZmFsc2VdIC0gV2hldGhlciB0byByZXR1cm4gYW4gYWJzb2x1dGUgcG9zaXRpb24gb3IgYSByZWxhdGl2ZSBwb3NpdGlvbi4KCSAqIEByZXR1cm5zIHtOdW1iZXJ9CgkgKi8KCU93bC5wcm90b3R5cGUubWF4aW11bSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7CgkJdmFyIHNldHRpbmdzID0gdGhpcy5zZXR0aW5ncywKCQkJbWF4aW11bSA9IHRoaXMuX2Nvb3JkaW5hdGVzLmxlbmd0aCwKCQkJaXRlcmF0b3IsCgkJCXJlY2lwcm9jYWxJdGVtc1dpZHRoLAoJCQllbGVtZW50V2lkdGg7CgoJCWlmIChzZXR0aW5ncy5sb29wKSB7CgkJCW1heGltdW0gPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMiArIHRoaXMuX2l0ZW1zLmxlbmd0aCAtIDE7CgkJfSBlbHNlIGlmIChzZXR0aW5ncy5hdXRvV2lkdGggfHwgc2V0dGluZ3MubWVyZ2UpIHsKCQkJaXRlcmF0b3IgPSB0aGlzLl9pdGVtcy5sZW5ndGg7CgkJCWlmIChpdGVyYXRvcikgewoJCQkJcmVjaXByb2NhbEl0ZW1zV2lkdGggPSB0aGlzLl9pdGVtc1stLWl0ZXJhdG9yXS53aWR0aCgpOwoJCQkJZWxlbWVudFdpZHRoID0gdGhpcy4kZWxlbWVudC53aWR0aCgpOwoJCQkJd2hpbGUgKGl0ZXJhdG9yLS0pIHsKCQkJCQlyZWNpcHJvY2FsSXRlbXNXaWR0aCArPSB0aGlzLl9pdGVtc1tpdGVyYXRvcl0ud2lkdGgoKSArIHRoaXMuc2V0dGluZ3MubWFyZ2luOwoJCQkJCWlmIChyZWNpcHJvY2FsSXRlbXNXaWR0aCA+IGVsZW1lbnRXaWR0aCkgewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJbWF4aW11bSA9IGl0ZXJhdG9yICsgMTsKCQl9IGVsc2UgaWYgKHNldHRpbmdzLmNlbnRlcikgewoJCQltYXhpbXVtID0gdGhpcy5faXRlbXMubGVuZ3RoIC0gMTsKCQl9IGVsc2UgewoJCQltYXhpbXVtID0gdGhpcy5faXRlbXMubGVuZ3RoIC0gc2V0dGluZ3MuaXRlbXM7CgkJfQoKCQlpZiAocmVsYXRpdmUpIHsKCQkJbWF4aW11bSAtPSB0aGlzLl9jbG9uZXMubGVuZ3RoIC8gMjsKCQl9CgoJCXJldHVybiBNYXRoLm1heChtYXhpbXVtLCAwKTsKCX07CgoJLyoqCgkgKiBHZXRzIHRoZSBtaW5pbXVtIHBvc2l0aW9uIGZvciB0aGUgY3VycmVudCBpdGVtLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtCb29sZWFufSBbcmVsYXRpdmU9ZmFsc2VdIC0gV2hldGhlciB0byByZXR1cm4gYW4gYWJzb2x1dGUgcG9zaXRpb24gb3IgYSByZWxhdGl2ZSBwb3NpdGlvbi4KCSAqIEByZXR1cm5zIHtOdW1iZXJ9CgkgKi8KCU93bC5wcm90b3R5cGUubWluaW11bSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7CgkJcmV0dXJuIHJlbGF0aXZlID8gMCA6IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyOwoJfTsKCgkvKioKCSAqIEdldHMgYW4gaXRlbSBhdCB0aGUgc3BlY2lmaWVkIHJlbGF0aXZlIHBvc2l0aW9uLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtOdW1iZXJ9IFtwb3NpdGlvbl0gLSBUaGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGl0ZW0uCgkgKiBAcmV0dXJuIHtqUXVlcnl8QXJyYXkuPGpRdWVyeT59IC0gVGhlIGl0ZW0gYXQgdGhlIGdpdmVuIHBvc2l0aW9uIG9yIGFsbCBpdGVtcyBpZiBubyBwb3NpdGlvbiB3YXMgZ2l2ZW4uCgkgKi8KCU93bC5wcm90b3R5cGUuaXRlbXMgPSBmdW5jdGlvbihwb3NpdGlvbikgewoJCWlmIChwb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7CgkJCXJldHVybiB0aGlzLl9pdGVtcy5zbGljZSgpOwoJCX0KCgkJcG9zaXRpb24gPSB0aGlzLm5vcm1hbGl6ZShwb3NpdGlvbiwgdHJ1ZSk7CgkJcmV0dXJuIHRoaXMuX2l0ZW1zW3Bvc2l0aW9uXTsKCX07CgoJLyoqCgkgKiBHZXRzIGFuIGl0ZW0gYXQgdGhlIHNwZWNpZmllZCByZWxhdGl2ZSBwb3NpdGlvbi4KCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb25dIC0gVGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSBpdGVtLgoJICogQHJldHVybiB7alF1ZXJ5fEFycmF5LjxqUXVlcnk+fSAtIFRoZSBpdGVtIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBvciBhbGwgaXRlbXMgaWYgbm8gcG9zaXRpb24gd2FzIGdpdmVuLgoJICovCglPd2wucHJvdG90eXBlLm1lcmdlcnMgPSBmdW5jdGlvbihwb3NpdGlvbikgewoJCWlmIChwb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7CgkJCXJldHVybiB0aGlzLl9tZXJnZXJzLnNsaWNlKCk7CgkJfQoKCQlwb3NpdGlvbiA9IHRoaXMubm9ybWFsaXplKHBvc2l0aW9uLCB0cnVlKTsKCQlyZXR1cm4gdGhpcy5fbWVyZ2Vyc1twb3NpdGlvbl07Cgl9OwoKCS8qKgoJICogR2V0cyB0aGUgYWJzb2x1dGUgcG9zaXRpb25zIG9mIGNsb25lcyBmb3IgYW4gaXRlbS4KCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb25dIC0gVGhlIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSBpdGVtLgoJICogQHJldHVybnMge0FycmF5LjxOdW1iZXI+fSAtIFRoZSBhYnNvbHV0ZSBwb3NpdGlvbnMgb2YgY2xvbmVzIGZvciB0aGUgaXRlbSBvciBhbGwgaWYgbm8gcG9zaXRpb24gd2FzIGdpdmVuLgoJICovCglPd2wucHJvdG90eXBlLmNsb25lcyA9IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CgkJdmFyIG9kZCA9IHRoaXMuX2Nsb25lcy5sZW5ndGggLyAyLAoJCQlldmVuID0gb2RkICsgdGhpcy5faXRlbXMubGVuZ3RoLAoJCQltYXAgPSBmdW5jdGlvbihpbmRleCkgeyByZXR1cm4gaW5kZXggJSAyID09PSAwID8gZXZlbiArIGluZGV4IC8gMiA6IG9kZCAtIChpbmRleCArIDEpIC8gMiB9OwoKCQlpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCkgewoJCQlyZXR1cm4gJC5tYXAodGhpcy5fY2xvbmVzLCBmdW5jdGlvbih2LCBpKSB7IHJldHVybiBtYXAoaSkgfSk7CgkJfQoKCQlyZXR1cm4gJC5tYXAodGhpcy5fY2xvbmVzLCBmdW5jdGlvbih2LCBpKSB7IHJldHVybiB2ID09PSBwb3NpdGlvbiA/IG1hcChpKSA6IG51bGwgfSk7Cgl9OwoKCS8qKgoJICogU2V0cyB0aGUgY3VycmVudCBhbmltYXRpb24gc3BlZWQuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gW3NwZWVkXSAtIFRoZSBhbmltYXRpb24gc3BlZWQgaW4gbWlsbGlzZWNvbmRzIG9yIG5vdGhpbmcgdG8gbGVhdmUgaXQgdW5jaGFuZ2VkLgoJICogQHJldHVybnMge051bWJlcn0gLSBUaGUgY3VycmVudCBhbmltYXRpb24gc3BlZWQgaW4gbWlsbGlzZWNvbmRzLgoJICovCglPd2wucHJvdG90eXBlLnNwZWVkID0gZnVuY3Rpb24oc3BlZWQpIHsKCQlpZiAoc3BlZWQgIT09IHVuZGVmaW5lZCkgewoJCQl0aGlzLl9zcGVlZCA9IHNwZWVkOwoJCX0KCgkJcmV0dXJuIHRoaXMuX3NwZWVkOwoJfTsKCgkvKioKCSAqIEdldHMgdGhlIGNvb3JkaW5hdGUgb2YgYW4gaXRlbS4KCSAqIEB0b2RvIFRoZSBuYW1lIG9mIHRoaXMgbWV0aG9kIGlzIG1pc3NsZWFuZGluZy4KCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7TnVtYmVyfSBwb3NpdGlvbiAtIFRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgaXRlbSB3aXRoaW4gYG1pbmltdW0oKWAgYW5kIGBtYXhpbXVtKClgLgoJICogQHJldHVybnMge051bWJlcnxBcnJheS48TnVtYmVyPn0gLSBUaGUgY29vcmRpbmF0ZSBvZiB0aGUgaXRlbSBpbiBwaXhlbCBvciBhbGwgY29vcmRpbmF0ZXMuCgkgKi8KCU93bC5wcm90b3R5cGUuY29vcmRpbmF0ZXMgPSBmdW5jdGlvbihwb3NpdGlvbikgewoJCXZhciBtdWx0aXBsaWVyID0gMSwKCQkJbmV3UG9zaXRpb24gPSBwb3NpdGlvbiAtIDEsCgkJCWNvb3JkaW5hdGU7CgoJCWlmIChwb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7CgkJCXJldHVybiAkLm1hcCh0aGlzLl9jb29yZGluYXRlcywgJC5wcm94eShmdW5jdGlvbihjb29yZGluYXRlLCBpbmRleCkgewoJCQkJcmV0dXJuIHRoaXMuY29vcmRpbmF0ZXMoaW5kZXgpOwoJCQl9LCB0aGlzKSk7CgkJfQoKCQlpZiAodGhpcy5zZXR0aW5ncy5jZW50ZXIpIHsKCQkJaWYgKHRoaXMuc2V0dGluZ3MucnRsKSB7CgkJCQltdWx0aXBsaWVyID0gLTE7CgkJCQluZXdQb3NpdGlvbiA9IHBvc2l0aW9uICsgMTsKCQkJfQoKCQkJY29vcmRpbmF0ZSA9IHRoaXMuX2Nvb3JkaW5hdGVzW3Bvc2l0aW9uXTsKCQkJY29vcmRpbmF0ZSArPSAodGhpcy53aWR0aCgpIC0gY29vcmRpbmF0ZSArICh0aGlzLl9jb29yZGluYXRlc1tuZXdQb3NpdGlvbl0gfHwgMCkpIC8gMiAqIG11bHRpcGxpZXI7CgkJfSBlbHNlIHsKCQkJY29vcmRpbmF0ZSA9IHRoaXMuX2Nvb3JkaW5hdGVzW25ld1Bvc2l0aW9uXSB8fCAwOwoJCX0KCgkJY29vcmRpbmF0ZSA9IE1hdGguY2VpbChjb29yZGluYXRlKTsKCgkJcmV0dXJuIGNvb3JkaW5hdGU7Cgl9OwoKCS8qKgoJICogQ2FsY3VsYXRlcyB0aGUgc3BlZWQgZm9yIGEgdHJhbnNsYXRpb24uCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge051bWJlcn0gZnJvbSAtIFRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgc3RhcnQgaXRlbS4KCSAqIEBwYXJhbSB7TnVtYmVyfSB0byAtIFRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0uCgkgKiBAcGFyYW0ge051bWJlcn0gW2ZhY3Rvcj11bmRlZmluZWRdIC0gVGhlIHRpbWUgZmFjdG9yIGluIG1pbGxpc2Vjb25kcy4KCSAqIEByZXR1cm5zIHtOdW1iZXJ9IC0gVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgdHJhbnNsYXRpb24uCgkgKi8KCU93bC5wcm90b3R5cGUuZHVyYXRpb24gPSBmdW5jdGlvbihmcm9tLCB0bywgZmFjdG9yKSB7CgkJaWYgKGZhY3RvciA9PT0gMCkgewoJCQlyZXR1cm4gMDsKCQl9CgoJCXJldHVybiBNYXRoLm1pbihNYXRoLm1heChNYXRoLmFicyh0byAtIGZyb20pLCAxKSwgNikgKiBNYXRoLmFicygoZmFjdG9yIHx8IHRoaXMuc2V0dGluZ3Muc21hcnRTcGVlZCkpOwoJfTsKCgkvKioKCSAqIFNsaWRlcyB0byB0aGUgc3BlY2lmaWVkIGl0ZW0uCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGl0ZW0uCgkgKiBAcGFyYW0ge051bWJlcn0gW3NwZWVkXSAtIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgdGhlIHRyYW5zaXRpb24uCgkgKi8KCU93bC5wcm90b3R5cGUudG8gPSBmdW5jdGlvbihwb3NpdGlvbiwgc3BlZWQpIHsKCQl2YXIgY3VycmVudCA9IHRoaXMuY3VycmVudCgpLAoJCQlyZXZlcnQgPSBudWxsLAoJCQlkaXN0YW5jZSA9IHBvc2l0aW9uIC0gdGhpcy5yZWxhdGl2ZShjdXJyZW50KSwKCQkJZGlyZWN0aW9uID0gKGRpc3RhbmNlID4gMCkgLSAoZGlzdGFuY2UgPCAwKSwKCQkJaXRlbXMgPSB0aGlzLl9pdGVtcy5sZW5ndGgsCgkJCW1pbmltdW0gPSB0aGlzLm1pbmltdW0oKSwKCQkJbWF4aW11bSA9IHRoaXMubWF4aW11bSgpOwoKCQlpZiAodGhpcy5zZXR0aW5ncy5sb29wKSB7CgkJCWlmICghdGhpcy5zZXR0aW5ncy5yZXdpbmQgJiYgTWF0aC5hYnMoZGlzdGFuY2UpID4gaXRlbXMgLyAyKSB7CgkJCQlkaXN0YW5jZSArPSBkaXJlY3Rpb24gKiAtMSAqIGl0ZW1zOwoJCQl9CgoJCQlwb3NpdGlvbiA9IGN1cnJlbnQgKyBkaXN0YW5jZTsKCQkJcmV2ZXJ0ID0gKChwb3NpdGlvbiAtIG1pbmltdW0pICUgaXRlbXMgKyBpdGVtcykgJSBpdGVtcyArIG1pbmltdW07CgoJCQlpZiAocmV2ZXJ0ICE9PSBwb3NpdGlvbiAmJiByZXZlcnQgLSBkaXN0YW5jZSA8PSBtYXhpbXVtICYmIHJldmVydCAtIGRpc3RhbmNlID4gMCkgewoJCQkJY3VycmVudCA9IHJldmVydCAtIGRpc3RhbmNlOwoJCQkJcG9zaXRpb24gPSByZXZlcnQ7CgkJCQl0aGlzLnJlc2V0KGN1cnJlbnQpOwoJCQl9CgkJfSBlbHNlIGlmICh0aGlzLnNldHRpbmdzLnJld2luZCkgewoJCQltYXhpbXVtICs9IDE7CgkJCXBvc2l0aW9uID0gKHBvc2l0aW9uICUgbWF4aW11bSArIG1heGltdW0pICUgbWF4aW11bTsKCQl9IGVsc2UgewoJCQlwb3NpdGlvbiA9IE1hdGgubWF4KG1pbmltdW0sIE1hdGgubWluKG1heGltdW0sIHBvc2l0aW9uKSk7CgkJfQoKCQl0aGlzLnNwZWVkKHRoaXMuZHVyYXRpb24oY3VycmVudCwgcG9zaXRpb24sIHNwZWVkKSk7CgkJdGhpcy5jdXJyZW50KHBvc2l0aW9uKTsKCgkJaWYgKHRoaXMuaXNWaXNpYmxlKCkpIHsKCQkJdGhpcy51cGRhdGUoKTsKCQl9Cgl9OwoKCS8qKgoJICogU2xpZGVzIHRvIHRoZSBuZXh0IGl0ZW0uCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gW3NwZWVkXSAtIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgdGhlIHRyYW5zaXRpb24uCgkgKi8KCU93bC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHNwZWVkKSB7CgkJc3BlZWQgPSBzcGVlZCB8fCBmYWxzZTsKCQl0aGlzLnRvKHRoaXMucmVsYXRpdmUodGhpcy5jdXJyZW50KCkpICsgMSwgc3BlZWQpOwoJfTsKCgkvKioKCSAqIFNsaWRlcyB0byB0aGUgcHJldmlvdXMgaXRlbS4KCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7TnVtYmVyfSBbc3BlZWRdIC0gVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgdHJhbnNpdGlvbi4KCSAqLwoJT3dsLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24oc3BlZWQpIHsKCQlzcGVlZCA9IHNwZWVkIHx8IGZhbHNlOwoJCXRoaXMudG8odGhpcy5yZWxhdGl2ZSh0aGlzLmN1cnJlbnQoKSkgLSAxLCBzcGVlZCk7Cgl9OwoKCS8qKgoJICogSGFuZGxlcyB0aGUgZW5kIG9mIGFuIGFuaW1hdGlvbi4KCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IGFyZ3VtZW50cy4KCSAqLwoJT3dsLnByb3RvdHlwZS5vblRyYW5zaXRpb25FbmQgPSBmdW5jdGlvbihldmVudCkgewoKCQkvLyBpZiBjc3MyIGFuaW1hdGlvbiB0aGVuIGV2ZW50IG9iamVjdCBpcyB1bmRlZmluZWQKCQlpZiAoZXZlbnQgIT09IHVuZGVmaW5lZCkgewoJCQlldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKCgkJCS8vIENhdGNoIG9ubHkgb3dsLXN0YWdlIHRyYW5zaXRpb25FbmQgZXZlbnQKCQkJaWYgKChldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudCB8fCBldmVudC5vcmlnaW5hbFRhcmdldCkgIT09IHRoaXMuJHN0YWdlLmdldCgwKSkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoKCQl0aGlzLmxlYXZlKCdhbmltYXRpbmcnKTsKCQl0aGlzLnRyaWdnZXIoJ3RyYW5zbGF0ZWQnKTsKCX07CgoJLyoqCgkgKiBHZXRzIHZpZXdwb3J0IHdpZHRoLgoJICogQHByb3RlY3RlZAoJICogQHJldHVybiB7TnVtYmVyfSAtIFRoZSB3aWR0aCBpbiBwaXhlbC4KCSAqLwoJT3dsLnByb3RvdHlwZS52aWV3cG9ydCA9IGZ1bmN0aW9uKCkgewoJCXZhciB3aWR0aDsKCQlpZiAodGhpcy5vcHRpb25zLnJlc3BvbnNpdmVCYXNlRWxlbWVudCAhPT0gd2luZG93KSB7CgkJCXdpZHRoID0gJCh0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZUJhc2VFbGVtZW50KS53aWR0aCgpOwoJCX0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGgpIHsKCQkJd2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDsKCQl9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpIHsKCQkJd2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CgkJfSBlbHNlIHsKCQkJY29uc29sZS53YXJuKCdDYW4gbm90IGRldGVjdCB2aWV3cG9ydCB3aWR0aC4nKTsKCQl9CgkJcmV0dXJuIHdpZHRoOwoJfTsKCgkvKioKCSAqIFJlcGxhY2VzIHRoZSBjdXJyZW50IGNvbnRlbnQuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge0hUTUxFbGVtZW50fGpRdWVyeXxTdHJpbmd9IGNvbnRlbnQgLSBUaGUgbmV3IGNvbnRlbnQuCgkgKi8KCU93bC5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uKGNvbnRlbnQpIHsKCQl0aGlzLiRzdGFnZS5lbXB0eSgpOwoJCXRoaXMuX2l0ZW1zID0gW107CgoJCWlmIChjb250ZW50KSB7CgkJCWNvbnRlbnQgPSAoY29udGVudCBpbnN0YW5jZW9mIGpRdWVyeSkgPyBjb250ZW50IDogJChjb250ZW50KTsKCQl9CgoJCWlmICh0aGlzLnNldHRpbmdzLm5lc3RlZEl0ZW1TZWxlY3RvcikgewoJCQljb250ZW50ID0gY29udGVudC5maW5kKCcuJyArIHRoaXMuc2V0dGluZ3MubmVzdGVkSXRlbVNlbGVjdG9yKTsKCQl9CgoJCWNvbnRlbnQuZmlsdGVyKGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5ub2RlVHlwZSA9PT0gMTsKCQl9KS5lYWNoKCQucHJveHkoZnVuY3Rpb24oaW5kZXgsIGl0ZW0pIHsKCQkJaXRlbSA9IHRoaXMucHJlcGFyZShpdGVtKTsKCQkJdGhpcy4kc3RhZ2UuYXBwZW5kKGl0ZW0pOwoJCQl0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pOwoJCQl0aGlzLl9tZXJnZXJzLnB1c2goaXRlbS5maW5kKCdbZGF0YS1tZXJnZV0nKS5hZGRCYWNrKCdbZGF0YS1tZXJnZV0nKS5hdHRyKCdkYXRhLW1lcmdlJykgKiAxIHx8IDEpOwoJCX0sIHRoaXMpKTsKCgkJdGhpcy5yZXNldCh0aGlzLmlzTnVtZXJpYyh0aGlzLnNldHRpbmdzLnN0YXJ0UG9zaXRpb24pID8gdGhpcy5zZXR0aW5ncy5zdGFydFBvc2l0aW9uIDogMCk7CgoJCXRoaXMuaW52YWxpZGF0ZSgnaXRlbXMnKTsKCX07CgoJLyoqCgkgKiBBZGRzIGFuIGl0ZW0uCgkgKiBAdG9kbyBVc2UgYGl0ZW1gIGluc3RlYWQgb2YgYGNvbnRlbnRgIGZvciB0aGUgZXZlbnQgYXJndW1lbnRzLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtIVE1MRWxlbWVudHxqUXVlcnl8U3RyaW5nfSBjb250ZW50IC0gVGhlIGl0ZW0gY29udGVudCB0byBhZGQuCgkgKiBAcGFyYW0ge051bWJlcn0gW3Bvc2l0aW9uXSAtIFRoZSByZWxhdGl2ZSBwb3NpdGlvbiBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGl0ZW0gb3RoZXJ3aXNlIHRoZSBpdGVtIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGVuZC4KCSAqLwoJT3dsLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbihjb250ZW50LCBwb3NpdGlvbikgewoJCXZhciBjdXJyZW50ID0gdGhpcy5yZWxhdGl2ZSh0aGlzLl9jdXJyZW50KTsKCgkJcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkID8gdGhpcy5faXRlbXMubGVuZ3RoIDogdGhpcy5ub3JtYWxpemUocG9zaXRpb24sIHRydWUpOwoJCWNvbnRlbnQgPSBjb250ZW50IGluc3RhbmNlb2YgalF1ZXJ5ID8gY29udGVudCA6ICQoY29udGVudCk7CgoJCXRoaXMudHJpZ2dlcignYWRkJywgeyBjb250ZW50OiBjb250ZW50LCBwb3NpdGlvbjogcG9zaXRpb24gfSk7CgoJCWNvbnRlbnQgPSB0aGlzLnByZXBhcmUoY29udGVudCk7CgoJCWlmICh0aGlzLl9pdGVtcy5sZW5ndGggPT09IDAgfHwgcG9zaXRpb24gPT09IHRoaXMuX2l0ZW1zLmxlbmd0aCkgewoJCQl0aGlzLl9pdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy4kc3RhZ2UuYXBwZW5kKGNvbnRlbnQpOwoJCQl0aGlzLl9pdGVtcy5sZW5ndGggIT09IDAgJiYgdGhpcy5faXRlbXNbcG9zaXRpb24gLSAxXS5hZnRlcihjb250ZW50KTsKCQkJdGhpcy5faXRlbXMucHVzaChjb250ZW50KTsKCQkJdGhpcy5fbWVyZ2Vycy5wdXNoKGNvbnRlbnQuZmluZCgnW2RhdGEtbWVyZ2VdJykuYWRkQmFjaygnW2RhdGEtbWVyZ2VdJykuYXR0cignZGF0YS1tZXJnZScpICogMSB8fCAxKTsKCQl9IGVsc2UgewoJCQl0aGlzLl9pdGVtc1twb3NpdGlvbl0uYmVmb3JlKGNvbnRlbnQpOwoJCQl0aGlzLl9pdGVtcy5zcGxpY2UocG9zaXRpb24sIDAsIGNvbnRlbnQpOwoJCQl0aGlzLl9tZXJnZXJzLnNwbGljZShwb3NpdGlvbiwgMCwgY29udGVudC5maW5kKCdbZGF0YS1tZXJnZV0nKS5hZGRCYWNrKCdbZGF0YS1tZXJnZV0nKS5hdHRyKCdkYXRhLW1lcmdlJykgKiAxIHx8IDEpOwoJCX0KCgkJdGhpcy5faXRlbXNbY3VycmVudF0gJiYgdGhpcy5yZXNldCh0aGlzLl9pdGVtc1tjdXJyZW50XS5pbmRleCgpKTsKCgkJdGhpcy5pbnZhbGlkYXRlKCdpdGVtcycpOwoKCQl0aGlzLnRyaWdnZXIoJ2FkZGVkJywgeyBjb250ZW50OiBjb250ZW50LCBwb3NpdGlvbjogcG9zaXRpb24gfSk7Cgl9OwoKCS8qKgoJICogUmVtb3ZlcyBhbiBpdGVtIGJ5IGl0cyBwb3NpdGlvbi4KCSAqIEB0b2RvIFVzZSBgaXRlbWAgaW5zdGVhZCBvZiBgY29udGVudGAgZm9yIHRoZSBldmVudCBhcmd1bWVudHMuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlLgoJICovCglPd2wucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKHBvc2l0aW9uKSB7CgkJcG9zaXRpb24gPSB0aGlzLm5vcm1hbGl6ZShwb3NpdGlvbiwgdHJ1ZSk7CgoJCWlmIChwb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7CgkJCXJldHVybjsKCQl9CgoJCXRoaXMudHJpZ2dlcigncmVtb3ZlJywgeyBjb250ZW50OiB0aGlzLl9pdGVtc1twb3NpdGlvbl0sIHBvc2l0aW9uOiBwb3NpdGlvbiB9KTsKCgkJdGhpcy5faXRlbXNbcG9zaXRpb25dLnJlbW92ZSgpOwoJCXRoaXMuX2l0ZW1zLnNwbGljZShwb3NpdGlvbiwgMSk7CgkJdGhpcy5fbWVyZ2Vycy5zcGxpY2UocG9zaXRpb24sIDEpOwoKCQl0aGlzLmludmFsaWRhdGUoJ2l0ZW1zJyk7CgoJCXRoaXMudHJpZ2dlcigncmVtb3ZlZCcsIHsgY29udGVudDogbnVsbCwgcG9zaXRpb246IHBvc2l0aW9uIH0pOwoJfTsKCgkvKioKCSAqIFByZWxvYWRzIGltYWdlcyB3aXRoIGF1dG8gd2lkdGguCgkgKiBAdG9kbyBSZXBsYWNlIGJ5IGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoCgkgKiBAcHJvdGVjdGVkCgkgKi8KCU93bC5wcm90b3R5cGUucHJlbG9hZEF1dG9XaWR0aEltYWdlcyA9IGZ1bmN0aW9uKGltYWdlcykgewoJCWltYWdlcy5lYWNoKCQucHJveHkoZnVuY3Rpb24oaSwgZWxlbWVudCkgewoJCQl0aGlzLmVudGVyKCdwcmUtbG9hZGluZycpOwoJCQllbGVtZW50ID0gJChlbGVtZW50KTsKCQkJJChuZXcgSW1hZ2UoKSkub25lKCdsb2FkJywgJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQllbGVtZW50LmF0dHIoJ3NyYycsIGUudGFyZ2V0LnNyYyk7CgkJCQllbGVtZW50LmNzcygnb3BhY2l0eScsIDEpOwoJCQkJdGhpcy5sZWF2ZSgncHJlLWxvYWRpbmcnKTsKCQkJCSF0aGlzLmlzKCdwcmUtbG9hZGluZycpICYmICF0aGlzLmlzKCdpbml0aWFsaXppbmcnKSAmJiB0aGlzLnJlZnJlc2goKTsKCQkJfSwgdGhpcykpLmF0dHIoJ3NyYycsIGVsZW1lbnQuYXR0cignc3JjJykgfHwgZWxlbWVudC5hdHRyKCdkYXRhLXNyYycpIHx8IGVsZW1lbnQuYXR0cignZGF0YS1zcmMtcmV0aW5hJykpOwoJCX0sIHRoaXMpKTsKCX07CgoJLyoqCgkgKiBEZXN0cm95cyB0aGUgY2Fyb3VzZWwuCgkgKiBAcHVibGljCgkgKi8KCU93bC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewoKCQl0aGlzLiRlbGVtZW50Lm9mZignLm93bC5jb3JlJyk7CgkJdGhpcy4kc3RhZ2Uub2ZmKCcub3dsLmNvcmUnKTsKCQkkKGRvY3VtZW50KS5vZmYoJy5vd2wuY29yZScpOwoKCQlpZiAodGhpcy5zZXR0aW5ncy5yZXNwb25zaXZlICE9PSBmYWxzZSkgewoJCQl3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZXIpOwoJCQl0aGlzLm9mZih3aW5kb3csICdyZXNpemUnLCB0aGlzLl9oYW5kbGVycy5vblRocm90dGxlZFJlc2l6ZSk7CgkJfQoKCQlmb3IgKHZhciBpIGluIHRoaXMuX3BsdWdpbnMpIHsKCQkJdGhpcy5fcGx1Z2luc1tpXS5kZXN0cm95KCk7CgkJfQoKCQl0aGlzLiRzdGFnZS5jaGlsZHJlbignLmNsb25lZCcpLnJlbW92ZSgpOwoKCQl0aGlzLiRzdGFnZS51bndyYXAoKTsKCQl0aGlzLiRzdGFnZS5jaGlsZHJlbigpLmNvbnRlbnRzKCkudW53cmFwKCk7CgkJdGhpcy4kc3RhZ2UuY2hpbGRyZW4oKS51bndyYXAoKTsKCQl0aGlzLiRzdGFnZS5yZW1vdmUoKTsKCQl0aGlzLiRlbGVtZW50CgkJCS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMucmVmcmVzaENsYXNzKQoJCQkucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmxvYWRpbmdDbGFzcykKCQkJLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5sb2FkZWRDbGFzcykKCQkJLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5ydGxDbGFzcykKCQkJLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5kcmFnQ2xhc3MpCgkJCS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuZ3JhYkNsYXNzKQoJCQkuYXR0cignY2xhc3MnLCB0aGlzLiRlbGVtZW50LmF0dHIoJ2NsYXNzJykucmVwbGFjZShuZXcgUmVnRXhwKHRoaXMub3B0aW9ucy5yZXNwb25zaXZlQ2xhc3MgKyAnLVxcUytcXHMnLCAnZycpLCAnJykpCgkJCS5yZW1vdmVEYXRhKCdvd2wuY2Fyb3VzZWwnKTsKCX07CgoJLyoqCgkgKiBPcGVyYXRvcnMgdG8gY2FsY3VsYXRlIHJpZ2h0LXRvLWxlZnQgYW5kIGxlZnQtdG8tcmlnaHQuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge051bWJlcn0gW2FdIC0gVGhlIGxlZnQgc2lkZSBvcGVyYW5kLgoJICogQHBhcmFtIHtTdHJpbmd9IFtvXSAtIFRoZSBvcGVyYXRvci4KCSAqIEBwYXJhbSB7TnVtYmVyfSBbYl0gLSBUaGUgcmlnaHQgc2lkZSBvcGVyYW5kLgoJICovCglPd2wucHJvdG90eXBlLm9wID0gZnVuY3Rpb24oYSwgbywgYikgewoJCXZhciBydGwgPSB0aGlzLnNldHRpbmdzLnJ0bDsKCQlzd2l0Y2ggKG8pIHsKCQkJY2FzZSAnPCc6CgkJCQlyZXR1cm4gcnRsID8gYSA+IGIgOiBhIDwgYjsKCQkJY2FzZSAnPic6CgkJCQlyZXR1cm4gcnRsID8gYSA8IGIgOiBhID4gYjsKCQkJY2FzZSAnPj0nOgoJCQkJcmV0dXJuIHJ0bCA/IGEgPD0gYiA6IGEgPj0gYjsKCQkJY2FzZSAnPD0nOgoJCQkJcmV0dXJuIHJ0bCA/IGEgPj0gYiA6IGEgPD0gYjsKCQkJZGVmYXVsdDoKCQkJCWJyZWFrOwoJCX0KCX07CgoJLyoqCgkgKiBBdHRhY2hlcyB0byBhbiBpbnRlcm5hbCBldmVudC4KCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZXZlbnQgc291cmNlLgoJICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IG5hbWUuCgkgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAtIFRoZSBldmVudCBoYW5kbGVyIHRvIGF0dGFjaC4KCSAqIEBwYXJhbSB7Qm9vbGVhbn0gY2FwdHVyZSAtIFdldGhlciB0aGUgZXZlbnQgc2hvdWxkIGJlIGhhbmRsZWQgYXQgdGhlIGNhcHR1cmluZyBwaGFzZSBvciBub3QuCgkgKi8KCU93bC5wcm90b3R5cGUub24gPSBmdW5jdGlvbihlbGVtZW50LCBldmVudCwgbGlzdGVuZXIsIGNhcHR1cmUpIHsKCQlpZiAoZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKSB7CgkJCWVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIGNhcHR1cmUpOwoJCX0gZWxzZSBpZiAoZWxlbWVudC5hdHRhY2hFdmVudCkgewoJCQllbGVtZW50LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudCwgbGlzdGVuZXIpOwoJCX0KCX07CgoJLyoqCgkgKiBEZXRhY2hlcyBmcm9tIGFuIGludGVybmFsIGV2ZW50LgoJICogQHByb3RlY3RlZAoJICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudCAtIFRoZSBldmVudCBzb3VyY2UuCgkgKiBAcGFyYW0ge1N0cmluZ30gZXZlbnQgLSBUaGUgZXZlbnQgbmFtZS4KCSAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0gVGhlIGF0dGFjaGVkIGV2ZW50IGhhbmRsZXIgdG8gZGV0YWNoLgoJICogQHBhcmFtIHtCb29sZWFufSBjYXB0dXJlIC0gV2V0aGVyIHRoZSBhdHRhY2hlZCBldmVudCBoYW5kbGVyIHdhcyByZWdpc3RlcmVkIGFzIGEgY2FwdHVyaW5nIGxpc3RlbmVyIG9yIG5vdC4KCSAqLwoJT3dsLnByb3RvdHlwZS5vZmYgPSBmdW5jdGlvbihlbGVtZW50LCBldmVudCwgbGlzdGVuZXIsIGNhcHR1cmUpIHsKCQlpZiAoZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKSB7CgkJCWVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIsIGNhcHR1cmUpOwoJCX0gZWxzZSBpZiAoZWxlbWVudC5kZXRhY2hFdmVudCkgewoJCQllbGVtZW50LmRldGFjaEV2ZW50KCdvbicgKyBldmVudCwgbGlzdGVuZXIpOwoJCX0KCX07CgoJLyoqCgkgKiBUcmlnZ2VycyBhIHB1YmxpYyBldmVudC4KCSAqIEB0b2RvIFJlbW92ZSBgc3RhdHVzYCwgYHJlbGF0ZWRUYXJnZXRgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSBldmVudCBuYW1lLgoJICogQHBhcmFtIHsqfSBbZGF0YT1udWxsXSAtIFRoZSBldmVudCBkYXRhLgoJICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2U9Y2Fyb3VzZWxdIC0gVGhlIGV2ZW50IG5hbWVzcGFjZS4KCSAqIEBwYXJhbSB7U3RyaW5nfSBbc3RhdGVdIC0gVGhlIHN0YXRlIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQuCgkgKiBAcGFyYW0ge0Jvb2xlYW59IFtlbnRlcj1mYWxzZV0gLSBJbmRpY2F0ZXMgaWYgdGhlIGNhbGwgZW50ZXJzIHRoZSBzcGVjaWZpZWQgc3RhdGUgb3Igbm90LgoJICogQHJldHVybnMge0V2ZW50fSAtIFRoZSBldmVudCBhcmd1bWVudHMuCgkgKi8KCU93bC5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uKG5hbWUsIGRhdGEsIG5hbWVzcGFjZSwgc3RhdGUsIGVudGVyKSB7CgkJdmFyIHN0YXR1cyA9IHsKCQkJaXRlbTogeyBjb3VudDogdGhpcy5faXRlbXMubGVuZ3RoLCBpbmRleDogdGhpcy5jdXJyZW50KCkgfQoJCX0sIGhhbmRsZXIgPSAkLmNhbWVsQ2FzZSgKCQkJJC5ncmVwKFsgJ29uJywgbmFtZSwgbmFtZXNwYWNlIF0sIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHYgfSkKCQkJCS5qb2luKCctJykudG9Mb3dlckNhc2UoKQoJCSksIGV2ZW50ID0gJC5FdmVudCgKCQkJWyBuYW1lLCAnb3dsJywgbmFtZXNwYWNlIHx8ICdjYXJvdXNlbCcgXS5qb2luKCcuJykudG9Mb3dlckNhc2UoKSwKCQkJJC5leHRlbmQoeyByZWxhdGVkVGFyZ2V0OiB0aGlzIH0sIHN0YXR1cywgZGF0YSkKCQkpOwoKCQlpZiAoIXRoaXMuX3N1cHJlc3NbbmFtZV0pIHsKCQkJJC5lYWNoKHRoaXMuX3BsdWdpbnMsIGZ1bmN0aW9uKG5hbWUsIHBsdWdpbikgewoJCQkJaWYgKHBsdWdpbi5vblRyaWdnZXIpIHsKCQkJCQlwbHVnaW4ub25UcmlnZ2VyKGV2ZW50KTsKCQkJCX0KCQkJfSk7CgoJCQl0aGlzLnJlZ2lzdGVyKHsgdHlwZTogT3dsLlR5cGUuRXZlbnQsIG5hbWU6IG5hbWUgfSk7CgkJCXRoaXMuJGVsZW1lbnQudHJpZ2dlcihldmVudCk7CgoJCQlpZiAodGhpcy5zZXR0aW5ncyAmJiB0eXBlb2YgdGhpcy5zZXR0aW5nc1toYW5kbGVyXSA9PT0gJ2Z1bmN0aW9uJykgewoJCQkJdGhpcy5zZXR0aW5nc1toYW5kbGVyXS5jYWxsKHRoaXMsIGV2ZW50KTsKCQkJfQoJCX0KCgkJcmV0dXJuIGV2ZW50OwoJfTsKCgkvKioKCSAqIEVudGVycyBhIHN0YXRlLgoJICogQHBhcmFtIG5hbWUgLSBUaGUgc3RhdGUgbmFtZS4KCSAqLwoJT3dsLnByb3RvdHlwZS5lbnRlciA9IGZ1bmN0aW9uKG5hbWUpIHsKCQkkLmVhY2goWyBuYW1lIF0uY29uY2F0KHRoaXMuX3N0YXRlcy50YWdzW25hbWVdIHx8IFtdKSwgJC5wcm94eShmdW5jdGlvbihpLCBuYW1lKSB7CgkJCWlmICh0aGlzLl9zdGF0ZXMuY3VycmVudFtuYW1lXSA9PT0gdW5kZWZpbmVkKSB7CgkJCQl0aGlzLl9zdGF0ZXMuY3VycmVudFtuYW1lXSA9IDA7CgkJCX0KCgkJCXRoaXMuX3N0YXRlcy5jdXJyZW50W25hbWVdKys7CgkJfSwgdGhpcykpOwoJfTsKCgkvKioKCSAqIExlYXZlcyBhIHN0YXRlLgoJICogQHBhcmFtIG5hbWUgLSBUaGUgc3RhdGUgbmFtZS4KCSAqLwoJT3dsLnByb3RvdHlwZS5sZWF2ZSA9IGZ1bmN0aW9uKG5hbWUpIHsKCQkkLmVhY2goWyBuYW1lIF0uY29uY2F0KHRoaXMuX3N0YXRlcy50YWdzW25hbWVdIHx8IFtdKSwgJC5wcm94eShmdW5jdGlvbihpLCBuYW1lKSB7CgkJCXRoaXMuX3N0YXRlcy5jdXJyZW50W25hbWVdLS07CgkJfSwgdGhpcykpOwoJfTsKCgkvKioKCSAqIFJlZ2lzdGVycyBhbiBldmVudCBvciBzdGF0ZS4KCSAqIEBwdWJsaWMKCSAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgLSBUaGUgZXZlbnQgb3Igc3RhdGUgdG8gcmVnaXN0ZXIuCgkgKi8KCU93bC5wcm90b3R5cGUucmVnaXN0ZXIgPSBmdW5jdGlvbihvYmplY3QpIHsKCQlpZiAob2JqZWN0LnR5cGUgPT09IE93bC5UeXBlLkV2ZW50KSB7CgkJCWlmICghJC5ldmVudC5zcGVjaWFsW29iamVjdC5uYW1lXSkgewoJCQkJJC5ldmVudC5zcGVjaWFsW29iamVjdC5uYW1lXSA9IHt9OwoJCQl9CgoJCQlpZiAoISQuZXZlbnQuc3BlY2lhbFtvYmplY3QubmFtZV0ub3dsKSB7CgkJCQl2YXIgX2RlZmF1bHQgPSAkLmV2ZW50LnNwZWNpYWxbb2JqZWN0Lm5hbWVdLl9kZWZhdWx0OwoJCQkJJC5ldmVudC5zcGVjaWFsW29iamVjdC5uYW1lXS5fZGVmYXVsdCA9IGZ1bmN0aW9uKGUpIHsKCQkJCQlpZiAoX2RlZmF1bHQgJiYgX2RlZmF1bHQuYXBwbHkgJiYgKCFlLm5hbWVzcGFjZSB8fCBlLm5hbWVzcGFjZS5pbmRleE9mKCdvd2wnKSA9PT0gLTEpKSB7CgkJCQkJCXJldHVybiBfZGVmYXVsdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJCQkJCX0KCQkJCQlyZXR1cm4gZS5uYW1lc3BhY2UgJiYgZS5uYW1lc3BhY2UuaW5kZXhPZignb3dsJykgPiAtMTsKCQkJCX07CgkJCQkkLmV2ZW50LnNwZWNpYWxbb2JqZWN0Lm5hbWVdLm93bCA9IHRydWU7CgkJCX0KCQl9IGVsc2UgaWYgKG9iamVjdC50eXBlID09PSBPd2wuVHlwZS5TdGF0ZSkgewoJCQlpZiAoIXRoaXMuX3N0YXRlcy50YWdzW29iamVjdC5uYW1lXSkgewoJCQkJdGhpcy5fc3RhdGVzLnRhZ3Nbb2JqZWN0Lm5hbWVdID0gb2JqZWN0LnRhZ3M7CgkJCX0gZWxzZSB7CgkJCQl0aGlzLl9zdGF0ZXMudGFnc1tvYmplY3QubmFtZV0gPSB0aGlzLl9zdGF0ZXMudGFnc1tvYmplY3QubmFtZV0uY29uY2F0KG9iamVjdC50YWdzKTsKCQkJfQoKCQkJdGhpcy5fc3RhdGVzLnRhZ3Nbb2JqZWN0Lm5hbWVdID0gJC5ncmVwKHRoaXMuX3N0YXRlcy50YWdzW29iamVjdC5uYW1lXSwgJC5wcm94eShmdW5jdGlvbih0YWcsIGkpIHsKCQkJCXJldHVybiAkLmluQXJyYXkodGFnLCB0aGlzLl9zdGF0ZXMudGFnc1tvYmplY3QubmFtZV0pID09PSBpOwoJCQl9LCB0aGlzKSk7CgkJfQoJfTsKCgkvKioKCSAqIFN1cHByZXNzZXMgZXZlbnRzLgoJICogQHByb3RlY3RlZAoJICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gZXZlbnRzIC0gVGhlIGV2ZW50cyB0byBzdXBwcmVzcy4KCSAqLwoJT3dsLnByb3RvdHlwZS5zdXBwcmVzcyA9IGZ1bmN0aW9uKGV2ZW50cykgewoJCSQuZWFjaChldmVudHMsICQucHJveHkoZnVuY3Rpb24oaW5kZXgsIGV2ZW50KSB7CgkJCXRoaXMuX3N1cHJlc3NbZXZlbnRdID0gdHJ1ZTsKCQl9LCB0aGlzKSk7Cgl9OwoKCS8qKgoJICogUmVsZWFzZXMgc3VwcHJlc3NlZCBldmVudHMuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBldmVudHMgLSBUaGUgZXZlbnRzIHRvIHJlbGVhc2UuCgkgKi8KCU93bC5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uKGV2ZW50cykgewoJCSQuZWFjaChldmVudHMsICQucHJveHkoZnVuY3Rpb24oaW5kZXgsIGV2ZW50KSB7CgkJCWRlbGV0ZSB0aGlzLl9zdXByZXNzW2V2ZW50XTsKCQl9LCB0aGlzKSk7Cgl9OwoKCS8qKgoJICogR2V0cyB1bmlmaWVkIHBvaW50ZXIgY29vcmRpbmF0ZXMgZnJvbSBldmVudC4KCSAqIEB0b2RvICMyNjEKCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7RXZlbnR9IC0gVGhlIGBtb3VzZWRvd25gIG9yIGB0b3VjaHN0YXJ0YCBldmVudC4KCSAqIEByZXR1cm5zIHtPYmplY3R9IC0gQ29udGFpbnMgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgb2YgY3VycmVudCBwb2ludGVyIHBvc2l0aW9uLgoJICovCglPd2wucHJvdG90eXBlLnBvaW50ZXIgPSBmdW5jdGlvbihldmVudCkgewoJCXZhciByZXN1bHQgPSB7IHg6IG51bGwsIHk6IG51bGwgfTsKCgkJZXZlbnQgPSBldmVudC5vcmlnaW5hbEV2ZW50IHx8IGV2ZW50IHx8IHdpbmRvdy5ldmVudDsKCgkJZXZlbnQgPSBldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXMubGVuZ3RoID8KCQkJZXZlbnQudG91Y2hlc1swXSA6IGV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA/CgkJCQlldmVudC5jaGFuZ2VkVG91Y2hlc1swXSA6IGV2ZW50OwoKCQlpZiAoZXZlbnQucGFnZVgpIHsKCQkJcmVzdWx0LnggPSBldmVudC5wYWdlWDsKCQkJcmVzdWx0LnkgPSBldmVudC5wYWdlWTsKCQl9IGVsc2UgewoJCQlyZXN1bHQueCA9IGV2ZW50LmNsaWVudFg7CgkJCXJlc3VsdC55ID0gZXZlbnQuY2xpZW50WTsKCQl9CgoJCXJldHVybiByZXN1bHQ7Cgl9OwoKCS8qKgoJICogRGV0ZXJtaW5lcyBpZiB0aGUgaW5wdXQgaXMgYSBOdW1iZXIgb3Igc29tZXRoaW5nIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gYSBOdW1iZXIKCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7TnVtYmVyfFN0cmluZ3xPYmplY3R8QXJyYXl8Qm9vbGVhbnxSZWdFeHB8RnVuY3Rpb258U3ltYm9sfSAtIFRoZSBpbnB1dCB0byBiZSB0ZXN0ZWQKCSAqIEByZXR1cm5zIHtCb29sZWFufSAtIEFuIGluZGljYXRpb24gaWYgdGhlIGlucHV0IGlzIGEgTnVtYmVyIG9yIGNhbiBiZSBjb2VyY2VkIHRvIGEgTnVtYmVyCgkgKi8KCU93bC5wcm90b3R5cGUuaXNOdW1lcmljID0gZnVuY3Rpb24obnVtYmVyKSB7CgkJcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KG51bWJlcikpOwoJfTsKCgkvKioKCSAqIEdldHMgdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIHZlY3RvcnMuCgkgKiBAdG9kbyAjMjYxCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge09iamVjdH0gLSBUaGUgZmlyc3QgdmVjdG9yLgoJICogQHBhcmFtIHtPYmplY3R9IC0gVGhlIHNlY29uZCB2ZWN0b3IuCgkgKiBAcmV0dXJucyB7T2JqZWN0fSAtIFRoZSBkaWZmZXJlbmNlLgoJICovCglPd2wucHJvdG90eXBlLmRpZmZlcmVuY2UgPSBmdW5jdGlvbihmaXJzdCwgc2Vjb25kKSB7CgkJcmV0dXJuIHsKCQkJeDogZmlyc3QueCAtIHNlY29uZC54LAoJCQl5OiBmaXJzdC55IC0gc2Vjb25kLnkKCQl9OwoJfTsKCgkvKioKCSAqIFRoZSBqUXVlcnkgUGx1Z2luIGZvciB0aGUgT3dsIENhcm91c2VsCgkgKiBAdG9kbyBOYXZpZ2F0aW9uIHBsdWdpbiBgbmV4dGAgYW5kIGBwcmV2YAoJICogQHB1YmxpYwoJICovCgkkLmZuLm93bENhcm91c2VsID0gZnVuY3Rpb24ob3B0aW9uKSB7CgkJdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOwoKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQl2YXIgJHRoaXMgPSAkKHRoaXMpLAoJCQkJZGF0YSA9ICR0aGlzLmRhdGEoJ293bC5jYXJvdXNlbCcpOwoKCQkJaWYgKCFkYXRhKSB7CgkJCQlkYXRhID0gbmV3IE93bCh0aGlzLCB0eXBlb2Ygb3B0aW9uID09ICdvYmplY3QnICYmIG9wdGlvbik7CgkJCQkkdGhpcy5kYXRhKCdvd2wuY2Fyb3VzZWwnLCBkYXRhKTsKCgkJCQkkLmVhY2goWwoJCQkJCSduZXh0JywgJ3ByZXYnLCAndG8nLCAnZGVzdHJveScsICdyZWZyZXNoJywgJ3JlcGxhY2UnLCAnYWRkJywgJ3JlbW92ZScKCQkJCV0sIGZ1bmN0aW9uKGksIGV2ZW50KSB7CgkJCQkJZGF0YS5yZWdpc3Rlcih7IHR5cGU6IE93bC5UeXBlLkV2ZW50LCBuYW1lOiBldmVudCB9KTsKCQkJCQlkYXRhLiRlbGVtZW50Lm9uKGV2ZW50ICsgJy5vd2wuY2Fyb3VzZWwuY29yZScsICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgZS5yZWxhdGVkVGFyZ2V0ICE9PSB0aGlzKSB7CgkJCQkJCQl0aGlzLnN1cHByZXNzKFsgZXZlbnQgXSk7CgkJCQkJCQlkYXRhW2V2ZW50XS5hcHBseSh0aGlzLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOwoJCQkJCQkJdGhpcy5yZWxlYXNlKFsgZXZlbnQgXSk7CgkJCQkJCX0KCQkJCQl9LCBkYXRhKSk7CgkJCQl9KTsKCQkJfQoKCQkJaWYgKHR5cGVvZiBvcHRpb24gPT0gJ3N0cmluZycgJiYgb3B0aW9uLmNoYXJBdCgwKSAhPT0gJ18nKSB7CgkJCQlkYXRhW29wdGlvbl0uYXBwbHkoZGF0YSwgYXJncyk7CgkJCX0KCQl9KTsKCX07CgoJLyoqCgkgKiBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBqUXVlcnkgUGx1Z2luCgkgKiBAcHVibGljCgkgKi8KCSQuZm4ub3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IgPSBPd2w7Cgp9KSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgovKioKICogQXV0b1JlZnJlc2ggUGx1Z2luCiAqIEB2ZXJzaW9uIDIuMy40CiAqIEBhdXRob3IgQXJ0dXMgS29sYW5vd3NraQogKiBAYXV0aG9yIERhdmlkIERldXRzY2gKICogQGxpY2Vuc2UgVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqLwo7KGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKCS8qKgoJICogQ3JlYXRlcyB0aGUgYXV0byByZWZyZXNoIHBsdWdpbi4KCSAqIEBjbGFzcyBUaGUgQXV0byBSZWZyZXNoIFBsdWdpbgoJICogQHBhcmFtIHtPd2x9IGNhcm91c2VsIC0gVGhlIE93bCBDYXJvdXNlbAoJICovCgl2YXIgQXV0b1JlZnJlc2ggPSBmdW5jdGlvbihjYXJvdXNlbCkgewoJCS8qKgoJCSAqIFJlZmVyZW5jZSB0byB0aGUgY29yZS4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge093bH0KCQkgKi8KCQl0aGlzLl9jb3JlID0gY2Fyb3VzZWw7CgoJCS8qKgoJCSAqIFJlZnJlc2ggaW50ZXJ2YWwuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtudW1iZXJ9CgkJICovCgkJdGhpcy5faW50ZXJ2YWwgPSBudWxsOwoKCQkvKioKCQkgKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIGN1cnJlbnRseSB2aXNpYmxlIG9yIG5vdC4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge0Jvb2xlYW59CgkJICovCgkJdGhpcy5fdmlzaWJsZSA9IG51bGw7CgoJCS8qKgoJCSAqIEFsbCBldmVudCBoYW5kbGVycy4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge09iamVjdH0KCQkgKi8KCQl0aGlzLl9oYW5kbGVycyA9IHsKCQkJJ2luaXRpYWxpemVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b1JlZnJlc2gpIHsKCQkJCQl0aGlzLndhdGNoKCk7CgkJCQl9CgkJCX0sIHRoaXMpCgkJfTsKCgkJLy8gc2V0IGRlZmF1bHQgb3B0aW9ucwoJCXRoaXMuX2NvcmUub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBBdXRvUmVmcmVzaC5EZWZhdWx0cywgdGhpcy5fY29yZS5vcHRpb25zKTsKCgkJLy8gcmVnaXN0ZXIgZXZlbnQgaGFuZGxlcnMKCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKTsKCX07CgoJLyoqCgkgKiBEZWZhdWx0IG9wdGlvbnMuCgkgKiBAcHVibGljCgkgKi8KCUF1dG9SZWZyZXNoLkRlZmF1bHRzID0gewoJCWF1dG9SZWZyZXNoOiB0cnVlLAoJCWF1dG9SZWZyZXNoSW50ZXJ2YWw6IDUwMAoJfTsKCgkvKioKCSAqIFdhdGNoZXMgdGhlIGVsZW1lbnQuCgkgKi8KCUF1dG9SZWZyZXNoLnByb3RvdHlwZS53YXRjaCA9IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLl9pbnRlcnZhbCkgewoJCQlyZXR1cm47CgkJfQoKCQl0aGlzLl92aXNpYmxlID0gdGhpcy5fY29yZS5pc1Zpc2libGUoKTsKCQl0aGlzLl9pbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgkLnByb3h5KHRoaXMucmVmcmVzaCwgdGhpcyksIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b1JlZnJlc2hJbnRlcnZhbCk7Cgl9OwoKCS8qKgoJICogUmVmcmVzaGVzIHRoZSBlbGVtZW50LgoJICovCglBdXRvUmVmcmVzaC5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLl9jb3JlLmlzVmlzaWJsZSgpID09PSB0aGlzLl92aXNpYmxlKSB7CgkJCXJldHVybjsKCQl9CgoJCXRoaXMuX3Zpc2libGUgPSAhdGhpcy5fdmlzaWJsZTsKCgkJdGhpcy5fY29yZS4kZWxlbWVudC50b2dnbGVDbGFzcygnb3dsLWhpZGRlbicsICF0aGlzLl92aXNpYmxlKTsKCgkJdGhpcy5fdmlzaWJsZSAmJiAodGhpcy5fY29yZS5pbnZhbGlkYXRlKCd3aWR0aCcpICYmIHRoaXMuX2NvcmUucmVmcmVzaCgpKTsKCX07CgoJLyoqCgkgKiBEZXN0cm95cyB0aGUgcGx1Z2luLgoJICovCglBdXRvUmVmcmVzaC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewoJCXZhciBoYW5kbGVyLCBwcm9wZXJ0eTsKCgkJd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpOwoKCQlmb3IgKGhhbmRsZXIgaW4gdGhpcy5faGFuZGxlcnMpIHsKCQkJdGhpcy5fY29yZS4kZWxlbWVudC5vZmYoaGFuZGxlciwgdGhpcy5faGFuZGxlcnNbaGFuZGxlcl0pOwoJCX0KCQlmb3IgKHByb3BlcnR5IGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSB7CgkJCXR5cGVvZiB0aGlzW3Byb3BlcnR5XSAhPSAnZnVuY3Rpb24nICYmICh0aGlzW3Byb3BlcnR5XSA9IG51bGwpOwoJCX0KCX07CgoJJC5mbi5vd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkF1dG9SZWZyZXNoID0gQXV0b1JlZnJlc2g7Cgp9KSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgovKioKICogTGF6eSBQbHVnaW4KICogQHZlcnNpb24gMi4zLjQKICogQGF1dGhvciBCYXJ0b3N6IFdvamNpZWNob3dza2kKICogQGF1dGhvciBEYXZpZCBEZXV0c2NoCiAqIEBsaWNlbnNlIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKi8KOyhmdW5jdGlvbigkLCB3aW5kb3csIGRvY3VtZW50LCB1bmRlZmluZWQpIHsKCgkvKioKCSAqIENyZWF0ZXMgdGhlIGxhenkgcGx1Z2luLgoJICogQGNsYXNzIFRoZSBMYXp5IFBsdWdpbgoJICogQHBhcmFtIHtPd2x9IGNhcm91c2VsIC0gVGhlIE93bCBDYXJvdXNlbAoJICovCgl2YXIgTGF6eSA9IGZ1bmN0aW9uKGNhcm91c2VsKSB7CgoJCS8qKgoJCSAqIFJlZmVyZW5jZSB0byB0aGUgY29yZS4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge093bH0KCQkgKi8KCQl0aGlzLl9jb3JlID0gY2Fyb3VzZWw7CgoJCS8qKgoJCSAqIEFscmVhZHkgbG9hZGVkIGl0ZW1zLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7QXJyYXkuPGpRdWVyeT59CgkJICovCgkJdGhpcy5fbG9hZGVkID0gW107CgoJCS8qKgoJCSAqIEV2ZW50IGhhbmRsZXJzLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7T2JqZWN0fQoJCSAqLwoJCXRoaXMuX2hhbmRsZXJzID0gewoJCQknaW5pdGlhbGl6ZWQub3dsLmNhcm91c2VsIGNoYW5nZS5vd2wuY2Fyb3VzZWwgcmVzaXplZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmICghZS5uYW1lc3BhY2UpIHsKCQkJCQlyZXR1cm47CgkJCQl9CgoJCQkJaWYgKCF0aGlzLl9jb3JlLnNldHRpbmdzIHx8ICF0aGlzLl9jb3JlLnNldHRpbmdzLmxhenlMb2FkKSB7CgkJCQkJcmV0dXJuOwoJCQkJfQoKCQkJCWlmICgoZS5wcm9wZXJ0eSAmJiBlLnByb3BlcnR5Lm5hbWUgPT0gJ3Bvc2l0aW9uJykgfHwgZS50eXBlID09ICdpbml0aWFsaXplZCcpIHsKCQkJCQl2YXIgc2V0dGluZ3MgPSB0aGlzLl9jb3JlLnNldHRpbmdzLAoJCQkJCQluID0gKHNldHRpbmdzLmNlbnRlciAmJiBNYXRoLmNlaWwoc2V0dGluZ3MuaXRlbXMgLyAyKSB8fCBzZXR0aW5ncy5pdGVtcyksCgkJCQkJCWkgPSAoKHNldHRpbmdzLmNlbnRlciAmJiBuICogLTEpIHx8IDApLAoJCQkJCQlwb3NpdGlvbiA9IChlLnByb3BlcnR5ICYmIGUucHJvcGVydHkudmFsdWUgIT09IHVuZGVmaW5lZCA/IGUucHJvcGVydHkudmFsdWUgOiB0aGlzLl9jb3JlLmN1cnJlbnQoKSkgKyBpLAoJCQkJCQljbG9uZXMgPSB0aGlzLl9jb3JlLmNsb25lcygpLmxlbmd0aCwKCQkJCQkJbG9hZCA9ICQucHJveHkoZnVuY3Rpb24oaSwgdikgeyB0aGlzLmxvYWQodikgfSwgdGhpcyk7CgkJCQkJLy9UT0RPOiBOZWVkIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgbmV3IG9wdGlvbgoJCQkJCWlmIChzZXR0aW5ncy5sYXp5TG9hZEVhZ2VyID4gMCkgewoJCQkJCQluICs9IHNldHRpbmdzLmxhenlMb2FkRWFnZXI7CgkJCQkJCS8vIElmIHRoZSBjYXJvdXNlbCBpcyBsb29waW5nIGFsc28gcHJlbG9hZCBpbWFnZXMgdGhhdCBhcmUgdG8gdGhlICJsZWZ0IgoJCQkJCQlpZiAoc2V0dGluZ3MubG9vcCkgewogICAgICAgICAgICAgIHBvc2l0aW9uIC09IHNldHRpbmdzLmxhenlMb2FkRWFnZXI7CiAgICAgICAgICAgICAgbisrOwogICAgICAgICAgICB9CgkJCQkJfQoKCQkJCQl3aGlsZSAoaSsrIDwgbikgewoJCQkJCQl0aGlzLmxvYWQoY2xvbmVzIC8gMiArIHRoaXMuX2NvcmUucmVsYXRpdmUocG9zaXRpb24pKTsKCQkJCQkJY2xvbmVzICYmICQuZWFjaCh0aGlzLl9jb3JlLmNsb25lcyh0aGlzLl9jb3JlLnJlbGF0aXZlKHBvc2l0aW9uKSksIGxvYWQpOwoJCQkJCQlwb3NpdGlvbisrOwoJCQkJCX0KCQkJCX0KCQkJfSwgdGhpcykKCQl9OwoKCQkvLyBzZXQgdGhlIGRlZmF1bHQgb3B0aW9ucwoJCXRoaXMuX2NvcmUub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBMYXp5LkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpOwoKCQkvLyByZWdpc3RlciBldmVudCBoYW5kbGVyCgkJdGhpcy5fY29yZS4kZWxlbWVudC5vbih0aGlzLl9oYW5kbGVycyk7Cgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICovCglMYXp5LkRlZmF1bHRzID0gewoJCWxhenlMb2FkOiBmYWxzZSwKCQlsYXp5TG9hZEVhZ2VyOiAwCgl9OwoKCS8qKgoJICogTG9hZHMgYWxsIHJlc291cmNlcyBvZiBhbiBpdGVtIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGl0ZW0uCgkgKiBAcHJvdGVjdGVkCgkgKi8KCUxhenkucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbihwb3NpdGlvbikgewoJCXZhciAkaXRlbSA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCkuZXEocG9zaXRpb24pLAoJCQkkZWxlbWVudHMgPSAkaXRlbSAmJiAkaXRlbS5maW5kKCcub3dsLWxhenknKTsKCgkJaWYgKCEkZWxlbWVudHMgfHwgJC5pbkFycmF5KCRpdGVtLmdldCgwKSwgdGhpcy5fbG9hZGVkKSA+IC0xKSB7CgkJCXJldHVybjsKCQl9CgoJCSRlbGVtZW50cy5lYWNoKCQucHJveHkoZnVuY3Rpb24oaW5kZXgsIGVsZW1lbnQpIHsKCQkJdmFyICRlbGVtZW50ID0gJChlbGVtZW50KSwgaW1hZ2UsCiAgICAgICAgICAgICAgICB1cmwgPSAod2luZG93LmRldmljZVBpeGVsUmF0aW8gPiAxICYmICRlbGVtZW50LmF0dHIoJ2RhdGEtc3JjLXJldGluYScpKSB8fCAkZWxlbWVudC5hdHRyKCdkYXRhLXNyYycpIHx8ICRlbGVtZW50LmF0dHIoJ2RhdGEtc3Jjc2V0Jyk7CgoJCQl0aGlzLl9jb3JlLnRyaWdnZXIoJ2xvYWQnLCB7IGVsZW1lbnQ6ICRlbGVtZW50LCB1cmw6IHVybCB9LCAnbGF6eScpOwoKCQkJaWYgKCRlbGVtZW50LmlzKCdpbWcnKSkgewoJCQkJJGVsZW1lbnQub25lKCdsb2FkLm93bC5sYXp5JywgJC5wcm94eShmdW5jdGlvbigpIHsKCQkJCQkkZWxlbWVudC5jc3MoJ29wYWNpdHknLCAxKTsKCQkJCQl0aGlzLl9jb3JlLnRyaWdnZXIoJ2xvYWRlZCcsIHsgZWxlbWVudDogJGVsZW1lbnQsIHVybDogdXJsIH0sICdsYXp5Jyk7CgkJCQl9LCB0aGlzKSkuYXR0cignc3JjJywgdXJsKTsKICAgICAgICAgICAgfSBlbHNlIGlmICgkZWxlbWVudC5pcygnc291cmNlJykpIHsKICAgICAgICAgICAgICAgICRlbGVtZW50Lm9uZSgnbG9hZC5vd2wubGF6eScsICQucHJveHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29yZS50cmlnZ2VyKCdsb2FkZWQnLCB7IGVsZW1lbnQ6ICRlbGVtZW50LCB1cmw6IHVybCB9LCAnbGF6eScpOwogICAgICAgICAgICAgICAgfSwgdGhpcykpLmF0dHIoJ3NyY3NldCcsIHVybCk7CgkJCX0gZWxzZSB7CgkJCQlpbWFnZSA9IG5ldyBJbWFnZSgpOwoJCQkJaW1hZ2Uub25sb2FkID0gJC5wcm94eShmdW5jdGlvbigpIHsKCQkJCQkkZWxlbWVudC5jc3MoewoJCQkJCQknYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoIicgKyB1cmwgKyAnIiknLAoJCQkJCQknb3BhY2l0eSc6ICcxJwoJCQkJCX0pOwoJCQkJCXRoaXMuX2NvcmUudHJpZ2dlcignbG9hZGVkJywgeyBlbGVtZW50OiAkZWxlbWVudCwgdXJsOiB1cmwgfSwgJ2xhenknKTsKCQkJCX0sIHRoaXMpOwoJCQkJaW1hZ2Uuc3JjID0gdXJsOwoJCQl9CgkJfSwgdGhpcykpOwoKCQl0aGlzLl9sb2FkZWQucHVzaCgkaXRlbS5nZXQoMCkpOwoJfTsKCgkvKioKCSAqIERlc3Ryb3lzIHRoZSBwbHVnaW4uCgkgKiBAcHVibGljCgkgKi8KCUxhenkucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKCQl2YXIgaGFuZGxlciwgcHJvcGVydHk7CgoJCWZvciAoaGFuZGxlciBpbiB0aGlzLmhhbmRsZXJzKSB7CgkJCXRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGhhbmRsZXIsIHRoaXMuaGFuZGxlcnNbaGFuZGxlcl0pOwoJCX0KCQlmb3IgKHByb3BlcnR5IGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSB7CgkJCXR5cGVvZiB0aGlzW3Byb3BlcnR5XSAhPSAnZnVuY3Rpb24nICYmICh0aGlzW3Byb3BlcnR5XSA9IG51bGwpOwoJCX0KCX07CgoJJC5mbi5vd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkxhenkgPSBMYXp5OwoKfSkod2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpOwoKLyoqCiAqIEF1dG9IZWlnaHQgUGx1Z2luCiAqIEB2ZXJzaW9uIDIuMy40CiAqIEBhdXRob3IgQmFydG9zeiBXb2pjaWVjaG93c2tpCiAqIEBhdXRob3IgRGF2aWQgRGV1dHNjaAogKiBAbGljZW5zZSBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICovCjsoZnVuY3Rpb24oJCwgd2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7CgoJLyoqCgkgKiBDcmVhdGVzIHRoZSBhdXRvIGhlaWdodCBwbHVnaW4uCgkgKiBAY2xhc3MgVGhlIEF1dG8gSGVpZ2h0IFBsdWdpbgoJICogQHBhcmFtIHtPd2x9IGNhcm91c2VsIC0gVGhlIE93bCBDYXJvdXNlbAoJICovCgl2YXIgQXV0b0hlaWdodCA9IGZ1bmN0aW9uKGNhcm91c2VsKSB7CgkJLyoqCgkJICogUmVmZXJlbmNlIHRvIHRoZSBjb3JlLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7T3dsfQoJCSAqLwoJCXRoaXMuX2NvcmUgPSBjYXJvdXNlbDsKCgkJdGhpcy5fcHJldmlvdXNIZWlnaHQgPSBudWxsOwoKCQkvKioKCQkgKiBBbGwgZXZlbnQgaGFuZGxlcnMuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtPYmplY3R9CgkJICovCgkJdGhpcy5faGFuZGxlcnMgPSB7CgkJCSdpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWwgcmVmcmVzaGVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodCkgewoJCQkJCXRoaXMudXBkYXRlKCk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknY2hhbmdlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHQgJiYgZS5wcm9wZXJ0eS5uYW1lID09PSAncG9zaXRpb24nKXsKCQkJCQl0aGlzLnVwZGF0ZSgpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ2xvYWRlZC5vd2wubGF6eSc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b0hlaWdodAoJCQkJCSYmIGUuZWxlbWVudC5jbG9zZXN0KCcuJyArIHRoaXMuX2NvcmUuc2V0dGluZ3MuaXRlbUNsYXNzKS5pbmRleCgpID09PSB0aGlzLl9jb3JlLmN1cnJlbnQoKSkgewoJCQkJCXRoaXMudXBkYXRlKCk7CgkJCQl9CgkJCX0sIHRoaXMpCgkJfTsKCgkJLy8gc2V0IGRlZmF1bHQgb3B0aW9ucwoJCXRoaXMuX2NvcmUub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBBdXRvSGVpZ2h0LkRlZmF1bHRzLCB0aGlzLl9jb3JlLm9wdGlvbnMpOwoKCQkvLyByZWdpc3RlciBldmVudCBoYW5kbGVycwoJCXRoaXMuX2NvcmUuJGVsZW1lbnQub24odGhpcy5faGFuZGxlcnMpOwoJCXRoaXMuX2ludGVydmFsSWQgPSBudWxsOwoJCXZhciByZWZUaGlzID0gdGhpczsKCgkJLy8gVGhlc2UgY2hhbmdlcyBoYXZlIGJlZW4gdGFrZW4gZnJvbSBhIFBSIGJ5IGdhdnJvY2hlbGVnbm91IHByb3Bvc2VkIGluICMxNTc1CgkJLy8gYW5kIGhhdmUgYmVlbiBtYWRlIGNvbXBhdGlibGUgd2l0aCB0aGUgbGF0ZXN0IGpRdWVyeSB2ZXJzaW9uCgkJJCh3aW5kb3cpLm9uKCdsb2FkJywgZnVuY3Rpb24oKSB7CgkJCWlmIChyZWZUaGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHQpIHsKCQkJCXJlZlRoaXMudXBkYXRlKCk7CgkJCX0KCQl9KTsKCgkJLy8gQXV0b3Jlc2l6ZSB0aGUgaGVpZ2h0IG9mIHRoZSBjYXJvdXNlbCB3aGVuIHdpbmRvdyBpcyByZXNpemVkCgkJLy8gV2hlbiBjYXJvdXNlbCBoYXMgaW1hZ2VzLCB0aGUgaGVpZ2h0IGlzIGRlcGVuZGVudCBvbiB0aGUgd2lkdGgKCQkvLyBhbmQgc2hvdWxkIGFsc28gY2hhbmdlIG9uIHJlc2l6ZQoJCSQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKSB7CgkJCWlmIChyZWZUaGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHQpIHsKCQkJCWlmIChyZWZUaGlzLl9pbnRlcnZhbElkICE9IG51bGwpIHsKCQkJCQljbGVhclRpbWVvdXQocmVmVGhpcy5faW50ZXJ2YWxJZCk7CgkJCQl9CgoJCQkJcmVmVGhpcy5faW50ZXJ2YWxJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CgkJCQkJcmVmVGhpcy51cGRhdGUoKTsKCQkJCX0sIDI1MCk7CgkJCX0KCQl9KTsKCgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICovCglBdXRvSGVpZ2h0LkRlZmF1bHRzID0gewoJCWF1dG9IZWlnaHQ6IGZhbHNlLAoJCWF1dG9IZWlnaHRDbGFzczogJ293bC1oZWlnaHQnCgl9OwoKCS8qKgoJICogVXBkYXRlcyB0aGUgdmlldy4KCSAqLwoJQXV0b0hlaWdodC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oKSB7CgkJdmFyIHN0YXJ0ID0gdGhpcy5fY29yZS5fY3VycmVudCwKCQkJZW5kID0gc3RhcnQgKyB0aGlzLl9jb3JlLnNldHRpbmdzLml0ZW1zLAoJCQlsYXp5TG9hZEVuYWJsZWQgPSB0aGlzLl9jb3JlLnNldHRpbmdzLmxhenlMb2FkLAoJCQl2aXNpYmxlID0gdGhpcy5fY29yZS4kc3RhZ2UuY2hpbGRyZW4oKS50b0FycmF5KCkuc2xpY2Uoc3RhcnQsIGVuZCksCgkJCWhlaWdodHMgPSBbXSwKCQkJbWF4aGVpZ2h0ID0gMDsKCgkJJC5lYWNoKHZpc2libGUsIGZ1bmN0aW9uKGluZGV4LCBpdGVtKSB7CgkJCWhlaWdodHMucHVzaCgkKGl0ZW0pLmhlaWdodCgpKTsKCQl9KTsKCgkJbWF4aGVpZ2h0ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgaGVpZ2h0cyk7CgoJCWlmIChtYXhoZWlnaHQgPD0gMSAmJiBsYXp5TG9hZEVuYWJsZWQgJiYgdGhpcy5fcHJldmlvdXNIZWlnaHQpIHsKCQkJbWF4aGVpZ2h0ID0gdGhpcy5fcHJldmlvdXNIZWlnaHQ7CgkJfQoKCQl0aGlzLl9wcmV2aW91c0hlaWdodCA9IG1heGhlaWdodDsKCgkJdGhpcy5fY29yZS4kc3RhZ2UucGFyZW50KCkKCQkJLmhlaWdodChtYXhoZWlnaHQpCgkJCS5hZGRDbGFzcyh0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9IZWlnaHRDbGFzcyk7Cgl9OwoKCUF1dG9IZWlnaHQucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKCQl2YXIgaGFuZGxlciwgcHJvcGVydHk7CgoJCWZvciAoaGFuZGxlciBpbiB0aGlzLl9oYW5kbGVycykgewoJCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9mZihoYW5kbGVyLCB0aGlzLl9oYW5kbGVyc1toYW5kbGVyXSk7CgkJfQoJCWZvciAocHJvcGVydHkgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIHsKCQkJdHlwZW9mIHRoaXNbcHJvcGVydHldICE9PSAnZnVuY3Rpb24nICYmICh0aGlzW3Byb3BlcnR5XSA9IG51bGwpOwoJCX0KCX07CgoJJC5mbi5vd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkF1dG9IZWlnaHQgPSBBdXRvSGVpZ2h0OwoKfSkod2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpOwoKLyoqCiAqIFZpZGVvIFBsdWdpbgogKiBAdmVyc2lvbiAyLjMuNAogKiBAYXV0aG9yIEJhcnRvc3ogV29qY2llY2hvd3NraQogKiBAYXV0aG9yIERhdmlkIERldXRzY2gKICogQGxpY2Vuc2UgVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqLwo7KGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKCS8qKgoJICogQ3JlYXRlcyB0aGUgdmlkZW8gcGx1Z2luLgoJICogQGNsYXNzIFRoZSBWaWRlbyBQbHVnaW4KCSAqIEBwYXJhbSB7T3dsfSBjYXJvdXNlbCAtIFRoZSBPd2wgQ2Fyb3VzZWwKCSAqLwoJdmFyIFZpZGVvID0gZnVuY3Rpb24oY2Fyb3VzZWwpIHsKCQkvKioKCQkgKiBSZWZlcmVuY2UgdG8gdGhlIGNvcmUuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtPd2x9CgkJICovCgkJdGhpcy5fY29yZSA9IGNhcm91c2VsOwoKCQkvKioKCQkgKiBDYWNoZSBhbGwgdmlkZW8gVVJMcy4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge09iamVjdH0KCQkgKi8KCQl0aGlzLl92aWRlb3MgPSB7fTsKCgkJLyoqCgkJICogQ3VycmVudCBwbGF5aW5nIGl0ZW0uCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtqUXVlcnl9CgkJICovCgkJdGhpcy5fcGxheWluZyA9IG51bGw7CgoJCS8qKgoJCSAqIEFsbCBldmVudCBoYW5kbGVycy4KCQkgKiBAdG9kbyBUaGUgY2xvbmVkIGNvbnRlbnQgcmVtb3ZhbGUgaXMgdG9vIGxhdGUKCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge09iamVjdH0KCQkgKi8KCQl0aGlzLl9oYW5kbGVycyA9IHsKCQkJJ2luaXRpYWxpemVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlKSB7CgkJCQkJdGhpcy5fY29yZS5yZWdpc3Rlcih7IHR5cGU6ICdzdGF0ZScsIG5hbWU6ICdwbGF5aW5nJywgdGFnczogWyAnaW50ZXJhY3RpbmcnIF0gfSk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQkncmVzaXplLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmIHRoaXMuX2NvcmUuc2V0dGluZ3MudmlkZW8gJiYgdGhpcy5pc0luRnVsbFNjcmVlbigpKSB7CgkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ3JlZnJlc2hlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLmlzKCdyZXNpemluZycpKSB7CgkJCQkJdGhpcy5fY29yZS4kc3RhZ2UuZmluZCgnLmNsb25lZCAub3dsLXZpZGVvLWZyYW1lJykucmVtb3ZlKCk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknY2hhbmdlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiBlLnByb3BlcnR5Lm5hbWUgPT09ICdwb3NpdGlvbicgJiYgdGhpcy5fcGxheWluZykgewoJCQkJCXRoaXMuc3RvcCgpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ3ByZXBhcmVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKCFlLm5hbWVzcGFjZSkgewoJCQkJCXJldHVybjsKCQkJCX0KCgkJCQl2YXIgJGVsZW1lbnQgPSAkKGUuY29udGVudCkuZmluZCgnLm93bC12aWRlbycpOwoKCQkJCWlmICgkZWxlbWVudC5sZW5ndGgpIHsKCQkJCQkkZWxlbWVudC5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpOwoJCQkJCXRoaXMuZmV0Y2goJGVsZW1lbnQsICQoZS5jb250ZW50KSk7CgkJCQl9CgkJCX0sIHRoaXMpCgkJfTsKCgkJLy8gc2V0IGRlZmF1bHQgb3B0aW9ucwoJCXRoaXMuX2NvcmUub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBWaWRlby5EZWZhdWx0cywgdGhpcy5fY29yZS5vcHRpb25zKTsKCgkJLy8gcmVnaXN0ZXIgZXZlbnQgaGFuZGxlcnMKCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKTsKCgkJdGhpcy5fY29yZS4kZWxlbWVudC5vbignY2xpY2sub3dsLnZpZGVvJywgJy5vd2wtdmlkZW8tcGxheS1pY29uJywgJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCXRoaXMucGxheShlKTsKCQl9LCB0aGlzKSk7Cgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICovCglWaWRlby5EZWZhdWx0cyA9IHsKCQl2aWRlbzogZmFsc2UsCgkJdmlkZW9IZWlnaHQ6IGZhbHNlLAoJCXZpZGVvV2lkdGg6IGZhbHNlCgl9OwoKCS8qKgoJICogR2V0cyB0aGUgdmlkZW8gSUQgYW5kIHRoZSB0eXBlIChZb3VUdWJlL1ZpbWVvL3Z6YWFyIG9ubHkpLgoJICogQHByb3RlY3RlZAoJICogQHBhcmFtIHtqUXVlcnl9IHRhcmdldCAtIFRoZSB0YXJnZXQgY29udGFpbmluZyB0aGUgdmlkZW8gZGF0YS4KCSAqIEBwYXJhbSB7alF1ZXJ5fSBpdGVtIC0gVGhlIGl0ZW0gY29udGFpbmluZyB0aGUgdmlkZW8uCgkgKi8KCVZpZGVvLnByb3RvdHlwZS5mZXRjaCA9IGZ1bmN0aW9uKHRhcmdldCwgaXRlbSkgewoJCQl2YXIgdHlwZSA9IChmdW5jdGlvbigpIHsKCQkJCQlpZiAodGFyZ2V0LmF0dHIoJ2RhdGEtdmltZW8taWQnKSkgewoJCQkJCQlyZXR1cm4gJ3ZpbWVvJzsKCQkJCQl9IGVsc2UgaWYgKHRhcmdldC5hdHRyKCdkYXRhLXZ6YWFyLWlkJykpIHsKCQkJCQkJcmV0dXJuICd2emFhcicKCQkJCQl9IGVsc2UgewoJCQkJCQlyZXR1cm4gJ3lvdXR1YmUnOwoJCQkJCX0KCQkJCX0pKCksCgkJCQlpZCA9IHRhcmdldC5hdHRyKCdkYXRhLXZpbWVvLWlkJykgfHwgdGFyZ2V0LmF0dHIoJ2RhdGEteW91dHViZS1pZCcpIHx8IHRhcmdldC5hdHRyKCdkYXRhLXZ6YWFyLWlkJyksCgkJCQl3aWR0aCA9IHRhcmdldC5hdHRyKCdkYXRhLXdpZHRoJykgfHwgdGhpcy5fY29yZS5zZXR0aW5ncy52aWRlb1dpZHRoLAoJCQkJaGVpZ2h0ID0gdGFyZ2V0LmF0dHIoJ2RhdGEtaGVpZ2h0JykgfHwgdGhpcy5fY29yZS5zZXR0aW5ncy52aWRlb0hlaWdodCwKCQkJCXVybCA9IHRhcmdldC5hdHRyKCdocmVmJyk7CgoJCWlmICh1cmwpIHsKCgkJCS8qCgkJCQkJUGFyc2VzIHRoZSBpZCdzIG91dCBvZiB0aGUgZm9sbG93aW5nIHVybHMgKGFuZCBwcm9iYWJseSBtb3JlKToKCQkJCQlodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTppZAoJCQkJCWh0dHBzOi8veW91dHUuYmUvOmlkCgkJCQkJaHR0cHM6Ly92aW1lby5jb20vOmlkCgkJCQkJaHR0cHM6Ly92aW1lby5jb20vY2hhbm5lbHMvOmNoYW5uZWwvOmlkCgkJCQkJaHR0cHM6Ly92aW1lby5jb20vZ3JvdXBzLzpncm91cC92aWRlb3MvOmlkCgkJCQkJaHR0cHM6Ly9hcHAudnphYXIuY29tL3ZpZGVvcy86aWQKCgkJCQkJVmlzdWFsIGV4YW1wbGU6IGh0dHBzOi8vcmVnZXhwZXIuY29tLyMoaHR0cCUzQSU3Q2h0dHBzJTNBJTdDKSU1QyUyRiU1QyUyRihwbGF5ZXIuJTdDd3d3LiU3Q2FwcC4pJTNGKHZpbWVvJTVDLmNvbSU3Q3lvdXR1KGJlJTVDLmNvbSU3QyU1Qy5iZSU3Q2JlJTVDLmdvb2dsZWFwaXMlNUMuY29tKSU3Q3Z6YWFyJTVDLmNvbSklNUMlMkYodmlkZW8lNUMlMkYlN0N2aWRlb3MlNUMlMkYlN0NlbWJlZCU1QyUyRiU3Q2NoYW5uZWxzJTVDJTJGLiUyQiU1QyUyRiU3Q2dyb3VwcyU1QyUyRi4lMkIlNUMlMkYlN0N3YXRjaCU1QyUzRnYlM0QlN0N2JTVDJTJGKSUzRiglNUJBLVphLXowLTkuXyUyNS0lNUQqKSglNUMlMjYlNUNTJTJCKSUzRgoJCQkqLwoKCQkJaWQgPSB1cmwubWF0Y2goLyhodHRwOnxodHRwczp8KVwvXC8ocGxheWVyLnx3d3cufGFwcC4pPyh2aW1lb1wuY29tfHlvdXR1KGJlXC5jb218XC5iZXxiZVwuZ29vZ2xlYXBpc1wuY29tfGJlXC1ub2Nvb2tpZVwuY29tKXx2emFhclwuY29tKVwvKHZpZGVvXC98dmlkZW9zXC98ZW1iZWRcL3xjaGFubmVsc1wvLitcL3xncm91cHNcLy4rXC98d2F0Y2hcP3Y9fHZcLyk/KFtBLVphLXowLTkuXyUtXSopKFwmXFMrKT8vKTsKCgkJCWlmIChpZFszXS5pbmRleE9mKCd5b3V0dScpID4gLTEpIHsKCQkJCXR5cGUgPSAneW91dHViZSc7CgkJCX0gZWxzZSBpZiAoaWRbM10uaW5kZXhPZigndmltZW8nKSA+IC0xKSB7CgkJCQl0eXBlID0gJ3ZpbWVvJzsKCQkJfSBlbHNlIGlmIChpZFszXS5pbmRleE9mKCd2emFhcicpID4gLTEpIHsKCQkJCXR5cGUgPSAndnphYXInOwoJCQl9IGVsc2UgewoJCQkJdGhyb3cgbmV3IEVycm9yKCdWaWRlbyBVUkwgbm90IHN1cHBvcnRlZC4nKTsKCQkJfQoJCQlpZCA9IGlkWzZdOwoJCX0gZWxzZSB7CgkJCXRocm93IG5ldyBFcnJvcignTWlzc2luZyB2aWRlbyBVUkwuJyk7CgkJfQoKCQl0aGlzLl92aWRlb3NbdXJsXSA9IHsKCQkJdHlwZTogdHlwZSwKCQkJaWQ6IGlkLAoJCQl3aWR0aDogd2lkdGgsCgkJCWhlaWdodDogaGVpZ2h0CgkJfTsKCgkJaXRlbS5hdHRyKCdkYXRhLXZpZGVvJywgdXJsKTsKCgkJdGhpcy50aHVtYm5haWwodGFyZ2V0LCB0aGlzLl92aWRlb3NbdXJsXSk7Cgl9OwoKCS8qKgoJICogQ3JlYXRlcyB2aWRlbyB0aHVtYm5haWwuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcGFyYW0ge2pRdWVyeX0gdGFyZ2V0IC0gVGhlIHRhcmdldCBjb250YWluaW5nIHRoZSB2aWRlbyBkYXRhLgoJICogQHBhcmFtIHtPYmplY3R9IGluZm8gLSBUaGUgdmlkZW8gaW5mbyBvYmplY3QuCgkgKiBAc2VlIGBmZXRjaGAKCSAqLwoJVmlkZW8ucHJvdG90eXBlLnRodW1ibmFpbCA9IGZ1bmN0aW9uKHRhcmdldCwgdmlkZW8pIHsKCQl2YXIgdG5MaW5rLAoJCQlpY29uLAoJCQlwYXRoLAoJCQlkaW1lbnNpb25zID0gdmlkZW8ud2lkdGggJiYgdmlkZW8uaGVpZ2h0ID8gJ3dpZHRoOicgKyB2aWRlby53aWR0aCArICdweDtoZWlnaHQ6JyArIHZpZGVvLmhlaWdodCArICdweDsnIDogJycsCgkJCWN1c3RvbVRuID0gdGFyZ2V0LmZpbmQoJ2ltZycpLAoJCQlzcmNUeXBlID0gJ3NyYycsCgkJCWxhenlDbGFzcyA9ICcnLAoJCQlzZXR0aW5ncyA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsCgkJCWNyZWF0ZSA9IGZ1bmN0aW9uKHBhdGgpIHsKCQkJCWljb24gPSAnPGRpdiBjbGFzcz0ib3dsLXZpZGVvLXBsYXktaWNvbiI+PC9kaXY+JzsKCgkJCQlpZiAoc2V0dGluZ3MubGF6eUxvYWQpIHsKCQkJCQl0bkxpbmsgPSAkKCc8ZGl2Lz4nLHsKCQkJCQkJImNsYXNzIjogJ293bC12aWRlby10biAnICsgbGF6eUNsYXNzLAoJCQkJCQkic3JjVHlwZSI6IHBhdGgKCQkJCQl9KTsKCQkJCX0gZWxzZSB7CgkJCQkJdG5MaW5rID0gJCggJzxkaXYvPicsIHsKCQkJCQkJImNsYXNzIjogIm93bC12aWRlby10biIsCgkJCQkJCSJzdHlsZSI6ICdvcGFjaXR5OjE7YmFja2dyb3VuZC1pbWFnZTp1cmwoJyArIHBhdGggKyAnKScKCQkJCQl9KTsKCQkJCX0KCQkJCXRhcmdldC5hZnRlcih0bkxpbmspOwoJCQkJdGFyZ2V0LmFmdGVyKGljb24pOwoJCQl9OwoKCQkvLyB3cmFwIHZpZGVvIGNvbnRlbnQgaW50byBvd2wtdmlkZW8td3JhcHBlciBkaXYKCQl0YXJnZXQud3JhcCggJCggJzxkaXYvPicsIHsKCQkJImNsYXNzIjogIm93bC12aWRlby13cmFwcGVyIiwKCQkJInN0eWxlIjogZGltZW5zaW9ucwoJCX0pKTsKCgkJaWYgKHRoaXMuX2NvcmUuc2V0dGluZ3MubGF6eUxvYWQpIHsKCQkJc3JjVHlwZSA9ICdkYXRhLXNyYyc7CgkJCWxhenlDbGFzcyA9ICdvd2wtbGF6eSc7CgkJfQoKCQkvLyBjdXN0b20gdGh1bWJuYWlsCgkJaWYgKGN1c3RvbVRuLmxlbmd0aCkgewoJCQljcmVhdGUoY3VzdG9tVG4uYXR0cihzcmNUeXBlKSk7CgkJCWN1c3RvbVRuLnJlbW92ZSgpOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAodmlkZW8udHlwZSA9PT0gJ3lvdXR1YmUnKSB7CgkJCXBhdGggPSAiLy9pbWcueW91dHViZS5jb20vdmkvIiArIHZpZGVvLmlkICsgIi9ocWRlZmF1bHQuanBnIjsKCQkJY3JlYXRlKHBhdGgpOwoJCX0gZWxzZSBpZiAodmlkZW8udHlwZSA9PT0gJ3ZpbWVvJykgewoJCQkkLmFqYXgoewoJCQkJdHlwZTogJ0dFVCcsCgkJCQl1cmw6ICcvL3ZpbWVvLmNvbS9hcGkvdjIvdmlkZW8vJyArIHZpZGVvLmlkICsgJy5qc29uJywKCQkJCWpzb25wOiAnY2FsbGJhY2snLAoJCQkJZGF0YVR5cGU6ICdqc29ucCcsCgkJCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJCQkJcGF0aCA9IGRhdGFbMF0udGh1bWJuYWlsX2xhcmdlOwoJCQkJCWNyZWF0ZShwYXRoKTsKCQkJCX0KCQkJfSk7CgkJfSBlbHNlIGlmICh2aWRlby50eXBlID09PSAndnphYXInKSB7CgkJCSQuYWpheCh7CgkJCQl0eXBlOiAnR0VUJywKCQkJCXVybDogJy8vdnphYXIuY29tL2FwaS92aWRlb3MvJyArIHZpZGVvLmlkICsgJy5qc29uJywKCQkJCWpzb25wOiAnY2FsbGJhY2snLAoJCQkJZGF0YVR5cGU6ICdqc29ucCcsCgkJCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJCQkJcGF0aCA9IGRhdGEuZnJhbWVncmFiX3VybDsKCQkJCQljcmVhdGUocGF0aCk7CgkJCQl9CgkJCX0pOwoJCX0KCX07CgoJLyoqCgkgKiBTdG9wcyB0aGUgY3VycmVudCB2aWRlby4KCSAqIEBwdWJsaWMKCSAqLwoJVmlkZW8ucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbigpIHsKCQl0aGlzLl9jb3JlLnRyaWdnZXIoJ3N0b3AnLCBudWxsLCAndmlkZW8nKTsKCQl0aGlzLl9wbGF5aW5nLmZpbmQoJy5vd2wtdmlkZW8tZnJhbWUnKS5yZW1vdmUoKTsKCQl0aGlzLl9wbGF5aW5nLnJlbW92ZUNsYXNzKCdvd2wtdmlkZW8tcGxheWluZycpOwoJCXRoaXMuX3BsYXlpbmcgPSBudWxsOwoJCXRoaXMuX2NvcmUubGVhdmUoJ3BsYXlpbmcnKTsKCQl0aGlzLl9jb3JlLnRyaWdnZXIoJ3N0b3BwZWQnLCBudWxsLCAndmlkZW8nKTsKCX07CgoJLyoqCgkgKiBTdGFydHMgdGhlIGN1cnJlbnQgdmlkZW8uCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIFRoZSBldmVudCBhcmd1bWVudHMuCgkgKi8KCVZpZGVvLnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpLAoJCQlpdGVtID0gdGFyZ2V0LmNsb3Nlc3QoJy4nICsgdGhpcy5fY29yZS5zZXR0aW5ncy5pdGVtQ2xhc3MpLAoJCQl2aWRlbyA9IHRoaXMuX3ZpZGVvc1tpdGVtLmF0dHIoJ2RhdGEtdmlkZW8nKV0sCgkJCXdpZHRoID0gdmlkZW8ud2lkdGggfHwgJzEwMCUnLAoJCQloZWlnaHQgPSB2aWRlby5oZWlnaHQgfHwgdGhpcy5fY29yZS4kc3RhZ2UuaGVpZ2h0KCksCgkJCWh0bWwsCgkJCWlmcmFtZTsKCgkJaWYgKHRoaXMuX3BsYXlpbmcpIHsKCQkJcmV0dXJuOwoJCX0KCgkJdGhpcy5fY29yZS5lbnRlcigncGxheWluZycpOwoJCXRoaXMuX2NvcmUudHJpZ2dlcigncGxheScsIG51bGwsICd2aWRlbycpOwoKCQlpdGVtID0gdGhpcy5fY29yZS5pdGVtcyh0aGlzLl9jb3JlLnJlbGF0aXZlKGl0ZW0uaW5kZXgoKSkpOwoKCQl0aGlzLl9jb3JlLnJlc2V0KGl0ZW0uaW5kZXgoKSk7CgoJCWh0bWwgPSAkKCAnPGlmcmFtZSBmcmFtZWJvcmRlcj0iMCIgYWxsb3dmdWxsc2NyZWVuIG1vemFsbG93ZnVsbHNjcmVlbiB3ZWJraXRBbGxvd0Z1bGxTY3JlZW4gPjwvaWZyYW1lPicgKTsKCQlodG1sLmF0dHIoICdoZWlnaHQnLCBoZWlnaHQgKTsKCQlodG1sLmF0dHIoICd3aWR0aCcsIHdpZHRoICk7CgkJaWYgKHZpZGVvLnR5cGUgPT09ICd5b3V0dWJlJykgewoJCQlodG1sLmF0dHIoICdzcmMnLCAnLy93d3cueW91dHViZS5jb20vZW1iZWQvJyArIHZpZGVvLmlkICsgJz9hdXRvcGxheT0xJnJlbD0wJnY9JyArIHZpZGVvLmlkICk7CgkJfSBlbHNlIGlmICh2aWRlby50eXBlID09PSAndmltZW8nKSB7CgkJCWh0bWwuYXR0ciggJ3NyYycsICcvL3BsYXllci52aW1lby5jb20vdmlkZW8vJyArIHZpZGVvLmlkICsgJz9hdXRvcGxheT0xJyApOwoJCX0gZWxzZSBpZiAodmlkZW8udHlwZSA9PT0gJ3Z6YWFyJykgewoJCQlodG1sLmF0dHIoICdzcmMnLCAnLy92aWV3LnZ6YWFyLmNvbS8nICsgdmlkZW8uaWQgKyAnL3BsYXllcj9hdXRvcGxheT10cnVlJyApOwoJCX0KCgkJaWZyYW1lID0gJChodG1sKS53cmFwKCAnPGRpdiBjbGFzcz0ib3dsLXZpZGVvLWZyYW1lIiAvPicgKS5pbnNlcnRBZnRlcihpdGVtLmZpbmQoJy5vd2wtdmlkZW8nKSk7CgoJCXRoaXMuX3BsYXlpbmcgPSBpdGVtLmFkZENsYXNzKCdvd2wtdmlkZW8tcGxheWluZycpOwoJfTsKCgkvKioKCSAqIENoZWNrcyB3aGV0aGVyIGFuIHZpZGVvIGlzIGN1cnJlbnRseSBpbiBmdWxsIHNjcmVlbiBtb2RlIG9yIG5vdC4KCSAqIEB0b2RvIEJhZCBzdHlsZSBiZWNhdXNlIGxvb2tzIGxpa2UgYSByZWFkb25seSBtZXRob2QgYnV0IGNoYW5nZXMgbWVtYmVycy4KCSAqIEBwcm90ZWN0ZWQKCSAqIEByZXR1cm5zIHtCb29sZWFufQoJICovCglWaWRlby5wcm90b3R5cGUuaXNJbkZ1bGxTY3JlZW4gPSBmdW5jdGlvbigpIHsKCQl2YXIgZWxlbWVudCA9IGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50IHx8IGRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50IHx8CgkJCQlkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudDsKCgkJcmV0dXJuIGVsZW1lbnQgJiYgJChlbGVtZW50KS5wYXJlbnQoKS5oYXNDbGFzcygnb3dsLXZpZGVvLWZyYW1lJyk7Cgl9OwoKCS8qKgoJICogRGVzdHJveXMgdGhlIHBsdWdpbi4KCSAqLwoJVmlkZW8ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHsKCQl2YXIgaGFuZGxlciwgcHJvcGVydHk7CgoJCXRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKCdjbGljay5vd2wudmlkZW8nKTsKCgkJZm9yIChoYW5kbGVyIGluIHRoaXMuX2hhbmRsZXJzKSB7CgkJCXRoaXMuX2NvcmUuJGVsZW1lbnQub2ZmKGhhbmRsZXIsIHRoaXMuX2hhbmRsZXJzW2hhbmRsZXJdKTsKCQl9CgkJZm9yIChwcm9wZXJ0eSBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgewoJCQl0eXBlb2YgdGhpc1twcm9wZXJ0eV0gIT0gJ2Z1bmN0aW9uJyAmJiAodGhpc1twcm9wZXJ0eV0gPSBudWxsKTsKCQl9Cgl9OwoKCSQuZm4ub3dsQ2Fyb3VzZWwuQ29uc3RydWN0b3IuUGx1Z2lucy5WaWRlbyA9IFZpZGVvOwoKfSkod2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpOwoKLyoqCiAqIEFuaW1hdGUgUGx1Z2luCiAqIEB2ZXJzaW9uIDIuMy40CiAqIEBhdXRob3IgQmFydG9zeiBXb2pjaWVjaG93c2tpCiAqIEBhdXRob3IgRGF2aWQgRGV1dHNjaAogKiBAbGljZW5zZSBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICovCjsoZnVuY3Rpb24oJCwgd2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7CgoJLyoqCgkgKiBDcmVhdGVzIHRoZSBhbmltYXRlIHBsdWdpbi4KCSAqIEBjbGFzcyBUaGUgTmF2aWdhdGlvbiBQbHVnaW4KCSAqIEBwYXJhbSB7T3dsfSBzY29wZSAtIFRoZSBPd2wgQ2Fyb3VzZWwKCSAqLwoJdmFyIEFuaW1hdGUgPSBmdW5jdGlvbihzY29wZSkgewoJCXRoaXMuY29yZSA9IHNjb3BlOwoJCXRoaXMuY29yZS5vcHRpb25zID0gJC5leHRlbmQoe30sIEFuaW1hdGUuRGVmYXVsdHMsIHRoaXMuY29yZS5vcHRpb25zKTsKCQl0aGlzLnN3YXBwaW5nID0gdHJ1ZTsKCQl0aGlzLnByZXZpb3VzID0gdW5kZWZpbmVkOwoJCXRoaXMubmV4dCA9IHVuZGVmaW5lZDsKCgkJdGhpcy5oYW5kbGVycyA9IHsKCQkJJ2NoYW5nZS5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiBlLnByb3BlcnR5Lm5hbWUgPT0gJ3Bvc2l0aW9uJykgewoJCQkJCXRoaXMucHJldmlvdXMgPSB0aGlzLmNvcmUuY3VycmVudCgpOwoJCQkJCXRoaXMubmV4dCA9IGUucHJvcGVydHkudmFsdWU7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknZHJhZy5vd2wuY2Fyb3VzZWwgZHJhZ2dlZC5vd2wuY2Fyb3VzZWwgdHJhbnNsYXRlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSkgewoJCQkJCXRoaXMuc3dhcHBpbmcgPSBlLnR5cGUgPT0gJ3RyYW5zbGF0ZWQnOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ3RyYW5zbGF0ZS5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiB0aGlzLnN3YXBwaW5nICYmICh0aGlzLmNvcmUub3B0aW9ucy5hbmltYXRlT3V0IHx8IHRoaXMuY29yZS5vcHRpb25zLmFuaW1hdGVJbikpIHsKCQkJCQl0aGlzLnN3YXAoKTsKCQkJCX0KCQkJfSwgdGhpcykKCQl9OwoKCQl0aGlzLmNvcmUuJGVsZW1lbnQub24odGhpcy5oYW5kbGVycyk7Cgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICovCglBbmltYXRlLkRlZmF1bHRzID0gewoJCWFuaW1hdGVPdXQ6IGZhbHNlLAoJCWFuaW1hdGVJbjogZmFsc2UKCX07CgoJLyoqCgkgKiBUb2dnbGVzIHRoZSBhbmltYXRpb24gY2xhc3NlcyB3aGVuZXZlciBhbiB0cmFuc2xhdGlvbnMgc3RhcnRzLgoJICogQHByb3RlY3RlZAoJICogQHJldHVybnMge0Jvb2xlYW58dW5kZWZpbmVkfQoJICovCglBbmltYXRlLnByb3RvdHlwZS5zd2FwID0gZnVuY3Rpb24oKSB7CgoJCWlmICh0aGlzLmNvcmUuc2V0dGluZ3MuaXRlbXMgIT09IDEpIHsKCQkJcmV0dXJuOwoJCX0KCgkJaWYgKCEkLnN1cHBvcnQuYW5pbWF0aW9uIHx8ICEkLnN1cHBvcnQudHJhbnNpdGlvbikgewoJCQlyZXR1cm47CgkJfQoKCQl0aGlzLmNvcmUuc3BlZWQoMCk7CgoJCXZhciBsZWZ0LAoJCQljbGVhciA9ICQucHJveHkodGhpcy5jbGVhciwgdGhpcyksCgkJCXByZXZpb3VzID0gdGhpcy5jb3JlLiRzdGFnZS5jaGlsZHJlbigpLmVxKHRoaXMucHJldmlvdXMpLAoJCQluZXh0ID0gdGhpcy5jb3JlLiRzdGFnZS5jaGlsZHJlbigpLmVxKHRoaXMubmV4dCksCgkJCWluY29taW5nID0gdGhpcy5jb3JlLnNldHRpbmdzLmFuaW1hdGVJbiwKCQkJb3V0Z29pbmcgPSB0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZU91dDsKCgkJaWYgKHRoaXMuY29yZS5jdXJyZW50KCkgPT09IHRoaXMucHJldmlvdXMpIHsKCQkJcmV0dXJuOwoJCX0KCgkJaWYgKG91dGdvaW5nKSB7CgkJCWxlZnQgPSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5wcmV2aW91cykgLSB0aGlzLmNvcmUuY29vcmRpbmF0ZXModGhpcy5uZXh0KTsKCQkJcHJldmlvdXMub25lKCQuc3VwcG9ydC5hbmltYXRpb24uZW5kLCBjbGVhcikKCQkJCS5jc3MoIHsgJ2xlZnQnOiBsZWZ0ICsgJ3B4JyB9ICkKCQkJCS5hZGRDbGFzcygnYW5pbWF0ZWQgb3dsLWFuaW1hdGVkLW91dCcpCgkJCQkuYWRkQ2xhc3Mob3V0Z29pbmcpOwoJCX0KCgkJaWYgKGluY29taW5nKSB7CgkJCW5leHQub25lKCQuc3VwcG9ydC5hbmltYXRpb24uZW5kLCBjbGVhcikKCQkJCS5hZGRDbGFzcygnYW5pbWF0ZWQgb3dsLWFuaW1hdGVkLWluJykKCQkJCS5hZGRDbGFzcyhpbmNvbWluZyk7CgkJfQoJfTsKCglBbmltYXRlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKGUpIHsKCQkkKGUudGFyZ2V0KS5jc3MoIHsgJ2xlZnQnOiAnJyB9ICkKCQkJLnJlbW92ZUNsYXNzKCdhbmltYXRlZCBvd2wtYW5pbWF0ZWQtb3V0IG93bC1hbmltYXRlZC1pbicpCgkJCS5yZW1vdmVDbGFzcyh0aGlzLmNvcmUuc2V0dGluZ3MuYW5pbWF0ZUluKQoJCQkucmVtb3ZlQ2xhc3ModGhpcy5jb3JlLnNldHRpbmdzLmFuaW1hdGVPdXQpOwoJCXRoaXMuY29yZS5vblRyYW5zaXRpb25FbmQoKTsKCX07CgoJLyoqCgkgKiBEZXN0cm95cyB0aGUgcGx1Z2luLgoJICogQHB1YmxpYwoJICovCglBbmltYXRlLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CgkJdmFyIGhhbmRsZXIsIHByb3BlcnR5OwoKCQlmb3IgKGhhbmRsZXIgaW4gdGhpcy5oYW5kbGVycykgewoJCQl0aGlzLmNvcmUuJGVsZW1lbnQub2ZmKGhhbmRsZXIsIHRoaXMuaGFuZGxlcnNbaGFuZGxlcl0pOwoJCX0KCQlmb3IgKHByb3BlcnR5IGluIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKSB7CgkJCXR5cGVvZiB0aGlzW3Byb3BlcnR5XSAhPSAnZnVuY3Rpb24nICYmICh0aGlzW3Byb3BlcnR5XSA9IG51bGwpOwoJCX0KCX07CgoJJC5mbi5vd2xDYXJvdXNlbC5Db25zdHJ1Y3Rvci5QbHVnaW5zLkFuaW1hdGUgPSBBbmltYXRlOwoKfSkod2luZG93LlplcHRvIHx8IHdpbmRvdy5qUXVlcnksIHdpbmRvdywgZG9jdW1lbnQpOwoKLyoqCiAqIEF1dG9wbGF5IFBsdWdpbgogKiBAdmVyc2lvbiAyLjMuNAogKiBAYXV0aG9yIEJhcnRvc3ogV29qY2llY2hvd3NraQogKiBAYXV0aG9yIEFydHVzIEtvbGFub3dza2kKICogQGF1dGhvciBEYXZpZCBEZXV0c2NoCiAqIEBhdXRob3IgVG9tIERlIENhbHV3w6kKICogQGxpY2Vuc2UgVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqLwo7KGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKCS8qKgoJICogQ3JlYXRlcyB0aGUgYXV0b3BsYXkgcGx1Z2luLgoJICogQGNsYXNzIFRoZSBBdXRvcGxheSBQbHVnaW4KCSAqIEBwYXJhbSB7T3dsfSBzY29wZSAtIFRoZSBPd2wgQ2Fyb3VzZWwKCSAqLwoJdmFyIEF1dG9wbGF5ID0gZnVuY3Rpb24oY2Fyb3VzZWwpIHsKCQkvKioKCQkgKiBSZWZlcmVuY2UgdG8gdGhlIGNvcmUuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtPd2x9CgkJICovCgkJdGhpcy5fY29yZSA9IGNhcm91c2VsOwoKCQkvKioKCQkgKiBUaGUgYXV0b3BsYXkgdGltZW91dCBpZC4KCQkgKiBAdHlwZSB7TnVtYmVyfQoJCSAqLwoJCXRoaXMuX2NhbGwgPSBudWxsOwoKCQkvKioKCQkgKiBEZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHRoZSBwbHVnaW4sIHRoaXMgdmFyaWFibGUgY29udGFpbnMgZWl0aGVyCgkJICogdGhlIHN0YXJ0IHRpbWUgb2YgdGhlIHRpbWVyIG9yIHRoZSBjdXJyZW50IHRpbWVyIHZhbHVlIGlmIGl0J3MKCQkgKiBwYXVzZWQuIFNpbmNlIHdlIHN0YXJ0IGluIGEgcGF1c2VkIHN0YXRlIHdlIGluaXRpYWxpemUgdGhlIHRpbWVyCgkJICogdmFsdWUuCgkJICogQHR5cGUge051bWJlcn0KCQkgKi8KCQl0aGlzLl90aW1lID0gMDsKCgkJLyoqCgkJICogU3RvcmVzIHRoZSB0aW1lb3V0IGN1cnJlbnRseSB1c2VkLgoJCSAqIEB0eXBlIHtOdW1iZXJ9CgkJICovCgkJdGhpcy5fdGltZW91dCA9IDA7CgoJCS8qKgoJCSAqIEluZGljYXRlcyB3aGVuZXZlciB0aGUgYXV0b3BsYXkgaXMgcGF1c2VkLgoJCSAqIEB0eXBlIHtCb29sZWFufQoJCSAqLwoJCXRoaXMuX3BhdXNlZCA9IHRydWU7CgoJCS8qKgoJCSAqIEFsbCBldmVudCBoYW5kbGVycy4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge09iamVjdH0KCQkgKi8KCQl0aGlzLl9oYW5kbGVycyA9IHsKCQkJJ2NoYW5nZWQub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgZS5wcm9wZXJ0eS5uYW1lID09PSAnc2V0dGluZ3MnKSB7CgkJCQkJaWYgKHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXkpIHsKCQkJCQkJdGhpcy5wbGF5KCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhpcy5zdG9wKCk7CgkJCQkJfQoJCQkJfSBlbHNlIGlmIChlLm5hbWVzcGFjZSAmJiBlLnByb3BlcnR5Lm5hbWUgPT09ICdwb3NpdGlvbicgJiYgdGhpcy5fcGF1c2VkKSB7CgkJCQkJLy8gUmVzZXQgdGhlIHRpbWVyLiBUaGlzIGNvZGUgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHBvc2l0aW9uCgkJCQkJLy8gb2YgdGhlIGNhcm91c2VsIHdhcyBjaGFuZ2VkIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4KCQkJCQl0aGlzLl90aW1lID0gMDsKCQkJCX0KCQkJfSwgdGhpcyksCgkJCSdpbml0aWFsaXplZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5KSB7CgkJCQkJdGhpcy5wbGF5KCk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQkncGxheS5vd2wuYXV0b3BsYXknOiAkLnByb3h5KGZ1bmN0aW9uKGUsIHQsIHMpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSkgewoJCQkJCXRoaXMucGxheSh0LCBzKTsKCQkJCX0KCQkJfSwgdGhpcyksCgkJCSdzdG9wLm93bC5hdXRvcGxheSc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlKSB7CgkJCQkJdGhpcy5zdG9wKCk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknbW91c2VvdmVyLm93bC5hdXRvcGxheSc6ICQucHJveHkoZnVuY3Rpb24oKSB7CgkJCQlpZiAodGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheUhvdmVyUGF1c2UgJiYgdGhpcy5fY29yZS5pcygncm90YXRpbmcnKSkgewoJCQkJCXRoaXMucGF1c2UoKTsKCQkJCX0KCQkJfSwgdGhpcyksCgkJCSdtb3VzZWxlYXZlLm93bC5hdXRvcGxheSc6ICQucHJveHkoZnVuY3Rpb24oKSB7CgkJCQlpZiAodGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheUhvdmVyUGF1c2UgJiYgdGhpcy5fY29yZS5pcygncm90YXRpbmcnKSkgewoJCQkJCXRoaXMucGxheSgpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ3RvdWNoc3RhcnQub3dsLmNvcmUnOiAkLnByb3h5KGZ1bmN0aW9uKCkgewoJCQkJaWYgKHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlICYmIHRoaXMuX2NvcmUuaXMoJ3JvdGF0aW5nJykpIHsKCQkJCQl0aGlzLnBhdXNlKCk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQkndG91Y2hlbmQub3dsLmNvcmUnOiAkLnByb3h5KGZ1bmN0aW9uKCkgewoJCQkJaWYgKHRoaXMuX2NvcmUuc2V0dGluZ3MuYXV0b3BsYXlIb3ZlclBhdXNlKSB7CgkJCQkJdGhpcy5wbGF5KCk7CgkJCQl9CgkJCX0sIHRoaXMpCgkJfTsKCgkJLy8gcmVnaXN0ZXIgZXZlbnQgaGFuZGxlcnMKCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9uKHRoaXMuX2hhbmRsZXJzKTsKCgkJLy8gc2V0IGRlZmF1bHQgb3B0aW9ucwoJCXRoaXMuX2NvcmUub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBBdXRvcGxheS5EZWZhdWx0cywgdGhpcy5fY29yZS5vcHRpb25zKTsKCX07CgoJLyoqCgkgKiBEZWZhdWx0IG9wdGlvbnMuCgkgKiBAcHVibGljCgkgKi8KCUF1dG9wbGF5LkRlZmF1bHRzID0gewoJCWF1dG9wbGF5OiBmYWxzZSwKCQlhdXRvcGxheVRpbWVvdXQ6IDUwMDAsCgkJYXV0b3BsYXlIb3ZlclBhdXNlOiBmYWxzZSwKCQlhdXRvcGxheVNwZWVkOiBmYWxzZQoJfTsKCgkvKioKCSAqIFRyYW5zaXRpb24gdG8gdGhlIG5leHQgc2xpZGUgYW5kIHNldCBhIHRpbWVvdXQgZm9yIHRoZSBuZXh0IHRyYW5zaXRpb24uCgkgKiBAcHJpdmF0ZQoJICogQHBhcmFtIHtOdW1iZXJ9IFtzcGVlZF0gLSBUaGUgYW5pbWF0aW9uIHNwZWVkIGZvciB0aGUgYW5pbWF0aW9ucy4KCSAqLwoJQXV0b3BsYXkucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24oc3BlZWQpIHsKCQl0aGlzLl9jYWxsID0gd2luZG93LnNldFRpbWVvdXQoCgkJCSQucHJveHkodGhpcy5fbmV4dCwgdGhpcywgc3BlZWQpLAoJCQl0aGlzLl90aW1lb3V0ICogKE1hdGgucm91bmQodGhpcy5yZWFkKCkgLyB0aGlzLl90aW1lb3V0KSArIDEpIC0gdGhpcy5yZWFkKCkKCQkpOwoKCQlpZiAodGhpcy5fY29yZS5pcygnaW50ZXJhY3RpbmcnKSB8fCBkb2N1bWVudC5oaWRkZW4pIHsKCQkJcmV0dXJuOwoJCX0KCQl0aGlzLl9jb3JlLm5leHQoc3BlZWQgfHwgdGhpcy5fY29yZS5zZXR0aW5ncy5hdXRvcGxheVNwZWVkKTsKCX0KCgkvKioKCSAqIFJlYWRzIHRoZSBjdXJyZW50IHRpbWVyIHZhbHVlIHdoZW4gdGhlIHRpbWVyIGlzIHBsYXlpbmcuCgkgKiBAcHVibGljCgkgKi8KCUF1dG9wbGF5LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5fdGltZTsKCX07CgoJLyoqCgkgKiBTdGFydHMgdGhlIGF1dG9wbGF5LgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtOdW1iZXJ9IFt0aW1lb3V0XSAtIFRoZSBpbnRlcnZhbCBiZWZvcmUgdGhlIG5leHQgYW5pbWF0aW9uIHN0YXJ0cy4KCSAqIEBwYXJhbSB7TnVtYmVyfSBbc3BlZWRdIC0gVGhlIGFuaW1hdGlvbiBzcGVlZCBmb3IgdGhlIGFuaW1hdGlvbnMuCgkgKi8KCUF1dG9wbGF5LnByb3RvdHlwZS5wbGF5ID0gZnVuY3Rpb24odGltZW91dCwgc3BlZWQpIHsKCQl2YXIgZWxhcHNlZDsKCgkJaWYgKCF0aGlzLl9jb3JlLmlzKCdyb3RhdGluZycpKSB7CgkJCXRoaXMuX2NvcmUuZW50ZXIoJ3JvdGF0aW5nJyk7CgkJfQoKCQl0aW1lb3V0ID0gdGltZW91dCB8fCB0aGlzLl9jb3JlLnNldHRpbmdzLmF1dG9wbGF5VGltZW91dDsKCgkJLy8gQ2FsY3VsYXRlIHRoZSBlbGFwc2VkIHRpbWUgc2luY2UgdGhlIGxhc3QgdHJhbnNpdGlvbi4gSWYgdGhlIGNhcm91c2VsCgkJLy8gd2Fzbid0IHBsYXlpbmcgdGhpcyBjYWxjdWxhdGlvbiB3aWxsIHlpZWxkIHplcm8uCgkJZWxhcHNlZCA9IE1hdGgubWluKHRoaXMuX3RpbWUgJSAodGhpcy5fdGltZW91dCB8fCB0aW1lb3V0KSwgdGltZW91dCk7CgoJCWlmICh0aGlzLl9wYXVzZWQpIHsKCQkJLy8gU3RhcnQgdGhlIGNsb2NrLgoJCQl0aGlzLl90aW1lID0gdGhpcy5yZWFkKCk7CgkJCXRoaXMuX3BhdXNlZCA9IGZhbHNlOwoJCX0gZWxzZSB7CgkJCS8vIENsZWFyIHRoZSBhY3RpdmUgdGltZW91dCB0byBhbGxvdyByZXBsYWNlbWVudC4KCQkJd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9jYWxsKTsKCQl9CgoJCS8vIEFkanVzdCB0aGUgb3JpZ2luIG9mIHRoZSB0aW1lciB0byBtYXRjaCB0aGUgbmV3IHRpbWVvdXQgdmFsdWUuCgkJdGhpcy5fdGltZSArPSB0aGlzLnJlYWQoKSAlIHRpbWVvdXQgLSBlbGFwc2VkOwoKCQl0aGlzLl90aW1lb3V0ID0gdGltZW91dDsKCQl0aGlzLl9jYWxsID0gd2luZG93LnNldFRpbWVvdXQoJC5wcm94eSh0aGlzLl9uZXh0LCB0aGlzLCBzcGVlZCksIHRpbWVvdXQgLSBlbGFwc2VkKTsKCX07CgoJLyoqCgkgKiBTdG9wcyB0aGUgYXV0b3BsYXkuCgkgKiBAcHVibGljCgkgKi8KCUF1dG9wbGF5LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuX2NvcmUuaXMoJ3JvdGF0aW5nJykpIHsKCQkJLy8gUmVzZXQgdGhlIGNsb2NrLgoJCQl0aGlzLl90aW1lID0gMDsKCQkJdGhpcy5fcGF1c2VkID0gdHJ1ZTsKCgkJCXdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fY2FsbCk7CgkJCXRoaXMuX2NvcmUubGVhdmUoJ3JvdGF0aW5nJyk7CgkJfQoJfTsKCgkvKioKCSAqIFBhdXNlcyB0aGUgYXV0b3BsYXkuCgkgKiBAcHVibGljCgkgKi8KCUF1dG9wbGF5LnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLl9jb3JlLmlzKCdyb3RhdGluZycpICYmICF0aGlzLl9wYXVzZWQpIHsKCQkJLy8gUGF1c2UgdGhlIGNsb2NrLgoJCQl0aGlzLl90aW1lID0gdGhpcy5yZWFkKCk7CgkJCXRoaXMuX3BhdXNlZCA9IHRydWU7CgoJCQl3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2NhbGwpOwoJCX0KCX07CgoJLyoqCgkgKiBEZXN0cm95cyB0aGUgcGx1Z2luLgoJICovCglBdXRvcGxheS5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewoJCXZhciBoYW5kbGVyLCBwcm9wZXJ0eTsKCgkJdGhpcy5zdG9wKCk7CgoJCWZvciAoaGFuZGxlciBpbiB0aGlzLl9oYW5kbGVycykgewoJCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9mZihoYW5kbGVyLCB0aGlzLl9oYW5kbGVyc1toYW5kbGVyXSk7CgkJfQoJCWZvciAocHJvcGVydHkgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIHsKCQkJdHlwZW9mIHRoaXNbcHJvcGVydHldICE9ICdmdW5jdGlvbicgJiYgKHRoaXNbcHJvcGVydHldID0gbnVsbCk7CgkJfQoJfTsKCgkkLmZuLm93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuYXV0b3BsYXkgPSBBdXRvcGxheTsKCn0pKHdpbmRvdy5aZXB0byB8fCB3aW5kb3cualF1ZXJ5LCB3aW5kb3csIGRvY3VtZW50KTsKCi8qKgogKiBOYXZpZ2F0aW9uIFBsdWdpbgogKiBAdmVyc2lvbiAyLjMuNAogKiBAYXV0aG9yIEFydHVzIEtvbGFub3dza2kKICogQGF1dGhvciBEYXZpZCBEZXV0c2NoCiAqIEBsaWNlbnNlIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKi8KOyhmdW5jdGlvbigkLCB3aW5kb3csIGRvY3VtZW50LCB1bmRlZmluZWQpIHsKCSd1c2Ugc3RyaWN0JzsKCgkvKioKCSAqIENyZWF0ZXMgdGhlIG5hdmlnYXRpb24gcGx1Z2luLgoJICogQGNsYXNzIFRoZSBOYXZpZ2F0aW9uIFBsdWdpbgoJICogQHBhcmFtIHtPd2x9IGNhcm91c2VsIC0gVGhlIE93bCBDYXJvdXNlbC4KCSAqLwoJdmFyIE5hdmlnYXRpb24gPSBmdW5jdGlvbihjYXJvdXNlbCkgewoJCS8qKgoJCSAqIFJlZmVyZW5jZSB0byB0aGUgY29yZS4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge093bH0KCQkgKi8KCQl0aGlzLl9jb3JlID0gY2Fyb3VzZWw7CgoJCS8qKgoJCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwbHVnaW4gaXMgaW5pdGlhbGl6ZWQgb3Igbm90LgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7Qm9vbGVhbn0KCQkgKi8KCQl0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOwoKCQkvKioKCQkgKiBUaGUgY3VycmVudCBwYWdpbmcgaW5kZXhlcy4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge0FycmF5fQoJCSAqLwoJCXRoaXMuX3BhZ2VzID0gW107CgoJCS8qKgoJCSAqIEFsbCBET00gZWxlbWVudHMgb2YgdGhlIHVzZXIgaW50ZXJmYWNlLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7T2JqZWN0fQoJCSAqLwoJCXRoaXMuX2NvbnRyb2xzID0ge307CgoJCS8qKgoJCSAqIE1hcmt1cCBmb3IgYW4gaW5kaWNhdG9yLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7QXJyYXkuPFN0cmluZz59CgkJICovCgkJdGhpcy5fdGVtcGxhdGVzID0gW107CgoJCS8qKgoJCSAqIFRoZSBjYXJvdXNlbCBlbGVtZW50LgoJCSAqIEB0eXBlIHtqUXVlcnl9CgkJICovCgkJdGhpcy4kZWxlbWVudCA9IHRoaXMuX2NvcmUuJGVsZW1lbnQ7CgoJCS8qKgoJCSAqIE92ZXJyaWRkZW4gbWV0aG9kcyBvZiB0aGUgY2Fyb3VzZWwuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtPYmplY3R9CgkJICovCgkJdGhpcy5fb3ZlcnJpZGVzID0gewoJCQluZXh0OiB0aGlzLl9jb3JlLm5leHQsCgkJCXByZXY6IHRoaXMuX2NvcmUucHJldiwKCQkJdG86IHRoaXMuX2NvcmUudG8KCQl9OwoKCQkvKioKCQkgKiBBbGwgZXZlbnQgaGFuZGxlcnMuCgkJICogQHByb3RlY3RlZAoJCSAqIEB0eXBlIHtPYmplY3R9CgkJICovCgkJdGhpcy5faGFuZGxlcnMgPSB7CgkJCSdwcmVwYXJlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdHNEYXRhKSB7CgkJCQkJdGhpcy5fdGVtcGxhdGVzLnB1c2goJzxkaXYgY2xhc3M9IicgKyB0aGlzLl9jb3JlLnNldHRpbmdzLmRvdENsYXNzICsgJyI+JyArCgkJCQkJCSQoZS5jb250ZW50KS5maW5kKCdbZGF0YS1kb3RdJykuYWRkQmFjaygnW2RhdGEtZG90XScpLmF0dHIoJ2RhdGEtZG90JykgKyAnPC9kaXY+Jyk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknYWRkZWQub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5kb3RzRGF0YSkgewoJCQkJCXRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoZS5wb3NpdGlvbiwgMCwgdGhpcy5fdGVtcGxhdGVzLnBvcCgpKTsKCQkJCX0KCQkJfSwgdGhpcyksCgkJCSdyZW1vdmUub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5kb3RzRGF0YSkgewoJCQkJCXRoaXMuX3RlbXBsYXRlcy5zcGxpY2UoZS5wb3NpdGlvbiwgMSk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQknY2hhbmdlZC5vd2wuY2Fyb3VzZWwnOiAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCWlmIChlLm5hbWVzcGFjZSAmJiBlLnByb3BlcnR5Lm5hbWUgPT0gJ3Bvc2l0aW9uJykgewoJCQkJCXRoaXMuZHJhdygpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ2luaXRpYWxpemVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmICF0aGlzLl9pbml0aWFsaXplZCkgewoJCQkJCXRoaXMuX2NvcmUudHJpZ2dlcignaW5pdGlhbGl6ZScsIG51bGwsICduYXZpZ2F0aW9uJyk7CgkJCQkJdGhpcy5pbml0aWFsaXplKCk7CgkJCQkJdGhpcy51cGRhdGUoKTsKCQkJCQl0aGlzLmRyYXcoKTsKCQkJCQl0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7CgkJCQkJdGhpcy5fY29yZS50cmlnZ2VyKCdpbml0aWFsaXplZCcsIG51bGwsICduYXZpZ2F0aW9uJyk7CgkJCQl9CgkJCX0sIHRoaXMpLAoJCQkncmVmcmVzaGVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlICYmIHRoaXMuX2luaXRpYWxpemVkKSB7CgkJCQkJdGhpcy5fY29yZS50cmlnZ2VyKCdyZWZyZXNoJywgbnVsbCwgJ25hdmlnYXRpb24nKTsKCQkJCQl0aGlzLnVwZGF0ZSgpOwoJCQkJCXRoaXMuZHJhdygpOwoJCQkJCXRoaXMuX2NvcmUudHJpZ2dlcigncmVmcmVzaGVkJywgbnVsbCwgJ25hdmlnYXRpb24nKTsKCQkJCX0KCQkJfSwgdGhpcykKCQl9OwoKCQkvLyBzZXQgZGVmYXVsdCBvcHRpb25zCgkJdGhpcy5fY29yZS5vcHRpb25zID0gJC5leHRlbmQoe30sIE5hdmlnYXRpb24uRGVmYXVsdHMsIHRoaXMuX2NvcmUub3B0aW9ucyk7CgoJCS8vIHJlZ2lzdGVyIGV2ZW50IGhhbmRsZXJzCgkJdGhpcy4kZWxlbWVudC5vbih0aGlzLl9oYW5kbGVycyk7Cgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICogQHRvZG8gUmVuYW1lIGBzbGlkZUJ5YCB0byBgbmF2QnlgCgkgKi8KCU5hdmlnYXRpb24uRGVmYXVsdHMgPSB7CgkJbmF2OiBmYWxzZSwKCQluYXZUZXh0OiBbCgkJCSc8c3BhbiBhcmlhLWxhYmVsPSInICsgJ1ByZXZpb3VzJyArICciPiYjeDIwMzk7PC9zcGFuPicsCgkJCSc8c3BhbiBhcmlhLWxhYmVsPSInICsgJ05leHQnICsgJyI+JiN4MjAzYTs8L3NwYW4+JwoJCV0sCgkJbmF2U3BlZWQ6IGZhbHNlLAoJCW5hdkVsZW1lbnQ6ICdidXR0b24gdHlwZT0iYnV0dG9uIiByb2xlPSJwcmVzZW50YXRpb24iJywKCQluYXZDb250YWluZXI6IGZhbHNlLAoJCW5hdkNvbnRhaW5lckNsYXNzOiAnb3dsLW5hdicsCgkJbmF2Q2xhc3M6IFsKCQkJJ293bC1wcmV2JywKCQkJJ293bC1uZXh0JwoJCV0sCgkJc2xpZGVCeTogMSwKCQlkb3RDbGFzczogJ293bC1kb3QnLAoJCWRvdHNDbGFzczogJ293bC1kb3RzJywKCQlkb3RzOiB0cnVlLAoJCWRvdHNFYWNoOiBmYWxzZSwKCQlkb3RzRGF0YTogZmFsc2UsCgkJZG90c1NwZWVkOiBmYWxzZSwKCQlkb3RzQ29udGFpbmVyOiBmYWxzZQoJfTsKCgkvKioKCSAqIEluaXRpYWxpemVzIHRoZSBsYXlvdXQgb2YgdGhlIHBsdWdpbiBhbmQgZXh0ZW5kcyB0aGUgY2Fyb3VzZWwuCgkgKiBAcHJvdGVjdGVkCgkgKi8KCU5hdmlnYXRpb24ucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbigpIHsKCQl2YXIgb3ZlcnJpZGUsCgkJCXNldHRpbmdzID0gdGhpcy5fY29yZS5zZXR0aW5nczsKCgkJLy8gY3JlYXRlIERPTSBzdHJ1Y3R1cmUgZm9yIHJlbGF0aXZlIG5hdmlnYXRpb24KCQl0aGlzLl9jb250cm9scy4kcmVsYXRpdmUgPSAoc2V0dGluZ3MubmF2Q29udGFpbmVyID8gJChzZXR0aW5ncy5uYXZDb250YWluZXIpCgkJCTogJCgnPGRpdj4nKS5hZGRDbGFzcyhzZXR0aW5ncy5uYXZDb250YWluZXJDbGFzcykuYXBwZW5kVG8odGhpcy4kZWxlbWVudCkpLmFkZENsYXNzKCdkaXNhYmxlZCcpOwoKCQl0aGlzLl9jb250cm9scy4kcHJldmlvdXMgPSAkKCc8JyArIHNldHRpbmdzLm5hdkVsZW1lbnQgKyAnPicpCgkJCS5hZGRDbGFzcyhzZXR0aW5ncy5uYXZDbGFzc1swXSkKCQkJLmh0bWwoc2V0dGluZ3MubmF2VGV4dFswXSkKCQkJLnByZXBlbmRUbyh0aGlzLl9jb250cm9scy4kcmVsYXRpdmUpCgkJCS5vbignY2xpY2snLCAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJCXRoaXMucHJldihzZXR0aW5ncy5uYXZTcGVlZCk7CgkJCX0sIHRoaXMpKTsKCQl0aGlzLl9jb250cm9scy4kbmV4dCA9ICQoJzwnICsgc2V0dGluZ3MubmF2RWxlbWVudCArICc+JykKCQkJLmFkZENsYXNzKHNldHRpbmdzLm5hdkNsYXNzWzFdKQoJCQkuaHRtbChzZXR0aW5ncy5uYXZUZXh0WzFdKQoJCQkuYXBwZW5kVG8odGhpcy5fY29udHJvbHMuJHJlbGF0aXZlKQoJCQkub24oJ2NsaWNrJywgJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQl0aGlzLm5leHQoc2V0dGluZ3MubmF2U3BlZWQpOwoJCQl9LCB0aGlzKSk7CgoJCS8vIGNyZWF0ZSBET00gc3RydWN0dXJlIGZvciBhYnNvbHV0ZSBuYXZpZ2F0aW9uCgkJaWYgKCFzZXR0aW5ncy5kb3RzRGF0YSkgewoJCQl0aGlzLl90ZW1wbGF0ZXMgPSBbICQoJzxidXR0b24gcm9sZT0iYnV0dG9uIj4nKQoJCQkJLmFkZENsYXNzKHNldHRpbmdzLmRvdENsYXNzKQoJCQkJLmFwcGVuZCgkKCc8c3Bhbj4nKSkKCQkJCS5wcm9wKCdvdXRlckhUTUwnKSBdOwoJCX0KCgkJdGhpcy5fY29udHJvbHMuJGFic29sdXRlID0gKHNldHRpbmdzLmRvdHNDb250YWluZXIgPyAkKHNldHRpbmdzLmRvdHNDb250YWluZXIpCgkJCTogJCgnPGRpdj4nKS5hZGRDbGFzcyhzZXR0aW5ncy5kb3RzQ2xhc3MpLmFwcGVuZFRvKHRoaXMuJGVsZW1lbnQpKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsKCgkJdGhpcy5fY29udHJvbHMuJGFic29sdXRlLm9uKCdjbGljaycsICdidXR0b24nLCAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJdmFyIGluZGV4ID0gJChlLnRhcmdldCkucGFyZW50KCkuaXModGhpcy5fY29udHJvbHMuJGFic29sdXRlKQoJCQkJPyAkKGUudGFyZ2V0KS5pbmRleCgpIDogJChlLnRhcmdldCkucGFyZW50KCkuaW5kZXgoKTsKCgkJCWUucHJldmVudERlZmF1bHQoKTsKCgkJCXRoaXMudG8oaW5kZXgsIHNldHRpbmdzLmRvdHNTcGVlZCk7CgkJfSwgdGhpcykpOwoKCQkvKiRlbC5vbignZm9jdXNpbicsIGZ1bmN0aW9uKCkgewoJCQkkKGRvY3VtZW50KS5vZmYoIi5jYXJvdXNlbCIpOwoKCQkJJChkb2N1bWVudCkub24oJ2tleWRvd24uY2Fyb3VzZWwnLCBmdW5jdGlvbihlKSB7CgkJCQlpZihlLmtleUNvZGUgPT0gMzcpIHsKCQkJCQkkZWwudHJpZ2dlcigncHJldi5vd2wnKQoJCQkJfQoJCQkJaWYoZS5rZXlDb2RlID09IDM5KSB7CgkJCQkJJGVsLnRyaWdnZXIoJ25leHQub3dsJykKCQkJCX0KCQkJfSk7CgkJfSk7Ki8KCgkJLy8gb3ZlcnJpZGUgcHVibGljIG1ldGhvZHMgb2YgdGhlIGNhcm91c2VsCgkJZm9yIChvdmVycmlkZSBpbiB0aGlzLl9vdmVycmlkZXMpIHsKCQkJdGhpcy5fY29yZVtvdmVycmlkZV0gPSAkLnByb3h5KHRoaXNbb3ZlcnJpZGVdLCB0aGlzKTsKCQl9Cgl9OwoKCS8qKgoJICogRGVzdHJveXMgdGhlIHBsdWdpbi4KCSAqIEBwcm90ZWN0ZWQKCSAqLwoJTmF2aWdhdGlvbi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkgewoJCXZhciBoYW5kbGVyLCBjb250cm9sLCBwcm9wZXJ0eSwgb3ZlcnJpZGUsIHNldHRpbmdzOwoJCXNldHRpbmdzID0gdGhpcy5fY29yZS5zZXR0aW5nczsKCgkJZm9yIChoYW5kbGVyIGluIHRoaXMuX2hhbmRsZXJzKSB7CgkJCXRoaXMuJGVsZW1lbnQub2ZmKGhhbmRsZXIsIHRoaXMuX2hhbmRsZXJzW2hhbmRsZXJdKTsKCQl9CgkJZm9yIChjb250cm9sIGluIHRoaXMuX2NvbnRyb2xzKSB7CgkJCWlmIChjb250cm9sID09PSAnJHJlbGF0aXZlJyAmJiBzZXR0aW5ncy5uYXZDb250YWluZXIpIHsKCQkJCXRoaXMuX2NvbnRyb2xzW2NvbnRyb2xdLmh0bWwoJycpOwoJCQl9IGVsc2UgewoJCQkJdGhpcy5fY29udHJvbHNbY29udHJvbF0ucmVtb3ZlKCk7CgkJCX0KCQl9CgkJZm9yIChvdmVycmlkZSBpbiB0aGlzLm92ZXJpZGVzKSB7CgkJCXRoaXMuX2NvcmVbb3ZlcnJpZGVdID0gdGhpcy5fb3ZlcnJpZGVzW292ZXJyaWRlXTsKCQl9CgkJZm9yIChwcm9wZXJ0eSBpbiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkgewoJCQl0eXBlb2YgdGhpc1twcm9wZXJ0eV0gIT0gJ2Z1bmN0aW9uJyAmJiAodGhpc1twcm9wZXJ0eV0gPSBudWxsKTsKCQl9Cgl9OwoKCS8qKgoJICogVXBkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUuCgkgKiBAcHJvdGVjdGVkCgkgKi8KCU5hdmlnYXRpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKCkgewoJCXZhciBpLCBqLCBrLAoJCQlsb3dlciA9IHRoaXMuX2NvcmUuY2xvbmVzKCkubGVuZ3RoIC8gMiwKCQkJdXBwZXIgPSBsb3dlciArIHRoaXMuX2NvcmUuaXRlbXMoKS5sZW5ndGgsCgkJCW1heGltdW0gPSB0aGlzLl9jb3JlLm1heGltdW0odHJ1ZSksCgkJCXNldHRpbmdzID0gdGhpcy5fY29yZS5zZXR0aW5ncywKCQkJc2l6ZSA9IHNldHRpbmdzLmNlbnRlciB8fCBzZXR0aW5ncy5hdXRvV2lkdGggfHwgc2V0dGluZ3MuZG90c0RhdGEKCQkJCT8gMSA6IHNldHRpbmdzLmRvdHNFYWNoIHx8IHNldHRpbmdzLml0ZW1zOwoKCQlpZiAoc2V0dGluZ3Muc2xpZGVCeSAhPT0gJ3BhZ2UnKSB7CgkJCXNldHRpbmdzLnNsaWRlQnkgPSBNYXRoLm1pbihzZXR0aW5ncy5zbGlkZUJ5LCBzZXR0aW5ncy5pdGVtcyk7CgkJfQoKCQlpZiAoc2V0dGluZ3MuZG90cyB8fCBzZXR0aW5ncy5zbGlkZUJ5ID09ICdwYWdlJykgewoJCQl0aGlzLl9wYWdlcyA9IFtdOwoKCQkJZm9yIChpID0gbG93ZXIsIGogPSAwLCBrID0gMDsgaSA8IHVwcGVyOyBpKyspIHsKCQkJCWlmIChqID49IHNpemUgfHwgaiA9PT0gMCkgewoJCQkJCXRoaXMuX3BhZ2VzLnB1c2goewoJCQkJCQlzdGFydDogTWF0aC5taW4obWF4aW11bSwgaSAtIGxvd2VyKSwKCQkJCQkJZW5kOiBpIC0gbG93ZXIgKyBzaXplIC0gMQoJCQkJCX0pOwoJCQkJCWlmIChNYXRoLm1pbihtYXhpbXVtLCBpIC0gbG93ZXIpID09PSBtYXhpbXVtKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlqID0gMCwgKytrOwoJCQkJfQoJCQkJaiArPSB0aGlzLl9jb3JlLm1lcmdlcnModGhpcy5fY29yZS5yZWxhdGl2ZShpKSk7CgkJCX0KCQl9Cgl9OwoKCS8qKgoJICogRHJhd3MgdGhlIHVzZXIgaW50ZXJmYWNlLgoJICogQHRvZG8gVGhlIG9wdGlvbiBgZG90c0RhdGFgIHdvbnQgd29yay4KCSAqIEBwcm90ZWN0ZWQKCSAqLwoJTmF2aWdhdGlvbi5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKCkgewoJCXZhciBkaWZmZXJlbmNlLAoJCQlzZXR0aW5ncyA9IHRoaXMuX2NvcmUuc2V0dGluZ3MsCgkJCWRpc2FibGVkID0gdGhpcy5fY29yZS5pdGVtcygpLmxlbmd0aCA8PSBzZXR0aW5ncy5pdGVtcywKCQkJaW5kZXggPSB0aGlzLl9jb3JlLnJlbGF0aXZlKHRoaXMuX2NvcmUuY3VycmVudCgpKSwKCQkJbG9vcCA9IHNldHRpbmdzLmxvb3AgfHwgc2V0dGluZ3MucmV3aW5kOwoKCQl0aGlzLl9jb250cm9scy4kcmVsYXRpdmUudG9nZ2xlQ2xhc3MoJ2Rpc2FibGVkJywgIXNldHRpbmdzLm5hdiB8fCBkaXNhYmxlZCk7CgoJCWlmIChzZXR0aW5ncy5uYXYpIHsKCQkJdGhpcy5fY29udHJvbHMuJHByZXZpb3VzLnRvZ2dsZUNsYXNzKCdkaXNhYmxlZCcsICFsb29wICYmIGluZGV4IDw9IHRoaXMuX2NvcmUubWluaW11bSh0cnVlKSk7CgkJCXRoaXMuX2NvbnRyb2xzLiRuZXh0LnRvZ2dsZUNsYXNzKCdkaXNhYmxlZCcsICFsb29wICYmIGluZGV4ID49IHRoaXMuX2NvcmUubWF4aW11bSh0cnVlKSk7CgkJfQoKCQl0aGlzLl9jb250cm9scy4kYWJzb2x1dGUudG9nZ2xlQ2xhc3MoJ2Rpc2FibGVkJywgIXNldHRpbmdzLmRvdHMgfHwgZGlzYWJsZWQpOwoKCQlpZiAoc2V0dGluZ3MuZG90cykgewoJCQlkaWZmZXJlbmNlID0gdGhpcy5fcGFnZXMubGVuZ3RoIC0gdGhpcy5fY29udHJvbHMuJGFic29sdXRlLmNoaWxkcmVuKCkubGVuZ3RoOwoKCQkJaWYgKHNldHRpbmdzLmRvdHNEYXRhICYmIGRpZmZlcmVuY2UgIT09IDApIHsKCQkJCXRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5odG1sKHRoaXMuX3RlbXBsYXRlcy5qb2luKCcnKSk7CgkJCX0gZWxzZSBpZiAoZGlmZmVyZW5jZSA+IDApIHsKCQkJCXRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5hcHBlbmQobmV3IEFycmF5KGRpZmZlcmVuY2UgKyAxKS5qb2luKHRoaXMuX3RlbXBsYXRlc1swXSkpOwoJCQl9IGVsc2UgaWYgKGRpZmZlcmVuY2UgPCAwKSB7CgkJCQl0aGlzLl9jb250cm9scy4kYWJzb2x1dGUuY2hpbGRyZW4oKS5zbGljZShkaWZmZXJlbmNlKS5yZW1vdmUoKTsKCQkJfQoKCQkJdGhpcy5fY29udHJvbHMuJGFic29sdXRlLmZpbmQoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CgkJCXRoaXMuX2NvbnRyb2xzLiRhYnNvbHV0ZS5jaGlsZHJlbigpLmVxKCQuaW5BcnJheSh0aGlzLmN1cnJlbnQoKSwgdGhpcy5fcGFnZXMpKS5hZGRDbGFzcygnYWN0aXZlJyk7CgkJfQoJfTsKCgkvKioKCSAqIEV4dGVuZHMgZXZlbnQgZGF0YS4KCSAqIEBwcm90ZWN0ZWQKCSAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IG9iamVjdCB3aGljaCBnZXRzIHRocm93bi4KCSAqLwoJTmF2aWdhdGlvbi5wcm90b3R5cGUub25UcmlnZ2VyID0gZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgc2V0dGluZ3MgPSB0aGlzLl9jb3JlLnNldHRpbmdzOwoKCQlldmVudC5wYWdlID0gewoJCQlpbmRleDogJC5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyksCgkJCWNvdW50OiB0aGlzLl9wYWdlcy5sZW5ndGgsCgkJCXNpemU6IHNldHRpbmdzICYmIChzZXR0aW5ncy5jZW50ZXIgfHwgc2V0dGluZ3MuYXV0b1dpZHRoIHx8IHNldHRpbmdzLmRvdHNEYXRhCgkJCQk/IDEgOiBzZXR0aW5ncy5kb3RzRWFjaCB8fCBzZXR0aW5ncy5pdGVtcykKCQl9OwoJfTsKCgkvKioKCSAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSBwb3NpdGlvbiBvZiB0aGUgY2Fyb3VzZWwuCgkgKiBAcHJvdGVjdGVkCgkgKiBAcmV0dXJucyB7TnVtYmVyfQoJICovCglOYXZpZ2F0aW9uLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24oKSB7CgkJdmFyIGN1cnJlbnQgPSB0aGlzLl9jb3JlLnJlbGF0aXZlKHRoaXMuX2NvcmUuY3VycmVudCgpKTsKCQlyZXR1cm4gJC5ncmVwKHRoaXMuX3BhZ2VzLCAkLnByb3h5KGZ1bmN0aW9uKHBhZ2UsIGluZGV4KSB7CgkJCXJldHVybiBwYWdlLnN0YXJ0IDw9IGN1cnJlbnQgJiYgcGFnZS5lbmQgPj0gY3VycmVudDsKCQl9LCB0aGlzKSkucG9wKCk7Cgl9OwoKCS8qKgoJICogR2V0cyB0aGUgY3VycmVudCBzdWNjZXNvci9wcmVkZWNlc3NvciBwb3NpdGlvbi4KCSAqIEBwcm90ZWN0ZWQKCSAqIEByZXR1cm5zIHtOdW1iZXJ9CgkgKi8KCU5hdmlnYXRpb24ucHJvdG90eXBlLmdldFBvc2l0aW9uID0gZnVuY3Rpb24oc3VjY2Vzc29yKSB7CgkJdmFyIHBvc2l0aW9uLCBsZW5ndGgsCgkJCXNldHRpbmdzID0gdGhpcy5fY29yZS5zZXR0aW5nczsKCgkJaWYgKHNldHRpbmdzLnNsaWRlQnkgPT0gJ3BhZ2UnKSB7CgkJCXBvc2l0aW9uID0gJC5pbkFycmF5KHRoaXMuY3VycmVudCgpLCB0aGlzLl9wYWdlcyk7CgkJCWxlbmd0aCA9IHRoaXMuX3BhZ2VzLmxlbmd0aDsKCQkJc3VjY2Vzc29yID8gKytwb3NpdGlvbiA6IC0tcG9zaXRpb247CgkJCXBvc2l0aW9uID0gdGhpcy5fcGFnZXNbKChwb3NpdGlvbiAlIGxlbmd0aCkgKyBsZW5ndGgpICUgbGVuZ3RoXS5zdGFydDsKCQl9IGVsc2UgewoJCQlwb3NpdGlvbiA9IHRoaXMuX2NvcmUucmVsYXRpdmUodGhpcy5fY29yZS5jdXJyZW50KCkpOwoJCQlsZW5ndGggPSB0aGlzLl9jb3JlLml0ZW1zKCkubGVuZ3RoOwoJCQlzdWNjZXNzb3IgPyBwb3NpdGlvbiArPSBzZXR0aW5ncy5zbGlkZUJ5IDogcG9zaXRpb24gLT0gc2V0dGluZ3Muc2xpZGVCeTsKCQl9CgoJCXJldHVybiBwb3NpdGlvbjsKCX07CgoJLyoqCgkgKiBTbGlkZXMgdG8gdGhlIG5leHQgaXRlbSBvciBwYWdlLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtOdW1iZXJ9IFtzcGVlZD1mYWxzZV0gLSBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIHRoZSB0cmFuc2l0aW9uLgoJICovCglOYXZpZ2F0aW9uLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oc3BlZWQpIHsKCQkkLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5nZXRQb3NpdGlvbih0cnVlKSwgc3BlZWQpOwoJfTsKCgkvKioKCSAqIFNsaWRlcyB0byB0aGUgcHJldmlvdXMgaXRlbSBvciBwYWdlLgoJICogQHB1YmxpYwoJICogQHBhcmFtIHtOdW1iZXJ9IFtzcGVlZD1mYWxzZV0gLSBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIHRoZSB0cmFuc2l0aW9uLgoJICovCglOYXZpZ2F0aW9uLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24oc3BlZWQpIHsKCQkkLnByb3h5KHRoaXMuX292ZXJyaWRlcy50bywgdGhpcy5fY29yZSkodGhpcy5nZXRQb3NpdGlvbihmYWxzZSksIHNwZWVkKTsKCX07CgoJLyoqCgkgKiBTbGlkZXMgdG8gdGhlIHNwZWNpZmllZCBpdGVtIG9yIHBhZ2UuCgkgKiBAcHVibGljCgkgKiBAcGFyYW0ge051bWJlcn0gcG9zaXRpb24gLSBUaGUgcG9zaXRpb24gb2YgdGhlIGl0ZW0gb3IgcGFnZS4KCSAqIEBwYXJhbSB7TnVtYmVyfSBbc3BlZWRdIC0gVGhlIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgdHJhbnNpdGlvbi4KCSAqIEBwYXJhbSB7Qm9vbGVhbn0gW3N0YW5kYXJkPWZhbHNlXSAtIFdoZXRoZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBiZWhhdmlvdXIgb3Igbm90LgoJICovCglOYXZpZ2F0aW9uLnByb3RvdHlwZS50byA9IGZ1bmN0aW9uKHBvc2l0aW9uLCBzcGVlZCwgc3RhbmRhcmQpIHsKCQl2YXIgbGVuZ3RoOwoKCQlpZiAoIXN0YW5kYXJkICYmIHRoaXMuX3BhZ2VzLmxlbmd0aCkgewoJCQlsZW5ndGggPSB0aGlzLl9wYWdlcy5sZW5ndGg7CgkJCSQucHJveHkodGhpcy5fb3ZlcnJpZGVzLnRvLCB0aGlzLl9jb3JlKSh0aGlzLl9wYWdlc1soKHBvc2l0aW9uICUgbGVuZ3RoKSArIGxlbmd0aCkgJSBsZW5ndGhdLnN0YXJ0LCBzcGVlZCk7CgkJfSBlbHNlIHsKCQkJJC5wcm94eSh0aGlzLl9vdmVycmlkZXMudG8sIHRoaXMuX2NvcmUpKHBvc2l0aW9uLCBzcGVlZCk7CgkJfQoJfTsKCgkkLmZuLm93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuTmF2aWdhdGlvbiA9IE5hdmlnYXRpb247Cgp9KSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgovKioKICogSGFzaCBQbHVnaW4KICogQHZlcnNpb24gMi4zLjQKICogQGF1dGhvciBBcnR1cyBLb2xhbm93c2tpCiAqIEBhdXRob3IgRGF2aWQgRGV1dHNjaAogKiBAbGljZW5zZSBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICovCjsoZnVuY3Rpb24oJCwgd2luZG93LCBkb2N1bWVudCwgdW5kZWZpbmVkKSB7CgkndXNlIHN0cmljdCc7CgoJLyoqCgkgKiBDcmVhdGVzIHRoZSBoYXNoIHBsdWdpbi4KCSAqIEBjbGFzcyBUaGUgSGFzaCBQbHVnaW4KCSAqIEBwYXJhbSB7T3dsfSBjYXJvdXNlbCAtIFRoZSBPd2wgQ2Fyb3VzZWwKCSAqLwoJdmFyIEhhc2ggPSBmdW5jdGlvbihjYXJvdXNlbCkgewoJCS8qKgoJCSAqIFJlZmVyZW5jZSB0byB0aGUgY29yZS4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge093bH0KCQkgKi8KCQl0aGlzLl9jb3JlID0gY2Fyb3VzZWw7CgoJCS8qKgoJCSAqIEhhc2ggaW5kZXggZm9yIHRoZSBpdGVtcy4KCQkgKiBAcHJvdGVjdGVkCgkJICogQHR5cGUge09iamVjdH0KCQkgKi8KCQl0aGlzLl9oYXNoZXMgPSB7fTsKCgkJLyoqCgkJICogVGhlIGNhcm91c2VsIGVsZW1lbnQuCgkJICogQHR5cGUge2pRdWVyeX0KCQkgKi8KCQl0aGlzLiRlbGVtZW50ID0gdGhpcy5fY29yZS4kZWxlbWVudDsKCgkJLyoqCgkJICogQWxsIGV2ZW50IGhhbmRsZXJzLgoJCSAqIEBwcm90ZWN0ZWQKCQkgKiBAdHlwZSB7T2JqZWN0fQoJCSAqLwoJCXRoaXMuX2hhbmRsZXJzID0gewoJCQknaW5pdGlhbGl6ZWQub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgdGhpcy5fY29yZS5zZXR0aW5ncy5zdGFydFBvc2l0aW9uID09PSAnVVJMSGFzaCcpIHsKCQkJCQkkKHdpbmRvdykudHJpZ2dlcignaGFzaGNoYW5nZS5vd2wubmF2aWdhdGlvbicpOwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ3ByZXBhcmVkLm93bC5jYXJvdXNlbCc6ICQucHJveHkoZnVuY3Rpb24oZSkgewoJCQkJaWYgKGUubmFtZXNwYWNlKSB7CgkJCQkJdmFyIGhhc2ggPSAkKGUuY29udGVudCkuZmluZCgnW2RhdGEtaGFzaF0nKS5hZGRCYWNrKCdbZGF0YS1oYXNoXScpLmF0dHIoJ2RhdGEtaGFzaCcpOwoKCQkJCQlpZiAoIWhhc2gpIHsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCgkJCQkJdGhpcy5faGFzaGVzW2hhc2hdID0gZS5jb250ZW50OwoJCQkJfQoJCQl9LCB0aGlzKSwKCQkJJ2NoYW5nZWQub3dsLmNhcm91c2VsJzogJC5wcm94eShmdW5jdGlvbihlKSB7CgkJCQlpZiAoZS5uYW1lc3BhY2UgJiYgZS5wcm9wZXJ0eS5uYW1lID09PSAncG9zaXRpb24nKSB7CgkJCQkJdmFyIGN1cnJlbnQgPSB0aGlzLl9jb3JlLml0ZW1zKHRoaXMuX2NvcmUucmVsYXRpdmUodGhpcy5fY29yZS5jdXJyZW50KCkpKSwKCQkJCQkJaGFzaCA9ICQubWFwKHRoaXMuX2hhc2hlcywgZnVuY3Rpb24oaXRlbSwgaGFzaCkgewoJCQkJCQkJcmV0dXJuIGl0ZW0gPT09IGN1cnJlbnQgPyBoYXNoIDogbnVsbDsKCQkJCQkJfSkuam9pbigpOwoKCQkJCQlpZiAoIWhhc2ggfHwgd2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSkgPT09IGhhc2gpIHsKCQkJCQkJcmV0dXJuOwoJCQkJCX0KCgkJCQkJd2luZG93LmxvY2F0aW9uLmhhc2ggPSBoYXNoOwoJCQkJfQoJCQl9LCB0aGlzKQoJCX07CgoJCS8vIHNldCBkZWZhdWx0IG9wdGlvbnMKCQl0aGlzLl9jb3JlLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgSGFzaC5EZWZhdWx0cywgdGhpcy5fY29yZS5vcHRpb25zKTsKCgkJLy8gcmVnaXN0ZXIgdGhlIGV2ZW50IGhhbmRsZXJzCgkJdGhpcy4kZWxlbWVudC5vbih0aGlzLl9oYW5kbGVycyk7CgoJCS8vIHJlZ2lzdGVyIGV2ZW50IGxpc3RlbmVyIGZvciBoYXNoIG5hdmlnYXRpb24KCQkkKHdpbmRvdykub24oJ2hhc2hjaGFuZ2Uub3dsLm5hdmlnYXRpb24nLCAkLnByb3h5KGZ1bmN0aW9uKGUpIHsKCQkJdmFyIGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSksCgkJCQlpdGVtcyA9IHRoaXMuX2NvcmUuJHN0YWdlLmNoaWxkcmVuKCksCgkJCQlwb3NpdGlvbiA9IHRoaXMuX2hhc2hlc1toYXNoXSAmJiBpdGVtcy5pbmRleCh0aGlzLl9oYXNoZXNbaGFzaF0pOwoKCQkJaWYgKHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwgcG9zaXRpb24gPT09IHRoaXMuX2NvcmUuY3VycmVudCgpKSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCXRoaXMuX2NvcmUudG8odGhpcy5fY29yZS5yZWxhdGl2ZShwb3NpdGlvbiksIGZhbHNlLCB0cnVlKTsKCQl9LCB0aGlzKSk7Cgl9OwoKCS8qKgoJICogRGVmYXVsdCBvcHRpb25zLgoJICogQHB1YmxpYwoJICovCglIYXNoLkRlZmF1bHRzID0gewoJCVVSTGhhc2hMaXN0ZW5lcjogZmFsc2UKCX07CgoJLyoqCgkgKiBEZXN0cm95cyB0aGUgcGx1Z2luLgoJICogQHB1YmxpYwoJICovCglIYXNoLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7CgkJdmFyIGhhbmRsZXIsIHByb3BlcnR5OwoKCQkkKHdpbmRvdykub2ZmKCdoYXNoY2hhbmdlLm93bC5uYXZpZ2F0aW9uJyk7CgoJCWZvciAoaGFuZGxlciBpbiB0aGlzLl9oYW5kbGVycykgewoJCQl0aGlzLl9jb3JlLiRlbGVtZW50Lm9mZihoYW5kbGVyLCB0aGlzLl9oYW5kbGVyc1toYW5kbGVyXSk7CgkJfQoJCWZvciAocHJvcGVydHkgaW4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpIHsKCQkJdHlwZW9mIHRoaXNbcHJvcGVydHldICE9ICdmdW5jdGlvbicgJiYgKHRoaXNbcHJvcGVydHldID0gbnVsbCk7CgkJfQoJfTsKCgkkLmZuLm93bENhcm91c2VsLkNvbnN0cnVjdG9yLlBsdWdpbnMuSGFzaCA9IEhhc2g7Cgp9KSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgovKioKICogU3VwcG9ydCBQbHVnaW4KICoKICogQHZlcnNpb24gMi4zLjQKICogQGF1dGhvciBWaXZpZCBQbGFuZXQgU29mdHdhcmUgR21iSAogKiBAYXV0aG9yIEFydHVzIEtvbGFub3dza2kKICogQGF1dGhvciBEYXZpZCBEZXV0c2NoCiAqIEBsaWNlbnNlIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKi8KOyhmdW5jdGlvbigkLCB3aW5kb3csIGRvY3VtZW50LCB1bmRlZmluZWQpIHsKCgl2YXIgc3R5bGUgPSAkKCc8c3VwcG9ydD4nKS5nZXQoMCkuc3R5bGUsCgkJcHJlZml4ZXMgPSAnV2Via2l0IE1veiBPIG1zJy5zcGxpdCgnICcpLAoJCWV2ZW50cyA9IHsKCQkJdHJhbnNpdGlvbjogewoJCQkJZW5kOiB7CgkJCQkJV2Via2l0VHJhbnNpdGlvbjogJ3dlYmtpdFRyYW5zaXRpb25FbmQnLAoJCQkJCU1velRyYW5zaXRpb246ICd0cmFuc2l0aW9uZW5kJywKCQkJCQlPVHJhbnNpdGlvbjogJ29UcmFuc2l0aW9uRW5kJywKCQkJCQl0cmFuc2l0aW9uOiAndHJhbnNpdGlvbmVuZCcKCQkJCX0KCQkJfSwKCQkJYW5pbWF0aW9uOiB7CgkJCQllbmQ6IHsKCQkJCQlXZWJraXRBbmltYXRpb246ICd3ZWJraXRBbmltYXRpb25FbmQnLAoJCQkJCU1vekFuaW1hdGlvbjogJ2FuaW1hdGlvbmVuZCcsCgkJCQkJT0FuaW1hdGlvbjogJ29BbmltYXRpb25FbmQnLAoJCQkJCWFuaW1hdGlvbjogJ2FuaW1hdGlvbmVuZCcKCQkJCX0KCQkJfQoJCX0sCgkJdGVzdHMgPSB7CgkJCWNzc3RyYW5zZm9ybXM6IGZ1bmN0aW9uKCkgewoJCQkJcmV0dXJuICEhdGVzdCgndHJhbnNmb3JtJyk7CgkJCX0sCgkJCWNzc3RyYW5zZm9ybXMzZDogZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gISF0ZXN0KCdwZXJzcGVjdGl2ZScpOwoJCQl9LAoJCQljc3N0cmFuc2l0aW9uczogZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gISF0ZXN0KCd0cmFuc2l0aW9uJyk7CgkJCX0sCgkJCWNzc2FuaW1hdGlvbnM6IGZ1bmN0aW9uKCkgewoJCQkJcmV0dXJuICEhdGVzdCgnYW5pbWF0aW9uJyk7CgkJCX0KCQl9OwoKCWZ1bmN0aW9uIHRlc3QocHJvcGVydHksIHByZWZpeGVkKSB7CgkJdmFyIHJlc3VsdCA9IGZhbHNlLAoJCQl1cHBlciA9IHByb3BlcnR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHkuc2xpY2UoMSk7CgoJCSQuZWFjaCgocHJvcGVydHkgKyAnICcgKyBwcmVmaXhlcy5qb2luKHVwcGVyICsgJyAnKSArIHVwcGVyKS5zcGxpdCgnICcpLCBmdW5jdGlvbihpLCBwcm9wZXJ0eSkgewoJCQlpZiAoc3R5bGVbcHJvcGVydHldICE9PSB1bmRlZmluZWQpIHsKCQkJCXJlc3VsdCA9IHByZWZpeGVkID8gcHJvcGVydHkgOiB0cnVlOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfSk7CgoJCXJldHVybiByZXN1bHQ7Cgl9CgoJZnVuY3Rpb24gcHJlZml4ZWQocHJvcGVydHkpIHsKCQlyZXR1cm4gdGVzdChwcm9wZXJ0eSwgdHJ1ZSk7Cgl9CgoJaWYgKHRlc3RzLmNzc3RyYW5zaXRpb25zKCkpIHsKCQkvKiBqc2hpbnQgLVcwNTMgKi8KCQkkLnN1cHBvcnQudHJhbnNpdGlvbiA9IG5ldyBTdHJpbmcocHJlZml4ZWQoJ3RyYW5zaXRpb24nKSkKCQkkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQgPSBldmVudHMudHJhbnNpdGlvbi5lbmRbICQuc3VwcG9ydC50cmFuc2l0aW9uIF07Cgl9CgoJaWYgKHRlc3RzLmNzc2FuaW1hdGlvbnMoKSkgewoJCS8qIGpzaGludCAtVzA1MyAqLwoJCSQuc3VwcG9ydC5hbmltYXRpb24gPSBuZXcgU3RyaW5nKHByZWZpeGVkKCdhbmltYXRpb24nKSkKCQkkLnN1cHBvcnQuYW5pbWF0aW9uLmVuZCA9IGV2ZW50cy5hbmltYXRpb24uZW5kWyAkLnN1cHBvcnQuYW5pbWF0aW9uIF07Cgl9CgoJaWYgKHRlc3RzLmNzc3RyYW5zZm9ybXMoKSkgewoJCS8qIGpzaGludCAtVzA1MyAqLwoJCSQuc3VwcG9ydC50cmFuc2Zvcm0gPSBuZXcgU3RyaW5nKHByZWZpeGVkKCd0cmFuc2Zvcm0nKSk7CgkJJC5zdXBwb3J0LnRyYW5zZm9ybTNkID0gdGVzdHMuY3NzdHJhbnNmb3JtczNkKCk7Cgl9Cgp9KSh3aW5kb3cuWmVwdG8gfHwgd2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7Cg=="}},"time_used":46,"timings":{"blocked":-1,"dns":0,"connect":9,"send":0,"wait":14,"receive":5,"ssl":16},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizbs1RSS-juK1mhVQZ7RCcrN8hfrpBAYBCYCGyp5X7RmYoiU8833XRmuJjfEezHP4NVInRj4yGu0wVlFrbrKUSQObyAPMmkY-9rCORWNIWlW53mbWagtvNgsyGZ3lQsjxunYP2UK_MLG2JsNc8pjJ2jyFwBmbZM9LzPkUimS0i29cewQsKUHuUO0OQbtjJ/s626/1000220742.jpg","fqdn":"blogger.googleusercontent.com","domain":"googleusercontent.com","tld":"com"},"ip":{"addr":"142.250.178.97","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:24.032Z","timestamp":1785161544032,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.googleusercontent.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:23 GMT","end":"Mon, 21 Sep 2026 08:39:22 GMT"},"fingerprint":{"sha1":"DC:48:07:2A:01:2D:A7:65:AA:F1:4C:DD:23:C4:A1:E7:2C:5C:EF:58","sha256":"09:30:03:A8:7D:7F:F6:BE:79:16:44:E4:E0:4C:56:8E:3D:5B:16:F3:9F:F3:3D:87:F0:7F:E6:B2:1D:48:7F:F5"}}},"request":{"raw":"GET /img/b/R29vZ2xl/AVvXsEizbs1RSS-juK1mhVQZ7RCcrN8hfrpBAYBCYCGyp5X7RmYoiU8833XRmuJjfEezHP4NVInRj4yGu0wVlFrbrKUSQObyAPMmkY-9rCORWNIWlW53mbWagtvNgsyGZ3lQsjxunYP2UK_MLG2JsNc8pjJ2jyFwBmbZM9LzPkUimS0i29cewQsKUHuUO0OQbtjJ/s626/1000220742.jpg HTTP/1.1\r\nHost: blogger.googleusercontent.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: image/jpeg\r\nvary: Origin\r\naccess-control-expose-headers: Content-Length\r\netag: \"v7\"\r\nexpires: Tue, 28 Jul 2026 14:12:25 GMT\r\ncache-control: public, max-age=86400, no-transform\r\ncontent-disposition: inline;filename=\"1000220742.jpg\"\r\nx-content-type-options: nosniff\r\ndate: Mon, 27 Jul 2026 14:12:25 GMT\r\nserver: fife\r\ncontent-length: 26567\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":26567,"size_decoded":27033,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, Exif Standard: [TIFF image data, little-endian, direntries=3, software=Google], progressive, precision 8, 626x417, components 3","md5":"c382608bcd530ea69980aee50ee3d1bf","sha1":"909ed835130cf8426bbb7e79ca65296e75a0b788","sha256":"f0e4188d6ae244377993a15365cba2f64d690e44c5a6413feb73853a4b281a90","sha512":"d62dfd757071a06b0692bda21c3d7c584fe810b0603f5dd3507bb2ec5e6664f5364e0393aad394cef6be59da903033f458af984fcbcf594a3c956159a0563ae6","ssdeep":"768:SPWlrfQgYPX0UPZ/movuAPW9U9PO+Nwj7:3kgwX0UZSm7CX","tlshash":"e2c2e10393e92e95cb7f27fe96410d414e7d2299d76ee9c96a37038c132ab67c2c7201","first_seen":"2026-05-01T02:07:09.47921Z","last_seen":"2026-07-27T14:13:13.880578Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":885,"timings":{"blocked":-1,"dns":1,"connect":15,"send":0,"wait":599,"receive":9,"ssl":260},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css","fqdn":"cdnjs.cloudflare.com","domain":"cloudflare.com","tld":"com"},"ip":{"addr":"104.17.25.14","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.704Z","timestamp":1785161543704,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"cdnjs.cloudflare.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Fri, 10 Jul 2026 07:07:58 GMT","end":"Thu, 08 Oct 2026 08:07:45 GMT"},"fingerprint":{"sha1":"DF:66:97:F5:13:A2:C0:81:D3:5B:60:C4:B0:7F:CD:78:F5:91:14:D5","sha256":"3C:F2:95:73:83:BA:4D:D9:CC:85:8F:BC:7D:2C:22:CF:F3:49:9A:3A:E4:1D:FC:AE:CB:07:3D:66:89:74:0E:C5"}}},"request":{"raw":"GET /ajax/libs/meyer-reset/2.0/reset.min.css HTTP/1.1\r\nHost: cdnjs.cloudflare.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\ncontent-type: text/css; charset=utf-8\r\ncontent-length: 333\r\ncf-cache-status: BYPASS\r\naccess-control-allow-origin: *\r\ncache-control: no-transform, public, s-maxage=30672000, max-age=30672000, immutable\r\ncontent-encoding: br\r\nlast-modified: Mon, 04 May 2020 16:13:23 GMT\r\nvary: Accept-Encoding\r\nx-cdnjs-cache: HIT\r\ncross-origin-resource-policy: cross-origin\r\ntiming-allow-origin: *\r\nx-content-type-options: nosniff\r\ncf-cdnjs-via: cfworker/r2\r\nstrict-transport-security: max-age=15780000\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=nJNR6wSBsLL7xAgjC%2B72dDBK1ujI7NHiPVuLFyAh7f%2BvGk%2BoAkz5pTd3zWg1juOHe1hR4SqemDSHDSsVva1f0dfe2ZPIzK%2BsOzzAbGou7Efxf%2BFQTt38BQt6MkgXoVH0Rif7YR%2Fh\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.01,\"max_age\":604800}\r\npriority: u=2,i=?0\r\nserver: cloudflare\r\ncf-ray: a21c3d204c2d5ebd-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":773,"size_decoded":1328,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (773), with no line terminators","md5":"93e42565f156d067f72108759177a957","sha1":"19b2c8de419fbd69c38971ac4923e7636edda182","sha256":"82f1278f66b192a223e306d884f8db595ef3b6d829cc1544807b9bf40019403e","sha512":"3662e40c85350bf0bcf308b7db81c173e4b690b862d3c3cde460de5155550bf055b7ff48cddb1cf5255e55f0355196d8dec1d49434b2457842cc77ebea198f3f","ssdeep":"","tlshash":"ba012078532135d48fb747756704d6a1c0214302980446f8f426c21b9ded07fa8f0fe8","first_seen":"2023-04-06T08:41:04Z","last_seen":"2026-07-31T05:05:01.132283Z","times_seen":2832,"resource_available":false,"data":"aHRtbCxib2R5LGRpdixzcGFuLGFwcGxldCxvYmplY3QsaWZyYW1lLGgxLGgyLGgzLGg0LGg1LGg2LHAsYmxvY2txdW90ZSxwcmUsYSxhYmJyLGFjcm9ueW0sYWRkcmVzcyxiaWcsY2l0ZSxjb2RlLGRlbCxkZm4sZW0saW1nLGlucyxrYmQscSxzLHNhbXAsc21hbGwsc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHR0LHZhcixiLHUsaSxjZW50ZXIsZGwsZHQsZGQsb2wsdWwsbGksZmllbGRzZXQsZm9ybSxsYWJlbCxsZWdlbmQsdGFibGUsY2FwdGlvbix0Ym9keSx0Zm9vdCx0aGVhZCx0cix0aCx0ZCxhcnRpY2xlLGFzaWRlLGNhbnZhcyxkZXRhaWxzLGVtYmVkLGZpZ3VyZSxmaWdjYXB0aW9uLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1lbnUsbmF2LG91dHB1dCxydWJ5LHNlY3Rpb24sc3VtbWFyeSx0aW1lLG1hcmssYXVkaW8sdmlkZW97bWFyZ2luOjA7cGFkZGluZzowO2JvcmRlcjowO2ZvbnQtc2l6ZToxMDAlO2ZvbnQ6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWVudSxuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfWJvZHl7bGluZS1oZWlnaHQ6MX1vbCx1bHtsaXN0LXN0eWxlOm5vbmV9YmxvY2txdW90ZSxxe3F1b3Rlczpub25lfWJsb2NrcXVvdGU6YmVmb3JlLGJsb2NrcXVvdGU6YWZ0ZXIscTpiZWZvcmUscTphZnRlcntjb250ZW50OicnO2NvbnRlbnQ6bm9uZX10YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ym9yZGVyLXNwYWNpbmc6MH0="}},"time_used":82,"timings":{"blocked":-1,"dns":2,"connect":11,"send":0,"wait":68,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxJ-sZNTsiCuTsjjIGI_LojmPImopumot9q0cm-JOYn_99fMCPbZ0OmNSPYLFYNNEO8eQckiyZkKtChesivxiWa6eACybFrscEqPSEfECyCrQkJ0HgtxnKD-l1oWEQ2bcUe-b8ntsRc4JrqoXCh4kVDa0sE-3sOfFgxATbgDD6e0bb5XpeQXzt6e1bIt_H/s320/IMG-20240319-WA0001.jpg","fqdn":"blogger.googleusercontent.com","domain":"googleusercontent.com","tld":"com"},"ip":{"addr":"142.250.178.97","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:24.203Z","timestamp":1785161544203,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.googleusercontent.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:23 GMT","end":"Mon, 21 Sep 2026 08:39:22 GMT"},"fingerprint":{"sha1":"DC:48:07:2A:01:2D:A7:65:AA:F1:4C:DD:23:C4:A1:E7:2C:5C:EF:58","sha256":"09:30:03:A8:7D:7F:F6:BE:79:16:44:E4:E0:4C:56:8E:3D:5B:16:F3:9F:F3:3D:87:F0:7F:E6:B2:1D:48:7F:F5"}}},"request":{"raw":"GET /img/b/R29vZ2xl/AVvXsEhxJ-sZNTsiCuTsjjIGI_LojmPImopumot9q0cm-JOYn_99fMCPbZ0OmNSPYLFYNNEO8eQckiyZkKtChesivxiWa6eACybFrscEqPSEfECyCrQkJ0HgtxnKD-l1oWEQ2bcUe-b8ntsRc4JrqoXCh4kVDa0sE-3sOfFgxATbgDD6e0bb5XpeQXzt6e1bIt_H/s320/IMG-20240319-WA0001.jpg HTTP/1.1\r\nHost: blogger.googleusercontent.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: image/jpeg\r\nvary: Origin\r\naccess-control-expose-headers: Content-Length\r\netag: \"v1c\"\r\nexpires: Tue, 28 Jul 2026 14:12:25 GMT\r\ncache-control: public, max-age=86400, no-transform\r\ncontent-disposition: inline;filename=\"IMG-20240319-WA0001.jpg\"\r\nx-content-type-options: nosniff\r\ndate: Mon, 27 Jul 2026 14:12:25 GMT\r\nserver: fife\r\ncontent-length: 22359\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":null,"data":{"size":22359,"size_decoded":22835,"mime_type":"image/jpeg","magic":"JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, Exif Standard: [TIFF image data, little-endian, direntries=1, software=Google], baseline, precision 8, 320x178, components 3","md5":"2b7899d160695c6a7d234a2f229e1c46","sha1":"a183e771013e878594cd42a39e85ee0b43b897ca","sha256":"bd0b8210f59106e83642354f593d7179035ea204957674bacfd2d91fde93ac8c","sha512":"32f1c225191b9b36eafb9421d7e8c423876931d5bdf91e69356bb33dd78a5d15bc3f1b35296c15c07e5c8edc31a15fce3093c9520b68cfdb98247f70aa03168d","ssdeep":"384:FYzhqHppuhRQLS8JTkmRSOewn3wGyhoyRww8ygCePn81ds56ysvY:FYzhqXurck3ZwnApeyRwwrgCE8vs5z","tlshash":"f4a2dfeb7a1141a7e0dbec78c172b3e3d7234ae8901b1a72a71164e6ab00055bbd3528","first_seen":"2026-07-27T14:13:13.882423Z","last_seen":"2026-07-29T00:35:32.783634Z","times_seen":2,"resource_available":false,"data":"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"}},"time_used":1160,"timings":{"blocked":-1,"dns":0,"connect":15,"send":0,"wait":1108,"receive":1,"ssl":33},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Varela+Round\u0026display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.178.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.707Z","timestamp":1785161543707,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_256_GCM_SHA384","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WE2","organization":"Google Trust Services"},"validity":{"start":"Mon, 29 Jun 2026 08:39:27 GMT","end":"Mon, 21 Sep 2026 08:39:26 GMT"},"fingerprint":{"sha1":"50:37:CF:61:33:A1:EE:47:D9:3D:A6:5E:07:BA:4C:FF:F7:25:9F:76","sha256":"7D:4D:21:06:63:E2:5E:F0:8C:59:8E:EB:B7:94:2B:81:70:11:D3:F4:C0:A0:81:A6:1B:E7:27:FD:56:10:1A:11"}}},"request":{"raw":"GET /css?family=Varela+Round\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\ncontent-type: text/css; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\naccess-control-allow-origin: *\r\ntiming-allow-origin: *\r\nlink: \u003chttps://fonts.gstatic.com\u003e; rel=preconnect; crossorigin\r\nstrict-transport-security: max-age=31536000\r\nexpires: Mon, 27 Jul 2026 14:12:23 GMT\r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\ncache-control: private, max-age=86400\r\ncross-origin-opener-policy: same-origin-allow-popups\r\ncross-origin-resource-policy: cross-origin\r\ncontent-encoding: gzip\r\nserver: ESF\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"HSTS","description":"HTTP Strict Transport Security (HSTS) informs browsers that the site should only be accessed using HTTPS.","website":"https://www.rfc-editor.org/rfc/rfc6797#section-6.1","common_platform_enumeration":"","icon":"","categories":["Security"]}],"data":{"size":1597,"size_decoded":1200,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"7030baf9622c0b3199d41d569f40e464","sha1":"43bb431ac4463820acc2d454391adbbd9ac04b23","sha256":"82fc687436a6cfe6ea556a48f3760c7be5a5de4d908dfed33a0dbd69b5bb207f","sha512":"ceedd567e433447e39f4ad218bf4f1ebc09a703b5618f27df4c89fe46e0b6dd003ebf6b8cb6186bff66541d74827d8a016d9bb53232f4c31e232357e4b7edc7a","ssdeep":"","tlshash":"d531c1a01417a504db930ce523ce7e359d4fa2506460d5796ffe2c9dacaac29731570d","first_seen":"2025-09-12T07:40:43.547603Z","last_seen":"2026-07-31T05:05:01.121014Z","times_seen":1311,"resource_available":false,"data":"LyogaGVicmV3ICovCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnVmFyZWxhIFJvdW5kJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBmb250LWRpc3BsYXk6IHN3YXA7CiAgc3JjOiB1cmwoaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbS9zL3ZhcmVsYXJvdW5kL3YyMS93OGdkSDI4M1R2a19fTHVhMzJUeXNqSWZwY3VQUDlnLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzA3LTAzMDgsIFUrMDU5MC0wNUZGLCBVKzIwMEMtMjAxMCwgVSsyMEFBLCBVKzI1Q0MsIFUrRkIxRC1GQjRGOwp9Ci8qIHZpZXRuYW1lc2UgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdWYXJlbGEgUm91bmQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvdmFyZWxhcm91bmQvdjIxL3c4Z2RIMjgzVHZrX19MdWEzMlR5c2pJZnFNdVBQOWcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSswMTEwLTAxMTEsIFUrMDEyOC0wMTI5LCBVKzAxNjgtMDE2OSwgVSswMUEwLTAxQTEsIFUrMDFBRi0wMUIwLCBVKzAzMDAtMDMwMSwgVSswMzAzLTAzMDQsIFUrMDMwOC0wMzA5LCBVKzAzMjMsIFUrMDMyOSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQovKiBsYXRpbi1leHQgKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdWYXJlbGEgUm91bmQnOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtZGlzcGxheTogc3dhcDsKICBzcmM6IHVybChodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvdmFyZWxhcm91bmQvdjIxL3c4Z2RIMjgzVHZrX19MdWEzMlR5c2pJZnFjdVBQOWcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMUQwMC0xREJGLCBVKzFFMDAtMUU5RiwgVSsxRUYyLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMEMwLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQovKiBsYXRpbiAqLwpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1ZhcmVsYSBSb3VuZCc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy92YXJlbGFyb3VuZC92MjEvdzhnZEgyODNUdmtfX0x1YTMyVHlzaklmcDh1UC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOwp9Cg=="}},"time_used":80,"timings":{"blocked":-1,"dns":2,"connect":14,"send":0,"wait":33,"receive":0,"ssl":31},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"myve.web.id/pengaktifann-fitur-daanaterfending/style.css","fqdn":"myve.web.id","domain":"myve.web.id","tld":"web.id"},"ip":{"addr":"172.67.213.209","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.708Z","timestamp":1785161543708,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"myve.web.id","organization":""},"issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validity":{"start":"Sat, 04 Jul 2026 04:55:51 GMT","end":"Fri, 02 Oct 2026 04:55:50 GMT"},"fingerprint":{"sha1":"D9:F7:B3:E3:72:C7:4A:65:7E:55:9F:8B:EA:E5:BF:04:9A:D0:64:37","sha256":"36:BE:8E:4D:7A:FA:CC:63:B3:35:42:9C:D8:AC:C2:16:EB:B2:08:D8:5F:D7:42:9D:35:AF:D7:F5:32:44:7C:79"}}},"request":{"raw":"GET /pengaktifann-fitur-daanaterfending/style.css HTTP/1.1\r\nHost: myve.web.id\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/pengaktifann-fitur-daanaterfending/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nserver: cloudflare\r\npriority: u=2,i=?0\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=piQVkB%2BuzF2XXUB0ElwEgYubM3OQ0ozOzF%2FAAQBLCYEf9a1GCrmu5RvB1fgMqwosHdl%2F1%2Ffdduogc40DzEZJa%2BvFn4RkHe14etwTY%2FAB75GaThO%2FrCWTRWV81pNGaw%3D%3D\"}]}\r\ncontent-type: text/html; charset=iso-8859-1\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\ncontent-encoding: zstd\r\ncf-ray: a21c3d20390a2efa-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":355,"size_decoded":896,"mime_type":"text/html; charset=iso-8859-1","magic":"HTML document, ASCII text","md5":"4525b2d648f7c457a689fd96421783a5","sha1":"11bfe30ce44585a15a38e86bc094224ddfe2c08e","sha256":"cc0b4e42510d49c6decd464123ecf3b14ae9b47f9b4ed2ee64893e2d6520a264","sha512":"94e3e8246cf38ff7740e51aa115c8c455b14f78e672c2686b782c0ce30b6fa2dbd91a78b29b3964d9c0414aabd4b9391fd5db326665e25b4b8e73dae60ffe979","ssdeep":"","tlshash":"71e0c04f4057b3474011a2907dc01291e505236b38a152f93ac09467500897dc4aa2dd","first_seen":"2025-12-09T03:51:58.5943Z","last_seen":"2026-07-31T05:33:51.221871Z","times_seen":51999,"resource_available":true,"data":"PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+CjxodG1sPjxoZWFkPgo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+CjwvaGVhZD48Ym9keT4KPGgxPk5vdCBGb3VuZDwvaDE+CjxwPlRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuPC9wPgo8cD5BZGRpdGlvbmFsbHksIGEgNDA0IE5vdCBGb3VuZAplcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIHVzZSBhbiBFcnJvckRvY3VtZW50IHRvIGhhbmRsZSB0aGUgcmVxdWVzdC48L3A+CjwvYm9keT48L2h0bWw+Cg=="}},"time_used":187,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":187,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.710Z","timestamp":1785161543710,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.github.io","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 23:26:07 GMT","end":"Wed, 02 Sep 2026 23:26:06 GMT"},"fingerprint":{"sha1":"3F:87:BE:75:1A:02:3B:A4:D2:51:D2:72:92:A0:00:61:D1:D0:D7:12","sha256":"32:49:1B:26:BF:AF:7B:FB:55:60:29:EF:32:29:9A:C4:37:4D:B3:4D:09:EE:CD:4F:FD:01:F2:1B:2C:5A:85:67"}}},"request":{"raw":"GET /OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css HTTP/1.1\r\nHost: owlcarousel2.github.io\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: GitHub.com\r\ncontent-type: text/css; charset=utf-8\r\nlast-modified: Fri, 20 Apr 2018 13:22:52 GMT\r\naccess-control-allow-origin: *\r\netag: W/\"5ad9e9ac-d17\"\r\nexpires: Thu, 02 Jul 2026 01:23:18 GMT\r\ncache-control: max-age=600\r\ncontent-encoding: gzip\r\nx-proxy-cache: MISS\r\nx-github-request-id: A58C:1CA3EE:C3B9:DBEB:6A45BB2E\r\naccept-ranges: bytes\r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nvia: 1.1 varnish\r\nage: 264\r\nx-served-by: cache-bma-essb1270022-BMA\r\nx-cache: HIT\r\nx-cache-hits: 1\r\nx-timer: S1785161544.747068,VS0,VE2\r\nvary: Accept-Encoding\r\nx-fastly-request-id: 4ed7628fbb5294c561a3c6a5fe684ccf4a1ef975\r\ncontent-length: 1068\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]},{"name":"Fastly","description":"Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video \u0026 streaming services.","website":"https://www.fastly.com","common_platform_enumeration":"","icon":"Fastly.svg","categories":["CDN"]},{"name":"GitHub Pages","description":"GitHub Pages is a static site hosting service.","website":"https://pages.github.com/","common_platform_enumeration":"","icon":"GitHub.svg","categories":["PaaS"]}],"data":{"size":3351,"size_decoded":1733,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (3184)","md5":"b2752a850d44f50036628eeaef3bfcfa","sha1":"fba46353cf90450ef3d362a123f1e7af3e8c561e","sha256":"521410e1fc44780061e09adc980275fb5ea277fd5d9e538454214ec4379ff4bc","sha512":"b52dd2e6a1b40658674113b2257bcd8de10ce14a4c5c7ad07d31a66d0d602a67a50b195210151ac614418ff1054f3a5b3f84554aba448a46e6749a1b0af844de","ssdeep":"","tlshash":"9161bbe5314a225f480f83121dd81e86393dcc52d8660a5a92bbd71447dae6d213ffcf","first_seen":"2023-04-05T13:49:19Z","last_seen":"2026-07-31T05:19:24.540174Z","times_seen":42925,"resource_available":false,"data":"LyoqCiAqIE93bCBDYXJvdXNlbCB2Mi4zLjQKICogQ29weXJpZ2h0IDIwMTMtMjAxOCBEYXZpZCBEZXV0c2NoCiAqIExpY2Vuc2VkIHVuZGVyOiBTRUUgTElDRU5TRSBJTiBodHRwczovL2dpdGh1Yi5jb20vT3dsQ2Fyb3VzZWwyL093bENhcm91c2VsMi9ibG9iL21hc3Rlci9MSUNFTlNFCiAqLwoub3dsLWNhcm91c2VsLC5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtwb3NpdGlvbjpyZWxhdGl2ZX0ub3dsLWNhcm91c2Vse2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlO3otaW5kZXg6MX0ub3dsLWNhcm91c2VsIC5vd2wtc3RhZ2V7cG9zaXRpb246cmVsYXRpdmU7LW1zLXRvdWNoLWFjdGlvbjpwYW4tWTt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOy1tb3otYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59Lm93bC1jYXJvdXNlbCAub3dsLXN0YWdlOmFmdGVye2NvbnRlbnQ6Ii4iO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aDt2aXNpYmlsaXR5OmhpZGRlbjtsaW5lLWhlaWdodDowO2hlaWdodDowfS5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZS1vdXRlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApfS5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtLC5vd2wtY2Fyb3VzZWwgLm93bC13cmFwcGVyey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47LW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjstbXMtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApOy1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKX0ub3dsLWNhcm91c2VsIC5vd2wtaXRlbXttaW4taGVpZ2h0OjFweDtmbG9hdDpsZWZ0Oy13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmV9Lm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1ne2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0ub3dsLWNhcm91c2VsIC5vd2wtZG90cy5kaXNhYmxlZCwub3dsLWNhcm91c2VsIC5vd2wtbmF2LmRpc2FibGVke2Rpc3BsYXk6bm9uZX0ubm8tanMgLm93bC1jYXJvdXNlbCwub3dsLWNhcm91c2VsLm93bC1sb2FkZWR7ZGlzcGxheTpibG9ja30ub3dsLWNhcm91c2VsIC5vd2wtZG90LC5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1uZXh0LC5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1wcmV2e2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTsta2h0bWwtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ub3dsLWNhcm91c2VsIC5vd2wtbmF2IGJ1dHRvbi5vd2wtbmV4dCwub3dsLWNhcm91c2VsIC5vd2wtbmF2IGJ1dHRvbi5vd2wtcHJldiwub3dsLWNhcm91c2VsIGJ1dHRvbi5vd2wtZG90e2JhY2tncm91bmQ6MCAwO2NvbG9yOmluaGVyaXQ7Ym9yZGVyOm5vbmU7cGFkZGluZzowIWltcG9ydGFudDtmb250OmluaGVyaXR9Lm93bC1jYXJvdXNlbC5vd2wtbG9hZGluZ3tvcGFjaXR5OjA7ZGlzcGxheTpibG9ja30ub3dsLWNhcm91c2VsLm93bC1oaWRkZW57b3BhY2l0eTowfS5vd2wtY2Fyb3VzZWwub3dsLXJlZnJlc2ggLm93bC1pdGVte3Zpc2liaWxpdHk6aGlkZGVufS5vd2wtY2Fyb3VzZWwub3dsLWRyYWcgLm93bC1pdGVtey1tcy10b3VjaC1hY3Rpb246cGFuLXk7dG91Y2gtYWN0aW9uOnBhbi15Oy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ub3dsLWNhcm91c2VsLm93bC1ncmFie2N1cnNvcjptb3ZlO2N1cnNvcjpncmFifS5vd2wtY2Fyb3VzZWwub3dsLXJ0bHtkaXJlY3Rpb246cnRsfS5vd2wtY2Fyb3VzZWwub3dsLXJ0bCAub3dsLWl0ZW17ZmxvYXQ6cmlnaHR9Lm93bC1jYXJvdXNlbCAuYW5pbWF0ZWR7YW5pbWF0aW9uLWR1cmF0aW9uOjFzO2FuaW1hdGlvbi1maWxsLW1vZGU6Ym90aH0ub3dsLWNhcm91c2VsIC5vd2wtYW5pbWF0ZWQtaW57ei1pbmRleDowfS5vd2wtY2Fyb3VzZWwgLm93bC1hbmltYXRlZC1vdXR7ei1pbmRleDoxfS5vd2wtY2Fyb3VzZWwgLmZhZGVPdXR7YW5pbWF0aW9uLW5hbWU6ZmFkZU91dH1Aa2V5ZnJhbWVzIGZhZGVPdXR7MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX0ub3dsLWhlaWdodHt0cmFuc2l0aW9uOmhlaWdodCAuNXMgZWFzZS1pbi1vdXR9Lm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjRzIGVhc2V9Lm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5Om5vdChbc3JjXSksLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5W3NyY149IiJde21heC1oZWlnaHQ6MH0ub3dsLWNhcm91c2VsIC5vd2wtaXRlbSBpbWcub3dsLWxhenl7dHJhbnNmb3JtLXN0eWxlOnByZXNlcnZlLTNkfS5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6IzAwMH0ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tcGxheS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDo4MHB4O3dpZHRoOjgwcHg7bGVmdDo1MCU7dG9wOjUwJTttYXJnaW4tbGVmdDotNDBweDttYXJnaW4tdG9wOi00MHB4O2JhY2tncm91bmQ6dXJsKG93bC52aWRlby5wbGF5LnBuZykgbm8tcmVwZWF0O2N1cnNvcjpwb2ludGVyO3otaW5kZXg6MTstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlfS5vd2wtY2Fyb3VzZWwgLm93bC12aWRlby1wbGF5LWljb246aG92ZXJ7LW1zLXRyYW5zZm9ybTpzY2FsZSgxLjMsMS4zKTt0cmFuc2Zvcm06c2NhbGUoMS4zLDEuMyl9Lm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby1wbGF5LWljb24sLm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXBsYXlpbmcgLm93bC12aWRlby10bntkaXNwbGF5Om5vbmV9Lm93bC1jYXJvdXNlbCAub3dsLXZpZGVvLXRue29wYWNpdHk6MDtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTpjb250YWluO3RyYW5zaXRpb246b3BhY2l0eSAuNHMgZWFzZX0ub3dsLWNhcm91c2VsIC5vd2wtdmlkZW8tZnJhbWV7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9"}},"time_used":45,"timings":{"blocked":-1,"dns":3,"connect":9,"send":0,"wait":14,"receive":0,"ssl":19},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.theme.default.min.css","fqdn":"owlcarousel2.github.io","domain":"owlcarousel2.github.io","tld":"github.io"},"ip":{"addr":"185.199.109.153","port":443,"asn":54113,"as":"FASTLY","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:23.711Z","timestamp":1785161543711,"http_version":"HTTP/2","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.github.io","organization":""},"issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validity":{"start":"Thu, 04 Jun 2026 23:26:07 GMT","end":"Wed, 02 Sep 2026 23:26:06 GMT"},"fingerprint":{"sha1":"3F:87:BE:75:1A:02:3B:A4:D2:51:D2:72:92:A0:00:61:D1:D0:D7:12","sha256":"32:49:1B:26:BF:AF:7B:FB:55:60:29:EF:32:29:9A:C4:37:4D:B3:4D:09:EE:CD:4F:FD:01:F2:1B:2C:5A:85:67"}}},"request":{"raw":"GET /OwlCarousel2/assets/owlcarousel/assets/owl.theme.default.min.css HTTP/1.1\r\nHost: owlcarousel2.github.io\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: style\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=2\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 \r\nserver: GitHub.com\r\ncontent-type: text/css; charset=utf-8\r\nlast-modified: Fri, 20 Apr 2018 13:22:52 GMT\r\naccess-control-allow-origin: *\r\netag: W/\"5ad9e9ac-3f5\"\r\nexpires: Mon, 06 Jul 2026 14:54:32 GMT\r\ncache-control: max-age=600\r\ncontent-encoding: gzip\r\nx-proxy-cache: MISS\r\nx-github-request-id: 52F4:36888:468BAA:4C8C1D:6A4BBF4F\r\naccept-ranges: bytes\r\ndate: Mon, 27 Jul 2026 14:12:23 GMT\r\nvia: 1.1 varnish\r\nage: 451\r\nx-served-by: cache-bma-essb1270022-BMA\r\nx-cache: HIT\r\nx-cache-hits: 94995\r\nx-timer: S1785161544.976997,VS0,VE1\r\nvary: Accept-Encoding\r\nx-fastly-request-id: 0fb0c1b8b4055ff48608dc5970c6b4df1029d7ec\r\ncontent-length: 479\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Fastly","description":"Fastly is a cloud computing services provider. Fastly's cloud platform provides a content delivery network, Internet security services, load balancing, and video \u0026 streaming services.","website":"https://www.fastly.com","common_platform_enumeration":"","icon":"Fastly.svg","categories":["CDN"]},{"name":"GitHub Pages","description":"GitHub Pages is a static site hosting service.","website":"https://pages.github.com/","common_platform_enumeration":"","icon":"GitHub.svg","categories":["PaaS"]},{"name":"Varnish","description":"Varnish is a reverse caching proxy.","website":"https://www.varnish-cache.org","common_platform_enumeration":"cpe:2.3:a:varnish-software:varnish_cache:*:*:*:*:*:*:*:*","icon":"Varnish.svg","categories":["Caching"]}],"data":{"size":1013,"size_decoded":1150,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (846)","md5":"594b81805a98b267e47c70a8fad30d9f","sha1":"684d84ec40b305ca14efc88c91f12972cb6342b4","sha256":"924b0dc630d1c5dff9fa31aead9509775b1d476bfe0a5ac2977b2f11205a26ac","sha512":"b0c5ed30d2f5cd1ce894760a12e8ccd80a822d447d1760b8ff4e5c75bc638cb491bcc40872210f090668fbe9e4ee0a3706d4ae2bd91f6bfb3e6b87f88b9a4b93","ssdeep":"","tlshash":"4d11abc5f189221d301781904aa842cb6b1e687e529d0ef5f8ee8160c22dd053a6fbf9","first_seen":"2023-04-05T06:03:14Z","last_seen":"2026-07-31T05:19:24.554705Z","times_seen":26788,"resource_available":false,"data":"LyoqCiAqIE93bCBDYXJvdXNlbCB2Mi4zLjQKICogQ29weXJpZ2h0IDIwMTMtMjAxOCBEYXZpZCBEZXV0c2NoCiAqIExpY2Vuc2VkIHVuZGVyOiBTRUUgTElDRU5TRSBJTiBodHRwczovL2dpdGh1Yi5jb20vT3dsQ2Fyb3VzZWwyL093bENhcm91c2VsMi9ibG9iL21hc3Rlci9MSUNFTlNFCiAqLwoub3dsLXRoZW1lIC5vd2wtZG90cywub3dsLXRoZW1lIC5vd2wtbmF2e3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ub3dsLXRoZW1lIC5vd2wtbmF2e21hcmdpbi10b3A6MTBweH0ub3dsLXRoZW1lIC5vd2wtbmF2IFtjbGFzcyo9b3dsLV17Y29sb3I6I0ZGRjtmb250LXNpemU6MTRweDttYXJnaW46NXB4O3BhZGRpbmc6NHB4IDdweDtiYWNrZ3JvdW5kOiNENkQ2RDY7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czozcHh9Lm93bC10aGVtZSAub3dsLW5hdiBbY2xhc3MqPW93bC1dOmhvdmVye2JhY2tncm91bmQ6Izg2OTc5MTtjb2xvcjojRkZGO3RleHQtZGVjb3JhdGlvbjpub25lfS5vd2wtdGhlbWUgLm93bC1uYXYgLmRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOmRlZmF1bHR9Lm93bC10aGVtZSAub3dsLW5hdi5kaXNhYmxlZCsub3dsLWRvdHN7bWFyZ2luLXRvcDoxMHB4fS5vd2wtdGhlbWUgLm93bC1kb3RzIC5vd2wtZG90e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3pvb206MX0ub3dsLXRoZW1lIC5vd2wtZG90cyAub3dsLWRvdCBzcGFue3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHg7bWFyZ2luOjVweCA3cHg7YmFja2dyb3VuZDojRDZENkQ2O2Rpc3BsYXk6YmxvY2s7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGU7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyBlYXNlO2JvcmRlci1yYWRpdXM6MzBweH0ub3dsLXRoZW1lIC5vd2wtZG90cyAub3dsLWRvdC5hY3RpdmUgc3Bhbiwub3dsLXRoZW1lIC5vd2wtZG90cyAub3dsLWRvdDpob3ZlciBzcGFue2JhY2tncm91bmQ6Izg2OTc5MX0="}},"time_used":266,"timings":{"blocked":-1,"dns":0,"connect":9,"send":0,"wait":9,"receive":0,"ssl":247},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"a.m.dana.id/resource/danaweb-v2/hero-personal-bg-back.png","fqdn":"a.m.dana.id","domain":"dana.id","tld":"id"},"ip":{"addr":"","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://myve.web.id/pengaktifann-fitur-daanaterfending/","date":"2026-07-27T14:12:24.005Z","timestamp":1785161544005,"http_version":"","security_state":"","security_info":null,"request":{"raw":"GET /resource/danaweb-v2/hero-personal-bg-back.png HTTP/1.1\r\nHost: a.m.dana.id\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-Fetch-Storage-Access: none\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://myve.web.id/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: cross-site\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"","headers":null,"cookies":null,"status_code":"","status_text":"","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-07-31T05:31:15.491978Z","times_seen":17629337,"resource_available":true,"data":null}},"time_used":0,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":0,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
