{"id":5205,"date":"2026-06-28T02:54:34","date_gmt":"2026-06-28T02:54:34","guid":{"rendered":"https:\/\/allenglish4u.com\/?page_id=5205"},"modified":"2026-06-28T03:06:58","modified_gmt":"2026-06-28T03:06:58","slug":"cambridge-flyers-4-test-3-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-flyers-4-test-3-rw\/","title":{"rendered":"Cambridge Flyers 4 Test 3 Reading &#038; Writing"},"content":{"rendered":"<!--\n================================================================\nAE4U &#183; YLE FLYERS READING & WRITING &#8212; Test 3 (Flyers 3)\n7 parts &#183; 50 questions &#183; auto-graded\nP1 copy-word(text bank) &#183; P2 yes\/no &#183; P3 dialogue match A-H &#183; P4 story cloze+title\nP5 open cloze(story) &#183; P6 word-choice MCQ &#183; P7 open cloze(1 word)\n================================================================\n-->\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n.entry-content,.wp-block-post-content,.is-layout-constrained{max-width:none !important;width:auto !important;margin-left:0 !important;margin-right:0 !important;padding-left:0 !important;padding-right:0 !important;}\n.wp-block-post-title{display:none !important;}\n:root{\n  --accent-1:#10B981; --accent-2:#0EA5E9; --gold:#FBBF24; --green:#10B981; --red:#EF4444;\n  --light-1:#ECFDF5; --light-2:#F0FDFA; --white:#FFFFFF;\n  --text:#0F172A; --muted:#475569; --subtle:#64748B; --border:#E2E8F0;\n  --r-10:10px; --r-16:16px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{font-family:'Plus Jakarta Sans',system-ui,sans-serif;color:var(--text);background:var(--light-2);-webkit-font-smoothing:antialiased;overflow-x:hidden}\n.serif{font-family:'Fraunces',Georgia,serif;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:980px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit;cursor:pointer;border:none;background:none}\n.hero{position:relative;min-height:240px;padding:64px 0 36px;background:linear-gradient(135deg,#10B981 0%,#0EA5E9 55%,#1E3A8A 100%);color:#fff;overflow:hidden}\n.hero::before{content:\"\";position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.15) 0,transparent 50%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.10) 0,transparent 50%);pointer-events:none}\n.hero .wrap{position:relative;z-index:1}\n.kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;opacity:.92;margin-bottom:12px}\n.hero h1{font-size:clamp(28px,5vw,44px);line-height:1.05;margin-bottom:12px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:15.5px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:16px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px}\n.meta-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.24);font-size:13px;font-weight:600}\n.meta-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--gold)}\n.mini-prog{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);padding:10px 0}\n.mini-prog-inner{display:flex;align-items:center;gap:14px}\n.mini-prog-bar{flex:1;height:6px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.mini-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.mini-prog-label{font-size:12px;color:var(--muted);font-weight:700;min-width:120px}\n.mini-prog-score{font-weight:800;color:var(--accent-1);font-size:14px;min-width:84px}\n.part-section{padding:44px 0;border-bottom:1px solid var(--border)}\n.part-section:nth-of-type(even){background:#fff}\n.part-head{display:flex;align-items:flex-start;gap:18px;margin-bottom:20px}\n.part-num{flex-shrink:0;width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--accent-1),var(--accent-2));color:#fff;display:grid;place-items:center;font-family:'Fraunces',serif;font-weight:700;font-size:24px;box-shadow:0 8px 22px rgba(14,165,233,.3)}\n.part-head-text h2{font-size:24px;line-height:1.15;margin-bottom:6px}\n.part-head-text .qrange{display:inline-block;font-size:12.5px;font-weight:700;color:var(--accent-1);background:var(--light-1);padding:4px 10px;border-radius:999px;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:14.5px;line-height:1.55;max-width:740px}\n.card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:20px;margin-top:14px}\n.show-ans-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;background:#FEF3C7;color:#7B5B00;font-weight:700;font-size:12px;border:1px solid #E8D88E;cursor:pointer}\n.show-ans-btn:hover{background:#FDE68A}\n.input-blank{display:inline-block;min-width:120px;border:none;border-bottom:2px dashed var(--accent-1);background:transparent;font-family:inherit;font-size:15.5px;color:var(--text);font-weight:600;padding:2px 8px;text-align:center;outline:none}\n.input-blank:focus{border-bottom-style:solid;background:var(--light-1)}\n.input-blank.correct{border-bottom-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.input-blank.wrong{border-bottom-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n.input-blank.revealed{border-bottom-color:var(--gold);background:#FEF3C7;color:#7B5B00}\n.input-mini{min-width:70px}\n\/* word bank (text only) *\/\n.wbank{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px}\n.wbank.b10{grid-template-columns:repeat(5,1fr)}\n.wchip{border:1.5px solid var(--border);border-radius:12px;padding:8px;text-align:center;background:#FAFBFC}\n.wchip.wtext{display:flex;align-items:center;justify-content:center;min-height:46px;font-weight:700;font-size:13.5px;color:var(--text)}\n.defrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 0;border-top:1px dashed var(--border)}\n.defrow:first-child{border-top:none}\n.defrow .qn{font-weight:800;color:var(--accent-1);min-width:26px}\n.defrow .dtext{flex:1;min-width:220px;font-size:15px}\n.defrow.example{opacity:.75}\n.defrow .ex-tag{background:var(--gold);color:#fff;padding:2px 8px;border-radius:6px;font-size:11px;margin-left:6px}\n\/* yes\/no *\/\n.yn-row{padding:14px 0;border-top:1px dashed var(--border)}\n.yn-row:first-child{border-top:none}\n.yn-q{font-size:15px;font-weight:600;margin-bottom:8px;display:flex;gap:10px}\n.yn-q .qn{color:var(--accent-1);font-weight:800;min-width:26px}\n.yn-opts{display:flex;gap:10px}\n.yn-btn{padding:8px 22px;border-radius:999px;border:2px solid var(--border);font-weight:700;font-size:14px;background:#fff;cursor:pointer;min-height:40px}\n.yn-btn.sel{border-color:var(--accent-1);background:linear-gradient(100deg,rgba(16,185,129,.12),rgba(14,165,233,.12))}\n.yn-btn.correct{border-color:var(--green);background:rgba(16,185,129,.12);color:#065F46}\n.yn-btn.wrong{border-color:var(--red);background:rgba(239,68,68,.10);color:#991B1B}\n\/* Part 3 matching *\/\n.optbox{border:1.5px solid var(--border);border-radius:12px;background:#FAFBFC;padding:14px 16px;margin-bottom:16px}\n.optbox .oi{display:flex;gap:10px;padding:6px 0;font-size:14.5px;line-height:1.4}\n.optbox .ol{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--light-1);color:var(--accent-1);font-weight:800;font-size:13px;flex-shrink:0}\n.optbox .oi.ex{opacity:.6}\n.dlg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 0;border-top:1px dashed var(--border)}\n.dlg-row:first-child{border-top:none}\n.dlg-row.example{opacity:.75}\n.dlg-row .qn{font-weight:800;color:var(--accent-1);min-width:26px}\n.dlg-q{flex:1;min-width:240px;font-size:15px}\n.match-select{font-family:inherit;font-size:15px;font-weight:800;color:var(--accent-1);border:1.5px solid var(--accent-1);border-radius:8px;padding:5px 8px;background:#fff;cursor:pointer}\n.match-select.correct{border-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.match-select.wrong{border-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n\/* story + selects *\/\n.story{font-size:15.5px;line-height:2.0;color:var(--text);background:#FAFBFC;border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin:12px 0}\n.story img,.scene{max-width:560px;width:100%;height:auto;border-radius:10px;display:block;margin:0 auto 14px}\n.gap-select{font-family:inherit;font-size:14.5px;font-weight:700;color:var(--accent-1);border:1.5px solid var(--accent-1);border-radius:8px;padding:3px 6px;background:#fff;cursor:pointer}\n.gap-select.correct{border-color:var(--green);color:#065F46;background:rgba(16,185,129,.10)}\n.gap-select.wrong{border-color:var(--red);color:#991B1B;background:rgba(239,68,68,.08)}\n.tickbox{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;margin-top:8px;cursor:pointer;font-weight:600;font-size:14.5px}\n.tickbox .tb{width:22px;height:22px;border-radius:6px;border:2px solid var(--border);display:grid;place-items:center;color:transparent}\n.tickbox.sel{border-color:var(--accent-1);background:var(--light-1)}\n.tickbox.sel .tb{background:var(--accent-1);color:#fff;border-color:transparent}\n.tickbox.correct{border-color:var(--green);background:rgba(16,185,129,.08)}\n.tickbox.wrong{border-color:var(--red);background:rgba(239,68,68,.08)}\n.submit-panel{background:linear-gradient(135deg,#fff,var(--light-1));border:1.5px solid var(--border);border-radius:20px;padding:28px;text-align:center;margin:36px 0}\n.submit-panel h3{font-family:'Fraunces',serif;font-size:22px;margin-bottom:6px}\n.submit-panel .intro{color:var(--muted);font-size:14px;margin-bottom:16px}\n.sp-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}\n.btn-submit-big{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:800;font-size:16px;box-shadow:0 10px 26px rgba(14,165,233,.35)}\n.btn-reset-big{padding:14px 24px;border-radius:999px;background:#fff;border:1.5px solid var(--border);font-weight:700;font-size:15px;color:var(--text)}\n.results-banner{display:none;background:linear-gradient(135deg,#10B981,#0EA5E9);color:#fff;border-radius:20px;padding:30px;text-align:center;margin:24px 0}\n.results-banner.show{display:block}\n.results-banner h3{font-family:'Fraunces',serif;font-size:22px;margin-bottom:8px}\n.score-big{font-family:'Fraunces',serif;font-size:56px;line-height:1;margin:8px 0}\n.score-parts{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}\n.sp-item{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.26);border-radius:12px;padding:8px 14px;font-size:13px;font-weight:700}\n.sp-item b{display:block;font-size:18px;font-family:'Fraunces',serif}\n.footer{background:#0C1322;color:rgba(255,255,255,.7);padding:28px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold)}\n@media(max-width:720px){.wbank,.wbank.b10{grid-template-columns:repeat(3,1fr)}}\n<\/style>\n\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge YLE &middot; Flyers<\/span>\n    <h1 class=\"serif\">Flyers 4 &mdash; Test 3 <span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">7 parts with 50 questions. Read carefully, choose or write your answers, then submit to grade. Each part has a <b>Show Answers<\/b> button to study.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>~40 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>7 Parts &middot; 50 Questions<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>Auto-grade + Show Answers<\/span>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"mini-prog\">\n  <div class=\"wrap mini-prog-inner\">\n    <div class=\"mini-prog-score\">Score <span id=\"scoreNow\">0<\/span>\/50<\/div>\n    <div class=\"mini-prog-bar\"><div class=\"mini-prog-fill\" id=\"progFill\"><\/div><\/div>\n    <div class=\"mini-prog-label\"><span id=\"answeredCount\">0<\/span> of 50 answered<\/div>\n  <\/div>\n<\/div>\n\n<section class=\"part-section\" id=\"part1\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">1<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 1&ndash;10 &middot; Look and write<\/span>\n    <h2 class=\"serif\">Choose the correct words and write them<\/h2>\n    <p>Look at the words in the box. Read the sentences. Choose the correct word and write it on the line. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"wbank\" id=\"p1Bank\"><\/div>\n    <div id=\"p1Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P1ALL\">&#128065; Show Answers (Part 1)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part2\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">2<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 11&ndash;17 &middot; Yes \/ No<\/span>\n    <h2 class=\"serif\">Look at the picture and read &mdash; yes or no?<\/h2>\n    <p>Look at the picture. Read the sentences. Are they right? Write <b>yes<\/b>. Are they wrong? Write <b>no<\/b>. There are two examples.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" class=\"scene\" src=\"\/wp-content\/uploads\/2026\/06\/f4t3rw_p2.png\" alt=\"a winter outdoor scene with people ice-skating, a snowman, and sledges\">\n    <div id=\"p2Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P2ALL\">&#128065; Show Answers (Part 2)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part3\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">3<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 18&ndash;22 &middot; Choose the answer<\/span>\n    <h2 class=\"serif\">Read the conversation. Choose the best answer<\/h2>\n    <p>Harry\\&#8217;s mother is talking to Harry about a birthday present. What does Harry say to his mother? Choose the best answer and write a letter (A&ndash;H) for each one. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" class=\"scene\" style=\"max-width:520px\" src=\"\/wp-content\/uploads\/2026\/06\/f4t3rw_p3.png\" alt=\"Harry and his mother on a shopping street\">\n    <div class=\"optbox\" id=\"p3Opts\"><\/div>\n    <div id=\"p3Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P3ALL\">&#128065; Show Answers (Part 3)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part4\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">4<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 23&ndash;28 &middot; Story &amp; title<\/span>\n    <h2 class=\"serif\">Read the story. Choose a word for each gap<\/h2>\n    <p>Choose the right word from the box for each gap and pick it from the menu. Then choose the best name for the story. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" class=\"scene\" style=\"max-width:380px\" src=\"\/wp-content\/uploads\/2026\/06\/f4t3rw_p4.png\" alt=\"A girl on a swing in a park\">\n    <div class=\"wbank b10\" id=\"p4Bank\"><\/div>\n    <div class=\"story\" id=\"p4Story\"><\/div>\n    <div style=\"margin-top:14px\"><b>(28) Now choose the best name for the story:<\/b><div id=\"p4Title\"><\/div><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P4ALL\">&#128065; Show Answers (Part 4)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part5\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">5<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 29&ndash;35 &middot; Complete the sentences<\/span>\n    <h2 class=\"serif\">Read the story. Write words to complete the sentences<\/h2>\n    <p>Look at the picture and read the story <b>&ldquo;Who\\&#8217;s afraid of camels?&rdquo;<\/b> Write some words to complete the sentences. You can use 1, 2, 3 or 4 words. There are two examples.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"story\" id=\"p5Story\"><\/div>\n    <div id=\"p5Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P5ALL\">&#128065; Show Answers (Part 5)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part6\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">6<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 36&ndash;45 &middot; Choose the right word<\/span>\n    <h2 class=\"serif\">Read the text. Choose the right words<\/h2>\n    <p>Read about <b>Cameras<\/b>. Choose the right word (A, B or C) for each gap. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <img decoding=\"async\" class=\"scene\" style=\"max-width:420px\" src=\"\/wp-content\/uploads\/2026\/06\/f4t3rw_p6.png\" alt=\"Old and new cameras\">\n    <div class=\"story\" id=\"p6Story\" style=\"background:#fff;border:none;padding:0\"><\/div>\n    <div id=\"p6Rows\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P6ALL\">&#128065; Show Answers (Part 6)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<section class=\"part-section\" id=\"part7\"><div class=\"wrap\">\n  <div class=\"part-head\"><div class=\"part-num\">7<\/div><div class=\"part-head-text\">\n    <span class=\"qrange\">Questions 46&ndash;50 &middot; Write one word<\/span>\n    <h2 class=\"serif\">Read the postcard. Write the missing words<\/h2>\n    <p>Read the diary from <b>Sunday night, 27 May<\/b>. Write one word for each gap. There is one example.<\/p>\n  <\/div><\/div>\n  <div class=\"card\">\n    <div class=\"story\" id=\"p7Story\"><\/div>\n    <div style=\"text-align:right;margin-top:12px\"><button class=\"show-ans-btn\" data-show=\"P7ALL\">&#128065; Show Answers (Part 7)<\/button><\/div>\n  <\/div>\n<\/div><\/section>\n\n<div class=\"wrap\">\n  <div class=\"submit-panel\">\n    <h3>&#127919; Finished all 50 questions?<\/h3>\n    <p class=\"intro\">Submit to grade your whole test, or use &#128065; Show Answers per part.<\/p>\n    <div class=\"sp-buttons\">\n      <button class=\"btn-submit-big\" id=\"submitBtn\">&#10003; Submit &amp; Grade All<\/button>\n      <button class=\"btn-reset-big\" id=\"resetBtn\">&#128260; Reset Test<\/button>\n    <\/div>\n  <\/div>\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>&#128218; Your Flyers 4 Test 3 Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/50<\/div>\n    <p id=\"resultsMsg\">Great work!<\/p>\n    <div class=\"score-parts\" id=\"scoreParts\"><\/div>\n  <\/div>\n<\/div>\n\n<footer class=\"footer\"><div class=\"wrap\"><p>&copy; 2026 All English 4U &middot; <a href=\"https:\/\/allenglish4u.com\/vi\/cambridge\/\">All Cambridge Tests<\/a> &middot; <a href=\"https:\/\/allenglish4u.com\/vi\/contact\/\">Li\u00ean h\u1ec7<\/a><\/p><\/div><\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewovKiA9PT09PSBEQVRBIFx1MjAxNCBGbHllcnMgNCBUZXN0IDMgPT09PT0gKi8KdmFyIFAxX0JBTks9WydudXJzZXMnLCdhIGNpcmN1cycsJ2FuIGFtYnVsYW5jZScsJ2EgdGhlYXRyZScsJ3dlYXRoZXInLCdhIG1hcCcsJ2FuIHVtYnJlbGxhJywnc2VjcmV0YXJpZXMnLCdhIHJhaW5ib3cnLCdjbG93bnMnLCd0cmFmZmljJywnYW4gYWlycG9ydCcsJ21lZGljaW5lJywnYSBwbGF5Z3JvdW5kJywnYSBzdGF0aW9uJ107CnZhciBQMV9FWD17ZDonWW91IHVzdWFsbHkgc2VlIHRoaXMgaW5zaWRlIGEgYmlnIHRlbnQuIFlvdSBtaWdodCBzZWUgbGlvbnMgYW5kIGVsZXBoYW50cyBoZXJlLicsYTonYSBjaXJjdXMnfTsKdmFyIFAxPVsKICB7bjoxLGQ6J0NoaWxkcmVuIGNhbiBwbGF5IGluIHRoaXMgcGxhY2UgYXQgc2Nob29sLicsYTonYSBwbGF5Z3JvdW5kJyxhY2M6WydhIHBsYXlncm91bmQnLCdwbGF5Z3JvdW5kJ119LAogIHtuOjIsZDonWW91IGNhbiBnbyB0byB0aGlzIHBsYWNlIHdoZW4geW91IG5lZWQgdG8gdGFrZSBhIHRyYWluLicsYTonYSBzdGF0aW9uJyxhY2M6WydhIHN0YXRpb24nLCdzdGF0aW9uJ119LAogIHtuOjMsZDonWW91IHVzdWFsbHkgc2VlIGEgbG90IG9mIHRoaXMgb24gdGhlIHJvYWRzIHdoZW4gZXZlcnlvbmUgaXMgZ29pbmcgdG8gd29yayBvciBjb21pbmcgaG9tZS4nLGE6J3RyYWZmaWMnLGFjYzpbJ3RyYWZmaWMnXX0sCiAge246NCxkOidUaGVzZSBwZW9wbGUgd29yayBpbiBvZmZpY2VzLCBhbmQgd3JpdGUgbGV0dGVycyBvbiBjb21wdXRlcnMuJyxhOidzZWNyZXRhcmllcycsYWNjOlsnc2VjcmV0YXJpZXMnXX0sCiAge246NSxkOidJZiB5b3UgYXJlIHZlcnkgaWxsIGFuZCBuZWVkIHRvIGdvIHRvIGhvc3BpdGFsLCB0aGlzIGNhbiB0YWtlIHlvdSB0aGVyZS4nLGE6J2FuIGFtYnVsYW5jZScsYWNjOlsnYW4gYW1idWxhbmNlJywnYW1idWxhbmNlJ119LAogIHtuOjYsZDonWW91IHNvbWV0aW1lcyBzZWUgdGhpcyBpbiB0aGUgc2t5LiBUaGVyZSBhcmUgc2V2ZW4gY29sb3VycyBpbiBpdC4nLGE6J2EgcmFpbmJvdycsYWNjOlsnYSByYWluYm93JywncmFpbmJvdyddfSwKICB7bjo3LGQ6J1lvdSBjYW4gbG9vayBhdCBvbmUgb2YgdGhlc2UgaWYgeW91IGxvc2UgeW91ciB3YXkgaW4gYSBjaXR5LiBUaGV5IHNob3cgYWxsIHRoZSBzdHJlZXRzLCBwYXJrcyBhbmQgc3RhdGlvbnMuJyxhOidhIG1hcCcsYWNjOlsnYSBtYXAnLCdtYXAnXX0sCiAge246OCxkOidXaGVuIGl0IHJhaW5zLCB5b3Ugb3BlbiB0aGlzIGFuZCB3YWxrIHdpdGggaXQgYWJvdmUgeW91ciBoZWFkLiBUaGVuIHlvdSBkb25cJ3QgZ2V0IHdldC4nLGE6J2FuIHVtYnJlbGxhJyxhY2M6WydhbiB1bWJyZWxsYScsJ3VtYnJlbGxhJ119LAogIHtuOjksZDonQ2hpbGRyZW4gbGF1Z2ggYXQgdGhlc2UgcGVvcGxlLiBUaGVpciBjbG90aGVzIGFyZSB1c3VhbGx5IHRvbyBiaWcgb3IgdG9vIHNtYWxsLicsYTonY2xvd25zJyxhY2M6WydjbG93bnMnXX0sCiAge246MTAsZDonVGhlc2UgcGVvcGxlIHdlYXIgdW5pZm9ybXMgYW5kIHRoZXkgaGVscCBwZW9wbGUgd2hvIGFyZSBpbGwuJyxhOidudXJzZXMnLGFjYzpbJ251cnNlcyddfQpdOwp2YXIgUDJfRVg9W3tkOiJUaGVyZSBpcyBhIHNjYXJmIHdpdGggcmVkIGFuZCBibHVlIHN0cmlwZXMgb24gdGhlIHNub3dtYW4uIixhOiJ5ZXMifSx7ZDoiSXQncyBhIGZvZ2d5IGRheSBhbmQgaXQncyBzbm93aW5nLiIsYToibm8ifV07CnZhciBQMj1bCiAge246MTEsZDonVGhlIHdvbWFuIHdpdGggdGhlIGxvbmdlc3QgaGFpciBpcyBza2F0aW5nIHdpdGggaGVyIGhhbmRzIGJlaGluZCBoZXIgYmFjay4nLGE6J3llcyd9LAogIHtuOjEyLGQ6J1RoZSBnaXJsIGluIHJlZCB0aWdodHMgaXMgdGFsa2luZyBvbiB0aGUgcGhvbmUuJyxhOid5ZXMnfSwKICB7bjoxMyxkOidUaGUgZHVja3MgYXJlIGZseWluZyBhd2F5IGZyb20gdGhlIGRvZy4nLGE6J25vJ30sCiAge246MTQsZDonVGhlIG1hbiBpcyBwdWxsaW5nIGEgc2xlZGdlIG92ZXIgdGhlIHNub3cuJyxhOid5ZXMnfSwKICB7bjoxNSxkOidUaGVyZSBhcmUgc29tZSBsaWdodHMgaW4gb25lIG9mIHRoZSB0cmVlcy4nLGE6J3llcyd9LAogIHtuOjE2LGQ6J1RoZSBjaGlsZCB3aXRoIHRoZSBvcmFuZ2UgaGF0IGlzIHRocm93aW5nIGEgc25vd2JhbGwgYXQgaGlzIGZyaWVuZC4nLGE6J25vJ30sCiAge246MTcsZDonVGhlIGJveSB3aG8gaGFzIGZhbGxlbiBvbiB0aGUgaWNlIGlzIGxhdWdoaW5nLicsYToneWVzJ30KXTsKdmFyIFAzX09QVFM9WwogIHtsOidBJyx0OidObywgTXVtLiBIZVwncyBnb3Qgb25lIGFscmVhZHkuJ30sCiAge2w6J0InLHQ6J0kgc3RhcnRlZCBhdCBuaW5lIG9cJ2Nsb2NrIGFuZCBmaW5pc2hlZCBhdCB0ZW4uJ30sCiAge2w6J0MnLHQ6J0l0XCdzIG9uIFNhdHVyZGF5LiBXZSBjYW4gaW52aXRlIGdyYW5kbWEuJ30sCiAge2w6J0QnLHQ6J015IHdhdGNoIHNheXMgdHdlbnR5IHBhc3Qgb25lLid9LAogIHtsOidFJyx0OidJIHRoaW5rIGJsdWUgaXMgYmVzdC4nfSwKICB7bDonRicsdDonU2hhbGwgSSBnbyBhbmQgZ2V0IG15IGNvYXQsIHRoZW4\/J30sCiAge2w6J0cnLHQ6J0hvdyBhYm91dCBhIG5ldyBzaGlydD8nLGV4OnRydWV9LAogIHtsOidIJyx0OidZZXMsIGxldFwncyBnbyB0byB0aGUgb25lIGluIHRoZSBIaWdoIFN0cmVldCBhbmQgSSBjYW4gaGVscCB5b3UgY2hvb3NlLid9Cl07CnZhciBQM19FWD17cTonV2hhdCBzaGFsbCB3ZSBnZXQgRGFkIGZvciBoaXMgYmlydGhkYXkgdGhpcyB5ZWFyPycsYW5zOidHJ307CnZhciBQMz1bCiAge246MTgscTonVGhhdFwncyBhIGdvb2QgaWRlYS4gT3IgYSB3YXRjaD8nLGFuczonQSd9LAogIHtuOjE5LHE6J1lvdVwncmUgcmlnaHQgJm5kYXNoOyBhIHNoaXJ0IGlzIGJldHRlci4gV2hhdCBjb2xvdXI\/JyxhbnM6J0UnfSwKICB7bjoyMCxxOidPSy4gU2hhbGwgd2UgZ28gdG8gdGhlIHNob3BzIGFuZCBidXkgb25lIG5vdz8nLGFuczonSCd9LAogIHtuOjIxLHE6J1RoYW5rcywgYW5kIHdoYXQgdGltZSBpcyBpdCwgSGFycnk\/JyxhbnM6J0QnfSwKICB7bjoyMixxOidDb21lIG9uIHRoZW4hIFdlIG5lZWQgdG8gY2F0Y2ggdGhlIGJ1cy4gSXQgZ29lcyBpbiBmaXZlIG1pbnV0ZXMuJyxhbnM6J0YnfQpdOwp2YXIgUDRfQkFOSz1bJ3dhbnQnLCdjcnknLCdicm9rZW4nLCdiaXNjdWl0Jywnc3dpbmdzJywnZGFuZ2Vyb3VzJywndmlzaXQnLCdwb2NrZXQnLCdiaXJkJywnd2hpc3BlcmVkJ107CnZhciBQNF9QQVJUUz1bCiAge3Q6J0hlbGVuIHVzdWFsbHkgd2Fsa3Mgc3RyYWlnaHQgaG9tZSBhZnRlciBzY2hvb2wsIGJ1dCBsYXN0IE1vbmRheSwgc2hlIGRpZG4mcnNxdW87dCAnfSwKICB7ZXg6J3dhbnQnfSwKICB7dDonIHRvLCBiZWNhdXNlIGhlciBtb3RoZXIgd2FzIGF0IHRoZSBkZW50aXN0JnJzcXVvO3MuIEhlbGVuIGhhZCBhIGtleSB0byB0aGVpciBkb29yIGJ1dCBzaGUgZGVjaWRlZCB0byBnbyB0byB0aGUgcGFyay4gU2hlIHdlbnQgdG8gcGxheSBvbiB0aGUgJ30sCiAge2c6MjMsYTonc3dpbmdzJyxhY2M6Wydzd2luZ3MnXX0sCiAge3Q6JyBmaXJzdC4gU2hlIHNhdCBkb3duLCBraWNrZWQgaGFyZCBhbmQgd2VudCBoaWdoZXIgYW5kIGhpZ2hlci4gU2hlIGNsb3NlZCBoZXIgZXllcyBhbmQgZmVsdCBsaWtlIGEgJ30sCiAge2c6MjQsYTonYmlyZCcsYWNjOlsnYmlyZCddfSwKICB7dDonIGluIHRoZSBza3kuIFN1ZGRlbmx5LCBzaGUgcmVtZW1iZXJlZCBoZXIgbW90aGVyJnJzcXVvO3Mgd29yZHMuICZsc3F1bztZb3UgbXVzdCBiZSBob21lIGJ5IGZvdXIgbyZyc3F1bztjbG9jay4mcnNxdW87IFNoZSByYW4gaG9tZSwgYnV0IHdoZW4gc2hlIHB1dCBoZXIgaGFuZCBpbiB0aGUgJ30sCiAge2c6MjUsYToncG9ja2V0JyxhY2M6Wydwb2NrZXQnXX0sCiAge3Q6JyBvZiBoZXIgc2tpcnQgdG8gdGFrZSBvdXQgdGhlIGtleSwgaXQgd2FzIGVtcHR5LiBTaGUgd2VudCB0byBoZXIgZ3JhbmRtb3RoZXIgd2hvIGxpdmVkIGluIHRoZSBuZXh0IHN0cmVldC4gSGVsZW4gYmVnYW4gdG8gJ30sCiAge2c6MjYsYTonY3J5JyxhY2M6WydjcnknXX0sCiAge3Q6Jy4gJmxzcXVvO0hlcmUmcnNxdW87cyBhbm90aGVyIGtleSBmb3IgeW91ciBob3VzZS4gVGFrZSB0aGlzIG9uZSwmcnNxdW87IEhlbGVuJnJzcXVvO3MgZ3JhbmRtb3RoZXIgc2FpZC4gJmxzcXVvO1BsZWFzZSBkb24mcnNxdW87dCB0ZWxsIE11bSEmcnNxdW87IEhlbGVuIHNhaWQuICZsc3F1bztPSy4gSXQmcnNxdW87cyBvdXIgc2VjcmV0LCZyc3F1bzsgaGVyIGdyYW5kbW90aGVyICd9LAogIHtnOjI3LGE6J3doaXNwZXJlZCcsYWNjOlsnd2hpc3BlcmVkJ119LAogIHt0OicuIEhlbGVuIHdlbnQgaG9tZSBhbmQgc2F0IGRvd24gdG8gd2F0Y2ggVFYganVzdCBiZWZvcmUgaGVyIG1vdGhlciBhcnJpdmVkISd9Cl07CnZhciBQNF9USVRMRT17bjoyOCxhOidIZWxlbiBsb3NlcyBoZXIgZG9vciBrZXknLG9wdHM6WydIZWxlbiBnb2VzIHRvIHRoZSBkZW50aXN0JywnSGVsZW4gaGFzIHRlYSB3aXRoIGhlciBncmFuZG1hJywnSGVsZW4gbG9zZXMgaGVyIGRvb3Iga2V5J119Owp2YXIgUDVfU1RPUlk9IkJldHR5JnJzcXVvO3MgYnJvdGhlciwgUGF1bCwgd2FzIG9uIGhvbGlkYXkgYW5kIGhlIHdyb3RlIGhlciBhIHBvc3RjYXJkIGZyb20gZXZlcnkgcGxhY2UgdGhhdCBoZSB2aXNpdGVkLiBIZSBzZW50IHRoZSBmaXJzdCBwb3N0Y2FyZCBmcm9tIHRoZSBQeXJhbWlkcy4gQWZ0ZXIgdGhhdCwgUGF1bCB3ZW50IG9uIGEgYmVhdXRpZnVsIGJvYXQgb24gYSBiaWcgcml2ZXIsIGFuZCBoZSBzZW50IGEgcG9zdGNhcmQgb2YgdGhhdCwgdG9vLiBOZXh0IHRvIHRoZSBib2F0LCBQYXVsIHdyb3RlLCAmbHNxdW87SSB3ZW50IG9uIHRoaXMhJnJzcXVvOyBQYXVsJnJzcXVvO3MgbGFzdCBwb3N0Y2FyZCBzaG93ZWQgYSBtYW4gb24gYSBjYW1lbC4gJmxzcXVvO0kmcnNxdW87ZCBsaWtlIHRvIHJpZGUgYSBjYW1lbCwgdG9vLCZyc3F1bzsgdGhvdWdodCBCZXR0eS4gQXQgdGhlIHdlZWtlbmQsIEJldHR5IHdlbnQgdG8gdGhlIHpvbyB3aXRoIGhlciBjb3VzaW4sIEVtbWEuICZsc3F1bztMZXQmcnNxdW87cyBnbyBhbmQgcmlkZSBvbiBhIGNhbWVsIGxpa2UgUGF1bCBkaWQsJnJzcXVvOyBzYWlkIEJldHR5LiAmbHNxdW87Tm8hJnJzcXVvOyBzYWlkIEVtbWEuICZsc3F1bztUaGV5JnJzcXVvO3JlIHRvbyBkYW5nZXJvdXMuJnJzcXVvOyBCdXQgd2hlbiB0aGV5IGdvdCBuZWFyIHRoZSBjYW1lbHMsIHRoZXkgd2VyZSBseWluZyBkb3duIGFuZCBCZXR0eSB3YXNuJnJzcXVvO3QgYWZyYWlkLiBTaGUgY2xpbWJlZCBvbiB0aGUgc21hbGxlc3Qgb25lLiBFbW1hIHRvb2sgYSBwaG90byBvZiBoZXIuICZsc3F1bztZb3UgY2FuIHNob3cgdGhlIHBpY3R1cmUgdG8gUGF1bCwmcnNxdW87IHNoZSBsYXVnaGVkLiBBIHdlZWsgbGF0ZXIsIFBhdWwgY2FtZSBob21lLiBCZXR0eSBzaG93ZWQgaGVyIGJyb3RoZXIgdGhlIHBob3RvLiAmbHNxdW87TG9vayBhdCBtZSBvbiB0aGUgY2FtZWwhJnJzcXVvOyBzaGUgc2FpZC4gJmxzcXVvO0RpZCB5b3UgZW5qb3kgcmlkaW5nIGNhbWVscywgdG9vPyZyc3F1bzsgJmxzcXVvO0kgd2FzIHRvbyBhZnJhaWQsJnJzcXVvOyBhbnN3ZXJlZCBQYXVsLiAmbHNxdW87WW91IGRpZG4mcnNxdW87dCByaWRlIG9uIHRoZSBjYW1lbD8gSSBkb24mcnNxdW87dCBiZWxpZXZlIGl0ISZyc3F1bzsgc2hlIHNob3V0ZWQuICZsc3F1bztObywmcnNxdW87IFBhdWwgZXhwbGFpbmVkIHRvIEJldHR5LiAmbHNxdW87SSBvbmx5IHNlbnQgYSBwb3N0Y2FyZCBvZiBzb21lb25lIGVsc2Ugb24gb25lLiBJIGRpZG4mcnNxdW87dCByaWRlIGl0LiZyc3F1bzsgQmV0dHkgbGF1Z2hlZCBhbmQgc2FpZCwgJmxzcXVvO01lIHRvbyEgSSBqdXN0IHNhdCBvbiBpdHMgYmFjay4gSXQgZGlkbiZyc3F1bzt0IHN0YW5kIHVwISZyc3F1bzsiOwp2YXIgUDVfRVg9W3tkOiJCZXR0eSZyc3F1bztzIGJyb3RoZXIgd2FzbiZyc3F1bzt0IGF0IGhvbWUuIEhlIHdhcyBhd2F5IG9uIDx1PmhvbGlkYXk8L3U+LiIsYToiaG9saWRheSJ9LHtkOiJQYXVsIHNlbnQgYSBwb3N0Y2FyZCB0byBCZXR0eSBmcm9tIDx1PmV2ZXJ5IHBsYWNlPC91PiB0aGF0IGhlIHdlbnQgdG8uIixhOiJldmVyeSBwbGFjZSJ9XTsKdmFyIFA1PVsKICB7bjoyOSxkOiJUaGUgZmlyc3QgcGxhY2UgdGhhdCBQYXVsIHZpc2l0ZWQgd2FzIHRoZSBfX18uIixhY2M6WydweXJhbWlkcycsJ3RoZSBweXJhbWlkcyddLGRpc3A6IlB5cmFtaWRzIn0sCiAge246MzAsZDoiT24gYW5vdGhlciBwb3N0Y2FyZCwgX19fIHdhcyBvbiBhIGNhbWVsLiIsYWNjOlsnYSBtYW4nLCdzb21lb25lJywnYSBwZXJzb24nXSxkaXNwOiJhIG1hbiJ9LAogIHtuOjMxLGQ6Il9fXyB2aXNpdGVkIHRoZSB6b28gYXQgdGhlIHdlZWtlbmQuIixhY2M6WydiZXR0eSBhbmQgZW1tYScsJ2VtbWEgYW5kIGJldHR5JywnYmV0dHkgYW5kIGhlciBjb3VzaW4nLCdoZXIgY291c2luIGFuZCBiZXR0eSddLGRpc3A6IkJldHR5IGFuZCBFbW1hIn0sCiAge246MzIsZDoiRW1tYSBkaWRuJnJzcXVvO3Qgd2FudCB0byBfX18gYmVjYXVzZSBpdCB3YXMgdG9vIGRhbmdlcm91cy4iLGFjYzpbJ3JpZGUgb24gYSBjYW1lbCcsJ3JpZGUgdGhlIGNhbWVscycsJ3JpZGUgYSBjYW1lbCcsJ3JpZGUgb24gdGhlIGNhbWVscycsJ3JpZGUgb24gdGhlIGNhbWVsJ10sZGlzcDoicmlkZSAob24pIGEgY2FtZWwifSwKICB7bjozMyxkOiJCZXR0eSBzYXQgb24gb25lIG9mIHRoZSBjYW1lbHMgYW5kIEVtbWEgX19fIG9mIGhlci4iLGFjYzpbJ3Rvb2sgYSBwaG90bycsJ3Rvb2sgYSBwaWN0dXJlJywndG9vayBhIHBob3RvZ3JhcGgnXSxkaXNwOiJ0b29rIGEgcGhvdG8ifSwKICB7bjozNCxkOiJXaGVuIGhlciBfX18gY2FtZSBob21lLCBCZXR0eSBzaG93ZWQgaGltIHRoZSBwaG90by4iLGFjYzpbJ2Jyb3RoZXInLCdwYXVsJ10sZGlzcDoiYnJvdGhlciJ9LAogIHtuOjM1LGQ6IlBhdWwgd2FzIHRvbyBfX18gdG8gcmlkZSBhIGNhbWVsIG9uIGhpcyBob2xpZGF5LiIsYWNjOlsnYWZyYWlkJ10sZGlzcDoiYWZyYWlkIn0KXTsKdmFyIFA2X1BBUlRTPVsKICB7dDonT25lIGh1bmRyZWQgYW5kIGZpZnR5IHllYXJzICd9LAogIHtleDonYWdvJ30sCiAge3Q6JywgdmVyeSBmZXcgcGVvcGxlIGhhZCBjYW1lcmFzLiBZb3UgaGFkIHRvIGdvIHRvIGEgcGhvdG9ncmFwaGVyICd9LAogIHtnOjM2LGE6J2ZvcicsYWNjOlsnZm9yJ119LAogIHt0OicgeW91ciBwaG90b3MuIFRoZSBmaXJzdCBmYW1vdXMgcGhvdG9ncmFwaGVyICd9LAogIHtnOjM3LGE6J3dhcycsYWNjOlsnd2FzJ119LAogIHt0OicgYSBtYW4gY2FsbGVkIFdpbGxpYW0gVGFsYm90LiBIaXMgY2FtZXJhIGxvb2tlZCBsaWtlIGEgYmlnIGhlYXZ5IGJveC4gV2hlbiBoZSB3YXMgdGFraW5nIHBob3RvcywgaGUgJ30sCiAge2c6MzgsYTonaGFkJyxhY2M6WydoYWQnXX0sCiAge3Q6JyB0byBwdXQgaXQgb24gc29tZXRoaW5nIGNhbGxlZCBhICZsc3F1bzt0cmlwb2QmcnNxdW87LiBUaGlzIHdhcyBsaWtlIGEgc21hbGwgdGFibGUgd2l0aCB0aHJlZSBsZWdzLiBJbiB0aG9zZSBkYXlzLCB5b3UgY291bGRuJnJzcXVvO3QgdGFrZSBnb29kIHBob3RvcyBvZiBwZW9wbGUgb3IgdGhpbmdzIHdoZW4gdGhleSB3ZXJlICd9LAogIHtnOjM5LGE6J21vdmluZycsYWNjOlsnbW92aW5nJ119LAogIHt0OicuIFRoZXJlIHdlcmUgbm8gY29sb3VyIHBob3RvcyAmbmRhc2g7ICd9LAogIHtnOjQwLGE6J2FsbCcsYWNjOlsnYWxsJ119LAogIHt0OicgcGhvdG9zIHdlcmUgYmxhY2sgYW5kIHdoaXRlLiBBIGxvdCBvZiBwZW9wbGUgJ30sCiAge2c6NDEsYTonaGF2ZScsYWNjOlsnaGF2ZSddfSwKICB7dDonIGNhbWVyYXMgdG9kYXkgYmVjYXVzZSB0aGV5IGFyZW4mcnNxdW87dCB2ZXJ5IGV4cGVuc2l2ZS4gVGhleSBhcmUgc21hbGwgYW5kIGxpZ2h0IGFuZCB5b3UgY2FuIGNhcnJ5ICd9LAogIHtnOjQyLGE6J3RoZW0nLGFjYzpbJ3RoZW0nXX0sCiAge3Q6JyB3aXRoIHlvdS4gTW9zdCBwZW9wbGUgdGFrZSBhIGNhbWVyYSB3aXRoIHRoZW0gJ30sCiAge2c6NDMsYTond2hlbicsYWNjOlsnd2hlbiddfSwKICB7dDonIHRoZXkgZ28gb24gaG9saWRheS4gVG9kYXksIHBob3RvcyBjYW4gYmUgcmVhZHkgaW4ganVzdCBvbmUgaG91ci4gTW9zdCBwZW9wbGUgZ28gdG8gc2hvcHMgdG8gZ2V0IHRoZWlyIHBob3RvcyBidXQgc29tZSBwZW9wbGUgJ30sCiAge2c6NDQsYTonZG9uXCd0JyxhY2M6Wydkb25cJ3QnXX0sCiAge3Q6JyBuZWVkIHRvIGRvIHRoYXQgJm5kYXNoOyB0aGV5IGNhbiBub3cgc2VlIHRoZWlyIHBob3RvcyAnfSwKICB7Zzo0NSxhOidvbicsYWNjOlsnb24nXX0sCiAge3Q6JyB0aGVpciBjb21wdXRlci4nfQpdOwp2YXIgUDZfT1BUUz17MzY6Wydmb3InLCd3aXRoJywnb3ZlciddLDM3OlsnYXJlJywnYmUnLCd3YXMnXSwzODpbJ2hhZCcsJ211c3QnLCduZWVkJ10sMzk6Wydtb3ZlZCcsJ21vdmVzJywnbW92aW5nJ10sNDA6WydldmVyeScsJ2FsbCcsJ2FueSddLDQxOlsnaGF2ZScsJ2hhcycsJ2hhdmluZyddLDQyOlsnaXQnLCd0aGVtJywndGhhdCddLDQzOlsnYmVjYXVzZScsJ2FmdGVyJywnd2hlbiddLDQ0OlsnZG9lc25cJ3QnLCdkaWRuXCd0JywnZG9uXCd0J10sNDU6WydpbnRvJywnb24nLCdvZmYnXX07CnZhciBQN19QQVJUUz1bCiAge3Q6J0l0JnJzcXVvO3MgYWZ0ZXIgbWlkbmlnaHQgYW5kIEkgY2FuJnJzcXVvO3Qgc2xlZXAuIE91ciBob2xpZGF5cyAnfSwKICB7ZXg6J3N0YXJ0J30sCiAge3Q6JyB0b21vcnJvdyBhbmQgd2UgbXVzdCBsZWF2ZSBlYXJseSAnfSwKICB7Zzo0NixhOidpbicsYWNjOlsnaW4nXX0sCiAge3Q6JyB0aGUgbW9ybmluZyBmb3IgdGhlIGFpcnBvcnQuIEkmcnNxdW87dmUgbmV2ZXIgYmVlbiBvbiBhICd9LAogIHtnOjQ3LGE6J3BsYW5lJyxhY2M6WydwbGFuZScsJ2Flcm9wbGFuZScsJ2FpcnBsYW5lJ119LAogIHt0OicgYmVmb3JlLiBJIGNhbiZyc3F1bzt0IHdhaXQgdG8gZmx5IGZvciB0aGUgZmlyc3QgdGltZS4gSSB3YW50ICd9LAogIHtnOjQ4LGE6J3RvJyxhY2M6Wyd0byddfSwKICB7dDonIHRha2UgYWxsIG15IGZhdm91cml0ZSB0b3lzIGJ1dCBJIGhhdmUgdG8gbGVhdmUgc29tZSBvZiAnfSwKICB7Zzo0OSxhOid0aGVtJyxhY2M6Wyd0aGVtJ119LAogIHt0OicgYXQgaG9tZSBiZWNhdXNlIG15IHN1aXRjYXNlIGlzIHRvbyBmdWxsIHRvICd9LAogIHtnOjUwLGE6J2Nsb3NlJyxhY2M6WydjbG9zZScsJ3NodXQnLCdjYXJyeScsJ2xpZnQnXX0sCiAge3Q6Jy4gQW5kIEkmcnNxdW87dmUgc3RpbGwgZ290IHRvIHB1dCB0aGlzIGRpYXJ5IGluIGl0ISd9Cl07CnZhciBUT1RBTD01MDsKCi8qID09PT09IGhlbHBlcnMgPT09PT0gKi8KZnVuY3Rpb24gZXNjKHMpe3JldHVybiBTdHJpbmcocykucmVwbGFjZSgvWzw+XS9nLGZ1bmN0aW9uKGMpe3JldHVybnsnPCc6JyZsdDsnLCc+JzonJmd0Oyd9W2NdfSl9CmZ1bmN0aW9uICQocyxjKXtyZXR1cm4gKGN8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHMpfQpmdW5jdGlvbiAkJChzLGMpe3JldHVybiBbXS5zbGljZS5jYWxsKChjfHxkb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzKSl9CmZ1bmN0aW9uIG5vcm0odil7cmV0dXJuIHYudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy4sIT9dJC8sJycpLnJlcGxhY2UoL1xzKy9nLCcgJykucmVwbGFjZSgvW1x1MjAxOFx1MjAxOV0vZywiJyIpfQoKLyogPT09PT0gc3RhdGUgPT09PT0gKi8KdmFyIFAyc2VsPXt9LFAzc2VsPXt9LFA0Z2FwPXt9LFA0dGl0bGU9bnVsbCxQNmdhcD17fTsKdmFyIFA0X0dBUFM9WzIzLDI0LDI1LDI2LDI3XSxQNl9HQVBTPVszNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NV0sUDdfR0FQUz1bNDYsNDcsNDgsNDksNTBdOwoKLyogPT09PT0gUEFSVCAxID09PT09ICovCihmdW5jdGlvbigpewogIHZhciBiYW5rPSQoJyNwMUJhbmsnKTsKICBQMV9CQU5LLmZvckVhY2goZnVuY3Rpb24odyl7YmFuay5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9IndjaGlwIHd0ZXh0Ij4nK3crJzwvZGl2PicpO30pOwogIHZhciByb3dzPSQoJyNwMVJvd3MnKTsKICByb3dzLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0iZGVmcm93IGV4YW1wbGUiPjxzcGFuIGNsYXNzPSJxbiI+RXg8L3NwYW4+PHNwYW4gY2xhc3M9ImR0ZXh0Ij4nK2VzYyhQMV9FWC5kKSsnPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo3MDA7Y29sb3I6IzdCNUIwMCI+Jytlc2MoUDFfRVguYSkrJzwvc3Bhbj48c3BhbiBjbGFzcz0iZXgtdGFnIj5FeDwvc3Bhbj48L2Rpdj4nKTsKICBQMS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgcm93cy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRlZnJvdyI+PHNwYW4gY2xhc3M9InFuIj4nK3EubisnPC9zcGFuPjxzcGFuIGNsYXNzPSJkdGV4dCI+Jytlc2MocS5kKSsnPC9zcGFuPjxpbnB1dCBjbGFzcz0iaW5wdXQtYmxhbmsiIGRhdGEtcT0iJytxLm4rJyIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ii4uLiI+PGJ1dHRvbiBjbGFzcz0ic2hvdy1hbnMtYnRuIiBkYXRhLXNob3c9IicrcS5uKyciPiYjMTI4MDY1OzwvYnV0dG9uPjwvZGl2PicpOwogIH0pOwp9KSgpOwovKiA9PT09PSBQQVJUIDIgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIHI9JCgnI3AyUm93cycpOwogIFAyX0VYLmZvckVhY2goZnVuY3Rpb24oZSl7ci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9InluLXJvdyIgc3R5bGU9Im9wYWNpdHk6LjciPjxkaXYgY2xhc3M9InluLXEiPjxzcGFuIGNsYXNzPSJxbiI+RXg8L3NwYW4+PHNwYW4+Jytlc2MoZS5kKSsnPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InluLW9wdHMiPjxzcGFuIGNsYXNzPSJ5bi1idG4gJysoZS5hPT09J3llcyc\/J2NvcnJlY3QnOicnKSsnIj55ZXM8L3NwYW4+PHNwYW4gY2xhc3M9InluLWJ0biAnKyhlLmE9PT0nbm8nPydjb3JyZWN0JzonJykrJyI+bm88L3NwYW4+PC9kaXY+PC9kaXY+Jyk7fSk7CiAgUDIuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJ5bi1yb3ciIGRhdGEtcT0iJytxLm4rJyI+PGRpdiBjbGFzcz0ieW4tcSI+PHNwYW4gY2xhc3M9InFuIj4nK3EubisnPC9zcGFuPjxzcGFuPicrZXNjKHEuZCkrJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ5bi1vcHRzIj48YnV0dG9uIGNsYXNzPSJ5bi1idG4iIGRhdGEteW49InllcyI+eWVzPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0ieW4tYnRuIiBkYXRhLXluPSJubyI+bm88L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJzaG93LWFucy1idG4iIGRhdGEtc2hvdz0iJytxLm4rJyIgc3R5bGU9Im1hcmdpbi1sZWZ0OmF1dG8iPiYjMTI4MDY1OzwvYnV0dG9uPjwvZGl2PjwvZGl2PicpOwogIH0pOwogICQkKCcjcDJSb3dzIC55bi1idG5bZGF0YS15bl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgcm93PWIuY2xvc2VzdCgnLnluLXJvdycpLG49cm93LmRhdGFzZXQucTsKICAgICQkKCcueW4tYnRuW2RhdGEteW5dJyxyb3cpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKX0pOwogICAgYi5jbGFzc0xpc3QuYWRkKCdzZWwnKTtQMnNlbFtuXT1iLmRhdGFzZXQueW47dXBkYXRlUHJvZ3Jlc3MoKTsKICB9KTt9KTsKfSkoKTsKLyogPT09PT0gUEFSVCAzIChtYXRjaCBBLUgpID09PT09ICovCihmdW5jdGlvbigpewogIHZhciBvYj0kKCcjcDNPcHRzJyk7CiAgUDNfT1BUUy5mb3JFYWNoKGZ1bmN0aW9uKG8pe29iLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0ib2knKyhvLmV4PycgZXgnOicnKSsnIj48c3BhbiBjbGFzcz0ib2wiPicrby5sKyc8L3NwYW4+PHNwYW4+JytvLnQrKG8uZXg\/JyA8Yj4oRXhhbXBsZSk8L2I+JzonJykrJzwvc3Bhbj48L2Rpdj4nKTt9KTsKICBmdW5jdGlvbiBzZWwobil7dmFyIGg9JzxzZWxlY3QgY2xhc3M9Im1hdGNoLXNlbGVjdCIgZGF0YS1xPSInK24rJyI+PG9wdGlvbiB2YWx1ZT0iIj4\/PC9vcHRpb24+JztbJ0EnLCdCJywnQycsJ0QnLCdFJywnRicsJ0cnLCdIJ10uZm9yRWFjaChmdW5jdGlvbihMKXtoKz0nPG9wdGlvbiB2YWx1ZT0iJytMKyciPicrTCsnPC9vcHRpb24+Jzt9KTtyZXR1cm4gaCsnPC9zZWxlY3Q+Jzt9CiAgdmFyIHI9JCgnI3AzUm93cycpOwogIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkbGctcm93IGV4YW1wbGUiPjxzcGFuIGNsYXNzPSJxbiI+RXg8L3NwYW4+PHNwYW4gY2xhc3M9ImRsZy1xIj48Yj5IYXJyeVwncyBtb3RoZXI6PC9iPiAnK2VzYyhQM19FWC5xKSsnPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo4MDA7Y29sb3I6IzdCNUIwMCI+SGFycnk6ICcrUDNfRVguYW5zKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImV4LXRhZyI+RXg8L3NwYW4+PC9kaXY+Jyk7CiAgUDMuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkbGctcm93IiBkYXRhLXE9IicrcS5uKyciPjxzcGFuIGNsYXNzPSJxbiI+JytxLm4rJzwvc3Bhbj48c3BhbiBjbGFzcz0iZGxnLXEiPjxiPkhhcnJ5XCdzIG1vdGhlcjo8L2I+ICcrZXNjKHEucSkrJzwvc3Bhbj48Yj5IYXJyeTo8L2I+ICcrc2VsKHEubikrJzxidXR0b24gY2xhc3M9InNob3ctYW5zLWJ0biIgZGF0YS1zaG93PSInK3EubisnIj4mIzEyODA2NTs8L2J1dHRvbj48L2Rpdj4nKTsKICB9KTsKICAkJCgnI3AzUm93cyAubWF0Y2gtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtQM3NlbFtzLmRhdGFzZXQucV09cy52YWx1ZTt1cGRhdGVQcm9ncmVzcygpO30pO30pOwp9KSgpOwovKiA9PT09PSBQQVJUIDQgPT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIGJhbms9JCgnI3A0QmFuaycpOwogIFA0X0JBTksuZm9yRWFjaChmdW5jdGlvbih3KXtiYW5rLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywnPGRpdiBjbGFzcz0id2NoaXAgd3RleHQiPicrdysnPC9kaXY+Jyk7fSk7CiAgdmFyIHN0b3J5PSQoJyNwNFN0b3J5JyksaHRtbD0nJzsKICBQNF9QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgaWYocC50KWh0bWwrPWVzYyhwLnQpOwogICAgZWxzZSBpZihwLmV4KWh0bWwrPSc8dSBzdHlsZT0iY29sb3I6dmFyKC0tYWNjZW50LTEpO2ZvbnQtd2VpZ2h0OjcwMCI+JytwLmV4Kyc8L3U+JzsKICAgIGVsc2UgaWYocC5nKXsKICAgICAgaHRtbCs9JzxzZWxlY3QgY2xhc3M9ImdhcC1zZWxlY3QiIGRhdGEtcT0iJytwLmcrJyI+PG9wdGlvbiB2YWx1ZT0iIj4oJytwLmcrJykgY2hvb3NlPC9vcHRpb24+JytQNF9CQU5LLm1hcChmdW5jdGlvbih3KXtyZXR1cm4gJzxvcHRpb24gdmFsdWU9IicrdysnIj4nK3crJzwvb3B0aW9uPic7fSkuam9pbignJykrJzwvc2VsZWN0Pic7CiAgICB9CiAgfSk7CiAgc3RvcnkuaW5uZXJIVE1MPWh0bWw7CiAgJCQoJyNwNFN0b3J5IC5nYXAtc2VsZWN0JykuZm9yRWFjaChmdW5jdGlvbihzKXtzLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZnVuY3Rpb24oKXtQNGdhcFtzLmRhdGFzZXQucV09cy52YWx1ZTt1cGRhdGVQcm9ncmVzcygpO30pO30pOwogIHZhciB0dD0kKCcjcDRUaXRsZScpOwogIFA0X1RJVExFLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXt0dC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9InRpY2tib3giIGRhdGEtdGl0bGU9IicrbysnIj48c3BhbiBjbGFzcz0idGIiPiYjMTAwMDM7PC9zcGFuPjxzcGFuPicrZXNjKG8pKyc8L3NwYW4+PC9kaXY+Jyk7fSk7CiAgJCQoJyNwNFRpdGxlIC50aWNrYm94JykuZm9yRWFjaChmdW5jdGlvbihiKXtiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgJCQoJyNwNFRpdGxlIC50aWNrYm94JykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ3NlbCcpfSk7CiAgICBiLmNsYXNzTGlzdC5hZGQoJ3NlbCcpO1A0dGl0bGU9Yi5kYXRhc2V0LnRpdGxlO3VwZGF0ZVByb2dyZXNzKCk7CiAgfSk7fSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgNSA9PT09PSAqLwooZnVuY3Rpb24oKXsKICAkKCcjcDVTdG9yeScpLmlubmVySFRNTD0nPGltZyBjbGFzcz0ic2NlbmUiIHNyYz0iL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA2L2Y0dDNyd19wNS5wbmciIGFsdD0iQmV0dHkgc2l0dGluZyBvbiBhIGNhbWVsIGF0IHRoZSB6b28iPicrUDVfU1RPUlk7CiAgdmFyIHI9JCgnI3A1Um93cycpOwogIFA1X0VYLmZvckVhY2goZnVuY3Rpb24oZSl7ci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsJzxkaXYgY2xhc3M9ImRlZnJvdyBleGFtcGxlIj48c3BhbiBjbGFzcz0icW4iPkV4PC9zcGFuPjxzcGFuIGNsYXNzPSJkdGV4dCI+JytlLmQrJzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM3QjVCMDAiPicrZS5hKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImV4LXRhZyI+RXg8L3NwYW4+PC9kaXY+Jyk7fSk7CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHIuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCc8ZGl2IGNsYXNzPSJkZWZyb3ciPjxzcGFuIGNsYXNzPSJxbiI+JytxLm4rJzwvc3Bhbj48c3BhbiBjbGFzcz0iZHRleHQiPicrcS5kKyc8L3NwYW4+PGlucHV0IGNsYXNzPSJpbnB1dC1ibGFuayIgZGF0YS1xPSInK3EubisnIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iMS00IHdvcmRzIj48YnV0dG9uIGNsYXNzPSJzaG93LWFucy1idG4iIGRhdGEtc2hvdz0iJytxLm4rJyI+JiMxMjgwNjU7PC9idXR0b24+PC9kaXY+Jyk7CiAgfSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgNiA9PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgc3Rvcnk9JCgnI3A2U3RvcnknKSxodG1sPScnOwogIFA2X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICBpZihwLnQpaHRtbCs9ZXNjKHAudCk7CiAgICBlbHNlIGlmKHAuZXgpaHRtbCs9Jzx1IHN0eWxlPSJjb2xvcjp2YXIoLS1hY2NlbnQtMSk7Zm9udC13ZWlnaHQ6NzAwIj4nK3AuZXgrJzwvdT4nOwogICAgZWxzZSBpZihwLmcpewogICAgICB2YXIgTD1bJ0EnLCdCJywnQyddOwogICAgICBodG1sKz0nPHNlbGVjdCBjbGFzcz0iZ2FwLXNlbGVjdCIgZGF0YS1xPSInK3AuZysnIj48b3B0aW9uIHZhbHVlPSIiPignK3AuZysnKTwvb3B0aW9uPicrUDZfT1BUU1twLmddLm1hcChmdW5jdGlvbih3LGkpe3JldHVybiAnPG9wdGlvbiB2YWx1ZT0iJytMW2ldKyciPicrdysnPC9vcHRpb24+Jzt9KS5qb2luKCcnKSsnPC9zZWxlY3Q+JzsKICAgIH0KICB9KTsKICBzdG9yeS5pbm5lckhUTUw9aHRtbDsKICAkJCgnI3A2U3RvcnkgLmdhcC1zZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3MuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxmdW5jdGlvbigpe1A2Z2FwW3MuZGF0YXNldC5xXT1zLnZhbHVlO3VwZGF0ZVByb2dyZXNzKCk7fSk7fSk7Cn0pKCk7Ci8qID09PT09IFBBUlQgNyAob3BlbiBjbG96ZSAxIHdvcmQpID09PT09ICovCihmdW5jdGlvbigpewogIHZhciBzdG9yeT0kKCcjcDdTdG9yeScpLGh0bWw9Jyc7CiAgUDdfUEFSVFMuZm9yRWFjaChmdW5jdGlvbihwKXsKICAgIGlmKHAudClodG1sKz1lc2MocC50KTsKICAgIGVsc2UgaWYocC5leClodG1sKz0nPHUgc3R5bGU9ImNvbG9yOnZhcigtLWFjY2VudC0xKTtmb250LXdlaWdodDo3MDAiPicrcC5leCsnPC91Pic7CiAgICBlbHNlIGlmKHAuZyl7CiAgICAgIGh0bWwrPSc8aW5wdXQgY2xhc3M9ImlucHV0LWJsYW5rIGlucHV0LW1pbmkiIGRhdGEtcT0iJytwLmcrJyIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IignK3AuZysnKSI+JzsKICAgIH0KICB9KTsKICBzdG9yeS5pbm5lckhUTUw9aHRtbDsKfSkoKTsKCi8qID09PT09IHByb2dyZXNzID09PT09ICovCmZ1bmN0aW9uIHA3ZmluZChnKXt2YXIgZj1udWxsO1A3X1BBUlRTLmZvckVhY2goZnVuY3Rpb24ocCl7aWYocC5nPT09ZylmPXA7fSk7cmV0dXJuIGY7fQpmdW5jdGlvbiBhbnN3ZXJlZCgpewogIHZhciBuPTA7CiAgUDEuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoZWwmJmVsLnZhbHVlLnRyaW0oKSluKys7fSk7CiAgUDIuZm9yRWFjaChmdW5jdGlvbihxKXtpZihQMnNlbFtxLm5dKW4rKzt9KTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKFAzc2VsW3Eubl0pbisrO30pOwogIFA0X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXtpZihQNGdhcFtnXSluKys7fSk7CiAgaWYoUDR0aXRsZSluKys7CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoZWwmJmVsLnZhbHVlLnRyaW0oKSluKys7fSk7CiAgUDZfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKFA2Z2FwW2ddKW4rKzt9KTsKICBQN19HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIGVsPSQoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrZysnIl0nKTtpZihlbCYmZWwudmFsdWUudHJpbSgpKW4rKzt9KTsKICByZXR1cm4gbjsKfQpmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpe3ZhciBhPWFuc3dlcmVkKCk7JCgnI2Fuc3dlcmVkQ291bnQnKS50ZXh0Q29udGVudD1hOyQoJyNwcm9nRmlsbCcpLnN0eWxlLndpZHRoPShhL1RPVEFMKjEwMCkrJyUnO30KZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQuY2xhc3NMaXN0JiZlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2lucHV0LWJsYW5rJykpdXBkYXRlUHJvZ3Jlc3MoKTt9KTsKCi8qID09PT09IHJldmVhbCBoZWxwZXJzID09PT09ICovCmZ1bmN0aW9uIHJldmVhbElucHV0KG4sdmFsKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytuKyciXScpO2lmKGVsKXtlbC52YWx1ZT12YWw7ZWwuY2xhc3NMaXN0LmFkZCgncmV2ZWFsZWQnKTt1cGRhdGVQcm9ncmVzcygpO319CmZ1bmN0aW9uIHJldmVhbFlOKG4sYSl7dmFyIHJvdz0kKCcueW4tcm93W2RhdGEtcT0iJytuKyciXScpO2lmKCFyb3cpcmV0dXJuOyQkKCcueW4tYnRuW2RhdGEteW5dJyxyb3cpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKTtpZih4LmRhdGFzZXQueW49PT1hKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO30pO1Ayc2VsW25dPWE7dXBkYXRlUHJvZ3Jlc3MoKTt9CmZ1bmN0aW9uIHJldmVhbE1hdGNoKG4sYSl7dmFyIHM9JCgnLm1hdGNoLXNlbGVjdFtkYXRhLXE9IicrbisnIl0nKTtpZihzKXtzLnZhbHVlPWE7cy5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7UDNzZWxbbl09YTt1cGRhdGVQcm9ncmVzcygpO319CmZ1bmN0aW9uIHA0YW5zKGcpe3ZhciBmPW51bGw7UDRfUEFSVFMuZm9yRWFjaChmdW5jdGlvbihwKXtpZihwLmc9PT1nKWY9cDt9KTtyZXR1cm4gZj9mLmE6Jyc7fQpmdW5jdGlvbiByZXZlYWxUaXRsZSgpeyQkKCcjcDRUaXRsZSAudGlja2JveCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKTtpZih4LmRhdGFzZXQudGl0bGU9PT1QNF9USVRMRS5hKXt4LmNsYXNzTGlzdC5hZGQoJ3NlbCcpO319KTtQNHRpdGxlPVA0X1RJVExFLmE7fQoKLyogPT09PT0gc2hvdyBhbnN3ZXJzID09PT09ICovCmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogIHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoJy5zaG93LWFucy1idG4nKTtpZighYilyZXR1cm47CiAgdmFyIGs9Yi5kYXRhc2V0LnNob3c7CiAgaWYoaz09PSdQMUFMTCcpe1AxLmZvckVhY2goZnVuY3Rpb24ocSl7cmV2ZWFsSW5wdXQocS5uLHEuYSk7fSk7cmV0dXJuO30KICBpZihrPT09J1AyQUxMJyl7UDIuZm9yRWFjaChmdW5jdGlvbihxKXtyZXZlYWxZTihxLm4scS5hKTt9KTtyZXR1cm47fQogIGlmKGs9PT0nUDNBTEwnKXtQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldmVhbE1hdGNoKHEubixxLmFucyk7fSk7cmV0dXJuO30KICBpZihrPT09J1A0QUxMJyl7UDRfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBhPXA0YW5zKGcpO3ZhciBzPSQoJy5nYXAtc2VsZWN0W2RhdGEtcT0iJytnKyciXScpO2lmKHMpe3MudmFsdWU9YTtQNGdhcFtnXT1hO319KTtyZXZlYWxUaXRsZSgpO3VwZGF0ZVByb2dyZXNzKCk7cmV0dXJuO30KICBpZihrPT09J1A1QUxMJyl7UDUuZm9yRWFjaChmdW5jdGlvbihxKXtyZXZlYWxJbnB1dChxLm4scS5kaXNwKTt9KTtyZXR1cm47fQogIGlmKGs9PT0nUDZBTEwnKXtQNl9HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIEw9WydBJywnQicsJ0MnXTt2YXIgaWR4PVA2X09QVFNbZ10uaW5kZXhPZihwNmFucyhnKSk7dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK2crJyJdJyk7aWYocyl7cy52YWx1ZT1MW2lkeF07UDZnYXBbZ109TFtpZHhdO319KTt1cGRhdGVQcm9ncmVzcygpO3JldHVybjt9CiAgaWYoaz09PSdQN0FMTCcpe1A3X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgZj1wN2ZpbmQoZyk7cmV2ZWFsSW5wdXQoZyxmLmEpO30pO3JldHVybjt9CiAgdmFyIHFpZD1wYXJzZUludChrKTsKICBpZihxaWQ+PTEmJnFpZDw9MTApe3ZhciBxPW51bGw7UDEuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4Lm49PT1xaWQpcT14O30pO3JldmVhbElucHV0KHFpZCxxLmEpO30KICBlbHNlIGlmKHFpZD49MTEmJnFpZDw9MTcpe3ZhciBxPW51bGw7UDIuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4Lm49PT1xaWQpcT14O30pO3JldmVhbFlOKHFpZCxxLmEpO30KICBlbHNlIGlmKHFpZD49MTgmJnFpZDw9MjIpe3ZhciBxPW51bGw7UDMuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4Lm49PT1xaWQpcT14O30pO3JldmVhbE1hdGNoKHFpZCxxLmFucyk7fQogIGVsc2UgaWYocWlkPj0yOSYmcWlkPD0zNSl7dmFyIHE9bnVsbDtQNS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHgubj09PXFpZClxPXg7fSk7cmV2ZWFsSW5wdXQocWlkLHEuZGlzcCk7fQp9KTsKZnVuY3Rpb24gcDZhbnMoZyl7dmFyIGY9bnVsbDtQNl9QQVJUUy5mb3JFYWNoKGZ1bmN0aW9uKHApe2lmKHAuZz09PWcpZj1wO30pO3JldHVybiBmP2YuYTonJzt9CgovKiA9PT09PSBzdWJtaXQgPT09PT0gKi8KJCgnI3N1Ym1pdEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIHZhciBzY29yZT0wLHBhcnRzPXsxOjAsMjowLDM6MCw0OjAsNTowLDY6MCw3OjB9OwogIFAxLmZvckVhY2goZnVuY3Rpb24ocSl7dmFyIGVsPSQoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcS5uKyciXScpO2lmKCFlbClyZXR1cm47aWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlYWxlZCcpKXJldHVybjt2YXIgdj1ub3JtKGVsLnZhbHVlKTt2YXIgdnY9di5yZXBsYWNlKC9eKGF8YW58dGhlKVxzKy8sJycpO3ZhciBvaz1xLmFjYy5pbmRleE9mKHYpPj0wfHxxLmFjYy5pbmRleE9mKHZ2KT49MDtpZihvayl7c2NvcmUrKztwYXJ0c1sxXSsrO2VsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO2VsLnRpdGxlPSdDb3JyZWN0OiAnK3EuYTt9fSk7CiAgUDIuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgcm93PSQoJy55bi1yb3dbZGF0YS1xPSInK3EubisnIl0nKTtpZighcm93KXJldHVybjskJCgnLnluLWJ0bltkYXRhLXluXScscm93KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciB5bj14LmRhdGFzZXQueW47eC5jbGFzc0xpc3QucmVtb3ZlKCdzZWwnKTtpZih5bj09PXEuYSl4LmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTtlbHNlIGlmKFAyc2VsW3Eubl09PT15bil4LmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7aWYoUDJzZWxbcS5uXT09PXEuYSl7c2NvcmUrKztwYXJ0c1syXSsrO319KTsKICBQMy5mb3JFYWNoKGZ1bmN0aW9uKHEpe3ZhciBzPSQoJy5tYXRjaC1zZWxlY3RbZGF0YS1xPSInK3EubisnIl0nKTtpZighcylyZXR1cm47cy5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTtpZihQM3NlbFtxLm5dPT09cS5hbnMpe3Njb3JlKys7cGFydHNbM10rKztzLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZSBpZihQM3NlbFtxLm5dKXMuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTt9KTsKICBQNF9HQVBTLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIHM9JCgnLmdhcC1zZWxlY3RbZGF0YS1xPSInK2crJyJdJyk7aWYoIXMpcmV0dXJuO3ZhciBhPXA0YW5zKGcpO3MuY2xhc3NMaXN0LnJlbW92ZSgnY29ycmVjdCcsJ3dyb25nJyk7aWYoUDRnYXBbZ109PT1hKXtzY29yZSsrO3BhcnRzWzRdKys7cy5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fWVsc2UgaWYoUDRnYXBbZ10pcy5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO30pOwogICQkKCcjcDRUaXRsZSAudGlja2JveCcpLmZvckVhY2goZnVuY3Rpb24oeCl7eC5jbGFzc0xpc3QucmVtb3ZlKCdjb3JyZWN0Jywnd3JvbmcnKTtpZih4LmRhdGFzZXQudGl0bGU9PT1QNF9USVRMRS5hKXguY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpO2Vsc2UgaWYoUDR0aXRsZT09PXguZGF0YXNldC50aXRsZSl4LmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7CiAgaWYoUDR0aXRsZT09PVA0X1RJVExFLmEpe3Njb3JlKys7cGFydHNbNF0rKzt9CiAgUDUuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgZWw9JCgnLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxLm4rJyJdJyk7aWYoIWVsKXJldHVybjtpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVhbGVkJykpcmV0dXJuO3ZhciB2PW5vcm0oZWwudmFsdWUpO3ZhciBvaz1xLmFjYy5pbmRleE9mKHYpPj0wfHxxLmFjYy5pbmRleE9mKHYucmVwbGFjZSgvXihhfGFufHRoZSlccysvLCcnKSk+PTA7aWYob2spe3Njb3JlKys7cGFydHNbNV0rKztlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7fWVsc2V7ZWwuY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTtlbC50aXRsZT0nQ29ycmVjdDogJytxLmRpc3A7fX0pOwogIFA2X0dBUFMuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgcz0kKCcuZ2FwLXNlbGVjdFtkYXRhLXE9IicrZysnIl0nKTtpZighcylyZXR1cm47dmFyIEw9WydBJywnQicsJ0MnXTt2YXIgY29ycmVjdEw9TFtQNl9PUFRTW2ddLmluZGV4T2YocDZhbnMoZykpXTtzLmNsYXNzTGlzdC5yZW1vdmUoJ2NvcnJlY3QnLCd3cm9uZycpO2lmKFA2Z2FwW2ddPT09Y29ycmVjdEwpe3Njb3JlKys7cGFydHNbNl0rKztzLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZSBpZihQNmdhcFtnXSlzLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7fSk7CiAgUDdfR0FQUy5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBlbD0kKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK2crJyJdJyk7aWYoIWVsKXJldHVybjtpZihlbC5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVhbGVkJykpcmV0dXJuO3ZhciBmPXA3ZmluZChnKTt2YXIgdj1ub3JtKGVsLnZhbHVlKTt2YXIgb2s9Zi5hY2MuaW5kZXhPZih2KT49MDtpZihvayl7c2NvcmUrKztwYXJ0c1s3XSsrO2VsLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTt9ZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpO2VsLnRpdGxlPSdDb3JyZWN0OiAnK2YuYTt9fSk7CiAgJCgnI3Njb3JlTm93JykudGV4dENvbnRlbnQ9c2NvcmU7JCgnI2ZpbmFsU2NvcmUnKS50ZXh0Q29udGVudD1zY29yZTsKICB2YXIgcGN0PU1hdGgucm91bmQoc2NvcmUvVE9UQUwqMTAwKTsKICB2YXIgbXNnPXBjdD49ODU\/J0V4Y2VsbGVudCEgWW91ciByZWFkaW5nIGFuZCB3cml0aW5nIGlzIHN0cm9uZy4nOnBjdD49NzA\/J0dvb2Qgam9iISBLZWVwIHByYWN0aXNpbmcuJzpwY3Q+PTUwPydOaWNlIHRyeSAmbWRhc2g7IHJldmlldyB0aGUgcGFydHMgeW91IG1pc3NlZC4nOidLZWVwIGdvaW5nICZtZGFzaDsgcmVhZCB0aGUgc3RvcmllcyBhZ2FpbiBhbmQgdXNlIFNob3cgQW5zd2Vycy4nOwogICQoJyNyZXN1bHRzTXNnJykuaW5uZXJIVE1MPW1zZzsKICB2YXIgc3A9JCgnI3Njb3JlUGFydHMnKTtzcC5pbm5lckhUTUw9Jyc7CiAgWydXb3JkcycsJ1llcy9ObycsJ0RpYWxvZ3VlJywnU3RvcnknLCdDb21wbGV0ZScsJ1dvcmQgY2hvaWNlJywnT25lIHdvcmQnXS5mb3JFYWNoKGZ1bmN0aW9uKGxhYixpKXtzcC5pbm5lckhUTUwrPSc8ZGl2IGNsYXNzPSJzcC1pdGVtIj48Yj4nK3BhcnRzW2krMV0rJzwvYj5QJysoaSsxKSsnICcrbGFiKyc8L2Rpdj4nO30pOwogICQoJyNyZXN1bHRzQmFubmVyJykuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKXskKCcjcmVzdWx0c0Jhbm5lcicpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonY2VudGVyJ30pO30sMTIwKTsKfSk7CiQoJyNyZXNldEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2lmKCFjb25maXJtKCdSZXNldCBhbGwgYW5zd2Vycz8nKSlyZXR1cm47bG9jYXRpb24ucmVsb2FkKCk7fSk7CnVwZGF0ZVByb2dyZXNzKCk7Cn0pKCk7Cg=='));<\/script>","protected":false},"excerpt":{"rendered":"<p>Cambridge YLE &middot; Flyers Flyers 4 &mdash; Test 3 Reading &amp; Writing 7 parts with 50 questions. Read carefully, choose or write your answers, then submit to grade. Each part has a Show Answers button to study. ~40 minutes 7 Parts &middot; 50 Questions Auto-grade + Show Answers Score 0\/50 0 of 50 answered 1 [&hellip;]<\/p>\n","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-5205","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5205","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=5205"}],"version-history":[{"count":3,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5205\/revisions"}],"predecessor-version":[{"id":5240,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/5205\/revisions\/5240"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=5205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}