{"id":6007,"date":"2026-07-06T00:58:43","date_gmt":"2026-07-06T00:58:43","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-2-test-1-listening\/"},"modified":"2026-07-12T03:25:22","modified_gmt":"2026-07-12T03:25:22","slug":"celpip-set-2-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-2-test-1-listening\/","title":{"rendered":"CELPIP Set 2 \u2013 Practice Test 1 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 2 &#183; Practice Test 1<\/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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0MS1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0MS1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0MS1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMydDEtcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMnQxLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczJ0MS1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMydDEtcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjoyLCJ0ZXN0Tm8iOjEsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgd29tYW4gYW5kIGEgbWFuIGF0IGEgdmV0ZXJpbmFyeSBjbGluaWMuIFRoZSB3b21hbiBpcyBhIHZldGVyaW5hcmlhbiwgYW5kIHRoZSBtYW4gaXMgYSBwZXQgb3duZXIuIEl0IHBsYXlzIGluIHRocmVlIHNlY3Rpb25zLCBhbmQgZWFjaCBzZWN0aW9uIHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciBlYWNoIHNlY3Rpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSB3b21hbiBhbmQgYSBtYW4gYXQgYSB2ZXRlcmluYXJ5IGNsaW5pYy4gVGhlXG53b21hbiBpcyBhIHZldGVyaW5hcmlhbiwgYW5kIHRoZSBtYW4gaXMgYSBwZXQgb3duZXIuXG5cblNlY3Rpb24gMTpcbk1BTjogSGksIERyLiBBbmRlcnNvbi4gVGhpcyBpcyBteSBjYXQsIFRpZ2VyLiBUaWdlciwgbWVldCBEci4gQW5kZXJzb24uXG5XT01BTjogICAgICAgIEhlbGxvLCBUaWdlci4gQXJlblx1MjAxOXQgeW91IGEgbG92ZWx5IGNhdC5cbk1BTjogSVx1MjAxOW0gcmVhbGx5IHdvcnJpZWQgYWJvdXQgaGVyLiBTaGVcdTIwMTlzIHVzdWFsbHkgc28gcGxheWZ1bCwgYnV0IHRoaXMgcGFzdCB3ZWVrIGFsbCBzaGVcdTIwMTlzXG5iZWVuIGRvaW5nIGlzIHNjcmF0Y2hpbmcgaGVyc2VsZi4gSGVyIGNsYXdzIGFyZSBzaGFycCwgYW5kIHNoZVx1MjAxOXMgaHVydGluZyBoZXJzZWxmLiBMb29rLFxuaGVyZS5cbldPTUFOOiAgICAgICAgSSBzZWUgd2hhdCB5b3UgbWVhbi4gSXMgVGlnZXIgYW4gaW5kb29yIG9yIGFuIG91dGRvb3IgY2F0P1xuTUFOOiBNb3N0bHkgb3V0ZG9vcnMuIEkgbGV0IGhlciBzdGF5IG91dHNpZGUgYXQgbmlnaHQuXG5XT01BTjogVGhlc2UgbWFya3MgbG9vayBsaWtlIGZsZWEgYml0ZXMuIElmIFRpZ2VyXHUyMDE5cyBnb2luZyBvdXRkb29ycywgaXRcdTIwMTlzIGFsbW9zdFxuY2VydGFpbiB0aGF0IHNoZVx1MjAxOXMgcGlja2VkIHVwIGZsZWFzLiBJXHUyMDE5bGwgZ2l2ZSB5b3Ugc29tZSBtZWRpY2F0aW9uIHRvIGtpbGwgdGhlbS4gQXBwbHkgaXQgdG9cbmhlciBza2luXHUyMDE0cmlnaHQgaGVyZVx1MjAxNG9uY2UgYSBtb250aCBmb3IgdGhyZWUgbW9udGhzLlxuTUFOOiBPa2F5LiBXaWxsIHRoZSBmbGVhcyBnZXQgaW50byBteSBob3VzZT9cbldPTUFOOiBXZWxsIC4gLiAuIGZsZWFzIG9ubHkgbGl2ZSBvbiBhbmltYWxzLiBBZnRlciBUaWdlciByZWNlaXZlcyB0aGUgbWVkaWNhdGlvbixcbnRoZXkgY2FuXHUyMDE5dCBsaXZlIG9uIGhlciBhbnltb3JlLCBzbyB0aGV5XHUyMDE5bGwgZGllLiBCdXQgeW91IHNob3VsZCB2YWN1dW0gYW5kIGNsZWFuIGV2ZXJ5XG5kYXkgdG8gZ2V0IHJpZCBvZiBhbnkgZmxlYSBlZ2dzLiBJZiBuZWVkIGJlLCBJIGNhbiBhbHdheXMgZ2l2ZSB5b3UgYSBwcm9kdWN0IHRvIGFwcGx5IHRvXG55b3VyIHJ1Z3MgYW5kIGZ1cm5pdHVyZS5cblNlY3Rpb24gMjpcbk1BTjogV2VcdTIwMTlyZSBiYWNrISBTbyBJIHVzZWQgdGhlIG1lZGljYXRpb24sIGJ1dCBUaWdlclx1MjAxOXMgc3RpbGwgYmVlbiBzY3JhdGNoaW5nIGEgbG90IHNpbmNlXG5oZXIgbGFzdCBhcHBvaW50bWVudC4gQXQgZmlyc3QsIHNoZSBzdGFydGVkIGdldHRpbmcgYmV0dGVyLCBidXQgbm93IHNoZVx1MjAxOXMgZ2V0dGluZyB3b3JzZS5cblxmV09NQU46IEhtbS4gW1BhdXNlXSBPb2ggLiAuIC4geWVzLCBJIHNlZSB3aGF0IHlvdSBtZWFuLiBUaGF0IG11c3QgaHVydC4gRGlkIHlvdVxuZ2l2ZSBoZXIgdGhlIG1lZGljYXRpb24gb25jZSBhIG1vbnRoLCBmb3IgdGhyZWUgbW9udGhzP1xuTUFOOiBZZXMgLiAuIC4gW1BhdXNlXSBXZWxsIC4gLiAuIG9rYXksIG1heWJlIEkgbWlzc2VkIHRoZSBsYXN0IGRvc2UuIEl0IGp1c3Qgc2xpcHBlZCBteVxubWluZC4gQW5kIEkgZ3Vlc3MgSSBvbmx5IGdvdCBhcm91bmQgdG8gdmFjdXVtaW5nIG9uY2UuXG5XT01BTjogWW91IHJlYWxseSBoYXZlIHRvIGdpdmUgaGVyIHRocmVlIGRvc2VzIG9mIHRoZSBtZWRpY2F0aW9uIG92ZXIgdGhyZWUgbW9udGhzXG4uIC4gLiBhbmQgeW91IG5lZWQgdG8gdmFjdXVtIGV2ZXJ5IGRheS4gSGVyZSBhcmUgYW5vdGhlciB0aHJlZSBkb3Nlcy4gWW91IGNhbiBwYXkgdGhlXG5yZWNlcHRpb25pc3QuXG5NQU46IE9rYXksIHRoYW5rcy4gSSBwcm9taXNlIElcdTIwMTlsbCBiZSBtb3JlIG9uIHRvcCBvZiB0aGluZ3MgdGhpcyB0aW1lLiBTb3JyeSBhYm91dCB0aGF0LlxuV09NQU46ICAgICAgICBPa2F5LiBBbmQgdGhpbmsgYWJvdXQga2VlcGluZyBoZXIgaW5zaWRlIGF0IG5pZ2h0LlxuU2VjdGlvbiAzOlxuV09NQU46ICAgICAgICBIb3dcdTIwMTlzIFRpZ2VyIHRvZGF5PyBTdGlsbCBzY3JhdGNoaW5nPyBbUGF1c2VdIEkgc2VlIHlvdSB0cmltbWVkIGhlciBjbGF3cy5cbk1BTjogTm8gbW9yZSBmbGVhcyEgQnV0IGl0XHUyMDE5cyB3ZWlyZCAuIC4gLiBzaGVcdTIwMTlzIGdhaW5pbmcgYSBsb3Qgb2Ygd2VpZ2h0LCBldmVuIHRob3VnaCBzaGVcdTIwMTlzXG5lYXRpbmcgbW9yZSBvciBsZXNzIHRoZSBzYW1lIGFtb3VudCBhcyB1c3VhbC5cbldPTUFOOiAgICAgICAgSG1tLiBTaGUgaGFzblx1MjAxOXQgYmVlbiBzcGF5ZWQgeWV0LCBoYXMgc2hlP1xuTUFOOiBSaWdodCwgbm8gc3VyZ2VyeSB5ZXQuIFNoZVx1MjAxOXMgdG9vIHlvdW5nIHRvIGdldCBwcmVnbmFudC5cbldPTUFOOiBXaGVyZVx1MjAxOWQgeW91IGhlYXIgdGhhdD8gQWN0dWFsbHksIGNhdHMgY2FuIGdldCBwcmVnbmFudCBldmVuIGF0IHNpeCBtb250aHNcbm9mIGFnZS4gW1BhdXNlXSBGcm9tIHRoZSB3YXkgaGVyIGFiZG9tZW4gZmVlbHMsIElcdTIwMTlkIHNheSBUaWdlclx1MjAxOXMgZ29pbmcgdG8gYmUgYSBtb3RoZXJcbnNvb24uXG5NQU46IFlvdVx1MjAxOXJlIGtpZGRpbmchIFRoYXRcdTIwMTlzIHRoZSBsYXN0IHRoaW5nIEkgZXhwZWN0ZWQuXG5XT01BTjogSWYgc2hlXHUyMDE5cyBnb2luZyB0byBrZWVwIGdvaW5nIG91dGRvb3JzLCB5b3UgcmVhbGx5IG5lZWQgdG8gZ2V0IGhlciBzcGF5ZWQuXG5JdFx1MjAxOXMgYSBzaW1wbGUgb3BlcmF0aW9uOyBJIGNhbiBkbyBpdCBhZnRlciBzaGUgZ2l2ZXMgYmlydGguIEluIHRoZSBtZWFudGltZSwgeW91IGhhdmUgc29tZVxudGhpbmdzIHRvIGRvLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NjksInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYWluIHByb2JsZW0gd2l0aCBUaWdlcj8iLCJvcHRpb25zIjpbIlRpZ2VyIGtlZXBzIGh1cnRpbmcgaGVyc2VsZiB3aXRoIGhlciBjbGF3cy4iLCJUaWdlciBoYXMgYSBsb3Qgb2YgaW5zZWN0IGJpdGVzLiIsIlRpZ2VyIHJlZnVzZXMgdG8gZWF0IGhlciBmb29kLiIsIlRpZ2VyIGhhcyBjYXVnaHQgYSBjb2xkIGZyb20gdGhlIG91dGRvb3JzLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGFkdmljZSBkaWQgdGhlIHZldGVyaW5hcmlhbiBnaXZlIHRoZSBtYW4\/Iiwib3B0aW9ucyI6WyJHaXZlIFRpZ2VyIG1lZGljYXRpb24uIiwiS2VlcCBUaWdlciBpbmRvb3JzIHBlcm1hbmVudGx5LiIsIkNoYW5nZSBUaWdlcidzIGRpZXQuIiwiVGFrZSBUaWdlciB0byBhIHNwZWNpYWxpc3QuIl0sImtleSI6MCwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NTQsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjozLCJzdGVtIjoiV2h5IGRpZCB0aGUgbWFuIGhhdmUgdG8gY29tZSBiYWNrPyIsIm9wdGlvbnMiOlsiVGhlIG1lZGljYXRpb24gY2F1c2VkIHNpZGUgZWZmZWN0cy4iLCJUaGUgZmxlYXMgc3ByZWFkIHRocm91Z2ggaGlzIGhvdXNlLiIsIlRoZSBjYXQgZ290IG9ubHkgdHdvIHNraW4gdHJlYXRtZW50cy4iLCJUaWdlciBuZWVkZWQgYSByb3V0aW5lIGNoZWNrLXVwLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGljaCBzdGF0ZW1lbnQgYmVzdCBkZXNjcmliZXMgVGlnZXIncyBvd25lcj8iLCJvcHRpb25zIjpbIkhlIGlzIHZlcnkgYXR0ZW50aXZlIHRvIGRldGFpbHMuIiwiSGUgdGVuZHMgdG8gYmUgZGlzb3JnYW5pemVkLiIsIkhlIGlzIGltcGF0aWVudCB3aXRoIHRoZSB2ZXQuIiwiSGUgaXMga25vd2xlZGdlYWJsZSBhYm91dCBwZXRzLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgZGlkIHRoZSBvd25lciBhcG9sb2dpemUgdG8gdGhlIHZldD8iLCJvcHRpb25zIjpbIkhlIGFycml2ZWQgbGF0ZSBmb3IgdGhlIGFwcG9pbnRtZW50LiIsIkhlIGZvcmdvdCB0byBwYXkgdGhlIGxhc3QgYmlsbC4iLCJIZSBnYXZlIFRpZ2VyIHRoZSB3cm9uZyBmb29kLiIsIkhlIGRpZG4ndCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDMiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo0OCwidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo2LCJzdGVtIjoiV2h5IGRpZCB0aGUgbWFuIGJyaW5nIFRpZ2VyIGJhY2sgdGhlIHRoaXJkIHRpbWU\/Iiwib3B0aW9ucyI6WyJTaGUgc2VlbXMgdG8gYmUgZ2V0dGluZyBoZWF2aWVyLiIsIlNoZSBpcyBzY3JhdGNoaW5nIG1vcmUgdGhhbiBiZWZvcmUuIiwiU2hlIGhhcyBzdG9wcGVkIGVhdGluZyBwcm9wZXJseS4iLCJTaGUgaGFzIGh1cnQgb25lIG9mIGhlciBwYXdzLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjcsInN0ZW0iOiJIb3cgZGlkIHRoZSBtYW4gcmVhY3QgdG8gdGhlIHZldCdzIG5ldyBpbmZvcm1hdGlvbj8iLCJvcHRpb25zIjpbInJlbGllZiIsInN1cnByaXNlIiwiYW5nZXIiLCJib3JlZG9tIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IldoYXQgc2hvdWxkIHRoZSBtYW4gZG8gbmV4dD8iLCJvcHRpb25zIjpbIkJ1eSBtb3JlIGZsZWEgbWVkaWNhdGlvbi4iLCJLZWVwIFRpZ2VyIGF3YXkgZnJvbSBvdGhlciBjYXRzLiIsIkZpbmQgcGVvcGxlIHdobyB3YW50IHRvIGFkb3B0IGNhdHMuIiwiUmV0dXJuIHRvIHRoZSBjbGluaWMgaW1tZWRpYXRlbHkuIl0sImtleSI6MiwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGFib3V0IGRvbmF0aW5nIGl0ZW1zIHRvIGEgdGhyaWZ0IHN0b3JlLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYWJvdXQgZG9uYXRpbmcgaXRlbXMgdG8gYSB0aHJpZnQgc3RvcmUuXG5cbk1BTjogSnVsaWUsIGlzIHRoYXQgeW91PyBXZVx1MjAxOXJlIGdvaW5nIHRvIGJlIGxhdGUgdG8gU3VzYW4gYW5kIEFudGhvbnlcdTIwMTlzIGhvdXNld2FybWluZ1xucGFydHkhXG5XT01BTjogWWVzLCBpdFx1MjAxOXMgbWUsIHdobyBlbHNlIHdvdWxkIGl0IGJlPyBJIHdhcyBqdXN0IGdldHRpbmcgZ3JvY2VyaWVzIG9uIHRoZSB3YXlcbmhvbWUuIFlvdSBzb3VuZCB1cHNldC4gSXMgc29tZXRoaW5nIHdyb25nP1xuTUFOOiBJIGNhblx1MjAxOXQgZmluZCBteSBmYXZvcml0ZSBncmV5IHNoaXJ0LCB0aGUgb25lIHdpdGggdGhlIHN0cmlwZXMuIERpZCB5b3UgcHV0IGl0XG5zb21ld2hlcmU\/IEl0XHUyMDE5cyBub3QgaW4gdGhlIGxhdW5kcnkgb3IgdGhlIGNsb3NldC5cbldPTUFOOiBVaCBvaFx1MjAyNiBJIHRoaW5rIEkgZG9uYXRlZCB0aGF0IG9uZSB0byB0aGUgdGhyaWZ0IHN0b3JlIGxhc3Qgd2Vlay4gWW91IHNhaWRcbnlvdSBkaWRuXHUyMDE5dCB3ZWFyIGl0IGFueW1vcmUhXG5NQU46IE5vLCB0aGF0IHdhcyB0aGUgc29saWQgZ3JleSBvbmUgd2l0aCB0aGUgc3RhaW5lZCBjb2xsYXIgdGhhdCBJIGRvblx1MjAxOXQgd2VhciBhbnltb3JlO1xudGhlIG9uZSB3aXRoIHRoZSBzdHJpcGVzLCBJIGp1c3QgYm91Z2h0IHJlY2VudGx5LCBhbmQgaXQgd2FzIG9uIHNhbGUsIHRvbyFcbldPTUFOOiBJXHUyMDE5bSBzb3JyeSEgV2Ugc2hvdWxkIG1ha2UgYW4gYWdyZWVtZW50IHRvIGFsd2F5cyBjaGVjayB3aXRoIGVhY2ggb3RoZXJcbmJlZm9yZSB3ZSBnaXZlIHRoaW5ncyBhd2F5IG9yIHNlbGwgdGhlbS4gUmVtZW1iZXIgbGFzdCBmYWxsIHdoZW4geW91IHNvbGQgbXkgdGVubmlzXG5yYWNrZXRzIGF0IHRoZSBnYXJhZ2Ugc2FsZSBhbmQgZGlkblx1MjAxOXQgdGVsbCBtZT9cbk1BTjogV2VsbCwgeW91IG5ldmVyIHBsYXkgdGVubmlzLiBZb3UgaGF2ZW5cdTIwMTl0IHBsYXllZCB0ZW5uaXMgc2luY2UgTWFyeSB3YXMgYm9ybi4gVGhhdFxuc3RyaXBlZCBzaGlydCwgSVx1MjAxOXZlIGJlZW4gd2VhcmluZyBhbGwgdGhlIHRpbWUhXG5XT01BTjogVGhhdFx1MjAxOXMgbm90IHRydWUuIEkgcGxheWVkIHRlbm5pcyBhdCBsZWFzdCB0aHJlZSB0aW1lcyBsYXN0IHN1bW1lciwgdGhhbmsgeW91XG52ZXJ5IG11Y2ghIEkgcGxheWVkIHdpdGggeW91ciBzaXN0ZXIgd2hlbiBzaGUgY2FtZSB0byB2aXNpdCBmcm9tIExvbmRvbi4gQW55d2F5cywgbGV0XHUyMDE5c1xubm90IGZpZ2h0LlxuTUFOOiBZb3VcdTIwMTlyZSByaWdodCwgZmlnaHRpbmcgZ2V0cyB1cyBub3doZXJlLiBPa2F5LCBpdFx1MjAxOXMgYSBkZWFsLiBXZVx1MjAxOWxsIG1ha2UgYW4gZWZmb3J0IHRvXG5hc2sgZWFjaCBvdGhlciBmcm9tIG5vdyBvbi4gSSBndWVzcyBJXHUyMDE5bGwganVzdCB3ZWFyIGEgZGlmZmVyZW50IHNoaXJ0IHRvZGF5XHUyMDI2IElcdTIwMTlsbCB3ZWFyIG15XG5vbGQgYmx1ZSBvbmUuXG5XT01BTjogICAgICAgIFRoYXQgYmx1ZSBvbmUgbG9va3MgZ3JlYXQgb24geW91LCBhbnl3YXlzLiBZb3UgbG9vayBzbyBoYW5kc29tZS5cbk1BTjogV2VsbCwgeW91IGhhdmUgdG8gc2F5IHRoYXQsIHNpbmNlIHlvdSBnYXZlIHRoZSBvdGhlciBvbmUgYXdheSFcbldPTUFOOiBObywgaXQgcmVhbGx5IGRvZXMgYnJpbmcgb3V0IHRoZSBjb2xvciBvZiB5b3VyIGV5ZXMhIEFueXdheXMsIEkgbmVlZCB0byBoYXZlXG5hIHNob3dlciBhbmQgZ2V0IHJlYWR5LiBXZXJlIHdlIHN1cHBvc2VkIHRvIGJlIHRoZXJlIGF0IDc6MDA\/IFRoYXQgZG9lc25cdTIwMTl0IGxlYXZlIG1lXG5tdWNoIHRpbWUuIERvIHlvdSBtaW5kIHVucGFja2luZyB0aGUgZ3JvY2VyaWVzIHdoaWxlIEkgc2hvd2VyP1xuXGZNQU46IFllcywgb2YgY291cnNlLiBIZXJlLCBwYXNzIG1lIHRoZSBiYWdzLiBZb3UgZ28gZ2V0IHJlYWR5LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjExMiwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlIHNwZWFrZXJzPyIsIm9wdGlvbnMiOlsiaHVzYmFuZCBhbmQgd2lmZSIsImJyb3RoZXIgYW5kIHNpc3RlciIsInJvb21tYXRlcyIsImNvLXdvcmtlcnMiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiSG93IGlzIHRoZSBtYW4gZmVlbGluZyBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbj8iLCJvcHRpb25zIjpbImV4Y2l0ZWQiLCJhbm5veWVkIiwicmVsYXhlZCIsImFtdXNlZCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGFyZSB0aGV5IGdvaW5nIHRvIGRvIHRoYXQgZXZlbmluZz8iLCJvcHRpb25zIjpbImdvIHNob3BwaW5nIiwiaGF2ZSBkaW5uZXIgYWxvbmUiLCJ2aXNpdCBmcmllbmRzIiwiYXR0ZW5kIGEgY29uY2VydCJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IHdlcmUgdGhlIHNwZWFrZXJzIHRhbGtpbmcgYWJvdXQ\/Iiwib3B0aW9ucyI6WyJnaXZpbmcgYXdheSB0aGVpciBiZWxvbmdpbmdzIiwicGxhbm5pbmcgYSB2YWNhdGlvbiIsImJ1eWluZyBuZXcgZnVybml0dXJlIiwiY2xlYW5pbmcgdGhlIGhvdXNlIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBsaWtlIHRoZSBtYW4ncyBzaGlydD8iLCJvcHRpb25zIjpbIkl0IHdhcyB2ZXJ5IGV4cGVuc2l2ZS4iLCJTaGUgYm91Z2h0IGl0IGZvciBoaW0uIiwiSGUgbG9va3MgZ29vZCBpbiBpdC4iLCJJdCBpcyBoaXMgZmF2b3VyaXRlIGNvbG91ci4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYWJvdXQgcmVudGluZyBhbiBhcGFydG1lbnQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBhYm91dCByZW50aW5nIGFuIGFwYXJ0bWVudC5cblxuV09NQU46ICAgICAgICBPaCwgaGVsbG8uIEkgc2F3IGEgc2lnbiBvbiB0aGUgZnJvbnQgZG9vciBhYm91dCBhcGFydG1lbnRzIGF2YWlsYWJsZSBpbiB0aGlzXG5idWlsZGluZy5cbk1BTjogVWggaHVoLlxuV09NQU46IEl0IHNhaWQgdG8gc3BlYWsgdG8gdGhlIGJ1aWxkaW5nIG1hbmFnZXIgaW4gdGhlIGFkbWluaXN0cmF0aW9uIG9mZmljZS4gVGhlXG5mcm9udCBkb29yIHdhcyBvcGVuLCBzbyBJIHRob3VnaHQgSVx1MjAxOWQganVzdCBjb21lIGluIGFuZCBhc2suXG5NQU46IFdlbGwsIHlvdVx1MjAxOXJlIHRhbGtpbmcgdG8gdGhlIHJpZ2h0IHBlcnNvbi4gV2hpY2ggb25lIGFyZSB5b3UgaW50ZXJlc3RlZCBpbj9cbldPTUFOOiBJXHUyMDE5bSBub3Qgc3VyZSB3aGljaCB3b3VsZCBiZSBiZXR0ZXIuIFRoZSBzaWduIHNhaWQgQXBhcnRtZW50cyAxIGFuZCAyIGFyZVxuYm90aCA4NTAgc3F1YXJlIGZlZXQsIGJ1dCBvbmVcdTIwMTlzIGEgb25lIGJlZHJvb20gYW5kIHRoZSBvdGhlclx1MjAxOXMgYSB0d28gYmVkcm9vbSwgc28gSVx1MjAxOW0gYVxuYml0IGNvbmZ1c2VkLlxuTUFOOiBBcGFydG1lbnQgMiBoYXMgdHdvIHNlcGFyYXRlIGJlZHJvb21zLCBlYWNoIHdpdGggaXRzIG93biBkb29yXHUyMDE0YSBzb3J0IG9mIGNsb3NlZFxuZmxvb3IgcGxhbiBpZiB5b3Ugd2lsbC4gQXBhcnRtZW50IDEgaGFzIHdoYXQgd2UgY2FsbCBhbiBvcGVuIGZsb29yIHBsYW4uIFRoZSBsaXZpbmcgcm9vbVxuYW5kIG9uZSBiaWcgYmVkcm9vbSBhcmUgYWRqb2luZWQgbGlrZSB0aGV5XHUyMDE5cmUgb25lIGJpZyByb29tLlxuV09NQU46ICAgICAgICBUaGF0IHR5cGUgb2YgbGF5b3V0IHNvdW5kcyBsaWtlIGEgYmFjaGVsb3IgYXBhcnRtZW50IHRvIG1lLlxuTUFOOiBZZWFoLCBleGNlcHQgdGhhdCB0aGUgYmVkcm9vbSBhcmVhIGlzIHJlYWxseSBiaWcsIGFuZCB0aGVyZVx1MjAxOXMgc29ydCBvZiBhbiBhcmNod2F5XG5iZXR3ZWVuIHRoZSBsaXZpbmcgcm9vbSBhcmVhIGFuZCB0aGUgYmVkcm9vbSBhcmVhLiBJdFx1MjAxOXMgZWFzeSB0byBzZXBhcmF0ZSB0aGVtIHdpdGggYVxuY3VydGFpbiBvciByb29tIGRpdmlkZXIuXG5cZldPTUFOOiBJIHNlZS4gV2VsbCwgdGhlIGFwYXJ0bWVudCBpcyBqdXN0IGZvciBtZSwgYW5kIEkgbGlrZSBvcGVuIHNwYWNlcyBJIGNhbiB1c2UgaW5cbmEgZmxleGlibGUgd2F5LiBIb3dldmVyLCBoYXZpbmcgYSBzZWNvbmQgYmVkcm9vbSBtaWdodCBhbHNvIGJlIHVzZWZ1bC4gQW5kIHRoZSBtb3ZlLVxuaW4gZGF0ZSB3b3VsZCBiZSBKdWx5IDFzdCB3aXRoIGEgb25lLXllYXIgbGVhc2U\/XG5NQU46IFl1cC4gRXZlcnl0aGluZ1x1MjAxOXMgbmV3bHkgcmVub3ZhdGVkLiBOZXcgY2FycGV0cywgbmV3IHBhaW50LCBhbmQgYWxsIHRoZVxuYXBwbGlhbmNlc1x1MjAxNGZyaWRnZSwgc3RvdmUsIHdhc2hlci9kcnllclx1MjAxNGFyZSBicmFuZCBuZXcuIEJ1dCBpdFx1MjAxOXMgYSB3YWxrLXVwXHUyMDE0dGhlcmVcdTIwMTlzIG5vXG5lbGV2YXRvci4gQXBhcnRtZW50IDEgaXMgb24gdGhlIGdyb3VuZCBmbG9vciBhbmQgQXBhcnRtZW50IDIgaXMgb24gdGhlIHRvcCBmbG9vci5cbldPTUFOOiBJIHRoaW5rIElcdTIwMTlkIHByZWZlciB0byBiZSBvbiB0aGUgZ3JvdW5kIGZsb29yLCBhcyBsb25nIGFzIHRoZXJlIGFyZW5cdTIwMTl0IGFueSB0YXBcbmRhbmNlIHJlaGVhcnNhbHMgZ29pbmcgb24gcmlnaHQgYWJvdmUgbWUuIFdob1x1MjAxOXMgdGhlIHVwc3RhaXJzIHRlbmFudD9cbk1BTjogVGhlIGxhZHkgaW4gdGhlIGFwYXJ0bWVudCBhYm92ZSB5b3UgaXMgcmV0aXJlZFx1MjAxNHJlYWxseSBxdWlldCBhbmQgaXMgaGFyZGx5IGV2ZXJcbmhvbWUuIEkgY2FuIHNob3cgeW91IEFwYXJ0bWVudCAxIGFyb3VuZCAzOjAwIHAubS4gaWYgeW91XHUyMDE5ZCBsaWtlLiBDYW4geW91IHdhaXQgYW4gaG91cj9cbldPTUFOOiAgICAgICAgU3VyZS4gSVx1MjAxOWxsIGdvIGZvciBjb2ZmZWUgYW5kIGNvbWUgYmFjay4gU2VlIHlvdSBhdCAzOjAwLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjEyNywidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGVyZSBkb2VzIHRoZSBjb252ZXJzYXRpb24gb2NjdXI\/Iiwib3B0aW9ucyI6WyJpbiBhIGNvZmZlZSBzaG9wIiwiaW4gYW4gb2ZmaWNlIiwib3ZlciB0aGUgcGhvbmUiLCJpbiBhIHBhcmtlZCBjYXIiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hvIGlzIHRoZSB3b21hbiB0YWxraW5nIHRvPyIsIm9wdGlvbnMiOlsiYSByZWFsIGVzdGF0ZSBhZ2VudCIsImFuIGFwYXJ0bWVudCBidWlsZGluZyBtYW5hZ2VyIiwidGhlIGFwYXJ0bWVudCdzIG93bmVyIiwiYSBjdXJyZW50IHRlbmFudCJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4ncyBwbGFuIGZvciB0aGUgYXBhcnRtZW50PyIsIm9wdGlvbnMiOlsic2VsbCBpdCIsInJlbm92YXRlIGl0IiwibGVhc2UgaXQiLCJidXkgaXQiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gYXBhcnRtZW50cz8iLCJvcHRpb25zIjpbIk9uZSBpcyBtdWNoIGNoZWFwZXIgdGhhbiB0aGUgb3RoZXIuIiwiVGhlIHNwYWNlIGlzIGFycmFuZ2VkIGRpZmZlcmVudGx5LiIsIk9uZSBoYXMgZmFyIG1vcmUgc3F1YXJlIGZvb3RhZ2UuIiwiT25seSBvbmUgaGFzIGJlZW4gcmVub3ZhdGVkLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBzYXkgYWJvdXQgdGhlIHVwc3RhaXJzIHRlbmFudD8iLCJvcHRpb25zIjpbIlNoZSBwcmFjdGlzZXMgdGFwIGRhbmNpbmcuIiwiU2hlIGlzIHZlcnkgbm9pc3kuIiwiU2hlJ3Mgb2Z0ZW4gYXdheS4iLCJTaGUgaGFzIGp1c3QgbW92ZWQgaW4uIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6Ik9uIHdoYXQgYmFzaXMgZG9lcyB0aGUgd29tYW4gbWFrZSBoZXIgY2hvaWNlPyIsIm9wdGlvbnMiOlsicHJpY2UiLCJlbGV2YXRpb24iLCJzcXVhcmUgZm9vdGFnZSIsIm51bWJlciBvZiBiZWRyb29tcyJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCAyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBhIHN0b2xlbiB3YWxsZXQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgbmV3cyBpdGVtLCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBhIHN0b2xlbiB3YWxsZXQuXG5cbkEgdG91cmlzdCBpbiBkb3dudG93biBWYW5jb3V2ZXIgZ290IHRoZSBsYXN0IGxhdWdoIHllc3RlcmRheSB3aGVuIHBpY2twb2NrZXRzIHN0b2xlIGhpc1xud2FsbGV0LiBHcmVnb3J5IFdpbGxpcyB3YXMgYWJvdXQgdG8gcmVudCBiaWtlcyB0byB0b3VyIFN0YW5sZXkgUGFyayB3aXRoIGhpcyB3aWZlIHdoZW4gaGVcbm5vdGljZWQgaGlzIHdhbGxldCB3YXMgbWlzc2luZy4gSGUgcmVjYWxsZWQgaGVcdTIwMTlkIGJlZW4gaW4gYSBqb3N0bGluZyBjcm93ZCBlYXJsaWVyIHRoYXQgZGF5XG53YXRjaGluZyBhIHN0cmVldCBtYWdpY2lhbiBwZXJmb3JtYW5jZSB3aGVuIHNvbWVvbmUgaGFkIGJ1bXBlZCBpbnRvIGhpbSwgYnV0IGhlXHUyMDE5ZFxudGFrZW4gbGl0dGxlIG5vdGljZSBvZiB0aGUgaW5jaWRlbnQuIFVuZGF1bnRlZCwgTXIuIFdpbGxpcyBoZWFkZWQgdG8gdGhlIG5lYXJlc3QgcG9saWNlXG5zdGF0aW9uIGFuZCBzYWlkIGhlIGtuZXcgZXhhY3RseSB3aGVyZSBoaXMgd2FsbGV0IHdhcy4gSGVcdTIwMTlkIGF0dGFjaGVkIGEgR1BTIGNoaXAsIGEgc21hbGxcbnRyYWNraW5nIGRldmljZSB0aGF0IHVzZXMgdGhlIGdsb2JhbCBwb3NpdGlvbmluZyBzeXN0ZW0gdG8gcGlucG9pbnQgbG9jYXRpb24sIG9uIHRoZSBpbnNpZGVcblxmb2YgdGhlIHdhbGxldC4gV2lsbGlzIGV4cGxhaW5lZCBoZSBoYWQgaW5pdGlhbGx5IGJvdWdodCB0aGUgY2hpcCB0byB0cmFjayB0aGVpciBkb2cgb24gdGhlaXJcbjIwLWFjcmUgcmFuY2ggaW4gV2FzaGluZ3RvbiBzdGF0ZSwgYnV0IGhhZCBkZWNpZGVkIHRvIHRha2UgaXQgb24gdmFjYXRpb24gYXMgYVxucHJlY2F1dGlvbmFyeSBtZWFzdXJlIGFnYWluc3QgbG9zcyBvciB0aGVmdC4gVGhlIEdQUyBjaGlwIGNlcnRhaW5seSBkaWQgY29tZSBpbiBoYW5keSBhc1xudGhlIFdpbGxpc2VzLCBpbiB0aGUgY29tcGFueSBvZiB0d28gcG9saWNlbWVuLCB3ZXJlIGFibGUgdG8gbG9jYXRlIHRoZSB3YWxsZXQgMzAgYmxvY2tzXG5hd2F5IHdoZXJlIGEgZ3JvdXAgb2YgdGVlbmFnZXJzIHdlcmUgbG9pdGVyaW5nIGF0IGEgcGFyay4gVGhlIHlvdW5nIHRoaWVmIHdhcyBtb3JlIHRoYW5cbnN1cnByaXNlZCB3aGVuIHRoZSBvZmZpY2VycyBzaG93ZWQgdXAgdG8gYXJyZXN0IGhpbS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJOZXdzIEl0ZW0iLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo3OCwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBuZXdzIGl0ZW0uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldpbGxpcyIsIm9wdGlvbnMiOlsid2VudCBmb3IgYSB3YWxrIG5lYXIgaGlzIGhvbWUuIiwid2F0Y2hlZCBhIG1hZ2ljIHNob3cuIiwiY291bGRuJ3QgZmluZCBoaXMgZG9nLiIsImdvdCBsb3N0IGluIGFuIHVuZmFtaWxpYXIgY2l0eS4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IkhlIHJlbWVtYmVyZWQgdGhhdCBlYXJsaWVyIGhlIiwib3B0aW9ucyI6WyJ3YXMgaW4gYSBjcm93ZC4iLCJzcGVudCBhbGwgaGlzIG1vbmV5LiIsIndhcyBvbiBhIGJ1c3kgc3RyZWV0LiIsIndhcyBiaWtpbmcgaW4gdGhlIHBhcmsuIl0sImtleSI6MCwicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJIZSB1c2VkIHRoZSB0cmFja2luZyBkZXZpY2UgdG8iLCJvcHRpb25zIjpbImVuc3VyZSB0aGF0IGhlIGRpZG4ndCBnZXQgbG9zdC4iLCJmaW5kIG91dCB3aGVyZSBoaXMgd2FsbGV0IHdhcy4iLCJ0cmFpbiBoaXMgZG9nIHRvIHJldHVybiBob21lLiIsImZpbmQgdGhlIG5lYXJlc3QgcG9saWNlIHN0YXRpb24uIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJUaGUgcG9saWNlIHF1aWNrbHkiLCJvcHRpb25zIjpbImZvdW5kIHRoZSB3YWxsZXQuIiwicmVjb3JkZWQgdGhlIGRldGFpbHMuIiwiY29udGFjdGVkIG90aGVyIHN0YXRpb25zLiIsInVzZWQgZG9ncyB0byBmaW5kIHRoZSB3YWxsZXQuIl0sImtleSI6MCwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJXaWxsaXMgd2FzIGRlbGlnaHRlZCB0aGF0IHRoZSIsIm9wdGlvbnMiOlsicHJlY2F1dGlvbiB3b3JrZWQgc28gd2VsbC4iLCJwb2xpY2Ugd2VyZSBzbyBlZmZpY2llbnQuIiwibWFnaWNpYW4gaGVscGVkIHRoZW0uIiwicG9saWNlIGxvY2F0ZWQgdGhlIHRoaWVmLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBiZXR3ZWVuIHRocmVlIGNvLXdvcmtlcnMgaW4gYSBidXNpbmVzcyBvZmZpY2UuIFRoZXkgYXJlIHRhbGtpbmcgYWJvdXQgc29tZXRoaW5nIHVudXN1YWwgdGhhdCBpcyBoYXBwZW5pbmcgb3V0c2lkZS4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYmV0d2VlbiB0aHJlZSBjby13b3JrZXJzIGluIGEgYnVzaW5lc3Mgb2ZmaWNlLiBUaGV5IGFyZVxudGFsa2luZyBhYm91dCBzb21ldGhpbmcgdW51c3VhbCB0aGF0IGlzIGhhcHBlbmluZyBvdXRzaWRlLlxuXG5NQU4gMTogICAgICAgU28gSmVhbmV0dGUsIGxvb2tzIGxpa2UgeW91IGJvdWdodCB5b3Vyc2VsZiBhIG5pY2UgcHJlc2VudC4gSXRcdTIwMTlzIGEgcHJldHR5XG5zaGlueSBuZXcgc2V0IG9mIHdoZWVscyBpbiB5b3VyIHBhcmtpbmcgc3BvdC4gSXMgdGhhdCBhIGN1c3RvbSBwYWludCBqb2I\/XG5XT01BTjogWWVhaCEgSSBsb3ZlIG15IG5ldyBjYXIsIGJ1dCBJIGhhdGUgd2hhdFx1MjAxOXMgaGFwcGVuaW5nIHRvIGl0IGluIHRoZSBwYXJraW5nXG5sb3QhIFlvdSBrbm93IHRoYXQgdHJlZSB0aGF0IGhhbmdzIG92ZXIgbXkgcGFya2luZyBzcGFjZT8gSXRcdTIwMTlzIGRyb3BwaW5nIHRoaXMgd2VpcmQgc3RpY2t5XG5zdHVmZiBhbGwgb3ZlciB0aGUgaG9vZCBvZiBteSBjYXIuXG5NQU4gMTogICAgICAgICBUaGF0XHUyMDE5cyBhbiBhc2ggdHJlZS4gSSBjb3VsZCB0ZWxsIGJ5IHRoZSBzaGFwZSBvZiB0aGUgbGVhdmVzLiBUaGVyZVx1MjAxOXMgdGhlc2UgbGl0dGxlXG5idWdzIGNhbGxlZCBhcGhpZHMuIFRoZXkgc3VjayB0aGUgbmVjdGFyIGZyb20gdGhlIGxlYXZlcywgYW5kIHByb2R1Y2UgdGhpcyBzdGlja3kgc3R1ZmYuXG5JdFx1MjAxOXMgY2FsbGVkIGhvbmV5ZGV3LlxuV09NQU46IFVnaCwgdGhvc2UgdGhpbmdzIGFyZSBzbyBncm9zcy4gSXQgZHJpZXMgYW5kIGhhcmRlbnMgaW4gdGhlIHN1biwgYW5kIGl0XHUyMDE5c1xuYWxtb3N0IGltcG9zc2libGUgdG8gZ2V0IG9mZiBteSBjYXIuIEl0XHUyMDE5cyB3cmVja2luZyB0aGUgcGFpbnQgam9iISBJXHUyMDE5bSBnb2luZyB0byBhc2sgdGhlXG5tYWludGVuYW5jZSBjcmV3IGlmIHRoZXkgY2FuIGp1c3QgZ2V0IHJpZCBvZiB0aGF0IHRyZWUuXG5NQU4gMTogICAgICAgIFllYWgsIHRoZXkgd291bGQgbmVlZCBhIHBlcm1pdCBmaXJzdCB0aG91Z2gsIG9yIGVsc2UgdGhlIENpdHkgY2FuIGZpbmUgdXAgdG9cbnRlbiB0aG91c2FuZCBkb2xsYXJzLiBJdFx1MjAxOXMgYWN0dWFsbHkgaWxsZWdhbCB0byByZW1vdmUgYSB0cmVlIHVubGVzcyBpdCBwb3NlcyBhIGhhemFyZC4gSXQgY291bGRcbmZhbGwgb24gYSBob3VzZSBvZiBhIHBvd2VyIGxpbmUuIFRoZSBDaXR5IHNheXMsIHVzdWFsbHkganVzdCB0cmVhdCBpdCB3aXRoIGluc2VjdGljaWRlcy5cbk1BTiAyOiAgICAgICAgICBJZiBJIHdlcmUgeW91LCBJIHdvdWxkblx1MjAxOXQgd2FudCB0byBwYXJrIHdoZXJlIHRoZXlcdTIwMTlyZSBzcHJheWluZyBjaGVtaWNhbHMuIElmXG5pdFx1MjAxOXMgdG94aWMgZm9yIHRoZSBhcGhpZHMsIGl0XHUyMDE5cyBwcm9iYWJseSB0b3hpYyBmb3IgeW91IHRvbywgbm90IHRvIG1lbnRpb24gbGFkeWJ1Z3MsIGJpcmRzLFxuZmlzaC4gLiAuIC5cbldPTUFOOiBBcmdoLCBtYXliZSB3ZSBjb3VsZCBqdXN0IGZpbmQgYSB3YXkgdG8ga2lsbCB0aGUgdHJlZS4gVGhlbiBhdCBsZWFzdCB0aGV5IGNhblxuY2hvcCBpdCBkb3duLlxuXGZNQU4gMjogICAgICAgICBXaG9hLCB0aGF0XHUyMDE5cyBleHRyZW1lLiBBbGwgdGhleSBuZWVkIHRvIGRvIGlzIHdhc2ggdGhlIGFwaGlkcyBvZmYgdGhlIGxlYXZlcy5cbllvdSBrbm93LCB0aGV5IGp1c3QgbmVlZCBhIGhvc2UgdGhhdCBzaG9vdHMgYSBwb3dlcmZ1bCBzdHJlYW0gb2Ygd2F0ZXIuIFRoZSBhcGhpZHMgd2lsbFxuZmFsbCBvZmYgb250byB0aGUgZ3JvdW5kIGFuZCBkaWUuIFRoZXJlXHUyMDE5cyBubyBmb29kIGZvciB0aGVtIG9uIHRoZSBsYXduLlxuTUFOIDE6ICAgICAgICBZZWFoLCBidXQgdGhhdCB0cmVlIGxvb2tzIGEgbGl0dGxlIHRhbGwgZm9yIGEgZ2FyZGVuIGhvc2UuIEl0XHUyMDE5cyBnb3QgdG8gYmUgYXQgbGVhc3RcbjUwIGZlZXQuIEFuZCBJIGRvblx1MjAxOXQgdGhpbmsgdGhlIG1haW50ZW5hbmNlIGRlcGFydG1lbnQgdXN1YWxseSBkZWFscyB3aXRoIHRoYXQga2luZCBvZlxuc3R1ZmYuIFRoZXlcdTIwMTlkIHByb2JhYmx5IHdhbnQgdG8gY2FsbCBpbiBhIHRyZWUgY2FyZSBjb21wYW55LiBUaGV5IGNhbiBkZWNpZGUgd2hhdCB0byBkby5cbldPTUFOOiBXZWxsLCBJXHUyMDE5dmUgdGhvdWdodCBhYm91dCBwYXJraW5nIG9uIHRoZSBzdHJlZXQuIEJ1dCBJXHUyMDE5ZCBoYXZlIHRvIGNvbWUgaW4gYXRcbmxpa2UgNjowMCBhLm0uXG5NQU4gMjogICAgICAgICBMb29rLCBqdXN0IHNlbmQgYW4gZW1haWwgdG8gQ2hhcmxpZSBpbiB0aGUgbWFpbnRlbmFuY2UgZGVwYXJ0bWVudC4gSGVcdTIwMTlzXG52ZXJ5IGFjY29tbW9kYXRpbmcuIE1heWJlIGhlIGNhbiBhcnJhbmdlIGZvciBhbiBlY28tZnJpZW5kbHkgY29udHJhY3RvciB0byBkZWFsIHdpdGhcbnRoZSBhcGhpZHMuIEluIHRoZSBtZWFudGltZSwgSVx1MjAxOW0gc3VyZSBoZSBjYW4gZmluZCB5b3UgYSBkaWZmZXJlbnQgcGFya2luZyBzcGFjZS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJtZWRpYVR5cGUiOiJ2aWRlbyIsImR1cmF0aW9uIjoxMjgsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBkb2VzIHRoZSB5b3VuZ2VyIG1hbiBtZW50aW9uIGhpcyBjby13b3JrZXIncyBjYXI\/Iiwib3B0aW9ucyI6WyJ0byBhY2tub3dsZWRnZSBoZXIgY2FyIGhhcyBuZXcgd2hlZWxzIiwidG8gY29tcGxpbWVudCBoZXIgb24gaGVyIG5ldyBwdXJjaGFzZSIsInRvIGltcGx5IHNoZSBoYXMgc3BlbnQgdG9vIG11Y2ggbW9uZXkiLCJ0byB0ZWFzZSBoZXIgYWJvdXQgaG93IHNoaW55IGhlciBjYXIgaXMiXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgdGhlIHdvbWFuJ3MgbWFpbiBjb21wbGFpbnQ\/Iiwib3B0aW9ucyI6WyJTaGUgaXMgYm90aGVyZWQgYnkgdG94aWMgY2hlbWljYWxzLiIsIlNoZSBpc24ndCBhYmxlIHRvIGdldCBoZXIgY2FyIGNsZWFuLiIsIlNoZSBoYXNuJ3QgZ290IGEgcGFya2luZyBzcGFjZS4iLCJTaGUgaGFzIHRvIHBheSBhIGZpbmUgdG8gdGhlIGNpdHkuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJXaGljaCBzdGF0ZW1lbnQgaXMgdHJ1ZSBvZiB0aGUgeW91bmdlciBtYW4\/Iiwib3B0aW9ucyI6WyJIZSBnYXZlIGEgY28td29ya2VyIGEgbmljZSBnaWZ0LiIsIkhlIGhhcyBhbiBhc2ggdHJlZSBpbiBoaXMgeWFyZC4iLCJIZSBrbm93cyBzb21lIGZhY3RzIGFib3V0IGFwaGlkcy4iLCJIZSBsaWtlcyBlYXRpbmcgc3dlZXQgaG9uZXlkZXcuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGlzIHRoZXJlIGEgbGF3IGFnYWluc3Q\/Iiwib3B0aW9ucyI6WyJjdXR0aW5nIGRvd24gaGVhbHRoeSB0cmVlcyIsInBhcmtpbmcgb3Zlcm5pZ2h0IG9uIHRoZSBzdHJlZXQiLCJzcHJheWluZyBjaGVtaWNhbHMgb24gcGxhbnRzIiwid2FzdGluZyB0YXAgd2F0ZXIgb24gY2l0eSBsYXducyJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiV2hhdCBpcyBtb3N0IGxpa2VseSB0cnVlIG9mIHRoZSBhc2ggdHJlZT8iLCJvcHRpb25zIjpbIlBlb3BsZSBkb24ndCByZWxheCB1bmRlcm5lYXRoIGl0LiIsIkl0IG5lZWRzIG1vcmUgd2F0ZXIgdG8gc3Vydml2ZS4iLCJUaGUgY2l0eSB3b24ndCBib3RoZXIgdG8gc2F2ZSBpdC4iLCJJdCBtYXkgZmFsbCBvbnRvIGEgbmVhcmJ5IHJvb2YuIl0sImtleSI6MCwicmVjb24iOmZhbHNlfSx7Im4iOjYsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIHdlYXJpbmcgZ2xhc3NlcyB0YWxrIGFib3V0IHdhdGVyPyIsIm9wdGlvbnMiOlsidG8gYWNjZXB0IHRoZSBvdGhlciB3b21hbidzIGlkZWEiLCJ0byBleHBhbmQgb24gdGhlIHByZXZpb3VzIHBvaW50IiwidG8gc3VnZ2VzdCBhbiBhbHRlcm5hdGUgc29sdXRpb24iLCJ0byB3YXJuIGFib3V0IGEgcG9zc2libGUgZGFuZ2VyIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjcsInN0ZW0iOiJXaGF0IGNhbiB3ZSB0ZWxsIGZyb20gdGhlIGNvbnZlcnNhdGlvbj8iLCJvcHRpb25zIjpbIlRoZSBjb21wYW55IGhhcyBhIGNpdHkgdHJlZSByZW1vdmFsIHBlcm1pdC4iLCJUaGUgbWFuIGhhcyBpbnNlY3RzIGluIGhpcyBhc2ggdHJlZSBhdCBob21lLiIsIlRoZSBjb21wYW55IHdhbnRzIHRvIGhlbHAgdGhlIGVudmlyb25tZW50LiIsIlRoZSBtYW4gYXBwcmVjaWF0ZXMgYXR0cmFjdGl2ZSBhdXRvbW9iaWxlcy4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6OCwic3RlbSI6IldoYXQgaXMgdGhlIGJlc3Qgc3ViamVjdCBsaW5lIGZvciB0aGUgd29tYW4ncyBlbWFpbD8iLCJvcHRpb25zIjpbImN1dHRpbmcgZG93biBhIGRpc2Vhc2VkIGFzaCB0cmVlIiwic2Vla2luZyBhZHZpY2Ugb24gY2FyIHBhaW50IGpvYiIsInJlcXVlc3RpbmcgYWx0ZXJuYXRlIHBhcmtpbmcgc3BvdCIsInNwcmF5aW5nIHRyZWVzIG5lYXIgbXkgdmVoaWNsZSJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSByZXBvcnQgYWJvdXQgdGhlIHVzZSBvZiBlbGVjdHJvbmljIHRleHRib29rcyB3aXRoaW4gcG9zdC1zZWNvbmRhcnkgaW5zdGl0dXRpb25zLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIHJlcG9ydCwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSByZXBvcnQgYWJvdXQgdGhlIHVzZSBvZiBlbGVjdHJvbmljIHRleHRib29rcyB3aXRoaW4gcG9zdC1zZWNvbmRhcnlcbmluc3RpdHV0aW9ucy5cblxuV2VsY29tZSwgYW5kIHRoYW5rIHlvdSBmb3IgYXR0ZW5kaW5nIHRoaXMgd2Vla1x1MjAxOXMgbHVuY2h0aW1lIGxlY3R1cmUuIEkgYW0gUHJvZmVzc29yXG5NZW5lbmRleiwgYW5kIG91ciBkaXNjdXNzaW9uIHRvZGF5IHdpbGwgYmUgZXhwbG9yaW5nIHRoZSB1c2Ugb2YgZWxlY3Ryb25pYyB0ZXh0Ym9va3NcbndpdGhpbiBwb3N0LXNlY29uZGFyeSBpbnN0aXR1dGlvbnMuIFRvIHN0YXJ0LCBJIHdpbGwgcHJlc2VudCB0aGUgdmlld3Mgb2YgdGhyZWUgcHJvZmVzc29ycyBhdFxuUml2ZXJicmlkZ2UgVW5pdmVyc2l0eS5cblxuTGF3IHByb2Zlc3NvciBNYXJpYSBCbG9vbWZpZWxkIGlzIG9uZSBvZiBzZXZlcmFsIHByb2Zlc3NvcnMgd2hvIGhhcyBkZWNpZGVkIHRvXG5jb21wbGV0ZWx5IGVsaW1pbmF0ZSBwcmludCB0ZXh0Ym9va3MgZnJvbSBoZXIgY291cnNlcywgYXJndWluZyB0aGF0IHRoZWlyIGV4b3JiaXRhbnQgY29zdFxuYWRkcyBhbiB1bm5lY2Vzc2FyeSBmaW5hbmNpYWwgYnVyZGVuIG9uIHN0dWRlbnRzIHdobyBhcmUgYWxyZWFkeSB1bmRlciBoZWF2eSBmaW5hbmNpYWxcbnN0cmFpbi4gV2hpbGUgQmxvb21maWVsZCByZWNvZ25pemVzIHRoYXQgY2VydGFpbiBjb3N0cywgc3VjaCBhcyB0aG9zZSBhc3NvY2lhdGVkIHdpdGhcbmNvcHlyaWdodCwgYXJlIHVuYXZvaWRhYmxlLCBzaGUgYXNzZXJ0cyB0aGF0IHRoZXJlIGFyZSB3YXlzIHRvIGN1dCBjb3JuZXJzLiBTaGUgcHJvcG9zZXNcbnRoYXQgcHJvZmVzc29ycyBjcmVhdGUgdGhlaXIgb3duIGVsZWN0cm9uaWMgdGV4dGJvb2tzOyBhIG1vdmUgd2hpY2gsIGJ5IGF2b2lkaW5nIHRoZVxuaW50ZXJtZWRpYXJ5IG9mIGEgcHVibGlzaGluZyBjb21wYW55LCBjb3VsZCBzaWduaWZpY2FudGx5IHJlZHVjZSBjb3N0cy4gQ3VycmVudGx5IHNoZSBpc1xuY29sbGFib3JhdGluZyB3aXRoIHNldmVyYWwgY29sbGVhZ3VlcyBpbiBvcmRlciB0byBjcmVhdGUgYW4gZS10ZXh0Ym9vayBmb3IgYW4gaW50cm9kdWN0b3J5XG5jb3Vyc2UgaW4gbGF3OyBzb21ldGhpbmcgd2hpY2ggc2hlIGNvbnRlbmRzIHdpbGwgc2F2ZSBzdHVkZW50cyB0aG91c2FuZHMgb2YgZG9sbGFycy5cblxmSG93ZXZlciwgRWxsZW4gQm93bGVyLCBhIHNvY2lvbG9neSBwcm9mZXNzb3IgYXQgUml2ZXJicmlkZ2UsIGhhcyBzdGF0ZWQgdGhhdCBzaGUgaGFzIG5vXG5pbnRlbnRpb24gb2YgdG9zc2luZyBoZXIgcHJpbnQgdGV4dGJvb2tzIGFueXRpbWUgc29vbi4gU2hlIGFyZ3VlcyB0aGF0LCBhbHRob3VnaFxuQmxvb21maWVsZFx1MjAxOXMgbW90aXZlcyBhcmUgaG9ub3VyYWJsZSwgcmVxdWVzdGluZyBwcm9mZXNzb3JzIHRvIHByb2R1Y2UgdGhlaXIgb3duXG50ZXh0Ym9va3MgaXMgdW5yZWFsaXN0aWMuIEJldHdlZW4gdGVhY2hpbmcsIHJlc2VhcmNoLCBhbmQgYWRtaW5pc3RyYXRpdmUgb2JsaWdhdGlvbnMsIHRoZVxud29ya2xvYWQgb2YgYW55IHVuaXZlcnNpdHkgcHJvZmVzc29yIGlzIGFscmVhZHkgZXh0cmVtZWx5IGRlbWFuZGluZy4gVG8gcmVxdWVzdCB0aGF0XG5wcm9mZXNzb3JzIGRldmVsb3AgYSBjb3Vyc2UgdGV4dGJvb2ssIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJlZ3VsYXIgZHV0aWVzLCBpcyBzaW1wbHkgbm90XG5mZWFzaWJsZS4gVGhlIGRldmVsb3BtZW50IG9mIGEgdGV4dGJvb2ssIGFsYmVpdCBkaWdpdGFsLCBpbnZvbHZlcyBleHRlbnNpdmUgcmVzZWFyY2gsXG53cml0aW5nIGFuZCByZXZpZXdpbmcgLSB0YXNrcyB3aGljaCBhcmUgdGltZSBjb25zdW1pbmcgYW5kIHNob3VsZCByZXN1bHQgaW5cbmNvbXBlbnNhdGlvbi4gSG93ZXZlciwgQm93bGVyIGRvZXMgbm90IGV4cGVjdCB0aGF0IHByb2Zlc3NvcnMgd291bGQgc2VlIGFueSBpbmNyZWFzZVxuaW4gc2FsYXJ5IGlmIHRoZXkgZGV2ZWxvcGVkIHRoZWlyIG93biB0ZXh0Ym9va3MuXG5cbldoaWxlIEJsb29tZmllbGQgYWNrbm93bGVkZ2VzIHRoYXQgaGVyIHByb3Bvc2FsIHdvdWxkIGxlYWQgdG8gZXh0cmEgd29yaywgc2hlIGFzc2VydHNcbnRoYXQgdGhlIGVmZm9ydCBpcyB3b3J0aCBpdC4gSW4gdGhpcyBkaWdpdGFsIGFnZSwgdGhlIG1hbm5lciBpbiB3aGljaCBrbm93bGVkZ2UgaXNcbmNvbW11bmljYXRlZCBpcyByYXBpZGx5IGNoYW5naW5nLCBhbmQgdW5pdmVyc2l0aWVzLCBzaGUgYXJndWVzLCBtdXN0IGtlZXAgdXAuIFB1Ymxpc2hpbmdcbmEgcHJpbnQgdGV4dGJvb2sgdGFrZXMgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGltZSBmcm9tIHN0YXJ0IHRvIGZpbmlzaCwgb2Z0ZW4gcmVzdWx0aW5nIGluXG50aGUgaW5jbHVzaW9uIG9mIG91dC1vZi1kYXRlIGluZm9ybWF0aW9uLiBIb3dldmVyLCB3aXRoIHRoZSBzcGVlZCBpbiB3aGljaCBpbmZvcm1hdGlvblxuY2FuIGJlIHVwZGF0ZWQgaW4gYW4gZWxlY3Ryb25pYyB0ZXh0LCBwcm9mZXNzb3JzIGFyZSBiZXR0ZXIgYWJsZSB0byBwcm92aWRlIHN0dWRlbnRzIHdpdGhcbmN1cnJlbnQgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uLlxuXG5BbHRob3VnaCBoaXN0b3J5IHByb2Zlc3NvciBNYXJ0eSBCcm93biBzZWVzIHRoZSBwb3RlbnRpYWwgb2YgZS10ZXh0Ym9va3MsIGhlIGRpc2FncmVlc1xud2l0aCBwcm9mZXNzb3JzIHRlYWNoaW5nIGZyb20gdGV4dHMgdGhhdCB0aGV5IGhhdmUgd3JpdHRlbiB0aGVtc2VsdmVzLCBhcmd1aW5nIHRoYXQsIGJ5XG5kb2luZyBzdWNoLCB0aGVyZSBpcyBhIHJpc2sgb2Ygc3R1ZGVudHMgbm90IGJlaW5nIGV4cG9zZWQgdG8gdGhlIG11bHRpdHVkZSBvZiBwZXJzcGVjdGl2ZXNcbmluIHRoZWlyIGZpZWxkLiBGdXJ0aGVybW9yZSwgaGUgaW5zaXN0cyB0aGF0IG1hbnkgc3R1ZGVudHMgYWN0dWFsbHkgcHJlZmVyIHByaW50ZWQgdGV4dGJvb2tzXG50byBlbGVjdHJvbmljIG9uZXMuIEFjY29yZGluZ2x5LCBoZSBzdWdnZXN0cyB0aGF0IHByb2Zlc3NvcnMgYXNzaWduIGNvdXJzZSByZWFkaW5ncyB0aGF0XG5hcmUgYXZhaWxhYmxlIGluIGJvdGggcHJpbnQgYW5kIGVsZWN0cm9uaWMgZm9ybSwgbGVhdmluZyB0aGUgY2hvaWNlIHRvIHRoZSBzdHVkZW50cy4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJSZXBvcnQiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjoxNzksInRpbWVNaW51dGVzIjo0LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMyBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiVGhlIHByb2Zlc3NvciBpbiBmYXZvdXIgb2YgZS10ZXh0Ym9va3Mgd2FudHMgdG8iLCJvcHRpb25zIjpbInJlbGlldmUgc29tZSBvZiB0aGUgZmluYW5jaWFsIHByZXNzdXJlIHRoYXQgc3R1ZGVudHMgZmFjZS4iLCJjdXQgY29ybmVycyBpbiBvcmRlciB0byBzdHJlYW1saW5lIGFkbWluaXN0cmF0aXZlIHByb2NlZHVyZXMuIiwicmVxdWVzdCBjb21wZW5zYXRpb24gZm9yIGFueSBleHRyYSB3b3JrIHBlcmZvcm1lZC4iLCJleHBvc2Ugc3R1ZGVudHMgdG8gYSB2YXJpZXR5IG9mIHZpZXdwb2ludHMuIl0sImtleSI6MCwicmVjb24iOmZhbHNlfSx7Im4iOjIsInN0ZW0iOiJUaGUgcHJvZmVzc29yIHdobyBpcyB3cml0aW5nIGFuIGUtdGV4dGJvb2siLCJvcHRpb25zIjpbImlzIGFsc28gd3JpdGluZyBzZW5pb3IgbGV2ZWwgbGF3IGNvdXJzZSB0ZXh0Ym9va3MuIiwiaXMgd29ya2luZyB3aXRoIHNldmVyYWwgb3RoZXIgcHJvZmVzc29ycy4iLCJoYXMgd3JpdHRlbiBwcmludCB0ZXh0Ym9va3MgaW4gdGhlIHBhc3QuIiwid2lsbCByZWNlaXZlIGZpbmFuY2lhbCBjb21wZW5zYXRpb24gZm9yIGhlciB3b3JrLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiT25lIHByb2Zlc3NvciBiZWxpZXZlcyB0aGF0IGlmIHByb2Zlc3NvcnMgd3JvdGUgZS10ZXh0Ym9va3MsIHRoZW4iLCJvcHRpb25zIjpbInN0dWRlbnRzIHdvdWxkIGFwcHJlY2lhdGUgdGhlIHRyYWRpdGlvbmFsIHRleHRib29rcyBtb3JlLiIsInRoZXJlIHdvdWxkIGJlIGNvbmNlcm4gYWJvdXQgdGhlIGFkZGl0aW9uYWwgd29yay4iLCJ0aGUgY29tcGVuc2F0aW9uIGRlbWFuZGVkIGJ5IHByb2Zlc3NvcnMgd291bGQgYmUgY29zdGx5LiIsImtlZXBpbmcgdGhlIHRleHRzIHVwLXRvLWRhdGUgd291bGQgYmUgdGltZSBjb25zdW1pbmcuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJUaGUgcHJvZmVzc29yIHdobyBwcmVmZXJzIHByaW50IHRleHRib29rcyBiZWxpZXZlcyB0aGF0Iiwib3B0aW9ucyI6WyJ0aGUgcm9sZSBvZiBhIHByb2Zlc3NvciBpcyBxdWl0ZSBjaGFsbGVuZ2luZy4iLCJwdWJsaXNoaW5nIGNvbXBhbmllcyBjaGFyZ2UgdG9vIG11Y2ggZm9yIHRleHRib29rcy4iLCJkaXNjb3VudHMgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHN0dWRlbnRzIGluIG5lZWQuIiwiYSBwcm9mZXNzb3IncyBqb2IgaW52b2x2ZXMgd3JpdGluZyB0ZXh0Ym9va3MuIl0sImtleSI6MCwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJBY2NvcmRpbmcgdG8gdGhlIGxlY3R1cmUsIHB1Ymxpc2hpbmcgY29tcGFuaWVzIiwib3B0aW9ucyI6WyJhcmUgcHVibGlzaGluZyBtb3JlIHRleHRib29rcyBpbiBlbGVjdHJvbmljIGZvcm0uIiwicHJvdmlkZSBkaXNjb3VudHMgZm9yIGJ1bGsgcHVyY2hhc2VzIG9mIHRleHRib29rcy4iLCJlbnN1cmUgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiBieSBwdWJsaXNoaW5nIG5ldyBlZGl0aW9ucy4iLCJyZXF1aXJlIGEgbG9uZyBwZXJpb2Qgb2YgdGltZSB0byBwdWJsaXNoIGEgcHJpbnQgdGV4dC4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IkFjY29yZGluZyB0byB0aGUgaGlzdG9yeSBwcm9mZXNzb3IsIHN0dWRlbnRzIiwib3B0aW9ucyI6WyJtYXkgY2hvb3NlIGVpdGhlciBwcmludCBvciBlbGVjdHJvbmljIHRleHRib29rcy4iLCJjYW4gZG93bmxvYWQgZWxlY3Ryb25pYyB0ZXh0Ym9vayB1cGRhdGVzIGluIGNsYXNzLiIsInNob3VsZCBhcHBseSBmb3IgYnVyc2FyaWVzIHRvIGNvdmVyIHRleHRib29rIGNvc3RzLiIsImNhbiBjaG9vc2Ugbm90IHRvIHB1cmNoYXNlIHRoZWlyIHRleHRib29rcy4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDIgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 2 Practice Test 1: 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-6007","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6007","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=6007"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6007\/revisions"}],"predecessor-version":[{"id":6612,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6007\/revisions\/6612"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}