{"id":6195,"date":"2026-07-06T12:55:37","date_gmt":"2026-07-06T12:55:37","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-8-test-2-listening\/"},"modified":"2026-07-12T03:25:03","modified_gmt":"2026-07-12T03:25:03","slug":"celpip-set-8-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-8-test-2-listening\/","title":{"rendered":"CELPIP Set 8 \u00b7 Practice Test 2 \u2014 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 8 &#183; Practice Test 2<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMXMxLTMubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3AxczItMy5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvcDFzMy0zLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMi0zLm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wMy0zLm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNC0zLm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNS0zLm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9wNi0zLm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEEgPSB7InRlc3RMYWJlbCI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIiLCJzZXRObyI6OCwidGVzdE5vIjoyLCJwYXJ0cyI6W3sibmFtZSI6IlBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImhlYWRlclRpdGxlIjoiU2V0IDggXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMTogTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGFib3V0IGEgY2FyIHByb2JsZW0uIiwiaW50cm9CdWxsZXRzIjpbIkEgbWFuIGFuZCBhIHdvbWFuIGFyZSBkZWFsaW5nIHdpdGggYSBjYXIgdGhhdCB3aWxsIG5vdCBzdGFydC4iLCJZb3Ugd2lsbCBoZWFyIHRoZSBjb252ZXJzYXRpb24gb25seSBvbmNlLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4gb24gYSBzdHJlZXQgbmV4dCB0byBzb21lXG5zaG9wcy4gVGhlIG1hbiBpcyBsb29raW5nIGF0IGhpcyBjYXIgYW5kIHRoZSB3b21hbiBpcyBwYXJrZWQgbmVhcmJ5LlxuXG5TZWN0aW9uIDE6XG5XT01BTjogSGV5IHRoZXJlLCBhcmUgeW91IGhhdmluZyBzb21lIHRyb3VibGUgd2l0aCB5b3VyIGNhcj9cbk1BTjogICAgICAgICBZZWFoLCBpdCB3b25cdTIwMTl0IHN0YXJ0LlxuV09NQU46IE1heWJlIEkgY291bGQgdGFrZSBhIHF1aWNrIGxvb2sgYXQgaXQgZm9yIHlvdS5cbk1BTjogICAgICAgICBXZWxsIC4gLiAuIEkgZG9uXHUyMDE5dCB3YW50IHRvIGJvdGhlciB5b3UuXG5XT01BTjogUmVhbGx5LCBpdFx1MjAxOXMgbm8gYm90aGVyLiBJXHUyMDE5bSBqdXN0IG1lZXRpbmcgd2l0aCB0d28gZnJpZW5kcyBmcm9tIHdvcmsgYVxuYml0IGxhdGVyLiBMZXRcdTIwMTlzIHNlZS4gWW91ciBvaWwgc2VlbXMgZmluZSBhbmQgeW91IGhhdmUgZW5vdWdoIGdhcy4gSG93IGxvbmcgaGF2ZVxueW91IGJlZW4gcGFya2VkIGhlcmU\/IERpZCB5b3UgbGVhdmUgYW55dGhpbmcgb24\/XG5NQU46ICAgICAgICAgIEZvciB0aGUgbGFzdCBzZXZlcmFsIGhvdXJzXHUyMDE0YWN0dWFsbHksIGZyb20gZWlnaHQgdGhpcyBtb3JuaW5nLiBPdGhlclxudGhhbiBteSBmcm9udCBsaWdodHMsIEkgdHVybmVkIGV2ZXJ5dGhpbmcgb2ZmLiBJdFx1MjAxOXMgc3RyYW5nZTsgSVx1MjAxOXZlIG5ldmVyIGhhZCBwcm9ibGVtc1xud2l0aCB0aGlzIGNhciBzaW5jZSBJIGJvdWdodCBpdCBmaXZlIHllYXJzIGFnby5cbldPTUFOOiBBbHJpZ2h0LCBJIHRoaW5rIEkga25vdyB3aGF0IHlvdXIgcHJvYmxlbSBpcy4gU2luY2UgeW91IGxlZnQgeW91ciBmcm9udFxubGlnaHRzIG9uLCB0aGUgY2FyIGJhdHRlcnkgaXMgbm93IGRlYWQuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGlzIGlzIGFuIGVhc3kgcHJvYmxlbVxudG8gZml4LlxuTUFOOiAgICAgICAgUmVhbGx5ISBUaGF0XHUyMDE5cyBncmVhdCBiZWNhdXNlIEkgZG9uXHUyMDE5dCB3YW50IHRvIGJlIGxhdGUgZm9yIGEgdmVyeVxuaW1wb3J0YW50IG1lZXRpbmdcdTIwMTRpdFx1MjAxOXMgd2l0aCBteSBzb25cdTIwMTlzIHRlYWNoZXIuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTMuXG5XaGF0IGlzIHRoaXMgY29udmVyc2F0aW9uIGFib3V0P1xuSG93IGxvbmcgaGFzIHRoZSBtYW4gb3duZWQgaGlzIGNhcj9cbldoYXQgZGlkIHRoZSBtYW4gZm9yZ2V0IHRvIGRvP1xuXGZTZWN0aW9uIDI6XG5XT01BTjogSSBoYXZlIHNvbWUgc3BlY2lhbCBjYWJsZXMgY2FsbGVkIGp1bXBlciBjYWJsZXMgdGhhdCB3aWxsIGpvaW4gb3VyIGNhclxuYmF0dGVyaWVzIHRvZ2V0aGVyLiBXaGVuIEkgc3RhcnQgbXkgY2FyLCBlbGVjdHJpY2l0eSBmcm9tIG15IGJhdHRlcnkgd2lsbCB0cmF2ZWwgdG9cbnlvdXIgYmF0dGVyeS5cbk1BTjogICAgICAgICBSZWFsbHk\/IEFuZCB0aGF0IHNob3VsZCBiZSBlbm91Z2ggdG8gZ2V0IG15IGNhciBnb2luZyBhZ2Fpbj9cbldPTUFOOiBIb3BlZnVsbHkuIEZpcnN0LCBJXHUyMDE5bGwgZHJpdmUgbXkgY2FyIG92ZXIgaGVyZSBzbyBvdXIgY2FycyBhcmUgZmFjaW5nXG5lYWNoIG90aGVyLiBUaGF0IHdheSwgdGhlIGNhcnMgd2lsbCBiZSBjbG9zZSBlbm91Z2ggZm9yIG1lIHRvIGNvbm5lY3QgdGhlIGNhYmxlcy5cbk1BTjogICAgICAgICBDb29sISBJXHUyMDE5bSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgdGhpcyB3b3Jrcy5cbldPTUFOOiBBbHJpZ2h0LCBJXHUyMDE5dmUgY29ubmVjdGVkIHRoZSBjYWJsZXMsIG5vdyBzdGFydCB5b3VyIGNhci5cbk1BTjogICAgICAgICBPa2F5LCBsZXRcdTIwMTlzIGhvcGUgdGhpcyB3b3JrcyEgV293LCBpdCBzdGFydGVkISBIb3cgZGlkIHlvdSBrbm93IHdoYXRcbnRvIGRvP1xuV09NQU46IFdvcmtpbmcgb24gY2FycyBpcyBteSBqb2IuIElcdTIwMTltIGEgbWVjaGFuaWMuIE5vdyBqdXN0IGxlYXZlIHlvdXIgY2FyXG5ydW5uaW5nIGZvciBhdCBsZWFzdCAxNSBtaW51dGVzIHNvIHlvdXIgY2FyXHUyMDE5cyBiYXR0ZXJ5IGhhcyBlbm91Z2ggdGltZSB0byByZWNoYXJnZS5cbllvdSBjYW4gZWl0aGVyIHdhaXQgYXQgdGhlIGdhcyBzdGF0aW9uIHBhcmtpbmcgbG90IG92ZXIgdGhlcmUgb3Igc3RhcnQgZHJpdmluZy5cbk1BTjogICAgICAgICBPa2F5LCBncmVhdCFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDQtNS5cbldoeSBkb2VzIHRoZSB3b21hbiBoYXZlIHRvIGRyaXZlIGhlciBjYXI\/XG5XaGF0IHdpbGwgdGhlIG1hbiBtb3N0IGxpa2VseSBkbyBuZXh0P1xuU2VjdGlvbiAzOlxuTUFOOiAgICAgICAgIFlvdSBrbm93LCBteSBzb24gd2FudHMgdG8gYmUgYSBtZWNoYW5pYy4gSGVcdTIwMTlsbCBiZSBleGNpdGVkIHRvIGhlYXJcbnRoYXQgYSByZWFsIG1lY2hhbmljIGhlbHBlZCBtZS4gSGVcdTIwMTlzIGEgc21hcnQgbGl0dGxlIGd1eS5cbldPTUFOOiBIbSwgdGhhdFx1MjAxOXMgbmljZSB0byBoZWFyLiBUZWxsIGhpbSBpdFx1MjAxOXMgYSBmdW4gam9iLlxuTUFOOiAgICAgICAgSSB3aWxsLiBOb3cgSSBuZWVkIHRvIGdldCBteXNlbGYgc29tZSBqdW1wZXIgY2FibGVzLiBBbmQgaW4gY2FzZVxuc29tZXRoaW5nIGVsc2UgYnJlYWtzIGRvd24sIGFyZSB0aGVyZSBzb21lIHRoaW5ncyB5b3Ugc3VnZ2VzdCBJIGtlZXAgaW4gbXkgY2FyP1xuTWF5YmUgYSByZXBhaXIgbWFudWFsLCBhIGdhcyBjYW4sIHNvbWUgd2lwZXIgZmx1aWQ\/XG5XT01BTjogVGhvc2UgYXJlIGFsbCBnb29kIHRoaW5ncyB0byBoYXZlIGluIHlvdXIgY2FyLiBCdXQgbW9zdCBpbXBvcnRhbnRseSxcbnlvdSBzaG91bGQgbWFrZSBzdXJlIHlvdSBoYXZlIGEgc3BhcmUgdGlyZSBhbmQgc29tZSBiYXNpYyB0b29scyB0byBjaGFuZ2UgaXQuIFlvdVxuY2FuIGFsc28gZ28gb25saW5lIGFuZCBtYWtlIHlvdXIgb3duIGxpc3QuXG5cZk1BTjogICAgICAgU291bmRzIGdvb2QuIE9oLCBsb29rIGF0IHRoZSB0aW1lISBJIG5lZWQgdG8gYmUgYXQgc2Nob29sIHNvb24uIFRoYW5rXG55b3Ugc28gbXVjaCBmb3IgeW91ciBoZWxwLlxuV09NQU46IFlvdVx1MjAxOXJlIHdlbGNvbWUhXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyA2LTguXG5XaGljaCBpdGVtIGRvZXMgdGhlIHdvbWFuIHRoaW5rIGlzIG1vc3QgaW1wb3J0YW50P1xuV2hhdCBpcyBsaWtlbHkgdHJ1ZSBhYm91dCB0aGUgbWFuP1xuV2hhdCBkb2VzIHRoZSB3b21hbiByZWNvbW1lbmQ\/Iiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDEiLCJkdXJhdGlvbiI6ODMsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgdGhpcyBjb252ZXJzYXRpb24gYWJvdXQ\/Iiwib3B0aW9ucyI6WyJyZXBhaXJpbmcgYSBjYXIiLCJidXlpbmcgYSBuZXcgY2FyIiwic2VsbGluZyBhIGNhciIsInJlbnRpbmcgYSBjYXIiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiSG93IGxvbmcgaGFzIHRoZSBtYW4gb3duZWQgaGlzIGNhcj8iLCJvcHRpb25zIjpbImEgZmV3IG1vbnRocyIsInNldmVyYWwgeWVhcnMiLCJsZXNzIHRoYW4gYSB5ZWFyIiwib3ZlciBhIGRlY2FkZSJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGRpZCB0aGUgbWFuIGZvcmdldCB0byBkbz8iLCJvcHRpb25zIjpbImxvY2sgdGhlIGRvb3JzIiwidHVybiBldmVyeXRoaW5nIG9mZiIsImZpbGwgdGhlIGdhcyB0YW5rIiwiY2hhcmdlIHRoZSBiYXR0ZXJ5Il0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwiZHVyYXRpb24iOjYzLCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIG5leHQgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIGhhdmUgdG8gZHJpdmUgaGVyIGNhcj8iLCJvcHRpb25zIjpbInRvIHRlc3QgdGhlIGVuZ2luZSIsInRvIG1vdmUgaXQgY2xvc2VyIHRvIHRoZSBtYW5cdTIwMTlzIiwidG8gd2FybSBpdCB1cCIsInRvIHBhcmsgaXQgc2FmZWx5Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgd2lsbCB0aGUgbWFuIG1vc3QgbGlrZWx5IGRvIG5leHQ\/Iiwib3B0aW9ucyI6WyJjYWxsIGEgbWVjaGFuaWMiLCJ3YWl0IGZvciBhIHdoaWxlIiwiZHJpdmUgYXdheSBpbW1lZGlhdGVseSIsInJlcGxhY2UgdGhlIGJhdHRlcnkiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDMiLCJkdXJhdGlvbiI6NTUsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjo2LCJzdGVtIjoiV2hpY2ggaXRlbSBkb2VzIHRoZSB3b21hbiB0aGluayBpcyBtb3N0IGltcG9ydGFudD8iLCJvcHRpb25zIjpbImp1bXBlciBjYWJsZXMiLCJhIGZpcnN0LWFpZCBraXQiLCJhIHNwYXJlIHRpcmUiLCJhIGZsYXNobGlnaHQiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiV2hhdCBpcyBsaWtlbHkgdHJ1ZSBhYm91dCB0aGUgbWFuPyIsIm9wdGlvbnMiOlsiSGUgcmVwYWlycyBjYXJzIHByb2Zlc3Npb25hbGx5LiIsIkhlIHZhbHVlcyBjYXIgbWVjaGFuaWNzXHUyMDE5IGFkdmljZS4iLCJIZSByYXJlbHkgZHJpdmVzIGxvbmcgZGlzdGFuY2VzLiIsIkhlIGRpc3RydXN0cyBtZWNoYW5pY3MuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gcmVjb21tZW5kPyIsIm9wdGlvbnMiOlsiYnV5aW5nIGEgbmV3ZXIgY2FyIiwiYmVpbmcgcHJlcGFyZWQgZm9yIGVtZXJnZW5jaWVzIiwidGFraW5nIGEgZHJpdmluZyBjb3Vyc2UiLCJzZXJ2aWNpbmcgdGhlIGNhciByZWd1bGFybHkiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA4IFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gZnJpZW5kcyBtYWtpbmcgcGxhbnMuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIiwiVGhlbiBhbnN3ZXIgdGhlIHF1ZXN0aW9ucy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBmcmllbmRzLCBhIG1hbiBhbmQgYSB3b21hbi5cblxuTUFOOiAgICAgICAgIEhleSwgQW1iZXIsIEkgaGF2ZW5cdTIwMTl0IHNlZW4geW91IGZvciBhIHdoaWxlISBIb3cgYXJlIHlvdT9cbldPTUFOOiBBY3R1YWxseSwgSSB3YXMganVzdCB0aGlua2luZyBhYm91dCB0aGF0IHZlcnkgdGhpbmdcdTIwMTRhbmQgSVx1MjAxOW0gZ29vZDogSVxuaGF2ZSBhIGdvb2Qgam9iLCBJIGhhdmUgYSBnb29kIGFwYXJ0bWVudCwgSVx1MjAxOXZlIG1hbmFnZWQgdG8gZmlndXJlIG91dCBhbGwgdGhlIGRheS1cbnRvLWRheSB0aGluZ3MsIGJ1dCB5b3Uga25vdz8gSVx1MjAxOXZlIGJlZW4gaGVyZSBzaXggbW9udGhzIG5vdywgYW5kIEkgaGF2ZW5cdTIwMTl0IHJlYWxseVxuc2VlbiBhbnl0aGluZyEgSSBtZWFuLCBJIGhhdmVuXHUyMDE5dCB0YWtlbiB0aGUgdGltZSB0byBzZWUgdGhlIGNpdHlcdTIwMTRJIHdpc2ggSSB3ZXJlIG1vcmVcbm9yZ2FuaXplZCB3aXRoIG15IHRpbWUsIGFuZCAuIC4gLiBJIHdhcyB3b25kZXJpbmcgaWYgeW91XHUyMDE5ZCBsaWtlIHRvIGhlbHAgbWUuXG5NQU46ICAgICAgICAgIEhlbHAgeW91IHNlZSB0aGUgY2l0eT8gWWVzLCBvZiBjb3Vyc2UsIElcdTIwMTlkIGxvdmUgdG8gZG8gdGhhdCEgV2hhdCB3b3VsZFxueW91IGxpa2UgdG8gc2VlP1xuV09NQU46IFdlbGwsIElcdTIwMTltIG5vdCBzdXJlLiBJIG1lYW4sIEkgZG9uXHUyMDE5dCByZWFsbHkga25vdyB3aGF0IG15IG9wdGlvbnMgYXJlLlxuTUFOOiAgICAgICAgIE9rYXkgLiAuIC4gYXJlIHlvdSBpbnRlcmVzdGVkIGluIGFydHMgYW5kIGN1bHR1cmU\/IFdlIGNvdWxkIGdvIHRvIGFydFxuZ2FsbGVyaWVzIGFuZCBtdXNldW1zLiBPciB3ZSBjb3VsZCBnbyB0byBhIGRhbmNlIHBlcmZvcm1hbmNlIG9yIHNlZSBzb21ldGhpbmcgYXRcbnRoZSB0aGVhdHJlLlxuV09NQU46IFdlbGwsIEkgZG8gbGlrZSB0byBkYW5jZVx1MjAxNFxuTUFOOiAgICAgICAgIFNvIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyByYXRoZXIgdGhhbiBqdXN0IHNlZSBzb21ldGhpbmc\/IE9rYXksXG50aGVyZSBhcmUgZGFuY2UgY2x1YnMsIGRhbmNlIGNsYXNzZXNcdTIwMTRvciB3ZSBjb3VsZCBnbyBoaWtpbmcgaW4gdGhlIG1vdW50YWlucyBvclxuY3ljbGluZyBvbiB0aGUgaXNsYW5kcy4gVGhlcmVcdTIwMTlzIHNvIG11Y2ggd2UgY291bGQgZG8hXG5cZldPTUFOOiBJIGRvblx1MjAxOXQga25vdyBob3cgdG8gY2hvb3NlXHUyMDE0SSBzdXNwZWN0IHNvbWUgdGhpbmdzIGNvc3QgbW9yZSB0aGFuXG5vdGhlcnMuIEFuZCBjZXJ0YWlubHkgd2Ugc2hvdWxkIHdhaXQgZm9yIGdvb2Qgd2VhdGhlciBmb3IgdGhlIG91dGRvb3IgdGhpbmdzLiBBc1xuZm9yIHRoZSBhcnRzIGFuZCBjdWx0dXJlIG9wdGlvbnMsIEkgZ3Vlc3MgaXQgZGVwZW5kcyBvbiB3aGF0IHBsYXlzIGFyZSBiZWluZ1xucGVyZm9ybWVkIGF0IHRoZSB0aGVhdHJlcyAuIC4gLlxuTUFOOiAgICAgICAgICAgT2theSwgSSBoYXZlIGFuIGlkZWEuIFRoZXJlIGFyZSBhIGNvdXBsZSBvZiBleGNlbGxlbnQgbmV3c3BhcGVycyB0aGF0XG5saXN0IHZpcnR1YWxseSBldmVyeXRoaW5nIHRoZXJlIGlzIHRvIGRvIGFuZCBzZWUgaW4gYW55IGdpdmVuIHdlZWsuIFdoeSBkb25cdTIwMTl0IHdlIGdldFxudGhpcyB3ZWVrXHUyMDE5cyBpc3N1ZXMgYW5kIHRha2UgYSBsb29rP1xuV09NQU46IE9oLCB0aGF0IHNvdW5kcyBsaWtlIGEgcGVyZmVjdCBzb2x1dGlvbiEgQW5kIGlmIHlvdVx1MjAxOXJlIHdpbGxpbmcsIG1heWJlXG53ZSBjYW4gZG8gc29tZXRoaW5nIGRpZmZlcmVudCBlYWNoIHdlZWsuIEJlY2F1c2UgSSBkb25cdTIwMTl0IHRoaW5rIElcdTIwMTltIGdvaW5nIHRvIGJlXG5hYmxlIHRvIGNob29zZSBqdXN0IG9uZSB0aGluZyFcbk5vdyBhbnN3ZXIgcXVlc3Rpb25zIDEtNS5cblxuV2hhdCBhcmUgdGhlIG1hbiBhbmQgdGhlIHdvbWFuIGRpc2N1c3Npbmc\/XG5XaHkgaGFzblx1MjAxOXQgdGhlIHdvbWFuIHNlZW4gbXVjaCBvZiB0aGUgY2l0eT9cbldoYXQgaXMgdGhlIG1hblx1MjAxOXMgcmVzcG9uc2UgdG8gaGVyIGludml0YXRpb24\/XG5XaGF0IGlzIHRydWUgb2YgdGhlIHdvbWFuP1xuSG93IGRvZXMgdGhlIGNvbnZlcnNhdGlvbiBlbmQ\/Iiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwiZHVyYXRpb24iOjE0MywibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hhdCBhcmUgdGhlIG1hbiBhbmQgdGhlIHdvbWFuIGRpc2N1c3Npbmc\/Iiwib3B0aW9ucyI6WyJ3aGF0IGFjdGl2aXRpZXMgdGhleSBzaG91bGQgZG8gdG9nZXRoZXIiLCJ3aGVyZSB0byBnbyBvbiBob2xpZGF5IiwiaG93IHRvIHBsYW4gYSBwYXJ0eSIsIndoaWNoIHJlc3RhdXJhbnQgdG8gdmlzaXQiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2h5IGhhc25cdTIwMTl0IHRoZSB3b21hbiBzZWVuIG11Y2ggb2YgdGhlIGNpdHk\/Iiwib3B0aW9ucyI6WyJTaGUganVzdCBtb3ZlZCB0aGVyZS4iLCJTaGUgaGFzIGJlZW4gYnVzeSB3aXRoIGRhaWx5IGxpZmUuIiwiU2hlIGRpc2xpa2VzIGdvaW5nIG91dC4iLCJTaGUgaGFzIG5vIHRyYW5zcG9ydGF0aW9uLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW5cdTIwMTlzIHJlc3BvbnNlIHRvIGhlciBpbnZpdGF0aW9uPyIsIm9wdGlvbnMiOlsiSGUgaXMgaGVzaXRhbnQuIiwiSGUgaXMgZW50aHVzaWFzdGljLiIsIkhlIGlzIHRvbyBidXN5LiIsIkhlIGlzIHVuaW50ZXJlc3RlZC4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBpcyB0cnVlIG9mIHRoZSB3b21hbj8iLCJvcHRpb25zIjpbIlNoZSBwcmVmZXJzIHN0YXlpbmcgaG9tZS4iLCJTaGUgaXMgaW50ZXJlc3RlZCBpbiBtYW55IHRoaW5ncy4iLCJTaGUgZGlzbGlrZXMgY3Jvd2RzLiIsIlNoZSBoYXMgc3RyaWN0IHJvdXRpbmVzLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJIb3cgZG9lcyB0aGUgY29udmVyc2F0aW9uIGVuZD8iLCJvcHRpb25zIjpbIndpdGggYSBkaXNhZ3JlZW1lbnQiLCJ3aXRoIGEgcGxhbiBvZiBhY3Rpb24iLCJ3aXRoIGFuIGFwb2xvZ3kiLCJ3aXRob3V0IGEgZGVjaXNpb24iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDggXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMzogTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvVGl0bGUiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gdHdvIGNvLXdvcmtlcnMuIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgdGhlIGNvbnZlcnNhdGlvbiBvbmx5IG9uY2UuIiwiVGhlbiBhbnN3ZXIgdGhlIHF1ZXN0aW9ucy4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIHR3byBlbXBsb3llZXMuIFRoZSB3b21hbiBpcyBhc2tpbmcgdGhlXG5tYW4gYWJvdXQgc29tZXRoaW5nIGF0IHRoZWlyIHdvcmtwbGFjZS5cblxuV09NQU46IEFsaSwgY2FuIHlvdSBoZWxwIG1lIHVuZGVyc3RhbmQgdGhpcyBqb2IgcGVyZm9ybWFuY2UgZm9ybT8gSVx1MjAxOXZlXG5uZXZlciBkb25lIG9uZSBvZiB0aGVzZSBiZWZvcmUuXG5NQU46ICAgICAgICBTdXJlLCBGYWl6ZWguIFdoYXQgd291bGQgeW91IGxpa2UgdG8ga25vdz9cbldPTUFOOiBXZWxsLCB0aGUgZmlyc3QgcXVlc3Rpb24gYXNrcyBmb3IgYSBicmllZiBvdXRsaW5lIG9mIHNpZ25pZmljYW50XG5hY2NvbXBsaXNobWVudHMgdGhyb3VnaG91dCB0aGUgeWVhciwgaW5kaWNhdGluZyB3aHkgZWFjaCBhY2NvbXBsaXNobWVudFxuXGZkZXNlcnZlcyBzcGVjaWFsIHJlY29nbml0aW9uLiBXaGF0IGlzIGEgXHUyMDFjc2lnbmlmaWNhbnQgYWNjb21wbGlzaG1lbnRcdTIwMWQ\/IENhbiB5b3VcbmdpdmUgbWUgYW4gZXhhbXBsZT9cbk1BTjogICAgICAgICBJdFx1MjAxOXMgc29tZXRoaW5nIHNwZWNpYWwgeW91XHUyMDE5dmUgZG9uZS4gSXRcdTIwMTlzIHNvbWV0aGluZyBvdmVyIGFuZCBhYm92ZVxud2hhdCB5b3UgZG8gb24gYSBkYXktdG8tZGF5IGJhc2lzLCBzb21ldGhpbmcgb3V0c2lkZSB5b3VyIGpvYiBkZXNjcmlwdGlvbi4gRm9yXG5leGFtcGxlLCBhdCB0aGUgYmFuayB3ZSBwcmV0dHkgbXVjaCBndWFyYW50ZWUgZXhjZWxsZW50IGN1c3RvbWVyIHNlcnZpY2UsIGJ1dFxucGVyaGFwcyB5b3UgZG8gbW9yZSB0aGFuIHRoYXQuIEkgYmV0IHlvdSBrbm93IG1hbnkgb2YgeW91ciBjdXN0b21lcnNcdTIwMTkgbmFtZXMsXG5yaWdodD8gQW5kIGNhbGwgZWFjaCBvbmUgYnkgbmFtZS5cbldPTUFOOiBPZiBjb3Vyc2UuIERvblx1MjAxOXQgeW91P1xuTUFOOiAgICAgICAgICBJIHRyeSwgYnV0IEkgZmluZCBpdCBoYXJkLiBTbyB0aGlzIGlzIGEgc2lnbmlmaWNhbnQgYWNjb21wbGlzaG1lbnQsIGJlaW5nXG5hYmxlIHRvIGdyZWV0IGVhY2ggcGVyc29uIGJ5IG5hbWUgYmVmb3JlIHRoZXkgZ2l2ZSB5b3UgdGhlaXIgYmFuayBjYXJkLlxuV09NQU46IE9LLCBJIHVuZGVyc3RhbmQgdGhhdCBvbmUuIE5vdywgbmV4dCBxdWVzdGlvbi4gVGhlcmUgYXJlIHNlY3Rpb25zXG5hYm91dCBpbnRlcmFjdGlvbiB3aXRoIGNvbGxlYWd1ZXMsIHJlc3BvbnNpYmlsaXR5LCBhY2NvdW50YWJpbGl0eSwgYW5kIHNvIG9uLiBBbmQgd2VcbmhhdmUgdG8gcmF0ZSBvdXJzZWx2ZXMgaW4gZWFjaCBzZWN0aW9uIGJ5IGNob29zaW5nIG9uZSBvZiBmb3VyIG9wdGlvbnM6XG5leGNlcHRpb25hbGx5IHdlbGwsIHZlcnkgd2VsbCwgd2VsbCBlbm91Z2gsIG9yIG5vdCB2ZXJ5IHdlbGwuIEhvdyBkbyB3ZSBkbyB0aGlzPyBJZlxuSSBjaG9vc2UgdG9vIGhpZ2gsIHRoZSBtYW5hZ2VyIHdpbGwgdGhpbmsgSVx1MjAxOW0gYXJyb2dhbnQgYW5kIG92ZXItY29uZmlkZW50LiBJZiBJXG5jaG9vc2UgdG9vIGxvdywgc2hlXHUyMDE5bGwgdGhpbmsgSSBkb25cdTIwMTl0IGhhdmUgZW5vdWdoIGFiaWxpdHkgb3Igc2tpbGwuXG5NQU46ICAgICAgICBZZWFoLCB0aGlzIGlzIGEgaGFyZCBvbmUuIEkgdXN1YWxseSByYXRlIG15c2VsZiBcdTIwMWN2ZXJ5IHdlbGxcdTIwMWQgZm9yIG1vc3Qgb2ZcbnRoZW0sIGFuZCBwZXJoYXBzIG9uZSBvciB0d28gXHUyMDFjZXhjZXB0aW9uYWxseSB3ZWxsXHUyMDFkIGlmIEkgaGF2ZSBnb29kIHJlYXNvbnMuXG5XT01BTjogU28geW91IGRvblx1MjAxOXQgY2hvb3NlIHRoZSB0d28gbG93ZXIgcmFua2luZ3MgZm9yIGFueXRoaW5nP1xuTUFOOiAgICAgICAgIFRoYXRcdTIwMTlzIHJpZ2h0LiBJIHdvdWxkIGhvcGUgdGhhdCB0aGUgbWFuYWdlciB3b3VsZCB0YWxrIHRvIG1lIGJlZm9yZVxucGVyZm9ybWFuY2UgZXZhbHVhdGlvbiB0aW1lIHRvIGRpc2N1c3MgYW55IHBvb3IgcGVyZm9ybWFuY2Ugc2hlIHNhdyBpbiBteSB3b3JrLlxuVGhhdCBraW5kIG9mIHRoaW5nIHNob3VsZCBiZSBkaXNjdXNzZWQgd2hlbiBpdCBoYXBwZW5zLlxuV09NQU46IFRoYXRcdTIwMTlzIGEgZ29vZCBwb2ludC4gSVx1MjAxOWxsIHRha2UgeW91ciBhZHZpY2UgYW5kIGNob29zZSB0aGUgXHUyMDFjdmVyeSB3ZWxsXHUyMDFkXG5kZXNjcmlwdG9yIGZvciBldmVyeXRoaW5nLiBJIGhhdmVuXHUyMDE5dCBiZWVuIGhlcmUgbG9uZyBlbm91Z2ggdG8gYmUgZXhjZXB0aW9uYWwuIElcbnBhc3NlZCBteSBwcm9iYXRpb24gcGVyaW9kIGEgZmV3IG1vbnRocyBhZ28sIHNvIEkgc2hvdWxkIGJlIHNhZmUgd2l0aCB0aGVzZVxuY2hvaWNlcy5cbk1BTjogICAgICAgIFRoYXRcdTIwMTlzIGEgZ29vZCB3YXkgdG8gZGVzY3JpYmUgaXQsIGFzIHNhZmUuIFRoZSBtYW5hZ2VyXHUyMDE5cyBncmVhdCBhdFxuZGlzY3Vzc2luZyB5b3VyIHNlbGYtcmF0aW5ncywgc28gZG9uXHUyMDE5dCB3b3JyeSB0b28gbXVjaCBhYm91dCBpdC5cbldPTUFOOiBPSywgdGhhbmtzIGZvciB5b3VyIGhlbHAuXG5Ob3cgYW5zd2VyIHF1ZXN0aW9ucyAxLTYuXG5cZldoZXJlIGRvIHRoZSBtYW4gYW5kIHdvbWFuIHdvcms\/XG5XaGF0IGRvZXMgdGhlIHdvbWFuIHdhbnQgZnJvbSB0aGUgbWFuP1xuV2h5IGNhbiB0aGUgbWFuIGFuc3dlciB0aGUgd29tYW4ncyBxdWVzdGlvbnM\/XG5XaGF0IGRvZXMgdGhlIG1hbiB0aGluayB0aGUgd29tYW4gZXhjZWxzIGF0P1xuT24gd2hhdCBiYXNpcyBkb2VzIHRoZSBtYW4gbWFrZSBoaXMgY2hvaWNlcz9cbldoeSBkb2VzIHRoZSB3b21hbiBmZWVsIHNhZmUgd2l0aCBoZXIgY2hvaWNlcz8iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJkdXJhdGlvbiI6MTc2LCJtZWRpYVR5cGUiOiJhdWRpbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGVyZSBkbyB0aGUgbWFuIGFuZCB3b21hbiB3b3JrPyIsIm9wdGlvbnMiOlsiYSBzY2hvb2wiLCJhIGJhbmsiLCJhIGhvc3BpdGFsIiwiYSBsaWJyYXJ5Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gd2FudCBmcm9tIHRoZSBtYW4\/Iiwib3B0aW9ucyI6WyJhIGRheSBvZmYgd29yayIsImhlbHAgaW4gdW5kZXJzdGFuZGluZyB0aGUgcXVlc3Rpb25zIiwiYSBwcm9tb3Rpb24iLCJhIHRyYW5zZmVyIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBjYW4gdGhlIG1hbiBhbnN3ZXIgdGhlIHdvbWFuXHUyMDE5cyBxdWVzdGlvbnM\/Iiwib3B0aW9ucyI6WyJIZSBpcyBoZXIgbWFuYWdlci4iLCJIZSBoYXMgd29ya2VkIHRoZXJlIGxvbmdlci4iLCJIZSB3cm90ZSB0aGUgbWFudWFsLiIsIkhlIHRyYWluZWQgdGhlIHN0YWZmLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiB0aGluayB0aGUgd29tYW4gZXhjZWxzIGF0PyIsIm9wdGlvbnMiOlsic29sdmluZyBwcm9ibGVtcyIsInJlbWVtYmVyaW5nIG5hbWVzIiwid29ya2luZyBxdWlja2x5IiwiaGFuZGxpbmcgbW9uZXkiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiT24gd2hhdCBiYXNpcyBkb2VzIHRoZSBtYW4gbWFrZSBoaXMgY2hvaWNlcz8iLCJvcHRpb25zIjpbImhpcyBvd24gcHJlZmVyZW5jZXMiLCJQcm9ibGVtcyBuZWVkIHRvIGJlIGRpc2N1c3NlZCBiZWZvcmVoYW5kLiIsInRoZSBjdXN0b21lclx1MjAxOXMgcmVxdWVzdHMiLCJ0aGUgbWFuYWdlclx1MjAxOXMgb3JkZXJzIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBmZWVsIHNhZmUgd2l0aCBoZXIgY2hvaWNlcz8iLCJvcHRpb25zIjpbIkhlciBtYW5hZ2VyIGFwcHJvdmVkIHRoZW0uIiwiU2hlIHBhc3NlZCBoZXIgcHJvYmF0aW9uIHJlY2VudGx5LiIsIlNoZSBoYXMgZG9uZSB0aGVtIG1hbnkgdGltZXMuIiwiVGhlIHJ1bGVzIGFyZSB2ZXJ5IHNpbXBsZS4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgOCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIG5ld3Mgc3RvcnkgYWJvdXQgYnVpbGRpbmcgYSBob3VzZS4iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciB0aGUgbmV3cyBpdGVtIG9ubHkgb25jZS4iLCJJdCBpcyBhYm91dCAxLjUgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBzdG9yeSBhYm91dCBidWlsZGluZyBhIGhvdXNlLlxuXG5BcmVhIHJlc2lkZW50IEJldmVybGV5IENhbWFybyBoYXMgYnVpbHQgYSBob3VzZSBvZiBzdHJhdy5cblxuQ2FtYXJvIG1vdmVkIGludG8gdGhlIGFyZWEgbGFzdCB5ZWFyLCBhbmQgaGFkIGJlZW4gbGl2aW5nIGluIGEgdHJhaWxlciBvbiBhIHNtYWxsXG5wbG90IG9mIGxhbmQgaW4gdGhlIGNvdW50cnlzaWRlIG9uIHdoaWNoIHNoZSBpbnRlbmRlZCB0byBidWlsZCBhIHNtYWxsIGhvdXNlLlxuQ29uY2VybmVkIGFib3V0IGdyb3dpbmcgaGVhdGluZyBjb3N0cyBhbmQgaW5jcmVhc2luZ2x5IGNvbGRlciB3aW50ZXJcbnRlbXBlcmF0dXJlcywgc2hlIHNwZW50IGEgbW9udGggcmVzZWFyY2hpbmcgaGVhdGluZyBhbmQgaG91c2luZyBjb25zdHJ1Y3Rpb24uIFNoZVxudGhlbiBjYW1lIGFjcm9zcyBhbiBhcnRpY2xlIGFib3V0IHN0cmF3IGhvdXNlcyBpbiBhIG1hZ2F6aW5lLiBBIGZldyB3ZWVrcyBsYXRlcixcbnNoZSBkaXNjb3ZlcmVkIGEgY29tcGFueSB0aGF0IHNwZWNpYWxpemVzIGluIHN1Y2ggY29uc3RydWN0aW9uLiBTaXggbW9udGhzIGxhdGVyLFxuc2hlIG1vdmVkIGludG8gaGVyIG5ldyBob3VzZSwgbWFkZSBvZiBzdHJhdy5cblxuQ2FtYXJvIGV4cGxhaW5zIHRoYXQgdGhlIGhvdXNlIGlzIGp1c3QgaW5zdWxhdGVkIHdpdGggc3RyYXcgYW5kIG1hbnkgcGVvcGxlIGhhdmVcbm1pc2NvbmNlcHRpb25zIGFib3V0IHN0cmF3IGhvdXNlcy4gRm9yIGV4YW1wbGUsIHRoZXkgYXJlIG5vdCBtb3JlIHN1c2NlcHRpYmxlIHRvXG5maXJlIHRoYW4gb3RoZXIgaG9tZXMuIEFsdGhvdWdoIGxvb3NlIHN0cmF3IGNhbiBiZSBidXJuZWQsIHRoZSBzdHJhdyBiYWxlcyB1c2VkIGluXG5ob3VzZSBjb25zdHJ1Y3Rpb24gYXJlIHNvIGNvbXByZXNzZWQgdGhhdCB0aGVyZSBpc25cdTIwMTl0IGVub3VnaCBveHlnZW4gaW4gdGhlbSB0b1xuYnVybi4gV2hhdFx1MjAxOXMgbW9yZSwgc3RyYXcgYmFsZSBob3VzZXMgYXJlIHdhdGVycHJvb2YsIGFjY29yZGluZyB0byBDYW1hcm8sXG5iZWNhdXNlIHRoZSBzdHVyZHkgd2FsbHMgYXJlIHBsYXN0ZXJlZCBpbnNpZGUgYW5kIG91dC4gSGVycywgc2hlIGV4cGxhaW5lZCwgYXJlIGFcbmxvdmVseSBhbWJlciBjb2xvdXIuIFRoZSBtb3N0IGltcG9ydGFudCwgZHVlIHRvIHRoZSBzdXBlcmlvciBpbnN1bGF0aW9uIHZhbHVlIG9mXG5zdHJhdywgQ2FtYXJvIGFudGljaXBhdGVzIGxvd2VyIGhlYXRpbmcgYmlsbHMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwiZHVyYXRpb24iOjEwMCwibWVkaWFUeXBlIjoiYXVkaW8iLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJ0aW1lTWludXRlcyI6MiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiQ2FtYXJvIGZvdW5kIG91dCBhYm91dCBzdHJhdyBob3VzZXMgZnJvbSIsIm9wdGlvbnMiOlsiYSBtYWdhemluZS4iLCJhIGxvY2FsIGNvbXBhbnkuIiwiYXJlYSByZXNpZGVudHMuIiwiYSBuZXdzIGJyb2FkY2FzdC4iXSwia2V5IjowfSx7Im4iOjIsInN0ZW0iOiJDYW1hcm9cdTIwMTlzIGhvdXNlIHdhcyBidWlsdCIsIm9wdGlvbnMiOlsiYnkgbG9jYWwgZnJpZW5kcy4iLCJpbiBsZXNzIHRoYW4gYSB5ZWFyLiIsIndpdGggZ3JlYXQgZGlmZmljdWx0eS4iLCJpbiB0aGUgdG93biBjZW50cmUuIl0sImtleSI6MX0seyJuIjozLCJzdGVtIjoiVGhlIHN0b3J5IGlzIGFib3V0Iiwib3B0aW9ucyI6WyJhbiB1bmxpa2VseSBwcm9ibGVtLiIsInB1enpsaW5nIHJlc2VhcmNoLiIsInN1cnByaXNpbmcgY29uc2VxdWVuY2VzLiIsImFuIHVudXN1YWwgc29sdXRpb24uIl0sImtleSI6M30seyJuIjo0LCJzdGVtIjoiU3RyYXcgYmFsZSBob3VzZXMgYXJlIiwib3B0aW9ucyI6WyJtb3JlIGVuZXJneSBlZmZpY2llbnQgdGhhbiBvdGhlciBob3VzZXMuIiwibm90IGFzIHN0dXJkeSBhcyBvdGhlciBob3VzZXMuIiwiY2hlYXBlciB0byBjb25zdHJ1Y3QgdGhhbiBvdGhlciBob3VzZXMuIiwibm90IGFzIGF0dHJhY3RpdmUgYXMgb3RoZXIgaG91c2VzLiJdLCJrZXkiOjB9LHsibiI6NSwic3RlbSI6IkNhbWFyb1x1MjAxOXMgZGVjaXNpb24gd2FzIG1vdGl2YXRlZCBieSIsIm9wdGlvbnMiOlsibGl2aW5nIGluIGEgc21hbGwgdHJhaWxlci4iLCJpbmNyZWFzZWQgaGVhdGluZyBjb3N0cy4iLCJ0aGUgc2l6ZSBvZiBoZXIgcHJvcGVydHkuIiwidGhlIGNvbXBhbnlcdTIwMTlzIGFkcy4iXSwia2V5IjoxfV19XX0seyJuYW1lIjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgOCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBidXNpbmVzcyBhc3NvY2lhdGVzLCB0d28gbWVuIGFuZCBvbmUgd29tYW4uIFRoZXkgYXJlIG1lZXRpbmcgYXQgdGhlaXIgb2ZmaWNlLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCB0aGUgZGlzY3Vzc2lvbiBvbmx5IG9uY2UuIiwiSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBidXNpbmVzcyBhc3NvY2lhdGVzLCB0d28gbWVuIGFuZCBvbmVcbndvbWFuLiBUaGV5IGFyZSBtZWV0aW5nIGF0IHRoZWlyIG9mZmljZS5cblxuQmVuamFtaW46IFNvIHdlIGhhdmUgdG8gZmlndXJlIG91dCB3aG8gdG8gc2VuZCB0byB0aGUgdHJhaW5pbmcgc2VtaW5hciBpblxuQXVndXN0LiBBbnkgaWRlYXM\/XG5KZW5uaWZlcjogICAgV2VsbCwgQ2hlcnlsIGlzIHRoZSBvbmUgd2hvIHdpbGwgYmUgdXNpbmcgdGhlIG5ldyBhY2NvdW50aW5nXG5zb2Z0d2FyZSB0aGUgbW9zdC4gSSB0aGluayB3ZSBzaG91bGQgc2VuZCBoZXIuXG5JYW46IEJ1dCB0aGVyZSB3aWxsIGJlIG90aGVycyBoZXJlIHdobyB3aWxsIG5lZWQgdG8gdXNlIGl0IGFzIHdlbGwsIGFuZCBCZXRoIGlzIGFcbmJldHRlciB0ZWFjaGVyLiBJZiB3ZSBzZW5kIGhlciwgc2hlXHUyMDE5bGwgYmUgYWJsZSB0byBob2xkIGluLWhvdXNlIHRyYWluaW5nIHNlc3Npb25zLCBhbmRcbndlXHUyMDE5bGwgYWxsIGJlIGFibGUgdG8gdXNlIGl0LiBJdFx1MjAxOXMgbm90IGVub3VnaCBqdXN0IHRvIGJyaW5nIGJhY2sgdGhlIG1hdGVyaWFscy4gV2hhdCBkb1xueW91IHRoaW5rP1xuQmVuamFtaW46IEFjdHVhbGx5LCBJIHdhcyBnb2luZyB0byBzdWdnZXN0IHdlIHNlbmQgRGlhbmUuIFNoZVx1MjAxOXMgd29ya2VkIGFsbW9zdFxuZXZlcnkgd2Vla2VuZCBsYXN0IG1vbnRoLiBUaGF0XHUyMDE5cyBhIGxvdCBvZiBvdmVydGltZS4gSSB0aGluayBzaGVcdTIwMTlzIGVudGl0bGVkIHRvIGFcbndlZWtlbmQgaW4gVmFuY291dmVyIVxuSmVubmlmZXI6ICBCdXQgdHJhaW5pbmcgc2VtaW5hcnMgc2hvdWxkblx1MjAxOXQgYmUgY29uc2lkZXJlZCBob2xpZGF5cy4gSWYgd2Ugd2FudCB0b1xucmV3YXJkIERpYW5lIGZvciBoZXIgb3ZlcnRpbWUsIHdlIHNob3VsZCBkbyBpdCBhbm90aGVyIHdheS5cbklhbjogSSBhZ3JlZSBhYm91dCB0aGUgdHJhaW5pbmcgc2VtaW5hcnMuIEFsc28sIHllcywgRGlhbmUgZGlkIHdvcmsgYSBsb3Qgb2Zcbm92ZXJ0aW1lLCBidXQgc2hlIGRpZCBnZXQgcGFpZCBmb3IgaXQuIElzblx1MjAxOXQgdGhhdCByZXdhcmQgZW5vdWdoP1xuQmVuamFtaW46IEkgc3VwcG9zZSBzby4gT2theSwgc28gaXRcdTIwMTlzIGJldHdlZW4gQ2hlcnlsIGFuZCBCZXRoPyBJYW4sIHdoYXQgbWFrZXNcbnlvdSBzYXkgdGhhdCBCZXRoIGlzIHRoZSBiZXR0ZXIgdGVhY2hlcj9cbklhbjogV2VsbCwgd2hlbmV2ZXIgSSBoYXZlIHByb2JsZW1zIHdpdGggYW55IG9mIHRoZSBwcm9ncmFtcyBJXHUyMDE5bSB1c2luZywgSSBnbyB0b1xuQmV0aCBmb3IgaGVscCwgYW5kIHNoZSBoZWxwcy4gU2hlXHUyMDE5cyB2ZXJ5IGdvb2QgYXQgZXhwbGFpbmluZyB0aGluZ3MuXG5KZW5uaWZlcjogICBUaGF0IG1pZ2h0IGJlIHRydWUuIEJ1dCB5b3VcdTIwMTl2ZSBuZXZlciBnb25lIHRvIENoZXJ5bFx1MjAxNGhvdyBkbyB5b3Vcbmtub3cgc2hlXHUyMDE5cyBub3QganVzdCBhcyBnb29kIGF0IGV4cGxhaW5pbmcgdGhpbmdzP1xuSWFuOiAgIFBlb3BsZSB0YWxrLiBDb21wbGFpbi5cbkplbm5pZmVyOiAgSWFuISBZb3Uga25vdyBiZXR0ZXIgdGhhbiB0aGF0ISBJIGJlbGlldmUgQ2hlcnlsIGhhcyBhIGRlZ3JlZSBpblxuZWR1Y2F0aW9uXHUyMDE0c2hlIHdvdWxkIGJlIGEgZ29vZCBjaG9pY2UhXG5cZkJlbmphbWluOiBJdCBpcyB0cnVlIHRoYXQgQ2hlcnlsXHUyMDE5cyBuZXZlciBnaXZlbiBhbnkgb2Ygb3VyIGluLWhvdXNlIHNlbWluYXJzLiBCZXRoXG5oYXMuIFdoeSBkb25cdTIwMTl0IHdlIGV4cGxhaW4gdG8gQ2hlcnlsIHRoYXQgd2VcdTIwMTlsbCBiYXNlIHRoZSBkZWNpc2lvbiBvZmYgdGVhY2hpbmdcbnNraWxscywgYW5kIGlmIHNoZSBjYW4gcHJvdmUgdG8gdXMgdGhhdCBzaGUgY2FuIHBhc3MgdGhlIGluZm9ybWF0aW9uIGFsb25nLCB3ZVx1MjAxOWxsIHNlbmRcbmhlciB0byBWYW5jb3V2ZXIuXG5JYW46IFRoYXQgc291bmRzIGZhaXIuIFdlXHUyMDE5bGwgc2V0IHVwIGEgdHJhaW5pbmcgc2Vzc2lvbiBmb3IgQ2hlcnlsIHRvIGNvbmR1Y3QuIElmIHNoZVxuZG9lcyBhIGdvb2Qgam9iLCBzaGVcdTIwMTlsbCBnZXQgbXkgdm90ZS4gQXMgeW91IHNheSwgc2hlIHdpbGwgYmUgdGhlIG9uZSB1c2luZyB0aGVcbmFjY291bnRpbmcgc29mdHdhcmUgdGhlIG1vc3QuXG5KZW5uaWZlcjogICAgIEJ1dCB3aGF0IHdpbGwgd2UgYXNrIENoZXJ5bCB0byB0ZWFjaCB1cz8gT2gsIEkga25vdyEgSGVhZCBPZmZpY2Vcbmp1c3Qgc2VudCBhIG5ldyBwb2xpY2llcyBhbmQgcHJvY2VkdXJlcyBtYW51YWwuIFNoZSBjb3VsZCBjaG9vc2Ugc29tZXRoaW5nIC4gLiAuXG5CZW5qYW1pbjogWWVhaCEgSVx1MjAxOWxsIGxldCBoZXIga25vdyB0b21vcnJvdywgYW5kIEkgYmV0IHNoZSBjYW4gZmlndXJlIHNvbWV0aGluZ1xub3V0IGluIHRoZSBuZXh0IHR3byB3ZWVrcy4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJkdXJhdGlvbiI6MTMyLCJtZWRpYVR5cGUiOiJ2aWRlbyIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiIsInRpbWVNaW51dGVzIjoyLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoZSBtZWV0aW5nPyIsIm9wdGlvbnMiOlsidG8gbWFrZSBhIHRyYWluaW5nIGRlY2lzaW9uIiwidG8gZGlzY3VzcyBzdGFmZiBwZXJmb3JtYW5jZSIsInRvIHJlLWV2YWx1YXRlIHN0YWZmIHJvbGVzIiwidG8gY29tcGFyZSB0cmFpbmluZyBmb3JtYXRzIl0sImtleSI6MH0seyJuIjoyLCJzdGVtIjoiV2hhdCB3aWxsIHRoZSB0cmFpbmluZyBzZW1pbmFyIGNvdmVyPyIsIm9wdGlvbnMiOlsiaG93IHRvIGVmZmVjdGl2ZWx5IHRlYWNoIHlvdXIgY29sbGVhZ3VlcyIsImhvdyB0byB1c2UgbmV3IGFjY291bnRpbmcgc29mdHdhcmUiLCJob3cgdG8gd3JpdGUgZ29vZCBidXNpbmVzcyBwb2xpY2llcyIsImhvdyB0byBkZXNjcmliZSBjb21wbGljYXRlZCBwcm9jZWR1cmVzIl0sImtleSI6MX0seyJuIjozLCJzdGVtIjoiV2h5IGRvZXMgQmVuamFtaW4gc3VnZ2VzdCBEaWFuZT8iLCJvcHRpb25zIjpbIlNoZSBpcyBhdmFpbGFibGUgb24gd2Vla2VuZHMuIiwiU2hlIGhhcyBiZWVuIHRoZXJlIHRoZSBsb25nZXN0LiIsIlNoZSBkZXNlcnZlcyBhIHRyaXAgdG8gVmFuY291dmVyLiIsIlNoZSBuZWVkcyB0byBsZWFybiBhYm91dCBhY2NvdW50aW5nLiJdLCJrZXkiOjJ9LHsibiI6NCwic3RlbSI6IldoYXQgZG9lcyBJYW4gdGhpbmsgYWJvdXQgRGlhbmU\/Iiwib3B0aW9ucyI6WyJTaGUgaXMgYmVpbmcgZGlzaG9uZXN0IGFib3V0IGhlciBvdmVydGltZS4iLCJTaGUgZG9lcyBub3QgcmVxdWlyZSBtb3JlIGNvbXBlbnNhdGlvbiBub3cuIiwiU2hlIGlzIGxhY2tpbmcgaW4gdGVhY2hpbmcgYW5kIGFjY291bnRpbmcgc2tpbGxzLiIsIlNoZSB3aWxsIG5vdCB3YW50IHRvIHdvcmsgb24gYW5vdGhlciB3ZWVrZW5kLiJdLCJrZXkiOjF9LHsibiI6NSwic3RlbSI6IldoeSBkb2VzIElhbiB0aGluayBCZXRoIGlzIGEgZ29vZCB0ZWFjaGVyPyIsIm9wdGlvbnMiOlsiU2hlIGhhcyBnaXZlbiBpbi1ob3VzZSBzZW1pbmFycy4iLCJQZW9wbGUgaGF2ZSB0b2xkIGhpbSBzaGUgaXMgYSBnb29kIHRlYWNoZXIuIiwiU2hlIGhhcyBhIGRlZ3JlZSBpbiBlZHVjYXRpb24uIiwiSWFuIGhhcyBhbHdheXMgZm91bmQgQmV0aFx1MjAxOXMgaW5zdHJ1Y3Rpb25zIGhlbHBmdWwuIl0sImtleSI6M30seyJuIjo2LCJzdGVtIjoiV2hhdCBkb2VzIEplbm5pZmVyIGxpa2VseSBiZWxpZXZlPyIsIm9wdGlvbnMiOlsiUGVvcGxlIGNhbiBjaGFuZ2UgdGhlaXIgd29yayBoYWJpdHMgZWFzaWx5LiIsIlBlb3BsZSBzaG91bGRuXHUyMDE5dCBjb21wbGFpbiBhcyBtdWNoIGFzIHRoZXkgZG8uIiwiUGVvcGxlIGNhbiBsZWFybiB0byBleHBsYWluIHRoaW5ncyBtb3JlIGNsZWFybHkuIiwiUGVvcGxlIHNob3VsZG5cdTIwMTl0IGJlbGlldmUgZXZlcnl0aGluZyB0aGV5IGhlYXIuIl0sImtleSI6M30seyJuIjo3LCJzdGVtIjoiV2hhdCBkbyB0aGV5IGFncmVlIHRvIGRvPyIsIm9wdGlvbnMiOlsiZGVsYXkgbWFraW5nIGEgZmluYWwgZGVjaXNpb24iLCJzcGVhayB0byBhbGwgdGhyZWUgY2FuZGlkYXRlcyIsInJldmlldyB0aGUgY2FuZGlkYXRlc1x1MjAxOSBlZHVjYXRpb24iLCJjb25zdWx0IHRoZSBwcm9jZWR1cmVzIG1hbnVhbCJdLCJrZXkiOjB9LHsibiI6OCwic3RlbSI6IldoYXQgaXMgdHJ1ZSBvZiB0aGUgdHJhaW5pbmcgc2VtaW5hciBpbiBWYW5jb3V2ZXI\/Iiwib3B0aW9ucyI6WyJJdCB3aWxsIGJlIGhlbGQgYXQgSGVhZCBPZmZpY2UuIiwiVGhleSBuZWVkIHRvIHJlZ2lzdGVyIGZvciBpdCB0b21vcnJvdy4iLCJJdCBpcyBhdCBsZWFzdCAyIHdlZWtzIGF3YXkuIiwiVGhleSBuZWVkIHRvIHJlYWQgbWF0ZXJpYWxzIGJlZm9yZWhhbmQuIl0sImtleSI6Mn1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgOCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCB1c2luZyBzb2NpYWwgbmV0d29ya2luZyBzaXRlcyBpbiBzY2hvb2xzLiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIHRoZSByZXBvcnQgb25seSBvbmNlLiIsIkl0IGlzIGFib3V0IDMgbWludXRlcyBsb25nLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51LiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgcHJlc2VudGF0aW9uIGFib3V0IHVzaW5nIHNvY2lhbCBuZXR3b3JraW5nIHNpdGVzIGluIHNjaG9vbHMuXG5cblRvZGF5IG9uIENoYXQgUmFkaW86IFNob3VsZCBvbmxpbmUgc29jaWFsIG5ldHdvcmtpbmcgc2l0ZXMsIHN1Y2ggYXMgRmFjZWJvb2sgb3JcblR3aXR0ZXIsIGJlIHVzZWQgaW4gc2Nob29scz8gU29jaWFsIG5ldHdvcmtpbmcgc2l0ZXMsIHdoZXJlIHVzZXJzIHNoYXJlIG1lc3NhZ2VzLFxucGljdHVyZXMsIG9yIHZpZGVvcyB3aXRoIG90aGVycywgYXJlIGFuIGluY3JlYXNpbmdseSBwb3B1bGFyIGZvcm0gb2YgY29tbXVuaWNhdGlvblxuZm9yIGJvdGggYWR1bHRzIGFuZCBjaGlsZHJlbi4gSW4gYW4gZWZmb3J0IHRvIGtlZXAgZWR1Y2F0aW9uIHJlbGV2YW50LCBtYW55IGFyZVxuYXNraW5nIHdoZXRoZXIgc3VjaCBzaXRlcyBzaG91bGQsIHBlcmhhcHMsIGJlIGluY29ycG9yYXRlZCBpbnRvIHNjaG9vbCBjdXJyaWN1bGEuXG5cbkZvciBTaGVlbmEgQnJhZGxleSwgQ0VPIG9mIExBQi1UZWNoIEluZHVzdHJpZXMsIHRoaXMgcXVlc3Rpb24gaXMgZWFzaWx5XG5hbnN3ZXJlZC4gU2hlIGFyZ3VlcyB0aGF0IGVkdWNhdGlvbiBpcyBtZWFudCB0byBwcmVwYXJlIHN0dWRlbnRzIGZvciB0aGVpciBmdXR1cmVcbndoaWNoIHdpbGwgbGlrZWx5IGludm9sdmUgd29ya2luZyB3aXRoIG90aGVycyB2aWEgb25saW5lIHBsYXRmb3Jtcy4gRm9yIGV4YW1wbGUsXG5MQUItVGVjaCB1c2VzIGFuIGluLWhvdXNlIHNvY2lhbCBuZXR3b3JraW5nIHNpdGUgY2FsbGVkIFRoaW5rVGFuayB0byBlbmNvdXJhZ2VcbmVtcGxveWVlIGNvbGxhYm9yYXRpb24gYW5kIHRoZSBkZXZlbG9wbWVudCBvZiBuZXcgaWRlYXMsIHNvbWV0aGluZyB0aGF0IGhhcyBsZWRcbnRvIGEgc3Vic3RhbnRpYWwgaW5jcmVhc2UgaW4gcHJvZHVjdGl2aXR5IGFuZCBpbm5vdmF0aW9uIGFtb25nIGVtcGxveWVlcy4gRm9yXG5CcmFkbGV5LCB3ZSBhcmUgYXQgdGhlIGRhd24gb2YgYSBuZXcgd29yayBjdWx0dXJlIHdoZXJlIHRoZSBpbm5vdmF0aXZlIGdyb3VwIGlzXG52YWx1ZWQuIEFjY29yZGluZ2x5LCBzaGUgc2VlcyBvbmxpbmUgc29jaWFsIG5ldHdvcmtpbmcgYXMgYSBwb3B1bGFyIG1lZGl1bSBmb3JcbmFjcXVpcmluZyB0aGUgc2tpbGxzIHRoYXQgdG9kYXlcdTIwMTlzIGVtcGxveWVycyB3YW50OiB0ZWNobm9sb2dpY2FsIGtub3dsZWRnZSBhbmQgdGhlXG5hYmlsaXR5IHRvIHdvcmsgd2l0aCBvdGhlcnMuXG5cZkphbWVzIFNwYWRvbmksIGEgdGVhY2hlciBhdCBDcmVzdHZpZXcgU2Vjb25kYXJ5LCBhZ3JlZXMuIEhvd2V2ZXIsIHdoaWxlIFNwYWRvbmlcbmlzIGNsZWFyIHRoYXQgb25saW5lIHNvY2lhbCBuZXR3b3JraW5nIHNob3VsZCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgY3VycmljdWx1bSxcbmhvdyB0byBhY2hpZXZlIHRoaXMgaXMgbGVzcyBjbGVhciBmb3IgaGltLiBTcGFkb25pLCBiZWluZyBzb21lb25lIG5lYXJpbmcgc2l4dHksIGRpZFxubm90IGdyb3cgdXAgdXNpbmcgY29tcHV0ZXJzLiBIZSB0aHVzIHN0cnVnZ2xlcyB0byBsZWFybiBob3cgbmV3IHRlY2hub2xvZ2llcyBjYW5cbmJlIHVzZWQgdG8gYXR0YWluIGEgcGVkYWdvZ2ljYWwgZ29hbC4gRGVzcGl0ZSB0aGlzIGNoYWxsZW5nZSwgU3BhZG9uaSBoYXMgZm91bmRcbm9ubGluZSBzb2NpYWwgbmV0d29ya2luZyB0byBiZSBxdWl0ZSBzdWNjZXNzZnVsIGluIHRoZSBjbGFzc3Jvb20uIEFzIHBhcnQgb2YgbGFzdFxueWVhclx1MjAxOXMgZmluYWwgY2xhc3MgcHJvamVjdCwgU3BhZG9uaVx1MjAxOXMgY2xhc3MgdXNlZCBUd2l0dGVyIHRvIHNoYXJlIGlkZWFzIGFuZCBvcmdhbml6ZVxud29ya2Zsb3cuIFRoaXMgcHJvdmVkIHBhcnRpY3VsYXJseSBlZmZlY3RpdmUgZm9yIHNoeWVyIHN0dWRlbnRzIHdobyB0ZW5kZWQgdG8gZmVlbFxubW9yZSBjb21mb3J0YWJsZSBzaGFyaW5nIGlkZWFzIGluIGFuIG9ubGluZSBlbnZpcm9ubWVudC5cblxuTWFuZHkgUmFpbmVyLCBob3dldmVyLCBpcyBub3QgY29udmluY2VkLiBTaGUgd2FudHMgaGVyIGNoaWxkcmVuIHRvIGJlIGxlYXJuaW5nIGF0XG5zY2hvb2wsIG5vdCBwbGF5aW5nIGFyb3VuZCBvbiB0aGUgaW50ZXJuZXQuIFNoZSBzZWVzIG5vIG5lZWQgdG8gaW5jbHVkZSBvbmxpbmVcbnNvY2lhbCBuZXR3b3JraW5nIGFzIHBhcnQgb2YgdGhlIHNjaG9vbCBjdXJyaWN1bHVtLCBpbnNpc3RpbmcgdGhhdCBzdHVkZW50cyBhbHJlYWR5XG5nZXQgZW5vdWdoIGV4cG9zdXJlIG91dHNpZGUgb2Ygc2Nob29sLiBGb3IgUmFpbmVyLCB3aG8gYWxyZWFkeSBzdHJ1Z2dsZXMgdG8gZ2V0XG5oZXIga2lkcyBvZmYgRmFjZWJvb2ssIGNoaWxkcmVuIG5lZWQgbGVzcyBzb2NpYWxpemluZywgbm90IG1vcmUuIENoaWxkcmVuIG5lZWQgdG9cbmxlYXJuIHRvIGNvbmNlbnRyYXRlLCB0byBmb2N1cyBvbiBhIHRhc2ssIGFuZCB0byByZWFkIHdpdGhvdXQgZGlzdHJhY3Rpb24uIEl0XHUyMDE5c1xuUmFpbmVyXHUyMDE5cyBvcGluaW9uIHRoYXQgc29jaWFsIG1lZGlhIGFuZCB0ZWFtd29yayBjZXJ0YWlubHkgd29uXHUyMDE5dCBoZWxwIHN0dWRlbnRzXG53cml0ZSB0aGVpciBvd24gcmVzZWFyY2ggZXNzYXlzLiBUbyBwcmVwYXJlIGZvciB1bml2ZXJzaXR5IGFuZCBtYW55IHByb2Zlc3Npb25hbFxuY2FyZWVycywgdGhleSBtdXN0IGJlIGFibGUgdG8gd29yayBpbmRlcGVuZGVudGx5IGFuZCByZWx5IG9uIHRoZW1zZWx2ZXMuXG5cbk1hbnkgcGFyZW50IGdyb3VwcyBhZ3JlZSB3aXRoIFJhaW5lciBhbmQgd291bGQgbGlrZSB0byBzZWUgc29jaWFsIG1lZGlhIGFuZFxuY2VsbHBob25lcyBiYW5uZWQgaW4gdGhlIGNsYXNzcm9vbS4gV2hhdCBkbyBvdXIgbGlzdGVuZXJzIHRoaW5rPyBDYWxsIHVzIGFuZCBzaGFyZVxueW91ciBvcGluaW9uLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsImR1cmF0aW9uIjoxOTAsIm1lZGlhVHlwZSI6ImF1ZGlvIiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIHJlcG9ydC4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwidGltZU1pbnV0ZXMiOjIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IlRoZSByYWRpbyBwcm9ncmFtIHRhbGtzIGFib3V0IHdoZXRoZXIgc2Nob29scyBzaG91bGQiLCJvcHRpb25zIjpbIm1vbml0b3Igc3R1ZGVudHNcdTIwMTkgdXNlIG9mIHNvY2lhbCBtZWRpYS4iLCJkZXZlbG9wIGxlc3NvbnMgYmFzZWQgb24gc29jaWFsIG1lZGlhLiIsIm9mZmVyIGNsYXNzZXMgb24gaG93IHRvIHVzZSBzb2NpYWwgbWVkaWEuIiwidHJhaW4gbW9yZSB0ZWFjaGVycyB0byB1c2Ugc29jaWFsIG1lZGlhLiJdLCJrZXkiOjF9LHsibiI6Miwic3RlbSI6IkxBQi1UZWNoIEluZHVzdHJpZXMiLCJvcHRpb25zIjpbImRldmVsb3BzIHNvY2lhbCBuZXR3b3JraW5nIHBsYXRmb3JtcyBmb3Igc2Nob29scy4iLCJib29zdHMgZW1wbG95ZWUgcHJvZHVjdGl2aXR5IGJ5IG9mZmVyaW5nIGluY2VudGl2ZXMuIiwicHJlZmVycyBpbmRpdmlkdWFscyB3aG8gYXJlIGFibGUgdG8gd29yayBpbmRlcGVuZGVudGx5LiIsImNvbnNpZGVycyBzb2NpYWwgbmV0d29ya2luZyBhIHRlY2hub2xvZ2ljYWwgc2tpbGwuIl0sImtleSI6M30seyJuIjozLCJzdGVtIjoiVGVhY2hlciBKYW1lcyBTcGFkb25pIGZpbmRzIGl0IGNoYWxsZW5naW5nIHRvIiwib3B0aW9ucyI6WyJpbmNvcnBvcmF0ZSBuZXcgdGVjaG5vbG9neSBpbnRvIGhpcyBjbGFzc2VzLiIsImdldCBzdHVkZW50cyB0byBwYXJ0aWNpcGF0ZSBkdXJpbmcgZ3JvdXAgd29yay4iLCJrZWVwIHN0dWRlbnRzIGZyb20gc3VyZmluZyB0aGUgaW50ZXJuZXQgaW4gY2xhc3MuIiwib3JnYW5pemUgaW50ZXJlc3RpbmcgY29tcHV0ZXIgY2xhc3MgcHJvamVjdHMuIl0sImtleSI6MH0seyJuIjo0LCJzdGVtIjoiUGFyZW50IE1hbmR5IFJhaW5lciBiZWxpZXZlcyIsIm9wdGlvbnMiOlsiY29tcHV0ZXJzIHNob3VsZCBiZSByZW1vdmVkIGZyb20gc2Nob29scy4iLCJvdmVyLWNvbm5lY3RlZG5lc3MgbmVnYXRpdmVseSBpbXBhY3RzIGxlYXJuaW5nLiIsInNjaG9vbHMgaWdub3JlIHRoZSB2YWx1ZSBvZiBjb21tdW5pY2F0aW9uIHNraWxscy4iLCJzY2hvb2xzIHNob3VsZCBwcmVwYXJlIHN0dWRlbnRzIGZvciB0aGUgd29ya2ZvcmNlLiJdLCJrZXkiOjF9LHsibiI6NSwic3RlbSI6IlNwYWRvbmkgYW5kIExBQi1UZWNoIHdvdWxkIGFncmVlIHRoYXQiLCJvcHRpb25zIjpbIm9ubGluZSBzb2NpYWxpemluZyByZXN1bHRzIGluIHJlZHVjZWQgcHJvZHVjdGl2aXR5LiIsImNoaWxkcmVuIGxlYXJuIG5ldyB0aGluZ3MgZWFzaWVyIHRoYW4gYWR1bHRzLiIsInNjaG9vbHMgbXVzdCBrZWVwIHBhY2Ugd2l0aCBjaGFuZ2VzIGluIHNvY2lldHkuIiwiZ3JvdXAgd29yayBjYW4gYmUgY2hhbGxlbmdpbmcgZm9yIHNoeSBpbmRpdmlkdWFscy4iXSwia2V5IjoyfSx7Im4iOjYsInN0ZW0iOiJMQUItVGVjaCB3b3VsZCBsaWtlbHkgcHJlZmVyIGFuIGVtcGxveWVlIHdobyIsIm9wdGlvbnMiOlsibGlrZXMgd29ya2luZyBhbG9uZS4iLCJ3b3JrcyBiZXN0IGluZGVwZW5kZW50bHkuIiwiZW5qb3lzIGdyb3VwIHByb2plY3RzLiIsImlzIGV4dHJlbWVseSBjb21wZXRpdGl2ZS4iXSwia2V5IjoyfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCA4IFRlc3QgMiBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 8 Practice Test 2: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6195","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6195","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=6195"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6195\/revisions"}],"predecessor-version":[{"id":6591,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6195\/revisions\/6591"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}