{"id":3835,"date":"2026-06-14T16:30:36","date_gmt":"2026-06-14T16:30:36","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-4-test-1-rw\/"},"modified":"2026-07-05T02:44:14","modified_gmt":"2026-07-05T02:44:14","slug":"cambridge-ket-4-test-1-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-4-test-1-rw\/","title":{"rendered":"KET 4 \u2014 Test 1 Reading &#038; Writing"},"content":{"rendered":"\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400%3B500%3B600%3B700%3B800&family=Fraunces:opsz,wght@9..144,700&display=swap');\n\n\/* escape WP wrapper *\/\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\n:root{\n  --accent-1:#F97316;\n  --accent-2:#F43F5E;\n  --gold:#F9C74F;\n  --green:#10B981;\n  --red:#EF4444;\n  --light-1:#FFF7ED;\n  --light-2:#FFFBF5;\n  --white:#FFFFFF;\n  --text:#0F172A;\n  --muted:#475569;\n  --subtle:#64748B;\n  --border:#E2E8F0;\n  --dark-1:#1B0F02;\n  --dark-2:#2D1A06;\n  --r-10:10px; --r-16:16px; --r-22:22px;\n  --sh-card:0 2px 8px rgba(0,0,0,.06);\n  --sh-lg:0 12px 40px rgba(0,0,0,.12);\n}\n*{margin:0;padding:0;box-sizing:border-box}\nhtml{scroll-behavior:smooth}\nbody{\n  font-family:'Plus Jakarta Sans',system-ui,sans-serif !important;\n  color:var(--text);\n  background:var(--light-2);\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n}\n.serif{font-family:'Fraunces',Georgia,serif !important;font-weight:700;letter-spacing:-.01em}\n.wrap{max-width:1080px;margin:0 auto;padding:0 24px}\na{color:inherit;text-decoration:none}\nbutton{font-family:inherit !important;cursor:pointer;border:none;background:none}\n\n\/* HEADER (same pattern as cambridge index) *\/\n.header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .28s ease,box-shadow .28s ease;border-bottom:1px solid transparent;}\n.header.solid{background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgba(15,23,42,.02);}\n.header-inner{display:flex;align-items:center;gap:28px;height:72px;max-width:1200px;margin:0 auto;padding:0 24px}\n.brand{display:flex;align-items:center;gap:11px;flex-shrink:0}\n.brand img{width:40px;height:40px;border-radius:11px;object-fit:cover;box-shadow:var(--sh-card)}\n.brand-name{font-weight:800;font-size:18px;letter-spacing:-.02em;color:#fff;transition:color .28s ease}\n.header.solid .brand-name{color:var(--text)}\n.nav{display:flex;align-items:center;gap:4px;margin-left:8px}\n.nav a{position:relative;padding:9px 13px;font-size:14.5px;font-weight:600;color:rgba(255,255,255,.82);border-radius:var(--r-10);transition:color .16s ease,background .16s ease;}\n.nav a:hover{color:#fff;background:rgba(255,255,255,.08)}\n.header.solid .nav a{color:var(--muted)}\n.header.solid .nav a:hover{color:var(--text);background:var(--light-1)}\n.header-right{margin-left:auto;display:flex;align-items:center;gap:10px}\n.btn-back{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;font-weight:700;font-size:14px;background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.22);transition:background .16s ease}\n.btn-back:hover{background:rgba(255,255,255,.22)}\n.header.solid .btn-back{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.hamburger{display:none;width:40px;height:40px;border-radius:50%;color:#fff;align-items:center;justify-content:center}\n.header.solid .hamburger{color:var(--text)}\n\n\/* HERO *\/\n.hero{\n  position:relative;min-height:380px;padding:120px 0 60px;\n  background:linear-gradient(135deg,#FB923C 0%,#F43F5E 55%,#7C2D12 100%);\n  color:#fff;overflow:hidden;\n}\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:14px}\n.hero h1{font-size:clamp(34px,5vw,52px);line-height:1.05;margin-bottom:14px}\n.hero h1 span{font-style:italic;color:var(--gold)}\n.hero p.sub{font-size:17px;line-height:1.6;max-width:680px;opacity:.95;margin-bottom:22px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}\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.cta-row{display:flex;gap:12px;flex-wrap:wrap}\n.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:#fff;color:var(--text);font-weight:700;font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.2);transition:transform .16s ease}\n.btn-primary:hover{transform:translateY(-2px)}\n.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;font-weight:700;font-size:15px;border:1px solid rgba(255,255,255,.32);transition:background .16s ease}\n.btn-ghost:hover{background:rgba(255,255,255,.22)}\n\n\/* SCORE BAR *\/\n.score-bar{\n  position:sticky;top:72px;z-index:50;\n  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);\n  border-bottom:1px solid var(--border);\n  padding:14px 0;\n}\n.sb-inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap}\n.sb-prog{flex:1;min-width:200px}\n.sb-prog-bar{height:8px;background:var(--light-1);border-radius:999px;overflow:hidden}\n.sb-prog-fill{height:100%;background:linear-gradient(90deg,var(--accent-1),var(--accent-2));border-radius:999px;transition:width .3s ease;width:0}\n.sb-prog-label{font-size:12px;color:var(--muted);margin-top:5px;font-weight:600}\n.sb-score{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;color:var(--text)}\n.sb-score b{font-size:18px;color:var(--accent-1)}\n.btn-submit{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:14px;box-shadow:0 6px 18px rgba(249,115,22,.32);transition:transform .15s ease,opacity .15s ease}\n.btn-submit:hover{transform:translateY(-1px)}\n.btn-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}\n.btn-reset{padding:10px 16px;border-radius:999px;background:#fff;color:var(--muted);font-weight:600;font-size:13px;border:1px solid var(--border);transition:background .15s ease}\n.btn-reset:hover{background:var(--light-1);color:var(--text)}\n\n\/* PARTS *\/\n.part-section{padding:48px 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:24px}\n.part-num{\n  flex-shrink:0;width:60px;height:60px;border-radius:18px;\n  background:linear-gradient(135deg,var(--accent-1),var(--accent-2));\n  color:#fff;display:grid;place-items:center;\n  font-family:'Fraunces',serif !important;font-weight:700;font-size:26px;\n  box-shadow:0 8px 22px rgba(249,115,22,.3);\n}\n.part-head-text h2{font-size:26px;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;letter-spacing:.04em;margin-bottom:8px}\n.part-head-text p{color:var(--muted);font-size:15px;line-height:1.55;max-width:740px}\n\n\/* PART 1 &#8212; notice match *\/\n.notices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin:20px 0 28px}\n.notice{\n  background:#fff;border:2px solid var(--border);border-radius:14px;padding:18px 14px;text-align:center;\n  font-weight:700;letter-spacing:.02em;color:var(--text);min-height:88px;display:grid;place-items:center;\n  font-size:14.5px;line-height:1.35;\n  box-shadow:0 1px 3px rgba(0,0,0,.04);\n}\n.notice-letter{position:absolute;top:6px;left:8px;font-size:11px;font-weight:800;color:var(--accent-1);background:var(--light-1);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;}\n.notice{position:relative}\n\n\/* questions list *\/\n.q-list{display:flex;flex-direction:column;gap:14px;margin-top:8px}\n.q-item{\n  background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 20px;\n  display:flex;flex-direction:column;gap:12px;transition:border-color .2s ease,box-shadow .2s ease;\n}\n.q-item.correct{border-color:var(--green);box-shadow:0 0 0 3px rgba(16,185,129,.12)}\n.q-item.wrong{border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.12)}\n.q-num{font-weight:800;color:var(--accent-1);font-size:14px;min-width:30px}\n.q-text{flex:1;font-size:15.5px;line-height:1.55;color:var(--text);display:flex;gap:10px;align-items:flex-start}\n.q-text b.qn{color:var(--accent-1);font-weight:800}\n.q-opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.opt{\n  display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;\n  background:#F8FAFF;border:1.5px solid var(--border);font-weight:600;font-size:14px;color:var(--text);\n  cursor:pointer;transition:all .15s ease;user-select:none;\n}\n.opt:hover{background:var(--light-1);border-color:var(--accent-1)}\n.opt input{display:none}\n.opt .opt-letter{font-weight:800;color:var(--accent-1);background:#fff;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:12.5px;border:1px solid var(--border)}\n.opt.selected{background:linear-gradient(100deg,rgba(249,115,22,.12),rgba(244,63,94,.12));border-color:var(--accent-1)}\n.opt.selected .opt-letter{background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;border-color:transparent}\n.opt.correct-opt{background:rgba(16,185,129,.12) !important;border-color:var(--green) !important}\n.opt.correct-opt .opt-letter{background:var(--green) !important;color:#fff !important;border-color:transparent !important}\n.opt.wrong-opt{background:rgba(239,68,68,.10) !important;border-color:var(--red) !important}\n.opt.wrong-opt .opt-letter{background:var(--red) !important;color:#fff !important;border-color:transparent !important}\n.feedback{font-size:13px;font-weight:600;display:none;padding:8px 12px;border-radius:8px;margin-top:4px}\n.q-item.answered .feedback{display:block}\n.q-item.correct .feedback{background:rgba(16,185,129,.12);color:#065F46}\n.q-item.wrong .feedback{background:rgba(239,68,68,.10);color:#991B1B}\n\n\/* PART 2 \/ cloze with input *\/\n.input-blank{\n  display:inline-block;min-width:90px;border:none;border-bottom:2px dashed var(--accent-1);\n  background:transparent;font-family:inherit !important;font-size:15.5px;color:var(--text);font-weight:600;\n  padding:2px 6px;margin:0 4px;text-align:center;outline:none;\n}\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\n\/* PART 4 &#8212; passage *\/\n.passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;\n  padding:24px 26px;margin:8px 0 20px;\n  font-size:15.5px;line-height:1.7;color:var(--text);\n  box-shadow:var(--sh-card);\n  position:relative;\n}\n.passage h3{font-family:'Fraunces',serif !important;font-size:22px;text-align:center;margin-bottom:14px;letter-spacing:.02em;color:var(--accent-2)}\n.passage p{margin-bottom:10px}\n\n\/* PART 5 &#8212; cloze passage *\/\n.cloze-passage{\n  background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px 26px;\n  font-size:16px;line-height:1.8;color:var(--text);box-shadow:var(--sh-card);margin-bottom:24px;\n}\n.cloze-passage h3{font-family:'Fraunces',serif !important;font-size:24px;text-align:center;color:var(--accent-2);margin-bottom:14px}\n\n\/* PART 6 &#8212; single word with first letter *\/\n.word-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}\n.first-letter{font-weight:700;color:var(--accent-1);font-size:18px;font-family:'Fraunces',serif}\n.dashes{color:var(--muted);letter-spacing:6px;font-weight:600}\n\n\/* PART 8 &#8212; form *\/\n.form-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px;max-width:560px}\n.form-card h4{font-family:'Fraunces',serif !important;font-size:20px;text-align:center;color:var(--accent-2);margin-bottom:6px;border-bottom:2px solid var(--accent-1);padding-bottom:8px;display:inline-block;width:100%}\n.form-row{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}\n.form-row label{flex:0 0 200px;font-weight:600;color:var(--text);font-size:14.5px}\n.form-row .input-blank{flex:1;min-width:200px;text-align:left;font-size:14.5px}\n\n\/* PART 9 &#8212; writing *\/\n.writing-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:22px;margin-top:18px}\n.prompt-box{background:var(--light-1);border-left:4px solid var(--accent-1);padding:14px 18px;border-radius:0 12px 12px 0;margin-bottom:18px;font-size:15px;line-height:1.6}\n.prompt-box ul{margin:10px 0 4px 22px}\n.prompt-box li{margin-bottom:4px}\n.writing-area{width:100%;min-height:160px;padding:14px;font-family:inherit !important;font-size:15px;line-height:1.55;border:2px solid var(--border);border-radius:12px;background:#FAFBFC;color:var(--text);outline:none;resize:vertical;transition:border-color .2s ease}\n.writing-area:focus{border-color:var(--accent-1);background:#fff}\n.wc-counter{display:flex;justify-content:space-between;margin-top:8px;font-size:13px;color:var(--muted);font-weight:600}\n.wc-counter.ok{color:var(--green)}\n.wc-counter.over{color:var(--red)}\n.sample-toggle{margin-top:14px;display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;background:linear-gradient(100deg,var(--accent-1),var(--accent-2));color:#fff;font-weight:700;font-size:13.5px;border:none;cursor:pointer}\n.sample-box{display:none;margin-top:14px;padding:14px 18px;background:#FEF3C7;border-left:4px solid var(--gold);border-radius:0 12px 12px 0;font-size:14.5px;line-height:1.6}\n.sample-box.show{display:block}\n.sample-box h5{font-family:'Fraunces',serif !important;font-size:16px;margin-bottom:8px;color:#92400E}\n\n\/* SHOW ANSWER PER-Q BUTTONS *\/\n.show-ans-btn{\n  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:8px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:12px;\n  border:1px solid rgba(249,115,22,.30);cursor:pointer;transition:all .15s ease;\n  font-family:inherit !important;align-self:flex-start;margin-top:4px;letter-spacing:.02em;\n}\n.show-ans-btn:hover{background:rgba(249,115,22,.18);border-color:var(--accent-1)}\n.show-ans-btn[disabled]{opacity:.45;cursor:not-allowed}\n.show-ans-btn .emoji{width:14px;height:14px}\n.show-ans-btn-inline{\n  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:6px;\n  background:rgba(249,115,22,.10);color:var(--accent-1);font-weight:700;font-size:11.5px;\n  border:1px solid rgba(249,115,22,.28);cursor:pointer;font-family:inherit !important;\n  margin-left:4px;vertical-align:middle;transition:all .15s ease;\n}\n.show-ans-btn-inline:hover{background:rgba(249,115,22,.18)}\n.show-ans-btn-inline[disabled]{opacity:.45;cursor:not-allowed}\n\n\/* RESULTS BANNER *\/\n.results-banner{\n  display:none;margin:32px auto;padding:30px;border-radius:22px;\n  background:linear-gradient(135deg,#FB923C,#F43F5E);color:#fff;text-align:center;max-width:720px;\n  box-shadow:0 16px 50px rgba(249,115,22,.3);\n}\n.results-banner.show{display:block}\n.results-banner h3{font-size:30px;font-family:'Fraunces',serif !important;margin-bottom:10px}\n.results-banner .score-big{font-size:64px;font-weight:800;line-height:1;margin:14px 0;font-family:'Fraunces',serif}\n.results-banner p{opacity:.95;font-size:15px}\n\n\/* FOOTER *\/\n.footer{background:var(--dark-1);color:#9CA3AF;padding:36px 0;text-align:center;font-size:13.5px}\n.footer a{color:var(--gold);font-weight:600}\n\n\/* MOBILE *\/\n@media (max-width:820px){\n  .nav{display:none}\n  .hamburger{display:flex}\n  .hero{padding:110px 0 50px}\n  .part-head{flex-direction:column;gap:12px}\n  .part-num{width:50px;height:50px;font-size:22px}\n  .notices-grid{grid-template-columns:repeat(2,1fr)}\n  .form-row label{flex:1 1 100%}\n  .form-row .input-blank{width:100%}\n  .sb-inner{gap:10px}\n  .sb-prog{order:3;flex:1 1 100%}\n}\n\n\/* mobile drawer *\/\n.drawer{position:fixed;inset:0;background:rgba(15,23,42,.65);z-index:200;display:none;align-items:flex-start;justify-content:flex-end}\n.drawer.open{display:flex}\n.drawer-panel{width:280px;background:#fff;height:100%;padding:24px;display:flex;flex-direction:column;gap:8px}\n.drawer-panel a{padding:12px 14px;border-radius:10px;font-weight:600;color:var(--text)}\n.drawer-panel a:hover{background:var(--light-1)}\n.drawer-close{align-self:flex-end;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}\n<\/style>\n\n<!-- HEADER -->\n<header class=\"header\" id=\"hdr\">\n  <div class=\"header-inner\">\n    <a href=\"https:\/\/allenglish4u.com\" class=\"brand\">\n      <img decoding=\"async\" src=\"https:\/\/allenglish4u.com\/wp-content\/uploads\/2026\/04\/Transparent-background-MacBook-Pro-cua-Hang.png\" alt=\"AE4U\">\n      <span class=\"brand-name\">All English 4U<\/span>\n    <\/a>\n    <nav class=\"nav\">\n      <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"active\">Cambridge<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n      <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n      <\/nav>\n    <div class=\"header-right\">\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-back\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M19 12H5M11 18l-6-6 6-6\"\/><\/svg>\n        Back\n      <\/a>\n      <button class=\"hamburger\" id=\"hamb\" aria-label=\"Menu\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M3 6h18M3 12h18M3 18h18\"\/><\/svg>\n      <\/button>\n    <\/div>\n  <\/div>\n<\/header>\n\n<div class=\"drawer\" id=\"drawer\">\n  <div class=\"drawer-panel\">\n    <button class=\"drawer-close\" id=\"drawerClose\" aria-label=\"Close\">\n      <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\"><path d=\"M18 6L6 18M6 6l12 12\"\/><\/svg>\n    <\/button>\n    <a href=\"https:\/\/allenglish4u.com\/grammar\/\">Grammar<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/ielts\/\">IELTS<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/toefl\/\">TOEFL<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">Cambridge<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/celpip\/\">CELPIP<\/a>\n    <a href=\"https:\/\/allenglish4u.com\/dictation\/\">Dictation<\/a>\n    <\/div>\n<\/div>\n\n<!-- HERO -->\n<section class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"kicker\">Cambridge English &#183; Key (KET)<\/span>\n    <h1 class=\"serif\">KET 4 &#8212; Test 1<br><span>Reading &amp; Writing<\/span><\/h1>\n    <p class=\"sub\">Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn from instant feedback.<\/p>\n    <div class=\"hero-meta\">\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>1 hour 10 minutes<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>9 Parts<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>55 auto-graded<\/span>\n      <span class=\"meta-pill\"><span class=\"dot\"><\/span>+ Writing prompt<\/span>\n    <\/div>\n    <div class=\"cta-row\">\n      <a href=\"#part1\" class=\"btn-primary\">\n        Start Test\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\n      <\/a>\n      <a href=\"https:\/\/allenglish4u.com\/cambridge\/\" class=\"btn-ghost\">All Cambridge Tests<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- SCORE BAR -->\n<div class=\"score-bar\" id=\"scoreBar\">\n  <div class=\"wrap sb-inner\">\n    <div class=\"sb-score\">Score <b><span id=\"scoreNow\">0<\/span>\/55<\/b><\/div>\n    <div class=\"sb-prog\">\n      <div class=\"sb-prog-bar\"><div class=\"sb-prog-fill\" id=\"progFill\"><\/div><\/div>\n      <div class=\"sb-prog-label\"><span id=\"answeredCount\">0<\/span> of 55 answered<\/div>\n    <\/div>\n    <button class=\"btn-submit\" id=\"submitBtn\">\n      <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg>\n      Submit &amp; Grade\n    <\/button>\n    <button class=\"btn-reset\" id=\"resetBtn\">Reset<\/button>\n  <\/div>\n<\/div>\n\n<!-- ============== PART 1 ============== -->\n<section class=\"part-section\" id=\"part1\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">1<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 1&#8211;5<\/span>\n        <h2 class=\"serif\">Match the notice<\/h2>\n        <p>Which notice (A&#8211;H) says this (1&#8211;5)? For questions 1&#8211;5, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"notices-grid\">\n      <div class=\"notice\"><span class=\"notice-letter\">A<\/span>KEEP THIS MEDICINE<br>AWAY FROM CHILDREN<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">B<\/span><sub style=\"font-size:12px;font-weight:600;font-style:italic\">Check your holiday insurance now &#8211; before you go away.<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">C<\/span><b>SORRY!<\/b><br><sub style=\"font-size:11px;font-weight:600\">No showers in the Sports Centre this week<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">D<\/span>Dr Jenkins is on holiday<br>until Friday.<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">E<\/span>TODAY<br><sub style=\"font-size:11px;font-weight:600\">Day trip to the mountains<br>Wear something warm!<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">F<\/span>CAR WASH &#8211; &#163;4<br><sub style=\"font-size:11px;font-weight:600;font-style:italic\">We&#8217;ll make it look like new<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">G<\/span>All our winter holidays<br><b>25% cheaper<\/b><\/div>\n      <div class=\"notice\" style=\"opacity:.55\"><span class=\"notice-letter\">H<\/span><sub style=\"font-size:12px;font-weight:600;font-style:italic\">We buy and sell second-hand clothes.<\/sub><br><sub style=\"font-size:10px;color:var(--muted);font-style:italic;font-weight:600\">(example)<\/sub><\/div>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part1List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 2 ============== -->\n<section class=\"part-section\" id=\"part2\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">2<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 6&#8211;10<\/span>\n        <h2 class=\"serif\">Cooking a meal<\/h2>\n        <p>Read the sentences (6&#8211;10) about cooking a meal. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> Last week, Louise <u>made<\/u> some friends at her new school. <b>(Answer: A)<\/b>\n    <\/div>\n    <div class=\"q-list\" id=\"part2List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3a ============== -->\n<section class=\"part-section\" id=\"part3a\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 11&#8211;15<\/span>\n        <h2 class=\"serif\">Complete the conversations<\/h2>\n        <p>Complete the five conversations. Choose the correct answer (A, B or C).<\/p>\n      <\/div>\n    <\/div>\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;margin-bottom:18px;font-size:14.5px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example:<\/b> Where do you come from? &#8212; <b>A<\/b> New York.\n    <\/div>\n    <div class=\"q-list\" id=\"part3aList\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 3b ============== -->\n<section class=\"part-section\" id=\"part3b\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">3<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 16&#8211;20<\/span>\n        <h2 class=\"serif\">At a hotel: Tom &amp; the Receptionist<\/h2>\n        <p>Complete the conversation. What does Tom say to the receptionist? For each blank, choose the correct letter A&#8211;H.<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;margin-bottom:18px;font-size:14.5px;line-height:1.7\">\n      <p><b>Receptionist:<\/b> Good evening, can I help you?<\/p>\n      <p><b>Tom:<\/b> <span style=\"color:var(--accent-1);font-weight:700\">(Example: C)<\/span><\/p>\n      <p><b>Receptionist:<\/b> I&#8217;m afraid all our single rooms are full. How long do you want to stay?<\/p>\n      <p><b>Tom:<\/b> <select class=\"q-select\" data-qid=\"16\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Receptionist:<\/b> I have a double room for &#163;60.<\/p>\n      <p><b>Tom:<\/b> <select class=\"q-select\" data-qid=\"17\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Receptionist:<\/b> I&#8217;m sure they&#8217;re full too. There are a lot of tourists in town at the moment.<\/p>\n      <p><b>Tom:<\/b> <select class=\"q-select\" data-qid=\"18\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Receptionist:<\/b> I&#8217;m afraid the restaurant is closed. Breakfast starts at 7 tomorrow.<\/p>\n      <p><b>Tom:<\/b> <select class=\"q-select\" data-qid=\"19\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Receptionist:<\/b> Your room must be empty by 12 o&#8217;clock. But you can put your luggage in reception.<\/p>\n      <p><b>Tom:<\/b> <select class=\"q-select\" data-qid=\"20\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><option>H<\/option><\/select><\/p>\n      <p><b>Receptionist:<\/b> Would you write your name in the book, please?<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 22px;font-size:14px;line-height:1.85\">\n      <b style=\"color:var(--accent-1);display:block;margin-bottom:6px\">Choices:<\/b>\n      <div><b>A<\/b> I see. Can I get something to eat in this hotel?<\/div>\n      <div><b>B<\/b> Would you show me the room?<\/div>\n      <div style=\"opacity:.5\"><b>C<\/b> I&#8217;m looking for a single room. <i>(example)<\/i><\/div>\n      <div><b>D<\/b> What time does it finish?<\/div>\n      <div><b>E<\/b> If I stay here, can I leave my suitcase in my room tomorrow afternoon?<\/div>\n      <div><b>F<\/b> That&#8217;s rather expensive. Are there any other hotels near here?<\/div>\n      <div><b>G<\/b> Just for one night.<\/div>\n      <div><b>H<\/b> OK. I&#8217;ll take the room.<\/div>\n    <\/div>\n\n    <div id=\"part3bFeedback\" style=\"margin-top:14px\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 4 ============== -->\n<section class=\"part-section\" id=\"part4\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">4<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 21&#8211;27<\/span>\n        <h2 class=\"serif\">Bill Bryson<\/h2>\n        <p>Read the article about Bill Bryson, a writer. Are sentences 21&#8211;27 <b>&#8216;Right&#8217; (A)<\/b> or <b>&#8216;Wrong&#8217; (B)<\/b>? If there is not enough information to answer &#8216;Right&#8217; or &#8216;Wrong&#8217;, choose <b>&#8216;Doesn&#8217;t say&#8217; (C)<\/b>.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"passage\">\n      <h3>BILL BRYSON<\/h3>\n      <p>I was born in the United States but I have written several travel books about England. I lived there with my wife and four children for 20 years, but for the last three years we have lived in the United States. Our children are now learning about life in the United States. I&#8217;m sure they will be happier because they have lived in two countries. I like Britain and I want to return, but my daughter, Felicity, is going to start college here soon, so it won&#8217;t be for another four years.<\/p>\n      <p>I have just been to England for six weeks to work on a radio programme about the English language and also to talk about the book I&#8217;ve just written. Most writers don&#8217;t like doing this; they don&#8217;t like travelling around the country, selling their book. I don&#8217;t mind it. I like visiting new places and meeting lots of people. It&#8217;s very different from the life I have in the United States when I&#8217;m writing. In England, people drove me around in big cars and I stayed in expensive hotels. It was good because I didn&#8217;t have to pay any bills. Everyone was kind to me and it was fun.<\/p>\n    <\/div>\n\n    <div style=\"background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 18px;margin-bottom:18px;font-size:14px;color:var(--muted)\">\n      <b style=\"color:var(--accent-1)\">Example (0):<\/b> Bill has written about a country he has visited. &#8594; <b>A (Right)<\/b>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part4List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 5 ============== -->\n<section class=\"part-section\" id=\"part5\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">5<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 28&#8211;35<\/span>\n        <h2 class=\"serif\">Crocodiles &#8212; gap fill<\/h2>\n        <p>Read the article about crocodiles. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"cloze-passage\">\n      <h3>Crocodiles<\/h3>\n      <p>We can find crocodiles in tropical parts of <u><b style=\"color:var(--accent-1)\">the<\/b><\/u> world, for example Africa, South America and Northern Australia.<\/p>\n      <p>They spend most of the time <span data-q=\"28\" class=\"cloze-blank\">[28]<\/span> slow-moving water but they <span data-q=\"29\" class=\"cloze-blank\">[29]<\/span> move fast through the water and on land.<\/p>\n      <p>You often see crocodiles together in large groups. They <span data-q=\"30\" class=\"cloze-blank\">[30]<\/span> everything they catch, <span data-q=\"31\" class=\"cloze-blank\">[31]<\/span> fish, birds and small animals. And sometimes they make a meal of large animals or even people.<\/p>\n      <p>There are <span data-q=\"32\" class=\"cloze-blank\">[32]<\/span> than ten types of crocodile. They all have very sharp teeth. They often lose <span data-q=\"33\" class=\"cloze-blank\">[33]<\/span> teeth, but soon get new ones.<\/p>\n      <p>Crocodiles are usually about 3.5 metres long, but some are much <span data-q=\"34\" class=\"cloze-blank\">[34]<\/span>. Crocodiles live <span data-q=\"35\" class=\"cloze-blank\">[35]<\/span> a long time. The oldest one kept in a zoo was 66 years old.<\/p>\n    <\/div>\n\n    <div class=\"q-list\" id=\"part5List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 6 ============== -->\n<section class=\"part-section\" id=\"part6\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">6<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 36&#8211;40<\/span>\n        <h2 class=\"serif\">Things you can read &#8212; spell the word<\/h2>\n        <p>Read the descriptions (36&#8211;40) of some things you can read. The first letter is given. Type the word. <b>Example (0):<\/b> When your friends go on holiday, they send you this. &#8594; <b>postcard<\/b><\/p>\n      <\/div>\n    <\/div>\n    <div class=\"q-list\" id=\"part6List\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 7 ============== -->\n<section class=\"part-section\" id=\"part7\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">7<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 41&#8211;50<\/span>\n        <h2 class=\"serif\">Complete this letter<\/h2>\n        <p>Read the letter from Sophie to her friend Maria. Type <b>ONE word<\/b> for each space (41&#8211;50). (Example: <i>be<\/i>)<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"max-width:600px;margin:0 auto\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:24px 26px;font-size:14.5px;line-height:1.95;font-family:'Courier New',monospace\">\n        <p style=\"text-align:right\">Paris<\/p>\n        <p>Dear Maria,<\/p>\n        <p>It&#8217;s good to (Example: <u>be<\/u>) back home in my country but I still think <input class=\"input-blank\" data-q=\"41\" type=\"text\"> all the friends I made in our English class, especially you. I cried <input class=\"input-blank\" data-q=\"42\" type=\"text\"> I left England because my visit <input class=\"input-blank\" data-q=\"43\" type=\"text\"> too short. I would <input class=\"input-blank\" data-q=\"44\" type=\"text\"> to return to England but <input class=\"input-blank\" data-q=\"45\" type=\"text\"> time I will stay in a different city.<\/p>\n        <p>I have started English classes again here. I learnt a <input class=\"input-blank\" data-q=\"46\" type=\"text\"> of things in England but I know I <input class=\"input-blank\" data-q=\"47\" type=\"text\"> to study even harder.<\/p>\n        <p><input class=\"input-blank\" data-q=\"48\" type=\"text\"> about you? <input class=\"input-blank\" data-q=\"49\" type=\"text\"> you still looking for a job? I hope you find <input class=\"input-blank\" data-q=\"50\" type=\"text\"> soon.<\/p>\n        <p>Love,<\/p>\n        <p><i>Sophie<\/i><\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 8 ============== -->\n<section class=\"part-section\" id=\"part8\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">8<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Questions 51&#8211;55<\/span>\n        <h2 class=\"serif\">Lost Property Report Form<\/h2>\n        <p>Read the letter from Jane Harvey. Fill in the information on the Lost Property Report Form (51&#8211;55).<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"max-width:600px;margin:0 0 18px\">\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:18px 22px;font-size:14px;line-height:1.65\">\n        <div style=\"display:flex;justify-content:space-between\"><div><b>The Manager<\/b><br>North Line Trains<br>London<\/div><div>16 March<\/div><\/div>\n        <p style=\"margin-top:12px\">Dear Sir,<\/p>\n        <p style=\"margin-top:8px\">On 14 March, I got on the 12.45 train to London at Manchester station. I had a suitcase and a handbag with me. When I got off the train at 14.50, I did not have my handbag.<\/p>\n        <p style=\"margin-top:8px\">Has anyone found it? Please phone me on 723419 or, after 6 p.m., on 796327.<\/p>\n        <p style=\"margin-top:8px\"><i>Jane Harvey<\/i><\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"form-card\">\n      <h4>LOST PROPERTY REPORT FORM<\/h4>\n      <div class=\"form-row\"><label>Name of passenger:<\/label><span style=\"font-weight:600;color:var(--accent-2);font-style:italic\">Jane Harvey<\/span><\/div>\n      <div class=\"form-row\"><label>Travelling from:<\/label><input class=\"input-blank\" data-q=\"51\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Date of journey:<\/label><input class=\"input-blank\" data-q=\"52\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Time journey started:<\/label><input class=\"input-blank\" data-q=\"53\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>What did you lose?<\/label><input class=\"input-blank\" data-q=\"54\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Daytime phone number:<\/label><input class=\"input-blank\" data-q=\"55\" type=\"text\"><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============== PART 9 &#8212; WRITING ============== -->\n<section class=\"part-section\" id=\"part9\">\n  <div class=\"wrap\">\n    <div class=\"part-head\">\n      <div class=\"part-num\">9<\/div>\n      <div class=\"part-head-text\">\n        <span class=\"qrange\">Question 56<\/span>\n        <h2 class=\"serif\">Writing &#8212; note to Spencer<\/h2>\n        <p>This part is <b>not auto-graded<\/b>. Write your note, then click <i>Show Sample Answer<\/i> to see examples with examiner marks.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"writing-card\">\n      <div class=\"prompt-box\">\n        <b>Read this note from your friend, Spencer. Write Spencer a note and answer his questions.<\/b>\n        <div style=\"background:#fff;border:1px dashed var(--accent-1);border-radius:10px;padding:12px 14px;margin:12px 0;font-style:italic;line-height:1.55\">\n          Let&#8217;s meet for dinner near your house on Saturday.<br><br>\n          Where shall we eat? What time can you come? Where can I park my car?<br><br>\n          Spencer\n        <\/div>\n        Your note must include:\n        <ul>\n          <li><b>where<\/b> you will eat<\/li>\n          <li>what <b>time<\/b> you can come<\/li>\n          <li><b>where<\/b> Spencer can park his car<\/li>\n        <\/ul>\n        Write 25&#8211;35 words.\n      <\/div>\n      <textarea class=\"writing-area\" id=\"writingArea\" placeholder=\"Type your note here...\"><\/textarea>\n      <div class=\"wc-counter\" id=\"wcCounter\">0 words &#183; target 25&#8211;35<\/div>\n      <button class=\"sample-toggle\" id=\"sampleToggle\">\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n        Show Sample Answer\n      <\/button>\n      <div class=\"sample-box\" id=\"sampleBox\">\n        <h5 style=\"margin-bottom:14px\">Sample answers &#8212; with examiner marks<\/h5>\n\n        <div style=\"background:#fff;border-left:3px solid var(--green);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--green);font-size:12.5px;letter-spacing:.05em\">SAMPLE A &#8212; Mark 5\/5 (all three questions answered, no errors)<\/b>\n          <p style=\"margin-top:6px\">Hi Spencer,<\/p>\n          <p>Let&#8217;s eat at the new Italian restaurant near my house &#8212; the food is great. I can come at seven o&#8217;clock on Saturday. You can park your car in front of my house; there is always space. See you! Tom<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--accent-1);padding:10px 14px;margin-bottom:12px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--accent-1);font-size:12.5px;letter-spacing:.05em\">SAMPLE B &#8212; Mark 4\/5 (some spelling &amp; grammar errors, but clear)<\/b>\n          <p style=\"margin-top:6px\">Hello Spencer,<\/p>\n          <p>We can eat in the pizza place by my home. I come at half past seven in the evening. You can park you car on the street near my house, is no problem. See you Saturday! Marco<\/p>\n        <\/div>\n\n        <div style=\"background:#fff;border-left:3px solid var(--red);padding:10px 14px;border-radius:0 8px 8px 0\">\n          <b style=\"color:var(--red);font-size:12.5px;letter-spacing:.05em\">SAMPLE C &#8212; Mark 3\/5 (only two of the three questions answered)<\/b>\n          <p style=\"margin-top:6px\">Dear Spencer,<\/p>\n          <p>Let&#8217;s eat at the Chinese restaurant in the centre. I can come at eight o&#8217;clock. I am very happy to see you on Saturday and have dinner together. Thank you! Lin<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- RESULTS BANNER -->\n<div class=\"wrap\">\n  <div class=\"results-banner\" id=\"resultsBanner\">\n    <h3>Your KET 4 Test 1 &#8212; Reading &amp; Writing score<\/h3>\n    <div class=\"score-big\"><span id=\"finalScore\">0<\/span>\/55<\/div>\n    <p id=\"resultsMsg\">Great effort! Scroll up to review your answers &#8212; correct ones are highlighted in green and wrong ones in red.<\/p>\n    <div style=\"margin-top:18px\"><button class=\"btn-primary\" onclick=\"window.scrollTo({top:0,behavior:'smooth'})\" style=\"background:#fff;color:var(--accent-2)\">Back to top<\/button><\/div>\n  <\/div>\n<\/div>\n\n<!-- FOOTER -->\n<footer class=\"footer\">\n  <div class=\"wrap\">\n    <p>&#169; 2026 All English 4U &#183; <a href=\"https:\/\/allenglish4u.com\/cambridge\/\">All Cambridge Tests<\/a> &#183; <a href=\"https:\/\/allenglish4u.com\/contact\/\">Contact<\/a><\/p>\n  <\/div>\n<\/footer>\n\n<script>eval(atob('CihmdW5jdGlvbigpewovLyA9PT09PSBIZWFkZXIgc2Nyb2xsID09PT09CnZhciBoZHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hkcicpOwp2YXIgc2V0U29saWQ9ZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc2V0U29saWQse3Bhc3NpdmU6dHJ1ZX0pO3NldFNvbGlkKCk7CgovLyBkcmF3ZXIKdmFyIGhhbWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hhbWInKSxkcmF3ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlcicpLGRDbG9zZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhd2VyQ2xvc2UnKTsKaWYoaGFtYiloYW1iLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2RyYXdlci5jbGFzc0xpc3QuYWRkKCdvcGVuJyl9KTsKaWYoZENsb3NlKWRDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CmlmKGRyYXdlcilkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZHJhd2VyKWRyYXdlci5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyl9KTsKCi8vID09PT09IERBVEEgPT09PT0KLy8gTUNRIHF1ZXN0aW9uczogZWFjaCBlbnRyeSA9IHtuLCB0ZXh0LCBvcHRzOlt7bCx0fV0sIGFuc30KdmFyIFAxID0gWwogIHtuOjEsdGV4dDonVGhlc2UgY29zdCBsZXNzIHRoYW4gdXN1YWwuJyxvcHRzOidBQkNERUZHJyxhbnM6J0cnfSwKICB7bjoyLHRleHQ6J1RoaXMgaXMgYSBiYWQgdGltZSB0byBiZSBpbGwuJyxvcHRzOidBQkNERUZHJyxhbnM6J0QnfSwKICB7bjozLHRleHQ6J0JlIGNhcmVmdWwgd2hlcmUgeW91IHB1dCB0aGlzLicsb3B0czonQUJDREVGRycsYW5zOidBJ30sCiAge246NCx0ZXh0OidZb3Ugd2lsbCBuZWVkIHRvIHRha2UgYSBoZWF2eSBzd2VhdGVyIG9yIGphY2tldCB3aXRoIHlvdS4nLG9wdHM6J0FCQ0RFRkcnLGFuczonRSd9LAogIHtuOjUsdGV4dDonWW91IHdpbGwgbm90IGJlIGFibGUgdG8gd2FzaCB5b3Vyc2VsZiBoZXJlIGZvciBhIGZldyBkYXlzLicsb3B0czonQUJDREVGRycsYW5zOidDJ30sCl07CnZhciBQMiA9IFsKICB7bjo2LHRleHQ6J1NoZSBfX19fXyBhbGwgb2YgdGhlbSB0byBkaW5uZXIgYXQgaGVyIGhvdXNlIG9uIFNhdHVyZGF5IGV2ZW5pbmcuJyxvcHRzOltbJ0EnLCdwaG9uZWQnXSxbJ0InLCdpbnZpdGVkJ10sWydDJywnc2FpZCddXSxhbnM6J0InfSwKICB7bjo3LHRleHQ6J0xvdWlzZSB3cm90ZSB0aGUgdGhpbmdzIHNoZSBuZWVkZWQgdG8gYnV5IGZvciB0aGUgbWVhbCBvbiBhIF9fX19fIG9mIHBhcGVyLicsb3B0czpbWydBJywncGllY2UnXSxbJ0InLCdzbGljZSddLFsnQycsJ3BhcnQnXV0sYW5zOidBJ30sCiAge246OCx0ZXh0OidTaGUgd2FzIF9fX19fIG9uIFNhdHVyZGF5IG1vcm5pbmcgc28gc2hlIHdlbnQgc2hvcHBpbmcgaW4gdGhlIGFmdGVybm9vbi4nLG9wdHM6W1snQScsJ2Z1bGwnXSxbJ0InLCdidXN5J10sWydDJywnZGlmZmljdWx0J11dLGFuczonQid9LAogIHtuOjksdGV4dDonTG91aXNlIF9fX19fIHR3byBob3VycyBjb29raW5nIHRoZSBtZWFsLicsb3B0czpbWydBJywnd2FpdGVkJ10sWydCJywnc3BlbnQnXSxbJ0MnLCdwYXNzZWQnXV0sYW5zOidCJ30sCiAge246MTAsdGV4dDonV2hlbiB0aGUgbWVhbCB3YXMgX19fX18sIGV2ZXJ5b25lIHNhdCBkb3duIHRvIGVhdC4nLG9wdHM6W1snQScsJ3JpZ2h0J10sWydCJywnc3VyZSddLFsnQycsJ3JlYWR5J11dLGFuczonQyd9LApdOwp2YXIgUDNhID0gWwogIHtuOjExLHRleHQ6J0FyZSB5b3Ugc3VyZSB0aGUgbWF0Y2ggc3RhcnRzIGF0IHR3bz8nLG9wdHM6W1snQScsJ0l0IHN0YXJ0ZWQgd2VsbC4nXSxbJ0InLCJJdCdzIGFsbCByaWdodC4iXSxbJ0MnLCdJIHRoaW5rIHNvLiddXSxhbnM6J0MnfSwKICB7bjoxMix0ZXh0OidJIHNhdyB0aGUgbmV3IFNwaWVsYmVyZyBmaWxtIGxhc3QgbmlnaHQuJyxvcHRzOltbJ0EnLCdEaWQgSSBnbz8nXSxbJ0InLCdIYXMgaGUgY29tZT8nXSxbJ0MnLCdXYXMgaXQgZ29vZD8nXV0sYW5zOidDJ30sCiAge246MTMsdGV4dDonSG93IGRpZCB0aGUgYWNjaWRlbnQgaGFwcGVuPycsb3B0czpbWydBJywiSSBjYW4ndCBnbyB0aGVyZS4iXSxbJ0InLCJJIGRpZG4ndCBzZWUgaXQuIl0sWydDJywiSSBkb24ndCBrbm93IGhvdyB0by4iXV0sYW5zOidCJ30sCiAge246MTQsdGV4dDoiSGVsbG8sIEknZCBsaWtlIHRvIHNwZWFrIHRvIE1yIEdyZWVuLCBwbGVhc2UuIixvcHRzOltbJ0EnLCdTb3JyeSwgY2FuIHlvdSBzYXkgdGhhdCBhZ2Fpbj8nXSxbJ0InLCJJJ20gc29ycnksIEknbGwgY2FsbCBhZ2FpbiBsYXRlci4iXSxbJ0MnLCJJJ20gYWZyYWlkIEkgZG9uJ3Qga25vdy4iXV0sYW5zOidBJ30sCiAge246MTUsdGV4dDonTWF5IEkgbGVhdmUgbm93Pycsb3B0czpbWydBJywiV2hlbiB3ZSd2ZSBmaW5pc2hlZC4iXSxbJ0InLCdVbnRpbCB0b21vcnJvdy4nXSxbJ0MnLCJJIGRvbid0IGFncmVlLiJdXSxhbnM6J0EnfSwKXTsKdmFyIFAzYkFucyA9IHsxNjonRycsMTc6J0YnLDE4OidBJywxOTonRScsMjA6J0gnfTsKdmFyIFA0ID0gWwogIHtuOjIxLHRleHQ6J0JpbGwgcmV0dXJuZWQgdG8gdGhlIFVuaXRlZCBTdGF0ZXMgYWZ0ZXIgbGl2aW5nIGluIEVuZ2xhbmQgZm9yIGEgbG9uZyB0aW1lLicsb3B0czpbWydBJywnUmlnaHQnXSxbJ0InLCdXcm9uZyddLFsnQycsIkRvZXNuJ3Qgc2F5Il1dLGFuczonQSd9LAogIHtuOjIyLHRleHQ6J0JpbGwgdGhpbmtzIGl0IHdpbGwgYmUgZ29vZCBmb3IgaGlzIGNoaWxkcmVuIHRvIGxpdmUgaW4gbW9yZSB0aGFuIG9uZSBjb3VudHJ5Licsb3B0czpbWydBJywnUmlnaHQnXSxbJ0InLCdXcm9uZyddLFsnQycsIkRvZXNuJ3Qgc2F5Il1dLGFuczonQSd9LAogIHtuOjIzLHRleHQ6IkJpbGwncyBkYXVnaHRlciBkaWRuJ3Qgd2FudCB0byBnbyB0byBjb2xsZWdlIGluIEVuZ2xhbmQuIixvcHRzOltbJ0EnLCdSaWdodCddLFsnQicsJ1dyb25nJ10sWydDJywiRG9lc24ndCBzYXkiXV0sYW5zOidDJ30sCiAge246MjQsdGV4dDonQmlsbCBoYXMganVzdCB2aXNpdGVkIEVuZ2xhbmQgdG8gZmluaXNoIHdyaXRpbmcgaGlzIG5ldyBib29rLicsb3B0czpbWydBJywnUmlnaHQnXSxbJ0InLCdXcm9uZyddLFsnQycsIkRvZXNuJ3Qgc2F5Il1dLGFuczonQid9LAogIHtuOjI1LHRleHQ6J0JpbGwgaXMgaGFwcHkgd2l0aCB0aGUgdGhpbmdzIGhlIGhhcyB0byBkbyB0byBzZWxsIGhpcyBib29rcy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0EnfSwKICB7bjoyNix0ZXh0OidCaWxsIGhhcyB0cmF2ZWxsZWQgdG8gbWFueSBkaWZmZXJlbnQgcGxhY2VzIGluIHRoZSBVbml0ZWQgU3RhdGVzLicsb3B0czpbWydBJywnUmlnaHQnXSxbJ0InLCdXcm9uZyddLFsnQycsIkRvZXNuJ3Qgc2F5Il1dLGFuczonQyd9LAogIHtuOjI3LHRleHQ6J0l0IGNvc3QgQmlsbCBhIGxvdCBvZiBtb25leSB0byB0cmF2ZWwgYXJvdW5kIEVuZ2xhbmQgZm9yIHNpeCB3ZWVrcy4nLG9wdHM6W1snQScsJ1JpZ2h0J10sWydCJywnV3JvbmcnXSxbJ0MnLCJEb2Vzbid0IHNheSJdXSxhbnM6J0InfSwKXTsKdmFyIFA1ID0gWwogIHtuOjI4LG9wdHM6W1snQScsJ2luJ10sWydCJywnb24nXSxbJ0MnLCdhdCddXSxhbnM6J0EnfSwKICB7bjoyOSxvcHRzOltbJ0EnLCdhcmUnXSxbJ0InLCdjYW4nXSxbJ0MnLCdoYXZlJ11dLGFuczonQid9LAogIHtuOjMwLG9wdHM6W1snQScsJ2VhdHMnXSxbJ0InLCdlYXQnXSxbJ0MnLCdhdGUnXV0sYW5zOidCJ30sCiAge246MzEsb3B0czpbWydBJywnYnknXSxbJ0InLCdsaWtlJ10sWydDJywndG8nXV0sYW5zOidCJ30sCiAge246MzIsb3B0czpbWydBJywnbW9yZSddLFsnQicsJ21vc3QnXSxbJ0MnLCdtYW55J11dLGFuczonQSd9LAogIHtuOjMzLG9wdHM6W1snQScsJ3RoaXMnXSxbJ0InLCd0aGF0J10sWydDJywndGhlc2UnXV0sYW5zOidDJ30sCiAge246MzQsb3B0czpbWydBJywnYmlnZ2VyJ10sWydCJywnYmlnJ10sWydDJywnYmlnZ2VzdCddXSxhbnM6J0EnfSwKICB7bjozNSxvcHRzOltbJ0EnLCdmb3InXSxbJ0InLCdzaW5jZSddLFsnQycsJ2R1cmluZyddXSxhbnM6J0EnfSwKXTsKdmFyIFA2ID0gWwogIHtuOjM2LHRleHQ6IklmIHlvdSBkb24ndCB1bmRlcnN0YW5kIGEgd29yZCwgeW91IGNhbiBsb29rIGluIHRoaXMuIixmaXJzdDonZCcsYW5zOidkaWN0aW9uYXJ5J30sCiAge246MzcsdGV4dDonWW91IGNhbiBidXkgdGhpcyBldmVyeSB3ZWVrIGFuZCByZWFkIGFib3V0IG1hbnkgaW50ZXJlc3Rpbmcgc3ViamVjdHMgaW4gaXQuJyxmaXJzdDonbScsYW5zOidtYWdhemluZSd9LAogIHtuOjM4LHRleHQ6J0lmIHlvdSB3cml0ZSBhYm91dCB5b3VyIGRhaWx5IGxpZmUgaW4gdGhpcywgeW91IG1heSBub3Qgd2FudCBhbnlvbmUgdG8gcmVhZCBpdC4nLGZpcnN0OidkJyxhbnM6J2RpYXJ5J30sCiAge246MzksdGV4dDonWW91IHdyaXRlIHRoaXMgZm9yIHlvdXIgbW90aGVyIHdoZW4geW91IGFuc3dlciB0aGUgcGhvbmUgZm9yIGhlci4nLGZpcnN0OidtJyxhbnM6J21lc3NhZ2UnfSwKICB7bjo0MCx0ZXh0OidQZW9wbGUgYnV5IHRoaXMgZXZlcnkgbW9ybmluZyB0byByZWFkIGFib3V0IHdoYXQgaGFzIGhhcHBlbmVkIGluIHRoZSB3b3JsZC4nLGZpcnN0OiduJyxhbnM6J25ld3NwYXBlcid9LApdOwovLyBQYXJ0IDcgXHUyMDE0IGxldHRlciBjbG96ZTogYWNjZXB0ZWQgYW5zd2VycyAobG93ZXJjYXNlKQp2YXIgUDdBbnMgPSB7CiAgNDE6WydhYm91dCcsJ29mJ10sCiAgNDI6WydhZnRlcicsJ3doZW4nLCdhcycsJ2JlZm9yZSddLAogIDQzOlsnd2FzJywnZmVsdCcsJ3NlZW1lZCddLAogIDQ0OlsnbGlrZScsJ2xvdmUnLCdob3BlJ10sCiAgNDU6Wyd0aGlzJywnbmV4dCddLAogIDQ2OlsnbG90JywnbnVtYmVyJ10sCiAgNDc6WydoYXZlJywnbmVlZCcsJ291Z2h0J10sCiAgNDg6Wyd3aGF0JywnaG93J10sCiAgNDk6WydhcmUnXSwKICA1MDpbJ29uZScsJ3NvbWV0aGluZycsJ2l0J10sCn07Ci8vIFBhcnQgOAp2YXIgUDhBbnMgPSB7CiAgNTE6WydtYW5jaGVzdGVyJywnbWFuY2hlc3RlciBzdGF0aW9uJywnbWFuY2hlc3RlciAoc3RhdGlvbiknXSwKICA1MjpbJzE0IG1hcmNoJywnbWFyY2ggMTQnLCcxNHRoIG1hcmNoJywnMTQvMyddLAogIDUzOlsnMTIuNDUnLCcxMjo0NScsJ3R3ZWx2ZSBmb3J0eS1maXZlJywndHdlbHZlIGZvcnR5IGZpdmUnLCdxdWFydGVyIHRvIG9uZSddLAogIDU0OlsnaGFuZGJhZycsJ2EgaGFuZGJhZycsJ215IGhhbmRiYWcnLCdoZXIgaGFuZGJhZyddLAogIDU1OlsnNzIzNDE5J10sCn07CgovLyA9PT09PSBSZW5kZXJpbmcgPT09PT0KZnVuY3Rpb24gcmVuZGVyTUNRKGxpc3RFbCwgZGF0YSl7CiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIGRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWU9J3EtaXRlbSc7IGRpdi5kYXRhc2V0LnFpZD1xLm47CiAgICB2YXIgb3B0c0hUTUw9Jyc7CiAgICBpZihBcnJheS5pc0FycmF5KHEub3B0cykpewogICAgICBxLm9wdHMuZm9yRWFjaChmdW5jdGlvbihvKXsKICAgICAgICBvcHRzSFRNTCArPSAnPGxhYmVsIGNsYXNzPSJvcHQiIGRhdGEtbGV0dGVyPSInK29bMF0rJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJxJytxLm4rJyIgdmFsdWU9Iicrb1swXSsnIj48c3BhbiBjbGFzcz0ib3B0LWxldHRlciI+JytvWzBdKyc8L3NwYW4+ICcrZXNjYXBlSHRtbChvWzFdKSsnPC9sYWJlbD4nOwogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHN0cmluZyBvZiBsZXR0ZXJzIChQMSkKICAgICAgZm9yKHZhciBpPTA7aTxxLm9wdHMubGVuZ3RoO2krKyl7CiAgICAgICAgdmFyIEw9cS5vcHRzW2ldOwogICAgICAgIG9wdHNIVE1MICs9ICc8bGFiZWwgY2xhc3M9Im9wdCIgZGF0YS1sZXR0ZXI9IicrTCsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InEnK3EubisnIiB2YWx1ZT0iJytMKyciPjxzcGFuIGNsYXNzPSJvcHQtbGV0dGVyIj4nK0wrJzwvc3Bhbj48L2xhYmVsPic7CiAgICAgIH0KICAgIH0KICAgIGRpdi5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0icS10ZXh0Ij48YiBjbGFzcz0icW4iPicrcS5uKycuPC9iPjxzcGFuPicrZXNjYXBlSHRtbChxLnRleHQpKyc8L3NwYW4+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0icS1vcHRzIj4nK29wdHNIVE1MKyc8L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmZWVkYmFjayI+PC9kaXY+JzsKICAgIGxpc3RFbC5hcHBlbmRDaGlsZChkaXYpOwogIH0pOwp9CmZ1bmN0aW9uIGVzY2FwZUh0bWwocyl7cmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9bJjw+IiddL2csZnVuY3Rpb24oYyl7cmV0dXJuIHsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnLCInIjonJiMzOTsnfVtjXX0pfQoKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0MUxpc3QnKSxQMSk7CnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDJMaXN0JyksUDIpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQzYUxpc3QnKSxQM2EpOwpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQ0TGlzdCcpLFA0KTsKCi8vIFBhcnQgNSBcdTIwMTQgcmVuZGVyIGFzIE1DUSBsaXN0IHVuZGVyIHRoZSBwYXNzYWdlCnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDVMaXN0JyksUDUubWFwKGZ1bmN0aW9uKHEpe3JldHVybiB7bjpxLm4sdGV4dDonUXVlc3Rpb24gJytxLm4rJyBcdTIwMTQgY2hvb3NlIHRoZSBiZXN0IHdvcmQgZm9yIHRoZSBnYXAuJyxvcHRzOnEub3B0cyxhbnM6cS5hbnN9fSkpOwoKLy8gUGFydCA2IFx1MjAxNCBmaXJzdC1sZXR0ZXIgKyBkYXNoZXMgKyBpbnB1dAooZnVuY3Rpb24oKXsKICB2YXIgbGlzdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDZMaXN0Jyk7CiAgUDYuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciBkYXNoQ291bnQgPSBxLmFucy5sZW5ndGggLSAxOwogICAgdmFyIGRhc2hlcyA9IG5ldyBBcnJheShkYXNoQ291bnQpLmZpbGwoJ18nKS5qb2luKCcgJyk7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBkaXYuY2xhc3NOYW1lPSdxLWl0ZW0nOyBkaXYuZGF0YXNldC5xaWQ9cS5uOwogICAgZGl2LmlubmVySFRNTD0nPGRpdiBjbGFzcz0icS10ZXh0Ij48YiBjbGFzcz0icW4iPicrcS5uKycuPC9iPjxzcGFuPicrZXNjYXBlSHRtbChxLnRleHQpKyc8L3NwYW4+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9IndvcmQtcm93Ij48c3BhbiBjbGFzcz0iZmlyc3QtbGV0dGVyIj4nK3EuZmlyc3QrJzwvc3Bhbj48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImlucHV0LWJsYW5rIiBkYXRhLXE9IicrcS5uKyciIHBsYWNlaG9sZGVyPSInK2Rhc2hlcysnIiBzdHlsZT0ibWluLXdpZHRoOjIwMHB4Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZmVlZGJhY2siPjwvZGl2Pic7CiAgICBsaXN0LmFwcGVuZENoaWxkKGRpdik7CiAgfSk7Cn0pKCk7CgovLyA9PT09PSBXaXJlIG9wdGlvbiBjbGlja3MgPT09PT0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24ob3B0KXsKICBvcHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgdmFyIGlucHV0PW9wdC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwogICAgdmFyIGdyb3VwPW9wdC5wYXJlbnRFbGVtZW50OwogICAgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7by5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZCcpfSk7CiAgICBvcHQuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTsKICAgIGlucHV0LmNoZWNrZWQ9dHJ1ZTsKICAgIHVwZGF0ZVByb2dyZXNzKCk7CiAgfSk7Cn0pOwoKLy8gaW5wdXRzCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnB1dC1ibGFuaywucS1zZWxlY3QnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsKICBlbC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsdXBkYXRlUHJvZ3Jlc3MpOwogIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsdXBkYXRlUHJvZ3Jlc3MpOwp9KTsKCi8vID09PT09IFN1Ym1pdCAmIEdyYWRlID09PT09CmZ1bmN0aW9uIGdldE1jcUFucyhxaWQpewogIHZhciBzZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0icScrcWlkKyciXTpjaGVja2VkJyk7CiAgcmV0dXJuIHNlbD9zZWwudmFsdWU6bnVsbDsKfQpmdW5jdGlvbiBnZXRJbnB1dEFucyhxaWQpewogIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsKICByZXR1cm4gZWw\/ZWwudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk6Jyc7Cn0KZnVuY3Rpb24gZ2V0U2VsZWN0QW5zKHFpZCl7CiAgdmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLXNlbGVjdFtkYXRhLXFpZD0iJytxaWQrJyJdJyk7CiAgcmV0dXJuIGVsP2VsLnZhbHVlOicnOwp9CmZ1bmN0aW9uIHRvdGFsUXMoKXtyZXR1cm4gNTV9CgpmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7CiAgdmFyIG49MDsKICAvLyBNQ1E6IFAxKDEtNSkgUDIoNi0xMCkgUDNhKDExLTE1KSBQNCgyMS0yNykgUDUoMjgtMzUpCiAgWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1XS5mb3JFYWNoKGZ1bmN0aW9uKHEpe2lmKGdldE1jcUFucyhxKSluKyt9KTsKICBbMTYsMTcsMTgsMTksMjBdLmZvckVhY2goZnVuY3Rpb24ocSl7aWYoZ2V0U2VsZWN0QW5zKHEpKW4rK30pOwogIC8vIGlucHV0cwogIGZvcih2YXIgaT0zNjtpPD01NTtpKyspe2lmKGdldElucHV0QW5zKGkpKW4rK30KICByZXR1cm4gbjsKfQpmdW5jdGlvbiB1cGRhdGVQcm9ncmVzcygpewogIHZhciBhPWFuc3dlcmVkQ291bnQoKSwgdG90YWw9dG90YWxRcygpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnN3ZXJlZENvdW50JykudGV4dENvbnRlbnQ9YTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ0ZpbGwnKS5zdHlsZS53aWR0aD0oYS90b3RhbCoxMDApKyclJzsKfQoKZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Ym1pdEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIHZhciBzY29yZT0wOwogIC8vIE1DUSBwYXJ0cwogIHZhciBtY3FQYXJ0cz1bUDEsUDIsUDNhLFA0LFA1XTsKICBtY3FQYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpewogICAgcGFydC5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgICB2YXIgdj1nZXRNY3FBbnMocS5uKSwgaXRlbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1pdGVtW2RhdGEtcWlkPSInK3EubisnIl0nKTsKICAgICAgaWYoIWl0ZW0pcmV0dXJuOwogICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7CiAgICAgIC8vIG1hcmsgY29ycmVjdC9pbmNvcnJlY3Qgb3B0cwogICAgICBpdGVtLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vcHQnKS5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIHZhciBMPW8uZGF0YXNldC5sZXR0ZXI7CiAgICAgICAgaWYoTD09PXEuYW5zKXtvLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyl9CiAgICAgICAgaWYodj09PUwpaWYoTCE9PXEuYW5zKXtvLmNsYXNzTGlzdC5hZGQoJ3dyb25nLW9wdCcpfQogICAgICB9KTsKICAgICAgdmFyIGZiPWl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJyk7CiAgICAgIGlmKHY9PT1xLmFucyl7c2NvcmUrKzsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGZiLnRleHRDb250ZW50PSdcdTI3MTQgQ29ycmVjdCBcdTIwMTQgJytxLmFuc30KICAgICAgZWxzZXtpdGVtLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGZiLnRleHRDb250ZW50PSdcdTI3MTggV3JvbmcgXHUyMDE0IGNvcnJlY3QgYW5zd2VyOiAnK3EuYW5zICsgKHY\/KCcgKHlvdSBjaG9zZSAnK3YrJyknKTonIChubyBhbnN3ZXIpJyl9CiAgICB9KTsKICB9KTsKICAvLyBQYXJ0IDNiIHNlbGVjdHMKICB2YXIgcDNiRmI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQzYkZlZWRiYWNrJyk7CiAgcDNiRmIuaW5uZXJIVE1MPScnOwogIE9iamVjdC5rZXlzKFAzYkFucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0U2VsZWN0QW5zKHFpZCksIGNvcnJlY3Q9UDNiQW5zW3FpZF07CiAgICB2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtc2VsZWN0W2RhdGEtcWlkPSInK3FpZCsnIl0nKTsKICAgIGlmKGVsKXtlbC5zdHlsZS5ib3JkZXJDb2xvcj0odj09PWNvcnJlY3Q\/JyMxMEI5ODEnOicjRUY0NDQ0Jyk7IGVsLnN0eWxlLmJvcmRlcldpZHRoPScycHgnOyBlbC5zdHlsZS5ib3JkZXJTdHlsZT0nc29saWQnfQogICAgdmFyIG5vdGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBub3RlLnN0eWxlLmNzc1RleHQ9J3BhZGRpbmc6OHB4IDEycHg7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luLXRvcDo2cHg7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MDA7Jysodj09PWNvcnJlY3Q\/J2JhY2tncm91bmQ6cmdiYSgxNiwxODUsMTI5LC4xMik7Y29sb3I6IzA2NUY0Nic6J2JhY2tncm91bmQ6cmdiYSgyMzksNjgsNjgsLjEwKTtjb2xvcjojOTkxQjFCJyk7CiAgICBub3RlLmlubmVySFRNTD0nPGI+UScrcWlkKyc8L2I+OiAnKyh2PT09Y29ycmVjdD8nXHUyNzE0IENvcnJlY3QgKCcrY29ycmVjdCsnKSc6J1x1MjcxOCBXcm9uZyBcdTIwMTQgY29ycmVjdDogJytjb3JyZWN0Kyh2PycsIHlvdSBjaG9zZSAnK3Y6Jywgbm8gYW5zd2VyJykpOwogICAgcDNiRmIuYXBwZW5kQ2hpbGQobm90ZSk7CiAgICBpZih2PT09Y29ycmVjdClzY29yZSsrOwogIH0pOwogIC8vIFBhcnQgNgogIFA2LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgdj1nZXRJbnB1dEFucyhxLm4pLCBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3EubisnIl0nKSwgaXRlbT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1pdGVtW2RhdGEtcWlkPSInK3EubisnIl0nKTsKICAgIGlmKCFlbHx8IWl0ZW0pcmV0dXJuOwogICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOwogICAgdmFyIG9rPSh2PT09cS5hbnMudG9Mb3dlckNhc2UoKSk7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKS50ZXh0Q29udGVudD0nXHUyNzE0IENvcnJlY3QnfQogICAgZWxzZXtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGl0ZW0ucXVlcnlTZWxlY3RvcignLmZlZWRiYWNrJykudGV4dENvbnRlbnQ9J1x1MjcxOCBXcm9uZyBcdTIwMTQgY29ycmVjdDogJytxLmFuc30KICB9KTsKICAvLyBQYXJ0IDcKICBPYmplY3Qua2V5cyhQN0FucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA3QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpfSBlbHNlIHtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBlbC50aXRsZT0nQ29ycmVjdDogJythY2NlcHRlZC5qb2luKCcgLyAnKX0KICB9KTsKICAvLyBQYXJ0IDgKICBPYmplY3Qua2V5cyhQOEFucykuZm9yRWFjaChmdW5jdGlvbihxaWQpewogICAgdmFyIHY9Z2V0SW5wdXRBbnMocWlkKSwgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rW2RhdGEtcT0iJytxaWQrJyJdJyksIGFjY2VwdGVkPVA4QW5zW3FpZF07CiAgICBpZighZWwpcmV0dXJuOwogICAgdmFyIG9rPWFjY2VwdGVkLmluZGV4T2Yodik+PTA7CiAgICBpZihvayl7c2NvcmUrKzsgZWwuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpfSBlbHNlIHtlbC5jbGFzc0xpc3QuYWRkKCd3cm9uZycpOyBlbC50aXRsZT0nQ29ycmVjdDogJythY2NlcHRlZC5qb2luKCcgLyAnKX0KICB9KTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlTm93JykudGV4dENvbnRlbnQ9c2NvcmU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbmFsU2NvcmUnKS50ZXh0Q29udGVudD1zY29yZTsKICB2YXIgcGN0PU1hdGgucm91bmQoc2NvcmUvNTUqMTAwKTsKICB2YXIgbXNnPScnOwogIGlmKHBjdD49ODUpIG1zZz0nXHV7MUYzQzZ9IEV4Y2VsbGVudCEgWW91IGFyZSB3ZWxsIHByZXBhcmVkIGZvciB0aGUgcmVhbCBLRVQgZXhhbS4nOwogIGVsc2UgaWYocGN0Pj03MCkgbXNnPSdcdXsxRjQ0RH0gR29vZCBqb2IhIEEgZmV3IG1vcmUgdGVzdHMgYW5kIHlvdSB3aWxsIGJlIHJlYWR5Lic7CiAgZWxzZSBpZihwY3Q+PTUwKSBtc2c9J1x1ezFGNERBfSBLZWVwIHByYWN0aXNpbmcgXHUyMDE0IHJldmlldyB0aGUgd3JvbmcgYW5zd2VycyBhYm92ZS4nOwogIGVsc2UgbXNnPSdcdXsxRjRBQX0gU3RhcnQgd2l0aCB0aGUgYmFzaWNzLiBSZXJlYWQgdGhlIHBhc3NhZ2VzIGFuZCB0cnkgYWdhaW4uJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c01zZycpLnRleHRDb250ZW50PW1zZzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c0Jhbm5lcicpLmNsYXNzTGlzdC5hZGQoJ3Nob3cnKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHNCYW5uZXInKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J2NlbnRlcid9KX0sMTIwKTsKfSk7Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXRCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICBpZighY29uZmlybSgnUmVzZXQgYWxsIGFuc3dlcnM\/JykpcmV0dXJuOwogIGxvY2F0aW9uLnJlbG9hZCgpOwp9KTsKCi8vIFdyaXRpbmcgd29yZCBjb3VudGVyCnZhciB0YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd3JpdGluZ0FyZWEnKSx3Yz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2NDb3VudGVyJyk7CnRhLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpewogIHZhciB3PXRhLnZhbHVlLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aDsKICB3Yy50ZXh0Q29udGVudD13Kycgd29yZHMgXHUwMEI3IHRhcmdldCAyNVx1MjAxMzM1JzsKICB3Yy5jbGFzc0xpc3QucmVtb3ZlKCdvaycsJ292ZXInKTsKICBpZih3Pj0yNSlpZih3PD0zNSl3Yy5jbGFzc0xpc3QuYWRkKCdvaycpOwogIGVsc2UgaWYodz4zNSl3Yy5jbGFzc0xpc3QuYWRkKCdvdmVyJyk7Cn0pOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FtcGxlVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbXBsZUJveCcpLmNsYXNzTGlzdC50b2dnbGUoJ3Nob3cnKTsKfSk7CgovLyA9PT09PSBTSE9XIEFOU1dFUiBQRVItUSBGRUFUVVJFID09PT09CmZ1bmN0aW9uIGdldEFuc0ZvclEobil7CiAgaWYobj49MSkgaWYobjw9NSkgcmV0dXJuIChQMS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49NikgaWYobjw9MTApIHJldHVybiAoUDIuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTExKSBpZihuPD0xNSkgcmV0dXJuIChQM2EuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIGlmKG4+PTIxKSBpZihuPD0yNykgcmV0dXJuIChQNC5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49MjgpIGlmKG48PTM1KSByZXR1cm4gKFA1LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICByZXR1cm4gbnVsbDsKfQovLyBNQ1EgcS1pdGVtczogYXBwZW5kIFNob3cgQW5zd2VyIGJ1dHRvbgpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucS1pdGVtJykuZm9yRWFjaChmdW5jdGlvbihpdGVtKXsKICBpZihpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5zaG93LWFucy1idG4nKSkgcmV0dXJuOwogIHZhciBxaWQ9cGFyc2VJbnQoaXRlbS5kYXRhc2V0LnFpZCk7CiAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4nOyBidG4udHlwZT0nYnV0dG9uJzsKICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gU2hvdyBBbnN3ZXInOwogIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciBpc1A2PWZhbHNlOyBpZihxaWQ+PTM2KSBpZihxaWQ8PTQwKSBpc1A2PXRydWU7CiAgICBpZihpc1A2KXsKICAgICAgLy8gUGFydCA2IHNwZWxsIGlucHV0CiAgICAgIHZhciBwNnE9UDYuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09cWlkfSk7CiAgICAgIHZhciBpbnB1dD1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFuaycpOwogICAgICBpZihpbnB1dCkgaWYocDZxKXtpbnB1dC52YWx1ZT1wNnEuYW5zOyBpbnB1dC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTt9CiAgICAgIHZhciBmYjY9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYoZmI2KSBpZihwNnEpe2l0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsgaXRlbS5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGZiNi50ZXh0Q29udGVudD0nXHV7MUY0NDF9IEFuc3dlcjogJytwNnEuYW5zO30KICAgIH0gZWxzZSB7CiAgICAgIHZhciBhbnM9Z2V0QW5zRm9yUShxaWQpOwogICAgICBpZighYW5zKSByZXR1cm47CiAgICAgIC8vIGhpZ2hsaWdodCBjb3JyZWN0IG9wdGlvbgogICAgICB2YXIgY29ycmVjdE9wdD1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5vcHRbZGF0YS1sZXR0ZXI9IicrYW5zKyciXScpOwogICAgICBpZihjb3JyZWN0T3B0KXtjb3JyZWN0T3B0LmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3Qtb3B0Jyk7fQogICAgICAvLyBzaW11bGF0ZSBjbGljayBzbyB1cGRhdGVQcm9ncmVzcyBmaXJlcwogICAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYoZmIpe2l0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsgZmIuc3R5bGUuYmFja2dyb3VuZD0ncmdiYSgxNiwxODUsMTI5LC4xMiknOyBmYi5zdHlsZS5jb2xvcj0nIzA2NUY0Nic7IGZiLnRleHRDb250ZW50PSdcdXsxRjQ0MX0gQW5zd2VyOiAnK2Fuczt9CiAgICB9CiAgICBidG4uZGlzYWJsZWQ9dHJ1ZTsKICB9KTsKICBpdGVtLmFwcGVuZENoaWxkKGJ0bik7Cn0pOwovLyBQYXJ0IDNiIHNlbGVjdHM6IGFwcGVuZCBpbmxpbmUgU2hvdyBBbnN3ZXIgYnV0dG9uClsxNiwxNywxOCwxOSwyMF0uZm9yRWFjaChmdW5jdGlvbihxaWQpewogIHZhciBzZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtc2VsZWN0W2RhdGEtcWlkPSInK3FpZCsnIl0nKTsKICBpZighc2VsKSByZXR1cm47CiAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4taW5saW5lJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgdmFyIGFucz1QM2JBbnNbcWlkXTsKICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gJythbnM7CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgc2VsLnZhbHVlPWFuczsgc2VsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnKSk7CiAgICBzZWwuc3R5bGUuYm9yZGVyQ29sb3I9JyMxMEI5ODEnOyBzZWwuc3R5bGUuYm9yZGVyV2lkdGg9JzJweCc7IHNlbC5zdHlsZS5ib3JkZXJTdHlsZT0nc29saWQnOwogICAgYnRuLmRpc2FibGVkPXRydWU7CiAgfSk7CiAgc2VsLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBidG4pOwp9KTsKLy8gUGFydCA3ICYgOCBpbnB1dHM6IGFwcGVuZCBpbmxpbmUgU2hvdyBBbnN3ZXIgYnV0dG9uCmZvcih2YXIgcWk9NDE7cWk8PTU1O3FpKyspewogIChmdW5jdGlvbihxaWQpewogICAgdmFyIGlucD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKTsKICAgIGlmKCFpbnApIHJldHVybjsKICAgIHZhciBhbnM9KHFpZDw9NTApP1A3QW5zW3FpZF1bMF06UDhBbnNbcWlkXVswXTsKICAgIHZhciBidG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICBidG4uY2xhc3NOYW1lPSdzaG93LWFucy1idG4taW5saW5lJzsgYnRuLnR5cGU9J2J1dHRvbic7CiAgICBidG4uaW5uZXJIVE1MPSdcdXsxRjQ0MX0gJythbnM7CiAgICBidG4udGl0bGU9J0NsaWNrIHRvIGZpbGw6ICcrYW5zOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBpbnAudmFsdWU9YW5zOyBpbnAuY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpbnAuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpOwogICAgICBidG4uZGlzYWJsZWQ9dHJ1ZTsKICAgIH0pOwogICAgaW5wLmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCBidG4pOwogIH0pKHFpKTsKfQoKfSkoKTsK'));<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>All English 4U Grammar IELTS TOEFL Cambridge CELPIP Dictation Back Grammar IELTS TOEFL Cambridge CELPIP Dictation Cambridge English &#183; Key (KET) KET 4 &#8212; Test 1Reading &amp; Writing Practise the full A2 Key Reading &amp; Writing paper &#8212; 9 parts, 56 questions, instant auto-grading. Test yourself like the real exam, then check answers and learn [&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-3835","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3835","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=3835"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3835\/revisions"}],"predecessor-version":[{"id":5914,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/3835\/revisions\/5914"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=3835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}