{"id":4612,"date":"2026-06-24T03:36:59","date_gmt":"2026-06-24T03:36:59","guid":{"rendered":"https:\/\/allenglish4u.com\/cambridge-ket-7-test-2-rw\/"},"modified":"2026-07-05T02:44:03","modified_gmt":"2026-07-05T02:44:03","slug":"cambridge-ket-7-test-2-rw","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/cambridge-ket-7-test-2-rw\/","title":{"rendered":"Cambridge KET 7 Test 2 \u2013 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\n\/* Submit panel *\/\n.submit-panel{margin:40px auto 24px;background:linear-gradient(135deg,#fff,var(--light-1));border:1.5px solid var(--border);padding:30px;border-radius:22px;text-align:center;max-width:720px;box-shadow:0 4px 20px rgba(0,0,0,.06)}\n.submit-panel h3{font-family:'Fraunces',serif !important;font-size:24px;margin-bottom:8px;color:var(--text)}\n.submit-panel p.intro{color:var(--muted);margin-bottom:18px;font-size:14.5px}\n.submit-panel .sp-buttons{display:flex;gap:14px;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(139,92,246,.35);cursor:pointer;transition:transform .15s ease}\n.btn-submit-big:hover{transform:translateY(-2px)}\n.btn-reset-big{padding:14px 24px;border-radius:999px;background:#fff;color:var(--text);font-weight:700;font-size:14.5px;border:1.5px solid var(--border);cursor:pointer}\n.btn-reset-big:hover{background:var(--light-1)}\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 7 &#8212; Test 2<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><b>Zoo shop<\/b><br><sub style=\"font-size:11px;font-weight:600\">Great prices on all animal books<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">B<\/span><b>Meet the penguins!<\/b><br><sub style=\"font-size:11px;font-weight:600\">2 p.m. \/ 4 p.m. &#8211; Only 6 tickets available for each time<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">C<\/span>Spend a day with elephants or giraffes &#8211; &#163;3<br><sub style=\"font-size:11px;font-weight:600;font-style:italic\">Adults only<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">D<\/span><b>Monkey house closed<\/b><br>until next June<\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">E<\/span>Fish from South America<br><sub style=\"font-size:11px;font-weight:600\">Children &#8211; please do not hit the glass<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">F<\/span><b>Playground<\/b><br><sub style=\"font-size:11px;font-weight:600\">For children aged 3&#8211;11 only &#8211; &#163;2.50 per child<\/sub><\/div>\n      <div class=\"notice\"><span class=\"notice-letter\">G<\/span><b>Birthday parties at the Zoo<\/b><br><sub style=\"font-size:11px;font-weight:600\">For prices, visit reception or go online<\/sub><\/div>\n      <div class=\"notice\" style=\"opacity:.55\"><span class=\"notice-letter\">H<\/span>Standing or sitting on the zoo walls is dangerous<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\">A girl who plays tennis<\/h2>\n        <p>Read the sentences (6&#8211;10) about a girl who plays tennis. 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> Sharon has played tennis since she was a little girl and is now <u>quite<\/u> good. <b>(Answer: C)<\/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\">Going to a party: Alice &amp; Sarah<\/h2>\n        <p>Complete the conversation. What does Sarah say to Alice? 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>Alice:<\/b> Hi Sarah, are you going to Grace&#8217;s party tomorrow?<\/p>\n      <p><b>Sarah:<\/b> <span style=\"color:var(--accent-1);font-weight:700\">(Example: H)<\/span><\/p>\n      <p><b>Alice:<\/b> Oh, come on! It&#8217;ll be fun.<\/p>\n      <p><b>Sarah:<\/b> <select class=\"q-select\" data-qid=\"16\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><\/select><\/p>\n      <p><b>Alice:<\/b> I&#8217;m driving, and there&#8217;s still space in my car.<\/p>\n      <p><b>Sarah:<\/b> <select class=\"q-select\" data-qid=\"17\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><\/select><\/p>\n      <p><b>Alice:<\/b> I bought one &#8211; we can say it&#8217;s from both of us.<\/p>\n      <p><b>Sarah:<\/b> <select class=\"q-select\" data-qid=\"18\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><\/select><\/p>\n      <p><b>Alice:<\/b> Great &#8211; I&#8217;ll write my name on it. Shall I pick you up at 7 o&#8217;clock?<\/p>\n      <p><b>Sarah:<\/b> <select class=\"q-select\" data-qid=\"19\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><\/select><\/p>\n      <p><b>Alice:<\/b> Of course! By the way, I can&#8217;t stay too late at the party.<\/p>\n      <p><b>Sarah:<\/b> <select class=\"q-select\" data-qid=\"20\"><option value=\"\">&#8212; choose &#8212;<\/option><option>A<\/option><option>B<\/option><option>C<\/option><option>D<\/option><option>E<\/option><option>F<\/option><option>G<\/option><\/select><\/p>\n      <p><b>Alice:<\/b> Me too!<\/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> No problem &#8211; I have to work the next day anyway.<\/div>\n      <div><b>B<\/b> That&#8217;s fine. You know the way to my house, don&#8217;t you?<\/div>\n      <div><b>C<\/b> How many people are going to be there?<\/div>\n      <div><b>D<\/b> Oh, OK then. How are you getting there?<\/div>\n      <div><b>E<\/b> Great, I&#8217;ll go with you, then. What about a present?<\/div>\n      <div><b>F<\/b> It&#8217;s quite an expensive one.<\/div>\n      <div><b>G<\/b> Thanks. I&#8217;ll give you some money for that, and I&#8217;ll get a card.<\/div>\n      <div style=\"opacity:.5\"><b>H<\/b> I haven&#8217;t decided yet. <i>(example)<\/i><\/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\">My Bedroom<\/h2>\n        <p>Read the article about the bedrooms of three teenagers and then answer the questions. For questions 21&#8211;27, choose the correct person (<b>A<\/b> Robert, <b>B<\/b> James or <b>C<\/b> Harry).<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"passage\">\n      <h3>My Bedroom<\/h3>\n      <p><b style=\"color:var(--accent-2)\">A &#183; Robert<\/b><br>Robert likes his room to be tidy, but it&#8217;s difficult as it&#8217;s his brother&#8217;s bedroom too. When Robert is alone in the room he does his homework or listens to music. On the walls there are a few small posters. Robert wants to have more, and to paint the walls yellow, but his mother doesn&#8217;t agree. There are photographs of family holidays and his sister&#8217;s children. &#8216;I like my room best when they&#8217;re here. It gets untidy, but I don&#8217;t mind.&#8217;<\/p>\n      <p><b style=\"color:var(--accent-2)\">B &#183; James<\/b><br>James&#8217;s bedroom is painted in his favourite colour, yellow. He loves rugby, and there are several photos of him playing in the school team. &#8216;After school I like to come up here to play computer games. My room&#8217;s like my safe place. I can relax here.&#8217; James keeps his room tidy. His school work is on one shelf, and on another he has all his books.<\/p>\n      <p><b style=\"color:var(--accent-2)\">C &#183; Harry<\/b><br>&#8216;After school I come up here and chat to everyone I know on the computer,&#8217; says Harry. &#8216;I never work in here &#8211; I study in the kitchen.&#8217; He has a big desk with a laptop in the middle, a PC on one side and a lamp on the other. On the walls there are two posters of his favourite tennis stars. &#8216;I don&#8217;t do much sport but I like watching tennis.&#8217;<\/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> Whose room has yellow walls? &#8594; <b>B (James)<\/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\">Cheetahs &#8212; gap fill<\/h2>\n        <p>Read the article about cheetahs. Choose the best word (A, B or C) for each space.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"cloze-passage\">\n      <h3>Cheetahs<\/h3>\n      <p>Most wild cheetahs <u><b style=\"color:var(--accent-1)\">are<\/b><\/u> found in eastern and south-western Africa. When running, they can go from 0 to 100 kilometres an hour <span data-q=\"28\" class=\"cloze-blank\">[28]<\/span> only three seconds. They can&#8217;t run this <span data-q=\"29\" class=\"cloze-blank\">[29]<\/span> for very long, however, and usually stop <span data-q=\"30\" class=\"cloze-blank\">[30]<\/span> about a minute. Cheetahs can also see very well, <span data-q=\"31\" class=\"cloze-blank\">[31]<\/span> is useful when they are <span data-q=\"32\" class=\"cloze-blank\">[32]<\/span> to catch small animals.<\/p>\n      <p>Female cheetahs usually have three cubs at a time. These stay with their mother for between one and a half to two years. They spend most of this time playing together or learning <span data-q=\"33\" class=\"cloze-blank\">[33]<\/span> to catch small animals. Male cheetahs live alone or in small groups, <span data-q=\"34\" class=\"cloze-blank\">[34]<\/span> with their brothers. Cheetahs are not as big as other members <span data-q=\"35\" class=\"cloze-blank\">[35]<\/span> the cat family, such as lions or tigers, and only weigh 45&#8211;60 kilograms.<\/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\">Travel words &#8212; spell the word<\/h2>\n        <p>Read the descriptions (36&#8211;40) of some travel words. The first letter is given. Type the word. <b>Example (0):<\/b> You need to buy this before you travel on a bus or train. &#8594; <b>ticket<\/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 email<\/h2>\n        <p>Read the email from Parveen to her friend Marta. Type <b>ONE word<\/b> for each space (41&#8211;50). (Example: <i>you<\/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        <div style=\"border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px\"><b>From:<\/b> Parveen<br><b>To:<\/b> Marta<\/div>\n        <p>Hi Marta,<\/p>\n        <p>I hope (Example: <u>you<\/u>) are well. I was trying <input class=\"input-blank\" data-q=\"41\" type=\"text\"> call you yesterday but you didn&#8217;t answer. Is your phone broken, <input class=\"input-blank\" data-q=\"42\" type=\"text\"> have you lost it again? Anyway, I wanted to ask <input class=\"input-blank\" data-q=\"43\" type=\"text\"> you can come to my birthday party next Saturday. My birthday was actually two weeks <input class=\"input-blank\" data-q=\"44\" type=\"text\">, but I couldn&#8217;t have the party then <input class=\"input-blank\" data-q=\"45\" type=\"text\"> lots of people were <input class=\"input-blank\" data-q=\"46\" type=\"text\"> holiday.<\/p>\n        <p>I&#8217;ve invited <input class=\"input-blank\" data-q=\"47\" type=\"text\"> few people from our swimming club, as well as my friends from school. <input class=\"input-blank\" data-q=\"48\" type=\"text\"> you think your brother <input class=\"input-blank\" data-q=\"49\" type=\"text\"> free that day? Please invite <input class=\"input-blank\" data-q=\"50\" type=\"text\"> to come too. The party&#8217;s at my house and starts at 8 p.m.<\/p>\n        <p>Parveen<\/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\">Lin&#8217;s notes &#8212; cinema this weekend<\/h2>\n        <p>Read the advertisement and the email. Fill in the information in Lin&#8217;s notes (51&#8211;55).<\/p>\n      <\/div>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-bottom:18px\">\n      <div style=\"background:#fff;border:2px solid var(--text);border-radius:12px;padding:16px 18px;font-size:14px;line-height:1.6;height:fit-content\">\n        <div style=\"text-align:center;font-weight:800;letter-spacing:.03em\">REDWOOD CINEMA<\/div>\n        <div style=\"text-align:center;font-style:italic\">Special showings this weekend<\/div>\n        <div style=\"margin-top:8px\"><b>Rosy&#8217;s Story<\/b><br>Saturday 8 p.m. \/ Sunday 3 p.m.<\/div>\n        <div style=\"margin-top:8px\"><b>Storm<\/b><br>Saturday 9 p.m. \/ Sunday 7 p.m.<\/div>\n        <div style=\"margin-top:8px\">Adults: &#163;8.00 &nbsp; Students\/Children: &#163;5.00<\/div>\n      <\/div>\n      <div style=\"background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:16px 18px;font-size:14px;line-height:1.6\">\n        <div style=\"border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:10px\"><b>From:<\/b> Ines<br><b>To:<\/b> Lin<\/div>\n        <p style=\"margin-bottom:0\">My sister&#8217;s visiting this weekend, so there&#8217;ll be three of us going to the cinema instead of two. I&#8217;ve already seen Storm, so let&#8217;s see the other film. Let&#8217;s go in the evening, because we need to study during the day. Could you buy the tickets, as you have your student ID so we can get in cheaper.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"form-card\" style=\"max-width:620px\">\n      <h4>Lin&#8217;s notes &#8212; Cinema this weekend<\/h4>\n      <div class=\"form-row\"><label>Cinema:<\/label><span style=\"font-weight:600;color:var(--accent-2);font-style:italic\">Redwood<\/span><\/div>\n      <div class=\"form-row\"><label>Film:<\/label><input class=\"input-blank\" data-q=\"51\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Day:<\/label><input class=\"input-blank\" data-q=\"52\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Time:<\/label><input class=\"input-blank\" data-q=\"53\" type=\"text\" style=\"max-width:120px\"><span style=\"color:var(--muted)\">p.m.<\/span><\/div>\n      <div class=\"form-row\"><label>Number of tickets to get:<\/label><input class=\"input-blank\" data-q=\"54\" type=\"text\"><\/div>\n      <div class=\"form-row\"><label>Price per person: &#163;<\/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; email to Charley<\/h2>\n        <p>This part is <b>not auto-graded<\/b>. Write your email, 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>You are planning a picnic for next Saturday. Write an email to your English friend, Charley.<\/b>\n        <ul>\n          <li><b>invite<\/b> Charley to come<\/li>\n          <li>say <b>where<\/b> Charley should meet you<\/li>\n          <li>tell Charley <b>what to bring<\/b><\/li>\n        <\/ul>\n        Write 25&#8211;35 words.\n      <\/div>\n      <textarea class=\"writing-area\" id=\"writingArea\" placeholder=\"Type your email 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 points, no errors)<\/b>\n          <p style=\"margin-top:6px\">Hi Charley,<\/p>\n          <p>I&#8217;m having a picnic next Saturday &#8211; would you like to come? Let&#8217;s meet at the bus stop near the park at midday. Please bring some sandwiches and a ball so we can play! 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 Charley,<\/p>\n          <p>I make a picnic next Saturday. Do you want come? Meet me in front of my house at twelve o&#8217;clock. Please bring some drinks and a blanket to sit on. See you soon! 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 points)<\/b>\n          <p style=\"margin-top:6px\">Dear Charley,<\/p>\n          <p>I&#8217;m planning a picnic for next Saturday and I&#8217;d love you to come. Let&#8217;s meet at the train station at eleven o&#8217;clock. It will be a lovely day! Write back soon, 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 7 Test 2 &#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('CihmdW5jdGlvbigpewovLyA9PT09PSBIZWFkZXIgc2Nyb2xsID09PT09CnZhciBoZHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hkcicpOwp2YXIgc2V0U29saWQ9ZnVuY3Rpb24oKXtpZih3aW5kb3cuc2Nyb2xsWT40MCloZHIuY2xhc3NMaXN0LmFkZCgnc29saWQnKTtlbHNlIGhkci5jbGFzc0xpc3QucmVtb3ZlKCdzb2xpZCcpfTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc2V0U29saWQse3Bhc3NpdmU6dHJ1ZX0pO3NldFNvbGlkKCk7CgovLyBkcmF3ZXIKdmFyIGhhbWI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hhbWInKSxkcmF3ZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RyYXdlcicpLGRDbG9zZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHJhd2VyQ2xvc2UnKTsKaWYoaGFtYiloYW1iLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe2RyYXdlci5jbGFzc0xpc3QuYWRkKCdvcGVuJyl9KTsKaWYoZENsb3NlKWRDbG9zZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcmF3ZXIuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpfSk7CmlmKGRyYXdlcilkcmF3ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZHJhd2VyKWRyYXdlci5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyl9KTsKCi8vID09PT09IERBVEEgPT09PT0KdmFyIFAxID0gWwogIHtuOjEsdGV4dDonRm9yIHRoaXMgcHJpY2UsIHlvdSBjYW4gZ2V0IGNsb3NlIHRvIHNvbWUgYW5pbWFscy4nLG9wdHM6J0FCQ0RFRkcnLGFuczonQyd9LAogIHtuOjIsdGV4dDonVGhlcmUgYXJlIHR3byB3YXlzIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzLicsb3B0czonQUJDREVGRycsYW5zOidHJ30sCiAge246Myx0ZXh0OidUaGlzIGFjdGl2aXR5IGlzIGZvciBhIHNtYWxsIGdyb3VwIG9mIHBlb3BsZS4nLG9wdHM6J0FCQ0RFRkcnLGFuczonQid9LAogIHtuOjQsdGV4dDoiVGhpcyBwbGFjZSBpc24ndCBmb3IgYWR1bHRzIG9yIHRlZW5hZ2Vycy4iLG9wdHM6J0FCQ0RFRkcnLGFuczonRid9LAogIHtuOjUsdGV4dDonSXQgaXMgbm90IHBvc3NpYmxlIHRvIHNlZSB0aGVzZSBhbmltYWxzIHRvZGF5Licsb3B0czonQUJDREVGRycsYW5zOidEJ30sCl07CnZhciBQMiA9IFsKICB7bjo2LHRleHQ6J1NoYXJvbiBfX19fXyBhdCBoZXIgdGVubmlzIGNsdWIgZm91ciB0aW1lcyBhIHdlZWsuJyxvcHRzOltbJ0EnLCdqb2lucyddLFsnQicsJ2Vuam95cyddLFsnQycsJ3ByYWN0aXNlcyddXSxhbnM6J0MnfSwKICB7bjo3LHRleHQ6J1NoYXJvbiBfX19fXyBsb3RzIG9mIGNvbXBldGl0aW9ucyBhbmQgb2Z0ZW4gcGxheXMgdmVyeSB3ZWxsIGluIHRoZW0uJyxvcHRzOltbJ0EnLCdlbnRlcnMnXSxbJ0InLCd0YWtlcyddLFsnQycsJ2Vhcm5zJ11dLGFuczonQSd9LAogIHtuOjgsdGV4dDoiSXQncyBTaGFyb24ncyBiaXJ0aGRheSBzb29uIGFuZCBzaGUgaGFzIF9fX19fIGhlciBwYXJlbnRzIGZvciBhIG5ldyByYWNrZXQuIixvcHRzOltbJ0EnLCd0b2xkJ10sWydCJywnYXNrZWQnXSxbJ0MnLCdzcG9rZW4nXV0sYW5zOidCJ30sCiAge246OSx0ZXh0OidXaGVuIFNoYXJvbiBsb3NlcyBhIG1hdGNoLCBzaGUgYWx3YXlzIGZlZWxzIHZlcnkgX19fX18uJyxvcHRzOltbJ0EnLCd1cHNldCddLFsnQicsJ2RpZmZpY3VsdCddLFsnQycsJ3dvcnN0J11dLGFuczonQSd9LAogIHtuOjEwLHRleHQ6J1NoYXJvblx1MjAxOXMgZnJpZW5kIGhhcyBqdXN0IHN0YXJ0ZWQgcGxheWluZyB0ZW5uaXMgYW5kIFNoYXJvbiBpcyBoZWxwaW5nIGhlciB0byBfX19fXy4nLG9wdHM6W1snQScsJ2NvcHknXSxbJ0InLCdpbXByb3ZlJ10sWydDJywna25vdyddXSxhbnM6J0InfSwKXTsKdmFyIFAzYSA9IFsKICB7bjoxMSx0ZXh0OidIb3cgZGlkIHlvdSBnZXQgdG8gdGhlIHBhcnR5Pycsb3B0czpbWydBJywnSSBjYXVnaHQgYSBidXMuJ10sWydCJywnSXQgd2FzIGdyZWF0IHRoYW5rcy4nXSxbJ0MnLCdPbiBXZWRuZXNkYXkgSSB0aGluay4nXV0sYW5zOidBJ30sCiAge246MTIsdGV4dDonWXVyaSBwaG9uZWQgbWUgeWVzdGVyZGF5IGZyb20gSmFwYW4uJyxvcHRzOltbIkEiLCJXaG8ncyBjYWxsaW5nPyJdLFsnQicsJ0hvdyBpcyBzaGU\/J10sWydDJywnQ2FuIEkgbGVhdmUgYSBtZXNzYWdlPyddXSxhbnM6J0InfSwKICB7bjoxMyx0ZXh0OiJJcyB0aGF0IFN0ZWxsYSdzIG5ldyBtb2JpbGU\/IixvcHRzOltbIkEiLCJJIGNhbid0IGZpbmQgb25lLiJdLFsiQiIsIlNoZSBkaWRuJ3QgYW5zd2VyLiJdLFsiQyIsIlNoZSBoYXNuJ3QgYm91Z2h0IG9uZSB5ZXQuIl1dLGFuczonQyd9LAogIHtuOjE0LHRleHQ6IkknbSBnb2luZyBjbG90aGVzIHNob3BwaW5nIHRvbW9ycm93LiIsb3B0czpbWydBJywnQXJlIHRoZXkgaW4gdGhlIHRvd24gY2VudHJlPyddLFsnQicsJ0hvdyBsb25nIGlzIGl0PyddLFsnQycsJ1doYXQgZG8geW91IG5lZWQgdG8gZ2V0PyddXSxhbnM6J0MnfSwKICB7bjoxNSx0ZXh0OiJUaGUgbGlicmFyeSdzIGNsb3NlZCBhbHJlYWR5LiIsb3B0czpbWyJBIiwiSXQncyBhIHBpdHkgeW91IGNhbid0LiJdLFsnQicsJ0kgY2FuIHdhaXQgdW50aWwgdG9tb3Jyb3cuJ10sWydDJywnQ2FuIEkgYm9ycm93IGl0PyddXSxhbnM6J0InfSwKXTsKdmFyIFAzYkFucyA9IHsxNjonRCcsMTc6J0UnLDE4OidHJywxOTonQicsMjA6J0EnfTsKdmFyIFA0ID0gWwogIHtuOjIxLHRleHQ6J1dobyBoYXMgbW9yZSB0aGFuIG9uZSBjb21wdXRlciBpbiBoaXMgcm9vbT8nLG9wdHM6W1snQScsJ1JvYmVydCddLFsnQicsJ0phbWVzJ10sWydDJywnSGFycnknXV0sYW5zOidDJ30sCiAge246MjIsdGV4dDonV2hvIHdvdWxkIGxpa2UgbW9yZSBwaWN0dXJlcyBvbiB0aGUgd2FsbHM\/JyxvcHRzOltbJ0EnLCdSb2JlcnQnXSxbJ0InLCdKYW1lcyddLFsnQycsJ0hhcnJ5J11dLGFuczonQSd9LAogIHtuOjIzLHRleHQ6J1dobyBoYXMgcGljdHVyZXMgb2YgaGltc2VsZiBkb2luZyBzcG9ydD8nLG9wdHM6W1snQScsJ1JvYmVydCddLFsnQicsJ0phbWVzJ10sWydDJywnSGFycnknXV0sYW5zOidCJ30sCiAge246MjQsdGV4dDonV2hvIHNoYXJlcyBoaXMgcm9vbSB3aXRoIHNvbWVvbmUgZWxzZT8nLG9wdHM6W1snQScsJ1JvYmVydCddLFsnQicsJ0phbWVzJ10sWydDJywnSGFycnknXV0sYW5zOidBJ30sCiAge246MjUsdGV4dDoiV2hvIHRhbGtzIHRvIGZyaWVuZHMgd2hlbiBoZSdzIGluIGhpcyByb29tPyIsb3B0czpbWydBJywnUm9iZXJ0J10sWydCJywnSmFtZXMnXSxbJ0MnLCdIYXJyeSddXSxhbnM6J0MnfSwKICB7bjoyNix0ZXh0OidXaG8gc29tZXRpbWVzIGhhcyB2aXNpdG9ycyB0byBoaXMgcm9vbT8nLG9wdHM6W1snQScsJ1JvYmVydCddLFsnQicsJ0phbWVzJ10sWydDJywnSGFycnknXV0sYW5zOidBJ30sCiAge246MjcsdGV4dDonV2hvIHN0dWRpZXMgaW4gaGlzIGJlZHJvb20\/JyxvcHRzOltbJ0EnLCdSb2JlcnQnXSxbJ0InLCdKYW1lcyddLFsnQycsJ0hhcnJ5J11dLGFuczonQid9LApdOwp2YXIgUDUgPSBbCiAge246Mjgsb3B0czpbWydBJywnb24nXSxbJ0InLCdpbiddLFsnQycsJ2F0J11dLGFuczonQid9LAogIHtuOjI5LG9wdHM6W1snQScsJ2Zhc3QnXSxbJ0InLCdmYXN0ZXInXSxbJ0MnLCdmYXN0ZXN0J11dLGFuczonQSd9LAogIHtuOjMwLG9wdHM6W1snQScsJ2FmdGVyJ10sWydCJywndW50aWwnXSxbJ0MnLCdkdXJpbmcnXV0sYW5zOidBJ30sCiAge246MzEsb3B0czpbWydBJywnd2hvJ10sWydCJywnd2hlcmUnXSxbJ0MnLCd3aGljaCddXSxhbnM6J0MnfSwKICB7bjozMixvcHRzOltbJ0EnLCd0cnknXSxbJ0InLCd0cnlpbmcnXSxbJ0MnLCd0cmllZCddXSxhbnM6J0InfSwKICB7bjozMyxvcHRzOltbJ0EnLCdldmVyJ10sWydCJywneWV0J10sWydDJywnaG93J11dLGFuczonQyd9LAogIHtuOjM0LG9wdHM6W1snQScsJ2FscmVhZHknXSxbJ0InLCdleGFjdGx5J10sWydDJywnb2Z0ZW4nXV0sYW5zOidDJ30sCiAge246MzUsb3B0czpbWydBJywnb2YnXSxbJ0InLCdieSddLFsnQycsJ3RvJ11dLGFuczonQSd9LApdOwp2YXIgUDYgPSBbCiAge246MzYsdGV4dDonWW91IGdvIG9uIHRoaXMgd2hlbiB5b3UgZmx5IGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIuJyxmaXJzdDoncCcsYW5zOidwbGFuZSd9LAogIHtuOjM3LHRleHQ6J1lvdSBnbyB0byB0aGlzIHBsYWNlIHdoZW4geW91IG5lZWQgdG8gY2F0Y2ggYSB0cmFpbiBvciBjb2FjaC4nLGZpcnN0OidzJyxhbnM6J3N0YXRpb24nfSwKICB7bjozOCx0ZXh0OidXaGVuIHlvdSBhcnJpdmUgaW4gYSBuZXcgY291bnRyeSwgeW91IG1heSBoYXZlIHRvIHNob3cgdGhpcy4nLGZpcnN0OidwJyxhbnM6J3Bhc3Nwb3J0J30sCiAge246MzksdGV4dDonSWYgeW91IGxvb2sgYXQgdGhpcywgaXQgd2lsbCBoZWxwIHlvdSBmaW5kIHlvdXIgd2F5IGFyb3VuZCBhIG5ldyBjaXR5LicsZmlyc3Q6J20nLGFuczonbWFwJ30sCiAge246NDAsdGV4dDonWW91IGFycml2ZSBoZXJlIHdoZW4geW91IGZseSBpbnRvIGFub3RoZXIgY291bnRyeS4nLGZpcnN0OidhJyxhbnM6J2FpcnBvcnQnfSwKXTsKdmFyIFA3QW5zID0gewogIDQxOlsndG8nXSwKICA0MjpbJ29yJ10sCiAgNDM6WydpZicsJ3doZXRoZXInXSwKICA0NDpbJ2FnbyddLAogIDQ1OlsnYmVjYXVzZScsJ2FzJ10sCiAgNDY6WydvbiddLAogIDQ3OlsnYSddLAogIDQ4OlsnZG8nXSwKICA0OTpbJ2lzJ10sCiAgNTA6WydoaW0nXSwKfTsKdmFyIFA4QW5zID0gewogIDUxOlsicm9zeSdzIHN0b3J5Iiwicm9zeXMgc3RvcnkiLCJyb3N5IHN0b3J5Il0sCiAgNTI6WydzYXR1cmRheScsJ3NhdCddLAogIDUzOlsnOCcsJzggcC5tLicsJzhwbScsJzggcG0nLCdlaWdodCcsImVpZ2h0IG8nY2xvY2siLCc4LjAwJywnOC4wMCBwLm0uJ10sCiAgNTQ6WyczJywndGhyZWUnLCd0aHJlZSB0aWNrZXRzJ10sCiAgNTU6Wyc1JywnXHUwMEEzNScsJ2ZpdmUnLCdmaXZlIHBvdW5kcycsJ1x1MDBBMzUuMDAnXSwKfTsKCi8vID09PT09IFJlbmRlcmluZyA9PT09PQpmdW5jdGlvbiByZW5kZXJNQ1EobGlzdEVsLCBkYXRhKXsKICBkYXRhLmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICB2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmNsYXNzTmFtZT0ncS1pdGVtJzsgZGl2LmRhdGFzZXQucWlkPXEubjsKICAgIHZhciBvcHRzSFRNTD0nJzsKICAgIGlmKEFycmF5LmlzQXJyYXkocS5vcHRzKSl7CiAgICAgIHEub3B0cy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIG9wdHNIVE1MICs9ICc8bGFiZWwgY2xhc3M9Im9wdCIgZGF0YS1sZXR0ZXI9Iicrb1swXSsnIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InEnK3EubisnIiB2YWx1ZT0iJytvWzBdKyciPjxzcGFuIGNsYXNzPSJvcHQtbGV0dGVyIj4nK29bMF0rJzwvc3Bhbj4gJytlc2NhcGVIdG1sKG9bMV0pKyc8L2xhYmVsPic7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgLy8gc3RyaW5nIG9mIGxldHRlcnMgKFAxKQogICAgICBmb3IodmFyIGk9MDtpPHEub3B0cy5sZW5ndGg7aSsrKXsKICAgICAgICB2YXIgTD1xLm9wdHNbaV07CiAgICAgICAgb3B0c0hUTUwgKz0gJzxsYWJlbCBjbGFzcz0ib3B0IiBkYXRhLWxldHRlcj0iJytMKyciPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icScrcS5uKyciIHZhbHVlPSInK0wrJyI+PHNwYW4gY2xhc3M9Im9wdC1sZXR0ZXIiPicrTCsnPC9zcGFuPjwvbGFiZWw+JzsKICAgICAgfQogICAgfQogICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJxLXRleHQiPjxiIGNsYXNzPSJxbiI+JytxLm4rJy48L2I+PHNwYW4+Jytlc2NhcGVIdG1sKHEudGV4dCkrJzwvc3Bhbj48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJxLW9wdHMiPicrb3B0c0hUTUwrJzwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZlZWRiYWNrIj48L2Rpdj4nOwogICAgbGlzdEVsLmFwcGVuZENoaWxkKGRpdik7CiAgfSk7Cn0KZnVuY3Rpb24gZXNjYXBlSHRtbChzKXtyZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoL1smPD4iJ10vZyxmdW5jdGlvbihjKXtyZXR1cm4geycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnIic6JyZxdW90OycsIiciOicmIzM5Oyd9W2NdfSl9CgpyZW5kZXJNQ1EoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhcnQxTGlzdCcpLFAxKTsKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0Mkxpc3QnKSxQMik7CnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDNhTGlzdCcpLFAzYSk7CnJlbmRlck1DUShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDRMaXN0JyksUDQpOwoKLy8gUGFydCA1IFx1MjAxNCByZW5kZXIgYXMgTUNRIGxpc3QgdW5kZXIgdGhlIHBhc3NhZ2UKcmVuZGVyTUNRKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0NUxpc3QnKSxQNS5tYXAoZnVuY3Rpb24ocSl7cmV0dXJuIHtuOnEubix0ZXh0OidRdWVzdGlvbiAnK3EubisnIFx1MjAxNCBjaG9vc2UgdGhlIGJlc3Qgd29yZCBmb3IgdGhlIGdhcC4nLG9wdHM6cS5vcHRzLGFuczpxLmFuc319KSk7CgovLyBQYXJ0IDYgXHUyMDE0IGZpcnN0LWxldHRlciArIGRhc2hlcyArIGlucHV0CihmdW5jdGlvbigpewogIHZhciBsaXN0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJ0Nkxpc3QnKTsKICBQNi5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgdmFyIGRhc2hDb3VudCA9IHEuYW5zLmxlbmd0aCAtIDE7CiAgICB2YXIgZGFzaGVzID0gbmV3IEFycmF5KGRhc2hDb3VudCkuZmlsbCgnXycpLmpvaW4oJyAnKTsKICAgIHZhciBkaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGRpdi5jbGFzc05hbWU9J3EtaXRlbSc7IGRpdi5kYXRhc2V0LnFpZD1xLm47CiAgICBkaXYuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJxLXRleHQiPjxiIGNsYXNzPSJxbiI+JytxLm4rJy48L2I+PHNwYW4+Jytlc2NhcGVIdG1sKHEudGV4dCkrJzwvc3Bhbj48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0id29yZC1yb3ciPjxzcGFuIGNsYXNzPSJmaXJzdC1sZXR0ZXIiPicrcS5maXJzdCsnPC9zcGFuPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iaW5wdXQtYmxhbmsiIGRhdGEtcT0iJytxLm4rJyIgcGxhY2Vob2xkZXI9IicrZGFzaGVzKyciIHN0eWxlPSJtaW4td2lkdGg6MjAwcHgiPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmZWVkYmFjayI+PC9kaXY+JzsKICAgIGxpc3QuYXBwZW5kQ2hpbGQoZGl2KTsKICB9KTsKfSkoKTsKCi8vID09PT09IFdpcmUgb3B0aW9uIGNsaWNrcyA9PT09PQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvcHQpewogIG9wdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB2YXIgaW5wdXQ9b3B0LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7CiAgICB2YXIgZ3JvdXA9b3B0LnBhcmVudEVsZW1lbnQ7CiAgICBncm91cC5xdWVyeVNlbGVjdG9yQWxsKCcub3B0JykuZm9yRWFjaChmdW5jdGlvbihvKXtvLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyl9KTsKICAgIG9wdC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpOwogICAgaW5wdXQuY2hlY2tlZD10cnVlOwogICAgdXBkYXRlUHJvZ3Jlc3MoKTsKICB9KTsKfSk7CgovLyBpbnB1dHMKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmlucHV0LWJsYW5rLC5xLXNlbGVjdCcpLmZvckVhY2goZnVuY3Rpb24oZWwpewogIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0Jyx1cGRhdGVQcm9ncmVzcyk7CiAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyx1cGRhdGVQcm9ncmVzcyk7Cn0pOwoKLy8gPT09PT0gU3VibWl0ICYgR3JhZGUgPT09PT0KZnVuY3Rpb24gZ2V0TWNxQW5zKHFpZCl7CiAgdmFyIHNlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJxJytxaWQrJyJdOmNoZWNrZWQnKTsKICByZXR1cm4gc2VsP3NlbC52YWx1ZTpudWxsOwp9CmZ1bmN0aW9uIGdldElucHV0QW5zKHFpZCl7CiAgdmFyIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpOwogIHJldHVybiBlbD9lbC52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTonJzsKfQpmdW5jdGlvbiBnZXRTZWxlY3RBbnMocWlkKXsKICB2YXIgZWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnEtc2VsZWN0W2RhdGEtcWlkPSInK3FpZCsnIl0nKTsKICByZXR1cm4gZWw\/ZWwudmFsdWU6Jyc7Cn0KZnVuY3Rpb24gdG90YWxRcygpe3JldHVybiA1NX0KCmZ1bmN0aW9uIGFuc3dlcmVkQ291bnQoKXsKICB2YXIgbj0wOwogIC8vIE1DUTogUDEoMS01KSBQMig2LTEwKSBQM2EoMTEtMTUpIFA0KDIxLTI3KSBQNSgyOC0zNSkKICBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzVdLmZvckVhY2goZnVuY3Rpb24ocSl7aWYoZ2V0TWNxQW5zKHEpKW4rK30pOwogIFsxNiwxNywxOCwxOSwyMF0uZm9yRWFjaChmdW5jdGlvbihxKXtpZihnZXRTZWxlY3RBbnMocSkpbisrfSk7CiAgLy8gaW5wdXRzCiAgZm9yKHZhciBpPTM2O2k8PTU1O2krKyl7aWYoZ2V0SW5wdXRBbnMoaSkpbisrfQogIHJldHVybiBuOwp9CmZ1bmN0aW9uIHVwZGF0ZVByb2dyZXNzKCl7CiAgdmFyIGE9YW5zd2VyZWRDb3VudCgpLCB0b3RhbD10b3RhbFFzKCk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcmVkQ291bnQnKS50ZXh0Q29udGVudD1hOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9nRmlsbCcpLnN0eWxlLndpZHRoPShhL3RvdGFsKjEwMCkrJyUnOwp9Cgpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VibWl0QnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgdmFyIHNjb3JlPTA7CiAgLy8gTUNRIHBhcnRzCiAgdmFyIG1jcVBhcnRzPVtQMSxQMixQM2EsUDQsUDVdOwogIG1jcVBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCl7CiAgICBwYXJ0LmZvckVhY2goZnVuY3Rpb24ocSl7CiAgICAgIHZhciB2PWdldE1jcUFucyhxLm4pLCBpdGVtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLWl0ZW1bZGF0YS1xaWQ9IicrcS5uKyciXScpOwogICAgICBpZighaXRlbSlyZXR1cm47CiAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnYW5zd2VyZWQnKTsKICAgICAgLy8gbWFyayBjb3JyZWN0L2luY29ycmVjdCBvcHRzCiAgICAgIGl0ZW0ucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpLmZvckVhY2goZnVuY3Rpb24obyl7CiAgICAgICAgdmFyIEw9by5kYXRhc2V0LmxldHRlcjsKICAgICAgICBpZihMPT09cS5hbnMpe28uY2xhc3NMaXN0LmFkZCgnY29ycmVjdC1vcHQnKX0KICAgICAgICBpZih2PT09TClpZihMIT09cS5hbnMpe28uY2xhc3NMaXN0LmFkZCgnd3Jvbmctb3B0Jyl9CiAgICAgIH0pOwogICAgICB2YXIgZmI9aXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKTsKICAgICAgaWYodj09PXEuYW5zKXtzY29yZSsrOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgZmIudGV4dENvbnRlbnQ9J1x1MjcxNCBDb3JyZWN0IFx1MjAxNCAnK3EuYW5zfQogICAgICBlbHNle2l0ZW0uY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgZmIudGV4dENvbnRlbnQ9J1x1MjcxOCBXcm9uZyBcdTIwMTQgY29ycmVjdCBhbnN3ZXI6ICcrcS5hbnMgKyAodj8oJyAoeW91IGNob3NlICcrdisnKScpOicgKG5vIGFuc3dlciknKX0KICAgIH0pOwogIH0pOwogIC8vIFBhcnQgM2Igc2VsZWN0cwogIHZhciBwM2JGYj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFydDNiRmVlZGJhY2snKTsKICBwM2JGYi5pbm5lckhUTUw9Jyc7CiAgT2JqZWN0LmtleXMoUDNiQW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRTZWxlY3RBbnMocWlkKSwgY29ycmVjdD1QM2JBbnNbcWlkXTsKICAgIHZhciBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1zZWxlY3RbZGF0YS1xaWQ9IicrcWlkKyciXScpOwogICAgaWYoZWwpe2VsLnN0eWxlLmJvcmRlckNvbG9yPSh2PT09Y29ycmVjdD8nIzEwQjk4MSc6JyNFRjQ0NDQnKTsgZWwuc3R5bGUuYm9yZGVyV2lkdGg9JzJweCc7IGVsLnN0eWxlLmJvcmRlclN0eWxlPSdzb2xpZCd9CiAgICB2YXIgbm90ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIG5vdGUuc3R5bGUuY3NzVGV4dD0ncGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjhweDttYXJnaW4tdG9wOjZweDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjYwMDsnKyh2PT09Y29ycmVjdD8nYmFja2dyb3VuZDpyZ2JhKDE2LDE4NSwxMjksLjEyKTtjb2xvcjojMDY1RjQ2JzonYmFja2dyb3VuZDpyZ2JhKDIzOSw2OCw2OCwuMTApO2NvbG9yOiM5OTFCMUInKTsKICAgIG5vdGUuaW5uZXJIVE1MPSc8Yj5RJytxaWQrJzwvYj46ICcrKHY9PT1jb3JyZWN0PydcdTI3MTQgQ29ycmVjdCAoJytjb3JyZWN0KycpJzonXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0OiAnK2NvcnJlY3QrKHY\/JywgeW91IGNob3NlICcrdjonLCBubyBhbnN3ZXInKSk7CiAgICBwM2JGYi5hcHBlbmRDaGlsZChub3RlKTsKICAgIGlmKHY9PT1jb3JyZWN0KXNjb3JlKys7CiAgfSk7CiAgLy8gUGFydCA2CiAgUDYuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgIHZhciB2PWdldElucHV0QW5zKHEubiksIGVsPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcS5uKyciXScpLCBpdGVtPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xLWl0ZW1bZGF0YS1xaWQ9IicrcS5uKyciXScpOwogICAgaWYoIWVsfHwhaXRlbSlyZXR1cm47CiAgICBpdGVtLmNsYXNzTGlzdC5hZGQoJ2Fuc3dlcmVkJyk7CiAgICB2YXIgb2s9KHY9PT1xLmFucy50b0xvd2VyQ2FzZSgpKTsKICAgIGlmKG9rKXtzY29yZSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnY29ycmVjdCcpOyBpdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpLnRleHRDb250ZW50PSdcdTI3MTQgQ29ycmVjdCd9CiAgICBlbHNle2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGl0ZW0uY2xhc3NMaXN0LmFkZCgnd3JvbmcnKTsgaXRlbS5xdWVyeVNlbGVjdG9yKCcuZmVlZGJhY2snKS50ZXh0Q29udGVudD0nXHUyNzE4IFdyb25nIFx1MjAxNCBjb3JyZWN0OiAnK3EuYW5zfQogIH0pOwogIC8vIFBhcnQgNwogIE9iamVjdC5rZXlzKFA3QW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRJbnB1dEFucyhxaWQpLCBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKSwgYWNjZXB0ZWQ9UDdBbnNbcWlkXTsKICAgIGlmKCFlbClyZXR1cm47CiAgICB2YXIgb2s9YWNjZXB0ZWQuaW5kZXhPZih2KT49MDsKICAgIGlmKG9rKXtzY29yZSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FjY2VwdGVkLmpvaW4oJyAvICcpfQogIH0pOwogIC8vIFBhcnQgOAogIE9iamVjdC5rZXlzKFA4QW5zKS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgdj1nZXRJbnB1dEFucyhxaWQpLCBlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5wdXQtYmxhbmtbZGF0YS1xPSInK3FpZCsnIl0nKSwgYWNjZXB0ZWQ9UDhBbnNbcWlkXTsKICAgIGlmKCFlbClyZXR1cm47CiAgICB2YXIgb2s9YWNjZXB0ZWQuaW5kZXhPZih2KT49MDsKICAgIGlmKG9rKXtzY29yZSsrOyBlbC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyl9IGVsc2Uge2VsLmNsYXNzTGlzdC5hZGQoJ3dyb25nJyk7IGVsLnRpdGxlPSdDb3JyZWN0OiAnK2FjY2VwdGVkLmpvaW4oJyAvICcpfQogIH0pOwoKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NvcmVOb3cnKS50ZXh0Q29udGVudD1zY29yZTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmluYWxTY29yZScpLnRleHRDb250ZW50PXNjb3JlOwogIHZhciBwY3Q9TWF0aC5yb3VuZChzY29yZS81NSoxMDApOwogIHZhciBtc2c9Jyc7CiAgaWYocGN0Pj04NSkgbXNnPSdcdXsxRjNDNn0gRXhjZWxsZW50ISBZb3UgYXJlIHdlbGwgcHJlcGFyZWQgZm9yIHRoZSByZWFsIEtFVCBleGFtLic7CiAgZWxzZSBpZihwY3Q+PTcwKSBtc2c9J1x1ezFGNDREfSBHb29kIGpvYiEgQSBmZXcgbW9yZSB0ZXN0cyBhbmQgeW91IHdpbGwgYmUgcmVhZHkuJzsKICBlbHNlIGlmKHBjdD49NTApIG1zZz0nXHV7MUY0REF9IEtlZXAgcHJhY3Rpc2luZyBcdTIwMTQgcmV2aWV3IHRoZSB3cm9uZyBhbnN3ZXJzIGFib3ZlLic7CiAgZWxzZSBtc2c9J1x1ezFGNEFBfSBTdGFydCB3aXRoIHRoZSBiYXNpY3MuIFJlcmVhZCB0aGUgcGFzc2FnZXMgYW5kIHRyeSBhZ2Fpbi4nOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzTXNnJykudGV4dENvbnRlbnQ9bXNnOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzQmFubmVyJykuY2xhc3NMaXN0LmFkZCgnc2hvdycpOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0c0Jhbm5lcicpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonY2VudGVyJ30pfSwxMjApOwp9KTsKCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldEJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogIGlmKCFjb25maXJtKCdSZXNldCBhbGwgYW5zd2Vycz8nKSlyZXR1cm47CiAgbG9jYXRpb24ucmVsb2FkKCk7Cn0pOwoKLy8gV3JpdGluZyB3b3JkIGNvdW50ZXIKdmFyIHRhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cml0aW5nQXJlYScpLHdjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3Y0NvdW50ZXInKTsKdGEuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGZ1bmN0aW9uKCl7CiAgdmFyIHc9dGEudmFsdWUudHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoOwogIHdjLnRleHRDb250ZW50PXcrJyB3b3JkcyBcdTAwQjcgdGFyZ2V0IDI1XHUyMDEzMzUnOwogIHdjLmNsYXNzTGlzdC5yZW1vdmUoJ29rJywnb3ZlcicpOwogIGlmKHc+PTI1KWlmKHc8PTM1KXdjLmNsYXNzTGlzdC5hZGQoJ29rJyk7CiAgZWxzZSBpZih3PjM1KXdjLmNsYXNzTGlzdC5hZGQoJ292ZXInKTsKfSk7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYW1wbGVUb2dnbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FtcGxlQm94JykuY2xhc3NMaXN0LnRvZ2dsZSgnc2hvdycpOwp9KTsKCi8vID09PT09IFNIT1cgQU5TV0VSIFBFUi1RIEZFQVRVUkUgPT09PT0KZnVuY3Rpb24gZ2V0QW5zRm9yUShuKXsKICBpZihuPj0xKSBpZihuPD01KSByZXR1cm4gKFAxLmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj02KSBpZihuPD0xMCkgcmV0dXJuIChQMi5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49MTEpIGlmKG48PTE1KSByZXR1cm4gKFAzYS5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1ufSl8fHt9KS5hbnM7CiAgaWYobj49MjEpIGlmKG48PTI3KSByZXR1cm4gKFA0LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubj09PW59KXx8e30pLmFuczsKICBpZihuPj0yOCkgaWYobjw9MzUpIHJldHVybiAoUDUuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5uPT09bn0pfHx7fSkuYW5zOwogIHJldHVybiBudWxsOwp9Ci8vIE1DUSBxLWl0ZW1zOiBhcHBlbmQgU2hvdyBBbnN3ZXIgYnV0dG9uCmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5xLWl0ZW0nKS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pewogIGlmKGl0ZW0ucXVlcnlTZWxlY3RvcignLnNob3ctYW5zLWJ0bicpKSByZXR1cm47CiAgdmFyIHFpZD1wYXJzZUludChpdGVtLmRhdGFzZXQucWlkKTsKICB2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGJ0bi5jbGFzc05hbWU9J3Nob3ctYW5zLWJ0bic7IGJ0bi50eXBlPSdidXR0b24nOwogIGJ0bi5pbm5lckhUTUw9J1x1ezFGNDQxfSBTaG93IEFuc3dlcic7CiAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIGlzUDY9ZmFsc2U7IGlmKHFpZD49MzYpIGlmKHFpZDw9NDApIGlzUDY9dHJ1ZTsKICAgIGlmKGlzUDYpewogICAgICAvLyBQYXJ0IDYgc3BlbGwgaW5wdXQKICAgICAgdmFyIHA2cT1QNi5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm49PT1xaWR9KTsKICAgICAgdmFyIGlucHV0PWl0ZW0ucXVlcnlTZWxlY3RvcignLmlucHV0LWJsYW5rJyk7CiAgICAgIGlmKGlucHV0KSBpZihwNnEpe2lucHV0LnZhbHVlPXA2cS5hbnM7IGlucHV0LmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO30KICAgICAgdmFyIGZiNj1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpOwogICAgICBpZihmYjYpIGlmKHA2cSl7aXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOyBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NvcnJlY3QnKTsgZmI2LnRleHRDb250ZW50PSdcdXsxRjQ0MX0gQW5zd2VyOiAnK3A2cS5hbnM7fQogICAgfSBlbHNlIHsKICAgICAgdmFyIGFucz1nZXRBbnNGb3JRKHFpZCk7CiAgICAgIGlmKCFhbnMpIHJldHVybjsKICAgICAgLy8gaGlnaGxpZ2h0IGNvcnJlY3Qgb3B0aW9uCiAgICAgIHZhciBjb3JyZWN0T3B0PWl0ZW0ucXVlcnlTZWxlY3RvcignLm9wdFtkYXRhLWxldHRlcj0iJythbnMrJyJdJyk7CiAgICAgIGlmKGNvcnJlY3RPcHQpe2NvcnJlY3RPcHQuY2xhc3NMaXN0LmFkZCgnY29ycmVjdC1vcHQnKTt9CiAgICAgIC8vIHNpbXVsYXRlIGNsaWNrIHNvIHVwZGF0ZVByb2dyZXNzIGZpcmVzCiAgICAgIHZhciBmYj1pdGVtLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjaycpOwogICAgICBpZihmYil7aXRlbS5jbGFzc0xpc3QuYWRkKCdhbnN3ZXJlZCcpOyBmYi5zdHlsZS5iYWNrZ3JvdW5kPSdyZ2JhKDE2LDE4NSwxMjksLjEyKSc7IGZiLnN0eWxlLmNvbG9yPScjMDY1RjQ2JzsgZmIudGV4dENvbnRlbnQ9J1x1ezFGNDQxfSBBbnN3ZXI6ICcrYW5zO30KICAgIH0KICAgIGJ0bi5kaXNhYmxlZD10cnVlOwogIH0pOwogIGl0ZW0uYXBwZW5kQ2hpbGQoYnRuKTsKfSk7Ci8vIFBhcnQgM2Igc2VsZWN0czogYXBwZW5kIGlubGluZSBTaG93IEFuc3dlciBidXR0b24KWzE2LDE3LDE4LDE5LDIwXS5mb3JFYWNoKGZ1bmN0aW9uKHFpZCl7CiAgdmFyIHNlbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucS1zZWxlY3RbZGF0YS1xaWQ9IicrcWlkKyciXScpOwogIGlmKCFzZWwpIHJldHVybjsKICB2YXIgYnRuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGJ0bi5jbGFzc05hbWU9J3Nob3ctYW5zLWJ0bi1pbmxpbmUnOyBidG4udHlwZT0nYnV0dG9uJzsKICB2YXIgYW5zPVAzYkFuc1txaWRdOwogIGJ0bi5pbm5lckhUTUw9J1x1ezFGNDQxfSAnK2FuczsKICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICBzZWwudmFsdWU9YW5zOyBzZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScpKTsKICAgIHNlbC5zdHlsZS5ib3JkZXJDb2xvcj0nIzEwQjk4MSc7IHNlbC5zdHlsZS5ib3JkZXJXaWR0aD0nMnB4Jzsgc2VsLnN0eWxlLmJvcmRlclN0eWxlPSdzb2xpZCc7CiAgICBidG4uZGlzYWJsZWQ9dHJ1ZTsKICB9KTsKICBzZWwuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIGJ0bik7Cn0pOwovLyBQYXJ0IDcgJiA4IGlucHV0czogYXBwZW5kIGlubGluZSBTaG93IEFuc3dlciBidXR0b24KZm9yKHZhciBxaT00MTtxaTw9NTU7cWkrKyl7CiAgKGZ1bmN0aW9uKHFpZCl7CiAgICB2YXIgaW5wPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pbnB1dC1ibGFua1tkYXRhLXE9IicrcWlkKyciXScpOwogICAgaWYoIWlucCkgcmV0dXJuOwogICAgdmFyIGFucz0ocWlkPD01MCk\/UDdBbnNbcWlkXVswXTpQOEFuc1txaWRdWzBdOwogICAgdmFyIGJ0bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsKICAgIGJ0bi5jbGFzc05hbWU9J3Nob3ctYW5zLWJ0bi1pbmxpbmUnOyBidG4udHlwZT0nYnV0dG9uJzsKICAgIGJ0bi5pbm5lckhUTUw9J1x1ezFGNDQxfSAnK2FuczsKICAgIGJ0bi50aXRsZT0nQ2xpY2sgdG8gZmlsbDogJythbnM7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIGlucC52YWx1ZT1hbnM7IGlucC5jbGFzc0xpc3QuYWRkKCdjb3JyZWN0Jyk7IGlucC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7CiAgICAgIGJ0bi5kaXNhYmxlZD10cnVlOwogICAgfSk7CiAgICBpbnAuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIGJ0bik7CiAgfSkocWkpOwp9Cgp9KSgpOwo='));<\/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 7 &#8212; Test 2Reading &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-4612","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4612","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=4612"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4612\/revisions"}],"predecessor-version":[{"id":5870,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/4612\/revisions\/5870"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=4612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}