{"id":5298,"date":"2025-11-17T17:41:21","date_gmt":"2025-11-17T12:41:21","guid":{"rendered":"https:\/\/insurancewala.pk\/?page_id=5298"},"modified":"2026-10-15T14:32:29","modified_gmt":"2026-10-15T09:32:29","slug":"travel-insurance-calculator-pakistan-quotes","status":"publish","type":"page","link":"https:\/\/insurancewala.pk\/?page_id=5298","title":{"rendered":"Travel Insurance Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5298\" class=\"elementor elementor-5298\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-165c16b e-flex e-con-boxed e-con e-parent\" data-id=\"165c16b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c93a92 elementor-widget elementor-widget-html\" data-id=\"0c93a92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ================= INSURANCE WALA TRAVEL INSURANCE CALCULATOR (v1) =================\r\n     Compares Pak-Qatar General Takaful and EFU General Insurance and creates a PDF quotation.\r\n     Paste into a WordPress \"Custom HTML\" block or an Elementor \"HTML\" widget. -->\r\n<div id=\"iw-travel\">\r\n<style>\r\n\r\n#iw-travel{\r\n  --navy:#0d2840; --deep:#071a2b; --lime:#b3ff3c; --ink:#1e2f44; --muted:#566680;\r\n  --line:#d9e0ea; --mist:#f4f7fb; --err:#c0183f;\r\n  --page-bg:transparent;      \/* set to #0b1a2f for the old dark page look *\/\r\n  --scroll-offset:12px;       \/* raise this if your theme has a sticky header *\/\r\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;\r\n  color:var(--ink); background:var(--page-bg); padding:12px; line-height:1.45;\r\n  text-align:left; -webkit-font-smoothing:antialiased;\r\n}\r\n#iw-travel *,#iw-travel *::before,#iw-travel *::after{box-sizing:border-box}\r\n#iw-travel :where(h2,h3,p,dl,dd,dt,ul,li){margin:0;padding:0;list-style:none}\r\n#iw-travel [hidden]{display:none!important}\r\n#iw-travel button,#iw-travel label{-webkit-tap-highlight-color:transparent;touch-action:manipulation}\r\n#iw-travel button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;\r\n  text-transform:none;letter-spacing:normal;box-shadow:none;-webkit-appearance:none;appearance:none;border-radius:0;line-height:1.2}\r\n#iw-travel svg{display:block}\r\n\r\n\/* ---------- card + header ---------- *\/\r\n#iw-travel .iw-card{max-width:560px;margin:0 auto;background:#fff;border-radius:28px;scroll-margin-top:var(--scroll-offset);\r\n  box-shadow:0 24px 48px -24px rgba(7,26,43,.45),0 0 0 1px rgba(13,40,64,.08)}\r\n#iw-travel .iw-head{display:flex;align-items:center;gap:16px;padding:16px 18px;\r\n  background:linear-gradient(145deg,#0d2840,#071a2b);border-radius:28px 28px 0 0}\r\n#iw-travel .iw-logo{display:block;width:auto;height:78px;max-width:none;flex:none;\r\n  filter:drop-shadow(0 0 16px rgba(179,255,60,.22))}\r\n#iw-travel .iw-title{font-size:21px;line-height:1.15;font-weight:800;letter-spacing:-.4px;color:#fff}\r\n#iw-travel .iw-sub{margin-top:4px;font-size:13.5px;line-height:1.35;color:rgba(255,255,255,.82)}\r\n\r\n\/* ---------- tabs ---------- *\/\r\n#iw-travel .iw-tabs{display:flex;gap:6px;margin:14px 14px 0;padding:6px;background:var(--mist);border-radius:18px}\r\n#iw-travel .iw-tab{--tb:var(--mist);flex:1;display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:8px 6px;\r\n  border-radius:14px;font-size:14.5px;font-weight:700;color:var(--muted);transition:background .2s,color .2s}\r\n#iw-travel .iw-tab svg{width:24px;height:24px;flex:none;fill:currentColor;stroke:none}\r\n#iw-travel .iw-tab svg .i2{fill:#9db0c8;stroke:var(--tb);stroke-width:1.6;stroke-linejoin:round;paint-order:stroke}\r\n#iw-travel .iw-tab:hover{--tb:#e9eef5;color:var(--navy);background:#e9eef5}\r\n#iw-travel .iw-tab[aria-selected=\"true\"]{--tb:var(--navy);background:var(--navy);color:#fff}\r\n#iw-travel .iw-tab[aria-selected=\"true\"] svg .i2{fill:var(--lime)}\r\n\r\n\/* ---------- body + progress ---------- *\/\r\n#iw-travel .iw-body{padding:18px 16px 6px}\r\n#iw-travel .iw-progress{display:flex;align-items:center;gap:12px;margin-bottom:16px}\r\n#iw-travel .iw-pstep{font-size:13.5px;font-weight:700;color:var(--muted);white-space:nowrap}\r\n#iw-travel .iw-pbar{flex:1;display:flex;gap:4px}\r\n#iw-travel .iw-pbar i{flex:1;height:6px;border-radius:3px;background:#e3e9f1;transition:background .25s}\r\n#iw-travel .iw-pbar i.on{background:var(--navy)}\r\n\r\n@keyframes iw-fwd{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}\r\n@keyframes iw-bwd{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:none}}\r\n#iw-travel .iw-screen.is-fwd{animation:iw-fwd .24s cubic-bezier(.2,.7,.2,1)}\r\n#iw-travel .iw-screen.is-bwd{animation:iw-bwd .24s cubic-bezier(.2,.7,.2,1)}\r\n#iw-travel .iw-h{font-size:22px;line-height:1.2;font-weight:800;color:var(--navy);letter-spacing:-.3px;outline:none}\r\n#iw-travel .iw-lead{margin-top:4px;font-size:15px;color:var(--muted)}\r\n#iw-travel .iw-field{margin-top:24px}\r\n#iw-travel .iw-label{display:block;font-size:15.5px;font-weight:800;color:var(--navy)}\r\n#iw-travel .iw-hint{margin:2px 0 10px;font-size:13.5px;color:var(--muted)}\r\n#iw-travel .iw-tag{font-weight:600;color:var(--muted);font-size:13.5px}\r\n#iw-travel .iw-stack{display:grid;gap:8px}\r\n#iw-travel .iw-grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}\r\n\r\n\/* ---------- native inputs, visually hidden (labels carry the look) ---------- *\/\r\n#iw-travel .iw-opt{position:relative}\r\n#iw-travel .iw-in{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}\r\n#iw-travel .iw-in:focus-visible+label{outline:3px solid var(--navy);outline-offset:3px}\r\n\r\n\/* age \/ parent chips *\/\r\n#iw-travel .iw-chip{display:flex;align-items:center;justify-content:center;min-height:48px;padding:10px 12px;text-align:center;\r\n  border:1.5px solid var(--line);border-radius:12px;background:#fff;font-size:15px;font-weight:700;color:var(--navy);\r\n  cursor:pointer;user-select:none;transition:background .15s,border-color .15s,color .15s}\r\n#iw-travel .iw-chip:hover{border-color:var(--navy)}\r\n#iw-travel .iw-in:checked+.iw-chip{background:var(--navy);border-color:var(--navy);color:#fff}\r\n\r\n\/* plan cards *\/\r\n#iw-travel .iw-plan{display:flex;align-items:center;gap:12px;min-height:68px;padding:12px 14px;\r\n  border:1.5px solid var(--line);border-radius:16px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}\r\n#iw-travel .iw-plan:hover{border-color:var(--navy)}\r\n#iw-travel .iw-radio{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid #8fa1b8;position:relative;transition:border-color .15s}\r\n#iw-travel .iw-radio::after{content:\"\";position:absolute;inset:3px;border-radius:50%;background:var(--navy);transform:scale(0);transition:transform .15s}\r\n#iw-travel .iw-plan-main{flex:1;min-width:0}\r\n#iw-travel .iw-plan-main strong,#iw-travel .iw-row-text strong{display:block;font-size:16px;font-weight:800;color:var(--navy)}\r\n#iw-travel .iw-plan-main small,#iw-travel .iw-row-text small{display:block;font-size:13.5px;color:var(--muted)}\r\n#iw-travel .iw-plan-price{text-align:right;flex:none}\r\n#iw-travel .iw-plan-price b{display:block;font-size:17px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}\r\n#iw-travel .iw-plan-price small{display:block;font-size:13px;color:var(--muted)}\r\n#iw-travel .iw-in:checked+.iw-plan{border-color:var(--navy);background:#f4fde4;box-shadow:0 0 0 1px var(--navy)}\r\n#iw-travel .iw-in:checked+.iw-plan .iw-radio{border-color:var(--navy)}\r\n#iw-travel .iw-in:checked+.iw-plan .iw-radio::after{transform:scale(1)}\r\n\r\n\/* switch rows *\/\r\n#iw-travel .iw-row{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 14px;\r\n  border:1.5px solid var(--line);border-radius:16px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s}\r\n#iw-travel .iw-row-static{cursor:default}\r\n#iw-travel .iw-row-text{flex:1;min-width:0}\r\n#iw-travel .iw-row-text strong{font-size:15.5px}\r\n#iw-travel .iw-pill{flex:none;padding:4px 10px;border-radius:40px;background:#eef2f7;font-size:13px;font-weight:800;color:var(--navy);white-space:nowrap}\r\n#iw-travel .iw-sw{flex:none;position:relative;width:46px;height:28px;border-radius:20px;background:#b9c4d3;transition:background .2s}\r\n#iw-travel .iw-sw::after{content:\"\";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s,background .2s}\r\n#iw-travel .iw-in:checked+.iw-row{border-color:var(--navy);background:#f7fafd}\r\n#iw-travel .iw-in:checked+.iw-row .iw-sw{background:var(--navy)}\r\n#iw-travel .iw-in:checked+.iw-row .iw-sw::after{transform:translateX(18px);background:var(--lime)}\r\n\r\n\/* children stepper *\/\r\n#iw-travel .iw-stepper{display:flex;align-items:center;gap:4px;flex:none}\r\n#iw-travel .iw-sbtn{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:#fff;\r\n  font-size:22px;font-weight:700;color:var(--navy);display:flex;align-items:center;justify-content:center;transition:border-color .15s,background .15s}\r\n#iw-travel .iw-sbtn:hover:not(:disabled){border-color:var(--navy);background:var(--mist)}\r\n#iw-travel .iw-sbtn:disabled{opacity:.35;cursor:not-allowed}\r\n#iw-travel .iw-kids{min-width:30px;text-align:center;font-size:20px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}\r\n\r\n\/* ---------- review screen ---------- *\/\r\n#iw-travel .iw-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin:-8px 0 4px -6px;padding:0 8px;\r\n  border-radius:10px;font-size:15px;font-weight:700;color:var(--navy)}\r\n#iw-travel .iw-back svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .iw-back:hover{background:var(--mist)}\r\n#iw-travel .iw-sum{margin-top:16px;padding:2px 16px;border:1.5px solid var(--line);border-radius:16px;background:#fff}\r\n#iw-travel .iw-sum+.iw-sum{margin-top:10px}\r\n#iw-travel .iw-sum-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #edf1f6;font-size:15px}\r\n#iw-travel .iw-sum-row:last-child{border-bottom:0}\r\n#iw-travel .iw-sum-row dt{color:var(--muted);font-weight:600;flex:none}\r\n#iw-travel .iw-sum-row dd{color:var(--navy);font-weight:700;text-align:right}\r\n#iw-travel .iw-sum-total dt{color:var(--navy);font-weight:800}\r\n#iw-travel .iw-sum-total dd{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}\r\n#iw-travel .iw-note{margin-top:8px;font-size:13.5px;color:var(--muted)}\r\n#iw-travel .iw-benefits{display:grid;grid-template-columns:1fr 1fr;gap:12px 10px;margin-top:16px}\r\n#iw-travel .iw-ben{display:flex;align-items:flex-start;gap:10px}\r\n#iw-travel .iw-ben-ico{flex:none;width:28px;height:28px;border-radius:50%;background:var(--navy);display:flex;align-items:center;justify-content:center}\r\n#iw-travel .iw-ben-ico svg{width:15px;height:15px;stroke:var(--lime);fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .iw-ben-t{display:block;font-size:14.5px;font-weight:800;color:var(--navy);line-height:1.25}\r\n#iw-travel .iw-ben-d{display:block;font-size:13.5px;color:var(--muted)}\r\n\r\n\/* ---------- form fields ---------- *\/\r\n#iw-travel .iw-input{display:block;width:100%;min-height:52px;margin:8px 0 0;padding:12px 16px;border:1.5px solid var(--line);border-radius:14px;\r\n  background:#fff;font:inherit;font-size:16px;font-weight:600;color:var(--navy);box-shadow:none;transition:border-color .15s,box-shadow .15s}\r\n#iw-travel .iw-input::placeholder{color:#7d8ba1;font-weight:500}\r\n#iw-travel .iw-input:focus,#iw-travel .iw-phone:focus-within{outline:none;border-color:var(--navy);box-shadow:0 0 0 4px rgba(13,40,64,.14)}\r\n#iw-travel .iw-phone{display:flex;align-items:center;margin-top:8px;padding:0 6px 0 16px;border:1.5px solid var(--line);border-radius:14px;background:#fff;transition:border-color .15s,box-shadow .15s}\r\n#iw-travel .iw-phone span{font-size:16px;font-weight:800;color:var(--navy);margin-right:10px}\r\n#iw-travel .iw-phone .iw-input{flex:1;min-width:0;margin:0;border:0;border-radius:0;padding:12px 0;box-shadow:none}\r\n#iw-travel .iw-phone .iw-input:focus{box-shadow:none}\r\n#iw-travel .iw-input.is-bad,#iw-travel .iw-phone.is-bad{border-color:var(--err);background:#fff6f8}\r\n#iw-travel .iw-err{margin-top:6px;font-size:13.5px;font-weight:700;color:var(--err)}\r\n\r\n\/* ---------- sticky price bar ---------- *\/\r\n#iw-travel .iw-pricebar{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;\r\n  margin:14px 12px 12px;padding:12px 12px 12px 18px;border-radius:22px;background:var(--navy);color:#fff;\r\n  box-shadow:0 14px 30px -12px rgba(7,26,43,.6)}\r\n#iw-travel .iw-pb-label,#iw-travel .iw-pb-month{display:block;font-size:13px;color:rgba(255,255,255,.82);white-space:nowrap}\r\n#iw-travel .iw-pb-total{display:block;font-size:26px;line-height:1.1;font-weight:800;letter-spacing:-.5px;color:var(--lime);font-variant-numeric:tabular-nums}\r\n#iw-travel .iw-pb-btn{display:flex;align-items:center;justify-content:center;gap:8px;flex:none;min-height:50px;padding:0 22px;border-radius:40px;\r\n  background:var(--lime);color:var(--navy);font-size:16px;font-weight:800;white-space:nowrap;transition:background .15s,transform .1s}\r\n#iw-travel .iw-pb-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .iw-pb-btn:hover:not(:disabled){background:#a2ee2a}\r\n#iw-travel .iw-pb-btn:active:not(:disabled){transform:scale(.98)}\r\n#iw-travel .iw-pb-btn:disabled{opacity:.45;cursor:not-allowed}\r\n#iw-travel .iw-pb-actions{display:flex;gap:8px;flex:none}\r\n#iw-travel .iw-pb-back{display:flex;align-items:center;justify-content:center;gap:4px;flex:none;min-height:50px;padding:0 20px 0 12px;\r\n  border-radius:40px;border:1.5px solid rgba(255,255,255,.42);color:#fff;font-size:16px;font-weight:700;transition:background .15s,border-color .15s,transform .1s}\r\n#iw-travel .iw-pb-back svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .iw-pb-back:hover{background:rgba(255,255,255,.12);border-color:#fff}\r\n#iw-travel .iw-pb-back:active{transform:scale(.98)}\r\n#iw-travel .iw-pricebar.is-review{flex-direction:column;align-items:stretch;gap:10px;padding:12px}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-price{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 6px}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-total{font-size:22px}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-month{display:none}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-actions{flex:1}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-btn{flex:1}\r\n#iw-travel .iw-pb-btn:focus-visible,#iw-travel .iw-pb-back:focus-visible,#iw-travel .iw-modal-btn:focus-visible,#iw-travel .iw-back:focus-visible,#iw-travel .iw-sbtn:focus-visible,#iw-travel .iw-tab:focus-visible{\r\n  outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 6px var(--navy)}\r\n#iw-travel .iw-back:focus-visible,#iw-travel .iw-sbtn:focus-visible,#iw-travel .iw-tab:focus-visible{outline-color:var(--navy);box-shadow:none}\r\n\r\n\/* ---------- confirmation dialog ---------- *\/\r\n#iw-travel .iw-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(7,26,43,.62)}\r\n#iw-travel .iw-modal-card{width:100%;max-width:380px;padding:28px 24px 22px;border-radius:24px;background:#fff;text-align:center}\r\n#iw-travel .iw-modal-ico{width:56px;height:56px;margin:0 auto 14px;border-radius:50%;background:var(--navy);display:flex;align-items:center;justify-content:center}\r\n#iw-travel .iw-modal-ico svg{width:28px;height:28px;stroke:var(--lime);fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .iw-modal h3{font-size:22px;font-weight:800;color:var(--navy);letter-spacing:-.3px}\r\n#iw-travel .iw-modal p{margin:8px 0 18px;font-size:15px;color:var(--muted)}\r\n#iw-travel .iw-modal-btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;border-radius:40px;font-size:16px;font-weight:800;text-decoration:none;cursor:pointer}\r\n#iw-travel .iw-modal-btn.main{background:var(--lime);color:var(--navy)}\r\n#iw-travel .iw-modal-btn.ghost{margin-top:8px;color:var(--navy);background:transparent}\r\n#iw-travel .iw-modal-btn.ghost:hover{background:var(--mist)}\r\n\r\n\/* ---------- small screens ---------- *\/\r\n@media (max-width:440px){\r\n  #iw-travel{padding:8px}\r\n  #iw-travel .iw-title{font-size:19px}\r\n  #iw-travel .iw-logo{height:66px}\r\n  #iw-travel .iw-sub{font-size:13px}\r\n  #iw-travel .iw-tab{flex-direction:column;gap:3px;min-height:58px;font-size:13px}\r\n  #iw-travel .iw-body{padding:16px 12px 4px}\r\n  #iw-travel .iw-h{font-size:20px}\r\n  #iw-travel .iw-pb-total{font-size:23px}\r\n  #iw-travel .iw-pb-btn{padding:0 16px;font-size:15px}\r\n  #iw-travel .iw-pricebar{margin:12px 8px 8px;padding-left:14px}\r\n  #iw-travel .iw-pricebar.is-review{padding:12px}\r\n  #iw-travel .iw-pb-back{padding:0 16px 0 10px;font-size:15px}\r\n}\r\n@media (max-width:359px){\r\n  #iw-travel .iw-benefits{grid-template-columns:1fr}\r\n}\r\n@media (prefers-reduced-motion:reduce){\r\n  #iw-travel *,#iw-travel *::before,#iw-travel *::after{transition:none!important;animation:none!important}\r\n}\r\n\r\n\/* ===== travel calculator additions ===== *\/\r\n#iw-travel .tv-logo{--lw:111px;position:relative;flex:none;display:block;width:var(--lw);height:calc(var(--lw)*.70455);overflow:hidden}\r\n#iw-travel .tv-logo .iw-logo{position:absolute;display:block;max-width:none;width:calc(var(--lw)*1.26263);height:calc(var(--lw)*1.26263);left:calc(var(--lw)*-.12879);top:calc(var(--lw)*-.31061);filter:none}\r\n#iw-travel .tv-hero{margin:16px 0 0;border-radius:18px;overflow:hidden;background:var(--mist)}\r\n#iw-travel .tv-hero img{display:block;width:100%;height:auto;max-height:200px;margin:0 auto;object-fit:contain}\r\n#iw-travel .tv-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}\r\n#iw-travel .tv-q-wrap{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}\r\n#iw-travel .tv-q{min-height:40px;padding:0 14px;border:1.5px solid var(--line);border-radius:40px;background:#fff;font-size:14px;font-weight:700;color:var(--navy);transition:background .15s,border-color .15s,color .15s}\r\n#iw-travel .tv-q:hover{border-color:var(--navy)}\r\n#iw-travel .tv-q.is-on{background:var(--navy);border-color:var(--navy);color:#fff}\r\n#iw-travel .tv-q:focus-visible,#iw-travel .tv-add-btn:focus-visible,#iw-travel .tv-rm:focus-visible,#iw-travel .tv-pdf:focus-visible,#iw-travel .tv-det summary:focus-visible{outline:3px solid var(--navy);outline-offset:3px}\r\n#iw-travel .tv-trav{display:flex;align-items:flex-end;gap:8px;margin-top:10px}\r\n#iw-travel .tv-trav-f{flex:1;min-width:0}\r\n#iw-travel .tv-trav label{display:block;font-size:14px;font-weight:700;color:var(--muted)}\r\n#iw-travel .tv-rm{flex:none;width:52px;height:52px;border-radius:14px;border:1.5px solid var(--line);background:#fff;font-size:24px;font-weight:700;color:var(--navy)}\r\n#iw-travel .tv-rm:hover{border-color:var(--err);color:var(--err)}\r\n#iw-travel .tv-add-btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:50px;margin-top:12px;border:1.5px dashed #8fa1b8;border-radius:14px;background:#fff;font-size:15px;font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-add-btn:hover:not(:disabled){border-color:var(--navy);background:var(--mist)}\r\n#iw-travel .tv-add-btn:disabled{opacity:.4;cursor:not-allowed}\r\n#iw-travel .tv-fl{display:flex;flex-wrap:wrap;gap:8px}\r\n#iw-travel .tv-fl .iw-chip{min-height:44px;padding:8px 16px;font-size:14.5px}\r\n#iw-travel .tv-strip{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}\r\n#iw-travel .tv-tile{min-width:0;padding:12px 14px;border:1.5px solid var(--line);border-radius:16px;background:#fff}\r\n#iw-travel .tv-tile.is-best{background:#f4fde4;border-color:var(--navy)}\r\n#iw-travel .tv-tile span{display:block;font-size:13.5px;font-weight:600;color:var(--muted)}\r\n#iw-travel .tv-tile b{display:block;font-size:20px;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}\r\n#iw-travel .tv-tile small{display:block;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\r\n#iw-travel .tv-diff{grid-column:1 \/ -1;font-size:14px;color:var(--ink)}\r\n#iw-travel .tv-strip:has(.tv-tile:only-of-type){grid-template-columns:1fr}\r\n#iw-travel .tv-list{display:grid;gap:12px;margin-top:16px}\r\n#iw-travel .tv-card{padding:14px;border:1.5px solid var(--line);border-radius:18px;background:#fff;transition:border-color .15s,box-shadow .15s}\r\n#iw-travel .tv-card.is-sel{border-color:var(--navy);box-shadow:0 0 0 1px var(--navy)}\r\n#iw-travel .tv-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}\r\n#iw-travel .tv-top-l{min-width:0}\r\n#iw-travel .tv-ins{display:inline-block;padding:3px 10px;border-radius:40px;font-size:13px;font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-ins-pq{background:#e3e9f1}\r\n#iw-travel .tv-ins-efu{background:#fff;border:1.5px solid var(--navy);padding:1.5px 9px}\r\n#iw-travel .tv-low{display:inline-block;margin-left:6px;padding:3px 10px;border-radius:40px;background:var(--navy);color:var(--lime);font-size:13px;font-weight:800}\r\n#iw-travel .tv-name{margin:8px 0 0;font-size:17px;line-height:1.25;font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-meta{margin-top:2px;font-size:13.5px;color:var(--muted)}\r\n#iw-travel .tv-price{flex:none;text-align:right}\r\n#iw-travel .tv-price b{display:block;font-size:21px;line-height:1.1;font-weight:800;color:var(--navy);font-variant-numeric:tabular-nums}\r\n#iw-travel .tv-price small{display:block;margin-top:2px;font-size:13px;color:var(--muted)}\r\n#iw-travel .tv-facts{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:10px;font-size:14px;color:var(--ink)}\r\n#iw-travel .tv-facts b{font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-fn{margin-top:8px;font-size:13.5px;font-weight:600;color:var(--err)}\r\n#iw-travel .tv-added{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}\r\n#iw-travel .tv-added li{padding:4px 10px;border-radius:40px;background:var(--mist);font-size:13px;font-weight:600;color:var(--navy)}\r\n#iw-travel .tv-det{margin-top:6px}\r\n#iw-travel .tv-det summary{display:flex;align-items:center;min-height:44px;cursor:pointer;list-style:none;font-size:14.5px;font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-det summary::-webkit-details-marker{display:none}\r\n#iw-travel .tv-det summary::after{content:\"\";width:8px;height:8px;margin:-3px 0 0 10px;border-right:2.5px solid var(--navy);border-bottom:2.5px solid var(--navy);transform:rotate(45deg);transition:transform .2s}\r\n#iw-travel .tv-det[open] summary::after{margin-top:3px;transform:rotate(-135deg)}\r\n#iw-travel .tv-addrow{margin-top:6px}\r\n#iw-travel .tv-addrow .iw-row{min-height:54px}\r\n#iw-travel .tv-na{margin-top:16px;padding:12px 14px;border:1.5px dashed #8fa1b8;border-radius:14px;font-size:14px;color:var(--muted)}\r\n#iw-travel .tv-na strong{display:block;color:var(--navy);margin-bottom:4px}\r\n#iw-travel .tv-na p+p{margin-top:6px}\r\n#iw-travel #tv-s3sum .iw-sum-row dd{white-space:nowrap}\r\n#iw-travel #tv-s3sum .iw-sum-row dt{min-width:0}\r\n#iw-travel .tv-dh{margin:4px 0 6px;font-size:14px;font-weight:800;color:var(--navy)}\r\n#iw-travel .tv-pdf{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:54px;margin-top:22px;border:2px solid var(--navy);border-radius:40px;background:#fff;font-size:16px;font-weight:800;color:var(--navy);transition:background .15s,transform .1s}\r\n#iw-travel .tv-pdf svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}\r\n#iw-travel .tv-pdf:hover:not(:disabled){background:var(--mist)}\r\n#iw-travel .tv-pdf:active:not(:disabled){transform:scale(.99)}\r\n#iw-travel .tv-pdf:disabled{opacity:.55;cursor:progress}\r\n#iw-travel .iw-pb-price{min-width:0;flex:1}\r\n#iw-travel .iw-pb-month{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-price{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-items:center;padding:0 6px;flex:none}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-label{grid-column:1;grid-row:1}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-month{display:block;grid-column:1;grid-row:2}\r\n#iw-travel .iw-pricebar.is-review .iw-pb-total{grid-column:2;grid-row:1 \/ span 2}\r\n@media (max-width:440px){\r\n  #iw-travel .tv-logo{--lw:94px}\r\n  #iw-travel .tv-top{flex-direction:column;gap:8px}\r\n  #iw-travel .tv-price{text-align:left;display:flex;align-items:baseline;gap:8px}\r\n}\r\n<\/style>\r\n\r\n<div class=\"iw-card\" id=\"tv-card\">\r\n  <header class=\"iw-head\">\r\n    <span class=\"tv-logo\"><img fetchpriority=\"high\" class=\"iw-logo\" src=\"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/logo-green-500-x-500-px.png\" alt=\"Insurance Wala\" width=\"500\" height=\"500\" decoding=\"async\"><\/span>\r\n    <div>\r\n      <h2 class=\"iw-title\">Travel insurance calculator<\/h2>\r\n      <p class=\"iw-sub\">Compare Pak-Qatar and EFU rates, then download your quotation.<\/p>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <div class=\"iw-body\">\r\n    <div class=\"iw-progress\">\r\n      <span class=\"iw-pstep\" id=\"tv-pstep\">Step 1 of 3<\/span>\r\n      <div class=\"iw-pbar\" aria-hidden=\"true\"><i class=\"on\" id=\"tv-pb1\"><\/i><i id=\"tv-pb2\"><\/i><i id=\"tv-pb3\"><\/i><\/div>\r\n    <\/div>\r\n    <div id=\"tv-screens\"><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"iw-pricebar\" id=\"tv-bar\">\r\n    <div class=\"iw-pb-price\">\r\n      <span class=\"iw-pb-label\" id=\"tv-label\">Lowest premium<\/span>\r\n      <strong class=\"iw-pb-total\" id=\"tv-total\">&ndash;<\/strong>\r\n      <span class=\"iw-pb-month\" id=\"tv-sub\"><\/span>\r\n    <\/div>\r\n    <div class=\"iw-pb-actions\">\r\n      <button type=\"button\" class=\"iw-pb-back\" id=\"tv-back\" data-act=\"back\" hidden><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polyline points=\"15 18 9 12 15 6\"\/><\/svg>Back<\/button>\r\n      <button type=\"button\" class=\"iw-pb-btn\" id=\"tv-next\" data-act=\"next\">Compare plans<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"iw-modal\" id=\"tv-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"tv-modal-title\" hidden>\r\n  <div class=\"iw-modal-card\">\r\n    <div class=\"iw-modal-ico\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>\r\n    <h3 id=\"tv-modal-title\">One last step<\/h3>\r\n    <p>WhatsApp is opening with your quote filled in. Tap <strong>Send<\/strong> in WhatsApp so it reaches us. We will reply with the application steps.<\/p>\r\n    <a class=\"iw-modal-btn main\" id=\"tv-wa-link\" href=\"#\" target=\"_blank\" rel=\"noopener\">Open WhatsApp again<\/a>\r\n    <button type=\"button\" class=\"iw-modal-btn ghost\" id=\"tv-modal-close\" data-act=\"close\">Done<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n  var root = document.getElementById('iw-travel');\r\n  if (!root || root.getAttribute('data-ready')) return;\r\n  root.setAttribute('data-ready', '1');\r\n\r\n  var LOGO_FALLBACK = 'data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AABLnklEQVR42u2deXxedZX\/3+d777MlbdMkrSwim4hLwWVkdBSX1gUVRdwaFWhaEa3jOO7LzKiTZnRcRhnHZfwNipQmLTipOq44AloEd0VxKSiDGyhY2iZN2yTPcu\/3\/P743ps8TZM0KQW6nPfr9ZCSPM9zt+\/93HPO93zPAcMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDMMwDGMfiJ2CIw9VZA1Ex4LcCWmv4O2sGIZxUIrVbH5nGAcjsZ2CI0usRNAP6zGLjqLaDRyXEn1RZNv1+d\/sLBkHM85OwZFBj+IEuFwXP\/hYaj+q4C5uwb2phP9mv3acJYIOKJGdKcMEy7jfWQKCoI50TQU5aRStj6K1GIkV\/defKIXNoOYeGuYSGgeDK5heqp3zQZ9cAxWIgGgM9WXcGZtpX94rQ1csCVZWamfNMMEy7hfWhNlgFZLFgiv78P+5JaXhb7xtrfKFzVBHgzV2z1QS6QFZArI5\/NTlYTuKxcoMcwmNfVGg6BTZI04lENVQLeEeGdN5Vq\/ge9j\/WJYqMqBECNor+C4h7RWSLiEVwZPFysz1NPYHGzRHjkuoa7Xl6IjSj4u44xqozx9YCmkLEo2gX1spg8\/b3xlDVZxkOV2blPJdtD0xJX4I+FaPG43xv08pfqdbtoxMfr9hmEto7EGd0e0VSiOy91MrqqIaoc9ar+2niwz9skdxc0ko7cnEZ622LYyIXvcn9BUOObkAOBweSBGExu192nFZjeTjIjsH57odw1xC43A3ozM3bLXQENjlglW1hwXlwVdwsYcL5zo2ctFZq21LC7jvtSLviZGTPVBHtYb6Bup9eEIe34qsqRB\/\/3LtCC6o2jg0TLCMqfnLNLEBqaOAvLRPj3pAr5DMRkgGlKhX8Ot04bkVoq8XcA8fQZNGJogSwg4uH2sN0BE0KSCnluErfdr2gl7Bq4mWYYJlTEbht9ONhUaIZR3jSJZDlru1D8uqS0g\/o20nF3D\/pUi5iqYCsUzzWQERiGtoqkgxJrq0T9tOEhMtwwTL2PuCy00zeY8pkKKre5RiFzPHlpaA9CguJnp\/CTm6gSZuljOMAlEDTYpIJ7h\/A1hjl8cwwTKaSeBmjzKVBSTg6mhagUecTPszcpdvOlewS0hPofOxEbxwFM2TUWeNQDyGqiAv2aBtjzXX0DDBMgDYnMWUPHpXDd0WgZsceM9cRhwSCaxG0M3MnN6g6LNakYKG7Pg5p8ko+ApCijsX4FPYekbDBOuIZw0oisxj6E6QXxaDtvipXLUxVB3y3LXa8Te9gl8+hZWVu4sCj0zGPzp3BDQbhI8EuNOWBRkmWIYIuongxgn8VJjedFLwZSSKkLcBDEy1KFrGf\/cAD8h+CpaCBMGTBwzoI4qZW2gJzYYJ1pHO1nG3MP1eDcVNc\/0FXBX1EbxgnbY\/QQS\/cYr3iqCK1mYSvzlYWulibrYEUsMEywgsH3cB\/bcb6E6XLYqeSj88aCGMj\/eOB96bLJ\/cChK4040bS\/vnEsaggm5dluV+WSFBwwTLCBaRIitl13aHfr2EqE6TupAt10lbcE+r0rGqS0ibF0VfN\/5v\/fE9sbA0pFKIwo8AltqYNEywjMlCo7ir2HfcyTVQdej712n78c3Z70uz4LhHvjqCDhWD6MxVtzQCGcWPpaQbm7\/XMEywDK4DjyIxcu0IfkshCNh0VpYkoCXcYodcAln2e1bNYUCJVsrQ7QKfKSMOSOa4O0kFcQ4uWyU7f2vuoDGLEIJxpJEnffZp+2dacBeOhuU00QxuW1pBojH0Q90y+PZNSrwM0p5s\/JzK8W2e3d+uIKePhGz3fVYBUUhakHgM\/2ul+NTfsmXbGlATLGMmrLzMEf200ssTdNVsXMMqmpaQt12uC29fJjs+0aPEvUISamfdPrRO57+kSvzV+biHjKCJZoueZU+RIrfmWpC4jv7OIy9aKVvutq49hllYxtTWTTbD9zEoLqT9ugru8VXU78PKUhdekpBe2C3Dlw8oUTbzKCL4y7XjgUX4dAF5jhBqLWsmVHlN5kI25Br4axvwypUydLsV8jNMsIwZ2aTEy4SkTzu6y8i6WlMF0n2IFjEkCf5NF8iO\/4RQtQEgL8TXrwsviIle1ECfKGibIs6hXpEdDv1hgn5+JTvW5+WSu8QC7YYJlrEPKysLnFfGaP9FCTmlEaylfU3EeMAVgRr60a0M\/eNbhLEeJV4DvrnJxJf1mJYRqp0NaBNkxyilwdVy12j+RVZt1DDBMmbNciXaKKR92vl3LfCJUTSR2QXMVUAriKui36viXneRbPtZbrkBLJPpZwwHlKiL0JDCroJhgmXM0sxCFKSfoyrQuKGMPCaLZbnZfTzMHjZgp6If3o1+bLUMDeeitBx0TfbeNUHkMJEyTLCM\/aYpxeHZRdzXGqgyhxIvCj4CV0Ko4m8T+FBKcUPeGSdf1mMWlWGCZRxQ0Vqn7f2tuAv2lZc1lYsI+CISRUAN\/Q3wSfBfukB2\/HH8fYqsyRJVLXZlmGAZ+0Ue\/L5CK8emlG+McUclwdKa00qIZuEqACPoNuCbDv3yCHwtdxfzbeY14zcH19GSRg0TLGNuVla\/tq+u4P5rrlbWJLyGdYJRGaGB0oC7HfoVD1cn+B+9Qob\/MNU+NLW19xbzMkywjOnMI+kBORaiMu03lHGPr80hAD+dxSWQKkQxSImQcFXHb\/FwC7jvCf57jujW+RT+\/PymlIc9vickusp14K4DxgXNxMwEyzArq08XnlMh+vLYPbOypnQXAQoQxU1DbwwdA70ZuEVxmx3pzUrh5jKlP2\/mT7Xp4l2Wx2WCZRzB9ChuDehGFrfWSH9QhCX12SWT7pfLmP+Pg6iAUCDUlqmFP9U8OiTIbQp3CNyhcAdwV4r+ZZChn2YJqyZaJljGEesZKpEI6Xptf28Z987RA2hlzcL6UkKj1ShvFx0h2c\/w\/zWgjtYd3Aq88nwZ\/JGJlgmWceQKlhPQ9Sx8suKuk4nCfHLf70oooZxn1meCFgEyD5FdpLdE6JnnMbyDoHQW0zrMsQJ+xt4Gj6AN9BeK7rofn2giEyVqIsKSoUI2ZnUXmlSIHt4gWiqCrrF+hiZYxpFrcp\/I8G5Bbo\/Cbw42y8VNNK\/gdAgzh3b1TLCMI0+xFMYXL\/\/ZMR5jOghNQVRgnl20IwerOGrMxM6DLMiZx7FSIAp9FeXnAIstHmsWlnFkklck9eiI3PtdbLyG5NLxV\/47INHwSrPBKkXEtSKFArADf9kQ2z+niiybZj\/z4oKGWVjGYcqaiQarWkKiUbTBAQ5q525mEXHNg3A8t4GJVIaEUG7ZQ62G\/qSB\/19P9L1VMvgtgDfMsJ1ewVu9eBMs4wiwsvrh0mHSR7Xi\/mrkwGa9E2cuXAN\/Sx3uECTPo1qgMB\/YCWwXdDvobcANNaKbLpLtu\/LvmbEQoCIIul4XniBNFSOMQxvz+49wehS3FNxW0M3ZeOgNrhki6CV6TMt8ah8pIK+uoukBsLTUgXgYTuEVD4Bvni2DO5tEqFijozzK4NhqoZH\/\/lJtP60FPSdFHhwjv6vhv7pKdvxiKusp\/906bf9oO+6lO9ANKxh8K1iulgmWcchaUBvBTdcAIlumg4w3luh8XxH+sR6aVcj+jh2FZB4S70b\/qVsG3\/9qpfBYYLXQmJyxnhf\/G6PzbSV4f8zEOqEEHa6hL10pQ99o7rqT\/3uDtj\/JITdECFW0LrB4hQzuNPfQBMs4hBnQxaeMkZ7p4ARBqynuN1WK16yWu0bzgHUuXP3a8bUycnbzomgNZWBSQkZ8JDOPKYV8pkfPVNgdw+dTqDbg5atkaHPeOuw6iLKuPstbkIEq6n3YlgPSElKo4u+C+qO7ZeTuHsX1gg5kXz9G+1UV5KwaeNCxEjywS4aGTbAObSyGdQRaVmtAloL7E509nvRv5yGdLnt+1YGY6s2XaccbL5TBa1RxG8dFSN5cR5\/ioFWzpTNlxJURl6BUUdIZFktnFQElhbrgEkXfU8E9pBri+1et1bandsnwH7LmGAlhtnKlgmZilY9XV0WTFtwxI5SfBSP9S8EtAQ3VJtpeUMY9s4YmMcQJsn0eHVUYsif0IY5N+R5RahXEqlfwt9P+6XnwLg+do2iyK3vV0bSAe0QLfLlf258rgt+YuWcrZPtvPLqxgohCUkKkhr92B\/7C3eiHEnRLEdy+E03VCWkFiOuor6O1EnJ8hFu7VikPgM\/ECoG2NPzca6xGoA49CeDWTFQv1c75QvSerOeFxiEif9PZcltNs0C8DQQTLOMQoAeiXsH3a\/tFrbhVu9Eks4hiyV5AVEUTkDLwqSv0AUdtFNLFICE\/S784hvoyUkjQjStk6Jk1ki8N0fFujzy2gf64FATNTxV\/UNAiEqeIF+SqQhC4eBRNW3FLHR1rAQbAZeJycyFzPacKaSjsAihyQtQlpAX82yvIabUwcSDBJNMbAK6z9YYmWMbBZUHllslUrmAvpAO6eB7wujS4dDLVGBCIa2jagjs2pXF+drMjglZp\/NBDo4EfFeSNG7T9Ca3Ev+tg8MYC6WhKckGCjslELtdkgfFFhAh5QAm\/YTe6PQ5rA2UETechL+uj81+6hLRHcQqfS0CyJUJp5oomMbhRtOqIrx1QolfIH6uXasdZMfIPWasycRCNoFXBfwtgq603NMEyDhLrSTOLRNBpsrsFQUdJThDktFpQtmktDgEyUXsOTCwuvpqRbQIjDeS\/zpPtd6ZwWYy0zcctSYk+sVJ23ZqiN5ant7J8FMTnQV0yNOzRD+UWmQQRSkvou\/q04\/W9gl\/B4LVj6KcX4OIiEsUgZSSuIK4B77lA7v5liFt1Pq0VrhCIfFYSJ5Rk1u+tYPhnPTr9jKhhgmXcx5ZVr+CXK9GAUuwV\/GTRygPnEVGpiETMztoQQRYDLM\/evxwqoDdE0Nun7a9uwT2sitZDuoM+VBUR2BYFcdK9dxUJquGPQZGFlD8+il7fgsSZwLkGaAE+ul47e7vArZLBVw+Tvtejv0rQv6Twg13IRatk8H0A67X9VQ79qkBnEoJXeYkJccgnEHSJzYibYBkHj2XVp51PewEdN9Vov+lybe\/qFXyexwShlRZADLtr6JjL6krtUwrRrc2C16CtAHpxichHyDuT4H4RgRNka0gZkPY0E4ypRDAIlpyCoKHxhLy6iv6lkO1TtrrZF+Gfz6Fj0wZdeE6Cv3gX9WV13GO\/wPYnpbRu6NeOl\/Rr+7di5FMClXpmpSmkLUg0ir\/2Nga\/1KO4LqwiqQmWcf8aVpllFWbGfF8ZOa2Ie3gJWX+5tr+8S0g3aUgFWJOJU5XW20E3FxGvM9\/E6oJrdW3zLwsM71whO24YI31TBTm+lmUrhLpZ+ufsbQ\/MZvamEiyXoigs2aTEqsgK2f6bBFktWWXRLPjlaqgvIU8uEH05xv2mhcJAEf3k8+n4YsSuX5eRjSXcsjpoGj7nyDpR1\/EjMfHbxhNRbXbQBMu4f1mTCUKMP16Ro0dDikDiIS4hl\/Vp+7OXCclAqNOueXBa4FOFiWvvpzCrkhISj6Hbhagvt9B6FLccfL92HOfg9dUJUZNMhP5vQNvbHHpcEv5fpomNIXDin1i0OCz\/obBKtn+5hq6tIJGf2CdXR30V9RHygApuWStybgvyvAJywhiaZgF28lLOWWE\/GvDqC2TrTQMaZkZttJhgGfe\/YGkWlxokNGZwQJSG35cjZP0VuvCRXUKat\/DqUVyRoct24j82D4kiJM+bGu9kU0HiFL8zhfNWyLa7cktuCSFLXPH\/XEEW5d2hBaI6iiI31pCHl3FlD+k0FpaEtT1S8qSPBDg1E8MK8bvG0DuK4XPjoiXgEtBRNB3JXpkrGmVWVZ6z5UtINIb+40oZuiI\/ZhspJljGQUC+xOQ2tm0R5McFRPPZtjqkMdLpkYF1Or9zOSEQ3yv4LiFdKUNvGCH9O4\/+Jc7qTBUQiaGRoJvq6JNXyeDVPWFtnvYocZeQrtOFz4txr6xONFnVbG3faIXoB8BZ+zJnNAiLRPCo\/HdLQLpk6188\/oNxyGKYbJnl3XQimag8s0ewLSuF82+rZOiD45UcDBMs4+ChR4l7Be+RS12TReMgqqFJGfdQIf70RnBrMksGRXoUt0J2fHKMZInHn9NA39DAr\/a4J7xcBp+2Snb8Ihe4zK1K+vSok4rI\/yOkIYyLTzGshf5ml2zd7dHn7CtYJJDGgCKnQcjxWp5lt49RWTuK\/3Xmss5WcNJylnW\/UgbfMR5kt7jV4feQtlNwiKOIAl+H4lY6flJBTmuyfshnzKqkl\/wfO16bC1CzmziNELosPSLOxKrV0bimhDxhbM8W9mkJcWPI82Iav4ZoM1CaIeiOBoGJauj3Bxlc9gah1lw9ok8Xvq6V6OO70dTNLju9MR8p7ELfuEIGP7pJibOa9IZZWMZB9sjRLnBnCzVB35aGi5rXPkcgCktpotWn0vHZS7VzfhbLivNA+oAS9Shx9tP1KG4JSG5ZrdWWo4X6V8rIE7LGqrkY+kJYiHz779j2v0r0qhZkpvjV+LhrhF186ELaj8ricbKZEAiLaWwcwf8lyxebtVun2X5dZ6PCBMs4eNlIsJq6Zeh\/a+jFLeFGb7acsgxyWd6CfqNfOx\/aKyS9gu8VfN7AIfs5HucKMau2Z5Qpbyrjlo1OsngUtICIwMVLOK6k6IVjsxhXEnKx0jKuQ3Cn5DGsXsEPgDtPRrYI8j\/ZGkKdhVBlQXe16iOHOXaBDx8rK+1RXAuD79hNx8MryNnNAiMQjaJpGXmCR7\/Xrx3\/ATJwG9v\/L3eferOv69eOBR73GMG\/NoaXCOLGJpVIzt26UfzPVsjQx\/tU3tuKe8DInu7iLHbdPw741mQ3V\/CfTYleM9uwRVa6xmXiZ7ErEyzjYGcNqAj+05qsEKLvV3Cnjk0SrZDTREcZ+ZdR9B9Pof0H65VfedyfHeo8nKTwN0X86QWEMZQ0SyFo1gc3LhLymj5dcEoBfXM1zFDOKS6qyJOa\/395Fiz3WrqxRuNXZeT06ixF0AfL0jDBMg4JQytLDu2SnYPrtf0lDfzVJdzR9aYbXsClIafJO6iUcMsiWJYtlyECGkAN1cbE59wkly4tI\/EI\/q0rZehH\/drx3RipZMH4WQmWkHed0Iddose0dMldo2TVQHuUuFu2jPRp+3UxcjozFAXcU7CsfIzFsIxDinz27wIZ+mUCL0rR4ayoXtosFllVAx1D091oMob6\/N+1THgyq0omuV5JBYl34y9bKUMXr9OOD7QgTxxrCsbP0oWTRmht88AKtdMhq4HV5NIp7pvVUFViVg9WsfFsgmUcuqK1Uoa+X8OfA+woIJFOajbalIwZS5axnv97GgsmbUHiEbh2lQy98nJd+PwivGNsb5dxthZWMg8pO\/QxAHnXnjzhs07jhhQGM\/dT9yGAuOCpGiZYxqEoWpuU+ELZccMo+jJBR4tBtPYr+1vBt4RlL798EPPOWattS4u4KxW83898vnxdoYe\/AViTC2qW8Pkq2TkIelMBmbJUzRT7aOPZBMs4VMkXPl8oQ9+owbkJ\/s+FibWDcxErjUHq6NaU5IV3suuRRaIvAy0J0yeIzuJ7o5CPxZMGlKJIyMOC5hbzemvE7NIbLIZlgmUcJpbWShm8tkrydNA7s8YMcxEtX0Qkgctq7Lw9Rf8nRuYnIUF0v8eQTNTGOqnKwocD9EyIX56cerub8PqmtdTCB8TGswmWcThYWpcohYtk128a8P8Ke1ZDmDUR+ocy7cc45Ng6qgciyK3gy4hT3LLmMbl0\/O\/RcFY+ZibB0ubjWW55WCZYxqFNe1atweGv39\/vSKE1oTTmoS4HaB2qgo+D6DwRJmYIb53IXq\/J1JvyCkn2MyoG62oBhMavhgmWcYjTK\/g68e79d+GkojSqEqyrA4KEyqII+tfrdH5nXrPr1PFaX1LU8E+fdc1JsyVBbh4SFxAn6Ngu9Ed5O681ZmEdtlji6BHC8vGa7mm9Fgo8zOlhFRRAK3dw+tgp\/OJACoJLQozsxCrRaapcvxFk63guVrrQEyVAqYzggDpKA93cQG8U+E4Df82XGLpjY1Z5wlrRm2AZhzi5m1Qmro6RViOo+KYOM7O0h8q98u2kX9sPaGE8BXUIgnSJ8O0BzZboACluSZZVv6WK3qLw1ZjouoTGb18hwzsmfZF1djbBMg4nUpKawG6HVOaqOoIUM12oCbQoByaQJVlNeJDnXqqd\/9DF9t1Zf8XYob\/fjn+j4r\/cLcO\/b\/5cjxIvAV0e1jBaowkTLONwo0GxBo0RgcXZ7NqsNUfRQiYwjQO8W64e1ic+SPFvR3h3j+J6IUWG3p2\/KW9blrm3Klak74jDgu5HjkuYFfRrVDMLa85um0CbKqJo\/UAF3fPW8w6iUpjpS5tML80tqbxzc5eQiuAtTmUWlnEEkDBYj2kfyYI9s5ntUwmVRaMa\/FIE7Ve5RzGsvB2XgkYQVZB4FB0exv\/zShn6mIaqDePb6DVLyjAL68hkFdRARudgIaXzkMIIfv0KGXzfem1\/ewTHNeYYsM8sqRRoCEgJcS2hB+G2EfxnIH5ytwx+LC8xY1fKMAvrCEYInaKDhcTYvpQms4J8KxKPkF45wo4L+7TzBW3IB3cF48dnAiRTCZfmcaasnlYEUkCiIkS7Ua3hvxtBn6BXXyA7\/gghRmV9BA0TLAME3RiC1qmio1kMazpLxgtIBaIR\/EdK7Hjb+eD78D8dhv9QeHUR11IMOVT4XBCbviDKBlcdqKOaortS2FRHb\/C4n3XL4HhZ5AEl2gxqYmWYYBnjbJ7okDythaWhZ2Ak0BjFv7VbdnxMFVkD0itDtwNvulQ7PwT+nDo8QeBhIPMmi18C26pwq8Jmh7upRP1XXbJzcHw7WVsvEyrDBMuYkmPJzSqpZsKlk8QqqSBxDd2e4letlB1fzVIJfK\/gc+G6SLbfCVwCXHKVUtpCWyUm8qNZDL8d2MzQrl7Ze4F1njslQaRMqAwTLGNqTh1PbfBDnggNVUbJivrpPCSuoj9OYeVK2XFL1p5+fIYuC4Zrk3UkZws1GK5Ntb1LlMKdWSWFNUGk1Gb8DBMsY04o0aBvsqqKSCwoY+in6qTveIUM78gC4FOKSyZcae7aTbcdkYkE01477YYJljEXJhYU+8EEl7qQA8Uo+lvQd6+QoSthbrN1loJgmGAZ97KFJUPlkF4wOoJ+pEz6712yc1BDWeI8vmQYJljG\/cdEJU5\/9y7kczH6nvNkxy9yq8qEyjCMg44Bpdj072imOJRhGMb97xYqMtGZxjAM46BWLLOqDMMwDMMwDMMwDMMwDMMwDMMwjlhspujepHkmzpawGPd0DNk4OngEa0CJFk+zP9dl5U2aL2IPREun+a6lkM5ljVuP4pZOUy56r23P4rsAN1VVgqw8S7RkFjWgepR4uuNbBulsBu5czulM52Caz7MEdDPoXM7P\/XFNZnNOD+SY2XoPanzl37sUvExzjLN5jypyXaijeI+YaRvGIUyP4vI2VM03yIBSvEQpTJVNPqBEh0PyZn7sljG\/\/1aUTjF+msdQ9oqmEqbDZRwdEhZWXme8T9ufqLgHC74hE5UxvUcqEfKD82X7r3sU1yv4tdq2MCZ6hkeLkpXzzWqQi4BX5OsXMLgLZq4mkH9fv7b9FUSnC1rV7KmZfU8Z0l+ukOGf5u+d5hhc\/hS6XNuXRPAs4EzgJKBVkYbCoEN\/q8iNit64Uoa+3yxczU\/kASWqsfC5CvNBUhkvvIcKLnYkXztfhof21el4vS58ised6NBaflwT3yE\/PF+2\/V++7+u1\/fQU9+jm8z\/9\/YUKOqrobof8Nq\/JPtWx7M94AFhPxwM9smyq8VAgve7lDP9RmX21iAGlWGPhs1OiBQ6fNJ9TxRUKVK8+T0a26D6aYOR\/X6eLTgV9\/OT9S5Gyw\/9uhey4YTadqHsUtyarFQbQrx3HCXom6GM97jTQo4EWwvjeDXK3oLcqcpMS3dQtW3\/efO6XB4tIL9XOYwv4pXHWQdvP8V7Pz7WS\/Gql7PzJTOP\/vuR+X\/y8MdxIqYN3LESeP4obf1SkwEKEu0neBfzrkqxMeEzhZMFvnI8LXRAmbiTKCEP4i0V4a\/ZEmvbmOTaYzB6iVy3GvWYnE48pDyxA2Ar\/BfztxHunFqtLdNEx8\/E9Ci+tIAvzcpqajVoBIuTJEazaDfU+7bg5go0Jur4rlB4eb7U+wgmFiF2XL0DaG5OOr4Swi8IZwI0D4LomH58i+Y2suJ7FuKftajqu\/Dt2kr4VuPhjUABqinR3Im9tPv8zkaDUQRW9u187biug\/btIN3bJzsF7Mrg3EvoP9ik9i5CLRpr2xwOtCNvhvxFeNpts\/Vxgxpg\/3+Eua0c667i9xswgxS\/CyAvX7F2efg\/WhHGQONJzFxL9W7XpuzwwH2ErejXwrB6Q3hm+Kxf3XmCdLn5SRPpaQZcWcMfEQKiXL9kYCjLigBg5W4FRkt192n5zRPTfdeSKLtn6lx4lBpKY9IwFRBuS\/bRKUqAN4W6iy4BXTjf+jzjBatL0kTE0qaKeCd87GYVIkT0qWka4JMEPj6Lz\/J7di7WGEsHr+7T9C10y9L3Z3DwCo6NoUkNTzc6JZNsWGJ1pwImQrtO2ZxTwny4hJ1ZRdqMJWTcZzbWDiU4yDopF5NERPFrgTX3a+cGU7Z94BTQf5\/AouiBpOr7w1EMUl87yKbl7iuPyHsRn5\/SY8RpZMjbF+Z\/pu0XAxchREXKUQ85shTf26cK3d8uOr+yPpaUaLOR+XXQM+OftxCeNJk9AQBvhFD53rbadKDL8h9mKYwXRKgyPoW0NVLUp\/lRF0wruBeu187wLZPsVs9l3RWqjaFJv+i6BJApjZve+jnMNSJeQrtNFj4lI3+1IX1ggVDysomkmmk4mbTUbDB7AIfMKyOMc+jiHf\/067Xz3V9l+RbixpTGKpmnWe1LnrlvJ2D7G\/\/3BQeP3Zhc9JpykSMJNEwHxZBclCX04x98jE6\/Yg8RIQZCPrlXKa3LLZeatT7vt7G9TmvJdQnq5tj+niPuSgxN3TwyQOPsOl+27y\/6d76PWUT+KJjGyCHyv0r54kvuw1\/Hl+5TOqv\/p3M4pU7x30svJxDFEZG54Ar6K+hE0dbiHFYi+vFbb3tglpHONq2wEh6BCem4FOTqzDuKmbcYpSAtuXkx0\/n6M4WiqY1SIE1DBf3CtLj66C\/y+9j07f9OMmek\/m1t8IRTR8caI9Poy7oUJ6FgYPz4fJ3mLtOaXTFynOA0PaD+K1iu4E8CveC1PlaYHSr5P013TaV\/5sehB1rv0sAvUCUQ1NK0gZ8QsfLMIfuAAH2ced+jTBafESB9ISy24tVGzECikCokG6z7viEWTiEk2Ej9yoQzdMVVQ9SB6oOQvnx1P3kjVCTgHUR1NU1TLRB\/p1\/bnZo0r3Cw3IF1CqoqksCqdfnxKGk7ky\/r0qNZewmfu4ZhxDdSXccc5kvdlD44Dfm\/kYjWgFPu0\/TMtyEcEmTeGJk0C42a4BFOJphMo7ManwL8sk28nZINtH\/jZvJSDK43isJxZEHA1VB3yTwPa8Yj9edrvcxuCCtGaCrKoAYlrcqPyi1xBovlIPB+JW5A4AqcTDUh9AZEqfovDfVIVWc7BmWPjgAIiRUTKiJvXdCyTHxYefBT05\/0DungeWdOKfQbFwaHIehY+KUYeVw9utJvm2voyclqB+lOa4qD39BjdKJqWkO712v6cXiE5kA+Q3A3sUYpVOvrn4S4cySzyKUIzmo+T7KW5Rdv0uzT7f19BJEWvWilD39mk+w7zSLiebqZXhBQLiHNo4WAai4drxVFJwVdwraP4j6lyFhyYRgh5zORS7Xyoxz+\/iubdjccfg1EYXFTRbwO\/IcSNHujQvyrjHijhbz4G14BLL5Dtd8bZDM9Bdh59EVwNrld0raIlhTbgoQLPLuGOrYXjl2bRqkJaRk6vkjxJhP\/d1+RH052kqKwsITKKpjJ9LE0daA1ehfD1zXpAhF4yo8V59N+\/qJ3fOZftu2cz0zdbd7dXSNdp+4fmI1270YaE+08mmVEekDIyHr9qoCQhPhYXkSgfZ7UQ60gbaOrQD6HILzglgtuSmQ5SoVbH\/2EfpyMZQ8vg\/gwTHZdMsO5FK2sMTVtwT19P56tWyPZLDkQr9KXgesGX4K8ruPnNN5aCRiAe3aX47jLDX2ne3qXaeSzo4xVWxcjzRvE7C9Q\/DrA8xC4ONjdQIwSP3twtg5c3\/61fO45L0MtLyNPrIVDvJp1\/BZ4N\/O9sHgJdQnqpdh4r6DnTWVfNBlE9zHw+\/UpddOrLZdutB2ja3dXRtBX3sGH0n0V4W48S93IPWpMFy9l1CWm\/tneVca8fCZMyhSnOty8jLkGp4X+myLUOf72HOxRXVzSuIg8AvxTk6cAZC3GFbfivrmTHd0rgZhIrBV9EXB3\/+zLpmcMz7HYLooO0RMdkQfdlB0l7tsO6pruANMLg\/9crtf2qLhm6ozlnan\/YOtHb7yERTrMZm2jCIpFoDD7dLcNfVMVdomFgvhoSCQ1I\/wf4n35tf64jWnCejGwhz\/05SBMvHVrMs+avA5aA65LBP\/Xpgtco0c8d0pJOxLSavGZ56Gy+f0n2uRL64jLygMnWlY6f8\/HZQvGQtOAWjOKXE1Je5ACNGVdF0xK8rk\/b\/6dbhr53T8ZMD0ivkG7QYxal1C9OwkzfVGKclpGojv+xR9+zUnZ8ZQaT5pvAu9dp+5NG0Dcp8nERtEfRfZ2HYEZK0tyFe3qGD7qxeLg3oXAJpC1I5yj678DyjfdwYG\/Obh4PbX7cjdgrmvl7gI9B4Q0SUhVWZyWJlxBiVSJDX2sOxB7MJ1GzpSaqyLJMWHsU1y07b+vTjp+VkDN9eDBMcm904Wy+fzn4AX1EscpdK9MpLk8UAtJMyilyjbCN7o8qH+6SzEO65+dSUpACUgb5yJf1mGUbuWu\/vzsXkJTq37fijhuBvVzdzLKK6vi1nuLfd8uWkbxZbfO4WxNcSxm3yGXoO8B38vf0Cn42cTclZNYTvlPWTOPu5X87mMbn4Rh01+aZDYFoDE1LuJf0a8dLuoT0ngRTJ55gMuTY80pLGOwaw8p+7VjwBqE2vmQnm8ruElLJBlZPeHIfeotZs2PJ8qa2uSYraNIbG\/v6qgElEqDGlifHyGPqTTFBDeeSFP1Tgv66FE69nxAs1SJyagcdZ0MWuL8HotxsZdXQpAUeN0z19V1Cuj\/fvSTLtdqgxywS5BX1SfG+bLtpBXFj6NfOZ+iV3bJlZJMSi4SHRP7qlbCmL\/\/\/bLbxXp1VPtjE6rAULAeSB72b75zM37p4gx6zqItws+3P9+eLiSO4OSQx0qxbro5SQM4A\/Xa\/dpyVi1S+5ivfbj4ID9EnguRiq+hxvsldm6Rr22djXQXLxZ9fQlw2gzqePF4K6wQ+BfKpQnhj86VNYwQP3bkVsj\/XVRifKNkjDy6bUHjXFdq+ZH9mmhePW1eNZ5SRBzXYK13CF0JM6c8VWJ2L0GzjRfckHitBADUTQp3uZS7hvay+HoYVTWOkI2nKFapB2oocP0rtvQiv2bifT6elkKJISuHbKfU\/F5Bjk6Y4loDUUC3iHp2i37hC2z9fx\/+nyPAmspmyAxH8v69P7SYlvhFkU5iRS3sF36cdj4\/hkY0p3MGMX+0rIC2CXqGdxzbQF1XD\/RE1Wzp1tBGhX6gjO3aTfsAhxaZp\/mgM1Rieeal2PvQi2f6bbBWSzkWsFEY8jEWwyO\/pGqYVXOsI\/j82Kc\/ZCrqYuc82C\/6c7Bmqk6wrYpAR9D\/Pl6E\/9yhx170c3A47oO6L2jm\/jtOdeFmA22O\/mn+3ma2jB9OD9XCysHwU7pmtIO\/VSbNuLps1LMBF67TjGV1CWuSEOYuWCDoArlu23O2Qi4shvDI5H0kaqPdAEffimOibfdq+aZ22v7RPj2rNxepQWGGf3dBjy4TkDKGxTEg+BXGftj\/RoWsdFHTP5VGEeJOq7GOGMHezGvjzW5C2LMs7X5SclhGpw\/ePYeg3q2Twz4J8o5yZY\/l5zuI\/rQW4YE+XfXZuYPbmBHiPh8FoIkd2PJzQinvGHbRf2CWkW+dWgser4hQepXvHOzUKY3K4SOOyLE8rvZevpWuEoP+Dd6E\/q5HeVMp+Nr\/K6E\/rpDdVSX9yKosefDCN1cPKwsrScdoi6v0phdPm4S7cPTHjJAriQjLcR\/q148zjOHEU\/jjn7XQRYlAnM\/iJm2l\/6jzcuSNoQ\/dc8uIA8hmvMm4psDSh8dMrtONj58ngul7BL1eijQevtZWlD8iT1mnHB7PzmOdhnRmDq4ebvjkPLakg8Sh6Q4Vjfqw6JDL1onEhnMdKFV6aKV5zHCk7j35gmZCgiKAbUjhHJhYoS\/ZwAPRll2j7h5cztHMuExmZOi2I0W+mEJdxF+9CU9dkMTdQFeRf12rb1TB8x2xPXq\/gT9S2E2NYlI5r4ESgvYBEHn58noxsOe8+u0fAIcUYefC+HlQJEJGWLIZ1714QGaNUFKJ3jeC3FMY9xfFgatqCnObRd+TLGPYn6Lwc\/BmQlGHlGPrVVqSQPfHTSRc+UtAqmlbRNEL+qoBcvkE7rrpcFzx44z2cBLiXn8jSAArwyHnI2+chb5mPXFRBnhyC3hMWUX4TOogzN+4fu+Tm+hqmnl3bmC3srdL2hCLy2Nqei65z62OoRvFz+Y1WJL2mCn8s7Bk3lEawsk5pQZ4pgs418z0kX7JglKGPj6C\/LCNRUxa\/S8C3IIsc0Qe7JIQEZvvdBYoLQVum8qmiMJR+2yTg95loNVA\/wysNHoLWvC3NudcvR9pKo7JCtt0F8k\/RJJcty7PxMfKWy7T9idlA2S\/XUIEuGRouMPji3fC+CMZaJjKR0+b8oXxRaQ31Y6gvIs8pEF2\/Thc99d5YOnQgXcIG6CiajKDJLjQZa6omkLtWCkkBcTGiCbzmAhn67kzJnMvDknSF6KJoUjBds2C7ol96ldy9JZ\/i75Kdg4J+Md7z\/ZInuCqszC3guQ4aRQurhYYib0yDhUWzaziK+hJ0bdD2lyGoDxOYs7H6HVMvMcqqZGgDQgrB\/XDvz+aFCda9TBVJVZHbGOyr4r9WRuImy0dS0AJSKuD+XQT1ITeG\/RKtsGi33i3b31mHpXX4goQncuQyi2vylHmWhZ\/EuGOL6P\/0acfje++FRdr3QvggbqpEIROWj8i8cI7\/XEeXr5TBy2YUq1CWx\/dp20nAs5tmW9Gw7Ebq4SkyMKBEG6EwREgPiZAr6qhvdkOzWBPAWf3a8QhCEqWb28FJCtAt27+VoJ8sI843CZ9OCPOHvqy0OHRsNhvw+DGQmkxyeTUkvwKyKHcf72NPJJ3uRdNPE6z7gAKi2ZRtIri31PC7oiY3Ig+mzoPH92vnBZLlVHEPRGtAiVbJ4I\/Ok+0vTtGnjqJXeqi3IHkFh8mB+Ti4iLQDV2zQeYu6DvBaQj1AT+1o+u\/RCDTF37Yb\/y+j8LhuGfz8gBLNdAMunxh+L25F2pPwwBhPZQjLR\/TGC2To61neUX210OgS0vNl8EcJem0Z2cP91pAgXATfPdfgezM9iovwPaPo70rBnfcTAWt8K+64HbS\/E1x1dt\/YuBvY7aZwt7MCj48ZX7B8H7mFQliYP92rjMQVJCogZX+QacRhnel+iVJYIdt\/06\/ta8rIxWNhDVc8Ec9CFX2PoLdVw1hx+ytaEGJRzRnIV+jCR1aRN0TICocUJicOOoiqaDIPOXmUwt8j9OxDgNQBgi\/OYn8QtJj5XbK\/d0JQeb0b5AFMmg0E1CHiYaSbwTUIukmJZ8wjysrI9ChFkFUN9szhEnBJyE3o6NOOzyoau9wYQZ0iCejxSbi7mz8nSfj6l6zVtg90yfCO\/YwLxefL8NB67Xwz8MXM888D\/G40XMO\/B39DLRRSjGbwMyORXdv7tOOPDjlew2fHT20D1Qg59c8seiK67YYpK8geWHyMuAZ6xxj6FgkWo8g0caowiyp\/vD8swCNSsK7NZvNGWPDJUXa9qIKcOZa5EwKSLaA9UZATs5XvsxcsRQbA5TW0YSKRL3dHzpMdvwBeebl2ri+g\/1VETp0i2zmqo+rhpZco710tNFpJpTZDsFPRzpkCqgJcpaeUtrF9vp9B\/GbjNpSRaAQ+J3jXSvSa3Xuu83MN1Lcgj+qn46pRPen513FjOtMylvymPJVFzxB0SX1StYvMZSeCkwrISZOWJwJh9ioTuubPuTrqK7gHV+EsYGBjdn3mMmaWZA+eLtn+pT7tuKIFOW9kYtZQQpKszAc52zNzJcXryJ+C+l0XJiomn99s7Wn6FoTrF4dmFPfaUq2skggJ7FghgxsPxXv6sO608YjspnyF\/LEqJG9qoGOT8mzwoPsaeNPY1ZovkZgcL+mV0IaqR0PC5SrZvinBndNAt8aTMqqz6WMBTlxA+9EAI0SqwRqcZtPy0Omshzx4O8ZdbQrHJeydhR5Ebd\/LZppFVSm9dRT9WTaDljZbRKOhYOKzK\/zu33oF37OPSYxQpM93l8Lnp7Qo0qwC51SvxvTXSzVcz4tgYt3nXNmcleKPkbeNoXc3zzSTjRnde7H3tKS4zzdCkb7JFS2iKuqLuOev04UrlwnJjXM0IlRx+2FJuk2hG0+UdeWJpnuZYN3HZO5HvEJ2\/jhBPzJpyjq\/mWd\/wbOn4AZta+\/Xjr\/fpMR5Zc2phGtZKARXXCnbblX024U918M1D1\/XIO4AaOWPHtiZNa\/QKZ6UTxFBT57i+h1LWP4zQvGUEu7YdO\/SL+JRHH54docLgpa6ZctIgl9VR4ez4n066cZLyrg3rtOFr+0Vkp4pCsnlZWSuoO0khz5nLNRDj6b3bKct4Tvd9XJ1lBietF7bHt0r+DX7MQPcK3gFOU+23+nhH+MQL9O5jpmt2VKh49l+UwO+U5oUd8vjjCmqMe4\/+7XjrDOERk8YS\/F0Ewf537OVAn5\/LLKlZGsUmVivONXrYLufD\/dqDWEAZmV0+ym+b4TGuSVkSW3STNNsGQAnQtqvbvVC5P130H7uOnX\/ILL9JxCW3Uz+zND4FDbt0wVBBfUptd0AXdDoR\/7k4NFMmmGsoxqjz1ynbY85Q4Z\/lm9vOejGsNi2sRroV94chcTO5hlQzYK93mcZs0OzsEJ8thxplez4RZ+2v6aIu9KH1AaX37geokawFv59nbb\/dqUMfWPyEqQl4++NXt6CLBiZokifzjGGI037kOXBJRVcZTfycuCm\/Q5MZwvUuxhc28fCl1SInjM2xzGTWXiuS0j6lfensFT29NybFsxLawQb12vHGy4Itcd8Lk7NEwhNjWs9QL92nBUR\/\/zl3H03wGz9vOsgGlB0M8iSGQog3luNck2w9uG+bVSibtkysk473qjo15uzpWf7NbmFsEHbTlbkHTtDFYin19Dv9unCtUp8SZds+9lUXsE67Ty3gD6hNqk4XdMODHfQehe6UxDUq94UI8+r7un+ZCkZrjVCPrtB2\/6uS4avbd7Qldr+oAT39hhePLZ3fChzg3VHBW4GuHO2bpOglyiFbhn67OXa8dfzkTc3C05+4zmkVIC+z2jHsi4ZvHk8kz8UsvOX6DEtSvX8xjSnvRxmVWcdk6mz193mQushPe9S7XzvRbJ91\/4Om81Zrpho9KYa\/kkRMi+dgyuYPXx8j+JWyODV67Tjs\/OQl40E9zDec8JANYIFBWTtem0\/T+HSGL7\/chnaK7P+Uu08toQ+XtDzyshLxkjeKcL75uDC+YOlIJ8J1gyuYXjiD17bpx2faUVW725agjHLgKyEoK\/8ayuyMLRR0tRBsUy0eoz0\/PXa8S1FrxL4VYiNRSco6bME3wVS8XsPeB8jLoGfPZ+7xppmir7TVH55jydyKKvCqQ2ia\/q042eC\/l7RGsgDElhShqOrU5cy8SXEjcJ3umRwGEWWzCHO055NYixm8B1\/ov3RLbinjey5jMU1Ql30B5TRKzbovGecz+7tmWvjBNJ+xp5RwD2ssXcuFSnUq+jnJFSOi6abGJhIE5EW0BcL0tr0RpegWsYdJ+gLgb79tsxzK0u2\/6ZP2\/+lBfnQaLAso7k8LNcorFHkSmpvrFJ6XAk5uTbJuswFP0Wp4J7p4Zl1\/F\/Wa\/sdKXIX6C4HZUWOFvxJRdyxLmsLpujf9mnrpcsZ2fqpcE9PZ6VKWCKki9dr+1vSGXdbfAEpJSQ\/XiHD37RGqvcDy8GjSET9XaMUn11Ejk+mKO87FQ\/iFHe23Nbo045nFpDlY5NKI4+iPkLmFZHngzx\/TzvAUQ91uacqw6Ihz0m\/gKD5TNFXKN8wRG1zecJ93WNwN4JL4MrIYwR5TP63BGVs6nrouVsqgm7I3ds5nz8QEdIrlVU19Lsl5EHNiZxZNn\/SgjyqSuEzA\/CirLlG2htqtnfHiDR\/RiEtIa6G\/mSFDJ4\/l33q0\/aFFeScEdQ3CWcahRZtKzbpU69YJt9OxtD9Su3I143C0MdGaH9xC+5vxmauNz+Ve6kDSnSejGxZqy3dQvrVAixsTCrmJ+MTJupDDzE5OkaOnpD0\/BpDHR3vaNOCO26M4oUiIx\/46AwJs3nqhyBHl5APzzxREBqpbkM+A3zzYGmk6o4kwcorLZwvu7cpvG0upv0PeWC6Tud3gv6HoJOvnAhEM81spVPMbIUblXgUf1uZ9HOqyFJIN4J7vtw16vAfzKpt6hTWhsvWKPrm7SRZX7sp3Ke0gkSj+B920vmlrEuP349z6AeU6OUydEcNXumhMUUhw3gUTSq451dp\/7CE4Lf06YJTFM7OUkiiSQNRFK7MknCLM81cZa9isNzk82mWI9V0rNFYyHF6yp\/Y\/Mgw46f7l4om6OZQcbUeI2+o42vRfiSl5hb+K2TrdxPoAnaUwgRQMk1cziXgpxpLWTmjvEekZHW2XvdJbWt\/PdRn40pPN07zVx2thYauMnYw3cNHlGDlA2e5EnXL4MY6urEyUTRuRtbw7TQimgeSFJEoylJaJs8ezXZmS7MuwVkZnNd3yc7BjSGgr\/nawgvYsWEUXT8PiZm0xKdpe25SA0w3xQBNikhcQ3eX8K89W26rrWH\/833ymdcLZfCaGv5d5dBecfKi73gUTcu4N\/Zpx+uDOxGtasFV0j0z1DUKVtmQw39FgkAkM81cdQlpFzR6BV9Gv1RDtzSni+RlZ0pIEdKVCJrSut9jPXcNz5fBH6XwkfIsx8x0otUtg9dU4TkN9NZsSdN0kw1umiane+SfNdCkhHtgK+7Ns72ms2ykGlkj1elPoKdpHVPTWqZ0mvK7e617yj63T6vhEVmeTRl9axXdlvnFDZ1h2xuhcIHs+GONZNlu9N81LHSOm9YLpkw0npy8v7mFNN6TsBJEaKwGr7pAhr6eB\/THb5Jxi6zwmt34z2e9AKXpGKdrcrnXtlqQWNFtDXT5y2T4p1PFI7LPTHn+ZTzTvOkmzhIsVzH0oVF0Y0uwFiafQ22giUPf36cdy4FnZes2fdN7GiXEp3Dt+ey4XWcbK8ny37pkaFjQLxQRbd6+gK8HC+EFa7VtodCoZudmrzFDcCF1X+5wKOcs7x9BNxcnjtdPPl8zuU4TltbgD6rIslH8ZRHQvGieiUamU6W0qE7qW1hECsWQArMkD7zHE9+1xzWd7Wvi2h9cVXEPplb1LWUkKiHFfE1TESmFWSMt7fledUBb87qnElKohBmm+dE+zP98oXGXDN2eIu+u4MY\/P3nbQBmy6X9FXiU7B7tl8C2KPm43fi0w2hL2IyqEDsjS9MRMcgGNQIqIq2Tvq6LfqMPTVsrgZVOuvcuelN2yZWSFDL1kDN7u4O5sWy7OsvWzgZ1k20rzvoiFpm2N4q+u4Z\/+Chn63+nW+Qlamnz+S0gxy1trmc5VCsdWf+0Y\/pYFSKE0aU1aAYnLuJYyDJRxZ4TaYHuc66ILq5Q2ZqVhZu1uLQlnSRzyBQVpyfY323YhQqJ23PEx8UtvY3A0HzP5tW5eM5fuo\/pCbrmskMGdAm\/O1uMVytl53nPMSMu+LC1V3EWy\/c4LZOiVKZw1GiZqaAn756KJdA2fX1uycj5x1rcwO5bIoz\/dib4uZWi8rFYDjfNjzI9zLq+JY9GKzRLu+eTKg8G3VPHH1SYFY6vhhrljXDQCI2EWzVf8xAyaZrGMwYRCbTbB1JAhvP2SPtqfUEGWTMqzSceCAP4Wsul\/Ga8ZLiJDvwIuXKeLPlAjPTeFsx1ysofFBajEoVpDMCFQUnSnR+8U5DuKbFgh26+DiVSJ6ayIfKnG+bL9Q5do+3+3Ii9T9FzQByuyqIREmXjhQzCWFN3t0Tsb8EOH9HXL0LXTbWvi\/MsfqvgbJ51\/HwV37zfTCf\/NSrRRdm\/boItWjKKf9Hg3xaLryfX59phwGIOho4ivyq\/LXFwsgIIOXj9G+xeKyAnNS58m9l8fuoTF5Rrpd6v4Y5pKOuc\/E816Ws3Ufbtppvnqy7XjA\/PgmdU9Zw3TanjIbZ5NLDDvBt0tg9cA16zTzjNq8KIUfZbAg4DFxezhlAfbayEeuiNF71L0JsFtVArf7JYtIzCRBxgj26v4G\/PY6VwXwk\/ce\/J\/4+P\/4PDEjP2hR3FrsoGX\/26DHrMIaien+KNAWgUXg1YFHanDnxoM\/Xp1mIke\/47ZThVPTsJcrwtPUPQkT9ShSEuIZ\/mGws4C0V01tt3yCqG6P9uas3V8CLQqO5jJW241n8MN+oCTE5KTBdo8UonxXpExjx+Mie88X7b936TxGPceorlVh6RgTc7onRw\/mHxDTJckF3r+ze3GnCnhbqptT7Xfs91uVtFBZbyA3dzP0Wyzj\/NtMYt2TZP74DUzm+3NdP1mZS2Nd8\/ZP2ZzDVVx07mcc93+TN+1X9nhGkp4bwxjaVbLbZpWOez9\/mxx\/j29Lw+2THezsA6wpbER3GaQpdnvrguxFt0M2rsfIjUL8RrfFoT1a7MVKePgtuAnX989xtIh2iLOMAzDMAzDMAzDMPYTi2EdokwV5J6pflFzkHimGMhUwfcZYyZTBHf3J0h\/T+IyU+3zbAPXhmEYhmEW1pFOnu8UFmHHb3FQDmXG1YGrOpIPnS\/DQ+N5UVlt9auU0iDtryMkI+KJbu6WbZ+abPH0Cv5KbTsxJXqtorEi3qGRottuY8cH98jzyb77E7p4Xivpmwtoh0fqBWhpwJe6ZfCavfKzss\/0KO4hdP5tBKc20FqElDx6W4nBT443Kp2FdZTv8xXaeWxK+nqQIkgao8UEv24Fwz\/rAbEZtcOH2E7BoUc788aGqb+gDR4+RmitXAR2wrXAtzL3KM07omxj8YOE9ENlRCJgN36oT4\/a0C1bRnJRWQquF3yDaFkH8raR7FnWgmMH\/hu98L5mAdoE0TIlbaPxtFai3iRTmDKwE\/\/E5cq3yMr55OKTp5UvBfcndNU83Bm7gVaEYfTnwCXZfs\/qSZq7lA20q4P4HaNZMb95OAaRYxC61ij02pA5bHB2Cg4hczhYJ\/Hz5a5RRa9qQFpD61W0Hnr7uWXN7984XvQv+esSImNoPSta2AbJ42GiacXSrFqAwBNq2ffW0HqouxRqda1pKgmzFNKsg1i3B18N70+H0VSQRz+fzieLoMunH2Mj1dASfSxb3rJ7rucjX5MnsHIMn9bQRh1Nd+C9oGf3adtJMrGcyjDBMu5rJiqE+m\/X0EigSCgDEgFnwpTr4c7K7tgIIJSD8U\/NhMdlzQw0ZE7rk+pZaZEIimP4MUf8o+Zt6\/j7F58CcnYVdQKFvMZVBZG8oeny6dzbMPaiptecxmKe5b2ejmfE8OhaWE9ZEIg8aAXXKkQX2Dg3wTLuR\/LFwWU6rk9ha27yJMEdevgV2nlstrDWLQe\/Vk8oKzwu9NObaJopyOMHlGhp5joG16rzIYqckmZ6V0DwyK0PZOuvNGuA2jxuqiTdlVD2OWWiHpWrBefv3H7tOC6v7XVgg3lhKVSIx9FdCruf75uGcsuqQNeALp4n98Y+GCZYxmz8whBM75LfDSv6nULWCqwROq8c5fGPytzBWASN2X26wMmNIGgyISicAR1HS3D14nDH+6cUodDUnh1Fr18mJHnaQGZdpZcq84GuZM\/BJFkZ3rSCdHh4SXOs6UDRE4oP+kt14QkxnF1taheWVWqIaqBFOK1B8pR7Yx8MEyxjlmzKbk4P1zSt+E0riKTIGQDzxltq+ce24soKSXYzuxR8Gemso4\/MbubcTXtcMQSmPFmXY4dcNSku5gCKtD29jHtofaLevCo6kqtCGsSj+xKl0HWAi8Dl4lNCukpIe5rViQLUo3lJX3XBQnzVNG6yYYJl3BdcN24B+R+M4EddsJAktG\/XpwA8J6vt7ZCnphOClFdDzV9nZTdzo0+PagXOyGvfxIir4e+MiH+evcdDczfl6KJMnHxm5W32yPuLmSETehRyeoWOpc0xp3vsDWa16Af0uIpHujNh9OXgkV4LXNIS9sfXQ+34p2\/Qzoflteht9JhgGfcxvVlH4d8x\/EuFWwsTIgHIX23Q49tF0NADUJ8Ufo\/LGlrkxe1EkScNKJEIGpE8KEYeVg+xH7I28t8\/T+7e0hNm4lieVSu9TNtPd+jSrJmElkLM6CtC4dNVdCgOkwBpjMSCXkCYLTwgVtYawv7WGVlagkdk3WMkQsTj+gX5dA1NgNhDowWZ79HlNmpMsIz7MY61EVyvkAhcn7thWb+yjjq7nghQZuyvHfLANFT2dB79i0d3RqFLMx49tUr7w8Nn9fElpJQ1xXDBKpMbIJtJlIm7vgBdFVyrD25mPILWIb6qW7bcDVxbCG5lHit7Yb92HJfFyu5xHKk3C64r0h1nzS9iiHeTbvMkN6xg8JYE\/WkxtIWXGoqiKy5WKuNJqYYJlnG\/qdfXMh9NFNIyQpylNwjytBIiitYrwU36b+DqMkIKjVbcAofmPQ2fqeN6iKvhG8A1mWCl+SxhsNrkgszdooiIR29aTNuPB5RIcZfn++MhreDme+QCgGO5Zy5ZjwbhvFLbTgQ9pxbarbnghso3XyHDfxgAJ+gVWUa0NECLuIcspuNsmHsvRsMEyzgA5LGkhOgXVfxdWV13H8wHecxPlALIY0MnA3F1QHHfAq7JTAwNF9+duUmJgUdnQpN3Y9j8ZQZ\/AyFh9bpMbFqonltETmyEzi1Zc1L5z7PltlqXkK6UbVeNoT8thbHlQzqFvnStnlBezT0u4ZvVNo9WVHCtKaQuiFIaoR+FkEy6C+0bDa2\/IoEkHI+uUMVttuD7IY0tzTlU41iC71HcKrZu6af9ByXkhaMo9SwfazNtpzk4PbOECjX8qCDXAcdXQ7frqBFcwcdtYdEjIT0+BO3RIkIdrtmYZZKTtQDrUZwiF8RAPbSAimtoouij+7X9WI8WHbJb0XrQFo2qqC8ij2qw6ykIV6uGnZgrqohAOqCL51VJX9qUEOYa6DDw3PW6cKmHSJHEozsKuKMS1FVRdchZl9N5aq9s\/\/XB0nbdMME64ixkEZI+lRtSeKFClJkwDxLcSxQe1AgzaK6G\/mCFDO4c0MV\/GCO9uYyclgXpH5Tgzy\/g5jcyIauhONz1ANeB2xo6H6d92r4kRp9WDcmZeR+9uIJ7U3NgqIGSBeQdoeefa8BFwNX7e6BZOoWvkTy1hFuSdfeJsoTYthLunc37UEdpZB2mPaQtIcF1BfBOy8kyl9C4f\/DhqaNX19CGy65n1g369XnfwkIQlm+EhNOtuwW+UwgfToF2RVen2cLhArg6epcn+hHAsqaOxA7pLuLKPsvTyraf1NDGGFrPX0kIxica3E6pBy\/srCt10aki6NYpxp2gMgRxjxJ\/KvvZo8SblHhAiTbnbdbgVa6pWW3e\/7HatP0xtJ5O9PJTQjIroC+9VDvnd+WLsg2zsIz70C3MbtqXM3RLP+23FHCPzKwkJ8i8rO5MPIo2BP3+RNUEva4Gr8ksIBGkNfOPNEJwcOMK2XL3ePsp8Bu0rT3JMtuzVvCUmnrmTUU1BMUlhXQ+0rab5MXA++eBVPd6tzRWC6NTHOM4\/dr5UIdflgmgAygj0XSRfM32AZAGmpaRkwX\/HISBHiXu5fBvi2WCZRw8ZLWlRPB9KtcU4ZH1LC0hTxItIFLD\/36Myo2qO0QErVD6VpX6cARt6UQQWvL\/OOTrhCqesjmkNCSpytkV5ISssoKEOJf\/Vh1+rmiFpnb2LrPeBDkvQjp1PLYmK3+ij\/3wY7mxsX5ie5IGYTu+X9v\/gSaLTkEFKXr0Dytl6ArQl5ZxC0bQRLKxW8V\/2cHvFErZMedBN591rH5ZhLT4ILwCshIY6GX66qyGCZZxL7E0q2Ml+OvrRG9u6lwtgM\/cp++vlrtG20Omd9olf9narx0\/KCDP8iFRdNyVrKH1BvptBF2u6MSyGlmVvUcdRAk64pHXrZTBW6bbtz7tiIrw2gSoh2D+Q3\/Db599hvCVfh2PgbkEiOCEAu79k\/3dVoQd+O\/1KJ\/1sCqbGCAGGnDHGHSvlqHh6fZhvbYfV0CeWUUl5IXpM\/q0\/bRuGfqVBd9NsIz7mOsyQSlR+FGV5M4YOSqFRrYYOPVQBPlaHrPJOwQLfCOGZ1ShkQXQ0xLEVfTnNcq\/h6yeluA\/q+2nNZAz62hDs6U4Y\/jvdTP066pSuHOStXIsROF3uqEBr860p1FEot24lwNfCXpDI\/ub90AtuLPNLl1aCFnzf3oIbU+N4fgGWg9xOZEGetVqGRq+ZJp9eDUkV+D6CEuQEoVGGRePwnnAP1nw3QTLuK\/jWNkauS7Z+pc+7bylA\/fAEXwcik1JvBPvFf0hgm5WNF\/onKI\/SJCoDRf54JIV5iNsIf3RarlrdJMSbyW4nHXkHUcTVXbhkRA3ooZsyGpo+dWTrZTgm+nH6LyxncFbFuNOH0OJECrw8s\/qgo\/U0eICXGGmQlgeaEEYxZ\/oid7RiYt2olGU15FA12cNKPbah56sNEUf1WtSirs6iObXUEoINfTv+nXRx7tk211mZZlgGfcxm8PdK4L\/j13whyzPiiLqBL3teIbuBFgD6rKbs0LrTVVGP5Cii5IQ75EaKh42ZK6mF8FfpaeUBhm8bQfpp8eyWb8RfL2V5KswsSh6UmzNo7g3yG21DdrRO4o+ayxULpUSEjUoLHDolTvRX1XDWkA3dYgOHQ3lrbYKuG342xPQGHUN9O4KQzdmFUX9VEIeSuGM3N2vxbfV0MeOoX43KhUk2oVvB+6y0WMYhmHcK5gPfxgxoERDk6yVU0GXydTT95uU+NZJY+BOSCe7SFO979WQzKbv31T7lMWb3LGzHH+nZrN\/zfsw03HNZh9mu\/+GYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYRiHM\/8fK+6gRQ5SBmgAAAAASUVORK5CYII=';\r\n\r\n  \/* ================= DATA (from the Pak-Qatar Safar Asaan and EFU Travelcare brochures) ================= *\/\r\n  var WA_NUMBER = '923223579770';\r\n  var WA_DISPLAY = '+92 322 3579770';\r\n\r\n  var LOGO_URL = 'https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/logo-green-500-x-500-px.png';\r\n  var FAMILY_IMG_URL = 'https:\/\/insurancewala.pk\/wp-content\/uploads\/2026\/10\/Globlewell_image.png';\r\n\r\n  var INS = {\r\n    pq: { name: 'Pak-Qatar General Takaful', short: 'Pak-Qatar' },\r\n    efu: { name: 'EFU General Insurance', short: 'EFU' }\r\n  };\r\n\r\n  \/\/ Tenure: label, days, kind ('s' single trip, 'm' multi-trip), months (multi-trip only)\r\n  function T(l, d, k, m) { return { label: l, days: d, kind: k, months: m || 0 }; }\r\n  var MT = ' (92 days max per trip)';\r\n  var TEN_PQ = [T('7 days', 7, 's'), T('14 days', 14, 's'), T('21 days', 21, 's'), T('31 days (1 month)', 31, 's'),\r\n    T('62 days (2 months)', 62, 's'), T('92 days (3 months)', 92, 's'),\r\n    T('6-month multi-trip policy' + MT, 184, 'm', 6), T('1-year multi-trip policy' + MT, 365, 'm', 12), T('2-year multi-trip policy' + MT, 730, 'm', 24)];\r\n  var TEN_EFU = [T('Up to 7 days', 7, 's'), T('Up to 14 days', 14, 's'), T('Up to 21 days', 21, 's'), T('Up to 31 days', 31, 's'),\r\n    T('Up to 62 days', 62, 's'), T('Up to 92 days', 92, 's'), T('Up to 4 months', 120, 's'), T('Up to 5 months', 150, 's'),\r\n    T('6-month multi-trip policy' + MT, 183, 'm', 6), T('Up to 6 months, one stay', 180, 's'), T('Up to 7 months', 210, 's'),\r\n    T('Up to 8 months', 240, 's'), T('Up to 9 months', 270, 's'), T('Up to 10 months', 300, 's'),\r\n    T('1-year multi-trip policy' + MT, 365, 'm', 12), T('2-year multi-trip policy' + MT, 730, 'm', 24)];\r\n  var TEN_VIP = [T('7 days', 7, 's'), T('10 days', 10, 's'), T('15 days', 15, 's'), T('21 days', 21, 's'), T('30 days', 30, 's'),\r\n    T('45 days', 45, 's'), T('60 days', 60, 's'), T('90 days', 90, 's'),\r\n    T('6-month multi-trip policy' + MT, 180, 'm', 6), T('1-year multi-trip policy' + MT, 365, 'm', 12), T('2-year multi-trip policy' + MT, 730, 'm', 24)];\r\n  var TEN_HAJJ = [T('7 days', 7, 's'), T('15 days', 15, 's'), T('21 days', 21, 's'), T('31 days', 31, 's'), T('45 days', 45, 's')];\r\n  var TEN_STU = [T('31 days', 31, 's'), T('60 days', 60, 's'), T('90 days', 90, 's'), T('180 days', 180, 's'),\r\n    T('365 days', 365, 's'), T('730 days (365 days consecutive stay)', 730, 's')];\r\n\r\n  \/\/ Rates in PKR per tenure (same order as the tenure list). [individual, family]\r\n  var R_PQ_R1 = {\r\n    standard: [[1100, 1650, 1850, 2450, 3400, 4400, 7900, 10500, 41743], [1550, 2400, 3500, 4000, 5700, 8000, 13000, 17000, 94500]],\r\n    silver:   [[1600, 2500, 3500, 4150, 5500, 9500, 13000, 18000, 64520], [2000, 3100, 4600, 5800, 8800, 11600, 20500, 25900, 115000]],\r\n    gold:     [[2300, 3200, 4200, 5000, 6000, 9800, 14000, 19300, 72000], [3000, 4500, 6500, 8500, 11000, 14000, 23000, 26200, 150000]],\r\n    platinum: [[2700, 3900, 5600, 6800, 7500, 11500, 17000, 24000, 80000], [4000, 5500, 7700, 10100, 14050, 18500, 33400, 48500, 185000]]\r\n  };\r\n  var R_PQ_WW = {\r\n    standard: [[1450, 2200, 2800, 3200, 4500, 7800, 14000, 19000, 75000], [2750, 3850, 5500, 6000, 8400, 12400, 20800, 28000, 110000]],\r\n    silver:   [[2200, 2950, 4300, 4500, 6500, 8650, 15500, 40675, 76000], [3200, 4800, 6900, 7950, 11800, 15500, 27900, 75000, 195000]],\r\n    gold:     [[2750, 3150, 4500, 4700, 7400, 9500, 16300, 48500, 85500], [3800, 5800, 8500, 10000, 15000, 20000, 36000, 78000, 225000]],\r\n    platinum: [[3200, 4000, 5000, 5200, 7600, 10000, 18500, 50000, 104000], [4600, 6800, 10000, 13000, 19000, 25000, 45500, 101400, 285000]]\r\n  };\r\n  var R_PQ_SCH = {\r\n    gold:     [[2100, 2900, 3800, 4500, 5500, 9000, 13000, 18500, 56000], [3000, 4500, 6500, 8500, 11000, 14000, 23000, 25000, 125000]],\r\n    platinum: [[2600, 3700, 5200, 6500, 7500, 11500, 16000, 22500, 80000], [4000, 5500, 7700, 10100, 14050, 18500, 31000, 46000, 170000]]\r\n  };\r\n  var R_PQ_HAJJ = {\r\n    basic:   [[1000, 1600, 2250, 3001, 4000], [1944, 2800, 3050, 4369, 7000]],\r\n    plus:    [[2002, 3000, 5000, 5800, 6800], [3983, 5000, 6000, 8500, 11050]],\r\n    premier: [[3000, 4850, 5650, 7000, 12550], [4774, 7546, 8750, 10550, 15750]]\r\n  };\r\n  var R_PQ_VIP_WW = { vip: [[5198, 9356, 12000, 14500, 22000, 30000, 35000, 45000, 55000, 65000, 100000]] };\r\n  var R_PQ_VIP_X = { vip: [[4427, 7397, 9294, 10821, 19607, 26372, 33000, 35417, 40000, 50000, 85000]] };\r\n  var R_PQ_STU_T = {\r\n    standard: [[3500, 6000, 9500, 14500, 16890, 32000]], silver: [[3800, 7000, 13680, 20950, 26740, 45500]],\r\n    gold: [[6324, 12628, 18277, 30458, 40000, 70000]], platinum: [[9034, 18040, 25501, 38200, 60000, 100000]]\r\n  };\r\n  var R_PQ_STU_N = {\r\n    standard: [[3000, 5000, 9000, 11750, 14750, 30000]], silver: [[3500, 6450, 12850, 17851, 21505, 38980]],\r\n    gold: [[5000, 10500, 16851, 26740, 38980, 53500]], platinum: [[6820, 15095, 23500, 33500, 55686, 78000]]\r\n  };\r\n  var R_EFU_R1 = {\r\n    basic: [[1000, 1500, 2200, 3000, 4500, 7000, 10000, 14000, 10000, 19000, 24500, 30500, 37000, 44000, 13300, 48000],\r\n            [2300, 3400, 5000, 6800, 10200, 15800, 22500, 31500, 22500, 42800, 55200, 68700, 83300, 99000, 30000, 108000]],\r\n    standard: [[1400, 2000, 2900, 3500, 5500, 8500, 14000, 20000, 13800, 26500, 31400, 38000, 47900, 57000, 18800, 74100],\r\n               [3200, 4500, 6600, 7900, 12400, 19200, 31500, 45000, 31100, 59000, 70700, 85500, 107800, 128300, 42300, 182100]],\r\n    gold: [[2200, 3400, 4900, 5600, 8500, 11500, 19000, 28000, 18500, 38000, 45500, 55000, 69400, 81000, 25800, 85900],\r\n           [5000, 7700, 11100, 12600, 19200, 25000, 42800, 63000, 41700, 85500, 102400, 123800, 156200, 182300, 58100, 210300]],\r\n    platinum: [[3100, 4700, 6800, 7700, 11500, 15200, 26000, 37000, 25200, 48800, 58600, 70700, 89200, 104100, 34300, 108400],\r\n               [7000, 10600, 15300, 17400, 25900, 34200, 58500, 83200, 56700, 109800, 131900, 159100, 200700, 234300, 77200, 266200]]\r\n  };\r\n  var R_EFU_WW = {\r\n    basic: [[1400, 2000, 2700, 3500, 6000, 9500, 14500, 21000, 16500, 28000, 38000, 49000, 61500, 72500, 21500, 81000],\r\n            [3200, 4500, 6100, 7900, 13500, 21400, 32700, 47300, 37200, 63000, 85500, 110300, 138400, 163200, 48400, 182300]],\r\n    standard: [[2000, 2900, 4200, 4800, 7500, 12500, 18000, 27000, 22500, 37900, 52000, 61600, 73700, 85000, 31300, 123400],\r\n               [4500, 6600, 9500, 10800, 16000, 27900, 40500, 60700, 50700, 85300, 117000, 138600, 165900, 191300, 70500, 299600]],\r\n    gold: [[3400, 4900, 7300, 8500, 14000, 18000, 27000, 42000, 30200, 61200, 84100, 99600, 111900, 120200, 43000, 142200],\r\n           [7700, 11100, 16500, 19200, 31500, 40500, 60700, 92300, 68000, 137700, 189300, 224100, 251800, 270500, 96800, 346500]],\r\n    platinum: [[4700, 6800, 10000, 11500, 17300, 23000, 34000, 55000, 41200, 75600, 103900, 123100, 138200, 148400, 57200, 180200],\r\n               [10600, 15300, 22500, 25900, 39000, 51800, 76500, 123800, 92700, 170100, 233800, 277000, 311000, 333900, 128700, 438000]]\r\n  };\r\n\r\n  \/\/ Benefit rows (key, label, group)\r\n  var BEN_ROWS = [\r\n    ['med', 'Emergency medical expenses (hospitalization)', 'Medical'],\r\n    ['evac', 'Emergency medical evacuation', 'Medical'],\r\n    ['repat', 'Emergency medical repatriation', 'Medical'],\r\n    ['mortal', 'Transportation of mortal remains', 'Medical'],\r\n    ['dental', 'Dental emergency', 'Medical'],\r\n    ['famvisit', 'Family member visit', 'Medical'],\r\n    ['minors', 'Return of minor children \/ escort', 'Medical'],\r\n    ['returnhome', 'Emergency return home after death of a close family member', 'Medical'],\r\n    ['repatfam', 'Repatriation of close family member travelling with you', 'Medical'],\r\n    ['medicine', 'Buying or shipping urgent medicines', 'Medical'],\r\n    ['passport', 'Loss of passport \/ travel documents', 'Travel'],\r\n    ['card', 'Loss of credit card', 'Travel'],\r\n    ['lugloss', 'Luggage loss (up to 40 kg)', 'Travel'],\r\n    ['lugdelay', 'Luggage delay (over 6 hours)', 'Travel'],\r\n    ['money', 'Personal money', 'Travel'],\r\n    ['flight', 'Flight delay (over 4 hours)', 'Travel'],\r\n    ['cancel', 'Trip cancellation (per flight)', 'Travel'],\r\n    ['curtail', 'Trip curtailment', 'Travel'],\r\n    ['legal', 'Legal assistance', 'Travel'],\r\n    ['bail', 'Advance of bail bond', 'Travel'],\r\n    ['hijack', 'Hijacking', 'Travel'],\r\n    ['tuition', 'Tuition fee (optional benefit)', 'Travel'],\r\n    ['pacc', 'Accidental death in common carrier', 'Personal accident'],\r\n    ['pdeath', 'Death due to accident only', 'Personal accident'],\r\n    ['tpd', 'Total permanent disability (accident only)', 'Personal accident'],\r\n    ['ppd', 'Partial permanent disability (accident only)', 'Personal accident'],\r\n    ['liab', 'Personal liability (material and bodily damage)', 'Liability'],\r\n    ['assist', '24\/7 medical and travel assistance', 'Assistance']\r\n  ];\r\n\r\n  function B(map, i) {\r\n    var o = {};\r\n    for (var k in map) { if (map.hasOwnProperty(k)) { var v = map[k]; o[k] = (v instanceof Array) ? v[i] : v; } }\r\n    return o;\r\n  }\r\n  var MED_PQ = ['$10,000', '$25,000', '$50,000', '$100,000'];\r\n  var BEN_PQ = {\r\n    med: MED_PQ, evac: MED_PQ, repat: MED_PQ, mortal: MED_PQ,\r\n    dental: ['$200', '$300', '$550', '$750'], famvisit: '$100 per day, up to 10 days', hijack: '$5,000',\r\n    passport: '$300', card: '$1,000', lugloss: ['$5 per kg', '$7.50 per kg', '$18.75 per kg', '$25 per kg'],\r\n    lugdelay: ['$250', '$300', '$350', '$450'], money: '$1,000', flight: ['$300', '$350', '$550', '$750'],\r\n    cancel: ['$350', '$450', '$500', '$1,000'], liab: '$30,000', assist: 'Free service'\r\n  };\r\n  var BEN_EFU = {\r\n    med: ['$15,000', '$35,000', '$70,000', '$100,000'],\r\n    evac: ['$100,000', '$125,000', '$500,000', '$1,000,000'], repat: ['$100,000', '$125,000', '$500,000', '$1,000,000'],\r\n    mortal: ['$100,000', '$125,000', '$500,000', '$1,000,000'],\r\n    dental: ['$400', '$600', '$1,000', '$1,200'], famvisit: ['$400 ticket and accommodation', '$600 ticket and accommodation', '$1,000 ticket and accommodation', '$1,200 ticket and accommodation'],\r\n    minors: ['$200', '$400', '$800', '$1,000'], passport: ['$100', '$200', '$400', '$500'],\r\n    lugloss: ['$10 per kg, max $400', '$15 per kg, max $600', '$25 per kg, max $1,000', '$30 per kg, max $1,200'],\r\n    money: ['$250', '$500', '$1,000', '$1,500'], flight: ['$300', '$400', '$600', '$700'],\r\n    cancel: ['$250', '$500', '$1,000', '$1,200'], curtail: ['$250', '$500', '$1,000', '$1,200'],\r\n    pacc: ['Rs. 100,000', 'Rs. 200,000', 'Rs. 300,000', 'Rs. 400,000'], assist: 'Free service',\r\n    lugdelay: ['$150', '$250', '$750', '$1,000'], hijack: '$5,000', liab: '$30,000'\r\n  };\r\n  var BEN_VIP = {\r\n    med: '$150,000', evac: '$150,000', repat: '$150,000', mortal: '$150,000', famvisit: '$100 per day, up to 10 days',\r\n    returnhome: '$5,000', repatfam: '$10,000', medicine: '$5,000', dental: '$1,000', hijack: '$1,000 ($25 per hour)',\r\n    passport: '$500', lugloss: '$32', lugdelay: '$1,000', flight: '$1,000', card: '$1,000', legal: '$5,000', bail: '$10,000',\r\n    pacc: '$50,000', pdeath: '$50,000', tpd: '$50,000', ppd: '$50,000', liab: '$50,000', assist: 'Free service, telemedicine included'\r\n  };\r\n  var BEN_HAJJ = {\r\n    med: ['$5,000', '$10,000', '$20,000'], evac: '$15,000', repat: '$15,000', mortal: ['$5,000', '$5,000', '$15,000'],\r\n    dental: '$600', hijack: '$5,000', passport: '$300', card: ['$250', '$250', '$750'],\r\n    lugloss: ['$6.25 per kg', '$6.25 per kg', '$18.75 per kg'], lugdelay: '$500', money: '$1,000',\r\n    pacc: ['$2,500', '$5,000', '$20,000'], pdeath: ['$2,500', '$5,000', '$20,000'], tpd: ['$2,500', '$5,000', '$20,000'],\r\n    ppd: ['$2,500', '$5,000', '$20,000'], liab: '$30,000', assist: 'Free service'\r\n  };\r\n  var BEN_STU = {\r\n    med: MED_PQ, evac: MED_PQ, repat: MED_PQ, mortal: MED_PQ, famvisit: '$5,000', dental: '$1,000', passport: '$300', card: '$750',\r\n    lugloss: '$12.50 per kg', lugdelay: '$500', money: '$1,000', assist: 'Free service'\r\n  };\r\n  var BEN_STU_T = {};\r\n  (function () { for (var k in BEN_STU) { if (BEN_STU.hasOwnProperty(k)) BEN_STU_T[k] = BEN_STU[k]; } BEN_STU_T.tuition = ['$3,000', '$5,000', '$7,500', '$15,000']; })();\r\n\r\n  var NOTES_PQ = [\r\n    'Rates are Pak-Qatar published net rates in PKR for travellers up to 65 years of age. Pak-Qatar is a Takaful operator; contributions are shown as premium.',\r\n    'Individual premium by age: 0-17 years half of standard, 18-65 standard, 66-75 x1.5, 76-80 x1.75, 81-85 x2.',\r\n    'Deductible: $50 for ages 0-65, $100 for 66-75, $500 for 76-80 and $1,500 for 81-85.',\r\n    'Pak-Qatar shows one limit for medical expenses, evacuation, repatriation and mortal remains.',\r\n    'Medical and travel assistance is provided 24\/7 at no extra charge.',\r\n    'This is a summary. Refer to the policy for full terms, exclusions and definitions.'\r\n  ];\r\n  var NOTES_PQ_FAM = 'Family cover means one adult, or two adults who are husband, wife or partners up to age 65, with up to 4 children below 16 years.';\r\n  var NOTES_PQ_HAJJ = ['Cover applies in Iran, Iraq and Saudi Arabia only.',\r\n    'Family cover means one adult, or two adults who are husband, wife or partners up to age 65, with up to 4 children below 18 years.'];\r\n  var NOTES_PQ_VIP = ['Maximum stay is 92 days per trip on multi-trip policies.',\r\n    'Group discounts: 25 insured 5%, 26 to 75 insured 10%, 76 to 125 insured 15%.'];\r\n  var NOTES_PQ_STU = ['Contributions include taxes and stamp duty.', 'Maximum age 65 years, minimum age 6 months.',\r\n    'No cover for pre-existing conditions.', 'A medical fitness certificate is required for travel.',\r\n    'Cover is not for medical treatment purposes.', 'All reimbursement claims are subject to a 25% deduction on the approved amount.',\r\n    'Group discounts are available for groups of 25 or more. Ask us for details.'];\r\n  var NOTES_EFU = [\r\n    'Premiums are inclusive of currently applicable government taxes and levies. Any change in taxes will affect the premium.',\r\n    'Family means husband and wife up to 66 years and four children up to 18 years.',\r\n    'Premiums are for travellers up to 66 years. Ages 67-75: 50% increase, 76-80: 75% increase, 81-85: 100% increase.',\r\n    'Deductible free up to age 70. Over 70, a 15% deductible applies to each claim for emergency medical expenses during hospitalization and dental emergency.',\r\n    'Luggage delay, personal liability and hijacking are optional covers at 10% additional premium.',\r\n    'Covid-19 cover for emergency medical expenses can be added at additional premium, subject to policy terms.',\r\n    'Groups of 25 or more travelling together on the same trip and date can get special discounts.',\r\n    'Please read the complete policy document for detailed terms and conditions.'\r\n  ];\r\n\r\n  var ADDED_PQ = ['Takaful (Shariah compliant)', '24\/7 international helpline and doctor on call',\r\n    'Luggage delay, hijacking and personal liability included', 'Trip cancellation cover per flight'];\r\n  var ADDED_EFU = ['Direct settlement of claims abroad', '24\/7 assistance', 'Deductible free up to age 70',\r\n    'Trip curtailment and compassionate visit cover', 'Return of minor children or escort'];\r\n\r\n  function tiersOf(names, meds, ben, rates, off) {\r\n    return names.map(function (n, i) {\r\n      var id = n.toLowerCase(), r = rates[id];\r\n      return { id: id, name: n, med: meds[i], ben: B(ben, i + (off || 0)), ind: r[0], fam: r[1] || null };\r\n    });\r\n  }\r\n\r\n  var PRODUCTS = {\r\n    'pq-r1': { id: 'pq-r1', ins: 'pq', short: 'Safar Asaan', area: 'Worldwide excl. USA, Canada, Australia, Schengen & Japan',\r\n      ten: TEN_PQ, rule: 'pq', fam: { adult: 65, child: 15, kids: 4, childText: 'under 16' },\r\n      tiers: tiersOf(['Standard', 'Silver', 'Gold', 'Platinum'], [10000, 25000, 50000, 100000], BEN_PQ, R_PQ_R1),\r\n      added: ADDED_PQ, notes: NOTES_PQ.concat([NOTES_PQ_FAM]) },\r\n    'pq-ww': { id: 'pq-ww', ins: 'pq', short: 'Safar Asaan Worldwide', area: 'Worldwide',\r\n      ten: TEN_PQ, rule: 'pq', fam: { adult: 65, child: 15, kids: 4, childText: 'under 16' },\r\n      tiers: tiersOf(['Standard', 'Silver', 'Gold', 'Platinum'], [10000, 25000, 50000, 100000], BEN_PQ, R_PQ_WW),\r\n      added: ADDED_PQ, notes: NOTES_PQ.concat([NOTES_PQ_FAM]) },\r\n    'pq-sch': { id: 'pq-sch', ins: 'pq', short: 'Safar Asaan Schengen+', area: 'Schengen+ plan',\r\n      ten: TEN_PQ, rule: 'pq', fam: { adult: 65, child: 15, kids: 4, childText: 'under 16' },\r\n      tiers: tiersOf(['Gold', 'Platinum'], [50000, 100000], BEN_PQ, R_PQ_SCH, 2),\r\n      added: ADDED_PQ, notes: NOTES_PQ.concat([NOTES_PQ_FAM]) },\r\n    'pq-hajj': { id: 'pq-hajj', ins: 'pq', short: 'Safar Asaan Hajj, Umrah & Ziyarat', area: 'Iran, Iraq & Saudi Arabia only',\r\n      ten: TEN_HAJJ, rule: 'pq', fam: { adult: 65, child: 17, kids: 4, childText: 'under 18' },\r\n      tiers: tiersOf(['Basic', 'Plus', 'Premier'], [5000, 10000, 20000], BEN_HAJJ, R_PQ_HAJJ),\r\n      added: ['Takaful (Shariah compliant)', '24\/7 international helpline and doctor on call', 'Personal accident cover up to $20,000 (Premier)'],\r\n      notes: NOTES_PQ.concat(NOTES_PQ_HAJJ) },\r\n    'pq-vip-ww': { id: 'pq-vip-ww', ins: 'pq', short: 'Safar Asaan VIP Worldwide', area: 'Worldwide',\r\n      ten: TEN_VIP, rule: 'pq', fam: null,\r\n      tiers: tiersOf(['VIP'], [150000], BEN_VIP, R_PQ_VIP_WW),\r\n      added: ['Takaful (Shariah compliant)', 'Medical limit $150,000', 'Personal accident cover up to $50,000', 'Legal assistance and bail bond advance'],\r\n      notes: NOTES_PQ.concat(NOTES_PQ_VIP) },\r\n    'pq-vip-x': { id: 'pq-vip-x', ins: 'pq', short: 'Safar Asaan VIP Worldwide excl. USA & Canada', area: 'Worldwide excl. USA & Canada',\r\n      ten: TEN_VIP, rule: 'pq', fam: null,\r\n      tiers: tiersOf(['VIP'], [150000], BEN_VIP, R_PQ_VIP_X),\r\n      added: ['Takaful (Shariah compliant)', 'Medical limit $150,000', 'Personal accident cover up to $50,000', 'Legal assistance and bail bond advance'],\r\n      notes: NOTES_PQ.concat(NOTES_PQ_VIP) },\r\n    'pq-stu-t': { id: 'pq-stu-t', ins: 'pq', short: 'Safar Asaan Student (with tuition fee)', area: 'Worldwide, student package',\r\n      ten: TEN_STU, rule: 'student', fam: null,\r\n      tiers: tiersOf(['Standard', 'Silver', 'Gold', 'Platinum'], [10000, 25000, 50000, 100000], BEN_STU_T, R_PQ_STU_T),\r\n      added: ['Takaful (Shariah compliant)', 'Tuition fee benefit included', '24\/7 international helpline and doctor on call'],\r\n      notes: NOTES_PQ_STU },\r\n    'pq-stu-n': { id: 'pq-stu-n', ins: 'pq', short: 'Safar Asaan Student (without tuition fee)', area: 'Worldwide, student package',\r\n      ten: TEN_STU, rule: 'student', fam: null,\r\n      tiers: tiersOf(['Standard', 'Silver', 'Gold', 'Platinum'], [10000, 25000, 50000, 100000], BEN_STU, R_PQ_STU_N),\r\n      added: ['Takaful (Shariah compliant)', '24\/7 international helpline and doctor on call'],\r\n      notes: NOTES_PQ_STU },\r\n    'efu-r1': { id: 'efu-r1', ins: 'efu', short: 'Travelcare', area: 'Worldwide excl. USA, Canada, Australia & Japan',\r\n      ten: TEN_EFU, rule: 'efu', fam: { adult: 66, child: 18, kids: 4, childText: 'up to 18' }, opt: true,\r\n      tiers: tiersOf(['Basic', 'Standard', 'Gold', 'Platinum'], [15000, 35000, 70000, 100000], BEN_EFU, R_EFU_R1),\r\n      added: ADDED_EFU, notes: NOTES_EFU },\r\n    'efu-ww': { id: 'efu-ww', ins: 'efu', short: 'Travelcare Worldwide', area: 'Worldwide incl. USA, Canada, Australia & Japan',\r\n      ten: TEN_EFU, rule: 'efu', fam: { adult: 66, child: 18, kids: 4, childText: 'up to 18' }, opt: true,\r\n      tiers: tiersOf(['Basic', 'Standard', 'Gold', 'Platinum'], [15000, 35000, 70000, 100000], BEN_EFU, R_EFU_WW),\r\n      added: ADDED_EFU, notes: NOTES_EFU }\r\n  };\r\n\r\n  var REGIONS = {\r\n    r1: { title: 'Worldwide excluding USA, Canada, Australia, Japan & Schengen', hint: 'For example UAE, Turkey, Thailand or Malaysia',\r\n          prods: ['pq-r1', 'efu-r1'], modes: ['single', 'multi'] },\r\n    r2: { title: 'Schengen and Europe', hint: 'Schengen visas usually need at least EUR 30,000 medical cover. Check your embassy\\u2019s current rule.',\r\n          prods: ['pq-sch', 'pq-ww', 'efu-r1'], modes: ['single', 'multi'] },\r\n    r3: { title: 'Worldwide including USA, Canada, Australia & Japan', hint: 'Full worldwide cover',\r\n          prods: ['pq-ww', 'efu-ww'], modes: ['single', 'multi'] },\r\n    hajj: { title: 'Hajj, Umrah & Ziyarat', hint: 'Iran, Iraq and Saudi Arabia. Pak-Qatar only.', prods: ['pq-hajj'], modes: ['single'] },\r\n    student: { title: 'Student', hint: 'Study abroad. Pak-Qatar only.', prods: ['pq-stu-t', 'pq-stu-n'], modes: ['single'] },\r\n    vip: { title: 'VIP', hint: 'Higher limits, up to $150,000 medical. Pak-Qatar only.', prods: ['pq-vip-ww', 'pq-vip-x'], modes: ['single', 'multi'] }\r\n  };\r\n\r\n  \/* ================= ENGINE ================= *\/\r\n  function fmt(n) { return 'Rs. ' + Number(n).toLocaleString('en-US'); }\r\n  function usd(n) { return '$' + Number(n).toLocaleString('en-US'); }\r\n\r\n  function activeProducts(S) {\r\n    var ids = S.dest === 'student' ? [S.tuition ? 'pq-stu-t' : 'pq-stu-n'] : REGIONS[S.dest].prods;\r\n    return ids.map(function (id) { return PRODUCTS[id]; });\r\n  }\r\n\r\n  \/\/ Index of the tenure used for this trip, or -1\r\n  function pickTenure(prod, S) {\r\n    var i, t, best = -1;\r\n    if (S.mode === 'multi') {\r\n      for (i = 0; i < prod.ten.length; i++) { t = prod.ten[i]; if (t.kind === 'm' && t.months === S.multi) return i; }\r\n      return -1;\r\n    }\r\n    for (i = 0; i < prod.ten.length; i++) {\r\n      t = prod.ten[i];\r\n      if (t.kind === 's' && t.days >= S.days && (best < 0 || t.days < prod.ten[best].days)) best = i;\r\n    }\r\n    return best;\r\n  }\r\n\r\n  function maxSingle(prod) {\r\n    var m = 0;\r\n    prod.ten.forEach(function (t) { if (t.kind === 's' && t.days > m) m = t.days; });\r\n    return m;\r\n  }\r\n  function hasMulti(prod) { return prod.ten.some(function (t) { return t.kind === 'm'; }); }\r\n\r\n  function ageFactor(rule, age) {\r\n    if (rule === 'pq') { if (age < 18) return 0.5; if (age <= 65) return 1; if (age <= 75) return 1.5; if (age <= 80) return 1.75; if (age <= 85) return 2; return null; }\r\n    if (rule === 'efu') { if (age <= 66) return 1; if (age <= 75) return 1.5; if (age <= 80) return 1.75; if (age <= 85) return 2; return null; }\r\n    return age <= 65 ? 1 : null; \/\/ student\r\n  }\r\n  function ageMax(rule) { return rule === 'student' ? 65 : 85; }\r\n\r\n  function deductibleText(ins, rule, age) {\r\n    if (ins === 'efu') return age <= 70 ? 'None (deductible free up to age 70)' : '15% of each claim (hospitalization and dental)';\r\n    if (rule === 'student') return '$50';\r\n    if (age <= 65) return '$50';\r\n    if (age <= 75) return '$100';\r\n    if (age <= 80) return '$500';\r\n    return '$1,500';\r\n  }\r\n\r\n  \/\/ Why family rates cannot be used (empty string when they can)\r\n  function famReason(prod, ages) {\r\n    if (!prod.fam) return 'this plan has no family rate';\r\n    var f = prod.fam, adults = 0, kids = 0, i;\r\n    if (ages.length < 2) return 'family rates need at least two travellers';\r\n    for (i = 0; i < ages.length; i++) {\r\n      if (ages[i] >= 18) { adults++; if (ages[i] > f.adult) return 'family rates apply to adults up to age ' + f.adult; }\r\n      else { kids++; if (ages[i] > f.child) return 'family rates need children ' + f.childText; }\r\n    }\r\n    if (adults < 1) return 'family rates need at least one adult';\r\n    if (adults > 2) return 'family rates cover up to 2 adults';\r\n    if (kids > f.kids) return 'family rates cover up to ' + f.kids + ' children';\r\n    return '';\r\n  }\r\n  function famDesc(ages) {\r\n    var a = 0, k = 0;\r\n    ages.forEach(function (x) { if (x >= 18) a++; else k++; });\r\n    return a + (a === 1 ? ' adult' : ' adults') + (k ? ' and ' + k + (k === 1 ? ' child' : ' children') : '');\r\n  }\r\n\r\n  function validate(S) {\r\n    var msgs = [], bad = false;\r\n    if (S.mode === 'single') {\r\n      var d = S.days;\r\n      if (!(d >= 1 && d <= 730 && Math.floor(d) === d)) msgs.push('Enter the number of days (1 to 730).');\r\n    }\r\n    S.travelers.forEach(function (t) {\r\n      var a = t.age;\r\n      if (!(a >= 0 && a <= 85 && Math.floor(a) === a)) bad = true;\r\n    });\r\n    if (bad) msgs.push('Enter every traveller\\u2019s age (0 to 85).');\r\n    return msgs;\r\n  }\r\n\r\n  function reasonNoTenure(prod, S) {\r\n    if (S.mode === 'multi') return 'No multi-trip policy is offered for this plan.';\r\n    var m = maxSingle(prod);\r\n    if (hasMulti(prod)) return 'Single trips are limited to ' + m + ' days. For longer travel choose a multi-trip policy (92 days per trip).';\r\n    return 'Trips are limited to ' + m + ' days for this plan.';\r\n  }\r\n\r\n  function benCopy(prod, tier, optOn) {\r\n    var o = {}, k;\r\n    for (k in tier.ben) { if (tier.ben.hasOwnProperty(k)) o[k] = tier.ben[k]; }\r\n    if (prod.opt) {\r\n      ['lugdelay', 'hijack', 'liab'].forEach(function (key) {\r\n        if (o[key]) o[key] = optOn ? o[key] + ' (added, +10% premium)' : 'Not included. Optional +10% premium for ' + o[key];\r\n      });\r\n    }\r\n    return o;\r\n  }\r\n\r\n  \/\/ Returns { plans: [...], unavailable: [...] } for the current state\r\n  function compute(S) {\r\n    var out = { plans: [], unavailable: [] };\r\n    var ages = S.travelers.map(function (t) { return t.age; });\r\n    activeProducts(S).forEach(function (prod) {\r\n      var ti = pickTenure(prod, S);\r\n      if (ti < 0) { out.unavailable.push({ ins: prod.ins, name: prod.short, reason: reasonNoTenure(prod, S) }); return; }\r\n      var factors = ages.map(function (a) { return ageFactor(prod.rule, a); });\r\n      var badAge = null, i;\r\n      for (i = 0; i < ages.length; i++) { if (factors[i] === null) { badAge = ages[i]; break; } }\r\n      if (badAge !== null) {\r\n        out.unavailable.push({ ins: prod.ins, name: prod.short, reason: 'A traveller aged ' + badAge + ' is above the maximum age of ' + ageMax(prod.rule) + ' for this plan.' });\r\n        return;\r\n      }\r\n      var fr = S.family ? famReason(prod, ages) : 'x';\r\n      var famOk = S.family && fr === '';\r\n      prod.tiers.forEach(function (tier) {\r\n        var lines = [], total = 0, familyUsed = false;\r\n        if (famOk && tier.fam) {\r\n          total = tier.fam[ti]; familyUsed = true;\r\n          lines.push({ label: 'Family rate (' + famDesc(ages) + ')', amt: total });\r\n        } else {\r\n          ages.forEach(function (a, j) {\r\n            var base = tier.ind[ti], amt = Math.round(base * factors[j]);\r\n            total += amt;\r\n            lines.push({ label: 'Traveller ' + (j + 1) + ', age ' + a + (factors[j] !== 1 ? ' (rate x' + factors[j] + ')' : ''), amt: amt });\r\n          });\r\n        }\r\n        if (prod.opt && S.efuOpt) {\r\n          var plus = Math.round(total * 0.10);\r\n          total += plus; lines.push({ label: 'Optional covers (+10%)', amt: plus });\r\n        }\r\n        out.plans.push({\r\n          id: prod.id + '~' + tier.id, ins: prod.ins, prod: prod, tier: tier, tenure: prod.ten[ti], total: total, lines: lines,\r\n          familyUsed: familyUsed, famNote: (S.family && !familyUsed && ages.length >= 2) ? ('Family rate not used: ' + fr + '.') : '',\r\n          ben: benCopy(prod, tier, S.efuOpt), oldest: Math.max.apply(null, ages)\r\n        });\r\n      });\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function visiblePlans(S, plans) {\r\n    return plans.filter(function (p) {\r\n      return (S.fIns === 'all' || S.fIns === p.ins) && p.tier.med >= S.fMin;\r\n    }).sort(function (a, b) { return a.total - b.total || (a.ins < b.ins ? -1 : 1); });\r\n  }\r\n\r\n  function planTitle(p) { return p.tier.name === 'VIP' ? p.prod.short : p.prod.short + ' ' + p.tier.name; }\r\n\r\n  \/* ================= PDF (no libraries) ================= *\/\r\n  var Pdf = (function () {\r\n    \/\/ Helvetica glyph widths (1\/1000 em) for ASCII 32..126\r\n    var WR = [278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,\r\n      278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611,\r\n      722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556,\r\n      556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584];\r\n    var WB = [278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556,\r\n      333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611,\r\n      722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611,\r\n      611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584];\r\n\r\n    function code(ch) { var c = ch.charCodeAt(0); return c === 0x2022 ? 149 : c; }\r\n    function measure(s, size, bold) {\r\n      var w = 0, i, c;\r\n      for (i = 0; i < s.length; i++) {\r\n        c = code(s.charAt(i));\r\n        w += (c >= 32 && c <= 126) ? (bold ? WB : WR)[c - 32] : (c === 149 ? 350 : 556);\r\n      }\r\n      return w * size \/ 1000;\r\n    }\r\n    function wrap(s, maxW, size, bold) {\r\n      var out = [];\r\n      String(s).split('\\n').forEach(function (par) {\r\n        var line = '';\r\n        par.split(' ').forEach(function (w) {\r\n          var t = line ? line + ' ' + w : w;\r\n          if (measure(t, size, bold) <= maxW) { line = t; return; }\r\n          if (line) out.push(line);\r\n          if (measure(w, size, bold) > maxW) {\r\n            var chunk = '', i;\r\n            for (i = 0; i < w.length; i++) {\r\n              if (measure(chunk + w.charAt(i), size, bold) > maxW) { out.push(chunk); chunk = w.charAt(i); } else chunk += w.charAt(i);\r\n            }\r\n            line = chunk;\r\n          } else line = w;\r\n        });\r\n        out.push(line);\r\n      });\r\n      return out;\r\n    }\r\n    function esc(s) {\r\n      var o = '', i, c;\r\n      s = String(s);\r\n      for (i = 0; i < s.length; i++) {\r\n        c = s.charCodeAt(i);\r\n        if (c === 0x2022) c = 149;\r\n        if (c === 40 || c === 41 || c === 92) o += '\\\\' + s.charAt(i);\r\n        else if (c < 32 || c > 126) { if (c > 255) c = 63; o += '\\\\' + ('00' + c.toString(8)).slice(-3); }\r\n        else o += s.charAt(i);\r\n      }\r\n      return o;\r\n    }\r\n    function rgb(h) { return [parseInt(h.substr(1, 2), 16) \/ 255, parseInt(h.substr(3, 2), 16) \/ 255, parseInt(h.substr(5, 2), 16) \/ 255]; }\r\n    function n(x) { return (Math.round(x * 100) \/ 100).toString(); }\r\n    function bytes(s) { var a = new Uint8Array(s.length), i; for (i = 0; i < s.length; i++) a[i] = s.charCodeAt(i) & 255; return a; }\r\n\r\n    function Doc(title) { this.W = 595.28; this.H = 841.89; this.pages = []; this.ops = null; this.imgs = []; this.title = title || ''; }\r\n    Doc.prototype.addImage = function (im) { this.imgs.push(im); return this.imgs.length - 1; };\r\n    Doc.prototype.page = function () { this.ops = []; this.pages.push(this.ops); return this; };\r\n    Doc.prototype.use = function (i) { this.ops = this.pages[i]; return this; };\r\n    Doc.prototype.rect = function (x, y, w, h, fill, stroke, lw) {\r\n      var o = '';\r\n      if (fill) { var f = rgb(fill); o += n(f[0]) + ' ' + n(f[1]) + ' ' + n(f[2]) + ' rg\\n'; }\r\n      if (stroke) { var s = rgb(stroke); o += n(s[0]) + ' ' + n(s[1]) + ' ' + n(s[2]) + ' RG\\n' + n(lw || 0.7) + ' w\\n'; }\r\n      o += n(x) + ' ' + n(this.H - y - h) + ' ' + n(w) + ' ' + n(h) + ' re ' + (fill && stroke ? 'B' : fill ? 'f' : 'S') + '\\n';\r\n      this.ops.push(o);\r\n    };\r\n    Doc.prototype.line = function (x1, y1, x2, y2, hex, lw) {\r\n      var c = rgb(hex);\r\n      this.ops.push(n(c[0]) + ' ' + n(c[1]) + ' ' + n(c[2]) + ' RG\\n' + n(lw || 0.7) + ' w\\n' + n(x1) + ' ' + n(this.H - y1) + ' m ' + n(x2) + ' ' + n(this.H - y2) + ' l S\\n');\r\n    };\r\n    \/\/ y is the text baseline measured from the top of the page\r\n    Doc.prototype.text = function (s, x, y, size, bold, hex, align) {\r\n      s = String(s);\r\n      var w = measure(s, size, bold);\r\n      if (align === 'r') x -= w; else if (align === 'c') x -= w \/ 2;\r\n      var c = rgb(hex || '#000000');\r\n      this.ops.push('BT\\n\/' + (bold ? 'F2' : 'F1') + ' ' + n(size) + ' Tf\\n' + n(c[0]) + ' ' + n(c[1]) + ' ' + n(c[2]) + ' rg\\n' +\r\n        n(x) + ' ' + n(this.H - y) + ' Td\\n(' + esc(s) + ') Tj\\nET\\n');\r\n    };\r\n    Doc.prototype.image = function (idx, x, y, w, h) {\r\n      this.ops.push('q\\n' + n(w) + ' 0 0 ' + n(h) + ' ' + n(x) + ' ' + n(this.H - y - h) + ' cm\\n\/Im' + (idx + 1) + ' Do\\nQ\\n');\r\n    };\r\n    Doc.prototype.build = function () {\r\n      var chunks = [], offs = [], len = 0, self = this;\r\n      function push(u8) { chunks.push(u8); len += u8.length; }\r\n      function pushS(s) { push(bytes(s)); }\r\n      function obj(num, body, stream) {\r\n        offs[num] = len;\r\n        pushS(num + ' 0 obj\\n' + body);\r\n        if (stream) { pushS('\\nstream\\n'); push(stream); pushS('\\nendstream'); }\r\n        pushS('\\nendobj\\n');\r\n      }\r\n      var first = 5 + this.imgs.length, np = this.pages.length, i, kids = [];\r\n      pushS('%PDF-1.4\\n%\\xE2\\xE3\\xCF\\xD3\\n');\r\n      obj(1, '<< \/Type \/Catalog \/Pages 2 0 R >>');\r\n      for (i = 0; i < np; i++) kids.push((first + 2 * i + 1) + ' 0 R');\r\n      obj(2, '<< \/Type \/Pages \/Kids [' + kids.join(' ') + '] \/Count ' + np + ' >>');\r\n      obj(3, '<< \/Type \/Font \/Subtype \/Type1 \/BaseFont \/Helvetica \/Encoding \/WinAnsiEncoding >>');\r\n      obj(4, '<< \/Type \/Font \/Subtype \/Type1 \/BaseFont \/Helvetica-Bold \/Encoding \/WinAnsiEncoding >>');\r\n      var xo = '';\r\n      this.imgs.forEach(function (im, k) {\r\n        obj(5 + k, '<< \/Type \/XObject \/Subtype \/Image \/Width ' + im.w + ' \/Height ' + im.h + ' \/ColorSpace \/DeviceRGB \/BitsPerComponent 8' +\r\n          (im.filter ? ' \/Filter ' + im.filter : '') + ' \/Length ' + im.data.length + ' >>', im.data);\r\n        xo += '\/Im' + (k + 1) + ' ' + (5 + k) + ' 0 R ';\r\n      });\r\n      for (i = 0; i < np; i++) {\r\n        var content = this.pages[i].join('');\r\n        obj(first + 2 * i, '<< \/Length ' + content.length + ' >>', bytes(content));\r\n        obj(first + 2 * i + 1, '<< \/Type \/Page \/Parent 2 0 R \/MediaBox [0 0 ' + n(this.W) + ' ' + n(this.H) + '] \/Resources << \/Font << \/F1 3 0 R \/F2 4 0 R >>' +\r\n          (xo ? ' \/XObject << ' + xo + '>>' : '') + ' >> \/Contents ' + (first + 2 * i) + ' 0 R >>');\r\n      }\r\n      var total = first + 2 * np, xref = len;\r\n      pushS('xref\\n0 ' + total + '\\n0000000000 65535 f \\n');\r\n      for (i = 1; i < total; i++) pushS(('0000000000' + offs[i]).slice(-10) + ' 00000 n \\n');\r\n      pushS('trailer\\n<< \/Size ' + total + ' \/Root 1 0 R >>\\nstartxref\\n' + xref + '\\n%%EOF');\r\n      var all = new Uint8Array(len), p = 0;\r\n      chunks.forEach(function (c) { all.set(c, p); p += c.length; });\r\n      return all;\r\n    };\r\n    return { Doc: Doc, measure: measure, wrap: wrap };\r\n  })();\r\n\r\n  \/\/ ---------- images for the PDF (logo from the site, family picture) ----------\r\n  function loadImg(src, cors) {\r\n    return new Promise(function (res) {\r\n      var im = new Image();\r\n      if (cors) im.crossOrigin = 'anonymous';\r\n      im.onload = function () { res(im); };\r\n      im.onerror = function () { res(null); };\r\n      im.src = src;\r\n    });\r\n  }\r\n  function sameOriginUrl(u) {\r\n    try {\r\n      var a = new URL(u), re = \/(^|\\.)insurancewala\\.pk$\/;\r\n      if (re.test(a.hostname) && re.test(location.hostname) && a.origin !== location.origin) return location.origin + a.pathname;\r\n    } catch (e) {}\r\n    return u;\r\n  }\r\n  function readable(im) {\r\n    try { var c = document.createElement('canvas'); c.width = 1; c.height = 1; var x = c.getContext('2d'); x.drawImage(im, 0, 0, 1, 1); x.getImageData(0, 0, 1, 1); return true; } catch (e) { return false; }\r\n  }\r\n  \/\/ Resolves an <img> whose pixels the canvas may read, or null\r\n  function getImage(url, fallback) {\r\n    var tries = [[sameOriginUrl(url), false], [url, true]], i = 0;\r\n    function next() {\r\n      if (i >= tries.length) return fallback ? loadImg(fallback, false) : Promise.resolve(null);\r\n      var t = tries[i++];\r\n      return loadImg(t[0], t[1]).then(function (im) { return (im && readable(im)) ? im : next(); });\r\n    }\r\n    return next();\r\n  }\r\n  function deflate(raw) {\r\n    if (typeof CompressionStream === 'undefined') return Promise.resolve(null);\r\n    try {\r\n      var cs = new CompressionStream('deflate'), wr = cs.writable.getWriter();\r\n      wr.write(raw); wr.close();\r\n      return new Response(cs.readable).arrayBuffer().then(function (b) { return new Uint8Array(b); }, function () { return null; });\r\n    } catch (e) { return Promise.resolve(null); }\r\n  }\r\n  \/\/ Logo: crop the empty border, place it on the navy header colour, store as RGB\r\n  function encodeLogo(im) {\r\n    var w = im.naturalWidth, h = im.naturalHeight, cv = document.createElement('canvas');\r\n    cv.width = w; cv.height = h;\r\n    var cx = cv.getContext('2d'); cx.drawImage(im, 0, 0, w, h);\r\n    var px = cx.getImageData(0, 0, w, h).data, x0 = w, y0 = h, x1 = 0, y1 = 0, x, y, a;\r\n    for (y = 0; y < h; y++) for (x = 0; x < w; x++) {\r\n      a = px[(y * w + x) * 4 + 3];\r\n      if (a > 12) { if (x < x0) x0 = x; if (x > x1) x1 = x; if (y < y0) y0 = y; if (y > y1) y1 = y; }\r\n    }\r\n    if (x1 <= x0 || y1 <= y0) { x0 = 0; y0 = 0; x1 = w - 1; y1 = h - 1; }\r\n    var pad = 6; x0 = Math.max(0, x0 - pad); y0 = Math.max(0, y0 - pad); x1 = Math.min(w - 1, x1 + pad); y1 = Math.min(h - 1, y1 + pad);\r\n    var sw = x1 - x0 + 1, sh = y1 - y0 + 1, c2 = document.createElement('canvas');\r\n    c2.width = sw; c2.height = sh;\r\n    var c2x = c2.getContext('2d'); c2x.fillStyle = '#0d2840'; c2x.fillRect(0, 0, sw, sh); c2x.drawImage(cv, x0, y0, sw, sh, 0, 0, sw, sh);\r\n    var d2 = c2x.getImageData(0, 0, sw, sh).data, raw = new Uint8Array(sw * sh * 3), i, j = 0;\r\n    for (i = 0; i < d2.length; i += 4) { raw[j++] = d2[i]; raw[j++] = d2[i + 1]; raw[j++] = d2[i + 2]; }\r\n    return deflate(raw).then(function (z) { return z ? { w: sw, h: sh, data: z, filter: '\/FlateDecode' } : { w: sw, h: sh, data: raw, filter: '' }; });\r\n  }\r\n  \/\/ Picture: scale down, flatten on white, keep as a JPEG\r\n  function encodeHero(im) {\r\n    var nw = im.naturalWidth, nh = im.naturalHeight;\r\n    if (nw < 60 || nh < 40) return Promise.resolve(null);\r\n    var w = Math.min(900, nw), h = Math.round(nh * w \/ nw), cv = document.createElement('canvas');\r\n    cv.width = w; cv.height = h;\r\n    var cx = cv.getContext('2d'); cx.fillStyle = '#ffffff'; cx.fillRect(0, 0, w, h); cx.drawImage(im, 0, 0, w, h);\r\n    var url = cv.toDataURL('image\/jpeg', 0.86), b64 = url.split(',')[1], bin = atob(b64), u8 = new Uint8Array(bin.length), i;\r\n    for (i = 0; i < bin.length; i++) u8[i] = bin.charCodeAt(i);\r\n    return Promise.resolve({ w: w, h: h, data: u8, filter: '\/DCTDecode' });\r\n  }\r\n  function prepareImages() {\r\n    var logo = getImage(LOGO_URL, LOGO_FALLBACK).then(function (im) { return im ? encodeLogo(im) : null; }).catch(function () { return null; });\r\n    var hero = getImage(FAMILY_IMG_URL, null).then(function (im) { return im ? encodeHero(im) : null; }).catch(function () { return null; });\r\n    return Promise.all([logo, hero]).then(function (r) { return { logo: r[0], hero: r[1] }; });\r\n  }\r\n\r\n  function pdfSafe(s) { return String(s || '').replace(\/[\\r\\t]+\/g, ' ').replace(\/[^\\x20-\\x7E\\xA0-\\xFF]\/g, '?'); }\r\n\r\n  \/\/ d: { ref, date, name, phone, destTitle, durationText, travText, options, plans (visible, sorted), sel (selected plans), logo }\r\n  function buildQuotePdf(d) {\r\n    var NAVY = '#0d2840', LIME = '#b3ff3c', INK = '#1e2f44', MUTED = '#566680', LINE = '#d9e0ea', MIST = '#f4f7fb', TINT = '#f4fde4';\r\n    var doc = new Pdf.Doc('Travel insurance quotation ' + d.ref);\r\n    var logoIdx = d.logo ? doc.addImage(d.logo) : -1, heroIdx = d.hero ? doc.addImage(d.hero) : -1;\r\n    var M = 36, W = doc.W, H = doc.H, CW = W - 2 * M, LIMIT = H - 54, L = { y: 0 };\r\n\r\n    function newPage(first) {\r\n      doc.page();\r\n      if (first) {\r\n        doc.rect(0, 0, W, 86, NAVY);\r\n        if (logoIdx > -1) { var lh = 62, lw = lh * d.logo.w \/ d.logo.h; doc.image(logoIdx, M, 12, lw, lh); }\r\n        else doc.text('INSURANCE WALA', M, 52, 18, true, LIME);\r\n        doc.text('Travel insurance quotation', W - M, 40, 19, true, '#ffffff', 'r');\r\n        doc.text('Reference ' + d.ref + '   |   ' + d.date, W - M, 58, 9.5, false, LIME, 'r');\r\n        doc.text('Pak-Qatar and EFU compared', W - M, 72, 9, false, '#d5deea', 'r');\r\n        L.y = 108;\r\n      } else {\r\n        doc.rect(0, 0, W, 30, NAVY);\r\n        doc.text('Insurance Wala  |  Travel insurance quotation', M, 19, 9, true, '#ffffff');\r\n        doc.text(d.ref, W - M, 19, 9, false, LIME, 'r');\r\n        L.y = 50;\r\n      }\r\n    }\r\n    function ensure(h) { if (L.y + h > LIMIT) newPage(false); }\r\n    function heading(t, room) {\r\n      ensure(room || 60);\r\n      doc.rect(M, L.y, 3.5, 15, LIME); doc.text(t, M + 10, L.y + 12, 12.5, true, NAVY);\r\n      L.y += 26;\r\n    }\r\n    function para(t, size, color, bold) {\r\n      var lines = Pdf.wrap(t, CW, size, bold), lh = size * 1.35;\r\n      lines.forEach(function (ln) { ensure(lh); doc.text(ln, M, L.y + size, size, bold, color); L.y += lh; });\r\n      L.y += 4;\r\n    }\r\n    function bullets(list, size) {\r\n      size = size || 8.5;\r\n      var lh = size * 1.35;\r\n      list.forEach(function (t) {\r\n        var lines = Pdf.wrap(t, CW - 14, size, false);\r\n        ensure(lines.length * lh);\r\n        doc.text('\\u2022', M + 2, L.y + size, size, false, NAVY);\r\n        lines.forEach(function (ln) { doc.text(ln, M + 13, L.y + size, size, false, INK); L.y += lh; });\r\n        L.y += 1.5;\r\n      });\r\n      L.y += 4;\r\n    }\r\n    \/\/ cols: [{w, align, bold}], rows: [{c:[...], kind:'head'|'group'|'row'|'sel'|'total', size}]\r\n    function table(cols, rows, header) {\r\n      var pad = 5;\r\n      function geom(r) {\r\n        var size = r.size || 8.5, lh = size * 1.32, bold = r.kind === 'head' || r.kind === 'group' || r.kind === 'total';\r\n        var lines = r.c.map(function (txt, i) { return Pdf.wrap(txt, cols[i].w - 2 * pad, size, bold || cols[i].bold); });\r\n        var cnt = Math.max.apply(null, lines.map(function (l) { return l.length; }));\r\n        return { size: size, lh: lh, bold: bold, lines: lines, h: cnt * lh + 2 * pad - 2 };\r\n      }\r\n      function drawRow(r, g) {\r\n        var fill = r.kind === 'head' ? NAVY : r.kind === 'group' ? '#e3e9f1' : r.kind === 'sel' ? TINT : r.kind === 'total' ? MIST : null;\r\n        if (fill) doc.rect(M, L.y, CW, g.h, fill);\r\n        var color = r.kind === 'head' ? '#ffffff' : (r.kind === 'group' ? NAVY : INK), x = M;\r\n        r.c.forEach(function (txt, i) {\r\n          var ln = g.lines[i], right = cols[i].align === 'r', tx = right ? x + cols[i].w - pad : x + pad;\r\n          ln.forEach(function (s, k) { doc.text(s, tx, L.y + pad + g.size - 1 + k * g.lh, g.size, g.bold || cols[i].bold, color, right ? 'r' : 'l'); });\r\n          x += cols[i].w;\r\n        });\r\n        doc.line(M, L.y + g.h, M + CW, L.y + g.h, LINE, 0.6);\r\n        L.y += g.h;\r\n      }\r\n      rows.forEach(function (r, idx) {\r\n        var g = geom(r), need = g.h;\r\n        if (r.kind === 'group' && rows[idx + 1]) need += geom(rows[idx + 1]).h;   \/\/ keep a group title with its first row\r\n        if (r.kind === 'head' && rows[idx + 1]) need += geom(rows[idx + 1]).h;\r\n        if (L.y + need > LIMIT) {\r\n          newPage(false);\r\n          if (header && r !== header) { var hg = geom(header); drawRow(header, hg); }\r\n        }\r\n        drawRow(r, g);\r\n      });\r\n      L.y += 10;\r\n    }\r\n    function sel(p) { return d.sel.indexOf(p) > -1; }\r\n\r\n    newPage(true);\r\n\r\n    \/\/ Picture under the header (kept in proportion, never stretched)\r\n    if (heroIdx > -1) {\r\n      var ratio = d.hero.w \/ d.hero.h, hh = Math.min(150, CW \/ ratio), hw = hh * ratio, hx = M + (CW - hw) \/ 2;\r\n      doc.image(heroIdx, hx, 100, hw, hh);\r\n      doc.rect(hx, 100, hw, hh, null, LINE, 0.7);\r\n      L.y = 100 + hh + 18;\r\n    }\r\n\r\n    \/\/ 1. Details\r\n    heading('Quotation details');\r\n    var oldest = d.sel.length ? d.sel[0].oldest : 0;\r\n    table([{ w: 80, bold: true }, { w: 181.64 }, { w: 80, bold: true }, { w: 181.64 }], [\r\n      { c: ['Prepared for', pdfSafe(d.name) || 'Customer', 'Destination', d.destTitle] },\r\n      { c: ['Mobile', d.phone ? '+92 ' + d.phone : '-', 'Duration', d.durationText] },\r\n      { c: ['Date', d.date, 'Travellers', d.travText] },\r\n      { c: ['Reference', d.ref, 'Options', d.options] }\r\n    ]);\r\n\r\n    \/\/ 2. Comparison of every plan found\r\n    heading('Plan comparison');\r\n    var cmpCols = [{ w: 70 }, { w: 187 }, { w: 96 }, { w: 70, align: 'r' }, { w: 100.28, align: 'r' }];\r\n    var hdr = { kind: 'head', c: ['Insurer', 'Plan', 'Policy period', 'Medical cover', 'Premium (PKR)'] };\r\n    var rows = [hdr];\r\n    d.plans.forEach(function (p, i) {\r\n      var tag = (i === 0 ? ' (lowest price)' : '') + (sel(p) ? ' *' : '');\r\n      rows.push({ kind: sel(p) ? 'sel' : 'row', c: [INS[p.ins].short, p.prod.short + (p.tier.name === 'VIP' ? '' : ' ' + p.tier.name) + tag,\r\n        p.tenure.label.replace(\/ \\(92 days max per trip\\)\/, ''), usd(p.tier.med), Number(p.total).toLocaleString('en-US')] });\r\n    });\r\n    table(cmpCols, rows, hdr);\r\n    para('* Included in this quotation. Plans are sorted from the lowest to the highest premium. Premiums are for all travellers together.', 8, MUTED);\r\n\r\n    \/\/ 3. Premium breakdown\r\n    heading('Premium breakdown for selected plans', 100);\r\n    d.sel.forEach(function (p) {\r\n      var head = { kind: 'head', c: [INS[p.ins].short + ' - ' + planTitle(p) + ' - ' + p.tenure.label.replace(\/ \\(92 days max per trip\\)\/, ''), 'PKR'] };\r\n      var rs = [head];\r\n      p.lines.forEach(function (ln) { rs.push({ kind: 'row', c: [ln.label, Number(ln.amt).toLocaleString('en-US')] }); });\r\n      rs.push({ kind: 'total', c: ['Total premium', Number(p.total).toLocaleString('en-US')] });\r\n      if (p.famNote) rs.push({ kind: 'row', size: 7.5, c: [p.famNote, ''] });\r\n      table([{ w: 423.28 }, { w: 100, align: 'r' }], rs, head);\r\n    });\r\n\r\n    \/\/ 4. Cover comparison\r\n    heading('Cover comparison', 130);\r\n    var nSel = d.sel.length, w0 = nSel > 2 ? 150 : 190, each = (CW - w0) \/ nSel;\r\n    var ccols = [{ w: w0 }].concat(d.sel.map(function () { return { w: each }; }));\r\n    var chead = { kind: 'head', size: 8, c: [''].concat(d.sel.map(function (p) { return INS[p.ins].short + '\\n' + planTitle(p); })) };\r\n    var crow = [chead], group = '';\r\n    crow.push({ kind: 'row', size: nSel > 2 ? 7.5 : 8.5, c: ['Policy period'].concat(d.sel.map(function (p) { return p.tenure.label; })) });\r\n    BEN_ROWS.forEach(function (b) {\r\n      var any = d.sel.some(function (p) { return p.ben[b[0]]; });\r\n      if (!any) return;\r\n      if (b[2] !== group) { group = b[2]; crow.push({ kind: 'group', c: [group].concat(d.sel.map(function () { return ''; })) }); }\r\n      crow.push({ kind: 'row', size: nSel > 2 ? 7.5 : 8.5, c: [b[1]].concat(d.sel.map(function (p) { return p.ben[b[0]] || '-'; })) });\r\n    });\r\n    crow.push({ kind: 'group', c: ['Deductible'].concat(d.sel.map(function () { return ''; })) });\r\n    crow.push({ kind: 'row', size: nSel > 2 ? 7.5 : 8.5, c: ['Oldest traveller (age ' + oldest + ')'].concat(d.sel.map(function (p) { return deductibleText(p.ins, p.prod.rule, oldest); })) });\r\n    crow.push({ kind: 'total', c: ['Total premium'].concat(d.sel.map(function (p) { return fmt(p.total); })) });\r\n    table(ccols, crow, chead);\r\n\r\n    \/\/ 5. Added benefits\r\n    heading('Added benefits');\r\n    var seen = {};\r\n    d.sel.forEach(function (p) {\r\n      if (seen[p.prod.id]) return; seen[p.prod.id] = 1;\r\n      ensure(40);\r\n      doc.text(INS[p.ins].short + ' - ' + p.prod.short, M, L.y + 10, 9.5, true, NAVY); L.y += 16;\r\n      var list = p.prod.added.slice();\r\n      if (p.prod.opt) list.push(d.efuOpt ? 'Optional covers added: luggage delay, hijacking and personal liability (+10%)' : 'Optional at +10% premium: luggage delay, hijacking and personal liability');\r\n      bullets(list);\r\n    });\r\n\r\n    \/\/ 6. Notes\r\n    heading('Important notes');\r\n    var seenIns = {};\r\n    d.sel.forEach(function (p) {\r\n      var key = p.prod.id;\r\n      if (seenIns[key]) return; seenIns[key] = 1;\r\n      ensure(40);\r\n      doc.text(INS[p.ins].short + ' - ' + p.prod.short, M, L.y + 10, 9.5, true, NAVY); L.y += 16;\r\n      bullets(p.prod.notes, 8);\r\n    });\r\n\r\n    para('This quotation is an estimate based on the insurers\\u2019 published brochure rates. The final premium, cover and terms are confirmed by the insurer in the policy document. Rates may change without notice.', 8, MUTED);\r\n\r\n    \/\/ Footers\r\n    var total = doc.pages.length, i;\r\n    for (i = 0; i < total; i++) {\r\n      doc.use(i);\r\n      doc.line(M, H - 38, W - M, H - 38, LINE, 0.7);\r\n      doc.text('Insurance Wala  |  insurancewala.pk  |  WhatsApp ' + WA_DISPLAY, M, H - 24, 8, false, MUTED);\r\n      doc.text('Page ' + (i + 1) + ' of ' + total, W - M, H - 24, 8, false, MUTED, 'r');\r\n    }\r\n    return doc.build();\r\n  }\r\n\r\n  \/* ================= UI ================= *\/\r\n  var S = {\r\n    step: 1, dest: 'r1', tuition: true, mode: 'single', days: 14, multi: 12, travelers: [{ age: 30 }],\r\n    family: false, efuOpt: false, fIns: 'all', fMin: 0, sel: [], selTouched: false, name: '', phone: '', ref: ''\r\n  };\r\n  var cache = { errs: [], res: { plans: [], unavailable: [] }, vis: [] };\r\n\r\n  function $(sel, ctx) { return (ctx || root).querySelector(sel); }\r\n  function $$(sel, ctx) { return Array.prototype.slice.call((ctx || root).querySelectorAll(sel)); }\r\n  var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  var ICON_WA = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"\/><\/svg>';\r\n  var ICON_DL = '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>';\r\n\r\n  function normPhone(v) {\r\n    var d = String(v || '').replace(\/\\D\/g, '');\r\n    if (d.indexOf('0092') === 0) d = d.slice(4);\r\n    else if (d.indexOf('92') === 0 && d.length > 10) d = d.slice(2);\r\n    if (d.charAt(0) === '0') d = d.slice(1);\r\n    return d.slice(0, 10);\r\n  }\r\n\r\n  \/* ---------- markup ---------- *\/\r\n  function radioChip(field, value, text, checked, cls) {\r\n    var id = 'tv-' + field + '-' + value;\r\n    return '<div class=\"iw-opt\"><input class=\"iw-in\" type=\"radio\" name=\"tv-' + field + '\" id=\"' + id + '\" value=\"' + value + '\" data-f=\"' + field + '\"' + (checked ? ' checked' : '') + '>' +\r\n      '<label class=\"' + (cls || 'iw-chip') + '\" for=\"' + id + '\">' + text + '<\/label><\/div>';\r\n  }\r\n  function switchRow(field, title, desc, checked) {\r\n    var id = 'tv-' + field;\r\n    return '<div class=\"iw-opt\"><input class=\"iw-in\" type=\"checkbox\" role=\"switch\" id=\"' + id + '\" data-f=\"' + field + '\"' + (checked ? ' checked' : '') + '>' +\r\n      '<label class=\"iw-row\" for=\"' + id + '\"><span class=\"iw-row-text\"><strong>' + title + '<\/strong><small>' + desc + '<\/small><\/span><span class=\"iw-sw\" aria-hidden=\"true\"><\/span><\/label><\/div>';\r\n  }\r\n  function destCard(id) {\r\n    var r = REGIONS[id];\r\n    return radioChip('dest', id, '<span class=\"iw-radio\" aria-hidden=\"true\"><\/span><span class=\"iw-plan-main\"><strong>' + r.title + '<\/strong><small>' + r.hint + '<\/small><\/span>', S.dest === id, 'iw-plan tv-dest');\r\n  }\r\n  function screen1() {\r\n    var quick = [7, 14, 21, 30, 60, 90].map(function (d) { return '<button type=\"button\" class=\"tv-q\" data-act=\"days\" data-v=\"' + d + '\">' + d + ' days<\/button>'; }).join('');\r\n    return '<section class=\"iw-screen tv-screen\" data-s=\"1\">' +\r\n      '<h3 class=\"iw-h\" tabindex=\"-1\">Plan your trip<\/h3>' +\r\n      '<p class=\"iw-lead\">Tell us where you are going and for how long. We compare Pak-Qatar and EFU instantly.<\/p>' +\r\n      '<figure class=\"tv-hero\" id=\"tv-hero\"><img src=\"' + FAMILY_IMG_URL + '\" alt=\"Travel insurance for the whole family\" loading=\"lazy\" decoding=\"async\"><\/figure>' +\r\n      '<div class=\"iw-field\"><span class=\"iw-label\" id=\"tv-dest-l\">Where are you going?<\/span><div class=\"iw-stack\" style=\"margin-top:8px\" role=\"radiogroup\" aria-labelledby=\"tv-dest-l\">' +\r\n        Object.keys(REGIONS).map(destCard).join('') + '<\/div><\/div>' +\r\n      '<div class=\"iw-field\" id=\"tv-tuition-f\"><div class=\"iw-stack\">' + switchRow('tuition', 'Include tuition fee cover', 'Adds the optional tuition fee benefit to the student plan', S.tuition) + '<\/div><\/div>' +\r\n      '<div class=\"iw-field\"><span class=\"iw-label\">How long are you travelling?<\/span>' +\r\n        '<div class=\"iw-grid2\" id=\"tv-mode-f\" style=\"margin-top:8px\" role=\"radiogroup\" aria-label=\"Trip type\">' +\r\n          radioChip('mode', 'single', 'Single trip', S.mode === 'single') + radioChip('mode', 'multi', 'Multi-trip policy', S.mode === 'multi') + '<\/div>' +\r\n        '<div id=\"tv-single\"><label class=\"iw-hint\" for=\"tv-days\" style=\"display:block;margin:14px 0 0\">Number of days<\/label>' +\r\n          '<input class=\"iw-input\" id=\"tv-days\" data-f=\"days\" type=\"number\" inputmode=\"numeric\" min=\"1\" max=\"730\" value=\"' + S.days + '\">' +\r\n          '<div class=\"tv-q-wrap\">' + quick + '<\/div><\/div>' +\r\n        '<div id=\"tv-multi\"><p class=\"iw-hint\" style=\"margin:14px 0 8px\">For frequent travellers. Each trip can last up to 92 days.<\/p>' +\r\n          '<div class=\"tv-grid3\" role=\"radiogroup\" aria-label=\"Policy length\">' +\r\n          radioChip('multi', '6', '6 months', S.multi === 6) + radioChip('multi', '12', '1 year', S.multi === 12) + radioChip('multi', '24', '2 years', S.multi === 24) + '<\/div><\/div>' +\r\n      '<\/div>' +\r\n      '<div class=\"iw-field\"><span class=\"iw-label\">Who is travelling?<\/span><p class=\"iw-hint\">Age on the day you travel<\/p><div id=\"tv-trav\"><\/div>' +\r\n        '<button type=\"button\" class=\"tv-add-btn\" data-act=\"addtrav\" id=\"tv-addtrav\">Add a traveller<\/button><\/div>' +\r\n      '<div class=\"iw-field\" id=\"tv-fam-f\"><div class=\"iw-stack\">' + switchRow('family', 'We are a family', 'Husband and wife, with children. Uses family rates when they apply.', S.family) + '<\/div><\/div>' +\r\n      '<div class=\"iw-field\" id=\"tv-opt-f\"><div class=\"iw-stack\">' + switchRow('efuOpt', 'Add EFU optional covers (+10%)', 'Luggage delay, hijacking and personal liability. Pak-Qatar includes these.', S.efuOpt) + '<\/div><\/div>' +\r\n      '<p class=\"iw-err\" id=\"tv-err\" role=\"alert\" hidden><\/p>' +\r\n      '<\/section>';\r\n  }\r\n  function screen2() {\r\n    var ins = [['all', 'All insurers'], ['pq', 'Pak-Qatar'], ['efu', 'EFU']].map(function (x) { return radioChip('fIns', x[0], x[1], S.fIns === x[0]); }).join('');\r\n    var mn = [[0, 'Any'], [30000, '$30,000+'], [50000, '$50,000+'], [100000, '$100,000+']].map(function (x) { return radioChip('fMin', x[0], x[1], S.fMin === x[0]); }).join('');\r\n    return '<section class=\"iw-screen tv-screen\" data-s=\"2\" hidden>' +\r\n      '<h3 class=\"iw-h\" tabindex=\"-1\">Compare plans<\/h3><p class=\"iw-lead\" id=\"tv-sum\"><\/p>' +\r\n      '<div class=\"iw-field\" id=\"tv-flt-ins\" style=\"margin-top:18px\"><span class=\"iw-label\" id=\"tv-fi-l\">Insurer<\/span><div class=\"tv-fl\" role=\"radiogroup\" aria-labelledby=\"tv-fi-l\" style=\"margin-top:8px\">' + ins + '<\/div><\/div>' +\r\n      '<div class=\"iw-field\" style=\"margin-top:14px\"><span class=\"iw-label\" id=\"tv-fm-l\">Minimum medical cover<\/span><div class=\"tv-fl\" role=\"radiogroup\" aria-labelledby=\"tv-fm-l\" style=\"margin-top:8px\">' + mn + '<\/div><\/div>' +\r\n      '<div class=\"tv-strip\" id=\"tv-strip\"><\/div>' +\r\n      '<div class=\"tv-list\" id=\"tv-list\"><\/div>' +\r\n      '<div class=\"tv-na\" id=\"tv-na\" hidden><\/div>' +\r\n      '<p class=\"iw-note\" id=\"tv-selmsg\" role=\"status\"><\/p>' +\r\n      '<\/section>';\r\n  }\r\n  function screen3() {\r\n    return '<section class=\"iw-screen tv-screen\" data-s=\"3\" hidden>' +\r\n      '<h3 class=\"iw-h\" tabindex=\"-1\">Get your quotation<\/h3>' +\r\n      '<p class=\"iw-lead\">Download a PDF with every detail, or send it to us on WhatsApp and we will share the application steps.<\/p>' +\r\n      '<div id=\"tv-s3sum\"><\/div>' +\r\n      '<div class=\"iw-field\"><label class=\"iw-label\" for=\"tv-name\">Your name<\/label>' +\r\n        '<input class=\"iw-input\" id=\"tv-name\" data-f=\"name\" type=\"text\" autocomplete=\"name\" placeholder=\"e.g. Ahmed Khan\">' +\r\n        '<p class=\"iw-err\" id=\"tv-name-err\" role=\"alert\" hidden>Enter your name so we know who to reply to.<\/p><\/div>' +\r\n      '<div class=\"iw-field\"><label class=\"iw-label\" for=\"tv-phone\">Mobile number <span class=\"iw-tag\">(optional)<\/span><\/label><p class=\"iw-hint\">Add it if you would like a call back.<\/p>' +\r\n        '<div class=\"iw-phone\"><span>+92<\/span><input class=\"iw-input\" id=\"tv-phone\" data-f=\"phone\" type=\"tel\" inputmode=\"numeric\" autocomplete=\"tel-national\" placeholder=\"3223579770\"><\/div>' +\r\n        '<p class=\"iw-err\" id=\"tv-phone-err\" role=\"alert\" hidden>Enter 10 digits starting with 3, like 3223579770.<\/p><\/div>' +\r\n      '<button type=\"button\" class=\"tv-pdf\" data-act=\"pdf\" id=\"tv-pdf\">' + ICON_DL + 'Download quotation (PDF)<\/button>' +\r\n      '<p class=\"iw-note\" id=\"tv-pdfmsg\" role=\"status\"><\/p>' +\r\n      '<\/section>';\r\n  }\r\n\r\n  var card = $('#tv-card'), nextBtn = $('#tv-next'), totalEl = $('#tv-total'), subEl = $('#tv-sub'), labelEl = $('#tv-label'), barEl = $('#tv-bar');\r\n  $('#tv-screens').innerHTML = screen1() + screen2() + screen3();\r\n\r\n  \/* ---------- travellers ---------- *\/\r\n  function renderTrav() {\r\n    var h = S.travelers.map(function (t, i) {\r\n      return '<div class=\"tv-trav\"><div class=\"tv-trav-f\"><label for=\"tv-age-' + i + '\">Traveller ' + (i + 1) + ' age<\/label>' +\r\n        '<input class=\"iw-input\" id=\"tv-age-' + i + '\" data-age=\"' + i + '\" type=\"number\" inputmode=\"numeric\" min=\"0\" max=\"85\" value=\"' + (isNaN(t.age) ? '' : t.age) + '\"><\/div>' +\r\n        (S.travelers.length > 1 ? '<button type=\"button\" class=\"tv-rm\" data-act=\"rm\" data-i=\"' + i + '\" aria-label=\"Remove traveller ' + (i + 1) + '\">&times;<\/button>' : '') + '<\/div>';\r\n    }).join('');\r\n    $('#tv-trav').innerHTML = h;\r\n    $('#tv-addtrav').disabled = S.travelers.length >= 8;\r\n  }\r\n\r\n  function hasEfu() { return activeProducts(S).some(function (p) { return p.opt; }); }\r\n  function syncStep1() {\r\n    var reg = REGIONS[S.dest];\r\n    $('#tv-mode-f').hidden = reg.modes.length < 2;\r\n    $('#tv-single').hidden = S.mode !== 'single';\r\n    $('#tv-multi').hidden = S.mode !== 'multi';\r\n    $('#tv-tuition-f').hidden = S.dest !== 'student';\r\n    $('#tv-opt-f').hidden = !hasEfu();\r\n    $('#tv-fam-f').hidden = S.travelers.length < 2;\r\n    if (S.travelers.length < 2) S.family = false;\r\n    $('#tv-family').checked = S.family;\r\n    $$('.tv-q').forEach(function (b) { b.classList.toggle('is-on', Number(b.getAttribute('data-v')) === S.days); });\r\n  }\r\n\r\n  \/* ---------- trip text ---------- *\/\r\n  function tripParts() {\r\n    var dur;\r\n    if (S.mode === 'single') dur = S.days + (S.days === 1 ? ' day' : ' days') + ', single trip';\r\n    else dur = (S.multi === 6 ? '6 months' : S.multi === 12 ? '1 year' : '2 years') + ' multi-trip policy (92 days max per trip)';\r\n    var ages = S.travelers.map(function (t) { return t.age; });\r\n    var trav = ages.length + (ages.length === 1 ? ' traveller' : ' travellers') + ' (age ' + ages.join(', ') + ')';\r\n    var opts = [];\r\n    if (S.travelers.length > 1) opts.push('Family rate: ' + (S.family ? 'requested' : 'no'));\r\n    if (hasEfu()) opts.push('EFU optional covers: ' + (S.efuOpt ? 'added' : 'not added'));\r\n    if (S.dest === 'student') opts.push('Tuition fee cover: ' + (S.tuition ? 'yes' : 'no'));\r\n    return { destTitle: REGIONS[S.dest].title, durationText: dur, travText: trav, options: opts.join('; ') || '-' };\r\n  }\r\n\r\n  \/* ---------- results ---------- *\/\r\n  function recalc() {\r\n    cache.errs = validate(S);\r\n    if (S.travelers.length < 2) S.family = false;\r\n    if (cache.errs.length) { cache.res = { plans: [], unavailable: [] }; cache.vis = []; }\r\n    else { cache.res = compute(S); cache.vis = visiblePlans(S, cache.res.plans); }\r\n  }\r\n  function planById(id) { var r = cache.res.plans, i; for (i = 0; i < r.length; i++) if (r[i].id === id) return r[i]; return null; }\r\n  function selectedPlans() {\r\n    return S.sel.map(planById).filter(Boolean).sort(function (a, b) { return a.total - b.total; });\r\n  }\r\n\r\n  function benDL(p) {\r\n    var h = '<dl class=\"iw-sum\" style=\"margin-top:6px\">', group = '';\r\n    BEN_ROWS.forEach(function (b) {\r\n      var v = p.ben[b[0]];\r\n      if (!v) return;\r\n      h += '<div class=\"iw-sum-row\"><dt>' + b[1] + '<\/dt><dd>' + v + '<\/dd><\/div>';\r\n    });\r\n    h += '<div class=\"iw-sum-row\"><dt>Deductible (age ' + p.oldest + ')<\/dt><dd>' + deductibleText(p.ins, p.prod.rule, p.oldest) + '<\/dd><\/div><\/dl>';\r\n    return h;\r\n  }\r\n  function cardHTML(p, i) {\r\n    var n = S.travelers.length, chk = S.sel.indexOf(p.id) > -1, id = 'tv-sel-' + i;\r\n    var added = p.prod.added.slice();\r\n    if (p.prod.opt) added.unshift(S.efuOpt ? 'Optional covers added (+10%)' : 'Luggage delay, hijacking and liability optional (+10%)');\r\n    var multi = p.tenure.kind === 'm';\r\n    return '<article class=\"tv-card' + (chk ? ' is-sel' : '') + '\" data-id=\"' + p.id + '\">' +\r\n      '<div class=\"tv-top\"><div class=\"tv-top-l\"><span class=\"tv-ins tv-ins-' + p.ins + '\">' + INS[p.ins].short + '<\/span>' + (i === 0 ? '<span class=\"tv-low\">Lowest price<\/span>' : '') +\r\n        '<h4 class=\"tv-name\">' + planTitle(p) + '<\/h4><p class=\"tv-meta\">' + p.prod.area + '<\/p><\/div>' +\r\n        '<div class=\"tv-price\"><b>' + fmt(p.total) + '<\/b><small>' + (n > 1 ? 'for ' + n + ' travellers' : 'for 1 traveller') + '<\/small><\/div><\/div>' +\r\n      '<ul class=\"tv-facts\"><li>Medical cover <b>' + usd(p.tier.med) + '<\/b><\/li><li>Period <b>' + p.tenure.label.replace(' (92 days max per trip)', '') + '<\/b><\/li>' +\r\n        (multi ? '<li><b>92 days max per trip<\/b><\/li>' : '') + (p.familyUsed ? '<li><b>Family rate<\/b><\/li>' : '') + '<\/ul>' +\r\n      (p.famNote ? '<p class=\"tv-fn\">' + p.famNote + '<\/p>' : '') +\r\n      '<ul class=\"tv-added\">' + added.slice(0, 3).map(function (a) { return '<li>' + a + '<\/li>'; }).join('') + '<\/ul>' +\r\n      '<details class=\"tv-det\"><summary>See all benefits<\/summary><p class=\"tv-dh\">Added benefits<\/p><ul class=\"tv-added\">' + added.map(function (a) { return '<li>' + a + '<\/li>'; }).join('') + '<\/ul><p class=\"tv-dh\" style=\"margin-top:12px\">Cover limits<\/p>' + benDL(p) + '<\/details>' +\r\n      '<div class=\"iw-opt tv-addrow\"><input class=\"iw-in\" type=\"checkbox\" role=\"switch\" id=\"' + id + '\" data-sel=\"' + p.id + '\"' + (chk ? ' checked' : '') + '>' +\r\n      '<label class=\"iw-row\" for=\"' + id + '\"><span class=\"iw-row-text\"><strong>Add to quotation<\/strong><\/span><span class=\"iw-sw\" aria-hidden=\"true\"><\/span><\/label><\/div>' +\r\n      '<\/article>';\r\n  }\r\n\r\n  function renderResults() {\r\n    var res = cache.res, vis = cache.vis, i;\r\n    var insSet = {};\r\n    res.plans.forEach(function (p) { insSet[p.ins] = 1; });\r\n    $('#tv-flt-ins').hidden = Object.keys(insSet).length < 2;\r\n    if (Object.keys(insSet).length < 2 && S.fIns !== 'all') { S.fIns = 'all'; $('#tv-fIns-all').checked = true; vis = cache.vis = visiblePlans(S, res.plans); }\r\n    S.sel = S.sel.filter(function (id) { return !!planById(id); });\r\n    if (!S.sel.length) S.selTouched = false;\r\n    if (!S.selTouched) {\r\n      S.sel = []; var seen = {};\r\n      vis.forEach(function (p) { if (!seen[p.ins]) { seen[p.ins] = 1; S.sel.push(p.id); } });\r\n    }\r\n    var tp = tripParts();\r\n    $('#tv-sum').textContent = tp.destTitle + '. ' + tp.durationText + '. ' + tp.travText + '.';\r\n\r\n    var lo = {};\r\n    vis.forEach(function (p) { if (!lo[p.ins]) lo[p.ins] = p; });\r\n    var keys = Object.keys(lo), strip = '';\r\n    var best = keys.length ? keys.slice().sort(function (a, b) { return lo[a].total - lo[b].total; })[0] : '';\r\n    keys.forEach(function (k) {\r\n      strip += '<div class=\"tv-tile' + (keys.length > 1 && k === best ? ' is-best' : '') + '\"><span>Lowest ' + INS[k].short + '<\/span><b>' + fmt(lo[k].total) + '<\/b><small>' + planTitle(lo[k]) + '<\/small><\/div>';\r\n    });\r\n    if (keys.length === 2) {\r\n      var diff = Math.abs(lo.pq.total - lo.efu.total);\r\n      strip += '<p class=\"tv-diff\">' + (diff === 0 ? 'Both insurers have the same lowest premium.' : INS[best].short + ' is ' + fmt(diff) + ' lower at the entry level. Compare the cover before you decide.') + '<\/p>';\r\n    }\r\n    $('#tv-strip').innerHTML = strip;\r\n    $('#tv-list').innerHTML = vis.length ? vis.map(cardHTML).join('') : '<p class=\"iw-note\">No plans match these filters. Try a lower minimum medical cover.<\/p>';\r\n\r\n    var na = $('#tv-na');\r\n    if (res.unavailable.length) {\r\n      na.hidden = false;\r\n      na.innerHTML = '<strong>Not available for this trip<\/strong>' + res.unavailable.map(function (u) { return '<p><b>' + INS[u.ins].short + ' ' + u.name + ':<\/b> ' + u.reason + '<\/p>'; }).join('');\r\n    } else na.hidden = true;\r\n  }\r\n\r\n  function renderStep3() {\r\n    if (!S.ref) {\r\n      var dt = new Date(), p2 = function (x) { return ('0' + x).slice(-2); };\r\n      S.ref = 'IW-' + String(dt.getFullYear()).slice(2) + p2(dt.getMonth() + 1) + p2(dt.getDate()) + '-' + Math.random().toString(36).slice(2, 6).toUpperCase();\r\n    }\r\n    var sel = selectedPlans();\r\n    $('#tv-s3sum').innerHTML = '<dl class=\"iw-sum\"><div class=\"iw-sum-row\"><dt>Quote reference<\/dt><dd>' + S.ref + '<\/dd><\/div>' +\r\n      sel.map(function (p) { return '<div class=\"iw-sum-row\"><dt>' + INS[p.ins].short + ' ' + planTitle(p) + '<\/dt><dd>' + fmt(p.total) + '<\/dd><\/div>'; }).join('') + '<\/dl>' +\r\n      '<p class=\"iw-note\">Premiums include all ' + S.travelers.length + (S.travelers.length === 1 ? ' traveller' : ' travellers') + '. The PDF lists every benefit, the premium breakdown and the policy notes.<\/p>';\r\n    $('#tv-name').value = S.name; $('#tv-phone').value = S.phone;\r\n  }\r\n\r\n  \/* ---------- bar + steps ---------- *\/\r\n  function updateBar() {\r\n    var total = '\\u2013', sub = '', list = S.step === 3 ? selectedPlans() : cache.vis;\r\n    labelEl.textContent = S.step === 3 ? 'Lowest selected' : 'Lowest premium';\r\n    if (cache.errs.length) sub = 'Complete your details';\r\n    else if (!list.length) sub = S.step === 1 ? 'No plan fits these details' : 'Nothing selected';\r\n    else {\r\n      var p = list.slice().sort(function (a, b) { return a.total - b.total; })[0];\r\n      total = fmt(p.total); sub = INS[p.ins].short + ' ' + planTitle(p);\r\n    }\r\n    totalEl.textContent = total; subEl.textContent = sub;\r\n    nextBtn.disabled = (S.step === 2 && S.sel.length === 0) || (S.step === 2 && cache.errs.length > 0);\r\n  }\r\n\r\n  function show(dir) {\r\n    $$('.tv-screen').forEach(function (sc) { sc.hidden = Number(sc.getAttribute('data-s')) !== S.step; });\r\n    $('#tv-pstep').textContent = 'Step ' + S.step + ' of 3';\r\n    [1, 2, 3].forEach(function (i) { $('#tv-pb' + i).className = S.step >= i ? 'on' : ''; });\r\n    $('#tv-back').hidden = S.step === 1;\r\n    barEl.classList.toggle('is-review', S.step > 1);\r\n    nextBtn.innerHTML = S.step === 1 ? 'Compare plans' : S.step === 2 ? 'Continue' : ICON_WA + 'Send on WhatsApp';\r\n    if (S.step === 2) renderResults();\r\n    if (S.step === 3) renderStep3();\r\n    if (dir) {\r\n      var vis = $('.tv-screen:not([hidden])');\r\n      if (vis) { vis.classList.remove('is-fwd', 'is-bwd'); void vis.offsetWidth; vis.classList.add(dir === 'fwd' ? 'is-fwd' : 'is-bwd'); }\r\n    }\r\n    updateBar();\r\n  }\r\n  function bringIntoView() {\r\n    var r = card.getBoundingClientRect();\r\n    if (r.top < 0 || r.top > window.innerHeight * 0.6) card.scrollIntoView({ behavior: reduceMotion ? 'auto' : 'smooth', block: 'start' });\r\n  }\r\n  function focusHeading() {\r\n    var h = $('.tv-screen:not([hidden]) .iw-h');\r\n    if (h) { try { h.focus({ preventScroll: true }); } catch (e) { h.focus(); } }\r\n  }\r\n\r\n  var pushed = 0;\r\n  function forward(step) {\r\n    S.step = step;\r\n    try { history.pushState({ tv: step }, ''); pushed++; } catch (e) {}\r\n    show('fwd'); bringIntoView(); focusHeading();\r\n  }\r\n  function goBack() {\r\n    if (pushed > 0) {\r\n      var before = pushed;\r\n      history.back();\r\n      setTimeout(function () { if (pushed === before) { pushed = Math.max(0, pushed - 1); S.step = Math.max(1, S.step - 1); show('bwd'); bringIntoView(); focusHeading(); } }, 450);\r\n    } else { S.step = Math.max(1, S.step - 1); show('bwd'); bringIntoView(); focusHeading(); }\r\n  }\r\n  window.addEventListener('popstate', function () {\r\n    if (pushed <= 0) return;\r\n    pushed--; S.step = Math.max(1, S.step - 1);\r\n    show('bwd'); focusHeading();\r\n  });\r\n\r\n  function afterChange() {\r\n    syncStep1(); recalc();\r\n    if (S.step === 2) renderResults();\r\n    updateBar();\r\n  }\r\n\r\n  \/* ---------- actions ---------- *\/\r\n  function setErr(which, bad, el) {\r\n    var err = $('#tv-' + which + '-err');\r\n    if (err) err.hidden = !bad;\r\n    el.setAttribute('aria-invalid', bad ? 'true' : 'false');\r\n    if (bad) el.setAttribute('aria-describedby', 'tv-' + which + '-err'); else el.removeAttribute('aria-describedby');\r\n    (el.closest('.iw-phone') || el).classList.toggle('is-bad', bad);\r\n  }\r\n  function contact(requireName) {\r\n    var nameEl = $('#tv-name'), phoneEl = $('#tv-phone');\r\n    var name = nameEl.value.trim(), phone = normPhone(phoneEl.value);\r\n    var badName = requireName && name.length < 2, badPhone = phone !== '' && !\/^3\\d{9}$\/.test(phone);\r\n    setErr('name', badName, nameEl); setErr('phone', badPhone, phoneEl);\r\n    if (badName) { nameEl.focus(); return null; }\r\n    if (badPhone) { phoneEl.focus(); return null; }\r\n    phoneEl.value = phone; S.name = name; S.phone = phone;\r\n    return { name: name, phone: phone };\r\n  }\r\n\r\n  function waMessage(c) {\r\n    var tp = tripParts(), sel = selectedPlans(), L = [];\r\n    L.push('Hello Insurance Wala! I want a travel insurance quote.', '');\r\n    L.push('*Quote ref:* ' + S.ref);\r\n    L.push('*Destination:* ' + tp.destTitle);\r\n    L.push('*Duration:* ' + tp.durationText);\r\n    L.push('*Travellers:* ' + tp.travText);\r\n    if (tp.options !== '-') L.push('*Options:* ' + tp.options);\r\n    L.push('*Selected plans:*');\r\n    sel.forEach(function (p, i) { L.push((i + 1) + '. ' + INS[p.ins].short + ' ' + planTitle(p) + ' - ' + fmt(p.total)); });\r\n    L.push('*Name:* ' + c.name);\r\n    if (c.phone) L.push('*Contact:* +92 ' + c.phone);\r\n    L.push('', 'Please share the application procedure.');\r\n    return L.join('\\n');\r\n  }\r\n  function sendWhatsApp() {\r\n    var c = contact(true);\r\n    if (!c) return;\r\n    var url = 'https:\/\/wa.me\/' + WA_NUMBER + '?text=' + encodeURIComponent(waMessage(c));\r\n    var w = window.open(url, '_blank');\r\n    if (w) { try { w.opener = null; } catch (e) {} }\r\n    $('#tv-wa-link').href = url;\r\n    openModal();\r\n  }\r\n\r\n  function saveBlob(blob, filename) {\r\n    var url = URL.createObjectURL(blob), a = document.createElement('a');\r\n    if ('download' in a) { a.href = url; a.download = filename; a.style.display = 'none'; document.body.appendChild(a); a.click(); document.body.removeChild(a); }\r\n    else window.open(url, '_blank');\r\n    setTimeout(function () { URL.revokeObjectURL(url); }, 60000);\r\n  }\r\n  function downloadPdf() {\r\n    var c = contact(false);\r\n    if (!c) return;\r\n    var btn = $('#tv-pdf'), msg = $('#tv-pdfmsg'), sel = selectedPlans();\r\n    if (!sel.length) { msg.textContent = 'Add at least one plan to the quotation first.'; return; }\r\n    btn.disabled = true; msg.textContent = 'Preparing your PDF...';\r\n    prepareImages().then(function (imgs) {\r\n      var tp = tripParts(), dt = new Date();\r\n      var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n      var bytes = buildQuotePdf({\r\n        ref: S.ref, date: dt.getDate() + ' ' + months[dt.getMonth()] + ' ' + dt.getFullYear(), name: c.name, phone: c.phone,\r\n        destTitle: tp.destTitle, durationText: tp.durationText, travText: tp.travText, options: tp.options,\r\n        plans: cache.vis.length ? cache.vis : cache.res.plans.slice().sort(function (a, b) { return a.total - b.total; }),\r\n        sel: sel, logo: imgs.logo, hero: imgs.hero, efuOpt: S.efuOpt\r\n      });\r\n      saveBlob(new Blob([bytes], { type: 'application\/pdf' }), 'Insurance-Wala-Travel-Quotation-' + S.ref + '.pdf');\r\n      msg.textContent = 'Your quotation is ready. Check your downloads.';\r\n    }).catch(function () {\r\n      msg.textContent = 'Sorry, the PDF could not be created. Please send the quote on WhatsApp and we will share it.';\r\n    }).then(function () { btn.disabled = false; });\r\n  }\r\n\r\n  \/* ---------- dialog ---------- *\/\r\n  var modal = $('#tv-modal'), lastFocus = null;\r\n  function openModal() { lastFocus = document.activeElement; modal.hidden = false; $('#tv-wa-link').focus(); }\r\n  function closeModal() { modal.hidden = true; if (lastFocus && lastFocus.focus) lastFocus.focus(); }\r\n\r\n  \/* ---------- events ---------- *\/\r\n  root.addEventListener('click', function (e) {\r\n    if (e.target === modal) { closeModal(); return; }\r\n    var b = e.target.closest('[data-act]');\r\n    if (!b) return;\r\n    var act = b.getAttribute('data-act');\r\n    if (act === 'next') {\r\n      if (S.step === 1) {\r\n        var errs = cache.errs;\r\n        var er = $('#tv-err');\r\n        if (errs.length) { er.hidden = false; er.textContent = errs.join(' '); er.scrollIntoView({ block: 'center', behavior: reduceMotion ? 'auto' : 'smooth' }); return; }\r\n        er.hidden = true; forward(2);\r\n      } else if (S.step === 2) { if (S.sel.length) forward(3); }\r\n      else sendWhatsApp();\r\n    } else if (act === 'back') goBack();\r\n    else if (act === 'days') { S.days = Number(b.getAttribute('data-v')); $('#tv-days').value = S.days; afterChange(); }\r\n    else if (act === 'addtrav') { if (S.travelers.length < 8) { S.travelers.push({ age: 30 }); renderTrav(); afterChange(); var inp = $('#tv-age-' + (S.travelers.length - 1)); if (inp) inp.focus(); } }\r\n    else if (act === 'rm') { S.travelers.splice(Number(b.getAttribute('data-i')), 1); renderTrav(); afterChange(); }\r\n    else if (act === 'pdf') downloadPdf();\r\n    else if (act === 'close') closeModal();\r\n  });\r\n\r\n  root.addEventListener('change', function (e) {\r\n    var el = e.target, f = el.getAttribute('data-f');\r\n    if (el.getAttribute('data-sel')) {\r\n      var id = el.getAttribute('data-sel'), at = S.sel.indexOf(id);\r\n      if (el.checked && at < 0) {\r\n        if (S.sel.length >= 4) { el.checked = false; $('#tv-selmsg').textContent = 'You can add up to 4 plans to one quotation.'; return; }\r\n        S.sel.push(id);\r\n      } else if (!el.checked && at > -1) S.sel.splice(at, 1);\r\n      S.selTouched = true; $('#tv-selmsg').textContent = '';\r\n      el.closest('.tv-card').classList.toggle('is-sel', el.checked);\r\n      updateBar();\r\n      return;\r\n    }\r\n    if (!f) return;\r\n    if (f === 'dest') { S.dest = el.value; if (REGIONS[S.dest].modes.indexOf(S.mode) < 0) S.mode = 'single'; S.sel = []; S.selTouched = false; }\r\n    else if (f === 'mode') S.mode = el.value;\r\n    else if (f === 'multi') S.multi = Number(el.value);\r\n    else if (f === 'tuition') { S.tuition = el.checked; S.sel = []; S.selTouched = false; }\r\n    else if (f === 'family') S.family = el.checked;\r\n    else if (f === 'efuOpt') S.efuOpt = el.checked;\r\n    else if (f === 'fIns') S.fIns = el.value;\r\n    else if (f === 'fMin') S.fMin = Number(el.value);\r\n    else return;\r\n    afterChange();\r\n  });\r\n\r\n  root.addEventListener('input', function (e) {\r\n    var el = e.target, f = el.getAttribute('data-f');\r\n    if (el.getAttribute('data-age') !== null) {\r\n      S.travelers[Number(el.getAttribute('data-age'))].age = el.value === '' ? NaN : Number(el.value);\r\n      afterChange(); return;\r\n    }\r\n    if (f === 'days') { S.days = el.value === '' ? NaN : Number(el.value); afterChange(); return; }\r\n    if (f === 'name' || f === 'phone') {\r\n      if (el.getAttribute('aria-invalid') === 'true') setErr(f, false, el);\r\n      if (f === 'name') S.name = el.value;\r\n    }\r\n  });\r\n\r\n  root.addEventListener('focusout', function (e) {\r\n    var el = e.target;\r\n    if (el.getAttribute('data-f') !== 'phone') return;\r\n    var v = normPhone(el.value);\r\n    el.value = v; S.phone = v;\r\n    setErr('phone', v !== '' && !\/^3\\d{9}$\/.test(v), el);\r\n  });\r\n\r\n  root.addEventListener('keydown', function (e) {\r\n    var el = e.target;\r\n    if (!modal.hidden) {\r\n      if (e.key === 'Escape') { closeModal(); return; }\r\n      if (e.key === 'Tab') { var f = [$('#tv-wa-link'), $('#tv-modal-close')], i = f.indexOf(document.activeElement); e.preventDefault(); f[(i + 1) % 2].focus(); }\r\n      return;\r\n    }\r\n    if (e.key === 'Enter' && el.tagName === 'INPUT' && (el.type === 'text' || el.type === 'tel' || el.type === 'number')) {\r\n      e.preventDefault();\r\n      if (S.step === 3) sendWhatsApp(); else if (S.step === 1) { nextBtn.click(); }\r\n    }\r\n  });\r\n\r\n  \/\/ Pictures: hide the family banner if it cannot load; fall back to the built-in logo copy\r\n  (function () {\r\n    var hero = $('#tv-hero img'), logo = $('.iw-logo');\r\n    function hideHero() { $('#tv-hero').hidden = true; }\r\n    hero.addEventListener('error', hideHero);\r\n    if (hero.complete && hero.naturalWidth === 0 && hero.getAttribute('src')) { \/* still loading or failed: error event covers failure *\/ }\r\n    function useFallback() { if (!logo.getAttribute('data-fb')) { logo.setAttribute('data-fb', '1'); logo.src = LOGO_FALLBACK; } }\r\n    logo.addEventListener('error', useFallback);\r\n    if (logo.complete && logo.naturalWidth === 0) useFallback();\r\n  })();\r\n\r\n  renderTrav(); syncStep1(); recalc(); show();\r\n})();\r\n<\/script>\r\n<\/div>\r\n<!-- ================= END INSURANCE WALA TRAVEL INSURANCE CALCULATOR ================= -->\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Travel insurance calculator Compare Pak-Qatar and EFU rates, then download your quotation. Step 1 of 3 Lowest premium &ndash; Back Compare plans One last step WhatsApp is opening with your quote filled in. Tap Send in WhatsApp so it reaches us. We will reply with the application steps. Open WhatsApp again Done<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"rs_blank_template":"","rs_page_bg_color":"","slide_template_v7":"","footnotes":""},"class_list":["post-5298","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Travel Insurance Calculator Pakistan | Insurance Wala<\/title>\n<meta name=\"description\" content=\"Get a travel insurance premium estimate for Pakistan travellers. Compare cover and request a quote on WhatsApp.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/insurancewala.pk\/?page_id=5298\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Travel Insurance Calculator\" \/>\n<meta property=\"og:description\" content=\"Calculate your travel insurance premium in minutes! Compare plans for Schengen, Umrah, or international trips, including medical coverage, baggage loss, and emergency assistance. Get the best rates with Insurance Wala\" \/>\n<meta property=\"og:url\" content=\"https:\/\/insurancewala.pk\/?page_id=5298\" \/>\n<meta property=\"og:site_name\" content=\"Insurance Wala\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/share\/1ZDzV3aBDp\/?mibextid=wwXIfr\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-15T09:32:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/11\/Asset-2-1536x1085-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1085\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298\",\"url\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298\",\"name\":\"Travel Insurance Calculator Pakistan | Insurance Wala\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/insurancewala.pk\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo-green-500-x-500-px.png\",\"datePublished\":\"2025-11-17T12:41:21+00:00\",\"dateModified\":\"2026-10-15T09:32:29+00:00\",\"description\":\"Get a travel insurance premium estimate for Pakistan travellers. Compare cover and request a quote on WhatsApp.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298#primaryimage\",\"url\":\"https:\\\/\\\/insurancewala.pk\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo-green-500-x-500-px.png\",\"contentUrl\":\"https:\\\/\\\/insurancewala.pk\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logo-green-500-x-500-px.png\",\"width\":500,\"height\":500,\"caption\":\"Smart Insurance for Tomorrow\u2019s Families\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/?page_id=5298#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/insurancewala.pk\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Travel Insurance Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#website\",\"url\":\"https:\\\/\\\/insurancewala.pk\\\/\",\"name\":\"InsuranceWala.pk\",\"description\":\"Smart Insurance for Tomorrow\u2019s Families\",\"publisher\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/insurancewala.pk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#organization\",\"name\":\"Insurance Wala\",\"url\":\"https:\\\/\\\/insurancewala.pk\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/insurancewala.pk\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/cropped-logo-Green-800-x-500-px.png\",\"contentUrl\":\"https:\\\/\\\/insurancewala.pk\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/cropped-logo-Green-800-x-500-px.png\",\"width\":500,\"height\":368,\"caption\":\"Insurance Wala\"},\"image\":{\"@id\":\"https:\\\/\\\/insurancewala.pk\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/share\\\/1ZDzV3aBDp\\\/?mibextid=wwXIfr\",\"https:\\\/\\\/www.instagram.com\\\/insurance_walay.pk?igsh=MTRicGd3NjJndmJoMg&utm_source=qr\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/insurancewalay\\\/\"],\"email\":\"admin@insurancewala.pk\",\"telephone\":\"+92 3223579770\",\"foundingDate\":\"2020-09-04\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1\",\"maxValue\":\"10\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Travel Insurance Calculator Pakistan | Insurance Wala","description":"Get a travel insurance premium estimate for Pakistan travellers. Compare cover and request a quote on WhatsApp.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/insurancewala.pk\/?page_id=5298","og_locale":"en_US","og_type":"article","og_title":"Travel Insurance Calculator","og_description":"Calculate your travel insurance premium in minutes! Compare plans for Schengen, Umrah, or international trips, including medical coverage, baggage loss, and emergency assistance. Get the best rates with Insurance Wala","og_url":"https:\/\/insurancewala.pk\/?page_id=5298","og_site_name":"Insurance Wala","article_publisher":"https:\/\/www.facebook.com\/share\/1ZDzV3aBDp\/?mibextid=wwXIfr","article_modified_time":"2026-10-15T09:32:29+00:00","og_image":[{"width":1536,"height":1085,"url":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/11\/Asset-2-1536x1085-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/insurancewala.pk\/?page_id=5298","url":"https:\/\/insurancewala.pk\/?page_id=5298","name":"Travel Insurance Calculator Pakistan | Insurance Wala","isPartOf":{"@id":"https:\/\/insurancewala.pk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/insurancewala.pk\/?page_id=5298#primaryimage"},"image":{"@id":"https:\/\/insurancewala.pk\/?page_id=5298#primaryimage"},"thumbnailUrl":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/logo-green-500-x-500-px.png","datePublished":"2025-11-17T12:41:21+00:00","dateModified":"2026-10-15T09:32:29+00:00","description":"Get a travel insurance premium estimate for Pakistan travellers. Compare cover and request a quote on WhatsApp.","breadcrumb":{"@id":"https:\/\/insurancewala.pk\/?page_id=5298#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/insurancewala.pk\/?page_id=5298"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/insurancewala.pk\/?page_id=5298#primaryimage","url":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/logo-green-500-x-500-px.png","contentUrl":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/logo-green-500-x-500-px.png","width":500,"height":500,"caption":"Smart Insurance for Tomorrow\u2019s Families"},{"@type":"BreadcrumbList","@id":"https:\/\/insurancewala.pk\/?page_id=5298#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/insurancewala.pk\/"},{"@type":"ListItem","position":2,"name":"Travel Insurance Calculator"}]},{"@type":"WebSite","@id":"https:\/\/insurancewala.pk\/#website","url":"https:\/\/insurancewala.pk\/","name":"InsuranceWala.pk","description":"Smart Insurance for Tomorrow\u2019s Families","publisher":{"@id":"https:\/\/insurancewala.pk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/insurancewala.pk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/insurancewala.pk\/#organization","name":"Insurance Wala","url":"https:\/\/insurancewala.pk\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/insurancewala.pk\/#\/schema\/logo\/image\/","url":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/cropped-logo-Green-800-x-500-px.png","contentUrl":"https:\/\/insurancewala.pk\/wp-content\/uploads\/2025\/10\/cropped-logo-Green-800-x-500-px.png","width":500,"height":368,"caption":"Insurance Wala"},"image":{"@id":"https:\/\/insurancewala.pk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/share\/1ZDzV3aBDp\/?mibextid=wwXIfr","https:\/\/www.instagram.com\/insurance_walay.pk?igsh=MTRicGd3NjJndmJoMg&utm_source=qr","https:\/\/www.linkedin.com\/company\/insurancewalay\/"],"email":"admin@insurancewala.pk","telephone":"+92 3223579770","foundingDate":"2020-09-04","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1","maxValue":"10"}}]}},"_links":{"self":[{"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/pages\/5298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/insurancewala.pk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5298"}],"version-history":[{"count":11,"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/pages\/5298\/revisions"}],"predecessor-version":[{"id":5646,"href":"https:\/\/insurancewala.pk\/index.php?rest_route=\/wp\/v2\/pages\/5298\/revisions\/5646"}],"wp:attachment":[{"href":"https:\/\/insurancewala.pk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}