{
  "version": 3,
  "sources": ["/cdn/shop/t/36/assets/ark-variants.js?b=20260923a"],
  "sourcesContent": ["/* ============================================================\n   TDHQ VARIANTS - the one engine behind the option picker.\n\n   snippets/ark-option-picker renders the controls; this decides what they\n   mean. The product page and the quick-view dialog both run it, so \"which\n   variant did the shopper choose\", \"which values are sold out\", \"which\n   combinations do not exist\" and \"put the chosen id in the form\" are answered\n   in ONE place. Each surface then does its own painting (a product page also\n   swaps the gallery, the sticky bar and the pickup line; a dialog does not)\n   through the onChange callback.\n\n   Usage:\n     var picker = ArkVariants.init(root, { onChange: function (variant, api) { ... } });\n   root must contain the picker markup and the [data-pdp-variants] data.\n   Returns null when there is nothing to drive (no data, or a single variant\n   with no controls), so every caller must check.\n   ============================================================ */\n(function () {\n  'use strict';\n\n  function init(root, opts) {\n    if (!root) { return null; }\n    opts = opts || {};\n    var dataEl = root.querySelector('[data-pdp-variants]') || document.querySelector('[data-pdp-variants]');\n    if (!dataEl) { return null; }\n    var variants;\n    try { variants = JSON.parse(dataEl.textContent); } catch (e) { return null; }\n    if (!variants || !variants.length) { return null; }\n\n    /* Three shapes of control, all rendered by the one picker snippet:\n       - selects: the no-script fallback, still driven if a template uses it\n       - radios : a single-option product posts radios named \"id\" directly\n       - groups : one radio group per option on a multi-option product */\n    var selects = [].slice.call(root.querySelectorAll('[data-pdp-option]'));\n    var radios = [].slice.call(root.querySelectorAll('[data-pdp-vradio]'));\n    var groups = [].slice.call(root.querySelectorAll('[data-pdp-optgroup]'));\n    var idField = root.querySelector('[data-pdp-variant-id]');\n    /* Script is running, so the hidden field is the one that posts. */\n    if (idField) { idField.disabled = false; }\n\n    function chosenValues() {\n      if (!groups.length) { return selects.map(function (sel) { return sel.value; }); }\n      return groups.map(function (g) {\n        var fixed = g.getAttribute('data-pdp-fixed');\n        if (fixed !== null) { return fixed; }\n        var c = g.querySelector('input:checked');\n        return c ? c.value : '';\n      });\n    }\n\n    function chosenLabels() {\n      return [].slice.call(root.querySelectorAll('.ark-opt')).map(function (g) {\n        var c = g.querySelector('input:checked');\n        var cur = g.querySelector('.ark-opt__cur');\n        return c ? (c.getAttribute('data-label') || c.value) : (cur ? cur.textContent : '');\n      }).filter(Boolean);\n    }\n\n    /* Active ring, the \"Colour: Black\" read-out, and - per value - whether it\n       exists with the other choices (is-na) and is in stock (is-out). */\n    function paint() {\n      [].slice.call(root.querySelectorAll('.ark-opt')).forEach(function (g) {\n        var c = g.querySelector('input:checked');\n        var cur = g.querySelector('[data-pdp-optcur]');\n        if (c && cur) { cur.textContent = c.getAttribute('data-label') || c.value; }\n        [].slice.call(g.querySelectorAll('input[type=\"radio\"]')).forEach(function (inp) {\n          var lab = inp.closest('.ark-opt__v');\n          if (lab) { lab.classList.toggle('is-active', inp.checked); }\n        });\n      });\n      if (!groups.length) { return; }\n      var chosen = chosenValues();\n      groups.forEach(function (g, gi) {\n        [].slice.call(g.querySelectorAll('input[type=\"radio\"]')).forEach(function (inp) {\n          var lab = inp.closest('.ark-opt__v');\n          if (!lab) { return; }\n          var exists = false, avail = false;\n          for (var i = 0; i < variants.length && !avail; i++) {\n            var vo = variants[i].options;\n            var ok = vo[gi] === inp.value;\n            for (var n = 0; ok && n < chosen.length; n++) { if (n !== gi && vo[n] !== chosen[n]) { ok = false; } }\n            if (ok) { exists = true; if (variants[i].available) { avail = true; } }\n          }\n          lab.classList.toggle('is-out', exists && !avail);\n          lab.classList.toggle('is-na', !exists);\n          /* what a screen reader hears follows the same state */\n          var sr = lab.querySelector('.ark-opt__sr');\n          if (sr) { sr.textContent = !exists ? ', not available with these options' : (!avail ? ', sold out' : ''); }\n        });\n      });\n    }\n\n    function match() {\n      if (radios.length) {\n        var picked = null;\n        for (var r = 0; r < radios.length; r++) { if (radios[r].checked) { picked = radios[r].value; break; } }\n        for (var j = 0; j < variants.length; j++) { if (String(variants[j].id) === String(picked)) { return variants[j]; } }\n        return null;\n      }\n      var chosen = chosenValues();\n      for (var i = 0; i < variants.length; i++) {\n        var v = variants[i], ok = true;\n        for (var n = 0; n < chosen.length; n++) { if (v.options[n] !== chosen[n]) { ok = false; break; } }\n        if (ok) { return v; }\n      }\n      return null;\n    }\n\n    var api = {\n      variants: variants,\n      groups: groups,\n      chosenValues: chosenValues,\n      chosenLabels: chosenLabels,\n      paint: paint,\n      match: match,\n      sync: sync\n    };\n\n    function sync() {\n      paint();\n      var v = match();\n      if (v && idField) { idField.value = v.id; }\n      if (typeof opts.onChange === 'function') { opts.onChange(v, api); }\n      return v;\n    }\n\n    selects.forEach(function (sel) { sel.addEventListener('change', sync); });\n    radios.forEach(function (r) { r.addEventListener('change', sync); });\n\n    /* A pick that makes an impossible combination (Black in a size that only\n       comes in Sand) keeps the value just picked and moves the OTHER options\n       to the nearest variant that has it, in stock first - never a dead\n       \"Unavailable\" button. */\n    groups.forEach(function (g, gi) {\n      g.addEventListener('change', function (e) {\n        if (!match() && e.target && e.target.value !== undefined) {\n          var val = e.target.value, best = null;\n          for (var i = 0; i < variants.length; i++) {\n            if (variants[i].options[gi] !== val) { continue; }\n            if (!best || (!best.available && variants[i].available)) { best = variants[i]; }\n            if (best.available) { break; }\n          }\n          if (best) {\n            groups.forEach(function (g2, gj) {\n              if (gj === gi) { return; }\n              [].slice.call(g2.querySelectorAll('input[type=\"radio\"]')).forEach(function (r2) {\n                if (r2.value === best.options[gj]) { r2.checked = true; }\n              });\n            });\n          }\n        }\n        sync();\n      });\n    });\n\n    paint();\n    return api;\n  }\n\n  /* ------------------------------------------------------------\n     A PICTURE CHANGE THAT FADES, NEVER BLINKS.\n\n     Client: \"changing picture on thumbnail looks super bad, no animation\"\n     (audit MOT-09: the stage source changed between two frames with no\n     transition). The new picture has already been decoded by the caller, so\n     it is put in the frame at once, and a copy of the OLD picture is laid\n     over it and faded out: both pictures are on screen for the whole 220ms,\n     so there is never a blank frame. The copy takes the old picture's exact\n     box, fit and framing transform, and is not marked for the framing\n     script, which only ever sees the real picture.\n\n     Used by the product page gallery, its lightbox and quick view.\n     `swap` does the real change (src, srcset, framing reset).\n     ------------------------------------------------------------ */\n  function fadeSwap(img, swap) {\n    var parent = img && img.parentNode;\n    var still = !window.matchMedia || window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    [].slice.call(parent ? parent.querySelectorAll('[data-ark-ghost]') : []).forEach(function (g) { g.remove(); });\n    if (still || !parent || !img.animate || !img.offsetWidth || !img.complete || !img.naturalWidth) { swap(); return; }\n    var cs = window.getComputedStyle(img);\n    var g = img.cloneNode(false);\n    ['id', 'data-ark-fit', 'srcset', 'sizes', 'fetchpriority', 'loading', 'class'].forEach(function (a) { g.removeAttribute(a); });\n    g.src = img.currentSrc || img.src;\n    g.alt = '';\n    g.setAttribute('aria-hidden', 'true');\n    g.setAttribute('data-ark-ghost', '');\n    g.style.cssText = [\n      'position:absolute', 'margin:0', 'pointer-events:none', 'max-width:none', 'max-height:none',\n      'left:' + img.offsetLeft + 'px', 'top:' + img.offsetTop + 'px',\n      'width:' + img.offsetWidth + 'px', 'height:' + img.offsetHeight + 'px',\n      'box-sizing:' + cs.boxSizing, 'padding:' + cs.padding, 'border-radius:' + cs.borderRadius,\n      'object-fit:' + cs.objectFit, 'object-position:' + cs.objectPosition,\n      'transform:' + cs.transform, 'transform-origin:' + cs.transformOrigin,\n      'background:' + cs.backgroundColor\n    ].join(';');\n    img.insertAdjacentElement('afterend', g);\n    swap();\n    var a = g.animate([{ opacity: 1 }, { opacity: 0 }], { duration: (window.ArkMotion ? window.ArkMotion.ms('--ark-t', 220) : 220), easing: (window.ArkMotion ? window.ArkMotion.easing() : 'cubic-bezier(0.4, 0, 0.2, 1)') });\n    a.onfinish = a.oncancel = function () { g.remove(); };\n  }\n\n  window.ArkVariants = { init: init, fadeSwap: fadeSwap };\n\n  /* ------------------------------------------------------------\n     SIZE GUIDE - one delegated opener for every picker on the page.\n\n     The guide's dialog is rendered by the picker (snippets/ark-size-guide),\n     so it arrives wherever a picker does. It used to carry its own inline\n     script, and quick view inserts its markup with DOMParser, which never runs\n     a script: on a listing the quick view's \"Size guide\" button did nothing,\n     and on a product page the page's binder opened the PAGE's guide - another\n     brand's - from the quick view (audit pdp-03, measured both ways). One\n     listener on the document covers a picker that arrives later, and each\n     button opens the dialog it names (aria-controls), which is unique per\n     picker.\n     ------------------------------------------------------------ */\n  var sgOpener = null;\n\n  function sgDialogFor(btn) {\n    var id = btn.getAttribute('aria-controls');\n    var dlg = id ? document.getElementById(id) : null;\n    if (dlg) { return dlg; }\n    var scope = btn.closest('[data-ark-qv]') || document;\n    return scope.querySelector('dialog[data-sg]');\n  }\n\n  function sgBind(dlg) {\n    if (dlg.hasAttribute('data-sg-bound')) { return; }\n    dlg.setAttribute('data-sg-bound', '');\n    /* Keyboard users land back on the button they pressed. */\n    dlg.addEventListener('close', function () {\n      var back = sgOpener;\n      sgOpener = null;\n      if (back && back.focus && document.contains(back)) { back.focus({ preventScroll: true }); }\n    });\n  }\n\n  /* U.27: cm or inches (kept on this device), and the size picked in the\n     buy box marked in the chart, both set as the guide opens. */\n  function sgUnit(dlg, unit) {\n    if (unit !== 'in') { unit = 'cm'; }\n    dlg.setAttribute('data-unit', unit);\n    var bs = dlg.querySelectorAll('[data-sg-unit]');\n    for (var i = 0; i < bs.length; i++) {\n      bs[i].setAttribute('aria-pressed', bs[i].getAttribute('data-sg-unit') === unit ? 'true' : 'false');\n    }\n  }\n\n  function sgPrepare(dlg, opener) {\n    if (dlg.querySelector('[data-sg-unit]')) {\n      var unit = 'cm';\n      try { unit = window.localStorage.getItem('ark-sg-unit') || 'cm'; } catch (err) {}\n      sgUnit(dlg, unit);\n    }\n    var group = opener.closest('.ark-opt');\n    var cur = group ? group.querySelector('[data-pdp-optcur]') : null;\n    var size = cur ? cur.textContent.replace(/\\s+/g, ' ').trim() : '';\n    var rows = dlg.querySelectorAll('tr[data-sg-size]');\n    for (var i = 0; i < rows.length; i++) {\n      rows[i].classList.toggle('is-current', size !== '' && rows[i].getAttribute('data-sg-size') === size);\n    }\n  }\n\n  function sgClose(dlg) {\n    if (!dlg) { return; }\n    if (dlg.close) { dlg.close(); } else { dlg.removeAttribute('open'); }\n  }\n\n  document.addEventListener('click', function (e) {\n    var t = e.target;\n    if (!t || !t.closest) { return; }\n\n    var opener = t.closest('[data-sg-open]');\n    if (opener) {\n      var dlg = sgDialogFor(opener);\n      if (!dlg) { return; }\n      e.preventDefault();\n      sgBind(dlg);\n      sgOpener = opener;\n      sgPrepare(dlg, opener);\n      if (dlg.open) { return; }\n      if (dlg.showModal) { dlg.showModal(); } else { dlg.setAttribute('open', ''); }\n      return;\n    }\n\n    var unitBtn = t.closest('[data-sg-unit]');\n    if (unitBtn) {\n      var unitDlg = unitBtn.closest('dialog[data-sg]');\n      var unitVal = unitBtn.getAttribute('data-sg-unit');\n      if (unitDlg) { sgUnit(unitDlg, unitVal); }\n      try { window.localStorage.setItem('ark-sg-unit', unitVal); } catch (err) {}\n      return;\n    }\n\n    if (t.closest('[data-sg-close]')) { sgClose(t.closest('dialog')); return; }\n\n    /* \"Ask about sizing\" on the product page: the page's own Ask a question\n       popup, with the sizing question started, in place of a link to another\n       page (client, 2026-09-16: ask must open a popup, never send the shopper\n       away). */\n    var ask = t.closest('[data-sg-ask]');\n    if (ask) {\n      var askDlg = document.getElementById(ask.getAttribute('data-sg-ask'));\n      if (!askDlg || !askDlg.showModal) { return; }\n      e.preventDefault();\n      var back = sgOpener;\n      sgOpener = null;\n      sgClose(ask.closest('dialog'));\n      var box = askDlg.querySelector('textarea');\n      if (box && !box.value.trim()) { box.value = 'Sizing question: I usually wear size '; }\n      if (!askDlg.open) { askDlg.showModal(); }\n      if (box) {\n        box.focus({ preventScroll: true });\n        try { box.setSelectionRange(box.value.length, box.value.length); } catch (err) {}\n      }\n      if (back) {\n        askDlg.addEventListener('close', function () {\n          if (document.contains(back) && back.focus) { back.focus({ preventScroll: true }); }\n        }, { once: true });\n      }\n      return;\n    }\n\n    /* A click on the backdrop lands on the dialog element itself, never on\n       its content. */\n    if (t.matches && t.matches('dialog[data-sg]')) { sgClose(t); }\n  });\n})();\n"],
  "mappings": "CAiBC,UAAY,CACX,aAEA,SAAS,KAAK,KAAM,KAAM,CACxB,GAAI,CAAC,KAAQ,OAAO,KACpB,KAAO,MAAQ,CAAC,EAChB,IAAI,OAAS,KAAK,cAAc,qBAAqB,GAAK,SAAS,cAAc,qBAAqB,EACtG,GAAI,CAAC,OAAU,OAAO,KACtB,IAAI,SACJ,GAAI,CAAE,SAAW,KAAK,MAAM,OAAO,WAAW,CAAG,OAAS,EAAG,CAAE,OAAO,IAAM,CAC5E,GAAI,CAAC,UAAY,CAAC,SAAS,OAAU,OAAO,KAM5C,IAAI,QAAU,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,mBAAmB,CAAC,EAClE,OAAS,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,mBAAmB,CAAC,EACjE,OAAS,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,qBAAqB,CAAC,EACnE,QAAU,KAAK,cAAc,uBAAuB,EAEpD,UAAW,QAAQ,SAAW,IAElC,SAAS,cAAe,CACtB,OAAK,OAAO,OACL,OAAO,IAAI,SAAU,EAAG,CAC7B,IAAI,MAAQ,EAAE,aAAa,gBAAgB,EAC3C,GAAI,QAAU,KAAQ,OAAO,MAC7B,IAAI,EAAI,EAAE,cAAc,eAAe,EACvC,OAAO,EAAI,EAAE,MAAQ,EACvB,CAAC,EAN4B,QAAQ,IAAI,SAAU,IAAK,CAAE,OAAO,IAAI,KAAO,CAAC,CAO/E,CAEA,SAAS,cAAe,CACtB,MAAO,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,UAAU,CAAC,EAAE,IAAI,SAAU,EAAG,CACvE,IAAI,EAAI,EAAE,cAAc,eAAe,EACnC,IAAM,EAAE,cAAc,eAAe,EACzC,OAAO,EAAK,EAAE,aAAa,YAAY,GAAK,EAAE,MAAU,IAAM,IAAI,YAAc,EAClF,CAAC,EAAE,OAAO,OAAO,CACnB,CAIA,SAAS,OAAQ,CAUf,GATA,CAAC,EAAE,MAAM,KAAK,KAAK,iBAAiB,UAAU,CAAC,EAAE,QAAQ,SAAU,EAAG,CACpE,IAAI,EAAI,EAAE,cAAc,eAAe,EACnC,IAAM,EAAE,cAAc,mBAAmB,EACzC,GAAK,MAAO,IAAI,YAAc,EAAE,aAAa,YAAY,GAAK,EAAE,OACpE,CAAC,EAAE,MAAM,KAAK,EAAE,iBAAiB,qBAAqB,CAAC,EAAE,QAAQ,SAAU,IAAK,CAC9E,IAAI,IAAM,IAAI,QAAQ,aAAa,EAC/B,KAAO,IAAI,UAAU,OAAO,YAAa,IAAI,OAAO,CAC1D,CAAC,CACH,CAAC,EACG,EAAC,OAAO,OACZ,KAAI,OAAS,aAAa,EAC1B,OAAO,QAAQ,SAAU,EAAG,GAAI,CAC9B,CAAC,EAAE,MAAM,KAAK,EAAE,iBAAiB,qBAAqB,CAAC,EAAE,QAAQ,SAAU,IAAK,CAC9E,IAAI,IAAM,IAAI,QAAQ,aAAa,EACnC,GAAK,IAEL,SADI,OAAS,GAAO,MAAQ,GACnB,EAAI,EAAG,EAAI,SAAS,QAAU,CAAC,MAAO,IAAK,CAGlD,QAFI,GAAK,SAAS,CAAC,EAAE,QACjB,GAAK,GAAG,EAAE,IAAM,IAAI,MACf,EAAI,EAAG,IAAM,EAAI,OAAO,OAAQ,IAAW,IAAM,IAAM,GAAG,CAAC,IAAM,OAAO,CAAC,IAAK,GAAK,IACxF,KAAM,OAAS,GAAU,SAAS,CAAC,EAAE,YAAa,MAAQ,IAChE,CACA,IAAI,UAAU,OAAO,SAAU,QAAU,CAAC,KAAK,EAC/C,IAAI,UAAU,OAAO,QAAS,CAAC,MAAM,EAErC,IAAI,GAAK,IAAI,cAAc,cAAc,EACrC,KAAM,GAAG,YAAe,OAAkD,MAAuB,GAAf,aAAjD,sCACvC,CAAC,CACH,CAAC,EACH,CAEA,SAAS,OAAQ,CACf,GAAI,OAAO,OAAQ,CAEjB,QADI,OAAS,KACJ,EAAI,EAAG,EAAI,OAAO,OAAQ,IAAO,GAAI,OAAO,CAAC,EAAE,QAAS,CAAE,OAAS,OAAO,CAAC,EAAE,MAAO,KAAO,CACpG,QAAS,EAAI,EAAG,EAAI,SAAS,OAAQ,IAAO,GAAI,OAAO,SAAS,CAAC,EAAE,EAAE,IAAM,OAAO,MAAM,EAAK,OAAO,SAAS,CAAC,EAC9G,OAAO,IACT,CAEA,QADI,OAAS,aAAa,EACjB,EAAI,EAAG,EAAI,SAAS,OAAQ,IAAK,CAExC,QADI,EAAI,SAAS,CAAC,EAAG,GAAK,GACjB,EAAI,EAAG,EAAI,OAAO,OAAQ,IAAO,GAAI,EAAE,QAAQ,CAAC,IAAM,OAAO,CAAC,EAAG,CAAE,GAAK,GAAO,KAAO,CAC/F,GAAI,GAAM,OAAO,CACnB,CACA,OAAO,IACT,CAEA,IAAI,IAAM,CACR,SAAU,SACV,OAAQ,OACR,aAAc,aACd,aAAc,aACd,MAAO,MACP,MAAO,MACP,KAAM,IACR,EAEA,SAAS,MAAO,CACd,MAAM,EACN,IAAI,EAAI,MAAM,EACd,OAAI,GAAK,UAAW,QAAQ,MAAQ,EAAE,IAClC,OAAO,KAAK,UAAa,YAAc,KAAK,SAAS,EAAG,GAAG,EACxD,CACT,CAEA,eAAQ,QAAQ,SAAU,IAAK,CAAE,IAAI,iBAAiB,SAAU,IAAI,CAAG,CAAC,EACxE,OAAO,QAAQ,SAAU,EAAG,CAAE,EAAE,iBAAiB,SAAU,IAAI,CAAG,CAAC,EAMnE,OAAO,QAAQ,SAAU,EAAG,GAAI,CAC9B,EAAE,iBAAiB,SAAU,SAAU,EAAG,CACxC,GAAI,CAAC,MAAM,GAAK,EAAE,QAAU,EAAE,OAAO,QAAU,OAAW,CAExD,QADI,IAAM,EAAE,OAAO,MAAO,KAAO,KACxB,EAAI,EAAG,EAAI,SAAS,QACvB,WAAS,CAAC,EAAE,QAAQ,EAAE,IAAM,OAC5B,CAAC,MAAS,CAAC,KAAK,WAAa,SAAS,CAAC,EAAE,aAAc,KAAO,SAAS,CAAC,GACxE,KAAK,YAH0B,IACnC,CAIE,MACF,OAAO,QAAQ,SAAU,GAAI,GAAI,CAC3B,KAAO,IACX,CAAC,EAAE,MAAM,KAAK,GAAG,iBAAiB,qBAAqB,CAAC,EAAE,QAAQ,SAAU,GAAI,CAC1E,GAAG,QAAU,KAAK,QAAQ,EAAE,IAAK,GAAG,QAAU,GACpD,CAAC,CACH,CAAC,CAEL,CACA,KAAK,CACP,CAAC,CACH,CAAC,EAED,MAAM,EACC,GACT,CAiBA,SAAS,SAAS,IAAK,KAAM,CAC3B,IAAI,OAAS,KAAO,IAAI,WACpB,MAAQ,CAAC,OAAO,YAAc,OAAO,WAAW,kCAAkC,EAAE,QAExF,GADA,CAAC,EAAE,MAAM,KAAK,OAAS,OAAO,iBAAiB,kBAAkB,EAAI,CAAC,CAAC,EAAE,QAAQ,SAAUA,GAAG,CAAEA,GAAE,OAAO,CAAG,CAAC,EACzG,OAAS,CAAC,QAAU,CAAC,IAAI,SAAW,CAAC,IAAI,aAAe,CAAC,IAAI,UAAY,CAAC,IAAI,aAAc,CAAE,KAAK,EAAG,MAAQ,CAClH,IAAI,GAAK,OAAO,iBAAiB,GAAG,EAChC,EAAI,IAAI,UAAU,EAAK,EAC3B,CAAC,KAAM,eAAgB,SAAU,QAAS,gBAAiB,UAAW,OAAO,EAAE,QAAQ,SAAUC,GAAG,CAAE,EAAE,gBAAgBA,EAAC,CAAG,CAAC,EAC7H,EAAE,IAAM,IAAI,YAAc,IAAI,IAC9B,EAAE,IAAM,GACR,EAAE,aAAa,cAAe,MAAM,EACpC,EAAE,aAAa,iBAAkB,EAAE,EACnC,EAAE,MAAM,QAAU,CAChB,oBAAqB,WAAY,sBAAuB,iBAAkB,kBAC1E,QAAU,IAAI,WAAa,KAAM,OAAS,IAAI,UAAY,KAC1D,SAAW,IAAI,YAAc,KAAM,UAAY,IAAI,aAAe,KAClE,cAAgB,GAAG,UAAW,WAAa,GAAG,QAAS,iBAAmB,GAAG,aAC7E,cAAgB,GAAG,UAAW,mBAAqB,GAAG,eACtD,aAAe,GAAG,UAAW,oBAAsB,GAAG,gBACtD,cAAgB,GAAG,eACrB,EAAE,KAAK,GAAG,EACV,IAAI,sBAAsB,WAAY,CAAC,EACvC,KAAK,EACL,IAAI,EAAI,EAAE,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAAE,SAAW,OAAO,UAAY,OAAO,UAAU,GAAG,UAAW,GAAG,EAAI,IAAM,OAAS,OAAO,UAAY,OAAO,UAAU,OAAO,EAAI,8BAAgC,CAAC,EACzN,EAAE,SAAW,EAAE,SAAW,UAAY,CAAE,EAAE,OAAO,CAAG,CACtD,CAEA,OAAO,YAAc,CAAE,KAAM,KAAM,SAAU,QAAS,EAetD,IAAI,SAAW,KAEf,SAAS,YAAY,IAAK,CACxB,IAAI,GAAK,IAAI,aAAa,eAAe,EACrC,IAAM,GAAK,SAAS,eAAe,EAAE,EAAI,KAC7C,GAAI,IAAO,OAAO,IAClB,IAAI,MAAQ,IAAI,QAAQ,eAAe,GAAK,SAC5C,OAAO,MAAM,cAAc,iBAAiB,CAC9C,CAEA,SAAS,OAAO,IAAK,CACf,IAAI,aAAa,eAAe,IACpC,IAAI,aAAa,gBAAiB,EAAE,EAEpC,IAAI,iBAAiB,QAAS,UAAY,CACxC,IAAI,KAAO,SACX,SAAW,KACP,MAAQ,KAAK,OAAS,SAAS,SAAS,IAAI,GAAK,KAAK,MAAM,CAAE,cAAe,EAAK,CAAC,CACzF,CAAC,EACH,CAIA,SAAS,OAAO,IAAK,KAAM,CACrB,OAAS,OAAQ,KAAO,MAC5B,IAAI,aAAa,YAAa,IAAI,EAElC,QADI,GAAK,IAAI,iBAAiB,gBAAgB,EACrC,EAAI,EAAG,EAAI,GAAG,OAAQ,IAC7B,GAAG,CAAC,EAAE,aAAa,eAAgB,GAAG,CAAC,EAAE,aAAa,cAAc,IAAM,KAAO,OAAS,OAAO,CAErG,CAEA,SAAS,UAAU,IAAK,OAAQ,CAC9B,GAAI,IAAI,cAAc,gBAAgB,EAAG,CACvC,IAAI,KAAO,KACX,GAAI,CAAE,KAAO,OAAO,aAAa,QAAQ,aAAa,GAAK,IAAM,OAAS,IAAK,CAAC,CAChF,OAAO,IAAK,IAAI,CAClB,CAKA,QAJI,MAAQ,OAAO,QAAQ,UAAU,EACjC,IAAM,MAAQ,MAAM,cAAc,mBAAmB,EAAI,KACzD,KAAO,IAAM,IAAI,YAAY,QAAQ,OAAQ,GAAG,EAAE,KAAK,EAAI,GAC3D,KAAO,IAAI,iBAAiB,kBAAkB,EACzC,EAAI,EAAG,EAAI,KAAK,OAAQ,IAC/B,KAAK,CAAC,EAAE,UAAU,OAAO,aAAc,OAAS,IAAM,KAAK,CAAC,EAAE,aAAa,cAAc,IAAM,IAAI,CAEvG,CAEA,SAAS,QAAQ,IAAK,CACf,MACD,IAAI,MAAS,IAAI,MAAM,EAAY,IAAI,gBAAgB,MAAM,EACnE,CAEA,SAAS,iBAAiB,QAAS,SAAU,EAAG,CAC9C,IAAI,EAAI,EAAE,OACV,GAAI,GAAC,GAAK,CAAC,EAAE,SAEb,KAAI,OAAS,EAAE,QAAQ,gBAAgB,EACvC,GAAI,OAAQ,CACV,IAAI,IAAM,YAAY,MAAM,EAM5B,GALI,CAAC,MACL,EAAE,eAAe,EACjB,OAAO,GAAG,EACV,SAAW,OACX,UAAU,IAAK,MAAM,EACjB,IAAI,MAAQ,OACZ,IAAI,UAAa,IAAI,UAAU,EAAY,IAAI,aAAa,OAAQ,EAAE,EAC1E,MACF,CAEA,IAAI,QAAU,EAAE,QAAQ,gBAAgB,EACxC,GAAI,QAAS,CACX,IAAI,QAAU,QAAQ,QAAQ,iBAAiB,EAC3C,QAAU,QAAQ,aAAa,cAAc,EAC7C,SAAW,OAAO,QAAS,OAAO,EACtC,GAAI,CAAE,OAAO,aAAa,QAAQ,cAAe,OAAO,CAAG,OAAS,IAAK,CAAC,CAC1E,MACF,CAEA,GAAI,EAAE,QAAQ,iBAAiB,EAAG,CAAE,QAAQ,EAAE,QAAQ,QAAQ,CAAC,EAAG,MAAQ,CAM1E,IAAI,IAAM,EAAE,QAAQ,eAAe,EACnC,GAAI,IAAK,CACP,IAAI,OAAS,SAAS,eAAe,IAAI,aAAa,aAAa,CAAC,EACpE,GAAI,CAAC,QAAU,CAAC,OAAO,UAAa,OACpC,EAAE,eAAe,EACjB,IAAI,KAAO,SACX,SAAW,KACX,QAAQ,IAAI,QAAQ,QAAQ,CAAC,EAC7B,IAAI,IAAM,OAAO,cAAc,UAAU,EAGzC,GAFI,KAAO,CAAC,IAAI,MAAM,KAAK,IAAK,IAAI,MAAQ,yCACvC,OAAO,MAAQ,OAAO,UAAU,EACjC,IAAK,CACP,IAAI,MAAM,CAAE,cAAe,EAAK,CAAC,EACjC,GAAI,CAAE,IAAI,kBAAkB,IAAI,MAAM,OAAQ,IAAI,MAAM,MAAM,CAAG,OAAS,IAAK,CAAC,CAClF,CACI,MACF,OAAO,iBAAiB,QAAS,UAAY,CACvC,SAAS,SAAS,IAAI,GAAK,KAAK,OAAS,KAAK,MAAM,CAAE,cAAe,EAAK,CAAC,CACjF,EAAG,CAAE,KAAM,EAAK,CAAC,EAEnB,MACF,CAII,EAAE,SAAW,EAAE,QAAQ,iBAAiB,GAAK,QAAQ,CAAC,EAC5D,CAAC,CACH,GAAG",
  "names": ["g", "a"]
}
