{"version":3,"file":"notify.js","sources":["../node_modules/rollup-plugin-node-builtins/src/es6/empty.js","../node_modules/pug-runtime/index.js","../src/pug/message-container.pug","../src/utilities/timer.js","../node_modules/style-inject/dist/style-inject.es.js","../src/utilities/get-element-from-html.js","../src/index.js","../src/pug/tray.pug"],"sourcesContent":["export default {};\n","'use strict';\n\nvar pug_has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\nexports.merge = pug_merge;\nfunction pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n};\n\n/**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.|Object.|string)} val\n * @param {?Array.} escaping\n * @return {String}\n */\nexports.classes = pug_classes;\nfunction pug_classes_array(val, escaping) {\n var classString = '', className, padding = '', escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n}\nfunction pug_classes_object(val) {\n var classString = '', padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n}\nfunction pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n}\n\n/**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.|string)} val\n * @return {String}\n */\n\nexports.style = pug_style;\nfunction pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n};\n\n/**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\nexports.attr = pug_attr;\nfunction pug_attr(key, val, escaped, terse) {\n if (val === false || val == null || !val && (key === 'class' || key === 'style')) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n var type = typeof val;\n if ((type === 'object' || type === 'function') && typeof val.toJSON === 'function') {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + '=\\'' + val.replace(/'/g, ''') + '\\'';\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n};\n\n/**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\nexports.attrs = pug_attrs;\nfunction pug_attrs(obj, terse){\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n};\n\n/**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\nvar pug_match_html = /[\"&<>]/;\nexports.escape = pug_escape;\nfunction pug_escape(_html){\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34: escape = '"'; break;\n case 38: escape = '&'; break;\n case 60: escape = '<'; break;\n case 62: escape = '>'; break;\n default: continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n};\n\n/**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\nexports.rethrow = pug_rethrow;\nfunction pug_rethrow(err, filename, lineno, str){\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n try {\n str = str || require('fs').readFileSync(filename, 'utf8')\n } catch (ex) {\n pug_rethrow(err, null, lineno)\n }\n var context = 3\n , lines = str.split('\\n')\n , start = Math.max(lineno - context, 0)\n , end = Math.min(lines.length, lineno + context);\n\n // Error context\n var context = lines.slice(start, end).map(function(line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'Pug') + ':' + lineno\n + '\\n' + context + '\\n\\n' + err.message;\n throw err;\n};\n","div(\n\tclass='message-container ' + message.classes\n\tstyle='background-color: ' + colors.background + '; color: ' + colors.foreground + ';'\n)\n\tdiv.text-container\n\t\tif message.heading\n\t\t\tspan.header #{message.heading}\n\t\tdiv.message !{message.text}\n\tbutton.handle(type='button')\n\t\tsvg(\n\t\t\talt='Close'\n\t\t\twidth=svgSize\n\t\t\theight=svgSize\n\t\t)\n\t\t\tline(\n\t\t\t\tx1=0\n\t\t\t\tx2=svgSize\n\t\t\t\ty1=0\n\t\t\t\ty2=svgSize\n\t\t\t)\n\t\t\tline(\n\t\t\t\tx1=0\n\t\t\t\tx2=svgSize\n\t\t\t\ty1=svgSize\n\t\t\t\ty2=0\n\t\t\t)\n","function Timer (callback, delay) {\n\tvar timerId = delay;\n\tvar start = delay;\n\tvar remaining = delay;\n\n\tthis.pause = () => {\n\t\twindow.clearTimeout(timerId);\n\t\tremaining -= new Date() - start;\n\t};\n\n\tthis.resume = () => {\n\t\tstart = new Date();\n\t\twindow.clearTimeout(timerId);\n\t\ttimerId = window.setTimeout(callback, remaining);\n\t};\n\n\tthis.resume();\n};\n\nexport default Timer;\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const getElementFromHTML = html => {\n\tconst div = document.createElement('div');\n\tdiv.innerHTML = html;\n\treturn div.firstChild;\n};\n","import defaultOptions from '~/default-options';\n// import getAccessibleFgColor from '~/utilities/get-accessible-fg-color';\nimport messageContainer from '~/pug/message-container';\nimport Timer from '~/utilities/timer';\nimport tray from '~/pug/tray';\nimport '~/style/index.styl';\nimport { getElementFromHTML } from '~/utilities/get-element-from-html';\n\nlet options = defaultOptions;\n\nconst fgPostFix = 'Bg';\n\nconst animationTime = 400;\nconst timeout = 5000;\n\nconst configure = newOptions => {\n\tnewOptions.colors = Object.assign(options.colors, newOptions.colors);\n\t// for (let key in options.colors) options.colors[`${key}${fgPostFix}`] = getAccessibleFgColor(options.colors[key]);\n\tfor (let key in options.colors) options.colors[`${key}${fgPostFix}`] = '#000';\n\tnewOptions.headings = Object.assign(options.headings, newOptions.headings);\n\toptions = Object.assign(options, newOptions);\n};\n\nconst shouldAutoHide = status => options.autoHide[status] === true;\n\nconst createNotificationTray = () => document.querySelector('body').appendChild(getElementFromHTML(tray()));\n\nconst constructMessageContainer = (status, message, messageHeading) => {\n\t// Create a message container div\n\tconst container = getElementFromHTML(messageContainer({\n\t\tcolors: {\n\t\t\tbackground: options.colors[status],\n\t\t\tforeground: options.colors[`${status}${fgPostFix}`]\n\t\t},\n\t\tmessage: {\n\t\t\tclasses: options.squareCorners === true ? `${status} square-corners` : status,\n\t\t\theading: messageHeading || options.headings[status],\n\t\t\ttext: message\n\t\t},\n\t\tsvgSize: 10\n\t}));\n\n\t// Attach close function to the container's handle\n\tconst handle = container.querySelector('button.handle');\n\thandle.addEventListener('click', () => {\n\t\tcontainer.classList.add('hide');\n\t\tcontainer.style.transform = `translateY(-${container.offsetHeight}px)`;\n\t\tsetTimeout(() => {\n\t\t\tif (container.parentNode) container.parentNode.removeChild(container);\n\t\t}, animationTime);\n\t});\n\n\t// Finally, attach the fade in function to the element\n\tcontainer.fadeIn = () => {\n\t\tconst tray = document.querySelector('div.notify-tray');\n\t\ttray.insertBefore(container, tray.children[0]);\n\t\tcontainer.classList.remove('hide');\n\t};\n\n\treturn container;\n};\n\nconst attachFadeOut = el => {\n\tconst timer = new Timer(() => {\n\t\tel.classList.add('hide');\n\t\tel.style.transform = `translateY(-${el.offsetHeight}px)`;\n\t\tsetTimeout(() => {\n\t\t\tif (el.parentNode) el.parentNode.removeChild(el);\n\t\t}, animationTime);\n\t}, timeout);\n\n\tel.addEventListener('mouseover', () => {\n\t\ttimer.pause();\n\t});\n\tel.addEventListener('mouseleave', () => {\n\t\ttimer.resume();\n\t});\n};\n\nconst sendNotification = (status, message, heading) => {\n\tif (!document.querySelector('div.notify-tray')) createNotificationTray();\n\tconst messageContainer = constructMessageContainer(status, message, heading);\n\tmessageContainer.fadeIn();\n\tif (shouldAutoHide(status)) attachFadeOut(messageContainer);\n\n\treturn messageContainer;\n};\n\nconst error = (message, heading = false) => sendNotification('error', message);\nconst log = (message, heading = false) => sendNotification('log', message);\nconst warn = (message, heading = false) => sendNotification('warn', message);\nconst clear = () => {\n\tif (!document.querySelector('div.notify-tray')) createNotificationTray();\n\tconst messageContainers = document.querySelectorAll('div.message-container');\n\t// fuck IE\n\tArray.from(messageContainers).forEach(el => {\n\t\tel.parentNode.removeChild(el);\n\t});\n};\n\nexport default {\n\tclear,\n\tconfigure,\n\terror,\n\tlog,\n\twarn\n};\n","div.notify-tray\n"],"names":["pug_has_own_property","Object","prototype","hasOwnProperty","pug_classes","val","escaping","Array","isArray","className","classString","padding","escapeEnabled","i","length","pug_escape","pug_classes_array","_typeof","key","call","pug_classes_object","pug_style","out","style","pug_attr","escaped","terse","type","toJSON","JSON","stringify","indexOf","replace","pug_match_html","_html","html","regexResult","exec","lastIndex","escape","result","index","charCodeAt","substring","pug_merge","a","b","arguments","attrs","valA","concat","valB","obj","pug_rethrow","err","filename","lineno","str","Error","window","message","require$$0","readFileSync","ex","context","lines","split","start","Math","max","end","min","slice","map","line","curr","join","path","pug_html","Timer","callback","delay","timerId","remaining","pause","clearTimeout","Date","resume","setTimeout","css","ref","insertAt","document","head","getElementsByTagName","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","getElementFromHTML","div","innerHTML","options","defaultOptions","createNotificationTray","querySelector","tray","constructMessageContainer","status","messageHeading","container","messageContainer","colors","background","foreground","classes","squareCorners","heading","headings","text","svgSize","addEventListener","classList","add","transform","offsetHeight","parentNode","removeChild","fadeIn","children","remove","sendNotification","el","timer","autoHide","shouldAutoHide","clear","messageContainers","querySelectorAll","from","forEach","configure","newOptions","assign","error","log","warn"],"mappings":"4jBAAe,GCEXA,EAAuBC,OAAOC,UAAUC,eAiF5C,SAASC,EAAYC,EAAKC,UACpBC,MAAMC,QAAQH,GAtBpB,SAA2BA,EAAKC,WACRG,EAAlBC,EAAc,GAAeC,EAAU,GAAIC,EAAgBL,MAAMC,QAAQF,GACpEO,EAAI,EAAGA,EAAIR,EAAIS,OAAQD,KAC9BJ,EAAYL,EAAYC,EAAIQ,OAE5BD,GAAiBN,EAASO,KAAOJ,EAAYM,EAAWN,IACxDC,EAAcA,EAAcC,EAAUF,EACtCE,EAAU,YAELD,EAcEM,CAAkBX,EAAKC,GACrBD,GAAsB,WAAfY,EAAOZ,GAb3B,SAA4BA,OACtBK,EAAc,GAAIC,EAAU,OAC3B,IAAIO,KAAOb,EACVa,GAAOb,EAAIa,IAAQlB,EAAqBmB,KAAKd,EAAKa,KACpDR,EAAcA,EAAcC,EAAUO,EACtCP,EAAU,YAGPD,EAMEU,CAAmBf,GAEnBA,GAAO,GAYlB,SAASgB,EAAUhB,OACZA,EAAK,MAAO,MACE,WAAfY,EAAOZ,GAAkB,KACvBiB,EAAM,OACL,IAAIC,KAASlB,EAEZL,EAAqBmB,KAAKd,EAAKkB,KACjCD,EAAMA,EAAMC,EAAQ,IAAMlB,EAAIkB,GAAS,YAGpCD,SAEAjB,EAAM,GAcjB,SAASmB,EAASN,EAAKb,EAAKoB,EAASC,OACvB,IAARrB,GAAwB,MAAPA,IAAgBA,IAAgB,UAARa,GAA2B,UAARA,SACvD,OAEG,IAARb,QACK,KAAOqB,EAAQR,EAAMA,EAAM,KAAOA,EAAM,SAE7CS,IAActB,SACJ,WAATsB,GAA8B,aAATA,GAA8C,mBAAftB,EAAIuB,SAC3DvB,EAAMA,EAAIuB,UAEO,iBAARvB,IACTA,EAAMwB,KAAKC,UAAUzB,GAChBoB,IAAiC,IAAtBpB,EAAI0B,QAAQ,OAI1BN,IAASpB,EAAMU,EAAWV,IACvB,IAAMa,EAAM,KAAOb,EAAM,KAJrB,IAAMa,EAAM,KAAQb,EAAI2B,QAAQ,KAAM,SAAW,IA6C9D,IAAIC,EAAiB,SAErB,SAASlB,EAAWmB,OACdC,EAAO,GAAKD,EACZE,EAAcH,EAAeI,KAAKF,OACjCC,EAAa,OAAOF,MAGrBrB,EAAGyB,EAAWC,EADdC,EAAS,OAER3B,EAAIuB,EAAYK,MAAOH,EAAY,EAAGzB,EAAIsB,EAAKrB,OAAQD,IAAK,QACvDsB,EAAKO,WAAW7B,SACjB,GAAI0B,EAAS,oBACb,GAAIA,EAAS,mBACb,GAAIA,EAAS,kBACb,GAAIA,EAAS,8BAGhBD,IAAczB,IAAG2B,GAAUL,EAAKQ,UAAUL,EAAWzB,IACzDyB,EAAYzB,EAAI,EAChB2B,GAAUD,SAERD,IAAczB,EAAU2B,EAASL,EAAKQ,UAAUL,EAAWzB,GACnD2B,eA/Ld,SAASI,EAAUC,EAAGC,MACK,IAArBC,UAAUjC,OAAc,SACtBkC,EAAQH,EAAE,GACLhC,EAAI,EAAGA,EAAIgC,EAAE/B,OAAQD,IAC5BmC,EAAQJ,EAAUI,EAAOH,EAAEhC,WAEtBmC,MAGJ,IAAI9B,KAAO4B,KACF,UAAR5B,EAAiB,KACf+B,EAAOJ,EAAE3B,IAAQ,GACrB2B,EAAE3B,IAAQX,MAAMC,QAAQyC,GAAQA,EAAO,CAACA,IAAOC,OAAOJ,EAAE5B,IAAQ,SAC3D,GAAY,UAARA,EAAiB,CAE1B+B,GADIA,EAAO5B,EAAUwB,EAAE3B,MACkB,MAA1B+B,EAAKA,EAAKnC,OAAS,GAAamC,EAAO,IAAMA,MACxDE,EAAO9B,EAAUyB,EAAE5B,IACvBiC,EAAOA,GAAkC,MAA1BA,EAAKA,EAAKrC,OAAS,GAAaqC,EAAO,IAAMA,EAC5DN,EAAE3B,GAAO+B,EAAOE,OAEhBN,EAAE3B,GAAO4B,EAAE5B,UAIR2B,WAoBSzC,QAuCFiB,OA0BDG,QA8Bf,SAAmB4B,EAAK1B,OAClBsB,EAAQ,OAEP,IAAI9B,KAAOkC,KACVpD,EAAqBmB,KAAKiC,EAAKlC,GAAM,KACnCb,EAAM+C,EAAIlC,MAEV,UAAYA,EAAK,CACnBb,EAAMD,EAAYC,GAClB2C,EAAQxB,EAASN,EAAKb,GAAK,EAAOqB,GAASsB,WAGzC,UAAY9B,IACdb,EAAMgB,EAAUhB,IAElB2C,GAASxB,EAASN,EAAKb,GAAK,EAAOqB,UAIhCsB,UAYQjC,UAoCjB,SAASsC,EAAYC,EAAKC,EAAUC,EAAQC,QACpCH,aAAeI,OAAQ,MAAMJ,OACb,oBAAVK,QAA0BJ,GAAcE,SAClDH,EAAIM,SAAW,YAAcJ,EACvBF,MAGNG,EAAMA,GAAOI,EAAcC,aAAaP,EAAU,QAClD,MAAOQ,GACPV,EAAYC,EAAK,KAAME,OAErBQ,EAAU,EACVC,EAAQR,EAAIS,MAAM,MAClBC,EAAQC,KAAKC,IAAIb,EAASQ,EAAS,GACnCM,EAAMF,KAAKG,IAAIN,EAAMnD,OAAQ0C,EAASQ,GAGtCA,EAAUC,EAAMO,MAAML,EAAOG,GAAKG,KAAI,SAASC,EAAM7D,OACnD8D,EAAO9D,EAAIsD,EAAQ,SACfQ,GAAQnB,EAAS,OAAS,QAC9BmB,EACA,KACAD,KACHE,KAAK,YAGRtB,EAAIuB,KAAOtB,EACXD,EAAIM,SAAWL,GAAY,OAAS,IAAMC,EACtC,KAAOQ,EAAU,OAASV,EAAIM,QAC5BN,mEC5PRwB,sLAIAA,iDAEAA,6EACAA,mEAaAA,GANAA,GALAA,GADAA,6iBCRA,SAASC,EAAOC,EAAUC,OACrBC,EAAUD,EACVd,EAAQc,EACRE,EAAYF,OAEXG,MAAQ,WACZzB,OAAO0B,aAAaH,GACpBC,GAAa,IAAIG,KAASnB,QAGtBoB,OAAS,WACbpB,EAAQ,IAAImB,KACZ3B,OAAO0B,aAAaH,GACpBA,EAAUvB,OAAO6B,WAAWR,EAAUG,SAGlCI,UChBN,SAAqBE,EAAKC,QACX,IAARA,IAAiBA,EAAM,QACxBC,EAAWD,EAAIC,YAEdF,GAA2B,oBAAbG,cAEfC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DvE,EAAQqE,SAASG,cAAc,SACnCxE,EAAMI,KAAO,WAEI,QAAbgE,GACEE,EAAKG,WACPH,EAAKI,aAAa1E,EAAOsE,EAAKG,YAKhCH,EAAKK,YAAY3E,GAGfA,EAAM4E,WACR5E,EAAM4E,WAAWC,QAAUX,EAE3BlE,EAAM2E,YAAYN,SAASS,eAAeZ,08HCvBvC,IAAMa,EAAqB,SAAAnE,OAC3BoE,EAAMX,SAASG,cAAc,cACnCQ,EAAIC,UAAYrE,EACToE,EAAIP,YCKRS,EAAUC,EAiBRC,EAAyB,kBAAMf,SAASgB,cAAc,QAAQV,YAAYI,oCCzBhFxB,4FDyBmG+B,MAE7FC,EAA4B,SAACC,EAAQnD,EAASoD,OAE7CC,EAAYX,EAAmBY,EAAiB,CACrDC,OAAQ,CACPC,WAAYX,EAAQU,OAAOJ,GAC3BM,WAAYZ,EAAQU,iBAAUJ,UAtBf,QAwBhBnD,QAAS,CACR0D,SAAmC,IAA1Bb,EAAQc,wBAA4BR,qBAA0BA,EACvES,QAASR,GAAkBP,EAAQgB,SAASV,GAC5CW,KAAM9D,GAEP+D,QAAS,aAIKV,EAAUL,cAAc,iBAChCgB,iBAAiB,SAAS,WAChCX,EAAUY,UAAUC,IAAI,QACxBb,EAAU1F,MAAMwG,gCAA2Bd,EAAUe,oBACrDxC,YAAW,WACNyB,EAAUgB,YAAYhB,EAAUgB,WAAWC,YAAYjB,KApCxC,QAyCrBA,EAAUkB,OAAS,eACZtB,EAAOjB,SAASgB,cAAc,mBACpCC,EAAKZ,aAAagB,EAAWJ,EAAKuB,SAAS,IAC3CnB,EAAUY,UAAUQ,OAAO,SAGrBpB,GAoBFqB,EAAmB,SAACvB,EAAQnD,EAAS4D,GACrC5B,SAASgB,cAAc,oBAAoBD,QAlB3B4B,EACfC,EAkBAtB,EAAmBJ,EAA0BC,EAAQnD,EAAS4D,UACpEN,EAAiBiB,SA3DK,SAAApB,UAAuC,IAA7BN,EAAQgC,SAAS1B,GA4D7C2B,CAAe3B,KArBEwB,EAqBqBrB,EApBpCsB,EAAQ,IAAIzD,GAAM,WACvBwD,EAAGV,UAAUC,IAAI,QACjBS,EAAGhH,MAAMwG,gCAA2BQ,EAAGP,oBACvCxC,YAAW,WACN+C,EAAGN,YAAYM,EAAGN,WAAWC,YAAYK,KAvD1B,OACN,KA0DfA,EAAGX,iBAAiB,aAAa,WAChCY,EAAMpD,WAEPmD,EAAGX,iBAAiB,cAAc,WACjCY,EAAMjD,aAUA2B,SAeO,CACdyB,MAVa,WACR/C,SAASgB,cAAc,oBAAoBD,QAC1CiC,EAAoBhD,SAASiD,iBAAiB,yBAEpDtI,MAAMuI,KAAKF,GAAmBG,SAAQ,SAAAR,GACrCA,EAAGN,WAAWC,YAAYK,OAM3BS,UAvFiB,SAAAC,OAGZ,IAAI/H,KAFT+H,EAAW9B,OAASlH,OAAOiJ,OAAOzC,EAAQU,OAAQ8B,EAAW9B,QAE7CV,EAAQU,OAAQV,EAAQU,iBAAUjG,UARjC,OAQsD,OACvE+H,EAAWxB,SAAWxH,OAAOiJ,OAAOzC,EAAQgB,SAAUwB,EAAWxB,UACjEhB,EAAUxG,OAAOiJ,OAAOzC,EAASwC,IAmFjCE,MAfa,SAACvF,UAA6B0E,EAAiB,QAAS1E,IAgBrEwF,IAfW,SAACxF,UAA6B0E,EAAiB,MAAO1E,IAgBjEyF,KAfY,SAACzF,UAA6B0E,EAAiB,OAAQ1E"}