{"id":6164,"date":"2026-07-06T05:45:43","date_gmt":"2026-07-06T05:45:43","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-12-test-1-listening\/"},"modified":"2026-07-12T03:25:06","modified_gmt":"2026-07-12T03:25:06","slug":"celpip-set-12-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-12-test-1-listening\/","title":{"rendered":"CELPIP Set 12 \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 12 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDEtcDFzMS5tcDMiLCIwLjEiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMnQxLXAxczIubXAzIiwiMC4yIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDEtcDIubXAzIiwiMi4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0MS1wMy5tcDMiLCIzLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXMxMnQxLXA0Lm1wMyIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczEydDEtcDYubXAzIiwiNC4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zMTJ0MS1wNS5tcDQifTt2YXIgQ0xQX0FVRElPX1ZJREVPPXsiNC4wIjoxfTsKCihmdW5jdGlvbigpe3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cy50ZXh0Q29udGVudD0iXG4vKiA9PT09PT09PT09PT0gQ0VMUElQIExpc3RlbmluZyBQcmFjdGljZSBcdTIwMTQgc2NvcGVkLCBXb3JkUHJlc3Mtc2FmZSA9PT09PT09PT09PT0gKi9cbi5jbHAtd3JhcHtcbiAgLyogVkFSSUFOVF9DSFJPTUVfU1RBUlQgKi9cbiAgLS1iYXItYmc6I0U4RUJFRjtcbiAgLS1iYXItYm9yZGVyOiNEM0Q5RTA7XG4gIC0tYmFyLXRleHQ6IzFGMjkzNztcbiAgLS1wYW5lbC1tZWRpYS1iZzojRjRGNUY3O1xuICAtLXBhbmVsLW1lZGlhLWJvcmRlcjojRTNFNkVBO1xuICAtLW1lZGlhLWNhcmQtYmc6I0VDRUVGMTtcbiAgLS1tZWRpYS1jYXJkLWJvcmRlcjojRDhEREUzO1xuICAtLXBhbmVsLXEtYmc6I0U5RjRGNztcbiAgLS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEO1xuICAtLWRkLW9wZW4tYmc6I0NCRUJGNDtcbiAgLyogVkFSSUFOVF9DSFJPTUVfRU5EICovXG4gIC0tbmF2eTojMDUwRTIwOyAtLWRhcms6IzBBMTYyODsgLS1iOTAwOiMwRDIzNTI7IC0tYjcwMDojMTI0NUE4OyAtLWI1MDA6IzI1NjNFQjtcbiAgLS1iNDAwOiMzQjgyRjY7IC0tYjIwMDojOTNDNUZEOyAtLWIxMDA6I0RCRUFGRTsgLS1iNTA6I0VGRjZGRjtcbiAgLS10ZWFsOiMwRDk0ODg7IC0tY3lhbjojMDZCNkQ0OyAtLWdyZWVuOiMxMEI5ODE7IC0tZ3JlZW41MDojRUNGREY1O1xuICAtLXJvc2U6I0Y0M0Y1RTsgLS1vcmFuZ2U6I0Y5NzMxNjtcbiAgLS10ZXh0OiMwRjE3MkE7IC0tbXV0ZWQ6IzQ3NTU2OTsgLS1zdWJ0bGU6Izk0QTNCODsgLS1ib3JkZXI6I0UyRThGMDtcbiAgLS1jcmltc29uOiNCNDJCM0M7IC0td2hpdGU6I0ZGRkZGRjsgLS1wYWdlOiNGOEZBRkY7XG4gIGZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sc2Fucy1zZXJpZjtcbiAgY29sb3I6dmFyKC0tdGV4dCk7XG4gIG1heC13aWR0aDoxMTQwcHg7IG1hcmdpbjowIGF1dG87IHBhZGRpbmc6MTZweCAxNnB4IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OjEuNTsgZm9udC1zaXplOjE2cHg7XG59XG4uY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVyeyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH1cbi5jbHAtd3JhcCBidXR0b257IGZvbnQtZmFtaWx5OmluaGVyaXQ7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLXdyYXAgaDEsLmNscC13cmFwIGgyLC5jbHAtd3JhcCBoMywuY2xwLXdyYXAgcHsgbWFyZ2luOjA7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uY2xwLWhlcm97XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci1yYWRpdXM6MjJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1uYXZ5KTsgY29sb3I6I2ZmZjtcbiAgcGFkZGluZzozNnB4IDQwcHg7XG4gIGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTRweDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDtcbiAgYm94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoNSwxNCwzMiwuMyk7XG59XG4uY2xwLWF1cm9yYXsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7IH1cbi5jbHAtYXVyb3JhIHNwYW57XG4gIHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjUwJTsgZmlsdGVyOmJsdXIoNjBweCk7IG9wYWNpdHk6LjU7XG4gIGFuaW1hdGlvbjpjbHBGbG9hdCAxNHMgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlO1xufVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMSl7IHdpZHRoOjQyMHB4OyBoZWlnaHQ6NDIwcHg7IGxlZnQ6LTEyMHB4OyB0b3A6LTIwMHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgyKXsgd2lkdGg6MzgwcHg7IGhlaWdodDozODBweDsgcmlnaHQ6LTgwcHg7IHRvcDotMTYwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotNHM7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDMpeyB3aWR0aDozNDBweDsgaGVpZ2h0OjM0MHB4OyByaWdodDoyMiU7IGJvdHRvbTotMjQwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7IGFuaW1hdGlvbi1kZWxheTotOHM7IH1cbkBrZXlmcmFtZXMgY2xwRmxvYXR7XG4gIGZyb217IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDAsMCkgc2NhbGUoMSk7IH1cbiAgdG97IHRyYW5zZm9ybTp0cmFuc2xhdGUzZCg0MHB4LDI2cHgsMCkgc2NhbGUoMS4xMik7IH1cbn1cbi5jbHAtaGVyby1zaGltbWVye1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTtcbiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTE1ZGVnLCB0cmFuc3BhcmVudCAzMCUsIHJnYmEoMTQ3LDE5NywyNTMsLjEwKSA0NSUsIHJnYmEoNiwxODIsMjEyLC4xMikgNTAlLCB0cmFuc3BhcmVudCA2NSUpO1xuICBiYWNrZ3JvdW5kLXNpemU6MjUwJSAxMDAlO1xuICBhbmltYXRpb246Y2xwU2hpbW1lciA3cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgY2xwU2hpbW1lcnsgMCV7YmFja2dyb3VuZC1wb3NpdGlvbjoxMjAlIDA7fSA1NSV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSAxMDAle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gfVxuLmNscC1oZXJvLWJhZGdlc3sgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgYWxpZ24taXRlbXM6Y2VudGVyOyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtYmFkZ2UtYnJhbmR7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjEycHg7XG4gIGxldHRlci1zcGFjaW5nOi4xMmVtOyBwYWRkaW5nOjVweCAxMnB4OyBib3JkZXItcmFkaXVzOjZweDtcbn1cbi5jbHAtYmFkZ2Utc2V0eyBjb2xvcjp2YXIoLS1iMjAwKTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuLmNscC1oZXJvIGgxeyBwb3NpdGlvbjpyZWxhdGl2ZTsgZm9udC1zaXplOmNsYW1wKDI2cHgsNHZ3LDQwcHgpOyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDJlbTsgbGluZS1oZWlnaHQ6MS4xMjsgfVxuLmNscC1oZXJvLWNoaXBzeyBkaXNwbGF5OmZsZXg7IGdhcDo4cHg7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1jaGlwe1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA5KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7XG4gIGNvbG9yOiNEQkVBRkU7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IHBhZGRpbmc6NnB4IDE0cHg7IGJvcmRlci1yYWRpdXM6MzJweDtcbiAgYmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBiYWNrZ3JvdW5kIC4yNXMgZWFzZTtcbn1cbi5jbHAtY2hpcDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTUpOyB9XG4uY2xwLWN0YXtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzNHB4OyBtYXJnaW4tdG9wOjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMzcsOTksMjM1LC42NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yMnMgZWFzZSwgYm94LXNoYWRvdyAuMjJzIGVhc2UsIGJhY2tncm91bmQgLjIycyBlYXNlO1xufVxuLmNscC1jdGE6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBib3gtc2hhZG93OjAgMTRweCAyNnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjc1KTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RJQ0tZIFRPT0xCQVIgPT09PT09PT09PT09ICovXG4uY2xwLXRvb2xiYXJbaGlkZGVuXXsgZGlzcGxheTpub25lOyB9XG4uY2xwLXRvb2xiYXJ7XG4gIHBvc2l0aW9uOnN0aWNreTsgdG9wOjhweDsgei1pbmRleDo2MDtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmbGV4LXdyYXA6d3JhcDtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC45Mik7IGJhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4O1xuICBwYWRkaW5nOjhweCAxMnB4OyBtYXJnaW46MThweCAwIDA7XG4gIGJveC1zaGFkb3c6MCA4cHggMjRweCAtMTRweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTtcbiAgbWluLWhlaWdodDo1MnB4O1xufVxuLmNscC1zY29yZS1jaGlwe1xuICBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6N3B4IDE2cHg7XG59XG4uY2xwLXRidG57XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzo5cHggMTZweDtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLW11dGVkKTtcbiAgbWluLWhlaWdodDo0MHB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYm94LXNoYWRvdyAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtdGJ0bjpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IGJveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXRidG4tY2hlY2t7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBib3JkZXItY29sb3I6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyB9XG4uY2xwLXRidG4tY2hlY2s6aG92ZXJ7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuLmNscC10YnRuW2Rpc2FibGVkXXsgb3BhY2l0eTouNTsgY3Vyc29yOm5vdC1hbGxvd2VkOyB0cmFuc2Zvcm06bm9uZTsgYm94LXNoYWRvdzpub25lOyB9XG4uY2xwLXRvb2xiYXItc3BhY2VyeyBmbGV4OjE7IH1cblxuLyogPT09PT09PT09PT09IENBVCBTSU1VTEFUT1IgPT09PT09PT09PT09ICovXG4uY2xwLXNpbXsgbWFyZ2luLXRvcDoxOHB4OyB9XG4uY2xwLWRvdHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjZweDsgbWFyZ2luOjAgMCAxMHB4IDJweDsgfVxuLmNscC1kb3R7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1zdWJ0bGUpO1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6NHB4IDEwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMjVzIGVhc2UsIGNvbG9yIC4yNXMgZWFzZTtcbn1cbi5jbHAtZG90LmNscC1kb25leyBiYWNrZ3JvdW5kOnZhcigtLWIxMDApOyBib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLWRvdC5jbHAtY3VyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IH1cbi5jbHAtZG90LmNscC1jbGlja2FibGV7IGN1cnNvcjpwb2ludGVyOyB9XG4uY2xwLWRvdDpub3QoLmNscC1jbGlja2FibGUpeyBjdXJzb3I6ZGVmYXVsdDsgfVxuXG4uY2xwLWNhdHtcbiAgcG9zaXRpb246cmVsYXRpdmU7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDsgb3ZlcmZsb3c6dmlzaWJsZTtcbiAgYmFja2dyb3VuZDojZmZmO1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0xOHB4IHJnYmEoMTUsMjMsNDIsLjIyKSwgMCAycHggOHB4IC01cHggcmdiYSgxNSwyMyw0MiwuMSk7XG59XG4uY2xwLWJhcntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLWJhci1iZyk7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7XG4gIHBhZGRpbmc6OXB4IDEycHg7IG1pbi1oZWlnaHQ6NDRweDtcbn1cbi5jbHAtYmFyLXRpdGxleyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtYmFyLXRpbWVyeyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyB3aGl0ZS1zcGFjZTpub3dyYXA7IH1cbi5jbHAtYmFyLXRpbWVyIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1uZXh0e1xuICBiYWNrZ3JvdW5kOnZhcigtLWI3MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo0cHg7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7XG4gIHBhZGRpbmc6N3B4IDE2cHg7IG1pbi1oZWlnaHQ6MzBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG59XG4uY2xwLW5leHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjkwMCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyB9XG4uY2xwLXNjcmVlbnsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4OyBvdmVyZmxvdzpoaWRkZW47IH1cblxuLmNscC1pbnN0cntcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0OyBnYXA6OXB4O1xuICBwYWRkaW5nOjE0cHggMTZweCAxMnB4OyBiYWNrZ3JvdW5kOiNmZmY7XG59XG4uY2xwLWluZm97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MThweDsgaGVpZ2h0OjE4cHg7IG1hcmdpbi10b3A6MnB4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTFweDsgZm9udC1zdHlsZTppdGFsaWM7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC1mYW1pbHk6R2VvcmdpYSxzZXJpZjtcbn1cbi5jbHAtaW5zdHIgcHsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tYjkwMCk7IH1cblxuLyogaW50cm8gc2NyZWVuICovXG4uY2xwLWludHJvLWJvZHl7IHBhZGRpbmc6NnB4IDIwcHggMjZweCA0NHB4OyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtaW50cm8tYm9keSBoM3sgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjgwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTJweDsgfVxuLmNscC1idWxsZXRzeyBsaXN0LXN0eWxlOm5vbmU7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgbWF4LXdpZHRoOjY0MHB4OyB9XG4uY2xwLWJ1bGxldHMgbGl7XG4gIGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWI5MDApO1xuICBwYWRkaW5nLWJvdHRvbToxMHB4OyBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5jbHAtYnVsbGV0cyBsaTo6YmVmb3JleyBjb250ZW50OlwiXCI7IGZsZXg6bm9uZTsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgbWFyZ2luLXRvcDo2cHg7IH1cblxuLyogbWVkaWEgc2NyZWVuICovXG4uY2xwLW1lZGlhLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLW1lZGlhLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtbWVkaWEtYm9yZGVyKTtcbiAgcGFkZGluZzozNHB4IDIwcHggMjZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7XG59XG4uY2xwLW1lZGlhLWNhcmR7XG4gIHdpZHRoOjEwMCU7IG1heC13aWR0aDo1MjBweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1tZWRpYS1jYXJkLWJnKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgcGFkZGluZzoyMnB4IDI2cHg7XG59XG4uY2xwLW1lZGlhLWNhcmQuY2xwLWlzLXZpZGVveyBtYXgtd2lkdGg6NjYwcHg7IHBhZGRpbmc6MTJweDsgfVxuLmNscC1tZWRpYS16b25leyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE4cHg7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS16b25le1xuICBhc3BlY3QtcmF0aW86MTYvOTsgd2lkdGg6MTAwJTsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6dmFyKC0tZGFyayk7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBtYXJnaW4tYm90dG9tOjEycHg7XG4gIGNvbG9yOiNmZmY7XG59XG4uY2xwLXNwZWFrZXJ7XG4gIGZsZXg6bm9uZTsgd2lkdGg6NTZweDsgaGVpZ2h0OjU2cHg7IGJvcmRlci1yYWRpdXM6OHB4OyBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xufVxuLmNscC1pcy12aWRlbyAuY2xwLXNwZWFrZXJ7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpOyBib3JkZXI6bm9uZTsgY29sb3I6I2ZmZjsgd2lkdGg6NjRweDsgaGVpZ2h0OjY0cHg7IGJvcmRlci1yYWRpdXM6NTAlOyB9XG4uY2xwLW1lZGlhLW1haW57IGZsZXg6MTsgbWluLXdpZHRoOjA7IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1tZWRpYS1tYWlueyBwYWRkaW5nOjAgMTBweCA0cHg7IH1cbi5jbHAtbWVkaWEtbGFiZWx7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLXByb2dyZXNzeyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtcHJvZ3Jlc3N7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuNik7IH1cbi5jbHAtcHJvZ3Jlc3MtZmlsbHsgaGVpZ2h0OjEwMCU7IHdpZHRoOjAlOyBiYWNrZ3JvdW5kOnZhcigtLWN5YW4pOyBib3JkZXItcmFkaXVzOjZweDsgdHJhbnNpdGlvbjp3aWR0aCAuM3MgbGluZWFyOyB9XG4uY2xwLW1lZGlhLW1ldGF7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwO1xufVxuLmNscC1tZWRpYS1tZXRhIHN2Z3sgZGlzcGxheTpibG9jazsgfVxuLmNscC1vbmNlLW5vdGV7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo2MDA7IH1cblxuLyogcXVlc3Rpb24gc2NyZWVuICovXG4uY2xwLXEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtcS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLXEtYm9yZGVyKTtcbiAgcGFkZGluZzoyMHB4IDIycHggMzBweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoyMHB4O1xufVxuLmNscC1xeyBmb250LXNpemU6MTUuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBsaW5lLWhlaWdodDoyOyB9XG4uY2xwLXFudW17IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1kZHtcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4O1xuICBib3JkZXI6bm9uZTsgYm9yZGVyLWJvdHRvbToycHggZG90dGVkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7XG4gIGNvbG9yOnZhcigtLWI3MDApOyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwO1xuICBwYWRkaW5nOjRweCA4cHggM3B4OyBtYXJnaW46MCAycHg7IG1pbi1oZWlnaHQ6MzJweDsgbWF4LXdpZHRoOjEwMCU7XG4gIGJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWRkOmhvdmVyeyBiYWNrZ3JvdW5kOnJnYmEoMzcsOTksMjM1LC4wOCk7IH1cbi5jbHAtZGQuY2xwLW9wZW57IGJhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7IH1cbi5jbHAtZGQgLmNscC1kZC10ZXh0e1xuICBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOm5vd3JhcDsgbWF4LXdpZHRoOjQyMHB4O1xufVxuLmNscC1kZCAuY2xwLWRkLWNhcmV0eyBmb250LXNpemU6OXB4OyBjb2xvcjp2YXIoLS1iNzAwKTsgZmxleDpub25lOyB9XG4uY2xwLWRkLmNscC11bmFuc3dlcmVkIC5jbHAtZGQtdGV4dHsgbGV0dGVyLXNwYWNpbmc6MnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyB9XG4uY2xwLWRkLmNscC1tYXJrLXJpZ2h0eyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiMwNDc4NTc7IH1cbi5jbHAtZGQuY2xwLW1hcmstd3Jvbmd7IGJhY2tncm91bmQ6I0ZGRjFGMjsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1yb3NlKTsgYm9yZGVyLXJhZGl1czo2cHg7IGNvbG9yOiNCRTEyM0M7IH1cbi5jbHAtZGRbZGlzYWJsZWRdeyBjdXJzb3I6ZGVmYXVsdDsgfVxuLmNscC1yZXZlYWx7XG4gIGRpc3BsYXk6YmxvY2s7IGZvbnQtc2l6ZToxMy41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6IzA0Nzg1NzsgbGluZS1oZWlnaHQ6MS41O1xuICBtYXJnaW46MnB4IDAgMCAyNnB4O1xufVxuLmNscC1yZXZlYWwgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLXRvZG8tdGFne1xuICBmb250LXNpemU6MTBweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgY29sb3I6dmFyKC0tb3JhbmdlKTtcbiAgYm9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yYWRpdXM6NHB4OyBwYWRkaW5nOjFweCA2cHg7IG1hcmdpbi1sZWZ0OjhweDsgdmVydGljYWwtYWxpZ246MnB4O1xufVxuXG4vKiBkcm9wZG93biBwb3B1cCAqL1xuLmNscC1wb3B7XG4gIHBvc2l0aW9uOmFic29sdXRlOyB6LWluZGV4OjgwOyB3aWR0aDptaW4oMzQwcHgsIGNhbGMoMTAwdncgLSA0OHB4KSk7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGJveC1zaGFkb3c6MCAxOHB4IDQwcHggLTEycHggcmdiYSgxNSwyMyw0MiwuMjgpLCAwIDRweCAxMnB4IC02cHggcmdiYSgxNSwyMyw0MiwuMTQpO1xuICBwYWRkaW5nOjZweDsgXG59XG4uY2xwLW9wdHtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMXB4OyB3aWR0aDoxMDAlO1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgcGFkZGluZzoxMHB4IDEycHg7IG1pbi1oZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG4gIGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlO1xufVxuLmNscC1vcHQ6bGFzdC1jaGlsZHsgYm9yZGVyLWJvdHRvbTpub25lOyB9XG4uY2xwLW9wdDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXJhZGlve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE3cHg7IGhlaWdodDoxN3B4OyBib3JkZXItcmFkaXVzOjUwJTtcbiAgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOiNmZmY7IHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlveyBib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7IH1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpbzo6YWZ0ZXJ7XG4gIGNvbnRlbnQ6XCJcIjsgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjIuNXB4OyBib3JkZXItcmFkaXVzOjUwJTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTtcbn1cblxuLyogcHJlLXN0YXJ0IC8gZmluaXNoICovXG4uY2xwLWlkbGV7XG4gIHBhZGRpbmc6NTZweCAyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7XG59XG4uY2xwLWlkbGUgcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXgtd2lkdGg6NDgwcHg7IG1hcmdpbjowIGF1dG87IH1cbi5jbHAtZmluaXNoeyBwYWRkaW5nOjQ4cHggMjRweCA1NnB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWZpbmlzaCBoM3sgZm9udC1zaXplOjIycHg7IGZvbnQtd2VpZ2h0OjgwMDsgbWFyZ2luLWJvdHRvbToxMHB4OyB9XG4uY2xwLWZpbmlzaCBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MjJweDsgfVxuLmNscC1maW5pc2gtY2hlY2t7XG4gIGJhY2tncm91bmQ6dmFyKC0tZ3JlZW4pOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzJweDsgbWluLWhlaWdodDo0NHB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgxNiwxODUsMTI5LC41NSk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1maW5pc2gtY2hlY2s6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cblxuLyogPT09PT09PT09PT09IFJFU1VMVFMgPT09PT09PT09PT09ICovXG4uY2xwLXJlc3VsdHN7IG1hcmdpbi10b3A6MzBweDsgfVxuLmNscC1yZXN1bHRzIGgyeyBmb250LXNpemU6MjRweDsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAxZW07IG1hcmdpbi1ib3R0b206MTZweDsgfVxuLmNscC1yZXMtZ3JpZHsgZGlzcGxheTpncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnI7IGdhcDoxNnB4OyBhbGlnbi1pdGVtczpzdHJldGNoOyB9XG4uY2xwLWNhcmR7XG4gIGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IHBhZGRpbmc6MjJweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4yNSksIDAgMnB4IDhweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjA4KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLCBib3gtc2hhZG93IC4yNXMgZWFzZTtcbn1cbi5jbHAtY2FyZDpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCAxNnB4IDM2cHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtcmluZy1jYXJkeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtaW4td2lkdGg6MjIwcHg7IH1cbi5jbHAtcmluZy13cmFweyBwb3NpdGlvbjpyZWxhdGl2ZTsgd2lkdGg6MTMycHg7IGhlaWdodDoxMzJweDsgfVxuLmNscC1yaW5nLXdyYXAgc3ZneyB0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtcmluZy1udW17XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjtcbiAgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LXdlaWdodDo4MDA7XG59XG4uY2xwLXJpbmctbnVtIGJ7IGZvbnQtc2l6ZToyOHB4OyBsaW5lLWhlaWdodDoxOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1yaW5nLW51bSBzcGFueyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXJpbmctY2FyZCBoM3sgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLXBhcnQtY2hpcHN7IGRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH1cbi5jbHAtcGFydC1jaGlwe1xuICBib3JkZXItcmFkaXVzOjMycHg7IHBhZGRpbmc6OHB4IDE2cHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgY29sb3I6dmFyKC0tYjkwMCk7XG59XG4uY2xwLXBhcnQtY2hpcCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtY2xiLXJvd3tcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4OyBmbGV4LXdyYXA6d3JhcDsgbWFyZ2luLXRvcDoxNnB4O1xuICBwYWRkaW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7XG59XG4uY2xwLWNsYi1iYWRnZXtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDtcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjhweCAxNnB4O1xufVxuLmNscC1jbGItcm93IHB7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDsgZmxleDoxOyBtaW4td2lkdGg6MjAwcHg7IH1cbi5jbHAtdHJhbnNjcmlwdHN7IG1hcmdpbi10b3A6MTZweDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyB9XG4uY2xwLXRyLWNhcmR7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC10ci1oZWFke1xuICB3aWR0aDoxMDAlOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDoxMHB4O1xuICBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6bm9uZTsgcGFkZGluZzoxNXB4IDIwcHg7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1pbi1oZWlnaHQ6NDhweDtcbn1cbi5jbHAtdHItaGVhZDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyB9XG4uY2xwLXRyLWhlYWQgLmNscC10ci1jYXJldHsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC1zaXplOjExcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlOyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1jYXJldHsgdHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpOyB9XG4uY2xwLXRyLWJvZHl7IGRpc3BsYXk6bm9uZTsgcGFkZGluZzowIDIwcHggMThweDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NTAwOyBsaW5lLWhlaWdodDoxLjc7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWJvZHl7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtdHItdG9kb3sgY29sb3I6dmFyKC0tb3JhbmdlKTsgZm9udC13ZWlnaHQ6NzAwOyBmb250LXNpemU6MTIuNXB4OyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tdG9wOjhweDsgfVxuXG4vKiBzY3JvbGwgcmV2ZWFsICovXG4uY2xwLXJldnsgb3BhY2l0eTowOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KTsgdHJhbnNpdGlvbjpvcGFjaXR5IC41cyBlYXNlLCB0cmFuc2Zvcm0gLjVzIGVhc2U7IH1cbi5jbHAtcmV2LmNscC1pbnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTUE9OU0lWRSA9PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOjcwMHB4KXtcbiAgLmNscC13cmFweyBwYWRkaW5nOjEwcHggMTBweCA0MHB4OyB9XG4gIC5jbHAtaGVyb3sgcGFkZGluZzoyOHB4IDIycHg7IGJvcmRlci1yYWRpdXM6MTZweDsgfVxuICAuY2xwLXF7IGZvbnQtc2l6ZToxNXB4OyB9XG4gIC5jbHAtZGR7IG1pbi1oZWlnaHQ6NDBweDsgfVxuICAuY2xwLWRkIC5jbHAtZGQtdGV4dHsgbWF4LXdpZHRoOjE4MHB4OyB9XG4gIC5jbHAtYmFyeyBmbGV4LXdyYXA6d3JhcDsgfVxuICAuY2xwLWJhci10aXRsZXsgZmxleC1iYXNpczoxMDAlOyB9XG4gIC5jbHAtcS1wYW5lbHsgcGFkZGluZzoxNnB4IDE0cHggMjZweDsgfVxuICAuY2xwLWludHJvLWJvZHl7IHBhZGRpbmctbGVmdDoyMHB4OyB9XG4gIC5jbHAtcmVzLWdyaWR7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7IH1cbiAgLmNscC1tZWRpYS1jYXJkeyBwYWRkaW5nOjE2cHg7IH1cbn1cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKXtcbiAgLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcntcbiAgICBhbmltYXRpb246bm9uZSAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOm5vbmUgIWltcG9ydGFudDtcbiAgfVxuICAuY2xwLXJldnsgb3BhY2l0eToxOyB0cmFuc2Zvcm06bm9uZTsgfVxufVxuXG4uY2xwLWF1cm9yYSBzcGFue2ZpbHRlcjpibHVyKDM2cHgpO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfVxuLmNscC1oZXJvLXNoaW1tZXJ7d2lsbC1jaGFuZ2U6YmFja2dyb3VuZC1wb3NpdGlvbn1cbiI7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzKTt9KSgpOwoKJ3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVEVTVF9EQVRBIFx1MjAxNCBzd2FwIGluIG5ldyBzZXRzIGhlcmUgd2l0aG91dCB0b3VjaGluZyBtYXJrdXAuCiAgIFNoYXBlOiB7IHBhcnRzOlt7IG5hbWUsIGhlYWRlclRpdGxlLCBpbnRyb1RpdGxlLCBpbnRyb0J1bGxldHNbXSwKICAgICAgICAgICAgcUluc3RydWN0aW9uLCB0cmFuc2NyaXB0LCBzZWN0aW9uczpbeyBsYWJlbCwgbWVkaWFUeXBlLAogICAgICAgICAgICBkdXJhdGlvbihzZWMpLCB0aW1lTWludXRlcywgbWVkaWFJbnN0cnVjdGlvbiwKICAgICAgICAgICAgcXVlc3Rpb25zOlt7IG4sIHN0ZW0sIG9wdGlvbnNbNF0sIGtleSgxLTQpLCB0b2RvPyB9XSB9XSB9XSB9CiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwp2YXIgVEVTVF9EQVRBID0geyJ0ZXN0TGFiZWwiOiJTZXQgMTIgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjoiMTIiLCJ0ZXN0Tm8iOiIxIiwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGluIGEgY2hpbGRyZW4ncyB0b3kgc3RvcmUuIFRoZSBtYW4gaXMgYSBjdXN0b21lciwgYW5kIHRoZSB3b21hbiBpcyBhIHNhbGVzcGVyc29uIGF0IHRoZSBzdG9yZS4gSXQgcGxheXMgaW4gdGhyZWUgc2VjdGlvbnMsIGFuZCBlYWNoIHNlY3Rpb24gcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIGVhY2ggc2VjdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZ1xuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGluIGEgY2hpbGRyZW5cdTIwMTlzIHRveSBzdG9yZS4gVGhlXG5tYW4gaXMgYSBjdXN0b21lciwgYW5kIHRoZSB3b21hbiBpcyBhIHNhbGVzcGVyc29uIGF0IHRoZSBzdG9yZS5cblNlY3Rpb24gMTpcbk1BTjogSGVsbG8sIElcdTIwMTltIHdvbmRlcmluZyBpZiBJIGNhbiByZXR1cm4gdGhpcyBhbmQgZ2V0IHNvbWV0aGluZyBlbHNlLiBJIGJvdWdodCBpdCBhcyBhXG5iaXJ0aGRheSBwcmVzZW50IGZvciBteSBuaWVjZSwgYW5kIGhlciBtb3RoZXIgLS0gdGhhdCBpcywgbXkgc2lzdGVyIC0tIHNheXMgaXRcdTIwMTlzIHRvbyBnaXJseS5cbldPTUFOOiBJdCBpcyBvbmUgb2Ygb3VyIGJlc3Qgc2VsbGluZyBkb2xscywgYnV0IEkgdW5kZXJzdGFuZCB3aGF0IHRoZSBnaXJsXHUyMDE5cyBtb3RoZXIgaXNcbnNheWluZy4gSSB0aGluayB0aGUgcGluayBmcmlsbHkgZHJlc3MgaXMgYSBiaXQgbXVjaCwgdG9vLiBNYW55IHBhcmVudHMgdGhlc2UgZGF5cyBwcmVmZXIgdG9cbmJ1eSB0b3lzIHRoYXQgYXJlIG5vdCBtYWRlIHNwZWNpZmljYWxseSBmb3IgZ2lybHMgb3IgZm9yIGJveXMuXG5NQU46IFNvIHdoYXQgZG8geW91IHN1Z2dlc3Q\/IEEgc3R1ZmZlZCBhbmltYWw\/IE9yIGJpY3ljbGU\/IE5vLCB0aGF0XHUyMDE5cyB0b28gZXhwZW5zaXZlLlxuV09NQU46ICAgICAgICBIb3cgYWJvdXQgdGhpcyB0YWxraW5nIGNvbXB1dGVyPyBJdFx1MjAxOXMgZGVzaWduZWQgdG8gbWFrZSBjb21wdXRlcnMgZnVuLlxuTUFOOiBJdCBpcyBicmlnaHRseSBjb2xvdXJlZCwgYnV0IG5vdCBibHVlIG9yIHBpbmssIGFuZCBjZXJ0YWlubHkgYm90aCBib3lzIGFuZCBnaXJsc1xuc2hvdWxkIHBsYXkgd2l0aCBjb21wdXRlcnNcdTIwMjZJXHUyMDE5bGwgdGFrZSBpdCFcblNlY3Rpb24gMjpcbldPTUFOOiAgICAgICAgSGVsbG8gYWdhaW4hIFRoZSB0YWxraW5nIGNvbXB1dGVyIHdhc25cdTIwMTl0IGFjY2VwdGFibGUgZWl0aGVyP1xuTUFOOiBJXHUyMDE5bSBhZnJhaWQgbm90LiBJdCB1c2VzIGJhdHRlcmllcywgd2hpY2ggYXJlIHRveGljIHdhc3RlLiBNeSBzaXN0ZXIgaXMgcmVhbGx5IHdvcnJpZWRcbmFib3V0IHBvbGx1dGlvbi5cbldPTUFOOiBXZWxsLCB0aGUgdG95IHdpbGwgd29yayB3aXRoIHJlY2hhcmdlYWJsZSBiYXR0ZXJpZXMsIGJ1dCBsZXRcdTIwMTlzIHNlZSBpZiB3ZSBjYW5cbmZpbmQgc29tZXRoaW5nIGVsc2UuLi4gSG93IGFib3V0IHRoaXM\/IEEgcHV6emxlIGJvb2suXG5NQU46IEl0XHUyMDE5cyBhIHZlcnkgYmlnIHB1enpsZSBib29rIVxuV09NQU46IFllcywgdGhlcmUgYXJlIGEgaHVuZHJlZCBwdXp6bGVzIGluIGl0LiBTb21lIGFyZSB3b3JkIHB1enpsZXMgLS0gbGlrZVxuYXJyYW5naW5nIGxldHRlcnMgdG8gbWFrZSBhIHdvcmQuIEFuZCBzb21lIGFyZSBwaWN0dXJlIHB1enpsZXMgLS0gbGlrZSBmaW5kaW5nIGFuIG9iamVjdFxuXHUyMDE4aGlkZGVuXHUyMDE5IGluIGEgcGljdHVyZS5cbk1BTjogQW5kIG15IHNpc3RlciBjYW4ganVzdCByZWN5Y2xlIHRoZSBib29rIGxhdGVyLiBJdFx1MjAxOXMgcGFwZXIuXG5XT01BTjogICAgICAgIE5vdCBvbmx5IHRoYXQsIHRoZSBib29rIGl0c2VsZiBpcyBtYWRlIGZyb20gcmVjeWNsZWQgcGFwZXIhXG5TZWN0aW9uIDM6XG5NQU46IEhlbGxvLCBJIGp1c3QgY2FtZSBieSB0byB0ZWxsIHlvdSB0aGF0IHRoZSBwdXp6bGUgYm9vayB3YXMgYSBoaXQhIE15IG5pZWNlIGxvdmVkIGl0IVxuV09NQU46ICAgICAgICBIZXIgbW90aGVyIGxpa2VkIGl0IGFzIHdlbGw\/XG5NQU46IFNoZSBkaWQgaW5kZWVkISBGcm9tIG5vdyBvbiwgdGhhdFx1MjAxOXMgZ29pbmcgdG8gYmUgdGhlIGdpZnQgSSBhbHdheXMgYnV5IGZvciBjaGlsZHJlbi5cblRvbyBiYWQgdGhlcmUgYXJlblx1MjAxOXQgZGlmZmVyZW50IGVkaXRpb25zIGZvciBkaWZmZXJlbnQgYWdlcy5cbldPTUFOOiBUaGF0XHUyMDE5cyBhIHdvbmRlcmZ1bCBpZGVhISBZb3Ugc2hvdWxkIHdyaXRlIHRvIHRoZSBwdWJsaXNoZXIhIElcdTIwMTlsbCBiZXQgdGhlXG5hdXRob3IgaGFzIGFscmVhZHkgdGhvdWdodCBvZiB0aGF0Li5cbk1BTjogWW91IGNvdWxkIGJlIHJpZ2h0LiBNYXliZSB0aGUgcHVibGlzaGVyIGp1c3QgbmVlZHMgdG8gaGVhciB0aGVyZVx1MjAxOXMgYSBkZW1hbmQgZm9yXG5zaW1pbGFyIGJvb2tzIGZvciBvbGRlciBraWRzLiBUaGUgYm9vayBpcyByZWFsbHkgcXVpdGUgd29uZGVyZnVsIC0tIEkgdG9vayBhIGdvb2QgbG9vayBhdCBpdC5cbldPTUFOOiBJIGFncmVlLiBJIGdhdmUgaXQgdG8gbXkgZGF1Z2h0ZXIgd2hlbiBzaGUgd2FzIHlvdW5nZXIuIElcdTIwMTltIHN1cmUgaXRcbmltcHJvdmVkIGhlciBtZW1vcnksIGhlciBhYmlsaXR5IHRvIGZvY3VzLCBhbmQgdG8gc29sdmUgcHJvYmxlbXMuIEFuZCwgb2YgY291cnNlLCBzaGVcbmhhZCBmdW4hXG5NQU46IElcdTIwMTltIG5vdCBzdXJwcmlzZWQuXG5XT01BTjogICAgICAgIFdhaXQgYSBtaW51dGUgd2hpbGUgSSBnZXQgdGhlIHB1Ymxpc2hlclx1MjAxOXMgYWRkcmVzcyBmb3IgeW91LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAxIiwiZHVyYXRpb24iOjQzLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgaGFzIHRoZSBtYW4gY29tZSB0byB0aGUgc3RvcmU\/Iiwib3B0aW9ucyI6WyJ0byByZXF1ZXN0IGFuIGV4Y2hhbmdlIiwidG8gY29tcGxhaW4gYWJvdXQgYSBicm9rZW4gdG95IiwidG8gYXNrIGZvciBhIGZ1bGwgcmVmdW5kIiwidG8gYnV5IGEgYmlydGhkYXkgcHJlc2VudCJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IHRveSBkaWQgdGhlIG1hbidzIHNpc3RlciBkaXNsaWtlPyIsIm9wdGlvbnMiOlsiYSBicmlnaHRseSBjb2xvdXJlZCB0YWxraW5nIGNvbXB1dGVyIiwiYSBkb2xsIGluIGEgcGluayBmcmlsbHkgZHJlc3MiLCJhIHN0dWZmZWQgYW5pbWFsIiwiYSBsYXJnZSBwdXp6bGUgYm9vayJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsImR1cmF0aW9uIjozOCwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6Mywic3RlbSI6IldoYXQgY29sb3VyIGNvdWxkIHRoZSB0YWxraW5nIGNvbXB1dGVyIGJlPyIsIm9wdGlvbnMiOlsiYmx1ZSIsInBpbmsiLCJ5ZWxsb3ciLCJ3aGl0ZSJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaHkgd2lsbCB0aGUgbWFuJ3Mgc2lzdGVyIHByb2JhYmx5IGxpa2UgdGhlIGJvb2s\/Iiwib3B0aW9ucyI6WyJJdCBpcyBvbmUgb2YgdGhlIGJlc3Qtc2VsbGluZyBpdGVtcy4iLCJJdCB1c2VzIHJlY2hhcmdlYWJsZSBiYXR0ZXJpZXMuIiwiSXQgaXMgZGVzaWduZWQgb25seSBmb3IgeW91bmcgZ2lybHMuIiwiSXQncyBlbnZpcm9ubWVudGFsbHkgZnJpZW5kbHkuIl0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoaWNoIHdvcmQgYmVzdCBkZXNjcmliZXMgdGhlIHNhbGVzcGVyc29uPyIsIm9wdGlvbnMiOlsiYWNjb21tb2RhdGluZyIsImltcGF0aWVudCIsImRpc2hvbmVzdCIsInVuaW50ZXJlc3RlZCJdLCJrZXkiOjAsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsImR1cmF0aW9uIjo0MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJIb3cgZG9lcyB0aGUgbWFuIGZlZWwgYWJvdXQgdGhlIGJvb2s\/Iiwib3B0aW9ucyI6WyJIZSBpcyBwbGVhc2VkIHRoYXQgaGUgZGVjaWRlZCB0byBwdXJjaGFzZSBpdC4iLCJIZSBpcyBhbm5veWVkIHRoYXQgaXQgd2FzIHNvIGV4cGVuc2l2ZS4iLCJIZSByZWdyZXRzIG5vdCBidXlpbmcgYSBkaWZmZXJlbnQgdG95LiIsIkhlIGlzIHdvcnJpZWQgaGlzIG5pZWNlIHdpbGwgbm90IGxpa2UgaXQuIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Nywic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gc2F5IGFib3V0IHRoZSBib29rPyIsIm9wdGlvbnMiOlsiSXQgaXMgdG9vIGRpZmZpY3VsdCBmb3IgeW91bmcgY2hpbGRyZW4uIiwiSXQgaGVscGVkIGhlciBkYXVnaHRlciBkZXZlbG9wIG1hbnkgc2tpbGxzLiIsIkl0IGlzIG5vdyBvdXQgb2YgcHJpbnQuIiwiSXQgc2hvdWxkIGJlIHJlY3ljbGVkIGFmdGVyIHVzZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo4LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiB3YW50IHRoZSBwdWJsaXNoZXIncyBhZGRyZXNzPyIsIm9wdGlvbnMiOlsidG8gY29tcGxhaW4gYWJvdXQgdGhlIHByaWNlIiwidG8gb3JkZXIgbW9yZSBjb3BpZXMgb2YgdGhlIGJvb2siLCJ0byBzdWdnZXN0IGJvb2tzIGZvciBvbGRlciBjaGlsZHJlbiIsInRvIGFzayBmb3IgYSByZWZ1bmQgYnkgbWFpbCJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDEyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gdGhhdCB0YWtlcyBwbGFjZSBhdCB3b3JrLiBUaGV5IGFyZSBkaXNjdXNzaW5nIHdoYXQgdGhlIG1hbiBkaWQgb24gdGhlIHdlZWtlbmQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvblxuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB0aGF0IHRha2VzIHBsYWNlIGF0IHdvcmsuIFRoZXkgYXJlIGRpc2N1c3Npbmcgd2hhdCB0aGUgbWFuXG5kaWQgb24gdGhlIHdlZWtlbmQuXG5XT01BTjogICAgICAgIEhleSBSaWNrISBIb3cgd2FzIHlvdXIgd2Vla2VuZD9cbk1BTjogSXQgd2FzIGF3ZXNvbWUhIFdlIGVuZGVkIHVwIGdvaW5nIHRvIHRoZSBHcmVlayBGZXN0aXZhbCBpbiB0aGUgcGFyay4gSGF2ZSB5b3VcbmV2ZXIgYmVlbj9cbldPTUFOOiAgICAgICAgTm8sIGJ1dCBJXHUyMDE5dmUgYWx3YXlzIHdhbnRlZCB0byBjaGVjayBpdCBvdXQuIEhvdyB3YXMgaXQ\/XG5NQU46IEl0IHdhcyBhbWF6aW5nISBJIHdlbnQgd2l0aCBteSB3aWZlIGFuZCBraWRzIGFuZCB0aGVyZSB3YXMgcmVhbGx5IHNvbWV0aGluZyBmb3JcbmV2ZXJ5b25lOiBmb29kLCBtdXNpYywgZGFuY2luZywgYXJ0LCBjb29raW5nIGNsYXNzZXMuIEl0IHdhcyBwcmV0dHkgY29vbC4gV2Ugd2VyZSB0aGVyZVxuZm9yIGhvdXJzLlxuV09NQU46IElcdTIwMTltIGNyYXp5IGFib3V0IEdyZWVrIGZvb2QgYW5kIElcdTIwMTlkIGxvdmUgdG8gbGVhcm4gc29tZSByZWNpcGVzLiBUaGUgY29va2luZ1xuY2xhc3Mgc291bmRzIHJpZ2h0IHVwIG15IGFsbGV5LiBXaGF0IGtpbmQgb2YgZGlzaGVzIHdlcmUgdGhleSBtYWtpbmc\/XG5NQU46IE1vc3RseSBhcHBldGl6ZXJzIGFuZCBmaW5nZXIgZm9vZHMuIFRoZSBjaGVmcyB3ZXJlIGEgZ3JvdXAgb2YgbG9jYWwgc2lzdGVycy4gSSB0aGlua1xudGhleSBoYXZlIGEgY2F0ZXJpbmcgYnVzaW5lc3MgYW5kIHdvcmsgYXQgdGhlaXIgZmFtaWx5XHUyMDE5cyByZXN0YXVyYW50LlxuV09NQU46IE9oISBJIGtub3cgZXhhY3RseSB3aG8geW91IG1lYW4hIFRoZXlcdTIwMTlyZSBjYWxsZWQgdGhlIEZvdXIgU2lzdGVycy5cblRoZXlcdTIwMTl2ZSBhY3R1YWxseSBiZWVuIG9uIEZvb2RUViBhbmQgZXZlbiBoYXZlIGEgbmV3IGNvb2tib29rIG91dC4gSSB3b3VsZCBoYXZlXG5sb3ZlZCB0byBzZWUgdGhlbS4gRGlkIHlvdSBnZXQgdG8gdHJ5IHRoZSBzdHVmZiB0aGV5IGNvb2tlZD9cbk1BTjogTm8sIHRoZXJlIHdlcmUgdG9vIG1hbnkgcGVvcGxlIGluIGZyb250IG9mIG1lIHRvIGdldCBhIHNhbXBsZS4gQnV0IHRoZXJlIHdhcyBhXG5odWdlIHRlbnQgd2hlcmUgdGhleSBzZXJ2ZWQgdXAgYSB0b24gb2YgdHJhZGl0aW9uYWwgR3JlZWsgZm9vZCBhbmQgZGVzc2VydHM6IHBpdGFzLCBzYWxhZHMsXG5maXNoLCBrYWJvYnMsIGJha2xhdmEuIEkgd2Fzblx1MjAxOXQgdmVyeSBodW5ncnksIHNvIEkganVzdCB0cmllZCBzb21lIGxlbW9uIGNha2UuIE15IHdpZmUgYW5kXG5raWRzIGhhZCBzb3V2bGFraXMuIFRoZXkgbG9va2VkIHByZXR0eSBkZWxpY2lvdXMuXG5XT01BTjogICAgICAgIEFuZCB3aGF0IGFib3V0IHRoZSB0cmFkaXRpb25hbCBtdXNpYyBhbmQgZGFuY2luZz8gRGlkIHlvdSBqb2luIGluP1xuW3RlYXNpbmddXG5NQU46IEhhaGEhIE5vLCBub3QgbWUuIFlvdSBrbm93IEkgaGF2ZSBubyB0YWxlbnQgZm9yIHRoYXQuIEp1c3QgdHdvIGxlZnQgZmVldCFcbltsYXVnaGluZ10gVGhleSBhY3R1YWxseSBldmVuIGhhZCBsZXNzb25zIGZvciB0aGUga2lkcy4gTXkgZGF1Z2h0ZXJzIHRob3VnaHQgaXQgd2FzXG5wcmV0dHkgZnVuLlxuV09NQU46ICAgICAgICBOaWMhXG5NQU46IFRoZXJlIHdhcyBsb3RzIG9mIG90aGVyIGFydCBhcyB3ZWxsLiBUaGV5IGhhZCBhIG1hbiB0ZWFjaGluZyBwZW9wbGUgaG93IHRvIHNjdWxwdC5cbk15IHdpZmUgbG92ZXMgYXJ0LCBzbyB3YXMgcmVhbGx5IGhhcHB5IHRvIGxlYXJuIHNjdWxwdGluZy4gSSB0aGluayB0aGUgZmVzdGl2YWwgaXMgc3RpbGwgb25cbnRoaXMgdXBjb21pbmcgd2Vla2VuZC4gSSBoaWdobHkgcmVjb21tZW5kIGl0LlxuV09NQU46IE9LLCB5b3VcdTIwMTl2ZSBzb2xkIG1lIG9uIHRoZSBpZGVhISBbbGF1Z2hpbmddLiBXZWxsLCBsZXRcdTIwMTlzIGdldCBkb3duIHRvXG5idXNpbmVzcy4gV2VcdTIwMTl2ZSBnb3QgdG8gZ2V0IHRoaXMgcmVwb3J0IGRvbmUgZm9yIHRoZSBtZWV0aW5nIHRoaXMgYWZ0ZXJub29uLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxMDcsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGFyZSB0aGUgbWFuIGFuZCB3b21hbiBkaXNjdXNzaW5nPyIsIm9wdGlvbnMiOlsiYSBjdWx0dXJhbCBjZWxlYnJhdGlvbiIsImEgY29va2luZyBjb21wZXRpdGlvbiIsImEgd29yayBhc3NpZ25tZW50IiwiYSBmYW1pbHkgdmFjYXRpb24iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCB3YXMgdGhlIHdvbWFuIG1vc3QgaW50ZXJlc3RlZCBpbj8iLCJvcHRpb25zIjpbIndhdGNoaW5nIHRoZSB0cmFkaXRpb25hbCBkYW5jaW5nIiwibGVhcm5pbmcgdHJhZGl0aW9uYWwgcmVjaXBlcyIsInNlZWluZyB0aGUgYXJ0IG9uIGRpc3BsYXkiLCJtZWV0aW5nIHRoZSBGb3VyIFNpc3RlcnMiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRpZCB0aGUgbWFuIG5vdCBkYW5jZT8iLCJvcHRpb25zIjpbIkhlIHdhcyB0b28gYnVzeSBlYXRpbmcuIiwiSGUgaGFkIHRvIHdhdGNoIGhpcyBjaGlsZHJlbi4iLCJIZSdzIG5vdCBhIGdvb2QgZGFuY2VyLiIsIlRoZXJlIHdlcmUgdG9vIG1hbnkgcGVvcGxlLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRpZCB0aGUgbWFuIGVhdD8iLCJvcHRpb25zIjpbImEgc291dmxha2kiLCJhIGthYm9iIiwic29tZSBiYWtsYXZhIiwiYSBjYWtlIl0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgZGlkIHRoZSB3b21hbiBkZWNpZGUgdG8gZG8gYXQgdGhlIGVuZD8iLCJvcHRpb25zIjpbImZvbGxvdyB0aGUgbWFuJ3MgcmVjb21tZW5kYXRpb24iLCJzaWduIHVwIGZvciBhIGNvb2tpbmcgY2xhc3MiLCJidXkgdGhlIEZvdXIgU2lzdGVycycgY29va2Jvb2siLCJjYW5jZWwgdGhlIGFmdGVybm9vbiBtZWV0aW5nIl0sImtleSI6MCwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAxMiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvblxuWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuLlxuTUFOOiBIZWxsbywgSSB3b25kZXIgaWYgeW91IGNhbiBoZWxwIG1lLiBJXHUyMDE5bSBpbnRlcmVzdGVkIGluIHRha2luZyB0aGUgY29va2luZyBjbGFzc2VzXG55b3VyIGdyb2Nlcnkgc3RvcmUgb2ZmZXJzLlxuV09NQU46IFN1cmUuIFdlIG9mZmVyIG9uZSBjbGFzcyBlYWNoIHdlZWsgb24gV2VkbmVzZGF5cywgdXN1YWxseSB3aXRoIGEgc3BlY2lhbFxudGhlbWUgZm9yIHRoZSBtb250aC4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgSnVuZSBhbmQgdGhlIHRoZW1lIGlzIGJhcmJlY3VpbmcuXG5NQU46IE15IHdpZmUgc2FpZCBzaGUgd2FudHMgbWUgdG8gZG8gc29tZSBvZiB0aGUgc3VtbWVyIGNvb2tpbmcuIEkgY2FuIGJhcmJlY3VlLCBzb1xueW91ciBjbGFzc2VzIG1pZ2h0IGJlIHZlcnkgaGVscGZ1bC4gQnV0IHdhaXQsIG5vdyB0aGF0IEkgdGhpbmsgb2YgaXQsIEkgYWN0dWFsbHkgd2FudGVkIHRvXG5hc2sgYWJvdXQgdGhlIEluZGlhbiBjdXJyeSBjbGFzcyBhZHZlcnRpc2VkIGluIHlvdXIgZmx5ZXIuIFdlIGxvdmUgY3VycnkuIFdoZW4gaXMgaXRcbnNjaGVkdWxlZD9cbldPTUFOOiBPaCwgdGhhdCBpc25cdTIwMTl0IG91cnMuIFlvdSBrbm93LCBJIHNhdyB0aGUgYWQgZm9yIHRoYXQgY2xhc3MsIHRvby4gSSB0aGluayBpdCB3YXNcbmEgZm91ci13ZWVrIG1pbmktY291cnNlIGF0IHRoZSBjb21tdW5pdHkgY29sbGVnZSBzdGFydGluZyBpbiBPY3RvYmVyLiBZb3UgbmVlZCB0byBjYWxsXG50aGVtLlxuTUFOOiBPay4gSVx1MjAxOWxsIHN0YXJ0IHdpdGggeW91ciBiYXJiZWN1aW5nIGNsYXNzLiBXaGF0XHUyMDE5cyBvbiB5b3VyIG1lbnU\/XG5XT01BTjogVGhlIG1haW4gbWVhdCBpdGVtIGlzIEJlZXIgQ2FuIENoaWNrZW4uIEl0IGludm9sdmVzIHNlYXNvbmluZyBhIHNtYWxsXG5jaGlja2VuLCB0aGVuIHN0YW5kaW5nIGl0IG92ZXIgYW4gb3BlbiBjYW4gb2YgaGVhdGVkIGJlZXIuIFRoZSBiZWVyIHN0ZWFtcyB0aHJvdWdoIHRoZVxuY2hpY2tlbiwgYWRkaW5nIHdvbmRlcmZ1bCBmbGF2b3VyIGFuZCBrZWVwaW5nIGl0IGRlbGljaW91c2x5IHRlbmRlci5cbk1BTjogVGhhdCBzb3VuZHMgLi4uIGhvdyBzaG91bGQgSSBzYXkgdGhpcyAuLi4gZGlmZmVyZW50PyBXZSBkb25cdTIwMTl0IGRyaW5rIGFsY29ob2wsIHRob3VnaC5cbldPTUFOOiBJbiB0aGF0IGNhc2UsIGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIHNraXAgdGhpcyBvbmUgYW5kIHJlZ2lzdGVyIGZvciBuZXh0XG53ZWVrLiBUaGF0IG1lbnUgY29udGFpbnMgbm8gYWxjb2hvbCwgSSBndWFyYW50ZWUuIEFwcGxlIE1hcmluYXRlZCBTY2FsbG9wcywgQ2VkYXJcblBsYW5rZWQgU2FsbW9uLCBSb2FzdGVkIEFzcGFyYWd1cywgYW5kIENob2NvbGF0ZSBNb3Vzc2UuIEp1c3QgZmlsbCBvdXQgdGhpcyBmb3JtIGFuZFxucGF5IHRoZSAkMTUuMDAgYW5kIHlvdVx1MjAxOXJlIHJlZ2lzdGVyZWQuIDY6MDAgcC5tLiBuZXh0IFdlZG5lc2RheS5cbk1BTjogSSBkaWRuXHUyMDE5dCByZWFsaXplIHRoZXJlIHdhcyBhIGZlZS4gSSB0aG91Z2h0IHRoZSBncm9jZXJ5IHN0b3JlIG9mZmVyZWQgdGhlc2UgZm9yIGZyZWUuXG5XT01BTjogV2VsbCwgZmlyc3QgeW91XHUyMDE5bGwgYmUgd2F0Y2hpbmcgdGhlIGNoZWYgbWFrZSB0aGUgZm9vZCBhbmQgZGVzY3JpYmluZyB0aGVcbnByb2Nlc3MgYXMgaGUgZG9lcyBpdC4gVGhlbiBoZSBwbGF0ZXMgdGhlIGZvb2QsIGFuZCB5b3UgZWF0IHdoYXQgaGUgcHJlcGFyZWQuIFNvIHlvdVx1MjAxOWxsIGVhdFxuZGlubmVyIGluIHRoZSBjbGFzcyEgVGhlIGZlZSBjb3ZlcnMgdGhlIGZvb2QgY29zdHMuIE9oLCBhbmQgeW91IGdldCBjb3BpZXMgb2YgdGhlIHJlY2lwZXMuXG5NQU46IChzb3VuZGluZyBkaXNhcHBvaW50ZWQpIE9oLCBzbyB3ZSBhcmVuXHUyMDE5dCBkb2luZyBoYW5kcy1vbiBjb29raW5nIG91cnNlbHZlcz9cbldPTUFOOiBUaGF0XHUyMDE5cyByaWdodC4gSVx1MjAxOW0gc3VyZSB5b3VcdTIwMTlsbCBsZWFybiBhIGxvdCwgdGhvdWdoLiBTbyBhcmUgeW91IGludGVyZXN0ZWQgaW4gb3VyXG5jbGFzcyBmb3IgbmV4dCB3ZWVrP1xuTUFOOiBZb3VcdTIwMTl2ZSBjb252aW5jZWQgbWUhIFNpZ24gbWUgdXAhIElcdTIwMTlsbCBhbHNvIGNoZWNrIG91dCB0aGF0IGN1cnJ5IGNsYXNzIGZvciBPY3RvYmVyLlxuV2lsbCBteSB3aWZlIGV2ZXIgYmUgc3VycHJpc2VkIHRoaXMgc3VtbWVyISIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsImR1cmF0aW9uIjoxMzEsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjozLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGluZm9ybWF0aW9uIGRvZXMgdGhlIG1hbiB3YW50IGZyb20gdGhlIHdvbWFuPyIsIm9wdGlvbnMiOlsiZGV0YWlscyBhYm91dCBjb29raW5nIGNsYXNzZXMiLCJ0aGUgcHJpY2Ugb2YgZ3JvY2VyaWVzIiwiZGlyZWN0aW9ucyB0byBhIGNvbW11bml0eSBjb2xsZWdlIiwiYSByZWNpcGUgZm9yIEluZGlhbiBjdXJyeSJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaHkgaXMgdGhlIG1hbiBpbnRlcmVzdGVkIGluIGNvb2tpbmc\/Iiwib3B0aW9ucyI6WyJIZSB3YW50cyB0byBvcGVuIGEgcmVzdGF1cmFudC4iLCJIaXMgd2lmZSB3YW50cyBoaW0gdG8gbGVhcm4uIiwiSGUgbmVlZHMgdG8gc2F2ZSBtb25leSBvbiBmb29kLiIsIkhlIGVuam95cyBlYXRpbmcgc3BpY3kgZm9vZC4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIGhhdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJ5IGNsYXNzPyIsIm9wdGlvbnMiOlsiU2hlIHRlYWNoZXMgdGhlIGN1cnJ5IGNsYXNzLiIsIlRoZSBncm9jZXJ5IHN0b3JlIG9mZmVycyBpdC4iLCJTaGUgYWxzbyBzYXcgdGhlIGFkdmVydGlzZW1lbnQuIiwiSGVyIGZyaWVuZCBpcyBlbnJvbGxlZCBpbiBpdC4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IHdpbGwgdGhlIG1hbiB3YWl0IGEgd2VlayB0byBzdGFydD8iLCJvcHRpb25zIjpbIlRoZSBjbGFzcyBpcyBhbHJlYWR5IGZ1bGwgdGhpcyB3ZWVrLiIsIkhlIGlzIGJ1c3kgdGhpcyBXZWRuZXNkYXkuIiwiVGhlIGZlZSBpcyBjaGVhcGVyIG5leHQgd2Vlay4iLCJIZSBpcyBub3Qga2VlbiBvbiB0aGlzIHdlZWsncyByZWNpcGUuIl0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgZGlzYXBwb2ludHMgdGhlIG1hbj8iLCJvcHRpb25zIjpbIkhlIHdvbid0IHByYWN0aWNlIGNvb2tpbmcgaW4gY2xhc3MuIiwiVGhlIGNsYXNzIGNvc3RzIGZpZnRlZW4gZG9sbGFycy4iLCJIZSB3b24ndCBnZXQgY29waWVzIG9mIHRoZSByZWNpcGVzLiIsIlRoZSBjbGFzcyBpcyBvbmx5IG9mZmVyZWQgb24gV2VkbmVzZGF5cy4iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiV2hhdCB3aWxsIHRoZSBtYW4gcHJvYmFibHkgZG8gbmV4dD8iLCJvcHRpb25zIjpbImNhbGwgdGhlIGNvbW11bml0eSBjb2xsZWdlIiwibG9vayBmb3IgYW5vdGhlciBncm9jZXJ5IHN0b3JlIiwicmVnaXN0ZXIgZm9yIHRoZSBzdG9yZSdzIGNsYXNzIiwiYXNrIGhpcyB3aWZlIGZvciBwZXJtaXNzaW9uIl0sImtleSI6MiwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImhlYWRlclRpdGxlIjoiU2V0IDEyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBhIHBvcHVsYXIgZXZlbnQuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgbmV3cyBpdGVtLCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW1cbllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgYSBwb3B1bGFyIGV2ZW50LlxuTG9jYWwgZmlndXJlIHNrYXRlciwgZmlmdGVlbi15ZWFyLW9sZCBLaW0gQ2h1bmcsIGhhcyBtYWRlIHRoZSBuYXRpb25hbCBmaWd1cmUgc2thdGluZ1xudGVhbS4gQWx0aG91Z2ggQ2h1bmcgb25seSBwbGFjZWQgc2l4dGggYXQgdGhlIE5hdGlvbmFsIFNrYXRpbmcgQ2hhbXBpb25zaGlwcywgb25lIG9mXG50aGUgZmlyc3QgZml2ZSBwbGFjZSBmaW5pc2hlcnMgd2FzIGluanVyZWQgbGFzdCB3ZWVrLCBhbmQgQ2h1bmcgd2FzIG5hbWVkIGFzIGhlclxucmVwbGFjZW1lbnQuIEhhcHB5IGFib3V0IHRoZSBvcHBvcnR1bml0eSwgQ2h1bmcgdG9sZCByZXBvcnRlcnMgaXRcdTIwMTlzIG5vdCBob3cgc2hlIHdhbnRlZFxudG8gbWFrZSB0aGUgdGVhbSwgYnV0IHNoZSBkb2VzIHRoaW5rIHNoZSBkZXNlcnZlcyBpdCwgYW5kIHdpbGwgZG8gaGVyIGJlc3QhIENodW5nXG5jb21wZXRlZCBpbiB0aGUgTmF0aW9uYWxzIGxhc3QgeWVhciBhcyB3ZWxsLCBidXQgYSBzZXJpb3VzIGluanVyeSBoYW1wZXJlZCBoZXJcbnBlcmZvcm1hbmNlIGFuZCBzaGUgZmluaXNoZWQgYSBkaXNhcHBvaW50aW5nIHRlbnRoLlxuU3BlYWtpbmcgYWJvdXQgdGhlIGluY3JlYXNlIGluIGluanVyaWVzIGFtb25nIGVsaXRlIGZpZ3VyZSBza2F0ZXJzLCByZXRpcmVkIGNvYWNoIEVsaXNhXG5EdW5sb3Agc2FpZCB0aGF0IHRoZSBwcm9ncmFtIHJlcXVpcmVtZW50cyBoYXZlIGdvbmUgY3JhenkuIFNrYXRlcnMgaGF2ZSB0byBjcmFtIHRoZWlyXG5wcm9ncmFtIHdpdGggc28gbWFueSBkaWZmaWN1bHQgYW5kIGhpZ2gtcmlzayBtb3Zlcy4gRHVubG9wIGNsYWltcyB0aGF0IG92ZXJ0cmFpbmluZyBpc1xuaW5ldml0YWJsZSwgYW5kIHNvIGFyZSBpbmp1cmllcywgZXNwZWNpYWxseSBhbW9uZyB0aGUgeW91bmdlciBza2F0ZXJzLiBEdW5sb3AgYWxzb1xubGFtZW50ZWQgdGhhdCB0aGUgcmVxdWlyZW1lbnRzIGxlZnQgbm8gcm9vbSBmb3IgYXJ0aXN0cnkgYW55bW9yZS5cbkFzIGEgbWVtYmVyIG9mIHRoZSB0ZWFtLCBDaHVuZyB3aWxsIHJlcHJlc2VudCBDYW5hZGEgYXQgaW50ZXJuYXRpb25hbCBjb21wZXRpdGlvbnMuIEFcbmxpc3Qgb2YgdGhlc2UgY29tcGV0aXRpb25zLCBhbG9uZyB3aXRoIGRhdGVzIGFuZCBsb2NhdGlvbnMsIGlzIGF2YWlsYWJsZSBvbiB0aGUgU2thdGVcbkNhbmFkYSB3ZWJzaXRlLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6Ik5ld3MgSXRlbSIsImR1cmF0aW9uIjo3MSwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJ0aW1lTWludXRlcyI6MywicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiVGhlIG5ld3MgaXRlbSBpcyBtYWlubHkgYWJvdXQiLCJvcHRpb25zIjpbImFuIHVwY29taW5nIGxvY2FsIGZpZ3VyZSBza2F0aW5nIHBlcmZvcm1hbmNlLiIsImEgbG9jYWwgZmlndXJlIHNrYXRlciBtYWtpbmcgdGhlIG5hdGlvbmFsIHRlYW0uIiwidGhlIG5hdGlvbmFsIHRlYW0gYmVpbmcgcGxhZ3VlZCB3aXRoIGluanVyaWVzLiIsImFuIGludGVydmlldyBvZiBhIHJldGlyZWQgZmlndXJlIHNrYXRpbmcgY29hY2guIl0sImtleSI6MX0seyJuIjoyLCJzdGVtIjoiS2ltIENodW5nIHJlc3BvbmRlZCB0byB0aGUgbmV3cyB3aXRoIiwib3B0aW9ucyI6WyJkZWxpZ2h0LiIsInN1cnByaXNlLiIsImRpc2ludGVyZXN0LiIsImNvbmZ1c2lvbi4iXSwia2V5IjowfSx7Im4iOjMsInN0ZW0iOiJDaHVuZyBkaWQgbm90IG1ha2UgdGhlIHRlYW0gbGFzdCB5ZWFyIGJlY2F1c2UiLCJvcHRpb25zIjpbInNoZSBkaWQgbm90IHBlcmZvcm0gdmVyeSB3ZWxsLiIsInNoZSBkaWRuJ3QgY29tcGV0ZSBmb3IgYSBwbGFjZS4iLCJzaGUgd2FzIHRvbyB5b3VuZyB0byBxdWFsaWZ5LiIsInNoZSBhdm9pZGVkIGRpZmZpY3VsdCBtb3Zlcy4iXSwia2V5IjowfSx7Im4iOjQsInN0ZW0iOiJUaGUgaW50ZXJ2aWV3ZWQgY29hY2gsIEVsaXNhIER1bmxvcCwgdGhpbmtzIHRoYXQiLCJvcHRpb25zIjpbImZpZ3VyZSBza2F0ZXJzIGRvbid0IHRyYWluIGhhcmQgZW5vdWdoIGFueW1vcmUuIiwiYWxsIGZpZ3VyZSBza2F0aW5nIGNvYWNoZXMgc2hvdWxkIGhhdmUgZmlyc3QtYWlkIHRyYWluaW5nLiIsInNpbXBsaWNpdHkgaXMgaGlnaGx5IHZhbHVlZCBpbiBmaWd1cmUgc2thdGluZyBjb21wZXRpdGlvbnMuIiwicHJldmlvdXMgc2thdGluZyBwcm9ncmFtIHJlcXVpcmVtZW50cyBhcmUgcHJlZmVyYWJsZS4iXSwia2V5IjozfSx7Im4iOjUsInN0ZW0iOiJUaGUgYml0IG9mIHRoZSBuZXdzIGl0ZW0gdGhhdCBtZW50aW9ucyBpbnRlcm5hdGlvbmFsIGNvbXBldGl0aW9ucyBpcyIsIm9wdGlvbnMiOlsiZW50ZXJ0YWluaW5nLiIsImluZm9ybWF0aXZlLiIsIm9waW5pb25hdGVkLiIsInJlcGV0aXRpdmUuIl0sImtleSI6MX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDEyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgcGVvcGxlLiBUaGV5IGFyZSBpbiB0aGUgc3RhZmYgbHVuY2hyb29tIGF0IHRoZSBlbGVtZW50YXJ5IHNjaG9vbCB3aGVyZSB0aGV5IHdvcmsuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgZGlzY3Vzc2lvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uXG5Zb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgcGVvcGxlLiBUaGV5IGFyZSBpbiB0aGUgc3RhZmYgbHVuY2hyb29tIGF0IHRoZVxuZWxlbWVudGFyeSBzY2hvb2wgd2hlcmUgdGhleSB3b3JrLlxuTWF0dGhldzogICAgICBXZWxsLCB0aGUgdm90ZXMgYXJlIGluIC0tIHRoZSBraWRzIHBpY2tlZCBDcmVhdHVyZS1Ub3duIGZvciB0aGVpciBncmFkZSA2XG5ncmFkdWF0aW9uIHRyaXAuICFcbkJldHR5OiBSZWFsbHk\/IENyZWF0dXJlLVRvd24\/IE5vdCBQaXJhdGUtTGFuZGluZz8gT3IgYW55IG9mIHRoZSBsZXNzLi4uLnVtLi4uZnVycnkgYW5kXG5jcmF3bHkgYW11c2VtZW50IHBhcmsgb3B0aW9ucz8gQXJlIHRoZXkgdHJ5aW5nIHRvIHB1bmlzaCBtZT8gVGhleSBrbm93IEkgY2FuJ3Qgc3RhbmRcbmJ1Z3MsIGZpc2gsIGFuZCwgd2VsbCwgYW55IHNvcnQgb2YgZm91ci1sZWdnZWQgY3JlYXR1cmUuXG5HYXZpbjogKGxhdWdocykgSSBmaWd1cmVkIHRoZXlcdTIwMTlkIHBpY2sgUGlyYXRlLUxhbmRpbmcgdG9vXHUyMDI2LkkgZ3Vlc3MgRGFuXHUyMDE5cyBzY2llbmNlIGNsYXNzIGhhc1xubGVmdCBhbiBpbXByZXNzaW9uLlxuTWF0dGhldzogICAgICBBcyBtdWNoIGFzIElcdTIwMTlkIGxpa2UgdG8gdGFrZSB0aGUgY3JlZGl0LCBpdCB3YXMgYWxsIHRoZW0gLS0gdGhleVx1MjAxOXJlIGp1c3QgcmVhbGx5XG5pbnRvIHNjaWVuY2UuIFdlbGwuLi4ubWF5YmUgSSBkaWQgdHJ5IHRvIHNlbGwgdGhlbSBvbiBDcmVhdHVyZS1Ub3duIGEgbGl0dGxlIGJpdFx1MjAyNi5cbihsYXVnaGluZylcbkJldHR5OiBBaGEhIFNvIEkgaGF2ZSB5b3UgdG8gYmxhbWUhIChsYXVnaGluZykuIEFueXdheSwgbm93IHRoYXQgaXRcdTIwMTlzIHNldHRsZWQgd2hlcmVcbndlXHUyMDE5cmUgZ29pbmcsIHdlIG5lZWQgdG8gZmlndXJlIG91dCBmdW5kaW5nLiBJXHUyMDE5bSB0aXJlZCBvZiB0aGUga2lkcyBhbHdheXMgbG9zaW5nIG91dCB3aGVuXG50aGVyZSBhcmUgYnVkZ2V0IGN1dHMsIGFuZCBJJ3ZlIGhlYXJkIHRoZXJlIGNvdWxkIGJlIG1vcmUgY29taW5nIGJlZm9yZSB0aGUgZW5kIG9mIHRoZVxueWVhci5cbkdhdmluOiBEZWZpbml0ZWx5LiBUaGUga2lkcyB1bmRlcnN0YW5kIHdlIGNhbiBvbmx5IGdvIGlmIHdlIHJhaXNlIHRoZSBtb25leSwgYnV0IEkgZG9uXHUyMDE5dFxud2FudCB0byBkaXNhcHBvaW50IHRoZW0uXG5NYXR0aGV3OiAgICAgICAgV2VsbCwgdGhlcmVcdTIwMTlzIHRoZSBvbGQgc3RhbmRhcmQgLS0gc2VsbGluZyBjaG9jb2xhdGUgZG9vciB0byBkb29yPyBUaGF0XHUyMDE5cyB3aGF0XG5JIGRpZCBhcyBhIGtpZC4gQWx0aG91Z2guLi4gSSB1c3VhbGx5IGVuZGVkIHVwIGVhdGluZyBtb3JlIHRoYW4gSSBzb2xkLlxuQmV0dHk6IChsYXVnaHMpIE5vIHN1cnByaXNlIHdpdGggdGhhdCBzd2VldCB0b290aCBvZiB5b3VycyEhXHUyMDI2LkJ1dCBJJ20gbm90IHN1cmUgdGhhdCdzIHRoZVxuYmVzdCBpZGVhIGZvciBvdXIgc2Nob29sLiBNb3N0IHBhcmVudHMgd291bGRuXHUyMDE5dCBsaWtlIHRoZWlyIGtpZHMgZ29pbmcgdXAgdG8gc3RyYW5nZSBob3VzZXMuXG5JIGtub3cgd2UgdXNlZCB0byBkbyBpdCwgYnV0IHBhcmVudHMgYXJlIG1vcmUgY2F1dGlvdXMgdGhlc2UgZGF5cy5cbkdhdmluOiBJdFx1MjAxOXMgdW5mb3J0dW5hdGUsIGJ1dCB5b3VcdTIwMTlyZSByaWdodC4gSSBjYW5cdTIwMTl0IHNlZSBhbnkgb2YgdGhlIHBhcmVudHMgT0staW5nIHRoYXQgb3B0aW9uLlxuV2hhdCBhYm91dCBhIGJhc2ViYWxsIHRvdXJuYW1lbnQ\/IEtpcmtmaWVsZCBFbGVtZW50YXJ5IGhlbGQgb25lIGxhc3QgeWVhci4uLiBQbGF5ZXJzXG5wYWlkIGFuIGVudHJ5IGZlZSBhbmQgdGhlIHdpbm5pbmcgdGVhbSBnb3QgMjUlIG9mIHRoZSBtb25leSByYWlzZWQuXG5NYXR0aGV3OiAgICAgIE5vdCBiYXNlYmFsbCEgVGhhdCBoYXMgZ290IHRvIGJlIHRoZSBtb3N0IGJvcmluZyBzcG9ydCBvbiB0aGUgcGxhbmV0ISEgQW5kIGl0XG53b3VsZCBvbmx5IHdvcmsgaWYgd2UgbWFuYWdlZCB0byBnZXQgZW5vdWdoIHBsYXllcnMuIFdpdGggdGhpcyB3ZWF0aGVyIEkgY2FuXHUyMDE5dCBpbWFnaW5lXG5tdWNoIGludGVyZXN0LlxuQmV0dHk6IEl0IGhhcyBiZWVuIHVuc2Vhc29uYWJseSBjb2xkLiBXYWl0Li4ud2hhdCBhYm91dCBhIGRhbmNlPyBNeSBjb3VzaW4gaXMgaW4gYSBiYW5kLlxuVGhleSd2ZSBiZWVuIGdldHRpbmcgYSBsb3Qgb2YgbG9jYWwgcmFkaW8gcGxheSByZWNlbnRseS4gVGhleSBldmVuIGdvdCBoaXJlZCB0byBwbGF5IGF0IFRoZVxuVHVubmVsLCB0aGF0IG5ldyBuaWdodGNsdWIgaW4gdG93bi4gV2UgY291bGQgaG9sZCBpdCBpbiB0aGUgZ3ltLCBjaGFyZ2UgYSBzbWFsbCBlbnRyYW5jZVxuZmVlIGFuZCBpbnZpdGUgdGhlIHdob2xlIGNvbW11bml0eS5cbkdhdmluOiBUaGF0XHUyMDE5cyBwZXJmZWN0ISBJdCB3b3VsZCByYWlzZSBtb25leSBhbmQgdGhlIGtpZHMgd291bGQgbG92ZSBpdC4gTWF5YmUgd2UgY291bGRcbmV2ZW4gZGVjb3JhdGUgd2l0aCBhIHRoZW1lLi4ubGlrZSBcdTIwMWNsb3N0IGluIHRoZSBqdW5nbGVcdTIwMWQgb3Igc29tZXRoaW5nLi4uaGF2ZSBldmVyeW9uZSB3ZWFyXG5jb3N0dW1lcy5cbk1hdHRoZXc6ICAgICAgSSBkb25cdTIwMTl0IGtub3cgYWJvdXQgbWFraW5nIGl0IGEgdGhlbWUgcGFydHksIGJ1dCBJIGxpa2UgdGhlIGRhbmNlIGlkZWEuIElmXG55b3VyIGNvdXNpblx1MjAxOXMgYmFuZCBpcyBhY3R1YWxseSBnb29kLCBpdCBjb3VsZCByYWlzZSBsb3RzIG9mIG1vbmV5LiBDYW4gd2UgaGVhciB0aGVpciBtdXNpY1xuc29tZWhvdyBiZWZvcmUgZGVjaWRpbmc\/XG5CZXR0eTogU3VyZVx1MjAyNi50aGV5XHUyMDE5dmUgZ290IHNvbWUgdmlkZW9zIG9ubGluZS4gTGV0J3MgY2hlY2sgdGhlbSBvdXQuXG5MaXN0ZW5pbmciLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTc1LCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsIm1lZGlhVHlwZSI6InZpZGVvIiwidGltZU1pbnV0ZXMiOjMsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgYXJlIHRoZSB0ZWFjaGVycyB0cnlpbmcgdG8gZGVjaWRlIGFib3V0IHRoZSBncmFkdWF0aW9uIHRyaXA\/Iiwib3B0aW9ucyI6WyJ3aGVyZSB0aGV5IHNob3VsZCBnbyIsIndoYXQgdG8gZG8gaW5zdGVhZCBvZiBhIHRyaXAiLCJ3aGV0aGVyIHRvIGxldCB0aGUga2lkcyBnbyIsImhvdyB0byBmaW5hbmNlIHRoZWlyIHRyaXAiXSwia2V5IjozfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGRvZXMgQmV0dHkgZGlzbGlrZT8iLCJvcHRpb25zIjpbImFuaW1hbHMiLCJ0cmlwcyIsInN3ZWV0cyIsInNjaWVuY2UiXSwia2V5IjowfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGRpZCBNYXRoZXcgdHJ5IHRvIHBlcnN1YWRlIHRoZSBraWRzIHRvIGRvPyIsIm9wdGlvbnMiOlsiY2hvb3NlIENyZWF0dXJlLVRvd24gZm9yIHRoZSB0cmlwIGxvY2F0aW9uIiwiY29udmluY2UgdGhlaXIgcGFyZW50cyB0byBzZWxsIGNob2NvbGF0ZSIsInZvdGUgYWdhaW4gb24gdGhlIGxvY2F0aW9uIGZvciB0aGUgdHJpcCIsImZ1bmRyYWlzZSB3aXRoIGEgYmFzZWJhbGwgdG91cm5hbWVudCJdLCJrZXkiOjB9LHsibiI6NCwic3RlbSI6IldoYXQgZG9lcyBCZXR0eSBiZWxpZXZlIGFib3V0IHBhcmVudGluZz8iLCJvcHRpb25zIjpbIkl0IGlzIG1vcmUgY2hhbGxlbmdpbmcgdGhlc2UgZGF5cy4iLCJQYXJlbnRzIGFyZSBtb3JlIHJlbGF4ZWQgdGhlc2UgZGF5cy4iLCJJdCBoYXMgY2hhbmdlZCBzaW5jZSBzaGUgd2FzIGEga2lkLiIsIlBhcmVudHMgYXJlIHN0cmljdGVyIG5vdyBhYm91dCBlYXRpbmcgc3dlZXRzLiJdLCJrZXkiOjJ9LHsibiI6NSwic3RlbSI6IldoYXQgZGlkIEtpcmtmaWVsZCBFbGVtZW50YXJ5IGRvIGxhc3QgeWVhciB0byByYWlzZSBtb25leT8iLCJvcHRpb25zIjpbIlRoZSBraWRzIHNvbGQgY2hvY29sYXRlcyBkb29yIHRvIGRvb3IuIiwiVGhlIHNjaG9vbCBob3N0ZWQgYSBzcG9ydHMgZXZlbnQuIiwiVGhlIHBhcmVudHMgZG9uYXRlZCAkMjUgZWFjaC4iLCJUaGUgbG9jYWwgY29tbXVuaXR5IGhlbGQgYSBkYW5jZS4iXSwia2V5IjoxfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGlzIG1vc3QgbGlrZWx5IHRydWUgYWJvdXQgTWF0aGV3PyIsIm9wdGlvbnMiOlsiSGUgZG9lcyBub3QgZW5qb3kgd2F0Y2hpbmcgYmFuZHMgYXQgbmlnaHQgY2x1YnMuIiwiSGUgbGlrZXMgZHJlc3NpbmcgdXAgZm9yIGNvc3R1bWUgcGFydGllcy4iLCJIZSBkb2VzIG5vdCBnbyB0byB3YXRjaCBiYXNlYmFsbCBnYW1lcy4iLCJIZSB0cmllcyB0byBlYXQgaGVhbHRoeSBieSBhdm9pZGluZyBzdWdhcnkgZm9vZHMuIl0sImtleSI6Mn0seyJuIjo3LCJzdGVtIjoiV2h5IGRvZXMgQmV0dHkgbWVudGlvbiBUaGUgVHVubmVsIG5pZ2h0Y2x1Yj8iLCJvcHRpb25zIjpbInRvIHN1Z2dlc3QgYSBnb29kIHBsYWNlIHRvIGhvbGQgdGhlaXIgZXZlbnQiLCJ0byBpbmRpY2F0ZSB3aGVyZSB0aGV5IGNhbiBoZWFyIGEgcGFydGljdWxhciBiYW5kIiwidG8gcHJvcG9zZSBhIGxvY2F0aW9uIHRvIGNvbnRpbnVlIHRoZWlyIGRpc2N1c3Npb24iLCJ0byBlbXBoYXNpemUgdGhlIHNraWxsIGxldmVsIG9mIGEgcGFydGljdWxhciBiYW5kIl0sImtleSI6M30seyJuIjo4LCJzdGVtIjoiSG93IGRvZXMgdGhlIGNvbnZlcnNhdGlvbiBlbmQ\/Iiwib3B0aW9ucyI6WyJUaGV5IHdpbGwgbG9vayBmdXJ0aGVyIGludG8gb25lIG9mIHRoZSBzdWdnZXN0aW9ucy4iLCJUaGV5IHdpbGwgY29udGludWUgdHJ5aW5nIHRvIGNvbWUgdXAgd2l0aCBpZGVhcy4iLCJUaGV5IHdpbGwgc3RhcnQgcGxhbm5pbmcgd2l0aCB0aGUgb3B0aW9uIHRoZXkgY2hvc2UuIiwiVGhleSB3aWxsIHRha2UgYSBicmVhayBhbmQgZGVjaWRlIGxhdGVyIHRoYXQgZGF5LiJdLCJrZXkiOjB9XX1dfSx7Im5hbWUiOiJQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImhlYWRlclRpdGxlIjoiU2V0IDEyIFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCBjaGlsZHJlbiBhbmQgVFYuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMuXG5Zb3Ugd2lsbCBoZWFyIGEgcHJlc2VudGF0aW9uIGFib3V0IGNoaWxkcmVuIGFuZCBUVi5cbk1hbnkgb2YgdXMgd2lsbCByZW1lbWJlciwgYXMgY2hpbGRyZW4sIHdha2luZyB1cCBlYXJseSBTYXR1cmRheSBtb3JuaW5nLCB0cmVra2luZ1xuZG93bnN0YWlycyB3aGlsZSBvdXIgcGFyZW50cyBzbGVwdCBhbmQgZmxpcHBpbmcgb24gb3VyIGZhdm9yaXRlIFNhdHVyZGF5IG1vcm5pbmdcbmNhcnRvb25zLiBBIHdlZWtlbmQgcml0dWFsIHRoYXQgZW50ZXJ0YWluZWQgY2hpbGRyZW4gYW5kIGFsbG93ZWQgd2VhcnkgcGFyZW50cyBhIGZld1xuZXh0cmEgaG91cnMgb2Ygc2xlZXAsIFNhdHVyZGF5IG1vcm5pbmcgY2FydG9vbnMgc2VlbWVkIGxpa2UgYSB3aW4td2luIHNpdHVhdGlvbi4gSW5kZWVkLFxuZGVzcGl0ZSB0aGVpciBwcmltYXJ5IHB1cnBvc2UgYmVpbmcgYSBtZWFucyB0byBhZHZlcnRpc2UgcHJvZHVjdHMgdG8gYSB5b3VuZyBhbmQgY2FwdGl2ZVxuYXVkaWVuY2UgZm9yIHNldmVyYWwgaG91cnMgYSB3ZWVrLCBtb3N0IHBhcmVudHMgbGlrZWx5IGFwcHJlY2lhdGVkIHRoZSBicmllZiByZXByaWV2ZSB0aGF0XG50aGV5IHByb3ZpZGVkLlxuSG93ZXZlciwgTmF0YWxpZSBLaW5nc2xleSwgc3Bva2VzcGVyc29uIGZvciB0aGUgcGFyZW50IGFkdm9jYWN5IGdyb3VwLCBcdTIwMWNUdXJuIGl0IG9mZixcdTIwMWRcbmNvbnRlbmRzIHRoYXQgY2hpbGRyZW4gdG9kYXkgd2F0Y2ggZmFyIG1vcmUgdGhhbiBqdXN0IGEgZmV3IGhvdXJzIG9mIFRWIGEgd2Vlay0tdGhlXG5jdXJyZW50IGF2ZXJhZ2UgYmVpbmcgY2xvc2VyIHRvIHR3byBob3VycyBkYWlseS4gV2l0aCBtb3N0IENhbmFkaWFuIGhvbWVzIG5vdyBvd25pbmdcbm11bHRpcGxlIHRlbGV2aXNpb25zLCBpbiBhZGRpdGlvbiB0byBvdGhlciBlbGVjdHJvbmljIGRldmljZXMsIHN1Y2ggYXMgY29tcHV0ZXJzLCB0YWJsZXRzLCBvclxuY2VsbHBob25lcywgY2hpbGRyZW4gbm93IGhhdmUgYWNjZXNzIHRvIHJvdW5kIHRoZSBjbG9jayBUViBwcm9ncmFtbWluZyBhbmQgZ2FtZXMuXG5LaW5nc2xleSBiZWxpZXZlcyB0aGUgZXhjZXNzaXZlIHRpbWUgc3BlbnQgaW4gdGhlc2Ugc2VkZW50YXJ5IGJlaGF2aW9ycyBjYW4gYmUgYmxhbWVkXG5mb3IgdGhlIGluY3JlYXNpbmcgcHJldmFsZW5jZSBvZiBkaXNvcmRlcnMgc3VjaCBhcyBvYmVzaXR5IGFuZCBBdHRlbnRpb24gRGVmaWNpdCBEaXNvcmRlclxuc2VlbiBpbiBjaGlsZHJlbiB0b2RheS4gU2hlIGFsc28gYXB0bHkgcG9pbnRzIG91dCB0aGUgZGlzdHVyYmluZyB0cmVuZCB0b3dhcmRzIGluZmFudCBhbmRcbnRvZGRsZXIgc3BlY2lmaWMgdGVsZXZpc2lvbiBwcm9ncmFtbWluZywgc3VjaCBhcyBMYUxhIFRWLCB3aGljaCwgZGVzcGl0ZSB3YXJuaW5ncyBmcm9tXG50aGUgbWFqb3JpdHkgb2YgcGVkaWF0cmljaWFucyB0aGF0IGNoaWxkcmVuIHVuZGVyIHR3byBzaG91bGQgbmV2ZXIgd2F0Y2ggVFYsIGFyZVxuYmVjb21pbmcgaW5jcmVhc2luZ2x5IHBvcHVsYXIuXG5ZZXQsIGZvciBNYXlhIFBhbmcsIGEgd29ya2luZyBtb3RoZXIgb2YgdGhyZWUsIExhTGEgVFYgaGFzIGJlZW4gYSBsaWZlc2F2ZXIuIFdoaWxlXG5QYW5nIHVuZGVyc3RhbmRzIHRoZSBpbXBvcnRhbmNlIG9mIG5vdCBsZXR0aW5nIGhlciAxMC1tb250aCBvbGQgd2F0Y2ggVFYgYWxsIGRheSwgc2hlIGlzXG5ncmF0ZWZ1bCBmb3IgdGhlIGhvdXIgb2YgcXVpZXQgcHJvdmlkZWQgd2hlbiBoZXIgY2hpbGQgd2F0Y2hlcyBoaXMgZmF2b3JpdGUgVFYgc2hvdzsgYVxucmFyZSBtb21lbnQgb2YgY2FsbSB0aGF0IGFsbG93cyBoZXIgdG8gZ2V0IHN1cHBlciBwcmVwYXJlZC4gQmVpbmcgYSBwYXJlbnQgaGVyc2VsZixcbktpbmdzbGV5IHVuZGVyc3RhbmRzIFBhbmdcdTIwMTlzIHNlbnRpbWVudCwgaG93ZXZlciwgc2hlIGFzc2VydHMgdGhhdCwgYWx0aG91Z2ggdGhpcyBvbmUgaG91clxubWF5IHNlZW0gaGFybWxlc3MsIGJlZm9yZSB0aGUgYWdlIG9mIHRocmVlLCBjaGlsZHJlbiBsZWFybiBiZXR0ZXIgZnJvbSB0aGUgcmVhbCB3b3JsZC5cblRoZXkgbWF5IGJlIGZhc2NpbmF0ZWQgYW5kIGVudGVydGFpbmVkIGJ5IHRoZSBpbWFnZXMgdGhleSBzZWUgb24gYSBzY3JlZW4sIGJ1dCB0aGV5IGFyZVxudW5hYmxlIHRvIG1ha2Ugc2Vuc2Ugb2YgdGhlbS4gVGltZSBzcGVudCB3YXRjaGluZyBUViB0YWtlcyBhd2F5IGZyb20gdGltZSB0aGF0IHNob3VsZFxuYmUgc3BlbnQgZXhwbG9yaW5nIHRoZSByZWFsIHdvcmxkOyBhIGZhY3Qgd2hpY2ggY2FuIGhhdmUgYWR2ZXJzZSBlZmZlY3RzIG9uIGxlYXJuaW5nLCBpblxucGFydGljdWxhciwgbGFuZ3VhZ2UgZGV2ZWxvcG1lbnQuIFdoaWxlIFBhbmcgaXMgYXdhcmUgb2YgdGhlc2UgY29uY2VybnMsIHNoZSBiZWxpZXZlc1xucGFyZW50cyBjYW4gZHJpdmUgdGhlbXNlbHZlcyBudXRzIHRyeWluZyB0byBiZSBwZXJmZWN0LiBMZXR0aW5nIGhlciBzb24gd2F0Y2ggTGFMYSBUVlxuZWFjaCBkYXkgZ2l2ZXMgaGVyIHRoZSB0aW1lIHRvIHByZXBhcmUgYSBoZWFsdGh5LCBob21lLWNvb2tlZCBkaW5uZXIgZm9yIGhlciBmYW1pbHkuXG5CZWZvcmUgTGFMYSBUViwgYSBmdXNzeSBpbmZhbnQgY29tYmluZWQgd2l0aCBQYW5nXHUyMDE5cyBidXN5IHNjaGVkdWxlLCBtZWFudCBkaW5uZXJzXG5vZnRlbiBjb25zaXN0ZWQgb2YgdGFrZS1vdXQgb3IgZnJvemVuIG1lYWxzLiBGb3IgUGFuZywgYWx0aG91Z2ggbm90IGEgcGVyZmVjdCBzb2x1dGlvbiwgaXQgaXNcbm9uZSB0aGF0IHdvcmtzIGZvciBoZXIgZmFtaWx5LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsImR1cmF0aW9uIjoxNjksIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJtZWRpYVR5cGUiOiJhdWRpbyIsInRpbWVNaW51dGVzIjo0LCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgbWFpbiB0b3BpYyBkaXNjdXNzZWQgaXMiLCJvcHRpb25zIjpbInRoZSBpbmZsdWVuY2Ugb2YgdGVsZXZpc2lvbiBhZHZlcnRpc2luZyBvbiBjaGlsZHJlbi4iLCJ0aGUgZWZmZWN0cyBvZiBzZWRlbnRhcnkgYWN0aXZpdGllcyBvbiBjaGlsZGhvb2QgZGlzb3JkZXJzLiIsInRoZSBpbXBhY3RzIG9mIHRlbGV2aXNpb24gb24gY2hpbGRyZW4gYW5kIGZhbWlsaWVzLiIsInRoZSByZXN1bHRzIG9mIGVkdWNhdGlvbmFsIFRWIHByb2dyYW1zIG9uIGNoaWxkcmVuLiJdLCJrZXkiOjJ9LHsibiI6Miwic3RlbSI6Ik5hdGFsaWUgS2luZ3NsZXkgd291bGQgbW9zdCBsaWtlbHkiLCJvcHRpb25zIjpbImFsbG93IGhlciBpbmZhbnQgdG8gb2NjYXNpb25hbGx5IHdhdGNoIExhTGEgVFYuIiwibGltaXQgdGhlIG51bWJlciBvZiB0YWtlLW91dCBtZWFscyBmZWQgdG8gaGVyIGNoaWxkLiIsInRlYWNoIGhlciBjaGlsZCBob3cgdG8gdXNlIGEgY29tcHV0ZXIgb3IgdGFibGV0LiIsImVuY291cmFnZSBoZXIgdG9kZGxlciB0byBiZSBwaHlzaWNhbGx5IGFjdGl2ZS4iXSwia2V5IjozfSx7Im4iOjMsInN0ZW0iOiJXaXRoIHJlZ2FyZHMgdG8gTGFMYSBUViwgTWF5YSBQYW5nIGV4cHJlc3NlcyIsIm9wdGlvbnMiOlsiY29uY2Vybi4iLCJhcHByZWNpYXRpb24uIiwiZG91YnRmdWxuZXNzLiIsImV4Y2l0ZW1lbnQuIl0sImtleSI6MX0seyJuIjo0LCJzdGVtIjoiUHJldmlvdXNseSwgTWF5YSBQYW5nIGZvdW5kIGl0IGRpZmZpY3VsdCB0byIsIm9wdGlvbnMiOlsiaGVscCBoZXIgc29uIGxlYXJuIGEgbGFuZ3VhZ2UuIiwid2FrZSB1cCBvbiBTYXR1cmRheSBtb3JuaW5ncy4iLCJwcmVwYXJlIGhvbWVtYWRlIG1lYWxzLiIsInNwZW5kIHRpbWUgd2l0aCBoZXIgZmFtaWx5LiJdLCJrZXkiOjJ9LHsibiI6NSwic3RlbSI6Ik5hdGFsaWUgS2luZ3NsZXkgd291bGQgbGlrZWx5IGFncmVlIHRoYXQiLCJvcHRpb25zIjpbIlRWIG5ldHdvcmtzIHJlc3BlY3QgdGhlIG5lZWRzIG9mIGNoaWxkcmVuLiIsImVkdWNhdGlvbmFsIFRWIHByb2dyYW1zIGhlbHAgY2hpbGRyZW4gbGVhcm4uIiwiY2hpbGQtc3BlY2lmaWMgVFYgY2FuIGJlIGhhcm1mdWwgZm9yIGNoaWxkcmVuLiIsIlRWIGlzIGJldHRlciB0aGFuIG90aGVyIHR5cGVzIG9mIGVsZWN0cm9uaWMgZGV2aWNlcy4iXSwia2V5IjoyfSx7Im4iOjYsInN0ZW0iOiJUaGUgc3BlYWtlcidzIGdvYWwgaXMgdG8iLCJvcHRpb25zIjpbInByZXNlbnQgaW5mb3JtYXRpb24gaW4gYSBuZXV0cmFsIG1hbm5lci4iLCJnYXRoZXIgc3VwcG9ydCBmb3IgYW4gaW1wb3J0YW50IGNhdXNlLiIsInBlcnN1YWRlIHBlb3BsZSB0byBjaGFuZ2UgdGhlaXIgaGFiaXRzLiIsImNyaXRpY2l6ZSBhIFRWIG5ldHdvcmsgZm9yIGhhcm1mdWwgYWN0aW9ucy4iXSwia2V5IjowfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAxMiBUZXN0IDEgZnVsbCBsaXN0ZW5pbmcgdmlkZW8gKi8KdmFyIENMUF9DSEFQVEVSUyA9IHsgJzAuMCc6WzAsNTIwXSwgJzAuMSc6WzAsNTIwXSwgJzAuMic6WzAsNTIwXSwgJzEuMCc6WzUyMCw4NTNdLCAnMi4wJzpbODUzLDEyNzJdLCAnMy4wJzpbMTI3MiwxMzY0XSwgJzQuMCc6WzEzNjQsMTUwM10sICc1LjAnOlsxNTAzLDE3NTddIH07CgovKiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LiAqLwpmdW5jdGlvbiBjbGJFc3RpbWF0ZShyYXcpewogIGlmIChyYXcgPj0gMzUpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDEwXHUyMDEzMTInLCBub3RlOiAnQWR2YW5jZWQgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAzMCkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOScsICAgICAgICBub3RlOiAnRWZmZWN0aXZlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDgnLCAgICAgICAgbm90ZTogJ0dvb2QgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyMikgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNycsICAgICAgICBub3RlOiAnQWRlcXVhdGUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNicsICAgICAgICBub3RlOiAnRGV2ZWxvcGluZyBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDExKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA1JywgICAgICAgIG5vdGU6ICdBY3F1aXJpbmcgcHJvZmljaWVuY3knIH07CiAgcmV0dXJuICAgICAgICAgICAgeyBsZXZlbDogJ0NFTFBJUCA0IG9yIGJlbG93JywgICBub3RlOiAnS2VlcCBwcmFjdGljaW5nIScgfTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09IGVuZ2luZSA9PT09PT09PT09PT09PT09PT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIHJlZHVjZWRNb3Rpb24gPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogIHZhciBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2F0Jyk7CiAgdmFyIGRvdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBEb3RzJyk7CiAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwVG9vbGJhcicpOwogIHZhciByZXN1bHRzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUmVzdWx0cycpOwogIHZhciBzY29yZUNoaXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2NvcmVDaGlwJyk7CgogIHZhciBUT1RBTF9RID0gMDsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwKXsgcC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHMpeyBUT1RBTF9RICs9IHMucXVlc3Rpb25zLmxlbmd0aDsgfSk7IH0pOwoKICB2YXIgc2NyZWVucyA9IFtdOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdpbnRybycsIHBpOiBwaSB9KTsKICAgIHBhcnQuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzZWMsIHNpKXsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ21lZGlhJywgcGk6IHBpLCBzaTogc2kgfSk7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdxJywgcGk6IHBpLCBzaTogc2kgfSk7CiAgICB9KTsKICB9KTsKICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnZmluaXNoJyB9KTsKCiAgdmFyIHN0YXRlID0gewogICAgc3RhcnRlZDogZmFsc2UsCiAgICBpZHg6IDAsCiAgICBhbnN3ZXJzOiB7fSwgICAgICAvKiAicGkuc2kucWkiIC0+IG9wdGlvbiBpbmRleCAoMC0zKSAqLwogICAgY2hlY2tlZDogZmFsc2UsCiAgICB0aW1lck9uOiB0cnVlCiAgfTsKICB2YXIgbWVkaWFUaW1lciA9IG51bGwsIHFUaW1lciA9IG51bGwsIHFSZW1haW5pbmcgPSAwOwogIHZhciBwb3B1cCA9IG51bGwsIG9wZW5UcmlnZ2VyID0gbnVsbDsKCiAgZnVuY3Rpb24gcUtleShwaSwgc2ksIHFpKXsgcmV0dXJuIHBpICsgJy4nICsgc2kgKyAnLicgKyBxaTsgfQogIGZ1bmN0aW9uIGZtdChzZWMpeyB2YXIgbSA9IE1hdGguZmxvb3Ioc2VjLzYwKSwgcyA9IHNlYyAlIDYwOyByZXR1cm4gbSArICc6JyArIChzIDwgMTAgPyAnMCcgOiAnJykgKyBzOyB9CiAgZnVuY3Rpb24gZWwodGFnLCBjbHMsIHRleHQpewogICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7CiAgICBpZiAoY2xzKSBlLmNsYXNzTmFtZSA9IGNsczsKICAgIGlmICh0ZXh0ICE9PSB1bmRlZmluZWQpIGUudGV4dENvbnRlbnQgPSB0ZXh0OwogICAgcmV0dXJuIGU7CiAgfQogIGZ1bmN0aW9uIHNjcm9sbFRvRWwodGFyZ2V0LCBvZmZzZXQpewogICAgdmFyIHkgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gKG9mZnNldCB8fCA3MCk7CiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiByZWR1Y2VkTW90aW9uID8gJ2F1dG8nIDogJ3Ntb290aCcgfSk7CiAgfQogIGZ1bmN0aW9uIGNsZWFyVGltZXJzKCl7CiAgICBpZiAobWVkaWFUaW1lcil7IGNsZWFySW50ZXJ2YWwobWVkaWFUaW1lcik7IG1lZGlhVGltZXIgPSBudWxsOyB9CiAgICBpZiAocVRpbWVyKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgfQogIGZ1bmN0aW9uIGFuc3dlcmVkQ291bnQoKXsgcmV0dXJuIE9iamVjdC5rZXlzKHN0YXRlLmFuc3dlcnMpLmxlbmd0aDsgfQogIGZ1bmN0aW9uIHVwZGF0ZVNjb3JlQ2hpcCgpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnU2NvcmUgJyArIGNvbXB1dGVTY29yZSgpLnRvdGFsICsgJy8nICsgVE9UQUxfUTsKICAgIH0gZWxzZSB7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdBbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJy8nICsgVE9UQUxfUTsKICAgIH0KICB9CiAgZnVuY3Rpb24gY29tcHV0ZVNjb3JlKCl7CiAgICB2YXIgdG90YWwgPSAwLCBwZXJQYXJ0ID0gW107CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjID0gMCwgbiA9IDA7CiAgICAgIHBhcnQuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzZWMsIHNpKXsKICAgICAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICAgICAgbisrOwogICAgICAgICAgaWYgKHN0YXRlLmFuc3dlcnNbcUtleShwaSwgc2ksIHFpKV0gPT09IHEua2V5IC0gMSl7IGMrKzsgdG90YWwrKzsgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgcGVyUGFydC5wdXNoKHsgY29ycmVjdDogYywgdG90YWw6IG4gfSk7CiAgICB9KTsKICAgIHJldHVybiB7IHRvdGFsOiB0b3RhbCwgcGVyUGFydDogcGVyUGFydCB9OwogIH0KCiAgLyogLS0tLS0tLS0tLSBkcm9wZG93biBwb3B1cCAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2xvc2VQb3B1cCgpewogICAgaWYgKHBvcHVwKXsgcG9wdXAucmVtb3ZlKCk7IHBvcHVwID0gbnVsbDsgfQogICAgaWYgKG9wZW5UcmlnZ2VyKXsgb3BlblRyaWdnZXIuY2xhc3NMaXN0LnJlbW92ZSgnY2xwLW9wZW4nKTsgb3BlblRyaWdnZXIgPSBudWxsOyB9CiAgfQogIGZ1bmN0aW9uIG9wZW5Qb3B1cCh0cmlnZ2VyLCBwaSwgc2ksIHFpKXsKICAgIGlmIChvcGVuVHJpZ2dlciA9PT0gdHJpZ2dlcil7IGNsb3NlUG9wdXAoKTsgcmV0dXJuOyB9CiAgICBjbG9zZVBvcHVwKCk7CiAgICB2YXIgcSA9IFRFU1RfREFUQS5wYXJ0c1twaV0uc2VjdGlvbnNbc2ldLnF1ZXN0aW9uc1txaV07CiAgICB2YXIga2V5ID0gcUtleShwaSwgc2ksIHFpKTsKICAgIHBvcHVwID0gZWwoJ2RpdicsICdjbHAtcG9wJyk7CiAgICBxLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHQsIG9pKXsKICAgICAgdmFyIGIgPSBlbCgnYnV0dG9uJywgJ2NscC1vcHQnICsgKHN0YXRlLmFuc3dlcnNba2V5XSA9PT0gb2kgPyAnIGNscC1zZWwnIDogJycpKTsKICAgICAgYi50eXBlID0gJ2J1dHRvbic7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXJhZGlvJykpOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsIG9wdCkpOwogICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHN0YXRlLmFuc3dlcnNba2V5XSA9IG9pOwogICAgICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgICAgIGNsb3NlUG9wdXAoKTsKICAgICAgICBzZXRUcmlnZ2VyTGFiZWwodHJpZ2dlciwgb3B0LCBmYWxzZSk7CiAgICAgIH0pOwogICAgICBwb3B1cC5hcHBlbmRDaGlsZChiKTsKICAgIH0pOwogICAgY2F0LmFwcGVuZENoaWxkKHBvcHVwKTsKICAgIC8qIHBvc2l0aW9uOiBiZWxvdyB0cmlnZ2VyLCBmbGlwIGFib3ZlIHdoZW4gbmVhciB2aWV3cG9ydCBib3R0b20gKi8KICAgIHBvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKICAgIHZhciBjYXRSZWN0ID0gY2F0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHRSZWN0ID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBwb3BXID0gcG9wdXAub2Zmc2V0V2lkdGgsIHBvcEggPSBwb3B1cC5vZmZzZXRIZWlnaHQ7CiAgICB2YXIgbGVmdCA9IHRSZWN0LmxlZnQgLSBjYXRSZWN0LmxlZnQ7CiAgICBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4obGVmdCwgY2F0LmNsaWVudFdpZHRoIC0gcG9wVyAtIDgpKTsKICAgIHZhciB0b3A7CiAgICBpZiAodFJlY3QuYm90dG9tICsgcG9wSCArIDI0ID4gd2luZG93LmlubmVySGVpZ2h0ICYmIHRSZWN0LnRvcCAtIHBvcEggLSA4ID4gMCl7CiAgICAgIHRvcCA9IHRSZWN0LnRvcCAtIGNhdFJlY3QudG9wIC0gcG9wSCAtIDY7ICAgLyogZmxpcCBhYm92ZSAqLwogICAgfSBlbHNlIHsKICAgICAgdG9wID0gdFJlY3QuYm90dG9tIC0gY2F0UmVjdC50b3AgKyA2OwogICAgfQogICAgcG9wdXAuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudG9wID0gdG9wICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAnJzsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LmFkZCgnY2xwLW9wZW4nKTsKICAgIG9wZW5UcmlnZ2VyID0gdHJpZ2dlcjsKICB9CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICBpZiAocG9wdXAgJiYgIXBvcHVwLmNvbnRhaW5zKGV2LnRhcmdldCkgJiYgZXYudGFyZ2V0ICE9PSBvcGVuVHJpZ2dlciAmJiAoIW9wZW5UcmlnZ2VyIHx8ICFvcGVuVHJpZ2dlci5jb250YWlucyhldi50YXJnZXQpKSl7CiAgICAgIGNsb3NlUG9wdXAoKTsKICAgIH0KICB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2VQb3B1cCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKCl7IC8qIGtlZXAgcG9wdXAgYW5jaG9yZWQ6IGNsb3NlIG9uIHNjcm9sbCAqLyBpZiAocG9wdXApIGNsb3NlUG9wdXAoKTsgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwoKICBmdW5jdGlvbiBzZXRUcmlnZ2VyTGFiZWwodHJpZ2dlciwgdGV4dCwgdW5hbnN3ZXJlZCl7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC50b2dnbGUoJ2NscC11bmFuc3dlcmVkJywgISF1bmFuc3dlcmVkKTsKICAgIHRyaWdnZXIucXVlcnlTZWxlY3RvcignLmNscC1kZC10ZXh0JykudGV4dENvbnRlbnQgPSB1bmFuc3dlcmVkID8gJ1x1MjAyNlx1MjAyNlx1MjAyNlx1MjAyNicgOiB0ZXh0OwogIH0KCiAgLyogLS0tLS0tLS0tLSBkb3RzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiByZW5kZXJEb3RzKCl7CiAgICBkb3RzRWwuaW5uZXJIVE1MID0gJyc7CiAgICB2YXIgY3VyUGkgPSAtMTsKICAgIHZhciBzID0gc2NyZWVuc1tzdGF0ZS5pZHhdOwogICAgaWYgKHMgJiYgcy5waSAhPT0gdW5kZWZpbmVkKSBjdXJQaSA9IHMucGk7CiAgICBpZiAocyAmJiBzLnR5cGUgPT09ICdmaW5pc2gnKSBjdXJQaSA9IFRFU1RfREFUQS5wYXJ0cy5sZW5ndGg7IC8qIGFsbCBkb25lICovCiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBkID0gZWwoJ2J1dHRvbicsICdjbHAtZG90JywgJ1AnICsgKHBpICsgMSkpOwogICAgICBkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaWYgKHBpID09PSBjdXJQaSkgZC5jbGFzc0xpc3QuYWRkKCdjbHAtY3VyJyk7CiAgICAgIGVsc2UgaWYgKHBpIDwgY3VyUGkgfHwgc3RhdGUuY2hlY2tlZCkgZC5jbGFzc0xpc3QuYWRkKCdjbHAtZG9uZScpOwogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZC5jbGFzc0xpc3QuYWRkKCdjbHAtY2xpY2thYmxlJyk7CiAgICAgICAgZC50aXRsZSA9ICdSZXZpZXcgJyArIHBhcnQubmFtZTsKICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyZWVucy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGlmIChzY3JlZW5zW2ldLnR5cGUgPT09ICdxJyAmJiBzY3JlZW5zW2ldLnBpID09PSBwaSl7IHN0YXRlLmlkeCA9IGk7IGJyZWFrOyB9CiAgICAgICAgICB9CiAgICAgICAgICByZW5kZXIoKTsgc2Nyb2xsVG9FbChjYXQpOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIGQudGl0bGUgPSBwYXJ0Lm5hbWU7CiAgICAgIH0KICAgICAgZG90c0VsLmFwcGVuZENoaWxkKGQpOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGNocm9tZSBwaWVjZXMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIG1ha2VCYXIodGl0bGUsIHdpdGhUaW1lcil7CiAgICB2YXIgYmFyID0gZWwoJ2RpdicsICdjbHAtYmFyJyk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWJhci10aXRsZScsIHRpdGxlKSk7CiAgICBpZiAod2l0aFRpbWVyICYmIHN0YXRlLnRpbWVyT24pewogICAgICB2YXIgdCA9IGVsKCdzcGFuJywgJ2NscC1iYXItdGltZXInKTsKICAgICAgdC5pZCA9ICdjbHBRVGltZXInOwogICAgICB0LmlubmVySFRNTCA9ICdUaW1lIHJlbWFpbmluZzogPGI+JyArIGZtdChxUmVtYWluaW5nKSArICc8L2I+JzsKICAgICAgYmFyLmFwcGVuZENoaWxkKHQpOwogICAgfQogICAgdmFyIG5leHQgPSBlbCgnYnV0dG9uJywgJ2NscC1uZXh0JywgJ05leHQnKTsKICAgIG5leHQudHlwZSA9ICdidXR0b24nOwogICAgbmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgIGNsb3NlUG9wdXAoKTsKICAgICAgaWYgKHN0YXRlLmlkeCA8IHNjcmVlbnMubGVuZ3RoIC0gMSl7IHN0YXRlLmlkeCsrOyByZW5kZXIoKTsgc2Nyb2xsVG9FbChjYXQpOyB9CiAgICB9KTsKICAgIGlmIChzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ2ZpbmlzaCcpIG5leHQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGJhci5hcHBlbmRDaGlsZChuZXh0KTsKICAgIHJldHVybiBiYXI7CiAgfQogIGZ1bmN0aW9uIG1ha2VJbnN0cih0ZXh0KXsKICAgIHZhciByb3cgPSBlbCgnZGl2JywgJ2NscC1pbnN0cicpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1pbmZvJywgJ2knKSk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgdGV4dCkpOwogICAgcmV0dXJuIHJvdzsKICB9CiAgdmFyIFNQRUFLRVJfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cmVjdCB4PSIzIiB5PSI5IiB3aWR0aD0iNiIgaGVpZ2h0PSI4IiByeD0iMSIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4nICsKICAgICc8cGF0aCBkPSJNMjAuNSA2LjUgYTkgOSAwIDAgMSAwIDEzIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogIHZhciBQTEFZX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHBhdGggZD0iTTggNSBMMjEgMTMgTDggMjEgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+JzsKCiAgLyogLS0tLS0tLS0tLSBzY3JlZW5zIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiByZW5kZXJJbnRybyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IEluc3RydWN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoJ0luc3RydWN0aW9uczonKSk7CiAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLWludHJvLWJvZHknKTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsIHBhcnQuaW50cm9UaXRsZSkpOwogICAgdmFyIHVsID0gZWwoJ3VsJywgJ2NscC1idWxsZXRzJyk7CiAgICBwYXJ0LmludHJvQnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKGIpeyB1bC5hcHBlbmRDaGlsZChlbCgnbGknLCAnJywgYikpOyB9KTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQodWwpOwogICAgcm9vdC5hcHBlbmRDaGlsZChib2R5KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlck1lZGlhKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IE1lZGlhJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cihzZWMubWVkaWFJbnN0cnVjdGlvbikpOwp2YXIgX2FrPXNjci5waSsiLiIrc2NyLnNpLF9hdT0odHlwZW9mIENMUF9BVURJTyE9PSJ1bmRlZmluZWQiKSYmQ0xQX0FVRElPW19ha107aWYoX2F1KXt2YXIgX2lzVj0odHlwZW9mIENMUF9BVURJT19WSURFTyE9PSJ1bmRlZmluZWQiKSYmQ0xQX0FVRElPX1ZJREVPW19ha107dmFyIF9wPWVsKCJkaXYiLCJjbHAtbWVkaWEtcGFuZWwiKTt2YXIgX2M9ZWwoImRpdiIsImNscC1tZWRpYS1jYXJkIisoX2lzVj8iIGNscC1pcy12aWRlbyI6IiIpKTt2YXIgX209ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChfaXNWPyJ2aWRlbyI6ImF1ZGlvIik7X20uc3JjPV9hdTtfbS5jb250cm9scz10cnVlO19tLnByZWxvYWQ9Im5vbmUiO19tLmNsYXNzTmFtZT0iY2xwLXJlYWxtZWRpYSI7X20uc2V0QXR0cmlidXRlKCJjb250cm9sc0xpc3QiLCJub2Rvd25sb2FkIik7X20uc3R5bGUuY3NzVGV4dD1faXNWPyJ3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6IzAwMDtkaXNwbGF5OmJsb2NrIjoid2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrIjtfYy5hcHBlbmRDaGlsZChfbSk7X3AuYXBwZW5kQ2hpbGQoX2MpO19wLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtb25jZS1ub3RlIiwiSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHJlY29yZGluZyBwbGF5cyBvbmNlLiBGb3IgcHJhY3RpY2UgeW91IGNhbiByZXBsYXkgaXQgXHUyMDE0IGJ1dCB0cnkgdG8gbGlzdGVuIG9ubHkgb25jZSBmaXJzdC4iKSk7cm9vdC5hcHBlbmRDaGlsZChfcCk7cmV0dXJuO30KCiAgICBpZiAoQ0VMUElQX1lULnZpZGVvSWQpewogICAgICB2YXIgY2ggPSBDTFBfQ0hBUFRFUlNbc2NyLnBpICsgJy4nICsgc2NyLnNpXSB8fCBbMCwgMF07CiAgICAgIHZhciB2cGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgICB2YXIgdmNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkIGNscC1pcy12aWRlbycpOwogICAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICB3cmFwLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTthc3BlY3QtcmF0aW86MTYvOTtib3JkZXItcmFkaXVzOjhweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojMDAwOyc7CiAgICAgIHZhciBpZnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKICAgICAgaWZyLnNyYyA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC8nICsgQ0VMUElQX1lULnZpZGVvSWQgKyAnP3N0YXJ0PScgKyBjaFswXSArIChjaFsxXSA\/ICcmZW5kPScgKyBjaFsxXSA6ICcnKSArICcmcmVsPTAmbW9kZXN0YnJhbmRpbmc9MSc7CiAgICAgIGlmci5hbGxvdyA9ICdhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBwaWN0dXJlLWluLXBpY3R1cmUnOwogICAgICBpZnIuYWxsb3dGdWxsc2NyZWVuID0gdHJ1ZTsKICAgICAgaWZyLnRpdGxlID0gJ0NFTFBJUCBMaXN0ZW5pbmcgbWVkaWEnOwogICAgICBpZnIuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7JzsKICAgICAgd3JhcC5hcHBlbmRDaGlsZChpZnIpOwogICAgICB2Y2FyZC5hcHBlbmRDaGlsZCh3cmFwKTsKICAgICAgdnBhbmVsLmFwcGVuZENoaWxkKHZjYXJkKTsKICAgICAgdnBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcGxheXMgb25seSBvbmNlIFx1MjAxNCBwcmVzcyBORVhUIHdoZW4gaXQgZW5kcy4nKSk7CiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQodnBhbmVsKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQnICsgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyAnIGNscC1pcy12aWRlbycgOiAnJykpOwogICAgLyogLmNscC1tZWRpYS16b25lIGlzIHRoZSBmdXR1cmUgWW91VHViZS1lbWJlZCB0YXJnZXQgKGRhdGEtbWVkaWEtc2xvdCkgKi8KICAgIHZhciB6b25lID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtem9uZScpOwogICAgem9uZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtc2xvdCcsIHNjci5waSArICcuJyArIHNjci5zaSk7CiAgICB2YXIgaWNvbiA9IGVsKCdkaXYnLCAnY2xwLXNwZWFrZXInKTsKICAgIGljb24uaW5uZXJIVE1MID0gc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/IFBMQVlfU1ZHIDogU1BFQUtFUl9TVkc7CiAgICB2YXIgbWFpbiA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLW1haW4nKTsKICAgIHZhciBsYWJlbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWxhYmVsJywgJ1BsYXlpbmdcdTIwMjYnKTsKICAgIHZhciBwcm9nID0gZWwoJ2RpdicsICdjbHAtcHJvZ3Jlc3MnKTsKICAgIHZhciBmaWxsID0gZWwoJ2RpdicsICdjbHAtcHJvZ3Jlc3MtZmlsbCcpOwogICAgcHJvZy5hcHBlbmRDaGlsZChmaWxsKTsKCiAgICBpZiAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyl7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQoaWNvbik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoem9uZSk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKG1haW4pOwogICAgfSBlbHNlIHsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQoaWNvbik7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQobWFpbik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoem9uZSk7CiAgICB9CiAgICBwYW5lbC5hcHBlbmRDaGlsZChjYXJkKTsKCiAgICB2YXIgbWV0YSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLW1ldGEnKTsKICAgIHZhciB0aW1lU3BhbiA9IGVsKCdzcGFuJywgJycsICcwOjAwIC8gJyArIGZtdChzZWMuZHVyYXRpb24pKTsKICAgIG1ldGEuYXBwZW5kQ2hpbGQodGltZVNwYW4pOwogICAgdmFyIHZvbCA9IGVsKCdzcGFuJywgJycpOwogICAgdm9sLmlubmVySFRNTCA9ICc8c3ZnIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAgICc8cmVjdCB4PSIzIiB5PSI5IiB3aWR0aD0iNiIgaGVpZ2h0PSI4IiByeD0iMSIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICAgIG1ldGEuYXBwZW5kQ2hpbGQodm9sKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKG1ldGEpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyAnVGhpcyB2aWRlbyBwbGF5cycgOiAnVGhpcyByZWNvcmRpbmcgcGxheXMnKSArICcgb25seSBvbmNlIFx1MjAxNCBqdXN0IGxpa2UgdGhlIHJlYWwgdGVzdC4nKSk7CiAgICBpZiAoIUNFTFBJUF9ZVC52aWRlb0lkKXsgcGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ09mZmljaWFsIGF1ZGlvL3ZpZGVvIGlzIGJlaW5nIHByZXBhcmVkIFx1MjAxNCB0aGUgYmFyIGFib3ZlIGlzIGEgc2ltdWxhdGlvbi4gUHJlc3MgTkVYVCB0byBjb250aW51ZS4nKSk7IH0KICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIHNpbXVsYXRlZCBwbGF5YmFjayAqLwogICAgdmFyIGVsYXBzZWQgPSAwOwogICAgbWVkaWFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGVsYXBzZWQrKzsKICAgICAgaWYgKGVsYXBzZWQgPj0gc2VjLmR1cmF0aW9uKXsKICAgICAgICBlbGFwc2VkID0gc2VjLmR1cmF0aW9uOwogICAgICAgIGNsZWFySW50ZXJ2YWwobWVkaWFUaW1lcik7IG1lZGlhVGltZXIgPSBudWxsOwogICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gJ0ZpbmlzaGVkJzsKICAgICAgfQogICAgICBmaWxsLnN0eWxlLndpZHRoID0gTWF0aC5yb3VuZChlbGFwc2VkIC8gc2VjLmR1cmF0aW9uICogMTAwKSArICclJzsKICAgICAgdGltZVNwYW4udGV4dENvbnRlbnQgPSBmbXQoZWxhcHNlZCkgKyAnIC8gJyArIGZtdChzZWMuZHVyYXRpb24pOwogICAgfSwgMTAwMCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJRdWVzdGlvbnMoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgUXVlc3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cihwYXJ0LnFJbnN0cnVjdGlvbikpOwoKICAgIHZhciBwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLXEtcGFuZWwnKTsKICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgIHZhciBrZXkgPSBxS2V5KHNjci5waSwgc2NyLnNpLCBxaSk7CiAgICAgIHZhciByb3cgPSBlbCgnZGl2JywgJ2NscC1xJyk7CiAgICAgIHZhciBudW0gPSBlbCgnc3BhbicsICdjbHAtcW51bScsIHEubiArICcuICcpOwogICAgICByb3cuYXBwZW5kQ2hpbGQobnVtKTsKICAgICAgcm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHEuc3RlbSArICcgJykpOwoKICAgICAgdmFyIGRkID0gZWwoJ2J1dHRvbicsICdjbHAtZGQnKTsKICAgICAgZGQudHlwZSA9ICdidXR0b24nOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtdGV4dCcpKTsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLWNhcmV0JywgJ1x1MjVCQycpKTsKICAgICAgdmFyIGFucyA9IHN0YXRlLmFuc3dlcnNba2V5XTsKICAgICAgc2V0VHJpZ2dlckxhYmVsKGRkLCBhbnMgIT09IHVuZGVmaW5lZCA\/IHEub3B0aW9uc1thbnNdIDogJycsIGFucyA9PT0gdW5kZWZpbmVkKTsKICAgICAgcm93LmFwcGVuZENoaWxkKGRkKTsKCiAgICAgIGlmIChxLnRvZG8pewogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdG9kby10YWcnLCAnVE9ETycpKTsKICAgICAgfQoKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGRkLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgY29ycmVjdCA9IGFucyA9PT0gcS5rZXkgLSAxOwogICAgICAgIGRkLmNsYXNzTGlzdC5hZGQoY29ycmVjdCA\/ICdjbHAtbWFyay1yaWdodCcgOiAnY2xwLW1hcmstd3JvbmcnKTsKICAgICAgICBpZiAoIWNvcnJlY3QpewogICAgICAgICAgdmFyIHJldiA9IGVsKCdzcGFuJywgJ2NscC1yZXZlYWwnKTsKICAgICAgICAgIHJldi5pbm5lckhUTUwgPSAnQ29ycmVjdCBhbnN3ZXI6IDxiPjwvYj4nOwogICAgICAgICAgcmV2LnF1ZXJ5U2VsZWN0b3IoJ2InKS50ZXh0Q29udGVudCA9IHEub3B0aW9uc1txLmtleSAtIDFdOwogICAgICAgICAgcm93LmFwcGVuZENoaWxkKHJldik7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICBvcGVuUG9wdXAoZGQsIHNjci5waSwgc2NyLnNpLCBxaSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0pOwogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogY291bnRkb3duICovCiAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICBzdGFydFFUaW1lcigpOwogIH0KICBmdW5jdGlvbiBzdGFydFFUaW1lcigpewogICAgaWYgKHFUaW1lcikgY2xlYXJJbnRlcnZhbChxVGltZXIpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKSByZXR1cm47CiAgICBxVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBpZiAocVJlbWFpbmluZyA+IDApIHFSZW1haW5pbmctLTsKICAgICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUVRpbWVyJyk7CiAgICAgIGlmICh0KSB0LmlubmVySFRNTCA9ICdUaW1lIHJlbWFpbmluZzogPGI+JyArIGZtdChxUmVtYWluaW5nKSArICc8L2I+JzsKICAgICAgaWYgKHFSZW1haW5pbmcgPD0gMCl7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgfSwgMTAwMCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJGaW5pc2gocm9vdCl7CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCAnRW5kIG9mIFRlc3QnKTsKICAgIHZhciBib3ggPSBlbCgnZGl2JywgJ2NscC1maW5pc2gnKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ0VuZCBvZiB0aGUgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgJ1lvdSBoYXZlIGFuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnIG9mICcgKyBUT1RBTF9RICsgJyBxdWVzdGlvbnMuIENoZWNrIHlvdXIgYW5zd2VycyB0byBzZWUgeW91ciBzY29yZSwgcGFydC1ieS1wYXJ0IHJlc3VsdHMsIGFuZCB0cmFuc2NyaXB0cy4nKSk7CiAgICB2YXIgYnRuID0gZWwoJ2J1dHRvbicsICdjbHAtZmluaXNoLWNoZWNrJywgJ0NoZWNrIGFuc3dlcnMnKTsKICAgIGJ0bi50eXBlID0gJ2J1dHRvbic7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjaGVja0Fuc3dlcnMpOwogICAgYm94LmFwcGVuZENoaWxkKGJ0bik7CiAgICByb290LmFwcGVuZENoaWxkKGJveCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXIoKXsKICAgIGNsZWFyVGltZXJzKCk7CiAgICBjbG9zZVBvcHVwKCk7CiAgICBjYXQuaW5uZXJIVE1MID0gJyc7CiAgICB2YXIgc2NyID0gc2NyZWVuc1tzdGF0ZS5pZHhdOwoKICAgIGlmICghc3RhdGUuc3RhcnRlZCl7CiAgICAgIHZhciBiYXIwID0gZWwoJ2RpdicsICdjbHAtYmFyJyk7CiAgICAgIGJhcjAuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWJhci10aXRsZScsIFRFU1RfREFUQS50ZXN0TGFiZWwgKyAnIFx1MjAxMyBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGJhcjApOwogICAgICB2YXIgaWRsZSA9IGVsKCdkaXYnLCAnY2xwLWlkbGUnKTsKICAgICAgdmFyIHAgPSBlbCgncCcsICcnLCAnUHJlc3MgXHUyMDFDU3RhcnQgdGVzdFx1MjAxRCBhYm92ZSB0byBiZWdpbi4gVGhlIHRlc3QgaGFzIDYgcGFydHMgYW5kIDM4IHF1ZXN0aW9ucywgYW5kIGV2ZXJ5IHJlY29yZGluZyBhbmQgdmlkZW8gcGxheXMgb25seSBvbmNlIFx1MjAxNCBqdXN0IGxpa2UgdGhlIHJlYWwgY29tcHV0ZXItZGVsaXZlcmVkIHRlc3QuJyk7CiAgICAgIGlkbGUuYXBwZW5kQ2hpbGQocCk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChpZGxlKTsKICAgICAgcmVuZGVyRG90cygpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGlzUSA9IHNjci50eXBlID09PSAncSc7CiAgICBpZiAoaXNRKXsKICAgICAgdmFyIHNlYyA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLnNlY3Rpb25zW3Njci5zaV07CiAgICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIH0KICAgIHZhciB0aXRsZSA9IHNjci50eXBlID09PSAnZmluaXNoJwogICAgICA\/IFRFU1RfREFUQS50ZXN0TGFiZWwgKyAnIFx1MjAxMyBMaXN0ZW5pbmcgVGVzdCcKICAgICAgOiBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5oZWFkZXJUaXRsZTsKICAgIGNhdC5hcHBlbmRDaGlsZChtYWtlQmFyKHRpdGxlLCBpc1EpKTsKCiAgICB2YXIgc2NyZWVuID0gZWwoJ2RpdicsICdjbHAtc2NyZWVuJyk7CiAgICBpZiAoc2NyLnR5cGUgPT09ICdpbnRybycpIHJlbmRlckludHJvKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAnbWVkaWEnKSByZW5kZXJNZWRpYShzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ3EnKSByZW5kZXJRdWVzdGlvbnMoc2NyLCBzY3JlZW4pOwogICAgZWxzZSByZW5kZXJGaW5pc2goc2NyZWVuKTsKICAgIGNhdC5hcHBlbmRDaGlsZChzY3JlZW4pOwogICAgcmVuZGVyRG90cygpOwogIH0KCiAgLyogLS0tLS0tLS0tLSByZXN1bHRzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjaGVja0Fuc3dlcnMoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKSByZXR1cm47CiAgICBzdGF0ZS5jaGVja2VkID0gdHJ1ZTsKICAgIHZhciBzY29yZSA9IGNvbXB1dGVTY29yZSgpOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHJlbmRlclJlc3VsdHMoc2NvcmUpOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IGZhbHNlOwogICAgc2Nyb2xsVG9FbChyZXN1bHRzRWwpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUmVzdWx0cyhzY29yZSl7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJyc7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZWwoJ2gyJywgJycsICdZb3VyIHJlc3VsdHMnKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCdkaXYnLCAnY2xwLXJlcy1ncmlkJyk7CgogICAgLyogcmluZyBjYXJkICovCiAgICB2YXIgcmluZ0NhcmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yaW5nLWNhcmQgY2xwLXJldicpOwogICAgdmFyIHdyYXAgPSBlbCgnZGl2JywgJ2NscC1yaW5nLXdyYXAnKTsKICAgIHZhciBSID0gNTYsIEMgPSAyICogTWF0aC5QSSAqIFI7CiAgICB3cmFwLmlubmVySFRNTCA9CiAgICAgICc8c3ZnIHdpZHRoPSIxMzIiIGhlaWdodD0iMTMyIiB2aWV3Qm94PSIwIDAgMTMyIDEzMiI+JyArCiAgICAgICc8Y2lyY2xlIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iI0UyRThGMCIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIvPicgKwogICAgICAnPGNpcmNsZSBpZD0iY2xwUmluZyIgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjMTBCOTgxIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiICcgKwogICAgICAnc3Ryb2tlLWRhc2hhcnJheT0iJyArIEMgKyAnIiBzdHJva2UtZGFzaG9mZnNldD0iJyArIEMgKyAnIi8+PC9zdmc+JzsKICAgIHZhciBudW0gPSBlbCgnZGl2JywgJ2NscC1yaW5nLW51bScpOwogICAgdmFyIGJpZyA9IGVsKCdiJywgJycsICcwJyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoYmlnKTsKICAgIG51bS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnb3V0IG9mICcgKyBUT1RBTF9RKSk7CiAgICB3cmFwLmFwcGVuZENoaWxkKG51bSk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZCh3cmFwKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnVG90YWwgc2NvcmUnKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKHJpbmdDYXJkKTsKCiAgICAvKiBicmVha2Rvd24gY2FyZCAqLwogICAgdmFyIGJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmV2Jyk7CiAgICBiZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1BhcnQtYnktcGFydCBicmVha2Rvd24nKSk7CiAgICB2YXIgY2hpcHMgPSBlbCgnZGl2JywgJ2NscC1wYXJ0LWNoaXBzJyk7CiAgICBzY29yZS5wZXJQYXJ0LmZvckVhY2goZnVuY3Rpb24ocHAsIHBpKXsKICAgICAgdmFyIGMgPSBlbCgnc3BhbicsICdjbHAtcGFydC1jaGlwJyk7CiAgICAgIGMuaW5uZXJIVE1MID0gJ1AnICsgKHBpICsgMSkgKyAnIDxiPicgKyBwcC5jb3JyZWN0ICsgJy8nICsgcHAudG90YWwgKyAnPC9iPic7CiAgICAgIGNoaXBzLmFwcGVuZENoaWxkKGMpOwogICAgfSk7CiAgICBiZC5hcHBlbmRDaGlsZChjaGlwcyk7CgogICAgdmFyIGVzdCA9IGNsYkVzdGltYXRlKHNjb3JlLnRvdGFsKTsKICAgIHZhciBjbGIgPSBlbCgnZGl2JywgJ2NscC1jbGItcm93Jyk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWNsYi1iYWRnZScsIGVzdC5sZXZlbCkpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdwJywgJycsIGVzdC5ub3RlICsgJyBcdTIwMTQgZXN0aW1hdGVkIGZyb20gYSByYXcgc2NvcmUgb2YgJyArIHNjb3JlLnRvdGFsICsgJy8nICsgVE9UQUxfUSArICcuIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuJykpOwogICAgYmQuYXBwZW5kQ2hpbGQoY2xiKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQoYmQpOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGdyaWQpOwoKICAgIC8qIHRyYW5zY3JpcHRzICovCiAgICB2YXIgdHJXcmFwID0gZWwoJ2RpdicsICdjbHAtdHJhbnNjcmlwdHMnKTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC10ci1jYXJkIGNscC1yZXYnKTsKICAgICAgdmFyIGhlYWQgPSBlbCgnYnV0dG9uJywgJ2NscC10ci1oZWFkJyk7CiAgICAgIGhlYWQudHlwZSA9ICdidXR0b24nOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdUcmFuc2NyaXB0IFx1MjAxNCAnICsgcGFydC5uYW1lKSk7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLWNhcmV0JywgJ1x1MjVCQycpKTsKICAgICAgaGVhZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGNhcmQuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLW9wZW4nKTsgfSk7CiAgICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtdHItYm9keScpOwogICAgICBib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcnQudHJhbnNjcmlwdCkpOwogICAgICBpZiAocGFydC50cmFuc2NyaXB0VG9kbyl7CiAgICAgICAgYm9keS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItdG9kbycsICdUT0RPOiByZXBsYWNlIHRoaXMgc3VtbWFyeSB3aXRoIHRoZSBmdWxsIG9mZmljaWFsIHRyYW5zY3JpcHQuJykpOwogICAgICB9CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoaGVhZCk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoYm9keSk7CiAgICAgIHRyV3JhcC5hcHBlbmRDaGlsZChjYXJkKTsKICAgIH0pOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKHRyV3JhcCk7CgogICAgLyogcmV2ZWFsICsgY291bnQtdXAgKi8KICAgIHZhciByZXZFbHMgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvckFsbCgnLmNscC1yZXYnKTsKICAgIGlmICgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdyAmJiAhcmVkdWNlZE1vdGlvbil7CiAgICAgIHZhciBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlbnRyaWVzKXsKICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW4pewogICAgICAgICAgaWYgKGVuLmlzSW50ZXJzZWN0aW5nKXsgZW4udGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyBpby51bm9ic2VydmUoZW4udGFyZ2V0KTsgfQogICAgICAgIH0pOwogICAgICB9LCB7IHRocmVzaG9sZDogMC4xNSB9KTsKICAgICAgcmV2RWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IGlvLm9ic2VydmUoZSk7IH0pOwogICAgfSBlbHNlIHsKICAgICAgcmV2RWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IGUuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IH0pOwogICAgfQoKICAgIHZhciByaW5nID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3IoJyNjbHBSaW5nJyk7CiAgICB2YXIgdGFyZ2V0ID0gc2NvcmUudG90YWw7CiAgICBpZiAocmVkdWNlZE1vdGlvbil7CiAgICAgIGJpZy50ZXh0Q29udGVudCA9IHRhcmdldDsKICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gdGFyZ2V0IC8gVE9UQUxfUSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgdDAgPSBudWxsLCBEVVIgPSAxMTAwOwogICAgICBmdW5jdGlvbiBzdGVwKHRzKXsKICAgICAgICBpZiAoIXQwKSB0MCA9IHRzOwogICAgICAgIHZhciBwID0gTWF0aC5taW4oMSwgKHRzIC0gdDApIC8gRFVSKTsKICAgICAgICB2YXIgZWFzZSA9IDEgLSBNYXRoLnBvdygxIC0gcCwgMyk7CiAgICAgICAgYmlnLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChlYXNlICogdGFyZ2V0KTsKICAgICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSAoZWFzZSAqIHRhcmdldCkgLyBUT1RBTF9RKTsKICAgICAgICBpZiAocCA8IDEpIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgICAgfQogICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICB9CiAgfQoKICAvKiAtLS0tLS0tLS0tIHRvb2xiYXIgLyBjb250cm9scyAtLS0tLS0tLS0tICovCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFN0YXJ0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IHRydWU7CiAgICBzdGF0ZS5pZHggPSAwOwogICAgdG9vbGJhci5oaWRkZW4gPSBmYWxzZTsKICAgIHJlbmRlcigpOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTaW0nKSk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENoZWNrJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgaWYgKCFzdGF0ZS5zdGFydGVkKSByZXR1cm47CiAgICBjaGVja0Fuc3dlcnMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUmVzZXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gZmFsc2U7CiAgICBzdGF0ZS5pZHggPSAwOwogICAgc3RhdGUuYW5zd2VycyA9IHt9OwogICAgc3RhdGUuY2hlY2tlZCA9IGZhbHNlOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IHRydWU7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJyc7CiAgICB0b29sYmFyLmhpZGRlbiA9IHRydWU7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQXBwJyksIDIwKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwVGltZXJUb2dnbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS50aW1lck9uID0gIXN0YXRlLnRpbWVyT247CiAgICB0aGlzLnRleHRDb250ZW50ID0gJ1RpbWVyOiAnICsgKHN0YXRlLnRpbWVyT24gPyAnb24nIDogJ29mZicpOwogICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUVRpbWVyJyk7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pewogICAgICBpZiAocVRpbWVyKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICAgIGlmICh0KSB0LnJlbW92ZSgpOwogICAgfSBlbHNlIGlmIChzY3JlZW5zW3N0YXRlLmlkeF0gJiYgc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdxJyl7CiAgICAgIHJlbmRlcigpOwogICAgfQogIH0pOwoKICB1cGRhdGVTY29yZUNoaXAoKTsKICByZW5kZXIoKTsKfSkoKTsK'));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 12 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-6164","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6164","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=6164"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6164\/revisions"}],"predecessor-version":[{"id":6594,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6164\/revisions\/6594"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}