{"id":6116,"date":"2026-07-06T05:39:38","date_gmt":"2026-07-06T05:39:38","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-5-test-2-listening\/"},"modified":"2026-07-12T03:25:12","modified_gmt":"2026-07-12T03:25:12","slug":"celpip-set-5-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-5-test-2-listening\/","title":{"rendered":"CELPIP Set 5 Test 2 Listening"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 5 &#183; Practice Test 2<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0Mi1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0Mi1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0Mi1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM1dDItcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zNXQyLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0Mi1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM1dDItcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDUgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiIsInNldE5vIjo1LCJ0ZXN0Tm8iOjIsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuLiBUaGUgbWFuIGlzIGFuIGFzc2lzdGFudCBhdCBhIG1lZGljYWwgY2xpbmljLCBhbmQgdGhlIHdvbWFuIHdhbnRzIHRvIHNlZSBhIGRvY3Rvci4gSXQgcGxheXMgaW4gdGhyZWUgc2VjdGlvbnMsIGFuZCBlYWNoIHNlY3Rpb24gcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIGVhY2ggc2VjdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbi4gVGhlIG1hbiBpcyBhbiBhc3Npc3RhbnRcbmF0IGEgbWVkaWNhbCBjbGluaWMsIGFuZCB0aGUgd29tYW4gd2FudHMgdG8gc2VlIGEgZG9jdG9yLlxuXG5cblNlY3Rpb24gMTpcbldPTUFOOiBIaS4gSSB3YXMgaG9waW5nIHlvdSBjb3VsZCBoZWxwIG1lLiBJXHUyMDE5dmUgbmV2ZXIgYmVlbiB0byB0aGlzIHdhbGstaW5cbmNsaW5pYyBiZWZvcmUuIEkgbW92ZWQgaGVyZSBhIGZldyBtb250aHMgYWdvLCBhbmQgSSBzdGlsbCBkb25cdTIwMTl0IGhhdmUgYSBmYW1pbHlcbmRvY3RvciwgYnV0IEkgcmVhbGx5IG5lZWQgdG8gc2VlIG9uZSByaWdodCBhd2F5LlxuTUFOOiAgICAgICAgIFNvcnJ5LCBidXQgeW91XHUyMDE5bGwgaGF2ZSB0byB0YWtlIGEgbnVtYmVyIGFuZCB3YWl0IHRvIGJlIGNhbGxlZC4gVGhlcmVcbmFyZSBhIGNvdXBsZSBwZW9wbGUgYWhlYWQgb2YgeW91LiBJdCBzaG91bGRuXHUyMDE5dCBiZSB0b28gbG9uZywgdGhvdWdoLlxuV09NQU46IE9oLCBzb3JyeSEgSSBkaWRuXHUyMDE5dCByZWFsaXplIEkgaGFkIHRvIHRha2UgYSBudW1iZXIuIEkgYXNzdW1lZCB0aGF0IHNpbmNlXG5ubyBvbmUgd2FzIGF0IHRoZSBjb3VudGVyIHdoZW4gSSBjYW1lIGluLCBJIGNvdWxkIGp1c3Qgd2FsayB1cC4gV2hlcmUgYXJlIHRoZVxubnVtYmVyIHRpY2tldHM\/XG5NQU46ICAgICAgICAgIFllYWgsIGl0IGhhcHBlbnMgYWxsIHRoZSB0aW1lLiBUaGUgbnVtYmVycyBhcmUganVzdCB0byB0aGUgbGVmdCBvZiB0aGVcbmRvb3IsIGluIHRoZSByZWQgZGlzcGVuc2VyLiBMaWtlIEkgc2FpZCwgaXQgd29uXHUyMDE5dCBiZSBsb25nLiBJbiB0aGUgbWVhbnRpbWUsIHlvdSBjYW5cbnRha2UgYSBzZWF0LlxuU2VjdGlvbiAyOlxuTUFOOiAgICAgICAgIE51bWJlciA0NyBwbGVhc2UhXG5XT01BTjogSGksIElcdTIwMTltIGJhY2suIElcdTIwMTlkIGxpa2UgdG8gc2VlIGEgZG9jdG9yLCBwbGVhc2UuIElcdTIwMTl2ZSBiZWVuIGhhdmluZyBzaGFycFxucGFpbnMgaW4gbXkgc3RvbWFjaCBmb3Igb3ZlciBhIHdlZWsgbm93LlxuTUFOOiAgICAgICAgIE9rYXksIElcdTIwMTlsbCBqdXN0IG5lZWQgdG8gc2VlIHlvdXIgcHJvdmluY2lhbCBoZWFsdGggY2FyZCBwbGVhc2UgLiAuIC4gQW5kXG5zaW5jZSB3ZSBkb25cdTIwMTl0IGhhdmUgeW91ciBpbmZvcm1hdGlvbiBvbiBmaWxlLCBJXHUyMDE5bSBnb2luZyB0byBuZWVkIHlvdSB0byBmaWxsIG91dCB0aGlzXG5wYXRpZW50IGluZm9ybWF0aW9uIGZvcm0uXG5cZldPTUFOOiBTdXJlLiBPaCBkYXJuLCBJIGRvblx1MjAxOXQgaGF2ZSBhIHBlbi4gRG8geW91IGhhdmUgb25lIEkgY291bGQgYm9ycm93P1xuTUFOOiAgICAgICAgIFllcywgaGVyZSB5b3UgYXJlLiBQbGVhc2UgYnJpbmcgdGhlIGZvcm0gYW5kIHBlbiBiYWNrIHVwIHdoZW4geW91XHUyMDE5cmVcbmRvbmUuXG5XT01BTjogVGhhbmsgeW91LiBPaCB3b3chIFRoZXJlIGFyZSBjZXJ0YWlubHkgYSBsb3Qgb2YgcXVlc3Rpb25zIGhlcmUhXG5NQU46ICAgICAgICAgIFlvdSBvbmx5IG5lZWQgdG8gZmlsbCBpdCBvdXQgZm9yIHlvdXIgZmlyc3QgYXBwb2ludG1lbnQgYW5kIHRoZW4gd2VcbmtlZXAgaXQgb24gZmlsZS4gWW91IGNhbiBnbyBhbmQgc2l0IGRvd24gYW5kIGNvbXBsZXRlIHRoZSBmb3JtLiBJdFx1MjAxOWxsIG9ubHkgdGFrZSBhXG5mZXcgbWludXRlcy5cbldPTUFOOiBXaWxsIGl0IGV2ZXIhXG5TZWN0aW9uIDM6XG5XT01BTjogT2theSwgSSBmaWxsZWQgb3V0IGFsbCB0aGUgaW5mb3JtYXRpb24gSSBjb3VsZC4gSSBkb25cdTIwMTl0IHJlYWxseSBrbm93IG15XG5mYW1pbHlcdTIwMTlzIGhpc3Rvcnkgb2YgaWxsbmVzc2VzLCBzbyBJIGp1c3QgbGVmdCB0aGF0IHNlY3Rpb24gYmxhbmsuXG5NQU46ICAgICAgIFRoYXRcdTIwMTlzIGFsbCByaWdodC4gT2gsIEkgc2VlIHlvdSBtaXNzZWQgdGhpcyBzZWN0aW9uIG9uIHRoZSBiYWNrIG9mIHRoZVxucGFnZVx1MjAxNHRoZSBvbmUgYWJvdXQgeW91ciBhbGxlcmdpZXMgYW5kIG1lZGljYXRpb25zLlxuV09NQU46IE9vcHMsIEkgZGlkblx1MjAxOXQgcmVhbGl6ZSBpdCB3YXMgdHdvLXNpZGVkLiBIZXJlIHlvdSBnby4gRG8geW91IGtub3dcbmhvdyBsb25nIHRoZSB3YWl0IHdpbGwgYmU\/XG5NQU46ICAgICAgICAgV2VsbCwgaXRcdTIwMTlzIGhhcmQgdG8gc2F5IGV4YWN0bHkuIEJ1dCBhdCB0aGlzIHBvaW50LCBpdFx1MjAxOXMgbG9va2luZyBsaWtlIGF0XG5sZWFzdCBvbmUgaG91ci5cbldPTUFOOiBPbmUgaG91ciEgU2VyaW91c2x5PyBUaGlzIHdhaXRpbmcgcm9vbSBpcyBwcmFjdGljYWxseSBlbXB0eSFcbk1BTjogICAgICAgICBXZWxsLCBpdCBpcyBmbHUgc2Vhc29uLiBBbmQgc29tZXRpbWVzIHBlb3BsZSBzdGVwIG91dCBmb3IgYSBiaXQgd2hpbGVcbnRoZXlcdTIwMTlyZSB3YWl0aW5nLiBUaGVyZSBhcmUgcXVpdGUgYSBmZXcgbmFtZXMgYWhlYWQgb2YgeW91cnMsIGFuZCBvbmx5IHR3byBkb2N0b3JzXG5vbiBkdXR5LlxuV09NQU46IFdlbGwsIEkgZ3Vlc3MgSSBkb25cdTIwMTl0IHJlYWxseSBoYXZlIGEgY2hvaWNlLiBMZXRcdTIwMTlzIGhvcGUgc29tZSBvZiB0aGVcbnBlb3BsZSB3aG8gaGF2ZSBzdGVwcGVkIG91dCBqdXN0IGRlY2lkZWQgdG8gbGVhdmUuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDEiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjozOSwidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gYXQgdGhpcyBjbGluaWM\/Iiwib3B0aW9ucyI6WyJTaGUgd2FudHMgdG8gcGljayB1cCBhIHByZXNjcmlwdGlvbi4iLCJTaGUgZG9lc24ndCBoYXZlIGEgZmFtaWx5IGRvY3Rvci4iLCJTaGUgaXMgdmlzaXRpbmcgYSBzaWNrIHJlbGF0aXZlLiIsIlNoZSBuZWVkcyB0byByZW5ldyBoZXIgaGVhbHRoIGNhcmQuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gbmVlZD8iLCJvcHRpb25zIjpbImRpcmVjdGlvbnMgdG8gdGhlIHBoYXJtYWN5IiwiYSBmYW1pbHkgZG9jdG9yJ3MgcmVmZXJyYWwiLCJhIG51bWJlciIsImEgY29weSBvZiBoZXIgbWVkaWNhbCBmaWxlIl0sImtleSI6MywicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NDQsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjozLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gYXNrIHRoZSB3b21hbiBmb3I\/Iiwib3B0aW9ucyI6WyJhIGRvY3RvcidzIHJlZmVycmFsIiwiYSBoZWFsdGggY2FyZCIsInByb29mIG9mIGFkZHJlc3MiLCJwYXltZW50IGZvciB0aGUgdmlzaXQiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBtYW4gYXNrIHRoZSB3b21hbiB0byBkbz8iLCJvcHRpb25zIjpbIndhaXQgb3V0c2lkZSIsImNhbGwgaGVyIGRvY3RvciIsImZpbGwgb3V0IHNvbWUgcGFwZXJ3b3JrIiwicGF5IGEgZGVwb3NpdCJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJIb3cgZG9lcyB0aGUgd29tYW4gZmVlbCBhYm91dCB0aGUgZm9ybT8iLCJvcHRpb25zIjpbImFubm95ZWQiLCJzdXJwcmlzZWQiLCJyZWxpZXZlZCIsImNvbmZ1c2VkIl0sImtleSI6MiwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAzIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NDgsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmaW5hbCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6Niwic3RlbSI6IkhvdyBkb2VzIHRoZSB3b21hbiBmZWVsIGFib3V0IHRoZSB3YWl0IHRpbWU\/Iiwib3B0aW9ucyI6WyJpbmRpZmZlcmVudCIsImhvcGVmdWwiLCJhbm5veWVkIiwicmVsaWV2ZWQiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiV2h5IGlzIHRoZSB3YWl0IHRvIHNlZSBhIGRvY3RvciBzbyBsb25nPyIsIm9wdGlvbnMiOlsiVGhlcmUgYXJlIG1hbnkgc2ljayBwZW9wbGUgYXQgdGhpcyB0aW1lIG9mIHllYXIuIiwiVGhlcmUgaXMgb25seSBvbmUgZG9jdG9yIG9uIGR1dHkuIiwiVGhlIGNsaW5pYyBqdXN0IG9wZW5lZC4iLCJUaGUgY29tcHV0ZXIgc3lzdGVtIGlzIGRvd24uIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gZGVjaWRlIHRvIGRvIGF0IHRoZSBlbmQ\/Iiwib3B0aW9ucyI6WyJnbyB0byBhIGRpZmZlcmVudCBjbGluaWMiLCJ3YWl0IHRvIHNlZSB0aGUgZG9jdG9yIiwiY29tZSBiYWNrIGFub3RoZXIgZGF5IiwiY2FsbCBoZXIgZmFtaWx5IGRvY3RvciJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDUgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IGFyZSBhYm91dCB0byBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSwgYSBtYW4gYW5kIGEgd29tYW4sIHdobyBhcmUgZnJpZW5kcy4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IGFyZSBhYm91dCB0byBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIHBlb3BsZSwgYSBtYW4gYW5kIGEgd29tYW4sXG53aG8gYXJlIGZyaWVuZHMuXG5cblxuV09NQU46IEhpIEFuZHksIGhvdyBhcmUgeW91PyBJIHdhcyB3b25kZXJpbmcgLiAuIC4gZG8geW91IGhhdmUgYW55IHBsYW5zXG5mb3IgdG9tb3Jyb3c\/XG5NQU46ICAgICAgIE5vdCBpbiB0aGUgbW9ybmluZywgbm8uIEJ1dCBpbiB0aGUgYWZ0ZXJub29uLCBJIHdhcyBnb2luZyB0byB2aXNpdCBteVxuZ3JhbmRtb3RoZXIgYXQgdGhlIG51cnNpbmcgaG9tZS4gV2Ugc3BlbmQgc29tZSB0aW1lIHRvZ2V0aGVyIGV2ZXJ5IFNhdHVyZGF5LlxuV09NQU46IE9oLCBJIGhvcGUgc2hlXHUyMDE5cyBub3QgaWxsLiBZb3VcdTIwMTlyZSBzdWNoIGEgdGhvdWdodGZ1bCBncmFuZHNvbiFcbk1BTjogICAgICAgIEkgc3VwcG9zZSwgYnV0IEkgZG9uXHUyMDE5dCBkbyBpdCB0byBiZSBraW5kIG9yIGFueXRoaW5nLiBJIGdlbnVpbmVseSBlbmpveVxuc3BlbmRpbmcgdGltZSB3aXRoIGhlci4gU2hlXHUyMDE5cyBhbiBhbWF6aW5nIHBlcnNvbi5cbldPTUFOOiBUaGVuIElcdTIwMTlkIGxpa2UgdG8gbWVldCBoZXIgc29tZSB0aW1lISBXZWxsLCBzaW5jZSB5b3UgZG9uXHUyMDE5dCBoYXZlIHBsYW5zXG5mb3IgdGhlIG1vcm5pbmcsIHdvdWxkIHlvdSBsaWtlIHRvIGNvbWUgd2l0aCBtZSB0byBwaWNrIHN0cmF3YmVycmllcz8gVGhlcmUgYXJlXG50d28gXHUyMDE4cGljayB5b3VyIG93blx1MjAxOSBmYXJtcyBuZWFyYnksIGJ1dCBJIGdvIHRvIHRoZSBvbmUgb24gQ2FydGVyIFJvYWQgYmVjYXVzZSBpdFxuaGFzIHRoZSBiZXN0IHN0cmF3YmVycmllcy5cbk1BTjogICAgICAgICBXaGF0LCBleGFjdGx5LCBpcyBhIFx1MjAxOHBpY2sgeW91ciBvd25cdTIwMTkgZmFybT9cbldPTUFOOiBJdFx1MjAxOXMgZXhhY3RseSB3aGF0IGl0IHNheXMhIFlvdSBnbyB0byB0aGUgZmFybSBhbmQgYnV5IGFuIGVtcHR5IGJhc2tldCxcbnVubGVzcyB5b3UgaGF2ZSB5b3VyIG93bi4gVGhlbiB0aGV5IHRha2UgeW91IG91dCBpbnRvIHRoZSBmaWVsZCwgc2hvdyB5b3Ugd2hpY2hcbnJvdyBpcyByZWFkeSB0byBiZSBwaWNrZWQgbmV4dCwgYW5kIHlvdSBqdXN0IG1ha2UgeW91ciB3YXkgYWxvbmcgdGhlIHJvdywgZmlsbGluZ1xueW91ciBiYXNrZXQuIFdoZW4geW91XHUyMDE5dmUgZ290IGFzIG11Y2ggYXMgeW91IHdhbnQsIHlvdSBnbyBiYWNrLCB0aGV5IHdlaWdoIHdoYXRcbnlvdSBoYXZlLCBhbmQgeW91IHBheS5cbk1BTjogICAgICBXaGF0IGFuIGV4Y2VsbGVudCBpZGVhISBJIGltYWdpbmUgdGhlIGZydWl0IGlzIGNoZWFwZXIgd2hlbiB5b3UgcGlja1xueW91ciBvd24\/XG5XT01BTjogVXN1YWxseSwgYnV0IG5vdCBhbHdheXMuIFRoZSBzYW1lIGdvZXMgZm9yIHRoZSBoZWFsdGggZmFjdG9yLiBJXG5pbmNvcnJlY3RseSBhc3N1bWVkIHRoYXQgbm9uZSBvZiB0aGUgXHUyMDE4cGljayB5b3VyIG93blx1MjAxOSBmYXJtcyB1c2VkIHBlc3RpY2lkZXMuIE5vdyBJXG5rbm93LCBJIG9ubHkgZ28gdG8gdGhlIGZhcm0gb24gQ2FydGVyIFJvYWQuXG5cZk1BTjogICAgICAgICBBaC4gSVx1MjAxOWxsIGJldCBwZW9wbGUgd2hvIG1ha2UgdGhlaXIgb3duIHN0cmF3YmVycnkgamFtIGdldCB0aGVpclxuc3RyYXdiZXJyaWVzIGF0IFx1MjAxOHBpY2sgeW91ciBvd25cdTIwMTkgZmFybXMsIGlmIG9ubHkgYmVjYXVzZSB0aGV5XHUyMDE5ZCBiZSBmcmVzaC5cbldPTUFOOiBUaGF0XHUyMDE5cyBjZXJ0YWlubHkgdHJ1ZSEgT2Z0ZW4gdGhleSB0YWtlIHRoZWlyIGtpZHMgYW5kIG1ha2UgYSBkYXkgb2YgaXQuXG5Tb21lIGZhcm1zIGV2ZW4gaGF2ZSBhIHBsYXkgYXJlYSBmb3IgdGhlIGtpZHMuXG5NQU46ICAgICAgIE9rYXksIGxldFx1MjAxOXMgZG8gaXQhIFdlIGNhbiB0YWtlIHNvbWUgZnJlc2ggc3RyYXdiZXJyaWVzIHRvIG15XG5ncmFuZG1vdGhlciBpbiB0aGUgYWZ0ZXJub29uISBJXHUyMDE5bGwgaW50cm9kdWNlIHlvdSEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo4OSwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIGNvbnZlcnNhdGlvbj8iLCJvcHRpb25zIjpbIlRoZSB3b21hbiBleHRlbmRzIGFuIGludml0YXRpb24gdG8gdGhlIG1hbi4iLCJUaGUgbWFuIGFza3MgdGhlIHdvbWFuIGZvciBhIGZhdm91ci4iLCJUaGUgd29tYW4gYXBvbG9naXplcyBmb3IgbWlzc2luZyBhIHZpc2l0LiIsIlRoZSBtYW4gY29tcGxhaW5zIGFib3V0IGEgZmFybS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiBkZXNjcmliZSB0byB0aGUgbWFuPyIsIm9wdGlvbnMiOlsiYSBudXJzaW5nIGhvbWUgcHJvZ3JhbSIsInBpY2steW91ci1vd24gZmFybXMiLCJhIHN0cmF3YmVycnkgamFtIHJlY2lwZSIsImEgZmFybWVycycgbWFya2V0Il0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBwcmVmZXIgdGhlIGZhcm0gb24gQ2FydGVyIFJvYWQ\/Iiwib3B0aW9ucyI6WyJJdCBpcyBjbG9zZXIgdG8gaGVyIGhvbWUuIiwiVGhlIHN0cmF3YmVycmllcyBhcmUgYmV0dGVyLiIsIkl0IGhhcyBhIHBsYXkgYXJlYSBmb3Iga2lkcy4iLCJJdCBvZmZlcnMgbG93ZXIgcHJpY2VzLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGlzIHRydWUgb2YgcGljay15b3VyLW93biBmYXJtcz8iLCJvcHRpb25zIjpbIlRoZXkgb25seSBvcGVuIG9uIHdlZWtlbmRzLiIsIlRoZXkgcmVxdWlyZSBhZHZhbmNlIGJvb2tpbmcuIiwiVGhlaXIgZnJ1aXQgaXMgbm90IG5lY2Vzc2FyaWx5IGZyZWUgb2YgY2hlbWljYWxzLiIsIlRoZXkgb25seSBzZWxsIHN0cmF3YmVycmllcy4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hhdCB3aWxsIHRoZSB3b21hbiBsaWtlbHkgYmUgZG9pbmcgU2F0dXJkYXkgYWZ0ZXJub29uPyIsIm9wdGlvbnMiOlsid29ya2luZyBhdCB0aGUgZmFybSIsIm1lZXRpbmcgQW5keSdzIGdyYW5kbW90aGVyIiwibWFraW5nIHN0cmF3YmVycnkgamFtIiwidmlzaXRpbmcgaGVyIG93biBncmFuZG1vdGhlciJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IGFyZSBhYm91dCB0byBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4uIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6Ik1BTjogICAgICAgIFdlbGNvbWUgdG8gdGhlIFJlbnRlcnNcdTIwMTkgTGVnYWwgQ2xpbmljLiBXaGF0IGJyaW5ncyB5b3UgaGVyZT9cbldPTUFOOiBXZWxsLCB3aGVuIEkgc2lnbmVkIHRoZSBsZWFzZSB0byByZW50IG15IGFwYXJ0bWVudCwgbXkgbGFuZGxvcmQgbWFkZVxubWUgcGF5IGV4dHJhLCBhbmQgSSB3YW50IHRoYXQgbW9uZXkgYmFjay5cbk1BTjogICAgICAgIFdoYXQgZmVlcyBkaWQgdGhlIGxhbmRsb3JkIGNoYXJnZSB5b3UsIGFwYXJ0IGZyb20gdGhlIGZpcnN0IG1vbnRoXHUyMDE5c1xucmVudD9cbldPTUFOOiBXZWxsLCB0aGUgcmVudCBpcyAkMSwwMDAgYSBtb250aC4gSW4gYWRkaXRpb24gdG8gdGhhdCwgaGUgY29sbGVjdGVkIGFuXG5lcXVhbCBhbW91bnQgZm9yIGEgXHUyMDFjZGFtYWdlIGRlcG9zaXQsXHUyMDFkIHdoaWNoIGhlIHNhaWQgaGVcdTIwMTlkIHJlcGF5IGF0IHRoZSBlbmQgb2YgdGhlXG5sZWFzZSBpZiB0aGUgYXBhcnRtZW50IHdhcyBsZWZ0IGluIGdvb2QgY29uZGl0aW9uLiBCdXQgd2hhdCBpZiBoZSBmaW5kcyBzb21lIGV4Y3VzZVxubm90IHRvIHBheSBpdCBiYWNrP1xuXGZNQU46ICAgICAgICAgIEV4YWN0bHkuIEl0XHUyMDE5cyBpbGxlZ2FsIGZvciBsYW5kbG9yZHMgdG8gY29sbGVjdCBkYW1hZ2UgZGVwb3NpdHMgdGhhdCBhcmVcbm1vcmUgdGhhbiBoYWxmIGEgbW9udGhcdTIwMTlzIHJlbnQgaW4gdGhpcyBwcm92aW5jZS4gVGhlIGxhbmRsb3JkIHNob3VsZCBrbm93IHRoYXQuIEl0XG5zYXlzIHNvIHJpZ2h0IGluIHRoZSBsZWFzZSBhZ3JlZW1lbnQuIERpZCB5b3UgcmVhZCB0aGF0IHBhcnQgb2YgdGhlIGNvbnRyYWN0IGJlZm9yZVxueW91IHNpZ25lZCBpdD9cbldPTUFOOiBObyEgSGUgcnVzaGVkIHRocm91Z2ggYW5kIHR1cm5lZCB0aGF0IHBhZ2UgcmVhbGx5IGZhc3QsIHNvIEkgZGlkblx1MjAxOXRcbmV2ZW4gc2VlIHdoZXJlIGl0IHNhaWQgdGhhdCEgQnV0IGNhbiBJIGp1c3Qgbm90IHBheSB0aGUgcmVudCBmb3IgdGhlIGZpbmFsIG1vbnRoIG9mIHRoZVxubGVhc2U\/IFRoZSByZW50IGlzICQxLDAwMCBhIG1vbnRoLCBzbyBub3QgcGF5aW5nIGZvciB0aGUgbGFzdCBtb250aCB3b3VsZCBiZSB0aGVcbnNhbWUgYXMgaGltIHJlZnVuZGluZyBteSBkZXBvc2l0LCByaWdodD9cbk1BTjogICAgICAgICAgTW1tLCBJIHdvdWxkblx1MjAxOXQgcmVjb21tZW5kIHdpdGhob2xkaW5nIHJlbnQgbW9uZXkgYmVjYXVzZSB0aGVuXG55b3VyIGxhbmRsb3JkIG1pZ2h0IGNvbWUgYWZ0ZXIgeW91IGZvciBub25wYXltZW50LiBXaGF0IHlvdSBzaG91bGQgZG8gaXMgd3JpdGUgYVxubGV0dGVyIHRvIHlvdXIgbGFuZGxvcmQgcmVxdWVzdGluZyB0aGF0IGhhbGYgb2YgdGhlIGRlcG9zaXQgYmUgcmV0dXJuZWQgdG8geW91LlxuV09NQU46IEFoLCBzbyBpdFx1MjAxOXMgYmV0dGVyIHRvIGJlIG9uIHRoZSBvZmZlbnNpdmU\/XG5NQU46ICAgICAgICAgIFJpZ2h0LiBJXHUyMDE5bGwgZGljdGF0ZSBhIGxldHRlciBmb3IgeW91IHRvIHR5cGUgYW5kIHNpZ24uIFRoZSBsZXR0ZXIgd2FybnMgdGhlXG5sYW5kbG9yZCB0aGF0IHRoZSBtb25leSB3YXMgY29sbGVjdGVkIGlsbGVnYWxseSBhbmQgZGVtYW5kcyB0aGF0IGlmIGhlIGRvZXNuXHUyMDE5dFxucmVwYXkgaXQgdG8geW91IGluIHRlbiBkYXlzLCB5b3VcdTIwMTlsbCBhcHBlYWwgdG8gdGhlIFJlbnRhbCBCb2FyZCB0byByZWNvdmVyIHRoZSBtb25leS5cbkluIHRoYXQgY2FzZSwgdGhlcmVcdTIwMTlsbCBiZSBhIGhlYXJpbmcgaW4gY291cnQsIGFuZCB0aGUgZ292ZXJubWVudCB3aWxsIGNvbGxlY3QgdGhlXG5tb25leSBmb3IgeW91LlxuV09NQU46IERvIEkgaGF2ZSB0byBwYXkgYSBsYXd5ZXI\/XG5NQU46ICAgICAgICAgICBOb3QgbWVcdTIwMTRJIHZvbHVudGVlciBteSB0aW1lLiBZb3UgcGF5IHRoZSBSZW50YWwgQm9hcmQuIEl0IGNvc3RzICQ3MFxudG8gZmlsZSBhIGNsYWltXHUyMDE0aWYgdGhhdCBiZWNvbWVzIG5lY2Vzc2FyeS4gQnV0IHlvdVx1MjAxOWxsIGdldCB0aGF0IG1vbmV5IGJhY2suIFRoZVxubGFuZGxvcmQgd2lsbCBoYXZlIHRvIHBheSB5b3VyIGRlcG9zaXQsIHBsdXMgdGhlICQ3MCBhbmQgNiUgaW50ZXJlc3QuXG5XT01BTjogU291bmRzIGZhaXIuXG5NQU46ICAgICAgICAgIEp1c3QgYmUgc3VyZSB5b3Ugc2VuZCB0aGUgbGV0dGVyIGJ5IFJlZ2lzdGVyZWQgTWFpbC4gVGhhdCB3YXkgeW91IGNhblxudHJhY2sgdGhlIGRlbGl2ZXJ5IG9ubGluZSBhbmQga25vdyB3aGV0aGVyIG9yIG5vdCBoZSBhY3R1YWxseSByZWNlaXZlZCBpdC5cbldPTUFOOiBPa2F5LCBsZXRcdTIwMTlzIGdldCBzdGFydGVkLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjEyOCwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgZGlkIHRoZSB3b21hbiBnbyBzZWUgdGhlIG1hbj8iLCJvcHRpb25zIjpbInRvIHNpZ24gYSBuZXcgbGVhc2UiLCJ0byByZXBvcnQgYSBsYW5kbG9yZCBkaXNwdXRlIHRvIHBvbGljZSIsInRvIGdldCBsZWdhbCBhZHZpY2UgZm9yIHJlbnRlcnMiLCJ0byBmaW5kIGEgbmV3IGFwYXJ0bWVudCJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IHdhcyB0aGUgcHJvYmxlbSB3aXRoIHRoZSB3b21hbidzIGRhbWFnZSBkZXBvc2l0PyIsIm9wdGlvbnMiOlsiVGhlIGxhbmRsb3JkIHJlZnVzZWQgdG8gcmV0dXJuIGl0IGF0IGFsbC4iLCJUaGUgbGFuZGxvcmQgY29sbGVjdGVkIHRvbyBtdWNoIG1vbmV5LiIsIlRoZSBsYW5kbG9yZCBuZXZlciBjb2xsZWN0ZWQgb25lLiIsIlRoZSBsYW5kbG9yZCBsb3N0IHRoZSBwYXBlcndvcmsgZm9yIGl0LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBzYXkgdGhlIHdvbWFuIHNob3VsZCBkbyBhYm91dCBoZXIgcmVudD8iLCJvcHRpb25zIjpbInN0b3AgcGF5aW5nIGl0IGltbWVkaWF0ZWx5IiwiY29udGludWUgdG8gcGF5IGl0IiwicGF5IG9ubHkgaGFsZiBvZiBpdCIsImFzayBmb3IgYSByZW50IHJlZHVjdGlvbiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IHN0ZXAgd2lsbCB0aGUgd29tYW4gdGFrZSBuZXh0PyIsIm9wdGlvbnMiOlsiZmlsZSBhIGNsYWltIHdpdGggdGhlIFJlbnRhbCBCb2FyZCIsImhpcmUgYSBwcml2YXRlIGxhd3llciIsIndyaXRlIGEgZm9ybWFsIGxldHRlciB0byBoZXIgbGFuZGxvcmQiLCJtb3ZlIG91dCBvZiB0aGUgYXBhcnRtZW50Il0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgZG9lcyB0aGUgbWFuIGNoYXJnZSBmb3IgaGlzIHNlcnZpY2VzPyIsIm9wdGlvbnMiOlsiYSBmbGF0IGZlZSBvZiAkNzAiLCI2JSBpbnRlcmVzdCIsIm5vdGhpbmciLCJoYWxmIGEgbW9udGgncyByZW50Il0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IkhvdyBzaG91bGQgdGhlIHdvbWFuIG1ha2UgaGVyIHJlcXVlc3Q\/Iiwib3B0aW9ucyI6WyJpbiBwZXJzb24iLCJieSBtYWlsIiwiYnkgZW1haWwiLCJvdmVyIHRoZSBwaG9uZSJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCA1IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIG5ld3Mgc3RvcnkgYWJvdXQgYSByaW5nIHB1cmNoYXNlLiIsIkFmdGVyIHRoZSBuZXdzIGl0ZW0sIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJTZXZlbnRlZW4geWVhciBvbGQgU2hhdW5hIEJlcmdtYW4gbWFkZSBvdmVyICQxMDAwIHRoaXMgd2Vla2VuZCBiZWNhdXNlIG9mXG5oZXIgbG92ZSBvZiB0aHJpZnQgc3RvcmUgc2hvcHBpbmcuIEJlcmdtYW4gd2FzIGJyb3dzaW5nIHNlY29uZCBoYW5kIGpld2VscnkgYXRcbmhlciBsb2NhbCB0aHJpZnQgc3RvcmUgb24gRnJpZGF5IHdoZW4gc2hlIGZvdW5kIGZpdmUgc2lsdmVyIHJpbmdzIHdpdGggd2hhdCBsb29rZWRcbmxpa2UgZGlmZmVyZW50IHNoYXBlcyBvZiBwcmV0dHkgZ2xhc3Mgc2V0IG9uIHRoZSB0b3AuIFNoYXVuYSBib3VnaHQgdGhlIHNldCBmb3IgdGVuXG5kb2xsYXJzLCB0aGlua2luZyBzaGVcdTIwMTlkIGdpdmUgdGhlbSBhcyBnaWZ0cy4gV2hlbiBzaGUgcmV0dXJuZWQgaG9tZSwgaG93ZXZlciwgaGVyXG5tb3RoZXIgc3VnZ2VzdGVkIHRoZSBzdG9uZXMgbWlnaHQgbm90IGFjdHVhbGx5IGJlIGdsYXNzIGJ1dCBhbWJlci4gQW1iZXIgaXNcbmZvc3NpbGl6ZWQgcmVzaW4gZnJvbSB0cmVlcyB0aGF0IGFyZSBtaWxsaW9ucyBvZiB5ZWFycyBvbGQuIFNoYXVuYSBkaWQgc29tZSByZXNlYXJjaFxub24gaG93IHRvIHJlY29nbml6ZSBnZW51aW5lIGFtYmVyIGZyb20gZmFrZSBhbWJlci4gSWYgcmVhbCBhbWJlciBpcyBydWJiZWRcbnZpZ29yb3VzbHkgb24gZmFicmljLCBpdCBiZWNvbWVzIGVsZWN0cm9zdGF0aWNhbGx5IGNoYXJnZWQgYW5kIHdpbGwgdmlzaWJseSBhdHRyYWN0XG5kdXN0IHBhcnRpY2xlcy4gU2hhdW5hIGRpc2NvdmVyZWQgc2hlXHUyMDE5ZCBib3VnaHQgc2l4IHJlYWwgYW1iZXIgcmluZ3MuIEJlY2F1c2UgdGhlXG5hbWJlciBoYWQgYmVlbiBtZWx0ZWQgYW5kIHByZXNzZWQsIGl0IGxvb2tlZCBsaWtlIG1hbi1tYWRlIGdsYXNzLiBIb3dldmVyLCBhXG5sb2NhbCBqZXdlbGVyIGNvbmZpcm1lZCBoZXIgY29uY2x1c2lvbiwgYXBwcmFpc2VkIHRoZW0gdG8gYmUgYW1iZXIgYW5kIG9mZmVyZWRcbmhlciBhIGhhbmRzb21lIHByaWNlLiBTaGF1bmEgZGVjaWRlZCB0byB1c2UgdGhlIHByb2NlZWRzIHRvIGZpbmFuY2UgYSB0cmlwIHRvIFBlcnUuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NzMsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJTaGF1bmEiLCJvcHRpb25zIjpbImVuam95cyBzaG9wcGluZyBpbiBiYXJnYWluIHN0b3Jlcy4iLCJlbmpveXMgc2hvcHBpbmcgaW4gamV3ZWxyeSBzdG9yZXMuIiwid29ya3MgaW4gYSBqZXdlbHJ5IHN0b3JlLiIsIndvcmtzIGluIGEgYmFyZ2FpbiBzdG9yZS4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IlNoZSBsZWFybmVkIG9mIHRoZSByaW5ncycgcG9zc2libGUgdmFsdWUgZnJvbSIsIm9wdGlvbnMiOlsiYSBqZXdlbCBleHBlcnQuIiwiYW4gb25saW5lIG1hZ2F6aW5lLiIsImhlciBtb3RoZXIuIiwidGhlIGJhcmdhaW4gc3RvcmUuIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJTaGF1bmEgdGVzdGVkIGZvciBnZW51aW5lIGFtYmVyIGJ5Iiwib3B0aW9ucyI6WyJjb21wYXJpbmcgdGhlIHJpbmdzIHRvIHJlYWwgYW1iZXIuIiwibG9va2luZyBmb3IgZm9zc2lsIG1hcmtzIGluIHRoZSBhbWJlci4iLCJwb2xpc2hpbmcgdGhlIHJpbmdzIHRvIHJldmVhbCB0aGUgYW1iZXIuIiwicnViYmluZyB0aGUgYW1iZXIgdG8gYXR0cmFjdCBkdXN0LiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiT3RoZXJzIGRpZCBOT1Qga25vdyB0aGUgcmluZ3MnIHZhbHVlIGJlY2F1c2UiLCJvcHRpb25zIjpbInRoZSBhbWJlciBsb29rZWQgbGlrZSBwbGFpbiBnbGFzcy4iLCJ0aGUgYW1iZXIgd2FzIGFuIHVudXN1YWwgY29sb3VyLiIsInRoZSBwcmljZSBmb3IgdGhlIHJpbmdzIHdhcyB2ZXJ5IGxvdy4iLCJ0aGUgdGhyaWZ0IHN0b3JlIGRpZCBub3QgaGF2ZSBhIGpld2VsZXIuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJTaGF1bmEgZGVjaWRlZCB0byIsIm9wdGlvbnMiOlsiYXNrIGEgamV3ZWxlciB0byBoZWxwIGhlciBzZWxsIHRoZSByaW5ncy4iLCJnaXZlIHR3byBvZiB0aGUgcmluZ3MgdG8gaGVyIG1vdGhlci4iLCJrZWVwIHRoZSByaW5ncyBmb3IgdGhlIGZ1dHVyZS4iLCJzZWxsIHRoZSByaW5ncyBhbmQgdHJhdmVsIGFicm9hZC4iXSwia2V5Ijo0LCJyZWNvbiI6ZmFsc2V9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCA1IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCBhIGNvbnZlcnNhdGlvbiBhbW9uZyB0aHJlZSBlbXBsb3llZXMuIFR3byBtZW4gYW5kIG9uZSB3b21hbiBpbiBhIGNvZmZlZSBzaG9wLiBUaGV5IGFyZSBkaXNjdXNzaW5nIHNvbWV0aGluZyB0aGV5J3ZlIG5vdGljZWQgaW4gdGhlaXIgd29ya3BsYWNlLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGNvbnZlcnNhdGlvbiBhbW9uZyB0aHJlZSBlbXBsb3llZXMuIFR3byBtZW4gYW5kIG9uZSB3b21hblxuaW4gYSBjb2ZmZWUgc2hvcC4gVGhleSBhcmUgZGlzY3Vzc2luZyBzb21ldGhpbmcgdGhleSd2ZSBub3RpY2VkIGluIHRoZWlyIHdvcmtwbGFjZS5cblxuXG5OaWNrOiBIZXkgZ3V5cy4gVGhhbmtzIGZvciBjb21pbmcgZm9yIGNvZmZlZSB0aGlzIG1vcm5pbmcuXG5Sb246IE5vIHByb2JsZW0uIEl0J3MgYmVlbiBhIHdoaWxlIHNpbmNlIHdlIGdvdCB0b2dldGhlci4gV2Ugc2hvdWxkIGRvIHRoaXMgbW9yZVxub2Z0ZW4hXG5cZkNsYXVkaWE6ICAgICBZZWFoLiBJdFx1MjAxOXMgcmVhbGx5IG5pY2UgdG8gZ2V0IG91dCBvZiB0aGUgb2ZmaWNlIG9uY2UgaW4gYSB3aGlsZS4gV2Ugd29ya1xudG9vIGhhcmQgYW5kIGlnbm9yZSBvdXIgYnJlYWtzIVxuTmljazogVHJ1ZSBlbm91Z2guIEFjdHVhbGx5LCB0aGUgcmVhc29uIEkgZ290IHVzIGFsbCB0b2dldGhlciB3YXMgdGhlcmVcdTIwMTlzIHNvbWV0aGluZ1xuSSB3YW50ZWQgdG8gcnVuIGJ5IHRoZSB0d28gb2YgeW91LCBzb21ldGhpbmcgdGhhdCdzIGJlZW4gYm90aGVyaW5nIG1lLiBJdCBoYXMgdG8gZG9cbndpdGggaG93IGRldm90ZWQgd2UgYXJlIHRvIG91ciBqb2JzLlxuQ2xhdWRpYTogICAgIEhtbW0sIHlvdSd2ZSBnb3QgbWUgY3VyaW91cy4gQXJlIHlvdSBnb2luZyB0byBzdWdnZXN0IHRoYXQgd2UgZ2V0XG5yYWlzZXMgYmVjYXVzZSBvZiBvdXIgZGVkaWNhdGlvbj8gR29vZCBsdWNrIHdpdGggdGhhdCFcblJvbjogSGV5LCBzb21lIHBlb3BsZSBnb3QgcmFpc2VzIGxhc3QgeWVhciwganVzdCBub3QgZXZlcnlvbmUuIERpZG4ndCB5b3UgaGVhclxuYWJvdXQgdGhhdD9cbk5pY2s6IFllYWgsIHRoaXMgaXMgYWN0dWFsbHkgYWxsIGNvbm5lY3RlZCB0byB3aGF0IEkgd2FudGVkIHRvIHRhbGsgdG8geW91IGd1eXNcbmFib3V0LiBJJ3ZlIGJlZW4gbm90aWNpbmcgYSBsb3Qgb2YgZmF2b3VyaXRpc20gbGF0ZWx5LlxuQ2xhdWRpYTogICAgIEkgYWdyZWUuIEp1c3QgbGFzdCB3ZWVrIHRoZSBib3NzIGhhbmQtcGlja2VkIHR3byBvZiBoZXIgZmF2b3VyaXRlcyB0b1xuZ28gdG8gdGhlIHByb2dyYW1taW5nIGNvbmZlcmVuY2UgaW4gTW9udHJlYWwuIFRoZSBzYW1lIHR3byB3ZW50IGxhc3QgeWVhciEgSVxubWVhbiwgd2hhdCBhYm91dCB0aGUgcmVzdCBvZiB1cz8gSVx1MjAxOW0gbW9yZSBxdWFsaWZpZWQ7IEkgZXZlbiBhc2tlZCBpZiBJIGNvdWxkIHBheSBteVxub3duIGNvbmZlcmVuY2UgZmVlcywgYW5kIGp1c3QgZ2V0IHBhaWQgZm9yIHR3byBkYXlzXHUyMDE5IHdvcmsuIFNoZSBzdGlsbCByZWZ1c2VkLlxuUm9uOiBXZWxsLCB3ZSBjYWxsIGl0IGZhdm91cml0aXNtIGJ1dCwgYWNjb3JkaW5nIHRvIGNvbXBhbnkgcG9saWN5LCBpdFx1MjAxOXMgcGVyZmVjdGx5XG5sZWdhbC4gTWFuYWdlcnMgY2FuIHNlbGVjdCBhbnlvbmUgdGhleSB3YW50IGZvciBhbnkgcHJvamVjdCwgZXZlbiBpZiB0aGVyZVx1MjAxOXMgZXh0cmFcbnBheSBvciBiZW5lZml0cywgYXMgbG9uZyBhcyB0aGUgbGVuZ3RoIGlzIG5vdCBtb3JlIHRoYW4gc2l4IG1vbnRocy4gQW5kIG1hbmFnZXJzXG5jYW4gcGljayB0aGUgc2FtZSBwZXJzb24gZXZlcnkgdGltZS5cbk5pY2s6IEJ1dCB0aGlzIHBvbGljeSBmb3N0ZXJzIGZhdm91cml0aXNtISBJIG1lYW4sIHRoZSBtYW5hZ2VycyBoYXZlIG5vXG5hY2NvdW50YWJpbGl0eSBmb3IgdGhlIGRlY2lzaW9ucyB0aGV5IG1ha2UsIGFuZCB0aGUgZGVjaXNpb25zIHJhcmVseSByZWZsZWN0IHRoZVxucXVhbGl0eSBvZiB3b3JrLiBJIGhhZCB0byBkbyBzb21lIHJldmlzaW9ucyBmb3Igb25lIG9mIHRoZSBmYXZvdXJpdGVzIGp1c3QgbGFzdCB3ZWVrXG5ldmVuIHRob3VnaCBJIHdhcyBjb21wbGV0ZWx5IGJ1c3kgd2l0aCBteSBvd24gd29ya1x1MjAxNEkgZGlkblx1MjAxOXQgZ2V0IGFueSBleHRyYSBwYXkuXG5IZXIgd29yayB3YXMgdGVycmlibGUuIE1heWJlIHdlIHNob3VsZCBzdGFydCBhIHdvcmtlcnNcdTIwMTkgdW5pb24uXG5DbGF1ZGlhOiAgICAgV2VsbCwgSSBkb25cdTIwMTl0IHRoaW5rIGEgdW5pb24gaXMgdGhlIHNvbHV0aW9uLiBJIG1lYW4sIGl0IG1heSByZWR1Y2VcbmZhdm91cml0aXNtLCBidXQgaXQgY2FuIHByb2R1Y2UgYSB3aG9sZSBvdGhlciBzZXQgb2YgcHJvYmxlbXMuIEkgdGhpbmsgb3VyXG5jb21tdW5pY2F0aW9uIHdpdGggbWFuYWdlbWVudCBpcyBwcmV0dHkgZ29vZCBvdmVyYWxsLlxuUm9uOiBZZWFoLiBJIHRvb2sgYSByaXNrIGFuZCB0YWxrZWQgdG8gdGhlIEhSIG1hbmFnZXIgXHUyMDE0aGUgc2FpZCBldmVyeXRoaW5nIGlzXG5sZWdhbCwgYW5kIHRoYXQgbWFuYWdlcnMgd291bGQgbWFrZSB0aGUgYmVzdCBjaG9pY2UuXG5OaWNrOiBTbyBJIGd1ZXNzIHdlIGp1c3QgaGF2ZSB0byBkZWFsIHdpdGggZmF2b3VyaXRpc20gdGhlbj8gSSBtZWFuLCB3ZSBtaWdodCBhc1xud2VsbCBqdXN0IGZvY3VzIG91ciBwYXNzaW9uIGFuZCBlbnRodXNpYXNtIG91dHNpZGUgdGhlIHdvcmtwbGFjZS4gV2UgY2FuIGNvbGxlY3Rcbm91ciBzYWxhcnkgYW5kIHB1dCBvdXIgaGVhcnQgYW5kIHNvdWxzIGludG8gc29tZXRoaW5nIGVsc2UuXG5cZkNsYXVkaWE6ICAgIEFjdHVhbGx5LCB0aGF0XHUyMDE5cyB3aGF0IEkgZG8uIEkgdHV0b3Iga2lkcyB0aGF0IGhhdmUgZGlmZmljdWx0eSByZWFkaW5nIGF0XG5teSBzb25cdTIwMTlzIHNjaG9vbC4gSXRcdTIwMTlzIHJlYWxseSByZXdhcmRpbmcuIE1heWJlIHdlIGNvdWxkIGZyZWVsYW5jZSwgdG9vLCBhZGQgYSBsaXR0bGVcbm1vbmV5IHRvIHRoYXQgc2F0aXNmYWN0aW9uLlxuUm9uOiBTbyBJIGd1ZXNzIGl0XHUyMDE5cyBkZWNpZGVkIHRoZW4uIFRvIGNvcGUgd2l0aCBhbGwgdGhpcyBmYXZvdXJpdGlzbSwgd2UgYXJlIGdvaW5nXG50byBmb2N1cyBvdXIgZW5lcmd5IG91dHNpZGUgdGhlIHdvcmtwbGFjZS4gSSBtZWFuLCBpdFx1MjAxOXMgYSBzYWQgc29sdXRpb24sIGJ1dCBJIGd1ZXNzXG5pdFx1MjAxOXMgZ29pbmcgdG8gYmUgdGhlIHNhZmVzdCBvbmUuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiRGlzY3Vzc2lvbiAodmlkZW8pIiwibWVkaWFUeXBlIjoidmlkZW8iLCJkdXJhdGlvbiI6MTcxLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6IldhdGNoIHRoZSBkaXNjdXNzaW9uLiBZb3Ugd2lsbCB3YXRjaCBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDEuNSB0byAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJQcmltYXJpbHksIHdoYXQgZGlkIHRoZSBjby13b3JrZXJzIG1lZXQgdG8gZGlzY3Vzcz8iLCJvcHRpb25zIjpbIndoYXQgdG8gZG8gYWJvdXQgYW4gdW5mYWlyIHNhbGFyeSBzY2FsZSIsIndoYXQgc3VnZ2VzdGlvbnMgdG8gYnJpbmcgdG8gSFIgbWFuYWdlbWVudCIsImhvdyB0byByZXNwb25kIHRvIGFuIHVucG9wdWxhciBwb2xpY3kiLCJob3cgdG8gYmFsYW5jZSB3b3JrIHdpdGggb3V0c2lkZSBpbnRlcmVzdHMiXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IkFjY29yZGluZyB0byB0aGUgd29ya2VycywgaG93IGRpZCB0aGUgbWFuYWdlcnMgc2hvdyBmYXZvdXJpdGlzbT8iLCJvcHRpb25zIjpbImhpcmluZyB3aGF0ZXZlciBwZXJzb25hbGl0eSB0aGV5IGxpa2VkIHRoZSBiZXN0IiwicHJvdmlkaW5nIG1vcmUgcGFpZCB2YWNhdGlvbiBkYXlzIHRvIHNvbWUgZW1wbG95ZWVzIiwiZ3JhbnRpbmcgbG9uZ2VyIGJyZWFrcyBmb3Igc29tZSBlbXBsb3llZXMiLCJjaG9vc2luZyB3aGljaCB3b3JrZXJzIHdvdWxkIGdldCBhIHJhaXNlIGluIHNhbGFyeSJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiV2hhdCB3YXMgSFIncyBvcGluaW9uIG9uIHRoZSBtYXR0ZXIgYmVpbmcgZGlzY3Vzc2VkPyIsIm9wdGlvbnMiOlsiTWFuYWdlcnMgYXJlIHNraWxsZWQgYXQgY2hvb3NpbmcgdGhlIGJlc3QgcGVyc29uLiIsIlRoZSB3b3JrZXJzIHNob3VsZCBjb25zdWx0IHRoZSBsZWdhbCBkZXBhcnRtZW50LiIsIk1vc3QgZW1wbG95ZWVzIGFyZSBidXN5IHdpdGggdGhlaXIgb3duIHdvcmsuIiwiVGhlIHF1YWxpdHkgb2YgdGhlIHJlc3VsdCBpcyBnb29kIG9uIG1vc3QgcHJvamVjdHMuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaHkgd2FzIHRoZSB3b21hbiwgQ2xhdWRpYSwgdW5hYmxlIHRvIGF0dGVuZCB0aGUgY29uZmVyZW5jZT8iLCJvcHRpb25zIjpbIlRoZSBtYW5hZ2VyIGhhZCBmdW5kaW5nIGZvciBvbmx5IHR3byBkZWxlZ2F0ZXMuIiwiVGhlIG1hbmFnZXIgc2FpZCBzaGUgd2FzIG5vdCBxdWFsaWZpZWQuIiwiU2hlIGRvZXNuJ3QgaGF2ZSBmcmVlIHRpbWUgZnJvbSB3b3JrLiIsIlNoZSBpc24ndCBvbmUgb2YgdGhlIG1hbmFnZXIncyBmYXZvdXJpdGVzLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBkbyB0aGVzZSB0aHJlZSBlbXBsb3llZXMgd2FudCBmcm9tIHRoZWlyIGpvYnM\/Iiwib3B0aW9ucyI6WyJjb25zdWx0YXRpb24gb24gY29ycG9yYXRlIHBvbGljeSByZXZpc2lvbnMiLCJwcm9tb3Rpb24gdG8gcG9zaXRpb25zIHBheWluZyBoaWdoZXIgd2FnZXMiLCJyZWNvZ25pdGlvbiBmb3IgcHJvZHVjaW5nIHF1YWxpdHkgcmVzdWx0cyIsInNlbGVjdGlvbiBmb3IgZnJlZSBza2lsbHMgdHJhaW5pbmcgcHJvZ3JhbXMiXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IkhvdyBkb2VzIHRoZSBkaXNjdXNzaW9uIGVuZD8iLCJvcHRpb25zIjpbIlRoZXkgZGVjaWRlIHRvIHdvcmsgaGFyZGVyIGF0IHRoZWlyIGpvYnMuIiwiVGhleSBwbGFuIHRvIGNvbXBsYWluIHRvIEhSIHRvZ2V0aGVyLiIsIlRoZXkgcmVhbGl6ZSB0aGV5IGNhbid0IGNoYW5nZSB0aGUgcG9saWN5LiIsIlRoZXkgd2lsbCBpbmZvcm0gb3RoZXJzIGFib3V0IGZhdm91cml0aXNtLiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjo3LCJzdGVtIjoiV2h5IGRvZXMgQ2xhdWRpYSBoZWxwIG91dCBhdCBoZXIgc29uJ3Mgc2Nob29sPyIsIm9wdGlvbnMiOlsiSGVyIHNvbiBoYXMgbGVhcm5pbmcgZGlmZmljdWx0aWVzLiIsIlNoZSBmZWVscyBnb29kIGFib3V0IGhlbHBpbmcgb3V0LiIsIlNoZSBoYXMgbG90cyBvZiBmcmVlIHRpbWUuIiwiVGhlIHNjaG9vbCBhc2tlZCBoZXIgdG8gdm9sdW50ZWVyLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo4LCJzdGVtIjoiV2hhdCB3aWxsIHRoZXNlIGVtcGxveWVlcyBwcm9iYWJseSBkbyBhZnRlciB0aGlzIG1lZXRpbmc\/Iiwib3B0aW9ucyI6WyJhc2sgZm9yIGEgcmVhc29uYWJsZSBwcm9tb3Rpb24gYW5kIHdhZ2UgaW5jcmVhc2UiLCJkaXN0cmFjdCB0aGVtc2VsdmVzIHdpdGggYWN0aXZpdGllcyBlbHNld2hlcmUiLCJyZXNlYXJjaCBjdXJyZW50IGxhd3MgcmVnYXJkaW5nIG9yZ2FuaXplZCBsYWJvdXIiLCJzZWVrIG1vcmUgcmV3YXJkaW5nIHdvcmsgd2l0aCBhIGJldHRlciBjb21wYW55Il0sImtleSI6MiwicmVjb24iOmZhbHNlfV19XX0seyJuYW1lIjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJoZWFkZXJUaXRsZSI6IlNldCA1IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCBhIGN1cnJlbnQgaXNzdWUgaW4gQ2FuYWRpYW4gdW5pdmVyc2l0aWVzLiIsIkFmdGVyIHRoZSByZXBvcnQsIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJUaGUgaHVtYW5pdGllcyBhcmUgYSBncm91cCBvZiBhY2FkZW1pYyBkaXNjaXBsaW5lcyB0aGF0IGZvY3VzIG9uIGh1bWFuIGN1bHR1cmUsXG5pbmNsdWRpbmcgc3ViamVjdHMgbGlrZSBsaXRlcmF0dXJlLCBoaXN0b3J5LCBhbmQgcGhpbG9zb3BoeS4gQSByZWNlbnQgU3RhdGlzdGljc1xuQ2FuYWRhIHJlcG9ydCBpbmRpY2F0ZXMgdGhhdCAzMCUgb2YgdW5pdmVyc2l0eSBncmFkdWF0ZXMgd2l0aCBhIGh1bWFuaXRpZXMgZGVncmVlXG5hcmUgb3ZlcnF1YWxpZmllZCBmb3IgdGhlIGpvYnMgdGhleSBob2xkLiBNYW55IGRvbid0IGV2ZW4gaGF2ZSBqb2JzLiBEb2VzIHRoaXNcbm1lYW4gdGhhdCBzdHVkZW50cyBzaG91bGRuXHUyMDE5dCBzdHVkeSB0aGUgaHVtYW5pdGllc1x1MjAxNGFuZCB1bml2ZXJzaXRpZXMgc2hvdWxkbid0XG5ib3RoZXIgb2ZmZXJpbmcgaHVtYW5pdGllcyBkZWdyZWVzP1xuXG5cbklmIHRoZSBwdXJwb3NlIG9mIHVuaXZlcnNpdGllcyBpcyB0byBwcm92aWRlIGNhcmVlciB0cmFpbmluZywgdGhlbiBhdCBhIGdsYW5jZSB0aGVcbmZ1dHVyZSBsb29rcyBncmltIGZvciB0aGUgaHVtYW5pdGllcy4gQWZ0ZXIgYWxsLCB1bml2ZXJzaXR5IGlzIGV4cGVuc2l2ZS4gTWFueVxuc3R1ZGVudHNcdTIwMTRhbG9uZyB3aXRoIHRoZWlyIHR1aXRpb24tZmVlLXBheWluZyBwYXJlbnRzXHUyMDE0ZXhwZWN0IHRvIGV2ZW50dWFsbHkgcmVjZWl2ZVxuYSByZWFzb25hYmxlIHJldHVybiBvbiB0aGVpciBpbnZlc3RtZW50LiBTdWNoIHN0dWRlbnRzIHNob3VsZCBwcm9iYWJseSBzdHVkeVxuYWNjb3VudGluZyBhbmQgZW5naW5lZXJpbmcgaW5zdGVhZCBvZiBsaXRlcmF0dXJlIGFuZCBwaGlsb3NvcGh5LiBCdXQgdGhpcyByYWlzZXMgdGhlXG5xdWVzdGlvbiwgXCJXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHVuaXZlcnNpdHk\/XCJcblxuXG5NYW55IHdvdWxkIGFyZ3VlIHRoYXQgdW5pdmVyc2l0aWVzIGV4aXN0IGluIG9yZGVyIHRvIHByb3ZpZGUgYSBicm9hZCBlZHVjYXRpb24sIG5vdFxuam9iIHRyYWluaW5nLiBUaGF0IGVkdWNhdGlvbiwgdGhleSdkIGFyZ3VlLCBzaG91bGQgaW5jbHVkZSB0aGUgaHVtYW5pdGllcy5cblRyYWRpdGlvbmFsbHksIHRoZSBodW1hbml0aWVzIGhlbHAgcHJvZHVjZSBhIGNpdGl6ZW5yeSB0aGF0IGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuXG5mYWN0IGFuZCBwcm9wYWdhbmRhLCBhIGNpdGl6ZW5yeSBub3Qgc3VzY2VwdGlibGUgdG8gdGhlIG1hbmlwdWxhdGl2ZSByaGV0b3JpYyBvZlxucG90ZW50aWFsIGRlbWFnb2d1ZXMuIEhvd2V2ZXIsIG5vdCBldmVyeW9uZSBjb25zaWRlcnMgdGhpcyBvdXRjb21lIGRlc2lyYWJsZVx1MjAxNFxuYmVjYXVzZSBzdWNoIGEgcG9wdWxhY2UgaXMgY29nbml0aXZlbHkgd2VsbC1lcXVpcHBlZCB0byBxdWVzdGlvbiB0aGUgZGlzdHJpYnV0aW9uXG5vZiBwb3dlciBhbmQgaGVuY2UgcG90ZW50aWFsbHkgZGlzcnVwdCB0aGUgc3RhdHVzIHF1by5cblxmRXZlbiBpZiBpdCBpcyB0aGUgcHVycG9zZSBvZiB0aGUgdW5pdmVyc2l0eSB0byBtYWtlIHN0dWRlbnRzIGpvYi1yZWFkeSwgaXQgYXBwZWFyc1xudGhhdCBlbXBsb3llcnMgc3RpbGwgd2FudCB0aGVpciB3b3JrZXJzIHRvIGhhdmUgZ29vZCBjcml0aWNhbCB0aGlua2luZyBza2lsbHMuIFRoZXNlXG5za2lsbHMgYXJlIGxlYXJuZWQgaW4gdGhlIGh1bWFuaXRpZXMuIE1vc3QgcGhpbG9zb3BoeSBkZXBhcnRtZW50cywgZm9yIGV4YW1wbGUsXG5vZmZlciBhIGNvdXJzZSBpbiBjcml0aWNhbCB0aGlua2luZyBza2lsbHMuIFRoZXkgYWxzbyB0ZWFjaCBldGhpY3MsIGEgYnJhbmNoIG9mXG5waGlsb3NvcGh5IHRoYXQgZW5hYmxlcyBwZW9wbGUgdG8gbWFrZSByZWFzb25lZCBkZWNpc2lvbnMgYWJvdXQgcmlnaHQgYW5kIHdyb25nLlxuXG5cbkFuZCB5ZXQsIGhvdyBvZnRlbiBkbyB3ZSBzZWUgYW4gZW50cnktbGV2ZWwgam9iIGFkIG1lbnRpb25pbmcgYSBwaGlsb3NvcGh5XG5jb3Vyc2UgYXMgYSByZXF1aXJlbWVudD8gU3RpbGwsIHdoZW4gc3VydmV5ZWQsIHRvZGF5XHUyMDE5cyBlbXBsb3llcnMgc2F5IHRoZXkgd2FudFxubmV3IGhpcmVzIHRvIGhhdmUgY3JpdGljYWwgdGhpbmtpbmcgc2tpbGxzLiBIb3dldmVyLCBlbnRyeS1sZXZlbCB3b3JrZXJzIHNheSB0aGF0XG50aGVpciBlbXBsb3llcnMgd2FudCB0aGVtIHRvIHRoaW5rIGNyaXRpY2FsbHkgb25seSBhYm91dCBjZXJ0YWluIHRoaW5ncy4gQ3JpdGljYWxcbnRoaW5raW5nIGFib3V0IGNvc3QtY3V0dGluZz8gUHJvYmFibHkuIENyaXRpY2FsIHRoaW5raW5nIGFib3V0IHBvbGljaWVzIGFuZFxucHJvY2VkdXJlcz8gUHJvYmFibHkgbm90LiBBbmQgYXMgZm9yIGV0aGljc1x1MjAxNHdvcmtlcnMgcmVwb3J0IHRoYXQgdGhlaXIgZW1wbG95ZXJzXG53YW50IGNvbXBsaWFuY2Ugd2l0aCB0aGUgY29tcGFueVx1MjAxOXMgY29kZSBvZiBldGhpY3MuXG5cblxuRW1wbG95ZXJzIHNlZW0gdG8gd2FudCBpdCBib3RoIHdheXM6IHdvcmtlcnMgd2hvIGFyZSBqb2IgcmVhZHkgYW5kIHdobyB0aGlua1xuY3JpdGljYWxseTsgd29ya2VycyB3aG8gdGhpbmsgY3JpdGljYWxseSBhYm91dCBzb21lIHRoaW5ncyBidXQgbm90IGFsbCB0aGluZ3MuIEl0XG5zZWVtcyBlbXBsb3llcnMgd2FudCB0byBoYXZlIHRoZWlyIGNha2UgYW5kIGVhdCBpdCwgdG9vXHUyMDE0d2hpY2ggaXMsIHRvIG1hbnkgY3JpdGljYWxcbnRoaW5rZXJzLCBhIGxvZ2ljYWwgaW1wb3NzaWJpbGl0eS4gUGVyaGFwcyBpbiB0aGUgZW5kIGl0IGlzIHRoZSBlbXBsb3llcnMgd2hvIG5lZWRcbnRoZSBodW1hbml0aWVzIGNvdXJzZXMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiUmVwb3J0IiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTY4LCJ0aW1lTWludXRlcyI6NCwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIHJlcG9ydC4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDMgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRoZSBwcmVzZW50YXRpb24gaXMgbWFpbmx5IGFib3V0IHRoZSIsIm9wdGlvbnMiOlsiY29zdCBvZiBnZXR0aW5nIGFuIGVkdWNhdGlvbi4iLCJ2YWx1ZSBvZiB0aGUgaHVtYW5pdGllcy4iLCJuYXR1cmUgb2YgY2FyZWVyIHRyYWluaW5nLiIsInBvcHVsYXJpdHkgb2YgYSB1bml2ZXJzaXR5IGVkdWNhdGlvbi4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IlRoZSBwcmVzZW50YXRpb24gaW1wbGllcyB0aGF0IGFjY291bnRpbmcgYW5kIGVuZ2luZWVyaW5nIHN0dWRlbnRzIiwib3B0aW9ucyI6WyJhcmUgbGlrZWx5IHRvIGZpbmQgZW1wbG95bWVudCBpbiB0aGVpciBmaWVsZHMuIiwiaGF2ZSBoYXJkZXIgY291cnNlcyB0aGFuIGh1bWFuaXRpZXMgc3R1ZGVudHMuIiwiYXJlIHN1cnByaXNpbmdseSBvdmVycXVhbGlmaWVkIGZvciB0aGVpciBmaXJzdCBqb2JzLiIsInBheSBoaWdoZXIgdHVpdGlvbiBmZWVzIHRoYW4gaHVtYW5pdGllcyBzdHVkZW50cy4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6Ikl0IGlzIGltcGxpZWQgdGhhdCBodW1hbml0aWVzIGdyYWR1YXRlcyIsIm9wdGlvbnMiOlsiYXJlIGFjdHVhbGx5IG1vcmUgam9iLXJlYWR5IHRoYW4gY2FyZWVyLXByb2dyYW0gZ3JhZHMuIiwiaGVscCB0aGVpciBlbXBsb3llcnMgdG8gYmVjb21lIG1vcmUgcHJvZml0YWJsZS4iLCJhcmUgbW9yZSByZWxpYWJsZSB0aGFuIGNhcmVlci1wcm9ncmFtIGdyYWR1YXRlcy4iLCJoZWxwIHRvIHVwaG9sZCBtb2Rlcm4gZGVtb2NyYXRpYyBzb2NpZXRpZXMuIl0sImtleSI6NCwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJUaGUgYXV0aG9yIHNlZW1zIHRvIGFncmVlIHRoYXQgZW1wbG95ZXJzIGFyZSBsb29raW5nIGZvciIsIm9wdGlvbnMiOlsiYSBicm9hZGVyIHJhbmdlIG9mIGNyaXRpY2FsLXRoaW5raW5nIHNraWxscy4iLCJlbXBsb3llZXMgd2hvIHJlc3BlY3QgaGllcmFyY2h5LiIsImEgbmV3IGNvZGUgb2YgZXRoaWNzIGZvciB0aGUgd29ya3BsYWNlLiIsIndvcmtlcnMgd2hvIHBhc3NpdmVseSBhY2NlcHQgcG9saWNpZXMuIl0sImtleSI6NCwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJBY2NvcmRpbmcgdG8gdGhlIHByZXNlbnRhdGlvbiwgaHVtYW5pdGllcyBjb3Vyc2VzIiwib3B0aW9ucyI6WyJhcmUgaW5jcmVhc2luZ2x5IHJlbGV2YW50IGluIHRoZSBtb2Rlcm4gd29ya3BsYWNlLiIsImxlYWQgdG8gaGF2aW5nIHNvbWUgb2YgdGhlIHNraWxscyBlbXBsb3llcnMgd2FudC4iLCJhcmUgcmVxdWlyZWQgaW4gbWFueSB1bml2ZXJzaXR5IGNhcmVlciBwcm9ncmFtcy4iLCJsZWFkIHRvIGpvYnMgdGhhdCBwYXkgb25seSB0aGUgbWluaW11bSB3YWdlLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo2LCJzdGVtIjoiVGhlIGF1dGhvciB3b3VsZCBsaWtlbHkgc3VwcG9ydCIsIm9wdGlvbnMiOlsiYXR0ZW5kaW5nIHRyYWRlIHNjaG9vbCByYXRoZXIgdGhhbiB1bml2ZXJzaXR5LiIsImVsaW1pbmF0aW5nIHNvbWUgdW5pdmVyc2l0eSBodW1hbml0aWVzIGNvdXJzZXMuIiwiaW5jbHVkaW5nIGNyaXRpY2FsLXRoaW5raW5nIHNraWxscyBhY3Jvc3MgYWxsIHN1YmplY3RzLiIsImdpdmluZyBzdHVkZW50IGxvYW5zIG9ubHkgdG8gY2FyZWVyLXByb2dyYW0gc3R1ZGVudHMuIl0sImtleSI6MywicmVjb24iOmZhbHNlfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAyIFRlc3QgMSBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 5 Practice Test 2: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6116","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6116"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6116\/revisions"}],"predecessor-version":[{"id":6600,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6116\/revisions\/6600"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}