{"id":40259,"date":"2026-09-06T06:44:47","date_gmt":"2026-09-06T06:44:47","guid":{"rendered":"https:\/\/klippik.com\/in\/gifts\/"},"modified":"2026-10-08T04:53:39","modified_gmt":"2026-10-08T04:53:39","slug":"gifts","status":"publish","type":"page","link":"https:\/\/klippik.com\/in\/gifts\/","title":{"rendered":"GIFTS"},"content":{"rendered":"<style id=\"kkg-kw-layout\">body.page-id-40259 .wd-content-layout .wd-sidebar.sidebar-container{display:none!important}body.page-id-40259 .wd-content-layout{grid-template-columns:1fr!important}body.page-id-40259 .wd-content-layout .wd-content-area{grid-column:1\/-1!important;width:100%!important;max-width:100%!important}<\/style>\n\n<div class=\"wp-block-wd-section wd-524e3459\">\n<div class=\"wp-block-wd-row wd-3976bb5c\">\n<div class=\"wp-block-wd-column wd-46923496\"><\/div>\n<\/div>\n\n\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&#038;display=swap\">\n<style>\n  .kkg{\n    --paper:#ffffff;--surface:#ffffff;--surface-2:#f6f6f4;--tile:#f0f0ee;\n    --ink:#111111;--ink-2:#5c5c5c;--ink-3:#8f8f8f;--line:#e6e6e3;--line-2:#efefec;\n    --btn:#111111;--btn-ink:#ffffff;--ok:#1c7a4f;--warn:#b23b3b;\n    --shadow:0 1px 2px rgba(0,0,0,.04),0 12px 34px rgba(0,0,0,.07);--radius:16px;\n    font-family:\"Poppins\",ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",Roboto,Arial,sans-serif;\n    color:var(--ink);background:var(--paper);width:100%;max-width:1200px;margin:0 auto;padding:22px;line-height:1.5;-webkit-font-smoothing:antialiased;\n  }\n  \/* Locked to light to match the KlippiK site (white shop cards, black CTAs); product photos read correctly on light tiles. Site is light-only, so no dark-mode adaptation. *\/\n  .kkg *{box-sizing:border-box}\n  .kkg [hidden]{display:none!important}\n  .kkg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}\n  .kkg-brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.02em;font-size:14px}\n  .kkg-brand b{background:var(--ink);color:var(--paper);padding:2px 6px;border-radius:5px;font-size:12px}\n  .kkg-lang{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;flex:none}\n  .kkg-lang button{appearance:none;border:0;background:transparent;color:var(--ink-2);font-family:inherit;font-size:12px;font-weight:600;padding:6px 12px;cursor:pointer}\n  .kkg-lang button[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper)}\n  .kkg h1{font-size:clamp(23px,3.6vw,30px);font-weight:700;letter-spacing:-.022em;margin:16px 0 4px;text-wrap:balance}\n  .kkg h1,.kkg h2{color:var(--ink)!important;-webkit-text-fill-color:var(--ink)!important}\n  .kkg .sub{color:var(--ink-2);font-size:14px;margin:0 0 18px;max-width:56ch}\n  .kkg-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:18px}\n  .kkg-q .ql{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 10px;display:flex;align-items:center;gap:7px}\n  .kkg-qn{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--ink);color:var(--paper);font-size:11px;font-weight:700}\n  .kkg-opts{display:flex;flex-wrap:wrap;gap:8px}\n  .kkg-opt{appearance:none;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:9px 15px;cursor:pointer;transition:border-color .12s,background .12s}\n  .kkg-opt:hover{border-color:var(--ink-3)}\n  .kkg-opt[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-name{width:100%;max-width:280px;font-family:inherit;font-size:14px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:11px 13px}\n  .kkg-name:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-cta{appearance:none;font-family:inherit;font-size:15px;font-weight:600;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 20px;cursor:pointer;align-self:flex-start;display:inline-flex;align-items:center;gap:9px;transition:opacity .12s}\n  .kkg-cta[disabled]{opacity:.4;cursor:not-allowed}\n  .kkg-cta:not([disabled]):hover{opacity:.9}\n  .kkg-cta .spark{font-size:16px}\n  .kkg-ai{background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--line);border-radius:12px;padding:14px 15px}\n  .kkg-ai-l{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin:0 0 9px}\n  .kkg-ai-l .sp{margin-inline-end:5px}\n  .kkg-ai-in{width:100%;font-family:inherit;font-size:14px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:11px 12px;resize:vertical;min-height:46px}\n  .kkg-ai-in:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-ai-hint{font-size:11px;color:var(--ink-3);margin:7px 0 0}\n  .kkg-ai-go{margin-top:12px;font-size:14px;padding:12px 18px}\n\n  .kkg-res{margin-top:22px}\n  .kkg-res-h h2{font-size:clamp(19px,2.6vw,24px);font-weight:700;letter-spacing:-.02em;margin:0}\n  .kkg-res-sub{color:var(--ink-2);font-size:13.5px;margin:2px 0 16px}\n\n  .kkg-gift{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}\n  .kkg-gift-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line-2);background:var(--surface-2)}\n  .kkg-gift-top .lbl{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}\n  .kkg-total{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}\n\n  .kkg-items{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;padding:16px}\n  .kkg-items.lead{justify-content:flex-start}\n  .kkg-card{position:relative;flex:1 1 168px;max-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}\n  .kkg-thumb{aspect-ratio:1\/1;background:var(--tile);position:relative;display:grid;place-items:center;overflow:hidden}\n  .kkg-thumb img{width:100%;height:100%;object-fit:cover;display:block}\n  .kkg-obj{width:64%;height:64%;border-radius:16px;display:grid;place-items:center;box-shadow:0 8px 20px rgba(0,0,0,.16)}\n  .kkg-obj svg{width:40%;height:40%}\n  .kkg-tag{position:absolute;top:8px;inset-inline-start:8px;font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;background:rgba(0,0,0,.6);color:#fff;padding:2px 7px;border-radius:999px}\n  .kkg-catpill{position:absolute;bottom:8px;inset-inline-start:8px;font-size:9.5px;font-weight:600;background:var(--paper);color:var(--ink-2);padding:2px 8px;border-radius:999px;border:1px solid var(--line)}\n  .kkg-remove{position:absolute;top:7px;inset-inline-end:7px;z-index:2;width:24px;height:24px;border-radius:50%;border:0;background:rgba(17,17,17,.72);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:grid;place-items:center}\n  .kkg-remove:hover{background:var(--warn)}\n  .kkg-cbody{padding:11px 12px 12px;display:flex;flex-direction:column;gap:3px;flex:1}\n  .kkg-cname{font-size:12.5px;font-weight:600;letter-spacing:-.01em;line-height:1.28;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n  .kkg-price{font-size:13.5px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}\n  .kkg-was{font-weight:500;color:var(--ink-3);text-decoration:line-through;font-size:.82em;margin-inline-start:5px}\n  .kkg-save{display:inline-block;font-size:9.5px;font-weight:700;color:var(--paper);background:var(--ink);border-radius:5px;padding:1px 5px;margin-inline-start:5px;vertical-align:middle;letter-spacing:.02em}\n  .kkg-deliv{display:inline-flex;align-items:center;gap:4px;margin-top:3px;font-size:10.5px;font-weight:600;color:var(--ink-3);line-height:1.3}\n  .kkg-deliv.fast{color:var(--ok)}\n  .kkg-deliv svg{flex:none;opacity:.9}\n  .kkg-view{margin-top:8px;text-align:center;text-decoration:none;font-size:11.5px;font-weight:600;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:7px}\n  .kkg-view:hover{color:var(--ink)}\n\n  .kkg-budgetbar{padding:0 18px 16px;display:flex;align-items:center;gap:10px}\n  .kkg-track{flex:1;height:6px;border-radius:999px;background:var(--line);overflow:hidden}\n  .kkg-fill{height:100%;background:var(--ink);border-radius:999px;transition:width .25s}\n  .kkg-fill.over{background:var(--warn)}\n  .kkg-bmeta{font-size:12px;font-weight:600;white-space:nowrap;color:var(--ink-2)}\n  .kkg-bmeta.over{color:var(--warn)}\n  .kkg-arrives{display:flex;align-items:center;gap:7px;margin:2px 18px 0;padding:12px 0 16px;border-top:1px solid var(--line-2);font-size:12.5px;font-weight:600;color:var(--ink-2)}\n  .kkg-arrives.fast{color:var(--ok)}\n  .kkg-arrives svg{flex:none}\n  .kkg-arrives b{font-weight:700}\n\n  .kkg-more{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}\n  .kkg-more-h{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}\n  .kkg-mfilters{display:flex;gap:7px;overflow-x:auto;padding-bottom:8px;margin-bottom:12px;scrollbar-width:thin}\n  .kkg-mf{appearance:none;flex:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer;white-space:nowrap}\n  .kkg-mf[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-more-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}\n  .kkg-scard{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:11px;overflow:hidden;display:flex;flex-direction:column}\n  .kkg-scard .kkg-thumb{aspect-ratio:1\/1}\n  .kkg-sbody{padding:9px 10px 10px;display:flex;flex-direction:column;gap:2px;flex:1}\n  .kkg-sname{font-size:11.5px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n  .kkg-sprice{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}\n  .kkg-plus{margin-top:7px;appearance:none;font-family:inherit;font-size:11.5px;font-weight:600;color:var(--btn-ink);background:var(--btn);border:0;border-radius:8px;padding:8px;cursor:pointer}\n  .kkg-plus:hover{opacity:.9}\n  .kkg-plus.in{background:var(--surface-2);color:var(--ink-3);border:1px solid var(--line)}\n  .kkg-more-note{font-size:11.5px;color:var(--ink-3);margin:12px 2px 0;text-align:center}\n  .kkg-loading{padding:22px;text-align:center;color:var(--ink-3);font-size:13px;grid-column:1\/-1}\n\n  .kkg-corp{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}\n  .kkg-corp-l{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}\n  .kkg-qty{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n  .kkg-qchip{appearance:none;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 14px;cursor:pointer;min-width:46px;font-variant-numeric:tabular-nums}\n  .kkg-qchip[aria-pressed=\"true\"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}\n  .kkg-qcustom{font-family:inherit;font-size:13.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:9px 12px;width:104px}\n  .kkg-qcustom:focus-visible{outline:2px solid var(--ink);outline-offset:2px}\n  .kkg-corp-tot{font-size:14px;color:var(--ink-2);margin:14px 0 0}\n  .kkg-corp-tot b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}\n  .kkg-success{display:flex;gap:13px;align-items:flex-start;margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}\n  .kkg-success .ok{flex:none;width:30px;height:30px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-weight:700}\n  .kkg-success p{margin:0;font-size:14.5px;font-weight:600}\n  .kkg-success-btns{display:flex;gap:10px;margin-top:11px;flex-wrap:wrap}\n  .kkg-viewbag{text-decoration:none;font-size:13.5px;font-weight:700;color:var(--btn-ink);background:var(--btn);border-radius:10px;padding:10px 16px}\n  .kkg-viewbag:hover{opacity:.9}\n  .kkg-keep{appearance:none;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 16px;cursor:pointer}\n  .kkg-swarn{font-size:12.5px;color:var(--warn);margin:8px 0 0!important;font-weight:500!important}\n  .kkg-quote{appearance:none;font-family:inherit;font-size:15px;font-weight:700;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:9px}\n  .kkg-quote:hover{opacity:.9}\n  .kkg-addall.secondary{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}\n  .kkg-qemail{font-size:12.5px;color:var(--ink-3);margin-top:10px}\n  .kkg-qemail a{color:var(--ink-2)}\n\n  .kkg-msg{margin-top:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}\n  .kkg-msg .mh{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-bottom:9px}\n  .kkg-msg .mh .kkg-copy{margin-inline-start:auto}\n  .kkg-editbadge{font-size:10.5px;font-weight:600;color:var(--ink-3);white-space:nowrap}\n  .kkg-msg .mt{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}\n  .kkg-copy{appearance:none;font-family:inherit;font-size:12px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 12px;cursor:pointer}\n  .kkg-copy:hover{border-color:var(--ink-3)}\n  .kkg-msg .mbody{font-size:15px;color:var(--ink);line-height:1.6;border:1px dashed var(--line);border-radius:8px;padding:9px 11px;cursor:text;white-space:pre-wrap;transition:border-color .12s,background .12s}\n  .kkg-msg .mbody:hover{border-color:var(--ink-3)}\n  .kkg-msg .mbody:focus{outline:none;border:1px solid var(--ink);background:var(--surface-2)}\n\n  .kkg-actions{display:flex;gap:12px;align-items:center;margin-top:18px;flex-wrap:wrap}\n  .kkg-addall{appearance:none;font-family:inherit;font-size:15px;font-weight:700;color:var(--btn-ink);background:var(--btn);border:0;border-radius:12px;padding:14px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:9px}\n  .kkg-addall[disabled]{opacity:.5;cursor:default}\n  .kkg-addall:not([disabled]):hover{opacity:.9}\n  .kkg-again,.kkg-link{appearance:none;font-family:inherit;background:none;border:0;cursor:pointer}\n  .kkg-again{font-size:13.5px;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;gap:7px}\n  .kkg-again:hover{color:var(--ink-2)}\n  .kkg-link{font-size:13px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:3px}\n  .kkg-shop{margin-inline-start:auto;font-size:13px;font-weight:600;color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--line);padding-bottom:1px}\n  .kkg-shop:hover{color:var(--ink)}\n  .kkg-flash{font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:10px 13px;margin-top:12px}\n\n  .kkg-ribbon{margin-top:14px;font-size:12px;color:var(--ink-2);background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:10px 13px}\n  .kkg-foot{margin-top:20px;padding-top:14px;border-top:1px solid var(--line);font-size:11.5px;color:var(--ink-3);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}\n  @media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}\n<\/style>\n\n<div class=\"kkg\" id=\"kkg\" lang=\"en\" dir=\"ltr\">\n  <div class=\"kkg-head\">\n    <span class=\"kkg-brand\"><b>KK<\/b> KlippiK<\/span>\n    <span class=\"kkg-lang\" role=\"group\" aria-label=\"Language\">\n      <button type=\"button\" data-lang=\"en\" aria-pressed=\"true\">EN<\/button>\n      <button type=\"button\" data-lang=\"ar\" aria-pressed=\"false\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/button>\n    <\/span>\n  <\/div>\n\n  <h1 data-t=\"title\">Build the perfect gift in 20 seconds<\/h1>\n  <p class=\"sub\" data-t=\"sub\">Answer a few quick questions and our concierge starts a gift bundle they\u2019ll love \u2014 then add, swap or remove anything, and send it to the bag in one click.<\/p>\n\n  <div class=\"kkg-panel\">\n    <div class=\"kkg-ai\">\n      <label class=\"kkg-ai-l\" for=\"kkg-desc\"><span class=\"sp\">\u2728<\/span><span data-t=\"ai_l\">Describe them and AI picks the gift (optional)<\/span><\/label>\n      <textarea class=\"kkg-ai-in\" id=\"kkg-desc\" rows=\"2\" data-ph=\"ai_ph\"><\/textarea>\n      <p class=\"kkg-ai-hint\" data-t=\"ai_hint\">Or just answer the quick questions below.<\/p>\n      <button type=\"button\" class=\"kkg-cta kkg-ai-go\" id=\"kkg-ai-go\" disabled><span class=\"spark\">\u2726<\/span><span data-t=\"ai_go\">Build with AI<\/span><\/button>\n    <\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">1<\/span><span data-t=\"q_who\">Who\u2019s it for?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-who\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">2<\/span><span data-t=\"q_occ\">What\u2019s the occasion?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-occ\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">3<\/span><span data-t=\"q_int\">What are they into? <span style=\"text-transform:none;font-weight:500;color:var(--ink-3)\" data-t=\"optional\">(optional, pick any)<\/span><\/span><\/p><div class=\"kkg-opts\" id=\"opt-int\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">4<\/span><span data-t=\"q_bud\">Budget?<\/span><\/p><div class=\"kkg-opts\" id=\"opt-bud\"><\/div><\/div>\n    <div class=\"kkg-q\"><p class=\"ql\"><span class=\"kkg-qn\">5<\/span><span data-t=\"q_name\">Their name <span style=\"text-transform:none;font-weight:500;color:var(--ink-3)\" data-t=\"optional2\">(optional \u2014 for the gift note)<\/span><\/span><\/p><input class=\"kkg-name\" id=\"kkg-name\" type=\"text\" autocomplete=\"off\" maxlength=\"24\" data-ph=\"name\"><\/div>\n    <button type=\"button\" class=\"kkg-cta\" id=\"kkg-go\" disabled><span class=\"spark\">\u2726<\/span><span data-t=\"reveal\">Build the gift<\/span><\/button>\n  <\/div>\n\n  <div class=\"kkg-res\" id=\"kkg-res\" hidden>\n    <div class=\"kkg-res-h\"><h2 id=\"kkg-res-title\" data-t=\"res_title\">Their gift bundle<\/h2><\/div>\n    <p class=\"kkg-res-sub\" id=\"kkg-res-sub\" data-t=\"res_sub\">We started it for you \u2014 add, swap or remove anything below.<\/p>\n\n    <div class=\"kkg-gift\">\n      <div class=\"kkg-gift-top\">\n        <span class=\"lbl\" data-t=\"yourbundle\">Gift bundle<\/span>\n        <span class=\"kkg-total\" id=\"kkg-total\"><\/span>\n      <\/div>\n      <div class=\"kkg-items\" id=\"kkg-items\"><\/div>\n      <div class=\"kkg-budgetbar\" id=\"kkg-budgetbar\" hidden>\n        <span class=\"kkg-track\"><span class=\"kkg-fill\" id=\"kkg-fill\"><\/span><\/span>\n        <span class=\"kkg-bmeta\" id=\"kkg-bmeta\"><\/span>\n      <\/div>\n      <p class=\"kkg-arrives\" id=\"kkg-arrives\" hidden><\/p>\n    <\/div>\n\n    <div class=\"kkg-corp\" id=\"kkg-corp\" hidden>\n      <p class=\"kkg-corp-l\" data-t=\"howmany\">How many of this gift?<\/p>\n      <div class=\"kkg-qty\" id=\"kkg-qty\"><\/div>\n      <p class=\"kkg-corp-tot\" id=\"kkg-corp-tot\"><\/p>\n    <\/div>\n\n    <div class=\"kkg-msg\">\n      <div class=\"mh\"><span class=\"mt\" data-t=\"giftnote\">Gift note<\/span><span class=\"kkg-editbadge\" data-t=\"editable\">\u270e editable<\/span><button type=\"button\" class=\"kkg-copy\" id=\"kkg-copy\" data-t=\"copy\">Copy<\/button><\/div>\n      <p class=\"mbody\" id=\"kkg-msgbody\" contenteditable=\"true\" role=\"textbox\" aria-multiline=\"true\" aria-label=\"Gift note \u2014 editable\" spellcheck=\"true\"><\/p>\n    <\/div>\n\n    <div class=\"kkg-success\" id=\"kkg-success\" hidden>\n      <span class=\"ok\" aria-hidden=\"true\">\u2713<\/span>\n      <div style=\"flex:1\">\n        <p id=\"kkg-success-tx\"><\/p>\n        <div class=\"kkg-success-btns\">\n          <a class=\"kkg-viewbag\" id=\"kkg-viewbag\" href=\"#\" data-t=\"viewbag\">View bag \u2192<\/a>\n          <button type=\"button\" class=\"kkg-keep\" id=\"kkg-keep\" data-t=\"keep\">Keep building<\/button>\n        <\/div>\n        <p class=\"kkg-swarn\" id=\"kkg-success-warn\" hidden><\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"kkg-actions\">\n      <button type=\"button\" class=\"kkg-quote\" id=\"kkg-quote\" hidden><span>\ud83d\udcac<\/span><span data-t=\"quote\">Request a quote<\/span><\/button>\n      <button type=\"button\" class=\"kkg-addall\" id=\"kkg-addall\"><span>\ud83d\udecd\ufe0f<\/span><span data-t=\"addall\">Add bundle to bag<\/span><\/button>\n      <button type=\"button\" class=\"kkg-again\" id=\"kkg-again\"><span>\u21bb<\/span><span data-t=\"another\">Fresh idea<\/span><\/button>\n    <\/div>\n    <p class=\"kkg-qemail\" id=\"kkg-qemail\" hidden><\/p>\n    <p class=\"kkg-flash\" id=\"kkg-flash\" hidden><\/p>\n\n    <div class=\"kkg-more\">\n      <p class=\"kkg-more-h\" data-t=\"addmore\">Add more to the gift<\/p>\n      <div class=\"kkg-mfilters\" id=\"kkg-mfilters\"><\/div>\n      <div class=\"kkg-more-grid\" id=\"kkg-more\"><\/div>\n      <p class=\"kkg-more-note\" id=\"kkg-more-note\" hidden><\/p>\n    <\/div>\n\n    <div class=\"kkg-actions kkg-actions-sec\">\n      <button type=\"button\" class=\"kkg-link\" id=\"kkg-reset\" data-t=\"startover\">Start over<\/button>\n      <a class=\"kkg-shop\" id=\"kkg-shopall\" href=\"#\" target=\"_blank\" rel=\"noopener\" data-t=\"shopall\">Browse everything \u2192<\/a>\n    <\/div>\n  <\/div>\n\n  <div class=\"kkg-ribbon\" id=\"kkg-ribbon\" hidden><\/div>\n  <div class=\"kkg-foot\"><span data-t=\"foot1\">Curated by KlippiK \u00b7 Prices in INR<\/span><span data-t=\"foot2\">In-country stock \u00b7 Cash on delivery in India<\/span><\/div>\n<\/div>\n\n<script>(function(){var B=\"CihmdW5jdGlvbigpewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgQ09ORklHPXsgbGl2ZUhvc3RzOlsia2xpcHBpay5jb20iXSwgc3RvcmVCYXNlOiIvaW4iLAogICAgY2F0SWRzOntiYWdzOjY5LGhvbWU6NTQ4LGRlc2s6MTM5LHNtYWxsOjE0MCxjYXNlczo3MCx3YWxsZXRzOjY4LHdhdGNoOjE3NX0sCiAgICBhZGRUb0NhcnQ6Imh0dHBzOi8va2xpcHBpay5jb20vaW4vP2FkZC10by1jYXJ0PSIsIHNob3BBbGxVcmw6Imh0dHBzOi8va2xpcHBpay5jb20vaW4vc2hvcC8iLAogICAgd2hhdHNhcHA6Ijk2NTUxNzgwOTAzIiwgZW5xdWlyeUVtYWlsOiJzdXBwb3J0QGtsaXBwaWsuY29tIiwKICAgIGFpV2ViaG9vazoiaHR0cHM6Ly9ob29rLmV1MS5tYWtlLmNvbS9mcXUzd3c4cTZpczFmNWlzM2hvbXd4eWd3Y2J2d2JuaiIsIC8qIE1ha2UuY29tIOKGkiBHZW1pbmkuIEVtcHR5ID0gYnVpbHQtaW4ga2V5d29yZCBmYWxsYmFjay4gKi8KICAgIGN1cnJlbmN5OiLigrkiLCBtaW5vclVuaXQ6MiwKICAgIC8qIERlbGl2ZXJ5LWRheSBvZmZzZXRzIGZyb20gdG9kYXksIG1hdGNoZWQgdG8gdGhpcyBzdG9yZSdzIFdvb2RtYXJ0ICJFc3RpbWF0ZWQgZGVsaXZlcnkiIHJ1bGVzIChPY3QgMjAyNikuIE9ubHkgaW4tc3RvY2sgaXRlbXMgYXJlIG9mZmVyZWQuIFVwZGF0ZSBoZXJlIGlmIHRoZSBzdG9yZSdzIGRlbGl2ZXJ5IHNldHRpbmdzIGNoYW5nZS4gKi8KICAgIGRlbGl2ZXJ5Onsgc3RvY2s6WzQsNV0sIGJhY2tvcmRlcjpbOCwxMF0gfSB9OwoKICAvKiAtLS0tIGFuYWx5dGljczogZmlyZXMgdG8gR0E0IChndGFnKSBhbmQgTWV0YSBQaXhlbCAoZmJxKSBpZiBwcmVzZW50OyBzaWxlbnQgbm8tb3Agb3RoZXJ3aXNlIC0tLS0gKi8KICBmdW5jdGlvbiB0cmFjayhuYW1lLCBwYXJhbXMpeyBwYXJhbXM9cGFyYW1zfHx7fTsKICAgIHRyeXsgaWYodHlwZW9mIHdpbmRvdy5ndGFnPT09ImZ1bmN0aW9uIikgd2luZG93Lmd0YWcoImV2ZW50IiwgbmFtZSwgcGFyYW1zKTsgfWNhdGNoKGUpe30KICAgIHRyeXsgaWYodHlwZW9mIHdpbmRvdy5mYnE9PT0iZnVuY3Rpb24iKSB3aW5kb3cuZmJxKCJ0cmFja0N1c3RvbSIsIG5hbWUsIHBhcmFtcyk7IH1jYXRjaChlKXt9CiAgfQogIGZ1bmN0aW9uIHRyYWNrQWRkVG9CYWcoYWRkZWQsIHZhbCl7CiAgICB0cnl7IGlmKHR5cGVvZiB3aW5kb3cuZ3RhZz09PSJmdW5jdGlvbiIpIHdpbmRvdy5ndGFnKCJldmVudCIsImFkZF90b19jYXJ0Iix7Y3VycmVuY3k6Q09ORklHLmN1cnJlbmN5LHZhbHVlOnZhbCxpdGVtczpzdC5idW5kbGUubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB7aXRlbV9pZDp4LmlkLGl0ZW1fbmFtZTp4Lm4scHJpY2U6eC5wLHF1YW50aXR5OjF9O30pfSk7IH1jYXRjaChlKXt9CiAgICB0cnl7IGlmKHR5cGVvZiB3aW5kb3cuZmJxPT09ImZ1bmN0aW9uIikgd2luZG93LmZicSgidHJhY2siLCJBZGRUb0NhcnQiLHtjdXJyZW5jeTpDT05GSUcuY3VycmVuY3ksdmFsdWU6dmFsLG51bV9pdGVtczphZGRlZCxjb250ZW50X3R5cGU6InByb2R1Y3QiLGNvbnRlbnRfaWRzOnN0LmJ1bmRsZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHguaWQ7fSl9KTsgfWNhdGNoKGUpe30KICAgIHRyYWNrKCJra2dfYWRkX2J1bmRsZV90b19iYWciLHtpdGVtczphZGRlZCx2YWx1ZTp2YWx9KTsKICB9CgogIHZhciBTRUVEPVt7ImlkIjoxNzM1MCwibiI6Ik1pZG5pZ2h0IEJsdWUgQnVveSBUb3RlIEJhZyIsImsiOiJiYWdzIiwicCI6MjguMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoxNzM0OSwibiI6IktoYWtpIEJlaWdlIEJ1b3kgVG90ZSBCYWciLCJrIjoiYmFncyIsInAiOjI4LjAsImMiOiIiLCJudSI6MX0seyJpZCI6MTcyMzUsIm4iOiJNaWRuaWdodCBCbHVlIFBpbG90IEJhY2twYWNrIiwiayI6ImJhZ3MiLCJwIjoyOC4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjE3NDIwLCJuIjoiTWlkbmlnaHQgQmx1ZSBTY291dCBDcm9zc2JvZHkgQmFnIiwiayI6ImJhZ3MiLCJwIjoxNy4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjE3NDE5LCJuIjoiS2hha2kgQmVpZ2UgU2NvdXQgQ3Jvc3Nib2R5IEJhZyIsImsiOiJiYWdzIiwicCI6MTcuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoxNzM1MSwibiI6IkNyaW1zb24gUmVkIEJ1b3kgVG90ZSBCYWciLCJrIjoiYmFncyIsInAiOjI4LjAsImMiOiJSZWQiLCJudSI6MH0seyJpZCI6MTczNDgsIm4iOiJPbGl2ZSBHcmVlbiBCdW95IFRvdGUgQmFnIiwiayI6ImJhZ3MiLCJwIjoyOC4wLCJjIjoiR3JlZW4iLCJudSI6MH0seyJpZCI6MjA1OTMsIm4iOiJUYW5nZXJpbmUgS2ljayBQaG9uZSBQb2NrZXQiLCJrIjoiYmFncyIsInAiOjExLjAsImMiOiJUYW5nZXJpbmUiLCJudSI6MH0seyJpZCI6MTc0MjIsIm4iOiJNdXN0YXJkIFllbGxvdyBTY291dCBDcm9zc2JvZHkgQmFnIiwiayI6ImJhZ3MiLCJwIjoxNy4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjM4NTQ5LCJuIjoiTWFyYmxlb3VzIEN1dGxlcnkgSG9sZGVyIEZvciBLaXRjaGVuIiwiayI6ImhvbWUiLCJwIjozMi4wLCJjIjoiV2hpdGUiLCJudSI6MX0seyJpZCI6Mzg1NDUsIm4iOiJUcmF5ICYgQ29hc3RlcnMgU2V0IiwiayI6ImhvbWUiLCJwIjo0Ni41LCJjIjoiR3JlZW4gYW5kIHdoaXRlIiwibnUiOjB9LHsiaWQiOjM4NTQxLCJuIjoiTWFyYmxlb3VzIENvYXN0ZXJzIFNldCIsImsiOiJob21lIiwicCI6MTIuNSwiYyI6IkdyZWVuIGFuZCB3aGl0ZSIsIm51IjowfSx7ImlkIjozODUzOCwibiI6IldoaXNwZXIgUHJpbnRlZCBMaW5lbiBGbG93ZXIgTW90aWYgQ3VzaGlvbiIsImsiOiJob21lIiwicCI6Ni4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjM4NTMyLCJuIjoiT21icmUgQ2hldnJvbiBDb3R0b24gQ3VzaGlvbiBDb3ZlciIsImsiOiJob21lIiwicCI6Mi41LCJjIjoiWWVsbG93IiwibnUiOjB9LHsiaWQiOjM4NTA3LCJuIjoiQ2hlcnJ5IFJlZCBDb3R0b24gQ3VzaGlvbiBDb3ZlciIsImsiOiJob21lIiwicCI6NS41LCJjIjoiUmVkIiwibnUiOjB9LHsiaWQiOjM4NDg0LCJuIjoiQ3Jvc3MgU3RpdGNoIEN1c2hpb24gQ292ZXIiLCJrIjoiaG9tZSIsInAiOjUuNSwiYyI6IiIsIm51IjoxfSx7ImlkIjoxODA5OSwibiI6IkRlc2sgVHJpbyBCdW5kbGUg4oCUIExpbWl0ZWQgRWRpdGlvbiIsImsiOiJkZXNrIiwicCI6MjUuMCwiYyI6IkJsYWNrIiwibnUiOjF9LHsiaWQiOjE2NDkwLCJuIjoiVHVyZiAyLjAgRmVsdCBEZXNrIE1hdCBXaXRoIE1vdXNlIFBhZCIsImsiOiJkZXNrIiwicCI6MTYuMCwiYyI6IkdyZXkiLCJudSI6MX0seyJpZCI6MTY0NzQsIm4iOiJUdXJmIDIuMCBGZWx0IERlc2sgTWF0IFdpdGggTW91c2UgUGFkIiwiayI6ImRlc2siLCJwIjoxNi4wLCJjIjoiR3JlZW4iLCJudSI6MH0seyJpZCI6MTY0NjEsIm4iOiJUdXJmIFZlZ2FuIExlYXRoZXIgRGVzayBNYXQiLCJrIjoiZGVzayIsInAiOjE1LjAsImMiOiJUYW4iLCJudSI6MX0seyJpZCI6MTY0NTEsIm4iOiJPcmIgVmVnYW4gTGVhdGhlciBNb3VzZSBQYWQiLCJrIjoiZGVzayIsInAiOjYuMCwiYyI6IlRhbiIsIm51IjoxfSx7ImlkIjozNzUyNywibiI6IlZhbGV0IFZlZ2FuIExlYXRoZXIgVHJheSIsImsiOiJkZXNrIiwicCI6Ni41LCJjIjoiQmxhY2siLCJudSI6MX0seyJpZCI6Mzc1MjAsIm4iOiJUdXJmIFZlZ2FuIExlYXRoZXIgRGVzayBNYXQiLCJrIjoiZGVzayIsInAiOjE1LjAsImMiOiJCbGFjayIsIm51IjoxfSx7ImlkIjoxOTUwOCwibiI6IlVyYmFuZSBUZWNoIEZvbGlvIiwiayI6ImRlc2siLCJwIjoxOC4wLCJjIjoiQmxhY2siLCJudSI6MX0seyJpZCI6MTg1NjEsIm4iOiJDYXIgU21hcnQgS2V5IFJlbW90ZSBDb3ZlciIsImsiOiJzbWFsbCIsInAiOjQuMCwiYyI6IlRhbiIsIm51IjoxfSx7ImlkIjoyNjE1MSwibiI6IkxlYXRoZXJpdGUgQ3Jvc3Nib2R5IFBob25lIExhbnlhcmQiLCJrIjoic21hbGwiLCJwIjoxMC4wLCJjIjoiIiwibnUiOjF9LHsiaWQiOjI2MzUyLCJuIjoiRmxpbnQgS2V5Y2hhaW4iLCJrIjoic21hbGwiLCJwIjo1LjAsImMiOiIiLCJudSI6MX0seyJpZCI6MjYzNDIsIm4iOiJGbGludCBLZXljaGFpbiIsImsiOiJzbWFsbCIsInAiOjUuMCwiYyI6IlB1cnBsZSIsIm51IjowfSx7ImlkIjoyNjMzMiwibiI6IkZsaW50IEtleWNoYWluIiwiayI6InNtYWxsIiwicCI6NS4wLCJjIjoiTGlnaHQgR3JleSIsIm51IjoxfSx7ImlkIjoyNjMwMywibiI6IldyaXN0IExhbnlhcmQg4oCUIENvcmQiLCJrIjoic21hbGwiLCJwIjo2LjAsImMiOiJPcmFuZ2UiLCJudSI6MH0seyJpZCI6MjYyODUsIm4iOiJXcmlzdCBMYW55YXJkIOKAlCBDb3JkIiwiayI6InNtYWxsIiwicCI6Ni4wLCJjIjoiR3JlZW4iLCJudSI6MH0seyJpZCI6MTk0NjcsIm4iOiJTbmFwT24gRW52ZWxvcGUgU2xlZXZlIEZvciBNYWNCb29rIiwiayI6ImNhc2VzIiwicCI6MTQuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjozNjk0OSwibiI6IkJhc2FsdCBQaXZvdCBMYXB0b3AgU2xlZXZlIiwiayI6ImNhc2VzIiwicCI6MjEuMCwiYyI6IkJsYWNrIiwibnUiOjF9LHsiaWQiOjM2OTI5LCJuIjoiQ29yYWwgUGl2b3QgTGFwdG9wIFNsZWV2ZSIsImsiOiJjYXNlcyIsInAiOjIxLjAsImMiOiJSZWQiLCJudSI6MH0seyJpZCI6MzY4NzIsIm4iOiJTZWFncmFzcyBQaXZvdCBMYXB0b3AgU2xlZXZlIiwiayI6ImNhc2VzIiwicCI6MTkuMCwiYyI6IkdyZWVuIiwibnUiOjB9LHsiaWQiOjI4Mjk5LCJuIjoiVGFuIExlYXRoZXJpdGUgQWlyUG9kcyAzIENhc2UiLCJrIjoiY2FzZXMiLCJwIjoxMC4wLCJjIjoiVGFuIiwibnUiOjF9LHsiaWQiOjI4Mjg4LCJuIjoiR3JlZW4gTGVhdGhlcml0ZSBBaXJQb2RzIDMgQ2FzZSIsImsiOiJjYXNlcyIsInAiOjEwLjAsImMiOiJHcmVlbiIsIm51IjowfSx7ImlkIjoyODI3NywibiI6Ik5hdnkgTGVhdGhlcml0ZSBBaXJQb2RzIDMgQ2FzZSIsImsiOiJjYXNlcyIsInAiOjEwLjAsImMiOiJOYXZ5IEJsdWUiLCJudSI6MH0seyJpZCI6MjgyNTUsIm4iOiJCbGFjayBMZWF0aGVyaXRlIEFpclBvZHMgUHJvIDIgQ2FzZSIsImsiOiJjYXNlcyIsInAiOjEwLjAsImMiOiIiLCJudSI6MX0seyJpZCI6MTkxNzAsIm4iOiJWZWdhbiBMZWF0aGVyIFdvbWVu4oCZcyBDbGFzc2ljIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTUuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoyODE4MywibiI6IlRhbi1HcmV5IExlYXRoZXIgTWFnU2FmZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTEuMCwiYyI6IlRhbiIsIm51IjoxfSx7ImlkIjoyODE3MywibiI6IkdyZWVuLU9saXZlIExlYXRoZXIgTWFnU2FmZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTEuMCwiYyI6Ik9saXZlIiwibnUiOjB9LHsiaWQiOjI4MTYzLCJuIjoiTmF2eSBMZWF0aGVyIE1hZ1NhZmUgQ2FyZCBXYWxsZXQiLCJrIjoid2FsbGV0cyIsInAiOjExLjAsImMiOiJOYXZ5IEJsdWUiLCJudSI6MH0seyJpZCI6MjgxNTMsIm4iOiJDcmltc29uIExlYXRoZXIgTWFnU2FmZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTEuMCwiYyI6IkNyaW1zb24tR3JleSIsIm51IjowfSx7ImlkIjoyODE0MCwibiI6IkJsYWNrLUJlaWdlIExlYXRoZXIgTWFnU2FmZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTEuMCwiYyI6IiIsIm51IjoxfSx7ImlkIjoyNTgzNywibiI6IkRhcmsgR3JleSBQdWxzZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6Ni41LCJjIjoiRGFyayBHcmV5IiwibnUiOjF9LHsiaWQiOjI1ODE5LCJuIjoiTGlnaHQgR3JleSBQdWxzZSBDYXJkIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6Ni41LCJjIjoiTGlnaHQgR3JleSIsIm51IjoxfSx7ImlkIjoxOTIwNiwibiI6IlZlZ2FuIExlYXRoZXIgWmlwIFdhbGxldCIsImsiOiJ3YWxsZXRzIiwicCI6MTMuNSwiYyI6IiIsIm51IjoxfSx7ImlkIjoyMjE5MCwibiI6IkJsYWNrIFJpZGdlIExvb3AgQXBwbGUgV2F0Y2hCYW5kIiwiayI6IndhdGNoIiwicCI6MTIuNSwiYyI6IiIsIm51IjoxfSx7ImlkIjoxOTM5NCwibiI6IkNhc3BlciBXaGl0ZSBDbGVhciBBcHBsZSBXYXRjaEJhbmQiLCJrIjoid2F0Y2giLCJwIjoxMC4wLCJjIjoiV2hpdGUiLCJudSI6MX0seyJpZCI6MjY0NTksIm4iOiJEYXJrIEdyZWVuIFJpZGdlIExvb3AgQXBwbGUgV2F0Y2hCYW5kIiwiayI6IndhdGNoIiwicCI6OC41LCJjIjoiR3JlZW4iLCJudSI6MH0seyJpZCI6MjY0MzYsIm4iOiJQbHVtLU9yYW5nZSBTcG9ydHMgTG9vcCBXYXRjaEJhbmQiLCJrIjoid2F0Y2giLCJwIjo4LjUsImMiOiJPcmFuZ2UiLCJudSI6MH1dOwogIFNFRUQuZm9yRWFjaChmdW5jdGlvbih4KXsgeC51PSJodHRwczovL2tsaXBwaWsuY29tLz9wPSIreC5pZDsgeC5zdG9jaz10cnVlOyB9KTsKCiAgdmFyIENBVExBQkVMPXtlbjp7YmFnczoiTGluZW5zIixob21lOiJIb21lICYgTGl2aW5nIixkZXNrOiJMaXZpbmcgUm9vbSIsc21hbGw6IkN1c2hpb24gQ292ZXJzIixjYXNlczoiQmVkcm9vbSIsd2FsbGV0czoiSG9tZSBEZWNvciIsd2F0Y2g6IlRocm93cyJ9LAogICAgICAgICAgICAgICAgYXI6e2JhZ3M6Itit2YLYp9im2KgiLGhvbWU6Itin2YTZhdmG2LLZhCIsZGVzazoi2KfZhNmF2YPYqtioIixzbWFsbDoi2KXZg9iz2LPZiNin2LEiLGNhc2VzOiLYrNix2KfYqNin2KoiLHdhbGxldHM6ItmF2K3Yp9mB2LgiLHdhdGNoOiLYs9mK2YjYsSDYs9in2LnYp9iqIn19OwogIHZhciBDQVRPUkRFUj1bImJhZ3MiLCJkZXNrIiwid2FsbGV0cyIsImNhc2VzIiwiaG9tZSIsInNtYWxsIiwid2F0Y2giXTsKICB2YXIgSVc9eyB0ZWNoOntkZXNrOjMsY2FzZXM6MyxzbWFsbDoxLHdhbGxldHM6MX0sIHRyYXZlbDp7YmFnczozLHdhbGxldHM6MixzbWFsbDoxLGNhc2VzOjF9LAogICAgICAgICAgIG1pbmltYWw6e3dhbGxldHM6MyxjYXNlczoyLHNtYWxsOjF9LCB0cmVuZHk6e3dhdGNoOjIsY2FzZXM6MixzbWFsbDoyLGJhZ3M6MX0sIGhvbWU6e2hvbWU6MyxzbWFsbDoxLGRlc2s6MX0gfTsKICB2YXIgT0NDX05VREdFPXsgZWlkOntob21lOjF9LCBiaXJ0aGRheTp7fSwgd2VkZGluZzp7aG9tZToyfSwgYW5uaXZlcnNhcnk6e2hvbWU6Mn0sIG5ld2pvYjp7ZGVzazoyLGNhc2VzOjEsYmFnczoxfSwgdGhhbmt5b3U6e3NtYWxsOjEsd2FsbGV0czoxLGhvbWU6MX0sIGp1c3RiZWNhdXNlOnt9IH07CiAgdmFyIFdIT19OVURHRT17IGhpbTp7fSwgaGVyOnt9LCB0aGVtOnt9LCBjb3VwbGU6e2hvbWU6Mn0sIGNvcnBvcmF0ZTp7ZGVzazoyLGNhc2VzOjIsYmFnczoxfSB9OwogIHZhciBCQVNFPXtiYWdzOjIsZGVzazoyLHdhbGxldHM6MixjYXNlczoyLGhvbWU6MSxzbWFsbDoxLHdhdGNoOjB9OwoKICB2YXIgT1BUUz17IHdobzpbWyJoaW0iLCJGb3IgaGltIl0sWyJoZXIiLCJGb3IgaGVyIl0sWyJ0aGVtIiwiRm9yIHRoZW0iXSxbImNvdXBsZSIsIkZvciBhIGNvdXBsZSJdLFsiY29ycG9yYXRlIiwiQ29ycG9yYXRlIC8gY2xpZW50Il1dLAogICAgb2NjOltbImVpZCIsIkVpZCJdLFsiYmlydGhkYXkiLCJCaXJ0aGRheSJdLFsid2VkZGluZyIsIldlZGRpbmciXSxbImFubml2ZXJzYXJ5IiwiQW5uaXZlcnNhcnkiXSxbIm5ld2pvYiIsIk5ldyBqb2IgLyBncmFkIl0sWyJ0aGFua3lvdSIsIlRoYW5rIHlvdSJdLFsianVzdGJlY2F1c2UiLCJKdXN0IGJlY2F1c2UiXV0sCiAgICBpbnQ6W1sidGVjaCIsIk1pbmltYWwgJiBtb2Rlcm4iXSxbInRyYXZlbCIsIkJyaWdodCAmIGJvbGQiXSxbIm1pbmltYWwiLCJOZXV0cmFsICYgY2FsbSJdLFsidHJlbmR5IiwiU3RhdGVtZW50IHBpZWNlcyJdLFsiaG9tZSIsIkNvc3kgJiB3YXJtIl1dLAogICAgYnVkOltbIjE1MDAiLCJVcCB0byDigrkxLDUwMCJdLFsiMzAwMCIsIuKCuTEsNTAw4oCTMywwMDAiXSxbIjYwMDAiLCLigrkzLDAwMOKAkzYsMDAwIl0sWyIxMjAwMCIsIuKCuTYsMDAwKyJdXSB9OwogIHZhciBPUFRTX0FSPXsgd2hvOntoaW06ItmE2YciLGhlcjoi2YTZh9inIix0aGVtOiLZhNij2Yog2LTYrti1Iixjb3VwbGU6ItmE2KvZhtin2KbZiiIsY29ycG9yYXRlOiLZhNmE2LTYsdmD2KfYqiAvINin2YTYudmF2YTYp9ihIn0sCiAgICBvY2M6e2VpZDoi2KfZhNi52YrYryIsYmlydGhkYXk6Iti52YrYryDZhdmK2YTYp9ivIix3ZWRkaW5nOiLYstmI2KfYrCIsYW5uaXZlcnNhcnk6Itiw2YPYsdmJINiz2YbZiNmK2KkiLG5ld2pvYjoi2YjYuNmK2YHYqSAvINiq2K7YsdmR2KwiLHRoYW5reW91OiLYtNmD2LHYp9mLIixqdXN0YmVjYXVzZToi2KjZhNinINmF2YbYp9iz2KjYqSJ9LAogICAgaW50Ont0ZWNoOiLYqtmC2YbZitipINmI2YXZg9iq2KgiLHRyYXZlbDoi2LPZgdixINmI2K3ZhdmEIixtaW5pbWFsOiLYqNiz2KfYt9ipINmK2YjZhdmK2KkiLHRyZW5keToi2LnYtdix2Yog2YjZhdmE2YjZkdmGIixob21lOiLZhdmG2LLZhCDZiNiv2YHYoSJ9LAogICAgYnVkOnsiMTUwMCI6Itit2KrZiSDigrkxLDUwMCIsIjMwMDAiOiLigrkxLDUwMOKAkzMsMDAwIiwiNjAwMCI6IuKCuTMsMDAw4oCTNiwwMDAiLCIxMjAwMCI6Itij2YPYq9ixINmF2YYg4oK5NiwwMDAifSB9OwoKICB2YXIgTVNHPXsgZWlkOntlbjoiRWlkIE11YmFyYWt7bmFtZX0hIEEgbGl0dGxlIHNvbWV0aGluZyBjaG9zZW4gd2l0aCB5b3UgaW4gbWluZCDigJQgd2lzaGluZyB5b3Ugam95IHRoaXMgc2Vhc29uLiIsYXI6Iti52YrYryDZhdio2KfYsdmDe25hbWV9ISDZh9iv2YrYqSDYp9iu2KrYsdmG2KfZh9inINmF2YYg2KfZhNmC2YTYqCDigJQg2YPZhCDYudin2YUg2YjYo9mG2KrZhSDYqNiu2YrYsS4ifSwKICAgIGJpcnRoZGF5OntlbjoiSGFwcHkgQmlydGhkYXl7bmFtZX0hIEhlcmXigJlzIGEgbGl0dGxlIHNvbWV0aGluZyB0byBtYWtlIHlvdXIgZGF5LiIsYXI6ItmD2YQg2LnYp9mFINmI2KPZhtiqINio2K7Zitixe25hbWV9ISDZh9iv2YrYqSDYqNiz2YrYt9ipINio2YXZhtin2LPYqNipINmK2YjZhSDZhdmK2YTYp9iv2YMuIn0sCiAgICB3ZWRkaW5nOntlbjoiV2lzaGluZyB5b3UgYm90aCBhIGxpZmV0aW1lIG9mIGhhcHBpbmVzcyDigJQgd2l0aCBsb3ZlLiIsYXI6Itij2YTZgSDZhdio2LHZiNmDISDZhtiq2YXZhtmJINmE2YPZhdinINit2YrYp9ip2Ysg2YXZhNmK2KbYqSDYqNin2YTYs9i52KfYr9ipLiJ9LAogICAgYW5uaXZlcnNhcnk6e2VuOiJIYXBweSBhbm5pdmVyc2FyeXtuYW1lfSDigJQgaGVyZeKAmXMgdG8gbWFueSBtb3JlLiIsYXI6Itiw2YPYsdmJINiz2LnZitiv2Kl7bmFtZX0g4oCUINil2YTZiSDYp9mE2YXYstmK2K8g2YXZhiDYp9mE2LPZhtmI2KfYqiDYp9mE2KzZhdmK2YTYqS4ifSwKICAgIG5ld2pvYjp7ZW46IkNvbmdyYXR1bGF0aW9uc3tuYW1lfSEgT253YXJkcyBhbmQgdXB3YXJkcyDigJQgeW914oCZdmUgZWFybmVkIGl0LiIsYXI6ItmF2KjYsdmI2YN7bmFtZX0hINil2YTZiSDYp9mE2KPZhdin2YUg2K\/Yp9im2YXYp9mLIOKAlCDYqtiz2KrYrdmCINiw2YTZgy4ifSwKICAgIHRoYW5reW91OntlbjoiVGhhbmsgeW91e25hbWV9IOKAlCBhIHNtYWxsIHRva2VuIG9mIGFwcHJlY2lhdGlvbi4iLGFyOiLYtNmD2LHYp9mLINmE2YN7bmFtZX0g4oCUINmE2YHYqtipINio2LPZiti32Kkg2KrZgtiv2YrYsdin2Ysg2YTZgy4ifSwKICAgIGp1c3RiZWNhdXNlOntlbjoiVGhpbmtpbmcgb2YgeW91e25hbWV9IOKAlCBqdXN0IGJlY2F1c2UuIixhcjoi2KrYsNmD2ZHYsdiq2YN7bmFtZX0g4oCUINio2YTYpyDZhdmG2KfYs9io2KnYjCDZgdmC2Lcg2YTYo9mG2YMg2KrYs9iq2K3Zgi4ifSwKICAgIGNvcnBvcmF0ZTp7ZW46IldpdGggb3VyIGNvbXBsaW1lbnRze25hbWV9LCBhbmQgYXBwcmVjaWF0aW9uIGZvciB5b3VyIGNvbnRpbnVlZCBwYXJ0bmVyc2hpcC4iLGFyOiLZhdi5INiu2KfZhNi1INiq2K3Zitin2KrZhtine25hbWV9INmI2KrZgtiv2YrYsdmG2Kcg2YTYqti52KfZiNmG2YPZhSDYp9mE2YXYs9iq2YXYsS4ifSB9OwoKICB2YXIgVD17IGVuOnt0aXRsZToiQnVpbGQgdGhlIHBlcmZlY3QgZ2lmdCBpbiAyMCBzZWNvbmRzIixzdWI6IkFuc3dlciBhIGZldyBxdWljayBxdWVzdGlvbnMgYW5kIG91ciBjb25jaWVyZ2Ugc3RhcnRzIGEgZ2lmdCBidW5kbGUgdGhleeKAmWxsIGxvdmUg4oCUIHRoZW4gYWRkLCBzd2FwIG9yIHJlbW92ZSBhbnl0aGluZywgYW5kIHNlbmQgaXQgdG8gdGhlIGJhZyBpbiBvbmUgY2xpY2suIiwKICAgICAgcV93aG86Ildob+KAmXMgaXQgZm9yPyIscV9vY2M6IldoYXTigJlzIHRoZSBvY2Nhc2lvbj8iLHFfaW50OiJXaGF0IGFyZSB0aGV5IGludG8\/IixvcHRpb25hbDoiKG9wdGlvbmFsLCBwaWNrIGFueSkiLHFfYnVkOiJCdWRnZXQ\/IixxX25hbWU6IlRoZWlyIG5hbWUiLG9wdGlvbmFsMjoiKG9wdGlvbmFsIOKAlCBmb3IgdGhlIGdpZnQgbm90ZSkiLG5hbWU6ImUuZy4gU2FyYSIscmV2ZWFsOiJCdWlsZCB0aGUgZ2lmdCIsCiAgICAgIHJlc190aXRsZToiVGhlaXIgZ2lmdCBidW5kbGUiLHJlc19zdWI6IldlIHN0YXJ0ZWQgaXQgZm9yIHlvdSDigJQgYWRkLCBzd2FwIG9yIHJlbW92ZSBhbnl0aGluZyBiZWxvdy4iLHlvdXJidW5kbGU6IkdpZnQgYnVuZGxlIixnaWZ0bm90ZToiR2lmdCBub3RlIixlZGl0YWJsZToi4pyOIGVkaXRhYmxlIixjb3B5OiJDb3B5Iixjb3BpZWQ6IkNvcGllZCDinJMiLAogICAgICBhZGRtb3JlOiJBZGQgbW9yZSB0byB0aGUgZ2lmdCIsc3VnZ2VzdGVkOiJTdWdnZXN0ZWQiLGFkZGFsbDoiQWRkIGJ1bmRsZSB0byBiYWciLGFkZGluZzoiQWRkaW5n4oCmIixhZGRlZG9rOiJBZGRlZCDinJMgb3BlbmluZyBiYWfigKYiLGFub3RoZXI6IkZyZXNoIGlkZWEiLHN0YXJ0b3ZlcjoiU3RhcnQgb3ZlciIsc2hvcGFsbDoiQnJvd3NlIGV2ZXJ5dGhpbmcg4oaSIiwKICAgICAgdmlldzoiVmlldyIsYWRkOiJBZGQiLGFkZGVkOiJBZGRlZCIsZGVsaXY6IkVzdGltYXRlZCBkZWxpdmVyeSIsYXJyaXZlc2J5OiJZb3VyIGdpZnQgYXJyaXZlcyBieSIsZm9vdDE6IkN1cmF0ZWQgYnkgS2xpcHBpSyDCtyBQcmljZXMgaW4g4oK5IChJbmRpYSkiLGZvb3QyOiJJbi1jb3VudHJ5IHN0b2NrIMK3IENhc2ggb24gZGVsaXZlcnkgaW4gSW5kaWEiLAogICAgICB1bmRlcjoie3h9IHVuZGVyIGJ1ZGdldCIsb3Zlcjoie3h9IG92ZXIgYnVkZ2V0IixvbmJ1ZGdldDoiT24gYnVkZ2V0IixpdGVtczoiaXRlbXMiLGl0ZW06Iml0ZW0iLAogICAgICBtb3Jlb246Ik1vcmUgaW4gdGhpcyBjYXRlZ29yeSBvbiBrbGlwcGlrLmNvbSIsZW1wdHk6IllvdXIgYnVuZGxlIGlzIGVtcHR5IOKAlCBhZGQgc29tZXRoaW5nIGJlbG93LiIsbG9hZGluZzoiTG9hZGluZ+KApiIsCiAgICAgIGRlbW9hZGQ6Ik9uIGtsaXBwaWsuY29tIHRoaXMgYWRkcyB0aGUgd2hvbGUgYnVuZGxlIHRvIHRoZSBjYXJ0IGluIG9uZSBjbGljay4gSW4gdGhpcyBkZW1vLCB1c2Ug4oCcVmlld+KAnSBvbiBhbiBpdGVtIHRvIG9wZW4gaXQgb24gdGhlIGxpdmUgc3RvcmUuIiwKICAgICAgaG93bWFueToiSG93IG1hbnkgb2YgdGhpcyBnaWZ0PyIsY3VzdG9tOiJDdXN0b20iLHBlcnNldDoiUGVyIGdpZnQiLHF1b3RlOiJSZXF1ZXN0IGEgcXVvdGUiLHZpZXdiYWc6IlZpZXcgYmFnIOKGkiIsa2VlcDoiS2VlcCBidWlsZGluZyIsYWRkZWRuOiJ7bn0gYWRkZWQgdG8geW91ciBiYWcg4pyTIixzb21lZmFpbDoiQ291bGRu4oCZdCBhZGQgKG91dCBvZiBzdG9jaz8pOiB7eH0iLGFkZGZhaWw6IkNvdWxkbuKAmXQgcmVhY2ggdGhlIGNhcnQg4oCUIHBsZWFzZSB0cnkgYWdhaW4uIixvcmVtYWlsOiJvciBlbWFpbCIscXNlbnQ6Ik9wZW5pbmcgV2hhdHNBcHAgd2l0aCB5b3VyIGVucXVpcnnigKYiLAogICAgICBhaV9sOiJEZXNjcmliZSB0aGVtIGFuZCBBSSBwaWNrcyB0aGUgZ2lmdCAob3B0aW9uYWwpIixhaV9waDoiZS5nLiBteSBicm90aGVyLCAyOCDigJQgdHJhdmVscyBmb3Igd29yaywgbWluaW1hbGlzdCwgb2JzZXNzZWQgd2l0aCBoaXMgZGVzayBzZXR1cCIsYWlfaGludDoiT3IganVzdCBhbnN3ZXIgdGhlIHF1aWNrIHF1ZXN0aW9ucyBiZWxvdy4iLGFpX2dvOiJCdWlsZCB3aXRoIEFJIixhaV90aGlua2luZzoiVGhpbmtpbmfigKYiLAogICAgICBkZW1vOiJMaXZlIGRlbW8gd2l0aCBhIHJlYWwgc2FtcGxlIG9mIHRoZSByYW5nZS4gT24ga2xpcHBpay5jb20gdGhlIGNvbmNpZXJnZSBkcmF3cyBmcm9tIHlvdXIgZnVsbCBsaXZlIGNhdGFsb2d1ZSDigJQgZXZlcnkgaW4tc3RvY2sgaXRlbSDigJQgd2l0aCBwaG90b3MsIGxpdmUgcHJpY2VzIGFuZCBvbmUtY2xpY2sgYWRkIHRvIGNhcnQuIiB9LAogICAgYXI6e3RpdGxlOiLZg9mI2ZHZhiDYp9mE2YfYr9mK2Kkg2KfZhNmF2KvYp9mE2YrYqSDZgdmKIDIwINir2KfZhtmK2KkiLHN1Yjoi2KPYrNioINi52YYg2KjYtti52Kkg2KPYs9im2YTYqSDYs9ix2YrYudipINmI2YrYqNiv2KMg2YTZgyDYp9mE2YPZiNmG2LPZitix2Kwg2LfZgtmFINmH2K\/ZitipINmK2K3YqNmR2YjZhtmHIOKAlCDYq9mFINij2LbZgSDYo9mIINin2LPYqtio2K\/ZhCDYo9mIINin2K3YsNmBINmF2Kcg2KrYtNin2KHYjCDZiNij2LHYs9mE2Ycg2KXZhNmJINin2YTYs9mE2Kkg2KjZhtmC2LHYqSDZiNin2K3Yr9ipLiIsCiAgICAgIHFfd2hvOiLZhNmF2YYg2KfZhNmH2K\/Zitip2J8iLHFfb2NjOiLZhdinINin2YTZhdmG2KfYs9io2KnYnyIscV9pbnQ6ItmF2Kcg2KfZh9iq2YXYp9mF2KfYqtmH2YXYnyIsb3B0aW9uYWw6IijYp9iu2KrZitin2LHZitiMINin2K7YqtixINmF2Kcg2YrZhtin2LPYqCkiLHFfYnVkOiLYp9mE2YXZitiy2KfZhtmK2KnYnyIscV9uYW1lOiLYp9mE2KfYs9mFIixvcHRpb25hbDI6IijYp9iu2KrZitin2LHZiiDigJQg2YTYqNi32KfZgtipINin2YTYpdmH2K\/Yp9ihKSIsbmFtZToi2YXYq9in2YQ6INiz2KfYsdipIixyZXZlYWw6ItmD2YjZkdmGINin2YTZh9iv2YrYqSIsCiAgICAgIHJlc190aXRsZToi2LfZgtmFINmH2K\/Zitiq2YfZhSIscmVzX3N1Yjoi2KjYr9ij2YbYp9mHINmE2YMg4oCUINij2LbZgSDYo9mIINin2LPYqtio2K\/ZhCDYo9mIINin2K3YsNmBINmF2Kcg2KrYtNin2KEg2YXZhiDYp9mE2KPYs9mB2YQuIix5b3VyYnVuZGxlOiLYt9mC2YUg2KfZhNmH2K\/ZitipIixnaWZ0bm90ZToi2KjYt9in2YLYqSDYp9mE2KXZh9iv2KfYoSIsZWRpdGFibGU6IuKcjiDZgtin2KjZhNipINmE2YTYqti52K\/ZitmEIixjb3B5OiLZhtiz2K4iLGNvcGllZDoi2KrZhSDYp9mE2YbYs9iuIOKckyIsCiAgICAgIGFkZG1vcmU6Itij2LbZgSDYp9mE2YXYstmK2K8g2YTZhNmH2K\/ZitipIixzdWdnZXN0ZWQ6ItmF2YLYqtix2K3YqSIsYWRkYWxsOiLYo9i22YEg2KfZhNi32YLZhSDZhNmE2LPZhNipIixhZGRpbmc6Itis2KfYsdmNINin2YTYpdi22KfZgdip4oCmIixhZGRlZG9rOiLYqtmF2Kog2KfZhNil2LbYp9mB2Kkg4pyTINis2KfYsdmNINmB2KrYrSDYp9mE2LPZhNip4oCmIixhbm90aGVyOiLZgdmD2LHYqSDYo9iu2LHZiSIsc3RhcnRvdmVyOiLYp9io2K\/YoyDZhdmGINis2K\/ZitivIixzaG9wYWxsOiLYqti12YHZkditINmD2YQg2KfZhNmF2YbYqtis2KfYqiDihpAiLAogICAgICB2aWV3OiLYudix2LYiLGFkZDoi2KPYttmBIixhZGRlZDoi2YXYttin2YEiLGRlbGl2OiLYp9mE2KrZiNi12YrZhCDYp9mE2YXYqtmI2YLYuSIsYXJyaXZlc2J5OiLYqti12YQg2YfYr9mK2KrZgyDYqNit2YTZiNmEIixmb290MToi2YXYrtiq2KfYsdipINmF2YYgS2xpcHBpSyDCtyDYp9mE2KPYs9i52KfYsSDYqNin2YTYsdmI2KjZitipINin2YTZh9mG2K\/ZitipIixmb290Mjoi2YXYrtiy2YjZhiDYr9in2K7ZhCDYp9mE2KjZhNivIMK3INin2YTYr9mB2Lkg2LnZhtivINin2YTYp9iz2KrZhNin2YUg2YHZiiDYp9mE2YfZhtivIiwKICAgICAgdW5kZXI6Itij2YLZhCDZhdmGINin2YTZhdmK2LLYp9mG2YrYqSDYqNmAIHt4fSIsb3Zlcjoi2KPYudmE2Ykg2YXZhiDYp9mE2YXZitiy2KfZhtmK2Kkg2KjZgCB7eH0iLG9uYnVkZ2V0OiLZhdi32KfYqNmCINmE2YTZhdmK2LLYp9mG2YrYqSIsaXRlbXM6ItmC2LfYuSIsaXRlbToi2YLYt9i52KkiLAogICAgICBtb3Jlb246Itin2YTZhdiy2YrYryDZhdmGINmH2LDZhyDYp9mE2YHYptipINi52YTZiSBrbGlwcGlrLmNvbSIsZW1wdHk6Itin2YTYt9mC2YUg2YHYp9ix2Log4oCUINij2LbZgSDZgti32LnYqSDZhdmGINin2YTYo9iz2YHZhC4iLGxvYWRpbmc6Itis2KfYsdmNINin2YTYqtit2YXZitmE4oCmIiwKICAgICAgZGVtb2FkZDoi2LnZhNmJIGtsaXBwaWsuY29tINmK2LbZitmBINin2YTYt9mC2YUg2YPYp9mF2YTYp9mLINil2YTZiSDYp9mE2LPZhNipINio2YbZgtix2Kkg2YjYp9it2K\/YqS4g2YHZiiDZh9iw2Kcg2KfZhNi52LHYttiMINin2LPYqtiu2K\/ZhSDCq9i52LHYtsK7INmE2YHYqtitINin2YTZhdmG2KrYrCDYudmE2Ykg2KfZhNmF2KrYrNixLiIsCiAgICAgIGhvd21hbnk6ItmD2YUg2LnYr9ivINmG2LPYriDZh9iw2Ycg2KfZhNmH2K\/Zitip2J8iLGN1c3RvbToi2YXYrti12LUiLHBlcnNldDoi2LPYudixINin2YTYt9mC2YUiLHF1b3RlOiLYp9i32YTYqCDYudix2LYg2LPYudixIix2aWV3YmFnOiLYudix2LYg2KfZhNiz2YTYqSDihpAiLGtlZXA6ItmF2KrYp9io2LnYqSDYp9mE2KrZg9mI2YrZhiIsYWRkZWRuOiLYqtmF2Kog2KXYttin2YHYqSB7bn0g2KXZhNmJINiz2YTYqtmDIOKckyIsc29tZWZhaWw6Itiq2LnYsNmR2LHYqiDYpdi22KfZgdipICjYutmK2LEg2YXYqtmI2YHYsdifKToge3h9IixhZGRmYWlsOiLYqti52LDZkdixINin2YTZiNi12YjZhCDYpdmE2Ykg2KfZhNiz2YTYqSDigJQg2K3Yp9mI2YQg2YXYsdipINij2K7YsdmJLiIsb3JlbWFpbDoi2KPZiCDYsdin2LPZhNmG2Kcg2LnZhNmJIixxc2VudDoi2KzYp9ix2Y0g2YHYqtitINmI2KfYqtiz2KfYqCDYqNix2LPYp9mE2KrZg+KApiIsCiAgICAgIGFpX2w6Iti12ZDZgSDYp9mE2LTYrti1INmI2K\/YuSDYp9mE2LDZg9in2KEg2KfZhNin2LXYt9mG2KfYudmKINmK2K7Yqtin2LEg2KfZhNmH2K\/ZitipICjYp9iu2KrZitin2LHZiikiLGFpX3BoOiLZhdir2KfZhDog2KPYrtmK2IwgMjgg2LnYp9mF2KfZiyDigJQg2YrYs9in2YHYsSDZhNmE2LnZhdmE2Iwg2KjYs9mK2LfYjCDZhdmH2YjZiNizINio2YXZg9iq2KjZhyIsYWlfaGludDoi2KPZiCDYo9is2Kgg2LnZhiDYp9mE2KPYs9im2YTYqSDYp9mE2LPYsdmK2LnYqSDYqNin2YTYo9iz2YHZhC4iLGFpX2dvOiLZg9mI2ZHZhiDYqNin2YTYsNmD2KfYoSDYp9mE2KfYtdi32YbYp9i52YoiLGFpX3RoaW5raW5nOiLYrNin2LHZjSDYp9mE2KrZgdmD2YrYseKApiIsCiAgICAgIGRlbW86Iti52LHYtiDYqtis2LHZitio2Yog2KjYudmK2ZHZhtipINit2YLZitmC2YrYqSDZhdmGINin2YTYqti02YPZitmE2KkuINi52YTZiSBrbGlwcGlrLmNvbSDZitiu2KrYp9ixINin2YTZg9mI2YbYs9mK2LHYrCDZhdmGINin2YTZg9iq2KfZhNmI2Kwg2KfZhNmD2KfZhdmEIOKAlCDZg9mEINmC2LfYudipINmF2KrZiNmB2LHYqSDigJQg2YXYuSDYp9mE2LXZiNixINmI2KfZhNij2LPYudin2LEg2KfZhNit2YrZkdipINmI2KXYttin2YHYqSDYqNmG2YLYsdipINmI2KfYrdiv2KkuIiB9IH07CgogIHZhciBDQVRDT0xPUj17YmFnczoiIzNmNWI3NCIsaG9tZToiIzhhNWE0NCIsZGVzazoiIzRhNGE0YSIsc21hbGw6IiM2YTZhNTUiLGNhc2VzOiIjM2Y1NTY2Iix3YWxsZXRzOiIjNmI0ZjQzIix3YXRjaDoiIzRhNGE0YSJ9OwogIHZhciBJQ09OPXsgYmFnczonPHBhdGggZD0iTTYgOGgxMmwxIDEySDVMNiA4eiIvPjxwYXRoIGQ9Ik05IDhWNmEzIDMgMCAwIDEgNiAwdjIiLz4nLGhvbWU6JzxwYXRoIGQ9Ik00IDExbDgtNiA4IDYiLz48cGF0aCBkPSJNNiAxMHY5aDEydi05Ii8+JyxkZXNrOic8cmVjdCB4PSIzIiB5PSI2IiB3aWR0aD0iMTgiIGhlaWdodD0iMTIiIHJ4PSIxIi8+PHBhdGggZD0iTTMgMTVoMTgiLz4nLHNtYWxsOic8Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iMyIvPjxwYXRoIGQ9Ik0xMCAxMGw3IDctMiAyLTctNyIvPicsY2FzZXM6JzxyZWN0IHg9IjQiIHk9IjQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgcng9IjIiLz48cGF0aCBkPSJNOSA0djE2Ii8+Jyx3YWxsZXRzOic8cmVjdCB4PSIzIiB5PSI2IiB3aWR0aD0iMTgiIGhlaWdodD0iMTIiIHJ4PSIyIi8+PHBhdGggZD0iTTE2IDEyaDMiLz4nLHdhdGNoOic8cmVjdCB4PSI4IiB5PSI4IiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiByeD0iMiIvPjxwYXRoIGQ9Ik0xMCA4VjVoNHYzTTEwIDE2djNoNHYtMyIvPicgfTsKCiAgdmFyIElTX0xJVkU9Q09ORklHLmxpdmVIb3N0cy5zb21lKGZ1bmN0aW9uKGgpe3JldHVybiBsb2NhdGlvbi5ob3N0bmFtZS5pbmRleE9mKGgpIT09LTE7fSk7CiAgdmFyIHN0PXtsYW5nOiJlbiIsd2hvOm51bGwsb2NjOm51bGwsaW50czpbXSxidWQ6bnVsbCxuYW1lOiIiLHNhbHQ6MCxidW5kbGU6W10sbW9yZUNhdDoic3VnZ2VzdGVkIixxdHk6MSxkZXNjOiIiLGFpTm90ZTpudWxsLG5vdGVFZGl0ZWQ6ZmFsc2V9OwogIHZhciBwb29sQ2FjaGU9e307CiAgdmFyIHJvb3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtrZyIpOwogIHZhciAkPWZ1bmN0aW9uKGlkKXtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO307CiAgZnVuY3Rpb24gdHIoayl7IHZhciB2PVRbc3QubGFuZ10mJlRbc3QubGFuZ11ba107IGlmKHY9PT11bmRlZmluZWQpdj1ULmVuW2tdOyByZXR1cm4gdj09PXVuZGVmaW5lZD9rOnY7IH0KICBmdW5jdGlvbiBtb25leSh2KXtyZXR1cm4gQ09ORklHLmN1cnJlbmN5KyIgIitOdW1iZXIodikudG9GaXhlZChDT05GSUcubWlub3JVbml0KTt9CiAgZnVuY3Rpb24gZGVudChzKXt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO2QuaW5uZXJIVE1MPXM7cmV0dXJuIGQudmFsdWU7fQogIGZ1bmN0aW9uIGVzYyhzKXtyZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoL1smPD4iXS9nLGZ1bmN0aW9uKG0pe3JldHVybnsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsifVttXTt9KTt9CgogIGZ1bmN0aW9uIGxhYmVsKGcsdmFsLGVuKXsgcmV0dXJuIHN0Lmxhbmc9PT0iYXIiID8gKE9QVFNfQVJbZ11bdmFsXXx8ZW4pIDogZW47IH0KICBmdW5jdGlvbiBidWlsZE9wdHMoKXsKICAgIFsid2hvIiwib2NjIiwiaW50IiwiYnVkIl0uZm9yRWFjaChmdW5jdGlvbihnKXsKICAgICAgJCgib3B0LSIrZykuaW5uZXJIVE1MPU9QVFNbZ10ubWFwKGZ1bmN0aW9uKG8pewogICAgICAgIHZhciBwcmVzc2VkID0gZz09PSJpbnQiID8gc3QuaW50cy5pbmRleE9mKG9bMF0pPj0wIDogKHN0W2c9PT0ib2NjIj8ib2NjIjpnPT09ImJ1ZCI\/ImJ1ZCI6IndobyJdPT09b1swXSk7CiAgICAgICAgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImtrZy1vcHQiIGRhdGEtZz0iJytnKyciIGRhdGEtdj0iJytvWzBdKyciIGFyaWEtcHJlc3NlZD0iJysocHJlc3NlZD8idHJ1ZSI6ImZhbHNlIikrJyI+Jytlc2MobGFiZWwoZyxvWzBdLG9bMV0pKSsnPC9idXR0b24+JzsKICAgICAgfSkuam9pbigiIik7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gb25PcHQoYnRuKXsgdmFyIGc9YnRuLmRhdGFzZXQuZyx2PWJ0bi5kYXRhc2V0LnY7CiAgICBpZihnPT09ImludCIpeyB2YXIgaT1zdC5pbnRzLmluZGV4T2Yodik7IGlmKGk+PTApc3QuaW50cy5zcGxpY2UoaSwxKTsgZWxzZSBzdC5pbnRzLnB1c2godik7IH0KICAgIGVsc2UgaWYoZz09PSJ3aG8iKXN0Lndobz12OyBlbHNlIGlmKGc9PT0ib2NjIilzdC5vY2M9djsgZWxzZSBpZihnPT09ImJ1ZCIpc3QuYnVkPXY7CiAgICBidWlsZE9wdHMoKTsgdmFyIF9kPShzdC5kZXNjfHwiIikudHJpbSgpOyAkKCJra2ctZ28iKS5kaXNhYmxlZD0hKChzdC53aG8mJnN0Lm9jYyYmc3QuYnVkKXx8X2QpOwogIH0KCiAgZnVuY3Rpb24gd2VpZ2h0cygpeyB2YXIgdz17fTsgT2JqZWN0LmtleXMoQkFTRSkuZm9yRWFjaChmdW5jdGlvbihrKXt3W2tdPUJBU0Vba107fSk7CiAgICBpZihzdC5pbnRzLmxlbmd0aCl7IE9iamVjdC5rZXlzKHcpLmZvckVhY2goZnVuY3Rpb24oayl7d1trXT0wO30pOyBzdC5pbnRzLmZvckVhY2goZnVuY3Rpb24oaXQpeyB2YXIgbT1JV1tpdF18fHt9OyBPYmplY3Qua2V5cyhtKS5mb3JFYWNoKGZ1bmN0aW9uKGspe3dba109KHdba118fDApK21ba107fSk7IH0pOyB9CiAgICBbT0NDX05VREdFW3N0Lm9jY10sV0hPX05VREdFW3N0Lndob11dLmZvckVhY2goZnVuY3Rpb24obSl7IGlmKG0pIE9iamVjdC5rZXlzKG0pLmZvckVhY2goZnVuY3Rpb24oayl7d1trXT0od1trXXx8MCkrbVtrXTt9KTsgfSk7CiAgICBpZihzdC53aG89PT0iY29ycG9yYXRlIil7IHcuaG9tZT0wOyB3LndhdGNoPTA7IHcuc21hbGw9TWF0aC5taW4ody5zbWFsbHx8MCwxKTsgfQogICAgcmV0dXJuIHc7IH0KCiAgLyogLS0tLSBkYXRhOiBwYWdpbmF0ZSB0aGUgaW4tc3RvY2sgdW5pdHMgcGVyIGNhdGVnb3J5IChiYWNrb3JkZXIgLyBtYWRlLXRvLW9yZGVyIGl0ZW1zIGFyZSBsZWZ0IG91dCkgLS0tLSAqLwogIGZ1bmN0aW9uIG1hcExpdmUocCxrKXsKICAgIHZhciBjb2xvdXI9IiI7IChwLmF0dHJpYnV0ZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpeyBpZihhLnRheG9ub215PT09InBhX2NvbG9yIikgY29sb3VyPShhLnRlcm1zfHxbXSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU7fSkuam9pbigiLSIpOyB9KTsKICAgIHZhciBubT1kZW50KHAubmFtZXx8IiIpLnJlcGxhY2UoL1xzKlwoW14pXSpcKS8sIiIpLnJlcGxhY2UoL1xzKlx8LiokLywiIikucmVwbGFjZSgvJiM4MjExO3wmIzgyMTI7L2csIuKAlCIpLnJlcGxhY2UoLyYjODIxNzsvZywi4oCZIikucmVwbGFjZSgvJmFtcDsvZywiJiIpLnRyaW0oKTsKICAgIHZhciBudT0vYmxhY2t8dGFufGdyZXl8Z3JheXxuYXZ5fGJlaWdlfGJyb3dufHdoaXRlL2kudGVzdChjb2xvdXIpfHxjb2xvdXI9PT0iIjsKICAgIHZhciBwcmljZT0wLCByZWc9MDsgdHJ5eyB2YXIgbXU9TWF0aC5wb3coMTAsK3AucHJpY2VzLmN1cnJlbmN5X21pbm9yX3VuaXQpOyBwcmljZT1wYXJzZUludChwLnByaWNlcy5wcmljZSwxMCkvbXU7IHJlZz1wYXJzZUludChwLnByaWNlcy5yZWd1bGFyX3ByaWNlLDEwKS9tdTsgfWNhdGNoKGUpe30KICAgIHJldHVybiB7aWQ6cC5pZCxuOm5tLnNsaWNlKDAsNTIpLGs6ayxwOnByaWNlLHJwOnJlZyxvczoocC5vbl9zYWxlPT09dHJ1ZSYmcmVnPnByaWNlKzAuMDAwNSksYzpjb2xvdXIsbnU6bnU\/MTowLHU6cC5wZXJtYWxpbmssaW1nOihwLmltYWdlcyYmcC5pbWFnZXNbMF0\/cC5pbWFnZXNbMF0uc3JjOm51bGwpLHN0b2NrOnAuaXNfaW5fc3RvY2shPT1mYWxzZSxibzpwLmlzX29uX2JhY2tvcmRlcj09PXRydWV9OwogIH0KICBmdW5jdGlvbiBwcmljZUhUTUwoeCl7CiAgICBpZih4Lm9zICYmIHgucnA+eC5wKzAuMDAwNSl7IHZhciBwY3Q9TWF0aC5yb3VuZCgoMS14LnAveC5ycCkqMTAwKTsgcmV0dXJuIG1vbmV5KHgucCkrJyA8c3BhbiBjbGFzcz0ia2tnLXdhcyI+Jyttb25leSh4LnJwKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJra2ctc2F2ZSI+LScrcGN0KyclPC9zcGFuPic7IH0KICAgIHJldHVybiBtb25leSh4LnApOwogIH0KCiAgLyogLS0tLSBkZWxpdmVyeSBlc3RpbWF0ZSAobWlycm9ycyB0aGUgcHJvZHVjdC1wYWdlICJFc3RpbWF0ZWQgZGVsaXZlcnkiIHdpbmRvdykgLS0tLSAqLwogIHZhciBNT05USFM9eyBlbjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLAogICAgICAgICAgICAgICBhcjpbItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdIH07CiAgZnVuY3Rpb24gZGVsaXZlcnlSYW5nZShibyl7CiAgICB2YXIgbz0oYm8\/Q09ORklHLmRlbGl2ZXJ5LmJhY2tvcmRlcjpDT05GSUcuZGVsaXZlcnkuc3RvY2spfHxbMCwxXTsKICAgIHZhciBhPW5ldyBEYXRlKCk7IGEuc2V0RGF0ZShhLmdldERhdGUoKSsoK29bMF0pKTsgdmFyIGI9bmV3IERhdGUoKTsgYi5zZXREYXRlKGIuZ2V0RGF0ZSgpKygrb1sxXSkpOwogICAgdmFyIE09TU9OVEhTW3N0LmxhbmddfHxNT05USFMuZW47CiAgICBpZihhLmdldE1vbnRoKCk9PT1iLmdldE1vbnRoKCkgJiYgYS5nZXREYXRlKCk9PT1iLmdldERhdGUoKSkgcmV0dXJuIE1bYS5nZXRNb250aCgpXSsiICIrYS5nZXREYXRlKCk7CiAgICBpZihhLmdldE1vbnRoKCk9PT1iLmdldE1vbnRoKCkpIHJldHVybiBNW2EuZ2V0TW9udGgoKV0rIiAiK2EuZ2V0RGF0ZSgpKyLigJMiK2IuZ2V0RGF0ZSgpOwogICAgcmV0dXJuIE1bYS5nZXRNb250aCgpXSsiICIrYS5nZXREYXRlKCkrIiDigJMgIitNW2IuZ2V0TW9udGgoKV0rIiAiK2IuZ2V0RGF0ZSgpOwogIH0KICBmdW5jdGlvbiBkZWxpdkhUTUwoeCl7CiAgICBpZih4LmJvPT09dW5kZWZpbmVkKSByZXR1cm4gIiI7CiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJra2ctZGVsaXYnKyh4LmJvPyIiOiIgZmFzdCIpKyciIHRpdGxlPSInK2VzYyh0cigiZGVsaXYiKSkrJyI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjEiIHk9IjYiIHdpZHRoPSIxMyIgaGVpZ2h0PSI5IiByeD0iMSIvPjxwYXRoIGQ9Ik0xNCA5aDRsMyAzdjNoLTd6Ii8+PGNpcmNsZSBjeD0iNiIgY3k9IjE3LjUiIHI9IjEuNCIvPjxjaXJjbGUgY3g9IjE3IiBjeT0iMTcuNSIgcj0iMS40Ii8+PC9zdmc+PHNwYW4gZGlyPSJsdHIiPicrZXNjKGRlbGl2ZXJ5UmFuZ2UoeC5ibykpKyc8L3NwYW4+PC9zcGFuPic7IH0KICBmdW5jdGlvbiBmZXRjaENhdChrLGNiKXsKICAgIGlmKHBvb2xDYWNoZVtrXSkgcmV0dXJuIGNiKHBvb2xDYWNoZVtrXSk7CiAgICBpZighSVNfTElWRSl7IHBvb2xDYWNoZVtrXT1TRUVELmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5rPT09azt9KTsgcmV0dXJuIGNiKHBvb2xDYWNoZVtrXSk7IH0KICAgIHZhciBiYXNlPUNPTkZJRy5zdG9yZUJhc2V8fCIiLCBwZXI9MTAwLCBhbGw9W107CiAgICAoZnVuY3Rpb24gcGFnZShwZyl7CiAgICAgIGZldGNoKGJhc2UrIi93cC1qc29uL3djL3N0b3JlL3YxL3Byb2R1Y3RzP2NhdGVnb3J5PSIrQ09ORklHLmNhdElkc1trXSsiJnBlcl9wYWdlPSIrcGVyKyImcGFnZT0iK3BnKyImb3JkZXJieT1wb3B1bGFyaXR5JnN0b2NrX3N0YXR1cz1pbnN0b2NrIix7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn0sY3JlZGVudGlhbHM6Im9taXQifSkKICAgICAgICAudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5vaz9yLmpzb24oKTpbXTt9KQogICAgICAgIC50aGVuKGZ1bmN0aW9uKGQpeyBhbGw9YWxsLmNvbmNhdChkKTsgaWYoZC5sZW5ndGg9PT1wZXImJnBnPDUpeyBwYWdlKHBnKzEpOyB9IGVsc2UgeyBwb29sQ2FjaGVba109YWxsLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gbWFwTGl2ZShwLGspO30pLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5zdG9jayYmIXguYm87fSk7IGNiKHBvb2xDYWNoZVtrXSk7IH0gfSkKICAgICAgICAuY2F0Y2goZnVuY3Rpb24oKXsgY2IoW10pOyB9KTsKICAgIH0pKDEpOwogIH0KICBmdW5jdGlvbiBsb2FkQ2F0cyhrZXlzLGNiKXsgdmFyIG5lZWQ9a2V5cy5zbGljZSgpLCBvdXQ9W10sIGRvbmU9MDsgaWYoIW5lZWQubGVuZ3RoKXJldHVybiBjYihbXSk7CiAgICBuZWVkLmZvckVhY2goZnVuY3Rpb24oayl7IGZldGNoQ2F0KGssZnVuY3Rpb24oaXRlbXMpeyBvdXQ9b3V0LmNvbmNhdChpdGVtcyk7IGlmKCsrZG9uZT09PW5lZWQubGVuZ3RoKSBjYihvdXQpOyB9KTsgfSk7IH0KCiAgLyogLS0tLSBhc3NlbWJseSAtLS0tICovCiAgZnVuY3Rpb24gcm5kKHNlZWQpeyB2YXIgeD1NYXRoLnNpbihzZWVkKSoxMDAwMDsgcmV0dXJuIHgtTWF0aC5mbG9vcih4KTsgfQogIGZ1bmN0aW9uIGFzc2VtYmxlKHBvb2wsdyxidWRnZXQsc2V0U2l6ZSxzYWx0KXsKICAgIHZhciBjb3JwPXN0Lndobz09PSJjb3Jwb3JhdGUiOwogICAgdmFyIHNjb3JlZD1wb29sLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5wPD1idWRnZXQrMC4wMDEgJiYgKHdbeC5rXXx8MCk+MDt9KS5tYXAoZnVuY3Rpb24oeCl7CiAgICAgIHJldHVybiB7eDp4LHM6KHdbeC5rXXx8MCkqMTAwICsgeC5wKjEuMiArIChjb3JwP3gubnUqMzA6MCkgKyBybmQoeC5pZCtzYWx0KjcuMykqMTh9OyB9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucy1hLnM7fSk7CiAgICB2YXIgY2hvc2VuPVtdLHRvdGFsPTAsY2F0cz17fTsKICAgIHNjb3JlZC5mb3JFYWNoKGZ1bmN0aW9uKG8peyBpZihjaG9zZW4ubGVuZ3RoPj1zZXRTaXplfHxjYXRzW28ueC5rXXx8dG90YWwrby54LnA+YnVkZ2V0KzAuMDAxKXJldHVybjsgY2hvc2VuLnB1c2goby54KTsgdG90YWwrPW8ueC5wOyBjYXRzW28ueC5rXT0xOyB9KTsKICAgIGlmKGNob3Nlbi5sZW5ndGg8c2V0U2l6ZSl7IHNjb3JlZC5mb3JFYWNoKGZ1bmN0aW9uKG8peyBpZihjaG9zZW4ubGVuZ3RoPj1zZXRTaXplfHxjaG9zZW4uaW5kZXhPZihvLngpPj0wfHx0b3RhbCtvLngucD5idWRnZXQrMC4wMDEpcmV0dXJuOyBjaG9zZW4ucHVzaChvLngpOyB0b3RhbCs9by54LnA7IH0pOyB9CiAgICBpZighY2hvc2VuLmxlbmd0aCl7IHZhciBjaGVhcD1wb29sLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5wPD1idWRnZXQrMC4wMDE7fSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnAtYi5wO30pWzBdOyBpZihjaGVhcCljaG9zZW49W2NoZWFwXTsgfQogICAgcmV0dXJuIGNob3NlbjsgfQogIGZ1bmN0aW9uIHNldFNpemVGb3IoYil7IGI9K2I7IHJldHVybiBiPD0xNTAwPzE6Yjw9MzAwMD8yOjM7IH0KCiAgZnVuY3Rpb24gYnVpbGRHaWZ0KCl7CiAgICBzdC5haU5vdGU9bnVsbDsgc3Qubm90ZUVkaXRlZD1mYWxzZTsKICAgIHZhciBkZXNjPShzdC5kZXNjfHwiIikudHJpbSgpLCB3PXdlaWdodHMoKTsKICAgIGlmKGRlc2MpIGluZmVyRnJvbURlc2MoZGVzYyx3KTsKICAgIC8qIEFJIHBhdGggKGZyZWUtdGV4dCwgbm9uLWNvcnBvcmF0ZSk6IGdpdmUgdGhlIG1vZGVsIHRoZSB3aG9sZSBjYXRhbG9ndWUgZm9yIGZyZWVyIHBpY2tzOyBydWxlcy9jb3Jwb3JhdGUgc3RheSBvbiB0aGUgd2VpZ2h0ZWQgc3Vic2V0ICovCiAgICB2YXIgY2F0cz0oZGVzYyAmJiBzdC53aG8hPT0iY29ycG9yYXRlIikgPyBDQVRPUkRFUi5zbGljZSgpIDogT2JqZWN0LmtleXModykuZmlsdGVyKGZ1bmN0aW9uKGspe3JldHVybiB3W2tdPjA7fSk7CiAgICB0cmFjaygia2tnX2J1aWxkX2J1bmRsZSIse21vZGU6ZGVzYz8iYWkiOiJydWxlcyIsYnVkZ2V0OitzdC5idWR8fDAscmVjaXBpZW50OnN0Lndob3x8IiIsb2NjYXNpb246c3Qub2NjfHwiIn0pOwogICAgJCgia2tnLWl0ZW1zIikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJra2ctbG9hZGluZyI+Jyt0cihkZXNjPyJhaV90aGlua2luZyI6ImxvYWRpbmciKSsnPC9kaXY+JzsgJCgia2tnLXJlcyIpLmhpZGRlbj1mYWxzZTsKICAgIGxvYWRDYXRzKGNhdHMsZnVuY3Rpb24ocG9vbCl7CiAgICAgIGlmKGRlc2MpeyBhaVBpY2soZGVzYyxwb29sLHcsZnVuY3Rpb24ocmVzKXsKICAgICAgICB2YXIgYnlJZD17fTsgcG9vbC5mb3JFYWNoKGZ1bmN0aW9uKHgpe2J5SWRbeC5pZF09eDt9KTsKICAgICAgICB2YXIgcGlja3M9KHJlcy5pZHN8fFtdKS5tYXAoZnVuY3Rpb24oaWQpe3JldHVybiBieUlkW2lkXTt9KS5maWx0ZXIoQm9vbGVhbik7CiAgICAgICAgaWYoIXBpY2tzLmxlbmd0aCkgcGlja3M9YXNzZW1ibGUocG9vbCx3LCtzdC5idWQsc2V0U2l6ZUZvcihzdC5idWQpLHN0LnNhbHQpLnNsaWNlKCk7CiAgICAgICAgc3QuYnVuZGxlPXBpY2tzOyBzdC5haU5vdGU9cmVzLm5vdGV8fG51bGw7IHJlbmRlckFsbCgpOwogICAgICB9KTsgfQogICAgICBlbHNlIHsgc3QuYnVuZGxlPWFzc2VtYmxlKHBvb2wsdywrc3QuYnVkLHNldFNpemVGb3Ioc3QuYnVkKSxzdC5zYWx0KS5zbGljZSgpOyByZW5kZXJBbGwoKTsgfQogICAgfSk7CiAgfQogIGZ1bmN0aW9uIGluZmVyRnJvbURlc2MoZGVzYyx3KXsKICAgIHZhciBkPWRlc2MudG9Mb3dlckNhc2UoKSxoaXQ9ZmFsc2UsYWRkPXt9LAogICAgICBtYXA9e3RlY2g6L2Rlc2t8d29ya3xvZmZpY2V8bGFwdG9wfHRlY2h8Y2FibGV8c2V0dXB8Z2FkZ2V0fGNvbXB1dGVyfGNvZGVyfGRldmVsb3B8ZW5naW5lZXIvLAogICAgICAgICAgIHRyYXZlbDovdHJhdmVsfHRyaXB8Y29tbXV0ZXxqb3VybmV5fGJhZ3xjYXJyeXxmbGlnaHR8YWJyb2FkfGFkdmVudHVyfG91dGRvb3IvLAogICAgICAgICAgIG1pbmltYWw6L21pbmltYWx8c2ltcGxlfGV2ZXJ5ZGF5fGNsZWFufHdhbGxldHxjYXJkfGVzc2VudGlhbHxwcmFjdGljYWwvLAogICAgICAgICAgIHRyZW5keTovY29sb3U\/cnx0cmVuZHl8ZnVufGJyaWdodHxzdHlsZXxmYXNoaW9ufGJvbGR8dmlicmFudHxnZW5bXHMtXT96fHlvdW5nLywKICAgICAgICAgICBob21lOi9ob21lfGNvc1t5aV18a2l0Y2hlbnxkZWNvcnxjdXNoaW9ufGhvdXNlfGFwYXJ0bWVudHxob3N0fG5lc3QvfTsKICAgIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihrKXsgaWYobWFwW2tdLnRlc3QoZCkpeyBoaXQ9dHJ1ZTsgdmFyIG09SVdba107IE9iamVjdC5rZXlzKG0pLmZvckVhY2goZnVuY3Rpb24oYyl7YWRkW2NdPShhZGRbY118fDApK21bY107fSk7IH0gfSk7CiAgICBpZihoaXQpeyBPYmplY3Qua2V5cyh3KS5mb3JFYWNoKGZ1bmN0aW9uKGspe3dba109MDt9KTsgT2JqZWN0LmtleXMoYWRkKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3dbY109YWRkW2NdO30pOyBpZihzdC53aG89PT0iY29ycG9yYXRlIil7dy5ob21lPTA7dy53YXRjaD0wO30gfQogIH0KICBmdW5jdGlvbiBhaVBpY2soZGVzYyxwb29sLHcsY2IpewogICAgdmFyIGZhbGxiYWNrPWZ1bmN0aW9uKCl7IHZhciBwPWFzc2VtYmxlKHBvb2wsdywrc3QuYnVkLHNldFNpemVGb3Ioc3QuYnVkKSxzdC5zYWx0KTsgY2Ioe2lkczpwLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5pZDt9KSxub3RlOm51bGx9KTsgfTsKICAgIGlmKCFDT05GSUcuYWlXZWJob29rIHx8ICFJU19MSVZFKXsgZmFsbGJhY2soKTsgcmV0dXJuOyB9CiAgICB2YXIgY2FuZHM9cG9vbC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHgucDw9K3N0LmJ1ZCswLjAwMTt9KS5zbGljZSgwLDEyMCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB7aWQ6eC5pZCxuOngubixwOngucCxrOngua307fSk7CiAgICB2YXIgc3lzPSJZb3UgYXJlIEtsaXBwaUsncyBnaWZ0IGNvbmNpZXJnZSAoSW5kaWEgaG9tZSAmIGxpdmluZyBzdG9yZSkuIEZyb20gdGhlIHByb2R1Y3QgbGlzdCBvbmx5LCBjaG9vc2UgMi0zIGl0ZW1zIHRoYXQgYmVzdCBzdWl0IHRoZSByZWNpcGllbnQgYW5kIHdob3NlIHByaWNlcyBzdW0gdG8gPD0gdGhlIGJ1ZGdldC4gUmV0dXJuIE9OTFkgSlNPTjoge1wiaWRzXCI6Wzxwcm9kdWN0IGlkcyB5b3UgY2hvc2U+XSwgXCJub3RlXCI6XCJhIHNob3J0LCB3YXJtLCByZWFkeS10by1zZW5kIGdpZnQgbWVzc2FnZSB1bmRlciAxODAgY2hhcmFjdGVycywgaW4gdGhlIHJlcXVlc3RlZCBsYW5ndWFnZVwifS4iOwogICAgdmFyIHVzZXI9IlJlY2lwaWVudDogIitkZXNjKyIuIEJ1ZGdldDogIisoK3N0LmJ1ZCkrIi4gQ3VycmVuY3k6ICIrQ09ORklHLmN1cnJlbmN5KyIuIE9jY2FzaW9uOiAiKyhzdC5vY2N8fCIiKSsiLiBSZWNpcGllbnQgdHlwZTogIisoc3Qud2hvfHwiIikrIi4gTGFuZ3VhZ2U6ICIrc3QubGFuZysiLiBQcm9kdWN0czogIitKU09OLnN0cmluZ2lmeShjYW5kcyk7CiAgICB2YXIgZ2JvZHk9SlNPTi5zdHJpbmdpZnkoe3N5c3RlbUluc3RydWN0aW9uOntwYXJ0czpbe3RleHQ6c3lzfV19LGNvbnRlbnRzOlt7cGFydHM6W3t0ZXh0OnVzZXJ9XX1dLGdlbmVyYXRpb25Db25maWc6e3Jlc3BvbnNlTWltZVR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLHRlbXBlcmF0dXJlOjAuNH19KTsKICAgIHZhciBjdHJsPSgiQWJvcnRDb250cm9sbGVyIiBpbiB3aW5kb3cpP25ldyBBYm9ydENvbnRyb2xsZXIoKTpudWxsOyBpZihjdHJsKSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHJ5e2N0cmwuYWJvcnQoKTt9Y2F0Y2goZSl7fX0sMTIwMDApOwogICAgZmV0Y2goQ09ORklHLmFpV2ViaG9vayx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgifSxib2R5OiJwPSIrZW5jb2RlVVJJQ29tcG9uZW50KGdib2R5KSxzaWduYWw6Y3RybD9jdHJsLnNpZ25hbDp1bmRlZmluZWR9KQogICAgICAudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5qc29uKCk7fSkKICAgICAgLnRoZW4oZnVuY3Rpb24oZCl7IHZhciBvdXQ9ZDsgaWYoZCYmZC5jYW5kaWRhdGVzKXsgdHJ5eyBvdXQ9SlNPTi5wYXJzZShkLmNhbmRpZGF0ZXNbMF0uY29udGVudC5wYXJ0c1swXS50ZXh0KTsgfWNhdGNoKGUpeyBvdXQ9e307IH0gfSBjYih7aWRzOm91dC5pZHN8fG91dC5wcm9kdWN0SWRzfHxbXSxub3RlOm91dC5ub3RlfHxvdXQubWVzc2FnZXx8bnVsbH0pOyB9KQogICAgICAuY2F0Y2goZnVuY3Rpb24oKXsgZmFsbGJhY2soKTsgfSk7CiAgfQoKICAvKiAtLS0tIHJlbmRlciAtLS0tICovCiAgZnVuY3Rpb24gdG90YWwoKXsgcmV0dXJuIHN0LmJ1bmRsZS5yZWR1Y2UoZnVuY3Rpb24oYSx4KXtyZXR1cm4gYSt4LnA7fSwwKTsgfQogIGZ1bmN0aW9uIHJlbmRlckFsbCgpeyByZW5kZXJCdW5kbGUoKTsgcmVuZGVyQnVkZ2V0KCk7IHJlbmRlckNvcnAoKTsgcmVuZGVyTW9yZSgpOyByZW5kZXJNc2coKTsKICAgIHZhciBjb3JwPXN0Lndobz09PSJjb3Jwb3JhdGUiLCBlbXB0eT1zdC5idW5kbGUubGVuZ3RoPT09MDsKICAgICQoImtrZy1xdW90ZSIpLmhpZGRlbj0hY29ycDsgJCgia2tnLWFkZGFsbCIpLmNsYXNzTGlzdC50b2dnbGUoInNlY29uZGFyeSIsY29ycCk7CiAgICB2YXIgZW09JCgia2tnLXFlbWFpbCIpOyBpZihjb3JwJiYhZW1wdHkpeyBlbS5oaWRkZW49ZmFsc2U7IGVtLmlubmVySFRNTD1lc2ModHIoIm9yZW1haWwiKSkrJyA8YSBocmVmPSInK21haWx0b1VybCgpKyciPicrZXNjKENPTkZJRy5lbnF1aXJ5RW1haWwpKyc8L2E+JzsgfSBlbHNlIHsgZW0uaGlkZGVuPXRydWU7IH0KICAgICQoImtrZy1zdWNjZXNzIikuaGlkZGVuPXRydWU7ICQoImtrZy1mbGFzaCIpLmhpZGRlbj10cnVlOwogICAgJCgia2tnLXNob3BhbGwiKS5zZXRBdHRyaWJ1dGUoImhyZWYiLENPTkZJRy5zaG9wQWxsVXJsKTsKICAgICQoImtrZy1hZGRhbGwiKS5kaXNhYmxlZD1lbXB0eTsgJCgia2tnLXF1b3RlIikuZGlzYWJsZWQ9ZW1wdHk7IH0KICBmdW5jdGlvbiByZW5kZXJDb3JwKCl7CiAgICB2YXIgZWw9JCgia2tnLWNvcnAiKTsgaWYoc3Qud2hvIT09ImNvcnBvcmF0ZSIpeyBlbC5oaWRkZW49dHJ1ZTsgcmV0dXJuOyB9IGVsLmhpZGRlbj1mYWxzZTsKICAgIHZhciBxdWljaz1bMSw1LDEwLDI1LDUwLDEwMF0sIGlzQ3VzdG9tPXF1aWNrLmluZGV4T2Yoc3QucXR5KTwwOwogICAgJCgia2tnLXF0eSIpLmlubmVySFRNTCA9IHF1aWNrLm1hcChmdW5jdGlvbihxKXsgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImtrZy1xY2hpcCIgZGF0YS1xPSInK3ErJyIgYXJpYS1wcmVzc2VkPSInKyhzdC5xdHk9PT1xPyJ0cnVlIjoiZmFsc2UiKSsnIj4nK3ErJzwvYnV0dG9uPic7IH0pLmpvaW4oIiIpCiAgICAgICsgJzxpbnB1dCBjbGFzcz0ia2tnLXFjdXN0b20iIGlkPSJra2ctcWN1c3RvbSIgdHlwZT0ibnVtYmVyIiBtaW49IjEiIG1heD0iOTk5OTkiIGlucHV0bW9kZT0ibnVtZXJpYyIgcGxhY2Vob2xkZXI9IicrZXNjKHRyKCJjdXN0b20iKSkrJyIgdmFsdWU9IicrKGlzQ3VzdG9tP3N0LnF0eToiIikrJyI+JzsKICAgIHN5bmNRdHkoKTsgfQogIGZ1bmN0aW9uIHN5bmNRdHkoKXsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoJCgia2tnLXF0eSIpLnF1ZXJ5U2VsZWN0b3JBbGwoIi5ra2ctcWNoaXAiKSxmdW5jdGlvbihiKXsgYi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsK2IuZGF0YXNldC5xPT09c3QucXR5PyJ0cnVlIjoiZmFsc2UiKTsgfSk7CiAgICB2YXIgcz10b3RhbCgpOyAkKCJra2ctY29ycC10b3QiKS5pbm5lckhUTUw9ZXNjKHRyKCJwZXJzZXQiKSkrJyA8YiBkaXI9Imx0ciI+Jyttb25leShzKSsnPC9iPiDDlyAnK3N0LnF0eSsnID0gPGIgZGlyPSJsdHIiPicrbW9uZXkocypzdC5xdHkpKyc8L2I+JzsgfQogIGZ1bmN0aW9uIGJ1bmRsZUNhcmQoeCl7CiAgICB2YXIgY29sPUNBVENPTE9SW3gua118fCIjNTU1IjsKICAgIHZhciB0aHVtYj0oSVNfTElWRSYmeC5pbWcpPyAnPGltZyBzcmM9IicreC5pbWcrJyIgYWx0PSInK2VzYyh4Lm4pKyciIGxvYWRpbmc9ImxhenkiPicKICAgICAgOiAnPHNwYW4gY2xhc3M9ImtrZy1vYmoiIHN0eWxlPSJiYWNrZ3JvdW5kOicrY29sKyciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPicrSUNPTlt4LmtdKyc8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9ImtrZy10YWciPnByZXZpZXc8L3NwYW4+JzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ia2tnLWNhcmQiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ia2tnLXJlbW92ZSIgZGF0YS1ybT0iJyt4LmlkKyciIGFyaWEtbGFiZWw9IlJlbW92ZSIgdGl0bGU9IlJlbW92ZSI+w5c8L2J1dHRvbj4nCiAgICAgICsnPGRpdiBjbGFzcz0ia2tnLXRodW1iIj4nK3RodW1iKyc8c3BhbiBjbGFzcz0ia2tnLWNhdHBpbGwiPicrZXNjKENBVExBQkVMW3N0LmxhbmddW3gua10pKyc8L3NwYW4+PC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9ImtrZy1jYm9keSI+PHNwYW4gY2xhc3M9ImtrZy1jbmFtZSI+Jytlc2MoeC5uKSsnPC9zcGFuPjxzcGFuIGNsYXNzPSJra2ctcHJpY2UiPicrcHJpY2VIVE1MKHgpKyc8L3NwYW4+JytkZWxpdkhUTUwoeCkKICAgICAgKyc8YSBjbGFzcz0ia2tnLXZpZXciIGhyZWY9IicreC51KyciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj4nK3RyKCJ2aWV3IikrJzwvYT48L2Rpdj48L2Rpdj4nOyB9CiAgZnVuY3Rpb24gcmVuZGVyQXJyaXZlcygpewogICAgdmFyIGF2PSQoImtrZy1hcnJpdmVzIik7IGlmKCFhdikgcmV0dXJuOwogICAgdmFyIGl0ZW1zPXN0LmJ1bmRsZS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHguYm8hPT11bmRlZmluZWQ7fSk7CiAgICBpZighaXRlbXMubGVuZ3RoKXsgYXYuaGlkZGVuPXRydWU7IHJldHVybjsgfQogICAgdmFyIGFueUJvPWl0ZW1zLnNvbWUoZnVuY3Rpb24oeCl7cmV0dXJuIHguYm87fSk7CiAgICB2YXIgbz0oYW55Qm8\/Q09ORklHLmRlbGl2ZXJ5LmJhY2tvcmRlcjpDT05GSUcuZGVsaXZlcnkuc3RvY2spfHxbMCwxXTsKICAgIHZhciBkPW5ldyBEYXRlKCk7IGQuc2V0RGF0ZShkLmdldERhdGUoKSsoK29bMV0pKTsgdmFyIE09TU9OVEhTW3N0LmxhbmddfHxNT05USFMuZW47CiAgICBhdi5oaWRkZW49ZmFsc2U7IGF2LmNsYXNzTmFtZT0ia2tnLWFycml2ZXMiKyhhbnlCbz8iIjoiIGZhc3QiKTsKICAgIGF2LmlubmVySFRNTD0nPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjEiIHk9IjYiIHdpZHRoPSIxMyIgaGVpZ2h0PSI5IiByeD0iMSIvPjxwYXRoIGQ9Ik0xNCA5aDRsMyAzdjNoLTd6Ii8+PGNpcmNsZSBjeD0iNiIgY3k9IjE3LjUiIHI9IjEuNCIvPjxjaXJjbGUgY3g9IjE3IiBjeT0iMTcuNSIgcj0iMS40Ii8+PC9zdmc+PHNwYW4+Jytlc2ModHIoImFycml2ZXNieSIpKSsnIDxiIGRpcj0ibHRyIj4nK01bZC5nZXRNb250aCgpXSsiICIrZC5nZXREYXRlKCkrJzwvYj48L3NwYW4+JzsKICB9CiAgZnVuY3Rpb24gcmVuZGVyQnVuZGxlKCl7CiAgICB2YXIgZWw9JCgia2tnLWl0ZW1zIik7IGVsLmNsYXNzTGlzdC50b2dnbGUoImxlYWQiLCBzdC5idW5kbGUubGVuZ3RoPj00KTsKICAgIGVsLmlubmVySFRNTCA9IHN0LmJ1bmRsZS5sZW5ndGggPyBzdC5idW5kbGUubWFwKGJ1bmRsZUNhcmQpLmpvaW4oIiIpIDogJzxkaXYgY2xhc3M9ImtrZy1sb2FkaW5nIj4nK3RyKCJlbXB0eSIpKyc8L2Rpdj4nOwogICAgdmFyIG49c3QuYnVuZGxlLmxlbmd0aDsKICAgICQoImtrZy10b3RhbCIpLnRleHRDb250ZW50ID0gbj8gbW9uZXkodG90YWwoKSkrIiAgwrcgICIrbisiICIrdHIobj09PTE\/Iml0ZW0iOiJpdGVtcyIpIDogIuKAlCI7CiAgICByZW5kZXJBcnJpdmVzKCk7CiAgfQogIGZ1bmN0aW9uIHJlbmRlckJ1ZGdldCgpewogICAgdmFyIGI9K3N0LmJ1ZCwgdD10b3RhbCgpOyB2YXIgYmFyPSQoImtrZy1idWRnZXRiYXIiKTsKICAgIGlmKCFzdC5idW5kbGUubGVuZ3RoKXsgYmFyLmhpZGRlbj10cnVlOyByZXR1cm47IH0gYmFyLmhpZGRlbj1mYWxzZTsKICAgIHZhciBwY3Q9TWF0aC5taW4oMTAwLE1hdGgucm91bmQodC9iKjEwMCkpOyB2YXIgb3Zlcj10PmIrMC4wMDE7CiAgICB2YXIgZmlsbD0kKCJra2ctZmlsbCIpOyBmaWxsLnN0eWxlLndpZHRoPXBjdCsiJSI7IGZpbGwuY2xhc3NMaXN0LnRvZ2dsZSgib3ZlciIsb3Zlcik7CiAgICB2YXIgbWV0YT0kKCJra2ctYm1ldGEiKTsgbWV0YS5jbGFzc0xpc3QudG9nZ2xlKCJvdmVyIixvdmVyKTsKICAgIHZhciBkaWZmPU1hdGguYWJzKGItdCk7CiAgICBtZXRhLnRleHRDb250ZW50ID0gb3ZlciA\/IHRyKCJvdmVyIikucmVwbGFjZSgie3h9Iixtb25leShkaWZmKSkgOiAoZGlmZjwwLjAwMT8gdHIoIm9uYnVkZ2V0IikgOiB0cigidW5kZXIiKS5yZXBsYWNlKCJ7eH0iLG1vbmV5KGRpZmYpKSk7CiAgfQogIGZ1bmN0aW9uIHJlbmRlck1vcmUoKXsKICAgIGJ1aWxkTW9yZUZpbHRlcnMoKTsKICAgIHZhciBjYXQ9c3QubW9yZUNhdCwgaWRzPXt9OyBzdC5idW5kbGUuZm9yRWFjaChmdW5jdGlvbih4KXtpZHNbeC5pZF09MTt9KTsKICAgIHZhciBzaG93PWZ1bmN0aW9uKGl0ZW1zKXsKICAgICAgdmFyIGxpc3Q9aXRlbXMuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiAhaWRzW3guaWRdO30pOwogICAgICBpZihjYXQ9PT0ic3VnZ2VzdGVkIil7IHZhciB3PXdlaWdodHMoKTsgbGlzdD1saXN0Lm1hcChmdW5jdGlvbih4KXtyZXR1cm4ge3g6eCxzOih3W3gua118fDApKjEwMCtybmQoeC5pZCtzdC5zYWx0KSoxMCAtIHgucCowLjJ9O30pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5zLWEuczt9KS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8ueDt9KTsgfQogICAgICB2YXIgY2FwPTEyLCBtb3JlPWxpc3QubGVuZ3RoPmNhcDsgbGlzdD1saXN0LnNsaWNlKDAsY2FwKTsKICAgICAgdmFyIGdyaWQ9JCgia2tnLW1vcmUiKTsKICAgICAgZ3JpZC5pbm5lckhUTUwgPSBsaXN0Lmxlbmd0aCA\/IGxpc3QubWFwKHN1Z2dDYXJkKS5qb2luKCIiKSA6ICc8ZGl2IGNsYXNzPSJra2ctbG9hZGluZyI+4oCUPC9kaXY+JzsKICAgICAgdmFyIG5vdGU9JCgia2tnLW1vcmUtbm90ZSIpOyBub3RlLmhpZGRlbj0hKElTX0xJVkUmJm1vcmUmJmNhdCE9PSJzdWdnZXN0ZWQiKTsgbm90ZS50ZXh0Q29udGVudD10cigibW9yZW9uIik7CiAgICB9OwogICAgaWYoY2F0PT09InN1Z2dlc3RlZCIpeyB2YXIgdz13ZWlnaHRzKCk7IGxvYWRDYXRzKE9iamVjdC5rZXlzKHcpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4gd1trXT4wO30pLHNob3cpOyB9CiAgICBlbHNlIHsgJCgia2tnLW1vcmUiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImtrZy1sb2FkaW5nIj4nK3RyKCJsb2FkaW5nIikrJzwvZGl2Pic7IGZldGNoQ2F0KGNhdCxzaG93KTsgfQogIH0KICBmdW5jdGlvbiBidWlsZE1vcmVGaWx0ZXJzKCl7CiAgICB2YXIgY2hpcHM9W1sic3VnZ2VzdGVkIix0cigic3VnZ2VzdGVkIildXS5jb25jYXQoQ0FUT1JERVIubWFwKGZ1bmN0aW9uKGspe3JldHVybiBbayxDQVRMQUJFTFtzdC5sYW5nXVtrXV07fSkpOwogICAgJCgia2tnLW1maWx0ZXJzIikuaW5uZXJIVE1MPWNoaXBzLm1hcChmdW5jdGlvbihjKXsgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImtrZy1tZiIgZGF0YS1tYz0iJytjWzBdKyciIGFyaWEtcHJlc3NlZD0iJysoc3QubW9yZUNhdD09PWNbMF0\/InRydWUiOiJmYWxzZSIpKyciPicrZXNjKGNbMV0pKyc8L2J1dHRvbj4nOyB9KS5qb2luKCIiKTsKICB9CiAgZnVuY3Rpb24gc3VnZ0NhcmQoeCl7CiAgICB2YXIgY29sPUNBVENPTE9SW3gua118fCIjNTU1IjsKICAgIHZhciB0aHVtYj0oSVNfTElWRSYmeC5pbWcpPyAnPGltZyBzcmM9IicreC5pbWcrJyIgYWx0PSInK2VzYyh4Lm4pKyciIGxvYWRpbmc9ImxhenkiPicKICAgICAgOiAnPHNwYW4gY2xhc3M9ImtrZy1vYmoiIHN0eWxlPSJiYWNrZ3JvdW5kOicrY29sKyciPjxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPicrSUNPTlt4LmtdKyc8L3N2Zz48L3NwYW4+JzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ia2tnLXNjYXJkIj48ZGl2IGNsYXNzPSJra2ctdGh1bWIiPicrdGh1bWIrJzwvZGl2PjxkaXYgY2xhc3M9ImtrZy1zYm9keSI+JwogICAgICArJzxzcGFuIGNsYXNzPSJra2ctc25hbWUiPicrZXNjKHgubikrJzwvc3Bhbj48c3BhbiBjbGFzcz0ia2tnLXNwcmljZSI+JytwcmljZUhUTUwoeCkrJzwvc3Bhbj4nK2RlbGl2SFRNTCh4KQogICAgICArJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ia2tnLXBsdXMiIGRhdGEtYWRkPSInK3guaWQrJyI+KyAnK3RyKCJhZGQiKSsnPC9idXR0b24+PC9kaXY+PC9kaXY+JzsgfQoKICBmdW5jdGlvbiBmaW5kSW5Qb29sKGlkKXsgdmFyIGY9bnVsbDsgT2JqZWN0LmtleXMocG9vbENhY2hlKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyAocG9vbENhY2hlW2tdfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KXsgaWYoeC5pZD09aWQpZj14OyB9KTsgfSk7IGlmKCFmJiYhSVNfTElWRSlTRUVELmZvckVhY2goZnVuY3Rpb24oeCl7aWYoeC5pZD09aWQpZj14O30pOyByZXR1cm4gZjsgfQogIGZ1bmN0aW9uIGFkZEl0ZW0oaWQpeyBpZihzdC5idW5kbGUuc29tZShmdW5jdGlvbih4KXtyZXR1cm4geC5pZD09aWQ7fSkpcmV0dXJuOyB2YXIgaXQ9ZmluZEluUG9vbChpZCk7IGlmKGl0KXsgc3QuYnVuZGxlLnB1c2goaXQpOyByZW5kZXJBbGwoKTsgfSB9CiAgZnVuY3Rpb24gcmVtb3ZlSXRlbShpZCl7IHN0LmJ1bmRsZT1zdC5idW5kbGUuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LmlkIT1pZDt9KTsgcmVuZGVyQWxsKCk7IH0KCiAgZnVuY3Rpb24gcmVuZGVyTXNnKCl7CiAgICBpZihzdC5ub3RlRWRpdGVkKSByZXR1cm47ICAgLyoga2VlcCB0aGUgdXNlcidzIGhhbmQtZWRpdGVkIG5vdGUgKi8KICAgIGlmKHN0LmFpTm90ZSl7ICQoImtrZy1tc2dib2R5IikudGV4dENvbnRlbnQ9c3QuYWlOb3RlOyByZXR1cm47IH0KICAgIHZhciBrZXk9c3Qud2hvPT09ImNvcnBvcmF0ZSI\/ImNvcnBvcmF0ZSI6c3Qub2NjOyB2YXIgdHBsPShNU0dba2V5XXx8TVNHLmp1c3RiZWNhdXNlKVtzdC5sYW5nXTsKICAgIHZhciBubT1zdC5uYW1lLnRyaW0oKTsgdmFyIHNsb3Q9bm0\/KHN0Lmxhbmc9PT0iYXIiPygiINmK2KcgIitubSk6KCIsICIrbm0pKToiIjsKICAgICQoImtrZy1tc2dib2R5IikudGV4dENvbnRlbnQgPSB0cGwuaW5kZXhPZigie25hbWV9Iik+PTAgPyB0cGwucmVwbGFjZSgie25hbWV9IixzbG90KSA6IHRwbDsgfQoKICAvKiAtLS0tIGFkZCBhbGwgdG8gYmFnIChjb25maXJtLWZpcnN0LCB2ZXJpZmllZCkgLS0tLSAqLwogIGZ1bmN0aW9uIHNob3dTdWNjZXNzKGFkZGVkLCBmYWlsZWQsIGRlbW8pewogICAgdmFyIHM9JCgia2tnLXN1Y2Nlc3MiKTsgcy5oaWRkZW49ZmFsc2U7CiAgICAkKCJra2ctc3VjY2Vzcy10eCIpLnRleHRDb250ZW50ID0gZGVtbyA\/IHRyKCJkZW1vYWRkIikgOiB0cigiYWRkZWRuIikucmVwbGFjZSgie259IiwgYWRkZWQrIiAiK3RyKGFkZGVkPT09MT8iaXRlbSI6Iml0ZW1zIikpOwogICAgdmFyIHZiPSQoImtrZy12aWV3YmFnIik7IHZiLmhpZGRlbj1kZW1vOyB2Yi5zZXRBdHRyaWJ1dGUoImhyZWYiLChDT05GSUcuc3RvcmVCYXNlfHwiIikrIi9jYXJ0LyIpOwogICAgdmFyIHc9JCgia2tnLXN1Y2Nlc3Mtd2FybiIpOwogICAgaWYoZmFpbGVkJiZmYWlsZWQubGVuZ3RoKXsgdy5oaWRkZW49ZmFsc2U7IHcudGV4dENvbnRlbnQ9dHIoInNvbWVmYWlsIikucmVwbGFjZSgie3h9IixmYWlsZWQuam9pbigiLCAiKSk7IH0gZWxzZSB7IHcuaGlkZGVuPXRydWU7IH0KICAgIHMuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJuZWFyZXN0In0pOwogIH0KICBmdW5jdGlvbiBhZGRBbGwoYnRuKXsKICAgIGlmKCFzdC5idW5kbGUubGVuZ3RoKSByZXR1cm47CiAgICBpZighSVNfTElWRSl7IHNob3dTdWNjZXNzKDAsW10sdHJ1ZSk7IHJldHVybjsgfQogICAgdmFyIHF0eSA9IHN0Lndobz09PSJjb3Jwb3JhdGUiID8gTWF0aC5tYXgoMSxzdC5xdHl8fDEpIDogMTsKICAgIHZhciBsYWI9YnRuLnF1ZXJ5U2VsZWN0b3IoInNwYW46bGFzdC1jaGlsZCIpOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgaWYobGFiKWxhYi50ZXh0Q29udGVudD10cigiYWRkaW5nIik7CiAgICB2YXIgYmFzZT1DT05GSUcuc3RvcmVCYXNlfHwiIiwgZmFpbGVkPVtdOwogICAgZmV0Y2goYmFzZSsiL3dwLWpzb24vd2Mvc3RvcmUvdjEvY2FydCIse2hlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGNyZWRlbnRpYWxzOiJpbmNsdWRlIn0pCiAgICAgIC50aGVuKGZ1bmN0aW9uKHIpeyByZXR1cm4gci50ZXh0KCkudGhlbihmdW5jdGlvbigpeyByZXR1cm4gci5oZWFkZXJzLmdldCgiTm9uY2UiKXx8ci5oZWFkZXJzLmdldCgiWC1XQy1TdG9yZS1BUEktTm9uY2UiKXx8IiI7IH0pOyB9KQogICAgICAudGhlbihmdW5jdGlvbihub25jZSl7IHZhciBjaGFpbj1Qcm9taXNlLnJlc29sdmUoKTsKICAgICAgICBzdC5idW5kbGUuZm9yRWFjaChmdW5jdGlvbihpdCl7IGNoYWluPWNoYWluLnRoZW4oZnVuY3Rpb24oKXsKICAgICAgICAgIHJldHVybiBmZXRjaChiYXNlKyIvd3AtanNvbi93Yy9zdG9yZS92MS9jYXJ0L2FkZC1pdGVtIix7bWV0aG9kOiJQT1NUIixjcmVkZW50aWFsczoiaW5jbHVkZSIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJOb25jZSI6bm9uY2V9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2lkOml0LmlkLHF1YW50aXR5OnF0eX0pfSkKICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzKXsgaWYoIXJlcy5vaykgZmFpbGVkLnB1c2goaXQubik7IH0pLmNhdGNoKGZ1bmN0aW9uKCl7IGZhaWxlZC5wdXNoKGl0Lm4pOyB9KTsKICAgICAgICB9KTsgfSk7CiAgICAgICAgcmV0dXJuIGNoYWluOyB9KQogICAgICAudGhlbihmdW5jdGlvbigpeyBidG4uZGlzYWJsZWQ9ZmFsc2U7IGlmKGxhYilsYWIudGV4dENvbnRlbnQ9dHIoImFkZGFsbCIpOwogICAgICAgIGlmKGZhaWxlZC5sZW5ndGg9PT1zdC5idW5kbGUubGVuZ3RoKXsgdmFyIGY9JCgia2tnLWZsYXNoIik7IGYuaGlkZGVuPWZhbHNlOyBmLnRleHRDb250ZW50PXRyKCJhZGRmYWlsIik7IHJldHVybjsgfQogICAgICAgIHZhciBfYWRkZWQ9c3QuYnVuZGxlLmxlbmd0aC1mYWlsZWQubGVuZ3RoOyB0cmFja0FkZFRvQmFnKF9hZGRlZCwgdG90YWwoKSk7CiAgICAgICAgdHJ5eyB2YXIgX249JCgia2tnLW1zZ2JvZHkiKS5pbm5lclRleHQudHJpbSgpOyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgia2tnX2dpZnRub3RlIiwgX258fCIiKTsgfWNhdGNoKGUpe30gIC8qIGNoZWNrb3V0IHNuaXBwZXQgcmVhZHMgdGhpcyBpbnRvIE9yZGVyIG5vdGVzICovCiAgICAgICAgc2hvd1N1Y2Nlc3MoX2FkZGVkLCBmYWlsZWQsIGZhbHNlKTsgfSkKICAgICAgLmNhdGNoKGZ1bmN0aW9uKCl7IGJ0bi5kaXNhYmxlZD1mYWxzZTsgaWYobGFiKWxhYi50ZXh0Q29udGVudD10cigiYWRkYWxsIik7IHZhciBmPSQoImtrZy1mbGFzaCIpOyBmLmhpZGRlbj1mYWxzZTsgZi50ZXh0Q29udGVudD10cigiYWRkZmFpbCIpOyB9KTsKICB9CgogIC8qIC0tLS0gY29ycG9yYXRlIHF1b3RlIC8gZW5xdWlyeSAtLS0tICovCiAgZnVuY3Rpb24gYnVpbGRRdW90ZVRleHQoKXsKICAgIHZhciBzZXRUb3RhbD10b3RhbCgpLCBxdHk9TWF0aC5tYXgoMSxzdC5xdHl8fDEpLCBncmFuZD1zZXRUb3RhbCpxdHksIGFyPXN0Lmxhbmc9PT0iYXIiOwogICAgdmFyIGxpbmVzPXN0LmJ1bmRsZS5tYXAoZnVuY3Rpb24oeCl7IHJldHVybiAi4oCiICIreC5uKyIg4oCUICIrbW9uZXkoeC5wKTsgfSkuam9pbigiXG4iKTsKICAgIGlmKGFyKXsgcmV0dXJuICLZhdix2K3YqNin2YsgS2xpcHBpS9iMINij2LHYutioINio2LnYsdi2INiz2LnYsSDZhNmH2K\/ZitipINi02LHZg9in2Ko6XG4iK2xpbmVzCiAgICAgICAgKyJcbtmC2YrZhdipINin2YTYt9mC2YU6ICIrbW9uZXkoc2V0VG90YWwpKyJcbtin2YTZg9mF2YrYqTogIitxdHkrIiDYt9mC2YVcbtin2YTYpdis2YXYp9mE2Yog2KfZhNiq2YLYr9mK2LHZijogIittb25leShncmFuZCkKICAgICAgICArIlxu2YrYsdis2Ykg2KrYo9mD2YrYryDYs9i52LEg2KfZhNis2YXZhNipINmI2KfZhNiq2YjZgdmR2LEg2YjZhdiv2Kkg2KfZhNiq2KzZh9mK2LIuIjsgfQogICAgcmV0dXJuICJIZWxsbyBLbGlwcGlLLCBJJ2QgbGlrZSBhIHF1b3RlIGZvciBhIGNvcnBvcmF0ZSBnaWZ0OlxuIitsaW5lcwogICAgICArIlxuUGVyIHNldDogIittb25leShzZXRUb3RhbCkrIlxuUXVhbnRpdHk6ICIrcXR5KyIgc2V0c1xuRXN0aW1hdGVkIHRvdGFsOiAiK21vbmV5KGdyYW5kKQogICAgICArIlxuUGxlYXNlIGNvbmZpcm0gYnVsayBwcmljaW5nLCBhdmFpbGFiaWxpdHkgYW5kIGxlYWQgdGltZS4iOwogIH0KICBmdW5jdGlvbiB3YVVybCgpeyByZXR1cm4gImh0dHBzOi8vd2EubWUvIitDT05GSUcud2hhdHNhcHArIj90ZXh0PSIrZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkUXVvdGVUZXh0KCkpOyB9CiAgZnVuY3Rpb24gbWFpbHRvVXJsKCl7IHJldHVybiAibWFpbHRvOiIrQ09ORklHLmVucXVpcnlFbWFpbCsiP3N1YmplY3Q9IitlbmNvZGVVUklDb21wb25lbnQoc3QubGFuZz09PSJhciI\/Iti32YTYqCDYudix2LYg2LPYudixINmE2YfYr9mK2Kkg2LTYsdmD2KfYqiI6IkNvcnBvcmF0ZSBnaWZ0IHF1b3RlIikrIiZib2R5PSIrZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkUXVvdGVUZXh0KCkpOyB9CiAgZnVuY3Rpb24gcmVxdWVzdFF1b3RlKCl7IHZhciBmPSQoImtrZy1mbGFzaCIpOyBmLmhpZGRlbj1mYWxzZTsgZi50ZXh0Q29udGVudD10cigicXNlbnQiKTsgdHJhY2soImtrZ19yZXF1ZXN0X3F1b3RlIix7dmFsdWU6dG90YWwoKSpNYXRoLm1heCgxLHN0LnF0eXx8MSksdW5pdHM6TWF0aC5tYXgoMSxzdC5xdHl8fDEpfSk7IHdpbmRvdy5vcGVuKHdhVXJsKCksIl9ibGFuayIpOyB9CgogIC8qIC0tLS0gbGFuZ3VhZ2UgLS0tLSAqLwogIGZ1bmN0aW9uIGFwcGx5TGFuZygpeyByb290LnNldEF0dHJpYnV0ZSgibGFuZyIsc3QubGFuZyk7IHJvb3Quc2V0QXR0cmlidXRlKCJkaXIiLHN0Lmxhbmc9PT0iYXIiPyJydGwiOiJsdHIiKTsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS10XSIpLGZ1bmN0aW9uKGVsKXsgZWwudGV4dENvbnRlbnQ9dHIoZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXQiKSk7IH0pOwogICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBoXSIpLGZ1bmN0aW9uKGVsKXsgZWwuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsdHIoZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXBoIikpKTsgfSk7CiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmtrZy1sYW5nIGJ1dHRvbiIpLGZ1bmN0aW9uKGIpeyBiLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixiLmRhdGFzZXQubGFuZz09PXN0Lmxhbmc\/InRydWUiOiJmYWxzZSIpOyB9KTsKICAgICQoImtrZy1yaWJib24iKS50ZXh0Q29udGVudD10cigiZGVtbyIpOyBidWlsZE9wdHMoKTsgaWYoISQoImtrZy1yZXMiKS5oaWRkZW4pIHJlbmRlckFsbCgpOyB9CgogIC8qIC0tLS0gZXZlbnRzIC0tLS0gKi8KICByb290LnF1ZXJ5U2VsZWN0b3IoIi5ra2ctcGFuZWwiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oZSl7IHZhciBiPWUudGFyZ2V0LmNsb3Nlc3QoIi5ra2ctb3B0Iik7IGlmKGIpIG9uT3B0KGIpOyB9KTsKICAkKCJra2ctbmFtZSIpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbigpeyBzdC5uYW1lPXRoaXMudmFsdWU7IGlmKCEkKCJra2ctcmVzIikuaGlkZGVuJiYhc3QuYWlOb3RlKSByZW5kZXJNc2coKTsgfSk7CiAgJCgia2tnLWRlc2MiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZnVuY3Rpb24oKXsgc3QuZGVzYz10aGlzLnZhbHVlOyB2YXIgX2Q9dGhpcy52YWx1ZS50cmltKCk7ICQoImtrZy1haS1nbyIpLmRpc2FibGVkPSFfZDsgJCgia2tnLWdvIikuZGlzYWJsZWQ9ISgoc3Qud2hvJiZzdC5vY2MmJnN0LmJ1ZCl8fF9kKTsgfSk7CiAgJCgia2tnLWdvIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7IHN0LnNhbHQ9MDsgc3QubW9yZUNhdD0ic3VnZ2VzdGVkIjsgYnVpbGRHaWZ0KCk7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgJCgia2tnLXJlcyIpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoic3RhcnQifSk7IH0sNjApOyB9KTsKICAkKCJra2ctYWktZ28iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3Quc2FsdD0wOyBzdC5tb3JlQ2F0PSJzdWdnZXN0ZWQiOyBpZighc3QuYnVkKXsgc3QuYnVkPSI2MDAwIjsgYnVpbGRPcHRzKCk7IH0gYnVpbGRHaWZ0KCk7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgJCgia2tnLXJlcyIpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoic3RhcnQifSk7IH0sNjApOyB9KTsKICAkKCJra2ctYWdhaW4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3Quc2FsdCsrOyBidWlsZEdpZnQoKTsgfSk7CiAgJCgia2tnLWl0ZW1zIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpeyB2YXIgYj1lLnRhcmdldC5jbG9zZXN0KCIua2tnLXJlbW92ZSIpOyBpZihiKSByZW1vdmVJdGVtKGIuZGF0YXNldC5ybSk7IH0pOwogICQoImtrZy1tb3JlIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpeyB2YXIgYj1lLnRhcmdldC5jbG9zZXN0KCIua2tnLXBsdXMiKTsgaWYoYikgYWRkSXRlbShiLmRhdGFzZXQuYWRkKTsgfSk7CiAgJCgia2tnLW1maWx0ZXJzIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpeyB2YXIgYj1lLnRhcmdldC5jbG9zZXN0KCIua2tnLW1mIik7IGlmKGIpeyBzdC5tb3JlQ2F0PWIuZGF0YXNldC5tYzsgcmVuZGVyTW9yZSgpOyB9IH0pOwogICQoImtrZy1hZGRhbGwiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgYWRkQWxsKHRoaXMpOyB9KTsKICAkKCJra2ctcXVvdGUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscmVxdWVzdFF1b3RlKTsKICAkKCJra2cta2VlcCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyAkKCJra2ctc3VjY2VzcyIpLmhpZGRlbj10cnVlOyB9KTsKICAkKCJra2ctcXR5IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGUpeyB2YXIgYj1lLnRhcmdldC5jbG9zZXN0KCIua2tnLXFjaGlwIik7IGlmKGIpeyBzdC5xdHk9K2IuZGF0YXNldC5xOyB2YXIgY2k9JCgia2tnLXFjdXN0b20iKTsgaWYoY2kpY2kudmFsdWU9IiI7IHN5bmNRdHkoKTsgfSB9KTsKICAkKCJra2ctcXR5IikuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGZ1bmN0aW9uKGUpeyBpZihlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoImtrZy1xY3VzdG9tIikpeyB2YXIgdj1wYXJzZUludChlLnRhcmdldC52YWx1ZSwxMCk7IHN0LnF0eT0odj4wP3Y6MSk7IHN5bmNRdHkoKTsgfSB9KTsKICAkKCJra2ctcmVzZXQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsgc3Qud2hvPXN0Lm9jYz1zdC5idWQ9bnVsbDsgc3QuaW50cz1bXTsgc3QubmFtZT0iIjsgc3Quc2FsdD0wOyBzdC5idW5kbGU9W107IHN0Lm1vcmVDYXQ9InN1Z2dlc3RlZCI7IHN0LnF0eT0xOyBzdC5kZXNjPSIiOyBzdC5haU5vdGU9bnVsbDsgc3Qubm90ZUVkaXRlZD1mYWxzZTsgJCgia2tnLW5hbWUiKS52YWx1ZT0iIjsgJCgia2tnLWRlc2MiKS52YWx1ZT0iIjsgJCgia2tnLWZsYXNoIikuaGlkZGVuPXRydWU7ICQoImtrZy1zdWNjZXNzIikuaGlkZGVuPXRydWU7IGJ1aWxkT3B0cygpOyAkKCJra2ctZ28iKS5kaXNhYmxlZD10cnVlOyAkKCJra2ctYWktZ28iKS5kaXNhYmxlZD10cnVlOyAkKCJra2ctcmVzIikuaGlkZGVuPXRydWU7IHJvb3Quc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJzdGFydCJ9KTsgfSk7CiAgJCgia2tnLW1zZ2JvZHkiKS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZnVuY3Rpb24oKXsgc3Qubm90ZUVkaXRlZD10cnVlOyB9KTsKICAkKCJra2ctY29weSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyB2YXIgYj10aGlzLHR4dD0kKCJra2ctbXNnYm9keSIpLmlubmVyVGV4dDsgKG5hdmlnYXRvci5jbGlwYm9hcmQ\/bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodHh0KTpQcm9taXNlLnJlamVjdCgpKS50aGVuKGZ1bmN0aW9uKCl7IGIudGV4dENvbnRlbnQ9dHIoImNvcGllZCIpOyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi50ZXh0Q29udGVudD10cigiY29weSIpO30sMTUwMCk7IH0pLmNhdGNoKGZ1bmN0aW9uKCl7IHZhciByPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7IHIuc2VsZWN0Tm9kZUNvbnRlbnRzKCQoImtrZy1tc2dib2R5IikpOyB2YXIgcz1nZXRTZWxlY3Rpb24oKTsgcy5yZW1vdmVBbGxSYW5nZXMoKTsgcy5hZGRSYW5nZShyKTsgfSk7IH0pOwogIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIua2tnLWxhbmcgYnV0dG9uIiksZnVuY3Rpb24oYil7IGIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7IHN0Lmxhbmc9Yi5kYXRhc2V0Lmxhbmc7IGFwcGx5TGFuZygpOyB9KTsgfSk7CgogIC8qIC0tLS0gaW5pdCAtLS0tICovCiAgYnVpbGRPcHRzKCk7ICQoImtrZy1uYW1lIikuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsdHIoIm5hbWUiKSk7ICQoImtrZy1kZXNjIikuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsdHIoImFpX3BoIikpOwogICQoImtrZy1yaWJib24iKS50ZXh0Q29udGVudD10cigiZGVtbyIpOyAkKCJra2ctcmliYm9uIikuaGlkZGVuPUlTX0xJVkU7CiAgJCgia2tnLXNob3BhbGwiKS5zZXRBdHRyaWJ1dGUoImhyZWYiLENPTkZJRy5zaG9wQWxsVXJsKTsKICB0cmFjaygia2tnX3dpZGdldF92aWV3Iix7bGl2ZTpJU19MSVZFfSk7Cn0pKCk7Cg==\";var bin=atob(B);var bytes=Uint8Array.from(bin,function(c){return c.charCodeAt(0);});var js=new TextDecoder().decode(bytes);var el=document.createElement(\"script\");el.textContent=js;(document.body||document.head||document.documentElement).appendChild(el);})();<\/script>\n<\/div>\n\n\n\n<section class=\"kkg-about\" style=\"max-width:820px;margin:40px auto 0;padding:0 16px\"><h2>How the KlippiK gift finder works<\/h2><p>Tell it who the gift is for, the occasion and your budget, or describe the person in a sentence. It suggests two or three pieces from items that are in stock right now, with live prices in INR, and you can swap anything before adding the set to your bag.<\/p><h3>Are the suggested gifts in stock?<\/h3><p>Yes. The gift finder only suggests items that are in stock at KlippiK India today. Made-to-order pieces are left out, so the gift arrives on time.<\/p><h3>How fast is delivery?<\/h3><p>In-stock items are dispatched within one business day and arrive within 3 to 7 business days, and delivery is free on orders of \u20b9999 or more.<\/p><h3>Can I add a gift message?<\/h3><p>Yes. The gift finder drafts a short gift note that you can edit and copy.<\/p><\/section>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>How the KlippiK gift finder works Tell it who the gift is for, the occasion and your budget, or describe<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"rank_math_title":"Gift Finder: Gift Ideas in India | KlippiK","rank_math_description":"Pick who it is for, the occasion and your budget, and the KlippiK gift finder suggests in-stock gifts with delivery across India.","rank_math_focus_keyword":"","_joinchat":[],"footnotes":""},"class_list":["post-40259","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/pages\/40259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/comments?post=40259"}],"version-history":[{"count":5,"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/pages\/40259\/revisions"}],"predecessor-version":[{"id":40284,"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/pages\/40259\/revisions\/40284"}],"wp:attachment":[{"href":"https:\/\/klippik.com\/in\/wp-json\/wp\/v2\/media?parent=40259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}